Управление интерфейсом
5.3. Управление интерфейсом
Для управления интерфейсом служит система сообщений - Message System, которыми обмениваются ИУ и ЦУ. Обмен происходит в фазах Message IN/OUT (см. выше), в одной фазе может передаваться несколько сообщений. Одно сообщение не может расщепляться на несколько фаз. Форматы сообще- ний стандартизованы; каждое сообщение начинается с кода. Существуют однобайтные (коды OOh, 02h-lFh, SOh-FFh), двухбайтные (коды 20h-2Fh) и расширенные сообщения (код Olh). В двухбайтном сообщении второй байт является аргу- ментом сообщения. В расширенных сообщениях второй байт задает длину, а последующие байты несут код и аргументы сообщения. Коды сообщений приведены в табл. 5.10.
Код | Направление | Сообщение | Назначение | ||||
OOh | In | Command Complete | Процесс ввода/вывода завершен, информация о состоянии послана в сообщении Status | ||||
02h | In | Save Data Pointer | Сохранение указателя данных |
Код | Направление | Сообщение | Назначение | ||||
03h | In | Restore Pointers | Восстановление указателей | ||||
04h | In | Disconnect | Текущее соединение разрывается, но для продолжения процесса потребуется повторное соединение (не вызывает сохранения текущих указателей) | ||||
04h | Out | Disconnect | Инструкция ЦУ на разрыв соединения | ||||
05h | Out | Initiator Detected Error | ИУ обнаружило ошибку на шине | ||||
06h | Out | Abort | Сброс всех процессов, связанных с данной парой 1Т, и освобождение шины | ||||
07h | In/Out | Message Reject | Сообщение (или его параметры) недействительны для получателя | ||||
08h | Out | No Operation | ИУ нечего ответить на запрос сообщения | ||||
09h | Out | Message Parity Error | Последний байт сообщения принят с неверным паритетом | ||||
OAh | In | Linked Command Complete | Цепочка команд завершена. ИУ может инициализировать указатели для новой цепочки | ||||
OBh | In | Linked Command Complete (With Flag) | То же, но ИУ между цепочками команд вызывает прерывание в хост-системе | ||||
ОСЬ | Out | Bus Device Reset | Аппаратный сброс ЦУ и освобождение шины | ||||
ODh | Out | Abort Tag | Сброс текущего процесса, связанного с данной парой 1Т, и освобождение шины |
код |
Направление |
Сообщение |
Назначение |
OEh |
Out |
QearQueue |
Сброс всех процессов и освобождение шины ( эквивалентно серии сообщений Abort, принятых от всех ИУ) |
OFh |
In/Out |
Initiate Recovery |
Сообщение для уведомления об асинхронных событиях (ЦУ временно становится ИУ) |
lOh |
Out |
Release Recovery |
Завершение обработки асинхронных событий |
llh |
Out |
Terminate I/O Process |
Принудительное завершение текущего процесса без логического повреждения носителя уЦУ |
12h-lFh, 30h-7Fh |
Зарезервированы для 1-байтных сообщений |
||
80h-FFh |
Out |
Identify |
Установление связи типа ITL или ITR |
80h-FFh |
In |
Identify |
Восстановление связи типа ITL или ITR при повторном соединении. Вызывает восстановление сохраненных указателей |
2-байтные сообщения |
|||
20h |
In |
Simple Queue Tag |
Процесс помещен в очередь, аргумент - тег (OOh-FFh) |
20h |
Out |
Simple Queue Tag |
Обращение к конкретному процессу маркированной очереди, аргумент - тег (OOh-FFh) |
21h |
Out |
Head Of Queue Tag |
Помещение процесса в начало маркированной очереди для данного LUN, аргумент - тег (OOh-FFh) |
22h |
Out |
Ordered Queue Tag |
Помещение процесса в конец маркированной очереди для данного LUN, аргумент - тег (OOh-FFh) |
Код |
Направление |
Сообщение |
Назначение |
23h |
In |
Ignorv Wide Residue |
Последние байты последнего переданного слова недействительны (аргумент см. в табл. 5.11) |
24h-2Fh |
Зарезервированы для 2-байтных сообщений |
||
Расширенные сообщения. Первый байт - Olh, в поле "код" первым байтом указана длина, вторым - расширенный код |
|||
05h, OOh |
In |
Modify Data Pointer |
Запрос модификации указателя данных - суммирование текущего указателя с 4-байтным аргументом сообщения |
03h, Olh |
In/Out |
Synchronous Data Transfer Request |
Параметры синхронного режима обмена, 1-й байт аргумента определяет период посылки, 2-й - допустимое смещение REQ/ACK |
02h, 03h |
In/Out |
Wide Data Transfer Request |
Разрядность передач в фазах данных. Ар1умент задает число байт: 0 -1 байт, 1 -2 байта, 2-4 байта |
Значение 2-го байта |
Игнорировать биты данных при разрядности обмена |
|
32 бит |
16 бит |
|
Olh |
DB[31:24] |
DB[15:8] |
02h |
DB[31:16] |
Зарезервировано |
03h |
DB[31:8] |
Зарезервировано |
OOh, 04h - FFh |
Зарезервировано |
Зарезервировано |
а также предоставления права разрыва соединения служат сообщения Identify. В байте их кодов биты [2:0] в зависимо- сти от бита 5 LUNTAR задают номер LUN (LUNTAR=0) или TRN (LUNTAR=i). Каждый процесс может быть адресован только одному LUN или TRN. Если ЦУ во время выполне- ния процесса обнаружит сообщение с иным адресом связи, оно обязано освободить шину (ситуация неожиданного раз- рыва). Единичным значением бита 6 DiscPriv при передаче сообщения ИУ наделяет ЦУ правом разрыва соединения.
ИУ может проинструктировать ЦУ на разрыв соединения, послав ему сообщение Disconnect. Получив сообщение, ЦУ посылает одноименное сообщение (предварительно ЦУ мо- жет потребовать сохранения указателя данных, послав сооб- щение Save Data Pointer) и освобождает шину. Если ЦУ не поддерживает эту возможность, оно отвечает сообщением Message Reject. Когда процесс, продолжающийся в устрой- стве, потребует передачи данных, через фазу арбитража ЦУ обратится к ИУ за продолжением обмена.
С помощью сообщений согласуются параметры синхронно- го режима и разрядность данных. Процесс согласования син- хронного обмена называется Synchronous Negotiation. Уст- ройство, запрашивающее синхронный обмен, посылает сообщение Synchronous Data Transfer Request с указанием до- пустимого периода цикла и отставания REQ/ACK. Если дру- гой участник обмена поддерживает синхронный режим, он предложит свои параметры. Согласованными параметрами будут максимальный период и минимальное отставание (ну- левое отставание эквивалентно асинхронному режиму). Выб- ранный режим будет относиться только к фазам передачи между данной парой устройств.Отвергнутое сообщение яв- ляется требованием асинхронного режима. Поскольку ста- рые хост-адаптеры не поддерживали согласование синхрон- ного режима, на ЦУ запрос синхронного режима может быть заблокирован. О возможности работы в синхронном режи- ме хост может узнать, послав команды Request Sense и Inquiry.
Разрядность передач согласуется аналогично посредством сообщений Wide Data Transfer Request. Согласованные режи- мы будут действовать до сброса устройств по сообщению Bus Device Reset или "жесткого" сброса, что приведет к ус-
тановке предопределенных режимов по включению. Согла- сование режимов не должно инициироваться в каждом про- цессе, поскольку затраты времени на эту процедуру сведут на нет выигрыш в производительности.