- •Физические основы магнитной записи и стирания информации
- •Методы визуализации магнитных полей носителей
- •Метод Биттера
- •Описание эксперимента
- •Магнитооптические методы
- •Магнитная силовая микроскопия
- •Заключение
- •Логическая организация жесткого диска
- •Немного о физической организации
- •Системные сектора
- •Начальная загрузка
- •Boot virus
- •Проблемы при загрузке
- •Ndd, Scandisk, fdisk… Советы
- •SiGuardian на страже здоровья винчестера
- •Smart ide Guardian (sig)
- •Пример анализа состояния по атрибутам
- •Плюсы и минусы siGuardian
- •Еще раз о режиме dma
Конец формы
Если у вас есть какие-либо сомнения относительно того, что такое DMA и зачем этот режим нужен, я постараюсь их развеять.
Известно, что обмен данными с внешними устройствами может производиться по двум основным механизмам. Первый - программируемый ввод-вывод (PIO), когда за данными к внешнему устройству обращается процессор, прочитывая каждый байт (или слово) из порта и записывая его в нужную область памяти (или наоборот). Второй механизм - прямой доступ памяти (DMA), когда процессор программирует специальный контроллер, задавая область памяти, размер блока, направление передачи (чтение или запись данных), после чего дает команду на выполнение и ждет окончания процесса (прерывания). С внешним устройством работает контроллер, позволяя процессору заниматься другой работой (при этом доступа к памяти в общем случае процессор не имеет).
Те же принципы используются при организации обмена данными с жестким диском. Спецификация ATA (или IDE) предусматривает наличие хост-контроллера, работающего по шине PCI (для возможности работы со скоростью выше 10Мбайт/c) и контроллера жесткого диска, расположенного на самом диске. Хост-контроллер (обычно это функциональная часть чипсета - "южного моста" или хаба ICH) как раз и обеспечивает возможность работы по механизму DMA, выполняя монопольное владение (захват) шиной PCI на время обмена с контроллером винчестера (механизм Bus Mastering). Данные поступают непосредственно в память по два принятых слова (ширина PCI - 32 бита, а обмен контроллеров - словами, по 16 бит).
Теперь о режимах. Обмен между двумя контроллерами может производиться по разным протоколам - с разными задержками на выдачу тех или иных сигналов. Режимов PIO, управляемы процессором, бывает пять видов - PIO4, старший режим, позволяет работать со скоростью 16.6 Мбайт/c. Режимы DMA позволяют передавать данные как по одному слову (Single Word), так и несколько сразу (Multi Word), со скоростью до 16.6 Мбайт/c - обычный протокол, и до 66 Мбайт/c (или 100) - протокол UltraDMA. Вообще UltraDMA - особый протокол обмена, с контрольными кодами и передачей по обоим фронтам синхроимпульса, является частью спецификации UltraATA.
Какие выгоды можно получить от использования механизма DMA? Очевидны два момента. Первый - уменьшение нагрузки на процессор. В однозадачной операционной среде (вроде MS-DOS) смысла от этого не будет, так как процессор все равно должен ожидать поступления данных для продолжения выполнения программы. А вот в многозадачной среде вроде Windows процессор может просто сосредоточиться на других задачах, тем самым повысив общую производительность. Второй момент - скорость работы в UltraDMA-режиме выше, чем в PIO4 или DMA2. Современные жесткие диски уже способны обрабатывать данные со скоростью выше 16 Мбайт/c, поэтому применение протокола UltraDMA имеет смысл в любом случае.
Для работы в режимах DMA необходимо следующее. Аппаратное взаимодействие двух контроллеров (хост-контроллера и контроллера винчестера) возможно в максимальном режиме, поддерживаемом обоими. Самый быстрый из реально существующих сегодня режим UltraATA/66 поддерживается хост-контроллерами в составе Интеловских хабов ICH (чипсеты i810, i820, i840, i815), "южными мостами" VT82C596 и VT82C686 от VIA (разные чипсеты), последние чипсеты от AMD, ALI и SIS тоже поддерживают UltraATA/66. Кроме того, контроллеры Promise и HighPoint устанавливаются на материнские платы на чипсете BX, что позволяет также работать по протоколу UDMA/66. Жесткие диски уже больше года поддерживают UDMA/66. Со стороны программных средств нужен BIOS, правильно определяющий максимальные режимы и конфигурирующий контроллеры, и операционная система с драйверами, способными организовать режим Bus Mastering для хост-контроллера. Режим DMA выбирается максимальным - или UDMA/66, или UDMA/33. DMA2 уже не дает выигрыша в скорости обмена, хотя и разгружает процессор.
Работа DMA-режима в среде DOS возможна. Для этого нужен соответствующий драйвер. VIA поставляет его в составе своих драйверов, Intel - нет. Впрочем, особой выгоды от этих драйверов нет, да и кто сейчас занимается серьезной работой под DOS? Вот Windows - другое дело.
Начиная с Windows95 OSR2, драйвера для хост-контроллера жестких дисков входят в состав стандартного набора драйверов. Всем известная "галочка" DMA как раз и включает режим Bus Mastering хост-контроллера, управляя стандартными драйверами от Microsoft. Если эти драйвера вас не устраивают (например, они не поддерживают UltraDMA/66 для чипсетов i810, i820 и старше), есть смысл установить драйвера от производителя чипсета (Intel, AMD, VIA, ALI…). При этом "галочки" вы уже не увидите, а переключать режимы PIO/DMA нужно специальной утилитой в составе установленных драйверов.
Небольшое замечание. Стандартные драйвера Windows определяют максимальный режим работы, обращаясь к информации, представляемой BIOSом о жестком диске. При использовании диска с поддержкой UDMA/66 на системе без соответствующего хост-контроллера и со старым BIOS установка "галочки" DMA приводит к ошибке, т.к. BIOS рапортует о режиме UDMA/66, а наивный драйвер пытается заставить хост-контроллер сделать невозможное. Выход - новый BIOS (лето 99-го года или старше) или отключение UDMA/66 на жестком диске специальной утилитой от производителя.
Хотите конкретные цифры о выгоде UltraDMA? Посмотрите на диаграмму. Жесткий диск - Quantum lct10 15Гб, хост-контроллер - PIIX4E (чипсет Intel BX). На VIA результаты аналогичные.