Принципы организации стековой памяти
Стековой памятью (стеком) называют память, в которой реализован принцип последний вошел, первый вышел (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).