CN108304218A - 一种汇编代码的编写方法、装置、系统和可读存储介质 - Google Patents
一种汇编代码的编写方法、装置、系统和可读存储介质 Download PDFInfo
- Publication number
- CN108304218A CN108304218A CN201810209383.1A CN201810209383A CN108304218A CN 108304218 A CN108304218 A CN 108304218A CN 201810209383 A CN201810209383 A CN 201810209383A CN 108304218 A CN108304218 A CN 108304218A
- Authority
- CN
- China
- Prior art keywords
- instruction
- target
- program
- write method
- data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000008707 rearrangement Effects 0.000 claims abstract description 12
- 230000006870 function Effects 0.000 claims description 10
- 210000004209 hair Anatomy 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 5
- 238000005457 optimization Methods 0.000 description 8
- 238000012423 maintenance Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 101150071111 FADD gene Proteins 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了汇编代码的编写方法,首先通过选取备选指令中指令耗时最短的指令或指令集,可以消耗最少的CPU周期实现程序需要实现的功能;而后再按照预设的指令调度规则对目标指令进行重排,可以确保每条指令流水线的正常执行,提升计算速度;最后向量化程序中无数据依赖的语句,可以进一步提升指令执行速度;且当程序进行内存访问时,一次至少读取四个连续的数据,能够提高cache命中率,进一步提高计算速度。本发明提供的汇编代码的编写方法,能够获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能,进而提升计算速度,减少计算时间。此外,本发明还公开了一种汇编代码的编写装置、系统和一种计算机可读存储介质,效果如上。
Description
技术领域
本发明涉及计算机领域,特别涉及一种汇编代码的编写方法、装置、系统和可读存储介质。
背景技术
随着各应用领域数据的爆炸式增长,该领域的高性能应用计算花费的时间也成倍增长。为了能够减少高性能应用的计算时间,提升计算结果的时效性,可以在两个方面实现对各应用的优化,分别是粗粒度的多进程优化和对硬件依赖程度较高的底层优化。
但是,在现有技术中,由于底层优化的可移植效果较差,且优化难度较大,所以往往会忽略底层优化。目前较为常用的底层优化方法是SLP(超字并行)向量化方法,该方法利用相邻地址的内存访问作为打包的种子,然后通过定义-使用链和使用-定义链启发式地扩展包,最后利用依赖关系调度包,虽然充分利用了服务器的向量化指令,但却没有考虑到硬件指令流水线的优化和访存对性能的影响,同样也不适用于具有数据依赖的基本块和条件判断程序块。而实际上,如果能够基于计算机硬件和指令架构对底层硬件依赖进行优化,则可以获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能。
因此,如何获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能以提升计算速度和节约计算时间是本领域技术人员目前需要解决的技术问题。
发明内容
本发明的目的是提供一种汇编代码的编写方法、装置、系统和可读存储介质,能够获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能以提升计算速度和节约计算时间。
为了解决上述技术问题,本发明提供的一种汇编代码的编写方法,包括:
选取备选指令中指令耗时最短的指令或指令集;
按照预设的指令调度规则对目标指令进行重排以确保每条指令流水线的正常执行;
向量化程序中无数据依赖的语句,并当所述程序进行内存访问时,一次至少读取四个连续的数据;
其中,所述目标指令为所述指令或所述指令集中的指令。
优选地,所述按照预设的指令调度规则对目标指令进行重排以确保每条指令流水线的正常执行具体包括:
判断所述目标指令是否符合四发射流水线;
如果否,以空操作指令NOP填充定点指令以填满每条所述指令流水线。
优选地,在所述目标指令符合四发射流水线之后,还包括:
判断相邻所述目标指令之间是否存在数据依赖;
如果是,在所述相邻目标指令之间添加无关指令。
优选地,所述无关指令的数量为一条。
优选地,当所述程序中包括存在函数调用的循环时,所述向量化程序中无数据依赖的语句具体为:
采用SLP(超字并行)向量化算法在所述循环内对所述无数据依赖的语句进行向量化。
优选地,当所述程序中包括存在分支判断的循环时,所述向量化程序中无数据依赖的语句具体为:
采用投机向量化算法对所述无数据依赖的语句进行向量化。
为了解决上述技术问题,本发明还提供的一种汇编代码的编写装置,包括:
选取模块,用于选取备选指令中指令耗时最短的指令或指令集;
重排模块,用于按照预设的指令调度规则对目标指令进行重排以确保每条指令流水线的正常执行;
向量化模块,用于向量化程序中无数据依赖的语句;
访存模块,用于当所述程序进行内存访问时,一次至少读取连续连续的数据;
其中,所述目标指令为所述指令或所述指令集中的指令。
优选地,所述重排模块包括:
判断模块,用于判断所述目标指令是否符合四发射流水线,如果否,则触发填充模块;
所述填充模块,用于以空操作指令NOP填充定点指令以填满每条所述指令流水线。
为了解决上述技术问题,本发明还提供的一种汇编代码的编写系统,包括:
存储器,用于存储编写程序;
处理器,用于在执行所述编写程序时实现如上述任一种编写方法的步骤。
为了解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有编写程序,所述编写程序被处理器执行时实现如上述任一种编写方法的步骤。
本发明提供的汇编代码的编写方法,首先通过选取备选指令中指令耗时最短的指令或指令集,可以消耗最少的CPU周期实现程序需要实现的功能,节约计算时间;而后再按照预设的指令调度规则对目标指令进行重排,可以确保每条指令流水线的正常执行,进而实现指令级并行,提高处理器性能,提升计算速度;最后向量化程序中无数据依赖的语句,可以进一步提升指令执行速度;且当程序进行内存访问时,一次至少读取四个连续的数据,能够提高cache命中率,减少预取指令的使用,从而减少指令数量,进而进一步提高计算速度,节省计算时间。既考虑到了指令流水线的优化也考虑到了访存对性能的影响,同样适用于具有数据依赖的基本块和条件判断程序块,因此,本发明提供的汇编代码的编写方法,能够获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能,进而提升计算速度,减少计算时间。而且,本编写方法也可以使编码更加规范,具有条理化,易于后期维护。此外,本发明还公开了一种汇编代码的编写装置、系统和一种计算机可读存储介质,效果如上。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明实施例提供的一种汇编代码的编写方法的流程图;
图2为本发明实施例提供的一种汇编代码的编写装置的结构示意图;
图3为本发明实施例提供的一种汇编代码的编写系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动的前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的目的是提供一种汇编代码的编写方法、装置、系统和可读存储介质,能够获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能以提升计算速度和节约计算时间。
为了使本领域的技术人员更好的理解本发明技术方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本发明实施例提供的一种汇编代码的编写方法的流程图。如图1所示,本实施例提供的编写方法包括以下步骤:
S10:选取备选指令中指令耗时最短的指令或指令集。
S11:按照预设的指令调度规则对目标指令进行重排以消除相邻目标指令之间的依赖。
S12:向量化程序中无数据依赖的语句,并当程序进行内存访问时,一次至少读取四个连续的数据。
其中,目标指令为备选指令中指令耗时最短的指令或指令集中的指令。
需要说明的是,备选指令是指可以实现同一功能的各种指令和指令组合;连续的数据是指地址连续的数据。
对于步骤S10来说,可以根据指令的耗时表确定备选指令中耗时最短的指令或指令集,达到使用最少的时间实现相同功能的目的。以国产服务器SW261010基础数学库开发为例进行说明,例如,在数学库的开发过程中用到了2的N次方,则备选指令中至少包含移位指令和乘法指令,参考指令耗时表发现,乘法指令要比移位指令多消耗4到8个CPU周期,因此,实现计算2的N次方的这个功能,可以采用移位运算实现,而不是直接采用连乘运算。再例如,在数学库的开发过充中,如果备选指令中包含加减指令和乘除指令,则由于加减指令的指令耗时要小于乘除指令的指令耗时,所以在实现某一功能时,如果能用加减指令代替乘除指令的应尽量采用加减指令实现功能。
无论是国产处理器还是商用处理器均具有乱序执行能力,同一时刻存在着多条指令同时执行,即指令级并行。在保证程序运行的最终结果一致的情况下,处理器执行指令的顺序是无需和汇编代码给出的指令顺序完全一致的。也就是说,指令级并行能够利用处理器上不同组件同时工作,如果程序具有类型丰富的运算,指令级并行能使处理器的性能迅速提升,但是,值得注意的是,同时执行的指令之间是需要没有数据依赖或控制依赖的。因此,对于步骤S12来说,需要根据程序的不同需求,预先设置指令调度规则,实现对目标指令的重排以消除相邻目标指令之间的依赖,从而确保每条指令流水线都能够正常执行。
在步骤S12中,向量化程序中无数据依赖的语句包括:一、向量化仅包含无数据依赖语句的基本块中的所有语句;二、向量化存在数据依赖语句的基本块中的无数据依赖语句。在对存在数据依赖语句的基本块中的无数据依赖语句进行向量化的同时,存在数据依赖的语句串行执行即可。通过向量化无数据依赖的语句可以进一步提升指令执行速度。而在程序进行内存访问时,一次至少读取四个连续的数据,则可以使得数据访问具有更强的局部性,有利于发挥缓存的能力,提高cache命中率,减少预取指令的使用,减少指令数量,节省计算时间。
下面以一次访存连续绝对地址的四个数据的程序为例进行说明,程序代码如下:
$data:
quad 0x2389183b
quad 0x42a6c9d2
….
….
quad 0xa58c35eb
…
…
exp:
…
…
Vldd$f0,0(a1)
Vldd$f1,4(a1)
其中,a1为数据段机制,vldd为向量访存指令。
而且,可以理解的是,采用本发明实施例提供的编码方法编写的汇编代码,可以使汇编过程更加有章可循,编码更加规范,具有条理化,也易于后期维护。
综上所述,本发明实施例提供的汇编代码的编写方法,首先通过选取备选指令中指令耗时最短的指令或指令集,可以消耗最少的CPU周期实现程序需要实现的功能,节约计算时间;而后再按照预设的指令调度规则对目标指令进行重排,可以确保每条指令流水线的正常执行,进而实现指令级并行,提高处理器性能,提升计算速度;最后向量化程序中无数据依赖的语句,可以进一步提升指令执行速度;且当程序进行内存访问时,一次至少读取四个连续的数据,能够提高cache命中率,减少预取指令的使用,从而减少指令数量,进而进一步提高计算速度,节省计算时间。既考虑到了指令流水线的优化也考虑到了访存对性能的影响,同样适用于具有数据依赖的基本块和条件判断程序块,因此,本发明提供的汇编代码的编写方法,能够获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能,进而提升计算速度,减少计算时间。而且,本编写方法也可以使编码更加规范,具有条理化,易于后期维护。
基于上述实施例,作为一种优选的实施方式,步骤S11具体包括:
判断目标指令是否符合四发射流水线;
如果否,以空操作指令NOP填充定点指令以填满每条指令流水线。
如果是,正常发射执行目标指令。
当目标指令不符合四发射流水线时,通过以空操作指令NOP填充定点指令,能够填满每条指令流水线,使得目标指令符合四发射流水线,从而确保了指令流水线的正常执行。
基于上述实施例,作为一种优选的实施方式,在目标指令符合四发射流水线之后,还包括:
判断相邻目标指令之间是否存在数据依赖;
如果是,在相邻目标指令之间添加无关指令。
如果否,则无需进行任何操作。
其中,如果不考虑指令间是否存在数据依赖,则在时间上先后相继执行的两条目标指令为相邻目标指令。
当相邻目标指令之间存在数据依赖时,通过在该相邻的目标指令之间添加无关指令,能够消除该相邻的目标指令之间的数据依赖,使目标指令符合乱序执行标准,从而提高发射效率和计算效率。并且,优选地,添加的无关指令的数量为一条。
以数学库实现过充中充分利用指令流水线的为例进行说明,在未添加无关指令之前的原程序为:
fldd$f0,0(a1)
fldd$f1,8(a1)
fadd$f1,$f0,$f2
fmad$f2,$f1,$f3,$f2
其中,加法指令fadd$f1,$f0,$f2和乘加指令fmad$f2,$f1,$f3,$f2具有数据依赖关系,所以,为了消除加法指令和乘加指令之间的数据依赖,可以通过在加法指令fadd$f1,$f0,$f2和乘加指令fmad$f2,$f1,$f3,$f2之间添加一条不相干的计算指令,如指令fuld$f4,$f5,$f6,则添加无关指令之后的程序为:
fldd$f0,0(a1)
fldd$f1,8(a1)
fadd$f1,$f0,$f2
fuld$f4,$f5,$f6,
fmad$f2,$f1,$f3,$f2
如此,可以使该程序符合乱序执行标准,提高指令发射效率和计算效率,而且,同时也能够更充分地利用处理器指令并行的能力。
基于上述实施例,作为一种优选的实施方式,当程序中包括存在函数调用的循环时,向量化程序中无数据依赖的语句具体为:
采用SLP(超字并行)向量化算法在循环内对无数据依赖的语句进行向量化。
在本实施例中,对于循环内存在数据依赖的语句保持串行执行即可。
基于上述实施例,作为一种优选的实施方式,当程序中包括存在分支判断的循环时,向量化程序中无数据依赖的语句具体为:
采用投机向量化算法对无数据依赖的语句进行向量化。
在本实施例中,采用投机向量化算法对无数据依赖的数据进行向量化的实质是将与循环内与判断无关的语句进行向量化,提到判断外执行,以提升指令的计算速度。
上文对于本发明提供的一种汇编代码的编写方法的实施例进行了详细的描述,本发明还提供了一种与该编写方法对应的编写装置,由于装置部分的实施例与方法部分的实施例相互照应,因此装置部分的实施例请参见方法部分的实施例的描述,对于相同部分,本文不再赘述。
图2为本发明实施例提供的一种汇编代码的编写装置的结构示意图。如图2所示,本实施例提供的编写装置包括:
选取模块20,用于选取备选指令中指令耗时最短的指令或指令集;
重排模块21,用于按照预设的指令调度规则对目标指令进行重排以消除相邻目标指令之间的依赖;
向量化模块22,用于向量化程序中无数据依赖的语句;
访存模块23,用于当程序进行内存访问时,一次至少读取连续连续的数据;
其中,目标指令为备选指令中指令耗时最短的指令和指令集中的指令。
由于本实施例提供的编写装置,与上述任一实施例提供的编写方法相对应,具有同上述任一种编写方法相同的有益效果,因此,应用本发明提供的编写装置,能够获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能,进而提升计算速度,减少计算时间。而且,应用本编写装置,也可以使编码更加规范,具有条理化,易于后期维护。
基于上述实施例,作为一种优选的实施方式,重排模块21包括:
判断模块,用于判断目标指令是否符合四发射流水线,如果否,则触发填充模块;
填充模块,用于以空操作指令NOP填充定点指令以填满每条流水线。
本发明还提供了一种与上述编写方法对应的编写系统,由于系统部分的实施例与方法部分的实施例相互照应,因此系统部分的实施例请参见方法部分的实施例的描述,对于相同部分,本文不再赘述。
图3为本发明实施例提供的一种汇编代码的编写系统的结构示意图。如图3所示,本实施例提供的编写系统包括:
存储器30,用于存储编写程序;
处理器31,用于在执行编写程序时实现如上述任一实施例提供的编写方法的步骤。
由于本实施例提供的编写系统的处理器能够调用编写程序实现上述任一实施例提供的编写方法的步骤,所以,应用本编写系统,能够获得初始性能良好的源码,使得程序在未优化之前就具有良好的性能,进而提升计算速度,减少计算时间。而且,应用本编写系统,也可以使编码更加规范,具有条理化,易于后期维护。
本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有编写程序,编写程序被处理器执行时实现如上述任一实施例提供的编写方法的步骤。
本实施例提供的计算机可读存储介质,由于编写程序被处理器执行时,可以实现上述任一实施例提供的编写方法的步骤,所以本计算机可读存储介质具有同上述编写方法同样的实际效果。
以上对本发明所提供的一种汇编代码的编写方法、装置、系统和可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明都是与其它实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何变体意在涵盖非排他性的包含,从而使得包括一系列的要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种汇编代码的编写方法,其特征在于,包括:
选取备选指令中指令耗时最短的指令或指令集;
按照预设的指令调度规则对目标指令进行重排以确保每条指令流水线的正常执行;
向量化程序中无数据依赖的语句,并当所述程序进行内存访问时,一次至少读取四个连续的数据;
其中,所述目标指令为所述指令或所述指令集中的指令。
2.根据权利要求1所述的汇编代码的编写方法,其特征在于,所述按照预设的指令调度规则对目标指令进行重排以确保每条指令流水线的正常执行具体包括:
判断所述目标指令是否符合四发射流水线;
如果否,以空操作指令NOP填充定点指令以填满每条所述指令流水线。
3.根据权利要求2所述的汇编代码的编写方法,其特征在于,在所述目标指令符合四发射流水线之后,还包括:
判断相邻所述目标指令之间是否存在数据依赖;
如果是,在所述相邻目标指令之间添加无关指令。
4.根据权利要求3所述的汇编代码的编写方法,其特征在于,所述无关指令的数量为一条。
5.根据权利要求1-4任一项所述的汇编代码的编写方法,其特征在于,当所述程序中包括存在函数调用的循环时,所述向量化程序中无数据依赖的语句具体为:
采用SLP(超字并行)向量化算法在所述循环内对所述无数据依赖的语句进行向量化。
6.根据权利要求1-4任一项所述的汇编代码的编写方法,其特征在于,当所述程序中包括存在分支判断的循环时,所述向量化程序中无数据依赖的语句具体为:
采用投机向量化算法对所述无数据依赖的语句进行向量化。
7.一种汇编代码的编写装置,其特征在于,包括:
选取模块,用于选取备选指令中指令耗时最短的指令或指令集;
重排模块,用于按照预设的指令调度规则对目标指令进行重排以确保每条指令流水线的正常执行;
向量化模块,用于向量化程序中无数据依赖的语句;
访存模块,用于当所述程序进行内存访问时,一次至少读取连续连续的数据;
其中,所述目标指令为所述指令或所述指令集中的指令。
8.根据权利要求7所述的汇编代码的编写装置,其特征在于,所述重排模块包括:
判断模块,用于判断所述目标指令是否符合四发射流水线,如果否,则触发填充模块;
所述填充模块,用于以空操作指令NOP填充定点指令以填满每条所述指令流水线。
9.一种汇编代码的编写系统,其特征在于,包括:
存储器,用于存储编写程序;
处理器,用于在执行所述编写程序时实现如权利要求1-6任一项所述编写方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有编写程序,所述编写程序被处理器执行时实现如权利要求1-6任一项所述编写方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810209383.1A CN108304218A (zh) | 2018-03-14 | 2018-03-14 | 一种汇编代码的编写方法、装置、系统和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810209383.1A CN108304218A (zh) | 2018-03-14 | 2018-03-14 | 一种汇编代码的编写方法、装置、系统和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108304218A true CN108304218A (zh) | 2018-07-20 |
Family
ID=62849963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810209383.1A Pending CN108304218A (zh) | 2018-03-14 | 2018-03-14 | 一种汇编代码的编写方法、装置、系统和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108304218A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134438A (zh) * | 2019-05-14 | 2019-08-16 | Oppo广东移动通信有限公司 | 指令排序方法、装置、移动终端及存储介质 |
CN110795106A (zh) * | 2019-10-30 | 2020-02-14 | 中国人民解放军战略支援部队信息工程大学 | 程序向量化过程中动静结合的内存别名分析处理方法及装置 |
CN111428327A (zh) * | 2018-12-24 | 2020-07-17 | 深圳市中兴微电子技术有限公司 | 一种指令硬件架构的构建方法、装置及存储介质 |
CN113849180A (zh) * | 2021-09-17 | 2021-12-28 | 中国科学院上海高等研究院 | 一种基于重排指令融合的编译自动向量化方法 |
CN114217856A (zh) * | 2021-12-17 | 2022-03-22 | 中国人民解放军国防科技大学 | 面向AArch64架构的CPU指令微基准测试方法及系统 |
CN117648089A (zh) * | 2023-12-07 | 2024-03-05 | 郑州大学 | 一种slp自动向量化方法、装置及电子设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1482540A (zh) * | 2002-08-02 | 2004-03-17 | ���µ�����ҵ��ʽ���� | 编译程序、编译程序装置和编译方法 |
US20090024832A1 (en) * | 2003-11-24 | 2009-01-22 | Gordon Cichon | Process for the automatic production of a processor from a machine description |
CN102231118A (zh) * | 2011-07-25 | 2011-11-02 | 中国科学技术大学 | 一种基于龙芯3a向量访存的编译优化方法 |
US20120047350A1 (en) * | 2009-05-01 | 2012-02-23 | John Lancaster | Controlling simd parallel processors |
CN102662720A (zh) * | 2012-03-12 | 2012-09-12 | 天津国芯科技有限公司 | 一种多发射嵌入式处理器编译器的优化方法 |
CN102768623A (zh) * | 2011-05-06 | 2012-11-07 | 中兴通讯股份有限公司 | 一种vliw流水线的发射方法和装置 |
CN102981886A (zh) * | 2012-12-21 | 2013-03-20 | 中国科学院声学研究所 | 一种优化的memset标准库函数汇编代码生成方法 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN103608774A (zh) * | 2011-11-07 | 2014-02-26 | 辉达公司 | 用于编译期间的向量化和存储器合并的算法 |
CN104838357A (zh) * | 2012-12-27 | 2015-08-12 | 英特尔公司 | 瓦解的多嵌套循环的向量化 |
CN105242907A (zh) * | 2015-09-10 | 2016-01-13 | 西安交通大学 | Arm二进制代码的neon向量化转换方法 |
-
2018
- 2018-03-14 CN CN201810209383.1A patent/CN108304218A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1482540A (zh) * | 2002-08-02 | 2004-03-17 | ���µ�����ҵ��ʽ���� | 编译程序、编译程序装置和编译方法 |
US20090024832A1 (en) * | 2003-11-24 | 2009-01-22 | Gordon Cichon | Process for the automatic production of a processor from a machine description |
US20120047350A1 (en) * | 2009-05-01 | 2012-02-23 | John Lancaster | Controlling simd parallel processors |
CN102768623A (zh) * | 2011-05-06 | 2012-11-07 | 中兴通讯股份有限公司 | 一种vliw流水线的发射方法和装置 |
CN102231118A (zh) * | 2011-07-25 | 2011-11-02 | 中国科学技术大学 | 一种基于龙芯3a向量访存的编译优化方法 |
CN103608774A (zh) * | 2011-11-07 | 2014-02-26 | 辉达公司 | 用于编译期间的向量化和存储器合并的算法 |
CN102662720A (zh) * | 2012-03-12 | 2012-09-12 | 天津国芯科技有限公司 | 一种多发射嵌入式处理器编译器的优化方法 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN102981886A (zh) * | 2012-12-21 | 2013-03-20 | 中国科学院声学研究所 | 一种优化的memset标准库函数汇编代码生成方法 |
CN104838357A (zh) * | 2012-12-27 | 2015-08-12 | 英特尔公司 | 瓦解的多嵌套循环的向量化 |
CN105242907A (zh) * | 2015-09-10 | 2016-01-13 | 西安交通大学 | Arm二进制代码的neon向量化转换方法 |
Non-Patent Citations (2)
Title |
---|
曹代等: "基于申威26010处理器的扩展函数库实现与优化", 《计算机工程》 * |
曹代等: "某国产平台数学库优化技术研究", 《信息工程大学学报》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111428327A (zh) * | 2018-12-24 | 2020-07-17 | 深圳市中兴微电子技术有限公司 | 一种指令硬件架构的构建方法、装置及存储介质 |
CN110134438A (zh) * | 2019-05-14 | 2019-08-16 | Oppo广东移动通信有限公司 | 指令排序方法、装置、移动终端及存储介质 |
CN110795106A (zh) * | 2019-10-30 | 2020-02-14 | 中国人民解放军战略支援部队信息工程大学 | 程序向量化过程中动静结合的内存别名分析处理方法及装置 |
CN110795106B (zh) * | 2019-10-30 | 2022-10-04 | 中国人民解放军战略支援部队信息工程大学 | 程序向量化过程中动静结合的内存别名分析处理方法及装置 |
CN113849180A (zh) * | 2021-09-17 | 2021-12-28 | 中国科学院上海高等研究院 | 一种基于重排指令融合的编译自动向量化方法 |
CN113849180B (zh) * | 2021-09-17 | 2024-08-30 | 中国科学院上海高等研究院 | 一种基于重排指令融合的编译自动向量化方法 |
CN114217856A (zh) * | 2021-12-17 | 2022-03-22 | 中国人民解放军国防科技大学 | 面向AArch64架构的CPU指令微基准测试方法及系统 |
CN114217856B (zh) * | 2021-12-17 | 2024-08-20 | 中国人民解放军国防科技大学 | 面向AArch64架构的CPU指令微基准测试方法及系统 |
CN117648089A (zh) * | 2023-12-07 | 2024-03-05 | 郑州大学 | 一种slp自动向量化方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304218A (zh) | 一种汇编代码的编写方法、装置、系统和可读存储介质 | |
CN105393240B (zh) | 具有辅助异步向量处理器的异步处理器的方法和装置 | |
Xiao et al. | A load balancing inspired optimization framework for exascale multicore systems: A complex networks approach | |
CN103699360B (zh) | 一种向量处理器及其进行向量数据存取、交互的方法 | |
CN102306094B (zh) | 实现现代处理器间接转移预测的装置及方法 | |
CN110073329A (zh) | 访存设备、计算设备和应用于卷积神经网络运算的设备 | |
Chappell et al. | Difficult-path branch prediction using subordinate microthreads | |
CN103365628A (zh) | 用于执行预解码时优化的指令的方法和系统 | |
Bhagyanath et al. | Exploring different execution paradigms in exposed datapath architectures with buffered processing units | |
EP3268859A1 (en) | Scheduling heterogenous processors | |
CN117472446B (zh) | 基于处理器的多级取指目标缓冲器的分支预测方法 | |
US20160011889A1 (en) | Simulation method and storage medium | |
Faravelon et al. | Fast and accurate branch predictor simulation | |
Park et al. | XLA-NDP: Efficient Scheduling and Code Generation for Deep Learning Model Training on Near-Data Processing Memory | |
CN115469931A (zh) | 一种循环程序的指令优化方法、装置、系统、设备及介质 | |
Desmet et al. | Enlarging instruction streams | |
CN114528248A (zh) | 阵列重构方法、装置、设备及存储介质 | |
CN108846248B (zh) | 一种应用建模及性能预测方法 | |
US20040225868A1 (en) | An integrated circuit having parallel execution units with differing execution latencies | |
CN113128688A (zh) | 通用型ai并行推理加速结构以及推理设备 | |
CN112506853A (zh) | 零缓冲流水的可重构处理单元阵列及零缓冲流水方法 | |
Hiser et al. | Register assignment for software pipelining with partitioned register banks | |
Kim et al. | Conveyor: Towards Asynchronous Dataflow in Systolic Array to Exploit Unstructured Sparsity | |
Chen et al. | Cost-driven hybrid configuration prefetching for partial reconfigurable coprocessor | |
CN111861860B (zh) | 一种面向ai智能soc芯片的图像加速处理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180720 |
|
RJ01 | Rejection of invention patent application after publication |