Технология SpaceWire для параллельных систем и бортовых распределенных комплексов
В российской космической отрасли развивать и внедрять технологию SpaceWire стратегически важно, поскольку она способствует обеспечению современных тактико-технических характеристик перспективных российских КА, конкурентоспособности на мировом рынке космических технологий и услуг, развитию международного сотрудничества в космической области с другими странами, совместимости и унификации разработок аппаратуры КА российских предприятий. Технология SpaceWire перспективна и в других областях, где используются встроенные распределенные и параллельные информационно-вычислительные и управляющие комплексы, работающие в реальном времени.
В разработке технологии SpaceWire принимали активное участие специалисты российских университетов и компаний – Санкт-Петербургского государственного университета аэрокосмического приборостроения (ГУАП), ГУП НПЦ "ЭЛВИС", ЗАО НПЦ"Микропроцессорные Технологии". Что особенно важно, компания ЭЛВИС разрабатывает и производит в рамках своего семейства "Мультикор" специализированные СБИС [1], оснащенные встроенными контроллерами SpaceWire.
Однако отсутствие информации об этой технологии и поддерживающих ее отечественных СБИС затрудняет освоение SpaceWire фирмами-разработчиками. Восполним этот пробел.
Одна из основных тенденций в области аэрокосмической техники – унификация и стандартизация оборудования и интерфейсов комплексов бортового оборудования (КБО). Важнейший элемент любого современного КБО – система передачи информации. Работы в области создания и внедрения унифицированных бортовых систем передачи данных насчитывают более чем тридцатилетнюю историю – достаточно вспомнить используемую до сих пор спецификацию MIL-Std-1553B, первый стандарт бортовых локальных сетей, утвержденный в 1973 году.
По мере расширения и усложнения задач, реализуемых перспективными космическими и летательными аппаратами, возрастали и требования к комплексам бортового оборудования (КБО). Существующие архитектуры КБО с низкоскоростными каналами передачи информации перестают соответствовать современным требованиям. Стали необходимы новые технологии комплексирования высокоинтеллектуальных подсистем КБО в интегрированные масштабируемые комплексы с открытой архитектурой [2].
В результате через 30 лет после появления MIL-Std-1553B, 24 января 2003 года, был опубликован стандарт SpaceWire (ECSS-E-50-12A "SpaceWire – соединения, узлы, маршрутизаторы и сети") [3]. Стандарт разработан под эгидой международного комитета Consultative Committee for Space Data Systems (CCSDS) Европейской ассоциации по стандартизации космических систем ECSS (European Cooperation for Space Standardisation). Головной исполнитель – Европейский центр космических исследований и технологий ESTEC Европейского космического агентства ESA. В разработке участвовали специалисты многих стран, в том числе российских университетов и компаний: Санкт-Петербургского государственного университета аэрокосмического приборостроения (ГУАП), ГУП НПЦ "ЭЛВИС" и ЗАО НПЦ "Микропроцессорные Технологии".
SpaceWire – это перспективная системообразующая технология для высокоскоростной коммуникации и комплексирования бортовых систем аэрокосмических аппаратов, которая может найти применение и в распределенных системах различного назначения (промышленных, бортовых наземных и т.п.). SpaceWire разрабатывалась в соответствии с такими требованиями аэрокосмических применений, как высокие скорости передачи информации, малые задержки доставки сообщений, устойчивость к отказам и сбоям, низкое энергопотребление, электромагнитная совместимость, компактная реализация в СБИС, поддержка систем реального времени и системных функций бортовых комплексов.
Технология SpaceWire оказалась настолько удачной, что была принята как базовая не только ESA, но и космическими агентствами США (NASA) и Японии (JAXA). Международная рабочая группа SpaceWire WG с участием представителей ESA, NASA и JAXA продолжает разработку второй очереди стандарта SpaceWire. Включиться в эту работу планирует и Федеральное космическое агентство РФ.
Разработка технологии SpaceWire базировалась на трех стандартах: IEEE 1355-1995 [4], TIA/EIA-644 [5] и IEEE Standard 1596.3-1996 [6]. Стандарт IEEE 1355-1995 предназначался для построения высокопроизводительных масштабируемых модульных параллельных вычислительных систем. Другие два слагаемых SpaceWire – стандарты TIA/EIA-644 и IEEE 1596.3-1996 – описывают метод передачи данных дифференциальными сигналами с малым напряжением LVDS (Low Voltage Differential Signalling).
Взяв за основу эти три стандарта, адаптировав их для аэрокосмических применений и добавив недостающие для космических применений свойства и характеристики, разработчики сформировали спецификацию SpaceWire.
Архитектура SpaceWire
Стандарт SpaceWire регламентирует логические протоколы, физические разъемы и кабели, электрические свойства соединений, которые определяют канал связи SpaceWire, архитектуру коммуникационной сети и обеспечивают средства передачи пакетов информации от исходного узла до требуемого узла назначения через масштабируемую коммуникационную сеть. Он описывает работу коммутационной сети на шести уровнях иерархии (табл.1). Их можно условно соотнести с семиуровневой эталонной моделью взаимодействия открытых систем OSI (рис.1). Однако принципы межуровневого взаимодействия, положенные в основу SpaceWire, несколько отличаются от эталонной модели OSI. Например, управляющие коды, формат которых определяется на уровне символов, используются не только для управления потоком данных непосредственно в канале, но и при маршрутизации на сетевом уровне.
Сеть SpaceWire состоит, в общем случае, из некоторого числа узлов-абонентов (SpaceWire nodes) и сетевых узлов – маршрутизирующих коммутаторов (routing switches) (рис.2).
Узлы-абоненты сети SpaceWire – это устройства, передающие и принимающие потоки данных. Они связаны с маршрутизирующим коммутатором или друг с другом дуплексными каналами, называемыми линками (link). Узел оснащен одним или несколькими линк-портами и интерфейсом с источником данных (хост-устройство (host) – процессорный модуль, датчик, исполнительное устройство, периферийный контроллер, и др.). От хост-устройства узел принимает данные, кодирует их и отправляет в свой передатчик, непосредственно подключенный к линку (рис.3). На другом конце линка данные принимает приемник, который их восстанавливает (декодирует) и передает адресату (другому хост-устройству) или на выходной порт маршрутизирующего коммутатора. Приемник и передатчик с необходимыми элементами управления и интерфейсами к хост-устройству образуют контроллер линка SpaceWire (по сути – традиционный для современных сетевых структур сетевой контроллер, Network Interface Controller – NIC). Контроллер линка управляет соединением и потоком данных в канале, обнаруживает рассоединение, восстанавливает соединение после сбоев и др. Как правило, весь стек протоколов SpaceWire до сетевого уровня включительно реализуется внутри контроллера линка.
Узел-абонент принципиально отличается от коммутатора тем, что трансляция данных между его линк-портами, при необходимости, возможна только под управлением хост-устройства (т.е. реализуется программно), а трансляция управляющих кодов (например, маркеров времени) не производится. Напротив, маршрутизирующий коммутатор обеспечивает непосредственную передачу трафика между своими входными и выходными портами.
В сетях SpaceWire могут образовываться и структуры из одних узлов-абонентов с прямыми связями между ними, без коммутаторов. Однако полноценная сетевая коммуникационная инфраструктура, с адресуемыми узлами-абонентами и с эффективной организацией потоков пакетизированной информации и управляющих кодов, возможна только с использованием маршрутизирующих коммутаторов.
Структуры данных
Пакеты
Стандарт SpaceWire предусматривает двунаправленную передачу информации с коммутацией пакетов. Передаваемая информация – непрерывные потоки информации или сообщения – для передачи по сети SpaceWire разбиваются на пакеты.
Пакет SpaceWire (рис.4) включает поле заголовка, содержащее адрес назначения, и поле полезной нагрузки с данными пользователя, ограниченное маркером конца пакета. Пакеты передаются по сети друг за другом без каких-либо разделителей и интервалов. В качестве начала заголовка пакета всегда рассматривается его первый символ. Адрес назначения пакета – это список из одного или нескольких идентификаторов, каждый длиной в один символ, который определяет либо маршрут, либо логический адрес узла назначения.
Формат пакета с адресом места назначения ориентирован на передачу пакета через сеть из маршрутизаторов. Именно они в основном и обрабатывают заголовок с адресом назначения пакета. Если же пакет передается между двумя абонентами, связанными прямым каналом (точка-точка), то поле адреса назначения может быть и пустым.
Полезная нагрузка – это данные, т.е. информация, передаваемая от источника к узлу назначения. Закрывает пакет маркер конца пакета, указывая также, является ли пакет правильным (EOP, End of Packet) или транслируется с уже обнаруженной ошибкой (EEP, Error End of Packet).
Размер пакета не нормирован стандартом, на практике его ограничивают только абоненты коммуникационной сети SpaceWire и особенности прикладных задач. Процедуры коммутации пакетов через маршрутизирующие коммутаторы SpaceWire не чувствительны к длине пакета: пакет любой длины будет скоммутирован и передан через коммутатор SpaceWire.
Кодировка символов
Пакеты формируются последовательностью так называемых символов – элементарных структур данных в стандарте SpaceWire. SpaceWire использует модифицированный протокол уровня символов, определенный в IEEE1355-1995. Определены символы данных и символы управления (рис.5.). Они имеют разную длину в битах, что позволяет экономить пропускную способность канала при передаче управляющих кодов.
Байт данных при передаче по каналу SpaceWire кодируется 10-битным "символом данных" (рис.5). К 8 битам исходного байта данных добавляется бит признака символа данных и бит контроля четности. Первый разряд любого символа – это бит контроля четности (Р). За ним следует флаг типа символа (данных или управления, 0 или 1 соответственно). Символы передаются по линку SpaceWire младшими битами (lsb) вперед.
В стандарте SpaceWire предусмотрено четыре символа управления – конец пакета (ЕОР), конец пакета с ошибкой (ЕЕР) (он нужен, чтобы пометить пакет, заведомо содержащий ошибки, например из-за разрыва соединения при его передаче), символ управления потоком (FCT, Flow Control Token) и символ расширения (ESC). Символ расширения ESC используется для создания дополнительных управляющих кодов. В частности, сочетание символов ESC и FCT образует NULL-код, который всегда транслируется, если в канале не передаются символы данных и управления (это позволяет сохранять активность канала и определить ошибку рассоединения).
Не все символы передаются в пакетах. По этому признаку стандарт SpaceWire их подразделяет на обычные (N-Char, normal-characters) и символы соединения (L-Char, link-characters). К L-Char относятся символы контроля потока FCT и расширения ESC. В пакеты входят только N-Char, к которым относятся символы данных, а также символы конца пакета ЕОР и ЕЕР. Соответственно, хост-устройство направляет в контроллер линка только пакеты данных и признаки их окончания. Контроллер линка автоматически кодирует байты данных в 10-битные символы, формирует маркеры конца пакета ЕОР/ЕЕР, а также символы управления. Принятые символы управления FCT и ESC обрабатываются автоматом управления контроллера линка и в хост-устройство не передаются.
Бит проверки четности для каждого передаваемого символа поддерживает надежность функционирования канала. Поле контроля для бита четности включает 8 предшествующих бит данных (если предыдущим был символ данных) или два бита символа управления, собственно бит четности и следующий за ним флаг типа символа (рис.6). Бит четности устанавливается так, чтобы сумма всех единиц в поле контроля была нечетной. Бит контроля четности формируется непосредственно в передатчике и зависит от предыдущих символов, поэтому хост-устройство не задает и не проверяет этот бит – все это делает контроллер линка.
Таким образом, функциональные устройства КБО максимально освобождены от коммуникационных функций. Им достаточно выделить передаваемые данные в пакет (отметив его конец) и указать его получателя. Все остальные задачи передачи данных берут на себя контроллеры линков SpaceWire.
Управление соединением
Уровень обмена в сети SpaceWire обеспечивает инициализацию и перезапуск DS-линка, управление потоком данных между двумя узлами, обнаружение ошибок и сбоев (контроль четности, рассоединения и др.), выполнение процедур восстановления соединения.
После того, как соединение установлено, оно поддерживается постоянной передачей по нему символов данных, управляющих кодов, а при их отсутствии – кодов NULL. Если сигналы в линке не изменяются в течение 850 нс, это рассматривается как разрыв соединения (отсюда – и требование на минимальную скорость передачи 2 Мбит/с). Соединение может разрываться контроллером линка по команде хост-системы (если не нужно передавать данные), а после вновь устанавливаться. Предусмотрена возможность запуска соединения по инициативе одного из абонентов (режим Autostart): по получении кода NULL второй абонент автоматически, без команды со стороны своей хост-системы, стартует и входит в соединение.
Учитывая суровые условия, сложную помеховую обстановку и возможные интенсивные внешние воздействия на борту космических аппаратов и аналогичных систем, на которые ориентирован стандарт SpaceWire, разрыв и последующее автоматическое восстановление соединения является штатной ситуацией, обрабатываемой автоматически на уровне обмена. При разрыве соединения абоненты автоматически выходят на новое установление соединения, после чего передача информации продолжается.
Управление потоком данных в сети во избежание переполнения буферов приемников реализуется с помощью символов управления потоком FCT. Каждый переданный символ FCT указывает на то, что в буфере приемника есть место для приема 8 символов данных (N-Char). Узел может послать сразу несколько символов FCT, но не свыше 7. Передатчику не разрешено передавать символов не больше, чем позволяет поместить буфер приемника, о чем последний и сообщает посредством FCT.
На уровне обмена регулируется и очередность передачи символов в канал, обеспечивая приоритетность передачи управляющих кодов, в том числе маркеров времени и кодов прерывания/подтверждения. Управляющие символы L-Char и управляющие коды передаются, не дожидаясь завершения трансляции очередного пакета – они как бы разрезают поток данных, обеспечивая тем самым независимость передачи управляющих кодов от общей загрузки сети. Все эти действия выполняются автоматом управления в контроллере линка и не требуют вмешательства пользователя.
Звено передачи данных.
Кодирование битового потока
Символы для передачи по последовательному каналу преобразуются в последовательность битов. Битовые потоки информации обычно подвергают специальной кодировке для эффективного формирования электрических сигналов передатчиком передающей стороне и их надежного детектирования и распознавания на стороне приемной.
В SpaceWire на сигнальном уровне используется DS-кодирование (Data-Strobe coding), близкое к используемым в стандартах IEEE 1355-1995 [4] и IEEE 1394-1995 (FireWire) [7]. При DS-кодировании данные передаются по линии данных (D) в прямом коде, в то время как сигнал на линии строба (S) изменяет свое значение каждый раз, когда данные остаются неизменными в очередном битовом интервале (рис.7). Таким образом, в каждом такте меняется один из сигналов – либо D, либо S.
DS-кодирование обладает свойством самосинхронизации: в DS-сигналах закодирован синхросигнал, который восстанавливается на приемной стороне элементарной операцией "исключающего ИЛИ" (XOR) над сигналами D и S. В результате DS-кодирование позволяет передавать данные в широком диапазоне скоростей (в стандарте SpaceWire – от 2 до 400 Мбит/с) без предварительного согласования скоростей между приемником и источником. Это позволяет использовать канал SpaceWire для работы разноскоростных устройств, легко изменять скорость обмена даже во время передачи пакетов по каналу. Не требуется периодического перехода на специальные служебные последовательности кодов для синхронизации, как, например, в каналах с кодировкой 8В/10В (используется в таких стандартах, как Fibre Channel, Serial RapidIO, 1000-Мбит Ethernet и др.). Шкала возможных скоростей передачи по линку SpaceWire практически непрерывная, что позволяет гибко адаптировать скорости обмена по линку SpaceWire к требованиям приложений и к реальным условиям применения (например, к помеховой обстановке, к расстояниям и т.п.).
DS-кодирование много проще и компактней в схемотехнической реализации, чем, например, распространенное кодирование 8В/10В. Это обеспечивает одно из важных преимуществ DS-кодирования – компактную реализацию DS-кодека в СБИС и малое энергопотребление.
В стандарте SpaceWire используются дуплексные соединения типа точка-точка. S- и D-сигналы передаются каждый по отдельной дифференциальной паре. Линии передачи – однонаправленные, поэтому всего в линке SpaceWire четыре дифференциальные пары, по две для каждого направления.
Передача сигналов (сигнальный уровень)
Сформированные и закодированные битовые последовательности необходимо преобразовать в электрические сигналы для передачи через физический интерфейс. Для повышенной помехозащищенности и малого энергопотребления канала используются электрические сигналы LVDS (Low Voltage Differential Signalling – дифференцированные сигналы низкого уровня) (рис.8) по стандартам TIA/EIA-644 и IEEE 1596.3. Эти стандарты определяют величину дифференциального сигнала в диапазоне 250–450 мВ при диапазоне входного напряжения приемника 2,4 В (рис.9). При этом порог срабатывания приемника – ±100 мВ.
Драйвер LVDS (см.рис.8) формирует ток, который проходит по физической линии связи (кабель, проводники на плате) и через резистор 100 Ом на принимающей стороне. Две пары транзисторов в драйвере управляют направлением прохождения тока через резистор. LVDS-приемники имеют высокое входное сопротивление, ток в основном протекает по резистору и формирует напряжение порядка ±350 мВ при номинальном токе источника 3,5 мА.
LVDS-интерфейс обладает рядом важных достоинств. Дифференциальные сигналы малочувствительны к внешним помехам (если наводка и возникает, то практически одинаковая в обоих проводах дифференциальной пары, и на входе приемника это составляющая взаимно вычитается). В свою очередь, уровень электромагнитных помех, излучаемых LVDS-системами, также низок, поскольку равные по величине и противоположные по знаку токи в близко расположенных проводниках создают взаимно компенсирующие электромагнитные поля. Также немаловажно, что поскольку уровень дифференциальных сигналов невелик, не имеет значения рабочее напряжение схемы драйвера (будь то 5 или 1,8 В).
Кодирование данных не уровнем напряжения, а направлением тока обусловливает высокую устойчивость к разнице заземляющих потенциалов (до 1 В) между приемником и передатчиком: абсолютное значение входного напряжения на каждом из проводов по отношению к земле не играет большой роли. Из-за практически постоянной и небольшой величины тока передатчика (3,5 мА) существенно снижается уровень его шумов. Вследствие относительно небольшой разницы потенциалов между проводниками LVDS обеспечивает низкие затраты энергии (около 50 мВт на одну дифференциальную пару) – в 2,5 раза меньше, чем при ECL/PECL (ЭСЛ/ПЭСЛ, эмиттерно-связанная логика / псевдо ЭСЛ).
Физический интерфейс
На физическом уровне стандарт описывает требования к физической среде передачи, электрическим и механическим интерфейсам, включая типы разъемов и кабелей, а также параметры сигнальных линий на печатных платах.
Кабель SpaceWire – восьмипроводной, из четырех медных экранированных витых пар проводов (рис.10). Стандартная длина кабеля – до 10 м. Диаметр стандартного кабеля – не более 7 мм, удельный вес – до 80 г/м.
В качестве стандартных разъемов для кабелей определены микроминиатюрные 9-контактные разъемы D-типа (4 витые пары плюс сигнальная земля) (рис.11). В следующей редакции SpaceWire планируется расширить число типов разъемов, определить и разъемы для подключения к шине задней стенки (backplane) в блоках.
Стандарт ECSS-E-50-12A регламентирует скорости передачи по каналу SpaceWire от 2 до 400 Мбит/с на расстояния до 10 м. Для передачи на максимальных скоростях на такие расстояния стандарт задает перечень требований к параметрам кабеля. В частности, фазовое рассогласование распространения сигналов (разница в приходе фронтов сигналов, скос, skew) между проводами витой пары не должно превышать 0,1 нс/м, а между разными витыми парами – не более 0,15 нс/м. Практика подтверждает, что ухудшение этих показателей приводит к снижению скорости устойчивой передачи данных по каналу SpaceWire. Однако в ряде практических применений, где не нужна скорость 400 Мбит/с, допустимы и худшие показатели скоса. Так, в лабораторных условиях при благоприятной помеховой обстановке удается обеспечивать нормальную работу со скоростями более 300 Мбит/с даже на обычном кабеле UTP 5e.
Практические исследования показали, что дальность передачи также можно увеличить на десятки метров с пропорциональным уменьшением скорости передачи: 200 Мбит/с на 20 м, 100 Мбит/с на 30 м и т.д. И наоборот – при длине линий связи в пределах 1–2 м (короткий кабель, плата) можно достигнуть 600–700 Мбит/с. Кроме того, в следующей редакции стандарта SpaceWire Part 2 (начало 2007 г.) будут включены и каналы точка-точка на волоконно-оптических линях связи со скоростью до 2,5 Гбит/с на расстояние до сотен метров.
Раздельное DS-кодирование каждого из линков обеспечивает независимость скоса и джиттера между побитовыми сигналами разных линков, существенно упрощая передачу на высоких скоростях на значительные, недостижимые в параллельных шинах расстояния. Кроме того, это позволяет и дальше наращивать пропускную способность канала SpaceWire, используя несколько линков SpaceWire как параллельных линий (в скоростных каналах обычно называемых lanes – полосы) одного канала точка-точка. Возможности SpaceWire по передаче высокоскоростных потоков информации можно расширить, используя так называемые "толстые линки" (Fat links) [8] – группировки k линков SpaceWire. При k = 2 получаем пропускную способность канала до 800 Мбит/с (в каждую сторону), при k = 4 – до 1,6 Гбит/с и т.д.
"Толстый линк" SpaceWire имеет и лучший показатель "пропускная способность на контакт", чем параллельные шины – 10 Мбайт/с/контакт по сравнению с 1,56 Мбайт/с/контакт шины PCI и 7,09 Мбайт/с/контакт для PCI-X. Кроме того, "толстый линк" обеспечивает большую отказоустойчивость, чем параллельные каналы: при отказе отдельной линии лишь уменьшается общая пропускная способность, в то время как параллельный канал выходит из строя.
Сетевой уровень. Методы маршрутизации
Описав методы передачи данных между двумя узлами, рассмотрим, как пакеты распространяются и маршрутизируются в рамках всей сети SpaceWire. Для этого предназначены процедуры сетевого уровня, который отсутствовал в стандарте IEEE 1355-1995.
Червячная маршрутизация
Сетевой уровень определяет методы маршрутизации пакетов и их коммутации при прохождении через сетевые узлы коммуникационной сети. В сети SpaceWire используется так называемая "червячная маршрутизация" (wormhole routing) [9], относящаяся к категории методов коммутации "на лету" (on-the-fly).
При поступлении заголовка пакета во входной порт маршрутизатора пакет сразу маршрутизируется (выбирается направление его дальнейшей передачи, т.е. выходной порт) и начинается сквозная передача потока символов пакета в выходной порт, без промежуточной буферизации и хранения в маршрутизаторе (рис.12). Таким образом, в сетевом узле происходит и маршрутизация входящего пакета, и его коммутация. Подобный режим коммутации пакетов называют маршрутизирующей коммутацией, а маршрутизатор – маршрутизирующим коммутатором (routing switch).
Заголовок пакета как бы "прорезает" канал внутри коммутатора, по которому остальные символы пакета проходят узел маршрутизатора насквозь, прямо с входного порта в выходной. Аналогия с червяком (worm), который прогрызает яблоко насквозь, протягивая за головой свое тело, и определили название "червячная маршрутизация". Этот метод обеспечивает малые задержки прохождения пакета через маршрутизатор, обусловленные только временем приема заголовка пакета (как правило, одного символа). Кроме того, в коммутаторе становится ненужной буферная память пакетов, что существенно снижает аппаратные затраты и энергопотребление при его реализации в СБИС.
Методы адресации
Механизм маршрутизации пакета в коммутаторе SpaceWire базируется на одном из трех методов адресации узла назначения: путевой, логической, регионально-логической.
При путевой адресации адрес назначения задается в виде последовательности номеров выходных портов маршрутизаторов, через которые должен пройти данный пакет. Приняв первый символ, маршрутизатор определяет выходной порт, удаляет этот символ из пакета и передает пакет дальше. Следующий символ пакета (теперь первый) используется очередным маршрутизатором для определения своего выходного порта и т.д. В итоге пакет прибывает к узлу-приемнику с пустым заголовком (рис.13). Число узлов в сети при путевой адресации не ограничено.
Чтобы отличать адрес при путевой адресации от других видов адресации, байт путевого адреса должен иметь значение от 0 до 31. Другие виды адресации такие адреса не используют. По стандарту SpaceWire у маршрутизатора может быть до 32 выходных портов. Адрес 0 назначен для конфигурационного порта маршрутизирующего коммутатора. Передачей информации в этот порт может задаваться конфигурация и режимы работы маршрутизирующего коммутатора.
При логической адресации каждому узлу-абоненту присваивается уникальный номер (логический адрес LA). Когда источник посылает пакет приемнику, он вставляет логический адрес приемника в заголовок пакета. В маршрутизаторах хранятся таблицы маршрутизации, связывающие логические адреса с номерами выходных портов (рис.14). На основании этой таблицы маршрутизатор и определяет номер выходного порта для поступившего пакета. Значения логических адресов должны находиться в диапазоне от 32 до 255 (всего 224 логических адреса), поскольку они должны отличаться от физических номеров выходных портов и задаваться одним байтом. Адрес 255 зарезервирован для системных задач и не должен использоваться. При передаче пакетов через маршрутизатор при логической маршрутизации адреса не удаляются.
Логическая адресация выгодна в относительно небольших сетях с ограниченным числом быстрых маршрутизаторов (до 244). В этом методе задача маршрутизации переложена с узла-источника (как в путевой адресации) на маршрутизирующие коммутаторы. Они должны хранить в своей памяти таблицы маршрутизации. Логическая адресация, в общем случае, требует некоторого администрирования коммуникационной сети — формирования таблиц маршрутизации, их загрузки в маршрутизаторы и обновления при логической реконфигурации системы. В простых системах можно обойтись и без этого – заданная таблица маршрутизации может загружаться из ППЗУ при старте системы.
Уменьшить размер таблиц маршрутизации при логической адресации позволяет механизм выделения интервалов (Interval labelling). Он подразумевает, что все множество используемых логических адресов разбивается на последовательные же группы (интервалы): 32–35, 35–50, 51–56 и т.д. Каждой такой группе (а не отдельному логическому адресу) в таблице маршрутизации соответсвует определенный выходной порт.
Регионально-логическая адресация является комбинацией логической адресации и структуризации сети на области (regions) (рис.15). Внутри одной области используется обычная логическая адресация. Если источник и получатель принадлежат разным областям, используются несколько логических адресов (адрес региона и логический адрес в регионе) и механизм их удаления при прохождении маршрутизаторов на границе областей. В примере на рис.15 логический адрес 109 присвоен точке перехода из region 1 в region 2. В таблице маршрутизации в Router 4 логическому адресу 109 соответствует выходной порт 3; там же будет помечено, что порт 3 – переход в другой регион адресации. Прохождение пакета <109><163>< данные ><EOP> будет своего рода комбинацией процедуры путевой и логической адресации: по адресу 109 (первый байт заголовка) будет определен выходной порт 3 для дальнейшей трансляции пакета и выяснено, что это переход в другой регион адресации. Router 4 отбрасывает первый символ любого пакета, пересылаемого в выходной порт 3, и далее пакет пойдет в виде <163><данные><EOP>. Такого рода методы адресации хороши в кластерных структурах. Количество узлов в сети при регионально-логической адресации не ограничено [10].
Для увеличения пропускной способности сети SpaceWire и повышения ее надежности может использоваться групповая адаптивная маршрутизация. Она позволяет передавать пакеты по сети через альтернативные каналы, связывающие коммутаторы SpaceWire (рис.16). Для передачи данных можно использовать любой свободный канал. SpaceWire позволяет соединять соседние элементы сети (узлы и маршрутизаторы) неограниченным числом каналов, тем самым создавая избыточность коммутационной сети для увеличения отказоустойчивости информационно-вычислительных систем и КБО в целом. Механизм групповой адаптивной маршрутизации позволяет также масштабировать пропускную способность сети SpaceWire по числу каналов.
Управляющие коды
Управляющие коды, определенные на символьном уровне стека протоколов SpaceWire, позволяют организовывать специальные дисциплины передачи по каналам информации разного вида. При этом управляющие коды "врезаются" в поток информационных символов, минимизируя задержку доставки управляющей информации независимо от загруженности коммуникационной сети, вплоть до передачи управляющих кодов через заблокированные данными каналы.
Синхронизация времени
Разработчики стандарта SpaceWire учли важность синхронизации времени в системе КБО. Поэтому для поддержания единого системного времени в сети введен специальный управляющий код – маркер времени (рис.17) (не было в IEEE1355-1995). Он используется для поддержания единого системного времени в сети и передачи изохронных флагов управления. Маркер времени образован символом ESC и символом данных, 6 младших разрядов в символе данных (Т0-Т5) содержат код времени, два старших – признаки маркера времени (00).
В сети один из узлов назначается мастером времени. По командам хост-устройства его контроллер линка формирует маркеры времени, каждый раз с увеличенным на 1 (по модулю 64) временным кодом, и передает его в сеть. Специальные дисциплины обеспечивают его трансляцию по всей сети, препятствуя передаче ошибочных маркеров времени (например, повторной трансляции маркера времени через узел при кольцевой структуре сети).
Маркеры времени имеют высший приоритет и передаются сразу после завершения трансляции текущего символа. Общая задержка их распространения по сети зависит от заданной скорости обмена, числа промежуточных узлов сети и задержек в промежуточных узлах (определяется схемотехникой коммутатора). В большинстве реально применяемых конфигураций сети задержка доставки маркера времени до любого узла-абонента не превышает 1 мкс (типично 0,2–0,5 мкс).
Распределенные прерывания
Не менее важная системная функция, особенно для параллельных систем и распределенных комплексов обработки информации и управления – это система распространения прерываний (сигналов) по модулям параллельной вычислительной сети или распределенного комплекса с минимальными задержками. В готовящейся к утверждению новой редакции стандарта SpaceWire расширена поддержка системных функций. Вводятся еще два управляющих кода: код прерывания (Interrupt code) и код подтверждения (Poll code) (рис.18).
Код прерывания формируется абонентом сети SpaceWire – источником некоторого системного сигнала, который должен быть доставлен с малой задержкой до остальных абонентов сети. Специальные процедуры протоколов канального и сетевого уровня обеспечат приоритетное распространение этого сигнала по сети. Когда код прерывания доходит до получателя, тот выдает код подтверждения, который должен вернуться к абоненту – источнику прерывания.
Код прерывания образуется символом ESC и символом данных. В последнем выделено 6-разрядное поле I0–I5, что обеспечивает распространение в системе 64 различных кодов прерывания (и соответствующих им сигналов). Эти расширенные возможности уже реализованы в отечественных СБИС, поддерживающих технологию SpaceWire.
Транспортный уровень
Стандартизованный в документе ECSS-E-50-12A стек протоколов SpaceWire не содержит транспортного уровня. Пользователи технологии SpaceWire могут строить поверх коммуникационной сети SpaceWire собственные протоколы взаимодействия прикладных систем распределенного комплекса целевого оборудования, прямо используя для передачи информации сервисы сетевого уровня SpaceWire – доставку пакетов от узла-источника к узлу-адресату. Отсутствие ограничений на длину пакета позволяет упаковывать в один пакет многие виды сообщений, реально применяемые в КБО, и доставлять их от источника к приемнику, пользуясь только встроенными механизмами коммуникационной сети SpaceWire. Пользователь может выбирать и какие-либо существующие протоколы транспортного уровня (например, TCP, UDP и др.) для реализации поверх коммуникационной сети SpaceWire.
Тем не менее, развитие стандарта SpaceWire продолжается, в том числе и "вверх" по стеку протоколов. Транспортный уровень для сетей SpaceWire будет определен второй частью стандарта SpaceWire. Part 2 (2007 г.), которая разрабатывается международной рабочей группой SpaceWire WG. Расширенный стандарт позволит использовать в сетях SpaceWire множество различных протоколов транспортного уровня. Для этого вводится идентификатор транспортного протокола – байтовое поле PID (Protocol IDentification) (рис.19). С точки зрения сетевого уровня SpaceWire, PID – это часть поля данных. Стандартизованным протоколам транспортного уровня будут присваиваться коды от 1 до 239. Коды 0 и 255 – зарезервированы. Допускаются и собственные транспортные протоколы пользователей; для них выделен диапазон кодов PID с 240 до 254.
Одно из решающих достоинств стандарта SpaceWire – компактность его реализации в СБИС. Например, СФ-блок SpWCore2 контроллера линка SpaceWire занимает в ASIC всего 1100 логических вентилей (в FPGA Xilinx – 550 LUT), что позволяет встраивать его в любые СБИС: системы на кристалле, микропроцессорные и периферийные СБИС, интегральные датчики, устройства сопряжения и обработки на FPGA и др. Немаловажно также, что указанные в статье скоростные характеристики удается получить уже на технологии уровня 0,25 мкм.
Стандарт SpaceWire уже активно используется в космических и авиационных системах, поддержан многими фирмами Европы, США, Японии, в том числе – производителями элементной базы. Среди них – и российская компания "ЭЛВИС".
Однако практическое применение технологии SpaceWire в КБО и электронную компонентную базу для ее реализации мы рассмотрим в следующей публикации.
Продолжение следует.
Литература
1. Солохина Т., Александров Ю., Петричкович Я. Сигнальные контроллеры компании Элвис: первая линейка отечественных DSP. – ЭЛЕКТРОНИКА: Наука, Технология, Бизнес, 2005, №7, с. 70–77.
2. Горбачев С.В., Кислицкий М.И., Сапожников В.И., Шейнин Ю.Е. Интегрированная модульная архитектура и технология сопряжения комплексов бортового оборудования малых космических аппаратов. – Труды III Международной конференции-выставки "Малые спутники: новые технологии, миниатюризация. Области эффективного применения в XXI веке": г. Королев Московской области, 27–31 мая 2002 г. – Российская космическая ассоциация, ЦНИИМАШ, с.307–316.
3. ECSS-E-50-12A. SpaceWire – Links, nodes, routers and
networks. – European Cooperation for Space Standardization (ECSS), 2003.
4. IEEE 1355-1995. IEEE Standard for Heterogeneous InterConnect (HIC) (Low Cost Low Latency Scalable Serial Interconnect for Parallel System Construction). –
IEEE Standards Department, 1995.
5. ANSI/TIA/EIA-644-1995. Electrical Characteristics of Low Voltage Differential Signaling (LVDS) Interface Circuits. – Telecommunications Industry Association, March 1996.
6. IEEE 1596.3-1996. Standard for Low-Voltage Differential Signals (LVDS) for Scalable Coherent Interface (SCI)". –
IEEE, July 1996.
7. IEEE 1394-1995. IEEE Standard for a High Performance Serial Bus. – IEEE, August 1996.
8. Горбачев С.В., Рождественский Д.А.,
Суворова Е.А., Шейнин Ю.Е. Масштабируемые архитектуры распределенных систем на технологии SpaceWire на базе платформы "Мультикор". –
Вопросы радиоэлектроники. Серия ОТ, 2006,
вып.2, с. 69–80.
9. Simpson M., Thompson P.W. DS-Links and
C104 Routers. – Networks, Routers and Transputers:
Function, Performance and Applications / Ed. by:
M.D.May, P.W. Thompson, P.H. Welch. – INMOS,
IOS Press, 1993.
10. Волков П.Л., Горбачев С.В. Применение
регионально-логической адресации для организации кластерных сетей SpaceWire. – Интеллектуальные и многопроцессорные системы – 2001: Материалы международной научной конференции,
Таганрог-Донецк, 1–6 октября 2001.