Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zachet_po_MiTsOS_1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
842.75 Кб
Скачать

13. Структура памяти. Стек. Микропроцессорной системы.

В пространстве памяти микропроцессорной системы обычно выделяются несколько особых областей, которые выполняют специальные функции. Память программы начального запуска всегда выполняется на ПЗУ или флэш-памяти. Именно с этой области процессор начинает работу после включения питания и после сброса его с помощью сигнала RESET. Как правило, аппаратная реализации начального запуска в большинстве МС осуществляется с нулевого адреса. Еще одна специальная область памяти микропроцессорной системы – это память устройств (устройств ввода/вывода), подключенных к системной шине. В составе МС, как правило, выделяются три специальные группы устройств ввода/вывода: устройства интерфейса пользователя (ввода информации пользователем и вывода информации для пользователя); устройства ввода/вывода для длительного хранения информации; таймерные устройства. Микропроцессор имеет возможность обращаться к внутренней памяти устройств ввода/вывода или каких-то еще подключенных к системной шине устройств, как к своей собственной системной памяти. Обычно окно в пространстве памяти, выделяемое для этого, не слишком большое. Существует два основных подхода к разделения адресов памяти и адресов устройств ввода/вывода: выделение в общем адресном пространстве системы специальной области адресов для устройств ввода/вывода; полное разделение адресных пространств памяти и устройств ввода/вывода. В остальной части памяти могут располагаться как данные, так и программы, конечно, в случае одношинной фон-неймановской архитектуры, в случае же гарвардской архитектуры память команд (или память программ) CSEG (Code Segment) и память данных DSEG (Data Segment) разделены и имеют свои собственные адресные пространства и способы доступа к ним. В некоторых МС это пространство памяти используется как единое целое, без всяких границ. При построении МС на базе микроконтроллеров чаще пространство памяти делится на сегменты с программно изменяемым адресом начала сегмента и с установленным размером сегмента. Практически во всех современных микропроцессорах выделяют отдельную область памяти под так называемый “стек” (Stack), используемый, в общем случае, для передачи параметров процедурам и сохранения адресов возврата из них. Стек может быть расположен внутри микропроцессора в специально области памяти (в этом случае говорят о т.н. “аппаратном стеке”) или вне его – в оперативной памяти. В последнем случае стек занимает часть адресного пространства DSEG. Стек предназначен для временного хранения данных в режиме LIFO (Last In – First Out). Особенность стека по сравнению с другой оперативной памятью – это заданный и неизменяемый способ адресации. При записи любого числа (кода) в стек число записывается по адресу, определяемому как содержимое регистра указателя стека, предварительно уменьшенное (декрементированное) на единицу (или на два, если 16-разрядные слова расположены в памяти по четным адресам). При чтении из стека число читается из адреса, определяемого содержимым указателя стека, после чего это содержимое указателя стека увеличивается (инкрементируется) на единицу (или на два). В результате получается, что число, записанное последним, будет прочитано первым, а число, записанное первым, будет прочитано последним. Это и есть способ организации памяти – LIFO или памятью «патронного» типа (например, в магазине автомата патрон, установленный последним, будет извлечен первым). Принцип действия стека показан на рис. 3.1 (адреса ячеек памяти выбраны условно). Пусть, например, текущее состояние указателя стека 1000008, и в него надо записать два числа (слова). Первое слово будет записано по адресу 1000006 (перед записью указатель стека уменьшится на два). Второе – по адресу 1000004. После записи содержимое указателя стека станет – 1000004. Если затем прочитать из стека два слова, то первым будет прочитано слово из адреса 1000004, а после чтения указатель стека станет равным 1000006. Вторым будет прочитано слово из адреса 1000006, а указатель стека станет равным 1000008. Все вернулось к исходному состоянию. Первое записанное слово читается вторым, а второе – первым.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]