Архитектурно, то есть в отношении того, что видит программное обеспечение, современные процессоры используют последовательную модель фон Неймана. Однако большинство высокопроизводительных процессоров используют неупорядоченное выполнение, что позволяет выполнять операции не в последовательном порядке, но их эффекты фиксируются в программном порядке.
(Некоторые ранее у процессоров по порядку были неточные исключения, вызванные операциями, начинающими выполнение по порядку, но результаты были зафиксированы по мере их появления. Это означает, что операция с более короткой задержкой, такая как сложение целых чисел, наступающая после операции с более длинной задержкой, такой как умножение с плавающей запятой, может записать свой результат в регистр до завершения операции с более длинной задержкой. Если прерывание или исключение возникли до завершения операции с более длительным временем ожидания, состояние программы будет несовместимым.)
Архитектура потока данных не выполняет программы последовательно, но масштабирование аппаратного обеспечения обработки зависимостей проблематично (даже современные высокопроизводительные процессоры с ошибками имеют окна выполнения, из которых запланированные операции-кандидаты менее 100 операций) и обеспечивают корректность (особенно для программное обеспечение, где формальные методы встречаются реже) также сложно. Чтобы получить представление о дизайне, каждая операция обрабатывается как отдельный поток, который может начать выполнение, как только доступны исходные операнды, и может зафиксировать свой результат, как только операция завершится (что позволяет операциям ожидать только этого результата, чтобы начать выполнение. ). На уровне машинного языка это можно рассматривать как окончательный многопоточный код спагетти.
Процессоры, использующие неупорядоченное выполнение, похожи на действующие архитектуры потоков данных, но с ограниченными окнами выполнения и гарантированной видимостью результатов в одном и том же потоке выполнения. (Более слабые модели согласованности памяти позволят результатам стать видимыми для других процессоров в порядке, не являющемся строго последовательным.)