RapidIO (RapidIO)

Перейти к навигации Перейти к поиску

RapidIO — высокопроизводительный интерфейс передачи данных для соединения микросхем в рамках одной печатной платы, а также для соединения между собой нескольких печатных плат. Данный интерфейс был разработан для применения во встраиваемых системах.

Основными конкурентами RapidIO являются HyperTransport, Infiniband и PCI Express, которые, однако, предназначены для решения других задач.

Интерфейс RapidIO разработан компаниями Mercury Computer Systems[англ.] и Motorola (ныне Freescale Semiconductor) в начале 2000-х годов, как развитие шины, применявшейся в многопроцессорных системах цифровой обработки сигналов компании Mercury.

Спецификации интерфейса RapidIO разработаны организацией «RapidIO Trade Association»[1]. На настоящий момент последней версией спецификации является 4.

Изначально протокол был разработан Mercury Computer Systems и Motorola (Freescale) в качестве замены проприетарной шины RACEway Mercury и шины PowerPC Freescale[2]. «RapidIO Trade Assosiation» была основана в феврале 2000 года, и включала в себя производителей телекоммуникационного оборудования и средств хранения, а также изготовителей процессоров и коммутаторов. Протокол был разработан для выполнения следующих целей:

  • Низкая задержка
  • Гарантированная доставка пакетов в порядке отправления
  • Поддержка передачи сообщений и семантики чтения/записи
  • Возможность использования в системах с требованиями по устойчивости к ошибкам или высокой доступности
  • Механизмы управления потоком для расправы с кратковременным (менее 10 микросекунд), средневременным (десятки микросекунд) и долговременным (сотки микросекунд до миллисекунд) заторами
  • Эффективная реализация протокола в аппаратном обеспечении
  • Низкое потребление энергии
  • Масштабируемость от двух узлов до нескольких тысяч

Спецификация RapidIO ревизии 1.1, выпущенная в 2001 году, определила широкополосную параллельную шину. Эта спецификация не снискала широкого коммерческого применения.

Спецификация RapidIO ревизии 1.2, выпущенная в 2002 году[3], определяла последовательную шину для внутренних соединений, основанную на физическом уровне XAUI. Основанные на этой спецификации устройства достигли значимого коммерческого успеха в сфере устройств для беспроводных сетей[4], технологий обработки изображений и вычислений для военных целей[5].

Спецификация RapidIO ревизии 2.0, выпущенная в 2008 году[6], добавила порты новой ширины (2x, 8x и 16x) и повысила максимальную скорость одной линии до 6,25 Гбод / 5 Гбит в секунду. Ревизия 2.1 повторила и расширила коммерческий успех спецификации 1.2[7].

Спецификация RapidIO ревизии 3.0, выпущенная в 2013 году[8], внесла следующие изменения и улучшения со спецификаций 2.x:

  • Электрические спецификации, основанные на индустриальном стандарте Ethernet 10GBASE-KR для коротких (20 см + коннектор) и дальних (1 м + коннектор) приложений
  • Использование тренировочной схемы Ethernet 10GBASE-KR DME для оптимизации качества сигнала на больших расстояниях
  • Определение схемы кодирования 64b/67b (схоже со стандартом Interlaken) для поддержки как медных, так и оптических соединений и улучшения эффективности передачи
  • Динамические асимметричные каналы для сохранения энергии (например, 4x в одном направлении, 1x — в другом)
  • Добавление возможности синхронизации времени схоже со стандартом IEEE 1588, но гораздо дешевле в исполнении
  • Поддержка 32-битных идентификаторов устройств, что позволяет увеличить максимальный размер сети и открывает возможности к новаторской поддержке виртуализации
  • Переработанная модель таблицы маршрутизации упрощает ПО управления сетью
  • Оптимизации протокола обмена пакетами

Спецификация RapidIO ревизии 4.0 была выпущена в 2016 году[9]. Она внесла следующие изменения и улучшения со спецификаций 3.x:

  • Поддержка каналов со скоростью 25 Гбод/сек и соответствующая спецификация физического уровня
  • Поддержка использования IDLE3 с любым классом скорости, с соответствующим описанием процедуры переговоров об IDLE последовательности
  • Повышен максимальный размер пакета до 284 байт, в подготовке к спецификации Cache Coherency
  • Поддержка 16 приоритетов физического уровня
  • Поддержка «безошибочной передачи» для передачи изохронной информации с высокой скоростью

Терминология

[править | править код]

Партнёр по каналу

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

Описание стандарта

[править | править код]

Спецификации RapidIO определяют физический (соответствует физическому и канальному уровню модели OSI), транспортный (соответствует сетевому уровню модели OSI) и логический (соответствует транспортному уровню модели OSI) уровни.

Имеется две спецификации физического уровня:

  • LP-LVDS — канал точка-точка представляет собой параллельный 8- или 16-разрядный дуплексный интерфейс, частота тактового сигнала — 250, 375, 500, 750 или 1000 МГц;
  • LP-Serial — канал точка-точка представляет собой последовательный дуплексный интерфейс, состоящий из 1, 2, 4, 8 или 16 подканалов (англ. lane), скорость передачи битового потока: 1,25, 2,5, 3,125, 5 или 6,25 Гбод.

Обзор протокола

[править | править код]

Протокол RapidIO определён трёхуровневой спецификацией:

  • Физический уровень: электрическая спецификация, PCS/PMA, протокол канального уровня для надёжного обмена пакетами
  • Транспортный уровень: маршрутизация, многоадресная рассылка, и программная модель
  • Логический уровень: логический ввод/вывод, система обмена сообщениями, глобальная разделяемая память (CC-NUMA), управление потоком, потоковая передача данных.

Системные спецификации включают:

  • Инициализацию системы
  • Работу с ошибками / Горячую замену

Физический уровень

[править | править код]

Электрическая спецификация RapidIO основана на промышленном стандарте Ethernet и стандартах Optical Interconnect Forum:

  • XAUI для шин со скоростью 1,25, 2,5 и 3,125 ГБд (1, 2 и 2,5 Гбит/с)
  • OIF CEI (англ.) 6+ Гбит/c для шин со скоростью 5,0 и 6,25 ГБд (4 и 5 Гбит/c)
  • 10GBASE-KR (англ.) 802.3-ap («длинный») и 802.3-ba («короткий») для шин со скоростью 10,3125 ГБд (9,85 Гбит/с)

Уровень PCS/PMA RapidIO поддерживает две формы кодирования/разбивания по кадрам:

  • 8b/10b (англ.) для шин со скоростью до 6,25 ГБд
  • 64b/67b, сродни тому, что используется в Interlaken, для шин со скоростью свыше 6,25 ГБд

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

Каждый пакет содержит в себе два значения, которые управляют обменом этим пакетом на физическом уровне. Первый из них — это acknowledge ID (ackID), уникальное в пределах канала 5-, 6- или 12-битное число, которое используется для отслеживания пакетов, передающихся в канале. Пакеты передаются с последовательно возрастающими значениями ackID. Из-за того, что ackID зависит от канала, он хранится не в контрольной сумме, а на уровне протокола. Это позволяет менять ackID с каждым каналом, через который проходит пакет, в то время как контрольная сумма пакета остаётся постоянной от конца до конца и служит для проверки целостности пакета. Когда пакет успешно получен, его получение подтверждается согласно ackID. Передатчик обязан сохранять пакет до тех пор, пока его успешное получение не было подтверждено на другом конце.

Вторым значением является физический приоритет пакета. Физический приоритет состоит из бита-идентификатора Виртуального Канала (VC), битов приоритета и бита, означающего что пакет критически важен для потока запросов (CRF). Бит VC определяет, используются ли остальные биты для нумерации виртуального канала от 1 до 8, или же для определения приоритета внутри нулевого виртуального канала. Виртуальным каналам назначаются соответствующие минимальные гарантированные пропускные способности. Внутри виртуального канала 0, пакеты с высоким приоритетом, могут отправляться раньше пакетов с низким. Пакеты ответов должны обладать большим физическим приоритетом, чем пакеты запросов, во избежание взаимоблокировки.

Физический уровень RapidIO добавляет к пакетам двухбайтовый заголовок в начале каждого пакета, включающий в себя ackID и физический приоритет, а также двухбайтовую контрольную сумму в конец, для проверки целостности пакета. Пакеты, большие 80 байт так же имеют промежуточную контрольную сумму после первых 80 байт. За одним исключением, контрольная сумма пакета служит для проверки целостности пакета на концах соединения.

Управляющие символы

[править | править код]

Управляющие символы RapidIO могут отправляться в любой момент, даже внутри пакета. Это позволяет RapidIO иметь наименьшую возможную задержку управления, и достигать высокой пропускной способности с меньшими буферами, нежели у других протоколов.

Управляющие символы используются для отделения пакетов друг от друга (Start of Packet, End of Packet, Stomp), подтверждения получения пакетов (Packet Acknowledge, Packet Not Acknowledged), сброса (Reset Device, Reset Port) и для распространения событий внутри системы RapidIO (Multicast Event Control Symbol). Управляющие символы так же используются для управления потоком (Retry, Buffer Status, Virtual Output Queue Backpressure) и восстановления ошибок.

Процедура восстановления ошибок очень быстра. Как только получатель замечает ошибку передачи в полученном потоке данных, он заставляет связанный с ним передатчик отправить управляющий символ Packet Not Accepted. Как только на другом конце получают управляющий символ Packet Not Accepted, передача новых пакетов останавливается и отправляется управляющий символ Link Request/Port Status. ackID, который надо использовать при следующей передаче указывается управляющим символом Link Response. Затем передача возобновляется.

Последовательность простоя

[править | править код]

Последовательность простоя используется во время инициализации канала для оптимизации качества сигнала. Она так же передаётся, когда нет никаких других отправляемых пакетов или управляющих символов.

Транспортный уровень

[править | править код]

Каждый конечный узел в RapidIO определяется уникальным идентификатором устройства (deviceID). Каждый пакет RapidIO содержит идентификаторы двух устройств. Первый из них — идентификатор пункта назначения (destID), который показывает, куда должен быть направлен пакет. Второй — идентификатор пункта отправления (srcID), который указывает, откуда пакет произошёл. Когда конечный узел получает пакет RapidIO с запросом, который требует ответа, пакет ответа составляется переменой мест srcID и destID.

Свитчи RapidIO используют destID полученных пакетов для определения выходного порта или портов, которые должны быть использованы для дальнейшей передачи пакета. Обычно, destID используется в качестве индекса для массива контрольных значений. Операция индексирования быстра и выполняется низкими средствами. Свитчи RapidIO для маршрутной таблицы поддерживают стандартную программную модель, что упрощает управление системой.

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

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

Логический уровень

[править | править код]

Логический уровень RapidIO состоит из нескольких спецификаций, каждая из которых предоставляет форматы пакетов и протоколы для передач с разной семантикой.

Логический ввод/вывод

[править | править код]

Уровень логического ввода/вывода определяет форматы пакетов для чтения, записи, записи с ответом и различных атомарных операций. Примеры атомарных операций: установить, очистить, увеличить, уменьшить, поменять местами, проверить и поменять местами и сравнить и поменять местами.

Передача сообщений

[править | править код]

Спецификация передачи сообщений определяет Дверные Звонки и Сообщения. Дверные Звонки передают 16-битный код события. Сообщения передают вплоть до 4 килобайт данных, разбитых на 16 пакетов, каждый из которых может нести максимум 256 байт. Пакеты ответа должны отправляться для каждого запроса Дверного Звонка или Сообщения. Значение статуса в ответном пакете означает выполнение, ошибку или повтор. Статус ответа «повтор» запрашивает отправителя запроса послать пакет ещё раз. Ответ «повтор» на логическом уровне позволяет множеству отправителей обращаться к малому количеству разделяемых получателей, что приводит к большой пропускной способности при малой мощности.

Управление потоком

[править | править код]

Спецификация Управления Потоком определяет форматы пакетов и протоколы для простых операций управления потоком готов/занят. Пакеты управления потоком могут происходить с концов соединения и из свитчей. Получение пакета управления потоком «занят» останавливает передачу потока или потоков, пока не будет получен пакет управления потоком «готов», или произойдёт тайм-аут. Пакеты управления потоком так же могут использоваться как общий механизм для управления ресурсами системы.

Спецификация Глобальной Разделяемой Памяти определяет форматы пакетов и протоколы для работы с кешем связной разделяемой памяти в сети RapidIO.

Потоковая передача данных

[править | править код]

Спецификация Потоковой Передачи Данных поддерживает передачу сообщений с форматами пакетов и семантикой, отличными от спецификации Передачи Сообщений. Формат пакета Потоковой Передачи поддерживает передачу до 64 килобайт данных, разделённых по множеству пакетов. Каждая передача связана с Классом Услуг и Идентификатором Потока, что делает возможными тысячи уникальных потоков между конечными узлами.

Спецификация Потоковой Передачи Данных также определяет форматы пакетов и семантики для управления потоком с Расширенным Заголовком, для управления производительностью внутри системы клиент-сервер. Каждый клиент использует пакеты управления потоком с расширенным заголовком для информирования сервера о величине работы, которая будет отослана серверу. Сервер отвечает пакетами управления потоком с расширенными заголовками, которые используют протоколы основанные на готовности/занятости, рейтинге или кредите для управления тем как быстро и в каком объёме клиенты отошлют серверу работу.

Инициализация системы

[править | править код]

Системы с известной топологией могут быть инициализированы соответствующем системе методом без влияния на совместимость. Спецификация инициализации системы RapidIO поддерживает инициализацию систем, в которых топология неизвестна или динамична. Алгоритмы инициализации системы поддерживают наличие запасных хостов, для того, чтобы инициализации могла не иметь единой точки отказа.

Каждый хост системы рекурсивно проходит по всей сети RapidIO, захватывая владение устройствами, выделяя идентификаторы устройств конечным узлам и обновляя таблицы маршрутизации на свитчах. При происхождении конфликта владения, побеждает хост с наивысшим deviceID. Проигравший хост освобождает устройства и отступает, ожидая победивший хост. Победивший хост продолжает проход, включая завладевание проигравшим хостом. Затем, проигравший хост исследует систему путём чтения таблиц маршрутизации свитчей и регистрирует на каждом конечном узле для того, чтобы узнать конфигурации системы. Если победивший хост не завершит обход за известный период времени, проигравший хост считает, что выигравший хост потерпел неудачу и сам завершает обход.

Обход системы поддерживается в Linux подсистемой RapidIO.

Обработка ошибок

[править | править код]

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

Форм-факторы

[править | править код]

Спецификация RapidIO не описывает форм-факторы и коннекторы, оставляя детали реализации конкретным сообществам, работающим над прикладными проблемами. RapidIO поддерживается следующими форм-факторами:

Программное обеспечение

[править | править код]

Независящая от процессора поддержка RapidIO содержится в ядре Linux.

Приложения

[править | править код]

Связи RapidIO широко используются в следующих приложениях:

Конкурирующие протоколы

[править | править код]

PCI Express. В отличие от RapidIO, PCIe не оптимизирован для пиринговых мультипроцессорных сетей. PCIe идеален для связей типа хост-периферия. PCIe плохо масштабируется на большие мультипроцессорные пиринговые системы, так как базовое предположение PCIe о «корневом комплексе» создаёт проблемы с устойчивостью к ошибкам и управлением.

Ещё одной альтернативой может являться Ethernet. Ethernet — является хорошим подходом при связи компьютеров на больших территориях, когда топология сети может неожиданно изменяться, используемые протоколы непостоянны, а задержки велики. Для того, чтобы справиться с этими проблемами, системы, основанные на Ethernet требуют значительной вычислительной мощности, памяти и большого объёма программного обеспечения для реализации протоколов для управления потоками, передачи данных и маршрутизации пакетов. RapidIO оптимизирован для энергоэффективных связей процессор-процессор с минимальными задержками в устойчивых к ошибках системах, которые простираются на областях не более одного километра.

SpaceFibre — конкурирующий протокол для применения в космосе[10].

Примечания

[править | править код]
  1. RapidIO.org I Open Standard Interconnect Architecture. Дата обращения: 13 марта 2009. Архивировано 13 марта 2008 года.
  2. RapidIO : the embedded system interconnect. — Wiley, 2005-01-01. — ISBN 0470092912.
  3. "RapidIO Specifications". RapidIO.org (англ.). Архивировано 24 декабря 2016. Дата обращения: 24 декабря 2016.
  4. «Integrated Device Technology 2011 Annual Report» Архивная копия от 3 марта 2016 на Wayback Machine (PDF). www.idt.com. Integrated Device Technology Inc. 6 June 2011. p. 4.
  5. The Linley Group - RapidIO Reaches for the Clouds. www.linleygroup.com. Дата обращения: 24 декабря 2016. Архивировано 24 декабря 2016 года.
  6. «RapidIO Standard Revision 2.0» Архивная копия от 2 декабря 2016 на Wayback Machinewww.rapidio.org. RapidIO Trade Association. 23 февраля 2005.
  7. «Integrated Device Technology 2014 Annual Report» Архивная копия от 3 марта 2016 на Wayback Machine (PDF). www.idt.com. Integrated Device Technology Inc. 28 May 2014. pp. 5, 35.
  8. "RapidIO Specifications". RapidIO.org (англ.). Архивировано 24 декабря 2016. Дата обращения: 24 декабря 2016.
  9. "RapidIO Specifications". RapidIO.org (англ.). Архивировано 24 декабря 2016. Дата обращения: 24 декабря 2016.
  10. «SpaceFibre Overview» Архивировано 22 октября 2014 года. (PDF). STAR-Dundee.