Interested Article - RapidIO

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

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

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

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

История

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • для шин со скоростью 1,25, 2,5 и 3,125 ГБд (1, 2 и 2,5 Гбит/с)
  • ( ) 6+ Гбит/c для шин со скоростью 5,0 и 6,25 ГБд (4 и 5 Гбит/c)
  • ( ) 802.3-ap ("длинный") и 802.3-ba ("короткий") для шин со скоростью 10,3125 ГБд (9,85 Гбит/с)

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

  • ( ) для шин со скоростью до 6,25 ГБд
  • 64b/67b, сродни тому, что используется в , для шин со скоростью свыше 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 байт. Пакеты ответа должны отправляться для каждого запроса Дверного Звонка или Сообщения. Значение статуса в ответном пакете означает выполнение, ошибку или повтор. Статус ответа "повтор" запрашивает отправителя запроса послать пакет ещё раз.  Ответ "повтор" на логическом уровней позволяет множеству отправителей  обращаться  к малому количеству разделяемых получателей, что приводит к большой пропускной способности при малой мощности.

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

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

CC-NUMA

Спецификация Глобальной Разделяемой Памяти определяет форматы пакетов и протоколы для работы с кешем связной разделяемой памяти в сети 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 — это конкурирующий протокол для применения в космосе .

См. также

Примечания

  1. . Дата обращения: 13 марта 2009. 13 марта 2008 года.
  2. . — Wiley, 2005-01-01. — ISBN 0470092912 .
  3. . RapidIO.org (англ.) . из оригинала 24 декабря 2016 . Дата обращения: 24 декабря 2016 .
  4. от 3 марта 2016 на Wayback Machine (PDF). www.idt.com . Integrated Device Technology Inc. 6 June 2011. p. 4.
  5. . www.linleygroup.com. Дата обращения: 24 декабря 2016. 24 декабря 2016 года.
  6. от 2 декабря 2016 на Wayback Machine . www.rapidio.org . RapidIO Trade Association. 23 февраля 2005.
  7. от 3 марта 2016 на Wayback Machine (PDF). www.idt.com . Integrated Device Technology Inc. 28 May 2014. pp. 5, 35.
  8. . RapidIO.org (англ.) . из оригинала 24 декабря 2016 . Дата обращения: 24 декабря 2016 .
  9. . RapidIO.org (англ.) . из оригинала 24 декабря 2016 . Дата обращения: 24 декабря 2016 .
  10. 22 октября 2014 года. (PDF). STAR-Dundee.

Ссылки

Источник —

Same as RapidIO