Плюсы и минусы вычислений с плавающей точкой?

Про байтики и логику ЭБУ
locon
Posts: 17
Joined: Fri Jan 31, 2014 6:43 am

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by locon »

Maxi wrote: А почему они должны быть связаны именно так как ты себе представил связь?
С твоих слов - "Транслятор такой эффективности этого куска дать не может даже сейчас - не говоря уж про середину 90х."
не сокращает это ничего. Все равно на уровне offline должен быть определен владелец и тип. Это сокращает глюки и ошибки.
Это лучше авторам документа рассказать ... А владелец и тип сообщения определены и так, - "... так как фактический контекст процесса известен." ... так что мимо.
SSC - не разделяемый ресурс! Им почти всегда монопольно владеет задача его обслуживания. И висит там кот наплакал чего - eeprom тупо кешируется на чтение сразу. А любая запись кешируется обычным стеком на уровне уже задачи. Еще я один раз встречал разделение на уровне ЗАДАЧ. когда задачи блокируют друг друга - но никак не сам ресурс. Потому что это просто глупо. Причем такое возможно только для неотвественных кусков (тот же SSC - в общем случае если его вообще отрезать и все его задачи убить - ничего страшного не произойдет)... То что ты там мог видеть какое то другое разделенное - это полная изоляция отдельных несвязанных кусков кода.

SSC - разделяемый ресурс! А о блокировке именно ресурса не может идти и речь - это крах системы. Реализовано разделение доступа к рессурсу - если ресурс занят, задача не получит его в использование и завершится. Если отрезать SSC, например, в вазовском m7 ничего страшного не произойдет, тупо двигатель остановится, так как банально не будет управление ХХ.
ерунда кооперативный планировщик работает от системного таймера и никакого отношения к динамическому таймеру он не имеет - у него жесткое заданное offline поведение.
действительно, кооперативный планировщик работает по системному таймеру (как и все в системе), я это и не оспариваю, но запуск кооперативного планировщика осуществляется с помощью службы динамического таймера. Читай внимательно.
Это где такое?
Где - что? Я полагаю структура shedulelist'а тебе известна, если конечно планировщик ты разобрал. header (последнии четыре слова в shedulelist) не опишешь? А теперь сравни хедеры для всех таймслотов.
c каких пор там контролируется пользовательский стек и время выполнения задач?! и главное ЗАЧЕМ?
ты вообще не путаешь с отладкой сейчас?

Ничего я не путаю ...

mainTask (normal mode) -
... start count executing time for task
... check stack filling (пользовательский/системный, через раз)
... ETS monitoring concept, что то связанное с контролем правильности реакции системы
... DFPM
... ETS monitoring concept, URROM
... ETS monitoring concept, что то связанное с контролем правильности реакции системы
... ETS monitoring concept, контроль времени выполнения всех задач в системе
... добавление mainTask в список готовых к выполнению задач (по сути loop mainTask)
... taskResume (предача управления планировщику)

mainTask (nachl mode) -
... check stack filling (пользовательский/системный, через раз)
... ETS monitoring concept, URROM
... HLS
... DMDMIL
... DFPM
... DMIL
... ATM
... BBKHZ
... добавление mainTask в список готовых к выполнению задач (по сути loop mainTask)
... taskResume (предача управления планировщику)

Внимательное прочтение выложенного мной документа (претит читать перевод - есть оригинал) снимет вопрос ЗАЧЕМ, чуть более чем полностью. :)

Это только контроль времени выполнения описанный как задачи, есть еще контроль на уровне ртос - некоторые задачи (назовешь?) в конце выполнения устанавливают таймера - если не успеют установить к следующиму циклу - безаппеляционный srst ... едакий wachdog на уровне ртос ...
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Maxi »

locon wrote:
Maxi wrote: А почему они должны быть связаны именно так как ты себе представил связь?
С твоих слов - "Транслятор такой эффективности этого куска дать не может даже сейчас - не говоря уж про середину 90х."
Так это в документах разработчиков.
SSC - не разделяемый ресурс! Им почти всегда монопольно владеет задача его обслуживания. И висит там кот наплакал чего - eeprom тупо кешируется на чтение сразу. А любая запись кешируется обычным стеком на уровне уже задачи. Еще я один раз встречал разделение на уровне ЗАДАЧ. когда задачи блокируют друг друга - но никак не сам ресурс. Потому что это просто глупо. Причем такое возможно только для неотвественных кусков (тот же SSC - в общем случае если его вообще отрезать и все его задачи убить - ничего страшного не произойдет)... То что ты там мог видеть какое то другое разделенное - это полная изоляция отдельных несвязанных кусков кода.

SSC - разделяемый ресурс! А о блокировке именно ресурса не может идти и речь - это крах системы. Реализовано разделение доступа к рессурсу - если ресурс занят, задача не получит его в использование и завершится. Если отрезать SSC, например, в вазовском m7 ничего страшного не произойдет, тупо двигатель остановится, так как банально не будет управление ХХ.
Ты только так и не понял - а причем здесь собственно операционка?
Специально посмотрел как реализовано разделение SSC - оно идет тупо через состояние, причем для каждого устройства тупо свой драйвер и взаимоблокировка задач обмена опять же через состояния. И где там семафоры? Это все без ОС происходит и повышения приоритета нет нигде.
ерунда кооперативный планировщик работает от системного таймера и никакого отношения к динамическому таймеру он не имеет - у него жесткое заданное offline поведение.
действительно, кооперативный планировщик работает по системному таймеру (как и все в системе), я это и не оспариваю, но запуск кооперативного планировщика осуществляется с помощью службы динамического таймера. Читай внимательно.
Вообще то он всегда запущен. Что конкретно у тебя за прошивка?
Это где такое?
Где - что? Я полагаю структура shedulelist'а тебе известна, если конечно планировщик ты разобрал. header (последнии четыре слова в shedulelist) не опишешь? А теперь сравни хедеры для всех таймслотов.
нет структуру я не смотрел.
Ничего я не путаю ...
Путаешь контроля стека нет вообще. Контроль задач есть - но это хвосты от отладки (они не используются).
locon
Posts: 17
Joined: Fri Jan 31, 2014 6:43 am

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by locon »

Maxi wrote:Так это в документах разработчиков.
Действительно, в докуменах разработчиков есть упоминание о том, что набор базовых функций, в целях переносимости, полностью реализован на мета-языке, а ядро ос, в целях повышения производительности, полностью реализовано на целевом ассемблере.
Это все без ОС происходит и повышения приоритета нет нигде.
Значит SSC все-таки разделяемый ресурс. Взаимоблокировки задач там нет и быть не может, это не допустимо по условиям проектирования системы (внимательно читаем документы). А нечего так, что функции запроса и освобождения ресурса - функции ОС? И твоя переменная состояния тупо контролируется не только задачами, но и ОС. Изучаем внимательно "стек протокола максимально приоретета" и видим, что приоритет некоторой задачи при доступе к общему рессурсу повышен еще на стадии статического анализа - "ERCOS поддерживает данный протокол, с помощью off-line инструментов, которые отвечают за статический анализ максимальных приоритетов для каждого ресурса." Так что - запрос, флаг, обслуживание, освобождение, сброс флага ... классический семафор. Как ты знаешь модуль ALLS разбит на задачи в разные timeRaster, так вот ALLS запрашивает доступ к ресурсу из 1mS tR, хотя период запроса 5mS - почему бы тогда не поместить задачу в 5mS tR и снизить нагрузку на систему?
Что конкретно у тебя за прошивка?
Это не имеет значения - реализация одинакова всюду.
Путаешь контроля стека нет вообще. Контроль задач есть - но это хвосты от отладки (они не используются).
Ничего я не путаю ... Притом это именно контроль заполнения стека (а не переполнения стека) - на выходе коэффициент = заполненная часть/к общему стеку. Коэффициент заполнения пользовательского стека учавствует как аргумент в одной из задач ETS monitoring concept, связанной с контролем правильности "хода приложения".
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Maxi »

locon wrote:
Это все без ОС происходит и повышения приоритета нет нигде.
Значит SSC все-таки разделяемый ресурс. Взаимоблокировки задач там нет и быть не может, это не допустимо по условиям проектирования системы (внимательно читаем документы). А нечего так, что функции запроса и освобождения ресурса - функции ОС?
еще раз - OS вообще ничего не знает про SSC! - это все уровень пользовательских приложений. отсюда - OS НИКАК не контролирует SSC - это опять же пользовательские приложения. А приоритет их повышен не на стадии offline анализа - а на стадии когда его разработчики РУЧКАМИ прописали высоким! опять же ISRы сами по себе имеют приоритет выше шедуллера. да SSC в принципе может и не быть...
Что конкретно у тебя за прошивка?
Это не имеет значения - реализация одинакова всюду.
ну как я уже вижу - разная.
Ничего я не путаю ... Притом это именно контроль заполнения стека (а не переполнения стека) - на выходе коэффициент = заполненная часть/к общему стеку. Коэффициент заполнения пользовательского стека учавствует как аргумент в одной из задач ETS monitoring concept, связанной с контролем правильности "хода приложения".
Я те говорю - реализации разные. - нет у меня никакого контроля стека. Ну если у тебя есть - с интересом послушаю о наступлении "неправильности" - и что потом?
locon
Posts: 17
Joined: Fri Jan 31, 2014 6:43 am

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by locon »

Maxi wrote: А приоритет их повышен не на стадии offline анализа - а на стадии когда его разработчики РУЧКАМИ прописали высоким!
это уже не конструктивный разговор, а сотресание воздуха ... просто тебе так хочется думать, а мне хочется думать по другому, но у меня для этого есть объективные предпосылки, и я их привел ... ОС и не нужно ничего знать о SSC конкретно (я и не писал обратное), а соответствующий приоритет для конкретной задачи повышается на стадии offline анализа, для исключения взаимной блокировки задач при доступе к общему ресурсу. А захват и освобождение ресурса во всех ОСРВ, осуществляется системными вызовами, что тоже отрицать нет смысла ... может стоит посмотреть еще раз, как реализовано разделение SSC? Если бы это было тупо состояние, то ставили бы флаг прямо в задаче, а не делали бы вызов.
ну как я уже вижу - разная.
можно остановиться на конкретной, какая тебе интересна? давай какую-нибудь "тросиковую", у меня там есть интерес, кой-чего поспрашать тебя по реализации MDFUE для LLS... но этот вопрос может в ЛС?, а то выгонят нас скоро с темы.
и что потом?
... реакция.
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Maxi »

locon wrote: это уже не конструктивный разговор, а сотресание воздуха ... просто тебе так хочется думать, а мне хочется думать по другому, но у меня для этого есть объективные предпосылки, и я их привел ... ОС и не нужно ничего знать о SSC конкретно (я и не писал обратное), а соответствующий приоритет для конкретной задачи повышается на стадии offline анализа, для исключения взаимной блокировки задач при доступе к общему ресурсу. А захват и освобождение ресурса во всех ОСРВ, осуществляется системными вызовами, что тоже отрицать нет смысла ... может стоит посмотреть еще раз, как реализовано разделение SSC? Если бы это было тупо состояние, то ставили бы флаг прямо в задаче, а не делали бы вызов.
мне достаточно что задачи стартуют из кооперативного шедуллера и приоритет их не меняется никогда. и SSC не системный ресурс. про SSC ни в одной спецификации и речи нет!
можно остановиться на конкретной, какая тебе интересна? давай какую-нибудь "тросиковую", у меня там есть интерес, кой-чего поспрашать тебя по реализации MDFUE для LLS... но этот вопрос может в ЛС?, а то выгонят нас скоро с темы.
та в которой:
1) есть контроль стека.
2) есть задачи стартуемые от динамического таймера.
... реакция.
это не ответ. КАКАЯ РЕАКЦИЯ?
locon
Posts: 17
Joined: Fri Jan 31, 2014 6:43 am

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by locon »

Maxi wrote:мне достаточно что задачи стартуют из кооперативного шедуллера и приоритет их не меняется никогда.
и от этого ресурс стал неразделяемым? он монопольно используется в течении всего времени работы приложения исключительно одной задачей?
та в которой:
1) есть контроль стека.
2) есть задачи стартуемые от динамического таймера.
в любой, реализация везде одинакова ... возмем, например, ВАЗовскую - B101CR02 ...
это не ответ. КАКАЯ РЕАКЦИЯ?
"Правильно заданный вопрос - половина ответа!" (с) ... Funktionsrahmen в помощь ...
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Maxi »

это не ответ. КАКАЯ РЕАКЦИЯ?
"Правильно заданный вопрос - половина ответа!" (с) ... Funktionsrahmen в помощь ...
У меня такое ощущение что я разговариваю со стеной.

In the ME7.0-Software there are a lot of reasons to Resets. In the development-phase there could be e.g. certain kind of
errors,
and wrong application data settings, which makes the ECU μC Reset itself. But there are also normal Reset-causes e.g.
as the ignition switch is turned ON. To find the errors in the development-phase, one must be able to track the previous
Reset-causes, preferably via the application tools VS-100 or VAT-2000.


Я тебе 10 сообщений назад писал что контроль стека используется ПРИ РАЗРАБОТКЕ - но ты уперся что оно работает для конечного пользователя. и ты мне теперь рекомендуешь ЭТО ЕЩЕ РАЗ прочитать в Funktionsrahmen... ну что на это сказать...

На конкретный вопрос где ты видел эти дурные реализации - ты мне _тазовую_ прошивку предложил?
да уж - тазы. вершина конструкторской мысли. даже отладочные функции никто не вырубил ;)
locon
Posts: 17
Joined: Fri Jan 31, 2014 6:43 am

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by locon »

Maxi wrote:У меня такое ощущение что я разговариваю со стеной.
А у меня ощущение, что ты кроме себя, больше никого не слышешь.
Maxi wrote:На конкретный вопрос где ты видел эти дурные реализации - ты мне _тазовую_ прошивку предложил?
да уж - тазы. вершина конструкторской мысли. даже отладочные функции никто не вырубил
Я тебе на протяжении 10 постов пишу - реализация везде одинакова. А свой выбор я тебе мотивировал выше. Не нравится B101CR02 возми 8D0907551M, но мне это не интересно, в ней мне известно чуть более чем все, т.е. до последнего "винтика", а в "тросиковой" мне интересна реализация управления наполнением на ХХ (она весьма отличается). Я тебя разочерую, но 8D0907551M все тоже самое - контроль стека абсолютно такой же, все в той же задаче mainTask (при том же контроле времени на задачу). И как теперь быть инженерам Audi у которых "отладочные функции никто не вырубил"? ;)
Maxi wrote: и ты мне теперь рекомендуешь ЭТО ЕЩЕ РАЗ прочитать в Funktionsrahmen... ну что на это сказать...
пытаясь наладить конструктивный разговор, я понял - читать и понимать (о чем идет повествование) это разные вещи ...
что на это сказать? Funktionsrahmen тебе в помощь ... модули ETS monitoring concept ... тренируйся ...
mivaol
Posts: 260
Joined: Thu Jan 30, 2014 6:00 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by mivaol »

А что это дает вам?
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Maxi »

locon wrote:тренируйся ...
Зачем?! Мне управление наполнением не интересно. А контроллерами я занимаюсь со времен когда никаких RTOS и в помине не было.
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by XDA »

что-то обсуждение ушло от основной темы:
нужно FPU или нет.
оправданы накладные расходы или нет
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Maxi »

функционально - конечно не нужен. 100% товарных систем без FPU прекрасно работают.
а оправдает или нет это тестировать надо.
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by XDA »

всё ждал, вспомнит ли кто-нибудь, что флоат поинт вычисления имеют фундаментальные глюки.....

Самый первое - не все десятичные числа имеют двоичное представление с плавающей запятой. Например, число «0,2» будет представлено как «0,200000003» в одинарной точности. Соответственно, «0,2 + 0,2 ≈ 0,4». Абсолютная погрешность в отдельном случае может и не высока, но если использовать такую константу в цикле, можем получить накопленную погрешность.

Так же в арифметике с плавающей запятой правило (a*b)*c = a*(b*c) не выполняется для любых арифметических операций. Например,
(10^20+1)-10^20=0 ≠ (10^20-10^20)+1=1

далее - ошибка округления. Округление до ближайшего в стандарте сделано не так как мы привыкли. Математически показано, что если 0,5 округлять до 1 (в большую сторону), то существует набор операций, при которых ошибка округления будет возрастать до бесконечности. Поэтому в IEEE754 применяется правило округления до четного. Так, 12,5 будет округлено до 12, а 13,5 – до 14.
самая опасная операция с точки зрения округления в арифметике с плавающей запятой — это вычитание. При вычитании близких чисел значимые разряды могут потеряться, что
может в разы увеличить относительную погрешность.

ошибки сравнения чисел.
Например,

Code: Select all

float a = 0.2;
if (a == 0.2) DoSome();
Ошибка здесь, во-первых, в том, что 0,2 не имеет точного двоичного представления, а во-вторых 0,2 – это константа двойной точности, а переменная a – одинарной, и никакой гарантии о поведении этого сравнения нет.

Лучший, но все равно ошибочный способ, это сравнивать разницу с допустимой абсолютной погрешностью:

Code: Select all

if (fabs(a – 0.2) < 0.0001) DoSome(); // a =? 0.2
Недостаток такого подхода в том, что погрешность представления числа увеличивается с ростом самого этого числа. Так, если программа ожидает «10000», то приведенное равенство не будет выполняться для ближайшего соседнего числа (10000,000977). Это особенно актуально, если в программе имеется преобразование из одинарной точности в двойную.

P.S. именно поэтому во всех банковских системах деньги хранят только в фиксед поинт.
(возможно именно поэтому в заводских ЕЦУ флоат поинт, из-за своей непредсказуемости, так же не используется)
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
AndreyB
Site Admin
Posts: 14327
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by AndreyB »

XDA wrote:P.S. именно поэтому во всех банковских системах деньги хранят только в фиксед поинт.
(возможно именно поэтому в заводских ЕЦУ флоат поинт, из-за своей непредсказуемости, так же не используется)
Тут ты просто не прав. Никакой фиксед поинт во всех банковский системах не используют - спроси меня, откуда я это знаю :) Я их программирую.

То, о чём ты говоришь называется точность и накопление ошибки. У фиксед поинт точность еще хуже естесвенно, а проблема накопление ошибки решается правильным округлением на каждом этапе вычислений - например именно так работают финансовые системы, они должны огкруглять к центам на каждой операции грубо говоря. Момент про нюансы сравнения - да, этот момент у нас будет. Но там нюанс обычно в сравнении на равенство, я даже не знаю, где нам нужно будет сравнивать плавающую точку на равенство - у нас обычно сравнения больше-меньше и все функции гладкии.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by XDA »

russian wrote:
XDA wrote:P.S. именно поэтому во всех банковских системах деньги хранят только в фиксед поинт.
(возможно именно поэтому в заводских ЕЦУ флоат поинт, из-за своей непредсказуемости, так же не используется)
Тут ты просто не прав. Никакой фиксед поинт во всех банковский системах не используют - спроси меня, откуда я это знаю :) Я их программирую.

То, о чём ты говоришь называется точность и накопление ошибки. У фиксед поинт точность еще хуже естесвенно, а проблема накопление ошибки решается правильным округлением на каждом этапе вычислений - например именно так работают финансовые системы, они должны огкруглять к центам на каждой операции грубо говоря. Момент про нюансы сравнения - да, этот момент у нас будет. Но там нюанс обычно в сравнении на равенство, я даже не знаю, где нам нужно будет сравнивать плавающую точку на равенство - у нас обычно сравнения больше-меньше и все функции гладкии.
и что, в оракловой базе тоже в флоат поинт, а не в фиксед?
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by XDA »

если на каждом этапе выполнять операции округления - ещё неизвестно, что будет быстрее и читабельней - целочисленная арифметика или флоат-поинт.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
AndreyB
Site Admin
Posts: 14327
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by AndreyB »

XDA, тут или я совсем непонятно объясняю - или ты передёргиваешь.
Я наверное зря рассказал, как работают финансовые системы - которым важны центы. Нам центы не важны. Мы не финансовая система.

Нам округлять на каждом шаге нет нужды.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by XDA »

думаешь ты один программировал банковские системы?
так вот, в моём случае техзадание от системных архитекторов было именно фиксед поинт, причём с чётким обоснованием причины.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by puff »

схлестнулись гиганты.
короче, если знать об этих тонкостях, помнить о них в своей работе - все должно получиться.
интересно посмотреть техзадарие от архитекторов автообильных ситем - действительно ли они не используют плавающую точку. причпм смысл есть смотреть только современные системы, насколько я уловил.
User avatar
AndreyB
Site Admin
Posts: 14327
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by AndreyB »

puff wrote:действительно ли они не используют плавающую точку
Да, учитывая что в некоторых блоках на Power Architecture FPU точно есть. Но используют ли они его - этого я не знаю.
См. http://rusefi.com/forum/viewtopic.php?f=13&t=429&start=10#p4716
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Sergey89 »

http://www.bosch-motorsport.de/media/catalog_resources/Engine_Control_Unit_MS_52_Datasheet_51_en_2775717899pdf.pdf

Вот ещё есть Bosch MS 5.2 и они в описании хвалятся, что у них мощный процессор с FPU.
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Maxi »

Sergey89 wrote:http://www.bosch-motorsport.de/media/catalog_resources/Engine_Control_Unit_MS_52_Datasheet_51_en_2775717899pdf.pdf

Вот ещё есть Bosch MS 5.2 и они в описании хвалятся, что у них мощный процессор с FPU.
Че то не вижу FPU в этом описании. К тому же это фричерская железка которую они делали под конкурс на F1ECU. Там загрузка процессора по ТЗ не должна 40% превышать на оборотах 18000
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Maxi »

XDA wrote:всё ждал, вспомнит ли кто-нибудь, что флоат поинт вычисления имеют фундаментальные глюки.....
мда... надо на досуге прошивку инновейта переписать на целочисленные вычисления. Не хочу чтоб в нем были "фундаментальные глюки" ;)
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Sergey89 »

Maxi wrote:
Sergey89 wrote:http://www.bosch-motorsport.de/media/catalog_resources/Engine_Control_Unit_MS_52_Datasheet_51_en_2775717899pdf.pdf

Вот ещё есть Bosch MS 5.2 и они в описании хвалятся, что у них мощный процессор с FPU.
Че то не вижу FPU в этом описании. К тому же это фричерская железка которую они делали под конкурс на F1ECU. Там загрузка процессора по ТЗ не должна 40% превышать на оборотах 18000
У них там целая линейка ЭБУ MS 5, которые можно купить и во всех под копирку:
As a member of our MS 5
family, it features a powerful digital processing core
with floating point arithmetic and a high-end FPGA for
ultimate performance and flexibility
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by XDA »

Maxi wrote:
XDA wrote:всё ждал, вспомнит ли кто-нибудь, что флоат поинт вычисления имеют фундаментальные глюки.....
мда... надо на досуге прошивку инновейта переписать на целочисленные вычисления. Не хочу чтоб в нем были "фундаментальные глюки" ;)
речь идёт об этом:
XDA wrote:если на каждом этапе выполнять операции округления - ещё неизвестно, что будет быстрее и читабельней - целочисленная арифметика или флоат-поинт.
флоатинг поинт - это ни плохо, ни хорошо. можно использовать его, можно нет.
целочисленные вычисления имеют одну цену в плане красоты программного кода и ресурсов процессора, флоатинг понит - другую цену.

я привёл эти факты для компенсации питетов в сторону ФПУ. :)
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by XDA »

И, кстати, если уж тестировать, то нужно тестировать полный цикл:
целочисленное умножение
А=1000; (1.000)
Б=1345; (1.345)
С=(А*Б)/1000000
т.е. (почти) на каждое умножение следует деление.

тогда как на ФПУ будет просто умножение (иногда с округлением :) )
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by Maxi »

XDA wrote:И, кстати, если уж тестировать, то нужно тестировать полный цикл:
целочисленное умножение
А=1000; (1.000)
Б=1345; (1.345)
С=(А*Б)/1000000
т.е. (почти) на каждое умножение следует деление.

тогда как на ФПУ будет просто умножение (иногда с округлением :) )
Основная проблема как тут уже было сказано - контекст.
Под контекст FPU нужна лишняя память и лишнее время.
а преимущество FPU вообще смешное. На наших операциях.
Т.е. может даже вполне получится что FPU станет недостатком.

я например на X86 никогда не использовал FPU - не понимаю нафиг оно нужно...
я вообще не понимаю что упрощает эта абстракция.
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by XDA »

Maxi wrote:Основная проблема как тут уже было сказано - контекст.
Под контекст FPU нужна лишняя память и лишнее время.
а преимущество FPU вообще смешное. На наших операциях.
Т.е. может даже вполне получится что FPU станет недостатком.

я например на X86 никогда не использовал FPU - не понимаю нафиг оно нужно...
я вообще не понимаю что упрощает эта абстракция.
просто самый главный упор на FPU был в плане красоты и читабельности кода.
а если делать всякие округления, сравнения с плавающей точностью и т.д. - код может оказаться далеко не таким красивым, как задумывалось.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
AndreyB
Site Admin
Posts: 14327
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: Плюсы и минусы вычислений с плавающей точкой?

Post by AndreyB »

XDA wrote:просто самый главный упор на FPU был в плане красоты и читабельности кода.
а если делать всякие округления, сравнения с плавающей точностью и т.д. - код может оказаться далеко не таким красивым, как задумывалось.
(сначала написал с матом, но выдохнул)

В последний раз спрашиваю, для особо упоротых: вот покажи мне пожалуйста в нашем репозитории одно место, где нам нужно округление или сравнение на точное равенство? Т.к. как таких мест или ноль, или почти ноль - то проблемы с читабельностью кода нет, код с плавающей точкой - самый простой из всех вариантов.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Post Reply