Microsoftのエンジニアが、32ビット版Windowsのメモリ容量が4GBに制限された理由を公式ブログで説明した。技術的には4GBを超える物理メモリの利用が可能だったにもかかわらず、古いドライバーとの互換性を優先したという。
32ビットCPUと4GBの壁
Windows Latestが紹介したのは、MicrosoftのRaymond Chen氏が5月12日に公開したブログ記事だ。Chen氏はこの記事で、32ビット版Windowsのメモリ上限が4GBに設定された背景を解説している。
コンピュータの世界では数値を2進数で管理するため、SI単位の10進数は都合が悪い。そこで1000の近似値である1024(2の10乗)を倍量単位のキロとして採用した。メガは2の20乗、ギガは2の30乗という考え方だ。32ビットレジスターを搭載する旧式CPUでは、32ビットで表現できるアドレス空間が「4×2の30乗」、すなわち4GBが上限となった。
この制限は、IntelがPentium Proで導入した物理アドレス拡張(PAE)によって解決された。PAEにより、32ビットアーキテクチャー上で36ビット(64GB)または37ビット(128GB)のアドレスを扱えるようになった。Microsoftの資料によれば、Windows Server 2003 SP1 Enterpriseは最大64GB、Datacenterは最大128GBの物理メモリに対応したという。
互換性優先の決断
CPUにPAEが搭載され、4GB以上のメモリを扱えるようになったが、Windows XP SP2では強制的に最大容量が4GBに制限された。Chen氏によると、この制限は古いドライバーの互換性確保が理由だという。
PAE登場前の古いドライバーなどは、メモリ空間を32ビットで管理する。このドライバーをPAE環境に持ち込むと、上位4ビットを無視した処理が走り、メモリを破壊する可能性がある。Windowsが異常を検知して動作を止めることができればよいが、カーネルレベルで動作するドライバーの動作を防止することはできない。その結果、システム全体が不安定となり、最悪の場合にはブルースクリーン(BSoD: Blue Screen of Death)に陥ることもあった。
そこでMicrosoftは安定性を優先し、あえてXP SP2に4GBの制限を追加した。より高額なエディションを買わせるためではなく、古いデバイスの互換性を維持するために必要な決断だったとしている。
一般ユーザーとサーバ管理者の違い
ここで1つの疑問が浮かび上がる。Windows Server 2003 SP1 Enterpriseには、なぜ同様の制限を加える必要がなかったのだろうか。
この疑問について、Chen氏はユーザー層の違いを指摘した。XP SP2を利用する一般ユーザーは古いデバイスを使い続ける可能性がある一方、Serverエディションを扱う管理者は、互換性に問題のあるデバイスを使用する可能性が低いという。Windows Latestも「消費者は何でもインストールします。一方で、サーバ管理者はできるだけインストールを少なくします」と説明している。
なお、Windows Server 2003 SP1 Standard Editionは、Serverエディションでありながら4GBに制限されている。



