プロが教えるわが家の防犯対策術!

大容量のメモリを使うには64bitのOSを使う必要がありますよね。
32bitのOSでもRAMディスクにすることで、OS管理外のメモリを活かすことができます。

そこでふと思ったのですが、このRAMディスクに仮想メモリを置くと、32bitのOSでも実質大容量メモリを使えることになるのではないでしょうか?
32bitではアプリケーションが使えるのは2GBまでですけど、これを超えてしまった場合は仮想メモリにまわして補うんですよね?
その仮想メモリ自体が元々メモリとして使われるはずのRAMなら、結局合わせたサイズのメモリを使ってるのと同じということにはなりませんか?

A 回答 (4件)

>その有効というのは、メインメモリとして使えるということでしょうか?


>HDDとして使えるというだけの話ですか?

ストレージとして使えるだけです。
プログラム実行時に配置されるモノなどの「主記憶装置」として使用できるワケではありません。
# というかCPUから主記憶領域として扱えないのでドライバが(CPUの)拡張命令を使用してページ切り換えなどでアクセスしています。
# 主記憶領域としてはCPUからアクセスできませんので命令を置いたり…などのアドレスとしてマップできない…のでしょう。

>その4GBを超えた部分が仮想メモリにいくので、その移された部分で遅くなるということですよね?

プログラム実行時に場所として指定するアドレスが(32Bitなので)4GBまでしかありません。
よって、プログラムから4GB以上をアクセスする方法がありません。
# ファイルの場合は32Bitを上位/下位に分けることで64Bit長としてアクセスする手段がありますが…。
# このヘンの作りが甘いとNTFSでも4G越えるファイルを扱えないプログラムになる。

>それともRAMもRAMディスクにすることで、HDDよりは速いものの普通のRAMよりはアクセス速度が極端に落ちるということでしょうか?

CPUが直接アクセスできないので、間にドライバが介在します。
よって速度は落ちます。
# が64ビットでもページングの関係で遅くなることがある…ようです。
# 日経Linuxのバックナンバーでベンチマークの記事に「予想通り速度の低下が」というモノがあったかと。
# 帯域の性能がちょっと落ちる…って程度でしたかね。
# CPUのレジスタ幅が64ビットになる恩恵の方が大きいとか書かれていたような……。
    • good
    • 0
この回答へのお礼

高速な仮想メモリを作ったところで、アクセスする方法自体がプログラムにないんですか。
ドライバが通訳のような形をとって、それらしく見せてるだけということでしょうか。
ドライバを介してアクセスするより、直接の方が確かに速いですよね。
分かりやすいご説明ありがとうございました。

お礼日時:2011/01/26 10:14

> 仮想メモリがHDDということなら分かるのですが、RAMディスクは元々は高速のRAM


> なんだから速さは結果的に変わらないということにはならないのでしょうか?

64ビットなら、メモリに収まっているソフトを切り替える場合は、メモリ操作は行われません。つまり切り替えにかかるメモリ操作時間はゼロです。が、RAMディスクでは全て例外なく、4GBの外の空間にコピーして追い出し、代わりに必要なものを持ってこなければなりません。いくらメモリが高速だからと言っても、例えばDDR3-1333であっても1GBをコピーするには約0.1秒かかります(理論値が10.667GB/Sec)。1GBを追い出して代わりの1GBを持ってくるので、往復で約0.2秒。これは明らかに引っかかりとして認識されるでしょうし、そもそもこれはメモリ帯域をRAMディスクの操作が独占できた場合の話です。メモリ帯域はもちろん他のソフトも使っているし、ディスクからのファイルデータ・ネットワーク・グラボなどのデータもここを流れているので、誰がどれだけ使っていいかはOS様の御采配で決まるものです。もし独占した場合は当然、他の処理の速度が犠牲になります。高速化したいからRAMディスクを使っているのに、RAMディスクに処理を食われて他が遅くなったのでは、本末転倒ですよね。

それにRAMディスクドライバで、メモリアクセスをディスクアクセスに変換して動作しているので、ここでも速度低下が起きるでしょう。そんなこんなで、64ビットの時と同じ速度で動くなんてあり得ない、必ず遅くなるはずだと言うわけです。どの程度遅くなるかは、やってる処理やRAMディスクドライバのでき次第になってくるでしょうけど、最低でも1桁ダウンの覚悟は必要じゃないかと思いますよ。
    • good
    • 0
この回答へのお礼

作業場所はあくまで4GBの部分で、仮想メモリはどんなに高速だろうと倉庫でしかないということなんですね。
桁で遅れがあるなら、確かに普通のメモリと同様には使えませんね。
ありがとうございました。

お礼日時:2011/01/26 10:10

完全にイコールにはならないです。

64ビットだと、1つのプロセス(ソフト)で4GBを超えるメモリ空間を扱えますが、32ビットだとどんなにメモリを積んでも、1プロセスで扱えるメモリは2GB(Windowsの場合)で頭打ちになります。なので一気に10GBのメモリを要求するようなソフトだと、32ビットでは根本的に使えません。ハードディスクで、フォーマットがFAT32にしていると、どんな大容量HDDでも4GBを超える大きさのファイルは格納できないのと同じようなものです。

部屋に例えて言えば、1坪=1GBと見立てた場合、

32ビットで4GBメモリ:4坪の貸事務所が1つある
32ビットで16GBメモリ:4坪の貸事務所が1つと、すぐそばに12坪の倉庫(倉庫専用で改装は一切不可)が1つある
64ビットで16GBメモリ:16坪の貸事務所が1つある
※今回の場合、ハードディスクは遠くの物流センターに相当します

という感じになります。なので32ビットだと、4坪より狭くする分には部屋を区切ってドアを作れば対応できるんですが、もし6坪の事務所を1部屋借りたいというお客さんが現れた場合はお手上げです。また、4坪の事務所を借りたいというお客さんが複数現れると、毎回倉庫にいったん待避してもらって事務所を空けることになります。いくら倉庫がすぐそばでも、行ったり来たりするのは面倒ですよね。ましてや遠い物流センターまで持っていってまた持って帰るなんて論外。64ビットならば16GBを全て自由に使える(ちなみに64bit版Windowsのメモリ上限は8TBのはず)ため、こうした手間がかかりません。

なので、個々のソフトが2GBしか使っていなくても、合計で4GBを超えることがひんぱんに発生する用途なら、64ビットの方がRAMディスクよりも多分10倍は高速です。よって64ビットと同じにはなりません。しかし、ハードディスクを仮想メモリにすることを考えたら、RAMディスクの方が10~100倍速いですけどね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
その4GBを超えた部分が仮想メモリにいくので、その移された部分で遅くなるということですよね?
仮想メモリがHDDということなら分かるのですが、RAMディスクは元々は高速のRAMなんだから速さは結果的に変わらないということにはならないのでしょうか?
それともRAMもRAMディスクにすることで、HDDよりは速いものの普通のRAMよりはアクセス速度が極端に落ちるということでしょうか?

お礼日時:2011/01/25 15:47

その通りです。


32bitOSでも、余ったメモリをRAMディスクにすれば、有効に利用できます。

参考URL:http://buffalo.jp/products/catalog/memory/speedu …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
その有効というのは、メインメモリとして使えるということでしょうか?
HDDとして使えるというだけの話ですか?

お礼日時:2011/01/25 15:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!