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 が見えているのは
の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 は
の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 が増えるかどうか試す価値はあるだろう. |