Цикл инструкций (также известный как цикл выборки-декодирования-выполнения или просто цикл выборки-выполнения ) — это цикл, который центральный процессор (ЦП) выполняет с момента загрузки до выключения компьютера для обработки инструкций. Он состоит из трех основных этапов: этап выборки, этап декодирования и этап выполнения.
В более простых процессорах цикл инструкций выполняется последовательно, каждая инструкция обрабатывается до того, как начнется следующая. В большинстве современных процессоров циклы инструкций выполняются одновременно , а часто и параллельно , через конвейер инструкций : следующая инструкция начинает обрабатываться до того, как завершится предыдущая, что возможно, поскольку цикл разбит на отдельные шаги. [1]
Счетчик программ (PC) — это регистр, который хранит адрес памяти следующей инструкции, которая должна быть выполнена. После каждого копирования инструкции в регистр адреса памяти (MAR) PC может либо увеличить указатель на следующую последовательность инструкций, либо перейти к указанному указателю, либо выполнить условный переход к указанному указателю. [2] Кроме того, во время остановки ЦП PC удерживает выполняемую инструкцию до тех пор, пока не будет получено внешнее прерывание или сигнал сброса.
MAR отвечает за хранение адреса, описывающего местоположение инструкции. После инициирования сигнала чтения инструкция в адресе из MAR считывается и помещается в регистр данных памяти (MDR). Этот компонент в целом функционирует как адресный буфер для указания местоположений в памяти.
MDR отвечает за временное хранение инструкций, считанных с адреса в MAR. Он действует как двусторонний регистр в цикле инструкций, поскольку может передавать вывод из памяти в ЦП или вывод из ЦП в память.
Текущий регистр инструкций (CIR, хотя иногда его называют регистром инструкций, IR) — это место, где временно хранится инструкция, чтобы ЦП мог ее декодировать и выдавать правильные сигналы управления для этапа выполнения.
Блок управления (CU) декодирует инструкцию в текущем регистре инструкций (CIR). Затем CU посылает сигналы другим компонентам внутри ЦП, таким как арифметико-логическое устройство (ALU), или обратно в память для выборки операндов, или в блок с плавающей точкой (FPU). ALU выполняет арифметические операции на основе определенных кодов операций в инструкции. Например, в архитектуре RISC-V существуют коды операций funct3 и funct7, чтобы различать, является ли инструкция логической или арифметической операцией.
Процессор каждого компьютера может иметь разные циклы, основанные на разных наборах инструкций, но они будут похожи на следующий цикл:
Кроме того, на большинстве процессоров могут возникать прерывания . Это заставит ЦП перейти к процедуре обслуживания прерываний, выполнить ее, а затем вернуться к инструкции, которую он должен был выполнить. В некоторых случаях инструкция может быть прервана в середине, но это не даст никакого эффекта, и инструкция будет выполнена повторно после возврата из прерывания.
Первый цикл инструкций начинается сразу после подачи питания на систему, с начальным значением PC, которое предопределено архитектурой системы (например, в процессорах Intel IA-32 предопределенное значение PC равно , 0xfffffff0
тогда как для процессоров архитектуры ARM это 0x00000000
.) Обычно этот адрес указывает на набор инструкций в постоянном запоминающем устройстве (ПЗУ), который начинает процесс загрузки (или запуска ) операционной системы . [4]
Этап выборки одинаков для каждой инструкции:
Процесс декодирования позволяет процессору определить, какая инструкция должна быть выполнена, чтобы ЦП мог определить, сколько операндов ему нужно извлечь для выполнения инструкции. Код операции, извлеченный из памяти, декодируется для следующих шагов и перемещается в соответствующие регистры. Декодирование обычно выполняется двоичными декодерами в CU ЦП.
Существуют различные способы, с помощью которых архитектура может определять адрес для операндов, обычно называемые режимами адресации .
Вот несколько распространенных способов узнать фактический адрес:
CPU отправляет декодированную инструкцию (декодированную из CU) в виде набора управляющих сигналов соответствующим компонентам. В зависимости от типа инструкции может произойти следующее:
Это единственный этап цикла инструкций, который полезен с точки зрения конечного пользователя. Это единственный этап цикла инструкций, который полезен с точки зрения конечного пользователя. Все остальное — накладные расходы, необходимые для выполнения шага.
{{cite web}}
: CS1 maint: url-status (link)