CN103942082B - 一种消除冗余的内存访问操作的编译优化方法 - Google Patents

一种消除冗余的内存访问操作的编译优化方法 Download PDF

Info

Publication number
CN103942082B
CN103942082B CN201410129958.0A CN201410129958A CN103942082B CN 103942082 B CN103942082 B CN 103942082B CN 201410129958 A CN201410129958 A CN 201410129958A CN 103942082 B CN103942082 B CN 103942082B
Authority
CN
China
Prior art keywords
instruction
access
redundancy
program
definition
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.)
Expired - Fee Related
Application number
CN201410129958.0A
Other languages
English (en)
Other versions
CN103942082A (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.)
Nanyang Institute of Technology
Original Assignee
Nanyang Institute of Technology
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 Nanyang Institute of Technology filed Critical Nanyang Institute of Technology
Priority to CN201410129958.0A priority Critical patent/CN103942082B/zh
Publication of CN103942082A publication Critical patent/CN103942082A/zh
Application granted granted Critical
Publication of CN103942082B publication Critical patent/CN103942082B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种消除冗余的内存访问操作的编译优化方法,用于别名信息不精确且访存采用Load/Store架构的系统中,是基于轻量的数据流分析方法,在代码生成阶段,通过特定的存储‑加载指令序列特点,判断其中的加载指令是否冗余,对于冗余的Load指令,依据前继指令的特点,可以对其进行删除,或转换为代价较小的拷贝指令或者是比特位提取指令。本发明能够消除冗余的访存指令,大大减少程序的访存时间,提高程序性能,同时暴露了更多的程序优化机会,提高了程序性能。

Description

一种消除冗余的内存访问操作的编译优化方法
技术领域
本发明涉及计算机技术领域,一种消除冗余的内存访问操作的编译优化方法。
背景技术
计算机访存指令将存放在内存中的数据加载到物理寄存器中,它的执行时间往往是一条普通指令的十几至几十倍。编译器在为程序生成二进制代码时,总是尽量产生最少的访存指令,这会减少程序的访存时间,提升程序的执行效率。但随着别名和指针在现代程序语言中的广泛使用,编译器在执行访存优化时,往往缺乏足够的别名信息。为了保证二进制代码的正确性,编译器往往会基于保守的别名分析,产生较多的访存指令,这严重增加了程序的访存时间,降低了程序的性能。
发明内容
本发明所要解决的技术问题是提出一种消除冗余的内存访问操作的编译优化方法,利用该编译优化方法,可消除冗余的访存指令,减少程序的访存时间,从而提高程序的执行性能。
为解决上述技术问题,本发明所采取的技术方案是:一种消除冗余的内存访问操作的编译优化方法,该方法用于别名信息不精确且访存采用Load/Store架构的系统中,包括以下步骤:
⑴.以基本块为单位对程序进行简单的数据流分析,得到数据访问的使用-定义链;
⑵.以基本块为单位对指令链进行前向遍历,如果检测到内存加载Load指令,那么访问使用-定义链找到它的定义指令,如果该指令和当前指令的访存地址具有别名关系,那么进入步骤⑶;如果该指令和当前指令的访存地址具有包含关系,那么进入步骤⑷;如果该指令和当前指令的访存地址相同,那么进入步骤⑸;如果未检测到内存加载Load指令时,进入步骤⑹;
⑶.记录定义指令为op1,继续访问该指令的前继定义指令op2,根据别名信息,分别比较三条指令的基址寄存器、偏移量寄存器内容关系,并将当前的加载指令转换为相应形式的拷贝指令,然后进入步骤⑹;
⑷.如果前继定义指令为内存存储Store指令,将加载指令转化为相应的比特提取指令,然后进入步骤⑹;
⑸.删除加载指令,并插入拷贝指令,然后进入步骤⑹;
⑹.执行步骤⑵,直到程序所有的基本块处理完毕。
本发明采用上述技术方案所设计的一种消除冗余的内存访问操作的编译优化方法,是基于轻量的数据流分析方法,在代码生成阶段,通过特定的存储-加载指令序列特点,判断其中的加载指令是否冗余,对于冗余的Load指令,依据前继指令的特点,可以对其进行删除,或转换为代价较小的拷贝指令或者是比特位提取指令。本发明能够消除冗余的访存指令,大大减少程序的访存时间,提高程序性能,同时暴露了更多的程序优化机会,提高了程序性能。
附图说明
图1表示本发明一种消除冗余的内存访问操作的编译优化方法的流程图。
具体实施方式
下面结合附图和具体实施方式对本发明一种消除冗余的内存访问操作的编译优化方法进行详细的说明。
本发明一种消除冗余的内存访问操作的编译优化方法,参见图1,该方法用于别名信息不精确且访存采用Load/Store架构的系统中,是一种可以消除多余的加载指令的优化方法,该方法包括以下步骤:
⑴.以基本块为单位对程序进行简单的数据流分析,得到数据访问的使用-定义链,即U-D链;
⑵.以基本块为单位对指令链进行前向遍历,如果检测到内存加载Load指令,那么访问使用-定义链找到它的定义指令,如果该指令和当前指令的访存地址具有别名关系,且具有干涉关系,那么进入步骤⑶;如果该指令和当前指令的访存地址具有包含关系,那么进入步骤⑷;如果该指令和当前指令的访存地址相同,并且不会修改额外的机器状态位,那么进入步骤⑸;如果未检测到内存加载Load指令时,进入步骤⑹;
⑶.记录干涉指令op1,继续访问该指令的前继定义指令op2(不限于内存存储或加载指令)。如果有精确的别名信息,则判断当前指令使用的是干涉指令op1结果还是前继定义指令op2结果,转化当前的加载指令为相应的拷贝指令;如果没有精确的别名信息,那么分别比较这三条指令的基址寄存器、偏移量寄存器的关系:如果相同,那么使用结果相同的寄存器号,并转化当前的加载指令为相应的拷贝指令;然后进入步骤⑹;
⑷.如果前继定义指令为内存存储Store指令,那么计算访存地址的偏移值,并将加载指令转化为相应的比特位提取指令,然后进入步骤⑹;
⑸.删除加载指令,并插入拷贝指令,将定义指令的目标寄存器作为源寄存器,加载指令的目标寄存器作为目标寄存器,然后进入步骤⑹.
⑹.执行步骤⑵,直到程序所有的基本块处理完毕。
本发明一种消除冗余的内存访问操作的编译优化方法,是基于轻量的数据流分析方法,在代码生成阶段,通过特定的存储-加载指令序列特点,判断其中的加载指令是否冗余,对于冗余的Load指令,依据前继指令的特点,可以对其进行删除,或转换为代价较小的拷贝指令或者是比特位提取指令。
以上实施例仅用于说明本发明的技术方案而非限制,尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,在不脱离本发明技术方案的精神和范围的情况下,其均应涵盖在本发明的保护范围当中。

Claims (1)

1.一种消除冗余的内存访问操作的编译优化方法,该方法用于别名信息不精确且访存采用Load/Store架构的系统中,其特征在于包括以下步骤:
⑴.以基本块为单位对程序进行简单的数据流分析,得到数据访问的使用-定义链;
⑵.以基本块为单位对指令链进行前向遍历,如果检测到内存加载Load指令,那么访问使用-定义链找到它的定义指令,如果该指令和当前指令的访存地址具有别名关系,那么进入步骤⑶;如果该指令和当前指令的访存地址具有包含关系,那么进入步骤⑷;如果该指令和当前指令的访存地址相同,那么进入步骤⑸;如果未检测到内存加载Load指令时,进入步骤⑹;
⑶.记录定义指令为op1,继续访问该指令的前继定义指令op2,根据别名信息,分别比较三条指令的基址寄存器、偏移量寄存器内容关系,并将当前的加载指令转换为相应形式的拷贝指令,然后进入步骤⑹;
⑷.如果前继定义指令为内存存储Store指令,将加载指令转化为相应的比特提取指令,然后进入步骤⑹;
⑸.删除加载指令,并插入拷贝指令,然后进入步骤⑹;
⑹.执行步骤⑵,直到程序所有的基本块处理完毕。
CN201410129958.0A 2014-04-02 2014-04-02 一种消除冗余的内存访问操作的编译优化方法 Expired - Fee Related CN103942082B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410129958.0A CN103942082B (zh) 2014-04-02 2014-04-02 一种消除冗余的内存访问操作的编译优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410129958.0A CN103942082B (zh) 2014-04-02 2014-04-02 一种消除冗余的内存访问操作的编译优化方法

Publications (2)

Publication Number Publication Date
CN103942082A CN103942082A (zh) 2014-07-23
CN103942082B true CN103942082B (zh) 2017-03-29

Family

ID=51189758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410129958.0A Expired - Fee Related CN103942082B (zh) 2014-04-02 2014-04-02 一种消除冗余的内存访问操作的编译优化方法

Country Status (1)

Country Link
CN (1) CN103942082B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487839A (zh) * 2015-11-24 2016-04-13 无锡江南计算技术研究所 一种面向连续不对界向量数据访问的编译优化方法
CN109753307B (zh) * 2017-11-03 2020-08-11 北京思朗科技有限责任公司 指令存储方法
CN110098816A (zh) * 2019-05-08 2019-08-06 南阳理工学院 一种窄支撑架高品质因数的压电谐振器
CN112631610B (zh) * 2020-11-30 2022-04-26 上海交通大学 一种针对粗粒度可重构结构的数据重用消除访存冲突方法
CN112860266B (zh) * 2021-04-07 2022-03-18 南京大学 一种基于汇编表征的智能化二进制编译信息推断方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1877530A (zh) * 2005-06-10 2006-12-13 中国科学院计算技术研究所 一种针对受限制的索引寻址模式的偏移量分配优化方法
CN1892603A (zh) * 2005-07-08 2007-01-10 中国科学院计算技术研究所 一种基于组合并算法的偏移量分配优化方法
CN1952897A (zh) * 2005-10-18 2007-04-25 中国科学院计算技术研究所 一种基于数据流分析的访存合并优化方法
CN101216774A (zh) * 2008-01-03 2008-07-09 中国科学院计算技术研究所 一种使用空闲寄存器类作为快速溢出空间的优化方法
CN101963918A (zh) * 2010-10-26 2011-02-02 上海交通大学 实现cpu/gpu异构平台的虚拟执行环境的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055893B2 (en) * 2008-08-28 2011-11-08 Lenovo (Singapore) Pte. Ltd. Techniques for booting a stateless client

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1877530A (zh) * 2005-06-10 2006-12-13 中国科学院计算技术研究所 一种针对受限制的索引寻址模式的偏移量分配优化方法
CN1892603A (zh) * 2005-07-08 2007-01-10 中国科学院计算技术研究所 一种基于组合并算法的偏移量分配优化方法
CN1952897A (zh) * 2005-10-18 2007-04-25 中国科学院计算技术研究所 一种基于数据流分析的访存合并优化方法
CN101216774A (zh) * 2008-01-03 2008-07-09 中国科学院计算技术研究所 一种使用空闲寄存器类作为快速溢出空间的优化方法
CN101963918A (zh) * 2010-10-26 2011-02-02 上海交通大学 实现cpu/gpu异构平台的虚拟执行环境的方法

Also Published As

Publication number Publication date
CN103942082A (zh) 2014-07-23

Similar Documents

Publication Publication Date Title
CN103942082B (zh) 一种消除冗余的内存访问操作的编译优化方法
TW200606709A (en) System and method for validating a memory file that links speculative results of load operations to register values
CN102830975A (zh) 一种汇编语言到高级语言的代码转换方法和装置
CN102902906B (zh) 微处理器指令集验证方法
CN108874438A (zh) 补丁生成方法、装置、电子设备及计算机程序产品
CN106547520B (zh) 一种代码路径分析方法及装置
CN111124479B (zh) 配置文件的解析方法、系统及电子设备
CN104375875B (zh) 用于应用程序的编译优化的方法以及编译器
CN107832059A (zh) 一种基于Makefile的代码静态分析方法和装置
CN109299785A (zh) 一种机器学习模型的实现方法及装置
CN107783763A (zh) 一种应用程序生成方法、装置、服务器和可读存储介质
CN106446064A (zh) 一种数据转换方法及装置
CN113031954A (zh) 代码编译方法、装置、电子设备、存储介质及异构系统
CN107340995A (zh) 一种牵引控制应用软件开发系统
CN106919403B (zh) 云环境下基于Java字节码的多粒度代码克隆检测方法
CN104049949A (zh) 一种面向bswap指令的窥孔优化方法
CN105786465A (zh) 一种脚本语言执行方法及装置
JP2016029554A (ja) 計算装置、計算方法、および計算プログラム
JP2018084952A (ja) 自動翻訳パターン学習装置、自動翻訳の前処理装置、及びコンピュータプログラム
CN111340175B (zh) 图重写的处理方法及装置、计算设备及可读介质
CN113050948B (zh) 动态库优化方法、装置、设备及存储介质
KR20200067044A (ko) 악성 파일 탐지 방법 및 장치
US10108405B2 (en) Compiling apparatus and compiling method
US6934941B2 (en) Compiler for generating risc object code whereby operations on bit variables written in source code are executed by processing based on bit judgement operations to thereby reduce the amount of object code
CN112015426A (zh) 一种代码管理方法、装置及设备

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170329

CF01 Termination of patent right due to non-payment of annual fee