ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6832
Скачиваний: 22
179
5.3.2. Зниження втрат на вибірку команди, до якої здійснюється перехід
Для зниження втрат на вибірку команди, до якої здійснюється перехід, використовуються декілька підходів:
-
обчислення виконавчої адреси команди переходу в ярусі декодування команди; " використання буфера адрес переходів;
-
використання буфера команд, до яких здійснюються переходи;
-
використання буфера циклу.
Обчислення виконавчої адреси команди переходу в ярусі декодування команди передбачає на етапі декодування команди визначення не тільки її належності до команд керування, але і адреси переходу. Ця адреса може бути в полі самої команди, а якщо ні, то має бути обчислена в цьому ж ярусі. Для забезпечення обчислення адреси переходу в ярус декодування вводиться додатковий суматор. Тим самим час зупинки конвеєра може бути зменшений до одного такту.
При використанні буфера адрес переходів, який є асоціативною пам'яттю, в ньому зберігаються адреси декількох останніх команд переходів, які є ознакою пошуку, та відповідні їм адреси переходу. Перед вибіркою з пам'яті чергової команди її адреса (вміст лічильника команд) порівнюється з адресами наявних в буфері команд і, якщо відбулося співпадіння, з буфера вибирається адреса переходу (рис. 5.12), а сигнал про наявність адреси в буфері пропускає її через мультиплексор. Тоді вибірка команди переходу може бути здійснена вже в наступному такті. При відсутності адреси команди в буфері адреса переходу шукається в ярусі декодування та, разом з адресою команди, заноситься до буфера адрес переходів. При необхідності заміщення інформації в буфері адрес переходів використовуються алгоритми заміщення типу FIFO, LRU, RAND.
180
Кращим, ніж використання буфера адрес переходів, є використання буфера команд, до яких здійснюється перехід (рис. 5.13), коли в буфер разом з адресою команди переходу, яка є ознакою пошуку, записуються коди команд, до яких здійснюються переходи, що дозволяє при повторному виконанні такої команди виключити не тільки фазу обчислення адреси переходу, але і фазу вибірки команди. При відсутності в буфері команди, до якої здійснюється перехід, її адреса визначається в ярусі декодування, проводиться її зчитування з пам'яті команд та, разом з адресою команди переходу, вона заноситься до буфера.
Особливо ефективним є використання буфера адрес переходів та буфера команд, до яких здійснюється перехід при виконанні циклів.
Іще більший ефект дає використання буфера циклу, до якого із збереженням попереднього порядку записується деяка кількість команд, що виконувались останніми. Буфер входить до першого ярусу конвеєра, в якому виконується вибірка команд (рис. 5.14). Коли відбувається перехід, то спочатку здійснюється звернення до буфера. Якщо це був повторний цикл або ітерація, то всі його команди будуть вже наявними в буфері, який є меншим за об'ємом і швидшим основної пам'яті та кеш пам'яті команд. Тим самим всі наступні ітерації будуть виконуватись із зчитуванням команд з буфера, що суттєво прискорює роботу комп'ютера. Описаний підхід зокрема був використаний в комп'ютерах CRAY-1 фірми Cray Research та CDC 6600 фірми Control Data Corporation.
181
5.3.3. Зниження втрат на виконання команд умовного переходу
Число тактів, що втрачаються під час призупинення конвеєра через наявність умовних переходів, може бути зменшено наступними способами:
■ Введенням буфера попередньої вибірки
для виявлення, здійснимим чи нездійс
нимим
є умовний перехід та підготовки до
переходу на початкових ярусах конвеєра.
-
Дублюванням початкових ярусів конвеєра для підготовки до переходу, аж до виявлення, здійснимим чи нездійснимим є умовний перехід.
-
Затримкою переходу, тобто виконанням наступних за командою переходу команд незалежно від напряму переходу.
■ Статичним та динамічним передбаченнями
переходу, тобто попереднім обчис
ленням
значення лічильника команд (цільової
адреси) для здійснимого переходу.
5.3.3.7. Введення буфера попередньої вибірки
Буфер попередньої вибірки встановлюється після ярусу вибірки команди. Він складається з двох блоків пам'яті типу FIFO та блоку обчислення цільової адреси переходу, і включений в конвеєр команд, як це показано на рис. 5.15.
182
За значенням програмного лічильника ПЛ команди з пам'яті команд зчитуються в один з буферів FIFO. Блок обчислення цільової адреси аналізує кожну зчитану команду. При виявленні команди умовного переходу він обчислює адресу переходу та керує блоками FIFO і програмним лічильником з тим, щоб забезпечити паралельне зчитування обох можливих послідовностей команд з адреси переходу в блоки FIFO. Після обчислення адреси переходу блок обчислення цільової адреси підключає до входу конвеєра команд через мультиплексор МП відповідний буфер, а вміст іншого буфера стирається.
За рахунок попередньої вибірки для виявлення того, здійсненним чи нездійсненним є умовний перехід, таким підходом вдається зменшити втрати на виконання команд умовного переходу. При цьому буфер попередньої вибірки можна розглядати як декілька додаткових ярусів конвеєра, які збільшують його початкову затримку та не впливають на продуктивність. З рис. 5.12 видно, що такий підхід ускладнює роботу конвеєра. Крім того, при наявності в програмі декількох команд умовного переходу підряд це вимагає включення додаткових блоків FIFO та іще більше ускладнює роботу комп'ютера.
5.3.3.2. Дублювання початкових ярусів конвеєра
Подібним до описаного вище способом зниження втрат на виконання команд умовного переходу є дублювання початкових ярусів конвеєра, тобто створення двох паралельних гілок початкових ярусів конвеєра команд, як це показано на рис. 5.16.
В одній із паралельних гілок початкових ярусів конвеєра команд послідовність команд відповідає випадку, коли умова переходу виконується, а в іншій - коли не виконується. Кількість ярусів у цих вітках визначається кількістю тактів, потрібних для обчислення адреси переходу блоком обчислення цільової адреси переходу. Після отримання адреси переходу блок обчислення цільової адреси переходу через мультиплексор МП
183
підключає до решти ярусів конвеєра команд відповідну вітку початкових ярусів.
Тут також з'являються проблеми, коли до прийняття рішення щодо поточної команди переходу в конвеєр надходить нова команда. Тоді знову вимагаються додаткові паралельні вітки початкових ярусів конвеєра команд.
Описаний метод, як і попередній, знайшов застосування в кількох версіях сім'ї комп'ютерів IBM 360/370.
5.3.3.3. Затримка переходу
Ми вже бачили, що проста схема виконання в конвеєрі команд умовного переходу полягає в блокуванні виконання будь-якої команди, наступної за командою умовного переходу, до тих пір, поки не стане відомим напрям переходу. Рис. 5.11 відображав саме такий підхід. Привабливість такого рішення полягає в його простоті.
На противагу цьому методу стратегія затриманого переходу передбачає продовження виконання команд, які ідуть в програмі за командою переходу, незалежно від її результату. Це має сенс лише тоді, коли наступні за командою переходу команди мають бути виконаними незалежно від того, був перехід чи ні, а команда переходу не має на них впливу.
Пошук таких команд здійснюється на етапі компіляції програми, а якщо знайдена 'їх кількість недостатня, то на вільні місця вставляються команди типу «немає операції».
5.3.3.4. Статичне передбачення переходу
Передбачення переходу є одним з найефективніших способів подолання конфліктів керування. Ідея цього способу полягає в тому, що до моменту виконання команди умовного переходу, або відразу після її надходження в конвеєр робиться припущення про напрям виконання умовного переходу залежно від імовірності його здійсненності або нездійсненності. Команди подаються в конвеєр відповідно до прийнятого припущення. Якщо припущення виявилося правильним, то жодних втрат, пов'язаних із командою переходу, в конвеєрі не буде. При помилковому припущенні конвеєр необхідно повернути до стану, з якого почалася помилкова вибірка команд, що рівнозначно призупиненню конвеєра на втрачену кількість тактів. Вигода від застосування цього методу тим більша, чим вища точність передбачення, тобто відношення кількості правильних передбачень до загальної 'їх кількості.
На даний час розроблено багато способів передбачення переходу. Залежно від того, на основі чого робиться передбачення, розрізняють статичне та динамічне передбачення переходів.
Статичне передбачення переходів здійснюється на етапі компіляції програми на основі деякої апріорної інформації про неї. Найширше застосування знайшли наступні методи статичного передбачення умовного переходу:
* метод повернення;
-
метод профілювання, передбачення здійснюється за результатами використання інформації про профіль виконання програми, яка зібрана в результаті попередніх її запусків;
-
результат переходу визначається кодом операції команди переходу;
-
результат переходу визначається напрямом переходу.