Накопители

Serial Storage Architecture

История и реальность

Готов держать пари, что если спросить о существующих интерфейсах жестких дисков кого-нибудь, кто знает что такое интерфейс, то сходу он сможет назвать только ATA, ну еще SCSI быть может. Особенно продвинутые могут вспомнить про Fibre Channel и вряд ли кто либо назовет SSA. А между тем интерфейс такой существует. Я упоминал его в своей статье по выбору винчестеров, а сегодня мне хочется рассказать о нем немного больше.

SSA, полное имя Serial Storage Architecture - последовательный интерфейс, предназначенный для подключения разнообразных устройств хранения информации, но в первую очередь оптимизированный для винчестеров.

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

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

Простейшим способом наращивания пропускной способности шины является увеличение ее ширины (обычно ее удвоение). Такое решение выливается в увеличение размеров коннекторов, усложнение их производства и разделки, как следствие удорожание, а увеличение числа сигнальных проводников выливается в усложнение производства соединительных кабелей, приобретение ими массивности и сложности монтажа, увеличение взаимных наводок проводов кабеля друг на друга.

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

Эти недостатки не характерны для последовательных шин:

  • Так как число проводников в кабеле минимально, то его производство обходится дешевле, он обладает лучшими механическими свойствами, на меньшем числе проводников возможно применение сложных экранирующих технологий.
  • Единственная линия передачи данных позволяет забыть о таком явлении как неравномерность распространения сигнала по проводникам, являющейся одной из самых острых для быстрых параллельных интерфейсов.
  • Возможность использовать на физическом уровне оптические среды, радио и телефонные каналы, использование которых при параллельной шине невозможно без применения дополнительных преобразователей.

Основные преимущества последовательных шин:

  • Надежные последовательные протоколы используют двунаправленную связь. Дополнительные линии используется для передачи служебной информации, типа запросов, подтверждений, но могут быть использованы и для организации двунаправленного потока данных, или и для того, и для другого одновременно. Стоимость реализации полного дуплекса для последовательных шин много ниже, чем для параллельных.
  • Последовательным интерфейсам легко придать высокую помехоустойчивость применив на физическом уровне дифференциальный метод передачи (при котором по двум проводникам передается один и тот же сигнал в противофазе, сложением которого в приемнике можно получить наведенный шум, который затем можно вычесть из полученного сигнала что бы получить неискаженный исходный), причем снова же стоимость применения этой технологии в последовательных шинах гораздо ниже.
  • Передача синхросигналов возможна по той же линии, что и данных, что приводит к упрощению синхронизации передатчика и приемника, Встречаются шины, где сигнал синхронизации передается по отдельной линии, но это редкая практика, так как усложняет и удорожает и сам процесс синхронизации, и используемые соединительные кабеля из-за необходимости введения дополнительного защищенного проводника, а экономия общей пропускной способности шины достигнутая таким образом оказывается незначительной.

Первой внешней подсистемой хранения с последовательным интерфейсом стала 9333 серия компании IBM в 1991 году. Этот интерфейс еще не был и даже не задумывался промышленным стандартом, скорее это был эксперимент, но высокие достигнутые показатели (большое установившееся число операций дискового ввода-вывода, высокие скорости интерфейса работающего в полном дуплексе, позволяющего передавать одновременно команды на чтение и на запись, высокая надежность и возможность расширения без потери производительности) утвердили разработчиков в верности избранного ими пути.

Собственно интерфейс SSA был разработан IBM в 1995. И в 95-96 и даже немного 97 годах вокруг него было довольно много шуму, что неудивительно: новый интерфейс предлагал в распоряжение устройств 4 канала (2 направленных к устройству, и 2 направленных от него), каждый пропускной способностью 20 Мбайт/с, что в сумме превосходило возможности современной ему версии SCSI-2. И хотя во всех публикациях посвященных SSA она упоминается как популярная дешевая альтернатива SCSI, на практике все было совсем по другому, и после 96-го разговоры вокруг нее начали постепенно стихать, пока не и исчезли вовсе, и я уже было грешным делом подумал, что технология отмерла, пока меня не поправили на форуме.

Сразу же после представления IBM, интерфейс был подхвачен комитетом ANSI, который работал над формализацией стандарта два года. Компаниями-энтузиастами была образована SSA Industry Association, насчитывавшая более 40 членов. Микросхемы производились самой IBM, Pathlight Technology производила адаптеры, а Conner Peripherals оснащала этим перспективным интерфейсом свои винчестеры.

Увлеченные участники разработки были полны надежд на крупные заказы и миллионные прибыли, но, увы, спроса на SSA системы практически не было. Дело в том, что при сравнении с сопоставимыми по производительности продуктами на SCSI, SSA не давала никакого выигрыша в цене.

Проблема заключалась в необходимом числе DMA-каналов. Передача на скорости 80Мбайт/с - четыре потока по 20 Мбайт, требует четырех DMA-каналов, и 4 современных SCSI адаптера, использующих те же 4 DMA канала, в сумме могли обеспечить пропускную способность в 160 Мбайт/с, при этом обходясь гораздо дешевле.

Еще одним гвоздем в крышку гроба SSA стало приобретение Conner Peripherals в октябре 1995-го Seagate'ом, который делал ставки на FC-AL (Fibre Channel Arbitrated Loop), и не стал продолжать участвовать в SSA разработках. Увидев, что самый крупный производитель жестких дисков отказался от поддержки SSA, Micropolis и другие мелкие винчестеростроители тоже ушли в сторону.

Так трагически развернувшиеся события вовсе не означают, что SSA не имеет никаких ни в чем преимуществ и абсолютно безнадежна. Нет. По информации опубликованной на array.ru IBM ежегодно удается продавать SSA-систем приблизительно на пять сотен мегадолларов. И Paramaunt Pictures отдала предпочтение именно системам на базе SSA, намыкавшись со SCSI.

Но, получилось так, что IBM осталась и единственной компанией, продвигающей этот стандарт. Она сама занимается и производством дисков с этим интерфейсом, и сбором высокопроизводительных системы хранения на их основе, и дальнейшим развитием технологии. В то же время сама прекрасно осознает, что SSA - это временный стандарт, который в будущем, безусловно, будет заменен FC-AL.

Технология изнутри

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

Спецификация SSA определяет три компонента (Первым приведено обозначение компонента первой версии спецификации, в скобках - более поздней, второй):

  • SSA-PH1 (SSA-PH2) - физический уровень. Определяет требования к физической среде, типы и конструкцию коннекторов, используемые электрические сигналы.
  • SSA-TL1 (SSA-TL2) - транспортный уровень. Определяет управляющую информацию и сообщения, передаваемые по шине SSA.
  • SSA-S2P (SSA-S3P) - уровень определяет отображение логических правил SCSI на SSA-устройства, для обеспечения безболезненной миграции от одной технологии к другой. Кроме того, SSA определена как интерфейс физического уровня в стандарте SCSI-3.

Вкратце шина SSA характеризуется следующими свойствами.

  • Топология. Гибкая схема адресации позволяет объединять устройства в последовательные цепочки, петли, и коммутируемые цепочки и петли. Поддерживается горячее подключение и отключение устройств.
  • Расстояние. Для подключения устройств используются соединения типа "точка-точка". Для обычного медного кабеля расстояние между устройствами может достигать 25-ти метров, и нескольких километров при использовании оптических сред передачи.
  • Полоса пропускания. Шина является полнодуплексной, т.е. поддерживает одновременную оправку и прием информации. В распоряжение каждого устройства может быть предоставлено до двух линий 20 Мбайт/с (40 Мбайт/с в последней версии) по каждому направлению, что соответствует полосе пропускания 40+40 Мбайт/с (или 80+80 Мбайт/с для новой редакции).
  • Формат передачи и накладные расходы. Единицей обмена информации является кадр длинною до 128 байт. Служебная информация в кадре составляет 8 байт, накладные расходы имеют таким образом низкий уровень порядка 6%.
  • Надежность. В стандарте предусмотрено обнаружение ошибок практически всех типов и возможности для прозрачной обработки многих.
  • Физические преимущества. Коннекторы имеют небольшой размер, провода тонкие, обладают высокими механическими свойствами, удобны при монтаже.

Устройства SSA бывают:

  • Однопортовые. Имеют только один разъем.
  • Двухпортовые. Имеют два разьема. В дополнение к внутренним функциям устройства содержат аппаратное устройство-маршрутизатор, которое позволяет передавать кадры полученные с входа одного порта на выход другого.
  • Коммутаторы. Могут иметь 4, 6, 8,…, 126 портов и аппаратный маршрутизатор. Позволяют передавать кадры полученные с одного порта, на любой другой.

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

Устройства могут объединятся в последовательные цепочки, петли, и коммутируемые петли и цепочки. Цепочки представляют собой последовательное соединение двух портовых устройств.


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

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


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

Коммутируемые конфигурации. Более сложные конфигурации, содержащие коммутатор(ы) и некоторое число простых конструкций из приведенных выше. Например:


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

Единицей обмена информации является кадр, имеющий длину до 128 байт. Каждый кадр содержит поле адреса, точно определяющее устройство назначения и позволяющее провести передачу по цепи устройств от источника.

Каждое устройство на шине может производить обмен данными только с соседним устройством.

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

В распоряжение каждого устройства может быть предоставлено до двух каналов передачи в каждом направлении, это позволяет достичь скорости обмена в 2*20 = 40 Мбайт/с на чтение + 2*20 = 40 Мабйт/с на запись, т.е. 80 Мбайт/с. Так, за вычетом накладных расходов протоколов, получается 73 Мбайт/с полезной.

Во второй версии стандарта пропускная способность каналов увеличена вдвое - до 40 Мбайт/с, соответственно максимальная суммарная скорость обмена по шине составляет 160 Мбайт/с. Кроме того, по сути сети образуемые соединением SSA устройств являются сегментными, и это позволяет любому устройству начинать и производить обмен данными независимо от других устройств и одновременно с ними. Т.е реальна ситуация, когда обмен происходит между несколькими устройств на шине независимо друг от друга. Например:


Для этого используется специальный алгоритм арбитража шины, называемый SAT.

Каждый отдельный канал имеет довольно небольшую пропускную способность, и позволяет использовать простые и дешевые приемопередающие устройства, что как бы должно привести к снижению стоимости SSA систем. К сожалению только как бы.

Возможность использования нескольких каналов одновременно дает не только возможность увеличить пропускную способность, но является одновременно и средством повышения отказоустойчивости. Благодаря двухпортовости как правило между узлами существует несколько маршрутов, и в случае повреждения или занятости одного сегмента, данные могут быть направлены по альтернативному пути. Не смотря на последовательную природу шины, передача по ней ведется байтами. Для передачи каждый байт преобразуется в 8-ми битовый поток, который и выдается в линию. Для улучшения синхронизирующихся свойств потока, обнаружения и исправления ошибок используется логическое 8B/10B кодирование. Это означает, что 8 бит данных при передаче преобразуются в 10 бит информации. 8 бит определяют 256 возможных значений, а 10 - 1024. Для передачи выбираются значения удовлетворяющие двум правилам: а) в передаваемой последовательности не может быть подряд более 5 одинаковых битов; б) варьирование цифровой суммы (DSV, Digital Sum Variation) не может быть более шести (для вычисления DSV передаваемой единице присваивается значение +1, а нулю -1, внутренний счетчик суммирует значения при кодировании, а разница между его максимальным и минимальным значением есть DSV). Таким образом в 10-ти битной последовательности существует только 268 разрешенных вариантов, 256 из которых используются для кодирования данных, 12 играют роль служебных символов, появление остальных комбинаций сигнализирует о произошедшей ошибке.

В стандарте определены следующие служебные символы:

  • FLAG - для разграничения конца и начала последовательно следующих кадров. Кроме того этот символ всегда посылается в линию при простоях.
  • ABORT - преждевременное окончание передачи кадра.
  • SAT, SAT' - используются при SAT арбитраже.
  • DIS - символизирует отключенное состояние.
  • ACK - подтверждение корректного приема кадра.
  • RR - готовность к приему следующего кадра.
  • NUL - игнорируемый символ.

Передаваемые по SSA кадры содержат как минимум 6 символов данных, заключенных между флагами. Для минимизации накладных расходов, закрывающий флаг одного кадра одновременно является и открывающим для другого, следующего за ним. Кадр может содержать данные или сообщения (для передачи управляющих команд или статуса). Он состоит из четырех полей: управления, адреса, данных, контрольной суммы.


Поле управления всегда первый байт в кадре. Несет информацию о типе передаваемого кадра. Возможны следующие варианты:

  • Control (управляющий кадр). Используется уровнем SSA-TL для сброса шины или узла после ошибки.
  • Privileged. Также используется уровнем SSA-TL, для конфигурирования и устранения ошибок.
  • Application (прикладной?). Кадры используемые уровнем отражения SSA на SCSI.

Управляющее поле в Privileged и Application кадрах содержит 2-х битовое поле последовательного номера кадра (FSN), позволяющее установить факт потери кадров в результате ошибок.

Поле адреса имеет величину от 2-х до 6-ти байт. Используется для направления кадра к конкретному узлу SSA сети (path) и нужному каналу внутри узла (channel).

Поле данных - полезная нагрузка кадра. Это может быть сообщение размером до 32-х байт, или данные длиной до 128 байт. Отсутствует в управляющих кадрах.

Поле контрольной суммы нетрудно догадаться, содержит контрольную сумму для кадра, давая еще одну возможность обнаружения ошибок. В расчете CRC принимают участие все предшествующие поля кадра.

SSA использует простой механизм управления потоком. Передавая кадр устройство ожидает получения всего двух вариантов ответа:

  • Подтверждение, сигнализирует о корректно прошедшем акте передачи.
  • Готов к приему - сигнализирует о готовности удаленного порта принять кадр. Для достижения максимальной производительности при последовательных передачах, порт назначения может сообщать о своей готовности к приему следующего кадра уже после получения поля управления текущего.

При обнаружении ошибки при выполнении сквозной маршрутизации, обнаруживший ошибку трансивер, если уже начал передавать поврежденный кадр следующему узлу, должен прекратить передачу, послать сигнал ABORT принимающему порту, а сам пытаться исправить ошибку с помощью ERP (Error Recovery Procedures).

Собственно говоря ERP предназначены для исправления всех ошибок и последствий, которые могут возникнуть в процессе работы и быть обнаружены с помощью 8B/10B кодирования, CRC, неправильного значения FSN, отсутствия подтверждения и др. Рассматривать подробно механизмы их работы не имеет смысла.

Не рассмотренным осталось только отражение SSA на SCSI. Но его мы и не будет рассматривать, так как собственно к самому SSA и его функциональным особенностям это не имеет почти никакого отношения. Основными источниками информации для статьи являлась спецификация SSA и публикация "Serial Storage Architecture" by I. D. Judd, P. J. Murfet, M. J. Palmer в IBM Journal of Research and Development (Volume 40, Number 6, Page 591 (1996)), Если у кого остались вопросы или хотелось бы узнать больше - прошу туда.

Дополнительные материалы

 
 
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Материалы по теме
⇣ Комментарии
window-new
Soft
Hard
Тренды 🔥