CN101438233B - 用于反规格化操作数的基于模式的乘加处理器 - Google Patents

用于反规格化操作数的基于模式的乘加处理器 Download PDF

Info

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
Application number
CN2007800163702A
Other languages
English (en)
Other versions
CN101438233A (zh
Inventor
肯尼思·艾伦·多克瑟尔
帕蒂克·苏尼尔·拉尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101438233A publication Critical patent/CN101438233A/zh
Application granted granted Critical
Publication of CN101438233B publication Critical patent/CN101438233B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum 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)。作为浮点乘法的例行程序实例,浮点乘法器通过向左移位二进制小数点并将指数递增一来调整此中间结果。在本文中不将此种“非规格化的”中间结果视为反规格化数,且本揭示内容不对其进行明确陈述。
在通用处理器应用(例如,某些嵌入式处理器)中,不需要总是支持反规格化数。举例来说,可在不显著丢失准确度的情况下将反规格化值简单地表示为零。然而,
Figure GSB00000169956300021
编程语言规定对反规格化数的支持。因此,支持直接执行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来抑制对所述浮点乘法器的所述输出的规格化或反规格化。
CN2007800163702A 2006-05-10 2007-04-27 用于反规格化操作数的基于模式的乘加处理器 Expired - Fee Related CN101438233B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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