Warning windows x64 detected pio mode supported on windows x86 only что за ошибка

Ветеран Броуновского движения

Если жёсткий диск стал внезапно тормозить. Самопроизвольное включение режима 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 минут назад система работала как обычно, а тут — на тебе.

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

Читайте также:  Подключение удаленного рабочего стола linux

Убеждаемся, что винда переключила работу с винчестером в режим 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.

Читайте также:  Gnu compiler collection linux

Режим PIO или как бороться с тем что жесткий диск начал тормозить

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

Включение режима DMA

Возможные режимы работы жесткого диска

У HDD есть возможность работать с данными в двух режимах: устаревший PIO и более новый DMA. Они кардинально отличаются принципом своей работы и, соответственно, скоростью обработки данных. Так в режиме PIO все данные обрабатываются при помощи процессора что сильно его нагружает и, как следствие, приводит к падению общей производительности системы. А вот режим DMA – это уже аппаратная обработка данных при которой используются разнообразные ускорители и ЦП в этом процессе не участвует.

Самопроизвольное переключение Виндовс на режим PIO и признаки этого

Windows по умолчанию работает с HDD в скоростном режиме DMA, но иногда из-за специфических ошибок самостоятельно переключается в режим PIO. Причем обратно включить DMA весьма проблематично и сделать это стандартными способами практически невозможно. Характерные признаки того, что Windows переключилась на работу с жестким диском в режим PIO это:

• Падение быстроты работы с HDD в несколько раз;
• Медленная скорость работы системы во время дисковых операций;
• Чрезмерная загрузка процессора (80-90%) при работе с жестким диском;
• Система начала «тормозить» резко. То есть еще час назад все было нормально, а потом резко появились проблемы.

На данный момент жесткий диск — это самое слабое место всей системы и падение его скорости работы даже в два раза приводит к катастрофическим последствиям. Для того чтобы убедиться, что Windows действительно переключилась на работу с жестким диском в медленный режим PIO нужно сделать следующее:

1. Нажмите на значок «Мой компьютер» правой клавишей мыши и выберите пункт «Управление»;


2. Раскройте ветку контроллера и найдите канал, к которому подключен ваш жесткий диск;
3. Нажмите на нем правую клавишу мыши, зайдите в «Свойства» и переключитесь на «Дополнительные параметры»;
4. Посмотрите на строку «Текущий режим передачи». Если там написано «Режим DMA», то значит все нормально, а вот если «Режим PIO», то вам придется проделать несколько несложных операций и вернуть диск в предпочтительный режим работы.

Включаем режим DMA

На самом деле добиться этого можно двумя способами. Первый из них довольно простой и вам потребуется всего лишь удалить неправильно работающее устройство, а затем перезагрузить компьютер. После этого Windows автоматически установит его заново и режим работы устройства вновь переключится на DMA.

Читайте также:  Узнать куда ведет символьная ссылка linux

Если по какой-то причине у вас не получается включить DMA первым способом, то тогда вам придется приложить немного больше усилий и использовать редактор реестра. Сделайте следующее:

  1. Нажмите Win+R и напечатайте в появившейся строке команду regedit;
  2. Перейдитепопути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<4D36Е96A-Е325-11CE-BFC1-08002BE10318>;

  1. Найдите строку MasterDeviceTimingModeAllowed.
  2. Если в колонке значение этой строки написано 0х00000001f, то это значит, что ваш жесткий диск действительно работает в режиме PIO;
  3. Поменяйте значение на 0xffffffff и перезагрузите компьютер.

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

Как включить режим Ultra DMA, выключить PIO. Hardware Interrupts грузит систему

Компьютер сильно тормозит, работать вообще не возможно. При этом индикатор доступа к HDD постоянно мигает, диспетчер задач показывает загрузку ЦП, а движения никакого? Если включить сторонний диспетчер, например Process Explorer то видно, что процесс Hardware Interrupts грузит систему на 50% и больше. Скорее всего ваш жесткий диск перешел в режим PIO. Это значит, что при чтении с диска после 6-и ошибок истечения времени ожидания Windows переводит скорость подключения контроллера IDE/ATAPI (HDD) с быстрого режима UDMA на медленный PIO и все начинает тормозить. Как обратно включить режим Ultra DMA? Как включить режим Ultra DMA

1. Чтобы узнать, в каком режиме винт, заходим в диспетчер устройств — IDE/ATAPI контроллеры — первичный(вторичный) канал и в дополнительных параметрах смотрим режим передачи — если PIO, то это он все тормозит и процесс Hardware Interrupts загружает процессор (у меня было 40-50%). Пробуем поставить режим «DMA если доступно» (причем это проделать во всех первичных и вторичных каналах) и перезагрузить систему. Немного поработать и проверить опять режим IDE/ATAPI контроллера. Если опять стоит режим PIO, то проверить шлейф винчестера и питание. Если не помогло, то решение простое — поменять винчестер или вариант 2:

2. Отключить контроль ошибок.

Заходим в реестр(меню Пуск-выполнить-regedit), далее в раздел
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\<4d36e96a-e325-11ce-bfc1-08002be10318>.

В подразделах 0001 и 0002 делаем так:

1. В меню правка Создать, параметр DWORD.
2. Введите строку ResetErrorCountersOnSuccess и нажмите клавишу ВВОД.
3. 2 раза щелкнуть по созданому параметру и ввести значение 1. Нажать Ок.

В этих же разделах проверить

Далее, проверьте, чтобы в этих же разделах параметры MasterDeviceTimingModeAllowed и SlaveDeviceTimingModeAllowed у вас имели значеие ffffffff (в шестнадцатиричной системе). И соответствующему параметру MasterDeviceTimingMode или SlaveDeviceTimingMode присвойте одно из значений:
0x10010 — соответствует режиму UDMA Mode 5 (ATA100).
0x8010 — UDMA Mode 4 (ATA66).
0x2010 — UDMA Mode 2 (ATA33).
0x0410 — Multi-Word DMA Mode 2

Перезагрузите систему. Вот и все! По идее, у вас должен всегда стоять режим Ultra DMA.

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

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

Но (еще одно но ), я вам рекомендую важную информацию копировать на другие носители, так как с HDD у вас проблемы.

Теперь о процессе Hardware Interrupts — процесс прерываний самого железа. Когда плохой винчестер, то он постоянно сообщает об ошибках чтения, вот и получаются эти прерывания. Процессор начинает заниматься исправлением этих ошибок, а не вашей задачей и начинаются тормоза.

Такое возможно и не только через винчестер. Можно в БИОСе попробовать поменять номера прерываний, но это отдельная история.

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