Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VPKS_v2_UKR_new.doc
Скачиваний:
24
Добавлен:
11.09.2019
Размер:
2.31 Mб
Скачать

2. Найпростіша організація конвеєра й оцінка його продуктивності

Для ілюстрації основних принципів побудови процесорів ми будемо використати найпростішу архітектуру, що містить 32 цілочисельних регістра загального призначення (R0,...,R31), 32 регістра плаваючої крапки (F0,...,F31) і лічильник команд PC. Будемо вважати, що набір команд нашого процесора включає типові арифметичні й логічні операції, операції із плаваючою крапкою, операції пересилання даних, операції керування потоком команд і системні операції. В арифметичних командах використовується трьохадресний формат, типовий для RISC-процесорів, а для звертання до пам'яті використовують операції завантаження й запису вмісту регістрів на згадку.

Виконання типової команди можна розділити на наступні етапи:

  • вибірка команди - IF (за адресою, заданому лічильником команд, з пам'яті витягає команда);

  • декодування команди / вибірка операндыв з регістрів - ID;

  • виконання операції / обчислення ефективної адреси пам'яті - EX;

  • звертання до пам'яті - MEM;

  • запам'ятовування результату - WB.

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

Роботу конвеєра можна умовно представити у вигляді зрушених у часі схем процесора (рис. 1). Цей малюнок добре відбиває сполучення в часі виконання різних етапів команд. Однак частіше для подання роботи конвеєра використаються часові діаграми (рис. 2), на яких звичайно зображуються виконувані команди, номери тактів і етапи виконання команд.

Конвеєризація збільшує пропускну здатність процесора (кількість команд, що завершуються в одиницю часу), але вона не скорочує час виконання окремої команди. У дійсності, вона навіть трохи збільшує час виконання кожної команди через накладні витрати, пов'язаних з керуванням регістровими станціями. Однак збільшення пропускної здатності означає, що програма буде виконуватися швидше в порівнянні із простою неконвеєрною схемою.

Той факт, що час виконання кожної команди в конвеєрі не зменшується, накладає деякі обмеження на практичну довжину конвеєра. Крім обмежень, пов'язаних із затримкою конвеєра, є також обмеження, що виникають у результаті незбалансованості затримки на кожному його щаблі й через накладні витрати на конвеєризацію. Частота синхронізації не може бути вище, а, отже, такт синхронізації не може бути менше, ніж час, необхідне для роботи найбільш повільного щабля конвеєра. Накладні витрати на організацію конвеєра виникають через затримку сигналів у конвеєрних регістрах (засувках) і через перекоси сигналів синхронізації. Конвеєрні регістри до тривалості такту додають час установки й затримку поширення сигналів. У граничному випадку тривалість такту можна зменшити до суми накладних витрат і перекосу сигналів синхронізації, однак при цьому в такті не залишиться часу для виконання корисної роботи з перетворення інформації.

Як приклад розглянемо неконвеєрну машину з п'ятьма етапами виконання операцій, які мають тривалість 50, 50, 60, 50 і 50 нс відповідно (рис. 3). Нехай накладні витрати на організацію конвеєрної обробки становлять 5 нс. Тоді середній час виконання команди в неконвеєрній машині буде дорівнює 260 нс. Якщо ж використовується конвеєрна організація, тривалість такту буде дорівнює тривалості самого повільного етапу обробки плюс накладні витрати, тобто 65 нс. Цей час відповідає середньому часу виконання команди в конвеєрі. Таким чином, прискорення, отримане в результаті конвеєризації, буде дорівнює:

Середній час виконання команди в неконвеєрному режимі Середній час виконання команди в конвеєрному режимі

=260 65=4

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

Рис. 1 Зображення роботи конвейера

Номер команди

Номер такта

1

2

3

456789

Команда i

IF

ID

EX

MEMWB

Команда i+1

IF

ID

EXMEMWB

Команда i+2

IF

IDEXMEMWB

Команда i+3

IFIDEXMEMWB

Команда i+4

IFIDEXMEMWB

Рис. 2. Діаграма работи простого конвейера

Рис. 3 Ефект конвеєризації при виконанні 3-х команд - чотириразове прискорення

При реалізації конвеєрної обробки виникають ситуації, які перешкоджають виконанню чергової команди з потоку команд у призначеному для неї такті. Такі ситуації називаються конфліктами. Конфлікти знижують реальну продуктивність конвеєра, що могла б бути досягнута в ідеальному випадку. Існують три класи конфліктів:

  1. Структурні конфлікти, які виникають через конфлікти по ресурсах, коли апаратні засоби не можуть підтримувати всі можливі комбінації команд у режимі одночасного виконання зі сполученням.

  2. Конфлікти за даними, виникаючі у випадку, коли виконання однієї команди залежить від результату виконання попередньої команди.

  3. Конфлікти по керуванню, які виникають при конвеєризації команд переходів і інших команд, які змінюють значення лічильника команд.

Конфлікти в конвеєрі приводять до необхідності припинення виконання команд (pipeline stall). Звичайно в найпростіших конвеєрах, якщо припиняється яка-небудь команда, то всі наступні за нею команди також припиняються. Команди, що передують припиненій, можуть продовжувати виконуватися, але під час припинення не вибирається жодна нова команда.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]