8年前に人生初の自作PCを組んで以来、10回くらいしか電源を切ってないこばやしです。
当時はミドルスペックを誇っていた愛機も今では化石同然です。現代でいうアンモナイトですかね。技術の進歩は目覚ましい。
僕がPCを使う用途はネットサーフィンやブログ執筆に限られるので、スペック面の不足を感じたことは全くありません。
壊れる予兆も全く無く快適に使えてるのですが、一時期CPUの温度が大変なことになっていました。
CPUの温度が常時90℃越えでクソ焦る
こばやしはCPU温度モニタリングに「CoreTemp(https://www.alcpu.com/CoreTemp/)」を使用しています。
常時モニタリングしてる訳ではないですが、時々気になったらチェックしてます。大体落ち着いてますけどね。
ある日、いつもと同じくCoreTempを開いてCPU温度を測定したのですが、なんと全てのコアが90度超え!
別にソフトを開きまくってCPUに負担を掛けてる訳でもなく、使用率も30%前後。
それなのにCPUの4コアの平均温度が90度を切らないんです。これはおかしい。
リテールクーラーの音は若干大きく思えました。普段意識して聞いてないから正常時のクーラーの音が分かりません。
PCに疎いこばやしは、変なウイルスとかマルウェアに感染したのかなと安直に疑いましたが、Kasperskyも異常を検知していません。
とりあえず異常時は再起動だ!と思って再起動しましたが、やはりCPU温度は90℃を示したままでした。
流石にこれは原因を突き止めねば…。そう思い、素人なりに色々ググって調べてみました。
CoreTempとコマンドプロンプトの両者に謎の温度差が…
CPUの温度はコマンドプロンプトでも調べられるらしいので早速出力。
出力すると謎の4ケタの数字が出てきましたが、この数値はケルビン表示の値を10倍したものです。セルシウス温度に計算します。
具体的には(出てきた数字 ÷10 - 273)で計算できます。画像では3030ですから、計算して30℃です。
え、30℃!?
CoreTempでは90℃なのに、コマンドプロンプトだと30℃って全然違うやんけ!なんやこの差は!
コマンドプロンプトを信じるならばCPUの温度は正常値かもしれないので、まずは温度差が生じる原因を調べてみることに。
温度差の原因は、CPU温度を測ってる場所が違うから!
すぐ思いつくのが、CoreTempとコマンドプロンプトでは「温度を測ってる場所が違うのでは?」という疑問ですね。
もし本当に違ったら温度差があるのも納得できますし、同じなら何かが故障してるってことです。
こばやしはCPUの温度関連の知識は全く無いため、ひとまず調べてみることにしました。
ググったら日経TECHとか個人のブログでたくさん情報がありましたね。先人の知恵を借りよう。
結論、CPUの温度は測ってる場所が2つありました。2つ場所の温度にも名前が付いているそうです。
- ヒートスプレッタ内部に埋め込んだセンサが感する温度(Tcase)
- コア内部のサーマルダイオードが感知する温度(Tjunction)
CoreTempは Tjunction を表示、コマンドプロンプトは Tcaseを表示していると仮定すれば、両者に温度差が生じるのもうなずけます。
ヒートスプレッタは、CPU全体をカバーしてるあの金属です。放熱板ですね。その放熱板を削って温度センサを埋め込んでいるそうです。
一方、CPUのコア内部のサーマルダイオードというのは半導体素子です。外部の温度変化に感応して電圧値が変化する性質を持ってます。
サーマルダイオードの電圧値を読み取れば、コアの温度が分かるんですね。
(こばやしは大学時代に半導体を勉強していたんですけど、そんな素子があるとは全く知りませんでした。Fランクオリティ。)
2つの温度の関係ですが、Tjunction はコアで直接測定した値なので、 Tcase より必ず高いです。
CoreTempの温度はコマンドプロンプトよりも遥かに高い温度を示していました。
ということは、コマンドプロンプトで測定する温度は Tcase なんだろうと考えました。消去法的に。
言葉で説明しても伝わりにくいと思うのでせっかくなので図を作りました。下図ご覧ください。
(画像検索で大量に図が出てきましたが、パクる訳にも行かないのでイラストソフト使って描きました。)
余談ですが、大昔のCPUは、上部に温度センサを離れた場所に置いて、間接的にCPUの温度を測っていたそうです。
CPU温度は何回か再起動したら落ち着いた
若干話が脱線しましたが、当記事の、「CPUの温度( Tjunction )が90℃越え問題」の解決に話を戻します。
結論、何回か再起動したら落ち着きました。原因特定するとか豪語してたけど結局分からずじまい。モヤモヤ。
再起動して気づいたんですけど、OSが立ち上がって数分以内は Tjunction が90℃を超える割合が高く、時間が経つと60℃前後に落ち着きます。
(最初にCoreTempが90℃越えを観測したときがPCの電源つけたばっかりだったか、よく覚えてません)
CPU温度が高い時はとりあえず再起動。それでもダメだったらクーラーのグリスや動作を確認って感じですかね。
Intelの公式サイトでCPU最大許容温度を確認できる
CPU温度の確認方法は分かったとして、問題はその上限値ですよね。
いくら温度が分かっても、「じゃあ何℃以上なら異常って判定できるの?」って疑問が生じます。
結論、Tjunctionの上限値はCoreTempに表示されてます。
ここで言うTj.maxが Tjunction の上限値です。この画像の場合は100℃なんで、温度は大丈夫そう。
一方、Tcaseの上限値はIntelの公式サイトで確認できます。実際に見てみましょう。
こばやしのCPUは「Corei7 4790(Haswell)」ですので、該当のページに飛びます。
ちょっと紛らわしいですが、ここに表示されているTcaseが Tcase の上限値です。72.72℃って結構細かいですね。
コマンドプロンプトで測定した Tcase は30℃でした。かなり余裕をもって設計されてるんですね。。
(そもそも Tcase が72℃まで上昇してたら、Tjunction は軽く100℃超えてんじゃない?って思ったり笑)
まとめ
長々と話したので、今日の記事の内容を表でまとめました。
CPUの温度って普段そんなに意識することないけど、結構勉強になりました。何事も興味を持つことは大事ですね。
CPUの温度を見る方法 | 温度の名称 | 温度を測定する場所 | 上限値の確認方法 |
Core Temp | Tjunction | コア内部(サーマルダイオードで感知した電圧) | Core Tempに表示される Tj.max |
コマンドプロンプト | Tcase | CPUの金属部に埋め込まれたヒートスプレッダ | Intel 公式ページ |
結局原因がよく分からん
基本ずっと電源つけっぱなしだからPCくんが疲労したんですかね?
装置は丁重に扱わねば