- •Мови, рівні і віртуальні машини
 - •Сучасні багаторівневі машини
 - •Поняття архітектури пк
 - •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. Суперскалярний процесор з п'ятьма функціональними блоками
