Thursday, 3 November 2016

Insyde BIOS Modding GPU Overclocking

Insyde BIOS Modding GPU Overclocking


Adjusting the clock speed of electronics has been popular for decades. The primary goals accomplished by doing this are to either achieve greater performance, by overclocking, or to make their machine consume less power, by underclocking. This kind of a thing had some risk though. Overclocking can often lead to overheating, and underclocking can often lead to an unstable system.

For this tutorial were going to talk about adjusting the clock speed(s) of our graphics card. Modern GPUs usually have two clock speeds, the core frequency and memory frequency. NVidia cards also have a shader clock, but AMDs dont. Just to mention it, my laptop had an AMD GPU. Each clocks frequency controls the speed for difference aspects of your GPU. The core clock is primarily used for the computations carried out by the graphics card, the memory clock controls its bandwidth speed, and the shader clock controls how fast the shaders operate. Increasing the speed of any one of these things will boost your performance.

Another good piece of information to know is that your GPU has different states which control its current speed. It will jump back and forth from these states when your requiring more performance. Its similar to C-states in a CPU.

So lets get started with this tutorial. If youd like to follow along by using the same BIOS as me, then you can download it here. Were going to increase the speed of all our GPUs clocks in order to maximize performance. These same steps can also be applied to underclock your GPU, but Im not going to personally do that to mine. First we need to find out which module in our BIOS contain our VBIOS. The VBIOS is just the BIOS for the GPU. So to do this were going to need to use either Everest or Aida64 to extract our current VBIOS from our system. You can download Aida64 here. Now right click on the bottom bar and go to Video Debug | Video BIOS Dump.


This will dump a current version of our VBIOS to vgabios.dmp. Now lets open that with a hex editor. Our VBIOS is stored in one of the modules in our BIOS, so were going to have to determine which one that is. Lets pick a hex sequence in our VBIOS so we can search for it later in the modules. You can download the same hex editor that I use, HxD, here. Im picking this string.

 
Time to search through our BIOS. Unpack your BIOS installer so that you have access to you BIOS rom. Open that ROM with Andys tool. The latest version of Andys tool can be downloaded here. In Andys tool, press the Structure button and extract the DXE Core module. Make sure Decompress Extracted Modules is checked.


Now open that extracted file with a hex editor and search for the hex sequence that we decided on earlier. Looks like it found it at offset 0x29C07C.


To see which module this is in, we have to search for the byte sequence that marks the start of a module, 4D 5A. Then the VBIOSs modules name should be right above that. This byte pattern might appear a few times in the current module, so keep searching until you get to one that looks like it signifies that start of a module.


Thats weird, my VBIOSs module doesnt have a name. Thats because some modules dont have a name. Andys tool has calls them Freeform modules. we can still isolate our VBIOS module by seeing which modules are above and below it, so search above it and below it for 4D 5A.


So these are the two modules that frame the one were looking for. Lets see what that is in Andys tool.


To find out which, I just extracted all of the possible choices and searched through each of them for that hex string we decided on earlier. My VBIOS ended up being in the 35064B31-3D4A-4731-BBC0-A4AA102C8DB4 module. Now time to overclock it. This is where the tutorial gets focused primarily on AMD graphics cards. Im sure there are programs around that can accomplish the same thing for NVIDIA and Intel GPUs.

First were going to determine the maximum stable clock speed for our system. For this were going to use the AMD GPU Clock Tool. You can get it here. This tool allows use to adjust the clocks speeds of our GPU in real time, and by doing this, we can test out speeds without making them permanent. To use it, simply set your new frequencies and press Ok.


Be careful at this part. Use common sense so you dont break you GPU. Id recommend you start off by increasing your core clocks speed by 50 MHz at first, then do 10 MHz increments after that. I wouldnt suggest you change the voltage unless you know what your doing. Also run a benchmark software, such as FurMark, in between increments. This is to make sure that your system can handle the new speeds without any problems. You know your past you max stable frequency when your graphics driver crashes or when your stress test score starts to decrease. Id then lower this frequency by 5 - 10 MHz to get your stable, maximum value. Now repeated this same process for the memory clock. You can also test out lower frequencies while your here incase you want to underclock your GPU.

Now lets apply this new frequencies to our VBIOS. In Andys tool, click on the Advanced button. We need to set it so that we can edit modules. These are the options I checked for that.


Now click Done, and at the main menu of Andys tool press Go. And wait for this screen to come up. Now we need to edit our VBIOS module before pressing Ok.


All of our modules are in the DUMP folder created by Andys tool when it open your BIOS. So inside this folder is our VBIOS module which should be named similar to the module we isolated earlier, mine was named 35064B31-3D4A-4731-BBC0-A4AA102C8DB4. To edit our frequencies, were going to use a program called Radeon BIOS Editor. You can get the latest version here. So open your VBIOS module from the DUMP folder with this program. Make sure you open the biggest module with this name because thats the one that actually contains our VBIOS.


Now go to the Clock settings tab to view all the current power states of your GPU. You can edit all of these if youd like, but the important ones are the highest and lowest speeds. These are the ones to edit for over and under clocking.


As you can see, Ive already entered my new values. When your done, press File | Save BIOS and overwrite the existing VBIOS file. Now press Ok on the message from Andys tool. Itll now insert your module into a new BIOS file. Lets test it out. Rename the file produced from Andys tool, mine was named 01448F29_SLIC.bin, to what the original BIOS rom was named, mine was 01448F29.bin. Now run InsydeFlash.exe and hit Start. Wait for it to initialize and press Ok. Itll now flash your newly modified BIOS and restart automatically when its finished. Now your GPU should be utilizing your new frequency. To verify this, simply run FurMark and make sure it displays you new clock speeds.


Here are my benchmark scores before and after the overclocking. Thats a 21% increase in the score! And only a 5 degree Celsius temperature increase.


 Hope you guys get as good of results as I did. Thanks for reading!

Available link for download