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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Схема циклу команд

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

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

Компоненти[ред.ред. код]

Програмний лічильник (PC)
Інкрементація лічильника, який відстежує адреси пам'яті інструкції, яка повинна бути виконана наступною або, іншими словами, має адрес інструкції, що повинна бути виконана наступною.
Регістр адресації пам'яті[en] (MAR)
Зберігає адрес блоку пам'яті для читання або запису.
Регістр даних пам'яті[en] (MDR)
Двосторонній регістр, який зберігає дані сгружени з пам'яті (і готові до обробки процесором) або дані, які чекають на збереження в пам'яті. (Він також відомий як буферний регістр пам'яті (MBR).)
Інструкція регістра (IR)
Тимчасове сховище для зберігання команди, яка тільки що була вилучена з пам'яті.
Блок управління (CU)
Декодування інструкції програми в RК через вибирання ресурсів машини, таких як регістр джерела даних і конкретна арифметична операція, а також координує активацію цих ресурсів.
Арифметико-логічний пристрій (ALU)
Виконує математичні та логічні операції.
Блок з плаваючою точкою (FPU)
Виконання операцій з плаваючою крапкою.

Кроки[ред.ред. код]

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

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

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

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

Цикл починається, як тільки сила застосовується до системи, з початковим значенням ПК, який попередньо задається архітектурою системи (наприклад, в процесорі Intel IA-32 задане значення ПК 0xfffffff0). Як правило, ця адреса вказує на набір інструкцій у пам'яті тільки для читання (ROM), який починає процес завантаження (або завантаження) операційної системи. [1]

Отримання інструкції[ред.ред. код]

Крок 1 циклу інструкції - цикл вибірки, який є однаковим для кожної команди:

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

Блок управління вибирає адресу команди з блоку пам'яті.

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

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

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

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

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

Якщо це I/O або інструкція регістру - комп'ютер перевіряє його вид і виконує інструкцію.

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

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

Дивіться також[ред.ред. код]

Посилання[ред.ред. код]

  1. Bosky Agarwal (2004). Instruction Fetch Execute Cycle. Архів оригіналу за June 11, 2009.  Проігноровано невідомий параметр |dead-url= (довідка); Проігноровано невідомий параметр |access-date= (можливо, |accessdate=?) (довідка)
CC-logo.svg

Ця стаття містить текст, перекладений зі статті Будь ласка, вкажіть назву статті англійської Вікіпедії.

Icono de traducción.svg