Контрольні регістри
Контрольний регістр — регістр, що змінює або контролює поведінку процесора чи іншого системного пристрою, тісно пов'язаного з ЦП. Загальними завданнями, виконуваними контрольними регістрами є: контроль переривань, перемикання режимів адресації, керування сторінковим відображенням пам'яті, та контроль співпроцесора.
Регістр CR0 є 32-бітним на 386 і старших процесорах. На x86-64, в режимі Long mode він (та інші контрольні регістри) є 64-бітним. CR0 має різні контрольні прапори, що модифікують (визначають) базові операції процесора.
Біт | Ім'я | Повне Ім'я | Опис |
---|---|---|---|
31 | PG | Paging | Якщо 1, дозволяє сторінкове відображення і використання CR3, в іншому разі забороняє його. |
30 | CD | Cache disable | |
29 | NW | Not-write through | |
18 | AM | Alignment mask | Дозволена перевірка вирівнювання (alignment check), якщо прапор AM виставлено, AC прапор виставлено (в регістрі Eflags, на кільці 3) |
16 | WP | Write Protect | |
5 | NE | Numeric error | Дозволяє, коли виставлено, внутрішній формат виявлення помилок співпроцесора x87 (обчислення з рухомою комою), інакше дозволяє таку детекцію в PC стилі. |
4 | ET | Extension type | |
3 | TS | Task switched | Дозволяє зберігання котнексту завдання x87, тільки після того як x87 інструкція використана після перемикання завдання. |
2 | EM | Emulation | Якщо виставлено, x87 FPU (одиниця для обчислень з плаваючою точкою) є представлена, інакше ні. |
1 | MP | Monitor coprocesor | Контролює взаємодію WAIT/FWAIT інструкцій з прапором TS в CR0 |
0 | PE | Protected Mode Enable | Якщо 1, система працює в захищеному режимі, інакше - в реальному. |
Зарезервований регістр. Intel не розголошує чому[1].
Містить величину, що зветься Page Fault Linear Address (PFLA) - лінійна адреса помилки сторінки. Коли трапляється помилка сторінки (page fault), адреса команди, що запитувала цю сторінку, зберігається в даному регістрі.
Помилка сторінки - це апаратно згенероване переривання (interrupt) чи виняток (exception), для ПЗ, і стається воно, коли програма запитується сторінки, що є позначена в її адресному просторі, але відсутня в фізичній пам'яті (major page fault), або пристутня там, але її статус не визначено як «присутня» (minor page fault).
Використовується, коли дозволено віртуальну адресацію, отже коли прапор PG в CR0 виставлено. CR3 дозволяє процесору транслювати (переводити) віртуальні адреси у фізичні, оперуючи з директорією сторінок (page directory) і таблицями сторінок (page tables) для поточного завдання. Зазвичай, верхні 20 біт CR3 використовуються як регістр бази директорій сторінок (англ. page directory base register, PDBR). В традиційному 32-бітному захищеному режимі, x86 процесори використовують дворівневу схему відображення сторінок, де регістр CR3 містить вказівник на окрему сторінкову директорію (page directory), яка довжиною є 4096 байт, і яка розбита на 1024 4-байтні одиниці, кожна з яких — це вказівник на таблицю сторінок довжиною теж 4096 байт, і яка теж розбита на 1024 4-байтних вказівники, тепер вже на 4096 байтні блоки пам'яті, що звуться сторінками.
Використовується в захищеному режимі для контролю таких операцій як підтримка режиму віртуального 8086, дозвіл точок зупину вводу/виводу (I/O breakpoints), розширення розміру сторінки та машинний контроль за помилками апаратури (Machine-check exception (MCE)).
Біт | Ім'я | Повне ім'я | Опис |
---|---|---|---|
16 | FSGSBASE | Дозвіл інструкцій RDFSBASE, RDGSBASE, WRFSBASE і WRGSBASE | |
14 | SMXE | SMX Enable | див. Trusted Execution Technology[en] |
13 | VMXE | VMX Enable | див. Апаратна віртуалізація x86 |
12 | LA57 | 5-level paging enable | Активація 5-рівневої схеми трансляції сторінок |
11 | UMIP | User-Mode Instruction Prevention | Якщо встановлено, інструкції SGDT, SIDT, SLDT, SMSW і STR не можуть виконуватися при CPL > 0[2] |
10 | OSXMMEXCPT | Operating System Support for Unmasked SIMD Floating-Point Exception | дозволяє немасковані винятки SSE. |
9 | OSFXSR | Operating System Support for FXSAVE and FXSTOR instructions | Має бути виставлене для використання SSE інструкцій, дозволяє швидке FPU збереження та відновлення. |
8 | PCE | Performance-Monitoring Counter enable | Якщо виставлено, RDPMC може виконуватися на всякому рівні, інакше тільки на нульовому кільці (рівень ядра). |
7 | PGE | Page Global Enabled | |
6 | MCE | Machine Check Exception | Дозволяє, якщо виставлено, переривання машинної перевірки (machine check interrupts) |
5 | PAE | Physical Address Extension | Змінює макет таблиці сторінки для трансляції 32-бітної віртуальної адреси в розширену 36-бітну фізичну. |
4 | PSE | Page Size Extension | Якщо невиставлений, розмір сторінки є 4KB, інакше - збільшений до 4MB, або, з PAE, до 2MB. |
3 | DE | Debugging Extension | |
2 | TSD | Time Stamp Disable | Якщо виставлено, інструкція RDTSC може виконуватися тільки на кільці 0, інакше - за будь-якого рівня привілеїв. |
1 | PVI | Protected Mode Virtual Interrupts | Дозволяє апаратну підтримку прапора віртуального переривання (VIF) в захищеному режимі. |
0 | VME | Virtual 8086 mode extensions | Як і прапор віртуальних переривань; дозволено якщо виставлено. |
Цей розділ потребує доповнення. (серпень 2019) |
Extended Feature Enable Register (EFER) — регістр, що з'явився у процесорах AMD K6. Біти цього регістра призначені для дозволу чи заборони інструкцій SYSCALL/SYSRET, керування режимом no-execute, входу/виходу в/з Long mode, та для інших системних налаштувань. Регістр виявився настільки важливим, що був адаптований і компанією Intel для своїх процесорів. Його MSR-індекс — 0xC0000080.
Біт | Призначення |
---|---|
63:12 | Резервовано |
11 | Біт активування заборони виконання (англ. no execute), NXE) |
10 | IA-32e mode active (LMA) |
9 | Резервовано |
8 | IA-32e mode enable (LME) |
7:1 | Резервовано |
0 | System Call Extensions (SCE) |
- ↑ Архівована копія. Архів оригіналу за 11 листопада 2020. Процитовано 1 січня 2019.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) - ↑ Ricardo Neri. x86: Enable User-Mode Instruction Prevention. lwn.net (англ.). Архів оригіналу за 11 листопада 2020. Процитовано 22 листопада 2019.
- Регістри загального призначення
- Тестові регістри
- Регістри наладки
- Model-specific register (MSR)
- Регістр стану
- Intel 64 and IA-32 Architectures Software Developer’s Manual [Архівовано 19 квітня 2009 у Wayback Machine.]
- Intel IA-32 Architecture Software Developer’s Manuals [Архівовано 15 жовтня 2009 у Wayback Machine.]
- AMD64 Architecture Tech Docs [Архівовано 16 квітня 2009 у Wayback Machine.]
- Cracking Open The Pentium III [Архівовано 2 грудня 2008 у Wayback Machine.]