一种优化实时任务wcet的指令预取内容选取方法

文档序号:6401547阅读:172来源:国知局
专利名称:一种优化实时任务wcet的指令预取内容选取方法
技术领域
本发明涉及一种指令预取内容的选取方法,尤其是一种面向实时系统中实时应用的、优化最坏执行时间(WCET:fforst-Case Execution Time)分析精度的指令预取内容的选取方法,属于计算机系统结构与实时嵌入式系统领域。
背景技术
与通用计算机系统主要关注平均执行情况下的性能不同,实时系统更为关注最坏执行情况下的系统性能及任务执行时间。错过任务的执行期限,通常会导致实时系统,特别是硬实时系统故障,引起不良后果甚至灾难性事故,比如:撞车事故、核泄漏等。准确地预测系统在最坏执行情况下的执行时间对于实时系统的分析及设计意义重大。实时系统中实时应用的最坏执行时间(WCET)分析对于实时系统的可调度分析至关重要。WCET分析的精度及难易程度很大程度上依赖于底层处理器模型的复杂性。由于高速缓存访问时间的不确定性,运行于现代处理器结构之上的实时应用的WCET分析极为困难。虽然高速缓存会带来执行时间的不确定性,但是在实时系统,特别是高性能实时系统中使用高速缓存,特别是指令高速缓存已经成为一种趋势。因此,分析指令高速缓存对于实时应用WCET分析的影响对于精确的WCET评估必不可少。指令高速缓存访问时间的不确定性源于高速缓存访问的命中与缺失导致的访问时间差异。因此,准确预测指令访问的命中与缺失情况对于精确的WCET分析至关重要。在常见的WCET分析技术中,程序基本块通常作为一个基本的时间分析单位用于实时应用WCET的评估。一个程序基本块是具有单一程序执行入口和出口的一段程序指令序列,以下简称基本块。基本块的最后一条指令通常是跳转指令。由基本块的定义可知基本块具有如下性质:1.基本块作为一个整体执行,即:一旦进入基本块,基本块内的所有指令都将被执行;2.基本块内的指令按照指令在程序代码中的静态顺序执行。由上述性质可知,基本块内的指令具有相同的执行次数,如果能够同时保证基本块内的指令具有相同的命中与缺失情况(“冷启动”除外),WCET分析中原本的指令级别的命中与缺失判断即可简化为应用内部基本块的命中与缺失情况的判断,从而大大简化程序WCET分析。指令预取作为一项常见的用于改进指令高速缓存访问性能的技术,通常服务于通用计算机系统,用以改善平均执行情况下的Cache访问命中率。当前,绝大部分的指令预取技术的提出遵从“加速常见情况”的原则,没有考虑实时系统中的实时应用的特殊需求,特别是WCET分析的需求。现有的WCET分析方法大多从应用角度入手,针对应用的特性,特别是存储访问特性设计专门的分析方法。此类方法虽然针对某一类应用可能有效,但是不具有普适性,一旦应用类型改变,方法的有效性将无法保障。因此,从系统结构本身出发,在系统结构设计之初即考虑实时应用WCET分析需求可能是改善实时应用WCET分析精度的突破口。设计服务于WCET分析的指令预取技术对于改善指令高速缓存访问的确定性,提升WCET精度具有重要的研究价值。同时,由于处理器片上硬件资源极为宝贵,因此,必须精心设计预取机制,以便对应的硬件实现代价小。

发明内容
本发明提出了一种优化实时任务WCET的指令预取内容选取方法,该方法服务于一种面向实时任务的基于程序基本块的指令预取(BBIP:Basic_Block based InstructionPrefetching)方法。本发明提出的一种优化实时任务WCET的指令预取内容选取方法,在现有指令高速缓存硬件中添加指令信息表(BBIT:Basic-Block Information Table)的硬件结构,指令信息表用于存储从静态程序基本块集合中选取的指定数量的基本块信息。BBIT中保存的程序基本块信息,主要是基本块的起始块地址以及块长度。指令预取单元根据查找BBIT返回的信息对基本块覆盖的存储块执行预取。本发明提出的优化实时任务WCET的指令预取内容选取方法,具体步骤如下:步骤一:硬件配置初始化,具体是,对影响WCET分析的微结构的参数进行设置,影响WCET分析的微结构包括高速缓存、流水线及分支预测器等;步骤二:通过编译器或者静态程序特征分析工具收集静态程序基本块集合;步骤三:从静态程序基本块集合中剔除只覆盖一个存储块的基本块;步骤四:使用WCET分析工具对任务执行WCET静态分析,收集最坏执行情况下的程序基本块的执行频度,并将每个程序基本块表示为一个三元组:(起始块地址,块长度,执行频度);步骤五:按照基本块的执行频度从高到低的顺序,对静态程序基本块集合中的基本块进行排序,得到一个有序的基本块集合;对于执行频度相同的基本块,依照块长度从大到小的顺序排列;执行频度和块长度均一致的基本块的排列顺序随机;步骤六:设BBIT中包含η个表项目数,将有序基本块集合中的前η个基本块的信息存储到BBIT中。基于本发明提供的指令预取内容选取方法,进行指令高速缓存访问的方法包括如下步骤:步骤1:程序运行初始化;具体是,设置程序运行时环境,包括寄存器初始化或恢复,程序计数器PC初始化或恢复等;步骤2:从静态程序基本块集合中选取指定数量的基本块信息填入BBIT中;步骤3 =CPU执行单元依照程序计数器PC值,计算下一条指令的有效地址,该地址作为目标地址;步骤4:将目标地址按照由高位到低位的顺序划分为三个字段:tag (标签)、set(组号)及offset (组内偏移);步骤5:目标地址匹配与基本块信息查找;根据目标地址的set及tag字段的信息,从指令高速缓存中查找目标地址对应的高速缓存块,同时查找BBIT ;若目标地址在指令高速缓存中未命中,将预取标记PF置位;若在BBIT中匹配到相应的地址,输出相应的起始块地址和块长度,否则BBIT输出不合法的起始块地址和块长度“0,O” ;
步骤6:预取单元检查预取标记PF及BBIT的输出,如果PF被置位且BBIT的输出的起始块地址以及块长度合法,则根据起始块地址以及块长度执行指令预取;否则,不执行指令预取操作。所述的步骤5包括两个并行的子步骤5.1和5.2:步骤5.1:依据目标地址的set字段定位目标地址所映射的高速缓存组,将该高速缓存组的各个高速缓存块的tag字段与目标地址的tag字段逐一进行比较,若找到匹配的结果,本次高速缓存访问命中,根据目标地址的offset字段从匹配的高速缓存块中读出相应的指令字并返回给指令执行单元;若未找到匹配的结果,本次高速缓存访问缺失,此时,高速缓存硬件单元从下一层指令存储中调入相应的指令存储块,替换掉所映射的高速缓存组中最旧的高速缓存块,并依据offset字段取出相应的指令字返回给指令执行单元,同时,高速缓存硬件单元将预取标记PF置位。步骤5.2:将目标地址的tag和set字段组成块地址(BA:block address),将块地址作为关键字在BBIT中进行检索,如果找到相应表项,输出基本块的起始地址及块长度;否则,非法的起始块地址和块长度“0,O”。相比现有技术,本发明的指令预取内容选取方法具有以下优点和积极效果:(I)有效降低硬件设计开销;由于实时应用通常具有较少的最坏情况执行“热点”,因此,通过选取少数“热点”基本块,并对应的基本块信息存储在BBIT中,即可实现较优的高速缓存访问性能及WCET分析精度,从而有效降低BBIT的大小,节省相应的硬件开销。(2)实现简单、直接;与其它复杂的预取内容选取算法(如:遗传算法)相比,本发明基于贪婪算法进行基本块预取,实现方法简单直接,选取的内容的有效性与采用其它复杂算法选取时的有效性相近。(3)大大提升WCET分析精度;本发明的指令预取内容选取方法专门针对实时任务的WCET分析,由于BBIT中保存的都是最坏执行情况下的执行“热点”基本块,因此,对这些基本块执行预取,能够有效避免最坏执行情况下的指令高速缓存访问缺失,降低WCET评估值,满足实时任务的需求。


图1是支持本发明的指令预取内容选取方法的指令高速缓存硬件结构示意图;图2是本发明的指令预取内容选取方法的执行步骤流程图;图3是基于本发明的指令预取内容选取方法的指令高速缓存访问过程的流程示意图。
具体实施例方式下面结合附图对本发明进行进一步的详细说明。通过足够详细的描述这些实施示例,使得本领域技术人员能够实践本发明。在不脱离本发明的主旨和范围的情况下,可以对实施做出逻辑的、实现的和其他的改变。本发明提供了一种优化实时任务WCET的指令预取内容选取方法,面向实时应用系统,基于程序基本块进行指令预取。本发明方法中,为了实现程序基本块级别的指令预取,在现有指令高速缓存硬件中添加一个称为指令信息表(BBIT)的硬件结构。BBIT中保存程序基本块信息,主要是基本块的起始块地址以及块长度。指令预取单元根据查找BBIT返回的信息对基本块覆盖的存储块执行预取。由于片上资源有限,将应用程序的基本块全部存入BBIT需要耗费大量的片上资源,代价昂贵。另一方面,不同实时应用程序的基本块数量差异巨大,预留过多的硬件资源用于基本块存储可能导致片上资源的极大浪费。因此,从程序静态基本块集合中选取指定数量的基本块存入BBIT对于基于基本块的指令预取机制的实现至关重要。在支持BBIP的系统中,指令高速缓存单元在进行指令块匹配查找过程的同时,查找BBIT以定位当前指令所在的程序基本块,如果找到相应的基本块信息且指令高速缓存访问缺失,则执行当前基本块的指令预取。如图1所示,支持本发明的指令预取内容选取方法的指令高速缓存硬件结构包括如下几个部分:存储高速缓存块tag (标签)的表结构1、存储高速缓存块内容的硬件结构
2、存储基本块信息的BBIT表结构3、用于tag匹配查找的比较器(Comparator)4、用于内容选取的多路选择器(MUX) 5、用于BBIT表结构基本块选择的选择器6、由多路选择器5命中与缺失结构作为输入的选通开关(用预取标志PF来标记是否选通)7以及控制基本块预取的多路开关8。其中tag表结构I用于存储高速缓存块的tag字段,服务于高速缓存访问命中与缺失情况判断;BBIT表结构3的每一项包含一个程序基本块的起始块地址(BBA)及块长度(BBS)。进入指令高速缓存的取指地址依照指令高速缓存的配置被划分为三个字段:标签(tag)、组号(set)及块内偏移(offset)。为了判断目标指令当前是否位于高速缓存中,目标地址的set字段被分别输入tag表结构I及数据存储结构2以定位目标地址所映射的高速缓存组,所定位的tag表结构中的高速缓存组的各个合法(由tag表结构中的V字段标识)高速缓存块的tag字段被输入比较器4与目标地址的tag进行匹配比较,其结果输入多路选择器5,由set字段所定位的数据存储结构2中的高速缓存组的各个数据存储块作为数据输入多路选择器5,如果比较器4输出结果解释为命中(hit),则多路选择器5以比较器4输出作为选择子从其输入的各个数据存储块中选择一块配合offset字段输出目标指令字;当比较器4输出解释为缺失(miss)时,选通开关7选通,预取标记PF作为指令预取多路开关8的一路输入;多路开关8执行逻辑与操作,即只有当开关PF选通,且选择器6输入合法的BBA及BBS时,多路开关8才选通,从而控制相应的预取单元执行指令块的预取。目标地址的tag及set字段作为多路选择器5的输入与BBIT表结构3的各表项的BBA字段分别比较,如果匹配,相应表项的BBA及BBS输入多路开关8,否则输入0,O给多路开关8。当多路开关8输出高电平(对应BBA、BBS有效,PF置位),预取单元执行预取。BBIT内容选取过程如下,在系统运行之前,使用静态程序流程分析工具(比如编译器)收集程序包含的静态基本块集合,结合底层硬件信息(主要是高速缓存配置信息)得到基本块的起始块地址以及块长度。由于BBIP仅仅对大于一个存储块的程序基本块执行预取,因此,在预取内容选取过程中,首先剔除块长度等于一个程序块的程序基本块,然后基于一定的算法从剩余集合中选取特定数量的基本块,将其起始块地址及块长度填充到BBIT中,以保证较优的预取性能。由于本发明提出的方法主要目的是通过选取较优的预取内容以服务于实时应用的WCET分析,优化指令高速缓存在最坏执行情况下的性能,因此,必须保证选取的基本块在最坏执行情况下具有较高的执行次数。本发明提出的优化实时任务WCET的指令预取内容选取方法,实现最坏执行情况下的“热点”基本块的选取;基于WCET静态分析的“热点”基本块的选择可以采用贪婪算法或者更为高级的方法,例如数据挖掘中使用的遗传算法等。在本发明中,使用基于贪婪算法的预取内容选取方法实现基本块的选取,该方法的特点是实现简单直观,性能良好。基于本发明提供的指令预取内容选取方法,还提供了支持基于程序基本块的、面向实时应用的指令高速缓存访问方法。本发明所涉及的高速缓存硬件结构BBIT存储最坏执行情况下的程序基本块信息,如图2所示,本发明提出的优化实时任务WCET的指令预取内容选取方法包括如下执行步骤:步骤一:硬件配置初始化。由于底层硬件配置直接决定了程序WCET评估值,在进行静态WCET分析前,必须对底层结构,如流水线结构、分支预测结构、高速缓存结构等,进行配置初始化。步骤二:基本块收集。通过编译器或者静态程序特征分析工具,如:静态WCET分析工具、模拟器等,收集程序的静态程序基本块集合BB_SET。步骤三:基本块剔除。由于BBIP仅能够对长度大于一个存储块的基本块执行预取,因此,在BBIT中存储长度为一个存储块的基本块不能带来任何预取收益。因此,结合指令高速缓存的配置,将仅覆盖一个存储块的基本块从程序基本块集合BB_SET中剔除。假设程序基本块包含b条指令,每条指令由k个字节构成,指令Cache的块长度为bs个字节,则基本块包含的存储块个数为:(bXk-l+bs)/bs。步骤四:基本块执行频度收集。在特定的硬件配置下,对目标任务程序执行静态WCET分析,收集程序最坏执行路径上的基本块及其执行频度。执行完此步骤,程序代码中包含的每个程序基本块被表示为一个三元组:(起始块地址,块长度,执行频度)。步骤五:基本块集合排序。为了适应贪婪算法的要求,对基本块集合进行排序操作。为了优化WCET分析精度,保证BBIT保存“最优”的基本块,根据基本块的执行频度从高到低的顺序对程序基本块集合BB_SET进行排序,形成新的有序列表BB_0SET。对于具有相同执行频度的程序基本块,按照块长度从大到小的顺序排列;执行频度和块长度均一致的基本块的排列顺序随机。步骤六:基本块选取。依据BBIT容量,从BB_0SET中选取相应数目的基本块,按照其起始块地址从小到大的顺序将其起始块地址及块长度填入BBIT中对应的表项位置。例如,BBIT包含100个表项,从BB_0SET中选取前100项,依次按序填入BBIT对应表项,对于静态程序基本块集合容量小于100的程序,BBIT剩余表项清零。基于本发明提出的优化实时任务WCET的指令预取内容选取方法,一种面向实时应用的指令高速缓存访问方法,如图3所示,包含如下步骤:步骤1:程序运行初始化。实时应用开始投入运行时,设置程序运行时环境,包括寄存器初始化或恢复,程序计数器PC初始化或恢复等。步骤2:采用本发明提供的指令预取内容选取方法,从静态程序基本块集合中选取指定数量的基本块,将选取的基本块的起始块地址和块长度填入BBIT中。根据图2所示方法,将运行的程序“热点”基本块的信息填入BBIT硬件列表结构中。BBIT列表包含依据基本块起始块地址有序的程序基本块信息。每个BBIT列表选项对应一个二元基本块信息项:(基本块起始块地址,块长度)。
步骤3:取指单元访问指令高速缓存取指。系统运行过程中,CPU执行单元依照程序计数器PC值,计算下一条指令的有效地址,执行取指操作。并将该地址作为目标地址(target address)发往指令高速缓存,读取相应地址处的指令字。步骤4:指令地址分割。为了从指令高速缓存中查找相应的指令数据块,依照指令高速缓存的配置,目标地址按照由高位到低位的顺序被划分为三个字段:tag (标签)字段、set (组号)字段及offset (组内偏移)字段。其中,tag用于高速缓存块的查找匹配,set用于定位目标地址映射到的高速缓存目标组,offset用于从选定的高速缓存块中提取目标指令字。步骤5:目标地址匹配及基本块信息查找。根据地址解析阶段的set及tag信息从指令高速缓存中查找目标地址对应的存储块,同时查找BBIT返回基本块起始地址及块长度以服务于后续可选的指令预取过程。具体而言,此步骤的执行过程分为两个并行执行的子过程:tag匹配查找子过程5.1及BBIT列表查找子过程5.2。子过程5.1:首先,依据set字段定位目标地址所映射的高速缓存组(如下称为“目标组”);然后将步骤4所得目标地址的tag字段与目标组内的各高速缓存块的tag字段进行比较,如果查找到匹配的结果,则本次高速缓存访问命中,使用步骤4的目标地址的offset字段从匹配的高速缓存块中取出相应的指令字返回给指令执行单元,本次取指过程结束。若未找到匹配的结果,本次高速缓存访问缺失,从下一层指令存储中调入相应的指令存储块,替换掉指令高速缓存中目标组内最旧的高速缓存块,同时根据比较器4输出的高低电平(访问命中、缺失与电平高低设置的关系由比较器4的具体实现决定)将预取标记PF (对应于图1中的选通开关7)置位,使用步骤4的offset字段从匹配的高速缓存块中取出相应的指令字返回给指令执行单元,本次取指过程结束。图1中,tag表结构I中每个高速缓存组仅包括一个高速缓存块。每个高速缓存块对应一个V字段和一个tag标志。子过程5.2:首先,依照指令高速缓存的硬件配置从目标地址中提取出块地址。块地址的生成方法是将目标地址的offset字段置为0,将目标地址的tag和set字段组成块地址。然后,使用块地址作为关键字对BBIT列表进行查找,如果找到相应的BBIT项,取出对应的基本块起始块地址BBS及块长度BBA并输出;否则,在BBIT中找不到相应的基本块信息,返回基本块起始地址及块长度均为非法的O并输出。同时查找“基本块信息表”,并的信息执行必要的基本块后续指令块的预取装入。步骤6:执行基本块预取。高速缓存硬件预取单元检查预取标记PF及子过程5.2查找BBIT返回的基本块信息(BBA及BBS),如果PF被置位且BBS及BBA合法(对应图1的多路开关8选通),执行相应的指令数据块预取操作,将基本块对应的后续存储块预先调入指令高速缓存,完成指令预取。预取完成后,PF复位。执行基本块的预取,避免了基本块内后续指令访问的缺失,达到优化高速缓存访问性能的目的。同时,指令访问缺失情况判断的简化使得程序WCET分析的难度下降,精度提升。如果预取单元检查到BBIT返回的基本块信息为不合法的“0,0”,则不执行预取操作,若此时PF被置位,高速缓存访问缺失,则从下一层存储中调入相应的指令存储块,替换掉指令高速缓存中目标组内最旧的高速缓存块,根据目标地址的offset从高速缓存块中取出相应的指令字返回,本次取指过程结束。
权利要求
1.一种优化实时任务WCET (最坏执行时间)的指令预取内容选取方法,在现有指令高速缓存硬件中添加指令信息表(BBIT)的硬件结构,BBIT用于存储从静态程序基本块集合中采用所述的指令预取内容选取方法选取指定数量的基本块信息,其特征在于,所述的基本块信息包括基本块的起始块地址以及块长度;所述的指令预取内容选取方法包括如下步骤: 步骤一:硬件配置初始化,对影响WCET分析的微结构的参数进行设置,影响WCET分析的微结构包括高速缓存、流水线及分支预测器; 步骤二:通过编译器或者静态程序特征分析工具收集静态程序基本块集合; 步骤三:从静态程序基本块集合中剔除只覆盖一个存储块的基本块; 步骤四:使用WCET分析工具对任务执行WCET静态分析,收集最坏执行情况下的程序基本块的执行频度,并将每个程序基本块表示为一个三元组:(起始块地址,块长度,执行频度); 步骤五:按照基本块的执行频度从高到低的顺序,对静态程序基本块集合中的基本块进行排序;对于执行频度 相同的基本块,依照块长度从大到小的顺序排列;执行频度和块长度均一致的基本块的排列顺序随机; 步骤六JiSBBIT中包含η个表项目数,将有序基本块集合中的前η个基本块的信息存储到BBIT中。
2.基于权利要求1所述的指令预取内容选取方法进行指令高速缓存访问的方法,其特征在于,包括如下步骤: 步骤1:程序运行初始化;具体是,设置程序运行时环境,包括寄存器初始化或恢复,程序计数器PC初始化或恢复; 步骤2:采用优化实时任务WCET的指令预取内容选取方法,从静态程序基本块集合中选取指定数量的基本块信息填入BBIT中; 步骤3 =CPU执行单元依照程序计数器PC值,计算下一条指令的有效地址,该地址作为目标地址; 步骤4:将目标地址按照由高位到低位的顺序划分为三个字段:tag (标签)、set (组号)及offset (组内偏移); 步骤5:根据目标地址的set及tag字段的信息,从指令高速缓存中查找目标地址对应的高速缓存块,同时也查找BBIT ;若目标地址在指令高速缓存中未命中,设置预取标记PF ;若在BBIT中匹配到相应的地址,BBIT输出相应的起始块地址和块长度,否则BBIT输出非法的起始块地址和块长度“0,O” ; 步骤6:预取单元检查预取标记PF及BBIT的输出,如果PF被设置且BBIT输出的起始块地址以及块长度合法,根据起始块地址以及块长度执行指令预取,在预取完成后,PF复位;否则,不执行指令预取操作。
3.根据权利要求2所述的进行指令高速缓存访问的方法,其特征在于,所述的步骤5,包括两个并行的子步骤5.1和5.2: 步骤5.1:依据set字段定位目标地址所映射的高速缓存组,将该高速缓存组中各高速缓存块的tag字段与目标地址的tag字段进行比较,如果找到匹配的结果,则本次高速缓存访问命中,根据目标地址的offset字段从匹配的高速缓存块中取出相应的指令字返回给指令执行单元;若未找到匹配的结果,本次高速缓存访问缺失,从下一层指令存储中调入相应的指令存储块,替换掉所映射的高速缓存组中最旧的高速缓存块,并根据目标地址的offset字段取出相应的指令字返回给指令执行单元,同时将预取标记PF置位; 步骤5.2:将目标地址的tag和set字段组成块地址,将块地址作为关键字在BBIT中进行检索,如果找到相应表项,输出基本块的起始地址及块长度;否则,输出非法的起始块地址和块长 度“0,0”。
全文摘要
本发明提出了一种优化实时任务WCET的指令预取内容选取方法,在现有指令高速缓存硬件中添加指令信息表(BBIT)的硬件结构。本发明方法首先对硬件配置进行初始化,通过编译器或者静态程序特征分析工具收集静态程序基本块集合,然后剔除只覆盖一个存储块的基本块,并收集最坏执行情况下的各程序基本块的执行频度,按照执行频度对程序基本块排序,最后按顺选取指定数量的程序基本块的信息存储到BBIT中。在指令高速缓存访问过程中,同时查找指令高速缓存和BBIT,能够有效避免最坏执行情况下的指令高速缓存访问缺失,满足实时任务的需求;同时,本发明方法能有效降低硬件设计开销,实现方法简单、直接。
文档编号G06F9/30GK103207772SQ20131011803
公开日2013年7月17日 申请日期2013年4月7日 优先权日2013年4月7日
发明者万寒, 倪璠, 龙翔, 高小鹏, 姜博 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1