Введение
Тип компьютерного процессора в архитектуре компьютера, транспортная архитектура (TTA) - это тип процессора, в котором программы непосредственно управляют внутренними транспортными шинами процессора. Вычисления происходят как побочный эффект передачи данных: запись данных в триггерный порт функциональной единицы запускает функциональную единицу для начала вычислений. Это похоже на то, что происходит в систолическом массиве. Благодаря своей модульной структуре, TTA является идеальным шаблоном процессора для процессоров набора инструкций (ASIP) с настраиваемым маршрутом передачи данных, но без не гибкости и стоимости проектирования аппаратных ускорителей с фиксированной функцией. Как правило, транспортный процессор имеет несколько транспортных шинок и несколько функциональных единиц, подключенных к шинам, что обеспечивает возможности для параллелизма уровня инструкций. Паралелизм статически определяется программистом. В этом отношении (и, очевидно, из-за большой ширины слова инструкции) архитектура TTA напоминает архитектуру очень длинного слова инструкции (VLIW). Инструкционное слово TTA состоит из нескольких слотов, по одному слоту на одну шину, и каждый слот определяет передачу данных, которая происходит на соответствующей шине. Плотнозернистый контроль позволяет некоторые оптимизации, которые не возможны в обычном процессоре. Например, программное обеспечение может передавать данные непосредственно между функциональными единицами без использования регистров. Транспортный триггер раскрывает некоторые микроархитектурные детали, которые обычно скрыты от программистов. Это значительно упрощает логику управления процессором, потому что многие решения, обычно принимаемые во время выполнения, фиксируются во время компиляции. Однако это также означает, что двоичный файл, скомпилированный для одного процессора TTA, не будет работать на другом без перекомпилирования, если между ними есть даже небольшая разница в архитектуре. Проблема бинарной несовместимости, в дополнение к сложности реализации полной переключения контекста, делает TTA более подходящими для встроенных систем, чем для вычислений общего назначения. Из всех архитектур компьютеров с одним набором инструкций архитектура TTA является одной из немногих, на основе которых были построены процессоры, и единственной, на основе которой продаются процессоры.
In computer architecture, a transport triggered architecture (TTA) is a kind of processor design in which programs directly control the internal transport buses of a processor. Computation happens as a side effect of data transports: writing data into a triggering port of a functional unit triggers the functional unit to start a computation. This is similar to what happens in a systolic array. Due to its modular structure, TTA is an ideal processor template for application specific instruction set processors (ASIP) with customized datapath but without the inflexibility and design cost of fixed function hardware accelerators. Typically a transport triggered processor has multiple transport buses and multiple functional units connected to the buses, which provides opportunities for instruction level parallelism. The parallelism is statically defined by the programmer. In this respect (and obviously due to the large instruction word width), the TTA architecture resembles the very long instruction word (VLIW) architecture. A TTA instruction word is composed of multiple slots, one slot per bus, and each slot determines the data transport that takes place on the corresponding bus. The fine grained control allows some optimizations that are not possible in a conventional processor. For example, software can transfer data directly between functional units without using registers. Transport triggering exposes some microarchitectural details that are normally hidden from programmers. This greatly simplifies the control logic of a processor, because many decisions normally done at run time are fixed at compile time. However, it also means that a binary compiled for one TTA processor will not run on another one without recompilation if there is even a small difference in the architecture between the two. The binary incompatibility problem, in addition to the complexity of implementing a full context switch, makes TTAs more suitable for embedded systems than for general purpose computing. Of all the one instruction set computer architectures, the TTA architecture is one of the few that has had processors based on it built, and the only one that has processors based on it sold commercially.
Преимущества по сравнению с архитектурами VLIW
TTA можно рассматривать как архитектуры VLIW "обнаруженного пути данных". В то время как VLIW программируется с использованием операций, TTA разделяет выполнение операции на несколько операций перемещения. Модель низкого уровня программирования обеспечивает несколько преимуществ по сравнению со стандартной VLIW. Например, архитектура TTA может обеспечить больше параллелизма с более простыми регистрами, чем с VLIW. Поскольку программист контролирует время передачи операнда и результатов, сложность (количество входных и выходных портов) файла реестра (RF) не должна быть масштабирована в соответствии с худшим сценарием выхода/завершения множественных параллельных инструкций. Важная уникальная оптимизация программного обеспечения, обеспечиваемая транспортным программированием, называется обходом программного обеспечения. В случае обхода программного обеспечения программист обходит файл реестра, перемещая данные непосредственно в порты операнда следующего функционального блока. Когда эта оптимизация применяется агрессивно, первоначальный ход, который переносит результат в файл реестра, может быть полностью устранен, тем самым уменьшая давление порта файла реестра и освобождая регистр общего назначения для других временных переменных. Уменьшение давления в регистре, помимо упрощения требуемой сложности радиочастотного оборудования, может привести к значительной экономии энергии процессора, что является важным преимуществом, особенно в мобильных встроенных системах.
low level programming model enables several benefits in comparison to the standard VLIW. For example, a TTA architecture can provide more parallelism with simpler register files than with VLIW. As the programmer is in control of the timing of the operand and result data transports, the complexity (the number of input and output ports) of the register file (RF) need not be scaled according to the worst case issue/completion scenario of the multiple parallel instructions. An important unique software optimization enabled by the transport programming is called software bypassing. In case of software bypassing, the programmer bypasses the register file write back by moving data directly to the next functional unit's operand ports. When this optimization is applied aggressively, the original move that transports the result to the register file can be eliminated completely, thus reducing both the register file port pressure and freeing a general purpose register for other temporary variables. The reduced register pressure, in addition to simplifying the required complexity of the RF hardware, can lead to significant CPU energy savings, an important benefit especially in mobile embedded systems.
Структура
Процессоры 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.