SCSI

SCSI (Small Computer System Interface), произносится «эс-си-эс-ай», — набор стандартов по физическому подключению и передачи данных между компьютерами и периферийными устройствами. 

SCSI стандарты определяют команды, протоколы и электрические и оптические интерфейсы. SCSI был создан с целью объединить на одной шине различные по своему назначению устройства: такие как жесткие диски, накопители на магнитооптических дисках, приводы CD, DVD, стримеры, сканеры, принтеры и прочее. Раньше стандарт имел неофициальное название Shugart Computer Systems Interface, он был назван так в честь создателя Алана Ф. Шугарта. Данный стандарт был разработан в 1978 году, а обнародован в 1981 году.

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

В 1986 году произошла стандартизация, после которой SCSI начал широко использоваться в компьютерах Apple Macintosh, Sun Microsystems. В компьютерах IBM PC (и совместимых), SCSI не пользуется такой популярностью, в связи со своей сложностью и сравнительно высокой стоимостью. Стандарт применяется в основном в серверах и рабочих станциях. RAID-массивы на серверах зачастую строятся на жестких дисках со SCSI-интерфейсом. Впрочем, в серверах нижнего ценового диапазона зачастую применяются RAID-массивы, построенные на основе SATA. В настоящее время устройства, работающие на шине SAS, постепенно вытесняют устаревшую шину SCSI.

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

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

Текущая модель стандартов SCSI, устанавливаемая комитетом T10 (ANSI), определяет архитектуру SCSI, основные требования к протоколу, основные команды, структуры типа развернутой информации об ошибке, виды участников и наборы команд для них, виды транспорта. Наиболее современным транспортом для физического подключения является Serial Attached SCSI (SAS).

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

Параллельный интерфейс SCSI

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

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

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

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

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

В стандарте 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

8 бит

5 МГц

5 МБайт/сек

6 м (25 м с HVD)

8

Fast SCSI

8 бит

10 МГц

10 МБайт/сек

3 м (25 м с HVD)

8

Wide SCSI

16 бит

10 МГц

20 МБайт/сек

3 м (25 м с HVD)

16

Ultra SCSI

8 бит

20 МГц

20 МБайт/сек

1,5—3 м (25 м с HVD)

4—8

Ultra Wide SCSI

16 бит

20 МГц

40 МБайт/сек

1,5—3 м (25 м с HVD)

4—16

Ultra2 SCSI

8 бит

40 МГц

40 МБайт/сек

12 м (25 м с HVD)

8

Ultra2 Wide SCSI

16 бит

40 МГц

80 МБайт/сек

12 м (25 м с HVD)

16

Ultra3 SCSI

16 бит

40 МГц DDR

160 МБайт/сек

12 м

16

Ultra-320 SCSI

16 бит

80 МГц DDR

320 МБайт/сек

12 м

16

Ultra-640 SCSI

16 бит

160 МГц DDR

640 МБайт/сек

 

16

SCSI-1

Данная версия была стандартизирована ANSI в 1986 году. Применялась 8-битная шина (пропускная способность = 1,5 МБайт/сек в асинхронном режиме и 5 МБайт/сек в синхронном режиме). Максимальная длина кабеля достигает 6 метров.

SCSI-2

Данный стандарт был анонсирован в 1989 году, он существовал в двух версиях — Fast SCSI и Wide SCSI. Первая характеризуется удвоенной пропускной способностью (до 10 МБайт/сек). Вторая, в дополнение к этому, обладает удвоенной разрядностью шины (16 бит), что позволяет достичь скорости передачи до 20 МБ/сек. Максимальная длина кабеля составляет 3 метра.

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

SCSI-3

Данный стандарт был анонсирован в 1992 году. Также имеет название Ultra SCSI. Пропускная способность шины в данном стандарте составляет 20 МБайт/сек для 8-битной шины и 40 МБайт/сек — для 16-битной. Максимальная длина кабеля - прежняя, 3 метра.

Работающие на данном стандарте устройства отличаются чувствительностью к качеству элементов.

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 имеют вид блоков описания команды (Command Descriptor Block, CDB). Длина каждого блока составляет 6, 10, 12, 16 или 32 байта. В последних версиях SCSI, блок может обладать переменной длиной. Блок состоит из однобайтового кода команды, а также параметров команды.

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

Все команды SCSI могут быть разделены на четыре категории:

  • N (non-data),
  • W (запись данных от инициатора целевым устройством),
  • R (чтение данных),
  • B (двусторонний обмен данными).

В общей сложности существует около 60 различных команд SCSI. 

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

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

Терминирование

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

#