CN106126312B - 一种基于代数演算的中间代码优化系统 - Google Patents

一种基于代数演算的中间代码优化系统 Download PDF

Info

Publication number
CN106126312B
CN106126312B CN201610459128.3A CN201610459128A CN106126312B CN 106126312 B CN106126312 B CN 106126312B CN 201610459128 A CN201610459128 A CN 201610459128A CN 106126312 B CN106126312 B CN 106126312B
Authority
CN
China
Prior art keywords
optimization
language
program
intermediate code
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610459128.3A
Other languages
English (en)
Other versions
CN106126312A (zh
Inventor
黄滟鸿
卜祥兴
史建琦
何积丰
李昂
方徽星
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
East China Normal University
Original Assignee
East China Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by East China Normal University filed Critical East China Normal University
Priority to CN201610459128.3A priority Critical patent/CN106126312B/zh
Publication of CN106126312A publication Critical patent/CN106126312A/zh
Application granted granted Critical
Publication of CN106126312B publication Critical patent/CN106126312B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于代数演算的中间代码优化系统,所述系统包括高级语言转换单元、代数优化单元及目标代码生成单元。其中高级语言转换单元用于完成对输入代码到规范型中间代码的转换;代数优化单元用于完成对所述规范性中间代码的优化;目标代码生成单元用于生成目标代码。本发明所述基于代数演算的中间代码优化系统通过给定的优化策略,对转换成规范型的中间代码进行优化。优化策略可以由用户自定义,提高优化效率;优化过程则由所述系统自动进行,实现自动化中间代码优化。

Description

一种基于代数演算的中间代码优化系统
技术领域
本发明涉及形式化语义领域,尤其涉及基于代数演算的中间代码优化系统。
背景技术
嵌入式系统的硬件往往根据具体应用而定制,为了获得更多的软件支持,通常需要编写专用的编译器以完成高级语言到具体的目标平台代码的转换,并同时满足嵌入式系统对高性能、高可靠性、低功耗等要求。不同目标平台拥有不同的特性,开发目标平台专用的编译器往往成本太高。本发明提出了基于代数演算的中间代码系统,根据可由用户定制的优化策略,对中间代码进行优化,生成高效的目标平台机器码。
发明内容
本发明提出了基于代数演算的中间代码优化系统,所述系统包括:
高级语言转换单元,用于将输入的源代码、其他形式的中间语言转换成为所述优化系统使用的中间语言(该中间语言是系统内部约定好的程序语义表示语言,它应该具备两种重要的性质:易于生成,且能够被轻松地翻译为目标机器上的语言),并将输出作为代数优化单元的输入。具体转换过程与编译器前端工作过程类似,对输入的源代码、其他形式的中间代码依次进行词法分析、语法分析,生成抽象语法树(抽象语法树也是一种中间表示),然后将抽象语法树转化成需要优化的中间语言(即规范型)表示形式。
代数优化单元,用于对所述高级语言转换单元输出的规范型,使用优化策略进行优化。代数优化单元中的优化策略库包含了一系列的优化策略(如简化规则中的冗余消除策略),优化策略规定了程序优化的方向。比如冗余消除策略,消除中间表示中的公共子表达式、循环不变表达式和部分冗余表达式。优化器根据优化策略对程序的中间表示进行优化。
优化策略定制单元,允许用户提供目标平台硬件特性,定制特别的优化策略,以便于生成高效的中间代码,加速编译器后端的编译速度。第一,不同的目标机器平台拥有不同的硬件特性,第二,不同的程序对优化的需求不同,对诸如并发性、实时性等性质要求不一,为生成高效的可执行代码,需要特殊的优化策略来指导优化过程。基于以上两个原因,系统提供优化策略定制接口,用户可以根据实际情况,定制优化策略。系统提供优化选项,由用户选择是否需要该优化,生成定制策略,存入策略库。
目标代码生成单元,由优化过的中间代码生成目标平台的可执行机器码。优化器会产生优化后的程序中间表示,目标代码生成单元以优化后的中间表示为输入,生成可执行的目标平台机器码。运行过程与编译器后端工作过程类似。
本发明提出的所述基于代数演算的中间代码优化系统中,所述高级语言转换单元包括支持语言库、高级语言转换器。所述支持语言库包括所有支持语言的转换规则,分别定义了支持语言到中间语言的转换规则。所述高级语言转换器,用于将输入语言根据支持语言库转换为中间语言代数规范型。
本发明提出的所述基于代数演算的中间代码优化系统中,所述代数优化单元包括优化策略库、优化器、优化策略定制单元。所述优化策略库包含:一系列策略规则,如等价性规则,用于证明程序的等价性,或对程序进行等价变形;简化规则,侧重于简化程序的结构,转化过程把一些复杂的算子消除掉,使得程序语法更为简单,从而更方便对程序行为进行分析;效率规则,将程序的架构考虑在内,可以应用代数规则转化使得程序的形式更贴近于底层实现。所述优化策略定制单元,接收用户输入的平台特性、优化指标等特征,将上述特征转化为优化策略,用于所述优化器。
本发明提出的所述基于代数演算的中间代码优化系统中,所述目标代码生成单元,用于将优化过的中间代码转化为目标平台可执行机器码。
本发明的有益效果包括:
本发明基于形式化代数语义,所有的输入代码都可以在代数规则的支持下进行等价变化。代数规则的合理性,保证了转换的正确性。
本发明根据不同的优化策略,可以对中间语言进行不同程度的优化,保证本系统广泛的应用范围。
本发明提供半自动化、半自动化的程序中间代码优化。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图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次数、是否可并行执行等),制定优化方向,使得优化更符合当前待优化程序的特点。
得到优化策略以后,优化器会自动的应用优化策略到中间语言表示的程序上,最终达到优化的目的。
最后,目标代码生成单元可以根据代数优化单元优化过的中间代码,来生成可在目标平台上高效运行的机器码。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (8)

1.一种基于代数演算的中间代码优化系统,包括:
高级语言转换单元,用于将输入的源代码、其他形式的中间语言转换成为所述优化系统使用的中间语言,并将输出作为代数优化单元的输入,所述其他形式的中间语言指与所述优化系统所使用的中间语言不同的中间语言;
代数优化单元,用于向用户提供优化策略定制,允许用户提供目标平台硬件特性,定制特别的优化策略,使用优化策略对所述高级语言转换单元输出的中间语言进行优化,得到经过优化的中间代码;
目标代码生成单元,用于将经过优化的中间代码生成目标平台的可执行机器码,其特征在于,
优化策略通过以下方式得到:
对LLVM IR程序进行控制流和数据流分析,总结出优化目标并转换为代数规则;对程序进行控制流分析得到程序的控制流结构,得到循环结构后通过把循环转换为有限条件选择来消除循环;
其中,优化规则为代数等式的形式,等式左边是优化前的结构,等式右边是优化后的结构;对程序进行到达定值数据流分析,得到程序中每个点处的变量值,因此可以对程序进行合并已知量的优化操作;
此时优化规则表现为代数等式的形式,等式左侧为变量组成的表达式,而等式右侧为左侧表达式当前的值,此优化规则可减少公共表达式计算的次数。
2.如权利要求1所述的基于代数演算的中间代码优化系统,其特征在于,所述高级语言转换单元包括支持语言库和高级语言转换器。
3.如权利要求2所述的基于代数演算的中间代码优化系统,其特征在于,所述支持语言库包括高级语言到中间语言的转换规则,所述高级语言包括: Java、C++或C语言。
4.如权利要求2所述的基于代数演算的中间代码优化系统,其特征在于,所述高级语言转换器,用于将输入语言根据支持语言库转换所述优化系统使用的中间语言。
5.如权利要求1所述的基于代数演算的中间代码优化系统,其特征在于,所述代数优化单元包括优化策略库、优化器以及优化策略定制单元。
6.如权利要求5所述的基于代数演算的中间代码优化系统,其特征在于,所述的优化策略库包括一系列策略规则,所述策略规则包括:等价性规则,用于证明程序的等价性,或对程序进行等价变形;简化规则,侧重于简化程序的结构,转化过程把一些复杂的算子消除掉,使得程序语法更为简单,从而更方便对程序行为进行分析;效率规则,将程序的架构考虑在内,可以应用代数规则转化使得程序的形式更贴近于底层实现。
7.如权利要求5所述的基于代数演算的中间代码优化系统,其特征在于,所述优化器用于对代数规范型进行优化,其应用优化策略库中的简化规则,化简中间代码的表示。
8.如权利要求5所述的基于代数演算的中间代码优化系统,其特征在于,所述优化策略定制单元包括:策略生成器,用于生成用户定制策略。
CN201610459128.3A 2016-06-22 2016-06-22 一种基于代数演算的中间代码优化系统 Active CN106126312B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610459128.3A CN106126312B (zh) 2016-06-22 2016-06-22 一种基于代数演算的中间代码优化系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610459128.3A CN106126312B (zh) 2016-06-22 2016-06-22 一种基于代数演算的中间代码优化系统

Publications (2)

Publication Number Publication Date
CN106126312A CN106126312A (zh) 2016-11-16
CN106126312B true CN106126312B (zh) 2019-05-14

Family

ID=57269205

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610459128.3A Active CN106126312B (zh) 2016-06-22 2016-06-22 一种基于代数演算的中间代码优化系统

Country Status (1)

Country Link
CN (1) CN106126312B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111091612B (zh) * 2019-10-09 2023-06-02 武汉凌久微电子有限公司 一种抽象目标码架构的着色语言机器码生成方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9244665B1 (en) * 2014-07-17 2016-01-26 Google Inc. Optimized execution of dynamic languages

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"LLVM编译系统结构分析与后端移植";董峰;《中国优秀硕士学位论文全文数据库 信息科技辑》;20070815(第2期);第2.4节,图5-8

Also Published As

Publication number Publication date
CN106126312A (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
EP3465428B1 (en) Sample driven profile guided optimization with precise correlation
Hendren et al. Designing the McCAT compiler based on a family of structured intermediate representations
US6286133B1 (en) Method and apparatus for strategic compilation of source programs into two or more target languages
Börger et al. Correctness of compiling Occam to Transputer code
Puschner et al. The T-CREST approach of compiler and WCET-analysis integration
CN1971518A (zh) 编译系统、调试系统及程序开发系统
Amadio et al. Certified complexity (cerco)
Vazou et al. Theorem proving for all: equational reasoning in liquid Haskell (functional pearl)
US8732679B2 (en) Loop transformation for computer compiler optimization
Leinenbach et al. Pervasive compiler verification–from verified programs to verified systems
Riener et al. metaSMT: focus on your application and not on solver integration
CN101344855A (zh) 一种基于编译的跟踪代码中特定对象的控制方法及装置
Kartsaklis et al. HERCULES: A pattern driven code transformation system
CN106126312B (zh) 一种基于代数演算的中间代码优化系统
CN106126311B (zh) 一种基于代数演算的中间代码优化方法
Consel From a program family to a domain-specific language
Prokesch et al. Towards automated generation of time-predictable code
Oliveira et al. A tactic language for refinement of state-rich concurrent specifications
Li Validated compilation through logic
Fourtounis et al. Modular polymorphic defunctionalization
Li et al. Compilation as rewriting in higher order logic
Stewart et al. Snårkl: Somewhat practical, pretty much declarative verifiable computing in haskell
Legay et al. Statistical model checking of llvm code
CN118092887B (zh) 一种Wasm指令集生成方法、装置、终端及存储介质
Kabir Automatic construction of Java programs from functional program specifications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant