Регистр управления

редактировать
Регистр процессора, который изменяет или контролирует общее поведение элемента управления CPU

A регистр - это регистр процессора, который изменяет или контролирует общее поведение CPU или другого цифрового устройства. Общие задачи, выполняемые регистрами управления, включают управление прерыванием, переключение режима адресации, управление подкачкой и управление сопроцессором.

Содержание
  • 1 Регистры управления в серии x64
    • 1.1 CR0
    • 1.2 CR1
    • 1.3 CR2
    • 1.4 CR3
    • 1.5 CR4
    • 1.6 CR5-7
  • 2 Дополнительные Регистры управления в серии x86-64
    • 2.1 EFER
    • 2.2 CR8
    • 2.3 XCR0 и XSS
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки
Регистры управления в x64 series

CR0

Регистр CR0 имеет длину 32 бита на процессорах 386 и выше. На процессорах x64 в длинном режиме он (и другие регистры управления) имеет длину 64 бита. CR0 имеет различные флаги управления, которые изменяют базовую работу процессора.

БитИмяПолное имяОписание
0PEВключение защищенного режимаЕсли 1, система находится в защищенном режиме, иначе система находится в реальном режиме
1MPМонитор сопроцессораУправляет взаимодействием инструкций WAIT / FWAIT с флагом TS в CR0
2EMЭмуляцияЕсли установлено, нет x87 модуль с плавающей запятой присутствует, если сброшен, FPU x87 присутствует
3TSЗадача переключенаПозволяет сохранять контекст задачи x87 при переключении задачи только после использования инструкции x87
4ETТип расширенияНа 386 он позволял указать, был ли внешний математический сопроцессор 80287 или 80387
5NEЧисловая ошибкаВключить внутренний x87 отчет об ошибках с плавающей запятой, если он установлен, иначе включает обнаружение ошибок x87 в стиле ПК
16WPЗащита от записиЕсли установлено, ЦП не может записывать на страницы, доступные только для чтения, когда уровень привилегий равен 0
18AMМаска выравниванияПроверка выравнивания включена, если установлен AM, установлен флаг AC (в регистре EFLAGS ) и уровень привилегий равен 3
29NWНе записывать грубыйГлобально включает / отключает сквозное кэширование
30CDКэш отключеноГлобально включает / отключает кэш памяти
31PGСтраницыЕсли 1, включите пейджинг и используйте регистр § CR3, иначе отключите пейджинг.

CR1

Зарезервировано, ЦП выдаст исключение # UD при попытке доступа к нему.

CR2

Содержит значение, называемое линейным адресом ошибки страницы (PFLA). Когда происходит сбой страницы, адрес, к которому программа пыталась получить доступ, сохраняется в регистре CR2.

CR3

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

Используется, когда включена виртуальная адресация, следовательно, когда установлен бит PG в CR0. CR3 позволяет процессору преобразовывать линейные адреса в физические адреса, находя каталог страниц и таблицы страниц для текущей задачи. Как правило, старшие 20 бит CR3 становятся базовым регистром каталога страниц (PDBR), в котором хранится физический адрес записи каталога первой страницы. Если бит PCIDE в CR4 установлен, младшие 12 битов используются для идентификатора контекста процесса (PCID).

CR4

Используется в защищенном режиме для управления такими операциями, как поддержка virtual-8086, включение точек останова ввода-вывода, расширение размера страницы и исключения проверки компьютера.

БитИмяПолное имяОписание
0VMEРасширения виртуального режима 8086 Если установлено, включает поддержку флага виртуального прерывания (VIF) в режиме виртуального 8086.
1PVIВиртуальные прерывания в защищенном режимеЕсли установлено, включает поддержку флага виртуального прерывания (VIF) в защищенном режиме.
2TSDОтметка времени ОтключитьЕсли установлено, команда RDTSC может выполняться только в кольце 0, в противном случае можно использовать RDTSC на любом уровне привилегий.
3DEDebugging ExtensionsЕсли установлено, включает разрывы на основе регистра отладки при доступе к пространству I / O.
4PSEРасширение размера страницы Если не задано, размер страницы составляет 4 КиБ, в противном случае размер страницы увеличивается до 4 МиБ

Если PAE включен или процессор находится в x86-64 длинном режиме этот бит игнорируется.

5PAEРасширение физического адреса Если установлено, изменяет макет таблицы страниц для преобразования 32-битных виртуальных адресов в расширенные 36-битные физические адреса.
6MCEИсключение проверки машиныЕсли установлено, разрешает прерывания проверки машины.
7PGEPage Global EnabledЕсли установлено, трансляции адресов (записи PDE или PTE) могут совместно использоваться между адресными пространствами.
8PCEРазрешение счетчика мониторинга производительностиЕсли установлено, RDPMC может выполняться на любом уровне привилегий, иначе RDPMC может использоваться только в кольце 0.
9OSFXSRПоддержка операционной системой инструкций FXSAVE и FXRSTORЕсли установлено, включает Streaming SIMD Extensions (SSE) инструкций и быстрое сохранение и восстановление FPU.
10OSXMMEXCPTПоддержка операционной системой немаскированных исключений SIMD с плавающей запятойЕсли установлено, включает немаскированные исключения SSE.
11UMIPПредотвращение инструкций пользовательского режимаЕсли установлено, инструкции SGDT, SIDT, SLDT, SMSW и STR не могут быть выполнены, если CPL>0.
12LA57(не указано)Если установлено, включает 5-уровневую разбивку по страницам.
13VMXEВключить расширения виртуальных машинсм. Intel VT-x x86 виртуализация.
14SMXEВключить расширения безопасного режимасм. Технология Trusted Execution (TXT)
16FSGSBASEВключает инструкции RDFSBASE, RDGSBASE, WRFSBASE и WRGSBASE.
17PCIDEВключить PCIDЕсли установлено, включает идентификаторы контекста процесса (PCID).
18OSXSAVEXSAVE и расширенные состояния процессора включить
20SMEPВключить защиту выполнения в режиме супервизораЕсли установлено, выполнение кода в более высоком кольце генерирует ошибку .
21SMAPПредотвращение доступа в режиме супервизора ВключитьЕсли установлено, доступ к данным в вышестоящем кольце генерирует ошибку .
22PKEВключение ключа защитыСм. Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32.

CR5-7

Зарезервировано, тот же случай, что и CR1.

Дополнительные регистры управления в x86-64 серии

EFER

Регистр включения расширенных функций (EFER) - это регистр, зависящий от модели добавлен в процессор AMD K6, чтобы разрешить включение инструкции SYSCALL / SYSRET, а затем для входа и выхода в длинный режим. Этот регистр становится архитектурным в AMD64 и принят Intel как IA32_EFER. Его номер MSR - 0xC0000080.

БитНазначение
0SCE (Расширения системных вызовов)
1DPE (только AMD K6: включение предварительной выборки данных)
2SEWBED (только AMD K6: спекулятивное отключение EWBE #)
3GEWBED (только AMD K6: Global EWBE # Disable)
4L2D (только AMD K6: L2 Cache Disable)
5-7Зарезервировано, считывается как ноль
8LME (Long Mode Enable)
9Зарезервировано
10LMA (активный длинный режим)
11NXE (Нет выполнения Включить)
12SVME (Защищенная виртуальная машина Включить)
13LMSLE (Включить ограничение сегмента в длинном режиме)
14FFXSR (Fast FXSAVE / FXRSTOR)
15TCE (расширение кэша трансляции)
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.

БитНазначение
0X87 (x87 Состояние FPU / MMX, примечание, должно быть '1')
1SSE (функция XSAVE установить включение для регистров MXCSR и XMM)
2AVX (включение AVX и набор функций XSAVE можно использовать для управления регистрами YMM)
3BNDREG (включение MPX и набор функций XSAVE можно использовать для регистров BND)
4BNDCSR (включение MPX и набор функций XSAVE могут использоваться для регистров BNDCFGU и BNDSTATUS)
5opmask (включение AVX-512 и набор функций XSAVE могут использоваться для opmask AVX, AKA k-mask, regs)
6ZMM_hi256 (Включение AVX-512 и набор функций XSAVE могут использоваться для верхних половин нижних регистров ZMM)
7Hi16_ZMM (включение AVX-512 и набор функций XSAVE могут использоваться для верхних регистров ZMM)
8Зарезервировано
9PKRU (набор функций XSAVE может использоваться для регистра PKRU, который является частью механизма ключей защиты.)
10Зарезервировано (должно быть '0')
11Состояние пользователя технологии принудительного управления потоком (CET)
12Состояние супервизора технологии обеспечения соблюдения потока управления (CET)
13XAAD (вспомогательная функция обнаружения асинхронных аномалий для включения тостера анклава для криптографических подпрограмм.)
14–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.
8PT (Позволяет сохранять и загружать девять MSR трассировки процессора).
9–12Зарезервировано; должно быть 0.
13HDC (Включает сохранение и загрузку MSR IA32_PM_CTL1.)
14–63Зарезервировано; должно быть 0.
См. также
В Викиучебнике есть книга по теме: Сборка X86 / Защищенный режим
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-15 11:07:22
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте