Intel 64 and IA-32 Control Registers

Introduce

Intel 64和IA-32处理器包含有5个控制寄存器,他们分别是CR0, CR1, CR2, CR3, CR4。这几个寄存器决定了处理器的操作模式,已经当前执行程序的特征。

CR0 - 包含控制操作模式的系统控制标志,以及处理器的状态

CR1 - 保留

CR2 - 包含page fault的线性地址。比如,在linux缺页异常时,可以在这个寄存器获取引起缺页异常的线性地址。

CR3 - 包含分页结构的基地址,以及两个标志PCD和PWT。对于Linux操作系统,这个基地址就是页表操作的起点。bit12~31描述了基地址,这个基地址的低12位全为零,也就是4K对齐。因此CR3的bit0~11可以用来保存其他标志,这里保存了PCD和PWT。PCD和PWT标志用来控制分页结构所在处理器的内部数据cache。

当使用物理地址扩展时, CR3寄存器中包含的基地址是IA-32e模式的page-directory-pointer table,或者PML4 table 的基地址。

CR4 - 包含一组标志用来使能几种架构扩展,并指示操作系统或者执行程序支持特定的处理器功能。这个控制寄存器是可读可写的,使用move-to-or-from-control-register形式的MOV指令。


CR0

PG - Paging bit31

置为1,使能分页机制;置为0则disable分页机制。当分页被disable后,所有的线性地址都会被看做物理地址。如果PE没有被使能的话,PG是不起作用的,PG=1 PE=0会导致系统产生general protection exception(GP)。

CD - cache Disable bit30

当CD和NW标记被清0时,处理器内部和外部的caches对整个物理内存的cache功能都会被使能。当CD被置位时,cache功能会被限定在指定范围内。如果不想处理器访问和升级caches,那么就必须设置CD flags标志。注意:单独的页面和内存区域仍然受到其他cache控制机制的现实。

NW - Not Write-through bit29

当NW和CD标志置0时,整个系统内存的write-back和write-through被使能。注意:单独的页面和内存区域仍然受到其他cache控制机制的限制。

AM - Alignment Mask bit 18

置1则使能执行自动对齐检查

WP - Write Protect bit16

标志置位,禁止管理员级别进程对read-only页面的写权限;标志清除,允许管理员级别程序对read-only页面进行写操作。这个标记可以用来实现unix操作系统的copy-on-write机制,


CR3

PCD - Page-level Cache Disable bit4

在分页机制的层次结构中,PCD用来控制root节点的内存访问类型。比如Linux kernel的顶级页目录所在的page。

PWT - Page-level Write-through Bit3

在分页机制的页层次结构中,PWT用来控制root节点的内存访问类型。

CR4

PSE - Page Size Extensions bit3

设置标志,在32-bit分页时使能4MB页面大小;清除标志,在32-bit分页时使用4 KBytes页面大小

PAE - Physical Address Extension bit5

设置标志,则分页机制能够使用多余32bits的地址位;如果清除,则地址位限制为32bits

PGE - Page Global Enable bit7

设置标志,则使能全局页功能;清除标志,则禁用全局页功能。

对于频繁使用的或者共享的页面,我们可以设置为global page,对于全局页,task切换或者写CR3都不会导致translation-lookaside buffer的刷新




你可能感兴趣的:(Intel 64 and IA-32 Control Registers)