Меню

Как включить dma режим для жесткого диска



Статьи

Компьютер сильно тормозит, работать вообще не возможно. При этом индикатор доступа к 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), далее в раздел

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

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

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

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

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

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

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

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

Источник

Строили таджики, оформляли молдаване

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

Источник

Включаем DMA

DMA или Direct Memory Access — технология, применяющаяся в многих устройствах компьютера, а, в частности, в современных жестких дисках и СD-ROM для повышения их производительности. В параметрах любого жесткого диска вы всегда найдете упоминание о DMA. Но далеко не все знают, что по умолчанию в Windows 95/98 и NT 4.0 этот режим, для совместимости со старыми (даже, скорее, древними) дисками, просто-напросто отключен!

При включении этого режима загрузка процессора при операциях копирования уменьшается во много раз и порой заметно увеличивает производительность системы в целом. Все современные жесткие диски и CD-ROM-приводы корректно работают в DMA-режиме и используют заложенные в него возможности.

Читайте также:  Как почистить компьютер от ненужных файлов и жесткие диски

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

Важно не путать режим DMA и обозначение типа контроллера жесткого диска. Если ваш диск поддерживает UltraDMA 33 или 66, это означает лишь то, что он способен обмениваться данными с соответствующим IDE-контроллером на скорости 33 или 66 Мб/сек.

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

Для Windows 95/98

Щелкните правой кнопкой мыши на значке My Computer, выберите Properties и перейдите на вкладку Device Manager. Выберите пункт Disk Drives и Generic IDE Disk. Дважды щелкните на нем и перейдите ко вкладке Settings. Если флажок на против опции DMA установлен, значит, режим DMA работает. Если нет, установите. После перезагрузки он должен оставаться на своем месте.

Если он сбрасывается, значит либо диск, либо контроллер не поддерживают DMA. Аналогичную операцию можно проделать и с CD-ROM-приводом. Если по каким-либо причинам после перезагрузки устройство будет работать некорректно или вообще отсутствовать в списке, вам придется перезагрузиться в Safe Mode и снять флажок. Впрочем, в моей практике делать этого еще не приходилось. В случае использования дополнительного IDE-контроллера (например, для работы с UltraDMA 66 дисками), данная вкладка может выглядеть иначе, и управление режимом DMA берет на себя драйвер контроллера. Многие современные платы на чипсете Intel 440BX используют такой дополнительный UltraDMA-контроллер, так как BX изначально не поддерживает работу с UltraDMA 66 дисками.

Для Windows 2000

В отличие от Windows 9х, Windows 2000 по умолчанию настраивает многие компоненты системы на оптимальное быстродействие, за счет чего местами работает значительно быстрее. Это в полной мере относится и к жестким дискам.

Для того, чтобы узнать, используется ли у вас DMA в этой операционной системе, вам следует щелкнуть правой кнопкой мыши на значке My Computer, выбрать пункт Manage и в окне Computer Management выбрать Device Manager. В появившемся дереве необходимо выбрать IDE ATA/ATAPI controllers и Primary IDE Channel. Как правило, на основном канале контроллера и находится жесткий диск.

Дважды щелкните на Primary IDE Channel (или Secondary IDE Channel, в случае, если устройство расположено на дополнительном IDE-канале) и в появившемся окне выберите вкладку Advanced Settings. Блок Device 0 показывает установки устройства, установленного как Master, а блок Device 1 — устройства, установленного как Slave. Поле Current Transfer Mode показывает, в каком режиме работает устройство, а Transfer Mode позволяет изменять его вручную.

Для Windows NT 4.0

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

Второй способ предпочтительнее. Для этого можно использовать небольшую программку ConfigNT (confignt.lgg.ru). Помимо включения DMA, программка может изменять еще кучу разных параметров, которые не могут быть изменены с использованием стандартных средств.

Для включения режима DMA с помощью ConfigNT необходимо выбрать в программе вкладку IDE/ATAPI и в поле DMA Detection установить Enable для обоих каналов. После установки параметров необходимо перезагрузить компьютер.

Для того, чтобы на практике увидеть полученный прирост производительности, достаточно во время копирования большого файла, со включенным и отключенным DMA, запустить программу, измеряющую загрузку процессора. В Windows 2000 или NT проще всего воспользоваться стандартным Task Manager (Ctrl-Shift-Esc).

Компьютерная газета. Статья была опубликована в номере 08 за 2000 год в рубрике разное :: страна советов

Источник