Смекни!
smekni.com

Огляд архітектури IBM PC-сумісного компютера (стр. 4 из 11)

Програміст має справу тільки з логічними регістрами. Кожен новий результат записується у фізичні регістри. Але до тих пір, доки не завершено команду, значення в фізичному регістрі вважаються за тимчасові.

Метод перейменування регістрів спрощує контроль залежностей по даних. В машині, яка може виконувати команди не в порядку їх розташування у програмі, номери логічних регістрів можуть стати неоднозначними, оскільки один і той самий регістр може бути використаний для збереження послідовних двох значень. Але оскільки номери всіх фізичних регістрів унікально ідентифікують кожне значення, неоднозначності ліквідуються.


1.7 Скорочення втрат на виконання команд переходу та мінімізація конфліктів по керуванню

Конфлікти по керуванню можуть викликати навіть більші втрати, ніж конфлікти по даних. Коли виконується команда умовного переходу, вона може змінити або не змінити значення вказівника команд. Коли команда заміняє вказівник команд на адресу, що було обчислено у команді, перехід називається виконаним, інакше – невиконаним.

Найпростіший метод роботи з переходами полягає у зупинці конвеєра при появі команди переходу до того, як буда з‘ясована адреса переходу. Такі зупинки повинні реалізовуватись інакше, ніж зупинки конфліктів по даних. Вибір команди після команди умовного переходу має статись якомога швидше після з‘ясування адреси переходу:

Команда переходу IF ID EX MEM WB
I IF Stall Stall IF ID EX MEM WB
I + 1 Stall Stall Stall IF ID EX MEM WB
I + 2 Stall Stall Stall IF ID EX MEM
I + 3 Stall Stall Stall IF ID EX
I + 4 Stall Stall Stall IF ID
I + 5 Stall Stall Stall IF

Наприклад, якщо конвеєр буде зупинено на 3 такти на кожної стадії умовного переходу, то це може суттєво вплинути на швидкодію процесора. При частоті команд умовного переходу 30% та ідеальному CPI = 1 машина буде мати тільки половину прискорення конвеєрної обробки. Таким чином, зниження втрат від команд умовного переходу є критичним питанням. Число тактів, що втрачаються у зупинках викликаних переходами може бути зменшено двома шляхами:

1.Виявлення виконуваності чи невиконуваності переходу на ранніх стадіях обробки;

2.Обчислення адреси переходу для виконуваного переходу на ранніх стадіях.

Найпростіша схема обробки команд умовного переходу полягає в зупинці операцій в конвеєрі шляхом блокування будь-якої операції, що знаходиться в конвеєрі після операції умовного переходу до точного з‘ясування цільової адреси умовного переходу. Перевагою цього рішення є його простота

Більш досконала і не небагато складніша схема полягає у тому, щоб прогнозувати умовний перехід як той що не виконується. При цьому апаратура повинна просто продовжувати виконання програми як у випадку, що умовний перехід не виконується. При цьому необхідна додаткова апаратура для того, щоб не змінювати стан машини до того, як буде з‘ясовано напрямок переходу. Якщо ж з‘ясується, що перехід є виконуваний, то необхідно просто очистити конвеєр від команд, що йшли після команди умовного переходу та почати вибірку нових команд після виконання переходу:

Невиконуваний перехід IF ID EX MEM WB
І + 1 IF ID EX MEM WB
І + 2 IF ID EX MEM WB
І + 3 IF ID EX MEM WB
І + 4 IF ID EX MEM WB
Виконуваний перехід IF ID EX MEM WB
І + 1 / Цільова команда IF IF ID EX MEM WB
Ц.К. + 1 Stall IF ID EX MEM WB
Ц.К. + 2 Stall IF ID EX MEM WB
Ц.К. + 3 Stall IF ID EX MEM

Альтернативна схема прогнозує перехід як виконуваний. Як тільки команду умовного переходу декодовано та обчислена цільова адреса переходу, робиться припущення що перехід виконуваний і вибираються команди з цільової адреси переходу. Якщо не можливо виявлення цільової адреси переходу до того як буде виявлено виконуваний це перехід чи ні, такий підхід не дає ніяких переваг. Якщо б умова переходу залежала від безпосередньо попередньої команди, то виникла б зупинка конвеєра завдяки конфлікту по даним. У таких випадках прогнозування переходу як виконуваного невигідно.

Четверта схема, яка використовується у деяких машинах має назву "затриманих переходів". У затриманому переході такт виконання із затримкою переходу довжиною в n є:

Команда умовного переходу

Наступна команда 1

Наступна команда 2

……………………..

Наступна команда n

Цільова адреса при виконуваному переході

Команди 1 – n знаходяться в слотах (часових інтервалах) затриманого переходу. Задача програмного забезпечення полягає у тому, щоб зробити команди, що слідують за командою умовного переходу, дійсними та корисними. Апаратура гарантує реальне виконання цих команд перед командою переходу. Тут використовуються декілька методів оптимізації.

Планування затриманих переходів ускладнюється:

1.Наявністю обмежень на команди, розміщення яких планується в слотах затримки

2.Необхідністю передбачати під час компіляції, чи буде перехід виконуваним.

Практика свідчить, що біля 50% всіх слотів є заповненими, і 80% їх є корисними. Це може здатися дивним, оскільки 53% умовних переходів не практиці виконуються. Але високий відсоток поясняється тим, що приблизно половина слотів заповнюється командами, виконання яких необхідно без залежності від переходу.


1.8 Проблеми реалізації точного переривання в конвеєрі

Обробка переривань в конвеєрній машині виявляється більш складною завдяки тому, що суміщене виконання команд ускладнює визначення можливості безпечної зміни стана машини довільною командою. В конвеєрній машині команда виконується по етапам, і її виконання завершується через декілька тактів після її видачі. Ще в процесі виконання окремих її етапів команда може змінити стан машини. Тим часом переривання може змусити процесор перервати виконання ще не завершених команд.

Як і в безконвеєрних машинах двома основними проблемами реалізації переривань є:

1.переривання виникає у процесі виконання деякої команди;

2.необхідний механізм повернення з переривання для продовження виконання програми.

Наприклад, для найпростішого конвеєра переривання по відсутності сторінки віртуальної пам‘яті може виникнути до етапу вибірки з пам‘яті (MEM). На момент виникнення цього переривання в конвеєрі будуть знаходитися декілька команд. Оскільки подібне переривання повинно забезпечити повернення та потребує переключення на інший процес (операційну систему) необхідно надійно очистити конвеєр та зберегти стан машини. Часто це реалізується збереженням регістру РС для команди, що викликала переривання. Якщо команда, що виконала переривання не є командою умовного переходу, зберігається звичайний порядок виконання команд. Якщо ж це є команда переходу, треба оцінити умову та почати вибірку команд з певної адреси.

Коли відбувається переривання, для коректного збереження стану машини необхідно виконати такі дії:

1.У послідовність команд що поступають на обробку в конвеєр, треба вставити команду переходу на підпрограму обробки переривання;

2.Доки виконується команда переходу на переривання, задовольнити всі потреби запису команди, що викликала переривання, а також всіма командами що слідують в конвеєрі за нею;

3.Після передачі керування підпрограмі обробки, вона повинна зберегти адресу повернення для наступного повернення з переривання.

Якщо використовуються механізми затриманих переходів, стан машини відновити за допомогою тільки РС неможливо, оскільки в конвеєрі команди можуть бути не послідовними. Тому треба зберігати для кожної в слоті затримки свій РС.

Підтримка точних переривань в багатьох системах є обов‘язковою. Як мінімум в машинах зі сторінковою організацією пам‘яті повинна бути підтримка точних переривань або за допомогою тільки апаратних засобів, або з деякою участю програмного забезпечення.

1.9Основи планування завантаження конвеєра та розгортання циклів

Для підтримання максимальної завантаженості конвеєра повинен використовуватись паралелізм рівня команд, оснований на виявлені послідовності незв‘язаних команд, які можуть виконуватися в конвеєрі із суміщенням. Щоб уникнути зупинки конвеєра залежна команда повинна бути відокремлена від вихідної команди на відстань у тактах, не меншу ніж затримка конвеєра для цієї команди. Для прикладів будемо вважати, що умовні переходи мають затримку в 1 такт. Затримки для інших типів команд:

Вихідна команда Команда, що використовує результат Затримка в тактах
Операція АЛП з ПК Операція АЛП з ПК 3
Операція АЛП з ПК Завантаження подвійного слова 2
Завантаження подвійного слова Операція АЛП з ПК 1
Завантаження подвійного слова Завантаження подвійного слова 0

У даному розділі ми розглянемо яким чином компілятор може збільшити ступінь паралелізму за допомогою розгортання циклу. Для прикладу будемо розглядати простий цикл, який додає до вектора в пам‘яті скалярну величину. Такий цикл є повністю паралельним, оскільки залежність між його ітераціями відсутня. Припускаємо, що R1 містить адресу останнього елементу вектора, а F2 – скаляр, який потрібно додати до вектора. Програма яка не використовує переваги конвеєризації буде виглядати таким чином: