5001拉斯维加斯-既快又准并且低开销!一作亲解MICRO 2021最佳论文:一种自动化功耗模拟架构

编纂 | 青暮
第54届IEEE/ACM计较机系统布局顶会MICRO 2021在2021年10月16-20日作为全世界于线勾当举办。希腊雅典作为主理都会举行转播。
IEEE/ACM 微系统布局国际钻研会(IEEE/ACM International Symposium on Microarchitecture)是先容及会商进步前辈计较及通讯体系立异微架构想想及技能的重要论坛。本次钻研会搜集了与微架构、编译器、芯片及体系等相干范畴的研究职员,就传统微布局主题及新兴研究范畴举行技能交流。
来自杜克年夜学的谢知遥先容了他们团队的最新事情《 APOLLO: An Automated Power Modeling Framework for Runtime Power Introspection in High-Volume Co妹妹ercial Microprocessors 》,该论文得到了MICRO2021最好论文奖(Best Paper Award)。

谢知遥是杜克年夜学计较机工程专业的博士生、致力在EDA/VLSI 设计呆板进修算法,擅长呆板进修、电子设计主动化、VLSI设计、编程。
他的导师是陈怡然传授。陈怡然传授是杜克年夜学电子与计较机工程系传授,计较进化智能中央主任,致力在新型存储器和存储体系,呆板进修与神经形态计较,以和挪动计较体系等方面的研究。

他们的事情APOLLO是针对于在现代化的贸易CPU或者Micro processors所研发的一个主动化的功耗模仿架构(Power-Modeling Framework)。
AI科技评论有幸约请到谢知遥,为咱们亲自解读这篇论文的前因后果。
如下,AI科技评论对于谢知遥的分享举行了不转变原意的收拾:
1缘故原由和目的该事情是于CPU设计或者运行中所碰到的实际性问题的基础之长进行研究的。
起首第一个也是最年夜的问题。于CPU设计期间需要对于power有更多的相识,而咱们此刻对于power相识是不敷的。这取决在设计时的trade off,即衡量或者弃取。芯片设计最年夜的一个trade off是performance and power,即要好的机能,还有是要低的功耗。
设计师于设计每一一代芯片时都要晋升芯片的机能,凡是反映于晋升IPC或者者最年夜频率等方面。于已往几十年间,由于摩尔定律,机能的晋升较为轻易。
但因为摩尔定律效用放缓,致使机能晋升变患上再也不那末轻易。于这类环境下,设计师就需要于微架构上有更多的立异,但于这个历程中,陪同运行速率的增长,功耗往往也不停增长。
另外一方面输电资源(power delivery sources)技能的成长很是迟缓。起首输电线上的电阻很年夜,致使不克不及提供充足的power。别的封装技能有限,封装上面的电感(inductance)会致使没法提供所需的快速变化的电流或者power。
power及电畅通常成正比,是以很可贵到一个快速变化的电流。要一刹时电流忽然增年夜,只能逐步的增年夜,不克不及一刹时增年夜那末多。
联合两方面因素,促使咱们不仅想要于设计时对于功耗有更多的相识,并且于运行中要对于power举行治理,而不克不及呈现许多不想要的环境。

运行治理中最多见问题于在peak power mitigation。最年夜功耗有一个阈值,假如跨越了阈值,就需要举行治理,使功耗压降低,不然会呈现一系列的问题。治理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的变化等等。
差别类型的power simulation的要领
Netlist Simulation是上述先容的最正确的,但可能需要破费几周时间。APOLLO位在蓝点位置,于连结速率快的同时,正确率很高(虽然不是最正确但正确率可达90%)。2APOLLO优秀性子归纳综合起首,它于设计及运行时,都可以或许对于power举行既快又准地猜测。于贸易化的CPU上可以或许做到90%~95%的准确率,咱们把它于Neoverse N1 CPU长进行实现,咱们发明它面积的overhead只有0.2%。
其次,对于在任何一个设计该模子均可以主动天生。
不仅云云,每一个cycle都能获得一个正确的power,时间分辩率很是好。
并且咱们认为APOLLO模子可以延展到更高条理的模仿。
猜测成果实例
咱们于Neoverse N1贸易化的CPU上面,运行了一个workload。这个workload很是年夜,一共有1700万个时钟周期。咱们对于这1700万个时钟周期的每个cycle都举行猜测,上图展示的是4万个。于工业界用传统的要领可能需要两个礼拜的时间,而用咱们的要领的,几分钟就能够做完。
正确率高、速率快的同时,对于存储的要求削减了100倍以上,只需要存咱们感兴致的旌旗灯号,这也是一个很是年夜的晋升。连结如许的速率、正确度,获得每一个周期的power这于以前的事情中险些是做不到的。
3APOLLO的构成部门
图注:APOLLO的构成部门
APOLLO由两年夜部门构成。于设计时,它是一个又快又准的 power 模子。如图所示如果对于旌旗灯号模仿追踪,所有旌旗灯号都于不断的运动,按照这些可以获得一个正确的power预计。
于CPU运行时,它就会成为一个片上功率表(on-chip power meter)。我可以直接把它做的到CPU内里酿成CPU的一个模块,相称在一个监测东西,可以时时刻刻提供CPU的功耗。
4研究要领
如图,对于在任何一个design咱们获得的都是RTL level。然后运行一些步伐,就会获得一个fsdb/VCD 文件,得悉每一个旌旗灯号于每个周期的一些信息,这是最基本的input。基在此,每一个cycle就能够举行如许处置惩罚。每一个cycle中,对于每一个旌旗灯号(ABCDE)用1暗示它翻转了,0暗示没有翻转,要翻转就必定会有功耗。这是cycle0,一样可以获得cycle一、cycle2等等,翻转勾当就是模子的输入,然厥后猜测功耗。
如图,获得的矩阵的宽度是M, M暗示design内里一共有M个signal,是以一共有M个输入,每一个cycle就是一个sample。接着每一个cycle城市做power simulation,获得最正确的power(p0、p一、p2……),将此作为一个vector。vector也是从p0最先的正确的功耗,有x、y,有输入有label,就能够练习一个machine learning模子,患上出F(x)=y。
咱们想要做的是练习出既正确又效率高的F。夸大一点,咱们的事情始终重要存眷的是动态的power。因为今世CPU都很是繁杂,其实不是那末轻易做,是以咱们就要简化F模子。
焦点思惟
最先咱们认为一个线性的模子,就已经经充足提供既正确又快的power的预计。咱们对于动态的功耗举行模仿,计较的是电容的充放电,把所有的充放电的电容加起来获得总电容,然后乘以电压的平方,就是cycle的功耗。是以它自己就是一个线性模子,咱们认为固然也能够用一个线性模子来模仿总功耗的历程。可是纵然咱们有一个线性模子,但这个线性模子还有是M个input,M依然很是年夜,还有是很繁杂。
咱们的第二个焦点的思惟是:一小部门cycle就可以提供充足的信息。由于许多旌旗灯号都是相干的其实不是彻底彼此自力,许多旌旗灯号甚至彻底同样。只需要看一部门最有代表性的旌旗灯号,就充足作为模子的输入。

是以咱们从M个旌旗灯号中主动拔取Q个有代表性的旌旗灯号,咱们把它叫做power proxies,然后让Q远小在M,如许模子就会变患上很简朴。
详细做法
咱们用一种叫做剪枝的算法——pruning,好比最先是一个linear model,于 Linear model上面还有要加一个penalty term,这个penalty term会处罚所有的weight,假如weight过年夜,loss就会增长,使weight削减。如许就能够让绝年夜部门weight变为0,剩下则是否是0的weight,我认为这些不是零的weight很主要。
纵然加了penalty以后,weight还有必需要不是0,将不是0的weight保留,对于应的旌旗灯号就是要拔取的旌旗灯号。
于拔取的历程中,会加一个很是强的penalty strength,使99.9%的weight全都酿成0,如许可使拔取的旌旗灯号最具备代表性。对于penalty加的是一个叫做Minimax concave penalty(MCP),用在剪枝算法。
拔取有代表性的旌旗灯号,基在这些旌旗灯号,从头练习一个线性的模子,这个线性的模子就是终极的模子。这是第一步,也是最主要的一步。
选用 MCP算法的缘故原由
于剪枝的时辰,选用的是 MCP算法,而不是许多人认识的Lasso或者是其它的。是由于要让拔取的Q远小在M,penalty现实上就要加的很是年夜,是以处罚很年夜。

图注:对于差别的weight,Lasso及MCP的处罚
如图所示,Lasso很简朴,它是一视同仁的,weight越年夜,处罚就越年夜。假如如许就相称在所有的weight都于被处罚。这会致使,于处罚性很年夜的环境下,纵然那些不是0的weight,也会被压于一个很是小的值,模子就会变患上禁绝确。由此基在一个禁绝确的模子,选出来的旌旗灯号咱们认为也是禁绝确的。为了不这类环境,以是咱们利用了MCP。而利用MCP,当weight年夜到必然水平时,不会继承增年夜penalty。用MCP练习的模子,于整个练习历程中正确率都是比力高的,基在正确的模子做的剪枝,咱们认为也是比力正确的。
别的咱们不雅察到MCP选择的旌旗灯号,相互之间的相干性更小,这申明咱们选的旌旗灯号是有代表性的。
全主动呆板天生的基本算法除了了APOLLO的算法以外,咱们还有有一套算法来提供练习数据来历。咱们用纯呆板主动天生许多workload,基在这些workload,来天生上述的input x 、label y等等,workload的天生有一套遗传算法。
最先有一些随机 workload,因为是随机天生的,是以它的功耗比力低。咱们拔取内里功耗高的做crossover或者mutate,这就是遗传算法基本把持。然后天生一些更高功耗的workload,一代又一代功耗会不停增长。
末了天生的workload,咱们把它叫做power virus,它们的功耗很是高。如许咱们就既获得了低功耗的workload,又有高功耗的,把两个掺于一路,练习数据就很周全了,就可以很正确的练习模子,这是咱们全主动呆板天生的一个基本算法。试验成果
起首咱们的试验是基在Neoverse N1及Crotex A77这两个CPU来做的,是以咱们既测了办事器端,又测了挪动真个CPU,让包管它于所有的CPU上都有很好的体现。
测试的时辰也需要workload,这些workload是工程师手动写出来的,很是具备代表性。咱们选选择了12个,既有有低功耗也有高功耗,还有有快速变化的及连结稳定的,笼罩了各类类型。
猜测的成果:粉色的是真正的值,绿色的是猜测的值成果注解,猜测的成果及真正的值具备很较着的相干性,匹配度很高。咱们测了它的error,MAE(mean absolute error)及RMSE(这两个值是越小越好)小在10%,(该值越年夜越好)高在0.95,申明正确率很是高。
同时咱们计较了每一个workload的MAE,发明所有类型的workload的MAE都少在10%,这申明了它的正确性。而且纵然是7%的过错,也是因为清楚度过高,致使每一个cycle之间有一个小过错这个是很难防止的。假如从一个更年夜的measurement window来算平均power,就会更正确。
事实上,APOLLO可以对于任何一个measurement window举行计较,而不单单是 per-cycle。

如上图,假如此刻不需要per-cycle,只要一个average power ,over128个cycle,于这类环境下,只需要70个input,就能够做出一个正确的猜测。猜测成果error小在3%,假如可以或许容忍一个更年夜的measurement window,正确度将会险些靠近100%,是以于降低前提的环境下,它的机能可以有进一步的晋升。
将APOLLO植入CPU
思量到它的input数目少,同时模子简朴、正确度高,是以咱们要把它做到CPU内里。
起首有Q个输入作为input,输入全都是0或者者1,是以这个模子内里不需要乘法器,如许可以节省很年夜一笔开消。

同时weight作为quantization,不需要64位的weight那末准,只要需要十几位的weight,就能够很正确,是以开消又变患上小了。
基在这个模子,用c++就能够很简朴实现这个OMP模子,然后基在 C++的template,举行Hign-Level Synthesis,得到 design的RTL,假如这个RTL 可以及CPU的RTL合于一路,然后咱们去做 tape out,这是一个最基本的思绪,而流程自己也很简朴。
同时基在C++的硬件设计,还有可以verifying,可以验证硬件设计也是正确的。

上面的图是APOLLO于软件上运行的成果。下面是硬件设计做的verification
如图所示,验证的成果两张图险些是没有任何区分的,计较后区分小在0.02%,肉眼险些不成见。但留意下面这张图起首没有乘法器,别的它的weight此刻不是64位,只有11位。于硬件已经经优化的环境下它险些没有正确率的丧失,这申明硬件设计很是好。
硬件必然有trade off,于accuracy及hardware cost之间追求一个均衡,是以咱们计较了一下它究竟是怎样trade off的,然厥后辅助咱们设计一个如许的模块。

如图所示,咱们用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潜于运用它开启了一些新的运用范畴。举两个例子:
CPU中拔取的旌旗灯号的来历于设计期间它可以给设计师许多反馈,如上图可以帮忙设计师来相识 CPU内里功耗的构成。
为了进一步使用这个性子,咱们可以答应CPU的设计师或者架构师,本身限定来历规模,从内里找最有代表性的旌旗灯号等,可使设计师更易理解这些旌旗灯号。经由过程这类要领,这个模子的可注释性就变患上更强,然后更可以或许辅助设计师来举行设计的决议计划。这固然这个是有必然价钱的,假如限定了输入,它的正确率会有必然的降落,但降落很是少。
那末别的一个运用是上面所讲的voltage-droop电压降的问题,面临这个问题也能够用OMP来解决。

上图是用OPM来猜测di/dt的值,横坐标是咱们测到的真实值,纵坐标是猜测的值。当di/dt是正的时辰,电流及power需求于不停的增长,那末这个时辰有一个voltage-droop,电流需求增长,它的电压就会忽然降落。固然,假如电流需求忽然削减,它电压就会忽然上升。
相称在咱们有四个象限,如图两个蓝色区域猜测及现实值彻底相反,这两个是错的猜测。而这两个错的猜测的区域,险些没有点是落于这个处所,就申明猜测错的很少。而于猜测对于的区域内里,咱们的猜测很是准的。
是以咱们的OPM可以于现实芯片运行的时辰来引导咱们行止理这些环境,由于它可以正确的猜测。
中间许多的这些点,各人可能认为它的correlation看起来其实不好。但请留意,咱们的横轴及纵轴都是log scale,其实不是linear scale,实在中间这个点它的值长短常小的,咱们只是自动的去把它放年夜,把这些correlation欠好之处让各人去看清晰一些,现实上这些值很是小,以是现实上运行的时辰影响是不年夜的。这点咱们也能够从pearson simulation看出来,pearson只有0.946,这申明咱们的猜测长短常正确的,是以咱们认为咱们的这个模子可以用在voltage-droop的motivation。同时各人留意这是CPU内部自动防止这个举动,相称在是预防。是以就比再加一套电路去制止它会有用患上多。
6总结快速的power-madelling对于设计及部署CPU孕育发生了本色性的影响
该要领与micro-architecture无关,且是主动化的,可以扩大到多个计较解决方案--CPU、GPU、NPU,甚至是子块。
潜于运用规模:从多核SoC中的power/thermel治理扩大到CPU驱动的自动降压减缓。
ML/Data-Science要领是于设计中的很多方面拥有巨年夜潜力。

雷峰网(公家号:雷峰网)
雷峰网版权文章,未经授权禁止转载。详情见转载须知。





