Введение

Тип компьютерного процессора в архитектуре компьютера, транспортная архитектура (TTA) - это тип процессора, в котором программы непосредственно управляют внутренними транспортными шинами процессора. Вычисления происходят как побочный эффект передачи данных: запись данных в триггерный порт функциональной единицы запускает функциональную единицу для начала вычислений. Это похоже на то, что происходит в систолическом массиве. Благодаря своей модульной структуре, TTA является идеальным шаблоном процессора для процессоров набора инструкций (ASIP) с настраиваемым маршрутом передачи данных, но без не гибкости и стоимости проектирования аппаратных ускорителей с фиксированной функцией. Как правило, транспортный процессор имеет несколько транспортных шинок и несколько функциональных единиц, подключенных к шинам, что обеспечивает возможности для параллелизма уровня инструкций. Паралелизм статически определяется программистом. В этом отношении (и, очевидно, из-за большой ширины слова инструкции) архитектура TTA напоминает архитектуру очень длинного слова инструкции (VLIW). Инструкционное слово TTA состоит из нескольких слотов, по одному слоту на одну шину, и каждый слот определяет передачу данных, которая происходит на соответствующей шине. Плотнозернистый контроль позволяет некоторые оптимизации, которые не возможны в обычном процессоре. Например, программное обеспечение может передавать данные непосредственно между функциональными единицами без использования регистров. Транспортный триггер раскрывает некоторые микроархитектурные детали, которые обычно скрыты от программистов. Это значительно упрощает логику управления процессором, потому что многие решения, обычно принимаемые во время выполнения, фиксируются во время компиляции. Однако это также означает, что двоичный файл, скомпилированный для одного процессора TTA, не будет работать на другом без перекомпилирования, если между ними есть даже небольшая разница в архитектуре. Проблема бинарной несовместимости, в дополнение к сложности реализации полной переключения контекста, делает TTA более подходящими для встроенных систем, чем для вычислений общего назначения. Из всех архитектур компьютеров с одним набором инструкций архитектура TTA является одной из немногих, на основе которых были построены процессоры, и единственной, на основе которой продаются процессоры.

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

TTA можно рассматривать как архитектуры VLIW "обнаруженного пути данных". В то время как VLIW программируется с использованием операций, TTA разделяет выполнение операции на несколько операций перемещения. Модель низкого уровня программирования обеспечивает несколько преимуществ по сравнению со стандартной VLIW. Например, архитектура TTA может обеспечить больше параллелизма с более простыми регистрами, чем с VLIW. Поскольку программист контролирует время передачи операнда и результатов, сложность (количество входных и выходных портов) файла реестра (RF) не должна быть масштабирована в соответствии с худшим сценарием выхода/завершения множественных параллельных инструкций. Важная уникальная оптимизация программного обеспечения, обеспечиваемая транспортным программированием, называется обходом программного обеспечения. В случае обхода программного обеспечения программист обходит файл реестра, перемещая данные непосредственно в порты операнда следующего функционального блока. Когда эта оптимизация применяется агрессивно, первоначальный ход, который переносит результат в файл реестра, может быть полностью устранен, тем самым уменьшая давление порта файла реестра и освобождая регистр общего назначения для других временных переменных. Уменьшение давления в регистре, помимо упрощения требуемой сложности радиочастотного оборудования, может привести к значительной экономии энергии процессора, что является важным преимуществом, особенно в мобильных встроенных системах.

Структура

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

Функциональная единица

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

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

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

Транспортные автобусы и розетки

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

Условное исполнение

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

Филиалы

Все процессоры, включая процессоры TTA, включают в себя инструкции по управлению потоком, которые изменяют счетчик программы, которые используются для реализации подпрограмм, если нет, то для цикла и т. д. Язык сборки для процессоров TTA обычно включает в себя инструкции по потоку управления, такие как безусловные ветви (JUMP), условные относительные ветви (BNZ), вызов подпрограммы (CALL), условный возврат (RETNZ) и т. Д. которые выглядят так же, как соответствующие инструкции на языке сборки для других процессоров. Как и все другие операции на машине TTA, эти инструкции реализуются как "перемещаемые" инструкции для специального функционального блока. Реализации TTA, которые поддерживают условное выполнение, такие как sTTAck и первый прототип MOVE, могут реализовать большинство этих инструкций по потоку управления в качестве условного перехода к счетчику программ. Реализации TTA, которые поддерживают только безусловные передачи данных, такие как Maxim Integrated MAXQ, от Maxim Integrated, единственный коммерчески доступный микроконтроллер, построенный на архитектуре с транспортом, является OISC или "один комплект инструкций". Он предлагает одну гибкую инструкцию MOVE, которая затем может функционировать как различные виртуальные инструкции, перемещая значения непосредственно в счетчик программы. В рамках проекта "move" было разработано и изготовлено несколько экспериментальных микропроцессоров TTA. OpenASIP - это инструментарий с набором инструкций с открытым исходным кодом, использующий TTA в качестве шаблона процессора. Архитектура Amiga Copper имеет все основные характеристики транспортной архитектуры. Процессор Able, разработанный New England Digital. Компьютер на базе "Свет-провода". Доктор Добб опубликовал One Der, 32-битный TTA в Verilog с соответствующим кросс-ассемблером и компилятором Forth. Mali (200/400) вертикальный процессор, использует 128 битное командное слово с однозначной точностью плавающей точке скалярного TTA.