Регистр состояния машины
Регистр состояния машины
Процесс трансляции адресов управляется режимом активных и неактивных тегов и состоянием процессора. Состояние процессора определяется специальным регистром, называемым регистром состояния машины MSR (Machine State Register). Разряды этого регистра управляют некоторыми операциями процессора, в том числе трансляцией адреса. В главе 9 мы рассмотрим этот регистр и способ изменения его разрядов. А пока, чтобы лучше понять трансляцию адреса, затронем лишь несколько разрядов MSR, а именно:
•Разряд 64-разрядного режима (MSRSF):
— процессор работает 32-разрядном режиме;
— процессор работает 64-разрядном режиме.
•Разряд перемещения команд (MSRIR):
— трансляция адреса команды отключена;
— трансляция адреса команды: включена.
•Разряд перемещения данных (MSRDR):
— трансляция адреса данных отключена;
— трансляция адреса данных включена.
•Разряд защиты C2 (MSRC2):
— защита C2 отключена;
— защита C2 включена.
•Проблемное состояние (MSRPR):
— процессор может исполнять любые команды;
— процессор может исполнять только непривилегированные команды.
•Пользовательское состояние (MSRUS):
— исполняется код ОС;
— исполняется пользовательский код.
Для определения размера адреса в процессе его трансляции используется разряд 64-разрядного режима (MSRSF). Например, в 32-разрядном режиме архитектура PowerPC определяет, что эффективный адрес имеет длину лишь 32 разряда. В режиме активных тегов процессоров AS/400 аппаратура поддерживает только 64-разрядный режим. Таким образом, SLIC, управляющий значениями разрядов MSR, будет устанавливать только 64-разрядный режим.
Разряды перемещения команд (MSRIR) и данных (MSRDR) позволяют процессору работать в режиме реальной адресации. Когда SLIC отключает перемещение, механизмы трансляции адреса не используются, и младшие 52 разряда эффективного адреса передаются как реальный адрес непосредственно подсистеме памяти. Подсистема памяти состоит из памятей кэша и основной. В архитектуре PowerPC для команд и данных — раздельные кэши, и соответственно отдельные разряды перемещения. Такая модель называется гарвардским кэшем[ 70 ].
Первоначально бит защиты С2 (MSRC2) предназначался для того, чтобы вынуждать механизм трансляции адреса использовать сегментные регистры для всех пользовательских обращений, если процессор работает в режиме активных тегов и защита С2 включена. Использование системных таблиц гарантировало, что при включенной защите С2 ОС может контролировать и регистрировать доступ пользователей к любым объектам. Хотя данный разряд по-прежнему присутствует в некоторых процессорах PowerPC, он не используется для аудита С2. Вместо этого на уровне защиты 50 (защита С2) мониторинг и регистрацию пользовательского доступа компонент защиты SLIC осуществляет непосредственно, без использования сегментных регистров.
Разряд проблемного состояния (MSRPR) используется в процессе трансляции адреса и для защиты памяти. Он определяет, может ли процессор исполнять привилегированные команды PowerPC. Не следует путать эти привилегированные команды с привилегированными командами MI (такими как «PWRDWNSYS,» с которой мы встречались в главе 7) — привилегированные команды PowerPC исполняет только SLIC. Примером привилегированных команд PowerPC могут служить команды работы с тегами, например «lq».
Разряд пользовательского состояния (MSRUS) поддерживает уровни защиты AS/ 400 от 40 и выше. Он позволяет различать системное и пользовательское состояние процесса. Разряд пользовательского состояния определяет, могут ли полномочия быть помещены в указатель, и может ли процесс выполнять привилегированные команды MI. Данный разряд используется также для защиты памяти. Обратите внимание, что разряд пользовательского состояния также задействован только в режиме активных тегов.