CN101438233B - 用于反规格化操作数的基于模式的乘加处理器 - Google Patents
用于反规格化操作数的基于模式的乘加处理器 Download PDFInfo
- Publication number
- CN101438233B CN101438233B CN2007800163702A CN200780016370A CN101438233B CN 101438233 B CN101438233 B CN 101438233B CN 2007800163702 A CN2007800163702 A CN 2007800163702A CN 200780016370 A CN200780016370 A CN 200780016370A CN 101438233 B CN101438233 B CN 101438233B
- Authority
- CN
- China
- Prior art keywords
- floating
- point
- instruction
- described floating
- normalization
- 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.)
- Expired - Fee Related
Links
Images
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
- G06F7/487—Multiplying; Dividing
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49915—Mantissa overflow or underflow in handling 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
-
- 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
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
-
- 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)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
在反规格化支持模式中,使用浮点加法器的规格化电路来规格化或反规格化浮点乘法器的输出。以推测方式将每一浮点乘法指令转换为乘加指令,其中将加数强制为零。此保留乘积的值,同时使用所述浮点加法器的规格化电路规格化或反规格化所述乘积。如果所述操作数将不产生非规格化中间乘积或反规格化最终乘积,那么(例如)通过操作数转发来抑制所述加法操作。另外,用具有零加数的乘加指令取代每一非融合浮点乘加指令,且将具有原始乘加指令的加数的浮点加法指令插入到指令流中。如果非规格化中间结果或反规格化最终结果将不发生,那么可将所述加数恢复到所述乘加指令并将所述加法指令转换为NOP。
Description
技术领域
本揭示内容大体来说涉及处理器领域且更特定来说涉及将浮点乘法指令重新编码为浮点乘加指令以计算反规格化操作数的基于模式的方法。
背景技术
微处理器可在各种各样的应用中对数值执行计算操作。高执行速度、低功率消耗及较小的大小为处理器设计者的重要目标,尤其在嵌入式应用(例如,便携式电子装置)中。现代处理器采用管线式架构,其中顺序指令(每一者具有多个执行步骤)在执行时重叠。在管线式架构中,每一指令在一系列执行级中执行,例如提取、解码、执行及写回,其中每一者可包含多个管道级。管道级由存储元件及执行指令执行级的所有或部分的逻辑组成。指令按顺序流过所述管线。所述执行级执行所述指令所指定的算术、逻辑或存储器存取操作,且特定来说可对数值执行各种各样的算术操作。
数字处理器以定点或浮点格式表示数值。浮点数包含乘以自乘到整数指数的基数2的定点有效数位(还称作尾数)。在某些格式(例如,以引用的方式并入本文中的IEEE 754标准)中,所述浮点表示法另外包括符号位。将所述有效数位乘以自乘到整数指数的2是类似于10进制系统中的科学记数法的二进制。也就是说,所述指数的值确定位位置的数量,且所述有效数位中的二进制小数点应移位的方向识别实际数值-因此产生术语浮点。
当所述有效数位在范围1<=有效数位<2中且所述指数在其经界定范围内时,所述浮点值称作“规范”数。因此,规范的浮点数的有效数位为1.小数的形式,其中“小数”为表示大于一的有效数位的小数部分的二进制值。所述指数的值有效地向左(对于负指数)或向右(对于正指数)移位所述二进制小数点。在IEEE 754标准中,单精度浮点数的指数的值的范围为从-126到127。当以IEEE 754单精度格式编码所述数时,将原始指数加上127的偏差,使得所有经编码的指数为正数。
用小于一的有效数位(即,0<有效数位<1)且用任一指数表示的浮点值在本文中称作“非规格化”数。特别关心的非规格化浮点数的一个子集为“反规格化”数(也称为次规范数)。反规格化浮点数通过使用范围0<有效数位<1中的有效数位及指数-126表示小于1.0×2-126的值。反规格化浮点数具有0.小数形式的有效数位,其中所述小数中数前导零的范围为从零到小数-1的宽度。反规格化数有效地使用规范的有效数位的小数部分中的位位置来实现二进制小数点的超过126位位置的“左移位”以丢失精度为代价,因为剩下更少的位来准确表示所述数值。反规格化数表示非常接近零的值,且可用于实施逐渐下溢,从而允许计算在结果非常小时慢慢丢失精度。
在浮点乘法器电路的情况下,反规格化乘积可以数种方式产生。乘数或被乘数可以是反规格化数。在此情况下,中间乘积的有效数位将通常是非规格化(即,小于一)的,而最终经四舍五入的乘积可以是规范或反规格化数,此取决于操作数的数值。如果所述乘数及所述被乘数两者均为反规格化数,那么所述最终经四舍五入的乘积将为零或最小的可表示反规格化数。
此外,如果指数较小且将产生需要小于-126的指数的规格化数(对于单精度),那么两个规范数的乘积可以是反规格化数。注意,此情况不同于其中乘法的中间值采取“非规格化”形式的普通情形。规范的有效数位可采取范围[1,2)中的任一值,也就是说,确切地从一到近乎二(对于假设的5位有效数位来说为1.0000到1.1111)。两个规范的有效数位的乘积可采取范围[1,4)中的值,也就是说,确切地从一到近乎四。因此,此中间乘积有效数位可采取1.小数或1×.小数形式,后者针对从二到近乎四的值(10.0000到11.1111)。作为浮点乘法的例行程序实例,浮点乘法器通过向左移位二进制小数点并将指数递增一来调整此中间结果。在本文中不将此种“非规格化的”中间结果视为反规格化数,且本揭示内容不对其进行明确陈述。
在通用处理器应用(例如,某些嵌入式处理器)中,不需要总是支持反规格化数。举例来说,可在不显著丢失准确度的情况下将反规格化值简单地表示为零。然而,编程语言规定对反规格化数的支持。因此,支持直接执行Java码的处理器至少在Java执行模式期间适应反规格化浮点数。
可通过在检测到反规格化数时产生例外来在软件中支持反规格化浮点数,且在软件例行程序中处理所述反规格化数。此过程比较慢且产生较大程度的开销,此降低系统性能并增加功率消耗。
可通过向每一浮点计算元件添加反规格化检测及规格化电路来在硬件中支持反规格化数。举例来说,可通过将有效数位移位到规范位置(即,1.小数)且允许小于-126的指数的(非标准)值(对于单精度情况)来“规格化”反规格化数。同样,可通过将所述有效数位移位到反规格化位置(即,0.小数)使得所述指数变为-126(对于单精度情况)来“反规格化”所述结果。然而,此类额外电路增大硅面积,增大延迟且产生贯通延滞,因此潜在地增大最小循环时间且因此降低最大操作频率。另外,很少遇到反规格化数,且以普通情况为代价针对所述罕见情况优化性能会降低总处理器性能。
发明内容
浮点加法器包括用以对准加数,及用以规格化并四舍五入和的电路。根据一个或一个以上实施例,在反规格化支持模式中,使用浮点加法器的规格化电路来规格化或反规格化来自浮点乘法器的结果。以推测的方式用其中将加数强制为零的乘加(还称为乘法-累加)指令取代每一乘法指令。此引导乘法器输出穿过所述加法器电路而不改变其值,但使用所述加法器的规格化电路来规格化或反规格化所述乘积。如果确定所述中间乘积将不是反规格化而且最终乘积将不是反规格化数,那么可(例如)通过操作数转发来抑制所述操作的加法部分。经常,可通过处理乘法指令操作数的指数来在所述乘法执行早期作出此确定。
一个实施例涉及一种执行浮点乘法指令以计算非规格化中间有效数位或反规格化最终乘积的方法。将所述浮点乘法指令转换为浮点乘加指令,所述浮点乘加指令操作以执行浮点乘法操作及浮点加法操作,且将所述浮点加法操作的一个加数强制为零。
另一实施例涉及一种处理器。所述处理器包括一个或一个以上指令执行管线,其包括具有规格化电路的浮点乘法-累加单元。所述处理器另外包括管线控制器,其操作以使用所述浮点加法器的规格化电路来规格化或反规格化所述浮点乘法器所输出的非规格化中间有效数位或反规格化浮点乘积。
附图说明
图1是处理器的功能性框图。
图2是由浮点乘法器馈给的浮点加法器的功能性框图。
图3为执行浮点乘法指令的方法的流程图。
图4为执行浮点乘加指令的方法的流程图。
具体实施方式
图1描绘处理器10的功能性框图。处理器10根据控制逻辑14在指令执行管线12中执行指令。控制逻辑14包括定义各种操作模式的一个或一个以上寄存器,例如状态寄存器15。管线12可以是具有多个并行管线(例如,12a及12b)的超标量设计。每一管线12a、12b包括组织成管道级的各种寄存器或锁存器16,及一个或一个以上算术逻辑单元(ALU)18。管道级寄存器或锁存器16及ALU 18可从通用寄存器堆18中的寄存器读取操作数及/或向所述寄存器写入结果。
管线12a、12b从指令高速缓存器(I-高速缓存器或I$)20提取指令,其中存储器寻址及许由指令侧转换后备缓冲器(ITLB)22管理。数据是从数据高速缓存器(D-高速缓存器或D$)24中存取的,其中存储器寻址及许可由主转换后备缓冲器(TLB)26管理。在各种实施例中,ITLB 22可包含TLB 26的一部分的拷贝。另一选择为,可将ITLB 22与TLB 26集成在一起。同样,在处理器10的各种实施例中,可将I-高速缓存器20与D-高速缓存器24集成或联合在一起。在存储器接口34的控制下,指令高速缓存器20及/或数据高速缓存器24中的未命中导致对主(芯片外)存储器36的存取。
处理器10可包括输入/输出(I/O)接口38,其控制对各个外围装置40、42的存取。所属技术领域中的技术人员应认识到,处理器10可具有多种变化形式。举例来说,处理器10可包括用于指令及数据高速缓存中的一者或两者的二级(L2)高速缓存器。此外,可从特定实施例中省略所描绘的位于处理器10中的一个或一个以上功能性块。
在一个或一个以上实施例中,处理器10以反规格化支持模式操作,举例来说,所述模式可由状态寄存器15中的反规格化支持位指示。特定来说,每当处理器10直接执行Java码时,及在例如编程师选择支持反规格化浮点数等其它时间,可进入所述反规格化支持模式。
在反规格化支持模式中,处理器10以推测方式将每一浮点乘法指令转换为具有零加数的乘加(或乘法-累加)指令。乘加操作可以是融合或非融合类型。在融合乘加操作中,将全宽度的中间乘积(输入宽度的两倍)传递到所述加法器而不进行中间四舍五入。在非融合乘加操作中,在执行所述加法操作之前将所述乘法操作的中间乘积四舍五入(经常四舍五入到输入精度)。
在一个实施例中,以推测方式用其中将加数强制为零的融合乘加指令取代每一浮点乘法指令。通常在相应管线12a、12b中(例如,在解码级中,或在执行级之前在任何情况下)早期执行此指令流改变。通过规范的处理器操作,在融合乘加的执行级中,浮点乘法器的输出将被引导到浮点加法器的输入,如图2中所描绘。支持融合乘加指令的浮点加法器具有足以接收来自浮点乘法器的中间乘积的输入宽度。
图2是描绘浮点乘法器50的引导到浮点加法器52的输入的输出的功能性框图。浮点加法器52包括用于对准浮点加数的对准电路54、用于计算浮点和的加法电路56、用于规格化(或反规格化)所述和的规格化电路58及用于将所述经移位的和四舍五入的四舍五入电路60。到乘法器50的乘数(MR)及被乘数(MD)输入及到浮点加法器52的加数输入可以是已注册值,例如存储在GPR堆28中的那些值。被加数37多路复用到浮点加法器52中以在规范的支持模式中使用浮点加法器52。
为保留浮点乘法器50的输出的值,当规格化或反规格化所述数时,将所述浮点加法操作的加数强制为零。此可以多种方式实施。举例来说,可将零值多路复用到对准电路54中,如图2中所描绘。另一选择为,可将所述零值存储到GPR寄存器29中,将要由所述浮点乘加指令检索为规范执行的部分。作为又一实例,可用包括反规格化支持模式位的控制逻辑选通GPR寄存器29的输出,从而选断所述寄存器值并在反规格化支持模式中呈现零。在任何情况下,将所述零值作为一个加数应用到浮点加法器52,且将浮点乘法器50的双倍宽度输出用作另一加数。在加法电路56中加上零并不改变所述数的值。然后,在规格化电路58中规格化/反规格化所述数,且在四舍五入电路60中加以四舍五入。以此方式,处理器10使用浮点加法器52中的现有硬件来适应浮点乘法器50的非规格化输出,及反规格化最终结果。
在(例如)其中指令集架构仅支持非融合乘加操作的另一实施例中,以推测方式用非融合乘加指令取代每一浮点乘法指令。在此情况下,应将中间全宽度乘积路由到加法器规格化逻辑58而不进行四舍五入。此可通过各种各样的方式来实现。举例来说,所述乘积可绕开加法电路56且被直接路由到规格化逻辑58中,如在多路复用器57处所描绘。虽然未显示,但可将浮点加法器52实施为具有中间寄存器的管线式单元。在此种情况下,也可将路由到所述规格化逻辑的数据管线化以匹配。另一选择为,可修改所述浮点加法器输入逻辑以接受全宽度的中间乘积。在任一种情况下,加法电路56及规格化器58对于所述数据来说已经足够宽。此外,在非融合乘加操作的情况下,应对所述中间乘积的上半部分执行前导零计数。应将此计数路由到规格化逻辑以进行控制及指数逻辑(未显示)以用于指数产生。
通常,直到在管线中的很深处(例如,在执行级中)才知道乘数(MR)及被乘数(MD)的值。一知道所述MR及MD值便对其所有进行检查以确定其是否均为规范值且因此其将从浮点乘法器产生经规格化的有效数位。同时,可对指数值执行操作以确定最终结果是否将是规范的。如果浮点乘法器50的输出将为规范形式且所述最终结果将是规范的浮点数,那么可抑制加法操作。在此情况下,浮点乘法器50的输出可通过操作数转发而绕过浮点加法器52,如图2中的路径62所描绘。此允许取决于所述结果的后续指令消耗此数据而不等待其穿过所述加法器。在某些情况下,例如当所述结果罕见地为反规格化时,很难较早地确定所述结果是否将为反规格化。在这些情况下,将执行加法操作,以便在所述最终乘积为反规格化的情况下将其反规格化。
乘加指令的浮点乘法操作可以类似方式产生作为中间乘积的反规格化或非规格化数。在反规格化支持模式中,改变非融合乘加指令以将零值与所述乘法操作的乘积相加,且将加法指令插入到跟随所述乘加指令的指令流中,所述加法指令具有所述原始乘加指令的加数。也就是说,在执行与所述原始加数的加法操作之前将所述浮点乘法操作的全宽度乘积加零。如上文相对于将乘法指令转换为乘加指令所论述,应修改所述浮点加法器以接受更宽的中间乘积,或应将此乘积引导到规格化器。此外,应针对所述乘积的有效数位位维持前导零计数,所述计数用于控制所述规格化电路。以此方式,在通过分离的浮点加法指令执行所述加法操作之前,使用所述乘加指令的加法操作来执行所述乘积的任何规格化(或反规格化),而不改变其值。实施融合乘加指令的逻辑可处置非规格化或反规格化中间乘积而没有必要插入后续加法指令。
如图2中所描绘,将浮点乘法器50的输出引导到浮点加法器52的一个输入,且将到浮点加法器52的另一输入强制为零。加法电路56不改变所述中间乘积的值,所述中间乘积在规格化电路58中被规格化/反规格化且在四舍五入电路60中被四舍五入,如上文所说明。然后,将所述经规格化(或反规格化)的数路由到浮点加法器52的一个输入,如路径64所指示。将原始乘加指令的存储在GPR寄存器29中的加数引导到浮点加法器52的另一输入,且执行所述浮点加法指令。以此方式,在执行所述原始非融合乘加指令的加法操作之前,使用浮点加法器52中的电路规格化/反规格化浮点乘法器50的输出。
再次,通常在管线的早期(例如,在解码级中)执行加法指令到指令流的插入及所述乘加指令的改变以替代零加数。当所述乘数(MR)及被乘数(MD)的值变得已知(例如,在执行级中)时,可对其进行检查且处理指数以确定所述乘法操作是否可能产生中间非规格化输出,或最终结果是否将为反规格化。如果否,那么可通过用所述零加数替代原始加数来撤销或“取消”相乘-相加指令的改变。另一选择为,可将所插入的浮点加法指令转换为NOP(空操作),其可通过常规管线优化移除。
图3描绘当以反规格化支持模式处理浮点乘法指令时处理器10的操作。提取(例如,从指令高速缓存器20)并解码(块70)指令。如果所述处理器并非正以反规格化支持模式(块72)操作,那么其通过常规管线操作处理指令(块86)。如果所述处理器处于所述反规格化支持模式(块72)中,那么检查所述经解码的指令以确定其是否是浮点乘法指令(块74)。如果不是,那么以常规方式执行所述指令(块86)。
如果所述指令为浮点乘法指令,那么处理器10用所述浮点乘法指令替代具有零加数的浮点乘加指令(块76)。当所述浮点乘法操作的操作数可用时,对其进行检查以确定所述浮点乘法操作是否保证产生规范的输出。如果所述浮点乘法操作可能产生非规格化中间输出或最终结果可能为反规格化(块80),那么通过常规管线操作处理所述经替代的乘加指令(块86),从而使用浮点加法器52的规格化电路58规格化或反规格化所述中间乘积,如上文所说明。在融合的乘加指令的情况下,不需要进一步控制。在非融合乘加指令的情况下,虽然加法器电路56足够宽地处置所述中间乘积,但需要修改浮点加法器52以正确地将所述位路由到所述加法器。另一选择为,将所述中间乘积直接路由(可能包括干扰状态元件)到浮点加法器52的规格化电路58,如图2中所描绘。
如果确定所述浮点乘法操作将产生规范的中间及最终结果(块80),那么(例如)可通过操作数转发来抑制所述“加零”操作(块82)。此避免执行“加零”操作的性能损失,其中不需要浮点乘法器50输出的规格化/反规格化。
图4描绘当以反规格化支持模式处理浮点乘加指令时处理器10的操作。提取(例如,从指令高速缓存器20)并解码指令(块90)。如果所述处理器并非正以反规格化支持模式操作(块92),那么其通过常规管线操作处理指令(块106)。如果所述处理器处于反规格化支持模式中(块92),那么检查所述经解码的指令以确定其是否是非融合浮点乘加指令(块94)。如果所述指令不是浮点乘加指令或是融合乘加指令,那么以常规方式执行所述指令(块106)。
如果所述指令为非融合浮点乘加指令(块94),那么在执行所述浮点加法操作之前,所述处理器规格化/反规格化所述浮点乘法操作的中间乘积。首先,用所述浮点乘加指令中的加数替代所述零值(块96)。然后,将具有原始加数的浮点加法指令插入到跟随所述经修改浮点乘加指令的指令流中(块98)。
当所述浮点乘法操作的操作数可用(例如,在执行级中)时,对其进行检查以确定所述浮点乘法操作是否保证产生规范的中间及最终结果。如果所述浮点乘法操作可能产生非规格化中间或反规格化最终结果(块100),那么通过常规管线操作处理所述经修改的乘加及额外加法指令(块106),从而在执行所述浮点加法操作之前使用浮点加法器52的规格化电路58规格化/反规格化所述乘积,如上文所说明。
如果确定所述浮点乘法操作将产生规范的中间乘积及最终乘积(块100),那么抑制所述乘积规格化。用所述浮点乘加指令中的零替代原始加数(块102),且通过将所述浮点加法指令转换为NOP来抑制所述额外浮点加法操作(块104)。然后,指令处理通过常规管线操作继续(块86)。
根据一个或一个以上实施例,使用浮点加法器52中的规格化电路58规格化/反规格化浮点乘法操作的中间非规格化输出及反规格化最终结果。此消除向浮点乘法器50的输出添加规格化电路的需要,向浮点乘法器的输出添加规格化电路将增大延滞及延迟,增大硅面积并增大功率消耗。
虽然本文已参照本发明的特定特征、方面及实施例说明了本发明,但将明了在本发明的广泛范围内可存在许多变化形式、修改及其它实施例,且相应地,应将所有变化形式、修改及实施例视为归属于本揭示内容的范围内。因此,应在所有方面将本发明实施例理解为例示性而非限制性,且归属于所附权利要求书的含义及等效范围内的所有改变既定涵盖于所附权利要求书中。
Claims (20)
1.一种执行浮点乘法指令以计算反规格化输入及/或反规格化乘积的方法,其包含:
在反规格化支持模式下:
将所述浮点乘法指令转换为浮点乘加指令,所述浮点乘加指令经操作以使得浮点乘法器执行浮点乘法操作及使得浮点加法器执行浮点加法操作,以将所述浮点乘法器的乘积路由到所述浮点加法器;及
将所述浮点加法操作的一个加数强制为零,并将所述浮点乘法操作的结果作为另一个加数提供给所述浮点加法操作;及
使用所述浮点加法器的规格化电路规格化所述浮点乘法操作的结果;及
当不在反规格化支持模式下时,在所述浮点乘法器中执行所述浮点乘法操作且绕过所述浮点加法器和所述规格化电路。
2.如权利要求1所述的方法,其中将所述浮点乘法指令转换为浮点乘加指令在执行管线级之前发生。
3.如权利要求2所述的方法,其中将所述浮点乘法指令转换为浮点乘加指令在解码管线级中发生。
4.如权利要求1所述的方法,其中所述浮点乘加指令为非融合的,且进一步包含将所述浮点乘法器的输出路由到所述浮点加法器的所述规格化电路。
5.如权利要求4所述的方法,其中将所述浮点乘法器的输出路由到所述浮点加法器的所述规格化电路包含将所述浮点乘法器的所述输出直接路由到所述规格化电路。
6.如权利要求4所述的方法,其中将所述浮点乘法器的输出路由到所述浮点加法器的所述规格化电路包含通过一个或一个以上管线存储器元件将所述浮点乘法器的所述输出路由到所述规格化电路。
7.如权利要求1所述的方法,其进一步包含:
检查所述浮点乘法指令的乘数及被乘数;
基于所述检查,确定所述浮点乘法操作的所述乘积将不是反规格化数及乘法操作数不是反规格化的;及
响应于所述确定,抑制所述浮点加法操作。
8.如权利要求7所述的方法,其中检查所述乘数及被乘数在执行管线级中发生。
9.如权利要求7所述的方法,其中抑制所述浮点加法操作包含:
操作数转发所述浮点乘法器的输出,以使得其可由后续指令消耗。
10.一种执行非融合浮点乘加指令以计算非规格化输入和/或非规格化乘积的方法,包含:
在反规格化支持模式下:
将非融合浮点乘法指令转换为浮点乘加指令,所述浮点乘加指令经操作以使得浮点乘法器执行浮点乘法操作及使得浮点加法器执行浮点加法操作,以将所述浮点乘法器的乘积路由到所述浮点加法器,其中,转换所述非融合浮点乘加指令包括用所述浮点乘加指令的加数替代零值以及在所述浮点乘加指令之后插入具有所述浮点乘加指令的加数的浮点加法指令;及
将所述浮点加法操作的一个加数强制为零,并将所述浮点乘法操作的结果作为另一个加数提供给所述浮点加法操作;及
使用所述浮点加法器的规格化电路规格化所述浮点乘法操作的结果;及
当不在反规格化支持模式下时,在所述浮点乘法器中执行所述浮点乘法操作,绕过所述浮点加法器和所述规格化电路。
11.如权利要求10所述的方法,其进一步包含:
检查所述浮点乘加指令的乘数及被乘数;
基于所述检查,确定所述浮点乘法操作的所述乘积将不是反规格化数;及
基于所述检查,确定到所述浮点乘法操作的所述输入不是反规格化数;及
响应于所述确定,用所述浮点乘加指令的加数取代零加数,且将所述浮点加法指令转换为NOP。
12.一种处理器,其包含:
一个或一个以上指令执行管线;
浮点乘法器;
浮点加法器,其具有规格化电路;及
管线控制器,其经操作以:
进入反规格化支持模式,在所述反规格化支持模式下,将每个浮点乘法指令转换为浮点乘加指令以将浮点乘积输出引导至所述浮点加法器以使用所述浮点加法器的所述规格化电路规格化或反规格化所述浮点乘法器输出的所述浮点乘积;及
进入规格化支持模式,在所述规格化支持模式下,执行所述浮点乘法指令,所述浮点乘法输出绕过所述浮点加法器。
13.如权利要求12所述的处理器,其中所述管线控制器使用所述浮点加法器的所述规格化电路规通过将浮点加法操作的一个加数强制为零来规格化或反规格化所述浮点乘积输出。
14.如权利要求13所述的处理器,其中所述管线控制器在执行管道级之前引导所述管线将每一浮点乘法指令转换为浮点乘加指令。
15.如权利要求14所述的处理器,其中所述管线控制器在解码管线级中引导所述管线将每一浮点乘法指令转换为所述浮点乘加指令。
16.如权利要求12所述的处理器,其中所述管线控制器进一步经操作以通过在执行浮点乘法操作之前检查乘数及被乘数来预测所述浮点乘法器是否可能产生非规格化中间乘积或反规格化最终乘积,且如果不产生,那么就抑制对所述浮点乘法器的所述输出的规格化或反规格化。
17.如权利要求16所述的处理器,其中所述管线控制器通过操作数转发所述乘积使得其可由后续指令消耗来抑制所述浮点乘法器的所述输出的规格化或反规格化。
18.如权利要求12所述的处理器,其中所述管线控制器通过以下操作来规格化或反规格化所述反规格化浮点乘积:
引导所述管线将每一非融合浮点乘加指令转换为具有零加数的浮点乘加指令;及
在所述浮点乘加指令之后插入具有所述浮点乘加指令的所述加数的浮点加法指令。
19.如权利要求18所述的处理器,其中所述管线控制器进一步经操作以通过在执行浮点乘法操作之前检查乘数及被乘数来预测所述浮点乘法器是否可能产生非规格化中间乘积或反规格化最终乘积,且如果不产生,那么就抑制对所述浮点乘法器的所述输出的规格化。
20.如权利要求19所述的处理器,其中所述管线控制器通过用所述浮点乘加指令的所述加数替代所述零加数并将所述浮点加法指令转换为NOP来抑制对所述浮点乘法器的所述输出的规格化或反规格化。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/382,525 US7912887B2 (en) | 2006-05-10 | 2006-05-10 | Mode-based multiply-add recoding for denormal operands |
US11/382,525 | 2006-05-10 | ||
PCT/US2007/067649 WO2007133914A1 (en) | 2006-05-10 | 2007-04-27 | Mode-based multiply-add processor for denormal operands |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013100259863A Division CN103135958A (zh) | 2006-05-10 | 2007-04-27 | 用于反规格化操作数的基于模式的乘加处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101438233A CN101438233A (zh) | 2009-05-20 |
CN101438233B true CN101438233B (zh) | 2013-03-06 |
Family
ID=38461209
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800163702A Expired - Fee Related CN101438233B (zh) | 2006-05-10 | 2007-04-27 | 用于反规格化操作数的基于模式的乘加处理器 |
CN2013100259863A Pending CN103135958A (zh) | 2006-05-10 | 2007-04-27 | 用于反规格化操作数的基于模式的乘加处理器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013100259863A Pending CN103135958A (zh) | 2006-05-10 | 2007-04-27 | 用于反规格化操作数的基于模式的乘加处理器 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7912887B2 (zh) |
EP (1) | EP2024816A1 (zh) |
JP (2) | JP4938844B2 (zh) |
KR (1) | KR20090014292A (zh) |
CN (2) | CN101438233B (zh) |
WO (1) | WO2007133914A1 (zh) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7912887B2 (en) * | 2006-05-10 | 2011-03-22 | Qualcomm Incorporated | Mode-based multiply-add recoding for denormal operands |
US8078660B2 (en) * | 2007-04-10 | 2011-12-13 | The Board Of Regents, University Of Texas System | Bridge fused multiply-adder circuit |
US8046399B1 (en) * | 2008-01-25 | 2011-10-25 | Oracle America, Inc. | Fused multiply-add rounding and unfused multiply-add rounding in a single multiply-add module |
US8239440B2 (en) * | 2008-03-28 | 2012-08-07 | Oracle America, Inc. | Processor which implements fused and unfused multiply-add instructions in a pipelined manner |
US8239441B2 (en) * | 2008-05-15 | 2012-08-07 | Oracle America, Inc. | Leading zero estimation modification for unfused rounding catastrophic cancellation |
US8103858B2 (en) * | 2008-06-30 | 2012-01-24 | Intel Corporation | Efficient parallel floating point exception handling in a processor |
US8166091B2 (en) * | 2008-11-10 | 2012-04-24 | Crossfield Technology LLC | Floating-point fused dot-product unit |
US8150902B2 (en) | 2009-06-19 | 2012-04-03 | Singular Computing Llc | Processing with compact arithmetic processing element |
US9092213B2 (en) * | 2010-09-24 | 2015-07-28 | Intel Corporation | Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation |
US8965945B2 (en) * | 2011-02-17 | 2015-02-24 | Arm Limited | Apparatus and method for performing floating point addition |
US8671129B2 (en) | 2011-03-08 | 2014-03-11 | Oracle International Corporation | System and method of bypassing unrounded results in a multiply-add pipeline unit |
US8892622B2 (en) | 2011-04-07 | 2014-11-18 | Oracle International Corporation | Pipelined divide circuit for small operand sizes |
US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
US9098332B1 (en) | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
US8892619B2 (en) * | 2012-07-24 | 2014-11-18 | The Board Of Trustees Of The Leland Stanford Junior University | Floating-point multiply-add unit using cascade design |
US8996600B1 (en) * | 2012-08-03 | 2015-03-31 | Altera Corporation | Specialized processing block for implementing floating-point multiplier with subnormal operation support |
US9829956B2 (en) * | 2012-11-21 | 2017-11-28 | Nvidia Corporation | Approach to power reduction in floating-point operations |
US9286069B2 (en) | 2012-12-21 | 2016-03-15 | Arm Limited | Dynamic write port re-arbitration |
US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
CN103677739B (zh) * | 2013-11-28 | 2016-08-17 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种可配置的乘累加运算单元及其构成的乘累加运算阵列 |
US20150261542A1 (en) * | 2014-03-14 | 2015-09-17 | Arm Limited | Data processing apparatus and method for performing data processing operation with a conditional processing step |
US10019229B2 (en) * | 2014-07-02 | 2018-07-10 | Via Alliance Semiconductor Co., Ltd | Calculation control indicator cache |
US9563400B2 (en) | 2014-09-18 | 2017-02-07 | International Business Machines Corporation | Optimized structure for hexadecimal and binary multiplier array |
US9684488B2 (en) | 2015-03-26 | 2017-06-20 | Altera Corporation | Combined adder and pre-adder for high-radix multiplier circuit |
US9823897B2 (en) * | 2015-09-25 | 2017-11-21 | Arm Limited | Apparatus and method for floating-point multiplication |
US11061672B2 (en) | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
US9875084B2 (en) * | 2016-04-28 | 2018-01-23 | Vivante Corporation | Calculating trigonometric functions using a four input dot product circuit |
US10078512B2 (en) | 2016-10-03 | 2018-09-18 | Via Alliance Semiconductor Co., Ltd. | Processing denormal numbers in FMA hardware |
US10175944B2 (en) * | 2017-04-12 | 2019-01-08 | Intel Corporation | Mixed-precision floating-point arithmetic circuitry in specialized processing blocks |
CN117273096A (zh) | 2017-05-17 | 2023-12-22 | 谷歌有限责任公司 | 在硬件中执行矩阵乘法 |
US20200097799A1 (en) * | 2017-06-30 | 2020-03-26 | Intel Corporation | Heterogeneous multiplier |
US10747501B2 (en) * | 2017-08-31 | 2020-08-18 | Qualcomm Incorporated | Providing efficient floating-point operations using matrix processors in processor-based systems |
US11256509B2 (en) | 2017-12-07 | 2022-02-22 | International Business Machines Corporation | Instruction fusion after register rename |
US11157280B2 (en) | 2017-12-07 | 2021-10-26 | International Business Machines Corporation | Dynamic fusion based on operand size |
US10901694B2 (en) * | 2018-12-31 | 2021-01-26 | Micron Technology, Inc. | Binary parallel adder and multiplier |
US11347511B2 (en) * | 2019-05-20 | 2022-05-31 | Arm Limited | Floating-point scaling operation |
TW202141290A (zh) | 2020-01-07 | 2021-11-01 | 韓商愛思開海力士有限公司 | 記憶體中處理(pim)系統和pim系統的操作方法 |
US11663000B2 (en) | 2020-01-07 | 2023-05-30 | SK Hynix Inc. | Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator |
US20220229633A1 (en) | 2020-01-07 | 2022-07-21 | SK Hynix Inc. | Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator |
CN112463112B (zh) * | 2020-11-19 | 2022-08-16 | 上海壁仞智能科技有限公司 | 点积累加方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4727508A (en) * | 1984-12-14 | 1988-02-23 | Motorola, Inc. | Circuit for adding and/or subtracting numbers in logarithmic representation |
CN1155117A (zh) * | 1996-01-19 | 1997-07-23 | 张胤微 | 一种高速乘法器 |
EP0901067A2 (en) * | 1997-09-02 | 1999-03-10 | International Business Machines Corporation | Method and system for executing operations on denormalised numbers |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4825400A (en) | 1986-01-13 | 1989-04-25 | General Electric Company | Floating point accumulator circuit |
US5530663A (en) * | 1994-11-14 | 1996-06-25 | International Business Machines Corporation | Floating point unit for calculating a compound instruction A+B×C in two cycles |
JPH09507941A (ja) * | 1995-04-18 | 1997-08-12 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | multiply−add浮動小数点シーケンスにおけるウエイト・サイクルなしのブロック正規化 |
JP3313560B2 (ja) * | 1996-01-31 | 2002-08-12 | 株式会社日立製作所 | 浮動小数点演算処理装置 |
JP3658072B2 (ja) * | 1996-02-07 | 2005-06-08 | 株式会社ルネサステクノロジ | データ処理装置およびデータ処理方法 |
US5880984A (en) * | 1997-01-13 | 1999-03-09 | International Business Machines Corporation | Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments |
JP3132436B2 (ja) * | 1997-09-26 | 2001-02-05 | 日本電気株式会社 | 浮動小数点積和演算器 |
US7346643B1 (en) | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US6714957B1 (en) * | 2000-01-04 | 2004-03-30 | National Semiconductor Corporation | System and method for efficient processing of denormal results as hardware exceptions |
CA2327924A1 (en) * | 2000-12-08 | 2002-06-08 | Ibm Canada Limited-Ibm Canada Limitee | Processor design for extended-precision arithmetic |
US20020164239A1 (en) * | 2001-05-07 | 2002-11-07 | Angermeier Gregory Robert | Tiltable cargo box assembly with extension ramp |
US7080111B2 (en) * | 2001-06-04 | 2006-07-18 | Intel Corporation | Floating point multiply accumulator |
US6779013B2 (en) * | 2001-06-04 | 2004-08-17 | Intel Corporation | Floating point overflow and sign detection |
US6904446B2 (en) * | 2001-08-24 | 2005-06-07 | Freescale Semiconductor, Inc. | Floating point multiplier/accumulator with reduced latency and method thereof |
US7188133B2 (en) * | 2002-06-20 | 2007-03-06 | Matsushita Electric Industrial Co., Ltd. | Floating point number storage method and floating point arithmetic device |
US20050228844A1 (en) * | 2004-04-08 | 2005-10-13 | International Business Machines Corporation | Fast operand formatting for a high performance multiply-add floating point-unit |
US7225323B2 (en) * | 2004-11-10 | 2007-05-29 | Nvidia Corporation | Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines |
US7451172B2 (en) * | 2005-02-10 | 2008-11-11 | International Business Machines Corporation | Handling denormal floating point operands when result must be normalized |
US7720900B2 (en) * | 2005-09-09 | 2010-05-18 | International Business Machines Corporation | Fused multiply add split for multiple precision arithmetic |
US7912887B2 (en) * | 2006-05-10 | 2011-03-22 | Qualcomm Incorporated | Mode-based multiply-add recoding for denormal operands |
US8078660B2 (en) * | 2007-04-10 | 2011-12-13 | The Board Of Regents, University Of Texas System | Bridge fused multiply-adder circuit |
-
2006
- 2006-05-10 US US11/382,525 patent/US7912887B2/en active Active
-
2007
- 2007-04-27 WO PCT/US2007/067649 patent/WO2007133914A1/en active Application Filing
- 2007-04-27 KR KR1020087030127A patent/KR20090014292A/ko not_active Application Discontinuation
- 2007-04-27 CN CN2007800163702A patent/CN101438233B/zh not_active Expired - Fee Related
- 2007-04-27 JP JP2009509974A patent/JP4938844B2/ja not_active Expired - Fee Related
- 2007-04-27 EP EP07761472A patent/EP2024816A1/en not_active Withdrawn
- 2007-04-27 CN CN2013100259863A patent/CN103135958A/zh active Pending
-
2011
- 2011-02-14 US US13/026,335 patent/US8447800B2/en not_active Expired - Fee Related
-
2012
- 2012-02-23 JP JP2012037454A patent/JP2012150821A/ja not_active Ceased
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4727508A (en) * | 1984-12-14 | 1988-02-23 | Motorola, Inc. | Circuit for adding and/or subtracting numbers in logarithmic representation |
CN1155117A (zh) * | 1996-01-19 | 1997-07-23 | 张胤微 | 一种高速乘法器 |
EP0901067A2 (en) * | 1997-09-02 | 1999-03-10 | International Business Machines Corporation | Method and system for executing operations on denormalised numbers |
Also Published As
Publication number | Publication date |
---|---|
CN101438233A (zh) | 2009-05-20 |
JP2012150821A (ja) | 2012-08-09 |
CN103135958A (zh) | 2013-06-05 |
JP2009536771A (ja) | 2009-10-15 |
US20070266071A1 (en) | 2007-11-15 |
US20110137970A1 (en) | 2011-06-09 |
WO2007133914A1 (en) | 2007-11-22 |
EP2024816A1 (en) | 2009-02-18 |
JP4938844B2 (ja) | 2012-05-23 |
KR20090014292A (ko) | 2009-02-09 |
US8447800B2 (en) | 2013-05-21 |
US7912887B2 (en) | 2011-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101438233B (zh) | 用于反规格化操作数的基于模式的乘加处理器 | |
US6108772A (en) | Method and apparatus for supporting multiple floating point processing models | |
US11347511B2 (en) | Floating-point scaling operation | |
US8577948B2 (en) | Split path multiply accumulate unit | |
JP4953644B2 (ja) | 正規化および丸め処理前にフィードバックを行う浮動小数点ユニットのためのシステムおよび方法 | |
US5748516A (en) | Floating point processing unit with forced arithmetic results | |
US8214417B2 (en) | Subnormal number handling in floating point adder without detection of subnormal numbers before exponent subtraction | |
KR100302686B1 (ko) | 독립적인승산및가산명령어를이용하여고정밀도승산-가산연산을수행하기위한방법및장치 | |
US7461117B2 (en) | Floating point unit with fused multiply add and method for calculating a result with a floating point unit | |
US5940311A (en) | Immediate floating-point operand reformatting in a microprocessor | |
US6105047A (en) | Method and apparatus for trading performance for precision when processing denormal numbers in a computer system | |
CN107608655B (zh) | 微处理器中执行fma指令的方法和微处理器 | |
Schwarz et al. | FPU implementations with denormalized numbers | |
US8046400B2 (en) | Apparatus and method for optimizing the performance of x87 floating point addition instructions in a microprocessor | |
KR101528340B1 (ko) | 부동 소수점 유닛에서 오버시프트의 빠른 검출을 위한 메카니즘 | |
US5943249A (en) | Method and apparatus to perform pipelined denormalization of floating-point results | |
Boersma et al. | The POWER7 binary floating-point unit | |
US5768169A (en) | Method and apparatus for improved processing of numeric applications in the presence of subnormal numbers in a computer system | |
US5764549A (en) | Fast floating point result alignment apparatus | |
US6154760A (en) | Instruction to normalize redundantly encoded floating point numbers | |
US11983509B2 (en) | Floating-point accumulator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130306 Termination date: 20150427 |
|
EXPY | Termination of patent right or utility model |