Призупинення виконання команди

Методи зменшення впливу конфліктів за даними на роботу конвеєра команд

Застосовуються наступні методи зменшення впливу зазначених вище залежностей між даними на роботу конвеєра команд:

- Призупинення виконання команди, тобто затримка з переходом від виконання операції декодування ID до виконання операції виконання ЕХ в конвеєрі доти, доки за­лежність даних не вичерпується плином часу.

- Випереджувальне пересилання з ярусів конвеєра результатів попередньої коман­ди до потрібного ярусу конвеєра, в якому виконується наступна команда (це потребує додаткових затрат обладнання та ускладнює керування).

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

- Динамічна диспетчеризація послідовності команд у програмі під час компіляції з тією ж, що й статична диспетчеризація, метою.

- Перейменування регістрів.

Розглянемо далі названі методи зменшення впливу конфліктів за даними на роботу конвеєра команд детальніше.

 

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

Розглянемо фрагмент програми, виконання якого вимагає призупинення роботи конвеєра:

LW R1,0(R2)

SUB R4,Rl,R5

AND R6,Rl,R7

OR R8,R1,R9

 

Тут друга команда SUB потребує результату виконання першої команди, який з’явля­ється лише на такті 12 (фаза МЕМ), через що виконання призупиняється (зупинка R-Stall) до завершення вказаного такту. Призупинення конвеєра знижує його ефективність, тому частіше використовують інші шляхи ліквідації впливу залежностей між даними.