1、基于 RPU 的 TTI 程序设计和分析方法高银康陈香兰龚小航蒋滨泽李曦周学海(中国科学技术大学计算机科学与技术学院合肥230027)(中国科学技术大学苏州高等研究院江苏苏州215004)()Design and Analysis Method of TTI Program Based on RPUGaoYinkang,ChenXianglan,GongXiaohang,JiangBinze,LiXi,andZhouXuehai(School of Computer Science and Technology,University of Science and Technology of C
2、hina,Hefei 230027)(Suzhou Institute for Advanced Research,University of Science and Technology of China,Suzhou,Jiangsu 215004)AbstractReal-timeembeddedsystem(RTES)needstoguaranteenotonlylogicalcorrectnessofthecalculationresults,butalsotemporalcorrectnessoftheinteractionwithoutsideworld,solow-levelpr
3、ogramsmustbeabletoaccuratelyexpresstimebehaviorinupper-levelmodels.TTIinstructionset(time-triggeredinstructionset)isproposedtotrytosolvetheproblemofthelackoftimingsemanticsatthecomputerinstructionsetarchitecturelevel,andtherealizationofreal-timeprocessingunit(RPU)basedonTTIinstructionsetprovesthefea
4、sibilityandeffectivenessofTTI instruction set.However,the current work lacks research on design and analysis method of TTI program.Therefore,basedonTTIinstructionsetandRPU,weproposefourtypesoftimingsemanticsthatTTIinstructionsetcanexpress,givethedesignparadigmofTTIprogram.Then,wedefinetherepresentat
5、ionofTTIprogramtimebehaviorTFG+,whichisanextensionofTFG.TFG+distinguishestimingsemanticinstructionsandthecommoncodesegmentsintheTTIprogram,andTFG+canrepresentthecontrolflowinformationofTTIprogram,thetimebehaviorspecifiedbytheuser,andthetimeattributesrelatedtohardwareplatform.Finally,weproposetimeana
6、lysismethodofTTIprogramandtimesafetycheckingmethod,whichprovidethebasisforthedesignanddeploymentofTTIprogram.Key wordsreal-timeembeddedsystem(RTES);timingpredictability;timedinstructionset;real-timeprocessor;WCETanalysis摘要实时嵌入式系统不仅要保证计算结果的逻辑正确性,还要确保与外界交互的时序正确性,所以底层程序要能精确表达上层模型中的时间行为.TTI 指令集(time-tri
7、ggeredinstructionset)的提出尝试解决计算机指令集体系结构层次缺少时间语义的问题,并且基于 TTI 指令集实现的实时处理单元(real-timeprocessingunit,RPU)证明了 TTI 指令集的可行性和有效性.但是目前的工作缺少对于 TTI 程序设计和分析方法的研究.所以,基于 TTI 指令集和 RPU,提出了 TTI 指令集可以表达的 4 种时间语义,给出了 TTI 程序的设计范式.并且构建了 TTI 程序时间行为的表示方法TFG+,TFG+是对 TFG 的扩展,TFG+区分了TTI 程序中时间语义指令和普通代码段,可以表示 TTI 程序的控制流信息、用户规定的
8、时间行为和 TTI 程序平台相关的时间属性.最后,提出了 TTI 程序的时间分析方法以及时间安全性检查方法,为 TTI 程序的收稿日期:2022-08-22;修回日期:2023-04-19基金项目:国家重点研发计划项目(2017YFA0700900);国家自然科学基金项目(62102383)ThisworkwassupportedbytheNationalKeyResearchandDevelopmentProgramofChina(2017YFA0700900)andtheNationalNaturalScienceFoundationofChina(62102383)通信作者:李曦()计
9、算 机 研 究 与 发 展DOI:10.7544/issn1000-1239.202220730JournalofComputerResearchandDevelopment61(1):98119,2024设计和部署提供了依据.关键词实时嵌入式系统;时间可预测性;时间语义指令集;实时处理器;WCET 分析中图法分类号TP332实时嵌入式系统(real-timeembeddedsystem,RTES)通常应用于安全关键领域,此类系统需要实时和外界环境交互,因此不仅要保证计算结果的逻辑正确性,还要确保与外界交互的时序正确性.实时领域的程序设计中,高层的编程模型含有时间语义,如逻辑执行时间(logi
10、calexecutiontime,LET)编程模型1,而在底层的指令集架构(instructionsetarchitecture,ISA)层面缺乏时间语义,导致编程人员无法直接控制底层程序的时序行为.现阶段实时系统设计和分析的主要方法是,计算底层程序的执行时间,并以此作为程序时序控制的依据,但是由于程序中不确定的分支跳转指令,以及硬件体系结构(流水线、Cache、分支预测等)影响,传统程序的执行时间分析,总是悲观地分析程序在最坏情况下的执行时间(worsecaseexecutiontime,WCET),而为了保证程序时序行为的正确,就必须依据 WCET 进行资源的过度分配,使高层的编程模型不能
11、精确且自然地映射至底层程序.造成这一问题的原因是通用体系结构的 ISA 没有可以表达时间语义的指令,所以和 LET 等实时编程模型的表达能力存在差距.针对该问题,最有效的方法是规定程序中每一条指令的执行时间,但是这样会限制底层硬件体系结构的发展2.为平衡时间语义表达能力和执行性能的问题,Lee 等人3提出 PRET(precisiontimed)概念,并提出了限定代码段执行时间的指令,一定程度上提升了底层指令集的表达能力.文献 4 提出了 TTI 指令集(time-triggeredinstructionset),与 Lee 小组工作相比,增加了时间和操作相结合的定时指令,使指令集的表达能力进
12、一步提升,本文的分析和验证都依据 TTI 指令集进行,并且将使用了 TTI 指令集的程序称为 TTI 程序.Lee 等人3和文献 4 中对于指令集扩展的工作,仅给出了时间语义指令集的定义和实现方案,并没有说明指令集可以表达的时间语义和相应的时间语义程序设计范式,导致实时系统设计者在进行上层模型至底层程序的映射时缺乏理论依据.TTI 指令集通过不同指令组合可以表达丰富的时间语义,为了映射上层设计,需要给出 TTI 程序的设计范式,明确TTI 程序可以表达的语义类型.TTI 程序运行时,时间语义指令的执行会受到前驱代码段执行时间的影响,为了保证指令的时间语义在执行时能够得到正确表达,需要对 TTI
13、 程序进行时间行为分析.例如,对于 TTI 指令集中定时输出指令 ttoat,指令语义要求在预设时间点完成输出操作,而 ttoat 指令会在前驱代码段执行完成后开始执行,所以需要计算 ttoat 指令前驱代码段的 WCET,保证该 WCET 小于 ttoat 指令预设的时间点,以此保证定时语义的正确表达.并且传统程序的时间行为分析,会以整个程序(任务)为单位,给出程序(任务)的WCET,而 TTI 程序需要计算时间语义指令间程序段的 WCET,并结合时间语义指令的语义要求进行时间安全性检查,验证指令运行时的正确性,所以需要改进传统程序的 WCET 分析方法,提出针对时间语义程序的时间行为分析方
14、法.本文依据文献 4 所述工作,首先提出了 TTI 程序的设计范式,说明了 TTI 指令集的表达能力,明确TTI 程序可以表达的 4 种语义.同时,对 TimedC5系列工作中提出的程序时间行为的表示 TFG6进行扩展,提出了 TTI 程序的表示 TFG+,描述了 TTI 程序的控制流信息、用户规定的时间行为和平台相关的时间属性.最后,根据 TFG+,基于实时处理单元(real-timeprocessingunit,RPU),采用基于执行图7的低级分析方法,分析了 TTI 程序的时间行为,并且对 TTI程序的时间语义指令进行时间安全性检查,验证其语义在执行时能够得到正确表达.本文提出的 TFG
15、+构建方法、时间行为分析方法以及时间安全性检查方法适用于 RPU 和其他可以运行 TTI 指令集的处理器架构,若采用除 RPU 外的其他架构,只需要修改执行图的构建方法和执行图节点属性的计算方法即可.本文的主要贡献有 3 个方面:1)提出 TTI 程序的设计范式,明确 TTI 程序可以表达的 4 种时间语义,使编程人员能够精确自然地表达上层的设计.2)提出 TFG+,以表示 TTI 程序,TFG+可以表达TTI 程序的控制流信息、用户规定的时间行为以及平台相关的时间属性,为 TTI 程序的分析和时间安全性检查提供了依据.3)提出了 TTI 程序的时间行为分析方法和时间高银康等:基于 RPU 的
16、 TTI 程序设计和分析方法99安全性检查方法,保证 TTI 程序运行时指令的语义能够正确表达.1相关工作相关工作分为时间语义指令集、程序抽象表示和程序时间行为分析 3 个方面进行介绍.1.1时间语义指令集Lee 在文献 8 中从“实时”概念出发,总结了多种对于实时性的定义.Lee8认为根据不同的需求和角度,“实时”概念有 6 种定义:快速计算、优先调度、对数据流的计算、有界执行、程序的时间语义和网络的时间语义.其中,在对程序的时间语义的阐述中,Lee8认为实时系统设计和部署时,由于现在的通用计算 ISA 中不存在时间语义,需要在更高层次重新引入时间语义,但是通用计算 ISA 和高层次模型关于
17、时间语义表达能力上存在的差距,会导致实际系统设计时的诸多问题,所以需要在实时系统设计的各个抽象层次引入时间语义.根据上述观点,Lee 等人2认为通用计算机指令集隐藏了底层体系结构中精确的数字电路时钟,为了控制程序的时间行为,计算机要向高层次模型提供这一精确时间.对于时序的控制,Lee 等人2定义了 ISA 层需要具备的 4 种能力:1)限定程序块执行时间下界;2)程序块执行超过限定时间,程序块完成后分支跳转;3)程序块执行超过限定时间,立即分支跳转;4)限定程序块执行时间的上界.文献 2 较早地提出了 ISA 层在时序控制方法需要具有的时间语义,但是没有说明上层模型到底层指令的映射关系,没有给
18、出相应的设计范式,同时,Lee 等人2认为时间语义指令集只需要“限定代码段执行时间”,没有关于点时间语义的论述.Lee 等人2对通用计算指令集进行扩展,增加指令 DU(delayuntil)保证代码执行时间下界,指令 MTFD(meetthefinaldeadline)保证代码执行时间上界.并且依据此设计了处理器 PTARM9和 FlexPRET10.此方法可以限定代码的执行时间,但是无法直接表达操作发生在某个时刻的语义,所以该指令集的表达能力依旧有限.文献 4 从实时理论出发,类比通用计算中图灵机为通用计算系统的理论基础11,冯诺依曼机是通用计算机系统统一的实现模型12,提出了具有时间语义的
19、实时计算机体系结构模型实时机(real-timemachine,RTM),RTM 在冯诺依曼机 5 大部件的基础上扩展了标准时钟(stdClk)部件,至此处理器时钟(cpuClk)负责实时处理器的值域控制,标准时钟负责实时处理器的时域控制.基于 RTM 的理论指导,文献 4 结合时间触发自动机(time-triggeredautomata,TTA)理论13,定义了时间语义指令集 TTI.相比于 Lee等人2提出的限定代码执行时间的时间语义指令集,TTI 指令集不仅具有限定代码执行时间上下界的delay,mtfd 指令,还增加了时间和操作相结合的定时指令 ttiat,ttoat,以及任务并发管理
20、指令,进一步扩展了指令集的表达能力.下面详细介绍 TTI 指令集的定义和实现.TTI 指令集包含时间语义寄存器和时间语义指令 2 部分.表 1 给出了时间语义寄存器.时间粒度寄存器(timegranularityregister),用来设置 TTI 程序的时间粒度,以满足不同系统或不同工作模式的时间粒度要求;时间寄存器(currenttimeregister),用来表示系统时间,根据时间粒度寄存器生成,即标准时钟的上升沿累计值等于时间粒度寄存器时系统时间寄存器的值加 1;时间戳寄存器(timestampregister),用来保存上一次时间触发操作的系统时间.如表 2 所示,TTI 指令集中共
21、有 10 条时间语义指令,按照功能分为4 部分.文献 4 中对于指令的语义进行了详细说明.Table 1Time Semantic Registers表 1 时间语义寄存器寄存器名称助记符描述时间粒度寄存器tgr系统时间粒度时间寄存器ctr系统当前时间时间戳寄存器tsr保存上一个时间触发操作发生的时间Table 2Time Semantic Instructions表 2 时间语义指令类型汇编指令系统时间管理指令settgrs1gettirdsettirs1gettsrd时间触发操作指令ttiatrd,(rs2),rs1ttoatrs3,(rs2),rs1执行时间约束指令delayrs1mtf
22、dr1任务并发管理指令tkendaddtkrs1,rs2目前时间语义指令集的相关工作仅说明了每条指令的语义和对应的硬件实现方案,缺乏时间语义指令集表达能力的说明,同时,没有给出时间语义程序的设计范式,导致无法直接自然地定义上层模型中时间语义与底层时间语义程序的映射关系.100计算机研究与发展2024,61(1)文献 4 基于 TTI 指令集的定义,扩展 RISC-V 指令集14,实现了可以执行 TTI 指令集的 RPU.RPU 基于经典 5 段流水15实现,即流水线分为取指段、译码段、执行段、访存段和写回段 5 个阶段.下面给出TTI 指令集的实现.1)系统时间管理指令.此类指令的功能是对标准
23、时钟进行管理,生成系统时间.执行段,settg 指令设置 tgr,setti 指令设置 ctr.写回段,getti 指令读取 ctr中保存的当前系统时间到目的寄存器,getts 指令读取tsr 保存的上一时间触发操作发生时间到目的寄存器.2)时间触发操作指令.此类指令的特点是操作和时间绑定,规定操作在指定系统时间触发执行.执行段,比较 ctr 的值和指令预设时间,若 ctr 小于指令预设时间,产生 stall 信号停顿流水线,直到 ctr 等于指令预设时间,执行时间触发操作指令.后续指令ttiat/ttoat 在访存段和写回段的操作和普通 load/store指令相同.3)执行时间约束指令.此
24、类指令的功能是保证代码段执行时间的上下界.delay 指令用于约束代码执行时间的下界;mtfd 指令用于约束代码执行时间的上界.执行段,delay 指令会比较 ctr 的值和指令预设时间,若 ctr 小于指令预设时间,表示未到延时时间,产生 stall 信号停顿流水线,直到 ctr 等于指令预设时间,才继续指令的执行.对于 mtfd 指令,RPU 没有相关实现,mtfd 指令只作为代码中的检查点,用于时间安全性检查.4)任务并发管理指令.此类指令的功能是摒弃传统的使用中断的软件任务并发管理,提供确定的硬件线程管理任务并发的能力.本文不考虑多线程TTI 程序,所以省略任务并发管理指令的实现.1.
25、2程序的表示传统程序进行 WCET 分析时,可以将程序表示为控制流图(controlflowgraph,CFG),在 CFG 中程序以基本块(basicblock)为单位进行划分,基本块间的依赖关系通过 CFG 中基本块间的边进行表达.后续许多程序表示都是对 CFG 的扩充.文献16 中提出了CKAG(concurrentkepassemblergraph),用 来 表 示 使 用 了 处 理 器 KEP(kiel Esterelprocessor)指令集的程序,KEP 是可以运行同步语言Esterel17的专用处理器,而 CKAG 的提出是为了计算同步语言程序最坏情况反应时间(worstca
26、sereactiontime,WCRT).同步语言 PRET-C18为了计算 WCRT 也提出了 PRET-C 程序的表示 TCCFG(timedconcurrentcontrolflowgraph)19.文献 6 中提出 TFG 的概念,用来表示 TimedC5程序,进行 TimedC 编译器正确性检查,TimedC程序的 TFG 在 CFG 的基础上,添加了表达段时间语义的时间点(timingpoint,TP).另外,FG 定义了图中每个节点的时间属性,至此 TFG 不仅可以表达程序的控制流信息,还可以表达用户规定的时间行为,以及平台相关的时间属性,但是 TimedC 程序的 TFG受限于
27、 TimedC 语言,只是表达了段时间语义.本文结合 TTI 程序提出了 TFG+,是对 TFG 的扩充,表达了更为丰富的时间语义,例如点时间语义.1.3程序时间行为分析现有的程序 WCET 分析方法分为基于测量的WCET 分析和静态 WCET 分析.静态 WCET 分析,由流分析(flowanalysis)、低级分析(low-levelanalysis)和 WCET 计算(WCETcomputation)组成.1)流分析.首先通过分析程序结构,构建程序的表示,例如 CFG20;然后由程序员手动21或通过自动分 析22给 出 程 序 循 环 边 界(loopbound)等 流 事 实(flow
28、fact).2)低级分析.目的是结合硬件体系结构分析CFG 中每个基本块的执行时间,常用的方法有抽象解释(abstract interpretation)23、基 于 执 行 图(executiongraph)5,24-25的分析方法.抽象解释方法的 WCET 分析工具有 aiT26,而基于执行图的 WCET 分析工具有Chronos27,OTAWA28.3)WCET 计算.目的是计算整个程序最坏情况下的执行时间,现有基于语法树的 WCET 计算方法29-30和基于 CFG 的 WCET 计算方法31.基于 CFG,整个程序的执行时间可以表示为每个基本块执行时间的加权和,权值为每个基本块的执行
29、次数.通过分析 CFG 节点依赖关系和流事实,给出对每个基本块执行次数的约束,采用整数线性规划(integerlinearprogram,ILP)方法,最大化整个程序的执行时间表达式,该方法被称为隐式路径枚举技术(implicitpathenumerationtechnique,IPET).2TTI 程序设计流程本节给出 TTI 程序相关概念,以及设计 TTI 程序的基本流程.2.1相关概念由 1.1 节 TTI 指令集的实现可知,TTI 指令集中时间语义指令在 RPU 流水线执行段的行为会受到指令预设系统时间和当前系统时间寄存器 ctr 的值的高银康等:基于 RPU 的 TTI 程序设计和分
30、析方法101影响,编程人员需要依据系统时间设计 TTI 程序的时间行为.下面给出 TTI 程序中“系统时间”这一概念的定义.定义 1.系统时间.TTI 程序中系统时间是以系统时刻为单位的离散值,系统时刻指的是一段实时间,系统时刻的大小由实时应用需要的时间粒度决定,TTI 程序时间语义指令中的预设时间均以系统时刻为单位,根据不同需求,不同 TTI 程序的系统时刻也不相同.如果实时应用需要的时间粒度为 1ms,即 1 个系统时刻为1ms,那么系统时间20 对应的实时间为20ms.RPU 使用标准时钟(stdClk),结合时间粒度寄存器 tgr,更新系统时间寄存器 ctr 的值.对于实时应用规定的时
31、间粒度,TTI 程序可以使用 settg 指令设置时间粒度寄存器 tgr,tgr 的值应该设置为 tgf,其中 tg 为实时应用需要的时间粒度,f 为 stdClk 的频率,假设 stdClk的频率为1MHz,而实时应用需要的时间粒度为 1ms,则时间粒度寄存器 tgr 应该设置为 0.001s1MHz,即tgr 值为 1000.假设实时应用的时间粒度需求变得更为紧致,为 0.1ms,那么 tgr 应该设置为 100.除了控制 TTI 程序时序行为的 stdClk,RPU 存在驱动数据通路各个功能部件同步运行的 cpuClk,根据文献 4 中给出的“stdClk 和 cpuClk 关系定理”可
32、知,stdClk 和 cpuClk 存在同步和异步 2 种关系,在本文中只考虑同步情况,即 stdClk 的周期 TstdClk和 cpuClk的周期 TcpuClk的关系为 TstdClk=nTcpuClk.TFG+使用不同节点表示 TTI 程序中的时间语义指令和普通指令构成的基本块.由于 RPU 流水线中同时存在多条指令,TFG+中 2 个连续节点对应的时间语义指令或基本块的执行会有所重叠.如图 1 所示,基本块 A 的执行时间为 tA,基本块 B 的执行时间为 tB,基本块 A 和基本块 B 的整体执行时间为 tAB,tA+tBtAB.文献 5 给出了执行开销的概念,现在结合 TFG+进
33、行说明.定义 2.执行开销.vj为 TFG+中节点,vi为 vj的直接前驱节点,vj对应程序段的执行开销为 vi最后一条指令完成时间到 vj最后一条指令完成时间的间隔.例如,在图 1 中,基本块 B 的执行开销为 cB.本文采用执行图7的方法进行低级分析,以计算 TFG+各 个 节 点 的 执 行 开 销.根 据 定 义 2,构 建TFG+各节点执行图时需要增加前驱节点的最后一条指令的执行信息.2.2TTI 程序设计流程TTI 程序的设计流程有 3 步:1)对于给出的高层编程模型,分离其时间语义和功能语义,对于上层模型的时间语义,选择合适的TTI 程序设计范式进行表达,再结合相应的功能代码,给
34、出对应的 TTI 程序.2)构建 TTI 程序的 TFG+,表达 TTI 程序中的控制流信息、用户规定的程序时间行为以及平台相关的时间属性.3)基于 RPU 或其他可以运行 TTI 指令集的处理器,结合 TFG+中控制流信息,构建 TFG+每个节点的执行图,基于执行图分析 TFG+中每个节点平台相关的时间属性,并根据 TFG+用户规定的程序时间行为,进行时间安全性检查.由于 RPU 采用的是顺序取指、顺序执行的模式,ttiat,ttoat,delay,mtfd 指令的执行会受到前驱代码段执行时间的影响,时间安全性检查是为了保证系统运行时,这些指令的时间语义能正确表达.时间安全性检查会分析时间语
35、义指令前驱代码段最坏情况下的执行时间,如果前驱代码段的最坏情况下执行时间较长,执行到时间语义指令时系统时间大于预设时间,此时 mtfd 指令约束代码段执行时间上界的语义被违反,且 ttiat,ttoat 指令在规定系统时刻完成输入输出操作的语义也被违反;如果前驱代码段执行时间较短,执行到时间语义指令时,系统时间小于指令预设时间,显然满足 mtfd 指令约束代码段执行时间上界的语义,而 ttiat,ttoat,delay 指令会停滞流水线,直到 RPU 的系统时间等于指令预设的时间,此时满足 delay 指令约束代码段执行时间下界的语义,由于ttiat,ttoat 指令语义要求在规定系统时刻完成
36、输入输出操作,所以还需要验证 ttiat,ttoat 指令的输入输出操作会在规定的系统时刻内完成.3TTI 程序设计范式TTI 指令集可以通过不同的指令组合表达丰富的时间语义,用来满足用户对于程序时间行为的控制需求.现在给出 TTI 指令集能够表达的 4 种时间ABcBABtAtBtAB(a)程序示意图(b)程序执行时间图Fig.1Exampleofexecutioncost图1执行开销示例102计算机研究与发展2024,61(1)语义:1)绝对点时间语义(absolutetimedsemantic).相对于系统 0 时刻的点时间约束,即规定自系统启动到某一确定时间点的系统行为.2)绝对段时间
37、语义(absolutetimingsemantic).相对于系统 0 时刻的段时间约束,即规定自系统启动,某一段时间的系统行为.3)相对点时间语义(relativetimedsemantic).相对于某一时刻的点时间约束,即自系统某一时刻到规定时间点的系统行为.4)相对段时间语义(relativetimingsemantic).相对于某一时刻的段时间约束,即自系统某一时刻,规定时间段内的系统行为.相对时间语义中的“某一时刻”,分为 2 种情况:1)设计时确定的时刻.在系统设计时,已知该时刻的系统时间.例如,相对时刻是规定的绝对点时间,那么这里相对时间语义中的相对时刻就是系统设计时已知,此时的相
38、对时间语义可以转化成绝对时间语义,即绝对时间等于相对的系统时间加上相对语义预设的系统时间.2)运行时确定的时刻.在系统设计时,不能确定该时刻的系统时间,系统时间需要根据系统实际运行情况分析.例如,相对时刻是系统某一数据输入时刻,该数据输入对应的指令执行完成时间会受到前驱代码段的影响,数据输入的系统时间只有在系统运行时才能确定.此时的相对时间语义,不能转化成绝对时间语义.下面介绍 TTI 指令集对上述时间语义的实现,给出 TTI 程序设计范式和 TTI 程序设计规则.3.1绝对点时间TTI 指令集中,可以通过 setti 设置 ctr 寄存器来设置系统时间.整个系统运行前的准备工作完成后,需要使
39、用 settix0 指令,将系统时间置为 0,表示系统开始运行,ttiat/ttoat 指令提供了定时输入/输出语义,可以使用 settix0 指令和 ttiat/ttoat 指令的组合,完成绝对点时间语义的表达.图 2 给出绝对点时间的表达示例和实际运行的时序.如图 2(a)所示,init 负责初始化系统,设置时间粒度寄存器 tgr 等,完成后使用 settix0 将 ctr 设置为 0,表示系统启动.task1 中,设计时需要在系统时间为 20时进行输出,所以使用 ttoat 指令,并将指定触发时间的寄存器(图 2(a)中寄存器 a0)设置为 20.如图 2(b)所示,init 任务初始化
40、系统,并通过setti 指令将 ctr 寄存器设置为 0,系统启动,task1 在某一时刻调度执行,且 tast1 中 ttoat 指令在系统时间为20 时生效,即 ttoat 指令的输出操作发生在系统时间20 和 21 之间.如果将 ttoat 指令替换成 ttiat 指令,则表示输入操作的发生在系统时间 20 和 21 之间.task1:i1:addi a0,x0,20i2:ttoat a1,(a2),a0init:i1:settg a1i2:setti x0系统时间20 x21yttoatinit执行系统启动 task1执行 输出开始输出结束20 xy21(a)绝对点时间语义程序(b)实
41、际运行的时序Fig.2Exampleofabsolutetimedsemantic图2绝对点时间语义示例3.2绝对段时间绝对段时间和绝对点时间类似,在系统初始化完成后,通过 settix0 指令将系统时间置为 0,表示系统启动,然后在需要限制的代码段后使用 delay/mtfd指令,表达绝对段时间约束.图 3 给出绝对段时间的表达示例和实际运行的时序.如图 3(a)所示,init 负责初始化并启动系统.task2中,设计时规定 delay 指令前程序执行时间最少为 20,所以将寄存器 a0 设置为 20,使用 delay 指令,控制程序的绝对段时间行为.系统时间20delayinit执行系统启
42、动 task2执行delay指令延迟task2:i1:addi a0,x0,20i2:delay a0init:i1:settg a1i2:setti x0(b)实际运行的时序(a)绝对段时间语义程序Fig.3Exampleofabsolutetimingsemantic图3绝对段时间语义示例如图 3(b)所示,task2 在某一时刻调度执行,且task2 中 delay 指令需要保证前驱代码段的执行时间大于等于 20.如果将 delay 指令替换成 mtfd 指令,需要保证前驱代码段的执行时间小于 20.高银康等:基于 RPU 的 TTI 程序设计和分析方法1033.3相对点时间用户需要表达
43、相对于系统某一时刻的点时间行为.这里的“某一时刻”,可以是设计时确定的系统时刻,这样相对点时间语义就可以转化为绝对点时间语义,TTI 指令的实现可以转化为上述绝对点时间语义的实现方式.所以这里主要分析的“某一时刻”,指的是系统运行前无法确定系统时间的时刻,可以使用 TTI 指令集中提供的 getti 指令和 ttiat/ttoat 指令组合的方式表达.图 4 给出此种情况下,相对点时间的表达示例和实际运行的时序.task3:i1:getti a0i2:addi a0,a0,20i3:ttoat a1,(a2),a0系统时间x+20 xx+21ngettittoattask3执行获取时间 输出开
44、始输出结束x+20mnx+21m(b)实际运行的时序(a)相对点时间语义程序Fig.4Exampleofrelativetimedsemantic图4相对点时间语义示例如图 4(a)所示,在 task3 中,用户需要相对 getti指令 20 个时间单位执行输出操作.TTI 指令对此种语义的实现为:设置 getti 指令,获取当前系统时间,存放在 a0 中,再通过 addi 指令加上相对时间 20,作为 ttoat 指令的触发时间.如图 4(b)所示,由于 getti 前程序段的执行时间不确定,所以 getti 获取的系统时间也需要根据实际运行情况确定,假设的 getti 执行时系统时间为 x
45、,ttoat 指令也会在相对于 getti 指令 20 个时间单位的x+20 生效.3.4相对段时间用户需要表达相对于系统某一时刻在一段时间内的程序行为.“某一时刻”和上述相对点时间中的一样,这里主要分析在运行时确定的系统时刻.图 5给出此类情况下,相对段时间的表达示例和实际运行的时序.如图 5(a)所示,在 task4 中,用户需要 getti 指令后的代码段执行至少 20 个时间单位.TTI 指令对此种语义的实现和相对点时间语义类似,只需要把 ttoat指令改为 delay 指令.如图 5(b)所示,可以表达 getti 指令和 delay 指令间的代码段至少执行 20 个时间单位.3.5
46、TTI 程序设计规则考虑时间语义指令实际使用场景和 TTI 程序时间安全性检查的可行性,TTI 程序需要遵守 2 个规则:1)为保证 TTI 程序的时间行为的确定性,时间语义指令集不会出现在程序的某一分支中.2)对于运行时确定的相对时间语义,getti 指令和对应的时间语义指令之间只有通用计算指令,不会出现其他时间语义指令.4TFG+定义TTI 程序时间行为分析和时间安全性检查,需要构建整个程序的抽象表示.本文对 TFG 扩展,以TFG+表示 TTI 程序,TFG+可以表达 TTI 程序的控制流信息、用户规定的时间行为以及平台相关的时间属性.如表 3 所示,TFG+由 3 部分组成:图结构、程
47、序属性、平台相关属性.1)图结构.使用不同节点表示多种时间语义和TTI 程序其他组成部分,主要分为:绝对时间语义节 点,包 括 绝 对 段 时 间 语 义 节 点(absolutetimingpoint)、绝对点时间语义节点(absolutetimedpoint);运行时确定的相对时间语义节点,首先是相对时间语义的相对基准点(relativebasepoint),然后分别是相对段时间语义节点(relativetimingpoint)、相对点时间语义节点(relativetimedpoint);普通指令构成的基本块(basicblock)节点;程序的开始(start)节点.最后,由 TTI 程序
48、中的指令执行顺序,构成TFG+中的边.ttiat,ttoat 指令根据表达的语义,对应绝对(相对)点时间语义节点;delay,mtfd 指令根据表达task4:i1:getti a0i2:addi a0,x0,20i3:delay a0系统时间xx+20gettidelaytask4执行 获取时间delay指令延迟(a)相对段时间语义程序(b)实际运行的时序Fig.5Exampleofrelativetimingsemantic图5相对段时间语义示例104计算机研究与发展2024,61(1)的语义,对应绝对(相对)段时间语义节点;getti 指令对应相对基准点.2)程序属性.表示 TTI 程序
49、平台无关的时间属性,TFG+程序属性中提到的时间均为系统时间.程序属性包括时间粒度寄存器的值、TTI 程序的开始时间、绝对(相对)点(段)时间语义节点对应的预设系统时间.3)平台相关属性.TTI 程序平台相关的时间属性,TFG+平台相关属性中提到的执行开销和时间均以cpuClk 周期为单位.对于普通指令构成的基本块,需要计算每个基本块的执行开销.对于时间语义节点,该节点对应的时间语义指令需要根据前驱代码段的运行时间,决定时间语义指令的执行开销,为了保证该类指令的时间语义在运行时的正确表达,现在考虑在指令前驱代码段最坏执行情况的前提下,时间语义指令需要的延迟时间和执行开销.由于 TTI 程序的时
50、序依赖于 stdClk,而逻辑控制依赖于 cpuClk,且stdClk 周期 TstdClk为cpuClk 周期 Tcpuclk的整数倍,所以1 个系统时刻内包含多个 cpuClk 周期,所以对于绝对点时间语义节点,需要给出在该节点对应的绝对点时间语义指令前驱代码段最坏执行情况的前提下,绝对点时间指令执行完成相对于某一系统时刻的偏移时间,同理,需要给出任务开始执行相对于某一系统时刻的偏移时间.如图 6 所示的平台相关属性 coff说明,假设存在绝对点时间语义节点 vatdpATdP,且vatdp对应的指令为 iatdp,在 iatdp的前驱代码段最坏执行情况的前提下,iatdp在系统时间 x
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100