トップ回答者
物理アドレスについて

質問
-
物理アドレスについて質問させてください。
ドライバ内で仮想アドレスをMmGetPhysicalAddress関数で物理アドレスに変換する処理を行っていますが、
「PCに搭載されているメモリサイズより大きい物理アドレス」が取得できています。
具体的にはPC搭載メモリ8GBなのに対して0x200000000より大きい物理アドレス値が返ってくる状況です。
これが仮想アドレスなら理解できますが、物理アドレスでこのような現象が起きるのは何故なのでしょうか?
PC環境
Windows 8.1 x64
メモリ8GB
intel H57 chipset
core i3-530 2.93GHz
以上、よろしくお願い致します。
回答
-
ちょっと大きい程度(+2GBとか)なら、PCI Hole Mappingによって、PCIのメモリが<4GBにマッピングされたりして、ホントのメモリがずらされるからかもしれません。
jzkey
- 回答としてマーク shirokuma-kun 2016年1月28日 1:29
すべての返信
-
ちょっと大きい程度(+2GBとか)なら、PCI Hole Mappingによって、PCIのメモリが<4GBにマッピングされたりして、ホントのメモリがずらされるからかもしれません。
jzkey
- 回答としてマーク shirokuma-kun 2016年1月28日 1:29
-
PCI Hole Mappingで調べてみたら、メモリホール分を搭載メモリより上のアドレスにマッピングすることで全領域を使えるようにする機能のようですね。得られた物理アドレス値が搭載メモリ8GB+400MB辺りまでのアドレスだったのでこれが原因のように思いました。
BIOSにMemory Reclaimという項目があり、それでEnable/Disableを切り替えられるというのも知りましたが、使用しているGIGABYTE H57Mというマザーボードにはその項目がないものの、比較的最近のものなのでEnable固定になっているのだと理解しました。(特にDisableにする必要もないでしょうし)
回答、ありがとうございました。