谢知遥整理
王晔
编辑
青暮
第54届IEEE/ACM计算机体系结构顶会MICRO于年10月16-20日作为全球在线活动举办。希腊雅典作为主办城市进行转播。
IEEE/ACM微体系结构国际研讨会(IEEE/ACMInternationalSymposiumonMicroarchitecture)是介绍和讨论先进计算和通信系统创新微架构思想和技术的主要论坛。本次研讨会汇集了与微架构、编译器、芯片和系统等相关领域的研究人员,就传统微结构主题和新兴研究领域进行技术交流。
来自杜克大学的谢知遥介绍了他们团队的最新工作《APOLLO:AnAutomatedPowerModelingFrameworkforRuntimePowerIntrospectioninHigh-VolumeCommercialMicroprocessors》,该论文获得了MICRO最佳论文奖(BestPaperAward)。
谢知遥是杜克大学计算机工程专业的博士生、致力于EDA/VLSI设计机器学习算法,擅长机器学习、电子设计自动化、VLSI设计、编程。
他的导师是陈怡然教授。陈怡然教授是杜克大学电子与计算机工程系教授,计算进化智能中心主任,致力于新型存储器及存储系统,机器学习与神经形态计算,以及移动计算系统等方面的研究。
他们的工作APOLLO是针对于现代化的商业CPU或Microprocessors所研发的一个自动化的功耗模拟架构(Power-ModelingFramework)。
AI科技评论有幸邀请到谢知遥,为我们亲自解读这篇论文的来龙去脉。
以下,AI科技评论对谢知遥的分享进行了不改变原意的整理:
1原因及目的该工作是在CPU设计或运行中所遇到的现实性问题的基础之上进行研究的。
首先第一个也是最大的问题。在CPU设计时期需要对power有更多的了解,而我们现在对power了解是不够的。这取决于设计时的tradeoff,即权衡或取舍。芯片设计最大的一个tradeoff是performanceandpower,即要好的性能,还是要低的功耗。
设计师在设计每一代芯片时都要提升芯片的性能,通常反应在提升IPC或者最大频率等方面。在过去几十年间,因为摩尔定律,性能的提升较为容易。
但由于摩尔定律效用放缓,导致性能提升变得不再那么容易。在这种情况下,设计师就需要在微架构上有更多的创新,但在这个过程中,伴随运行速度的增加,功耗往往也不断增加。
另一方面输电资源(powerdeliverysources)技术的发展非常缓慢。首先输电线上的电阻很大,导致不能提供足够的power。另外封装技术有限,封装上面的电感(inductance)会导致无法提供所需的快速变化的电流或power。
power和电流通常成正比,因此很难得到一个快速变化的电流。要一瞬间电流突然增大,只能慢慢的增大,不能一瞬间增大那么多。
结合两方面因素,促使我们不仅想要在设计时对功耗有更多的了解,而且在运行中要对power进行管理,而不能出现很多不想要的情况。
运行管理中最常见问题在于peakpowermitigation。最大功耗有一个阈值,如果超过了阈值,就需要进行管理,使功耗压降低,否则会出现一系列的问题。管理power的峰值通常要准确实时计算power。在CPU运行时,根据power的计算减少给定CPU的指令,随之功耗就会降低。
但现在在设计CPU时,很多情况下都是人工在芯片上找能够模拟功耗的信号,这种方式不仅困难而且非常不准确。
此外,更重要的一个问题是快速电流的变化(或者power的变化)会导致一个很快的电压降叫做voltage-droop。
图注:电流的快速变化导致的电压的急剧变化
如图所示,起初电压保持不变,假设这一段时间CPU处于睡眠状态,没有执行任何指令。然后突然运行一个很大的程序,此时功耗和电流会突然增大。di/dt(即电流对时间求导)电流的变化量也会变得非常大。此时voltage-droop从1伏变成0.9伏,这会造成很多问题。要避免这个问题也并非容易,由于发生时间非常短暂,因此对应的处理策略也必须要在极短的时间内将其控制住。既然输电上存在这么多问题,因此在芯片设计时,就要充分模拟芯片CPU上会遇到的各种问题。但如果要做到真实模拟代价是非常大。
工业界标准的Power模拟流程
上图所示的模式是非常准确的,但可能需要花费几周时间,并且非常昂贵,反复花几周时间进行模拟是非常困难的。即使花费了几周时间,拿到了准确的power,但得到的power是平均power,这中间可能存在几千甚至几百万个周期,一个平均power是不够用的。我们还关心最大power、一瞬间的最大power、快速变化时power的变化等等。不同类型的powersimulation的方法
NetlistSimulation是上述介绍的最准确的,但可能需要花费几周时间。APOLLO位于蓝点位置,在保持速度快的同时,准确率很高(虽然不是最准确但准确率可达90%)。2APOLLO优异性质概括首先,它在设计和运行时,都能够对power进行既快又准地预测。在商业化的CPU上能够做到90%~95%的正确率,我们把它在NeoverseN1CPU上进行实现,我们发现它面积的overhead只有0.2%。
其次,对于任何一个设计该模型都可以自动生成。
不仅如此,每个cycle都能得到一个准确的power,时间分辨率非常好。
而且我们认为APOLLO模型可以延展到更高层次的模拟。
预测结果实例我们在NeoverseN1商业化的CPU上面,运行了一个workload。这个workload非常大,一共有万个时钟周期。我们对这万个时钟周期的每一个cycle都进行预测,上图展示的是4万个。在工业界用传统的方法可能需要两个星期的时间,而用我们的方法的,几分钟就可以做完。
准确率高、速度快的同时,对存储的要求减少了倍以上,只需要存我们感兴趣的信号,这也是一个非常大的提升。保持这样的速度、准确度,得到每个周期的power这在之前的工作中几乎是做不到的。
3APOLLO的组成部分图注:APOLLO的组成部分
APOLLO由两大部分组成。在设计时,它是一个又快又准的power模型。如图所示假如对信号模拟追踪,所有信号都在不停的运动,根据这些可以得到一个准确的power估计。
在CPU运行时,它就会成为一个片上功率表(on-chippowermeter)。我可以直接把它做的到CPU里面变成CPU的一个模块,相当于一个监测工具,可以每时每刻提供CPU的功耗。
4研究方法如图,对于任何一个design我们得到的都是RTLlevel。然后运行一些程序,就会得到一个fsdb/VCD文件,得知每个信号在每一个周期的一些信息,这是最基本的input。基于此,每个cycle就可以进行这样处理。每个cycle中,对每个信号(ABCDE)用1表示它翻转了,0表示没有翻转,要翻转就肯定会有功耗。这是cycle0,同样可以得到cycle1、cycle2等等,翻转活动就是模型的输入,然后来预测功耗。
如图,得到的矩阵的宽度是M,M表示design里面一共有M个signal,因此一共有M个输入,每个cycle就是一个sample。接着每个cycle都会做powersimulation,得到最准确的power(p0、p1、p2……),将此作为一个vector。vector也是从p0开始的准确的功耗,有x、y,有输入有label,就可以训练一个machinelearning模型,得出F(x)=y。
我们想要做的是训练出既准确又效率高的F。强调一点,我们的工作始终主要
转载请注明:http://www.0431gb208.com/sjszlff/7594.html