Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем
.pdfВычислительные системы с управлением вычислениями от потока данных 61 5
Результат
Рис. 15.2. Граф потоков данных для выражения А/B + В х С
На рис. 15.2 показан простой потоковый граф для вычисления выражения f=А/В+ + В x С. Входами служат переменные А, В и С, изображенные вверху графа. Дуги между вершинами показывают тракты узловых операций. Направление вычисле ний — сверху вниз. Используются три вычислительные операции: сложение, умножение и деление. Заметим, что В требуется в двух узлах. Вершина «Копи рование»- предназначена для формирования дополнительной копии перемен ной В.
Данные (операнды/результаты), перемещаемые вдоль дуг, содержатся в опо знавательных информационных кадрах, маркерах специального формата — «токенах» (иначе «фишках»- или маркерах доступа). Рисунок 15.3 иллюстрирует дви жение токенов между узлами. После поступления на граф входной информации маркер, содержащий значение А, направляется в вершину деления; токен с пере менной В — в вершину копирования; токен с переменной С — в вершину умноже ния. Активирована может быть только вершина «Копирование», поскольку у нее лишь один вход и на нем уже присутствует токен. Когда токены из вершины «Ко пирование*' будут готовы, узлы умножения и деления также получат все необхо димые маркеры доступа и могут быть инициированы. Последняя вершина ждет завершения операций умножения и деления, то есть когда на ее входе появятся все необходимые токены.
Практические вычисления требуют некоторых дополнительных возможно стей, например при выполнении команд условного перехода. По этой причине в потоковых графах предусмотрены вершины-примитивы нескольких типов (рис. 15.4):
0 2 2 Глава 15. Потоковые и редукционные вычислительные системы
Процессорные элементы должны были получать так называемые пакеты действий (activity templates) в виде: Код операции • Операнды • Адресат. Здесь точка обозна чает операцию составления целого слова из его частей, «Код операции» определя ет подлежащую выполнению операцию, «Операнды» — используемые в операции числа, а «Адресат» — указывает место, куда должен быть направлен результат опе рации. Отметим, что в полях операндов задаются не адреса ячеек памяти, а непо средственно числа, которые должны участвовать в операции. Это имеет свои пре имущества и недостатки. Первое состоит в том, что в каждый момент времени операнды могут быть использованы только одной выбранной вершиной. Изъян идеи — невозможность включения в команду в качестве операндов сложных струк тур данных, даже простых векторов и массивов.
Пакет результата имеет вид: Значение • Адресат, где в поле «Значение» содер жится значение результата, полученное после выполнения операции. Эти пакеты передаются по маршрутизирующей сети в так называемые ячейки команды блока памяти, а именно в указанные в их поле «Адресат». Когда получены все входные пакеты (токены), ячейка команды порождает пакет операции. Обычно для генера ции пакета операции ячейке команды нужны два входных пакета с операндами. Затем пакет операции маршрутизируется к одному из процессорных элементов (ПЭ). Если все процессорные элементы идентичны (гомогенная система), может быть выбран любой свободный ПЭ. В негомогенных системах со специализиро ванными ПЭ, способными выполнять только определенные функции, выбор нуж ного ПЭ производится по коду операции, заключенном в пакете операции.
Внесколько усовершенствованном варианте рассмотренная ВС была спроек тирована под руководством того же Денниса в Массачусетсском технологическом институте (MIT). Система состояла из пяти основных подсистем: секции памяти, секции процессоров, сети арбитража, сети управления и сети распределения. Все коммуникации между подсистемами осуществлялись путем асинхронной переда чи пакетов по каналам. Прототип ВС содержал восемь процессорных элементов на базе микропроцессоров и сеть маршрутизации пакетов, построенную на марш рутизирующих элементах 2x2.
Вкачестве других примеров статических потоковых ВС можно упомянуть: LAU System [80,81], TI's Distributed Data Processor [82], DDMI Utah Data Driven Ma chine [85], NEC Image Pipelined Processor [73], Hughes Dataflow Multiprocessor [218].
Динамические потоковые вычислительные системы
Производительность потоковых систем существенно возрастает, если они в состо янии поддерживать дополнительный уровень параллелизма, соответствующий одновременному выполнению отдельных итераций цикла или параллельной об работке пар элементов в векторных операциях. Кроме того, в современных языках программирования активно используются так называемые реентерабельные про цедуры, когда в памяти хранится только одна копия кода процедуры, но эта копия является повторно входимой (реентерабельной). Это означает, что к процедуре можно еще раз обратиться, не дожидаясь завершения действий в соответствии с предыдущим входом в данную процедуру. Отсюда желательно, чтобы все обра щения к реентерабельной процедуре также обрабатывались параллельно. Задача обеспечения дополнительного уровня параллелизма решается в динамических по-