Основы ЭВМ
Теория: Цикл команд
Когда процессор выполняет программу, он следует по циклу команд (Instruction Cycle). В этом цикле четыре шага.
- Сначала идёт Fetch — выборка инструкции из памяти по адресу, который хранится в счётчике команд (Program Counter, PC). Команда попадает в регистр инструкций (Instruction Register, IR).
- Потом идёт Decode — расшифровка. Блок управления (Control Unit, CU) понимает, какие действия и данные нужны.
- Далее наступает Execute — арифметико-логическое устройство (ALU) или другой блок процессора выполняет команду.
- Завершает цикл шаг Writeback, когда результат записывается в регистр или память (RAM).
Работа всех этих шагов идёт в ритме тактового сигнала (Clock Signal). Такт — это импульс. Частота (Clock Frequency) показывает, сколько тактов в секунду выдаёт процессор. Например, 3 GHz — это три миллиарда тактов. Но одна инструкция тратит не один, а несколько тактов, потому что проходит через все стадии цикла. Простое сложение в АЛУ может занять 1–2 такта, а обращение к памяти — десятки.
АЛУ (арифметико-логическое устройство, от англ. Arithmetic Logic Unit) — это часть процессора, которая выполняет все вычисления. Через него проходят операции сложения, вычитания, сравнения чисел и проверки условий. Можно сказать, что АЛУ — это «мозг внутри мозга» процессора, место, где происходят реальные вычисления с данными.
Пример на Python:
На вид это одна строчка в цикле. Но процессор делает много шагов: загружает i, сравнивает его с 5, проверяет условие цикла, достаёт sum, складывает два значения, записывает результат обратно, увеличивает i и возвращается к началу. Каждое из этих действий превращается в отдельные инструкции и каждая проходит через Fetch, Decode, Execute, Writeback.
Современные процессоры ускоряют работу с помощью конвейера (Pipelining). Каждая инструкция разбивается на несколько этапов: загрузка, декодирование, выполнение, запись результата. Эти этапы выполняются одновременно для разных инструкций — пока одна выполняется, другая уже декодируется, а следующая загружается. Это экономит такты. Если процессор может выполнять несколько инструкций за такт, это называется Superscalar Architecture.
Для оценки скорости используют три величины. Частота показывает количество тактов. CPI (Cycles Per Instruction) — среднее число тактов на инструкцию. IPC (Instructions Per Cycle) — сколько инструкций выполняется за один такт. Например, при 3 GHz, CPI = 2 и IPC = 4 процессор делает около 6 миллиардов инструкций в секунду.
Есть и задержки. Если процессору нужны данные из памяти, он может простоять несколько тактов — это Pipeline Stall. Память работает медленнее процессора, поэтому ожидание данных останавливает конвейер. При условных переходах процессор пытается угадать путь выполнения (Branch Prediction). Ошибка в предсказании приводит к откату команд. Большую роль играет кэш (Cache). Если данные есть в кэше (Cache Hit), они подгружаются быстро. Если данных нет (Cache Miss), процессор ждёт RAM, и это десятки лишних тактов.
Два процессора с одинаковой частотой могут работать по-разному: один быстрее благодаря большему IPC и кэшу, другой медленнее, хотя частота выше. Виртуальные машины делят физические такты между собой. Часто нагрузка связана с ожиданием памяти или диска. Серверные процессоры обычно имеют ниже частоту, но больше ядер и крупный кэш, чтобы выдерживать постоянную нагрузку и экономить энергию.

