logo
AOM / Мельник А

5.3.1. Типи конфліктів керування

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

178

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

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

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

dd r7,r8,rl bnez r4,$TEXT and r5,r7,r7 add r2,r2,r3

відображена на рис. 5.11, де після декодування команди BNEZ(перехід, якщо не рів­ний нулю) призупиняється виконання наступної команди.

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

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

179