ЭВМ с управлением от потока данных
Кроме МКМД-ЭВМ типа IF с управлением от потока команд существуют МКМД-ЭВМ типа DF с управлением от потока данных.
Рассмотрим принципы построения DF-ЭВМ на примере машины Денниса. В таких машинах отсутствуют понятия "память данных", "переменная", "счетчик команд". Вместо этого команды (операторы) управляются данными. Считается, что команда готова к выполнению, если данные присутствуют на каждом из ее входных портов и отсутствуют в выходном порту. Программа представляет собой направленный граф, образованный соединенными между собой командами: выходной порт одной команды соединен с входным портом другой команды. Следовательно, порядок выполнения команд определяется не счетчиком команд, а движением потока данных в командах.
Рис. 3.16. Структура машины Дениса
Она состоит из трех секций. К первой относится память с ячейками команд. Эти ячейки являются пассивной памятью, но в них содержатся и некоторые логические схемы. Блоки арифметико-логических операций вырабатывают данные, а блоки принятия решений - управляющую информацию. Машина Денниса может содержать произвольное число блоков обоих типов, числом которых и определяется ее реальный параллелизм. Эти блоки составляют вторую секцию. Третья секция состоит из трех переключающих сетей. Селекторная сеть извлекает готовую к выполнению команду и направляет ее в соответствующий блок операций или блок принятия решения. Распределительная сеть принимает пакет результата (данные и адрес назначения) и направляет его в указанную ячейку команды. Точно так же управляющая сеть передает управляющий пакет (результат принятия решения и адрес назначения) в указанную ячейку команды.
Вопрос представления в DF-ЭВМ структур данных (массивы, графы) достаточно сложен. Один из вариантов его решения предусматривает введение дополнительной памяти для хранения структур данных, а также отдельных блоков для их обработки. Запуск на обработку структуры данных выполняется командой потокового типа, а обработка больших массивов производится методами, близкими к традиционным.
Команда такой машины содержит код операции; блок состояний, описывающий наличие операндов; сами операнды; адреса, по которым нужно разослать результат.
Этот язык имеет достаточно низкий уровень и не пригоден для написания больших программ, поэтому разрабатывается ряд языков с традиционной формой представления операторов.
На таком символьном ЯВУ программа будет изображаться в виде списка операторов, причем порядок следования операторов в списке может быть произвольным и ни в коей мере не определяет порядок вычислений.
Чтобы повысить уровень программирования в символьных ЯВУ для потоковых машин, некоторые устойчивые совокупности операторов, используемые, в частности, для организации циклов, заменяются одним оператором, которым и пользуется программист.
Порядок вычислений в потоковой символьной программе определяется связями между операторами и готовностью данных на линиях этих связей. Чтобы правильно построить символьную программу, необходимо всем связям присвоить уникальные, неповторяющиеся имена и эти имена перенести в операторы. Присвоение уникального имени называется в потоковых машинах принципом однократного присваивания и используется практически во всех графических и символьных языках.
Составлено по материалам книги Г.И. Шпаковский. Организация параллельных ЭВМ и суперскалярных процессоров