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

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

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

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

Информационная емкость аппаратного стека определяется как N*n,

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

Аппаратно-программные стек – реализуется путем использования части ОЗУ статического типа и специального регистра SP, который содержит адрес последней занятой ячейки стека. Принцип работы этого стека для микропроцессоров i заключается в следующем:

В этом стеке физического сдвига данных при записи и считывании не происходит, однако, автоматическое изменение содержимого SP эквивалентно сдвигу данных, происходящему в аппаратном стеке.

В регистр SP заносится адрес вершины стека, после каждой операции записи/считывания содержимое регистра SP меняется. Для МП i8086 одновременно можно записывать или считывать из стека 2-х байтные лова, поэтому содержимое SP меняется на 2. Во время записи в стек значение SP уменьшается на 2 (стек растет в область малых адресов), при считывании - увеличивается на 2.

Т.о. указатель стека SP всегда содержит адрес ячейки, к которой состоялось последнее обращение.

В некоторых командах, например, вызов подпрограммы (CALL), прерываний (INT) и возвращение из подпрограмм (RET) обращение к стеку осуществляется автоматически.

При вызове подпрограммы в стеке запоминается адрес команды следующей после команды вызова ADD т.е. содержимое программного счетчика PC запоминается в верхней незанятой ячейке стека, а указатель стека уменьшается на 2. При возвращении из подпрограммы по команде RET содержимое верхней ячейки стека перезаписывается программный счетчик PC, SP увеличивается на 2 и начинает выполняться команда ADD. Кроме команд CALL, INT и RET используются также команды PUSH и POP предназначенные для временного запоминания в стеке содержимого регистров и их восстановления, т.е. пересылки информации из стека в регистры.

В МП i начиная с 286 существуют команды PUSHA, POPA они предназначены для временного запоминания в стеке и восстановления содержимого всех регистров МП.

Интерфейсы УВВ

Одной из важнейшей задач проектирования МПС является организация взаимодействия УВВ. К УВВ относятся переключатели, клавиатура, АЦП. УВВ различаются разрядностью, быстродействием, типом протокола обмена(т.е. правилами обмена). Соединение УВВ с системной шиной производится с помощью интерфейса ввода-вывода, который согласовывает сигналы УВВ с системной шиной МПС. Интерфейс УВВ должен обеспечивать хранение информации поступающей от УВВ, доступ к информации со стороны МП, управление обменом, преобразование форматов данных.

Хранение информации и доступ к ней со стороны МП.

Рисунок 1- Использование регистра К580ИР82 для сопряжения МПС с устройством ввода (а), или вывода (б).

Ввод и вывод выполняется с помощью портов ввода-вывода, которые представлены 8 или 16 разрядными регистрами со схемами выборки и управления чтением/записью.

Если регистр используется как порт ввода (а), то данные от устройства ввода поступают в регистр по линиям DI7..DI0 и записываются по стробу STB.

Выходные данные DO7..DO0 поступают по шине данных в МПС. Микропроцессор формирует также сигналы управления чтением и выборкой порта #OE (#-инверсия).

Если регистр используется как порт вывода (б), то данные от МП поступают по ШД на входы DI7..DI0 и сопровождаются сигналами управления, записью и выборки БИС. Выходные данные DO7..DO0 поступают в устройство вывода.

Ввод или вывод может осуществляться 2 способами: с использование отдельного адресного пространства УВВ, с использованием общего с памятью адресного пространства, т.е. с отображением на память.

Существуют 3 способа управления обменом: программный, по прерыванию, в режиме ПДП.

Программный обмен инициируется МП и осуществляется под его управлением. Различают простой и стробированный программный обмен. При простом считается, что УВВ в любой момент готова к обмену по командам IN, OUT. При стробированном обмене УВВ извещает о своей готовности к обмену стробам. Например, выдача 8 разрядных данных сопровождается 9 битом – стробом. При таком обмене схема интерфейса содержит триггер или порт управления для сохранения информации о готовности внешнего устройства к обмену. Процессор опрашивает соответствующий разряд порта управления для определения состояния внешнего устройства – его готовности к обмену.

Если УВВ имеет встроенное аппаратное средство для определения готовности к обмену о состоянии устройства свидетельствует флаг готовности READY или флаг готовности/занятости READY/BUSY.

Информация о готовности устройств принадлежит к статусной информации и входит в состав словосостояния устройства. Иногда состояние готовности и занятости идентифицируются отдельными флагами READY и BUSY. Флаг READY заменяет бит порта управления.

Если УВВ не готово к обмену, то МП находится в режиме программного ожидания готовности ВУ, выполняя команды блоков 1 и 2. После определения готовности УВВ МП передает данные по команде блока 3, а потом продолжает выполнение основной программы. На чтение статусной информации и ее анализ МП тратит несколько циклов работы, что приводит к непроизводительным потерям времени. Недостатком программного стробированного обмена является то, что данные способ обмена информацией не разрешает внешним устройствам инициировать обмен. Преимущество состоит в простоте реализации, а так же в том, что нет необходимости в дополнительных аппаратных средствах.

Обмен по прерыванию инициируется УВВ и осуществляется под управлением МП. В этом случае сигнал готовности УВВ к обмену используется как запрос прерывания и поступает в программируемый контроллер прерывания (ПКП). Ввод или вывод осуществляется в подпрограмме обработки запроса прерывания.

ПКП способен принять 8 сигналов IRQ7-IRQ0. Сигнал готовности УВВ поступает на вход IRQ6. Этот сигнал представляет собой выходной сигнал триггера, который фиксирует состояние готовности. На выходе ПКП асинхронно с действиями МП формируется сигнал INT. Заранее неизвестно, в какой момент и какие ПУ инициируют прерывания. Реагируя на сигнал INT МП прерывает выполнение основной программы, идентифицирует устройство, вызвавшее прерывание, переходи к выполнению подпрограммы обслуживания прерывания этого устройства, а после ее завершения восстанавливает выполнение прерванной программы. По команде INT содержимое программного счетчика и флагов автоматически запоминается в стеке, содержимое аккумулятора и РОН необходимо занести в стек с помощью команды PUSH в подпрограмме обработки прерывания.

В каждом МП реализована особая структура системы прерываний, однако общая последовательность обмена по прерыванию включает следующие действия:

1.УВВ генерирует сигнал готовности, вызывающий появление сигнала прерывания INT

2.Завершает выполнение текущей программы и если прерывание разрешено формирует сигнал INTA подтверждения прерывания

3.МП запоминает содержимое аккумулятора программного счетчика и РОН в стеке

4.МП идентифицирует устройство вызвавшее прерывание и выполняет соответствующую подпрограмму обслуживания прерывания.

5.С помощью команды POP восстанавливаются значения содержимого аккумулятора и РОН из стека

6.По команде RET возврата из прерывания, которая является последней командой подпрограммы обслуживания прерывания восстанавливаются значения программного счетчика и флагов; и продолжается выполнение прерванной программы.

Обмен по прерыванию более производительный, чем программный, поскольку не требует времени для опроса готовности УВВ к обмену.

Обмен по прерыванию

Обмен по прерыванию инициируется УВВ и осуществляется под управлением МП. В этом случае сигнал готовности УВВ к обмену используется как запрос прерывания и поступает программированный….

ввод или вывод осуществляется в подпрограмме обработки запроса прерывания.

На рисунке 4 сигнал готовности УВВ поступает на вход IRQ6. Этот сигнал представляет собой выходной сигнал триггера, который фиксирует состояния готовности READY. На выходе ПКП асинхронно с действиями микропроцессора формируется сигнал ИНТ. Заранее не известно, какой момент и какие ПУ (переф. устройства) инициируют прерывания. Реагируя на сигнал ИНТ микропроцессор прерывает выполнение основной программы, идентифицирует устройство вызвавшее прерывание, переходит к выполнению подпрограммы обслуживания прерывания этого устройства, а после ее завершения восстанавливает выполнение прерванной программы.

По команде ИНТ содержимое программного счетчика и флагов автоматически запоминается в стеке. Содержимое аккумулятора ИРОН (общего назначения) необходимо занести в стек с помощью команд PUSH в подпрограмме обработки прерывания. В каждом микропроцессоре реализована особая структура системы прерывания, однако общая последовательность обмена по прерыванию включает следующие действия:

УВВ генерирует сигнал готовности, вызывающий появление сигнала прерывания ИНТ микропроцессора.

МП завершает выполнение текущей команды и если прерывание разрешено(не замаскированно) формирует сигнал ИНТА-подтверждение прерывания.

МП запоминает содержимое аккумулятора, программного счетчика и регистров общего назначения в стеке.

МП идентифицирует устройство вызвавшее прерывание и выполняет соответствующую подпрограмму обслуживания прерывания.

С помощью команды POP восстанавливаются значения содержимого аккумулятора ИРО и стека.

По команде RED, которая является последней командой подпрограммы обслуживания прерывания восстанавливаются значения программного счетчика и флагов и продолжается выполнение прерванной программы. Обмен по прерыванию более производителен чем программный обмен, поскольку не требует времени для опроса готовности УВВ к обмену.

Обмен в режиме ПДП

02.03.13.

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

Контроллер прямого доступа КПДП принимает запрос от УВВ, формирует сигнал запроса захвата шин, и получив от МП разрешение формирует адреса памяти и управляющие сигналы MEM R-чтения памяти и IOR-УВВ, MEMW-в случае записи памяти.

Информацию об области памяти, используемой при обмене в виде начального адреса и длинны массива, загружает к КПДП при его программировании. Производительность обмена в режиме КПДП наиболее высокая из рассмотренных способов обмена (рисунок 5).

Наши рекомендации