PIO и DMA

Категория: Жёсткий диск / Железо и периферия
Добавил: access_timeОпубликовано: 1-09-2011 visibilityПросмотров: 52 505 chat_bubble_outlineКомментариев: 66

PIO (Programmable Input/Output) – очень старый и имеющий много существенных недостатков режим работы устройств, при передачи данных жёсткими дисками и приводами CD/DVD задействуется процессор, конечно это уменьшает производительность. В 1990 годах появляется режим обмена данными, использующий прямой доступ к памяти DMA (Direct Memory Access), центральный процессор уже не используется и устройства обращаются напрямую к основной памяти, что увеличивает быстродействие системы в целом в несколько раз.


PIO и DMA


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


На первом же системном блоке работающем в режиме PIO, мы увидели, что хард подключен с помощью 40-жильного интерфейсного кабеля, для работы DMA нужен 80-жильный шлейф IDE, заменяем и вопрос решается. На другом компьютере, стоял новый жесткий диск, Western Digital интерфейса подсоединения SATA 250 GB и на нём находилась операционная система Windows XP, вторым Seagate Barracuda 80GB, старого интерфейса IDE и оба работали в режиме PIO. Стоило убрать устаревший винчестер IDE и новый SATA работал в режиме DMA.


В принципе старый хард можно было убрать, но вопрос бы остался нерешённым. Прежде чем переустанавливать драйвера на материнскую плату или саму Windows, удалять первичные и вторичные каналы IDE, можно сказать плясать с бубном, я стал вспоминать что где-то, читал о подобной проблеме и о том, как её решили.
А решили её банально, умные люди. Два жёстких диска, нового образца SATA и старого IDE будут работать вместе, в режиме DMA, если они одного производителя.


У меня дома был хард Western Digital, интерфейса IDE, на 40GB, мы установили его в системный блок вместо прежнего и они оба заработали в режиме DMA, вот так был решён конфликт устройств. Что ещё можно предпринять в случае если Windows XP перевела работу ваших устройств в более медленный режим PIO, в принципе все методы, которые можно применить, описаны в нашей статье Тормозит жесткий диск, кроме одного, это редактирование реестра, его и рассмотрим сейчас.

Вообще метод рисковый, можно не загрузиться, поэтому сделайте лучше всего бэкап системы, например в Acronis.
Нам нужен куст HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\, далее создаём ключ ErrorControl со значением равным 0 и перезагружаемся и удаляем в диспетчере устройств в пункте IDE ATA/ATAPI контроллеры, все Первичные и Вторичные каналы IDE.
Далее следующий куст
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}, тут нам нужны папки
0000 –  сам контролер;
0001 –  Secondary IDE Chanell;
0002 –  Primary IDE Chanell;
Заходим в папки, каждая из них отвечает за нужный нам канал, здесь нам нужны ключи.
MasteDeviceTimingModeAllowed
SlaveDeviceTimingModeAllowed
Присваиваем им значение 0хffffffff.
Далее ещё ключи
MasterDeviceTimingMode
SlaveDeviceTimingMode
Согласно поддерживаемому UDMA-режиму:
UDMA Mode 2 – 0×2010
UDMA Mode 4 – 0×8010
UDMA Mode 5 – 0×10010
UDMA Mode 6 – 0xffff
Перезагрузка.

tagsКлючевые слова
     Рекомендуем другие статьи по данной теме
Ctrl
Enter
Заметили ошибку
Выделите и нажмите Ctrl+Enter

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

Назад 1 2 Вперед

Комментарии (66)

  1. img
    19 мая 2012 22:56 Max
    Гость
    Не пойму в чём дело, винт как то странно работает, допустим при установке игр и программ начинаются лаги в системе, скорость при копировании опускается с 60 до 30 это нормально вообще? Barracuda Green 2000DL003 на 2Тб диск
    Цитировать replyОтветить
  2. img
    25 апреля 2012 23:30 admin
    Администратор
    У вас может материнка новая, Фото на почту послал, а оно назад пришло, говорят такого polegaev.v@mai.ru нет.
    Цитировать replyОтветить
  3. img
    25 апреля 2012 23:09 valentin
    Гость
    как открыть свойства первичные каналы IDE? у меня такого вообще нету! и ни как ни могу сделать!
    Цитировать replyОтветить
  4. img
    15 апреля 2012 19:12 admin
    Администратор
    Вам спасибо что отписались.
    Цитировать replyОтветить
  5. img
    15 апреля 2012 15:46 mixeitch
    Гость
    Всё, проблема решена) оказывается на харде в разъёме контакт отпал (он 4 года назад тоже отпадал, но тогда мне сделали его), вот сейчас снова пришлось вооружаться паяльником. Теперь же всё летает просто))) так что спасибо за проявленное внимание!
    Цитировать replyОтветить
  6. img
    13 апреля 2012 21:34 admin
    Администратор
    Bus Mastering
    mixeitch просто ваш винчестер неисправный, я так думаю.
    На втором системнике он уже должен в dma работать.
    Цитировать replyОтветить
  7. img
    13 апреля 2012 21:17 mixeitch
    Гость
    Подсоединил. На втором системнике мать - GA-8IPE 1000 и хард, с которого винду запустил - Maxtor ata/133. Он кстати работает в dma 5, а проблемный хард так и остался в pio. Может в биосе в настройках изменить надо? но я не нашёл ничего похожего там на dma
    Цитировать replyОтветить
  8. img
    13 апреля 2012 16:54 admin
    Администратор
    mixeitch у вас устройство в режим PIO переводит Windows, что-то ей не нравится, а вы не пробовали винчестер к другому системнику подсоединять? БИОС при подобной неисправности ни разу не прошивал, вообше рискованно для материнки.
    Цитировать replyОтветить
  9. img
    13 апреля 2012 14:59 mixeitch
    Гость
    Переустановил. Проблема так же осталась. Скажите, а прошивка биоса может помочь?
    Цитировать replyОтветить
  10. img
    12 апреля 2012 07:23 mixeitch
    Гость
    Да, возможно. Только я её недавно поставил, не думаю что проблема в ней. Но всё равно переустановлю, ведь ничего не потеряю.
    Цитировать replyОтветить
  11. img
    11 апреля 2012 22:56 admin
    Администратор
    mixeitch у вас нормальные комплектующие, особых проблем с ними никто из моих знакомых не помнит, скажите, вам можно винду переустановить.
    Цитировать replyОтветить
  12. img
    11 апреля 2012 18:21 mixeitch
    Гость
    Материнка P4VMM2
    Хард Seagate Barracuda 7200.10 на 80Gb
    Цитировать replyОтветить
  13. img
    11 апреля 2012 16:48 admin
    Администратор
    mixeitch если вам не трудно, можно узнать, что за хард у вас и что за материнка.
    Цитировать replyОтветить
  14. img
    11 апреля 2012 16:23 mixeitch
    Гость
    При изменении значения в MasterDeviceTimingModeAllowed на 0хffffffff и в MasterDeviceTimingMode на 10010 или 8010 режим меняется. Но после перезагрузке снова переходит на PIO.
    Цитировать replyОтветить
  15. img
    10 апреля 2012 23:50 admin
    Администратор
    2. После при удалении каналов требуется перезагрузка. Да нужна перезагрузка!
    Ключам
    MasteDeviceTimingModeAllowed
    SlaveDeviceTimingModeAllowed
    Нужно присвоить значение 0хffffffff

    UDMA Mode 2 – 02010 pежимы UDMA Mode 2 (ATA33).
    UDMA Mode 4 – 08010 pежим UDMA Mode 4 (ATA66).
    UDMA Mode 5 – 010010 pежим UDMA Mode 5 (ATA100).

    Цитировать replyОтветить
  16. img
    10 апреля 2012 21:06 mixeitch
    Гость
    Уважаемый Admin. У меня первичный канал работает в PIO, а вторичный - DMA. Вышеописанные методы не помогли перевести первичный в режим DMA, решил делать последним способом, через реестр. Но тут столкнулся с несколькими проблемами:
    1. При создании ключа ErrorControl оказалось, что он уже есть. Я изменил значение и перезагрузился.
    2. После при удалении каналов требуется перезагрузка. Тут надо перезагружаться снова или нажимать "Нет" и править HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11
    CE-BFC1-08002BE10318} ?
    3. В данной ветке оказалось, что отсутствуют некоторые папки (0002–Primary IDE Chanell - видимо потому что я удалил уже Вторичный канал и не перезагрузился)
    4. Далее неясен UDMA-режим:
    UDMA Mode 2 – 02010
    UDMA Mode 4 – 08010
    UDMA Mode 5 – 010010
    UDMA Mode 6 – 0xffff
    Ничего подобного в данной ветке я не нашёл.

    Очень прошу помочь разобраться в данной проблеме, т.к. вы последняя надежда)

    P.S.: ссылка на скрин реестра http://clip2net.com/s/1NhrX
    Цитировать replyОтветить