CPU-Kerntemperatur auslesen – oder – Wer misst misst Mist

Rowana

Lt. Junior Grade
Dabei seit
Okt. 2008
Beiträge
264
Nach den nicht abreißenden Diskussionen rund um das Thema Kerntemperatur fehlen eigentlich ein paar abschließende Worte und eine Erklärung, warum eine scheinbar so einfache Sache wie die Messung einer Temperatur so schwierig umzusetzen ist. Jeder, der ein Thermometer herstellt, verbürgt sich auch gleichzeitig für die Genauigkeit, mit der die Werte angezeigt werden. Intel tut so etwas nicht – und Intel hat auch allen Grund, das nicht zu tun, wie im Folgenden gezeigt wird. Die Hauptursache für die Ungenauigkeit der Kerntemperaturmessung liegt übrigens darin, dass sie mit möglichst einfachen Mitteln geschehen muss, denn bei hohen Anforderungen an die Genauigkeit wäre die Messhardware ggf. teurer als die ganze CPU was die Angelegenheit ad absurdum führen würde.

Weil die meisten Leute keine Ahnung haben, wie man von einer Temperatur überhaupt zu einem Wert auf einer Anzeige kommt, nehmen wir ein naheliegendes Beispiel. Stell dir vor du bist ein fernöstlicher Produzent und sollst an 100000 Wasserkocher eine digitale Temperaturanzeige montieren. Diese besteht aus vier Komponenten: dem Temperaturfühler, einem Analog-Digital-Wandler (A/D), einer digitalen dreistelligen Anzeige und einer Batterie. Der ganze Kram steht im Lager, es ist Wochenende und die die beigelegte Anleitung wurde von einem koreanischen Reisbauern ins Arabische übersetzt – wir haben also keine Anleitung, jedoch Zeit und Muße zum Experimentieren.

Wir verschalten also den analogen Ausgang des Temperaturfühlers mit dem A/D-Wandler und dessen digitalen Ausgang mit der Anzeige und versorgen den Aufbau mit Strom aus der Batterie. Eine „70“ wird angezeigt. „70“ was denn? Grad? Äpfel? Birnen? Klar, das Gerät zeigt ja ohne Kalibrierung irgendwas an, nur nichts Genaues. Also ab in den Keller und Omas Einkochthermometer von Anno Schnuff gesucht. Zusätzlich halten wir noch eine Schüssel mit Eiswasser incl. schwimmenden Eiswürfeln und einen Wasserkocher mit dauerhaft kochendem Wasser bereit um wenigstens zwei bekannte Temperaturen vorgeben zu können.

Der Fühler landet im kochenden Wasser. Eine 5 wird angezeigt? Gegenprobe im Eiswasser. Es zischt und wird erhalten in Kürze eine 96. Seltsam? Nein, eine als Temperaturgeber missbrauchte Diode mit der zugehörigen möglichst simplen Verschaltung liefert nun mal mit fallender Temperatur eine steigende Spannung. Das ist aber alles kein Hindernis weil wir am (fiktiven) A/D-Wandler einen Schalter „Umrechnen“ entdecken, der unsere Messwerte in gefühlte Logik verwandelt, soll heißen er subtrahiert 100 und tauscht das Vorzeichen.

Intels A/D-Wandler weist diese Umwandlungseigenschaft nicht auf. Hier verlässt man sich stumpf darauf dass die CPU ja notfalls den Messwert selber umrechnen kann – warum auch weitere Hardware verschwenden wenn doch schon so viel Silizium vorhanden ist?

Ein neuer Test ergibt nun 96 im kochenden Wasser und 5 im Eiswasser. So weit so gut, aber „genau“ ist was anderes. Wir zücken eine Lupe und finden einen Eingang „Nullpunkt“ und einen Eingang „Verstärkung“ am A/D-Wandler. Der Fühler fliegt ins Eiswasser und wir drehen am Nullpunkt bis tatsächlich der Wert 0 angezeigt wird. Super. Im kochenden Wasser erhalten wir jetzt nur noch den Wert 91, der Nullpunkt hat also beide Messwerte verändert. Schnell noch an der „Verstärkung“ gedreht und wir erhalten den Wert 100. Geschafft? Nein, denn unser Eiswasser wird jetzt als -8 Grad angezeigt! Wo ist der Fehler? Nun, die „Verstärkung“ ändert leider auch beide Werte. Aber wir wissen dass die Differenz zwischen Eiswasser und kochendem Wasser 100 Grad betragen muss und drehen jetzt so lange an der „Verstärkung“ bis wir nach mehrmaligen Tests zwei Werte erhalten die eine Differenz von 100 aufweisen. Die letzten Werte waren 6 und 106, also Werte mit der gewünschten Differenz von 100. Jetzt drehen wir noch am „Nullpunkt“ und beide Werte wandern parallel 6 Grad nach unten. Fertig! Das Gerät ist somit kalibriert.

Jetzt kommt die große Stunde von Omas Einkochthermometer. Wir halten beide Fühler in das kochende Wasser, sehen jeweils den Wert 100 und stellen jetzt den Kocher ab. Unterhalb von 80 Grad gibt es lange Gesichter, weil die angezeigten Temperaturen auseinanderlaufen. Bei 50 Grad ist es am Schlimmsten, und bei 20 Grad ist die Abweichung wieder erträglich. Wir schieben die Schuld auf die Messdiode. Aber wir haben ja wenigstens 2 exakte Werte und sind glücklich und zufrieden.

Uns fällt ein dass im Lager 100000 Temperaturfühler herumliegen. Wir greifen uns einige davon und schließen diese jetzt an unseren Aufbau an. Wie es nicht anders zu erwarten war, gibt es keine zwei Temperaturfühler die denselben Wert anzeigen, mal ganz zu schweigen von der Tatsache dass auch keiner die Werte 0 und 100 liefert. Jeder einzelne Temperaturfühler möchte einzeln kalibriert werden! Uns bricht der kalte Schweiß aus und wir suchen nach Möglichkeiten die Kalibrierung zu vereinfachen. Der Geistesblitz! Die einzig interessante Temperatur ist der Wert 100 weil bei Erreichen dieser Temperatur der Wasserkocher seine Arbeit erledigt hat und abgestellt werden kann. Bei welcher Temperatur er startet ist ja relativ egal. Und die Werte auf dem Weg nach oben stimmen sowieso alle nicht, wie wir zuvor experimentell ermittelt hatten. Also: wir stellen nur den Nullpunkt ein indem wir den Fühler auf 100 Grad bringen und dort die Anzeige auf 100 stellen. Die aufwendige „Verstärkung“ werden wir auf Basis des ersten Versuchs einfach fest verdrahten und hoffen dass es für die anderen Temperaturfühler halbwegs passt.

Was hat das jetzt alles mit der Kerntemperatur von Intels CPUs zu tun? Nun – jede CPU-Serie hat eine Temperatur, die nicht erreicht werden darf, ansonsten schmilzt das Silizium weg. Die maximal zulässige Temperatur wird als Sperrschicht-Maximaltemperatur Tj bezeichnet. Bei Überschreiten dieser Temperatur wird der CPU der Saft komplett abgedreht was eine sofortige Abkühlung zur Folge hat. Bei den Core 2 Duos der Serien E7x00 und E8x00 beträgt sie 100 Grad, für andere Serien gelten 85 oder 95 Grad. Beim CPU-Einzeltest im Werk wird die CPU auf die maximal zulässige Temperatur Tj gebracht und die Nullpunkt-Einstellung wird vollzogen indem der A/D entsprechend programmiert wird. Die Verstärkung ist fest vorprogrammiert und so bemessen dass der A/D-Wandler in etwa einen Wert pro Grad liefert. Das ist nicht besonders genau, aber in Anbetracht der Tatsache, dass noch weitere Abweichungsursachen hinzukommen, wie z.B. die Höhe der Spannungsversorgung, die Nicht-Linearität der Messdiode, die Temperatur die der A/D-Wandler selbst erleiden muss und die Positionierung des Fühlers in der CPU, die sich hoffentlich an der heißesten Stelle befindet, muss man mit einer dauerhaften Abweichung von einigen Grad leben können. Die einzige exakte Temperatur ist die vorgegebene Maximaltemperatur, die unsere CPUs im Normalbetrieb hoffentlich nie erreichen werden. Und alle weiteren Aussagen über eure „gemessenen“ Kerntemperaturen sind für den Rundordner.

-Falls ihr Admins der Meinung seid dass der Beitrag woanders hin gehört, dann bitte passend verschieben-
 

Dionysos808

Lt. Commander
Dabei seit
Sep. 2008
Beiträge
1.755
Sehr schön geschrieben! :)
 

xxxdanixxxx

Lieutenant
Dabei seit
Dez. 2008
Beiträge
727
Richtig Guter Beitrag vielen Danke Dafür und Danke ... Nice
 

mmic29

Admiral
Dabei seit
Okt. 2005
Beiträge
7.596
Sehr anschaulich geschrieben :). Zwei kleine Anmerkungen dazu:


Nun – jede CPU-Serie hat eine Temperatur, die nicht erreicht werden darf, ansonsten schmilzt das Silizium weg.
Nein, da schmilzt nichts ;). SMP liegt bei reinem Silicium bei 1410 °C.

Bei Überschreiten dieser Temperatur wird der CPU der Saft komplett abgedreht was eine sofortige Abkühlung zur Folge hat.
Es werden zunächst Takte ausgelassen. Wenn das nicht reicht, wird abgeschaltet.
 
Top