Режимы PIO и DMA

  • 18.08.2021
  • 159
  • 0
  • 1
  • 1
  • 0
Режимы PIO и DMA

Описание

Часто у пользователей возникает проблема очень медленной работы компьютера, особенно при записи и при чтении дисков, либо просто необоснованные «тормоза» системы при работе или загрузке. Причин возникновения этого может быть великое множество, сегодня предлагаю рассмотреть довольно распространенную – это неверный режим работы CD/DVD-ROM’а или жестких дисков, т.е. поговорим о PIO и DMA.

Что такое PIO и DMA?

PIO и DMA – это два режима работы жестких дисков, в общем случае любого привода.

PIO (Programmable Input/Output) – уже устаревший режим, для работы ему необходимо задействовать центральный процессор, что приводит к значительной потери производительности.

DMA (Direct Memory Access) – современный метод, который минует процессор и обращается напрямую к оперативной памяти, это позволяет значительно (в несколько раз) увеличить производительность и избавиться от надоедливых «тормозов». Режим DMA в различных вариантах уже давно используется в операционных системах, однако в Windows XP часто случается ситуация в которой DMA автоматически переключается в PIO и уже вывести его оттуда обычными методами не получится. Из-за чего возникает эта ситуация? В Windows XP внедрен механизм контроля ошибок, если при чтении с жесткого диска или др. привода слишком часто возникают ошибки, то система автоматически переходит в более медленный режим, где их процент меньше. Однако, Windows XP может перевести в такой режим и нормально работающее устройство исходя из известных только ей критериев.

Как сменить режим работы с PIO на DMA?

Итак, Ваша система стала существенно притормаживать – проверим режимы работы всех приводов:
1. Запускаем консоль «Управление компьютером» – правой кнопкой на «Мой компьютер» → в выпадающем меню выбираем пункт «Управление», либо через Панель управления.
2. Выбираем «Диспетчер устройств», справа выбираем IDE ATA/ATAPI контроллеры, откроется несколько строчек с контроллерами – нас интересуют Первичный и Вторичный каналы IDE

Заходим поочередно в свойства этих каналов (правой кнопкой на канале, строка «Свойства»), в закладку «Дополнительные параметры»

Здесь выделены две группы «Устройство 0» и «Устройство 1», в каждой есть строки «Режим передачи» – в ней должно быть выбрано «DMA, если доступно», далее строка «Текущий режим передачи», должно быть что-то типа «Режим ультра DMA: 5», если здесь стоит «Режим PIO», то это как раз наш случай и мы будем его исправлять. Если везде стоит режим ультра DMA, то у Вас все в порядке и дальнейшие действия можно не продолжать.

3. Для начала попробуем исправить вручную – в каждой строке «Режим передачи» ставим «DMA, если доступно», жмем «ОК» и перезагружаем компьютер. После включения вновь смотрим режимы работы каналов, если везде стоит DMA, то все в порядке, если остался PIO, то продолжаем дальше.
4. Вновь найдите Первичный и Вторичный каналы IDE и удалите их (правой кнопкой на каждом канале, в списке выбираем «Удалить»). Не бойтесь, все будет нормально работать. Снова перезагрузите компьютер – Windows XP найдет контроллеры и переведет их в быстрый режим работы, т.е в DMA. Проверте результат, везде должен стоять режим DMA.
5. Если все перечисленное не помогло и у Вас опять высвечивается «Режим PIO», тогда необходимо будет переставить драйвера для материнской платы – перезагрузиться и вновь проверить результат.
6. Ну и последний пункт, если после всех мучений «Режим PIO» так и не пропал, тогда придется поковыряться в реестре. Хочу отметить – производите какие-либо операции с реестром очень осторожно и внимательно, любое неправильное действие может привести к полной неработоспособности Вашей системы. Лучше всего сделать заранее бекап реестра. Будьте осторожны!!!
Для начала попробуйте отключить систему контроля ошибок. Для этого в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\, создайте ключ ErrorControl и установите его значение равным 0. После этого перезагрузитесь и выполните пункт №4.
Действуем дальше: открываем следующую ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318} в ней можно вручную выставить режим DMA. Здесь распологаются несколько папок 0000, 0001, 0002.
0000 – отвечает за сам контролер;
0001 – отвечает за Secondary IDE Chanell;
0002 – отвечает за Primary IDE Chanell;
Открываем папку для нужного нам канала. В ней находятся несколько ключей, для начала выбираем:
MasteDeviceTimingModeAllowed
SlaveDeviceTimingModeAllowed

и проставляем значение равное 0хffffffff.
После этого выставляем значение следующих ключей:
MasterDeviceTimingMode
SlaveDeviceTimingMode

в соответствии с следующими данными, в зависимости от поддерживаемого UDMA-режима:
UDMA Mode 2 – 0x2010
UDMA Mode 4 – 0x8010
UDMA Mode 5 – 0x10010
UDMA Mode 6 – 0xffff
После этого перезагрузитесь и проверьте результат – должно все нормально работать.

Была ли эта статья Вам полезна?

Добавить комментарий

Ваш адрес email не будет опубликован.

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.