获得精确的电路功率估计并不是件轻松的事,象SPICE这样的业界标准仿真工具虽然能够预测出较精确的功耗,但要花很多的运行时间。本文以PowerPC 405GP的处理器内核为例,说明基于事件的功率模型可以提供良好的微处理器功率估计。
图1:PowerPC 405GP的模块框图。
为了更好地研究计算所用的功率,需要建立能对程序和操作系统进行快速、精确地功率与性能估计的仿真基础架构。为此我们开发出了针对PowerPC 405GP内核的基于事件的功率与性能仿真引擎。其中的前期工作表明,通过观察处理器内部发生的一系列事件可以计算得到相对精确的功耗估计。这种方法可以进一步拓展到整个系统的功率估计。为了验证推论,我们开发了一种405GP内核的周期精确模型,并补充了对不同处理器内核事件的能量估计,最终生成了一张动态处理器功耗图。能量估计的基础是针对用于功率测量的已有405GP板的测试结果。目前正在运行着相同操作系统和应用程序的硬件上确认仿真器的时序和功率精度。初步的时序比较表明,仿真时间平均是使用4个EEMBC基准应用的硬件仿真时间的4.57%。在应用程序的稳定状态期间仿真功率中的平均错误是5.12%。仿真器本身速度慢了300倍,在相同的4个应用程序上的平均速度是每秒436,000条指令。
图2:贝塞尔曲线硬件功率。
问题的引出
在计算机系统的功率研究方面有许多问题需要解决。低功率VLSI电路、创新的微结构、新的半导体技术和制造工艺、关注功率的创新编译器算法、应用程序和操作系统技术在能量高效的系统设计中被广为使用等等。我们对问题涉及的系统软件和架构比较感兴趣。不幸的是,许多象我们这样的研究小组都无法接触为运行着实际操作系统和应用软件的系统准备的快速精确的功率仿真环境。获得精确的电路功率估计并不是件轻松的事。象SPICE这样的业界标准仿真工具虽然能够预测出较精确的功耗,但要花很多的运行时间。也有一些工具(如Sequence Design的WattWatcher和PowerTheater试图通过在较高抽象层(如Verilog或VHDL寄存器传输模型)执行仿真来改善功率估计的性能。不幸的是,即使是这样的工具也需要在训练和运行上支出大量的时间,以致于对操作系统和整个应用程序的研究变得不切实际。这也是我们目前努力开发快速、精确的基于事件的功率模型的原因。该功率模型将作为CycleSim周期精确执行驱动仿真器的一部分。CycleSim仿真器包含在IBM的奥斯汀研究实验室开发的Mambo仿真环境中。
图3:贝塞尔曲线仿真功率。
以往的经验表明,基于事件的功率模型可以提供良好的微处理器功率估计。不幸的是,在研究新的硬件上不支持事件跟踪的架构或系统时这种模型无法派上用场。我们的仿真工具可以填补这一空白。为了证明这种观念的有效性,我们为PowerPC 405GP内的处理器内核开发了一个功率和性能模型。一旦该方法得到证实,就能为其它微处理器建立模型,并用最好的可用VLSI设计工具建立功率估计,从而正确地预测出运行操作系统和实际应用软件的未来计算机系统的功率行为。
下面首先概括地介绍CycleSim和PowerPC 405GP模型,然后详细描述获取405GP的基于事件的功率模型的方法,接着讨论仿真器的时序和功率精度的有效性,最后是总结,同时指出了将来需要进一步开展的工作。
图4:iDCT硬件功率。
CycleSim介绍
CycleSim是一个为PowerPC架构设计的以事件和执行为主导的仿真引擎,它可以为运行操作系统和应用程序的系统提供快速、周期精确的仿真。CycleSim是IBM奥斯汀研究实验室开发的Mambo仿真环境中的一部分。其中部分功能与Standford SimOS仿真器中增加的PowerPC支持部分是共享的。目前这个CycleSim仿真器内含了一个PowerPC 405内核的模型,其中包括定时器、TLB、指令和数据缓冲器、UART、存储器(包括启动用的ROM影像)和一个中断控制器。因此允许仿真器在启动操作系统(如Hard Hat Linux)和运行应用程序时能提供精确的性能预测。用这样的仿真器实现我们的目标是非常理想的,主要原因有二。首先,它本身能跟踪处理器中大多数有关于功率的事件,这是获得周期精度所必须的。要知道将能量值与这些事件关联起来并不是件很容易的事。其次,由于功率是时间的函数,周期精度至关重要。
PowerPC 405GP仿真器
图5:iDCT仿真功率。
PowerPC 405GP是一块用于嵌入式应用的系统级芯片,其内含的405处理器内核能够实现PowerPC架构的Book E嵌入式扩展。405内核是一个32位处理器,具有独立的指令(ICU)和数据(DCU)缓存单元、一个MMU和定时装置。通过处理器本地总线(PLB),可以完成对存储器和映射为存储器的I/O器件的访问。通过独立的DCR总线可以访问用于系统配置的器件控制寄存器。图1是PowerPC 405GP的模块框图。
处理器的CycleSim模型包含了对指令存取/预存取逻辑、分支预测、管理冒险、中断和例外、数据和指令翻译旁路缓存、定时器和ICU及DCU的详细仿真。也能仿真映射为存储器的UART,但不能达到周期精度。目前我们对存储器延时作了建模,但对缓冲器或详细的存储器控制器或存储器块之间的冲突未作建模。405相对来说是一款比较简单的处理器,因为它采用的是一种无序的事件架构。用于处理器模型的时序信息主要来源于已经公开的用户手册或实验数据。当无法找到完善的资料文档时,要设法运行仔细设计过的用于识别微架构某一特殊方面行为的微基准。然后将这些测试应用于PowerPC
图6:路由查找硬件功率。 405GP评估板上,从而发现内核在某些条件下的实际行为。大部分这种时序验证工作围绕着存储器操作和缓存单元。
今后,根据被仿真的具体系统调整微架构仿真后,CycleSim架构就可用于仿真未来的PowerPC微处理器。更详细的总线、存储器子系统和外围设备的模型已有计划,但如下文所述的那样,仿真器的当前状态对功率和性能平衡的精确研究来说已经足够了。
基于事件的功率模型
我们使用的功率模型很简单,根据处理器每个周期所处的状态,处理器消耗的总能量等于它的静态或空闲能耗加上管线、执行单元和缓存的能耗。
因此,假定Eidel代表静态能量,ei代表一系列事件,那么指定应用下消耗的总能量应为:
图7:路由查找仿真功率。
其中ni代表根据事件类型检测到的事件数量。在CycleSim中,这种能量是以每个周期为基础计算的,因此可以为处理器内核生成一个个周期的功耗图。不幸的是,405GP没有硬件的事件监视器,所以增加了工作的复杂性。另外,我们以前也没有相关的从功率角度看的事件经验。这些问题是根据对架构、VLSI电路、处理器中能耗源的认识、并通过实验和有根据的推测解决的。
我们采用的是奥斯汀研究实验室设计的基于PowerPC 405GP的“Pecan”评估板,该评估板也是国家仪器(NI)公司功率测量系统中附属用于功率测试的仪器。板上的电源平面是根据包含传感器在内的使用相同电压值和供电线的不同元件而分开的。利用这些电阻上的电压下降计算被测器件的消耗电流,取样频率是10KHz。表1列出了实验用到的一些重要参数。
图8:矩阵乘法硬件功率。
通过让Pecan板的内核运行于空闲周期,可以测量处理器在等待状态时的空闲功率。然后开发数百个微基准来测量某个处理器内核事件的能量成本。最终的事件列表由缓存使用/未使用的平均能量成本、各种指令类型、分支条件、中断、TLB使用/未使用等组成。我们还测量了SDRAM存储器块的功耗,但这些数字没有包含在本文报告的模型中。
用于发现各种重要事件能量成本的许多相同微基准也被用于发现CycleSim开发所需的某些时序问题。一旦计算出所有能量值,CycleSim就能累积出每个周期总的能耗值。对每个周期能量点进行累加和平均后就能得到某个特殊间隔下的平均功率值。
时序和功率验证
只有精度得到验证的性能和功率仿真工具才会获得人们的青睐。之所以选择405GP作为测试平台来开发仿真器,原因有二。第一,获得使用没有事件监视支持功能的简单处理器进行功率估计时相关事件类型方面的经验,其次,也是最重要的,是可以用来验证周期精度和功率的实际系统的有效性。
图9:矩阵乘法仿真功率。
为了得到本文描述的最初验证结果,要采用源自嵌入式微处理器基准协会(EEMBC)的4个测试基准:iDCT(反向离散余弦变换)、矩阵乘法、贝塞尔曲线计算和路由查找/系统。为了验证CycleSim 405GP模型的时序精度,我们测量了运行4个基准所需的周期数,在硬件和仿真器上对每个基准做了50次反复(包括初始化),然后比较结果,并将使用处理器时钟的405GP的定时器作为Pecan板级测试的时钟源。测到的时序错误范围在-6.22%到6.22%之间,绝对平均值是4.57%。结果总结在表2内。作为一个附加的好处,时序验证操作非常有助于发现某些仿真器问题以及硬件和仿真器版内核的缓存设置之间的区别。为了测试仿真器的效率,我们根据每个基准测量了仿真周期数和每秒指令数,然后在配置为双Pentium III 933MHz处理器、512M RAM、运行Linux 2.4.2的IBM IntelliStation工作站上计算周期降速。结果如表3所示。平均降速约为302倍,被仿真的指令平均数为每秒43,6424个。
表1:实验时的PPC405GP设置。
为了验证CycleSim的功率模型,我们又从仿真器和仪器上运行了相同的基准,同时捕获功率曲线。图2到图9是针对每个基准经过50次反复运行后的功率测量和仿真的功率图。对于仿真图形,在图形化之前每个周期的功率测量平均做了20,000次,原因主要是为了减少CycleSim的数据输出量和减少图形中的噪声。这种平均也可以由测试系统和测试板本身的走线阻抗完成。
从图中可以看出,虽然仿真器能够捕获应用程序的一些功率特性,但是有许多明显的区别。每个应用程序启动时都是将它的代码从启动ROM挎贝到主存中。这一阶段被显示为板上一段约1.1W的短平线,一般都有一个没被仿真器捕获到的功率尖峰。
表2:时序验证结果。仿真器显示这一拷贝阶段的功耗约为0.97W。我们怀疑可能是由于缺少用于访问ROM的IIC和OPB总线的仿真模型。我们将分析产生尖峰的原因,如果不是由测量误差或带噪声的供电引起的,那么我们会在CycleSim中为它建模。除此之外,仿真器向UART输出消息几乎是瞬时的,但根据实际的板子状态可以看出,在应用程序完成控制台上的数据显示后还有一些活动。最后,每个应用程序各自的功耗行为似乎都很好地被仿真器捕获到了,但iDCT除外,因为在仿真器中拷贝后有个阶段没有出现在硬件测试中。在应用稳态阶段中的功率估计误差有2%到9%的变化,绝对平均值为5.12%。
请注意,本文引用的所有EEMBC性能数字可能与报告文档有不一致的地方,仅允许用于仿真器的验证目的。
结论和今后工作
表3:CycleSim的性能总结。
本文讨论了针对405GP内核开发的周期精确仿真器的设计和验证,包括可用于研究操作系统、应用、编译器和创新架构的功率模型。我们将使用这个基础架构支持奥斯汀研究实验室的研究工作,也希望能利用这种方法研究未来系统设计的性能和功率折衷。
我们的开发和验证工作尚处于早期阶段,计划增加系统中其它部分和I/O器件的模型,最终形成一个完整的系统功率仿真器。另外,还计划采取一些措施改善仿真器的精度,包括运行更多应用、增加详细的存储器控制器和总线模型,并在仿真器上完善Hard Hat Linux端口。这样可以让我们使用到仿真器中尚未被重视的部分(如TLB)。
我们还与其它研究人员和开发小组合作进行功率方面的计算研究,请参考下列文章: 。
作者:Hazim Shafi
EMAIL: hshafi@
IBM奥斯汀研究实验室