[发明专利]编译方法以及编译器无效
申请号: | 200680056637.6 | 申请日: | 2006-12-14 |
公开(公告)号: | CN101563673A | 公开(公告)日: | 2009-10-21 |
发明(设计)人: | 山下浩一郎 | 申请(专利权)人: | 富士通株式会社 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京东方亿思知识产权代理有限责任公司 | 代理人: | 赵淑萍;南 霆 |
地址: | 日本神*** | 国省代码: | 日本;JP |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 编译 方法 以及 编译器 | ||
技术领域
本发明涉及编译方法以及编译器,特别是涉及在嵌入式设备中自动生成软件的执行代码的编译方法以及编译器。
背景技术
图1是示出在嵌入式设备中生成软件的执行代码的现有编译器的结构的图。图1所示的编译器为了将嵌入式设备的软件作为单一的应用程序有效地执行而进行代码的优化。图1所示的编译器包括:翻译装置(frontend,前端)2、优化装置(middle path,中间路径)4、以及代码生成装置(back end,后端)5。前端2从源代码1生成中间语言3-1,中间路径4从中间语言3-1生成中间语言3-2。后端5从中间语言3-2生成优化后的执行代码6。在由编译器进行翻译作业的过程中,中间路径4执行简单的重构,例如删除不需要的变量、封装命令、或者对调用函数进行内联展开(inline expansion)。
在上述用于优化执行代码的重构中,只进行命令代码的删除或简单的替换,而不进行诸如改变源代码1中所描述的处理序列的结构本身的重构。
已有在开始执行运动图像处理或通信处理等处理之后与CPU的处理能力无关地在预定的时刻周期地输出中间计算结果的时序列处理的软件。在使用图1所示的编译器对上述的按时间序列描述的软件进行编译来生成执行代码的情况下,即使在从处理的开始到结束为止的总计算量与CPU的处理能力匹配的情况下,有时也会如图2的例子所示,根据开始进行处理P3、P4的顺序的不同而出现处理跟不上而延迟的情况。图2是用于说明时序处理的延迟的图。在图2中,P1~P4表示处理,t1表示开始条件判断时刻,t2表示处理P3的实际结束时刻,t3表示处理P4的期待的结束时刻,t4表示处理P4的实际结束时刻、t5表示处理P3的期待的结束时刻。此时,处理P4的实际结束时刻t4落后于处理P4的期待结束时刻t3,发生了延迟D1。
通常,即使如上所述CPU的平均处理能力足够,从局部处理的观点来说也可以想到会发生CPU的处理能力不足的状态,此时软件如图3所示那样通过在设计阶段定义缓冲器8来避免处理延迟的问题。图3是用于说明避免时序处理的延迟的图。在图3中,对于与2相同的部分标注相同的符号,并省略对其的说明。在图3中,P3y、P4y表示第y个执行的处理P3、P4,P4z表示第z个执行的处理P4,t2y表示处理P3y的实际结束时刻,t3y表示处理P4y的期待的结束时刻,t5y表示处理P3y的期待的结束时刻。
图4是示出现有动态调度器的映象(image)的图。在该图中,11是任务或者线程,12是从任务或者线程11报告的执行信息表,13是基于信息表来执行调度的动态调度器,14表示操作系统(OS)16内的上下文切换和处理管理功能,15表示根据动态调度器13的指示的切换。当现有的嵌入式设备中高效地并行(同时)执行多个任务或线程11时,图4所示的动态调度器13使应用程序具有动态收集概括(dynamic profiling)功能,从而随时向OS报告存储器和CPU的使用量。动态调度器13参照实时收集的信息的信息表12来动态定义任务或线程11的优先级,并通过OS 16的上下文切换处理管理功能14进行任务或线程11的切换15。
如上所述,用于高效地执行多个任务或线程11的动态调度器13是与和OS 16联动的应用程序分开动作的软件,即为外部(或者外设)调度器。因此,从作为对象的软件所需要的CPU计算量的观点来看,这种动态调度器13被看作是纯粹的开销。
因此,为了避免由参照信息表12定义优先级的动态调度器13产生开销,通常采用使用开销小的调度器的方法,这种调度器基于轮询或者按照事先设定好的固定的优先级非主动地动作,但这种方法无法高效地执行所有的软件。
为了生成使处理时间最短的执行代码、并且避免由动态调度器13产生的开销,有时采用在执行代码中嵌入用于定义执行开始的静态调度器机构。
静态调度器作为对存储器和CPU使用量不进行动态报告的替代手段,编译时关注分支命令,基于期望的信息表来决定编译时的调度,其中,所述信息表是对从分支命令跳入的从属处理的存储器或CPU的使用量乘以分支预测的系数而获得的。
相对于动态执行最优处理的动态调度器,静态调度器虽然执行时调度时的开销小,但特别是对于具有每次执行时运算量或处理数据量发生变化的结构的软件来说,调度精度下降,处理时间不一定最短。因此,静态调度器通常被用于预先知道要在CPU上处理的运算量的软件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于富士通株式会社,未经富士通株式会社许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200680056637.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:基于自由造型并全折叠功能的伞骨架设计
- 下一篇:伸缩式工作台支架