Цикл команд (также известный как цикл выборки – декодирования – выполнения или просто цикл выборки-выполнения ) - это цикл, который центральный процессор (CPU) следует от загрузки до тех пор, пока компьютер не выключится r для обработки инструкций. Он состоит из трех основных этапов: этапа выборки, этапа декодирования и этапа выполнения.
Это простая диаграмма, иллюстрирующая отдельные этапы цикла выборки-декодирования-выполнения.В более простых ЦП цикл команд выполняется последовательно, каждая команда обрабатывается перед запуском следующей. В большинстве современных ЦП циклы команд вместо этого выполняются одновременно, и часто в параллельном, через конвейер команд : следующая инструкция начинает обрабатываться раньше, чем предыдущая. инструкция завершена, что возможно, потому что цикл разбит на отдельные шаги.
Программный счетчик (ПК) - это специальный регистр, в котором хранится адрес памяти следующей инструкции, которая должна быть выполнена. На этапе выборки адрес, хранящийся в ПК, копируется в регистр адреса памяти (MAR), а затем ПК увеличивается на единицу, чтобы «указать» на адрес памяти следующей инструкции, которая должна быть выполнена.. Затем ЦП принимает инструкцию по адресу памяти, описанному MAR, и копирует ее в регистр данных памяти (MDR). MDR также действует как двусторонний регистр, в котором хранятся данные, полученные из памяти, или данные, ожидающие сохранения в памяти (из-за этого он также известен как буферный регистр памяти (MBR)). В конце концов, инструкция в MDR копируется в регистр текущих инструкций (CIR), который действует как временное основание для удержания инструкции, которая только что была извлечена из памяти.
На этапе декодирования блок управления (CU) декодирует инструкцию в CIR. Затем CU отправляет сигналы другим компонентам в CPU, таким как арифметико-логический блок (ALU) и блок с плавающей запятой (FPU). ALU выполняет арифметические операции, такие как сложение и вычитание, а также умножение посредством повторного сложения и деление посредством повторного вычитания. Он также выполняет логические операции, такие как И, OR, НЕ, а также двоичные сдвиги. FPU зарезервирован для выполнения операций с плавающей точкой.
ЦП каждого компьютера может иметь разные циклы на основе разных наборов инструкций, но будет аналогичен следующему циклу:
Цикл начинается, как только будет подано питание в систему с начальным значением ПК, которое предопределено архитектурой системы (например, в процессорах Intel IA-32 предопределенное значение ПК равно 0xfffffff0
). Обычно этот адрес указывает на набор инструкций в постоянной памяти (ПЗУ), которая начинает процесс загрузки (или загрузки ) операционной системы.
Этап выборки одинаков для каждой инструкции:
Блок управления выбирает адрес инструкции из блока памяти .
Процесс декодирования позволяет ЦП определять, какая инструкция должна выполняться так, чтобы ЦП мог определить, сколько операндов ему нужно выбрать для выполнения инструкции. Код операции, извлеченный из памяти, декодируется для следующих шагов и перемещается в соответствующие регистры. Декодирование осуществляется блоком управления .
На этом этапе оценивается, какой тип операции должен быть выполнен. Если это операция с памятью, компьютер проверяет, прямая это или косвенная операция с памятью:
Если это инструкция ввода / вывода или регистрации, компьютер проверяет ее тип и выполняет инструкцию.
Выполняется функция инструкции. Если инструкция включает арифметические или логические операции, используется АЛУ. Это единственный этап цикла обучения, который полезен с точки зрения конечного пользователя. Все остальное требует дополнительных затрат для выполнения шага выполнения.