程序优化方法技术

技术编号:7140546 阅读:212 留言:0更新日期:2012-04-11 18:40
一种程序优化方法,包括:范围确定步骤,根据包含在高级语言程序中的描述,确定所述机器语言程序的一个程序部分为实施程序优化的处理范围;以及配置确定步骤,确定位于所述处理范围内的命令代码的配置位置。所述描述为用于指定所述高级语言程序所具有的多个处理块之间的相关关系的描述。所述范围确定步骤在所述机器语言程序之中将相当于由所述描述指定了所述相关关系的所述处理块的程序部分确定为所述处理范围。所述配置确定步骤根据由所述描述指定的所述相关关系,针对每个所述处理块,确定位于所述处理范围内的命令代码的配置位置。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及缩短程序的执行时间的编译方法,更具体地,涉及基于抑制因高速缓 存未命中而引起的性能下降的编译器的。
技术介绍
本申请在此将2008年7月22日申请的日本专利申请2008-188386号的包括说明 书、附图、权利要求书在内的全部内容作为参考,并纳入到本说明书中。近年来,CPU的处理能力有所提高,因此,为了缩短程序的执行时间,缩短存储器访 问所需的时间就变得重要。作为缩短存储器访问所需时间的方法之一,目前广泛已知一种使用高速缓冲存储 器的方法。在访问处理中程序具有局部性,这就是通过使用高速缓冲存储器能够缩短存储 器访问所需时间的原因。访问处理中的局部性包括·时间局部性(在不久的将来访问相同的数据的可能性高)、以及·空间局部性(在不久的将来访问附近的数据的可能性高)。由于程序具有这种访问处理中的局部性,因此存储在高速缓冲存储器中的数据可 被视为在不久的将来被访问的可能性高。因此,如果将能够比主存储器更高速被访问的存 储器使用于高速缓冲存储器,则能够明显缩短存储器访问所需的时间。在具有高速缓冲存储器的计算机系统中,如果在程序执行过程中发生高速缓存未 命中(〉^L S 7 ),则程序的执行时间延长。因此,在按照地址顺序执行一系列的命 令代码时,或者重复执行纳入高速缓冲存储器范围的命令代码时,存储命令代码的高速缓 冲存储器的功效会变大。但是,在现实的程序中,基于处理性能、程序的开发效率、存储器大 小的限制、程序的可读性等原因,会使用分支、循环、子程序等结构。因此,在执行现实的程 序时,无法完全地抑制高速缓存未命中的发生。作为抑制因高速缓存未命中而引起的性能下降的方法之一,已知一种在正在执行 的程序中预先将不久的将来被执行的可能性高的数据预取(U7工y f)到高速缓冲存 储器中的方法。为了提高预取的效果,该方法会在执行程序之前,对程序中的分支和循环的 重复次数等进行解析,执行对高速缓存未命中进行预测的处理。但是,由于分支目的地和循 环的重复次数等是在程序执行过程中动态确定的,因此,在多数情况下,在程序执行前的静 态解析中无法正确地进行预测。如此,在基于程序的静态解析结果进行预取的方法中,存在 对高速缓存未命中的预测易于产生错误的问题。另外,作为更有效地抑制因高速缓存未命中而引起的性能下降的方法,提出了一 种在执行基于编译器的程序优化时,使用程序的动态解析结果(以下称为轮廓(口 7 7· ^ ^ )信息)的方法。例如,在专利文献1中,公开了一种虚拟执行程序的一次编译结果来 计算出轮廓信息,根据计算出的轮廓信息进行二次编译的方法。据此,在专利文献1中,能 够取得在合适的位置插入有预取命令的目标文件。专利文献2中公开了一种基于轮廓信息,使带条件的分支命令中的分支方向具有 侧重性的方法。另外,专利文献3中公开了一种提高利用了空间局部性的高速缓存效率的 方法。专利文献1 日本特开平7-306790号专利文献2 日本特开平11-149381号专利文献3 日本特开2006-309430号但是,在各专利文献所公开的现有方法中,需要取得程序的动态解析结果即轮廓 信息。为了取得上述信息,剖析(/口7^"」〉,)的算法和编译器需要特殊的方法,为 此,需要高度的技术和累积了经验的分析技术。另外,在利用了空间局部性的现有方法中,在系统运行时的运行和多个任务的运 行中,未运行的处理部分的源代码有时会被配置在高速缓冲存储器中。但如果这样,配置在 高速缓冲存储器中的源代码会阻碍在高速缓冲存储器中配置必要的处理。
技术实现思路
本专利技术的目的在于提供一种能够廉价且容易地抑制因高速缓存未命中而引起的 性能下降的基于编译器的。本专利技术的基于编译器的,由在将高级语言程序转换为机器语言程序 时进行程序转换的编译器执行,所述包括范围确定步骤,根据包含在所述高级语言程序中的描述,确定所述机器语言程序 的一个程序部分为实施程序优化的处理范围;以及配置确定步骤,确定位于所述处理范围内的命令代码的配置位置,所述描述为用于指定所述高级语言程序所具有的多个处理块之间的相关关系的 描述,所述范围确定步骤在所述机器语言程序之中将相当于由所述描述指定了所述相 关关系的所述处理块的程序部分确定为所述处理范围,所述配置确定步骤根据由所述描述指定的所述相关关系,针对每个所述处理块, 确定位于所述处理范围内的命令代码的配置位置。本专利技术中,用于使计算机执行上述优化方法的编译器,以及记录有该编译器的计 算机可读取记录介质、经由网络传输该编译器的信息传输介质也包含在该范围内。根据本专利技术,程序开发者在编写高级语言程序时,指定处理块的相关关系(交叉 (輻輳)关系),编译器将相当于指定了相关关系的处理块的命令代码配置在合适的位置 上。据此,能够廉价且容易地防止高速缓存未命中的发生,从而防止因高速缓存未命中而引 起的性能下降。附图说明图IA是示出在高速缓冲存储器的行上配置命令代码的情况的第一配置图;图IB是示出在高速缓冲存储器的行上配置命令代码的情况的第二配置图;图2A是表示作为优化处理对象的处理任务A的流程图;图2B是表示作为优化处理对象的处理任务B的流程5图3A是示出作为编程的一个执行例的高级语言程序的流程图;图;3B是示出作为由编译器执行图3A的高级语言程序的一个例子的机器语言程序 的流程图;图4A是示出本专利技术的第一实施方式所涉及的基于编译器的优化处理的执行例的 第一图;图4B是示出本专利技术的第一实施方式所涉及的基于编译器的优化处理的执行例的 第二图;图5是示出本专利技术的第一实施方式所涉及的编译器的整体结构的图;图6是示出本专利技术的第二实施方式所涉及的编译器的连接部的详细内容的图;图7是示出本专利技术的第二实施方式所涉及的高速缓冲存储器的例子的图;图8是示出本专利技术的第二实施方式所涉及的主存储器地址与高速缓冲存储器地 址的对应关系的图。具体实施例方式下面,对将由某高级语言描述的程序(以下称为高级语言程序)转换为由某机器 语言描述的程序(以下称为机器语言程序)的编译器,以及由该编译器执行的程序优化处 理进行说明。此外,在本专利技术中,处理块表示用高级语言书写的具有某功能的一个函数或在 高速缓冲存储器上用一个以上的命令代码书写的命令代码的集合,与表示由编译器生成的 机器语言程序的命令代码为不同的概念。机器语言程序由具有高速缓冲存储器的计算机执行。如果机器语言程序不包含分 支和/或子程序调用等,并被连续地配置在地址空间内的一个区域中,则较少发生高速缓 存未命中,因高速缓存未命中而引起的性能下降也不会造成很大问题。但是,现实的机器语 言程序包含分支和/或子程序调用等,并被分割配置在地址空间内的多个区域中。因此,当 执行机器语言程序时,因高速缓存未命中而引起的性能下降就会造成问题。在以下所示的各实施方式中,本专利技术被实施于编译器中,所述编译器在将包含多 个处理任务和/或多个运行模式的高级语言程序转换为机器语言程序的同时,执行程序优 化处理,所述程序优化处理用于确定包含在机器语言程序中的命令代码的配置位置。在各 实施方式中,对在包含多个处理任务和/或多个运行模式的高级语言程序的优化处理中实 施本专利技术的方式进行说明。此外,在以下的说明中,使用C语言作为高级语言的例子,但高 级语言以及机器语言的种类可以是任本文档来自技高网
...

【技术保护点】
一种程序优化方法,由在将高级语言程序转换为机器语言程序时进行程序转换的编译器执行,所述程序优化方法包括:  范围确定步骤,根据包含在所述高级语言程序中的描述,确定所述机器语言程序的任意一个程序部分为实施程序优化的处理范围;以及  配置确定步骤,确定位于所述处理范围内的命令代码的配置位置,  所述描述为用于指定所述高级语言程序所具有的多个处理块之间的相关关系的描述,  所述范围确定步骤在所述机器语言程序之中将相当于由所述描述指定了所述相关关系的所述处理块的程序部分确定为所述处理范围,  所述配置确定步骤根据由所述描述指定的所述相关关系,针对每个所述处理块,确定位于所述处理范围内的命令代码的配置位置。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:米津武纪
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:JP

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1