**物理地址扩展**（**Physical Address Extension**，缩写为**PAE**），又釋**實體位置延伸**，是x86处理器的一个功能，讓中央处理器在32位元操作系统下存取超过4GiB的實體記憶體。

PAE为IntelPentium Pro及以上级别的CPU（包括除了总线频率为400MHz的这个版本的奔腾M之外的所有新型号奔腾系列处理器）所支持，其他兼容的处理器，如速龙（Athlon）和AMD的较新型号的CPU也支持PAE。

x86的处理器增加了额外的地址线以选择那些增加了的記憶體，所以實體記憶體的大小从32位增加到了36位。最大的實體記憶體由4GB增加到了64GB。

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位在将来用于在252 字节，即4pebibyte的物理内存中寻址。

现在，x86架构只使用该52位中的36位。对于在长模式（*long mode*）中的x86-64处理器，PAE是必须的；其中AMD64使用了52位中的40位或48位，而Intel64將最多使用46位。

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。

参见
--

* PSE-36: an alternative to Physical Address Extension
* Page Size Extension
* Architecture of Windows NT

参考资料
----

1. ↑   (PDF). Intel.  [2007-11-16]. （原始内容存档 (PDF)于2009-02-20）.  Page 3.42.
2. ↑  Intel 64 architecture increases the linear address space for software to 64 bits and supports physical address space up to 46 bits." on page Vol. 1 2-21 of Intel 64 and IA-32 Architectures Software Developer's Manual September 2014 （页面存档备份，存于）
3. ↑ . 2003-04-08  [2007-11-26]. （原始内容存档于2021-02-25）.
4. ↑ . （原始内容存档于2003-07-16）.
5. ↑ . 2008-09-26  [2008-09-26]. （原始内容存档于2020-12-10）.
6. ↑ . 1999  [2007-11-26]. [永久]
7. ↑ . Microsoft. December 5, 2007  [2007-12-10]. （原始内容存档于2007-12-17）.
8. ↑ . Microsoft. October 26, 2007  [2007-12-29]. （原始内容存档于2015-03-06）.
9. ↑ . Microsoft.  [2008-12-15]. （原始内容存档于2008-04-30）.
10. ↑ . 2007  [2008-03-22]. （原始内容存档于2011-02-19）.

外部链接
----

* Windows PAE entry on MSDN Library
* Windows PAE entry on Microsoft knowledge base （页面存档备份，存于）
* Paging Extensions for the Pentium Pro Processor