MAJC 5200 складається з двух 128-розрядних VLIW (Very - Long Instruction Word) мікропроцесорних ядра, інтегрованих на одному кристалі. В даному мікропроцесорі реалізовано 4 рівні паралелізму (мультитредова структура кристала, мультитредове виконання програми, VLIW - паралелізм на рівні команд, SIMD обробка даних). Система команд RISC - процесорів орієнтована на потокову обробку мультимедійної інформації і апаратну підтримку високорівневої конструкції мови Java. Сама назва MAJC утворена від " Microprocessor Architecture for Java Computing - микропроцессорна обробка для обчислень на Java". Дана архітектура є тією, що масштабується. На одному кристалі MAJC може розташовуватися декілька ідентичних процесорів залежно від конкретної реалізації, кожний з яких містить від одного до чотирьох функціональних блоків - RISC - процесорів і кеш - команд. Кожний з розташованих на кристалі процесорів може виконувати до 4 команд за такт.
Крім функціональних блоків і кєшів команд (16 Кб) на кристалі розташовані: загальний для процесорів кєш даних (16 Кб), контролер PCI, контролер Rambus - пам'яті, графічний препроцесор, 64-розрядні високошвидкісні інтерфейси для між процесорних з'єднань і підключення графічної підсистеми, а також комутатор, об'єднуючий процесори і всю решту компонентів кристала.
Малюнок 4. Структурна схема MAJC
Командне слово MAJC об'єднує від однієї до чотирьох 32-розрядних команд, кожна з яких призначена для одного з 4 процесорів. У тому випадку, коли не представляється можливим одночасно задіяти всі процесори, окремі команди можуть бути відсутні, тому командне слово MAJC може мати змінну довжину. Для вказівки кількості команд в слові використовуються його перші два біти: 00 - 1 команда, 01 - 2 команди, 10 - 3 команди, 11 - 4 команди. Призначення команд здійснюється в порядку номерів функціональних блоків.
Один з функціональних блоків (номер 0) відрізняється по виконуваних командах від трьох інших (номери з 1 по 3). Крім АЛП команд, він виконує команди завантаження/збереження і команди переходів. АЛП команди виконуються над даними у форматах: цілочисельному (8-,16-,32-.64 - біт), з фіксованою крапкою (16 біт) і рухомою крапкою (32-,64-бит), а також бітовими послідовностями. Є команди SIMD-обробки пар даних у форматі з фіксованою точкою 16-біт.
Кожний процесор має файл локальних регістрів, логіку управління (декодування) команд, і регістри стану. Є також глобальні регістри доступні для всіх процесорів. Реалізована в мікропроцесорі апаратна підтримка мультітредового виконання програми передбачає можливість одночасного виконання до 4-х потоків команд.
Дане сімейство, дуже східне з раніше розглянутими мікропроцесорами ADSC-210хx по структурі ядра і сумісним знизу-вверх за системою команд, проте володіє істотними архітектурними відмінностями, що дозволило розробникам виділити їх в окреме сімейство SHARC (Super Harvard Architecture Computer). Архитектура SHARC продовжує розвиток трансп`ютерного напрямку в мікропроцесорній техніці і задає новий стандарт інтеграції сигнальних процесорів в мультіпроцесорну систему. Ця архітектура є прикладом гармонійного поєднання принципів побудови розподілених і зв'язаних систем, об'єднуючи в собі простоту і ефективність масштабування розподілених систем із зручністю програмування систем з пам'яттю, що розділяється.
В SHARC - мікропроцесорі з'єднані високоефективне процесорне ядро, що виконує обробку даних у форматі з рухомою крапкою, інтерфейс з хост-процесором, контролер ПДП, послідовні порти, комутаційні линки і шина, що розділяється.
Шинний комутатор сполучає ядро процесора з незалежним процесором вводу-виводу, двухвходовой пам'яттю і портом шини мультіпроцесорної системи. Загальний простір мікропроцесора, що адресується, складає 4 Гслова. Встроєний контролер зовнішньої оперативної пам'яті дозволяє задавати різне число тактів очікування, що генеруються, і підтримує сторінковий обмін з динамічною пам'яттю.
Інтерфейс з хост-процесором забезпечує просте з'єднання із стандартною 16 - або 32 - розрядною мікропроцесорною шиною. Передача даних через інтерфейс здійснюється асихронно, з швидкістю, обмеженою тактовою частотою мікропроцесора. Хост-інтерфейс доступний через зовнішній порт і відображається в адресний простір мікропроцесора. Чотири канали ПДП забезпечують обмін даними і командами через хост-інтерфейс з мінімальною участю процесорного ядра.
Розташований на кристалі 10-канальний контролер ПДП забезпечує обмін даними між внутрішньою і зовнішньою пам'яттю, периферійними пристроями, хост-процесором, послідовними портами і линками мікропроцесора. Мікропроцесор має два синхронні послідовні порти для зв'язку з різноманітними периферійними пристроями. Максимальна швидкість передачі даних через послідовний порт складає 40 Мбіт/с. Передача може здійснюватися одночасно в двох напрямах в режимі ПДП. В процесі обміну може виконуватися додаткове перетворення даних, таке як μ - або А - командування.
Дана архітектура надає розробникам широкі можливості по створенню мультіпроцесорних сигнальних систем. Загальний адресний простір може бути розділений межу декількома процесорами. Забезпечується автоматична підтримка семафорів для послідовностей операцій читання - модифікація - запис в пам'ять. Вбудована розподілена шинна логіка дозволяє створювати системи, що містять до 6-ти взаємодіючих процесорів і хост-процесор. Міжпроцесорне управління здійснюється за допомогою механізму переривань.
Додаткові можливості вводу-виводу процесору надають шести 4-розрядних лінков. Лінки передають дані по передньому і задньому фронту тактового імпульсу, забезпечуючи, таким чином, передачу 8 біт за такт. Лінки використовуються в мультипроцесорних системах для з'єднання типу "крапка-крапка, Передача даних по лінку може здійснюватися 32-х або 48-ми розрядними словами безпосередньо в процесорне ядро, або, з використанням ПДП каналів, у внутрішню пам'ять. Кожний линк містить власні буферні вхідні і вихідні регістри. Максимальна швидкість міжпроцесорного обміну через линки або зовнішній порт складає 240 Мбайт/с.
Лінки мікропроцесора.
Кожен лінк складається з 4 двонаправлених ліній даних і двох двонаправлених управляючих ліній, що забезпечують асинхронну передачу в режимі " запрос - відповідь". Порти на протилежних кінцях лінка настроюються на передачу і прийом, або знаходяться в третьому стані. Порт кожного лінка може вибрати для передачі або прийому один з шести буферів. Дані читаються або пишуться в буфери під управлінням або КПДП або центрального процесора. Алгоритм роботи КПДП не відрізняється від стандартного, а саме - він програмується для роботи з буфером шляхом завдання розміру буфера, початкової адреси в пам'яті, приростом адреси, а також напрями передачі, Коли контроллер ПДП завершує операцію, виробляється переривання, індивідуальне для кожного з 10 ПДП каналів.
Буфери можуть бути прочитані або доповнені процесором за допомогою операцій читання/запису в області пам'яті зовнішніх пристроїв. Якщо робиться спроба читання з порожнього буфера, процесор повинен перейти в стан очікування до тих пір, поки не поступлять дані ззовні. При записі в заповнені буфери операція повинна припинитися, аж до появи вільного місця в буфері.
В системах, в яких затримка, що вноситься контроллером ПДП, неприпустимо велика, процесор повинен працювати безпосередньо з буферами, а контролер ПДП переведений в неактивний стан.
При роботі лінків генеруються наступні переривання:
якщо канал ПДП активізований, то по завершенню передачі повідомлення ПДП каналом виробляється масковане переривання;
генерується масковане переривання, якщо ПДП контролер не активізований, а приймаючий буфер не порожній або передаючий буфер не повний. По перериванню потрібне виконання операцій з буфером;
масковане переривання, яке генерується при зовнішньому доступі в порт лінка, який не активізований.
Кожний буфер складається з внутрішнього і зовнішнього регістрів. При передачі внутрішній регістр використовується для прийому даних з внутрішньої пам'яті під управлінням ПДП контролера або ЦП. Зовнішній регістр використовується для розпаковування півбайтів для портів линка (старший півбайт слідує першим) Ці два регістри формують FIFO-чергу. При прийомі зовнішній регістр упаковує півбайти, що приймаються, в слова і передає їх через внутрішній регістр в пам'ять під управлінням ПДП контролера або ЦП. Якщо ПДП або ЦП не встигли витягнути дані з буфера прийом припиняється. Довжина регістрів настроюється програмно і складає 32 або 48 біт.
Перш, ніж два процесори починають взаємодіяти по зв'язуючому їх лінку, повинне бути визначений - хто з процесорів передаватиме дані, а хто приймати. Для цього використовується обмін маркером. При початковій установці маркер (програмно-доступний прапор) встановлюється в одному з процесорів, визначаючи його як "господаря" (master) лінка і дозволяючи йому передачу. Якщо приймаючий порт бажає стати "господарем" лінка для передачі даних, він повинен виставити сигнал на лінії запиту даних для поточного "господаря" лінка. "Господар", використовуючи програмний протокол, визначає, коли приходить сигнал підтвердження даних, а коли запит на отримання маркера.
Якщо "господар" вирішив передати маркер, він посилає назад визначений користувачем як маркер ідентифікатор і скидає власний маркер. Одночасно відомий процесор перевіряє отримані дані і, якщо, в них міститься певне слово, то він встановлює свою мітку, переходячи в стан провідного процесора. Якщо отримані дані не містять необхідного ідентифікатора, то відомий процесор повинен зрозуміти, що ведучий починає нову передачу даних.