logo
КС-ZAO / Лекции ЦЭВМруский вариант11

§11.4. Контроллер прерываний

При получении сигнала прерывания контроллер прерываний програм­много автомата передает управление программой команде, расположенной по адресу соответствующего вектора прерывания.

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

После обслуживания прерывания управление возвращается главной прог­рамме при помощи команды RTI (возобновление работы после обслуживания прерывания), в ходе выполнения которой верхнее значение стека счетчика команд выталкивается в счетчик команд; содержимое стека состояний также извлекается для восстановления предыдущего состояния процессора.

Прерывания могут устанавливаться принудительно программными сред­ствами; см. описание регистра IFC ниже.

Благодаря эффективному стеку и программному автомату, обработка не­маскируемых прерываний происходит без задержки (кроме задержки, связанной с синхронизацией), даже при прерывании циклов DO UNTIL. Возможность ис­пользования вложенных прерываний позволяет высокоприоритетным прерываниям прерывать выполняемые в этот момент подпрограммы обслуживания низко­приоритетных прерываний без каких-либо дополнительных задержек.

В процессорах семейства ADSP-2100 имеется ряд теневых регистров, которые могут использоваться как "свежие" регистры АЛУ, умножителя-нако­пителя и устройства сдвига во время обслуживания прерываний. Благодаря этой особенности возможно контекстное переключение регистров в течении одного цикла. Использование теневых регистров описывается в разделе "Регистр состояния режима (MSTAT)" данной главы.

Последовательность обработки прерываний

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

В случае немаскируемого прерывания программный автомат помещает текущее значение счетчика команд (в котором содержится адрес следующей команды) в стек счетчика команд. За счет этого после обслуживания прерывания 1

AY1 MY1 SRI AF MF SRO AR MRO MR1

MR2

Например, следующая команда управления режимом переключает про­цессор с главного набора регистров на работу теневого набора регистров.

ENA SEC.REG;

а команда ниже переключает процессор обратно в режим работы основного ряда регистров:

DIS SEC_REG;

В режиме фиксации состояния переполнения в АЛУ бит состояния AV "застывает", если он раз установился. В этом режиме бит AV устанавливается в случае переполнения и "удерживается" даже тогда, когда в ходе последующих операций АЛУ переполнение не генерируется. Бит AV можно очистить только записав в него 0.

При разрешении режима насыщения регистра AR этот регистр насыща­ется до максимально положительного (Ox7FFF) или отрицательного (0õ8000) значения каждый раз, когда происходит переполнение в АЛУ.

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

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