ваного виконання команд, але найчастіше шляхом введення буфера відновлення послідовності команд.
Як відзначалося вище, наявність конфліктів призводить до значного зниження продуктивності процесора. Певні типи конфліктів вимагають призупинення конвеєра. При цьому зупиняється виконання всіх команд, що знаходяться на різних стадіях обробки. Інші конфлікти при невірному предсказанном напрямку переходу, ведуть до необхідності повного перезавантаження конвейєра. Втрати будуть тим більше, чим довший конвеєр використовується в процесорі. Така ситуація стала однією з причин скорочення числа ступенів в процесорах останніх моделей [11].
3 Суперскалярні архітектури
В
3.1 Робота суперскалярного конвеєра
Одна з можливих схем процесора з двома конвеєрами показана на малюнку 3.1. В її основі лежить конвеєр, зображений на малюнку 2.1. Тут загальний блок вибірки команд викликає з пам'яті відразу по дві команди і поміщає кожну з них в один з конвеєрів. Кожен конвейєр містить АЛУ для паралельних операцій. Щоб виконуватися паралельно, дві команди не повинні конфліктувати через ресурсів (наприклад, регістрів), і ні одна з них не повинна залежати від результату виконання інший. Як і у випадку з одним конвеєром, або компілятор повинен гарантувати відсутність нештатних ситуацій (коли, наприклад, апаратура не забезпечує перевірку команд на несумісність і при обробці таких команд видає некоректний результат), або за рахунок додаткової апаратури конфлікти повинні виявлятися і усуватися безпосередньо в ході виконання команд. p> Спочатку конвеєри (як здвоєні, так і звичайні) використовувалися тільки в RISC-комп'ютерах. У процесора 386 і його попередників їх не було. Конвеєри в процесорах компанії Intel з'явилися, лише починаючи з моделі 486. Процесор 486 мав один п'ятиступінчастий конвеєр, a Pentium - два таких конвеєра. Схожа схема зображена на малюнку 3.1, але поділ функцій між другою і третьою ступенями (вони називалися декодер 1 і декодер 2) було іншим. Головний конвеєр (U-конвеєр) міг виконувати довільні команди. Другий конвеєр (v-конвеєр) міг виконувати тільки прості команди з цілими числами, а також одну просту команду з плаваючою точкою (FXCH) [2,5]. p> Є складні правила визначення, чи є пара команд сумісної щодо можливості паралельного виконання. Якщо команди, входять до пару, були складними або несумісними, виконувалася тільки одна з них (в u-конвеєрі). Залишилася друга команда складала потім пару з наступною командою. Команди завжди виконувалися по порядку. Таким чином, процесор Pentium містив особливі компілятори, які об'єднували сумісні команди у пари і могли породжувати програми, що виконуються швидше, ніж у попередніх версіях. Вимірювання показали, що програми, в яких застосовуються операції з цілими числами, при тій же тактовій частоті на Pentium виконуються майже в два рази швидше, ніж на 486. Поза всяких сумнівів, перевага у швидкості було досягнуто завдяки другому конвеєру. p> Варто відзначити, що перехід до чотирьом конвеєрам можливий, але вимагає громіздкого апаратного забезпечення. Замість цього використовується інший підхід. Основна ідея - один конвеєр з великою кількістю функціональних блоків, як показано на малюнку 3.2. Pentium II, наприклад, має подібну структуру. У 1987 році для позначення цього підходу було введено термін суперскалярна архітектура. Однак подібна ідея знайшла втілення ще тридцятьма роками раніше в комп'ютері CDC 6600. Цей комп'ютер викликав команду з пам'яті кожні 100 не й для поміщав її в один з 10 функціональних блоків для паралельного виконання. Поки команди виконувалися, центральний процесор викликав таку команду. p> З часом значення поняття "Суперскалярної" дещо змінилося. Тепер суперскалярное називають процесори, здатні запускати кілька команд часто від чотирьох до шести) за один тактовий цикл. Природно, щоб передавати всі ці команди, в суперскалярное процесорі має бути кілька функціональних блоків. Оскільки в процесорах цього типу, як правило, передбачається один конвеєр, його пристрій зазвичай відповідає малюнку 3.2. p> У світлі такої термінологічної динаміки на сьогоднішній день можна стверджувати, що комп'ютер 6600 ні суперскалярним з технічної точки зору - адже за один тактовий цикл в ньому запускатися не більше однієї команди. Однак при цьому був досягнуть аналогічний результат - команди запускалися швидше, ніж виконувалися. На самому справі різниця в продуктивності між ЦП з циклом в 100 ні, передавальним за цей період по одній команді чотирьом функціональними блокам, та ЦП з циклом в 400 ні, запускаючим за цей час чотири команди, трудноуловимую. В обох процесорах дотримується принцип перевищення швидкості запуску над швидкістю управління; при цьому робоча навантаження розподіляється між кількома функціональними блоками. p> Зазначимо, що на виході щаблі 3 команди з'являються значно швидше, ніж щабель 4 здатна їх обробляти. Якби на виході щаблі 3 команди з'являлис...