Navigation : Top / mtrrを使って高速描画

mtrrを使って高速描画

Linux2.2から MTRR(Memory Type Range Register)という機能がつきました。 この機能を使うには、カーネルがMTRR=ONで構築されている必要があります。 さらに、CPU自体がMTRRをサポートしている必要があります。

$ cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 1
model name : AMD-K7(tm) Processor
stepping : 2
cpu MHz : 704.938
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
sep_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr 6 mce cx8 sep mtrr pge 14 cmov fcmov 22 mmx 30 3dnow
bogomips : 1405.75 ^^^^

設定方法は、まずX起動時のログをとって、それにあわせて設定値を決めます。

$ startx >& log
$ less log
XFree86 Version 3.3.6 / X Window System
(略)
(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xe4000000, 0xef000000, MMIO @ 0xefefc000
(--) SVGA: Linear framebuffer at 0xE4000000
(略)

ビデオカードは Matrox G400 16MBですが、これはE4000000番地から16MBということになってるらしいです。 なので、これを使って

# echo "base=0xe4000000 size=0x1000000 type=write-combining" > /proc/mtrr
# cat /proc/mtrr

reg00: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1
reg01: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=1

と設定します。

設定解除

# echo "disable=1" > /proc/mtrr
# cat /proc/mtrr

reg00: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1