在计算机科学中,物理地址扩展是指x86和x86-64处理器的一个特色,即如果作业系统提供适当支持,则可以在32位的系统中使用超过4GiB位元组的实体记忆体。PAE为IntelPentium Pro及以上级别的CPU(包括除了汇流排频率为400MHz的这个版本的奔腾M之外的所有新型号奔腾系列处理器)所支持,其他兼容的处理器,如速龙(Athlon)和AMD的较新型号的CPU也支持PAE。
基本介绍
- 中文名物理地址扩展
- 外文名Physical address extension
- 又称实体位置延伸
- 缩写PAE
概述
x86的处理器增加了额外的地址线以选择那些增加了的记忆体,所以实体记忆体的大小从32位增加到了36位。最大的实体记忆体由4GiB增加到了64GiB。
32位的虚拟地址(线性地址)则没有变,所以一般的套用软体可以继续使用地址为32位的指令;如果用平面记忆体模式的话,这些软体的地址空间也被限制为4GiB。作业系统用页表将这4GiB的地址空间映射到大小为64GiB的实体记忆体,而这个映射对各个进程一般是不一样的。这样一来,即使不能为单单一个程式所用,那些增加了的物理记忆体仍然可以发挥作用。
对于需要超过4GiB记忆体的套用软体来说,除了一般的PAE支持,还需要作业系统提供的特殊的技术。在Windows上,这种技术叫做Address Windowing Extensions(AWE)。而在类Unix的系统上则有多种技术在使用,例如使用mmap()按需要把一部分档案映射到地址空间;,这还没有成为一个标準。
页表结构
在传统的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位在将来用于在2^52位元组,即4pebibyte的物理记忆体中定址。
现在,x86架构只使用该52位中的36位。对于在长模式(long mode)中的x86-64处理器,PAE是必须的;其中使用了52位中的40位或48位[1]。
CPU对PAE模式的支持可以通过CPUID标誌PAE来识别。
作业系统的支持
FreeBSD
FreeBSD的4.x系列从4.9开始支持PAE,而5.x系列则从5.1开始。6.x及以后的系列都支持PAE。对核心的关于PAE的配置是必须的。如果一个可载入核心模组是启用了PAE的,则它只可以被载入到一个启用了PAE的核心;FreeBSD中二进制版本的模组没有启用PAE,所以它们不能载入到启用了PAE的核心。并不是所有驱动程式都支持4GiB的物理记忆体的;这种驱动程式不能在启用了PAE的核心下正常工作。
Linux
Linux核心从2.6版本开始全面支持PAE,这使得在32位的机器上可以访问64GB的记忆体。启用了PAE的Linux核心还需要同样支持PAE的CPU。从2008年起,很多一般的发布的Linux版本都默认使用启用了PAE的核心。
Mac OS X
运行在Intel CPU上的Mac OS X都支持PAE和NX位;在受苹果支持的CPU上它也支持该两种特性。即使Mac OS X 10.5 Leopard核心仍然是32位的,Mac Pro和Xserve系统现在也是支持32GiB的RAM的。
Solaris
Solaris从版本7开始支持PAE。,版本7的那些没有专门支持PAE的第三方驱动程式在支持PAE的系统上可能会发生错误,甚至完全崩溃。
Windows
PAE受下列版本的32位版的Windows所支持
系统版本 | 最大物理记忆体支持 |
---|---|
Windows 2000 Advanced Server | 8 GiB |
Windows 2000 Datacenter Server | 32 GiB |
Windows XP | 4 GiB |
Windows Server 2003 Enterprise Edition | 32 GiB |
Windows Server 2003 SP1+ or R2 Enterprise Edition | 64 GiB |
Windows Server 2003 Datacenter Edition | 64 GiB |
Windows Server 2003 Standard Edition | 4 GiB |
Windows Vista | 4 GiB |
Windows Server 2008 Enterprise or Datacenter Edition | 64 GiB |
Windows Server 2008 other editions | 4 GiB |
Windows 7 Starter | 2 GiB |
Windows 7 other editions | 4 GiB |
Windows XP SP2和其他新的版本,默认在有no-execute (NX)和execute-disable (XD)特性的处理器上以PAE模式运行以允许NX。NX(或XD)在页表项的第63位。如果没有PAE,页表项只就32位;所以要利用NX这个特性的话,就必须运行在PAE模式下。,基于为保证驱动兼容等原因,微软通过许可证,在核心中把桌面版Windows(包括Windows XP、Windows Vista和Windows 7)和部分低端Windows Server的物理地址空间限制为4GiB。