OSDev http://osdev.su/ |
|
Определение латентности процесса при обработке прерываний http://osdev.su/viewtopic.php?f=5&t=432 |
Страница 2 из 2 |
Автор: | ZarathustrA [ 21 июл 2011, 09:46 ] |
Заголовок сообщения: | Re: Определение латентности процесса при обработке прерывани |
Не совсем вас понял. Исключить не удасться. Обычно просто считают примерно так. Критическая секция = 24 такта + 2 доступа к памяти. В то же время операция inc [EAX] - как например 2 такта + 2 доступа к памяти (прочитать и записать). |
Автор: | Himik [ 21 июл 2011, 11:28 ] |
Заголовок сообщения: | Re: Определение латентности процесса при обработке прерывани |
ZarathustrA писал(а): Не совсем вас понял. Это из области арифметики за 5 класс, по теме упрощения (сокращения) формул. Поскольку у нас критическая секция исполняется не в сферическом вакууме, а с точно такими же потерями тактов как и в остальном коде, то нет смысла их считать отдельно, эти "переменные" можно сократить. ZarathustrA писал(а): Критическая секция = 24 такта + 2 доступа к памяти. Вот и считай так. |
Автор: | ZarathustrA [ 21 июл 2011, 17:02 ] |
Заголовок сообщения: | Re: Определение латентности процесса при обработке прерывани |
Ну вот мы получили такую формулу: Х + Y * стоимость_обращения_к_памяти = max_int_latency. Вопрос в том, как определить Х и Y? То есть какие максимальные значения могут принимать эти аргументы? Причем судя по всему это обозначает выявление двух инструкций: первая обеспечивает максимальное значение Х, а вторая Y. Это позволит учитывать случай очень медленной памяти. |
Автор: | Himik [ 21 июл 2011, 23:29 ] |
Заголовок сообщения: | Re: Определение латентности процесса при обработке прерывани |
ZarathustrA писал(а): Ну вот мы получили такую формулу: Х + Y * стоимость_обращения_к_памяти = max_int_latency. Вопрос в том, как определить Х и Y? То есть какие максимальные значения могут принимать эти аргументы? А это не указано в технических характеристиках аппарата? Тогда зачем тебе надо это учитывать? |
Автор: | ZarathustrA [ 21 июл 2011, 23:55 ] |
Заголовок сообщения: | Re: Определение латентности процесса при обработке прерывани |
См. выше. Я хочу попытаться реализовать ядро ОС таким образом, чтобы оно не добавляло никакой дополнительной латентности в обработке прерываний. Это требует отказа от критических секций и любых иных блокировок подобного рода. Но полностью отказаться от них тоже тяжело. Но архитектура x86 обладает интересной деталью: при получении прерывания, процессор ждет завершения выполнения текущей инструкции. То есть в худшем случае, между получением прерывания и запуском обработчика пройдет Х тактов, гда Х - это время выполнения самой длинной непрерываемой инструкции (то есть, теоретически, это могут быть сотни тактов). Таким образом, если используемая критическая секция будет выполняться менее чем Х тактов, то в результате латентность прерывания худшего случая не измениться. |
Автор: | Himik [ 22 июл 2011, 01:05 ] |
Заголовок сообщения: | Re: Определение латентности процесса при обработке прерывани |
Если в технических характеристиках аппарата не указана латентность обработки прерываний, то рассчитать её не получится. Поэтому оперировать надо не абсолютным временем, а эквивалентными операциями. Касательно тактов, надо смотреть по справочнику время самой долгой инструкции для конкретного процессора. А время обращения к памяти надо не пересчитывать в такты, а использовать в критической секции точно так же - именно для обращения к памяти. |
Автор: | pavia [ 22 июл 2011, 05:13 ] |
Заголовок сообщения: | Re: Определение латентности процесса при обработке прерывани |
Если вас страшат критические секции то откажитесь от них. По поводу X возьми и померь. Тоже самое касается и Y. |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |