Remove ads
Из Википедии, свободной энциклопедии
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 года, и включала в себя производителей телекоммуникационного оборудования и средств хранения, а также изготовителей процессоров и коммутаторов. Протокол был разработан для выполнения следующих целей:
Спецификация 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:
Спецификация RapidIO ревизии 4.0 была выпущена в 2016 году[9]. Она внесла следующие изменения и улучшения со спецификаций 3.x:
Партнёр по каналу
Спецификации RapidIO определяют физический (соответствует физическому и канальному уровню модели OSI), транспортный (соответствует сетевому уровню модели OSI) и логический (соответствует транспортному уровню модели OSI) уровни.
Имеется две спецификации физического уровня:
Протокол RapidIO определён трёхуровневой спецификацией:
Системные спецификации включают:
Электрическая спецификация RapidIO основана на промышленном стандарте Ethernet и стандартах Optical Interconnect Forum:
Уровень PCS/PMA RapidIO поддерживает две формы кодирования/разбивания по кадрам:
Каждый элемент 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].
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.