7.1. Настройка MTRR
Пред. | Глава 7. Устройства вывода видео | След.

## 7.1. Настройка MTRR

ОЧЕНЬ важно проверить, правильно ли установлены MTRR регистры, поскольку они могут дать большой прирост производительности.

Выполните 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

Здесь все верно, показана моя Matrox G400 с 16Мб памяти. Я выполнил это из-под XFree 4.x.x, который автоматически устанавливает регистры MTRR.

Если ничего не сработало, вам придется сделать это вручную. Во-первых, вы должны определить базовый адрес. Существует три способа выяснить его:

1. из сообщений запуска X11, например:

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

2. из `/proc/pci` (используйте команду lspci -v):

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

3. из сообщений драйвера ядра mga_vid (используйте dmesg):

       mga_mem_base = d8000000

Теперь давайте найдем объем памяти. Это очень просто, просто преобразуйте размер видео памяти в шестнадцатеричный формат, или используйте таблицу:

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

Вы знаете базовый адрес и размер памяти, так давайте настроим регистры MTRR! Например, для вышеуказанной карты Matrox (`base=0xd8000000`) с 32Мб памяти (`size=0x2000000`) просто выполните:

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

Не все CPU имеют MTRR. Например, старый K6-2 (около 266MHz, степпинг 0) не имеет MTRR, но у степпинга 12 они уже есть (запустите cat /proc/cpuinfo чтобы это проверить).

Пред. | Уровень выше | След.
Глава 7. Устройства вывода видео | Начало | 7.2. Xv