ВЫСОКОПРОИЗВОДИТЕЛЬНЫЙ БЛОК ИНТЕРФЕЙСА RapidIO ДЛЯ СОЗДАНИЯ МНОГОЯДЕРНЫХ МИКРОПРОЦЕССОРОВ С ВИРТУАЛЬНЫМИ КАНАЛАМИ RapidIO

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

УДК 004.716 Дата подачи статьи: 27.07.15

DOI: 10.15827/0236-235X.112.087-092

ВЫСОКОПРОИЗВОДИТЕЛЬНЫМ БЛОК ИНТЕРФЕЙСА RapidIO ДЛЯ СОЗДАНИЯ МНОГОЯДЕРНЫХ МИКРОПРОЦЕССОРОВ С ВИРТУАЛЬНЫМИ КАНАЛАМИ RapidIO

Н.А. Козлов, аспирант, младший научный сотрудник, kozlov_n@ps.niisi.ras.ru (ФНЦ НИИСИ РАН, Нахимовский просп, 36, корп. 1, г. Москва., 11 7218, Россия);

С.Г. Бобков, д.т.н., профессор, зам. директора, bobkov@ps.niisi.ras.ru

Одним из основных направлений повышения производительности вычислительных систем является создание многоядерных и многопроцессорных систем. Современные многопроцессорные системы, как правило, строятся на базе коммуникационных сред. К наиболее распространенным высокопроизводительным средам относятся сети HyperTransport, PCIExpress, ASI, RapidIO, VXS, StarFabric, Ethernet 10 Gb, InfiniBand, Myrinet. Коммуникационные среды создаются на внутрикристальном, модульном, межмодульном и межмашинном уровнях. Стандарт RapidIO ориентирован на создание трех последних сред и, таким образом, позволяет значительно унифицировать многопроцессорные системы. Для дальнейшей унификации с целью повышения надежности и снижения трудозатрат на разработку необходима унификация модуля обмена между ядром микропроцессора и внешней средой. В статье рассматривается унифицированный блок (блок RIO-AXI) перехода с внутрипроцессорной шины AXI на внешнюю шину RapidIO, позволяющий создавать как многоядерные процессоры, так и коммутаторы с коммуникационной средой RapidIO.

Ключевые слова: коммутатор, RapidIO, многоядерный процессор, виртуальный канал.

Основным показателем производительности вычислительной системы является производительность микропроцессора. Д. Паттерсон и Дж. Хеннесси [1] определили производительность микропроцессора как

N

N

Программа Nm

T

цик ^ прог

N

Программа

прог

X

= время работы CPU.

Как видим, производительность зависит от трех характеристик: частоты, частоты на инструкцию и количества инструкций. Более того, время работы процессора (CPU) в равной степени зависит от каждой из них: увеличение на 10 % одной дает общий прирост тоже в 10 %. К сожалению, сложно изменить один из этих параметров отдельно от остальных, поскольку основные технологии, определяющие каждую характеристику, взаимозависимые: частота определяется технологией изготовления микропроцессора, частота на инструкцию - архитектурой микропроцессора, количество инструкций - системой команд и технологией компиляции.

Улучшение технологических норм изготовления кристаллов микросхем и увеличение числа транзисторов в микросхемах примерно до 2003 г. тоже вызывало постоянный рост частоты микропроцессоров вплоть до 3-4 ГГц. Однако дальнейшее повышение частоты обусловило существенное повышение потребления питания и, соответственно, повышение тепловыделения, которое невозможно отвести от кристаллов стандартными средствами [2].

Повышение производительности стало достигаться за счет усложнения архитектуры ядра микропроцессора, включения дополнительных функ-

ций, сопроцессоров и, главное, за счет создания многоядерных микропроцессоров и многопроцессорных систем [2]. В связи с этим на первый план стала выдвигаться задача создания высокоэффективной коммуникационной среды. Одной из наиболее перспективных сред является коммуникационная среда RapidIO (RIO). Стандарт RIO разрабатывался специально для удовлетворения важнейших требований приложений реального времени: обеспечения малых задержек, детерминизма, надежности и масштабируемости, снижения энергопотребления, размеров и веса, обусловленного требованиями встроенных систем. Высокие показатели по скорости передачи и надежности привели к тому, что RIO начинает использоваться и для построения серверов, прежде всего серверов с плотной упаковкой. Кроме того, стандарт RIO позволяет унифицировать коммуникационную среду на модульном, межмодульном и межмашинном уровнях [3], что существенно удешевляет систему и упрощает ПО. Для дальнейшей унификации и снижения затрат на разработку предложен блок (блок RIO-AXI) перехода с внутрипроцессорной шины AXI на внешнюю шину RIO, позволяющий создавать как многоядерные процессоры, так и коммутаторы с коммуникационной средой RIO.

Унифицированный блок межпроцессорного обмена

На рисунке 1 приведена структурная схема организации обмена процессорного ядра (ЦПУ) с внешней коммуникационной средой через каналы RIO. К процессорному ядру подключено оперативное запоминающее устройство (ОЗУ).

87

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

Рис. 1. Структурная схема взаимодействия процессорного ядра с коммуникационной средой RIO Fig. 1. A flow chart showing interaction between processor core and RIO

PRIO

SRIO

SRIO

SRIO

SRIO

AXI

Рис. 2. Структурная схема блока межпроцессорного обмена ядра микропроцессора и среды RIO Fig. 2. A flow chart for the block of interprocessor exchange of microprocessor core and RIO

На рисунке 2 приведена структурная схема блока межпроцессорного обмена. Схема состоит из следующих основных блоков: порты RIO, блок коммутации RIO и блок преобразования пакета RIO в пакет AXI. Блок преобразования состоит из блоков приема запроса и выдачи ответа RIO, коммутатора запросов, блока регистров, контроллера шины AXI и еще трех контроллеров: контроллера дверных замков, почтовых ящиков (контроллер сообщений) и транзакций ввода-вывода RIO.

Во время работы внешнее обращение поступает в порт RIO, далее пакет в зависимости от настроек таблицы маршрутизации передается в один из выходных портов. При обращении к процессору (попадании в порт 5) пакет RIO преобразуется в пакет AXI и затем поступает в процессор. С точки зрения программной модели, внутри микросхемы находится одно RIO-устройство.

Решение задачи построения блока межпроцессорного обмена для двух ядер

Одной из основных задач унификации среды является связь между двумя ядрами процессора на одном кристалле с сохранением доступа к периферийным устройствам (рис. 3). Рассмотрим характеристики, свойства и трудозатраты на реализацию блока межпроцессорного обмена для двух процессоров. Наиболее очевидными являются два варианта исполнения этого блока: подключение к одному порту RIO с использованием коммутатора AXI; подключение к порту RIO с созданием виртуальных каналов.

Первый вариант предполагает структуру, изображенную на рисунке 4. Рассмотрим затраты на разработку аппаратной части. Для реализации этой схемы необходимо разработать коммутатор AXI.

88

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

PRIO

SRIO

SRIO

SRIO

SRIO

AXI

AXI

Рис. 4. Структурная схема блока межпроцессорного обмена для двух процессоров, вариант 1 Fig. 4. A flow chart showing interprocessor exchange for two processors, option 1

PRIO

SRIO

SRIO

SRIO

SRIO

AXI

Рис. 5. Структурная схема блока межпроцессорного обмена для двух процессоров, вариант 2 Fig. 5. A flow chart showing interprocessor exchange for two processors, option 2

Далее при работе с одним портом RIO нужно разделить пакеты между двумя процессорами. Это можно реализовать через разделение адресного пространства, через контроллер сообщений или тип пакета. Для такого разделения необходимо значительно изменить контроллер сообщений. На изменение программной части требуется значительное изменение работы с разделением адресного пространства с двумя процессорами, находящимися на одном порту RIO. К достоинствам такого подхода можно отнести отсутствие дублирования контроллеров, к недостаткам - появление дополнительной задержки при прохождении пакета через AXI-коммутатор по сравнению со схемой, по которой происходит взаимодействие с одним ядром.

Для реализации второго способа соединения процессоров (рис. 5) необходимо сделать следующие изменения аппаратной части: подключить блок регистров к блоку коммутации, незначительно изменить структуру блока регистров AXI, подключить второй блок преобразования пакета

RIO в пакет AXI. В программной модели обозначенная структура будет определена как три устройства RIO, с каждым из которых можно работать независимо от другого: коммутатор RIO, блок RIO-AXI 1, блок RIO-AXI 2. При таком соединении соблюдается преемственность кода, все имеющиеся наработки с внесением незначительных изменений можно применить к новому блоку. Недостаток состоит в дублировании внутреннего содержания блока преобразования пакета RIO в AXI, достоинство - в сохранении задержки передачи на том же уровне, что и в унифицированном блоке с одним процессором.

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

89

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

тельности, потребляемой мощности и числе транзисторов (площади) для данных вариантов. С учетом этих параметров выбран второй вариант.

Рассмотрим выбранную схему соединения процессоров. Схема состоит из трех блоков (рис. 5). Первый блок - это 8-портовый коммутатор, к которому подсоединен 1 порт PRIO, 4 порта SRIO, блок регистров и 2 виртуальных порта RIO. К первому виртуальному порту подключен блок RIO-AXI 1, который состоит из коммутатора запросов AXI, блока приема запросов и выдачи ответов RIO, блока регистров и трех контроллеров: дверных замков, почтовых ящиков и транзакций ввода-вывода RIO. Блок RIO-AXI 2 полностью аналогичен блоку RIO-AXI 1.

Опишем процесс передачи сообщения между процессорами, находящимися на одном кристалле. Примем, что таблица маршрутизации сконфигурирована. В начале передачи первый процессор, подключенный по AXI к блоку RIO-AXI 1, заполняет поля в блоке регистров. Во время этой операции в блок регистров AXI пишутся адрес, данные, тип пакета, возможное число переходов и другие служебные поля. После этого пакет поступает в блок преобразования из интерфейса AXI в интерфейс локальной шины. Затем пакет поступает в блок преобразования из локальной шины в интерфейс RIO - блок выдачи ответов RIO. После этой передачи пакет поступает на виртуальный канал RIO, а затем в 5-й порт коммутатора и передается в 6-й в соответствии с таблицей маршрутизации. После появления пакета на 6-м порту коммутатора описанная операция выполняется в обратном порядке, за исключением передачи данных из виртуального канала в блок приема ответов RIO и выхода пакета из блока RIO-AXI 2 на интерфейс AXI ко второму процессору. В случае передачи на соседний кристалл операция аналогична описанной, за исключением конфигурации таблицы маршрутизации.

Структура ядра коммутатора

Рассмотрим ядро коммутатора RIO. Коммутатор относится к классу коммутаторов со входной буферизацией [4] (Input-Queued Switch). Он может работать в двух режимах: приоритетной передачи пакетов и циклическом [5] (Round-robin). Если установлен циклический режим, то при передаче из нескольких входных портов N в один выходной пакеты передаются по очереди от порта n = 1 до N. Если коммутатор работает в режиме приоритетной передачи и несколько входных портов передают пакет в один выходной, то первым передается наиболее приоритетный пакет. Пакеты с равным приоритетом передаются в циклическом режиме.

Поскольку рассматриваемый коммутатор относится к классу коммутаторов со входной буферизацией, существует проблема блокировки головного пакета (HoL, Head-of-Line) [6]. Она решена путем

перемещения блокирующего пакета на случайное место в очереди. При этом перемещении выполняется также перемещение более приоритетных пакетов в начало очереди.

Данная архитектура коммутатора является оптимальной благодаря простоте реализации и хорошим временным характеристикам, а именно, низкой задержке прохождения пакета и, как следствие, низким аппаратным затратам. Недостатком такого решения является отсутствие алгоритма, находящего максимальные паросочетания (MWM, MaximumWeightMatching) [7], из-за чего выходные порты ядра коммутатора могут простаивать, понижая максимальную пропускную способность в случае неравномерного распределения номера порта назначения и длины пакетов.

Блок межпроцессорного обмена с интерфейсами RIO и AXI

Как было показано ранее, данную схему IP блока RIO-AXI реализовать достаточно просто при наличии всех его составных частей.

Рассмотрим достоинства созданного IP-блока.

• Возможность использования стандартного интерфейса передачи сообщений (Message Passing Interface, MPI), позволяющего процессорам обмениваться сообщениями, параллельно выполняя одну задачу [8]. Основной механизм - передача сообщений между процессорами.

• Низкая задержка передачи пакета. Задержка при передаче пакета между портами RIO, состоящая из задержки приемопередатчика (преобразование последовательного кода в параллельный 26 нс), преобразования в порту RIO (получение RIO-пакета из параллельного кода, одно преобразование 156 нс), буферизации во входных очередях (21 нс) и коммутации (14 нс) между портами, составляет 400 нс для технологии проектирования 250 нм.

• Масштабируемость. Возможно соединение 5 кристаллов без дополнительных элементов (см. рис. 6). Chip означает отдельный кристалл, CPU -

90

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

возможно соединение до 256 процессоров. Возможно соединение и более сложных многоядерных схем, например тороидальной сети (рис. 7).

• Совместимость с имеющимся ПО. Имеющиеся наработки ПО совместимы с этим IP-ядром, сохраняется модель контроллера передачи сообщений (message controller).

• Однородность доступа к процессору на одном и нескольких кристаллах. Для программиста обращение к процессору на одном кристалле выглядит так же, как и обращение к другому кристаллу.

• Дублирующий режим. В некоторых надежных системах существует требование выполнения операций процессорами в дублирующем режиме. Использование разработанного ядра позволяет поддерживать этот режим.

• Возможность дальнейшего развития. При необходимости блок можно расширить, увеличив количество портов коммутатора. В результате увеличивается количество периферийных портов или виртуальных каналов RIO для подключения процессоров. Программные наработки при этом также сохраняются.

После сборки и отладки проекта были проведены исследования временных параметров - измерение задержки при передаче пакетов от одного процессора к другому. Измерения задержки были выполнены на модели и составили порядка 400 нс. Полученные значения говорят о низкой задержке передачи пакета. С учетом поправки на рабочую тактовую частоту эта задержка сопоставима с задержкой, полученной авторами при тестировании многопроцессорного взаимодействия [9]. Таким образом, в результате проделанной работы определены возможные варианты создания унифицированных блоков каналов RIO, проведена оптимизация и разработан блок, обеспечивающий высокую производительность различных многопроцессорных систем.

Литература

1. Patterson D.A., Hennessy J.L. Computer architecture: a quantitative approach. 4th ed. Morgan Kaufmann Publ. Elsevier Science (ref.), 2011, 676 p.

2. Бобков С.Г. Высокопроизводительные вычислительные системы. М.: Изд-во НИИСИ РАН, 2014. 299 с.

3. Бобков С.Г., Задябин С.О. Перспективные высокопроизводительные вычислительные системы промышленного применения на базе стандарта RapidIO // Электроника, микро- и наноэлектроника: сб. науч. тр. 11-й Рос. науч.-технич. конф. (2009, г. Н. Новгород); [под ред. В.Я. Стенина]. М.: Изд-во МИФИ, 2009. С. 114-121.

4. McKeown N., Mekkittiku A., Anantharam V., Walrand J. Transactions on Communications, Aug. 1999, vol. 47, no. 8, pp. 1260-1267.

5. Silberschatz A., Galvin P.B., Gagne G. Process Scheduling. Operating System Concepts (8th ed.). John Wiley & Sons Publ. (Asia), 2010, 194 p.

6. Bennett J.C.R., Partridge C., Shectman N. Packet reordering is not pathological network behavior. Dec. 1999, pp. 789-798.

7. Ерзин А.И. Введение в исследование операций: учеб. пособие. Новосибирск: Изд-во НГУ, 2006. С. 54-66.

8. Оленев Н.Н. Основы параллельного программирования в системе MPI. М.: Изд-во ВЦ РАН, 2005. 5 с.

9. Devashish P. Supercomputing Clusters with RapidIO Interconnect Fabric Ethernet Summit. 2015, April 14-16, 2015, p. 4.

DOI: 10.15827/0236-235X.112.087-092 Received 27.07.15

HIGH PERFORMANCE RAPIDIO BLOCK TO CREATE MULTI-CORE MICROPROCESSORS

WITH RAPIDIO VIRTUAL LINKS

Kozlov NA., Postgraduate Student, Junior Researcher, kozlov_n@cs.niisi.ras.ru (SRISA RAS, Nakhimovsky Ave. 36/1, Moscow, 117218, Russian Federation);

Bobkov S.G., Dr.Sc. (Engineering), Professor, Deputy Director, bobkov@cs.niisi.ras.ru (SRISA RAS, Nakhimovsky Ave. 36/1, Moscow, 117218, Russian Federation;

National Research Nuclear University «MEPhI», Kashirskoe Highway 31, Moscow, 115409, Russian Federation) Abstract. One of the main methods of improving computing systems performance is the development of multi-core and multiprocessor systems. Modern multiprocessor systems are usually based on the communication environment. The most popular high-performance network environments are: HyperTransport, PCI Express, ASI, RapidIO, VXS,

91

Программные продукты и системы /Software & Systems

№ 4 (112), 2015

StarFabric, 10GB Ethernet, InfiniBand, Myrinet. A communication environment is created on chip level, module level, inter-module level and inter-machine level. The RapidIO standard is focused on creating the last three environments and thus we can unify a multiprocessor system. For further unification we need to develop the module of the exchange between the microprocessor’s core and the external environment in order to improve the reliability and reduce labor effort. The article discusses a unified adapter block (RIO-AXI) for a transition from on-chip AXI bus to the external RapidIO bus to create as multicore processors as well as switches with RapidIO environment.

Chip production technology improvement and increase in the number of transistors in the chips until 2003 has led to permanent growth of microprocessor frequency up to 3-4 GHz. However, further increase in frequency has caused a substantial increase of power consumption and heat dissipation, which is impossible to withdraw from crystals using standard means.

Increased productivity has been achieved by expenses on complicated architecture of microprocessor cores, additional functions, coprocessors and, most importantly, by creating multi-core microprocessors and multiprocessor systems. Therefore, a high-performance communication environment is emphasized. RapidIO communication environment is one of the most promising. The RapidIO standard is designed specifically to meet critical requirements of real-time applications, which are: low latency, determinism, reliability and scalability, reduction of power consumption, size and weight.

Keywords: switch, RapidIO, multi-core processor, virtual channel.

References

1. Patterson D.A., Hennessy J.L. Computer Architecture: A Quantitative Approach. 4th ed., Morgan Kaufmann Publ., Elsevier Science, 2011, 676 p.

2. Bobkov S.G. Vysokoproizvoditelnye vychislitelnye systemy [High-Performance Computer Systems]. Moscow, NIISI RAN Publ., 2014, 299 p.

3. Bobkov S.G., Zadyabin S.O. Promising industrial high-performance computer systems based on RapidIO standard. Sbornik nauchnykh trudov 11 Ross. nauch.-tekhnich. konf. Elektronika, micro i nanoelectronika [Proc. of the 11th Russian Science and Tech. Conf. Electronics, micro- i nanoelectronics]. Moscow, MIFI Publ., 2009, pp. 114-121 (in Russ.).

4. McKeown N., Mekkittiku A., Anantharam V., Walrand J. Transactions on Communications. 1999, vol. 47, no. 8, pp. 1260-1267.

5. Silberschatz A., Galvin P.B., Gagne G. Process Scheduling. Operating System Concepts (8th ed.). John Wiley & Sons (Asia) Publ., 2010, 194 p.

6. Bennett J.C.R., Partridge C., Shectman N. Packet reordering is not pathological network behavior. 1999, pp. 789-798.

7. Erzin A.I. Vvedenie v issledovanie operatsy [Introduction to Operation Analysis]. Study guide, Novosobirsk, Novosibirsk State Univ. Publ., 2006, pp. 54-66 (in Russ.).

8. Olenev N.N. Osnovy parallelnogo programmirovaniya v sisteme MPI [The Basics of parallel programming in MPI]. VTs RAN Publ., 2005, 5 p. (in Russ.).

9. Devashish P. Supercomputing Clusters with RapidIO Interconnect Fabric Ethernet Summit. 2015, April 14-16, 2015, p. 4.

Примеры оформления статьи в списке литературы

1. Козлов Н.А., Бобков С.Г. Высокопроизводительный блок интерфейса RapidIO для создания многоядерных микропроцессоров с виртуальными каналами RapidIO // Программные продукты и системы. 2015. № 4 (112). С. 88-92.

2. Козлов Н.А., Бобков С.Г. Высокопроизводительный блок интерфейса RapidIO для создания многоядерных микропроцессоров с виртуальными каналами RapidIO // Программные продукты и системы. 2015; DOI: 10.15827/0236-235X.112.088-092.

3. Kozlov N.A., Bobkov S.G. High performance RapidIO block to create multi-core microprocessors with RapidIO virtual links. Programmnye produkty i sistemy [Software & Systems]. 2015, no. 4 (112), pp. 88-92 (in Russ.); DOI: 10.15827/0236-235X.112.088-092.

92