当设计工程师为低功耗应用选择微控制器时,芯片厂商的数据手册所提供的帮助是有限的。手册不能提供业界标准的功耗评价方法,也不能说明像高速缓存(Cache)和集成浮点运算单元等功能部件是怎样影响能量消耗和性能的。
当工程师尝试比较包含了片上系统(System-on-chip)的处理器内核时,如何解释这些部件或单元带来的好处成了一个难题。供应商也用芯片的典型消耗电流数值来衡量他们的微控制器控制工程网版权所有,但这种测量几乎不能说明应用运行不同程序的能量消耗。为了解决这个问题,嵌入式处理器基准协会(Embedded Processor Benchmark Consortium——EEMBC)提出了一种在特定载荷下测量能量消耗的方法。本文中我们将以ARM-9为内核的微控制器作为测试例子来说明这种测试方法的原理。
标准化的方法和前提
通常而言,EEMBC衡量的侧重点在处理器行为方面的性能指标,并开发了以反映嵌入式应用真实环境的测量基准。由于能够验证所有性能和功耗测量的重复性是相当重要的www.cechina.cn,测量方法也必须符合常规的标准。EnergyBench(能量基准)是由EEMBC开发的一种测量方法,用于提供一
种基准工具,它可以给出处理器在运行应用程序时所消耗的能量数据。
测量的可靠性
EnergyBench采用NI公司(National Instruments)的LabVIEW平台和数据采集卡。DAQ卡有多个差分测量通道用来测量电流和多个单端通道用于测量电压。EnergyBench使用这样的DAQ卡来对电压和电流进行采样,并利用一个触发通道来同步性能的基准测量。
EnergyBench有两个软件模块,一个用于测量数据(功率采样模块),另一个用于分析采集到的数据(分析模块)。软件的图形界面用于显示电压和电流CONTROL ENGINEERING China版权所有,并且有相应的控制按钮用于启动数据采集。
基准测量数据需要加载到微控制器中控制工程网版权所有,并需要微控制器的两个GPIO用作和功率采样模块的握手信号。当基准测量数据加载完成后,其中的一个GPIO用于通知微控制器启动测试,另外一个通知功率采样模块。基准测量运行完多次迭代后CONTROL ENGINEERING China版权所有,分析模块计算基准测量每次迭代所消耗的平均能量。基准测量分数是可以由制造商选择的评价参数,它与性能认证分数一起可以作为说明处理器能量效率的指标。
图1 LPC3180是基于ARM9内核的MCU,具有32KB指令和数据Cache,以及一个向量浮点协处理单元
ARM9的测量结果
我们选择由NXP生产、基于ARM926EJ内核的微控制器LPC3180作为测量对象,观察不同处理器配置对能量消耗的影响。选择该处理器的原因是由于它有很大的内部存储器,64KB的通用存储器和32KB的指令和数据高速缓存(Cache)。此外,它也有一个向量浮点单元和一个低电压工作模式用于降低功耗。
表1列出了测量的结果。数据显示向量浮点单元可以降低能量消耗的系数是4.5,而指令Cache的系数大约是1.4。如果我们查看数据手册根本无法知道消耗过多的能量会带来什么好处,就额外的性能而言,它是通过向量浮点单元和大容量的Cache获得的。表中的数据也表明能量测量的意义就在于可以知道什么时候来决定选择哪个处理器,以及哪个选项是重要的。处理器消耗的能量总和直接与它所执行的任务所用的时钟频率相关。如果指令Cache被关闭了,程序不得不从位于AHB总线上的存储器中去取指令。由于AHB总线的工作频率只有处理器内核频率的一半,因此程序运行的时间就更长,也就消耗了更多的能量。如果指令Cache被打开了,则相应Cache算法中的浮点运算所消耗的能量就会增加,但程序会运行得更快,因为Cache的操作是以处理器内核频率进行的,结果总的能量消耗就降低了。当浮点单元使能时,它可以降低处理器和指令Cache的工作量,虽然只有少量的能量增加,但实际消耗的总体能量却有了很大的降低。
外部存储器对能量消耗的影响
对于大多数基于MCU的应用,存储器子系统的设计是影响性能和能量消耗的决定性因素。当设计低功耗系统时,存储器子系统的选择和软件设计对能量的消耗会产生很大的影响。这些选择包括存储器的选型、代码运行空间的划分,以及系统的省电模式等。
在NXP公司微控制器LPC3180的例子中,存储控制器的接口是动态的,它通过切换I/O引脚来减小能量的消耗,同时可以动态支持大容量的存储器。表2给出了4种类型存储器在相同性能水平上的典型能量消耗,以及基于不同存储器使用方式的对比和实际的系统性能。大多数微控制器都具有内部SRAM和Flash。LPC3180有64KB的SRAM,程序在其中运行的时钟频率是处理器频率的一半,与访问外部存储器相比其消耗的能量是相当低的。确切地讲,内部存储器消耗