x86-64 Linux のメモリマップ

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

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

x86 版 Linux

/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

同様に /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
Last-modified: 2012-01-27 (金) 00:57:21 (4496d)