Потоковое программирование

Опубликовано в Архитектуры процессоров (истоки)

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

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

«Все операции выполняются только при наличии всех операндов (данных), необходимых для их выполнения».



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

Потоковое программирование

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

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

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



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

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

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

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