Память микропроцессорной системы выполняет функцию временного или постоянного хранения данных и команд. Объем памяти определяет допустимую сложность выполняемых системой алгоритмов, а также в некоторой степени и скорость работы системы в целом. Модули памяти выполняются на микросхемах памяти (оперативной или постоянной).
Информация в памяти хранится в ячейках, количество разрядов которых равно количеству разрядов шины данных процессора. Допустимое количество ячеек памяти определяется количеством разрядов шины адреса как 2N, где N – количество разрядов шины адреса. Чаще всего объем памяти измеряется в байтах независимо от разрядности ячейки памяти.
Используются также следующие более крупные единицы объема памяти:
- килобайт – 210 или 1024 байта (обозначается Кбайт),
- мегабайт – 220 или 1 048 576 байт (обозначается Мбайт),
- гигабайт – 230 байт (обозначается Гбайт),
- терабайт – 240 (обозначается Тбайт).
Например, если память имеет 65 536 ячеек, каждая из которых 16-разрядная, то говорят, что память имеет объем 128 Кбайт. Совокупность ячеек памяти называется обычно пространством памяти системы.
Для подключения модуля памяти к системной магистрали используются блоки сопряжения, которые включают в себя (рис. 3.1):
- дешифратор (селектор) адреса; селектор адреса как раз и определяет, какая область адресов пространства памяти отведена данному модулю памяти.
- схему обработки управляющих сигналов магистрали; схема управления вырабатывает в нужные моменты сигналы разрешения работы памяти (CS) и сигналы разрешения записи в память (WR).
- буферы данных; буферы данных передают данные от памяти к магистрали или от магистрали к памяти.
Рисунок 3.1 – Структура модуля памяти
Оперативная память общается с системной магистралью в циклах чтения и записи, постоянная память – только в циклах чтения.
В пространстве памяти микропроцессорной системы обычно выделяются несколько особых областей, которые выполняют специальные функции:
- память программы начального запуска всегда выполняется на ПЗУ или флэш-памяти. Именно с этой области процессор начинает работу после включения питания и после сброса его с помощью сигнала RESET;
- память для стека или стек (Stack) – это часть оперативной памяти, предназначенная для временного хранения данных в режиме LIFO (Last In – First Out);
- таблица векторов прерываний. Под прерыванием в общем случае понимается не только обслуживание запроса внешнего устройства, но и любое нарушение последовательной работы процессора. Прерывание может быть программным, когда в программе используется команда перехода на какую-то подпрограмму, из которой затем последует возврат в основную программу. Любое прерывание обрабатывается через таблицу векторов(указателей) прерываний. В этой таблице в простейшем случае находятся адреса начала программ обработки прерываний, которые и называются векторами. Обычно таблица векторов прерываний располагается в начале пространства памяти (в ячейках памяти с малыми адресами). Адрес каждого вектора (или адрес начального элемента каждого вектора) представляет собой номер прерывания;
- память устройств, подключенных к системной шине – процессор получает возможность обращаться к внутренней памяти устройств ввода/вывода или каких-то еще подключенных к системной шине устройств, как к своей собственной системной памяти. Обычно для этого выделяется окно в пространстве памяти.
Все остальные части пространства памяти, как правило, имеют универсальное назначение. В них могут располагаться как данные, так и программы (конечно, в случае одношинной архитектуры). Иногда пространство памяти делится на сегменты с программно изменяемым адресом начала сегмента и с установленным размером сегмента. Использование сегментов позволяет защитить область программ или данных, но зато границы сегментов могут затруднять размещение больших программ и массивов данных.
Остановимся на проблеме разделения адресов памяти и адресов устройств ввода/вывода. Существует два основных подхода к решению этой проблемы:
- выделение в общем адресном пространстве системы специальной области адресов для устройств ввода/вывода; хорош тем, что при обращении к устройствам ввода/вывода процессор может использовать те же команды, которые служат для взаимодействия с памятью. Но адресное пространство памяти должно быть уменьшено на величину адресного пространства устройств ввода/вывода.
- полное разделение адресных пространств памяти и устройств ввода/вывода. Преимущество такого подхода состоит в том, что память занимает все адресное пространство микропроцессорной системы. Для общения с устройствами ввода/вывода применяются специальные команды. Так сделано, например, в персональных компьютерах. Но возможности взаимодействия с устройствами ввода/вывода в данном случае существенно ограничены по сравнению с возможностями общения с памятью.