BIOS-моддинг

Настройка PCI-регистров


Конфигурирование чипсета осуществляется через специальные регистры, доступные через шину PCI. При загрузке системы BIOS настраивает процессор, контроллер системной шины, контроллер оперативной памяти и всю прочую периферию в соответствии с настойками, выбранными в BIOS Setup. Однако, практически ни один BIOS не дает доступа ко всем настройкам или умышленно ограничивает диапазон доступных значений. Как быть, что делать?

Запускаем Award BIOS editor, заходим в System BIOS, находим вкладку "Chipset Registers" и открываем документацию на чипсет. Где-то там будет раздел "PCI Configuration Registers" или что-то в этом роде. Для каждого из регистров будет указано устройство (device), к которому он "подключен"), номер функция (function) и номер самого регистра, называемый смещением (offset). Все регистры 8-битные, однако, несколько последовательных регистров могут объединяться в слова или даже двойные слова.

Сравнение конфигурационных возможностей чипсета с BIOS Setup показывает, что часть настроек в ней отсутствуют. Даже в заблокированных возможностях (о которых мы уже говорили выше) их нет! В частности, мой любимый AMD 761 поддерживает намного больший диапазон таймингов, чем BIOS. В частности, чтобы установить tPR в 1 такт (BIOS по умолчанию ставит 3 такта и не дает это умолчание изменять), необходимо модифицировать 8 и 7 биты регистра Dev 0:F0:0x54, присвоив им значение 2 (или "10" в двоичной нотации). Остальные биты не трогать! А как это сделать? Необходимо наложить маску (mask), которая в данном случае будет выглядеть так: "XXXX XXX1 1XXX XXXX". Как видно, 8 и 7 бит установлены в единицу, остальные помечены знаком "Х", указывающим BIOS'у что данный бит необходимо оставить без изменений.

Рисунок 9 страничка из документации на чипсет, описывающая конфигурационные регистры

Запись "Dev0:F0:0x54" обозначает: Device 0:Function 0:Register 0x54. На самом деле, этих регистров целых два. Регистр 0x54 хранит младшую, а 0x55 — старшую половину слова. Следовательно, в 0x54 необходимо занести 80h ("10.00.00.00"), а в 0x55 – 01h. Соответственно, в первом случае маска будет равна 80h ("1X.XX.XX.XX"), а во втором 01h.


Возвращаемся к Award BIOS Editor'у, находим среди регистров регистр с номером 0x54, и кликнув правой клавишей мыши, выбираем пункт "modify". В появившимся окне первые три поля (Register, PCI, PCI) оставляем без изменений (это номер регистра, устройства и функции), а вот с двумя последующими полями "Resister" и "Value" придется разобраться особо. Мы не можем просто взять и записать значение 0x80, поскольку в этом регистре уже хранятся какие-то параметры, модифицирующие остальные поля. Мы должны устанавливать лишь "наши" биты (в данном случае это бит 7), а над остальными выполнить операцию логическое "OR" по маске. Аналогичным образом настраивается и регистр 55h.



Рисунок 10 разгон системы при помощи редактирования конфигурационных регистров

Залив обновленную прошивку в BIOS и установив качественные модули памяти, мы с удовлетворением замечаем, что быстродействие системы ощутимо возросло. Таким же точно образом можно редактировать и остальные регистры, отсутствующие в BIOS Setup, однако наши возможности будут довольно ограничены.


Содержание раздела