Если мы откроем утилиту WPCREDIT, написанную H'Oda, то увидим таблицу 16*16 ячеек по одному байту каждая. Это и есть поле действий. Все числа и адреса представлены в шестнадцатеричной системе счисления, HEX.
Программа очень проста в применении. Она предоставляет нам как раз то, что нужно - позволяет считать и изменить значения регистров PCI, которые нельзя выставить посредством BIOS. Если сравнить её с программами для настройки параметров памяти и вообще чипсета, то стоит признать, что она менее удобна. Нет выбора значений из списка, наглядности, нужно переводить значения из двоичного вида в шестнадцатеричный. Но её преимущества с лихвой перекрывают недостатки - при наличии хорошего сборника файлов с описанием регистров, она становится универсальной и подходит практически ко всем чипсетам. Плюс она не ограничивает число настроек, что доступны к изменению. Хотим - меняем тайминги, режим AGP, работу процессора, всё что позволяет чипсет. Даже не только чипсет, но и другие устройства. Это делает её намного более предпочтительной, ибо многие, начавшие всерьёз копаться с настройками предпочтут чуть повозиться, но получить доступ к большему числу параметров.
В группе кнопок
File доступны следующие действия:
PCR open - открывает файл с описанием,
Register Load - загрузка сохранённых регистров из файла,
Register Save - сохранение текущих значений регистров в файл,
Environment Save - сохраняет настройки программы, вроде цветовой гаммы,
Exit. В группе
Edit:
Undo\
Redo,
Copy,
Device - выбор устройства для редактирования регистров. Доступно и посредством кнопки на панели инструментов.
View:
Bit mode,
Structure view,
Color,
Font.
Help:
About.
Настраиваем чипсетНастройки, нам нужные лежат в устройстве 0,0,0 - Host bridge. Первые регистры 00-40H являются заголовком PCI. Там описаны функции, поддерживаемые устройством, с точки зрения спецификаций PCI. Примером является наличие поддержки PCI66 и Bus Mastering. Идентификатор производителя и устройства (VendorID, DeviceID) также прописаны в заголовке. Потому, очевидно, что нам нужны регистры, идущие после 40-го. Но как же узнать, какие за что отвечают в конкретном мосте или чипсете? Расшифровку можно найти в виде специального PCR файла для этой программы. Название состоит из VendorID и DevID и для указанного на рисунке выше чипсета (Nforce) будет 10DE01E0.pcr. Файл должен лежать в одной программе, тогда она при запуске прочтёт VendorID, DevID и подгрузит одноимённый PCR если таковой имеется. Иначе, придётся подгружать PCR файл отдельно, кнопкой File-PCR open. Но этот вариант применим для распространённых чипсетов, для которых есть документация. Чаще же (и для Nforce2 в частности) PCR файла нет. Но его формат чрезвычайно прост (текстовый) и написать его при наличии документации на чипсет не составит труда.
Если PCR файла нет, то на помощь нам придёт даташит. В нём, помимо прочего, прописана расшифровка регистров и их значений. Возьмём, к примеру, даташит на чипсет VIA Apollo pro 133 (693A), поскольку на нём выпускали дешёвые платы, не удосуживаясь или специально ограничивая их возможности, чтобы они не конкурировали с платами на дорогом и "быстром" Intel.
Итак, мы видим, какие биты регистра отвечают за какие настройки и какое значение нужно выставить для желаемого результата. Выбираем нужный регистр, например, 50 и смотрим в нижнюю часть окна.
Мы видим выбранный регистр (Offset), его значение (Data) в шестнадцатеричном (Hex) и двоичном (Bin) видах. Нумерация идёт от 7 к 0 биту. Можно менять как группу из четырёх битов при изменении шестнадцатеричного значения, так и по одному, в двоичном. При этом, если у нас загружен PCR файл, то в правой части окна будут подписываться описания бит регистра. Далее всё просто. Смотрим в регистре 50 значение бита 7. Если оно равно 1, то IOQ настроен верно и менять его не нужно. Если 0, то изменяем на 1 и жмём кнопку Set. Применяется следующего вида запись 50[7]=1 - регистр 50, бит 7, значение 1. Если нужно указать диапазон бит, например, с таймингом CAS Latency в регистрах 67-64, то пишут так 64[5:4]=10. Как видим это значение соответствует CL=3T. Если мы хотим повысить скорость работы с памятью, то изменяем на значение 64[5:4]=01. В программе это будет идентично инверсии бита 5 (изменению с 1 на 0), затем инверсии бита 4 и потом нажатия кнопки "выставить (Set)". Таким образом, можно настроить практически все желаемые параметры. Более подробно настройкой чипсета VIA693A занимался
apple_rom, о чём можно прочесть в его статье:
"Так ли уж медленны VIA-шки?"
ЗаключениеВозникает вопрос, даже два - что будет если выставить слишком агрессивное значение? Ответ - ничего, система или повиснет или перезагрузится. После перезагрузки значения регистров будут изначальными, ибо BIOS выставляет их при каждой загрузке. И второй - как мне сделать так, что не нужно было каждый раз ставить значения регистров вручную при загрузке? Для этого есть программа того же автора - WPCRSET. Её интерфейс ещё проще первой. Сначала добавляем запись в реестр (reg файл, в зависимости от типа ОС). Потом запускаем.Из нужных: можно включить\выключить её автозагрузку, добавить значение регистра (выбираем шину, устройство, функцию, регистр и его значение), изменить его и удалить из списка. Всё, система оттестирована на стабильность в форсированном режиме, установки добавлены в автозагрузку, можно отдохнуть и порадоваться, что мы настроили плату, со скудным набором настроек в BIOS.
Теперь немного о грустном - большинство производителей северных мостов скрывают даташиты на свою продукцию. Исключение здесь - Intel, хотя они и неполны. Но в Сети порой появляются даташиты, потому не стоит отчаиваться. Как вариант, можно попросить обладателя "продвинутой" платы покрутить настройки и прислать дампы регистров. Тогда можно вычислить адрес и нужное значение регистра. И затем, написать для него PCR файл, чтобы помочь другим. Если у вас есть даташиты или PCR файлы, которых нет здесь, прошу писать.
Ссылки:
WPCREDIT WPCRSET PCR Files Datasheets Обсудить можно
здесь.
Antinomy, 14.09.07