- Если жёсткий диск стал внезапно тормозить. Самопроизвольное включение режима PIO и как с ним бороться
- Режимы передачи данных: PIO и DMA/UDMA
- Windows
- Симптомы того, что винда переключила работу с винчестером в режим PIO
- Убеждаемся, что винда переключила работу с винчестером в режим PIO
- Возвращаем режим DMA/UDMA
- Дополнительно
- Отключение режима PIO.
- Решение
- Решение
Не хочу выходить на улицу, я там никого не знаю…
Если жёсткий диск стал внезапно тормозить. Самопроизвольное включение режима 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 (см. картинку ниже), то всё плохо, и это наш случай.
Возвращаем режим 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.
Отключение режима 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 вместо учета общего количества этих ошибок), после установки исправления необходимо внести изменения в реестр, как это описано ниже.
Внимание! Неправильное использование редактора реестра может привести к возникновению серьезных неполадок, требующих переустановки операционной системы. Корпорация Майкрософт не несет ответственности за неправильное использование редактора реестра. При изменении реестра полагайтесь на свой опыт и знания.
Выполните следующие действия, а затем закройте редактор реестра. 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. Выставляйте нужное, и перезагружайтесь, диск должен перейти в требуемый режим.