CN102349049B - 快速检测浮点单元中的移位的机制 - Google Patents
快速检测浮点单元中的移位的机制 Download PDFInfo
- Publication number
- CN102349049B CN102349049B CN201080011918.6A CN201080011918A CN102349049B CN 102349049 B CN102349049 B CN 102349049B CN 201080011918 A CN201080011918 A CN 201080011918A CN 102349049 B CN102349049 B CN 102349049B
- Authority
- CN
- China
- Prior art keywords
- mantissa
- floating
- lsb
- threshold value
- 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.)
- Active
Links
- 238000007667 floating Methods 0.000 title claims abstract description 45
- 238000001514 detection method Methods 0.000 title claims description 14
- 230000007246 mechanism Effects 0.000 title description 5
- 238000006073 displacement reaction Methods 0.000 claims description 78
- 230000004044 response Effects 0.000 claims description 8
- 230000015654 memory Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 5
- 238000000034 method Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000004744 fabric Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
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/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
一种浮点单元,其包括浮点加法器以在各自都有指数和尾数的第一浮点数和第二浮点数之间执行浮点加法运算。所述浮点单元还包括可以计算相应于一些位位置的移位值以移位第二尾数使得所述第二指数值与所述第一指数值相同的对齐移位器。所述对齐移位器可检测移位值大于或等于选定过移位阈值的过移位条件。所述选定过移位阈值由在包括最小过移位阈值和最大过移位阈值的过移位值范围内的基数为2的、有数目最多的在最低有效位以零开始的连续位的数构成。
Description
技术领域
本发明涉及处理器,特别涉及处理器的浮点运算。
背景技术
在计算系统中,浮点数是有理数的数字表示。一般来说,“浮点”一词是指与该数的有效位相比,基数或小数点可以被移到任意地方的想法。位置信息可以分开表示。有一些方式来表示浮点数,但最普遍的标准是由电气和电子工程师学会(IEEE)754标准定义的。
浮点运算提供了超越定点运算的明显优势,因为浮点数可以表示更广泛范围的值。然而,浮点运算可能计算慢。因此,在考虑处理器的总体性能时,计算系统可以执行浮点算术运算的速度的措施是第一位关切的。因此,当计算系统执行诸如乘加操作(FMA)之类浮点运算时,以尽可能及时的方式地检测“过移位”(overshift)条件可能是重要的。例如,当执行FMA时,加数必须被移位以与积有效对齐。要做到这一点,就计算移位量。作为计算的一部分,过移位条件的检测是在关键路径上。在许多传统的系统中,逻辑电路可以在一个常数和一个右移数之间执行比较操作。这种比较是在关键时序路径上,作比较的门数可以很多,从而有一个比可接受的时序路径延迟更大的时序路径延迟。
发明内容
公开了过移位检测机制的各种实施例。在一个实施例中,例如可在处理器中使用的一个浮点单元包括一个浮点加法器,该加法器被配置为在有第一指数和第一尾数的第一浮点数和有第二指数和第二尾数的第二浮点数之间执行浮点加法运算。该浮点单元还包括可以计算相应于一些位位置的移位值以移位第二尾数使得该第二指数值与该第一指数值相同的对齐移位器。该对齐移位器可检测移位值大于或等于选定的过移位阈值的过移位条件(overshiftcondition)。另外,该对齐移位器可以响应检测过移位条件提供过移位指示。该选定的过移位阈值由在包括最小过移位阈值和最大过移位阈值的过移位值范围内的基数为2的、有数目最多的在最低有效位以零开始的连续位的数构成。
附图说明
图1是说明通用处理器核心的一个实施例的广义化的框图。
图2是图1的浮点单元124c的实施例的一部分的框图。
图3是示出了一些不同长度的加数移位的图。
图4是示出了过移位检测逻辑简化实现的图。
由于本发明可承受各种修改和替换形式,所以其具体实施例在附图中是以举例的示出的,将在此详细介绍。但是,应当认识到,附图及其详细说明不是为了将本发明限制到所公开的特定形式,与此相反,其意图是涵盖在由所附权利要求书所界定的本发明的精神和范围内的所有的修改、等同物和替代物。请注意,在整个本申请中是在宽容的意义上(即有潜在可能、能够)而不是在强制性的意义上(即必须)使用“可以”一词的。
具体实施方式
现在翻到图1,所示为处理器10的一个实施例的广义化的框图。其它实施例是可能的和考虑过的。如图1所示,处理器10包括预取/预解码单元12、分支预测单元14、指令高速缓存16、指令对齐单元18、解码单元20、保留站22、功能单元24、加载/存储单元26、数据高速缓存28、寄存器文件30、重排序缓冲区32、MROM单元34、总线接口单元37和L2高速缓存39。请注意,在不同的实施例中,在解码单元20、保留站22、和功能单元24中的每一个可以包括任何数目的独立单位,因为在超标量处理器中可以有其每一个有各自的解码单元、保留站和功能单元的多个管道。因此,在所示实施例中,功能单元24包括整数单元124a、124b和浮点单元(FPU)124c。然而,在其它实施例中,可使用其它数目的整数单元和FPU 124c。
预取/预解码单元12被耦合以接收来自总线接口单元37的指令,并进一步被耦合到指令高速缓存16和分支预测单元14。类似地,分支预测单元14被耦合到指令高速缓存16。再进一步,分支预测单元14被耦合到解码单元20和功能单元24。指令高速缓存16进一步被耦合到MROM单元34和指令对齐单元18。指令对齐单元18接着被耦合到解码单元20。解码单元20被耦合到加载/存储单元26和保留站22。保留站22进一步被耦合到各自的功能单元24。此外,解码单元20和保留站22被耦合到寄存器文件30和重排序缓冲区32。功能单元24被耦合到加载/存储单元26、寄存器文件30以及重排序缓冲区32。数据高速缓存28被耦合到加载/存储单元26和总线接口单元37。总线接口单元37进一步被耦合到L2高速缓存39和总线。最后,MROM单元34被耦合到解码单元20。
指令高速缓存16是被提供来存储指令的高速缓存存储器。指令取自指令高速缓存16,并派送到解码单元20。在一个实施例中,指令高速缓存16被配置为在具有64字节线(1个字节由8个二进制位构成)的2路组相联结构中存储高达64k字节的指令。可替换地,可以采用任何其它期望的配置和大小。例如,值得注意的是,指令高速缓存16可以作为完全关联的、集关联的或直接映射的配置来实现。
指令被预取/预解码单元12存储到指令高速缓存16。指令和/或数据可按照预取计划在其向指令高速缓存16或加载/存储单元26的请求之前预取。可以由解码单元20直接解码的指令被称作“快速路径”指令。根据一个实施例,其余的x86指令被称作MROM指令。MROM指令是确定为对解码单元20来说解码太复杂的指令。MROM指令通过调用MROM单元34来执行。更具体地说,当遇到一个MROM指令,MROM单元34就将该指令解析和发布为定义的快速路径指令的子集以执行所需的操作。MROM单元34将快速路径指令的子集分派到解码单元20。
在所示实施例中,处理器10采用分支预测推测提取条件分支指令之后的指令。包括分支预测单元14来执行分支预测操作。解码单元20和功能单元24可以为分支预测单元14提供更新信息。解码单元20可以检测未被分支预测单元14预测的分支指令。功能单元24执行该分支指令并确定预测的分支指令是否不正确。分支方向可以是从分支指令的目标地址取后续指令的“取”。相反地,分支方向可以是从与该分支指令连续的存储器位置取后续指令的“不取”。当检测到未预测的分支指令时,在该未预测的分支指令之后的指令都将被从处理器10的各单元摈弃。在一个可替换的配置中,分支预测单元14可被耦合到重排序缓冲区32而不是解码单元20和功能单元24,并且可以从重排序缓冲区32接收分支未预测的信息。可以由分支预测单元14采用多种合适的分支预测算法。
从指令高速缓存16提取的指令被传达到指令对齐单元18。由于指令是从指令高速缓存16中提取的,所以相应的预解码数据被扫描以便为指令对齐单元18(和MROM单元34)提供与被提取的指令有关的信息。指令对齐单元18利用所述扫描数据将指令与解码单元20的每一个单元对齐。在一个实施例中,指令对齐单元1 8将来自三套8指令字节的指令与解码单元20对齐。
解码单元20被配置为解码从指令对齐单元18接收的指令。寄存器操作数信息被检测并传送到寄存器文件30和重排序缓冲区32。此外,如果指令需要一个或多个存储器操作来执行,解码单元20就将存储器操作调度到加载/存储单元26。每一指令都被解码为用于功能单元24的一系列控制值,这些控制值与可以与指令包括的操作数地址信息和移位或即时数据一起被分派到保留站22。在一个特定的实施例中,每一个指令被解码成可以由功能单元124a-124b分别执行的两个操作。
处理器10支持乱序(out of order)执行,从而采用重排序缓冲区32来跟踪用于寄存器读和写操作的原始程序序列、执行寄存器重命名、允许预测指令执行和分支预测错误恢复以及便于精确异常。
在解码单元20的输出提供的指令控制值和即时或移位数据被直接发送到各自的保留站22。在一个实施例中,保留站22的每一个单元都能为多达六项待签发给相应功能单元的待执行指令保持指令信息(即,指令控制值以及操作数的值、操作数的标签和/或即时数据)。
一个特定的指令解码后,如果需要的操作数是寄存器的位置,就使寄存器地址信息同时向重排序缓冲区32和寄存器文件30发去。本领域技术人员会明白,x86寄存器文件包括8个32位实寄存器(即通常称为EAX、EBX、ECX、EDX、EBP、ESI、EDI和ESP)。在采用x86处理器结构也称为IA-32结构的处理器10的实施例中,寄存器文件30包括用于32位实寄存器的每一个的存储位置。另外的存储位置可以包括在寄存器文件30中供MROM单元34使用。
如前所述,保留站22在指令由相应的功能单元124a、124b或124c执行之前一直存储指令。如果(i)一个指令的操作数已经被提供;和(ii)操作数尚未提供给同一保留站22内的、在程序顺序上在该指令之前的那些指令,该指令就被选择执行。要说明的是,当一条指令被功能单元24内的单元中的一个执行时,那条指令的结果被直接传递到等待结果的任一保留站22,在同一时间结果被传递来更新重排序缓冲区32(这项技术通常被称作“结果转送”)。在相关的结果被转送的时钟周期,一个指令可以被选择执行并传递给功能单元24。在这种情况下,保留站22将转发的结果发送给功能单元24。在指令可以解码为待由功能单元24执行的多个操作的实施例中,操作可以被安排为彼此分开。
在一个实施例中,整数单元124a和124b中的每一个被配置为执行加法和减法的整数运算以及移位、旋转、逻辑运算和分支运算。所述运算是响应由解码单元20为特定指令解码的控制值而执行的。应指出,FPU 124c也可以被用来执行浮点运算。因此,FPU 124c包括浮点乘加(FMA)单元125。该FPU 124c可以作为协处理器工作,接收来自MROM单元34或重排序缓冲区32的指令,并随后与重排序缓冲区32通讯以完成指令。此外,整数单元124a和124b可以被配置为为加载/存储单元26执行的加载和存储存储器的操作执行地址生成。在一个特定的实施例中,整数单元124a和124b可以包括用于生成地址的地址生成单元和用于执行其余功能的执行单元。在一个时钟周期中,这两个单元可以根据不同的指令或操作而独立运作。
如下文更详细说明的那样,在一个实施例中,FPU 124c包含可包括可以检测在速度比常规的浮点单元更快的浮点运算期间的过移位的对齐移位器控制逻辑210的FMA单元125。特别地,在一个实施例中,对齐移位器控制逻辑210可以通过为将要被加到另一个加数或两个数的乘积的加数计算过移位值、然后将计算值与选定的过移位阈值比较来检测过移位。在各个实施例中,所选定的过移位阈值是一个在包括最小过移位阈值和最大过移位阈值的过移位值范围内的基数为2的、有数目最多的在最低有效位以零开始的连续位的数。这一选定的过移位值应实现在FMA单元125的关键时序路径中的一个上有最少数目的门延迟的过移位检测逻辑电路。
加载/存储单元26在功能单元24和数据高速缓存28之间提供了接口。在一个实施例中,加载/存储单元26可以由具有用于未访问数据高速缓存28的待加载或待存储的数据和地址信息的存储位置的一个加载/存储缓冲区和具有用于已访问数据高速缓存28的加载或存储的数据和地址信息的存储位置的另一个加载/存储缓冲区配置。
数据高速缓存28是一个被提供来暂时存储在加载/存储单元26和主存储器子系统之间传输的数据的高速的高速缓存存储器。在一个实施例中,数据高速缓存28可以是集关联结构。应理解,数据高速缓存28可以用多种特定的存储器配置实现,包括集关联配置、全关联配置、直接映射配置以及任何合适的大小或其它配置。
在采用x86处理器结构的处理器10的一个具体实施例中,指令高速缓存16和数据缓存28被线性寻址和物理标记。该线性地址通过由指令指定的移位量和由x86地址转换机制的段部分指定的基址形成。线性地址可以可选地转换成用于访问主存储器的物理地址。线性到物理的转换是由x86地址转换机制的页部分指定的。将物理地址与物理标签进行比较来确定命中/错失状态。
总线接口单元37可配置为在处理器10和计算机系统的其它组件之间通过系统总线通讯。例如,总线可以与数字设备公司(Digital Equipment Corporation)开发的EV-6总线兼容。可替换地,可以使用包括基于分组的、单向或双向连接等的任何合适的互连结构。总线接口单元37可以进一步与L2高速缓存39通讯。
在一个实施中,L2高速缓存39可以是既存储指令又储存数据的二级缓存。例如,L2高速缓存39的大小可以是例如256千字节、512千字节或1兆字节。在其它实施例中,可以使用更小或更大的尺寸。L2缓存39可能采用直接映射或设置关联配置。
值得注意的是,虽然图1的处理器10在x86结构中是作为处理器实现的,但预期在其它实施例中,处理器10可以用任何其它结构实施。另外,处理器10可以作为多核处理器的一部分或作为专用集成电路(ASIC)内的嵌入式处理器或类似物来实现。
参考图2,图2示出了图1的FMA单元125的一个实施例的一部分的框图。值得注意的是,为简明起见,在图2中各个组成部分都被省略了,仅示出了与讨论有密切关系的FMA单元125的一部分。在所示的实施例中,FMA 125是作为由侧标题FX1至FX6所示的流水线单元示出的,但预期在其它实施例中,可以实施非流水线的设计。还应注意,由FMA 125的所示出的部分提供的数据通路被配置为处理正常情况。也就是说,是加数的尾数的MSB始终是逻辑值1的情况。事实上,在加数尾数的MSB为0的非正常情况和都为0的情况是由一个或多个不同的数据通路及相应的电路处理的。
如图所示,FMA 125包括多个寄存器来存储传入的加数‘C’和被乘数‘A’和‘B’。更具体地说,‘A’、‘B’和‘C’的指数可存储在寄存器指定指数201中,而加数‘C’和被乘数‘A’和‘B’的尾数可以作为64位值分别存储在寄存器202、203和204中。此外,指数201寄存器被耦合到一个指数加法器和对齐移位器控制单元210以及在下一流水线级FX2中的第二指数寄存器212。第二指数寄存器212被耦合到下一流水线级FX3中的指数寄存器214,它被耦合到一个多路复用器(mux)218。 mux 218的输出被耦合到指数递减寄存器(decrementer)219、指数递增寄存器(incrementer)220和mux 221的一个输入。指数递减寄存器219和指数递增寄存器220的输出都各自被耦合到mux 221的其它输入。mux 221的输出被耦合到在流水线级FX5的开始的指数寄存器。指数寄存器225的输出可用于在流水线级FX6的在规格化和舍入单元250内的最后的总和计算,产生最终结果并将其存储到结果寄存器255。规格化和舍入单元250也可存储例外/状态寄存器260内的任何异常和/或状态位。
返回参考FX1级,尾数寄存器203的输出被耦合到布思(booth)编码器206,布思编码器206被耦合到乘数208的部分积部分207的一个输入。尾数寄存器204的输出被耦合到乘数208的部分积部分207的另一输入。乘数208的输出被耦合到进位存贮加法器(CSA)213。
对齐移位器控制210的输出被耦合以提供用于使用前导零预测器单元223的指示指定的“用LZA”211。对齐移位器控制210的输出也被耦合到右移位器单元209,右移位器单元209接着被耦合到CSA 213和可配置为保存一个对齐的、移位的加数‘C’的对齐寄存器215。对齐寄存器215的输出被耦合递增寄存器222,递增寄存器222被耦合到194位总和寄存器227,194位总和寄存器227其输出被耦合到规格化和舍入单元250。
返回参考FX3级,CSA 213的输出被耦合到总和寄存器216和进位寄存器217,总和寄存器216和进位寄存器217被依次耦合到前导零预测器223和进位传播加法器224。前导零预测器223的输出被耦合到规格化控制寄存器226,而进位传播加法器224的输出被耦合到总和寄存器227。
如上所述,在操作过程中,根据‘A’和‘B’的积的指数值(即积的值)和加数‘C’的指数值,加数‘C’(即加数值)的尾数可能需要移位以使积值和加数值的指数是相同的,用于以后的加法运算。相应地,对齐移位器控制210可以计算合适的移位值并将它提供给右移位器209。此外,如下面结合图3和图4的说明更具体地说明的那样,对齐移位器控制210可以确定计算的移位值会产生不足移位(undershift)或过移位。此外,如果对齐移位器控制210确定过移位已经发生,对齐移位器控制210就可能会导致粘滞位(sticky bit)被设置。
图3是示出了一些不同长短的加数移位的图。参考图2和图3,如图2所示的实施例支持64位尾数值。因此,积将是128位。如图3所示,积的左侧的66位被称作增量区,因为当加数和积相加时,对该区中的位的影响是最多再加一个单元。积的右侧的63位被称作粘滞区(sticky region)。粘滞区是指如果加数被移位以使任何加数位在该粘滞区叠合,那么这些位在逻辑上是‘或’(OR)在一起以产生在舍入操作中可以使用的粘滞位。粘滞区的宽度可以定义为尾数宽度(Mw)减1。
如上所述,在将加数加到积之前,加数可能需要移位以使积和加数的指数是相同的。在实际中,移位量可以限于其中移位加数至少有一个位与积重叠的移位、加上需要作为左对齐加数的保护区的几位(比积更有效)。在这一例示的实施例中,保护位数(Gb)选为2。
相应地,在将64位加数加到128位积(例如,两个64位尾数的乘数)之前,如图3的加数302所示,其位在126:63的范围的零的移位将离开加数。左移加数将被限制在67位移位,以便在加数的LSB和积的MSB位之间有两个保护位。除此之外,不足移位条件会存在,使得如图3的未过移位加数301所示,没有加数位与积位对齐。在实践中认为只在一个方向移位是简单的。可以加一个常数来偏置移位量以使不足移位被编码为零的移位和移位器总是右移。例如加数指数等于积的指数的加数302将产生67位右移。本文此后对移位量的所有引用是指这一偏置的表示。
右移位超过2Mw+Gb但在移位范围内的加数由移位加数303示出,其中移位加数303的一些位在积内,一些位在粘滞范围内。移位边界可以被定义为例如3Mw+Gb-1。用于例示的数据通路的移位边界是193,这是最大的右移,因为这样的移位将使加数的最高有效位(MSB)与积的最低有效位(LSB)对齐。值得说明的是,粘滞范围必须包括至少Mw-1位,以便对这一最大右移位而言积的LSB以下的所有尾数位都被包括在该粘滞中。大于该最大值的右移位被认为是过移位。因为加数的MSB始终为1,所以任一过移位都导致粘滞被设置。
然而,因为加数的MSB在此实现中总是1,并且因为零和非正规数是在不同的数据通路上处理的,将加数的MSB置于粘滞范围的移位值将正确地设置粘滞位,而与过移位指令的过移位无关,因为加数MSB会导致正常的粘滞逻辑设置粘滞指示。相应地,不是计算在确切边界处的移位(移位量大于最大右移)的移位,而是使用在最小移位阈值和最大移位阈值之间的任意处选择的过移位阈值来设置过移位检测电路。最小移位阈值可表示为移位器宽度,它在这一结合的乘法实施中是Gb+3Mw。最大移位阈值是4Mw+Gb-2,或者对Gb=2而言简单地为4(Mw)。值得说明的是,在纯加法器中,最小移位阈值可表示为Gb+2Mw,最大移位阈值可表示为3Mw+Gb-2。对于图3的64位FMA实现,最小移位阈值和最大移位阈值分别为194和256。
在所示的实施例中,如过移位加数305所示,移位阈值被选定为256个或更多,因为如下面进一步说明的那样,实施过移位检测的逻辑可以有更少的逻辑级和因而更少的门延迟。当如图所示存在这样的过移位条件时,被迫设置了粘滞位,这是因为在粘滞范围内没有留下加数位来逻辑“或”。
参考图4,图中示出了描绘基于图3所示的移位的过移位检测逻辑简化实现的框图。如上所述,右移位量(即移位值)可以如图所示计算。在所示的实施例中,指数表示为18位无符号数(例如,ExpA[17:0]),但移位值占用为负的不足移位值,从而移位器包含一个附加的符号位S[18]。为了检测过移位,检测逻辑将移位量和过移位阈值进行比较。在传统的系统中,过移位阈值>=194。在本实施例中,移位阈值>=256。在图4中的描述示出了为检测如过移位410示出的移位值>=194和为检测如过移位425示出的移位值>=256而必须进行检查的位。
例如,如图所示,两个数字X和Y被定义。如果符号位是逻辑值0并且位[17:8]的任一个是逻辑值1,X值就评估为真。如果符号位是逻辑值0并且第7位和第6位都是逻辑值1并且位[5:1]的至少一个是逻辑值1,Y值就评估为真。相应地,为检测过移位条件>=194,X和Y的逻辑“或”操作必须实现。然而,为检测过移位条件>=256,只有数字X必须实现。因此,为检测>=256,可以比较较少的位,比较它们的逻辑有较少的逻辑电平和因而较少的时序路径延迟。
作为另一个例子,在支持24位数据通路和因而24位尾数和2位保护区位的系统中,可以选择在74和96的范围中的过移位阈值,其中数字74来自Gb+3Mw(例如,2+3(24))以及数字96来自4Mw(例如,4(24))。相应地,在使用上述技术的实现中,选择过移位阈值为>=96可以产生最少的逻辑电平和从而在过移位检测时序路径中的最小数目的门延迟。
相反,在又一使用53位数据通路的例中,最大过移位阈值可能不是最佳选择。在这一例中,过移位阈值范围将为>=161和>=212。在这一例中,212的过移位值并不提供最佳的逻辑电平实现。事实上,可以显示,>=192将提供在过移位检测逻辑的关键时序路径中的与该范围内的其它选择相比的最小的门延迟,因为192在LSB开始的位位置已经有多位连续的零,并且左移到第一个位位置的是1。
因此,可以选择在最小移位阈值和最大移位阈值之间的和有数目最多的自该值的LSB以零开始的连续位的移位阈值。更具体地,在上面的使用161和212作为最小移位阈值和最大移位阈值的例子中,212d对应于11010100b,而192d对应于11000000b。
值得说明的是,虽然上述实施例是以乘加器为上下文说明的,但可以设想,在其它实施例中,过移位检测逻辑可以用任何浮点加法器实现。在这样的实施方案中将有两个加数而不是一个积和一个加数,如上所述,移位器的宽度将为Gb+2(Mw),最大移位阈值将为3(Mw)。
进一步指出的是,上面所述的浮点单元可以在能够执行浮点运算功能的任何类型的处理单元中实施。
虽然已经相当详细地说明了上面的实施例,但对本领域技术人员,一旦充分理解了上述公开,大量的变形和修改就将是明显的。下面的权利要求书被解释为其本意包括所有这样的变形和修改。
Claims (20)
1.浮点单元,其包括:
浮点加法器,其配置为在有第一指数和第一尾数的第一浮点数和有第二指数和第二尾数的第二浮点数之间执行浮点加法运算;
对齐移位器,其配置为计算相应于一些位位置的移位值以移位所述第二尾数使得所述第二指数值与所述第一指数值相同;
其中所述对齐移位器配置为检测所述移位值大于或等于选定的过移位阈值的过移位条件;
其中所述对齐移位器还配置为响应检测所述过移位条件提供过移位指示;
其中所述选定的过移位阈值由在包括最小过移位阈值和最大过移位阈值的过移位值范围内的基数为2的、有数目最多的在最低有效位以零开始的连续位的数构成。
2.如权利要求1所述的浮点单元,其中,所述对齐移位器配置为移位到右侧,所述第二尾数配置为由所述移位值表示的位位置的数目。
3.如权利要求1所述的浮点单元,其中,所述最小过移位阈值对应于来自使所述第二尾数右移使得所述第二尾数的最高有效位在所述第一尾数的最低有效位右侧的移位值和对应于保护区位数加上所述第一尾数的数据通路中的位数的两倍。
4.如权利要求1所述的浮点单元,其中,在所述第一尾数的最低有效位(LSB)右侧的位数对应于粘滞区,其中所述粘滞区包括其值等于比在所述第一尾数的数据通路中的位数少1的位数。
5.如权利要求4所述的浮点单元,其中,响应于使所述第二尾数右移以使得在所述第一尾数的最低有效位右侧的所述第二尾数的任意最低有效位在逻辑上“或”在一起以生成粘滞位。
6.如权利要求5所述的浮点单元,其中,所述对齐移位器进一步配置为导致所述粘滞位响应检测到所述过移位条件而设置。
7.如权利要求5所述的浮点单元,其中,所述最大过移位阈值对应于来自使所述第二尾数右移使得所述第二尾数的最高有效位与所述粘滞区的所述最低有效位对齐的移位值。
8.如权利要求1所述的浮点单元,还包括配置为使第三浮点数乘以第四浮点数生成一个积值并加第五浮点数到所述积值的浮点乘法器/加法器,其中,所述积值包括积指数和积尾数,所述第五浮点数包括第三指数值和第三尾数。
9.如权利要求8所述的浮点单元,其中,所述对齐移位器进一步配置为计算与移位所述第三尾数使得所述第三指数值与所述积的指数值相同的位位置的数目相应的第二移位值。
10.如权利要求9所述的浮点单元,其中,所述最小过移位阈值对应于保护区位数加上所述第三尾数的数据通路中的位数的3倍。
11.如权利要求9所述的浮点单元,其中,在所述积尾数数位的最低有效位(LSB)右侧的位数对应于粘滞区,其中所述粘滞区包括其值等于比在所述第三尾数的数据通路中的位数少1的位数。
12.如权利要求11所述的浮点单元,响应于使所述第三尾数右移以使得在所述积尾数的所述最低有效位右侧的所述第三尾数的任意最低有效位在逻辑上“或”在一起以生成粘滞位。
13.如权利要求11所述的浮点单元,其中,所述最大过移位阈值对应于来自使所述第三尾数右移使得所述第三尾数的最高有效位与所述粘滞区的所述最低有效位对齐的移位值。
14.如权利要求1所述的浮点单元,其中,所述选定的过移位阈值对应于在用于比较所述移位值和所述选定的过移位阈值的检测关键时序路径中具有最小数目的门延迟的逻辑实现。
15.处理器,其包括:
配置为执行浮点运算的浮点单元,其中所述浮点单元包括:
浮点加法器,其配置为在有第一指数和第一尾数的第一浮点数和有第二指数和第二尾数的第二浮点数之间执行浮点加法运算;和
对齐移位器,其配置为计算相应于一些位位置的移位值以移位所述第二尾数使得所述第二指数值与所述第一指数值相同;
其中所述对齐移位器配置为检测所述移位值大于或等于选定的过移位阈值的过移位条件;
其中所述对齐移位器还配置为响应检测所述过移位条件提供过移位指示;
其中所述选定的过移位阈值由在包括最小过移位阈值和最大过移位阈值的过移位值范围内的基数为2的、有数目最多的在最低有效位以零开始的连续位的数构成。
16.如权利要求15所述的处理器,其中,所述对齐移位器配置为移位到右侧,所述第二尾数配置为由所述移位值表示的位位置的数目。
17.如权利要求15所述的处理器,其中,所述最小过移位阈值对应于来自使所述第二尾数右移使得所述第二尾数的最高有效位在所述第一尾数的所述最低有效位右侧的移位值和对应于加保护区位数加上所述第一尾数的数据通路中的位数的两倍。
18.如权利要求15所述的处理器,其中,在所述第一尾数的最低有效位(LSB)右侧的位数对应于粘滞区,其中所述粘滞区包括其值等于比在所述第一尾数的数据通路中的位数少1的位数。
19.如权利要求18所述的处理器,其中,响应于使所述第二尾数右移以使得在所述第一尾数的所述最低有效位右侧的所述第二尾数的任意所述最低有效位在逻辑上“或”在一起以生成粘滞位。
20.如权利要求19所述的处理器,其中,所述对齐移位器进一步配置为导致所述粘滞位响应检测到所述过移位条件而设置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/404,426 | 2009-03-16 | ||
US12/404,426 US8402075B2 (en) | 2009-03-16 | 2009-03-16 | Mechanism for fast detection of overshift in a floating point unit of a processing device |
PCT/US2010/026908 WO2010107650A1 (en) | 2009-03-16 | 2010-03-11 | Mechanism for fast detection of overshift in a floating point unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102349049A CN102349049A (zh) | 2012-02-08 |
CN102349049B true CN102349049B (zh) | 2014-07-23 |
Family
ID=42104634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080011918.6A Active CN102349049B (zh) | 2009-03-16 | 2010-03-11 | 快速检测浮点单元中的移位的机制 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8402075B2 (zh) |
EP (1) | EP2409219B1 (zh) |
JP (1) | JP5719341B2 (zh) |
KR (1) | KR101528340B1 (zh) |
CN (1) | CN102349049B (zh) |
WO (1) | WO2010107650A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8694572B2 (en) * | 2010-07-06 | 2014-04-08 | Silminds, Llc, Egypt | Decimal floating-point fused multiply-add unit |
US9354875B2 (en) * | 2012-12-27 | 2016-05-31 | Intel Corporation | Enhanced loop streaming detector to drive logic optimization |
US20150193203A1 (en) * | 2014-01-07 | 2015-07-09 | Nvidia Corporation | Efficiency in a fused floating-point multiply-add unit |
US10402168B2 (en) * | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
JP7136478B2 (ja) | 2020-03-13 | 2022-09-13 | 株式会社東海理機 | ロータリバルブ |
US12086080B2 (en) | 2020-09-26 | 2024-09-10 | Intel Corporation | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits |
KR102706124B1 (ko) * | 2021-12-14 | 2024-09-12 | 서울대학교산학협력단 | 부동 소수점 연산 방법 및 장치 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796644A (en) * | 1996-11-18 | 1998-08-18 | Samsung Electronics Company, Ltd. | Floating-point multiply-and-accumulate unit with classes for alignment and normalization |
CN1472636A (zh) * | 2002-07-29 | 2004-02-04 | 矽统科技股份有限公司 | 浮点数的对数运算方法和装置 |
CN1619484A (zh) * | 2003-11-20 | 2005-05-25 | 国际商业机器公司 | 浮点单元及计算指数的方法 |
CN101042638A (zh) * | 2006-03-23 | 2007-09-26 | 富士通株式会社 | 浮点数求和的处理方法及计算机系统 |
US20080244241A1 (en) * | 2007-03-30 | 2008-10-02 | Transitive Limited | Handling floating point operations |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0139733B1 (ko) * | 1994-04-29 | 1998-07-01 | 구자홍 | 부동 소수점 덧셈/뺄셈 연산기의 반올림 방법 및 장치 |
US5502401A (en) * | 1995-04-26 | 1996-03-26 | Texas Instruments Incorporated | Controllable width or gate |
KR970016935A (ko) * | 1995-09-29 | 1997-04-28 | 김광호 | 부동소숫점 덧셈기에서 스티키비트 검출방법 |
US5757686A (en) * | 1995-11-30 | 1998-05-26 | Hewlett-Packard Company | Method of decoupling the high order portion of the addend from the multiply result in an FMAC |
JPH09204295A (ja) * | 1996-01-29 | 1997-08-05 | Kofu Nippon Denki Kk | スティッキービット検出回路 |
US5771183A (en) * | 1996-06-28 | 1998-06-23 | Intel Corporation | Apparatus and method for computation of sticky bit in a multi-stage shifter used for floating point arithmetic |
US6381624B1 (en) * | 1999-04-29 | 2002-04-30 | Hewlett-Packard Company | Faster multiply/accumulator |
DE10050589B4 (de) * | 2000-02-18 | 2006-04-06 | Hewlett-Packard Development Co., L.P., Houston | Vorrichtung und Verfahren zur Verwendung beim Durchführen einer Gleitkomma-Multiplizier-Akkumulier-Operation |
JP4086459B2 (ja) * | 2000-11-13 | 2008-05-14 | Necエレクトロニクス株式会社 | 固定小数点データ生成方法及び固定小数点データ生成回路 |
US6754688B2 (en) * | 2001-02-14 | 2004-06-22 | Intel Corporation | Method and apparatus to calculate the difference of two numbers |
US7080111B2 (en) * | 2001-06-04 | 2006-07-18 | Intel Corporation | Floating point multiply accumulator |
US7003539B1 (en) * | 2001-08-08 | 2006-02-21 | Pasternak Solutions Llc | Efficiently determining a floor for a floating-point number |
US6947962B2 (en) * | 2002-01-24 | 2005-09-20 | Intel Corporation | Overflow prediction algorithm and logic for high speed arithmetic units |
US8069200B2 (en) * | 2005-04-28 | 2011-11-29 | Qsigma, Inc. | Apparatus and method for implementing floating point additive and shift operations |
JP4571903B2 (ja) * | 2005-12-02 | 2010-10-27 | 富士通株式会社 | 演算処理装置,情報処理装置,及び演算処理方法 |
US8214417B2 (en) * | 2008-08-14 | 2012-07-03 | Oracle America, Inc. | Subnormal number handling in floating point adder without detection of subnormal numbers before exponent subtraction |
-
2009
- 2009-03-16 US US12/404,426 patent/US8402075B2/en active Active
-
2010
- 2010-03-11 JP JP2012500839A patent/JP5719341B2/ja active Active
- 2010-03-11 EP EP10710952.2A patent/EP2409219B1/en active Active
- 2010-03-11 WO PCT/US2010/026908 patent/WO2010107650A1/en active Application Filing
- 2010-03-11 KR KR1020117023161A patent/KR101528340B1/ko active IP Right Grant
- 2010-03-11 CN CN201080011918.6A patent/CN102349049B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796644A (en) * | 1996-11-18 | 1998-08-18 | Samsung Electronics Company, Ltd. | Floating-point multiply-and-accumulate unit with classes for alignment and normalization |
CN1472636A (zh) * | 2002-07-29 | 2004-02-04 | 矽统科技股份有限公司 | 浮点数的对数运算方法和装置 |
CN1619484A (zh) * | 2003-11-20 | 2005-05-25 | 国际商业机器公司 | 浮点单元及计算指数的方法 |
CN101042638A (zh) * | 2006-03-23 | 2007-09-26 | 富士通株式会社 | 浮点数求和的处理方法及计算机系统 |
US20080244241A1 (en) * | 2007-03-30 | 2008-10-02 | Transitive Limited | Handling floating point operations |
Non-Patent Citations (4)
Title |
---|
Delay-Optimized Implementation of IEEE Floating-Point Addition;Peter-Michael Seidel等;《IEEE TRANSACTIONS ON COMPUTERS》;20040229;第53卷(第2期);第97-113页 * |
P6 Binary Floating-Point Unit;Son Dao Trong等;《2007.ARITH "07. 18th IEEE Symposium on Computer Arithmetic》;20070627;第77-86页 * |
Peter-Michael Seidel等.Delay-Optimized Implementation of IEEE Floating-Point Addition.《IEEE TRANSACTIONS ON COMPUTERS》.2004,第53卷(第2期), |
Son Dao Trong等.P6 Binary Floating-Point Unit.《2007.ARITH "07. 18th IEEE Symposium on Computer Arithmetic》.2007, |
Also Published As
Publication number | Publication date |
---|---|
EP2409219A1 (en) | 2012-01-25 |
CN102349049A (zh) | 2012-02-08 |
KR101528340B1 (ko) | 2015-06-11 |
KR20120003878A (ko) | 2012-01-11 |
JP5719341B2 (ja) | 2015-05-20 |
WO2010107650A1 (en) | 2010-09-23 |
EP2409219B1 (en) | 2017-04-19 |
JP2012521047A (ja) | 2012-09-10 |
US20100235416A1 (en) | 2010-09-16 |
US8402075B2 (en) | 2013-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102349049B (zh) | 快速检测浮点单元中的移位的机制 | |
CN106293610B (zh) | 微处理器及其方法 | |
US6523050B1 (en) | Integer to floating point conversion using one's complement with subsequent correction to eliminate two's complement in critical path | |
JP2662196B2 (ja) | 演算結果正規化方法及び装置 | |
CN103150146B (zh) | 基于可扩展处理器架构的专用指令集处理器及其实现方法 | |
US7113969B1 (en) | Formatting denormal numbers for processing in a pipelined floating point unit | |
JP5431044B2 (ja) | 浮動小数点実行ユニットを用いる回路装置、集積回路装置、プログラム製品、および方法(動的値域調整浮動小数点実行ユニット) | |
WO2018063777A1 (en) | Low energy consumption mantissa multiplication for floating point multiply-add operations | |
CN100454237C (zh) | 计算机实现函数估计的方法以及执行该方法的处理器 | |
US20050223055A1 (en) | Method and apparatus to correct leading one prediction | |
Godse et al. | Computer Organization and Architecture | |
US6405232B1 (en) | Leading bit prediction with in-parallel correction | |
CN101930354A (zh) | 微处理器及其执行指令的方法 | |
US6490606B1 (en) | Rounding denormalized numbers in a pipelined floating point unit without pipeline stalls | |
Stine Jr | Design issues for accurate and reliable arithmetic | |
Dacheng | Vhdl implementation of a fast adder tree | |
Schneck et al. | The ILLIAC IV | |
CN1379376A (zh) | 一种面向密码体制的32位cpu |
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 |