Программный вольтмод видеокарт с контролером Volterra VT11xx при помощи RivaTuner'а.
Это моя первая статья, поэтому прошу судить строго, но по делу.
Постараюсь не увлекаться теорией и графоманией, а перейти сразу к практике.
Заранее отказываюсь от ответственности за любой вред, моральный или материальный, который может быть принесен в результате этой статьи.
Предварительные сведения.
Известно, что на некоторой части современных и не очень современных видеокарт в качестве регулятора напряжения на GPU устанавливаются контролеры серии Volterra VT11xx.
Не так давно было выяснено, что выдаваемым таким контролером напряжением можно управлять по шине I2C, передавая ему желаемый VID. И это с успехом может делать лучшая в мире утилита по тонкой настройке видеокарт - RivaTuner.
В этой статье на примере карты Palit 9800 GX2 будет показана процедура такого программного вольтмода.
Необходимо.
1. Собственно RivaTuner. В этой статье используется версия 2.24, язык интерфейса - английский.
2. Карта с контролером VT11xx. Лучшим способом проверить, подходит ли ваша карта, является "взять и посмотреть". Если такой способ не годится, то необходимо включить в RivaTuner->Hardware monitoring->Setup->Plugins плагин VT1103.dll.
Если в мониторинге появились графики вроде таких:

то шансы на успех достаточно велики.
В дальнейшем подразумевается, что у вас этот плагин включен и вы видите соответствующие графики. Конечно, реальное напряжение необходимо измерять вольтметром непосредственно на карте, не полагаясь на неточный программный мониторинг, но для наших целей, а именно, для наблюдения за изменениями напряжения, и он подойдет.
На моей 9800 GX2 установлено 2 контролера VT1165MF, по 1 на каждой половине карты.
Порядок действий.
1. Откройте RivaTuner->Hardware monitoring и не закрывайте его. Посмотрите на текущие напряжения GPU{n}/Voltage regulator output, они нам понадобятся. Если ваша карта имеет разделяемые напряжения для 2D/3D, то выясните оба. В моем случае напряжение только одно - 1.15 В на обоих видеочипах.
2. Запустите cmd.exe и перейдите в каталог с установленным RivaTuner'ом.
Выполните команду
rivatuner.exe /ri00,70,1a /ri01,70,1a /ri02,70,1a /ri03,70,1a
В результате вы увидите окно примерно такого вида:

со строками в формате
I2C {BN} 70 1a : {ST}
где BN - это номер опрошенной шины I2С, а ST - либо шестнадцатеричное число, либо "invalid".
Запомните BN строки, в которой ST не "invalid".
В моем случае BN равен 03.
3. Введите команду
реклама
rivatuner.exe /ri{BN},70,15 /ri{BN},70,16 /ri{BN},70,17 /ri{BN},70,18
В результате вы увидите окно примерно такого вида:

со строками в формате
I2C {BN} 70 {RN} : {VID}
где RN - номер опрошенного регистра, а VID - лежащий в нем Voltage ID в шестнадцатеричном представлении.
Пересчитайте VID в значение напряжения по формуле
V = ({dVID} * 0.0125) + 0.45
где dVID - это VID в десятичном представлении.
На самом деле, можно ничего не пересчитывать, а просто запомнить, что 2C - это 1.00 В, а увеличение VID на 1 дает увеличение напряжения на 0.0125 В.
Найдите регистры, соответствующие вашим напряжениям в 2D и 3D и запомните их RN и текущий VID.
В моем случае напряжение одно и оно составляет 1.15 В, которому соответствует VID 38. Т.е. RN у меня равен 16.
4. Теперь, чтобы наконец изменить напряжение, введите команду
реклама
rivatuner.exe /wi{BN},70,{RN},{NVID}
где NVID - новое значение Voltage ID, рассчитанное по формуле
dNVID = ({NV} - 0.450) / 0.0125
(где NV - желаемое напряжение) и переведенное в шестнадцатеричное представление.
В многочиповых и многокарточных конфигурациях для настройки каждого отдельного чипа команда установки напряжения будет несколько иной:
rivatuner.exe /sd{DN} /wi{BN},70,{RN},{NVID}
где DN - логический номер устройства.
Выяснить, какой номер соответствует какому чипу, нужно экспериментально, поэтому я не советую сразу изменять значения регистров на большую величину, т.к. это может привести к некоторым неприятным последствиям (в лучшем случае - к никаким, в среднем - к отключению карты и невозможности ее включения до полного обесточивания ПК, в худшем - к потере карты). Сначала малыми изменениями по мониторингу вычисляем DN каждого чипа, а уже устанавливаем необходимое напряжение. Или сразу два - в 2D и 3D.
В моем случае для установки 1.2 В на обоих чипах необходимо дать команду:
rivatuner.exe /sd01 /wi03,70,16,3c /sd02 /wi03,70,16,3c
В результате имеем примерно следующую картину:

Программный вольтмод прошел успешно.
Тестирование и выводы.
Теперь необходимо проверить, есть ли толк от такого вольтмода, у не является ли он "кукурузным", т.е. ненастоящим. Т.к. проверить напряжение вольтметром я не могу ввиду его отсутствия, то в качестве доказательства реальности вольтмода следует привести либо рост температуры от вольтмода в нагрузке, либо улучшение разгонного потенциала карты.
Нагрузка создавалась программой OCCT GPU v0.70 в режиме 700x700@60Гц, Shader Complexity 8 в течение 6 мин. Карта находилась на частотах по умолчанию, менялось только напряжение: с 1.15 В на 1.20 В. Тестирование производилось на открытом стенде. Между тестами карта была принудительно остужена до 45/46 включением 100% оборотов турбины.

(кликните по картинке для увеличения)

(кликните по картинке для увеличения)
Результат: увеличение температуры на 4-5 градусов при увеличении напряжения на 0.05 В.
Наблюдается и несильное увеличение разгонного потенциала.
Максимальные частоты видеочипов для 3DMark 06 увеличились с 755/1887 до 800/2000, что дало прирост всего в 126 попугаев. Такой карте уже совершенно не хватает процессора.
Т.к. мой предел места на ПС составляет 1.5 Мб, из которых всего 105.7 Кб свободно, то предоставляю ссылки на HWBot.org с результатами до вольтмода и после него.
26674 очков на 1.15 В 26800 очков на 1.20 В
Итог: Програмный вольтмод реально работает.
Таким программным методом можно поднять напряжения хоть до 2 В, но большинство видеокарт оборудовано различными системами защиты от перегрузки по току, напряжению и температуре, поэтому при увеличении напряжения следите за температурами, особенно за VRM phase, т.к. карта отключается при превышении ими определенного порога.
На моей карте напряжение больше 1.4 В неизбежно приводит к её отключению в любых 3D задачах, для бенчмарков эта планка опускается до 1.32 В, а OCCT в высоком разрешении (начиная с 1280x1024@60 Гц Fullscreen) не идет уже на 1.20 В больше 2 минут. Так что не следует ждать от такого вольтмода взрывного увеличения разгонного потенциала.
Для облегчения задачи подбора и установки напряжений участниками немецкой бенчерской команды AwardFabrik была написана утилита VoltageFactory, которая выполняет все вышеописанное через простой графический интерфейс. Она выполняет те же команды RivaTuner'а, только пользователь их не видит и ему не нужно вводить их самому. Программа неплохая, но в ней имеется неприятная особенность - выбирать самому DN не дают, а автоматический выбор не всегда правилен, поэтому она часто оказывается бесполезной для многочиповых/многокарточных конфигураций.
Не составляет много труда написать себе набор BAT-файлов или небольшую программку на любимом языке программирования для автоматизации описанного выше процесса, а при желании можно написать работающую напрямую с I2C утилиту, которой не нужен будет RivaTuner. Но написание такого рода софта - тема отдельной статьи.
Источник: форум OCExtreme.
Спасибо за внимание, с уважением, CodeRush.
Критиковать и хвалить можно здесь.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают