диссертацию - Юго-Западный государственный

advertisement
ЮГО-ЗАПАДНЫЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
На правах рукописи
БРЕДИХИН РУСЛАН ВЛАДИМИРОВИЧ
МЕТОД И АППАРАТНЫЕ СРЕДСТВА БАРЬЕРНОЙ
СИНХРОНИЗАЦИИ ОДНОКРИСТАЛЬНЫХ МАТРИЧНЫХ
МУЛЬТИКОМПЬЮТЕРОВ НА ОСНОВЕ ВИРТУАЛЬНОМНОГОСЛОЙНОЙ КОНВЕЙЕРНОЙ КООРДИНИРУЮЩЕЙ
СРЕДЫ
05.13.05 – Элементы и устройства вычислительной техники
и систем управления
Диссертация на соискание ученой степени
кандидата технических наук
НАУЧНЫЙ РУКОВОДИТЕЛЬ
доктор технических наук,
профессор ЗОТОВ И.В.
КУРСК 2014
2
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
4
1. АРХИТЕКТУРА И КООРДИНАЦИОННЫЕ ПРОЦЕССЫ
ОДНОКРИСТАЛЬНЫХ МАТРИЧНЫХ МУЛЬТИКОМПЬЮТЕРОВ
1.1.
Особенности
архитектуры
однокристальных
10
матричных
мультикомпьютеров
10
1.2. Координационные процессы в мультикомпьютерах. Процедура
барьерной синхронизации
13
1.3. Методы, процедуры и средства барьерной синхронизации
17
Выводы
31
2. ОРГАНИЗАЦИЯ БАРЬЕРНОЙ СИНХРОНИЗАЦИИ НА ОСНОВЕ
ВИРТУАЛЬНО-МНОГОСЛОЙНОЙ КОНВЕЙЕРНОЙ
КООРДИНИРУЮЩЕЙ СРЕДЫ
2.1.
Принципы
32
организации
виртуально-многослойной
координирующей среды
2.2.
Концептуальный
32
базис
разработанного
метода
барьерной
синхронизации
34
2.3. Особенности разработанного метода барьерной синхронизации
41
2.3.1. Определение индикаторных функций и условий синхронизации
41
2.3.2. Определение топологии физических слоев координирующей среды
44
2.3.3.
Определение
логической
конфигурации
физических
слоев
координирующей среды
46
2.3.4. Виртуализация физических слоев координирующей среды
51
2.3.5.
Определение
логической
конфигурации
виртуальной
координирующей среды
2.3.6.
Организация
55
тактовой
синхронизации
виртуальной
координирующей среды
61
2.3.7. Инвариантность разработанного метода к конфигурации
барьерных групп
63
3
Выводы
65
3. СТРУКТУРНО-ФУНКЦИОНАЛЬНАЯ ОРГАНИЗАЦИЯ
РАСПРЕДЕЛЕННОЙ КООРДИНИРУЮЩЕЙ СРЕДЫ С
ВИРТУАЛЬНЫМИ КАНАЛАМИ
67
3.1. Синтез базовой схемы ячейки координирующей среды
67
3.2. Синтез схемы ячейки координирующей среды с виртуальными
каналами
70
3.3. Синтез схемы ячейки координирующей среды с многоразрядными
виртуальными каналами
77
3.4. Оценка аппаратной сложности ячейки координирующей среды и
гибкости разработанных аппаратных средств
93
Выводы
99
4. ИССЛЕДОВАНИЕ ФУНКЦИОНИРОВАНИЯ РАЗРАБОТАННОЙ
ЯЧЕЙКИ В СОСТАВЕ КООРДИНИРУЮЩЕЙ СРЕДЫ МАТРИЧНОГО
МУЛЬТИКОМПЬЮТЕРА
100
4.1. Методика проведения исследований
100
4.2. Особенности используемого языка имитационного моделирования
102
4.3.
Особенности
используемых
инструментальных
средств
имитационного моделирования
104
4.4. Результаты имитационного моделирования
110
Выводы
113
ЗАКЛЮЧЕНИЕ
114
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
116
ПРИЛОЖЕНИЕ 1 – Листинг управляющей подпрограммы, реализуемой
обобщенными массовыми контроллерами при моделировании
координирующей среды.
129
ПРИЛОЖЕНИЕ 2 – Акты о внедрении результатов диссертации
139
4
ВВЕДЕНИЕ
Актуальность работы. Межпроцессорные взаимодействия являются
одним из критических факторов, сдерживающих рост производительности параллельных вычислительных систем. Подобные взаимодействия весьма разнообразны по характеру и охватывают широкий спектр действий: от простейших
попарных обменов скалярными данными до весьма сложных распределенных
коллективных операций.
К числу важнейших коммуникационных процедур, выполняемых в ходе
межпроцессорного взаимодействия в системах различных архитектурных классов, относится барьерная синхронизация. Барьерная синхронизация является не
только одним из часто встречающихся видов межпроцессорного взаимодействия, но и считается базовой коммуникационной операцией параллельных
программ, разрабатываемых в соответствии с современными стандартами параллельного программирования.
Практика показывает, что барьерная синхронизация значительно снижает
степень параллелизма программ и, следовательно, производительность вычислительных систем, из-за необходимости ожидания процессами завершения
синхронизации. Учитывая невозможность исключения барьеров из большинства параллельных программ, основные усилия исследователей и разработчиков в настоящее время направлены на минимизацию времени, затрачиваемого в
среднем на один барьер (т.н. среднего времени барьерной синхронизации).
Вопросами организации межпроцессорного взаимодействия в параллельных системах занимались многие отечественные и зарубежные ученые, в частности, А.В. Каляев, И.В. Каляев, В.В. Воеводин, Вл.В. Воеводин, А.В. Корнеев,
И.И. Левин, А.П. Типикин, И.В. Зотов, E.D. Brooks, D.K. Panda, J. Wu, M.
O’Keefe, W.E. Cohen и др. За последние три десятилетия было разработано широкое многообразие методов, процедур и средств барьерной синхронизации,
используемых на различных уровнях параллелизма и ориентированных на параллельные вычислительные системы разных архитектурных классов. Для си-
5
стем
рассматриваемого
класса
наиболее
перспективны
аппаратно-
ориентированные методы распределенной барьерной синхронизации, обладающие наилучшими скоростными характеристиками и адаптированные к СБИСреализации. Однако известные аппаратно-ориентированные методы характеризуются недостаточной гибкостью, накладывая жесткие ограничения на конфигурацию барьерных групп и/или количество барьеров в приложении, которые
вступают в противоречие с действующими стандартами параллельного программирования (в частности, MPI 3.0) и не позволяют эффективно использовать
эти методы на практике.
Исходя из вышеизложенного, существует объективная необходимость
поиска путей устранения ограничений на конфигурацию барьерных групп и количество барьеров в выполняемых параллельных программах при реализации
барьерной синхронизации на аппаратном уровне без ухудшения скоростных
характеристик аппаратных средств.
Научно-технической задачей диссертации является создание метода и аппаратных средств барьерной синхронизации для однокристальных матричных
мультикомпьютеров, позволяющих исключить ограничения на конфигурацию
барьерных групп и максимальное число барьеров в выполняемых программах
при заданных ограничениях на среднее время барьерной синхронизации.
Объект исследования: аппаратные средства барьерной синхронизации в
составе однокристальных матричных мультикомпьютеров (ОММК).
Предмет исследования: методы, процедуры и схемы устройств барьерной синхронизации параллельных процессов в ОММК.
Работа выполнена при поддержке Минобрнауки РФ в рамках гранта
Президента РФ МД-2218.2011.8, а также в соответствии с планом НИР ЮЗГУ в
2009-2014 гг.
Целью диссертационной работы является повышение гибкости аппаратных средств барьерной синхронизации однокристальных матричных мультикомпьютеров в части исключения ограничений на конфигурацию барьерных
6
групп и число барьеров в выполняемых программах при заданном ограничении
на время барьерной синхронизации.
Для достижения поставленной цели необходимо решение следующих
частных задач:
1. Провести сравнительный анализ существующих методов, процедур и
устройств барьерной синхронизации с целью обоснования выбранного направления исследований.
2. Создать аппаратно-ориентированный метод распределенной барьерной
синхронизации для однокристальных матричных мультикомпьютеров, инвариантный к конфигурации барьерных групп и позволяющий исключить ограничения на число барьеров в параллельных программах при условии выполнения
ограничений на среднее время барьерной синхронизации.
3. Разработать структурную и функциональную схемы узлового устройства (ячейки) барьерной синхронизации в составе координирующей среды матричного мультикомпьютера. Оценить аппаратную сложность и гибкость предложенного технического решения.
4. Провести экспериментальные исследования функционирования разработанного устройства в составе координирующей среды матричного мультикомпьютера с целью исследования зависимостей среднего времени синхронизации от числа существующих барьерных групп и числа модулей мультикомпьютера.
Результаты, выносимые на защиту, и их научная новизна:
1. Аппаратно-ориентированный метод распределенной барьерной синхронизации для однокристальных матричных мультикомпьютеров, отличающийся тем, что синхронизация обеспечивается параллельно-конвейерным распространением значений двоичных индикаторных функций барьеров в многослойной координирующей среде, на каждый канал (одноразрядный слой) которой отображено несколько виртуальных каналов, причем каждому из них соответствует один или несколько попарно непараллельных барьеров программы,
позволяющий устранить ограничения на конфигурацию барьерных групп и
7
число барьеров в параллельных программах при соответствии среднего времени синхронизации заданному ограничению.
2. Логическая конфигурация слоя координирующей среды мультикомпьютера, новизна которой заключается в использовании двух инвертирующих цепей обратной связи в двух угловых ячейках среды, имеющих соответственно
минимальные и максимальные координаты во всех измерениях, и позволяющая
организовать устойчивое распространение значений двоичных функций, отражающих условия завершения синхронизации и активизации барьерных групп.
3. Структурно-функциональная организация узлового устройства (ячейки) барьерной синхронизации в составе координирующей среды матричного
мультикомпьютера, отличающаяся наличием блоков коммутации виртуальных
каналов, блоков отображения барьеров на виртуальные каналы, схем конвейерного переключения виртуальных каналов, позволяющая реализовать синхронизацию произвольных барьерных групп, в том числе формируемых динамически
в ходе выполнения параллельной программы, а также в условиях динамического порождения и уничтожения параллельных процессов в соответствии со
стандартом параллельного программирования MPI 3.0.
Достоверность результатов диссертации обеспечивается корректным и
обоснованным применением положений и методов математической логики,
теорий: множеств и графов, вероятностей и математической статистики, систем
и сетей массового обслуживания, проектирования устройств ЭВМ и систем, параллельных вычислений, а также подтверждается совпадением теоретических
выводов с результатами имитационного моделирования.
Соответствие паспорту специальности. Содержание диссертации соответствует п.1 и п.2 паспорта специальности 05.13.05 «Элементы и устройства
вычислительной техники и систем управления», поскольку в ней разработаны
принципы функционирования устройств барьерной синхронизации в составе
матричных мультикомпьютеров произвольной размерности, отличающихся повышенной гибкостью в части инвариантности к конфигурации барьерных
групп, а также выполнен теоретический анализ и проведено экспериментальное
8
исследование функционирования разработанных устройств в составе координирующей среды, позволившие обосновать их соответствие действующим
ограничениям по аппаратной сложности и времени синхронизации.
Практическая значимость работы:
1. Созданный метод позволяет эффективно использовать аппаратные
средства барьерной синхронизации на практике и внедрять их в производство
перспективных СБИС-мультикомпьютеров за счет исключения ограничений на
конфигурацию барьерных групп и число барьеров в выполняемых программах,
вступающих в противоречие с требованиями действующих стандартов параллельного программирования (в частности, MPI 3.0).
2. Разработанная структурно-функциональная организация устройства
барьерной синхронизации и координирующей среды на его основе применимы
как к двумерным матричным структурам мультикомпьютеров, так и к многомерным вариантам структур (гиперкуб) без внесения принципиальных схемных
изменений. Это позволяет распространить предложенный подход на крупномасштабные («не СБИС») мультикомпьютерные системы, которые, как правило, обладают трехмерной топологической структурой.
Практическое использование результатов работы. Основные научные
результаты и выводы диссертационной работы внедрены в ЗАО «Открытые
технологии 98» (г. Москва), в ООО «НПЦ «Иннотех» (г. Курск), а также используются в учебном процессе на кафедре вычислительной техники ЮЗГУ в
рамках дисциплин «Вычислительные системы повышенной надежности», «Отказоустойчивые многопроцессорные платформы», в курсовом и дипломном
проектировании.
Апробация работы. Основные положения и результаты диссертационной
работы были заслушаны и получили одобрение на Международной научнотехнической конференции «Распознавание – 2013» (г. Курск, 2013 г.), на I Региональной научно-технической конференции «Информационные системы и
технологии» (г. Курск, 2012 г.), а также на научных семинарах кафедры вычислительной техники ЮЗГУ (ранее КурскГТУ) с 2009 по 2014 г.
9
Публикации по теме диссертации. Результаты диссертационной работы
отражены в 10 публикациях, в числе которых 5 статей, опубликованных в
научных изданиях из Перечня ВАК РФ, а также 1 свидетельство о регистрации
программы для ЭВМ.
Личный вклад соискателя. Все выносимые на защиту научные результаты получены соискателем лично. В опубликованных в соавторстве работах
личный вклад соискателя сводится к следующему: в [5,6,12,53] разработаны
основные положения и этапы аппаратно-ориентированного метода барьерной
синхронизации на основе использования виртуально-многослойной координирующей среды; в [3,4,19] синтезированы функциональные схемы основных
блоков, входящих в состав ячейки координирующей среды; в [13,17,40] исследовано функционирование разработанной ячейки виртуально-многослойной
координирующей среды в составе матричного мультикомпьютера.
Объем и структура работы. Диссертационная работа состоит из введения, четырех разделов, заключения, списка литературы и приложений. Работа
содержит 141 страницу текста (с учетом приложений) и поясняется 30 рисунками и 5 таблицами; список литературы включает 106 наименований.
Области возможного использования. Результаты диссертационной работы могут найти применение при создании перспективных матричных СБИСмультикомпьютеров, подобных однокристальным системам TILE-Gx, а также
при построении крупномасштабных мультикомпьютеров (аналогичных выпускаемых фирмами Cray, IBM, HP), объединяющих тысячи – сотни тысяч идентичных процессорных узлов многомерной матричной коммуникационной средой, и локальных сетей ЭВМ, организованных в матричные структуры.
10
1. АРХИТЕКТУРА И КООРДИНАЦИОННЫЕ ПРОЦЕССЫ ОДНОКРИСТАЛЬНЫХ МАТРИЧНЫХ МУЛЬТИКОМПЬЮТЕРОВ
В данном разделе излагаются особенности архитектуры однокристальных
матричных мультикомпьютеров (ОММК) на примере ряда современных СБИСсистем, рассматриваются координационные процессы, протекающие в ОММК,
и в частности, барьерная синхронизация – одна из стандартных и наиболее распространенных форм коллективного координационного межпроцессорного
взаимодействия в мультикомпьютерах, формулируется задача обеспечения барьерной синхронизации в ОММК, дается аналитический обзор методов, процедур и средств барьерной синхронизации с акцентом на распределенные аппаратные решения, обсуждаются их ограничения и формулируется цель диссертационного исследования. Основное содержание раздела опубликовано в работе [13].
1.1. Особенности архитектуры однокристальных матричных мультикомпьютеров
Современная технология производства сверхбольших интегральных схем
(СБИС) позволяет выпускать микросхемы сверхвысокой степени интеграции,
превышающей 2 млрд. транзисторов на кристалл, имеющие время переключения вентиля порядка 5 пс [105]. Наличие элементной базы подобного уровня
дает возможность создания однокристальных мультикомпьютеров, объединяющих десятки мощных процессорных модулей, устройств ввода-вывода, контроллеров памяти [51, 52].
Спектр выпускаемых промышленностью СБИС-систем весьма широк и
охватывает как довольно простые по современным меркам образцы (например,
двухъядерные–четырехъядерные процессоры Intel [21] и AMD [37]), так и
весьма сложные приборы, включающие до 100 процессорных модулей (мультикомпьютеры фирмы Tilera [96]). Сегодня многопроцессорные системы на
кристалле представлены многими известными производителями. Кроме Intel,
AMD, Tilera, к их числу относятся Oracle (8-ядерный процессор OpenSPARC T1
11
[85]), Azul Systems (54-ядерный процессор Vega 3 [100]), IntellaSys (40-ядерный
процессор SEAforth 40C18 [68]). Компания Intel также заявила о стремлении в
недалекой перспективе наладить производство процессоров с большим числом
ядер; на данный момент ею выпущен экспериментальный прототип 80ядерного мультипроцессора Polaris [67] (однако следует отметить, что ядра этого процессора более простые, чем те, что используются в распространенных сегодня 2- и 4-ядерных процессорах).
Как правило, однокристальные системы с небольшим числом процессорных модулей (до 8) обладают шинной топологической структурой, которая
обеспечивает достаточную пропускную способность [85]. В свою очередь, системы с большим числом процессоров строятся на основе двумерной матричной топологии и её модификаций (матрица колец, тор и т.п.) [97]. Межпроцессорные обмены данными в таких системах осуществляются через неблокирующие переключатели или сети с непосредственными связями и пакетной коммутацией, транслирующие данные в параллельном коде в формате многоразрядных слов. Двумерная матричная топология позволяет относительно легко располагать процессорные модули в плоскости кристалла, а также эффективно отводить тепло. Однако, матрицы большей размерности (обладающие большей
топологической плотностью) пока не получили распространения при производстве СБИС-систем из-за технологических трудностей с отведением тепла от
кристалла [93].
Типичными представителями однокристальных матричных мультикомпьютеров являются СБИС-системы TILE фирмы Tilera [98]. Линейка СБИСмультикомпьютеров TILE, выпускаемых в настоящее время, включает 72ядерные системы TILE-Gx8072 (в конфигурации 9  8 ), 64-ядерные системы
TILE64 и TILEPro64 (в конфигурации 8  8 ), 36-ядерные системы TILEPro36,
TILE-Gx8036 (в конфигурации 6  6 ), 16-ядерные системы TILE-Gx8016 (в
конфигурации 4  4 ), 9-ядерные системы TILE-Gx8009 (в конфигурации 3  3 ).
Структурная организация СБИС-системы TILE-Gx8036 представлена на
рис. 1.1 [95].
MiCA
12
MiCA
Сетевой канал (Network I/O)
Flexible I/O
3 PCIE
пакетный процессор mPIPE
UART x2, USB x2,
JTAG, I2C, SPI
Контроллер памяти DDR3 (0)
Контроллер памяти DDR3 (1)
Рис. 1.1. Структурная организация СБИС TILE-Gx8036
СБИС-система TILE-Gx8036 содержит 36 процессорных модулей (ПМ),
объединенных матричной коммутационной средой iMesh с конфигурацией 6  6
и работающих на частотах от 1 до 1.2 ГГц. Каждый ПМ включает 64-разрядный
3-конвейерный процессорный элемент (ПЭ), кэш-память первого и второго
уровней (объемом соответственно 32 и 256 кбайт), а также неблокирующий переключатель для подключения к среде iMesh. Каждый ПМ способен независимо работать под управлением автономной ОС или функционировать во взаимодействии с другими модулями под управлением мультипроцессорной ОС SMP
13
Linux. СБИС-матрица в целом дополнительно содержит кэш третьего уровня
объемом 9 Мбайт.
Особый интерес представляет коммуникационная среда iMesh, объединяющая процессорные модули мультикомпьютера TILE-Gx8036. Она представляет собой суперпозицию из пяти независимо функционирующих высокоскоростных матричных сетей, имеющих суммарную пропускную способность 60
Тбит/сек. Передача данных в среде iMesh осуществляется параллельным кодом
на базе метода cuthrough-маршрутизации, что позволяет снизить длительность
каждого шага передачи до 1 такта.
В состав системы TILE-Gx8036 интегрирован широкий набор контроллеров памяти и интерфейсов ввода-вывода. В их числе два 72-разрядных контроллера синхронной динамической памяти DDR3, обеспечивающих возможность подключения до 512 Гбайт оперативной памяти, 3 контроллера PCI Express (PCIE), 4 порта I2C, порт SPI, до 16 портов SGMII, 10 Gigabit Ethernet
(XAUI), отладочный интерфейс периферийного сканирования JTAG. Также
СБИС содержит встроенную аппаратуру шифрования и сжатия данных MiCA.
Особенностью системы TILE-Gx8036 является поддержка технологии динамического распределенного кэша (Dynamic Distributed Cache – DDC), обеспечивающую когерентность кэш-памяти по всей матрице процессоров на аппаратном уровне. DDC позволяет использовать СБИС для реализации многопоточных приложений с разделяемой памятью, что превращает TILE-Gx8036 в мощный ccNUMA-мультипроцессор. Потребляемая мощность приборов TILEGx8036 составляет от 20 до 28 Вт.
Аналогичными по архитектуре являются и другие системы фирмы Tilera,
в частности, СБИС Tile-Gx8016 и Tile-Gx8009.
1.2. Координационные процессы в мультикомпьютерах. Процедура барьерной синхронизации
Как известно, межпроцессорное взаимодействие является одним из критических факторов, влияющих на производительность параллельных вычисли-
14
тельных систем. Влияние межпроцессорного взаимодействия может быть
настолько серьезным, что реальная производительность системы оказывается в
1.5 и более раз ниже заявленной пиковой производительности.
Существует несколько видов межпроцессорного взаимодействия, относящихся к разным уровням архитектуры системы. В системах класса MIMD
межпроцессорное взаимодействие преимущественно протекает на уровне процессов и/или потоков. Для обеспечения межпроцессорного обмена данными в
ходе взаимодействия применяются как разделяемые коммуникационные среды
(SGI Origin 3000, Sun Ultra Enterprise 10000), так и сети с непосредственными
связями (Cray XT-5, IBM Blue Gene, TILE-Gx).
К числу важнейших коммуникационных процедур, выполняемых в ходе
межпроцессорного взаимодействия в MIMD-системах, относится барьерная
синхронизация. В её основе лежит понятие барьера [49]. Барьер можно рассматривать как логический разделитель в потоке управления параллельной программы, по достижении которого все (или некоторые) процессы (потоки) приостанавливают выполнение до тех пор, пока остальные процессы также не достигнут этого разделителя, с тем чтобы продолжить дальнейшее выполнение
синхронно. Барьеры обычно используются с целью задания определенного порядка следования участков программного кода (ветвей параллельной программы) и не предусматривают передачи каких-либо данных для вычислений в процессорах. Различают глобальную и локальную барьерную синхронизацию. В
первом случае в синхронизации участвуют все процессы параллельного приложения, выполняющиеся в системе в данный момент времени. Во втором случае
участниками синхронизации является только часть процессов, образующих так
называемую барьерную группу.
Процесс барьерной синхронизации принято разбивать на отдельные барьерные события (эпизоды). Каждое такое событие представляет собой один завершенный акт синхронизации процессов для одного барьера и включает две
фазы. На первой фазе, называемой фазой ожидания, каждый процесс, участвующий в синхронизации, сообщает о своём достижении данного барьера и пере-
15
ходит в состояние ожидания. Сразу после перехода в состояние ожидания последнего процесса начинается вторая фаза синхронизации, называемая активизацией. В ходе этой фазы все процессы, ожидающие завершения данного барьера, получают сигнал, разрешающий им немедленно продолжить выполнение.
Барьерная синхронизация является не только одним из часто встречающихся видов межпроцессорного взаимодействия, но и считается базовой стандартной коммуникационной операцией параллельных программ, разрабатываемых в соответствии с современными стандартами параллельного программирования. Так, стандарт программирования мультикомпьютеров MPI содержит
процедуру MPI_Barrier, которая обеспечивает синхронизацию группы параллельных процессов, объединённых так называемым коммуникатором (барьерной группы) [79]. Аналогичная процедура имеется и в другом широко распространенном стандарте OpenMP, являющемся основой программирования мультипроцессоров (в OpenMP синтаксически она оформляется в виде директивы и
применяется к группе синхронизируемых потоков) [84].
Практика показывает, что барьерная синхронизация значительно снижает
степень параллелизма параллельных программ из-за необходимости ожидания
процессами завершения барьерных эпизодов [72]. С увеличением числа процессоров (процессов) в системе и с повышением связности реализуемых программ
негативное влияние барьерной синхронизации на производительность существенно усиливается. Поскольку полностью исключить барьеры из параллельных программ рассматриваемого класса принципиально невозможно [81], основные усилия исследователей и разработчиков были направлены на минимизацию времени, затрачиваемого в среднем на один барьерный эпизод (т.е. среднего времени синхронизации).
Формально задачу организации барьерной синхронизации можно поставить различными способами. Например, ее можно свести к разработке такого
метода и реализующих его аппаратно-программных средств, которые обеспечивали бы выполнение следующих условий:
СBS  max; ЕBS  EBS ; Т BS  TBS ,
(1.1)
16
где CBS – гибкость метода (средств) синхронизации; EBS – структурная сложность средств синхронизации ( EBS – предельно допустимое значение); Т BS –
среднее время синхронизации ( TBS – предельно допустимое значение).
Важнейшей количественной характеристикой средств синхронизации является время Т BS , которое определяется как средний интервал между моментом
достижения барьера последним синхронизируемым процессом и моментом запуска последнего процесса из барьерной группы. Гибкость CBS представляет
собой отношение числа допустимых вариантов размещения синхронизируемых
процессов среди модулей мультикомпьютера к общему числу таких вариантов.
Её максимальное значение – единица. Структурная сложность EBS определяет
сложность физической реализации средств синхронизации и может включать
объем программного кода, аппаратную сложность и т.п.
Помимо условий, описываемых выражением (1.1), существенным требованием к методам и средствам барьерной синхронизации мультикомпьютеров
является масштабируемость [7]. Это комплексная качественная характеристика,
отражающая степень приспособленности среды синхронизации к изменению
параметров системы. К числу таких параметров относится число процессорных
модулей в системе, размерность её топологической структуры, число процессов
в системе, количество барьерных групп, их мощность, число параллельно выполняемых программ и т.д. Приспособленность в данном случае следует рассматривать с точки зрения количества логических и физических изменений, которые необходимо внести для сохранения работоспособности среды синхронизации при новых значениях параметров системы. Так, например, если при добавлении новых модулей в мультикомпьютер требуется полная физическая реконфигурация среды синхронизации, то говорят о плохой масштабируемости.
Если же добавление новых модулей не требует такой реконфигурации, то масштабируемость считается хорошей.
17
1.3. Методы, процедуры и средства барьерной синхронизации
За последние три десятилетия было разработано широкое многообразие
методов, способов и средств барьерной синхронизации, используемых на различных уровнях параллелизма и ориентированных на параллельные вычислительные системы разных архитектурных классов. В зависимости от уровня реализации существующие решения можно разделить на три класса [15]: программные [22, 34, 35, 36, 54, 63, 64, 72, 75, 76, 80, 99, 103, 104], гибридные (программно-аппаратные) [23, 24, 30, 31, 32, 46, 50, 62, 65, 74, 77, 86, 88, 90, 92, 94,
102] и аппаратные [1, 8, 9, 10, 16, 25, 26, 27, 28, 29, 30, 33, 44, 45, 47, 48, 55, 56,
58, 59, 60, 61, 66, 69, 70, 71, 73, 78, 82, 83, 87, 89, 91, 101, 106]. Программные
решения полностью базируются на использовании стандартного коммуникационного оборудования и протоколов и обычно представляются в виде набора
специализированных системных утилит. Будучи весьма гибкими, масштабируемыми и простыми, программно реализованные процедуры барьерной синхронизации, как правило, на 1-3 порядка медленнее аппаратно реализованных процедур и поэтому не нашли применения в мультикомпьютерах. В связи с этим в
дальнейшем мы исключаем из рассмотрения методы синхронизации, предполагающие чисто программное воплощение.
Гибридный подход к барьерной синхронизации предполагает введение
незначительных расширений в структуру стандартных коммуникационных аппаратных средств (например, барьерных регистров и логических схем), которые
не меняют архитектуры коммуникационной среды вычислительной системы.
Аппаратные решения, в противоположность гибридным, предусматривают введение отдельной управляющей коммуникационной сети, логически отображенной на стандартную (базовую) коммуникационную среду системы. Эта управляющая сеть может иметь такую же топологию, что и базовая среда, но может и
отличаться от неё по топологии.
Многие известные методы барьерной синхронизации, ориентированные
на матричные мультикомпьютеры рассматриваемого класса, предполагают гибридную реализацию [23, 24, 30, 31, 32, 46, 50, 62, 65, 74, 77, 86, 88, 90, 92, 94,
18
102]. Гибридные решения, как правило, базируются на стандартных коммуникационных протоколах, определяющих функционирование типовых коммуникационных сетей, и используют специализированные аппаратные средства на
уровне отдельных узловых маршрутизаторов. Они имеют распределенный характер и топологически согласованы с вычислительной системой, что позволяет достичь высокой масштабируемости и гибкости среды барьерной синхронизации. Узким местом гибридных решений является существенный дополнительный трафик, снижающий реальную пропускную способность коммуникационной сети.
Основным способом сокращения дополнительного служебного трафика
является объединение процессов-участников барьерной синхронизации в логические структуры (например, деревья) таким образом, чтобы каждый процесс
взаимодействовал с как можно меньшим числом других участников. В сочетании с механизмом многоадресных сообщений [86], гибридный подход к барьерной синхронизации обеспечивает малые значения среднего времени синхронизации, которые во многих случаях приемлемы для практики, а также его хорошую асимптотику. Недостатками гибридного подхода являются: большие
временные затраты на формирование и удаление барьерных групп; значительный слабо прогнозируемый поток служебных сообщений, не несущих никаких
данных, обрабатываемых процессорными модулями (который стремительно
возрастает с увеличением числа барьеров в программе и числа участников барьерных групп); сложность гарантировать отсутствие блокировок и дисбаланса
в коммуникационной сети.
Методы барьерной синхронизации, ориентированные на аппаратную реализацию, не предполагают выдачи дополнительных служебных сообщений в
базовую коммуникационную сеть мультикомпьютера, поскольку управляющие
межпроцессорные взаимодействия осуществляются через отдельную барьерную сеть (которая, как правило, многократно проще базовой сети). Для поддержки барьерной синхронизации на уровне каждого модуля вводятся специальные логические схемы и регистры, подключенные к барьерной сети. Разли-
19
чия между аппаратными решениями определяются главным образом топологией барьерной сети, а также логическими функциями объединения барьерных
сигналов. В их основе может лежать сеть с шинной [70, 91], кольцевой [71],
матричной [1, 8, 9, 16, 29, 48, 58, 101] или древовидной [60, 66, 82, 83] топологией либо их комбинация [56, 87].
Аппаратные средства барьерной синхронизации уже нашли применение в
ряде коммерческих систем, например, в системах Thinking machines CM-5 [57]
и Cray T3D [73]. Так, барьерная среда системы CM-5 [57] организована в виде
двух одноразрядных бинарных деревьев. Одно из них функционирует только в
фазе ожидания (дерево ожидания), а другое в фазе активизации (дерево активизации). С целью поддержки параллельных барьеров в CM-5 используется набор
одновременно работающих «древовидных» барьерных сред. Каждая среда ставится в соответствие определенной группе синхронизируемых параллельных
процессов. Любая группа может динамически разбиваться на группы меньшей
мощности, и наоборот, любые группы могут объединяться в группы большей
мощности. При разбиении и объединении групп происходит разделение и соединение барьерных сред. Аналогичным образом организована барьерная среда
параллельной системы Cray T3D [73].
Организация элементарной (одноразрядной) барьерной среды системы
CM-5 представлена на рис. 1.2 (в данном случае рассматривается 8процессорная конфигурация).
Дерево ожидания среды состоит из элементов И, а дерево активизации –
из повторителей (D). Каждый процессорный модуль связан с деревом ожидания
через флаг готовности x. Этот флаг устанавливается в единичное состояние в
момент завершения модулем параллельной ветви и сбрасывается по окончании
текущего барьерного эпизода. Эпизод считается завершенным, как только по
сигналу из дерева активизации будет установлен флаг запуска z.
При разбиении барьерной группы на подгруппы осуществляется разделение барьерной среды на фрагменты. Разделение обеспечивается перекоммутацией некоторых связей в деревьях ожидания и активизации, в результате чего
20
формируется множество не связанных друг с другом пар поддеревьев. Процесс
разделения иллюстрируется схемой, отражающей разбиение группы ветвей на
три подгруппы и изображенной на рис. 1.3.
&
рев
Де
x
жи
оо
&
D
z
x
Модуль 1
и
дан
я
z
Модуль 2
&
x
D
D
&
&
D
z
x
Модуль 3
z
x
Модуль 4
D
&
D
z
x
Модуль 5
z
Де
рев
x
Модуль 6
оа
кти
в
и за
ци
&
D
z
x
Модуль 7
и
z
Модуль 8
Рис. 1.2. Организация элементарной барьерной среды системы CM-5
&
D
Подгруппа 1
&
D
&
D
Подгруппа 2
x
&
D
z
x
Модуль 1
z
Модуль 2
x
&
D
z
x
Модуль 3
z
Модуль 4
x
&
D
z
x
Модуль 5
Подгруппа 3
z
Модуль 6
x
&
D
z
x
Модуль 7
z
Модуль 8
Рис. 1.3. Иллюстрация процесса разделения барьерной среды системы CM-5
на фрагменты при разбиении барьерной группы
Механизм синхронизации системы CM-5 обеспечивает малое время синхронизации и характеризуется низкой сложностью реализации. Однако он не
лишен недостатков. Наиболее существенным из них является жесткое ограничение на конфигурацию барьерных групп: с одной стороны, они должны иметь
21
мощность 2n , n  1,2,3,
; с другой стороны, ветви подгрупп должны разме-
щаться в процессорных модулях таким образом, чтобы им соответствовали соседние вершины барьерной среды. Это существенно ухудшает масштабируемость параллельной системы.
Более гибкий аппаратный механизм барьерной синхронизации был предложен в работе [56]. Он предполагает реализацию барьерной среды в виде
множества распределенных деревьев, объединяющих двоичные сигналы функцией «логическое И» и соединенных друг с другом через общую шину. Предложенный подход даёт возможность динамически формировать новые барьерные группы и не накладывает ограничений на их мощность. Каждый процессор
идентифицируется в качестве участника барьерной группы на основе формирования дерева отношений (наподобие бинарного дерева решений), обрабатываемого в распределенном режиме. Для хранения информации о текущем составе
барьерных групп в системе в каждый процессор добавляется множество парных
счетчиков. При изменении состава барьерных групп выполняются две распределенные широковещательные операции – разбиение и перегруппировка. Основным недостатком данного подхода является использование общей шины,
число линий которой определяется числом процессоров в системе, что ухудшает её масштабируемость. Таким образом, он не применим при построении среды барьерной синхронизации матричных мультикомпьютеров.
В свете особенностей объекта исследований диссертации наибольший
интерес представляет анализ и сравнительная оценка распределенных аппаратных процедур барьерной синхронизации. Подобные процедуры представлены,
в частности, в работах [1, 8, 9, 48, 58, 87, 101, 106].
Одна из распределенных аппаратных процедур барьерной синхронизации
описана в работе [87]. Основу данной процедуры составляют древовидные
структуры, аналогичные использованным в системе CM-5, определенным образом отображенные на матричную топологическую структуру. Каждая такая
структура (называемая MDBS-сетью) строится из двух одноразрядных аппаратно реализованных деревьев. Первое из них (дерево И) реализует операцию
22
ожидания завершения параллельных ветвей, второе (дерево ИЛИ) выполняет
операцию сигнализации, в результате которой происходит активизация процессорных модулей, ожидающих завершения синхронизации. Построенная таким
образом MDBS-сеть обеспечивает высокую скорость синхронизации и обладает
низкой аппаратной сложностью, однако ее использование требует предварительного преобразования кода параллельной программы, которое приводит к
существенному увеличению его длины. Для преодоления указанного недостатка MDBS-сеть предлагается модифицировать и строить на основе многоразрядных деревьев, узлы которых реализуют операцию нахождения максимума (maxдерево).
В отличие от барьерной среды, используемой в системе CM-5, MDBSсеть тривиально вкладывается в топологическую структуру матричной системы, обеспечивая хорошую масштабируемость. Каждый модуль сети является
конфигурируемым, что позволяет динамически формировать разнообразные
конфигурации поддеревьев для синхронизации произвольных подгрупп параллельных ветвей (см. рис. 1.4).
Корень
Лист
Рис. 1.4. Пример размещения поддеревьев в MDBS-сети
23
Схема модуля MDBS-сети показана на рис. 1.5. Она включает две части
(отделены друг от друга пунктирной ломаной). Верхняя часть обеспечивает
распространение сигналов в фазе ожидания (и соответствует вершине дерева
ожидания), а нижняя часть реализует передачу сигналов в фазе активизации (и
соответствует вершине дерева активизации). Модуль MDBS-сети связан с деревом ожидания через флаг готовности x, который устанавливается в единичное
состояние в момент завершения параллельной ветви и сбрасывается после подтверждения окончания синхронизации. Подтверждение при этом поступает через флаг запуска z из дерева активизации.
1
x
1
От соседних
модулей
1
D
2
&
1
1
3
&
4
1
1
4
&
3
&
5
1
&
9
z
6
1
5
1
D
6
&
1
2
7
D
3
2
1
К соседним модулям
РНРВ
От соседних
модулей
К соседним модулям
РНДВ
8
Рис. 1.5. Схема модуля MDBS-сети
Для формирования деревьев в MDBS-сети используются регистр наличия
дочерней вершины (РНДВ) и регистр наличия родительской вершины (РНРВ).
24
Разрядность этих регистров определяется максимальным числом соседних модулей в структуре системы (в данном случае 4 бита). Разряды РНДВ устанавливаются так, что i-й разряд получает нулевое значение, если соседний модуль в iм направлении соответствует некоторой дочерней вершине дерева ожидания, и
единичное значение в противном случае. Если текущий модуль является листом дерева ожидания, все разряды РНДВ устанавливаются в единицу. Установка разрядов РНРВ определяется так: i-й разряд регистра устанавливается в
ноль, если соседний модуль в i-м направлении соответствует родительской
вершине в дереве активизации, и в единицу в противном случае. Все разряды
РНРВ будут единичными только в модуле, соответствующем корню дерева активизации.
Сеть MDBS позволяет преодолеть многие недостатки аналогичных механизмов синхронизации, используемых в системах CM-5, Cray T3D. Так, она не
требует размещения синхронизируемых процессов строго в рамках топологии
барьерной среды. Напротив, сама среда динамически настраивается на заданное
размещение параллельных ветвей. MDBS-сеть легко вкладывается в топологическую модель матричной системы, что обеспечивает её масштабируемость.
Кроме того, MDBS-сеть обеспечивает такую же высокую скорость синхронизации и низкую сложность реализации, как и механизм синхронизации системы
CM-5.
Основным недостатком MDBS-сети является невысокая гибкость в связи
с необходимостью размещения синхронизируемых ветвей только в соседних
модулях системы. На практике это требование зачастую невыполнимо. С одной
стороны, при размещении задачи в системе часто не удается найти сплошную
область достаточного размера и задаче приходится выделять несколько подобластей. С другой стороны, даже если задачи всегда назначаются на непрерывные области системы (что можно обеспечить на уровне операционной системы), заранее неизвестно, каким образом в них будут сгруппированы параллельные ветви.
25
Еще один распределенный аппаратный механизм барьерной синхронизации предложен в работе [58]. В отличие от ранее рассмотренных подходов
(CM-5, T3D, MDBS), данный механизм не использует барьерных сред древовидной структуры. В его основе лежит барьерная среда с матричной топологией, узлы которой связаны операцией «логическое И». Организация среды на
примере двумерной матрицы представлена на рис. 1.6.
Логика «монтажное И»
Линии барьерной среды
Рис. 1.6. Организация двумерной барьерной среды в механизме [58]
Процедура синхронизации в среде, изображенной на рис. 1.6, включает
n  1 последовательно выполняемых фаз, где n – наибольший из размеров мат-
рицы. В каждой из них происходит независимое взаимодействие четверок соседних модулей через элементы монтажной логики (распределение модулей по
четверкам определяется их индексами в матрице). Взаимодействие сводится к
выдаче единичных сигналов окончания параллельных ветвей и завершается,
как только все модули четверки достигают текущий барьер. После этого сигналы завершения синхронизации распространяются в соседние четверки модулей.
26
Как только все модули получат подтверждение о завершении синхронизации,
начинается активизация требуемых модулей системы.
Рассмотренный механизм обеспечивает высокую скорость синхронизации (так, по данным [58], значения величины TBS лежат в пределах 1–10 мкс в
системе с конфигурацией 64  64 модуля при задержке вентиля равной 3 нс).
Сложность его реализации относительно невысока и не зависит от числа модулей системы.
Существенным недостатком рассмотренного механизма синхронизации
является невысокая гибкость, обусловленная необходимостью размещения барьерных групп в областях прямоугольной конфигурации. Попытки преодоления данного ограничения приводят к резкому росту аппаратной сложности
ячейки барьерной среды. Еще один недостаток данного подхода связан со
сложностью его распространения на системы более высокой размерности (гиперкубы). Отметим, что MDBS-сеть, рассмотренная выше, обладает несколько
большей гибкостью и допускает относительно простое расширение на гиперкубы.
Использование дерева логических элементов И при построении барьерной среды матричных систем нашло своё дальнейшее развитие в распределенном механизме синхронизации, описанном в работах [16, 27]. В данном механизме барьерные модули распределены между всеми модулями системы и соединены в древовидную структуру несколько иначе, чем в ранее рассмотренных случаях. Схема соединения барьерных модулей на примере системы размером 4  4 представлена на рис. 1.7.
Каждый барьерный эпизод разделяется на фазу опроса и фазу запуска. В
первой фазе происходит распространение единичного сигнала от инвертора через матрицу барьерных модулей. Каждый барьерный модуль пропускает единичный сигнал, если соответствующий ему процессор не участвует в данном
барьерном эпизоде или уже завершил свою ветвь программы, а также получены
единичные сигналы от соседних модулей. В противном случае на выходе барьерного модуля устанавливается нулевой уровень сигнала. Соответственно, по-
27
явление единичного сигнала на входе инвертора означает достижение барьера
всеми процессорами – участниками барьерной группы. Далее сигнал инвертируется и лавинообразно распространяется через матрицу барьерных элементов
в направлении правого верхнего модуля, активизируя процессоры, ожидающие
завершение синхронизации. Соответствие между текущим барьером и каждым
процессором задается с помощью битовой маски. При синхронизации параллельных барьеров в системе необходимо наличие нескольких параллельно
функционирующих деревьев.
1
Рис. 1.7. Схема соединения барьерных модулей в распределенном
барьерном синхронизаторе [16, 27]
Данный механизм характеризуется высоким быстродействием и возможностью динамической синхронизации, при этом ограничения на размещение
участников барьерных групп в процессорной матрице отсутствуют. Недостатком его является невысокая гибкость, обусловленная необходимостью введения
отдельного дерева синхронизации на каждый барьер (максимальное число которых заранее неизвестно и зависит от задачи). Кроме того, линии обратной
28
связи «вокруг» процессорной матрицы нарушают однородность системы,
усложняют ее реализацию на кристалле и ухудшают масштабируемость.
Модифицированный вариант описанного механизма синхронизации воплощен в параллельно-последовательном барьерном синхронизаторе, представленном в [28]. Изменение схем барьерных модулей и способа их соединения
позволило устранить нерегулярность межмодульных связей. Сигналы завершения барьерного эпизода и запуска после достижения правого верхнего модуля
распространяются обратно через матрицу элементов (см. рис. 1.8), а не по цепям обратной связи, как на рис. 1.6. Однако, данный модифицированный механизм не устраняет основной недостаток базового варианта и по-прежнему характеризуется невысокой гибкостью, поскольку требует введение отдельного
дерева синхронизации на каждый барьер. Также ему свойственная более высокая аппаратная сложность.
Рис. 1.8. Схема соединения барьерных модулей в параллельнопоследовательном барьерном синхронизаторе [28]
Попытка разработки распределенного механизма барьерной синхронизации с более высокой гибкостью была предпринята в работах [8, 9, 29, 101]. Основным отличием данного подхода является применение конвейерного прин-
29
ципа распространения координирующих сигналов в дереве синхронизации, что
позволяет осуществлять синхронизацию нескольких барьерных групп с использованием одного дерева. Также достигается сокращение числа линий связи
между соседними барьерными модулями. Сокращение обеспечивается за счет
разбиения барьерных модулей, отвечающих за синхронизацию различных барьеров, на группы и мультиплексирования соединяющих линий между группами.
В работах [1, 48] содержится дальнейшее развитие идей, изложенных в
[8, 9, 29, 101], и представлена модифицированная процедура распределенной
барьерной синхронизации для матричных мультикомпьютеров. Основным её
отличием является динамическое ограничение области распространения координирующих сигналов в барьерной среде при синхронизации. Благодаря такому ограничению сокращается среднее время передачи управляющих сигналов
при реализации барьерного эпизода, поскольку сигналы транслируются не на
всю матрицу, а только на минимальную подматрицу, покрывающую множество
участников барьерной группы. Кроме того, исключается необходимость повторной инициализации и финализации барьерных групп, что устраняет потери
времени в условиях наличия циклически выполняемых барьеров. Формирование ограничивающей подматрицы выполняется на аппаратном уровне путем
передачи сигналов по специальным конфигурационным цепям, причем доказано, что подматрица получается минимальной. Показано, что максимальное
время синхронизации на одной итерации цикла в матричном мультикомпьютере с числом процессоров до 1000 не превышает 1.4 мкс (при задержке вентиля
порядка 3 нс), при этом аппаратная сложность барьерного модуля не превышает 25 тыс. эквивалентных вентилей (ЭВ) для всех практически значимых случаев.
Методы барьерной синхронизации, предложенные в [1, 8, 9, 29, 48, 101],
позволяют существенно повысить гибкость средств синхронизации, однако, попрежнему чувствительны к конфигурации барьерных групп и количеству барьеров в системе. Так, метод, изложенный в [1], не допускает линейные конфигурации барьерных групп (при которых все участники барьерной группы нахо-
30
дятся в одной строке или столбце матрицы) и не обеспечивает конвейеризации
барьеров, следствием чего является линейная зависимость количества слоев
(разрядности) координирующей среды от (заранее неизвестного) числа попарно
параллельных барьеров. Метод, представленный в работе [8], отличается конвейеризацией выполнения барьеров, однако конвейерный режим распространяется только на пары барьеров в одном слое синхронизации. Таким образом, зависимость количества слоев координирующей среды от числа попарно параллельных барьеров не исключается, хотя и в определенной мере ослабляется.
Из проведенного анализа вытекает актуальность разработки методов распределенной барьерной синхронизации, нацеленных на повышение гибкости
аппаратных средств в части исключения ограничений на конфигурацию барьерных групп и количество барьеров в параллельных программах без ухудшения
скоростных характеристик среды синхронизации. Это, в свою очередь, определяет цель диссертационной работы: повышение гибкости аппаратных средств
барьерной синхронизации однокристальных матричных мультикомпьютеров в
части исключения ограничений на конфигурацию барьерных групп и число барьеров в реализуемых параллельных программах при заданном предельно допустимом среднем времени барьерной синхронизации (не более 20÷30 мкс при
задержке вентиля порядка 1÷5 нс).
31
Выводы
1. Однокристальные матричные мультикомпьютеры открывают одно из
перспективных направлений развития многопроцессорной вычислительной
техники, позволяя размещать на одной микросхеме системы, содержащие до
100
полнофункциональных
процессорных
модулей
и
дополнительных
устройств.
2. Функционирование ОММК предполагает интенсивное выполнение
координационных взаимодействий и в частности, барьерной синхронизации,
недостаточно эффективная реализация которой значительно снижает реальную
производительность мультикомпьютера.
3. Анализ существующих методов и процедур барьерной синхронизации
дает основание утверждать, что чисто аппаратные решения наиболее перспективны, поскольку они характеризуются более высоким быстродействием и не
оказывают влияния на пропускную способность имеющейся коммуникационной сети мультикомпьютера.
4. Существующие аппаратные методы и процедуры барьерной синхронизации характеризуется жестким ограничением на конфигурацию барьерных
групп и количество барьеров в параллельных программах, что затрудняет их
применение в ОММК в соответствии со стандартом MPI и усложняет задачу
распределения процессов на множестве доступных процессорных модулей системы. Таким образом, существует необходимость проведения дальнейших исследований и разработки аппаратных методов и распределенных средств барьерной синхронизации, обеспечивающих повышение гибкости среды синхронизации при сохранении высоких скоростных характеристик.
32
2. ОРГАНИЗАЦИЯ БАРЬЕРНОЙ СИНХРОНИЗАЦИИ НА ОСНОВЕ
ВИРТУАЛЬНО-МНОГОСЛОЙНОЙ
КОНВЕЙЕРНОЙ
КООРДИНИРУ-
ЮЩЕЙ СРЕДЫ
В данном разделе описан аппаратно-ориентированный метод распределенной барьерной синхронизации в ОММК на основе использования виртуально-многослойной координирующей среды (ВМКС), дано формализованное
представление процесса синхронизации в соответствии с разработанным методом. Доказана инвариантность метода к конфигурации барьерных групп и числу попарно параллельных барьеров в выполняемых программах. Основное содержание данного раздела опубликовано в работах [5, 6, 12, 53].
2.1. Принципы организации виртуально-многослойной координирующей
среды
Идея применения виртуально-многослойной координирующей среды для
аппаратной поддержки барьерной синхронизации в мультикомпьютерах впервые нашла свое отражение в работах [11, 106]. Однако авторам не удалось распространить данную идею на однокристальные системы, поскольку предложенная ими организация ВМКС с множеством «длинных» обратных связей
между «угловыми» модулями матричной структуры сложна для размещения на
кристалле. Кроме того, подобные обратные связи вносят дополнительную задержку в процесс распространения координирующих сигналов и увеличивают
среднее время синхронизации. Применение такой организации ВМКС в крупномасштабных системах (не СБИС) также сопряжено с определенными трудностями. В частности, существенно усложняется добавление в мультикомпьютер
новых процессорных модулей из-за необходимости физической перекоммутации обратных связей.
В данном разделе излагается новый метод барьерной синхронизации на
основе ВМКС, позволяющий преодолеть указанные недостатки известного
подхода.
33
Виртуально-многослойная координирующая среда представляет собой
сеть из однотипных ячеек, называемых барьерными модулями. Каждый барьерный модуль соответствует «своему» процессорному модулю мультикомпьютера, при этом топология ВМКС в значительной степени либо полностью совпадает с топологией ОММК. Барьерный модуль решает следующие основные задачи: 1) хранит данные об отображении барьеров, входящих в реализуемые параллельные программы, на ВМКС; 2) фиксирует признаки завершения параллельных процессов соответствующим ему процессорным модулем; 3) управляет распространением двоичных сигналов, отражающих состояние всех выполняемых мультикомпьютером барьеров (завершен / не завершен); 4) обеспечивает запуск данного процессорного модуля при завершении ожидаемого барьера.
Барьерные модули имеют секционированную физическую организацию.
Все секции идентичны и функционируют параллельно. В любой момент времени секция способна работать лишь с одним барьером, но при этом последовательно выполняющиеся барьеры (синхронизация которых осуществляется в
разное время) могут назначаться на одну и ту же секцию. Совокупность секций
всех барьерных модулей с соответствующими связями образует одноразрядный
слой ВМКС. Организованная таким образом координирующая среда способна
синхронизировать до n параллельных барьеров, где n – число секций в барьерных модулях (или число слоев координирующей среды). Число синхронизируемых последовательно выполняемых барьеров не ограничено.
Для преодоления ограничения на максимально возможное число синхронизируемых параллельных барьеров (которое свойственно известным методам
распределенной барьерной синхронизации) каждому слою ВМКС ставится в
соответствие множество виртуальных слоев, каждый из которых по своим возможностям идентичен физическому слою. В результате на каждую секцию
каждого барьерного модуля отображаются виртуальные секции, входящие в соответствующие виртуальные слои. Виртуальная секция способна работать лишь
с одним барьером одновременно. Это же справедливо и для соответствующего
виртуального слоя в целом. Однако физический слой при такой организации
34
координирующей среды способен одновременно работать с несколькими барьерами, в том числе и параллельными. С другой стороны, в пределах всей координирующей среды в одном физическом слое активны сразу несколько виртуальных слоев. Их активность обеспечивается конвейерным переключением
виртуальных секций в физических барьерных модулях. Тактовая синхронизация этого процесса обеспечивается путем параллельного распространения
«волн» тактовых импульсов от одного углового модуля ОММК через всю матрицу к другому угловому модулю и одновременно в обратном направлении
(например, от левого верхнего к правому нижнему и обратно, если речь идет о
двумерной матричной топологии).
2.2. Концептуальный базис разработанного метода
барьерной синхронизации
Для формализации описания созданного метода барьерной синхронизации условимся использовать концептуальный базис и обозначения, введенные в
монографии [11].
Структуру ОММК представим в виде графа H  M ,U  , где M – множество вершин, соответствующее множеству процессорных модулей мультикомпьютера, а U – множество дуг, отражающее связи между модулями. Для
каждого модуля зададим составной порядковый номер вида ( x1 , x2 ,
, xd ) ,
xi  1, N i , где N i – число процессоров в i-м измерении, i  1, d . Модуль с поряд-
ковым номером ( x1 , x2 ,
, xd ) будем обозначать как m( x1 , x2 ,
, xd ) . При такой
нумерации процессоров вершины, соответствующие модулям m( x1 , x2 ,
m( x1, x2 ,
, xd ) и
, xd ) , будут связаны в графе H ребром, если и только если:
i  j, i  1, d :  xi  xi    x j  x j  1 
  x j  x j  1   .
x j N j
x j 1 


Иными словами, вершины будут связаны ребром лишь тогда, когда порядковые
номера соответствующих модулей отличаются на 1 в единственном измерении.
35
Мультикомпьютер, представленный описанным способом, условно обозначим через N (H ) .
ОММК N (H ) выполняет множество параллельных программ   { u } ,
которые могут быть загружены и активизированы одновременно либо поступать в систему в определенном порядке. В дальнейшем условимся рассматривать одну из программ множества  , например, некоторую программу  u , при
этом действие всех теоретических положений будем распространять на любую
программу из  . Пусть программа  u представлена параллельной графсхемой (ПарГСА) Gu с множеством операторных и условных вершин Vu и с
множеством дуг Eu  Vu  Vu , причем на множестве Vu заданы отношения следования  , связи  , альтернативы  и параллельности  [2].
Определение 1. Ветвью назовем всякое максимальное по включению


множество вершин Bs  as1 ,as2 , ,asq  Vu такое, что
a  B , c  1, q  1:  a , a   E  k  s  
  a  B , c  2, q :  a , a   E  l  s  
   a , a   E , c  1, q  1 .
sc
s
sc
sc
sc
s
sc 1
l
k
sc
u
u
c 1
c 1
u
Множество ветвей граф-схемы Gu обозначим Du   B1 , B2 ,

, BTu .
Определение 2. Ветви B , B  Du назовем параллельными, если и только
если
a f  B , ag  B : a f ag .
Введем отображение  u : Vu  M , устанавливающее распределение вершин ПарГСА между процессорными модулями, таким образом, чтобы выполнялось условие
a f , a g Vu , a f  a g :  u  a f    u  a g  .
В результате попарно параллельные вершины будут распределены в разные модули. При этом для ветвей данной программы можно получить отобра-
36
жение  u : Du  M . Отображение  u в общем случае не будет однозначным,
так как допускает разбиение ветвей на фрагменты, назначаемые на разные процессорные модули:
Bs  Du :  u* Bs   1 .
В связи с этим всякую ветвь B s , такую, что  u* Bs   1, разобьем на
фрагменты (подветви) Bs1 , Bs2 ,, Bsps  Bs так, чтобы выполнялось условие:
a , a  B , r 1, 2, , p ,  a , a   E :   a     a  
  a  B , a  B ,   a , a   E     a , a   E  :   a     a   .
f
r
s
g
h
r
s
s
e
r
s
e
h
g
u
f
u
h
f
e
u
g
e
h
Обозначим через Du объединенное множество ветвей, включающее все
ветви Bs  Du , такие, что  u* Bs   1, и все выделенные подветви. В результате
получим функциональное отображение  u : Du  M , определяющее межпроцессорное распределение ветвей граф-схемы Gu . Далее (если это не является
причиной неоднозначности) будем выделенные фрагменты ветвей также условно называть ветвями.
На множестве ветвей Du* зададим отношение непосредственного предшествования  u  Du*  Du* . Будем считать, что ветвь B непосредственно предшествует ветви B , т.е. B  u B , если и только если справедливо условие
a f  B , a g  B : (a f , a g )  Eu .
Определение 3. Любое максимальное по включению множество попарно
параллельных ветвей J  Du* такое, что B  J : B  u B , B  Du* \ J , условимся называть множеством синхронизации ( J -множеством).
Определение 4. Любое максимальное по включению множество попарно
параллельных ветвей F  Du* такое, что B  F , B  J : B  u B , где J – произвольное J -множество, будем называть множеством распараллеливания для
J ( F -множеством).
37
Каждой паре множеств ( F , J ) такой, что  J  Du   ( F  Du ) , соответствует некоторый барьер программы. Однако, парам множеств ( F , J ) , для ко-


торых J  Du \ Du  ( F  Du \ Du ) , не соответствует никаких барьеров. В связи с этим поставим в соответствие таким парам ( F , J ) фиктивные барьеры.
~
Множество всех барьеров, в том числе фиктивных, обозначим через Vu . При
~
этом J -множество ветвей, соответствующее барьеру al  Vu , будем обозначать
как J ( a l ) , а F -множество – F (al ) .
Каждую ветвь программы будем представлять текущим состоянием: «активна» либо «пассивна». Состояние «активна» означает, что данная ветвь выполняется в соответствующем модуле в текущий момент времени, а состояние
«пассивна» говорит о том, что ветвь не выполняется. Если ветвь не входит в
циклы, то ее «пассивность» означает, что она еще не выполнялась вовсе или
уже завершена; если ветвь находится внутри циклов, то ее «пассивность» будем
рассматривать только в рамках одной итерации самого вложенного цикла.
Формально состояние любой ветви Bp  Du условимся задавать индикаторной функцией:  p (t )  1 , если ветвь B p в момент времени t активна (т.е. выполняется в некотором модуле),  p (t )  0 иначе.
Для каждого барьера
as Vu
определим индикаторную функцию
Z s (t )  {0,1} , удовлетворяющую условиям: Z s (t )  0 , если хотя бы одна ветвь
Bs  J ( as ) в момент времени t активна, Z s (t )  1 иначе, Z s (0)  0 .
Будем полагать, что синхронизация ветвей J ( a s ) выполнена, если в некоторый момент t  , такой, что (t   0)  (t   ) , имеет место следующее условие
синхронизации:
Z s (t )  0  1,
где нотация 0  1 (1  0 ) означает переход значения из 0 в 1 (из 1 в 0).
Условие синхронизации ветвей множества J  as  можно выразить через
признаки их состояния следующей очевидной формулой:
38
Zs t  
  p (t ) .
(2.1)
B pJ  as 
Если ПарГСА Gu содержит циклы, то в зависимости от количества исполнений цикла синхронизации ветвей J ( a s ) может выполняться несколько
раз. Поэтому в общем случае необходимо, чтобы после достижения условия
синхронизации имело место следующее условие восстановления:
t , (t   t )  (t   ) : Z s (t )  1  0 .
Данное условие дает возможность корректно описать процесс взаимодействия ветвей при наличии циклических ветвлений. Причем оно должно быть
выполнено до момента следующей активизации первой ветви множества J ( a s )
(иначе реентерабельность процесса синхронизации не гарантируется, т.е. в
дальнейшем станет невозможным событие Z s (t )  0  1).
Определение 5. Промежуток времени от момента нарушения условия синхронизации
( Z s (t )  1  0 )
до
очередного
момента
его
выполнения
( Z s (t )  0  1) будем называть циклом (фазой) синхронизации. Принимаем
Z s (0)  0  1 .
Определение 6. Промежуток времени от момента выполнения условия
синхронизации ( Z s (t )  0  1) до следующего момента его нарушения
( Z s (t )  1  0 ) будем называть циклом (фазой) восстановления.
Определенные выше понятия проиллюстрируем схемой взаимодействия
параллельных ветвей гипотетической параллельной граф-схемы (рис. 2.1). На
рис. 2.1 выделен некоторый барьер a s и показаны соответствующие ему J- и Fмножества: J  as   B1 , B2 ,
, B6  , F  as   B7 , B8 ,
, B12 . Закрашенными по-
лосками показаны периоды активности ветвей. Моменты активизации ветвей
множества J  as  и моменты завершения ветвей множества F  as  с точки зрения процесса синхронизации не существенны и поэтому на диаграмме не показаны.
39
B1
Z s  t   0  1 t 
Z s  t   1  0 t 
B2
B3
B4
B5
B6
t 
as
t 
t12
B7
B8
B9
B10
B11
B12
t
Рис. 2.1. Диаграмма взаимодействия параллельных ветвей,
иллюстрирующая условия синхронизации и восстановления
Условие синхронизации ( Z s (t )  0  1) считается выполненным в момент завершения последней ветви множества J  as  (в нашем примере это
ветвь B6 ). Значение Z s  1 при этом формируется с задержкой t  . Таким образом, фаза синхронизации фактически заканчивается в момент t   t  , а задержка t  отражает продолжительность процессов, связанных с вычислением условия синхронизации. Фаза восстановления начинается с момента t   t  . Задержка t  учитывает продолжительность индикации окончания фазы синхронизации. Запуск ветвей множества F  as  осуществляется с дополнительной
40
задержкой, которая в общем случае зависит от их размещения в мультикомпьютере. В нашем примере указана задержка t12 запуска ветви B12 .
Следует отметить, что в случае принадлежности барьера as некоторому
циклу фаза восстановления должна завершаться до момента активизации первой ветви множества F  as  (в примере на рис. 2.1 это ветвь B10 ). Если это
условие не будет выполняться, то процесс взаимодействия параллельных ветвей может стать нереентерабельным (не сработает условие восстановления, а
следовательно, будет невозможна последующая синхронизация на очередной
итерации цикла).
Барьеры могут находиться в отношениях следования, альтернативы и параллельности. Определим эти отношения в строгой форме.
Определение 7. Будем считать, что барьер a s следует за барьером a r (
as
ar ), если и только если в граф-схеме алгоритма существует соединяющий
их простой путь L  ar , as  , не содержащий замыкающих дуг. Если путь L  ar , as 
не включает ни одного барьера, кроме a s и a r , то a s следует за a r непосредственно.
Определение 8. Барьеры a s и a r такие, что   as
ar     a r
as  ,
назовем параллельными ( as  ar ), если и только если в граф-схеме алгоритма
существуют два других не фиктивных барьера as и ar , s  r  , а также простые
пути L  as , as  , L  as , ar  , L  as , ar  , L  ar , ar  , не содержащие замыкающих дуг,
такие, что:
 L  as , as   L  as , ar   \ as       L  as , ar   L  ar , ar   \ ar     .
Иными словами, a s и a r будут параллельными, если они не связаны друг с другом, но при этом оба связаны по входу с барьером as и по выходу – с барьером
ar , т.е. находятся внутри другой параллельной конструкции.
41
Отметим, что параллельными также будут все парные сочетания барьеров, принадлежащие разным программам, которые одновременно выполняются
мультикомпьютером.
Определение 9. Барьеры a s и a r такие, что   as
ar     a r
as  ,
назовем альтернативными ( as  ar ), если и только если в граф-схеме алгоритма
существует условная вершина ad и пара простых путей L  ad , as  , L  ad , ar  , не
 L  a , a   L a , a  \ a    .
включающих замыкающих дуг, таких, что
d
s
d
r
d
Иными словами, альтернативными будут такие барьеры, которые располагаются в разных ветвях альтернативного ветвления.
Отметим, что, поскольку введенные отношения между барьерами определены без учета замыкающих дуг циклов, они не во всех случаях корректно отражают следование и альтернативность барьеров, размещенных в циклах.
Например, два барьера, связанные отношением
, могут одновременно быть и
альтернативными, если один из них принадлежит телу цикла, а другой находится за циклом. Подобные ситуации при необходимости рассматриваются отдельно.
2.3. Особенности разработанного метода барьерной синхронизации
2.3.1. Определение индикаторных функций и условий синхронизации
Для формализации описания разработанного метода введем ряд понятий
и обозначений.
Каждому процессорному модулю m( x1 , x2 ,
N (H ) сопоставим двоичный вектор ( x1 , x2 ,
, xd )
, xd ) мультикомпьютера
, устанавливающий соответствие
между модулями ОММК и барьерами u -й программы. Назовем ( x1 , x2 ,
, xd )
вектором соответствия:
( x1 , x2 ,
, xd )

( x1 , x2 , , xd )
 y1
( x1 , x2 , , xd )
, y2
,.., yn( x p1 , x2 ,
, xd )
.
Для упрощения здесь и далее не будем указывать индекс программы u, если это
не вызывает неоднозначности.
42
Компоненты вектора ( x1 , x2 ,
модулем m( x1 , x2 ,
определим так: ys( x1 , x2 ,
, xd )
 0 , если за
, xd ) закреплена ветвь программы, завершающаяся барье-
ром a s , в противном случае ys( x1 ,x2 ,
m( x1 , x2 ,
, xd )
, xd )
 1. В результате при ys( x1 , x2 ,
, xd )
 0 модуль
, xd ) будет участником s-й барьерной группы, а при ys( x1 , x2 ,
нет. В случае, когда ys( x1 ,x2 ,
, xd )
 1, модуль m( x1 , x2 ,
, xd )
1 –
, xd ) не должен оказывать
влияния на процесс синхронизации ветвей, сходящихся в барьере a s . Таким образом, ( x1 , x2 ,
, xd )
представляет собой битовую маску, выделяющую множе-
ство выполняемых барьеров для модуля m( x1 , x2 ,
, xd ) .
Пусть B p – некоторая ветвь, назначенная на модуль m( x1 , x2 ,
, xd ) .
Предположим, что B p  J  as  . Тогда состояние модуля по отношению к барьеру a s можно описать, комбинируя признак состояния данной ветви  p (t ) и
компоненту вектора соответствия ys( x1 , x2 ,
zs( x1 , x2 ,
Согласно формуле (2.2) zs( x1 , x2 ,
, xd )
, xd )
:
 t   ys( x ,x ,
, xd )
1
2
, xd )
  p (t ) .
(2.2)
 t   1, если модуль m( x1 , x2 ,
, xd ) не является
участником s-й барьерной группы либо не выполняет ветвь B p  J  as  ,
zs( x1 , x2 ,
, xd )
 t   0 , если модуль m( x1 , x2 ,
, xd ) является участником s-й барьерной
группы и ещё выполняет ветвь B p  J  as  . zs( x1 , x2 ,
модуль m( x1 , x2 ,
, xd )
t   0  1
означает, что
, xd ) завершил выполнение ветви B p в момент t.
Выразим индикаторную функцию Z s  t  через признаки состояния модулей по отношению к барьеру a s . Обозначим через M  as  множество всех модулей, на которые назначены ветви B p  J  as  . Тогда, принимая во внимание,
что
ys( x1 , x2 ,
m( x1 , x2 ,
, xd )
, xd )  M  as  :
ys( x1 ,x2 ,
, xd )
 1,
 0 , с учетом формулы (2.1) получим:
а
m( x1 , x2 ,
, xd )  M  as  :
43
Z s  t      p (t )   

y ( x1 , x2 ,
 BpJ  as 
  m ( x1 , x2 , , xd )M  as  s



ys( x1 , x2 ,
B

J
a
 m ( x , x ,p , x )sM a
 1 2 d  s

Поскольку zs( x1 ,x2 ,
, xd )
, xd )
y
, xd )
( x1 , x2 , , xd )
s
 t   ys( x ,x ,
1
2
, xd )



  p (t )   

ys( x1 , x2 ,

m
(
x
,
x
,
,
x
)

M
a
  1 2 d  s


  p (t )  ys( x1 ,x2 ,
, xd )
 ys( x1,x2 ,
, xd )
, xd )
.

  p (t )
(формула (2.2)), в последнем выражении можно выполнить замену и переписать
его так:
Zs t   

z ( x1 ,x2 ,
 m( x1 ,x2 , ,xd )M as  s
Так как m( x1 , x2 ,
, xd )
 t   m( x ,x , ,x )M a  ys( x ,x ,
1
 
1
2
d
2
s
, xd )  M  as  по определению ys( x1 ,x2 ,
модулей корректно принять zs( x1 , x2 ,
, xd )
 t   ys( x ,x ,
1
2
, xd )
, xd )
, xd )
.

 1, для этих
. Таким образом, последняя
формула будет приведена к виду:
Zs t  

m ( x1 , x2 , , xd )M
zs( x1 , x2 ,
, xd )
t  .
(2.3)
Согласно полученной формуле условие синхронизации будет обеспечено
( Z s  t   0  1 ) в тот момент, когда признаки состояния всех модулей по отношению к барьеру a s примут единичное значение, т.е. m( x1 , x2 ,
zs( x1 , x2 ,
, xd )
, xd )  M :
 t   1. Более строго, условие синхронизации считается выполненным
в момент времени t  , когда наступает событие zs( x1 , x2 ,
, xd )
 t   0  1, при усло-
вии, что

m ( x1 , x2 , , xd )M
m ( x1 , x2 , , xd )m ( x1 , x2 , , xd )
zs( x1 , x2 ,
, xd )
t   1,
т.е. в момент завершения последней выполняющейся ветви множества J  as 
модулем m( x1, x2 ,
, xd ) .
Таким образом, для обеспечения синхронизации в ОММК необходимо
вычисление множества индикаторных функций Z s (t ) для всех барьеров по
44
текущим значениям признаков zs( x1 , x2 ,
. xd )
 t  и оперативная рассылка «уведом-
лений» о наступлении событий вида Z s  t   0  1 всем модулям, ожидающим
завершение соответствующего барьера. Эти задачи решаются координирующей
средой мультикомпьютера.
2.3.2. Определение топологии физических слоев координирующей среды
Определим конфигурацию физических слоев координирующей среды
ОММК для реализации разработанного метода распределенной барьерной синхронизации.
Обозначим через K l физический слой координирующей среды, l  1, n .
Пусть Cl – множество ячеек слоя K l . Положим, что K l  K l1 , K l2 ,.., K lp  – множество виртуальных слоев, размещенных в физическом слое K l . Величину n
назовем разрядностью координирующей среды, а величину p – степенью виртуализации.
Топологическую структуру физических слоев координирующей среды
будем определять согласно топологической структуре ОММК. Их ячейки поставим в соответствие модулям мультикомпьютера. Ячейку слоя K l , соответствующую модулю m( x1 , x2 ,
, xd ) , условно обозначим как cl ( x1 , x2 ,
Свяжем множество ячеек cl ( x1 , x2 ,
, xd ) .
, xd ) одноразрядными сетями синхрониза-
ции и восстановления. Сеть синхронизации будет обеспечивать пошаговое вычисление
и
распространение
на
все
модули
условия
синхронизации
Z s (t )  0  1, а сеть восстановления – вычисление и передачу всем модулям
условия восстановления Z s (t )  1  0 . Объединение сетей синхронизации и
восстановления дает топологическую структуру слоя K l .
Топологию сети синхронизации определим орграфом H l  Cl ,U l  ,
множество вершин которого соответствует множеству ячеек Cl , а множество дуг
45
U l отражает связи между ячейками. Вершины, соответствующие ячейкам
cl ( x1 , x2 ,
, xd ) и cl ( x1 , x2 ,
, xd ) , свяжем в графе H l дугой, если и только если:
i  j, i  1, d :  xi  xi    x j  x j  1
Иными словами, из вершины cl ( x1 , x2 ,
cl ( x1 , x2 ,
x j  2, N j
.
(2.4)
, xd ) будет исходить дуга в вершину
, xd ) лишь тогда, когда порядковые номера соответствующих ячеек
отличаются на 1 в единственном измерении, причем cl ( x1 , x2 ,
, xd ) располага-
ется ближе к началу координат.
На рис. 2.2 представлен орграф H l  Cl ,U l  , отображающий топологию
сети синхронизации слоя K l в двумерном матричном мультикомпьютере.
cl (1,1)
cl (2,1)
cl (3,1)
cl ( N1 ,1)
cl (1, 2)
cl (2, 2)
cl (3, 2)
cl ( N1 , 2)
cl (1,3)
cl (2,3)
cl (3,3)
cl ( N1 ,3)
cl (1, N 2 )
cl (2, N 2 )
cl (3, N 2 )
cl ( N1 , N 2 )
Рис. 2.2. Топологическая структура сети синхронизации слоя K l
для двумерного ОММК
46
Топологию сети восстановления определим орграфом H l  Cl ,U l  ,
множество вершин которого соответствует множеству ячеек Cl , а множество дуг
U l отражает связи между ячейками. Вершины, соответствующие ячейкам
cl ( x1 , x2 ,
, xd ) и cl ( x1 , x2 ,
, xd ) , свяжем в графе H l дугой, если и только если:
i  j, i  1, d :  xi  xi    x j  x j  1
Иными словами, из вершины cl ( x1 , x2 ,
cl ( x1 , x2 ,
x j  2, N j
.
(2.5)
, xd ) будет исходить дуга в вершину
, xd ) лишь тогда, когда порядковые номера соответствующих ячеек
отличаются на 1 в единственном измерении, причем cl ( x1 , x2 ,
, xd ) располага-
ется дальше от начала координат.
На рис. 2.3 представлен орграф H l  Cl ,U l  , отображающий топологию
сети восстановления слоя K l в двумерном матричном мультикомпьютере.
2.3.3. Определение логической конфигурации физических слоев координирующей
среды
Логика функционирования ячеек cl ( x1 , x2 ,
, xd ) в фазе синхронизации
определяется следующим образом:
Z s( x1 , x2 ,
, xd )
 t   zs( x ,x ,
1
2
Z s( x11,x2 ,
где Z s( x1 , x2 ,
t 
t  
,x )
 t   Z s( x ,x 1,
, xd )
d
1
2
, xd )
t  
 Z s( x1 , x2 ,
, xd 1)
t 
,
(2.6)
– сигнал, снимаемый с прямого выхода ячейки cl ( x1 , x2 ,
, xd ) ,
s – номер барьера, соответствующего слою K l , причем если i 1,2,
, d :
, xd )
xi  0 , то предполагается Z s( x1 , x2
, xd )
ствующей» ячейки всегда равен 1).
t   1
(сигнал с прямого выхода «несуще-
47
cl (1,1)
cl (2,1)
cl (3,1)
cl ( N1 ,1)
cl (1, 2)
cl (2, 2)
cl (3, 2)
cl ( N1 , 2)
cl (1,3)
cl (2,3)
cl (3,3)
cl ( N1 ,3)
cl (1, N 2 )
cl (2, N 2 )
cl (3, N 2 )
cl ( N1 , N 2 )
Рис. 2.3. Топологическая структура сети восстановления слоя K l
для двумерного ОММК
Последовательно подставляя друг в друга выражения (2.6) и учитывая
идемпотентность конъюнкции, в конечном счете можно получить формулу для
Z s( N1 ,N 2 ,
,Nd )
t  :
Z s( N1 ,N 2 ,
,N d )
 t   m ( x ,x , ,x )M zs( x ,x ,
1
1
2
2
, xd )
t  .
(2.7)
d
Сопоставляя выражения (2.3) и (2.7), видим, что Z s  t   Z s( N1 ,N 2 ,
Значит Z s( N1 ,N 2 ,
,N d )
распространения
Z s( N1 ,N 2 ,
,Nd )
t   0  1
сигнала
 t  t   0  1
,Nd )
t  .
 Z s  t   0  1 . Более строго, с учетом задержек
в
координирующей
среде
(см.
рис. 2.1),
 Z s  t   0  1. Таким образом, при выбранной ор-
48
ганизации сети синхронизации слоя K l , выполнение условия синхронизации
можно определить по положительному перепаду значения на выходе ячейки
, Nd ) .
cl ( N1 , N 2 ,
Логику функционирования ячеек cl ( x1 , x2 ,
, xd ) в фазе восстановления
можно определить следующим выражением:
Z s( x1 , x2 ,
где
Z s( x1 , x2 ,
, xd )
, xd )
 t   Z s( x 1,x ,
1
t 
2
, xd )
 t   Z s( x ,x 1,
1
2
, xd )
t  
 Z s( x1 , x2 ,
, xd 1)
t  ,
(2.8)
– сигнал, снимаемый с инверсного выхода ячейки
, xd ) , причем если i 1,2,
cl ( x1 , x2 ,
Z s( x1 , x2
, xd )
, d  : xi  N i  1, то предполагается
 t   0 (сигнал с инверсного выхода «несуществующей» ячейки всегда
равен 0).
Для связывания сетей синхронизации и восстановления в единый слой K l
примем
Z s( N1 ,N 2 ,
Z s( N1 ,N 2 ,
t   0  1
,N d )
,N d )
 t   Z s( N ,N ,
1
2
,N d )
t  .
Таким
будет порождать событие Z s( N1 ,N 2 ,
образом,
,N d )
переход
 t   1  0 , означаю-
щее Z s  t   1  0 (начало фазы восстановления). Более строго, с учетом задержек
распространения
Z s( N1 ,N 2 ,
,N d )
t   1  0
Z s( N1 ,N 2 ,
,N d )
t   1  0
Z s( N1 1,N 2 ,
,N d )
Z s( N1 1,N 2 ,
согласно
, N d 1)
Z s( N1 ,N 2 1,
образом
t   1  0 ,
пит событие Z s(1,1,
,1)
в
формуле
,Nd )
Z s( N1 2,N 2 ,
,Nd )
свою
среде,
из
очередь,
из
вытекают
Z s( N1 ,N 2 ,
события
t   1  0
В
(2.8)
 t   1  0 , …,
происходят
t   1  0 ,
координирующей
Z s  t  t   1  0 .
следует
t   1  0 ,
аналогичным
сигнала
, N d 1)
события
 t   1  0 . Далее
Z s( N1 1,N 2 1,
,Nd )
t   1  0 ,
и т.п. И в конце концов насту-
причем произойдет оно лишь после того, как
такие же события наступят во всех остальных ячейках слоя K l . Это событие
соответствует концу текущей фазы восстановления и началу следующей фазы
синхронизации. Более строго, с учетом задержек оно наступит не раньше момента t  t  и не позже, чем в момент t  t  (см. рис. 2.1).
49
Модифицируем формулу (2.6) для ячейки cl (1,1,
,1) , добавив в нее до-
полнительное условие синхронизации с завершением фазы восстановления.
Получим:
Z s(1,1,
,1)
 t   zs(1,1, ,1)  t   Z s(1,1,
Таким образом, теперь событие Z s(1,1,
,1)
t   0  1
,1)
t  .
(2.9)
не может произойти раньше,
чем завершится предыдущая фаза восстановления, а следовательно, и раньше
окончания предыдущего барьерного эпизода для этого же барьера a s . Подобная
модификация обеспечивает реентерабельность процесса барьерной синхронизации в случае циклической обработки одного и того же барьера.
Упрощенная логическая организация слоя K l , получаемая согласно описанным выше теоретическим построениям, будет иметь вид композиции двух
сетей вентилей (сети синхронизации и восстановления), связанных цепями обратной связи через дополнительные вентили. Для двумерного ОММК ее можно
представить так, как показано на рис. 2.4 (сеть синхронизации состоит из вентилей с прямыми входами/выходами, а сеть восстановления – из вентилей с инверсными входами/выходами).
Устойчивое начальное состояние слоя K l обеспечивается наличием нулевого сигнала по меньшей мере на одном входе z s( x , y )  t  . Таким образом, нулевым будет и сигнал Z s( N1 ,N 2 )  t  , а следовательно, Z s( N1 ,N 2 )  t   1 . Распространяясь
по цепочкам вентилей сети восстановления от ячейки cl  N1 , N 2  до ячейки
cl 1,1 этот сигнал подтверждает единичный уровень на входе Z s(1,1)  t  . Как
только на всех входах zs( x , y )  t  окажутся единичные значения, согласно выражению (2.7) (с учетом задержки распространения сигнала) наступит событие
Z s( N1 ,N 2 )  t   0  1, означающее выполнение условия синхронизации для теку-
щего барьера a s . Далее, как следствие, произойдет событие Z s( N1 ,N 2 )  t   1  0 ,
которое распространится по цепочкам вентилей сети восстановления до входа
50
Z s(1,1)  t  . Затем нулевой сигнал пройдет по всем вентилям сети синхронизации и
в конечном счете вернет сигнал Z s( N1 ,N 2 )  t  в исходное (нулевое) состояние. Для
обеспечения устойчивости функционирования слоя K l важно, чтобы за время
распространения перепада 1  0 по сети синхронизации были сброшены в ноль
все сигналы zs( x , y )  t  . Как будет показано в следующей главе, это требование
несложно выполнить на аппаратном уровне.
Z s(1,1)
&
zs(1,1)
Z
“1”
cl (1,1)
&
(1,1)
s
“1”
cl (2,1)
&
“1”
cl (3,1)
&
zs(2,1)
&
“1”
“0”
&
zs( N1 ,1)
zs(3,1)
&
cl ( N1 ,1)
&
&
“1”
cl (2, 2)
cl (1, 2)
&
z
&
(1,2)
s
z
cl ( N1 , 2)
&
(2,2)
s
&
cl (3, 2)
z
&
“0”
&
(3,2)
s
z
( N1 ,2)
s
&
&
“1”
&
&
&
cl ( N1 ,3)
&
zs(2,3)
zs(1,3)
cl (3,3)
cl (2,3)
cl (1,3)
zs( N1 ,3)
zs(3,3)
&
“0”
&
&
&
“1”
cl (1, N 2 )
&
z
&
(1, N 2 )
s
z
&
cl (3, N 2 )
cl (2, N 2 )
cl ( N1 , N 2 )
&
(2, N 2 )
s
z
&
&
(3, N 2 )
s
z
&
( N1 , N 2 )
s
&
“1”
“0”
“0”
“0”
Z s( N1 ,N 2 )
&
Z s( N1 ,N 2 )
Рис. 2.4. Упрощенная логическая конфигурация слоя K l в двумерном ОММК
51
2.3.4. Виртуализация физических слоев координирующей среды
Представленная выше конфигурация позволяет использовать один физический слой K l для синхронизации любого числа последовательно выполняемых или альтернативных барьеров. Параллельные барьеры (это могут быть как
барьеры одной программы, так и барьеры независимо выполняющихся программ) при этом можно реализовать двумя путями: 1) параллельным включением нескольких слоев K l ; 2) виртуализацией физического слоя K l . Первый путь
имеет очевидные ограничения, так как разрядность координирующей среды m
фиксирована на аппаратном уровне (он реализован в большинстве известных
аппаратных методов барьерной синхронизации). Поскольку максимальное число параллельных барьеров в ОММК заранее неизвестно и зависит от состава и
характера приложений, этот путь не дает приемлемого решения для практики.
Второй путь не имеет жестких аппаратно-зависимых ограничений и позволяет
синхронизировать в одном физическом слое произвольное число параллельных
барьеров, используя режим разделения времени (каждый барьер реализован в
«своем» виртуальном слое). Его недостатком является рост времени синхронизации при увеличении глубины виртуализации p физического слоя. Учитывая
сказанное, целесообразна комбинация указанных выше путей. Подобный подход нашел отражение в [106].
Дадим формализованное представление механизма виртуализации физического слоя координирующей среды ОММК.
Итак, будем считать, что K l  K l1 , K l2 ,.., K lp  – множество виртуальных
слоев, назначенных на физический слой K l .
Топологическую структуру виртуального слоя координирующей среды
будем определять по топологической структуре сетей синхронизации и восстановления физического слоя. Ячейке cl ( x1 , x2 ,
, xd ) слоя K l поставим в соот-

ветствие множество виртуальных ячеек cli ( x1 , x2 ,
мутирующих ячеек kl ( x1, x2 ,
, xd ) , kl ( x1, x2 , , xd ) .

, xd ) , i  1, p , и пару ком-
52
Свяжем все виртуальные и коммутирующие ячейки виртуальной сетью
синхронизации, которую опишем орграфом H l  Cl ,U l  . Множество его вершин будет соответствовать множеству виртуальных и коммутирующих ячеек, а
множество дуг U l – связям между ячейками. В графе H l свяжем дугами все

вершины, соответствующие ячейкам множества cli ( x1 , x2 ,
вершиной, отображающей ячейку kl ( x1, x2 ,
отображающей ячейку kl ( x1, x2 ,

, xd ) , по входу с
, xd ) , и по выходу – с вершиной,
, xd ) . Также свяжем в графе H l пары вершин,
соответствующие ячейкам kl ( x1, x2 ,
, xd ) и kl ( x1, x2 , , xd ) , если и только ес-
ли:
i  j, i  1, d :  xi  xi    x j  x j  1
Иными словами, из вершины kl ( x1, x2 ,
x j 1, N j 1
.
, xd ) будет исходить дуга в вершину
kl ( x1, x2 , , xd ) лишь тогда, когда порядковые номера соответствующих ячеек
отличаются на 1 в единственном измерении, причем kl ( x1, x2 ,
, xd ) располага-
ется ближе к началу координат.
На рис. 2.5 представлен орграф H l  Cl ,U l  , отображающий топологию
виртуальной сети синхронизации слоя K l в двумерном матричном мультикомпьютере (вершины, соответствующие коммутирующим ячейкам, выделены
штриховкой). Для иллюстрации на рис.2.5 жирным выделены вершины и дуги,
соответствующие одному из виртуальных слоев (в нашем случае это слой Kl2 ).
Аналогичным образом свяжем все введенные ранее виртуальные и коммутирующие ячейки виртуальной сетью восстановления. Сеть опишем орграфом
H l  Cl ,U l  , множество вершин которого соответствует множеству виртуаль-
ных и коммутирующих ячеек, а множество дуг U l отражает связи между ячейками. В графе H l свяжем дугами все вершины, соответствующие ячейкам множества
c ( x , x ,
i
l
1
2

, xd ) , по входу с вершиной, отображающей ячейку
53
kl ( x1, x2 , , xd ) , и по выходу – с вершиной, отображающей ячейку
kl ( x1, x2 , , xd ) . Также свяжем в графе H l пары вершин, соответствующие
ячейкам kl ( x1, x2 ,
, xd ) и kl ( x1, x2 , , xd ) , если и только если:
i  j, i  1, d :  xi  xi    x j  x j  1
x j  2, N j
kl ( N1 , N 2 )
.
clp ( N1 , N 2 )
cl1 ( N1 , N 2 ) k  ( N , N )
l
1
2
Рис. 2.5. Топологическая структура виртуальной сети синхронизации слоя K l
для двумерного ОММК
Иными словами, из вершины kl ( x1, x2 ,
, xd ) будет исходить дуга в вершину
kl ( x1, x2 , , xd ) лишь тогда, когда порядковые номера соответствующих ячеек
54
отличаются на 1 в единственном измерении, причем kl ( x1, x2 ,
, xd ) располага-
ется ближе к началу координат.
На рис. 2.6 изображен орграф H l  Cl ,U l  , отображающий топологию
виртуальной сети восстановления слоя K l в двумерном матричном мультикомпьютере (вершины, соответствующие коммутирующим ячейкам, выделены
штриховкой). Для иллюстрации на рис.2.6 жирным выделены вершины и дуги,
соответствующие виртуальному слою Kl2 .
kl ( N1 , N 2 )
clp ( N1 , N 2 )
cl1 ( N1 , N 2 ) k  ( N , N )
l
1
2
Рис. 2.6. Топологическая структура виртуальной сети восстановления слоя K l
для двумерного ОММК
55
2.3.5. Определение логической конфигурации виртуальной координирующей
среды
Для определения логической конфигурации координирующей среды,
включающей множество виртуальных каналов в одном слое K l , необходимо
установить порядок активизации виртуальных слоев в отдельных ячейках. Активным (для данной ячейки) назовем тот виртуальный слой, для которого в
данной
ячейке
Z s( x1 , x2 ,
t  .
, xd )
вычисляется
новое
значение
индикаторной
функции
Выделим в графе H l вершины, соответствующие ячейкам с минимальными и максимальными координатами по всем измерениям – cl (1,1,
cl ( N1 , N 2 ,
,1) и
, N d ) . Множество оставшихся вершин разобьем на максимальные по
включению подмножества C l1 , Cl2 , …, Clq таким образом, чтобы в подмножество
Cl j , j  1, q , вошли все вершины, которые находятся на расстоянии j от вершины
cl (1,1,
,1) . Ясно, что эти подмножества не будут пересекаться по определению,
а значение величины q будет пропорционально ориентированному диаметру
d

графа H l : q     N i  1  1 . Назовем множество Cl j j-м прямым фронтом.
 i 1

Добавим в полученное множество прямых фронтов два дополнительных
множества (фронта) Cl0  cl (1,1,
,1) и Clq1  cl ( N1, N 2 , , N d ). Таким обра-
зом, общее количество прямых фронтов составит q  2 .
Аналогичным образом выделим в графе H l вершины, соответствующие
ячейкам с минимальными и максимальными координатами по всем измерениям – cl (1,1,
,1) и cl ( N1 , N 2 ,
, N d ) . Множество оставшихся вершин разобьем на
максимальные по включению подмножества C l1 , Cl2 , …, Clq таким образом, чтобы в подмножество Cl j , j  1, q , вошли все вершины, которые находятся на рас-
56
стоянии j от вершины cl ( N1 , N 2 ,
d

, N d ) . Аналогично: q     N i  1  1 . Назо i 1

вем множество Cl j j-м обратным фронтом.
Добавим в полученное множество обратных фронтов два дополнительных
множества (фронта) Cl0  cl ( N1, N 2 ,
, N d ) и Clq1  cl (1,1, ,1). Таким обра-
зом, общее количество обратных фронтов будет равно q  2 .
Порядок формирования прямых и обратных фронтов проиллюстрирован
на рис. 2.7 на примере двумерного ОММК.
Cl0
cl (1,1)
cl (2,1)
cl (3,1)
Cl2
Cl3
cl (1, 2)
cl (2, 2)
cl (3, 2)
cl (1,3)
cl (2,3)
cl (3,3)
Cl1
Cl3
cl ( N1 , N 2  2)
Cl2
cl ( N1 , N 2  1)
Cl1
Cl0
cl ( N1  2, N 2 ) cl ( N1  1, N 2 ) cl ( N1 , N 2 )
Рис. 2.7. Порядок формирования прямых и обратных фронтов
для двумерного ОММК
В дальнейшем будем полагать, что если ячейка cl ( x1 , x2 ,
жит некоторому фронту Cl j (или Cl j ), то и все ячейки
, xd ) принадле-
c ( x , x ,
i
l
1
2

, xd ) ,
kl ( x1, x2 , , xd ) и kl ( x1, x2 , , xd ) входят в этот фронт.
С учетом сказанного установим следующий порядок активизации виртуальных слоев в ячейках координирующей среды. В первую очередь примем, что
в пределах одного фронта (прямого или обратного) во всех ячейках активен
один и тот же виртуальный слой. Пусть для фронта Cl j в текущий момент вре-
57
мени активным будет слой K lr , r 1,2,
, p. Тогда для фронта Cl j 1 активным
будем считать слой Klr 1 , если r  p , и слой K l1 , если r  p . Для фронта Cl j 1 ,
таким образом, активным будет слой Klr 1 при r  1 и слой K lp при r  1. Аналогично можно определить активность виртуальных слоев для обратных фронтов.
Описанный порядок активизации виртуальных слоев проиллюстрируем на
примере среды синхронизации двумерного ОММК (см. рис.2.8). Для определенности на рис. 2.8 принято, что мультикомпьютер имеет конфигурацию 4  4 , а
глубина виртуализации координирующей среды p  5 ; активные виртуальные
ячейки и связи выделены жирными линиями.
Рис. 2.8. Порядок активизации виртуальных слоев
координирующей среды двумерного ОММК
58
Из представленной иллюстрации видно, что в каждой физической ячейке
происходит последовательное циклическое переключение виртуальных слоев,
причем в пределах одного фронта переключения осуществляются синхронно. В
то же время ячейки фронта с меньшим порядковым номером переключаются с
запаздыванием относительно текущего фронта, а ячейки фронта с большим порядковым номером, наоборот, – с опережением. Величина запаздывания / опережения (в тактах) пропорциональна разности номеров фронтов. Аналогично происходит активизация виртуальных слоев в сети восстановления.
Логическую конфигурацию координирующей среды ОММК определим
на примере одной из физических ячеек (учитывая их идентичность). Пусть это
будет ячейка cl ( x1 , x2 ,
, xd ) . Предположим, что данная ячейка принадлежит
прямому фронту Cl j , j 0,1,2,
, q 1. Допустим, что для фронта Cl j активным
является некоторый виртуальный слой rj 1, 2,
, p . Будем считать, что барье-
ры определенным образом распределены между виртуальными слоями, причем
барьер a s , являющийся текущим для модуля m( x1 , x2 ,
альный слой rj 1, 2,
, xd ) , назначен на вирту-
, p . Также положим, что модуль m( x1 , x2 ,
, xd ) выпол-
няет ветвь Bk , завершающуюся барьером a s .
С учетом принятых допущений и формулы (2.2) текущее состояние модуля m( x1 , x2 ,
, xd ) по отношению к барьеру a s можно определить в следующем
виде:
zs( x1 , x2 ,
, xd )
 t   ys( x ,x ,
Согласно формуле (2.10) zs( x1 , x2 ,
1
, xd )
2
, xd )
  rj  rj   k (t ) .
(2.10)
 t   1, если активен виртуальный слой, на ко-
торый назначен s-й барьер, при этом модуль m( x1 , x2 ,
, xd ) не выполняет ветвь
Bk  J  as  либо данный модуль вообще не является участником s-й барьерной
группы. Иными словами, состояние ветви Bk учитывается только при совпадении номеров двух виртуальных слоев – активного для ячейки cl ( x1 , x2 ,
соответствующего барьеру a s .
, xd ) и
59
Чтобы обеспечить вычисление индикаторной функции по формуле (2.3) с
учетом распределения барьеров по виртуальным слоям, необходимо хранение
локальных значений индикаторной функции Z s( x1 , x2 ,
, xd )
t 
и их передача в со-
седние ячейки только в период активности виртуального слоя s-го барьера. Это
условие несложно обеспечить на аппаратном уровне с использованием статического регистра и коммутирующих элементов, а также соответствующего механизма тактовой синхронизации ячеек координирующей среды.
Логическая конфигурация ячейки cl ( x1 , x2 ,
, xd ) координирующей сре-
ды, полученная исходя из вышеизложенных предположений, в упрощенном виде
представлена на рис. 2.9. Отметим, что представленная схема является неполной
и отображает логику работы ячейки только в составе сети синхронизации. Аналогичная схема для сети восстановления рассматривается ниже.
D
Z (f1x1 , x2 ,
, xd )
Z (f2x1 , x2 ,
, xd )
TT
T
Z s( x1 , x2 ,
C
1
, xd 1)
D
TT
C
Z s( x1 , x2 1,
, xd )
Z s( x1 1, x2 ,
, xd )
2
&
Z
DX
y
k
rj
D
1
( x1 , x2 , , xd )
s
( x1 , x2 , , xd )
fi
MX
TT
&
zs( x1 , x2 , , xd )
Z s( x1 , x2 ,
C
i
, xd )
==
D
TT
C
p
Z (f xp1 , x2 ,
, xd )
rj
Рис. 2.9. Упрощенная логическая конфигурация ячейки
сети синхронизации d-мерного ОММК
Z s(x1 , x2 ,
, xd )
60
Виртуализация физического слоя K l , как показано на рис. 2.9, обеспечивается введением статического регистра, состоящего из p триггеров. Триггеры
содержат текущие значения индикаторных функций Z (fix1 ,x2 ,
рьеров a fi  , назначенных на виртуальные слои Kl1 , Kl2 ,
элементы
DX
и
MX
реализуют
функции
, xd )
 t  для всех ба-
, Klp . Коммутирующие
ячеек
kl ( x1, x2 , , xd )
и
kl ( x1, x2 , , xd ) соответственно. Вход T служит для приема тактовых импульсов
для управления записью данных в триггеры. Правила и схемы формирования
значений rj , rj ,  k , ys( x1 , x2 ,
, xd )
, а также механизм тактовой синхронизации рабо-
ты координирующей среды подробно рассматриваются в дальнейшем.
При ys( x1 ,x2 ,
функций ( zs( x1 , x2 ,
, xd )
, xd )
 1 текущий модуль не влияет на значения индикаторных
 1 ). Их новые значения формируются объединением по И
значений, приходящих от соседних модулей, и заносятся в соответствующие
триггеры (согласно номеру активного виртуального слоя). При ys( x1 , x2 ,
, xd )
0
значение индикаторной функции определяется состоянием ветви Bk , выполняемой текущим модулем, причем оно учитывается только в тот момент, когда
активен требуемый виртуальный слой ( rj  rj ). Полученное значение заносится
в rj -й триггер (если ветвь Bk не завершена, то ноль, если завершена, то единица).
Логика работы ячейки cl ( x1 , x2 ,
, xd ) в составе сети восстановления в це-
лом аналогична и может быть описана схемой, изображенной на рис. 2.10.
Назначение элементов этой схемы не отличается от вышеприведенной схемы
(см. рис. 2.9).
61
D
Z (f1x1 , x2 ,
, xd )
Z (f2x1 , x2 ,
, xd )
TT
T
C
Z s( x1 , x2 ,
1
, xd 1)
D
TT
C
Z s( x1 , x2 1,
, xd )
Z s( x1 1, x2 ,
, xd )
2
&
Z
DX
D
rj
( x1 , x2 , , xd )
fi
MX
Z s(x1 , x2 ,
, xd )
TT
C
==
Z s( x1 , x2 ,
i
, xd )
D
TT
C
p
Z (f px1 , x2 ,
, xd )
rj
Рис. 2.10. Упрощенная логическая конфигурация ячейки
сети восстановления d-мерного ОММК
2.3.6. Организация тактовой синхронизации виртуальной координирующей
среды
С целью обеспечения согласованной работы ячеек координирующей среды с учетом виртуализации физических слоев необходима разработка соответствующего механизма их тактовой синхронизации. Одним их подобных механизмов является распределенная синхронизация циркулирующими волнами
тактовых импульсов (DCW-clocking), описанная в работе [106]. Непосредственное использование DCW-синхронизации в нашем случае не представляется
возможным из-за различия топологических структур координирующей среды,
поэтому примем этот подход за основу и разработаем на его базе модифицированный распределенный механизм тактовой синхронизации, применимый к
ОММК произвольной размерности.
62
Сущность
предлагаемого
модифицированного
механизма
DCW-
синхронизации заключается в следующем. Серии тактовых импульсов от процессорных модулей m(1,1,
,1) и m( N1 , N 2 , , N d ) передаются в координирую-
щую среду и независимо распространяются по прямым и обратным фронтам соответственно. Появление тактовых импульсов в ячейках некоторого фронта
(прямого или обратного) взаимно синхронизировано, что обеспечивает одновременное их переключение. От ячейки прямого фронта Cl j тактовый импульс передается в соседние ячейки, входящие в следующий прямой фронт Cl j 1 , а от
ячейки обратного фронта Cl j – соседям, входящим в обратный фронт Cl j 1 . После прохождения через все фронты импульсы прекращают распространение. Таким образом, процесс продвижения тактовых импульсов через координирующую
среду напоминает распространение двух серий «волн» синхроимпульсов. Первая
серия распространяется от модуля
m ( N1 , N 2 ,
m(1,1, ,1)
в направлении модуля
, N d ) и обеспечивает переключение ячеек сети синхронизации, а
вторая серия движется от модуля m( N1 , N 2 ,
, N d ) в направлении модуля
m(1,1, ,1) и управляет переключением ячеек сети восстановления. Частота следования волн тактовых импульсов может быть установлена произвольным образом на основе деления системной тактовой частоты процессорных модулей
m(1,1, ,1) и m( N1 , N 2 , , N d ) .
Рис. 2.11 схематично иллюстрирует порядок распространения тактовых
импульсов в координирующей среде двумерного ОММК в соответствии с разработанным механизмом тактовой синхронизации (здесь представлено распространение импульсов в сети синхронизации, для сети восстановления порядок
аналогичен с точностью до направления следования волн). Для упрощения на
данном рисунке отдельные ячейки отображены квадратами, а связи между ними условно не показаны.
Подобный порядок передачи тактовых импульсов ячейкам координирующей среды позволяет организовать конвейерное переключение виртуальных
слоев и тем самым ускорить процесс барьерной синхронизации. При достаточ-
63
но высокой частоте следования тактовых импульсов и, соответственно, при
большом числе волн, покрывающих матрицу ОММК, один и тот же виртуальный слой может быть одновременно активен в ячейках нескольких фронтов.
cl (1,1)
л
Во
на
ов
кт
та
х
ы
пу
им
со
ль
в
cl ( N1 , N 2 )
Рис. 2.11. Порядок распространения тактовых импульсов
в координирующей среде двумерного мультикомпьютера
2.3.7. Инвариантность разработанного метода к конфигурации
барьерных групп
Исследуем зависимость разработанного метода от конфигурации барьерных групп.
Конфигурацию барьерной группы будем описывать следующими параметрами:
64
 мощность – число параллельных ветвей в составе группы (от 2 до
N1  N 2 
 N d );
 размещение ветвей – однозначное соответствие ветвей модулям мультикомпьютера (обратная однозначность обязательна только для попарно параллельных ветвей).
Очевидно, что метод инвариантен к мощности барьерных групп. Действительно, указанная мощность влияет только на общее число признаков
ys( x1 , x2 ,
, xd )
, принимающих нулевое значение. При этом состав операций и поря-
док обработки этих признаков никак не связаны с их значениями, что следует
из логической конфигурации, представленной на рис. 2.9.
Несложно также показать, что метод инвариантен к способу размещения
синхронизируемых ветвей.
Поскольку
Z
( x1 , x2 , , xd )
s
 t 
распространение
значений
индикаторных
функций
в фазе восстановления происходит без проверки состояния мо-
дулей через все ячейки ВМКС (см. рис. 2.10), процесс барьерной синхронизации на данной фазе не зависит от размещения синхронизируемых ветвей. В связи с этим ограничимся только анализом фазы синхронизации. На фазе синхронизации признаки состояния ветвей k , формируемые процессорными модулями, обрабатываются аналогично признакам ys( x1 , x2 ,
, xd )
с учетом активности вир-
туальных слоев (см. рис. 2.9). При этом процесс распространения значений индикаторных функций Z s( x1 ,x2 ,
, xd )
 t 
в модуль m( N1 , N 2 ,
, N d ) зависит только
от значений этих признаков (наличие нулей) и не зависит от того, в каких
именно модулях формируются нулевые / единичные значения.
65
Выводы
1. Разработанный метод распределенной барьерной синхронизации для
ОММК произвольной размерности базируется на параллельно-конвейерном
распространении значений двоичных функций состояния (индикаторных функций) барьеров в многослойной координирующей среде, состоящей из множества виртуальных каналов (одноразрядных слоев), согласованное функционирование которых обеспечивается одновременной периодической рассылкой
«волн» тактовых импульсов от двух выделенных процессорных модулей, имеющих минимальные и максимальные координаты во всех измерениях. При этом
виртуализация каналов координирующей среды позволяет одновременно работать с множеством барьеров, среди которых могут быть и попарно параллельные барьеры, что способствует сохранению высоких скоростных характеристик
среды синхронизации.
2. Выполненные теоретические построения позволили определить логическую конфигурацию слоя координирующей среды мультикомпьютера, отличающуюся использованием двух инвертирующих цепей обратной связи в двух
угловых ячейках среды, имеющих соответственно минимальные и максимальные координаты во всех измерениях, что позволяет организовать устойчивое
распространение значений индикаторных функций, отражающих условия завершения синхронизации и активизации барьерных групп.
3. На основе предложенной логической конфигурации отдельного слоя
определена организация виртуально-многослойной координирующей среды
ОММК произвольной размерности, которая, при условии применения модифицированного механизма тактовой синхронизации волнами синхроимпульсов,
дает возможность реализовать параллельное распространение значений индикаторных функций множества барьеров на основе аппаратного конвейерного
переключения виртуальных слоев в ячейках координирующей среды, что обеспечивает ускорение межмодульного обмена управляющими сигналами.
66
4. Доказано, что разработанный метод распределенной барьерной синхронизации инвариантен к конфигурации барьерных групп и в частности, к их
мощности и размещению в ОММК, которые существенны для известных аппаратных методов барьерной синхронизации. Метод применим в случаях динамического порождения и уничтожения новых процессов, что регламентируется
стандартом параллельного программирования MPI 3.0, но не поддерживается
многими аналогичными методами. Также созданный метод позволяет исключить требования к допустимому числу w попарно параллельных барьеров в
программах, поскольку достаточно высокие для практики значения w достигаются уже при небольших значениях n и p (до 32). Дальнейшее увеличение числа w возможно при условии отображения добавляемых виртуальных слоев на
локальную память процессорных модулей с постепенным ухудшением скоростных характеристик координирующей среды.
67
3. СТРУКТУРНО-ФУНКЦИОНАЛЬНАЯ ОРГАНИЗАЦИЯ РАСПРЕДЕЛЕННОЙ КООРДИНИРУЮЩЕЙ СРЕДЫ С ВИРТУАЛЬНЫМИ КАНАЛАМИ
В данном разделе осуществляется синтез структурных и функциональных
схем основных блоков, входящих в состав ячейки координирующей среды, рассматриваются особенности ее функционирования во взаимодействии с другими
аналогичными ячейками. Синтез начинается с базового варианта ячейки, не
включающей виртуализации отдельных слоев, который затем модифицируется
и обобщается на случай наличия p виртуальных слоев в физическом слое. Проводится оценка аппаратной сложности ячейки и гибкости разработанных аппаратных средств. Основное содержание данного раздела опубликовано в работах
[3, 4, 12, 19].
3.1. Синтез базовой схемы ячейки координирующей среды
Базовую схему ячейки координирующей среды (без учета возможности
виртуализации) несложно получить по основным выражениям, приведенным в
разделах 2.3.1-2.3.3, с учетом топологических структур и схемы, представленных на рис.2.2-2.4 соответственно. Она изображена на рис. 3.1 (в данном случае
предполагается наличие единственного физического слоя, n  1).
На рис.3.1 приведены обозначения всех переменных и функций, формируемых элементами ячейки. Часть из них была введена в предыдущей главе
(см. подраздел 2.3). Кроме того, на рис.3.1 введены следующие новые обозначения:   x1 , x2 ,
, xd  и   x1 , x2 ,
модуля,   x1 , x2 ,
, xd  – координатные признаки текущего
, xd  – признак активизации текущего модуля, R0 – сигнал
системного сброса.
Значение признака   x1 , x2 ,
  x1 , x2 ,
, xd  определяется выражением:
1, если x1  x2   xd  1;
, xd   
0 для всех остальных модулей.
(3.1)
68
Значение признака   x1 , x2 ,
1, если  x1  N1    x2  N 2     xd  N d  ;
, xd   
0 для всех остальных модулей.
  x1 , x2 ,
Z s( x1 1, x2 , , xd )
Z s( x1 , x2 1, , xd )
Z s( x1 , x2 , , xd 1)
y
C
 p (t )
3
, xd )
5
S
TT
C
1
&
1
1
, xd )
T
2
&
2
1.1
R
R
  x1 , x2 ,
4
1
Z s( x1 , x2 ,
1
1
D
“1”
5
R0
, xd 
, xd 
Z s( x1 , x2 ,
zs( x1 , x2 ,
R
1
1
3
1
TT
(3.2)
1
&
D
“1”
( x1 , x2 , , xd )
s
  x1 , x2 ,
  x1 , x2 ,
, xd  определяется формулой:
&
3
3.1
S
3.2
T
, xd 
2
&
4
1
, xd )
&
1
1.2
R
1
3.d
2
Z s( x1 1, x2 ,
Z s( x1 , x2 ,
, xd )
, xd 1)
Рис. 3.1. Базовая схема ячейки координирующей среды
(без учета виртуализации)
Признак активизации   x1 , x2 ,
, xd  представляет собой короткий поло-
жительный импульс и отражает условие Z s( x1 , x2 ,
, xd )
t   1  0
(завершение барь-
ера a s ).
Сигнал сброса R0 также является положительным импульсом и подается
один раз в ходе инициализации модулей мультикомпьютера.
Назначение элементов ячейки координирующей среды заключается в
следующем (см. рис.3.1).
Триггеры 1.1 и 1.2 предназначены для хранения значений координатных
признаков   x1 , x2 ,
, xd  и   x1 , x2 ,
, xd  соответственно. Состояние этих
триггеров определяется во время инициализации процессорных модулей и сохраняется в течение всего времени работы мультикомпьютера.
69
Триггер 2 служит для фиксации признака  p (t ) состояния параллельной
ветви B p , выполняемой текущим модулем. Триггер 2 устанавливается в единицу всякий раз, когда завершается ветвь B p , и сбрасывается в ноль признаком
  x1 , x2 ,
, xd  , т.е. в момент активизации текущего модуля после ожидания за-
вершения барьерного эпизода.
Триггер 3 используется для хранения компонент вектора соответствия
( x1 , x2 ,
, xd )
. Триггер 3 сбрасывается признаком   x1 , x2 ,
, xd  по завершении
текущего барьерного эпизода. При подготовке к следующему барьерному эпизоду он устанавливается в единицу, если ys( x1 ,x2 ,
стояние при ys( x1 , x2 ,
, xd )
, xd )
 1, и сохраняет нулевое со-
 0.
Элементы И 1, 2, ИЛИ 1, НЕ 1 обеспечивают формирование нового значения индикаторной функции Z s( x1 , x2 ,
m  N1 , N 2 ,
, xd )
t 
для всех модулей, кроме модуля
, N d  , для которого указанные элементы формируют значение
функции Z s( x1 , x2 ,
, xd )
t  .
Элемент И 3 и одновибратор служат для формирования признака
  x1 , x2 ,
, xd  в момент наступления события Z s( x1 , x2 ,
, xd )
t   1  0 .
Элементы ИЛИ 2, И 4, НЕ 2 совместно с триггером 1.2 предназначены
для реализации условия (2.9).
Элементы ИЛИ 3, И 5 обеспечивают реализацию выражения (2.6), определяющего логику распространения значений индикаторных функций в фазе
синхронизации.
Элементы ИЛИ 4 и 5 введены для формирования сигналов сброса триггеров 2 и 3 соответственно.
Элементы НЕ 3.1-3.d, И-НЕ служат для реализации выражения (2.8).
Чтобы ячейка могла корректно функционировать в составе координирующей среды, ее необходимо подключить к процессорному модулю и к соседним аналогичным ячейкам согласно топологической структуре сетей синхрони-
70
зации и восстановления (см. рис.2.2, 2.3) и правилам соединения указанных сетей (см. рис.2.4).
Для соединения с процессором используются входы ys( x1 , x2 ,
  x1 , x2 ,
, xd  ,   x1 , x2 ,
, xd  и выход   x1 , x2 ,
, xd )
,  p (t ) , R0 ,
, xd  .
Соединение с соседними ячейками осуществляется следующим образом.
Выход Z s( x1 ,x2 ,
, xd )
подключается к одноименным входам всех ячеек, определяе-
мых согласно условию (2.4) (в двумерной матрице это соседние ячейки, расположенные правее и ниже текущей). Это относится ко всем ячейкам, кроме
c  N1 , N 2 ,
, N d  , выход Z s( x1 ,x2 ,
Z s( x1 1, x2 ,
, …, Z s( x1 , x2 ,
, xd )
, xd 1)
, xd )
которой следует подключить к ее же входам
. Выход Z s( x1 , x2 ,
, xd )
подключается к одноименным
входам всех ячеек, определяемых условием (2.5) (в двумерной матрице это соседние ячейки, находящиеся левее и выше текущей). Это относится ко всем
ячейкам, исключая c 1,1,
,1 , выход Z s( x1 , x2 ,
, xd )
которой никуда не должен быть
подключен. Следует отметить, что на все входы Z s( x1 ,x2 ,
, xd )
и Z s( x1 , x2 ,
, xd )
, остав-
шиеся неподключенными, должны постоянно подаваться сигналы логической
единицы и логического нуля соответственно.
3.2. Синтез схемы ячейки координирующей среды с виртуальными каналами
В основе схемы ячейки с виртуальными каналами лежит схема, представленная на рис. 3.1. В ходе синтеза эта схема дополняется элементами и блоками, реализующими разработанные механизмы виртуализации координирующей
среды (см. рис. 2.9 и 2.10) и тактовой синхронизации (см. рис. 2.11). На данном
этапе предполагается, что n  1.
Синтезированная схема ячейки координирующей среды при n  1 представлена на рис. 3.2. Из рис. 3.2 видно, что многие элементы и даже фрагменты
схемы дублируются и работают параллельно. Это объясняется тем, что ячейка
входит в состав двух функционально схожих параллельно работающих сетей
71
синхронизации и восстановления. Для упрощения здесь не приведены схемы
формирования волн тактовых импульсов и дополнительные элементы, необходимые для доступа к ячейке из процессорного модуля.
Z s( x1 1, x2 , , xd )
Z s( x1 , x2 1, , xd )
Z s( x1 , x2 , , xd 1)
A.1
CW1
B.1
CW1
B.2
 p (t )
  x1 , x2 ,
  x1 , x2 ,
R0
, xd 
, xd 
A.2
RG
A.d
1
17
“1”
z
1
18
2.1
MX
19
1
3.1
C
R
&
9
1.1
T
7.3
J.d
R
&
11
RG
1
Z
Z
( x1 , x2 , , xd 1)
s
F.d
Z
1
  x1 , x2 ,
, xd 
K
22.1
D
DX
F.2
J.1
7.1
R
23
F.1
, xd )
&
10
E.2
( x1 1, x2 , , xd )
s
( x1 , x2 1, , xd )
s
Z s( x1 , x2 ,
1
15
J.2
S
&
14
TT
C
D
DX
13
D
D
С
E.1
( x1 , x2 , , xd )
s
&
MX
2.2
22.2
1
S
3.2
21
C
R
&
T
20
1.2
&
12
1
16
7.2
R
1
22.d
L.1
L.2
y
( x1 , x2 , , xd )
s

DC
5
G
( x1 , x2 ,
Vact
, xd )
Z s( x1 , x2 ,
L.d
, xd )
H
D
Vmax
D
RG
C
( x1 , x2 , , xd )
cur
1.4
CT
+1
R
R
D
D
D
4.1
8.2
==
==
6.1
6.2
C
V
I
8.1
RG
RG
Vact( x1 , x2 ,
CT
Монтажное ИЛИ
1.3
C
1.5
R
+1
, xd )
4.2
R
S
8.p
Рис. 3.2. Схема ячейки одноразрядной координирующей среды
(с виртуализацией физического слоя)
Назначение элементов и блоков ячейки (рис. 3.2) заключается в следующем.
Регистр 1.1 разрядностью p бит хранит текущие значения индикаторных
функций Z (fix1 ,x2 ,
, xd )
 t 
в фазе синхронизации для всех барьеров a fi  , назна-
ченных на виртуальные слои Kl1 , Kl2 ,
триггеров, введенных на рис.2.9).
, Klp (регистр 1.1 соответствует набору
72
Регистр 1.2 разрядностью p бит хранит текущие значения индикаторных
функций Z (fix1 , x2 ,
, xd )
 t 
в фазе восстановления для всех барьеров a fi  , назна-
ченных на виртуальные слои Kl1 , Kl2 ,
, Klp (регистр 1.2 соответствует набору
триггеров, введенных на рис.2.10).
Регистр 1.3 разрядностью p бит служит для хранения вектора
( x1 , x2 ,
, xd )

 ys( x1, x2 ,
, xd )
 , соответствующего данному модулю. Содержимое
регистра 1.3 сохраняется неизменным в течение всего времени выполнения
программ мультикомпьютером.
Регистр 1.4 разрядностью log2 p  бит предназначен для хранения максимального номера Vmax используемого виртуального слоя. Содержимое регистра 1.4 обновляется всякий раз, когда выделяется новый виртуальный слой,
номер которого превышает текущий максимум.
Регистр 1.5 разрядностью log2 p  бит введен для хранения номера теку( x1 , x2 , , xd )
щего виртуального слоя Vcur
для данного модуля. Содержимое регистра
1.5 обновляется при переходе к новому барьеру, закрепленному для другим
виртуальным слоем.
Демультиплексор 2.1 и мультиплексор 3.1 обеспечивают подключение
определенного разряда регистра 1.1 на время записи/чтения значения соответствующей функции Z (fix1 ,x2 ,
, xd )
t 
в фазе синхронизации. Демультиплексор 2.2 и
мультиплексор 3.2 аналогичным образом коммутируют разряды регистра 2.2 с
целью записи/чтения значения соответствующей функции Z (fix1 ,x2 ,
, xd )
t 
в фазе
восстановления. Тем самым реализуется один из важнейших аспектов виртуализации физического слоя координирующей среды, заключающийся во временном
разделении передачи значений функций Z (fix1 ,x2 ,
, xd )
t 
и Z (fix1 ,x2 ,
, xd )
t 
по одним и
тем же физическим линиям.
Счетчики 4.1 и 4.2 с программируемым коэффициентом пересчета введены для организации последовательного перебора используемых виртуальных
73
слоев и хранения их текущих номеров в фазах синхронизации и восстановления
соответственно. Подача очередного тактового импульса на счетный вход счетчика 4.1 (4.2) обеспечивает его переключение на очередной виртуальный слой.
В качестве коэффициента пересчета счетчиков 4.1 и 4.2 берется максимальный
номер виртуального слоя из регистра 1.4.
Дешифратор 5 вместе с буферными элементами 8.1, 8.2, …, 8.p и элементом «монтажное ИЛИ» позволяет сформировать значение признака ys( x1, x2 , , xd )
для текущего барьера, соответствующего активному виртуальному слою.
Компаратор 6.1 служит для сравнения номера текущего виртуального
( x1 , x2 ,
( x1 , x2 , , xd )
слоя Vcur
с номером активного виртуального слоя Vact
, xd )
в фазе
синхронизации. Единица, формируемая в случае совпадения, означает, что в
данный момент в сети синхронизации происходит вычисление и передача значения индикаторной функции Z (fix1 ,x2 ,
, xd )
 t  для текущего барьера.
Компаратор 6.2 предназначен для сравнения номера текущего виртуаль( x1 , x2 ,
( x1 , x2 , , xd )
ного слоя Vcur
с номером активного виртуального слоя Vact
, xd )
в
фазе восстановления. Единица, формируемая в случае совпадения, означает,
что в данный момент в сети восстановления происходит вычисление и передача
значения индикаторной функции Z (fix1 ,x2 ,
, xd )
 t  для текущего барьера.
Триггер 7.1 служит для хранения значения координатного признака
  x1 , x2 ,
, xd  (единичное состояние этого триггера согласно формуле (3.2)
будет только в модуле с максимальными координатами во всех измерениях). В
совокупности с элементами И 9, 10, элементом ИЛИ 15 и инвертором 19 триггер 7.1 формирует выходное значение функции Z (fix1 ,x2 ,
, xd )
 t  для активного вир-
туального слоя. Во всех модулях, кроме m  N1 , N 2 ,
, N d  , это значение берется
с выхода мультиплексора 3.1; в модуле m  N1 , N 2 ,
, N d  значение с мульти-
плексора
Z s( N1 ,N 2 ,
,N d )
3.1
инвертируется,
 t   Z s( N ,N ,
1
2
,N d )
t  .
что
позволяет
реализовать
условие
74
Триггер 7.2 предназначен для хранения значения координатного признака
  x1 , x2 ,
, xd  (единичное состояние этого триггера согласно формуле (3.1)
будет только в модуле с минимальными координатами во всех измерениях). В
совокупности с элементом И 12, инвертором 20 и элементом ИЛИ 16 триггер
7.2 реализует дополнительное условие (2.9), которое исключает наступление
события Z s(1,1,
,1)
t   0  1
до завершения предыдущей фазы восстановления.
Триггер 7.2 и элементы 12, 16, 20 «работают» только в модуле m 1,1,
,1 ; в
остальных модулях на выходе элемента 16 всегда присутствует единица.
Триггер 7.3 служит для фиксации признака  p (t ) состояния параллельной
ветви B p , выполняемой текущим модулем. Он устанавливается в единицу всякий раз, когда завершается очередная ветвь B p , и сбрасывается в ноль признаком   x1 , x2 ,
, xd  , т.е. в момент активизации текущего модуля после ожида-
ния завершения барьерного эпизода.
Элемент И 11 вместе с одновибратором 23 служат для формирования
признака   x1 , x2 ,
, xd  в момент наступления события Z s( x1 , x2 ,
, xd )
t   1  0 ,
причем дополнительно учитывается, какой виртуальный слой активен в данный
момент.
Элементы И 13, 14 предназначены для реализации выражения (2.6), определяющего логику распространения значений индикаторных функций в фазе
синхронизации, с учетом дополнительного условия (2.9).
Элемент ИЛИ 17 служит для вычисления признака состояния модуля
zs( x1 , x2 ,
, xd )
t 
по формуле (2.2) с учетом активности виртуальных слоев.
Элемент ИЛИ 18 введен для формирования сигнала сброса триггера 7.3.
Схема, образованная элементом И-НЕ 21 и инверторами 22.1, 22.2, …,
22.d, служит для формирования нового значения функции Z (fix1 ,x2 ,
, xd )
t 
в фазе
восстановления.
Назначение входов и выходов ячейки (рис. 3.2) сводится к следующему.
75
Информационные входы A.1, A.2, …, A.d необходимы для приема значений индикаторных функций Z (fix1 ,x2 ,
, xd )
 t  от соседних аналогичных ячеек. Ин-
декс входа указывает на измерение, в котором передается значение от соседней
ячейки.
Тактовые входы B.1 и B.2 служат для приема волн тактовых импульсов
CW1 (для фазы синхронизации) и CW1 (для фазы восстановления) от соседних
ячеек. Схемы формирования указанных импульсов будут рассмотрены в дальнейшем.
Информационный вход C предназначен для приема от текущего процессорного модуля признака  p (t ) состояния выполняемой параллельной ветви.
Управляющий вход D служит для приема импульсов системного сброса
R0 от текущего процессорного модуля в процессе инициализации мультиком-
пьютера.
Управляющие входы E.1 и E.2 обеспечивают прием от текущего процессорного
  x1 , x2 ,
модуля
значений
координатных
признаков
  x1 , x2 ,
, xd 
и
, xd  в ходе начального конфигурирования координирующей среды.
Информационные входы F.1, F.2, …, F.d необходимы для приема значений индикаторных функций Z (fix1 , x2 ,
, xd )
 t  от соседних аналогичных ячеек. Ин-
декс входа указывает на измерение, в котором передается значение от соседней
ячейки.
Информационный вход G предназначен для приема от процессорного модуля вектора ( x1 , x2 ,
, xd )

 ys( x1, x2 ,
, xd )
 в ходе инициализации координирую-
щей среды.
Информационный вход H служит для приема максимального номера
Vmax используемого виртуального слоя. Указанный номер подается всякий раз,
когда начинается использование виртуального слоя, номер которого превышает
текущий максимум.
76
Информационный вход I используется для приема от процессорного мо( x1 , x2 , , xd )
дуля номера виртуального слоя Vcur
, который соответствует очередно-
му барьеру, выполняемому текущим модулем.
Информационные выходы J.1, J.2, …, J.d необходимы для выдачи значений индикаторных функций
Z
( x1 , x2 , , xd )
fi
 t 
соседним аналогичным ячейкам.
Индекс выхода указывает на измерение, в котором передается значение.
Управляющий выход K служит для передачи в процессорный модуль
признака   x1 , x2 ,
, xd  в момент наступления события Z s( x1 , x2 ,
, xd )
t   1  0 ,
позволяющего данному модулю продолжить функционирование по завершении
барьерного эпизода.
Информационные выходы L.1, L.2, …, L.d необходимы для выдачи значений индикаторных функций Z (fix1 , x2 ,
, xd )
 t 
соседним аналогичным ячейкам.
Индекс выхода указывает на измерение, в котором передается значение.
Подключение ячейки c( x1 , x2 ,
, xd ) к другим аналогичным ячейкам в со-
ставе координирующей среды осуществляется согласно ранее определенной
конфигурации (см. рис.2.4) в следующем порядке.
Выходы J.1, J.2, …, J.d подключается к входам A.1, A.2, …, A.d всех ячеек, определяемых согласно условию (2.4) (в двумерной матрице это соседние
ячейки, расположенные правее и ниже текущей). Это относится ко всем ячейкам, кроме c  N1 , N 2 ,
, N d  , выходы J.1, J.2, …, J.d которой следует подклю-
чить к ее же входам F.1, F.2, …, F.d.
Выходы L.1, L.2, …, L.d подключается ко входам F.1, F.2, …, F.d всех
ячеек, определяемых условием (2.5) (в двумерной матрице это соседние ячейки,
находящиеся левее и выше текущей). Это относится ко всем ячейкам, исключая
c 1,1,
ны.
,1 , выходы L.1, L.2, …, L.d которой никуда не должны быть подключе-
77
Следует отметить, что на все входы A.1, A.2, …, A.d и F.1, F.2, …, F.d,
оставшиеся неподключенными, должны постоянно подаваться сигналы логической единицы и логического нуля соответственно.
3.3. Синтез схемы ячейки координирующей среды с многоразрядными
виртуальными каналами
Следующим шагом в ходе синтеза ячейки координирующей среды является расширение ранее полученной схемы (см. рис.3.2) на случай n  1. Наличие n параллельно работающих физических слоев, на каждый из которых логически отображено p виртуальных слоев, позволяет реализовать синхронизацию
до w  n  p параллельных барьеров. Даже при относительно небольших значениях n и p удается получить значения w, пригодные для большинства практически значимых случаев.
Расширение схемы, изображенной на рис.3.2, на случай n  1 осуществляется путем замены некоторых элементов их n-разрядными «аналогами» (группами и блоками элементов), а также добавления линий связи и элементов выбора определенного физического слоя. Так, например, регистры 1.1 и 1.2 заменяются блоками регистров. В каждом таком блоке будет p независимо работающих n-разрядных регистров. Демультиплексоры 2.1 и 2.2 станут n  1 разрядными (дополнительный разряд потребуется для коммутации тактовых
импульсов). Аналогично произойдет замена других элементов и блоков.
Результирующая схема ячейки координирующей среды представлена на
рис. 3.3. Жирными линиями на схеме обведены введенные блоки и группы элементов. Эквивалентные им фрагменты функциональной схемы даны в табл. 3.1.
На всех шинах штриховыми метками указана их разрядность.
Назначение элементов и блоков ячейки (рис. 3.3) заключается в следующем.
Группа регистров 1.1 из p n-разрядных статических регистров служит для
хранения текущих значений индикаторных функций Z (fix1 ,x2 ,
, xd )
 t 
в фазе син-
78
хронизации для всех барьеров a fi  , назначенных на виртуальные слои всех
физических слоев координирующей среды Kl1 , Kl2 ,
, Klp , l  1, n . Синхрониза-
ции записи данных в регистры группы 1.1 осуществляется независимо, а линия
сброса – общая.
Z s( x1 1, x2 , , xd )
Z s( x1 , x2 1, , xd )
1)
Z s( x1 , x2 , , xd B.1
A.1
A.2
A.d
n+1
n
n
&
n
B.2
zs( x1,x2 ,
R0
, xd 
E.1
Z
Z
( x1 1, x2 , , xd )
s
( x1 , x2 1, , xd )
s
D
“1”
С
, xd 
2.1
n
 p (t )
  x1 , x2 ,
TT
C
D
1
18
( x1 , x2 ,
Fcur
, xd 1)
n
n
D
C
R
D
C
R
D
C
R
RG
1.1.1
n
RG
1.1.2
n
19
n
MX
9
n
1
RG
1.1.p
n
n
n
7.3
J.d
7.1
R
E.2
1
n
F.2
n
F.d
22.1
n+1
DX
22.2
1
2.2
21
n+1
n
n
D
C
R
D
C
R
D
C
R
RG
1.2.1
n
RG
1.2.2
n
n
n
&
12
S
T
20
n
1
16
n
7.2
R
1
n
RG
DC
1.6
5.2
( x1 , x2 , , xd )
s
D
RG
C
1.4
R
CT
+1
D

1
17
DC
5.1
&
31
29
14.1
n
Z s( x1 , x2 ,
CW1
n
n
1
15
==
8.1
RG
&
P.2
n
4.1
&
28
5.3
6.1
8.2
R
V
D
P.d
D
RG
Монтажное ИЛИ
CT
==
&
6.2
14.2
1.3
R
1.5
+1
R
4.2
L.d
, xd )
P.1
DC
C
C
L.2
30
&
n
y
D
( x1 , x2 , , xd )
cur
L.1
n
R
N.d
n
n
Vmax
, xd 
K
22.d
C
N.1
N.2
  x1 , x2 ,
1
24
1
MX
3.2
RG
1.2.p
& n
11
D
G
H
J.1
&
10
23
F.1
, xd )
J.2
S
T
n+1
, xd )
M
I
Z s( x1 , x2 ,
3.1
R
&
Z s( x1 , x2 ,
DX
13
,xd )
n+1
B.d
  x1 , x2 ,
n+1
n
&
n
S
1
25
26
Q.1
Q.2
27
8.p
CW1
O
Q.d
Рис. 3.3. Схема ячейки многоразрядной координирующей среды
(с виртуализацией физического слоя)
Группа регистров 1.2 из p n-разрядных статических регистров служит для
хранения текущих значений индикаторных функций Z (fix1 ,x2 ,
, xd )
 t 
в фазе вос-
становления для всех барьеров a fi  , назначенных на виртуальные слои всех
физических слоев координирующей среды Kl1 , Kl2 ,
, Klp , l  1, n . Синхрониза-
79
ции записи данных в регистры группы 1.2 осуществляется независимо, а линия
сброса – общая.
Назначение регистров 1.3–1.5, демультиплексоров 2.1, 2.2, мультиплексоров 3.1, 3.2, счетчиков 4.1 и 4.2, дешифратора 5.1, компараторов 6.1 и 6.2,
триггеров 7.1–7.3, буферов 8.1–8.p не отличается от одноразрядной схемы,
представленной на рис. 3.2. не отличается от одноразрядной схемы, представленной на рис. 3.2.
Таблица 3.1
Номер
Условное обозна-
Эквивалентный фрагмент
позиции
чение группы
функциональной схемы
элементов
DX
DX
2.1, 2.2
MX
3.1, 3.2
8.1–8.p,
9
DX
MX
DX
MX
MX
80
10, 12
&
11
&
&
&
&
&
&
&
&
&
&
&
13
17
1
1
1
1
16
1
1
1
1
1
1
1
1
19, 20,
22.1–
22.d
&
21
&
&
&
81
Разрядность регистров 1.3–1.5 в схеме на рис. 3.3 составляет log2 p  ,
log2 p  и n  p бит, соответственно. Регистр 1.5 организован в виде матрицы
триггеров, что позволяет записывать в него данные по битам для отдельных физических и виртуальных слоев. Его функциональная схема дана на рис. 3.4
(здесь строки матрицы соответствуют отдельным физическим слоям, а столбцы – виртуальным слоям).
n
D
D
TT
&
1.1
C
&
1.1
1.2
S
C
C
1.2
C
1.p
2.1
2.2
S
C
1.p
D
TT
&
n
S
D
TT
2.1
TT
&
S
D
&
D
TT
TT
&
2.2
C
2.p
S
2.p
S
log2 n 
D
&
1
D
TT
DC
n.1
C
D
TT
&
n.1
n.2
S
C
n
TT
&
n.2
C
n.p
S
n.p
S
DC
2
log 2 p 
Рис. 3.4. Функциональная схема регистра 1.5.
Демультиплексоры 2.1, 2.2 имеют
 n  1 -разрядные
информационные
входы и выход (добавление  n  1 -го разряда позволяет коммутировать тактовые импульсы на требуемый регистр групп 1.1 и 1.2). У мультиплексоров 3.1,
3.2 информационный вход и выходы разрядности n. Все буферы 8.1–8.p и элемент «монтажное ИЛИ» также являются n-разрядными.
82
Регистр 1.6 разрядностью log2 n  бит введен для фиксации номера фи( x1 , x2 ,
зического слоя Fcur
, xd )
, на который отображен виртуальный слой, содержа-
( x1 , x2 ,
щийся в регистре 1.5. Запись номеров слоев Vcur
, xd )
( x1 , x2 ,
и Fcur
, xd )
в регистры
1.5 и 1.6 производится сразу после выделения очередному барьеру указанных
слоев.
Дешифратор 5.2 служит для преобразования номера физического слоя
( x1 , x2 ,
Fcur
, xd )
, хранимого в регистре 1.6, в соответствующий n-разрядный унитар-
ный код. Дешифратор 5.2 имеет специальный разрешающий вход (показан
сверху) и способен сформировать ненулевой выходной код только при единичном уровне сигнала на этом входе. Он используется только в фазе синхронизации. Дешифратор 5.3 аналогичен и решает эту же задачу, но используется в фазе восстановления.
Блок буферов 9 предназначен для коммутации выхода блока инверторов
19 с входами F.1, F2, …, F.d ячейки. Блок 9 находится во включенном состоянии только в ячейке c  N1 , N 2 ,
, N d  ; в остальных ячейках нулевой сигнал с
прямого выхода триггера 7.1 переводит блок 9 в отключенное состояние (высокоимпедансное состояние выходов). Добавление блока 9 позволяет реализовать
условие Z s( N1 ,N 2 ,
,N d )
 t   Z s( N ,N ,
1
2
,N d )
t  .
Блок элементов И 10 служит для формирования выходных значений
множества функций Z (fix1 ,x2 ,
, xd )
 t  для активных виртуальных слоев всех n фи-
зических слоев. Во всех модулях, кроме m  N1 , N 2 ,
, N d  , эти значения берутся
с выхода мультиплексора 3.1; в модуле m  N1 , N 2 ,
, N d  блок 10 постоянно за-
крыт и выдает константные нули.
Блок элементов И 11 вместе с элементом ИЛИ 24 и одновибратором 23
используются для формирования признака   x1 , x2 ,
ния события Z s( x1 , x2 ,
, xd )
t   1  0
, xd  в момент наступле-
в требуемом физическом слое с учетом того,
какой виртуальный слой активен в данный момент.
83
Блок элементов И 13, элемент ИЛИ 17 предназначены для реализации
выражения (2.6), определяющего логику распространения значений индикаторных функций в фазе синхронизации, с учетом формул (2.2), (2.9) и активности
виртуальных слоев.
Элемент И 14.1 служит для управления работой дешифратора 5.2.
Элемент И 14.2 служит для управления работой дешифратора 5.3.
Блок инверторов 20 вместе с блоками элементов И 12, ИЛИ 16 предназначены для реализации дополнительного условия (2.9), которое исключает
наступление события Z s(1,1,
,1)
t   0  1
до завершения предыдущей фазы вос-
становления, во всех физических слоях.
Элемент ИЛИ 18 используется для формирования сигнала сброса триггера 7.3.
Схема, образованная блоком элементов И-НЕ 21 и блоками инверторов
22.1, 22.2, …, 22.d, служит для формирования новых значений множества
функций Z (fix1 , x2 ,
, xd )
 t  в фазе восстановления, во всех физических слоях.
Элемент ИЛИ 15, элементы И 29, 31 и одновибратор 30 предназначены
для формирования тактовых импульсов, образующих волны CW1 , распространяющиеся в сети синхронизации.
Элемент ИЛИ 25, элементы И 27, 28 и одновибратор 26 служат для формирования тактовых импульсов, образующих волны CW1 , распространяющиеся в сети восстановления.
Назначение большинства входов и выходов ячейки не отличается от описанного ранее для схемы на рис. 3.2 (с учетом наличия n физических слоев).
Дополнительно введенный информационный вход M служит для приема
( x1 , x2 ,
от процессорного модуля номера текущего физического слоя Fcur
, xd )
.
Тактовые входы B.1, B.2, …, B.d предназначены для приема волн тактовых импульсов CW1 от соседних ячеек координирующей среды.
Тактовые входы N.1, N.2, …, N.d служат для приема волн тактовых импульсов CW1 от соседних ячеек координирующей среды.
84
Тактовый вход О используется для приема серии тактовых импульсов от
текущего процессорного модуля.
Тактовые выходы P.1, P.2, …, P.d служат для передачи тактовых импульсов волны CW1 соседним ячейкам координирующей среды.
Тактовые выходы Q.1, Q.2, …, Q.d служат для передачи тактовых импульсов волны CW1 соседним ячейкам координирующей среды.
Подключение ячейки c( x1 , x2 ,
, xd ) к другим аналогичным ячейкам в со-
ставе координирующей среды осуществляется аналогично описанному выше
для одноразрядной схемы. Дополнительно введенные тактовые входы коммутируются следующим образом.
Выходы Q.1, Q.2, …, Q.d подключается к входам B.1, B.2, …, B.d всех
ячеек, определяемых согласно условию (2.4) (в двумерной матрице это соседние ячейки, расположенные правее и ниже текущей). Это относится ко всем
ячейкам, кроме c  N1 , N 2 ,
, N d  , выходы Q.1, Q.2, …, Q.d которой никуда не
подключаются. Такое подключение входов/выходов позволяет реализовать
распространение волн тактовых импульсов CW1 по всей матрице ячеек, причем
с синхронизацией передачи импульсов в прямых фронтах за счет использования элементов И 29 и установленных за ними одновибраторов 30.
Выходы P.1, P.2, …, P.d подключается ко входам N.1, N.2, …, N.d всех
ячеек, определяемых условием (2.5) (в двумерной матрице это соседние ячейки,
находящиеся левее и выше текущей). Это относится ко всем ячейкам, исключая
c 1,1,
,1 , выходы P.1, P.2, …, P.d которой никуда не должны быть подключе-
ны. Такое подключение входов/выходов позволяет реализовать распространение волн тактовых импульсов CW1 по всей матрице ячеек, причем с синхронизацией передачи импульсов в обратных фронтах за счет использования элементов И 27 и установленных за ними одновибраторов 26.
Рассмотрим процесс функционирования ячейки во взаимосвязи с другими
аналогичными ячейками в основных режимах.
85
Исходное состояние всех ячеек координирующей среды задается путем
подачи на их входы D импульса сброса R0 . В результате все элементы памяти,
исключая регистр 1.3, устанавливаются в состояние логического нуля. Регистр
1.3, наоборот, устанавливается в единичное состояние (единицы во всех разрядах).
Далее выполняется конфигурирование координирующей среды. Для этого
на входы E.1 и Е.2 всех ячеек подаются координатные признаки   x1 , x2 ,
и   x1 , x2 ,
, xd  . В результате триггер 7.1 ячейки c  N1 , N 2 ,
7.2 ячейки c 1,1,
, xd 
, N d  и триггер
,1 переводятся в состояние логической единицы, а осталь-
ные триггеры 7.1 и 7.2 во всей координирующей среде сохраняют нулевое состояние. На этом инициализация координирующей среды завершается.
Сразу после инициализации обеспечиваются следующие уровни сигнала
и состояние элементов ячеек координирующей среды.
Нулевой сигнал с прямого выхода триггера 7.3 блокирует элементы И
14.1, 14.2, отключая тем самым дешифраторы 5.2 и 5.3. Этот же нулевой сигнал
закрывает все элементы блока 11, в результате чего на выходе элемента ИЛИ 24
также формируется нулевой уровень сигнала. Нулевой сигнал с прямого выхода триггера 7.1 во всех ячейках, кроме c  N1 , N 2 ,
, N d  , выключает блок 9, от-
ключая выход блока инверторов 19 от входов F.1, F.2, …, F.d ячейки. В ячейке
c  N1 , N 2 ,
, N d  , наоборот, блок 9 включается единичным сигналом с прямого
выхода триггера 7.1 и выход блока 19 коммутируется со входами F.1, F.2, …,
F.d этой ячейки. Благодаря этому (и так как все регистры группы 1.1 находятся
в нулевом состоянии) в ячейке c  N1 , N 2 ,
, N d  на входы F.1, F.2, …, F.d про-
ходят единицы с блока инверторов 19, чем обеспечивается появление единиц на
выходе блока элементов И-НЕ 21.
Одновременно единичный сигнал с инверсного выхода триггера 7.1 во
всех ячейках, кроме c  N1 , N 2 ,
, N d  , открывает блок 10, обеспечивая возмож-
ность передачи значений индикаторных функций Z (fix1 ,x2 ,
, xd )
 t  от мультиплек-
86
сора 3.1 на выходы J.1, J.2, …, J.d и далее соседним ячейкам. Поскольку все регистры группы 1.1 находятся в нулевом состоянии, открытие блоков 10 на данном этапе никак не меняет состояние выходов J.1, J.2, …, J.d ячеек. Нулевой
сигнал с инверсного выхода ячейки c  N1 , N 2 ,
, N d  закрывает блок 10, блоки-
руя передачу значений индикаторных функций Z (fix1 ,x2 ,
, xd )
 t 
на выходы J.1,
J.2, …, J.d данной ячейки. Поскольку на выходах J.1, J.2, …, J.d всех ячеек координирующей среды присутствует нулевой уровень сигнала, блоки 13 во всех
ячейках выдают нули.
Так как все регистры группы 1.2 пока установлены в нулевое состояние,
на выходе мультиплексора 3.2 также будут нули; соответственно, на выходе
блока инверторов 20 появятся единицы. Таким образом, независимо от состояния триггера 7.2 блок элементов ИЛИ 16 будет выдавать единицы (на данном
этапе это состояние не представляется существенным).
Одновременно с описанными выше процессами начинается формирование волн тактовых импульсов, синхронизирующих работу ячеек координирующей среды.
Зарождение волн CW1 , распространяющихся в прямых фронтах от ячейки
c 1,1,
,1 к ячейке c  N1 , N 2 ,
, N d  , происходит в ячейке c 1,1,
,1 . Сигналы
с выходов триггера 7.2 в этой ячейке блокируют элемент И 29 и открывают
элемент И 31. В результате серия тактовых импульсов, приходящих от процессорного модуля на вход О ячейки, через элементы И 31, ИЛИ 15 начинает передаваться через выходы Q.1, Q.2, …, Q.d в соседние ячейки. В остальных ячейках элемент И 31 будет заблокирован нулевым состоянием триггера 7.2 и импульсы от процессорных модулей приниматься не будут. В то же время элемент
И 29 в этих ячейках будет открыт. В результате, как только на все входы B.1,
B.2, …, B.d от соседних ячеек придут импульсы волны CW1 , на выходе элемента 29 уровень сигнала из нуля перейдет в единицу и одновибратор 30 выдаст
новый импульс. Этот импульс через элемент ИЛИ 15 пройдет на выходы Q.1,
Q.2, …, Q.d и аналогично описанному выше распространится в соседние ячей-
87
ки. Подобная «регенерация» импульсов волн CW1 с помощью одновибратора
30 позволяет исключить влияние случайных задержек в распространении тактовых импульсов.
Аналогичным образом происходит зарождение и распространение волн
CW1 . В этом случае источником волн является ячейка c  N1 , N 2 ,
, N d  , а все
функции выполняются элементами 25–28 с учетом состояния триггеров 7.1.
Сформированные импульсы передаются на выходы P.1, P.2, …, P.d ячеек и распространяются в направлении ячейки c 1,1,
,1 .
Появление волн импульсов CW1 пока не приводит к каким-либо изменениям. Так поскольку нулевое состояние регистра 1.4 запрещает работу счетчика
4.1, данный счетчик не реагирует на импульсы на его счетном входе и на его
выходах во всех ячейках сохраняются нули. В результате демультиплексор 2.1
и мультиплексор 3.1 во всех ячейках получают нулевой код на адресном входе.
Проходя через демультиплексор 2.1 на вход синхронизации регистра 1.1.1 во
всех ячейках, импульсы волны CW1 подтверждают нулевое состояние этого регистра и, соответственно, нулевой уровень сигнала на выходе мультиплексора
3.1.
В то же время волны импульсов CW1 , воздействуя через демультиплексор 2.2 на синхровходы регистров 1.2.1 во всех ячейках, вызывают последовательной (в направлении от ячейки c  N1 , N 2 ,
, N d  к ячейке c 1,1,
,1 ) запол-
нение этих регистров единицами (для дальнейшей корректной работы среды
такое состояние регистров 1.2.1 не будет препятствием). В результате на выходах блоков инверторов 20 всех ячеек формируется нулевой уровень сигнала.
Как следствие, нули появляются и на выходах блока элементов И 12 всех ячеек.
На выходах блока элементов ИЛИ 16 при этом во всех ячейках, кроме
c 1,1,
,1 , сохраняется ранее обусловленный нулевым состоянием триггера 7.2
единичный уровень сигнала. В ячейке c 1,1,
,1 из-за единичного состояния
88
триггера 7.2 на выходах блока 16 появляются нули, которые подтверждают
блокировку блока элементов И 13.
На этом все процессы, обусловленные инициализацией и конфигурированием ячеек координирующей среды завершаются.
Рассмотрим работу ячейки в режиме выделения виртуальных слоев при
конфигурировании новых и удалении существующих барьерных групп.
Первоначально текущий модуль m  x1 , x2 ,
, xd  не входит ни в одну ба-
рьерную группу, поэтому регистр 1.3 данной ячейки содержит только единичные значения.
При формировании очередной барьерной группы выделяется физический
слой и первый свободный виртуальный слой в нем, в которых будет протекать
барьерная синхронизации ветвей указанной группы (в целях повышения скорости работы координирующей среды первоначально заполняется первый виртуальный слой всех физических слоев, затем второй, и т.д. до заданного значения
p). Эти процессы протекают под управлением распределенной операционной
системы, которая ведет журнал соответствия коммуникаторов (номеров барьерных групп) слоям координирующей среды. В журнале для каждого коммуни( x1 , x2 ,
катора хранится пара номеров соответствующих слоев – физического Fcur
( x1 , x2 ,
и виртуального Vcur
, xd )
, xd )
.
По завершении формирования барьерной группы номер физического слоя
( x1 , x2 ,
Fcur
, xd )
( x1 , x2 ,
записывается в регистр 1.6, а номер виртуального слоя Vcur
, xd )
–в
регистр 1.5. Кроме того, в регистре 1.3 происходит обнуление бита ys( x1, x2 , , xd ) ,
( x1 , x2 ,
соответствующего паре слоев Fcur
, xd )
( x1 , x2 ,
и Vcur
, xd )
. Таким образом индициру-
ется участие данного модуля в сформированной барьерной группе. Одновременно в регистр 1.4 заносится максимальный номер виртуального слоя Vmax .
( x1 , x2 ,
Первоначально Vmax  1 , однако как только Vcur
, xd )
достигнет текущее значе-
ние Vmax , в регистр 1.4 всех ячеек будет записано увеличенное на 1 значение.
Управление величиной Vmax также возлагается на операционную систему. Зна-
89
чение Vmax из регистра 1.4 поступает на информационные входы счетчиков 4.1
и 4.2 и устанавливает для них новые коэффициенты пересчета. Так как первоначально Vmax  1 , счетчики 4.1 и 4.2 будут сохранять нулевое состояние. В
дальнейшем, когда Vmax превысит 1, счетчики будут переключаться импульсами
волн CW1 и CW1 , чем будет обеспечиваться последовательный перебор номеров активных виртуальных слоев.
При удалении барьерной группы в регистре 1.3 происходит установка би( x1 , x2 ,
та ys( x1, x2 , , xd ) , соответствующего паре слоев Fcur
, xd )
( x1 , x2 ,
и Vcur
, xd )
, в единицу.
В регистры 1.6 и 1.5 при этом заносятся номера слоев для очередной барьерной
группы, в которой будет участвовать текущий модуль, либо нули, если такой
группы нет. Если при удалении барьерной группы максимальный номер используемого виртуального слоя становится меньше Vmax  1 , то в регистры 1.4
всех ячеек записывается уменьшенное на 1 значение Vmax . В результате коэффициент пересчета счетчиков 4.1 и 4.2 уменьшится на 1.
Рассмотрим работу ячейки в режиме индикации окончания параллельной
ветви.
Сразу после выполнения параллельной ветви B p , завершающейся некоторым барьером a s , процессорный модуль выдает в ячейку единичное значение
признака  p (t ) . В результате триггер 7.3 переводится в состояние логической
единицы. Сигнал с прямого выхода данного триггера открывает элементы И
14.1, 14.2 и блок элементов И 11. Как только номер активного виртуального
( x1 , x2 ,
слоя для фазы синхронизации Vact
, xd )
( x1 , x2 ,
меру текущего виртуального слоя Vcur
из счетчика 4.1 становится равным но, xd )
из регистра 1.5, компаратор 6.1 вы-
дает единичный сигнал. Этот сигнал проходит через открытый элемент И 14.1 и
разрешает работу дешифратора 5.2. Далее на том выходе дешифратора 5.2, ко( x1 , x2 ,
торый соответствует текущему физическому слою Fcur
, xd )
, появляется еди-
ница. Эта единица через соответствующий элемент блока 17 проходит на одноименный элемент блока 13. До появления единицы, на выходе блока элементов
90
ИЛИ 17 находится нулевой уровень сигнала ( ys( x1 , x2 , , xd )  0 ), снимаемый через
буфер 8.i с соответствующего разряда регистра 1.3.
Во всех ячейках, кроме c 1,1,
,1 , указанный элемент блока 13 без-
условно открывается, чем обеспечивается формирование единичного значения
Z s( x1 ,x2 ,
, xd )
ке c 1,1,
, как только единицы поступят на все входы A.1, A.2, …, A.d. В ячей,1 блок элементов И 13 дополнительно блокируется сигналом с вы-
хода блока элементов ИЛИ 16 до тех пор, пока мультиплексор 3.2 в соответствующем разряде не выдаст нулевое значение.
Теперь рассмотрим работу ячейки в режиме запуска после окончания параллельной ветви.
В этом режиме триггер 7.3 по-прежнему находится в единичном состоянии, поэтому элемент И 14.2 и блок элементов И 11 открыты. Как только компаратор 6.2 устанавливает совпадение номера текущего виртуального слоя
( x1 , x2 ,
Vcur
, xd )
с номером активного в фазе восстановления виртуального слоя
Vact( x1 , x2 ,
, xd )
, на его выходе формируется сигнал логической единицы. Этот сигнал
через элемент И 14.2 воздействует на дешифратор 5.3 и разрешает его работу. В
( x1 , x2 ,
результате номер текущего физического слоя Fcur
, xd )
, поступающий из реги-
стра 1.6, преобразуется в соответствующий унитарный код, что приводит к открытию соответствующего элемента в составе блока 11. Поскольку из соответствующего регистра группы 1.2 через мультиплексор 3.2 на этот же элемент
блока 11 также поступает единица, блок 11 выдает ненулевое значение и элемент ИЛИ 24 формирует единичный уровень сигнала, подготавливающий к работе одновибратор 23.
С появлением очередного импульса волны CW1 на выходе одновибратора 26 регистры группы 1.2 переключаются в новое состояние, соответствующее
текущему виртуальному слою. Если при этом разряд регистров, соответствую( x1 , x2 ,
щий слоям Fcur
данную
ячейку
, xd )
, Vact( x1 , x2 ,
от
, xd )
, переключится в нулевое состояние, значит в
соседних
ячеек
поступило
значение
функции
91
Z s( x11,x2 ,
, xd )
 Z s( x1 , x2 1,
, xd )

 Z s( x1 , x2 ,
, xd 1)
 0 , означающее выполнение условия
восстановления. В этом случае на выходе блока элементов И 11 снова появится
нулевое значение и уровень сигнала на выходе элемента ИЛИ 24 станет нулевым. В результате одновибратор 23 выдаст импульс   x1 , x2 ,
, xd  . Этот им-
пульс пройдет на выход K ячейки и разрешит текущему процессорному модулю продолжить функционирование. Кроме того, импульс   x1 , x2 ,
, xd  через
элемент ИЛИ 18 немедленно сбросит триггер 7.3, блокируя элементы 14.1, 14.2
и блок 11.
Рассмотрим подробнее порядок распространения значений индикаторных
функций через ячейку в фазах синхронизации и восстановления.
В фазе синхронизации значения индикаторных функций распространяются через ячейки по цепям, образованным блоком элементов И 13, демультиплексором 2.1, группой регистров 1.1, мультиплексором 3.1 и блоком элементов И 10. В ячейке c  N1 , N 2 ,
, N d  к этому процессу подключаются блок ин-
верторов 19 и буфер 9, а блок элементов И 10, напротив, закрывается и не
участвует в передаче значений индикаторных функций.
В каждый момент времени регистры группы 1.1 содержат набор текущих
значений функций Z s( x1 , x2 ,
, xd )
 для всех активных барьеров, причем в разных
ячейках эти значения могут отличаться. Так, если в ячейке c  x1 , x2 ,
чение Z s( x1 , x2 ,
, xd )
, xd  зна-
 1 , то это значит, что все модули, расположенные не дальше от
начала координат, чем m  x1 , x2 ,
, xd  , включая сам модуль m  x1 , x2 ,
, xd  ,
уже завершили ветви, сходящиеся в s-м барьере, либо вообще не являются
участниками данной барьерной группы. Если в ячейке c  x1 , x2 ,
Z s( x1 , x2 ,
, xd )
 0 , то это означает, что либо сам модуль m  x1 , x2 ,
, xd  значение
, xd  либо какой-
нибудь модуль из числа расположенных не дальше от начала координат, чем
m  x1 , x2 ,
, xd  , еще не завершили ветви, сходящиеся в s-м барьере. Возможна
92
также ситуация, что значение Z s( x1 , x2 ,
c  x1 , x2 ,
, xd )
 0 ещё не поступило в ячейку
, xd  .
Запись нового значения Z s( x1 ,x2 ,
, xd )
в соответствующий разряд регистров
группы 1.1 происходит по переднему фронту очередного тактового импульса
волны CW1 . Этот импульс с выхода одновибратора 30 проходит через демультиплексор 2.1 на синхровход того регистра группы 1.1, который соответствует
активному виртуальному слою, и фиксирует в этом регистре новое значение
Z s( x1 ,x2 ,
, xd )
, сформированное блоком элементов И 13. Этот же импульс переклю-
чает счетчик 4.1 на следующий виртуальный слой, для которого уже началось
формирование значений индикаторных функций по данным из ячеек предыдущего прямого фронта.
Достигнув ячейки c  N1 , N 2 ,
, N d  , значения Z s( x1 ,x2 ,
, xd )
инвертируются
блоком 19 и тем самым преобразуются в соответствующие значения Z s( x1 , x2 ,
Полученные значения через буфер 9 подаются снова в ячейку c  N1 , N 2 ,
, xd )
.
, Nd 
на входы F.1, F.2, …, F.d и используются в дальнейшем в фазе восстановления.
В фазе восстановления значения индикаторных функций распространяются через ячейки по цепям, образованным блоком элементов И-НЕ 21, блоками инверторов 22.1–22.d, демультиплексором 2.2, группой регистров 1.2, мультиплексором 3.2. В ячейке c 1,1,
,1 к этому процессу подключаются блок ин-
верторов 20, блок элементов И 12, блок элементов ИЛИ 16, а дальнейшее распространение значений индикаторных функций прекращается и замыкается на
блок элементов И 13.
В каждый момент времени регистры группы 1.2 содержат набор текущих
значений функций Z s( x1 , x2 ,
c  x1 , x2 ,
, xd )
 для всех активных барьеров. Как только в ячейке
, xd  значение Z s( x1 , x2 ,
, xd )
с единичного меняется на нулевое, это зна-
чит, что условие восстановление (разрешающее активизацию процессорных
модулей) достигло текущей ячейки и при соблюдении прочих условий (см. ра-
93
боту ячейки в режиме запуска после окончания параллельной ветви) в ней может быть сгенерирован импульс   x1 , x2 ,
Запись нового значения Z s( x1 , x2 ,
, xd )
, xd  .
в соответствующий разряд регистров
группы 1.2 происходит по переднему фронту очередного тактового импульса
волны CW1 . Этот импульс с выхода одновибратора 26 проходит через демультиплексор 2.2 на синхровход того регистра группы 1.2, который соответствует
активному виртуальному слою, и фиксирует в этом регистре новое значение
Z s( x1 , x2 ,
, xd )
, сформированное блоком элементов И-НЕ 21. Этот же импульс пере-
ключает счетчик 4.2 на следующий виртуальный слой, для которого уже началось формирование значений индикаторных функций по данным из ячеек
предыдущего обратного фронта.
Таким образом, передача значений индикаторных функций Z s( x1 ,x2 ,
Z s( x1 , x2 ,
, xd )
, xd )
и
осуществляется по конвейерной схеме, ступени которой определяют-
ся прямыми и обратными фронтами. Поскольку на каждом такте одновременно
передается n значений, данная схема является фактически параллельноконвейерной, что позволяет совместить во времени значительно большее число
операций.
3.4. Оценка аппаратной сложности ячейки координирующей среды и гибкости разработанных аппаратных средств
Для оценки аппаратной сложности ячейки воспользуемся методикой,
описанной в диссертации [18]. Условимся измерять аппаратную сложность количеством эквивалентных вентилей, входящих в состав ячейки. Под эквивалентным вентилем (ЭВ) при этом будем понимать двухвходовый вентиль, реализующий любую булеву функцию двух переменных из множества {И, ИЛИ,
И-НЕ, ИЛИ-НЕ}. Более сложные элементы и блоки условимся представлять в
виде схем из ЭВ и их сложность будем определять числом ЭВ в схеме, при этом
инверсии на входах не будем считать отдельными ЭВ. Такие элементы, как
триггеры, регистры, дешифраторы, мультиплексоры и т.п., будем представлять
94
стандартными схемами, описанными в литературе [43]. Формулы для расчета
аппаратной сложности этих элементов сведены в табл. 3.2. Оценку аппаратной
сложности нестандартных блоков будем проводить с использованием схем,
представленных в табл. 3.1 и на рис. 3.4. Выражения, сведенные в табл. 3.2, получены в предположении, что многовходовые вентили реализуются пирамидальными схемами из ЭВ, счетчики 4.1 и 4.2 организованы по схеме со сквозным переносом и сигнал окончания пересчета в них формируется с использованием дешифратора, а одновибраторы реализованы на двух двухвходовых вентилях и RC-цепочке (которая условно считается отдельным ЭВ).
Таблица 3.2
№ п/п
Наименование эле-
Номер(а) позиции(й)
Выражение для расчета
мента (блока)
в схеме на рис. 3.3
аппаратной сложности (в
ЭВ)
1
Одноступенчатый
7.1, 7.2
2
7.3
6
1.1.i, 1.2.i, i  1, p
6n
1.3
8np  p  log 2 p   1 
RS-триггер
2
D-триггер с динамическим управлением
3
Статический
регистр
4
Статический регистр
 n  log 2 n   1
с матричной организацией
5
Статический
1.4, 1.5
6 log2 p 
1.6
6 log2 n 
регистр
6
Статический
регистр
7
Демультиплексор
2.1, 2.2
p  log2 p   1  n  2 p  1
8
Мультиплексор
3.1, 3.2
p  log2 p   n  1
9
Счетчик (сквозной
4.1, 4.2
 p  7  log2 p   1
95
перенос)
10
Дешифратор
5.1
p  log2 p   1
11
Дешифратор с раз-
5.2, 5.3
n log2 n 
решающим входом
12
Компаратор
6.1, 6.2
2 log2 p   1
13
Буфер
8.1–8.p, 9
n
14
Блок элементов 2И
10, 12
n
15
Блок элементов 3И
11
2n
16
Блок элементов 5И
13
4n
17
Блок элементов ИЛИ
16, 17
n
18
Блок инверторов
19, 20, 22.1–22.d
n
19
Блок элементов
13
 d  1 n
14.1, 14.2, 15, 18, 25,
1
d  2 И
20
Элементы 2И, 2ИЛИ
27, 28, 29, 31
21
Одновибратор
23, 26, 30
3
Чтобы вывести формулу для оценки аппаратной сложности разработанной ячейки, просуммируем выражения, записанные в столбце 4 табл. 3.2. После
несложных преобразований получим:
E0  3 log2 n   n  2   2 log2 p   4 p  15  p  23n  2   2n  d  7   20 (ЭВ). (3.3)
Из формулы (3.3) видно, что аппаратная сложность ячейки примерно в
равной степени зависит от величин n и p, и слабо связана с размерностью мультикомпьютера d. Для более детального исследования зависимостей, описываемых формулой (3.3), построим таблицу значений величины E 0 для типовых
значений n, p. Поскольку зависимость E 0 от размерности d весьма слаба, при
этом на практике d  O 1 , приведем таблицу значений E 0 только для наиболее
распространенного случая d  2 (см. табл. 3.3).
96
Таблица 3.3
n
1
8
p
E0
1
59
2
126
4
n
p
E0
1
112
p
E0
1
218
2
202
2
354
246
4
368
4
612
8
488
8
702
8
1130
16
1006
16
1404
16
2200
32
2140
32
2906
32
4438
1
436
1
890
1
1840
2
664
2
1302
2
2620
4
1106
4
2112
4
4166
8
1992
8
3734
8
7260
16
3798
16
7012
16
13482
32
7508
32
13666
32
26024
2
16
n
4
32
Анализ данных, приведенных в табл. 3.3, позволяет сделать ряд выводов.
Во-первых, даже при относительно больших значениях n, p (16, 32) аппаратная
сложность ячейки остается в пределах 30 тысяч ЭВ, что на два-три порядка ниже логической емкости современных микросхем. Во-вторых, для ряда комбинаций значений n и p значения E 0 примерно одинаковы (например, при n  8 ,
p  32 , при n  16 , p  16 и при n  32 , p  8 имеем E0  7000  7500 ЭВ). В
этих случаях выбор значений n и p при создании координирующей среды должен осуществляться исходя из доминирующего требования. Если имеется более
жесткое ограничение на время синхронизации, то целесообразно принять
n  32 , p  8 ; если же следует минимизировать число линий связи между ячей-
ками, то лучше взять n  8 , p  32 . В обоих случаях максимальное число одновременно существующих барьерных групп в системе будет равно 256.
Формула (3.3) позволяет оценить аппаратную сложность не только отдельной ячейки, но координирующей среды в целом, если умножить ее на чис-
97
ло ячеек в составе среды. Такие данные полезны для оценки возможностей
СБИС-реализации координирующей среды. В табл. 3.4 представлены значения
аппаратной сложности координирующей среды двумерного ( d  2 ) матричного
мультикомпьютера, полученные в предположении о равенстве числа строк N 2
и столбцов N 1 матрицы.
Таблица 3.4.
N1  N 2
n, p
4
8
16
32
64
128
4, 4
9792
39168
156672
626688
2506752
10027008
8, 8
31872
127488
509952
2039808
8159232
32636928
16, 16
112192
448768
1795072
7180288
28721152
114884608
32, 32
416384
1665536
6662144
26648576 106594304 426377216
Анализ данных, сведенных в табл. 3.4, показывает, что координирующая
среда на основе разработанной ячейки в большинстве практически значимых
случаев может быть полностью реализована на одной микросхеме. В табл. 3.4
указанным случаям соответствуют закрашенные ячейки (предполагается, что
E0  2000000 ЭВ). В остальных случаях однокристальная реализация среды на
текущий момент нецелесообразна. Таким образом, есть все основания считать,
что разработанный метод и аппаратное решение удовлетворяют ограничению
EBS  EBS (см. постановку задачи (1.1)).
В табл. 3.5 содержатся результаты сравнительной оценки гибкости предложенного решения. В качестве характеристик гибкости выбраны инвариантность к конфигурации барьерных групп, масштабируемость координирующей
среды и расширяемость на случай d-мерной матрицы. Из табл. 3.5 видно, что по
совокупности характеристик гибкости предложенный подход превосходит
лучшие известные аналоги (методы, отмеченные символом *, относятся к подклассу гибридных, поэтому им свойствен ряд дополнительных недостатков, отмеченных ранее).
98
Таблица 3.5.
Наименование
метода
или
решения
Инвариантность
к конфигурации
барьерных групп
Масштабируемость
Древовидная
Не обеспечивается
барьерная сеть (допускаются тольCM-5
ко барьерные группы
мощностью
степени двойки).
Плохая (при добавлении новых процессоров в систему
нужна полная перестройка
барьерной
среды).
Средняя
(жесткое
ограничение на число параллельно выполняемых
барьеров).
Распределенный
аппаратный барьер DelgadoKofuji
Не обеспечивается
(барьерные группы
должны
размещаться в прямоугольных сплошных областях матрицы).
MDBS-сеть
Частичная
(синхронизируемые
процессы должны
быть размещены в
соседних процессорах).
Метод многоад- Полная.
ресных пакетов
Panda*
Барьерное дере- Полная.
во BTM*
Синхронизатор
DVBSS
Полная.
Предлагаемый
подход
Полная.
Расширяемость
на случай dмерной матрицы
Плохая. Плохо
согласуется
с
матричной топологией.
Средняя.
Применим только к
двумерным матрицам.
Хорошая (ограниче- Средняя.
Прино число барьеров в менима только к
системе).
двумерным матрицам.
Средняя (длина сообщения сильно зависит от мощности
барьерных групп).
Хорошая (ограничено число барьерных
регистров).
Хорошая.
Нет
ограничений.
Средняя.
Применимо только к
двумерным матрицам.
Средняя
(наличие Хорошая.
Нет
физических
обрат- ограничений.
ных связей между
угловыми модулями
матрицы усложняет
расширение
системы).
Хорошая (ограниче- Хорошая.
Нет
но число физических ограничений.
слоев координирующей среды).
99
Выводы
1. Разработанная структурно-функциональная организация ячейки координирующей среды отличается наличием элементов и блоков коммутации виртуальных каналов (слоев), отображения барьеров на виртуальные каналы, схем
конвейерного переключения виртуальных каналов, согласованное функционирование которых позволяет реализовать синхронизацию произвольных барьерных групп, в том числе формируемых динамически в ходе выполнения параллельной программы, а также в условиях динамического порождения и уничтожения параллельных процессов.
2. Выполненные математические построения и расчеты показывают, что
аппаратная сложность разработанной ячейки для большинства практических
конфигураций не превышает 30 тыс. ЭВ. Тем самым обеспечивается возможность интегрального воплощения как отдельных ячеек, так и координирующих
сред определенной конфигурации с учетом текущих ограничений на количество ЭВ.
3. Сравнительная оценка гибкости разработанных аппаратных средств показывает, что по совокупности основных характеристик гибкости (зависимость
от конфигурации барьерных групп, масштабируемость координирующей среды
и расширяемость на случай d-мерной матрицы) предложенный подход превосходит лучшие известные аналоги и отвечает требованиям действующих стандартов параллельного программирования мультикомпьютеров (в частности,
MPI 3.0). Разработанные аппаратные средства барьерной синхронизации могут
эффективно использоваться на практике при создании перспективных СБИСмультикомпьютеров.
100
4. ИССЛЕДОВАНИЕ ФУНКЦИОНИРОВАНИЯ РАЗРАБОТАННОЙ
ЯЧЕЙКИ В СОСТАВЕ КООРДИНИРУЮЩЕЙ СРЕДЫ МАТРИЧНОГО
МУЛЬТИКОМПЬЮТЕРА
В данном разделе представлены методика и результаты исследования
функционирования разработанной ячейки виртуально-многослойной координирующей среды в составе ОММК с целью оценки среднего времени, затрачиваемого на один барьерный эпизод (среднего времени синхронизации). Основное содержание данного раздела представлено в работах [12, 13, 17, 40].
4.1. Методика проведения исследований
Оценку среднего времени синхронизации будем производить на основе
имитационного моделирования, поскольку процессы, протекающие в координирующей среде ОММК, подвержены влиянию случайных факторов и носят
массовый характер. В ходе моделирования будем варьировать распределение
(размещение) синхронизируемых процессов (ветвей) между отдельными модулями мультикомпьютера. Ограничимся исследованием работы двумерного
ОММК, поскольку на текущий момент практическая реализация мультикомпьютеров высокой размерности на СБИС затруднительна и нецелесообразна. Моделирование будем выполнять в предположении, что N1  N 2 , т.е. будем рассматривать мультикомпьютер с топологией квадратной матрицы.
В процессе моделирования будем определять среднюю длину интервала
t  t   t   t  , где t  отражает продолжительность процессов, связанных
с вычислением условия синхронизации, t  учитывает продолжительность индикации окончания фазы синхронизации, t  – задержка запуска ветвей множества F  as  , которая в общем случае зависит от размещения ветвей в мультикомпьютере (см. рис. 2.1). По результатам моделирования построим зависимости величины t от числа модулей N  N1 N 2 при фиксированном числе синхронизируемых ветвей, а также зависимости t от числа синхронизируемых
101
ветвей при различных значениях N. С целью упрощения расчетов будем полагать, что число синхронизируемых и активизируемых ветвей для каждого барьера одинаково (это не нарушит общность исследования, так как существенным
является лишь то, какое из множеств J  as  или F  as  максимально по мощности).
Моделирование будем проводить при следующих дополнительных условиях и допущениях. Каждое значение величины t будем рассчитывать путем
усреднения по 500 итерациям, что даст достаточную точность с учетом методической погрешности имитационного моделирования. За единицу измерения t
примем математическое ожидание  t времени распространения значений индикаторных функций через ячейку (зная математическое ожидание времени
срабатывания эквивалентного вентиля tЭВ , несложно выразить t в абсолютных временных единицах). Будем условно приравнивать величину  t к одному
такту имитационного моделирования. Будем также считать (опираясь на результаты исследований других авторов [49]), что времени распространения значений индикаторных функций, а также моменты завершения ветвей множества
J  as  подчинены усеченному нормальному распределению:
  t   2



2
2


 e 
  t  2  , если t  0;

g  t     
2 2 
e
dt 
 
 0
 0, если t  0,
(4.1)
где  и  – соответственно математическое ожидание и среднеквадратическое
отклонение случайной величины t (в ходе моделирования для всех случайных
величин зафиксируем   0,1 , так как больший или меньший разброс
значений практически не влияет на результаты моделирования и маскируется
имеющимися погрешностями). Распределение синхронизируемых ветвей всех
множеств J  as  и F  as  между процессорами будем считать равновероятным,
причем рассмотрим все возможные случаи: 1  J  as   F  as   N .
102
4.2. Особенности используемого языка имитационного моделирования
Имитационное моделирование будем проводить в визуальной программной среде Visual Q-chart Simulator, созданной в ЮЗГУ под руководством проф.
Зотова И.В. [38]. Так как основу данной среды составляет библиотека классов,
модельная интерпретация которых дана в терминах расширенного языка Qсхем [20, 41, 42], кратко рассмотрим особенности этого языка моделирования и
покажем, как на его основе можно представить разработанную ячейку ВМКС и
ее взаимосвязи с другими идентичными ячейками.
Q-схема – связный ориентированный граф, вершины которого представляют элементы моделируемого устройства (системы или процесса), а дуги
отображают связи элементов. Графическое изображение основных элементов
Q-схем дано на рис. 4.1.
Генератор (рис. 4.1,а) имитирует поступление заявок в систему извне согласно заданному закону распределения (при моделировании ВМКС заявкой
будет являться перепад уровня сигнала),  – параметр (набор параметров) этого
закона. Канал (рис. 4.1,б) предназначен для имитации процесса обработки заявки в течение некоторого времени, определяемого заданным законом распределения времен обслуживания. При этом параметр  характеризует закон распределения. Очередь (рис. 4.1,в), или накопитель, моделирует возможные скопления заявок в системе. Она характеризуется максимальной длиной L. Длина L
может быть бесконечной (очередь без потерь заявок) или конечной (очередь с
потерей заявок). Также очередь характеризуется дисциплиной обслуживания
заявок. Наиболее распространены дисциплины FIFO (первым пришел – первым
ушел) и LIFO (первым пришел – последним ушел). Допускается определение
более сложных дисциплин, в том числе приоритетных. Клапан (рис. 4.1,г) отображает блокировки или условия прохождения заявок между другими элементами системы.
103
б)
a)
G
D


в)
г)
Q
K
L
д)
е)
ж)
C
RC
MC
Рис. 4.1. Основные элементы Q-схем:
а – генератор, б – канал, в – очередь, г – клапан,
д – простой случайный контроллер, е – адаптивный случайный контроллер,
ж – обобщенный массовый контроллер
Следующие три элемента служат для управления группами других элементов. Простой случайный контроллер (рис. 4.1,д) предназначен для управления множеством клапанов по некоторому случайному закону. Так, он может
открывать один из нескольких клапанов с заданной вероятностью. Адаптивный
случайный контроллер (рис. 4.1,е) также выполняет случайный выбор одного
клапана из некоторого множества клапанов. Однако, он позволяет динамически
изменять вероятности открытия клапанов с учетом состояния других элементов. Обобщенный массовый контроллер (рис. 4.1,ж) служит для управления
104
подмножеством клапанов, выбираемых из любого заданного множества, по
произвольному закону, который не обязательно является случайным.
Элементы, показанные на рис. 4.1, соединяются между собой с использованием связей двух видов: информационных и управляющих. Информационные
связи представляют пути прохождения заявок в системе. Управляющие связи
отображают пути распространения управляющих сигналов. Информационные
связи изображаются сплошными линиями, а управляющие – пунктирными.
Элемент, имеющий хотя бы одну управляющую связь на выходе, именуется
контроллером. Элемент, имеющий хотя бы одну управляющая связь на входе,
называется объектом управления. Контроллерами могут быть любые элементы,
кроме генераторов и клапанов. Объектами управления могут быть любые элементы, исключая простые случайные контроллеры.
Управляющие связи Q-схемы помечаются символическими метками, которые фиксируют разрешающие условия. Разрешающее условие представляет
то состояние элемента-контроллера, при котором его объект управления будет
приведен в открытое (разрешенное) состояние. Так если управляющая связь
идет к каналу D от клапана K, то ее пометкой может быть разрешающее условие «канал D свободен». В этом случае клапан K будет открываться лишь тогда, когда в канале D нет заявки. Перечень всевозможных разрешающих условий дан в работе [38]. Отметим, что любой объект управления может иметь несколько входных управляющих связей. Это дает возможность задавать сложные
разрешающие условия в виде логических функций нескольких элементарных
разрешающих условий.
4.3. Особенности используемых инструментальных средств имитационного
моделирования
Все описанные выше элементы Q-схем реализованы в составе библиотеки
классов, лежащей в основе используемой среды имитационного моделирования. В свою очередь, основу архитектуры библиотеки составляет иерархия
классов, изображенная на рис. 4.2.
105
Менеджер
ошибок
Менеджер
статистики
Структура
схемы
Структурный элемент
Q-схемы
Q-схема
Заявка
Обработчик заявок
Объект
управления
Массовый
контроллер
Обобщенный
массовый
контроллер
Передатчик
Приемник
Функция
управления
Простой случайный
контроллер
Адаптивный случайный
контроллер
Передатчик с
задержкой
Генератор
случайных
чисел
Генератор
(заявок)
Дисциплина
обслуживания
Канал
Клапан
Очередь
Конечная
очередь
Бесконечная
очередь
Рис. 4.2. Иерархия классов среды Visual Q-chart Simulator
Прямоугольниками на рис. 4.2 представлены элементы, непосредственно
изображаемые в Q-схемах (см. рис. 4.1), а овалами изображены дополнитель-
106
ные элементы. Сплошными стрелками показано отношение открытого наследования, а пунктиром – ассоциации и отношение использования.
Визуальная среда Visual Q-chart Simulator – это графическая надстройка
над рассмотренной библиотекой классов. Она включает следующие основные
функциональные компоненты: 1) дизайнер Q-схем; 2) редактор проектов;
3) генератор
кода;
4) визуализатор
параметров;
5) файловый
менеджер;
6) менеджер данных; 7) менеджер конфигурирования.
Дизайнер Q-схем служит для создания и редактирования Q-схем в графическом режиме, управления свойствами их элементов и связей. Редактор проектов позволяет варьировать параметры моделирования, к числу которых относится длительность цикла моделирования, максимальное число обработанных
заявок, количество одновременно активных сессий моделирования и т.д. Генератор кода обеспечивает оценку корректности Q-схемы и при ее положительном результате генерирует исполнимый файл (группу файлов) проекта. Визуализатор параметров выводит значения параметров элементов и связей Q-схемы
в табличной форме. Файловый менеджер осуществляет запись Q-схем в файлы
фиксированного формата и их чтение из файлов с проверкой корректности.
Менеджер данных устанавливает унифицированный программный интерфейс
для управления глобальными данными среды. Менеджер конфигурирования
поддерживает разнообразные функции настройки среды (задание путей к файлам библиотеки классов, проектам, файлам Q-схем, управление параметрами
дизайнера Q-схем и пр.).
Взаимодействие с пользователем в среде Visual Q-chart Simulator обеспечивается через соответствующие диалоговые окна. Основным таким окном является окно дизайнера Q-схем, изображенное на рис. 4.3. В его правой части
расположена палитра элементов. Из нее пользователь с помощью мыши может
выбирать элементы, изображенные на рис. 4.1, и размещать их на формируемой
Q-схеме. После размещения элемента можно редактировать его свойства; его
можно перемещать, копировать, удалять. Любое действие допускает отмену и
107
восстановление (даже после сохранения изменений Q-схемы в файле). Максимальное число последовательных отмен и восстановлений задается.
В верхней части окна рис. 4.3 находится меню среды, включающее группы функций для работы с файлами, проектами и конфигурацией. Выбор большинства пунктов меню приводит к выводу на экран нового диалогового окна.
Вывод окон диалога происходит также и в других случаях, например, при манипулировании параметрами текущего элемента или связи.
Рис. 4.3. Окно дизайнера Q-схем
Важной частью диалога с пользователем в среде Visual Q-chart Simulator
является редактор кода. Он позволяет задавать (на языке С++) оригинальный
код законов распределения моментов выхода заявок из генераторов и каналов,
программировать сложные дисциплины обслуживания очередей, определять
комбинированные функции управления клапанами, а также задавать алгоритмы
108
работы обобщенных массовых контроллеров. Окна редактора кода для элементов разных типов по внешнему виду практически одинаковы; отличия касаются
лишь заголовка, а также поля ввода параметров и редактирования.
На рис. 4.4 в качестве примера изображено окно редактора кода, позволяющее задавать особые дисциплины обслуживания для очередей. Поле имени
обеспечивает ввод программного идентификатора класса дисциплины обслуживания. Кнопка Start editing служит для активизации режима редактирования.
Кнопка Refresh позволяет обновить текущее определение данного класса. Для
выбора дисциплины обслуживания существующего класса используется список
имен имеющихся классов. Поле задания параметров шаблона (находится в левой части окна) доступно только для каналов и генераторов и позволяет задать
параметры шаблона определяемого генератора случайных чисел.
поле ввода имени класса
дисциплины обслуживания
список имеющихся классов
область ввода определения
функции выбора очередной
заявки
Рис. 4.4. Окно редактора кода для очередей
Полное и подробное описание среды Visual Q-chart Simulator содержится
в работах [14, 18]. Листинги основных модулей среды представлены в работе
[39].
109
На рис. 4.5 представлен фрагмент имитационной модели координирующей среды в окне дизайнера Q-схем среды Visual Q-chart Simulator. В данном
фрагменте имеются однотипные группы элементов. Каждая группа имитирует
работу отдельной ячейки ВМКС и управляется своим обобщенным массовым
контроллером (листинг программы его работы, разработанный в рамках диссертации и являющийся оригинальным, вынесен в приложение 1). В каждой
группе элементов имеется по два генератора заявок. Первый имитирует поток
моментов завершения параллельных ветвей, выполняемых данным модулем.
Второй моделирует поток моментов перезаписи значений компонент вектора
соответствия.
Рис. 4.5. Фрагмент имитационной модели
Многократное исполнение моделирующих проектов, сгенерированных
средой Visual Q-chart Simulator по созданной имитационной модели, позволило
сделать ряд выводов и получить множество зависимостей. Основные из них
рассматриваются в следующем разделе.
110
4.4. Результаты имитационного моделирования
Очевидно, что среднее время синхронизации t очень слабо зависит от
разрядности координирующей среды n, поскольку физические слои практически не оказывают влияния друг на друга, что следует из схемы разработанной
ячейки (см. рис. 3.3). Наиболее интересным представляется исследование зависимости величины t от глубины виртуализации координирующей среды p,
так как последняя связана с числом существующих барьерных групп. График
этой зависимости, полученный в результате обработки данных моделирования,
изображен на рис. 4.6.
Рис. 4.6. График зависимости среднего времени синхронизации
от глубины виртуализации координирующей среды
Зависимость соответствует мультикомпьютеру с организацией 8×8 и получена в предположении, что задержка одного ЭВ составляет в среднем 1 нс, а
время обмена данными между процессорным модулем и ячейкой не превышает
150 нс (определено экспериментально). Анализ зависимости показывает, что
она с достоверностью прогнозирования не менее 0,98 близка к линейной. Таким
111
образом, для всех практически достижимых значений p среднее время синхронизации не превысит 20-30 мкс. В то же время при малых значениях p (9 и
меньше) оно не превосходит 10 мкс. Указанные значения соизмеримы с оценками времени синхронизации, полученными при аналогичных допущениях для
известных аппаратных и гибридных методов барьерной синхронизации [106].
Определенный интерес вызывает также исследование зависимостей среднего времени синхронизации t от числа модулей в составе мультикомпьютера
N. В ходе моделирования установлено, что эти зависимости линейны (см.
рис. 4.7).
t, мкс
100
p=5
80
p=10
p=15
p=20
60
p=25
40
20
0
25
81
169
289
441
625
841 1089 N
Рис. 4.7. Графики зависимости среднего времени синхронизации
от числа процессоров в составе ОММК при различной глубине
виртуализации координирующей среды
Следует отметить, что для максимально возможных на текущий момент
конфигураций ОММК (10×10) значения t не превышают 20÷25 мкс при любых практически обоснованных значениях p (см. рис. 4.7). В перспективных
СБИС-мультикомпьютерах
с
существенно
большим
числом
модулей
112
(500÷1000) обеспечивается среднее время синхронизации до 90 мкс. Однако,
учитывая, что имеет место тенденция к постоянному снижению задержки ЭВ,
фактически t будет несколько меньше.
Таким образом, есть все основания считать, что разработанный метод и
аппаратное решение (как в современных условиях, так и на ближайшую перспективу) удовлетворяют ограничению Т BS  TBS (см. постановку задачи (1.1)).
113
Выводы
1. Разработанная имитационная модель, отличающаяся наличием моделирующих агрегатов (массовых контроллеров) с оригинальной логикой функционирования, дала возможность провести статистическое моделирование работы созданной ячейки в составе координирующей среды двумерного ОММК и
получить зависимости среднего времени синхронизации от глубины виртуализации координирующей среды и числа модулей мультикомпьютера.
2. Полученные экспериментальные зависимости показывают, что при
всех практически достижимых и обоснованных на текущий момент значениях
варьируемых параметров среднее время синхронизации соответствует имеющимся ограничениям и не превышает значения аналогичного показателя известных аппаратных методов барьерной синхронизации. Это позволяет считать,
что разработанный метод и аппаратные средства соответствуют ограничению
Т BS  TBS постановки задачи обеспечения барьерной синхронизации (1.1).
114
ЗАКЛЮЧЕНИЕ
Диссертационная работа посвящена решению научно-технической задачи, заключающейся в разработке метода и аппаратных средств барьерной синхронизации для однокристальных матричных мультикомпьютеров, позволяющих исключить ограничения на конфигурацию барьерных групп и максимальное число барьеров в выполняемых программах при заданных ограничениях на
среднее время барьерной синхронизации, существенная для создания СБИСсистем с гибкой высокоскоростной подсистемой барьерной синхронизации.
В ходе решения этой задачи получены следующие основные результаты:
1. Создан аппаратно-ориентированный метод распределенной барьерной
синхронизации для однокристальных матричных мультикомпьютеров, отличающийся параллельно-конвейерной организацией распространения значений
двоичных индикаторных функций барьеров в многослойной координирующей
среде, на каждый канал (одноразрядный слой) которой отображено несколько
виртуальных каналов, в каждом из которых может выполняться синхронизация
нескольких попарно непараллельных барьеров.
2. Доказано, что разработанный метод барьерной синхронизации инвариантен к конфигурации барьерных групп и в частности, к их мощности и размещению в ОММК, применим в случаях динамического порождения и уничтожения параллельных процессов, регламентируемых стандартом параллельного
программирования MPI 3.0, а также позволяет исключить требования к числу
попарно параллельных барьеров в выполняемых программах.
3. Разработана
структурно-функциональная
организация
узлового
устройства (ячейки) барьерной синхронизации в составе координирующей среды матричного мультикомпьютера, отличающаяся использованием логической
конфигурации отдельного канала (слоя) с двумя инвертирующими цепями обратной связи в двух угловых ячейках среды, имеющих соответственно минимальные и максимальные координаты во всех измерениях, содержащая новые
блоки коммутации виртуальных каналов, отображения барьеров на виртуаль-
115
ные каналы, конвейерного переключения виртуальных каналов и позволяющая
реализовать синхронизацию произвольных барьерных групп, в том числе формируемых динамически в ходе выполнения параллельной программы, а также в
условиях динамического порождения и уничтожения параллельных процессов.
4. Выполнена аналитическая оценка аппаратной сложности разработанной ячейки и координирующей среды на ее основе, которая позволила установить, что в большинстве практически значимых случаев координирующая среда
в целом содержит не более 2 млн. эквивалентных вентилей и следовательно,
может быть полностью реализована на одной микросхеме (и следовательно, интегрирована в ОММК на этапе производства).
5. Установлено, что предложенный подход и разработанные аппаратные
средства барьерной синхронизации по совокупности основных характеристик
гибкости (зависимость от конфигурации барьерных групп, масштабируемость
координирующей среды и расширяемость на случай d-мерной матрицы) превосходят лучшие известные аналоги и соответствуют требованиям действующих стандартов параллельного программирования мультикомпьютеров (в частности, MPI 3.0).
6. Выполнено имитационное моделирование функционирования разработанной ячейки в составе координирующей среды мультикомпьютера, в результате которого были получены экспериментальные зависимости среднего времени синхронизации от глубины виртуализации координирующей среды и числа
процессоров в составе ОММК. Полученные зависимости позволили установить,
что при всех практически достижимых и обоснованных на текущий момент
значениях варьируемых параметров среднее время синхронизации соответствует имеющимся ограничениям (20÷30 мкс) и не превышает значения аналогичного показателя известных аппаратных методов барьерной синхронизации.
116
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Аль-Хади, А.М. Распределенная процедура барьерной синхронизации
с динамическим ограничением области распространения координирующих
сигналов
[Текст]
/
А.М.
Аль-Хади,
С.А.
Муратов,
И.В.
Зотов
//
Телекоммуникации. 2011. №5. С. 2-7.
2. Баранов,
С.И.
Метод
представления
параллельных
граф-схем
алгоритмов совокупностями последовательных граф-схем [Текст] / С.И.
Баранов, Л.Н. Журавина, В.А. Песчанский // Автоматика и вычислительная
техника. 1984. №5. С. 74-81.
3. Бредихин,
Р.В.
Об
организации
встроенного
аппаратного
взаимоконтроля в логических мультиконтроллерах [Текст] / Бредихин Р.В.,
Ньян Лин, Зотов И.В. // Изв. Вузов. Приборостроение. 2013. Т.56, №6. С. 44-49.
4. Бредихин, Р.В. Организация барьерной синхронизации в матричных
мультикомпьютерах
на
основе
виртуально-многослойной
конвейерной
координирующей среды [Текст] / Бредихин Р.В., Зотов И.В., Сухочев Ю.О. //
Материалы
Международной научно-технической конференции
«Оптико-
электронные приборы и устройства в системах распознавания образов,
обработки изображений и символьной информации», Курск, 18-20 мая 2013 г. –
Курск: ЮЗГУ, 2013. C.
5. Бредихин, Р.В. Распределенная координирующая среда матричного
мультиконтроллера с многослойными виртуальными каналами [Текст] /
Бредихин Р.В., Леонов М.Е., Зотов И.В. // Материалы докладов I Региональной
научно-технической конференции «Информационные системы и технологии»,
16-19 октября 2012 г., Курск: ЮЗГУ. С. 197-199.
6. Бредихин, Р.В. Распределенная процедура циклической барьерной
синхронизации для однокристальных матричных мультикомпьютеров [Текст] /
Бредихин
Р.В.,
Зотов
И.В.
//
Известия
ЮЗГУ.
Серия
Управление,
вычислительная техника, информатика. Медицинское приборостроение. №2,
часть 1, 2012. С. 48-54.
117
7. Воеводин, В.В. Параллельные вычисления [Текст] / В.В. Воеводин,
Вл.В. Воеводин. СПБ.: БХВ-Петербург, 2002. 608 с.
8. Волобуев, С.В. Организация барьерной синхронизации в стандарте
MPI
с
использованием
распределенного
многослойного
параллельно-
конвейерного синхронизатора [Текст] / Волобуев С.В., Зотов И.В. // Известия
ЮЗГУ.
Серия
Управление,
вычислительная
техника,
информатика.
Медицинское приборостроение. 2011, №1. С. 41-44.
9. Волобуев, С.В. Процедура распределенной параллельно-конвейерной
барьерной
синхронизации,
инвариантная
к
способу
размещения
синхронизируемых процессов [Текст] / Волобуев С.В., Зотов И.В. // Известия
вузов. Приборостроение. 2010. Т.53, №10. С. 29-34.
10.Волобуев, С.В. Распределенный механизм барьерной синхронизации
на основе параллельно-конвейерной координирующей среды [Текст] / С.В.
Волобуев, И.В. Зотов // Информационно-измерительные и управляющие
системы. 2010. №7. С. 35-39.
11.Емельянов,
С.Г.
Архитектура
параллельных
логических
мультиконтроллеров [Текст] / Емельянов С.Г., Зотов И.В., Титов В.С. // М.:
Высшая школа, 2009. 233 с.
12.Зотов, И.В. Аппаратная реализация барьерной синхронизации в
матричных мультикомпьютерах [Текст] / Зотов И.В., Бурмака А.А., Бредихин
Р.В., Сухочев Ю.О. // Информационно-измерительные и управляющие системы.
2013. №8. С. 41-45.
13.Зотов,
И.В.
Аппаратно-ориентированные
методы
управления
межпроцессорной координацией в параллельных системах с распределенной
памятью [Текст] / Зотов И.В., Бобынцев Д.О., Бредихин Р.В., Ньян Лин //
Известия ЮЗГУ. Серия «Управление, вычислительная техника, информатика.
Медицинское приборостроение». 2013. №1. С. 43-48.
14.Зотов, И.В. Визуальная среда для имитационного моделирования
коммутаторов и коммуникационных сетей [Текст] / Зотов И.В. // Перспективы
развития систем управления оружием: сборник докладов
IV научно-
118
практической конференции, Курск, 19-20 сентября 2007 г. М.: Изд-во
«Бедретдинов и Ко», 2007. С. 71-82.
15.Зотов, И.В.
Методы
распределенной
барьерной
синхронизации
параллельных процессов в матричных СБИС-системах [Текст] / И.В. Зотов,
С.В. Волобуев, А.М. Аль-Хади // Нейрокомпьютеры: разработка, применение.
2009. №12. С. 46-52.
16.Зотов, И.В. Модель синхронизации параллельных управляющих
процессов в микроконтроллерных сетях с матричной организацией [Текст] /
И.В.Зотов // Автоматика и вычислительная техника. 2001. №3. С. 44-55.
17.Зотов,
И.В.
Принципы
организации
встроенного
аппаратного
межмодульного взаимоконтроля в матричных логических мультиконтроллерах
[Текст] / Зотов И.В., Бредихин Р.В., Лисицин Л.А., Ньян Лин // Известия ЮЗГУ.
Серия «Управление, вычислительная техника, информатика. Медицинское
приборостроение». 2013. №1. С. 202-208.
18.Зотов, И.В. Теоретические основы синтеза схем быстродействующих
устройств распределенной децентрализованной координации параллельных
микропрограмм в мультиконтроллерах: дис. … д-ра техн. наук: 05.13.05:
защищена 07.12.06: утв. 15.03.07 / Зотов Игорь Валерьевич. Курск, 2007. 383 с.
19.Макаров,
Д.И.
Модель
ячейки
координирующей
среды
мультиконтроллера с интегрированными средствами аппаратного контроля
модулей [Текст] / Макаров Д.И., Бредихин Р.В., Зотов И.В. // Материалы
докладов I Региональной научно-технической конференции «Информационные
системы и технологии», 16-19 октября 2012 г., Курск: ЮЗГУ. С. 56-59.
20.Наджаджра, М.Х. Использование аппарата Q-схем для моделирования
алгоритмов маршрутизации [Текст] / М.Х. Наджаджра, Дж.Н. Абдель-Джалил,
И.В. Зотов // Оптико-электронные приборы и устройства в системах
распознавания образов, обработки изображений и символьной информации:
материалы 7-й Международной научно-технической конференции, Курск, 4-7
октября 2005 г. – Курск: КурскГТУ, 2005. – C. 179-181.
119
21.Обзор продукции. Процессор Intel Xeon серии 7500 [Электронный
ресурс]
//
Корпорация
Intel,
2010.
URL:
http://cache-
www.intel.com/cd/00/00/45/27/452706_452706.pdf (дата обращения: 09.09.2013).
22.Патент №2005/0050374 A1 США, МКИ 8 G06F 12/00. Method for
synchronizing processors in a multiprocessors system / T. Nakamura, N. Sukegawa
(Япония). – №10/894064; заявлено 20.07.2004; опубл. 03.03.2005. 14 c.
23.Патент №2010/0095090 A1 США, МКИ 10 G06F 15/76, 9/02, 12/08. Barrier synchronization method, device and multi-core processor. / H. Unno, M. Ukai,
M. Depetro (США). – №12/638746; заявлено 15.12.2009; опубл. 15.04.2010. 18 c.
24.Патент №2010/0124241 A1 США, МКИ 10 H04G 3/06. Barrier synchronization apparatus, barrier synchronization system and barrier synchronization method / S. Hiramoto, Y. Ajima, T. Inoue (Япония). – №12/582119; заявлено
20.10.2009; опубл. 20.05.2010. 39 c.
25.Патент №2116665 РФ, МКИ 6 G06F9/22. Модуль мультимикропрограммной
системы
/
И.В.Зотов,
В.А.Колосков,
В.С.Титов
(РФ).
–
№97102631/09; заявлено 18.02.97; опубл. 27.07.98, Бюл. №21. 21 с.
26.Патент №2152071 РФ, МКИ 7 G06F9/22, 9/28. Модуль системы микропрограммного управления / И.В.Зотов (РФ). – №99109080/09; заявлено
5.05.99; опубл. 27.06.2000, Бюл. №18. 20 с.
27.Патент №2168198 РФ, МКИ 7 G05B19/05, G06F9/28. Микроконтроллерная сеть / И.В.Зотов (РФ). – №99119676/09; заявлено 13.09.99; опубл.
27.05.2001, Бюл. №15. 21 с.
28.Патент №2280887 РФ, МКИ 8 G05B19/18, G06F9/28. Микроконтроллерная сеть / А.А. Иванов, Дж.Н. Абдель-Джалил, И.В. Зотов, С.В. Виноградов
(РФ). – №2005104065/09; заявлено 15.02.2005; опубл. 27.07.2006, Бюл. №21.
26 с.
29.Патент РФ №2450328, кл. G06F9/00. Логический мультиконтроллер с
распределенным параллельно-конвейерным барьерным синхронизатором /
А.М.А. Аль-Хади, С.В. Волобуев, И.В. Зотов, С.А. Муратов (РФ) / заявл.
15.12.2010; опубл. 10.05.2012.
120
30.Патент №5434995 США, МКИ 6 G06F15/16, 15/80. Barrier synchronization for distributed memory massively parallel processing systems / S.M.Oberlin,
E.C.Fromm (США). – №165265; заявлено 10.12.93; опубл. 18.07.95. 25 c.
31.Патент №5721921 США, МКИ 6 G06F13/38, 15/16. Barrier and eureka
synchronization architecture for multiprocessors / R.E. Kessler, S.M. Oberlin, G.M.
Thorson (США). – №450251; заявлено 25.05.95; опубл. 24.02.98. 37 c.
32.Патент №6085303 США, МКИ 7 G06F15/16. Serialized race-free virtual
barrier network / G.Thorson, R.S.Passint, S.L.Scott (США). – №972010; заявлено
17.11.97; опубл. 04.07.2000. 22 c.
33.Патент №6216174 B1 США, МКИ 7 G06F15/80. System and method for
fast barrier synchronization / S.L. Scott, R.E. Kessler (США). – №09/162673;
заявлено 29.09.98; опубл. 10.04.2001. 10 c.
34.Патент №6996812 B2 США, МКИ 8 G06F9/45. Software implementation
of synchronous memory barrier / P.E. McKenney (США). – №09/884597; заявлено
18.06.2001; опубл. 7.02.2006. 11 c.
35.Патент №7512951 B1 США, МКИ 9 G06F9/46. Barrier synchronization
object for multi-threaded application / R. Marejca (США). – №10/641172; заявлено
14.08.03; опубл. 31.03.09. 13 c.
36.Патент №7770170 B2 США, МКИ 10 G06F 9/45, 9/46, 17/30, 13/00.
Blocking local sense synchronization barrier / J. Rector, J.D. Morrison, N.M. Clift и
др. (США). – №11/180338; заявлено 12.07.2005; опубл. 03.08.2010. 16 c.
37.Процессоры AMD [Электронный ресурс] // Advanced Micro Devices,
Inc.
URL:
http://www.amd.com/ru/products/Pages/processors.aspx
(дата
обращения: 09.09.2013).
38.Свидетельство о регистрации программы для ЭВМ №2006610308.
Библиотека классов для имитационного моделирования коммуникационных
сетей / Э.И.Ватутин, И.В.Зотов (РФ). – М.: РосПатент; заявлено 22.10.2005; дата
регистрации 16.01.2006.
121
39.Свидетельство о регистрации программы для ЭВМ №2007611310.
Визуальная среда имитационного моделирования VisualQChart / И.В. Зотов [и
др.]. Заявл. 13.02.07; дата регистрации 27.03.07.
40.Свидетельство об официальной регистрации программы для ЭВМ
№2011612774 / Бредихин Р.В. и др. заявл. 14.02.2011; рег. 06.04.2011.
41.Советов, Б.Я. Моделирование систем: учеб. Пособие [Текст] / Б.Я.
Советов, С.А. Яковлев. М.: Высшая школа, 2005. 343 с.
42.Сусин, П.В. Коммутатор с распределенными выходными очередями
для параллельных систем логического управления: дис…канд. техн. наук:
05.13.05: защищена 20.06.2003: утв. 14.11.2003 / Сусин Павел Викторович. –
Курск, 2003. – 220 с.
43.Угрюмов, Е.П. Цифровая схемотехника [Текст] / Е.П. Угрюмов. СПб.:
БХВ-Петербург, 2004. 800 с.
44.Abellan, J.L. Efficient and scalable barrier synchronization for many-core
CMPs [Текст] / J.L. Abellan, J. Fernandez, M.E. Acacio // Proceedings of the 7th
ACM international conference on Computing frontiers, Bertinoro, Italy, 2010. pp. 7374.
45.Abellán, J.L. Efficient Hardware Barrier Synchronization in Many-Core
CMPs [Текст] / J.L. Abellán, J. Fernández, M.E. Acacio // IEEE Transactions on
Parallel and Distributed Systems, 2012. vol. 23, no. 8, pp. 1453-1466.
46.Amin, P. Bridging Interference Barriers in Self-Organized Synchronization
[Текст] / P. Amin, V.P.K. Ganesan, O. Tirkkonen // Proc. IEEE Sixth International
Conference on Self-Adaptive and Self-Organizing Systems, 2012. pp. 109-118.
47.Anderson, J. R. Simulation and Analysis of Barrier Synchronization
Methods [Текст] / J. R. Anderson // Technical Report No: HPPC-95-04, University
of Minnesota, 1995. 42 p.
48.Ashraf, A.-K. Distributed barrier synchronization procedure with the
dynamic limitation of the coordinating signal propagation area [Текст] / Ashraf A.K., Zotov I.V., Hazem A.M., Skopin D.E. // International Review on Computers and
Software (I.RE.CO.S.), Vol.7, No 3, May 2012. pp. 991-995.
122
49.Axelrod, T.S. Effects of Synchronization Barriers on Multiprocessor
Performance [Текст] // Parallel Computing, 1986. no. 3, pp. 129–140.
50.Bai, S. Barrier synchronization for CELL multi-processor architecture
[Текст] / S. Bai, Q. Zhou, R. Zhou, L. Li // Proc. 1st IEEE Int’l Conf. Ubi-Media
Computing, 2008. pp. 155-158.
51.Benini, L. Networks on chips: a paradigm [Текст] / L. Benini, G. De
Micheli // IEEE Transactions on Computers, 2002. Vol. 35, no. 1. pp. 70-78.
52.Bjerregaard, T. A survey of research and practices of network-on-chip
[Текст] / T. Bjerregaard, S. Mahadevan // ACM Computing Surveys, 2006. Vol. 38,
no 1. pp. 1-51.
53.Bredikhin, R.V. A distributed parallel pipelined hardware-level barrier
synchronization method for mesh-connected multicomputers / Igor V. Zotov, Ruslan
V. Bredikhin, Evgeni A. Titenko // International Review on Computers and Software
(I.RE.CO.S.), Vol.8, No 9, September 2013. PP. 2254-2261.
54.Brooks, E.D. The Butterfly Barrier [Текст] / E.D. Brooks // International
Journal of Parallel Programming. 1986. vol.15, no. 4. pp. 295-307.
55.Chen, X. DSBS: Distributed and Scalable Barrier Synchronization in ManyCore Network-on-Chips [Текст] / X. Chen, Sh. Chen // IEEE 10th International
Conference on Trust, Security and Privacy in Computing and Communications, 2011.
pp.1030-1037.
56.Cohen, W.E. An optical bus-based distributed dynamic barrier mechanism
[Текст] / W.E. Cohen, D.W. Hyde, R.K. Gaede // IEEE Trans. Comput., 2000. vol.
49, no. 12, pp. 1354–1365.
57.Connection machine CM-5 technical summary / Thinking Machines Corp.
1992. Nov.
58.Delgado, M., A distributed barrier synchronization solution in hardware for
2D-mesh multicomputers [Текст] / M. Delgado, S. Kofuji // Proc. 3rd Intl Conf. High
Performance Computing, Dec. 19-22 1996. IEEE: 1996. pp. 368-373.
123
59.Dietz, H.G. A fine-grain parallel architecture based on barrier synchronization [Текст] / H. G. Dietz, R. Hoare, T. Mattox // Intl. Conf. Parallel Processing,
1996. vol. 1. pp. 247-250.
60.Dietz, H.G. PAPERS: Purdue's adapter for parallel execution and rapid
synchronization [Текст] / H. G. Dietz, T. Muhammad [et al.] // Technical Report TREE 94-11, March 1994 / School of Electrical Engineering. Purdue University, 1994.
61.Feldmann, A. Subset barrier synchronization on a private-memory parallel
system [Текст] / A. Feldmann, T. Gross, D. O’Hallaron и др. // Proc. ACM Symp.
Parallel Algor. Architect. (SPAA92), San Diego, 29 June – 1 July 1992. ACM, 1992.
pp. 209-218.
62.Forsell, M. Efficient barrier synchronization mechanism for emulated
shared memory NOCs [Текст] / M. Forsell // Proc. Int’l Symp. System-on-Chip,
2004. pp. 33-36.
63.Goodman, J.R. Efficient Synchronization Primitives for Large-Scale CacheCoherent Multiprocessors [Текст] / J.R. Goodman, M.K. Vernon, P.J. Woest // ACM
SIGARCH Computer Architecture News. 1989. vol.17, no.2. pp. 64-75.
64.Hengsen, D. Two Algorithms for Barrier Synchronization [Текст] / D.
Hengsen, R. Finkel, U. Manber // International Journal of Parallel Programming.
1988. vol.17, no. 1. pp. 1-17.
65.Hindam, T. Connecting the distributed hardware agents for barrier
synchronization operation [Текст] / T. Hindam // Proc. Int’l Conf. Electrical,
Electronic and Computer Engineering, 2004. pp. 261-264.
66.Hoare, R. Bitwise aggregate networks [Текст] / R. Hoare, H. Dietz [et al.] //
8th IEEE Symp. Parallel Distrib. Processing, Oct. 23-26 1996. IEEE: 1996, P. 306313.
67.Intel
80-Core
Teraflop
Research
Chip
ресурс]
[Электронный
http://www.youtube.com/watch?v=TAKG0UvtzpE (дата обращения: 09.09.2013).
68.IntellaSys
SEAforth
http://www.intellasys.net/index.php
40C18
?
Itemid=75 (дата обращения: 09.09.2013).
[Электронный
ресурс]
//
URL:
option=com_content&task=view&id=60&
124
69.Johnson, D. Low-cost, high-performance barrier synchronization on networks of workstation [Текст] / D. Johnson, D. Lilja, J. Reidl и др. // Journal of Parallel and Distributed Computing. 1997. vol. 40. pp. 131-137.
70.Johnson, D. A distributed hardware mechanism for process synchronization
on shared-bus multiprocessors [Текст] / D. Johnson, D. Lilja, J. Riedl // Proc. Intl
Conf. Parallel Processing (ICPP-94), August 15-19, 1994. / North Carolina State
University. NC, CRC Press: 1994. Vol.2 (Software). pp.268-275.
71.Johnson, T.A. Cyclical cascade chains: a dynamic barrier synchronization
mechanism for multiprocessor systems [Текст] / T.A.Johnson, R.R.Hoare // Proc.
IEEE Workshop Mass. Paral. Processing, Intl Paral. Distrib. Processing Symp.
(IPDPS-01), San Francisco, 23-27 April 2001. – Los Alamitos: IEEE Computer
Society, 2001. pp. 2061-2068.
72.Jung, I. Two-phase barrier: a synchronization primitive for improving the
processor utilization [Текст] / I. Jung, J. Hyun, J. Lee, J. Ma // Int J. Parallel Progr.
2001, vol. 29, no. 6. pp. 607-627.
73.Kessler, R.E. Cray T3D: A new dimension for Cray Research [Текст] / R.
E. Kessler, J. L. Schwarzmeier // Proc. 38th IEEE Int. Computer Conf., 1993. pp.
176-182.
74.Kini, S.P. Fast and scalable barrier using RDMA and multicast mechanisms
for Infiniband-based clusters [Текст] / S.P. Kini, J. Liu, J. Wu, P. Wyckoff, D.K.
Panda // Proc. 10th European PVM/MPI Users' Group Conf., 2003. pp. 369-378.
75.Marr, S. Insertion Tree Phasers: Efficient and Scalable Barrier
Synchronization for Fine-Grained Parallelism [Текст] / S.Marr, S.Verhaegen, B. De
Fraine, Th. D'Hondt, W. De Meuter // Proc. IEEE 12th International Conference on
High Performance Computing and Communications, 2010. pp.130-137.
76.Mee, W.J. Synchronization techniques for distributed systems: an overview
/ W.J. Mee, G.S. Hura // Microelectron. Reliab. 1992. vol.32, no. 1/2. pp. 175-197.
77.Moh, S. Four-ary tree-based barrier synchronization for 2D meshes without
nonmember involvement [Текст ] / S.Moh, C.Yu, B.Lee и др. // IEEE Trans. Comput. 2001. vol.50, no. 8. pp. 811-823.
125
78.Monchiero, M.
Efficient
synchronization
for
embedded
on-chip
multiprocessors / M. Monchiero, G. Palermo, C. Silvano, O. Villa // IEEE
Transactions on very large scale integration (VLSI) systems. October 2006. vol. 14,
№10. pp. 1049-1062.
79.MPI: A Message-Passing Interface Standard, Version 3.0 [Электронный
ресурс] / Message Passing Interface Forum, September 2012, URL: http://www.mpiforum.org/docs/mpi-3.0/mpi30-report.pdf (дата обращения: 09.09.2013).
80.Nikolopoulos, D.S.
Quantitative
Architectural
Evaluation
of
Synchronization Algorithms and Disciplines on ccNUMA Systems: The Case of the
SGI Origin2000 [Текст] / D.S. Nikolopoulos, T.S. Papatheodorou // 13th
International conference on Supercomputing, 20-25 June 1999. pp. 319-328.
81.O’Boyle, M. Compile time barrier synchronization minimization [Текст] /
M.O’Boyle, E.Stohr // IEEE Trans. Parallel Distrib. Systems. 2002. vol.13, no. 6.
pp. 529-543.
82.O’Keefe, M. Hardware barrier synchronization: Dynamic barrier MIMD
(DBM) [Текст] / M. O’Keefe, H. Dietz // ICPP Proceedings, 1990. vol. 1. pp. 43-46.
83.O’Keefe, M. Hardware barrier synchronization: Static barrier MIMD
(SBM) [Текст] / M. O’Keefe, H. Dietz // ICPP Proceedings, 1990. vol. 1. pp. 35-42.
84.OpenMP Application Program Interface, Version 4.0 [Электронный
ресурс]
/
OpenMP
Architecture
Review
Board
http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf
July
(дата
2013,
URL:
обращения:
09.09.2013).
85.OpenSPARC T1 Overview [Электронный ресурс] // Oracle Technology
Network,
2013.
URL:
http://www.oracle.com/technetwork/systems/opensparc/
opensparc-t1-page-1444609.html (дата обращения: 09.09.2013).
86.Panda, D.K. Fast Barrier Synchronization in Wormhole k-ary n-cube
Networks [Текст] / D.K. Panda // Proc. First IEEE Symp. High-Performance
Computer Architecture, 1995. pp. 200-209.
126
87.Ramakrishnan, V. Efficient techniques for nested and disjoint barrier
synchronization [Текст] / V. Ramakrishnan, I.D. Scherson, R. Subramanian // J.
Paral. Distrib. Comput., 1999. vol. 58, no. 8, pp. 333-356.
88.Sampson,
J.
Exploiting
fine-grained
data
parallelism
with
chip
multiprocessors and fast barriers [Текст] / J. Sampson, R. González, J.-F. Collard,
N.P. Jouppi, M. Schlansker, B. Calder // Proc. 39th Annual IEEE/ACM Int’l. Symp.
Microarchitecture, 2006. pp. 235-246.
89.Sampson, J. Fast synchronization for chip multiprocessors [Текст] /
J.Sampson, R.González, J.-F.Collard и др. // SIGARCH Computer Architecture
News. 2005. vol.33, no. 4. pp. 64-69.
90.Sartori, J. Low-overhead, high-speed multi-core barrier synchronization
[Текст] / J. Sartori, R. Kumar // High Performance Embedded Architectures and
Compilers, Lecture Notes in Computer Science, 2010. vol. №5952. pp. 18-34.
91.Shang, S.S. Distributed hardwired barrier synchronization for scalable
multiprocessor clusters [Текст] / S.S. Shang, K. Hwang // IEEE Transactions on
Parallel and Distributed Systems. 1995. Vol.6, no.6. pp. 591-605.
92.Sivaram, R. A reliable hardware barrier synchronization scheme [Текст] /
R.Sivaram, C.B.Stunkel, D.K.Panda // Proc. 11 Intl Parallel Processing Symp. (IPPS97), Geneva, 1-5 April 1997. – Los Alamitos: IEEE Computer Society, 1997.
pp. 274-280.
93.Sun, C.
Three-dimensional
multiprocessor
system-on-chip
thermal
optimization [Текст] / C. Sun, L. Chang, R.P. Dick // 5th IEEE/ACM international
conference on hardware/software codesign and system synthesis. 30 September –3
October, 2007. pp. 117-122.
94.Sun, Y. Barrier synchronization on wormhole-routed networks [Текст] / Y.
Sun, P.Y.S. Cheung, X. Lin // IEEE Trans. Parallel Distrib. Systems., 2001. vol. 12,
no. 6, pp. 583-597.
95.TILE-Gx8036™ Overview [Электронный ресурс] // Tilera Corporation,
2012.
URL:
http://www.tilera.com/sites/default/files/productbriefs/TILE-
Gx8036_PB033-02_web.pdf (дата обращения: 09.09.2013).
127
96.TILE-Gx8072™ Overview [Электронный ресурс] // Tilera Corporation,
2013.
URL:
http://www.tilera.com/sites/default/files/productbriefs/TILE-
Gx8072_PB041-02.pdf (дата обращения: 09.09.2013).
97.TILEPro64™ Overview [Электронный ресурс] // Tilera Corporation,
2011.
URL:
http://www.tilera.com/sites/default/files/productbriefs/
TILEPro64_Processor_PB019_v4.pdf (дата обращения: 09.09.2013).
98.Tilera products [Электронный ресурс] // Tilera Corporation, 2013. URL:
http://www.tilera.com/products/processors (дата обращения: 09.09.2013).
99.Tzeng, N.-F. Distributed Shared Memory Systems with Improved Barrier
Synchronization and Data Transfer [Текст] / N.-F. Tzeng, A. Kongmunvattana //
Proceedings of the 11th International conference on Supercomputing, Vienna,
Austria, 1997. pp. 148-155.
100. Vega 3 Processor [Электронный ресурс] // Azul Systems, 2010. URL:
http://www.azulsystems.com/products/vega/processor
(дата
обращения:
09.09.2013).
101. Volobuev, S.V. A distributed parallel pipelined barrier synchronizer for
N-dimensional mesh-connected multiprocessor systems. [Текст] / Volobuev S.V.,
Zotov I.V., Al-Hadi A.M. // Proc. 7th Intl Conf. on Information and
Telecommunication Technologies in Intelligent Systems, Lugano, Schweiz, July 0309 2010. pp. 89-94.
102. Yang, J.S. Designing tree-based barrier synchronization on 2D mesh
networks [Текст] / J.S. Yang, C.T. King // IEEE Trans. Parallel Distrib. Systems,
1998. vol. 9, no. 6, pp. 526-533.
103. Yew, P.C. Distributing Hot Spot Addressing in Large Scale Multiprocessors [Текст] / P.C. Yew, N.F. Tzeng, D.H. Lawrie // IEEE Transactions on Computers, 1987. vol.36, no. 4. pp. 388-395.
104. Zhang, L. Highly Efficient Synchronization Based on Active Memory
Operations [Текст] / L. Zhang, Z. Fang, J. B. Carter // 18th International Parallel and
Distributed Processing Symposium, 2004. pp. 58-68.
105. Zhongfeng, Wang. VLSI [Текст] / InTech, 2010. 464 p.
128
106. Zotov, I.V. Distributed Virtual Bit-Slice Synchronizer: A Scalable
Hardware Barrier Mechanism for n-Dimensional Meshes [Текст] / I.V. Zotov // IEEE
Trans. Comput. 2010. vol.59, no. 9. pp. 1187-1199.
129
ПРИЛОЖЕНИЕ 1 – Листинг управляющей подпрограммы, реализуемой
обобщенными массовыми контроллерами при моделировании координирующей среды.
line1=\t/* получение id управляемых клапанов */
line2=\tstatic int ids[9];
line3=unsigned short i, k, l, row, col, group_id, process_no;
line4=\tGATESTATESMAP_ITERATOR it = GateStatesMap.begin();
line5=\tfor ( i = 0; it != GateStatesMap.end(); ++it, ++i ) ids[i] = it->first;
line6=\tstatic int id_UCIn, id_LCIn, id_UCOut, id_LCOut,
line7=id_UCOff, id_LCOff, id_CFIn, id_CFOut, id_CFOff;
line8=\tstatic string gate_name;
line9=\tfor ( i = 0; i < 9; ++i ) {
line10=\t\tgate_name = GETNAMEBYID( CQChart::gate, ids[i] );
line11=\t\tswitch( gate_name[0] ) {
line12=\t\t case 'C' :
line13=\t\t\tif ( gate_name[3] == 'f' ) id_CFOff = ids[i];
line14=\t\t\telse
line15=\t\t\tif ( gate_name[3] == 'n' ) id_CFIn = ids[i];
line16=\t\t\telse id_CFOut = ids[i];
line17=\t\t\tbreak;
line18=\t\t case 'L' :
line19=\t\t\tif ( gate_name[8] == 'f' ) id_LCOff = ids[i];
line20=\t\t\telse
line21=\t\t\tif ( gate_name[8] == 'n' ) id_LCIn = ids[i];
line22=\t\t\telse id_LCOut = ids[i];
line23=\t\t\tbreak;
line24=\t\t case 'U' :
line25=\t\t\tif ( gate_name[8] == 'f' ) id_UCOff = ids[i];
line26=\t\t\telse
line27=\t\t\tif ( gate_name[8] == 'n' ) id_UCIn = ids[i];
line28=\t\t\telse id_UCOut = ids[i];
line29=\t\t\tbreak;
line30=\t\t}
line31=\t}
line32=\t/* сброс состояния управляемых клапанов */
line33=\tGateStatesMap[id_UCIn] = 0;
line34=\tGateStatesMap[id_LCIn] = 0;
line35=\tGateStatesMap[id_UCOut] = 0;
line36=\tGateStatesMap[id_LCOut] = 0;
line37=\tGateStatesMap[id_UCOff] = 1;
line38=\tGateStatesMap[id_LCOff] = 1;
line39=\tGateStatesMap[id_CFIn] = 0;
line40=\tGateStatesMap[id_CFOut] = 0;
line41=\tGateStatesMap[id_CFOff] = 1;
line42=\t/* вычисление адреса текущего модуля в матрице [row:col] */
line43=\tstatic const unsigned short maxrowcount = 32 /* 4, 8, 16, 32, 64 */,
line44=maxcolcount = maxrowcount;
line45=\tstring tmp_str = AssocControllers[0]->GetName().copy();
line46=\tchar * ptr = const_cast<char *>( strrchr( tmp_str.c_str(), '_' ) );
line47=\tcol = atoi( ++ptr );
line48=\t*--ptr = '\0';
line49=\tptr = const_cast<char *>( strrchr( tmp_str.c_str(), '_' ) );
line50=\trow = atoi( ++ptr );
line51=\t/* имитация подачи фиктивного импульса от модуля верхней строки */
line52=\tif ( row == 1 ) {
line53=\t\tif ( GETSTATEBYNAME( AssocControllers[0]->GetName() ) == empty )
130
line54={
line55=\t\t\tGateStatesMap[id_UCIn] = 1;
line56=\t\t\tGateStatesMap[id_UCOff] = 0;
line57=\t\t}
line58=\t}
line59=\t/* имитация подачи фиктивного импульса от модуля левого столбца */
line60=\tif ( col == 1 && row != 1 ) {
line61=\t\tif ( GETSTATEBYNAME( AssocControllers[1]->GetName() ) == empty )
line62={
line63=\t\t\tGateStatesMap[id_LCIn] = 1;
line64=\t\t\tGateStatesMap[id_LCOff] = 0;
line65=\t\t}
line66=\t}
line67=\t/* имитация подачи волны импульсов правым нижним модулем */
line68=\tif ( row == maxrowcount && col == maxcolcount ) {
line69=\t\tGateStatesMap[id_UCIn] = 1;
line70=\t\tGateStatesMap[id_UCOff] = 0;
line71=\t\tGateStatesMap[id_LCIn] = 1;
line72=\t\tGateStatesMap[id_LCOff] = 0;
line73=\t}
line74=\t/* проверка поступления волны импульсов от соседей */
line75=\tbool pulse_wave_here = false;
line76=\tif ( GETSTATEBYNAME( AssocControllers[0]->GetName() ) == busy &&
line77=\t
GETSTATEBYNAME( AssocControllers[1]->GetName() ) == busy )
line78=\t\tpulse_wave_here = true;
line79=\t/* определение нового состояния клапанов Up(Lo)ClockOutGt */
line80=\tif ( pulse_wave_here ) {
line81=\t\tGateStatesMap[id_UCOut] = 1;
line82=\t\tGateStatesMap[id_LCOut] = 1;
line83=\t}
line84=\t/* структуры и типы данных, доступные всей матрице модулей */
line85=\ttypedef unsigned char mtype;
line86=// unsigned short при m == 16, unsigned int при m == 32
line87=\ttypedef unsigned char ptype;
line88=\tstatic const ptype p = 8; // 8, 16, 32 - глубина виртуализации
line89=\tstatic const mtype m = 8; // 8, 16, 32 - число параллельных слоев
line90=\t// среднее время пребывания задачи в системе (в тактах)
line91=\tstatic const unsigned short aver_task_exec_time = 2000;
line92=// средняя продолжительность существования барьерной группы
line93=\tstatic const unsigned short aver_group_duration = aver_task_exec_time / 5;
line94=// среднее время между моментами инстанцирования барьерных групп
line95=\tstatic const unsigned short aver_group_creation = aver_task_exec_time / 100;
line96=// предельные значения мощности барьерной группы
line97=\tstatic const unsigned short min_group_card = 2,
line98=\t\tmax_group_card = maxrowcount * maxcolcount;
line99=// среднее время между смежными барьерами одной группы
line100=static const unsigned short aver_interbarrier_time = aver_group_duration / 40;
line101=// период следования импульсов волны синхронизации
line102=static unsigned short pulse_wave_period = 11;
line103=// минимальное время существования барьерной группы в системе
line104=static unsigned short min_group_duration = maxrowcount * maxcolcount;
line105=\tstatic mtype completion_latch[maxrowcount][maxcolcount][p]; // защелки
line106=\tstatic mtype participation_latch[maxrowcount][maxcolcount][p]; // защелки
line107=\tstatic ptype counter[maxrowcount][maxcolcount]; // счетчики каналов
line108=\tstatic ptype capacity_register; // общий регистр Capacity Register
line109=\t// матрицы регистров Virtual Slice Register и Physical Slice Register
line110=\tstatic ptype virtual_slice_register[maxrowcount][maxcolcount];
line111=\tstatic mtype physical_slice_register[maxrowcount][maxcolcount];
line112=\t// матрица триггеров
line113=\tstatic bool CF[maxrowcount][maxcolcount];
line114=\t// максимальный номер занятого виртуального канала
131
line115=\tstatic unsigned short max_alloc;
line116=\t// статус виртуальных каналов распределенного синхронизатора
line117=\tstatic mtype channel_status[p];
line118=\t// время существования барьерных групп и занятости каналов
line119=\tstatic unsigned short channel_timer[p*m];
line120=\t// матрица номеров импульсов волны синхронизации
line121=\t//static unsigned short pulse_wave[maxrowcount][maxcolcount];
line122=// остаток времени пребывания процессов в межбарьерных секциях
line123=static unsigned short interbarrier_timer[maxrowcount][maxcolcount];
line124=// множество существующих барьерных групп (группы представляются
line125=// номерами назначенных им каналов синхронизации)
line126=static vector<unsigned short> existing_groups;
line127=// множество барьерных групп, участвующих в синхронизации в данный момент
line128=static vector<unsigned short> synchronized_groups;
line129=// множество процессов, участвующих в синхронизации в данный момент
line130=// (процессы задаются сквозными номерами согласно размещению в матрице)
line131=static vector<unsigned short> synchronized_processes;
line132=// массив множеств процессов, принадлежащих барьерным группам
line133=static vector< vector<unsigned short> > group_members;
line134=// массив для учета фактического времени синхронизации барьерных групп
line135=static vector<unsigned int> real_synch_time;
line136=// массив для разрешения учета времени синхронизации барьерных групп
line137=static vector<bool> synch_time_enabled;
line138=// способ размещения синхронизируемых групп процессов в матрице процессоров
line139=static short group_allocation[maxrowcount][maxcolcount];
line140=/* инициализация структур данных */
line141=static bool first_call = true;
line142=static FILE * ieee_log_file = NULL;
line143=\tif ( first_call ) {
line144=first_call = false;
line145=capacity_register = 0x1; // первоначально существует барьерная группа
line146=channel_status[0] = 0x1; // MPI_COMM_WORLD, отображенная на канал 0
line147=existing_groups.push_back(0);
line148=real_synch_time.push_back(0);
line149=synch_time_enabled.push_back(false);
line150=// номера процессов глобальной группы
line151=vector<unsigned short> global_group_members;
line152=for ( i = 1; i <= maxrowcount * maxcolcount; ++i )
line153=global_group_members.push_back(i);
line154=group_members.push_back( global_group_members );
line155=max_alloc = 0; // один канал всегда считается занятым
line156=for ( k = 0; k < maxrowcount; ++k )
line157=\t
for ( l = 0; l < maxcolcount; ++l ) {
line158=\t
for ( ptype q = 1; q < p; ++q )
line159=participation_latch[k][l][q] = 0xff; // 0xffff при m == 16, 0xffffffff при m == 32
line160=// помечаем, что все процессоры принадлежат группе MPI_COMM_WORLD
line161=\t
participation_latch[k][l][0] = 0xfe; // 0xfffe при m == 16, 0xfffffffe
при m == 32
line162=// сброс размещения синхронизируемых групп процессов
line163=group_allocation[k][l] = -1;
line164=// -1 означает, что процесс не входит в синхронизируемые группы
line165=// задание времени до следующего барьера
line166=int random_value;
line167=do {
line168=random_value = rand();
line169=if ( random_value <= 0 ) continue;
line170=interbarrier_timer[k][l] =
line171=-aver_interbarrier_time * log(double(random_value)/RAND_MAX);
line172=interbarrier_timer[k][l] += pulse_wave_period;
line173=}
line174=while ( random_value <= 0 ||
132
line175=interbarrier_timer[k][l] < pulse_wave_period );
line176=// если длительность процесса меньше pulse_wave_period,
line177=// среда может работать некорректно
line178=\t
}
line179=\t}
line180=\tif ( pulse_wave_here ) {
line181=\t /* счет прошедших волн импульсов синхронизации */
line182=\t //++pulse_wave[row-1][col-1];
line183=/* определение состояния элемента И 6 */
line184=\t ptype q = counter[row-1][col-1];
line185=\t bool AND6 = CF[row-1][col-1] && q == virtual_slice_register[row-1][col-1];
line186=/* вычисление набора флагов участия/завершения PCF */
line187=\t mtype PCF = participation_latch[row-1][col-1][q] |
line188=\t
( AND6 ? physical_slice_register[row-1][col-1] : 0 );
line189=/* вычисление набора флагов состояния барьера BF на выходе элемента И 1 */
line190=\t mtype BF = 0;
line191=\t if ( row != 1 && col != 1 )
line192=\t \tBF = completion_latch[row-2][col-1][q] &
line193=completion_latch[row-1][col-2][q] & PCF;
line194=\t else
line195=\t if ( row == 1 && col != 1 )
line196=\t \tBF = completion_latch[row-1][col-2][q] & PCF;
line197=\t else
line198=\t if ( row != 1 && col == 1 )
line199=\t \tBF = completion_latch[row-2][col-1][q] & PCF;
line200=\t else // row == 1 && col == 1
line201=\t \tBF = ~completion_latch[maxrowcount-1][maxcolcount-1][q] & PCF;
line202=/* модификация q-го регистра защелки completion_latch */
line203=mtype old_completion_latch = completion_latch[row-1][col-1][q];
line204=completion_latch[row-1][col-1][q] = BF; // значение q выходит за границу диапазона
line205=\t /* определение нового состояния клапана CFOutGt */
line206=if ( ( old_completion_latch & ~BF &
line207=( AND6 ? physical_slice_register[row-1][col-1] : 0x0 ) ) != 0 )
line208={
line209=// разрешаем активизацию данного процесса
line210=GateStatesMap[id_CFOut] = 1;
line211=CF[row-1][col-1] = false;
line212=/* поиск канала, на который отображена группа данного процесса */
line213=process_no = col + (row - 1) * maxcolcount;
line214=vector<unsigned short>::iterator sg_it = synchronized_groups.begin();
line215=while ( sg_it != synchronized_groups.end() ) {
line216=if ( find( group_members[*sg_it].begin(),
line217=group_members[*sg_it].end(),
line218=process_no ) != group_members[*sg_it].end() )
line219={
line220=/* удаление группы из числа синхронизируемых */
line221=synchronized_groups.erase(
line222=remove( synchronized_groups.begin(),
line223=synchronized_groups.end(), *sg_it ),
line224=synchronized_groups.end() );
line225=break;
line226=}
line227=++sg_it;
line228=}
line229=/* проверяем завершение активизации всех процессов данной группы */
line230=group_id = group_allocation[row-1][col-1];
line231=bool activation_completed = true;
line232=for ( k = 0; k < maxrowcount; ++k )
line233=for ( l = 0; l < maxcolcount; ++l )
line234={
line235=if ( group_id != group_allocation[k][l] ) continue;
133
line236=if ( CF[k][l] )
line237={
line238=activation_completed = false;
line239=break;
line240=}
line241=}
line242=if ( activation_completed ) {
line243=// все процессы активизированы - время синхронизации подсчитано
line244=for ( k = 0; k < maxrowcount; ++k )
line245=for ( l = 0; l < maxcolcount; ++l )
line246=if ( group_id == group_allocation[k][l] )
line247=group_allocation[k][l] = -1;
line248=static unsigned __int64 sum_real_synch_time = 0;
line249=static unsigned count = 0;
line250=sum_real_synch_time += real_synch_time[group_id];
line251=++count;
line252=double aver_real_synch_time =
line253=sum_real_synch_time / (double)count;
line254=///
line255=ieee_log_file = fopen("ieee.log", "a+t");
line256=fprintf( ieee_log_file,
line257="Average real synch time: %.10lf\n", aver_real_synch_time );
line258=fclose( ieee_log_file );
line259=///
line260=real_synch_time[group_id] = 0;
line261=synch_time_enabled[group_id] = false;
line262=}
line263=// помечаем, что этот процесс можно включить в другие
line264=// группы синхронизируемых процессов
line265=synchronized_processes.erase(
line266=remove( synchronized_processes.begin(),
line267=synchronized_processes.end(), process_no ),
line268=synchronized_processes.end() );
line269=// задание для данного процесса времени до следующего барьера
line270=int random_value;
line271=do {
line272=random_value = rand();
line273=if ( random_value <= 0 ) continue;
line274=interbarrier_timer[row-1][col-1] =
line275=-aver_interbarrier_time * log(double(random_value)/RAND_MAX);
line276=interbarrier_timer[row-1][col-1] += pulse_wave_period;
line277=}
line278=while ( random_value <= 0 ||
line279=interbarrier_timer[row-1][col-1] < pulse_wave_period );
line280=// если длительность процесса меньше pulse_wave_period,
line281=// среда может работать некорректно
line282=}
line283=\t}
line284=\tstatic unsigned short period = maxrowcount * maxcolcount;
line285=\tif ( --period == 0 ) {
line286=\t // сюда входим только один раз за такт,
line287=// т.е. после пересчета всей матрицы модулей
line288=\t period = maxrowcount * maxcolcount;
line289=/* инстанцирование очередной барьерной группы */
line290=\t static unsigned short group_creation_timer = 0x0;
line291=\t if ( group_creation_timer == 1 ) {
line292=\t\t // поиск первого виртуального слоя со свободными каналами
line293=\t\t ptype q = 0;
line294=\t\t for ( ; q < p; ++q ) if ( channel_status[q] != 0xff ) break;
line295=\t\t if ( q >= p ) throw exception(); // превышен предел числа слоев
line296=\t\t // поиск первого свободного канала в найденном слое
134
line297=\t\t mtype s = 0x1;
line298=\t\t unsigned char bit_index = 0;
line299=\t\t while ( ( s & channel_status[q] ) != 0 ) {
line300=s <<= 1;
line301=++bit_index;
line302=}
line303=\t\t // захват нового виртуального слоя
line304=\t\t if ( channel_status[q] == 0 ) ++capacity_register;
line305=\t\t // пометка занятости захваченного канала
line306=\t\t channel_status[q] |= s;
line307=\t\t group_id = q*m + bit_index;
line308=// включение созданной группы в множество существующих групп
line309=existing_groups.push_back(group_id);
line310=// определение максимального номера занятого канала
line311=\t\t if ( group_id > max_alloc ) {
line312=real_synch_time.push_back(0);
line313=synch_time_enabled.push_back(false);
line314=max_alloc = group_id;
line315=}
line316=\t\t // задание времени существования данной группы
line317=int random_value;
line318=do {
line319=random_value = rand();
line320=if ( random_value <= 0 ) continue;
line321=channel_timer[group_id] =
line322=\t\t
-aver_group_duration * log( double(random_value) /
line323=RAND_MAX );
line324=// исключение нереально короткого времени существования групп
line325=channel_timer[group_id] += min_group_duration;
line326=}
line327=while ( random_value <= 0 || channel_timer[group_id] < min_group_duration );
line328=\t\t // определение подмножества процессоров группы
line329=vector<unsigned short> this_group_members;
line330=// вначале включаем в группу все процессы
line331=unsigned short left_count = max_group_card;
line332=for ( unsigned short i = 1; i <= left_count; ++i )
line333=this_group_members.push_back(i);
line334=\t unsigned short card = min_group_card + random( max_group_card/4 - 1 );
line335=// удаляем процессы, не включаемые в группу
line336=do {
line337=if ( left_count == card ) break;
line338=this_group_members.erase(
line339=this_group_members.begin() + random( this_group_members.size() )
line340=);
line341=left_count--;
line342=} while ( true );
line343=// модификация содержимого защелок participation_latch
line344=\t\t unsigned short rnd_row, rnd_col;
line345=vector<unsigned short>::iterator gm_it = this_group_members.begin();
line346=while ( gm_it != this_group_members.end() ) {
line347=rnd_row = (*gm_it - 1) / maxcolcount + 1;
line348=rnd_col = *gm_it - maxcolcount * (rnd_row - 1);
line349=participation_latch[rnd_row-1][rnd_col-1][q] &= ~s;
line350=++gm_it;
line351=}
line352=// включение членов группы в массив
line353=if ( group_id >= (unsigned short)group_members.size() )
line354=group_members.push_back( this_group_members );
line355=else group_members[group_id] = this_group_members;
line356=\t }
line357=/* счет времени между моментами создания барьерных групп */
135
line358=\t if ( --group_creation_timer == 0 || group_creation_timer == 0xffff )
line359={
line360=int random_value;
line361=do {
line362=random_value = rand();
line363=if ( random_value <= 0 ) continue;
line364=group_creation_timer =
line365=\t\t
-aver_group_creation * log(double
line366=(random_value)/RAND_MAX);
line367=}
line368=\t\t while ( random_value <= 0 || group_creation_timer == 0 );
line369=}
line370=/* счет времени существования барьерных групп */
line371=\t for ( group_id = 1; group_id <= max_alloc; ++group_id )
line372=\t
if ( channel_timer[group_id] > 0 ) --channel_timer[group_id];
line373=/* формирование множества синхронизируемых групп */
line374=unsigned short next_synch_group = random( max_alloc + 1 );
line375=if ( next_synch_group != 0 && channel_timer[next_synch_group] > 0 )
line376=// группа существует в системе
line377=if ( find( synchronized_groups.begin(),
line378=synchronized_groups.end(),
line379=next_synch_group ) == synchronized_groups.end() )
line380={ // группа не входит в число синхронизируемых групп
line381=// проверка наличия в группе синхронизируемых процессов
line382=bool has_synch_processes = false;
line383=vector<unsigned short>::iterator sg_it =
line384=group_members[next_synch_group].begin();
line385=while ( sg_it != group_members[next_synch_group].end() )
line386={
line387=if ( find( synchronized_processes.begin(),
line388=synchronized_processes.end(),
line389=*sg_it ) != synchronized_processes.end() )
line390={ // в группе есть уже синхронизируемый процесс
line391=has_synch_processes = true;
line392=break;
line393=}
line394=k = (*sg_it - 1) / maxcolcount + 1;
line395=l = *sg_it - maxcolcount * (k - 1);
line396=if ( CF[k-1][l-1] )
line397={ // в группе есть еще не активизированный процесс
line398=has_synch_processes = true;
line399=break;
line400=}
line401=++sg_it;
line402=}
line403=if ( !has_synch_processes ) {
line404=// группа не содержит синхронизируемых процессов
line405=// включаем ее в число синхронизируемых групп
line406=synchronized_groups.push_back( next_synch_group );
line407=// добавляем ее процессы в множество синхронизируемых процессов
line408=sg_it = group_members[next_synch_group].begin();
line409=while ( sg_it != group_members[next_synch_group].end() )
line410={
line411=synchronized_processes.push_back( *sg_it );
line412=k = (*sg_it - 1) / maxcolcount + 1;
line413=l = *sg_it - maxcolcount * (k - 1);
line414=group_allocation[k-1][l-1] = next_synch_group;
line415=++sg_it;
line416=}
line417=}
line418=}
136
line419=\t /* уничтожение барьерных групп и освобождение каналов */
line420=\t if ( max_alloc > 0 ) {
line421=\t
for ( group_id = 1; group_id <= max_alloc; ++group_id )
line422=\t\t if ( channel_timer[group_id] == 0 ) {
line423=\t\t
// обнуление статуса канала
line424=\t\t
ptype q = group_id / m;
line425=\t\t
unsigned char bit_index = group_id % m + 1;
line426=\t\t
mtype s = 0x1;
line427=\t\t
while ( --bit_index ) s <<= 1;
line428=if ( ( channel_status[q] & s ) != 0 ) {
line429=// проверяем не является ли эта группа синхронизируемой
line430=if ( find( synchronized_groups.begin(),
line431=synchronized_groups.end(),
line432=group_id ) == synchronized_groups.end() )
line433={ // не является - уничтожить группу можно
line434=// освобождаем канал синхронизации
line435=\t\t
channel_status[q] &= ~s;
line436=\t\t
// освобождение виртуального слоя
line437=\t\t
if ( channel_status[q] == 0 ) --capacity_register;
line438=\t\t
// проверка не освобождается ли канал с максимальным номером
line439=\t\t
if ( group_id == max_alloc ) --max_alloc;
line440=// удаление группы из множества существующих барьерных групп
line441=group_members[group_id].clear();
line442=existing_groups.erase(
line443=find( existing_groups.begin(), existing_groups.end(), group_id )
line444=);
line445=// переустановка защелок participation_latch
line446=\t\t
for ( k = 1; k <= maxrowcount; ++k )
line447=\t\t
for ( l = 1; l <= maxcolcount; ++l )
line448=\t\t\t
if ( (participation_latch[k-1][l-1][q] & s) == 0 )
line449={
line450=// установка group_id-го разряда защелки participation_latch
line451=\t\t\t\t
participation_latch[k-1][l-1][q] |= s;
line452=}
line453=}
line454=}
line455=\t\t } // channel_timer[group_id] != 0
line456=} // max_alloc == 0
line457=/* счет фактического времени синхронизации барьерных групп */
line458=i = 0;
line459=while ( i < (unsigned short)synch_time_enabled.size() )
line460={
line461=if ( synch_time_enabled[i] ) ++real_synch_time[i];
line462=++i;
line463=}
line464=gotoxy( 1, 5 );
line465=printf( "MaxAlloc: %u", max_alloc );
line466=gotoxy( 1, 6 );
line467=printf( "Capacity register: %u", capacity_register );
line468=gotoxy( 1, 7 );
line469=printf( "Channel status: " );
line470=clreol();
line471=for ( short g = p - 1; g >= 0; --g ) {
line472=\tprintf( "%X", (channel_status[g] & 0xf0) >> 4 );
line473=\tprintf( "%X", channel_status[g] & 0x0f );
line474=}
line475=gotoxy( 1, 8 );
line476=printf( "Synchronized groups: " );
line477=clreol();
line478=for ( short g = 0; g < (short)synchronized_groups.size(); ++g ) {
line479=\tprintf( "%u ", synchronized_groups[g] );
137
line480=}
line481=gotoxy( 1, 9 );
line482=printf( "Existing groups: " );
line483=clreol();
line484=for ( short g = 0; g < (short)existing_groups.size(); ++g ) {
line485=\tprintf( "%u ", existing_groups[g] );
line486=}
line487=} // period != 0
line488=/* счет продолжительности межбарьерных секций синхронизируемых процессов */
line489=process_no = col + (row - 1) * maxcolcount;
line490=if ( find( synchronized_processes.begin(),
line491=synchronized_processes.end(),
line492=process_no ) != synchronized_processes.end() )
line493={
line494=bool old_CF = CF[row-1][col-1];
line495=if ( interbarrier_timer[row-1][col-1] == 0 )
line496=/* индикация завершения процесса */
line497=CF[row-1][col-1] = true;
line498=else --interbarrier_timer[row-1][col-1];
line499=if ( !old_CF && CF[row-1][col-1] ) {
line500=/* поиск канала, на который отображена группа данного процесса */
line501=group_id = 0;
line502=vector<unsigned short>::iterator
line503=sg_it = synchronized_groups.begin();
line504=while ( sg_it != synchronized_groups.end() ) {
line505=if ( find( group_members[*sg_it].begin(),
line506=group_members[*sg_it].end(),
line507=process_no ) != group_members[*sg_it].end() )
line508={
line509=group_id = *sg_it;
line510=break;
line511=}
line512=++sg_it;
line513=}
line514=/* загрузка Physical Slice (m) Register и Virtual Slice (p) Register */
line515=virtual_slice_register[row-1][col-1] = group_id / m;
line516=unsigned char bit_index = group_id % m + 1;
line517=physical_slice_register[row-1][col-1] = 0x1;
line518=while ( --bit_index ) physical_slice_register[row-1][col-1] <<= 1;
line519=/* проверка завершения всех процессов данной группы */
line520=bool group_completed = true;
line521=unsigned short member; i = 0;
line522=while ( i < (unsigned short)group_members[group_id].size() )
line523={
line524=member = group_members[group_id][i];
line525=k = (member - 1) / maxcolcount + 1;
line526=l = member - maxcolcount * (k - 1);
line527=if ( !CF[k-1][l-1] ) {
line528=group_completed = false;
line529=break;
line530=}
line531=++i;
line532=}
line533=if ( group_completed ) {
line534=/* все процессы завершились - начинаем счет времени синхронизации */
line535=synch_time_enabled[group_id] = true;
line536=}
line537=/* определение нового состояния клапанов CFInGt и CFOffGt */
line538=GateStatesMap[id_CFIn] = 1;
line539=GateStatesMap[id_CFOff] = 0;
line540=} // !(!old_CF && CF[row-1][col-1])
138
line541=}
line542=/* активизация очередного виртуального слоя в данном модуле */
line543=if ( pulse_wave_here ) {
line544=\t\tif ( counter[row-1][col-1] >= capacity_register - 1 )
line545=\t\t\tcounter[row-1][col-1] = 0;
line546=else ++counter[row-1][col-1];
line547=}
line548=\treturn (void)0;
139
ПРИЛОЖЕНИЕ 2 – Акты о внедрении результатов диссертации
Download