请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 14111|回复: 26

关于如何设计更精确的架构级(或RTL级)功耗模拟器(Power Model) [复制链接]

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32844
发表于 2010-3-1 16:23:37 |显示全部楼层

关于如何设计得更精确的架构级(或RTL级)的功耗模拟器(power-consumption simulator)




我想请教一下,在架构级别做功耗分析,来逼近RTL,有什么好的论文么?最近我们正在做这方面的事情~~,在Gate-level级别统计功耗太费时间,我们打算针对现有硬件,在RTL级别统计功耗。

目前的做法还是比较简单的。通过跑一个场景,在gate-level级别,我们通过PrimeTime为硬件统计功耗,收集到这个场景跑动过程中的全部功耗,这个数值比如设定为W瓦特。然后通过仿真RTL, 我们收集到了每个模块在运行时候的状态,比如Full speed mode / 80% Speed mode / 50% Speed Mode(这些mode改变是通过模块内部的Power manager Unit),比如Full speed mode 花费了 20%的cycle,80% Speed mode花费了 50%的cycle,50% Speed Mode花费了30%的cycle,而总的cycle数比如是一百万个cycle。

那么如果我们称Full speed mode下每个cycle花费功耗为W1,
80% speed mode下每个cycle花费功耗为W2,
50% speed mode下每个cycle花费功耗为W3,
那么功耗统计公式就可以求出来 W = (20%*W1 + 50%*W2 + 30%*W3 )*1,000,000

最后,可以看出公式里面有三个未知数,那么我们通过跑三个场景就可以分别求这三个未知数,级出来当前模块在不同mode下的功耗(这个值类似于一种平均功耗,即每种mode在不同场景过程中的平均功耗)。然后在RTL仿真的时候通过event-driven,在每次mode切换的时候把被切换走的mode,以及这个mode经历过的cycle数都传给功耗统计模块,然后实时的累加出一个场景在不同时刻的功耗变化曲线。

但是我打算在更高抽象级别或是在当前抽象级别获得更精确的功耗统计方法,不知道有没有大牛知道什么好办法?现在GPU的功耗越来越高,简直快成电耗子了……





PS:刚刚我自己猪头,把帖子误删除了……{:4_129:}

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-11-3
积分
2401
发表于 2010-3-1 16:27:23 |显示全部楼层
呵呵,老大也犯错误啦...

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-10-14
积分
2161
发表于 2010-3-1 17:35:27 |显示全部楼层
系统级别还是RTL级别的?
RTL级别的,可以看看这个已经商用的,
http://www.ed-china.com/ART_8800 ... 016_OT_b386cb6c.HTM
利用Palladium III内置的存储器与RTL编译器功率估算引擎,Cadence提供了第一款高性能、周期精确型的综合解决方案,提供了硬件和软件设计的全系统功率分析。

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32844
发表于 2010-3-1 18:36:30 |显示全部楼层
系统级别还是RTL级别的?
RTL级别的,可以看看这个已经商用的,

利用Palladium III内置的存储器与RTL编译 ...
sirc 发表于 2010-3-1 17:35



   
我们主要应用目的是对于现有silicon proof的GPU硬件进行功耗模拟,日后可能会集成到SDK当中,给软件开发程序原来用,让软件工程师在描述场景的时候知道怎么样写D3D程序可以降低功耗,怎么样就会浪费功耗。所以尽量不能以来第三方工具,尤其是那种需要run license的工具……

不知道这方面有什么NB的论文可以看看?

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-10-14
积分
2161
发表于 2010-3-1 19:40:48 |显示全部楼层
回复 4# ic.expert


     可以用建立查找表的土方法吗?在芯片公司,用第三方的工具或者实测把芯片所有case运行时的功耗都精确的仿真出来或者实测出来,
接着用户调用SDK,执行不同的工作模式,就是查询一下查找表,输出一个功耗值。既然已经有芯片实物了,这样应是最精确的。
     我可能是没有理解老大你的意思,呵呵。
1

查看全部评分

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32844
发表于 2010-3-1 20:29:59 |显示全部楼层
回复  ic.expert


     可以用建立查找表的土方法吗?在芯片公司,用第三方的工具或者实测把芯片所有case ...
sirc 发表于 2010-3-1 19:40


大牛果然是好办法,上午cjp大牛也这么说来着。关键是如何把netlist计算出来翻转功耗表和RTL乃至C_model对应起来~~。

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32844
发表于 2010-3-3 10:47:02 |显示全部楼层
求一些CNKI的相关论文~ 扫扫盲  全给的另加300文开源通宝~

高性能微处理器微体系结构级功耗模型及分析
体系结构级功耗分析方法
基于结构级的低功耗设计方法
一种基于龙芯CPU的结构级功耗评估新方法
龙芯1号处理器结构级功耗评估有效性分析
基于物理反标的处理器功耗建模与评估方法
面向低功耗优化设计的系统级功耗模型研究
体系结构级功耗分析方法
不同层面上处理器功耗评估工具的对比研究
一种基于FPGA的RTL级电路功耗评估方法
一种基于元操作的宏模块功耗建模方法
基于SimpleScalar的性能和功耗分析多核模拟器  
多核处理器功耗和热量模型研究及实现      
一种处理器结构级功耗评估方法
单芯片多处理器结构功耗评估方法研究
体系结构级功耗分析方法
ASIC设计中的功耗估算
面向低功耗优化设计的系统级功耗模型研究
一种基于统计信息的Cache漏流功耗估算模型


{:4_162:}

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2009-11-18
积分
601
发表于 2010-3-3 11:42:19 |显示全部楼层
本帖最后由 番茄爸爸 于 2010-3-3 11:45 编辑

回复 7# ic.expert


    楼上的,19篇中3篇重复,计16篇如下,结账赶紧地~

  














1

查看全部评分

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-11-3
积分
2401
发表于 2010-3-10 22:16:54 |显示全部楼层
大牛果然是好办法,上午cjp大牛也这么说来着。关键是如何把netlist计算出来翻转功耗表和RTL乃至C_model对 ...
ic.expert 发表于 2010-3-1 20:29


老大这个工作有进展不?

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32844
发表于 2010-3-17 20:57:41 |显示全部楼层
老大这个工作有进展不?
cjpsky 发表于 2010-3-10 22:16



   
这里有一篇凡启飞博士的论文,可以参考一下,目前我是依照这篇论文作为主要参考对象。本文种主要的统计方法和我最开始描述的统计方法类似,但是每个module分的情况相当的多(而不是像我一样每个模块仅仅分三种情况~),Module分的也相当的细。不同的情况都会导致不同的累加功耗数值。

从图形流水线的角度来说,比如Triangle Setup单元,首先是否背面剔除,第二,是否三角形或是线段或是点,是哪一种Primitive拓扑结构,Script\Fan还是等等。第三,是否对Triangle进行切割,分多少种情况切割。要考虑的情况非常得多。更为复杂的情况不是考虑一个动作能产生多少功耗,而还要考虑到从一个动作切换到另一个动作花费的功耗。因为在集成电路当中,功耗就是来源于状态的切换,所以从状态之间的迁移更是要考虑到位!

其实最难的地方我觉得是写Test Case,怎么样写Test Case才能做到尽量小的误差内把各个动作的功耗都测试出来。当然,back-end工具可以通过设计寄存器数值如何翻转的摸式来统计局部功耗。通过不同翻转情况的脚本拼接这些局部功耗,从而组建一个预定义情况所花费的功耗。但是这需要大量的工作……工作量太大了……。而且迁移到下一个架构中会完全失效……。另一个方式是通过写一些顶层的API来产生某种类型的动作,从而通过线性方程组来求解各个预定义情况下的功耗数值。但是写这个得人也需要极为了解架构和RTL。


总的来说,这东西还是有的做的,凡启飞博士的论文表明,他的龙芯功耗模拟器可以功耗预测控制在10%的误差范围内。还是相当精确的……。另外,关于统计功耗我个人认为的划分方式应该包括如下:
逻辑电路,时序电路,RAM,CTS。总计这四部分……


大牛多多批评~~~

使用道具 举报

Rank: 1

注册时间
2010-3-18
积分
16
发表于 2010-3-18 00:48:50 |显示全部楼层
关键是通过primeTime得到的平均功率是否精确,这个对testbench的选择要求很高
1

查看全部评分

boiling the ocean

使用道具 举报

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-7-11
积分
32844
发表于 2010-3-18 10:42:12 |显示全部楼层
关键是通过primeTime得到的平均功率是否精确,这个对testbench的选择要求很高
linkle 发表于 2010-3-18 00:48



   
PT抽取的功耗来自于AP&R之后的数据,而测试激励就是我上述说的两种方式,一种是通过实际API调用,另一种就是通过控制固定寄存器翻转的方式。我倾向于前者。请问,这个和Testbench有什么关系么?希望大牛多多指点~

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2009-10-14
积分
965
发表于 2010-3-18 11:03:03 |显示全部楼层
本帖最后由 cyj 于 2010-3-18 11:05 编辑
这里有一篇凡启飞博士的论文,可以参考一下,目前我是依照这篇论文作为主要参考对象。本文种主要的 ...
ic.expert 发表于 2010-3-17 20:57



写得不错,节选一下。
--------------------------------------------------------------------------------------



2.3  处理器功耗评估方法
   

研究人员在提出低功耗优化技术之后, 需要对优化前后的处理器功耗进行评估,得到量化数据。除此之外,处理器的功耗问题日益严重,设计者们在设计时越来越关心处理器的功耗, 并希望从开始设计到最终设计完成都能清楚地了解设计的功耗水平。基于以上两个原因,快速且精确的功耗评估方法对低功耗设计有至关重要的作用。

功耗评估技术研究的两个焦点是精度和速度,这二者之间也存在着矛盾。一般来说,处理器设计根据体系结构设计、RTL代码设计、逻辑综合(门级网表) 、版图设计(门级和晶体管)等不同的抽象层次,划分为不同的设计阶段。不同的设计阶段具有不同的功耗分析和优化方法。抽象层次越高,功耗分析速度越高,精度越差,所采用的功耗优化技术成效越明显;抽象层次越低,功耗分析速度越低,精度越高,所采用的功耗优化技术成效越差。对于一个大规模电路来说,其功耗分析方法根据芯片的不同设计阶段可以分为以下几种:1)结构级的功耗分析方法,在性能模拟器上进行功耗分析;2)逻辑(RTL)级的功耗分析方法,在RTL 代码设计完成之后进行功耗分析;3)门级(网表级)的功耗分析方法,使
用逻辑综合之后的门级网表和互连线延时模型, 或者布局布线完成之后的网表和版图寄生参数进行功耗分析;4)晶体管级的功耗分析方法。其中前两个阶段的功耗分析方法由于不需要任何真实电路的实际信息, 因此属于较高层次的功耗分析方式,一般在逻辑综合之前进行。门级和晶体管级的功耗分析方法必须在物理设计阶段进行。



2.3.1  结构级的功耗评估方法

学术界在研究微处理器结构时,采用的研究平台通常是模拟器,如Simplescalar(Austin et al, 2002),GEMS(Martin et al, 2005),这些模拟器可以比较精确地模拟处理器的结构以及时序行为,研究人员可以调节处理器的结构或参数,运行各类 Benchmark测试程序,从而决定最合适的处理器结构和配置。 因为模拟器的广泛使用, 处理器结构级的低功耗研究工作通常是建立在模拟器基础上。研究人员在模拟器中加入功耗模型,对处理器结构或配置的修改也可以反映在功耗模型上。结构级功耗评估方法如图2-7 所示:在性能模拟器上运行测试程序,得到性能数据的同时也可以得到处理器内部的统计信息(如模块访问次数) , 功耗模型在接收处理器配置信息之后可以得到每个模块的静态功耗信息,然后可以通过这些信息计算出处理器的功耗。 不同的结构级功耗评估方法有不同的性能模拟器和功耗模型,二者之间没有必然的关联,也即是说一个功耗模型可以应用于不同的性能模拟器上。 比较著名的结构级功耗模型有 SimplePower(Ye et al, 2000),Sim-Panalyzer,PowerTimer(Brooks et al, 2003),Cai-Lim(Cai, 1999),Wattch(Brooks et al, 2000)。





目前使用最广泛的功耗建模工具是 Wattch。Wattch将处理器分成转移猜测、重命名、发射、缓存等 10 个模块,每个模块可以通过处理器的工艺和电路参数得到每访问一次所消耗的能量。在功耗建模时,Wattch将处理器单元的结构分为四类:ARRAY 结构,包括 CACHE、寄存器堆等;CAM 结构,包括 TLB 等全相联查找逻辑;随机逻辑,包括功能部件、指令窗口选择逻辑等;时钟结构,包括时钟的 buffer、时钟线、负载电容等,然后根据不同的结构建立不同的功耗模型来计算功耗。

其中ARRAY和CAM采用的是Cacti (Wilton et al, 1996, Thoziyoor et al, 2007)中的模型。Cacti 是 DEC公司开发的专门用来评估Cache 的延时、功耗,面积的工具。只要使用者输入 Cache 的大小、相联度、块大小等基本的结构信息和工艺参数,Cacti 就可以得出该 Cache 的动态功耗和静态功耗、所占面积、访问 Cache的延迟等结构设计者关心的物理信息。

对于功能部件等随机逻辑,Wattch只是简单地使用了经验数据,认为每次加法或乘法等运算会有一个固定功耗值。对于时钟网络,Wattch定义了4种门控模式来估计时钟网络的功耗。另外 Wattch 也支持根据工艺进行缩放,但是这会导致功耗评估结果不准确。

在运行测试程序时,Wattch使用 SimpleScalar模拟器统计每个模块被访问的次数,然后可以计算出处理器各模块的功耗和处理器的总功耗。由于模拟器和功耗建模都存在误差,Wattch得到的功耗数据也具有误差,Brooks et al(2000)指出Wattch 误差只有 10%,而实际上对于很多处理器设计,采用 Wattch 得到的结果的误差已经有 25%,如图 2-8 所示。




SimplePower(Ye et al, 2000)功耗模型并不只是考虑模块是否活动,还考虑到了模块输入信号的翻转。该模型对数据通路中的部件分别建立了一个查找表(Look-Up Table, LUT)。该表在运行测试程序前构造生成,运行测试程序时采用部件上一拍的输入数据和当前拍的输入数据在 LUT 中查找即可得到该功能部件在这个时钟周期消耗的能量。对于输入信号独立的模块,LUT的规模会比较小;对于输入信号之间有关联的模块,查找表的规模跟输入信号的数目成指数关系。如对于 32 位宽的加法器,其查找表将有 264项,将模块进行划分可以减小 LUT的大小。由于采用了查找表,相比 Wattch,SimplePower 对功能部件功耗的刻画要更准确。

SimPanalyzer提出的功耗模型接近物理单元库层次, 采用了详细的 MOSFET寄生参数来刻画晶体管的功耗。 译码器等简单模块的功耗可以由内部晶体管的功耗之和计算出来。 存储模块的构造比较规则, 功耗容易刻画, 因此在 SimPanalyzer中主要刻画了 TLB、Cache、BTB、Register File 等存储模块的功耗,并且具有较高的准确性。由于处理器中存在着大量的随机逻辑,将它们都分解成晶体管是不可能的,因此 SimPanalyzer 不能对 ALU等随机逻辑的功耗进行评估。


PowerTimer(Brooks et al, 2003)是由 IBM 开发的一个更为精确的结构级功耗评估工具,不过它的代码并不公开。其功耗数据的计算相比其它结构级功耗模拟器更加细致,用户需要提供非常详细的处理器的工艺和电路参数,甚至包括处理器中触发器的个数,最后得到的处理器的功耗数据也更接近真实值。

陈洵  等(2006)综合了 SimplePower 和 SimPanalyzer 的优点, 建立了更准确的功耗模型。在该模型中,对ALU 等随机逻辑采用了 SimplePower 中的功耗模型,对 Cache、时钟等模块采用了SimPanalyzer中的功耗模型。总的来说,ALU 等随机逻辑的功耗评估比存储模块难得多,虽然 SimplePower 对 ALU 的功耗评估有比较好的准确度,但是对于通用处理器中大量复杂的模块,要构造一个查找表会非常困难。比如龙芯 2 号处理器的操作队列模块有 4 条重命名总线、4 条写回总线以及各种其它控制信号作为输入,要针对所有输入的变化来构造查找表,并且尽量减小查找表的规模是非常困难的。

由于设计方法和工艺的变化, Wattch等功耗评估模型逐渐不适合作为结构级的功耗模拟器。主要原因有:1)处理器设计方法的变化。现代处理器更多地采用了 ASIC 综合的方法,如处理器中的各种队列通常是通过综合得到,而不是全定制,因此不能用 RAM 或 CAM 来刻画。对于这些由随机逻辑组成的模块,一直就没有一个较好的功耗评估方法。2)制造工艺的变化。在不同的制造工艺下简单地按照 Wattch 中的方法进行缩放会导致准确度变得更差。工艺的进步同时会使得静态功耗变大,导致总功耗估计不准。3)时钟网络的功耗估计不准确。 多核处理器的兴起使得片上互联变得越发重要, 不少研究人员开始研究片上互联网络的功耗。 和处理器核的功耗评估类似, 也要将互联网络分解成各个模块,
如 Buffer、Switch、Arbiter、互联线等,然后对这些模块进行功耗建模,其方法和 Wattch等类似,如 Orion(Wang et al, 2002)。



2.3.2  指令集功耗评估方法

指令集功耗模型以系统的指令集(Instruction Set Architecture, ISA)为切入点,描述了程序执行时每条指令的功耗特征。在ISA这个层次,每条指令的执行涉及到流水线上的每一个相关部件。指令的操作码、寻址方式、指令格式等确定了每条指令的基本功耗。 在相关研究中通常采用统计平均值的方法来计算每条指令的功耗。

普林斯顿大学的Tiwari et al(1994)早在1994年就对处理器的软件功耗模型的建模方法进行研究,并提出了指令级功耗分析模型(Instrucion Level Power Analysis models, ILPA)的概念,用以优化软件的功耗。他们认为一条指令的功耗是指令本身执行时的功耗,加上指令之间相互影响所产生的功耗。他们根据功耗计算公式 E=U×I×N×T(U 为电压,I 为电流,N 为时钟周期数,T 为时钟周期) ,把处理器作为一个黑盒来处理,通过编制含有不同指令的循环程序,用测试仪测量芯片的工作电流,来计算每一条指令的功耗,并针对 486DX2 和SPARClite934处理器进行了实验验证, 对于486DX2, 通过代码优化可以减少40%的能量消耗。 研究人员虽然考虑了指令在不同执行环境下状态空间对功耗的影响
问题(比如 Cache 是否命中、流水线停顿) ,但由于该方法的策略过于简单,所以精度不高。虽然如此,Tiwari 等人的工作依然具有里程碑的意义。随后,意大利 Catania大学的 Sarta et al(1999)对这一研究方法进行了改进,在建立指令级功耗模型时考虑了操作数对指令功耗的影响,模型精度有所提高。


ILPA 指令集功耗模型是对指令集内的每一条指令执行时消耗的能量进行描述,这样只需要知道每条指令的执行环境就可以对测试程序进行功耗分析。指令集中的每一条指令都对应一组功耗数据, 用以表示这条指令在不同操作数和不同执行环境下的功耗。 研究人员需要考虑操作数的不同、 处理器结构的设计和配置、以及指令之间的相互影响等各种因素,建立多维查找表来描述每条指令的功耗。每个影响因素可以作为查找表的一维变量。影响因素考虑得越多,则功耗数值越精确,同时查找表越复杂。

因为很难将一条指令的功耗跟处理器每个模块的功耗直接关联起来, 所以指令级功耗分析具有统计上的意义,理论依据薄弱。具体来说,模块的动态功耗跟输入信号的翻转有关,而信号的翻转并不是由当前指令决定的,而是和前面的指令、处理器的状态、处理器的配置等有关。有些指令集功耗模型考虑了当前指令的功耗和前面一条指令之间的关系,但是对于超标量处理器,情况并没有这么简单。比如对于一条浮点运算指令,它所引起的译码器、运算部件、操作队列、寄存器堆等部件的信号翻转和相应的功耗并不只是和前一条指令相关, 而是和更前面的若干条指令相关,并且相关关系只有在运行时才能确定。为了得到一个准确的功耗模型,可以建立每个指令的功耗函数,该函数与当前指令、前几条指令、处理器结构等都有关系。但是这样的话,函数的复杂度会非常高,例如,对于一个指令数为 n 的 CPU,如果仅对当前指令建模,则复杂度为 n,如果考虑了前一条指令,则复杂度为 n2。如果要进一步考虑指令的操作数、Cache 失效、分支预测错误等,其复杂度将会高到不可控制。 由于精度的原因,指令级功耗分析模型不适合复杂的通用处理器,也不适合进行处理器动态功耗分析, 而比较适合结构相对简单的嵌入式处理器的平均功耗分析。

钱贾敏  等(2004)在指令集功耗模型的基础上提出了基于复杂度的软件功耗模型。该模型以程序所使用的算法的复杂度为建模参数,根据输入规模即可计算出程序的功耗。比如一个算法的复杂度为, 2() ( ) f nOn = ,则假设其功耗0212 3 E ccncn =+ + ,即认为功耗和复杂度之间是线性关系,只需要知道输入规模n 就可估计出功耗。在建模时,先选取算法复杂度函数的典型输入,并利用现有指令级模型分析方法获得该函数在这些典型输入情况下的功耗, 然后利用线性回归法计算出该功耗模型的系数 (c1, c2, c3 等) , 从而获得完整的该程序的功耗模型,并可以用于快速估算该函数在任何输入规模下的功耗。 该方法相比指令集功耗模型要简单得多,由于是建立在指令集功耗模型的基础上,准确性较差,不过可以在应用程序算法级对程序功耗进行粗略的评估。



2.3.3  RTL 级和电路级的低功耗评估方法

在寄存器传输级的功耗评估上,现有的工作比较少,而且从已有的工具支持来看,功耗评估的精度也比较差,并且从寄存器传输级到门级通过逻辑综合即可
实现,所以在寄存器传输级评估功耗的意义不大。


较精确的功耗分析方法是使用 EDA 工具对门级网表进行功耗评估。这种方法首先使用仿真工具对门级网表进行仿真, 得到信号的翻转率信息 (通常为 VCD或 SAIF 文件) ,然后功耗分析程序根据翻转率、标准单元的功耗模型和线网寄生参数计算出整个网表电路的功耗大小。这种方法准确度很高,通常用于评估处理器的最大功耗,但是由于门级网表级的仿真速度很慢,故不可能对大型测试程序进行功耗评估。

晶体管级的功耗分析借助 SPICE 仿真的方法进行,由于效率较低,很少用在数字大规模集成电路分析中。门级功耗分析可以得到与之非常接近的精度。 上述基于功能模拟的方法也称为动态功耗分析方法。与此相对,静态功耗分析方法没有功能模拟的过程,翻转率和电路的初始状态是静态设定的,而不是在功能模拟时统计得到。在功耗分析时,根据电路拓扑结构通过逻辑状态传递的方法来得到各个逻辑门输入信号的状态和翻转率,最终根据输入状态、翻转率和逻辑门的功耗模型计算出各个门的功耗, 将这些门的开关功耗加起来可以得到整个芯片的功耗。这种分析方法速度快,扩展性好,但通常不够精确。之所以不够精确,原因在于翻转率和状态的设定采用的是估计值,而不是仿真得到的结果。静态功耗分析方法多用于估计平均功耗。

为了解决结构级功耗评估准确性不高的问题,黄琨(2008a)提出了基于物理反标的方法(图 2-9) 。该方法首先将模块划分为小的单元,每个小单元的功耗通过综合 RTL得到门级网表,然后采用 PrimePower 得到功耗值。并且可以采用各种不同的工艺单元库,因此不存在根据工艺进行缩放带来误差的问题,而是可以直接得到相应工艺下的功耗数据。在实际使用过程中,事先对每个模块,用不同的参数和不同的工艺单元库使用 EDA 工具进行综合,得到一个数据库,记录每个模块在不同参数、不同工艺下的功耗,在模拟时可以直接查找数据库得到功耗。如对于加法器的建模,加法器的宽度、实现方式、工艺等因素都会被考虑在内,作为数据库中表项的索引。由于该方法利用了 RTL 代码和物理库,所以对于随机逻辑得到的功耗数据会比较准确。 由于现代微处理器中更多地采用基于综合的设计方法,随机逻辑越来越多,因此这对于准确评估处理器的功耗具有重要的意义。该方法仍然基于结构级模拟器,速度较慢,是需要进一步改进的地方。  


2.3.4  小结

综上所述,目前的芯片功耗分析技术还有待完善。门级的功耗分析结果较为可信,但效率太低,难以对大量的测试样例进行分析,并且在设计初期难以得到门级网表。结构级功耗模拟器功耗分析存在着精度和评估效率之间的矛盾,研究精确高效的结构级功耗分析工具,是本文努力的目标。现有的电路单元功耗建模技术,特别是门级功耗建模技术已经比较成熟,为结构级的功耗研究工作奠定了较好的基础,利用门级功耗信息在结构级进行功耗建模是个可行的研究途径。指令级功耗分析模型对低功耗软件设计有帮助,但是由于其准确度较差,因此并不适合对结构复杂的处理器进行功耗评估。

使用道具 举报

Rank: 1

注册时间
2010-10-9
积分
2
发表于 2010-10-9 16:15:17 |显示全部楼层
看了此贴,受益匪浅啊,感谢。

使用道具 举报

Rank: 4

注册时间
2010-8-15
积分
21
发表于 2010-10-10 00:25:49 |显示全部楼层
如果能在算法和架构阶段就得到误差不超过10%的功耗数据,那确实牛B,学习下
Michael Xu

使用道具 举报

Rank: 1

注册时间
2010-12-12
积分
12
发表于 2010-12-12 16:17:50 |显示全部楼层
回复 12# ic.expert


    哈~不是大牛,小菜鸟一只,权当抛砖引玉,跟testbech有关的地方是用PTPX求average power 的时候是用RTL simulation中的 toggle rate 计算power的,
所以跟test 怎么写 就关系很大了

使用道具 举报

Rank: 1

注册时间
2011-2-22
积分
1
发表于 2011-2-22 21:15:06 |显示全部楼层
回复 michael.xu 的帖子

那确实,如果真是如此,那底层的估算意义都不大了

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2009-3-9
积分
752
发表于 2011-8-20 13:59:34 |显示全部楼层
ic.expert 发表于 2010-3-1 18:36
我们主要应用目的是对于现有silicon proof的GPU硬件进行功耗模拟,日后可能会集成到SDK当中,给软 ...

其实要看你想用在什么地方了。给silicon模拟做验证可能需要更精确的,基于RLT simulation的。不过速度嘛,也是相当慢了。

对于开发软件的人来说,我觉得嘛,提高性能是最直接的降低总功耗的办法。性能提高了,之后不论降低频率,还是早点干完活歇着,都能有效的降低能耗。

另外,5#说得不错,给软件开发者提供一些building blocks。告诉他们各种方式耗电如何,让他们去根据实际需要选择。

总的来说,大部分情况下,提高性能都是最好的解决方案。
1

查看全部评分

使用道具 举报

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

注册时间
2010-9-9
积分
11583
发表于 2011-8-31 07:51:52 |显示全部楼层
架构级(或RTL级)的功耗模拟器还多是出于理论研究,较为适用的还是给予逻辑综合(门级网表) 、版图设计(门级和晶体管)等不同的抽象层次,也有一些商业的工具可以用。

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-6-8
积分
2469
发表于 2011-9-22 10:52:26 |显示全部楼层
arch level的gpu power model我现在想法就是:

- sm dynamic power: 估计每个fau (e.g., fma, fadd, iadd, etc.)的功耗,然后计算bench的各个fau inst number,最后得出power值。
- leakage power: 根据温度来拟合。
- memory power: 同sm dynamic power,估计每个l1/l2 cache, FB的功耗。
- interconnect power: 这个比较tricky,可以套用一些cpu上成熟的interconnect power来做。

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-6-8
积分
2469
发表于 2011-9-22 10:55:09 |显示全部楼层
draziwest 发表于 2011-8-20 13:59
其实要看你想用在什么地方了。给silicon模拟做验证可能需要更精确的,基于RLT simulation的。不过速度嘛 ...

arch level的power model是很有意义的,便于architcturer快速预测(比如我调高cache size,power会如何变化)。
rtl level的Power model由于要跑整个flow,实在是太慢了。

所以我觉得ic兄想要的model应该是两个,要分开做。

使用道具 举报

Rank: 9Rank: 9Rank: 9

注册时间
2011-10-2
积分
322
发表于 2011-10-2 21:57:29 |显示全部楼层
This correct for the level scale RTC low power, and this need more investage

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-6-8
积分
2469
发表于 2011-12-24 01:19:54 |显示全部楼层
michael.xu 发表于 2010-10-10 00:25
如果能在算法和架构阶段就得到误差不超过10%的功耗数据,那确实牛B,学习下 ...

他的方法还是要用rtl综合的吧。不算是架构级的power model.

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2009-6-8
积分
2469
发表于 2011-12-24 01:28:05 |显示全部楼层
ic.expert 发表于 2010-3-17 20:57
这里有一篇凡启飞博士的论文,可以参考一下,目前我是依照这篇论文作为主要参考对象。本文种主要的 ...

看了凡启飞博士的文章,写得非常好。在表3-5中大家可以看到用fpga做模拟的速度优势非常明显(相对于c model)。

请问各位大牛,在工业界里,复杂的chip用fpga做模拟的应用多吗?它有速度的优势,但它的劣势又在哪里?

使用道具 举报

Rank: 9Rank: 9Rank: 9

注册时间
2011-5-18
积分
281
发表于 2011-12-29 14:22:51 |显示全部楼层
搞架构的能得到合适的精度就作为方向性指导,认为就算可以了,后期才会需要更精确的数据吧。
简单就是美

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2013-11-20
积分
519
发表于 2016-9-21 23:06:12 |显示全部楼层
很实用,有没有时序方面的呢。

使用道具 举报

Rank: 4

注册时间
2015-7-16
积分
47
发表于 2017-4-15 17:01:51 |显示全部楼层
mark一下,可以学习学习。另外testbench应该根据design去写吧,应该不是单纯的百分之多少固定之后就可以以偏概全的

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-4-27 09:12 , Processed in 0.123930 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部