FAQ документации RivaTuner

ОГЛАВЛЕНИЕ

Это известная проблема с драйверами 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, вызванных разгоном. В зависимости от причины, вызвавшей тротлинг, драйвер может либо вернуть систему к предыдущему состоянию в случае, если причина тротлинга исчезла, или оставить вашу систему в состоянии тротлинга до следующей перезагрузки.

{mospagebreak" alt=""40">У меня серьезные проблемы с разгоном карты 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, вызванных разгоном. В зависимости от причины, вызвавшей тротлинг, драйвер может либо вернуть систему к предыдущему состоянию в случае, если причина тротлинга исчезла, или оставить вашу систему в состоянии тротлинга до следующей перезагрузки.

{mospagebreak" />

Похоже, что у меня какие-то проблемы с тротлингом на моей GeForce FX. Когда я перехожу за определённую частоту, моя система полностью подвисает на несколько секунд, а затем переходит на более низкий уровень производительности (иногда на lp3D, иногда 2D). Я слышал, что это зависание вызвано аппаратной защитой от перегрева, которая автоматически активируется, когда определённый части GPU перегреваются, так что эта технология не может быть отключена т.к. встроена в чип. Это правда?

Ходит множество слухов про эти зависания и следующий за ними тротлинг, а вы только что прочитали наиболее сказочный из них. Нет, это не правда. Вы также можете найти некоторые вариации этой гипотезы, полагающих что зависание инициируется алгоритмом тротлинга драйвера в случае перегрева GPU, якобы драйвер таким образом просто остужает GPU, когда он слишком горячий. Эта гипотеза также совершенно не верна. Зависание не инициируется умышленно ни драйвером, ни GPU. Совсем наоборот, зависание не результат, а причина по которой система начинает использовать тротлинг. Наверное, большинство пользователей, знакомых с картами ATI, знают о широко рекламируемой технологии VPU recover, появившейся в Catalyst 3.8. Эта технология позволяет драйверу перезагружать GPU, когда он не отвечает драйверу. Это помогает предотвратить зависание системы в случае разгона, перегрева GPU и т.п. Однако, совсем немного пользователей знаю что у NVIDIA есть подобная технология называемая Robust Channels (RC) начиная с семейства драйверов Detonator 40.xx. RC также позволяет восстановить систему, когда GPU зависает по той или иной причине. Так теперь вам должно быть понятно, что зависание, которое вы видите не что иное, как настоящее зависание GPU вызванное чрезмерным разгоном. Когда технология RC обнаруживает, что GPU завис и больше не отвечает драйверу, она перезагружает его (GPU) и использует тротлинг для повышения стабильности. Вы можете отключить RC установкой RmRobustChannels в 0, но это не поможет вам избежать зависаний. Наоборот, теперь ваша система будет зависать полностью.


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

К счастью, драйвер NVIDIA имеет хорошую систему журналирования событий, которая может быть включена созданием в реестре опции RmLogonRC со значением 1. В этом случае, после перезагрузки, драйвер запишет все события тротлинга в журнал системы, так что с помощью «просмотра событий» можно будет увидеть причины. Так что вы сможете точно установить причину тротлинга в каждом конкретном случае: аппаратная ошибка, восстановленная технологией Robust Channels, перегрев, непрохождение стресс-теста или нехватка внешнего питания.


В Интернет имеются измененные BIOS с якобы отсутствующим тротлингом, а также руководства по модификации с той же целью. Возможно ли действительно отключить тротлинг таким способом. Как вы прокомментируете это?

Нет, эти способы не могут отключить тротлинг совсем, но могут помочь снизить негативный эффект тротлига в некоторых ситуациях. К сожалению, все виденные мной на момент написания этого текста руководства по модификации BIOS с целью удаления тротлинга содержали ошибки, могущие вызвать дополнительные проблемы.
Во-первых, авторы этих руководств не вполне понимают сути тротлинга, и ошибочно отождествляют его с режимом работы карты Low Power 3D (или уровнем производительности 1), говоря о тротлинге всякий раз при переходе карты в режим LowPower 3D. Это абсолютно неверно, так как временный переход в режим LowPower 3D является совершенно нормальным явлением в работе видеокарты, а сам режим LowPower 3D - не единственный режим, в который может быть переведена видеокарта при тротлинге. Во всех этих модифицированных BIOS режим LowPower 3D просто приведен к идентичности с режимом Perfomance 3D, что никак не препятствует включению тротлинга и снижению частот до уровня производительности 0 (2D).
Во-вторых, имеются большие проблемы с их подходом к редактированию таблицы уровней производительности, могущие привести к непредвиденным последствиям. Имевшиеся руководства направляли вас по ложному пути редактирования второй по счету записи в таблице напряжений для изменения напряжения для уровня LowPower3D, считая, что имеется прямое соответствие номера записи в таблице напряжений номеру записи в таблице уровней производительности. Это совершенно неверно, авторы отождествляют обе таблицы. В некоторых BIOS напряжение для режима LowPower3D задается в первой строке таблицы, а в других напряжение сразу для LowPower3D и 2D уровней задано в одной строке. И попытка редактирования таблицы напряжений согласно этим руководствам приводит к непредсказуемым последствиям. Если вы внимательно прочитали пункт про вольтмоддинг, то должны помнить, что драйвер использует поиск по итоговому напряжению в таблице вместо поиска по номеру строки. В действительности, итоговое напряжение содержится в правой части записи уровня производительности в таблице, и драйвер сравнивает его значение со значениями в таблице напряжений в поисках строки с наиболее близким значением, вместо того, чтобы напрямую брать предопределенную строку. Так что если вы просто копируете одну строку в таблице напряжений поверх другой, то вы уничтожаете одно из возможных значений напряжения, заставляя драйвер выбирать неправильное значения для определенного уровня производительности. Для корректного изменения напряжения для режима LowPower3D вам не нужно изменять таблицу напряжений, а просто изменить значение в записи таблицы уровней производительности.

Чтобы помочь в выявлении таких запорченных BIOS, модуль диагностического отчета RivaTuner отображает обе таблицы, напряжений и уровней производительности, так что легко проверить, что напряжение, заданное для уровня производительности присутствует в таблице возможных напряжений.


Значит невозможно отключить тротлинг путем редактирования BIOS?

Это возможно, но совершенно иным способом, нежели расписано в руководствах по модификации BIOS. Единственный способ отключить тротлинг на уровне BIOS видеокарты — убрать сам принцип различного тактования для режимов 2D и 3D. Это легко выполнимо путем прятанья таблицы уровней производительности от драйвера (изменением указателя адреса таблицы в BMP структуре или выставлением размера таблицы в 0, как это сделано в BIOS`ах ASUS). Это вынудит драйвер отключить динамическое тактование и заставит работать в режиме производительности, заданном BIOS. Имейте в виду, что этот способ также потребует внесения изменений в код инициализации BIOS для выставления параметров уровня производительности по умолчанию в нужные значения.


Почему модуль мониторинга RivaTuner показывает ненормально низкое напряжение питания ядра в 1.0 В на моей карте GeForce 6800? Вы исправите эту ошибку?

Обратите пристальное внимание на размерность оси Х «Core VID» на графике. Вряд ли вы увидите там какие-либо вольты. Более того, вы вообще обнаружит, что это безразмерная величина. График представляет собой вывод не интерпретированного значения идентификатора напряжения (VID). Обратитесь к предыдущим вопросам для понимания сущности VID, там же вы найдете инструкции по использованию механизма интерпретации напряжений RivaTuner, позволяющего увидеть реальные значения напряжения на графике вместо вывода значения идентификатора напряжений.


Я выбрал значение «1.1V + 0.1V / 0.3V loop» для механизма интерпретации значений идентификатора напряжений (VID) на моей карте ASUS V9999GT с помощью функции автоподбора в RivaTuner, однако, я по-прежнему наблюдаю разницу между показаниями монитора RivaTuner (1.2 В) и показаниями ASUS SmartDoctor (1.35 В). В чем проблема?

Адресуйте вопрос инженерам ASUS, изменившим дизайн печатной платы для мониторинга напряжений, но забывших изменить BIOS видеокарты, оставив в нем стандартную таблицу напряжений для карт 6800 non-Ultra вместо измененной под особенности карты. Из-за этого абсолютно невозможно выбрать правильный механизм интерпретации VID автоматически. Вам надо вручную указать значение «1.1V + 0.2V / 0.3V loop» для интерпретатора если вы являетесь владельцем такой видеокарты.