32位支持大容量内存详解

在传统的32位的保护模式中,x86处理器使用一种两级的转换方案。在这种方案中,控制寄存器CR3指向一个长4KiB的页目录(page directory);页目录又分为每个1024个每个4KiB的页表(page table);最后页表又分为1024个每个长4KiB的页。

启用PAE(通过设置控制寄存器CR4的第5位来启用)会改变上面的方案。默认情况下,每页的大小是4KiB的。页表和页目录中的表项都从32位扩为64位(8字节)以使用附加的地址位。但是,页表和页目录的总大小不变。所以,页表和页目录现在都只有512个表项。因为这变成了原来方案的一半,所以另外的一个级加了进来:CR3现在指向的是页目录指针表,即一个包含4个页目录指针的表。

页目录里的表项的第7位叫做PS(Page Size)。如果这个位设为1,则页目录的表项不再指向页表,而是指向一个2MiB的页。页目录里还有另外一个叫NX位的标志位。它是第63位,表示No eXecute。因为页表项最高的12位,要么是这种标识位,要么是和操作系统相关的数据,所以最多可有52位在将来用于在252 字节,即4pebibyte的物理内存中寻址。

现在,x86架构只使用该52位中的36位(即最大支持内存2^36=64G)。对于在长模式(long mode)中的x86-64处理器,PAE是必须的;其中使用了52位中的40位。

CPU对PAE模式的支持可以通过CPUID标志PAE来识别。


Windows XP SP2和其他新的版本,默认在有no-execute (NX)和execute-disable (XD)特性的处理器上以PAE模式运行以允许NX。NX(或XD)在页表项的第63位。如果没有PAE,页表项只就32位;所以要利用NX这个特性的话,就必须运行在PAE模式下。但是,为了与驱动程序兼容,桌面版的Windows(Windows XP, Windows Vista)都把物理地址空间限制为4GiB。

你可能感兴趣的:(操作系统,内存,寄存器,休闲,32位,处理器,表)