Интернет-журнал «Науковедение» ISSN 2223-5167 https://naukovedenie.ru/
Том 9, №5 (2017) https ://naukovedenie. ru/vo l9-5.php
URL статьи: https://naukovedenie.ru/PDF/16TVN517.pdf
Статья опубликована 30.09.2017
Ссылка для цитирования этой статьи:
Шаршов А.В. Отказоустойчивая адаптивная маршрутизация пакетов с учетом состояния секторов виртуальных соседей в матричных многопроцессорных системах // Интернет-журнал «НАУКОВЕДЕНИЕ» Том 9, №5 (2017) https://naukovedenie.ru/PDF/16TVN517.pdf (доступ УДК 004.272.45 свободный). Загл. с экрана. Яз. рус., англ.
УДК 004.272.45
Шаршов Артем Владимирович
ФГБОУ ВО «Юго-западный государственный университет», Россия, Курск1
Аспирант
E-mail: [email protected]
Отказоустойчивая адаптивная маршрутизация пакетов с учетом состояния секторов виртуальных соседей в матричных многопроцессорных системах
Аннотация. В матричных многопроцессорных системах одной из важнейших характеристик, влияющей на производительность, является скорость обмена информацией между модулями. Такой обмен осуществляется с помощью коммуникационной среды -набором подключаемых к процессорам однотипных узлов (маршрутизаторов), соединенных в единую сеть. От выбора алгоритма маршрутизации пакетов в коммуникационной среде системы напрямую зависит величина этого показателя. В тоже время технологический процесс производства современной вычислительной техники на одном кристалле не может гарантировать полное отсутствие дефектов. По этой причине алгоритм должен учитывать возможность наличия отказов или дефектов в системе. В этой статье представлен алгоритм отказоустойчивой адаптивной маршрутизации, согласно которому маршрут определяется динамически в соответствии с информацией о длинах очередей соседних модулей и модулей, находящихся на расстоянии 2 от текущего (виртуальные соседи), а также об отказах этих модулей. Выполнен краткий обзор работ, вышедших в последнее время на данную тему. Дается подробное описание самого алгоритма, подкрепленное иллюстрациями и необходимыми пояснениями. Приведены результаты моделирования работы устройства, реализующего данный алгоритм. Согласно экспериментальным данным полученные показатели превосходят существующие аналоги в различных условиях.
Ключевые слова: многопроцессорные системы; матричная структура; отказоустойчивость; маршрутизация; направление; сектор; виртуальные соседи; очередь; надежность
Введение
Современные технологии производства СБИС позволяют размещать достаточно большое количество высокопроизводительных процессоров на одном кристалле [1]. При
1 305040, Россия, Курск, ул. 50 лет Октября, д. 94
выполнении распределенных задач в таких системах существует необходимость обмена информацией между процессорными элементами, например, для синхронизации вычислений. Данный обмен осуществляется в виде передачи пакетов данных через коммуникационную среду, к которой подключен каждый процессор. Быстродействие коммуникационной среды одна из важнейших характеристик систем такого класса, а решение задач, связанных с улучшением параметров межпроцессорного взаимодействия, находится среди наиболее приоритетных [2]. Также следует отметить, что даже самые современные технологии не позволяют производить СБИС с полным отсутствием дефектов, которые приводят к отказам. Таким образом, обеспечение дефекто- и отказоустойчивости многопроцессорных систем - это еще одно направление исследований в этой области [3].
Системы рассматриваемого класса, как правило, выполнены в виде набора однотипных модулей, подключенных к общей сети, называемой коммуникационной средой. Каждый модуль содержит процессор, элементы памяти, маршрутизатор и другие устройства (рисунок 1). Коммуникационная среда образуется путем соединения маршрутизаторов между собой по определенной топологии. Сами топологии весьма разнообразны. В качестве примера можно привести гиперкуб, решетки различной степени регулярности или дерево.
Рисунок 1. Структура узлов системы (составлено/разработано автором)
В ходе вычислений процессоры выполняют обмен информационными сообщениями между собой. Каждое сообщение для доставки от источника приемнику разбивается на пакеты. Задача по обеспечению межмодульного обмена пакетами информации возложена на маршрутизатор. Можно выделить следующие функции этого устройства: прием пакетов от своего процессора, вычисление направления передачи пакетов (как от своего процессора, так и транзитных) соседним маршрутизаторам по определенному алгоритму (маршрутизация), передача пакетов своему процессору (прием пакета). Таким образом, одним из путей увеличения быстродействия коммуникационной среды является совершенствование алгоритмов маршрутизации пакетов. Алгоритмы маршрутизации можно разделить на два вида:
детерминированные и адаптивные. В детерминированных алгоритмах маршрут передачи от источника к приемнику вычисляется при первом появлении пакеты в сети и остается неизменным на всем пути следования. Такие алгоритмы просты в реализации, однако плохо применимы в реальных условиях из-за возможности появления отказов или дефектов. Даже небольшое количество дефектных модулей при детерминированном алгоритме маршрутизации, как правило, приводит к полной потери работоспособности всей системы. Адаптивные алгоритмы предоставляют возможность перестроения маршрута в случае появления отказов или дефектов, а также при увеличении трафика на определенном участке пути.
Обзор литературы
За последнее время появилось достаточно много новых адаптивных отказоустойчивых алгоритмов маршрутизации. Так, например, в работах [4] и [9] предлагается алгоритм, в котором каждому пакету, в зависимости от направления следования назначается класс. При вычислении очередного направления выдачи пакета на выходные порты маршрутизации накладывается маска таким образом, что в определенном направлении можно передать только пакет определенного класса. Это позволяет избежать ситуаций, когда очередной пакет не может быть передан ни в одном из направлений. При наличии отказов и невозможности передать пакет в нужном направлении, класс пакета изменяется, чтобы пакет мог двигаться в противоположном направлении. При этом в модуле, откуда поступил пакет, на это направление маска накладывается таким образом, что пакеты в эту сторону больше не передаются. Недостатком этого алгоритма является отсутствие анализа загрузки очередей обработки в маршрутизаторах, что может привести к большим временным задержкам доставки пакета. Напротив, в работе [5] представлен алгоритм, который использует информацию о загруженности сети. Каждый маршрутизатор сохраняет данные о загрузки своих очередей в заголовок обрабатываемого пакета, и, таким образом, информация о трафике распространяется по другим модулям. Однако при таком подходе есть два существенных недостатка. Во-первых, если маршрутизатор не обрабатывал пакет, переданный из высоконагруженного участка сети, то путь может быть проложен не оптимально. Во-вторых, при большом соотношении размера коммуникационной среды к интенсивности трафика информация о загрузке в очередном пакете будет неактуальна. Также следует отметить, что алгоритм не учитывает возможность наличия отказов или дефектов в системе. Авторы работы [6] предлагают алгоритм отказоустойчивой маршрутизации, который учитывает загрузку очередей маршрутизаторов. Идея заключается в том, что область, где находится дефект, наиболее подвержена высокой нагрузке. Предлагается определение наличия такой области на пути пакета от источника к приемнику. Если дефекта нет, то выбирается минимальный путь. Если же присутствует дефект, то выполняется вычисление пути на основе индекса загруженности очередей. При этом информация о наличии дефекте хранится в таблице маршрутизации каждого модуля. Тем не менее, использование таблиц маршрутизации, как правило, приводит к увеличению аппаратной сложности устройства маршрутизатора. Данный алгоритм наиболее близок к алгоритму, представленному в этой статье, однако, как будет отмечено позже, проигрывает в быстродействии. Алгоритм, предложенный в работе [7], основан на том, что в большинстве случаев, самыми загруженными узлами коммуникационной среды являются центральные модули. Предлагается простой алгоритм распределения нагрузки, при котором пакет, находящийся в определенной области и имеющий минимальный путь к приемнику через центральную область сети, будет направлен через менее загруженные участки, расположенные по краям. Такой подход имеет очевидный недостаток в том, что в нем не учитывается возможность наличия отказов в областях, через которые предполагается прокладывать маршрут. Таким образом, в условиях наличия дефектов или отказов коммуникационная среда может полностью утратить свою работоспособность. В
отказоустойчивом алгоритме, описанном в [8], направление выдачи определяется на основе информации об отказах или дефектах узлов, находящихся на расстоянии 2 от текущего. Также при выборе из нескольких возможных вариантов используются данные о загруженности соседних модулей. Однако длина очередей только соседнего модуля может быть нерепрезентативной относительно трафика всей сети.
Описание алгоритма отказоустойчивой адаптивной маршрутизации пакетов с учетом состояния секторов виртуальных соседей в многопроцессорных СБИС-системах (УССВС)
В этой статье предлагается алгоритм маршрутизации для топологии восьмирегулярной решетки (рисунок 2а). Это означает, что каждый маршрутизатор имеет внешние соединения с восемью своими соседями в направлениях восток, северо-восток, север, северо-запад, запад, юго-запад, юг, юго-восток. Закодируем эти направления цифрами от 0 до 7 в порядке их перечисления (рисунок 2б). Также маршрутизатор имеет буферные блоки (очереди) соответствующие каждому направлению для хранения входящих пакетов, ожидающих обработки и один буферный блок для пакетов, поступающих от собственного процессора.
2
з 1
4"—ГШ—
О , 7
б
б)
Рисунок 2. Топология коммуникационной среды (а), кодировка направлений (б) (составлено/разработано автором)
Предлагаемый алгоритм является вариантом адаптивной ХУ маршрутизации, когда направление передачи пакета определяется динамически каждым модулем в зависимости от окружающей обстановки, а адрес модуля приемника задается двумя координатами. Основная идея алгоритма заключается в том, что при выборе направления выдачи пакета на очередном этапе передачи от источника к приемнику выполняется сравнение суммарных длин очереди соседнего модуля в выбранном направлении и очередей трех модулей, находящихся на расстоянии 2 от текущего (виртуальных соседей). Такой подход должен позволить выбрать оптимальный маршрут доставки пакета через наименее загруженные участки коммуникационной среды. Передача информации о длинах очередей, суммарных длинах очередей и непосредственно пакета предполагается осуществлять по одним и тем же физическим линиям в трех тактах в режиме мультиплексирования. Определение выдачи направления осуществляется в трех режимах: нормальном, обхода и компенсации.
Когда пакет поступил в обработку, маршрутизация начинается с определения сектора направлений выдачи. Сектор состоит из основного направления и двух второстепенных, смежных по отношению к основному. Основное направление выбирается на основании результатов сравнения адресов модуля-приемника и текущего модуля. Формально определение основного направления выдачи можно представить как результат вычисления функции маршрутизации (1), аргументами которой являются две пары координат адресов, а значением - код основного направления г. При этом, если пакет достиг приемника, то он должен быть
направлен процессорному закодируем цифрой 8.
элементу через внутренние соединения. Это направление
(0, если х > х1,у = у1
1, если х > х1,у > у1
2, если х = хх,у > у1
3, если х < хх,у <у1
4, если х < хх,у > у1
5, если х < хх,у = у1
6, если х = хх,у <у1
7, если х > хх,у < у1;
8, если х = х1, у = у]_,
z = RoutingFunc(x,x1,y,y1) = <
(1)
где: х,у - координаты модуля-приемника, а х1,у1 - координаты текущего модуля. Второстепенные же направления z' и z" определяются по формулам (2) и (3).
z' = (z + 7) mod 8; z'' = (z + 9) mod 8.
(2) (3)
Далее на основе информации о суммарной загрузке очередей соседних модулей в выбранных направлениях и очередей виртуальных соседей в секторах, определенных как если соответствующее направление является основным. Получение суммарной длины 5(гх) можно выразить формулой:
Б(гп) = Ь(гп +4)той8 + У(гп+3)той8 + ^(гп+4)той8 + У(гп+5)той8, (4)
где: гп - анализируемое направление, Ь2п - длина очереди соседнего модуля в направлении гп, У2п - длина очереди модуля, который является соседом соседа (виртуальный сосед) в направлении гп.
Наглядно анализ секторов направлений продемонстрирован на рисунке 3.
Рисунок 3. Анализ секторов направлений (составлено/разработано автором)
Определение итогового направления выдачи в нормальном режиме представим в виде функции выбора направления в нормальном режиме (5), аргументами которой выступают полученные значения суммарных длин очередей, а значением - код направления выдачи га°.
z®0 = SelFunc (S(z),S(z'),S(z'')) =
z, если S(z) < S(z') A S(z) < S(z''); z', если S(z) > S(z') A S(z') < S(z''); z", если S(z) > S(z'') A S(z') > S(z'').
(5)
В условиях наличия отказов или дефектов информация о загруженности буферных блоков отказавших модулей будет недостоверна. Также в модулях соседних с отказавшим может возникнуть скопление пакетов в очередях. По этой причине необходимо маскировать направления с отказавшими модулями. Примем длину очереди отказавшего модуля как максимально возможную Ъ^аии
= Ьтах. Скорректируем функцию выбора:
(6)
SelFunc (S(z),S(z'),S(z'')) =
z, если S(z) < S(z') A S(z) < S(z'') A S(z) ^ Lmax; z', если S(z) > S(z') A S(z') < S(z'') AS(z') Ф Lmax; z'', если S(z) > S(z'') A S(z') > S(z'') AS(z'') ± Lmax; FaultSelFunc(F(z), F(z'), F(z'')) иначе,
где: FaultSelFunc(F(z), F(z'), F(z'')) - функция выбора в условиях наличия отказов во всех направлениях в секторе, а F(zn) - сумма значений приоритета отказавших виртуальных модулей.
Присутствие отказавших модуля среди виртуальных соседей еще не означает, что в данном направлении нельзя осуществлять передачу пакета. Запрещено выполнять выдачу только отказавшему модулю. Так как направления в секторе неравнозначны, определим значение приоритета Priority(z™v) каждому виртуальному соседу:
Priority(zz) = 1;
Priority(zZ') = Priority(zZ") = 2;
Priority (z' z) = Priority (z" z) = 2;
Priority(z' Z') = Priority(z'' zn) = Priority(z) = 5;
Priority(z') = Priority(z'') = 9,
где: zv обозначает направление, в котором располагается виртуальный сосед относительно соседнего модуля в направлении zn. Расстановка значений приоритета показана на рисунке 4. При этом условимся, что если модуль не отказал, то его приоритет равен 0.
Рисунок 4. Значения приоритета в секторах (составлено/разработано автором)
Соответственно значения F(zn) будут равны
F(z) = Priority(zz) + Priority(zZ') + Priority (zz") + Priority(z); F(z') = Priority (zz') + Priority(z' z) + Priority (z' z') + Priority(z'); F(z'') = Priority (zzn) + Priority (z''z) + Priority (z'' Z") + Priority(z'').
(7)
(8) (9)
Исходя из этого, можно дать определение функции выбора в условиях наличия отказов во всех направлениях в секторе:
= Раии5е1Рипс(Р(г),Р(г'),Р(г'')) = г,если Р(г) < Р(г') АР (г) < Р(х'')АР(х) < 5;
г', если Р(г) > Р(г') А Р(г') < Р(г") А Р(г') < 4; (ю)
= < г'', если Р(г) > Р(г") А Р(г') > Р(г") А Р(г") < 4;
гйеу = 2; г' = (г' + 8 — йер)той8; г" = (г" + 8 + йер)той8; у ТоВура555е1Рипс(Р(г'~),Р (г''У)
где: ТоВуразз5е1Рипс(Р (г'),Р (г'')) - функция выбора направления при переходе в режим обхода, а йер - значение поля ёеу из структуры пакета.
i; )
иначе,
Чтобы описать выбор направления в режиме обхода необходимо дать описание структуры пакета (рисунок 5). Каждый пакет включает в себя следующие поля:
I - информационная часть;
X - координата модуля приемника X;
Y - координата модуля приемника Y;
mode - код режима передачи пакета;
sign - бит, определяющий направление обхода (0 - прямое направление, 1 - обратное);
turn - бит направления, выбранного для обхода (0 - по часовой стрелке, 1 - против);
z_main - трехразрядный код основного направления, от которого выполняется отклонение (значениеРоиЫпдРипс(х, х1, у, у1));
dev - степень отклонения от основного направления;
x_flag - флаг, сигнализирующий о переходе, через ось Хотносительно модуля-приемника в режиме отклонения;
y_flag - флаг, сигнализирующий о переходе, через ось Yотносительно модуля-приемника в режиме отклонения;
r_x - степень отклонения от оси Хотносительно модуля-приемника;
r_y - степень отклонения от оси Yотносительно модуля-приемника;
axis_count - счетчик переходов через оси координат относительно модуля-приемника в режиме обхода.
Рисунок 5. Структура пакета (составлено/разработано автором)
При переходе в режим обхода выбираются два новых направления для анализа (рисунок 6а). Для этого, полю ёеу присваивается значение 2, после чего вычисляются новые направления.
Далее по (8) и (9) определяются новые значения Р(г') и Р(г"). Теперь можно определить функцию выбора направления при переходе в режим обхода:
(11)
za° = ToBypassSelFunc(F(z),F(z'),F(z'')) =
(z', если ((F(z') < F(z'') A sign = 0) V (sign = 1 A turn = 0)) AF(z') < 9; z", если ((F(z') > F(z'')Asign =0) V (sign = 1 A turn = 1))AF(z'') < 9; ( dev = dev + 1;z' = (z' + 8- dev)mod8; z" = (z" + 8 + dev)mod8; ToBypassSelFunc(F(z'), F(z''))) , если dev < 4; доставка не возможна, фатальный отказ, иначе
Соответственно, если в новых направлениях передача невозможна, то выполняется вычисления очередных направлений (рисунок 6б). При этом если sign = 1, то направление выбирается только в зависимости от значения turn. Когда dev будет равен 4, выполнится анализ направления, противоположному основному направлению z (рисунок 6в). Если в этом направлении значение F(zn) будет равно 9, то доставка пакета невозможна. В данном случае процессорные элементы текущий и соседние с ним признаются отказавшими и сеть продолжает работать в условиях наличия дефектной области.
Рисунок 6. Итерации анализа новых направлений; первая (а), вторая (б), третья (в) (составлено/разработано автором)
При переходе в режим обхода значение dev сохраняется в одноименное поле, в поле то^еустанавливается значение 01, а также полю turn присваивается значение 0, если выбрано направление z', если выбрано z", то 1. В полег_тат сохраняется код основного направления z.
В режиме обхода маршрутизация происходит по следующему принципу: производится попытка выдать пакет в таком направлении, чтобы сократить отклонение на 1. Для этого, значение dev уменьшается на 1:
dev = dev — 1;
Если значение dev становится меньше 0, то происходит выход из режима обхода. Функцию выхода из режима обхода выведем позже, а пока определим функцию маршрутизации в режиме обхода:
z = BypassRoutingFunc(z_main, dev, turn) = (z_main + (2turn — 1)dev + 8)mod8. (12)
Далее проверяется возможность выдачи пакета в направлении z на основании значения F(z), вычисляемого по формуле (7). При этом Priority(z) = 9. Здесь виртуальный сектор направлений zz, zz' и zZff и значение приоритета для этих направлений Priority(z2), Priority(zz,) и Priority(zz") определяются следующим образом:
zz = (z_main + (2turn — l)dev + Q)modQ;
Zz' = (Zz + (2turn — l) + 8)mod8; zzrr = (zz + 2(2turn — l) + 8)mod8;
Priority(zz) = Priority(zzl) = 2;
Priority (zz") = 5.
Наглядно определение виртуального сектора направлений в режиме обхода показано на рисунке 7.
Рисунок 7. Определение сектора в режиме обхода (составлено/разработано автором)
Если выдача пакета в направлении z возможна F(z) < 9, то она осуществляется. В противном случае, выполняется проверка возможности выдачи пакета в направлении (z + (2turn — l) + 8)mod8. И так далее, пока не будет выбрано направление или значение dev не будет больше 4. Определим функцию выбора направления в режиме обхода:
z^0 = BypassSelFunc(F(z))
ExitFromBypass( ), если dev < 0; z, если F(z) <9 A dev > 0 A dev < 4; z = (z + (2turn — l) + 8)mod8; \ (13)
= < = + l; BypassSelFunc(P(z))),eC™ dev < 4 (sign = l; ToNormalMode( ), если dev > 4 A sing = 0; доставка не возможна, фатальный отказ, иначе.
где: ExitFromBypass() функция выхода из режима обхода, ToNormalMode() функция перехода в нормальный режим.
Также на каждой итерации передачи выполняется вычисление отклонение от осей координат относительно модуля-приемника. Это необходимо для того, чтобы не произошло зацикливание пакета в сети. Если не учитывать факт такого отклонения, то при определенном распределении дефектных областей при очередном переходе в режим обхода может быть выбрано направление обхода, обратное предыдущему. Пакет вернется к месту, где возник предыдущий переход в режим обхода. Таким образом, пакет может никогда не достичь модуля -приемника.
Алгоритм 1: Вычисление отклонение от осей координат относительно модуля-приемника (составлено/разработано автором)
Алг Вычисление отклонения от осей
Если у = у1 и (га° = 1 или га° = 2 или га° = 3), то
х_йа§=01
Если у_йа§ = 01 или у_йа§ = 11, то
Если ах1в_соиШ = 11, то ФАТАЛЬНЫЙ ОТКАЗ() ах1Б_соип = ах1Б_соип + 1 Все-Если
Если-Иначе у = у1 и (га° = 5 или га° = 6 или га° = 7), то
х_йа§=11
Если у_йа§ = 01 или у_йа§ = 11, то
Если ах1в_соиШ = 11, то ФАТАЛЬНЫЙ ОТКАЗ() ах1Б_соип = ах1Б_соип + 1 Все-Если Все-Если
Если х = х1 и (га° = 7 или га° = 0 или га° = 1), то
у_йа§=01
Если х_йа§ = 01 или х_йа§ = 11, то
Если ах1Б_соит = 11, то ФАТАЛЬНЫЙ ОТКАЗ() ах1Б_соип = ах1Б_соип + 1 Все-Если
Если-Иначе х = х1 и (га° = 3 или га° = 4 или га° = 5), то
у_йа§=11
Если х_йа§ = 01 или х_йа§ = 11, то
Если ах1Б_соит = 11, то ФАТАЛЬНЫЙ ОТКАЗ() ах1Б_соип = ах1Б_соип + 1 Все-Если Все-Если
Если х_йа§ = 01 и (га° = 1 или га° = 2 или га° = 3), то г_х = г_х + 1 Если х_йа§ = 01 и (га° = 5 или га° = 6 или га° = 7), то г_х = г_х - 1 Если х_йа§ = 11 и (га° = 1 или га° = 2 или га° = 3), то г_х = г_х - 1 Если х_йа§ = 11 и (га° = 5 или га° = 6 или га° = 7), то г_х = г_х + 1
Если = 01 и (гдо = 7 или гдо = 0 или гдо = 1), то г_у = г_у + 1
Если y_flag = 01 и (гдо = 3 или гдо = 4 или гдо = 5), то г_у = г_у - 1 Если y_flag = 11 и (гдо = 7 или гдо = 0 или гдо = 1), то г_у = г_у - 1 Если y_flag = 11 и (гдо = 3 или гдо = 4 или гдо = 5), то г_у = г_у + 1
Если r_x = 0, то
x_flag = 00
Если y_flag = 00, то axis_count = axis_count - 1
Все-Если
Если г_у = 0, то
= 00
Если x_flag = 00, то axis_count = axis_count - 1 Все-Если
Кон Алг Вычисление отклонения от осей
Информация об отклонении хранится в полях пакета x_flag, y_flag, r_x, г_у, axis_count. Когда происходит пересечение оси координат относительно модуля приемника, выставляется соответствующий флаг. Также увеличивается на 1 счетчик количества пересечений axis_count. Если произойдет пересечение оси в четвертый раз, это значит, пакет доставить невозможно, и сеть признается отказавшей. При этом если происходит пересечение в обратном направлении, значение счетчика уменьшается на 1. Изменение значений x_flag, y_flag, r_x, г_у, axis_count показано на рисунке 8.
Рисунок 8. Изменение значений х_flag, у_flag, г_х, г_у, ах1$_еоиМ (составлено/разработано автором)
Определим функцию перехода в нормальный режим и функцию выхода из режима
обхода:
ToNormalMode( ) = SelFunc (S(z), S(z'), S(z'')) ,при z = RoutingFunc(x,x1,y,y1);
z' = (z+ 7) mod 8; z" = (z + 9) mod 8
axis_count = r_x = r_y = x_flag = y_flag = 0;
(ToNormalMode( ~),если x_flag = 0 Ay_flag = 0; { ToCompensationMode( ), иначе.
(14)
где: ToCompensationMode( ) функция перехода в режим компенсации.
Как уже отмечалось выше, чтобы избежать зацикливания необходимо учитывать отклонение от осей координат относительно модуля-приемника. Передача в режиме компенсации отличается от передачи в нормальном режиме тем, что при необходимости, обход будет осуществляться в направлении turn. Определим функцию перехода в режим компенсации:
ToCompensationMode( ) = CompensationSelFunc (S(z),S(z'),S(z'')) , при z = RoutingFunc(x,x1,y,y1); z' = (z + 7) mod 8;z" = (z + 9) mod 8,
()
(15)
где: СотрепзаХЬопБе^ипс (5(г),5(г'),5(г'')) функция выбора направления в режиме компенсации.
Определим аналоги функций Бе1Рипс (Б(г),Б(г'),Б(г")),
Раи115е1Рипс(Р(г),Р(г'),Р(г'')), ТоВуразз5е1Рипс(Р (г'), Р(г''У):
СотрепзаЫопБе^ипс (Б(г),5(г'),5(г'')) =
г, если Б (г) < Б(г') А Б (г) < Б(г'')АБ(г) Ф Ьтах; г', если Б(г) > Б(г') А Б(г') < Б(г'')АБ(г') Ф 1тах; г'', если Б(г) > Б(г'') А Б(г') > Б(г'') А Б(г'') Ф Ьтах; .СотрепзаЫопРаиИБеШипс^(г),Р(г'), Р(г'')) иначе.
Сотреп5аИопРаиИБе1Рипс(Р(г),Р(г'), Р(г'')) =
г, если Р(г) < Р(г') АР (г) < Р(г'')АР(г) < 5; г'.если Р(г) > Р(г') А Р(г') < Р(г'')АР(г') < 4; г'', если Р(г) > Р(г'') А Р(г') > Р(г'') А Р(г'') < 4; йеу = 2;г' = (г' + 8 — йеу)той8-\
г" = (г" + 8 + dev)mod8■; ), если х_[1ад = 0 А у_[1ад = 0; ТоВураБ55е1Рипс(Р(г'),Р(г'')) )
еу = 2; г' = (г' + 8 — йеу)той8; г'' = (г'' + 8 + йеу)той8;\
(16)
Л ToBypassFormCompsationSelFunc(F(z'), F(z''))
)
иначе,
ToBypassFormCompsationSelFunc(F(z),F(z'),F(z'')) =
г'.если turn = 0 A F(z') < 9; z", если turn = 1 A F(z'') < 9;
(dev = dev + 1;z' = (z' + 8- dev)mod8; \
z" = (z" + 8 + dev)mod8; ), если dev < 4;
ToBypassFormCompsationSelFunc(F(z'),F(z'')) J
(sing = 1;ToNormalMode( )), если sing = 0 доставка не возможна, фатальный отказ, иначе
(17)
Как видно из (16) и (17), что при переходе в режим обхода из режима компенсации, если компенсация завершилась (x_flag =0 и y_flag = 0), то для определения направления выдачи используется функция выбора направления при переходе в режим обхода, которая анализирует два возможных направления. В противном случае используется функция ToBypassFormCompsationSelFunc(F(z'), F(z'')), выполняющее проверку только одного направления, на которое указывает turn. Если обход в эту сторону невозможен, то осуществляется смена направления обхода и переход в нормальный режим. В режиме компенсации на каждой итерации также происходит вычисление отклонения от осей координат относительно модуля-приемника по алгоритму 1.
Результаты эксперимента
Эксперимент выполнен в среде моделирования VisualQChartSimulator [10], в которой работа устройства на базе представленного алгоритма была описана на языке Q-схем [11]. Моделирование проводилось в коммуникационной среде 8x8 с топологией восьмирегулярной решетки со случайным трафиком. Случайный трафик подразумевает, что каждый модуль генерирует пакет в среднем за определенный промежуток времени по экспоненциальному закону распределения. При этом адрес модуля приемника выбирается случайно. Моделирование выполнялось в течение 10000 циклов. Вычислены средние значения показателей на основе 100 сессий моделирования для каждого изменяемого показателя.
Оценка быстродействия
В качестве показателя быстродействия выбрано среднее время передачи пакета от источника к приемнику в зависимости от интенсивности трафика пакет/тактов. Сравнение выполняется с алгоритмами MUGEN [8], ESPADA [4] и PDA-FTR [6], наиболее близкими к представленному в этой статье. Результаты оценки быстродействия MUGEN, ESPADA и PDA-FTR опубликованы в соответствующих работах. График зависимости показан на рисунке 9.
Интенсивность потока пакетов (пакет/тактов)
Рисунок 9. График оценки быстродействия (составлено/разработано автором)
Результаты эксперимента показывают, что насыщение сети (ситуация, когда сеть перестает справляться с трафиком, в результате чего время доставки пакета становится неприемлемо большим) происходит при более высокой интенсивности потока пакетов (0,04), чем в алгоритмах PDA-FTR (0,25) и MUGEN (0,25). При применении техники ESPADA
насыщение сети наступает при показателях интенсивности потока 0,05, однако, при более низких показателях среднее время доставки пакета больше - при интенсивности 0,005 в 2 раза при 0,025; в 1,5 раза; при интенсивности 0,35 в 1,1 раза.
Оценка надежности
Показатель надежности будем вычислять как 100 минус количество потерянных пакетов по отношению к общему числу, отправленных в сеть. Для сравнения выберем отказоустойчивую маршрутизацию ESPADA. Зависимость процентного показателя надежности от количества отказавших модулей для представленного алгоритма и ESPADA по результатам моделирования демонстрирует гистограмма на рисунке 10.
■
1
-1
99,5
Í 99 и 0 1
£ 98,5 та X
Ss 38 97,5
0 5 10 12,5 15 17,5 20 % отказавших модулей 25
Рисунок 10. Гистограмма оценки надежности (составлено/разработано автором)
Гистограмма наглядно показывает, что снижение надежности сети, работающей на основе представленного алгоритма, отмечается только при более 17,5 % отказавших модулей от общего количества. При применении техники ESPADA уже при 10 % отказов количество потерянных пакетов отлично от нуля.
Заключение
В современных матричных многопроцессорных СБИС-системах неравномерная нагрузка на буферные блоки модулей оказывает большое влияние на производительность. Неизбежное возникновение дефектов и отказов также является существенным фактором, приводящим к разбалансированию трафика в коммуникационной среде системы. Представленный алгоритм адаптивной отказоустойчивой адаптивной маршрутизации имеет высокие показатели быстродействия и надежности, что подтверждается результатами моделирования. Таким образом, применение этой техники позволит более равномерно распределить нагрузку на коммуникационную среду, тем самым расширив область применения систем рассматриваемого класса.
ЛИТЕРАТУРА
1. Olofsson A. Epiphany-V: A 1024 processor 64-bit RISC System-On-Chip // Adapteva Inc., 2016.
2. Dally W., Towles B. Principles and practices of Interconnection Networks // Morgan Kaufmann Publishers Inc., San Francisco, 2003. - 550 с.
3. Radetzki M., Feng C., Zhao X., Jantsch A. Methods for Fault Tolerance in Networks-on-Chip // ACM Computing Surveys, V. 46. № 1. 2013. P. 1-38.
4. Charif A., Zergainoh N. E., Nicolaidis M. A new approach to deadlock-free fully adaptive routing for high-performance fault-tolerant NoCs // 2016 IEEE International Symposium on Defect and Fault Tolerance in VLSI and Nanotechnology Systems (DFT), Storrs, CT, USA, 2016. P. 121-126.
5. Nosrati N., Shahhoseini H.S. G-CARA: A Global Congestion-Aware Routing Algorithm for traffic management in 3D networks-on-chip // 2017 Iranian Conference on Electrical Engineering (ICEE), 2017. P. 2188-2193.
6. Yu-Yin Chen, En-Jui Chang, Hsien-Kai Hsin, Kun-Chih (Jimmy) Chen, An-Yeu (Andy) Wu. Path-Diversity-Aware Fault-Tolerant Routing Algorithm for Network-on-Chip Systems // IEEE Transactions on Parallel and Distributed Systems. 2017. V. 28. № 3. P. 838-849.
7. Rohbani N., Shirmohammadi Z., Zare M., Miremadi S.G., LAXY A Location-Based Aging-Resilient Xy-Yx Routing Algorithm for Network on Chip // IEEE Transactions -on Computer-Aided Design of Integrated Circuits and Systems, V.99. 2017. P. 1.
8. Charif A., Zergainoh N. E., Nicolaidis M. MUGEN: A High-Performance Fault-Tolerant Routing Algorithm for Unreliable Networks-on-Chip // 2015 IEEE 21st International On-Line Testing Symposium (IOLTS), 2015. P. 75-76.
9. Charif A., Coelho A., Zergainoh N. E., Nicolaidis M. MINI-ESPADA: A Low-Cost Fully Adaptive Routing Mechanism for Networks-on-Chips // 2017 18th IEEE Latin American Test Symposium (LATS), 2017. P. 1-4.
10. Свидетельство о регистрации программы для ЭВМ №2006610308. Библиотека классов для имитационного моделирования коммуникационных сетей / Э. И. Ватутин, И. В. Зотов (РФ). - М.: РосПатент; заявлено 22.10.2005; дата регистрации 16.01.2006.
11. Советов Б. Я., Яковлев С. А. Моделирование систем: учеб. пособие. М.: Высшая школа, 2005. - 343 с.
SharshovArtemVladimirovich
South-West state university, Russia, Kursk E-mail: [email protected]
Virtual-neighbor-state-aware fault-tolerant adaptive packet routing in mesh-connected multiprocessor systems
Abstract. The interprocessor data exchange rate is one of the key features affecting mesh-connected multiprocessor system performance. A communication network is employed to support such data transfer, which consists of identical nodes (routers) linked to the corresponding processor units. The data exchange rate directly depends on the packet routing procedure performed by the communication network. At the same time, existing VLSI technologies are unable to guarantee defect-free chip manufacturing process. This means that the presence of unhealthy components must be taken into account whichever routing algorithm is utilized. This paper presents a fault-tolerant algorithm for adaptive packet routing, which constructs routing paths across the communication network taking into account how many packets have been accumulated in direct neighbors and 2-steps-away indirect neighbors (virtual neighbors) of the current node, and checking out whether these nodes are healthy or not. A brief overview of existing work that has been done recently is given. The proposed routing algorithm is detailed, illustrated and discussed. Simulation results are presented for a communication node implementing the proposed algorithm. The results obtained demonstrate that our algorithm improves the main parameters compared to existing routing methods.
Keywords: multiprocessor systems; mesh topology; fault tolerance; routing; direction; sector; virtual neighbors; queue; reliability