Оперативная память (RAM)
Входы (Inputs)
| Пин | Тип | Описание |
|---|---|---|
| Addr | bus8 | Адрес (0–255) |
| DataIn | bus8 | Данные для записи |
| WE | bit | 1 = записать DataIn по Addr |
Выходы (Outputs)
| Пин | Тип | Описание |
|---|---|---|
| DataOut | bus8 | Прочитанное значение из ячейки 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.
Примеры
| Шаг | Addr | DataIn | WE | DataOut | Что происходит |
|---|---|---|---|---|---|
| 1 | 7 | 42 | 1 | 42 | Запись 42 в ячейку 7 |
| 2 | 7 | 0 | 0 | 42 | Чтение — ячейка помнит значение |
| 3 | 9 | 0 | 0 | 0 | Пустая ячейка возвращает ноль |
| 4 | 7 | 99 | 1 | 99 | Перезапись — 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 сохраняется — как и в настоящем компьютере.