Контрольні регістри

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Контрольний регістр — це регістр процесора, який змінює або контролює поведінку ЦПУ чи іншого цифрового пристрою. Загальними завданнями, виконуваними контрольними регістрами є: контроль переривань, перемикання режимів адресації, управління сторінковим відображенням пам'яті, та контроль копроцесора.

Контрольні регістри серії x86[ред.ред. код]

CR0[ред.ред. код]

Регістр 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, система працює в захищеному режимі, інакше - в реальному.

CR1[ред.ред. код]

Зарезервований.

CR2[ред.ред. код]

Містить величину, що зветься Page Fault Linear Address (PFLA) - лінійна адреса помилки сторінки. Коли трапляється помилка сторінки (page fault), адреса програми, що запитувалася цієї сторінки, зберігається в цьому регістрі.

Помилка сторінки - це апаратно згенероване переривання (interrupt) чи виключення (exception), для ПЗ, і стається воно, коли програма запитується сторінки, що є позначена в її адресному просторі, але відсутня в фізичній пам*яті (major page fault), або пристутня там, але її статус не визначено як "представлена" (present) - (minor page fault).

CR3[ред.ред. код]

Використовується, коли дозволено віртуальну адресацію, отже коли флаг PG в CR0 виставлено. CR3 дозволяє процесору транслювати (переводити) віртуальні адреси в адреси фізичні, оперуючи з директорією сторінок (page directory) і таблицями сторінок (page tables) для поточного завдання. Зазвичай, верхні 20 біт CR3 використовуються як регістр бази директорій сторінок (PDBR - page directory base register). В традиційному 32-бітному захищеному режимі, x86 процесори використовують дворівневу схему відображення сторінок, де регістр CR3 містить вказівник на окрему сторінкову директорію (page directory), яка довжиною є 4096 байт, і яка розбита на 1024 4-байтні одиниці, кожна з яких - це вказівник на таблицю сторінок довжиною теж 4096 байт, і яка теж розбита на 1024 4-байтних вказівники, тепер вже на 4096 байтні блоки пам'яті, що звуться сторінками.

CR4[ред.ред. код]

Використовується в захищеному режимі для контролю таких операцій як підтримка режиму віртуального 8086, дозвіл точок зупину вводу/виводу (I/O breakpoints), розширення розміру сторінки та машинний контроль за помилками апаратури (Machine Check Exception (MCE)).

Біт Ім'я Повне ім'я Опис
14 SMXE SMX Enable
13 VMXE VMX Enable
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 Як і флаг віртуальних переривань; дозволено якщо виставлено.

Додаткові контрольні регістри в x86-64 серії[ред.ред. код]

EFER[ред.ред. код]

Extended Feature Enable Register (EFER) це регістри, додані на AMD K6 процесори, щоб дозволити SYSCALL/SYSRET інструкцію, а пізніше, для входу/виходу в/з Long Mode.

Біт Призначення
63:12 Резервовано
11 Біт дозволу заборони виконання (NXE)
10 IA-32e mode active (LMA)
9 Резервовано
8 IA-32e mode enable (LME)
7:1 Резервовано
0 SysCallenable (SCE)

Див. також[ред.ред. код]

Посилання[ред.ред. код]