Предыдущий урок: Как работает компьютер? Часть 33. Дешифратор — Активируем нужный выход
Мы уже знаем, что процессор может брать данные, выбирать операцию (с помощью мультиплексоров и дешифраторов) и выполнять вычисления при помощи АЛУ. Также процессор имеет блок управления который заправляет всем процессом вычислений, ссылаясь на регистр инструкций, в котором хранится текущая выполняемая инструкция. Но тут возникает вопрос: откуда процессор знает, что делать дальше?
Ведь программа — это не одна команда, а целая последовательность:
- Возьми число из памяти.
- Прибавь к нему другое число.
- Сохрани результат.
- Перейди к следующей инструкции.
Чтобы процессор не «потерялся» в этой цепочке, ему нужен механизм, который будет указывать: «сейчас выполняем первую команду, потом вторую, потом третью». Этот механизм называется счётчик команд (Program Counter, PC).
Счётчик команд — это маленький регистр, в котором хранится адрес следующей инструкции, которую нужно выполнить. Обычно он относится к блоку управления.
Если упростить, можно представить его как указатель на строку в программе.
- В начале он равен 0 (первая команда).
- После выполнения команды он увеличивается на 1.
- Теперь он указывает на следующую команду.
И так до тех пор, пока программа не закончится.
Это похоже на закладку в книге: вы открываете страницу с нужной главой, прочитали — и закладка сама перелистывается на следующую страницу.
Работа счётчика команд очень проста:
- В начале работы он содержит адрес первой инструкции (обычно 0).
- Блок управления идет по этому адресу в память и забирает инструкцию
- Эта инструкция загружается в регистр инструкций
- После этого счетчик команд увеличивается на 1
- Теперь счетчик команд хранит адрес следующей инструкции
- Когда процессор завершит выполнение первой инструкции, блок управления обратится в память по текущему второму адресе на который указывает счетчик команд
- И так до конца программы.
Но что если программа не должна выполняться строго по порядку? Например, нужно сделать проверку: «Если число отрицательное — перескочи на другую часть программы». В таком случае счётчик команд не просто прибавляет единицу. Он может быть изменён вручную — в него загружается новый адрес.
Пример:
- Выполняем инструкцию на строке 2.
- Условие оказалось истинным.
- Вместо строки 3 процессор загружает в счётчик значение «7».
- Теперь следующая инструкция будет не на строке 3, а на строке 7.
Это похоже на книгу с интерактивными страницами: вы дочитали до фразы «Если хотите узнать продолжение истории — переходите на страницу 15». Вы заглядываете на страницу 15, и дальше идёт другая ветка.
Логическая реализация
Как сделать счётчик команд из логических элементов? В основе лежит регистр, который хранит текущее значение счётчика. К этому регистру подключён сумматор, который прибавляет 1 при каждом шаге. Также предусмотрен «вход загрузки», через который можно записать новое значение (для переходов). Таким образом, схема выглядит так:
Очень важно понять, что счётчик команд тесно связан с тем, что мы уже изучили. Счётчик команд указывает на нужную инструкцию в памяти. Эта инструкция при помощи блока управления сохраняется в регистре инструкций и подаётся в дешифратор, который активирует нужную операцию. Одновременно часть инструкции идёт на мультиплексоры, чтобы выбрать данные.То есть счётчик команд — это как дирижёр, который показывает: «Сейчас исполняем вот эту ноту», а мультиплексоры и дешифраторы уже делают свою часть работы. На самом деле на входе счетчика команд находит мультиплексор, который решает переместить счетчик или забрать адрес из команды и передать его дальше на регистр инструкций.
Сегодня мы познакомились с ещё одним кирпичиком нашего процессора — счётчиком команд. Мы узнали: Это счетчик команд, который хранит адрес следующей инструкции. Обычно он увеличивается на 1, но иногда может изменяться для переходов. Он работает в связке с памятью, регистром инструкций. дешифратором и мультиплексорами. Благодаря счётчику команд процессор умеет выполнять программы шаг за шагом.
В следующем уроке мы рассмотрим как данные переключаются внутри процессора — проследим путь от памяти к регистрам, в АЛУ и обратно. Мы фактически нарисуем «карту движения данных» внутри простейшего процессора.
Спасибо за внимание!
Следующий урок: Как работает компьютер? Часть 35. Как данные переключаются внутри процессора
P.S.
Если вы теперь смотрите на свой телефон или ноутбук не как на бездушную железку, а как на клубок молний, который научили думать, — вам понравится мой курс «Как работает компьютер. Просто о сложном» https://stepik.org/a/249383. Специально для Дзен действует промокод со скидкой 20%: DZEN20.
👍 Ставьте лайки если хотите разбор других интересных тем.
👉 Подписывайся на IT Extra на Дзен чтобы не пропустить следующие статьи
________________________________________________________________________
👇
Понравилась статья? В нашем Telegram-канале ITextra мы каждый день делимся такими же понятными объяснениями, а также свежими новостями и полезными инструментами. Подписывайтесь, чтобы прокачивать свои IT-знания всего за 2 минуты в день!