Дипломная работа: Разработка HDL-модели сети на кристалле

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Аннотация

сеть кристалл программа связь

Сети на кристалле (СтнК) являются новой вехой развития микропроцессорных систем, так как позволяют увеличить число вычислительных ядер и дополнительных модулей в системах на кристалле (СнК). Поэтому требуются средства для их моделирования и прототипирования. В работе представлена реализация генерируемой сети на кристалле с различными параметрами на языке Verilog, которая поддерживает топологии mesh, torus и circulant 2 порядка. Изменяемыми параметрами модели для настройки являются: количество узлов, размер буфера маршрутизаторов, параметры передаваемых пакетов, частота их генерации, специфические параметры для каждой топологии и настройки сетевого трафика. Разработан простой маршрутизатор, система их связи, а также вспомогательные программы для работы с моделью.

Введение

В связи с увеличивающимися требованиями к мощностям вычислительных систем требуется создать новые способы повышения их производительности. Закон Мура перестает работать, а производители систем на кристалле не могут больше увеличивать их тактовую частоту. Остается увеличение числа вычислительных ядер, однако классический способ соединения - системная шина - перестает эффективно работать для количества ядер более 8, так как электрическая нагрузка снижает ее рабочую область, и шина не отвечает пропускной способности системы на кристалле. Разработчики постоянно улучшают архитектуру шины, но это решение является плохо масштабируемым для конкретных задач. Более эффективным способом решения данной проблемы может стать использование сетей на кристалле (СтнК) [1]. СтнК - множество вычислительных модулей, объединенных общей подсистемой связи, состоящей из маршрутизаторов и соединений между ними. Для их разработки требуются модели, которые могли бы симулировать работу реальных СтнК. Существует два подхода к разработке моделей: на языках высокого уровня и языках описания аппаратуры (hardware description language, HDL). Наиболее точными являются HDL модели, так как они симулируют работу каждого реального элемента, однако они гораздо медленнее высокоуровневых моделей. Появление новых подходов к построению СтнК, их сложность структуры и увеличение количества узлов требуют новых подходов моделирования и синтеза таких сетей, а также разработки новых маршрутизаторов. Обычно это достигается путем построения HDL моделей, что позволяет точно моделировать и дополнительно облегчать синтез СтнК [2]. В данной работе будет разработана модель СтнК для тестирования различных маршрутизаторов, подбора топологий и параметров сети.

1. Обзор и анализ предметной области

1.1 Обзор литературы

В статье [3] описываются общие принципы построения сетей на кристалле. Сеть состоит из маршрутизаторов, соединенных с помощью топологии mesh размером mЧn (рисунок 1). К каждому маршрутизатору подсоединен источник данных, который может быть процессорным ядром, RAM-памятью, или каким-либо другим блоком. У каждого их них есть свой адрес, и между ними происходит передача пакетов, разделенных на флиты. Маршрутизатор сам по себе состоит из входных и выходных портов, буфера (одного или нескольких), а также внутренней логики выбора портов приема и передачи.

Рисунок 1 – Общая структура СтнК.

Разработка сети на кристалле при этом состоит из этапов проектирования сети по шаблону, чтобы спроектировать общую архитектуру сети в соответствии с требованиями, необходимыми для конкретных проектов. Модель сети должна быть разработана так, чтобы удовлетворять обоим этим требованиям, то есть имела возможность доработки архитектуры, а также динамического изменения топологии без больших затрат усилий.

В СтнК определяются 4 уровня протоколов:

1. Физический уровень, определяющий количество и длину шин;

2. Уровень передачи данных, который определяет протокол передачи данных между ресурсом и маршрутизатором, либо между 2 маршрутизаторами;

3. Сетевой уровень описывает, как пакеты устроены и будут передаваться от источника до цели. Часть пакета является данными, остальная - служебной информацией. Также пакеты могут делиться на составные части - флиты;

4. Транспортный уровень независим от технологии создания сети и описывает как полные пакеты переходят по сети.

Для моделирования СтнК используются 2 подхода: на языках высокого уровня и языках описания аппаратуры. Первый подход приобрел большее распространение, так как время моделирования значительно меньше. Он позволяет быстро опробовать различные топологии и способы передачи данных, использовать языки высокого уровня.

Среди них есть модель на Matlab [4]. Она использует SimEvents toolbox. Разработан 5-портовый маршрутизатор с виртуальными каналами (virtual channel, VC), который пропускает через себя флит за 10 тактов. Из них собрана сеть с топологией mesh размером 4x4, работающая с тактовой частотой 500 МГц. Она работает без потерь с коэффициентом загрузки флитов (flit injection rate, fir), показывающим, сколько флитов входит в сеть за единицу времени, от 0 до 53%. Модель полностью рабочая и с помощью нее можно тестировать различные топологии и алгоритмы маршрутизации.

Следующая модель [5] создана с использованием расширенной библиотеки SystemC под названием Asynchronous SystemC library (ASC). В работе сравниваются методы моделирования с помощью HDL моделей, на SystemC, сравниваются их преимущества и недостатки. Затем с помощью ASC создается элементная база для разработки асинхронной логики и СтнК. Дальнейшая цель работы - получить возможность отслеживать состояние регистров в устройствах.

В работе [6] представлена среда Nostrum Network-on-Chip Simulation Environment (NNSE), созданная для подбора оптимальных параметров работы сети для решения конкретных задач. Ядро системы называется Semla и основано на systemC. Доступные в модели топологии: mesh и torus. Маршрутизаторы используют виртуальные каналы, глубину которых можно указать в параметрах. Для передачи пакетов может быть использована передача типа wormhole или deflection. После конфигурирования сети будет собрана статистика ее работы по схеме передачи пакетов. Это главное отличие модели от остальных. На момент публикации модель обладала ограниченным списком доступных параметров, однако разработчики планировали увеличить их количество.

Все эти модели объединяет то, что они не синтезируются в реальную СтнК. HDL модель лишена этого недостатка по своей природе, однако моделирование происходит гораздо дольше, так как обрабатывается каждый элемент цепи в каждый момент времени. Таких моделей на данный момент разработано очень мало. Одна из них [7] создана на языке Verilog с использованием простого маршрутизатора с центральным буфером и схемой передачи пакетов wormhole [8]. Соединение маршрутизаторов происходит с помощью программы на C++, что делает библиотеку недостаточно гибкой и автоматизированной. После моделирования подсчитывается статистика работы сети также с использованием сторонней программы. В данном случае это применимо, так как это вспомогательные действия. Разработанная модель может быть синтезирована для ПЛИС, например, Cyclone II и Stratix II, где тактовая частота работы 200 MHz и 310 MHz соответственно. Также в статье рассказано, как использовать регулярные топологии с числом узлов, не предназначенным для нее. При использовании такой модели удалось увеличить пропускную способность на 20 % для квази-оптимальных топологий по сравнению с виртуальными каналами.

В [9] приведено описание маршрутизатора с VC и способы их оптимизации с различными параметрами. Они в теории позволяют уменьшить задержку доставки пакетов и справляться с deadlock. Это состояние, когда сеть перестает функционировать, если пакеты пытаются попасть в маршрутизаторы с заполненными буферами. Однако увеличение размера виртуального канала значительно улучшает использование буферного пространства. Описано влияние на пропускную способность размера буфера. Наилучший результат в исследовании показала конфигурация из 4 VC размером в 1 флит.

Аналитические выводы

Из анализа литературы следует, что разработка HDL моделей является актуальной, так как их гораздо меньше, чем высокоуровневых моделей СтнК. Они позволяют быстро подбирать оптимальные параметры сети, однако их нельзя использовать для тестирования отдельных компонентов или для разработки полноценной сети. В то же время, с использованием HDL моделей можно тестировать компоненты сети и строить рабочие сети на кристалле. Модель должна быть гибкой к изменениям, то есть поддерживать различные топологии и виды маршрутизаторов, а также добавление новых.

Для быстрой разработки модели выбран маршрутизатор с центральным буфером из работ [7][8], так как он прост в разработке и отладке. Планируется в дальнейших работах сравнить его с маршрутизатором, использующим виртуальные каналы, а также модернизировать для повышения пропускной способности при возможности.

Цели и задачи

Целью данной работы является создание HDL модели сети на кристалле для выбора оптимальных топологий, типов маршрутизаторов и параметров сети, тестирования различных компонентов СтнК, а также иметь возможность использовать модель для разработки прототипа на ПЛИС. Необходимо разработать маршрутизаторы, создать способ генерации передаваемых в сети данных, объединить все в одну рабочую модель с возможностью задавать ее параметры. Также требуются вспомогательные программы для создания таблиц маршрутизации маршрутизаторов, сбора статистики работы сети, автоматизированного запуска модели и тестов.

Описание методов решения

Требуется выполнить следующие этапы работы над проектом:

1. Разработка элементов сети на кристалле (компоненты маршрутизатора, полный маршрутизатор, модуль для соединений модуль для создания нагрузки сети);

2. Тестирование всех компонентов на соответствие ожидаемым выходным сигналам;

3. Сбор всех компонентов в полную модель и ее отладка. На этом этапе может поменяться логика работы компонентов, так как работа полной сети может не соответствовать ожидаемой;

4. Сбор статистики работы СтнК с различными параметрами и топологии. Анализ результатов.

Модель разработана на языке Verilog. Ее симуляция выполняется в среде Modelsim, однако модель может быть перенесена на другую. Для создания таблиц маршрутизации используются дополнительные программные средства на языке Python, но сама модель генерируется по параметрам сети. Для удобного запуска модели требуется разработать дополнительные скрипты. Модель будет разрабатываться от меньших элементов к большим и тестироваться на каждом уровне. В первую очередь будет реализован маршрутизатор с одним буфером как в статье [7], так как он является простым для разработки. Взаимодействие маршрутизаторов между собой происходит с помощью контрольных сигналов (in_r, in_w, out_r, out_w). Модули receiver and transceiver определяют, заполнен ли буфер, а также есть ли доступный маршрутизатор для чтения или записи флита. В них реализованы конечные автоматы, которые управляют маршрутизатором. Процесс передачи данных происходит по следующему алгоритму: каждый маршрутизатор ожидает, когда другой будет готов записывать данные. После этого он последовательно принимает флиты, блокируя другие порты для чтения. Они сохраняются в очередь до тех пор, пока требуемый маршрутизатор не будет доступен для записи. С помощью таблицы маршрутизации выбирается порт, на который отправится следующий флит. Порты маршрутизаторов объединены в общую шину для возможности увеличения их количества. На передачу флита через маршрутизатор требуется 3 такта. Алгоритмически будут заданы связи между маршрутизаторами в виде одной из регулярных топологий с возможностью считывания стороннего Verilog-файла с соединениями.

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

2. Разработка элементов СтнК

2.1 Структура системы

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

Данные представлены в виде пакетов, разбитых на составные части, называемые флитами. Структура флита, используемая в данной работе, представлена на рисунке 2. Он состоит из поля данных, конечного бита и адреса назначения.

Рисунок 2 – Структура флита.

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

2.2 Маршрутизатор

Маршрутизатор - это модуль, предназначенный для передачи пакетов с одного порта на другой с возможностью их хранения. В работе используется маршрутизатор, разработанный на основе работы [8]. Он состоит из входных портов, центрального буфера и выходных портов (рисунок 3).

Рисунок 3 – Структура маршрутизатора.

Модуль receiver отвечает за прием флитов из входных портов. В данной реализации будут использоваться 4 порта, однако модель позволяет изменить их количество с помощью параметра PORTS_NUM. Также у маршрутизатора есть дополнительный порт для связи с IP ядром. Каждый входной порт состоит из данных и служебных сигналов in_r и in_w. Изначально модуль находится в режиме ожидания и последовательно опрашивает все сигналы in_r. Когда на один из них приходит единица, это значит, что другой маршрутизатор готов передать пакет. После этого флиты последовательно принимаются и записываются в буфер, если он не заполнен. После приема каждого флита на сигнал in_w отправляется сигнал подтверждения получения. Флиты перестают приниматься при получении последнего, тогда receiver снова переходит в режим ожидания пакета.