stringtranslate.com

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

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

Хотя ни одно коммерчески успешное компьютерное оборудование общего назначения не использовало архитектуру потока данных, она была успешно реализована в специализированном оборудовании, таком как цифровая обработка сигналов , сетевая маршрутизация , обработка графики , телеметрия , а в последнее время и в хранилищах данных и искусственном интеллекте (например , в системах хранения данных и искусственного интеллекта) . : полиморфный поток данных [2] Convolution Engine, [3] структурно-управляемый, [4] планирование потока данных [5] ). Сегодня это также очень актуально во многих архитектурах программного обеспечения, включая конструкции механизмов баз данных и структуры параллельных вычислений . [ нужна цитата ]

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

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

История

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

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

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

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

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

Статические и динамические машины потоков данных

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

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

Компилятор

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

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

Программы

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

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

инструкции

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

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

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

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

  1. ^ Вин, Артур Х. (декабрь 1986 г.). «Архитектура машины потока данных». Обзоры вычислительной техники ACM . 18 (4): 365–396. дои : 10.1145/27633.28055. S2CID  5467025 . Проверено 5 марта 2019 г.
  2. Максфилд, Макс (24 декабря 2020 г.). «Передайте привет полиморфной архитектуре потока данных Deep Vision». Электронный инженерный журнал . Техфокус медиа.
  3. ^ «Кинара (ранее Deep Vision)» . Кинара . 2022 . Проверено 11 декабря 2022 г.
  4. ^ "Хайло". Привет . Проверено 11 декабря 2022 г.
  5. ^ Ли, Шон (29 августа 2022 г.). Глубокое погружение в архитектуру Cerebras: первый взгляд на совместную разработку аппаратного и программного обеспечения для глубокого обучения. Церебрас (Отчет).
  6. ^ «Семейство сетевых процессоров HX300 и программируемых коммутаторов Ethernet на рынке оптоволоконного доступа» . RU-Genius (Пресс-релиз). 18 июня 2008 г. Архивировано из оригинала 22 июля 2011 г.
  7. ^ Манчестерский исследовательский проект потока данных, отчеты об исследованиях: тезисы, сентябрь 1997 г.