Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем

.pdf
Скачиваний:
2028
Добавлен:
02.05.2014
Размер:
22.66 Mб
Скачать

Вычислительные системы с управлением вычислениями от потока данных 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].

Динамические потоковые вычислительные системы

Производительность потоковых систем существенно возрастает, если они в состо­ янии поддерживать дополнительный уровень параллелизма, соответствующий одновременному выполнению отдельных итераций цикла или параллельной об­ работке пар элементов в векторных операциях. Кроме того, в современных языках программирования активно используются так называемые реентерабельные про­ цедуры, когда в памяти хранится только одна копия кода процедуры, но эта копия является повторно входимой (реентерабельной). Это означает, что к процедуре можно еще раз обратиться, не дожидаясь завершения действий в соответствии с предыдущим входом в данную процедуру. Отсюда желательно, чтобы все обра­ щения к реентерабельной процедуре также обрабатывались параллельно. Задача обеспечения дополнительного уровня параллелизма решается в динамических по-