FAQ документации RivaTuner
Страница 8.


У меня серьезные проблемы с разгоном карты GeForce FX 5600 с драйверами ForceWare 6Х.ХХ серии. Стоит мне изменить частоту памяти в модуле разгона на уровне драйвера RivaTuner, в панели драйвера или даже в ASUS SmartDoctor, прилагавшемся к моей видеокарте, как производительность резко снижается. Не могли ли вы мне помочь?

Это известная проблема с драйверами ForceWare 6X.XX, которая проявляется только с картами, в BIOS которых таблица уровней производительности либо отсутствует вообще, либо пуста. Единственный выход из ситуации — использовать низкоуровневый разгон с помощью таких утилит как PowerStrip, или прошить референс-BIOS, который позволит драйверу корректно обращаться с частотами. Альтернативным способом может быть прямое изменение частот в BIOS с помощью специализированных утилит.


Интернет полон слухов о «вольмодах» через редактирование BIOS видеокарт GeForceFX. Есть целые руководства по моддингу BIOS, и даже уже готовые BIOS доступны для скачивания. Как Вы можете прокомментировать это явление?

Действительно, напряжение GPU у видеокарт GeForceFX можно изменять программно. Но, к сожалению, все виденные мной на момент написания этого текста руководства по вольтмоддингу BIOS выглядят как написанные путем простого побитового сравнения различных BIOS, без понимания сути программного управления напряжением. Вследствие этого они содержат логические ошибки, как, впрочем, и готовые модифицированные BIOS, доступные для скачивания.
Для понимания принципа программного управления напряжением начну с самого начала. Видеокарты на базе NVIDIA имеют ряд GPIO (неспециализированного ввода-вывода) контактов, сигналом на которых может управлять GPU. До трех из них может быть использовано для управления напряжением GPU в картах на базе GeForceFX. Сигналы этих контактов вместе образуют двоичное слово шириной до трех бит, которое задает напряжение на ядре чипа. Это слово обозначается VID, или Идентификатор Напряжения. Так что программа, управляющая напряжением, просто приводит сигнал на задействованных контактах в нужное состояние через редактирование GPIO регистра видеопроцессора. Но интерпретация сигналов зависит от конкретной реализации схемы выставления напряжений на видеокарте. Например, схема управления напряжениями большинства видеокарт на базе GeForce 5900/5950 построена на микросхеме ISL6569, в которой контакты VID0 и VID1 аппаратно заданы как 0 и 1 соответственно, а значение на VID2-VID4 управляется GPU. Так что напряжение ядра на этих видеокартах регулируется в диапазоне 0,8 - 1,5 Вольт с шагом изменения 0.1 Вольт, при этом используются все три GPIO контакта. Карты на других чипах имеют более простые схемы управления напряжением, вплоть до простейшего выбора одного из двух возможных значений через один-единственный контакт. Как видно по вышесказанному, интерпретация сигналов VID определяется примененной печатной платой, и драйвер не знает об этих особенностях ровным счетом ничего. Чтобы позволить производителям видеокарт безопасно изменять схему управления напряжением ядра, NVIDIA ввела так называемые «таблицы напряжений» в BIOS с версией BMP структуры 5.25 и выше. Для более старых BIOS в драйвер введены особые внутренние таблицы напряжений, специфичные для конкретного GPU. Таблица напряжений начинается с заголовка, содержащего сведения о числе записей, размере записи и битовую маску идентификатора напряжений (VID). Последнее значение особо важно, так как в нем содержится информация, какие именно контакты используются для управления напряжением ядра. К примеру, ничто не препятствует производителю использовать VID двухбитной ширины, задаваемый значениями контактов 0 и 2. В таком варианте маска будет иметь вид 101b. Учтите, драйвер никогда не программирует замаскированные контакты. За заголовком таблицы следуют строки записей. Каждая строка содержит целевое напряжение, представленное в форме: напряжение в вольтах, умноженное на 100; и значение VID, соответствующее требуемому напряжению в схеме управления. Первый элемент строки используется для того, чтобы драйвер мог узнать требуемый VID (так как сам драйвер ничего не знает о VID, а знает лишь требуемое напряжение, извлеченное им из таблицы уровней производительности). Так что, когда драйверу нужно изменить напряжение, он просто просматривает таблицу, сличая целевое напряжение с первыми элементами в строках, выбирает наиболее близкую запись. После этого из VID записи извлекаются требуемые значения битов и программируется каждый значащий бит через соответствующий GPIO регистр.
Если вы внимательно прочитали предыдущий абзац, то вам уже могут стать очевидны ошибки и потенциальные проблемы моддеров BIOS.
Во-первых, полностью неверно копировать идентификатор напряжения 1.5 Вольт из таблицы напряжений NV38 во все BIOS прочих карт без предварительного установления схемы управления напряжениями на видеокарте, как это часто советуется в доступных в Интернет руководствах. VID`ы не являются одинаковыми на всех видеокартах.
Во-вторых, неверно изменять только сами значения VID, игнорируя битовую маску. К примеру, карта использует VID двухбитной ширины: 00 -> 1.1V, 01 -> 1.2V, 02 -> 1.3V and 03 -> 1.4V. Попытка поднять напряжение увеличением VID до 4 приведет к понижению напряжения до 1.1 Вольт (4 & 3 = 0). Попытка поднять напряжение копированием 1.5 Вольт VID от NV38 (7) не приведет ни к чему (7 & 3 = 3). Подобная попытка при другом варианте интерпретации VID: 01 -> 1.4V, 02 -> 1.3V, 03 -> 1.2V приведет к снижению напряжения до 1.2 Вольт. Так что если вы видите перед глазами печатную плату и точно знаете, что длина слова VID больше двух бит — можете изменять шаблон битовой записи. Иначе лучше вообще не браться за него.
Для помощи в установлении факта влияния изменений в BIOS на напряжения в RivaTuner введена возможность контролировать состояние GPIO контактов в реальном времени, так что вы увидите, какое значение VID запрограммировано драйвером в данный момент. Используя возможность RivaTuner по интерпретации значений VID, вы также сможете посмотреть как «сырое» значение VID, так и соответствующее ему итоговое напряжение (для переключения в режим интерпретации щелкните правой кнопкой мыши в окне аппаратного мониторинга, выберите из контекстного меню опцию Setup и нажмите кнопку More в появившемся диалоге). RivaTuner также позволяет в диагностическом отчете посмотреть таблицу напряжений BIOS и предупредит, если записи VID в таблице не соответствуют битовой маске.


Раз возможно программировать VID, может ли RivaTuner изменять напряжение графического процессора «на лету»?

Нет, извините. Я никогда не добавлю в RivaTuner программное управление напряжением, равно как и не передам информацию о регистрах GPU, контролирующих GPIO контакты разработчикам других утилит. Я не хочу иметь никакого отношения к разработке утилиты, способной физически уничтожить видеокарту в определенных условиях, и прямое управление напряжением из Windows — это одна из тех вещей, которая поможет начинающим сжечь их графический процессор.


Я много слышал о так называемом «тротлинге» на видеокартах на базе GeForce FX. Можете вы объяснить мне, что такое тротлинг?

Тротлинг — это технология защиты в драйвере, ограничивающая максимальный доступный уровень производительности для карты во время работы 3D приложений. Тротлинг предназначен для предотвращения повреждения карты в случае перегрева, провала внутреннего стресс теста, недостаточного напряжения или внутренних ошибок GPU, вызванных разгоном. В зависимости от причины, вызвавшей тротлинг, драйвер может либо вернуть систему к предыдущему состоянию в случае, если причина тротлинга исчезла, или оставить вашу систему в состоянии тротлинга до следующей перезагрузки.

 
Следующая статья »