1. WebとPCのメモ帳
  2. 3GBの壁
  3. 3GBの壁についてのまとめ(前編)

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

Entry Time
2007 11/28 00:33 (Wed)
Category
3GBの壁
あとで読む

 PCのメモリを4GB搭載(or増設)したのに、4GBフルに認識しない現象のまとめです。

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

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

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

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

 しかしながら、それを阻害しているのは32bitOS(Windows)の4GBの壁です。32bitのOSはメモリを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

 ここから先は煩雑な文章を避けるためにFAQ形式でまとめていきます。

メモリを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に対応していないと使用できません。

 また、現在のWindowsの主流はあくまで32bit版のため、同じWindowsでも64bitへのソフト・ハードの対応は決して良くありません。使っていたソフトが動かない、周辺機器のドライバが存在しない、Windowsが安定しないなど様々な問題が発生する可能性があります。一般的には、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かわからない

 99.99%ぐらいの確率で32bitのWindowsだと思われます。意図的に自分で64bit版を選択しない限りは、64bit版が入っていることはまずありません。また、64bit版のOSを使っている方はこんなところを読んではいないでしょう。

 長くなりすぎたので技術的な話は後編で。

[追記 - 2007年 12/16]
 後編の続きの補足を書きました。

[追記2]
 アドレス空間がよくわからないという方は下記へ
あなたは混同していませんか? 複雑な「アドレス空間」のお話

参考サイト
関連エントリ
FC2 Tag List

コメント

MMIO

こんばんわ。3GBの壁を検索してこのページにたどりつきました。記事の内容や各種リンクがとても参考になりました。1つ教えていただきたいのですがよろしいでしょうか?MMIOというのはハードウェア(?)が、優先して物理メモリ上にて確保するアドレス領域であるため、物理メモリ4GBをつんだ場合は4GBのアドレス空間しか管理できない32bitOSでは、MMIO分約1GB分は使用できないという認識でよいかと思いますが、例えば物理メモリが2GBだった場合、MMIOはどこにアドレスを確保するのでしょうか?素人考えだと、物理メモリが何GBであろうと、MMIOが確保する分はOSが使えないのではと思うのですが・・・。

  • い-とん [#-] |
  • URL |
  • 2008.02-15 (金) 19:17 |
  • [edit]

こんにちは。

>例えば物理メモリが2GBだった場合、MMIOはどこにアドレスを確保するのでしょうか?

詳しくは後編で書いているのですが、MMIOで使われる物理アドレスは後ろから確保されます。
メモリの搭載量がいくつであろうと物理アドレスの広さは4GBで変わりませんから、搭載メモリが2GBなら物理アドレスは後半から2GB残ります。
その残った2GBの物理アドレス空間がMMIOに使われるので、メモリ搭載量が2GBなら問題は起きないわけです。

  • RPM [#CbksYEaU] |
  • URL |
  • 2008.02-15 (金) 21:27 |
  • [edit]
2GBの壁

こんばんわ。返信ありがとうございます。書いている内に物理メモリとアドレス空間がごちゃまぜになっていたようでした。4GBのアドレス空間を物理メモリとMMIOが分け合ってるのですね。

ところでもう一点質問があります。「4GBの壁」のため3.2GB程度しか物理メモリが認識されていないとします。この状態で1GBの仮想メモリを3つのプログラムが同時使用したとする場合、

windowsが使用できるアドレス空間が3.2GBで、OSが2GB使用するため、残りの物理メモリ1.2GB内で3つのプログラムが400MB分け合い、足りない部分はスワップする。

認識されていない800MB分の物理メモリは仮想メモリ用に使用することはできず完全な無駄。

上記のような認識でよいのでしょうか?

  • いーとん [#-] |
  • URL |
  • 2008.02-17 (日) 21:24 |
  • [edit]

> 「4GBの壁」のため3.2GB程度しか物理メモリが認識されていないとします。
> この状態で1GBの仮想メモリを3つのプログラムが同時使用したとする場合、

仮想空間はプログラム(アプリケーション)ごとに作られるため、同じ仮想空間に複数のプログラムのメモリが混在することはありません。
プログラムごとに自由な仮想空間が2GBずつ割り当てられます。

> windowsが使用できるアドレス空間が3.2GBで、OSが2GB使用するため、残りの物理メモリ1.2GB内で3つのプログラムが400MB分け合い、足りない部分はスワップする。

物理アドレスと仮想アドレスを混同しているように見受けられます。
両者は同じようにOSが扱っていますが、個々に独立したものです。
確かに仮想アドレスの2GBはOSの制御部分となっていますが、実際のメモリの認識に関係がある物理アドレスには2GBの壁はありません。
http://128bit.blog41.fc2.com/blog-entry-32.html
上記を未読なら一度読んでみてください。

> 認識されていない800MB分の物理メモリは仮想メモリ用に使用することはできず完全な無駄。

この部分はその通りです。
認識していない部分のメモリは使うことができません。

  • RPM [#CbksYEaU] |
  • URL |
  • 2008.02-17 (日) 23:41 |
  • [edit]
Comment Form

非公開コメントにする
非公開コメントにチェックを付けた場合は何も表示されません。(「管理者のみ閲覧できます」とも表示されません。)

トラックバック

トラックバックURL
http://128bit.blog41.fc2.com/tb.php/1-98235363
Google Ad
はてなブックマーク
このBlogのはてなブックマーク数
カテゴリ
月別アーカイブ
  1. 2008年05月 (9)
  2. 2008年04月 (15)
  3. 2008年03月 (21)
  4. 2008年02月 (24)
  5. 2008年01月 (27)
  6. 2007年12月 (20)
  7. 2007年11月 (2)
RSSフィード
Amazon
PVカウンター

: 現在の閲覧者数
リンク
Powered by FeedBurner
Technorati Japan
track feed
最近のコメント