Windows Server 2008 R2は、すべてのエディションが64ビットでのみ提供される初めてのWindowsOSになる。64ビットでのみの提供とは、x64(AMD64)プロセッサ対応の標準のエディション群と、IA-64プロセッサ対応のWindows Server 2008 R2 for Itanium-Based Systemsが用意され、これまで主流であったx86版が一切提供されないということである。本書では特に記述がない限り、「64ビット」と言えばx64のほうを指している。IA-64は一部のハイエンド用途に限られ、一般向けではないからだ。
32ビット(x86)アーキテクチャーの限界
プロセッサのマルチコア化やクロック数の向上、メモリの大容量化とコストダウンなどにより、32ビットOSでも現在のハードウェアから得られる恩恵は大きい。しかし、32ビットOSには、32ビットアーキテクチャーの仕様上の制約がある。32ビットOS環境において、プロセッサやメモリを増設してスケールアップを図っても、期待したほど処理能力が伸びないというのは、特にサーバー用途においてかなり以前から問題になっていた。このスケールアップが頭打ちになる要因は、32ビットアーキテクチャーの仕様上の制約からくるものである。表2は、32ビットアーキテクチャーと64ビットアーキテクチャーの仕様を比較したものだ。
32ビットOSは、32ビットアーキテクチャーの仕様に基づいている(図5)。OSやアプリケーションが利用可能な仮想アドレス空間は4GB(2の32乗)までで、この領域がカーネルモードのOSと、ユーザーモードのアプリケーションに均等に2GBずつに割り当てられる。仮想アドレス空間が4GBという制約は、物理メモリの上限にも影響する。通常、32ビット環境では最大で4GBの物理メモリまでしかサポートされない。実メモリ内で処理できないデータは、ページフォールトを発生させるため、ディスク I/Oがボトルネックとなり、パフォーマンスに影響する。OSを/3GBブートスイッチで起動する「アプリケーションメモリ調整」を利用することで、アプリケーションの仮想アドレス空間を最大3GBまで拡張することができるが、その場合OSが利用できる空間が1GBに削減されてしまい、カーネルモードドライバーへのメモリ割り当てが不足するなど安定性に影響する場合がある。また、3GBに拡張された仮想メモリ空間をアプリケーションが利用するためには、アプリケーションがリンカオプション/LARGEADDRESSAWAREを使用してビルドされている必要もある。
