I need to find out a processor(either Intel or AMD) with enough frequency levels

hshen1

Member
May 5, 2013
70
0
66
Hi,

Due to my research purpose, I want to find a processor with enough frequency scaling levels(the more the better). The processor should at least have 4 physical cores. It's good to be a server processor such as Xeon or Opteron.But other processor is also OK.
I found this article http://impact.asu.edu/cse591sp11/DynamicPMQuantativeApproach.pdf
written by the AnandTech. It's very useful.
I use Linux system and the frequency level should be easily changed by the cpufreq driver. I checked a lot of documentations on Intel and AMD's website and there is no such information(what processor supports what frequency exactly).
So I am just wondering except the processors in the article I mentioned above, does anybody here have any good suggestion?
Thanks,:cool:
 

VirtualLarry

No Lifer
Aug 25, 2001
56,587
10,225
126
The max multiplier is documented on Intel's web site. If you want an unlocked multipler, consider an Intel 2700K or 3770K.
 

hshen1

Member
May 5, 2013
70
0
66
Hi, thanks for your reply. Yes. Maybe the max multiplier is documented on Intel's website. But what I have found is that it doesn't mean every multiplier step frequency will be supported by the hardware,right? In Linux cpufreq driver, I can see a very small number of frequency(for example, for some Xeon processors, I can only see two frequency levels). I do not quite understand the concept of "unlocked multipler". So you mean if the multipler is "unlocked", then in OS we should be able to change it to whatever number we want(in step)? You mean 2700K or 3700K have such capability?
Thanks:>
 

hshen1

Member
May 5, 2013
70
0
66
The max multiplier is documented on Intel's web site. If you want an unlocked multipler, consider an Intel 2700K or 3770K.

Hi, thanks for your reply. Yes. Maybe the max multiplier is documented on Intel's website. But what I have found is that it doesn't mean every multiplier step frequency will be supported by the hardware,right? In Linux cpufreq driver, I can see a very small number of frequency(for example, for some Xeon processors, I can only see two frequency levels). I do not quite understand the concept of "unlocked multipler". So you mean if the multipler is "unlocked", then in OS we should be able to change it to whatever number we want(in step)? You mean 2700K or 3700K have such capability?
Thanks:>
 

Sleepingforest

Platinum Member
Nov 18, 2012
2,375
0
76
You cannot delete a post, however, you may edit an old one. There should be an option right next to "quote" for your own posts.
 

Ketchup

Elite Member
Sep 1, 2002
14,559
248
106
I am not a Linux guy, but I can give you an example of what you can expect. The CPU in my sig will go from a max multiplier of 37 to 49. You could actually get more range if you underclock (start with a ratio below stock), but I don't know where you would need to start for your project. Do keep in mind that 49 required upping the CPU voltage, which you may find difficult within the OS (again, depending on what program you have available). Many motherboard, when set to auto, will up the voltage as you overclock, to a point. I think mine made it to 4.5 or so before I had to intervene.

Hope that helps.
 

hshen1

Member
May 5, 2013
70
0
66
Check out i7z tool for Linux: https://code.google.com/p/i7z/

Also note that you can change multipliers down from nominal on all cpus, you don't need special K-series for that.

Hi, thanks for your reply. This tool seems to be useful. It has a script to change the multiplier. However, it seems that it only supports i3,5 and 7 while I only have a core 2 processor here.
So changing the multiplier seems to be a good idea. So in theory, does that mean that all the frequency down from the nominal frequency can be achieved? It there any generic way to change the multiplier no matter in what OS?

Thanks,:cool:
 

hshen1

Member
May 5, 2013
70
0
66
I am not a Linux guy, but I can give you an example of what you can expect. The CPU in my sig will go from a max multiplier of 37 to 49. You could actually get more range if you underclock (start with a ratio below stock), but I don't know where you would need to start for your project. Do keep in mind that 49 required upping the CPU voltage, which you may find difficult within the OS (again, depending on what program you have available). Many motherboard, when set to auto, will up the voltage as you overclock, to a point. I think mine made it to 4.5 or so before I had to intervene.

Hope that helps.

Hi,thanks for your reply. Due to my research purpose, my goal is not to overclock while is to underclock to save power. So I just want to know how did you change your multiplier number? Use some software? Reburn the firmware? Or what? Can it be changed online?
Thanks,:biggrin:
 

Ketchup

Elite Member
Sep 1, 2002
14,559
248
106
The gigabyte board comes with software that lets you change the multiplier in windows.
 

mrle

Member
Mar 27, 2009
33
0
0
Hi, thanks for your reply. This tool seems to be useful. It has a script to change the multiplier. However, it seems that it only supports i3,5 and 7 while I only have a core 2 processor here.

Use this tool for Core 2 based cpus: http://www.ztex.de/misc/c2ctl.e.html

By the way, on Core 2 you can only select multipliers (or FID) between 6 and nominal. This range can be very small, for example I have a Xeon 3065, which is 7x333 MHz nominal, and can only go down to 6x333.

So changing the multiplier seems to be a good idea. So in theory, does that mean that all the frequency down from the nominal frequency can be achieved? It there any generic way to change the multiplier no matter in what OS?

Yes, there are similar tools for Windows, too, for example RMClock or CrystalCPUID. All of them are basically same: they write some values to cpu MSR registers. Check out the source for c2ctl, it is really easy to figure out exactly what gets written where.
 
Last edited:

hshen1

Member
May 5, 2013
70
0
66
Use this tool for Core 2 based cpus: http://www.ztex.de/misc/c2ctl.e.html

By the way, on Core 2 you can only select multipliers (or FID) between 6 and nominal. This range can be very small, for example I have a Xeon 3065, which is 7x333 MHz nominal, and can only go down to 6x333.



Yes, there are similar tools for Windows, too, for example RMClock or CrystalCPUID. All of them are basically same: they write some values to cpu MSR registers. Check out the source for c2ctl, it is really easy to figure out exactly what gets written where.

Hi,
This tool seems to be helpful. Now I am looking into the part about how to modify DSDT on the tool's website. I think that's exactly what I am looking for.
Generally I want to use the cpufreq driver interface to change the frequency. So though maybe we have the ability to change the frequency by changing the multiplier in hardware, sometimes we just can not do it through the cpufreq driver interface because the frequency-voltage pair is not in the table that is loaded by the cpufreq driver.
Generating the table will lead to some difficulties. I think the biggest one is the voltage calibration. If it's not in the original table, we need to figure out what voltage we should give under certain frequency, even considering that the relationship between VID and voltage may not be so obvious....:colbert:
And BTW, do you know the reason why we can only select from 6 to nominal for FID? What about other arch(for example, i7 or Xeon)?
Thanks:>:>
 
Last edited:

mrle

Member
Mar 27, 2009
33
0
0
You are on the right track. By modifying DSDT you effectively write your own SpeedStep table and can use default cpufreq drivers without any modifications. As for setting the right voltage, it is pretty much trial and error, just like overclocking. I believe you can use linear interpolation as starting "safe" point for all states between known minimum and maximum voltage and frequency.

And BTW, do you know the reason why we can only select from 6 to nominal for FID? What about other arch(for example, i7 or Xeon)?

6 is the architectural limit for Core 2. Of course, it is different for newer generations, I think for current Ivy Bridge i7 minimum multiplier is 16. They don't have FSB anymore so it is now tied to BCLK (which is 100 MHz), producing 1.6 GHz minimum frequency.
 

hshen1

Member
May 5, 2013
70
0
66
You are on the right track. By modifying DSDT you effectively write your own SpeedStep table and can use default cpufreq drivers without any modifications. As for setting the right voltage, it is pretty much trial and error, just like overclocking. I believe you can use linear interpolation as starting "safe" point for all states between known minimum and maximum voltage and frequency.



6 is the architectural limit for Core 2. Of course, it is different for newer generations, I think for current Ivy Bridge i7 minimum multiplier is 16. They don't have FSB anymore so it is now tied to BCLK (which is 100 MHz), producing 1.6 GHz minimum frequency.

Hi, the tool c2ctl is really very helpful! I have learnt a lot of stuff. BTW, do you know any similar tool for the Xeon arch? If not, I think I should read the Xeon spec from Intel website and then find out the MSR I should read and write as did by the c2ctl,right?:cool:
 

mrle

Member
Mar 27, 2009
33
0
0
Xeons are often just variants of basic Core design with some additional features (support for ECC and such), and the same tools should work on them too. There is some public documentation on Power Management and MSRs for various Intel architectures, read chapters 14 and 35 in this document for more info.
 

hshen1

Member
May 5, 2013
70
0
66
Xeons are often just variants of basic Core design with some additional features (support for ECC and such), and the same tools should work on them too. There is some public documentation on Power Management and MSRs for various Intel architectures, read chapters 14 and 35 in this document for more info.

Hi mrle,

I have read the chapters you mentioned in the document. But I have found a problem of the c2ctl tool... (http://www.ztex.de/misc/c2ctl.e.html). I am wondering whether you are willing to take a quick look or not...

So in the document, the MSR IA32_PERF_STATUS(address 198H) in Table 35-2 is a 64 bit register with 63:16 bit reserved. This means only 0:15 bit is used (half for VID and half for FID, I think). But if you take a look at the c2ctl tool pascal source code(very short), you can find that in the procedure "info", it tries to read the bits inside 63:16 as the max and min FID and VID. It's not reasonable, right?

I have run the tool both on my core 2 Duo machine and Xeon machine. On core 2 Duo machine, the max and min value is right(shouldn't be though ...). However, on the Xeon machine, they are the same and looks not right (very big). Do you have any clue?

Thanks a lot:oops::biggrin:
 

Yuriman

Diamond Member
Jun 25, 2004
5,530
141
106
Not sure how it relates to your project but modern K-series Cores processors can vary between 1x and 63x via software. Intel's own utility also provides positive voltage adjustments of up to 1000mV (1V). This suggests to me you could probably do this with your own software.
 

hshen1

Member
May 5, 2013
70
0
66
Not sure how it relates to your project but modern K-series Cores processors can vary between 1x and 63x via software. Intel's own utility also provides positive voltage adjustments of up to 1000mV (1V). This suggests to me you could probably do this with your own software.

Hi,thanks for the information. Yes, now I am considering the K-series. But I doubt the processor's frequency really can go as low as 1x(100MHz?). And if I recall, I think 1V is not enough,right? I have seen the voltage can go at least 1.2-1.3 V in the Intel's document. Instead of using provided software, I am considering to read and write to the Model Specific Register by myself to adjust the frequency and voltage(you can check my last post FYI).
 

Yuriman

Diamond Member
Jun 25, 2004
5,530
141
106
What I mean is, you can positively adjust the voltage up to +1V from whatever the CPU requests based on its voltage table. At 45x this would probably result in a voltage close to 2.2V.

I suspect my compy might crash if I lowered the multiplier down to 1x, but I may try it tomorrow (have a game server open right now that I can't offline). It *can* theoretically be requested.
 

hshen1

Member
May 5, 2013
70
0
66
What I mean is, you can positively adjust the voltage up to +1V from whatever the CPU requests based on its voltage table. At 45x this would probably result in a voltage close to 2.2V.

I suspect my compy might crash if I lowered the multiplier down to 1x, but I may try it tomorrow (have a game server open right now that I can't offline). It *can* theoretically be requested.

I see. Thanks:> Now I am trying to buy a processor for my project. I know the K series would have a big range of multiplier number"in theory". My only concern is that whether I can really arbitrarily change it by programming. I think there would be both a lower and upper bound. And also, how to figure out the correct voltage for the specific frequency would be a problem if I want to change them separately.:ninja:
 

mrle

Member
Mar 27, 2009
33
0
0
Not sure how it relates to your project but modern K-series Cores processors can vary between 1x and 63x via software.

Can you try running it at 1x multi? I would like to see that, as I was under the impression that it would not be possible since LFM frequency for all IB is 1600 MHz, as stated by Intel (page 16). Either way, all Ivy Bridge cpus are definitely unlocked from at least 16x to nominal. If they weren't, they wouldn't be able to "automatically" underclock to save power when idle.

I have run the tool both on my core 2 Duo machine and Xeon machine. On core 2 Duo machine, the max and min value is right(shouldn't be though ...). However, on the Xeon machine, they are the same and looks not right (very big). Do you have any clue?

Not a Core 2-based Xeon? What's its model number anyway?

I'm sure you realized by now that some information you need for this project (for example, detailed description of MSRs) is confidential and not publicly available from Intel. That's why I pointed you to Linux sources. AMD is somewhat better, they have what they call "BIOS and Kernel Developer Guides" for various AMD cpu families available here. In any case, the basic principle is the same for both Intel and AMD cpus (you write some values to some MSR), it's just that AMD's public docs provide much more details about it.
 

hshen1

Member
May 5, 2013
70
0
66
Can you try running it at 1x multi? I would like to see that, as I was under the impression that it would not be possible since LFM frequency for all IB is 1600 MHz, as stated by Intel (page 16). Either way, all Ivy Bridge cpus are definitely unlocked from at least 16x to nominal. If they weren't, they wouldn't be able to "automatically" underclock to save power when idle.



Not a Core 2-based Xeon? What's its model number anyway?

I'm sure you realized by now that some information you need for this project (for example, detailed description of MSRs) is confidential and not publicly available from Intel. That's why I pointed you to Linux sources. AMD is somewhat better, they have what they call "BIOS and Kernel Developer Guides" for various AMD cpu families available here. In any case, the basic principle is the same for both Intel and AMD cpus (you write some values to some MSR), it's just that AMD's public docs provide much more details about it.

Hi,the model is Intel(R) Xeon(R) CPU X5472 @ 3.00GHz. Oh, so you mean in the MSR documentation, the 'reserved' field is also useful but is confidential? That's bad....o_O
And following is what I get from c2ctl:
Current Target Min. Max.
FID 6 6 71 71
VID 22 22 34 34
ESIT_ENABLE = TRUE ESIT_LOCK = TRUE

Last question. You have said " Either way, all Ivy Bridge cpus are definitely unlocked from at least 16x to nominal". Does that mean if the cpu is 3GHz at nominal, we definitely will have 1.6,1.7,1.8.....3GHz frequency achievable. If so, my concern will be solved since I just need enough frequency levels.
 
Last edited: