Зниження втрат на вибірку команди, do якої здійснюється перехід

Для зниження втрат на вибірку команди, до якої здійснюється перехід, використову­ються декілька підходів:

- обчислення виконавчої адреси команди переходу в ярусі декодування команди;

- використання буфера адрес переходів;

- використання буфера команд, до яких здійснюються переходи;

- використання буфера циклу.

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

При використанні буфера адрес переходів, який є асоціативною пам’яттю, в ньому зберігаються адреси декількох останніх команд переходів, які є ознакою пошуку, та від­повідні їм адреси переходу. Перед вибіркою з пам’яті чергової команди її адреса (вміст лічильника команд) порівнюється з адресами наявних в буфері команд і, якщо відбулося співпадіння, з буфера вибирається адреса переходу (рис. 5.12), а сигнал про наявність адреси в буфері пропускає її через мультиплексор. Тоді вибірка команди переходу може бути здійснена вже в наступному такті. При відсутності адреси команди в буфері адреса переходу шукається в ярусі декодування та, разом з адресою команди, заноситься до бу­фера адрес переходів. При необхідності заміщення інформації в буфері адрес переходів використовуються алгоритми заміщення типу FIFO, LRU, RAND.

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


Особливо ефективним є використання буфера адрес переходів та буфера команд, до яких здійснюється перехід при виконанні циклів.

Іще більший ефект дає використання буфера циклу, до якого із збереженням поперед­нього порядку записується деяка кількість команд, що виконувались останніми. Буфер входить до першого ярусу конвеєра, в якому виконується вибірка команд (рис. 5.14). Коли відбувається перехід, то спочатку здійснюється звернення до буфера. Якщо це був повторний цикл або ітерація, то всі його команди будуть вже наявними в буфері, який є меншим за об’ємом і швидшим основної пам’яті та кеш пам’яті команд. Тим самим всі наступні ітерації будуть виконуватись із зчитуванням команд з буфера, що суттєво при­скорює роботу комп’ютера. Описаний підхід зокрема був використаний в комп’ютерах CRAY-1 фірми Cray Research та CDC 6600 фірми Control Data Corporation.