CN100346305C - 编译器和操作系统内核协同的节能方法 - Google Patents
编译器和操作系统内核协同的节能方法 Download PDFInfo
- Publication number
- CN100346305C CN100346305C CNB2006100489367A CN200610048936A CN100346305C CN 100346305 C CN100346305 C CN 100346305C CN B2006100489367 A CNB2006100489367 A CN B2006100489367A CN 200610048936 A CN200610048936 A CN 200610048936A CN 100346305 C CN100346305 C CN 100346305C
- Authority
- CN
- China
- Prior art keywords
- program
- compiler
- operating system
- section
- segmentation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000011218 segmentation Effects 0.000 claims abstract description 26
- 230000003068 static effect Effects 0.000 claims abstract description 15
- 239000002699 waste material Substances 0.000 claims abstract description 4
- 238000004891 communication Methods 0.000 claims description 19
- 238000005516 engineering process Methods 0.000 claims description 16
- 230000004087 circulation Effects 0.000 claims description 6
- 238000005265 energy consumption Methods 0.000 claims description 6
- 241001280173 Crassula muscosa Species 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000000295 complement effect Effects 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 238000011022 operating instruction Methods 0.000 claims description 3
- 210000004940 nucleus Anatomy 0.000 description 26
- 238000004134 energy conservation Methods 0.000 description 5
- 239000012141 concentrate Substances 0.000 description 4
- 239000011800 void material Substances 0.000 description 4
- 210000004027 cell Anatomy 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000446 fuel Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- HBBGRARXTFLTSG-UHFFFAOYSA-N Lithium ion Chemical compound [Li+] HBBGRARXTFLTSG-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 229910001416 lithium ion Inorganic materials 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 210000001519 tissue Anatomy 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种编译器和操作系统内核协同的节能方法。采用编译器在编译阶段根据程序的静态属性将程序分成不同的状态段,结合在运行过程中通过内核收集运行时信息将程序动态分段,然后通过动态频率管理技术对不同状态段,设置相应的运行频率进行节能。本发明提出了一种内核动态加编译器静态对程序分段的方法,对原来的静态分段方法进行了改进,使得对程序的分段更加的贴近运行时状态,能够弥补静态分段的不足,降低程序运行时消耗的能量。
Description
技术领域
本发明涉及基于嵌入式系统软件节能技术,特别是涉及一种操作系统与编译器协同工作节能的方法。
背景技术
在便携式嵌入式设备电源管理领域,目前的困难在于既要满足便携式终端对电源供电的要求,又要做到占用空间小、重量轻和供电时间更长。下一代消费类电子产品的电源解决方案重点应该集中在硬件和软件两方面技术,包括:(1)在小巧外形尺寸下,如何实现所需电源性能的工艺和技术,涉及热管理、降噪、电池管理和功能整合等技术;(2)动态功率管理技术,它取决于处理器性能、软件、中间件以及用户对更换电池的时间间隔等要求;(3)动态功率管理技术对操作系统内核和驱动器,以及应用编程接口(API)对驱动器、中间件和应用本身的影响。
现在嵌入式设备的功能变得越来越强大,功能也越来越丰富。随着嵌入式设备功能越来越多,用户对嵌入式设备电池的能量需求也越来越高,现有的锂离子电池已经越来越难以满足消费者对正常使用时间的要求。对此,业界主要采取两种方法,一是开发具备更高能量密度的新型电池技术,如燃料电池,在可以预见的5年内,电池技术不可能有很大的突破;二是在电池的能量转换效率和节能方面下功夫。在目前新的高能电池技术(如燃料电池)仍不成熟的情况下,下一代手持设备的电源管理只能从提高电源利用率和降低功耗这二个方面着手。
如何延长电池的使用寿命,以及尽量减少电池能量的消耗已经成为嵌入式领域的一个研究热点。现在主要集中在硬件设计和软件优化两方面。其中软件优化方面现在主要包括系统软件和应用软件两方面。系统软件主要集中在编译器和操作系统内核两块。
在操作系统领域,现在主要的电源管理方法是利用操作系统内核,动态的调整系统处理器和总线的频率,降低系统的整体能耗。而且系统可以通过动态频率指令改变系统状态,是系统处于低功耗状态,以达到节能的目的。在编译器方面,现在主要通过编译器在编译应用程序阶段,对代码进行优化,使代码尽量的紧凑以及访问设备尽量集中,以达到节能的目的。
上面的方法中,都是操作系统内核和编译器单独工作来完成系统的节能。操作系统可以很好的管理整个系统的能耗,但是对特定的应用不了解,不能针对特定的应用采用贴切的方法节能;编译器可以针对特定的应用采用符合应用需求的节能方法,但是这样容易引起整个系统的不稳定。
发明内容
本发明的目的在于提供一种编译器和操作系统内核协同的节能方法。
本发明解决其技术问题采用的技术方案如下:
1)程序静态分段:
编译器在程序编译阶段完成程序的静态分段,编译器在对程序P的源代码进行扫描的过程中分段;
编译器根据几条原则将程序P分为m个静态状态段,第一条原则:所有的函数调用都是一个独立的段,第二条原则:所有的循环都是一个独立的段;
2)插入程序与内核通讯指令:
程序的分段信息必须传给操作系统内核,编译器在编译过程中在每个段的前后都插入一条与内核通讯的指令,这条指令主要的作用是通知操作系统内核,现在程序进入一个新的段,这样操作系统内核就会建立新的数据结构管理这个段;
3)程序运行状态段管理:
通过编译器插入的通讯指令,操作系统内核就能建立起这个程序的管理框架;每个程序被分为很多段,操作系统内核将程序每个段的运行信息保存在一个数据结构中,并将这个程序所有的段信息用链表链在一起;
4)动态分段和动态频率管理:
操作系统内核根据快速缓存失效数动态的调整系统处理器的运行频率,使处理器处理数据的能力和数据传输的能力相匹配;
操作系统内核将根据程序某个段在运行时快速缓存失效数的变化,决定是否将这个段细分;当单位时间内快速缓存失效数不在同一个级别中,操作系统内核将对这个段进行细分,分为两个不同的段,并将新的段信息保存起来;
程序在运行过程中,操作系统内核根据运行时不同运行段单位时间内的快速缓存失效数和运行指令数,利用动态调频技术调整系统的频率,使处理器的空闲时间减少,减少处理器浪费的能耗,达到节能的目的。
本发明与背景技术相比,具有的有益的效果是:
本发明将编译器和操作系统的工作相结合,利用操作系统对整个系统的控制能力和编译器对应用程序的独特了解进行节能。编译器在编译阶段根据程序的静态属性将程序分成不同的状态段,结合在运行过程中通过内核收集运行时信息将程序动态分段,然后通过动态频率管理技术对不同状态段,设置相应的运行频率进行节能。
(1)动态性。应用程序在系统中运行时,操作系统动态收集程序运行信息,并对收集的信息进行分析。然后根据信息分析的结果,动态调整系统的频率并对编译器原来的分段进行动态调整。
(2)稳定性。操作系统将动态调整系统状态的权利掌握在自己手中,而不是下放给应用程序,这样系统就能在兼顾全局的情况下动态调整系统的状态,保证系统的稳定。
(3)实用性。原先手持设备程序员在编写应用程序的过程中,必须时刻考虑代码的组织,使应用程序在手持设备上运行能够尽量少消耗能量。利用编译器和内核协调的节能方法,就可以在编译和运行阶段帮用户解决能耗管理的问题。在经过反复的认证,这个方法可以很好的减少程序员的工作量,十分实用。
附图说明
图1是内核对程序运行时的管理数据结构;
图2是在英特尔公司Xscale体系结构下面快速缓存失效数的级别划分;
图3是本发明的流程图。
具体实施方式
在实施基于嵌入式系统的软件节能方法时,操作系统和编译器被广泛利用。
编译器和操作系统内核协同的节能方法具体实现流程如下。
第一步:程序静态分段。
编译器在程序编译阶段完成程序的静态分段,编译器在对被编译器编译的程序P的源代码如下所示,进行扫描的过程中分段:
#include<stdio.h> for(j=0;j<100;j++)
void foo(); sum+=c[j];
void g (); }
main(){ g(){
int c[20][20]; int i,j;
foo(); int c[50][50];
for(j=0;j<20;j++) int sum=0;
for(i=0;i<20;i++) for(j=0;j<50;j++)
c[i][j]=i*j; for(i=0;i<50;i++)
g(); c[i][j]=i+j;
} for(j=0;j<50;j++)foo(){ for(i=0;i<50;i++)
int j,sum=0; sum+=c[i][j];
int c[100]; }
for(j=0;j<100;j++)
c[j]=j;
编译器在对代码的编译过程中,总共分为6步,前面3步对最后生成代码的优化基本没有影响,编译器和操作系统内核协同的节能方法修改了编译器的第四步,在对代码的优化过程中将代码分段。
编译器根据几条原则将程序P分为m个静态状态段,第一条原则:所有的函数调用都是一个独立的段,第二条原则:所有的循环都是一个独立的段。之所以使用这两个分段原则是考虑到局部性原则,因为相邻数据的访问基本都是集中在同一个循环中或者同一个函数中。静态分段的过程有以下几步:
1、编译器对程序源代码进行扫描;
2、判断是否是循环开始。如果是循环开始分段,否则继续;
3、判断是否是函数调用,是的话开始分段,否则继续;
4、判断是否分段结束,是结束静态分段,否则继续扫描程序。
第二步:插入程序与内核通讯指令。
程序的分段信息必须传给操作系统内核,才能和操作系统进行协同;经过第一步,代码已经被化分为各个段,编译器在找到一个段后在这个段的前后都插入一条与内核通讯的指令。这些内核通讯的指令都是一些操作系统内核提供的应用程序接口。
Entering Region这条指令主要的作用是通知操作系统内核,现在程序进入一个新的段,这个段的名字是Region,其中region只是一个字符串,可以按照自己的需要起不同的名字。Exiting Region这条指令的意思是和前面那条意思正好对应,他是告诉操作系统内核,程序已经从名字为region这个段退出。当操作系统收到Entering Region这条指令后,操作系统内核就会建立新的数据结构管理这个段。
经过分段和插入内核通讯指令后,上面应用程序的代码P就被修改为带有分段和内核通讯信息的代码,如下所示:
#include<stdio.h>
void foo();
void g();
main(){
int c[20][20];
Entering region1;//内核通讯代码
foo();
Exiting region1;//内核通讯代码
Entering region2;//内核通讯代码
for(j=0;j<20;j++)
for(i=0;i<20;i++)
c[i][j]=i*j;
Exiting region2;//内核通讯代码
Entering region3;//内核通讯代码
g();
Exiting region3;//内核通讯代码
}
第三步:程序运行状态段管理。
通过编译器插入的通讯指令,操作系统内核就能建立起这个程序的管理框架;每个程序被分为很多段,操作系统内核将程序每个段的运行信息保存在一个数据结构中,并将这个程序所有的段信息用链表链在一起,内核对程序运行时的管理数据结构如图1所示。操作系统内核对程序运行状态段管理可以分为这么几个步骤:
1、建立程序状态数据结构。当程序被运行起来时,操作系统内核会建立一个processCtrl数据结构用来管理这个运行的进程,包括自己的进程号,以及这个进程被分为多少个段,其中在processCtrl还有一个重要的数据就是一个列表结构list<RegionCtrl>,用来将这个进程的所有段的信息链在一起。
2、建立段管理数据结构。当程序进入一个段是,操作系统内核建立一个regionCtrl数据结构用来管理程序中的这个段。当应用程序通过第二步中添加的通讯指令通知系统内核程序进入一个新的段时,系统会自动建立一个regionCtrl的数据结构,并把它挂载相应的processCtrl上面。regionCtrl主要用来记录这个段运行时的信息,包括快速缓存的失效数以及单位时间内的指令数等。每个regionCtrl都包含几个regionHistory,每个regionHistory都记录了这个程序运行的历史情况。
3、性能监视。程序在运行的时候,系统通过处理器上的运行状态监视模块,获得程序在单位时间里运行的指令数和快速缓存失效数,单位时间运行的指令数代表了处理器的当前状态,快速缓存失效数代表了程序访问数据的能力和负荷,这两者的协调工作对系统的能耗影响是很大的,操作系统内核根据运行的体系结构将快速缓存失效数的范围分为不同的级别。在英特尔公司Xscale体系结构下面快速缓存失效数的级别划分如图2所示。
4、将性能信息保存。操作系统内核将采集到的程序运行信息保存到上面1、2两步建立的数据结构中,为第四步工作提供数据。
第四步:动态分段和动态频率管理。
操作系统内核根据快速缓存失效数动态的调整系统处理器的运行频率,使处理器处理数据的能力和数据传输的能力相匹配。
操作系统内核将根据程序某个段在运行时快速缓存失效数的变化,决定是否将这个段细分;当单位时间内快速缓存失效数不在同一个级别中,操作系统内核将对这个段进行细分,分为两个不同的段,并将新的段信息保存起来,这个过程可以分为以下几步:
1、确定是否分段;
2、如果要分段的话建立一个regionCtrl的数据结构;
3、更新新旧两个段的信息。
动态调频技术可以在处理器运行过程中调整系统的处理器频率,这样当处理器空闲时间较长时,就可以调整处理器速度到一个比较低的值,降低处理器消耗的能量。程序在运行过程中,操作系统内核根据运行时不同运行段单位时间内的快速缓存失效数和运行指令数,利用动态调频技术调整系统的频率,使处理器的空闲时间减少,减少处理器浪费的能耗,达到节能的目的。这个过程主要分为一下几步:
1、当单位时间过去后,系统唤醒调频模块;
2、根据运行状态信息,判断是否调频;
3、如果要求调频,根据计算结果调频;
4、新建一个regionHistory结构,并将性能信息保存到regionHisorty。
整个发明的工作流程图如图3所示。
Claims (1)
1.一种编译器和操作系统内核协同的节能方法,其特征在于流程如下:
1)程序静态分段:
编译器在程序编译阶段完成程序的静态分段,编译器在对程序P的源代码进行扫描的过程中分段;
编译器根据几条原则将程序P分为m个静态状态段,第一条原则:所有的函数调用都是一个独立的段,第二条原则:所有的循环都是一个独立的段;
2)插入程序与内核通讯指令:
程序的分段信息必须传给操作系统内核,编译器在编译过程中在每个段的前后都插入一条与内核通讯的指令,这条指令主要的作用是通知操作系统内核,现在程序进入一个新的段,这样操作系统内核就会建立新的数据结构管理这个段;
3)程序运行状态段管理:
通过编译器插入的通讯指令,操作系统内核就能建立起这个程序的管理框架;每个程序被分为很多段,操作系统内核将程序每个段的运行信息保存在一个数据结构中,并将这个程序所有的段信息用链表链在一起;
4)动态分段和动态频率管理:
操作系统内核根据快速缓存失效数动态的调整系统处理器的运行频率,使处理器处理数据的能力和数据传输的能力相匹配;
操作系统内核将根据程序某个段在运行时快速缓存失效数的变化,决定是否将这个段细分;当单位时间内快速缓存失效数不在同一个级别中,操作系统内核将对这个段进行细分,分为两个不同的段,并将新的段信息保存起来;
程序在运行过程中,操作系统内核根据运行时不同运行段单位时间内的快速缓存失效数和运行指令数,利用动态调频技术调整系统的频率,使处理器的空闲时间减少,减少处理器浪费的能耗,达到节能的目的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100489367A CN100346305C (zh) | 2006-01-06 | 2006-01-06 | 编译器和操作系统内核协同的节能方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100489367A CN100346305C (zh) | 2006-01-06 | 2006-01-06 | 编译器和操作系统内核协同的节能方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1794175A CN1794175A (zh) | 2006-06-28 |
CN100346305C true CN100346305C (zh) | 2007-10-31 |
Family
ID=36805652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100489367A Expired - Fee Related CN100346305C (zh) | 2006-01-06 | 2006-01-06 | 编译器和操作系统内核协同的节能方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100346305C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109725904B (zh) * | 2017-10-31 | 2021-10-22 | 中国科学院微电子研究所 | 一种低功耗程序指令编译方法及系统 |
CN108121285B (zh) * | 2017-12-20 | 2020-08-25 | 中国铁道科学研究院 | 基于连续功能图的应用软件协同编译方法及装置 |
CN108563442A (zh) * | 2018-02-28 | 2018-09-21 | 北京智行鸿远汽车有限公司 | 代码编译方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282663B1 (en) * | 1997-01-22 | 2001-08-28 | Intel Corporation | Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor |
CN1321273A (zh) * | 1999-07-29 | 2001-11-07 | 松下电器产业株式会社 | 操作系统和虚拟计算机系统 |
CN1145870C (zh) * | 1998-12-21 | 2004-04-14 | 西门子信息及通讯网络公司 | 用于自动cpu速度控制的装置和方法 |
-
2006
- 2006-01-06 CN CNB2006100489367A patent/CN100346305C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282663B1 (en) * | 1997-01-22 | 2001-08-28 | Intel Corporation | Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor |
CN1145870C (zh) * | 1998-12-21 | 2004-04-14 | 西门子信息及通讯网络公司 | 用于自动cpu速度控制的装置和方法 |
CN1321273A (zh) * | 1999-07-29 | 2001-11-07 | 松下电器产业株式会社 | 操作系统和虚拟计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1794175A (zh) | 2006-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1129831C (zh) | 在使用网络时使有省电功能的计算机进入省电模式的方法 | |
CN1294486C (zh) | 多重处理环境中透明动态优化的方法和系统 | |
CN1881140A (zh) | 多核处理器的处理器模式自动控制装置及其方法 | |
CN1890636A (zh) | 用于低功率程序调整的功率性能监视器的装置和方法 | |
CN1308826C (zh) | 用于smt处理器上的cpi调度的系统和方法 | |
Rizvandi et al. | Linear combinations of dvfs-enabled processor frequencies to modify the energy-aware scheduling algorithms | |
Attia et al. | Dynamic power management techniques in multi-core architectures: A survey study | |
CN1892536A (zh) | 控制无线通信系统中正向信道上数据速率的方法和装置 | |
CN1905309A (zh) | 一种锂电池充电控制方法和系统 | |
CN101076770A (zh) | 根据可用并行数目改变每条指令能量的方法和设备 | |
CN100465857C (zh) | 一种面向嵌入式系统低功耗实时任务调度的简化方法 | |
CN1142510C (zh) | 在数据处理系统中基于处理器使用情况的电源管理 | |
CN1776568A (zh) | 基于任务的动态调节cpu工作频率的方法及系统 | |
CN1200342C (zh) | 指令变换装置和变换方法 | |
CN100346305C (zh) | 编译器和操作系统内核协同的节能方法 | |
CN103902016A (zh) | 一种面向场景预测的服务器功耗管理方法 | |
CN1866165A (zh) | 具有节电功能的电脑系统及电脑系统节电模式的实现方法 | |
CN1349160A (zh) | 流水线控制相关延迟消除方法 | |
CN1272701C (zh) | 调整中央处理器工作频率方法 | |
Eeckhout | FOCAL: A First-Order Carbon Model to Assess Processor Sustainability | |
CN1828543A (zh) | Java操作系统中实时任务调度方法 | |
CN1234058C (zh) | 具有低功率译码电路的处理器 | |
CN1894648A (zh) | 频率控制方法和信息处理设备 | |
CN100346306C (zh) | 基于动态调频技术的节能编译方法 | |
CN1225681C (zh) | 可切换工作频率的计算机系统及其切换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071031 Termination date: 20120106 |