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