BMC通过PECI接口获取CPU温度实现方法

Platform Environment Control Interface(一):认识PECI 网上关于此协议的内容很少,自己又正好在学习,为了更深入地理解和掌握知识,发现之前忽略的细节或误解,进一步完善自己的技能,所以开始尝试将自己所学撰写为文章PECI总线上的设备分为host和client。host一般为管理控制器,client一般为英特尔CPU。client的地址范围0x30~0x37,host的地址为0x01。PECI通信,一般由host发出请求,client回复请求,client不会主动发送消息。PECI总线一般情况只有一个host,而client则为一个或者多个。 阅读详情
AI摘要

本文介绍了Intel处理器的温控机制,包括TM1、TM2及温度阈值,还提及相关MSR寄存器。同时阐述了PECI接口,它用于监测CPU及芯片组温度,有三个主要版本。BMC获取CPU核心温度有两种途径,主流是通过南桥上的ME间接获取。

本文转载于网络,侵权删。

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”)

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是一个私有的协议,不得到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。

linux下peci转usb驱动,底软之PECI总线协议 大家好,我是一个BMC工程师、BIOS工程师和Linux驱动工程师,我的文章主中除了聊聊BMC、BIOS和操作系统相关的东西之外,也会涉及一些跟DOS玩耍的有趣经历,请大家多多支持。简介One-wire bus interface, self-clocked, Host-client architecture, negotiable data rate ranging from 2kbps to ... 阅读详情

相关推荐

【C语言编程实现modbus协议,从云端服务器读取温湿度数据】

C语言编程实现modbus协议,从云端读取温湿度数据

chenyu128的博客 451

《UEFI内核导读》Platform Environment Control Interface(PECI)简介

固件C字营·版权所有 敬请关注微信公众号:“固件C字营” PECI是Intel提出,主要用于intel处理器温度监控,功耗控制及状态监测,采用主/从架构的1-wire bus双向总线。 系统架构如下图,其中Host一般是EC或BMC或其他的系统控制器,Client一般是intel CPU。在现在的多核及多处理器架构的...

业余电子爱好者的日常 7905

从硬件到协议栈:深度拆解BMC与CPU温度监控的底层通信机制

本文深入解析BMC与CPU温度监控的底层通信机制,涵盖Intel PECI和AMD APML两大技术路线的硬件接口、协议架构及内核驱动实现。通过详细的技术对比和实战案例,揭示温度监控系统的设计哲学与工程实践,帮助开发者优化服务器硬件可靠性。

vodka的博客 763

bmc关于intel CPU的相关问题(i2c,MCTP)

mctp over pcie (cpu, ast2500)说明

wit_yuan的专栏 6517

BMC开发中的接口抽象艺术:如何用统一API驾驭PECI与APML的异构性

本文探讨了BMC开发中如何通过统一API抽象层处理Intel PECI与AMD APML的异构接口问题。从协议特性分析到工程实现,提供了跨平台接口设计的核心方法论,包括接口契约定义、平台适配实现和运行时动态加载等关键技术,为复杂硬件环境下的统一监控提供可落地的解决方案。

egg99的博客 746

低速信号设计之 PECI 篇

PECI(平台环境控制接口)是Intel提出的单线型双向总线技术,主要用于处理器与系统监控设备间的通信。其采用强上拉和弱下拉的电气设计,支持2Kbps~2Mbps的传输速率,并通过CRC校验确保数据可靠性。PECI广泛应用于计算机系统的CPU温度监测和功耗控制,以及服务器领域的数据中心温度管理和健康状态监测。在布局布线时需注意信号完整性、电源完整性及遵循Intel规范。典型应用案例包括服务器温度管理系统和工作站节能优化,展现了PECI在提升系统稳定性和降低能耗方面的重要价值。

qq_16237389的博客 1263

html抓取cpu温度,一种获取CPU温度的测试方法、系统及计算机存储介质与流程

本发明涉及计算机技术领域,尤其是一种获取cpu温度的测试方法、系统及计算机存储介质。背景技术:cpu(centralprocessingunit/processor,中央处理单元)是服务器的重要组成部件,是服务器的大脑。由于服务器运行过程中cpu会排除大量的热量,同时通过散热器散热。如果散热效果不好,在服务器长时间运行过程中容易出现cpu温度过高,严重影响服务器的性能,甚至导致服务器宕机,后果不堪...

weixin_39808143的博客 778

BMC开发实战:PECI与APML在服务器CPU监控中的架构设计与性能对比

本文深入探讨了BMC在服务器CPU监控中的关键作用,重点分析了Intel PECI与AMD APML两种接口的架构设计与性能对比。通过实际案例和技术细节,展示了如何在不同CPU平台上实现高效稳定的监控方案,包括PECI的重试机制设计和APML的高性能实现,为服务器可靠性提供了技术保障。

food6的博客 239

PECI接口

PECI是用于监测CPU及芯片组温度的一线总线(one-wirebus),全称是Platform Environment Control Interface。它最主要的应用是监测CPU温度,最新版本的PECI接口还包括一些其他的功能。1 Intel Processor的温控机制在CPU中,通常每个CPU核心都有一个数字温度传感器。在PC平台下,处理器可以通过MSR(Mode specific re...

Robins.lee_的博客 1万+

ipmi 获取服务器硬件信息(温度,风扇转速,内存数,硬盘数等等)

java ipmi 获取服务器硬件信息(温度,风扇转速,内存数,硬盘数等等)

PECI 主机控制器 数据手册.pdf

特性 • PECI 3.0 主机控制器 • 执行 PECI 规范的物理层和数据链路层功能 • 支持从 500 kbps 到 2 Mbps(最大)的 PECI 比特率 • 监视读写长度并在正确时间返回 FCS • 监控总线状态 • 序列化 8 位输出数据 • 将输入数据反序列化为 8 位数据包 • 可编程比特率选择,最大比特率取决于具体实现 • 支持所有 PECI 3.0 命令

CPU PECI协议手册

CPU PECI协议手册 【下载地址】CPUPECI协议手册 本项目提供了一份详尽的CPU PECI协议手册,深入解析了PECI(Platform Environment Control Interface)协议的核心内容。PECI是广泛应用于CPU的通信协议,使BMC(基板管理控制器)能够通过PECI引脚实时获取CPU...

gitblog_06711的博客 552

用LightRAG+Ollama搭建本地知识库:从文档上传到智能问答的完整流程

本文详细介绍了如何利用LightRAG与Ollama构建企业级本地知识库,涵盖从文档预处理到智能问答的完整流程。通过实战案例展示,该方案能高效处理海量文档,实现语义搜索与知识图谱关联分析,显著提升信息检索效率。特别适合金融、医疗等领域的技术团队快速搭建智能知识管理系统。

weixin_42535461的博客 190

服务器BMC开发视角:解析CPU管理的两大核心接口PECI与APML

服务器BMC开发视角:解析CPU管理的两大核心接口PECI与APML

深耕嵌入式领用多年, 致力于分享嵌入式领域技术! 1367

From Manual to Magic: How nnU-Net is Revolutionizing Biomedical Image Segmentation Without Human Int

本文探讨了nnU-Net如何通过全自动深度学习技术革新生物医学图像分割领域。作为自我配置的智能系统,nnU-Net无需人工干预即可完成从数据预处理到模型训练的全流程,显著提升医学影像分割的效率和精度,尤其在CT和MRI影像分析中表现卓越。

metal的博客 1083

BitLocker磁盘锁定解决方法

摘要:本文介绍了BitLocker加密磁盘被锁的两种情况及解决方法。对于系统盘锁定,建议在微软账户中查找48位恢复密钥;数据盘锁定可尝试密码或恢复密钥解锁。若密钥丢失,可通过IT支持或数据恢复服务尝试解决。预防措施包括妥善备份密钥到微软账户和离线位置,避免随意更改系统硬件配置。BitLocker安全性高,恢复密钥是解锁关键,提醒用户务必做好备份以防数据丢失。(148字)

yueke06442300的专栏 2674

openBMC发送peci指令

摘要:BMC作为服务器硬件监控管家,通过PECI总线与CPU和ME控制器通信。PCH作为通信枢纽,负责路由PECI指令:当目标地址指向CPU时,PCH转发指令给CPU获取温度/功耗等数据;当指向ME时,则路由给PCH内部的ME控制器管理平台策略。两条关键路径分别为BMC→PCH→CPU(核心监控)和BMC→PCH→ME(平台管理),均由PCH实现指令分流。ME作为PCH内嵌控制器,协同CPU完成底层功能管理。(149字)

2301_76516791的博客 482

博客系统 - 系统简介与首页设计

用Bootstrap实现手机端的博客导航栏效果。

m0_53450409的博客 1237

服务器BMC知识介绍

在介绍BMC之前需要了解一个概念,即平台管理(platform management)。 平台管理表示的是一系列的监视和控制功能,操作的对象是系统硬件。比如通过监视系统的温度,电压,风扇、电源等等,并做相应的调节工作,以保证系统处于健康的状态。当然如果系统真的不正常了,也可以通过复位的方式来重新启动系统。同时平台管理还负责记录各种硬件的信息和日志记录,用于提示用户和后续问题的定位。以上的这些功能...

小孟同学的博客 5万+

axi时序图_(AXI)握手协议(pvld/prdy或者valid-ready)中ready打拍技巧

内容提要ready打拍的问题用FIFO的思路去解决用Buffer的思路去解决问题提出:ready时序如何优化?在valid/ready 握手协议中,valid 与 data的时序优化比较容易理解,(不熟悉valid/ready协议或者valid打拍方法的)大家可以参考上次推送(握手协议(pvld/prdy或者valid-ready或AXI)中Valid及data打拍技巧)。 但是有时候,关键路径是...

weixin_29763641的博客 3323

修复后找不到ip 黑群晖_黑群晖引导U盘损坏了怎么办?

前言虽然一般来说引导U盘损坏的可能性很小,但是避免不了万一出现问题导致黑群晖没有办法引导进入系统也是一件相当麻烦的事情。这里我就用两块U盘做个小试验,看看如果黑群晖上的引导U盘损坏以后,另一块U盘需要怎样写引导文件才能让黑群晖正常引导进入系统。试验开始我这里黑群晖使用的是DSM6.1.7的系统,U盘一块使用的是闪迪的酷豆,另一块就是闪迪的酷铄。目前系统引导U盘使用的是酷豆,VID:0781 PID...

weixin_36239323的博客 8269

System EVENT Log 错误报告机制-CPU 怎么报告给 BMC

本文介绍了服务器系统中CPU错误事件如何通过SEL机制报告给BMC的三种核心路径:1)硬件GPIO直连通路,用于致命错误的最快速上报;2)PECI边带总线,用于状态轮询和错误详情读取;3)系统软件IPMI接口,处理可纠正/可恢复错误的带内上报。文章详细说明了不同错误级别(可纠正、不可纠正可恢复、致命)的上报流程,并对比了Intel、AMD和ARM等平台在实现上的差异。该机制保证了即使系统崩溃也能记录硬件故障,为服务器可靠性提供重要保障。

weixin_48576628的博客 338

mjlab 入门教程(一)MuJoCo 人形机器人强化学习训练 sim-to-real 部署框架

摘要:mjlab是一个结合IsaacLab API与MuJoCo简洁性的GPU加速机器人仿真框架,专为强化学习和机器人研究设计。它提供快速安装(支持uv、pip、conda和Docker)、核心功能(域随机化、NaN守护、观测历史/延迟、执行器/传感器系统)以及从IsaacLab的迁移指南。相比IsaacLab,mjlab更轻量、启动更快,直接构建在MuJoCo Warp上,避免了Omniverse开销。其哲学强调裸机性能、开发者体验和核心领域专注,适合需要快速迭代和直接MuJoCo控制的用户,而Isaac

2506_90492529的博客 2724

cpu风扇转速慢_谁在控制CPU风扇转速?什么是DPTF?

风扇,是CPU、内存和显卡等设备的主要散热渠道,也是计算机系统主要的噪音来源,人们对它是又爱又恨。风扇在机箱里面一会转的快,一会转的慢,它的控制系统在哪里呢?大部分人认为是BIOS控制着它, 毕竟BIOS有很多控制选项和它相关:有些OEM的BIOS允许更加精细的控制:其实不然。除了显卡风扇由显卡的固件自己控制之外,机箱里的其他风扇,包括CPU、内存和机箱风扇都不由BIOS控制,那么是谁在掌控着这一...

weixin_39621669的博客 2774

2025华为杯第二十二届中国研究生数学建模竞赛D题:低空湍流监测及最优航路规划 - 完整解题分析+完整MATLAB源码!(上篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 2585

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

CPUPECI协议手册:掌握CPU核心通信协议的利器

CPUPECI协议手册:掌握CPU核心通信协议的利器 【下载地址】CPUPECI协议手册 本项目提供了一份详尽的CPU PECI协议手册,深入解析了PECI(Platform Environment Control Interface)协议的核心内容。PECI是广泛应用于CPU的通信协议,使BMC(基板管理控制器)能够通...

gitblog_06735的博客 421

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 基于stm32单片机的Grayhill编码器/开关软件设计
下一篇: 一条超级简单的故意让linux死机/宕机的命令
masterbee
博客等级 码龄10年 80粉丝 26原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值