Mac で Ramdisk は使えますか?


現在 2008年に発売された iMac(メモリ 4GB)に Bootcamp で Windows XP 32bit 版を動かしているのですが、OS からはメモリが 3GB 程度しか利用できないため、Ramdisk の導入を考えています。通常はハードウェア(BIOS)と Windows でそれぞれ PAE に対応させる設定をしますが、後者の設定はできたのですが、Bootcamp 上の Win で BIOS 設定をどのようにすればわかりません。(この設定をせずに Ramdisk をインストールしても未使用領域は使えませんでした)

調べたところ Mac では BIOS は存在せず、Win 32bit 版を動作させる場合は EFI から BIOS をエミュレートしている(CSM?)ような記述を見つけたのですが、このエミュレートされた BIOS の設定を確認・変更できますか?もしくは、他に Bootcamp 上の Win で ramdisk を動作させる方法があるのでしょうか?

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2011/05/04 18:22:12
  • 終了:2011/05/05 18:36:39

ベストアンサー

id:saijyoh_739 No.2

saijyoh_739回答回数113ベストアンサー獲得回数102011/05/04 22:51:07

ポイント40pt

使える場合はあります。

『windows ramdisk 管理外』で検索してOS管理外のメモリを使える幾つかラムディスクソフト試されれば相性の良いソフトが見つかるかも知れません。

※確実性を高める為にはOSが管理しているメモリの物理アドレスを調べて、そのアドレスを除いて割り当てるのが良いでしょう。


まず、誤解されている様ですが、PAEはCPUに備わっている機能です。

OSや他のソフトが提供しているサービスではありません。

OSが物理アドレスの0x00000000-0xFFFFFFFFしか管理しないなら、それ以外の領域はOSの管理を無視して使っても問題にはなりません。(常に使われてない状態のはず)

※OSに管理して貰えないので自動で管理はしてもらえないので、利用者が管理する必要はあります。それは、一つのソフトに占有させるなどで行えば良いです。(2つの管理外を使うラムディスクドライバ使う場合には割り当てるアドレス範囲をOSが管理している領域を避けつつ重複しないように設定するなど)

http://www.atmarkit.co.jp/fwin2k/win2ktips/1140maxmem/maxmem.htm...

> 通常はハードウェア(BIOS)と Windows でそれぞれ PAE に対応させる設定をしますが、後者の設定はできたのですが、Bootcamp 上の Win で BIOS 設定をどのようにすればわかりません。

>(この設定をせずに Ramdisk をインストールしても未使用領域は使えませんでした)

通常のRAMDISKソフトはOSが管理しているメモリを正規の手続きでOSに割り当ててもらって使います。

OS管理外のメモリが使えるソフトは特殊なソフトでその機能を持っているソフト使わないと実現でききない機能です。

引用した部分は誤解でしょうね。上に紹介したページに各OSの制限が書かれていますが、2000のAdvanced ServerやDatacenter Serverなど(このページに書かれている以外にも細かいエディションでいくつか4GBを越えるメモリへ対応した製品があります)では使える場合がありますが、4GBが最大の構成になっている製品では使える物理アドレスの大きさが4GBで、その中にメモリ以外にも様々なハードウェアにアクセスするアドレス領域を含んでいるのでメモリ以外のアドレス範囲を除くと最大で2.5GB-3.5GBくらいになります。

※BIOSは普通に4GBのメモリを認識しているのではありませんか。BIOSの行うのは起動時のメモリチェックや実際にメモリの取り付けられているアドレスの一覧つくる位で利用状況の管理は全く行いません。BIOSから見ればOSが勝手に管理しています。OSの管理している領域外のメモリは使いたければOS以外のソフトで管理して使えば良いものです。


検索してみましたが、この辺りに付いてはデタラメ情報が多いですね。

ざくっと書くとIntelのPentium Proという1995年に発売されたCPUにPAE(物理アドレス拡張[フィジカル=アドレス=エクステンション])という機能が追加されました。

以降の386系CPUのほぼ全てに(PentiumIIにもPentiumIIIにもPentium4にもそれ以降に開発されたCeleronにもCoreにもCore2にもCoreiにも……)搭載されている機能です。

PentiumProでは64GB(36ビット)のアドレスが使えるようになりましたが、PAE機能を持っているCPUの最小アドレスです。(物理アドレス38bitのCPUなど64GBを越える物理アドレス空間を持っているCPUもあります)

最大4GBまでのWindowsは多分起動時認識した時点で使う物理アドレスは固定してしまっていると思います。固定すれば後は全く変える必要がなく管理が楽ですから。PAEでも非PAEでも同じだと。当然使う事のある物理アドレスは全て含めてマッピングしているでしょうから、アドレス空間を必要とする様々なハードウェアも4GBの一部としてマッピングされているはずです。例えば前側3GBはメモリで後ろ側1GBはPCIバスや様々なデバイスのアクセスに使うアドレスとしてという具合に。

id:quesit

長文による詳細な回答ありがとうございます。

すみません、OS 管理外領域の利用を前提とした話をしていましたが、その条件を書き忘れていました。PAE は CPU の機能ですが、OS 管理外領域へのアクセスについては BIOS によるサポート及び Windows(内のドライバ)を経由する必要があると理解しており、両方の条件を満たす場合に限り特殊なソフトウェアから OS 管理外領域のメモリ領域にアクセス可能であると理解してますが、これで正しいでしょうか。

ところで、機械語レベルでの PAE の動作を理解していないのですが、CPU の機能ということは BIOS 上の設定や OS の PAE サポートオプションを無視して勝手に CPU に PAE を利用させるようなバイナリを作成して実行することはできそうですね。実行させたら、やっぱり落ちるのかな…?

2011/05/05 08:58:58

その他の回答(2件)

id:asuka645 No.1

あすか回答回数856ベストアンサー獲得回数972011/05/04 20:26:41

ポイント25pt

結論から書くと、できません。


Bootcampで動かしているWindowsXP 32bit版から、OSの管理領域外にRAMディスクを作りたいというご質問ですが、お気づきのように、MacのEFIはPAEをサービスしていません。

他にWindowsXPの管理外領域にアクセスする方法もありません。

id:quesit

回答ありがとうございます。

ふーむ、やはり無理なのですかね。

「PAE をサービスしていない」というのは Apple の公式サポートのことではなく、

EFI の BIOS エミュレータの実装が技術的に PAE をサポートできない、という理解でいいのですよね…

2011/05/04 21:08:03
id:saijyoh_739 No.2

saijyoh_739回答回数113ベストアンサー獲得回数102011/05/04 22:51:07ここでベストアンサー

ポイント40pt

使える場合はあります。

『windows ramdisk 管理外』で検索してOS管理外のメモリを使える幾つかラムディスクソフト試されれば相性の良いソフトが見つかるかも知れません。

※確実性を高める為にはOSが管理しているメモリの物理アドレスを調べて、そのアドレスを除いて割り当てるのが良いでしょう。


まず、誤解されている様ですが、PAEはCPUに備わっている機能です。

OSや他のソフトが提供しているサービスではありません。

OSが物理アドレスの0x00000000-0xFFFFFFFFしか管理しないなら、それ以外の領域はOSの管理を無視して使っても問題にはなりません。(常に使われてない状態のはず)

※OSに管理して貰えないので自動で管理はしてもらえないので、利用者が管理する必要はあります。それは、一つのソフトに占有させるなどで行えば良いです。(2つの管理外を使うラムディスクドライバ使う場合には割り当てるアドレス範囲をOSが管理している領域を避けつつ重複しないように設定するなど)

http://www.atmarkit.co.jp/fwin2k/win2ktips/1140maxmem/maxmem.htm...

> 通常はハードウェア(BIOS)と Windows でそれぞれ PAE に対応させる設定をしますが、後者の設定はできたのですが、Bootcamp 上の Win で BIOS 設定をどのようにすればわかりません。

>(この設定をせずに Ramdisk をインストールしても未使用領域は使えませんでした)

通常のRAMDISKソフトはOSが管理しているメモリを正規の手続きでOSに割り当ててもらって使います。

OS管理外のメモリが使えるソフトは特殊なソフトでその機能を持っているソフト使わないと実現でききない機能です。

引用した部分は誤解でしょうね。上に紹介したページに各OSの制限が書かれていますが、2000のAdvanced ServerやDatacenter Serverなど(このページに書かれている以外にも細かいエディションでいくつか4GBを越えるメモリへ対応した製品があります)では使える場合がありますが、4GBが最大の構成になっている製品では使える物理アドレスの大きさが4GBで、その中にメモリ以外にも様々なハードウェアにアクセスするアドレス領域を含んでいるのでメモリ以外のアドレス範囲を除くと最大で2.5GB-3.5GBくらいになります。

※BIOSは普通に4GBのメモリを認識しているのではありませんか。BIOSの行うのは起動時のメモリチェックや実際にメモリの取り付けられているアドレスの一覧つくる位で利用状況の管理は全く行いません。BIOSから見ればOSが勝手に管理しています。OSの管理している領域外のメモリは使いたければOS以外のソフトで管理して使えば良いものです。


検索してみましたが、この辺りに付いてはデタラメ情報が多いですね。

ざくっと書くとIntelのPentium Proという1995年に発売されたCPUにPAE(物理アドレス拡張[フィジカル=アドレス=エクステンション])という機能が追加されました。

以降の386系CPUのほぼ全てに(PentiumIIにもPentiumIIIにもPentium4にもそれ以降に開発されたCeleronにもCoreにもCore2にもCoreiにも……)搭載されている機能です。

PentiumProでは64GB(36ビット)のアドレスが使えるようになりましたが、PAE機能を持っているCPUの最小アドレスです。(物理アドレス38bitのCPUなど64GBを越える物理アドレス空間を持っているCPUもあります)

最大4GBまでのWindowsは多分起動時認識した時点で使う物理アドレスは固定してしまっていると思います。固定すれば後は全く変える必要がなく管理が楽ですから。PAEでも非PAEでも同じだと。当然使う事のある物理アドレスは全て含めてマッピングしているでしょうから、アドレス空間を必要とする様々なハードウェアも4GBの一部としてマッピングされているはずです。例えば前側3GBはメモリで後ろ側1GBはPCIバスや様々なデバイスのアクセスに使うアドレスとしてという具合に。

id:quesit

長文による詳細な回答ありがとうございます。

すみません、OS 管理外領域の利用を前提とした話をしていましたが、その条件を書き忘れていました。PAE は CPU の機能ですが、OS 管理外領域へのアクセスについては BIOS によるサポート及び Windows(内のドライバ)を経由する必要があると理解しており、両方の条件を満たす場合に限り特殊なソフトウェアから OS 管理外領域のメモリ領域にアクセス可能であると理解してますが、これで正しいでしょうか。

ところで、機械語レベルでの PAE の動作を理解していないのですが、CPU の機能ということは BIOS 上の設定や OS の PAE サポートオプションを無視して勝手に CPU に PAE を利用させるようなバイナリを作成して実行することはできそうですね。実行させたら、やっぱり落ちるのかな…?

2011/05/05 08:58:58
id:asuka645 No.3

あすか回答回数856ベストアンサー獲得回数972011/05/05 00:29:38

ポイント25pt

PAE をサービスしていない」というのは Apple の公式サポートのことではなく、

EFI の BIOS エミュレータの実装が技術的に PAE をサポートできない、という理解でいいのですよね…

いいえ、違います。


EFIのBIOSエミュレータの実装によってはPAEをサポートしています。

実際、Core2 Duo以降のPC(Windows用)マザーボードの大半はEFIでBIOSをエミューレートしており、PAEも操作できるようになっています。

ただ、MacのBIOSエミュレータについてはPAEがサポートされていないのです。そもそもMacOSには32ビット版Windowsのようなメモリ・リザーブの考え方が無いですし、Core2 Duo以降のIntelMacのEFIは64ビットで動作可能ですので、PAEまで作り込まれなかったのだと思います。


なお、CPUとメモリの間にはメモリコントローラが介在しており、直接CPUのPAEを操作するというのはナンセンスですので、念のため。

id:quesit

2度目の回答ありがとうございます。

文脈上「サービスしない=Apple が(電話等で)サポートしない」という意味にも取り得たので。

そういう意味ではないのですね。もしそれだけなら技術的には出来る可能性もあるということになるので。

あと、最近のマザーボードは EFI ベースで、むしろ BIOS をエミュレートしてたんですね。

で、Mac の BIOS エミュレータでは、PAE を含めて設定は固定で変更できない、ということでいいでしょうか。

参考になる回答ありがとうございます。

2011/05/05 02:16:08
  • id:windofjuly
    うぃんど 2011/05/04 20:43:40
    そもそもどのようなソフトを使ってダメだったのかの記載が無いので設定等が悪いのか、そもそも使えないのかが判断つかないところ…
     
    ERAMならいけそうな気がするのですが…さて、どうでしょう?
    http://hp.vector.co.jp/authors/VA000363/
    http://report.station.ez-net.jp/software/others/system/ramdisk.asp
    http://seek.moe.hm/view.php?note=96
    (/maxmemで上限を2.5GB程度まで削っておいて、OS管理外の1.5GBをRamDriveとして利用するほうが効率よかったりする)
  • id:quesit
    windofjuly さん、コメントありがとうございます。

    具体的なソフトは書き忘れていましたね。
    試したのは BUFFALO の「RAMDISK ユーティリティー Ver.3.0.0.0」と Gavotte Ramdisk の2つを試しましたが、
    両方で OS 管理外領域が利用できない状態でした。
    ERAM も色々と試してみましたが、次のエラーが出てしまい、うまく動作しませんでした。

    ・関数CheckExternalSizeで失敗が返されました.
    ・OS管理外メモリの使用通知失敗.

    やはり、Mac の BIOS エミュレータ側でサポート外のように見えますが、どうでしょうか…
  • id:windofjuly
    うぃんど 2011/05/05 12:55:15
    PAEは4GBオーバーの場合に必要なものなので物理メモリ4GBであればそもそも無関係なはずですが未確認です
     
    >関数CheckExternalSizeで失敗が返されました
    >OS管理外メモリの使用通知失敗
    ERAMで3GBを超える領域を扱うには別の方が作ったパッチが必要ですが、それは?
  • id:quesit
    windofjuly さん、コメントありがとうございます。

    PAE で調べたところによると、32bit マシンでは MMIO という仕組みによって、後ろ 1GB 分ぐらいがグラボなどのハードウェアのアドレスに割り振られてるため、4GB 積んでいても実際に利用できるメモリは 3GB 程度になるようです。(メモリの 3GB 以降のアドレスにアクセスするプログラムを作っても、他のハードウェアへの読み書きになってしまい、どうしても後ろ 1GB にアクセスできない)この、アクセスできない後ろ 1GB は、PAE を利用すればアクセスできるということなので、4GB 環境でも PAE の恩恵がある、ということみたいです。

    あと上記コメントへの追記ですが、ERAM の設定で「OS への通知をしない」設定にすれば上記の CheckExternalSize のエラーは出なくなりましたが、起動直後にフリーズしてしまうようになりました。きっと予想外の動作でハードウェアが誤作動を起こしたんでしょうね。boot.ini の設定変更で簡単に復旧できましたが、よく考えると OS が起動しなくなってしまう可能性があることを考えると、ちょっと色々実験してみるリスク高いですね。

    パッチについてですが、当ててなかったですね。2ch で配ってるもの…ですかね?ドライバ関係のものは本当に OS を不安定にすることがありますし、ramdisk の導入も必要に駆られてではなく興味本位で調べてた部分もありますので、このまましばらく様子を見ようかと思います。

    情報提供ありがとうございました!
  • id:saijyoh_739
    一度回答してます。
    誤解生みそうな記述がいくつかありますのでコメント書きます。
    回答3に
    >なお、CPUとメモリの間にはメモリコントローラが介在しており、直接CPUのPAEを操作するというのはナンセンスですので、念のため。
    上記の記述がありますが。
    メモリコントローラには全アドレス線がつながっています。32本を越えるアドレス線も繋がっており(アドレスが36本なら36本)メモリコントローラを操作してPAE/PSEを操作する事はありません。PAE/PSEの制御は全てCPUでメモリコントローラは全く介在しません。
    ※そもそもCPUに32本以外にアドレス線が追加されており物理的に32本を越えるアドレスを持っています。
    それと、BIOSを必要以上に気にされているようですが、BIOSはほとんど関係ないですよ。
    ※PAEもエミュレートするとかいう機能ではありません。単純にCPUの機能ですから、使うか使わないかだけの話です。
    > PAE で調べたところによると、32bit マシンでは MMIO という仕組みによって、後ろ 1GB 分ぐらいがグラボなどのハードウェアのアドレスに割り振られてるため、4GB 積んでいても実際に利用できるメモリは 3GB 程度になるようです。(メモリの 3GB 以降のアドレスにアクセスするプログラムを作っても、他のハードウェアへの読み書きになってしまい、どうしても後ろ 1GB にアクセスできない)この、アクセスできない後ろ 1GB は、PAE を利用すればアクセスできるということなので、4GB 環境でも PAE の恩恵がある、ということみたいです。
    誤りですね。
    もし、4GBのメモリを使う場合にはMMIOでグラフィック用のインターフェースに使うアドレスを4GBの位置を越えた場所に設定できれば最初の4GB分の物理アドレスでメモリを使う事ができます。
    もしくは、メモリの1-2GB分を物理アドレス4GB-以上の位置にしてグラフィックなどと同じアドレスを避ければ使える可能性があります。
    ※ハードウェア的なアドレスは重複する場合には片方が隠されますので隠された方のハードウェアは完全に使えなくなります(アクセスする手段がなくなります)。
    MMIOで使うアドレスは手動で移せる可能性もありますし、4GBより高位のアドレスへ移して使えれば(PAEやPSEなどの32ビットを越えたアドレスを使える状態でしかアクセスできません)ハードウェア的なアドレスが重複せず(隠される部分がなく)全て使える可能性があります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません