CN118227085A - 一种浮点乘加指令的延迟降低的方法及其装置 - Google Patents
一种浮点乘加指令的延迟降低的方法及其装置 Download PDFInfo
- Publication number
- CN118227085A CN118227085A CN202410644737.0A CN202410644737A CN118227085A CN 118227085 A CN118227085 A CN 118227085A CN 202410644737 A CN202410644737 A CN 202410644737A CN 118227085 A CN118227085 A CN 118227085A
- Authority
- CN
- China
- Prior art keywords
- instruction
- operand
- fma
- clock cycle
- floating point
- 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 36
- 238000012544 monitoring process Methods 0.000 claims abstract description 24
- 230000004044 response Effects 0.000 claims abstract description 14
- 230000009467 reduction Effects 0.000 claims description 21
- 230000005540 biological transmission Effects 0.000 claims description 4
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Landscapes
- Advance Control (AREA)
Abstract
本申请提出了一种浮点乘加指令的延迟降低的方法及其装置,涉及计算机处理器技术领域。本申请通过监测发射队列中待执行的浮点乘加FMA指令对应的源操作数是否准备就绪,源操作数包括用于浮点乘法的第一操作数和第二操作数,以及用于浮点加法的第三操作数;响应于监测到FMA指令对应的第一操作数和第二操作数就绪而第三操作数未就绪,获取第三操作数对应的就绪时钟周期;根据就绪时钟周期确定FMA指令的指令发射时钟周期;在指令发射时钟周期将FMA指令发射至浮点乘加部件。本申请能够优化FMA的性能,减小FMA运算的延迟,也不用存储浮点乘法FMUL指令的中间结果,在不增加额外硬件开销的情况下,提高流水线的性能。
Description
技术领域
本申请涉及计算机处理器技术领域,尤其涉及一种浮点乘加指令的延迟降低的方法及其装置。
背景技术
浮点乘加(Fused Multiply-Add,FMA)指令将独立的浮点乘法和浮点加法运算融合为一种运算,FMA指令事实上包括浮点乘法(Floating Point Multiply,FMUL)和浮点加法(Floating Point Add,FADD)两部分。其中浮点乘法FMUL使用前两个操作数,浮点加法FADD使用浮点乘法FMUL的结果和第三个操作数。对于流水线中的浮点乘加FMA操作来说,先做乘法,乘法结束才会涉及到做加法,如src1*src2+src3,也就是说src3在src1*src2执行结束才会用到。处理器按照流水线执行指令,src1和src2做乘法时用不到src3。如果src3与执行序在其前面的指令存在数据相关时,当操作数src1和src2的值已经准备就绪了,但是第三操作数src3前面的指令还未完成,即src3还未准备就绪,流水线需要等待src3准备就绪才能继续执行,因此就会造成延迟,并会造成流水线的堵塞。
FMA指令包括乘加、乘减、负乘加、负乘减等操作,如src1*src2+src3、src1*src2-src3、-src1*src2+src3和-src1*src2-src3。目前,FMA运算性能已经成为评测处理器浮点峰值性能的重要指标,高端处理器核心一般设置有2个~4个FMA运算部件,能提供每周期4个~8个浮点操作的浮点峰值性能,但是FMA逻辑实现延迟长,已成为高性能处理器的瓶颈之一。
发明内容
本公开提供一种浮点乘加指令的延迟降低的方法及其装置,以至少解决相关技术中FMA逻辑实现延迟长的问题。
本申请第一方面实施例提出了一种浮点乘加指令的延迟降低的方法,包括:监测发射队列中待执行的浮点乘加FMA指令对应的源操作数是否准备就绪,源操作数包括用于浮点乘法的第一操作数和第二操作数,以及用于浮点加法的第三操作数;响应于监测到FMA指令对应的第一操作数和第二操作数就绪而第三操作数未就绪,获取第三操作数对应的就绪时钟周期;根据就绪时钟周期确定FMA指令的指令发射时钟周期;在指令发射时钟周期将FMA指令发射至浮点乘加部件。
根据本申请的一个实施例,获取第三操作数对应的就绪时钟周期,包括:确定第三操作数的相关运算指令,相关运算指令用于经过运算获取第三操作数;获取相关运算指令执行完毕时对应的时钟周期,并将该时钟周期作为第三操作数对应的就绪时钟周期。
根据本申请的一个实施例,根据就绪时钟周期确定FMA指令的指令发射时钟周期,包括:获取从FMA指令被选择到执行完FMA指令对应的第一操作数和第二操作数的乘法运算所需要的时钟周期长度;根据时钟周期长度,结合第三操作数对应的就绪时钟周期,确定FMA指令的指令选择时钟周期;将指令选择时钟周期的下一个时钟周期作为FMA指令的指令发射时钟周期。
根据本申请的一个实施例,在指令发射时钟周期将FMA指令发射至浮点乘加部件之后,还包括:获取第一操作数和第二操作数的乘法运算结果;在就绪时钟周期的下一时钟周期对第三操作数和乘法运算结果进行加法运算。
根据本申请的一个实施例,浮点乘加指令的延迟降低的方法,还包括:响应于监测到FMA指令对应的所有源操作数均准备就绪,确定当前时钟周期的下一个时钟周期为指令选择时钟周期;将指令选择时钟周期的下一个时钟周期作为FMA指令的指令发射时钟周期;在指令发射时钟周期将FMA指令发射至浮点乘加部件。
根据本申请的一个实施例,在指令发射时钟周期将FMA指令发射至浮点乘加部件之后,还包括:将FMA指令从发射队列中删除。
根据本申请的一个实施例,浮点乘加指令的延迟降低的方法,还包括:在指令选择时钟周期对FMA指令进行选中。
本申请第二方面实施例提出了一种浮点乘加指令的延迟降低的装置,包括:监测模块,用于监测发射队列中待执行的浮点乘加FMA指令对应的源操作数是否准备就绪,源操作数包括用于浮点乘法的第一操作数和第二操作数,以及用于浮点加法的第三操作数;获取模块,用于响应于监测到FMA指令对应的第一操作数和第二操作数就绪而第三操作数未就绪,获取第三操作数对应的就绪时钟周期;确定模块,用于根据就绪时钟周期确定FMA指令的指令发射时钟周期;处理模块,用于在指令发射时钟周期将FMA指令发射至浮点乘加部件。
根据本申请的一个实施例,获取模块,还用于:确定第三操作数的相关运算指令,相关运算指令用于经过运算获取第三操作数;获取相关运算指令执行完毕时对应的时钟周期,并将该时钟周期作为第三操作数对应的就绪时钟周期。
根据本申请的一个实施例,确定模块,还用于:获取从FMA指令被选择到执行完FMA指令对应的第一操作数和第二操作数的乘法运算所需要的时钟周期长度;根据时钟周期长度,结合第三操作数对应的就绪时钟周期,确定FMA指令的指令选择时钟周期;将指令选择时钟周期的下一个时钟周期作为FMA指令的指令发射时钟周期。
根据本申请的一个实施例,处理模块,还用于:获取第一操作数和第二操作数的乘法运算结果;在就绪时钟周期的下一时钟周期对第三操作数和乘法运算结果进行加法运算。
根据本申请的一个实施例,确定模块,还用于:响应于监测到FMA指令对应的所有源操作数均准备就绪,确定当前时钟周期的下一个时钟周期为指令选择时钟周期;将指令选择时钟周期的下一个时钟周期作为FMA指令的指令发射时钟周期;处理模块,还用于:在指令发射时钟周期将FMA指令发射至浮点乘加部件。
根据本申请的一个实施例,处理模块,还用于:将FMA指令从发射队列中删除。
根据本申请的一个实施例,处理模块,还用于:在指令选择时钟周期对FMA指令进行选中。
本申请第三方面实施例提出了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以实现如本申请第一方面实施例所述的浮点乘加指令的延迟降低的方法。
本申请第四方面实施例提出了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于实现如本申请第一方面实施例所述的浮点乘加指令的延迟降低的方法。
本申请第五方面实施例提出了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如本申请第一方面实施例所述的浮点乘加指令的延迟降低的方法。
本公开的实施例提供的技术方案至少带来以下有益效果:本申请中,若FMA指令的第三个操作数来自前面其他运算指令的结果,通过本申请提出的浮点乘加指令的延迟降低的方法,能够实现在选择发射的FMA指令在流水线中执行完乘法计算出中间结果从而需要继续执行加法时,第三个操作数刚好计算完成,将第三个操作数和中间结果送到浮点乘加部件,继续后面的浮点加法FADD运算,能够优化FMA的性能,减小FMA运算的延迟,也不用存储浮点乘法FMUL指令的中间结果,浮点乘加部件流水线用浮点乘法的结果和浮点加法需要的第三操作数继续进行浮点加法运算,从而在不增加额外硬件开销的情况下,提高流水线的性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本申请一个实施例示出的一种浮点乘加指令的延迟降低的方法的示例性实施方法的示意图。
图2是本申请一个实施例示出的一种浮点乘加指令的延迟降低的方法的示例性实施方法的总体流程图。
图3是本申请一个实施例示出的一种浮点乘加指令的延迟降低的装置的示意图。
图4是本申请一个实施例示出的一种电子设备的示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
图1是本申请示出的一种浮点乘加指令的延迟降低的方法的示例性实施方法的示意图,如图1所示,该浮点乘加指令的延迟降低的方法,包括以下步骤:
S101,监测发射队列中待执行的浮点乘加FMA指令对应的源操作数是否准备就绪,源操作数包括用于浮点乘法的第一操作数和第二操作数,以及用于浮点加法的第三操作数。
浮点乘加(Fused Multiply-Add,FMA)指令是一种在单个指令中执行乘法和加法(或减法)操作的特殊指令。它的主要特点是将乘法和加法(或减法)操作合并到一条指令中,以提高性能并减少指令数量。
如FMA指令可表示为src1*src2+src3,用于浮点乘法的src1和src2分别为第一操作数和第二操作数,而src3为用于浮点加法的第三操作数,不难理解的,src3在src1*src2执行结束才会用到。
在处理器中,通常采用发射队列来管理和调度FMA指令,发射队列中可包含至少一条FMA指令。
S102,响应于监测到FMA指令对应的第一操作数和第二操作数就绪而第三操作数未就绪,获取第三操作数对应的就绪时钟周期。
很多情况下,第三操作数与前方其他运算指令相关,也即,前方其他运算指令运算完成之后才能得到当前FMA指令所需要的第三操作数。
本申请中,若监测到FMA指令对应的第一操作数和第二操作数就绪而第三操作数未就绪,为了实现第三个操作数刚好在该FMA指令的浮点乘法FMUL执行完拿到结果,为了确定该FMA指令的指令发射时钟周期,本申请中,需要预先确定第三操作数对应的就绪时钟周期。
比如说,确定第三操作数的相关运算指令,相关运算指令用于经过运算获取第三操作数;获取相关运算指令执行完毕时对应的时钟周期,并将该时钟周期作为第三操作数对应的就绪时钟周期。
其中,指令发射时钟周期指的是发射该FMA指令的时钟周期。
其中,第三操作数对应的就绪时钟周期指的是前方其他运算指令运算完成之后得到当前FMA指令所需要的第三操作数时对应的时钟周期。
S103,根据就绪时钟周期确定FMA指令的指令发射时钟周期。
在上述获取第三操作数对应的就绪时钟周期之后,获取该FMA指令从被选择到执行完该FMA指令对应的第一操作数和第二操作数的乘法运算所需要的时钟周期长度;根据时钟周期长度,结合第三操作数对应的就绪时钟周期,确定FMA指令的指令选择时钟周期;将指令选择时钟周期的下一个时钟周期作为FMA指令的指令发射时钟周期。
其中,指令选择时钟周期指的是选择该FMA指令的时钟周期。
示例性的,若某条FMA指令从被选择到执行完该FMA指令对应的第一操作数和第二操作数的乘法运算所需要的时钟周期长度为4个时钟周期,而第三操作数对应的就绪时钟周期为第6个时钟周期,则,确定第3个时钟周期为FMA指令的指令选择时钟周期,确定第4个时钟周期为FMA指令的指令发射时钟周期,这样,能够正好实现在第7个时钟周期对乘法运算结果和第三个操作数进行加法运算,减小FMA运算的延迟。
S104,在指令发射时钟周期将FMA指令发射至浮点乘加部件。
在上述确定的指令选择时钟周期对FMA指令进行选中,在上述确定的指令发射时钟周期将FMA指令发射至浮点乘加部件。
将FMA指令发射至浮点乘加部件之后,先执行乘法运算获取第一操作数和第二操作数的乘法运算结果;在就绪时钟周期获得了第三操作数,在就绪时钟周期的下一时钟周期对第三操作数和乘法运算结果进行加法运算。
本申请实施例提出了一种浮点乘加指令的延迟降低的方法,通过监测发射队列中待执行的浮点乘加FMA指令对应的源操作数是否准备就绪,源操作数包括用于浮点乘法的第一操作数和第二操作数,以及用于浮点加法的第三操作数;响应于监测到FMA指令对应的第一操作数和第二操作数就绪而第三操作数未就绪,获取第三操作数对应的就绪时钟周期;根据就绪时钟周期确定FMA指令的指令发射时钟周期;在指令发射时钟周期将FMA指令发射至浮点乘加部件。本申请中,若FMA指令的第三个操作数来自前面其他运算指令的结果,通过本申请提出的浮点乘加指令的延迟降低的方法,能够实现在选择发射的FMA指令在流水线中执行完乘法计算出中间结果从而需要继续执行加法时,第三个操作数刚好计算完成,将第三个操作数和中间结果送到浮点乘加部件,继续后面的浮点加法FADD运算,能够优化FMA的性能,减小FMA运算的延迟,也不用存储浮点乘法FMUL指令的中间结果,浮点乘加部件流水线用浮点乘法的结果和浮点加法需要的第三操作数继续进行浮点加法运算,从而在不增加额外硬件开销的情况下,提高流水线的性能。
表1是本申请示出的FMA指令与时钟周期的流水级表格,下面结合表1对本申请提出的浮点乘加指令的延迟降低的方法进行示例性介绍。
表1FMA指令与时钟周期的流水级表格
表1中,T0,T1,……,T12分别表示第0个时钟周期,第1个时钟周期,……,第12个时钟周期。
表1中,FMA表示浮点乘加指令。S表示浮点乘加发射队列的选择(Select)流水级,I表示浮点乘加发射队列的发射(Issue)流水级,M表示浮点乘加部件执行浮点乘法(FMUL)的流水级,A表示浮点乘加部件执行浮点加法(FADD)的流水级。
以序号为1的FMA指令为例,若在T0监测到FMA指令对应的所有源操作数均准备就绪,确定当前时钟周期的下一个时钟周期为指令选择时钟周期,也即确定T1为指令选择时钟周期;将指令选择时钟周期的下一个时钟周期作为FMA指令的指令发射时钟周期,也即确定T2为指令发射时钟周期;然后,在指令选择时钟周期T1对FMA指令进行选中,在指令发射时钟周期T2将FMA指令发射至浮点乘加部件,浮点乘加部件执行完FMUL在T4,最终FMA结束在T6。
以序号为2的FMA指令为例,如果序号为2的FMA指令中的第三操作数需要依赖序号为1的FMA指令的最终结果,也即,本申请中,序号为2的FMA指令中的第三操作数的就绪时钟周期为T6(可以理解为在T6拿到序号为1的FMA指令运算完毕得到的第三个操作数的结果),而序号为2的FMA指令从被选择到执行完浮点乘法需要4个时钟周期,为了降低FMA时延,本申请中,就需要在T3选择,T4发射,刚好在T6拿到序号1的FMA的运算结果作为第三个操作数,序号为2的FMA指令的浮点乘法FMUL的中间结果在T6也刚好出来,一起送到浮点乘加部件的浮点加法部分,进行后面的浮点加法FADD运算,在T8得到运算结果。
进一步的,在指令发射时钟周期将FMA指令发射至浮点乘加部件之后,还包括:将该FMA指令从发射队列中删除,这样可以提高浮点乘加发射队列的利用率。
图2是本申请示出的一种浮点乘加指令的延迟降低的方法的示例性实施方法的总体流程图,如图2所示,该浮点乘加指令的延迟降低的方法,包括以下步骤:
S201,监测发射队列中待执行的浮点乘加FMA指令对应的源操作数是否准备就绪,源操作数包括用于浮点乘法的第一操作数和第二操作数,以及用于浮点加法的第三操作数。
关于步骤S201的具体实现方式,可参照上述实施例中相关部分的具体介绍,在此不再进行赘述。
S202,响应于监测到FMA指令对应的第一操作数和第二操作数就绪而第三操作数未就绪,确定第三操作数的相关运算指令,相关运算指令用于经过运算获取第三操作数。
S203,获取相关运算指令执行完毕时对应的时钟周期,并将该时钟周期作为第三操作数对应的就绪时钟周期。
S204,获取从FMA指令被选择到执行完FMA指令对应的第一操作数和第二操作数的乘法运算所需要的时钟周期长度。
S205,根据时钟周期长度,结合第三操作数对应的就绪时钟周期,确定FMA指令的指令选择时钟周期。
S206,响应于监测到FMA指令对应的所有源操作数均准备就绪,确定当前时钟周期的下一个时钟周期为指令选择时钟周期。
关于步骤S202~ S206的具体实现方式,可参照上述实施例中相关部分的具体介绍,在此不再进行赘述。
S207,将指令选择时钟周期的下一个时钟周期作为FMA指令的指令发射时钟周期。
S208,在指令选择时钟周期对FMA指令进行选中。
S209,在指令发射时钟周期将FMA指令发射至浮点乘加部件。
S210,将FMA指令从发射队列中删除。
关于步骤S207~ S210的具体实现方式,可参照上述实施例中相关部分的具体介绍,在此不再进行赘述。
本申请实施例中,若FMA指令的第三个操作数来自前面其他运算指令的结果,通过本申请提出的浮点乘加指令的延迟降低的方法,能够实现在选择发射的FMA指令在流水线中执行完乘法计算出中间结果从而需要继续执行加法时,第三个操作数刚好计算完成,将第三个操作数和中间结果送到浮点乘加部件,继续后面的浮点加法FADD运算,能够优化FMA的性能,减小FMA运算的延迟,也不用存储浮点乘法FMUL指令的中间结果,浮点乘加部件流水线用浮点乘法的结果和浮点加法需要的第三操作数继续进行浮点加法运算,从而在不增加额外硬件开销的情况下,提高流水线的性能,并且在发射FMA指令之后将FMA指令从发射队列中删除,可以提高浮点乘加发射队列的利用率。
图3是本申请示出的一种浮点乘加指令的延迟降低的装置的示意图,如图3所示,该浮点乘加指令的延迟降低的装置300,包括监测模块301、获取模块302、确定模块303和处理模块304,其中:
监测模块301,用于监测发射队列中待执行的浮点乘加FMA指令对应的源操作数是否准备就绪,源操作数包括用于浮点乘法的第一操作数和第二操作数,以及用于浮点加法的第三操作数。
获取模块302,用于响应于监测到FMA指令对应的第一操作数和第二操作数就绪而第三操作数未就绪,获取第三操作数对应的就绪时钟周期。
确定模块303,用于根据就绪时钟周期确定FMA指令的指令发射时钟周期。
处理模块304,用于在指令发射时钟周期将FMA指令发射至浮点乘加部件。
本装置中,若FMA指令的第三个操作数来自前面其他运算指令的结果,能够实现在选择发射的FMA指令在流水线中执行完乘法计算出中间结果从而需要继续执行加法时,第三个操作数刚好计算完成,将第三个操作数和中间结果送到浮点乘加部件,继续后面的浮点加法FADD运算,能够优化FMA的性能,减小FMA运算的延迟,也不用存储浮点乘法FMUL指令的中间结果,浮点乘加部件流水线用浮点乘法的结果和浮点加法需要的第三操作数继续进行浮点加法运算,从而在不增加额外硬件开销的情况下,提高流水线的性能。
进一步的,获取模块302,还用于:确定第三操作数的相关运算指令,相关运算指令用于经过运算获取第三操作数;获取相关运算指令执行完毕时对应的时钟周期,并将该时钟周期作为第三操作数对应的就绪时钟周期。
进一步的,确定模块303,还用于:获取从FMA指令被选择到执行完FMA指令对应的第一操作数和第二操作数的乘法运算所需要的时钟周期长度;根据时钟周期长度,结合第三操作数对应的就绪时钟周期,确定FMA指令的指令选择时钟周期;将指令选择时钟周期的下一个时钟周期作为FMA指令的指令发射时钟周期。
进一步的,处理模块304,还用于:获取第一操作数和第二操作数的乘法运算结果;在就绪时钟周期的下一时钟周期对第三操作数和乘法运算结果进行加法运算。
进一步的,确定模块303,还用于:响应于监测到FMA指令对应的所有源操作数均准备就绪,确定当前时钟周期的下一个时钟周期为指令选择时钟周期;将指令选择时钟周期的下一个时钟周期作为FMA指令的指令发射时钟周期;处理模块304,还用于:在指令发射时钟周期将FMA指令发射至浮点乘加部件。
进一步的,处理模块304,还用于:将FMA指令从发射队列中删除。
进一步的,处理模块304,还用于:在指令选择时钟周期对FMA指令进行选中。
为了实现上述实施例,本申请实施例还提出一种电子设备400,如图4所示,该电子设备400包括:处理器401和处理器通信连接的存储器402,存储器402存储有可被至少一个处理器执行的指令,指令被至少一个处理器401执行,以实现如上述实施例所示的浮点乘加指令的延迟降低的方法。
为了实现上述实施例,本申请实施例还提出一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机实现如上述实施例所示的浮点乘加指令的延迟降低的方法。
为了实现上述实施例,本申请实施例还提出一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如上述实施例所示的浮点乘加指令的延迟降低的方法。
在本申请的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
需要说明的是,在本申请实施例中,可能提及某些软件、组件、模型等业界已有方案,应当将它们认为是示范性的,其目的仅仅是为了说明本申请技术方案实施中的可行性,但并不意味着申请人已经或者必然用到了该方案。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种浮点乘加指令的延迟降低的方法,其特征在于,包括:
监测发射队列中待执行的浮点乘加FMA指令对应的源操作数是否准备就绪,所述源操作数包括用于浮点乘法的第一操作数和第二操作数,以及用于浮点加法的第三操作数;
响应于监测到所述FMA指令对应的所述第一操作数和所述第二操作数就绪而所述第三操作数未就绪,获取所述第三操作数对应的就绪时钟周期;
根据所述就绪时钟周期确定所述FMA指令的指令发射时钟周期;
在所述指令发射时钟周期将所述FMA指令发射至浮点乘加部件。
2.根据权利要求1所述的方法,其特征在于,所述获取所述第三操作数对应的就绪时钟周期,包括:
确定所述第三操作数的相关运算指令,所述相关运算指令用于经过运算获取所述第三操作数;
获取所述相关运算指令执行完毕时对应的时钟周期,并将该时钟周期作为所述第三操作数对应的就绪时钟周期。
3.根据权利要求2所述的方法,其特征在于,所述根据所述就绪时钟周期确定所述FMA指令的指令发射时钟周期,包括:
获取从所述FMA指令被选择到执行完所述FMA指令对应的所述第一操作数和所述第二操作数的乘法运算所需要的时钟周期长度;
根据所述时钟周期长度,结合所述第三操作数对应的就绪时钟周期,确定所述FMA指令的指令选择时钟周期;
将所述指令选择时钟周期的下一个时钟周期作为所述FMA指令的指令发射时钟周期。
4.根据权利要求3所述的方法,其特征在于,所述在所述指令发射时钟周期将所述FMA指令发射至浮点乘加部件之后,还包括:
获取所述第一操作数和所述第二操作数的乘法运算结果;
在所述就绪时钟周期的下一时钟周期对所述第三操作数和所述乘法运算结果进行加法运算。
5.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
响应于监测到所述FMA指令对应的所有源操作数均准备就绪,确定当前时钟周期的下一个时钟周期为指令选择时钟周期;
将所述指令选择时钟周期的下一个时钟周期作为所述FMA指令的指令发射时钟周期;
在所述指令发射时钟周期将所述FMA指令发射至浮点乘加部件。
6.根据权利要求1或5所述的方法,其特征在于,所述在所述指令发射时钟周期将所述FMA指令发射至浮点乘加部件之后,还包括:
将所述FMA指令从所述发射队列中删除。
7.根据权利要求3或5所述的方法,其特征在于,所述方法,还包括:
在所述指令选择时钟周期对所述FMA指令进行选中。
8.一种浮点乘加指令的延迟降低的装置,其特征在于,包括:
监测模块,用于监测发射队列中待执行的浮点乘加FMA指令对应的源操作数是否准备就绪,所述源操作数包括用于浮点乘法的第一操作数和第二操作数,以及用于浮点加法的第三操作数;
获取模块,用于响应于监测到所述FMA指令对应的所述第一操作数和所述第二操作数就绪而所述第三操作数未就绪,获取所述第三操作数对应的就绪时钟周期;
确定模块,用于根据所述就绪时钟周期确定所述FMA指令的指令发射时钟周期;
处理模块,用于在所述指令发射时钟周期将所述FMA指令发射至浮点乘加部件。
9.一种电子设备,包括:
至少一个存储器;以及,
与所述至少一个存储器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个存储器执行的指令,所述指令被所述至少一个存储器执行,以使所述至少一个存储器能够执行权利要求1-7中任一项所述的方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410644737.0A CN118227085A (zh) | 2024-05-23 | 2024-05-23 | 一种浮点乘加指令的延迟降低的方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410644737.0A CN118227085A (zh) | 2024-05-23 | 2024-05-23 | 一种浮点乘加指令的延迟降低的方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118227085A true CN118227085A (zh) | 2024-06-21 |
Family
ID=91504405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410644737.0A Pending CN118227085A (zh) | 2024-05-23 | 2024-05-23 | 一种浮点乘加指令的延迟降低的方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118227085A (zh) |
-
2024
- 2024-05-23 CN CN202410644737.0A patent/CN118227085A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100169612A1 (en) | Data-Processing Unit for Nested-Loop Instructions | |
KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
US6560697B2 (en) | Data processor having repeat instruction processing using executed instruction number counter | |
KR101533516B1 (ko) | Scale, round, getexp, round, getmant, reduce, range 및 class 명령어들을 실행할 수 있는 곱셈 덧셈 기능 유닛 | |
US10175988B2 (en) | Explicit instruction scheduler state information for a processor | |
US9547493B2 (en) | Self-timed user-extension instructions for a processing device | |
US20100095091A1 (en) | Processor, Method and Computer Program | |
KR101395260B1 (ko) | 마이크로프로세서 및 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법 | |
CN101371223B (zh) | 运算数的提早有条件选择 | |
CN116662255A (zh) | 结合超越函数硬件加速器的risc-v处理器实现方法及系统 | |
CN110377339A (zh) | 长延时指令处理装置、方法以及设备、可读存储介质 | |
CN109032665B (zh) | 微处理器中指令输出处理方法及装置 | |
CN118227085A (zh) | 一种浮点乘加指令的延迟降低的方法及其装置 | |
CN114816526B (zh) | 基于操作数域复用的多操作数指令的处理方法及其装置 | |
TWI423125B (zh) | 微處理器以及相關指令執行方法 | |
US20130311529A1 (en) | Arithmetic module, device and system | |
CN117591184B (zh) | Risc-v向量压缩乱序执行的实现方法及装置 | |
CN117008977B (zh) | 一种可变执行周期的指令执行方法、系统和计算机设备 | |
CN113760364B (zh) | 逻辑器件的控制器 | |
CN118295712A (zh) | 数据处理方法、装置、设备和介质 | |
CN118245115A (zh) | 一种转移指令的预测方法及其装置 | |
CN116107637A (zh) | 指令处理器及其方法 | |
CN116991480A (zh) | 指令处理方法、装置、电路、发射器、芯片、介质及产品 | |
CN116107927A (zh) | 数据处理装置、数据处理方法和电子设备 | |
CN117369878A (zh) | 双发射流水线的指令处理方法、装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |