Режим pio dma windows 10

Не хочу выходить на улицу, я там никого не знаю…

Если жёсткий диск стал внезапно тормозить. Самопроизвольное включение режима PIO и как с ним бороться

23.07.13 20:36 / Обновлено 20.09.14 03:32 | Версия для печати Windows | Твики | ♼REC | Железо

Винчестер подключается к материнской плате кабелем. Этот кабель, по сути, соединяет электронику винчестера с контроллером дисков на материнской плате. Тип кабеля (IDE, SATA, . ) не имеет значения. Да, у каждого типа кабеля есть свои физические ограничения по передаче данных, но это указывает лишь на то, под какой поток данных затачивалось «железо» на его концах.

Дисковый контроллер умеет работать с дисками в нескольких разных режимах. Электроника винчестера, в свою очередь, тоже поддерживает разные режимы работы с дисковым контроллером. Наборы режимов диска/контроллера могут несовпадать и, чаще всего, именно так и бывает.

По умолчанию, операционной системой выбирается наиболее скоростной режим работы из тех, что одновременно поддерживает и контроллер, и диск.

Режимы передачи данных: PIO и DMA/UDMA

Для многих понятнее игровые аналогии, поэтому воспользуюсь одной из них.

Все знают, что 3D бывает программное (Software Rendering) и аппаратное (Direct3D, OpenGL).

В программном 3D каждый кадр высчитывается процессором, а видеокарта отвечает только за вывод полученной картинки на экран. Трёхмерные просчёты используют дикое количество математики, что сильно нагружает процессор, выдавая при этом достаточно посредственный результат. Почему так происходит? Дело в том, что Центральный Процессор (ЦП) — он универсальный, то есть, приспособлен под вычисления абсолютно разного рода. Трёхмерные вычисления представляют собой лишь узкий класс задач, которые способен выполнять ЦП. И получается, что универсальный ЦП работает с графикой неоптимально.

В случае аппаратного 3D процессор накидывает в видеокарту примитивы (текстуры, модели и т.д.) и даёт команды на их обработку, а построение сцены и красивые эффекты делает уже сама карта — с помощью своего, графического спецпроцессора (GPU, ГП), заточенного как раз под такие задачи. Вычисления на нём идут заметно быстрее, при этом центральный процессор не нагружается.

Так вот, PIO — это типа программного 3D: вся работа с диском осуществляется через ЦП. Очень медленно и ресурсоёмко.
А DMA — аппаратная обработка данных, использующая всевозможные «ускорители». Лишь бы они поддерживались контроллером и самим диском.

Windows

Винда работает с дисками в режиме DMA. Ну, как правило.

При определённых условиях (например, если произошло несколько специфических ошибок чтения-записи) винда переключает режим работы с диском в PIO. Сразу, намертво и без возможности реабилитации.

После этого заставить систему работать с диском в режиме DMA стандартными способами нельзя.
Про нестандартные — чуть ниже.

Симптомы того, что винда переключила работу с винчестером в режим PIO

  • Система начала жутко тормозить на дисковых операциях. Скорость работы с диском упала в 2-3 раза.
  • При дисковых операциях стал непомерно грузиться процессор. В «Диспетчере задач Windows» процесс «Система» (или процесс «Interrupts» в утилите «Process Explorer») занимает 80-90% процессорного времени.
  • Резкость и внезапность происходящего. Ещё вчера / 5 минут назад система работала как обычно, а тут — на тебе.

В современных реалиях, когда жёсткие диски являются самыми медленными устройствами компьютера, «узким местом», тормозящим работу программ — даже двукратное падение их скорости может стать катастрофическим.

Убеждаемся, что винда переключила работу с винчестером в режим PIO

Открываем «Диспетчер устройств» в «Консоли управления» компьютером.
ПКМ на «Мой компьютер» (на рабочем столе или в панели «Пуск», не имеет значения) → «Управление».

Раскрываем в дереве ветку контроллера диска («IDE ATA/ATAPI контроллеры») и находим канал, к которому подключен наш винт.
Давим ПКМ → «Свойства» (или просто делаем двойной клик левой кнопкой мыши)

Если «Режим передачи» установлен в «DMA, если доступно», а по факту винчестер работает в режиме PIO (см. картинку ниже), то всё плохо, и это наш случай.

Читайте также:  Возможно модуль msvcp71 dll не совместим с версией windows

Возвращаем режим DMA/UDMA

Для исправления ошибки достаточно удалить инвалидное устройство и установить его заново. Сделать это можно из того же «Диспетчера устройств».

Или лезем в реестр.

В реестре («Пуск» → «Выполнить» → regedit ) надо зайти в ветку по адресу:

0000 — настройки самого контроллера.
0001 — настройки первичного канала (Primary IDE Chanell).
0002 — настройки вторичного канала (Secondary IDE Chanell).

MasterDeviceTimingModeAllowed
— максимальный по скорости режим, в котором разрешено работать основному (Master) устройству в канале. По сути, значение ключа представляет собой бинарную маску. Ограничивает выбор «Режимов передачи» из диалогового окна.

MasterDeviceTimingMode
— текущий режим работы основного устройства в канале. Соответствует параметру «Текущий режим передачи» диалогового окна.

Те же самые ключи, начинающиеся со Slave , а не Master действуют для подчинённого устройства в канале:

Если в диалоговом окне «Тип устройства» был выбран вручную, соответствующие настройки хранятся в ключах с префиксом User:

  • UserMasterDeviceTimingModeAllowed
  • UserMasterDeviceTimingMode
  • UserSlaveDeviceTimingModeAllowed
  • UserSlaveDeviceTimingMode

Значение любого ключа [. ]DeviceTimingModeAllowed должно быть равно 0xffffffff . Это означает, что выбранное устройство может работать в любом режиме передачи данных, без ограничений.

Если значение ключа равно 0x00000001f (HEX 1f), то устройство может работать только в режиме PIO.

Меняем значение нужного [. ]DeviceTimingModeAllowed на » ffffffff » и перезагружаемся.

Дополнительно

Коды режимов работы:

0х0000001f — PIO
0x00000410 — Multi-Word DMA Mode 2 и PIO 4.
0x00002010 — UDMA Mode 2 (ATA33).
0x00008010 — UDMA Mode 4 (ATA66). Для включения можно использовать маску » 0x0000ffff »
0x00010010 — UDMA Mode 5 (ATA100). Для включения можно использовать маску » 0x000fffff «

Версии ATA/ATAPI (. 4,5,6. ) — это версии ATA/ATAPI спецификации утверждаемые комитетом X3T13. А PIO (Programmed Input-Output) и DMA/UDMA — это режимы передачи данных. Одно с другим никак не связано. Режимы PIO подразумевают обязательное задействование CPU при передаче данных — при чтении данных с носителя, CPU их читает из порта контроллера (команда IN процессора), при записи — CPU пишет в порт (команда OUT). При DMA (UDMA) режимах CPU только инициализирует пересылку (а предварительно еще и контроллер DMA) — всю остальную работу выполняют контроллер DMA (Direct Memory Access) и контроллер IDE (в режиме Bus Master). Понятно что последний вариант выгоднее — меньше загрузка процессора — поэтому PIO режимы после 1995 года никто больше не развивал, и в утвержденных ATA/ATAPI спецификациях (мне все равно, кто чего предлагал на заседаниях X3T13) PIO-5 никогда не было. А UltraDMA 44 — это UltraDMA 3 — этот режим существует, просто им почти никто не пользуется (так как его поддержка есть везде, где есть UDMA 4 — 66). Кстати ATA/ATAPI-6 еще не утвержден, этот документ существует в предварительной версии, так называемый working draft, и возможно еще будет меняться (но вряд-ли туда добавят PIO-5). Последний из утвержденных — версии 5. И UDMA66 появилось при ATA-4, а UDMA100 — при ATA-5. В спецификациях есть рекомендации по применению режимов передачи данных, а вовсе не обязательные требования их поддержки. Есть винты соответствующие ATA-5, но поддерживающие только UDMA66 (например Quantum Fireball+ LM). А еще есть CD-ROM’ы с поддержкой UDMA33 и с соответствием ATAPI-4 и 5. Начиная с версии 4, спецификации ATA и ATAPI объединили в один документ.

Это происходит если XP обнаруживает что устройство не стабильно работает в выбранном для него режиме. Определяется это по количеству ошибок чтения, получаемых с привода. Обычно это означает что привод находится в плохом состоянии, и про правде ему надо бы на покой. Но выбрасывать вроде бы работающий привод жалко, поэтому такие устройства можно встретить в машинах наших читателей. Хотя, благодаря механизмам контроля ошибок, многие такие приводы могут работать долго, счастливо и беспроблемно, не смотря на мнение XP о них. Единственное, что портит кровь их владельцам, это постоянные тормоза системы, из за PIO режима. У меня нет полной уверенности, как работает и чем управляется система контроля ошибок в XP, поэтому я не могу гарантировать что этот совет сработает во всех случаях. Но попробовать можно.
Для отключения режима отслеживания ошибок можно попробовать выставить в 0 ключ ErrorControl расположенный по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\

Для винчестеров данная рекомендация не работает, не помогает от вылетов в PIO.

Читайте также:  Vpn для дома windows

Отключение режима PIO.

Не могу поднять жёсткий диск из PIO режима
После установки Windows ХР 32-битной жёсткий диск упал в PIO режим. Редактирование редактора.

Как отключить режим PIO?
Недавно начал тупить комп.Я порылся по интернету понял что у меня на жестком, на первичном канале.

Автоматически меняется режим UDMA на PIO
Здравствуйте, помогите пожалуйста решить проблему! У меня очень долго записывает дисковод.. Из-за.

Перевести диск в PIO
Начну с начала. Система стала тормозить под нагрузкой на винчестер(1.5тб, не системный). Когда.

Решение

Жесткий диск или CD/DVD-дисковод компьютера, последовательно переключается в более медленные режимы DMA и, наконец, в PIO. Что отражается в диспетчере устройств.

После 6-и ошибок истечения времени ожидания или CRC драйвер Windows IDE/ATAPI последовательно приводит скорость подключения с самого быстрого режима DMA к более медленному, а затем и к PIO.

Для CD/DVD-ROM отключить программный корнтроль ошибок в Windows (аппаратный, осуществляемый контроллером самого дисковода, естественно останется):

Для хардов включить режим, когда в отсутствие ошибок их счётчик сбрасывается; т. е. режим DMA будет переключаться, только если ошибки идут постоянно. В разделе реестра

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<4 d36e96a-e325-11ce-bfc1-08002be10318>]
в подразделах «0001» и «0002»
«ResetErrorCountersOnSuccess»=dword:1

там же, сбросить счётчик ошибок:

Теперь, что делать, если хард/CD/DVD-ROM уже переключился в PIO:

Проверьте в тех же разделах параметры MasterDeviceTimingModeAllowed и SlaveDeviceTimingModeAllowed. Должны иметь значеие ffffffff (в шестнадцатиричной системе). Если оно равно 0000001f, устройство будет работать только в PIO. Тогда меняйте на ffffffff, и в параметре, соответственно, MasterDeviceTimingMode или SlaveDeviceTimingMode укажите режим DMA, в котором диск/дисковод должен работать:
0x10010 — соответствует режиму UDMA Mode 5 (ATA100).
0x8010 — UDMA Mode 4 (ATA66).
0x2010 — UDMA Mode 2 (ATA33).
0x0410 — Multi-Word DMA Mode 2

Перезагрузите комп. Проблема решена навсегда.

Возможные подводные камни: A) вы точно не знаете, в каком режиме должен работать хард/дисковод; B) вы всё сделали правильно, но после перезагрузки ничего не поменялось (маловероятно, но вдруг…).

В этом случае, сначала удалите из списка устройств IDE-контроллер, и перезагрузитесь. Windows заново найдёт и переуствновит драйвер IDE-контроллера, при этом все устройства встанут в DMA-режимы (если конечно будет указано «режим DMA, если доступно»).

После этого лезте в реестр и проделайте все шаги, кроме изменения параметров MasterDeviceTimingMode и SlaveDeviceTimingMode, и перезагрузитесь ещё раз. Теперь точно всё.

Решение

для Win XP
Дополнительная информация
Исправление, описанное в этой статье, вносит следующие изменения.• В Windows 2000 запросы на чтение к дискам ATA иногда выдаются с указанием предельного времени ожидания в четыре секунды. Это может привести к ошибке при выходе компьютера из спящего режима. Время ожидания может истечь, поскольку обычно диски раскручиваются дольше за 4 секунд. Поэтому значение времени ожидания было увеличено до 10 секунд.

В Windows XP и Windows Server 2003 значение времени ожидания всегда равно 10 секундам.
• Для изменения режима передачи (с быстрого на медленный режимы DMA , а иногда — на режим PIO) при возникновении ошибок истечения времени ожидания и ошибок CRC применяется другая, менее интенсивная политика. В этом случае драйвер IDE/ATAPI (Atapi.sys) задает более медленный режим передачи после появления шести ошибок истечения времени ожидания или шести ошибок CRC. Когда с помощью данного исправления реализуется новая политика, драйвер Atapi.sys задает более медленный режим передачи только после появления шести последовательных ошибок истечения времени ожидания или шести ошибок CRC. Новая политика реализуется только в том случае, если существует параметр реестра, описанный ниже.

Чтобы реализовать другое поведение (изменение режима передачи на более медленный после появления 6 последовательных ошибок истечения времени ожидания или ошибок CRC вместо учета общего количества этих ошибок), после установки исправления необходимо внести изменения в реестр, как это описано ниже.

Внимание! Неправильное использование редактора реестра может привести к возникновению серьезных неполадок, требующих переустановки операционной системы. Корпорация Майкрософт не несет ответственности за неправильное использование редактора реестра. При изменении реестра полагайтесь на свой опыт и знания.

Читайте также:  Перевести с английского windows

Выполните следующие действия, а затем закройте редактор реестра. 1. Выберите в меню Пуск пункт Выполнить, введите команду regedit и нажмите кнопку ОК.
2. Найдите и выделите следующий раздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<4 d36e96a-e325-11ce-bfc1-08002be10318>\0001
3. В меню Правка выберите пункт Создать, а затем — Параметр DWORD.
4. Введите строку ResetErrorCountersOnSuccess и нажмите клавишу ВВОД.
5. В меню Правка выберите команду Изменить.
6. Введите значение 1 и нажмите кнопку ОК.

Выполните следующие действия, а затем закройте редактор реестра. 1. Выберите в меню Пуск пункт Выполнить, введите команду regedit и нажмите кнопку ОК.
2. Найдите и выделите следующий раздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<4 d36e96a-e325-11ce-bfc1-08002be10318>\0002
3. В меню Правка выберите пункт Создать, а затем — Параметр DWORD.
4. Введите строку ResetErrorCountersOnSuccess и нажмите клавишу ВВОД.
5. В меню Правка выберите команду Изменить.
6. Введите значение 1 и нажмите кнопку ОК.

Примечание. Подразделы, перечисленные ранее, относятся к первичному и вторичному каналам IDE на компьютере, который имеет один IDE-контроллер. Если в компьютере существует два IDE-контроллера, подразделы для первичного и вторичного каналов IDE для каждого из двух контроллеров могут выглядеть следующим образом.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<4 d36e96a-e325-11ce-bfc1-08002be10318>\0002

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<4 d36e96a-e325-11ce-bfc1-08002be10318>\0005
Чтобы проверить правильность выбора подраздела, убедитесь, что параметр DriverDesc содержит строковое значение «Primary IDE Channel» или «Secondary IDE Channel».

так же нарыл ещё. А вобще судя по трабле, режим PIO включается в том случае когда с девайсом трабла на уровне железа.

Добавлено через 5 минут

CD-ROM постоянно сбрасывается в PIO режим, и не хочет выставляться обратно в UDMA.

Это происходит если XP обнаруживает что устройство не стабильно работает в выбранном для него режиме. Определяется это по количеству ошибок чтения, получаемых с привода. Обычно это означает что привод находится в плохом состоянии, и про правде ему надо бы на покой. Но выбрасывать вроде бы работающий привод жалко, поэтому такие устройства можно встретить в машинах наших читателей. Хотя, благодаря механизмам контроля ошибок, многие такие приводы могут работать долго, счастливо и беспроблемно, не смотря на мнение XP о них. Единственное, что портит кровь их владельцам, это постоянные тормоза системы, из за PIO режима. У меня нет полной уверенности, как работает и чем управляется система контроля ошибок в XP, поэтому я не могу гарантировать что этот совет сработает во всех случаях. Но попробовать можно.
Для отключения режима отслеживания ошибок можно попробовать выставить в 0 ключ ErrorControl расположенный по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\

Для того что бы вернуть режим UDMA, лучше всего удалить и поставить заново IDE контролёр из Device Manager. Но можно вновь обратится к реестру. Параметры контролёра определяются в реестре, по адресу

Внутри этой ветки находится 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. Выставляйте нужное, и перезагружайтесь, диск должен перейти в требуемый режим.

Оцените статью