От: | Eagle-XK | http://esoft.pp.ua | |
Дата: | 02.03.06 12:25 | ||
Оценка: | 22 (4) | ||
#Имя: | FAQ.hardware.dma.pio |
(с) ChipСразу нужно оговориться: активация режима "DMA, если доступно" в общем случае не даст прироста производительности при работе исправного винчестера или оптического привода, а попробовать выполнить этот трюк можно тогда, когда устройство, заведомо поддерживающее этот режим передачи данных, по какой-то причине отказыватся работать на полной скорости. Причем вина в этом может быть не самого устройства, а системы Windows, которая ограничивает скорость передачи данных по каналам IDE-контроллера.
Дело в том, что при определенных условиях Windows 2000 и XP включают более медленный режим передачи данных для IDE-устройств. Например, когда операционная система фиксирует несколько ошибок CRC, она понижает режим передачи на одну ступень, например с UDMA 5 на UDMA 4. Если же еще и случается несколько тайм-аутов DMA, Windows полностью деактивирует DMA-доступ к соответствующему устройству и переводит его в режим работы PIO.
Однако в некоторых DVD-дисководах подобного рода проблемы могут возникнуть всего-навсего из-зи поцарапаных дисков, а перекрученный или поврежденный IDE-кабель повышает вероятность возникновения ошибок. Но ликвидация проблемы на аппаратном уровне не позволит вновь активировать DMA-режим в настройках оперционной системы. Не спешите переустанавливать Windows после устранения причины аппаратных сбоев. Откройте редактор реестра. Найдите ключ MasterIdDataChecksum или SlaveIdDataChecksum - в зависимости от того как сконфигурировано ваше устройство. Удалите зачение ключа и перезагрузите операционную систему. Windows снова попытается "заговорить" с устройством, используя самый быстрый из режимов DMA.
CD-ROM постоянно сбрасывается в PIO режим, и не хочет выставляться обратно в UDMA
Это происходит если XP обнаруживает что устройство не стабильно работает в выбранном для него режиме. Определяется это по количеству ошибок чтения, получаемых с привода. Обычно это означает что привод находится в плохом состоянии, и про правде ему надо бы на покой. Но выбрасывать вроде бы работающий привод жалко, поэтому такие устройства можно встретить в машинах наших читателей. Хотя, благодаря механизмам контроля ошибок, многие такие приводы могут работать долго, счастливо и беспроблемно, не смотря на мнение XP о них. Единственное, что портит кровь их владельцам, это постоянные тормоза системы, из за PIO режима. У меня нет полной уверенности, как работает и чем управляется система контроля ошибок в XP, поэтому я не могу гарантировать что этот совет сработает во всех случаях. Но попробовать можно.
Для отключения режима отслеживания ошибок можно попробовать выставить в 0 ключ ErrorControl расположенный по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\
Для того что бы вернуть режим UDMA, лучше всего удалить и поставить заново IDE контролёр из Device Manager. Но можно вновь обратится к реестру. Параметры контролёра определяются в реестре, по адресу
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}
Внутри этой ветки находится 4 папки. В том числе и
0000 – отвечает за сам контролёр.
0001 – отвечает за Secondary IDE Chanell.
0002 – отвечает за Primary IDE Chanell.
Выбираем папку которая отвечает за нужный нам канал, и заходим в неё. Каждому из установленных устройств, соответствуют по два ключа, MasteDeviceTimingModeAllowed и SlaveDeviceTimingModeAllowed (или UserMasteDeviceTimingModeAllowed и UserSlaveDeviceTimingModeAllowed, если режимы выбирались вручную), определяющие в каком максимальном режиме разрешается работать Master и Slave устройства, установленные на контролёре, и MasterDeviceTimingMode и SlaveDeviceTimingMode, которые определяют в каком режиме реально работают Slave и Master устройства. Для того что бы разрешить использовать устройство в UDMA режиме, MasterDeviceTimingModeAllowed (или Slave…, зависит от того к чему диск подключен) должно иметь значение 0хffffffff. Если оно будет 0х0000001f, то устройство сможет работать только в PIO режиме. Убедившись что этот ключ стоит правильно, выставляем MasterDeviceTimingMode, определяя в каком режиме должен работать привод. Возможны следующие варианты (цифры в HEX):
0x10010 режим UDMA Mode 5 (ATA100).
0x8010 режим UDMA Mode 4 (ATA66).
0x2010 режимы UDMA Mode 2 (ATA33).
0x0410 режим Multi-Word DMA Mode 2 и PIO 4.
Кроме этого, UDMA Mode 4 можно включить 0xffff, а UDMA Mode 5 – 0xfffff. Выставляйте нужное, и перезагружайтесь, диск должен перейти в требуемый режим.