КОНТРОЛЛЕР СКОРОСТНОГО ВВОДА-ВЫВОДА (КСВВ)

Полезная модель относится к области вычислительной техники и может быть использована для создания высокопроизводительных вычислительных систем на базе микропроцессоров с архитектурой «Эльбрус».
Известен самоформирующийся суперкомпьютер [РФ №2367125 С1, H05K 7/00, H05K 7/20, G06F 15/18, G06F 1/16, G06F 1/20, опубл. 10.09.2009], содержащий множество стоек, на каждой из которых размещен массив разъемов для подключения токопроводящих шин питания стоек к шинам питания плат, и массив плат с размещенными на них микросхемами, причем платы имеют устройства для их закрепления на стойках, а элементы суперкомпьютера соединяются друг с другом с помощью оптоволоконных и электрических шин, при этом имеется компьютер-строитель, один или несколько манипуляторов, управляемых этим компьютером, а также библиотеки охлаждаемых плат, оптоволоконных шин и электрических кабелей в виде наборов этих элементов, установленных в, доступных для манипуляторов, магазинах.
Недостаток данного суперкомпьютера заключается в недостаточном быстродействии.
Наиболее близким к заявляемому является вычислительный кластер [Белянин И.В., Петраков П.Ю., Фельдман В.М. Функциональная организация и аппаратура сетевого взаимодействия модулей в вычислительном кластере на базе микропроцессоров с архитектурой «Эльбрус» // Вопросы радиоэлектроники, сер. ЭВТ, 2015, вып. 1, рис. 3, 4, 6], содержащий контроллер, в состав которого в общем случае входит три контроллера интерфейса (IOLink Core), арбитр для обращений прямого доступа в память (DMA Dispather), блок управляющих регистров (Register Block), блок выборки и подкачки дескрипторов (Descriptor Fetch Block), блок инжекции и эжекции сетевых пакетов (Packet Injector/Ejector), сервисный блок управления сетевыми пакетами (Service Control) для подключения к коммутационной панели и блок реализации интерфейса Wlink (Wlink Client), первый вход-выход которого соединен с первым входом-выходом сервисного блока управления сетевыми пакетами (Service Control), второй вход-выход которого соединен с первым входом-выходом блока управляющих регистров (Register Block), второй вход-выход которого соединен с первым входом-выходом блока выборки и подкачки дескрипторов (Descriptor Fetch Block), второй вход-выход которого соединен с первым входом-выходом блока инжекции и эжекции сетевых пакетов (Packet Injector/Ejector), второй вход-выход которого соединен со вторым входом-выходом арбитра для обращений прямого доступа в память (DMA Dispather), третий вход-выход которого соединен с третьим входом-выходом блока инжекции и эжекции сетевых пакетов (Packet Injector/Ejector), четвертый вход-выход которого соединен с третьим входом-выходом блока реализации интерфейса Wlink (Wlink Client), второй вход-выход которого соединен с пятым входом-выходом блока инжекции и эжекции сетевых пакетов (Packet Injector/Ejector), третий вход-выход блока управляющих регистров (Register Block) соединен с первым входом первого контроллера интерфейса (IOLink Core), третий вход-выход блока выборки и подкачки дескрипторов (Descriptor Fetch Block) соединен с первым входом-выходом арбитра для обращений прямого доступа в память (DMA Dispather), четвертый, пятый и шестой входы-выходы которого соединены с входами-выходами соответственно с первого по третий контроллера интерфейса (IOLink Core), с первого по третий входы, и отдельно выходы, которых соединены с соответствующими выходами, и отдельно входами, контроллера, вход, и отдельно выход, которого соединены с соответственно выходами, и отдельно входами, блока реализации интерфейса Wlink (Wlink Client), и сетевой коммутатор, в состав которого входит в общем случае 2N блоков приема пакетов (PortIn), где N=2, 2N блоков передачи пакетов (PortOut) и блок коммутации обменов (Crossbar), с первого по третий входы i-й группы входов, где i=1, 2, 3, …, 2N которого соединены с первого по третий выходами i-го блока приема пакетов (PortIn), с первого по третий выходы i-й группы выходов, где i=1, 2, 3, …, 2N блока коммутации обменов (Crossbar) соединены с первого по третий входами i-го блока передачи пакетов (PortOut), вход i-го блока приема пакетов (PortIn) соединен с соответствующим i-м входом сетевого коммутатора, выход i-го блока передачи пакетов (PortOut) соединен с соответствующим i-м выходом сетевого коммутатора, первый вход которого соединен с четвертым выходом контроллера, четвертый вход которого соединен с первым выходом сетевого коммутатора.
Недостатком данного вычислительного кластера является сложность реализации контроллера скоростного ввода-вывода на ПЛИС с заданной производительностью, так как на одной ПЛИС не возможно разместить контроллер с двумя и более контроллерами интерфейса (IOLink Core).
Техническим результатом является устранения сложности реализации контроллера скоростного ввода-вывода на ПЛИС с заданной производительностью путем размещения и использования в контроллере одного контроллера интерфейса (IOLink Core).
Технический результат достигается тем, что в контроллер скоростного ввода-вывода (КСВВ) содержащий, контроллер, в состав которого входит контроллер интерфейса (IOLink Core), арбитр для обращений прямого доступа в память (DMA Dispather), блок управляющих регистров (Register Block), блок выборки и подкачки дескрипторов (Descriptor Fetch Block), блок инжекции и эжекции сетевых пакетов (Packet Injector/Ejector), сервисный блок управления сетевыми пакетами (Service Control) для подключения к коммутационной панели и блок реализации интерфейса Wlink (Wlink Client), первый вход-выход которого соединен с первым входом-выходом сервисного блока управления сетевыми пакетами (Service Control), второй вход-выход которого соединен с первым входом-выходом блока управляющих регистров (Register Block), второй вход-выход которого соединен с первым входом-выходом блока выборки и подкачки дескрипторов (Descriptor Fetch Block), второй вход-выход которого соединен с первым входом-выходом блока инжекции и эжекции сетевых пакетов (Packet Injector/Ejector), второй вход-выход которого соединен со вторым входом-выходом арбитра для обращений прямого доступа в память (DMA Dispather), третий вход-выход которого соединен с третьим входом-выходом блока инжекции и эжекции сетевых пакетов (Packet Injector/Ejector), четвертый вход-выход которого соединен с третьим входом-выходом блока реализации интерфейса Wlink (Wlink Client), второй вход-выход которого соединен с пятым входом-выходом блока инжекции и эжекции сетевых пакетов (Packet Injector/Ejector), третий вход-выход блока управляющих регистров (Register Block) соединен с первым входом контроллера интерфейса (IOLink Core), третий вход-выход блока выборки и подкачки дескрипторов (Descriptor Fetch Block) соединен с первым входом-выходом арбитра для обращений прямого доступа в память (DMA Dispather), четвертый вход-выход которого соединены со вторым входом-выходом контроллера интерфейса (IOLink Core), вход, и отдельно выход, которого соединен соответственно с первым выходом, и отдельно первым входом, контроллера, второй вход, и отдельно второй выход, которого соединены соответственно с выходом, и отдельно входом, блока реализации интерфейса Wlink (Wlink Client), и сетевой коммутатор, в состав которого входит в общем случае 2N блоков приема пакетов (PortIn), где N=2, 2N блоков передачи пакетов (PortOut) и блок коммутации обменов (Crossbar), с первого по третий входы i-й группы входов, где i=1, 2, 3, …, 2N которого соединены с первого по третий выходами i-го блока приема пакетов (PortIn), с первого по третий выходы i-й группы выходов, где i=1, 2, 3, …, 2N блока коммутации обменов (Crossbar) соединены с первого по третий входами i-го блока передачи пакетов (PortOut), вход i-го блока приема пакетов (PortIn) соединен с соответствующим i-м входом сетевого коммутатора, выход i-го блока передачи пакетов (PortOut) соединен с соответствующим i-м выходом сетевого коммутатора, первый вход которого соединен с четвертым выходом контроллера, четвертый вход которого соединен с первым выходом сетевого коммутатора, дополнительно введены в сетевой коммутатор (2N+1)-й блок передачи пакетов (PortOut) и (2N+1)-й блок приема пакетов (PortIn), с первого по третий выходы которого соединены с первого по третий входами (2N+1)-й группы входов блока коммутации обменов (Crossbar), с первого по третий выходы (2N+1)-й группы выходов которого соединены с первого по третий входами (2N+1)-й блока передачи пакетов (PortOut), а в контроллере используется и размещается только один контроллер интерфейса (IOLink Core), второй выход контроллера соединен с (2N+1)-м входом сетевого коммутатора, (2N+1)-й выход которого соединен с вторым входом контроллера, с первого по 2N-й входы, и отдельно с первого по 2N-й выходы, сетевого коммутатора соединены с внешними выходами, и отдельно входами, контроллера скоростного ввода-вывода.
На фиг. 1 представлена схема контроллера скоростного ввода-вывода.
1
2
5
1
2
4
Контроллер скоростного ввода-вывода (фиг. 1) содержит контроллер 1, в состав которого входит контроллер интерфейса (IOLink Core) 2, арбитр для обращений прямого доступа в память (DMA Dispather) 3, блок управляющих регистров (Register Block) 4, блок выборки и подкачки дескрипторов (Descriptor Fetch Block) 5, блок инжекции и эжекции сетевых пакетов (Packet Injector/Ejector) 6, сервисный блок управления сетевыми пакетами (Service Control) 7 для подключения к коммутационной панели и блок, реализации интерфейса Wlink (Wlink Client) 8, и сетевой коммутатор 9, в состав которого входит пять блоков приема пакетов (PortIn) 10, 10, … 10, пять блоков передачи пакетов (PortOut) 11, 11, … 11 и блок коммутации обменов (Crossbar) 12.
1
2N+1
1
2
2N+1
i
i
i
i
Контроллер скоростного ввода-вывода (фиг. 1) содержит контроллер 1, в состав которого входит один контроллер интерфейса (IOLink Core) 2, арбитр для обращений прямого доступа в память (DMA Dispather) 3, блок управляющих регистров (Register Block) 4, блок выборки и подкачки дескрипторов (Descriptor Fetch Block) 5, блок инжекции и эжекции сетевых пакетов (Packet Injector/Ejector) 6, сервисный блок управления сетевыми пакетами (Service Control) 7 для подключения к коммутационной панели и блок реализации интерфейса Wlink (Wlink Client) 8, первый вход-выход которого соединен с первым входом-выходом сервисного блока управления сетевыми пакетами (Service Control) 7, второй вход-выход которого соединен с первым входом-выходом блока управляющих регистров (Register Block) 4, второй вход-выход которого соединен с первым входом-выходом блока выборки и подкачки дескрипторов (Descriptor Fetch Block) 5, второй вход-выход которого соединен с первым входом-выходом блока инжекции и эжекции сетевых пакетов (Packet Injector/Ejector) 6, второй вход-выход которого соединен со вторым входом-выходом арбитра для обращений прямого доступа в память (DMA Dispather) 3, третий вход-выход которого соединен с третьим входом-выходом блока инжекции и эжекции сетевых пакетов (Packet Injector/Ejector) 6, четвертый вход-выход которого соединен с третьим входом-выходом блока реализации интерфейса Wlink (Wlink Client) 8, второй вход-выход которого соединен с пятым входом-выходом блока инжекции и эжекции сетевых пакетов (Packet Injector/Ejector) 6, третий вход-выход блока управляющих регистров (Register Block) 4 соединен с первым входом контроллера интерфейса (IOLink Core) 2, третий вход-выход блока выборки и подкачки дескрипторов (Descriptor Fetch Block) 5 соединен с первым входом-выходом арбитра для обращений прямого доступа в память (DMA Dispather) 3, четвертый вход-выход которого соединены со вторым входом-выходом контроллера интерфейса (IOLink Core) 2, вход, и отдельно выход, которого соединен соответственно с первым выходом, и отдельно первым входом, контроллера, второй вход, и отдельно второй выход, которого соединены соответственно с выходом, и отдельно входом, блока реализации интерфейса Wlink (Wlink Client) 8, и сетевой коммутатор 9, в состав которого входит (2N+1), где N=2, блоков приема пакетов (PortIn) 10, 102, … 10, (2N+1) блоков передачи пакетов (PortOut) 11, 11, … 11 и блок коммутации обменов (Crossbar) 12, с первого по третий входы i-й группы входов, где i=1, 2, 3, …, 2N+1 которого соединены с первого по третий выходами i-го блока приема пакетов (PortIn) 10, с первого по третий выходы i-й группы выходов, где i=1, 2, 3, …, 2N+1 блока коммутации обменов (Crossbar) 12 соединены с первого по третий входами i-го блока передачи пакетов (PortOut) 11, вход i-го блока приема пакетов (PortIn) 10, где где i=1, 2, 3, …, 2N, соединен с соответствующим i-м входом сетевого коммутатора 9, выход i-го блока передачи пакетов (PortOut) 11 соединен с соответствующим i-м выходом сетевого коммутатора 9, (2N+1)-й вход которого соединен со вторым выходом контроллера 1, второй вход которого соединен с (2N+1)-м выходом сетевого коммутатора 9, с первого по 2N-й входы, и отдельно с первого по 2N-й выходы, сетевого коммутатора 9 соединены с внешними выходами, и отдельно входами, контроллера скоростного ввода-вывода.
Работа модуля (фиг. 1) заключается в следующем.
Интегральная производительность кластера зависит не только от производительности его узлов, но и от качества и скорости связей между ними. Существует большое количество решений по объединению отдельных машин в вычислительную сеть с использованием стандартных высокоскоростных интерфейсов, таких как 10G Ethernet, InfiniBand, RapidIO и других, однако проведенный авторами анализ показал, что применение любого из них существенно увеличивает стоимость оконечной аппаратуры.
В традиционных терминах организации компьютерных сетей функции взаимодействия вычислительных модулей в составе кластера можно отнести к четырем уровням - физическому, сетевому, транспортному и прикладному.
Функции сетевого и транспортного уровней поддерживаются связанной с узлом аппаратурой двух типов - соответственно, сетевыми коммутаторами и контроллерами сетевого взаимодействия. Сетевые коммутаторы выполняют маршрутизацию и передачу данных между смежными узлами кластера. Контроллеры осуществляют обмен «end-to-end» между объектами системного программного обеспечения, а также между абонентами, обеспечивающими прикладным процессам услуги транспортировки.
Сетевой коммутатор может иметь несколько внутренних и внешних портов, связывающих с аппаратурой других узлов кластера через соединения физического уровня.
Для обеспечения адресной доставки данных каждому абоненту кластерной сети в процессе инициализации сети присваивается уникальный идентификатор, а в каждом сетевом коммутаторе формируется таблица маршрутизации.
В системное программное обеспечение прикладного уровня входит драйвер, отвечающий за настройку сетевой аппаратуры и наличие актуальной информации о ресурсах сети. При этом он использует локализованный в сетевом коммутаторе стандартный блок пространства конфигурации Element_Config_Space с регистрами, содержащими информацию о типе, возможностях, статусе узла и определяющими некоторые функции управления, причем это пространство доступно не только для локальных обращений, но и для обращений от других узлов.
i
i
На сетевом уровне выполняется взаимодействие между сетевыми коммутаторами, основанное на использовании находящемся в каждом из них таблицы маршрутизации, которая ассоциирует идентификаторы функционирующих в сети абонентов с номерами портов коммутатора. Количество портов сетевого коммутатора определяется топологией сети. Порт состоит из двух блоков - блока приема пакетов (PortIn) 10 и блока передачи пакетов (PortOut) ll, каждый из которых содержит несколько виртуальных каналов, например, три канала VC0-VC2. Виртуальные каналы позволяют обеспечивать качество обслуживания различных типов трафика и строить многомерные сети. Связь портов этого устройства с физической средой осуществляется через интерфейс Wlink.
Связь сетевого коммутатора с контроллером сетевого взаимодействия осуществляется через один из портов.
Для системного программного обеспечения вычислительного модуля контроллер представляет собой PCI устройство, поддерживающее способ задания параметров процесса пересылки данных (трансфера) типа DMA. При использовании DMA-способа вся информация о последовательности обменов находится в системной памяти в виде кольцевого буфера, содержащего очередь дескрипторов. Каждый из его элементов представляет собой логическую структуру, определяющую параметры трансфера, такие как устройство назначения, размер обмена, расположение передаваемых данных в адресных пространствах отправителя и получателя.
В блоке DMA Dispatcher 3 (фиг. 1) происходит коммутация внутренних интерфейсов блоков контроллера, через которые идет обмен с системной памятью, с блоком IO Link Core 2, преобразующим внутренний интерфейс в системный. Блок Descriptor Fetch Block 5 отвечает за получение параметров, необходимых для разных обслуживаемых процессов. Параметры могут быть вычислены, используя значения регистров блока Register Block 4, либо получены из дескрипторов в системной памяти, используя системный интерфейс, доступ к которому осуществляется через блок IOLink Core 2. На основе вычисленных параметров в блоке Packet Injector/Ejector 6 формируются отправляемые в сеть пакеты в формате обменов транспортного уровня. Входящие пакеты обрабатываются в блоках Service Control 7 и Packet Injector/Ejector 6. В первом из них происходит обработка только сервисных пакетов. Блок Packet Injector/Ejector 6 обрабатывает все другие вводимые сетью пакеты и формирует транзакции записи/чтения в системную память.
При загрузке операционной системы сетевой драйвер определяет, что к данному вычислительному модулю подключен контроллер 1. Из статусных регистров контроллера в Register Block 4 драйвер определяет его характеристики и затем конфигурирует это устройство - выделяет ему требуемую память, настраивает очереди дескрипторов, открывает сетевые порты и выполняет другие действия.
Контроллер 1 и сетевой коммутатор 9 интегрированы в составе отдельного устройства, подключаемого непосредственно к процессорам.
В качестве основы программного обеспечения, поддерживающего взаимодействие вычислительных модулей в кластере на уровне пользовательских процессов, выбрана библиотека MPI, модифицированная для работы с сетевым драйвером. Одной из главных особенностей этой модификации является возможность работы с контроллером 1 напрямую, после того как тот выделит приложению требуемые ресурсы.
В процессе создания контроллера скоростного ввода-вывода возникла проблема реализации контроллера скоростного ввода-вывода на ПЛИС с заданной производительностью, так как на одной ПЛИС не возможно разместить контроллер и сетевой коммутатор 9 с двумя и более контроллерами интерфейса (IOLink Core) 2. Решение проблемы заключается в размещении и использовании на одной ПЛИС контроллера скоростного ввода-вывода с одним контроллером 1 интерфейса (IOLink Core) 2.
Техническим результатом является устранения сложности реализации контроллера скоростного ввода-вывода на ПЛИС с заданной производительностью реализацию сетевого контроллера на ПЛИС с заданной производительностью путем размещения и использования в контроллере одного контроллера интерфейса (IOLink Core).
Таким образом, в заявляемом контроллере скоростного ввода-вывода (КСВВ) реализуется возможность использования в контроллере одного контроллера интерфейса (IOLink Core) без потери производительности.