一种基于代数演算的中间代码优化系统的制作方法

文档序号:11864469阅读:325来源:国知局

本发明涉及形式化语义领域,尤其涉及基于代数演算的中间代码优化系统。



背景技术:

嵌入式系统的硬件往往根据具体应用而定制,为了获得更多的软件支持,通常需要编写专用的编译器以完成高级语言到具体的目标平台代码的转换,并同时满足嵌入式系统对高性能、高可靠性、低功耗等要求。不同目标平台拥有不同的特性,开发目标平台专用的编译器往往成本太高。本发明提出了基于代数演算的中间代码系统,根据可由用户定制的优化策略,对中间代码进行优化,生成高效的目标平台机器码。



技术实现要素:

本发明提出了基于代数演算的中间代码优化系统,所述系统包括:

高级语言转换单元,用于将输入的源代码、其他形式的中间语言转换成为所述优化系统使用的中间语言(该中间语言是系统内部约定好的程序语义表示语言,它应该具备两种重要的性质:易于生成,且能够被轻松地翻译为目标机器上的语言),并将输出作为代数优化单元的输入。具体转换过程与编译器前端工作过程类似,对输入的源代码、其他形式的中间代码依次进行词法分析、语法分析,生成抽象语法树(抽象语法树也是一种中间表示),然后将抽象语法树转化成需要优化的中间语言(即规范型)表示形式。

代数优化单元,用于对所述高级语言转换单元输出的规范型,使用优化策略进行优化。代数优化单元中的优化策略库包含了一系列的优化策略(如简化规则中的冗余消除策略),优化策略规定了程序优化的方向。比如冗余消除策略,消除中间表示中的公共子表达式、循环不变表达式和部分冗余表达式。优化器根据优化策略对程序的中间表示进行优化。

优化策略定制单元,允许用户提供目标平台硬件特性,定制特别的优化策略,以便于生成高效的中间代码,加速编译器后端的编译速度。第一,不同的目标机器平台拥有不同的硬件特性,第二,不同的程序对优化的需求不同,对诸如并发性、实时性等性质要求不一,为生成高效的可执行代码,需要特殊的优化策略来指导优化过程。基于以上两个原因,系统提供优化策略定制接口,用户可以根据实际情况,定制优化策略。系统提供优化选项,由用户选择是否需要该优化,生成定制策略,存入策略库。

目标代码生成单元,由优化过的中间代码生成目标平台的可执行机器码。优化器会产生优化后的程序中间表示,目标代码生成单元以优化后的中间表示为输入,生成可执行的目标平台机器码。运行过程与编译器后端工作过程类似。

本发明提出的所述基于代数演算的中间代码优化系统中,所述高级语言转换单元包括支持语言库、高级语言转换器。所述支持语言库包括所有支持语言的转换规则,分别定义了支持语言到中间语言的转换规则。所述高级语言转换器,用于将输入语言根据支持语言库转换为中间语言代数规范型。

本发明提出的所述基于代数演算的中间代码优化系统中,所述代数优化单元包括优化策略库、优化器、优化策略定制单元。所述优化策略库包含:一系列策略规则,如等价性规则,用于证明程序的等价性,或对程序进行等价变形;简化规则,侧重于简化程序的结构,转化过程把一些复杂的算子消除掉,使得程序语法更为简单,从而更方便对程序行为进行分析;效率规则,将程序的架构考虑在内,可以应用代数规则转化使得程序的形式更贴近于底层实现。所述优化策略定制单元,接收用户输入的平台特性、优化指标等特征,将上述特征转化为优化策略,用于所述优化器。

本发明提出的所述基于代数演算的中间代码优化系统中,所述目标代码生成单元,用于将优化过的中间代码转化为目标平台可执行机器码。

本发明的有益效果包括:

本发明基于形式化代数语义,所有的输入代码都可以在代数规则的支持下进行等价变化。代数规则的合理性,保证了转换的正确性。

本发明根据不同的优化策略,可以对中间语言进行不同程度的优化,保证本系统广泛的应用范围。

本发明提供半自动化、半自动化的程序中间代码优化。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1是本发明基于代数演算的中间代码优化系统框架图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

根据本发明的实施方式,提出一种基于代数演算的中间代码优化系统,所述系统包括:高级语言转换单元,用于将输入的源代码、其他形式的中间语言转换成为所述优化系统使用的中间语言,并将输出作为代数优化单元的输入;代数优化单元,用于向用户提供优化策略定制,允许用户提供目标平台硬件特性,定制特别的优化策略,使用优化策略对所述高级语言转换单元输出的中间语言进行优化,得到经过优化的中间代码;优化策略用户定制单元,允许用户提供目标平台硬件特性,定制特别的优化策略,以便于生成高效的中间代码,加速编译器后端的编译速度;目标代码生成单元,用于将经过优化的中间代码生成目标平台的可执行机器码。

本发明提出的所述基于代数演算的中间代码优化系统中,所述高级语言转换单元包括支持语言库、高级语言转换器。所述支持语言库包括Java、C++等高级语言到中间语言的转换规则。所述高级语言转换器,用于将输入语言根据支持语言库转换为中间语言。

本发明提出的所述基于代数演算的中间代码优化系统中,所述代数优化单元包括优化策略库、优化器、优化策略定制单元。优化策略库包括一系列代数规则(通过代数等式、不等式形式来描述),如等价性规则,用于证明程序的等价性,或对程序进行等价变形;简化规则,侧重于简化程序的结构,转化过程把一些复杂的算子消除掉,使得程序语法更为简单,从而更方便对程序行为进行分析;效率规则,将程序的架构考虑在内,可以应用代数规则转化使得程序的形式更贴近于底层实现。所述优化策略定制单元,用于接收用户输入的平台特性、优化指标等特征,将上述特征转化为优化策略,用于所述优化器。

本发明提出的所述基于代数演算的中间代码优化系统中,所述目标代码生成单元,用于将优化过的中间代码转化为目标平台可执行机器码。

下面具体讲述本发明所述基于代数演算的中间代码优化系统。

实施例1

本实施例以应用本发明基于代数演算的中间代码优化系统对LLVM中间语言的优化为例。

LLVM是一个支持多种高级语言、多种目标平台,多阶段优化的编译器架构,遵循了标准的编译器流程准则,分为高级语言前端、中间代码优化器与后端目标代码生成器三个部分。LLVM前端首先将源程序转换为LLVMIR程序,经过一系列的控制流、数据流分析后对LLVM IR程序进行优化,再根据具体的目标处理器平台生成对应的目标代码。

LLVM IR有三种形式:编译器IR、写入文件的字节码IR,以及作为汇编语言的IR。这三种表现形式是等价的,它是LLVM中间代码优化段的不同表现形式。将LLVM IR作为高级语言转换单元的输入,将其转换为本发明所述的基于代数演算的中间代码优化系统使用的中间语言程序,作为代数优化单元的输入。

通过对控制流与数据流的分析,目标处理平台的特征等信息收集,我们将提出程序转化的定向规则,称为程序转换规则,从而有效地支撑LLVM IR程序的优化,提高程序质量,最终形成一套针对LLVM IR程序优化的代数演算系统,然后利用策略定制单元将代数演算系统存入优化策略库。

优化器可以利用优化策略对中间代码进行标准的标量优化、循环优化以及进程间优化等。

目标代码生成单元可以根据代数优化单元优化过的中间代码,来生成可在目标平台上高效运行的机器码。

下面详细介绍使用本发明所述系统对LLVM IR程序进行优化。

首先,将LLVM IR程序输入到本发明所述系统的高级语言转换单元,本发明所述系统会将其转换为一种中间语言表示形式。

然后,使用本发明所述系统的策略定制单元为LLVM IR制定优化策略,优化策略通过以下两种方式得到:

1)对LLVM IR程序进行控制流和数据流分析,总结出优化目标(如消除复杂算子、消除循环冗余等)并转换为代数规则。对程序进行控制流分析可以得到程序的控制流结构,得到循环结构后可以通过把循环转换为有限条件选择来消除循环。此处得到的优化规则可以为代数等式的形式,等式左边是优化前的结构,等式右边是优化后的结构。对程序进行到达定值数据流分析,可以得到程序中每个点处的变量值,因此可以对程序进行合并已知量的优化操作。此时优化规则表现为代数等式的形式,等式左侧位变量组成的表达式,而等式右侧为左侧表达式当前的值,此优化规则可减少公共表达式计算的次数。

2)对LLVM IR程序进行大量的仿真实验,分析实验结果得出优化目标并转换为代数规则。不同程序的应用场景不同,利用程序仿真可以模拟一些运行场景,收集程序运行时信息(CUP使用率、I/O次数、是否可并行执行等),制定优化方向,使得优化更符合当前待优化程序的特点。

得到优化策略以后,优化器会自动的应用优化策略到中间语言表示的程序上,最终达到优化的目的。

最后,目标代码生成单元可以根据代数优化单元优化过的中间代码,来生成可在目标平台上高效运行的机器码。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1