Принципы организации стековой памяти.

Стековою памятью или стеком называют память, в которой реализован принцип: последний вошел - первый вышел (LIFO - Last Input First Output), то есть данные, записанные последними считываются первыми. В МПС стековая память используется для вызова подпрограмм, в том числе и вложенных, и обработки прерываний.

За способом реализации различают аппаратный и аппаратно-программный стеки.

 


Аппаратный стек представляет собой совокупность регистров, связь между которыми организованна таким образом, что во время записи и считывания данных, содержимое стека автоматически сдвигается. Принцип работы аппаратного восьмиуровнего стека иллюстрирует рис. 6.3

 

 

Рис. 6.3. Принцип работы аппаратного стека

 

Во время записывания слова 1 в стек оно размещается в первой свободной ячейке памяти (в первом регистре) - вершине стека. Следующее слово сдвигает предыдущее на одну ячейку вверх, занимает его место и т.д. Запись слова 9 приводит к переполнению стека и потери слова 1. Считывания слов из стека осуществляется в обратном порядке, то есть сначала считывается слово 9, записанное последним. Считывания происходит в обратном порядке, например, считывания слова 6 не возможно, пока не будут считанные слова 7, 8 и 9.

Информационная емкость аппаратного стека определяется как Nxn, где количество n-разрядних слов N равняется количеству регистров, которое может составлять несколько десятков. Аппаратные стеки, применяемые в РIС-процессорах, имеют 2, 8 или 16 регистров (N = 2, 8, 16), в которых размещаются 12-, 14- или 16-разрядные слова (п = 12,14, 16).

Основным преимуществом аппаратного стека есть высокое быстродействие, а недостатком - ограниченная информационная емкость.

Аппаратно-программный стекреализуется за счёт использования части ОЗУ статического типа и специального регистра SP (Stack Pointer - указатель стека), который содержит адрес последней занятой ячейке стека. Принцип работы аппаратно-программного стека для микропроцессоров i80x86 показан на рис. 5.36. В аппаратно-программном стеке физического сдвига данных во время записи и считывания не происходит. Сдвиг данных осуществляется за счёт изменения значения SP. В начале программы в регистр SP заносят адрес вершины стека. После каждой операции записи (считывания) содержимое регистра SP изменяется. Для МП i80x86 одновременно можно записывать в стек или считывать из него двухбайтовые слова, поэтому SP изменяется на два.

 

Рис 6.4. Принцип работы аппаратно-программного стека.

 

Во время записи в стек значения SP уменьшается на два (стек «растет» в область маленьких адресов), а во время считывания из стека - увеличивается на два. Итак, указатель стека SP всегда содержит адрес ячейки, к которой состоялось последнее обращение. В некоторых командах, например в командах вызова подпрограмм CALL, прерываний INT, возвращений из подпрограмм RET - обращение к стеку осуществляется автоматически. Во время вызова подпрограммы (рис. 5.37) в стеке запоминается адрес команды, следующей после вызова команды ADD, то есть содержимое программного счетчика PC запоминается в верхней незанятой ячейке стека, а указатель стека уменьшается на два.

 

 

Рис. 6.5. Работа стека во время вызова подпрограмм.

 

По возвращению из подпрограммы по команде RET содержимое верхней ячейке стека перезаписывается в программный счетчик PC, указатель стека SP увеличивается на два. После этого начинает выполняться команда ADD. Кроме команд CALL, INT и RET, для работы со стеком используют также команды PUSH и POP, предназначенные для временного хранения в стеке содержимого регистров и восстановления, то есть пересылка информации из стека в регистры. В МП Intel, начиная с i286, существуют команды PUSHA и РОРА (PUSH All и POP All), предназначенные для временного хранения в стеке и восстановления содержимого всех регистров МП. К аппаратно-программному стеку можно обратиться также как к ОЗУ с произвольной выборкой. В МП i80х86 для этого используют косвенную адресацию с помощью регистра ВР. Итак, в стек можно записать значение параметров подпрограмм перед их вызовом.

 


Контрольные вопросы








Дата добавления: 2015-08-26; просмотров: 2048;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.