分类: 系统运维
2013-04-26 10:32:45
Wattch是一个CPU功耗评估的体系结构级模拟器。Wattch的功耗评估是基于一套不同硬件结构的参数化的功耗模型以及通过时钟精确模拟产生的资源 使用次数。Wattch主要用于针对低功耗的体系结构研究和编译器研究。Wattch功耗模拟的速度比商业的低功耗工具快1000倍以上,精确度误差在 10%以内。它量化了处理器所有主要单元的功耗,尽量参数化,并集成到高级模拟器中去。
Wattch模拟器是以cacti(一个cache模拟器)为基础开发的,集成在SimpleScalar模拟器中,利用SimpleScalar的硬件配置参数作为输入来计算处理器不同部件的功耗的。
Wattch把主要的处理器单元分为4类:
(1)阵列结构(array structure):data cache,instruction cache,cahe tag arrays,register files,register alias table,branch predictors,a large portions of the instruction window,load queue,store queue。
(2)全相联内容寻址存储器(fully associative content-addressable memory):instruction window/reorder buffer wakeup logic,load/store order checks,TLBs。
(3)组合逻辑和连线(combinational logic and wires):functional units,instruction window selection logic,dependency check logic,result buses。
(4)时钟(clocking):clock buffer,clock wires,capacitive loads。
在CMOS微处理器中,动态功耗(Pd)是功耗的主要来源。
Pd=CVdd2af
C是电容,Vdd是电压,f是时钟频率。活动参数a是平均开关频率,在0到1之间。C是基于电路和晶体管大小估计的。Vdd和 f与假设的制造工艺有关。活动参数是相对于benchmark程序得出的。预充电和放电电路(double-ended array bitlines),a的值是1。支电路(single-ended array bitlines)的活动参数是通过benchmark程序在体系结构模拟器上测量得到的。对无法用模拟器测量的支电路,假设a = 0.5。实际上,对于采用clock gating技术的电路,活动参数要比0.5要小。
Wattch在功耗分析中,只关注每个stage的电容,而不是关注电阻和电容。分析所有路径的功耗然后相加。在进行延迟(Latency)分析时,只考虑关键的路径。
阵列结构:
在阵列结构中考虑的参数是多少行,多少列,以及读写端口的数目。这些参数影响阵列的大小、解码器的数目、wordlines的数目和bitlines的数目。另外,还利用这些参数估计预解码线的长度以及阵列的wordlines和bitlines的长度。
按以下阶段来估计阵列结构的功耗:decoder, wordline drive, bitline discharge, output drive(or sense amplifer)。在这里,wordline drive和bitline discharge是最主要的功耗源。
wordline和bitline的功耗需要估计这些线的总的电容。wordline的电容主要由三部分组成,它们是diffusion电容、与bitline数目相同的cell的门电容和金属线的电容。
bitline的电容也用相似的方法计算。三个部分是预充电晶体管的diffusion电容、与wordline数目相同的cell的diffusion 电容和金属线电容。可以选择使用单端(single-ended)或双端(double-ended)bitline。我们假设寄存器堆使用单端位 线,cache使用双端位线。
阵列结构上的多端口(port)会增加功耗。第一,因为每个增加的端口都需要一个晶体管连接,在字线上会产生更多的电容;第二,每个增加的端口都要求两个 增加的位线,每一个位线在每个时钟周期都必须预充电和求值;最后,每个核心的cell都会变大,导致更长的字线和位线,增加线电容。
晶体管大小在电容计算中占很大的部分。在Wattch模型中,一些关键的晶体管的大小是根据模型参数自动确定的。
CAM结构:
在CAM结构中,对taglines和matchlines建模。参数是行数目(tag的数目)、列数目(每个tag中需要匹配的位数目)和端口数。
复杂逻辑块:
Wattch所考虑的两个大的复杂逻辑块是指令选择逻辑(在指令窗口中)和依赖检测逻辑(在寄存器重命名单元)。
时钟:
高性能微处理器中,时钟网络是最重要的功耗源。主要包括:全局时钟金属线、全局时钟缓冲器和时钟loading。