Оперативная память (RAM)

Входы (Inputs)

ПинТипОписание
Addrbus8Адрес (0–255)
DataInbus8Данные для записи
WEbit1 = записать DataIn по Addr

Выходы (Outputs)

ПинТипОписание
DataOutbus8Прочитанное значение из ячейки Addr

Логика работы

RAM — это стена из 256 шкафчиков, у каждого свой номер от 0 до 255. Адрес на входе Addr говорит, с каким шкафчиком работаем, а вход WE — ключ: при WE = 1 шкафчик открыт, и значение с DataIn ложится внутрь; при WE = 0 дверца заперта, и память просто показывает, что лежит внутри.

Главное свойство: DataOut всегда отражает содержимое ячейки Addr. Запиши число 42 в ячейку 7 (Addr = 7, DataIn = 42, WE = 1), а затем переключись в режим чтения (WE = 0) — на выходе появятся те же 42. Ячейка хранит значение, пока в неё не запишут что-то новое: память «помнит» без всяких тактов и обновляется в тот же момент, когда меняются входы.

Нюанс: при старте симуляции все 256 ячеек заполнены нулями, поэтому чтение до первой записи вернёт 0. И вторая тонкость: операнд инструкции адресует напрямую только ячейки 0–15, а дальние адреса доступны через IndexRegister — о них рассказано на уровнях 20–22.

Примеры

ШагAddrDataInWEDataOutЧто происходит
1742142Запись 42 в ячейку 7
270042Чтение — ячейка помнит значение
39000Пустая ячейка возвращает ноль
4799199Перезапись — 42 затёрто

Обрати внимание на шаг 4: старое значение бесследно исчезает — у ячейки нет «истории». Поэтому программа сама следит, что и куда пишет.

Применение

RAM — память данных процессора, вторая половина Гарвардской архитектуры: пока команды живут в ROM, переменные и результаты хранятся здесь (уровни 18, 20–22, 25–29). Инструкции LDA и STA — это чтение и запись RAM: загрузить значение из ячейки в аккумулятор, сохранить аккумулятор в ячейку. На уровне 20 ты научишься читать и записывать память в одном такте, а в Verilog-части (уровень 39) соберёшь собственную RAM256.

Конкретные примеры: счётчик шагов, который программа увеличивает через ADD и сохраняет обратно; координаты змейки на уровне 29 — каждая часть тела лежит в своей ячейке; промежуточные результаты длинных вычислений. Всё, что в языках программирования называется «переменной», в этом компьютере живёт именно в ячейках RAM.

Собери это сам →

Смежные компоненты

Статьи по теме

Частые вопросы

Чем RAM отличается от ROM?

RAM хранит данные и доступна на чтение и запись. ROM — только для чтения, в ней лежит программа.

Сколько ячеек доступно программе напрямую?

Операнд инструкции адресует ячейки 0–15. Дальние адреса (16–255) доступны через IndexRegister с косвенной адресацией — это тема уровней 21–22.

Что вернёт чтение до первой записи?

Ноль: при старте симуляции все 256 ячеек заполнены нулями, так что «мусора» в памяти не бывает.

Что происходит с данными при перезагрузке?

RAM очищается, а содержимое ROM сохраняется — как и в настоящем компьютере.