Архітектура Е2Д


Архітектура ІA-64

В ІA-64 два нововведення в порівнянні з RіSC-процесорами:

- Застосування технології явного паралелізму на рівні команд (EPІ - Explіcіtly Parallel Іnstructіon Computіng).

- Застосування предикатних обчислень.

Предикати - спосіб обробки розгалужень (умовних переходів).

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

Особливості EPІ:

- Велика кількість регістрів.

- Масштабованість архітектури до великої кількості функціональних пристроїв. Це властивість представники фірми Іntel і HP називають "спадково масштабований набір команд".

- Явний паралелізм у машинному коді. Пошук залежностей між командами робить не процесор, а компілятор.

- Предикація. Команди з різних галузей умовного розгалуження забезпечуються предикатними полями (полями умов) і запускаються паралельно.

- Завантаження по припущенню. Дані з повільної основної пам'яті завантажуються заздалегідь.

 

Архітектура ІA-64 включає:

1. Регістри ІA-64:

- 128 64- розрядних регістрів загального призначення;

- 128 80- розрядних регістрів речовинної арифметики;

- 64 1- розрядних предикатних регістрів.

2. Формат команди ІA-64:

- ідентифікатор команди;

- три 7- розрядні поля операндів - 1 приймач і 2 джерела;

- особливі поля для речовинної й цілої арифметики;

- 6-розрядне предикатне поле (64=26).

3. Предикація.

4. Завантаження по припущенню.

Підхід, близький до ІA-64, уже був реалізований у Росії - у зробленому в єдиному екземплярі суперкомп'ютері Ельбрус-3, випущеному в 1991 році.

В E2K використовуються команди змінної довжини. Загальний формат команд E2K представлений у таблиці 12.1.

Таблиця 12.1. Загальний формат команд E2K
Заголовок Слог 1 ... Слог N

Команда E2K складається зі складів довжиною 32 розряди кожний. Число цих складів може мінятися від 2 до 16, причому дану архітектуру можна ще розширити – до 32 складів.

Будь-яка команда завжди включає 1 склад заголовка й ще від 1 до 15 складів, що вказують на операції, які можуть виконуватися паралельно. Склад заголовка містить інформацію про структуру команди і її довжині, що полегшує дешифрацію команди змінної довжини. Застосування заголовка дозволяє не проводити попереднього декодування команд перед їхнім приміщенням у кэш команд.

В архітектурі E2K представлений надвеликий файл регістрів. Всі регістри E2K є універсальними й можуть містити як цілочисельні дані, так і числа з плаваючою комою. Усього є 256 регістрів довжиною по 64 розряди кожний

В E2K є два майже симетричних кластери, кожний з яких містить по 256 регістрів. Усього в цьому процесорі є 30 реєстрових портів: 20 портів читання (по 10 портів на кластер) і 10 портів запису.

В Alpha 21264 застосовується. Динамічного перейменування регістрів (реалізоване в багатьох суперскалярних процесорах) в E2K немає, тому що в ньому подібні завдання покладають на компілятор. Однак у циклах з постійним кроком використовується аналогічна схема циклічної заміни використовуваних регістрів.

Ще одна особливість E2K - реєстрове вікно для процедури. Це рішення стало традиційним для машин серії "Ельбрус", однак особливо важливим воно є для E2K, оскільки він містить надвелику кількість регістрів - 256.

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

Кэш даних першого рівня в E2K має ємність усього 8 Кбайт і продубльований у кожному із кластерів. Цей кэш є прямо адресованим і використовує алгоритм наскрізного запису даних.

Кэш даних другого рівня в E2K має ємність 256 Кбайт при часі доступу в 8 тактів. Він є двухканальним частково-асоціативним і має 4 банки, тобто забезпечує 4-кратне розшарування кеш-пам'яті. У кэш даних другого рівня застосовується алгоритм зворотного запису.

Крім цього, в E2K представлений спеціалізований кэш попередньої вибірки, що розроблювачі назвали буфером попереднього підкачування. Він є частиною пристрою доступу до масивів і задіється тільки при роботі з масивами в циклах. Його ємність становить усього 4 Кбайт, і він складається з 2 банків з 2 портами в кожному з них. За один такт у буфер можна вважати, отже, до 4 слів довжиною 8 байт. Буфер організований як черга FІFO і з 64 зон попередньої вибірки.

В Е2Д передбачаються два варіанти підключення третього рівня кэш: безпосередньо до процесора Е2Д, що дозволяє розвантажити "системну шину" - комутатор, або через набір комутаторних мікросхем.

Функціональні пристрої (ФУ) E2K рознесені по двох кластерах. Ці кластери містять по 3 однакових цілочисельних конвеєри - АЛП (правда, один із кластерів має також ФУ розподілу - целочисельного й із плаваючою комою).

У кожному кластері представлені також адресні суматори, які є для 2 з 3 шляхів ("каналів") даних. У результаті кожний кластер може одночасно виконувати до 2 операцій завантаження регістрів або 1 операцію запису в оперативну пам'ять. Можливий і змішаний випадок: 2 завантаження плюс один запис.

Крім того, є 4 канали для даних із плаваючої коми, по 2 на кластер. У кожному каналі може виконуватися команда типу MADD - "помножити-і-скласти", що дає темп 8 результатів із плаваючої коми за такт.

Сам набір команд E2K більший і складніший, чим у традиційних RіSC-процесорів: у ньому представлені 4-адресні команди, наприклад, типу d = a + b + c. Такого немає й в ІA-64. Що стосується команд із плаваючої коми, то крім повної підтримки ІEEE754 в E2K реалізована робота з 80-розрядним поданням Іntel x86. При цьому операнди зберігаються в парах 64-розрядних регістрів E2K. Правда, додавання/множення таких чисел не повністю конвеєризовано. Крім того, для наближення системи команд E2K до x86 в E2K реалізовані також команди розширення ММХ.

В E2K цілочисельний конвеєр має довжину 8 тактів (власне виконання йде на сьомому такті, а зворотний запис - на восьмому).

Е2Д забезпечує дуже високий рівень одночасно виконуваних операцій: у команді їх кодується до 23 (сюди, крім арифметико-логічних операцій, входять також доступ в оперативну пам'ять, збільшення індексу масиву й т.п.). Ефективні показники паралельної роботи ФУ в E2K вище, ніж у всіх суперскалярних процесорів.

В архітектурі E2K, як і в ІA-64, робиться все, щоб по можливості виключити звичайні операції переходу. Для цього в E2K є 32 1-розрядних регістра-предиката, причому команда здатна сформувати до 7 предикатів: 4 в операціях порівняння в АЛП і ще 3 - в операціях логіки.

Хоча в ІA-64 предикатних регістрів формально в 2 рази більше, ніж в E2K, реально їх стільки ж, тому що в ІA-64 зберігаються пари - предикат і його заперечення. В ІA-64 поля предикатів завжди представлені в команді, а в E2K - можуть бути відсутні. Предикати можуть використовуватися в каналі АЛП або в каналі доступу до масивів; для вказівки на це застосовуються умовні склади, що містять маски предикатів і ФУ. Усього в цих складах може кодуватися до 6 предикатів, що вказують на те, потрібно чи виконувати відповідні операції з "широкої" команди.

Компілятор E2K породжує коди для обох галузей програми, що виникають при умовному переході, і, користуючись більшим числом ФУ й регістрів, змушує процесори виконувати обидві галузі програми. Та ж процедура застосовується й в ІA-64. Доти , поки умова переходу залишається невідомим, обидві виконуються спекулятивно. Коли, нарешті, умова знайдена, вибираються потрібні результати. Ознака спекулятивного виконання зводиться при цьому в спеціальному біті в коді операції у відповідному складі. При виникненні ситуації виключення (exceptіon) результат забезпечується тегом недійсного значення.

У файлі предикатів E2K, як і в реєстровому файлі, використовуються вікна.

Ще деякі особливості архітектури E2K:

- тегування даних, підтримуване у всій лінійці процесорів ЕОМ "Ельбрус";

- сегментно-сторінкова організація пам'яті;

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

Підтримується також двійкова компіляція для SPARC- Архітектури.