М ашины потоков данных производят наиболее сильное впечатление тем, что принципы их проектирования не базируются на основных свойствах и характеристиках традиционных машин и языков программирования. В архитектуре машин потоков данных отсутствует понятие «пассивная память данных», а в языке потоков данных нет понятия «переменная»: данные перемещаются из команды в команду по мере выполнения программы.
Кроме того, в данном случае не используются понятия «передача управления», «счетчик команд» и «ветвление вычислительного процесса». Вместо этого команды (операторы) управляются данными. Считается, что команда готова к управлению (т. е. Ее выполнение разрешено), если данные присутствуют в каждом из ее входных портов и отсутствуют в выходном порте. Выполнение команды приводит к исчезновению данных в ее входных портах и появлению результата в выходном порте. Программа представляет собой направленный граф, образованный соединенными между собой командами: выходной порт одной команды соединен с входным портом другой команды. Таким образом, порядок выполнения команды определяется не счетчиком команд, а движением потока данных в командах.
Указанные принципы выполнения команд иллюстрируют рис. 1. здесь окружности обозначают команды, стрелки – линии связи между командами, а зачерненные круги – данные.
Команда готова к выполнению
Результат выполнения
Рис. 1. Возможные состояния команд в машине потоков данных.
Первые три команды показаны в состоянии запрета на выполнение. У первой команды нет входных данных, у второй данные присутствуют не на всех входных линиях, а в третьей команде имеются данные – предыдущий результат – на выходной линии. Четвертая команда имеет все, что необходимо для получения разрешения на выполнение, т. е. готова к выполнению. Выполнение команды приводит к исчезновению данных со входных линий и появлению результата на выходной линии.
Т акже возникает необходимость ввести два дополнительных понятия. Первым является размножитель, который представляет собой операцию с одним входом и несколькими выходами. Он готов к работе, когда на входной линии данные присутствуют, а выходные линии пустые. Его функции – распределять входные данные по всем выходным линиям. Размножитель обозначается небольшим зачеркнутым кругом. Вторым новым понятием является бесконечный источник констант для команды.
Достарыңызбен бөлісу: |