[发明专利]一种汇编代码的编写方法、装置、系统和可读存储介质在审
申请号: | 201810209383.1 | 申请日: | 2018-03-14 |
公开(公告)号: | CN108304218A | 公开(公告)日: | 2018-07-20 |
发明(设计)人: | 曹代 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 罗满 |
地址: | 450018 河南省郑州市*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 汇编代码 指令 计算机可读存储介质 读取 可读存储介质 指令流水线 编写装置 目标指令 内存访问 指令调度 指令执行 向量化 指令集 重排 备选 语句 预设 源码 耗时 消耗 优化 | ||
本发明公开了汇编代码的编写方法,首先通过选取备选指令中指令耗时最短的指令或指令集,可以消耗最少的CPU周期实现程序需要实现的功能;而后再按照预设的指令调度规则对目标指令进行重排,可以确保每条指令流水线的正常执行,提升计算速度;最后向量化程序中无数据依赖的语句,可以进一步提升指令执行速度;且当程序进行内存访问时,一次至少读取四个连续的数据,能够提高cache命中率,进一步提高计算速度。本发明提供的汇编代码的编写方法,能够获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能,进而提升计算速度,减少计算时间。此外,本发明还公开了一种汇编代码的编写装置、系统和一种计算机可读存储介质,效果如上。
技术领域
本发明涉及计算机领域,特别涉及一种汇编代码的编写方法、装置、系统和可读存储介质。
背景技术
随着各应用领域数据的爆炸式增长,该领域的高性能应用计算花费的时间也成倍增长。为了能够减少高性能应用的计算时间,提升计算结果的时效性,可以在两个方面实现对各应用的优化,分别是粗粒度的多进程优化和对硬件依赖程度较高的底层优化。
但是,在现有技术中,由于底层优化的可移植效果较差,且优化难度较大,所以往往会忽略底层优化。目前较为常用的底层优化方法是SLP(超字并行)向量化方法,该方法利用相邻地址的内存访问作为打包的种子,然后通过定义-使用链和使用-定义链启发式地扩展包,最后利用依赖关系调度包,虽然充分利用了服务器的向量化指令,但却没有考虑到硬件指令流水线的优化和访存对性能的影响,同样也不适用于具有数据依赖的基本块和条件判断程序块。而实际上,如果能够基于计算机硬件和指令架构对底层硬件依赖进行优化,则可以获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能。
因此,如何获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能以提升计算速度和节约计算时间是本领域技术人员目前需要解决的技术问题。
发明内容
本发明的目的是提供一种汇编代码的编写方法、装置、系统和可读存储介质,能够获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能以提升计算速度和节约计算时间。
为了解决上述技术问题,本发明提供的一种汇编代码的编写方法,包括:
选取备选指令中指令耗时最短的指令或指令集;
按照预设的指令调度规则对目标指令进行重排以确保每条指令流水线的正常执行;
向量化程序中无数据依赖的语句,并当所述程序进行内存访问时,一次至少读取四个连续的数据;
其中,所述目标指令为所述指令或所述指令集中的指令。
优选地,所述按照预设的指令调度规则对目标指令进行重排以确保每条指令流水线的正常执行具体包括:
判断所述目标指令是否符合四发射流水线;
如果否,以空操作指令NOP填充定点指令以填满每条所述指令流水线。
优选地,在所述目标指令符合四发射流水线之后,还包括:
判断相邻所述目标指令之间是否存在数据依赖;
如果是,在所述相邻目标指令之间添加无关指令。
优选地,所述无关指令的数量为一条。
优选地,当所述程序中包括存在函数调用的循环时,所述向量化程序中无数据依赖的语句具体为:
采用SLP(超字并行)向量化算法在所述循环内对所述无数据依赖的语句进行向量化。
优选地,当所述程序中包括存在分支判断的循环时,所述向量化程序中无数据依赖的语句具体为:
采用投机向量化算法对所述无数据依赖的语句进行向量化。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810209383.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:将长位宽操作数指令转换为短位宽操作数指令的方法
- 下一篇:二次开发平台及方法