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


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

如上图,如果现在不需要per-cycle,只要一个average power ,over128个cycle,在这种情况下,只需要70个input,就可以做出一个准确的预测。预测结果error小于3%,如果能够容忍一个更大的measurement window,准确度将会几乎接近100%,因此在降低条件的情况下,它的性能可以有进一步的提升。

将APOLLO植入CPU
考虑到它的input数量少,同时模型简单、准确度高,因此我们要把它做到CPU里面。
首先有Q个输入作为input,输入全都是0或者1,因此这个模型里面不需要乘法器,这样可以节省很大一笔开销。
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图

同时weight作为quantization,不需要64位的weight那么准,只要需要十几位的weight,就可以很准确,因此开销又变得小了。
基于这个模型,用c++就可以很简单实现这个OMP模型,然后基于 C++的template,进行Hign-Level Synthesis,获得 design的RTL,如果这个RTL 可以和CPU的RTL合在一起,然后我们去做 tape out,这是一个最基本的思路,而流程本身也很简单。
同时基于C++的硬件设计,还可以verifying,可以验证硬件设计也是准确的。
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图
上面的图是APOLLO在软件上运行的结果。下面是硬件设计做的verification
如图所示,验证的结果两张图几乎是没有任何区别的,计算后区别小于0.02%,肉眼几乎不可见。
但注意下面这张图首先没有乘法器,另外它的weight现在不是64位,只有11位。在硬件已经优化的情况下它几乎没有准确率的损失,这说明硬件设计非常好。
硬件一定有trade off,在accuracy和hardware cost之间寻求一个平衡,因此我们计算了一下它到底是如何trade off的,然后来辅助我们设计一个这样的模块。
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图

如图所示,我们用y轴来表示它的accuracy in error,然后用这个颜色来表示它在硬件上的代价(area overhead),即占CPU比例是多少。
首先可以改变input的数量,另外一方面可以改变 quantization bits,我们改变这两个值观察它对accuracy和area overhead的trade off。
如上图,测量的结果中每个点都会有一个accuracy对应的hardware cost。当W继续小于10时,area会飞快的上升,即quantization 加的太大了,已经使原来的X扭曲掉了。所以quantization不能加的过大,并且W没必要大于12。因此我们策略是保持 W在10~12之间。
如果需要不同的solution,可以改变Q。比如我们根据这个策略,我们现在选到1个solution。如上图,OPM的Q是159,weight是11位,error大概是10%,在Neoverse N1上它的area overhead小于0.2%。所以我们认为它的实现代价非常低,并且准确率足够高,因此我们认为这是一个非常不错的 solution。
所以到现在我已经介绍了它在设计时期,作为一个软件的准确率,和它在片上作为一个硬件的准确率以及实现的代价。

5

潜在应用
它开启了一些新的应用领域。举两个例子:
功耗|既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构
文章插图
CPU中选取的信号的来源
在设计时期它可以给设计师很多反馈,如上图可以帮助设计师来了解 CPU里面功耗的组成。
为了进一步利用这个性质,我们可以允许CPU的设计师或架构师,自己限制来源范围,从里面找最有代表性的信号等,可以使设计师更容易理解这些信号。通过这种方法,这个模型的可解释性就变得更强,然后更能够辅助设计师来进行设计的决策。这当然这个是有一定代价的,如果限制了输入,它的准确率会有一定的下降,但下降非常少。