Солонина А., Улахович Д. Алгоритмы и процессоры цифровой обработки сигналов (2002) (1095891), страница 51
Текст из файла (страница 51)
Флаг прерывания имеет кажлый аппаратныг1 источник, кроме источников немаскируемых прерываний КГ5ЕТ и )чМ1. В некоторых процессорах, например, процессорах фирмы Техаз!пмгашепи, флаги прерывания хранятся в специалыюи регистре флагов прерывания. 7.3. Типы прерываний При обслуживании прерывания от конкретного исзочника происходит автоматическое обращение к вектору прерывания данного источника — ячейкам памяти данных, содержимое которых определяет тип прерывания: О быстрый, если подпрограмма обслуживания прерывания разлсешается непосредственно в векторе; П долгий, если вектор содержит обращение к более сложной подпрограмме обслуживания прерывания. Быстрые прерывания люгуг использоваться для организации обмена данными между памятью и устройствами ваола7вывола; они позволяют сократить время обслуживания прерывания, поскольку не требуют команд обращения к подпрограмме и возврата из нее; быстрые прерывания предполагают сох анение ("зашелкивание") состояния программного счетчика и автвеатев ческий возврат в основную программу.
Примером быстрого прерывания процессорах 05Р5600х фирллы Масато!а (вектор прерывания состоит из двух ячеек памяти программ) служит двусловная команда ввода данных нанеР х: (<згггг,х1 согласно которой во входной регистр Х! из ячейки Х-памяти данных с адресом %РРРР (соответствующей области связи с внутренней и внешней периферией) поступают данные. После выполнения двуславной команды наняв происходит автоматический возврат в основную програмл~у и ее продолжение. Долгие прерывания используются для более сложной обработки по запрос) на прерывание. Лрн обращении к соответствующим полпраграл~мал~ необходимо сохранять не только значение прас)юимного счетчика (адрес команды, к которой следует вернуться после обслуживания пРеРывания), но также ' состояние процессора на момент прерывания; обычно эта содержимое регистров состояния и/или лругих регистров. Содержимое счетчика и необхолиМых регистров загружается в стек, сохраняется в нем на время выполнения подпрограммы обслуживания прерывания и изымается после возврата из иее (по команде возврата) перел продолжением прерванной програльчы.
Регистры, содержилюе которых сохраняется в стеке, а также программный или аппаратный (автоматический) способ загрузки в стек и изъятия из стека опрелсляются архитектурой процессора. Вложенные прерывания Обслуживаемое прерывание может быть прервано по запросам от источников, иллеюцсих более высокий приоритет. Такие прерывания называются ееожеяяыеи; они люгут быть только долгими, и процедура их обслужпва>нш аналогична обслуживанию обычных прерываний, с той разницей, что прерывается выполнение не основной програлсмы, а полпрограммы обслуживания прерывания ат источника с более низким приоритетом.
Глубина вложенных прерываний определяется объемом стека и спецификой програлвца обработки, т. к, стек используется и лля других целей, в частности, лля реализации аппаратных циклов (в процессорах фирм Мо!аго!а и Апа(оя Пен1ссз) я для повторения блока команд (в процессорах фирмы Текат !пзсгс~лзеасл). В некоторых процессорах, например, фирмы Апа1оя Оен(сея возможна запрещение вложенных прерываний установкой соответствующего бита. Быстрые прерывания не могут прерываться никакими источниками, т. е. не допускают вложенных прерываний. 1.4. Инициализация процессора для работы в состоянии прерывания Инициализация (начальная установка) процессора для возлюжности рабаты в состоянии прерывания предполагает: 1-) установку приоритетов и режимов запуске лля аппаратных прерываний (не заданных по умолчанию); (-) формирование таблицы векторов согласно ранжированию приоритетов источников; П размещение таблицы векторов в памяти программ (выбор страницы при страничной организашш памяти); (-) определение содержимого конкретных векторов; ('.) канфигура~сию общего и индивидуального л~аскированпя; (.') разрешение или запрещение вложенных прерываний (в тех процессорах.
где даплстимы оба варианта) Алгприигы и процессоры цифровой обработки сигналов лава 7. Прерывания 23| 7.5. Обслуживание прерываний Процедура обслуживания прерывания, несмотря па различные технические решения в конкретных процессорах, одинакова для всех пропессаров и условно разделяется на слелующне основпыс фазы: ьг прием запросов па прерывание; (З арбитраж прерываний; (З подтвержление прерывания; П выпачненгче прерывания.
Остановимся коротко на каждом из этих этапов. Прием запросов на прерывание Запрос на прерывание от иеиаекпруезнага источника фиксируется и после этого сразу начинается следу|ошах фаза ега обслуживания — арбитраж. Запрос на прерывание от таскир)или|го источника таки,е идентифицируется, однако, в отличие от немаскируел|ых прерываний, после этого автоматически выполняются дополнительные действия в следукндей последовательности: С) устанавливается флпг прерывания соответствующего источника; (З проверяется состояние битв общего лиюкираеания; в зависимости от ега состояния возможны две ситувпии: ° первая ситуаци» бит общего маскирования прерывания ус|на|те|ел: следовательно, все маскируел|ые прерывания зпггрегценлц тогда текуггглгг програмл|а продолжается, игнорируя запросы на прерывания от всех маскируемых исто пщков; програл|ма может быть прервана только |ю запросу немаскируемого програмл|ного или аппаратного источника; состояние бита общего л|аскировання люжет измениться в халс выполнения программы с помощью соответствующей кол|анды, тогча происходит автоматический переход ко второй ситуации; ° вторая гитупци».
бит общего маскирования прерывания сброшен; следовательно, за|грег|гение илн разрешение прерыпания данного источ|п|ка определяется только состоянием бита иггдггяггдущгьнага маскирования; (З проверяется состояние бита индивидуагыюга маскирования ланного источника и также возможны две ситуапии: ° первая с|инуаци». бит установлен, следовательно, прерывания по заиросам от данного источника зпирещены, и программа щюдолжается, |и'- порируя запросы от этого источника; вторая с|ииуациж бпт сброшен. следовательно, прерывания по запросам от данного источника рпгре|иены. поэтому для данного источника начинается следующая фаза его абслуж|щашщ прерывания — арбитрпяе Описанная пропелура принципиально не меняется, если общее и индивидуадьное маскирование определяется по состоянию двух битов, наприл|ср„как в пропессорах фирмы Магога)а.
Дрбитраж прерываний гчрбитраж прерываний необходим лли разрешения конфликтной с|пуапии, когла одно нз прерываний выполняется (последняя фаза обслуживания прерывания), несколько прерываний стоят в очереди на выполнение и посту- дают новые запросы па прерывания. )|лрбггтраж всех имеющихся на данный люмент запросов происхолпт каждый рвз заново |гааге |гоги|у|тенг||| сигнала иадгят р.ждеггг|я нрерывпиия. В этот момент все поступившие запросы па прерывания ранжируются по приоритетам источников. Для прерыва|щя с выспщм приоритетом начинается следующая фаза — выпочнепие прерывания, остальные прерывания, называсМые ояыазкенныии (или ожидающими).
ставятся в очередь на выполнение в порядке убывания своих приоритетов. Очередность выполнения может измениться в результате нового арбитража, если к мамонту поступления сигмали подтвержде|шя появились новые запросы на прерывание.
Подтверждение прерывания Неиаскггруеггое прерывание подтверждается иемелленно после его ндснтификапии или, если одновременно поступило нескачько запросов на немаскируемые прерывания, сразу после арбитража этих запросов. Для лгаскируемого рпзреигеннога прерывания автоматически выполняются следующие действия: |З уста|иаливается флаг прерывания обслуживаел|ого источника; О производится общее маскирование (запрещение всех прерываний, кроме немаскируел|ых): 0 происходит обращение к вектору прерывания обслуживаемого источника; Гз после выборки первого илн второго слова кол|анды (в зависимости от архитектуры пропсссора) гснсрирустся сгггнаг ггадтаерзкденггя; (З сбрасывается флаг обслуживаемого прерывания; л) пролалжается выполнение прерывания и олповремеппо возобновляется пропесс арбитража.