Регистр управления - Control register
Регистр управления представляет собой регистр процессора , который изменяет или контролирует общее поведение процессора или другого цифрового устройства. Общие задачи, выполняемые регистрами управления, включают управление прерываниями , переключение режима адресации , управление поисковым вызовом и управление сопроцессором .
Регистры управления в серии x86
CR0
Регистр CR0 имеет длину 32 бита на процессорах 386 и выше. На процессорах x64 в длинном режиме он (и другие регистры управления) имеет длину 64 бита. CR0 имеет различные управляющие флаги, которые изменяют базовую работу процессора.
Немного | Имя | Полное имя | Описание |
---|---|---|---|
0 | PE | Защищенный режим Включить | Если 1, система находится в защищенном режиме , иначе система находится в реальном режиме |
1 | Депутат | Сопроцессор монитора | Управляет взаимодействием инструкций WAIT / FWAIT с флагом TS в CR0 |
2 | ЭМ | Эмуляция | Если установлено, модуль с плавающей запятой x87 отсутствует, если сброшен, присутствует FPU x87 |
3 | TS | Задача переключена | Позволяет сохранять контекст задачи x87 при переключении задачи только после использования инструкции x87 |
4 | ET | Тип расширения | На модели 386 он позволял указать, какой внешний математический сопроцессор - 80287 или 80387. |
5 | NE | Числовая ошибка | Включите внутренний отчет об ошибках x87 с плавающей запятой, если он установлен, иначе включает обнаружение ошибок x87 в стиле ПК |
16 | WP | Защита от записи | Если установлено, ЦП не может писать на страницы, доступные только для чтения, если уровень привилегий равен 0. |
18 | ЯВЛЯЮСЬ | Маска выравнивания | Проверка выравнивания включена, если установлен AM, установлен флаг AC (в регистре EFLAGS ) и уровень привилегий равен 3 |
29 | NW | Не писать через | Глобально включает / отключает кеширование со сквозной записью |
30 | CD | Кеш отключен | Глобально включает / отключает кеш памяти |
31 год | PG | Пейджинг | Если 1, включите пейджинг и используйте регистр CR3 , иначе отключите пейджинг. |
CR1
Зарезервировано, ЦП выдаст исключение # UD при попытке доступа к нему.
CR2
Содержит значение, называемое линейным адресом ошибки страницы (PFLA). Когда происходит сбой страницы, адрес, к которому программа пыталась получить доступ, сохраняется в регистре CR2.
CR3
Используется, когда включена виртуальная адресация , следовательно, когда бит PG установлен в CR0. CR3 позволяет процессору преобразовывать линейные адреса в физические адреса, находя каталог страниц и таблицы страниц для текущей задачи. Обычно старшие 20 бит CR3 становятся базовым регистром каталога страниц (PDBR), в котором хранится физический адрес записи каталога первой страницы. Если бит PCIDE в CR4 установлен, младшие 12 битов используются для идентификатора контекста процесса (PCID).
CR4
Используется в защищенном режиме для управления такими операциями, как поддержка virtual-8086, включение точек останова ввода-вывода, увеличение размера страницы и исключения машинной проверки .
Немного | Имя | Полное имя | Описание |
---|---|---|---|
0 | VME | Расширения виртуального режима 8086 | Если установлено, включает поддержку флага виртуального прерывания (VIF) в режиме virtual-8086. |
1 | ПВИ | Виртуальные прерывания в защищенном режиме | Если установлен, включает поддержку флага виртуального прерывания (VIF) в защищенном режиме. |
2 | TSD | Time Stamp Disable | Если установлено, инструкция RDTSC может выполняться только в кольце 0 , в противном случае RDTSC может использоваться на любом уровне привилегий. |
3 | DE | Расширения отладки | Если установлено, включает прерывания на основе регистра отладки при доступе к пространству ввода-вывода . |
4 | PSE | Расширение размера страницы | Если не задано, размер страницы составляет 4 КиБ, в противном случае размер страницы увеличивается до 4 МБ.
Если PAE включен или процессор работает в длинном режиме x86-64, этот бит игнорируется. |
5 | PAE | Расширение физического адреса | Если установлено, изменяет макет таблицы страниц для преобразования 32-битных виртуальных адресов в расширенные 36-битные физические адреса. |
6 | MCE | Исключение проверки машины | Если установлено, разрешает прерывание проверки машины. |
7 | PGE | Страница Global Enabled | Если установлено, трансляции адресов (записи PDE или PTE) могут совместно использоваться между адресными пространствами. |
8 | PCE | Включение счетчика мониторинга производительности | Если установлено, RDPMC может выполняться на любом уровне привилегий, иначе RDPMC может использоваться только в кольце 0. |
9 | OSFXSR | Поддержка операционной системой инструкций FXSAVE и FXRSTOR | Если установлено, включает инструкции Streaming SIMD Extensions (SSE) и быстрое сохранение и восстановление FPU. |
10 | OSXMMEXCPT | Поддержка операционной системы для немаскированных исключений с плавающей запятой SIMD | Если установлено, включает немаскированные исключения SSE. |
11 | UMIP | Предотвращение инструкций в пользовательском режиме | Если установлено, инструкции SGDT, SIDT, SLDT, SMSW и STR не могут быть выполнены, если CPL> 0. |
12 | LA57 | (не указано) | Если установлено, включает 5-уровневую подкачку. |
13 | VMXE | Включены расширения виртуальных машин | см. виртуализацию Intel VT- x86 . |
14 | SMXE | Включены расширения безопасного режима | см. Trusted Execution Technology (TXT) |
16 | FSGSBASE | Включает инструкции RDFSBASE, RDGSBASE, WRFSBASE и WRGSBASE. | |
17 | PCIDE | PCID Включить | Если установлено, включает идентификаторы контекста процесса (PCID). |
18 | OSXSAVE | XSAVE и расширенные состояния процессора включены | |
20 | SMEP | Включение защиты выполнения в режиме супервизора | Если установлено, выполнение кода в вышестоящем кольце вызывает ошибку . |
21 год | SMAP | Supervisor Mode Предотвращение доступа Включить | Если установлено, доступ к данным в вышестоящем кольце вызывает ошибку . |
22 | PKE | Ключ защиты включить | См. Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32. |
CR5-7
Зарезервировано, тот же случай, что и CR1.
Дополнительные регистры управления в серии x86-64
EFER
Регистр включения расширенных функций (EFER) - это регистр для конкретной модели, добавляемый в процессор AMD K6 , чтобы разрешить включение инструкции SYSCALL / SYSRET, а затем для входа и выхода из длительного режима . Этот регистр становится архитектурным в AMD64 и принят Intel как IA32_EFER. Его номер MSR - 0xC0000080.
Немного | Цель |
---|---|
0 | SCE (расширения системных вызовов) |
1 | DPE (только AMD K6: включение предварительной выборки данных) |
2 | SEWBED (только AMD K6: отключение спекулятивного EWBE #) |
3 | GEWBED (только AMD K6: глобальное отключение EWBE #) |
4 | L2D (только AMD K6: отключение кэша L2) |
5-7 | Зарезервировано, читается как ноль |
8 | LME (включение длительного режима) |
9 | Зарезервированный |
10 | LMA (активный длинный режим) |
11 | NXE ( разрешение без выполнения ) |
12 | SVME (включение защищенной виртуальной машины ) |
13 | LMSLE (включение ограничения сегмента в длинном режиме) |
14 | FFXSR (Fast FXSAVE / FXRSTOR) |
15 | TCE (расширение кэша переводов) |
16–63 | Зарезервированный |
CR8
CR8 - это новый регистр, доступный в 64-битном режиме с использованием префикса REX. CR8 используется для определения приоритета внешних прерываний и называется регистром приоритета задач (TPR).
Архитектура AMD64 позволяет программному обеспечению определять до 15 классов приоритета внешних прерываний. Классы приоритета пронумерованы от 1 до 15, причем класс приоритета 1 является самым низким, а класс приоритета 15 - самым высоким. CR8 использует четыре младших бита для определения приоритета задачи, а оставшиеся 60 битов зарезервированы и должны быть записаны с нулями.
Системное программное обеспечение может использовать регистр TPR, чтобы временно блокировать прерывания с низким приоритетом от прерывания задачи с высоким приоритетом. Это достигается путем загрузки TPR со значением, соответствующим прерыванию с наивысшим приоритетом, которое должно быть заблокировано. Например, загрузка TPR со значением 9 (1001b) блокирует все прерывания с классом приоритета 9 или меньше, позволяя распознавать все прерывания с классом приоритета 10 или более. Загрузка TPR с 0 разрешает все внешние прерывания. Загрузка TPR с 15 (1111b) отключает все внешние прерывания.
При сбросе TPR сбрасывается в 0.
XCR0 и XSS
XCR0, или регистр расширенного управления 0, представляет собой регистр управления, который используется для переключения хранения или загрузки регистров, связанных с конкретными функциями ЦП, с помощью инструкций XSAVE / XRSTOR. Он также используется с некоторыми функциями для включения или отключения способности процессора выполнять соответствующие инструкции. Доступ к нему можно получить с помощью привилегированных инструкций XSETBV и непривилегированных XGETBV.
Немного | Цель |
---|---|
0 | X87 (x87 FPU / MMX State, примечание, должно быть '1') |
1 | SSE (включение набора функций XSAVE для регистров MXCSR и XMM) |
2 | AVX (включение AVX и набор функций XSAVE можно использовать для управления регистрами YMM) |
3 | BNDREG (включение MPX и набор функций XSAVE могут использоваться для регистров BND) |
4 | BNDCSR (включение MPX и набор функций XSAVE могут использоваться для регистров BNDCFGU и BNDSTATUS) |
5 | opmask (включение AVX-512 и набор функций XSAVE могут использоваться для opmask AVX, AKA k-mask, regs) |
6 | ZMM_hi256 (включение AVX-512 и набор функций XSAVE можно использовать для верхних половин нижних регистров ZMM) |
7 | Hi16_ZMM (включение AVX-512 и набор функций XSAVE можно использовать для верхних регистров ZMM) |
8 | Зарезервированный |
9 | PKRU (набор функций XSAVE может использоваться для регистра PKRU, который является частью механизма ключей защиты .) |
10 | Зарезервировано (должно быть "0") |
11 | Состояние пользователя Control-Flow Enforcement Technology (CET) |
12 | Состояние супервизора Control-Flow Enforcement Technology (CET) |
13–63 | Зарезервировано (должно быть "0") |
Также существует IA32_XSS MSR, который находится по адресу 0DA0h. IA32_XSS MSR управляет битами XCR0, которые считаются состоянием «супервизора» и должны быть невидимы для обычных программ. Он работает с привилегированными инструкциями XSAVES и XRSTORS, добавляя состояние супервизора к данным, с которыми они работают. Проще говоря, если состояние X87 было включено в XCR0, а состояние PT было включено в IA32_XSS, инструкция XSAVE сохраняла бы только состояние X87, в то время как привилегированный XSAVES сохранял бы состояния X87 и PT. Поскольку это MSR, к нему можно получить доступ с помощью инструкций RDMSR и WRMSR.
Немного | Цель |
---|---|
0–7 | Зарезервированный; должно быть 0. |
8 | PT (позволяет сохранять и загружать девять записей MSR трассировки процессора.) |
9–12 | Зарезервированный; должно быть 0. |
13 | HDC (позволяет сохранять и загружать MSR IA32_PM_CTL1.) |
14–63 | Зарезервированный; должно быть 0. |
Смотрите также
- Реестр общего назначения
- Регистр испытаний
- Реестр для конкретной модели
- Регистр отладки
- Байт флага
- Регистр статуса