Как работает процессор: цикл выборки и исполнения команд

Из чего состоит процессор, что такое хранимая программа и как устроен цикл «выборка — расшифровка — исполнение». Знакомимся с учебным процессором М-8 и по шагам выполняем на нём программу из четырёх команд.

Содержание

Процессор — это схема, которая без конца повторяет три действия: берёт из памяти очередную команду, выясняет, чего она требует, и выполняет её. Сами команды очень простые — «взять число», «прибавить», «записать». Зато выполняются они миллиарды раз в секунду, и из этого повторения складывается всё, что делает компьютер.

Из чего собран процессор

Новых деталей почти не понадобится: главное Вы уже видели в предыдущей части.

  • АЛУ — арифметико-логическое устройство. Оно складывает и вычитает числа, а флагами сообщает, каким получился результат. Мы собрали его в уроке Вычитание, сравнение и АЛУ.
  • Регистры — несколько ячеек внутри самого процессора. В них лежит то, с чем он работает прямо сейчас. Их устройство разобрано в уроке Регистры и оперативная память.
  • Счётчик команд — регистр, в котором записан адрес следующей команды.
  • Устройство управления — схема, которая читает команду и решает, какие блоки включить: откуда взять число, что делать АЛУ, куда отправить результат.

Представьте, что Вы собираете модель из конструктора по инструкции с пронумерованными шагами. Вы держите палец на номере шага, читаете его, понимаете, какие детали нужны, соединяете их и переводите палец на следующий номер. Палец на странице — это счётчик команд. Голова, которая разбирается в картинке, — устройство управления. Руки — АЛУ.

Программа лежит в той же памяти, что и числа

Откуда процессор берёт команды? Оттуда же, откуда и числа, — из памяти. Каждая команда записана числом и занимает ячейку с адресом. Последовательность таких команд называют программой, а сам подход — принципом хранимой программы.

Так было не всегда. Одну из первых электронных вычислительных машин, ЭНИАК, под каждую новую задачу перенастраивали вручную: заново соединяли блоки кабелями. На это могло уйти до двух дней. Хранимая программа превращает перенастройку в запись новых чисел в память.

Принцип связывают с именем математика Джона фон Неймана: в 1945 году он описал его в отчёте о проекте машины EDVAC. Идеи отчёта он обсуждал с создателями ЭНИАКа Джоном Мокли и Джоном Эккертом и другими коллегами, но устройство компьютера с общей памятью для команд и данных называют архитектурой фон Неймана.

Знакомьтесь: процессор М-8

Настоящий процессор слишком сложен, чтобы разобрать его целиком. Поэтому для этого учебника мы придумали свой — очень маленький, но работающий по тем же правилам. Назовём его М-8: все числа в нём восьмибитные.

  • Память — 16 ячеек с адресами от 0 до 15, в каждой 8 битов. В ней лежат и программа, и данные.
  • Аккумулятор A — единственный рабочий регистр на 8 битов. Все вычисления идут через него.
  • Счётчик команд (СК) — адрес следующей команды. Адресов всего 16, поэтому счётчику хватает 4 битов.
  • Регистр команды — сюда копируется команда, которая выполняется сейчас.
  • Флаг Z («ноль») — один бит. Он равен 1, когда в аккумуляторе ноль, и 0 во всех остальных случаях.
Слева память из 16 ячеек с командами и числами. Справа процессор: счётчик команд посылает в память адрес, команда попадает в регистр команды и устройство управления, числа идут в АЛУ и аккумулятор и возвращаются в память
Рисунок 1 — Процессор М-8 и его память. Чёрные стрелки — путь команды, бирюзовые — путь чисел, пунктир — сигналы управления

Команда М-8 занимает одну ячейку. Её восемь битов поделены пополам: старшие четыре — код операции, то есть что нужно сделать, младшие четыре — адрес ячейки, с которой это нужно сделать.

TXT
0001 1100
код  адрес     код 0001 — «скопировать ячейку в A», адрес 1100₂ = 12

Пока хватит четырёх команд. Их названия — сокращённые английские слова: так принято у программистов.

КодЗаписьЧто делает
0001LOAD адрескопирует число из ячейки в A
0010ADD адресприбавляет к A число из ячейки
0100STORE адресзаписывает число из A в ячейку
0000HALTостанавливает процессор

Арифметика в М-8 восьмибитная: если сумма не помещается в 8 битов, перенос из старшего разряда пропадает — как в уроке Целые числа в памяти.

Цикл: выборка, расшифровка, исполнение

Над каждой командой процессор работает в три приёма.

  1. Выборка. Процессор читает ячейку, адрес которой записан в СК, и копирует её содержимое в регистр команды. Сразу после этого СК увеличивается на 1 и указывает уже на следующую команду.
  2. Расшифровка. Устройство управления делит команду на код операции и адрес и по коду определяет, какие блоки понадобятся.
  3. Исполнение. Нужные блоки срабатывают: память выдаёт или принимает число, АЛУ считает, результат попадает в аккумулятор.

Затем всё повторяется с новым значением СК. Это и есть цикл выборки и исполнения. Процессор не видит программу целиком и не знает, чем она закончится: в каждый момент он занят одной командой.

Три шага по кругу: выборка, расшифровка, исполнение, после чего стрелка возвращается к выборке
Рисунок 2 — Цикл процессора: после исполнения он берёт следующую команду

Программа из четырёх команд

Пусть у героя игры было 37 монет, а на уровне он подобрал ещё 15. Заставим М-8 посчитать, сколько монет стало. Числа положим в ячейки 12 и 13, а сумму попросим записать в ячейку 14.

TXT
адрес  содержимое  смысл
  0    0001 1100   LOAD 12
  1    0010 1101   ADD 13
  2    0100 1110   STORE 14
  3    0000 0000   HALT
 ...
 12    0010 0101   число 37
 13    0000 1111   число 15
 14    0000 0000   место для суммы

Перед запуском в СК и в A нули. Проследим за процессором шаг за шагом. В столбце «СК» — адрес, с которого взята команда.

ШагСККомандаЧто произошлоAZ
до запуска0——01
10LOAD 12число 37 скопировано в A370
21ADD 13АЛУ сложило 37 и 15520
32STORE 1452 записано в ячейку 14520
43HALTпроцессор остановился520

Такую таблицу называют трассировкой: в ней видно состояние процессора после каждой команды. После остановки в ячейке 14 лежит 0011 0100 — число 52. До запуска флаг Z равен 1, потому что в A ноль; первая же команда кладёт в A ненулевое число, и флаг сбрасывается.

Команда LOAD не забирает число из памяти, а копирует его: в ячейке 12 по-прежнему лежит 37.

Тактовая частота

Что заставляет процессор переходить от шага к шагу? Тактовый сигнал из урока Триггер: по нему регистры запоминают новые значения. Каждый такт продвигает работу на один шаг. Для М-8 договоримся так: один такт на выборку, один на расшифровку, один на исполнение. Тогда программа из четырёх команд займёт 12 тактов.

Число тактов в секунду — это тактовая частота. У современных процессоров она составляет несколько гигагерц, то есть несколько миллиардов тактов в секунду.

Частые вопросы

Процессор понимает, что считает монеты?

Нет. Для него 37 и 15 — просто восьмёрки битов. Смысл числам придаёт человек, который написал программу.

Что будет, если счётчик команд дойдёт до ячейки с числом?

Процессор выполнит это число как команду: отличать одно от другого он не умеет. Поэтому программу заканчивают командой HALT, а данные кладут туда, куда счётчик не доберётся.

Почему у М-8 всего 16 ячеек памяти?

На адрес в команде отведено 4 бита, а ими можно записать 2⁴ = 16 разных адресов. У настоящих процессоров адреса гораздо длиннее, и ячеек им доступны миллиарды.

Коротко

  • Процессор состоит из АЛУ, регистров, счётчика команд и устройства управления.
  • Программа — это команды, записанные числами в той же памяти, что и данные.
  • Счётчик команд хранит адрес следующей команды и после выборки увеличивается на 1.
  • Цикл процессора: выборка команды, расшифровка, исполнение — и снова выборка.
  • Команда М-8 — это 8 битов: 4 бита кода операции и 4 бита адреса.
  • Тактовая частота — число тактов в секунду; каждый такт продвигает цикл на один шаг.

Пока у М-8 всего четыре команды, и мы записывали их то словами, то битами. Полный набор команд и способ превратить программу в столбец чисел — в уроке Машинный код и ассемблер.

Использованная литература

  1. Архитектура фон Неймана — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Архитектура_фон_Неймана (дата обращения: 09.10.2026).
  2. ЭНИАК — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/ЭНИАК (дата обращения: 09.10.2026).
  3. Центральный процессор — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Центральный_процессор (дата обращения: 09.10.2026).
  4. Тактовая частота — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Тактовая_частота (дата обращения: 09.10.2026).