CN104049949A - 一种面向bswap指令的窥孔优化方法 - Google Patents

一种面向bswap指令的窥孔优化方法 Download PDF

Info

Publication number
CN104049949A
CN104049949A CN201410236773.XA CN201410236773A CN104049949A CN 104049949 A CN104049949 A CN 104049949A CN 201410236773 A CN201410236773 A CN 201410236773A CN 104049949 A CN104049949 A CN 104049949A
Authority
CN
China
Prior art keywords
instruction
bswap
data
optimization method
instructions
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
CN201410236773.XA
Other languages
English (en)
Other versions
CN104049949B (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 CN201410236773.XA priority Critical patent/CN104049949B/zh
Publication of CN104049949A publication Critical patent/CN104049949A/zh
Application granted granted Critical
Publication of CN104049949B publication Critical patent/CN104049949B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明提出了一种面向BSWAP指令的窥孔优化方法,其使在代码生成阶段,通过分析BSWAP指令操作数的特殊性,判断该条BSWAP指令是否冗余,通过分析Load/Store指令的位置特点,判断相应的BSWAP指令是否冗余;对于冗余的BSWAP指令,设置删除标记位,同时对配对的BSWAP指令也设置相应的删除标记位。本发明通过删除冗余的BSWAP指令,大大提升了程序的执行效率,使程序的性能得到增强。

Description

一种面向BSWAP指令的窥孔优化方法
技术领域
本发明涉及计算机技术领域,具体涉及一种面向BSWAP指令的窥孔优化方法。
背景技术
程序数据在内存中的对齐方式和在寄存器中的对齐方式会存在不一致的情况,BSWAP指令被设计用来调整数据的字节对齐方式,从而保证程序数据的一致性,保障程序的正确运行。
BSWAP指令由编译器在代码生成阶段插入。当检测到一个内存访问指令时,编译器会在该条指令的前后分别插入两条BSWAP指令。然而编译器往往忽略了程序数据和内存访问指令所具有的特点,导致插入的BSWAP存在很大的冗余性,这会导致程序执行时间延长,严重影响程序性能。
发明内容
本发明所要解决的技术问题是如何消除编译器插入的冗余BSWAP指令,缩短程序执行时间,提高程序性能。
为解决上述技术问题,本发明所采取的技术方案是:一种面向BSWAP指令的窥孔优化方法,该方法用于寄存器数据的字节对齐方式和内存数据的字节对齐方式不一致的系统中,是能够消除多余BSWAP指令的优化方法,所述的优化方法包含以下步骤:
⑴.对程序进行数据流分析,得到数据访问使用-定义链;
⑵.头遍进行前向遍历,访问程序指令链:如果检测到内存存储指令,那么根据使用-定义链找到BSWAP的定义指令;如果该指令为数据初始化指令,那么进入步骤⑶;否则,如果该指令为内存加载指令,那么进入步骤⑷;否则进入步骤⑸;
⑶.如果初始化数据具有内存对称性,而且BSWAP指令没有多余的使用,那么该条BSWAP指令是多余的,标记BSWAP为可删除;
⑷.内存存储指令和内存加载指令之间的使用-定义链包含至少两条BSWAP指令,如果这两条BSWAP指令没有多余使用,那么标记BSWAP指令为可删除;
⑸.遍历下一条指令,重复步骤⑵-⑷直到该基本块的所有指令都遍历完毕,进入步骤⑹;
⑹.二遍进行后向遍历,如果遇到BSWAP指令标记为可删除,那么执行删除操作;
⑺.执行步骤⑴-⑹,直到程序的所有基本块处理完毕。
本发明基于轻量的数据流分析方法,在代码生成阶段,通过分析BSWAP指令操作数的特殊性,判断该条BSWAP指令是否冗余;通过分析Load/Store指令的位置特点,判断相应的BSWAP指令是否冗余。对于冗余的BSWAP指令,设置删除标记位,同时由于BSWAP指令总是成对出现的,还要找到配对的BSWAP指令,也设置相应的删除标记位。由于BSWAP指令总是Load/Store指令个数的两倍,删除冗余的BSWAP将大大提升程序执行效率。
本发明采用上述技术方案所设计的面向BSWAP指令的窥孔优化方法,大大消除了程序中冗余的BSWAP指令,同时暴露了更多的程序优化机会,提高了程序性能。
附图说明
图1表示本发明面向BSWAP指令的窥孔优化方法的流程图。
具体实施方式
下面结合附图对本发明面向BSWAP指令的窥孔优化方法作具体说明。
参见图1,本发明面向BSWAP指令的窥孔优化方法,该方法用于寄存器数据的字节对齐方式和内存数据的字节对齐方式不一致的系统中,是能够消除多余BSWAP指令的优化方法,所述的优化方法包含以下步骤:
⑴. 以基本块为单位对程序进行简单的数据流分析,得到数据访问的使用-定义链(U-D链),并记录每一个使用-定义链的使用次数;
⑵.以基本块为单位对指令链进行前向遍历:如果检测到内存存储Store指令,那么访问使用-定义链找到BSWAP的定义指令,如果该指令为数据初始化指令,那么进入步骤⑶;如果该指令为内存加载Load指令,那么进入步骤⑷;否则进入步骤⑸;
⑶.如果初始化数据具有内存对称性(即翻转前与翻转后数据值相同),同时BSWAP的使用-定义链上的每条指令的使用次数都为一,那么该条BSWAP指令时多余的,标记BSWAP为可删除;
⑷.Load指令和Store指令之间的使用-定义链包含至少两条BSWAP指令,如果这条定义-使用链上每条指令的使用次数都为一,那么这两条BSWAP指令是多余的,标记BSWAP指令为可删除;
⑸.遍历下一条指令,重复步骤⑵-⑷,直到该基本块的所有指令都遍历完毕,进入步骤⑹;
⑹.以基本块为单位对指令链进行后向遍历,如果遇到BSWAP指令标记为可删除,那么执行删除操作,更新使用-定义链,设置BSWAP指令的定义指令使用次数减一;
⑺.执行步骤⑴-⑹,直到程序的所有基本块处理完毕。
最后应说明的是,以上实施例仅用于说明本发明的技术方案而非限制。尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的保护范围当中。

Claims (1)

1.一种面向BSWAP指令的窥孔优化方法,其特征是该方法用于寄存器数据的字节对齐方式和内存数据的字节对齐方式不一致的系统中,是能够消除多余BSWAP指令的优化方法,所述的优化方法包含以下步骤:
⑴.对程序进行数据流分析,得到数据访问使用-定义链;
⑵.头遍进行前向遍历,访问程序指令链:如果检测到内存存储指令,那么根据使用-定义链找到BSWAP的定义指令;如果该指令为数据初始化指令,那么进入步骤⑶;否则,如果该指令为内存加载指令,那么进入步骤⑷;否则进入步骤⑸;
⑶.如果初始化数据具有内存对称性,而且BSWAP指令没有多余的使用,那么该条BSWAP指令是多余的,标记BSWAP为可删除;
⑷.内存存储指令和内存加载指令之间的使用-定义链包含至少两条BSWAP指令,如果这两条BSWAP指令没有多余使用,那么标记BSWAP指令为可删除;
⑸.遍历下一条指令,重复步骤⑵-⑷直到该基本块的所有指令都遍历完毕,进入步骤⑹;
⑹.二遍进行后向遍历,如果遇到BSWAP指令标记为可删除,那么执行删除操作;
⑺.执行步骤⑴-⑹,直到程序的所有基本块处理完毕。
CN201410236773.XA 2014-05-30 2014-05-30 一种面向bswap指令的窥孔优化方法 Expired - Fee Related CN104049949B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410236773.XA CN104049949B (zh) 2014-05-30 2014-05-30 一种面向bswap指令的窥孔优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410236773.XA CN104049949B (zh) 2014-05-30 2014-05-30 一种面向bswap指令的窥孔优化方法

Publications (2)

Publication Number Publication Date
CN104049949A true CN104049949A (zh) 2014-09-17
CN104049949B CN104049949B (zh) 2016-10-05

Family

ID=51502864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410236773.XA Expired - Fee Related CN104049949B (zh) 2014-05-30 2014-05-30 一种面向bswap指令的窥孔优化方法

Country Status (1)

Country Link
CN (1) CN104049949B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487839A (zh) * 2015-11-24 2016-04-13 无锡江南计算技术研究所 一种面向连续不对界向量数据访问的编译优化方法
CN108427558A (zh) * 2018-02-09 2018-08-21 芯海科技(深圳)股份有限公司 一种c编译器的窥孔优化方法
CN110874643A (zh) * 2019-11-08 2020-03-10 中科寒武纪科技股份有限公司 机器学习指令的转换方法及装置、板卡、主板、电子设备
CN112580033A (zh) * 2019-09-30 2021-03-30 奇安信安全技术(珠海)有限公司 恶意程序的对抗方法及装置、存储介质、计算机设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1270348A (zh) * 1998-10-21 2000-10-18 富士通株式会社 用于结构仿真的动态优化目标码翻译器和翻译方法
WO2004095264A2 (en) * 2003-04-22 2004-11-04 Transitive Limited Method and apparatus for performing interpreter optimizations during program code conversion
WO2008026731A1 (fr) * 2006-08-31 2008-03-06 Ipflex Inc. Procédé et système pour le montage d'un modèle de circuit sur un dispositif reconfigurable
CN101160564A (zh) * 2004-12-13 2008-04-09 英特尔公司 用于实现有双端序能力的编译器的方法和装置
CN101763242A (zh) * 2010-01-04 2010-06-30 上海交通大学 二进制翻译中的字节序调整方法
US7904887B2 (en) * 2006-02-16 2011-03-08 International Business Machines Corporation Learning and cache management in software defined contexts

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1270348A (zh) * 1998-10-21 2000-10-18 富士通株式会社 用于结构仿真的动态优化目标码翻译器和翻译方法
WO2004095264A2 (en) * 2003-04-22 2004-11-04 Transitive Limited Method and apparatus for performing interpreter optimizations during program code conversion
CN101160564A (zh) * 2004-12-13 2008-04-09 英特尔公司 用于实现有双端序能力的编译器的方法和装置
US7904887B2 (en) * 2006-02-16 2011-03-08 International Business Machines Corporation Learning and cache management in software defined contexts
WO2008026731A1 (fr) * 2006-08-31 2008-03-06 Ipflex Inc. Procédé et système pour le montage d'un modèle de circuit sur un dispositif reconfigurable
CN101763242A (zh) * 2010-01-04 2010-06-30 上海交通大学 二进制翻译中的字节序调整方法

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 无锡江南计算技术研究所 一种面向连续不对界向量数据访问的编译优化方法
CN108427558A (zh) * 2018-02-09 2018-08-21 芯海科技(深圳)股份有限公司 一种c编译器的窥孔优化方法
CN112580033A (zh) * 2019-09-30 2021-03-30 奇安信安全技术(珠海)有限公司 恶意程序的对抗方法及装置、存储介质、计算机设备
CN112580033B (zh) * 2019-09-30 2023-07-04 奇安信安全技术(珠海)有限公司 恶意程序的对抗方法及装置、存储介质、计算机设备
CN110874643A (zh) * 2019-11-08 2020-03-10 中科寒武纪科技股份有限公司 机器学习指令的转换方法及装置、板卡、主板、电子设备
CN110874643B (zh) * 2019-11-08 2021-01-12 安徽寒武纪信息科技有限公司 机器学习指令的转换方法及装置、板卡、主板、电子设备
CN112667241A (zh) * 2019-11-08 2021-04-16 安徽寒武纪信息科技有限公司 机器学习指令的转换方法及装置、板卡、主板、电子设备
CN112667241B (zh) * 2019-11-08 2023-09-29 安徽寒武纪信息科技有限公司 机器学习指令的转换方法及装置、板卡、主板、电子设备

Also Published As

Publication number Publication date
CN104049949B (zh) 2016-10-05

Similar Documents

Publication Publication Date Title
JP6280121B2 (ja) 状態機械エンジンにおける命令挿入
US7249350B2 (en) Optimized translation of scalar type SIMD instructions into non-scalar SIMD instructions
CN105335137A (zh) 用于处理源文件的方法和装置
WO2016041401A1 (zh) 向缓存中写入数据的方法及装置
CN104049949A (zh) 一种面向bswap指令的窥孔优化方法
CN108491228B (zh) 一种二进制漏洞代码克隆检测方法及系统
US11941534B2 (en) Genome sequence alignment system and method
US20170293536A1 (en) Database journaling method and apparatus
CN103365885A (zh) 用于数据库查询优化的方法和系统
WO2016026328A1 (zh) 一种信息处理方法、装置及计算机存储介质
CN104317850A (zh) 数据处理方法和装置
US9563536B1 (en) Performance neutral isolation of runtime discrepancies in binary code
CN104317723B (zh) 一种驱动程序运行信息的跟踪方法及系统
CN103942082B (zh) 一种消除冗余的内存访问操作的编译优化方法
US9460243B2 (en) Selective importance sampling
US20150074624A1 (en) Enhanced Case-Splitting Based Property Checking
US20160232081A1 (en) Determining a valid input for an unknown binary module
CN107885527A (zh) 一种测试系统的代码修改方法及装置
US20130125086A1 (en) Software architecture by untangling undesired code level dependencies using code refactoring
CN103970792A (zh) 一种基于索引进行文件比对的方法和装置
US9021426B2 (en) Streamlining hardware initialization code
US9684749B2 (en) Pipeline depth exploration in a register transfer level design description of an electronic circuit
CN105718617B (zh) 用于Matlab自动测试的Bus结构体反向自动建模方法
CN105653954A (zh) 一种检测恶意代码的方法及装置
CN103577170A (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161005