WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Процесор - Реферат

Процесор - Реферат

часів процесорів i486 і Pentium, у яких використовувався стандартний 5-ступінчастий конвеєр.
Суперконвесризація (superpipelining), застосована в сімействі Р6, поділяє ступені стандартного конвеєра на дрібніші частини. Зі збільшенням числа ступенів кожний окремий ступінь виконує меншу роботу і, таким чином, містить менше апаратної логіки. Часовий інтервал між надходженням набору вхідних впливів на входи схеми й появою результуючих сигналів на її виходах - затримка поширення (propagation delay) - у результаті стає істотно меншим.
Завдяки більш коротким затримкам поширення сигналу в кожному окремо взятомуступені конвеєра стає можливим підвищення тактової частоти.
Аналогічний ефект зменшення затримок поширення сигналу досягається за допомогою переходу на тонший технологічний процес, наприклад, з 0,18 мікрон на 0,13. Очевидний шлях підвищення продуктивності - збільшення числа ступенів конвеєра й підвищення частоти процесора. Але суперконвеєрна архітектура має серйозний недолік. При виконанні неправильно передбачених переходів і операцій необхідне повне очищення конвеєра, що займає тим більше часу, чим більше ступенів нараховує конвеєр, причому зниження продуктивності в деяких випадках виходить просто обтяжуючим.
Розглянемо роботу конвеєра процесора Р6, що складається з 12 ступенів. Конвеєр можна розділити на три самостійні функціональні блоки - вхідний блок упорядкованої обробки (in-order front end), відповідальний за декодування
й обробку команд, ядро виконання зі зміною послідовності (out-of-order core), де, власне, і відбувається виконання команд, і конвеєр упорядкованого виведення команд із послідовності (in-order retirement).
Блок вибірки команди (instruction fetch unit) зчитує потік інструкцій з 1,1-кеша команд порціями по 32 байти за такт. Для пошуку початку команди використовується поточний покажчик команди (IP-instruction pointer), а потім команди передаються на три дешифратори. Перш ніж перейти до розгляду роботи дешифраторів, розглянемо механізм передбачення переходів
Покажчик команди розраховується блоком вибірки команди на підставі інформації, отриманої від буфера адреси переходу (ВТВ - branch target buffer), і заснованої на бітах передісторії розгалужень, що генеруються блоком цілочислових обчислень, призначеним для обробки мікрокоманд переходів (Integer Unit). Передбачення переходів (розгалужень) покликано звести до мінімуму холосту роботу конвеєра і забезпечити його безперервним потоком команд. Узагалі, в середньому до 10 відсотків коду програми складають безумовні переходи, що передають управління за новою зазначеною адресою, і від 10 до 20 відсотків - умовні переходи, що змінюють або не змінюють хід виконання програми в залежності від результату порівняння або виконання якої-небудь іншої умови. У випадку, якщо умовний перехід не виконується, програма просто продовжує виконання наступної команди.
Безумовні переходи проблем не викликають, процесор точно знає, що вони будуть виконані, і тому просто починає вибірку команд за зазначеною адресою. Команди умовних переходів становлять певні труднощі, тому що процесор не знає, чи буде виконаний перехід доти, поки команда не пройде виконавчий ступінь конвеєра. Однак очікування, поки команда розгалуження покине виконавчий, ступінь, означає тимчасову відмову від можливості вибірки й обробки подальших команд.
Для передбачення переходів процесор використовує розширений алгоритм Yeh'a, що дозволяє з великою вірогідністю спрогнозувати, чи буде виконуватися перехід. Якщо передбачення виявиться правильним, то виконання продовжиться з малою затримкою або зовсім без затримки. Якщо ж припущення помилкове, то частково виконані команди доведеться видаляти з конвеєра, а нові команди вибирати з області пам'яті з правильною адресою, декодувати й виконувати їх. Це спричинить за собою істотне зниження продуктивності, що прямо залежить від глибини конвеєра - для архітектури Р6 у випадку помилкового передбачення переходу втрати складуть від 4 до 15 тактів.
Алгоритм передбачення розгалужень є динамічним дворівневим і ґрунтується на поводженні команд переходу за попередній період часу (оскільки той самий перехід часто виконується більш ніж один раз, наприклад у циклі), а також на поводженні конкретних груп команд, для яких із великою ймовірністю можна передбачити конкретний перехід. Точність передбачення цього алгоритму складає приблизно 90 відсотків.
Отже, 16-байтові команди передаються в дешифратор команд (Instruction Decoder), що складається з трьох паралельних дешифраторів, два з яких - прості (Simple) і один - складний (Complex). Завдання кожного дешифратора - перетворення ІА-інструкції на одну або кілька мікрокоманд (micro-ops).
Прості дешифратори обробляють команди х86, трансльовані в єдину мікрокоманду. Складний дешифратор працює з командами, яким відповідають від однієї до чотирьох мікрокоманд. Деякі особливо складні команди неможливо
безпосередньо декодувати навіть складним дешифратором, тому вони переда-ються в планувальник послідовності мікрокоманд (MIS - microcode instruction sequencer), що генерує необхідну кількість мікрокоманд. Якщо простий дешифратор зустрічає команду, яка не піддається трансляції, то вона передається в складний дешифратор або в планувальник послідовності мікрокоманд.
У випадку, якщо складні й прості команди бездоганно вирівняні їхніми відповідними дешифраторами, то дешифратори здатні генерувати загалом шість мікрокоманд за такт, але, як правило, з усіх трьох дешифраторів за один такт видаються три мікрокоманди, що відповідають у середньому двом-трьом ІА-командам, які передаються в буфер відновлення послідовності (ROB - Reorder Buffer). ROB містить 40 елементів завбільшки 254 байт кожен і може зберігати мікрокоманду, два зв'язаних із нею операнди, результат і кілька бітів стану.
Останнім етапом перед виконанням команд є відображення регістрів, здійснюване в таблиці псевдонімів регістрів (RAT - register alias table). Архітектура х86 передбачає тільки вісім 32-розрядних регістрів загального призначення, а з таким малим числом регістрів імовірність того, що дві сусідні команди будуть використовувати один регістр, відносно велика. Відображення регістрів допомагає послабити вплив таких реєстрових взаємозалежностей (register dependencies) - у разі потреби запису в той самий регістр для двох команд їх неможливо буде виконати позачергово без відображення регістрів, тому що пізніша команда не може бути оброблена до завершення більш ранньої команди.
При відображенні регістрів відбувається перетворення програмних посилань на архітектурні регістри в посилання на 40 фізичних регістрів мікрокоманд, реалізованих у буфері оновлення послідовності. Власне кажучи, процесор "розмножує клонуванням" обмежену кількість
Loading...

 
 

Цікаве