Архитектура машин, управляемых потоком данных
Появление машин потоков данных по трем основным причинам.
Причина №1. Отсутствие достаточной вычислительной мощности.
Причина №2. Современные языки программирования отражают принципы архитектуры машин фон Неймана.
Причина № 3. Наличие узких мест в электронике.
Принцип действия машин потоков данных
Команды (операторы) управляются данными.
Программа представляет собой направленный граф, образованный соединенными между собой командами.
Таким образом, порядок выполнения команды определяется не счетчиком команд, а движением потока данных в командах.
Размножитель - операция с одним входом и несколькими выходами. Рис 5.3
Бесконечный источник констант. константа немедленно снова воссоздается на входной линии.
Язык потоков данных
В основу языка положены следующие три основных понятия: исполнительный элемент (блок и размножитель); информация; линия связи.
Отсутствуют средства для распознавания типов данных. Сигналы на линии связи могут отсутствовать, либо может находиться только один токен.
Информация по типам делится на: значения данных (сплошные стрелки); значения управляющих сигналов (штриховые стрелки).
Блок типа вентиль Т готов к работе при наличии на его входах как токена данных, так и токена управляющей информации. Либо пропускает входные данные на свой выход, либо просто «поглощает» их. Смеситель не уничтожает всех токенов на входных линиях. Рассмотрим программу на языке ПЛ/1:
Z: PROCEDURE (X,Y);
DO I = I TO X;
IF Y>1 THEN Y=Y*Y;
ELSE Y=Y+Y+2;
END;
END;
Машина потоков данных
Машина состоит из трех секций.
1 секция – память, содержащая ячейки команд. Не являются пассивными ЗУ, т.к. содержат логические схемы.
2 секция – блоки выполнения операций и принятия решений. Результат первых - данные, а вторых — управляющая информация.
3 секция – переключающие сети. Селекторная. Управляющая. Распределительная. Рис. 5.6. Ячейка команды
Код операции | Адрес(а) назначения | ||
Вентильный код | Вентильный флаг | Флаг данных | Данные |
Вентильный код | Вентильный флаг | Флаг данных | Данные |
Программы потоков данных размещаются в ячейках команд. Операция, заданная в команде, соответствует одному из рассмотренных выше блоков.
вентильный код задается для каждого входа. N — функции не выполняются; Т — данные, будут приняты, если вентильный флаг уже поступил; F — аналогично Т; С — константа. Вентильный флаг поступает из управляющей сети: Off — пакет не был получен; Т — получен пакет TRUE; F — получен пакет FALSE.
Сети трактов передачи пакетов
Селекторная, распределительная и управляющая сети.
Сети включают в себя элементы еще Буферы для временного хранения данных и Преобразователи кодов из последовательного потока в параллельный, а также из параллельного в последовательный.
Рисунок 5.8. Селекторная сеть. Рисунок 5.9. Распределительная сеть.
В селекторной сети осуществляется преобразование информации пакетов из последовательного кода в параллельный. Управляющая и распределительная сети получают пакеты в параллельном коде, преобразуют в последовательный. Ячеек памяти всегда во много раз больше чем процессоров (исполнительных элементов).