X86架构-控制寄存器
阅读数:907 评论数:0
跳转到新版页面分类
OS
正文
一、概述
控制寄存器决定处理器的操作模式当前执行任务的特性。
二、CR0
包含系统控制标志用于控制操作模式和处理器状态。
PG | Paging,分页标志,设置开启分页。 |
CD | Cache Disable |
NW | Not Write-through,控制当写操作命中缓冲的行为 |
AM | Alignment Mask,是否开启内存对齐检查。 |
WP | Write Protect,是否允许高级别的进程向只读页写数据 |
NE | Numeric Error,是否开启x87 FPU错误报告机制 |
ET | Extension Type,是否支持Intel 387 DX math coprocessor指令 |
TS | Task Switched,当执行一个新任务时,直到x87 FPU/MMX/SSE/SSE2/SSE3/SSSE3/SSE4指令执行完才保存其上下文。 |
EM | Emulation,标示处理器是否有x87 FPU。 |
MP | Monitor Coprocessor,控制与设定了TS标志的WAIT(或FWAIT)指令的的交互 |
PE | Protection Enable,开启保护模式。 |
三、CR1未使用,保留
四、CR2
存储page-fault 线性地址(即引起缺页的线性地址)
五、CR3
包含分页使用的物理地址载始的位置和两个标志(PCD和PWT)。只有基地址高bit位(12 bit位前的)指定,低12 bit位才假定为0,这样分页的大小就是4Kbytes。PCD和PWT标志控制分页在处理器内部缓存中的使用。
PCD | Page-level Cache Disable,控制分页时访问第一个页使用的内存类型。 |
PWT | Page-level Write Through,控制分页时访问第一个页使用的内存类型。 |
六、CR4
包含的标志可用于开启架构扩展和处理器特定能力。CR4中的标志不是在所有处理器上都实现了,使用带有PCE标志的CPUID指令可以判断在当前CPU上是否实现。
VME | Virtual-8086 Model Extensions,在vritual-8086模式下处理中断和异常。 |
PVI | Protected-Mode Virtual Interrupt,在保护模式下,使硬件支持virtual interrupt flag(VIF)。 |
TSD | Time Stamp Disable,使用RDTS指令只能在权限0级运行 |
DE | Debugging Extensions,和调试寄存器DR4、DR5相关,可能会生成undefined opcode异常(#UD) |
PSE | Page Size Extension,页大小是否为4MBytes |
PAE | Physical Address Extension,分布使用的物理地址是否多于32位 |
MCE | Machine-Check Enable,允许machine-check异常 |
PGE | Page Global Enable,global page特性允许把常用的页共享为所有用户使用。 |
PCE | Performance-Monitring Counter Enable,允许RDPMC指令在任务权限级别运行。 |
OSFXSR | Operating System Support for FXSAVE and FXRSTOR instruction,第一个作用是程序可以使用FXSAVE和FXRSTOR指令;第二个作用是FXSAVE和FXRSTOR指令可以使用x87 FPU和MMX寄存器保存或恢复XMM和MXCSR寄存器;第三个作用是处理器可以执行SSE/SSE2/SSE3/SSSE3/SSE4指令,这些指令可以带有PAUSE、PREFETCHh、SFENCE、LFENCE、MFENCE、MOVNTI、CLFLUSH、CRC32和POPCNT异常。 |
OSXMMEXCPT | Operating System Support for Unmasked SIMD Floating-Point Exception |
UMIP |
User-Mode Instruction Prevention。 CPL>0: SGDT, SIDT, SLDT, SMSW和STR指令不可执行 |
LA57 | 57-bit linear addresses,在IA-32e模式下,处理器使用5级分页生成57bit长线性地址,否则在IA-32e模式下,使用4级分页生成48bit长的线性地址。 |
VMXE | VMX-Enable Bit,Virtual Machine Extentions |
SMXE | SMX-Enable Bit,Safer Mode Extensions |
FSGSBASE | FSGSBASE-Enable bit,可以使用指令RDFSBASE,RDGSBASE,WRFSBASE,WRGSBASE指令 |
PCIDE | PCID-Enable bit,process-context identifiers |
OSXSAVE | XSAVE and Processor Extended States-Enable Bit,第一个作用标识程序可以使用XGETBV、XSAVE和XRSTOR指令;第二个作用是XSAVE和XRSTOR指令保存和恢复x87 FPU的状态(包括MMX寄存器)、SSE状态(XMM寄存器和MXCSR);第三个作用是处理器可以执行XGETBV和XSETBV指令用于读写XCR0 |
SMEP | SMEP-Enable Bit,supervisor-mode execution prevention |
SMAP | SMAP-Enable bit,superviso-mode access prevention |
PKE | Enable protection key for user-mode pages,使用一个protection key与4级或5级分页中用户模式下的线性地址关联, |
CET | Control-flow Enforcement Technology, |
PKS | Enable protection keys for supervisor-mode pages |
TPL | Task Priority Level(bit 3:0),设置的是阻断的中断的最高优先级阈值。值0 表示不阻断任何中断。 |
七、CR8
用于读写Task Priority Register(TPR),它指定了外部中断生效的优先级阈值。CR8只对Intel 64架构可用。
八、扩展的控制寄存器
当前只有一个XCR0寄存器
X87 | 一定是1 |
SSE | 设置为1时,XSAVE特性集可用于管理MXCSR和XMM寄存器 |
AVX | AVX指令可用被执行,XSAVE特性集可用于管理YMM寄存的前半部分 |
BNDREG | MPX指令可被执行,XSAVE特性集可用于它先是BND0~BND3 |
BNDCSR | MPX指令可被 行,XSAVE特性集可用于管理 BNDCFGU和BNDSTATUS寄存器 |
opmask | AVX-512指令可被执行,XSAVE特性集可用来管理opmask寄存器k0~k7 |
ZMM_Hi256 | AVX-512指令可被执行,XSAVE特性集可用来管理 ZMM upper halves of the lower ZMM registers |
Hi16_ZMM |
AVX-512指令可被执行,XSAVE特性集可用于管理upper ZMM registers |
PKRU | XSAVE特性集可用于管理PKRU寄存器 |
相关推荐
系统级架构包括寄存器、数据结构、指令以及它们实现的操作,包括内存管理、中断、异常处理、任务管理、多处理器控制。
下图是IA-32下的系统寄存器和数据结构示意图
<im