本文讨论的是基于ARM IP的大规模SoC中的电源(时钟,复位等)管理,适用于众核处理器,手机SoC,汽车SoC等等。如果是小规模的设计可能就不适用了,比如MCU或者是简单应用的IoT芯片。
关于芯片电源管理,想到了一个比喻,不一定特别贴切,大家权当一乐。用众核处理器举例,AP可以比作企业/行业;SCP比作中央银行;功耗可以比作资金,企业有了资金就可以开足马力生产,反之就要降低产能。至于BMC嘛,大家都懂。
从宏观角度看,BMC监控着整个设备环境,拥有着至高无上的权力,但是一般不直接参与管理。当系统环境变差(经济过热),BMC给SCP(或者是MSCP,总之一个意思)下发命令。随后SCP根据命令适当降低整个多核CPU的功耗(收紧银根,降低资金流动性),但是这个过程中,SCP可能会降低所有的AP功耗;也有可能是关闭一些AP(治理某些过热企业/行业),保留另外的AP全速工作。反过来,当系统环境比较好的时候,BMC告诉SCP可以放宽功耗(货币宽松)。
从微观角度看,也就是每个AP可以根据自己的需求,向SCP发送请求。比如,工作负载大的时候,要求升压超频(申请拨款或者批贷);或者,工作负载小的时候,要求减压降频。这里有一个要求,一个AP不能直接控制SoC或者其它AP的功耗,只能与SCP通信,由SCP来完成。这好理解,虽然所有企业共享一个资金池,但是一家企业不能直接去抢别的企业的配额。
“治大国如烹小鲜”,很多事情道理是相通的。
回到我们关心的芯片设计,要完成整个芯片的电源管理,需要软硬件结合。一般,上层软件部分交给操作系统(Linux和Android等);下层软件由固件(Firmware)实现;硬件部分由SCP,MHU,PPU这些模块构成,当然Core也需要有相关的硬件支持。这也就是所谓的分层管理机制。
一句话总结,SCP直接控制SoC的电源和时钟,而AP通过硬件和软件接口协同管理。充分理解下面三张图,就明了了。
图一:SCP和AP共同完成电源和时钟管理
图二:SCP负责硬件管理
图三:Linux电源和时钟管理软件栈
对于我们这些逻辑设计工程师来说,仅仅了解硬件设计是不够的,还要了解软硬件之间的接口。只有清楚了软件如何去调用硬件,才能更好的设计硬件。
先来了解一下SoC中电源和时钟管理的硬件架构:
ARM系列 -- PCSA(一)
ARM系列 -- PCSA(二)
ARM系列 -- PPU
接下来是软硬件协同的部分,主要是MHU,PSCI和SCMI:
ARM系列 -- PSCI
ARM系列 -- CSS Message Interface Protocols
ARM系列 -- SCMI
与一些老牌芯片公司比,ARM在芯片电源管理方面做的算不上完美,一部分原因是ARM起步比较晚,尤其是服务器处理器领域里技术积累比较少,而且ARM目前只是作为IP供应商,本身并不量产芯片。至于其它原因,见仁见智,大家自行分析吧。但是,ARM为我们提供了一个较为完整的可参考的方案。那些老牌公司做的再好再完美,不对外开放啊,至多也就是通过公开发表的文章窥探一二。“双鸟在林不如一鸟在手”,是这个道理吧?有时候横向比较技术是没有什么意义的。
本人没有就职于ARM,也不是为ARM鼓吹,仅仅是出于对技术的好奇心写了一系列文章。由于本人水平有限,难免有错误之处,请大家指正。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !