Транспортная триггерная архитектура - Transport triggered architecture

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

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

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

Из всех один компьютер с набором команд Архитектура TTA - одна из немногих, в которой построены процессоры на ее основе, и единственная, в которой процессоры на ее основе продаются на коммерческой основе.

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

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

Важная уникальная оптимизация программного обеспечения, обеспечиваемая транспортным программированием, называется программный обход. В случае программного обхода, программист обходит обратную запись файла регистров, перемещая данные непосредственно в порты операндов следующего функционального блока. Когда эта оптимизация применяется агрессивно, исходный ход, который переносит результат в регистровый файл, может быть полностью исключен, тем самым уменьшая давление на порт порта регистрового файла и освобождая регистр общего назначения для других временных переменных. Сокращенный регистрировать давление, помимо упрощения требуемой сложности ВЧ-оборудования, может привести к значительному Экономия энергии ЦП, важное преимущество, особенно в мобильных встроенных системах.[1][2]

Структура

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

Части архитектуры, запускаемой транспортом

Функциональный блок

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

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

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

Устройство управления

Устройство управления является частным случаем функциональных блоков, которые контролируют выполнение программ. Блок управления имеет доступ к памяти команд, чтобы получить инструкции, которые должны быть выполнены. Чтобы позволить исполняемым программам передавать выполнение (переход) в произвольную позицию в исполняемой программе, блок управления обеспечивает операции потока управления. Блок управления обычно имеет конвейер команд, состоящий из этапов выборки, декодирования и выполнения программных инструкций.

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

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

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

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

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

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

Некоторые реализации TTA поддерживают условное исполнение.

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

ветви

Все процессоры, включая процессоры TTA, включают поток управления инструкции, которые изменяют счетчик программы, которые используются для реализации подпрограммы, если-то-еще, for-loop ассемблер для процессоров TTA обычно включает инструкции потока управления, такие как безусловные переходы (JUMP), условные относительные переходы (BNZ), вызов подпрограммы (CALL), условный возврат (RETNZ) и т. д., которые выглядят так же, как соответствующие инструкции на языке ассемблера для других процессоров.

Как и все другие операции на машине TTA, эти инструкции реализованы как инструкции «перемещения» в специальный функциональный блок.

Реализации TTA, которые поддерживают условное выполнение, такие как sTTAck и первый прототип MOVE, могут реализовать большинство этих инструкций потока управления как условный переход к счетчику программы.[3][4]

Реализации TTA, которые поддерживают только безусловную транспортировку данных, такие как MAXQ, обычно имеют специальный функциональный блок, тесно связанный с программным счетчиком, который отвечает на множество адресов назначения. Каждый такой адрес, когда он используется в качестве пункта назначения "перемещения", по-разному влияет на счетчик программ - каждая инструкция «относительного перехода <условие>» имеет свой адрес назначения для каждого условия; и другие адреса назначения используются CALL, RETNZ и т. д.

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

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

добавить r3, r1, r2

В этом примере операции складываются значения регистров общего назначения r1 и r2, а результат сохраняется в регистре r3. Грубо говоря, выполнение инструкции в процессоре, вероятно, приводит к преобразованию инструкции в управляющие сигналы, которые управляют соединениями межсетевой сети и функциональными блоками. Сеть межсоединений используется для передачи текущих значений регистров r1 и r2 в функциональный блок, который может выполнять операцию добавления, часто называемую ALU, как в арифметико-логическом блоке. Наконец, управляющий сигнал выбирает и запускает операцию сложения в ALU, результат которой передается обратно в регистр r3.

Программы TTA не определяют операции, а только транспорты данных, необходимые для записи и чтения значений операндов. Сама операция запускается записью данных в запускающий операнд операции. Таким образом, операция выполняется как побочный эффект запуска переноса данных. Следовательно, для выполнения операции сложения в TTA требуются три определения транспорта данных, также называемые движется. Перемещение определяет конечные точки для передачи данных, происходящей в транспортной шине. Например, перемещение может указывать, что передача данных из функционального блока F, порт 1, в регистровый файл R, регистровый индекс 2, должна происходить по шине B1. В случае, если в целевом процессоре имеется несколько шин, каждую шину можно использовать параллельно в одном тактовом цикле. Таким образом, можно использовать параллелизм на уровне передачи данных путем планирования нескольких передач данных в одной инструкции.

Операция сложения может быть выполнена в процессоре TTA следующим образом:

r1 -> ALU.operand1r2 -> ALU.add.triggerALU.result -> r3

Второй ход, запись во второй операнд функционального блока, называемого ALU, запускает операцию сложения. Это делает результат сложения доступным в выходном порту 'result' после задержки выполнения 'add'.

Порты, связанные с ALU, могут действовать как аккумулятор, позволяя создавать инструкции макроса это абстрагироваться от лежащий в основе TTA:

lda r1    ; "load ALU": переместить значение в операнд ALU 1Добавить r2    ; add: переместить значение, чтобы добавить триггерштат r3    ; "store ALU": переместить значение из результата ALU

Видимая программистом задержка работы

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

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

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

Реализации

  • MAXQ[5][6] от Dallas Semiconductor, единственный коммерчески доступный микроконтроллер, построенный на архитектуре, запускаемой транспортом, - это OISC или "один компьютер с набором команд ". Он предлагает не замужем хотя гибкая инструкция MOVE, которая затем может функционировать как различные виртуальные инструкции, перемещая значения непосредственно в счетчик команд.
  • В "переместить проект" разработал и изготовил несколько экспериментальных микропроцессоров ТТА.
  • OpenASIP представляет собой набор инструментов с открытым исходным кодом для конкретного приложения, использующий TTA в качестве шаблона процессора.
  • Архитектура Амига Медь имеет все основные функции архитектуры, запускаемой транспортом.
  • В Способный процессор, разработанный New England Digital.
  • В WireWorld на основании компьютер.
  • Доктора Добба опубликовал One-Der, 32-битный TTA в Verilog с соответствующим кросс-ассемблером и компилятором Forth.[7][8]
  • Мали (200/400) вершинный процессор, использует 128-битное командное слово одинарной точности с плавающей запятой скаляр TTA[нужна цитата ].

Смотрите также

использованная литература

  1. ^ В. Гузма, П. Яэскеляйнен, П. Келломаки и Й. Такала, «Влияние обхода программного обеспечения на параллелизм на уровне инструкций и трафик регистров файлов»
  2. ^ Йохан Янссен.«Стратегии компиляции для архитектур, запускаемых транспортом».2001.стр. 168.
  3. ^ Хенк Корпорал.«Архитектуры с запуском транспорта, проверенные для приложений общего назначения».п. 6.
  4. ^ Алексей Васильевич Чапыженко."sTTAck: Архитектура, запускаемая транспортом стека".
  5. ^ «Руководство пользователя MAXQ Family» В разделе «1.1 Набор команд» говорится: «Основанная на регистрах архитектура, запускаемая транспортом, позволяет кодировать все инструкции как простые операции передачи. Все инструкции сводятся либо к записи немедленного значения в регистр назначения или в ячейку памяти, либо к перемещению данных между регистрами. и / или места в памяти ".
  6. ^ Введение в архитектуру MAXQ - Включает схему трансфера
  7. ^ Статья доктора Добба с 32-битным процессором FPGA в Verilog
  8. ^ Веб-сайт с более подробной информацией о процессоре доктора Добба В архиве 2013-02-18 в Archive.today

внешние ссылки