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

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

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

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

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

Спецификация RapidIO ревизии 1.2, выпущенная в 2002 году, определяла последовательную шину для внутренних соединений, основанную на физическом уровне XAUI. Основанные на этой спецификации устройства достигли значимого коммерческого успеха в сфере устройств для беспроводных сетей«Integrated Device Technology 2011 Annual Report»  (PDF). www.idt.com. Integrated Device Technology Inc. 6 June 2011. p. 4., технологий обработки изображений и вычислений для военных целей.

Спецификация RapidIO ревизии 2.0, выпущенная в 2008 году«RapidIO Standard Revision 2.0» . www.rapidio.org. RapidIO Trade Association. 23 февраля 2005., добавила порты новой ширины (2x, 8x и 16x) и повысила максимальную скорость одной линии до 6,25 Гбод / 5 Гбит в секунду. Ревизия 2.1 повторила и расширила коммерческий успех спецификации 1.2«Integrated Device Technology 2014 Annual Report»  (PDF). www.idt.com. Integrated Device Technology Inc. 28 May 2014. pp. 5, 35..

Спецификация RapidIO ревизии 3.0, выпущенная в 2013 году, внесла следующие изменения и улучшения со спецификаций 2.x: Электрические спецификации, основанные на индустриальном стандарте Ethernet 10GBASE-KR для коротких (20 см + коннектор) и дальних (1 м + коннектор) приложений Использование тренировочной схемы Ethernet 10GBASE-KR DME для оптимизации качества сигнала на больших расстояниях Определение схемы кодирования 64b/67b (схоже со стандартом Interlaken) для поддержки как медных, так и оптических соединений и улучшения эффективности передачи Динамические асимметричные каналы для сохранения энергии (например, 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) уровни.

Имеется две спецификации физического уровня: LP-LVDS — канал точка-точка представляет собой параллельный 8- или 16-разрядный дуплексный интерфейс, частота тактового сигнала — 250, 375, 500, 750 или 1000 МГц; LP-Serial — канал точка-точка представляет собой последовательный дуплексный интерфейс, состоящий из 1, 2, 4, 8 или 16 подканалов (), скорость передачи битового потока: 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 Гбит/с) 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 состоит из нескольких спецификаций, каждая из которых предоставляет форматы пакетов и протоколы для передач с разной семантикой.

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