物理地址扩展 (PAE) X86 概述
物理地址扩展 (PAE) X86 允许软件使用地址窗口扩展 (AWE) API 集并在具有 Intel Pentium Pro 或更高版本处理器的计算机上运行,而 4 GB 以上物理内存允许将更多物理内存映射为应用程序的虚拟地址空间。
不使用 AWE API 集的应用程序也可以从 PAE X86 获益,因为操作系统使用更大的物理内存来减小页面,从而提高了性能。同样,这还使驻留多个应用程序的合并服务器受益。
通过在内存中而不是在磁盘上保存数据,可提高操纵大量数据的应用程序的性能。例如,PAE X86 可显著提高以下类型应用程序的性能:
• 数据库,如 Microsoft SQL/E 7.0 或更高版本。
• 科学和工程应用程序,如计算流体动力学的应用程序。
• 执行大量数据采集的统计分析应用程序。
更新到 PAE X86
下列更新已被执行,从而支持增加数据执行保护 (DEP)(也称为非执行页面保护):
• 在采用支持非执行页面保护功能的处理器的计算机上启用 DEP 时,在运行装有 Service Pack 1 的 Windows Server 2003 和装有 Service Pack 2 的 Windows XP 的计算机上将自动启用 PAE。
• 在装有 SP1 的标准版 Windows Server 2003 和装有 SP2 的 Windows XP 上启用 PAE 模式时,物理地址空间将限制在 4 GB。将物理地址空间限制在 4 GB 有助于防止 PAE 模式出现驱动程序兼容性问题。
只有特定硬件才支持 PAE X86,因此在最初安装该操作系统时不启用此功能。有关哪些硬件支持 PAE X86 的详细信息,可以通过单击支持资源中的相应链接,查询有关 Windows Server 2003 家族中产品的硬件兼容性信息。有关如何启用 PAE X86 的详细信息,请参阅启用物理地址扩展 (PAE)。
1. |
在根文件夹(如 C:)下查找 Boot.ini 文件并删除它的只读属性。 |
2. |
打开 Boot.ini 文件,然后将 /PAE 参数添加到 ARC 路径中,如以下 Windows Server 2003 Datacenter Edition 示例所示: multi(0)disk(0)rdisk(0)partition(2)/%systemroot%="Windows Server 2003, Datacenter Edition" /PAE |
3. |
在“文件”菜单上,单击“保存”。 |
4. |
还原 Boot.ini 文件的只读属性。 |
5. |
为使更改生效,请重新启动计算机。 |
如果要禁用PAE,把C:/Boot.ini中的/noexecute改为/execute就好了!!
使用PAE的分页机制的36位物理寻址
PAE分页机制以及对36bit物理寻址的支持,是在IA32架构的奔腾pro处理器中采用的。在IA32处理器中实现这个特性是通过CPUID指令的特性标志PAE(当CPUID指令的源操作数是2时,EDX寄存器的bit6就是这个特性标志)。CR4中的物理地址扩展(PAE)标志可以开启PAE机制,将物理地址从32bit扩展至36bit。处理器提供额外的4个地址线引脚来容纳这额外的地址位。为了能使用这个选项,必须设置如下的标志:
CR0寄存器中的PG标志(bit 31)-开启分页
CR4寄存器中的PAE标志(bit5)置位,开启PAE分页机制。
当开启PAE分页机制时,处理器支持两种尺寸的页:4KB和2MB。当使用32bit寻址时,这两种尺寸的页都能够使用同一个页表集来寻址(也就是说,一个页目录项可以指向一个2MB的页,也可以指向一个页表,这个页表的表项指向4KB的页)。要支持36bit的物理地址,分页的数据结构需要做如下的变化:
页表项将变为64bit以适应36bit物理地址。每个4KB页的页目录和页表也就可以有最多512个表项了。
线性地址变换的层次中,一个叫做页目录指针表的新表将被加入。这个表有4个64bit的表项。在线性变换的层次中,这个表在页目录之上。随着物理地址扩展机制的开启,处理器支持4个页目录。
寄存器CR3(PDPR)中20bit的页目录基地址被27bit 的页目录指针表基地址所替代(见图3-17)(此时,寄存器CR3叫做PDPTR)。这个域给出了页目录指针表基地址的高27位,这就迫使页目录指针表的地址是32byte对齐的。
线性地址变换允许将32bit的线性地址映射到更大的物理地址空间中。
3.8.1.开启PAE时的线性地址变换(4KB页)
图3-18显示了当启用PAE分页机制进行线性地址到4KB页映射时,页目录指针表,页目录和页表的层次结构。这种分页方法可以寻址高达220个页,线性地址空间达232byte(4GB)。
为了选择各种表项,线性地址被分为3部分:
页目录指针表项-bit30到bit31,给出了该页目录指针表项在页目录指针表中的偏移量。被选中的表项给出了一个页目录的基地址。
页目录项-bit21到bit29,给出了在被选中的页目录中的偏移量。被选择的目录项给出了一个页表的基地址。
页表项-bit12到bit20,给出了在被选中的页表中的偏移量。被选中的页表项给出了一个页在内存中的物理基地址。
页偏移量-bit0到bit11,给出了在被选中的页中的偏移量。
3.8.2启用PAE的线性地址变换(2MB 页)
图3-19显示了当启用PAE分页机制时,如何使用页目录指针表和页目录将线性地址映射到2MB的页。这种分页方法可以将2048个页(4个页目录指针表项乘上512个页目录项)映射到4GB的线性地址空间上。
当启用PAE时,通过设置页目录项中的页尺寸(PS)标志(见图3-14)。(如表3-3中所示,当启用PAE时,CR4寄存器中的PSE标志将对页的尺寸不起作用)。一旦PS标志被置位,线性地址被分为3部分:
页目录指针表项-bit30到bit31,给出了一个页目录指针表项在页目录指针表中的偏移量。该页目录指针表项给出了一个页目录的基地址。
页目录项-bit21到bit29,给出了一个页目录项在页目录中的偏移量。该页目录项给出了一个2MB页的基地址。
页偏移量-bit0到bit20,给出了该地址在页中的偏移量。
3.8.3使用扩展的页表结构来访问完全扩展的物理地址空间
The page-table structure described in the previous two sections allows up to 4 GBytes of the 64 GByte extended physical address space to be addressed at one time. Additional 4-GByte sections of physical memory can be addressed in either of two way:
将寄存器CR3中的指针改为指向另外一个页目录指针表,这个指针表又指向另外一个页目录和页表集合。
改变页目录指针表的表项,使其指向另外一个页目录,这个页目录又会指向另外一个页表集合。
3.8.4.启用扩展寻址后的页目录项和页表项
图3-20显示了当使用4KB页,使用了36bit扩展物理地址时,页目录指针表项,页目录项和页表项的格式。图3-21当使用2MB和36bit扩展物理地址时,页目录指针表项和页目录项的格式。这些表项中的标志功能与3.7.6节 “页目录项和页表项”中描述的功能是一样的,其中主要的不同之处如下:
增加的页目录指针表项
表项的大小从32bit增加到了64bit
页目录和页表的最多项数为512个
每个项中,物理基地址域扩展到了24bit
注意
现行的实现了PAE机制的IA-32处理器在装载页目录指针表项时,使用非缓存访问。这种行为是模式特定行为,而非架构特定行为。未来的IA-32处理器也许会缓存页目录指针表项
根据表项的不同,表项中的物理基地址的说明如下:
在页目录指针表项中,基地址是一个4KB页目录的第一个byte的物理地址
在页目录项中,基地址是一个4KB页表或2MB页的第一个byte的物理地址
在页表项中,基地址是一个4KB页的第一个byte的物理地址
在所有的表项中(除了指向2MB页的页目录项),基地址都被视为36bit物理地址的高24位,这就迫使页表和页都是4KB对齐的(这样,36bit物理地址的低12位都为0)。当页目录项指向一个2MB的页时,基地址被视为36bit物理地址的高15位,这就迫使2MB的页都是2MB对齐的(这样,36位物理地址的低21位为0)。
页目录指针表项的存在标志位,可以为0,也可以为1。如果存在标志被清零,页目录指针表的余下bits可以为操作系统所用。如果存在标志被置位(1),那么页目录指针表项就如图3-20(4KB页)和图3-21(2MB)所示。
页目录项中的页尺寸标志(bit7)可以判断该表项指向一个页表还是指向一个2MB的页。当该标志被清零时,表项指向一个页表;当该标志被置位时,表项指向一个2MB的页。这个标志使得4KB和2MB的页在一个页表集合中混用。
访问标志(A)(bit5)和脏标志(D)(bit6)供指向页的表项使用。
所有物理地址扩展表项的bit9,10和11都可为软件所用。(当“存在位”为0时,bit1到bit63都可以为软件所用)图3-14中所有被标为“保留”或“0”的bit都应当被置为0并且不能被软件访问。当控制寄存器CR4中的PSE和PAE标志被置位,而页目录项和页表项中的保留bit没有被置为0,处理器产生一个页错误(#PF);如果页目录指针表项中的保留bit没有被置为0,处理器会产生一个一般错误(#GP)。