SCSI

SCSI (, произносится /ˈskʌzi/ «скази» (встречаются варианты «эс-си-эс-ай» и «сэкси») представляет собой набор стандартов для физического подключения и передачи данных между компьютерами и периферийными устройствами. SCSI-стандарты определяют команды, протоколы и электрические и оптические интерфейсы. Разработан для объединения на одной шине различных по своему назначению устройств, таких, как жёсткие диски, накопители на магнитооптических дисках, приводы CD, DVD, стримеры, сканеры, принтеры и т. д. Раньше имел неофициальное название Shugart Computer Systems Interface в честь создателя Алана Ф. Шугарта, разработанный в 1978 г. и опубликованный в 1981 году.

Теоретически возможен выпуск устройства любого типа на шине SCSI.

После стандартизации в 1986 году SCSI начал широко применяться в компьютерах Sun Microsystems. В компьютерах, совместимых с IBM PC, SCSI не пользуется такой популярностью в связи со своей сложностью и сравнительно высокой стоимостью и применяется преимущественно в серверах.

SCSI широко применяется на серверах, высокопроизводительных рабочих станциях; RAID-массивы на серверах часто строятся на жёстких дисках со SCSI-интерфейсом (однако в серверах нижнего ценового диапазона всё чаще применяются RAID-массивы на основе SATA). В настоящее время устройства на шине Serial Attached SCSI постепенно вытесняют устаревшую шину SCSI.

Система команд SCSI на уровне программного обеспечения употребляется в единых стеках поддержки устройств хранения данных в ряде операционных систем, таких, как Microsoft Windows.

Существует реализация системы команд SCSI поверх оборудования (контроллеров и кабелей) IDE/ATA/SATA, называемая ATAPI — ATA Packet Interface. Все используемые в компьютерной технике подключаемые по IDE/ATA/SATA приводы CD/DVD/Blu-Ray используют эту технологию.

Также система команд SCSI реализована поверх протокола USB, что является частью спецификации класса Mass Storage device. Это позволяет подключать через интерфейс USB любые хранилища данных (от флеш-накопителей до внешних жёстких дисков), не разрабатывая для них собственного протокола обмена, а вместо этого используя имеющийся в операционной системе драйвер SCSI.

Стандарты 
Современная модель стандартов SCSI, устанавливаемая комитетом T10 (ANSI), определяет:
 архитектуру SCSI (документ SAM — SCSI Architecture Model);
 основные требования к протоколу, основные команды (SPC — SCSI Primary Commands);
 структуры типа развернутой информации об ошибке;
 виды участников:
 инициаторы
 устройства прямого доступа
 устройства последовательного доступа
 устройства автоматизированного управления и прочие;

 наборы команд для видов участников (например, SBC — SCSI Block Commands, MMC)
 виды транспорта (SAS, iSCSI, традиционный параллельный SCSI, Fibre Channel…).
Наиболее современным транспортом для физического подключения является Serial Attached SCSI (SAS).

Для передачи команд протокола SCSI по IP-сетям используется сетевой протокол iSCSI, утверждённый IETF как стандартный в 2003 году.

Интерфейс SCSI 
Параллельный интерфейс SCSI является исторически первым и самым известным. Существует три стандарта электрической организации параллельного интерфейса SCSI:

SE () — асимметричный SCSI, для передачи каждого сигнала используется отдельный проводник.

LVD () — интерфейс дифференциальной шины низкого напряжения, сигналы положительной и отрицательной полярности идут по разным физическим проводам — витой паре. На один сигнал приходится по одной витой паре проводников. Используемое напряжение при передаче сигналов ±1,8 В.

HVD () — интерфейс дифференциальной шины высокого напряжения, отличается от LVD повышенным напряжением и специальными приёмопередатчиками.

Первый стандарт SCSI имеет 50-контактный неэкранированный разъем для внутрисистемных соединений и аналогичный экранированный разъем типа Centronics (Alternative 2) для внешних подключений. Передача сигналов осуществляется 50-контактным кабелем типа — A-50 на 8-разрядной (8-битной) шине.

Но надо иметь в виду, что до появления SCSI, имевшего 50-контактный разъём, и даже одновременно с ним был более старый SCSI, имевший 25-контактный разъём, почти такой, как разъём LPT (например, в теперь уже почти вышедшем из употребления сканере Mustek 1200 FS есть одновременно три разъёма: OPTION на 26 контактов, SCSI на 25 контактов, SCSI на 50 контактов).

В стандарте SCSI-2 для 8-битной шины предусматривался кабель типа A, который, как и в SCSI-1, поддерживал 50-контактными разъемами типа D с уменьшенным шагом выводов (Alternative 1). Разъемы типа Centronics (Alternative 2) в SCSI-2 построены на 8- и 16-битной шине. Передача информации осуществляется по 68-контактным кабелям типа A-68 и P-68 (Wide). Для 32-битной версии шины был предусмотрен тип кабеля B, который должен был параллельно подключаться одновременно с кабелем A в одно устройство. Однако кабель B не получил широкого признания и из стандарта SCSI-3 исключен.

В стандарте SCSI-3 кабели A-68 и P-68 поддерживались экранированными либо неэкранированными разъемами типа D. Кабели в SCSI-3 снабжены фиксаторами-защёлками, а не проволочными кольцами, как разъемы Centronics. Начиная с этой версии SCSI в массивах накопителей используется 80-контактный разъем, называемый Alternative 4. Накопители с таким разъемом поддерживают «горячее» подключение устройств, то есть устройства SCSI можно подключать и отключать при включенном питании.

Основные реализации параллельного интерфейса SCSI (в хронологическом порядке):

SCSI-1 
Стандартизован ANSI в 1986 г. Использовалась восьмибитная шина с пропускной способностью в 1,5 Мбайт/сек в асинхронном режиме и 5 Мбайт/сек в синхронном режиме. Максимальная длина кабеля — до 6 метров.

SCSI-2 
Этот стандарт был предложен в 1989 году и существовал в двух вариантах — Fast SCSI и Wide SCSI.

Fast SCSI характеризуется удвоенной пропускной способностью (до 10 Мбайт/сек).

Wide SCSI в дополнение к этому имеет удвоенную разрядность шины (16 бит), что позволяет достичь скорости передачи до 20 МБ/сек.

При этом максимальная длина кабеля ограничивалась тремя метрами.

Также в этом стандарте была предусмотрена 32-битная версия Wide SCSI, которая позволяла использовать два шестнадцатибитных кабеля на одной шине, но эта версия не получила распространения.

SCSI-3 
Также известен под названием Ultra SCSI.

Предложен в 1992 году.

Пропускная способность шины составила 20 Мбайт/сек для восьмибитной шины и 40 Мбайт/сек — для шестнадцатибитной. Максимальная длина кабеля так и осталась равной трём метрам.

Устройства, отвечающие этому стандарту, известны своей чувствительностью к качеству элементов системы (кабель, терминаторы).

Ultra-2 SCSI 
Предложен в 1997 году.

Использует LVDS.
Максимальная длина кабеля — 12 метров, пропускная способность — до 80 Мбайт/сек.

Ultra-3 SCSI 
Также известен под названием Ultra-160 SCSI.

Предложен в конце 1999 года.

Имеет удвоенную пропускную способность (по сравнению с Ultra-2 SCSI), которая составила 160 Мбайт/сек. Увеличения пропускной способности удалось достичь за счёт одновременного использования фронтов и срезов импульсов.

В этот стандарт было добавлено использование CRC (Cyclic Redundancy Check), предупреждение ошибок.

Ultra-320 SCSI 
Также известен под названием Fast Ultra-320.

Развитие интерфейса Ultra-3 с удвоенной скоростью передачи данных (до 320 Мбайт/сек).

Ultra-640 SCSI 
Предложен в начале 2003 года.

Удвоенная пропускная способность (640 Мбайт/сек). В связи с резким сокращением максимальной длины кабеля неудобен для использования с более чем двумя устройствами, поэтому не получил широкого распространения.

Протокол команд SCSI 
В терминологии SCSI взаимодействие идёт между инициатором и целевым устройством. Инициатор посылает команду целевому устройству, которое затем отправляет ответ инициатору.

Команды SCSI посылаются в виде блоков описания команды (). Длина каждого блока может составлять 6, 10, 12, 16 или 32 байта. В последних версиях SCSI блок может иметь переменную длину. Блок состоит из однобайтового кода команды и параметров команды.

После получения команды целевое устройство возвращает значение 00h в случае успешного получения, 02h в случае ошибки или 08h в случае, если устройство занято. В случае, если устройство вернуло ошибку, инициатор обычно посылает команду запроса состояния. Устройство возвращает Key Code Qualifier (KCQ).

Все команды SCSI делятся на четыре категории: N (non-data), W (запись данных от инициатора целевым устройством), R (чтение данных) и B (двусторонний обмен данными). Всего существует порядка 60 различных команд SCSI, из которых наиболее часто используются:
 Test unit ready — проверка готовности устройства, в том числе наличия диска в дисководе.
 Inquiry — запрос основных характеристик устройства.
 Send diagnostic — указание устройству провести самодиагностику и вернуть результат.
 Request sense — возвращает код ошибки предыдущей команды.
 Read capacity — возвращает ёмкость устройства.
 Format Unit
 Read (4 варианта) — чтение.
 Write (4 варианта) — запись.
 Write and verify — запись и проверка.
 Mode select — установка параметров устройства.
 Mode sense — возвращает текущие параметры устройства.

Каждое устройство на SCSI-шине имеет как минимум один номер логического устройства (LUN — ). В некоторых более сложных случаях одно физическое устройство может представляться набором LUN.

Для возможности работы нескольких независимых целевых устройств SCSI в UNIX-подобных операционных системах применяется адресация из произвольно назначаемого драйвером идентификатора целевого устройства (SCSI target id) и номера LUN, сконфигурированного на нём.

Для устройств типа приводов CD/DVD/Blu-Ray, в том числе их разновидностей с возможностью записи, разработан MMC — Multimedia Command Set. Некоторые приводы, например, производства Asus и Pioneer, используют конкурирующий стандарт Mt. Fuji, отличающийся от MMC в некоторых нюансах.

Терминирование 
Параллельные шины SCSI всегда должны терминироваться с обеих сторон для обеспечения нормального функционирования. Подавляющее большинство контроллеров и многие устройства имеют возможность автотерминирования — использования встроенного терминатора.

Коннекторы 
По состоянию на 2003 год:

 IDC50 (внутренний SCSI-1, Fast. Ultra)
 HD68 (Ultra 2 LVD, ULtra Wide внешний или внутренний)
 CN50 — Centronics 50 (внешний)
 HD50 (SCSI-1, Fast внешний)
 DB25 (внешний, использовался на старых Macintosh, Iomega Zip)
 VHDCI (Ultra Wide, Ultra2 Wide, Ultra 3 в RAID-системах)
 MD50 (SCSI-2)

См. также 
 LUN
 HBA
 Fibre Channel
 Сетевая карта
 Thunderbolt

Примечания

Ссылки 
 Технический комитет T10  (стандарты SCSI)
 Виртуальная библиотека документов о SCSI 
 IP-over-SCSI 
 SCSI-контроллеры Ultra160 
 Внешний вид разных разъемов SCSI

Компьютерные шины
SCSI