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

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

Info

Publication number
CN103942082A
CN103942082A CN201410129958.0A CN201410129958A CN103942082A CN 103942082 A CN103942082 A CN 103942082A CN 201410129958 A CN201410129958 A CN 201410129958A CN 103942082 A CN103942082 A CN 103942082A
Authority
CN
China
Prior art keywords
instruction
load
access
instructions
program
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.)
Granted
Application number
CN201410129958.0A
Other languages
English (en)
Other versions
CN103942082B (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指令,那么访问使用-定义链找到它的定义指令,如果该指令和当前指令的访存地址具有别名关系,那么进入步骤⑶;如果该指令和当前指令的访存地址具有包含关系,那么进入步骤⑷;如果该指令和当前指令的访存地址相同,那么进入步骤⑸;否则进入步骤⑹; 
⑶.记录定义指令为op1,继续访问该指令的前继定义指令op2,根据别名信息,分别比较三条指令的基址寄存器、偏移量寄存器内容关系,并将当前的加载指令转换为相应形式的拷贝指令,然后进入步骤⑹;
⑷.如果前继定义指令为内存存储Store指令,将加载指令转化为相应的比特提取指令,然后进入步骤⑹;
⑸.删除加载指令,并插入拷贝指令,然后进入步骤⑹;
⑹.执行步骤⑵,直到程序所有的基本块处理完毕。
本发明采用上述技术方案所设计的一种消除冗余的内存访问操作的编译优化方法,是基于轻量的数据流分析方法,在代码生成阶段,通过特定的存储-加载指令序列特点,判断其中的加载指令是否冗余,对于冗余的Load指令,依据前继指令的特点,可以对其进行删除,或转换为代价较小的拷贝指令或者是比特位提取指令。本发明能够消除冗余的访存指令,大大减少程序的访存时间,提高程序性能,同时暴露了更多的程序优化机会,提高了程序性能。
附图说明
图1表示本发明一种消除冗余的内存访问操作的编译优化方法的流程图。
具体实施方式
下面结合附图和具体实施方式对本发明一种消除冗余的内存访问操作的编译优化方法进行详细的说明。
本发明一种消除冗余的内存访问操作的编译优化方法,参见图1,该方法用于别名信息不精确且访存采用Load/Store架构的系统中,是一种可以消除多余的加载指令的优化方法,该方法包括以下步骤:
⑴.以基本块为单位对程序进行简单的数据流分析,得到数据访问的使用-定义链,即U-D链;
⑵.以基本块为单位对指令链进行前向遍历,如果检测到内存加载Load指令,那么访问使用-定义链找到它的定义指令,如果该指令和当前指令的访存地址具有别名关系,且具有干涉关系,那么进入步骤⑶;如果该指令和当前指令的访存地址具有包含关系,那么进入步骤⑷;如果该指令和当前指令的访存地址相同,并且不会修改额外的机器状态位,那么进入步骤⑸;否则进入步骤⑹; 
⑶.记录干涉指令op1,继续访问该指令的前继定义指令op2(不限于内存存储或加载指令)。如果有精确的别名信息,则判断当前指令使用的是干涉指令op1结果还是前继定义指令op2结果,转化当前的加载指令为相应的拷贝指令;如果没有精确的别名信息,那么分别比较这三条指令的基址寄存器、偏移量寄存器的关系:如果相同,那么使用结果相同的寄存器号,并转化当前的加载指令为相应的拷贝指令;然后进入步骤⑹;
⑷.如果前继定义指令为内存存储Store指令,那么计算访存地址的偏移值,并将加载指令转化为相应的比特位提取指令,然后进入步骤⑹;
⑸.删除加载指令,并插入拷贝指令,将定义指令的目标寄存器作为源寄存器,加载指令的目标寄存器作为目标寄存器,然后进入步骤⑹.
⑹.执行步骤⑵,直到程序所有的基本块处理完毕。
本发明一种消除冗余的内存访问操作的编译优化方法,是基于轻量的数据流分析方法,在代码生成阶段,通过特定的存储-加载指令序列特点,判断其中的加载指令是否冗余,对于冗余的Load指令,依据前继指令的特点,可以对其进行删除,或转换为代价较小的拷贝指令或者是比特位提取指令。
以上实施例仅用于说明本发明的技术方案而非限制,尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,在不脱离本发明技术方案的精神和范围的情况下,其均应涵盖在本发明的保护范围当中。

Claims (1)

1.一种消除冗余的内存访问操作的编译优化方法,该方法用于别名信息不精确且访存采用Load/Store架构的系统中,其特征在于包括以下步骤:
⑴.以基本块为单位对程序进行简单的数据流分析,得到数据访问的使用-定义链;
⑵.以基本块为单位对指令链进行前向遍历,如果检测到内存加载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 true CN103942082A (zh) 2014-07-23
CN103942082B 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)

Cited By (5)

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

Citations (6)

* 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 中国科学院计算技术研究所 一种使用空闲寄存器类作为快速溢出空间的优化方法
US20100058042A1 (en) * 2008-08-28 2010-03-04 Howard Locker Techniques for Booting a Stateless Client
CN101963918A (zh) * 2010-10-26 2011-02-02 上海交通大学 实现cpu/gpu异构平台的虚拟执行环境的方法

Patent Citations (6)

* 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 中国科学院计算技术研究所 一种使用空闲寄存器类作为快速溢出空间的优化方法
US20100058042A1 (en) * 2008-08-28 2010-03-04 Howard Locker Techniques for Booting a Stateless Client
CN101963918A (zh) * 2010-10-26 2011-02-02 上海交通大学 实现cpu/gpu异构平台的虚拟执行环境的方法

Cited By (8)

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

Also Published As

Publication number Publication date
CN103942082B (zh) 2017-03-29

Similar Documents

Publication Publication Date Title
US8549468B2 (en) Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model
CN103942082A (zh) 一种消除冗余的内存访问操作的编译优化方法
US8839218B2 (en) Diagnosing alias violations in memory access commands in source code
CN108197027B (zh) 软件性能优化方法、可存储介质、计算机、计算机程序
CN111124479B (zh) 配置文件的解析方法、系统及电子设备
CN107515739B (zh) 提高代码执行性能的方法及装置
CN110780879B (zh) 一种基于智能编译技术的决策执行方法、装置、设备及介质
US20230315416A1 (en) Code translation method and apparatus, and device
CN115509904A (zh) 一种接口测试用例的断言生成方法及装置
US20170046140A1 (en) State recovery methods and apparatus for computing platforms
CN112527304B (zh) 基于异构平台的自适应节点融合编译优化方法
CN107408054A (zh) 用于通用计算图形处理单元中的语言嵌入式编程的流控制
CN105447285A (zh) 一种提高OpenCL硬件执行效率的方法
CN104049949A (zh) 一种面向bswap指令的窥孔优化方法
JP6103541B2 (ja) バイナリコードの実行を制御する装置及び方法
US10162728B2 (en) Method and device for monitoring the execution of a program code
JP2006023852A (ja) ソフトウェア検証モデル生成方法
CN102831004B (zh) 一种基于C*core处理器的优化编译方法及编译器
EP2181389A2 (en) Data processing with protection against soft errors
CN111367937B (zh) 一种数据处理方法和装置
US10671780B2 (en) Information processing device that executes simulation and a simulation method
CN103903287B (zh) 建筑楼宇cad图形的生成方法及装置
CN108846248B (zh) 一种应用建模及性能预测方法
CN111340175A (zh) 图重写的处理方法及装置、计算设备及可读介质
CN102902548A (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