, доступный по чтению и записи, используется для запуска контроллера и задания направления передачи. Запуск осуществляется при переходе бита 0 из нуля в единицу, останов для текущего сеанса необратим. Останов контроллера (сброс бита) обычно выполняют по окончании выполнения команды ATA/ATAPI (по прерыванию). Преждевременный останов приведет к ошибке выполнения команды с соответствующим сообщением. Направление должно быть задано до запуска контроллера, изменять его «на ходу» нельзя.
В регистре состояния
BMISx
биты 1 и 2 устанавливаются аппаратно,
а сбрасываются при записи байта с единичным значением в соответствующем бите. После сброса бита запроса прерывания он снова установится только по следующему фронту сигнала прерывания от устройства. Биты 5 и 6 устанавливаются программно, обычно когда POST определяет возможности подключенных устройств и программирует режимы контроллера. Регистр состояния должен быть прочитан после завершения выполнения команды для определения успешности операций на шине PCI.
В регистр
BMIDPTx
заносят адрес таблицы дескрипторов областей памяти, с которыми производится обмен данными. Контроллер способен при чтении памяти собрать поток данных из произвольного числа областей (gathered read), а при записи «разбросать» поток по этим областям (scatter write). Такая возможность встречалась еще в EISA-системах, она позволяет преодолевать барьеры на границах страниц, свойственные стандартным контроллерам DMA и страничной переадресации процессоров х86. Каждый дескриптор занимает 8 байтов:
♦ байты 0–3 (двойное слово) — физический адрес начала области (четный);
♦ байты 6–7 (слово) — признак конца таблицы (бит 15), биты 0-14 не используются (0).
Каждая область может быть расположена в произвольном месте памяти (кроме отображаемой на шину ISA) и иметь произвольный размер, но не должна пересекать границы страниц размером 64 Кбайт. Таблица дескрипторов должна быть выровнена по границе двойного слова и не должна пересекать границы страниц, имеющих размер 64 Кбайт. Число дескрипторов в таблице произвольно, последний должен содержать признак конца таблицы. Обмен начинается с области, описанной первым дескриптором; за ней идет область следующего дескриптора и так далее до последнего. Контроллер остановится по исчерпании счетчика в последнем дескрипторе или по инициативе устройства, если в обмене должно участвовать меньшее число данных. Если устройству данных не хватит, оно укажет на ошибку при завершении команды.
После запуска контроллера второй и нулевой биты регистра состояния отражают следующие ситуации:
♦ 0,1 — происходит обмен с памятью, прерывания по концу операции еще нет;
♦ 1,0 — обмен завершен, переданный объем соответствует объему описанных буферов (нормальное завершение);
♦ 1,1 — устройство завершило обмен, но по команде ATA передано меньше данных, чем описано в таблицах (допустимое завершение);
♦ 0,0 — ошибка на шине (бит 1), или в таблицах описано меньше данных, чем в команде ATA.
Конфигурирование устройств
Устройства ATA перед подключением к шине должны быть корректно сконфигурированы. Конфигурирование подразумевает выбор типа интерфейса и определение адреса устройства. Тип интерфейса — XT или AT — определяется моделью накопителя. В изделиях фирмы Seagate, например, тип обозначается последней буквой в шифре модели: А — ATA (16 бит,) X — для XT (8 бит), а сочетание АХ означает возможность выбора AT/XT с помощью джампера.
Существует два способа задания адреса устройства — кабельной выборкой или явным заданием адреса на каждом из устройств. Режим кабельной выборки включается
перемычкой CS (Cable Select — кабельная выборка). В этом случае оба устройства на шине конфигурируются одинаково — в режим CS, а адрес устройства определяется его положением на специальном ленточном кабеле (см. рис. 9.3). Кабельная выборка будет работать, если она поддерживается и задана на всех устройствах канала, включая хост-адаптер, который обеспечивает заземление контакта 28. При этом способе задания адресов синхронизация шпинделей накопителей через тот же провод контакта 28 исключается (актуально в RAID-массивах). Кабельная выборка применяется редко. Ее условное преимущество — унификация конфигурирования устройств, а недостатком является привязка физического положения устройств к кабелю — ведущее устройство должно быть ближе к адаптеру, чем ведомое. Возможно подключение адаптера к среднему разъему, а устройств — к крайним, но это не всегда удобно.
Более распространен режим явной адресации, при котором используется обычный «прямой» кабель (см. рис. 9.2). В этом случае перемычка
CS
не устанавливается, а адрес устройства задается перемычками, состав которых варьируется. В принципе, достаточно лишь указать устройству его номер (0/1), но в устройствах, разработанных до стандарта ATА, ведущему устройству «подсказывали» о наличии ведомого (по интерфейсу ATA оно могло бы определить это само по сигналу
DASP#
). Ниже перечислены комбинации джамперов, которые можно увидеть на устройствах IDE.
♦
M/S
(Master/Slave — ведущее/ведомое) — переключатель адреса. Если на шине присутствует одно устройство, оно должно быть сконфигурировано как ведущее. Если на шине два устройства — одно должно быть ведущим, другое ведомым. Иногда джампер обозначается как
C/D
(диск
C:
/диск
D:
), но для второго канала IDE такое название некорректно. Когда появились первые IDE-диски емкостью 1 Гбайт, для преодоления барьера в 504 Мбайт некоторые модели допускали конфигурирование в виде двух устройств (0 и 1) половинной емкости. В таком режиме на их ленточный кабель IDE второе физическое устройство подключать нельзя.
♦
SP
(Slave Present),
DSP
(Drive Slave Present),
Master but Slave is not ATA-compatible
или
Master but Slave uses only PDIAG-signal
— устанавливается на ведущем устройстве для указания на присутствие ведомого. Если переключатель установлен, а ведомое устройство не подключено, POST даст сообщение об ошибке. Джампер применяется для дисков, не использующих сигнал
DASP#
.
♦
Single Drive
— джампер, устанавливаемый на устройстве, если оно единственное на шине (встречается на дисках Western Digital). Устройство будет ведущим.
♦
ACT
(Drive Active) — джампер, соединяющий линию
DASP#
с формирователем сигнала активности устройства. Устанавливается на устройстве 0, встречается редко.
♦
HSP
— джампер, заземляющий линию
DASP#
(положение, взаимоисключающее
ACT
). Устанавливается на устройстве 1 для сигнализации о его присутствии (встречается редко).
Для полностью ATA-совместимых дисков правильно сконфигурированные устройства определяются автоматически. Современные контроллеры ATA позволяют подключать даже единственное устройство как ведомое — интерфейсные функции ведущего берет на себя контроллер.