Система команд SCSI
Система команд SCSI включает общие команды, применимые для устройств всех классов, и специфические для каждого класса. Все команды делятся на три категории:
Любое SCSI-устройство должно поддерживать обязательные команды общего набора и своего класса, чем обеспечивается высокий уровень совместимости. Команды SCSI для устройств прямого доступа (Direct-Access Devices) приведены в табл.7.
Таблица 7
Команды SCSI для устройств прямого доступа
№ | Команда | Код команды | Тип команды |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | CHANGE DEFINITION COMPARE COPY COPY AND VERIFY FORMAT UNIT INQUIRY LOCK-UNLOCK CACHE LOG SELECT LOG SENSE MODE SELECT (6) MODE SELECT (10) MODE SENSE (6) MODE SENSE (10) PRE-FETCH PREVENT-ALLOW MEDIUM REMOVAL READ (6) READ (10) READ BUFFER READ CAPACITY READ DEFECT DATA READ LONG REASSIGN BLOCKS RECEIVE DIAGNOSTIC RESULTS RELEASE REQUEST SENSE RESERVE REZERO UNIT SEARCH DATA EQUAL SEARCH DATA HIGH SEARCH DATA LOW SEEK (6) SEEK (10) SEND DIAGNOSTIC SET LIMITS START STOP UNIT SYNCHRONIZE CACHE TEST UNIT READY VERIFY WRITE (6) WRITE (10) WRITE AND VERIFY WRITE BUFFER WRITE LONG WRITE SAME | 40h 39h 18h 3Ah 04h 12h 36h 4Ch 4Dh 15h 55h 1Ah 5Ah 34h 1Eh 08h 28h 3Ch 25h 37h 3Eh 07h 1Ch 17h 03h 16h 01h 31h 30h 32h 0Bh 2Bh 1Dh 33h 1Bh 35h 00h 2Fh 0Ah 2Ah 2Eh 3Bh 3Fh 41h | O O O O M M O O O O O O O O O M M O M O O O O M M M O O O O O O M O O O M O O O O O O O |
Примечание: M ? обязательные команды, O ? опциональные команды. |
Некоторые команды сопровождаются блоком параметров, следующим за блоком дескриптора команды. Форматы блоков стандартизированы, длина блока определяется кодом операции, который всегда является первым байтом блока и может составлять 6, 10 или 12 байтов.
Любое ЦУ SCSI должно поддерживать четыре команды: Inquiry, Request Sense, Send Diagnostic, Test Unit Ready.
Рассмотрим структуру команды SCSI на примере 6-байтной команды Copy.
Byte\Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | Operation Code | |||
1 | 0 | 0 | 0 | 0 | LUN | Reserved | Pad | |||||
2 | Parameter List Length (MSB) | |||||||||||
3 | Parameter List Length | |||||||||||
4 | Parameter List Length (LSB) | |||||||||||
5 | 0 | 0 | 0 | 0 | Vendor Unique | Reser | Flag | Link | ||||
Operation Code ? код операции 18h;
LUN ? Logical Unit Number, номер логического блока;
Reserved ? зарезервировано для последующих стандартов, должны быть записаны нули;
Parameter List Length ? длина списка параметров (MSB ? старший байт, LSB ? младший байт);
Vendor Unique ? определяется разработчиком (изготовителем);
Flag ? определяет сообщение, передаваемое в случае успешного выполнения команд цепочки;
Link ? признак объединения команд в цепочку;
Pad ? используется в связке с Cat bit, определяет, какое действие будет следующим, если сегмент копирования не соответствует точному числу блоков назначения.
Команда копирования обеспечивает возможность копирования данных с одного логического блока на другой или на тот же логический блок. Логические блоки могут располагаться на разных устройствах SCSI либо на одном и том же. Некоторые устройства SCSI могут не поддерживать операцию копирования для «третьей стороны», где копирующее устройство не является исходным устройством или устройством назначения. Некоторые устройства SCSI поддерживают только операции копирования в рамках одного устройства SCSI, но без участия других устройств SCSI.
Parameter List Length указывает число байтов параметров, которые должны быть переданы во время выполнения фазы Data Out команды.