Зарегистрируйтесь, чтобы продолжить обучение

Регистры и ALU Основы ЭВМ

Любой компьютер должен хранить данные и уметь их обрабатывать. На ранних этапах развития машин возникла серьёзная проблема: память была большой по объёму, но очень медленной. Процессор большую часть времени простаивал, потому что ждал данные из памяти. Нужно было придумать решение, которое позволит работать быстрее.

Чтобы избавиться от этого узкого места, инженеры ввели внутри процессора маленькие, но сверхбыстрые ячейки хранения. Эти ячейки назвали регистрами. Их количество ограничено, но именно они позволяют держать под рукой числа и адреса, которые нужны в текущий момент. Доступ к регистру занимает всего один такт, и это радикально ускоряет работу.

Регистры не существуют сами по себе, они тесно связаны с арифметико-логическим устройством, или ALU. Это блок внутри процессора, который выполняет все вычисления. В нём происходят операции сложения, вычитания, умножения и деления, а также сравнения и логические действия вроде «И» и «ИЛИ». ALU не хранит данные, оно берёт их из регистров, обрабатывает и возвращает результат обратно в регистр.

Чтобы увидеть это на практике, представим простое сложение. В памяти по адресу A1 лежит число 7, а по адресу A2 — число 5. Процессор сначала загружает число 7 в регистр R1, потом число 5 в регистр R2. После этого ALU получает команду сложить содержимое R1 и R2, выполняет операцию и возвращает результат 12 в регистр R3. При необходимости процессор сохранит это число обратно в память по адресу A3.

В машинных командах этот процесс выглядит так:

LOAD     R1, [A1]
LOAD     R2, [A2]
ADD      R3, R1, R2
STORE    [A3], R3

Из этого примера становится видно главное правило: ALU никогда не работает напрямую с памятью. Оно обрабатывает только то, что находится в регистрах. Именно поэтому шаги загрузки и сохранения обязательны.

Роли у регистров разные. Часть из них используется для хранения данных и промежуточных результатов. Другие содержат адреса памяти, с которыми нужно работать. Есть регистр-счётчик команд, который указывает, какая инструкция будет выполнена следующей. Есть регистр состояния, где ALU оставляет отметки о результате вычисления: получилось ли ноль, было ли переполнение, какое у числа значение по знаку.

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

Вся работа процессора сводится к движению данных по одной цепочке: память хранит всё, что нужно программе; регистры подготавливают актуальные значения для операций; ALU выполняет вычисления; результат снова возвращается в регистры и при необходимости сохраняется обратно в память. На этой основе построена работа любого компьютера.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff