OSDev

для всех
Текущее время: 01 май 2024, 23:17

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 11 апр 2012, 02:15 

Зарегистрирован: 18 апр 2010, 15:59
Сообщения: 155
Еще один вопрос.

Насколько актуально внесение задержек после чтения\записи с порты Legacy PnP устройств (DMA, PIT, CMOS etc.). Вопрос навеян той же отладкой Винды\разгребанием исходников. В коде означеной ОС регулярно встречаются специальные задержки а-ля nop и пар [pushf; popf] после операций записи/чтения в вышеуказанные порты. Что меня смущает, так это то что задержки не абсолютные, а относительные. Выполнение кода задержки на первом пне и на Core i7 будет занимать время различающееся на порядок, если не на три. Но Windows в принципе продолжает нормально работает и на современных компах. Возникает закономерный вопрос: нужны ли они на самом деле и если нужны то на кой барабан?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 апр 2012, 07:50 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Команда nop используется ещё и для выравнивания.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 апр 2012, 08:17 
Аватара пользователя

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

Что касается майкрософт, то я думаю что дела обстоят так.
Входе разработки был выявлен баг с необходимостью задержки. Далее с целью предотвращения ошибок такого рода было сделано правило рекомендующее везде ввести задержки. И правило действует и по сей день.
Считаю такой подход правильным при разработки сложной системы.

Что касается железа. Проблема ошибки кроется в системе, т.е она не устранимая, но её вероятность можно снизить.
http://www.marsohod.org/index.php/ourbl ... /190-meta1

Как видно в стать дается зависимость от технологических норм и частоты.
Что касается устаревших устройств, то там частота не менялась, а нормы снизились. Как следствие вероятность ошибки упала.

Что касается современных, то вероятность ошибки выросла за счёт частоты, но думаю выводы сделаны и при проектировании в водят дополнительные тригеры, которые снижают частоту и ошибке можно забыть.

В некоторых местах наличие задержки обусловлено спецификой работы и она просто необходима. К примеру в IDE там чётко прописаны какие задержки после каких обращений должны идти.

Как итог на современном железе вероятность ошибки мала. А стоит ей пренебречь решать вам.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 апр 2012, 14:22 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Мне больше нравятся ожидания, а не задержки, например поставил 1 в бит например ресета и ждёш когда он обнулится контроллером. А если нету ни каких ответов от контроллера и приходится ставить задержки и начинается, один поставит 2мс другой 3мс, а у четвёртого найдётся флешка которая не определится без 5мс как я недавно выяснил. А у пятого нету ещё функции задержки по мс :lol:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


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

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


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

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