Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

Структура [ править ]

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

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

Функциональный блок [ править ]

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

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

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

Блок управления [ править ]

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

Зарегистрируйте файлы [ редактировать ]

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

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

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

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

Условное исполнение [ править ]

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

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

Филиалы [ править ]

Все процессоры, включая процессоры TTA, включают инструкции потока управления, которые изменяют счетчик программ, которые используются для реализации подпрограмм , if-then-else , 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  ; "загрузить ALU": переместить значение в ALU операнд 1 добавить  r2  ; add: переместить значение, чтобы добавить триггер sta  r3  ; "store ALU": переместить значение из результата ALU

Задержка операции, видимая программистом [ править ]

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

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

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

Реализации [ править ]

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

См. Также [ править ]

  • Процессор набора команд для конкретного приложения (ASIP)
  • Очень длинное командное слово (VLIW)
  • Явно параллельное вычисление инструкций (EPIC)
  • Архитектура потока данных

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Проект MOVE: Автоматический синтез процессоров для конкретных приложений (доступен через обратную машину)
    • Преимущества архитектур, запускаемых транспортом
  • Архитектура микропроцессоров от VLIW до TTA
  • Обзорная статья BYTE