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