一种精确分析任务wcet的自动化方法

文档序号:6625719阅读:388来源:国知局
一种精确分析任务wcet的自动化方法
【专利摘要】一种精确分析任务WCET的自动化方法,包括以下步骤:一、产生程序的无循环控制流图NLCFG;二、利用NLCFG确定依赖输入变量及其对应节点;三、确定依赖循环变量、依赖非输入分支变量及它们所对应的非依赖输入节点;四、删除非依赖输入节点产生ICFG;五、产生ICFG的所有路径;六、针对每条路径产生其输入条件以及该路径对应的WCET。利用每条路径的条件和其对应的WCET能够精确估算任务的WCET。
【专利说明】-种精确分析任务WCET的自动化方法

【技术领域】
[0001] 本发明涉及一种精确估算实时系统任务最差情况执行时间(WCET :W〇rst-CaSeExecution Time)的自动化方法,属于实时嵌入式系统领域。

【背景技术】
[0002] 与通用计算机系统不同,实时系统的结果只有在规定的时间范围内完成时才是有 效的,如果没有在规定的时间范围内完成时,轻则降低系统的性能,重则引起灾难性的后 果,比如飞机投弹、核泄漏。因此,对于实时系统,事先获取系统中每个任务的WCET和最好 情况的执行时间(BCET :Best-Case Execution Time)有着特别重要的意义。鉴于BECT分 析与WCET分析技术相同,人们只涉及WCET分析。事实上,WCET分析是实时系统任务调度 及可调度性检测的前提,也是系统性能瓶颈分析的基础。
[0003] WCET分析通常包括三个组成部分:①程序流事实分析;②执行时间模型的建立; ③基于前两项信息的WCET计算。流事实信息就是程序的执行流信息,比如循环的最大迭代 次数、不可行路径(infeasible path)等,其中不可行路径是指对任意输入数据都不可能执 行的程序路径。
[0004] 要获取程序的WCET,还需要对程序的目标代码进行分析以获得实际的时间,即建 立执行时间模型。举例来说,对于不带cache、没有流水线的传统CISC指令,其指令的执行 时间是固定的,其执行时间模型就是:一个代码段的执行时间就是其所对应的每条指令执 行时间的累加。
[0005] 计算是在给定程序流事实和执行时间模型的情况下,为程序计算WCET估值。比如 对于常见的基于树的(tree-based)计算方法,使用为每种类型的复合程序语句定义的规则 确定语句的WCET,然后通过自底向上遍历程序的语法分析树产生整个程序的WCET估值。具 体来说,对于复合语句S1; S2, WCET (S1; S2) =WCET (S1) +WCET (S2);对于条件语句if (E) then S1 else S2,WCET (if (E) then S1 else S2) = WCET (E)+max (WCET (S1), WCET (S2)) ;对于循环语句while (E) do S,WCET(while (E) do S) = (n+1)* WCET(E)+n* WCET (S), 这里n为循环迭代次数。
[0006] 有很多实时程序,其执行轨迹由程序的输入变量值或者范围确定的,在该条件下 程序按照此轨迹执行。举例来说,如图6所示的C程序: 假定exponent的范围为[-10, 10],则依据基于树的方法和相应的指令代码,其WCET 为: Wpow=I 11+max (301, 283) +270+117+10* (117+317)+111+max (560, 0) +244=6054 其中,假定第:Te行程序对应的if语句的条件部分代码指令执行时间为111,两个分支 的执行时间分别为301和283,第7行程序对应的赋值语句的代码指令执行时间为270,第 8、行程序对应的for语句的条件部分代码指令执行时间为117,第9行程序对应的赋值语 句的代码指令执行时间为317,第KTll行程序对应的if?语句的条件部分代码指令执行时 间为111,第11行程序对应的赋值语句的代码指令执行时间为560,第12行程序对应的赋 值语句的代码指令执行时间为244。
[0007] 假定有如图7所示代码: 则其中 Pow 部分的 WCET 为:10*6054=60540。


【发明内容】

[0008] 本发明提出了一种精确分析任务WCET的自动化方法,利用该方法能够精确估算 任务的WCET。
[0009] 为实现上述技术目的,所采用的技术方案是:一块'痛槪分玢佐务mu你认方 法,包括以下步骤, 步骤一、产生程序的无循环控制流图NLCFG,建立起NLCFG节点与源程序语句的对应关 系,同时循环体节点也得到标识; 步骤二、利用步骤一中的NLCFG,从入口节点开始,依照深度优先策略,确定每一个变量 是否是依赖输入变量及其对应的依赖输入节点; 步骤三、确定步骤二中依赖输入变量中的依赖循环变量、依赖非输入分支变量,确定依 赖循环变量、依赖非输入分支变量对应的非依赖输入节点; 步骤四、从步骤二中删除非依赖输入节点,产生输入变量相关的无循环控制流图 ICFG ; 步骤五、依照深度优化策略产生ICFG的所有路径; 步骤六、针对步骤五的每条路径产生其输入条件; 步骤七、产生步骤六中每条路径对应的WCET。利用每条路径的WCET,即可精确计算整 个程序的WCET。
[0010] 本发明所述的深度优化策略是指,在处理一个节点后,把该节点的所有后续节点 进行依次排队处理;排队之后,对队列中的第一个节点仍然按照同样方法处理,这样只有在 第一个节点及其后续节点处理完毕或者无法处理之后,才开始处理第二个节点。当一个节 点有一个前任节点的执行后状态是不确定的,也就是说是没有定义的时,该节点是无法处 理的。对无法处理的节点,将此节点重新排在队列末尾。
[0011] 本发明所述的依赖输入变量的确定方法为,为每个节点设置节点执行前与执行后 两个状态,节点的状态定义了在该位置每个变量是否是依赖输入变量,节点后的状态是由 该节点执行后对节点前状态改变后的状态,节点前状态由所有流向该节点的节点后状态确 定,在确定节点前状态时,对于所有流向该节点的节点,如果在这些节点的节点后状态中, 一个变量是依赖输入变量,则该变量的状态是依赖输入变量的。
[0012] 本发明所述的依赖输入变量为,由输入变量定义的变量是依赖输入变量,由输入 变量和依赖输入变量定义的变量也是依赖输入变量。
[0013] 本发明所述的依赖循环变量和依赖非输入分支变量统称为非依赖输入变量,非依 赖输入变量对应的节点为非依赖输入节点。
[0014] 本发明所述的步骤四中删除非依赖输入节点的方法为,删除的方法仍然按照节点 的基本结构进行删除,如果一个分支节点或者汇合节点不包括任何节点,可以使用空节点 表不。
[0015] 本发明所述的空节点就是不执行任何操作的节点,空节点对应的语句为空语句。
[0016] 本发明所述的针对ICFG的每一条路径,在这个路径上只有两类节点,一类是对应 于赋值语句的节点,另一类是对应于条件语句的分支节点。对于分支节点,如果其分支谓词 表达式是输入变量的线性表示,则可以构造出该分支谓词针对输入变量的线性表达式。
[0017] 本发明所述的ICFG路径,该路径上每个分支节点分支取向已经确定,根据路径上 的所有分支节点构造输入变量的约束,如果定义目标函数为所有输入变量累加的最小化, 则构成典型的线性规划求解问题。
[0018] 本发明所述的线性规划求解利用线性规划解析器,即可确定该ICFG路径的输入 条件,此条件即为该情况的输入条件,如果线性规划解析器求得该目标函数无解,则说明该 路径为不可行路径,则应排除该路径。
[0019] 本发明有益效果是:该方法能够明显提高具有不同情况执行路径程序的WCET估 算精度。

【专利附图】

【附图说明】
[0020] 图1是本发明的执行步骤流程图; 图2是本发明的程序基本语句与程序控制流程图基本结构的对应关系图; 图3是本发明的确定依赖输入的核心算法流程图; 图4是本发明的图6程序的NLCFG ; 图5是本发明的实例程序GetMode及其NLCFG ; 图6为本发明的例程Pow程序; 图7为本发明的例程Pow调用程序。

【具体实施方式】
[0021] 下面结合附图对本发明进行进一步的详细说明。通过足够详细的描述这些实施示 例,使得本领域技术人员能够实践本发明。
[0022] -种自动产生任务的分情况WCET表达式的方法,利用该表达式能够精确估算任 务的WCET。
[0023] 本发明提出的自动化精确产生程序WCET的方法包括6个步骤,具体步骤如下: 步骤1 :产生程序的无循环控制流图NLCFG 程序控制流图(CFG,Control Flow Graph),是对程序的图形化表示,它既表示了程序 的控制结构信息,也表示了程序语句执行的流向。一个结构化程序由三种基本语句构成: 复合语句、条件语句和循环语句。控制流程图由节点和有向边组成。与基本语句相对应,一 个程序的控制流程图也由三种基本结构组成:顺序、分支、循环。控制流图节点分为赋值节 点、分支点和汇聚点,赋值节点对应程序的赋值语句,分支节点对应条件语句或循环语句中 的条件判断,此条件也称为分支谓词。控制流图的边表示程序的执行流向,分支节点的边称 作分支,对应于程序中一段要顺序执行的语句序列。
[0024] 无循环控制流图(NLCFG,No Loop Control Flow Graph)是一种特殊的控制流图, 其与CFG的区别在于其循环语句产生的CFG节点只包括循环体节点而不包括分支谓词节点 及相应的回边。只所以产生NLCFG是因为本发明还没有为经过循环迭代的依赖输入情况提 供解决方案,而循环的回边使后续的分析变得复杂。
[0025] 通过分析源程序,按照程序的三种基本语句进行分析,能够产生程序的NLCFG。程 序NLCFG的节点可以使用数字进行标识,边可以用二元组(m,n)表示,其表示从节点m到节 点n的有向边。
[0026] 建立NLCFG之后,也建立起NLCFG节点与源程序语句的对应关系,同时循环体节点 也得到标识。
[0027] 步骤2 :利用NLCFG确定依赖输入变量及其对应节点 针对NLCFG,从入口节点开始,依照深度优先策略,确定每一个变量是否是依赖输入变 量。由输入变量定义的变量是依赖输入变量,由输入变量和依赖输入变量定义的变量也是 依赖输入变量。
[0028] 为了确定依赖输入变量及其对应的NLCFG节点,为每个节点设置节点执行前与执 行后两个状态。节点的状态定义了在该位置每个变量是否是依赖输入变量。节点后的状态 是由该节点执行后对节点前状态改变后的状态,而节点前状态则由所有流向该节点的节点 后状态确定。在确定节点前状态时,对于所有流向该节点的节点,如果在这些节点的节点后 状态中,一个变量是依赖输入变量,那么可以确定,该变量的状态是依赖输入变量。
[0029] 所谓深度优先策略是指,在处理一个节点后,把该节点的所有后续节点的排队依 次处理。排队之后,对队列中的第一个节点仍然按照同样方法处理,这样只有在第一个节点 及其后续节点处理完毕或者无法处理之后,才开始处理第二个节点。一个节点是无法处理 的,如果该节点有一个前任节点的执行后状态是不确定的,也就是说是没有定义的。对于无 法处理的节点,将该节点重新排在队列末尾。
[0030] -个节点m的前任节点是指该节点有一条边指向节点m。同理,一个节点m的后续 节点是指节点m有一条边指向该节点。
[0031] 对于结构化程序,由于NLCFG没有循环结构,所以NLCFG有向图是单向的。因此, NLCFG中的节点是有序的。也因此,本发明所述的处理策略能够保证快速确定每个节点的状 态。
[0032] 所有引用依赖输入变量的节点为依赖输入节点。
[0033] 步骤3 :确定依赖循环变量、依赖非输入分支变量及其节点 在循环体中定义的变量为依赖循环变量,一个变量如果在定义中引用了依赖循环变 量,则该变量同样为依赖循环变量。同样,在非依赖输入分支谓词的分支中定义的变量为依 赖非输入分支变量,一个变量如果在定义中引用了依赖非输入分支变量,则该变量同样为 依赖非输入分支变量。这两类变量统称为非依赖输入变量N0INPUT。
[0034] 针对一个循环体节点或者非依赖输入分支节点,通过确定一个变量在节点后状态 为N0INPUT,从该节点开始,通过向后传递,可以确定所有的N0INPUT。
[0035] 步骤4 :删除非依赖输入节点产生ICFG 针对NLCFG,删除图中非依赖输入节点。删除的方法仍然按照节点的基本结构进行删 除,所不同的是,如果一个分支节点或者汇合节点不包括任何节点,可以使用空节点表示。 所谓空节点就是不执行任何操作的节点。空节点对应的语句为空语句。
[0036] 最终形成的NLCFG为输入变量相关的,标记为ICFG。
[0037] 步骤5 :产生ICFG的所有路径 对于ICFG,可产生其所有路径。由于ICFG是单向图,可按照深度优先策略产生所有路 径。
[0038] 步骤6 :针对每条路径产生其输入条件 针对ICFG的每一条路径,在这个路径上只有两类节点,一类是对应于赋值语句的节 点,另一类是对应于条件语句的分支节点。对于分支节点,如果其分支谓词表达式是输入 变量的线性表示,则可以构造出该分支谓词针对输入变量的线性表达式。假定输入表示为 X=〈Xl,x2,...,Xm >,m是输入变量的个数,假定一个分支节点的谓词可以表示为X的线性 函数F (X)= (I1 X1+. ..+ dm xm+ c,由于任意给定一个输入,沿着该路径能够计算该谓词的 值,因此能够计算出谓词线性表达式的各参数Clj :

【权利要求】
1. 一种精确分析任务WCET的自动化方法,其特征在于:包括以下步骤, 步骤一、产生程序的无循环控制流图NLCFG,建立起NLCFG节点与源程序语句的对应关 系,同时循环体节点也得到标识; 步骤二、利用步骤一中的NLCFG,从入口节点开始,依照深度优先策略,确定每一个变量 是否是依赖输入变量及其对应的依赖输入节点; 步骤三、确定步骤二中依赖输入变量中的依赖循环变量、依赖非输入分支变量,确定依 赖循环变量、依赖非输入分支变量对应的非依赖输入节点; 步骤四、从步骤二中删除非依赖输入节点,产生输入变量相关的无循环控制流图 ICFG ; 步骤五、依照深度优化策略产生ICFG的所有路径; 步骤六、针对步骤五的每条路径产生其输入条件; 步骤七、产生步骤六中每条路径对应的WCET,利用每条路径的WCET,即可精确计算整 个程序的WCET。
2. 如权利要求1所述的一种精确分析任务WCET的自动化方法,其特征在于:所述的深 度优化策略是指,在处理一个节点后,把该节点的所有后续节点进行依次排队处理;排队之 后,对队列中的第一个节点仍然按照同样方法处理,这样只有在第一个节点及其后续节点 处理完毕或者无法处理之后,才开始处理第二个节点,当一个节点有一个前任节点的执行 后状态是不确定的,也就是说是没有定义的时,该节点是无法处理的,对无法处理的节点, 将此节点重新排在队列末尾。
3. 如权利要求1所述的一种精确分析任务WCET的自动化方法,其特征在于:所述的依 赖输入变量的确定方法为,为每个节点设置节点执行前与执行后两个状态,节点的状态定 义了在该位置每个变量是否是依赖输入变量,节点后的状态是由该节点执行后对节点前状 态改变后的状态,节点前状态由所有流向该节点的节点后状态确定,在确定节点前状态时, 对于所有流向该节点的节点,如果在这些节点的节点后状态中,一个变量是依赖输入变量, 则该变量的状态是依赖输入变量的。
4. 如权利要求3所述的一种精确分析任务WCET的自动化方法,其特征在于:所述的 依赖输入变量为,由输入变量定义的变量是依赖输入变量,由输入变量和依赖输入变量定 义的变量也是依赖输入变量。
5. 如权利要求1所述的一种精确分析任务WCET的自动化方法,其特征在于:所述的 依赖循环变量和依赖非输入分支变量统称为非依赖输入变量,非依赖输入变量对应的节点 为非依赖输入节点。
6. 如权利要求1所述的一种精确分析任务WCET的自动化方法,其特征在于:所述的 步骤四中删除非依赖输入节点的方法为,删除的方法仍然按照节点的基本结构进行删除, 如果一个分支节点或者汇合节点不包括任何节点,可以使用空节点表示。
7. 如权利要求6所述的一种精确分析任务WCET的自动化方法,其特征在于:所述的 空节点就是不执行任何操作的节点,空节点对应的语句为空语句。
8. 如权利要求1所述的一种精确分析任务WCET的自动化方法,其特征在于:所述的 针对ICFG的每一条路径,在这个路径上只有两类节点,一类是对应于赋值语句的节点,另 一类是对应于条件语句的分支节点,对于分支节点,如果其分支谓词表达式是输入变量的 线性表示,则可以构造出该分支谓词针对输入变量的线性表达式。
9. 如权利要求8所述的一种精确分析任务WCET的自动化方法,其特征在于:所述的 ICFG路径,该路径上每个分支节点分支取向已经确定,根据路径上的所有分支节点构造输 入变量的约束,如果定义目标函数为所有输入变量累加的最小化,则构成典型的线性规划 求解问题。
10. 如权利要求9所述的一种精确分析任务WCET的自动化方法,其特征在于:所述的 线性规划求解利用线性规划解析器,即可确定该ICFG路径的输入条件,此条件即为该情况 的输入条件,如果线性规划解析器求得该目标函数无解,则说明该路径为不可行路径,则应 排除该路径。
【文档编号】G06F9/44GK104391684SQ201410443638
【公开日】2015年3月4日 申请日期:2014年9月3日 优先权日:2014年9月3日
【发明者】姬孟洛, 高翔, 侯小静, 刘庆伟, 于素萍 申请人:洛阳理工学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1