物理アドレス拡張(Physical Address Extension - PAE)はインテル社のP6マイクロアーキテクチャで追加されたアドレス空間の拡張機能であり、Pentium Pro及びそれ以降の製品で利用できる。
PAEを使用した場合には、IA-32アーキテクチャのアドレスラインである32ビットを、36ビットまで拡張する。これにより、IA-32の標準では最大4GiBまでしか使用できなかった物理メモリ空間を、最大64GiBまで使用できるようになる。しかしながら、仮想アドレス空間は4GBのままであり、ページテーブルのエントリを32ビットから64ビットに拡張することによって物理メモリ空間にアクセスする事となる。ページサイズは4KiBで、ページテーブルのサイズは1ページのままであるので、ページテーブルのエントリの数が一段あたり1024から512になる。これを補うために、PAEにおいては、4エントリを持ったページテーブルが1段追加される。
AMD社のAMD64アーキテクチャでは、PAEのページテーブルエントリの構造を保ったまま、512エントリを持った4段のページテーブル構造にすることによって仮想アドレス空間を48ビット、そして物理アドレス空間を52ビットまで拡張した。また、ユーザー命令セットでは64ビットでアドレッシング可能となっており、2008年4月の時点では、こちらが一般的となっている。
通常、Windows 2000 または Windows Server 2003 で実行されているプロセスは、物理メモリと仮想メモリの合計で2GBまでのメモリアドレス空間にアクセスすることができます。 多くのプログラムが実行されると、それに比例してメモリの使用量は増加します。これは、2GBのアドレス空間の制限に達するまで増加します。
この状況が発生すると、ページング処理が大幅に増加し、パフォーマンスに悪影響が生じることがあります。Windows 2000 および Windows Server 2003 のメモリ マネージャは、PAE を使用してより多くの物理メモリをプログラムに提供します。これにより、ページ ファイルのメモリをスワップする必要が減るため、パフォーマンスが向上します。プログラム自体は、実際のメモリ サイズを意識しません。PAEメモリのメモリ管理と割り当てはすべて、実行されるプログラムと関係なく、メモリマネージャによって処理されます。
ただし、PAEには、メモリアクセス時に常にオーバーへッドを発生させてしまうというデメリットもある。
PAEを有効にする事により、アプリケーションはAWEと言うAPIを利用する事が出来ます。 通常では使用されませんが、SQL Server等の大規模なメモリを活用するアプリケーションで利用されるAPIです。 SQL ServerでAWEを利用するための手順はSQL Server 2000でAWEを有効にする方法に示します。
※ 重要
/3GB スイッチは、Windows 2000 Server ではサポートされません。
アプリケーションまたはオペレーティング システムがクラッシュする可能性があります。
システムに搭載されている物理メモリの量にかかわらず、Windowsは4GBの仮想アドレス スペースを使用します。このうちの2GBをユーザー モードプロセス(アプリケーションなど)に割り当て、残りの2GBをカーネルモードプロセス(OSやカーネルモードドライバなど)に割り当てます。/3GBスイッチは、アプリケーションに割り当てるメモリを3GBに増やし、オペーレーティング システムに割り当てるメモリを1GBに制限することができます。但し、OS側の領域が減らされるので状況によっては不具合を引き起こす可能性もあります。例えば、Active Directoryを構築している場合など。
/3GBと/PAEが併用されている場合、OSは16GBを超えるメモリを使用出来ません。
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /NoExecute=OptOut
のようになっている一番下の行に「/PAE」を追加します。
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /PAE /NoExecute=OptOut