Цикл виконання інструкцій

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

Схема циклу команд

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

Компоненти ред.

Лічильник команд (також відомий як PC, «program counter»)
Регістр процесора, що вказує на адресу інструкції, що виконуватиметься наступною
Регістр адресації пам'яті[en] (MAR)
Зберігає адресу блоку пам'яті для читання або запису.
Регістр даних пам'яті[en] (MDR)
Двосторонній регістр, який зберігає дані, завантажені з пам'яті і готові до обробки процесором, або дані, які буде записано до пам'яті. (Він також відомий як буферний регістр пам'яті, MBR).)
Регістр команд (IR)
У цьому регістрі зберігається команда, щойно отримана з пам'яті.
Пристрій керування процесором (CU, Control Unit)
Здійснює декодування інструкції, що знаходиться в IR. Під час декодування вибираються ресурсіи машини (наприклад, регістри джерел даних і результату) і арифметична чи логічна операція, а також координується активація цих ресурсів.
Арифметико-логічний пристрій (ALU)
Виконує математичні та логічні операції.
Математичний співпроцесор (FPU)
Виконання операцій з рухомою комою.

Кроки ред.

Процесор кожного комп'ютера може мати різні цикли на основі різних наборів команд, але він буде аналогічним наступному:

  1. Вибірка інструкції: Команда зчитується з адреси пам'яті, яка в даний час зберігається в лічильнику інструкцій (PC), і зберігається в регістрі команд (IR). Після завершення операції вибірки PC вказує на адресу інструкції, яка буде зчитуватися в наступному циклі.
  2. Декодування інструкції: На цьому етапі кодована інструкція, присутня в регістрі команд (IR), інтерпретується за допомогою декодера.
  3. Читання результативної адреси: У разі інструкції пам'яті (прямої або непрямої) фаза виконання запускається наступним тактовим імпульсом. Якщо команда має непряму адресу, результативна адреса зчитується з основної пам'яті, як і дані, що підлягають обробці (вони записуються в регістри даних). У випадку прямої інструкції, на даному етапі робиться нічого. Якщо це інструкція вводу-виводу, або проста регістрова інструкція, вона виконується негайно.
  4. Виконання команди: Блок керування процесором CPU передає декодовану інформацію у вигляді послідовності сигналів керування до відповідних функціональних блоків процесора для виконання потрібних дій (таких як: читання значень з регістрів, передавання їх до АЛП для виконання математичних або логічних обчислень, і запис результату назад в регістр). Якщо АЛП задіяний, він може встановлювати ознаки (такі, як переповнення), що також використовуються блоком керування. Результат, згенерований операцією, зберігається в оперативній пам'яті, або надсилається на пристрій виведення. Виходячи з даних, отриманих від АЛП, лічильник команд може бути оновлений іншою адресою, з якої буде зчитуватись наступна інструкція.

Потім цикл повторюється.

Цикл ініціалізації ред.

Ініціалізація процесора починається після подачі на нього напруги живлення. Найперше значення лічильника команд індивідуальне для кожної архітектури ЕОМ (наприклад, процесори архітектури IA-32 починають виконання з адреси 0xfffffff0). Зазвичай перші команди виконуються з області BIOS чи firmware, що записані у постійній пам'яті. BIOS ініціалізує апаратуру машини і переходить до завантаження операційної системи.

Вибірка інструкції ред.

Крок 1 циклу — вибірка інструкції. Він є однаковим для всіх команд:

  1. ЦП посилає лічильник команд PC в MAR і посилає команду читання на шину керування
  2. У відповідь на команду читання (з адресою, рівною PC), пам'ять виставляє затребувані дані на шину даних
  3. Процесор копіює дані з шини даних в свій MDR
  4. Процесор копіює дані з MDR в регістр команд (IR)
  5. PC збільшується так, що він вказує на наступну команду в пам'яті. На цьому етапі виконується підготовка ЦП до наступного циклу.

Розшифровка інструкції ред.

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

Читання результативної адреси ред.

Крок 3 оцінює, що це за операція. У випадку операції з пам'яттю перевіряється, чи є вона прямою або непрямою:

  • Пряма інструкція пам'яті - Нічого не робиться.
  • Непряма інструкція пам'яті - результативна адреса зчитується з пам'яті.

Якщо це проста регістрова інструкція або команда вводу/виводу, процесор виконує її негайно.

Виконання інструкції ред.

Крок 4 є етапом виконання функції, яку задає інструкція. Якщо команда кодує арифметичну чи логічну дію, використовується АЛП. Це єдиний етап циклу інструкції, протягом якого виконується «корисна» з точки зору кінцевого користувача робота. Все інше — накладні витрати, потрібні, для забезпечення функціонування ЦП.

Див. також ред.