32bitOSで4GBメモリが3GB程度にしか認識しない問題


-スポンサードリンク-

MMIOが原因となって生じる問題です。
32bit OSの3GBの壁と呼ばれたりします。(現在は64bitが主流になってきているので、ほとんど問題になる事はないと思いますが・・・)
今回は、本来32bitパソコンなら4GBまで認識するはずのメモリが、何故3GB程度にしか認識しないのかについて、軽ーく書いていきます。
mem001

32bit OSの4GBの壁

その前に32bit  OSが4GBまでのメモリまでしか対応できない理由をちょっとだけ説明します。
結論から言うと、一般ユーザー向けのWindows 32bit版がメモリを4GBまでしかサポートしていないから。
一般ユーザー向けのOSは、メモリのアドレス空間が2の32乗(32bit)=4GB(4,294,967,296Byte)となっているので、4GB以上のメモリを搭載しても、それ以上は認識できないことになります。
しかし、32bit対応のOSだからと言って、33bit以上のアドレス空間が利用できないわけではなく、OSのプログラム次第では十分対応できます。
では、何故対応しないのかについては、一般向けに市場に出回っているハードのサポートができない事が一番の理由だと思います。

-スポンサードリンク-

MMIOによる3GBの壁

32bitOSでも、本来は4GBまでのメモリを認識するはずなのに、3.5GB程度としか認識しない問題について。
これは、MMIOによる問題が原因と考えて間違いありません。

そもそもMMIOとは、CPUがI/Oデバイスにアクセスするための”IOメモリ”と、通常の”物理メモリ”とを同じアドレス空間で取り扱う事とした仕組みです。
昔の32bitコンピュータはメモリを4GBも搭載する事になるとは夢にも思っておらず、I/Oデバイスにアクセスするためのアドレス空間と、物理メモリにアクセスするアドレス空間を別々の専用回路を作るより、メモリのアドレス空間の一部をI/Oアドレスとして使ってしまった方がスマートだと思ったわけです。
MMIOによる物理メモリ空間とIOメモリ空間の利用イメージ
MMIOのメモリ利用イメージ


 

上のイメージのように、物理メモリの容量が小さいうちは問題ないのですが、4GBのメモリを搭載すると下のイメージのようになってしまいます。
物理メモリの一部がIOメモリ空間に利用され、認識できなくなっています。
これが、MMIOによる32bit OSで4GBメモリが正しく認識されてない問題というわけです。
MMIOで4GB以上のメモリを搭載した時のイメージ

 

ではどうすればよいか?

MMIOによってIOメモリ空間が利用されてしまっているので、この問題を解決するには、MMIOを使わないか、33bit以上のアドレス空間をつくればよいわけです。
しかし、 話はそんなに単純ではありません。
何せMMIOを使わない場合、IOアドレス用の専用回路が必要ですし、33bit以上のアドレス空間を利用するには、OS自体を作り変えて、なお且つハードウェアの動作確認が必要になってきます。

海外のフリーソフトの中には、32bitのOSで4GBのメモリを認識させるツールがあるようですが、「うーん・・・」どうなんでしょう?
導入している方のレビューを見ると、動作が不安定になったり起動不能になっているケースも見られます。

個人的にはシステムに直結するフリーソフトを無理に導入することはお勧めしません。
それよりも64bitのOSを購入した方が安全で確実ですから・・・



関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントフィード

トラックバック URL : http://jisaku-pc.net/speed/neta_01.html/trackback



Windows高速化のツボ!!