Принцип действия машин потоков данных

Машины потоков данных производят наиболее сильное впечат­ление тем, что принципы их проектирования не базируются на основных свойствах и характеристиках традиционных машин и языков программирования. В архитектуре машин потоков дан­ных отсутствует понятие «пассивная память данных», а в языке потоков данных нет понятия «переменная»: данные перемеща­ются из команды в команду по мере выполнения программы.

Кроме того, в данном случае не используются понятия «пе­редача управления», «счетчик команд» и «ветвление вычисли­тельного процесса». Вместо этого команды (операторы) управ­ляются данными. Считается, что команда готова к выполнению» (т. е. ее выполнение разрешено), если данные присутствуют в каждом из ее входных портов и отсутствуют в выходном порте. Выполнение команды приводит к исчезновению данных в ее входных портах и появлению результата в выходном пор­те. Программа представляет собой направленный граф, обра­зованный соединенными между собой командами: выходной порт одной команды соединен с входным портом другой коман­ды. Таким образом, порядок выполнения команды определяется не счетчиком команд, а движением потока данных в командах.

Указанные принципы выполнения команд иллюстрирует рис. 22.1. Здесь окружности обозначают команды, стрелки— линии связи между командами, а зачерненные круги—данные.

Первые три команды показаны в состоянии запрета на вы­полнение. У первой команды нет входных данных, у второй данные присутствуют не на всех входных линиях, а в третьей команде имеются данные—предыдущий результат—на выход­ной линии. Четвертая команда имеет все, что необходимо для получения разрешения на выполнение, т. е. готова к выполне­нию. Выполнение команды приводит к исчезновению данных с» входных линий и появлению результата на выходной линии.

На рис. 22.2 с помощью рассмотренных символических обо­значений описывается решение квадратного уравнения. Возни­кает необходимость ввести два дополнительных понятия. Пер­вым является размножитель, который представляет собой операцию с одним входом и несколькими выходами. Он готов к ра­боте, когда на входной линии данные присутствуют, а выходные линии пусты. Его функции—распределять входные данные по всем выходным линиям. Размножитель обозначается небольшим зачерненным кругом. (Не путать с обозначением данных (рис. 22.1)!—Прим. перев.) Вторым новым понятием является бесконечный источник констант для команды. Например, после выполнения операции умножения 2 на А, константа 2 немедлен­но снова воссоздается на одной из входных линий.

Рис.22.1. Возможные состояния Рис.22.2. Алгоритм решения квадратного

команд в машине потоков данных. уравнения в машине потоков данных.

У читателя может возникнуть желание проследить путь пе­ремещения данных по графу. (Отметим, что некоторые вопросы, такие, как порядок выполнения операций вычитания и деления, .здесь не рассматриваются.) Следует обратить внимание на то, что целый ряд операций может оказаться готовым к выполне­нию в один и тот же момент времени и, следовательно, возмож­но их параллельное выполнение. Схема рис. 22.2 иллюстрирует •тот принцип, что команды не запрашивают операнды традиционным способом, а указывают посредством соединительных ли­ний, к каким командам направляются результаты их работы— их выходные линии. Таким образом, принципы построения графа потока данных во многом подобны прин­ципам построения сетей Петри [3].

Граф потоков данных можно рассматри­вать и на более высоком уровне абстракции, или обобщения. Примером является схема, приведенная на рис. 22.3. Следовательно, и подлежащая решению задача, может быть представлена с различной степенью обобще­ния, например такой, когда граф потоков дан­ных полностью заменен единственным опера­тором на графе более высокого уровня .

Рис.22.3. Обобщенное представление алгоритма решения квадратного уравнения.

Соседние файлы в папке 3.2. ВС с управлением от потока данных