Шины
Современные спецификации SCSI по структуре аналогичны спецификациям сетевых протоколов и состоят из трех уровней: команд, протокола и соединений. Уровень команд определяет формат и семантику команд и ответов на них, т. е. приблизительно соответствует тому, что в сетевых протоколах называется прикладным уровнем. Уровень протокола определяет способ передачи команд и ответов и соответствует канальному уровню сетевых протоколов.
И, наконец, уровень соединений определяет физическую реализацию линий передачи данных (способ кодирования данных, допустимые токи и напряжения, конструкцию разъемов и т. д.), т. е. соответствует физическому уровню [www.t10.org architecture, Friedhelm/Shmidt 1997]. Сетевой (в данном случае описывающий способ адресации устройств) и транспортный уровни в спецификациях SCSI также присутствуют, хотя и в рудиментарном виде.
Таблица 9.3. Типы устройств SCSI, возвращаемые командой INQUIRY, цит. по [www.t10.org commands].
Код | Описание |
---|---|
00h | Устройство прямого доступа (например, магнитный диск) |
01h | Устройство последовательного доступа (например, магнитная лента) |
02h | Печатающее устройство |
03h | Процессорное устройство |
04h | Устройство однократной записи (например, некоторые оптические диски) |
05h | CD-ROM |
06h | Сканер |
07h | Оптическое запоминающее устройство (например, некоторые оптические диски) |
08h | Устройство с автоматической заменой носителя (например, jukebox) |
09h | Коммуникационное устройство |
0Ah-0Bh | Определено ASC IT8 |
0Ch | Контроллер массива запоминающих устройств (например, RAID) |
0Dh | Устройство enclosure services (мост к шине другого типа) |
0Eh-1Eh | Зарезервировано |
1Fh | Неизвестный или неопределенный тип устройства |
На физическом уровне SCSI представляет собой параллельную шину с 8-ю или 16-ю (так называемая Wide SCSI) линиями передачи данных. Современные реализации стандарта обеспечивают скорости передачи данных до 160 Мбит/с. Стандартом SCSI III предусмотрены также реализации в виде последовательной шины IEEE 1394 или волоконно-оптических колец FC-AL (Fiber Channel Arbitrated Loop – волоконно-оптический канал [в виде] арбитрируемого кольца). Fiber Channel допускает объединение нескольких колец коммутаторами, подключение до 127 устройств, общую длину сети, измеряемую несколькими сотнями метров и скорости передачи до 1Гбит/с.
Обмен данными по шине происходит не байтами и даже не словами, а кадрами, которые могут содержать команды, информацию о состоянии устройства (sense data) или собственно данные. Формат кадров и способ разрешения коллизий зависит от используемого типа соединений – в этом смысле разделение уровня соединений и уровня протокола не реализовано в полной мере. Каждый кадр содержит адреса отправителя и получателя. Каждое устройство имеет собственный адрес, называемый SCSI target ID. У старых версий протокола этот адрес был 3-битным, допуская адресацию восьми устройств, у современной версии (Ultra-SCSI или SCSI III) адрес 4 – или 5-битный. Адаптер, через который шина SCSI подключается к системной или периферийной шине компьютера – НВА (Host Bus Adapter– адаптер системной шины) – также считается устройством и обычно имеет ID, равный, в зависимости от разрядности адреса, 7, 15 или 127.
Устройство, имеющее один target ID, может содержать несколько логически устройств, идентифицируемых номерами логических устройств (LUN – Logjc Unit Number). Спецификации протокола предусматривают два байта для код рования LUN, но реальное число логических устройств, поддерживаемых практике, обычно невелико.
Устройства SCSI делятся на два типа: инициаторы (initiator) и целевые устройства (target). Инициатор посылает команды, а целевое устройство их полняет. Спецификация допускает, что в разных актах обмена данными инициатор может становиться целевым устройством и наоборот, но в пределах одной операции эти роли заданы однозначно. Как правило, НВА может выступать только в роли инициатора, а периферийные устройства – только в роли целевых.
Блоки команд – CDB (Command Descriptor Block – блок описания команды) – невелики по размеру и могут содержать 6, 8, 10, 12 или 16 байт. Различие в длине обусловлено размером используемых в команде адресов: 6-байтовая команда использует 21-битный адрес блока на устройстве и 8-битное поле для длины требуемого блока данных, 8-байтовая – 32-разрядный адрес и 16-битное поле длины, а более длинные команды– 32-разрядные адрес и длину. 16-байтовая форма команды содержит, кроме 32-разрядных адреса и длины, также и 32-битное поле параметра. Кроме того, команда обязательно содержит код операции и поле управления. Под код операции отводится байт. Старшие три бита этого байта кодируют формат SCB. Некоторые команды используют только один формат SCB, другие допускают применение различных форматов (обычно с адресами и полем длины различной разрядности). Кроме перечисленных в табл. 9.4, различные типы устройств имеют собственные команды.