Transport triggered architecture (Transport triggered architecture)

Перейти к навигации Перейти к поиску

Transport triggered architecture (TTA) — вариант архитектуры микропроцессоров, в которой программы непосредственно управляют внутренними соединениями (шинами) между блоками процессора (например, АЛУ, Регистровый файл). Вычисления являются побочным эффектом передачи данных между блоками: запись данных на входной порт (triggering port) функционального устройства приводит к началу их обработки данным устройством. Благодаря модульной структуре, TTA-архитектура подходит для проектирования проблемно-ориентированных процессоров (ASIP), при этом TTA-процессоры получаются универсальнее и дешевле чем аппаратные ускорители для фиксированных функций.

Обычно TTA-процессор имеет несколько транспортных шин и множество функциональных устройств (ФУ), подключенных к этим шинам. Обилие ФУ позволяет достичь параллелизма на уровне инструкций. Параллелизм статически определяется программистом. В этом отношении, а также из-за большой длины машинной инструкции, TTA-архитектуры напоминают архитектуры very long instruction word (VLIW) . Инструкция для TTA состоит из нескольких слотов, по слоту на каждую шину. Каждый слот определяет, как данные будут передаваться по данной шине. Столь полный контроль позволяет производить некоторые оптимизации, невозможные для классических архитектур. Например, возможна явная пересылка данных между разными ФУ без сохранения промежуточных данных в регистровом файле.



Процессоры с архитектурами класса TTA были доступны в продаже.

Преимущества по сравнению с VLIW

[править | править код]

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


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

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

Функциональное устройство

[править | править код]

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

В каждом ФУ может быть реализован независимый вычислительный конвейер.

Доступ к памяти и взаимодействие с внешними устройствами обрабатывается специальными ФУ. ФУ для доступа к памяти часто называют load/store unit.

Управляющее устройство

[править | править код]

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

Регистровые файлы

[править | править код]

Регистровые файлы (РФ) содержат массивы регистров общего назначения, в которых хранятся переменные программы. Подобно ФУ, РФ имеют входные и выходные порты. Количество входных и выходных портов (количество одновременно читаемых регистров из массива) может быть различным для разных РФ.

Шины и сокеты

[править | править код]

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


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

Программирование

[править | править код]

Пример операции сложения для гипотетического ТТА-процессора:

r1 -> ALU.operand1
r2 -> ALU.add.trigger
ALU.result -> r3

Задержки операций

[править | править код]

Один из основных принципов ТТА — упростить аппаратное обеспечение, усложнив программное. Это создаёт некоторые опасности для программиста. Одна из них - это видимая задержка при работе ФУ. Программист должен самостоятельно заботиться о том, чтобы результат вычислений не был прочитан ни слишком рано, ни слишком поздно. Нет какого-либо аппаратного обнаружения для остановки процессора, пока результат ещё не вычислен.


Из-за избытка видимого программистом контекста сохранение такового может быть очень сложным в реализации на TTA архитектуре. Поэтому прерывания обычно не поддерживаются TTA процессорами, но их задачи делегируются внешним оборудованием (например, обработчиком ввода/вывода), или необходимость их использования убирается путём использования альтернативных механизмов синхронизации, таких как поллинг.

Реализации

[править | править код]

Примечания

[править | править код]