Как вы знаете, Windows 7 получила более значительные улучшения во времени загрузки и отклика системы по сравнению с её предшественницей Windows Vista. Были внесены существенные изменения, позволившие системе не расходовать всю системную память при открытии большого количества окон проводника, оптимизированы системные службы и процессы.
В данной статье мы рассмотрим:
- оптимизацию работы меню пуск
- оптимизацию работы жесткого диска в Windows 7
- оптимизацию скорости копирования и перемещения файлов в Windows 7
- оптимизацию работы с драйверами Windows 7
- оптимизацию времени загрузки Windows 7
- ускорение процесса просмотра эскизов изображений
- ускорение завершение работы Windows 7
Внимание!
Обратите внимание на то, что часть рассмотренных методов ускорения работы Windows 7 основываются на отключении какого-либо рода задач, упрощении или улучшении функциональности системы для более удобного ее использования. Т.е. по сути вы выбираете между удобством и производительностью.
Пути оптимизации Windows 7
1. Ускорение работы меню пуск.
Определение недавно установленных программ, а также подсветка этих недавно установленных программ занимает у системы некоторое время при каждом открытии меню пуск. Вы можете сэкономить это время.
Для этого вам необходимо перейти к настройке меню пуск: в свойствах «Панель задач и меню Пуск» (для активации перейдите в панель управления Windows 7: Пуск –> Панель управления). Перейдите в закладку «Меню Пуск» и нажмите на кнопку «Настроить».

Уберите галочку «Выделять недавно установленные программы», после чего нажмите «Применить».

Для того чтобы уменьшить паузу, при появлении окна меню пуск, перейдите в редактор реестра (команда «regedit» в диалоге «Найти программы и файлы»).

После запуска редактора реестра (regedit.exe) перейдите в ветку HKEY_CURRENT_USER -> Control Panel -> Desktop (рис. 4).

Измените значение ключа MenuShowDelay с «400» на «50». Пауза значительно сократится.

2. Оптимизация работы жесткого диска в Windows 7
Эта опция знакома еще со времен Windows XP, но если в XP она была изначально включена, то в Windows 7 оптимизацию жестких дисков посчитали лишней и по умолчанию она отключена. Сейчас мы рассмотрим метод включения данной опции.
Заходим в Пуск -> Панель управления -> Диспетчер устройств -> Дисковые устройства -> (выбираем свой жесткий диск) -> Свойства -> Политика… и ставим там галочку напротив пункта «Отключить очистку буфера кэша записей Windows для этого устройства».

Теперь в этом же «Диспетчере устройств» раскрываем другую ветку — «IDE ATA/ATAPI контроллеры (IDE ATA/ATAPI Controllers)», после чего в свойствах всех каналов ATA (ATA Channel 0, ATA Channel 1 и т.д.) во вкладке «Дополнительные настройки (Advanced Settings)» проверяем, стоит ли галочка на «Задействовать/Включить DMA (Enable DMA)».

Если галочка не стоит – установите ее.
3. Ускорение копирования и перемещения файлов в Windows 7
Windows 7 получила еще одну интересную особенность — удаленное разностное сжатие.
С одной стороны эта опция вычисляет и передает различие между двумя объектами, минимизируя объем передаваемых данных, но с другой – это отнимает время на калькуляцию.
Вы можете отключить эту функцию. Для этого перейдите в Пуск -> Панель управления -> Программы и компоненты -> Включение и отключение компонентов Windows -> Удалённое разностное сжатие (необходимо снять галочку).

4. Отключение проверки цифровой подписи драйверов
Данное действие также может немного увеличить скорость работы системы (при установке новых драйверов). Для отключения данной опции в Windows 7 выполните следующие действия:
Выполните в «Пуске» gpedit.msc.

Затем перейдите по следующему пути:
Конфигурация пользователя -> Административные шаблоны -> Система -> Установка драйвера -> Цифровая подпись драйверов устройств. В этом окне необходимо выбрать режим «Отключено».

5. Ускорение загрузки Windows 7
Как известно, загрузка операционной системы Windows 7 довольно сильно оптимизирована (по сравнению в Windows Vista она может проходить на 10-20 секунд быстрее).
Мы можем выиграть еще несколько секунд, правда данный совет относится к тем пользователям, которые работают на многоядерных процессорах с Windows 7 в качестве операционной системы.
Итак, выполните следующие действия:
Введите MSCONFIG в поле поиска меню «Пуск» и нажмите клавишу «Enter».
В открывшемся окне перейдите на вкладку «Загрузка (Boot)» и нажмите на кнопку «Дополнительные параметры (Advanced options)».


Нажмите «Ок» и перезагрузите систему, чтобы увидеть довольно ощутимую разницу в скорости загрузки Windows 7.
6. Ускорение просмотра эскизов (миниатюр).
Вы можете увеличить скорость просмотра эскизов (миниатюр) в Windows 7. Для этого вам необходимо выполнить следующие действия:
Введите regedit (без кавычек) в поле поиска меню «Пуск» и нажмите клавишу «Enter».
Перейдите в ветку «HKEY_CURRENT_USER -> Control Panel -> Mouse».

Дважды щелкните на параметре MouseHoverTime и измените его значение на 100.

7. Уменьшение времени выключения Windows 7
Время завершения работы Windows 7 можно заметно уменьшить. Однако это довольно варварский способ: мы уменьшаем время, которое отводится процессу на завершение работы программы, после чего программа будет завершена принудительно.
Введите regedit в поле поиска меню «Пуск» и нажмите клавишу «Enter».
Перейдите в ветку HKEY_LOCAL_MACHINE -> System -> CurrentControlSet -> Control.

Рисунок 15. Выбор необходимого ключа реестра
Измените значение параметра «WaitToKillServiceTimeout» со значения 12000 (12 секунд) на 2000 (2 секунды).

Если компьютер начинает тормозить, то большинство пользователей, в первую очередь, начинают грешить на процессор, оперативную память или видеокарту, но абсолютно забывают о том, что жесткий диск является не менее важным узлом компьютера и во многих случаях проблемы снижения скорости работы операционной системы связаны именно с ним.
Содержание:
- 1 Включение режима DMA
- 1.1 Возможные режимы работы жесткого диска
- 1.2 Самопроизвольное переключение Виндовс на режим PIO и признаки этого
- 1.3 Включаем режим DMA
Включение режима 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.
Если по какой-то причине у вас не получается включить DMA первым способом, то тогда вам придется приложить немного больше усилий и использовать редактор реестра. Сделайте следующее:
- Нажмите Win+R и напечатайте в появившейся строке команду regedit;
- Перейдитепопути HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36Е96A-Е325-11CE-BFC1-08002BE10318};
- Найдите строку MasterDeviceTimingModeAllowed.
- Если в колонке значение этой строки написано 0х00000001f, то это значит, что ваш жесткий диск действительно работает в режиме PIO;
- Поменяйте значение на 0xffffffff и перезагрузите компьютер.
После этого ваш жесткий диск вновь переключится на режим DMA, а скорость его работы и общая скорость работы системы увеличится в разы.
Windows, Windows XP
- 18.08.2021
- 4 522
- 0
- 1
- 1
- 0
- Содержание статьи
- Описание
- Что такое PIO и DMA?
- Как сменить режим работы с PIO на DMA?
- Добавить комментарий
Описание
Часто у пользователей возникает проблема очень медленной работы компьютера, особенно при записи и при чтении дисков, либо просто необоснованные «тормоза» системы при работе или загрузке. Причин возникновения этого может быть великое множество, сегодня предлагаю рассмотреть довольно распространенную – это неверный режим работы CD/DVD-ROM’а или жестких дисков, т.е. поговорим о PIO и DMA.
Что такое PIO и DMA?
PIO и DMA – это два режима работы жестких дисков, в общем случае любого привода.
PIO (Programmable Input/Output) – уже устаревший режим, для работы ему необходимо задействовать центральный процессор, что приводит к значительной потери производительности.
DMA (Direct Memory Access) – современный метод, который минует процессор и обращается напрямую к оперативной памяти, это позволяет значительно (в несколько раз) увеличить производительность и избавиться от надоедливых «тормозов». Режим DMA в различных вариантах уже давно используется в операционных системах, однако в Windows XP часто случается ситуация в которой DMA автоматически переключается в PIO и уже вывести его оттуда обычными методами не получится. Из-за чего возникает эта ситуация? В Windows XP внедрен механизм контроля ошибок, если при чтении с жесткого диска или др. привода слишком часто возникают ошибки, то система автоматически переходит в более медленный режим, где их процент меньше. Однако, Windows XP может перевести в такой режим и нормально работающее устройство исходя из известных только ей критериев.
Как сменить режим работы с PIO на DMA?
Итак, Ваша система стала существенно притормаживать – проверим режимы работы всех приводов:
1. Запускаем консоль «Управление компьютером» – правой кнопкой на «Мой компьютер» → в выпадающем меню выбираем пункт «Управление», либо через Панель управления.
2. Выбираем «Диспетчер устройств», справа выбираем IDE ATA/ATAPI контроллеры, откроется несколько строчек с контроллерами – нас интересуют Первичный и Вторичный каналы IDE
Заходим поочередно в свойства этих каналов (правой кнопкой на канале, строка «Свойства»), в закладку «Дополнительные параметры»
Здесь выделены две группы «Устройство 0» и «Устройство 1», в каждой есть строки «Режим передачи» – в ней должно быть выбрано «DMA, если доступно», далее строка «Текущий режим передачи», должно быть что-то типа «Режим ультра DMA: 5», если здесь стоит «Режим PIO», то это как раз наш случай и мы будем его исправлять. Если везде стоит режим ультра DMA, то у Вас все в порядке и дальнейшие действия можно не продолжать.
3. Для начала попробуем исправить вручную – в каждой строке «Режим передачи» ставим «DMA, если доступно», жмем «ОК» и перезагружаем компьютер. После включения вновь смотрим режимы работы каналов, если везде стоит DMA, то все в порядке, если остался PIO, то продолжаем дальше.
4. Вновь найдите Первичный и Вторичный каналы IDE и удалите их (правой кнопкой на каждом канале, в списке выбираем «Удалить»). Не бойтесь, все будет нормально работать. Снова перезагрузите компьютер – Windows XP найдет контроллеры и переведет их в быстрый режим работы, т.е в DMA. Проверте результат, везде должен стоять режим DMA.
5. Если все перечисленное не помогло и у Вас опять высвечивается «Режим PIO», тогда необходимо будет переставить драйвера для материнской платы – перезагрузиться и вновь проверить результат.
6. Ну и последний пункт, если после всех мучений «Режим PIO» так и не пропал, тогда придется поковыряться в реестре. Хочу отметить – производите какие-либо операции с реестром очень осторожно и внимательно, любое неправильное действие может привести к полной неработоспособности Вашей системы. Лучше всего сделать заранее бекап реестра. Будьте осторожны!!!
Для начала попробуйте отключить систему контроля ошибок. Для этого в ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesCdfs, создайте ключ ErrorControl и установите его значение равным 0. После этого перезагрузитесь и выполните пункт №4.
Действуем дальше: открываем следующую ветку HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E96A-E325-11CE-BFC1-08002BE10318} в ней можно вручную выставить режим DMA. Здесь распологаются несколько папок 0000, 0001, 0002.
0000 – отвечает за сам контролер;
0001 – отвечает за Secondary IDE Chanell;
0002 – отвечает за Primary IDE Chanell;
Открываем папку для нужного нам канала. В ней находятся несколько ключей, для начала выбираем:
MasteDeviceTimingModeAllowed
SlaveDeviceTimingModeAllowed
и проставляем значение равное 0хffffffff.
После этого выставляем значение следующих ключей:
MasterDeviceTimingMode
SlaveDeviceTimingMode
в соответствии с следующими данными, в зависимости от поддерживаемого UDMA-режима:
UDMA Mode 2 – 0x2010
UDMA Mode 4 – 0x8010
UDMA Mode 5 – 0x10010
UDMA Mode 6 – 0xffff
После этого перезагрузитесь и проверьте результат – должно все нормально работать.
Авг
28

Содержание
Сегодня в статье будут рассмотрены такие вопросы, как:
- 1) Оптимизация скорости копирования и перемещения файлов в windows 7
- 2) Оптимизация работы жесткого диска в windows 7
- 3) Оптимизация работы меню пуск
Теперь давайте перейдем непосредственно к делу.
1. Оптимизация скорости копирования и перемещения файлов в windows 7
В Windows 7 присутствует интересная особенность — удаленное разностное сжатие. Я не буду подробно рассказывать об этом, так как хочу передать Вам данные тонкости настройки windows 7 в максимально простом виде, дабы не загружать Вас лишней информацией. Скажу просто, что эта функция вычисляет и передает различие между двумя объектами, минимизируя объем передаваемых данных, но при этом она отнимает время на калькуляцию (из справочника Windows).
[sc:rsycontent ]
По желанию Вы можете отключить данную функцию, для этого перейдите в Пуск -> Панель управления -> Программы и компоненты -> Включение и отключение компонентов Windows и снимите галочку с пункта «Удалённое разностное сжатие».
С первым пунктом справились, идем дальше.
2. Оптимизация работы жесткого диска в windows 7
Данная опция присутствовала еще в Windows XP, но там она была включена изначально. Увы, в Windows 7 оптимизацию жестких дисков посчитали лишней и по умолчанию она отключена. Но эта не беда. Сейчас я расскажу Вам о том, как включить данную функцию.
Заходим в «Пуск -> Панель управления -> Диспетчер устройств -> Дисковые устройства -> (выбираем свой жесткий диск) -> Свойства -> Политика… и ставим там галочку напротив пункта «Отключить очистку буфера кэша записей Windows для этого устройства»
Теперь необходимо вернуться в «Диспетчер устройств» и развернуть другую ветку — «IDE ATA/ATAPI контроллеры», после этого в свойствах всех каналов ATA (ATA Channel 0, ATA Channel 1 и т.д.) во вкладке «Дополнительные настройки (Advanced Settings)» проверяем, стоит ли галочка на пункте «Задействовать/Включить DMA (Enable DMA)»
Если галочка не установлена, то следовательно Вам необходимо её поставить. И на этом оптимизация работы жесткого диска закончена, идем дальше 
3. Оптимизация работы меню Пуск
Я уверен, открывая меню «Пуск» Вы замечали что система подсвечивает недавно установленные программы. Следовательно можно догадаться, что на определение этих программ и их подсветку уходит время при каждом открытии.
Я расскажу Вам, как сэкономить это самое время.
Для начала перейдите к настройке меню пуск:
1) Нажмите на панели задач (она находится в самом низу) правой кнопкой мыши и выберите свойства.
2) Перейдите в закладку «Меню Пуск» и нажмите на кнопку «Настроить»
В появившемся окне уберите галочку с пункта «Выделять недавно установленные программы», после чего нажмите «Применить».
Для того чтобы уменьшить паузу, при появлении окна меню пуск, нам необходимо перейти в редактор реестра, для этого зайдите в меню пуск и в поле «Найти программы и файлы» введите «regedit» (без кавычек):
Затем, в редакторе реестра перейдите в ветку HKEY_CURRENT_USER -> Control Panel -> Desktop и измените значение ключа MenuShowDelay с «400» на «50». Пауза значительно сократится.
Вот и все, мы ускорили работу меню Пуск
Заключение
На этом друзья я заканчиваю свою статью, но сразу скажу что это не все. Просто не хотелось писать статью длиною в километр, так как меня самого напрягает читать такие статьи. В следующей части я расскажу Вам о еще 4 способах оптимизации своей ОС. Чтобы не пропустить её, подпишитесь на обновления блога.
С Уважением, Александр Сидоренко!
PIO (Programmable Input/Output) – очень старый и имеющий много существенных недостатков режим работы устройств, при передачи данных жёсткими дисками и приводами CD/DVD задействуется процессор, конечно это уменьшает производительность. В 1990 годах появляется режим обмена данными, использующий прямой доступ к памяти DMA (Direct Memory Access), центральный процессор уже не используется и устройства обращаются напрямую к основной памяти, что увеличивает быстродействие системы в целом в несколько раз.
PIO и DMA
В этой статье мы рассмотрим причины по которым операционная система может перевести устройства в более медленный режим работы PIO и как их устранить. Данный вопрос возник у моего друга, когда его устроили на работу системным администратором на предприятие, где ощущалась острая необходимость обновления компьютерного парка, конечно начальство этого делать не собиралось и пришлось выкручиваться самим. В основном компьютеры были не новые, но со своими обязанностями справлялись. Что интересно, два из них работали в режиме PIO и их надо было как-то переводить в режим DMA.
На первом же системном блоке работающем в режиме PIO, мы увидели, что хард подключен с помощью 40-жильного интерфейсного кабеля, для работы DMA нужен 80-жильный шлейф IDE, заменяем и вопрос решается. На другом компьютере, стоял новый жесткий диск, Western Digital интерфейса подсоединения SATA 250 GB и на нём находилась операционная система Windows XP, вторым Seagate Barracuda 80GB, старого интерфейса IDE и оба работали в режиме PIO. Стоило убрать устаревший винчестер IDE и новый SATA работал в режиме DMA.
В принципе старый хард можно было убрать, но вопрос бы остался нерешённым. Прежде чем переустанавливать драйвера на материнскую плату или саму Windows, удалять первичные и вторичные каналы IDE, можно сказать плясать с бубном, я стал вспоминать что где-то, читал о подобной проблеме и о том, как её решили.
А решили её банально, умные люди. Два жёстких диска, нового образца SATA и старого IDE будут работать вместе, в режиме DMA, если они одного производителя.
У меня дома был хард Western Digital, интерфейса IDE, на 40GB, мы установили его в системный блок вместо прежнего и они оба заработали в режиме DMA, вот так был решён конфликт устройств. Что ещё можно предпринять в случае если Windows XP перевела работу ваших устройств в более медленный режим PIO, в принципе все методы, которые можно применить, описаны в нашей статье Тормозит жесткий диск, кроме одного, это редактирование реестра, его и рассмотрим сейчас.
Вообще метод рисковый, можно не загрузиться, поэтому сделайте лучше всего бэкап системы, например в Acronis.
Нам нужен куст HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesCdfs, далее создаём ключ ErrorControl со значением равным 0 и перезагружаемся и удаляем в диспетчере устройств в пункте IDE ATA/ATAPI контроллеры, все Первичные и Вторичные каналы IDE.
Далее следующий куст
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E96A-E325-11CE-BFC1-08002BE10318}, тут нам нужны папки
0000 – сам контролер;
0001 – Secondary IDE Chanell;
0002 – Primary IDE Chanell;
Заходим в папки, каждая из них отвечает за нужный нам канал, здесь нам нужны ключи.
MasteDeviceTimingModeAllowed
SlaveDeviceTimingModeAllowed
Присваиваем им значение 0хffffffff.
Далее ещё ключи
MasterDeviceTimingMode
SlaveDeviceTimingMode
Согласно поддерживаемому UDMA-режиму:
UDMA Mode 2 – 0×2010
UDMA Mode 4 – 0×8010
UDMA Mode 5 – 0×10010
UDMA Mode 6 – 0xffff
Перезагрузка.
Всем привет, сегодня мы с вами поговорим о DMA: именно о той технологии, которая помогает вашему компьютеру воспроизводить для вас музыку, выводить изображение на экран, записывать информацию на жесткий диск, и при этом оказывать на центральный процессор просто мизерную нагрузку.
DMA, что это? О чем вы говорите?
DMA, или Direct Memory Access – технология прямого доступа к памяти, минуя центральный процессор. В эпоху 486-ых и первых Pentium во всю царствовала шина ISA, а также метод обмена данными между устройствами – PIO (Programmed Input/Output).
PIO по своей сути прост: чтобы получить данные с устройства, драйвер операционной системы (или же firmware другого устройства), должен был читать эти данные из регистров устройства. Давайте разберемся на примере:
- На сетевую карту пришло 1500 байт данных.
- Сетевая карта инициирует прерывание с целью сообщить процессору, что данные необходимо забрать с устройства, иначе произойдет так называемый buffer overrun.
- Операционная система ловит прерывание от контроллера прерываний и отдает его на обработку драйверу.
- Драйвер в цикле побайтно читает данные с регистров сетевой карты.
В итоге, если чтение одного байта отнимает около 1 мс процессорного времени, то чтение 1500 байт – соответственно 1500 мс. Но это всего лишь один Ethernet пакет, представте себе, сколько пакетов получает сетевая карта, когда вы читаете любимый хабрахабр. Конечно в реальности чтение в PIO режиме можно организовывать по 2, 4 байта, однако потери производительности при этом все равно будут катастрофическими.
Когда объемы данных, которыми оперирует процессор начали возрастать, стало понятно, что нужно минимизировать участие процессора в цепочке обмена данными, а то прийдется туго. И вот тогда активное применение нашла технология прямого доступа к памяти.
Кстати говоря, DMA используется не только для обмена данными между устройством и ОЗУ, но также между устройствами в системе, возможен DMA трансфер между двумя участками ОЗУ (хотя данный маневр не применим к x86 архитектуре). Также в своем процессоре Cell, IBM использует DMA как основной механизм обмена данными между синергетическими процессорными элементами (SPE) и центральным процессорным элементом (PPE). Также каждый SPE и PPE может обмениватся данными через DMA с оперативной памятью. Данный прием – на самом деле большое преимущество Cell, ибо избавляет от проблем когерентности кешей при мультипроцессорной обработке данных.
И снова теория
Прежде чем мы перейдем к практике, я бы хотел осветить несколько важных аспектов программирования PCI, PCI-E устройств.
Я вскользь упомянул о регистрах устройства, но как же к ним имеет доступ центральный процессор? Как многие из вас знают, есть такая сущность в компьютерных технологиях, как IO порты (Input/Output ports). Они предназначены для обмена информацией между центральным процессором и периферийными устройствами, а доступ к ним возможен с помощью специальных ассемблерных инструкций — in/out. BIOS (или OpenFirmware на PPC based системах) на ранних этапах инициализации PCI устройств, а также некоторых других (Super IO контроллера, контроллера PS/2 устройств, ACPI timer и т.д.), закрепляет за определенным контроллером собственный диапазон IO портов, куда и отображаются регистры устройства.
Также регистры устройства могут отображатся в ОЗУ (Memory Mapped Registers), т.е. на физическое адресное пространство. Данный метод имеет ряд преимуществ, а именно:
- Скорость доступа к физической памяти выше, нежели к IO портам.
- IO порты могут отображать не более 65535 байт регистров, в то время как размер ОЗУ современных компьютеров в разы больше.
- Читать регистры устройства из ОЗУ проще, нежели с помощью IO портов
Данные о том, какой диапазон IO портов или ОЗУ закреплен за устройством, хранятся в конфигурационном пространстве PCI, а именно в регистрах BAR0, BAR1, BAR2, BAR4, BAR5 [1].
Итак, существует два метода утилизации DMA: contiguous DMA и scatter/gather DMA.
Contiguous DMA
Данный метод очень прост и сейчас практически отжил свое, однако до сих пор используется для программирования звуковых контроллеров (к примеру Envy24HT). Его принцип следующий:
- Выделяется один буфер достаточно большого размера в оперативной памяти.
- Физический адрес (точнее сказать адрес на шине участка памяти, потому как physical address и bus address – равны в x86 архитектуре, но не равны в PPC) этого буфера записывается в регистр устройства.
- Во время того, как приходят данные на устройство, контроллер устройства инициирует DMA трансфер.
- После того, как буфер полностью заполнен, контроллер устройства инициирует прерывание, чтобы сообщить центральному процессору, что буфер следует передать операционной системе.
- Драйвер операционной системы обрабатывает прерывание, и передает полученные данные из буфера, далее по стеку устройств операционной системы.
Как видите все достаточно просто, и как только шина ISA обзавелась поддержкой DMA, данный метод нашел очень широкое применение. Например драйвера сетевых карт имели два таких DMA буфера: один на прием данных (rx), другой на отсылку (tx).
Scatter/gather DMA
С ростом скорости Ethernet адаптеров, contiguous DMA показал свою несостоятельность. В основном из-за того, что требовались области памяти достаточно большого размера, которые подчас невозможно было выделить, так как в современных системах фрагментация физической памяти достаточно высока. Во всем виноват механизм виртуальной памяти, без которого нынче никуда 
Решение напрашивается само собой: использовать вместо одного большого участка памяти несколько, но в разных регионах этой самой памяти. Возникает вопрос, но как же сообщить контроллеру устройства, как инициировать DMA трансфер и по какому адресу писать данные? И тут нашли решение, использовать дескрипторы, чтобы описывать каждый вот такой участок в оперативной памяти.
Типичный дескриптор DMA буфера содержит следующие поля:
- Адрес участка ОЗУ (именно bus address), который предназначен для DMA трансфера.
- Размер описываемого участка ОЗУ.
- Опциональные флаги и другие специфические аргументы.
- Адрес следующего дескриптора в памяти.
Структура дескрипторов определяется конкретным производителем контроллера устройства, и может содержать какие-либо другие поля. Дескриптор также как и DMA буфер, размещается в оперативной памяти.
Алгоритм scatter/gather DMA следующий:
- Драйвер операционной системы выделяет и иницилизирует дескрипторы DMA буферов.
- Драйвер выделяет DMA буферы (участки ОЗУ для DMA трансфера) и записывает необходимую информацию о них в дескрипторы.
- Устройство по мере возникновения потребности, заполняет DMA буферы, и после того, как заполнен один или несколько буферов инициирует прерывание.
- Драйвер ОС просматривает все дескрипторы DMA буферов, определяет какие из них были заполнены контроллером устройства, пересылает данные из буфера далее по стеку устройств и помечает буфер как готовый к DMA трансферу.
Порядок в каком контроллер устройства заполняет DMA буферы, определяется производителем. Контроллер может писать в первый свободный DMA буфер, либо просто писать подряд (дескрипторы DMA буферов в данном случае образуют односвязный кольцевой список) во все буфера и т.д.
Стоп…
На сегодня пожалуй все, иначе информации станет слишком много. В следующей статье я покажу вам, как с этой уличной магией работает IOKit. Жду отзывов и дополнений 
Ссылки
[1] PCI Local Bus Specification
Возможные режимы работы жесткого диска
У HDD есть возможность работать с данными в двух режимах: устаревший PIO и более новый DMA. Они кардинально отличаются принципом своей работы и, соответственно, скоростью обработки данных. Так в режиме PIO все данные обрабатываются при помощи процессора что сильно его нагружает и, как следствие, приводит к падению общей производительности системы. А вот режим DMA – это уже аппаратная обработка данных при которой используются разнообразные ускорители и ЦП в этом процессе не участвует.
Самопроизвольное переключение Виндовс на режим PIO и признаки этого
Windows по умолчанию работает с HDD в скоростном режиме DMA, но иногда из-за специфических ошибок самостоятельно переключается в режим PIO. Причем обратно включить DMA весьма проблематично и сделать это стандартными способами практически невозможно. Характерные признаки того, что Windows переключилась на работу с жестким диском в режим PIO это:
На данный момент жесткий диск — это самое слабое место всей системы и падение его скорости работы даже в два раза приводит к катастрофическим последствиям. Для того чтобы убедиться, что Windows действительно переключилась на работу с жестким диском в медленный режим PIO нужно сделать следующее:
1. Нажмите на значок «Мой компьютер» правой клавишей мыши и выберите пункт «Управление»;

Включаем режим DMA
На самом деле добиться этого можно двумя способами. Первый из них довольно простой и вам потребуется всего лишь удалить неправильно работающее устройство, а затем перезагрузить компьютер. После этого Windows автоматически установит его заново и режим работы устройства вновь переключится на DMA.
Если по какой-то причине у вас не получается включить DMA первым способом, то тогда вам придется приложить немного больше усилий и использовать редактор реестра. Сделайте следующее:
- Нажмите Win+R и напечатайте в появившейся строке команду regedit;
- Перейдитепопути HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36Е96A-Е325-11CE-BFC1-08002BE10318};
- Найдите строку MasterDeviceTimingModeAllowed.
- Если в колонке значение этой строки написано 0х00000001f, то это значит, что ваш жесткий диск действительно работает в режиме PIO;
- Поменяйте значение на 0xffffffff и перезагрузите компьютер.
После этого ваш жесткий диск вновь переключится на режим DMA, а скорость его работы и общая скорость работы системы увеличится в разы.
Информация к новости
- Просмотров: 33 455
- Автор: admin
- Дата: 1-09-2011
1-09-2011
Категория: Жёсткий диск / Железо и периферия
PIO (Programmable Input/Output) – очень старый и имеющий много существенных недостатков режим работы устройств, при передачи данных жёсткими дисками и приводами CD/DVD задействуется процессор, конечно это уменьшает производительность. В 1990 годах появляется режим обмена данными, использующий прямой доступ к памяти DMA (Direct Memory Access), центральный процессор уже не используется и устройства обращаются напрямую к основной памяти, что увеличивает быстродействие системы в целом в несколько раз.
PIO и DMA
В этой статье мы рассмотрим причины по которым операционная система может перевести устройства в более медленный режим работы PIO и как их устранить. Данный вопрос возник у моего друга, когда его устроили на работу системным администратором на предприятие, где ощущалась острая необходимость обновления компьютерного парка, конечно начальство этого делать не собиралось и пришлось выкручиваться самим. В основном компьютеры были не новые, но со своими обязанностями справлялись. Что интересно, два из них работали в режиме PIO и их надо было как-то переводить в режим DMA.
На первом же системном блоке работающем в режиме PIO, мы увидели, что хард подключен с помощью 40-жильного интерфейсного кабеля, для работы DMA нужен 80-жильный шлейф IDE, заменяем и вопрос решается. На другом компьютере, стоял новый жесткий диск, Western Digital интерфейса подсоединения SATA 250 GB и на нём находилась операционная система Windows XP, вторым Seagate Barracuda 80GB, старого интерфейса IDE и оба работали в режиме PIO. Стоило убрать устаревший винчестер IDE и новый SATA работал в режиме DMA.
В принципе старый хард можно было убрать, но вопрос бы остался нерешённым. Прежде чем переустанавливать драйвера на материнскую плату или саму Windows, удалять первичные и вторичные каналы IDE, можно сказать плясать с бубном, я стал вспоминать что где-то, читал о подобной проблеме и о том, как её решили. А решили её банально, умные люди. Два жёстких диска, нового образца SATA и старого IDE будут работать вместе, в режиме DMA, если они одного производителя.
У меня дома был хард Western Digital, интерфейса IDE, на 40GB, мы установили его в системный блок вместо прежнего и они оба заработали в режиме DMA, вот так был решён конфликт устройств. Что ещё можно предпринять в случае если Windows XP перевела работу ваших устройств в более медленный режим PIO, в принципе все методы, которые можно применить, описаны в нашей статье Тормозит жесткий диск, кроме одного, это редактирование реестра, его и рассмотрим сейчас.


-
Вопрос
- Обнаружил не давно, что мой DVD в PIO стоит, много искал, как в DMA его перевести ничего не выходило. В реестре записей нет, птичка не активируется, удаление, переподключение не помогало. DVD SATA, все порты SATA включая e-SATA у меня заняты. Получается так, что винт и DVD висят на одном канале и как только винт переводишь в PIO — включается DMA у DVD, включаешь DMA у винта — DVD в PIO уходит, что за прикол я не понял. Как это исправить можно кто-то знает?17 марта 2010 г. 4:55 Ответить | Цитировать
Ответы
-
В поиске пробыл я часа четыре, и перепробовал все, что смог найти, кроме переустановки Win 7. Перевести работу дисков на AHCI у меня так и не вышло, но заменив один из контроллеров IDEна стандартный контроллер ACHI все SATA винты и DVD раскидались по устройству на канал и DVDстал в DMAработать, так что проблема была решена. Если попытаться обновить стандартный контроллер ACHI на тот что на диске от материнской платы то все тот же синий экран в режиме RAIDили темный экран в режиме ACHI, или длительная загрузка в режиме native, конца которой я спустя 10 мин так и не дождался…
- Предложено в качестве ответа25 марта 2010 г. 16:55
- Помечено в качестве ответа29 марта 2010 г. 6:29
25 марта 2010 г. 3:32 Ответить | Цитировать
Все ответы
- 17 марта 2010 г. 5:51 Ответить | Цитировать
- что-то я не понял… а это тогда что такое?http://img34.imageshack.us/img34/7185/sata.pngЕсли AHCI не используется, то SATA-диски эмулируются как IDE-устройства.17 марта 2010 г. 6:37 Ответить | Цитировать
- 17 марта 2010 г. 6:39 Ответить | Цитировать
- У меня материнская плата ASUS M2R32-MVP переключение дисков в AHCI приводит просто к темному экрану при попытке загрузить ОС. Переключение в RAID приводит к синиму экрану. Качал драйвера на чипсет, менял значения в реестре винда отказывается видить жесткие диски на SATA. Запускал востановление системы, давал ей драйвера, но ОС все равно не хочет увидеть еще 3 винта и СД.21 марта 2010 г. 21:32 Ответить | Цитировать
- Вот этими рекомендациями пробовали воспользоваться?MCSA21 марта 2010 г. 23:36 Ответить | Цитировать
- Да, так и стоит в реестре 023 марта 2010 г. 4:28 Ответить | Цитировать
-
Странно. У меня прокатило.Тогда остаётся одно — запуск установки Windows 7 в режиме восстановления Windows. Все проги и документы в этом случае останутся рабочими и процесс установки пройдёт гораздо быстрее. Хотя, документы по старой привычке я бы всё-таки куда-нибудь забэкапил.
MCSA23 марта 2010 г. 6:47 Ответить | Цитировать
-
Парни, все гораздо проще.
Вы не хотите использовать поиск.
23 марта 2010 г. 10:06 Ответить | Цитировать
-
В поиске пробыл я часа четыре, и перепробовал все, что смог найти, кроме переустановки Win 7. Перевести работу дисков на AHCI у меня так и не вышло, но заменив один из контроллеров IDEна стандартный контроллер ACHI все SATA винты и DVD раскидались по устройству на канал и DVDстал в DMAработать, так что проблема была решена. Если попытаться обновить стандартный контроллер ACHI на тот что на диске от материнской платы то все тот же синий экран в режиме RAIDили темный экран в режиме ACHI, или длительная загрузка в режиме native, конца которой я спустя 10 мин так и не дождался…
- Предложено в качестве ответа25 марта 2010 г. 16:55
- Помечено в качестве ответа29 марта 2010 г. 6:29
25 марта 2010 г. 3:32 Ответить | Цитировать
Используемые источники:
- https://datbaze.ru/windows/vklyuchenie-rezhima-dma.html
- https://remontcompa.ru/hard-disk/132-pio-i-dma.html
- https://social.technet.microsoft.com/forums/ru-ru/4b5e981e-77cd-4aa6-9135-b5e7afbd5464/10551077108810771082108311021095108010901100-pio-10851072-dma


















