Архитектура потока данных
Эта статья нуждается в дополнительных ссылок для проверки . ( август 2012 г. ) |
Архитектура потока данных — это потоках данных основанная на компьютерная архитектура, , которая прямо контрастирует с традиционной архитектурой фон Неймана или потока управления архитектурой . В архитектурах потоков данных нет программного счетчика : исполняемость и выполнение инструкций определяются исключительно на основе наличия входных аргументов инструкций. [1] поэтому порядок выполнения инструкций может быть трудно предсказать.
Хотя ни одно коммерчески успешное компьютерное оборудование общего назначения не использовало архитектуру потока данных, она была успешно реализована в специализированном оборудовании, таком как цифровая обработка сигналов , сетевая маршрутизация , обработка графики , телеметрия , а в последнее время и в хранилищах данных и , в системах хранения данных и искусственного интеллекта искусственном интеллекте (например ). : полиморфный поток данных [2] Двигатель свертки, [3] управляемый структурой, [4] потока данных планирование [5] ). Сегодня это также очень актуально во многих архитектурах программного обеспечения, включая баз данных конструкции механизмов параллельных вычислений . и структуры [ нужна цитата ]
Архитектуры синхронных потоков данных настраиваются в соответствии с рабочей нагрузкой, создаваемой приложениями передачи данных в реальном времени, такими как пересылка пакетов со скоростью проводной сети. Архитектуры потоков данных, которые по своей природе являются детерминированными, позволяют программистам управлять сложными задачами, такими как балансировка нагрузки процессора, синхронизация и доступ к общим ресурсам. [6]
Между тем, возникает противоречие в терминологии, поскольку термин «поток данных» используется для обозначения подобласти параллельного программирования: для программирования потоков данных .
История [ править ]
Архитектура аппаратного обеспечения для потоков данных была основной темой исследований компьютерной архитектуры в 1970-х и начале 1980-х годов. Джек Деннис из Массачусетского технологического института был пионером в области статических архитектур потоков данных, а Manchester Dataflow Machine [7] и архитектура MIT Tagged Token были крупными проектами в области динамического потока данных.
Однако исследование так и не решило проблем, связанных с:
- Эффективная трансляция токенов данных в массово-параллельной системе.
- Эффективная диспетчеризация токенов инструкций в системе с массовым параллелизмом.
- Создание памяти, адресуемой по содержимому (CAM), достаточно большой для хранения всех зависимостей реальной программы.
Инструкции и зависимости от их данных оказались слишком детализированными для эффективного распространения в большой сети. То есть время прохождения инструкций и помеченных результатов через большую сеть соединений было больше, чем время выполнения множества вычислений.
Тем не менее, выполнение вне очереди (OOE) стало доминирующей парадигмой вычислений с 1990-х годов. Это форма ограниченного потока данных. Эта парадигма представила идею окна выполнения . Окно выполнения соответствует последовательному порядку архитектуры фон Неймана, однако внутри окна инструкции могут выполняться в порядке зависимости данных. Это достигается в процессорах, которые динамически помечают зависимости данных кода в окне выполнения. Логическая сложность динамического отслеживания зависимостей данных ограничивает OOE процессоры небольшим количеством исполнительных блоков (2–6) и ограничивает размеры окна выполнения диапазоном от 32 до 200 инструкций, что намного меньше, чем предполагалось для машин с полным потоком данных. . [ нужна цитата ]
Темы об архитектуре потока данных [ править ]
Статические и динамические данных потоков машины
Проекты, которые используют обычные адреса памяти в качестве тегов зависимостей данных, называются машинами статического потока данных. Эти машины не позволяли одновременно выполнять несколько экземпляров одних и тех же процедур, поскольку простые теги не могли различать их.
Проекты, в которых используется память с адресацией по содержимому (CAM), называются машинами с динамическими потоками данных. Они используют теги в памяти для облегчения параллелизма.
Компилятор [ править ]
Обычно в архитектуре потока управления компиляторы программы анализируют исходный код на предмет зависимостей данных между инструкциями, чтобы лучше организовать последовательность инструкций в двоичных выходных файлах. Инструкции организованы последовательно, но сама информация о зависимостях не записывается в двоичные файлы. Двоичные файлы, скомпилированные для машины потока данных, содержат эту информацию о зависимостях.
Компилятор потока данных записывает эти зависимости, создавая уникальные теги для каждой зависимости вместо использования имен переменных. Присвоив каждой зависимости уникальный тег, он позволяет независимым сегментам кода в двоичном файле выполняться не по порядку и параллельно. Компилятор обнаруживает циклы, операторы прерывания и различный синтаксис программного управления потоком данных.
Программы [ править ]
Программы загружаются в CAM компьютера с динамическим потоком данных. Когда все помеченные операнды инструкции становятся доступными (то есть выходные данные предыдущих инструкций и/или пользовательский ввод), инструкция помечается исполнительным модулем как готовая к выполнению .
Это известно как активация или запуск инструкции. Как только инструкция завершается исполнительным устройством, ее выходные данные отправляются (вместе с тегом) в CAM. Любые инструкции, которые зависят от этого конкретного элемента данных (идентифицированного значением его тега), затем помечаются как готовые к выполнению. Таким образом, последующие инструкции выполняются в правильном порядке, избегая состояний гонки . Этот порядок может отличаться от последовательного порядка, предусмотренного программистом-человеком, от запрограммированного порядка.
Инструкция [ править ]
Инструкция вместе с необходимыми операндами данных передается исполнительному устройству в виде пакета, также называемого маркером инструкции . Аналогично, выходные данные передаются обратно в CAM в виде токена данных . Пакетизация инструкций и результатов позволяет параллельно выполнять готовые инструкции в больших масштабах.
Сети потоков данных доставляют токены инструкций исполнительным устройствам и возвращают токены данных в CAM. В отличие от традиционной архитектуры фон Неймана , токены данных не хранятся в памяти постоянно, а представляют собой временные сообщения, которые существуют только при передаче в хранилище инструкций.
См. также [ править ]
- Параллельные вычисления
- СИЗАЛЬ
- Двоичная модульная машина потока данных (BMDFM)
- Систолический массив
- Архитектура, управляемая транспортом
- Сеть на чипе (NoC)
- Система на кристалле (SoC)
- Вычисления в памяти
Ссылки [ править ]
- ^ Вин, Артур Х. (декабрь 1986 г.). «Архитектура машины потока данных» . Обзоры вычислительной техники ACM . 18 (4): 365–396. дои : 10.1145/27633.28055 . S2CID 5467025 . Проверено 5 марта 2019 г.
- ^ Максфилд, Макс (24 декабря 2020 г.). «Передайте привет полиморфной архитектуре потока данных Deep Vision». Электронный инженерный журнал . Техфокус медиа.
- ^ «Кинара (ранее Deep Vision)» . Кинара . 2022 . Проверено 11 декабря 2022 г.
- ^ «Хайло» . Привет . Проверено 11 декабря 2022 г.
- ^ Ли, Шон (29 августа 2022 г.). Глубокое погружение в архитектуру Cerebras: первый взгляд на совместную разработку аппаратного и программного обеспечения для глубокого обучения . Церебрас (Отчет).
- ^ «Семейство сетевых процессоров и программируемых коммутаторов Ethernet HX300 на рынке оптоволоконного доступа» . RU-Genius (Пресс-релиз). 18 июня 2008 г. Архивировано из оригинала 22 июля 2011 г.
- ^ Манчестерский исследовательский проект потока данных, отчеты об исследованиях: тезисы, сентябрь 1997 г.