• Welcome to Overclockers Forums! Join us to reply in threads, receive reduced ads, and to customize your site experience!

How to make sure your CoreTemp / TAT readings are right

Overclockers is supported by our readers. When you click a link to make a purchase, we may earn a commission. Learn More.

Notlag

Member
Joined
Aug 3, 2007
Rule of Thumb

If your idle temps are equal to or less than ambient temps, and you are air or water cooling (w/o a TEC, chiller, etc...) then they are wrong. Period. If they are within a couple degrees of ambient and you are overclocked, then they are most likely wrong. Air and vanilla water cooling can not cool down to ambient temperature. To give you a rough idea:

16C = 61F
18C = 64F
20C = 68F
22C = 72F

The average room temperature in a house is generally going to be 69F or higher w/ the air on, and in most cases even warmer in the winter from the heat. If your idle temps fall into the range above, you should give some consideration to adjusting your readings.


A Few Notes About CoreTemp / TAT

* TAT generates better load than anything else for generating heat, but does no good at all for stability testing because it doesn't measure whether or not there are errors. One could run TAT -and- Orthos together, but in the end, for stability testing you need a program like Orthos that runs calcs and then verifies the results.

* TAT and CoreTemp both read the thermal diodes on the cores. Those thermal diodes report temperatures relative to Tjunction Max - the point at which thermal management steps in to save the processor. Hence the readings from thoes diodes is ALWAYS negative (the core temps are always below Tjunction Max), and when TAT and CoreTemp report the absolute temperature they are doing so by taking that negative temperature and adding Tjunction Max to it.

* Tjunction Max is not stored in the processor registers. It can not be read from the processor. CoreTemp and TAT both have to make assumptions as to what Tjunction Max is based on what CPU they detect (stepping and such). The problem is they make different assumptions and those assumptions are not always correct. To further complicate issues, different versions of CoreTemp make different assumptions.

* Note that Tjunction Max is not necessarily exactly either 85C or 100C. Each CPU has its thermal management factory calibrated with temperatures unique to that processor. It would appear that certain steppings do indeed tend to be centered around either 85C or 100C, but those numbers are guestimates that have become defacto standards (hence steppings are often either considered 85C or 100C - but the real thermal management activation temperature varies for each individual CPU). This would appear to make it impossible for the DTS values to ever be wholly accurate at reporting absolute temperatures.

* TAT does not inherently report correctly because it is from Intel. Intel designed it for mobile processors, not desktop processors. TAT is just as capable of assuming the wrong Tjmax as well. If TAT assumes you have an 85C Tjmax processor when it is really 100C, then TAT will be 15C too low as well. What's more, TAT was never intended for public release. Most people have not obtained TAT from Intel, so who knows what version we are using (versus what Intel is supplying to their partners). Does anyone actually have a link for Intel's site where we can download TAT? I don't think it exists (but if it does please post it :p).

* Even if you assume Tjunction Max is either only 85C or 100C, it is possible for CoreTemp to report the wrong temperature while TAT is correct, for TAT to report wrong while CoreTemp is correct, for both to report wrong, or both to report correct.

* TAT does not report what it assumesTjunction Max to be. CoreTemp does. That makes it easier to adjust for CoreTemp readings than for TAT.

* To find your correct temperatures, assuming YOU know what Tjunction Max should be, run CoreTemp. If CoreTemp reports 85C and you know the processor is 100C, then add 15C to the temperature readings. If CoreTemp reports 100C and you know the processor is 85C, then subtract 15C from the readings. If CoreTemp's Tjunction Max matches what you know the processor is, then you can take the readings as is.

* After you've determined what your 'real' temperature is via CoreTemp, TAT should be close to matching that 'real' number. If TAT is off by more than a bit, then add or subtract 15C from TAT so that the number is similar to the 'real' temperature you've received from CoreTemp.

So... What happens when you don't know what Tjunction Max is for your processor, or you just want to be more precise with your temp readings? Well, you know the cores will always be warmer than ambient temperature and they will always be warmer than the processor temperature given by programs that read the overall CPU temp (rather than the core temps). You also know that if you underclock the CPU and undervoltage the CPU as far as possible then it should be -close- to ambient. Based on those facts you can make some reasonable guesses about Tjunction Max.


How to Adjust your CoreTemp / TAT Readings
(by selecting the more accurate of either 85C or 100C as Tjmax)


1. Download a program that will report CPU temps as opposed to core temps. SpeedFan is one program that gives both - just ignore the core temps given by SpeedFan.

2. Get something to measure the ambient air temperature in your room.

3. Downclock your processor and undervoltage it as far as you can and still boot successfully. For me this is 100MHz FSB x 6 with a CPU voltage of 0.8v.

4. Measure the air temperature of your room, or, even better, take the side of your case off and hold the probe near the inlet of your heatsink fan to measure the temperature of the air going into your heatsink.

5. Run TAT and CoreTemp. Take all of your measurements at IDLE. At idle the temps should be close to ambient (or fan inlet) temperature, but not below. TAT and CoreTemp may read different temps depending on version - perform the following comparisons independently for both.

6. Compare your temps to the ambient (or fan inlet) temp. If your temps are below the ambient temp then add 15C. If your temps are more than 20C over ambient temp then subtract 15C.

7. Alternatively, if you can't measure ambient temp well then compare core temps to the CPU temp given by SpeedFan (or whichever program you chose to use - many motherboard manufacturers include a tool that reports the CPU temp read by the BIOS). If your temps are below the temps given by SpeedFan then add 15C to them. If they are more than 20C over then subtract 15C.


Establishing a More Precise Estimate of Real Core Temps

1. Follow steps 1 through 5 above

2. Calculate the approximate idle power of your processor at those speeds. This is a very loose estimate, but the amount of power at this speed is so little that the actual error is almost negligible anyways. In fact, this excercise is really pretty much unnecessary because the amount of power is so low that it generates almost no heat :p

Est. Load Power = (CPU TDP) x (CPU Speed / CPU Stock Speed) x ((CPU Voltage) / (CPU Max Stock Voltage))^2
Est. Idle Power = Est. Load Power / 4

CPU TDP is the TDP value listed at Intel's site (see the Spec Finder link below)
CPU Voltage is the voltage you have set for your CPU in your BIOS.
CPU Max Stock Voltage is the top end of the voltage range given at Intel's site.
CPU Speed is the clock rate you are running the chip at.
CPU Stock Speed is the stock clock rate.

For example, for my E4300 @ 600MHz, 0.875v:

Est. Load Power = 65W x (600 / 1800) x (0.875v / 1.5v)^2 = 7.4W
Est. Idle Power = 7.4W / 4 = 1.8W

3. Calculate the expected core temperatures based on that power output. It is safe for us to assume that the thermal resistance of the interface between the CPU cores and the IHS is no higher than 0.33C/W (the real thermal resistance is almost nil, but I prefer to err on the conservative side rather than have to argue the point) and assume the thermal resistance of your heatsink and TIM is also around 0.33 C/W. Or feel free to fill in values that are more realistic - we're working with such small numbers it hardly matters though.

Core Temperature = Fan Inlet Temperature + Watts * Total Thermal Resistance

Note that the calculation specifies the fan inlet temperature. Your CPU might not be producing much heat at this speed, but there might be other components on the board that are still contributing a reasonable amount of heat, so the air inside your case being sucked through the CPU heatsink is going to be hotter than the ambient air outside of it. Even with your case side panel off this difference will often be around 1C to 3C.

For example, in my testing:

Expected Core Temperature = 27C (was a warm day) + 1.8W * 0.66 C/W = 28.2C

4. Subtract that number from the core temperature given by TAT or Core Temp and you now have your offset for adjusting for real temps.

For example:

Offset = 35C (TAT) - 28C (calculated value) = 7C - so if I want a better estimate of my real core temps, I would subtract 7C from the reading I get in TAT

As you can see, it was almost unnecessary to calculate the amount of power your CPU is dissipating in step 2 while so severely underclocked and undervoltaged. The amount of heat dissipated is so low that it is safe to assume your cores will only be 1C to 3C over ambient temps (and 3C or more only if your board prevents you from lowering your voltage and speed very far).


More Precise Yet...

I don't recommend anyone run their PC w/o a heat sink at any speed or voltage, even the slow speed and voltage specified in this test - YOU COULD PERMANENTLY DAMAGE YOUR CPU (though thermal management should save it under normal circumstances). The above method is more than precise enough provided you can accurately measure the temperature of the air going through the CPU fan. But if you absolutely must know your real temps...

1. Go to Radio Shack (or equivalent) and buy an IR surface temperature probe.

2. Repeat the above procedure - but with no heatsink. Yes, that's pretty darn crazy, which is why I do not recommend it unless you are capable of lowering your voltage and speed to ridiculously low levels. Again, even if you are crazy enough to do this (and I have heard of one person that has, but that person was not me - yet :p), the test is meant to be done w/ the CPU at idle. Keep it that way for safety's sake.

3. Instead of calculating the expected core temps, use the IR probe to measure the surface temperature of the IHS. The thermal resistance between the IHS and cores is fairly low, and the difference in temperatures between the two should be almost nil at this wattage. Use this as your real core temperature and calculate the offset as done in step 4 of the above procedure.


Future Updates

* Add a glossary and standardize terms throughout (where there are any ambiguities).
* Include some information on how heat actually transfers from the cores through the IHS and through the heatsink to highlight the thermal resistances of each area and what role they play in temps.


Reading Material and Links

http://www.intel.com/design/core2duo/documentation.htm
http://www.intel.com/design/core2quad/documentation.htm
(refer to the Thermal and Mechanical Design Guidelines and Datasheets - I haven't linked the actual documents because the links are subject to change each time Intel issues an update)

http://processorfinder.intel.com/
Intel Processor Spec Finder
 
Last edited:
I vote this sticky.

Best explanation so far of why so many people (including myself) are getting temperatures well above expected.
 
Please add this, two very common questions i have to reply to on ALCPU forums. (core temp forums) --> http://www.alcpu.com/forums/
If you have weird 10-15C degree difference from each core, chances are your DTS, Digital thermal senor was poorly calibrated and your out of luck. Very common for AMD users. Also, if you have the new 65NM Brisbane chips by amd you have to go with your motherboard temperature sensor because apparently AMD decided not to use it in the Brisbane models. so don't get jumpy when you see a 10C read out heh.

imp

edit 1: Also don't go by CoreTemps frequency readouts they can be wrong at times, it uses an outdated detection code.

edit 2: apparently no one ever reads how it works or supported profcessors on the alcpu forums, so i thought i might quote it.

How it works said:
Temp lets you monitor Intel "Core Duo", "Core Solo" (Yonah), "Core 2 Duo", "Core 2 Extreme", "Core 2 Quad", " Pentium E1000" series, "Celeron 400" series (Allendale, Conroe, Merom, Kentsfield, Conroe-L respectively), "Xeon 3000/3200/5100/5300" series (Woodcrest, Clovertown respectively) and all AMD K8 (AMD64) series die temperature.
The temperature readings are very accurate as the data is collected from a Digital Thermal Sensor (or DTS) which is located in each individual processing core, near the hottest part. This sensor is digital, which means it doesn't rely on an external circuit located on the motherboard to report temperature, its value is stored in a special register in the processor so any software can access and read it. This eliminates any inaccuracy that can be caused by external motherboard circuits and sensors and then different types of programs trying to read those sensors.

This is how the program works:

Intel defines a certain Tjunction temperature for the processor. In the case of Yonah it is 85C° or 100C°. First of all the program reads from a Model Specific Register (or MSR), and detects the Tjunction temperature. A different MSR contains the temperature data, this data is represented as Delta in C° between current temperature and Tjunction.

So the actual temperature is calculated like this 'Core Temp = Tjunction - Delta'

The size of the data field is 7 bits. This means a Delta of 0 - 127C° can be reported in theory. But from preliminary tests, the reported temperature doesn't go below 0C°, no matter what kind of cooling was used.

AMD chips report the temperature by a special register in the CPU's NB. Core Temp reads that register and uses a formula provided by AMD to calculate the current temperature. The formula is: 'Core Temp = Value - 49'.

The sensor in AMD CPUs can report temperatures between -49C and 206C.
Supported Processors said:
AMD:

All Athlon64 series.

All Athlon64 X2 series.

All Athlon64 FX series.

All Turion64 series.

All Turion64 X2 series.

All Sempron series.

Single Core Opterons starting with SH-C0 revision and up.

All Dual Core Opteron series.



Intel:

All Core Solo series.

All Core Duo series.

All Core 2 Duo series.

All upcoming Quad Core Desktop and Server series.

All Celeron-M 400 and 5xx series (Untested).

All Pentium 1000 series (Single core Core 2 Duo with half L2. Untested).

All Dual Core Low Voltage Xeons series (Yonah based. Untested).

All Xeon 3000, 3200, 5100, 5300 series.
 
Last edited:
Want to know your real Intel CPU Temp using software ? You can't !

See this pic below, all Coretemp or RealTemp does is to read that particular DTS value from the register.

Regarding that TJMax, no body knows at what temperature that level is, could be 85, 100, 115 or even 75 !

All you can do is to maintain your temperature as far as possible (cooler) from that single marking if you want your CPU cool, thats all !

OT, if your cpu while loaded is on 20 degrees to that max tjunction (this what TJMax stands for) and stable, it is still quite safe even for 24/7. No, don't quote me that I'm saying it is safe at 80 C at absolute temp. ;)

Hope this pic helps people to understand the thermal solution implemented by Intel !

Damn Intel CPU TEMP.png

Now, could anyone tell what is the cpu temperature from this particular "fine" thermometer ? ;)
 
Last edited:
I've got to run, but I'll stop back later to clean up the formatting and such on the OP as well as provide some additional clarification. If it does end up stickied I'll also include some pics or what-not, but probably won't have much time until this weekend. Thx all for the feedback.
 
I'm going to have to do some additional checking, but you're correct that the DTS is factory calibrated and the calibrated 0 point for it may not correspond to exactly 100 or 85. I'll do some research on it and re-read those pieces of the thermal and mechanical design specs for the processor then update the OP as necessary.

It is worth noting that even making the 15C adjustment if it is necessary isn't going to necessarilly give you temps that are accurate to within 1C or something. In terms of making sure you're not cooking your processor, just try to keep a relatively good difference between your core temp and Tjmax (if you want, setup CoreTemp to report the actual reading instead of the absolute temp).

See this pic below, all Coretemp and others like Speedfan does is read that particular DTS value from the register.

Regarding that Tjmax, no body knows at what temperature that level is, could be 85, 100, 105 or even 75 !

All you can do is to maintain your temperature as far as possible (cooler) from that single marking if you want your CPU cool, thats all !

OT, if your cpu while loaded is on 20 degrees to that max tjunction and stable, IMO it is still quite safe even for 24/7. No, don't quote me that I'm saying it is safe at 80 C at absolute temp. ;)

Hope this pic helps people to understand the thermal solution implemented by Intel at the current core architecture !
View attachment 60152

Now, can anyone tell what is the "REAL" cpu temperature from this particular thermometer ? ;)

Pssstt... if you can do programming and read Intel CPU's MSR, you could make similiar program yourself ! :D

Edit:
I really wish Art (coretemp author) can jump in here to have few words ! :)
 
I have already forwarded this to thecoolest over aim. ill do it again, this time asking him to leave a comment. I mean its pretty simple. Just look at the motherboard temp read out, compare it to the coretemp read out, if they are in the same ballpark, coretemp is reading it accurately, otherwise its not. excluding the newly released cpu's Coretemp has full support for most processors. It gets redundant after a while if people keep asking "is my temperature accurate" when all you gotta do is follow the steps above.
imp
edit1: updated this post
 
I have already forwarded this to thecoolest over aim. ill do it again, this time asking him to leave a comment. I mean its pretty simple. Just look at the motherboard temp read out, compare it to the coretemp read out, if they are in the same ballpark, coretemp is reading it accurately, otherwise its not. excluding the newly released cpu's Coretemp has full support for most processors. It gets redundant after a while if people keep asking "is my temperature accurate" when all you gotta do is follow the steps above.
imp
edit1: updated this post

CoreTemp should generally be around 10C to 15C higher than the temp given as the CPU temp by the motherboard under load. But that's a really loose estimate. For one thing, that difference will vary from part to part depending on the power dissipated by the processor and the efficiency of the interface between the die and the IHS. There's a certain amount of thermal resistance between the two sensors(the DTS sensors for each core versus the sensor for the CPU temp given by the mainboard) so as more power is dissipated, the difference in temps between the two sensors will grow.
 
Perhaps you are mistaken, 10-15C is excessive. Its generally + or - 5C at max.

As I said, that's a "really loose estimate". Mine typically runs about 12C higher under load. I'll also link a post on another forum that has similar results:

http://www.tomshardware.com/forum/221745-29-core-quad-temperature-guide

That said, it doesn't change the steps I give in the OP. If someone is 5C over, then they should keep their temps as is. If they're 5C under though, their CoreTemp is definitely not reporting correctly, as the cores will never be less than the case temp. So I'm not sure where you get +/- 5C at max. +5C I can understand, but -5C is impossible.

All things considered, I agree 5C "sounds" more reasonable than 10C to 15C, but in this case I'm going by what I've read and what I see on TAT and CoreTemp on my own machine. Many people also end up w/ temps that are a good 10C to 15C higher, like mine. However, it is entirely possible though that the real temps are lower by around 5C on my box based on the assumptions CoreTemp / TAT make about Tjmax.

That ambiguity is why I suggest looking at the temp differences when the CPU is very low clock and very low voltage. When I update the OP, it will include some steps to take that measurement into account to find a more precise Tjmax estimate (rather than going with either 85C or 100C - the 1st version of the OP is how to determine whether 85C or 100C is more accurate, but the real number could likely be in between or just above or below one of those numbers). With the processor very very low clock speed and low voltage the difference between core temps and case temps should be quite minimal.

I include a pic tomorrow, but in my PC my TAT readings are 35C w/ the CPU at 600 MHz and 0.85v, given a fan inlet temperature of 27C. A rough estimate of idle power at those low settings is approximately 3W (my CPU is rated at 12W idle power for stock speed / voltage). It's fair to say at 3W there shouldn't be more than a 1C difference from ambient to case, and no more so from case to core, which would result in an approximate core temp of 29C. So it's a safe estimate to say I should subtract roughly 6C from my core temps to get accurate numbers. Sure, that's still just an estimate, but it is likely closer than the temps reported.

Anyways, I gotta get to bed :p I'll post more tomorrow and make any edits necessary to the OP. Gotta' get some sleep though.
 
Last edited:
Which core are you talking about. Quad cores May in fact be reading wrong tempertures. Thecoolest(Arthur) is aware of this.

I haven't worked w/ the quads, so I'm not sure of the issues w/ their temp readings. What specifically have you seen w/ them? However, if the issue is just that the temps are offset, then the same process will fix it. That's true of any processor - if the temp readings still scale normally (a 1C increase in temperature results in a 1C increase in the reading), then adjusting for some constant offset in temps isn't too too hard. You'll never get the real precise amount, but you can do some testing at near ambient temps to get a reasonable estimate.

Oh, and with respect to an earlier post you made Imposter, I have to read over that AMD bit. My OP was originally more about Intel procs since TAT dosen't apply to AMD, but in theory the concept as a whole applies to either manufacturer (at least w/ respect to CoreTemp). I just don't have much familiarity w/ AMD's - haven't used once since I had a K6-2 :p many many years ago.

Also, I'll try to update the OP tomorrow to clean things up a bit or make some of the revisions I was talking about. Just been a bit of a busy day here today and I'm pretty tired now. *chuckles* Doesn't help that these forums have taken over my life this last week - lol. I need to do some catch-up w/ work too :p

EDIT: Look for the updates Monday :( I haven't had the opportunity to get to it today and I'm not stuck trying to get some work done on a Sunday night :/ Will make time for it tomorrow.
 
Last edited:
Update History

10/19/07 - Original Post and various clarifications
10/23/07 - Added procedures for more accurately calculating core temps
10/29/07 - Added 'rule of thumb' to illustrate why many reported temps are wrong
 
Yah, I need to clean that up some, make the notes more concise, toss in a couple diagrams, etc...
 
[* Tjunction Max is not stored in the processor registers. It can not be read from the processor. CoreTemp and TAT both have to make assumptions as to what Tjunction Max is based on what CPU they detect (stepping and such). The problem is they make different assumptions and those assumptions are not always correct. To further complicate issues, different versions of CoreTemp make different assumptions.

I want to get some inconsistencies out of the way.

From core temps website:

"Intel defines a certain Tjunction temperature for the processor. In the case of Yonah it is 85C° or 100C°. First of all the program reads from a Model Specific Register (or MSR), and detects the Tjunction temperature. "

-http://www.thecoolest.zerobrains.com/CoreTemp/howitworks.html

So one of you is wrong. Notlag, where do you see where it is said that the TJMAX is not had from the MSR?
 
I want to get some inconsistencies out of the way.

From core temps website:

"Intel defines a certain Tjunction temperature for the processor. In the case of Yonah it is 85C° or 100C°. First of all the program reads from a Model Specific Register (or MSR), and detects the Tjunction temperature. "

-http://www.thecoolest.zerobrains.com/CoreTemp/howitworks.html

So one of you is wrong. Notlag, where do you see where it is said that the TJMAX is not had from the MSR?

There have been numerous posts in the past about various versions of CoreTemp choosing the wrong Tjunction. According to Intel's own documentation:

"The temperature at which Thermal Monitor activates the thermal control circuit is not user configurable and is not software visible"

And...

"The relative temperature value reported over PECI represents the delta below the onset of thermal control circuit (TCC) activation as indicated by PROCHOT# assertions"

See their thermal and mechanical guidelines:

http://download.intel.com/design/processor/designex/31780405.pdf
http://www.intel.com/design/core2duo/documentation.htm

As far as I know, CoreTemp reads the processor model and stepping then chooses the Tjunction based on it (rather than "detecting" it).
 
Back