一种操作系统下获取cpu温度的方法

xiaoxiao2020-10-23  20

一种操作系统下获取cpu温度的方法
【技术领域】
[0001 ] 本发明涉及服务器领域,特别涉及操作系统下获取CPU温度的方法。
【背景技术】
[0002]在服务器领域,随着服务器的集成度越来越高,越来越普及,厂商和用户对散热系统也越来越重视。不同的散热系统,获取准确的CPU温度是散热的必要条件之一。目前BMC控制的风扇散热系统,获取CPU温度的方式,是通过ME来完成的。首先,ME以PECI方式的读取CPU温度,然后BMC再和ME通信,发送一系列命令请求及ME的应答,最终获取温度值,如图1所示。
[0003]现有的BMC获取温度的方式,绝大多是情况是没有问题的,但是小概率会出现问题,BMC和ME通信的时,如果BMC发送命令后没有按时收到ME的应答,BMC仍然会继续发送下一条命令,此时BMC收到上一条命令的应答,就会造成命令和应答不一致的错乱,最终获取的温度值就是错误的,导致整个散热系统失效。这种失效的表现是,风扇全部全速旋转,噪音非常大,整个系统的功耗也会增加,而且这种故障失效不可自动消除,需要给系统断电,再上电系统才能消除,也不确定故障是否会再次发生。因此需要一种备选方案,来解决当获取温度异常时,仍能通过备选方案来给散热系统提供准确的CPU温度值,保证散热系统稳走性。

【发明内容】

[0004]本发明提供一种操作系统下获取CPU温度的方法,采用增加CPU获取温度途径的方式,保证BMC获取到的CPU温度值的正确性,解决现有技术中获取CPU温度时会造成命令和应答不一致的错乱,最终获取的温度值就是错误的,导致整个散热系统失效的技术问题。
[0005]本发明为解决上述技术问题而设计的这种操作系统下获取CPU温度的方法包括以下步骤:A.BMC判断从ME获得的CPU温度是否正确;步骤A中还包括以下分步骤:Al.所述BMC判断获取的温度值是否超过CPU Tjmax,获取的温度值超过所述CPU Tjmax为错误值,低于所述CPU Tjmax为正确值;A2.所述BMC判断获取的温度值是否低于零摄氏度,获取的温度值超过零摄氏度为正确值,低于零摄氏度为错误值;A3.所述BMC判断获取的温度值与上一个获取到的温度值相差是否偏离理论值,即获取的温度值与上一个获取到的温度值相差CPU Tjmax 一半以上为错误值,获取的温度值与上一个获取到的温度值相差CPU Tjmax 一半以下为正确值;B.如果从所述ME获得的所述CPU温度正确,将所述温度值用于散热系统;C.如果从所述ME获得的所述CPU温度不正确,所述BMC通过B1S获取所述CPU温度;步骤C中还包括以下分步骤:Cl.BMC将电平信号变化传递给PCH的特定GP1 ; C2.触发一个SCI中断;C31.0S执行所述步骤C2中所述SCI中断对应的EventASL程序;C32.在Event ASL程序中通过SMI命令端口,再触发一个Soft SMI中断,系统进入SMM模式;C4.从B1S获取所述CPU温度值,并将该温度值传递给所述BMC ;步骤C4中还包括以下分步骤:C41.B1S开始执行对应的SMI Hander程序,在程序中获取CPU的温度值,并将CPU温度值写入SMI数据端口 ; C42.退出SMM模式,返回到ASL程序中,OS读取SMI数据端口获取的CPU温度值;C43.0S使用ASL程序与BMC进行通信,将CPU温度值传递给BMC。
[0006]本方法,针对目前BMC获取温度方案所存在的问题,进行的了改进优化,增加了备选方案,通过两种方案可选,来获取CPU温度值,判断校验温度值的正确性,某一方案获取值失效时,立即切换到另外一个方案来运行,确保提供给散热系统温度值的准确性,使散热系统正常运行,增加了散热系统的可靠性,同时避免无效温度导致的风扇噪声污染,及能耗浪费。
【附图说明】
[0007]图1是本发明之前的BMC获取CPU温度的方式简化图。
[0008]图2是本发明BMC获取CPU温度的方式简化图。
[0009]图3是本发明BMC获取CPU温度的流程图。
[0010]图4是本发明BMC从B1S获取CPU温度值的流程图。
【具体实施方式】
[0011]名词解释:
IPM1:智能平台管理接口(Intelligent Platform Management Interface)是一种开放标准的硬件管理接口规格,定义了嵌入式管理子系统进行通信的特定方法。IPMI信息通过基板管理控制器BMC (位于IPMI规格的硬件组件上)进行交流。使用低级硬件智能管理而不使用操作系统进行管理,用户可以利用IPMI监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。而且更为重要的是IPMI是一个开放的免费标准,用户无需为使用该标准而支付额外的费用。具有两个主要优点:首先,此配置允许进行带外服务器管理;其次,操作系统不必负担传输系统状态数据的任务。
[0012]BMC:基板管理控制器(Baseboard Management Controller)。一般内置在主板上,支持行业标准的IPMI规范。BMC提供的功能包括:本地和远程诊断、控制台支持、配置管理、硬件管理和故障排除。
[0013]OS:操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
[0014]ME: Management Engine (英特尔管理引擎)该驱动为Intel针对其桌面系列芯片组推出的一款热能管理驱动。它介于固件和系统驱动之间,类似于一种接口(Interface),通过这个接口,系统可以和固件之间相互作用,从而达到改善热能管理的目的。
[0015]CPU:中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心(Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
[0016]PCH: (Platform Controller Hub) Intel 公司的集成南桥。
[0017]B1S: (Basic Input Output System)基本输入输出系统,主要用于计算机开机过程中各种硬件设备的初始化和检测。
[0018]SC1: (System Control Interrupt)系统控制中断,用于通知 OS 执行 Event 程序。
[0019]SM1: (System Management Interrupt)系统管理中断。
[0020]SMM: (System Management Mode)系统管理模式。
[0021]GP1: (General Purpose Input Output)通用输入 / 输出。
[0022]ASL: (ACPI Source Language) ACPI 语言。
[0023]MSR: (Model Specific Register)特殊模块寄存器。它是一组给操作系统或者特权程序使用的寄存器,用于设置CPU的工作环境和标示CPU的工作状态,包括温度控制,性能监控等。
[0024]PEC1: (Platform Environment Control Interface)平台环境式控制接口,它是存在于处理器与其他芯片或系统稳定性监控设备之间的专用单线型总线。
[0025]CPU Tjmax的意思是B1S设置的允许最高CPU温度,这个不是当前温度,而是温度上限。
[0026]下面详细说明本发明的具体实施方案。
[0027]这种操作系统下获取CPU温度的方法包括以下步骤:A.BMC判断从ME获得的CPU温度是否正确;步骤A中还包括以下分步骤:Al.所述BMC判断获取的温度值是否超过CPU Tjmax,获取的温度值超过所述CPU Tjmax为错误值,低于所述CPU Tjmax为正确值;A2.所述BMC判断获 取的温度值是否低于零摄氏度,获取的温度值超过零摄氏度为正确值,低于零摄氏度为错误值;A3.所述BMC判断获取的温度值与上一个获取到的温度值相差是否偏离理论值,即获取的温度值与上一个获取到的温度值相差CPU Tjmax 一半以上为错误值,获取的温度值与上一个获取到的温度值相差CPU Tjmax—半以下为正确值;B.如果从所述ME获得的所述CPU温度正确,将所述温度值用于散热系统;C.如果从所述ME获得的所述CPU温度不正确,所述BMC通过B1S获取所述CPU温度;步骤C中还包括以下分步骤..Cl.BMC将电平信号变化传递给PCH的特定GP1 ; C2.触发一个SCI中断;C31.0S执行所述步骤C2中所述SCI中断对应的Event ASL程序;C32.在Event ASL程序中通过SMI命令端口,再触发一个Soft SMI中断,系统进入SMM模式;C4.从B1S获取所述CPU温度值,并将该温度值传递给所述BMC ;步骤C4中还包括以下分步骤:C41.B1S开始执行对应的SMI Hander程序,在程序中获取CPU的温度值,并将CPU温度值写入SMI数据端口 ;C42.退出SMM模式,返回到ASL程序中,OS读取SMI数据端口获取的CPU温度值;C43.0S使用ASL程序与BMC进行通信,将CPU温度值传递给BMC。
[0028]在系统中,设计双通道获取温度方式,一种是通过ME来获取CPU温度,另外一种是通过B1S来获取温度,两者其一都可以作为获取CPU温度的主方案。正常情况下,可以采用传统做法,将ME获取CPU温度作为主方案,将B1S获取温度作为备选方案。这样设计,获取CPU温度就会比较可靠,任何一条通道出现故障,都会有另外一条通道作为备选,CPU温度值总是正确的,如图2所示。
[0029]如图2和图3所示,BMC首先会和ME通信,通过向ME发送命令,ME以PECI方式向CPU获取温度,得到温度值后,ME再应答BMC,BMC最终得到CPU的温度值。BMC要判断这个温度值是否为正确的CPU温度值,如果是正确的温度值,它就被用于与散热系统,如果是错误的温度值,那BMC要启用备选B1S方案来获取温度,BMC将特定GP1进行高低电平变化,让电平信号变化传递给PCH,PCH的特定GP1接收到BMC发送过来的电平信号变化,将触发一个SCI中断,然后执行B1S程序,来获取CPU温度,再传递给BMC,用于散热系统。如何判断是否为正确的温度值呢? BMC获取温度值后,首先看这个值是否超过CPU Tjmax温度,CPU Tjmax是CPU所能支持的最大温度,可以从CPU MSR寄存器中读取,一般在100摄氏度左右,如果获取值的温度值超过CPU Tjmax,它就是一个无效的错误值;其次判断这个值是否是负数,表示低于O摄氏度,CPU本身工作以后会发热,温度就会上升,温度不会低于O摄氏度的,另外一般服务器系统的工作环境也是常温环境,CPU自身温度不会比环境温度更低;再次,比较前后两次获取的CPU温度值之间的差值是否偏离理论值,ME是在较短时间间隔去获取CPU温度的,并且CPU温度也是线性变化的,相邻两次获取CPU温度,如果相差超过T jmax/2,就偏离了理论上温度的变化幅度,可判定为无效值。通过以上三点,可以判断通过ME获取的CPU温度值是否为正确的值。
[0030]如图4所示,BMC设置BMC芯片的特定GP1电平变化,让这个电平信号变化传递给PCH的特定GP10,这将触发一个SCI中断,OS系统将处理这个SCI中断,去调用对应的Event ASL程序,在ASL程序中,通过SMI命令端口,再触发一个Soft SMI中断,系统将进入SMM模式,B1S开始执行对应SMI Hander程序,在程序中获取CPU的温度值,并将CPU温度值写入SMI数据端口,退出SMM模式,返回到ASL程序中,OS读取SMI数据端口获取CPU温度值,OS使用ASL程序与BMC进行通信,将CPU温度值传递给BMC,BMC将CPU温度值用于散热系统。
[0031]本方法在传统的获取CPU温度方式上,增加了备选方案,通过对获取温度值有效性就行判断,确保提供给散热系统的温度值是正确的,增加了散热系统的可靠性和稳定性。备选方案获取CPU温度的方式,是BMC、OS、B1S三者配合完成的,BMC能灵活调节触发SCI的间隔时间,从而控制散热系统随温度变化的紧密性。备选方案中,程序代码(除B1S获取(PU温度代码外)由OS执行完成,执行效率高。
[0032]以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
【主权项】
1.一种操作系统下获取CPU温度的方法,其特征在于:该方法包括以下步骤:A.BMC判断从ME获得的CPU温度是否正确;B.如果从所述ME获得的所述CPU温度正确,将所述温度值用于散热系统;C.如果从所述ME获得的所述CPU温度不正确,所述BMC通过B1S获取所述CPU温度;D.将步骤C获得的所述CPU温度值用于散热系统。2.根据权利要求1所述获取CPU温度的方法,其特征在于:步骤C中还包括以下分步骤:Cl.BMC将电平信号变化传递给PCH的特定GP1 ; C2.触发一个SCI中断;C4.从B1S获取所述CPU温度值,并将该温度值传递给所述BMC。3.根据权利要求2所述获取CPU温度的方法,其特征在于:所述步骤C2和所述步骤C4之间还包括以下步骤:C31.0S执行所述步骤C2中所述SCI中断对应的Event ASL程序;C32.在Event ASL程序中通过SMI命令端口,再触发一个Soft SMI中断,系统进入SMM模式。4.根据权利要求2所述获取CPU温度的方法,其特征在于:步骤C4中还包括以下分步骤:C41.B1S开始执行对应的SMI Hander程序,在程序中获取CPU的温度值,并将CPU温度值写入SMI数据端口; C42.退出SMM模式,返回到ASL程序中,OS读取SMI数据端口获取的CPU温度值;C43.0S使用ASL程序与BMC进行通信,将CPU温度值传递给BMC。5.根据权利要求1所述获取CPU温度的方法,其特征在于:步骤A中还包括以下分步骤:Al.所述BMC判断获取的温度值是否超过CPU T jmax,获取的温度值超过所述CPU Tjmax为错误值,低于所述CPU Tjmax为正确值。6.根据权利要求1所述获取CPU温度的方法,其特征在于:步骤A中还包括以下分步骤:A2.所述BMC判断获取的温度值是否低于零摄氏度,获取的温度值超过零摄氏度为正确值,低于零摄氏度为错误值。7.根据权利要求1所述获取CPU温度的方法,其特征在于:步骤A中还包括以下分步骤:A3.所述BMC判断获取的温度值与上一个获取到的温度值相差是否偏离理论值,即获取的温度值与上一个获取到的温度值相差CPU Tjmax 一半以上为错误值,获取的温度值与上一个获取到的温度值相差CPU Tjmax 一半以下为正确值。
【专利摘要】本发明涉及服务器领域,特别涉及一种操作系统下获取CPU温度的方法,该方法包括以下步骤:A.BMC判断从ME获得的CPU温度是否正确;B.如果从所述ME获得的所述CPU温度正确,将所述温度值用于散热系统;C.如果从所述ME获得的所述CPU温度不正确,所述BMC通过BIOS获取所述CPU温度;D.将步骤C获得的所述CPU温度值用于散热系统。本方法,针对目前BMC获取温度方案所存在的问题,进行的了改进优化,增加了备选方案,通过两种方案可选,来获取CPU温度值,判断校验温度值的正确性,确保提供给散热系统温度值的准确性,使散热系统正常运行,增加了散热系统的可靠性,同时避免无效温度导致的风扇噪声污染,及能耗浪费。
【IPC分类】G06F11/07
【公开号】CN104899109
【申请号】CN201510226825
【发明人】马井彬
【申请人】深圳市国鑫恒宇科技有限公司
【公开日】2015年9月9日
【申请日】2015年5月6日

最新回复(0)