功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构( 三 )


3

APOLLO的组成部分
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图
图注:APOLLO的组成部分
APOLLO由两大部分组成。
在设计时,它是一个又快又准的 power 模型。如图所示假如对信号模拟追踪,所有信号都在不停的运动,根据这些可以得到一个准确的power估计。
在CPU运行时,它就会成为一个片上功率表(on-chip power meter)。我可以直接把它做的到CPU里面变成CPU的一个模块,相当于一个监测工具,可以每时每刻提供CPU的功耗。

4
【 功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构】
研究方法
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图
如图,对于任何一个design我们得到的都是RTL level。然后运行一些程序,就会得到一个fsdb/VCD 文件,得知每个信号在每一个周期的一些信息,这是最基本的input。
基于此,每个cycle就可以进行这样处理。每个cycle中,对每个信号(ABCDE)用1表示它翻转了,0表示没有翻转,要翻转就肯定会有功耗。这是cycle0,同样可以得到cycle1、cycle2等等,翻转活动就是模型的输入,然后来预测功耗。
如图,得到的矩阵的宽度是M, M表示design里面一共有M个signal,因此一共有M个输入,每个cycle就是一个sample。接着每个cycle都会做power simulation,得到最准确的power(p0、p1、p2……),将此作为一个vector。vector也是从p0开始的准确的功耗,有x、y,有输入有label,就可以训练一个machine learning模型,得出F(x)=y。
我们想要做的是训练出既准确又效率高的F。强调一点,我们的工作始终主要关注的是动态的power。由于当代CPU都非常复杂,并不是那么容易做,因此我们就要简化F模型。
核心思想
开始我们认为一个线性的模型,就已经足够提供既准确又快的power的估计。我们对动态的功耗进行模拟,计算的是电容的充放电,把所有的充放电的电容加起来得到总电容,然后乘以电压的平方,就是cycle的功耗。因此它本身就是一个线性模型,我们认为当然也可以用一个线性模型来模拟总功耗的过程。
但是即使我们有一个线性模型,但这个线性模型还是M个input,M依然非常大,还是很复杂。
我们的第二个核心的思想是:一小部分cycle就能够提供足够的信息。因为很多信号都是相关的并不是完全相互独立,很多信号甚至完全一样。只需要看一部分最有代表性的信号,就足够作为模型的输入。
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图

因此我们从M个信号中自动选取Q个有代表性的信号,我们把它叫做power proxies,然后让Q远小于M,这样模型就会变得很简单。
具体做法
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图
我们用一种叫做剪枝的算法——pruning,比如开始是一个linear model,在 Linear model上面还要加一个penalty term,这个penalty term会惩罚所有的weight,如果weight过大,loss就会增加,使weight减少。这样就可以让绝大部分weight变为0,剩下则是不是0的weight,我认为这些不是零的weight很重要。
即使加了penalty之后,weight还必须要不是0,将不是0的weight保留,对应的信号就是要选取的信号。