Intel CPUs:
Later Intel CPUs feature a Digital Thermal Sensor (DTS) which measures the temperature for each core.
Since many users are confused about certain values measured, there is a clarification needed.
First, the value read from the DTS is not an absolute values in degrees Celsius, but it's an offset (distance) from the maximum CPU junction temperature (Tj,max). Thus to report a correct temperature, the Tj,max needs to be known. And this is the first problem, since for pre-Nehalem CPUs (like Core2, Atom, etc), the precise value cannot be read from any register (there are some partial methods but don't seem to be reliable on all models). Although Intel has published some fixed numbers for certain CPU families, it has been proven that many of them are not correct. Various people have performed extensive experiments to determine more accurate values. However those CPUs can have different Tj,max set even for same models (determined during manufacturing). So in many cases for pre-Nehalem CPUs, to determine the correct Tj,max value is just a pure guessing.. For Nehalem and later CPUs, the Tj,max value can be read from an internal CPU register, so this issue should be resolved.
The second problem (which many users don't seem to realise) is the accuracy of the DTS sensor. It seems that older DTS implementations have been designed to catch the hottest temperature only (to engage throttling when overheated), so the sensor returns more precise data only at temperatures close to Tj,max. At lower temperatures (higher distance to Tj,max), the accuracy gets worser and at some point (~ 50 °C usually) saturation occurs and values read below this point are highly inaccurate (practicaly cannot be used to provide a true temperature). Again, the situation depends whether the CPU belongs to the pre-Nehalem family. For these families the precision is in best case -3/+7 °C (or up-to -5/+10 °C) at Tj,max and gets even worser at temperatures ~50 °C, where the accuracy degrades to +-10°C (up-to -10/+15°C). At temperatures below 50 °C the reading is not guaranteed to be functional and can't provide a meaningful temperature value (should be considered to indicate only a temperature < 50 °C and not a specific value). For Nehalem and later CPU families, the accuracy was improved and should be cca +-5 °C uniform across the whole temperature range. However, there are certain exceptions too - like the Gulftown which has been determined to provide highly inaccurate values.
Update:
For Broadwell family (5-generation Core) the DTS accuracy is ±7 °C in the 0-75 °C range and ±5 °C above 75 °C
For Braswell family (Airmont-based Atoms) the DTS accuracy is ±8 °C in the 0-60 °C range and ±5 °C above 60 °C
For Bay Trail: ± 8°C for < 60°C; ± 6°C for > 60°C
Skylake, Kaby Lake, Coffee Lake, Comet Lake: not more than ±5 °C within the entire operating range
Apollo Lake: ±5 °C within the entire operating range
Elkhart Lake: ±5 °C within 0 - 105 °C
AMD CPUs/APUs:
Earlier AMD CPUs and APUs (Llano - Bulldozer) suffer a similar issue with measuring of internal core temperatures. Unlike Intel systems, where the affected parts belong to older families, for AMD this is affecting latest systems currently available. Unfortunately there's no exact data regarding accuracy available, but the problem is most significant at lower temperatures (below ~40 °C). In this temperature range, the reported values are sometimes totally wrong (like 1 °C). It's assumed, that in the higher range (close to critical temperatures) the values reported have a better accuracy.
This issue has been acknowledged by AMD, but unfortunately there's no fix for this available. AMD has stated that the value is actually not a true temperature value and they have stopped calling it as CPU temperature as well. So you can not rely on internal CPU temperature of older AMD CPUs/APUs, even though HWiNFO tries to use different methods. The only way is to rely on mainboard sensors - diodes placed close to the CPU socket, which however cannot provide the internal core temperature.
Zen and later systems have significantly improved thermal sensors which are much more accurate, so temperatures reported here can be considered trustworthy. Here however the temperatures can fluctuate very frequently with short spikes of several degrees. This is normal behavior and hence some sensors like "CPU Die (average)" use averaging over short intervals to provide more stable results.
Later Intel CPUs feature a Digital Thermal Sensor (DTS) which measures the temperature for each core.
Since many users are confused about certain values measured, there is a clarification needed.
First, the value read from the DTS is not an absolute values in degrees Celsius, but it's an offset (distance) from the maximum CPU junction temperature (Tj,max). Thus to report a correct temperature, the Tj,max needs to be known. And this is the first problem, since for pre-Nehalem CPUs (like Core2, Atom, etc), the precise value cannot be read from any register (there are some partial methods but don't seem to be reliable on all models). Although Intel has published some fixed numbers for certain CPU families, it has been proven that many of them are not correct. Various people have performed extensive experiments to determine more accurate values. However those CPUs can have different Tj,max set even for same models (determined during manufacturing). So in many cases for pre-Nehalem CPUs, to determine the correct Tj,max value is just a pure guessing.. For Nehalem and later CPUs, the Tj,max value can be read from an internal CPU register, so this issue should be resolved.
The second problem (which many users don't seem to realise) is the accuracy of the DTS sensor. It seems that older DTS implementations have been designed to catch the hottest temperature only (to engage throttling when overheated), so the sensor returns more precise data only at temperatures close to Tj,max. At lower temperatures (higher distance to Tj,max), the accuracy gets worser and at some point (~ 50 °C usually) saturation occurs and values read below this point are highly inaccurate (practicaly cannot be used to provide a true temperature). Again, the situation depends whether the CPU belongs to the pre-Nehalem family. For these families the precision is in best case -3/+7 °C (or up-to -5/+10 °C) at Tj,max and gets even worser at temperatures ~50 °C, where the accuracy degrades to +-10°C (up-to -10/+15°C). At temperatures below 50 °C the reading is not guaranteed to be functional and can't provide a meaningful temperature value (should be considered to indicate only a temperature < 50 °C and not a specific value). For Nehalem and later CPU families, the accuracy was improved and should be cca +-5 °C uniform across the whole temperature range. However, there are certain exceptions too - like the Gulftown which has been determined to provide highly inaccurate values.
Update:
For Broadwell family (5-generation Core) the DTS accuracy is ±7 °C in the 0-75 °C range and ±5 °C above 75 °C
For Braswell family (Airmont-based Atoms) the DTS accuracy is ±8 °C in the 0-60 °C range and ±5 °C above 60 °C
For Bay Trail: ± 8°C for < 60°C; ± 6°C for > 60°C
Skylake, Kaby Lake, Coffee Lake, Comet Lake: not more than ±5 °C within the entire operating range
Apollo Lake: ±5 °C within the entire operating range
Elkhart Lake: ±5 °C within 0 - 105 °C
AMD CPUs/APUs:
Earlier AMD CPUs and APUs (Llano - Bulldozer) suffer a similar issue with measuring of internal core temperatures. Unlike Intel systems, where the affected parts belong to older families, for AMD this is affecting latest systems currently available. Unfortunately there's no exact data regarding accuracy available, but the problem is most significant at lower temperatures (below ~40 °C). In this temperature range, the reported values are sometimes totally wrong (like 1 °C). It's assumed, that in the higher range (close to critical temperatures) the values reported have a better accuracy.
This issue has been acknowledged by AMD, but unfortunately there's no fix for this available. AMD has stated that the value is actually not a true temperature value and they have stopped calling it as CPU temperature as well. So you can not rely on internal CPU temperature of older AMD CPUs/APUs, even though HWiNFO tries to use different methods. The only way is to rely on mainboard sensors - diodes placed close to the CPU socket, which however cannot provide the internal core temperature.
Zen and later systems have significantly improved thermal sensors which are much more accurate, so temperatures reported here can be considered trustworthy. Here however the temperatures can fluctuate very frequently with short spikes of several degrees. This is normal behavior and hence some sensors like "CPU Die (average)" use averaging over short intervals to provide more stable results.
Last edited: