程序优化方法

文档序号:6594287阅读:227来源:国知局
专利名称:程序优化方法
技术领域
本发明涉及缩短程序的执行时间的编译方法,更具体地,涉及基于抑制因高速缓 存未命中而引起的性能下降的编译器的程序优化方法。
背景技术
本申请在此将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语言作为高级语言的例子,但高 级语言以及机器语言的种类可以是任意种类。(第一实施方式)参考图IA 图5,对本发明的第一实施方式所涉及的基于编译器的程序优化方法 的执行例进行说明。图1A、图IB是示出在高速缓冲存储器的行上配置包含在机器语言程 序中的命令代码的情况的图。图1A、图IB所示的命令代码相当于由图2所示的流程图表 示的处理。图2所示的处理中示出多个处理任务(或多个运行模式)各自的处理块。如图 IA等所示,相当于该处理的命令代码包含相当于各处理块的命令代码。图1A、图IB中分别记载了在高速缓冲存储器的两路(々- ^ )上配置命令代码的 情况。图IA中包括分别配置了多个处理块的两路。配置在各路上的多个处理块在不相同 (不同)的处理任务(或多个运行模式)下进行处理。以下将这种处理块的配置称为第一配置。第一配置通过现有的编译器获得。图IB中虽然包括分别配置了多个处理块的多路,但是配置在各路上的多个处理 块在相同的处理任务(或相同的运行模式)下进行处理。以下将这种处理块的配置称为第 二配置。第二配置通过本实施方式所涉及的编译器获得。第二配置与第一配置不同,多个 处理任务(或多个运行模式)的处理块被覆盖配置在高速缓存的路上。下面,假设计算机执行机器语言程序时执行以行为单位的预取,来对本实施方式 进行说明。换言之,视为在读出某命令代码时发生了高速缓存未命中的情况下,包含该命令 代码的一行部分的命令代码从主存储器被传送到高速缓冲存储器,来进行本实施方式的说 明。在上述条件下,对发生的高速缓存未命中进行说明。在第一配置(图1A)下依次执 行处理时,在高速缓冲存储器中预取有相当于处理任务A(或运行模式A)中的处理A-I的 处理块的命令。但是,接着在执行相当于处理任务A (或运行模式A)中的处理A-2的处理 块的命令时,相当于处理A-2的处理块的命令未被存储在高速缓冲存储器内。因此,在该时 刻有可能发生高速缓存未命中。如此,当发生高速缓存未命中时,处理A-2和处理A-3从主 存储器被传送到高速缓冲存储器。这样在第一配置下,由于未被处理(没有相关关系)的 处理任务B (或运行模式B)涉及的处理块,导致处理任务A (或运行模式A)涉及的一系列 处理发生高速缓存未命中。另一方面,在第二配置(图1B)下,在执行处理任务A(或运行模式A)涉及的处理 时,高速缓冲存储器中预取有处理A-1、处理A-2以及处理A-3,在处理A-I之后执行处理 A-2时,处理A-2已存储在高速缓冲存储器内。因此,处理任务A (或运行模式A)涉及的一 系列处理不会发生高速缓存未命中。如此,在第二配置下不发生高速缓存未命中。如果程序开发者根据图2A、图2B的流程图进行如现有那样的编程,则能够获得图 3A所示的高级语言程序。如果由现有的编译器处理该高级语言程序,则能够获得图;3B所示 的机器语言程序。在该机器语言程序中,处理任务A (或运行模式A)的处理块与处理任务 B(或运行模式B)的处理块被混杂在一起配置。如此,在如现有那样的编程中,如果在高级 语言程序内的处理的记载中,存在有对机器语言程序来说不合适的部分,则在生成的机器 语言程序的命令代码(这相当于高级语言程序内的上述处理)的配置中,相当于处理任务 A、B等涉及的处理(具体而言相当于该处理的命令代码)的命令代码在高速缓冲存储器内 被混杂在一起存储的可能性增高。在这种状态下,易于发生高速缓存未命中。在本实施方式中,当编写包含多个处理任务(或多个运行模式)的高级语言程序 时,程序开发者将相互具有下述关系的处理块组指定为没有相关关系(没有交叉运行关 系)的处理块组(以下称为第一处理块组)。上述关系是指由是否在一系列的处理序列内 被执行所确定出的关系,未在一系列的处理序列内被执行的处理块组被看做是没有相关关 系并包含在上述的第一处理块组中。相反,在一系列的处理序列内被执行的处理块组被看 做是具有相关关系并包含在上述的第一处理块组以外的处理块组(以下称为第二处理块 组)中。此外,作为一系列的处理序列,包含有相同的任务、或不同时处理的运行模式等。下面进行具体说明。如图4A所示,程序开发者使用Spragma预处理指令(” 'J 口七:ν寸π l·夕〒^义)来指定第一处理块组。该ftpragma预处理指令具有调用ftpragma 预处理器的功能。在这里,第一处理块组为具有下述条件的处理块组。艮口,
·参数为_UncOrrelated_0N(没有相关关系的指定为“开”)的ftpragma预处理指 令与·参数为_unCOrrelated_0FF (没有相关关系的指定为“关”)的ftpragma预处理 指令之间所夹的处理块被判定为包含在第一处理块组中。具有这种配置关系的 #pragma预处理指令相当于用于指定包含在高级语言程序中的处理块的相关关系(交叉关 系)的描述。如果用本实施方式所涉及的编译器来处理如图4A所示的高级语言程序,则能够 获得图4B所示的机器语言程序。由该机器语言程序执行处理任务A (或运行模式A)涉及 的处理时,位于处理A-I之后的命令代码(这里为处理A-2)在高速缓冲存储器中被配置在 紧接处理A-I之后。其结果是机器语言程序中的处理A-I A-3被配置在与高级语言程序 中的描述配置不同的位置上。在本实施方式中,紧接在如此抽出的第一处理块组中所包含 的任意命令代码之后,不配置包含在第一处理块组(相互没有相关关系)中的其他命令代 码,而在这里配置包含在第二处理块组(相互具有相关关系)中的命令代码。包含在第一 处理块组中的其他命令代码被配置在其他程序位置上。据此,相当于处理任务A(或运行模 式A)涉及的一系列处理的命令代码同时被存储在高速缓冲存储器上。由此,能够抑制高速 缓存未命中的发生。下面参考图5,对本实施方式所涉及的编译器的结构进行说明。图5是示出本实施 方式所涉及的编译器的整体结构的图。如图5所示,本实施方式所涉及的编译器包括翻译 部10和连接部20。翻译部10根据输入的源文件1生成目标文件2。连接部20根据生成 的目标文件2生成可执行文件3。源文件1中记录有高级语言程序,目标文件2和可执行文 件3中记录有机器语言程序。翻译部10执行预处理指令解析步骤S11、分支结构处理步骤S12以及命令代码生 成步骤S13。在预处理指令解析步骤Sll中,从记录在源文件中的高级语言程序中抽出用于 指定处理块的相关关系(交叉关系)Wftpragma预处理指令。在分支结构处理步骤S12中, 基于处理块的相关关系(交叉关系)的指定(第一处理块组的指定)生成分支命令。在命 令代码生成步骤S13中,在生成除了由分支结构处理步骤S12生成的分支命令之外的命令 代码之后,配置命令代码以使具有相关关系(具有交叉关系)的命令代码连续。生成的命 令代码作为链接前的机器语言程序被记录在目标文件中。此外,分支结构处理步骤S12与命令代码生成步骤S13相当于范围确定步骤与配 置确定步骤,所述范围确定步骤根据包含在高级语言程序中的描述,确定机器语言程序的 一个程序部分为实施优化的处理范围,所述配置确定步骤确定位于处理范围内的命令代码 的配置位置。此外,为使具有相关关系的处理块(包含在第二处理块组中的处理块)连续, 根据分支命令进行排序,并进行最终的配置确定的处理(确定更加效率化的位置的处理) 将在后述的第二实施方式的图6的步骤S34中执行。连接部20执行连接步骤S21。在连接步骤S21中,对记录在目标文件2中的链接 前的机器语言程序实施链接处理。链接后的机器语言程序被记录在可执行文件3中。如上所示,在本实施方式所涉及的编译器中,如果输入的高级语言程序中包含有 用于指定上述的第一处理块组的描述,则紧接在该第一处理块组中所包含的任意处理块之后,并不配置包含在该第一处理块组中的其他处理块。充分理解高级语言程序的运行的程序开发者了解正在开发的程序中包含在第一 处理块组中的处理块。因此,在多数情况下,程序开发者能够正确指定作为第一处理块组的 处理块。程序开发者在编写高级语言程序时,例如如下所示指定第一处理块组。即,假设使 再生系处理与记录系处理在相互独立的运行模式下运行的情况。在这种情况下,当编写的 程序中包含有再生系处理所需的处理块与记录系处理所需的处理块时,程序开发者将再生 系所需的处理块与记录系所需的处理块指定为第一处理块组。本实施方式所涉及的编译器在包含在第一处理块组中的任意处理块(命令代码) 之后配置分支命令,然后,在紧接在分支命令之后或附近的位置上并不配置包含在第一处 理块组中的其他处理块(命令代码)。换言之,在包含在第一处理块组中的任意处理块(命 令代码)之后配置分支命令,然后,在紧接在分支命令之后或附近的位置上配置包含在第 二处理块组中的处理块(命令代码)。据此,能够抑制执行一系列的处理块组时易于发生的 高速缓存未命中,从而能够抑制因高速缓存未命中而引起的性能下降。(第二实施方式)参考图6 图8,对本发明的第二实施方式所涉及的基于编译器的程序优化方法 的执行例进行说明。此外,关于用于指定包含在高级语言程序中的处理块的相关关系(交 叉关系)的描述,与图4A所示的相同。在第一实施方式中,紧接在第一处理块组中所包含的任意命令代码(处理块)之 后,并不配置包含在第一处理块组中的其他命令代码(处理块),而在这里配置包含在第二 处理块组中的命令代码(处理块)。与此相对,在第二实施方式中,在主存储器上对这些包含在第一处理块组中的处 理块进行地址配置,以使包含在第一处理块组中的处理块被分别配置在高速缓冲存储器上 的同一地址。据此,因高速缓存未命中而引起的性能下降得到进一步抑制。为了计算出这种命令代码的配置位置,本实施方式所涉及的编译器基于包含在高 级语言程序中的描述,执行将机器语言程序的一部分确定为处理范围的处理,以及对位于 处理范围内的命令代码的配置位置进行确定的处理。下面参考图6,对本实施方式所涉及的编译器的结构进行说明。本实施方式所涉及 的编译器的整体结构与第一实施方式所涉及的编译器相同(参考图5)。但是,本实施方式 所涉及的编译器包括图6所示的连接部30以代替图5所示的连接部20。连接部30执行一 次连接步骤S31、范围确定步骤S32、地址重复检测步骤S33、配置确定步骤S34以及配置步 骤S35。另外,连接部30包括记录一次连接步骤S31的输出数据的一次可执行文件4和地 址匹配信息文件5。在一次连接步骤S31中,对记录在目标文件2中的机器语言程序执行链接处理。据 此,生成可执行的机器语言程序(链接后的机器语言程序)以及子程序和/或标签的地址 信息。可执行的机器语言程序被记录在一次可执行文件4中,地址信息被记录在地址匹配 信息文件5中。一次可执行文件4中还记录有在高级语言程序中对被指定为高优先级处理 的处理进行确定的信息。在范围确定步骤S32中,基于记录在一次可执行文件4中的内容,对处理块的相关 关系(交叉关系)进行解析。其结果是选择出相当于相互没有相关关系(没有交叉运行关系)的包含在第一处理块组中的处理块的命令代码,来作为处理对象。在地址重复检测步骤S33中,基于记录在地址匹配信息文件5中的内容,计算出包 含在第一处理块组中的多个命令代码在主存储器上的地址。而且,基于计算出的地址组以 及与高速缓冲存储器的结构相关的信息,从相当于包含在第一处理块组中的各个处理块的 命令代码组之中,检测出其在高速缓冲存储器内的存储位置互不重复的多个命令代码。存在高速缓冲存储器内的存储位置不重复的多个命令代码时,在配置确定步骤 S34中,确定命令代码的配置位置,以使上述多个命令代码被重复配置。在配置步骤S35中, 相当于第一处理块组的命令代码组被配置在由配置确定步骤S34确定出的位置上。参考图7和图8,对主存储器地址与高速缓冲存储器地址的对应关系(由地址重 复检测步骤S33使用)进行说明。在这里,作为例子,对利用两路组关联O々- 4 ·七^ 卜· 7 y〉工4 y 4 y )方式,行大小为32字节,总容量为8K字节的高速缓冲存储器(参 考图7)进行说明。如果设主存储器的地址宽度为32比特,则其中低位13比特与高速缓冲存储器的 地址相对应(参考图8)。高速缓冲存储器的地址被分为标签、“、地址的最低位比特 (1比特)、索引(7比特)以及偏移量(5比特)。标签地址的最低位比特用于指定两路中的 任意一个,索引用于指定行,偏移量用于指定行上的字节。相当于两个处理的命令代码的主存储器的地址之中,当标签地址的最低位比特加 上索引一共8比特都一致时,这两个命令代码在高速缓冲存储器内被重复配置。如此,在地 址重复检测步骤S33中,根据对主存储器地址的一部分是否一致的判断,能够判断出命令 代码的高速缓冲存储器内的存储位置是否重复。因此,根据本实施方式所涉及的编译器,通过在高速缓冲存储器内将相当于第一 处理块组的命令代码组配置为其地址的存储位置重复,能够抑制因高速缓存未命中而引起 的性能下降。此外,在本发明的第一、第二实施方式中,将在高级语言程序内参数为“开”的 #pragma预处理指令与参数为“关”的Spragma预处理指令之间所夹的部分指定为第一处理 块组(相互没有相关关系(没有交叉运行关系)的处理块的组)。这个步骤相当于用于指 定包含在高级语言程序中的第一范围的描述,即用于在机器语言程序之中选择第一范围的 程序部分作为处理范围的描述。此外,作为第一处理块组的指定方法也可以使用除此之外 的方法。以下,作为其他指定方法,对第一、第二其他指定方法进行说明。(第一其他指定方法)在各种高级语言程序之中,具有包括以下所示的第一描述的程序。即,第一描述为 用于从第一处理块组的范围之中,将虽然在第一处理块组的范围内,但是如果着眼于对构 成第一处理块组的多个处理块进一步微细地进行划分后的处理部分组,则被看做是具有相 关关系(具有交叉运行关系)的处理部分组抽出并指定的#pragma预处理指令。如果使用第一描述作为识别基准,则能够指定位于包含在高级语言程序中的第一 范围内的第二范围作为处理范围。换言之,能够将在机器语言程序中相当于从第一范围中 去除了第二范围的范围的程序部分指定为处理范围。(第二其他指定方法)另外,在各种高级语言程序之中,具有包括以下所示的第二、第三描述的程序。艮口,第二描述为用于指定第二处理块组(具有相关关系(具有交叉运行关系)的处理块组)的 Spragma预处理指令。第三描述为用于从第二处理块组的范围之中,将虽然在第二处理块组 的范围内,但是如果着眼于对构成第二处理块组的多个处理块进一步微细地进行划分后的 处理部分组,则被看做是没有相关关系(没有交叉运行关系)的处理部分组抽出并指定的 #pragma预处理指令。如果将上述第二、第三描述用于处理范围的识别基准,则能够对·在机器语言程序中相当于第一范围之外的范围的程序部分或者·在高级语言程序中位于第一范围内的第二范围进行指定。S卩,如果将上述第二、第三描述用于识别基准,则能够指定将去除了第二范围的第 一范围的部分设为范围之外的机器语言程序的程序部分为处理范围。上述本发明的编译器为用于使计算机执行第一、第二实施方式的优化方法的编译 器,本发明的记录介质为记录有用于使计算机执行第一、第二实施方式的优化方法的编译 器的计算机可读取记录介质,本发明的信息传输介质为用于经由因特网等传输用于使计算 机执行第一、第二实施方式的优化方法的编译器的信息传输介质。本发明的基于编译器的优化方法,由于能够廉价且容易地抑制因高速缓存未命中 而引起的性能下降,因此能够利用于将高级语言程序转换为机器语言程序的各种编译器。符号说明
1源文件
2目标文件
3可执行文件
4一次可执行文件
5地址匹配信息文件
10翻译部
20,30连接部
Sll预处理指令解析步骤
S12分支结构处理步骤
S13命令代码生成步骤
S21连接步骤
S31一次连接步骤
S32范围确定步骤
S33地址重复解析步骤
S34配置确定步骤
S35配置步骤
1权利要求
1.一种程序优化方法,由在将高级语言程序转换为机器语言程序时进行程序转换的编 译器执行,所述程序优化方法包括范围确定步骤,根据包含在所述高级语言程序中的描述,确定所述机器语言程序的任 意一个程序部分为实施程序优化的处理范围;以及配置确定步骤,确定位于所述处理范围内的命令代码的配置位置, 所述描述为用于指定所述高级语言程序所具有的多个处理块之间的相关关系的描述, 所述范围确定步骤在所述机器语言程序之中将相当于由所述描述指定了所述相关关 系的所述处理块的程序部分确定为所述处理范围,所述配置确定步骤根据由所述描述指定的所述相关关系,针对每个所述处理块,确定 位于所述处理范围内的命令代码的配置位置。
2.根据权利要求1所述的程序优化方法,所述配置确定步骤确定位于所述处理范围内 的命令代码的配置位置,以使所述描述中的描述顺序与所述机器语言程序中的所述命令代 码的配置顺序不同。
3.根据权利要求1所述的程序优化方法,所述描述进一步具有用于指定包含在所述高级语言程序中的第一范围的描述部分, 所述范围确定步骤将相当于所述第一范围的所述机器语言程序的程序部分确定为所 述处理范围。
4.根据权利要求3所述的程序优化方法,其特征在于,所述描述进一步具有用于指定位于所述第一范围内的第二范围的描述部分, 所述范围确定步骤将相当于从所述第一范围中去除了所述第二范围的范围区域的所 述机器语言程序的程序部分确定为所述处理范围。
5.根据权利要求1所述的程序优化方法,所述描述进一步具有用于指定包含在所述高级语言程序中的第一范围的描述部分, 所述范围确定步骤将相当于所述第一范围之外的范围的所述机器语言程序的程序部 分确定为所述处理范围。
6.根据权利要求5所述的基于编译器的优化方法,所述描述进一步具有用于指定位于所述第一范围内的第二范围的描述部分, 所述范围确定步骤将相当于从所述第一范围中去除了所述第二范围的范围区域之外 的范围的所述机器语言程序的程序部分确定为所述处理范围。
7.一种编译器,用于使计算机执行将高级语言程序转换为机器语言程序的处理以及程 序优化处理,所述程序优化处理包括范围确定步骤,根据包含在所述高级语言程序中的描述,确定所述机器语言程序的一 个程序部分为实施程序优化的处理范围;以及配置确定步骤,确定位于所述处理范围内的命令代码的配置位置, 所述描述为用于指定所述高级语言程序所具有的多个处理块之间的相关关系的描述, 所述范围确定步骤在所述机器语言程序之中将相当于由所述描述指定了所述相关关 系的所述处理块的程序部分确定为所述处理范围,所述配置确定步骤根据由所述描述指定的所述相关关系,针对每个所述处理块,确定位于所述处理范围内的命令代码的配置位置。
8.一种计算机可读取记录介质,记录有用于使计算机执行将高级语言程序转换为机器 语言程序的处理以及程序优化处理的编译器,所述程序优化处理包括范围确定步骤,根据包含在所述高级语言程序中的描述,确定所述机器语言程序的一 个程序部分为实施程序优化的处理范围;以及配置确定步骤,确定位于所述处理范围内的命令代码的配置位置, 所述描述为用于指定所述高级语言程序所具有的多个处理块之间的相关关系的描述, 所述范围确定步骤在所述机器语言程序之中将相当于由所述描述指定了所述相关关 系的所述处理块的程序部分确定为所述处理范围,所述配置确定步骤根据由所述描述指定的所述相关关系,针对每个所述处理块,确定 位于所述处理范围内的命令代码的配置位置。
9.一种信息传输介质,传输用于使计算机执行将高级语言程序转换为机器语言程序的 处理以及程序优化处理的编译器,所述程序优化处理包括范围确定步骤,根据包含在所述高级语言程序中的描述,确定所述机器语言程序的一 个程序部分为实施程序优化的处理范围;以及配置确定步骤,确定位于所述处理范围内的命令代码的配置位置, 所述描述为用于指定所述高级语言程序所具有的多个处理块之间的相关关系的描述, 所述范围确定步骤在所述机器语言程序之中将相当于由所述描述指定了所述相关关 系的所述处理块的程序部分确定为所述处理范围,所述配置确定步骤根据由所述描述指定的所述相关关系,针对每个所述处理块,确定 位于所述处理范围内的命令代码的配置位置。
全文摘要
一种程序优化方法,包括范围确定步骤,根据包含在高级语言程序中的描述,确定所述机器语言程序的一个程序部分为实施程序优化的处理范围;以及配置确定步骤,确定位于所述处理范围内的命令代码的配置位置。所述描述为用于指定所述高级语言程序所具有的多个处理块之间的相关关系的描述。所述范围确定步骤在所述机器语言程序之中将相当于由所述描述指定了所述相关关系的所述处理块的程序部分确定为所述处理范围。所述配置确定步骤根据由所述描述指定的所述相关关系,针对每个所述处理块,确定位于所述处理范围内的命令代码的配置位置。
文档编号G06F12/08GK102099786SQ20098012854
公开日2011年6月15日 申请日期2009年7月17日 优先权日2008年7月22日
发明者米津武纪 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1