Аппаратные интерфейсы ПК. Энциклопедия - Михаил Гук
Шрифт:
Интервал:
Закладка:
♦ Для поддержки Ultra DMA 0, 1 и 2 (до 33 Мбайт/с) к этим требованиям добавляется наличие раздельных формирователей сигнала DMACK#.
♦ Для поддержки Ultra DMA 3 и выше (44-100 Мбайт/с) все линии должны иметь раздельные приемопередатчики. Общими могут быть только сигналы RESET#, INTRQ, DA(2:0), CS0#, CS1# и DASP#, но стандарт этого не рекомендует.
Поскольку скорость программного обмена задается хост-адаптером, интересно индивидуальное программирование режимов PIO Mode для каждого канала/устройства. Ряд чипсетов этого не допускает и при инициализации назначает общий минимальный режим. В результате подключение «тихоходного» устройства замедляет обмен быстрого соседнего устройства.
Современные системные платы оснащаются высокопроизводительными контроллерами шины ATА, обеспечивающими прямое управление шиной PCI (bus mastering) при обмене с устройствами в режимах DMA и Ultra DMA. Прямое управление шиной повышает суммарную производительность компьютера в многозадачных и многопоточных операционных системах. Сами по себе режимы DMA не дают выигрыша в скорости обмена по шине ATA — только режимы UltraDMA Mode 1 и выше превосходят по скорости режим PIO Mode 4 (см. табл. 9.7). Однако обмен в режиме DMA значительно меньше загружает центральный процессор компьютера, и параллельно с дисковым обменом процессор может заниматься обработкой других потоков (задач). В однозадачных (и однопоточных) системах во время дискового обмена процессор все равно ничем другим не занимается, поэтому для них хорош и режим PIO Mode. Для реального использования режима прямого управления в операционной системе должен быть установлен специальный драйвер Bus-Master, соответствующий используемому контроллеру ATA (как правило, чипсету системной платы). Стандартный контроллер PCI IDE описан ниже. Операционная система MS-DOS режимы DMA (и прямое управление) не использует. Для многозадачных ОС (Windows 9x/NT/2000, OS/2, Unix, Linux, NetWare…) драйверы могут входить в комплект поставки ОС или поставляться производителями системных плат (контроллеров ATA). И наконец, режим DMA должны поддерживать подключаемые устройства. Практически все современные устройства поддерживают Ultra DMA (или Multiword DMA), но если в паре с таким устройством к одному контроллеру подключено старое устройство, не поддерживающее этот режим, то прогрессивные режимы могут оказаться недоступными (по вине чипсета или драйвера) и для нового устройства.
ВНИМАНИЕРежим UltraDMA привлекателен не только скоростью и разгрузкой процессора, но и контролем достоверности передач по шине ATA (правда, этот контроль корректно работает не со всеми драйверами).
Поскольку контроллеры ATA подключаются к 32-разрядной шине PCI, в них ввели возможность обращения к регистру данных ATA двойными словами. При этом за одну 32-битную операцию процессора и шины PCI по шине ATA последовательно передаются два 16-битных слова. Возможностью 32-разрядного доступа к регистру данных можно управлять через параметр IDE 32-bit Transfer (Enable/Disable) BIOS Setup.
Более сложные контроллеры (отдельные карты расширения) могут иметь собственную кэш-память и управляющий процессор. Они могут аппаратно поддерживать «зеркальные» диски и организовывать RAID-массивы ATA-дисков. Некоторые адаптеры позволяют соединять несколько физических дисков в один логический на уровне вызовов BIOS.
Адаптеры ATA одно время часто размещали на звуковых картах (для подключения CD-ROM). По умолчанию им назначают ресурсы канала 3 или 4. К этим каналам можно подключать винчестеры, но будет ли их там искать BIOS во время теста POST — вопрос. Современные версии BIOS позволяют хранить конфигурационные параметры четырех жестких дисков, более старые версии — двух. Четыре канала ATA физически позволяют подключить до восьми накопителей, но работа с ними лимитирована программными ограничениями.
Существуют гибридные адаптеры для подключения ATA HDD к шинам XT и MCA или, например, к LPT-порту. В последнее время получили распространение переходные адаптеры, позволяющие подключать устройства ATA/ATAPI к шине USB. При использовании USB 2.0 простота подключения внешнего устройства будет сочетаться и с высокой скоростью передачи данных.
Контроллер PCI IDEДля шины PCI существует стандартный вариант интерфейса контроллера IDE (название «ATA» здесь не очень уместно, поскольку оно ориентировано на ISA-подобную шину). Спецификация «PCI IDE Controller Specification» появилась еще в 1994 году, она описывала реализацию контроллера, совместимого с интерфейсом ATA. По сравнению с обычным контроллером, у данного контроллера в блоке управляющих регистров имеется лишь один адрес (устаревший регистр адреса недоступен). Чуть позже была опубликована спецификация «Programming Interface for Bus Master IDE Controller», описывающая работу с устройствами в режиме DMA с прямым управлением шиной. Двухканальный контроллер является одной функцией PCI; четырехканальный контроллер будет уже многофункциональным устройством PCI. Для контроллера определены два режима распределения ресурсов:
♦ режим совместимости (compatibility), в котором каналам выделяются традиционные области адресов ввода-вывода и линии прерываний;
♦ естественный режим PCI (native-PCI), в котором базовые адреса блоков регистров и линии прерывания задаются в регистрах конфигурационного пространства и могут быть произвольно перемещаемы в любую область.
Распределение ресурсов для контроллера приведено в табл. 9.9. В режиме совместимости контроллер может работать только на первичной шине PCI, поскольку мост PCI-PCI не будет транслировать обращения по стандартным адресам на другую шину. В режиме PCI с перемещаемыми ресурсами контроллер может находиться на любой шине. Конкретный контроллер может поддерживать изменение режима или один из режимов. Если контроллер по умолчанию (или всегда) работает в режиме совместимости, то для ПО он «прозрачен» — работа с ним не отличается от традиционного контроллера ATA. Текущий режим и возможность его смены отражается в байте программного интерфейса, являющегося последним элементом идентификатора класса устройства. Байт интерфейса имеет следующее назначение битов:
♦ бит 7 (bus mastering) — возможность работы в режиме прямого управления;
♦ биты 6:4 — 000 (признак стандартного интерфейса, соответствующего PCI IDE Controller Specification);
♦ бит 3 — индикатор программируемости режима для второго канала (возможности изменения бита 2);
♦ бит 2 — режим второго канала: 0 — совместим со стандартным контроллером ATA IDE, 1 — PCI IDE;
♦ бит 1 — индикатор программируемости режима для первого канала (возможности изменения бита 0);
♦ бит 0 — режим первого канала: 0 — совместим с ATA IDE, 1 — PCI IDE.
Таблица 9.9. Ресурсы контроллера PCI IDE
Ресурс Режим совместимости: ресурсы для каналов Естественный режим PCI: базовый адрес (смещение в конфигурационном пространстве) для канала 1 2 1 2 Блок командных регистров 1F0h-1F7h 170h-177h 10h 14h Блок управляющих регистров 3F6h 376h 18h 1Ch Прерывание 14 15Типовой контроллер имеет класс 01:01:80h и реализован в чипсетах большинства современных системных плат. Контроллер выглядит как расширение стандартного ATA-контроллера, обеспечивающего доступ к регистрам устройств ATA/ATAPI по известным адресам. Расширение касается прямого управления шиной PCI (bus mastering), благодаря которому можно реализовать обмен данными с устройствами в режимах DMA. Контроллер позволяет использовать все доступные ему режимы обмена PIO (3,3-16,6 Мбайт/с), режимы DMA в стиле контроллера 8237А (2-16,6 Мбайт/с) и режимы UltraDMA (16,6-100 Мбайт/с). Все настройки временных параметров выполняются через конфигурационные регистры PCI, их состав может быть специфичным. Однако с этими регистрами должна иметь дело только процедура POST, устанавливая для каждого обнаруженного устройства ATA/ATAPI оптимальные режимы PIO и DMA/UltraDMA. В эти настройки может вмешаться пользователь, установив какие-либо ограничивающие параметры в BIOS Setup. В итоге после конфигурирования во время POST при обращении программ к устройствам остается выбор лишь между PIO и DMA (если устройство поддерживает DMA). Для обмена в режиме PIO никаких специальных действий не требуется, программа просто выполняет чтение или запись в регистр данных командами REP INS/OUTS. Для обмена в режиме DMA требуется «зарядить» и запустить контроллер прямого управления, о чем и пойдет речь ниже.