Поведение процессора при выполнении команды в зависимости от режима, в котором он находится, страница 12

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

Стоит отметить, что последовательность циклов шины,  используемых процессором для чтения/записи окна, может  не  соответствовать порядку расположения данных в окне.

6.5.1 Обычное 4-словное стековое окно

Данное окно (Рис. 6-3) формируется при исключениях по  прерыванию и ошибкам формата, командами программных ловушек  TRAP  #n, запрещенными командами, эмуляторами A- и F-кодов, а  также  при нарушении привилегированности и предкомандных исключениях  сопроцессора. Образ программного счетчика, в зависимости  от  типа исключения, равен либо адресу следующей команды, подлежащей выполнению, либо адресу команды, вызвавшей исключение.

15                                               0

----------------------------------------------------¬

SP  ->¦                 регистр состояния                 ¦

+---------------------------------------------------+

+ $02 ¦                                                   ¦

+-------------    программный счетчик  -------------+

¦                                                   ¦

+-------------T-------------------------------------+

+ $06 ¦ 0  0  0  0  ¦    смещение вектора                 ¦

L-------------+-------------------------------------Рис. 6-3. Формат $0 - 4-словное окно

6.5.2 Временное 4-словное стековое окно

Данное окно (Рис. 6-4) является временным и формируется в стеке прерываний в процессе обработки исключения  по  прерыванию  при переходе из основного режима в режим  прерывания.  Образ  программного счетчика совпадает со значением, записанным в  обычном

4-словном окне в основном стеке.

15                                               0

----------------------------------------------------¬

SP  ->¦                 регистр состояния                 ¦

+---------------------------------------------------+

+ $02 ¦                                                   ¦

+-------------    программный счетчик  -------------+

¦                                                   ¦

+-------------T-------------------------------------+

+ $06 ¦ 0  0  0  1  ¦    смещение вектора                 ¦

L-------------+-------------------------------------Рис. 6-4. Формат $1 - временное 4-словное окно

6.5.3 Обычное 6-словное стековое окно

Данное окно (Рис. 6-5) формируется при исключениях, обусловленных командами CHK, CHK2, cpTRAPcc, TRAPcc, TRAPV, а  также  при трассировке, делении на нуль и посткомандных исключениях сопроцессора. В поле адреса команды будет  сохранен  адрес  команды, вызвавшей исключение.  Значение  образа  программного  счетчика указывает на следующую  команду,  подлежащую  выполнению,  т.е.

представляет собой адрес, по которому будет передано управление командой RTE.

15                                               0

----------------------------------------------------¬

SP  ->¦                 регистр состояния                 ¦

+---------------------------------------------------+

+ $02 ¦                                                   ¦

+-------------    программный счетчик  -------------+

¦                                                   ¦

+-------------T-------------------------------------+

+ $06 ¦ 0  0  1  0  ¦    смещение вектора                 ¦

+-------------+-------------------------------------+

+ $08 ¦                                                   ¦

+-------------     адрес команды       -------------+

¦                                                   ¦

L---------------------------------------------------Рис. 6-5. Формат $2 - 6-словное окно

6.5.4 Стековое окно внутрикомандного исключения сопроцессора

Данное окно (Рис. 6-6) формируется для трех различных  исключений, связанных с операциями сопроцессора.  Одно  из  исключений возбуждается в случае, когда во время выполнения команды сопроцессора будет считан примитив "произвести внутрикомандное  исключение". Другое - в случае, когда центральным процессором  будет обнаружено нарушение протокола во время выполнения  команды сопроцессора. Наконец, третье - в случае, когда  будет  получен примитив "пустой, разрешены прерывания" и  процессор  определит наличие отложенного прерывания.  Значение  образа  программного счетчика  равно адресу следующего слова, подлежащего выборке из потока команд. Значение адреса  команды  равно  адресу  первого слова команды, выполнявшейся в момент возникновения исключения.

15                                               0

----------------------------------------------------¬

SP  ->¦                 регистр состояния                 ¦

+---------------------------------------------------+

+ $02 ¦                                                   ¦

+-------------    программный счетчик  -------------+

¦                                                   ¦

+-------------T-------------------------------------+

+ $06 ¦ 1  0  0  1  ¦    смещение вектора                 ¦

+-------------+-------------------------------------+

+ $08 ¦                                                   ¦

+-------------     адрес команды       -------------+

¦                                                   ¦

+---------------------------------------------------+

+ $0C ¦                                                   ¦

¦                  внутренние регистры,             ¦

¦                  4 слова                          ¦

+ $12 ¦                                                   ¦

L---------------------------------------------------Рис. 6-6. Формат $9 - стековое окно внутрикомандного исключения сопроцессора (10 слов)

6.5.5 Короткое стековое окно исключения по ошибке шины

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

15                                               0