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

Страницы работы

Содержание работы

ГЛАВА 6

РЕЖИМЫ РАБОТЫ ПРОЦЕССОРА

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

Процессор всегда находится в одном из трех режимов: нормальном, исключения или тяжелого останова.  Выполнение  команд,  включая циклы шины по выборке команд и операндов, засылке результатов и при необходимости обмена с сопроцессором проходит в  нормальном режиме процессора. Состояние останова, в которое процессор  переходит при выполнении команды STOP,  является  особым  случаем нормального режима: в нем не генерируются новые циклы шины.

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

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

6.1 ПРИВИЛЕГИРОВАННЫЕ РЕЖИМЫ

Процессор может работать на одном из двух уровней  привилегированности: уровне пользователя и уровне супервизора. Эти  уровни находятся в отношении порядка друг к другу: именно, уровень супервизора обладает более высоким уровнем привилегированности по сравнению с уровнем пользователя. В режиме пользователя  разрешено выполнение не всех команд процессора, в то время как в режиме супервизора разрешено  выполнение  любых  команд.  Уровень привилегированности может быть использован устройствами  управления внешней памятью для контроля и трансляции запросов к ней;

сам процессор использует уровень привилегированности для выбора указателя стека пользователя или супервизора при адресации операндов.

В MC68020 предусмотрен механизм, позволяющий внешним  устройствам организовывать до 256  уровней  привилегированности  внутри уровня  пользователя.  Этот  механизм  является  необязательной частью процедур вызова и возврата из модуля, описанных в ПРИЛОЖЕНИИ D СПЕЦИАЛЬНЫЕ ВОПРОСЫ.

6.1.1 Использование привилегированных режимов

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

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

6.1.2 Режимы супервизора

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

FC0-FC2.

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

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

Если бит M сброшен, MC68020 находится  в  режиме  прерывания  и функционирует как MC68000, MC68008, MC68010 и MC68012 в  режиме супервизора (этот режим по умолчанию устанавливается при сбросе процессора). В качестве указателя системного стека  (SSP)  процессором используется указатель стека  прерываний  (ISP).  Если бит M установлен в единицу, процессор работает в основном режиме и в качестве указателя системного стека (SSP) он  использует указатель основного стека (MSP). Состояние бита M не влияет  на выполнение привилегированных команд. Бит M может быть  установлен или сброшен командами модификации регистра состояния  (MOVE

to SR, ANDI to SR, EORI to SR, ORI to SR и RTE). Процессор сохраняет и восстанавливает состояние этого бита в ходе  обработки исключений.

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

6.1.3 Режим пользователя

Режим пользователя является менее привилегированным. При выполнении команд режим распознается по биту S  регистра  состояния:

если бит S сброшен, то процессор находится в режиме пользователя.

Большинство команд может выполняться в любом режиме. Однако некоторые команды, оказывающие существенное воздействие на систему, отнесены к классу привилегированных и могут  использоваться только в режиме супервизора. К примеру, пользовательским  программам не разрешено выполнять команды STOP или RESET. Для того, чтобы пользовательская программа не могла перейти в  привилегированный режим супервизора, за исключением контролируемых  случаев, все команды, модифицирующие бит S в слове состояния, сделаны привилегированными. Для предоставления пользователю услуг, выполняемых операционной системой в режиме супервизора, используется команда программной ловушки TRAP #n.

Похожие материалы

Информация о работе