Как редактировать bios pascal
Многие относятся к биос (имеется в виду именно программа) как к чему-то незыбленно-потаённому, известному только узкому кругу разработчиков и совершенно не подлежащему самостоятельной правке. Однако реально не всё так страшно, я бы даже сказал – всё достаточно просто, надо только чётко понимать и осознавать, что ты делаешь. И тогда вы сможете получить моральное удовольствие от собственной картинки в биос да повеселиться, увидев при загрузке «Pentium 12 - 33.33GHz». Или, если серьёзно, добавить дополнительные возможности вашей плате – будь то поддержка «больших винтов» или каких-то новых, незнакомых вашей старенькой маме, других устройств (если, конечно, вы – программист).
Попробуем разобраться. Чтоб не опростоволоситься, нужно чётко знать две вещи: как устроен биос, что делать и чем.
Для начала – «чем» – инструментарий:
CBROM v.2.07 - программа для просмотра/распаковки различных модулей биос. Это стандартная утилита от самого Award-а.
Замечание: более "свежие" версии (типа cbrom ver.2.15) с многими биосами работают крайне некорректно потому настоятельно НЕ РЕКОМЕНДУЮТСЯ.Версия 2.07 же поддеживает все "стандартные" Award-биосы вплоть до сегодняшних.
MODBIN v.4.50.80C (для Award 4.5х) и v.6.1.00.20 (для Award 6.x) - программы, позволяющие редактировать некоторые регистры чипсета, а так же изменять надписи/опции в BIOS Setup. Это стандартная утилита от самого Award-а.
Замечание: более "свежие" версии для Award 6.x (типа v.6.2beta), как правило, являются "бетами" и работают менее стабильно. Хотя v.6.1 тоже не шибко блещет оной;), однако, как правило, верно вычитывает CRC (что частенько забывают делать более свежие бэты, в результате чего после перешивки компьютер не грузится, выдавая стандартную надпись "BIOS Checksum Error" и требуя аварийную дискетку для восстановления) и работает существенно быстрей (не смейтесь - некоторые бэты распаковывают биос на компах с частотой до гигагерца минут десять!). Хотя нужно признать, что в некоторых редких случаях можно воспользоваться лишь более свежей v.6.2beta (однако делать это нужно очень осторожно и обновить после правки CRC с помощью cbrom).
Сначала кратко, но достаточно точно рассмотрим основные части биоса. Он состоит из двух главных частей:
1. BootBlock (BB).
В его функцию входят самые первые шаги по инициализации регистров чипсета и распаковка главной части в память для последующего исполнения. При несовпадении подсчитанной контрольной суммы биоса он же (BB) запускает программу аварийного восстановления биоса (с дисковода).
2. Основная часть.
Главный исполняемый код. Состоит из нескольких «модулей» и хранится в запакованном виде как архив LHA с немного изменёнными заголовками (не принципиально для нас). Как правило, используются следующие названия для составных частей (модулей) этого «архива» (детально можно посмотреть с помощью утилиты cbrom):
- original.tmp – главная часть, всегда размером 128k, она нас и интересует. Именно в ней происходит вся инициализация компьютера, в ней же подпрограмма BIOS Setup
- awardext.rom – «расширение» главной части, в т.ч. в нём подпрограмма вывода конфигурации компьютера - табличка, появляющаяся сразу же перед «Starting Windows (DOS, linux и т.д.) …»
Другие встречающиеся части:
Так же, бывает, попадаются всякие VGA.rom (при интегрированном видео), logo.bin и др., что есть либо не принципиально, либо банально-понятно. Названия могут меняться производителем, но по смыслу-размеру-названию всегда можно догадаться.
Рецепт 1 (описан в интернете).
Если мы выберем в modbin верхний пункт «Update File», то «временный» файл original.tmp запаковывается назад в файл биоса. Напрашивается простое решение: если это сделать (открыть файл биоса в modbin) из-под винды, а потом просто переключиться по Alt-Tab в любой другой файлменеджер (VC, Explorer, Far и т.п.) – то у нас появится возможность внести любые изменения в original.tmp. Сделав, что нужно, переключаемся назад в modbin и тискаем “update”. modbin берёт исправленный нами original.tmp и сам запаковывает его в биос. Всё – радуемся. (Особенно, ежели после перешивки исправленная версия заработает:)
Однако описанный способ имеет важный недостаток – он не позволяет исправлять второй сегмент, т.е. можно менять лишь первые 64k – 00000-0FFFFh. Просто во вторых 64k лежат изменяемые модбином всякие регистры, потому он вторые 64k заменяет «своими», и все изменения по адресам 10000-1FFFFh игнорируются. Этого недостатка лишён второй способ. Кроме этого, в отличие от первого, здесь всё делается под «голым» ДОСом, а также можно распаковать и изменить любой «модуль».
Рецепт 2 (©apple_rom;)
Придётся чуть более подробно поговорить о структуре биос. Как было сказано выше, биос представляет собой архив. Но правильнее и точнее – это последовательность заархивированных с помощью LHA файлов с bootblock-ом в конце. Он (bootblock), конечно же, не заархивирован, т.к. именно он и распаковывает все эти «модули» в оперативную память. В применении к конкретными адресам структура примерно такова:
Таблица 1. Структура и адреса для 1Mbit-ного (128kB) биоса.
00000 – xxxxx+1 | Файл запакованного original.tmp плюс один байт («дополнительного» CRC) |
xxxxx+1 – yyyyy | Cразу же дальше (т.е. без разрыва) идёт файл следующего запакованного модуля, например, awardext.rom (на конце уже никаких «дополнительных» байтов) |
yyyyy – zzzzz | Дальше (также без разрыва) – следующий. И так все имеющиеся в конкретном биосе модули |
zzzzz - ~17FFEh* | Свободное место, обычно заполняется «00» или «FF» |
~1C000* – 1FFFFh | Бутблок |
* - адреса могут отличаться, т.к. бывают прошивки с разными по величине бутблоками.
Теперь о том, что представляет собой заголовок LHA-архива. Мы не будем вникать в подробности, а лишь отметим те моменты, которые нам помогут точно определить его начало (ведь все «модули» идут друг за другом «без пробелов»). Зная адрес начала каждого модуля, мы будем знать, соответственно и его конец. Начало любого файла, заархивированного с помощью LHA, выглядит примерно так: "%·-lh5. ". Главный и постоянный отличительный признак здесь – “lh5”, эти три символа присутствует всегда. Три символа левей “lh5” – и есть начало. Т.е. просто введя несколько раз подряд поиск “lh5” мы запросто вычислим вышеуказанные xxxxx+1 (отнимая тройку от адреса найденного “lh5”), yyyyy, zzzzz… Разберём на конкретном примере - прошивка для платы Zida 5SVA v.1.4:
Тут и так понятно, начало файла заархивированного original.tmp – 00000. Ищем следующее “lh5”:
Следующее найденное “lh5”:
00014DD0: 39 0B F8 01-C1 E8 07 61-FA 50 00 B9-25 73 2D 6C 9♂°☺┴ш•a·P ╣%s-l
00014DE0: 68 35 2D 79-02 00 00 42-06 00 00 00-00 02 40 20 h5-y☻ B♠ ☻@
00014DF0: 01 0C 41 57-41 52 44 45-50 41 2E 42-49 4E 29 49 ☺♀AWARDEPA.BIN)I
Как видно, дальше идёт файл заархивированной картинки EnergyStar – AWARDEPA.BIN. Он начинается с адреса 14DDCh. Соответственно, файл заархивированного original.tmp – 0-14DDAh. На байт 14DDBh (CRC) не обращаем внимания, его позже пересчитает и установит сам modbin.
Следующее найденное “lh5”:
00015070: 0F 68 CF 55-8F 4F 88 8C-9B 96 B5 80-00 25 B3 2D ☼h╧UПOИМЫЦ╡А %│-
00015080: 6C 68 35 2D-E1 1D 00 00-98 2B 00 00-00 00 00 41 lh5-с↔ Ш+ A
00015090: 20 01 0C 61-77 61 72 64-65 78 74 2E-72 6F 6D 51 ☺♀awardext.romQ
Нашли по адресу 1507Dh начало awardext.rom. Получается, AWARDEPA.BIN – 0-14DDCh. Кстати, как уже заметно, последний байт LHA-архива всегда “00”.
Последнее найденное “lh5”:
0001E860: 8E D8 8E C0-66 BE 00 00-0E 00 67 66-81 7E 02 2D О╪О└f╛ ♫ gfБ~☻-
0001E870: 6C 68 35 74-07 66 81 CE-00 00 F0 FF-66 BF 00 00 lh5t•fБ╬ Ё f┐
0001E880: 01 00 66 B9-00 80 00 00-67 F3 66 A5-0F 20 C0 24 ☺ f╣ А gєfе☼ └$
Последнее найденное “lh5” отбрасываем, так как видно даже по адресам, что это область бутблока. Чтоб найти конец awardext.rom, просто пролистываем прошивку после предпоследнего “lh5” до начала пустого места (заполнено “00” или “FF”).
00016E70: 11 85 2A F7-D0 82 2D 90-76 0A E6 27-39 FB FC 17 ◄Е*ў╨В-Рv◙ц'9√№↨
00016E80: 5B EC 16 B0-C0 00 FF FF-FF FF FF FF-FF FF FF FF [ь▬░└
00016E90: FF FF FF FF-FF FF FF FF-FF FF FF FF-FF FF FF FF
Т.е. с 16E86h начинается пустое место, значит awardext.rom – 1507D-16E85h.
Если записать найденные куски кода в файлы, дать им расширение “*.lha”, то с помощью LHA (или любого другого «современного» архиватора) сможем их разархивировать и получить нужные нам файлы для просмотра/правки.
Теперь, подробно зная «скелет» прошивки нам не составит труда её разобрать и собрать. После наших (ваших;) исправлений, отредактированный файл original.tmp запаковываем с помощью LHA (название архиву можно дать любое). В конец полученному “*.lha”-файлу дописываем предварительно сохранённый кусок кода 14DDB-16E85h, т.е. все остальные «модули» (в т.ч. байт CRC), кроме original.tmp. Это можно сделать с помощью любого hex-редактора или, например, выбрав “Append” вместо “Overwrite” в WindowsCommander-е. Таким образом получим новый «слепок» заархивированных «модулей». Его и записываем в начало файла прошивки (поверх имеющегося). Конечно, после наших действий изменится контрольная сумма, поэтому для того, чтоб пересчитать/перезаписать CRC полученной прошивки, просто открываем её в модбине и, ничего не изменяя, нажимаем “Update File”. Если модбин при открытии не «возмутится», значит, всё было проделано правильно.
Мы рассмотрели алгоритм замены для 1Mbit-ных (128kB) биосов. Для 2Mbit- ных всё ещё проще, т.к. original.tmp лежит отдельно от других модулей:
Таблица 2. Структура и адреса для 2Mbit-ного (256kB) биоса.
00000 – xxxxx | Файл одного из запакованных «модулей», например, awardext.rom |
xxxxx – yyyyy | Cразу же дальше (т.е. без разрыва) идёт файл следующего запакованного модуля, например, cpucode.bin. Дальше (также без разрыва) – следующий. И так все имеющиеся в конкретном биосе “модули” (кроме original.tmp) |
yyyyy – 1FFFFh | Свободное место, обычно заполняется «00» или «FF» |
20000 – zzzzz+1 | Файл запакованного original.tmp плюс один байт («дополнительного» CRC) |
zzzzz+1 - ~37FFEh* | Свободное место, обычно заполняется «00» или «FF» |
~3C000* – 3FFFFh | Бутблок |
* - адреса могут отличаться, т.к. бывают прошивки с разными по величине бутблоками.
И значит, не надо дополнительно мучаться с оставшимися «модулями» - заархивированный LHA модуль original.tmp записываем по адресу 20000h в нашу прошивку (поверх, конечно) и для пересчёта CRC «пересохраняем» (“Update File”) в модбине.
Правка BootBlock-а.
BootBlock, располагающийся в самом конце биоса, как уже говорилось, не запакован (ведь кто-то должен всё распаковывать:). Поэтому с правкой тут особых проблем нет – берём любой hex-редактор и правим. CRC считается вплоть до 17FFFh для 1M-bit и 37FFFh для 2M-bit, так что если вы исправили что-то по более старшим адресам, обновлять CRC не нужно.
Примечание для программистов: не забывайте – в бутблоке не используется стэк (он на первой стадии инициализации запрещён), поэтому для исполнения своих подпрограмм пользоваться указателем sp «вручную». Как? – проще взглянуть на любой кусок кода оттуда от любой прошивки и станет понятно.
Примечание: перепечатка без указания ссылки на сайт автора - запрещена.
п.с. если у кого-то есть по сабжу другие конкретные ссылочки/мысли, просьба телеграфировать на мыло (bios@rom.by) или в форум.
- Менять VendorID/SubsystemID карты (но не нужно)
- Менять частоту и напряжение ГПУ и частоту памяти
- Менять частоту Boost, TDP, лимиты
- Делать свою кривую вращения вентилятора
- Менять частоты и напряжения ГПУ/памяти для 2D и режима UVD (так сделано специально, иначе энергосберегалки карты не работают как должны)
- Менять напряжение на памяти (очень печально, кстати)
- Задавать любые напряжения на ГПУ для всех типов VRM, кроме CHL822x, CHL8214, UP1637, UP1801, ST6788A, VT1556M (для всех остальных типов, только выпадающая таблица напряжений)
- Собственно сама программа VBE.
- Прошивальщик Atiwinflash.
-
разнообразных биосов AMD.
- Открываем программу. Жмем на кнопку Open и выбираем необходимый вам биос.
- Если редактируете чужой биос, то лучше запустить 2 копии программы и сравнить оба биоса, это убережет от многих проблем.
Вкладка Overview
реклама
- Обведенные красной рамкой строчки, должны совпасть в обоих биосах. Не касается случая, если вы сознательно шьете биос от другого производителя, хотя и там как минимум VRM и Memory Type(s)обязаны быть одинаковыми.
Вкладка PowerPlay
Вкладка OverDrive&PowerTune
реклама
Раздел OverDrive.
- В строчках Max. Core Clock и Max. Memory Clock нужно выставить частоты не меньше, чем вы выставляли на предыдущей вкладке, иначе глюки в драйверах обеспечены.
- В строчке TDP Limit (%) можно выставить любое значение от -50 до +50. Это аналог управления питанием из Aftreburner.
Раздел PowerTune.
- Строчка TDP (W) позволяет прямо указать максимальный теплопакет карты.
- В Power Limit (W) можно задать минимальный и максимальный теплопакет видеокарты.
Вкладка Fan Profile
реклама
- Тут можно поиграть с оборотами вентилятора и температурой. Никаких советов не будет. Все зависит от СО вашей видеокарты. Если она плохо охлаждает, то нет смысла особо сильно занижать кривую температуры/скорости вращения. В общем есть смысл поиграть с графиком в сторонних программах, а потом уже вшить их в биос.
- В строчке Temperature Hysteresis можно указать значение погрешности измерения температуры и скорости вентилятора, но лучше не трогать. Иными словами это сглаживает набор\падение оборотов вентилятора.
- Ну и кнопки Save Profile и Load Profile позволяют сохранять и загружать ваше творчество в программу.
- Нажимаем Save и сохраняем свой отредактированный биос.
Переходим к прошивке биоса в видеокарту.
Сразу оговорюсь, что я не сторонник прошивки биоса из под ДОС, поэтому тут только Виндовс версия прошивальщика. Уже прошился раз 100 на многих картах и пока ни одного сбоя не было. Но, за любые риски ответственности не несу.
- Распаковываем архив с прошивальщиком в корень диска С:, должно получиться что-то вроде С:\Atiwinflash.
- Копируем сохраненный ранее биос в эту папку.
- Открываем консоль с правами администратора и вводим:
- cd c:\atiflash
- atiwinflash -unlockrom 0 — запустится программа, разблокирует на запись биос номер 0. Появиться окошко, что разблокировка произведена, в нем жмем ОК. (В некоторых видеокартах биос не заблокирован на запись, так что эту строчку можно не вводить. Хотя если даже и введете, плохого не случится).
- atiwinflash -p -f 0 имя_вашего_биоса.rom — собственно прошивка биоса, ждем 5-10 секунд и перезагружаемся. (Начиная с версии VBE 7.0.0.7b автор сделал проверку контрольной суммы при сохранении биоса, поэтому параметр -f уже не обязателен, хотя и не вредит).
В конце вы должны увидеть такое окно:
В прошлой статье мы рассматривали как прошить видеокарту AMD Radeon. Для видеокарт компании Nvidia также возможна замена прошивки BIOS. Так как технологии, используемые производителями, во многом являются проприетарными, утилиты используемые для модификации прошивки видеокарт, сильно отличаются.
Прошивка видеокарты Nvidia может понадобится если у вас есть новая версия BIOS, в которой были установлены более высокие значения для различных параметров оборудования, для оптимизации майнинга или для выполнения ресурсоёмких расчётов с использованием GPU. В этой статье мы рассмотрим как прошить видеокарту Nvidia, а также инструменты, которые для этого нужны.
Прошивка BIOS видеокарты Nvidia
Перед прошивкой видеокарты необходимо сохранить текущую рабочую копию BIOS, чтобы в случае возникновения неполадок вы могли восстановить работоспособность системы. Большая часть изложенной информации подходит только для дискретных видеокарт в персональных компьютерах. Видеокарты ноутбуков, как правило, не имеют своего BIOS.
Шаг 1. Подготовка системы
В первую очередь обновляем драйвер вашей видеокарты до самой свежей версии. Вы можете скачать свежую версию драйвера из официального сайта:
Шаг 2. Резервная копия BIOS Nvidia
Создаём резервную копию текущего BIOS на компьютере, используя утилиты GPU-Z или NVFlash. При использовании GPU-Z нажимаем кнопку со стрелкой возле строки BIOS Version и выбираем пункт контекстного меню Save to file…
Чтобы сохранить BIOS с помощью NVFlash запускаем утилиту командной строки. Для этого откройте Пуск -> Служебные Windows -> Командная строка:
Затем переходим в папку с сохранённой утилитой с помощью команд (в качестве примера взят мой вариант расположения папки):
Выполняем команду сохранения резервной копии BIOS:
nvflash64 -b backup.rom
Проверяем физическое наличие файла резервной копии с помощью команды:
Если прошивка bios nvidia пройдет неудачно, этот файл вам очень пригодится.
Шаг 3. Поиск новой прошивки
Чтобы прошивка была успешной, необходимо совпадение Device ID, типа видеопамяти и объёма видеопамяти видеокарты. Частота графического процессора и памяти должны отличаться несущественно. Устанавливаем утилиту GPU-Z и смотрим необходимые параметры нашей видеокарты:
- наименование адаптера;
- семейство GPU;
- ревизия графического процессора;
- частота графического процессора;
- тип памяти;
- ширина шины памяти;
- размер памяти;
- частота памяти;
- версия BIOS;
- производитель видеокарты.
После этого скачиваем нужный нам файл прошивки BIOS видеокарты с сайта.
Шаг 4. Прошивка видеокарты Nvidia
Самая популярная программа для прошивки видеокарт Nvidia — NVFlash. Для прошивки надо выполнить несколько команд. Сначала будет рассмотрена прошивка биоса видеокарты nvidia из под windows 64 бит. Отключаем защиту:
Прошиваем, вместо [имя файла].rom надо передать путь к файлу новой, ранее загруженной прошивки:
nvflash64 [имя файла].rom
При несовпадении ID адаптера и файла BIOS необходимо шить с ключом -6. Соответственно, команда будет выглядеть следующим образом:
nvflash64 -6 [имя файла].rom
Включаем защиту обратно:
Соответственно, для 32-битной Windows используется утилита nvflash и команды будут такими:
nvflash [имя файла].rom
Закончив все манипуляции, перезагружаем компьютер.
Шаг 5. Проверка работоспособности видеокарты
Для того, чтобы удостовериться, что прошивка видеокарты оказалась успешной, необходимо проверить её работоспособность при нагрузке. Для этого подходит любой тест, например, 3DMark.
Прошивка BIOS двухчиповой видеокарты NVIDIA
В двухчиповой видеокарте прошивается BIOS обоих чипов. Просмотреть список чипов можно командой:
Обычно команда выдаёт информацию о трёх чипах:
- 0 — главный контроллер платы (его шить не надо);
- 1 — первый графический чип;
- 2 — второй графический чип.
Соответственно, сначала прошиваем первый чип:
nvflash64 --index=1 [имя файла].rom
Затем прошиваем второй чип:
nvflash64 --index=2 [имя файла].rom
Модификация BIOS видеокарты Nvidia
В некоторых случаях может потребоваться самостоятельная модификация параметров BIOS видеокарты. Для этого используются специальные программы. Для Nvidia их список таков:
NVIDIA BIOS Editor (NiBiTor) — утилита для старых версий видеокарт Nvidia (до GeForce 500 Series включительно):
Fermi BIOS Editor — для NVIDIA Fermi GeForce GPU, таких как GeForce 400 Series, GeForce 500 Series:
Kepler BIOS Tweaker — для NVIDIA Kepler GeForce GPU, таких как GeForce GTX 600 Series и GeForce GTX 700 Series, исключая GeForce GTX 750 Ti:
Maxwell II BIOS Tweaker — для GeForce GTX 900 Series:
Для видеокарт с микроархитектурой Pascal на данный момент нет редактора BIOS, но для мобильных видеокарт данного семейства есть утилита, позволяющая редактировать TDP:
Mobile Pascal TDP Tweaker — после редактирования файла BIOS данной утилитой необходимо прошить файл с помощью программатора в чип. Подходит также для мобильных видеокарт семейства Turing.
Настройка видеокарты Nvidia без модификации BIOS
В этом разделе представлена утилита для разгона видеокарт фирмы Nvidia без модификации BIOS. Разгон подразумевает, что вы знаете нюансы работы видеокарт и готовы на свой страх и риск корректировать заводские параметры. Любые некорректные значения приведут к нестабильной работе, в худшем случае — к полной неработоспособности компьютера.
Nvidia Inspector — утилита для разгона видеокарт Nvidia (до GTX 1000 Series, поддерживает Windows 7/8, разработка прекращена):
Что делать после неудачной прошивки
Если прошивка биоса видеокарты Nvidia из под windows прошла неудачно, смотрим, есть ли у нашего компьютера на задней стороне материнской платы разъёмы для подключения монитора (VGA, DVI, DisplayPort, HDMI). Если есть, то с большой вероятностью в нашем компьютере присутствует интегрированная видеокарта. Подключаем к данному разъёму монитор.
Если встроенная видеокарта отсутствует, то необходимо установить в компьютер рабочую дискретную видеокарту, а поломанную установить в резервный разъём PCIe x16. В случае, если резервного x16 слота нет, восстанавливаемый GPU подключаем к PCIe x1 через райзер PCIe.
К рабочей видеокарте подключаем монитор и включаем компьютер. После загрузки системы прошиваем нерабочий GPU, используя оригинальный файл прошивки BIOS. Выключаем компьютер. Отключаем резервную видеокарту, а восстановленную устанавливаем в основной разъём PCIe x16. Проверяем работоспособность нашего компьютера.
Выводы
Сегодня мы разобрались как прошить биос видеокарты Nvidia. Обратите внимание на указанные предосторожности при проведении данной операции. Также мы рассмотрели ситуацию, когда видеокарта утратила работоспособность после прошивки BIOS.
Кроме того, вы теперь знакомы с программами, позволяющими модифицировать BIOS, для видеокарт Nvidia. Была рассмотрена также утилита для модификации рабочих параметров GPU и памяти без необходимости прошивки.
Видеокарты поколения Maxwell заканчивают свою эпоху, уступив право правления улучшенной архитектуре Pascal. Но от этого GM20x не перестали быть интересными в плане своего скрытого потенциала, выражаемого в МГц. Мы помним, что внедрение технологии Boost 2.0 вставило многим палки в колеса приразгоне видеокарт с помощью утилит (MSI Afterburner, EVGA Precision, Palit ThunderMaster и других), и смещение частоты приводило к тому, что вместе с частотой BOOST менялись базовая и промежуточные частоты, и рано или поздно это приводило к нестабильности при смене нагрузки на видеокарту. Как следствие - многие снижали разгон, а для дальнейшего разгона приходилось или использовать метод редактирования микрокода под название "отключения BOOST" (на самом деле сама технология Boost 2.0 никуда не исчезала, просто видеокарта работала на повышенных частотах даже при небольших нагрузках), или использовать сторонние программы для фиксации максимальных частот (например -Nvidia PowerMizer Manager). Минусы заключаются в повышенных частотах и напряжении в режиме простоя и небольшой нагрузке, как итог - излишние нагрев и потребление. В данном случае в роли ограничителей выступают возможностиMaxwell II BIOS Tweakerи драйверная часть видеокарт. Но что, если заглянуть в тонкий мир микрокода с помощью HEX-редактора и посмотреть, что же даст нам такой подход.
Подготовка к редактированию микрокода видеокарты
Для начала необходимо прошить крайнюю версию BIOS (без модификаций) для вашей видеокарты. Найти её можно как на сайте производителя, так и на сторонних сайтах, например -TechPowerUp. Для того, чтобы прошить BIOS, можно воспользоваться программой NVFlash. Рекомендую сразу скачатьверсию с обходом проверки сертификатов, так как именно она нам пригодится далее. Для прошивки создаем в корне диска C папку с названиеnvflashи в нее распаковываем содержимое скачанного ранее архива. так же в корень папки добавляем файл с микрокодом, который мы собираемся "прожечь".Затем запускаем командную строку от имени администратора и вводим следующие команды по очереди:
гдеnamebios - название файла BIOS.
Я для разгона использую в основномMSI Afterburner, поэтому в данном материале будет фигурировать именно она. Скачиваем крайнюю версиюи устанавливаем её. Так же скачиваем программу GPU-Zи производим установку.
Дальнейший этап - определениезначения максимальной частоты и рабочего напряжения при полной нагрузке на видеокарту без использования разгона. Это удобнее делать с помощью встроенного в GPU-Z рендера и мониторинга сенсоров
На данном примере частота в режиме Boost 2.0 составляет 1455.5 МГц при напряжении 1.199 В, вторая видеокарта (BIOS которой будет рассматриваться ниже)работала на частоте 1367 МГц при 1.193 В.Запоминаем данные параметры, они нам еще пригодятся.
Теперь же открываем версию BIOS, которую мы загрузили в нашу видеокарту, с помощьюMaxwell II BIOS Tweaker. Параллельно рассмотрим основные вкладки и значения, представленные в них.
Вкладка Common
TDP Base Entry/3D Base Entry/Boost Entry- эти параметры не трогаем, оставляем как есть.
TDP Base Clock/3D Base Clock/Boost Clock- значение базовых и BOOST частот. По факту, TDP Base Clock/3D Base Clock не зависят от asic видеокарты, и мы можем его выставить вручную, но выбирать частотыстоит из вкладки Boost table. На моем примере вы видите частоту с 34 ячейки таблицы.
А вот частота Boost Clock указывает нам минимальную частоту BOOST для видеокарты (1329Мгц - 59 ячейка таблицы), но фактическая частота будет определятьсяasic карты (можно посмотреть его в gpu-z) - чем выше asic, тем выше фактическая частота в режиме BOOST (на моей видеокарте с asic 73,5% буст из коробки до 1392.5Мгц - 64 позиция таблицы частот). С помощью изменения Boost Clock на значения из таблицы выше стоковых мы переносим частоту BOOST. Изменение частоты 1329 МГц (59 позиция таблицы) до 1354.5 МГц (61 позиция) в моем случаеприведет к изменению фактической частоты в режиме BOOST с 1392 МГц (64 ячейка) до 1418 МГц (66 ячейка). Это позволит менять максимальную частоту буста без использования АБ. Это метод для ленивых.Так же кнопочка Gpu Clock Offset +13MHz сделает то же самое, но еще и изменит TDP Base Clock/3D Base Clock (но их можно вернуть вручную на желаемые).
Temp Target/Max Temp Target- температурные лимиты, те же ползунки есть в MSI Afterburner. Ставим значение 89/91 при условии, что видеокарта не греется 80+ градусов.
Fan Control- управление оборотами вентиляторов системы охлаждения видеокарты.
RPM1x/TMP1x/PER1x- это желаемые границы оборотов (при использовании вентиляторов, регулируемых ШИМ)/ температуры/ процентов оборотов (при использовании вентиляторов, регулируемых напряжением) для регулировки вентилей. Желательно проценты подгонять методом вычисления (2600/3200=81%, а не 70, как у меня, но у меня ШИМ-регулировка).
Как это работает.
RPM13/TMP13/PER13- максимальные значения оборотов, оставляем RPM13/PER13 без изменения, а TMP13 ставим в то значение, которое считаете нужным (на моём примере 3200 оборотов в минуту(максимальное паспортное значение) при 90 градусах).
RPM11/TMP11/PER11- до этих значений вентили с нуля будут раскручиваться или же начальные значения. На картинке вышедо 35 С о вентиляторы крутятся с технически минимально возможного значения до 1000об, после 35 и до 70 С о (TMP12) раскручиваются плавно до 2600 оборотов в минуту(RPM12).
Чтобы остановить вентили RPM11/TMP11/PER11 записываем как 0/0/ХХ, где ХХ - температура, до которой вентили будут стоять.
Memory Clock- частота видеопамяти. Ставим стабильное по вашему мнению значение и отнимаем 100Мгц. Для большей стабильности и уверенности.
Вкладка Voltage Table
Данная вкладка отображает напряжение для каждой частоты из таблицы частот.
Если у Вас GM200 и данная вкладка выглядит следующим образом:
то необходимо открыть вторую и третью строчки в таблице напряжений. Для этого открываем BIOS в Kepler BIOS Tweaker и двигаем выделенные ползунки в произвольное положение:
Получается примерно так:
Теперь BIOS выглядит так вMaxwell II BIOS Tweaker:
1 строка:максимально возможное напряжение (зависит от регулятора напряжения вашей видеокарты, может максимально стоять и 1281, и 1250, тут как повезет). Ставим 1281.3.
2 строка:это наше базовое напряжение для Boost Clock.
Если желаете на шаг снизить напряжение- меняете максимальное напряжение в этой строке на шаг вниз стрелками клавиатуры и зашиваете BIOS с этим напряжениеми выполняете манипуляции с рендером в GPU-Z. Полученное напряжение (это будет минус шаг от вашего стокового напряжения) пишем первым значением во вторую и третью строку.
Если не желаете на шаг снизить напряжение- ставите напряжение, найденное на этапе подготовки при помощи рендера GPU-Z в минимум и плюс один шаг в максимум. При такой настройке частоты сбрасываться под температурой НЕ БУДУТ. Максимальное напряжение в этой строке ставим на шаг больше от минимального.
3 строка:Минимальное значение, как и во второй строке, максимум - как в первой. Это как раз то напряжение, которое через MSI Afterburner мы можем регулировать с помощью ползунков.
Программный мониторинг (GPU-Z, MSI Afterburner, HWiNFO) не всегда является истиной, и отображаемое напряжение на графическом процессореможет быть больше/меньше действительного. Убедиться в этом можно с помощью мультиметра.
А теперь о том, что отображаемые шаги напряжения в том же gpu-z не являются единственно возможными. Изменение проведем на примере моей видеокарты,VID которойна стоковом BIOS - 1.150, 1.175, 1.193, 1.218 и т.д.
Для начала фиксируем напряжение 1.175 В, чтобы определить номер ячейки для этого напряжения. Для этого в первые три строки таблицы напряжений ставим следующие значения:
- 1.281-1.281
- 1.175-1.181
- 1.175-1.281
В итоге, получаем частоту BOOST, соответствующую 59 ячейке.
Далее, переходим на 59 ячейку в таблице напряжений и сдвигаем значения таким образом, чтобы сдвинуть диапазон напряжений на нужное нам значение. Сделав таблицу, как на скриншоте, я получил VID карты, которых ранее не было. Он становится одним из диапазона для каждой ячейки, и, как видно на видео ниже, можно более точно регулировать шаг напряжения.
Стоит учесть, что на смещение напряжения на 6-10 мВ мы переходим на следующую ячейку таблицы буста и получаем +13 МГц. Можно менять шаг напряжений, делать его больше или меньше.
Вкладка Power Table
Это лимиты мощности. Нас интересуют первые 6 групп (каждая группа состоит из Min|Def|Max значений).
Перваягруппа - это TDP карты. По сути, это расчётное значение тепла, которое производитель учитывает при проектировании системы охлаждения, к лимиту мощности отношения не имеет. Ставим его таким же, как и значения 6 группы.
Вторая группа - пропускаем ее.
Третья группа - мощность слота PCI-E, ставим данную группу при учете 75 Вт максимальных.
Шестая группа - лимит мощности. Это то, что больше всего интересует нас. Значения ставятся в расчёте из суммы значений всех питаний видеокарты, которые мы выставляли в таблице. Эти же значения пишем в 1 группу (не обязательно).
Вкладка Boost Table
Здесь мы видим ту самую таблицу частот, из-за которой мы здесь собрались. Каждая частота здесь сопряжена с напряжением из соответствующей таблицы, привязка идет по номеру ячейки. С помощью ползунка Max Table Clock мы может сдвигать частоты с 35 по 74 ячейку как в сторону увеличения, так и в сторону уменьшения. Это аналогично действиям вMSI Afterburner. Так же здесь мы наглядно можем увидеть, что при увеличении максимальной частоты BOOST меняются и все промежуточные частоты.
Вкладка Boost States
Меняем лишь Max GPC в Р00 и Р02 на значение из 74 ячейки таблицы частот, остальное нас не касается.
Вкладка Clock States
В DDR профиля P00 ставим частоту памяти из первой вкладки (точнее - она сама тут изменится при изменении частоты там), а вот DDR в Р02 или оставляем как есть, или меняем на значение как в P00. Если оставим как есть - при использовании CUDA будет скидывать частоту до этого значения.
Редактирование таблицы частот с помощью НЕХ-редактора
Для начала выставляем нужное нам напряжение буста во второй и третьей строчках таким образом (в данном примеренапряжение для BOOST я понизил до1.175 В, но стоит помнить, что в начале статьи с помощью GPU-Z мы уже определили рабочее напряжение и частоту, поэтому устанавливаете необходимое Вам напряжение).
Во второй строчке к правому значению прибавляем один шаг, в третьей ставим максимальное значение, до которого через MSI Afterburner можно будет поднять напряжение. Стоит учесть, что при увеличении напряжения с помощьюMSI Afterburner напряжение при нагреве будет уменьшаться до минимального, прописанного во второй строчке.
Запоминаем, в какой ячейке расположена частота 3D Base Clock:
На позицию BOOST (На моем экземпляре видеокарты при 1.174 В это 59 ячейка,) ставим частоту, которая при этом напряжении стабильна (рекомендую ставить на 2-3 шага ниже, остальное регулировать в MSI Afterburner).
Далее открываем BIOS в любом HEX-редакторе (я использовал HxD)и ищем ячейку BOOST следующим образом: к номеру ячейки прибавляем 12 (на моём примере59+12=71) и переводим в hex (71d = 47h). Далее берем частоту на этой ячейке (1455.5 у меня), умножаем на 2 (1455.5*2=2911) и переводим так же в hex (2911d = 0B5Fh). Ноль не теряем. Далее ищем в НЕХ коде биоса следующую шестнадцатеричную последовательность:47 5F 0B 00 01
Где 47 - hex-код ячейки BOOST, 5F 0B - удвоенная частота младшими разрядами вперед (0B_5F), 00 01 - код команды. Влево (с 46 позиции) идут ячейки с 58 до 1 группами по 5. Берем значение частоты, которое у нас будет между базовой и частотой BOOST (я выбрал 1405 МГц), переводим в знакомый формат (1405 * 2 = 2810d= 0AFAh) и вставляем их с ячейки перед бустовой (58 в моём случае) по ту, на которой стояла базовая частота + 1 (43+1=44) и меняем их на нужное нам значение (FA 0A). После редактирования таблицы частот соотносим значения в таблице напряжений (для всех ячеек с одинаковой частотой можно ставить один диапазон напряжений), сохраняем BIOS (обязательно затем открываем его в Maxwell II BIOS Tweaker и сохраняем, чтобы переписать контрольную сумму)и прошиваем.
Можно писать любые частоты, выбирать любой шаг, но твикер может перечеркивать частоты, которые в него не забиты. Ничего страшного, это недоработка программы, Kepler BIOS Tweaker так же показывает BIOS от Maxwell.
Заключение
Разгон видеокарт имеет несколько причин. Здесь и спортивный интерес, и необходимость в нескольких дополнительных кадрах в секунду, или же просто погоня за красивыми цифрами. В данной статье мы рассмотрели небольшой пример того, как избавиться от вставляемых нам палках в колеса при разгоне. Технология Boost 2.0, на мой взгляд, ничем не отличается от программной последовательности причин и следствий, поэтому изменение условий приводит к изменению рабочего режима. С помощью HEX-редактора и изменения таблиц напряжений и частот я добивался на GTX 980 TI (с использованием воздушного охлаждения)небывалых для нее результатов - при частоте ядра в 1592 МГц и эффективной частоте видеопамяти в 8500МГц при напряжении 1.27 В в программном приложении Firestrike из пакета 3DMark достигался результат22666 графических баллов, в Firestrike Extreme при том же напряжении и 1596/8400 МГц соответственно результат был10641 графический балл.
Для игр использование данной методики тоже оказалось достаточно полезным. Например, абсолютной стабильности на частоте ядра в 1558 МГц (частота памяти при этом составляла 8400 МГц)при любых нагрузках удалось добиться на 1.199 В.
С помощью понижения рабочего напряжения видеокарту получилось сделать холодной и практически бесшумной. На напряжении 1.143 В видеокарта работала на частоте 1503 МГц.
При этом частота устанавливалась с некоторым запасом
При смене нагрузки множества промежуточных частот не было, была частота BOOST, базовая и единственная промежуточная, для которой подбиралось стабильное для нее напряжение. При этом энергосберегающие функции работали корректно, что Вы можете видеть на картинке выше.
Творите, подстраивайте BIOS под себя и свои нужды, но помните, что все манипуляции Вы делаете на свой страх и риск. Удачного и стабильного разгона!
Хорошо известная всем программа для редактирования BIOS видеокарт NVIDIA стала с запоздалыми сроками поддерживать новые модели видеокарт. На момент написания статьи последняя версия NiBiTor 5.7 так и не поддерживает очень популярные видеокарты GTX 460. На самом деле модуль редактирования биоса был готов к работе с этими картами начиная с версии 5.6 — напомню, что начиная с этой версии редактор поддерживает работу с GTX 470 и GTX 480. Выход в свет новых видеокарт не принес ничего нового в структуру BIOS, но для корректного понимания программой BIOS видеокарты, редактор должен знать ID карты.
Запускаем NiBiTor 5.7. Официально эта версия не поддерживает работу с биосом GTX 460, но мы все же пробуем открыть файл BIOS одной из таких карт:
Редактор торжественно сообщил, что не знает ID карты и предлагает выбрать что-либо из списка или отказаться от дальнейшей работы. Не расстраиваемся и кликаем на ОК, не нажимая ничего лишнего. Далее нам необходимо в главном окне программы поменять ID карты на что либо подходящее, например, выбрать GTX 470 или GTX 480:
Далее переходим в третью вкладку — Adv. Info, где необходимо нажать кнопку Rescan BIOS:
Вуаля, теперь редактор понимает параметры биоса. Для тех, кто не в курсе — доступ к модулям редактирования биоса видеокарт Fermi теперь находится в меню Tools.
Вот и заветные настройки для напряжений GTX 460:
Понимает редактор и частоты:
Остается лишь одна важная деталь — перед тем, как сохранить отредактированный файл BIOS, нам необходимо вернуться в главное окно программы и вернуть исходное ID видеокарты — оно будет в самом низу списка с тем же неизвестным названием Unsupported.
Данный способ может подойти и к пока еще не анонсированными видеокартам GTX 450 и GTX 455 — структура BIOS поменяется навряд ли.
Читайте также: