基于Intel PXA250处理器工作状态的功耗仿真模型及分析

   2023-11-15 互联网1710
核心提示:  引言  嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。简单的说就是系统的应用软件与系统的硬件一体化,类似

  引言

  嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。简单的说就是系统的应用软件与系统的硬件一体化,类似于基本输入输出系统(BIOS)的工作方式。嵌入式系统具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时的和多任务的体系。目前复杂的嵌入式系统设备一般具有以下几个特征:①使用了时钟频率非常高的处理器,②处理器集成了大量的外围设备控制器,③系统平台支持多种外设,④移植的操作系统上运行许多的应用程序。

  这就对嵌入式微处理器的计算能力要求也越来越高。而对微处理器的计算能力要求越高,意味着微处理器消耗的功耗在整个系统消耗的比重增加,因此有必要对微处理器的功耗情况进行专门的分析。

  本文在INTEL PXA250ADSUM/D芯片的指令集模拟器SimIt-ARM的基础添加了一个功耗分析模块,使其支持对INTEL PXA250进行功耗分析。使我们通过软件模拟,就可以得到微处理器工作状态转换引起的功耗变化情况。

  分析

  一些嵌入式系统,比如PDA和智能电话等, 在工作过程中,处理器并不是任何时候都一直处于工作状态 。比如INTEL PXA250处理器就提供了四种工作方式:turbo,运行,空闲和休眠。而且大量的实际表明,很多情况下,在大部分时间里系统是处于休眠状态的,一旦获得工作信号,会迅速切换到工作状态。当系统在工作状态下一定时间内没有获得下一次需要处理的信号时,则自动切换到空闲或休眠状态。因为在不同工作状态,处理器内部工作电路有所变化,功耗差别极大。下表显示了INTEL PXA250芯片在不同工作状态下的功耗情况,其中的数据来自基于INTEL PXA250芯片的一个PDA系统,为了保证系统的稳定性,在本PDA系统中,对普通用户屏蔽了turbo工作方式:

  表 1

  

  注:Iccc : Vcc Current Iccp : Vccq Current

  Vcc : positive supply for internal logic

  Vccq : positive supply for all CMOS I/O except memory bus and PCMCIA pins

  从上面可以看出,处理器在不同的工作状态下,其功耗情况是不同 的,运行状态是空闲状态的2.8倍,而休眠状态下更是只有0.1485mW,相对于运行状态的178mW和空闲状态下的63mW,几乎可以忽略不计。因此,在不影响系统工作的情况下,尽量使处理器工作在空闲状态和休眠状态下,可以降低整个系统的功耗。因此我们应该通过预测系统执行过程的措施来切换处理器的工作状态。

  我们在PDA系统上移植了嵌入式linux操作系统,支持事件消息驱动机制。消息采用查询方式,能够实时相应外部中断。在消息循环中,系统不断查询消息队列:当有消息出队时,处理器在运行状态处理这个消息对应的事件;如果一定时间内,消息队列处于空的状态,系统会预测在最近的一段时间内,不会有事件产生,把处理器状态从运行状态切换到空闲状态;如果系统在更长时间内没有事件产生,则系统预测用户需要自动软关机,处理器进入休眠状态。在休眠状态,系统能响应实时时钟匹配中断和复位按键等,一旦捕获到这类信号,处理器迅速转入运行状态。

  在INTEL PXA250评估板上,处理器三种状态的转换如下图所示

  

  图 1 工作状态转换图

  图1中个数字含义如下表所示:

  

  表 2

  目前,计算机界对微处理器的研究比较深入,提供各种各样,功能比较完整的微处理器模拟器来模拟微处理器的工作情况,其中对处理器指令集进行模拟已经做的相当的成熟,SimIt-ARM的emulator是其中比较典型的一种。

  根据上面的分析,我们可以建立一个比较完整的基于SimIt_ARM的针对处理器工作状态的功耗模型,我们可以假设在运行模式下时,处理器的功耗power_cof为178,在空闲模式下,power_cof为63,休眠状态下power_cof则为0.1485。然后在一个程序运行时,根据处理器处于各个状态的时间多少,判断出处理器的大致功耗。

  实现

  SimIt是一系列指令集模拟器和微结构模拟器的总称。SimIt的目的是为了和计算机结构领域相关的研究人员共享一些本领域的成果。SimIt-ARM,即ARM结构的模拟器,是SimIt系列的第一个版本。

  SimIt-ARM的emulator是是一个强大而灵活的基于arm内核的指令集模拟器,它能识别读取ELF32 little-endian ARM-linux二进制语言,可以模拟大部分的SPEC Int和SPEC FP测试程序。本文的工作就是基于SimIt-ARM的emulator进行的。对它进行适当的改写就可以使其实现INTEL PXA250ADS处理器的模拟。

  SimIt-ARM是免费的开源软件,我们可以在GNU General Public License下使用它。可以在https://www.princeton.edu/~wqin/armsim.htm网页下找到它的下载链接。

  SimIt-ARM emulator的结构

  

  图 2 SimIt-ARM的结构

  SimIt-ARM emulator读取和执行arm-linux-elf文件的流程图:

 

  图 3

  现在为SimIt-ARM 加入功耗模块,其流程图如图4所示。当每次执行一条指令时,打开一个监听器,捕捉外部是否存在UART输入,触摸屏输入或定时器中断,根据不同的输入或中断,相应改变power_cof值,假如探测到外部有使处理器进入休眠状态的命 令或中断,则置power_cof值为0,探测到外部一切正常,则置power_cof为178,加入外部有中断置处理器状态为空闲,则相应置power_cof值为63。这样总功耗就是执行每条指令时power_cof 的相加总和power_count。通过观察,不同处理器状态下,power_cof的变化情况,就可分析出处理器不同状态所处时间的长短对功耗power_count具有很大影响。根据所得数据,得出合适的参数(比如触摸屏中断几秒时间处理器由运行状态进入休眠状态)来降低功耗。

  

  图 4

  我们假设系统运行,在t秒时间内没有触摸屏中断时,处理器就由运行状态进入空闲状态,当触摸屏中断时,处理器从空闲状态进入运行状态。这里t是一个参数,可以由生产厂家或系统设计人员通过软件设定。现在假定我们随机的点击触摸屏,触发触摸屏中断,随机点击的时间点分布n可以用泊松分布来模拟,其曲线图如图5所示。图6是功耗模拟器所得出的数据:

  

  图5

  

  图 6

  图6的X轴单位为 500个机器周期时间,Y周单位为毫瓦,从图可以看出随着t的增加,即处理器处于运行状态时间的增多,处理器的功耗也趋于增大,和实际物理情况相吻合。表明本模型较好的仿真了PXA250随工作状态的切换而引起的功耗变化。

  结语

  本文探讨了如何为INTEL PXA250处理器建立基于工作状态的功耗模型,以及如何用c++语言实现这个模型。试验的结果表明,该功耗模型和实际基本吻合,可以作为我们设计嵌入式系统时考虑功耗问题的一个参考。实际上,本模型还具有良好的可扩展性,不但可以应用于对处理器的分析,稍加扩展,就可以应用于嵌入式系统的其他模块的功耗模拟,比如 LCD模块、网络控制模块,UART模块或者蓝牙模块等,只要我们从评估板或者厂方提供的参考手册得到的电流电压参数或功率参数,确定它们的power_cof,就可以建立起包括LCD,网络控制,UART和蓝牙等模块的比较完整的嵌入式系统的功耗模型,用于指导高端嵌入式系统硬件部分的设计。


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅