Предыдущий урок: Как работает компьютер? Часть 40. Энергозависимая и энергонезависимая память. Жёсткий диск и SSD.
Ранее мы говорили о разных типах памяти: регистрах, оперативной памяти и внешних накопителях. Мы выяснили, что именно RAM используется как рабочее поле для процессора: в ней хранятся программы и данные, которые нужны прямо сейчас. Но возникает ключевой вопрос: как именно процессор получает доступ к памяти? Как он понимает, в какую ячейку записывать данные, а из какой их забирать?
В оперативной памяти каждая ячейка имеет свой адрес. Можно представить её как таблицу: в первой колонке адрес, во второй — значение. Например, по адресу 100 может лежать число 42, по адресу 101 — число 7 и так далее.
Процессор всегда работает именно с адресами. Когда ему нужно получить данные, он не говорит: «дай мне число 42», он говорит: «дай содержимое ячейки с адресом 100».
Для этого в процессоре есть специальные регистры:
- MAR (Memory Address Register) — регистр адреса памяти. Сюда процессор помещает адрес нужной ячейки.
- MDR (Memory Data Register) — регистр данных памяти. Сюда попадают либо данные, которые мы читаем из памяти, либо данные, которые нужно туда записать.
Представим, что процессору нужно прочитать число из памяти по адресу 100. Что происходит?
- Блок управления кладёт адрес 100 в MAR.
- Этот адрес отправляется в память.
- Память ищет ячейку с этим адресом и возвращает её содержимое, например число 42.
- Число 42 попадает в MDR.
- Теперь блок управления может отправить это число дальше, например в регистр R1.
Таким образом, процесс чтения состоит из двух частей: адрес указывает «где», а данные — «что».
Теперь процессор хочет не только читать, но и записывать новые значения. Например, результат вычисления: число 99 нужно положить в память по адресу 101.
- Блок управления кладёт адрес 101 в MAR.
- Число 99 помещается в MDR.
- Памяти подаётся управляющий сигнал «записать».
- Память находит ячейку 101 и кладёт туда значение 99.
Таким образом, чтение и запись отличаются только направлением: при чтении данные идут из памяти в процессор, при записи — из процессора в память.
Теперь давайте посмотрим, как всё это выглядит в реальной работе программы. Допустим, в памяти хранится инструкция: «Сложить содержимое ячейки по адресу 200 и по адресу 201».
- Счётчик команд указывает на адрес инструкции, она попадает в регистр инструкций.
- Дешифратор определяет, что это операция сложения.
- Блок управления подаёт сигнал: «загрузить число по адресу 200».
- Адрес 200 кладётся в MAR.
- Память возвращает, например, число 5 → оно попадает в MDR → загружается в регистр R1.
- То же самое повторяется для адреса 201. Допустим, там число 7 → оно попадает в R2.
- Теперь АЛУ получает команду: сложить R1 и R2. Результат (12) помещается в общий регистр.
- Блок управления решает записать результат обратно в память, например по адресу 202. MAR = 202, MDR = 12, сигнал «запись» → память сохраняет 12.
Всё это можно описать и на уровне логических элементов. MAR и MDR — это регистры, которые построены на триггерах. Управление чтением и записью делается через дешифраторы и мультиплексоры, которые мы изучали раньше. Дешифратор помогает выбрать, в какую именно ячейку памяти отправить сигнал. Мультиплексор помогает направить данные: либо в память, либо из памяти. Триггеры обеспечивают хранение данных внутри регистров и ячеек памяти.
Теперь у нас есть полная картина того, как процессор работает с памятью: Процессор никогда не работает напрямую со всей памятью сразу — он обращается к ней через адрес и данные. Для этого у него есть специальные регистры MAR и MDR. Чтение: MAR → память → MDR → регистры. Запись: регистры → MDR → память (с адресом из MAR). Всё это координирует блок управления, который подаёт нужные управляющие сигналы.
Чтобы закрепить, вернёмся к примеру: 2 + 3.
- Инструкция «Загрузить число по адресу 300 в R1» → MAR=300, память = 2 → MDR = 2 → R1.
- Инструкция «Загрузить число по адресу 301 в R2» → MAR=301, память = 3 → MDR=3 → R2.
- Инструкция «Сложить R1 и R2» → АЛУ = 5 → Общий регистр.
- Инструкция «Записать результат в память по адресу 302» → MAR = 302, MDR = 5 → память[302]=5.
Всё: теперь в памяти по адресу 302 лежит число 5.
Таким образом, мы видим, что процессор и память работают вместе как две части единой системы. Процессор умеет выполнять команды, но без памяти ему нечего обрабатывать. А память хранит все данные, но без процессора они так и останутся мёртвым грузом. Связка MAR, MDR, управляющих сигналов и логических схем делает возможным то, что мы называем вычислением.
Спасибо за внимание!
Следующий урок: Как работает компьютер? Часть 42. Что такое процессор и зачем он нужен
Если вам интересно копать глубже, разбирать реальные кейсы и получать знания, которых нет в открытом доступе — вам в IT Extra Premium.
Что внутри?
✅ Закрытые публикации: Детальные руководства, разборы сложных тем (например, архитектура высоконагруженных систем, глубокий анализ уязвимостей, оптимизация кода, полезные инструменты и объяснения сложных тем простым и понятным языком).
✅ Конкретные инструкции: Пошаговые мануалы, которые вы сможете применить на практике уже сегодня.
✅ Без рекламы и воды: Только суть, только концентрат полезной информации.
✅ Ранний доступ: Читайте новые материалы первыми.
Это — ваш личный доступ к экспертизе, упакованной в понятный формат. Не просто теория, а инструменты для роста.
👉 Переходите на Premium и начните читать то, о чем другие только догадываются.
👍 Ставьте лайки если хотите разбор других интересных тем.
👉 Подписывайся на IT Extra на Дзен чтобы не пропустить следующие статьи👇
Понравилась статья? В нашем Telegram-канале ITextra мы каждый день делимся такими же понятными объяснениями, а также свежими новостями и полезными инструментами. Подписывайтесь, чтобы прокачивать свои IT-знания всего за 2 минуты в день!