2

计算机如何进行整机功耗测量和控制?最新Psys技术在笔记本、台式机和服务器中的应用

 2 years ago
source link: https://zhuanlan.zhihu.com/p/456314879
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

计算机如何进行整机功耗测量和控制?最新Psys技术在笔记本、台式机和服务器中的应用

2021 新知答主

节电提高每瓦效能,已经成为计算机系统研究的重点方向之一。它的驱动力不但出于减少碳排放的大环境使然,也是主频上升困难,需要另辟蹊径使然。Intel和AMD这些年在电源精确控制方面出了很多技术,包括不断升级的睿频技术,更随着CPU中的专有电源控制IP PCU的引入,加入了ITBMTHWPSST等等技术,本专栏也有大量文章介绍他们。这些技术能让CPU忙的时候更快,闲的时候更低功耗。对功耗的测量和控制,CPU有CPU的RAPL(RUNNING AVERAGE POWER LIMIT),内存有内存子系统的RAPL(RUNNING AVERAGE POWER LIMIT),分别对两个子系统进行闭环控制。需要注意的是CPU RAPL和睿频3.0有交集,具体细节我们介绍RAPL再细谈。

但这些技术往往在某个子系统中进行功耗的测量和控制,但对整个单机系统却缺乏统一的方法和手段。笔电系统最先发现这种需求,这不但在于笔电系统电力更加稀缺,而且在某些模块闲置时,可以协调更多电力供给CPU和GPU,从而展现更好表现。要协调电力,必须准确知道现在的瞬时功耗,要怎么做呢?也许同学们立刻想到这样:

v2-035904aedeabc037f2d8a62f56edc918_720w.jpg

外接一个功耗表,多大的事。其实这样不行,不但因为这样CPU无从得知,无法做到闭环管理,更是因为这样恨不准确!看过我介绍笔电充电子系统的文章:

大家也许还记得我在文章里面提到,笔电在插入充电器(Brick)的时候,电力来源不但来自充电器,如果电力需求巨大的时候,电池还可以同时供电。现在大家知道为什么外接电力表结果大谬的原因了吧。

笔电系统率先引入整机功耗测控系统Psys(Power in System)技术,并随着它逐渐成熟,这项技术最近也乘势进入服务器和台式机系统中。那么Psys究竟是怎么工作的呢?

整机功耗的测量和汇报

只有准确了解问题,才能正确处理问题。整机功耗的闭环管理,第一步就是准确测量瞬时功耗,这也是Psys系统的信息输入端。笔电系统和服务器、台式机系统的处理方式稍有不同,我们先从最复杂的笔电讲起,再推广到服务器和台式机系统中。

在笔电系统中,Psys系统框图如下:

来源:参考资料1

乍一看相当复杂,其实很好理解,我们把它分成两部分:功耗采样部分功耗信息输入部分,分别来讲解,这样大家就可以很容易厘清系统的关键部分。

功耗信息采样部分居中的是充电管理芯片:

看过我们前面的文章:

老狼:为什么笔记本电脑可以边充电边用?这样会更费电池吗?笔电充电子系统详解

的同学应该还记得,Charger芯片不但知道从Adapter那里的输入电流,也知道必要时从电池那边的输入电流。Changer芯片,如我们文章中的Renesas ISL9241芯片,则很容易的知道总电流:

总电流 = Adapter电流 + 电池电流

Charger将这个总电流乘以一个系数,驱动转换电阻RPsys,在RPSys两端产生一个电压。测量这个电压就可以准确的知道现在的瞬时功耗。那么谁来采样这个电压呢?

我们来看看功耗信息输入部分:

居中的就是VRM(Voltage Regulator Module, 电压调节模块)了。关于它,我专门有篇文章介绍:

它是个主板上的专有芯片,负责按照根据CPU中PCU(老狼:CPU中的电源管家:PCU)给出的SVID[2],提供特定的电压。

VRM加入了对Psys的支持,CPU中的PCU以特定的SVID请求下,VRM会采样RPsys两端的电压,经过换算,生成瞬时功耗,传给PCU。PCU平均1ms会要一次这个信息,信息除了自用,还将其转换成MSR供带内读取,和PECI信息,供带外读取。

好了,笔电系统Psys的测量系统介绍完毕。那么台式机和服务器整机能不能照搬过去呢?不能,为什么?因为缺少了很重要的一环。这一环就是充电管理芯片Changer,在台式机和服务器中并没有!怎么办呢?

其实也好办,让我们回到为什么需要Changer来提供Psys信息的源头吧,为什么呢?因为只有它才同时知道电源和电池的供电信息!而台式机和服务器本身也不需要电池,那么只要电源能够提供准确的信息就行了。服务器供电模块CRPS可以直接驱动Rpsys来做同样的事,而台式机就不这么简单了。台式机通用的ATX标准已经运行十几年了,缺乏相应的信号来给PCU提供信息。Intel最新的ATX12VO电源标准,让这一切成为了可能,新增的Ipcu引脚让VRM可以通过它来计算瞬时功耗。关于ATX12VO标准,我会很快写文章介绍。

整机功耗的控制

既然知道了整机的瞬时功耗,结合BIOS提供的整机功耗上线,以及温度控制,就可以指定整机功耗策略了。Intel在这里借鉴了CPU功耗控制的PL1、PL2、PL3、PL4和Tau,提出了PsysPL1、PsysPL2、PsysPL3、PsysPL4和PsysTau来进行整机功耗控制:

来源:参考资料3

关于PLx的介绍,可以参考这篇文章:

关于PsysPLx的内容,因为和PLx很类似,可以直接阅读参考资料3,我这里就不展开了。

最后总结一下,Psys的信息采集部分由PCU的PCode驱动,信息来自Charger或者PSU(Power Supply Unit);控制部分也由PCU驱动,参数由BIOS设置初值。在运行时,由NM(服务器)、EC或者ME通过PECI进行带外更新参数,进行运行时控制;或者通过DTT等工具,通过改写MSR,进行带内运行时控制

Psys在运行时,和RAPL(RUNNING AVERAGE POWER LIMIT)和笔电的RATL (Running Average Temperature Limiting)有着微妙的互动。关于这两个技术,我再分别介绍,敬请期待。

欢迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。关注公众号,留言“资料”,有一些公开芯片资料供下载。

其他CPU电源管理的文章:

参考资料:

[1]: VRM design guide

[2]: VRM and EVRD 11.1 Design Guidelines

[3]: Gen8 and Gen9 CPU Datasheet: https://www.bhphotovideo.com/lit_files/518199.pdf

[4]: https://datasheets.su/DS/OnSemi/NCP81228-D.pdf


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK