Совмещение адресной шины и шины данных 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Совмещение адресной шины и шины данных



В некоторых МП с целью сокращения ширины физической магистрали используют совмещение адресной шины с шиной данных. В течение первого такта цикла магистрали шина данных не используется, поэтому этот интервал можно использовать для передачи по шине данных адресных сигналов (адреса). Этап передачи адресной информации по совмещенной шине адреса/данных AD (Address/Data Bus) отделяется по времени от этапа передачи данных и стробируется специальным сигналом ALE (Address Latch Enable), который включается в состав шины управления. Данную магистраль называют двухшинной с совмещенными шинами передачи адреса и данных. Если разрядность данных меньше разрядности адреса, то по совмещенной шине передаются только младшие разряды адреса, а старшие разряды при этом передаются по адресной шине.

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

Рис. 19 - МП с совмещением адресной шины с шиной данных

 

Временная диаграмма работы микросистемы с совмещением адресной шины с шиной данных приведена на рис. 20. В течение первого такта T1 по общей шине AD7−AD0 передаются адресные разряды A7−A0. Эти разряды по сигналу ALE фиксируются в регистре-фиксаторе, который находится вне МП.

Рис. 20 – Временная диаграмма работы микросистемы с совмещением адресной шины с шиной данных

 


 

3. Архитектура системы ввода‑вывода. Способы организации передачи данных. Система непосредственного ввода-вывода. Система канального ввода‑вывода. Программно-управляемый ввод-вывод. Прямой ввод-вывод. Условный ввод-вывод. Ввод-вывод с программным квитированием. Ввод-вывод по прерываниям.

 

Микропроцессорная система состоит из трех подсистем: микропроцессора, подсистемы памяти и подсистемы ввода/вывода. Подсистема ввода/вывода отвечает за связь с устройствами ввода/вывода.

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

Связь устройств микропроцессорной системы друг с другом осуществляется с помощью специальных совокупностей средств и правил, которые называются интерфейсами. Интерфейс – совокупность линий и шин, сигналов, электронных схем и алгоритмов, предназначенная для осуществления обмена информацией между устройствами компьютерной системы.

При разработке систем ввода/вывода должны быть решены следующие проблемы:

- возможность реализации системы с переменным составом оборудования, в первую очередь с различным набором устройств ввода/вывода, с тем, чтобы пользователь мог выбирать состав оборудования (конфигурацию) системы в соответствии с ее назначением, легко дополнять систему новыми устройствами;

- для эффективного и высокопроизводительного использования оборудования системы возможность параллельной во времени работы процессора над программой и выполнения периферийными устройствами процедур ввода/вывода;

- упрощение для пользователя и стандартизация программирования операций ввода/вывода, обеспечение независимости программирования ввода/вывода от особенностей того или иного устройства ввода/вывода;

- автоматическое распознавание и реакция системы на многообразие ситуаций, возникающих в устройствах ввода/вывода (например, готовность устройства, отсутствие носителя, различные нарушения нормальной работы устройства и т. п.).

Основными путями решения указанных проблем являются:

- модульность;

- унифицированные (не зависящие от типа устройства ввода/вывода) форматы данных, которыми устройства ввода/вывода обмениваются с системой;

- унифицированные интерфейсы;

- унифицированные (не зависящие от типа устройства ввода/вывода) формат и набор команд процессора для операций ввода/вывода.

Для обеспечения параллельной во времени работы устройств ввода/вывода с выполнением программы обработки данных процессором схемы управления вводом/выводом отделяются от процессора и им придается достаточная степень автономности.

Различают два основных вида архитектуры систем ввода/вывода:

- система непосредственного ввода/вывода;

- система канального ввода/вывода.

В системе непосредственного ввода/вывода (рис. 21) обмен данными с устройствами ввода/вывода выполняется процессором.

Рис. 21 – Система непосредственного ввода/вывода

 

В системе канального ввода/вывода (рис. 22) обмен данными, подлежащими вводу в процессор или выводу из него, происходит между процессором и памятью, а память связана с устройствами ввода/вывода через канал или процессор ввода/вывода.

Рис. 22 – Система канального ввода/вывода

 

При любой форме взаимодействия с микропроцессорной системой аппаратура ввода/вывода обычно состоит из собственно устройства ввода/вывода и устройства управления этим устройством ввода/вывода – контроллера устройства ввода/вывода.

Интерфейс между процессором или каналом ввода/вывода и контроллером устройства ввода/вывода называется системным интерфейсом, а интерфейс между контроллером и устройством ввода/вывода – интерфейсом ввода/вывода. Системный интерфейс, как правило, является общим для всех видов устройств ввода/вывода, а интерфейсы ввода/вывода специализированы для конкретных видов устройств ввода/вывода.

В общем случае ввод и вывод данных осуществляются путем обмена даными между основной памятью и устройствами ввода/вывода. Данные, находящиеся в основной памяти, подаются на устройства вывода, а от устройства ввода данные поступают для занесения в основную память. Для управления этим обменом необходимо обеспечить выполнение следующих функций:

1) управление адресацией всех данных, подлежащих вводу и выводу, обновление адресов при передаче каждого слова;

2) синхронизация обмена данными между устройствами ввода/вывода и основной памятью или процессором;

3) управление работой устройств ввода/вывода. Необходимо осуществлять не только передачу данных, но и реализацию управляющих действий, например, перемещение магнитной головки на нужную дорожку;

4) преобразование информации. Обычно основная память связана с внутренней системной шиной, а связь с устройствами ввода/вывода может осуществляться по-разному в зависимости от специфики этих устройств. Поэтому при передаче информации по шинам между основной памятью или процессором и устройствами ввода/вывода должно осуществляться ее преобразование.

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

Функции управления вводом/выводом могут быть:

- общими, не зависящими от типа устройств ввода/вывода;

- специфичными для каждого типа устройств ввода/вывода.

Выполнение общих функций возлагают на общие для групп устройств ввода/вывода унифицированные устройства – контроллеры ПДП, процессоры (каналы) ввода/вывода, а специфических – на специализированные для каждого типа устройств ввода/вывода устройства управления – контроллеры устройств ввода/вывода.

С точки зрения программиста, работающего на уровне машинных команд, подсистему ввода/вывода можно представить в виде пространства ввода/вывода IOS и набора команд ввода/вывода, обеспечивающих к нему доступ. Организация пространства ввода/вывода подобна организации пространства памяти: IOS организовано в виде набора n-разрядных ячеек – портов, каждый из которых может быть адресован независимо от других.

Между микропроцессором и периферийными устройствами происходит обмен информацией двух типов:

- служебной;

- собственно данными.

Служебная информация от МП инициирует действия, связанные с обменом данными, и передается с помощью управляющих слов CW (Control Word). Служебные сообщения от периферийных устройств информируют МП об их текущем состоянии и называются словами состояния SW (Status Word). В отличие от них данные передаются с помощью слов данных DW (Data Word).

Объем служебной информации, которой обмениваются периферийные устройства и микропроцессор, а также ее интерпретация зависят от типа периферийного устройства. Для наиболее простых устройств, таких как прямо управляемые клавишные матрицы или светодиодные индикаторы, служебная информация не нужна. В других случаях, например при взаимодействии с НГМД, управляющая информация и данные о состоянии устройства могут иметь большой объем. При этом каждое периферийное устройство (ПУ) воспринимает определенный, присущий только ему набор команд управления. Организовать в этом случае передачу каждой команды ПУ по отдельной линии магистрали (шины управления) не представляется возможным по двум причинам. Во-первых, при разработке микропроцессора достаточно трудно предусмотреть все возможные применения микропроцессорной системы на его основе, а, следовательно, и используемые в ней ПУ. Во-вторых, для каждого дополнительного управляющего сигнала потребуется отдельный вывод в БИС микропроцессора, т.е. возникают чисто конструктивные ограничения на количество используемых в шине управления магистрали управляющих сигналов, связанные с числом выводов в БИС микропроцессора. Решение указанной проблемы осуществляется путем мультиплексирования шины данных: в одни моменты времени она используется для передачи данных, в другие моменты – для передачи служебной информации. При этом для связи с периферийным устройством отводится ряд портов ввода/вывода, через которые и проходит вся информация: управляющая, слова состояния и непосредственно данные. С точки зрения программиста множество портов ввода/вывода, связанных с данным периферийным устройством, образует пространство доступа к этому периферийному устройству.

В общем случае размер пространства доступа не зависит от объема информации, которой обмениваются периферийное устройство и микропроцессор, так как используется последовательная передача массива информации через один и тот же порт. При этом существуют правила обмена информацией между конкретным периферийным устройством и микропроцессором, которые называют протоколом обмена. Взаимодействие с периферийным устройством организуется с помощью драйвера – специальной программы, составленной на основе этих правил.

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

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

В контроллере ПУ используются регистры четырех типов в зависимости от типа информации, для хранения которой они предназначены:

- регистр входных данных или входной регистр (доступен микропроцессору только по чтению);

- регистр выходных данных или выходной регистр (доступен микропроцессору только по записи);

- регистр состояния (доступен микропроцессору только по чтению). Содержит информацию о текущем состоянии ПУ (включено/выключено, готово/не готово к обмену данными, ошибка и т.п.);

- регистр управления (доступен микропроцессору только по записи). Служит для приема из МП команд для ПУ.

Рис. 23 - Организация контроллера ПУ

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

Логика управления контроллера выполняет селекцию адресов регистров (портов ввода/вывода) контроллера, прием, обработку и формирование управляющих сигналов системной магистрали, а также выработку внутренних управляющих сигналов, обеспечивая тем самым обмен информацией между регистрами контроллера и шиной данных магистрали микропроцессорной системы.

Приемо-передатчики шины данных и шины адреса служат для физического подключения схем контроллера к соответствующим шинам системной магистрали.

На практике часто используют программируемые контроллеры, режимы работы которых устанавливаются специальными командами МП. Программируемый контроллер необходимо настраивать на конкретный режим обмена данными, присущий ПУ: синхронный или асинхронный, с использованием сигналов прерывания или без их использования, на заданную скорость обмена и т.д. Настройка таких контроллеров на требуемый режим обмена производится программным путем с помощью специальных команд (управляющих слов), передаваемых из МП в контроллер ПУ перед началом обмена. Управляющее слово записывается в специальный регистр и инициирует заданный режим обмена с ПУ. В качестве примера можно привести микросхему фирмы Intel 8255 – программируемый контроллер параллельного интерфейса.

В микропроцессорных системах используются два основных способа организации передачи данных между системой и устройствами ввода/вывода (рис. 24):

- программно-управляемый обмен;

- прямой доступ к памяти (ПДП).

Программно-управляемый обмен – обмен, управляемый программой, т. е. когда процедуры обмена информацией с периферийным устройством инициируются и выполняются непосредственно программой, реализуемой процессором через его регистры. Программно-управляемый обмен осуществляется при непосредственном участии и под управлением процессора.

 

Рис. 24 – Два основных способа организации передачи данных между системой и устройствами ввода/вывода

 

С точки зрения аппаратных затрат программно-управляемый обмен является наиболее эффективным типом обмена, поэтому он находит самое широкое применение в различных микропроцессорных системах.

Программно-управляемый обмен может осуществляться одним из трех способов, называемых:

1) прямой (безусловный, синхронный) обмен;

2) условный (асинхронный) обмен (обмен по условию);

3) обмен с прерыванием программы.

В зависимости от используемого способа обмена программно-управляемый ввод/вывод называется соответственно

1) прямым вводом/выводом;

2) условным вводом/выводом;

3) вводом/выводом по прерыванию.

Прямой ввод/вывод.

Используется только для процессов, строго фиксированных во времени и полностью определенных. Процедуры ввода или вывода выполняются независимо от состояния периферийного устройства. Процедуры прямого ввода/вывода в чистом виде возможны только при работе с всегда готовыми к обмену простейшими устройствами, для которых точно известно время выполнения операции (например, индикатор). Они являются составными элементами более сложных процедур программно-управляемого обмена – условного ввода/вывода и ввода/вывода по прерыванию.

Прямой ввод/вывод реализуется с помощью портов пространства IOS. Порты ввода/вывода являются простейшими схемными элементами, на основе которых реализуется связь с периферийными устройствами. Они образуют первый, наиболее близкий к МП уровень аппаратных средств подсистемы ввода/вывода. В простейшем случае этот уровень является единственным.

Быстродействия шинных формирователей и регистровых схем достаточно, чтобы поддерживать обмен с максимальной для МП скоростью, а периферийные устройства считаются всегда готовыми к обмену (поэтому такой обмен называется синхронным). Если быстродействия этих элементов недостаточно для поддержания обмена с максимальной для МП скоростью, необходимо использовать расширение длительности цикла магистрали с помощью сигнала готовности READY.

Условный ввод/вывод.

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

Типичное решение проблемы синхронизации обмена состоит в использовании условного ввода/вывода. При условном вводе/выводе операции обмена сопровождаются специальным сигналом готовности RDY, вырабатываемом периферийным устройством и входящим в состав его слова состояния SW. Этот сигнал служит для информирования МП о готовности периферийного устройства принять или передать новые данные. После завершения операции ввода/вывода сигнал готовности (соответствующий разряд слова состояния SW) должен быть снят и выставлен заново только при новой готовности к обмену. С этой целью периферийное устройство следует проинформировать об окончании операции, для чего используется включенный в управляющее слово CW сигнал подтверждения ACK. Протокол обмена служебной информацией такого типа называется квитированием. Он обеспечивает надежную асинхронную передачу данных со скоростями, определяемыми периферийным устройством.

Состояние сигнала готовности RDY может быть определено микропроцессором путем чтения регистра состояния, в котором находится слово состояния ПУ, через соответствующий порт ввода. Сигнал подтверждения ACK может формироваться микропроцессором путем записи управляющего слова в регистр управления через соответствующий ему порт вывода. Такой вариант формирования сигналов квитирования называется программным квитированием.

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

Признаком окончания операции может служить само обращение к порту данных. Это упрощает как схему порта, так и процедуру обмена, освобождая пользователя от работы с управляющим словом. При этом на входе порта ввода предусматривается регистр-защелка, фиксирующий входные данные по стробу STB, генерируемому периферийным устройством. Запись во входной буфер устанавливает флажок готовности IBF (Input Buffer Full), инициируя операцию ввода. Флажок сбрасывается автоматически при чтении МП содержимого входного буфера. При выводе роль флажка готовности выполняет флажок OBF (Output Buffer Full). Сигналом окончания операции вывода и установки флажка OBF служит сигнал подтверждения ACK, генерируемый периферийным устройством.

Ввод/вывод по прерыванию.

Эффективность работы микропроцессорной системы может быть существенно повышена, если отказаться от малопроизводительного ожидания готовности ПУ на программном уровне и передать эту функцию специальным аппаратным средствам. В это время процессор может выполнять некоторую полезную работу, связанную с обработкой данных или обслуживанием других ПУ.

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

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

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

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

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


 

Понятие прерывания процессора. Организация подсистемы прерываний в МПС. Контекстное переключение. Организация радиальной системы прерываний. Метод поллинга. Организация векторной системы прерываний. Вектор прерывания.

 

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

Кроме обслуживания ПУ (выполнения обмена) в микропроцессорной системе существуют и другие события, которые могут вызвать прерывание процессора. Типы прерываний зависят от конкретной микропроцессорной системы. Прерывания распадаются на два основных класса:

1) внешние прерывания. Вызываются асинхронными событиями, которые происходят вне прерываемой программы. Например, прерывания от таймера или подсистемы ввода/вывода;

2) внутренние прерывания. Вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями. Например:

- арифметическое переполнение, попытка деления на 0, переполнение или исчезновение порядка при выполнении операций с плавающей запятой;

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

- прерывания вызывает попытка использовать незадействованный код операции, а также попытка использовать привилегированные команды в пользовательском режиме;

- внутренние прерывания могут вызываться также сбоями системы, например, ошибкой четности;

- при выполнении специальных команд.

Прерывание программы по требованию ПУ не должно оказывать на прерванную программу никакого влияния кроме увеличения времени ее выполнения за счет приостановки на время выполнения подпрограммы обработки прерывания. Для этого после приема запроса на прерывание состояние МП необходимо сохранить. Для того чтобы прерванная программа могла быть продолжена после обслуживания очередного запроса на прерывание с того места, на котором она была приостановлена, состояние процессора должно быть восстановлено. Сохранность состояний сигналов управления в аппаратуре обеспечивается тем, что фиксация прерывания, а, следовательно, переход к его обработке и возврат к прерванной программе осуществляются в строго определенные моменты времени, когда состояния этих сигналов однозначны и известны. Программа состоит из ряда команд, выполнение которых приводит к изменению состояния процессора. Это изменение дискретно: состояние наблюдается лишь в отдельные моменты времени – точки наблюдения, которые соответствуют начальным и конечным моментам выполнения команд. Таким образом, фиксация прерывания осуществляется в конце очередного командного цикла перед фазой выборки следующей команды. В этом случае состояние процессора определяется содержимым его программно-доступных регистров и вектора состояния и называется контекстом процессора. Под вектором состояния понимается содержимое внутренних регистров процессора, в которых может храниться информация трех типов:

1) информация о состоянии процессора, которая включает

- состояние выполнения. МП может находиться либо в состоянии выполнения команд (в активном состоянии), либо в состоянии ожидания, когда выполнение прекращается;

- режим – пользовательский или системный;

- маски прерывания;

2) информация о доступном контексте в памяти и соответствующих правах доступа, например, таблицы сегментов, указатели защиты памяти и т.п.;

3) информация о ходе выполнения текущей программы, которая включает признаки выполнения операции (код условия) и адрес следующей выполняемой команды.

Контекст процессора может быть сохранен в памяти микропроцессорной системы, а затем восстановлен непосредственно перед возвратом в прерванную программу. Этот процесс называется контекстным переключением и выполняется он как аппаратными, так и программными средствами. Всякий раз, когда процессор воспринимает запрос на прерывание, он активизирует процедуру обслуживания, передавая ее стартовый адрес в программный счетчик. Чтобы не потерялось старое содержимое программного счетчика, которое является адресом возврата в прерванную программу, оно должно быть автоматически сохранено. Лучше всего для этой цели использовать системный стек, тогда возврат к прерванной программе будет заключаться в передаче управления по адресу, находящемуся на вершине стека. Обычно аппаратными средствами обработки прерывания автоматически сохраняется не только содержимое программного счетчика, но и весь вектор состояния процессора (как правило, содержимое программного счетчика и регистра состояния процессора). В этом же стеке можно сохранять и остальную часть текущего контекста процессора – программно-доступные регистры. Как правило, это выполняется программно с помощью обычных команд типа PUSH (запись в стек) непосредственно в подпрограмме обработки прерывания. При этом восстановление контекста осуществляется с помощью команд типа POP (чтение из стека). Контекстное переключение, выполняемое командами PUSH и POP, может занимать значительное время. Для его сокращения вводятся специальные команды PUSHA и POPA, которые сохраняют в стеке и восстанавливают сразу весь набор регистров МП. Еще один механизм контекстного переключения связан с переключением регистровых наборов в МП. Кроме того, контекстное переключение может выполняться и полностью аппаратным путем.

Таким образом, хотя существует несколько различных способов обработки прерывания, следующая последовательность действий присуща большинству микропроцессорных систем:

1) фиксируются характеристики произошедшего прерывания (тип прерывания);

2) сохраняется состояние прерванной программы – контекст процессора;

3) анализируется тип прерывания и передается управление соответствующей подпрограмме обработки этого прерывания;

4) обрабатывается прерывание – выполняется соответствующая подпрограмма;

5) восстанавливается контекст процессора, что приводит к возобновлению выполнения прерванной программы.

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

Во всех системах прерываний предусмотрен механизм программно-управляемой блокировки запросов, который реализуется с помощью набора флажков, разрешающих или запрещающих восприятие запросов на прерывание процессором. Эти флажки образуют маску прерываний и упаковываются в отдельный регистр маски прерываний, либо входят в состав регистра флагов (признаков) процессора.

Существуют две системы прерываний:

- радиальная система прерываний;

- векторная система прерываний.

Организация радиальной системы прерываний. Физический интерфейс простейшей системы прерываний может быть представлен единственной линией запроса на прерывание IRQ (Interrupt ReQuest). Для программиста такая система прерываний представляется в виде отдельной точки входа в процедуру обслуживания.

Формирование запросов на прерывание – запросов ПУ на обслуживание – происходит в контроллерах соответствующих ПУ (рис.25).

Рис. 25 - Простейшая система прерываний

 

В простейших случаях в качестве сигнала запроса прерывания может использоваться сигнал готовности ПУ, поступающий из контроллера ПУ с выхода триггера готовности (соответствующий разряд регистра состояния). Однако такое простое решение обладает существенным недостатком – процессор не имеет возможности управлять прерываниями, т.е. разрешать или запрещать их для отдельных ПУ. В результате организация обмена данными в режиме прерывания с несколькими ПУ существенно усложняется. Поэтому регистр состояния контроллера ПУ дополняют еще одним разрядом – разрешение прерывания. Запись 1 или 0 в этот разряд регистра состояния производится программным путем (прямой вывод) по одной из линий шины данных системной магистрали. Управляющий сигнал ЗАПРОС ПРЕРЫВАНИЯ от ПУ формируется с помощью схемы совпадения только при наличии единиц в разрядах «Готовность ПУ» и «Разрешение прерывания» регистра состояния контроллера ПУ.

При необходимости обслуживания нескольких ПУ в такой системе сигналы запросов на прерывание от всех ПУ поступают на один вход процессора (запросы объединяются по схеме «монтажное ИЛИ»). В этом случае возникает проблема идентификации ПУ, запросившего обслуживания. Данная проблема решается с помощью специальной процедуры, называемой поллингом. Функция поллинга состоит в последовательном опросе состояния всех ПУ и выявлении готовых к обслуживанию. В данном случае поллинг реализуется программным способом путем анализа разряда готовности регистров состояния контроллеров ПУ.

Организация прерываний с программным опросом готовности предполагает наличие в памяти микропроцессорной системы единой подпрограммы обслуживания прерываний от всех ПУ. Структура такой подпрограммы приведена на рис. 26. Обслуживание ПУ с помощью единой подпрограммы обработки прерываний производится следующим образом.

После выполнения очередной команды основной программы процессор проверяет наличие запроса на прерывание от ПУ. Если запрос прерывания есть и в процессоре прерывание разрешено, то МП переключается на выполнение подпрограммы обработки прерываний.

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

 

Рис. 26 - Подпрограмма обслуживания прерываний

 

Приоритет ПУ в системе с программным опросом готовности ПУ однозначно определяется порядком их опроса в подпрограмме обработки прерывания. Чем раньше в подпрограмме опрашивается готовность ПУ, тем меньше время реакции на его запрос и выше приоритет. Приоритет запроса отражает важность и срочность его обслуживания. При назначении приоритетов учитываются частота появления запроса, длительность процесса обслуживания, последствия задержки обслуживания и др. Необходимость проверки готовности всех ПУ существенно увеличивает время обслуживания тех ПУ, которые опрашиваются последними. Это является основным недостатком рассматриваемого способа организации прерываний. Поэтому обслуживание прерываний с опросом готовности ПУ используется только в тех случаях, когда отсутствуют жесткие требования на время обработки запросов прерываний ПУ.



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 988; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.168.56 (0.092 с.)