Архітектура потоків даних
Архітектура потоків даних (dataflow architecture) — архітектура обчислювальних машин, у якій процесом обчислень керує потік даних, котрі подорожують між обчислювальними пристроями у машині, де опрацьовуються, поступово «допроваджуючи» себе до «опрацьованого» стану.
Фактично, у архітектурах з керуванням від потоків даних, на відміну від класичних архітектур з керуванням від потоків команд (див. напр. Архітектура фон Ноймана, Гарвардська архітектура), процесом обчислень керує безпосередньо потік даних, а не послідовність команд. Критерієм того, що деякий обчислювальний пристрій у машині може розпочати обчислення, є готовність усіх необхідних до проведення обчислення операндів. Тому у машинах з керуванням від потоку даних, на відміну від фон-нойманівської та подібних послідовних архітектур, операції можуть виконуватись паралельно та незалежно одна від одної. Тобто машина з керуванням від потоку даних не має потреби у централізованому керуванні послідовністю виконання, у лічильниках команд, тощо, та взагалі у будь-якому централізованому керуванні.
Програма машини з керуванням від потоку даних зазвичай надається у вигляді графа потоків даних, на якому зображено шляхи руху даних через операційні пристрої. Наданий граф демонструє програму знаходження коренів квадратного рівняння. Операційні пристрої показані незаштрихованими кружечками з позначками операцій, а заштрихованими кружечками показані розмножувачі даних, функція яких є наочною.
Вхідні дані А, B та C (коефіцієнти рівняння), подорожують графом, «перетворюючись» в результаті на шукані корені рівняння X та Y. Як бачимо, за умови наявності всіх операндів на момент започаткування обчислень, виконання обчислень може відбуватись одночасно у декількох напрямках на графі (оператори, що можуть за таких умов опрацьовувати операнди паралельно, забарвлені однаковим кольором). Навіть за умови, коли операнд не готовий, незалежні від цього операнда гілки обчислень все одно можуть виконуватись доти, доки обчислення на операційних пристроях-споживачах будуть незалежними від цього операнда. Також слід зазначити, що архітектури з керуванням від потоку даних є доволі незвичними у програмуванні, що у свою чергу є вадою у порівнянні з фон-нойманівськими архітектурами.
Однак водночас та воднораз, головні принципи машин з керуванням від потоку даних застосовуються в сучасних надпродуктивних процесорах (див. суперскалярність) з метою досягнення високого рівня паралелізму.