Today AMD released their Radeon HD 4830 card which is based on the RV770 GPU which is also used on the HD 4850 and HD 4870. In order to properly position the HD 4830, AMD reduced the number of shaders in the RV770 GPU core from 800 to 640.
The locking mechanism relies on fuses inside the GPU, or on the substrate - a mechanism similar to Intel's multiplier locking. It is not reversible as far as I know. It is however possible to temporarily disable _additional_ fuses to reduce the shader count even further.
When I added shader count reading support to GPU-Z yesterday, I noticed some contradicting numbers. I have two HD 4830 samples here: one card from AMD, and one card from PowerColor. Both cards are reference spec HD 4830s, both are supposed to have a shader count of 640 - just like all other HD 4830 cards.
The GPU-Z readings however showed that the AMD card had 560 shaders and the PowerColor card had 640. How is that possible? If 80 shading units were missing, then this could mean a performance hit of up to 10%.
In order to go from 800 shaders to 640 shaders, AMD disables two SIMD units.
The original RV770 has 10 SIMDs (10 [SIMDs] * 16 [Pipes] * 5 [ALUs] = 800 Shaders). With just eight SIMDs you will get 640 shaders (= 8 [SIMDs] * 16 [Pipes] * 5 [ALUs]). The information which SIMDs are disabled is stored inside a GPU register that can be read back, and is basically a bit mask of the disabled SIMDs.
For example, on the PowerColor HD 4830 that bit mask is 10 0000 0001. Ten bits, with two bits being 1 (=disabled). This leaves us eight SIMDs, resulting in 640 shaders. On the HD 4830 from AMD the bit mask is 00 0100 0011. But hey, that's only seven SIMDs which gives us 560 shaders. Truly strange.
So let's try to confirm that the two cards really have different shader counts, which should be visible in the performance of these cards.
- I first tested if this is some kind of power management feature which disables shaders when the card is idle. This is not the case. The shader count is constant under idle and load using Catalyst 8.10.
- Using 3DMark06 Perlin Noise (SM 3.0) I got the following results:
AMD 4830 (560 SP) = 219.8 FPS
PowerColor 4830 (640 SP) = 250.5 FPS
HD 4850 @ 4830 clocks (800 SP) = 309.8 FPS
It is clearly visible that there is some huge difference between all three cards, while there should only be a difference between the HD 4850 and the two HD 4830s.
In some further testing I took the reference design HD 4850 and gradually reduced the number of SIMDs while running 3DMark06 Perlin.
As you can see, the FPS changes linearly with the number of shaders in the GPU. Please note that this is data from some real empiric testing. All those ten tests were performed with a real running HD 4850 (running at HD 4830 clocks for better comparability), without reboot in between, shader count was changed on the fly.
If you look back up at the first graph, you can easily see that the AMD 4830 result matches the result I got with 560 shaders and the PowerColor 4830 matches 640 shaders.
This test confirms that 3DMark06 Perlin is a valid test to determine the relative shader performance of a RV770 card. It also confirms that the register contents reflect the active number of shaders and that AMD's sample has the shading power of a HD 4850 with 560 shaders and that the PowerColor card is equally as fast as a HD 4850 with 640 shaders.
Concluding, we can see that AMD's sample card does not feature the intended shader count of 640, but comes merely with 560 shaders.
What it means for you?
So what does that mean for you, the end user?
It is unknown how many of these cards AMD sent out to reviewers, so the reviews on other sites could be affected. I only talked to one other reviewer with a HD 4830 and he had also received a 560 shader card from AMD.
Should those cards make it into retail channels you could potentially end up with a card that is quite a bit slower than intended (up to 10%). It is also unknown if only AMD's sampling is affected or if AMD board partners also sent out cards with 560 shaders.
That's why I ask all reviewers who tested the HD 4830 to download this
build of GPU-Z and verify if their card really runs with 640 shaders. Until a statement is made by AMD (I notified them of course), buyers should also test their cards to verify they bought what was promised to them.
I am also 100% certain that shipping cards with 560 shaders was not intended by AMD at any time. Why should they make their own product slower?
Feel free to post the results of your own cards in the comments of this article so we can get an impression of how widespread this problem is.
Manufacturer Cards Tested 640 SP 560 SP
AMD 8 0 8
Sapphire 2 2 0
PowerColor 2 2 0
How to FixAdded: Oct 23, 2008
Grab this BIOS from our VGA BIOS Collection and flash it to the card using WinFlash or ATIFlash.
This BIOS is designed for the AMD reference design samples that were sent out with 560 shaders, there is no reason to flash it on cards from other manufacturers that already have 640 shaders.
Statement by AMDAdded: Oct 24, 2008
"AMD has identified that a very limited number of ATI Radeon™ HD 4830 boards have shipped with an incorrect BIOS which may impact performance. This is in no way hardware related, and an updated BIOS fully resolves the performance limitation.
AMD has provided its board partners with the updated BIOS. Please contact your board manufacturer for instructions on updating the card BIOS."