Студопедия — Адресация и система команд
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Адресация и система команд






Как указывалось ранее, любое устройство SCSI на шине ад-
ресуется идентификатором SCSI ID, соответствующим за-
данному уникальному адресу. В ЦУ может быть определено
до 8 ЛУ со своими номерами LUN (Logical Unit Number) в
диапазоне 0-7. Понятие LUN неприменимо к ИУ, но SCSI-
устройство двойного назначения может иметь Л У.

Система команд и сообщений позволяет адресовать как ЦУ
в целом, так и любое его Л У. В ЦУ может быть определено
до 8 целевых программ TRN (Target Routine), которые не име-
ют непосредственной привязки к ЛУ. Целевые программы
появились в SCSI-2, их адресация также производится че-
рез сообщения.

Система команд SCSI включает общие команды, применимые
для устройств всех классов, и специфические для каждого
класса. Как общие, так и специфические наборы команд со-
держат обязательные (Mandatory), дополнительные (Optional)
и фирменные (Vendor Specific) команды. Любое SCSI-устрой-
ство должно поддерживать обязательные команды общего
набора и своего класса, чем обеспечивается высокий уровень
совместимости. Команда передается ИУ в ЦУ через блок дес-
криптора команды Command Descriptor Block, посылаемый в
фазе Command. Некоторые команды сопровождаются блоком
параметров, следующим за блоком дескриптора в фазе Data.
Форматы блоков стандартизованы, длина блока определяет-
ся кодом операции Operation Code, который всегда является
первым байтом блока и может составлять 6, 10 или 12 байт.
Типовой блок содержит следующие поля (рис. 5.8):

as OpCode - код операции, 1 байт (графа "Код" в табл. 5.14).
Биты [7:5] определяют группу, а биты [4:0] - код команды.
В группе 0 блок дескриптора имеет длину 6 байт, в группах
1 и 2 - 10 байт, в группе 5-12 байт. Группы 3 и 4 зарезерви-
рованы, группы б и 7 отданы на усмотрение разработчиков.

т LUN - номер ЛУ (для совместимости со SCSI-1), всегда
занимает биты [7:5] байта 1. Если для идентификации ис-
пользуются сообщения Identify, то это поле игнорируется
(рекомендуется устанавливать LUN=0).

LBA - адрес логического блока, 21 бит для 6-байтных
блоков и 32 бит - для 10- и 12-байтных. В ряде команд
поле не используется.

Lengfh - длина (количество блоков или байт) передавае-
мых данных Transfer Length, блока параметров Parameter
List Length
или блока, резервируемого И У под данные
Allocation Length (один из трех вариантов в зависимости
от команды). При однобайтном задании длины 0 соответ-
ствует значению 256, в длинных формах 0 указывает на
отсутствие передач. В ряде команд поле не используется.

Control - байт управления. Биты [7:6] отданы на усмот-
рение разработчику, биты [5:2] - зарезервированы, бит 1 -
Flag, бит 0 - Link (служит признаком объединения команд
в цепочку). Flag определяет сообщение, передаваемое в
случае успешного выполнения команд цепочки, при
Flag=i сообщение Linked Command Complete (With Flag)
будет вызывать прерывания между командами цепочки.


Рис. 5.8. Форматы блоков дескрипторов команд: а-б байт,
б-10 байт, в-12 байт

Обратим внимание на порядок байт: первыми передаются
старшие байты (бит MSB - самый старший), за ними - млад-
шие (бит LSB - самый младший). Зарезервированные поля
для совместимости с будущими стандартами должны иметь
нулевые значения.

Исполнение команды завершается в фазе Status передачей
байта состояния Status Byte. Байт не передается, если ко-
манда завершена по сообщению Abort, Abort Tag, Bus Device
Reset, Clear Queue,
по условию Hard Reset или в случае не-
ожиданного разъединения. В байте состояния используются
только биты [5:1], возможные состояния приведены в
табл. 5.13 (остальные зарезервированы).

Биты Состояние Значение
RROOOOOR Good Успешное завершение команды
RR00001R Check Condition Указание на асинхронное событие
R R 0 0 0 1 0 R Condition Met Запрошенная операция выполнена (команды Search Data и Pre-Fetch)
R R 0 0 1 0 0 R Busy Занято (невозможен прием команды)
R R 0 1 0 0 0 R Intermediate Успешное выполнение команды в цепочке
RR01010R Intermediate Condition Met Удовлетворение запрошенной опера- ции в цепочке команд
R R 0 1 1 0 0 R Reservation Conflict Попытка обратиться к ЛУ, зарезер- вированному другим И У
RR10001R Command Terminated Завершение текущего процесса по сообщению Terminate I/O Process или по асинхронному событию
R R 1 0 1 0 0 R QueueFull Очередь (маркированная) заполнена, процесс в очередь не поставлен


Набор команд для устройств классов 0-9 приведен в
табл. 5.14. Любое ЦУ SCSI-2 обязано поддерживать четыре
команды: Inquiry, Request Sense, Send Diagnostic, Test Unit
Ready.
Они используются для конфигурирования системы,
тестирования устройств и сообщений об ошибках и исклю-
чительных ситуаций. Команда Inquiry позволяет получить
информацию о ЛУ через стандартизованный блок данных
длиной 96 байт: тип подключенного ПУ, возможность сме-
ны носителя, поддержка 32- или 16-битного расширения, син-
хронного обмена, относительной адресации, цепочек ко-
манд, очередей и уведомления об асинхронных событиях.

Здесь же описываются уровень поддержки стандартов SCSI
(ISO, ANSI, ECMA), идентификаторы производителя, уст-
ройства и т. п. Формат блока по усмотрению производителя
может быть расширен.

В графе "Применимость" указаны номера типов ПУ, соот-
ветствующие табл. 5.12 (символ * соответствует всем ти-
пам). Команды для каждого типа устройств могут быть обя-
зательными
- номер сопровождается символом m
(Mandatory) - или необязательными - номер типа сопро-
вождается символом о (Optional). Часть команд в устрой-
ствах разных классов реализуется по-разному, что отмече-
но обозначением *z.

Команда Код Применимость Назначение
Change Definition 40h *0 Модификация определений операций для ЛУ
Compare 39h *0 Побайтное сравнение данных двухЛУ1
Copy 18h *0 Копирование данных с одно- го ЛУ на другое'
Copy And Verify 3Ah *0 Копирование данных с одно- го ЛУ на другое с верифи- кацией1
Erase 19h 1m Стирание (участка или до конца носителя)
Erase (10) 2Ch 7o То же с 10-байтным блоком дескриптора
Erase (12) ACh 7o То же с 12-байтным блоком дескриптора
Exchange Medium A6h   Обмен носителями между двумя элементами устройства
Format 04h 2o Выбор шрифтов и форм
Format Unit 04h Om 7o Форматирование устройства
Get Data Buffer Status 34h   Опрос состояния буфера данных
Get Message 08h 9o Прием пакета из коммуни- кационного устройства


Команда Код Применимость Назначение
Get Message (10) 28h 9o To же с 10-байтным блоком дескриптора
Get Message (12) A8h 9o То же с 12-байтным блоком дескриптора
Get Window 25h   Получение информации о предварительно определен- ном окне
Initialize Element Status 07h 8o Инициализация состояния элемента
Inquiry 12h *m Опрос типа устройства, уров- ня стандарта, идентифика- тора производителя, модели и т. п.
Load Unload IBh lo Загрузка/разгрузка носителя
Locate 2Bh lo Позиционирование на заданный логический блок
Lock-Unlock Cache 36h Oo 4o 5o 7o Фиксация заданных логи- ческих блоков в кэше устройства и ее отмена
Log Select 4Ch *o Запись статистической ин- формации, обработка которой поддерживается устройством, в ЦУ или ЛУ
Log Sense 4Dh *o Считывание статистической информации с ЦУ или ЛУ
Medium Scan 38h 4o7o Сканирование - поиск не- прерывной области чистых или записанных блоков
Mode Select (6) 15h *z Запись параметров носителя, ЦУ или ЛУ (с 6-байтным блоком дескриптора)
Mode Select (10) 55h *z То же с 10-байтным блоком дескриптора
Mode Sense (6) lAh *z Считывание параметров носителя, ЦУ или ЛУ (с 6-байтным блоком де- скриптора)


Команда Код Прииенимость Назначение
Mode Sense (10) 5Ah То же с 10-байтньш блоком дескриптора
Move Medium A5h 8ro Передача носителя
Object Position 31h Позиционирование (загруз- ка/выгрузка) сканируемого объекта
Pause/Resume 4Bh Пауза/продолжение воспро- изведения аудио
Play Audio (10) 45h Аудиовоспроизведение ука- занных логических блоков
Play Audio (12) A5h То же с 12-байтньш блоком дескриптора
Play Audio MSF 47h Аудиовоспроизведение с адре- сацией MSF
Play Audio Track/Index 48h Аудиовоспроизведение с ука- занием треков и индексов
Play Track Relative (10) 49h Аудиовоспроизведение с адре- сацией относительно трека
Play Track Relative (12) A9h То же с 12-байтным блоком дескриптора
Position To Bement 2Bh Позиционирование транс- портного элемента к указан- ному элементу
Pre-Fetch 34h Оо 4о 5о 7о Считывание блоков данных в кэш (без передачи ИУ)
Prevent Allow Medium Removal lEh Оо 1о 4о 5о 7о 8о Запрет/разрешение смены носителя в ЛУ
Print OAh Печать блока данных
Read (6) 08h От 1т 4о 5о 7о Чтение данных (с 6-байтным блоком дескриптора)
Read(10) 28h От 4т 5т 6т 7т То же с 10-байтньш блоком дескриптора
Read(12) A8h 4о 5о 7о То же с 12-байтным блоком дескриптора
Read Block Limits 05h Запрос ограничений на дли- ну блока (минимальная и максимальная длины)


Команда Код Применимость Назначение
Read Buffer 3Ch *0 Чтение буфера
Read Capacity 25h Om 4m 7m Определение емкости Л У
ReadCd-Rom Capacity 25h 5m Определение емкости CD-ROM (возможно быстрое определение с погрешностью)
Read Defect Data 37h Oo7o Чтение списков дефектных блоков (Plist - исходный список от изготовителя, Glist - список, заполняемый при эксплуатации)
Read Defect Data (12) B7h 7o То же с 12-байтным блоком дескриптора
Read Bement Status B8h   Чтение состояния элементов
Read Generation 29h 7o Чтение максимально возмож- ного поколения для указан- ного логического блока
Read Header 44h 5o Чтение заголовка логического блока CD-ROM
Read Long 3Eh Oo 4o 5o 7o "Длинное" чтение - данные блока и поля ЕСС
Read Position 34h lo Запрос позиции данных, находящихся в буфере (адрес начала и конца, количество блоков и байт)
Read Reverse OFh lo Чтение блоков с текущей по- зиции в обратном направ- лении
Read Sub-Channel 42h 5o Чтение данных субканала CD-ROM
Read Toe 43h 5o Чтение таблицы содержимого CD-ROM
Read Updated Block 2Dh 7o Чтение определенного поко- ления обновленного логичес- кого блока
Reassign Blocks 07h Oo4o7o Переназначение дефектных блоков


Команда Код Применимость Назначение
Receive 08h 3o Прием пакета
Receive Diagnostic Results ICh *o Получение результатов диа- гностики
Recover Buffered Data 14h lo2o Восстановление данных, по- сланных в буфер, но не запи- санных (не напечатанных) из-за ошибки
Release 17h Om 2m 4m 5m 6m 7m 80 Освобождение зарезервиро- ванного ЛУ, экстента или элемента
Request Sense 03h Jj Опрос уточненного состояния
Request Volume Element Address B5h   Передача результатов коман- ды SEND VOLUME TAG
Reserve 16h Om 1m 2m 4m 5m 6m 7m 80 Предотвращение использо- вания Л У (его экстента или элемента) другим ИУ
f i\y^flli^J Olh 1m Перемотка носителя к началу раздела
Rezero Unit Olh Oo 4o 5o 7o 80 Приведение ЛУ в определен- ное состояние
Scan IBh 6o Сканирование данных в определенном окне
Search Data Equal 31h Oo 4o 5o 7o Поиск данных, (не) совпа- дающих с эталоном2
Search Data Equal (12) Blh 4o 5o 7o То же с 12-байтным блоком дескриптора2
Search Data High 30h Oo 4o 5o 7o Поиск данных, (не) больших эталона2
Search Data High (12) BOh 4o 5o 7o То же с 12-байтным блоком дескриптора2
Search Data Low 32h Oo5o7o Поиск данных, (не) меньших эталона2
Search Data Low (12) B2h 4o 5o 7o То же с 12-байтным блоком дескриптора2
Seek(6) OBh Oo 4o 5o 7o Позиционирование (с 6-байт- ным блоком дескриптора)3


Команда Код Применимость Назначение
Seek(10) 2Bh Oo 4o 5o 7o Позиционирование - поиск логического адреса (с 10-байт- ным блоком дескриптора)3
Send OAh 3m Посылка пакета
Send (10) 2Ah   Посылка данных в устройство
Send Diagnostic IDh *m Запуск теста ЦУ. Ответом будет состояние Good, если тест прошел успешно, или Check Condition в случае ошибки
Send Message OAh 9m Посылка пакета в коммуни- кационное устройство
Send Message (10) 2Ah 9o То же с 10-байтным блоком дескриптора
Send Message (12) AAh 9o То же с 12-байтным блоком дескриптора
Send Volume Tag B6h   Посылка тега тома (шаблона) для поиска его в элементах или создания нового тега
Set Limits 33h Oo 4o 5o 7o Определение области логи- ческих адресов, над которыми могут выполняться операции цепочки команд
Set Limits (12) B3h 4o 5o 7o То же с 12-байтным блоком дескриптора
Set Window 24h 6m Определение окна сканиро- вания
Slew And Print OBh 2o Прогон бумаги и печать
Space llh 1m Относительное позициони- рование (вперед и назад) на заданное число блоков, файлов, маркеров и т. п.
Start Stop Unit IBh Oo 4o 5o 7o Разрешение/запрет операций с носителем, извлечение но- сителя*
Stop Print IBh 2o Останов печати с очисткой буфера или без нее


Конаида Код Применимость Назначение
Synchronize Buffer lOh 2o Синхронизация буфера - печать всего содержимого, при невозможности - сооб- щение об ошибке
Synchronize Cache 35h Oo 4o 5o 7o Синхронизация кэша - запись несохраненных дан- ных заданного диапазона ад- ресов на носитель
Test Unit Ready OOh *m Опрос готовности ЛУ
Update Block 3Dh 7o Обновление логического блока
Verify 2Fh Oo5o7o Верификация - проверка возможности безошибочного считывания блоков данных с носителя
Verify 13h lo Тоже
Verify (10) 2Fh 4o5o7o То же или проверка чистоты блоков (с 10-байтным блоком дескриптора)
Verify (12) AFh 4o 5o 7o То же с 12-байтным блоком дескриптора
Write (6) OAh Oo 1m 4o 7o Запись блоков данных, переданных ИУ (с 6-байт- ным блоком дескриптора)
Write (10) 2Ah Oo4m 7m Запись блоков данных, переданных ИУ (с 10-байт- ным блоком дескриптора)
Write (12) AAh 4o7o То же с 10-байтным блоком дескриптора
Write And Verify 2Eh Oo4o7o Запись блоков данных, переданных ИУ, с верифика- цией записи
Write And Verify (12) AEh 7o4o То же с 12-байтным блоком дескриптора
Write Buffer 3Bh *o Запись в буфер (но не на носитель) или загрузка микрокода


Команда Код Применимость Назначение
Write Filemarks lOh 1m Запись маркера файлов
Write Long 3Fh Oo4o7o "Длинная" запись - блока данных и поля ЕСС
Write Same 41h Oo Запись блока данных, пере- данных ИУ, в группу смеж- ных блоков или до конца носителя5


1 Команды копирования и сравнения данных оперируют парой Л У, ко-
торые могут принадлежать как одному ЦУ, так и разным, если эту воз-
можность поддерживает ведущее устройство копирования - Copy
Master.
Копирование возможно между устройствами любых классов.
Для устройств типов 8 и 9 эти команды не применяются.

2 Данные ищутся сравнением указанного числа логических записей с
эталоном. Логические записи определяются длиной, начальным логи-
ческим блоком и смещением внутри него. Можно потребовать попада-
ния искомых данных в один логический блок.

3 Команда эффективна для ленточных устройств прямого доступа.

4 Команда STOP UNIT для устройств с кэшированием перед остановом
автоматически выполняет синхронизацию кэша.

5 Первые 4 байта в записываемых блоках могут быть заменены на физи-
ческий или логический адрес блока.

5.6. Выполнение команд

Мы не будем рассматривать различные ситуации, приводя-
щие к отклонениям от нормальной последовательности со-
бытий интерфейса. К ним относятся некорректные соедине-
ния со стороны ИУ, выбор несуществующего ЛУ,
неожиданные выборки ИУ, округление параметров, реакция
на асинхронные события и т. п.

Рассмотрим процесс на шине SCSI на примере одиночной
команды чтения Read.
ИУ имеет активный набор указате-
лей и несколько сохраненных наборов, по одному на каж-
дый из допустимого числа одновременных конкурирующих
процессов. ИУ восстанавливает указатели процесса в актив-
ный набор и, выиграв арбитраж, выбирает ЦУ. Как только

ЦУ выбрано, оно берет на себя управление процессом. В фазе
Selection И У вводит сигнал ATN^, сообщая о намерении по-
слать сообщение Identify с указанием адресуемого ЛУ. Та-
ким образом устанавливается связь 1_T_L с данным процес-
сом и его набором указателей. ЦУ переходит в фазу Command
и принимает блок дескриптора команды Read. Интерпрети-
ровав команду, ЦУ переходит в фазу Data IN, передает дан-
ные, затем переводится в фазу Status и посылает состояние
Good. Затем в фазе Message IN устройство посылает сообще-
ние Command Complete, после чего освобождает шину (фаза
Bus Free). Процесс завершен.

Рассмотрим тот же пример, но с использованием отключения
от шины (Disconnect)
в процессе выполнения команды. Если
устройство определит, что для получения затребованных дан-
ных потребуется много времени, получив команду Read, оно
освобождает шину, послав сообщение Disconnect. Как только
требуемые данные готовы в ЦУ, оно, выиграв арбитраж, вы-
берет ИУ (в фазе Reselect) и в фазе Message IN пошлет ему
сообщение Identify. По определенной этим сообщением свя-
зи 1_T_L ИУ восстановит соответствующий набор указате-
лей в активный и продолжит выполнение процесса, как опи-
сано выше. Если ЦУ хочет отсоединиться, когда часть данных
уже передана (например, головка дошла до конца цилиндра
и требуется время на позиционирование), оно посылает со-
общение Save Data Pointer, а затем Disconnect. После повтор-
ного соединения передача данных возобновится с точки,
определенной последним сохраненным значением указате-
ля. Если произошла ошибка или исключение, ЦУ может по-
вторить обмен данными, послав сообщение Restore Pointers
или отсоединившись без сообщения Save Data Pointers.

Теперь рассмотрим процесс с цепочкой связанных команд. По
успешному завершению каждой команды цепочки ЦУ авто-
матически переходит к исполнению следующей. Все коман-
ды цепочки адресуются к одной и той же связи 1_Т_х и яв-
ляются частью одного процесса. Команды не являются
полностью независимыми: при использовании бита относи-
тельной адресации последний блок, адресованный предыду-
щей командой, доступен для следующей. Так, например, мож-
но исполнить команду Search Data, по которой на диске будет

найден блок, содержащий информацию, совпадающую с эта-
лоном поиска. Связав с ней команду чтения Read, можно
прочитать этот блок или блок с указанным смещением от-
носительно найденного. По выполнении связанных команд
ЦУ посылает сообщения Linked Command Complete (возмож-
но, с флагом), а ИУ обновляет набор сохраненных указате-
лей так, что они указывают на очередную команду цепочки.
Команды в цепочке выполняются как одиночные, но с воз-
можностью относительной адресации.

Команды могут исполняться с использованием очередей. ЦУ
могут поддерживать немаркированные и маркированные
очереди. Поддержка немаркированных очередей, определен-
ная еще в SCSI-1, позволяет любому ЛУ (LUN) или целевой
программе (TRN), занятым процессом от одного ИУ, прини-
мать команды (начинать процесс) с другими И У. При этом
каждый процесс идентифицируется связью 1_Т_х, где х - LUN
или TRN.

Маркированные очереди (Tagged Queue) определены в SCSI-2
для ЛУ (LUN, но не TRN). Для каждой связи 1_T_L суще-
ствует своя очередь размером до 256 процессов (немаркиро-
ванные очереди можно считать вырожденным случаем мар-
кированных с одноместными очередями). Каждый процесс,
использующий маркированные очереди, идентифицируется
связью 1_T_L_Q, где Q - однобайтный тег очереди (Queue Tag).
Теги процессам назначаются ИУ, их значения на порядок
выполнения операций не влияют. Повторное использование
тега возможно лишь по завершении процесса с этим тегом.
Постановка в очередь выполняется через механизм сообще-
ний, при этом очередной процесс можно поставить в оче-
редь "по-честному", а можно пропихнуть вне очереди: про-
цесс, поставленный в очередь с сообщением Head Of Queue
Tag,
будет выполняться сразу после завершения текущего
активного процесса. Процессы, поставленные в очередь с со-
общением Simple Queue Tag, исполняются ЦУ в порядке, ко-
торый оно сочтет оптимальным. Процесс, поставленный в
очередь с сообщением Ordered Queue Tag, будет исполняться
последним. ИУ может удалить процесс из очереди, сослав-
шись на него по тегу. Изменение порядка выполнения ко-
манд ЦУ не касается порядка команд в цепочке, поскольку

цепочка принадлежит одному процессу, а в очередь ставят-
ся именно процессы.







Дата добавления: 2015-08-30; просмотров: 426. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

Этапы творческого процесса в изобразительной деятельности По мнению многих авторов, возникновение творческого начала в детской художественной практике носит такой же поэтапный характер, как и процесс творчества у мастеров искусства...

Этапы трансляции и их характеристика Трансляция (от лат. translatio — перевод) — процесс синтеза белка из аминокислот на матрице информационной (матричной) РНК (иРНК...

Условия, необходимые для появления жизни История жизни и история Земли неотделимы друг от друга, так как именно в процессах развития нашей планеты как космического тела закладывались определенные физические и химические условия, необходимые для появления и развития жизни...

Метод архитекторов Этот метод является наиболее часто используемым и может применяться в трех модификациях: способ с двумя точками схода, способ с одной точкой схода, способ вертикальной плоскости и опущенного плана...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия