Overclock.net › Forums › Intel › Intel CPUs › IA32_PERF_STATUS bitmap and monitoring i7-3770 Vcore using VID field of it?
New Posts  All Forums:Forum Nav:

IA32_PERF_STATUS bitmap and monitoring i7-3770 Vcore using VID field of it?

post #1 of 5
Thread Starter 
Hey guys, I have a multitude of questions here. In short, I want to monitor the Vcore in the Intel core i7-3770 processor than I am working on, while I am running some process as a benchmark.

1- I guess my main question is what is the best way to track and monitor processor's voltage (Vcore), either the real voltage that is being fed to the CPU or the requested voltage through VID.

2- Assuming VID is the answer, how can I find it in IA32_PERF_STATUS and is it safe to use? I read somewhere that each processor has its own VID calibration and it is different between families and even between processors.

3- I am not interested in overclocking, but underclocking if that is a word. So, does anyone know what is the lowest vcore that ivy bridge goes in, in real applications? I know it is 0.25v according to the datasheet, but I am reading bits [39:32] of IA32_PERF_STATUS and it shows that when the load goes up, vcore drops to voltages as low as 0.3v (which made me think I am reading the wrong spot of IA32_PERF_STATUS in the first place).

thumb.gif
post #2 of 5
If you are on a desktop board and you manually set the vCore in the bios then the VID reported in MSR 0x198 is often times just a meaningless number because it does not accurately represent the voltage going to your CPU. You can monitor actual vCore using:

CPU-Z 1.63
http://www.cpuid.com/softwares/cpu-z.html

You might be interpreting the data in the VID register incorrectly. I have never seen RealTemp report VID voltages that low before.

RealTemp T|I Edition
http://www.overclock.net/t/1330144/realtemp-t-i-edition

Click on the button towards the top right until it shows VID.

The best way to lower vCore when your Sandy or Ivy Bridge CPU is idle is to enable the C6 low power sleep state. RealTemp can report what C States your CPU is using and how much time it is spending in these states. When a CPU core goes into C6, the voltage going to the core is close to zero which is impossible to improve on.

Intel eliminated the ability to lower core voltage on the fly like you used to be able to do with Core 2 processors by adjusting the VID value in MSR 0x199. For Core i CPUs, VID doesn't exist in that register anymore. In an unlocked (K series) Core i there is a way to increase the VID voltage beyond the base VID but you can not decrease it using this method or any other known method. The lower 8 bits of MSR 0x194 is where this VID data is hiding and here's my MSR Tool if you want to play around.

MSR Tool
http://www.mediafire.com/?myjkxzkzzmd

It only supports 4 threads but that can sometimes be good enough when playing around. smile.gif
post #3 of 5
Thread Starter 
Very useful response thanks, just a few questions and comments.

Firstly I don't really want to change vcore, I am only monitoring it while running normal benchmarks and also in the idle state, as part of my graduate research. I am mainly wondering how much I can trust VID (which according to your answer, not much!) and where to find it.

looking again at Intel's software developers manual vol 3C. page 35-92 I found this:



Is this the same as 0x194 as you said? also how close to reality is this number? the way I've been doing it so far was to read (IA_32_PERF_STATUS & 0xFF00000000)>>32) as VID and calculate vcore based on that.

Also, I gotta say CPU-Z would help me, but I am running linux, ans also I am writing my own code because this is a part of a larger code that logs a lot of activities in the processor, so accessing a good source would be much helpful. I tried running your tool on my windows machine but nothing happened! Should I do anything before running it? and is the source code accessible anywhere?
post #4 of 5
VID and Vcore are two different things. VID is the voltage the chip is requesting, based on data programmed into the chip. Vcore is the voltage being delivered by the motherboard. At stock speeds, with voltages in Auto, they should be pretty close to the same, but the Vcore can be far off from the VID if you want it to be. Vcore is also affected by Vdroop, while VID is not. So there's really no accurate way to calculate Vcore from the VID.

It sounds like VID is kind of meaningless for what you want to test.
Edited by Forceman - 2/12/13 at 4:04pm
post #5 of 5
The PERF_STATUS MSR reports the current FID (multiplier) in the lower bits and the VID in the upper bits.

The VID bits that you are interested in are in bits[47..32]

The Intel documentation is a little flaky and has a typo.
[47..32] is correct.
[37..32] is wrong.

If Read MSR returns a full 64 bit number then you would need to use this:

VID = ( ( IA_32_PERF_STATUS & 0xFFFF00000000 ) >>32 )

Then you would divide that by 2^13 to convert that number to VID voltage.

The other problem with Intel CPUs is that Intel has a fully documented method to calculate CPU power consumption but within the CPU, this data is based on the VID voltage and not the actual voltage. When the VID and actual voltage are similar, this calculation will be reasonably accurate but when you start adjusting the core voltage in the bios of a desktop board, the power consumption that all software reports is not going to be very accurate.

The lower 8 bits of MSR 0x194 lets you add VID voltage to your CPU. When your core voltage is manually selected, your CPU will probably ignore this increase in VID.

Here's my 3570K with the low bits of MSR 0x194 set to 0x00

lowvid.png

Here's the same CPU with the low bits of MSR 0x194 set to 0xFF

highvid.png

In both examples, the load is exactly the same while running a XS Bench test.

The VID is way up and the reported power consumption is way up but in reality, the core voltage and power consumption are exactly the same. The almost identical core temperatures confirm this.

As mentioned, all monitoring software is reporting the same meaningless data. Intel CPUs use this power consumption data to manage the Turbo Boost feature. For actual power consumption you would need to do this power calculation using actual core voltage. Maybe someday.
New Posts  All Forums:Forum Nav:
  Return Home
  Back to Forum: Intel CPUs
Overclock.net › Forums › Intel › Intel CPUs › IA32_PERF_STATUS bitmap and monitoring i7-3770 Vcore using VID field of it?