Відкрити головне меню

Transport triggered architecture (TTA) — варіант архітектури мікропроцесорів, в якій програми безпосередньо керують внутрішніми з'єднаннями (шинами) між блоками процесора (наприклад, АЛП, регістровий файл). Обчислення є побічним ефектом передачі даних між блоками: запис даних на вхідний порт (triggering port) функціонального блоку приводить до початку їх обробки цим блоком. Це подібно тому, що відбувається у систолічному масиві. Завдяки модульній структурі, TTA-архітектура ідеально підходить для проектування проблемно-орієнтованих процесорів (ASIP), при цьому TTA-процесори виходять більш універсальними і дешевшими ніж апаратні прискорювачі для фіксованих функцій.

Зазвичай TTA-процесор має кілька транспортних шин і багато функціональних пристроїв (ФП), підключених до цих шин. Велика кількість ФП дозволяє досягти паралелізму на рівні команд. Паралелізм статично визначається програмістом. У цьому відношенні, а також через велику довжину машинної інструкції, TTA-архітектури подібні до Very Long Instruction Word (VLIW) архітектури. Інструкція для TTA складається з декількох слотів, по слоту на кожну шину. Кожен слот визначає, як дані будуть передаватися по даній шині. Настільки повний контроль дозволяє виробляти деякі оптимізації, неможливі для класичних архітектур. Наприклад, можливе явне пересилання даних між різними ФП без збереження проміжних даних в регістровому файлі.

Процесори з архітектурою класу TTA були доступні у продажу.[які?][джерело?]

Зміст

СтруктураРедагувати

Процесори з архітектурою класу TTA складаються з декількох незалежних функціональних пристроїв і реєстрових файлів, які з'єднані транспортними шинами і сокетами.

Функціональний пристрійРедагувати

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

У кожному ФП може бути реалізований незалежний конвеєр команд.

Доступ до пам'яті та взаємодія з зовнішніми пристроями обробляється спеціальними ФП. ФП для доступу до пам'яті часто називають load/store unit.

Керувальний пристрійРедагувати

Керувальний пристрій контролює процес виконання програм. У нього є доступ до пам'яті інструкцій для отримання наступних машинних команд. Також реалізує команди переходу (jump). Зазвичай керувальний пристрій конвеєризовано і виділені стадії: завантаження, декодування, виконання інструкцій.

Регістрові файлиРедагувати

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

ПрограмуванняРедагувати

У більш традиційних архітектурах процесорів, процесор зазвичай програмується шляхом визначення виконаних операцій і їх операндів. Наприклад, інструкція додавання в архітектурі RISC може виглядати наступним чином.

add r3, r1, r2

У цьому прикладі операція додає значення загального призначення регістрів r1 і r2 і зберігає результат в регістрі r3. Виконання команди в процесорі, ймовірно, призводить до перекладу інструкції на керуючі сигнали, які управляють мережевими з'єднаннями і взаємозв'язком функціональних блоків. Мережа з'єднання використовується для передачі поточних значень регістрів r1 і r2 до функції блоку, який здатен виконувати операції додавання, які часто називають ALU, як в арифметико-логічному Unit. Нарешті, сигнал управління вибирає і запускає операцію складання в АЛП, з яких результат передається назад в регістр r3.

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

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

Другий крок — операція запису на другий операнд функції блоку називається ALU, запускає операцію складання. Це робить результат складання наявного в результаті вихідного порту після виконання «додавання».

Порти, пов'язані з АЛП можуть виступати як акумулятор, що дозволяє створювати макро-інструкції, абстрагуватися від базового активу TTA:

lda r1    ; "load ALU": move value to ALU operand 1
add r2    ; add: move value to add trigger
sta r3    ; "store ALU": move value from ALU result

Прихований станРедагувати

Провідна філософія TTA полягає в складності переходу від апаратних засобів до програмного забезпечення. У зв'язку з цим, деякі додаткові небезпеки вводяться для програміста. Один з них є відкладений стан, програміст бачить операції прихованого стану функціональних блоків. Програміст повністю відповідає за терміни. Програміст повинен планувати інструкції таким чином, що результат не зчитувався дуже рано і не занадто пізно. В TTA немає функції виявлення апаратних засобів, щоб заблокувати процесор в разі, коли результат зчитується занадто рано. Розглянемо, наприклад, архітектуру, яка має операцію додати з затримкою 1, і операції MUL з затримкою 3. При спрацьовуванні операції додати, можна прочитати результат в наступній інструкції (наступного тактового циклу), але в разі мул, доводиться чекати, поки дві команди до того, як результат може бути прочитаний. Результат буде готовий до 3-й інструкцію після інструкції запуску.

Результат повинен бути прочитаний досить рано, щоб переконатися, що такий результат операції НЕ переписують ще непрочитані привести до вихідного порту.

Через велику кількість видимого контексту процесора, який він фактично включає в себе, програміст повинен зареєструвати вміст файлу, а також функціональний блок вмісту регістрів трубопроводу і / або функціонального блоку, порти введення і виведення, зберігає необхідний для зовнішньої підтримки переривань. Тому переривання зазвичай не підтримуються процесорами TTA, але їх задача делегується зовнішнім обладнанням (наприклад, процесором вводу / виводу) або їх потреба уникнути, використовуючи альтернативну синхронізацію / механізм зв'язку, таких як опитування.

Затримки операційРедагувати

Один з основних принципів ТТА — спростити апаратне забезпечення, ускладнивши програмне.

Переваги в порівнянні з VLIW архітектуріРедагувати

TTAs можна розглядати як «DATAPATH» VLIW архітектур. У той час як VLIW програмується за допомогою операцій, TTA розбиває виконання операції на кілька операцій переміщення. Модель низького програмування високого рівня надає кілька переваг у порівнянні зі стандартною VLIW. Наприклад, архітектура TTA може забезпечити простіший паралелізм, ніж реєстрові файли з VLIW. Як програміст контролює терміни операндів і дані результату, складність (кількість вхідних і вихідних портів) файлу регістра (РФ) не повинні бути розширені відповідно до гіршому випадку питання / завершення сценарій кілька паралельних інструкцій.

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

РеалізаціїРедагувати

На даний час доступний мікроконтролер тільки в комерційних цілях, побудований на Transport Triggered Architecture від Dallas Semiconductor. Тим не менш, це пропонує або OISC або URISC, але крім однієї гнучкою MOVE інструкції, яка може функціювати як різні віртуальні інструкції, переміщаючи значення безпосередньо до лічильника команд.

ПриміткиРедагувати

  1. «MAXQ Family User's Guide». Розділ «1.1 Набір команд» говорить «Реєстро-базова transport-triggered architecture враховує всі інструкції, які будуть закодовані, як просто операції переміщення. Всі інструкції або зменшують або безпосередньо записують значення в адресований регістр, або в комірку пам'яті, або переміщують дані між регістрами та / або між осередками пам'яті.»
  2. Introduction to the MAXQ Architecture — Includes transfer map diagram
  3. TTA Codesign Environment, an open source (MIT licensed) toolset for design of application specific TTA processors.
  4. Article about TTAs, explaining how the TTA-based Codesign Environment project uses LLVM
  5. Dr. Dobb's article with 32-bit FPGA CPU in Verilog
  6. Web site with more details on the Dr. Dobb's CPU. Архів оригіналу за 18 лютий 2013. Процитовано 3 січень 2016. 

Див. такожРедагувати

ПосиланняРедагувати