编译器和操作系统内核协同的节能方法

文档序号:6556445阅读:367来源:国知局
专利名称:编译器和操作系统内核协同的节能方法
技术领域
本发明涉及基于嵌入式系统软件节能技术,特别是涉及一种操作系统与编译器协同工作节能的方法。
背景技术
在便携式嵌入式设备电源管理领域,目前的困难在于既要满足便携式终端对电源供电的要求,又要做到占用空间小、重量轻和供电时间更长。下一代消费类电子产品的电源解决方案重点应该集中在硬件和软件两方面技术,包括(1)在小巧外形尺寸下,如何实现所需电源性能的工艺和技术,涉及热管理、降噪、电池管理和功能整合等技术;(2)动态功率管理技术,它取决于处理器性能、软件、中间件以及用户对更换电池的时间间隔等要求;(3)动态功率管理技术对操作系统内核和驱动器,以及应用编程接口(API)对驱动器、中间件和应用本身的影响。
现在嵌入式设备的功能变得越来越强大,功能也越来越丰富。随着嵌入式设备功能越来越多,用户对嵌入式设备电池的能量需求也越来越高,现有的锂离子电池已经越来越难以满足消费者对正常使用时间的要求。对此,业界主要采取两种方法,一是开发具备更高能量密度的新型电池技术,如燃料电池,在可以预见的5年内,电池技术不可能有很大的突破;二是在电池的能量转换效率和节能方面下功夫。在目前新的高能电池技术(如燃料电池)仍不成熟的情况下,下一代手持设备的电源管理只能从提高电源利用率和降低功耗这二个方面着手。
如何延长电池的使用寿命,以及尽量减少电池能量的消耗已经成为嵌入式领域的一个研究热点。现在主要集中在硬件设计和软件优化两方面。其中软件优化方面现在主要包括系统软件和应用软件两方面。系统软件主要集中在编译器和操作系统内核两块。
在操作系统领域,现在主要的电源管理方法是利用操作系统内核,动态的调整系统处理器和总线的频率,降低系统的整体能耗。而且系统可以通过动态频率指令改变系统状态,是系统处于低功耗状态,以达到节能的目的。在编译器方面,现在主要通过编译器在编译应用程序阶段,对代码进行优化,使代码尽量的紧凑以及访问设备尽量集中,以达到节能的目的。
上面的方法中,都是操作系统内核和编译器单独工作来完成系统的节能。操作系统可以很好的管理整个系统的能耗,但是对特定的应用不了解,不能针对特定的应用采用贴切的方法节能;编译器可以针对特定的应用采用符合应用需求的节能方法,但是这样容易引起整个系统的不稳定。

发明内容
本发明的目的在于提供一种编译器和操作系统内核协同的节能方法。
本发明解决其技术问题采用的技术方案如下1)程序静态分段编译器在程序编译阶段完成程序的静态分段,编译器在对程序P的源代码进行扫描的过程中分段;编译器根据几条原则将程序P分为m个静态状态段,第一条原则所有的函数调用都是一个独立的段,第二条原则所有的循环都是一个独立的段;2)插入程序与内核通讯指令程序的分段信息必须传给操作系统内核,编译器在编译过程中在每个段的前后都插入一条与内核通讯的指令,这条指令主要的作用是通知操作系统内核,现在程序进入一个新的段,这样操作系统内核就会建立新的数据结构管理这个段;3)程序运行状态段管理通过编译器插入的通讯指令,操作系统内核就能建立起这个程序的管理框架;每个程序被分为很多段,操作系统内核将程序每个段的运行信息保存在一个数据结构中,并将这个程序所有的段信息用链表链在一起;4)动态分段和动态频率管理操作系统内核根据快速缓存失效数动态的调整系统处理器的运行频率,使处理器处理数据的能力和数据传输的能力相匹配;操作系统内核将根据程序某个段在运行时快速缓存失效数的变化,决定是否将这个段细分;当单位时间内快速缓存失效数不在同一个级别中,操作系统内核将对这个段进行细分,分为两个不同的段,并将新的段信息保存起来;程序在运行过程中,操作系统内核根据运行时不同运行段单位时间内的快速缓存失效数和运行指令数,利用动态调频技术调整系统的频率,使处理器的空闲时间减少,减少处理器浪费的能耗,达到节能的目的。
本发明与背景技术相比,具有的有益的效果是本发明将编译器和操作系统的工作相结合,利用操作系统对整个系统的控制能力和编译器对应用程序的独特了解进行节能。编译器在编译阶段根据程序的静态属性将程序分成不同的状态段,结合在运行过程中通过内核收集运行时信息将程序动态分段,然后通过动态频率管理技术对不同状态段,设置相应的运行频率进行节能。
(1)动态性。应用程序在系统中运行时,操作系统动态收集程序运行信息,并对收集的信息进行分析。然后根据信息分析的结果,动态调整系统的频率并对编译器原来的分段进行动态调整。
(2)稳定性。操作系统将动态调整系统状态的权利掌握在自己手中,而不是下放给应用程序,这样系统就能在兼顾全局的情况下动态调整系统的状态,保证系统的稳定。
(3)实用性。原先手持设备程序员在编写应用程序的过程中,必须时刻考虑代码的组织,使应用程序在手持设备上运行能够尽量少消耗能量。利用编译器和内核协调的节能方法,就可以在编译和运行阶段帮用户解决能耗管理的问题。在经过反复的认证,这个方法可以很好的减少程序员的工作量,十分实用。


图1是要被编译器编译的程序P的源代码;图2是被节能编译器编译后带有分段和内核通讯信息的代码;图3是内核对程序运行时的管理数据结构;图4是在英特尔公司Xscale体系结构下面快速缓存失效数的级别划分;图5是本发明的流程图。
具体实施例方式
在实施基于嵌入式系统的软件节能方法时,操作系统和编译器被广泛利用。
编译器和操作系统内核协同的节能方法具体实现流程如下。
第一步程序静态分段。
编译器在程序编译阶段完成程序的静态分段,编译器在对被编译器编译的程序P的源代码如图1所示,进行扫描的过程中分段;编译器在对代码的编译过程中,总共分为6步,前面3步对最后生成代码的优化基本没有影响,编译器和操作系统内核协同的节能方法修改了编译器的第四步,在对代码的优化过程中将代码分段。
编译器根据几条原则将程序P分为m个静态状态段,第一条原则所有的函数调用都是一个独立的段,第二条原则所有的循环都是一个独立的段。之所以使用这两个分段原则是考虑到局部性原则,因为相邻数据的访问基本都是集中在同一个循环中或者同一个函数中。静态分段的过程有以下几步1、编译器对程序源代码进行扫描;2、判断是否是循环开始。如果是循环开始分段,否则继续;3、判断是否是函数调用,是的话开始分段,否则继续;4、判断是否分段结束,是结束静态分段,否则继续扫描程序。
第二步插入程序与内核通讯指令。
程序的分段信息必须传给操作系统内核,才能和操作系统进行协同;经过第一步,代码已经被化分为各个段,编译器在找到一个段后在这个段的前后都插入一条与内核通讯的指令。这些内核通讯的指令都是一些操作系统内核提供的应用程序接口。
Entering Region这条指令主要的作用是通知操作系统内核,现在程序进入一个新的段,这个段的名字是Region,其中region只是一个字符串,可以按照自己的需要起不同的名字。Exiting Region这条指令的意思是和前面那条意思正好对应,他是告诉操作系统内核,程序已经从名字为region这个段退出。当操作系统收到Entering Region这条指令后,操作系统内核就会建立新的数据结构管理这个段。
经过分段和插入内核通讯指令后,上面应用程序的代码P就被修改为带有分段和内核通讯信息的代码,如图2所示。
第三步程序运行状态段管理。
通过编译器插入的通讯指令,操作系统内核就能建立起这个程序的管理框架;每个程序被分为很多段,操作系统内核将程序每个段的运行信息保存在一个数据结构中,并将这个程序所有的段信息用链表链在一起,内核对程序运行时的管理数据结构如图3所示。操作系统内核对程序运行状态段管理可以分为这么几个步骤1、建立程序状态数据结构。当程序被运行起来时,操作系统内核会建立一个processCtrl数据结构用来管理这个运行的进程,包括自己的进程号,以及这个进程被分为多少个段,其中在processCtrl还有一个重要的数据就是一个列表结构list<RegionCtrl>,用来将这个进程的所有段的信息链在一起。
2、建立段管理数据结构。当程序进入一个段是,操作系统内核建立一个regionCtrl数据结构用来管理程序中的这个段。当应用程序通过第二步中添加的通讯指令通知系统内核程序进入一个新的段时,系统会自动建立一个regionCtrl的数据结构,并把它挂载相应的processCtrl上面。regionCtrl主要用来记录这个段运行时的信息,包括快速缓存的失效数以及单位时间内的指令数等。每个regionCtrl都包含几个regionHistory,每个regionHistory都记录了这个程序运行的历史情况。
3、性能监视。程序在运行的时候,系统通过处理器上的运行状态监视模块,获得程序在单位时间里运行的指令数和快速缓存失效数,单位时间运行的指令数代表了处理器的当前状态,快速缓存失效数代表了程序访问数据的能力和负荷,这两者的协调工作对系统的能耗影响是很大的,操作系统内核根据运行的体系结构将快速缓存失效数的范围分为不同的级别。在英特尔公司Xscale体系结构下面快速缓存失效数的级别划分如图4所示。
4、将性能信息保存。操作系统内核将采集到的程序运行信息保存到上面1、2两步建立的数据结构中,为第四步工作提供数据。
第四步动态分段和动态频率管理。
操作系统内核根据快速缓存失效数动态的调整系统处理器的运行频率,使处理器处理数据的能力和数据传输的能力相匹配。
操作系统内核将根据程序某个段在运行时快速缓存失效数的变化,决定是否将这个段细分;当单位时间内快速缓存失效数不在同一个级别中,操作系统内核将对这个段进行细分,分为两个不同的段,并将新的段信息保存起来,这个过程可以分为以下几步1、确定是否分段;2、如果要分段的话建立一个regionCtrl的数据结构;3、更新新旧两个段的信息。
动态调频技术可以在处理器运行过程中调整系统的处理器频率,这样当处理器空闲时间较长时,就可以调整处理器速度到一个比较低的值,降低处理器消耗的能量。程序在运行过程中,操作系统内核根据运行时不同运行段单位时间内的快速缓存失效数和运行指令数,利用动态调频技术调整系统的频率,使处理器的空闲时间减少,减少处理器浪费的能耗,达到节能的目的。这个过程主要分为一下几步1、当单位时间过去后,系统唤醒调频模块;2、根据运行状态信息,判断是否调频;3、如果要求调频,根据计算结果调频;4、新建一个regionHistory结构,并将性能信息保存到regionHisorty。
整个发明的工作流程图如图5所示。
权利要求
1.一种编译器和操作系统内核协同的节能方法,其特征在于1)程序静态分段编译器在程序编译阶段完成程序的静态分段,编译器在对程序P的源代码进行扫描的过程中分段;编译器根据几条原则将程序P分为m个静态状态段,第一条原则所有的函数调用都是一个独立的段,第二条原则所有的循环都是一个独立的段;2)插入程序与内核通讯指令程序的分段信息必须传给操作系统内核,编译器在编译过程中在每个段的前后都插入一条与内核通讯的指令,这条指令主要的作用是通知操作系统内核,现在程序进入一个新的段,这样操作系统内核就会建立新的数据结构管理这个段;3)程序运行状态段管理通过编译器插入的通讯指令,操作系统内核就能建立起这个程序的管理框架;每个程序被分为很多段,操作系统内核将程序每个段的运行信息保存在一个数据结构中,并将这个程序所有的段信息用链表链在一起;4)动态分段和动态频率管理操作系统内核根据快速缓存失效数动态的调整系统处理器的运行频率,使处理器处理数据的能力和数据传输的能力相匹配;操作系统内核将根据程序某个段在运行时快速缓存失效数的变化,决定是否将这个段细分;当单位时间内快速缓存失效数不在同一个级别中,操作系统内核将对这个段进行细分,分为两个不同的段,并将新的段信息保存起来;程序在运行过程中,操作系统内核根据运行时不同运行段单位时间内的快速缓存失效数和运行指令数,利用动态调频技术调整系统的频率,使处理器的空闲时间减少,减少处理器浪费的能耗,达到节能的目的。
全文摘要
本发明公开了一种编译器和操作系统内核协同的节能方法。采用编译器在编译阶段根据程序的静态属性将程序分成不同的状态段,结合在运行过程中通过内核收集运行时信息将程序动态分段,然后通过动态频率管理技术对不同状态段,设置相应的运行频率进行节能。本发明提出了一种内核动态加编译器静态对程序分段的方法,对原来的静态分段方法进行了改进,使得对程序的分段更加的贴近运行时状态,能够弥补静态分段的不足,降低程序运行时消耗的能量。
文档编号G06F1/32GK1794175SQ20061004893
公开日2006年6月28日 申请日期2006年1月6日 优先权日2006年1月6日
发明者陈天洲, 黄江伟, 梁晓, 钱杰, 吴心亮 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1