4.1. Ustawianie MTRR
Poprzedni | Rozdział 4. Urządzenia wyjścia video | Następny

## 4.1. Ustawianie MTRR

Jest WYSOCE wskazane sprawdzenie, czy rejestry MTRR są ustawione prawidłowo, ponieważ mogą dać duży wzrost wydajności.

Wykonaj cat /proc/mtrr:

    --($:~)-- cat /proc/mtrr
    reg00: base=0xe4000000 (3648MB), size=  16MB: write-combining, count=9
    reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

Widać mojego Matroksa G400 z 16MB pamięci. Wydałem tę komendę z XFree 4.x.x, które ustawiają MTRR automatycznie.

Jeżeli nie zadziałało, trzeba to ustawić ręcznie. Przede wszystkim musisz znaleźć adres bazowy. Możesz to zrobić na 3 sposoby:

1. z komunikatów startowych X11, na przykład:

       (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
       (--) SVGA: Linear framebuffer at 0xD8000000

2. z `/proc/pci` (użyj polecenia lspci -v):

       01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
       Memory at d8000000 (32-bit, prefetchable)

3. z komunikatów sterownika mga_vid w jądrze (użyj dmesg):

       mga_mem_base = d8000000

Znajdźmy teraz rozmiar pamięci. Jest to bardzo łatwe, po prostu zamień rozmiar RAMu na karcie graficznej na system szesnastkowy lub użyj tej tabelki:

1 MB | 0x100000
2 MB | 0x200000
4 MB | 0x400000
8 MB | 0x800000
16 MB | 0x1000000
32 MB | 0x2000000

Znasz już adres bazowy i rozmiar pamięci. Ustawmy więc rejestry MTRR! Na przykład dla powyższej karty Matrox (`base=0xd8000000`) z 32MB RAMu (`size=0x2000000`) po prostu wykonaj:

    echo "base=0xd8000000 size=0x2000000 type=write-combining" > /proc/mtrr

Nie wszystkie procesory obsługują MTRR. Na przykład starsze K6-2 (jakieś 266MHz, stepping 0) nie obsługują MTRR, ale stepping 12 już tak (wykonaj cat /proc/cpuinfo aby sprawdzić).

Poprzedni | Początek rozdziału | Następny
Rozdział 4. Urządzenia wyjścia video | Spis treści | 4.2. Wyjścia video dla tradycyjnych kart graficznych