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

文档序号:6548149阅读:545来源:国知局
一种面向bswap指令的窥孔优化方法
【专利摘要】本发明提出了一种面向BSWAP指令的窥孔优化方法,其使在代码生成阶段,通过分析BSWAP指令操作数的特殊性,判断该条BSWAP指令是否冗余,通过分析Load/Store指令的位置特点,判断相应的BSWAP指令是否冗余;对于冗余的BSWAP指令,设置删除标记位,同时对配对的BSWAP指令也设置相应的删除标记位。本发明通过删除冗余的BSWAP指令,大大提升了程序的执行效率,使程序的性能得到增强。
【专利说明】 —种面向BSWAP指令的窥孔优化方法

【技术领域】
[0001]本发明涉及计算机【技术领域】,具体涉及一种面向BSWAP指令的窥孔优化方法。

【背景技术】
[0002]程序数据在内存中的对齐方式和在寄存器中的对齐方式会存在不一致的情况,BSffAP指令被设计用来调整数据的字节对齐方式,从而保证程序数据的一致性,保障程序的正确运行。
[0003]BSWAP指令由编译器在代码生成阶段插入。当检测到一个内存访问指令时,编译器会在该条指令的前后分别插入两条BSWAP指令。然而编译器往往忽略了程序数据和内存访问指令所具有的特点,导致插入的BSWAP存在很大的冗余性,这会导致程序执行时间延长,严重影响程序性能。


【发明内容】

[0004]本发明所要解决的技术问题是如何消除编译器插入的冗余BSWAP指令,缩短程序执行时间,提闻程序性能。
[0005]为解决上述技术问题,本发明所采取的技术方案是:一种面向BSWAP指令的窥孔优化方法,该方法用于寄存器数据的字节对齐方式和内存数据的字节对齐方式不一致的系统中,是能够消除多余BSWAP指令的优化方法,所述的优化方法包含以下步骤:
⑴.对程序进行数据流分析,得到数据访问使用-定义链;
(2).头遍进行前向遍历,访问程序指令链:如果检测到内存存储指令,那么根据使用-定义链找到BSWAP的定义指令;如果该指令为数据初始化指令,那么进入步骤⑶;否贝U,如果该指令为内存加载指令,那么进入步骤⑷;否则进入步骤(5);
(3).如果初始化数据具有内存对称性,而且BSWAP指令没有多余的使用,那么该条BSffAP指令是多余的,标记BSWAP为可删除;
⑷.内存存储指令和内存加载指令之间的使用-定义链包含至少两条BSWAP指令,如果这两条BSWAP指令没有多余使用,那么标记BSWAP指令为可删除;
(5).遍历下一条指令,重复步骤⑵-⑷直到该基本块的所有指令都遍历完毕,进入步骤
[6];
(6).二遍进行后向遍历,如果遇到BSWAP指令标记为可删除,那么执行删除操作;
(7).执行步骤⑴-(6),直到程序的所有基本块处理完毕。
[0006]本发明基于轻量的数据流分析方法,在代码生成阶段,通过分析BSWAP指令操作数的特殊性,判断该条BSWAP指令是否冗余;通过分析Load/Store指令的位置特点,判断相应的BSWAP指令是否冗余。对于冗余的BSWAP指令,设置删除标记位,同时由于BSWAP指令总是成对出现的,还要找到配对的BSWAP指令,也设置相应的删除标记位。由于BSWAP指令总是Load/Store指令个数的两倍,删除冗余的BSWAP将大大提升程序执行效率。
[0007]本发明采用上述技术方案所设计的面向BSWAP指令的窥孔优化方法,大大消除了程序中冗余的BSWAP指令,同时暴露了更多的程序优化机会,提高了程序性能。

【专利附图】

【附图说明】
[0008]图1表示本发明面向BSWAP指令的窥孔优化方法的流程图。

【具体实施方式】
[0009]下面结合附图对本发明面向BSWAP指令的窥孔优化方法作具体说明。
[0010]参见图1,本发明面向BSWAP指令的窥孔优化方法,该方法用于寄存器数据的字节对齐方式和内存数据的字节对齐方式不一致的系统中,是能够消除多余BSWAP指令的优化方法,所述的优化方法包含以下步骤:
(1).以基本块为单位对程序进行简单的数据流分析,得到数据访问的使用-定义链(U-D链),并记录每一个使用-定义链的使用次数;
(2).以基本块为单位对指令链进行前向遍历:如果检测到内存存储Store指令,那么访问使用-定义链找到BSWAP的定义指令,如果该指令为数据初始化指令,那么进入步骤⑶;如果该指令为内存加载Load指令,那么进入步骤⑷;否则进入步骤(5);
(3).如果初始化数据具有内存对称性(即翻转前与翻转后数据值相同),同时BSWAP的使用-定义链上的每条指令的使用次数都为一,那么该条BSWAP指令时多余的,标记BSWAP为可删除;
⑷.Load指令和Store指令之间的使用-定义链包含至少两条BSWAP指令,如果这条定义-使用链上每条指令的使用次数都为一,那么这两条BSWAP指令是多余的,标记BSWAP指令为可删除;
(5).遍历下一条指令,重复步骤⑵-⑷,直到该基本块的所有指令都遍历完毕,进入步骤(6);
(6).以基本块为单位对指令链进行后向遍历,如果遇到BSWAP指令标记为可删除,那么执行删除操作,更新使用-定义链,设置BSWAP指令的定义指令使用次数减一;
(7).执行步骤⑴-(6),直到程序的所有基本块处理完毕。
[0011]最后应说明的是,以上实施例仅用于说明本发明的技术方案而非限制。尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的保护范围当中。
【权利要求】
1.一种面向BSWAP指令的窥孔优化方法,其特征是该方法用于寄存器数据的字节对齐方式和内存数据的字节对齐方式不一致的系统中,是能够消除多余BSWAP指令的优化方法,所述的优化方法包含以下步骤: ⑴.对程序进行数据流分析,得到数据访问使用-定义链; (2).头遍进行前向遍历,访问程序指令链:如果检测到内存存储指令,那么根据使用-定义链找到BSWAP的定义指令;如果该指令为数据初始化指令,那么进入步骤⑶;否贝U,如果该指令为内存加载指令,那么进入步骤⑷;否则进入步骤(5); (3).如果初始化数据具有内存对称性,而且BSWAP指令没有多余的使用,那么该条BSffAP指令是多余的,标记BSWAP为可删除; ⑷.内存存储指令和内存加载指令之间的使用-定义链包含至少两条BSWAP指令,如果这两条BSWAP指令没有多余使用,那么标记BSWAP指令为可删除; (5).遍历下一条指令,重复步骤⑵-⑷直到该基本块的所有指令都遍历完毕,进入步骤(6); (6).二遍进行后向遍历,如果遇到BSWAP指令标记为可删除,那么执行删除操作; (7).执行步骤⑴-(6),直到程序的所有基本块处理完毕。
【文档编号】G06F9/30GK104049949SQ201410236773
【公开日】2014年9月17日 申请日期:2014年5月30日 优先权日:2014年5月30日
【发明者】刘尚争, 郭奇青, 杨磊 申请人:南阳理工学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1