Скачиваний:
58
Добавлен:
16.04.2013
Размер:
119.3 Кб
Скачать

Режимы работы процессора

PG

РЕ

Режим процессора

0

0

Реальный режим

0

1

Защищенный режим без использования страничной адресации

1

0

Запрещенная комбинация (вызывает исключение типа #GP-нарушение защиты)

1

1

Защищенный режим с использованием страничной адресации

Отметим, что биты МР, ЕМ, TSвлияют также на выполнение инструкций, реализуемых блоком ММХ. В табл. $.3 указано, как реагирует процессор на поступление инструкцийFPUили ММХ в зависимости от установленного значения этих битов.

Таблица $.3.

Режимы работы блоков fpu и ммх

Биты CR0

Выполняемые инструкции

ЕМ

МР

TS

Инструкции FPU

WAIT (FWAIT)

Инструкции ММХ

0

0

0

Выполняется

Выполняется

Выполняется

0

0

1

Исключение #NM

Выполняется

Исключение #NM

0

1

0

Выполняется

Выполняется

Выполняется

0

1

1

Исключение #NM

Исключение #NM

Исключение #NM

1

0

0

Исключение #NM

Выполняется

Исключение #UD

1

0

1

Исключение #NM

Выполняется

Исключение #UD

1

1

0

Исключение #NM

Выполняется

Исключение #UD

1

1

1

Исключение #NM

Исключение #NM

Исключение #UD

Младшие 16 разрядов регистра CR0 для совместимости с защищенным режимом микропроцессора 80286 называют словом состояния машины MSW(MachineStateWord). Инструкции загрузки и сохраненияLMSW, SMSWдля совместимости с микропроцессором 80286 работают только с младшими 16 разрядами регистра CR0. Для загрузки или сохранения всего содержимого регистра CR0 используютсяMOV CR0,r/mилиMOV r/m,CR0, выполняемые программами, имеющими максимальный уровень привилегии 0.

Регистр CR1не используется.

Регистр CR2(PageFaultLinearAddress) хранит 32-битный линейный адрес, по которому был получен последний отказ страницы памяти.

31

12

11

5

4

3

2

1

0

а)

Базовый адрес каталога страниц

Резервировано

PCD

PWT

31

5

4

3

2

1

0

б)

Базовый адрес таблицы указателей каталогов страниц

PCD

PWT

0

0

0

Рис. $.8. Формат содержимого регистра управления CR3 при 32-разрядной адресации (а) и при 36-разрядной адресации (б)

Регистр CR3(PageDirectoryBaseRegister) в старших 20 битах хранит физический базовый адрес таблицы каталога страниц. Из младших 12 бит в процессорах 486+ используются следующие:

PCD (Page-LevelCacheDisable) – приPCD=1 запрещает кэширование страниц. Это один из источников аппаратного сигналаPCDдля управления внешним кэшем.

PWT (Page-LevelWritesTrough) – определяет режим работы кэш-памяти при страничной адресации: при установке значенияPWT=1 реализуется режим сквозной записи (write-through), при установкеPWT=0 реализуется режим обратной записи (write-back). Это один из источников аппаратного сигнала PWT для управления внешним кэшем.

31

11

10

9

8

7

6

5

4

3

2

1

0

00

. . . . . .

00

OSXMM

EXCPT

OSFXSR

СЕ

PGE

МСЕ

РАЕ

PSE

DE

TSD

PVI

VME

Рис. $.9. Формат содержимого регистра управления CR4

Регистр CR4(присутствует в процессорах Pentium и выше) содержит биты разрешения архитектурных расширений. Назначение бит регистра CR4 представлено ниже.

VME(Virtual-8086ModeExtensions) – разрешает приVME=1 использование виртуального флага прерываний в режимеV86, что позволяет повысить производительность за счет сокращения лишних вызовов монитора виртуальных машин.

PVI (Protected-ModeVirtualInterrupts) – разрешает приPVI=1 использование виртуального флага прерываний в защищенном режиме.

TSD (TimeStampDisable) – превращение (приTSD=1) инструкцииRDTSC(чтение счетчика меток реального времени) в привилегированную.

DE (DebuggingExtensions) – расширение возможностей отладки (разрешение точек останова на инструкциях обращения к заданным портам ввода/вывода).

PSE(PageSizeExtension) – расширение размера страницы (4 Кбайт и 4 Мбайт).

РАЕ(PhysicalAddressExtension) – расширение физического адреса (страницы 4 Кбайт и 2 Мбайт, 36-битная адресация).

МСЕ(Machine-CheckEnable) – разрешение машинного контроля (выработки исключения #МС по машинной ошибке) (Р5+).

PGE(PagingGlobalExtensions) – разрешение глобальности в страничной переадресации. ПриPGE=1, по инструкцииMOV CR3вTLBочищаются только элементы с не установленным битом глобальностиG(P6+).

РСЕ(Performance-monitoringCounterEnable) – разрешение обращения к счетчикам событий (инструкцияRDPMC) на любом уровне привилегий (приPCE=0).

OSFXSR(OSFXSave/Store) – флаг использования инструкцийFXSAVE/FXRSTORдля быстрого сохранения и восстановления состоянияFPU/MMXпри переключении контекста. При инициализации процессора флаг обнуляется; он может быть установлен операционной системой, если она эти инструкции использует, а процессор поддерживает. Признак поддержки инструкции – битFXSR(бит 24 вEDX) после вызоваCPUID(1) (P6+).

OSXMMEXCPT(OSXMMException) – флаг поддержки операционной системой исключений от блока ХММ (SIMD-инструкций с плавающей точкой) (P6+).

Системные адресные регистрыпредназначены для ссылок на сегменты и таблицы в защищенном режиме (рис.$.10).

Регистры системных адресов

47

16

15

0

GDTR

IDTR

Базовый адрес

Размер таблицы

15

0

Дескрипторы сегментов

LDTR

TR

Базовый адрес

Размер сегмента

Атрибуты сегмента

Рис.$.10. Системные адресные регистры

Регистры GDTR(GlobalDescriptorTableRegister) иIDTR(InterruptDescriptorTableRegister) программно загружаются 6-байтнымн операндами, включающими 32-битный линейный базовый адрес и 16-битный лимит глобальной таблицы дескрипторов и таблицы дескрипторов прерываний. В регистр задачиTR(TaskRegister) и регистр селектора локальной таблицы дескрипторовLDTR(LocalDescriptorTableregister) загружаются 16-битные селекторы дескрипторов сегмента состояния задачиTSSи локальной таблицы дескрипторовLDT. Эта загрузка вызывает автоматическую загрузку в теневые, программно-недоступные части регистров (выделены серым цветом) самих дескрипторов, содержащих 32-битные поля линейного базового адреса и размера, а также полей атрибутов.

Регистры отладки(DebugRegister) предназначены для задания и управления отладочными точками останова.

Регистры DR0...DR3(LinearBreakpointAddress0...3) хранят 32-битные линейные адреса точек останова.

Регистры DR4, DR5в процессорах 80386 и 486 не используются, обращение к ним эквивалентно обращению к регистрамDR6,DR7. В процессореPentiumпри включенном расширении отладки обращение к этим регистрам вызывает исключение недопустимого кода операции (#UD).

Регистр DR6(BreakpointStatus) отражает состояние контрольных точек.

Регистр DR7(BreakpointControl) управляет установкой контроль­ных точек.

Регистры проверки или тестирования(TestRegister) первоначально появились вIA-32 как самостоятельные регистры, предназначенные для тестирования элементов кэша (в частности, таблицыTLB):TR3– регистр данных внутреннего кэша,TR4– тестовый регистр состояния кэша,TR5– управляющий регистр тестирования кэша, TR6(TestControl) – управляющий регистр для теста кэширования страниц,TR7(TestStatus) – регистр данных для теста кэширования страниц. Но в процессорахP5+ тестовые регистры включены в группу модельно специфических регистровMSR. Поэтому вP5+, обращение к регистрам по имениTRвызывает исключение #UDнедопустимого кода операции.

Модельно-специфические регистры MSR(Model-SpecificRegisters) предназначены для управления расширениями отладки, мониторингом производительности, машинным контролем, кэшированием областей физической памяти и другими функциями. Их назначение привязывается к архитектуре конкретного процессора, состав меняется от модели к модели, доступ привилегирован. Инструкции обмена с этими 64-битными регистрами подразумевают, что данные находятся в пареEDX:EAX, а номер указывается в регистре ЕСХ, что позволяет неограниченно (до 4 миллиардов) увеличивать число этих регистров.

Доступность регистров различных групп зависит от режима работы процессора и уровня привилегий задачи. В табл. $.4 показана возможность загрузки (load) (занесения значения в регистр) различных регистров и сохранения (save) их в памяти в трех режимах работы процессора.

Таблица $.4.

Соседние файлы в папке M4