Регистр управления - 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

Типичное использование CR3 при трансляции адресов со страницами 4  КиБ

Используется, когда включена виртуальная адресация , следовательно, когда бит 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.

Смотрите также

использованная литература

внешние ссылки