Возможно я чего-то недопонимаю. Сразу хочу оговориться, для меня эти микросекунды не так уж и критичны, как я уже говорил, интерес скорее чисто теоретический, просто хотел разобраться в неготорых вопросах, в которых плаваю и послушать других людей.
Цитата:
Время перезагрузки конвейера можно абсолютно точно вычислить даже для очень сложных процессоров вроде нынешних интеловских
В Reference Manual по Cortex-M4 пишут
Цитата:
P - The number of cycles required for a pipeline refill. This ranges from 1 to 3
depending on the alignment and width of the target instruction, and whether the
processor manages to speculate the address early
Где P - дополнительные такты на выполнение инструкции. Тут вклинивается предсказатель переходов как я понимаю. Но на него наверное будет влиять то, что проц еще и прерывания обрабатывает, которые непредсказуемы... т.е. время перезагрузки можно посчитать только если у нас поведение всей системы полностью детерминировано.
Цитата:
Ну и второй вопрос: а что значит "жёсткого реального времени"?
Вот это действительно вопрос. Да, я читал определения, которые даются системам жесткого и мягкого РВ. И не понимаю принципиальной разницы. То ли она только в ответственности (система ЖРВ если не вовремя отработает - будет авария, смерти, денежные потери и т.п., а мягкого РВ - просто дискомфорт, гнев заказчика
и т.п.) либо в допусках на время срабатывания? Тут многие наверняка работают в области автоматики. У меня например в ТЗ прописывается время реакции на то или иное событие и
плюс допуск, погрешность. срабатывания, например +-1%. Так вот, если например не уложимся в этjn 1%, то все, кранты... а если уложимся - живем спокойно. Тогда где эта граница? При каких допусках систему считать ЖРВ, а при каких она уже становится мягкого РВ?
И да, я понимаю, что нельзя рассматривать софт в изоляции от всего остального. но все-таки это одна из важнейших частей системы.