
- •Мови, рівні і віртуальні машини
- •Сучасні багаторівневі машини
- •Поняття архітектури пк
- •1.4. Розвиток комп’ютерної архітектури
- •Розвиток багаторівневих машин
- •Типи сучасних еом
- •Питання до лекції
- •2.1. Принципи розробки сучасних комп'ютерів
- •2.2. Паралелізм на рівні команд
- •2.3. Конвеєри
- •2.4. Суперскалярні архітектури
- •2.5. Паралелізм на рівні процесорів
- •2.6. Векторні комп'ютери
- •Блок управління
- •2.7. Мультипроцессори
- •2.8. Мультикомпьютери
- •Питання до лекції
- •3. Основи комп’ютерної організації : пам’ять
- •3.1. Ієрархічна структура пам'яті
- •3.2. Загальні відомості про пам'ять
- •3.4. Методи звертання до пам'яті
- •3.5. Модулі пам'яті
- •3.6. Ряди і банки пам'яті
- •3.8. Код з виправленням помилок
- •3. 9. Скільки потрібно пам'яті
- •Питання до лекції
- •4. Цифровий рівень побудови ом
- •4.1. Вентилі і булева алгебра
- •4.2. Булева алгебра
- •4.3. Реалізація булевих функцій
- •4.4. Еквівалентність схем
- •Основні цифрові логічні схеми Інтегральні схеми
- •4.5. Комбінаційні схеми
- •3 Входи і 8 виходів
- •4.6. Арифметичні схеми.
- •4.7. Тактові генератори
- •Питання до лекції
- •Цифровий рівень побудови ом.
- •5. Цифровий логічний рівень архітектури: пам’ять, мікропроцесори
- •5.2. Синхронні sr-защіпки
- •5.3. Синхронні d-защіпки
- •5.4. Тригери (flip-flops)
- •5.5. Регістри
- •5.6. Організація пам'яті
- •Тригер (б)
- •Кожний ряд представляє одне з 3-бітних слів. При операції зчитування і запису завжди зчитується або записується ціле слово
- •5.7. Мікросхеми пам'яті
- •5.9. Мікросхеми процесорів
- •Стрілочки указують вхідні і вихідні сигнали. Короткі діагональні лінії вказують на наявність декількох висновків.
- •Питання до лекції
- •6. Шини
- •6.1. Ширина шини
- •6.2. Синхронізація шини
- •6.3. Синхронні шини
- •6.5. Асинхронні шини
- •6.6. Арбітраж шини
- •6.7. Принципи роботи шини
- •Питання до лекції
- •7. Мікроархітектурний рівень
- •7.1. Приклад мікроархітектури
- •7.2. Тракт даних
- •В цьому розділі
- •Табліця 7.1. Деякі комбінації сигналів аллу і відповідні їм функції
- •7.3. Синхронізація тракту даних
- •7.4. Робота пам'яті.
- •7.5. Мікрокоманди
- •7.6. Управління мікрокомандами: Mic-1
- •7.7. Приклад архітектури команд: ijvm
- •7.8. Модель пам'яті ijvm
- •Питання до лекції
- •8. Рівень архітектури команд
- •8.1. Моделі пам'яті
- •8.2. Загальний огляд рівня архітектури команд
- •8.3. Властивості рівня команд
- •8.4. Регістри
- •8.5. Команди
- •8.6. Загальний огляд рівня команд машини Pentium II
- •8.8. Загальний огляд рівня команд системи ultrasparc II
- •8.9. Загальний огляд віртуальної машини Java
- •8.10. Типи даних
- •8.11. Числові типи даних
- •8.12. Нечислові типи даних
- •8.13. Типи даних процесора Pentium II
- •Підтримувані типи відмічені хрестом (х)
- •8.14. Типи даних машини UltraSparc II
- •8.16. Типи даних віртуальної машини Java
- •8.17. Формати команд
- •Питання до лекції
- •9. Адресація
- •9.1. Способи адресації
- •9.2. Безпосередня адресація
- •9.3. Пряма адресація
- •9.4. Регістрова адресація
- •9.5. Непряма регістрова адресація
- •Лістинг 9.1 - Програма на асемблері для обрахунку суми елементів масиву.
- •9.6. Індексна адресація
- •Листинг 9.2. Програма на мові асемблера для обчислення операції або від (Аі і Ві ) для масиву з 1024 елементів.
- •9.7. Відносна індексна адресація
- •9.8. Стекова адресація
- •9.9. Зворотній польський запис
- •9.10. Обчислення формул в зворотнім польськім записі
- •Питання до лекції
2.4. Суперскалярні архітектури
Один конвеєр – добре, а два – ще краще. Одна з можливих схем процесора з подвійним конвеєром показана на рис. 4. В основі розробки лежить конвеєр, зображений на рис.3. Тут загальний відділ виклику команд бере з пам'яті відразу по дві команди і розміщує кожну з них в один з конвеєрів. Кожен конвеєр містить АЛУ для паралельних операцій. Щоб виконуватися паралельно, дві команди не повинні конфліктувати при використанні ресурсів (наприклад, регістрів), і жодна з них не повинна залежати від результату виконання іншої. Як і у випадку з одним конвеєром, або компілятор повинний стежити, щоб не виникало неприємних ситуацій (наприклад, коли апаратне забезпечення видає некоректні результати, якщо команди несумісні), або ж конфлікти виявляються й усуваються прямо під час виконання команд завдяки використанню додаткового апаратного забезпечення.
Спочатку конвеєри (як подвійні, так і одинарні) використовувалися тільки в комп'ютерах RISC. У 386-го і його попередників їх не було. Конвеєри в процесорах компанії Intel з'явилися тільки починаючи з 486-й моделі. 486-й процесор містив один конвеєр, a Pentium – два конвеєри з п'яти стадій. Схожа схема зображена на рис. 2.2, але поділ функцій між другою і третьою стадіями (вони називалися декодування 1 і декодування 2) було дещо іншим. Головний конвеєр (u-конвеєр) міг виконувати довільні команди. Другий конвеєр (v-конвеєр) міг виконувати тільки прості команди з цілими числами, а також одну просту команду з плаваючою точкою (FXCH).
С1 С2 С3 С4 С5
Рис. 2.2. Подвійний конвеєр з п'яти стадій із загальним відділом виклику команд
Існують складні правила визначення, чи є пара команд сумісними для того, щоб виконуватися паралельно. Якщо команди, що входять у пари, були складними або несумісними, виконувалася тільки одна з них (в u - конвеєрі). Друга команда, що залишилася, складала потім пари з наступною командою. Команди завжди виконувалися одна за одною. Таким чином, Pentium містив особливі компілятори, що поєднували сумісні команди в пари і могли породжувати програми, що виконуються швидше, ніж у попередніх версіях. Досліди показали, що програми, які виконують операції з цілими числами, на комп'ютері Pentium виконуються майже в два рази швидше, ніж на 486-м, хоча в нього така ж тактова частота. Поза всякими сумнівами, перевага у швидкості з'явилося завдяки другому конвеєрові.
Перехід до чотирьох конвеєрів можливий, але це вимагає створення громіздкого апаратного забезпечення. Замість цього використовується інший підхід. Основна ідея – один конвеєр з великою кількістю функціональних блоків, як показано на рис. 2.3. Pentium ІІ, наприклад, має подібну структуру. У 1987 році для позначення цього підходу був уведений термін суперскалярна архітектура. Однак подібна ідея знайшла втілення ще більше ніж 30 років тому в комп'ютері CDC 6600. CDC 6600 викликав команду з пам'яті кожні 100 нс і розміщував її в один з 10 функціональних блоків для паралельного виконання. Поки команди виконувалися, центральний процесор викликав наступну команду.
Відзначимо, що стадія 3 випускає команди значно швидше, ніж стадія 4 здатна їх виконувати. Якщо б стадія 3 випускала команду кожні 10 нс, а всі функціональні блоки виконували б свою роботу також за 10 нс, то на четвертій стадії завжди функціонував би тільки один блок, що зробило б саму ідею конвеєра безглуздою. У дійсності більшості функціональних блоків четвертої стадії для виконання команди потрібно значно більше часу, ніж час, що займає один цикл (це блоки доступу до пам'яті і блок виконання операцій із плаваючою точкою). Як видно з рис.2.3, на четвертій стадії може бути декілька АЛП.
С4
АЛУ
АЛУ
С1
С2
С3
С5
Блок вибірки
команд
Блок вибір-ки
команд
Блок декодування
Блок вибір-ки
операндів
Блок загрузки
Блок збереження
Блок з плаваючою
точкою
Рис. 2.3. Суперскалярний процесор з п'ятьма функціональними блоками