一种编译器后端指令选择学习系统及具有该系统的编译器和指令选择方法技术方案

技术编号:21033434 阅读:29 留言:0更新日期:2019-05-04 05:08
本发明专利技术公开了一种编译器后端指令选择学习系统及具有该系统的编译器和指令选择方法。该编译器后端指令选择学习系统包括存储所有可能的中间指令的存储模块、存储候选汇编指令片段表的存储模块、指令选择训练学习模块以及训练完成后的训练学习模型存储模块;该具有后端指令选择学习系统的编译器是在编译器后端的指令选择模块中增加了上述的后端指令选择学习系统。通过本发明专利技术的编译器后端指令选择学习系统可自动学习到中间指令与汇编指令的最优对应关系,避免了传统方案中的大量的人为手动工作。通过本发明专利技术的编译器后端指令选择学习系统,编译器后端不再硬编码这种对应关系,而是自动导入学得的模型,基于学得模型自动推导中间指令所对应的最优汇编代码。这种灵活替换机制也会使得交叉编译器更容易实现。

A Compiler Backend Instruction Selection Learning System and a Compiler and Instruction Selection Method with the System

【技术实现步骤摘要】
一种编译器后端指令选择学习系统及具有该系统的编译器和指令选择方法
本专利技术涉及编译器后端
,特别是一种编译器后端指令选择学习系统及具有该系统的编译器和指令选择方法。
技术介绍
如图1,经典的编译器在架构上分为前端,优化器与后端三个层次。其中,后端又分为指令选择,指令调度和寄存器这个阶段。在传统的编译器中,指令选择是由编译器开发者手动确定的:编译器开发者手动确定中间指令(IR)到汇编指令(ASM)的对应关系,并在编译器的后端内采用硬编码(Hardcode)方式把这种对应关系固化到代码里边。这种方案的弊端在于:1.编译器开发者需要手动确定中间指令(IR)到汇编指令(ASM)的对应关系,由于一个IR可以对应多种汇编指令片段,选择最优汇编指令的调优的过程需要耗费很多人力。2.中间指令(IR)到汇编指令(ASM)的最优对应关系被硬编码(Hardcode)方式固化到代码里边,这导致很难灵活适配新的中间或汇编指令片段。
技术实现思路
本专利技术的目的在于提供一种编译器后端指令选择学习系统及具有该系统的编译器和指令选择方法,主要解决上述现有编译器的后端指令选择是由编译器开发者手动确定所存在的弊端。实现了如下具体的专利技术目的:1、通过“编译器后端指令选择学习系统”自动学习到中间指令(IR)与汇编指令(ASM)的最优对应关系,避免了传统方案中的大量的人为工作。通过“编译器后端指令选择学习系统”,编译器后端不再硬编码(Hardcode)这种对应关系,而是自动导入学得的模型,基于学得模型自动推导中间指令(IR)所对应的最优汇编代码(ASM)。2、基于“编译器后端指令选择学习系统”的编译器构架。3、基于“编译器后端指令选择学习系统”的指令选择方法。为解决上述技术问题,本专利技术采用如下技术方案:一种编译器后端指令选择学习系统,其特征在于:它包括存储所有可能的中间指令的存储模块、存储候选汇编指令片段表的存储模块、指令选择训练学习模块以及训练完成后的训练学习模型存储模块;指令选择学习系统的训练过程包括如下三个环节:A、中间代码的输入;B、目标汇编指令的选择;C、模型的输出与存储。一种具有后端指令选择学习系统的编译器,其特征在于:它是在编译器后端的指令选择模块中增加了如上所述的后端指令选择学习系统,该后端指令选择学习系统,具有存储所有可能的中间指令的存储模块、存储候选汇编指令片段表的存储模块、指令选择训练学习模块以及训练完成后的训练学习模型存储模块。一种基于上述编译器的后端指令选择方法,其特征在于:指令选择过程中,智能指令选择模块首先加载之前已经训练好的模型到内存,然后根据从编译器前级模块传过来的中间代码实时选择对应的最优汇编代码;当编译器为本机编译目标代码时,智能指令选择模块从模型库中选择对应与本机CPU的模型进行加载;当编译器进行交叉编译时,智能指令选择模块从模型库中选择交叉编译目标CPU对应的模型进行加载。藉由上述技术方案,本专利技术具有如下优点:1、通过本专利技术的编译器后端指令选择学习系统可自动学习到中间指令(IR)与汇编指令(ASM)的最优对应关系,避免了传统方案中的大量的人为手动工作。2、通过本专利技术的编译器后端指令选择学习系统,编译器后端不再硬编码(Hardcode)这种对应关系,而是自动导入学得的模型,基于学得模型自动推导中间指令(IR)所对应的最优汇编代码(ASM)。这种灵活替换机制也会使得交叉编译器更容易实现。另外,升级指令选择的优化方案可以通过简单升级为新的模型即可。3、提供了一种具有后端指令选择学习系统的编译器。4、提供了一种具有后端指令选择学习系统的编译器指令选择方法。附图说明图1是经典的编译器的架构图。图2是本专利技术编译器后端指令选择学习系统的构架图。图3是本专利技术具有后端指令选择学习系统的编译器的构架图。图4是本专利技术基于上述编译器的后端指令选择方法的流程示意图。图5是本专利技术中候选汇编指令片段表的结构示意图。具体实施方式本专利技术公开了一种编译器后端指令选择学习系统,如图2所示,它包括存储所有可能的中间指令(IR)的存储模块、存储候选汇编指令片段表的存储模块、指令选择训练学习模块以及训练完成后的训练学习模型存储模块。指令选择学习系统的训练过程包括如下三个环节:(1)中间代码(IR)的输入;(2)目标汇编指令的选择;(3)模型的输出与存储。本专利技术还公开了一种具有后端指令选择学习系统的编译器,如图3所示:它是在编译器后端的指令选择模块中增加了后端指令选择学习系统,该后端指令选择学习系统,具有如上图2所述的存储所有可能的中间指令(IR)的存储模块、存储候选汇编指令片段表的存储模块、指令选择训练学习模块以及训练完成后的训练学习模型存储模块。本专利技术进一步公开了一种基于上述编译器的后端指令选择方法,如图4所示:指令选择过程中,智能指令选择模块首先加载之前已经训练好的模型到内存,然后根据从编译器前级模块传过来的中间代码(IR)实时选择对应的最优汇编代码(ASM)。当编译器为本机编译目标代码时,智能指令选择模块从模型库中选择对应与本机CPU的模型进行加载。当编译器进行交叉编译时,智能指令选择模块从模型库中选择交叉编译目标CPU对应的模型进行加载。本专利技术使用时,整个系统分为指令选择的模型训练与指令选择过程两个阶段。1、指令选择的模型训练如图2所示,在训练模型时,需要提供一个候选汇编指令片段表和所有可能的中间指令(IR)。在训练中为了调高训练效率,把候选汇编指令片段表加载到内存中供反复查询。训练完成后,模型存储到磁盘,以便后面使用。1.1候选汇编指令片段表如图5所示,候选汇编指令表共有三部分构成,全索引表,组索引表和汇编指令内容表。(1)全索引表每项包含一个指向对应汇编代码片段的起始地址,这个地址在32位系统上占用4字节,在64位系统上占用8字节。每个汇编指令(ASM)片段都对应全索引表中的一项。汇编指令代码片段和全索引项一一对应。编译器后端指令选择过程中,基于模型和输入中间指令实时推导出最优汇编指令片段的全局索引,然后查找全局索引变以获得指向最优汇编指令片段指针,进而获取汇编指令片段。(2)组索引表在进行指令选择时,每个IR可以对应多种选择,我们把一个IR所对应的所有汇编片段成为一个汇编代码片段组。每种中间指令(IR)对应汇编代码片段组中的一项,每项都包含指向汇编代码片段组链表的头部节点的起始地址,这个地址在32位系统上占用4字节,在64位系统上占用8字节。从头部节点开始,每项都包含一个尾部指针,该指针指向该组内下一项汇编代码片段。(3)汇编代码片段内容所有汇编代码片段按照固定格式连续存放。每一项都包含一个头部,汇编代码编码和尾部三部分。其中,头部内包含该片段的全索引序号,汇编编码的所占内存的字节数;尾部包含指向组内下一项的指针,如果为最后一项,则该指针为空。其中,头部内包含该片段的全索引序号用于在基于组链表训练中定位该指令片段的全索引。1.2指令选择学习系统的训练过程该过程包含以下三个环节:(1)中间指令(IR)的输入训练人员提供所需训练的中间指令(IR)表示,输入给指令选择学习系统。经过训练后的系统将能够针对这些中间指令(IR)给出最优的汇编指令片段,对于其他未经训练的中间指令(IR)无法给出最优的汇编指令片段。(2)目标汇编指令本文档来自技高网...

【技术保护点】
1.一种编译器后端指令选择学习系统,其特征在于:它包括存储所有可能的中间指令的存储模块、存储候选汇编指令片段表的存储模块、指令选择训练学习模块以及训练完成后的训练学习模型存储模块;指令选择学习系统的训练过程包括如下三个环节:A、中间代码的输入;B、目标汇编指令的选择;C、模型的输出与存储。

【技术特征摘要】
1.一种编译器后端指令选择学习系统,其特征在于:它包括存储所有可能的中间指令的存储模块、存储候选汇编指令片段表的存储模块、指令选择训练学习模块以及训练完成后的训练学习模型存储模块;指令选择学习系统的训练过程包括如下三个环节:A、中间代码的输入;B、目标汇编指令的选择;C、模型的输出与存储。2.一种具有后端指令选择学习系统的编译器,其特征在于:它是在编译器后端的指令选择模块中增加了如权利要求1所述的后端指令选择学习系统,该后端指令选择学习系统,具有存储所有可能的中间指令的...

【专利技术属性】
技术研发人员:王全福张光胜
申请(专利权)人:天翼电子商务有限公司
类型:发明
国别省市:北京,11

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

1