OSDev
http://osdev.su/

Актуальность задержек при программировании Legacy PnP устрой
http://osdev.su/viewtopic.php?f=7&t=527
Страница 1 из 1

Автор:  ZarathustrA [ 11 апр 2012, 02:15 ]
Заголовок сообщения:  Актуальность задержек при программировании Legacy PnP устрой

Еще один вопрос.

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

Автор:  Станислав [ 11 апр 2012, 07:50 ]
Заголовок сообщения:  Re: Актуальность задержек при программировании Legacy PnP ус

Команда nop используется ещё и для выравнивания.

Автор:  pavia [ 11 апр 2012, 08:17 ]
Заголовок сообщения:  Re: Актуальность задержек при программировании Legacy PnP ус

Если посмотреть код биоса, то там в основном устаревший код заботится о задержках.
Если взять демо EFI известное как DUET разработанное интел, то там задержек нет.

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

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

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

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

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

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

Автор:  Станислав [ 11 апр 2012, 14:22 ]
Заголовок сообщения:  Re: Актуальность задержек при программировании Legacy PnP ус

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/