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

Циклы шины, генерируемые командами в режиме пользователя, классифицируются как обращения пользователя, что находит свое отражение в значениях кода адресного  пространства,  помещаемых  на линии функционального кода FC0-FC2.  Это  позволяет  устройству управления внешней памятью различать  обращения  супервизора  и пользователя и контролировать доступ к защищенным областям карты адресов. Пока процессор  находится  в  режиме  пользователя, ссылки на указатель системного стека, будь они  явные  (как  на адресный регистр (A7)) или неявные, всегда относятся к указателю стека пользователя (USP).

6.1.4 Изменение режима

Единственная возможность смены уровня привилегированности пользователя на уровень супервизора заключается в переходе к  обработке  исключения,  в  результате чего процессор переводится из режима пользователя в один из режимов супервизора. Тем же путем основной режим супервизора может быть изменен на режим прерывания. При обработке исключения текущее состояние  битов  S  и  M

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

Возврат из режима супервизора в режим пользователя  может  быть осуществлен следующими командами: RTE, MOVE to SR, ANDI to  SR,

EORI to SR. Выполнение команд MOVE to SR, ANDI to SR и EORI  to

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

Команда RTE исследует содержимое стека супервизора с тем, чтобы определить, какое состояние требуется восстановить. Если окно в вершине стека было создано  прерыванием,  программной  ловушкой или исключением, возникшим при выполнении команды,  то  команда

RTE извлекает из стека супервизора сохраненные значения регистра состояния и программного счетчика и восстанавливает их в соответствующих регистрах. После этого процессор  продолжает  выполнение  с  адреса,  определяемого  восстановленным  значением программного счетчика, на уровне привилегированности, определяемом значением бита S восстановленного регистра состояния.

Если окно на вершине стека было создано циклом с ошибкой  шины, то команда RTE восстанавливает из стека  сохраненное  состояние машины в целом.

6.1.5 Типы адресных пространств

Классификация адресных пространств для процессора соответствует типу обращения, устанавливаемому при каждом цикле шины.  Благодаря  указанию типа, возможна внешняя трансляция адресов, контроль доступа, распознавание особых  режимов  процессора,  таких как  подтверждение прерывания. В Таблице 6-1 приведены типы обращений и кодируемые ими соответствующие адресные пространства.

Таблица 6-1. Кодирование адресных пространств

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

¦ FC2 ¦ FC1 ¦ FC0 ¦         адресное пространство           ¦

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

¦  0  ¦  0  ¦  0  ¦   (неопределено, зарезервировано)  *    ¦

¦  0  ¦  0  ¦  1  ¦   пространство данных пользователя      ¦

¦  0  ¦  1  ¦  0  ¦   программное пространство пользователя ¦

¦  0  ¦  1  ¦  1  ¦   (неопределено, зарезервировано)  **   ¦

¦  1  ¦  0  ¦  0  ¦   (неопределено, зарезервировано)  *    ¦

¦  1  ¦  0  ¦  1  ¦   пространство данных супервизора       ¦

¦  1  ¦  1  ¦  0  ¦   программное пространство супервизора  ¦

¦  1  ¦  1  ¦  1  ¦   пространство ЦП                       ¦

L-----+-----+-----+-----------------------------------------* зарезервировано фирмой Motorola для будущего использования

** зарезервировано для определения пользователем

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

6.1.6 Пространство ЦП

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

ЦП для циклов подтверждения прерывания.  MC68020,  кроме  того, обращается к пространству ЦП при попадании  в  точки  останова, при операциях с сопроцессором, а также при  операциях  вызова/возврата_из модулей.

Для порождения циклов обращения к пространству  ЦП  может  быть использована команда MOVES,  что  чревато,  однако,  нарушением правильного функционирования системы. Использовать ее для  этой цели, таким образом, следует с осторожностью.

ПРИМЕЧАНИЕ

Следует   ясно  представлять  себе,  что  адресному пространству ЦП не соответствует никакая физическая память.  Значения, устанавливаемые на адресной шине при функциональном коде 111 (двоичном), используются для внутренних нужд процессора.

6.2 ОБРАБОТКА ИСКЛЮЧЕНИЙ

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

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