3GBの壁についてのまとめ(前編)

ご注意
この記事は私が様々なWebsite、Blog、掲示板等をあくまで個人的に回ってまとめたものであり、内容の正確さを保証するものではありません。書いてある情報通りに行動して何かしらのトラブル等が起こったとしても、当方では責任はもてません。あくまで自己責任でお願いします。

なお、記述してある内容は一般的な(x86アーキテクチャの)Windowsマシンを対象にしています。

一般的なPCはメモリを4GBフルに使うことはできない

現在メモリの値段はどんどん下がっており、ハードウェア(マザーボード)が許す限りのメモリを搭載することは、すでに非現実的な話ではありません。メモリはあればあるだけ快適になると一般的には考えられていますし、価格の低下はそれを十分許す状況を作っています。

しかしながら、それを阻害しているのは32bit OS(Windows)の4GBの壁です。32bitのWindowsはメモリを4GBまでしか扱えず、それ以上搭載してもOSから認識することはできません。(4GBに制限される理由は2の32乗が4GB[4,294,967,296Byte]なため。)最新のWindows Vistaでも32bit版のメモリサポートは4GBまでとなっています。

と、ここまでは大概どこにでも書いてある常識的なことです。これはWindowsの「仕様」にもきちんと4GBまでのサポートと書かれているので、例えば6GBメモリを積んですべてを認識しなくても、仕様どおりの結果でしかありません。

しかしここで実際に問題になるのは、仕様の限界である4GBを搭載しても実際のWindowsからは4GBと認識してくれないことです。当然4GBフルに認識しないだけではなく、実際に使用することもできません。ハードウェアの構成によりますが、基本的に認識される容量はは3GB前後に制限されます。一般的にこれを「3GBの壁」と呼びます。

今回の「前編」では、主にその現象が起こる環境の整理と、対処方法をまとめました。

「3GBの壁」FAQ その1

メモリを4GB装着したが、Windowsからは4GBより少なく認識される(3GB+α程度)

正常な挙動です。一般的に使用されている32bitのWindows(2000、XP、Vista)ではそうなります。

特殊なドライバやソフトを入れることによって、4GBフルに認識できるようになりますか?

現状ではそのような物は提供されていませんし、される予定もないようです。つまり不可能です。

Windows Vista SP1からは4GBと表示されるようになりましたが、実際に使用することはできません。あくまで表示が4GBになるだけです。

これはハードウェアの問題ですか?ソフトウェア(OS)の問題ですか?

両方が問題の場合がありますが、主にOSの問題です。新しいミドルレンジ以上のデスクトップ自作PCを使っているなら、OS(Windows)の問題である可能性がかなり高いといえます。(詳しくは補足をご覧ください。)

OSで認識できるメモリ容量にPCごとで差があるのはなぜですか?

端的には、PCに接続(搭載)されているデバイスが多ければ多いほど使用できる容量は減ります。自作マシンの場合は、構成がシンプルなマザーボードで拡張カードが少なければ使用できるメモリは増えるでしょう。

逆に多数のLANやIEEE1394やRAID、SLIなど構成がリッチになるほど、使用できるメモリは減ります。使用可能な容量は、環境によって2.7GB~3.6GBぐらいの範囲で変動するようです。

4GBすべてを認識させるにはどうしたらいいですか?

ハードウェア(BIOS)が4GBをきちんと認識できているなら、64bit版のWindowsを使うのが一番確実です。具体的にはWindows XP Professional x64 EditionかWindows Vistaの64bit版です。VistaならHome BasicからUltimateまで64bit版が用意されています。

ただし、64bit版はハードウェア(CPU)が64bitに対応していないと使用できません。特にIntelのAtomは新しいモデルでも64bit対応になっていないので、注意が必要です。

また、現在のWindowsの主流はあくまで32bit版のため、同じWindowsでも64bitへのソフト・ハードの対応は決して良くありません。使っていたソフトが動かない、周辺機器のドライバが存在しない、Windowsが安定しないなど様々な問題が発生する可能性があります。一般的に2007年末現在では、64bitへの移行はまだ時期尚早と考えられているといっていいでしょう。

32bitのWindowsで4GBを認識させる方法は本当にありませんか?

まったく存在しないわけではありません。下記の32bit Windowsは4GB以上のメモリをサポートしており、4GBフルに使用することが可能です。(その上でWindows上やBIOSの設定が必要になるでしょう。)

  • Windows 2000 Advanced Server
    • 8GBまでサポート
  • Windows Server 2003 Enterprise Edition
    • 32GBまでサポート

注意点は、同じOSでもエディションで使用できるメモリ量が違うところです。

一般的なWindows 2000や2000 Serverではメモリサポートが4GBまでです。また、Windows Server 2003でもStandard Editionでは同じように4GBまでしかサポートしていません。Windows Server 2003で確実に3GBの壁を突破したいなら、Enterprise Edition以上を選択する必要があります。詳しくはマイクロソフトのページのメモリ サポートと Windows オペレーティング システムを見てください。

ただこれらのOSはあくまでサーバ&企業向けであり、一般ユーザの入手性がよいとはいえません。値段も高く、そう簡単に導入できる類の物ではないでしょう。それに一般的なエディションではないため、ソフトやドライバの互換性の問題が発生する可能性もあります。

Windows Server 2003 Standard Editionでも3GBの壁が打ち破れる(4GBすべてを認識できる)という情報もあります。技術的な情報は補足で書いていますが、現状では何ともいえません。 (4GB使えるという情報と使えないという情報量を比べた場合、圧倒的に後者の使えないという方が多い。)

現状ではあくまで4GB使うことができる「かも」しれない、という認識にしておいた方が無難だと思われます。「確実」に32bit Windowsで4GBをフルに使いたいなら、Enterprise Editionが間違いないでしょう。

ハードウェア(BIOS)上ですでに4GBと認識していません

そのハードウェア(マザーボード)が4GB以上のメモリに対応していない可能性があります。詳しくはPCやマザーボードの説明書で確認してください。

M/Bによっては全体の容量としては4GBのメモリをサポートしていても、メモリスロットが1GBのメモリまでにしか対応していないこともあります。また、BIOSの設定をデフォルトから変更して初めて4GB以上を認識できるものも存在するようです。

更新できるBIOSが提供されているなら、最新のものに更新してみるといいかもしれません。(もちろん、M/BのBIOSアップデートは自己責任でお願いします。)

OSを変更しない場合はどのような解決方法がありますか?

いずれにしても4GBをフルに使うことは不可能ですが、対応する方法は下記のものがあると思います。

3GBしか認識していないが、4GBのまま使用する

問題は解決しませんが、特にすることはないので楽です。

メモリの搭載量自体を3GBにする

今時のデュアルチャンネルシステムならば、1GB×2+512MB×2などの構成になるでしょう。ただし、場合によっては1GBメモリと512MBメモリの相性問題などが発生するかもしれません。

接続されているデバイスを減らす(or換える)

接続されているデバイスが多いほど認識するメモリが減少するので、不要な使っていないデバイスは外してしまいましょう。不要なオンボード機能をBIOSで無効にすることでも、認識するメモリを若干増やすことができるようです。

特にビデオカードは、Nvidia製のGeforceが利用可能なメモリを多く減らすとの情報もあります。他社製のビデオカードに換えることによって、認識するメモリが増やせるかもしれません。

番外編

ここまで読んだが自分が使っているWindowsが32bitか64bitかわからない

ほぼ確実に32bitのWindowsだと思われます。2007年現在では、意図的に自分で64bit版を選択しない限りは、64bit版が入っていることはまずありません。また、64bit版のOSを使っている方はフルにメモリが使えているはずですから、こんなところを読んではいないでしょう。

技術的な話は後編に続きます。

後編の続きの補足を書きました。

アドレス空間がよくわからない(区別が付かない)という方のために以下の記事を書きました。興味がある方は参照してください。

参考になったサイト