* x86-64 Linux のメモリマップ [#k144aeaa]

最近では DRAM の価格も下がり,4GB を越える RAM を実装した PC も珍しくなくなってきている.
また,Atom なんかのローエンドのプロセッサでも x86-64 命令セットをサポートしている.
x86-64 Linux は身近な存在になりつつある.

というわけで,手元の Core i7 マシンで debian の Live CD で Linux を起動し,x86 版と x86-64 版で物理メモリ空間のマップを比較してみた.
この PC には 16GB の RAM を載せている.

** x86 版 Linux [#gf36f022]
/proc/iomem の出力結果を以下に示す.

 00000000-0000ffff : reserved
 00010000-0009e7ff : System RAM
 0009e800-0009ffff : reserved
 000a0000-000bffff : Video RAM area
 000c0000-000cd5ff : Video ROM
 000e4000-000fffff : reserved
   000f0000-000fffff : System ROM
 00100000-dfe6ffff : System RAM
   01000000-0124901e : Kernel code
   0124901f-01367c3f : Kernel data
   013d7000-01453a4f : Kernel bss
 dfe70000-dfe87fff : ACPI Tables
 dfe88000-dfedbfff : ACPI Non-volatile Storage
 dfedc000-dfffffff : reserved
 e0000000-efffffff : PCI Bus 0000:01
   e0000000-efffffff : 0000:01:00.0
 f0000000-f01fffff : PCI Bus 0000:06
 f0200000-f03fffff : PCI Bus 0000:06
 f0400000-f05fffff : PCI Bus 0000:05
 f0600000-f07fffff : PCI Bus 0000:05
 f0800000-f09fffff : PCI Bus 0000:04
 f0a00000-f0bfffff : PCI Bus 0000:04
 f0c00000-f0dfffff : PCI Bus 0000:03
 f2f00000-f2ffffff : PCI Bus 0000:02
   f2ff8000-f2ffbfff : 0000:02:00.0
     f2ff8000-f2ffbfff : r8169
   f2fff000-f2ffffff : 0000:02:00.0
     f2fff000-f2ffffff : r8169
 f3ff7000-f3ff77ff : 0000:00:1f.2
   f3ff7000-f3ff77ff : ahci
 f3ff8000-f3ffbfff : 0000:00:1b.0
   f3ff8000-f3ffbfff : ICH HD audio
 f3ffc000-f3ffc0ff : 0000:00:1f.3
 f3ffd000-f3ffd3ff : 0000:00:1d.0
   f3ffd000-f3ffd3ff : ehci_hcd
 f3ffe000-f3ffe3ff : 0000:00:1a.0
   f3ffe000-f3ffe3ff : ehci_hcd
 f4000000-f7dfffff : PCI Bus 0000:01
   f4000000-f5ffffff : 0000:01:00.0
   f6000000-f6ffffff : 0000:01:00.0
   f7d80000-f7dfffff : 0000:01:00.0
 f7e00000-f7efffff : PCI Bus 0000:02
   f7ef0000-f7efffff : 0000:02:00.0
 f7f00000-f7ffffff : PCI Bus 0000:03
   f7ffe000-f7ffffff : 0000:03:00.0
     f7ffe000-f7ffffff : ahci
 f8000000-fbffffff : PCI MMCONFIG 0 [00-3f]
   f8000000-fbffffff : pnp 00:0d
 fec00000-fec00fff : IOAPIC 0
 fed00000-fed003ff : HPET 0
 fed14000-fed19fff : pnp 00:01
 fed1c000-fed1ffff : pnp 00:07
 fed20000-fed3ffff : pnp 00:07
 fed40000-fed8ffff : pnp 00:07
 fee00000-fee00fff : Local APIC
   fee00000-fee00fff : reserved
     fee00000-fee00fff : pnp 00:0c
 ffc00000-ffdfffff : pnp 00:0a
 ffe00000-ffffffff : reserved

RAM が見えているのは
- 00010000-0009e7ff : System RAM
- 00100000-dfe6ffff : System RAM

の2ヶ所であり,合計すると 3GB 強である.
まるまる 4GB の RAM が見えないのは,PCI デバイスなどの陰になっている領域があるからである.

** x86-64 版 Linux [#pe2de72d]

同様に /proc/iomem の出力.

 00000000-0000ffff : reserved
 00010000-0009e7ff : System RAM
 0009e800-0009ffff : reserved
 000c0000-000cffff : pnp 00:0e
 000e4000-000fffff : reserved
 00100000-dfe6ffff : System RAM
   01000000-01302794 : Kernel code
   01302795-014daebf : Kernel data
   01579000-0168a593 : Kernel bss
 dfe70000-dfe87fff : ACPI Tables
 dfe88000-dfedbfff : ACPI Non-volatile Storage
 dfedc000-dfffffff : reserved
 e0000000-efffffff : PCI Bus 0000:01
   e0000000-efffffff : 0000:01:00.0
 f0000000-f01fffff : PCI Bus 0000:06
 f0200000-f03fffff : PCI Bus 0000:06
 f0400000-f05fffff : PCI Bus 0000:05
 f0600000-f07fffff : PCI Bus 0000:05
 f0800000-f09fffff : PCI Bus 0000:04
 f0a00000-f0bfffff : PCI Bus 0000:04
 f0c00000-f0dfffff : PCI Bus 0000:03
 f2f00000-f2ffffff : PCI Bus 0000:02
   f2ff8000-f2ffbfff : 0000:02:00.0
     f2ff8000-f2ffbfff : r8169
   f2fff000-f2ffffff : 0000:02:00.0
     f2fff000-f2ffffff : r8169
 f3ff7000-f3ff77ff : 0000:00:1f.2
   f3ff7000-f3ff77ff : ahci
 f3ff8000-f3ffbfff : 0000:00:1b.0
   f3ff8000-f3ffbfff : ICH HD audio
 f3ffc000-f3ffc0ff : 0000:00:1f.3
 f3ffd000-f3ffd3ff : 0000:00:1d.0
   f3ffd000-f3ffd3ff : ehci_hcd
 f3ffe000-f3ffe3ff : 0000:00:1a.0
   f3ffe000-f3ffe3ff : ehci_hcd
 f4000000-f7dfffff : PCI Bus 0000:01
   f4000000-f5ffffff : 0000:01:00.0
   f6000000-f6ffffff : 0000:01:00.0
   f7d80000-f7dfffff : 0000:01:00.0
 f7e00000-f7efffff : PCI Bus 0000:02
   f7ef0000-f7efffff : 0000:02:00.0
 f7f00000-f7ffffff : PCI Bus 0000:03
   f7ffe000-f7ffffff : 0000:03:00.0
     f7ffe000-f7ffffff : ahci
 f8000000-fbffffff : PCI MMCONFIG 0 [00-3f]
   f8000000-fbffffff : pnp 00:0d
 fec00000-fec00fff : IOAPIC 0
 fed00000-fed003ff : HPET 0
 fed14000-fed19fff : pnp 00:01
 fed1c000-fed1ffff : pnp 00:07
 fed20000-fed3ffff : pnp 00:07
 fed40000-fed8ffff : pnp 00:07
 fee00000-fee00fff : Local APIC
   fee00000-fee00fff : reserved
     fee00000-fee00fff : pnp 00:0c
 ffc00000-ffdfffff : pnp 00:0a
 ffe00000-ffffffff : reserved
 100000000-41fffffff : System RAM

RAM は
- 00010000-0009e7ff : System RAM
- 00100000-dfe6ffff : System RAM
- 100000000-41fffffff : System RAM

の3箇所に見えている.
ここで注目してほしいのは,最後の 4 GB 越えの領域.
末尾のアドレスが 16.5 GB となっている.
PCI バスで隠れてしまった部分をここで見せているのだろう.
0.5 GB 分お得である.

この挙動はメモリを 4 GB だけ載せた場合にも現れることが考えられる.
16GB 中の 0.5 GB だと有り難味は少ないが,3 GB 中の 0.5 GB 結構大きい.
4 GB のメモリで x86 Linux を動かしている場合,x86-64 版の Live CD で起動して,使える RAM が増えるかどうか試す価値はあるだろう.

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS