Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АОС_лабораторний практикум.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
969.73 Кб
Скачать

Архітектура ia-64

У IA-64 два нововведення в порівнянні з RISC-процесорами:

  • Вживання технології явного паралелізму на рівні команд (EPIC - Explicitly Parallel Instruction Computing).

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

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

Особливості EPIC:

  • велика кількість регістрів;

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

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

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

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

Опис ia-64

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заголовок

Склад 1

...

Склад N

Рисунок 6.1 - Загальний формат команд E2K

Команда 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 байт. Буфер організований як черга FIFO і має до 64 зон попередньої вибірки.

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

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

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

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

Сам набір команд E2K "багатший", ніж в традиційних RISC-процесорів: у нім представлені чотириадресні команди, наприклад, типу d = а + b + с. Такого немає і в IA-64. Що стосується команд з плаваючою комою, то окрім повної підтримки IEEE754 в E2K реалізована робота з 80-розрядним представленням Intel x86. При цьому операнди зберігаються в парах 64-розрядних регістрів E2K. Правда, сложение/умножение таких чисел не повністю конвеєризоване. Крім того, для наближення системи команд E2K до x86 в E2K реалізовані також команди розширення ММХ.

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

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

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

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

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

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

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

  • тегірування даних;

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

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

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