Архитектура потока данных - Dataflow architecture

Архитектура потока данных это компьютерная архитектура что прямо контрастирует с традиционным фон Неймана архитектура или же архитектура потока управления. Архитектуры потоков данных не имеют счетчик команд (концептуально): выполнимость и выполнение инструкций определяется исключительно на основе наличия входных аргументов инструкций,[1] так что порядок выполнения инструкций непредсказуем, т.е. поведение недетерминировано.

Хотя ни одно коммерчески успешное компьютерное оборудование общего назначения не использовало архитектуру потока данных, она была успешно реализована в специализированном оборудовании, таком как цифровая обработка сигналов, сетевая маршрутизация, обработка графики, телеметрия, а в последнее время и в хранилищах данных.[нужна цитата ] Это также очень актуально во многих архитектурах программного обеспечения сегодня, включая база данных конструкции двигателей и параллельные вычисления рамки.[нужна цитата ]

Архитектура синхронного потока данных настраивается в соответствии с рабочей нагрузкой, представленной приложениями для передачи данных в реальном времени, такими как пересылка пакетов со скоростью передачи данных. Детерминированные по своей природе архитектуры потоков данных позволяют программистам управлять сложными задачами, такими как балансировка нагрузки процессора, синхронизация и доступ к общим ресурсам.[2]

Между тем возникает противоречие терминологии, поскольку термин поток данных используется для подобласти параллельного программирования: для программирование потока данных.

История

Аппаратные архитектуры для потока данных были главной темой в компьютерная архитектура исследования 1970-х и начала 1980-х годов. Джек Деннис из Массачусетский технологический институт была пионером в области архитектур статических потоков данных, а Manchester Dataflow Machine[3] и архитектура MIT Tagged Token были главными проектами в динамическом потоке данных.

Однако исследование так и не помогло преодолеть проблемы, связанные с:

  • Эффективная передача токенов данных в массивно-параллельной системе.
  • Эффективная отправка токенов инструкций в массивно-параллельной системе.
  • Строительство САМ достаточно большой, чтобы вместить все зависимости реальной программы.

Инструкции и их зависимости данных оказались слишком мелкими, чтобы их можно было эффективно распределить в большой сети. То есть время прохождения инструкций и помеченных результатов через большую сеть соединений было больше, чем время, необходимое для фактического выполнения вычислений.

Тем не менее, внеочередное исполнение (OOE) стала доминирующей компьютерной парадигмой с 1990-х годов. Это форма ограниченного потока данных. Эта парадигма ввела идею окно исполнения. В окно исполнения следует последовательному порядку архитектуры фон Неймана, однако внутри окна инструкции могут выполняться в порядке зависимости данных. Это выполняется в процессорах, которые динамически маркируют зависимости данных кода в окне выполнения. Логическая сложность динамического отслеживания зависимостей данных ограничивает OOE Процессоры к небольшому количеству исполнительных блоков (2-6) и ограничивает размеры окна выполнения диапазоном от 32 до 200 инструкций, что намного меньше, чем предусмотрено для машин с полным потоком данных.

Темы об архитектуре потока данных

Машины статического и динамического потока данных

Проекты, в которых используются обычные адреса памяти в качестве тегов зависимости данных, называются машинами статического потока данных. Эти машины не позволяли выполнять несколько экземпляров одних и тех же подпрограмм одновременно, потому что простые теги не могли различать их.

Дизайн, использующий память с адресацией по содержимому (CAM) называются машинами с динамическим потоком данных. Они используют теги в памяти для облегчения параллелизма.

Компилятор

Обычно в архитектуре потока управления компиляторы анализировать программу исходный код для зависимостей данных между инструкциями, чтобы лучше организовать последовательности инструкций в двоичных выходных файлах. Инструкции организованы последовательно, но сама информация о зависимостях не записывается в двоичные файлы. Двоичные файлы, скомпилированные для машины потока данных, содержат эту информацию о зависимостях.

Компилятор потока данных записывает эти зависимости, создавая уникальные теги для каждой зависимости вместо использования имен переменных. Предоставляя каждой зависимости уникальный тег, он позволяет выполнять независимые сегменты кода в двоичном файле. вышел из строя и параллельно. Компилятор обнаруживает циклы, операторы прерывания и различный синтаксис управления программированием для потока данных.

Программ

Программы загружаются в CAM компьютера с динамическим потоком данных. Когда все помеченные операнды инструкции становятся доступными (то есть вывод из предыдущих инструкций и / или пользовательский ввод), инструкция помечается как готовая к выполнению с помощью исполнительная единица.

Это известно как активация или же стрельба Инструкция. Как только инструкция завершается исполнительным блоком, его выходные данные отправляются (с его тегом) в CAM. Любые инструкции, которые зависят от этого конкретного элемента данных (идентифицируемого значением его тега), затем помечаются как готовые к выполнению. Таким образом, последующие инструкции выполняются в надлежащем порядке, избегая условия гонки. Этот порядок может отличаться от последовательного порядка, предусмотренного человеком-программистом, от запрограммированного порядка.

инструкции

Команда вместе с необходимыми операндами данных передается в исполнительный блок в виде пакета, также называемого токен инструкции. Точно так же выходные данные передаются обратно в CAM как токен данных. Пакетирование инструкций и результатов позволяет параллельно выполнять готовые инструкции в большом масштабе.

Сети потока данных доставляют токены инструкций исполнительным блокам и возвращают токены данных в CAM. В отличие от обычного фон Неймана архитектура, токены данных не хранятся в памяти постоянно, а представляют собой временные сообщения, которые существуют только при передаче в хранилище инструкций.

Смотрите также

Рекомендации

  1. ^ Вин, Артур Х. (декабрь 1986 г.). «Архитектура машины потока данных». Опросы ACM Computing. 18 (4): 365–396. Дои:10.1145/27633.28055. Получено 5 марта 2019.
  2. ^ «Семейство NPU и программируемых коммутаторов Ethernet HX300 для рынка оптоволоконного доступа», EN-Genius, 18 июня 2008 г..
  3. ^ Manchester Dataflow Research Project, Research Reports: Abstracts, сентябрь 1997 г.