Цикл инструкций

Базовый цикл инструкций в компьютере

Цикл инструкций (также известный как цикл выборки-декодирования-выполнения или просто цикл выборки-выполнения ) — это цикл, который центральный процессор (ЦП) выполняет с момента загрузки до выключения компьютера для обработки инструкций. Он состоит из трех основных этапов: этап выборки, этап декодирования и этап выполнения.

Это простая диаграмма, иллюстрирующая отдельные этапы цикла выборка-декодирование-выполнение. Условные обозначения:

В более простых процессорах цикл инструкций выполняется последовательно, каждая инструкция обрабатывается до того, как начнется следующая. В большинстве современных процессоров циклы инструкций выполняются одновременно , а часто и параллельно , через конвейер инструкций : следующая инструкция начинает обрабатываться до того, как завершится предыдущая, что возможно, поскольку цикл разбит на отдельные шаги. [1]

Роль компонентов

Счетчик программ

Счетчик программ (PC) — это регистр, который хранит адрес памяти следующей инструкции, которая должна быть выполнена. После каждого копирования инструкции в регистр адреса памяти (MAR) PC может либо увеличить указатель на следующую последовательность инструкций, либо перейти к указанному указателю, либо выполнить условный переход к указанному указателю. [2] Кроме того, во время остановки ЦП PC удерживает выполняемую инструкцию до тех пор, пока не будет получено внешнее прерывание или сигнал сброса.

Регистр адреса памяти

MAR отвечает за хранение адреса, описывающего местоположение инструкции. После инициирования сигнала чтения инструкция в адресе из MAR считывается и помещается в регистр данных памяти (MDR). Этот компонент в целом функционирует как адресный буфер для указания местоположений в памяти.

Регистр данных памяти

MDR отвечает за временное хранение инструкций, считанных с адреса в MAR. Он действует как двусторонний регистр в цикле инструкций, поскольку может передавать вывод из памяти в ЦП или вывод из ЦП в память.

Регистр текущих инструкций

Текущий регистр инструкций (CIR, хотя иногда его называют регистром инструкций, IR) — это место, где временно хранится инструкция, чтобы ЦП мог ее декодировать и выдавать правильные сигналы управления для этапа выполнения.

Блок управления

Блок управления (CU) декодирует инструкцию в текущем регистре инструкций (CIR). Затем CU посылает сигналы другим компонентам внутри ЦП, таким как арифметико-логическое устройство (ALU), или обратно в память для выборки операндов, или в блок с плавающей точкой (FPU). ALU выполняет арифметические операции на основе определенных кодов операций в инструкции. Например, в архитектуре RISC-V существуют коды операций funct3 и funct7, чтобы различать, является ли инструкция логической или арифметической операцией.

Краткое изложение этапов[3]

Процессор каждого компьютера может иметь разные циклы, основанные на разных наборах инструкций, но они будут похожи на следующий цикл:

  1. Этап выборки : Этап выборки инициирует цикл инструкций, извлекая следующую инструкцию из памяти. На этом этапе ПК опрашивается на предмет адреса инструкции в памяти (используя MAR). Затем инструкция сохраняется из MBR в CIR. В конце этого этапа ПК указывает на следующую инструкцию, которая будет прочитана в следующем цикле.
  2. Стадия декодирования : на этой стадии закодированная инструкция в CIR интерпретируется CU. Он определяет, какие операции и дополнительные операнды требуются для выполнения, и отправляет соответствующие сигналы соответствующим компонентам в CPU, таким как ALU или FPU, для подготовки к выполнению инструкции.
  3. Стадия выполнения : Это стадия, на которой фактическая операция, указанная инструкцией, выполняется соответствующими функциональными блоками ЦП. Логические или арифметические операции могут выполняться АЛУ, данные могут считываться из памяти или записываться в нее, а результаты сохраняются в регистрах или памяти, как того требует инструкция. На основе выходных данных АЛУ ПК может выполнять разветвление.
  4. Повторить цикл

Кроме того, на большинстве процессоров могут возникать прерывания . Это заставит ЦП перейти к процедуре обслуживания прерываний, выполнить ее, а затем вернуться к инструкции, которую он должен был выполнить. В некоторых случаях инструкция может быть прервана в середине, но это не даст никакого эффекта, и инструкция будет выполнена повторно после возврата из прерывания.

Инициация

Первый цикл инструкций начинается сразу после подачи питания на систему, с начальным значением PC, которое предопределено архитектурой системы (например, в процессорах Intel IA-32 предопределенное значение PC равно , 0xfffffff0тогда как для процессоров архитектуры ARM это 0x00000000.) Обычно этот адрес указывает на набор инструкций в постоянном запоминающем устройстве (ПЗУ), который начинает процесс загрузки (или запуска ) операционной системы . [4]

Этап получения

Этап выборки одинаков для каждой инструкции:

  1. ПК содержит адрес инструкции, которую необходимо извлечь.
  2. Этот адрес копируется в MAR, где он используется для опроса местоположения инструкции в памяти.
  3. CU посылает сигнал на шину управления для чтения памяти по адресу в MAR - считанные данные помещаются в шину данных . [5]
  4. Данные передаются в ЦП по шине данных, где загружаются в MDR — на этом этапе ПК увеличивается на единицу.
  5. Содержимое (инструкция, которая должна быть выполнена) MDR копируется в CIR (где можно декодировать код операции инструкции и операнд данных).

Стадия декодирования[6]

Процесс декодирования позволяет процессору определить, какая инструкция должна быть выполнена, чтобы ЦП мог определить, сколько операндов ему нужно извлечь для выполнения инструкции. Код операции, извлеченный из памяти, декодируется для следующих шагов и перемещается в соответствующие регистры. Декодирование обычно выполняется двоичными декодерами в CU ЦП.

Определение эффективных адресов[7]

Существуют различные способы, с помощью которых архитектура может определять адрес для операндов, обычно называемые режимами адресации .

Вот несколько распространенных способов узнать фактический адрес:

  • Прямая адресация - адрес инструкции содержит эффективный адрес
  • Косвенная адресация — адрес инструкции указывает адрес ячейки памяти, содержащей эффективный адрес.
  • Адресация относительно ПК — эффективный адрес вычисляется на основе адреса относительно ПК.
  • Стековая адресация — операнд находится наверху стека

Стадия выполнения

CPU отправляет декодированную инструкцию (декодированную из CU) в виде набора управляющих сигналов соответствующим компонентам. В зависимости от типа инструкции может произойти следующее:

  • Арифметические/логические операции могут выполняться АЛУ (например, ADD, SUB, AND, OR) [8]
  • Могут выполняться операции чтения/записи из памяти (например, загрузка/сохранение байтов)
  • Могут быть выполнены изменения потока управления (например, переходы или ветвления) - на этом этапе, если произойдет переход, вместо увеличения PC до соседнего указателя, он перейдет к указателю, указанному в инструкции.

Это единственный этап цикла инструкций, который полезен с точки зрения конечного пользователя. Это единственный этап цикла инструкций, который полезен с точки зрения конечного пользователя. Все остальное — накладные расходы, необходимые для выполнения шага.

Смотрите также

Ссылки

  1. ^ Кристал Чен, Грег Новик и Кирк Шимано (2000). «Конвейеризация» . Получено 26.06.2019 .
  2. ^ Dodge, NB (2017). "The Program Counter" (PDF) . personal.utdallas.edu (Слайды) . Получено 2025-01-03 .{{cite web}}: CS1 maint: url-status (link)
  3. ^ Синхронизация и цикл инструкций (PDF) .
  4. ^ Bosky Agarwal (2004). "Instruction Fetch Execute Cycle" (PDF) . Архивировано из оригинала (PDF) 11 июня 2009 г. . Получено 2012-10-14 .
  5. ^ Арьял, Эр. Хари. Центральный процессор (PDF) .
  6. ^ Работа блока управления (PDF) .
  7. ^ Наборы инструкций: режимы и форматы адресации (PDF) .
  8. ^ АЛУ (Арифметико-логическое устройство) (PDF) .
Retrieved from "https://en.wikipedia.org/w/index.php?title=Instruction_cycle&oldid=1267341697"