Детальный проект конвейерного RISC процессора (Глава 5 "Обработка прерываний"), страница 3


быть командой movi2s с адресом назначения SR, новые маски не влияют на MCA вычисляемое Ii.

Переход на ISR

Из маскируемой причины MCA, сигнал JISR(переход на процедуру обработки прерываний) производится как




Активация сигнала JISRвызывает переход на процедуру обработки прерываний. Формально мы можем обрабатывать этот переход также как новую команду Ii+1 или как часть команды Ii. Мы выберем вторую альтернативу, потому что она полнее отражает, как работают аппаратные средства. Однако, для прерванных команд Ii и регистров или сигналов X, мы теперь должны делать различия между

• Xi , который означает значение Xпосле (прерванного) выполнения команды Ii, т.е., после JISR, и

• Xui , который означает значение Xпосле непрерывающегося выполнения команды Ii.

Мы приступаем к определению действия JISR на команду Ii. Уровень прерываний il прерывания

ili = min{j | MCA[j]i = 1}.

Прерывание ilимеет наивысший приоритет среди всех тех прерываний, которые не были маскируемыми в течении Ii и чьи сигналы событий ev[j] были перехвачены. Прерывание il типа continue, repeat или abort. Если оно типа repeat, то за исключением регистров специального назначения ни файл регистров, ни расположение памяти Xне должно быть обновлено. Поэтому мы определим для любых регистров или расположения памяти X

Через SISRмы обозначим адрес начала процедуры обработки прерываний. Тогда переход на ISRреализуется

(DPC, PC)i = (SISR, SISR+ 4).

Адрес возврата для процедуры обработки прерываний сохраняется как




т.е., при прерываниях типа abort адрес возврата не имеет значения. Регистр данных исключения сохраняет данные для  обработчика исключений. Для traps это непосредственная константа команды trap. Для отсутствия страницы (page faults) и нарушения границы в течение загрузки/сохранения это адрес памяти, по которому проводилось неверное обращение:




Для page faults в течении выборки адресом дефектного обращения к памяти команд является DPCi-1, который уже сохранен. Таким образом, нет необходимости сохранять его дважды. Регистр причины исключения ECAсохраняет причину маскируемого прерывания

ECAi = MCAi,

все маскируемые прерывания маскируются


SR = 0,



и старые маски сохраняются как




Таким образом, если прерванная команда установит новые маски и прервется прерыванием типа continue, тогда сохраняются новые маски. На этом завершается командный уровень описания семантики JISR.

Восстановление сохраненных параметров достигается новой командой J-типа rfe (возврат из исключения) определенной в таблице 5.4.


5.3    Процедура обработки прерываний для вложенных прерываний

Вложенные прерывания обрабатываются программным протоколом.  Протокол поддерживает стек прерываний IS. Стек состоит из кадров. Каждый кадр может содержать копию всех регистров общего назначения и всех специальных регистров. Таким образом, в существующей конструкции мы имеем размер кадра 32 + 6 = 38 слов.

Мы обозначим через ISOPверхний кадр стека прерываний. Его базовый адрес содержится в указателе стека прерываний ISP. Для этого указателя мы резервируем регистр специального назначения, а именно

ISP = GPR[30].


Таблица 5.4 Расширение набора команд DLX. За исключением rfe и trap, все команды также инкрементируют PC на четыре. SA– сокращение для регистра специального назначения SPR[SA]; sxt(imm) знакорасширенная версия непосредственной константы.


IR[31:26]

IR[5:0]

действие

Арифметические операции (I-type)

hx08 hx0a

addio subio

RD = RS1 + imm; ovf signaled

RD = RS1 - imm; ovf signaled

Арифметические операции (R-type)

hx00 hx00

hx20 hx22

addo subo

RD = RS1 + RS2; ovf signaled

RD = RS1 - RS2; ovf signaled

Команды специального перемещения (R-type)

hx00 hx00

hx10 hx11

movs2i movi2s

RD = SA SA = RS1

Управляющие команды (J-type)

hx3e hx3f

trap rfe

trap = 1 ;   Edata = sxt(imm)

SR = ESR; PC = EPC; DPC = EDPC