Режимы PIO и DMA

  • 18.08.2021
  • 4 488
  • 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 рабочих дня.