Плюсы и минусы вычислений с плавающей точкой?
Плюсы и минусы вычислений с плавающей точкой?
Кстати всякого рода вычисления с плавающей точкой лучше бы избегать не так ли
например умножить 14.75 на 1.05 не проще умножить 1475 на 105 и результат поделить на сто а ещё лучше вообше не иметь в таблице таких больших чисел а иметь например если это смесь до сотых то так единица квантования 0.05 то смесь
начинать от скажем 8.00-20.75 так выйдет что значение в таблице 0 это 8.00, 1 это 8.05, 2 это 8.10 итд
Тогда экономится куча места не так ли?
например умножить 14.75 на 1.05 не проще умножить 1475 на 105 и результат поделить на сто а ещё лучше вообше не иметь в таблице таких больших чисел а иметь например если это смесь до сотых то так единица квантования 0.05 то смесь
начинать от скажем 8.00-20.75 так выйдет что значение в таблице 0 это 8.00, 1 это 8.05, 2 это 8.10 итд
Тогда экономится куча места не так ли?
- AndreyB
- Site Admin
- Posts: 14343
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Плюсы и минусы вычислений с плавающей точкой?
Короткий ответ - нет, нет, нет и нет
Не проще, не быстрее, и не экономит память.
Например, целочисленное деление на 100 может оказаться дороже вещественного умножения.
Например, float занимает 32 бита так же как и integer - и у нас особого дефицита памяти нет, чтоб нужно было экономить.
Например, от загромождения кода арифметикой фиксированной точки мы получим только загромождённый плохочитаемый код.
См. также некоторые из агрументов из http://rusefi.com/forum/viewtopic.php?f=9&t=225
Не проще, не быстрее, и не экономит память.
Например, целочисленное деление на 100 может оказаться дороже вещественного умножения.
Например, float занимает 32 бита так же как и integer - и у нас особого дефицита памяти нет, чтоб нужно было экономить.
Например, от загромождения кода арифметикой фиксированной точки мы получим только загромождённый плохочитаемый код.
См. также некоторые из агрументов из http://rusefi.com/forum/viewtopic.php?f=9&t=225
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Плюсы и минусы вычислений с плавающей точкой?
Всё ясно то есть стм одинаково умножит 14.75 и 1475 на 1.05 и 105 соответственно? Что то мне подсказывает что нет
не понял только как это на код повлияет, ведь значения из таблицы просто берется int вместо float быстренько вычисляется результат отдается всё.
А вот забивка таблицы для конечного пользователя выглядит как будто 14.75
Ну не сильно я понимаю что внутри стм но хочется что бы всё было лучше .
не понял только как это на код повлияет, ведь значения из таблицы просто берется int вместо float быстренько вычисляется результат отдается всё.
А вот забивка таблицы для конечного пользователя выглядит как будто 14.75
Ну не сильно я понимаю что внутри стм но хочется что бы всё было лучше .
Last edited by mivaol on Thu Jan 30, 2014 8:44 pm, edited 1 time in total.
- AndreyB
- Site Admin
- Posts: 14343
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Плюсы и минусы вычислений с плавающей точкой?
Умножит по разному. Вот только в одном случае ты забыл, что будет еще и деление на 100 - а в другом случае всё, у тебя есть результат. И ты забыл, что ДАЖЕ если целочисленная арифметика будет быстрее - еще есть проблема загромождения кода.mivaol wrote:Всё ясно то есть стм одинаково умножит 14.75 и 1475 на 1.05 и 105 соответственно?
По сумме всех факторов именно в stm32f4 имемнно при наличии FPU - float для меня выигывает.
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Плюсы и минусы вычислений с плавающей точкой?
Точно! но можно во всем коде убрать сотые то есть флоат(в случае сотых) тогда не придется и делить, хотя пока система справляется пускай будет флоат.russian wrote:Умножит по разному. Вот только в одном случае ты забыл, что будет еще и деление на 100 - а в другом случае всё, у тебя есть результат. И ты забыл, что ДАЖЕ если целочисленная арифметика будет быстрее - еще есть проблема загромождения кода.mivaol wrote:Всё ясно то есть стм одинаково умножит 14.75 и 1475 на 1.05 и 105 соответственно?
По сумме всех факторов именно в stm32f4 имемнно при наличии FPU - float для меня выигывает.
Как понимаю если проц не справиться то поэтапно всё будет решаться?
Но таблиц будет много судя по TODO топику.
- AndreyB
- Site Admin
- Posts: 14343
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Плюсы и минусы вычислений с плавающей точкой?
Да. Всё будет решаться поэтапно.mivaol wrote:поэтапно всё будет решаться?
Вообще глобально в настоящий момент с программированием сейчас затыка я не вижу - затык сейчас я вижу в отсутствии удобного железа, которые можно бы было быстро собрать, быстро подключить к стандартной проводке и начать играться с софтом. Софт сейчас слишкмо оторван от реальных мотороров, реальных моторов сейчас ОДИН и на этом одном моторе он работает. Я сейчас занимаюсь в большей степени организацией разработки и изготовления железа - мне это сейчас кажется самым полезным.
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Плюсы и минусы вычислений с плавающей точкой?
Тогда надо было наверно уничтожить реальный блок выпаяв проц впаяв разъем и подсоединить f4 плату через переходник тогда за очень быстро выйдет правильно сделанный по железу блок с мягкой для вас программой.
Либо выпаяв родной микроконтроллер через переходник впаять платку с стм32 либо подобным, так чуток дольше но компактнее и аккуратнее.
Ну вообще круть это просто использовать готовый блок перепрограммировать проц в нем.
Либо выпаяв родной микроконтроллер через переходник впаять платку с стм32 либо подобным, так чуток дольше но компактнее и аккуратнее.
Ну вообще круть это просто использовать готовый блок перепрограммировать проц в нем.
- AndreyB
- Site Admin
- Posts: 14343
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Плюсы и минусы вычислений с плавающей точкой?
Да, я такую идею думал и наверное до сих пор планирую.mivaol wrote:Тогда надо было наверно уничтожить реальный блок выпаяв проц впаяв разъем и подсоединить f4 плату через переходник тогда за очень быстро выйдет правильно сделанный по железу блок с мягкой для вас программой.
Машина 1992 года - там это сработает идеально, там DIP. А вот в машине 1996 года уже мелкие компоненты и много чипов, между которыми чёрт знает какие протоколы - и впаиваться уже сложно, и исследовать это уже не подарок. Так что этот план ушёл на задний план, он слишком не универсальный.
И вопрос перепрограммирования блока с мощным процессором тоже не совсем тревиальный, там есть подводные камни тоже - компилятор, документация и так далее.
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Плюсы и минусы вычислений с плавающей точкой?
есть тесты fpu perfomance для STM32? Сколько времени занимают унарные операции?
- AndreyB
- Site Admin
- Posts: 14343
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Плюсы и минусы вычислений с плавающей точкой?
В прошивке у нас есть команда testperf, сейчас прилечу домой скопирую её отчёт сюда.
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Плюсы и минусы вычислений с плавающей точкой?
Вот что известно из аппноута по поводу FPU:
Только я не понял, почему интерес к унарным операторам?
Absolute value (1 cycle)
Negate of a float or of multiple floats (1 cycle)
Addition (1 cycle)
Subtraction (1 cycle)
Multiply, multiply accumulate/subtract, multiply accumulate/subtract then negate (3
cycles)
Divide (14 cycles)
Square root (14 cycles)
http://www.st.com/st-web-ui/static/active/jp/resource/technical/document/application_note/DM00047230.pdfThe FPU has compare instructions (1 cycle) and a convert instruction (1 cycle).
Conversion can be done between integer, fixed point, half precision and float.
Только я не понял, почему интерес к унарным операторам?
Re: Плюсы и минусы вычислений с плавающей точкой?
Я нашел сравнение которое говорит о 6-ти кратном преимуществе на 4-х простых действиях перед программной библиотекой float - это очень незначительно для сопроцессора.
Здесь в некоем синтетическом тесте преимущество 11-17 раз.
цикл - это сколько тактов имеется ввиду?
Здесь в некоем синтетическом тесте преимущество 11-17 раз.
цикл - это сколько тактов имеется ввиду?
Re: Плюсы и минусы вычислений с плавающей точкой?
1 цикл равен 1 такту
Re: Плюсы и минусы вычислений с плавающей точкой?
да ну фигня какая то. откуда тогда всего 6-ти кратное преимущество от программной реализации float?
Re: Плюсы и минусы вычислений с плавающей точкой?
Пообщался с человеком одним сегодня.
Он спросил зачем спрашиваю, ответил хочу знать как справится FPU на ртос.
Так он сказал что если ртос реально заточена под m4 и стоят всякие галки- использовать фпу, то выигрыш все равно сомнителен(имеется ввиду если совсем отказаться от флоат) так как ось будет для каждого процесса сохранять регистры в том читсле и регистры фпу, при переходе от процесса к процессу.
Вот вопрос а точно ли так нужна ось? (не совсем эта тема но..)
Во вторых стоит ли нагружать то что в нагрузке не нуждается...
В другой теме другой вопрос.
Он спросил зачем спрашиваю, ответил хочу знать как справится FPU на ртос.
Так он сказал что если ртос реально заточена под m4 и стоят всякие галки- использовать фпу, то выигрыш все равно сомнителен(имеется ввиду если совсем отказаться от флоат) так как ось будет для каждого процесса сохранять регистры в том читсле и регистры фпу, при переходе от процесса к процессу.
Вот вопрос а точно ли так нужна ось? (не совсем эта тема но..)
Во вторых стоит ли нагружать то что в нагрузке не нуждается...
В другой теме другой вопрос.
Re: Плюсы и минусы вычислений с плавающей точкой?
Кстати да - содержимое регистров FPU же является контекстом и требует сохранения.
- AndreyB
- Site Admin
- Posts: 14343
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Плюсы и минусы вычислений с плавающей точкой?
Про утяжеление переключения контекста всё верно, кстати человек умный, смог про это вспонить. Он нам здесь нужен
Повторяю еще раз для "оптимизаторов":
1) если исходный код програмы в случае float на 1% проще
2) float требует в 10 раз больше ресурсов
3) эти лишние ресурсы ЕСТЬ в наличии
то в итоге выгоднее использовать float
Дома буду часов через 7 и отпишу результата микро-теста.
Повторяю еще раз для "оптимизаторов":
1) если исходный код програмы в случае float на 1% проще
2) float требует в 10 раз больше ресурсов
3) эти лишние ресурсы ЕСТЬ в наличии
то в итоге выгоднее использовать float
Дома буду часов через 7 и отпишу результата микро-теста.
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Плюсы и минусы вычислений с плавающей точкой?
у боша 2d-3dlookup входят в ядро еркоса и на ассемблере написаны с трюками.
потому что тройная интерполяция даже без поиска без трюков это 18 простых действий.
потому что тройная интерполяция даже без поиска без трюков это 18 простых действий.
- AndreyB
- Site Admin
- Posts: 14343
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Плюсы и минусы вычислений с плавающей точкой?
У нашей 3d interpolation.c есть очевидный потенциал ускорения за счёт предподсчёта линейных коэффициентов a & b в двух из трёх 2D интерполяций - но сначала нужно уметь собирать статистику, которая ДОКАЖЕТ, что эту оптимизацию нужно делать. Я понимаю важность профилирования, а главное - именно это всё я умею лучше всего делать.Maxi wrote:у боша 2d-3dlookup входят в ядро еркоса и на ассемблере написаны с трюками.
потому что тройная интерполяция даже без поиска без трюков это 18 простых действий.
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Плюсы и минусы вычислений с плавающей точкой?
Вообще в крутых системах сначала вычисляют единую для всех случаев матрицу осевых коэффициентов. Затем в каждом 3d lookup результат получается за 12 действий.
- AndreyB
- Site Admin
- Posts: 14343
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Плюсы и минусы вычислений с плавающей точкой?
Я думаю, что мы как раз об одном и том же говорим - заранее вычисляем a & b для уровнения "a * x + b = y"Maxi wrote:Вообще в крутых системах сначала вычисляют единую для всех случаев матрицу осевых коэффициентов.
Итак, я дошёл до дома и вот обещанные результаты - это наша встроенная команда testmath
Code: Select all
testmath 100000
Finished 100000 iterations of getBaseFuel in 944ms
Finished 100000 iterations of 'chTimeNow()' in 6ms
Finished 100000 iterations of 'chTimeNow()' with chSysLock in 87ms
Finished 10000 iterations of 'currentTimeMillis' in 1ms
Finished 100000 iterations of empty loop in 3ms
Finished 100000 iterations of int summation in 3ms
Finished 100000 iterations of int division in 2ms
Finished 100000 iterations of long summation in 3ms
Finished 100000 iterations of long division in 4ms
Finished 100000 iterations of float summation in 4ms
Finished 100000 iterations of float division in 26ms
Finished 100000 iterations of double summation in 149ms
Finished 100000 iterations of double division in 1005ms
testmath 1000000
Finished 1000000 iterations of getBaseFuel in 9450ms
Finished 1000000 iterations of 'chTimeNow()' in 61ms
Finished 1000000 iterations of 'chTimeNow()' with chSysLock in 877ms
Finished 100000 iterations of 'currentTimeMillis' in 8ms
Finished 1000000 iterations of empty loop in 30ms
Finished 1000000 iterations of int summation in 31ms
Finished 1000000 iterations of int division in 24ms
Finished 1000000 iterations of long summation in 37ms
Finished 1000000 iterations of long division in 31ms
Finished 1000000 iterations of float summation in 43ms
Finished 1000000 iterations of float division in 256ms
Finished 1000000 iterations of double summation in 1485ms
Finished 1000000 iterations of double division in 2726ms
плавающее аппаратное сложение примерно равно обычному сложение, плавающее аппаратное деление - примерно в 8 раз медленее целочисленного. Библиотечные сложение и деление отстают этак в 10 раз.
getBaseFuel - это по сути наш interpolate3d
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Плюсы и минусы вычислений с плавающей точкой?
несколько неверная информация ...Maxi wrote:у боша 2d-3dlookup входят в ядро еркоса и на ассемблере написаны с трюками.
потому что тройная интерполяция даже без поиска без трюков это 18 простых действий.
функции table lookup входят в набор базовых утилит, не относящийся к ядру ercos, и в оригинале они написаны на мета-языке.
Re: Плюсы и минусы вычислений с плавающей точкой?
Транслятор такой эффективности этого куска дать не может даже сейчас - не говоря уж про середину 90х.locon wrote:несколько неверная информация ...Maxi wrote:у боша 2d-3dlookup входят в ядро еркоса и на ассемблере написаны с трюками.
потому что тройная интерполяция даже без поиска без трюков это 18 простых действий.
функции table lookup входят в набор базовых утилит, не относящийся к ядру ercos, и в оригинале они написаны на мета-языке.
Re: Плюсы и минусы вычислений с плавающей точкой?
В условном коде просто написана заглушка, чтобы на всех этапах был работоспособный код.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
Re: Плюсы и минусы вычислений с плавающей точкой?
Банальный пример (все оттуда же, узнаешь Maxi?):Maxi wrote:Транслятор такой эффективности этого куска дать не может даже сейчас - не говоря уж про середину 90х.locon wrote:несколько неверная информация ...Maxi wrote:у боша 2d-3dlookup входят в ядро еркоса и на ассемблере написаны с трюками.
потому что тройная интерполяция даже без поиска без трюков это 18 простых действий.
функции table lookup входят в набор базовых утилит, не относящийся к ядру ercos, и в оригинале они написаны на мета-языке.
Code: Select all
;
; search function coefficients (offset:slope) for linear interpolation
;
; input:
; R13 - item (value)
; R12 - table (pointer)
;
; output:
; R4 - offset(H):slope(L)
;
; table structure [byte]:
; size, data (N0 ... Nsize)
;
u8_seek_direct: mov r4, #0 ; = offset(H):slope(L) <- output value
mov r3, r13 ; = item <- input argument
;
movb rl1, [r12+] ; = table <- input argument
movbz r1, rl1 ; = size of table
;
mov r2, r12 ; idx = 0 <- data of table
;
cmpb rl3, [r2]
jmpr cc_ULE, return ; item =< table[0]
;
add r2, r1 ; idx = max
sub r2, #1
;
cmpb rl3, [r2]
jmpr cc_NC, loc_2 ; item > table[max-1]
loc_1: sub r2, #1 ; idx--
;
cmpb rl3, [r2]
jmpr cc_C, loc_1 ; item < table[idx]
;
subb rl3, [r2]
shl r3, #8
mov MDL, r3 ; 'tmp1' -> (item - table[idx]) * 256
;
movb rl3, [r2+1]
subb rl3, [r2]
movbz r3, rl3 ; 'tmp2' -> (table[idx+1] - table[idx])
;
divu r3 ; 'tmp1' / 'tmp2'
mov r4, MDL ; = slope
loc_2: sub r2, r12
movb rh4, rl2 ; = offset
return: rets ; return offset(H):slope(L)
; End of function u8_seek_direct
Re: Плюсы и минусы вычислений с плавающей точкой?
Ты эту достоверную информацию берешь из переводимых же тобой документов по ercos? как насчет реальности? там нет и половины из того что написано в этих документах - ибо это банально не нужно. И есть очень много чего там не написано..
Re: Плюсы и минусы вычислений с плавающей точкой?
а пример выше уже из нереальности? он такой сложный, что закодить его эффективно можно только на ассемблере целевого процессора? или упаковка в один регистр двух значений переменных это и есть пресловутый трюк, не реализуемый эффективно без ассемблера? можно еще пример "нереальный", например, 3D lookup привести, но там все тоже самое, только в 4 раза больше кода.Maxi wrote:как насчет реальности?
Полностью с тобой согласен, но .... если рассмотреть документ, что я представил в "Источниках ...", в ercos, например, m(e)7 есть все то, что описано в документе и нет ничего что не описано. Вот как то так ...Maxi wrote:там нет и половины из того что написано в этих документах - ибо это банально не нужно. И есть очень много чего там не написано..
Есть притензии к переводу? Конструктивная критика приветствуется! Я специализируюсь на встраиваемых системах по управлению сложным технологическим оборудованием - как реверс-инженер, профессионально (металорежущее оборудование). Автотематика просто мое хобби, потому соответствующего специального "автомобильного" образования не имею. Приходится учиться самому, но некоторые вопросы я понять пока не могу, а спросить порою неукого. Мне очень импонирует твой профессианализм, я многому у тебя научился. Поэтому не хочу мериться у кого длиннее. Хочется конструктивного диалога.Maxi wrote:Ты эту достоверную информацию берешь из переводимых же тобой документов по ercos?
Re: Плюсы и минусы вычислений с плавающей точкой?
трюки вообще не из сферы программирования а из свойств простых чисел.locon wrote:а пример выше уже из нереальности? он такой сложный, что закодить его эффективно можно только на ассемблере целевого процессора? или упаковка в один регистр двух значений переменных это и есть пресловутый трюк, не реализуемый эффективно без ассемблера? можно еще пример "нереальный", например, 3D lookup привести, но там все тоже самое, только в 4 раза больше кода.Maxi wrote:как насчет реальности?
1. обмен сообщениями дороже чем offline изоляция на уровне глобальных переменных. Поэтому его используют очень редко когда он и правда нужен. в основном простые изолированные переменные.Полностью с тобой согласен, но .... если рассмотреть документ, что я представил в "Источниках ...", в ercos, например, m(e)7 есть все то, что описано в документе и нет ничего что не описано. Вот как то так ...
2. семафоры не используются вообще в таких системах - это тупиковая ветвь разделения ресурсов от жирных тупых ОС. Да собственно разделяемых ресурсов то - кот наплакал. В основном ресурс принадлежит конкретной задаче чуть менее чем всегда.
3. служба динамического таймера используется очень редко - в ней нет смысла. Если задаче нужна некая динамичность - то ее реализуют внутри задачи машиной состояний, это все равно быстрее чем таймеры.
4. исключения нет смысла обрабатывать - их не должно быть. Это чисто отладочная функция.
перечитай его сам - там несколько строк противоречат сами себе. Короче его надо вычитывать.Есть притензии к переводу? Конструктивная критика приветствуется!
Re: Плюсы и минусы вычислений с плавающей точкой?
Вот эти две фразы, об одном и том же вопросе, не связаны между собой, так как трюки, основанные на свойствах простых чисел, не могут помешать писать эффективный код на мета-языке.Maxi wrote: у боша 2d-3dlookup входят в ядро еркоса и на ассемблере написаны с трюками.
...
трюки вообще не из сферы программирования а из свойств простых чисел.
Это прямыми словами отражено в документе - "В случае статического анализа исходного текста, операции приема/отправки, могут быть вставлены строкой в исходный текст, так как фактический контекст процесса известен. Это сокращает исходный текст до простых операций присваивания, например, msg (1): = msg;" ... так что мимо.1. обмен сообщениями дороже чем offline изоляция на уровне глобальных переменных. Поэтому его используют очень редко когда он и правда нужен. в основном простые изолированные переменные.
Это что, тест на мою профпригодность?! Например, SSC шина разделяемый ресурс (так как на ней несколько внешних устройств), и доступ к нему (из разных задач) осуществляется классически (как в жирных тупых ОС) - с захватом ресурса, выставлением семафора, обслуживанием, освобождением ресурса, сбросом семафора. ADC тоже разделяемый ресурс, но не классически (просто здесь доступ к нему из одной задачи) - захвата и освобождения ресурса нет, но семафор есть, его просто не стали выпиливать из готового и отлаженного кода, что лишний раз подтверждает слова герра Томаса Бека - о повторном использовании программного кода. Кстате, контроль за семафором тоже остался, "если что". Так ты лукавишь, или действительно не знал этого?2. семафоры не используются вообще в таких системах - это тупиковая ветвь разделения ресурсов от жирных тупых ОС. Да собственно разделяемых ресурсов то - кот наплакал. В основном ресурс принадлежит конкретной задаче чуть менее чем всегда.
Да и правда, нет в ней смысла, только вот запуск кооперативного планировщика осуществляется с помощью службы динамического таймера. Хотя есть еще одна область задач, где без нее никак. Кстате, а почему 10ms timeRaster может иметь 2 (две!) одновременно запущенных копии (это в правах задачи написано), когда все остальные таймслоты только одну? (даю подсказку - 10ms timeRaster активируется службой динамического таймера).3. служба динамического таймера используется очень редко - в ней нет смысла. Если задаче нужна некая динамичность - то ее реализуют внутри задачи машиной состояний, это все равно быстрее чем таймеры.
А так же нет смысла контролировать в фоне пользовательский стек, время выполнения задач, целостность кода, аппратную переферию и прочие, что реализовано в m(e)7, например.4. исключения нет смысла обрабатывать - их не должно быть. Это чисто отладочная функция.
если только авторы противоречат сами себе .... я противоречий не нашел, или глаз "замылился", или как я писал выше - некоторые вопросы я пока понять не могу ...перечитай его сам - там несколько строк противоречат сами себе. Короче его надо вычитывать.
Re: Плюсы и минусы вычислений с плавающей точкой?
А почему они должны быть связаны именно так как ты себе представил связь?locon wrote:Вот эти две фразы, об одном и том же вопросе, не связаны между собой, так как трюки, основанные на свойствах простых чисел, не могут помешать писать эффективный код на мета-языке.Maxi wrote: у боша 2d-3dlookup входят в ядро еркоса и на ассемблере написаны с трюками.
...
трюки вообще не из сферы программирования а из свойств простых чисел.
не сокращает это ничего. Все равно на уровне offline должен быть определен владелец и тип. Это сокращает глюки и ошибки.Это прямыми словами отражено в документе - "В случае статического анализа исходного текста, операции приема/отправки, могут быть вставлены строкой в исходный текст, так как фактический контекст процесса известен. Это сокращает исходный текст до простых операций присваивания, например, msg (1): = msg;" ... так что мимо.1. обмен сообщениями дороже чем offline изоляция на уровне глобальных переменных. Поэтому его используют очень редко когда он и правда нужен. в основном простые изолированные переменные.
SSC - не разделяемый ресурс! Им почти всегда монопольно владеет задача его обслуживания. И висит там кот наплакал чего - eeprom тупо кешируется на чтение сразу. А любая запись кешируется обычным стеком на уровне уже задачи. Еще я один раз встречал разделение на уровне ЗАДАЧ. когда задачи блокируют друг друга - но никак не сам ресурс. Потому что это просто глупо. Причем такое возможно только для неотвественных кусков (тот же SSC - в общем случае если его вообще отрезать и все его задачи убить - ничего страшного не произойдет)... То что ты там мог видеть какое то другое разделенное - это полная изоляция отдельных несвязанных кусков кода.Это что, тест на мою профпригодность?! Например, SSC шина разделяемый ресурс (так как на ней несколько внешних устройств), и доступ к нему (из разных задач) осуществляется классически (как в жирных тупых ОС) - с захватом ресурса, выставлением семафора, обслуживанием, освобождением ресурса, сбросом семафора. ADC тоже разделяемый ресурс, но не классически (просто здесь доступ к нему из одной задачи) - захвата и освобождения ресурса нет, но семафор есть, его просто не стали выпиливать из готового и отлаженного кода, что лишний раз подтверждает слова герра Томаса Бека - о повторном использовании программного кода. Кстате, контроль за семафором тоже остался, "если что". Так ты лукавишь, или действительно не знал этого?
ерунда кооперативный планировщик работает от системного таймера и никакого отношения к динамическому таймеру он не имеет - у него жесткое заданное offline поведение.Да и правда, нет в ней смысла, только вот запуск кооперативного планировщика осуществляется с помощью службы динамического таймера.
Это где такое?Хотя есть еще одна область задач, где без нее никак. Кстате, а почему 10ms timeRaster может иметь 2 (две!) одновременно запущенных копии (это в правах задачи написано), когда все остальные таймслоты только одну? (даю подсказку - 10ms timeRaster активируется службой динамического таймера).
c каких пор там контролируется пользовательский стек и время выполнения задач?! и главное ЗАЧЕМ?А так же нет смысла контролировать в фоне пользовательский стек, время выполнения задач, целостность кода, аппратную переферию и прочие, что реализовано в m(e)7, например.4. исключения нет смысла обрабатывать - их не должно быть. Это чисто отладочная функция.
ты вообще не путаешь с отладкой сейчас?