Wednesday, August 7, 2013

Unsuccessful Unlock: Sapphire 6950 HD

Back when I purchased my current graphics card, a Sapphire 6950 HD, I was intrigued by the possibility of being able to access the additional shader units locked out by AMD as part of the binning process. At the time, I had read about the possibility of AMD switching from disabling the shader units via the BIOS to physically cutting the electrical connections with a laser, so I understood that I wasn't guaranteed success. Turns out that my card was laser cut after all, which is disappointing. However, I did learn about GPU BIOS modding, got acquainted with some useful tools and made a couple of interesting observations during the process that I'd like to share.


Following some research, I found there were two relatively simple methods that could be followed to try and access the additional shader units:

Initially, I thought the first option sounded the easiest to achieve and came with the added advantage of clocking the memory higher as well. However, after some further reading, it seemed that this should only be attempted with cards based on AMD's reference 6950, causing issues on cards that were not. So, I opted for the BIOS modification approach, for which there are many useful tools and guides that helped me along my way:

  • Unlocking Radeon HD 6950 Tested - HWLab (about half-way down they detail the instructions for modding the BIOS).
  • GPU-Z - tool to identify GPUs in a system, report their configurations and write out a copy of the BIOS to a file.
  • Mod_BIOS_HD_6950 - a small script that specifically only unlocks the additional shaders in a downloaded 6950 BIOS.
  • HD 6950 to HD 6970 Flashing Tools - the ATI WinFlash tool bundled can be used to flash a modified BIOS to a 6950.
  • Radeon BIOS Editor (RBE) - utility for viewing and tweaking the configuration of a BIOS.

While the HWLab article I mention does a great job of detailing the steps needed to unlock the shaders, I felt it necessary to include the basic method I intended to followed here, for completeness:

  1. Change the BIOS switch to position 1.
  2. Use GPU-Z to dump out the current BIOS to disk.
  3. Use the Mod_BIOS_HD_6950 tool to modify the shader parameter in the BIOS image.
  4. Flash the modified BIOS back to the 6950.

My first, if minor, issue was simply locating the BIOS switch on my Sapphire card. I'd performed many a Google Image search to see where I should be looking but at first glance I couldn't see it. It can be found near the CrossFire connector on most 6950 cards, but as you can see from this shot taken inside my case, it's not immediately obvious:

I had to look extremely closely to see the switch and had to use a small screwdriver to change it's position. Here's a better close up pic I managed to take:

The real issue that I ran into was that when I tried to mod the BIOS I obtained from my card, the Mod_BIOS_HD_6950 tool simply output the following message:

Given that the BIOS image was essentially a binary file, I assumed that the mod tool was simply scanning for a particular pattern (byte sequence) within the data and changing some values if found (a binary search and replace). The fact that my BIOS didn't have this byte sequence intrigued me, so I grabbed the RBE tool and loaded the (unmodified) BIOS file up to check it out. I was surprised to see the following:

It appears that the Sapphire card shipped with a pre-modded BIOS that could be accessed simply by changing the BIOS switch position, it's just a shame my card had a physically disabled GPU that couldn't take advantage of it! Just to confirm this, I shut down my PC, flipped the BIOS switch back and took a look at the BIOS I'd been running with previously. Sure enough, that BIOS image was completely unmodified:


So, while not the ideal outcome, I can't be too disappointed; I was essentially trying to get something for nothing, or at least minimal time investment. I can't say I've ever been let down by the card in it's stock configuration, this was more of an experiment to see what was possible. I've learnt new things in the process, which is always amazing and I hope some of this post proves interesting if not useful to others.

This whole experience did get me thinking though: what would be my next steps to adding some graphical performance to the system? So far, I've come up with three possibilities:

  • Simply overclocking the card using the Sapphire TriXX utility - this would be pretty easy to do, is free, but likely to produce the smallest improvement.
  • Buying another Sapphire 6950 HD and configuring the two cards in CrossFire - seems this card is difficult and expensive to buy new these days, which is to be expected, but can be found for around GBP 100.00 on Ebay. However, CrossFire has been known to complicate matters: game profiles and frame pacing on the software side, with the additional power requirements and heat dissipation to think about at the hardware level.
  • Upgrading the GPU to something more modern - the 6000-series GPUs are getting on a bit now, especially after Nvidia's recent release of it's 700-series line up. However, I would probably be looking at around GBP 200.00 if I opted to upgrade. I suspect this is a little out of my price range for now and perhaps I'll wait and see what AMD's rumoured 9000-series cards are like.

I'll most likely go ahead with the overclocking option for now, as my card seems to hit around 55°C when gaming, so there's potentially some headroom there. I'll be sure to post my experiences once I've got something to report!