1. Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

RBE voltage register hacking

Discussion in 'RBE' started by BAGZZlash, Feb 11, 2009.

Thread Status:
Not open for further replies.
  1. BAGZZlash

    BAGZZlash RBE Author

    Joined:
    Mar 9, 2008
    Messages:
    583 (0.25/day)
    Thanks Received:
    357
    Hi @ all!

    It may have come to your mind that there is a new method around enabling you to change your video card's voltages using RivaTuner. For reference, look here or here. The funny thing about this is that I'm already aware of this for a few months now. Problem is that this method needs the card be equipped with a Volterra VT11xx voltage controller chip which is why I wasn't able to make it work with my 3870. So I thought this isn't working at all. The new research showed that the method works with cards that actually have a VT11xx, such as the 4870 or 4870X2 (reference design, at least).

    Long story short: I experimentally implemented this feature into RBE as well. The feature will be enabled just for 4870 and 4870X2 cards for now. You will find the feature at the lower left corner of the clocks settings tab, near the voltage table. There's a button that will open a new window where you can enter the new voltages for the several registers. Please also adjust the voltages in the power play settings to the new values as well.
    If you have a 4870 or 4870X2, are experienced at flashing video cards and the RivaTuner method works for you, I'd appreciate if you'd download the new RBE beta version and tested if the method applied using RBE works for you as well. Please post any experience or bug reports concerning this new feature in this thread.
    However, please be sure to have your boot disk/USB stick or whatever ready as well as your PCI card before trying this.
    This RBE version is not labelled beta, even though it is. If there are no bug reports but users reporting this works, RBE v1.19 will go official just the way it is.

    Okay, here's to the brave: Download the beta and let the testing begin! :)
    Last edited: Feb 12, 2009
    Tatty_One, VuurVOS, bubje and 3 others say thanks.
  2. nafets New Member

    Joined:
    Jul 26, 2008
    Messages:
    611 (0.28/day)
    Thanks Received:
    133
    I will be testing this right away, with my reference HD4870 512MB.

    I'm a big fan of Rivatuner and it's recently discovered voltage adjustment abilities.

    Good stuff, Bagzz!
  3. troyrae360

    troyrae360 New Member

    Joined:
    Feb 2, 2009
    Messages:
    1,129 (0.57/day)
    Thanks Received:
    134
    Location:
    Christchurch New Zealand
    Ok, 1.19, awsum, whats features dose it have above 1.18, i just loaded look very simaler
  4. troyrae360

    troyrae360 New Member

    Joined:
    Feb 2, 2009
    Messages:
    1,129 (0.57/day)
    Thanks Received:
    134
    Location:
    Christchurch New Zealand
    opps, its the voltage regis,
  5. KBD New Member

    Joined:
    Feb 23, 2007
    Messages:
    2,477 (0.92/day)
    Thanks Received:
    279
    Location:
    The Rotten Big Apple
    this is great news. i just started playing with the RivaTuner softmodding method on my reference HD 4870 yesterday and already achieved better overclocking results. Though I never flashed a card before and dont know if i'll have the guts to use a beta but if i muster the courage to do it i'll post results here.
  6. nafets New Member

    Joined:
    Jul 26, 2008
    Messages:
    611 (0.28/day)
    Thanks Received:
    133
    The following gibberish will probably bore and/or confuse you. It's merely a place to put down my results and thoughts so I don't go nuts...

    Preliminary thoughts: Currently I use Rivatuner to set voltages via the "18" register. I expect that using RBE to alter this "18" register will have the same effect. I also expect altering the other three registers (15,16,17) to have no effect. I only have concerns as to what takes priority in setting the voltages in the BIOS, either the "18" register value or the dropboxes for the various Clock info #s, and what a combination of both results in.

    Testing method: Boot into windows. Open up GPU-Z. Monitor VDDC reading while invoking PowerPlay state changing from 2D to 3D and vice versa (done by simple clicking on full folders then empty folders and vice versa, in Windows Explorer).

    ------

    Results from Test group 1:

    5 BIOSes - For all five BIOSes, Clock info #s 00-09 drop boxes are set to 1.263v.
    Test1265.rom - (Test BIOS with altered registers) All four registers set to 1.2625v. Result: Stable, Voltage stays at 1.2625v.

    Test121.rom - (Test BIOS with altered 15 register only) 15 register set to 1.2v. 16,17,18 registers set to 1.2625v. Result: Stable, Voltage stays at 1.2625v.

    Test122.rom - (Test BIOS with altered 16 register only) 16 register set to 1.2v. 15,17,18 registers set to 1.2625v. Result: Stable, Voltage stays at 1.2625v.

    Test123.rom - (Test BIOS with altered 17 register only) 17 register set to 1.2v. 15,16,18 registers set to 1.2625v. Result: Stable, Voltage stays at 1.2625v.

    Test124.rom - (Test BIOS with altered 18 register only) 18 register set to 1.2v. 15,16,17 registers set to 1.2625v. Result: Stable, Voltage stays at 1.2v.

    Test group 1 thoughts: Results were as expected. Stability is fine throughout. Functionality of altering the 18 register is the same as setting Clock info #s 00-09 to 1.203v.

    ------(Further testing to find if separate 2D/3D voltages can be set via registers)

    Results from Test group 2:

    4 BIOSes - For all four BIOSes, Clock info #s 00-09 are set to 1.083v.
    Test111.rom - (Test BIOS with altered 15 register only) 15 register set to 1.2625v. 16,17,18 registers set to 1.2v. Result: Stable, Voltage stays at 1.2625v.

    Test112.rom - (Test BIOS with altered 16 register only) 16 register set to 1.2625v. 15,17,18 registers set to 1.2v. Result: Stable, Voltage stays at 1.2v.

    Test113.rom - (Test BIOS with altered 17 register only) 17 register set to 1.2625v. 15,16,18 registers set to 1.2v. Result: Stable, Voltage stays at 1.2v.

    Test114.rom - (Test BIOS with altered 18 register only) 18 register set to 1.2625v. 15,16,17 registers set to 1.2v. Result: Stable, Voltage stays at 1.2v.

    Test group 2 thoughts: Results are quite odd here. Stability is fine throughout. Firstly, any changes to register values override any changes made to Clock info #s voltage dropboxes. Register values have priority, which I sort of figured would be the case.

    Secondly, in contrast to test group 1, the 15 register's altered value was what the card would be locked in at. When using Rivatuner, I could only change voltages using the 18 register. I am currently rechecking this with Rivatuner.

    ------

    Update: I have rechecked setting voltages via register values with Rivatuner. I also did a bit of brainstorming.

    Re-reading the two guides on changing voltages with Rivatuner, I remembered that when using Rivatuner in any manner to adjust GPU/MEM clocks, PowerPlay is disabled, and the GPU/MEM clocks stay constant.

    When using Rivatuner to adjust only voltages via the register values, you also disable PowerPlay, but only it's automatic voltage changing. GPU/MEM clocks are still free to switch, based on the 2D/UVD/3D settings in BIOS.

    I am hypothesizing that when adjusting voltages via the register values in the BIOS, you also disable PowerPlay's automatic voltage changing. This could be why I'm not seeing any variation in voltages when PowerPlay is active and the GPU/MEM clocks switch from 2D to 3D state and vice-versa. As a result of this I'm guessing that entering different register values for 2D (IDLE) and 3D (LOAD) isn't possible on an ATI card, because only one register value out of the four is used. From what I've seen of Nvidia cards, it is possible to set register values for both 2D (IDLE) and 3D (LOAD), as Nvidia uses a different method of automatically switching GPU/MEM/SHADER clocks and voltages (IE....nothing like ATI's PowerPlay).

    With the following test group of BIOSes I will try and figure which of the four register values is always read (and if it's always the same one) to set the voltage of the video card in 2D/3D, and if the above hypothesis is true or false.

    ------

    Results from Test group 3:

    3 BIOSes (may need more)
    Test101.rom - (Test BIOS with all registers altered with non-standard voltages) 15 register set to 1.2125v, 16 register set to 1.1875v, 17 register set to 1.2375v, 18 register set to 1.225v. Clock info #s 00-09 are set to 1.263v. Result: Stable, Voltage stays at 1.225v.

    Test102.rom - (Test BIOS with all registers altered with non-standard voltages) 15 register set to 1.2125v, 16 register set to 1.1875v, 17 register set to 1.2375v, 18 register set to 1.225v. Clock info #s 00, 03-09 are set to 1.263v. Clock info #s 01, 02 are set to 1.083v. Result: Stable, Voltage changes (finally!) from 1.2125v (2D IDLE) to 1.225v (3D LOAD) and vice-versa.

    Test103.rom - (Test BIOS with all registers set to 1.2375v) Clock info #s 00, 03-09 are set to 1.263v. Clock info #s 01, 02 are set to 1.083v. Result: Currently testing... Cancelled

    Test group 3 thoughts: Results are definetly encouraging! Stability is fine throughout. I've finally figured why I wasn't seeing any variation in voltages in Test groups 1 and 2. I unknowingly disabled PowerPlay's automatic voltage changing by setting the Clock info #s 00-09 dropboxes to the same voltage. Changing the Clock info #s 01 + 02 dropboxes to a different voltage allows PowerPlay to function properly with regards to automatic voltage switching, and the register values are properly read and applied during 2D/3D state switching.

    ------

    Summing it all up:

    Well here is a simple baseline of what I have found is necessary to properly utilize the new Voltage Registers section of RBE.

    1. You must be using an ATI video card utilizing a Volterra VT11xxx digital VRM controller.
    2. Clock info #s 01 and 02 must both have the same voltage settings in the dropbox, and they must be different than what is set in Clock info #s 00, 03-09. As far as I can tell, it does not matter what either group of voltages are as they are overridden by the register values.
    3. Register 15 should be set to your 2D IDLE voltage.
    4. Register 18 should be set to your 3D LOAD voltage.
    5. Currently I haven't found a use for register values 16 and 17. I haven't been able to set anything through them, with either Rivatuner or through the BIOS.

    Things I'd recommend to be changed (if possible):

    1. Adding dropboxes for each of the four registers, with preset proper values. You may enter weird numbers like 1.264623v but the actual voltage will default to 1.2625v. Each step in voltage is 0.0125v. For example, going higher than 1.2625v would be 1.275v, 1.2875v, 1.3v...

    Other than that, I'd say it's a pretty neat feature for RBE. It's fantastic for OC'ers that want more voltage than what's offered by default, and for power savers who are looking for lower 2D IDLE voltages to drop power consumption/temperatures even more than the lowest available in the BIOS. Add to this you don't need any extra software for it to work. It's all automatic. I'm surprised at how well it works. Great job Bagzz. Keep up the good work...

    PS: I'm currently utilizing a BIOS with the settings shown below for a couple of days, to see how stability is and if there are any issues that may arise. I suspect it'll work just fine though. 2D voltage is slightly lower than the lowest available of 1.083v (1.1v in GPU-Z), and 3D voltage is slightly higher than the default of 1.263v (1.2625v in GPU-Z).

    [​IMG]
    Last edited: Feb 12, 2009
    KBD and BAGZZlash say thanks.
  7. BAGZZlash

    BAGZZlash RBE Author

    Joined:
    Mar 9, 2008
    Messages:
    583 (0.25/day)
    Thanks Received:
    357
    Awesome. Thank you, man! :toast:
  8. BAGZZlash

    BAGZZlash RBE Author

    Joined:
    Mar 9, 2008
    Messages:
    583 (0.25/day)
    Thanks Received:
    357
    That might not be valid for all cards. I have BIOSes here for which this is not the case. So I don't see me implement dropdown boxes here. Cool idea, but it might be contra-productive in this case.

    I'm gladly suprised as well. Thanks a lot for your hard work. :)

    You seem to be an experienced empirical researcher. Would you like to write a chapter about voltage register tweaking that could be included into the RBE tutorial?
  9. nafets New Member

    Joined:
    Jul 26, 2008
    Messages:
    611 (0.28/day)
    Thanks Received:
    133
    I don't see why it wouldn't be the same for all cards. The method of arriving at the voltage is based on the same equation for all cards (ATI and Nvidia) that use this register method of changing voltages:

    VID = hexadecimal register value converted to decimal
    VOLTAGE = (VID x 0.0125) + 0.45

    For example. Your 18 register value is 2B (hexadecimal). Converting that to decimal would be 43. This is your VID.

    Entering that in the second equation comes out to a voltage of 0.9875v.

    If the 18 register value was 2C (the next hexadecimal value). Converting that to decimal would be 44.

    Entering that in the second equation comes out to a voltage of 1v.

    Add to that, GPU-Z displays the voltage exactly as I enter it in the register settings (at steps of 0.0125v).

    As far as I know, none of the cards display register values of hexadecimals with more than two positions (IE.... 1.5b22d0e560419).

    There's probably an easier way of explaining it, but I'm very poor at doing easy and simple. I'm also a bit tired now, so I might be missing something. You are obviously more aware than I of the pros and cons of programming in certain features, so I will gladly just accept your decision, as I have no say in the matter anyways. :D

    I'd love to, but I'd just confuse the hell out of everyone. As I said before, I'm not very good at doing short and sweet. I'll see what I can come up with that would be presentable to a less-than-experienced audience...
  10. BAGZZlash

    BAGZZlash RBE Author

    Joined:
    Mar 9, 2008
    Messages:
    583 (0.25/day)
    Thanks Received:
    357
    Woops. I got you wrong in the first place. That formula is valid all the same of course, it's just how the VT11xx is being programmed. This formula is implemented in RBE, of course.
    I was referring to some other thing:
    You see, there are BIOSes for which the registers are set to those values:

    1.1; 1.137; 1.2; 1.327

    for example (this is not an example of an actual BIOS, just for discussion). You see, the differences between the voltages are not all the same. Of course, each one of them is being calculated by the formula given, but how would you know for this BIOS which "default" voltages to offer in some combo boxes?
    Another thing: Imagine the user enters a voltage of, say, 0.999999. The formula says us that this yields 0.999999 - 0.45 = 0.549999. 0.549999 / 0.0125 = 43.99992. This can't be converted to a hex value which is why RBE takes a rounded decimal value of the formula's result, which is 44d in this case = 0x2C.
    In other words: The user can enter anything he wants, RBE automatically makes sure the result is a valid hex value that is as close to the user's input as possible.
    Obviously, the minimal voltage that could be saved in one byte using the formula is 0.45 volts. The maximum is 255 * 0.0125 - 0.45 = 2.7375. Go ahead and try to enter 3 volts into the register boxes in RBE and see what happens. :cool:

    That should be no problem. Long and sour is more preferred over short and sweet by most users anyway which includes myself. Additionally: Did you read the tutorial? I'm sure you can write a text which is way better that what I produced there, honestly! :roll:
    nafets says thanks.
  11. W1zzard

    W1zzard Administrator Staff Member

    Joined:
    May 14, 2004
    Messages:
    14,632 (3.94/day)
    Thanks Received:
    11,363
    BAGZZlash, icq me when you see this. i think i have the answers you are looking for :)
    BAGZZlash says thanks.
  12. VuurVOS New Member

    Joined:
    Mar 20, 2008
    Messages:
    306 (0.13/day)
    Thanks Received:
    74
    Tested the registers and found something nice :). The lables in the voltage lable are linked. So if your chance register 15 it will change voltage lable 0.

    register 15 -> voltage lable 0 (1.083v)
    register 16 -> voltage lable 1 (1.143v)
    register 17 -> voltage lable 2 (1.203v)
    register 18 -> voltage lable 3 (1.263v)

    With ATT you can switch between those registers/voltage lables. Other tip. Never do any 1.1v under volting because it will cause artifacts since the GDDR5 ram controller will cause corruption if you clock the memory too high.
    BAGZZlash says thanks.
  13. BAGZZlash

    BAGZZlash RBE Author

    Joined:
    Mar 9, 2008
    Messages:
    583 (0.25/day)
    Thanks Received:
    357
    That seems pretty obvious, but might be too simple. For instance, look at this (stock) BIOS:

    [​IMG]
  14. nafets New Member

    Joined:
    Jul 26, 2008
    Messages:
    611 (0.28/day)
    Thanks Received:
    133
    I'm guessing that's one of the original voltage locked HD4870 BIOSes. Way back when, before RBE had the "enable superior PowerPlay" support, you were stuck at 1.2625v with that BIOS, regardless of what you set in the Clock info voltage dropboxes.

    I'm assuming you could now use the Voltage registers section, with that older BIOS, to change 2D and 3D voltages...

    The mystery is solved as to how the voltage was locked at 1.2625v, even though there was a selectable (though useless) voltage range. They just modified all four registers to the same value. Something which we could not see or modify at the time. Sneaky...
    BAGZZlash says thanks.
  15. BAGZZlash

    BAGZZlash RBE Author

    Joined:
    Mar 9, 2008
    Messages:
    583 (0.25/day)
    Thanks Received:
    357
    I see. Yeah, that should explain it. It would also correspond to the information W1zzard gave me (which basically also was that there is nothing special about the register selection).
  16. W1zzard

    W1zzard Administrator Staff Member

    Joined:
    May 14, 2004
    Messages:
    14,632 (3.94/day)
    Thanks Received:
    11,363
    basically the voltage controller has 4 input pins. the pin that is high, selects which voltage register is the one deciding the current output voltage. there is no inherent order to them. you could put
    1.0 2.0 3.0 4.0 volts into the registers or 4.0 3.0 2.0 1.0 .. it only matters that whatever drives the input pins (in our case the gpu) knows which pin to drive for which voltage (or at a minimum which pin to drive for a higher voltage, if absolute values do not matter)
    BAGZZlash and nafets say thanks.
  17. VuurVOS New Member

    Joined:
    Mar 20, 2008
    Messages:
    306 (0.13/day)
    Thanks Received:
    74
    Accualy there is an order. Low to higher voltage. Otherwise I could overclock better with the modded register 15. Even with 1.34 volts at register 15, I couldn't get 100% artifacts free passed the normal clocks. Powerplay is sometimes switching even when you force it with ATT to stay at register 15.
  18. W1zzard

    W1zzard Administrator Staff Member

    Joined:
    May 14, 2004
    Messages:
    14,632 (3.94/day)
    Thanks Received:
    11,363
    i was referring to just the voltage regulator design when you go out and buy one for your own application. if ati implements it that way thats nice for them but that doesnt mean it has to be like that on all cards.
  19. BAGZZlash

    BAGZZlash RBE Author

    Joined:
    Mar 9, 2008
    Messages:
    583 (0.25/day)
    Thanks Received:
    357
    However, I added this passage to the tutorial. Users should simply use Register 0x15 for undervolting and 0x18 for overvolting and everything should be fine:

    W1zzard, did you recieve my eMail I sent you this morning? :)
  20. W1zzard

    W1zzard Administrator Staff Member

    Joined:
    May 14, 2004
    Messages:
    14,632 (3.94/day)
    Thanks Received:
    11,363
    yep got the mail. will post the new version after i finish my döner kebab :)
    BAGZZlash says thanks.
  21. BAGZZlash

    BAGZZlash RBE Author

    Joined:
    Mar 9, 2008
    Messages:
    583 (0.25/day)
    Thanks Received:
    357
    Thanks. I hope your Döner was nice. :)

    At this place also: Thanks to everyone who contributed during the last few days' research progress. I appreciate it!
  22. Ben_UK New Member

    Joined:
    Feb 8, 2009
    Messages:
    49 (0.02/day)
    Thanks Received:
    1
    Location:
    Solihull, England, UK
    Hello,

    Firstly I want to thank everyone for their input with this site, its a fascinating read and a credit to the community, especially W1zzard and BAGZZlash who put so much time and effort into these projects.

    I am using a Sapphire 4870 1GB (Non-standard) board.

    In the past, I have learned that adjusting the voltages for this card is not possible, I just wonder if its possible now with this latest alteration?
    You will have to forgive me, I have PC knowledge, just not much when it comes to voltages, voltage registers, look up tables etc, I know that high voltage can kill PC components, thats about it.

    I have included a screendump of the BIOS from my 4870 1GB whereby I can seem to adjust the voltage registers... Is this method likely to work, as I dont understand what the 15,16,17,18 fields denote. I have read the guide and the portion which BAGZZlash added to it, but am still a little hazy.

    [​IMG]

    Any help or advice would be greatly appreciated.

    Thanks,

    Ben.
  23. BAGZZlash

    BAGZZlash RBE Author

    Joined:
    Mar 9, 2008
    Messages:
    583 (0.25/day)
    Thanks Received:
    357
    From the values of your registers, it seems likely that you can change your voltages. Try increasing voltages in little steps and watch your temperatures very carefully.
    Registers 0x15 to 0x18 simply denote the address of the values in the chip. Usually I would have denoted them 0 to 3 or 1 to 4, but since the 0x15 to 0x18 notation has become popular during the research for the RivaTuner method... :rolleyes:
  24. Ben_UK New Member

    Joined:
    Feb 8, 2009
    Messages:
    49 (0.02/day)
    Thanks Received:
    1
    Location:
    Solihull, England, UK
    So the 0x15 to 0x18 relates to the 4 voltage levels selectable?

    So on my card they are:

    0x15 = 1.083
    0x16 = 1.143
    0x17 = 1.203
    0x18 = 1.263

    So, if I change the reading for 0x18 (1.263) to something like 1.283 within RBE then obviously flash the card. When I come to select the voltage in ATT, I presume the highest will still say its still 1.263, but will it in reality be 1.283?
  25. nafets New Member

    Joined:
    Jul 26, 2008
    Messages:
    611 (0.28/day)
    Thanks Received:
    133
    Before you mess with your BIOS, I highly recommend you download the latest Rivatuner and test out whether or not your card's voltages can be softmodded. Both methods work the same way, but with Rivatuner it's not permanent.

    It's much easier to do via Rivatuner, rather than editing your current BIOS, and flashing it, for just simple testing.

    Just follow the fairly simple guide here, for setting voltages with Rivatuner. If it doesn't work with Rivatuner, it won't work with your BIOS and RBE.

    Make sure you do not have Ati Tray Tools running in the background (just disable it altogether) while you have Rivatuner running. It may or may not complicate your voltage testing...

Currently Active Users Viewing This Thread: 1 (0 members and 1 guest)

Thread Status:
Not open for further replies.

Share This Page