Overclock.net banner

Polaris Bios Editing ( RX5xx / RX4xx )

2M views 6K replies 688 participants last post by  chris89 
#1 · (Edited by Moderator)

Polaris Bios Editing RX590/RX580/570/560/RX480/470/460
Last update: 12/03/2021

New Drivers Allow modded Bios on RX580/590, RX480 needs "Atikmdag - Patcher" to fix the Code 43 error/Drivers not loading

Atikmdag-Patcher - Bios Enabler - Code 43 Fix
If drivers won't load ( Code 43 )after a bios flash, use this tool. Quote: I've added the BIOS signature check to the pixel clock patcher: AMD/ATI Pixel Clock Patcher

1. Flash Bios. Do not reboot when asked.
2. Run atikmdag-patcher.exe to patch the driver.
3. Reboot.

I haven't tested it with a modified BIOS, so let me know if it works. You can undo the patch by running the patcher again. If you don't need any of the pixel clock limits, you can rename the file to atikmdag-patcher-bios.exe to patch only the BIOS signature check.

RX480 > RX580 Conversion

PBE - Polaris Bios Editor - Versions + Infos
Bios Editors Downloads:

Fan related Values
  • THyst; /* Temperature hysteresis. Integer. */
  • TMin; /* The temperature, in 0.01 centigrades, below which we just run at a minimal PWM. */
  • TMed; /* The middle temperature where we change slopes. */
  • THigh; /* The high point above TMed for adjusting the second slope. */
  • PWMMin; /* The minimum PWM value in percent (0.01% increments). */
  • PWMMed; /* The PWM value (in percent) at TMed. */
  • PWMHigh; /* The PWM value at THigh. */
  • TMax; /* The max temperature */
  • FanControlMode; /* Legacy or Fuzzy Fan mode */
  • FanPWMMax; /* Maximum allowed fan power in percent */
  • FanOutputSensitivity; /* Sensitivity of fan reaction to temepature changes */
  • FanRPMMax; /* The default value in RPM */
  • MinFanSCLKAcousticLimit; /* Minimum Fan Controller SCLK Frequency Acoustic Limit. */
  • TargetTemperature; /* Advanced fan controller target temperature. */
  • MinimumPWMLimit; /* The minimum PWM that the advanced fan controller can set. This should be set to the highest PWM that will run the fan at its lowest RPM. */
Source

Timings Decoding
Quote: Originally Posted by -Vento041-

I recompiled OhGodADecode for windows (32 bit so everyone is happy), all credits goes too @OhGodAGirl.

ohgodadecode.zip 103k.

Navigate to folder in explorer and Shift+Right click and "Open command window here". Run "ohgodadecode.exe" "HEX VALUE" to get the decode output.

example in cmd:

INPUT:
ohgodadecode.exe 777000000000000022CC1C00AD595B41C0570E152DCB7409006007000B031420FA8900A00300000010123A46DB354019

OUTPUT:
TRCDW=13 TRCDWA=13 TRCDR=22 TRCDRA=22 TRRD=5 TRC=65 Pad0=0

TNOPW=0 TNOPR=0 TR2W=28 TCCDL=3 TR2R=5 TW2R=14 Pad0=0 TCL=21 Pad1=0

TRP_WRA=45 TRP_RDA=22 TRP=19 TRFC=151 Pad0=0

PA2RDATA=0 Pad0=0 PA2WDATA=0 Pad1=0 TFAW=0 TCRCRL=3 TCRCWL=7 TFAW32=0

MC_SEQ_MISC1: 0x2014030B
MC_SEQ_MISC3: 0xA00089FA
MC_SEQ_MISC8: 0x00000003

ACTRD=16 ACTWR=18 RASMACTRD=58 RASMACTWR=70

RAS2RAS=219 RP=53 WRPLUSRP=64 BUS_TURN=25

GDDR5 Memory Timings Info
Some infos on GDDR5 timings i found online and in some PDFs by Jedec/Samsung/Hynix/AMD - Still work in progress
Code:
####SEQ_RAS_TIMING####
TRCDW = 13   “Number of cycles from active to write”
TRCDWA = 13  “Number of cycles from active to write with auto-precharge. Same as TRCDW” Good BW uplift???
TRCDR = 24   “Number of cycles from active to read”
TRCDRA = 22  “Number of cycles from active to read with auto-precharge. Same as TRCDR”
TRRD = 5     “Number of cycles from active bank a to active bank”
TRC = 65     “Number of cycles from active to active/auto refresh”

####SEQ_CAS_TIMING####
TNOPW = 0   “Extra cycle(s) between successive write bursts. For debugging purpose only”
TNOPR = 0   “Extra cycle(s) between successive read bursts. For debugging purpose only”
TR2W = 28   “Read to write turn around time”
TCCDL = 3   “Cycles between column commands between banks in the same bank group?”
TCCDS = 5   “Cycles between column commands between banks in different bank groups?”
TW2R = 14   “Write to read turn around time”
TCL = 20    “CAS to data return latency”

####SEQ_MISC_TIMING####
TRP_WRA = 45   “From write with auto-precharge to active”  Good BW uplift???
TRP_RDA = 22   “From read with auto-precharge to active”
TRP = 19       “Precharge command period”
TRFC = 151     “Auto-refresh command period”

####SEQ_MISC_TIMING2####
PA2RDATA = 0   “Read Preamble”
PA2WDATA = 0   “Write Preamble”
TFAW = 0       “Four Bank Active Window”
TCRCRL = 3   EDC READ Latency=CL + CRCRL “During read ,the EDC bundle is returned with-soon after the response data based on TCRCRL”
TCRCWL = 7   EDC WRITE Latency=WL + CRCWL "EDC/CRC checksum Related, similar to TCRCRL"
T32AW = 0      “Thirty Two Bank Active Window”
TWDATATR = 0

####ARB_DRAM_TIMING####
ACTRD = 30
ACTWR = 18
RASMACTRD = 58
RASMACTWR = 70

####ARB_DRAM_TIMING2####
RAS2RAS = 219
RP = 53
WRPLUSRP = 64
BUS_TURN = 25
Row Access Timings: tRC, tRAS, tRCDRD, tRCDWR, tRRDL, tRRDS, tFAW, tRTP
Column Access Timings: tCCDL, tCCDS, tCCDR, tWTRL, tWTRS, tRTW,
Refresh Timings: tRFC, tRFCSB, tRREFD, tREFI

How to Read/Mod Memory HEX Values
I usually prefer to use the "SRBPolaris BiosEditor V3.5" built-in strap editor

"The old way" example (OLD):
Use AtomBiosReader (GitHub - kizwan/ATOMBIOSReader or Download Section) to generate the master list of command and data tables.

Open the generated .txt

Look for (Example) : 001c: a446 Len 0753 Rev 02:02 (VRAM_Info)

a446 : is the start adress
0753 : is the lenght

Open the Bios with an Hex editor , i use HxD (Download Section)

At the beginning of the VRAM_Info section (Text, not in HEX) you will find the memory model/s supported by the bios

.... ...@.a!.......Ce......K4G80325FB.2.Tv:.¢`ÿ..P..c...... ...

only K4G80325FB (made by Samsung > Use Google) in this case, so the memID in the straps is 00

40 0D 03 00 77 70 00 00 00 00 00 00 22 CC 1C 00 31 F6 7E 57 F0 57 11 18 3F CF B6 0D 00 6C 07 01 24 08 14 20 FA 89 00 A0 03 00 00 00 1E 12 3A 46 DB 35 40 19

in case of two memory brand memID 01 and 02 are possible

Example of a 2000Mhz strap

40 0D 03 02 99 90 00 00 00 00 00 00 22 AA 1C 00 F7 F6 7E 4F D0 55 13 19 C6 50 B7 0D 00 6C 06 01 1D 0C 14 20 EA 89 80 AC 03 00 00 00 1E 18 32 38 DB 36 47 19

The frequency is 40 0D 03 > inverted is 03 0D 40 > converted in decimal is 200000 > remove "00" > 2000Mhz strap

02 is the mem ID. In this bios 02 is for Micron set of timings. 01 is the other set. 00 if only one memory is supported

99 90 00 00 00 00 00 00 22 AA 1C 00 F7 F6 7E 4F D0 55 13 19 C6 50 B7 0D 00 6C 06 01 1D 0C 14 20 EA 89 80 AC 03 00 00 00 1E 18 32 38 DB 36 47 19 are the timings of this strap. Like 9-9-9-24 ecc ecc in your system ram.

Try to use tighter straps than stock but keep the last 8 timings from the higher straps(1750-2000 usually,try what's best) the last 8 values helps a lot at high mem clock.

UberMix and Performance Timings
//UberMix v3.4 Beta Possibly stable @2150Mhz
HTML:
777000000000000022CC1C00EF615C44F0590F15300D070A0060070013051420FA8900A0030000001212303FB2354019
//UberMix v3.3 Stable The Best @2100Mhz
HTML:
777000000000000022CC1C00AD615C42F0590F15300D9708006007000B031420FA8900A00300000011112F3FBB354019
//UberMix v3.1 Stable
HTML:
777000000000000022CC1C00AD615C41C0590E152ECC8608006007000B031420FA8900A00300000010122F3FBA354019
//UberMix v3.0
HTML:
777000000000000022CC1C00AD615B41C0570E152DCB7508006007000B031420FA8900A00300000010123A46B9354019
//UberMix v2.3 -Less Extreme-
HTML:
777000000000000022CC1C00AD615B41C0570E152DCB7409006007000B031420FA8900A00300000010123A46DB354019
//UberMix v2.1 -Less Extreme-
HTML:
555000000000000022CC1C00AD615B41C0570E152DCB74090068C7000B031420FA8900A0030000001B11333DC0303A17
v3.x Results-
~242GB/s (~214GB/s Stock) with OclMemBench
1500 - 1625 - 2000 - Custom straps Mix
No EDC Errors Mem@2100Mhz (1000mv IMC) / Core @1350Mhz
Tested with 3DMark ,Valley,BF1,FC Primal,ecc ecc

Performance/Bandwidth Tested with The Witcher 3 in a Heavy Foliage Place in Blood&Wine DLC (Stock-MOD Memory @2100Mhz)
Code:
216GB/s Stock (Needs update)
14200 FireStrike Stock
THE WITCHER 3(Ultra-No HW-AA On) 53fps 1080P Stock
THE WITCHER 3(Ultra-No HW-AA On) 22fps 4K Stock

229GB/s MOD +6% (Needs update)
14500 FireStrike MOD +2.1%
THE WITCHER 3(Ultra-No HW-AA On) 56fps 1080P MOD +5.6%!
THE WITCHER 3(Ultra-No HW-AA On) 23fps 4K MOD +4.5%
An user example:
"RX480 GTR
stock timings

1266/2000 - 198 GB/s
1266/2100 - 210 GB/s

Uber V2.1

1266/2000 - 224 GB/s
1266/2100 - 232 GB/s

1266/2000 with stock timings - Firestrike graphic points: 12953
1266/2000 with uber v2.1 timings - Firestrike graphic points 13643

nearly 700 points increase, it's equivalent of +95-100 mhz on core, a lot"

Originally Posted by -iakoboss7-
last question: so "maxing" the mem timings is better than "maxing" the memory speed in terms of performance?
for example: these memory timings (but stock memory clocks) VS max memory clocks most of our cards can do in average = whats best?
thank you for your help. Quote: Originally Posted by -Loladinas-

it varies by card. Depends on the quality of vram chips themselves and the IMC.
I'm getting more bandwidth from 2125MHz + custom timings, than 2300MHz + stock timings. 241GB/s vs. 234GB/s. And then there's the added benefit of no errors; at 2300MHz I'd start to see slight artifacting.

Hynix - Micron - Elpida not tested by me
Good HYNIX ONLY 8gb - models H5GC8H24MJ and H5GQ8H24MJ
777000000000000022AA1C00B56A6D46C0551017BE8E060C006AE6000C081420EA8900AB030000001B162C31C0313F17

Good Micron MT51J256M3
777000000000000022AA1C0073626C41B0551016BA0D260B006AE60004061420EA8940AA030000001914292EB22E3B16

Good Hynix ONLY 4gb - model H5GC4H24AJ
999000000000000022559D0010DE5B4480551312B74C450A00400600750414206A8900A00200312010112D34A42A3816

Good Elpida EDW4032BAB
777000000000000022AA1C00315A5B36A0550F15B68C1506004082007C041420CA8980A9020004C01712262B612B3715


Source

EDC Errors monitoring
The GDDR5 SGRAM provides error detection on the data bus to improve system reliability. The device generates a checksum per byte lane for both READ and WRITE data and returns the checksum to the controller. Based on the checksum, the controller can decide if the data (or the returned CRC) was transmitted in error and retry the READ or WRITE command. The device itself does not perform any error correction.

EDC errors are they bad?

No necessarily, it means and Error happen inside your board, it has been Detected and Corrected (from these actions Error Detection and Correction). If you see errors it means that you card EDC circuit is working at least... sure 0 error is perfect, but some error is always better than undetected (and uncorrected) errors (that could lead to a crash).

Errors could occurs

when your GPU start to work (frequency change)
when the frequency is too high
when the memory voltage is too low (this might be unchangeable in Polaris card am I right? Confirmation needed...)
when the IMC (memory controller) voltage is too low
randomly (unlikely but can occurs)
when the timings are too tight
current spikes
voltage is not clean enough (can be partially avoided with VRM oc, bios mods needed or third party software like VRMTool, PCB dependent)
....

Anyway, we are talking about errors in the communication between your IMC and your memory chips, the causes could be multiples but the solution is always the same, data resend: what has been corrupted must be resent again and again until it arrives intact.

To many errors are the reason why apparently high "stable" memory OC could perform worse that lower memory OC, the GPU isn't crashing but the errors could be so frequent that you card is waiting more time correcting errors than sending actual data.

Download HWiNFO



The value is shown as "GPU Memory Errors", it counts errors only when the GPU is under load(3D).
Overclocking the video memory can generate invisible errors that most of the time are recovered by the gpu, but this process waste bandwidth and processing power. Is important to find a stable and error-free overclock for the memory. Because of this, you may get more FPS at 2100Mhz than 2150Mhz.

Polaris Memory Overclock Scaling
RX 480 scales nearly perfectly linearly with memory frequency. It is ABSURDLY bound by memory performance:



Anyone who says otherwise is just experiencing driver problems and may not even know it.

I've put hours of work into examining Polaris 10 in both RX 470 and RX 480 clothes. I have even created full curves of memory sensitivity in 200MHz increments from 600Mhz:



You can see that scaling only really stops with the 750MHz GPU and 1600MHz RAM. That would be 2.667GHz RAM clocks for 1250MHz... or 340GB/s. Meaning Polaris 10 needs 33% more bandwidth than it has for optimal performance. I haven't done the math, but I think it would be about 25% faster with that much bandwidth, with no increase in GPU clocks... and almost no change in power usage.
generaleramon said:

Polaris need a lot of Bandwidth even at low Core clock. Performance gains only start to slow down at around 2100Mhz memory (240+GB/s) and 1100Mhz core.
The graph show the gains from memory overclock with fixed 1350-1100-800Mhz core clock.
I ran a few benchmarks (Firestrike, Firestrike Ultra, Firestrike Extreme, Superposition Medium, Superposition Extreme, and Valley Extreme HD) to compare stock timings performance to 3.1v. Core has a mild overclock of 1411MHz. With stock timings I start getting memory errors past 2150MHz, with custom timings same thing happens past 2125MHz. With custom timings visible artifacts appear at 2200MHz in both Superposition benchmark, errors appearing in the millions, using stock timings I probably could've gone past 2250MHz, highest error rate was ~130k in Superposition, but other benchmarks were a a lot more tame, going only up to ~6000, and performance was still slowly increasing. I won't bore you with the details, so here's the chart with results averaged out.

I have, here's BF4 scaling nearly perfectly with memory frequency:


Polaris 10 Voltage Scaling
  • Voltage scaling of my two Reference RX480 (Polaris 10 using 14 nm FinFET manufacturing process). Stable voltage with a Target Temp of 70-75°. The last datapoint is around 1328-1338Mhz.
  • The first card has an ASIC Quality over 80%, the second around 60%.
  • It's clear that Polaris 10+FinFET do not like to clock too high, the voltage scaling is nice and linear up to 1.2Ghz, than a lot of voltage is needed, 1.4Ghz is possible with low temps and/or a good voltage bump. 1.5Ghz is rare and require crazy high voltages.
  • The ASICs temperature sure play a role in all this. My first RX480 can do 1.4Ghz@@1168mv(SVI2 voltage in Bios), but only if kept under 50-55°.

Good Reads/Articles and Infos
Article by Anandtech about the Polaris achitecture in general.
The AMD Radeon RX 480 Preview: Polaris Makes Its Mainstream Mark

Article by Anandtech about "Powertune" of the Hawaii-R9 2xx cards. Not really that different from our cards.
The AMD Radeon R9 290X Review

Article by Anandtech about Fiji-Fury cards.
The AMD Radeon R9 Fury X Review: Aiming For the Top

Article by TPU about Power vs Voltage curve from Fiji, good to understand the relation between the two.
AMD Fury X "Fiji" Voltage Scaling

Introduction To Undervolting And Efficiency on Fiji by tomshardware.com
Undervolting AMD's Radeon R9 Fury For Better Efficiency

ROP / ROPs Bandwith Usage
http://www.humus.name/Articles/Persson_LowlevelShaderOptimization.pdf

How Temperature Affects GPU Performance.
http://on-demand.gputechconf.com/gt...4-how-temperature-affects-gpu-performance.pdf

Voltage vs. Frequency of modern AMD ASICs.
Page 93 - New Zen microarchitecture details

RX480 Memory Overclock analysis
AMD Radeon RX 480 im Test - Hardwareluxx

Power vs. Frequency on a Hawaii GPU.
Page 100 - New Zen microarchitecture details

CPUs Related Articles, but the idea is the same for GPUs.
A Comparison of Intel’s 32nm and 22nm Core i5 CPUs: Power, Voltage, Temperature, and Frequency « Blog
Undervolting and Overclocking on Ivy Bridge

Random Info
-The RX 480’s on-board VRM – voltage regulator – on the high-side is capable of delivering 40 amps from each phase at 125c, for a total of 240 amps. Link
-The VRM mosfets (MDU1511 and MDU1514 on the reference board) are perfectly fine even at 100°C. They are only slightly less efficient at high temperatures. At some point there might be problems because the whole PCB heats up and not all components/ICs are fine with such high temperatures. So removing the heat at its source is the most efficient thing to do.
-Low Temp Help a lot with these cards. Water <50° for High Overclocks and low voltages / Air(Reference Blower) 70-75° is a good target

Quote: [Official] Polaris Owners Club

"RX 480 scales nearly perfectly linearly with memory frequency. It is ABSURDLY bound by memory performance:

I've put hours of work into examining Polaris 10 in both RX 470 and RX 480 clothes. I have even created full curves of memory sensitivity in 200MHz increments from 600Mhz:

You can see that scaling only really stops with the 750MHz GPU and 1600MHz RAM. That would be 2.667GHz RAM clocks for 1250MHz... or 340GB/s. Meaning Polaris 10 needs 33% more bandwidth than it has for optimal performance. I haven't done the math, but I think it would be about 25% faster with that much bandwidth, with no increase in GPU clocks... and almost no change in power usage."

Downloads
HxD Hex Editor
ASUS Unlocked BIOS for RX 480 (1.40 Volt, 225 W TDP) not more available
Display Driver Uninstaller (DDU)
ATOMBIOSReader.zip

BIOS AMD RX480 8GB
ReferenceAMDRX4808GB.zip

XFX RX480 1328Mhz 8GB
ReferenceXFXRX4801328MhzCore8GB.zip

OCL Membench
github.com/duzenko/OpenclMemBench

OCLMembench.zip

Updated AMD/ATI ATIFlash from TPU
Download ATIFlash

Make backup of original bios on video card. Using modded bios will void your warranty. I accept no responsibility for damage from using this information. All efforts are being made to double check information but there maybe errors.

Hex To Dex Converter : Hexadecimal to Binary Converter
 

Attachments

See less See more
7
#2 ·
Mind sharing the hex values and addresses? Since you are bored waiting afterall.

I'very manages to mod a 380x 4gb rom to work on a R9 285 along with using straps taken from a 290 rom. I got the best performance using a 1250 290 strap despite it clocking lower, but I'm willing to try others.

Also I will say I've flashed my 285 bad ... wouldn't boot... about 15 times and always have been able to fix with a 2nd gpu. Morality aside, I know I could flash back to stock and RMA without a problem.
 
#5 ·
Quote:
Originally Posted by ducegt View Post

Mind sharing the hex values and addresses? Since you are bored waiting afterall.

I'very manages to mod a 380x 4gb rom to work on a R9 285 along with using straps taken from a 290 rom. I got the best performance using a 1250 290 strap despite it clocking lower, but I'm willing to try others.

Also I will say I've flashed my 285 bad ... wouldn't boot... about 15 times and always have been able to fix with a 2nd gpu. Morality aside, I know I could flash back to stock and RMA without a problem.
2000Mhz strap is in the A6AA - A6DD block / Lenght 34 (40 0D 03 inverted = 2000)

2000Mhz/2000 Timing
40 0D 03 00 77 70 00 00 00 00 00 00 22 CC 1C 00 31 F6 7E 57 F0 57 11 18 3F CF B6 0D 00 6C 07 01 24 08 14 20 FA 89 00 A0 03 00 00 00 1E 12 3A 46 DB 35 40 19
2000Mhz/1750 Timings
40 0D 03 00 77 70 00 00 00 00 00 00 22 CC 1C 00 10 6A 6D 4D D0 57 10 16 B9 0D 06 0C 00 6A E7 00 14 05 14 20 FA 89 00 A0 03 00 00 00 1B 11 33 3D C0 30 3A 17
 
#16 ·
Quote:
Originally Posted by Cross-Flow View Post

Nice Work
biggrin.gif


Is there anny Chance to flash a 4 GB RX 480 to a 8 GB RX 480?
Have you actually pulled you shroud off and seen 8 physical RAM modules. Otherwise, from what I hear, that was only reviewer's cards that came like that and it had a BIOS switch deactivating 4GB of VRAM. The reference consumer cards should only come with 4 physical VRAM modules.
 
#17 ·
I bought an xfx rx 480 4GB on launch. I replaced the thermal paste and I saw 8 Samsung memory chips. I downloaded an xfx rx 480 8GB bios from the tech power up database but I'm not sure what flash utility I can use. Any help would be appreciated.

Quote:
Originally Posted by BulletBait View Post

Have you actually pulled you shroud off and seen 8 physical RAM modules. Otherwise, from what I hear, that was only reviewer's cards that came like that and it had a BIOS switch deactivating 4GB of VRAM. The reference consumer cards should only come with 4 physical VRAM modules.
 
#18 ·
Quote:
Originally Posted by eparra83 View Post

I bought an xfx rx 480 4GB on launch. I replaced the thermal paste and I saw 8 Samsung memory chips. I downloaded and xfx rx 480 8GB bios from the tech power up database but I'm not sure what flash utility I can use. Any help would be appreciated.
Same thing here, all the memory modules are sitting pretty....waiting to be flashed from a 4GB to an 8GB...but ATIWINFLASH isn't recognizing the card as a Radeon card, lol.
 
#19 ·
Oh wow, that is interesting...I will be paying close attention to this thread.

I also wonder if the chips used for RX 480's are actually the rumoured 40 CU chips, and just have AMD's usual software locks on them to disable 'faulty' CU's, would be pretty cool if something like this actually played out (Wouldn't surprise me, with the trend of the last few generations of cards).
 
#26 ·
Nice! I saw about ~4C lower temps using the coolermaster paste than came with my hyper 212 CPU heatsink.

Compared to my old EVGA GTX 960 SSC 2GB card the system is pulling about 25 more watts under load (reading from my killawatt).

ASRock Z97M Pro4/ i7 4790K @ stock/ 32GB DDR3 1600/ 480 GB SSD/3TB WD for storage

5/31/2015 - 960 GTX SSC - OCZ 500 watt PSU from 2006ish

55 watts on desktop

171 watts on prime95

235 max watts on 3DMark11

205 watts average on FC4 (215 max)

7/3/2016 - XFX RX 480 4GB stock - EVGA 750 watt gold PSU from 2016 (another 8x2 RAM kit to total 32GB)

54 watts on desktop

173 watts on prime95 (max heat)

260 max watts on 3DMark11

230 watts average on FC4 (250 max)

338 watts Furmark plus prime95 (max heat)
 
Top