OSDev

для всех
Текущее время: 30 апр 2024, 05:09

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: 21 июл 2011, 09:46 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Не совсем вас понял. Исключить не удасться. Обычно просто считают примерно так. Критическая секция = 24 такта + 2 доступа к памяти. В то же время операция inc [EAX] - как например 2 такта + 2 доступа к памяти (прочитать и записать).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июл 2011, 11:28 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
ZarathustrA писал(а):
Не совсем вас понял.

Это из области арифметики за 5 класс, по теме упрощения (сокращения) формул. Поскольку у нас критическая секция исполняется не в сферическом вакууме, а с точно такими же потерями тактов как и в остальном коде, то нет смысла их считать отдельно, эти "переменные" можно сократить.
ZarathustrA писал(а):
Критическая секция = 24 такта + 2 доступа к памяти.

Вот и считай так.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июл 2011, 17:02 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Ну вот мы получили такую формулу: Х + Y * стоимость_обращения_к_памяти = max_int_latency. Вопрос в том, как определить Х и Y? То есть какие максимальные значения могут принимать эти аргументы? Причем судя по всему это обозначает выявление двух инструкций: первая обеспечивает максимальное значение Х, а вторая Y. Это позволит учитывать случай очень медленной памяти.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июл 2011, 23:29 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
ZarathustrA писал(а):
Ну вот мы получили такую формулу: Х + Y * стоимость_обращения_к_памяти = max_int_latency. Вопрос в том, как определить Х и Y? То есть какие максимальные значения могут принимать эти аргументы?

А это не указано в технических характеристиках аппарата? Тогда зачем тебе надо это учитывать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июл 2011, 23:55 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
См. выше. Я хочу попытаться реализовать ядро ОС таким образом, чтобы оно не добавляло никакой дополнительной латентности в обработке прерываний. Это требует отказа от критических секций и любых иных блокировок подобного рода. Но полностью отказаться от них тоже тяжело. Но архитектура x86 обладает интересной деталью: при получении прерывания, процессор ждет завершения выполнения текущей инструкции. То есть в худшем случае, между получением прерывания и запуском обработчика пройдет Х тактов, гда Х - это время выполнения самой длинной непрерываемой инструкции (то есть, теоретически, это могут быть сотни тактов). Таким образом, если используемая критическая секция будет выполняться менее чем Х тактов, то в результате латентность прерывания худшего случая не измениться.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июл 2011, 01:05 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Если в технических характеристиках аппарата не указана латентность обработки прерываний, то рассчитать её не получится. Поэтому оперировать надо не абсолютным временем, а эквивалентными операциями.
Касательно тактов, надо смотреть по справочнику время самой долгой инструкции для конкретного процессора. А время обращения к памяти надо не пересчитывать в такты, а использовать в критической секции точно так же - именно для обращения к памяти.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 июл 2011, 05:13 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Если вас страшат критические секции то откажитесь от них.
По поводу X возьми и померь. Тоже самое касается и Y.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB