
- •Лабораторний практикум
- •Загальні методичні вказівки
- •Технології оперативної пам'яті
- •1.3 Постановка завдання
- •1.5 Контрольні запитання
- •2.3 Постановка завдання
- •2.5 Контрольні запитання
- •3.3 Постановка завдання
- •Основні риси risc-процесорів
- •Risc-процесори 3-го покоління
- •Структура процесорів Alpha: 21064, 21264
- •Порівняльні характеристики Alpha 21164 і 21264
- •4.3 Постановка завдання
- •Паралельна обробка даних на еом
- •Закон Амдала
- •5.3 Постановка завдання
- •5.5 Контрольні запитання
- •Лабораторна робота №6 сучасна архітектура обчислювальних систем
- •6.1 Мета роботи
- •6.2 Теоретичні відомості
- •Vliw архітектура
- •Архітектура ia-64
- •Опис ia-64
- •6.3 Постановка завдання
- •Лабораторна робота №7
- •7.3 Постановка завдання
- •7.5 Контрольні запитання
- •Лабораторна робота №8 визначення швидкодії обчислювальної системи
- •8.1 Мета роботи
- •8.2 Теоретичні відомості
- •Порівняння за швидкістю процесора обчислювальної системи
- •Оцінка обчислювальної системи за тестами
- •Приклади тестів швидкодії/ефективності обчислювальних систем
- •Рекомендації щодо виконання роботи
- •8.3 Постановка завдання
- •8.5 Контрольні запитання
- •Перелік рекомендованих джерел
- •В.Г. Хорошевский. Архитектура вычислительных систем/ в.Г. Хорошевский. – м.: мгту им. Баумана,2008 - 530 с.
Архітектура ia-64
У IA-64 два нововведення в порівнянні з RISC-процесорами:
Вживання технології явного паралелізму на рівні команд (EPIC - Explicitly Parallel Instruction Computing).
Вживання предикативних обчислень. Предикати - спосіб обробки галужень (умовних переходів).
У поєднанні з новим рівнем спекулятивних обчислень це значно зменшує кількість умовних переходів і, відповідно, помилкових передбачень напряму переходів. У свою чергу, вживання EPIC однозначно диктує появу в архітектурі великого числа ФЕ і надвеликих файлів регістрів.
Особливості EPIC:
велика кількість регістрів;
масштабованість архітектури до великої кількості функціональних пристроїв. Це властивість представники фірми Intel і HP називають "спадково масштабований набір команд";
явний паралелізм в машинному коді. Пошук залежностей між командами проводить не процесор, а компілятор;
предикація. Команди з різних гілок умовного галуження забезпечуються предикативними полями (полями умов) і запускаються параллельно;
завантаження по припущенню. Дані з повільної основної пам'яті завантажуються заздалегідь.
Опис ia-64
Регістри IA-64:
128 64-розрядних регістрів загального призначення;
128 80-розрядних регістрів речової арифметики;
64 1-розрядних предикативних регістрів.
Формат команди IA-64:
ідентифікатор команди;
три 7-розрядні поля операндів - 1 приймач і 2 джерела;
особливі поля для речової і цілої арифметики;
6-розрядне предикативне поле (64=2^6).
Предикація.
Завантаження по припущенню.
Архітектура Е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-архітектури.