Desktop Athlon XP Multiplier Adjustments on the fly from Windows!

As a power user, I always wanted to be able to change clock frequency of my processor. I began overclocking in the era of Pentium class processors. I tried nearly everything including undocumented DIP switch settings and the voltage much higher than absolute maximum listed in datasheets.

But as times go, the performance of processors is better a better, thus with a new processor I do not need to overclock much. Only mediocre overclocking using default or even lower than that voltage allows for some increase of performe while keeping power consumption - and thus noise generated by CPU cooler - low.

I first heart of AMD's Cool'n'Quiet technology implemented on Athlon 64 CPU's sometimes in August 2003. I was really pleased with the idea to bring PowerNow! to desktops, reducing core clock frequency and voltage while not requiring performance. When I first saw Athlon 64 system stopping it's CPU cooler's fan while idle, I was so excited, I began to think of ways to enable PowerNow! on a regular (and cheap!) Athlon XP processor.... Athlon 64 is too pricey right now and performance jump from my XP running at 2000 MHz with FSB 200 MHz (400 effective) would not be so much to compensate for the money spent.

Multiplier adjustments on mobile systems

I had an idea it would be possible to change multiplier on the fly, because mobile Athlon XP processors do it just fine.

Also, since September 2003 this year, I began project called CPUMSR - a program that would allow to change processor settings usually hidden from end user. One feature of this program is the ability to change multiplier and voltage on the fly by changing micro-memory called Model Specific Register. This feature is available on all K8 class processors for socket 754 (eg. Athlon 64s) and on mobile K7 class processors.

Now little explanation how it works. Mobile processor has something called P-States (Performance States, Power States). Those are frequency-voltage combinations CPU is able to operate at. There is an example taken from Mobile Athlon 4 datasheet:

As you can see from this table, the processor is able to operate at higher frequency with higher voltage only. However, lower frequency is possible with both higher voltage and lower voltage. It depends on driver (or your settings) what will be used.

On notebook systems, BIOS has this frequency-voltage table integrated and loads it to memory. Combinations of frequency and voltage depends not only on processor itself but also on motherboard voltage regulator, chipset and other components that may cause trouble when changing multiplier or voltage. I will explain it in detail later.

When you run Windows OS, there is PowerNow! driver that takes frequency and voltage combinations information BIOS loaded to memory and begins transitioning to them depending on CPU usage.

Changing it manually

I said my program is able to change frequency and voltage on mobile Athlon processors. To be precise, it supports following CPUs:

  • Mobile Athlon 4 - Palomino core, model 6 (CPUID 660, 661 or 662)
  • Mobile Duron - Morgan core, model 7 (CPUID 670 or 671)
  • Mobile Athlon XP - Thoroughbred core, model 8 (CPUID 680 or 681)
  • Mobile Athlon XP-M - Thoroughbred or Barton core, models 8 and 10 (CPUID 680, 681 or 6A0)

Palomino was the first AMD processor to support PowerNow! technology. How this technology works? There are two Model Specific Registers in the processor that have something to do with multiplier and voltage.

The first one, register number C0010042, tells the programmer actual, startup and maximum voltage and multipliers:

CPUMSR displays this info on Frequency & Voltage Info page. This is an example taken on Mobile Athlon XP-M 2000+ processor (1666 MHz max. frequency, FSB 133 MHz).

The second register, number C0010041, controls changing multiplier and voltage.

You can change voltage and multiplier to a any value lower than or equal to maximum. After selecting multiplier and voltage, clicking on Set button begins transition. Processor transitions voltage (or multiplier), wait specified number of FSB clock cycles (stabilization cycles), then return back to operation state. The whole transition is a question of microseconds. Of course, you can select as low as 1 system bus clock cycle to stabilize voltage regulator and CPU's clock generator, but that way it's unlikely transition will be successful. Recommended value is 10000 stabilization cycles with FSB frequency of 100 MHz.

Mobile processor on desktop system ?

With this knowledge and CPUMSR on hand, I was wondering if it would be possible to run Mobile Athlon XP-M in desktop. The problem of desktop Athlon XP is it lacks required registers C0010041 and C0010042. Hence the multiplier can not be changed on desktop Athlon XP processors!

Soon before test of multiplier adjustments using CPUMSR on notebook, I noticed one important thing - mobile AMD Athlon processors have different meaning of VID codes (VID = voltage identification):

That means if you put desktop CPU with 1.500V default voltage to notebook system, motherboard will supply it with 1.300V only. And if you put mobile CPU with 1.100V default voltage to desktop system, motherboard will supply it with 1.275V. Therefore, putting mobile CPU to desktop system and vice versa is problematic.

The other problem with mobile CPU was that no-one offers such a CPU in my country (Czech Republic). I asked AMD representative and he told me it's a problem to obtain one.

Looking at the bridges

I wasn't able to obtain mobile Athlon XP processor for testing. So I began to think of one theory - AMD manufactures only one die, then they change it to the brand they want. It was well known Athlon MP (multiprocessing version) is nothing more than just Athlon XP processor with closed the most right L5 bridge on the packaging.

The theory was that by changing some bridges, it would be possible to hardware enable missing Model Specific Registers on a regular desktop CPU! That would maybe allow for multiplier and for voltage adjustments.

Bridges - what they do

I made notes of what I knew about Athlon XP bridges and also searched for some photos of mobile Athlon XP processors. Here are results:

(This would be only for Thoroughbred and Barton cores. I don't have Palomino and haven't done any research of those type of CPUs.)

This is a photo of Athlon MP processor.

This was the only photo of Mobile Athlon XP that was of some use.

I compared those processors, looked into datasheets, looked on Internet for some useful information. Also, I knew quite a lot about multiplier and voltage settings, because I wrote few articles to online computer magazines about those - Complete Athlon XP multiplier decoding is one example (it is in Czech). The Fab51 page (link 2) was also useful information source, I found here info about L2 and L9 bridges.

In few hours I had an idea of how could it work.

Following bridges have those meanings:

Bridge Desktop Mobile
L1 Connect L3 bridges to in datasheet undocumented processor's pins.
L3 Tells the processor multiplier it runs at. L3 bridges can be overriden from motherboard if L1 are connected. Startup multiplier. L3 bridges can be overriden from motherboard if L1 are connected.
L12 The most left and third from left are FSB frequency detect values. Those are connected to FSB_Sence pins. See Fab51 for details.
L5 Product ID bridges. I will discuss those later.
L9 Connect L2 bridges to in datasheet undocumented processor's pins.
L2 Sets L2 cache size. Thoroughbred Athlon XPs and Barton Athlon XPs have all those connected, Applebred and Thorton have some of those cut. Those can be overriden from motherboard if L9 are connected. See Fab51 for more info.
L6 no use Maximum Multiplier
L8 no use Maximum VID
L11 Tells the motherboard voltage it runs at - connected to Voltage ID (VID) pins. Startup VID

The most important for desktop to mobile conversion are bridges L5 and also VID a multiplier ones.

L5 allows to make an Athlon MP and Mobile Athlon by enabling return values of CPUID instruction (in case of MP) and enabling of some Model Specific Registers (in case of Mobile Athlon).

How to create Athlon MP

On L5 bridge, the most right bridge defines if CPU is multiprocessing capable. If it is cut, then CPU does not support this feature, if it is not cut (= it is closed) then it does support it. I connected this bridge and my program CPUHeat told me this:

See number 19 - it's supported. Now I have Athlon MP from my original Athlon XP.

How to create Mobile Athlon (desktop to mobile change)

And now the magic - how to be able to make Mobile Athlon from a desktop part. Just connect the second bridge from the right on L5:

By connecting this bridge, you will enable Model Specific Registers C0010041 and C0010042. That may allow for multiplier adjustments on-the-fly. You can connect bridges by silver paint or with some luck by pencil. For pencil connection first smoothly scratch the surface around bridges by knife. Be very careful not to damage packaging.

Before this change, CPUMSR told me my processor DOES NOT support multiplier and voltage adjustments:

After change, CPUMSR tells my processor DOES support multiplier and voltage adjustments:

By doing both changes (XP to MP, desktop to mobile), I created Mobile Athlon MP processor - a CPU that even AMD doesn't sell. It is capable of working in dual-CPU motherboard and it able to do P-States transitioning.

Of course, it's on you what modification will you use, if both or only one.

Important - possible problems with CPU detection!

Changing Athlon XP to Athlon MP would not cause you any trouble. Those CPU's are nearly identical so if your motherboard supports XP, then it also supports MP.

However, changing desktop to mobile can cause some trouble. There may be some issues. First, BIOS may refuse to work with CPU it doesn't know (Mobile Athlon MP: that is if you do XP to MP and also desktop to mobile mods) or with CPU it doesn't support (Mobile Athlon XP: desktop to mobile). My motherboard, EPoX EP-8KRA2L with KT600 chipset, doesn't know Mobile Athlon MP and "sometimes" it knows Mobile Athlon XP. Why sometimes? Mobile Athlon XP processors have startup multiplier of 5x (FSB 100 MHz versions) or 6x (FSB 133 MHz versions) and my motherboard shows at POST CPU is Mobile Athlon only when I set multiplier to 5x or 6x. In other cases it just shows AMD K7 processor. The same applies to EPoX with KT333 chipset.

Personally, I do not expect any motherboard to fully recognize Mobile Athlon MP, since this CPU does not exist. Some motherboards may recognize Mobile Athlon XP, but there may be some troubles. The problem is motherboard somehow sets MSR values during boot. At least on my motherboard it sets them different while it recognizes CPU is not an ordinary desktop part. Name String is programmed wrongly, Halt and Stop Grant divisors are set differently.

The second problem is voltage.

On this photo of Mobile Athlon XP I can recognize L11 being Startup Voltage and L8 being Maximum Voltage. On a notebook, system is powered using startup voltage and startup multiplier. Then the BIOS is required to make transition to maximum voltage and maximum multiplier. Since desktop motherboard usually do not have required circuits to change voltage on the fly (eg. pins connecting to L8 are not connected on motherboard), this won't cause problems. But if your motherboard has required circuits and BIOS is also capable of recognizing mobile CPU and does P-States transitions, there may be serious problem with over-voltage. The problem is on desktop CPU L8 bridges are all closed, therefore defining maximum voltage possible (taking desktop VID codes it is 1.85V, taking mobile VID codes it is 2.00V). If the BIOS changed voltage to that level, it would be possible to damage CPU. So once again - if your motherboard supports on-the-fly voltage adjustments, your BIOS recognize your CPU as mobile one and the BIOS also does transition to maximum voltage after POST, then do something with it - modify BIOS not to do P-State transitions, cut some of L8 bridges according to VID codes.

Maximum multiplier and voltage limitations

Setting multiplier and voltage by software is limited to maximum voltage and maximum multiplier values that are defined on bridges. Those are set on L6 (Maximum Multiplier - on desktop part set to 11x) and on L8 (Maximum Voltage - on desktop part set to 1.85V / 2.00V).

If you want to change maximum multiplier and / or maximum voltage then you have to cut / close bridges on L6 and / or L8. Please use Fab51 page for appropriate configurations. Multiplier codes for L6 are the same as those for L3 and voltage codes are the same as for L11. I was able to increase maximum multiplier to 24x by cutting all L6 bridges by a blade.

It is quite easy to cut them, just put the blade between bridges and easily apply force. Do not do severe electric current to disconnect bridges because that may damage your CPU.

Chipset requirements

Changing multiplier / voltage on the fly causes FID_Change special cycle to be driven on FSB. After change processor counts selected number of stabilization cycles and sleeps. This is for clock generator / voltage regulator stabilization. The FID_Change special cycle is used to communicate processor operating frequency to the northbridge during software controlled processor core voltage and frequency transitions. Chipset support is required for P-State transitions to work!

You do not really need chipset designed for notebooks. At least VIA KT333 and VIA KT600 chipsets support P-States transitions. But northbridge has to be properly configured.

(click for larger image)

On VIA KT600 there is in register D5 bit 2 that defines if northbridge should recognize FID_Change special cycle. For P-States transitions to work, set this bit to one.

I don't know if other chipsets than KT333 and KT600 support FID_Change but since VIA chipsets are often used in mobile and desktop systems with no design difference, this signal should be supported on all VIA chipsets that were designed after first Mobile Athlon 4 processor was launched back in summer 2001. It may also be supported on SiS chipsets.

Since I do not have VIA, SiS nor nVidia chipset datasheets, I won't tell you what bits needs to be adjusted. But I expect settings on VIA KT400, KT400A and derivates with integrated graphics to be the same as those for KT600. Often the bit would be set correctly by motherboard manufacturer - this was the case of two EPoX motherboards I tested multiplier on-the-fly change on. You can verify if the bit is set to correct value by running excelent diagnostic program called HWiNFO32 that lists north bridge settings.

How do set new frequency

Now that processor and system are prepared for P-States transitions, you only need to set new values. Start CPUMSR, select Frequency & Voltage Control, then select new value of multiplier. If your motherboard support on-the-fly voltage transitions you can select new voltage as well (you may need to use this VID codes table and translate mobile voltage to desktop VID codes - it depends on motherboard VID codes implementation).

Before you click on Set button, select required number of stabilization cycles. Higher value causes longer transition time while lower one tends to be unstable. Recommended value is 10000 for 100 MHz FSB and 20000 for 200 MHz FSB. Me works fine even 5000 and 200 MHz FSB. You have to try few times. Remember to use software like Prime95 to test stability.

Please understand there are limitations in multiplier selections. Few multipliers just don't work. I found on my system following to work / not to work:

  FSB 100 MHz FSB 133 MHz FSB 166 MHz FSB 200 MHz
3.0x ok crash crash crash
4.0x ok ok crash crash
5.0x ok ok ok ok
5.5x ok crash ok ok
6.0x ok ok ok ok
6.5x ok ok ok ok
7.0x ok ok ok ok
7.5x ok crash ok ok
8.0x ok crash ok ok
8.5x ok crash ok ok
9.0x ok ok ok ok
9.5x ok ok ok ok
10.0x ok ok ok ok
10.5x ok ok ok ok
11.0x ok ok ok ok
11.5x ok ok ok ok
12.0x ok ok ok  
12.5x ok ok ok  
13.0x ok ok ok  
13.5x ok ok ok  
14.0x ok ok ok  
15.0x ok ok    
16.0x ok ok    
16.5x ok ok    
17.0x ok ok    
18.0x ok      
19.0x ok      
20.0x ok      
21.0x ok      
22.0x ok      
23.0x ok      

If multiplier works or not, it depends also on FSB frequency and it may be system specific.

Known limitations

On majority of motherboards it is not possible to change voltage on-the-fly because of lack of required motherboard SoftVID circuits.

Chipset may not support FID_Change special cycle, therefore preventing P-States transitions.

Some of newer CPUs have different packaging system where bridges seems not to be connected to CPU core. On such processors it may be impossible to create mobile part out of desktop one. That would also prevent P-State transitions to work.

Setting Halt and Stop Grant clock divisors to high value can cause problems with sound cards while CPU core clock is too low (for example divisor of 512 and 1 GHz core clock). On my system this results in sound card to be disabled and only cold reset helps to reenable it.

There are problems with ACPI S3 (Suspend to RAM). Before you enter S3, please set multiplier to startup, otherwise system won't resume. This seems to be a problem that chipset forgets FID_Change dictated settings and reverts back to system startup settings.

Few words at the end

I hope this would allow you to better control power consumption and thermal power of your CPU. It is fine when your CPU while running anti-virus software has only few degrees Celsius above 40 in situation when at full frequency it would have more than 50. Noise produced by cooler is then significantly reduced.

Other positive effect of this change is that it allows for multiplier adjustments in range of 3x to 11x even on motherboards that do not support multiplier adjustments at all! And after L6 bridges change, it allows for complete range of 3x to 24x.

Please send me reports if this worked for you or not - please include CPU, chipset and motherboard information. That would allow me to make a listing of chipsets supporting P-States transitioning. I wish you good luck!

See video how quick a transition is

FAQ for this article is here.

If you got link directly to this page, please also read Tweak section where I put news, list of compatible chipsets and FAQ.

I would like to thank Clive Turvey, who was so kind he wrote a driver necessary for Model Specific Registers modification, and also Miroslav Tvrz for helping me with programming.

Petr Koc