少于 1 分钟阅读 次阅读

概念

结温(Junction Temperature,常缩写为 Tj)就是 CPU 最核心那个“硅芯片”(Die)的实际运行温度。

这是整个 CPU 里温度最高、也是最真实的地方,因为所有的晶体管都在这块硅片上疯狂开关发热。 alt text

咱们平时拿到手的一块 CPU,其实是个“夹心饼干”。最中间标着 Silicon chip 的那个薄片,才是真正干活的 CPU 核心,它的温度就是结温(Tj)

为了保护这个脆弱的硅片,上面会涂导热硅脂(Thermal compound),然后再盖上一层咱们肉眼能看到的金属盖子(也就是图里的 Copper heat spreader,一般叫 IHS)。这个金属盖子表面的温度,咱们一般叫封装温度(Tcase)

为什么结温这么重要?

  1. 它是 CPU 保护自己的红线: 主板和系统读底层的温度数据,盯的都是结温。每个 CPU 都有一个最大结温(Tj Max),通常在 100°C 到 110°C 左右。
  2. 触发降频的开关: 当结温飙升,快摸到 Tj Max 这条红线的时候,CPU 内部的保护机制就会强制自己降频(也就是所谓的过热降频 Thermal Throttling),保命要紧。如果温度还压不住,它就直接断电黑屏了。

CPU结温的读取 —— DTS(Digital Thermal Sensor,数字温度传感器)

严格来说,“结温”本身是一个温度数值,而不是传感器。但系统里读到的结温数据,确实是由 CPU 内部(甚至可以说是直接刻在硅片上)的微型传感器测出来的。

现在的 CPU 早就不用外置的热敏电阻去猜核心有多热了,它们用的是直接做在硅芯片里面的 DTS(Digital Thermal Sensor,数字温度传感器),通常也就是我们说的热敏二极管(Thermal Diode)。

  1. 直接刻在“发热源”旁边: 在光刻 CPU 核心(Die)的时候,那些运算最密集、发热最恐怖的区域(比如 ALU 算术逻辑单元、FPU 浮点运算单元旁边),会特意留出位置做出非常微小的二极管电路。
  2. 物理特性转电信号: 这种二极管的正向压降会随着温度的升高而呈现非常线性的变化。温度越高,压降越低。
  3. ADC转换与寄存器读取: 传感器测到的模拟电压变化,会被 CPU 内部的 ADC(模数转换器)直接转换成数字信号,存到特定的寄存器(MSR,特定模块寄存器)里。
  4. 系统读取: 你在底层(不管是 BMC、你的硬件监控 CPLD,还是 Linux 下的 sensors 命令)读到的所谓“结温(Tj)”,其实就是通过 I2C/PECI 总线或者 CPU 内部指令,去读这些寄存器里的数字换算出来的。

多核心的 CPU 里面甚至不止一个这样的传感器,每个核心(Core)旁边都有,所以你经常能看到 Core 0、Core 1 各自的温度,最后系统会挑一个最高的作为当前整个 CPU 的参考结温。

简单总结:结温是温度,但它是靠直接“长”在 CPU 硅芯片最深处、最热位置的数字传感器(DTS)精准测出来的。

留下评论