XSwitch — межсоединение, используемое процессором XCore. Протокол межсоединения определён компанией XMOS, и базируется вокруг сообщений маршрутизации, содержащих 9-битные маркеры между ядрами в сети. Протокол специально разработан для чипа и платы на уровне общения, но через интерфейс lvds он может работать на более длинных кабелях.

Описание править

Описание системного уровня править

Соединительные маршруты последовательности сообщений. Сообщение состоит из заголовка, который определяет базовый адрес, последовательности символов и символа конца. Есть 512 символов, 256 из которых являются символами данных, и 256 из которых являются символами контроля. Данные символы используются для передачи данных (например, аудио-потока данных), символы контроля могут использоваться, чтобы послать данные о контроле в группе, чтобы осуществить протоколы по межсоединению. Сообщение маршрутизируется через последовательность переключателей, соединенных XLinks.

Имеются два символа управления, которые могут быть использованы для завершения сообщения: END (символ конца), который заканчивает сообщение, и PAUSE (символ паузы), который приостанавливает сообщение. Оба символа освободят маршрут через коммутаторы. Разница между END и PAUSE заключается в том, что символ END будет доставлен в приемник, в то время как символ PAUSE будет молча выброшен последним переключателем.

Поскольку сообщения завершаются символом (не имеют длину пакета), отправитель может решить не прекращать сообщение. Это создает открытую линию связи с гарантированной полосой пропускания и временем ожидания. Приложения могут использовать, например, один ряд ссылок, чтобы сформировать линию связи для потоковой передачи аудио, и использовать другой набор ссылок для мелких пакетов, содержащих данные контроля. Сообщения могут быть доставлены несколькими путями. Линии связи постоянно занимают ряд узлов, в то время как сообщения занимают узлы на короткие периоды времени.

Соединительная архитектура XSwitch реализует уровни модели OSI.

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

На физическом уровне сигнал передается либо с помощью последовательного протокола по двум проводам, или, используя быстрый протокол, по пяти проводам. В обоих случаях сигнал передается как серия переходов, используя 1 из M код (1 out of M code).

На двухпроводной системе модуляция на проводе 0 сигнал '0' бит, а модуляция на проводе 1 сигнал '1' бит. Символ передается в виде последовательности ровно 10 переходов, первые восемь сигналов восемь бит данных (MSB первый), а затем один бит сигнала, будет ли это символ управления, а затем, наконец, возвращение к нулевому биту, который возвращает провода в ноль (после девяти переходов один провод будет максимальным).

На пяти-проводной системе четыре провода данных (0, 1, 2 и 3). Модуляция на 0 сигналы '00', модуляция на 1 сигналы '01' и т. д. Последовательность из четырёх переходов передает восемь бит данных. Пятый провод-это отводящий провод, использующийся для передачи управляющих символов. В отличие от двухпроводной системы любое четное количество проводов может быть максимальным после символа, а провода возвращаются к нулю только в конце сообщения.

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

Канальный уровень править

На канальном уровне протокол основан на использовании контрольной суммы для того, чтобы сигнализировать, могут ли данные быть переданы или нет. Приемники всегда выдают контрольную сумму передатчику, прежде чем передатчик может отправить любые данные. А канал можешь дать контрольную сумму 8, 32, или 64 , но он никогда не должен выдавать более 127,это гарантия того, что другая сторона всегда может записывать контрольные суммы через 7 разрядные счетчики. И наоборот, если большое количество контрольных сумм выдается на ссылку, то необходимо иметь большие буферы приема; минимальный размер приемного буфера составляет 8 символов (72 бита).

Сетевой уровень править

Сетевой уровень обеспечивает маршрутизацию сообщений через межсоединения. Узлы в сети идентифицируют с помощью 16-разрядного адреса. Сообщения направляются последовательными соответствующими битами адреса назначения. На каждом узле сообщение доводится ближе к месту назначения, принимая первый не соответствующий бит, затем осуществляется поиск набора каналов, которые будут использоваться для этого назначения. Затем сообщение направляется по этому каналу, и маршрут «закатывается», когда END или PAUSE символы найдены. Учитывая, что заголовок предшествует пакету, это реализует червячная маршрутизация[1]

Реализации править

Коммутаторы XCore XS1-G4 и процессоры XCore XS1-L1 реализованы XSwitch.

Примечания править

  1. Universal Routing Strategies for Interconnection Networks. 1998.

Литература править