LET模型的时间语义编程语言.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
? ? LET模型的时间语义编程语言 ? ? 吴 昊,章 博,陈香兰,王 超,李 曦 中国科学技术大学 计算机科学与技术学院,合肥230026 在实时系统中,如一个汽车、机器人系统,系统的正确性同时取决于逻辑和时间的正确性。系统行为的定时、及时发生需要在软件中明确指定,并在实时平台上正确执行。然而,现有的编程语言缺乏显示表达系统时间属性的语法结构,为此实时系统领域逐渐衍生出了各种实时语言来显示表达系统的时间属性。 嵌入式实时系统编程模型根据其发展历程和应用场景的需求主要可以分为三类:有界执行时间模型(bounded execution time,BET)[1]、零执行时间模型(zero execution time,ZET)[2]以及逻辑执行时间模型(logical execution time,LET)[3]。目前的实时编程语言便基于这三种编程模型。 有界执行时间模型又叫作异步模型,模型通过优先级决定任务的执行顺序,要求任务在既定的截止时间之前完成执行。异步模型的代表性编程语言为Ada[4]。Ada通过调用时间控制函数来指定任务的时间属性与时间行为,其运行时系统是基于线程模型实现的执行环境,在执行环境里多个并发的Ada 任务异步交错执行。但在异步模型中,由于运行时系统缺乏对任务时序行为的约束,可抢占线程在并发情况下的执行过程具有不确定性,导致系统实际执行的时序语义很难与模型层保持一致性,系统行为具有不可预测性。 零执行时间模型又叫作同步模型,模型基于同步假设,即在逻辑上任务的执行时间为零。同步模型抽象层次高,具有数学抽象能力,可采用形式化工具证明其行为正确性。同步模型主要刻画任务的因果关系,通过逻辑时间表达任务的时间行为。基于同步模型的编程语言有Esterel[5]、PRET-C[6]、Lustre[7]以及Signal[8]等。然而,在实际的物理平台中,无法实现无限快的运算速度,系统实际运行过程中不可能按照ZET的时序假设运行。 逻辑执行时间模型介于异步模型和同步模型之间,模型为每个任务指定了一段逻辑执行时间,任务只能在该时间段的开始和结束时刻分别执行输入和输出过程,即进行任务间的同步,而计算过程异步进行,且计算结果必须在输出时刻之前有效。LET 模型约束了决定任务时序行为的关键过程(输入和输出),能直接有效地刻画任务的时间行为。 Giotto[9]、HTL[10]、TDL[11]等现有的基于LET 模型的编程语言,其语言只描述了系统的时间约束,而具体的功能代码则通过C、Java 等常见的高级语言来实现;语言通过特定编译器编译为中间代码E-code[12],在执行时,虚拟机E-machine[12]根据E-code 描述的时间行为驱动功能代码的执行,虚拟机本身则是运行在实时操作系统之上。这种将时间控制程序和功能代码分开的方式并不方便设计,希望通过扩展一种高级语言的方式来实现一种实时编程语言。 本文提出一种基于C 扩展的实时编程语言TBC。TBC基于LET编程模型,在语言层次上,从设计的时间需求出发,引入可观测事件的概念,来简化系统内部的时间约束,降低系统响应延迟,并通过扩展的语法结构来表达系统中的各种时间属性。在编译器层次,本文提出了一种针对实时编程语言的编译技术,通过在编译器前端增加相应的数据结构来表示语法结构中的时间属性,同时对中间语言LLVM IR进行时间指令扩展,使其可以表示系统的时间行为。在之前的工作中作者提出了包含时间语义的指令集TTI[13],将其作为编译器的目标指令。 1 实时语言框架 除了编程模型外,实时语言的区别主要在于其实现方式和编译方式,本文针对这两点提出一种实时语言设计框架,基于此架构来设计实时语言TBC。如图1所示,整个语言框架分为高级语言、中间语言和汇编语言三个层次。 图1 语言设计整体架构Fig.1 Overall architecture of language design 高级语言指实时语言本身,在本文中通过基于C扩展语法结构的方式来实现语言时间语义的扩展。在这里语法结构是指如if、for 一样的语言结构,通过编译器来进行分析处理,相对于Ada、RTOS通过API来指定时间属性的方式,软件程序更加简单,不需要大量的代码来设置定时器,处理不同的时间格式。同时如果程序使用某个平台依赖的API,则该程序的运行不再灵活,时间操作必须是平台依赖的,更重要的是,语法结构可以通过形式化的方式表示其语法和语义,并能对语义进行验证。在高级语言层次,通过扩展的语法结构来表达多个任务并发执行的时间语义。 现有的许多编程框架[14-15]或实时语言基于RTOS来实现。如文献[16]将实时语言Timed-C编译成RTOS代码,而本文将具有时间语义的指令集作为编译器的目标代码,这使得目标平台不需要支持功能

文档评论(0)

科技之佳文库 + 关注
官方认证
文档贡献者

科技赋能未来,创新改变生活!

版权声明书
用户编号:8131073104000017
认证主体重庆有云时代科技有限公司
IP属地上海
统一社会信用代码/组织机构代码
9150010832176858X3

1亿VIP精品文档

相关文档