メモリーおよびアドレス空間の限界値

コンテンツ
Windows XP, Windows Vistaの種類 - ライセンスの比較
Windows XPの種類 - ライセンスの比較
Windows Vistaの種類 - ライセンスの比較
Windows 7の種類 - ライセンスの比較
Windows Server ライセンスの種類
ボリュームライセンス
使用許諾契約書
CAL クライアントアクセスライセンス
Retail版Windows SKU
DSP版Windows SKU
プロダクトアクティベーション (ライセンス認証)
Windows XPのインストール
不明なデバイス
メモリーリマッピング
メモリーおよびアドレス空間の限界値

このページの目次
仮想アドレス空間の限界値
Windowsで使用できる物理メモリーの限界値
物理アドレス拡張(/PAEオプション)と4GT (4-gigabyte tuning) (/3GBオプション)

出典 Memory Limits for Windows Releases

仮想アドレス空間の限界値

ひとつのプログラムで利用できるアドレス空間は32-bitプロセスの場合、ユーザーモードとカーネルモードで合わせて4GBである。これは、たとえばWindowsで使用できる物理メモリーが512MBであっても16GBであっても変わらない。4GBのアドレス空間のうち実際に使用するメモリーがそのプログラムのために使用できる物理メモリーのサイズを超える場合はページングファイルが必要になる。

メモリータイプ 32-bit Windowsの限界値 64-bit Windowsの限界値
32bitプロセスのユーザーモード仮想アドレス空間 2 GB
IMAGE_FILE_LARGE_ADDRESS_AWARE かつ 4GTの場合 最大 3 GB
IMAGE_FILE_LARGE_ADDRESS_AWARE 指定なし (default)の場合 2 GB
IMAGE_FILE_LARGE_ADDRESS_AWARE 指定ありの場合 4 GB
64bitプロセスのユーザーモード仮想アドレス空間 Not applicable IMAGE_FILE_LARGE_ADDRESS_AWARE 指定ありの場合 (default):
x64: 8 TB
Intel IPF: 7 TB
IMAGE_FILE_LARGE_ADDRESS_AWARE 指定なしの場合 2 GB
カーネルモードの仮想アドレス空間 2 GB
4GTの場合 1 GB から最大 2 GB
8 TB

IMAGE_FILE_LARGE_ADDRESS_AWARE はexeファイルの設定で、プログラム作成者が指定する。/LARGEADDRESSAWAREスイッチ。
4GT (4-gigabyte tuning)は、32-bit Windowsにおいてカーネルモードのアドレス空間を2GBから1GBにすることでユーザーモードのアドレス空間を最大3GBに広げること。/3GBオプション。Windows NT Workstation 4.0、Windows NT Server 4.0では使えない。Windows 2000 Professional、Windows 2000 Serverでは制限がある。サポート技術情報 171793 266096 291988 297812(機械翻訳)。
64-bit Windowsの場合、カーネルモードのアドレス空間は32bitプロセスのアドレス空間上には存在しない。

メモリ管理 : すべてのドライバ作成者が知る必要のある事項 Memory Management: What Every Driver Writer Needs to Know より引用

3.1 Virtual Address Space on 32-bit Hardware

On 32-bit machines, the lower 2 GB of the virtual address space is user space and the upper 2 GB is reserved as system space by default. If user-mode applications require additional virtual address space, an administrator can reserve 3 GB for user space, thus leaving only 1 GB of system space, by applying the /3GB switch to Boot.ini and then restarting the machine. This switch is also useful during testing to see how a driver performs with limited system address space. The switch is supported on Windows Server 2003 (all editions), Windows XP (all versions), Windows 2000 Advanced Server, and Windows 2000 Datacenter Server.

Figure 1 shows how the virtual address space is organized on 32-bit systems. (The figure is not drawn to scale.)
仮想メモリ アドレス
Figure 1. Layout of virtual address space on 32-bit systems

As the figure shows, the user address space occupies the lower range of the virtual address space and the system address space occupies the upper range. By default, both user and system space are 2 GB. When Windows is started with the /3GB switch, the size of the user space increases to 3 GB. The remaining 1 GB of virtual address space contains the system address space. The process page tables and hyperspace remain at the same addresses, but other components do not. When the system address space is limited to 1 GB, the maximum sizes of the paged and nonpaged pools are reduced and less space is available for system page table entries (PTEs) and the file system cache as well.

The file system cache, which is implemented in software, is not the same as the processor cache, which is implemented in hardware. Keep in mind, however, that this limit applies only to the amount of the cache that is visible at any given time. The system uses all the physical memory in the machine for caching. The exact sizes of the paged and nonpaged pools, PTEs, and file system cache vary widely from release to release.

On the Intel Pentium Pro and later processors, which support PAE, Windows can support up to 128 GB of physical memory. PAE provides only additional physical memory and does not increase the size of the virtual address space. When PAE is enabled, the virtual address space remains unchanged at 4 GB and the layout of the 2 GB system space is largely unchanged.

Operating system support for PAE is provided by a special version of the Windows kernel, which is named Ntkrnlpa.exe (single-processor version) or Ntkrpamp.exe (multi-processor version). In this version of the kernel, PTEs and page directory entries (which are involved in mapping virtual memory to physical memory) are 64 bits wide. If the appropriate device and driver support is present, the PAE kernels support direct I/O for the entire physical address space (including any physical memory above 4 GB).

Windowsで使用できる物理メモリーの限界値

すべてのプログラムで利用できるメモリーの合計サイズは、ページングファイルの合計+Windowsで使用できる物理メモリーの合計で決まる。なのでたとえばページングファイルサイズを4095MBにすれば、物理メモリー+4095MB分のメモリーをプログラムで利用できることになる。 ただし、同時に使えるメモリーはWindowsで使用できる物理メモリー分だけである。 超えた分はページングファイルに追い出され、必要なときに物理メモリーに戻される。ページングファイルの読み書きにかかる時間分プログラムの応答が遅くなる。

バージョン 32-bit Windowsの限界値 64-bit Windowsの限界値(x64)
Windows 2000 Professional 4 GB Not applicable
Windows 2000 Server 4 GB Not applicable
Windows 2000 Advanced Server 8 GB Not applicable
Windows 2000 Datacenter Server 32 GB Not applicable
Windows XP Starter Edition 512 MB Not applicable
Windows XP 4 GB 128 GB
Windows Vista Starter 1 GB Not applicable
Windows Vista Home Basic 4 GB 8 GB
Windows Vista Home Premium 4 GB 16 GB
Windows Vista Business
Windows Vista Enterprise
Windows Vista Ultimate
4 GB 128 GB
Windows 7 Starter 2 GB 2 GB
Windows 7 Home Basic 4 GB 8 GB
Windows 7 Home Premium 4 GB 16 GB
Windows 7 Professional
Windows 7 Enterprise
Windows 7 Ultimate
4 GB 192 GB
Windows Server 2003, Standard Edition 4 GB Not applicable
Windows Server 2003, Enterprise Edition
Windows Server 2003, Datacenter Edition
64 GB
16 GB with 4GT
Not applicable
Windows Server 2003 with Service Pack 1 (SP1), Standard Edition 4 GB 32 GB
Windows Server 2003 with Service Pack 1 (SP1), Enterprise Edition
Windows Server 2003 with Service Pack 1 (SP1), Datacenter Edition
64 GB
16 GB with 4GT
1 TB
Windows Server 2003, Standard Edition SP2 4 GB 32 GB
Windows Server 2003 with Service Pack 2 (SP2), Enterprise Edition
Windows Server 2003 with Service Pack 2 (SP2), Datacenter Edition
64 GB
16 GB with 4GT
1 TB
Windows Server 2003 R2 Standard Edition 4 GB 32 GB
Windows Server 2003 R2 Enterprise Edition
Windows Server 2003 R2 Datacenter Edition
64 GB
16 GB with 4GT
1 TB
Windows Server 2008 Standard 4 GB 32 GB
Windows Server 2008 Enterprise
Windows Server 2008 Datacenter
64 GB 1 TB
Windows Server 2008 R2 Standard Not applicable 32 GB
Windows Server 2008 R2 Enterprise
Windows Server 2008 R2 Datacenter
Not applicable 2 TB

32-bit Windowsで4GB以上のアドレスにあるメモリーを利用する場合は、物理アドレス拡張(PAE)を有効にする必要がある。サポート技術情報 170756 833721 900524 291988(日本語 最終更新日: 2008年6月27日 - リビジョン: 15.2は内容が古い)
Windows XP SP2やWindows Server 2003 SP1からハードウェアDEPに対応した。ハードウェアDEPが有効の場合、PAEも自動で有効になる。

従来32-bit WindowsのPAEはWindows 2000 Advanced ServerやWindows Server 2003, Enterprise Editionといった上位エディションのサーバーOSで使われる技術だったので、PC向けのデバイスやそのドライバーは4GB以上のアドレスのメモリーを扱えないことがあるため、4GB以上のアドレスを使用しないようWindows XP SP2から“Any system RAM beyond the 4 GB barrier would be made unaddressable by Windows and be unusable in the system. ” (Windows では 4 GB の境界を超えるシステム RAM にはアドレス指定ができなくなり、このような RAM はシステムで使用できなくなります。) というガードが行われている。これが32-bitのWindows XPやWindows Vistaではおよそ3GBしかメモリーを使えない理由のひとつである。
Windows の限界に挑む: 物理メモリ より引用

Windows クライアントのメモリの制限

64 ビット版 Windows クライアント SKU では、各 SKU の機能的な差別化要素として、サポートするメモリの容量が異なります。ロー エンドの Windows XP Starter では 512 MB ですが、Vista Ultimate では 128 GB、Windows 7 Ultimate では 192 GB となります。一方、32 ビット版 Windows クライアント SKU (Windows Vista、Windows XP、Windows 2000 Professional など) はすべて、最大 4 GB の物理メモリをサポートします。4 GB は標準的な x86 メモリ管理モードでアクセス可能な最大物理アドレスです。当初は、クライアント上での 4 GB を超えるメモリのサポートは、考慮することさえ必要ではありませんでした。これほどの容量のメモリは、サーバーでも搭載されていることがまれだったからです。

しかし、Windows XP SP2 が開発される頃には、4 GB を超えるクライアント システムの出現が予測されるようになり、Windows チームでは 4 GB を超えるメモリを搭載したシステムで Windows XP の幅広いテストを開始しました。また、Windows XP SP2 の場合、非実行メモリを実装するハードウェアでは既定で物理アドレス拡張 (PAE: Physical Address Extensions) のサポートが有効になりました。これは、データ実行防止 (DEP: Data Execution Prevention) が必要であるためですが、これにより 4 GB を超えるメモリのサポートも有効になります。

しかし、多くのシステムでクラッシュやハングが発生したり、ブート不可能になることがわかりました。これは、一部のデバイス ドライバー (一般的に、クライアントには存在し、サーバーには存在しないビデオ デバイスやオーディオ デバイスのドライバー) が、4 GB を超える物理アドレスを想定してプログラミングされていないことが原因です。その結果、ドライバーはこのようなアドレスを切り捨てるので、メモリの破損や破損の副作用が発生します。サーバー システムでは、通常、より汎用性の高いデバイスと、シンプルで安定したドライバーを使用するので、一般的にこの問題の影響を受けません。問題のあるクライアント ドライバーのエコ システムでは、クライアント SKU では、理論的にはアドレス可能であっても、4 GB を超える範囲の物理メモリを無視するという結論に達しました。

Changes to Functionality in Microsoft Windows XP Service Pack 2 Part 3: Memory Protection Technologies Driver Compatibility ("Windows XP Service Pack 2 セキュリティ強化機能搭載" での機能の変更点 ‐ 第 3 部 : メモリ保護技術 ドライバの互換性)
オペレーティング システムおよび PAE のサポート Windows と PAE
Windows XP SP1では4GB以上のアドレスのメモリーのガードが無かったようである。 Solaris インストールあれこれ

およそ3GBしかメモリーを使えない残りの理由には、ディスプレイアダプターがビデオメモリーのために大量のアドレス空間を使用すること、PCIデバイスの列挙用に大量のアドレス空間を使用することなどがある。

Windowsで使用できる物理メモリーの限界値以前にCPU/チップセットとしてサポートする限界値やマザーボードとしてサポートする限界値に引っかかることがある。
1GB=2,000円時代のメモリ増設を考える(下)

物理アドレス拡張(/PAEオプション)と4GT (4-gigabyte tuning) (/3GBオプション)

Windows Server 2003, Datacenter Edition SP2 (32-bit)の場合
/PAEなし かつ ハードウェアDEPなし /PAEあり または ハードウェアDEPあり
/3GBなし プロセスごとの仮想アドレス空間: 2GB
物理メモリー: 4GBアドレス制限
プロセスごとの仮想アドレス空間: 2GB
物理メモリー: 64GB
/3GBあり プロセスごとの仮想アドレス空間: 2GB〜3GB
物理メモリー: 4GBアドレス制限
プロセスごとの仮想アドレス空間: 2GB〜3GB
物理メモリー: 64GB

Windows XP SP2, SP3 (32-bit)の場合
/PAEなし かつ ハードウェアDEPなし /PAEあり または ハードウェアDEPあり
/3GBなし プロセスごとの仮想アドレス空間: 2GB
物理メモリー: 4GBアドレス制限
プロセスごとの仮想アドレス空間: 2GB
物理メモリー: 4GBアドレス制限
/3GBあり プロセスごとの仮想アドレス空間: 2GB〜3GB
物理メモリー: 4GBアドレス制限
プロセスごとの仮想アドレス空間: 2GB〜3GB
物理メモリー: 4GBアドレス制限


あるPC (メモリーモジュールは4GB実装、BIOSにはメモリーリマッピングの設定項目なし)でOSを変えた場合の「Windowsが使用できる物理メモリ」の違い

Windows Server 2003, Standard Edition SPなし /PAEなし 3,398,868KB
server 2003 standard sp0 nopae

Windows Server 2003, Standard Edition SPなし /PAEあり 4,185,108KB
server 2003 standard sp0 pae

Windows Server 2003, Standard Edition SP1 /PAEなし ハードウェアDEPあり 4,185,064KB
server 2003 standard sp1 dep

Windows XP Professional SP3 /PAEなし ハードウェアDEPあり 3,398,864KB
xp sp3 dep

Windows Vista Business SP2 paeなし ハードウェアDEPあり 3,398,024KB
vista sp2 dep

参考
物理アドレス拡張 - PAE メモリと Windows
PAE X86 Technical Reference
Windows XP Service Pack 2、Windows XP Tablet PC Edition 2005、および Windows Server 2003 のデータ実行防止 (DEP) 機能の詳細
How to determine that hardware DEP is available and configured on your computer 機械翻訳
4 GB の RAM が搭載されている場合、Windows Vista の [システム情報] ダイアログ ボックスで報告されるシステム メモリが予想より小さい
Windows の限界に挑む: 物理メモリ
Windows の限界に挑む: 仮想メモリ
BCD Boot Options Reference

コンテンツ
Windows XP, Windows Vistaの種類 - ライセンスの比較
Windows XPの種類 - ライセンスの比較
Windows Vistaの種類 - ライセンスの比較
Windows 7の種類 - ライセンスの比較
Windows Server ライセンスの種類
ボリュームライセンス
使用許諾契約書
CAL クライアントアクセスライセンス
Retail版Windows SKU
DSP版Windows SKU
プロダクトアクティベーション (ライセンス認証)
Windows XPのインストール
不明なデバイス
メモリーリマッピング
メモリーおよびアドレス空間の限界値

Top
最終更新 2012-10-13