PECI接口

部署运行你感兴趣的模型镜像

PECI是用于监测CPU及芯片组温度的一线总线(one-wirebus),全称是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均可以使用。

 

图表1 PECI接中的连接方式

Intel Pentium M 开始在处理器中引入DTS(数字温度传感器)。温度传感器通常是每个CPU核心一个。


图表2 Intel温控组件

1.1 TM1

为了保护CPU不会在过热时被烧坏,从Pentium4开始,处理器中又加入了一个温度监示器Thermal Monitor 1,简称TM1。TM1会监示数字温度传感器的读数,当读数高于阈值Tjmax时,TM1会调节处理器时钟的占空比,以降低功耗,降低温度。这里所谓的调节时钟占空比与传统意义上的时钟占空比不同,这里调节的是时钟信号的开闭时间比例,比如说,它会在某一段时间内,37.5%的时间打开CPU时钟,让CPU工作,另62.5%的时间关闭CPU时钟,让CPU停止工作以降低功耗和温度。


Figure 1 TM1调整CPU时钟占空比

1.2 TM2

TM2是Pentium M时引入的,它提供了另一种降低CPU温度的办法。在CPU某个核心的温度超过Tjmax时,它会尝试降低时钟频率和供电电压来降低功耗和温度。TM1和TM2是两个单独的机制,或以分别启用和禁用。Intel推荐两个机制同时使用。它们的启用和禁用是通过BIOS设置IA32_MISC_ENABLE这个模式寄存器的第3、13位来实现的。BIOS打开这两个机制后,OS和用户程序不可关闭。

 

1.3 温度阈值

Tjmax是我们所知的第一个阈值,当CPU上任意一个核心的温度达到这个阈值时,CPU会产生一个PROCHOT#信号(processor hot)。该信号可触发TM1和TM2。处理器时会通过调节时钟占空比、降低时钟频率和供电电压的方式来降低功耗和温度。产生PROCHOT#信号的同时,温度监示器还会产生一个中断给CPU,其中断向量号通过LAPIC和LVT来设置。模式寄存器IA32_THERM_INTERRUPT有两个位用于高温中断使能(温度超过Tjmax时产生中断)和低温中断使能(温度回到低于Tjmax的范围时产生中断)。

PROCHOT#通过CPU的一个引脚拉出,并且可以连接在外设上,由外设来发生这个信号。比如说一个系统中有另一个设备的温度超过阈值,它可以拉低使能这个信号,从而使CPU也一起降温,从而降低机箱内的温度,制造一个更好的散热环境。

如果TM1和TM2启动后温度没能降低下来,并且继续升高到可能造成CPU物理损坏的温度时,核心会触发THERMTRIP#信号,并且关闭CPU电源。

CPU硬件实现的温度控制机制是用于CPU自我保存的温控机制,当这些机制不足以降温时,CPU会断电,从而造成系统突然掉电,造成数据损失。因而一般要求BMC在要以一定的周期读取CPU核心温度,根据温度调整风扇转速,并且当温度超过Tjmax-10时,让风扇全速转动。

2 相关MSR

2.1  IA32_THERM_INTERRUPT

IA32_THERM_INTERRUPT寄存的地址为0x19B。BIOS通过IA32_THERM_INTERRUPT模式寄存器使能温度相关的中断,其各字段定义如下:

表格 1 IA32_THERM_INTERRUPT 0x19B

描述

0

High temperature interrupt enable

1

Low temperature interrupt enable

2

PROCHOT# interrupt enable

3

FORCEPR# interrupt enable

4

Critical Temperature interrupt enable

7:5

reserved

14:8

Threshold 1 value

15

Threshold 1 int enable

22:16

Threshold 2 value

23

Threshold 2 int enable

63:24

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, %%ecx\n\trdmsr\n\t”)

PECI接口

BMC获取CPU核心温度有两种途径:(1)通过PECI总线直接从CPU上获取温度数据,(2)通过IPMI协议从南桥上的ME上获取CPU核心温度。在途径(2)的情况下,ME需要通过PECI接口从CPU上获取温度。由于PECI的一线总线是intel的私有总线协议,很多BMC厂商并没有办法集成支持PECI接口协议的硬件,因而途径(2)是获取CPU核心温度的主流途径。

3.1 PECI规范

PECI是一个私有的协议,不得到Intel授权无从得知协议的细节。PECI规范到现在有三个主要版本:1.1、2.0和3.0。PECI 1.1支持最简单的温度监示,PECI2.0则支持更多的如读取MSR等特性,PECI 3.0进一步支持PCIe总线配置空间的读取。

表格 3 PECI 1.1和2.0比较

版本

1.1

2.0

特性

温度监示

Ping()

GetTemp()

GetDib()

温度监示

Ping()

GetTemp()

GetDib()

 

访问CPU内存

BIST

Memory throttling相关

下图是PECI 3.0支持的命令列表:

表格 4 PECI 3.0支持的命令列表


现代服务器系统中,BMC通常不直接使用PECI接口,而是通过南桥上的ManagementEngine来间接使用PECI接口。Management Engine是南桥上的一个嵌入式微控制器,它可以通过南桥上的PECI主控器访问CPU上的PECI从设备。同时,ME还实现了一些IPMI命令,可以让BMC通过SMLink间接使用这个PECI主控制器。这样的系统架构如下图所

示:

图表 5 南桥做PECI Proxy

 

所有的IPMI命令可以参考《IntelIntelligent Power Node Manager 2.0 External Interface Specification》的2.9节: IPMI OEMPECI Proxy Commands。



转载:dean_go博客 ,

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### PECI协议技术文档 PECI(Platform Environment Control Interface)是一种用于硬件管理和控制的标准接口,尤其在Intel芯片中得到了广泛应用。通过PECI协议,系统可以实现对处理器温度、电源管理以及其他平台环境参数的监控和控制。 对于开发者和工程师来说,《554767-PECI 3.1.pdf》是一个非常有价值的资源文件,它详细介绍了PECI 3.1规范的内容,包括协议的定义、使用场景、技术细节以及实施指南[^2]。这份文档不仅提供了关于如何正确应用PECI协议的信息,还解释了其背后的工作机制,使得用户能够更好地理解和利用该协议进行开发工作。 要获取这份重要的文档,可以通过特定仓库下载名为`554767-PECI 3.1.pdf`的PDF文件。此文档适合硬件工程师、嵌入式系统开发者及所有对PECI 3.1规范感兴趣的技术人员阅读与参考[^3]。 ### 应用说明 PECI协议的应用主要集中在需要精确控制平台环境条件的场合,比如服务器主板设计、数据中心能效优化等。具体而言,PECI允许软件直接与处理器内部的数字温度传感器通信,从而实时监测CPU温度,并据此调整风扇速度或其他冷却措施以维持最佳操作条件[^1]。 此外,在实际项目实施过程中,遵循PECI标准可以帮助确保不同组件之间的兼容性,提高系统的稳定性和可靠性。例如,当构建一个支持动态电压调节的节能型计算平台时,正确实现PECI接口可以让BIOS或操作系统根据当前负载情况灵活地调整供电水平。 为了有效运用PECI协议,建议仔细研究提供的技术文档,并按照其中给出的最佳实践来进行设计和调试。同时也要注意保持设备上PDF查看工具的有效性,以便随时查阅相关章节获取帮助[^3]。 ```python # 示例代码:假设有一个函数用于模拟从PECI接口读取温度数据 def read_cpu_temperature(peci_address): # 模拟发送请求并接收响应的过程 print(f"Reading CPU temperature via PECI address {peci_address}") return 45.6 # 返回模拟的温度值(摄氏度) # 使用示例 temperature = read_cpu_temperature(0x30) print(f"Current CPU Temperature: {temperature}°C") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值