Начну издалека.

Винчестер подключается к материнской плате кабелем. Этот кабель, по сути, соединяет электронику винчестера с контроллером дисков на материнской плате. Тип кабеля (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.



Гость
2013.07.24 07:30:35
#cid69408

Ответить

"Для винчестеров данная рекомендация не работает, не помогает от вылетов в PIO." Хм, а зачем тогда статья, для общего развития?
Разве только чтобы починить CD-DVD:)

2013.07.24 16:55:35
#cid69452

Ответить

#cid69408, Гость

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

Эта конкретная цитата — да, для общего развития.

Винда — закрытая система, и понять, почему диск вылетает в PIO, можно только опытным путём. Человек предположил, что за вылеты отвечает ключ ErrorControl в каталоге реестра CDFS (что уже вызывает вопросы, потому что CDFS это файловая система компакт-дисков). У меня есть тестовый экземпляр виндов, который вылетает в PIO постоянно, и на котором предложенное решение не подтвердилось.

Считаешь, это бесполезная информация, которую не надо было озвучивать?

Разве только чтобы починить CD-DVD:)

Ключ ErrorControl, судя по названию, отключает/включает контроль ошибок при чтении или записи на CD.
Играясь с его настройками CD-DVD не починишь.

rexer
2013.07.29 16:27:45
#cid69823

Ответить

Побольше бы таких статей.
Общее развитие - наше все.

ad003416
2014.05.15 21:03:56
#cid89300

Ответить

Полезная и нужная статья . Она не для дебилов!

Гость
2014.09.19 22:57:37
#cid89679

Ответить

Не читай пиздоболов все работает только что сделал

Константин
2014.10.13 22:37:19
#cid89802

Ответить

Спасибо,очень хорошая и нужная статья побольше бы таких!!!

Сергей
2015.02.18 20:28:24
#cid90296

Ответить

Какими программами можно протестировать жёсткий диск.Купил wd 640 g,64 кеш проработал месяца 4,после того как удалил с компа гигов 300 информации стал сильно тормозить жёсткий диск,как всегда хотелось бы его востановить.

imen
2015.02.19 17:59:04
#cid90298

Ответить

#cid90296, Сергей

Какими программами можно протестировать жёсткий диск.

Обыкновенными.
Стандартными.

[I] sys-apps/smartmontools
Available versions: 6.1 ~6.2 6.3 **9999 {caps minimal selinux static}
Installed versions: 6.3(10:22:25 05.11.2014)(-caps -minimal -selinux -static)
Homepage: http://smartmontools.sourceforge.net/
Description: Self-Monitoring, Analysis and Reporting Technology System (S.M.A.R.T.) monitoring tools

2015.02.19 23:52:44
#cid90300

Ответить

#cid90296, Сергей

Какими программами можно протестировать жёсткий диск.Купил wd 640 g,64 кеш проработал месяца 4,после того как удалил с компа гигов 300 информации стал сильно тормозить жёсткий диск,как всегда хотелось бы его востановить.

1. Посмотри данные SMART. Для этого можно использовать бесплатный дефрагментатор Piriform Defraggler, заодно проверишь и состояние ФС.

2. Часто тормоза возникают из-за ошибок на файловой системе. Сделай "chkdsk c: /r".
Делай сразу после смарта, но до дефрагментации: если на файловой системе есть ошибки, двигать файлы нельзя.

3. Проверь выравнивание логических разделов диска относительно его физических блоков. Лично я делаю это с помощью fdisk под линухами, под виндой ничего посоветовать не могу.

А возможно, при удалении файлов ты снёс что-то нужное системе. И тормоза из-за этого, а не из-за диска.

2015.02.19 23:54:29
#cid90301

Ответить

#cid90298, imen

Обыкновенными.
Стандартными.

Виндовыми.

imen
2015.02.20 08:59:17
#cid90302

Ответить

#cid90301,

Виндовыми.

Кросс-платформенные не годятся?
А живущее только на платформе самой распространнной ОС надо закапывать.

Install the Windows package

Download and run the latest smartmontools ​NSIS-installer (*.win32-setup.exe) from ​here. More recent Windows test releases build from SVN snapshots are available ​here. http://smartmontools.no-ip.org/smartmontools/
The default install type "Full" creates start menu shortcuts including an uninstaller, and adds the install directory to the PATH variable. The install type "Extract files only" is useful to unpack a "portable" version without affecting the Windows registry. The files can also be unpacked by ​7-Zip which is also available for ​Linux.
The 32-bit version of smartmontools usually works also on 64-bit versions of Windows. Starting with smartmontools 5.43, the installer also provides 64-bit executables. These may be useful if the 32-bit subsystem is not available (e.g. 64-bit Windows Recovery CD).
Virus scanners occasionally produce false positive virus reports for NSIS-installers, see the ​NSIS False Positives page. If this is the case for the smartmontools installer, please send a report to the smartmontools-support mailing list.
To use the smartd warning mail feature, download and install the ​Blat mail utility. See the ​WPKG-Wiki for info about automated deployment of smartmontools and Blat.
Alternatively you could use the ​Smartmontools for Windows Package by Ozy de Jong. This package provides user friendly support for smartd configuration and unattended setup. http://www.netpower.fr/smartmontools

http://www.smartmontools.org/wiki/Download

imen
2015.02.20 21:59:25
#cid90305

Ответить

#cid90300,

1. Посмотри данные SMART. Для этого можно использовать бесплатный дефрагментатор Piriform Defraggler, заодно проверишь и состояние ФС.

В такой формулировки ты в первую очередь поддерживаешь экосистему вирусов.
И плевать, что оно совпадает с чаяниями целевой аудитории.

2. Часто тормоза возникают из-за ошибок на файловой системе. Сделай "chkdsk c: /r".

А вот мне в подобной ситуации заслуживающий доверия товарищ рекомендовал проверить обновление firmware (правда там феерия ещё бóльшая, чем в первом случае).

3. Проверь выравнивание логических разделов диска относительно его физических блоков.

А я бы здесь поинтересовался сначала размером блока (стандартный 512 bytes / 512 bytes или с поддержкой продвинутого формата 4 Кб)?
И 300 гигов удалено как? Одним файлом? Или OVER9000? Или же все 100500?

Лично я делаю это с помощью fdisk под линухами

Уверен в правильности?
Как минимум некоторое время тому назад из-за некоторых… особенностей реализации (приводивших к созданию некорректной таблицы разделов) Handbook _не_ (!) рекомендовал использовать fdisk для разбиения диска.
В качестве более правильных инструментов рекомендовались cfdisk или parted.
А с учётом того, что формат разбиения dos пора бы уже закапывать, первый тоже уходит в архив.

под виндой ничего посоветовать не могу.

Прекрасная иллюстрация совершенства платформы самой распространённой ОС.

А возможно, при удалении файлов ты снёс что-то нужное системе. И тормоза из-за этого, а не из-за диска.

Только мне кажется, что в этом случае помимо внешних признаков («тормозов») должна наблюдаться матерная ругань как в буфереядра, так и в системных журналах?

2015.02.20 22:53:38
#cid90306

Ответить

#cid90302, imen

Кросс-платформенные не годятся?
А живущее только на платформе самой распространнной ОС надо закапывать.

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

Если же ты про приложения в целом, как идеологию — то снова мимо. Существует масса отличных программ, доступных, к сожалению, только под виндами.

#cid90305, imen

У человека проблема, я предложил коротенькую инструкцию, способную помочь. Она не претендует на полноту.
Ты вон вообще намекнул про смартмонтулз, кинул ссылку и уплыл.

В такой формулировки ты в первую очередь поддерживаешь экосистему вирусов.

Эта заметка — про винды, про ошибку, которая случается на виндах и про исправление ошибки, которая случается на виндах.

А вот мне в подобной ситуации заслуживающий доверия товарищ рекомендовал проверить обновление firmware (правда там феерия ещё бóльшая, чем в первом случае).

Лично я ещё не сталкивался с необходимостью перепрошивки дисков, а вот в уёбищности NTFS целительной силе чекдиска — убеждаюсь постоянно.

Напоминаю: мы всё ещё говорим про винды, да.

И 300 гигов удалено как? Одним файлом? Или OVER9000? Или же все 100500?

Непринципиально.

Уверен в правильности?

В правильности чего? Что мне удобнее fdisk? Используй что тебе нравится, я ж никому ничего не навязываю.

под виндой ничего посоветовать не могу.

Прекрасная иллюстрация совершенства платформы самой распространённой ОС.

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

Только мне кажется, что в этом случае помимо внешних признаков («тормозов») должна наблюдаться матерная ругань как в буфереядра, так и в системных журналах?

Да щаз. Это ж винды.

imen
2015.02.21 10:45:06
#cid90308

Ответить

#cid90306,

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

Это _единственная_ возможная причина «тормозов жёсткого диска»?
И смотри не только заголовок, но и вопрос в комментарии. И свой же ответ на него ☺

Если же ты про приложения в целом, как идеологию — то снова мимо. Существует масса отличных программ, доступных, к сожалению, только под виндами.

Не мимо.
Именно они (главное конкурентное преимущество) держат на плаву экосистему последние… лет десять, если не больше.
От «отличного» решения вендо-специфичных проблем мне ни тепло, ни холодно.

Остальные же, с учётом реалий, в wine часто чувстсвуют себя как бы не лучше, чем на родной платформе.
Культура же (в _правильном_ смысле термина) корректной интеграции ППО в систему давно и безнадёжно утрачена. Поэтому попытки использования любого условно-работоспособного ППО на фрюниксах ведут к ересям, с соответствующими издержками.

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

Хуже. Она не претендует даже на достаточность для практического применения.

Ты вон вообще намекнул про смартмонтулз, кинул ссылку и уплыл.

Дык там короткого описания достаточна. И ссылка, по которой тривиально в два хода промышляется дистрибутив.
В нулевом приближении этого достаточно.
Если же описывать методику анализа параметров SMART, то на это уйдёт куда больше, чем одна заметка.

Эта заметка — про винды, про ошибку, которая случается на виндах и про исправление ошибки, которая случается на виндах.

Означает ли это, что на виндах нет необходимости в проверке манифеста (целостности и аутентичности) скачиваемых файлов?
Или что это (отсутствие данной привычки) не может способствовать распространению дистрибутивов с интеграцией разных «полезностей»?

Лично я ещё не сталкивался с необходимостью перепрошивки дисков

А я вот, как раз на проверке SMART, сталкивался с проблемами (правда _скорее_ некритичными с прикладного уровня), вызванными… особенностью реализации прошивки.
Собственно у меня этот вопрос возник когда при сообщаемом SMART'ом нормальном времени long-теста в 126 минут за ~10 часов было отработано только 40% теста.

Напоминаю: мы всё ещё говорим про винды, да.

Угу. Причём не впираясь в тему заметки (диагноз не уникален и не подтверждён), а от более общей формулировки (тормозит диск(?)).
И хотя бы намётки плана решения проблемы (торможения системы) в целом интересны (увы) даже мне.

Непринципиально.

Фрагментация на виндах некритична с точки зрения производительности?

В правильности чего? Что мне удобнее fdisk? Используй что тебе нравится, я ж никому ничего не навязываю.

Выбора утилиты.
Удобство и правильность в данном контексте определяющей роли не играют.
Ибо проблема в… особенностях реализации предпочитаемой утилиты.

Да щаз. Это ж винды.

Нечто там нет журналов?
Или у целевой аудитории просто отсутствуют навыки работы с ними?

sav
2016.04.26 22:04:58
#cid91514

Ответить

Спасибо огромное!!!
Помогло!

2016.04.27 03:15:02
#cid91517

Ответить

#cid91514, sav

Спасибо огромное!!!
Помогло!

Дык!
Всегда пожалуйста.

Дмитрий
2016.09.10 00:28:37
#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, раньше с подобным не сталкивался и честно сказать даже не слышал о таком режиме, благодаря этому случайно попал сюда...Если не трудно прошу разрешить мою проблему.Самому очень интересно но очень все запутано . Спасибо с.Уважением...

Дмитрий
2016.09.10 00:31:53
#cid91667

Ответить

Прошу прощения не ту метаринку указал !!! Материнская плата ASUS P5GC-MX 1333

Alex
2016.09.26 16:52:24
#cid91678

Ответить

помогло!
Hardware Interrupts and DPCs в process explorer грузил процессор на 100% про проверке хэша bitcomet
надпись "Режим pio" сменилась на "неприменимо" но грузить ПЕРЕСТАЛО!
СПАСИБО!

2016.09.28 01:48:25
#cid91680

Ответить

#cid91678, Alex

помогло!
Hardware Interrupts and DPCs в process explorer грузил процессор на 100% про проверке хэша bitcomet
надпись "Режим pio" сменилась на "неприменимо" но грузить ПЕРЕСТАЛО!
СПАСИБО!

Пожалуйста :)
Проверь диск, вылет в PIO — всегда тревожный признак.

imen
2016.09.29 16:16:26
#cid91682

Ответить

#cid91680,

Проверь диск, вылет в PIO — всегда тревожный признак.

Только мне кажется, что здесь не хватает ссылки на рекомендуемое описание методики интерпретации вывода S.M.A.R.T. (https://www.smartmontools.org)?