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мс как я недавно выяснил. А у пятого нету ещё функции задержки по мс |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |