《一种面向BSWAP指令的窥孔优化方法.pdf》由会员分享,可在线阅读,更多相关《一种面向BSWAP指令的窥孔优化方法.pdf(5页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104049949 A (43)申请公布日 2014.09.17 C N 1 0 4 0 4 9 9 4 9 A (21)申请号 201410236773.X (22)申请日 2014.05.30 G06F 9/30(2006.01) (71)申请人南阳理工学院 地址 473000 河南省南阳市长江路80号 (72)发明人刘尚争 郭奇青 杨磊 (74)专利代理机构郑州红元帅专利代理事务所 (普通合伙) 41117 代理人秦舜生 (54) 发明名称 一种面向BSWAP指令的窥孔优化方法 (57) 摘要 本发明提出了一种面向BSWAP指令的窥孔优 化方法,其使在代码生成阶。
2、段,通过分析BSWAP指 令操作数的特殊性,判断该条BSWAP指令是否冗 余,通过分析Load/Store指令的位置特点,判断 相应的BSWAP指令是否冗余;对于冗余的BSWAP 指令,设置删除标记位,同时对配对的BSWAP指令 也设置相应的删除标记位。本发明通过删除冗余 的BSWAP指令,大大提升了程序的执行效率,使程 序的性能得到增强。 (51)Int.Cl. 权利要求书1页 说明书2页 附图1页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书2页 附图1页 (10)申请公布号 CN 104049949 A CN 104049949 A 1/1页 2 1。
3、.一种面向BSWAP指令的窥孔优化方法,其特征是该方法用于寄存器数据的字节对 齐方式和内存数据的字节对齐方式不一致的系统中,是能够消除多余BSWAP指令的优化方 法,所述的优化方法包含以下步骤: .对程序进行数据流分析,得到数据访问使用-定义链; .头遍进行前向遍历,访问程序指令链:如果检测到内存存储指令,那么根据使 用-定义链找到BSWAP的定义指令;如果该指令为数据初始化指令,那么进入步骤;否 则,如果该指令为内存加载指令,那么进入步骤;否则进入步骤; .如果初始化数据具有内存对称性,而且BSWAP指令没有多余的使用,那么该条 BSWAP指令是多余的,标记BSWAP为可删除; .内存存储指。
4、令和内存加载指令之间的使用-定义链包含至少两条BSWAP指令,如 果这两条BSWAP指令没有多余使用,那么标记BSWAP指令为可删除; .遍历下一条指令,重复步骤-直到该基本块的所有指令都遍历完毕,进入步骤 ; .二遍进行后向遍历,如果遇到BSWAP指令标记为可删除,那么执行删除操作; .执行步骤-,直到程序的所有基本块处理完毕。 权 利 要 求 书CN 104049949 A 1/2页 3 一种面向 BSWAP 指令的窥孔优化方法 技术领域 0001 本发明涉及计算机技术领域,具体涉及一种面向BSWAP指令的窥孔优化方法。 背景技术 0002 程序数据在内存中的对齐方式和在寄存器中的对齐方式。
5、会存在不一致的情况, BSWAP指令被设计用来调整数据的字节对齐方式,从而保证程序数据的一致性,保障程序的 正确运行。 0003 BSWAP指令由编译器在代码生成阶段插入。当检测到一个内存访问指令时,编译器 会在该条指令的前后分别插入两条BSWAP指令。然而编译器往往忽略了程序数据和内存访 问指令所具有的特点,导致插入的BSWAP存在很大的冗余性,这会导致程序执行时间延长, 严重影响程序性能。 发明内容 0004 本发明所要解决的技术问题是如何消除编译器插入的冗余BSWAP指令,缩短程序 执行时间,提高程序性能。 0005 为解决上述技术问题,本发明所采取的技术方案是:一种面向BSWAP指令的。
6、窥孔 优化方法,该方法用于寄存器数据的字节对齐方式和内存数据的字节对齐方式不一致的系 统中,是能够消除多余BSWAP指令的优化方法,所述的优化方法包含以下步骤: .对程序进行数据流分析,得到数据访问使用-定义链; .头遍进行前向遍历,访问程序指令链:如果检测到内存存储指令,那么根据使 用-定义链找到BSWAP的定义指令;如果该指令为数据初始化指令,那么进入步骤;否 则,如果该指令为内存加载指令,那么进入步骤;否则进入步骤; .如果初始化数据具有内存对称性,而且BSWAP指令没有多余的使用,那么该条 BSWAP指令是多余的,标记BSWAP为可删除; .内存存储指令和内存加载指令之间的使用-定义链。
7、包含至少两条BSWAP指令,如 果这两条BSWAP指令没有多余使用,那么标记BSWAP指令为可删除; .遍历下一条指令,重复步骤-直到该基本块的所有指令都遍历完毕,进入步骤 ; .二遍进行后向遍历,如果遇到BSWAP指令标记为可删除,那么执行删除操作; .执行步骤-,直到程序的所有基本块处理完毕。 0006 本发明基于轻量的数据流分析方法,在代码生成阶段,通过分析BSWAP指令操作 数的特殊性,判断该条BSWAP指令是否冗余;通过分析Load/Store指令的位置特点,判断相 应的BSWAP指令是否冗余。对于冗余的BSWAP指令,设置删除标记位,同时由于BSWAP指令 总是成对出现的,还要找到。
8、配对的BSWAP指令,也设置相应的删除标记位。由于BSWAP指令 总是Load/Store指令个数的两倍,删除冗余的BSWAP将大大提升程序执行效率。 0007 本发明采用上述技术方案所设计的面向BSWAP指令的窥孔优化方法,大大消除了 说 明 书CN 104049949 A 2/2页 4 程序中冗余的BSWAP指令,同时暴露了更多的程序优化机会,提高了程序性能。 附图说明 0008 图1表示本发明面向BSWAP指令的窥孔优化方法的流程图。 具体实施方式 0009 下面结合附图对本发明面向BSWAP指令的窥孔优化方法作具体说明。 0010 参见图1,本发明面向BSWAP指令的窥孔优化方法,该方。
9、法用于寄存器数据的字节 对齐方式和内存数据的字节对齐方式不一致的系统中,是能够消除多余BSWAP指令的优化 方法,所述的优化方法包含以下步骤: . 以基本块为单位对程序进行简单的数据流分析,得到数据访问的使用-定义链 (U-D链),并记录每一个使用-定义链的使用次数; .以基本块为单位对指令链进行前向遍历:如果检测到内存存储Store指令,那么访 问使用-定义链找到BSWAP的定义指令,如果该指令为数据初始化指令,那么进入步骤; 如果该指令为内存加载Load指令,那么进入步骤;否则进入步骤; .如果初始化数据具有内存对称性(即翻转前与翻转后数据值相同),同时BSWAP的 使用-定义链上的每条指。
10、令的使用次数都为一,那么该条BSWAP指令时多余的,标记BSWAP 为可删除; .Load指令和Store指令之间的使用-定义链包含至少两条BSWAP指令,如果这条 定义-使用链上每条指令的使用次数都为一,那么这两条BSWAP指令是多余的,标记BSWAP 指令为可删除; .遍历下一条指令,重复步骤-,直到该基本块的所有指令都遍历完毕,进入步 骤; .以基本块为单位对指令链进行后向遍历,如果遇到BSWAP指令标记为可删除,那么 执行删除操作,更新使用-定义链,设置BSWAP指令的定义指令使用次数减一; .执行步骤-,直到程序的所有基本块处理完毕。 0011 最后应说明的是,以上实施例仅用于说明本发明的技术方案而非限制。尽管参照 实例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进 行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的保 护范围当中。 说 明 书CN 104049949 A 1/1页 5 图1 说 明 书 附 图CN 104049949 A 。