Видеохирургия

Салам, уважаемые эстеты-оптимизаторы, любители из того, что есть, сделать конфетку! Как вам оптимизируется? Хорошо? Ну и как, в этом увлекательном процессе вы уже нахватались разных маловразумительных сюрпризов от системы? Какие такие сюрпризы, спрашиваете?

Отвечаю - очень обыкновенные такие сюрпризы - например, когда при очередном вылизывании системы какая-нибудь злободышащая капризная программулина или косоглазая девайсина выпендривается и убивает всю систему. Обезопаситься от такой радости практически невозможно, но повысить шансы на выживание довольно легко - достаточно проверять каждый компонент системы после очередного "тюнинга".

"Фигня" и "лениво" - вот эти два слова чаще всего возникают у людей компьютерных, когда их начинают в сотый раз о чем-то предупреждать или учить. Ну, в общем, согласен - фигня, конечно, да и лениво тоже, - только следите за тем, чтобы цена вашей лени была сопоставима со стоимостью компонентов.

Если у вас именно такой случай, то это просто отлично, но у большинства это далеко не так. Из личного опыта могу рассказать короткую автомобильную сказку о том, как двигатель моей машины в самом расцвете сил не подружился с новым карбюратором и решил отправиться в мир иной. Такой вот он подарок мне сделал. Ровно под Новый год. Ревность? Неизвестно. Привязанность? Может быть. Плохо завинченная гаечка? Точно. Конец сказки.

Конечно, вы не испугались - пока сами что-нибудь не спалите, излишней осторожностью страдать не будете. Тогда почему бы дальше не вылизывать систему? До упора, до финального конца? Согласны? Тогда эта статья для вас. А заниматься мы будем довольно специфичным занятием - редактировать и перепрошивать BIOS видеокарт - точнее, видеокарт компании NVIDIA. Гаечные ключи нам будут не нужны, единственное, чем надо будет запастись, - хорошей проверенной дискетой, стабильным питанием в электросети, а также полным осознанием того, что в случае прошивки видеокарты лишаетесь гарантии, а все нижеследующие действия выполняете исключительно на свой страх и риск.

Что это даст?

Для начала определимся, чего можно добиться перепрошивкой новой версии BIOS для вашей видеокарты. Первое и самое главное - излечение глюков видеокарты. Однако чаще всего этого не происходит.

Подавляющее большинство проблем с видеокартами возникает из-за их перегрева или из-за недостатка свободных ресурсов внутри системы. Скачав новую прошивку, обязательно посмотрите историю исправлений, сделанных внутри кода BIOS, - если вы нашли там свою проблему, и в новой версии она исправлена, - это тот редкий случай, когда от глюков можно избавиться так просто.

Чаще всего новые версии ограничивается исправлением ошибок типа "осложненная загрузка системы без соединения карты с монитором". Вы часто физически отключаете монитор от карты перед тем, как загрузить компьютер? Забавно, правда?

Еще один тезис: новые прошивки дают новые возможности - например, поддержку режимов SBA и FastWrites. Антитезис: в картах хороших производителей все нужные режимы уже работают и включены, а в... ммм... других картах включение дополнительных режимов просто невозможно из-за их архитектуры.

В любом случае, читайте историю дополнений и фиксов на каждую версию BIOS. Да, и еще - если ваша мама все это новомодное барахло не держит, смысла от новой прошивки не будет никакого. Только в исключительных случаях перепрошивка даст какой-то ощутимый (не на глаз, кончено, а в бенчмарках) прирост производительности.

Подход номер два - попытка тонкой настройки видеоадаптера - прошивка BIOS от другой видеокарты или редактирование родной прошивки. Здесь все намного интереснее - прямо-таки поле для экспериментов. Во-первых, зная максимальные частоты работы памяти и чипа, можно сразу же прошить их в BIOS и тем самым избавить себя от установки и общения с разными программами-твикерами. Как следствие - чуть больше свободной оперативной памяти (если ваша программа-твикер сидела в ней постоянно) или свобода от возни с реестром (если все делалось ручками).

В любом случае, плюсов от такой процедуры больше, чем минусов. Особенно это касается пользователей не-Windows-систем, так как для них софта для разгона видеокарт не так уж и много. Кстати, кроме обычных частотных значений, можно поэкспериментировать со значениями таймингов памяти, уменьшение которых, впрочем, может сказаться на производительности как в лучшую, так и в худшую сторону.

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

Тем более что от нас требуется только отредактировать в BIOS значения Sub Vendor ID/ Sub Vendor Model. Можно, конечно, сразу забить BIOS прошивкой от фирменной видеокарты, но вот ее работоспособность на вашем "ноунейме" гарантировать никто не сможет. Да и вообще - любое несоответствие железа и низкоуровневого софта под него к положительным результатам приводит редко.

Прошивка

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

Внимательно смотрим на такие параметры, как ревизию самой печатной платы, объем памяти, маркировку чипа - в общем, собираем все данные о вашей видяхе. Внимательно изучаем прошивки, предлагаемые производителем, выбираем нужную. Инструменты - дискета, голова, память, набор софта для редактирования и прошивки.

Первое - сохраняем текущую прошивку. Для этого запускаем программу-прошивальщик для вашей видяхи (для карт NVIDIA, построенных на референс-дизайне, это, как правило, программа NVFlash определенной версии, работающая под управлением известного нам по старым играм дос-экстендера dos4gw.exe) и сохраняем на хард старый образ BIOS. Лучше всего сделать папку "1" или все программы, связанные с прошивкой, помещать прямо в корневой каталог - не исключено, что придется какое-то время работать в командной строке.

Делаем загрузочную дискету (а лучше две), на которую также скидываем прошивальщик и прошивки. Такая дискета делается на крайний случай - если все пойдет криво и нужно будет восстановить старый BIOS видеокарты (как вы уже догадались, если что-то пойдет криво - на мониторе вы вряд ли что-нибудь увидите). Для полной автоматизации процесса восстановления делаем файл autoexec.bat со строкой "nvflash.exe old.bin", где old.bin - имя файла-образа старого BIOS, а nvflash.exe - имя вашего прошивальщика видеокарты (так будем назвать этот прошивальщик и в дальнейшем).

Проверяем как машина грузится с дискеты, убеждаемся в том, что в случае локального апокалипсиса все восстанавливается само, расслабляемся. Впрочем, степень автоматизации вы можете выбирать сами - главное, чтобы все сработало. Обязательный пункт программы выполнен, теперь самое интересное - редактирование и прошивка.

После того как вы убедились, что новая версия BIOS подходит для вашей видяхи по всем параметрам, начинаем издевательства. Для этого воспользуемся программой GF123x BIOS Edit (www.nvworld.ru/downloads/gf123edit.zip), если у вас карта семейства GeForce, или программой TNT BIOS Edit (www.nvworld.ru/downloads/Tntedit.zip), если у вас, соответственно, карта на базе чипа TNT. Обе программы работают с библиотекой LabWindows/CVI Run-Time Engine, скачать которую вы можете с www.chat.ru/~vicovico/files/LW_RTE.zip.

Итак, для карт на базе GeForce берем программу GF123x BIOS Edit. Что можно изменить при помощи этой программы? Да практически все - надпись при загрузке, идентификаторы (производителя, модели и все такое), частоты чипа и памяти, тайминги. Надо лишь загрузить тот BIOS, который вы собираетесь прошивать, - и вперед!

Никаких бешеных аргументов в командной строке, никаких недокументированных или совсем уж непонятных функций - все редактирование происходит чуть ли на интуитивно-майкрософтовском уровне. После редактуры сохраняем BIOS - вот и готова версия для прошивки. Отдельно в программе хочется отметить пункт Special, одна из опций которого позволяет изменить стандартные шрифты, зашитые в видеокарту, на свои собственные или на шрифты из набора Windows.

Например, можно запросто русифицировать свою видеокарту, загрузив набор шрифтов ega3.cpi и выбрав 866-ю кодировку. Одно нажатие на кнопку "BIOS Font" - и дело в шляпе. Особенно это полезно при жесткой экономии памяти - драйвер display.sys можно смело выкидывать из файла config.sys.

Пригодиться русификация может во многих случаях - при работе в командной строке с русскоязычным софтом при отсутствии русских шрифтов или, например, в режиме защиты от сбоев Safe Mode... После редактирования программа посчитает новую контрольную сумму файла-образа BIOS, и перепрошивальщик ничего не заподозрит.

Но перед тем, как приступить, собственно, к самой прошивке, необходимо проверить, как будет себя вести система с новым низкоуровневым кодом видеокарты. Делается сие просто - нам нужна всего лишь одна программулина, называемая VGABios. Этот продукт мысли, воплощенный в коде, являет собой динамически загружаемый драйвер, подгружающий BIOS с диска. Почему это возможно?

Дело в том, что при загрузке, если у вас включена опция кэширования "биоса" видеокарты, система целиком загружает его в определенную область оперативки и уже общается не с медленными флэш-чипом, до которого сигнал идет через все шины подряд, а напрямую с кодом, записанном в видеопамяти. Так вот, VGABios гнусно переписывает в эту область указанный вами BIOS.

Делается эта процедура до загрузки самих "виндов", то есть строчка запуска этой программы прописывается в autoexec.bat. Выглядит она примерно так: "c:\vgabios -fnewbios.bin -tM". Как вы уже догадались - "newbios.bin" - имя нового "биоса", который ожидает своей очереди во флэш-памяти. Ключик -t со значением M от 0 до 5 указывает программе режим TV.

Грузимся, досконально проверяем работу видеокарты, измеряем "фепеэсы", ловим старые баги. Переводим всю аппаратуру в номинальный режим работы (короче говоря - убираем разгон), грузимся в режиме MS-DOS или с системной дискеты, пишем в командной строке "nvflash.exe newbios.bin" и - ждем-с. Если прошивальщик отказывается работать, значит или что-то с контрольной суммой BIOS (как бороться с этим - смотрите выше), или сама программа предназначена для прошивки не этой серии карт, или на карте не установлена флэш-память.

Но если все начало перепрошиваться и вдруг резко заработали законы Мерфи (жена перегрызает шнур питания, пытаясь привлечь внимание) - не отчаивайтесь и не дергайтесь. Лучше поговорите с женой, успокойте ее, а потом загрузитесь с дискеты, которую мы приготовили в самом начале. Все должно заработать.

Если все плохо и машина не грузится ни в какую - воткните дополнительно другую видеокарту с непрограммируемым BIOS и повторите процедуру прошивки. Конечно же, надо указать, видеоадаптер на какой шине следует инициализировать первым. В данном случае это будет адаптер на шине PCI. Может и это не помочь - тогда готовьтесь к растерзанию в гарантийной мастерской. Но там уже придется махать совсем другими инструментами...

Андрей Забелин
zyaboz@computery.ru

Hint Site Aport
© Авторские права и копия защищены законом: © Дудкин Александр Константинович, 2002 г.
Копирование любых материалов только с письменного разрешения автора сайта
URL сайта: www.alexishw.mailru.com
Ваши замечания и предложения присылайте по e-mail: alexishw@mailru.com