Введение
Основной цикл работы компьютера
Цикл инструкций (также известный как цикл выборки-декодирования-исполнения, или просто цикл выборки-исполнения) — это цикл, который центральный процессор (ЦП) проходит от момента загрузки до выключения компьютера для обработки инструкций. Он состоит из трех основных этапов: этапа выборки, этапа декодирования и этапа исполнения. В более простых ЦП цикл инструкций выполняется последовательно, каждая инструкция обрабатывается перед началом следующей. В большинстве современных ЦП циклы инструкций выполняются одновременно и часто параллельно посредством конвейера инструкций: следующая инструкция начинает обрабатываться до завершения предыдущей, что становится возможным благодаря разделению цикла на отдельные шаги.
Роль компонентов
Счетчик программ (PC) — это специальный регистр, содержащий адрес памяти следующей инструкции для выполнения. На этапе выборки адрес, хранящийся в PC, копируется в регистр адреса памяти (MAR), после чего PC увеличивается, чтобы указывать на адрес памяти следующей инструкции. Затем процессор извлекает инструкцию по адресу, указанному в MAR, и копирует её в регистр данных памяти (MDR). MDR также является двунаправленным регистром, который хранит данные, полученные из памяти, или данные, ожидающие записи в память (поэтому он также известен как регистр буфера памяти (MBR)). В конечном итоге инструкция из MDR копируется в регистр текущей инструкции (CIR), который служит временным хранилищем для только что извлеченной из памяти инструкции. На этапе декодирования блок управления (CU) декодирует инструкцию в CIR. Затем CU отправляет сигналы другим компонентам процессора, таким как арифметико-логическое устройство (ALU) и устройство обработки чисел с плавающей точкой (FPU). ALU выполняет арифметические операции, такие как сложение и вычитание, а также умножение посредством многократного сложения и деление посредством многократного вычитания. Он также выполняет логические операции, такие как И, ИЛИ, НЕ и бинарные сдвиги. FPU предназначен для выполнения операций с числами с плавающей точкой.
Введение
Цикл начинается сразу после подачи питания к системе, с начальным значением счётчика команд (PC), предопределённым архитектурой системы (например, в процессорах Intel IA-32 предопределённое значение счётчика команд равно 0xfffffff0). Обычно этот адрес указывает на набор инструкций в постоянном запоминающем устройстве (ПЗУ), который запускает процесс загрузки операционной системы.
Этап декодирования
Процесс декодирования позволяет процессору определить, какую инструкцию необходимо выполнить, чтобы ЦП мог понять, сколько операндов требуется для её выполнения. Операционный код, полученный из памяти, декодируется для последующих шагов и перемещается в соответствующие регистры. Декодирование обычно выполняется бинарными декодерами в блоке управления ЦП.
Читание фактического адреса
На этом этапе определяется тип выполняемой операции. Если это операция с памятью, компьютер проверяет, является ли она прямой или косвенной:
Прямая операция с памятью – Ничего не выполняется. Косвенная операция с памятью – Эффективный адрес считывается из памяти. Если это инструкция ввода-вывода или инструкция работы с регистром, компьютер определяет её тип и выполняет инструкцию.
Direct memory operation – Nothing is done. Indirect memory operation – The effective address is read from memory. If it is an I/O or register instruction, the computer checks its type and executes the instruction.
Этап выполнения
Процессор отправляет декодированную инструкцию в виде набора управляющих сигналов соответствующим компонентам компьютера. Если инструкция включает арифметические или логические операции, используется АЛУ. Это единственный этап цикла выполнения инструкции, имеющий значение для конечного пользователя. Все остальное – служебные накладные расходы, необходимые для осуществления этого этапа.