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

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

В модуле СтнК изначально записываются параметры сети в файл логирования, чтобы можно было проще получить эту информацию. Также предусмотрена возможность досрочного завершения работы сети в случае прекращения ее работы. Это реализовано так, что если с шины модуля топологий 10000 тактов идет повторяющийся сигнал, то работа завершается с соответствующим сообщением. Также моделирование завершится досрочно, если все пакеты сгенерированы и переданы. За минимальную единицу времени принята 1 нс, на один такт уходит 2 нс.

2.7 Автоматизация запуска модели

Для автоматизации запуска моделирования написаны bat и tcl скрипты. Bat-скрипт принимает из консоли параметры для запуска модели. Затем он очищает рабочую папку для симуляции, если она сохранилась после предыдущего запуска. Генерируется файл таблицы маршрутизации с помощью python-скрипта. Запускается tcl-скрипт, в котором создается рабочая библиотека, компилируются все исходные файлы, запускается симуляция. После ее завершения Modelsim закроется самостоятельно.

Результатом работы модели является файл с логами работы сети. Его требуется обработать отдельным скриптом-парсером, который также написан на Python. Главная функция скрипта проходит по всему файлу, собирая информацию о параметрах сети, количество отправленных и полученных флитов и пакетов, их среднее время передачи, проверяет их целостность пакетов, адреса доставки, полное время работы модели. Временем работы модели является время получения последнего флита в сети. Изначально эта статистика собирается для каждого узла, затем суммируется в общую. Подсчитываются fir и pir. При этом обрабатываются ошибки в случае, если модель отработала некорректно и файл с логами дает заведомо неправильную информацию (например, если время моделирования или количество узлов равно 0). Результаты подсчета статистики форматированно выводятся в консоль и сохраняются в файл.

Пример файла со статистикой для топологии circulant представлен на рисунке:

Рисунок 13 – Рисунок 7. Файл со статистикой работы сети.

Так как в сети 25 узлов, на рисунке приведены полная статистика работы сети и статистика для 0 узла.

3. Тестирование модели

Для тестирования работы сети проводилось моделирование с 9 узлами. Каждый узел должен был сгенерировать 11000 пакетов. Экспериментально установлено, что время задержки генерации пакетов должно составлять 150 тактов. При меньшей задержке возникает deadlock, что приводит к остановке работы сети [13]. Результаты моделирования представлены в таблице 4.

Таблица 4 – Результаты моделирования сетей с 9 узлами.

Топология

mesh 3Ч3

torus 3Ч3

circulant С(9; 1, 2)

Среднее время доставки флита (в тактах)

47.71

23.25

23.64

Время моделирования (в тактах)

2135601

2091808

2093121

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

После отладки модели на сети с маленьким количеством узлов было проведено моделирование сети с 25 узлами. Использовалась задержка генерации пакетов в 300 тактов.

Таблица 5 – Результаты моделирования сетей с 25 узлами.

Топология

mesh 5Ч5

torus 5Ч5

circulant C(25; 1, 2)

Среднее время доставки флита (в тактах)

56.96

31.9

29.81

Время моделирования (в тактах)

3717561

3684439

3684114

Время моделирования, как и среднее время доставки, ожидаемо увеличилось, так как сумма пакетов для генерации стала 275000 вместо 99000.

4. Оптимизация параметров модели

4.1 Разработка вспомогательного ПО

Важнейшими показателями работы сети являются время моделирования и среднее время передачи пакета. Так как маршрутизатор в один момент времени может задействовать один порт, наибольшее влияние на пропускную способность сети оказывает параметр packet_delay, отвечающий за время задержки ввода пакета в сеть в тактах. Для анализа его влияния на сеть реализован скрипт на языке Python, строит графики зависимости времени моделирования и среднего времени передачи пакета от любого параметра. Так как Modelsim не может самостоятельно распараллеливать симуляцию, одновременно запускаются несколько симуляций с разными параметрами с помощью Pool из библиотеки multiprocessing [14].

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

Разработан скрипт для нахождения минимальной допустимой задержки ввода пакета в сеть. Из анализа графиков на рисунках 13-17 видно, что в точках, где сеть полностью передает отправленные пакеты, есть определенная зависимость. Аппроксимировать точки удалось с помощью функции:

(3)

Для поиска условного минимума функции потребуется ее производная:

(4)

Используя ее, можно уменьшить время минимизации параметра. Для этого разработан алгоритм:

1. Высчитывается первая точка (start_delay), в которой полностью переданы отправленные пакеты. Это происходит увеличением параметра на 1, параллельно выполняется сразу jobs_num (как правило, количество ядер процессора в используемом компьютере) симуляций. В тот момент, когда одна из точек подходит, итерирование прекращается.

2. Отрезок от start_delay до start_delay + 1000 делится на jobs_num точек. В них параллельно получаются точки, по которым будет происходить аппроксимация. Важно чтобы точек было больше 3.

3. По полученным точкам происходит аппроксимация функции (3). Для этого используется функция curve_fit из библиотеки scipy [15]. После ее выполнения получаются коэффициенты a, b, c, d, используя которые можно по формуле получать примерное среднее время моделирования по задержке.

4. Происходит поиск условных минимумов функции (3) по jobs_num точкам с помощью функции opt_n_points. Границы поиска от start_delay до start_delay + 1000. Для получения новых минимумов параметр эпсилон меняется по правилу:

(5)

Параметр eps_pow устанавливается при запуске алгоритма. В данном случае он равен 8. Индекс i итерируется для получения каждой новой точки. Каждый минимум проверяется передачей в 5 раз большим количеством пакетов. В случае нахождения точки переход к пункту 5.

5. Происходит одна итерация для поиска минимума от максимальной нерабочей задержки до минимальной рабочей. Индекс i в (5) итерируется от 0 до предыдущего i в квадрате. Полученные точки проверяются, и наименьшая из них является результатом работы алгоритма.

Ниже представлен алгоритм работы функции opt_n_points:

1. Отрезок от a до b делится на n-1 одинаковых отрезков. Из них исключаются возможные повторы.

2. Для каждого значения из отрезка высчитывается значение целевой функции (в данном случае это производная (4)).

3. Выбирается 1 и 2 условные минимумы. Они инициализируются первым и вторым значениями списка. Если разница между 1 минимумом и текущим значением больше eps, и минимум больше значения, то 1 минимум становится 2, а значение функции - 1 минимумом.

4. Функция рекурсивно применяется для отрезка от 1 до 2 минимума. Это происходит до тех пор, пока разница между значениями x больше 1. Возвращается 1 минимум.

4.2 Исследование зависимостей параметров сети

Для изучения выбраны 3 неоптимальных топологии (mesh 2Ч8, torus 2Ч8 и circulant ) и 3 оптимальных (mesh 4Ч4, torus 4Ч4, ring circulant [16]). Каждый узел должен сгенерировать 11000 пакетов для передачи. Ограничение времени моделирования равно 107 тактов. Графики зависимости среднего времени передачи пакета и времени моделирования от задержки ввода пакета в сеть представлены на рисунках 14-19.

Рисунок 14 – График зависимости среднего времени передачи пакета и времени моделирования от параметра pack_delay в топологии mesh 2Ч8.

Рисунок 15 – График зависимости среднего времени передачи пакета и времени моделирования от параметра pack_delay в топологии torus 2Ч8.

Рисунок 16 – График зависимости среднего времени передачи пакета и времени моделирования от параметра pack_delay в топологии circulant C(16, 1, 2).

Рисунок 17 – График зависимости среднего времени передачи пакета и времени моделирования от параметра pack_delay в топологии mesh 4Ч4.

Рисунок 18 – График зависимости среднего времени передачи пакета и времени моделирования от параметра pack_delay в топологии torus 4Ч4.

Рисунок 19 – График зависимости среднего времени передачи пакета и времени моделирования от параметра pack_delay в топологии circulant C(16; 1, 6).

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

Результаты нахождения минимальных задержек для тестовых топологий представлены в таблице 6.

Таблица 6 – Минимальные рабочие задержки.

Топология

mesh 4Ч4

mesh 2Ч8

torus 4Ч4

torus 2Ч8

circulant C(16; 1, 2)

circulant C(16; 1, 6)

Задержка (такт)

260

387

143

201

232

165

Среднее время передачи пакета (такт)

44.34

56.78

40.49

42.64

42.83

32.06

Из результатов моделирования следует, что параметры топологии сильно влияют на производительность сети. Так, у топологии mesh 2Ч8 неоптимальной формы среднее время передачи пакетов значительно выше, чем у mesh 4Ч4. При этом невозможно создать топологии mesh и torus с количеством узлов, не являющимся квадратом. В этом заключается преимущество топологии circulant перед ними. Также у топологий torus и mesh большие диаметр и средняя длина пути между узлами, по сравнению с circulant. Поэтому у топологии ring circulant наименьшее время передачи пакетов среди тестируемых топологий, и этот тип топологии с оптимальными образующими будет использоваться в дальнейших экспериментах.

Для изучения влияния количества узлов на задержку была проведена оптимизация топологий C(4; 1, 2), C(9; 1, 2), C(16; 1, 6), C(25; 1, 7), C(36; 1, 8), C(49; 1, 9), C(64; 1, 14), C(81; 1, 24), C(100; 1, 18) [16]. Для передачи использовалось только 5500 пакетов, так как с увеличением количества узлов значительно возрастает время моделирования, а для проверки минимальных задержек используется в 5 раз большее количество пакетов. При попытках моделирования СтнК с большим количеством было выявлено, что это занимает слишком много времени в связи с ограничениями производительности Modelsim [17]. Результаты оптимизаций представлены на рисунке 20.

Рисунок 20 – График зависимости минимальной задержки ввода пакета в сеть от количества узлов.

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

Для оценки зависимости среднего времени передачи пакетов от количества узлов взята минимальная задержка для сети со 100 узлами и проведено моделирование тех же параметров, что и в предыдущем опыте. Для передачи также использовалось 11000 пакетов.

Рисунок 21 – График зависимости среднего времени передачи пакетов от количества узлов при одинаковой задержке.

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

Выводы к разделу 5

Создан набор функций для работы с моделью на языке python для автоматизации работы с ней. На основе анализа графиков удалось получить функцию общего вида для ускорения оптимизации с минимальным количеством симуляций. С данными задержками через сеть с данными маршрутизаторами возможно передать любое (или достаточно большое) количество пакетов. Выявлено большое влияние типа топологии и ее параметров на производительность СтнК. Среди тестируемых наиболее удачной топологией оказалась ring circulant с оптимальными образующими. На основе полученных результатов можно делать выводы о зависимостях и оценивать параметры и результаты работы сетей различных конфигураций без проведения моделирования. Разработанная модель не является эффективной для симуляции работы сетей с большим количеством узлов, однако дает очень точные результаты и позволяет проверять и сравнивать показатели разных топологий и маршрутизаторов.

Заключение

В результате работы разработана HDL модель сети на кристалле. В ней доступно множество параметров для изменения. Модель поддерживает 3 топологии mesh, torus и circulant 2 порядка, а также возможность добавить собственный конфигурационный файл со связями маршрутизаторов.