Начну издалека.
Винчестер подключается к материнской плате кабелем. Этот кабель, по сути, соединяет электронику винчестера с контроллером дисков на материнской плате. Тип кабеля (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
) надо зайти в ветку по адресу:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}

Подветки:
0000
— настройки самого контроллера.
0001
— настройки первичного канала (Primary IDE Chanell).
0002
— настройки вторичного канала (Secondary IDE Chanell).
Ключи:
-
MasterDeviceTimingModeAllowed
— максимальный по скорости режим, в котором разрешено работать основному (Master) устройству в канале. По сути, значение ключа представляет собой бинарную маску. Ограничивает выбор «Режимов передачи» из диалогового окна. -
MasterDeviceTimingMode
— текущий режим работы основного устройства в канале. Соответствует параметру «Текущий режим передачи» диалогового окна.
Те же самые ключи, начинающиеся со Slave
, а не Master
действуют для подчинённого устройства в канале:
SlaveDeviceTimingModeAllowed
SlaveDeviceTimingMode
Если в диалоговом окне «Тип устройства» был выбран вручную, соответствующие настройки хранятся в ключах с префиксом 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 объединили в один документ.
http://forum.ixbt.com/topic.cgi?id=11:13794
Это происходит если XP обнаруживает что устройство не стабильно работает в выбранном для него режиме. Определяется это по количеству ошибок чтения, получаемых с привода. Обычно это означает что привод находится в плохом состоянии, и про правде ему надо бы на покой. Но выбрасывать вроде бы работающий привод жалко, поэтому такие устройства можно встретить в машинах наших читателей. Хотя, благодаря механизмам контроля ошибок, многие такие приводы могут работать долго, счастливо и беспроблемно, не смотря на мнение XP о них. Единственное, что портит кровь их владельцам, это постоянные тормоза системы, из за PIO режима. У меня нет полной уверенности, как работает и чем управляется система контроля ошибок в XP, поэтому я не могу гарантировать что этот совет сработает во всех случаях. Но попробовать можно.
Для отключения режима отслеживания ошибок можно попробовать выставить в 0 ключ ErrorControl расположенный по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\
http://old.windowsfaq.ru/ubb/Forum4/HTML/005268.html
Для винчестеров данная рекомендация не работает, не помогает от вылетов в PIO.
- Что такое Ultra-DMA, и зачем мне это надо?
- Hardware Interrupts загружают процессор
- Википедия: PIO
- Википедия: ATA
- Википедия: Прямой доступ к памяти
- DMA reverts to PIO
Комментарии
Гость
#cid69408
Ответить
"Для винчестеров данная рекомендация не работает, не помогает от вылетов в PIO." Хм, а зачем тогда статья, для общего развития?
Разве только чтобы починить CD-DVD:)
#cid69452
Ответить
#cid69408, Гость
Эта конкретная цитата — да, для общего развития.
Винда — закрытая система, и понять, почему диск вылетает в PIO, можно только опытным путём. Человек предположил, что за вылеты отвечает ключ ErrorControl в каталоге реестра CDFS (что уже вызывает вопросы, потому что CDFS это файловая система компакт-дисков). У меня есть тестовый экземпляр виндов, который вылетает в PIO постоянно, и на котором предложенное решение не подтвердилось.
Считаешь, это бесполезная информация, которую не надо было озвучивать?
Ключ ErrorControl, судя по названию, отключает/включает контроль ошибок при чтении или записи на CD.
Играясь с его настройками CD-DVD не починишь.
rexer
#cid69823
Ответить
Побольше бы таких статей.
Общее развитие - наше все.
ad003416
#cid89300
Ответить
Полезная и нужная статья . Она не для дебилов!
Гость
#cid89679
Ответить
Не читай пиздоболов все работает только что сделал
Константин
#cid89802
Ответить
Спасибо,очень хорошая и нужная статья побольше бы таких!!!
Сергей
#cid90296
Ответить
Какими программами можно протестировать жёсткий диск.Купил wd 640 g,64 кеш проработал месяца 4,после того как удалил с компа гигов 300 информации стал сильно тормозить жёсткий диск,как всегда хотелось бы его востановить.
imen
#cid90298
Ответить
#cid90296, Сергей
Обыкновенными.
Стандартными.
#cid90300
Ответить
#cid90296, Сергей
1. Посмотри данные SMART. Для этого можно использовать бесплатный дефрагментатор Piriform Defraggler, заодно проверишь и состояние ФС.
2. Часто тормоза возникают из-за ошибок на файловой системе. Сделай "chkdsk c: /r".
Делай сразу после смарта, но до дефрагментации: если на файловой системе есть ошибки, двигать файлы нельзя.
3. Проверь выравнивание логических разделов диска относительно его физических блоков. Лично я делаю это с помощью fdisk под линухами, под виндой ничего посоветовать не могу.
А возможно, при удалении файлов ты снёс что-то нужное системе. И тормоза из-за этого, а не из-за диска.
#cid90301
Ответить
#cid90298, imen
Виндовыми.
imen
#cid90302
Ответить
#cid90301,
Кросс-платформенные не годятся?
А живущее только на платформе самой распространнной ОС надо закапывать.
http://www.smartmontools.org/wiki/Download
imen
#cid90305
Ответить
#cid90300,
В такой формулировки ты в первую очередь поддерживаешь экосистему вирусов.
И плевать, что оно совпадает с чаяниями целевой аудитории.
А вот мне в подобной ситуации заслуживающий доверия товарищ рекомендовал проверить обновление firmware (правда там феерия ещё бóльшая, чем в первом случае).
А я бы здесь поинтересовался сначала размером блока (стандартный 512 bytes / 512 bytes или с поддержкой продвинутого формата 4 Кб)?
И 300 гигов удалено как? Одним файлом? Или OVER9000? Или же все 100500?
Уверен в правильности?
Как минимум некоторое время тому назад из-за некоторых… особенностей реализации (приводивших к созданию некорректной таблицы разделов) Handbook _не_ (!) рекомендовал использовать fdisk для разбиения диска.
В качестве более правильных инструментов рекомендовались cfdisk или parted.
А с учётом того, что формат разбиения dos пора бы уже закапывать, первый тоже уходит в архив.
Прекрасная иллюстрация совершенства платформы самой распространённой ОС.
Только мне кажется, что в этом случае помимо внешних признаков («тормозов») должна наблюдаться матерная ругань как в буфереядра, так и в системных журналах?
#cid90306
Ответить
#cid90302, imen
Я не слышал, чтобы в других системах самопроизвольно включался режим PIO.
Смотри на заголовок.
Если же ты про приложения в целом, как идеологию — то снова мимо. Существует масса отличных программ, доступных, к сожалению, только под виндами.
#cid90305, imen
У человека проблема, я предложил коротенькую инструкцию, способную помочь. Она не претендует на полноту.
Ты вон вообще намекнул про смартмонтулз, кинул ссылку и уплыл.
Эта заметка — про винды, про ошибку, которая случается на виндах и про исправление ошибки, которая случается на виндах.
Лично я ещё не сталкивался с необходимостью перепрошивки дисков, а вот в
уёбищности NTFSцелительной силе чекдиска — убеждаюсь постоянно.Напоминаю: мы всё ещё говорим про винды, да.
Непринципиально.
В правильности чего? Что мне удобнее fdisk? Используй что тебе нравится, я ж никому ничего не навязываю.
Нет, просто я такие вещи под виндой не делаю, поэтому и не знаю, какие программы там лучше использовать.
Да щаз. Это ж винды.
imen
#cid90308
Ответить
#cid90306,
Это _единственная_ возможная причина «тормозов жёсткого диска»?
И смотри не только заголовок, но и вопрос в комментарии. И свой же ответ на него ☺
Не мимо.
Именно они (главное конкурентное преимущество) держат на плаву экосистему последние… лет десять, если не больше.
От «отличного» решения вендо-специфичных проблем мне ни тепло, ни холодно.
Остальные же, с учётом реалий, в wine часто чувстсвуют себя как бы не лучше, чем на родной платформе.
Культура же (в _правильном_ смысле термина) корректной интеграции ППО в систему давно и безнадёжно утрачена. Поэтому попытки использования любого условно-работоспособного ППО на фрюниксах ведут к ересям, с соответствующими издержками.
Хуже. Она не претендует даже на достаточность для практического применения.
Дык там короткого описания достаточна. И ссылка, по которой тривиально в два хода промышляется дистрибутив.
В нулевом приближении этого достаточно.
Если же описывать методику анализа параметров SMART, то на это уйдёт куда больше, чем одна заметка.
Означает ли это, что на виндах нет необходимости в проверке манифеста (целостности и аутентичности) скачиваемых файлов?
Или что это (отсутствие данной привычки) не может способствовать распространению дистрибутивов с интеграцией разных «полезностей»?
А я вот, как раз на проверке SMART, сталкивался с проблемами (правда _скорее_ некритичными с прикладного уровня), вызванными… особенностью реализации прошивки.
Собственно у меня этот вопрос возник когда при сообщаемом SMART'ом нормальном времени long-теста в 126 минут за ~10 часов было отработано только 40% теста.
Угу. Причём не впираясь в тему заметки (диагноз не уникален и не подтверждён), а от более общей формулировки (тормозит диск(?)).
И хотя бы намётки плана решения проблемы (торможения системы) в целом интересны (увы) даже мне.
Фрагментация на виндах некритична с точки зрения производительности?
Выбора утилиты.
Удобство и правильность в данном контексте определяющей роли не играют.
Ибо проблема в… особенностях реализации предпочитаемой утилиты.
Нечто там нет журналов?
Или у целевой аудитории просто отсутствуют навыки работы с ними?
sav
#cid91514
Ответить
Спасибо огромное!!!
Помогло!
#cid91517
Ответить
#cid91514, sav
Дык!
Всегда пожалуйста.
Дмитрий
#cid91666
Ответить
Здравствуйте Уважаемые любители Желеэа ! судя по вашим комментариям Вы люди грамотные спору нет, так вот не могли бы Вы в краце объяснить мне ситуацию которую я Вам представлю : Завалялся было у меня старенький Barracuda 7200.7 40 Gb Model: 8T340014A , ну думаю подключу его проверю SMART и.т.п , материнка : ASUS P5LD2-VM SE, Подключил его в разъем IDE , так как на матери он один , отключил dvd привод, так же через SATA подключен еще один винт с системой , с которым все в порядке . После запустил программу Hard Disk Sentinel Pro открываю её и вижу: Здоровье диска 100% , Производительность 50% и в главном окне пишет что Ваш жесткий диск работает в режиме PIO, как мне преодолеть эту проблему. Установлена Wind 7-64 Ultimate, раньше с подобным не сталкивался и честно сказать даже не слышал о таком режиме, благодаря этому случайно попал сюда...Если не трудно прошу разрешить мою проблему.Самому очень интересно но очень все запутано . Спасибо с.Уважением...
Дмитрий
#cid91667
Ответить
Прошу прощения не ту метаринку указал !!! Материнская плата ASUS P5GC-MX 1333
Alex
#cid91678
Ответить
помогло!
Hardware Interrupts and DPCs в process explorer грузил процессор на 100% про проверке хэша bitcomet
надпись "Режим pio" сменилась на "неприменимо" но грузить ПЕРЕСТАЛО!
СПАСИБО!
#cid91680
Ответить
#cid91678, Alex
Пожалуйста :)
Проверь диск, вылет в PIO — всегда тревожный признак.
imen
#cid91682
Ответить
#cid91680,
Только мне кажется, что здесь не хватает ссылки на рекомендуемое описание методики интерпретации вывода S.M.A.R.T. (https://www.smartmontools.org)?