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

¦                                                ¦

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

¦                                                ¦

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

¦  формат   ¦         смещение вектора           ¦

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

¦      дополнительная информация о состоянии     ¦

+-----------------   процессора   ---------------+

¦    (2,6,12 или, при необходимости, 42 слова)   ¦

L------------------------------------------------6.2.3 Типы исключений

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

cpTRAPcc, CHK, CHK2, CALLM, RTM, RTE и DIV, как это  предусмотрено алгоритмом их выполнения. Кроме того, исключения могут порождаться по запрещенной команде, ошибке адреса, нарушению привилегированности и протоколов обмена с сопроцессором.

6.2.4 Последовательность обработки исключения

Обработка исключения осуществляется в четыре  четко  различимых этапа. На первом шаге делается внутренняя копия регистра состояния. По завершении копирования изменяются биты режимов процессора в регистре состояния. Бит S устанавливается в единицу, что переводит процессор в режим супервизора. Биты T0 и T1 сбрасываются, что освобождает программу обработки исключения от трассировки. При исключениях сброса и прерывания в регистре состояния обновляется также маска приоритета прерываний.

На втором шаге определяется номер вектора исключения. В  случае прерываний процессор в цикле подтверждения прерывания считывает номер вектора из пространства ЦП типа $F. Для исключений, обнаруженных сопроцессором, номер вектора включен в ответный примитив  исключения сопроцессора. Для всех остальных исключений номер вектора выдает внутренняя логика процессора. Полученный номер используется для формирования адреса вектора исключения.

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

Последний шаг одинаков для всех исключений. Определяется  адрес вектора исключения путем умножения номера вектора на 4 и сложения результата с содержимым базового регистра  векторов,  после чего значение  вектора  исключения  загружается  в  программный счетчик (в случае сброса устанавливается также  значение  ISP).

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

6.2.5 Множественные исключения

Ниже описывается поведение процессора при одновременном возникновении нескольких исключений.Исключения в соответствии со своими характеристиками и приоритетами разбиваются на группы,  как это показано в Таблице 6-3.

Отношение приоритета для двух исключений определяет,  какое  из них будет обработано первым в случае, если оба исключения  возникли одновременно. Под термином "обработка" здесь подразумевается выполнение четырех ранее описанных шагов:

1) изменить, если необходимо, режимы процессора,

2) определить вектор исключения,

3) сохранить старый контекст процессора,

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

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

(из числа упомянутых в Таблице 6-3), одновременно находящихся в состоянии ожидания.

Таблица 6-3. Группы исключений

----------T--------------------T------------------------------¬

¦групповой¦    исключение и    ¦                              ¦

¦ приори- ¦   относительный    ¦        характеристики        ¦

¦   тет   ¦     приоритет      ¦                              ¦

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

¦  0      ¦0.0 - сброс         ¦прекращает всю обработку (ко- ¦

¦         ¦                    ¦манд или исключений), не со-  ¦

¦         ¦                    ¦храняет старый контекст       ¦

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

¦  1      ¦1.0 - ошибка адреса ¦приостанавливает обработку(ко-¦

¦         ¦                    ¦манд или исключений) и сохра- ¦

¦         ¦1.1 - ошибка шины   ¦няет внутренний контекст      ¦

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

¦  2      ¦2.0 - BKPT #n,      ¦ обработка исключения является¦

¦         ¦CALLM, CHK, CHK2,   ¦ составной частью алгоритма   ¦

¦         ¦внутрикомандное     ¦ выполнения команды           ¦

¦         ¦исключение cp, нару-¦                              ¦

¦         ¦шение протокола cp, ¦                              ¦