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/