Статья опубликована в рамках: LXXVII Международной научно-практической конференции «Вопросы технических и физико-математических наук в свете современных исследований» (Россия, г. Новосибирск, 22 июля 2024 г.)
Наука: Информационные технологии
Секция: Системный анализ, управление и обработка информации
Скачать книгу(-и): Сборник статей конференции
АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРА ДЛЯ ОБРАБОТКИ И ФИЛЬТРАЦИИ ОБЪЕКТОВ ДАННЫХ В УЗЛАХ СЕТЕЙ SPACEFIBRE С ТРЕБОВАНИЯМИ РЕАЛЬНОГО ВРЕМЕНИ
ARCHITECTURE OF MICROCONTROLLER FOR PROCESSING AND FILTERING DATA OBJECTS IN NODES OF SPACEFIBRE NETWORKS
WITH REAL-TIME REQUIREMENTS
Elena Suvorova
Candidate of Technical Science, Saint-Petersburg State University of Aerospace Instrumentation,
Russia, Saint-Petersburg
Vadim Polyakov
Doctor of Technical Science, Saint-Petersburg State University of Aerospace Instrumentation,
Russia, Saint-Petersburg
АННОТАЦИЯ
В статье показана необходимость динамической реконфигурации, изменения алгоритмов обработки, фильтрации данных в сетях с требованиями реального времени. Определены основные требования к сетевому процессору (микроконтроллеру), обеспечивающему возможность динамической реконфигурации в сетях на базе стандарта SpaceFibre. Предложена архитектура сетевого процессора (микроконтроллера) на базе RISC V со встроенными автоматами, соответствующая этим требованиям. Выполнена оценка характеристик реализации.
ABSTRACT
The article shows the need for dynamic reconfiguration, changes in algorithms of data processing and filtering in networks with real-time requirements. The basic requirements for a network processor (microcontroller) that provides the possibility of dynamic reconfiguration in networks based on the SpaceFibre standard are defined. The architecture of a network processor (microcontroller) based on RISC V with built-in reconfigurable automata corresponding to these requirements is proposed. The evaluation of the characteristics of the implementation was evaluated.
Ключевые слова: SpaceFibre; динамическая реконфигурация; сетевые процессоры; SDN; сети с требованиями реального времени; RISC-V.
Keywords: SpaceFibre; dynamic reconfiguration; network processors; SDN; networks with real-time requiements; RISC-V.
Введение
В ходе эксплуатации, для обеспечения функционирования локальной вычислительной сети с требованиями реального времени возникает необходимость в изменении правила функционирования терминальных узлов, маршрутизаторов – правила обработки входного потока объектов данных. Такого рода изменения могут быть связаны с изменением режима функционирования системы, наборов решаемых задач, переносом функций с одних узлов на другие вследствие отказов или для управления загрузкой. Сети, в которых обеспечиваются такого рода возможности, получили название программно-реконфигурируемых сетей (Software Defined Networks, SDN) [1, 2]. В настоящее время они широко используются в самых разных областях от систем высокопроизводительной обработки данных (High Performance Computing, HPC) до интернета вещей (IoT). Для большинства из них имеются требования жесткого или мягкого реального времени [3, 4, 5]. Существует большое количество реализаций SDN сетей на базе Ethernet и Infiniband [6], в коммутаторах и терминальных узлах которых, как правило, имеются встроенные сетевые процессоры, основанные на процессорных ядрах с достаточно большими вычислительными возможностями. Однако, для их реализации маршрутизаторов и терминальных узлов требуется использование тонких проектных норм (45 нм и ниже) и высоких частот (1ГГЦ и выше). Это недостижимо при использовании отечественных технологий.
В данной статье рассматривается архитектура сетевого процессора - микроконтроллера, ориентированного на использование в сетях SpaceFibre [7], реализованного с использованием проектных норм 180 – 90 нм, что делает возможным использование отечественных технологий.
Характеристики алгоритмов и требования к реализации
Различные варианты алгоритмов функционирования, которые должны поддерживаться, как правило довольно короткие (содержат небольшое количество действий), аппаратные затраты и дополнительное энергопотребление, необходимые для поддержки динамической реконфигурации имеют жесткие ограничения. Кроме того, для систем с требованиями реального времени, время выполнения алгоритмов и время выполнения динамической реконфигурации должны быть детерминированными. Многие действия должны выполняться на лету, в соответствии со скоростью поступления данных. Например, анализ заголовков пакетов (фреймов), проверка их длины, контрольных сумм (CRC) и других параметров, необходимых для определения правил транзитной передачи пакетов, должны выполняться по мере их поступления.
Существующие способы реализации сетевых процессоров (микроконтроллеров) с возможностью динамической реконфигурации
Реализация возможностей по реконфигурации может осуществляться с использованием автоматов с динамической реконфигурацией или процессорных ядер с RISC архитектурой. Использование автоматов с возможностью динамической реконфигурации, как правило, позволяет обеспечить строго детерминированное время выполнения, приемлемое энергопотребление при обработке данных на лету. При этом, для хранения настроек может требоваться довольно большой объем памяти. Использование процессорных ядер при реализации коротких алгоритмов позволяет сократить количество используемой памяти. Но энергопотребление и/или время выполнения при этом могут оказаться не приемлемыми. Это происходит из-за того, что обработка одного (каждого) слова данных может требовать выполнения нескольких команд. Например, вычисление контрольной суммы может требовать более 10 ассемблерных команд. Соответственно, процессорное ядро для обработки данных на лету должно работать на частоте, в десятки раз превосходящей частоту поступления данных. При этом энергопотребление может оказаться не допустимо большим [8, 9, 10, 11, 12, 13]. Достоинства обоих рассмотренных подходов можно сочетать, если использовать гибридные варианты, в которых часть функций реализуется реконфигурируемыми автоматами или вычислительными модулями, встроенными в RISC ядро. При этом для обработки каждого слова данных появляется возможность параллельного выполнения нескольких функций. Это позволяет не увеличивать частоту тактирования, на которой функционирует RISC ядро. Архитектура RISC V обладает широкими возможностями по интеграции обоих рассмотренных подходов, и далее будет рассматриваться именно эта архитектура. Аппаратная реализация выполняется для тех функций, которые необходимо выполнять «потоково» (для всех или большинства слов данных) и для выполнения которых необходимо несколько ассемблерных команд. Например, это могут быть функции вычисления контрольной суммы. Определение таких функций может осуществляться на основе анализа реализаций алгоритмов на ассемблере для базового варианта архитектуры RISC V.
Использование этого подхода не позволяет устранить проблему недетерминированного времени выполнения алгоритмов на процессорном ядре. Потенциальными источниками недетерминизма могут являться время обращения к памяти, конфликты по данным, управлению, переключение между разными подпрограммами, процессами.
Краткий обзор алгоритмов, предлагаемых для реализации
К алгоритмам, которые могут изменяться динамически, относятся, например, алгоритмы анализа заголовка (некоторой начальной части) пакета (объекта данных), по результатам которой принимается решение о дальнейших действиях, выполняемых над этим объектом данных, а также обработка объектов данных, являющихся командами (содержащих команды), формирование объектов данных – ответов, формирование объектов данных, которые должны быть отправлены в другие сетевые узлы в соответствии с событиями, происходящими в данном сетевом узле.
В частности, для пакетов данных может обрабатываться сетевой и транспортный заголовок, или отдельные их поля. Потенциально могут анализироваться и некоторые поля прикладного заголовка. На основе анализа этих полей и, возможно, предыстории, определяются правила обработки пакета данных. Например, определяется должен ли пакет быть отброшен, передан в сторону прикладного уровня данного узла или передан дальше, в какой порт (какие порты) должен быть передан пакет, должны ли какие-то поля пакета быть модифицированы, отброшены, добавлены перед дальнейшей передачей. Также определяется, должны ли записываться какие-то данные, которые в дальнейшем используются для предыстории, например, счетчики статистики, идентификатор порта, из которого поступил пакет, должны ли запускаться или сбрасываться счетчики таймаутов, слов данных и др. В ходе анализа заголовка данных может проверяться CRC, в этом случае решение о дальнейшей обработке пакета принимается, как правило, только после проверки CRC. (Проверка CRC требуется не всегда, например, отдельного CRC для сетевого заголовка пакета SpaceWire, SpaceFibre не предусмотрено.) При этом флаги, необходимые для принятия решения, потенциально могут формироваться до проверки CRC, но окончательное решение формируется уже после этой проверки.
В ряде случаев может выполняться обработка всего объекта данных. Например, это может быть контроль длины пакета с последующим отбрасыванием хвоста пакета в случае ее превышения.
Обработка может выполняться «на лету», с предварительным сохранением части объекта данных, по которой принимаются решения, либо с полным сохранением в буферной памяти.
При обработке объекта данных «на лету» и с предварительным сохранением части объекта, в системах реального времени требуется, чтобы в общем случае скорость обработки соответствовала скорости поступления слов данных, в противном случае будет снижаться полезная пропускная способность и/или будет необходимо отбрасывать часть объектов данных. Но, потенциально, существует возможность на некоторых этапах обработки использовать несколько дополнительных тактов (как правило, их количество не превосходит 10). Наличие этих тактов обусловлено тем, что по физическому каналу передается не только полезная информация (объекты данных от прикладного уровня), но и служебная информация. При обработке объекта данных с полным сохранением в буфере, как правило, существует требование по времени выполнения алгоритма обработки.
Рассмотрим один из типовых примеров такого алгоритма. В маршрутизаторах SpaceFibre потенциально может выполняться фильтрация пакетов. Например, допускается дальнейшая передача пакетов, у которых длина сетевого заголовка на момент прихода в маршрутизатор составляет N1 байтов, сетевой заголовок является логическим или регионально-логическим, пакет должен соответствовать транспортному протоколу с идентификатором, равным PID1 = RMAP_PID, поле Destination_key = KEY1. Обобщенный алгоритм имеет следующий вид:
Byte_counter:=0; fl_ep=0; fl_log_addr=1;
While (Byte_counter<N1) and (fl_ep=0) loop
Прочитать из FIFO очередной символ данных в cur_byte, cur_flag, сохранить во внутренней памяти;
If cur_byte <32 then
fl_log_addr=0;
end if;
if (cur_flag=1) and ((cur_byte = EOP) or (cur_byte=EEP)) then
fl_ep=1;
end if;
Byte_counter:=Byte_counter+1;
End loop;
If fl_ep=0 then
Прочитать из FIFO очередной символ данных в cur_byte, cur_flag, сохранить во внутренней памяти;
If (cur_flag=1) and ((cur_byte = EOP) or (cur_byte=EEP)) then
-- пакет оказался недопустимо коротким и отбрасывается без дальнейшей обработки (внутренняя память, занятая началом пакета, освобождается)
else
if (cur_flag=0) and (cur_byte = RMAP_PID) then
Прочитать из FIFO очередной символ данных в cur_byte, cur_flag;
if (cur_flag=1) and ((cur_byte = EOP) or (cur_byte=EEP)) then
-- пакет оказался недопустимо коротким и отбрасывается без дальнейшей обработки (внутренняя память, занятая началом пакета, освобождается)
else
Прочитать из FIFO очередной символ данных в cur_byte, cur_flag;
If (cur_flag=1) and ((cur_byte = EOP) or (cur_byte=EEP)) then
-- пакет оказался недопустимо коротким и отбрасывается без дальнейшей обработки (внутренняя память, занятая началом пакета, освобождается)
Else
If (cur_flag=0) and (cur_byte = KEY1) then
Передать дальше начало пакета (сохраненное во внутренней памяти)
While fl_ep = 0 loop
Прочитать из FIFO очередной символ данных в cur_byte, cur_flag;
Передать дальше этот символ
if (cur_flag=1) and ((cur_byte = EOP) or (cur_byte=EEP)) then
fl_ep=1;
end if;
end loop;
Else
-- Пакет имеет недопустимый ключ, (внутренняя память, занятая началом пакета, освобождается) хвост пакета должен быть отброшен без дальнейшей обработки:
While fl_ep=0 loop
Прочитать из FIFO очередной символ данных в cur_byte, cur_flag;
if (cur_flag=1) and ((cur_byte = EOP) or (cur_byte=EEP)) then
fl_ep=1;
end if;
End loop;
End if;
End if;
end if;
else
-- пакет имеет недопустимый PID, (внутренняя память, занятая началом пакета, освобождается) хвост пакета должен быть отброшен без дальнейшей обработки:
While fl_ep=0 loop
Прочитать из FIFO очередной символ данных в cur_byte, cur_flag;
if (cur_flag=1) and ((cur_byte = EOP) or (cur_byte=EEP)) then
fl_ep=1;
end if;
End loop;
end if;
End if;
Else
-- пакет оказался недопустимо коротким и отбрасывается без дальнейшей обработки (внутренняя память, занятая началом пакета, освобождается)
End if;
Листинг 1. Пример алгоритма обработки заголовка пакета
Как можно видеть из этого примера, обработка каждого символа объекта данных включает в себя несколько действий. Для каждого символа определяется, является ли он концом пакета, для многих символов требуется проверять, удовлетворяют ли они еще нескольким условиям, слово может записываться во внутреннюю память для временного хранения. Выполняются также дополнительные действия, такие как инкремент счетчиков, сброс счетчиков, вычисление и проверка условий. Причем, в ряде случаев несколько условных операторов следует непосредственно друг за другом, т.е. фактически после обработки очередного слова необходимо сделать выбор не между двумя, а между большим количеством альтернативных вариантов схемы поведения. Для того, чтобы классическое процессорное ядро успевало обрабатывать входной поток данных с применением этого алгоритма «на лету», необходимо, чтобы его частота была примерно в 8 раз выше скорости поступления потока.
В данном примере рассмотрен довольно простой алгоритм, в более сложных (более комплексных) алгоритмах количество выполняемых для каждого слова (некоторых слов) действий может быть больше. В частности, может выполняться счет контрольной суммы, формирование различных флагов, используемых для принятия решения и др. действия.
Таким образом, для обработки одного слова требуется до нескольких десятков ассемблерных команд процессорного ядра с классической архитектурой. Как было показано выше, это является не приемлемым для рассматриваемой области применения. В следующем разделе предлагается архитектура микроконтроллера на базе RISC V, позволяющая устранить эти проблемы за счет включения в нее дополнительных автоматов и дополнительных команд, позволяющих ими управлять.
Предлагаемая архитектура микроконтроллера на базе RISC V
Для того чтобы устранить неопределенность времени выполнения программы, связанную с доступом к памяти, для микроконтроллера используется выделенная память инструкций и данных. На основе анализа алгоритмов было определено, что в большинстве случаев действия, выполняемые для следующего слова, зависят от результатов, полученных при обработке предыдущего слова. В соответствии с этим для устранения конфликтов по данным и управлению предлагается использовать монолитное процессорное ядро (все действия по выполнению одной команды выполняются за один такт, процессор без конвейера). В этом случае не требуется тормозить работу конвейера (что приводит к снижению полезной пропускной способности) или спекулятивному выполнению команд (поддержка которого требует дополнительных аппаратных затрат).
Данный микроконтроллер предназначен для потоковой обработки данных, поэтому он включает в себя потоковые интерфейсы (интерфейсы с логикой работы типа FIFO). Количество потоковых интерфейсов в общем случае может быть различным. Как минимум, должен быть один входной интерфейс и один выходной. Каждому интерфейсу ставится в соответствие автомат-контроллер. Взаимодействие процессорного ядра с этим автоматом осуществляется через программно доступные регистры. Входному интерфейсу (каждому) ставится в соответствие программно-доступный регистр (SCR), в который отображается очередное слово данных, читаемое из FIFO и флаг (один разряд в программно-доступном регистре), в котором отображается признак действительности/достоверности слова данных. Слово и флаг формируются автоматом-контроллером интерфейса. Факт выполнения чтения фиксируется автоматом-контроллером, и по этому событию он обеспечивает доступ к следующему слову и формирование следующего значения флага. Выходному интерфейсу (каждому) ставится в соответствие программно-доступный регистр, запись в который позволяет поместить очередное слово данных в соответствующее выходное FIFO и флаг (один разряд в программно-доступном регистре), который отображает признак возможности записи очередного слова данных в FIFO. Значение флага формируется автоматом-контроллером. Для автомата-контроллера фиксируется факт записи очередного слова в соответствующий регистр, по которому он осуществляет фактическую запись слова в FIFO.
Как было показано в предыдущем разделе, во многих алгоритмах требуется считать количество принятых (или отправленных) слов, байтов, других событий, различных таймаутов. Для обеспечения этого в RISC ядро включены автоматы-счетчики. В базовом варианте реализации 4 таких автомата, а в общем случае их количество определяется в соответствии с алгоритмами, которые необходимо реализовать. Для каждого счетчика необходимо определять условие инкремента и условие сброса. Эти условия могут быть элементарными, например, инкрементировать каждый такт, или достаточно комплексными, в соответствии с условиями, используемыми в условных операторах. Для формирования сложных условий предлагается использовать специализированные компоненты со структурой программируемых логических матриц (ПЛМ). Эти же компоненты используются для того, чтобы за один такт вычислять сложные (комплексные) условия, используемые во многих условных операторах. Для формирования многих условий требуется выполнять операции сравнения. Для их реализации также используются отдельные компоненты.
Во многих алгоритмах требуется вычисление различных контрольных сумм (CRC-8, CRC-16, CRC-32 с различными полиномами). Если требуется реализация таких алгоритмов, то в процессорное ядро включаются компоненты для вычисления соответствующих контрольных сумм.
Для управления этими дополнительными автоматами базовый набор инструкций дополнен следующими инструкциями. Инструкция INIT1 P1 используется для сброса автоматов в исходное состояние и имеет один параметр, интерпретируемый как вектор сброса. В векторе каждому автомату соответствует один разряд, и если он установлен в 1, то выполняется сброс соответствующего автомата. Инструкция JL P1, P2 используется для условного чтения из FIFO интерфейса. Она имеет два параметра: P1 используется для задания количества повторений, P2 используется для задания идентификатора конфигурации. Если P1=0, то количество повторений определяется условием, включенным в конфигурацию. Данный идентификатор определяет набор настроек, подаваемый на автоматы. Оператор JL может быть выполнен заданное количество раз, после чего осуществляется переход к следующему по порядку оператору. Это позволяет реализовать цикл while с однократной вложенностью. Выход из цикла и переход на другой оператор могут быть осуществлены, если не будет выполнено какое-либо условие, соответствующее заданной конфигурации. В этом случае программный счетчик будет установлен в соответствии со значением, определенным для данного условия. Это позволяет за один такт реализовывать несколько условных операторов.
Инструкция JS P1, P2 используется для условной записи в FIFO. Она имеет два параметра, аналогичные по своему назначению инструкции JL. Инструкция JLS P1, P2 используется для чтения из входного FIFO интерфейса и выдачу в выходной FIFO интерфейс.
На данном процессорном ядре могут выполняться и операторы из базового набора RISC V. В частности, операторы условного перехода могут быть использованы при необходимости в алгоритме циклов вложенности 2-х и более. При использовании такого RISC ядра программа из рассмотренного выше примера будет иметь следующий вид:
INIT1 вектор сброса; // Установка начальных значений
JL N1, С1; // чтение и проверка сетевого адреса
JL 1, С2; // чтение и проверка PID
JL 1, C3; // чтение следующего слова
JL 1, C4; // чтение и проверка KEY
JS N1+3, C5; // отправка прочитанной части заголовка
JLS 0, C6; // чтение и отправка оставшейся части пакета
END;
JL 0, С7; // чтение и отбрасывание оставшейся части пакета
END;
Листинг 1. Пример алгоритма обработки заголовка пакета для предлагаемого микроконтроллера
Процессорное ядро с предложенной архитектурой может выполнять обработку одного слова данных за один такт, его частота работы может выбираться в соответствии со скоростью поступления данных.
Характеристики реализации
Для оценки достижимых характеристик были выполнены реализации RTL модели микроконтроллера с предложенной архитектурой с последующим синтезом для библиотек КМОП 180, 90 нм (ГК «Микрон» HCMOS8D CMOS 0.18, HCMOS10_LP CMOS 90).
Для этих реализаций достижима частота работы 125 и 250 МГц соответственно. Эти частоты являются достаточными для обработки потоков данных SpaceFibre при скоростях передачи в физическом канале 1250 и 2500Мбит/с, достижимых для данных библиотек.
По площади данное ядро приблизительно в 2,7 раза меньше реализации динамически реконфигурируемого автомата с аналогичной функциональностью. Сокращение площади достигнуто преимущественно за счет сокращения объема памяти, необходимого для хранения слов конфигурации и таблицы значений переходов, выходов. Эта реализация в 3,2 – 3,5 раза больше чем аналогичная реализация RISC V с базовым набором команд. Но для выполнения алгоритмов ему требуется в 8 – 25 раз меньшее количество тактов локальной частоты. Данное ядро в 1,2 раза больше аппаратной реализации RMAP контроллера без возможности динамической реконфигурации. Оно позволяет реализовывать не только обработку пакетов в соответствии с протоколом RMAP, но и в соответствии с СТП-ИСС 13, а также фильтрацию пакетов по различным правилам.
Заключение
В статье рассмотрены причины, приводящие к необходимости иметь возможность динамической реконфигурации алгоритмов обработки объектов данных в сетевых узлах сетей с поддержкой требований реального времени. Предложена архитектура микроконтроллера на базе RISC V, обеспечивающая возможность выполнения алгоритмов обработки объектов данных «на лету» с детерминированными задержками. Это достигнуто за счет использования в микроконтроллере набора динамически реконфигурируемых автоматов. Выполнена оценка достижимых характеристик для реализации микроконтроллера с предложенной архитектурой реализованной с использованием отечественных технологий.
Благодарности
Работа выполнена при финансовой поддержке Министерства науки и высшего образования Российской Федерации, соглашение № FSRF-2023-0003, "Фундаментальные основы построения помехозащищенных систем космической и спутниковой связи, относительной навигации, технического зрения и аэрокосмического мониторинга".
Список литературы:
- Bakshi K. Considerations for software defined networking (SDN): Approaches and use cases // IEEE Conference. – 2013. – C. 1 – 9.
- Blial O., Ben Mamoun M., Benaini R. An Overview on SDN Architectures with Multiple Controllers // Journal of Computer Networks and Communications. – 2016. – C. 1 – 8.
- Ferrer A. J., Marquès J. M., Jorba J. Towards the decentralised cloud: Survey on approaches and challenges for mobile, ad hoc, and edge computing // ACM Computing Surveys. – 2019. № 6. – C. 1 – 36.
- Khan, W.Z., Ahmed, E., Hakak, S., Yaqoob, I., Ahmed, A. Edge comput-ing: A survey // Future Generation Computer Systems. – 2019. – C. 219 – 235.
- Dolui, K., Datta, S.K. Comparison of edge computing implementations: Fog com-puting, cloudlet and mobile edge computing // 2017 Global Internet of Things Summit (GIoTS). – 2017. – C. 1 – 6.
- Astuto B. A Survey of Software-Defined Networking: Past, Present, and Future of Programmable Networks // A. Nunes, M. Mendonca, X.-N. Nguyen, K. Obraczka, T. Turletti/ IEEE Communications Surveys & Tutorials. – 2014. V. 16. № 3. – C. 1617 – 1634.
- SpaceFibre - Very high-speed serial link. ECSS-E-ST-50-11C. // ESA-ESTEC. Noordwijk, The Netherlands. 2019. 233 c.
- Suvorova E. Dynamically Reconfigurable Automata for Estimating Interaction Between Data Flows in High-Performance Computing Systems // WECONF-2023. – 2023. – C. 1 – 6
- Suvorova E. RISC V Based Reconfigurable Manager for Event Transmission in SpaceFibre Networks // FRUCT-29. – 2021. – C. 355 – 365
- Safarpour M., Silvén O. H. An Embedded Programmable Processor for Compressive Sensing Applications // 2018 IEEE Nordic Circuits and Systems Conference (NORCAS): NORCHIP and International Symposium of System-on-Chip (SoC). – 2018. – C. 1 – 6
- Hrynkiewicz E., Chmiel M. Programmable Logic Controller - Basic Structure and Idea of Programming // Przegląd Elektrotechniczny. ). – 2012. – C. 98 – 101
- Pradhan S. N., Choudhury P. Low power and high testable Finite State Machine synthesis // International Conference and Workshop on Computing and Communication (IEMCON). – 2015. – C. 1 –5.
- Salauyou V. Synthesis of high-speed finite state machines in FPGAs by state splitting // Computer Information Systems and Industrial Management (IFIPTC8) 15th International Conference. – 2016. V. 9842. – C. 741 –751.
Оставить комментарий