CN105404494A - 一种基于内部前推的浮点融合乘加方法、装置及处理器 - Google Patents
一种基于内部前推的浮点融合乘加方法、装置及处理器 Download PDFInfo
- Publication number
- CN105404494A CN105404494A CN201510957595.4A CN201510957595A CN105404494A CN 105404494 A CN105404494 A CN 105404494A CN 201510957595 A CN201510957595 A CN 201510957595A CN 105404494 A CN105404494 A CN 105404494A
- Authority
- CN
- China
- Prior art keywords
- intermediate result
- value
- pushing away
- index
- exponential quantity
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种基于内部前推的浮点融合乘加方法、装置及处理器,其中该方法包括五级流水线:第一级流水线中执行指数加比选操作和第一部分压缩操作,指数加比选操作根据第一前推值和第二前推值进行,第一前推值为对阶移位操作产生的中间结果所对应的指数值,第二前推值为前导零操作产生的中间结果所对应的指数值;第二级流水线中执行对阶移位操作和第二部分压缩操作,对阶移位操作根据第三前推值进行,第三前推值为相加操作产生的中间结果;第三级流水线中执行前导零操作和相加操作,前导零操作和相加操作均根据第三前推值进行;第四级流水线中执行第一规格化操作;第五级流水线中执行舍入操作。本发明具有阻塞时间短、执行速度快的优点。
Description
技术领域
本发明涉及数字信号处理领域,具体涉及一种基于内部前推的浮点融合乘加方法、装置及处理器。
背景技术
融合乘加操作(FMA,FusedMultiply-add)是一种一步执行A+B×C类型的浮点乘加操作,是一种常见的算术运算操作,它只进行一次舍入。也就是说,非融合乘加操作先计算B×C的结果,将结果舍入到N个有效位,然后再把结果和A相加,最后再将相加后的结果舍入到N个有效位。而融合乘加操作是以全精度计算A+B×C的值,然后将最终的结果舍入到N个有效位。可见融合乘加操作相比于传统的通过浮点加法器和浮点乘法器联合起来进行浮点乘加操作,具有计算速度快、计算精度高等的优点。从而,目前融合乘加器在许多通用处理器中,如ARM、POWER、Itanium等,代替了浮点加法器和浮点乘法器,用于执行浮点加、减、乘、乘加等算术操作。另外,在GPU、DSP等领域,也获得了非常广泛的应用。
目前通常采用的融合乘加方法例如是IBM公司Power6/7处理器的浮点部件中采用的方法,其工作原理是采用7级流水,如图1所示,支持第七阶段结果到第一阶段的数据前推(forwarding),和第六阶段结果到第一阶段的数据前推。其中第七阶段到第一阶段:将最终结果前推到下一条指令的操作数部分。第六阶段到第一阶段:将规格化还未舍入的结果前推到下一条指令的操作数部分。这种前推技术是将运算结果前推到浮点乘加器的入口处,在这种情况下,当出现数据相关的指令时仍旧需要等待几拍才能执行,容易引起流水线较长时间的阻塞,例如指令1执行操作:A2=A1+B1×C1,紧随其后的指令2执行操作:A3=A2+B2×C2,即指令1和指令2发生了读后写相关(ReadAfterWrite,RAW)采用这种前推技术,从浮点乘加器计算出来的结果被前推到浮点乘加器的入口处,那么指令2仍旧会被阻塞(n-2)拍才可以进入流水线,n为浮点乘加器流水线级数,所以降低了融合乘加操作的执行速度。
发明内容
因此,本发明要解决的技术问题在于克服现有技术中的浮点融合乘加方法阻塞时间长、执行速度低的缺陷。
为此,本发明的一种基于内部前推的浮点融合乘加方法,包括如下步骤:
在第一级流水线中执行包括指数加比选操作和阵列乘法操作中的第一部分压缩操作,所述指数加比选操作包括当不存在第一前推值或第二前推值时,对加运算中加数的指数值、第一积运算中第一因数的指数值和所述第一积运算中第二因数的指数值进行指数加比选操作,产生对阶移位操作的第一控制信号,所述第一前推值为对阶移位操作产生的中间结果所对应的指数值,所述第二前推值为前导零操作产生的中间结果所对应的指数值,所述阵列乘法操作包括对所述第一因数的尾数值和所述第二因数的尾数值进行阵列乘法操作,分为所述第一部分压缩操作和第二部分压缩操作;
在第二级流水线中执行包括对阶移位操作和所述阵列乘法操作中的第二部分压缩操作,所述对阶移位操作包括当不存在第三前推值时,根据所述第一控制信号对所述加数的尾数值进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值,所述第三前推值为相加操作产生的中间结果;
在第三级流水线中执行包括前导零操作和相加操作,所述前导零操作包括当不存在第三前推值时,对所述对阶移位操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值,所述相加操作包括当不存在第三前推值时,对所述对阶移位操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果;
在第四级流水线中执行包括第一规格化操作,所述第一规格化操作包括对所述相加操作产生的中间结果进行规格化操作;
在第五级流水线中执行包括舍入操作,所述舍入操作包括对所述第一规格化操作产生的中间结果进行舍入操作,产生浮点融合乘加结果值并输出。
优选地,所述指数加比选操作还包括当存在第一前推值和第二前推值时,对所述第一前推值、所述第二前推值、第二积运算中第三因数的指数值和所述第二积运算中第四因数的指数值进行指数加比选操作,产生对阶移位操作的第二控制信号。
优选地,所述当存在第一前推值和第二前推值时,对所述第一前推值、所述第二前推值、第二积运算中第三因数的指数值和所述第二积运算中第四因数的指数值进行指数加比选操作,产生对阶移位操作的第二控制信号的步骤包括:
当存在第一前推值和第二前推值时,对所述第一前推值、第二积运算中第三因数的指数值和所述第二积运算中第四因数的指数值进行第一次指数加比选操作,产生中间指数值;
对所述第二前推值和所述中间指数值进行第二次指数加比选操作,产生对阶移位操作的第二控制信号。
优选地,所述对阶移位操作还包括当存在第三前推值时,根据所述第二控制信号对所述相加操作产生的中间结果进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值。
优选地,在第二级流水线中执行还包括第二规格化操作,所述第二规格化操作包括当存在第三前推值时,对所述相加操作产生的中间结果进行规格化操作。
优选地,所述前导零操作还包括当存在第三前推值时,对所述第二规格化操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值;
所述相加操作还包括当存在第三前推值时,对所述第二规格化操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果。
本发明的一种基于内部前推的浮点融合乘加装置,包括:
第一级单元,包括用于在第一级流水线中执行指数加比选操作的指数加比选单元和用于在第一级流水线中执行阵列乘法操作中的第一部分压缩操作的第一部分压缩单元,所述指数加比选单元包括第一指数加比选子单元,用于当不存在第一前推值或第二前推值时,对加运算中加数的指数值、第一积运算中第一因数的指数值和所述第一积运算中第二因数的指数值进行指数加比选操作,产生对阶移位操作的第一控制信号,所述第一前推值为对阶移位操作产生的中间结果所对应的指数值,所述第二前推值为前导零操作产生的中间结果所对应的指数值,所述阵列乘法操作包括对所述第一因数的尾数值和所述第二因数的尾数值进行阵列乘法操作,分为所述第一部分压缩操作和第二部分压缩操作;
第二级单元,包括用于在第二级流水线中执行对阶移位操作的对阶移位单元和用于在第二级流水线中执行所述阵列乘法操作中的第二部分压缩操作的第二部分压缩单元,所述对阶移位单元包括第一对阶移位子单元,用于当不存在第三前推值时,根据所述第一控制信号对所述加数的尾数值进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值,所述第三前推值为相加操作产生的中间结果;
第三级单元,包括用于在第三级流水线中执行前导零操作的前导零单元和用于在第三级流水线中执行相加操作的相加单元,所述前导零单元包括第一前导零子单元,用于当不存在第三前推值时,对所述对阶移位操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值,所述相加单元包括第一相加子单元,用于当不存在第三前推值时,对所述对阶移位操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果;
第四级单元,包括用于在第四级流水线中执行第一规格化操作的第一规格化单元,所述第一规格化单元包括第一规格化子单元,用于对所述相加操作产生的中间结果进行规格化操作;
第五级单元,包括用于在第五级流水线中执行舍入操作的舍入单元,所述舍入单元包括舍入子单元,用于对所述第一规格化操作产生的中间结果进行舍入操作,产生浮点融合乘加结果值并输出。
优选地,所述指数加比选单元还包括第二指数加比选子单元,用于当存在第一前推值和第二前推值时,对所述第一前推值、所述第二前推值、第二积运算中第三因数的指数值和所述第二积运算中第四因数的指数值进行指数加比选操作,产生对阶移位操作的第二控制信号。
优选地,所述第二指数加比选子单元包括:
第一指数加比选子子单元,用于当存在第一前推值和第二前推值时,对所述第一前推值、第二积运算中第三因数的指数值和所述第二积运算中第四因数的指数值进行第一次指数加比选操作,产生中间指数值;
第二指数加比选子子单元,用于对所述第二前推值和所述中间指数值进行第二次指数加比选操作,产生对阶移位操作的第二控制信号。
优选地,所述对阶移位单元还包括第二对阶移位子单元,用于当存在第三前推值时,根据所述第二控制信号对所述相加操作产生的中间结果进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值。
优选地,所述第二级单元还包括用于在第二级流水线中执行第二规格化操作的第二规格化单元,所述第二规格化单元包括第二规格化子单元,用于当存在第三前推值时,对所述相加操作产生的中间结果进行规格化操作。
优选地,所述前导零单元还包括第二前导零子单元,用于当存在第三前推值时,对所述第二规格化操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值;
所述相加单元还包括第二相加子单元,用于当存在第三前推值时,对所述第二规格化操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果。
本发明的一种处理器,包括如权利要求7-12任一项所述的浮点融合乘加装置。
本发明技术方案,具有如下优点:
1.本发明实施例提供的基于内部前推的浮点融合乘加方法,通过设置前推对阶移位操作产生的中间结果所对应的指数值、前导零操作产生的中间结果所对应的指数值和相加操作产生的中间结果,即将中间结果根据属性分为了三部分,分别前推到浮点融合乘加方法的步骤的不同的内部位置,从而可以更加快速地前推计算结果,加快了浮点融合乘加方法的执行速度,并且显著减少了因为数据真相关(RAW)引起的流水线的阻塞惩罚,提高了流水线的吞吐率。并且通过采用五级流水的设计,减少了流水级数,进一步提高了浮点融合乘加操作的执行速度。
2.本发明实施例提供的基于内部前推的浮点融合乘加方法,通过先进行对第一前推值、第二积运算中第三因数的指数值和第二积运算中第四因数的指数值的指数加比选操作,再进行对第二前推值和中间指数值的指数加比选操作,从而配合了流水线运行中先获得第一前推值再获得第二前推值的过程,获得一个前推值就计算一次加比选操作,进一步削减了流水线中阻塞的节拍,提高了执行速度。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中浮点乘加器的原理框图;
图2为本发明实施例1中基于内部前推的浮点融合乘加方法的一个具体示例的流程图;
图3为本发明实施例2中基于内部前推的浮点融合乘加装置的一个具体示例的原理框图;
图4为本发明实施例2中基于内部前推的浮点融合乘加装置的一个具体示例的原理框图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
实施例1
本实施例提供一种基于内部前推的浮点融合乘加方法,例如应用于执行B×C+A形式的浮点融合乘加操作,该浮点融合乘加操作可以为一个指令(即该指令执行操作:B×C+A),也可以包括至少两个指令(例如指令1执行操作:A2=B1×C1+A1,指令2执行操作:A3=B2×C2+A2,指令3执行操作:A4=B3×C3+A3等等),所以下文中的第一积运算例如为B1×C1,第二积运算例如为B2×C2。如图2所示,该浮点融合乘加方法包括五级流水线,包括如下步骤:
S1、在第一级流水线中执行包括指数加比选操作和阵列乘法操作中的第一部分压缩操作。
指数加比选操作包括当不存在第一前推值或第二前推值时,对加运算中加数的指数值、第一积运算中第一因数的指数值和第一积运算中第二因数的指数值进行指数加比选操作,产生对阶移位操作的第一控制信号,以控制移位数大小和移位方向。第一前推值为对阶移位操作产生的中间结果所对应的指数值。第二前推值为前导零操作产生的中间结果所对应的指数值。当存在第一前推值和第二前推值时,对第一前推值、第二前推值、第二积运算中第三因数的指数值和第二积运算中第四因数的指数值进行指数加比选操作,产生对阶移位操作的第二控制信号。
阵列乘法操作包括对第一因数的尾数值和第二因数的尾数值进行阵列乘法操作,采用乘法压缩阵列,由于乘法压缩阵列的路径较长,所以将阵列乘法操作分为第一部分压缩操作和第二部分压缩操作来执行。
S2、在第二级流水线中执行包括对阶移位操作和阵列乘法操作中的第二部分压缩操作。
对阶移位操作包括当不存在第三前推值时,根据第一控制信号对加数的尾数值进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值,前推至第一级流水线阶段。第三前推值为相加操作产生的中间结果。当存在第三前推值时,根据第二控制信号对相加操作产生的中间结果进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值。
S3、在第三级流水线中执行包括前导零操作和相加操作。当存在第三前推值时,在第二级流水线中执行还包括第二规格化操作。
前导零操作包括当不存在第三前推值时,对对阶移位操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值,前推至第一级流水线阶段,前导零操作计算出相加结果进行规格化所需要的左移位数。当存在第三前推值时,对第二规格化操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值。
相加操作包括当不存在第三前推值时,对对阶移位操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果,前推至第二级流水线阶段。当存在第三前推值时,对第二规格化操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果。
第二规格化操作包括当存在第三前推值时,对相加操作产生的中间结果进行规格化操作。通过增加第二规格化操作,在存在多指令的RAW读后写数据相关时,可以进行浮点融合乘加操作的内部前推,无需等待最终结果计算出来后再前推,从而削减了这种数据相关带来的流水线阻塞的拍数。
S4、在第四级流水线中执行包括第一规格化操作。
第一规格化操作包括对相加操作产生的中间结果进行规格化操作。
S5、在第五级流水线中执行包括舍入操作。
舍入操作包括对第一规格化操作产生的中间结果进行舍入操作,产生浮点融合乘加结果值并输出。
举例来说,设指令1执行操作:A2=B1×C1+A1,那么按照上述基于内部前推的浮点融合乘加方法,顺序执行如下步骤:
S1-1、对A1的指数值ea、B1的指数值eb和C1的指数值ec进行指数加比选操作,产生对阶移位操作的第一控制信号;以及,对B1的尾数值mb和C1的尾数值mc进行阵列乘法操作中的第一部分压缩操作。
S1-2、根据第一控制信号对A1的尾数值ma进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值;以及,对第一部分压缩操作产生的中间结果进行阵列乘法操作中的第二部分压缩操作。
S1-3、对对阶移位操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果分别进行前导零操作和相加操作,并前推前导零操作产生的中间结果所对应的指数值,前推相加操作产生的中间结果。
S1-4、对相加操作产生的中间结果进行规格化操作。
S1-5、对规格化操作产生的中间结果进行舍入操作,产生浮点融合乘加结果值并输出。
再举例来说,设指令1执行操作:A2=B1×C1+A1,紧随其后的指令2执行操作:A3=B2×C2+A2,那么按照上述基于内部前推的浮点融合乘加方法,顺序执行如下步骤:
S2-1、对A1的指数值ea1、B1的指数值eb1和C1的指数值ec1进行指数加比选操作,产生对阶移位操作的第一控制信号;以及,对B1的尾数值mb1和C1的尾数值mc1进行阵列乘法操作中的第一部分压缩操作。
S2-2、根据第一控制信号对A1的尾数值ma1进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值exp_bypass1;以及,对第一部分压缩操作产生的中间结果进行阵列乘法操作中的第二部分压缩操作。
S2-3、对对阶移位操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果分别进行前导零操作和相加操作,并前推前导零操作产生的中间结果所对应的指数值lza_bypass1,前推相加操作产生的中间结果man_bypass1。
S2-4、对exp_bypass1、B2的指数值eb2和C2的指数值ec2进行指数加比选操作,产生中间指数值,再对lza_bypass1和中间指数值进行指数加比选操作,产生对阶移位操作的第二控制信号;以及,对B2的尾数值mb2和C2的尾数值mc2进行阵列乘法操作中的第一部分压缩操作。
S2-5、对man_bypass1进行规格化操作;根据第二控制信号对man_bypass1进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值exp_bypass2;以及,对第一部分压缩操作产生的中间结果进行阵列乘法操作中的第二部分压缩操作。
S2-6、对S2-5中对阶移位操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果分别进行前导零操作和相加操作,并前推前导零操作产生的中间结果所对应的指数值lza_bypass2,前推相加操作产生的中间结果man_bypass2。
S2-7、对S2-6中相加操作产生的中间结果进行规格化操作。
S2-8、对S2-7中规格化操作产生的中间结果进行舍入操作,产生浮点融合乘加结果值并输出。
上述基于内部前推的浮点融合乘加方法,通过设置前推对阶移位操作产生的中间结果所对应的指数值、前导零操作产生的中间结果所对应的指数值和相加操作产生的中间结果,即将中间结果根据属性分为了三部分,分别前推到浮点融合乘加方法的步骤的不同的内部位置,最佳能使得流水线只阻塞一拍,从而可以更加快速地前推计算结果,加快了浮点融合乘加方法的执行速度,并且显著减少了因为数据真相关(RAW)引起的流水线的阻塞惩罚,提高了流水线的吞吐率。并且通过采用五级流水的设计,减少了流水级数,进一步提高了浮点融合乘加操作的执行速度。
优选地,上述指数加比选操作中当存在第一前推值和第二前推值时,对第一前推值、第二前推值、第二积运算中第三因数的指数值和第二积运算中第四因数的指数值进行指数加比选操作,产生对阶移位操作的第二控制信号的步骤包括:
S11、当存在第一前推值和第二前推值时,对第一前推值、第二积运算中第三因数的指数值和第二积运算中第四因数的指数值进行第一次指数加比选操作,产生中间指数值。
S12、对第二前推值和中间指数值进行第二次指数加比选操作,产生对阶移位操作的第二控制信号。
本领域的技术人员应当理解,对第一前推值、第二前推值、第二积运算中第三因数的指数值和第二积运算中第四因数的指数值进行指数加比选操作并不限于由上述步骤S11-S12来实现,也可以由其他能够实现对四个操作数进行加比选操作的方法来实现。
上述基于内部前推的浮点融合乘加方法,通过先进行对第一前推值、第二积运算中第三因数的指数值和第二积运算中第四因数的指数值的指数加比选操作,再进行对第二前推值和中间指数值的指数加比选操作,从而配合了流水线运行中先获得第一前推值再获得第二前推值的过程,获得一个前推值就计算一次加比选操作,进一步削减了流水线中阻塞的节拍,提高了执行速度。
实施例2
对应于实施例1,本实施例提供一种基于内部前推的浮点融合乘加装置,包括:
第一级单元1,包括用于在第一级流水线中执行指数加比选操作的指数加比选单元和用于在第一级流水线中执行阵列乘法操作中的第一部分压缩操作的第一部分压缩单元,指数加比选单元包括第一指数加比选子单元,用于当不存在第一前推值或第二前推值时,对加运算中加数的指数值、第一积运算中第一因数的指数值和第一积运算中第二因数的指数值进行指数加比选操作,产生对阶移位操作的第一控制信号,第一前推值为对阶移位操作产生的中间结果所对应的指数值,第二前推值为前导零操作产生的中间结果所对应的指数值,阵列乘法操作包括对第一因数的尾数值和第二因数的尾数值进行阵列乘法操作,分为第一部分压缩操作和第二部分压缩操作;
第二级单元2,包括用于在第二级流水线中执行对阶移位操作的对阶移位单元和用于在第二级流水线中执行阵列乘法操作中的第二部分压缩操作的第二部分压缩单元,对阶移位单元包括第一对阶移位子单元,用于当不存在第三前推值时,根据第一控制信号对加数的尾数值进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值,第三前推值为相加操作产生的中间结果;
第三级单元3,包括用于在第三级流水线中执行前导零操作的前导零单元和用于在第三级流水线中执行相加操作的相加单元,前导零单元包括第一前导零子单元,用于当不存在第三前推值时,对对阶移位操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值,相加单元包括第一相加子单元,用于当不存在第三前推值时,对对阶移位操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果;
第四级单元4,包括用于在第四级流水线中执行第一规格化操作的第一规格化单元,第一规格化单元包括第一规格化子单元,用于对相加操作产生的中间结果进行规格化操作;
第五级单元5,包括用于在第五级流水线中执行舍入操作的舍入单元,舍入单元包括舍入子单元,用于对第一规格化操作产生的中间结果进行舍入操作,产生浮点融合乘加结果值并输出。
优选地,指数加比选单元还包括第二指数加比选子单元,用于当存在第一前推值和第二前推值时,对第一前推值、第二前推值、第二积运算中第三因数的指数值和第二积运算中第四因数的指数值进行指数加比选操作,产生对阶移位操作的第二控制信号。
优选地,第二指数加比选子单元包括:
第一指数加比选子子单元,用于当存在第一前推值和第二前推值时,对第一前推值、第二积运算中第三因数的指数值和第二积运算中第四因数的指数值进行第一次指数加比选操作,产生中间指数值;
第二指数加比选子子单元,用于对第二前推值和中间指数值进行第二次指数加比选操作,产生对阶移位操作的第二控制信号。
优选地,对阶移位单元还包括第二对阶移位子单元,用于当存在第三前推值时,根据第二控制信号对相加操作产生的中间结果进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值。
优选地,第二级单元还包括用于在第二级流水线中执行第二规格化操作的第二规格化单元,第二规格化单元包括第二规格化子单元,用于当存在第三前推值时,对相加操作产生的中间结果进行规格化操作。
优选地,前导零单元还包括第二前导零子单元,用于当存在第三前推值时,对第二规格化操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值;
相加单元还包括第二相加子单元,用于当存在第三前推值时,对第二规格化操作产生的中间结果和阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果。
举例来说,仅执行指令1:A2=B1×C1+A1操作时,上述基于内部前推的浮点融合乘加装置的结构框图如图3所示,工作原理为:A1的指数值ea1、B1的指数值eb1和C1的指数值ec1分别输入第一指数加比选子单元,B1的尾数值mb1和C1的尾数值mc1分别输入第一部分压缩单元。然后,第一指数加比选子单元的输出值和A1的尾数值ma1输入第一对阶移位子单元,第一部分压缩单元的输出值输入第二部分压缩单元。然后,第一对阶移位子单元的输出值和第二部分压缩单元的输出值分别输入第一前导零子单元和第一相加子单元。然后,第一前导零子单元的输出值和第一相加子单元的输出值分别输入第一规格化子单元。然后,第一规格化子单元的输出值输入舍入子单元,舍入子单元的输出值作为浮点融合乘加装置的输出值。
如果先执行指令1:A2=B1×C1+A1操作,紧随其后执行指令2:A3=B2×C2+A2操作,即指令2和指令1发生读后写相关RAW,那么上述基于内部前推的浮点融合乘加装置的结构框图如图4所示,工作原理为:A1的指数值ea1、B1的指数值eb1和C1的指数值ec1分别输入第一指数加比选子单元,B1的尾数值mb1和C1的尾数值mc1分别输入第一部分压缩单元。然后,第一指数加比选子单元的输出值和A1的尾数值ma1输入第一对阶移位子单元,第一部分压缩单元的输出值输入第二部分压缩单元。然后,第一对阶移位子单元的输出值和第二部分压缩单元的输出值分别输入第一前导零子单元和第一相加子单元,第一对阶移位子单元的输出值的指数值exp_bypass1、B2的指数值eb2和C2的指数值ec2分别输入第一指数加比选子子单元,B2的尾数值mb2和C2的尾数值mc2分别输入第一部分压缩单元。然后,第一前导零子单元的输出值的指数值lza_bypass1和第一指数加比选子子单元的输出值分别输入第二指数加比选子子单元,第一相加子单元的输出值分别输入第二规格化子单元和第二对阶移位子单元,第一部分压缩单元的输出值输入第二部分压缩单元。然后,第二规格化子单元的输出值和第二部分压缩单元的输出值分别输入第二前导零子单元和第二相加子单元。然后,第二前导零子单元和第二相加子单元的输出值分别输入舍入子单元,舍入子单元的输出值作为浮点融合乘加装置的输出值。其他包含更多指令的浮点融合乘加装置的工作原理与上述包含两个指令的工作原理相类似,区别仅仅是内部前推随着指令的增多而增多,此处不再详述。
上述基于内部前推的浮点融合乘加方法,通过设置前推对阶移位操作产生的中间结果所对应的指数值、前导零操作产生的中间结果所对应的指数值和相加操作产生的中间结果,即将中间结果根据属性分为了三部分,分别前推到浮点融合乘加方法的步骤的不同的内部位置,从而可以更加快速地前推计算结果,加快了浮点融合乘加方法的执行速度,并且显著减少了因为数据真相关(RAW)引起的流水线的阻塞惩罚,提高了流水线的吞吐率。并且通过采用五级流水的设计,减少了流水级数,进一步提高了浮点融合乘加操作的执行速度。
实施例3
本实施例提供一种处理器,包括实施例2中的浮点融合乘加装置。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
Claims (13)
1.一种基于内部前推的浮点融合乘加方法,其特征在于,包括如下步骤:
在第一级流水线中执行包括指数加比选操作和阵列乘法操作中的第一部分压缩操作,所述指数加比选操作包括当不存在第一前推值或第二前推值时,对加运算中加数的指数值、第一积运算中第一因数的指数值和所述第一积运算中第二因数的指数值进行指数加比选操作,产生对阶移位操作的第一控制信号,所述第一前推值为对阶移位操作产生的中间结果所对应的指数值,所述第二前推值为前导零操作产生的中间结果所对应的指数值,所述阵列乘法操作包括对所述第一因数的尾数值和所述第二因数的尾数值进行阵列乘法操作,分为所述第一部分压缩操作和第二部分压缩操作;
在第二级流水线中执行包括对阶移位操作和所述阵列乘法操作中的第二部分压缩操作,所述对阶移位操作包括当不存在第三前推值时,根据所述第一控制信号对所述加数的尾数值进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值,所述第三前推值为相加操作产生的中间结果;
在第三级流水线中执行包括前导零操作和相加操作,所述前导零操作包括当不存在第三前推值时,对所述对阶移位操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值,所述相加操作包括当不存在第三前推值时,对所述对阶移位操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果;
在第四级流水线中执行包括第一规格化操作,所述第一规格化操作包括对所述相加操作产生的中间结果进行规格化操作;
在第五级流水线中执行包括舍入操作,所述舍入操作包括对所述第一规格化操作产生的中间结果进行舍入操作,产生浮点融合乘加结果值并输出。
2.根据权利要求1所述浮点融合乘加方法,其特征在于,所述指数加比选操作还包括当存在第一前推值和第二前推值时,对所述第一前推值、所述第二前推值、第二积运算中第三因数的指数值和所述第二积运算中第四因数的指数值进行指数加比选操作,产生对阶移位操作的第二控制信号。
3.根据权利要求2所述浮点融合乘加方法,其特征在于,所述当存在第一前推值和第二前推值时,对所述第一前推值、所述第二前推值、第二积运算中第三因数的指数值和所述第二积运算中第四因数的指数值进行指数加比选操作,产生对阶移位操作的第二控制信号的步骤包括:
当存在第一前推值和第二前推值时,对所述第一前推值、第二积运算中第三因数的指数值和所述第二积运算中第四因数的指数值进行第一次指数加比选操作,产生中间指数值;
对所述第二前推值和所述中间指数值进行第二次指数加比选操作,产生对阶移位操作的第二控制信号。
4.根据权利要求2或3所述浮点融合乘加方法,其特征在于,所述对阶移位操作还包括当存在第三前推值时,根据所述第二控制信号对所述相加操作产生的中间结果进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值。
5.根据权利要求1-4任一项所述浮点融合乘加方法,其特征在于,在第二级流水线中执行还包括第二规格化操作,所述第二规格化操作包括当存在第三前推值时,对所述相加操作产生的中间结果进行规格化操作。
6.根据权利要求5所述浮点融合乘加方法,其特征在于,所述前导零操作还包括当存在第三前推值时,对所述第二规格化操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值;
所述相加操作还包括当存在第三前推值时,对所述第二规格化操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果。
7.一种基于内部前推的浮点融合乘加装置,其特征在于,包括:
第一级单元,包括用于在第一级流水线中执行指数加比选操作的指数加比选单元和用于在第一级流水线中执行阵列乘法操作中的第一部分压缩操作的第一部分压缩单元,所述指数加比选单元包括第一指数加比选子单元,用于当不存在第一前推值或第二前推值时,对加运算中加数的指数值、第一积运算中第一因数的指数值和所述第一积运算中第二因数的指数值进行指数加比选操作,产生对阶移位操作的第一控制信号,所述第一前推值为对阶移位操作产生的中间结果所对应的指数值,所述第二前推值为前导零操作产生的中间结果所对应的指数值,所述阵列乘法操作包括对所述第一因数的尾数值和所述第二因数的尾数值进行阵列乘法操作,分为所述第一部分压缩操作和第二部分压缩操作;
第二级单元,包括用于在第二级流水线中执行对阶移位操作的对阶移位单元和用于在第二级流水线中执行所述阵列乘法操作中的第二部分压缩操作的第二部分压缩单元,所述对阶移位单元包括第一对阶移位子单元,用于当不存在第三前推值时,根据所述第一控制信号对所述加数的尾数值进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值,所述第三前推值为相加操作产生的中间结果;
第三级单元,包括用于在第三级流水线中执行前导零操作的前导零单元和用于在第三级流水线中执行相加操作的相加单元,所述前导零单元包括第一前导零子单元,用于当不存在第三前推值时,对所述对阶移位操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值,所述相加单元包括第一相加子单元,用于当不存在第三前推值时,对所述对阶移位操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果;
第四级单元,包括用于在第四级流水线中执行第一规格化操作的第一规格化单元,所述第一规格化单元包括第一规格化子单元,用于对所述相加操作产生的中间结果进行规格化操作;
第五级单元,包括用于在第五级流水线中执行舍入操作的舍入单元,所述舍入单元包括舍入子单元,用于对所述第一规格化操作产生的中间结果进行舍入操作,产生浮点融合乘加结果值并输出。
8.根据权利要求7所述浮点融合乘加装置,其特征在于,所述指数加比选单元还包括第二指数加比选子单元,用于当存在第一前推值和第二前推值时,对所述第一前推值、所述第二前推值、第二积运算中第三因数的指数值和所述第二积运算中第四因数的指数值进行指数加比选操作,产生对阶移位操作的第二控制信号。
9.根据权利要求8所述浮点融合乘加装置,其特征在于,所述第二指数加比选子单元包括:
第一指数加比选子子单元,用于当存在第一前推值和第二前推值时,对所述第一前推值、第二积运算中第三因数的指数值和所述第二积运算中第四因数的指数值进行第一次指数加比选操作,产生中间指数值;
第二指数加比选子子单元,用于对所述第二前推值和所述中间指数值进行第二次指数加比选操作,产生对阶移位操作的第二控制信号。
10.根据权利要求8或9所述浮点融合乘加装置,其特征在于,所述对阶移位单元还包括第二对阶移位子单元,用于当存在第三前推值时,根据所述第二控制信号对所述相加操作产生的中间结果进行对阶移位操作并前推对阶移位操作产生的中间结果所对应的指数值。
11.根据权利要求7-10任一项所述浮点融合乘加装置,其特征在于,所述第二级单元还包括用于在第二级流水线中执行第二规格化操作的第二规格化单元,所述第二规格化单元包括第二规格化子单元,用于当存在第三前推值时,对所述相加操作产生的中间结果进行规格化操作。
12.根据权利要求11所述浮点融合乘加装置,其特征在于,所述前导零单元还包括第二前导零子单元,用于当存在第三前推值时,对所述第二规格化操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行前导零操作并前推前导零操作产生的中间结果所对应的指数值;
所述相加单元还包括第二相加子单元,用于当存在第三前推值时,对所述第二规格化操作产生的中间结果和所述阵列乘法操作中的第二部分压缩操作产生的中间结果进行相加操作并前推相加操作产生的中间结果。
13.一种处理器,其特征在于,包括如权利要求7-12任一项所述的浮点融合乘加装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510957595.4A CN105404494A (zh) | 2015-12-18 | 2015-12-18 | 一种基于内部前推的浮点融合乘加方法、装置及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510957595.4A CN105404494A (zh) | 2015-12-18 | 2015-12-18 | 一种基于内部前推的浮点融合乘加方法、装置及处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105404494A true CN105404494A (zh) | 2016-03-16 |
Family
ID=55469998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510957595.4A Pending CN105404494A (zh) | 2015-12-18 | 2015-12-18 | 一种基于内部前推的浮点融合乘加方法、装置及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105404494A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109818733A (zh) * | 2019-03-27 | 2019-05-28 | 苏州中晟宏芯信息科技有限公司 | 一种高级加密标准运算电路及其加解密方法 |
CN111078188A (zh) * | 2019-12-16 | 2020-04-28 | 广东三维家信息科技有限公司 | JavaScript运算中浮点数据处理方法、装置及电子设备 |
CN112230882A (zh) * | 2020-10-28 | 2021-01-15 | 海光信息技术股份有限公司 | 浮点数处理装置、浮点数加法装置及浮点数处理方法 |
CN112558918A (zh) * | 2020-12-11 | 2021-03-26 | 北京百度网讯科技有限公司 | 用于神经网络的乘加运算方法和装置 |
-
2015
- 2015-12-18 CN CN201510957595.4A patent/CN105404494A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109818733A (zh) * | 2019-03-27 | 2019-05-28 | 苏州中晟宏芯信息科技有限公司 | 一种高级加密标准运算电路及其加解密方法 |
CN109818733B (zh) * | 2019-03-27 | 2022-04-26 | 苏州中晟宏芯信息科技有限公司 | 一种高级加密标准运算电路及其加解密方法 |
CN111078188A (zh) * | 2019-12-16 | 2020-04-28 | 广东三维家信息科技有限公司 | JavaScript运算中浮点数据处理方法、装置及电子设备 |
CN112230882A (zh) * | 2020-10-28 | 2021-01-15 | 海光信息技术股份有限公司 | 浮点数处理装置、浮点数加法装置及浮点数处理方法 |
CN112558918A (zh) * | 2020-12-11 | 2021-03-26 | 北京百度网讯科技有限公司 | 用于神经网络的乘加运算方法和装置 |
CN112558918B (zh) * | 2020-12-11 | 2022-05-27 | 北京百度网讯科技有限公司 | 用于神经网络的乘加运算方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106406810B (zh) | 微处理器及其方法 | |
KR102318494B1 (ko) | 곱셈 가산기 | |
CN105404494A (zh) | 一种基于内部前推的浮点融合乘加方法、装置及处理器 | |
KR20190090817A (ko) | 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법 | |
JP7042276B2 (ja) | 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステム | |
JP4232838B2 (ja) | 再構成可能なsimd型プロセッサ | |
CN104111816A (zh) | Gpdsp中多功能simd结构浮点融合乘加运算装置 | |
CN104375802A (zh) | 一种乘除法器及运算方法 | |
CN106250098A (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
CN106970775A (zh) | 一种可重构定浮点通用加法器 | |
US11507531B2 (en) | Apparatus and method to switch configurable logic units | |
CN103279323B (zh) | 一种加法器 | |
US20040267853A1 (en) | Method and apparatus for implementing power of two floating point estimation | |
US9389835B2 (en) | Finite field inverter | |
US5675528A (en) | Early detection of overflow and exceptional quotient/remainder pairs for nonrestoring twos complement division | |
US6202078B1 (en) | Arithmetic circuit using a booth algorithm | |
US3417236A (en) | Parallel binary adder utilizing cyclic control signals | |
CN204143432U (zh) | 一种乘除法器 | |
CN104346134B (zh) | 用于执行缩小和舍入算术运算的数据处理装置和方法 | |
US9753690B2 (en) | Splitable and scalable normalizer for vector data | |
Giri et al. | Pipelined floating-point arithmetic unit (fpu) for advanced computing systems using fpga | |
KR100900790B1 (ko) | 재구성형 프로세서 연산 방법 및 장치 | |
RU2642381C1 (ru) | Цифровой функциональный преобразователь | |
CN101615114A (zh) | 完成两次乘法两次加法两次位移的微处理器实现方法 | |
Chang et al. | A multi-functional dot product unit with SIMD architecture for embedded 3D graphics engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160316 |
|
WD01 | Invention patent application deemed withdrawn after publication |