Системный интерфейс малых компьютеров SCSI (Small Computer System Interface, произносится "скази") был стан-дартизован ANSI в 1986 году (ХЗ. 131-1986). Интерфейс предназначен для соединения устройств различных классов - па-мяти прямого (жесткие диски) и последовательного(стриммеры) доступа, CD-ROM, оптических дисков однократной и многократной записи, устройств автоматическойсмены носителей информации, принтеров, сканеров, комму-никационных устройств и процессоров. Устройством SCSI -SCSI Device - называется как хост-адаптер, связывающий шину SCSI с какой-либо внутренней шиной компьютера, так и контроллер -целевого устройства - target controller, с помощью которого оно подключается к шине SCSI. С точки зрения шины все устройства могут быть равноправными и являться как инициаторами обмена (инициализирующими устройствами, ИУ), так и целевыми устройствами (ЦУ), однако чаще всего в роли И У выступает хост-адаптер. К одному контроллеру может подключаться несколько ПУ, по отношению к которым контроллер может быть как внутренним, так и внешним. Широкое распространение получили ПУ со встроенным контроллером SCSI (embeded SCSI controller), к которым относятся накопители на жестких магнитных дисках, CD-ROM, стриммеры. Каждое ЦУ может содержать до 8 независимо адресуемых логических устройств (ЛУ) со своими номерами LUN (Logical Unit Number), представляющими ПУ или их части.
По физической реализации интерфейс является 8-битной параллельной шиной с тактовой частотой 5 МГц. Скорость передачи данных достигает 5 Мбайт/с. Впоследствии появилась спецификация - SCSI-2 (ХЗ. 131-1994), расширяющая возможности шины. Тактовая частота шины Fast (быстрый) SCSI-2достигает 10 МГц, a Ultra SCSI-2 - 20 МГц. Разрядность данных может быть увеличена до 16 бит - эта версия называется Wide (широкий) SCSI-2, а 8-битную версию стали называть Narrow (узкий), 16-битная шина допускает 16 устройств. Стандарт SCSI-2 определяет 32-битную версию интерфейса, но такие устройства обладают неоправданно высокой стоимостью интерфейса. Спецификация SCSI-2 определяет систему команд, которая включает набор базовых команд CCS (Common Command Set), обязательных для всех ПУ, и специфических команд для периферии различных классов. Стандарт полностью описывает протокол взаимодействия устройств, включая структуры передаваемой информации. Поддержка устройствами исполнения цепочек команд (до 256 команд) и независимость их работы друг от друга обусловливают высокую эффективность применения SCSI в многозадачных системах. Возможность присутствия на шине более одного контроллера (инициатора обмена) позволяет обеспечить разделяемое использование периферии несколькими компьютерами, подключенными к одной шине.
SCSI-3 - дальнейшее развитие стандарта, направленное на увеличение количества подключаемых устройств, расширение системы команд и поддержку Plug and Play. В качестве альтернативы параллельному интерфейсу SPI (SCSI-3 Parallel Interface) появляется возможность применения последовательного, в том числе волоконно-оптического, интерфейса со скоростью 100 Мбайт/с. SCSI-3 существует в виде широкого спектра документов, определяющих отдельные аспекты интерфейса. Архитектурная модель SAM (SCSI-3 Architecture Model) изображена на рис. 5.1. Первичный набор общих команд SCP (SCSI-3 Primary Commands) для устройств различных классов дополняется набором команд со-
ответствующего класса устройств'.
- SBC (SCSI-3 Block Commands) - для устройств памятипрямого доступа,
- SSC (SCSI-3 Stream Commands) - для устройств памятипоследовательного доступа,
- SGC (SCSI-3 Graphic Commands) - для принтеров и сканеров,
- SMC (SCSI-3 Medium Changer Commands) - для устоойств смены носителей,sa SCC (SCSI-3 Controller Commands) - для хост-контроллеров.
Транспортный уровень может использовать различные протоколы с соответствующей поддержкой физических соединений:
- SIP (SCSI-3 Interlocked Protocol) - протокол обмена традиционного интерфейса, физически реализуемый интерфейсом SP
- FCP (Fibre Channel Protocol) - протокол оптоволоконного канала с соответствующим физическим уровнем FC-PH.
- SBP (Serial Bus Protocol) - протокол последовательной шины, реализуемый интерфейсом 1394 (FireWire).
- GPP (Generic Packetized Protocol) - обобщенный пакетный протокол, реализуемый любым пакетным интерфейсом.
- SSP (Serial Storage Protocol) - последовательный протокол памяти, реализованный на архитектуре последовательной памяти SSA (Serial Storage Architecture).
К примеру, дисковый накопитель SCSI-3 с параллельным интерфейсом описывает набор стандартов SPI+SIP+SAM+SPC+SBC, а для того же устройства, но с последовательным интерфейсом вместо SPC+SBC будет связка FCP+FC-PH.
Заявка о поддержке устройством стандарта SCSI-3 непосредственно на повышение производительности по сравнению со SCSI-2 не указывает. Однако устройства SCSI-3 в большинстве случаев показывают более высокую производительность.
Рис. 5.1. Архитектурная модель SCSI-3
Для параллельных шин скорость передачи данных определяется частотой передач, измеряемой в миллионах передач в секунду - МТ/с (Mega Transfer/sec), и разрядностью. Комбинации частоты и разрядности обеспечивают широкий диапазон пропускной способности (табл. 5.1), достигающей 80 Мбайт/с для версии Ultrd2 Wide SCSI. SCSI Fast означает частоту передач 10 МТ/с, временные диаграммы для такого режима определены в SCSI-2. Название SCSI Fast-20 указывает на частоту передач 20 МТ/с. Этот режим, более известный как SCSI Ultra, определен для параллельного интерфейса в SCSI-3. SCST Fast-40 указывает на частоту передач 40 МТ/с. Этот режим, определенный в SCSI-3 и называемый Ultra2 SCSI, в настоящее время является самым быстрым для параллельной шины. Он реализован только в низковольтной дифференциальной версии интерфейса - LVD. В SCSI-3 предусмотрен режим SCSI Fast-80.
Для Narrow SCSI использовался разъем, изображенный на рис. 5.2. Wide SCSI использует разъем, изображенный на рис. 5.3. Для устройств с "горячей" заменой применяют миниатюрный D-образный разъем SCA-2, общий для питания
и сигнальных цепей (рис. 5.4).
Рис. 5.2. Разъем 8-битного устройства SCSI
Рис. 5.3. Разъем 16-битного устройства SCSI
80-Pin SCSI SCA Connector
Рис. 5.4. Разъем устройства SCSI с "горячей" заменой
Разрядность |
Разновидность |
|||
Обычный |
Fast |
Fast-20 (Ultra) |
Fast-40 (Ultra2) |
|
8 (Narrow) |
5 |
10 |
20 |
40 |
16 (Wide) |
10 |
20 |
40 |
80 |
32 (Wide)* |
20 |
40 |
80 |
160 |
Реализации не встречаются.
Последовательный интерфейс FCAL (Fibre Channel Arbitrated Loop - кольцо волоконного канала с арбитражем) по реализации ближе к интерфейсам локальных сетей. Этот интерфейс, известный также как Fibre Channel SCSI, может иметь как электрическую (коаксиальный кабель), так и оптоволоконную реализацию. В обоих случаях частота 1 ГГц обеспечивает скорость передачи данных 100 Мбайт/с. Медный кабель допускает длину шины до 30 м, оптический - до 10 км. Здесь используются иные протокольный и физический уровни интерфейса и имеется возможность подключения 126 устройств. В настоящее время наибольшее распространение имеют устройства SCSI-2, которые сохраняют совместимость с исходной версией, теперь называемой SCSI-1. Однако смешивать устройства SCSI-1 и SCSI-2 неэффективно, да и не всегда возможно из-за проблем, о которых речь пойдет далее. Для краткости номер версии SCSI будем опускать, по умолчанию подразумевая Narrow SCSI-2. На ее примере разберем работу интерфейса, а особенности версии Wide отметим отдельно.
Физический интерфейс
Физически SCSI представляет собой шину, состоящую из 25 сигнальных цепей. Для защиты от помех каждая сигнальная цепь имеет свой отдельный обратный провод. На применяемых двухрядных разъемах контакты сигнальных и обратных цепей располагаются друг против друга. Этопозволяет применять в качестве кабелей как витые пары проводов, так и плоские шлейфы, где сигнальные и обратные провода чередуются.
По типу сигналов различают линейные (Single Ended) и дифференциальные (Differential) версии SCSI. Их кабели и разъемы идентичны, но электрической совместимости устройств нет. Символические обозначения для разных версий приведены на рис. 5.5.
Рис. 5.5. Универсальные символические обозначения версий SCSI
Дифференциальная версия для каждой цепи задействует пару проводников, по которым передается парафазный сигнал. Здесь используются специальные дифференциальные приемопередатчики, применяемые и в интерфейсе RS-485, что позволяет значительно увеличить длину кабеля, сохраняя частоту обмена (табл. 5.2). Дифференциальный интерфейс применяется в дисковых системах серверов. Традиционный дифференциальный интерфейс получил название "высоковольтный" - High Voltage Differential (HVD), поскольку в SCSI-3 ему появилась низковольтная альтернатива - Low Voltage Differential (LVD). Низковольтный вариант достигает частоты 40 МТ/с в устройствах Ultra2 SCSI при длине шины 25 м (8 устройств) или 12 м (16 устройств).
В широко используемой линейной версии каждый сигнал передается потенциалом с ТТЛ-уровнями относительно общего провода. Здесь общий (обратный) провод для каждого сигнала тоже должен быть отдельным. В дальнейшем речь
пойдет об этой версии.
Новые устройства с интерфейсом LVD могут работать на шине вместе с устройствами с линейным интерфейсом - для этого их буферные схемы содержат автоматический определитель типа интерфейса. Однако совместимость относится только к LVD - традиционные устройства с HVD могут работать только с себе подобными.
Плоский кабель используется для соединения устройств, расположенных в одном корпусе. На нем может быть наколото несколько разъемов. При необходимости кабели могут сращиваться через специальные переходные разъемы. Кабели сращиваются только через концевые разъемы, Т-образные ответвления недопустимы. Круглый кабель, состоящий из витых пар, используется для соединения вне корпусов устройств. ПУ внешнего исполнения обычно имеют два разъема, что позволяет соединить их в цепочку. Длина кабеля зависит от версии интерфейса и частоты (см. табл. 5.2). Приподсчете суммарной длины кабеля следует учитывать возможность использования одного порта хост-адаптера одновременно для внешних и внутренних подключений и суммировать длины внутренних и внешних кабелей.
Тип интерфейса |
Обычный |
Fast |
Ultra |
Ultra 2 |
Линейный (Single ended) |
6м |
Зм |
1,5м |
- |
Дифференциальный(HVD) |
25м |
12м |
6м |
- |
Дифференциальный низковольтный (LVD) |
25м |
25м |
25м |
25м (8 устройств) |
Ассортимент кабелей SCSI довольно широк:
- А-кабель: стандартный для 8-битного интерфейса, 25 парпроводов. Для внутренних устройств используется плоский шлейф с разъемами IDC-50, для внешних - экранированный круглый кабель с разъемами CENTRONICS-50.
- В-кабель: малораспространенный 16/32-битный расширитель SCSI-2.
- Р-кабель: 8/16-битный кабель с 34 парами проводов, снабжен улучшенными миниатюрными экранированными разъемами. Применяется в интерфейсах SCSI-2/3, в 8-битном варианте контакты 1-5, 31-39, 65-68 не используются.
Разъемы для внешнего подключения выглядят как миниатюрный вариант Centronics с плоскими контактами, внутренние имеют штырьковые контакты.
- Q-кабель: 68-проводное расширение до 32 бит, используется в паре с Р-кабелем и имеет аналогичную конструкцию.
- Кабель с разъемами DB-25P - 8-битный, стандартный для Macintosh (см. табл. 5.5), используется на некоторых внешних устройствах (lomega ZIP Drive). Встречается иная раскладка цепей, если 25-контактный разъем уста новлен на хост-адаптере.
Возможны также различные варианты кабелей-переходников.
Назначение контактов разъемов кабелей приведено в табл. 5.3-5.6. Неудобство вызывает система нумерации контактов, которая различна для внешних и внутренних разъемов. Однако физическая раскладка проводов на разъеме и в
плоском кабеле одинакова.
Контакт разъема |
Сигнал |
Контакт разъема |
Сигнал |
||
Внутреннего |
Внешнего |
Внутреннего |
Внешнего |
||
1 |
1 |
GND |
2 |
26 |
DBO# |
3 |
2 |
GND |
4 |
27 |
DB1# |
5 |
3 |
GND |
6 |
28 |
DB2# |
7 |
4 |
GND |
8 |
29 |
DB3# |
9 |
5 |
GND |
10 |
30 |
DB4# |
11 |
6 |
GND |
12 |
31 |
DB5# |
13 |
7 |
GND |
14 |
32 |
DB6# |
15 |
8 |
GND |
16 |
33 |
DB7# |
17 |
9 |
GND |
18 |
34 |
DBPO# |
19 |
10 |
GND |
20 |
35 |
GND |
21 |
11 |
GND |
22 |
36 |
GND |
23 |
12 |
Reserved |
24 |
37 |
Reserved |
25 |
13 |
Open |
26 |
38 |
TERMPWR |
27 |
14 |
Reserved |
28 |
39 |
Reserved |
Контакт разъема |
Сигнал |
Контакт разъема |
Сигнал |
||
Внутреннего |
Внешнего |
Внутреннего |
Внешнего |
||
29 |
15 |
GND |
30 |
40 |
GND |
31 |
16 |
GND |
32 |
41 |
ATN# |
33 |
17 |
GND |
34 |
42 |
GND |
35 |
18 |
GND |
36 |
43 |
BSY# |
37 |
19 |
GND |
38 |
44 |
ACK# |
39 |
20 |
GND |
40 |
45 |
RST# |
41 |
21 |
GND |
42 |
46 |
MSG# |
43 |
22 |
GND |
44 |
47 |
SELft |
45 |
23 |
GND |
46 |
48 |
C/D# |
47 |
24 |
GND |
48 |
49 |
REQ# |
49 |
25 |
GND |
50 |
50 |
1/0# |
Контакт разъема |
Сигнал |
Контакт разъема |
Сигнал |
||
Внутреннего |
Внешнего |
Внутреннего |
Внешнего |
||
1 |
1 |
GND |
2 |
35 |
GND |
3 |
2 |
GND |
4 |
36 |
DB8# |
5 |
3 |
GND |
6 |
37 |
DB9# |
7 |
4 |
GND |
8 |
38 |
DB10# |
9 |
5 |
GND |
10 |
39 |
DB11# |
11 |
6 |
GND |
12 |
40 |
DB12# |
13 |
7 |
GND |
14 |
41 |
DB13# |
15 |
8 |
GND |
16 |
42 |
DB14# |
17 |
9 |
GND |
18 |
43 |
DB15# |
19 |
10 |
GND |
20 |
44 |
DBP1# |
21 |
11 |
GND |
22 |
45 |
ACKB# |
23 |
12 |
GND |
24 |
46 |
GND |
25 |
13 |
GND |
26 |
47 |
REQB# |
27 |
14 |
GND |
28 |
48 |
DB16# |
Контакт разъема |
Сигнал |
Контакт разъема |
Сигнал |
||
Внутреннего |
Внешнего |
Внутреннего |
Внешнего |
||
29 |
15 |
GND |
30 |
49 |
DB17# |
31 |
16 |
GND |
32 |
50 |
DB18# |
33 |
17 |
TERMPWR |
34 |
51 |
TERMPWR |
35 |
18 |
TERMPWR |
36 |
52 |
TERMPWR |
37 |
19 |
GND |
38 |
53 |
DB19# |
39 |
20 |
GND |
40 |
54 |
DB20# |
41 |
21 |
GND |
42 |
55 |
DB21# |
43 |
22 |
GND |
44 |
56 |
DB22# |
45 |
23 |
GND |
46 |
57 |
DB23# |
47 |
24 |
GND |
48 |
58 |
DBP2# |
49 |
25 |
GND |
50 |
59 |
DB24# |
51 |
26 |
GND |
52 |
60 |
DB25# |
53 |
27 |
GND |
54 |
61 |
DB26# |
55 |
28 |
GND |
56 |
62 |
DB27# |
57 |
29 |
GND |
58 |
63 |
DB28# |
59 |
30 |
GND |
60 |
64 |
DB29# |
61 |
31 |
GND |
62 |
65 |
DB30# |
53 |
32 |
GND |
64 |
66 |
DB31# |
65 |
33 |
GND |
66 |
67 |
DBP2# |
67 |
34 |
GND |
68 |
68 |
GND |
Контакт |
Сигнал |
Контакт |
Сигнал |
Контакт |
Сигнал |
1 |
REO# |
10 |
DB3# |
19 |
SEL# |
2 |
MSG# |
11 |
DB5# |
20 |
DBPO# |
3 |
1/0# |
12 |
DB6# |
21 |
DB1# |
4 |
RST# |
13 |
DB7# |
22 |
DB2# |
5 |
АСК# |
14 |
GND |
23 |
DB4# |
6 |
BSY# |
15 |
C/D# |
24 |
GND |
7 |
GND |
16 |
GND |
25 |
TERMPWR |
8 |
DBO# |
17 |
ATN# |
||
9 |
GND |
18 |
GND |
Контакт |
Р- и Q-кабели, |
Контакт |
Р-кабель, |
Q-кабель, |
1 |
GND |
35 |
DB12# |
DB28# |
2 |
GND |
36 |
DB13# |
DB29# |
3 |
GND |
37 |
DB14# |
DB30# |
4 |
GND |
38 |
DB15# |
DB31# |
5 |
GND |
39 |
DBP1# |
DBP3# |
6 |
GND |
40 |
DBO# |
DB16# |
7 |
GND |
41 |
DB1# |
DB17# |
8 |
GND |
42 |
DB2# |
DB18# |
9 |
GND |
43 |
DB3# |
DB19# |
10 |
GND |
44 |
DB4# |
DB20# |
11 |
GND |
45 |
DB5# |
DB21# |
12 |
GND |
46 |
DB6# |
DB22# |
13 |
GND |
47 |
DB7# |
DB23# |
14 |
GND |
48 |
DBPO# |
DBP2# |
15 |
GND |
49 |
GND |
GND |
16 |
GND |
50 |
GND |
GND |
17 |
TERMPWR |
51 |
TERMPWR |
TERMPWRQ |
18 |
TERMPWR |
52 |
TERMPWR |
TERMPWRQ |
19 |
Reserved |
53 |
Reserved |
Reserved |
20 |
GND |
54 |
GND |
GND |
21 |
GND |
55 |
ATN# |
Terminated |
22 |
GND |
56 |
GND |
GND |
23 |
GND |
57 |
BSY# |
Terminated |
24 |
GND |
58 |
ACK# |
ACKQ# |
25 |
GND |
59 |
RST# |
Terminated |
26 |
GND |
60 |
MSG# |
Terminated |
27 |
GND |
61 |
SEL# |
Terminated |
28 |
GND |
62 |
C#/D |
Terminated |
29 |
GND |
63 |
REQ# |
REQQ# |
Контакт |
Р-иО-кабели, |
Контакт |
Р-кабель, |
Q-кабель, |
30 |
GND |
64 |
1/0# |
Terminated |
31 |
GND |
65 |
DB8# |
DB24# |
32 |
GND |
66 |
DB9# |
DB25# |
33 |
GND |
67 |
DB10# |
DB26# |
34 |
GND |
68 |
DB11# |
DB27# |
Назначение сигналов раскрывает табл. 5.7. Все сигналы шины являются L-активными: активному состоянию и логической единице соответствует низкий потенциал. На концах кабельных шлейфов обязательно устанавливаются терминаторы, согласованные по импедансу с кабелем. Они предназначены для "подтягивания" уровня сигналов линий к высокому потенциалу. Терминаторы служат и для предотвращения отражения сигналов от концов кабеля. По исполнению терминаторы могут быть внутренние (размещенные на печатной плате устройства) и внешние (устанавливаемые на разъемы кабеля или устройства). По электрическим свойствам различают следующие типы терминаторов:
- Пассивные (SCSI-1) с импедансом 132 Ом, представляющие собой обычные резисторы. Не пригодны для режимов SCSI-2 с частотой выше 5 МГц.
- Активные с импедансом 110 Ом - специальные терминаторы для работы на частоте 10 МГц.
- FPT (Forced Perfect Terminator) - улучшенный вариант активных терминаторов с ограничителями выбросов.
Активные терминаторы требуют питания, для чего в интерфейсе имеются специальные линии TERMPWR. Питание поступает от ИУ.
Сигнал |
Назначение |
BSY# |
Busy - шина занята |
SEL# |
Select - выбор ЦУ инициатором (Select) или инициатора ЦУ (Reselect) |
Сигнал |
Назначение |
C/D# |
Control/Data - управление (низкийуровень/данные (высокий уровень) |
1/0# |
Input/Output - направление передачи относительно ИУ: вводу в ИУ соответствует низкий уровень. Используется для различия прямой (Select) и обратной (Reselect) выборки: фазе Selection соответствует низкий уровень |
MSG# |
Message - передача сообщения |
DB[0:31]# |
Data Bus - инверсная шина данных |
DP[0:3]# |
Data Parity - инверсные биты паритета, дополняют количество единичных бит байта до нечетного. DPO# относится к DB[0:7],... DP3# - к DB[24:31].В фазе арбитража не действуют |
TERMPWR |
Terminator Power - питание терминаторов |
ATN# |
Attention - внимание |
REQ# |
Request - запрос от ЦУ на пересылку данных |
ACK# |
Acknowledge - подтверждение передачи (ответна REQ#) |
RST# |
Reset - сброс |
Каждое устройство SCSI, подключенное к шине, должно иметь свой уникальный адрес, назначаемый при конфигурировании. Для 8-битной шины диапазон значений адреса 0-7, для 16-битной - 0-15. Адрес задается предварительной
установкой переключателей или джамперов. Для хост-адаптера возможно программное конфигурирование. Адресация устройств на шине в фазах выборки осуществляется через идентификатор SCSI ID, представляющий адрес в позиционном коде. Адрес определяет номер линии шины данных, которой осуществляется выборка данного устройства. Устройство с нулевым адресом выбирается низким уровнем на линии DBO# (SCSI ID=00000001), с адресом 7 - на линии DB7# (SCSI ID=10000000). Для ИУ значение идентификатора определяет приоритет устройства при использованиишины, наибольший приоритет имеет устройство с большим значением адреса. Адрес и идентификатор - всего лишь две различные формы представления одного и того же параметра.
В любой момент обмен информацией по шине может происходить только между парой устройств. Операцию начинает И У, а ЦУ ее исполняет. И У выбирает ЦУ по его идентификатору. Чаще всего роли устройств фиксированы: хост-адаптер является инициатором (ИУ), а ПУ - целевым (ЦУ). Возможны комбинированные устройства, выступающие в роли и И У, и ЦУ. В ряде случаев роли устройств меняются:
ЦУ может, пройдя фазу арбитража, выполнить обратную выборку (Reselect) ИУ для продолжения прерванной операции. При выполнении команды копирования (Copy) ИУ дает указание ведущему устройству копирована (Copy Master)
на обмен данными, который может производиться и с другим ЦУ (для которых ведущее устройство копирования выступит в роли И У).
Информация по шине данных передается побайтно асинхронно, используя механизмы запросов (REQuest) и подтверждений (ACKnowledge). Каждый байт контролируется на нечетность (кроме фазы арбитража), но контроль может быть
отключен. Интерфейс имеет возможность синхронной передачи данных, ускоряющей обмен.
Фазы шины
Шина может находиться в одной из перечисленных фаз. Роли источников сигналов между ИУ и ЦУ описаны в табл. 5.8.
Фаза шины |
Сигнал |
||||
BSYft |
SELft |
REQ#,C/Dft,I/Oft,MSG# |
ACK#,ATN# |
DBx#,DBPxtf |
|
Bus Free |
- |
- |
- |
- |
- |
Arbitration |
AA |
WA |
- |
- |
SID |
Selection |
I,T |
I |
- |
I |
I |
Reselection |
I,T |
T |
T |
I |
T |
Command |
T |
- |
T |
I |
I |
Фаза шины |
Сигнал |
||||
BSYff |
SEL# |
REQff, C/D#, I/O", MSG# |
ACKff, ATNff |
DBx#, DBPx# |
|
Data IN |
T |
- |
T |
I |
T |
Data OUT |
T |
- |
T |
I |
I |
Status |
T |
- |
T |
I |
T |
Message IN |
T |
- |
T |
I |
T |
Message OUT |
T |
- |
T |
I |
I |
I - источник сигнала - И У;
Т - источник сигнала - ЦУ;
АА - источник сигнала - устройство, активное в арбитраже;
WA - источник сигнала - устройство-победитель в арбитраже;
SID - каждое устройство управляет только битом данных, соответству-
ющим значению его SCSI ID.
В фазе Bus Free шина находится в состоянии покоя - нетникаких процессов обмена; она готова к арбитражу. Признаком является пассивное состояние линий BSY# и SEL#.
В фазе Arbitration устройство может получить право на управление шиной. Дождавшись покоя шины (Вш Free), устройство вводит сигнал BSY# и свой идентификатор SCSI ID. Если идентификаторы выставили несколько устройств
одновременно, то право на управление шиной получает устройство с наибольшим адресом, а остальные устройства отключаются до следующего освобождения шины. Устройство, выигравшее арбитраж, вводит сигнал SEL# и переходит в фазу Selection или Reselection.
В фазе Selection ИУ, выигравшее арбитраж, вводит на шину данных результат логической функции ИЛИ от пары идентификаторов - своего и ЦУ, - сопровождая его битом паритета. Установкой сигнала ATN# И У указывает, что следую-
щей фазой будет Message OUT. ИУ снимает сигнал BSY#. Отсутствие сигнала 1/0# отличает данную фазу от Reselection. Адресованное ЦУ отвечает сигналом BSY#, если паритет корректный и на шине данных присутствует только пара идентификаторов (его и И У). На некорректные значения данных устройства отвечать не должны. Если за заданное время ЦУ не ответило, срабатывает тайм-аут, И У освобождает шину или вводит сигнал сброса RST#.
Фаза Reselection аналогична предыдущей, но ее вводит ЦУ. Фаза появляется в том случае, когда ЦУ на время исполнения команды отключалось от шины. По завершении внутренней операции это устройство, выиграв арбитраж, будет
вызывать ИУ, которое ранее породило исполнение операции. ЦУ снимает сигнал BSY#, активность сигнала 1/0# отличает данную фазу от фазы Selection. Адресованное ИУ отвечает сигналом BSY#, условия ответа и тайм-аут аналогичны предыдущей фазе.
В фазах Command, Data, Status и Message по шине данныхпередается информация, фазы идентифицируются сигналами MSG#, C/D# и /0# (табл. 5.9), которыми управляет ЦУ.
ИУ может потребовать посылки сообщения (фаза Message OUT) введением сигнала ATN#, a ЦУ может освободить шину, сняв сигналы MSG#, C/D#, 1/0# и BSY#.
Сигнал |
Фаза |
Направление |
||
MSGft |
C/D# |
I/0# |
||
0 |
о |
о |
Data OUT |
1ФТ |
0 |
о |
1 |
Data IN |
l^T |
0 |
1 |
о |
Command |
I^T |
0 |
1 |
1 |
Status |
1ФТ |
1 |
о |
о |
Зарезервировано |
|
1 |
о |
1 |
Зарезервировано |
|
1 |
1 |
о |
Message OUT |
I^T |
1 |
1 |
1 |
Message IN |
1ФТ |
Временные диаграммы асинхронного обмена приведены на рис. 5.6. Здесь передача каждого байта сопровождается взаимосвязанной парой сигналов REQ#/ACK#. ИУ фиксирует принимаемые данные, получив сигнал REQ# (по отрицательному перепаду). ЦУ считает принимаемые данные действительными по отрицательному перепаду сигнала АСК#. Асинхронный обмен поддерживается всеми устройствами для всехфаз передачи информации.
Рис. 5.6. Временные диаграммы асинхронного обмена (Dl -
данные от ИУ, DT - данные от ЦУ)
Фазы передачи данных Data OUT и Data IN no предварительной "договоренности" устройств могут выполняться и в синхронном режиме обмена, диаграммы которого приведены на рис. 5.7. При согласовании синхронного режима определяются минимальные длительности и периоды управляющих импульсов АСК# и REQ#, а также допустимое отставание подтверждений от запросов (REQ/ACK offset agreement). ЦУ
передает серию данных, сопровождаемых стробами REQ# (рис. 5.7а) в темпе, ограниченном установленными временными параметрами. ИУ фиксирует принимаемые данные по отрицательному перепаду сигнала REQ#, но отвечать на них сигналом АСК# может с некоторым опозданием. Как только отставание числа принятых сигналов АСК# от числа посланных REQ# достигнет оговоренного предельного значения (в данном примере 2), ЦУ приостановит обмен до прихода очередного подтверждения АСК#. Операция будет считаться завершенной, когда число принятых подтверждений совпадет с числом посланных запросов. При приеме данных ЦУ механизм согласования остается тем же, но данные фиксируются по отрицательному перепаду сигнала АСК# (рис. 5.76).
В спецификации SCSI-1 момент возобновления передачи по устранении отставания описан нечетко, в результате чего разработчики могли считать, что очередной запрос (и данные) может последовать лишь после окончания (положительного перепада) сигнала АСК#. Устройство, на это рассчитанное, может терять данные:
для него последний ситал REQ# (и данные) будет неожиданным и выглядеть как превышение согласованного смещения.
Рис. 5.7. Временные диаграммы синхронного обмена:
а - передача, б - прием.
Обмен при разрядности 16 и 32 бит происходит аналогично, но при использовании двух кабелей (В и Q) передачи по ним управляются сигналами REQB#/ACKB# и REQQ#/ACKQ# соответственно. По обоим кабелям передачи выполняются в одинаковых режимах. Если в последней фазе данных используются не все байты, передатчик обязан снабдить их корректным битом паритета.
При описании фаз шины не говорилось о временных задержках. Они определяются спецификацией так, чтобы возможный "перекос" - неодновременный приход сигналов, вызванный задержкой как в электронных схемах, так и в разных
проводах кабеля, - не влиял на устойчивость протокола. В асинхронном режиме обмена на скорость передачи информации влияет и длина кабеля, поскольку изменения состояний участников обмена привязываются к сигналам, распро-
страняющимся по кабелю с ограниченной скоростью. Из-за необходимости учета задержек в случае применения пары кабелей в каждом из них используется своя пара REQ#/ACK#. В фазе Command ЦУ запрашивает от ИУ команду. В фазе Status ЦУ делает запрос на передачу ИУ информации о своем состоянии. В фазах Data IN и Data OUT ЦУ делает за просы на передачу данных к И У и от него соответственно.
Фазы Message IN и Message О UT служат для передачи сообщений. Фазу Message OUT ЦУ вводит в ответ на условие Attention, порождаемое ИУ сигналом ATN#, когда оно нуждается в посылке сообщения ЦУ. Фазу Message IN ЦУ вво-
дит при необходимости посылки сообщения ИУ.
Между фазами передачи информации сигналы BSY#, SEL#, REQ# и АСК# должны оставаться в неизменном состоянии, меняться могут только значения сигналов C/D#, 1/0#, MSG# и шины данных.
Сигналы ATN# и RST# могут порождать условия Attention и Reset соответственно, причем асинхронно по отношению к фазам шины. Эти условия могут привести к изменению предопределенного порядка фаз. Сигнал ATN# вводится ИУ во время любой фазы, кроме арбитража и состояния покоя шины. Сигнал RST# вводится в любой момент любым устройством, и по условию Reset все устройства должны немедленно освободить шину. В зависимости от настройки,
принятой для всех устройств конкретной системы, возможно выполнение одного из двух вариантов сброса. "Жесткий" сброс переводит устройства в состояние, принятое по включению питания, сбрасывая все текущие процессы, очереди и т. п. В случае "мягкого" сброса после освобождения шины устройства пытаются завершить начатые операции, сохраняя текущие назначения настроек.
Каждый процесс ввода/вывода состоит из следующей последовательности фаз шины: из состояния Bus Free через фазу Arbitration переход к фазе Selection или Reselection. Далее следуют фазы передачи информации (Command, Data, Status, Message). Завершающей фазой является Message In, в которой передается сообщение Disconnect или Command Complete, после чего шина переходит в состояние покоя Bus Free.
Архитектура SCSI обеспечивает для каждого процесса ввода/вывода сохранение набора из трех указателей - Saved SCSI Pointers, для команды, состояния и данных. ИУ имеет текущий набор указателей (только один), в который копируется сохраненный набор для текущего процесса. Текущие указатели указывают на очередной байт команды, состояния и данных, которые будут передаваться между памятью ИУ и ЦУ. Сохраненные указатели команды и состояния всегда указывают на начала блоков дескрипторов команд и состояния. Сохраненный указатель данных указывает на начало блока данных до тех пор, пока ЦУ не пришлет сообщение Save Data Pointer. По его приему будет сохранен текущий указатель данных. Когда ЦУ отключается от шины информация о текущем процессе ввода/вывода содержится в сохраненном наборе указателей. При возобновлении процесса ЦУ сообщением Restore Pointers может потребовать у И У скопировать сохраненный набор в текущий и продолжить выполнение команд данного процесса ввода/вывода.
Поскольку указатель данных может быть модифицирован ЦУ до завершения ввода вывода, использование указателя для определения реального количества передан ных данных дает ненадежные результаты.
Управление интерфейсом
Для управления интерфейсом служит система сообщений - Message System, которыми обмениваются ИУ и ЦУ. Обмен происходит в фазах Message IN/OUT (см. выше), в одной фазе может передаваться несколько сообщений. Одно сообщение не может расщепляться на несколько фаз. Форматы сообщений стандартизованы; каждое сообщение начинается с кода.
Существуют однобайтные (коды OOh, 02h-lFh, SOh-FFh), двухбайтные (коды 20h-2Fh) и расширенные сообщения (код Olh). В двухбайтном сообщении второй байт является аргументом сообщения. В расширенных сообщениях второй байт задает длину, а последующие байты несут код и аргументы сообщения. Коды сообщений приведены в табл. 5.10.
Код |
Направление |
Сообщение |
Назначение |
OOh |
In |
CommandComplete |
Процесс ввода/вывода завершен, информация о состоянии послана в сообщении 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 DeviceReset |
Аппаратный сброс ЦУ и освобождение шины |
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умент задает число байт: |
Значение 2-го байта |
Игнорировать биты данных при разрядности обмена |
|
32 бит |
16 бит |
|
Olh |
DB[31:24] |
DB[15:8] |
02h |
DB[31:16] |
Зарезервировано |
03h |
DB[31:8] |
Зарезервировано |
OOh, 04h - FFh |
Зарезервировано |
Зарезервировано |
В SCSI-2 для установления связи процесса с конкретным логическим устройством I_T_L (lnitiator_Target_LUN) или с конкретной целевой программой I_T_R (lnitiator_Target_TRN), а также предоставления права разрыва соединения служат сообщения 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 или "жесткого" сброса, что приведет к ус тановке предопределенных режимов по включению. Согласование режимов не должно инициироваться в каждом процессе, поскольку затраты времени на эту процедуру сведут.
на нет выигрыш в производительности.
Типы ПУ
Каждое ЛУ может представлять одно или несколько однотипных периферийных устройств (ПУ), перечень их стандартизованных типов приведен в табл. 5.12. Сложное ПУможет представляться несколькими ЛУ SCSI. По характеру
обмена данных устройства разделяются на 2 класса - блочные (Block Device) с типами 0, 4, 5, 7 и поточные (Stream Device) с типами 1, 2, 3, 9.
Код типа |
Назначение |
OOh |
Direct-access device - устройства прямого доступа (накопители на магнитных дисках) |
Olh |
Sequential-access device - устройства последовательного доступа (накопители на магнитных лентах) |
02h |
Printer device - принтеры |
03h |
Processor device - процессоры (устройства обработки данных) |
04h |
Write-once device - устройства однократной записи (некоторые оптические диски) |
05h |
CD-ROM device - приводы CD-ROM |
06h |
Scanner device - сканеры |
07h |
Optical memory device - устройства оптической памяти |
08h |
Medium Changer device - устройства смены носителей (jukebox) |
09h |
Communications device - коммуникационные устройства |
OAh-OBh |
Устройства класса ASC ITS (Graphic Arts Pre-Press Devices - высококачественные устройства печати) |
OCh |
Array controller device - контроллеры массивов накопителей |
ODh-lEh |
Зарезервировано |
IFh |
Неизвестный тип или устройство отсутствует |
Устройства прямого доступа (0) позволяют сохранять блоки данных. Каждый блок хранится по уникальному логическому адресу LBA - Logical Block Address. Взаимное расположение логических блоков на носителе не регламентируется. Адрес первого логического блока - нулевой, последнего - (п-1), где n - общее число блоков. В цепочках команд устройствами может поддерживаться относительная адресация, когда исполнительный адрес в команде определяется смещением относительно адреса, действовавшего в предыдущей команде.
Блоки данных хранятся на носителе вместе с дополнитель ной информацией, используемой контроллером для управления чтением и записью, а также обеспечения надежности хранения данных (ЕСС или CRC-коды). Формат дополни-
тельных данных не регламентируется, ЦУ скрывает эти данные от ИУ.
Для каждого блока может быть установлена своя длина, ночаще используют единую длину блока для всего носителя. Группа смежных блоков одинаковой длины называется экстентом (extent), экстенты определяются командой MODE
SELECT, длину блока можно узнать по команде MODE SENSE. После изменения длины блока для активизации экстента обычно требуется форматирование.
Носитель может быть разделен на области, одна из которых используется для хранения блоков данных, другая резервируется для замены дефектных блоков, часть носителя может использоваться контроллером для обслуживания устройства.
Дефектные блоки области данных могут быть переназначе ны на другую область носителя, что позволяет их скрыть.
Носитель может быть фиксированным и сменяемым (Removable). Сменяемый носитель в картридже (или чехле) называют томом (Volume). Для чтения/записи том должен быть смонтирован.
Устройство может быть зарезервировано И У, при этом доступ к нему других И У ограничивается. Ограничения распространяются на ЛУ или экстент.
Устройства, имеющие кэш данных, могут поддерживать политику обратной записи (Write Back). При этом появляются интервалы времени, в течение которых внезапное отклю чение питания устройства приведет к потере данных, по-
скольку сообщение о завершении команды посылается пос ле записи в кэш, а не на носитель. Сообщения об ошибках при WB поступают к ИУ с опозданием. Чтобы избежать этих неудобств, ИУ может запретить устройству использовать WB. Отдельные блоки в кэше можно фиксировать, не до пуская их замещения при последующих операциях обмена.
Типичный пример устройств прямого доступа - накопитель на магнитном диске. Есть устройства прямого доступа на лен точном носителе - Floppy Tape. Именно для них эффективна команда SEEK. Устройства прямого доступа могут не иметь подвижных носителей, а быть основаны на памяти разной природы: SRAM, DRAM, FRAM, EEPROM, флэш-память.
Устройства последовательного доступа (1) имеют ряд особенностей, связанных с принципом их действия. Носитель представляет собой магнитную ленту с многодорожечным, серпантинным или наклонно-строчным типом записи. Носитель - всегда сменяемый, с некоторым конструктивньш обрамлением (катушка, картридж) - также называется томом. Том имеет начало носителя ВОМ (beginning-of-medium) и конец носителя ЕОМ (end-of-medium). При записи ИУ должен заранее узнавать о приближении конца носителя, для чего определяется позиция раннего предупреждения EW (Early Warning) с соответствующим маркером. Это позволяет после записи блока данных из буфера поместить на носитель соответствующий концевой маркер. Том может иметь один или несколько разделов (Partitions), нумеруемых с нуля. Разделы располагаются друг за другом, без перекрытия. Каждый раздел х имеет начало ВОР х (Begining-Of- Partition х), конец ЕОР х и раннее предупреждение EW х. Между началом и концом раздела помещаются блоки данных и маркеры. Блоки данных, передаваемые ИУ, называются логическими. Логический блок может занимать один или несколько физических блоков дан Hbix на носителе, в последнем случае за блокирование-дебло кирование отвечает ЦУ. Описатели записанных физических и/или логических блоков могут храниться на носителе (определяется форматом записи). Буфер устройства должен вмещать по крайней мере один логический блок.
Принтеры (2), подключаемые через интерфейс SCSI, не требуют особых команд для управления, поскольку эти функции реализуются через поток передаваемых данных. Одна ко двунаправленная связь по шине позволяет ввести
дополнительные команды, служащие для отслеживания состояния принтеров с буферной памятью, и обеспечить целостность заданий. Принтеры могут иметь встроенный контроллер SCSI или подключаться ЛУ к внешнему контроллеру
по интерфейсу Centronics или RS-232. Параметры подключения определяются командой MODE SELECT,
Процессорными устройствами (3) в терминологии SCSI являются источники и потребители пакетов информации, трактовка которой стандартом не определена. Примерами процессорных устройств являются компьютеры, обменивающиеся сообщениями односторонним или двухсторонним образом. Процессорным устройством является и какое-либо сложное устройство отображения (графический дисплей), которое занято выводом потока сообщений. От коммуникационных устройств процессорные отличаются тем, что они являются источниками или потребителями информации, в то время как коммуникационные служат лишь посредниками.
Устройства оптической памяти (7) близки к устройствам прямого доступа со сменными носителями, но имеют ряд характерных особенностей. Большая емкость носителя вызывает необходимость применения команд с 12-байтным дескриптором. Устройства могут обеспечивать считывание, однократную или многократную запись. На носителе могут быть определены зоны, недоступные для записи. Блоки носителя имеют состояние "чистый" и "записанный", что отмечается соответствующим атрибутом. Для устройств многократной записи перед повторной записью блока необходимо его стереть. Стирание может выполняться специальной командой или автоматичес ки по команде записи. В записи фаза стирания может отсут ствовать. К этим устройствам применимо понятие обновления (update) логического блока - запись новых данных по тому же адресу логического блока, но на другое место носителя.
Прежние данные могут быть считаны специальной командой, указывающей кроме логического адреса блока и его поколение (generation). Емкость носителя в таком случае сообщается без учета множества поколений. Оптические носители по сравнению с магнитными имеют существенно более высокий уровень ошибок, так что приходится использовать более сложные алгоритмы восстановления информации.
Устройства однократной записи (4), обычно оптические, отличаются невозможностью перезаписи ранее записанного блока. Попытка повторной записи в зависимости от реализации устройства может приводить к потере записанных данных. Каждый блок имеет состояние "записан" или "не записан", инициализация (форматирование) не применяется.
Приводы CD-ROM (5) предназначаются для работы с CD дисками. Изначально диски содержали звукозапись и приводы были рассчитаны не только на чтение блоков данных,но и на потоковый вывод на внешний аудиоинтерфейс. За-
пись не предусмотрена. Данные на диске адресуются по-разному. Физический сектор имеет 2352 байт, из которых обычно используется 2048, поле синхронизации 12 байт и поле тега адреса сектора 4 байт. Дополнительное поле 288 байт используется для исправления ошибок данных, но если ошибки допустимы, его тоже используют для хранения данных. Таким образом, физический сектор данных может иметь размер 2048 байт (CD-ROM Data Mode 1) или 2336 и даже 2340 (вместе с полем тега) байт (CD-ROM Data Mode 2). В зависимости от размера логического блока (1024, 512 или 256 байт) сектор может вмещать 2,4 или 8 блоков.
Один сектор, или кадр (frame), аудиодиска хранит 1/75 с звукозаписи. От этого происходит адресация MSF: 75 смежных кадров, адресуемых полем F (0-74), объединяются в более крупную единицу, адресуемую полем S (0-59), звуча-
щую 1 с. 60 полей S соответствуют полю М (0-74), звучащему 1 мин. Адресация MSF может использоваться как абсолютная или относительно начала трека. Носитель делится на треки (track), характерные однотипностью записанной информации. Каждый трек (они нумеруются от 1 до 99) делится на последовательно нумеруемые (1-99) индексы (index).
Носитель CD-ROM и CD-DA кроме основного канала имеет субканал (sub-channel), разделенный на 8 частей, называемых Р, Q, R, S, Т, U, V и W. К примеру, часть Q несет информацию для контроллера и привода - управляющие поля
и MSF-адрес. Каждая часть имеет производительность, равную 1/192 основного канала.
Сканеры. (6) передают ИУ данные, описывающие растровое изображение сканируемого объекта. Команды позволяют здавать окна сканирования, определяя в них режим и разрешение. Для некоторых функций требуется посылка данных в сканер (например, полутоновые маски). Для сканеров с автоподачей имеются команды позиционирования.
Устройства смены, носителей (8) предназначены для автоматического манипулирования сменными носителями - дисками и картриджами с магнитными лентами. В SCSI они представляются ЛУ, отличающимися от первичных устройств хранения, которые они обслуживают. Модель устройства состоит из набора адресуемых элементов, каждый из которых может "держать" только одну единицу носителя
- Medium Transport Element - элемент транспортировкиносителя;
- Storage Element - место хранения единицы носителя, когда он не находится ни в одном из элементов трех другихтипов;
- Import Export Element - элемент, с помощью которого устройство принимает носители извне или отдает их;
- Data Transfer Element - позиция первичного устройства, осуществляющего обмен данными с носителем.
Элементы адресуются 16-битными адресами; доступна информация об их состоянии. Каждый том носителя снабжается идентификатором-тегом, по которому определяется его нахождение в элементах.
Коммуникационные устройства (9) предназначены для обмена информацией с устройствами через внешнюю по отношению к шине SCSI среду передачи данных. Внешние протоколы стандартом SCSI не описываются: вся необходимая
для них информация заключена в сообщениях, передаваемых и принимаемых ИУ по командам SEND MESSAGE и GET" MESSAGE.
Адресация и система команд
Как указывалось ранее, любое устройство 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):
- 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 (остальные зарезервированы).
Биты 76543210 |
Состояние |
Значение |
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 |
IntermediateCondition 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 |
40h |
*0 |
Модификация определений |
Compare |
39h |
*0 |
Побайтное сравнение данных |
Copy |
18h |
*0 |
Копирование данных с одно- |
Copy And Verify |
3Ah |
*0 |
Копирование данных с одно- |
Erase |
19h |
1m |
Стирание (участка или |
Erase (10) |
2Ch |
7o |
То же с 10-байтным блоком |
Erase (12) |
ACh |
7o |
То же с 12-байтным блоком |
Exchange |
A6h |
80 |
Обмен носителями между |
Format |
04h |
2o |
Выбор шрифтов и форм |
Format Unit |
04h |
Om 7o |
Форматирование устройства |
Get Data Buffer |
34h |
60 |
Опрос состояния буфера |
Get Message |
08h |
9o |
Прием пакета из коммуни- |
Команда |
Код |
Применимость |
Назначение |
Get Message |
28h |
9o |
To же с 10-байтным блоком |
Get Message |
A8h |
9o |
То же с 12-байтным блоком |
Get Window |
25h |
60 |
Получение информации |
Initialize |
07h |
8o |
Инициализация состояния |
Inquiry |
12h |
*m |
Опрос типа устройства, уров- |
Load Unload |
IBh |
lo |
Загрузка/разгрузка носителя |
Locate |
2Bh |
lo |
Позиционирование |
Lock-Unlock |
36h |
Oo 4o 5o 7o |
Фиксация заданных логи- |
Log Select |
4Ch |
*o |
Запись статистической ин- |
Log Sense |
4Dh |
*o |
Считывание статистической |
Medium Scan |
38h |
4o7o |
Сканирование - поиск не- |
Mode Select (6) |
15h |
*z |
Запись параметров носителя, |
Mode Select |
55h |
*z |
То же с 10-байтным блоком |
Mode Sense (6) |
lAh |
*z |
Считывание параметров |
Команда |
Код |
Прииенимость |
Назначение |
Mode Sense |
5Ah |
*г |
То же с 10-байтньш блоком |
Move Medium |
A5h |
8ro |
Передача носителя |
Object Position |
31h |
6о |
Позиционирование (загруз- |
Pause/Resume |
4Bh |
5о |
Пауза/продолжение воспро- |
Play Audio (10) |
45h |
5о |
Аудиовоспроизведение ука- |
Play Audio (12) |
A5h |
5о |
То же с 12-байтньш блоком |
Play Audio MSF |
47h |
5о |
Аудиовоспроизведение с адре- |
Play Audio |
48h |
5о |
Аудиовоспроизведение с ука- |
Play Track |
49h |
5о |
Аудиовоспроизведение с адре- |
Play Track |
A9h |
5о |
То же с 12-байтным блоком |
Position To |
2Bh |
8о |
Позиционирование транс- |
Pre-Fetch |
34h |
Оо 4о 5о 7о |
Считывание блоков данных в |
Prevent Allow |
lEh |
Оо 1о 4о 5о 7о |
Запрет/разрешение смены |
|
OAh |
2т |
Печать блока данных |
Read (6) |
08h |
От 1т 4о 5о |
Чтение данных (с 6-байтным |
Read(10) |
28h |
От 4т 5т 6т |
То же с 10-байтньш блоком |
Read(12) |
A8h |
4о 5о 7о |
То же с 12-байтным блоком |
Read Block |
05h |
1т |
Запрос ограничений на дли- |
Команда |
Код |
Применимость |
Назначение |
Read Buffer |
3Ch |
*0 |
Чтение буфера |
Read Capacity |
25h |
Om 4m 7m |
Определение емкости Л У |
ReadCd-Rom |
25h |
5m |
Определение емкости |
Read Defect |
37h |
Oo7o |
Чтение списков дефектных |
Read Defect |
B7h |
7o |
То же с 12-байтным блоком |
Read Bement |
B8h |
80 |
Чтение состояния элементов |
Read |
29h |
7o |
Чтение максимально возмож- |
Read Header |
44h |
5o |
Чтение заголовка логического |
Read Long |
3Eh |
Oo 4o 5o 7o |
"Длинное" чтение - данные |
Read Position |
34h |
lo |
Запрос позиции данных, |
Read Reverse |
OFh |
lo |
Чтение блоков с текущей по- |
Read |
42h |
5o |
Чтение данных субканала |
Read Toe |
43h |
5o |
Чтение таблицы содержимого |
Read Updated |
2Dh |
7o |
Чтение определенного поко- |
Reassign Blocks |
07h |
Oo4o7o |
Переназначение дефектных |
Команда |
Код |
Применимость |
Назначение |
Receive |
08h |
3o |
Прием пакета |
Receive |
ICh |
*o |
Получение результатов диа- |
Recover |
14h |
lo2o |
Восстановление данных, по- |
Release |
17h |
Om 2m 4m 5m |
Освобождение зарезервиро- |
Request Sense |
03h |
Jj |
Опрос уточненного состояния |
Request Volume |
B5h |
80 |
Передача результатов коман- |
Reserve |
16h |
Om 1m 2m 4m |
Предотвращение использо- |
f iy^flli^J |
Olh |
1m |
Перемотка носителя к началу |
Rezero Unit |
Olh |
Oo 4o 5o 7o 80 |
Приведение ЛУ в определен- |
Scan |
IBh |
6o |
Сканирование данных в |
Search Data |
31h |
Oo 4o 5o 7o |
Поиск данных, (не) совпа- |
Search Data |
Blh |
4o 5o 7o |
То же с 12-байтным блоком |
Search Data |
30h |
Oo 4o 5o 7o |
Поиск данных, (не) больших |
Search Data |
BOh |
4o 5o 7o |
То же с 12-байтным блоком |
Search Data |
32h |
Oo5o7o |
Поиск данных, (не) меньших |
Search Data |
B2h |
4o 5o 7o |
То же с 12-байтным блоком |
Seek(6) |
OBh |
Oo 4o 5o 7o |
Позиционирование (с 6-байт- |
Команда |
Код |
Применимость |
Назначение |
Seek(10) |
2Bh |
Oo 4o 5o 7o |
Позиционирование - поиск |
Send |
OAh |
3m |
Посылка пакета |
Send (10) |
2Ah |
60 |
Посылка данных в устройство |
Send Diagnostic |
IDh |
*m |
Запуск теста ЦУ. Ответом |
Send Message |
OAh |
9m |
Посылка пакета в коммуни- |
Send Message |
2Ah |
9o |
То же с 10-байтным блоком |
Send Message |
AAh |
9o |
То же с 12-байтным блоком |
Send Volume |
B6h |
80 |
Посылка тега тома (шаблона) |
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 |
lOh |
2o |
Синхронизация буфера - |
Synchronize |
35h |
Oo 4o 5o 7o |
Синхронизация кэша - |
Test Unit Ready |
OOh |
*m |
Опрос готовности ЛУ |
Update Block |
3Dh |
7o |
Обновление логического |
Verify |
2Fh |
Oo5o7o |
Верификация - проверка |
Verify |
13h |
lo |
Тоже |
Verify (10) |
2Fh |
4o5o7o |
То же или проверка чистоты |
Verify (12) |
AFh |
4o 5o 7o |
То же с 12-байтным блоком |
Write (6) |
OAh |
Oo 1m 4o 7o |
Запись блоков данных, |
Write (10) |
2Ah |
Oo4m 7m |
Запись блоков данных, |
Write (12) |
AAh |
4o7o |
То же с 10-байтным блоком |
Write And Verify |
2Eh |
Oo4o7o |
Запись блоков данных, |
Write And Verify |
AEh |
7o4o |
То же с 12-байтным блоком |
Write Buffer |
3Bh |
*o |
Запись в буфер (но не |
Команда |
Код |
Применимость |
Назначение |
Write Filemarks |
lOh |
1m |
Запись маркера файлов |
Write Long |
3Fh |
Oo4o7o |
"Длинная" запись - блока |
Write Same |
41h |
Oo |
Запись блока данных, пере- |
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, будет исполняться
последним. ИУ может удалить процесс из очереди, сослав-
шись на него по тегу. Изменение порядка выполнения ко-
манд ЦУ не касается порядка команд в цепочке, поскольку
цепочка принадлежит одному процессу, а в очередь ставят-
ся именно процессы.
5.7. Конфигурирование устройств SCSI
Все устройства на шине должны быть согласованно скон-
фигурированы. Для них требуется программно или с помо-
щью джамперов установить следующие основные параметры:
Идентификатор устройства SCSI ID - адрес 0-7 (для Wide
SCSI 0-15), уникальный для каждого устройства на шине.
Обычно хост-адаптеру, который должен иметь высший прио-
ритет, назначается адрес 7 (15 для Wide SCSI, если все устрой-
ства 16-битные). Позиционный код, используемый для адре-
сации, обеспечивает совместимость адресации 8- и 16-битных
устройств на одной шине. Типовые заводские назначения иден-
тификаторов устройств приведены в табл. 5.15, хотя они не
являются обязательными. В настоящее время прорабатывает-
ся спецификация РпР для устройств SCSI, позволяющая ав-
томатизировать процесс назначения идентификаторов. Она
обеспечивает сосуществование традиционных (Legacy SCSI)
устройств, идентификаторы которых задаются джамперами,
с автоматически конфигурируемыми РпР-устройствами.
Контроль паритета - SCSI Parity. Если хотя бы одно уст-
ройство не поддерживает контроль паритета, он должен быть
отключен для всех устройств на шине. Контроль паритета,
особенно для дисковых устройств, является надежным сред-
ством защиты от искажения данных при передаче по шине.
Включение терминаторов - Termination. В современных уст-
ройствах применяются активные терминаторы, которые мо-
гут включаться одним джампером или программно управ-
ляемым сигналом. Терминаторы включаются только на
крайних устройствах в цепочке. Современные хост-адапте-
ры позволяют автоматически включать свой терминатор, если
они являются крайними, и отключать, если используются
внутренний и внешний разъем канала. Это позволяет под-
ключать и отключать внешние устройства, не заботясь о пе-
реключении терминаторов. Ранее приходилось открывать
корпус и переставлять джампер, а пассивные терминаторы
устанавливать в специальные гнезда (и извлекать их оттуда).
При отсутствии внутренних терминаторов пользователь .вы-
нужден был использовать внешние, устанавливаемые на ка-
бель.
Правильная установка терминаторов крайне существенна -отсутствие/избыток тер-
минаторов может привести к неустойчивости или неработоспособности интерфейса.
Питание терминаторов (Terminator Power). Когда использу-
ются активные терминаторы (для современных устройств -
всегда), питание терминаторов должно быть включено (джам-
пером или программно) хотя бы на одном устройстве.
Согласование скорости синхронного обмена (SCSI Synchronous
Negotiation). Режим синхронного обмена, обеспечивающий
высокую производительность, включается по взаимному со-
гласию устройств. Если хотя бы одно устройство на шине
его не поддерживает, рекомендуют согласование запретить
на хост-адаптере. Если обмен будет инициирован синхрон-
ным устройством, хост-адаптер поддержит этот режим.
Старт по команде (Start on Command) или задержанный
старт (Delayed Start). При включении этой опции запуск
двигателя устройства выполняется только по команде от
хост-адаптера, что позволяет снизить пик нагрузки блока
питания в момент включения. Хост будет запускать устрой-
ства последовательно.
Разрешение отключения (Enable Disconnection). Позволяет ус-
тройствам отключаться от шины при неготовности данных
во время длительных операций с носителем, что весьма эффек-
тивно в многозадачном режиме при нескольких ПУ на шине.
В случае одного устройства отключение приводит только к
дополнительным затратам времени на повторное соединение.
SCSI ID |
Устройство |
7 |
Хост-адаптер |
6 |
Накопитель на магнитных дисках |
5 |
- |
4 |
Ленточный или R/W-оптический накопитель |
3 |
CD-ROM |
SGIID |
Устройство |
2 |
Сканер, принтер |
1 |
НЖМД, поддерживаемый BIOS хост-адаптера |
0 |
НЖМД, поддерживаемый BIOS хост-адаптера |
Устройства SCSI допускают программирование - Pmgfvmmable
Operating Definition. Программированием определений опера-
ций для ЛУ можно изменить такие параметры, как иденти-
фикация производителя, типа и модели устройства, уровень
соответствия SCSI, номер спецификации, набор команд и т. д.
Однако низкоуровневые параметры интерфейса (параметры
временных диаграмм, определение паритета) сохраняются
неизменными. Текущие определения могут быть считаны ИУ
по командам Inquiry, Mode Sense и Read Capacity.
5.8. Хост-адаптер SCSI
Хост-адаптер является важнейшим узлом интерфейса, опреде-
ляющим производительность системы SCSI. Существует ши-
рокий спектр адаптеров. К простейшим можно подключать
только устройства, не критичные к производительности. Такие
адаптеры входят в комплект поставки сканеров, а подключение
к ним диска невозможно. Высокопроизводительные адаптеры
имеют собственный специализированный процессор, большой
объем буферной памяти и используют высокоэффективные
режимы прямого управления шиной для доступа к памяти
компьютера. Адаптеры SCSI существуют для всех шин: ISA
(8-16 бит), EISA, МСД PCI, VLB, PCMCIA и для параллель-
ного порта. Ряд системных плат имеют встроенный
SCSI-адаптер, подключенный к одной из локальных шин. При
выборе интерфейса, к которому подключается хост-адаптер,
учитывайте производительность - интерфейс не должен стать
узким местом при обмене с высокопроизводительными устрой-
ствами SCSI. Наибольшую эффективность имеют хост-адапте-
ры для шины PCI. Конечно, за мощный адаптер для сервера
приходится платить - его цена может превышать цену рядово-
го настольного компьютера. Еще дороже хост-адаптеры со
встроенными контроллерами RAID-массивов, которые содержат
мощный RISC-процессор и большой объем локальной памяти.
Конфигурирование хост-адаптеров с точки зрения шины
SCSI не отличается от конфигурирования других устройств.
Для современных адаптеров вместо джамперов использует-
ся программное конфигурирование. Утилита конфигуриро-
вания обычно входит в расширение BIOS, установленное на
плате адаптера, и приглашение к ее вызову выводится на
экран во время POST.
Как и всякая карта расширения, хост-адаптер должен быть
сконфигурирован и с точки зрения шины расширения, к ко-
торой он подключается. Системные ресурсы для шинного
SCSI-адаптера включают:
^ область памяти для расширения ROM BIOS, необходи-
мого для поддержки конфигурирования устройств и дис-
ковых функций. Если в системе установлено несколько
однотипных хост-адаптеров, ROM BIOS для них исполь-
зуется с одного адаптера. Разнотипные хост-адаптеры не
всегда могут работать вместе;
^ область разделяемой буферной памяти;
^ область портов ввода-вывода (I/O Port);
ш IRQ - запрос прерывания;
^ DMA - канал прямого доступа к памяти (для шин
ISA/EISA), часто используемый для захвата управления
шиной (Bus-Mastering).
Все устройства SCSI требуют специальных драйверов. Базо-
вый драйвер дисковых устройств входит в BIOS хост-адапте-
ра. Расширения, например ASPI (Advanced SCSI Programming
Interface), загружаются отдельно. От драйверов сильно зави-
сит производительность устройств SCSI. "Умное" ПО спо-
собно эффективно загружать работой устройства, а иногда и
"срезать углы" - выполнять копирование данных между
устройствами без выхода на системную шину компьютера.