どうなってるのやら

あゆぽっぽ。あゆぽっぽ牛乳。

真夏のホットコーヒー

 筆者の手元には、coffeeLake(-R)が二つあります。 9700kと書かれている個体に、9600kと書かれている個体。 このまえ後者を組みつけたあと、OS上からTjMax(※TCC_ACTIVATION_TEMPERATURE)を照会して驚きました。 0x1a2[23:16]が73h、これがリードオンリーなら115度ということになります。 前者(9700k側)では64hだったので、経験上6700kや4790kと大差ない感じで『いつもどおりか~』くらいに思っていたのですが..

 一方ark.intel.comでは9600kのTjMaxが100度とあります。 ちょい混乱しそうなので少しふみこんで書くと:

  (a) ark.intel.comでのTjMax公称値 → 0x64(100度)
  (b) intel自身のデータシートに書かれている、6C+GT2モデルのtccActivationTemp → 0x64(100度)
  (c) intel自身のプログラミングガイドでは、MSR/0x1a2[23:16]が「temperatureTarget(readOnly)」と書かれている
  (d) 筆者の個体では、1A2h[23:16]を直読みすると0x73(115度)

 ▲さらに上記データシートには、こんな風に書かれています:

  (1) the DTS outputs a temperature relative to the maximum supported operating temperature of the processor(TjMax)
  (2) When a package DTS indicates that it has reached the TCC activation (a reading of 0x0..) ※後略

 →つまるところDTSの報告する値は「deltaToTjMax(TjMaxに対する差分)」を表し、「これがゼロになるとtcc発動」と表現していることから、当該書類でいうところのTjMaxはtccActivationTemperatureそのものだということになります。 ..筆者が見てきたかぎりintel用語的には「tccActivationTemp」「IA32_TARGET_TEMPERATURE」のほうが古く、TjMaxという呼び名は非公式的な場で広く使われるようになったためintel自身が追従しているのでしょう。

 →→一方プログラミングガイド側では、tccActivationOffset(0x1a2[27:24])を「targetTemperatureに対する差分として用いる」とあります。 従ってtargetTemperatureはintel用語的に「tcc発動温度」「TjMax」と等しく、(a)(b)が一致していることには矛盾しませんが(c)を読みにいくと違っている点は興味深いです.. なお1a2h[23:16]は上書きできないため、アドレスを間違えるようなポカミスしない限り個体別の固有値が出るとしか思えず本当にTjMaxが115度なのでしょう。 なにかしらの事情で公表仕様と違う個体が出ているのか、筆者の個体が巧妙にできたニセモノなのかどちらかだろうと想像します。

 いちおReadWriteEverytingと、CrystalCPUIDで読んだときのスクショも後ろに貼っておきます。。

f:id:aypppo:20200707224033j:plain

9600k, MSR 0x1a2[23:16]=0x73

f:id:aypppo:20200707223939j:plain

9600k, MSR 0x1a2[23:16]=やはり0x73