Цикл виконання інструкцій
Ця стаття не містить посилань на джерела. (січень 2018) |
Цикл команд (іноді називається циклом вибірка-декодування-виконання) є основним операційним процесом комп'ютера. Це процес, за допомогою якого комп'ютер отримує команду програми з пам'яті, визначає, які дії виконуються командою, і виконує ці дії. Цей цикл повторюється безперервно центральним процесором комп'ютера (ЦП), від початкового завантаження, і до вимикання машини.
У простих процесорах команди у циклі виконуються послідовно, кожна команда обробляється до початку наступної. У більшості сучасних процесорів цикли команд, натомість виконуються одночасно, і часто паралельно, з використанням конвеєра інструкцій: наступна команда починає оброблятися до завершення попередньої інструкції. Таке виконання уможливлене розбиттям циклу на окремі етапи.
- Лічильник команд (також відомий як PC, «program counter»)
- Регістр процесора, що вказує на адресу інструкції, що виконуватиметься наступною
- Регістр адресації пам'яті[en] (MAR)
- Зберігає адресу блоку пам'яті для читання або запису.
- Регістр даних пам'яті[en] (MDR)
- Двосторонній регістр, який зберігає дані, завантажені з пам'яті і готові до обробки процесором, або дані, які буде записано до пам'яті. (Він також відомий як буферний регістр пам'яті, MBR).)
- Регістр команд (IR)
- У цьому регістрі зберігається команда, щойно отримана з пам'яті.
- Пристрій керування процесором (CU, Control Unit)
- Здійснює декодування інструкції, що знаходиться в IR. Під час декодування вибираються ресурсіи машини (наприклад, регістри джерел даних і результату) і арифметична чи логічна операція, а також координується активація цих ресурсів.
- Арифметико-логічний пристрій (ALU)
- Виконує математичні та логічні операції.
- Математичний співпроцесор (FPU)
- Виконання операцій з рухомою комою.
Процесор кожного комп'ютера може мати різні цикли на основі різних наборів команд, але він буде аналогічним наступному:
- Вибірка інструкції: Команда зчитується з адреси пам'яті, яка в даний час зберігається в лічильнику інструкцій (PC), і зберігається в регістрі команд (IR). Після завершення операції вибірки PC вказує на адресу інструкції, яка буде зчитуватися в наступному циклі.
- Декодування інструкції: На цьому етапі кодована інструкція, присутня в регістрі команд (IR), інтерпретується за допомогою декодера.
- Читання результативної адреси: У разі інструкції пам'яті (прямої або непрямої) фаза виконання запускається наступним тактовим імпульсом. Якщо команда має непряму адресу, результативна адреса зчитується з основної пам'яті, як і дані, що підлягають обробці (вони записуються в регістри даних). У випадку прямої інструкції, на даному етапі робиться нічого. Якщо це інструкція вводу-виводу, або проста регістрова інструкція, вона виконується негайно.
- Виконання команди: Блок керування процесором CPU передає декодовану інформацію у вигляді послідовності сигналів керування до відповідних функціональних блоків процесора для виконання потрібних дій (таких як: читання значень з регістрів, передавання їх до АЛП для виконання математичних або логічних обчислень, і запис результату назад в регістр). Якщо АЛП задіяний, він може встановлювати ознаки (такі, як переповнення), що також використовуються блоком керування. Результат, згенерований операцією, зберігається в оперативній пам'яті, або надсилається на пристрій виведення. Виходячи з даних, отриманих від АЛП, лічильник команд може бути оновлений іншою адресою, з якої буде зчитуватись наступна інструкція.
Потім цикл повторюється.
Ініціалізація процесора починається після подачі на нього напруги живлення. Найперше значення лічильника команд індивідуальне для кожної архітектури ЕОМ (наприклад, процесори архітектури IA-32 починають виконання з адреси 0xfffffff0
). Зазвичай перші команди виконуються з області BIOS чи firmware, що записані у постійній пам'яті. BIOS ініціалізує апаратуру машини і переходить до завантаження операційної системи.
Крок 1 циклу — вибірка інструкції. Він є однаковим для всіх команд:
- ЦП посилає лічильник команд PC в MAR і посилає команду читання на шину керування
- У відповідь на команду читання (з адресою, рівною PC), пам'ять виставляє затребувані дані на шину даних
- Процесор копіює дані з шини даних в свій MDR
- Процесор копіює дані з MDR в регістр команд (IR)
- PC збільшується так, що він вказує на наступну команду в пам'яті. На цьому етапі виконується підготовка ЦП до наступного циклу.
Крок 2 з циклу команд називається циклом розшифровки. Процес декодування дозволяє процесору визначити, скільки операндів потрібно зчитати з пам'яті, щоб виконати команду. Код операції, зчитаний з пам'яті, декодується для подальших кроків і переміщується у відповідні регістри. Декодування здійснюється блоком керування.
Крок 3 оцінює, що це за операція. У випадку операції з пам'яттю перевіряється, чи є вона прямою або непрямою:
- Пряма інструкція пам'яті - Нічого не робиться.
- Непряма інструкція пам'яті - результативна адреса зчитується з пам'яті.
Якщо це проста регістрова інструкція або команда вводу/виводу, процесор виконує її негайно.
Крок 4 є етапом виконання функції, яку задає інструкція. Якщо команда кодує арифметичну чи логічну дію, використовується АЛП. Це єдиний етап циклу інструкції, протягом якого виконується «корисна» з точки зору кінцевого користувача робота. Все інше — накладні витрати, потрібні, для забезпечення функціонування ЦП.
Це незавершена стаття про апаратне забезпечення. Ви можете допомогти проєкту, виправивши або дописавши її. |