Архитектура потока данных - это компьютерная архитектура, которая прямо контрастирует с традиционной архитектурой фон Неймана или архитектурой потока управления . Архитектура потоков данных не имеет программного счетчика по идее: исполняемость и выполнение инструкций определяется исключительно на основе доступности входных аргументов инструкций [1], так что порядок выполнения инструкций непредсказуем, т. Е. Поведение недетерминировано .
Хотя ни одно коммерчески успешное компьютерное оборудование общего назначения не использовало архитектуру потока данных, она была успешно реализована в специализированном оборудовании, таком как обработка цифровых сигналов , сетевая маршрутизация , обработка графики , телеметрия , а в последнее время - в хранилищах данных и искусственном интеллекте . [2] [3] Это также очень актуально во многих архитектурах программного обеспечения сегодня, включая конструкции ядра СУБД и структуры параллельных вычислений . [ необходима цитата ]
Архитектуры синхронных потоков данных настраиваются в соответствии с рабочей нагрузкой, представленной приложениями для передачи данных в реальном времени, такими как пересылка пакетов со скоростью проводной сети. Детерминированные по своей природе архитектуры потоков данных позволяют программистам управлять сложными задачами, такими как балансировка нагрузки процессора, синхронизация и доступ к общим ресурсам. [4]
Между тем, существует конфликт терминологии, поскольку термин поток данных используется для подобласти параллельного программирования: для программирования потоков данных .
История
Аппаратные архитектуры для потоков данных были главной темой исследований компьютерной архитектуры в 1970-х и начале 1980-х годов. Джек Деннис из Массачусетского технологического института был пионером в области архитектур статических потоков данных, в то время как Manchester Dataflow Machine [5] и архитектура маркеров MIT были основными проектами в области динамических потоков данных.
Однако исследование так и не помогло преодолеть проблемы, связанные с:
- Эффективная трансляция токенов данных в массивно-параллельной системе.
- Эффективная отправка токенов инструкций в массивно-параллельной системе.
- Создание памяти с адресацией по содержимому (CAM), достаточно большой, чтобы вместить все зависимости реальной программы.
Инструкции и их зависимости данных оказались слишком мелкими, чтобы их можно было эффективно распределить в большой сети. То есть время прохождения инструкций и помеченных результатов через большую сеть соединений было больше, чем время на выполнение многих вычислений.
Тем не менее, исполнение вне очереди (OOE) стало доминирующей вычислительной парадигмой с 1990-х годов. Это форма ограниченного потока данных. Эта парадигма ввела идею окна выполнения . Окно выполнения следует последовательному порядку архитектуры фон Неймана, однако внутри окна инструкции могут выполняться в порядке зависимости данных. Это выполняется в процессорах, которые динамически маркируют зависимости данных кода в окне выполнения. Логическая сложность динамического отслеживания зависимостей данных ограничивает ЦП OOE небольшим количеством исполнительных блоков (2-6) и ограничивает размеры окна выполнения диапазоном от 32 до 200 инструкций, что намного меньше, чем предусмотрено для машин с полным потоком данных. .
Темы об архитектуре потока данных
Машины статического и динамического потока данных
Проекты, использующие обычные адреса памяти в качестве тегов зависимости данных, называются машинами статического потока данных. Эти машины не позволяли выполнять несколько экземпляров одних и тех же подпрограмм одновременно, потому что простые теги не могли различать их.
Проекты, в которых используется память с адресацией по содержимому (CAM), называются машинами с динамическим потоком данных. Они используют теги в памяти для облегчения параллелизма.
Компилятор
Обычно в архитектуре потока управления компиляторы анализируют исходный код программы на предмет зависимостей данных между инструкциями, чтобы лучше организовать последовательности инструкций в двоичных выходных файлах. Инструкции организованы последовательно, но сама информация о зависимостях не записывается в двоичные файлы. Двоичные файлы, скомпилированные для машины с потоком данных, содержат эту информацию о зависимостях.
Компилятор потока данных записывает эти зависимости, создавая уникальные теги для каждой зависимости вместо использования имен переменных. Предоставляя каждой зависимости уникальный тег, он позволяет независимым сегментам кода в двоичном файле выполняться не по порядку и параллельно. Компилятор обнаруживает циклы, операторы прерывания и различный синтаксис управления программированием для потока данных.
Программ
Программы загружаются в CAM компьютера с динамическим потоком данных. Когда все помеченные операнды инструкции становятся доступными (то есть вывод из предыдущих инструкций и / или пользовательский ввод), инструкция помечается как готовая к выполнению исполнительным блоком .
Это называется активацией или запуском инструкции. Как только инструкция завершается исполнительным блоком, его выходные данные отправляются (с его тегом) в CAM. Любые инструкции, которые зависят от этого конкретного элемента данных (идентифицированного по его значению тега), затем помечаются как готовые к выполнению. Таким образом, последующие инструкции выполняются в надлежащем порядке, избегая состояний гонки . Этот порядок может отличаться от последовательного порядка, предусмотренного человеком-программистом, запрограммированного порядка.
инструкции
Команда вместе с ее необходимыми операндами данных передается в исполнительный блок в виде пакета, также называемого токеном инструкции . Точно так же выходные данные передаются обратно в CAM как токен данных . Пакетирование инструкций и результатов позволяет параллельно выполнять готовые инструкции в большом масштабе.
Сети потока данных доставляют токены инструкций исполнительным блокам и возвращают токены данных в CAM. В отличие от традиционной архитектуры фон Неймана , токены данных не хранятся в памяти постоянно, а представляют собой временные сообщения, которые существуют только при передаче в хранилище инструкций.
Смотрите также
- Поток данных
- Параллельные вычисления
- СИЗАЛ
- BMDFM : двоичная модульная машина потока данных
- Систолический массив
- Транспортная триггерная архитектура
- Сеть на микросхеме (NoC)
- Система на кристалле (SoC)
- Вычисления в памяти
Рекомендации
- ^ Вин, Артур Х. (декабрь 1986). «Архитектура машины потока данных» . ACM Computing Surveys . 18 (4): 365–396. DOI : 10.1145 / 27633.28055 . Проверено 5 марта 2019 .
- ^ «Глубокое зрение» . Глубокое видение . 2021 . Проверено 19 апреля 2021 .
- ^ «Хайло» . Хайло . Проверено 19 апреля 2021 .
- ^ «Семейство NPU и программируемых коммутаторов Ethernet HX300 для рынка оптоволоконного доступа» . EN-Genius (Пресс-релиз). 18 июня 2008. Архивировано из оригинала на 2011-07-22.
- ^ Манчестер исследовательский проект Dataflow, научных докладов: Тезисы докладов, сентябрь 1997