Основы памяти: RAM и ROM
← Все статьи

Основы памяти: RAM и ROM

6 мин

Что значит «память» в цифровой логике

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

RAM: массив защёлок

Оперативная память (RAM) концептуально — это сетка однобитных ячеек хранения (в статической RAM буквально по защёлке на бит), организованных в строки и столбцы. Декодер принимает биты адреса и активирует ровно одну строку; данные этой строки затем доступны для чтения или записи через общие линии данных.

«Произвольный доступ» означает, что любой адрес достигается за одно и то же время, независимо от того, к какому адресу обращались ранее — в отличие от сдвигового регистра или ленты, где доступ к далёкому биту занимает больше времени.

Чтение и запись

Линия разрешения записи (Write Enable) управляет направлением: когда она активна, защёлки выбранной строки устанавливаются в значение, поданное на линии данных. Когда она неактивна, текущее содержимое выбранной строки выводится на линии данных для чтения. В любой момент выбрана только одна строка — именно поэтому декодер из предыдущей статьи делает адресуемую память возможной в принципе.

ROM: данные, подключённые навсегда

Постоянная память (ROM) использует тот же принцип адресации — декодер выбирает строку — но вместо защёлок каждая ячейка представляет собой фиксированное соединение (присутствующее или отсутствующее), заложенное при производстве, или однократно программируемое в некоторых вариантах. Записывать в неё нечего: один и тот же адрес всегда возвращает одно и то же значение, что делает ROM идеальной для данных, которые никогда не должны меняться — например, загрузчика или фиксированной таблицы соответствий.

RAM и ROM на практике

Реальная система использует оба типа: ROM хранит код запуска, выполняющийся до того, как что-либо ещё сконфигурировано, а RAM хранит рабочие данные и саму программу после загрузки. Boolflow не моделирует полный массив памяти как единый блок, но принцип адресации виден напрямую: загрузите пример декодера и заметьте, что тот же декодер, управляющий одной из нескольких защёлок, — это ровно то, как маленькая RAM строится из уже знакомых вам частей.

Загрузить пример схемы памяти