Опубликовано 13 августа 2003, 00:33

Вот и весь SCSI

История и перспективы интерфейса SCSI.
Вот и весь SCSI

Помните конец семидесятых годов прошлого столетия, время только-только появившихся 5-дюймовых флоппи, процессоров Motorola 6800 и Intel 8088, модема Hayes, принтера Epson MX-80?.. Нет, это не приступ ностальгии, а всего лишь праздно-риторическое любопытство: честно говоря, я то время совершенно не помню, потому что тогда еще находился в стадии проектирования. Тогда же в той стадии находился интерфейс, знакомый теперь всем под названием SCSI (Small Computer System Interface).

Детство

Вероятно, фамилия Shugart знакома многим: она принадлежит одному из ярчайших первопроходцев и идеологов «накопительной» индустрии — легендарному силиконовому олимпийцу (в смысле обитателю Олимпа Силиконовой Долины) Алану Ф. Шугарту, который в IBM руководил разработками флоппи и RIGID, потом работал в Memorex. В 1973 году Шугарт привлек капитал со стороны и создал компанию по производству 5,25-дюймовых FDD-приводов — Shugart Associates. Эта фирма проработала под его управлением год, после чего Шугарта выгнали те самые люди, которые инвестировали начинание. Шугарт оправлялся от удара шесть лет — в этот период он даже купил рыбацкую лодку и стал профессиональным рыбаком. Но тяга к хайтеку не прошла: в 1979-м году он совместно с Финисом Коннером основал Seagate Technologies (первоначально — Shugart Technologies), после чего оставался ее руководителем в течении почти 20 лет, за которые компания стала крупнейшим независимым производителем жестких дисков (правда, и из Seagate в 1998 Шугарта «поперли», но это уже совершенно другая история).

Нас больше интересует Shugart Associates, поскольку именно она в 1979 году разработала интерфейс SASI — самый ранний вариант шины SCSI. Развернуть аббревиатуру SASI в настоящее время сложно, первые две буквы достоверно означают Shugart Associates, четвертая — Interface, а третья в разных источниках расшифровывается по-разному — System, Systems, или Standard (думается, верной версией является все-таки последняя). Возможности SASI были весьма скромными даже по сравнению с первым вариантом SCSI — скорость передачи составляла лишь 1,5 Мбайт/с, интерфейс имел очень ограниченный набор команд. Однако заложенные в SASI идеи несли в себе много прогрессивного: вместо повсеместно распространенной тогда аналоговой последовательной передачи использовалась 8-разрядная параллельная цифровая, вместо связки линий управления интерфейс предоставлял набор команд, да и работал он на логическом уровне, позволяя адресовать блоки, а не физические головки, цилиндры и секторы.

Через два года, в конце 1981-го, чтобы подстегнуть принятие интерфейса индустрией Shugart Associates, скооперировавшись с NCR (National Cash Register), подала заявку в ANSI на создание технического комитета для доработки и стандартизации интерфейса. Такой комитет — X3T9.2 — был создан в 1982 году, а имя интерфейса сменилось на безличное описательное SCSI (Small Computer System Interface). В течение нескольких последующих лет стандарт дорабатывался и улучшался: расширилась полоса пропускания, добавились наборы команд — для принтеров, стримеров, процессоров, WORM- и ROM-устройств. (Необходимо заметить, что SCSI в отличие от SASI стал уже не просто дисковым интерфейсом, а родом системной шины: теоретически, на «голом» SCSI можно собрать полноценную систему, подключив процессор, память, накопители и периферию.) После представления чернового варианта SCSI в 1984 году на утверждение ANSI многие фирмы стали выпускать продукты, более или менее совместимые с этим протостандартом. Первый официальный стандарт — X3.131-1986 — был принят в 1986 году (с появлением следующих версий этот стандарт стали называть SCSI-1).

Отрочество

Хотя классический SCSI уже окончательно вышел из употребления, базовые принципы получили развитие в новых воплощениях, поэтому имеет смысл рассмотреть их. Шина была 8-разрядной и работала на частоте 5 МГц. Максимальная длина кабеля (с 50-контактными разъемами) не должна была превышать 6 м, поскольку использовалась несбалансированное соединение (SE — Single-Ended, единственный проводник для каждого сигнала). В истоке шины находился хост-адаптер, к которому можно было подключить до 7 устройств (в цепочке, одно за другим). В синхронном режиме (когда устройства создают канал определенной ширины и общаются по нему без подтверждений) потолок скорости находился на уровне 5 Мбайт/с. Но на практике этот режим почти не применялся, а в асинхронном режиме (запрос-ответ) скорость редко достигала 2 Мбайт/с (более реальная цифра — 1,5 Мбайт/с).

На первом и последнем устройствах шины должно было включаться терминирование (в настоящее время большинство SCSI-устройств включает терминирование автоматически, если устройство оказывается крайним), то есть к каждой сигнальной линии подключалось сопротивление для подавления отраженных сигналов. В первоначальном варианте использовалось только пассивное терминирование, при котором линии подключались к пассивному делителю напряжения (между двумя резисторами на пути от источника питания к земле). При таком подключении колебания напряжения в источнике питания (4,25-5,25 В) вели к скачкам напряжения на сигнальных линиях, поэтом позже стало применяться активное терминирование, где линии подключаются через резисторы к стабилизатору с постоянным выходным напряжением (2,85 В). Есть еще особый «продвинутый» тип активного терминирования, наилучший для использования с SE-шиной — FPT (Forced Perfect Termination, принудительное абсолютное терминирование). Здесь в цепь добавляются диоды, что начисто устраняет практически любые отраженные сигналы.

Юность

За год до принятия SCSI-1 к X3T9.2 (группе ANSI по разработке SCSI) обратилась группа производителей с просьбой сделать стандарт более строгим и подробным (чтобы расширить совместимость и упростить разработку устройств). Вместо того чтобы задерживать принятие стандарта, X3T9.2 отпочковала от себя специальную группу для работы над бумагой CCS (Common Command Set), которая впоследствии обрела большую популярность — многие производители выпустили устройства на ее основе. Одновременно с CCS началась разработка нового стандарта — SCSI-2, который должен был впитать в себя результаты CCS, а также улучшить производительность и добавить возможностей интерфейсу, устранив при этом лишние опции, мешавшие совместимости. Финальная версия SCSI-2 была одобрена ANSI лишь в 1994 году. В стандарте появилась поддержка CD-ROM (взамен абстрактрых ROM-устройств в SCSI-1), оптических устройств с возможностью записи/перезаписи, сканнеров, значительно расширился набор для принтеров и т. д. Пассивные терминаторы остались разрешенными, однако, был рекомендован переход на активное терминирование.

Что касается улучшения производительности, здесь появилось два основных нововведения (с которых началась известная путаница  с названиями типов SCSI) — интенсивное и экстенсивное: Fast и Wide SCSI. Fast SCSI — это опция, позволяющая увеличить тактовую частоту (а, следовательно, и пропускную способность шины) вдвое — с 5 до 10 МГц. Wide SCSI — опция увеличения разрядности шины с 8 до 16 бит (и даже до 32, правда до выпуска устройств с 32-битным Wide SCSI дело так и не дошло) путем наращивания количества сигнальных линий. Арбитраж шины, команды, статус, сообщения, к сожалению, остались в стандарте 8-разрядными (впоследствии SCSI-3 начался как раз с перехода на 16-разрядные команды и арбитраж). Для Wide SCSI потребовался новый 68-контактный разъем вместо 50-контактного (разъемы совместимы при использовании A-to-B кабеля). Скорость передачи данных с применением Wide SCSI возрастает еще вдвое, достигая в пределе 20 Мбайт/с (Fast Wide SCSI).

Кроме этого, в SCSI-2 увидели свет и более тонкие хитрости для улучшения производительности. Во-первых, такая замечательная вещь, как организация очереди команд (Command Quequing) — одна из сильных сторон шины SCSI. Command Quequing позволяет отправлять не одну, а сразу несколько (до 128) команд на устройство, а устройство само выбирает последовательность их выполнения таким образом, чтобы оптимизировать свою работу. Во-вторых, метод Scatter/Gather, позволяющий в одном пакете получать/передавать информацию из нескольких (или в несколько) разрозненных страниц памяти, что особенно заметно повышает производительность в ОС, использующих виртуальную память.

Стоит особо отметить попытку движения в сторону сбалансированного соединения (differential signaling, позже — HVD, High Voltage Differential signaling). В отличие от SE, HVD использует для передачи данных не один проводник, а пару — для передачи «нуля» оба проводника пересылают нулевое напряжение, для передачи единицы один из проводников шлет некоторое положительное напряжение, а второй — его отрицательный перевертыш. Получающее устройство воспринимает разницу между напряжениями обоих проводников. Такая схема при высоком напряжении позволяет добиться значительного улучшения качества передачи: длина кабеля может достигать 25 метров даже при высоких частотах шины (например, при 20-МГц шине Fast-20 из SCSI-3, в то время как SE-кабель здесь не может быть длиннее 1,5 метров). Заметим также, что HVD электрически не совместим с SE из-за значительной разницы напряжений (фактически, смешать в одной цепи HVD-устройства с SE- или LVD-устройствами значит сжечь последние). Несмотря на свою эффективность, широкого распространения технология HVD не получила из-за дороговизны реализации (и из-за высокого энергопотребления готовых продуктов) — многим пользователям хватало для их целей и SE-соединений. В результате технология заглохла: цена устроств с HVD была слишком высокой, чтобы они пользовались большой популярностью, а отсутствие спроса не позволило производителям расширить масштабы и снизить цену. SE-кабели продолжили свое существование вплоть до конца 90-х гг.

Зрелость

Опять-таки за год до официального принятия SCSI-2 началась работа над новой версией — SCSI-3. Похоже, что причины окончания работы над одной версией и начала работы над другой в случае SCSI менее всего объясняются техническими и коммерческими мотивами. Они гораздо тривиальнее: просто нужно же когда-то формально закреплять результат. Разработки же идут своим чередом, последовательно, без остановок и скачков. SCSI-3, целиком не ратифицированный до сих пор (да и неизвестно, произойдет это когда-либо вообще), являет собой развитие и расширение SCSI-2 с добавлением к нему множества новых наборов команд технологий и решений.

В последнем своем воплощении SCSI расцвел и разросся настолько бурно, что подробно охватить его целиком было бы весьма и весьма сложно. Разработка такого гигантского стандарта заняла бы очень долгое время и потребовала бы уйму усилий множества людей. Причем нетерпеливые производители не пожелали бы ждать долго и начали бы разрабатывать усовершенствования (разумеется, несовместимые между собой), что привело бы если не к краху стандарта, то к громадной неразберихе в индустрии. Этим объясняется изменение стратегии разработки: вместо одного огромного документа SCSI-3 был разделен на множество сравнительно небольших «стандартиков», охватывающих конкретные технологии, протоколы и наборы команд. Над каждой из бумаг работает особая группа. Естественно, это ведет к более быстрому развитию наиболее востребованных частей стандарта, в то время как общая крыша SCSI-3 не дает им разойтись вразброд от «генеральной линии». Казалось бы, чего еще? — разделяй и властвуй! — однако, со временем назревает подозрение — а не берет ли SCSI-3 больше, чем сможет унести? Под крышей стандарта пригрелось уже больше десятка документов (они развиваются и принимаются независимо), относящихся к SCSI и к SCSI-подобным интерфейсам вроде FireWire и Fibre Channel. Вообще, понятие «стандарт SCSI-3» разбухло изнутри настолько, что сказать теперь «устройство совместимо с SCSI-3», значит не сказать ничего.

В данном материале нас будет интересовать только та часть SCSI-3, которая непосредственно относится к параллельному интерфейсу. Прежде всего, это документ  SPI (SCSI-3 Parallel Interface, «Ultra SCSI»), описывающий физическую часть того, что раньше было принято называть просто SCSI. В рамках оригинальной его версии появилась шина Fast-20, которая посредством удвоения тактовой частоты поднимала пиковую пропускную способность шины до 40 Мбайт/с. Следующая версия, SPI-2 (Ultra2 SCSI), помимо очередного удвоения частоты (Fast-40), ввела ряд принципиальных новшеств, особенно заметное из которых — технология LVD. При скорости 40 МГц максимальная длина SE-кабеля составляет всего 75 см (и это для всей цепочки!). Назрела объективная необходимость что-то менять.

И вот, принципы разностной передачи сигнала, использованные в отторгнутой в свое время технологии HVD, получили второе воплощение. LVD представляет собой некоторого рода компромисс между HVD и SE: используется сбалансированная передача данных, однако с низким напряжением (максимальная длина кабеля — 12 м). Электрически технология LVD совместима с SE, на одной шине могут даже находиться и SE-, и LVD-устройства, если последние — многорежимные (LVD/SE multimode). При LVD используются особые терминаторы; кроме того, есть многорежимные LVD/SE-терминаторы, которые при работе шины в режиме SE функционируют, как обычные активные. С появлением LVD необходимость в HVD отпала начисто из-за чего последняя технология и была полностью убрана из стандарта в SPI-3. Время жизни SE так же подошло к концу: скорости шины выше 20 МГц (Ultra SCSI) здесь не поддерживаются.

В следующей версии — SPI-3 (Ultra3 SCSI) — пропускная способность шины снова возросла вдвое (Fast-80DT), но не за счет изменения частоты, а из-за использования Double Transition (передача по переднему и заднему фронтам сигнала). Кроме HVD из стандарта были убраны такие рудименты, как SCAM, 32- и 8-битная ширина шины (использование последней просто не описано для режима Fast-80). Таким образом, начиная с SPI-3, в SCSI остается поддержка только 16-разрядной шины и требуется использование LVD. Кроме Fast-80DT, в стандарт добавилось еще две важных «фичи»: CRC (контроль целостности передачи с помощью циклического кода), Domain Validation (проверка окружения на способность работы с заданной скоростью). Кроме того, имеется два косметических улучшения — QAS (Quick Arbitration and Selection) и Packetization. Формально, любое устройство, поддерживающее любой набор из этих пяти нововведений, может гордо именоваться Ultra3 SCSI (и быть при этом, возможно, несовместимым с другими Ultra3-устройствами). Во избежание недоразумений в индустрии появилось два коммерческих наименования Ultra3 SCSI — Ultra160 (без двух последних фич) и Ultra160+ (полный вариант). Версия SPI-4 увеличивает тактовую частоту шины о 80 МГц, доводя тем самым пиковую пропускную способность до 360 Мбайт/с (Fast-160, Ultra360). SPI-5 (Ultra640), обещающий 640 Мбайт/с находится в разработке.

Характеристики разновидностей интерфейса SCSI
 Ширина шины, битТактовая частота, МГцПиковая пропускная способность, Мбайт/сЭлектрический тип соединения
SCSI855SE (6 м)
Fast SCSI81010SE (3 м), HVD
Wide SCSI16510SE (6 м), HVD
Fast Wide SCSI161020SE (3 м), HVD
Ultra SCSI82020SE (1,5 м), HVD
Wide Ultra SCSI162040SE (1,5 м), HVD
Ultra2 SCSI84040LVD
Wide Ultra2 SCSI164080LVD
Ultra160/+ SCSI1680 (DT)160LVD
Ultra320 SCSI16160 (DT)320LVD
Ultra640 SCSI16320 (DT)640LVD