CN101387950A - 微处理器控制装置以及用于该装置的方法和程序 - Google Patents
微处理器控制装置以及用于该装置的方法和程序 Download PDFInfo
- Publication number
- CN101387950A CN101387950A CNA2008102135794A CN200810213579A CN101387950A CN 101387950 A CN101387950 A CN 101387950A CN A2008102135794 A CNA2008102135794 A CN A2008102135794A CN 200810213579 A CN200810213579 A CN 200810213579A CN 101387950 A CN101387950 A CN 101387950A
- Authority
- CN
- China
- Prior art keywords
- instruction code
- final term
- operating speed
- microprocessor
- state
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- 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
Abstract
本发明涉及微处理器控制装置以及用于该装置的方法和程序。所述装置控制微处理器的操作速度,该微处理器执行包括指令代码的程序,该装置包括:状态观察单元,其在执行最终期限指令代码前的多个预定定时观察程序的执行状态;在为预定义的执行状态的每一个完成执行最终期限指令代码前要求的剩余计算量的预测数据;预测计算量获取单元,其获取对应于观察的执行状态的剩余计算量作为剩余预测计算量;剩余时间计算单元,其计算直至最终期限指令代码的所述最终期限的剩余时间;操作速度计算单元,其计算在剩余时间内处理剩余预测计算量要求的微处理器的最小操作速度;以及控制单元,其控制微处理器以所述最小操作速度或更高的速度操作。
Description
相关申请的交叉引用
本申请基于2007年9月13日提交的在先日本专利申请第2007-237818号,并要求其优先权,该申请的全部内容在此处引入作为参考。
技术领域
本发明涉及微处理器控制装置、微处理器控制方法和用于控制微处理器的操作速度的微处理器控制程序。
背景技术
在嵌入式系统的发展中,要求对保证服务质量和减少能耗的均衡竞争目标。微处理器的功耗(每单位时间消耗的能源量)占能耗的很大比例,它以微处理器的操作速度的大约三次幂增加(例如,功率=阿尔法*电容*电压*电压*频率,电压∝频率,其中“∝”表示比例,“阿尔法”表示常数)。服务质量可以被解释为对处理的最终期限或时间限制。任务的执行时间(处理的特定单元)与处理速度成反比,并且为了使任务处理的能耗最小化,原则上最好使微处理器在最终期限内以最低速度运行。近年来,允许执行期间改变它的处理速度的处理器已被纳入实际应用,这使得能够基于该原则减少能耗。
然而,当处理通用程序时难以对处理器的操作速度进行适当调整。例如,由于改变处理器的操作速度要求特定的指令周期(例如,几百个周期),任务必须是相对较大的处理单元。通常,大的处理单元包括迭代和/或分支,并且难以预测相关的计算量。而且,对程序的最终期限不是在每任务基础上而是作为(一字节组)时间被给出,在所述(一字节组)时间内应当到达程序中可执行的语句。已知的速度控制技术一般可以被分类为基于手动任务划分的技术(优点是:对速度进行精细粒度的调整,缺点是:手动进行任务划分)和基于反馈控制的技术(优点是:不要求任务划分,缺点是:对速度进行粗粒度的调整)。
发明内容
根据本发明的一方面,提供了一种控制执行包括指令代码的程序的微处理器的操作速度的微处理器控制装置,在所述指令代码中对至少一个指令代码指定最终期限,所述微处理器控制装置包括:
状态观察单元,其被配置为在先于执行最终期限指令代码的多个预定定时观察所述程序的执行状态,所述最终期限指令代码是被指定了所述最终期限的指令代码;
数据存储单元,其被配置为存储在为多个预定义执行状态的每一个完成执行所述最终期限指令代码前要求的剩余计算量的预测数据;
预测计算量获取单元,其被配置为从所述预测数据中获取对应于观察的执行状态的剩余计算量作为剩余预测计算量;
剩余时间计算单元,其被配置为计算直至所述最终期限指令代码的所述最终期限的剩余时间;
操作速度计算单元,其被配置为计算在所述剩余时间内处理所述剩余预测计算量要求的所述微处理器的最小操作速度;以及
控制单元,其被配置为控制所述微处理器以所述最小操作速度或更高的速度操作。
根据本发明的一方面,提供了一种控制执行包括指令代码的程序的微处理器的操作速度的微处理器控制方法,在所述指令代码中对至少一个指令代码指定最终期限,所述微处理器控制方法包括:
在先于执行最终期限指令代码的多个预定定时观察所述程序的执行状态,所述最终期限指令代码是被指定了所述最终期限的指令代码;
在存储器中存储在为多个预定义执行状态的每一个完成对所述最终期限指令代码的执行前要求的剩余计算量的预测数据;
从所述存储器中的所述预测数据中获取对应于观察的执行状态的剩余计算量作为剩余预测计算量;
计算直至所述最终期限指令代码的所述最终期限的剩余时间;
计算在所述剩余时间内处理所述剩余预测计算量要求的所述微处理器的最小操作速度;以及
控制所述微处理器以所述最小操作速度或更高的速度操作。
根据本发明的一方面,提供了一种存储计算机程序用于促使控制执行包括指令代码的程序的微处理器的操作速度的计算机执行指令以实施以下步骤的计算机程序存储介质,在所述指令代码中为至少一个指令代码指定最终期限,所述步骤包括:
在先于执行最终期限指令代码的多个预定定时观察所述程序的执行状态,所述最终期限指令代码是被指定了所述最终期限的指令代码;
访问存储器中在为多个预定义执行状态的每一个完成执行所述最终期限指令代码前要求的剩余计算量的预测数据;
从所述存储器中的所述预测数据中获取对应于观察的执行状态的剩余计算量作为剩余预测计算量;
计算直至所述最终期限指令代码的所述最终期限的剩余时间;
计算在所述剩余时间内处理所述剩余预测计算量要求的所述微处理器的最小操作速度;以及
控制所述微处理器以所述最小操作速度或更高的速度操作。
附图说明
图1示出根据本发明的包含操作系统的嵌入式系统;
图2示出自适应速度控制装置的详细配置;
图3示出用于在随后的描述中提供具体描述的应用程序的例子;
图4示出对应用程序的控制流的略图;
图5示出状态转换图的例子;
图6示出状态转换图的另一例子;
图7示出状态转换图的另一例子;
图8示出包含状态标签的例子的表;
图9示出在生成状态转换表期间获得的信息的表;
图10示出从图9的表生成的状态转换表的例子;以及
图11示出状态转换表的另一例子。
具体实施方式
图1示出根据本发明的包含操作系统的软实时嵌入式系统。
该嵌入式系统包括微处理器(CPU)11、被微处理器11执行的操作系统或OS12、在操作系统12上运行的应用程序13以及当微处理器11执行应用程序13时调整微处理器11的操作速度的自适应速度控制装置14。微处理器11支持例如动态电压频率调节(DVFS)。自适应速度控制装置14的功能可以被例如作为操作系统12的一部分并入。
图3示出应用程序13的例子。
应用程序13由许多指令代码构成,并且包含许多子程序。以前缀“app_”开始的子程序属于应用程序,以前缀“sys_”开始的子程序属于对OS的系统调用。系统调用“sys_”是被应用程序13用来请求来自操作系统的处理的子程序。
该应用程序在子程序的主回路“app_main”的开始进入数据接收等待“sys_recv”,并且紧随数据接收到下一个接收等待(即,从“sys_init”到“sys_fini”)的部是被周期性执行的部分(周期性任务)。“sys_init”和“sys_fini”是定义周期性任务部的开始和结束的系统调用。“while(1)”是命令重复跟随“while(1)”的“{”和“}”之间包含的指令的指令代码。
在周期性任务中,取决于条件分支,执行子程序“app_sub1”或子程序“app_sub2”,并且之后执行子程序“app_sub3”。子程序“app_sub1”和“app_sub2”执行数据传输“sys_send”,子程序“app_sub3”执行文件写作“sys_wirte”。
系统调用“sys_”被分类成与控制操作速度相关的和与控制操作速度无关的。后一种系统调用包括用于实施对标准文件的读或写和/或经由网络的通信(“sys_recv”、“sys_send”、“sys_wirte”)的指令。前一种系统调用包括指示周期性任务的开始的“sys_init”、指示周期性任务的结束的“sys_fini”以及在周期性任务中指定最终期限(完成的时间限制)的“sys_time”。
“Void app_sub2”中的“sys_time(10ms)”意味着从周期性任务的开始“sys_init”到完成执行刚好早于“sys_time(10ms)”的指令代码必须在10毫秒(ms)内。换言之,“sys_time(10ms)”对完成执行刚好早于它(最终期限指令代码)的指令代码指定最终期限。同样地,“sys_fini(20ms)”意味着周期性任务必须在从周期性任务开始的20ms内被终止(或必须完成执行“app_sub3”)。也就是说,“sys_fini(20ms)”为周期性任务中的最后指令代码“app_sub3”指定最终期限。要注意,周期性任务的开始“sys_init”是0ms。
如上所述,该实施例的应用程序13包含被重复执行的周期性任务。图4中示出应用程序13的控制流特别是周期性任务的控制流的略图。
应用程序13包括在开始(START)和结束(STOP)之间被重复执行的周期性任务。图中,被虚线环绕的部分表示在“sys_init”和“sys_fini(20ms)”之间包含的周期性任务。周期性任务有它的开始(INIT)和结束(FINI),并且在开始(INIT)和结束(FINI)之间重复跨过最终期限位置(TIME)和调用系统调用(CALL)。例如,回放运动图像的应用程序具有程序的开始和结束以及计算运动图像的一个帧的周期性任务,并且在周期性任务中存在各种系统调用和最终期限。图中,例如,“INIT”对应于“sys_init”,“FINI”对应于“sys_fini(20ms)”,“TIME”对应于“sys_time(10ms)”,以及“CALL”对应于“sys_send”和“sys_wirte”。
图2示出图1的自适应速度控制装置14的详细配置。
程序状态观察单元21在OS调用(系统调用)的时候观察执行周期性任务期间应用程序的状态,并且向计算量预测数据生成器22或操作速度控制单元23输出表示观察的状态的状态标签。程序状态观察单元21对应于例如状态观察单元和第二状态观察单元。
计算量预测数据生成器22生成计算量预测数据24,计算量预测数据24表示对从观察周期性任务获得的每一个状态到达最终期限状态(即,状态中被指定了最终期限的状态),也就是到完成执行被指定了最终期限的指令代码(最终期限指令代码)时的预测的计算量(或预测的循环计数)以及诸如此类。计算量预测数据24也被称为状态转换表。生成的计算量预测数据24被存储在例如数据存储单元中。
根据计算量预测数据24并且基于当前的程序状态,操作速度控制单元23确定完成执行被指定最终期限的指令代码(最终期限指令代码)时要求的剩余计算量,并且基于确定的计算量和最终期限前的剩余时间,决定应当采用的微处理器的操作速度直至转换到下一程序状态。例如,操作速度控制单元23决定在剩余时间内处理确定的计算量要求的最小速度作为微处理器的操作速度。可选地,操作速度控制单元23选择比最小速度高并且是许多预先指定的操作速度中具有最小值的操作速度。
假定在最终期限内由于系统上的负载增加以及类似原因应用程序13不终止,操作速度控制单元23还根据最终期限的完成率(最终期限实际被满足的比率)调整操作速度。例如,完成率越低,设置比通过以上提及的方式确定的或选择的操作速度高的操作速度。操作速度控制单元23包括例如剩余时间计算单元、操作速度计算单元、控制单元和完成率计算单元。
下文将更详细地描述自适应控制装置14的操作。
然而,以下的描述有时使用各种指令代码来示出程序状态观察单元21、计算量预测数据生成器22和操作速度控制单元23的处理过程。这样的描述遵循以下规则:后缀“_start”被附加到当应用程序开始(START)时被实施的处理,后缀“_stop”被附加到当程序终止(STOP)时被实施的处理,后缀“_init”被附加到当周期性任务开始(INIT)时被实施的处理,后缀“_fini”被附加到当周期性任务终止(FINI)时被实施的处理,以及后缀“_call”被附加到在系统调用(CALL)时被实施的处理。为了区别系统调用和最终期限通知,添加了后缀“_time”。
图2的自适应速度控制装置14实施的处理一般包括学习阶段和控制阶段。学习阶段中,在执行周期性任务期间观察应用程序的状态并且创建状态转换表(计算量预测数据)。控制阶段中,使用应用程序的观察的状态和状态转换表,预测一直到被指定最终期限的位置的计算量(sys_time,sys_fini),即,完成执行最终期限指令代码时要求的计算量。然后,基于预测的计算量和最终期限前的剩余时间控制微处理器的操作速度。
下面描述学习和控制阶段的概况并随后描述各阶段的细节。
<学习阶段的概况>
首先,执行应用程序13,并且在执行周期性任务期间通过程序状态观察单元21观察应用程序13的状态。当调用系统调用“sys_”时观察状态并将观察的状态保存为状态标签。
计算量预测数据生成器22基于通过程序状态观察单元21获得的状态标签,生成表示周期性任务中状态转换的状态转换图(见以下讨论的图5和6)。计算量预测数据生成器22然后生成表示从状态转换图中的每一个状态到达最终期限状态要求的微处理器的平均计算量(预测计算量)以及到达每一个最终期限状态的概率的状态转换图(计算量预测数据)。<控制阶段的概况>
执行应用程序13,并且在执行周期性任务期间通过程序状态观察单元21观察它的状态。使用观察的状态和在学习阶段中获得的状态转换表,操作速度控制单元23决定在每一个状态转换(即,每次有系统调用)时对下一状态的操作速度,并且使微处理器(CPU)11在该速度操作直至下一状态转换为止。通过这种方式,执行周期性任务期间微处理器(CPU)11的操作速度被以系统调用的定时(即,状态转换的定时)控制。可以顺序或者并行(例如,在操作期间修改计算量预测数据)执行控制阶段和学习阶段。
<学习阶段的细节>
当有系统调用而周期性任务被执行的时候,程序状态观察单元21观察应用程序的状态。在系统调用时观察状态,因为如果有太多的观察点(例如,如果在调用子程序而不是系统调用的时候也观察状态),微处理器上的负载将加重。因此,本发明不排除在系统调用以外的时候观察状态。
在该实施例中,观察的状态对应于在观察的时候(即,紧随系统调用后)的在用子程序(包括系统调用和应用子程序两者)的字节组。对一个字节组给定一个标签。例如,当按照“app_main”然后是“sys_init”的顺序执行子程序时,并且在调用“sys_init”时实施状态观察,则获得表示“app_main”和“sys_init”的字节组的状态标签。
图8示出从观察图3的应用程序的状态中产生的表(状态标签的例子)。
该表示出总共六个状态标签:s0、s1、s2、s3、s4和s5。也就是说,当调用系统调用时观察的状态属于六个状态s0、s1、s2、s3、s4和s5中的一个。表中的“堆栈”域包含属于各状态的子程序的字节组,其中子程序早于它们进入图中的左侧被调用。当图中最右边的子程序(系统调用)被调用时实施状态观察。
在表中的“最终期限”域中,当表中最右边的系统调用指定最终期限时存储“o”,当它不指定一个时存储“×”。例如出于处理简单起见,采用指示周期性任务开始的“sys_init”指定最终期限。
具体来说,对应于一个状态的子程序的字节组可以被作为子程序的返回地址的列表获得,所述子程序被堆栈在用于应用程序的调用堆栈中。用于程序的调用堆栈为未完成的子程序存储数据。对应于一个子程序的数据被称为帧,所述帧包括子程序的本地变量、返回地址、前一个帧的起始地址等。帧中的值被存储在位于离该帧的起始地址的特定偏移量的地址处。帧中的偏移量值和寄存器名取决于执行环境而不同,但是基本的过程与此处示出的类似。
该实施例假定被称为帧指针($fp)的寄存器中的值指向最顶层的或当前帧的起始地址(POS),并且帧的起始地址处存储的内容(mem[pos])指示前一个帧的起始地址。位于远离帧的起始地址的偏移量值(off)处的内容(ret=mem[pos+off])表示子程序的返回地址。可以通过追踪调用堆栈的同时记录返回地址(ret)的字节组直至帧起始地址(pos)与堆栈底层(bot)对应为止,来获得以上提及的列表。以下对伪程序中的“bot::Uint”的描述意味着“变量‘bot’的类型是不分正负的整数‘Uint”’。
下面示出获得存储了堆栈中的返回地址的字节组的列表的示例性处理过程。
名称:app_stack
功能:获得存储堆栈中的返回地址的列表
常量:
Stack bottom,bot::Uint(a constant)
Offset,off::Uint(a constant)
输入:
OS call identifier sid::Uint
Stack-allocated memory mem::Map of Uint to Uint
输出:
Stack return address sequence seq::Seq of Uint
app_stack()
Uint bot=stack bottom
Uint off=offset
Uint sid=OS call identifier
Uint pos=($fp)frame pointer
Uint ret=return address
Pos←$fp
Ret←sid
Seq←[ret]//an empty list
while pos!=bot do
pos←mem[pos]
ret←mem[pos+off]
seq←seq+[ret]
od
return seq
计算量预测数据生成器22接连地从程序状态观察单元21获得状态标签(或列表),并且使用获得的状态标签创建表示应用程序中的状态转换的状态转换图。状态转换图可以被视为提取涉及应用程序的操作的特征。
图5示出从图3的应用程序创建的状态转换图的例子。
状态转换图是一种有向图。状态转换图表示被作为通过边与表示前一个或后续状态的节点连接的节点在系统调用的时候观察的应用程序的状态。图5中的s0、s1、s2、s3、s4和s5表示节点并且这些节点s0、s1、s2、s3、s4和s5对应于图8的表中示出的状态(应用程序的调用堆栈)。
图5中的数字0ms、10ms和20ms指最终期限。也就是说,假定状态s0在0ms处,则必须在10ms内到达状态s4,并且必须在20ms内到达状态s5。到标签“s3”的递归箭头意味着标签“s3”已被重复获得。更具体地,它意味着图3的应用程序的“void app_sub2”中的“for”语句中的“sys_send”已被重复并且连续地执行了多次。
下面示出对状态转换图“M”的定义。假定标签集“S”是状态标签的集合,并且开始标签集“I”、最终期限标签集“D”和结束标签集“F”是集合“S”的子集。周期性任务的状态标签的集合被表示为“I”,结束标签的集合被表示为“F”。集合“F”和“I”没有共同元素(F∩I=φ),其中φ表示空集。标签集“S-D”(“S”减去“D”的余项)对应于正常的系统调用。最终期限标签“d∈D”具有最终期限“T(d)”。
M=(S,I,D,F,R,T)
Label set:S (本例中,
S={s0,s1,s2,s3,s4,s5})
Start label set: (本例中,I={s0})
Deadline lable set: (本例中,D={s0,s4,s5})
Finish lable set: (本例中,F={s5})
Label transition relation: (本例中,
R={(s0,s1),(s1,s2),(s0,s3),(s3,s3),(s3,s4),(s4,s2),(s2,s5)}
Deadline assignment:T:D→Time(本例中,T={s0→0ms,s4→10ms,s5→20ms})
尽管以上的例子将在用子程序的字节组(调用堆栈中的返回地址的列表)作为状态标签获取,也有可能扩展状态标签的内容并将调用堆栈中的返回地址列表的字节组以及发生频率(每周期调用的数量)作为状态标签获得。
图6示出使用扩展的状态标签生成的状态转换图的例子。
扩展的状态标签被表示为返回地址列表“S”和它的发生频率“f(s)”的对,即,<s,f(s)>。例如,<s3,1>意味着“s3”的第一次发生,<s3,2>意味着“s3”的第二次发生。图5用递归箭头表示“s3”的多次发生,而图6中“s3”的每次发生被作为不同状态获得。从图中要理解有两种情况:一种是从<s3,1>经由<s3,2>到<s4,1>发生转换,一种情况是从<s3,1>到<s4,1>直接发生转换。
此处,对具有扩展的状态标签的状态转换图“M”的定义在下面示出。标签集“S”是状态标签的集合,并且开始标签集“I”、最终期限标签集“D”和结束标签集“F”是集合“S”的子集。对周期性任务的开始标签的集合被表示为“I′”,结束标签的集合被表示为“F′”。集合“F′”和“I′”没有共同元素(F′∩I′=φ),其中φ表示空集。标签集“S′-D′”(“S′”减去“D′”的余项)对应于正常的系统调用。最终期限标签“d′∈D′”具有最终期限“T′(d′)”。
Label set:S′ (本例中,
S′={<s0,1>,<s1,1>,<s2,1>,<s3,1>,<s3,2>,<s4,1>,<s5,1>})
Start label set: (本例中,I′={<s0,1>})
Deadline lable set: (本例中,
D′={<s0,1>,<s4,1>,<s5,1>})
Finish lable set: (本例中,F′={<s5,1>})
Label transition relation: (本例中,
R′={(<s0,1>,<s1,1>),(<s1,1>,<s2,1>),(<s0,1>,<s3,1>),(<s3,1>,<s3,2>),
(<s3,1>,<s4,1>),<s3,2>,<s4,1>),(<s4,1>,<s2,1>),(<s2,1>,<s5,1>)}
Deadline assignment:T′:D′→Time(本例中,
T′={<s0,1>→0ms,<s4,1>→10ms,<s5,1>→20ms})
下面示出计算扩展的状态标签的过程。以下的计算过程假定集合“S”是用于维护在过去已发生的调用堆栈中的返回地址的列表的集合,并且映射“f”是用于维护在相同调用堆栈中的返回地址列表的发生频率的映射。当启动程序(START)时集合“S”被初始化到空的状态,并且在系统调用(CALL)的时候向集合“S”添加返回地址列表。当启动程序(START)时映射“f”被初始化到空的状态,并且当有系统调用(CALL)时在映射“f”中维护的发生频率被增加。如以上提及的,状态标签是返回地址列表“s”和它的发生频率“f(s)”的对,<s,f(s)>。
功能:生成用于计算“M”(具有发生计数)的标签
注意:Label=(Seq of Uint,Uint)
void label_start()
S::Set of State←φ
f::Map of S to N←φ
return
Label label_init()
for each s∈S do
f(s)←0
od
return label_call()
Label label_fini()
return label_call()
Label label_call()
s←app_stack()
if not s∈S then
f(s)←0
S←S∪{s}
fi
f(s)←f(s)+1
return<s,f(s)>
计算量预测数据生成器22生成表示在这样创建的状态转换图(图5或6)中从每一个状态到达最终期限状态的概率(或最终期限指令代码的执行率)的状态转换表和微处理器的平均计算量(或预测的计算量)。定义状态转换表如下。
当前状态是状态“s”时,到达最终期限状态“d”的概率被表示为“Prob(s,d)”,并且一直到最终期限状态“d”的计算量被表示为“Cycl(s,d)”。下面讨论的控制阶段使用计算量“Cycl(s,d)”和从程序的当前状态“s∈S”到具有最终期限“d∈D”的状态的到达概率“Prob(s,d)”。状态转换表包含计算量“Cycl”和对于路径从每一个状态到达最终期限状态的到达概率“Prob”。
到达概率:Prob::Map of(S,D)to R
计算量(预测计算量):Cycl::Map of(S,D)to R
下面具体示出生成状态转换表的过程。状态转换表可以通过向状态转换图(图5或6)添加转换时的平均计算量和分支时的每一个分支的概率来生成,但是可以通过观察应用程序更容易地直接生成。因此,下面将示出通过观察执行应用程序生成对应用程序的状态转换表(“Prob”,”Cycl”)的过程。
以下过程假定可以借助例如对处理器的简档计数器(profile counter)、CPU模拟器或类似的来测量对应用程序的指定部的计算量(CPU循环计数)。计算量预测数据生成器22包括测量对例如指定部的计算量的计算量测量单元。
功能:生成应用程序的状态转换表(“Prob”,“Cycl”)
变量:
访问频率,FreqS::Map of S to N
访问周期,CyclS::Map ofS to N
转换频率,FreqT::Map of(S,D)to N
转换周期,CyclT::Map of(S,D)to N
访问标记,Visit::Map of S to Bool
输入:
标签集合“S”以及最后期限标签集合“D”
输出:
到达概率“Prob”以及循环计数“Cycl”
void mktab_start()
label_start()
for each s∈S do
FreqS(s)←0
for each d∈D do
FreqT(s,d)←0
CyclT(s,d)←0
od
od
void mktab_init()
for each s∈S do
Visit(s)←false
CyclS(s)←0
od
s←label_init()
Visit(s)←true
CycleS(s)←execution cycle count()
void mktab_call()
s←label_call()
Visit(s)←true
CycleS(s)←execution cycle count()
void mktab_time()
mktab_call()
void mktab_fini()
for each s∈S do
for each d∈D do
if Visit(s)∧Visit(d)∧CycleS(s)<CycleS(d)then
FreqT(s,d)←FreqT(s,d)+1
CyclT(s,d)←CyclT(s,d)+CycleS(d)-CycleS(s)
fi
od
od
void mktab_stop()
for each s∈S do
for each d∈D do
if FreqT(s,d)>0then
Cycl(s,d)←CyclT(s,d)/FreqT(s,d)
else
Cycl(s,d)←0
fi
if FreqS(s)>0then
Prob(s,d)←FreqT(s,d)/FreqS(s)
else
Prob(s,d)←0
fi
od
od
在以上的过程中,访问频率“FreqS”记录状态“s∈S”的发生数量,转换频率“FreqT”记录从状态“s∈S”到状态“d∈D”的转换频率。转换周期“CyclT”对从状态“s∈S”到状态“d∈D”的转换所要求的计算量进行加和。访问标记“Visit”和访问循环“CyclS”分别记录被访问的状态(无论该状态是否已被访问)和从周期性任务的开始到周期性任务的结束的访问时的循环计数。
分别地,当启动应用程序时(START),变量“FreqS”、“FreqT”和“CyclT”被初始化到0,当启动周期性任务(INII)时,“Visit”和“CyclS”被初始化到“false”和“0”。当周期性任务已结束时(FINI),从“Visit”和“CyclS”的值确定转换关系,并且还更新“FreqT”和“CyclT”。当程序已终止时(STOP),从“FreqS”、“FreqT”和“CyclT”的值计算状态转换表(“Cycl”,“Prob”)。
图9是示出在根据以上过程生成状态转换表期间的状态的表。表的每行对应于在一个周期性任务中执行的执行路径,并且包含变量“Visit”、“CyclS”、“FreqS”、“CyclT”和“FreqT”的值作为周期性任务的终止的值(FINI)。
通过示例方式,给出集中于第三周期性任务中的执行路径<s0、s3、s3、s4、s2、s5>的描述。
“Visit”的<s0,1>→1,<s2,1>→1,<s3,1>→1,<s3,2>→1,<s4,1>→1和<s5,1>→1说明状态<s0,1>、<s2,1>、<s3,1>、<s3,2>、<s4,1>和<s5,1>在第三周期性任务中被访问过,而<s1,1>→0说明<s1,1>没有被访问过。
“CyclS”的<s2,1>→400K、<s3,1>→100K、<s3,2>→200K、<s4,1>→300K和<s5,1>→500K说明,假定访问<s0,1>的时候循环计数是0K,访问所述每一个状态的时候循环计数(计算量)分别是400K、100K、200K、300K和500K循环。“K”是“kilocycle(千周)”的简写。
“FreqS”的<s0,1>→3,<s1,1>→1、<s2,1>→3,<s3,1>→2,<s3,2>→1,<s4,1>→2和<s5,1>→3说明当第三周期性任务结束时这些状态已总共分别被访问三次、一次、三次、两次、一次、两次和三次。
“CyclT”的(<s0,1>,<s4,1>)→500K、(<s0,1>,<s5,1>)→1200K、(<s1,1>,<s5,1>)→200K,...,说明当第三周期性任务结束的时刻在这些状态间转换的总循环计数(计算量)分别是500K、1200K、200K,...。
“FreqT”的(<s0,1>,<s4,1>)→2、(<s0,1>,<s5,1>)→3、(<s1,1>,<s5,1>)→1,...,说明当第三周期性任务结束的时刻在这些状态间转换的总数量分别是2、3、1,...,。
图10示出从对应于图9的表中的三个周期性任务的信息生成的状态转换表的例子。
在该状态转换表中,列项目“从(from)”表示除了周期性任务终止外的状态,行项目“到(to)”表示指定最终期限的最终期限状态。如以上提及的,状态转换表包含从每一个状态到达最终期限状态的概率和从每一个状态到达最终期限状态的预测计算量(此处是平均值)。
例如,注意在“从”是<s0,1>和“到”是<s4,1>的单元中,如从图9的表中看出的,由于总共有两次从<s0,1>到<s4,1>的转换,并且周期性任务总共被执行了三次,<s0,1>到<s4,1>的转换发生的概率是2/3=67%(分数被上舍入)。从图9的表看出,由于对从<s0,1>到<s4,1>的转换要求的总循环计数是500K(第二次200K,第三次300K),并且总共有两次转换,对从<s0,1>到<s4,1>的转换要求的平均循环计数是500/2=250K。
<控制阶段的细节>
执行应用程序13的周期性任务,使得程序状态观察单元21观察应用程序13的状态,并且操作速度控制单元23通过使用观察的状态和在学习阶段生成的状态转换表(计算量预测数据)决定每次有状态转换(即,每次发生系统调用)时对下一状态的操作速度。通过这种方式,执行周期性任务期间微处理器(CPU)11的操作速度被连续控制。
下面按照事件的顺序描述对微处理器11的操作速度的控制。
操作速度控制的过程使用自周期性任务开始(INIT)起经过的时间。下面示出获得流逝时间的示例性过程。在该过程中,“present time()(当前时间())”是指系统的实际时钟。周期性任务开始(INIT)的时间被记录在变量“t0”中,并且系统调用时经过的时间被从当前时间与开始时间之间的差计算得出。
功能:计算经过的时间
变量:开始时间t0:Uint
输入:无
输出:经过的时间
void etime_start()
return
Uint etime_init()
t0←present time()
return()
Uint etime_call()
return present time()-t0
Uint etime_fini()
return present time()-t0
void etime_stop()
return
在操作速度控制的过程中,如随后讨论的,每次有系统调用时确定操作速度。对于操作速度的确定,下面示出从许多速度中选择操作速度的具体过程。
功能:选择操作速度
变量:
Num D::Map of D to N
FinD::Map ofD to N
输入:
当前状态“s”
当前时间“t”
常量:
到达概率,Prob∷Map of(S,D)to[0,1]
循环计数,Cycl∷Map of(S,D)to R
速度集合,Freq∷Map ofN to N
输出:
操作速度“f”
Const fmax=Freq(1)
Const fmin=Freq(N)
void speed_start()
for each d∈D do
Num D(d)←100
FinD(d)←100
od
void speed_init()
for each d∈D do
Time(d)←T(d)*(FinD(d)/Num D(d))
od
Freq speed_call(Label s,Time t)
f0←0
for each d∈D do
if Prob(s,d)>p0then
f←Cycl(s,d)/min(1,Time(d)-t)
if f>f0then
f0←f
fi
fi
od
iff>=fmax then
return fmax
fi
for i=1to N do
if Freq(i)>=f0then
fi
od
void speed_time(Label s,Time t)
if s∈D then
Num D(s)←Num D(s)+1
ift<=T(s)then
FinD(s)←FinD(s)+1
fi
fi
void speed_fini()
return
以上示出的操作速度选择过程假定微处理器(CPU)11的操作速度在从最小速度“Freq(1)”到最大速度“Freq(N)”的N步骤中可以改变,并且映射“Freq”当i<j时满足Freq(i)<Freq(j)。
如在系统调用的时候实施的过程(speed_call)中描述的,当给定当前状态“s∈S”和时间“t”时,选择到达概率“Prob(s,d)”大于门限值“p0”的具有最终期限“d∈D”的状态,之后从计算量(循环计数)“Cycl(s,d)”和剩余时间“T(d)-t”计算要求的速度“f0”,并且选择在最终期限内要完成处理的最小速度“f”。
变量“NumD”和“FinD”维护到最终期限“d”的到达频率“NumD(d)”和及时完成频率“FinD(d)”。值“FinD(d)/NumD(d)”表示最终期限的完成率。
当最终期限的完成率小于1时,提供控制以便降低在选择操作速度中使用的有效最终期限“Time(d)”。也就是,最终期限“T(d)”和完成率“FinD(d)/NumD(d)”的乘积被设置为有效最终期限“Time(d)”(见以上的选择过程中的Time(d)←T(d)×(FinD(d)/Num D(d)),由此增加完成率。换言之,完成率越低,估算越短的有效剩余时间(Time(d)-t),由此计算更高的操作速度(见以上的选择过程中的f←Cycl(s,d)/min(1,Time(d)-t))。
基于以上描述的经过时间确定和操作速度选择的过程,下面示出操作速度控制的示例性过程。
功能:控制操作速度
变量:
输入:
当前状态“s”
当前时刻“t”
到达概率“Prob”
循环计数“Cycl”
输出:
处理速度f:DOM(Freq)
void ctrl_start()
Prob←Probability of reach
Cycl←Cycle count
label_start()
etime_start()
speed_start()
void ctrl_init()
speed_init()
s←label_init()
t←etime_init()
f←speed_init(s,t)
void ctrl_call()
s←label_call()
t←etime_call()
f←sp eed_call(s,t)
void ctrl_time()
s←label_call()
t←etime_call()
speed_time(s,t)
f←speed_call(s,t)
void ctrl_fini()
s←label_fini()
t←etime_fini()
speed_time(s,t)
speed_fini()
f←fmin
void ctrl_stop()
return
下面将说明以上示出的对微处理器(CPU)操作速度控制的具体例子。
对于应用程序13的状态转换表,使用图11中所示出的。
同样假定微处理器(CPU)的操作速度在以下三个步骤中可以改变:
f=10、20和40MHz
将示出对当周期性任务中的执行路径是s0、s1、s2、s5时以及当执行路径是s0、s3、s3、s4、s2、s5时的速度控制。
[对s0、s1、s2、s5执行路径的速度控制]
初始状态是<s0,1>,并且当前时间是0ms时,以等于或大于20%的门限值的概率到达的最终期限状态是<s5,1>(<s4,1>是10%,小于门限值)。到达状态<s5,1>的平均计算量(平均循环计数)是300K(千周)。因此,对在20ms的最终期限内完成300K要求的操作速度的计算给出15MHz或更高,如以下公式中所示。在可被CPU采用的操作速度10、20和40MHz中满足该条件的最低速度是20MHz。因此,选择20MHz,并且在对应于<s0,1>的系统调用后以20MHz的速度处理应用程序。
s=<s0,1> //当前状态
t=0ms //当前状态
300K/(20-0)ms=15MHz //要求的速度
f=20MHz //操作速度
假定下一状态是<s1,1>,并且在对应于<s1,1>的系统调用的时候经过的时间是5ms。以等于或大于20%的门限值的概率到达的最终期限状态是<s5,1>。到达状态<s5,1>的平均计算量(平均循环计数)是200K(千周)。因此,对在最终期限的剩余时间15(=20-5)ms内完成200K要求的操作速度的计算给出13MHz或更高,如以下公式中所示。在可被CPU采用的操作速度10、20和40MHz中满足该条件的最低速度是20MHz。因此,选择20MHz,并且在对应于<s1,1>的系统调用后以20MHz的速度处理应用程序。
s=<s1,1>
t=5ms
200K/(20-5)ms=13
f=20MHz
假定下一状态是<s2,1>,并且在对应于<s2,1>的系统调用的时候经过的时间是10ms。以等于或大于20%的门限值的概率到达的最终期限状态是<s5,1>。到达状态<s5,1>的平均计算量(平均循环计数)是100K(千周)。因此,对在最终期限的剩余时间10(=20-10)ms内完成100K要求的操作速度的计算给出10MHz或更高,如以下公式中所示。在可被CPU采用的操作速度10、20和40MHz中满足该条件的最低速度是10MHz。因此,选择10MHz,并且在对应于<s2,1>的系统调用后以10MHz的速度处理应用程序。
s=<s2,1>
t=10ms
100K/(20-10)ms=10
f=10MHz
假定下一状态是最终期限状态<s5,1>,并且在对应于<s5,1>的系统调用的时候经过的时间是20ms。接下来执行路径已在最终期限内被完成。操作速度被保持在最后选择中所选的10MHz。
s=<s5,1>
t=20ms
completed
f=10MHz
[对s0、s3、s3、s4、s2、s5执行路径的速度控制]
将示出当周期性任务中执行路径是s0、s3、s3、s4、s2、s5时速度控制过程的示例性操作。尽管过程类似于前一种情况,应当注意状态“s3”的区别,根据它发生的数量状态,“s3”发生两次。下面示出计算操作速度和选择的操作速度的过程。下面提供简短的补充描述。
在状态<s3,1>和<s3,2>中,以等于或大于20%的门限值的概率到达的最终期限状态有两个,<s4,1>和<s5,1>。因而,对最终期限状态的每一个计算操作速度,并采用更高的操作速度。然后,从可被CPU采用的操作速度10、20和40MHz中选择满足所采用的操作速度的最低速度。例如,对于状态<s3,1>,对<s4,1>计算出是40ms,对<s5,1>计算出是27ms,因而,采用它们中较大的一个,40ms。在可被CPU采用的操作速度10、20和40MHz中满足该条件的最低速度是40MHz。相应地,选择40MHz。
s=<s0,1>
t=0ms
300K/(20-0)ms=15
f=20MHz
s=<s3,1>
t=5ms
200K/(10-5)ms=40
400K/(20-5)ms=27
f=40MHz
s=<s3,2>
t=7.5ms
100K/(10-7.5)ms=40
300K/(20-7.5)ms=24
f=40MHz
s=<s4,1>
t=10ms
200K/(20-10)ms=20
f=20MHz
s=<s2,1>
t=15ms
100K/(20-15)ms=20
f=20MHz
s=<s5,1>
t=20ms
completed
f=20MHz
此处,通过使用对能源估算的简单公式示出速度控制的效果。微处理器(CPU)的能耗是功耗和运算时间的乘积,并且以下例子假定功耗以操作速度的大约二次幂增加。由于运算时间是运算循环计数除以操作速度,在上述假定的基础上,能耗是在的操作速度和运算循环计数的乘积。这通过以下示出的公式来表示,其中“Energy(能量)”表示能耗,“Power(功率)”表示功耗,“Time(时间)”表示运算时间,“Freq”表示操作速度,“Cycle(循环)”表示运算循环计数,并且“A”是常量。在以下描述中,“A”=1。
Energy=ΣPower*Time
=ΣA*Freq2*Time
=ΣA*Freq2*(Cycle/Freq)
=ΣA*Freq*Cycle
对于以上描述的两个执行路径(s0、s1、s2、s5)和(s0、s3、s3、s4、s2、s5),对固定速度(20和40MHz)和可变速度(本发明)计算能耗,并且还确定在每种情况下到达最终期限状态“s4”和“s5”的时间。下面示出结果。然而,此处假定对状态之间的所有转换的预测循环计数是100K,如图7的状态转换图中示出的。
[执行路径:s0、s1、s2、s5]
固定速度:20MHz
Energy=20*100+20*100+20*100=6000
到达“s5”=300/20=15ms
固定速度:40MHz
Energy=40*100+40*100+40*100=12000
到达“s5”=300/40=7.5ms
可变速度(本发明)
Energy=20*100+20*100+10*100=5000
到达“s5”=20ms
[执行路径:s0、s3、s3、s4、s2、s5]
固定速度:20MHz
Energy=20*100+20*100+20*100+20*100+20*100=10000
到达“s4”=300/20=15ms
到达“s5”=500/20=25ms
固定速度:40MHz
Energy=40*100+40*100+40*100+40*100+40*100=20000
到达“s4”=300/40=7.5ms
到达“s5”=500/40=12.5ms
可变速度(本发明)
Energy=20*100+40*100+40*100+20*100+20*100=14000
到达“s4”=10ms
到达“s5”=20ms
基于这些结果,在可以满足两个执行路径中的最终期限的固定速度40MHz和本发明的可变速度之间比较能耗的预期值。如图7中,当第一执行路径(s0、s1、s2、s5)以90%的比率发生而第二执行路径(s0、s3、s3、s4、s2、s5)以10%的比率发生(即,当在<s0,1>中到状态<s1,1>的转换以90%的概率发生而到<s3,1>的转换以10%的概率发生),对本发明的可变速度解决方案的能耗的预期值是固定速度解决方案的预期值的大约60%,如通过以下公式示出的:
(5000*0.9+14000*0.1)/(12000*0.9+20000*0.1)=60%
如上所述,根据该实施例,通过使应用程序的改变最小化并根据应用程序的特征适当控制微处理器的操作速度,减少微处理器和包括微处理器的嵌入式系统的能耗是可能的。
Claims (14)
1.一种用于控制微处理器的操作速度的微处理器控制装置,所述微处理器执行包括指令代码的程序,在所述指令代码中对至少一个指令代码指定最终期限,所述微处理器控制装置包括:
状态观察单元,其被配置为在先于执行最终期限指令代码的多个预定定时观察所述程序的执行状态,所述最终期限指令代码是被指定了所述最终期限的指令代码;
数据存储单元,其被配置为存储在为多个预定义执行状态的每一个完成执行所述最终期限指令代码前要求的剩余计算量的预测数据;
预测计算量获取单元,其被配置为从所述预测数据中获取对应于观察的执行状态的剩余计算量作为剩余预测计算量;
剩余时间计算单元,其被配置为计算直至所述最终期限指令代码的所述最终期限的剩余时间;
操作速度计算单元,其被配置为计算在所述剩余时间内处理所述剩余预测计算量要求的所述微处理器的最小操作速度;以及
控制单元,其被配置为控制所述微处理器以所述最小操作速度或更高的速度操作。
2.根据权利要求1所述的装置,其中,观察所述执行状态的所述定时是系统调用发生的时间。
3.根据权利要求1所述的装置,其中,要被观察的所述执行状态是在用子程序的字节组。
4.根据权利要求3所述的装置,其中,所述在用子程序的字节组是对堆栈中存在的子程序的返回地址的字节组。
5.根据权利要求1所述的装置,其中,所述控制单元选择操作速度,所述操作速度是提前给定的多个不同操作速度中的最小速度或更高的速度,并且控制所述微处理器以选择的操作速度操作。
6.根据权利要求5所述的装置,其中,所述控制单元选择等于或高于所述最小速度的最低操作速度。
7.根据权利要求1所述的装置,其中,
所述指令代码包括两个或多个最终期限指令代码;
所述操作速度计算单元对所述最终期限指令代码的每一个计算最小操作速度;以及
所述控制单元控制所述微处理器以针对所述最终期限指令代码计算出的最小操作速度中最高的操作速度或更高的速度操作。
8.根据权利要求7所述的装置,其中,
所述指令代码包括分支指令代码;
所述预测数据包含对所述预定义执行状态的每一个执行所述最终期限指令代码的每一个的执行概率;以及
所述控制单元控制所述微处理器以针对具有等于或高于门限值的执行概率的最终期限指令代码计算出的最小操作速度中的最高速度操作或以更高的速度操作。
9.根据权利要求1所述的装置,进一步包括:
第二状态观察单元,其被配置为在所述指令代码被重复执行的每次重复的所述预定定时观察所述程序的所述执行状态;
计算量测量单元,其被配置为测量在观察所述执行状态后直至执行所述最终期限指令代码完成为止已被要求的计算量;以及
预测数据生成器,其被配置为基于在所述预定定时多次测量的计算量,发现在所述预定定时的每一个处观察后直至所述最终期限指令代码完成为止将要求的预测的计算量,并且将针对所述预定定时的每一个发现的所述预测的计算量映射到在所述预定定时的每一个处观察的执行状态,由此创建所述预测数据。
10.根据权利要求9所述的装置,其中,所述预测数据生成器将为所述预定定时的每一个多次测量的所述计算量进行平均,以获得对应于在所述预定定时的每一个处观察的执行状态的所述预测的计算量。
11.根据权利要求10所述的装置,其中,
所述指令代码包括两个或多个最终期限指令代码;
所述指令代码包括分支指令代码;
所述预测数据生成器基于在所述预定定时的每一个处观察所述执行状态后是否已执行所述最终期限指令代码的每一个,为所述预定定时的每一个,计算所述最终期限指令代码的每一个被执行的执行概率,并且将对所述预定定时的每一个计算的所述最终期限指令代码的所述执行概率映射到在所述预测数据中的所述预定定时的每一个处观察的执行状态;以及
所述控制单元控制所述微处理器以对具有等于或高于门限值的所述执行概率的最终期限指令代码计算出的最小操作速度中的最高速度或更高的速度操作。
12.根据权利要求1所述的装置,进一步包括完成率计算单元,其中,
所述指令代码被重复执行多次,
完成率计算单元,其被配置为计算在所述最终期限内完成执行所述最终期限指令代码的完成率,以及
所述完成率越低,所述控制单元控制所述微处理器以越高的操作速度操作。
13.一种控制微处理器的操作速度的微处理器控制方法,所述微处理器执行包括指令代码的程序,在所述指令代码中对至少一个指令代码指定最终期限,所述微处理器控制方法包括:
在先于执行最终期限指令代码的多个预定定时观察所述程序的执行状态,所述最终期限指令代码是被指定了所述最终期限的指令代码;
在存储器中存储在为多个预定义执行状态的每一个完成执行所述最终期限指令代码前要求的剩余计算量的预测数据;
从所述存储器中的所述预测数据中获取对应于观察的执行状态的剩余计算量作为剩余预测计算量;
计算直至所述最终期限指令代码的所述最终期限的剩余时间;
计算在所述剩余时间内处理所述剩余预测计算量要求的所述微处理器的最小操作速度;以及
控制所述微处理器以所述最小操作速度或更高的速度操作。
14.一种存储计算机程序的计算机程序存储介质,所述计算机程序用于促使控制执行包括指令代码的程序的微处理器的操作速度的计算机执行指令以实施以下步骤,在所述指令代码中为至少一个指令代码指定最终期限,所述步骤包括:
在先于执行最终期限指令代码的多个预定定时观察所述程序的执行状态,所述最终期限指令代码是被指定了所述最终期限的指令代码;
在存储器中,访问在为多个预定义执行状态的每一个完成执行所述最终期限指令代码前要求的剩余计算量的预测数据;
从所述存储器中的所述预测数据中获取对应于观察的执行状态的剩余计算量作为剩余预测计算量;
计算直至所述最终期限指令代码的所述最终期限的剩余时间;
计算在所述剩余时间内处理所述剩余预测计算量要求的所述微处理器的最小操作速度;以及
控制所述微处理器以所述最小操作速度或更高的速度操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP237818/2007 | 2007-09-13 | ||
JP2007237818A JP4836903B2 (ja) | 2007-09-13 | 2007-09-13 | マイクロプロセッサ制御装置並びにその方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101387950A true CN101387950A (zh) | 2009-03-18 |
Family
ID=40455839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008102135794A Pending CN101387950A (zh) | 2007-09-13 | 2008-09-16 | 微处理器控制装置以及用于该装置的方法和程序 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8103857B2 (zh) |
JP (1) | JP4836903B2 (zh) |
CN (1) | CN101387950A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134441A (zh) * | 2019-05-23 | 2019-08-16 | 苏州浪潮智能科技有限公司 | Risc-v分支预测方法、装置、电子设备及存储介质 |
CN117348557A (zh) * | 2023-10-30 | 2024-01-05 | 山东鲁抗机电工程有限公司 | 一种自动化控制系统及控制方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089555A1 (en) * | 2007-09-28 | 2009-04-02 | James Adam Cataldo | Methods and apparatus for executing or converting real-time instructions |
WO2010028028A1 (en) | 2008-09-08 | 2010-03-11 | Virginia Tech Intellectual Properties | Systems, devices, and methods for managing energy usage |
FR2943806A1 (fr) * | 2009-03-31 | 2010-10-01 | Inst Nat Rech Inf Automat | Dispositif de commande d'alimentation d'un calculateur |
CN101893927B (zh) * | 2009-05-22 | 2012-12-19 | 中兴通讯股份有限公司 | 手持设备功耗管理方法 |
JP2010277350A (ja) * | 2009-05-28 | 2010-12-09 | Toshiba Corp | 電子機器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450575A (en) * | 1991-03-07 | 1995-09-12 | Digital Equipment Corporation | Use of stack depth to identify machine code mistakes |
IL132916A (en) * | 1999-11-14 | 2004-02-08 | Mcafee Inc | Method and system for intercepting an application program interface |
US6687838B2 (en) * | 2000-12-07 | 2004-02-03 | Intel Corporation | Low-power processor hint, such as from a PAUSE instruction |
JP2003006046A (ja) | 2001-06-25 | 2003-01-10 | Sanyo Electric Co Ltd | メモリプロテクション方法および回路 |
US7185215B2 (en) * | 2003-02-24 | 2007-02-27 | International Business Machines Corporation | Machine code builder derived power consumption reduction |
DE602004025913D1 (de) * | 2003-03-27 | 2010-04-22 | Nxp Bv | Aufzeichnen von aktivität nach sprüngen |
US7444501B2 (en) * | 2006-11-28 | 2008-10-28 | Qualcomm Incorporated | Methods and apparatus for recognizing a subroutine call |
-
2007
- 2007-09-13 JP JP2007237818A patent/JP4836903B2/ja not_active Expired - Fee Related
-
2008
- 2008-09-08 US US12/206,108 patent/US8103857B2/en not_active Expired - Fee Related
- 2008-09-16 CN CNA2008102135794A patent/CN101387950A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134441A (zh) * | 2019-05-23 | 2019-08-16 | 苏州浪潮智能科技有限公司 | Risc-v分支预测方法、装置、电子设备及存储介质 |
CN117348557A (zh) * | 2023-10-30 | 2024-01-05 | 山东鲁抗机电工程有限公司 | 一种自动化控制系统及控制方法 |
CN117348557B (zh) * | 2023-10-30 | 2024-03-26 | 山东鲁抗机电工程有限公司 | 一种自动化控制系统及控制方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2009070137A (ja) | 2009-04-02 |
US20090077358A1 (en) | 2009-03-19 |
JP4836903B2 (ja) | 2011-12-14 |
US8103857B2 (en) | 2012-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101387950A (zh) | 微处理器控制装置以及用于该装置的方法和程序 | |
EP3474141B1 (en) | Compiler method | |
Chattopadhyay et al. | Modeling shared cache and bus in multi-cores for timing analysis | |
CN101334766B (zh) | 一种并行微处理器及其实现方法 | |
US20110067015A1 (en) | Program parallelization apparatus, program parallelization method, and program parallelization program | |
EP3474152A1 (en) | Instruction set | |
Lin et al. | Energy-efficient task scheduling for multi-core platforms with per-core DVFS | |
CN101464965B (zh) | 一种基于tbb的多核并行蚁群设计方法 | |
Lee et al. | A systematic design space exploration of MPSoC based on synchronous data flow specification | |
Golle et al. | Car sequencing versus mixed-model sequencing: A computational study | |
Eckstein et al. | Pebbl: an object-oriented framework for scalable parallel branch and bound | |
Hao et al. | An adaptive algorithm for scheduling parallel jobs in meteorological Cloud | |
von der Brüggen et al. | Hybrid self-suspension models in real-time embedded systems | |
Hofmeyr et al. | Juggle: proactive load balancing on multicore computers | |
Nguyen et al. | Cache-conscious offline real-time task scheduling for multi-core processors | |
Tarafdar et al. | Energy-efficient scheduling of deadline-sensitive and budget-constrained workflows in the cloud | |
Davidović et al. | Parallel local search to schedule communicating tasks on identical processors | |
Chien et al. | Dynamic load balancing on a network of workstations for solving computational fluid dynamics problems | |
Funabiki et al. | A user-PC computing system as ultralow-cost computation platform for small groups | |
Zhao et al. | A sealed bid auction-based two-stage approach for a decentralized multiproject scheduling problem with resource transfers | |
Krawczyk et al. | Automated distribution of software to multi-core hardware in model based embedded systems development | |
Krawczyk et al. | Model-based timing analysis and deployment optimization for heterogeneous multi-core systems using eclipse APP4MC | |
López-Albelda et al. | FlexSched: Efficient scheduling techniques for concurrent kernel execution on GPUs | |
CN113360259B (zh) | 一种应用于面向云端深度学习推理的分布式fpga多任务调度算法 | |
Abdelrazek et al. | A novel architecture using NVIDIA CUDA to speed up simulation of multi-path fast fading channels |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090318 |