CN108431771B - 融合乘加(fma)低功能单元 - Google Patents
融合乘加(fma)低功能单元 Download PDFInfo
- Publication number
- CN108431771B CN108431771B CN201680075267.4A CN201680075267A CN108431771B CN 108431771 B CN108431771 B CN 108431771B CN 201680075267 A CN201680075267 A CN 201680075267A CN 108431771 B CN108431771 B CN 108431771B
- Authority
- CN
- China
- Prior art keywords
- value
- fma
- result
- mantissa
- product
- 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
- 230000004927 fusion Effects 0.000 title claims description 4
- 238000007667 floating Methods 0.000 claims abstract description 62
- 238000000034 method Methods 0.000 claims description 54
- 238000004422 calculation algorithm Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 5
- 230000000670 limiting effect Effects 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 68
- 238000012545 processing Methods 0.000 description 39
- 230000006870 function Effects 0.000 description 31
- 238000003860 storage Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 12
- 230000003287 optical effect Effects 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000010076 replication Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 239000003826 tablet Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000000126 substance 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/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/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
- 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
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
一种示例处理器包括寄存器和融合乘加(FMA)低功能单元。所述寄存器存储第一、第二和第三浮点(FP)值。所述FMA低功能单元接收用于执行FMA低运算的请求:将所述第一FP值与所述第二FP值相乘以便获得第一乘积值;将所述第一乘积与所述第三FP值相加以便生成第一结果值;舍入所述第一结果以便生成第一FMA值;将所述第一FP值与所述第二FP值相乘以便获得第二乘积值;将所述第二乘积值与所述第三FP值相加以便生成第二结果值;并且从所述第二结果值中减去所述FMA值以便获得第三结果值,所述第三结果值然后能够被归一化并舍入(FMA低结果)并且向应用发送所述FMA低结果。
Description
技术领域
本申请涉及电子器件。
背景技术
省电和加工效率越来越成为电子器件的焦点。为了降低功耗并提高效率,处理器可以针对各种过程和应用使用浮点运算。处理器可以具有利用浮点运算执行指令的一个或多个功能单元。这些功能单元可以是在处理器处消耗相对大量的电力的硬件单元,如浮点单元(FPU)或数学协处理器。更高效的FPU和数学协处理器可以降低功耗并提高处理器的效率。
附图说明
从以下给出的详细描述以及本发明的各个实施例的附图中,将更全面地理解本发明的各个实施例。
图1A展示了根据一个实施例的用于执行融合乘加(FMA)运算的方法的图示。
图1B展示了根据一个实施例的执行FMA低运算的方法的图示。
图2展示了根据一个实施例的用于FMA低运算的位串的图示。
图3A是框图,展示了根据一个实施例的有序流水线和寄存器重命名级、无序发布/执行流水线。
图3B是框图,展示了根据一个实施例的实施融合乘加(FMA)运算的处理器的微架构。
图4展示了根据一个实施例的处理器的微架构的框图,所述处理器包括用于执行FMA运算的逻辑电路。
图5是根据一种实施方式的计算机系统的框图。
图6是根据另一种实施方式的计算机系统的框图。
图7是根据一种实施方式的芯片上系统的框图。
图8展示了根据一种实施方式的计算系统的框图的另一种实施方式。
图9展示了根据一种实施方式的计算系统的框图的另一种实施方式。
具体实施方式
常规中央处理单元(CPU)和图形处理单元(GPU)设计包括FPU或数学协处理器。FPU可以对浮点数执行数学运算。例如,FPU内的乘加器电路可以执行融合加法运算以便执行对式(a×b)+c的单指令执行。FPU或数学协处理器可以是作为计算机处理器(CPU)或图形处理单元(GPU)的用于执行某些浮点功能的一部分的专用硬件,如算术逻辑单元(ALU)。CPU或GPU可以使用用于范围从多媒体处理和3D图形处理到科学和工程应用的应用的FPU或数学协处理器。常规CPU和GPU可以结合集成乘法-累积运算,如融合加法运算。融合加法运算可以比乘法之后接着加法具有更低的等待时间和更高的精度。
为了改善浮点算术处理,常规处理器使用融合乘加(FMA)来组合浮点乘法运算与浮点加法运算以便作为单个指令执行,例如,(a×b)+c。例如,常规处理器可以将浮点操作数与两个浮点操作数的乘法的乘积相加而不需要中间舍入操作。通过在单个指令中执行两个运算,FMA运算可以减少总体执行时间和硬件成本。
常规FMA可以采用具有单精度和双精度(例如,本机浮点精度)的硬件进行乘法运算和加法运算。例如,许多常规电子器件具有在硬件中实施双精度算术标准的CPU或GPU,从而为加法、减法、乘法和除法的基本运算提供了正确舍入的结果。这些常规电子器件使用双精度浮点表示来维护电子器件的性能等级。然而,本机浮点精度可能不足以用于某些应用。
在另一个示例中,向量点积运算可以执行很长一系列浮点计算。当向量点积运算使用本机浮点精度时,本机浮点精度的不充分精度产生很长一系列浮点计算的结果与数学结果(即,无限地精确)之间的舍入的不匹配。本机浮点精度不足以用于以下应用:如需要高精确度的计算、线性代数函数、复杂算术函数、某些数学库函数的科学应用以及需要多精度的使用长求和或点积的应用。
当本机浮点精度不足时,多精度计算可以用于满足适当的精确度需求。常规FMA使用软件仿真来执行多精度运算或扩展精度运算以便满足增加的精确度需求。然而,FMA运算的软件仿真可以采用若干浮点运算来执行。例如,对FMA运算的低部分或尾部执行FMA运算可以在|a*b|<|c|/2为已知性质时采用3个浮点(FP)运算与在a*b与c的顺序未知时采用8个FP运算之间的FMA运算的软件仿真。另外,用于执行软件仿真的这3到8个FP运算不包括检查特殊情况,如无穷/NaN输入或溢出,所述特殊情况可能会进一步降低FMA运算软件仿真的性能。软件仿真的这3到8个FP运算也不包括范围检查,所述范围检查可能会进一步降低FMA运算软件仿真的性能。
本文所描述的实施例可以通过使用硬件运算单元计算FMA的低部分或尾部(FMA低)来解决上文所提及的缺点。在一个示例中,完整FMA运算的结果是高FP值、低FP值和最低FP值之和,例如,高FP+低FP+最低FP。FMA低运算使用低FP值生成结果。FMA低运算的优点是:FMA低运算在提高FMA硬件的效率和性能的同时维持与计算完整FMA结果的FMA硬件类似地精确度等级。例如,FMA低运算可以通过减少用于计算结果的FP运算的数量来提高FMA硬件的效率和性能。例如,通常,双-双点积a*b+c*d(其中,a、b、c和d可以是变量)被计算为高FP+低FP。在一个示例中,使用FMA算法的常规双-双点积可以采用9个FP运算与15个FP运算之间,而使用FMA低算法计算的双-双点积可以采用5个FP运算。在另一个示例中,常规双-双乘积(a_高+a_低)*(b_高+b_低)被计算为高FP+低FP;使用常规FMA算法计算的双-双乘积可以采用8个FP运算。在另一个示例中,使用FMA低算法计算的双-双乘积可以采用3个FP运算。
图1A展示了根据一个实施例的用于执行FMA运算的方法100的图示。方法100可以至少部分地由逻辑单元或者处理装置或处理逻辑的ALU执行,所述逻辑单元或者处理装置或处理逻辑的ALU可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(例如,由处理装置执行的指令)、固件或其组合。
参照图1A,方法100开始于使用乘法器将第一数字110与第二数字112相乘以便获得乘积值(116)。在一个实施例中,第一数字110、第二数字112和第三数字114可以是浮点数,所述浮点数可以采用二进制格式来表示。
在另一个实施例中,第一数字110可以包括第一尾数和第一指数,第二数字112可以包括第二尾数和第二指数,并且第三数字114可以包括第三尾数和第三指数。指数可以是浮点数表示(编码)的一部分,所述一部分包括符号、指数和尾数字段。因此,在实施例中,浮点值可以等于{(-1)符号*2指数–偏移*尾数}。在一个实施例中,当第一数字110与第二数字112相乘时,第一尾数与第二尾数相乘以便生成乘积值。乘法器可以使用华莱士(Wallace)树(例如,使用两个数字的部分乘积来乘以这两个数字的数字电路)来执行乘法。
在另一个实施例中,移位器可以将第一尾数、第二尾数和第三尾数的位移位到左边或右边。移位器可以将第一尾数、第二尾数和第三尾数的位移位,从而使得第一尾数、第二尾数或第三尾数的位被适当对齐以进行加法运算或乘法运算。
所述方法可以包括:使用加法器将第三数字114与乘积值相加以便生成和值(120)。在一个实施例中,加法(120)可以是乘积值(例如,第一尾数与第二尾数的乘积)与第三数字114的第三尾数的加法。
所述方法可以包括:使用归一化器来归一化所述和值以便生成归一化和值(122)。在一个实施例中,归一化(122)可以包括使用编码器对所述和值进行编码。编码可以包括编码器分析所述和值的位串。编码器可以判定位串中的位是否将被移位。例如,编码器可以分析位串并且标识最左(例如,最高有效)“0”位的位置。如果最左“0”位是从位数的左边开始的五位,则编码器可以确定位串将向左移位五个位置。在另一个实施例中,归一化(122)可以包括使用移位器将位串向右或向左移位。移位器可以在位串向左移位时向位串的右边添加“0”值,并且可以在位串向右移位时向位串的左边添加“0”值。
在一个示例中,结果(在归一化之前)包括引导尾数位中的1(“一”)。引导位的位置可以被固定并且取决于实施方式。当在引导位位置之上存在任何非零结果位时,归一化可以包括将结果向右移位一次一位,直到引导位为1(“一”)并且其上的所有位位置为零。随着每次向右移位,指数也可以加一。否则,当引导位为0(“零”)但是较低位置中存在非零位时,结果尾数可以向左移位一次一位,直到引导位为一(“1”)。类似地,结果指数可以针对每次向左移位而加一。
所述方法可以进一步包括:使用舍入器来舍入所述归一化和值以便生成舍入的归一化和值(124)。所述方法可以进一步包括:使用舍入的归一化和值来生成FMA结果(126)。在一个实施例中,FMA结果值是对FMA(a,b,c)=(a*b)+c的计算结果,其中,a是第一数字110,b是第二数字112,c是第三数字114,并且(a*b)+c被舍入。乘法器、加法器、归一化器和舍入器可以是逻辑单元或ALU。
图1B展示了根据一个实施例的执行FMA低运算的方法130的图示。方法130可以至少部分地由逻辑单元或者处理装置或处理逻辑的ALU执行,所述逻辑单元或者处理装置或处理逻辑的ALU可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(例如,由处理装置执行的指令)、固件或其组合。
参照图1B,方法130开始于使用乘法器将第一数字110与第二数字112相乘以便获得乘积值(130)。如通过类似附图标记表示的,图1B的方法130的一些数字和结果类似于图1A的方法100的一些数字和结果,除非另有明确说明。方法130可以包括:使用加法器将第三数字114与第二乘积值相加(132)。
所述方法可以包括:使用减法器从第二乘积中减去FMA结果126以便生成差值(134)。所述方法可以包括:使用归一化器来归一化所述差值以便生成归一化差值(136)。在一个实施例中,归一化(136)可以包括使用编码器对差值进行编码。编码可以包括编码器分析差值的位串。编码器可以判定位串中的位是否应当被移位。在另一个实施例中,归一化(136)可以包括使用移位器将位串向右或向左移位。所述方法可以包括:使用舍入器来舍入归一化差值以便生成舍入的归一化差值(138)。所述方法可以包括:使用舍入的归一化差值来生成FMA低结果值,在一个实施例中,这可以包括使用在框138中进行舍入期间所丢弃的一个或多个位(140)。乘法器、减法器、归一化器和舍入器可以是逻辑单元或ALU。
图2展示了根据一个实施例的用于图1B的FMA低运算的位串200的图示。图1B的FMA低运算可以使用以下FMA算法low(a,b,c)=round((a*b+c)–FMA(a,b,c))来生成FMA低结果。位串200可以包括第一尾数210和第二尾数220。
在一个实施例中,第一尾数210是方法100(图1A)中的FMA运算的FMA结果值。第一尾数210可以是FMA结果126的归一化尾数。第一尾数210可以包括多个位,所述多个位包括b、b1、b2、…、bp-2、bp-1,其中,b表示位在位串200中的位置。P指示第一尾数210或第二尾数220的位格式。例如,当P等于24时,位格式是单精度格式。在另一个示例中,当P等于53时,位格式是双精度格式。
在另一个实施例中,第二尾数220是方法130(图1B)中的FMA低运算的FMA低结果值。第二尾数220可以是FMA低结果值的归一化尾数。第二尾数220可以包括多个位bp、bp+1、…、b2p-1、b2p,其中,b表示位在位串200中的位置。使用FMA低结果值的单精度格式的优点可以是减少针对单指令多数据(SIMD)指令并行计算的元素的数量。双精度格式的优点是提高FMA结果126或FMA低结果值的精确度。例如,双精度FMA低结果值可以用于双精度SIMD计算或标量计算。
在一个实施例中,如先前段落中讨论的,可以舍入FMA结果值(图1A)和/或FMA低结果值(图1B)。在一个示例中,归一化FMA低结果值是预先舍入的尾数,并且FMA低结果值可以根据R*2-p+1+bp*2-p+bp+1*2-p-1+…+b2p-1*2-2p+1+…来舍入,其中,当FMA(a,b,c)远离零(朝向+/-无穷)舍入时,R=-1,并且当FMA(a,b,c)向零舍入时,R=0。在另一个示例中,可以使用归一化(如通过使用如先前段落中讨论的移位)来调整FMA低结果值的指数,并且可以应用适当的符号。
在一个实施例中,FMA结果值或FMA低结果值可以被舍入,因为FMA结果值或FMA低结果值的位长度超过位串200的预定义长度。例如,可以使用以下算法生成FMA低结果值:FMA low(a,b,c)=(a*b+c)–FMA(a,b,c),其中,a是第一数字110,b是第二数字112,并且c是第三数字114(图1A和图1B)。
在另一个示例中,当FMA低结果值超过位串200的预定义长度时,可以使用以下算法生成FMA低结果值:FMA low(a,b,c)=round((a*b+c)–FMA(a,b,c))。在此示例中,FMAlow(a,b,c)=(a*b+c)–FMA(a,b,c)是超过位串200的预定义长度的双精度或单精度浮点格式。在另一个示例中,双精度格式可以使用两倍于常规浮点数的位并且超过位串200的预定义长度。
在一个实施例中,可以使用最近舍入整数算法来舍入FMA结果值或所述FMA低结果值。在另一个实施例中,可以使用向零舍入算法来舍入FMA结果值或所述FMA低结果值。在另一个实施例中,可以使用其他舍入算法来舍入FMA结果值和所述FMA低结果值。在另一个实施例中,可以限制在计算FMA低结果值时使用的尾部位的数量,如将尾部位限制为bp、bp+1、…、b2p-1。这可以与将精确结果截断为特定位数(例如,多达位b2p-1)相同;在这种情况下,可以丢弃所有较低位(例如,以b2p开始)。
图3A是框图,展示了根据本公开的一些实施例的由处理器300实施的有序流水线和寄存器重命名级、乱序发布/执行流水线的框图。图3A中的实线框展示了有序流水线,而虚线框展示了寄存器重命名、乱序发布/执行流水线。具体地,根据本公开的至少一个实施例,处理器300描绘了待包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发布/执行逻辑。
在图3A中,流水线包括取出级302、长度解码级304、解码级306、分配级308、重命名级310、调度(也称为分派或发布)级312、寄存器读取/存储器读取级314、执行级316、回写/存储器写入级318、异常处置级322、以及提交级324。在一些实施例中,级302到324的排序可以与所图示的不同,并且并不局限于在图3A中示出的特定排序。
图3B是框图,展示了根据一个实施例的实施融合乘加(FMA)运算的处理器300的微架构。处理器300包括耦合到执行引擎单元350的前端单元330,并且所述执行引擎单元和前端单元都耦合到存储器单元370。处理器300可以包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或可替代核类型。作为又另一选项,处理器300可以包括专用核,诸如,例如,网络或通信核、压缩引擎、图形核等。在一个实施例中,处理器300可以是多核处理器,或可以是多处理器系统的一部分。在处理器300中可以实施页添加和内容复制的实施例。
前端单元330包括耦合到指令高速缓存单元334的分支预测单元332,所述指令高速缓存单元耦合到指令转换后备缓冲器(TLB)336,所述指令转换后备缓冲器耦合到指令取出单元338,所述指令取出单元耦合到解码单元340。解码单元340(也称为解码器)可以对指令进行解码并且生成从原始指令中解码出的、或以其他方式反映原始指令或从原始指令衍生出的一个或多个微运算、微代码入口点、微指令、其他指令或其他控制信号作为输出。解码器340可以使用各种不同的机制来实施。合适机制的示例包括但不限于:查找表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元334进一步耦合到存储器单元370。解码单元340耦合到执行引擎单元350中的重命名/分配器单元352。
执行引擎单元350包括耦合到引退单元354的重命名/分配器单元352以及一组一个或多个调度器单元356。(多个)调度器单元356表示任何数量的不同调度器,包括保留站(RS)、中央指令窗等。(多个)调度器单元356耦合到(多个)物理寄存器堆单元358。(多个)物理寄存器堆单元358中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等、状态(例如,作为有待执行的下一指令的地址的指令指针)等。(多个)物理寄存器堆单元358与引退单元354重叠以展示可以实施寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来堆、(多个)历史缓冲器、以及(多个)引退寄存器堆;使用寄存器映射和寄存器池等)。
通常,架构寄存器从处理器的外部或从程序员的角度来看是可见的。寄存器不限于任何已知具体类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储和提供如本文所描述的数据即可。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元354和(多个)物理寄存器堆单元358被耦合到(多个)执行集群360。(多个)执行集群360包括一组一个或多个执行单元362以及一组一个或多个存储器访问单元364。执行单元362可以执行各种运算(例如,移位、加法、减法、乘法)并对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)进行操作。
虽然一些实施例可以包括专用于具体功能或功能集合的多个执行单元,但是其他实施例可以只包括一个执行单元或包括全都执行全部功能的多个执行单元。(多个)调度器单元356、(多个)物理寄存器堆单元358、以及(多个)执行集群360被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,所述流水线各自具有其本身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群,并且在分开的存储器访问流水线的情况下,实施了其中只有所述流水线的执行集群具有(多个)存储器访问单元364的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一者或多者可以是乱序发布/执行流水线,并且其余的是有序流水线。
所述一组存储器访问单元364耦合到存储器单元370,举几个示例,所述存储器单元可以包括数据预取器380、数据TLB单元372、数据高速缓存单元(DCU)374、以及2级(L2)高速缓存单元376。在一些实施例中,DCU 374也被称为第一级数据高速缓存(L1高速缓存)。DCU 374可以处置多个未解决的高速缓存未命中并且继续为进入的存储和加载提供服务。DCU还支持保持高速缓存一致性。数据TLB单元372是用于通过映射虚拟和物理地址空间来提高虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元364可以包括各自耦合到存储器单元370中的数据TLB单元372的加载单元、存储地址单元、以及存储数据单元。L2高速缓存单元376可以耦合到一个或多个其他级的高速缓存并且最终耦合到主存储器。
在一个实施例中,数据预取器380通过自动预测程序将要消耗哪个数据来推测性地将数据加载/预取到DCU 374。预取可以指在处理器实际需求数据之前将存储在存储器层级的一个存储器位置(例如,位置)(例如,较低级高速缓存或存储器)中的数据传送到更靠近(例如,得出较低访问等待时间)处理器的较高级存储器位置。更具体地,预取可以指在处理器发出对正在返回的具体数据的需求之前将数据从较低级的高速缓存/存储器中的一个提前检索到数据高速缓存和/或预取缓冲器。
处理器300可以支持一个或多个指令集(例如,x86指令集(具有已经添加了较新版本的一些扩展);英国赫特福德郡金斯兰利的想象技术公司(Imagination Technologies)的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的附加扩展,比如NEON)。
应当理解,核可以支持多线程化(执行并行的两组或更多组操作或线程)),并且可以以各种方式来完成所述多线程化,此各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如超线程化技术中的同步多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。然而处理器的所示实施例还包括分开的指令和数据高速缓存单元和共享的L2高速缓存单元,但替代性实施例可以具有用于指令和数据两者的单个内部高速缓存,例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,所述系统可以包括在核和/或处理器外部的内部高速缓存和外部高速缓存的组合。可替代地,所有高速缓存都可以在核和/或处理器的外部。
图4展示了根据一个实施例的处理器400的微架构的框图,所述处理器包括用于执行融合乘加(FMA)运算的逻辑电路。在一些实施例中,可以实施根据一个实施例的指令来对具有字节、字、双字、四字等大小以及如单精度和双精度整数和浮点数据类型等数据类型的数据元素进行操作。在一个实施例中,有序前端401是处理器400的取出待执行的指令并将其准备于之后在处理器流水线中使用的那一部分。在处理器400中可以实施页添加和内容复制的实施例。
前端401可以包括若干个单元。在一个实施例中,指令预取器416从存储器取出指令并将其馈送给指令解码器418,所述指令解码器进而对这些指令进行解码或解释。例如,在一个实施例中,解码器将接收到的指令解码成机器可以执行的称为“微指令”或“微运算”(也称为微op或uop)的一个或多个运算。在其他实施例中,根据一个实施例,解码器将指令解析为运算码和相应的数据以及被微架构用于执行运算的控制字段。在一个实施例中,跟踪高速缓存430采用经解码的uop并且将其汇编为程序有序序列或在uop队列434中跟踪以用于执行。当跟踪高速缓存430遇到复杂指令时,微代码ROM 432提供完成运算所需的uops。
一些指令被转换为单个微op,而其他指令需要若干个微op来完成完整的运算。在一个实施例中,如果完成指令需要多于四个微op,则解码器418访问微代码ROM 432以执行指令。对于一个实施例,指令可以被解码成用于在指令解码器418处理的少量的微op。在另一实施例中,如果需要多个微op来完成运算,则指令可以存储在微代码ROM 432中。跟踪高速缓存430引用入口点可编程逻辑阵列(PLA),以确定用于从微代码ROM 432读取微代码序列的正确微指令指针以便根据一个实施例完成一个或多个指令。在微代码ROM 432完成用于指令的排序微op之后,机器的前端401从跟踪高速缓存430重新取出微op。
乱序执行引擎403是指令准备执行的地方。乱序执行逻辑具有多个缓冲器,所述多个缓冲器用于使指令流平滑并重新排序以在指令顺着流水线进行并被安排执行时优化性能。分配器逻辑分配每个uop执行所需的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。在以下指令调度器前面,分配器还为两个uop队列(一个用于存储器运算,一个用于无存储器运算)之一中的每个uop分配条目:存储器调度器、快速调度器402、慢速/通用浮点调度器404和简单浮点调度器406。uop调度器402、404、406基于其依赖输入寄存器操作数源的准备状态以及uop完成其运算所需的执行资源的可用性来确定这些uop何时准备好执行。一个实施例的快速调度器402可以在主时钟周期的每一半上进行调度,而其他调度器可以仅在每个主处理器时钟周期调度一次。调度器仲裁分派端口以调度uop用于执行。
寄存器堆408、410位于执行块411中的调度器402、404、406与执行单元412、414、416、418、420、422、424之间。存在分开的寄存器堆408、410,分别用于整数运算和浮点运算。一个实施例的每个寄存器堆408、410还包括旁路网络,所述旁路网络可以绕过或转发尚未被写入到寄存器堆中的已完成结果到新的依赖uop。整数寄存器堆408和浮点寄存器堆410还能够与其他寄存器堆进行数据通信。对于一个实施例,整数寄存器堆408被分成两个单独的寄存器堆,一个寄存器堆用于数据的低顺序32位,第二寄存器堆用于数据的高顺序32位。一个实施例的浮点寄存器堆410具有128位宽的条目,因为浮点指令通常具有宽度为从64位至128位的操作数。
执行块411包含实际上在其中执行指令的执行单元412、414、416、418、420、422、424。这个部分包括寄存器堆408、410,所述寄存器堆存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器400由多个执行单元组成:地址生成单元(AGU)412、AGU414、快速ALU 416、快速ALU 418、慢速ALU 420、浮点ALU 422、浮点移动单元424。对于一个实施例,浮点执行块412、414执行浮点、MMX、SIMD和SSE、或其他运算。一个实施例的浮点ALU412包括用于执行除法、平方根和余数微op的64位乘64位浮点除法器。对于本公开的实施例,涉及浮点值的指令可以用浮点硬件来处置。
在一个实施例中,ALU运算前往高速ALU执行单元416、418。一个实施例的快速ALU416、418可以以半个时钟周期的有效等待时间执行快速运算。对于一个实施例,大多数复杂整数运算前往慢速ALU 410,因为慢速ALU 410包括用于长等待时间类型的运算的整数执行硬件,诸如乘法、移位、标志逻辑、以及分支处理。存储器加载/存储操作由AGU 412、414执行。对于一个实施例,在对64位数据操作数执行整数运算的上下文中描述了整数ALU 416、418、420。在替代性实施例中,ALU 416、418、420可以被实施为支持包括16、32、128、256等的各种数据位。类似地,浮点单元412、414可以被实施为支持具有各种宽度的位的一系列操作数。对于一个实施例,浮点单元412、414可以与SIMD和多媒体指令结合地对128位宽度的紧缩数据操作数进行运算。
在一个实施例中,uop调度器402、404、406在父加载完成执行之前分派不独立运算。在处理器400中推测性地调度和执行uop时,处理器400还包括用于处置存储器未命中的逻辑。如果数据高速缓存中的数据加载未命中,则可能存在流水线中飞行的已经因暂时不正确数据而离开调度器的不独立运算。重放机制跟踪并重新执行使用不正确数据的指令。仅仅不独立运算需要被重放,并且允许完成独立运算。处理器的一个实施例的调度器和重放机制还被设计成捕获用于文本串比较操作的指令序列。
处理器400还包括根据一个实施例的用于实施融合乘加(FMA)运算的逻辑。在一个实施例中,处理器400的执行块411可以包括微控制器(MCU),所述微控制器用于执行根据本文描述的FMA运算。
术语“寄存器”可以指代被用作指令的一部分以标识操作数的机载处理器存储位置。换言之,寄存器可以是从处理器外部(从程序员的角度来看)可用的寄存器。然而,实施例的寄存器不应限于特定类型的电路。而是,实施例的寄存器能够存储和提供数据,并且执行本文所描述的功能。本文所描述的寄存器可以由处理器内的电路系统使用任何数量的不同技术来实施,如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器堆还包含用于紧缩数据的八个多媒体SIMD寄存器。
对于本文的讨论,寄存器被理解为设计成保持紧缩数据的数据寄存器,如用来自加利福尼亚州圣克拉拉的英特尔公司的MMX技术实现的微处理器中的64位宽MMXTM寄存器(在某些情况下也称为“mm”寄存器)。以整数和浮点形式可用的这些MMX寄存器可以用伴随SIMD指令和SSE指令的紧缩数据元素进行操作。类似地,与SSE2、SSE3、SSE4或更高版本(通常称为“SSEx”)技术有关的128位宽XMM寄存器也可以用于保持这样的紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要对这两种数据类型进行区分。在一个实施例中,整数和浮点包含在同一寄存器堆或不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可以存储在不同的寄存器或同一寄存器中。
实施例可以采用许多不同的系统类型来实施。现在参考图5,示出了根据实施方式的多处理器系统500的框图。如图5中所示出的,多处理器系统500是点对点互连系统,并且包括经由点对点互连550耦合的第一处理器570和第二处理器580。如图5中所示出的,尽管处理器570和580中可能潜在地存在更多的核,但是所述处理器的每个处理器可以是包括第一处理器核和第二处理器核(即,处理器核574a和574b以及处理器核584a和584b)的多核处理器。处理器各自可以包括根据本公开的实施例的混合型写入模式逻辑。在处理器570、处理器580或二者中可以实施页添加和内容复制的实施例。
虽然以两个处理器570、580示出,但应当理解,本公开的范围不限于此。在其他实施方式中,在给定处理器中可以存在一个或多个附加处理器。
处理器570和580被示出为分别包括集成存储器控制器单元572和582。处理器570还包括作为其总线控制器单元的一部分的点对点(P-P)接口576和588;类似地,第二处理器580包括P-P接口586和588。处理器570、580可以使用点对点(P-P)接口电路578、588经由P-P接口550交换信息。如图5中所示出的,IMC 572和582将处理器耦合到对应存储器、即存储器532和存储器534上,所述存储器可以是主存储器的本地附接到对应处理器上的部分。
处理器570、580可以各自使用点对点接口电路576、594、586、598经由单独的P-P接口552、554来与芯片组590交换信息。芯片组590还可以经由高性能图形接口539与高性能图形电路538交换信息。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功耗模式中,则任一或两个处理器的局部高速缓存信息可以被存储在所述共享高速缓存中。
芯片组590可以经由接口596耦合到第一总线516。在一个实施例中,第一总线516可以是外围组件互连(PCI)总线,或诸如PCI Express总线或另一种第三代I/O互连总线的总线,但是本公开的范围不限于此。
如图5中所示出的,不同I/O装置514可以连同总线桥接器518耦合到第一总线516,所述总线桥接器可以将第一总线516耦合到第二总线520。在一个实施例中,第二总线520可以是低引脚数(LPC)总线。在一个实施例中,各个装置可以耦合到第二总线520,所述装置包括例如键盘和/或鼠标522、通信装置527、以及可以包括指令/代码数据530的存储单元528(如磁盘驱动器或者其他大容量存储装置)。进一步地,音频I/O 524可以耦合到第二总线520。注意到,其他架构是可能的。例如,替代图5的点对点架构,系统可以实施多点分支总线或其他这样的架构。
现在参照图6,示出了根据本发明实施例的第三系统600的框图。图5和图6中的相同元件具有相同的附图标记,并且已经从图5中省略了图5的某些方面以避免使图6的其他方面模糊。
图6展示了处理器670、680可以分别包括集成存储器和I/O控制逻辑(“CL”)672和682。对于至少一个实施例,CL 672、682可包括诸如本文描述的集成存储器控制器单元。另外,CL 672、682还可包括I/O控制逻辑。图6展示了存储器632、634耦合到CL 672、682,并且I/O装置614也耦合到控制逻辑672、682。传统I/O装置615耦合到芯片组690。在处理器670、处理器680或二者中可以实施页添加和内容复制的实施例。
图7是可以包括一个或多个核702的示例性芯片上系统(SoC)700。本领域已知的用于膝上型计算机、台式计算机、手持PC、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其他电子装置的其他系统设计和配置也是合适的。一般,能够结合本文所公开的处理器和/或其他执行逻辑的各种各样的系统或电子装置通常是合适的。
图7是根据本公开的实施例的SoC 700的框图。虚线框是关于更先进的SoC的特征。在图7中,(多个)互连单元702被耦合到:应用处理器717,包括一组一个或多个核702A-N以及(多个)共享高速缓存单元706;系统代理单元710;(多个)总线控制器单元716;(多个)集成存储器控制器单元714;一组一个或多个媒体处理器720,所述媒体处理器可以包括集成图形逻辑708、用于提供静物和/或视频相机功能的图像处理器724、用于提供硬件音频加速的音频处理器726、以及用于提供视频编码/解码加速的视频处理器728;静态随机存取存储器(SRAM)单元730;直接存储器访问(DMA)单元732;以及显示单元740,用于耦合到一个或多个外部显示器。在SOC 700中可以实施页添加和内容复制的实施例。
接下来转到图8,描绘了根据本公开实施例的芯片上系统(SoC)设计的实施例。作为说明性示例,SoC 800包括在用户设备(UE)中。在一个实施例中,UE是指由终端用户用于通信的任何装置,如手持电话、智能电话、平板电脑、超薄笔记本、具有宽带适配器的笔记本、或任何其他类似的通信装置。UE可连接到基站或节点,其本质上对应于GSM网络中的移动台(MS)。在SoC 800中可以实施页添加和内容复制的实施例。
在此,SoC 800包括2个核——806和807。类似于上面讨论的,核806和807可以符合指令集架构,如具有架构核TM的处理器、超微半导体有限公司(AMD)处理器、基于MIPS的处理器、基于ARM设计的处理器、或其客户,以及它们的授权方或兼容方。核806和807被耦合到高速缓存控制808,所述高速缓存控制与总线接口单元809和L2高速缓存810相关联,以与系统800的其他部分进行通信。互连811包括可以实施所描述的本公开的一个或多个方面的芯片上互连,如IOSF、AMBA或上文讨论的其他互连。
互连811向其他组件提供通信通道,如用于与SIM卡接口连接的用户身份模块(SIM)830、用于保持引导代码以便由核806和807执行对SoC 800初始化和引导的引导ROM835、用于与外部存储器(例如,DRAM 860)接口连接的SDRAM控制器840、用于与非易失性存储器(例如,闪存865)接口连接的闪存控制器845、用于与外围装置接口连接的外围控制850(例如,串行外围接口)、用于显示和接收输入(例如,触摸使能的输入)的视频编解码器820和视频接口825、用于执行图形相关的计算的GPU 815等。这些接口中的任何接口都可以合并本文描述的实施例的各方面。
此外,系统展示了用于通信的外围装置,如蓝牙模块870、3G调制解调器875、GPS880、以及Wi-Fi 885。注意,如上所述,UE包括通信无线电。因此,这些外围通信模块可以不全都被包括。然而,在UE中,应该包括用于外部通信的某种形式的无线电。
图9展示了采用计算系统900的示例形式的在其中可以执行指令集的机器的图解表示,所述指令用于使所述机器执行本文所讨论的方法中的任何一种或多种。在替代性实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网、或因特网中的其他机器。机器可以在客户端-服务器网络环境下以服务器或客户端装置的身份操作,或在点对点(或分布式)网络环境中作为对等机操作。所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络电器、服务器、网络路由器、交换机或桥接器、或能够(相继或以其他方式)执行指定要由那个机器采取的动作的指令集的任何机器。进一步地,虽然仅示出了单个机器,但术语“机器”也应视为包括机器的任何集合,所述机器个别地或联合地执行一个(或多个)指令集以便执行本文中所讨论的方法中的任何一种或多种方法。在计算系统900中可以实施页添加和内容复制的实施例。
计算系统900包括处理装置902、主存储器904(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器906(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储装置918,它们经由总线930互相通信。
处理装置902表示一个或多个通用处理装置,如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实施其他指令集的处理器、或实施指令集组合的处理器。处理装置902还可以是一个或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理装置902可以包括一个或多个处理器核。处理装置902被配置成执行处理逻辑926以便执行本文所讨论的操作。在一个实施例中,处理装置902可以是计算系统的一部分。可替代地,计算系统900可以包括如本文所描述的其他组件。应当理解,核可以支持多线程化(执行并行的两组或更多组操作或线程)),并且可以以各种方式来完成所述多线程化,此各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如超线程化技术中的同步多线程化)。
计算系统900可以进一步包括通信地耦合到网络920的网络接口装置908。计算系统900还可以包括视频显示单元910(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置910(例如,键盘)、光标控制装置914(例如,鼠标)、信号发生装置916(例如,扬声器)或其他外围装置。此外,计算系统900可以包括图形处理单元922、视频处理单元928、以及音频处理单元932。在另一个实施例中,计算系统900可以包括芯片组(未示出),其指的是一组集成电路或芯片,它们设计成与处理装置902一起工作,并控制处理装置902与外部装置之间的通信。例如,芯片组可以是主板上将处理装置902链接到诸如主存储器904和图形控制器等超高速装置以及将处理装置902链接到诸如USB、PCI或ISA总线等较低速外围总线或外围装置的一组芯片。
数据存储装置918可以包括计算机可读存储介质924,在所述存储介质上存储了使本文所描述的功能的方法中的任何一种或多种具体化的软件926。软件926还可以在由计算系统900对其执行期间全部或至少部分地驻留在主存储器904内作为指令926和/或在处理装置902内作为处理逻辑926;主存储器904和处理装置902也构成计算机可读存储介质。
计算机可读存储介质924还可以用于利用以上关于图1所描述的处理模块902和/或包含调用上述应用的方法的软件库来存储指令926。虽然计算机可读存储介质924在示例性实施例中被示出为单个介质,但术语“计算机可读存储介质”应当视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应视为包括能够存储、编码或承载用于由机器执行的指令集并且使机器执行本实施例的方法中的任何一种或多种的任何介质。术语“计算机可读存储介质”应当相应地被视为包括但不限于固态存储器、以及光学介质和磁性介质。
下面的示例涉及进一步实施例。
示例1是一种处理器,包括:1)寄存器,其中,所述寄存器用于存储第一浮点(FP)值、第二FP值和第三FP值;以及2)解码器,用于:a)从应用处接收用于执行融合乘加(FMA)低运算的请求;并且b)对所述请求进行解码;3)FMA低功能单元,用于响应于所述请求而:a)将所述第一FP值与所述第二FP值相乘以便获得第一乘积值;b)将所述第一乘积与所述第三FP值相加以便生成第一结果值;c)舍入所述第一结果以便生成FMA值;并且d)标识由于舍入所述第一结果而丢弃的一个或多个位以便生成FMA低值。
在示例2中,如示例1所述的处理器,其中,为了标识所述一个或多个位,所述FMA低功能单元进一步用于:a)将所述第一FP值与所述第二FP值相乘以便获得第二乘积值;b)将所述第二乘积值与所述第三FP值相加以便获得第二结果值;并且c)从所述FMA值中减去所述第二结果值以便生成所述FMA低值。
在示例3中,如示例2所述的处理器,其中:a)所述第一FP值包括第一尾数和第一指数,b)所述第二FP值包括第二尾数和第二指数,并且c)所述第三FP值包括第三尾数和第三指数。
在示例4中,如示例3所述的处理器,其中:a)所述将所述第一FP值与所述第二FP值相乘以便获得所述第一乘积值进一步包括将所述第一尾数与所述第二尾数相乘以便获得针对所述第一乘积值的第四尾数;并且b)所述将所述第一FP值与所述第二FP值相乘以便获得所述第二乘积值进一步包括将所述第一尾数与所述第二尾数相乘以便获得针对所述第二乘积值的第五尾数。
在示例5中,如示例3所述的处理器,其中,所述FMA低功能单元进一步用于将所述第一尾数、所述第二尾数或所述第三尾数的一个或多个位移位以便对齐所述第一尾数、所述第二尾数或所述第三尾数,从而:进行相乘以便获得所述第一乘积值、进行相加以便生成所述第一结果值、进行相乘以便获得所述第二乘积值、进行相加以便获得所述第二结果值、或者进行相减以便生成所述FMA低值。
在示例6中,如示例2所述的处理器,其中,所述FMA低功能单元包括一个或多个算术逻辑单元(ALU)用于:进行相乘以便获得所述第一乘积值、进行相加以便生成所述第一结果值、进行舍入以便生成所述FMA值、进行相乘以便获得所述第二乘积值、进行相加以便获得所述第二结果值、或者进行相减以便生成所述FMA低值。
在示例7中,如示例2所述的处理器,其中,所述FMA低功能单元包括一个或多个浮点单元(FPU)用于:进行相乘以便获得所述第一乘积值、进行相加以便生成所述第一结果值、进行舍入以便生成所述FMA值、进行相乘以便获得所述第二乘积值、进行相加以便获得所述第二结果值、或者针对所述FMA低值进行相减。
在示例8中,如示例2所述的处理器,其中,所述FMA低功能单元进一步用于作为单指令多数据(SIMD)操作而:进行相乘以便获得所述第二乘积值、进行相加以便生成所述第二结果值、并且进行相减以便生成所述FMA低值。
在示例9中,如示例2所述的处理器,其中,所述FMA低功能单元进一步用于作为标量计算而:执行所述乘法以便获得所述第二乘积值、执行所述加法以便生成所述第二结果值、并且执行所述减法以便生成所述FMA低值。
在示例10中,如示例1所述的处理器,其中,所述FMA低值是单精度格式值或双精度格式值中的一个。
在示例11中,如示例1所述的处理器,其中,所述FMA低功能单元进一步用于:a)归一化所述FMA低值以便获得归一化FMA低值;并且b)舍入所述归一化FMA低值以便获得舍入的FMA低值。
各种实施例可具有上面描述的结构特征的不同组合。例如,上面描述的处理器和方法的所有可选特征也可以相对于本文描述的系统实施,并且示例中的具体细节可用在一个或多个实施例中的各处。
示例12是一种方法,包括:1)由融合乘加(FMA)低功能单元将第一浮点(FP)值与第二FP值相乘以便获得第一乘积值;2)由所述FMA低功能单元将所述第一乘积与第三FP值相加以便生成第一结果值;3)由所述FMA低功能单元舍入所述第一结果以便生成第一FMA值;以及4)由所述FMA低功能单元标识由于所述舍入所述第一结果而丢弃的一个或多个位以便生成FMA低值。
在示例13中,如示例12所述的方法,进一步包括:1)由所述FMA低功能单元将所述第一FP值与所述第二FP值相乘以便获得第二乘积值;2)由所述FMA低功能单元将所述第二乘积值与所述第一FP值相加以便生成第二结果值;以及3)由所述FMA低功能单元从所述FMA值中减去所述第二结果值以便生成第二FMA值。
在示例14中,如示例13所述的方法,其中,所述第一FMA值是位串的第一部分,并且所述第二FMA值是所述位串的第二部分,所述方法进一步包括:限制在生成所述第二FMA值时使用的尾部位的数量。
在示例15中,如示例13所述的方法,进一步包括:1)由所述FMA低功能单元归一化所述第二FMA值以便获得归一化FMA值;以及2)由所述FMA低功能单元舍入所述归一化FMA低值以便获得舍入的FMA低值。
在示例16中,如示例15所述的方法,其中,使用最近舍入整数算法或向零舍入算法来舍入所述第一结果和所述归一化FMA低值。
各种实施例可具有上面描述的结构特征的不同组合。例如,上面描述的处理器和方法的所有可选特征也可以相对于本文描述的系统实施,并且示例中的具体细节可用在一个或多个实施例中的各处。
示例是一种处理器,包括:1)寄存器,其中,所述寄存器用于存储第一浮点(FP)值、第二FP值和第三FP值;以及2)融合乘加(FMA)低功能单元,用于从应用处接收用于执行FMA低运算的请求并且响应于所述请求而执行以下操作:a)将所述第一FP值与所述第二FP值相乘以便获得第一乘积值;b)将所述第一乘积与所述第三FP值相加以便生成第一结果值;c)舍入所述第一结果以便生成第一FMA值;d)将所述第一FP值与所述第二FP值相乘以便获得第二乘积值;e)将所述第二乘积值与所述第一FP值相加以便生成第二结果值;f)从所述FMA值中减去所述第二结果值以便获得第三结果值;g)归一化所述第三结果值以便获得归一化第三结果值;h)舍入所述归一化第三结果值以便生成第二FMA值;并且i)向所述应用发送所述第二FMA值。
在示例18中,如示例17所述的处理器,其中:a)所述第一FP值包括第一尾数和第一指数,b)所述第二FP值包括第二尾数和第二指数,c)所述第三FP值包括第三尾数和第三指数,并且d)所述FMA低功能单元进一步用于将所述第一尾数、所述第二尾数或所述第三尾数的一个或多个位移位以便对齐所述第一尾数、所述第二尾数或所述第三尾数,从而:进行相乘以便获得所述第一乘积值、进行相加以便生成所述第一结果值、进行相乘以便获得所述第一乘积值、进行相加以便获得所述第二结果值、或者进行相减以便获得所述第三结果值。
在示例19中,如示例18所述的处理器,其中,所述FMA低功能单元进一步用于使用编码器确定位串中将移位的所述一个或多个位。
在示例20中,如示例17所述的处理器,其中,所述FMA低功能单元包括一个或多个算术逻辑单元(ALU)用于:进行相乘以便获得所述第一乘积值、进行相加以便生成所述第一结果值、进行舍入以便获得所述FMA值、进行相乘以便获得所述第一乘积值、进行相加以便生成所述第二结果值、或者进行相减以便获得所述第三结果值。
尽管已经关于有限数量的实施例描述了本发明,但本领域的技术人员将从其中认识到许多修改和变化。旨在使得所附的权利要求书覆盖落入本发明的真正精神和范围的所有这样的修改和变体。
在本文的说明书中,阐述了众多特定细节,诸如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线阶段和操作等示例,以便提供对本发明的透彻理解。然而,对本领域技术人员将显而易见的是,不必采用这些特定的细节来实践本发明。在其他实例中,没有详细描述已知的组件或方法,诸如特定和替代处理器体系结构、特定逻辑电路/用于描述算法的代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、代码中的算法的特定表达、特定断电和选通技术/逻辑及计算机系统的其他特定操作细节,以避免对本发明造成不必要的模糊。
实施例参考如计算平台或微处理器等特定集成电路中的融合乘加(FMA)运算来描述。实施例还可应用于其他类型集成电路和可编程逻辑装置。例如,所公开的实施例并不限于台式计算机系统或便携式计算机,如UltrabooksTM计算机。并且,还可用在其他装置中,诸如手持装置、平板电脑、其他薄笔记本、芯片上系统(SoC)装置和嵌入式应用中。手持式装置的一些示例包括:蜂窝电话、互联网协议装置、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用通常包括:微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行以下教导的功能和操作的任何其他系统。描述了该系统可以是任何种类的计算机或嵌入式系统。所公开的实施例特别可用于低端装置,像可穿戴装置(例如,手表)、电子植入物、传感和控制基础设施装置、控制器、监督控制和数据获取(SCADA)系统等。此外,本文描述的设备、方法和系统不限于物理计算装置,并且可以涉及用于节能和效率的软件优化。如在以下描述中将变得容易明白的,本文描述的方法、设备和系统的实施例(不管是关于硬件、固件、软件还是其组合)对将来与性能考虑平衡的‘绿色技术’都是至关重要的。
尽管本文的实施例参考处理器描述,但其他实施例可应用于其他类型集成电路和逻辑装置。本发明的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件可受益于更高的流水线吞吐量和改善的性能。本发明的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据运算的处理器或机器,并且可以应用于执行数据操纵或管理的任何处理器和机器。此外,本文描述提供了示例,并且附图为了说明目的示出了各种示例。然而,这些示例不应当被理解为是限制性意义的,因为它们仅仅旨在提供本发明的实施例的示例,而并非提供本发明的实施例的所有可能实施方式的详尽列表。
虽然下面的示例在执行单元以及逻辑电路的上下文中描述了指令处置和分布,但是本发明的其他实施例可以通过存储在机器可读的、有形的介质上的数据或指令来完成,这些数据或指令当由机器执行时,使机器执行符合本发明的至少一个实施例的功能。在一个实施例中,与本发明的实施例相关联的功能是以机器可执行指令来实现的。指令可以用来使利用指令编程的通用或专用的处理器来执行本发明的步骤。本发明的实施例可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括在其上存储了指令的机器或计算机可读介质,所述指令可以用于编程计算机(或其他电子器件)以执行根据本发明的实施例的一个或多个操作。可替代地,可以由包含用于执行操作的固定功能逻辑的特定硬件组件,或由编程的计算机组件和固定功能硬件组件的任何组合,来执行本发明的各实施例的操作。
用于编程逻辑以执行本发明的实施例的指令可以存储在系统中的存储器内,诸如DRAM、高速缓存、闪存,或其他存储装置。此外,指令可以经由网络或借助于其他计算机可读介质被分布。因此,机器可读介质可以包括用于存储或传输呈由机器(例如,计算机)可读的形式的信息的任何机制,但是不限于软磁盘、光盘、压缩盘、只读光盘存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于经由电、光、声音、或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形机器可读存储装置。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计可以贯穿各个不同的阶段,从产生到仿真到制造。代表设计的数据可以通过许多方式来代表设计。首先,如在仿真中有用的,可以使用硬件描述语言或其他功能描述语言代表硬件。此外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路等级模型。此外,多数设计在一些阶段处达到的数据水平代表在硬件模型中的不同设备的物理布局。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指示由掩模用于产生集成电路的各种特征在不同掩模层上存在或不存在的数据。在任何设计表示中,数据可以存储在任何形式的机器可读介质中。存储器或磁存储装置或光存储装置(如,盘)可以是用于存储信息的机器可读介质,所述信息是经由光波或电波来传输的,所述光波或电波被调制或以其他方式被生成以传输这类信息。当传输指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重传情况的程度上,制作新的副本。因此,通信提供者或网络提供者可以在有形机器可读介质上至少暂时地存储项目,如编码到载波中的信息,从而将本发明的实施例的技术具体化。
本文中使用的模块是指硬件、软件和/或固件的任意组合。作为示例,模块包括硬件,如与非暂态介质相关联的用于存储代码的微控制器,所述代码被适配成由微控制器执行。因此,在一个实施例中,对模块的引用是指硬件,所述硬件具体被配置成标识和/或执行有待保持在非暂态介质上的代码。此外,在另一个实施例中,模块的使用指包括代码的非暂态介质,所述代码具体地被适配成由微控制器执行以执行预定操作。并且如可以推断的,在又另一个实施例中,术语模块(在此示例中)可以指微控制器与非暂态介质的组合。通常,被展示为分开的模块边界通常会有所变化并且可能重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器,或其他硬件,如可编程逻辑装置。
短语‘配置成’的使用在一个实施例中是指安排、汇编、制造、提供销售、导入和/或设计装置、硬件、逻辑或元件,从而执行指定或确定的任务。在本示例中,未运行的装置或其元件如果被设计、被耦合和/或被互连用于执行所述指定任务则仍被‘配置成’执行指定的任务。仅作为说明性示例,逻辑门在操作过程中可以提供0或1。但是‘被配置成’为时钟提供启动信号的逻辑门不包括可以提供1或0的每个可能的逻辑门。相反,逻辑门是以某种方式耦合的,从而使得在操作过程中,1或0输出用于启动时钟。再次注意到的是,术语‘配置成’的使用不需要运算,而是集中于设备、硬件和/或元件的潜在状态,其中在潜在状态中,设备、硬件和/或元件被设计成当该设备、硬件和/或元件运行时执行具体任务。
此外,短语‘用于’、‘能够/能够用于’和或‘能操作以’的使用在一个实施例中指的是一些装置、逻辑、硬件和/或元件被设计的方式使得能够以指定方式使用该装置、逻辑、硬件和/或元件。注意,在一个实施例中,如以上‘用于(to)’、‘能够用于(capable to)’或‘能操作以(operable to)’的使用是指装置、逻辑、硬件和/或元件的潜在状态,其中,所述装置、逻辑、硬件和/或元件未在运行但是被设计,其方式使得能够以特定的方式使用装置。
如本文中使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。经常,逻辑电平、逻辑值或逻辑的值的使用也称为简单地代表二进制逻辑状态的1和0。例如,1是指高逻辑电平,并且0是指低逻辑电平。在一个实施例中,如晶体管或闪存单元(cell)的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,计算机系统中值的其他表示已被使用。例如,十进制数字十也可以表示为二进制值1010和十六进制字母A。因此,值包括能够在计算机系统中保持的信息的任何表示。
此外,状态可以由值或一部分值来代表。作为示例,第一值(如逻辑一)可以代表默认或初始状态,而第二值(如逻辑零)可以代表非默认状态。此外,在一个实施例中,术语重置和设置分别是指默认的和更新的值或状态。例如,默认值可能包括高逻辑值(即,重置),而更新值可能包括低逻辑值(即,设置)。注意,可以利用值的任意组合来表示任意数量的状态。
以上阐述的方法、硬件、软件、固件或代码的实施例可经由存储在机器可访问的、机器可读的、计算机可访问的或计算机可读的介质上的可被处理元件执行的代码或指令来实施。非暂态机器可访问/可读介质包括提供(即,存储和/或传输)具有由机器(诸如,计算机或电子系统)可读的形式的信息的任何机制。例如,非暂态机器可访问介质包括:随机存取存储器(RAM),如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁存储介质或光存储介质;闪存装置;电存储装置;光存储装置;声学存储装置;用于保持从暂态(传播)信号(例如,载波、红外信号、数字信号)接收到的信息的其他形式的存储装置等,它们与可以从中接收信息的非暂态介质区分开来。
用于程序逻辑以执行本发明的实施例的指令可以存储在系统中的存储器内,如DRAM、缓存、闪存或其他存储装置。此外,指令可以经由网络或借助于其他计算机可读介质被分布。因此,机器可读介质可以包括用于存储或传输呈由机器(例如,计算机)可读的形式的信息的任何机制,但是不限于软磁盘、光盘、压缩盘、只读光盘存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于经由电、光、声音、或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形机器可读存储装置。因此,计算机可读介质包括用于存储或传输机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书对“一个实施例”或“实施例”的提及是指结合实施例所描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,贯穿本说明书,短语“在一个实施例中”或“在实施例中”在各处的出现未必都是指代相同的实施例。此外,在一个或多个实施例中,可以以任何适当的方式来组合特定特征、结构或特性。
在上述说明书中,已经参照具体示例性实施例给出了详细说明。然而,将明显的是,可以在不脱离如所附权利要求中阐述的本发明的更广的精神和范围的情况下对其做出各种修改和改变。因此,说明书和附图被认为是说明性意义的,而不是限制性意义的。此外,实施例和其他示范性语言的上述使用不一定指相同的实施例或相同的示例,而是可指不同且有区别的实施例,以及可能指相同的实施例。
具体实施方式的一些部分根据对计算机存储器内的数据位的操作的算法和符号表示来呈现。这些算法描述和表示是被数据处理领域中的技术人员使用的手段,以便最有效地将他们的工作的实质传递给本领域的其他技术人员。算法在本文中并且一般被视为导致期望结果的操作的自相和序列。这些操作是要求实际地操纵物理量的那些操作。通常但并非必须地,这些物理量采用能够被存储、传递、组合、比较以及以其他方式操纵的电或磁信号的形式。这已被证明是有时便于(主要由于公共使用的原因)涉及如位、数值、元素、符号、字符、术语、数字等等的这些信号。本文所描述的块可以是硬件、软件、固件或其组合。
然而,应当谨记所有这些以及类似的术语要与适当的物理量相关联并且仅仅是适用于这些量的便捷标记。除非特别声明,否则根据上面论述显然的是,要认识到,在说明书通篇利用诸如“定义”、“接收”、“确定”、“发出”、“链接”、“关联”、“获得”、“认证”、“禁止”、“执行”、“请求”、“通信”等术语的论述是指计算系统或类似电子计算装置的动作和过程,其将计算系统的寄存器和存储器内表示为物理(例如,电子)量的数据操控并变换成在计算系统存储器或寄存器或其他此类信息存储、传送或显示装置内类似地表示为物理量的其他数据。
词语“示例”或“示例性”在本文中被用于意指充当示例、实例或说明。在此被描述为“示例”或“示例性的”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。相反,使用词语“示例”或“示例性的”是意图以具体的方式呈现概念。如本申请中所使用的,术语“或者”意图意指包括性的“或者”而不是排他性的“或者”。也就是说,除非另有详细说明或者根据上下文清楚可知,“X包括A或B”意在表示任何自然包括性排列。也就是说,如果X包括A;X包括B;或者X包括A和B二者,则“X包括A或B”在任何前述实例中被满足。另外,本申请和所附权利要求中使用的冠词“一个”总体上应当理解为表示“一个或多个”,除非另有所指或从针对单数形式的上下文中明显看出。此外,除非如此描述,否则贯穿全文的术语“实施例”或“一个实施例”或“实施方式”或“一种实施方式”的使用不意指相同的实施例或实施方式。而且,如本文所使用的术语“第一”、“第二”、“第三”、“第四”等意指作为标记以区分不同的元件并且可能不一定具有根据其数字名称的依次含义。
Claims (22)
1.一种处理器,包括:
寄存器,其中,所述寄存器用于存储第一浮点FP值、第二FP值和第三FP值;以及
解码器,用于:
从应用处接收用于执行融合乘加FMA低运算的请求;以及
对所述请求进行解码;
FMA低功能单元,用于响应于所述请求而:
将所述第一FP值与所述第二FP值相乘以获得第一乘积值;
将所述第一乘积值与所述第三FP值相加以生成第一结果值;
从所述第一结果值中减去FMA结果以获得第二结果值;
舍入所述第二结果值以生成FMA值;以及
标识由于舍入所述第二结果值而丢弃的一个或多个位以生成FMA低值。
2.如权利要求1所述的处理器,其特征在于,为了标识所述一个或多个位,所述FMA低功能单元进一步用于:
将所述第一FP值与所述第二FP值相乘以获得第二乘积值;以及
将所述第二乘积值与所述第三FP值相加以获得所述FMA结果。
3.如权利要求2所述的处理器,其特征在于:
所述第一FP值包括第一尾数和第一指数,
所述第二FP值包括第二尾数和第二指数,以及
所述第三FP值包括第三尾数和第三指数。
4.如权利要求3所述的处理器,其特征在于:
所述将所述第一FP值与所述第二FP值相乘以获得所述第一乘积值进一步包括将所述第一尾数与所述第二尾数相乘以获得针对所述第一乘积值的第四尾数;以及
所述将所述第一FP值与所述第二FP值相乘以获得所述第二乘积值进一步包括将所述第一尾数与所述第二尾数相乘以获得针对所述第二乘积值的第五尾数。
5.如权利要求3所述的处理器,其特征在于,所述FMA低功能单元进一步用于将所述第一尾数、所述第二尾数或所述第三尾数的一个或多个位移位以对齐所述第一尾数、所述第二尾数或所述第三尾数,从而:进行相乘以获得所述第一乘积值、进行相加以生成所述第一结果值、进行相乘以获得所述第二乘积值、进行相加以获得所述FMA结果、或者进行相减以获得所述第二结果值。
6.如权利要求2所述的处理器,其特征在于,所述FMA低功能单元包括一个或多个算术逻辑单元(ALU)用于:进行相乘以获得所述第一乘积值、进行相加以生成所述第一结果值、进行舍入以生成所述FMA值、进行相乘以获得所述第二乘积值、进行相加以获得所述FMA结果、或者进行相减以获得所述第二结果值。
7.如权利要求2所述的处理器,其特征在于,所述FMA低功能单元包括一个或多个浮点单元(FPU)用于:进行相乘以获得所述第一乘积值、进行相加以生成所述第一结果值、进行舍入以生成所述FMA值、进行相乘以获得所述第二乘积值、进行相加以获得所述FMA结果、或者进行相减以获得所述第二结果值。
8.如权利要求2所述的处理器,其特征在于,所述FMA低功能单元进一步用于作为单指令多数据(SIMD)操作而:进行相乘以获得所述第二乘积值、进行相加以获得所述FMA结果、并且进行相减以获得所述第二结果值。
9.如权利要求2所述的处理器,其特征在于,所述FMA低功能单元进一步用于作为标量计算而:执行乘法以获得所述第二乘积值、执行加法以获得所述FMA结果、并且执行减法以获得所述第二结果值。
10.如权利要求1所述的处理器,其特征在于,所述FMA低值是单精度格式值或双精度格式值中的一个。
11.如权利要求1所述的处理器,其特征在于,所述FMA低功能单元进一步用于:
归一化所述第二结果值以获得归一化值;以及
舍入所述归一化值以获得舍入的值作为所述FMA值。
12.一种用于电子器件的方法,包括:
由解码器接收来自应用的执行融合乘加FMA低运算的请求;
由所述解码器对所述请求进行解码;以及
响应于所述请求,
由FMA低功能单元将第一浮点FP值与第二FP值相乘以获得第一乘积值;
由所述FMA低功能单元将所述第一乘积值与第三FP值相加以生成第一结果值;
由所述FMA低功能单元从所述第一结果值中减去FMA结果以获得第二结果值;
由所述FMA低功能单元舍入所述第二结果值以生成FMA值;以及
由所述FMA低功能单元标识由于所述舍入所述第二结果值而丢弃的一个或多个位以生成FMA低值。
13.如权利要求12所述的方法,其特征在于,进一步包括:
由所述FMA低功能单元将所述第一FP值与所述第二FP值相乘以获得第二乘积值;以及
由所述FMA低功能单元将所述第二乘积值与所述第一FP值相加以生成所述FMA结果。
14.如权利要求13所述的方法,其特征在于,所述FMA值是位串的第一部分,并且所述FMA低值是所述位串的第二部分,所述方法进一步包括:限制在生成所述FMA低值时使用的尾部位的数量。
15.如权利要求13所述的方法,其特征在于,进一步包括:
由所述FMA低功能单元归一化所述第二结果值以获得归一化低值;以及
由所述FMA低功能单元舍入所述归一化低值以获得第二结果值。
16.如权利要求15所述的方法,其特征在于,使用最近舍入整数算法或向零舍入算法来舍入所述归一化低值。
17.一种处理器,包括:
寄存器,其中,所述寄存器用于存储第一浮点FP值、第二FP值和第三FP值;以及
融合乘加FMA低功能单元,用于从应用处接收用于执行FMA低运算的请求并且响应于所述请求而执行以下操作:
将所述第一FP值与所述第二FP值相乘以获得第一乘积值;
将所述第一乘积与所述第三FP值相加以生成第一结果值;
舍入所述第一结果以生成第一FMA值;
将所述第一FP值与所述第二FP值相乘以获得第二乘积值;
将所述第二乘积值与所述第一FP值相加以生成第二结果值;
从所述FMA值中减去所述第二结果值以获得第三结果值;
归一化所述第三结果值以获得归一化第三结果值;
舍入所述归一化第三结果值以生成第二FMA值;以及
向所述应用发送所述第二FMA值。
18.如权利要求17所述的处理器,其特征在于:
所述第一FP值包括第一尾数和第一指数,
所述第二FP值包括第二尾数和第二指数,
所述第三FP值包括第三尾数和第三指数,以及
所述FMA低功能单元进一步用于将所述第一尾数、所述第二尾数或所述第三尾数的一个或多个位移位以对齐所述第一尾数、所述第二尾数或所述第三尾数,从而:进行相乘以获得所述第一乘积值、进行相加以生成所述第一结果值、进行相乘以获得所述第一乘积值、进行相加以获得所述第二结果值、或者进行相减以获得所述第三结果值。
19.如权利要求18所述的处理器,其特征在于,所述FMA低功能单元进一步用于使用编码器确定位串中将移位的所述一个或多个位。
20.如权利要求17所述的处理器,其特征在于,所述FMA低功能单元包括一个或多个算术逻辑单元(ALU)用于:进行相乘以获得所述第一乘积值、进行相加以生成所述第一结果值、进行舍入以获得所述FMA值、进行相乘以获得所述第一乘积值、进行相加以生成所述第二结果值、或者进行相减以获得所述第三结果值。
21.一种机器可读介质,所述机器可读介质包括代码,所述代码在被执行时使机器执行如权利要求12至16中的任一项所述的方法。
22.一种用于电子器件的设备,包括用于执行如权利要求12至16中的任一项所述的方法的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/757,942 US9996320B2 (en) | 2015-12-23 | 2015-12-23 | Fused multiply-add (FMA) low functional unit |
US14/757,942 | 2015-12-23 | ||
PCT/US2016/063632 WO2017112307A1 (en) | 2015-12-23 | 2016-11-23 | Fused multiply–add (fma) low functional unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108431771A CN108431771A (zh) | 2018-08-21 |
CN108431771B true CN108431771B (zh) | 2023-12-19 |
Family
ID=59087852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680075267.4A Active CN108431771B (zh) | 2015-12-23 | 2016-11-23 | 融合乘加(fma)低功能单元 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9996320B2 (zh) |
EP (1) | EP3394729B1 (zh) |
CN (1) | CN108431771B (zh) |
TW (1) | TWI737652B (zh) |
WO (1) | WO2017112307A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10409614B2 (en) | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
US11138135B2 (en) * | 2018-09-20 | 2021-10-05 | Samsung Electronics Co., Ltd. | Scale-out high bandwidth memory system |
US20220180467A1 (en) | 2019-03-15 | 2022-06-09 | Intel Corporation | Systems and methods for updating memory side caches in a multi-gpu configuration |
BR112021016106A2 (pt) | 2019-03-15 | 2021-11-09 | Intel Corp | Processador gráfico de propósito geral, método e sistema de processamento de dados |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
CN112835551B (zh) * | 2021-03-09 | 2022-06-28 | 上海壁仞智能科技有限公司 | 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5928316A (en) * | 1996-11-18 | 1999-07-27 | Samsung Electronics Co., Ltd. | Fused floating-point multiply-and-accumulate unit with carry correction |
CN103975302A (zh) * | 2011-12-22 | 2014-08-06 | 英特尔公司 | 矩阵乘法累加指令 |
CN104321741A (zh) * | 2012-06-29 | 2015-01-28 | 英特尔公司 | 双舍入组合浮点乘法和加法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0776911B2 (ja) * | 1988-03-23 | 1995-08-16 | 松下電器産業株式会社 | 浮動小数点演算装置 |
US5027308A (en) * | 1989-02-14 | 1991-06-25 | Intel Corporation | Circuit for adding/subtracting two floating point operands |
US4975868A (en) * | 1989-04-17 | 1990-12-04 | International Business Machines Corporation | Floating-point processor having pre-adjusted exponent bias for multiplication and division |
US5341321A (en) * | 1993-05-05 | 1994-08-23 | Hewlett-Packard Company | Floating point arithmetic unit using modified Newton-Raphson technique for division and square root |
JPH08227597A (ja) * | 1995-02-21 | 1996-09-03 | Mitsubishi Electric Corp | 半導体記憶装置 |
US6820106B1 (en) * | 2000-06-27 | 2004-11-16 | Intel Corporation | Method and apparatus for improving the performance of a floating point multiplier accumulator |
US7720900B2 (en) * | 2005-09-09 | 2010-05-18 | International Business Machines Corporation | Fused multiply add split for multiple precision arithmetic |
US7752250B2 (en) * | 2006-01-12 | 2010-07-06 | International Business Machines Corporation | Rounding floating point division results |
US20100125621A1 (en) * | 2008-11-20 | 2010-05-20 | Advanced Micro Devices, Inc. | Arithmetic processing device and methods thereof |
US8499017B2 (en) | 2009-08-12 | 2013-07-30 | Arm Limited | Apparatus and method for performing fused multiply add floating point operation |
CN104011664B (zh) * | 2011-12-23 | 2016-12-28 | 英特尔公司 | 使用三个标量项的超级乘加(超级madd)指令 |
US8930433B2 (en) * | 2012-04-24 | 2015-01-06 | Futurewei Technologies, Inc. | Systems and methods for a floating-point multiplication and accumulation unit using a partial-product multiplier in digital signal processors |
US9110713B2 (en) * | 2012-08-30 | 2015-08-18 | Qualcomm Incorporated | Microarchitecture for floating point fused multiply-add with exponent scaling |
US9829956B2 (en) * | 2012-11-21 | 2017-11-28 | Nvidia Corporation | Approach to power reduction in floating-point operations |
-
2015
- 2015-12-23 US US14/757,942 patent/US9996320B2/en active Active
-
2016
- 2016-11-18 TW TW105137913A patent/TWI737652B/zh active
- 2016-11-23 CN CN201680075267.4A patent/CN108431771B/zh active Active
- 2016-11-23 EP EP16879791.8A patent/EP3394729B1/en active Active
- 2016-11-23 WO PCT/US2016/063632 patent/WO2017112307A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5928316A (en) * | 1996-11-18 | 1999-07-27 | Samsung Electronics Co., Ltd. | Fused floating-point multiply-and-accumulate unit with carry correction |
CN103975302A (zh) * | 2011-12-22 | 2014-08-06 | 英特尔公司 | 矩阵乘法累加指令 |
CN104321741A (zh) * | 2012-06-29 | 2015-01-28 | 英特尔公司 | 双舍入组合浮点乘法和加法 |
Non-Patent Citations (2)
Title |
---|
Accurate sum and dot product with applications;T.Ogita et al;《2004 IEEE International Conference on Robotics and Automation》;20050222;152-155页 * |
分离通路浮点乘加器设计与实现;何军等;《计算机科学》;20130831;第40卷(第8期);28-33页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108431771A (zh) | 2018-08-21 |
TW201730759A (zh) | 2017-09-01 |
WO2017112307A1 (en) | 2017-06-29 |
US20170185379A1 (en) | 2017-06-29 |
EP3394729B1 (en) | 2021-02-17 |
EP3394729A4 (en) | 2019-08-07 |
US9996320B2 (en) | 2018-06-12 |
TWI737652B (zh) | 2021-09-01 |
EP3394729A1 (en) | 2018-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108475193B (zh) | 用于字节排序指令和用于四位组排序的处理器、方法和系统 | |
CN108431771B (zh) | 融合乘加(fma)低功能单元 | |
US10635447B2 (en) | Scatter reduction instruction | |
CN108475199B (zh) | 用于执行密钥值查找指令的处理设备 | |
TW201729078A (zh) | 用於以通道為基礎的跨步儲存操作之指令及邏輯 | |
US20180232627A1 (en) | Variable word length neural network accelerator circuit | |
CN107003839B (zh) | 用于移位和乘法器的指令执行方法、处理器和系统 | |
US10445064B2 (en) | Implementing logarithmic and antilogarithmic operations based on piecewise linear approximation | |
TWI723075B (zh) | 用於向量置換的方法和處理器以及向量置換單元 | |
TWI738681B (zh) | 處理器、用於檢測消抵效應之方法及消抵效應檢測單元 | |
US10691454B2 (en) | Conflict mask generation | |
US20170123799A1 (en) | Performing folding of immediate data in a processor | |
CN108292219B (zh) | 浮点(fp)加法低指令功能单元 | |
US20170185413A1 (en) | Processing devices to perform a conjugate permute instruction | |
US20210303309A1 (en) | Reconstruction of flags and data for immediate folding | |
TWI724066B (zh) | 分散縮減指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |