(Busy) указывает на занятость устройства, значение этого бита действительно всегда. При
BSY
=1 устройство игнорирует попытки записи в командный блок регистров, а чтение этих регистров дает неопределенный результат. При
BSY
=0 регистры командного блока доступны, в это время устройство не может устанавливать бит
DRQ
, изменять значение битов
ЕRR
и содержимое остальных командных регистров (могут меняться только значения битов
IDX
,
DRDY
,
DF
,
DSC
и
CORR
). Бит может устанавливаться на кратковременный интервал, так что хост может этого не заметить. Бит устанавливается:
• при сбросе устройства;
• по получении команды, если не устанавливается
DRQ
;
• между передачами блоков данных в режиме PIO
и после них, пока не обнулился
DRQ
;
• во время передач данных в режиме DMA.
♦ Бит 6 —
DRDY
(Device Ready) указывает на готовность устройства к восприятию любых кодов команд. Если состояние бита изменилось, оно не может вернуться обратно до чтения регистра состояния. При
DRDY
=0 устройство воспринимает только команды
Execute Device Diagnostic
и
Initialize Device Parameters
, прекращая выполнение текущей команды и сообщая об этом флагом
ABRT
в регистре ошибок и флагом
ERR
в регистре состояния. Другие команды приводят к непредсказуемым результатам. Устройства ATAPI сбрасывают бит по любому сбросу и команде
Execute Device Diagnostic
. Бит устанавливается устройством ATA, когда оно готово к выполнению всех команд. Устройство ATAPI устанавливает бит до завершения выполнения команд, за исключением команд
Device Reset
и
Execute Device Diagnostic
.
♦ Бит 5 —
DF
(Device Fault) — индикатор отказа устройства.
♦ Бит 4 —
DSC
(Device Seek Complete) — индикатор завершения поиска трека. В командах, допускающих перекрытие, бит называется
SERV
(Service Required) — устройство требует обслуживания.
♦ Бит 3 —
DRQ
(Data Request) — индикатор готовности к обмену словом или байтом данных.
♦ Бит 2 —
CORR
(Corrected Data) — индикатор исправленной ошибки данных.
♦ Бит 1 —
IDX
(Index) — индекс, трактуется особо каждым производителем.
♦ Бит 0 —
ERR
(Error) — индикатор ошибки выполнения предыдущей операции.
Дополнительная информация содержится в регистре ошибок. Если установлен бит
ERR
, до приема следующей команды, программного или аппаратного сброса устройство не изменит состояние этого бита, а также регистра ошибок, регистра количества секторов и регистров цилиндра, головки и номера сектора. Для команд
Packet
и
Service
бит называется
CHK
и служит признаком исключительной ситуации.
В стандарте ATA/ATAPI-4 для некоторых команд биты 4 и 5 могут иметь иное назначение, а биты 1 и 2 объявлены устаревшими.
Назначение регистра команд
CR
(1F7h, 177h) очевидно из названия. Устройство начинает исполнять команду сразу, как только ее код записан в данный регистр. Команда
Device Reset
выполняется устройством ATAPI независимо от состояния битов
BSY
и
DRQ
, и даже в состоянии Sleep.
Полный список команд ATA приведен в литературе [4, 5, 9].
Протоколы и режимы передачи данных
Программа общается с устройствами ATA через регистры, используя инструкции ввода-вывода
IN
и
OUT
. Для передачи данных с максимальной скоростью применяют программный доступ PIO к регистру данных инструкциями
INSW
/
OUTSW
или по каналу DMA. Тип обмена (PIO или DMA) определяется командой обращения. Программный доступ PIO обязателен для всех устройств, команды режима DMA устройствами могут не поддерживаться. Параметры различных режимов обмена приведены в табл. 9.7.
Таблица 9.7. Параметры режимов передачи
Режим передачи
Минимальное время цикла, нс
Скорость передачи, Мбайт/с
Интерфейс
PIO mode 0
600
3,3
ATA
PIO mode 1
383
5,2
ATA
PIO mode 2
240
8,3
ATA
PIO mode 3
180
11,1
E-IDE, ATA-2 (используется IORDY)
PIO mode 4
120
16,6
E-IDE, Fast ATA-2 (используется IORDY)
Singleword DMA Mode 0
960
2,08
ATA
Singleword DMA Mode 1
480
4,16
ATA
Singleword DMA Mode 2
240
8,33
ATA
Multiword DMA Mode 0
480
4,12
ATA
Multiword DMA Mode 1
150
13,3
ATA-2
Multiword DMA Mode 2
120
16,6
FastАТА-2
Ultra DMA Mode 0
120¹
16,6
ATA/ATAPI-4
Ultra DMA Mode 1
80¹
25
ATA/ATAPI-4
Ultra DMA Mode 2
60¹
33
ATA/ATAPI-4
Ultra DMA Mode 3
45¹
44,4
ATA/ATAPI-5
Ultra DMA Mode 4
30¹
66,6
ATA/ATAPI-5
Ultra DMA Mode 5
20¹
100
ATA/ATAPI-6
¹ В
пакете данных режима Ultra DMA за каждый такт передаются два слова данных, один по фронту синхронизирующего сигнала, другой по спаду. Период следования синхросигналов равен удвоенному времени цикла.
Программный доступ PIO (Programmed Input/Output) выполняется в виде следующих друг за другом операций чтения или записи в пространстве ввода-вывода по адресу регистра данных. Готовность устройства проверяется перед началом передачи блока, после чего хост производит серию операций в определенном темпе, который определяется выбранным режимом PIO Mode 0–4. Для каждого режима определены допустимые параметры временной диаграммы цикла обмена. Обмен PIO программно реализуется с помощью процессорных инструкций ввода-вывода строк
REP INS
или
REP OUTS
с занесенным в регистр
СХ
количеством слов (или байтов) в передаваемом блоке. Эти инструкции обеспечивают максимально возможную скорость обмена для данного процессора и системной шины. «Обуздать» процессор в соответствии с выбранным режимом входит в задачу адаптера ATА, который использует для удлинения цикла сигнал готовности шины (для ISA —
IOCHRDY
). Традиционные режимы 0, 1 и 2 имеют временные параметры, фиксируемые только хост-адаптером. Для прогрессивных режимов ATA-2 (PIO Mode 3 и выше) устройство может затормозить обмен, используя сигнал готовности
IORDY
. Программный обмен на все время передачи блока занимает и процессор, и системную шину.
Обмен по каналу DMA занимает исключительно шины ввода-вывода и памяти. Процессору требуется выполнить только процедуру инициализации канала, после чего он свободен до прерывания от устройства в конце передачи блока (этим могут воспользоваться многозадачные системы). Стандартные каналы DMA шины ISA для интерфейса ATA не используются из-за низкой пропускной способности. Высокопроизводительные адаптеры ATA имеют собственные более эффективные контроллеры. Режимы обмена по каналу DMA бывают одиночными и множественными. При одиночном режиме — Singleword DMA — устройство для передачи каждого слова вырабатывает сигнал запроса
DMARQ
и сбрасывает его по сигналу
DMACK#
, подтверждающему цикл обмена. При множественном режиме — Multiword DMA — на сигнал
. Если устройство не справляется с потоком, оно может приостановить его снятием сигнала
DMARQ
, а по готовности установить его снова. Множественный режим позволяет развить более высокую скорость передачи.
В спецификации ATA/ATAPI-4 появился новый режим — Ultra DMA, позволяющий перешагнуть барьер в 16,6 Мбайт/с, свойственный традиционным режимам и используемому кабелю. При этом обеспечивается и контроль достоверности передачи данных по шине, чего не делалось ни в PIO, ни в стандартных режимах DMA (а зря!). Стандартом ATA-4 было определено 3 режима Ultra DMA (0, 1 и 2), впоследствии ввели новые; выбор режима осуществляется командой
Set Features
. В режимах Ultra DMA сигналы
DMARQ
и
DMACK#
сохраняют свое назначение, а вот смысл сигналов
DIOR#
,
DIOW#
и
IORDY
на время передачи пакета (Ultra DMA Burst) существенно меняется. В пакете данные на шине сопровождаются стробом, генерируемым источником данных, причем для синхронизации используются оба перепада сигналов. Это позволяет повысить пропускную способность шины до 33 Мбайт/с, не увеличивая частоту переключения сигналов сверх 8,33 с– 1 (этот предел для обычного кабеля достигается в режиме PIO Mode 4 и Multiword DMA Mode 2). Каждое переданное слово участвует в подсчете CRC-кода, который передается хост-контроллером в конце пакета. Подсчет ведется и источником данных, и приемником.