Конвеєризація виконання команд у мікропроцесорі
Виконання команд у МП відбувається під керуванням пристрою керування (УУ). Загалом виконання команди складається з наступних основних кроків:
- Завантаження команди із ЗУ.
- Дешифрація команди.
- Завантаження операндів із ЗУ у разі, якщо це необхідно.
- Власне виконання команди (якщо команда передбачає обчислення, цьому етапі задіюється АЛУ мікропроцесора).
- Збереження результату ЗУ, якщо це необхідно (у команді може бути передбачено збереження результату у внутрішніх регістрах процесора).
Конвеєризація виконання команд передбачає розбиття процесу на підоперації та виконання цих підоперації окремими блоками, що входять до складу пристрою керування.
Попереднє завантаження команд, черга команд
У найпростіших мікропроцесорах завантаження команди та її виконання в АЛП виконуються послідовно. Це призводить до неефективної організації роботи процесора: під час завантаження команди "випростує" АЛУ, а під час виконання - УУ. Ідея полягає в тому, щоб зробити процеси виконання команди та завантаження наступної команди одночасними. Це можна зробити, якщо в той час, поки АЛУ виконує якусь команду, пристрій управління завантажуватиме наступну команду для виконання. У складі пристрою управління з'являється блок попереднього завантаження команд, а процес виконання команди МП стає конвеєризованим у найпростішому вигляді (рис. 1).
Команди, завантажені в МП на етапі попередньої вибірки, необхідно тимчасово зберегти доти, доки стане можливим їх виконання АЛУ. Для тимчасового збереження використовуються спеціальні регістри, які отримали назву "черга команд".
Використання попередньоївибірки дозволяє передавати чергову команду на виконання в АЛУ відразу після закінчення попередньої команди, таким чином АЛУ не простоює в очікуванні завантаження чергової команди і загальна ефективність роботи МП підвищується.
Первинна дешифрація, передбачення переходів
Насамперед необхідно визначити, що завантажена команда є командою переходу. Для цього використовується первинна дешифрація (рис. 2).
![]() |
Зверніть увагу, що тут бачимо приклад конвеєра із зворотним зв'язком.
Існують два методи передбачення переходів: статичний та динамічний.
Статичний спосіб передбачення працює за схемою, закладеною в процесор, вважаючи, що переходи за одними умовами найімовірніше відбудуться, а за іншими — ні.
Динамічний метод передбачення спирається на передісторію обчислювального процесу — кожного конкретного випадку переходу накопичується статистика поведінки, і перехід передбачається, грунтуючись саме у ній.
Оскільки прогноз переходів базується на ймовірнісних оцінках, воно не завжди працює правильно. Однак, якщо програма спеціальним чином оптимізована (з урахуванням особливостей конкретного процесора), якщо використання команд переходів у програмі узгоджено логічно з алгоритмом роботи блоку передбачення, прогноз переходів дозволяє істотно підвищити ефективність роботи виконавчого конвеєра МП.
Попереднє завантаження операндів
Після того, як АЛУ закінчило виконання чергової команди, до нього завантажується нова команда із черги команд. Але в цей момент може виявитися, що для виконання команди необхідно завантажити один або кілька операндів. На їхнє завантаженняпотрібен певний час, протягом якого АЛП простоює. Щоб цього не відбувалося, потрібно ввести в наш конвеєр (рис. 3) ще одну операцію — попереднє завантаження операндів. Для того щоб визначити, чи є в цій команді операнди, що завантажуються із ЗУ, проводиться вторинна дешифрація (рис. 4).
![]() |
Завантажені операнди зберігаються в спеціальних внутрішніх регістрах МП, таким чином, на момент закінчення АЛУ виконання попередньої команди, чергова команда і всі необхідні дані вже завантажені в МП. Така організація конвеєра дозволяє з максимальною ефективністю використовувати потужності АЛП та всього процесора в цілому.
Виконання команди призводить до отримання результату. У ряді випадків цей результат також має бути збережений у ЗП. Оскільки збереження результату не має відношення до виконання команди, воно виноситься у вигляді окремої підоперації нашого конвеєра. АЛУ, виконавши команду, зберігає результат у проміжному внутрішньому буфері, блок збереження результату на наступному кроці конвеєра виконує його запис ЗУ (рис. 5).
![]() |
Мікропроцесори, мають конвеєр виконання команд, зображений на рис. 5 отримали назву "МП зі скалярною архітектурою". Подальша еволюція мікропроцесорів пішла шляхом створення суперскалярної архітектури, в якій використовувалося більше одного конвеєра і кілька АЛУ. Таким чином, стало можливим одночасне виконання кількох команд, які не пов'язані одна з одною за даними.
Отримання максимальної ефективності використання скалярної архітектури МП можливе лише у разі спеціальної оптимізації програми під конкретний МП з урахуванням його архітектури та особливостей функціонування окремихблоків конвеєра


