CN104049949A - 一种面向bswap指令的窥孔优化方法 - Google Patents
一种面向bswap指令的窥孔优化方法 Download PDFInfo
- 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
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指令是否冗余;通过分析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指令标记为可删除,那么执行删除操作;
⑺.执行步骤⑴-⑹,直到程序的所有基本块处理完毕。
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)
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)
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 |
-
2014
- 2014-05-30 CN CN201410236773.XA patent/CN104049949B/zh not_active Expired - Fee Related
Patent Citations (6)
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)
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 |