2024年3月26日发(作者:性若南)
PECI接口
PECI是用于监测CPU及芯片组温度的一线总线(one-wire bus),全称是Platform
Environment Control Interface。它最主要的应用是监测CPU温度,最新版本的PECI接口还包
括一些其他的功能。
1 Intel Processor的温控机制
在CPU中,通常每个CPU核心都有一个数字温度传感器。在PC平台下,处理器可以通
过MSR(Mode specific registers)获得处理器自身的温度、调节风扇转速度,从而实现温度控
制。在服务器平台下,温度控制通常是由BMC来做的,业务CPU本身没有办法控制机框的
风扇转速度。BMC直接或间接通过PECI总线获取到CPU核心温度,再根据所有温度值调整
风扇转速。
MSR方式读取CPU温度读取到的是即时温度,PECI方式读取到的是256ms时间窗内的
平均温度。MSR方式是需要CPU处理C0状态才能读取。PECI方式在C0~C6均可以使用。
Processor
PECI
Processor
BMC
图表 1 PECI接中的连接方式
Fans
Intel Pentium M 开始在处理器中引入DTS(数字温度传感器)。温度传感器通常是每个
CPU核心一个。
Processor
Core 0
DTS
Core 1
DTS
TM1
PROC
HOT#
THERM
TRIP#
TM2
Core 2
DTS
Core 3
DTS
图表 2 Intel温控组件
1.1 TM1
为了保护CPU不会在过热时被烧坏,从Pentium 4开始,处理器中又加入了一个温度监
示器Thermal Monitor 1,简称TM1。TM1会监示数字温度传感器的读数,当读数高于阈值
T
jmax
时,TM1会调节处理器时钟的占空比,以降低功耗,降低温度。这里所谓的调节时钟占
空比与传统意义上的时钟占空比不同,这里调节的是时钟信号的开闭时间比例,比如说,它
会在某一段时间内,37.5%的时间打开CPU时钟,让CPU工作,另62.5%的时间关闭CPU时
钟,让CPU停止工作以降低功耗和温度。
37.5%62.5%
Figure 1 TM1调整CPU时钟占空比
1.2 TM2
TM2是Pentium M时引入的,它提供了另一种降低CPU温度的办法。在CPU某个核心
的温度超过T
jmax
时,它会尝试降低时钟频率和供电电压来降低功耗和温度。TM1和TM2是
两个单独的机制,或以分别启用和禁用。Intel推荐两个机制同时使用。它们的启用和禁用是
通过BIOS设置IA32_MISC_ENABLE这个模式寄存器的第3、13位来实现的。BIOS打开这两
个机制后,OS和用户程序不可关闭。
1.3 温度阈值
T
jmax
是我们所知的第一个阈值,当CPU上任意一个核心的温度达到这个阈值时,CPU会
产生一个PROCHOT#信号(processor hot)。该信号可触发TM1和TM2。处理器时会通过调
节时钟占空比、降低时钟频率和供电电压的方式来降低功耗和温度。产生PROCHOT#信号的
同时,温度监示器还会产生一个中断给CPU,其中断向量号通过LAPIC和LVT来设置。模式
寄存器IA32_THERM_INTERRUPT有两个位用于高温中断使能(温度超过T
jmax
时产生中断)
和低温中断使能(温度回到低于T
jmax
的范围时产生中断)。
PROCHOT#通过CPU的一个引脚拉出,并且可以连接在外设上,由外设来发生这个信号。
比如说一个系统中有另一个设备的温度超过阈值,它可以拉低使能这个信号,从而使CPU也
一起降温,从而降低机箱内的温度,制造一个更好的散热环境。
如果TM1和TM2启动后温度没能降低下来,并且继续升高到可能造成CPU物理损坏的
温度时,核心会触发THERMTRIP#信号,并且关闭CPU电源。
CPU硬件实现的温度控制机制是用于CPU自我保存的温控机制,当这些机制不足以降
温时,CPU会断电,从而造成系统突然掉电,造成数据损失。因而一般要求BMC在要以一
定的周期读取CPU核心温度,根据温度调整风扇转速,并且当温度超过T
jmax
-10时,让风扇
全速转动。
2 相关MSR
2.1 IA32_THERM_INTERRUPT
IA32_THERM_INTERRUPT寄存的地址为0x19B。BIOS通过IA32_THERM_INTERRUPT模式
寄存器使能温度相关的中断,其各字段定义如下:
表格 1 IA32_THERM_INTERRUPT 0x19B
位
0
1
2
3
4
7:5
14:8
15
22:16
23
63:24
描述
High temperature interrupt enable
Low temperature interrupt enable
PROCHOT# interrupt enable
FORCEPR# interrupt enable
Critical Temperature interrupt enable
reserved
Threshold 1 value
Threshold 1 int enable
Threshold 2 value
Threshold 2 int enable
reserved
在一个实际系统读到的该寄存器的值为:
sudo modprobe msr
sudo rdmsr –p 0 0x19B
3
2.2 IA32_TEMPERATURE_TARGET
IA32_TEMPERATURE_TARGET模式寄存器的地址为0x1A2。该模式寄存器是只读的。
表格 2 IA32_TEMPERATURE_TARGET模式寄存器
位
23:16
描述
温度目标,单为是摄氏度,当达到这个温度时触发TM1和TM2,产生
PROCHOT#信号。
在一个实际系统读到的该寄存器的值为:
sudo modprobe msr
sudo rdmsr –p 0 0x1A2
0x5B08
0x5B=91摄氏度
嵌入汇编方式读取MSR:
__asm__ __volatile__(“movl $0x1A2, %%ecxntrdmsrnt”)
3 PECI接口
BMC获取CPU核心温度有两种途径:(1)通过PECI总线直接从CPU上获取温度数据,
(2)通过IPMI协议从南桥上的ME上获取CPU核心温度。在途径(2)的情况下,ME需要
通过PECI接口从CPU上获取温度。由于PECI的一线总线是intel的私有总线协议,很多BMC
厂商并没有办法集成支持PECI接口协议的硬件,因而途径(2)是获取CPU核心温度的主流
途径。
3.1 PECI规范
PECI采用的是主从结构,系统中最多支持4个从节点+1个主节点共五个节点。五个节
点看似有点少,然而普通的服务器中4路系统已然是性能比较强的系统了。华为的RH5885
服务器支持8路共160逻辑核心,但是以两个机框各有一个BMC的方式提供的。PECI的四
个从机地址从0x30开始编址,最大地址为0x33。
Figure 2 PECI架构
PECI规范到现在有三个主要版本:1.1、2.0和3.0。PECI 1.1支持最简单的温度监示,PECI
2.0则支持更多的如读取MSR等特性,PECI 3.0进一步支持PCIe总线配置空间的读取。
表格 3 PECI 1.1和2.0比较
版本
特性
1.1
温度监示
Ping()
GetTemp()
GetDib()
2.0
温度监示
Ping()
GetTemp()
GetDib()
访问CPU内存
BIST
Memory throttling相关
下图是PECI 3.0支持的命令列表:
表格 4 PECI 3.0支持的命令列表
这些命令中Ping(),GetTemp()和GetDIB()是最基本的命令。在系统启动时,PECI主控器通
过Ping()命令对0x30~0x33四个地址进行试探,如果有响应返回则表明相应地址的从节点在
位。这四个地址是通CPU的管脚绑定由电路设计人员设置的。
知道哪些从节点在位以后,还需要知道各个从节点都支持哪些命令集,这时需要GetDIB()
命令,DIB是Device Information Bytes的简写。该命令的响应是几个字节的数据,主要包括
Device Info和Revision Number两个字段:
Figure 3 GetDIB命令
Device Info字段的含义如下:
Figure 4 Device Info字段
Revision Number字段包含Major Number和Minor Number,Minor Number不同,其支
持的命令集也不同。具体如下:
Figure 5 Revision Number字段
其他命令在文档《Platform Environment Control Interface (PECI) 3.0 for Ivy Bridge Processor》
中有详细讲解。
3.2 PECI Proxy
现代服务器系统中,BMC通常不直接使用PECI接口,而是通过南桥上的Management
Engine来间接使用PECI接口。Management Engine是南桥上的一个嵌入式微控制器,它可以
通过南桥上的PECI主控器访问CPU上的PECI从设备。同时,ME还实现了一些IPMI命令,
可以让BMC通过SMLink间接使用这个PECI主控制器。这样的系统架构如下图所示:
图表 5 南桥做PECI Proxy
Processor
PECI
PCH
SMLink
BMCFAN
所有的IPMI命令可以参考《Intel Intelligent Power Node Manager 2.0 External Interface
Specification》的2.9节: IPMI OEM PECI Proxy Commands。
2024年3月26日发(作者:性若南)
PECI接口
PECI是用于监测CPU及芯片组温度的一线总线(one-wire bus),全称是Platform
Environment Control Interface。它最主要的应用是监测CPU温度,最新版本的PECI接口还包
括一些其他的功能。
1 Intel Processor的温控机制
在CPU中,通常每个CPU核心都有一个数字温度传感器。在PC平台下,处理器可以通
过MSR(Mode specific registers)获得处理器自身的温度、调节风扇转速度,从而实现温度控
制。在服务器平台下,温度控制通常是由BMC来做的,业务CPU本身没有办法控制机框的
风扇转速度。BMC直接或间接通过PECI总线获取到CPU核心温度,再根据所有温度值调整
风扇转速。
MSR方式读取CPU温度读取到的是即时温度,PECI方式读取到的是256ms时间窗内的
平均温度。MSR方式是需要CPU处理C0状态才能读取。PECI方式在C0~C6均可以使用。
Processor
PECI
Processor
BMC
图表 1 PECI接中的连接方式
Fans
Intel Pentium M 开始在处理器中引入DTS(数字温度传感器)。温度传感器通常是每个
CPU核心一个。
Processor
Core 0
DTS
Core 1
DTS
TM1
PROC
HOT#
THERM
TRIP#
TM2
Core 2
DTS
Core 3
DTS
图表 2 Intel温控组件
1.1 TM1
为了保护CPU不会在过热时被烧坏,从Pentium 4开始,处理器中又加入了一个温度监
示器Thermal Monitor 1,简称TM1。TM1会监示数字温度传感器的读数,当读数高于阈值
T
jmax
时,TM1会调节处理器时钟的占空比,以降低功耗,降低温度。这里所谓的调节时钟占
空比与传统意义上的时钟占空比不同,这里调节的是时钟信号的开闭时间比例,比如说,它
会在某一段时间内,37.5%的时间打开CPU时钟,让CPU工作,另62.5%的时间关闭CPU时
钟,让CPU停止工作以降低功耗和温度。
37.5%62.5%
Figure 1 TM1调整CPU时钟占空比
1.2 TM2
TM2是Pentium M时引入的,它提供了另一种降低CPU温度的办法。在CPU某个核心
的温度超过T
jmax
时,它会尝试降低时钟频率和供电电压来降低功耗和温度。TM1和TM2是
两个单独的机制,或以分别启用和禁用。Intel推荐两个机制同时使用。它们的启用和禁用是
通过BIOS设置IA32_MISC_ENABLE这个模式寄存器的第3、13位来实现的。BIOS打开这两
个机制后,OS和用户程序不可关闭。
1.3 温度阈值
T
jmax
是我们所知的第一个阈值,当CPU上任意一个核心的温度达到这个阈值时,CPU会
产生一个PROCHOT#信号(processor hot)。该信号可触发TM1和TM2。处理器时会通过调
节时钟占空比、降低时钟频率和供电电压的方式来降低功耗和温度。产生PROCHOT#信号的
同时,温度监示器还会产生一个中断给CPU,其中断向量号通过LAPIC和LVT来设置。模式
寄存器IA32_THERM_INTERRUPT有两个位用于高温中断使能(温度超过T
jmax
时产生中断)
和低温中断使能(温度回到低于T
jmax
的范围时产生中断)。
PROCHOT#通过CPU的一个引脚拉出,并且可以连接在外设上,由外设来发生这个信号。
比如说一个系统中有另一个设备的温度超过阈值,它可以拉低使能这个信号,从而使CPU也
一起降温,从而降低机箱内的温度,制造一个更好的散热环境。
如果TM1和TM2启动后温度没能降低下来,并且继续升高到可能造成CPU物理损坏的
温度时,核心会触发THERMTRIP#信号,并且关闭CPU电源。
CPU硬件实现的温度控制机制是用于CPU自我保存的温控机制,当这些机制不足以降
温时,CPU会断电,从而造成系统突然掉电,造成数据损失。因而一般要求BMC在要以一
定的周期读取CPU核心温度,根据温度调整风扇转速,并且当温度超过T
jmax
-10时,让风扇
全速转动。
2 相关MSR
2.1 IA32_THERM_INTERRUPT
IA32_THERM_INTERRUPT寄存的地址为0x19B。BIOS通过IA32_THERM_INTERRUPT模式
寄存器使能温度相关的中断,其各字段定义如下:
表格 1 IA32_THERM_INTERRUPT 0x19B
位
0
1
2
3
4
7:5
14:8
15
22:16
23
63:24
描述
High temperature interrupt enable
Low temperature interrupt enable
PROCHOT# interrupt enable
FORCEPR# interrupt enable
Critical Temperature interrupt enable
reserved
Threshold 1 value
Threshold 1 int enable
Threshold 2 value
Threshold 2 int enable
reserved
在一个实际系统读到的该寄存器的值为:
sudo modprobe msr
sudo rdmsr –p 0 0x19B
3
2.2 IA32_TEMPERATURE_TARGET
IA32_TEMPERATURE_TARGET模式寄存器的地址为0x1A2。该模式寄存器是只读的。
表格 2 IA32_TEMPERATURE_TARGET模式寄存器
位
23:16
描述
温度目标,单为是摄氏度,当达到这个温度时触发TM1和TM2,产生
PROCHOT#信号。
在一个实际系统读到的该寄存器的值为:
sudo modprobe msr
sudo rdmsr –p 0 0x1A2
0x5B08
0x5B=91摄氏度
嵌入汇编方式读取MSR:
__asm__ __volatile__(“movl $0x1A2, %%ecxntrdmsrnt”)
3 PECI接口
BMC获取CPU核心温度有两种途径:(1)通过PECI总线直接从CPU上获取温度数据,
(2)通过IPMI协议从南桥上的ME上获取CPU核心温度。在途径(2)的情况下,ME需要
通过PECI接口从CPU上获取温度。由于PECI的一线总线是intel的私有总线协议,很多BMC
厂商并没有办法集成支持PECI接口协议的硬件,因而途径(2)是获取CPU核心温度的主流
途径。
3.1 PECI规范
PECI采用的是主从结构,系统中最多支持4个从节点+1个主节点共五个节点。五个节
点看似有点少,然而普通的服务器中4路系统已然是性能比较强的系统了。华为的RH5885
服务器支持8路共160逻辑核心,但是以两个机框各有一个BMC的方式提供的。PECI的四
个从机地址从0x30开始编址,最大地址为0x33。
Figure 2 PECI架构
PECI规范到现在有三个主要版本:1.1、2.0和3.0。PECI 1.1支持最简单的温度监示,PECI
2.0则支持更多的如读取MSR等特性,PECI 3.0进一步支持PCIe总线配置空间的读取。
表格 3 PECI 1.1和2.0比较
版本
特性
1.1
温度监示
Ping()
GetTemp()
GetDib()
2.0
温度监示
Ping()
GetTemp()
GetDib()
访问CPU内存
BIST
Memory throttling相关
下图是PECI 3.0支持的命令列表:
表格 4 PECI 3.0支持的命令列表
这些命令中Ping(),GetTemp()和GetDIB()是最基本的命令。在系统启动时,PECI主控器通
过Ping()命令对0x30~0x33四个地址进行试探,如果有响应返回则表明相应地址的从节点在
位。这四个地址是通CPU的管脚绑定由电路设计人员设置的。
知道哪些从节点在位以后,还需要知道各个从节点都支持哪些命令集,这时需要GetDIB()
命令,DIB是Device Information Bytes的简写。该命令的响应是几个字节的数据,主要包括
Device Info和Revision Number两个字段:
Figure 3 GetDIB命令
Device Info字段的含义如下:
Figure 4 Device Info字段
Revision Number字段包含Major Number和Minor Number,Minor Number不同,其支
持的命令集也不同。具体如下:
Figure 5 Revision Number字段
其他命令在文档《Platform Environment Control Interface (PECI) 3.0 for Ivy Bridge Processor》
中有详细讲解。
3.2 PECI Proxy
现代服务器系统中,BMC通常不直接使用PECI接口,而是通过南桥上的Management
Engine来间接使用PECI接口。Management Engine是南桥上的一个嵌入式微控制器,它可以
通过南桥上的PECI主控器访问CPU上的PECI从设备。同时,ME还实现了一些IPMI命令,
可以让BMC通过SMLink间接使用这个PECI主控制器。这样的系统架构如下图所示:
图表 5 南桥做PECI Proxy
Processor
PECI
PCH
SMLink
BMCFAN
所有的IPMI命令可以参考《Intel Intelligent Power Node Manager 2.0 External Interface
Specification》的2.9节: IPMI OEM PECI Proxy Commands。