Найти в Дзене
IT Еxtra

Как работает компьютер? Часть 34. Счётчик команд — шаг за шагом

Предыдущий урок: Как работает компьютер? Часть 33. Дешифратор — Активируем нужный выход Мы уже знаем, что процессор может брать данные, выбирать операцию (с помощью мультиплексоров и дешифраторов) и выполнять вычисления при помощи АЛУ. Также процессор имеет блок управления который заправляет всем процессом вычислений, ссылаясь на регистр инструкций, в котором хранится текущая выполняемая инструкция. Но тут возникает вопрос: откуда процессор знает, что делать дальше? Ведь программа — это не одна команда, а целая последовательность: Возьми число из памяти. Прибавь к нему другое число. Сохрани результат. Перейди к следующей инструкции. Чтобы процессор не «потерялся» в этой цепочке, ему нужен механизм, который будет указывать: «сейчас выполняем первую команду, потом вторую, потом третью». Этот механизм называется счётчик команд (Program Counter, PC). Счётчик команд — это маленький регистр, в котором хранится адрес следующей инструкции, которую нужно выполнить. Обычно он относится к блоку у

Предыдущий урок: Как работает компьютер? Часть 33. Дешифратор — Активируем нужный выход

Мы уже знаем, что процессор может брать данные, выбирать операцию (с помощью мультиплексоров и дешифраторов) и выполнять вычисления при помощи АЛУ. Также процессор имеет блок управления который заправляет всем процессом вычислений, ссылаясь на регистр инструкций, в котором хранится текущая выполняемая инструкция. Но тут возникает вопрос: откуда процессор знает, что делать дальше?

Ведь программа — это не одна команда, а целая последовательность:

  1. Возьми число из памяти.
  2. Прибавь к нему другое число.
  3. Сохрани результат.
  4. Перейди к следующей инструкции.

Чтобы процессор не «потерялся» в этой цепочке, ему нужен механизм, который будет указывать: «сейчас выполняем первую команду, потом вторую, потом третью». Этот механизм называется счётчик команд (Program Counter, PC).

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

Если упростить, можно представить его как указатель на строку в программе.

  1. В начале он равен 0 (первая команда).
  2. После выполнения команды он увеличивается на 1.
  3. Теперь он указывает на следующую команду.

И так до тех пор, пока программа не закончится.

Это похоже на закладку в книге: вы открываете страницу с нужной главой, прочитали — и закладка сама перелистывается на следующую страницу.

Работа счётчика команд очень проста:

  1. В начале работы он содержит адрес первой инструкции (обычно 0).
  2. Блок управления идет по этому адресу в память и забирает инструкцию
  3. Эта инструкция загружается в регистр инструкций
  4. После этого счетчик команд увеличивается на 1
  5. Теперь счетчик команд хранит адрес следующей инструкции
  6. Когда процессор завершит выполнение первой инструкции, блок управления обратится в память по текущему второму адресе на который указывает счетчик команд
  7. И так до конца программы.
IT Extra

Но что если программа не должна выполняться строго по порядку? Например, нужно сделать проверку: «Если число отрицательное — перескочи на другую часть программы». В таком случае счётчик команд не просто прибавляет единицу. Он может быть изменён вручную — в него загружается новый адрес.

Пример:

  1. Выполняем инструкцию на строке 2.
  2. Условие оказалось истинным.
  3. Вместо строки 3 процессор загружает в счётчик значение «7».
  4. Теперь следующая инструкция будет не на строке 3, а на строке 7.

Это похоже на книгу с интерактивными страницами: вы дочитали до фразы «Если хотите узнать продолжение истории — переходите на страницу 15». Вы заглядываете на страницу 15, и дальше идёт другая ветка.

Логическая реализация

Как сделать счётчик команд из логических элементов? В основе лежит регистр, который хранит текущее значение счётчика. К этому регистру подключён сумматор, который прибавляет 1 при каждом шаге. Также предусмотрен «вход загрузки», через который можно записать новое значение (для переходов). Таким образом, схема выглядит так:

Очень важно понять, что счётчик команд тесно связан с тем, что мы уже изучили. Счётчик команд указывает на нужную инструкцию в памяти. Эта инструкция при помощи блока управления сохраняется в регистре инструкций и подаётся в дешифратор, который активирует нужную операцию. Одновременно часть инструкции идёт на мультиплексоры, чтобы выбрать данные.То есть счётчик команд — это как дирижёр, который показывает: «Сейчас исполняем вот эту ноту», а мультиплексоры и дешифраторы уже делают свою часть работы. На самом деле на входе счетчика команд находит мультиплексор, который решает переместить счетчик или забрать адрес из команды и передать его дальше на регистр инструкций.

-2

Сегодня мы познакомились с ещё одним кирпичиком нашего процессора — счётчиком команд. Мы узнали: Это счетчик команд, который хранит адрес следующей инструкции. Обычно он увеличивается на 1, но иногда может изменяться для переходов. Он работает в связке с памятью, регистром инструкций. дешифратором и мультиплексорами. Благодаря счётчику команд процессор умеет выполнять программы шаг за шагом.

В следующем уроке мы рассмотрим как данные переключаются внутри процессора — проследим путь от памяти к регистрам, в АЛУ и обратно. Мы фактически нарисуем «карту движения данных» внутри простейшего процессора.

Спасибо за внимание!

Следующий урок:
Как работает компьютер? Часть 35. Как данные переключаются внутри процессора

P.S.

Если вы теперь смотрите на свой телефон или ноутбук не как на бездушную железку, а как на клубок молний, который научили думать, — вам понравится мой курс «Как работает компьютер. Просто о сложном» https://stepik.org/a/249383. Специально для Дзен действует промокод со скидкой 20%: DZEN20.

👍 Ставьте лайки если хотите разбор других интересных тем.

👉 Подписывайся на IT Extra на Дзен чтобы не пропустить следующие статьи

________________________________________________________________________

👇
Понравилась статья? В нашем Telegram-канале ITextra мы каждый день делимся такими же понятными объяснениями, а также свежими новостями и полезными инструментами. Подписывайтесь, чтобы прокачивать свои IT-знания всего за 2 минуты в день!

IT Extra