CN104823153A - 引导变化预测器逻辑 - Google Patents
引导变化预测器逻辑 Download PDFInfo
- Publication number
- CN104823153A CN104823153A CN201380061966.XA CN201380061966A CN104823153A CN 104823153 A CN104823153 A CN 104823153A CN 201380061966 A CN201380061966 A CN 201380061966A CN 104823153 A CN104823153 A CN 104823153A
- Authority
- CN
- China
- Prior art keywords
- lca
- processor
- totalizer
- place value
- mantissa
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/74—Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
-
- 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
-
- 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
Abstract
在一个实施例中,处理器包括至少一个浮点单元。该至少一个浮点单元可包括加法器、引导变化预测器(LCA)逻辑以及移位器。加法器可以将第一操作数X与第二操作数Y相加,以获得具有位长度n的输出操作数。LCA逻辑可以:对于从n-1到1的每一个位置i,基于第一操作数X和第二操作数Y,获得一组传播值以及一组位值;以及,基于该组传播值以及该组位值,生成LCA掩码。移位器可以基于LCA掩码,归一化输出操作数。描述并要求保护其他实施例。
Description
背景技术
各实施例一般涉及浮点运算。
现代的处理器包括用于对数据执行运算的各种电路。此电路可包括浮点单元(FPU),该浮点单元可包括对浮点数字执行运算的功能。例如,浮点运算可包括加法、减法、乘法、除法以及平方根。这样的浮点运算可以大量地用于某些应用中,诸如图形、游戏、科学,以及工程应用中。
附图简述
图1A-1B是根据一个或多个实施例的系统的框图。
图2是根据一个或多个实施例的框图。
图3是根据一个或多个实施例的序列。
图4是根据一个或多个实施例的处理器的框图。
图5是根据一个或多个实施例的多域处理器的框图。
图6是包括多个核的处理器的实施例的框图。
图7是根据本发明的一个或多个实施例的系统的框图。
图8是根据本发明的一个或多个实施例的系统的框图。
具体实施方式
一般而言,浮点单元(FPU)可以表示使用三个元素(即二进制符号位、二进制编码的指数以及二进制编码的尾数)的浮点数。在类加法运算中,尾数可以被移位,以校准指数。如此处所使用的,除加法运算之外,术语“类加法”运算还包括减法运算、最小函数、最大函数,及其他,诸如整数到浮点,以及浮点到整数转换,以及双精度到单精度以及单精度到双精度转换,以及浮点比较指令。
在某些情况下,由类加法运算所产生的尾数可包括引导零(在正结果的情况下)或引导1(在负结果的情况下)。通常,引导零预测器(LZA)可以与加法器并行地使用,以预测加法器的输出尾数中的引导零的数量。可以将引导零的此数量提供到移位器,然后,该移位器可以移位输出尾数,以删除任何引导零。类似地,引导1预测器(LOA)可以预测引导1的数量,如此,可以和移位器一起使用,以从输出尾数中删除任何引导1。引导1或零的这样的删除可以被称为“归一化”输出尾数。
由于这样的LZA和LOA通常被实现为单独的电路,因此,检测引导1和引导零可能需要大量的可用的处理器资源(例如,处理器管芯上的面积)。进一步,可能需要选择器以对于每一个运算,确定要使用LZA或LOA中的哪一个。此外,LZA、LOA,和/或选择器可能会对完成浮点运算产生时间延迟,由此,降低处理器性能。
根据一些实施例,可以提供引导预测器变化(LCA)。在一个或多个实施例中,LCA可以是预测类加法浮点运算的输出中的引导1和0两者的单一电路,并可以被用来归一化这样的输出。在某些实施例中,LCA可以比其他技术(例如,LZA、LOA以及选择器)消耗较少的处理器资源。进一步,LCA可以提供引导零/1预测,而不会对浮点运算产生时间延迟,由此提高处理器性能。
参考图1A,所示是根据一个或多个实施例的系统100的框图。在某些实施例中,系统100可以是电子设备或组件的全部或一部分。例如,系统100可以被包括在蜂窝电话、计算机、服务器、网络设备、处理器、片上系统(SoC)、控制器、无线收发器、电源单元等等中。
如图1A所示,系统100可以包括耦合到存储器140的处理器110。处理器110可包括浮点单元(FPU)120。在某些实施例中,FPU 120可包括执行浮点运算(例如,加法、减法、乘法、除法等等)的功能。
尽管本发明的范围在这方面不受限制,但是,在许多实现中,FPU 120可以适应给定格式或标准(例如,给定的电气与电子工程师学会(IEEE)标准)的操作数。进一步,给定实现可以被用来处理各种类型的传入的数据,包括可以是单精度以及双精度浮点格式的操作数。
如图所示,FPU 120可包括加法单元125。在某些实施例中,加法单元125可以表示包括执行类加法的浮点运算的功能的任何单元。例如,加法单元125可以是加法器。在另一个示例中,加法单元125可以是熔合乘法-加法(FMA)单元,包括乘法器、加法器,以及舍入器。下面参考图1B讨论了加法单元125的示例实施例。
在其中加法单元125是FMA单元的各实施例中,此FMA单元可以执行浮点乘法累积运算,并适应给定格式(例如,给定的电气与电子工程师学会(IEEE)标准,诸如用于浮点(FP)算术的IEEE标准754-2008(2008年发布)的)的操作数。此外,给定实现可以被用来处理各种类型的传入的数据,包括可以是单精度以及双精度浮点格式的操作数。
在某些实施例中,可以使用三个源操作数来定义FMA指令语法,其中,基于数据元素的算术运算的结果,来更新第一源操作数。如此,第一源操作数也可以是目的地操作数。例如,可以存在下列指令格式:操作码,x1,x2,x3,其中,操作码对应于执行给定算术运算的多个用户级别的FMA或其他指令中的一个,而x1-x3对应于要在运算中被处理的操作数。
在FMA指令中执行的算术FMA运算可以呈现多种形式之一,例如:
r=(x*y)+z;
r=(x*y)-z;
r=-(x*y)+z;或
r=-(x*y)-z。
在一个实施例中,紧缩的FMA指令可以利用256位向量,执行八个单精度FMA运算或四个双精度FMA运算。当使用向量寄存器来实现时,标量FMA指令可以对低阶数据元素只执行一个算术运算。目的地操作数的较低的128位中的数据元素的其余部分的内容被保留,而目的地操作数的较高的128位可以用零填充。
在一个实施例中,形式为r=(x*y)+z的算术FMA运算,取两个IEEE-754-2008单(双)精度值,并将它们相乘,以形成中间值。将此中间值与第三单(双)精度值相加,并舍入,以产生单(双)精度结果。在不同的实施例中,可以实现不同的舍入模式和精度。
在一个实施例中,可以对各种紧缩的数据类型表示执行向量指令。这些数据类型可包括,对于128位宽的操作数,紧缩的字节、紧缩的字以及紧缩的双字(dword)和紧缩的四倍长字。作为示例,紧缩的字节格式可以是128位长,并包含十六个紧缩的字节数据元素。字节在此被定义为8位数据。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。然而,应理解,各实施例同样适用于标量(单个或非紧缩的)表示。
通常,数据元素是单独的数据片,与具有相同长度的其他数据元素一起存储在单个寄存器或存储器位置中。在某些紧缩数据序列中,存储在寄存器中的数据元素的数目是128位除以单独的数据元素的位长。虽然数据类型可以是128位长,但是,本发明的各实施例也可以利用64位宽或其他大小的操作数来操作。
将会理解,可进一步将此类紧缩数据格式扩展至其他寄存器长度,例如,96位、160位、192位、224位、256位、512位或更长。另外,在根据本发明的一个实施例的多媒体寄存器中可以处理各种有符号和无符号紧缩数据类型表示。在根据本发明的实施例的寄存器组中的寄存器中还可以处理各种类型的标量数据格式。
在一个或多个实施例中,加法单元125可包括引导预测器变化(LCA)逻辑130。在某些实施例中,LCA逻辑130可包括预测由在FPU 120中执行的类加法运算所产生的尾数中的引导1或0的功能。进一步,在某些实施例中,由LCA逻辑130所提供的预测的引导1或0可以被用来归一化类加法运算的结果。下面将参考图1B、2以及3进一步描述LCA逻辑130的功能。
注意,系统100、处理器110、FPU 120、加法单元125和/或LCA逻辑130是以简化形式示出的,并可包括除图1A中所示出的那些之外的任何数量或类型的元件。例如,处理器110也可以包括整数单元(未示出)。
现在参考图1B,所示是加法单元125的示例实施例。如图所示,加法单元125可包括加法器160、LCA单元130、移位器170以及舍入器180。在一个或多个实施例中,加法器160可以将尾数X 152与尾数Y 152相加,以获得输出尾数165(即,X+Y)。然后,加法器160可以向移位器170提供输出尾数165。
如图所示,可以将尾数X 152和尾数Y 154提供到LCA逻辑130以及加法器160。在某些实施例中,LCA逻辑130可以基于尾数X 152和尾数Y 154,确定最高有效位(MSB),就是说,在去除任何引导1或0之后输出尾数165中的最高位。进一步,在某些实施例中,MSB的位置可以被用来确定预测被包括在输出尾数165中的引导1或0的数量(此处被称为“移位数量”)。注意,在某些情况下移位数量可以等于零,意味着,预测没有引导1或0被包括在输出尾数165中。
如图1B所示,LCA逻辑130可以向移位器170提供LCA掩码135。在某些实施例中,LCA掩码135可以是包括对应于输出尾数165中的位位置的位的位掩码。具体而言,在某些实施例中,LCA掩码135可包括在输出尾数165中的每一个引导1或0的位位置中的“1”的位,也可以包括在输出尾数165中的MSB的位置的位位置中的“0”位。
在一个或多个实施例中,LCA逻辑130可以生成LCA掩码135,作为掩码位的系列。在某些实施例中,可以根据掩码位公式mb[i],生成对应于位位置i的掩码位。可以按如下方式导出掩码位公式mb[i]。
尾数X 152是包括位X[n],X[n-1],...,X[1],X[0]的位向量。
尾数Y 154是包括位Y[n],Y[n-1],...,Y[1],Y[0]的位向量。
对于每一个位位置i,我们导出传播值P,终止(kill)值Z,以及生成值G,其中:
P[i]=(X[i]<>Y[i]),
Z[i]=(X[i]=Y[i]=0),以及
G[i]=(X[i]=Y[i]=1)。
这些值可以通过下列公式来关联:!P[i-1]=Z[i]+G[i].
下一步骤是检测对下列情况的第一违犯(带有最大索引):
对于引导零-P[n]...P[i+1]G[i]Z[i-1]...Z[0],以及
对于引导1-P[n]...P[i+1]Z[i]G[i-1]...G[0]。
对于i=n-1,...,1的初始掩码位公式,可以用下列公式表示:
mb[i]=P[i]OR(P[i+1]AND((Z[i]AND G[i-1])OR(G[i]AND Z[i-1])))OR(!P[i+1]AND((Z[i]AND Z[i-1])OR(G[i]AND G[i-1]))).
此初始掩码位公式可以被变换为:
mb[i]=P[i]OR(!P[i]AND((Z[i]AND G[i-1])OR(G[i]AND Z[i-1]))))OR(!P[i+1]AND(!P[i]AND((Z[i]AND Z[i-1])OR(G[i]AND G[i-1])))).
第一表达式可以简化为:
!P[i]AND((Z[i]AND G[i-1])OR(G[i]AND Z[i-1]))=
!P[i]AND!P[i-1]AND((Z[i]AND G[i-1])OR(G[i]AND Z[i-1]))=
!P[i]AND!P[i-1]AND(X[i]<>X[i-1]).。
类似地,第二表达式可以简化为:
!P[i]AND((Z[i]AND Z[i-1])OR(G[i]AND G[i-1]))=
!P[i]AND!P[i-1]AND((Z[i]AND Z[i-1])OR(G[i]AND G[i-1]))=
!P[i]AND!P[i-1]AND(X[i]=X[i-1])。
这两个简化表达式可以代入掩码位公式中:
mb[i]=P[i]OR(P[i]AND!P[i]AND!P[i-1]AND(X[i]<>X[i-1]))OR(!P[i]AND!P[i-1]AND(X[i]=X[i-1]))。
此公式可以简化为:
mb[i]=P[i]OR(P[i+1]AND!P[i-1]AND(X[i]<>X[i-1]))OR(!P[i+1]AND!P[i-1]AND(X[i]=X[i-1]))。
此公式也可以简化为:
mb[i]=P[i]OR!P[i-1]AND((P[i+1]AND(X[i]<>X[i-1]))OR(!P[i+1]AND(X[i]=X[i-1])))。
此公式可以被转换成掩码位公式的最终形式:
mb[i]=P[i]OR!P[i-1]AND(P[i+1]XOR(X[i]XNOR X[i-1]))。
在一个或多个实施例中,LCA逻辑130可以作为逻辑电路,来实现此掩码位公式。下面将参考图2来描述这样的逻辑电路的一个示例实施例。
在一个或多个实施例中,移位器170可以使用LCA掩码135来确定移位数量。移位器170也可以将输出尾数165向左移位该移位数量,如此,归一化输出尾数165,(即,从其中删除任何引导1或0),获得归一化的输出175。然后,移位器170可以向舍入器180提供归一化的输出175。舍入器180可以执行舍入运算,并可以提供舍入的输出185。
注意,LCA逻辑130可以与加法器160并行地操作。如此,LCA逻辑130可以提供LCA掩码135,无需首先等待加法器160完成尾数X 152和尾数Y 154的相加。如此,加法单元125可以比在LCA逻辑130不与加法器160并行地操作的情况下更快地完成加法运算。下面参考图2讨论LCA逻辑130和加法器160的示例实施例。
现在参考图2,所示是根据一个或多个实施例的LCA逻辑130和加法器160的框图。具体而言,图2示出了加法器160将第一尾数210(包括位X0,X1,...,Xn)与第二尾数220(包括位Y0,Y1,...,Yn)相加的示例,每一个尾数都包括n+1位。假设LCA逻辑130将对位位置i=n-1到1(即,从次最高位置n-1到次最低位置1)迭代,以便确定MSB的位置。如此,假设图2所示出的示例对应于LCA逻辑130正在评估位位置i的时间点。
在一个或多个实施例中,加法器160包括第一异-或(XOR)门232、第二XOR门234,以及第三XOR门236。如图所示,第二XOR门234可以接收位Xi(对应于第一尾数210中的位位置i)以及位Yi(对应于第二尾数220中的位位置i)。如此,第二XOR门234的输出Pi可以对应于值(Xi XOR Yi)。输出Pi此处可以被称为对应于位位置i的“传播”值。以类似的方式,第一XOR门232可以接收位Xi+1和Yi+1,并可以提供对应于值(Χi+1XORYi+1)的传播值Pi+1。进一步,第三XOR门236可以接收位Xi-1和Yi-1,并可以提供对应于值(Χi-1XOR Yi-1)的传播值Pi-1。
在一个或多个实施例中,LCA逻辑130可以实现上文所描述的掩码位(mb)公式。如图所示,在某些实施例中,LCA逻辑130包括异或非(XNOR)门242、第四XOR门244、AND门246以及OR门248。如图2所示,XNOR门242可以接收位Xi和Xi-1作为输入。第四XOR门244可以接收XNOR门242的输出和传播值Pi+1作为输入。AND门246可以接收第四XOR门244的输出和传播值Pi-1的逆作为输入。OR门248可以接收AND门246的输出和传播值Pi作为输入。
在某些实施例中,OR门248的输出250可以是指出输出尾数(即,尾数X和Y的总和)中的当前位位置i是否是引导1或0的位。具体而言,在某些实施例中,当位位置i是引导1或0时,输出250可以是1位,而当位位置i是最高有效位时,可以是零位。
在一个或多个实施例中,位位置i处的输出250可以被视为掩码位,表示由n-2位组成的LCA掩码中的1位。换句话说,随着位位置i从n-1到1迭代,输出250可以形成LCA掩码(例如,图1B所示出的LCA掩码135),其中,最高零位指出输出尾数中的最高有效位。然后,可以向移位器(例如,图1B所示出的移位器170)提供此LCA掩码,用于归一化输出尾数。注意,图2的示例不是限制性的,其他实施例也是可以的。例如,在LCA逻辑130的某些实施例中,AND门246和OR门248可以被替换为单一复合或组合逻辑门(例如,与或非门)。
现在参考图3,所示是根据一个或多个实施例的用于用于归一化加法运算的序列300。在一个或多个实施例中,序列300可以是图1A所示出的加法单元125和/或LCA逻辑130的一部分。序列300可以以硬件、软件,和/或固件来实现。在固件和软件实施例中,它可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学、半导体、磁存储设备之类的非瞬态计算机可读介质上。
在步骤310中,可以接收位向量X和Y,用于浮点类加法的运算。例如,参考图1A-1B,加法单元125可以接收尾数X 152和尾数Y 154,每一个都具有位长度n,用于使用浮点加法运算相加。
在步骤360中,可以执行位向量X和Y的浮点类加法运算。例如,参考图1B,加法器160可以执行尾数X 152和尾数Y 154的浮点加法运算,以获得输出尾数165。
在步骤320中,可以进入循环(由步骤320,330,340以及350所定义),以处理被包括在位向量X和Y中的位位置i。具体而言,在某些实施例中,此循环可以处理从n-1到1的位位置i。例如,参考图1B,LCA逻辑130可以对尾数X 152和尾数Y 154的位位置i=n-1到1迭代。注意,在某些实施例中,在步骤320中进入的循环与上文所描述的步骤360并行地发生。
在步骤330中,可以获得传播值Pi+1,Pi,以及Pi-1。例如,参考图2,LCA逻辑130可以从被包括在加法器160中的第一XOR门232获得传播值Pi+1。在某些实施例中,传播值Pi+1可以对应于值(Xi+1XOR Yi+1)。进一步,LCA逻辑130可以从被包括在加法器160中的第二XOR门234获得传播值Pi。传播值Pi可以对应于值(Xi XOR Yi)。另外,LCA逻辑130还可以从第三XOR门236获得传播值Pi-1。在某些实施例中,传播值Pi-1可以对应于值(Xi-1 XORYi-1)。
在步骤340中,可以获得位值Xi和Xi-1。例如,参考图2,LCA逻辑130可以获得位向量X的位值Xi和Xi-1。在某些实施例中,可以将位值Xi和Xi-1作为输入提供到被包括在LCA逻辑130中的XNOR门242。
在步骤350中,可以使用传播值Pi+1,Pi,以及Pi-1,以及位值Xi和Xi-1,生成对应于位位置i的掩码位。在某些实施例中,这些值可以被用作掩码位公式的输入。例如,如上文参考图2所描述的,LCA逻辑130可以基于掩码位公式(上文导出的),在位位置i,生成掩码位:
mb[i]=P[i]OR!P[i-1]AND(P[i+1]XOR(X[i]XNOR X[i-1])).
在步骤350之后,对当前位位置i的处理完成,序列300返回到步骤320,以开始处理下一位位置(即,从n-1到1的位位置i的下一迭代)。一旦在步骤320中已经处理完所有位位置(即,当i=1时),序列300在步骤370中继续。注意,在某些实施例中,通过此循环的迭代在步骤350中所生成的掩码位可以形成LCA掩码135(在图1B中所示出的)。
在步骤370中,LCA掩码(即,在i=n-1到1的迭代过程中在步骤350中所生成的掩码位)可以被用来归一化类加法的浮点运算的输出(即,步骤360的结果)。例如,参考图1B,移位器170可以基于第一“1”位(指出MSB的位置)左边的(即,在比第一“1”位更高的位位置)“0”位的数量,确定移位数量。然后,移位器170可以将输出尾数165向左移位该移位数量,以获得归一化的输出175。
在步骤380中,可以舍入归一化的输出。例如,参考图1B,舍入器180可以舍入归一化的输出175,以获得舍入的输出185。在步骤380之后,序列300结束。
注意,如图1A-1B、2以及3所示的示例是为了说明而提供的,不旨在限制任何实施例。例如,尽管为了清楚起见可以以简化形式示出各实施例,但是,各实施例可以包括任何数量和/或布局的处理器、核,和/或额外的组件(例如,总线、存储介质、连接器、电源组件、缓冲区、接口等等)。具体而言,可以构想,一些实施例可以包括除所示出的那些之外的任意数量的组件,在某些实现中,也可以发生所示出的组件的不同的布局。进一步,可以构想,图1A-1B、2以及3所示出的示例中的细节可被用在一个或多个实施例中的任何地方。
现在参照图4,其中示出了根据本发明一实施例的处理器的框图。如图4所示,处理器400可以是多核处理器,包括具有核域的多个核410a-410n的第一管芯405。各种核410a-410n都可以通过互连415而耦合到包括各种组件的系统代理或非核域420。如所见那样,非核域420可包括共享的高速缓存存储器430,它可以是最末级高速缓存。另外,非核部分可以包括集成存储器控制器440和各个接口450。
虽然在图4中为便于说明未示出,但是,在某些实施例中,核410a-410n中的每一个都可以包括图1A所示出的LCA逻辑130。可另选地,在某些实施例中,LCA逻辑130的某些或全部可以被包括在非核域420中,如此,可以跨核410a-410n共享。
进一步参见图4,处理器400可经由例如存储器总线与系统存储器460通信。另外,通过接口450可对诸如外围设备、海量存储器等多种芯片外组件作出连接。虽然在图4的实施例中示出具有该特定实现,但本发明的范围不限于此方面。
现在参照图5,其中示出了根据本发明另一实施例的多域处理器的框图。如图5的实施例所示,处理器500包括多个域。具体地说,核域510可包括多个核510a–510n,图形域520可包括一个或多个图形引擎,并且可进一步存在系统代理域550。虽然在图5中为便于说明未示出,但是,在某些实施例中,核510a-510n中的每一个都可以包括参考1A所描述的LCA逻辑130。注意,尽管仅示出了三个域,然而要理解本发明的范围不限于这个方面并且其它实施例中可存在附加的域。例如,可存在多核域,其每一个包括至少一个核。
一般地说,除了各执行单元和附加的处理元件外,每个核510可进一步包括低级高速缓存。进而,各核可彼此耦合并耦合至由末级高速缓存(LLC)540a–540n的多个单元形成的共享高速缓存存储器。在各实施例中,LLC 540可在核和图形引擎以及多种媒体处理电路之中共享。可以看出,环形互连530因此将各个核耦合在一起,并且提供各个核、图形域520和系统代理电路系统550之间的互连。在图5的实施例中,系统代理域550可以包括显示控制器552,其可以提供对相关联的显示器的控制和接口。进一步可以看出,系统代理域550也可以包括电源控制单元555以向CPU和非CPU域分配电能。
如图5中进一步所见的,处理器500可进一步包括集成的存储器控制器(IMC)570,它可向例如动态随机存取存储器(DRAM)之类的系统存储器提供接口。可存在多个接口580a–580n以允许处理器和其它电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(DMI)接口以及一个或多个高速外设组件互连(PCI ExpressTM(PCIeTM))接口。更进一步,为在诸如额外的处理器或其他电路之类的其他代理之间提供通信,也可以提供符合快速路径互连(QPI)协议的一个或多个接口。进一步可以看出,外围控制器中枢(PCH)590也可以在处理器内存在,在某些实施例中,可以在单独的管芯上实现。尽管在图5的实施例以这样高级别地表示,然而要理解本发明的范围不限于此方面。
参考图6,示出了包括多个核的处理器的实施例。处理器1100包括任何处理器或处理器件,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协同处理器、片上系统(SOC)、或用于执行代码的其它器件。在一个实施例中,处理器1100包括至少两个核——核1101和1102,它们可包括非对称核或对称核(所示实施例)。然而,处理器1100可包括可以是对称的或非对称的任何数量的处理元件。虽然在图6中为便于说明未示出,但是,在某些实施例中,核1101和1102中的每一个都可以包括上文参考图1A所描述的LCA逻辑130。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核、和/或能保持处理器的诸如执行状态或架构状态之类的状态的任何其它元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其它代码之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其可能包括诸如核或硬件线程之类的任意数量的其他处理元件。
核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少某些专用执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。可以看出,当某些资源是共享的而其它资源是架构状态专用时,硬件线程与核的术语之间的界线交叠。核和硬件线程常常被操作系统视为单个逻辑处理器,其中,操作系统能够各个地在每一个逻辑处理器上调度操作。
如图6所示的物理处理器1100包括两个核——核1101和1102。在此,核1101和1102被视为对称核,即这些核具有相同的配置、功能单元和/或逻辑。在另一个实施例中,核1101包括无序处理器核,而核1102包括有序处理器核。然而,核1101和1102可从任何类型的核中单独地选择,诸如原生核、受软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行转换ISA的核、协同设计的核或其它已知核。不过,为进一步讨论,以下将进一步详细描述在核1101中示出的功能单元,因为核1102中的单元以类似方式操作。
如所示出的,核1101包括两个硬件线程1101a和1101b,它们可被称为硬件线程槽1101a和1101b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器1100视为四个独立的处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与体系结构状态寄存器1101a相关联,第二线程与体系结构状态寄存器1101b相关联,第三线程可与体系结构状态寄存器1102a相关联,并且第四线程可与体系结构状态寄存器1102b相关联。在此,架构状态寄存器(1101a、101b、1102a和102b)中的每一个可被称为处理元件、线程槽或线程单元,如上所述。
如上所述,架构状态寄存器1101a被复制在架构状态寄存器1101b中,因此能够为逻辑处理器1101a和逻辑处理器1101b存储各个架构状态/上下文。在核1101中,也可复制用于线程1101a和1101b的其它较小资源,诸如指令指针以及分配器和重命名块1130中的重命名逻辑。诸如重排序器/引退单元1135中的重排序缓冲器、ILTB 1120、加载/存储缓冲器、以及队列之类的一些资源可通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据高速缓存和数据TLB 1115、执行单元1140、以及无序单元1135的部分之类的其它资源潜在地被完全共享。
处理器1100通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由处理元件专用/专用于处理元件。在图6中,示出了具有处理器的说明性的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任一个,并包括未描绘出的任何其它已知的功能单元、逻辑或固件。如图所示,核1101包括简化的、代表性的无序(OOO)处理器核。但是,在不同实施例中可利用有序处理器。OOO核包括用于预测要执行/采用的分支的分支目标缓冲器1120和用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)1120。
核1101进一步包括耦合至取出单元1120的解码模块1125,用于解码取出的元素。在一个实施例中,取出逻辑包括分别与线程槽1101a、1101b相关联的各个序列发生器。通常,核1101与第一ISA相关联,该第一ISA定义/指定能在处理器1100上执行的指令。是第一ISA的一部分的机器代码指令常常包括引用/指定要被执行的指令或操作的指令的一部分(被称为操作码)。解码逻辑1125包括由这些指令的操作码来识别这些指令并在流水线上传递所解码的指令以进行如第一ISA所定义的处理的电路。作为解码器1125识别的结果,架构或核1101采取特定的、预定的动作以执行与适当指令相关联的任务(例如,图3所示出的动作中的一个或多个)。重要的是应注意,本申请中描述的任务、块、操作和方法中的任一个可响应于单个或多个指令来执行;它们中的一些可以是新的或旧的指令。
在一个示例中,分配器和重命名器块1130包括用于预留资源的分配器,诸如用于存储指令处理结果的寄存器组。然而,线程1101a和1101b可能能够无序地执行,在此情况下,分配器和重命名器块1130也预留其它资源,诸如用于跟踪指令结果的重排序缓冲器。单元1130还可包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器1100内部的其它寄存器。重排序/引退单元1135包括诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,以支持无序执行的指令的无序执行和稍后的有序引退。
在一个实施例中,调度器和执行单元块1140包括调度器单元,用于在执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器组,用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其它已知的执行单元。
较低级的数据高速缓存和数据转换缓冲器(D-TLB)1150耦合至执行单元1140。数据高速缓存用于存储最近使用/操作的元素(诸如数据操作数),这些元素在存储器一致性状态下潜在地被保持。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。
在此,核1101和1102共享对较高级或进一步远离的高速缓存1110的访问,较高级或进一步远离的高速缓存用于高速缓存最近取出的元素。注意,较高级或进一步指的是高速缓存级增加或进一步远离执行单元。在一个实施例中,较高级的高速缓存1110是末级数据高速缓存——处理器1100上的存储器层次中的最后一级高速缓存,诸如二级或三级数据高速缓存。然而,较高级高速缓存1110不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存——一种类型的指令高速缓存——可耦合在解码器1125之后,用于存储最近解码的跟踪。
在所描绘的配置中,根据本发明的一个实施例,处理器1100还包括总线接口模块1105和可以执行功率共享控制的功率控制器1160。历史上,控制器1170被包括在处理器1100外部的计算系统中。在该场景中,总线接口1105与处理器1100外部的设备通信,处理器100外部的设备诸如系统存储器1175、芯片组(通常包括存储器控制器中枢以连接到存储器1175以及I/O控制器中枢以连接到外围设备)、存储器控制器中枢、北桥、或其它集成电路。并且在该场景中,总线1105可包括任何已知的互连,诸如多点总线、点对点互连、串行互连、并行总线、一致性(例如高速缓存一致性)总线、分层协议架构、差分总线以及GTL总线。
存储器1175可专用于处理器1100或与系统中的其它器件共享。存储器1175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)以及其它已知的存储设备。注意,器件1180可包括耦合到存储器控制器中枢的图形加速器、处理器或卡,耦合到I/O控制器中枢的数据存储,无线收发器,闪存器件,音频控制器,网络控制器,或其它已知器件。
然而,注意,在所描绘的实施例中,控制器1170被示为处理器1100的一部分。最近,随着更多的逻辑和器件被集成在单个管芯上(如SOC),这些器件中的每一个可被合并在处理器1100上。例如,在一个实施例中,存储器控制器中枢1170与处理器1100处于同一封装和/或管芯上。在此,核的一部分(核上部分,on-core portion)包括与诸如存储器1175或图形器件1180之类的其它器件进行接口的一个或多个控制器1170。包括用于与此类器件进行接口的控制器和互连的该配置通常被称为核上(或非核(un-core)配置)。作为示例,总线接口1105包括环形互连,环形互连具有用于与存储器1175进行接口的存储器控制器以及用于与图形处理器1180进行接口的图形控制器。然而,在SOC环境中,诸如网络接口、协同处理器、存储器1175、图形处理器1180以及任何其它已知计算机器件/接口之类的甚至更多的器件可被集成到单个管芯或集成电路上,以提供具有高功能性和低功耗的小外形规格。
各实施例可以以许多不同的系统类型来实现。现在参照图7,其中示出了根据本发明一实施例的系统的框图。如图7所示,多处理器系统600是点对点互连系统,并包括通过点对点互连650而耦合的第一处理器670和第二处理器680。如图7所示,处理器670和680中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核674a和674b以及处理器核684a和684b),虽然潜在地更多核可以存在于处理器中。这些处理器中的每一个都可包括上文参考图1A所描述的LCA逻辑130的任何部分。
仍参考图7,第一处理器670还包括存储器控制器中枢(MCH)672和点对点(P-P)接口676和678。类似地,第二处理器680包括MCH 682和P-P接口686和688。如图7所示,MCH 672和682将处理器耦合到相应的存储器,即,存储器632和存储器634,它们可以是本地连接到相应的处理器的系统存储器(例如,DRAM)的一部分。第一处理器670和第二处理器680可分别经由P-P互连652和654耦合至芯片组690。如图7中所示,芯片组690包括P-P接口694和698。
此外,芯片组690包括用于通过P-P互连639将芯片组690与高性能图形引擎638进行耦合的接口692。芯片组690又可以通过接口696耦合到第一总线616。如图7所示,各种输入/输出(I/O)设备614以及总线桥接器618可以耦合到第一总线616,总线桥接器618将第一总线616耦合到第二总线620。在一个实施例中,各种设备可耦合到第二总线620,包括例如键盘/鼠标622、通信设备626以及数据存储单元628,如可包括代码630的盘驱动器或其他大容量存储设备。进一步地,音频I/O 624可以耦合到第二总线620。各实施例可以被合并到其他类型的系统中,包括诸如智能蜂窝电话、平板计算机、上网本、UltrabookTM等等之类的移动设备。
现在参照图8,图8示出了根据本发明一个实施例的处理器核800的框图。如图所示,处理器核800可以是多级流水线类型的无序处理器。在图8中利用相对简化的视图示出处理器核800,以示出与根据本发明的实施例的FMA单元结合使用的多个特征。
如图8所示,核800包括前端单元810,前端单元810可用于取得将被执行的指令并将这些指令准备好以供以后在处理器中使用。例如,前端单元810可包括获取单元801、指令高速缓存803和指令解码器805。在某些实现中,前端单元810可进一步包括跟踪高速缓存、微码存储以及微操作存储。获取单元801可(例如,从存储器或指令高速缓存803)获取宏指令并将它们馈送至指令解码器805以将它们解码为原语,诸如,用于通过处理器执行的微操作。
无序(OOO)引擎815耦合在前端单元810与执行单元815之间,无序引擎815可用于接收微指令并将它们准备好以供执行。更具体地,OOO引擎815可包括多个缓冲器,多个缓冲器用于重排序微指令流并分配执行所需的多个资源,以及提供对多个寄存器组(例如,寄存器组830和扩展寄存器组835)中的存储位置上的逻辑寄存器的重命名。寄存器组830可包括用于整数和浮点操作的单独的寄存器组。扩展寄存器组835可提供向量尺寸单元的存储,例如,每寄存器256或512位。
在执行单元820中可存在多种资源,包括例如多种整数、浮点和单指令多数据(SIMD)逻辑单元等其它专门硬件。例如,执行单元820可包括一个或多个算术逻辑单元(ALU)822。在各实施例中,ALU 822中的一个或多个可包括上文参考图1A所描述的LCA逻辑130。
当在执行单元820内对数据执行操作时,向引退逻辑,即,重新排序缓冲器(ROB)840,提供结果。更具体地,ROB 840可包括多种阵列和逻辑以接收与被执行的指令相关联的信息。然后,通过ROB 840检查该信息以确定指令是否可以有效引退并且结果数据是否被提交至处理器的架构状态,或阻止指令的正常引退的一个或多个异常是否发生。当然,ROB 840可处理与引退相关联的其他操作。
如图8所示,ROB 840耦合至高速缓存850,在一个实施例中,高速缓存850可以是低级高速缓存(例如,L1高速缓存),也可以包括转换后援缓冲器(TLB)852,尽管本发明的范围不限于此。而且,执行单元820可直接耦合至高速缓存850。例如,从高速缓存850,可发生与更高级高速缓存、系统存储器等等的数据通信。注意,虽然图8的处理器的实现方式涉及了诸如所谓的x86指令集架构(ISA)之类的无序机,但本发明的范围在此方面不受限制。即,其他实施例可在以下处理器中实现:顺序处理器;诸如基于ARM的处理器之类的精简指令集计算(RISC)处理器;或具有另一类型ISA的处理器,该另一类型的ISA可经由仿真引擎和相关联的逻辑电路来仿真不同ISA的指令和操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分获取和解码以及此后诸如用超线程化技术来同步多线程化)。
此处所描述的任何处理器都可以是通用功能处理器,诸如酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这些均可以从加利福尼亚圣克拉拉市的Intel公司获得。或者,处理器可以来自另一个公司,诸如来自ARM控股公司、MIPS、等等。处理器可以是专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器可以是一个或多个基板的一部分,并且/或者可使用多种工艺技术(诸如,BiCMOS、CMOS或NMOS)中的任意技术被实现在一个或多个基板上。
可以构想,此处所描述的处理器不仅限于任何系统或设备。本领域中已知的对膝上型计算机、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其他执行逻辑的各种系统和电子设备通常都是合适的。
实施例可以代码的形式实现,而且可存储在其上存储有可用于对系统编程以执行这些指令的非临时存储介质上。存储介质可包括但不限于:包括软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何类型的磁盘;诸如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦写可编程只读存储器(EPROM)、闪存、电可擦写可编程只读存储器(EEPROM)之类的半导体器件;磁卡或光卡,或适合于存储电子指令的任何其他类型的介质。
以下句子和/或示例涉及进一步的实施例。一个示例实施例可以是包括至少一个浮点单元的处理器。该至少一个浮点单元可包括加法器、引导变化预测器(LCA)逻辑,以及移位器。加法器可以将第一操作数X与第二操作数Y相加,以获得具有位长度n的输出操作数。LCA逻辑可以耦合到加法器,并可以:对于所述输出操作数的从n-1到1的每一个位位置i,获得所述第一操作数X的一组位值,并基于所述第一操作数X和所述第二操作数Y,获得一组传播值;以及,基于所述传播值组以及所述位值组,生成LCA掩码。移位器可以耦合到所述加法器以及所述LCA逻辑,并可以基于所述LCA掩码,归一化所述输出操作数。所述LCA逻辑可包括异或非(XNOR)门、异-或(XOR)门、与门,以及或门,其中,所述XOR门耦合到所述加法器和所述XNOR门的输出,其中,所述AND门耦合到所述加法器和所述XOR门的输出,其中,所述OR门耦合到所述加法器和所述AND门的输出。所述位值组可包括所述第一操作数X的第一位值Xi和第二位值Xi-1,其中,所述XNOR门可以将所述第一位值Xi和所述第二位值Xi-1,作为输入。所述传播值组可包括对应于Xi XOR Yi的第一传播值Pi,对应于所述值Xi+1XOR Yi+1的第二传播值pi+1,以及对应于所述值Xi-1XOR Yi-1的第三传播值Pi-1。所述XOR门可以从所述加法器接收所述第二传播值Pi+1作为输入,其中,所述AND门将从所述加法器接收所述第三传播值Pi-1的逆作为输入,其中,所述OR门将从所述加法器接收所述第一传播值Pi作为输入。所述LCA逻辑可以与所述加法器并行地操作,其中,所述移位器将在第一时间点接收所述LCA掩码,其中,所述移位器将在第二时间点接收所述输出操作数,其中,所述第一时间点等于或早于所述第二时间点。所述LCA掩码可包括,对于所述输出操作数中的每一个引导1或0,第一值位。所述LCA掩码也可以包括对应于所述输出操作数的最高有效位(MSB)的位位置处的第二值位。所述移位器可以基于所述输出操作数的所述MSB的所述位位置,确定移位长度,其中,所述移位器将通过将所述输出操作数移位所述移位长度,获得归一化的输出操作数。至少一个浮点单元也可以包括舍入由移位器获得的归一化的输出操作数的舍入器。
另一个示例实施例可以是包括耦合到存储器的一个或多个硬件处理器的系统。一个或多个硬件处理器中的每一个都可包括至少一个加法单元。该至少一个加法单元可包括加法器和引导变化预测器(LCA)逻辑。所述加法器可以将第一尾数X与第二尾数Y相加,以获得具有位长度n的输出尾数。LCA逻辑,对于从n-1到1的每一个位位置i,可以:基于所述第一尾数X以及所述第二尾数Y,获得第一传播值Pi,第二传播值Pi+1,以及第三传播值Pi-1;获得所述第一尾数X的第一位值Xi和第二位值Xi-1;以及,基于所述第一传播值Pi,所述第二传播值Pi+1,所述第三传播值Pi-1,所述第一位值Xi,以及所述第二位值Xi-1,生成掩码位。至少一个加法单元可以是熔合的乘法-加法(FMA)执行单元。至少一个加法单元也可以包括移位器,用于:基于具有零值的最高掩码位,确定移位长度;以及,将所述输出尾数向左移位所述移位长度,以获得归一化的输出尾数。至少一个加法单元也可以包括舍入归一化的输出尾数的舍入器。所述LCA逻辑可包括接收所述第一位值Xi,以及所述第二位值Xi-1作为输入的异或非(XNOR)门。
再一个示例实施例可以是方法,包括:由加法器电路,将第一位向量X和第二位向量Y相加,以获得具有位长度n的输出位向量。该方法还包括,对于从n-1到1的每一个位位置i:由引导变化预测器(LCA)逻辑,从所述加法器获得多个传播值P;由所述LCA逻辑,获得所述第一位向量X的第一位值Xi和第二位值Xi-1;以及,基于所述多个传播值Pi所述第一位值Xi,以及所述第二位值Xi-1,生成掩码位。该方法还包括使用为输出位向量的从n-1到1的每一个位位置i生成的所述掩码位中的至少某些,确定移位长度。该方法还可以包括将所述输出位向量向左移位所述移位长度,以获得归一化的输出位向量。该方法还可以包括舍入归一化的输出位向量。为从n-1到1的每一个位位置i生成掩码位可包括:为每一个引导1或0,生成第一值位,以及,为最高有效位(MSB)生成第二值位。该方法还可以包括向被包括在所述LCA逻辑中的异或非(XNOR)门,提供所述第一位值Xi,以及所述第二位值Xi-1,作为输入。该方法还可以包括,由所述LCA逻辑,基于从n-1到1的每一个位位置i的所述掩码位,生成LCA掩码。将所述第一位向量X与所述第二位向量Y相加可以与生成所述LCA掩码并行地执行。生成所述LCA掩码可以在完成所述第一位向量X和所述第二位向量Y的所述相加完成之前完成。
说明书中对“一个实施例”、“实施例”的引用意味着结合该实施例所描述的特定特征、结构或特性被包括在本发明内涵盖的至少一个实现中。如此,短语“一个实施例”或“在一个实施例中”的出现不一定是指同一个实施例。此外,特定特征、结构或特性可按照与所说明的特定实施例不同的其他适当形式来创立,而且所有此类形式可涵盖在本申请的权利要求中。
尽管是参考数量有限的实施例来描述本发明的,但是,那些精通本技术的人将从其中理解很多修改和变体。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修改和变化。
Claims (23)
1.一种处理器,包括:
至少一个浮点单元,包括:
加法器,所述加法器将第一操作数X与第二操作数Y相加,以获得具有位长度n的输出操作数;
引导变化预测器(LCA)逻辑,耦合到所述加法器,用于:
对于所述输出操作数的从n-1到1的每一个位位置i,获得所述第一操作数X的一组位值,并基于所述第一操作数X和所述第二操作数Y,获得一组传播值;以及
基于所述传播值组以及所述位值组,生成LCA掩码;以及
移位器,其耦合到所述加法器以及所述LCA逻辑,基于所述LCA掩码,归一化所述输出操作数。
2.如权利要求1所述的处理器,其特征在于,所述LCA逻辑包括异或非(XNOR)门、异-或(XOR)门、与门以及或门,其中所述XOR门耦合到所述加法器和所述XNOR门的输出,其中所述AND门耦合到所述加法器和所述XOR门的输出,其中所述OR门耦合到所述加法器和所述AND门的输出。
3.如权利要求2所述的处理器,其特征在于,所述位值组包括所述第一操作数X的第一位值Xi和第二位值Xi-1,其中所述XNOR门将所述第一位值Xi和所述第二位值Xi-1,作为输入。
4.如权利要求1所述的处理器,其特征在于,所述传播值组包括对应于Xi XOR Yi的第一传播值Pi,对应于值Xi+1XOR Yi+1的第二传播值pi+1,以及对应于值Xi-1XOR Yi-1的第三传播值Pi-1。
5.如权利要求4所述的处理器,其特征在于,所述XOR门从所述加法器接收所述第二传播值pi+1作为输入,其中所述AND门从所述加法器接收所述第三传播值Pi-1的逆作为输入,其中所述OR门从所述加法器接收所述第一传播值Pi作为输入。
6.如权利要求1所述的处理器,其特征在于,所述LCA逻辑与所述加法器并行地操作,其中所述移位器在第一时间点接收所述LCA掩码,其中所述移位器在第二时间点接收所述输出操作数,其中所述第一时间点等于或早于所述第二时间点。
7.如权利要求1所述的处理器,其特征在于,所述LCA掩码包括,对于所述输出操作数中的每一个引导1或0,第一值位。
8.如权利要求7所述的处理器,其特征在于,所述LCA掩码进一步包括对应于所述输出操作数的最高有效位(MSB)的位位置处的第二值位。
9.如权利要求8所述的处理器,其特征在于,所述移位器基于所述输出操作数的所述MSB的所述位位置,确定移位长度,其中所述移位器通过将所述输出操作数移位所述移位长度,获得归一化的输出操作数。
10.如权利要求9所述的处理器,其特征在于,所述至少一个浮点单元进一步包括将由所述移位器获得的所述归一化的输出操作数舍入的舍入器。
11.一种系统,包括:
一个或多个硬件处理器,每一个都包括:
至少一个加法单元,包括:
加法器,所述加法器将第一尾数X与第二尾数Y相加,以获得具有位长度n的输出尾数;
引导变化预测器(LCA)逻辑,对于从n-1到1的每一个位位置i,用于:
基于所述第一尾数X以及所述第二尾数Y,获得第一传播值Pi,第二传播值Pi+1,以及第三传播值Pi-1;
获得所述第一尾数X的第一位值Xi和第二位值Xi-1;以及
基于所述第一传播值Pi,所述第二传播值Pi+1,所述第三传播值Pi-1,所述第一位值Xi,以及所述第二位值Xi-1,生成掩码位;以及
耦合到所述一个或多个硬件处理器的存储器。
12.如权利要求11所述的系统,其特征在于,所述至少一个加法单元是熔合乘法-加法(FMA)执行单元。
13.如权利要求11所述的系统,其特征在于,所述至少一个加法单元还包括用于执行下列各项的移位器:
基于具有零值的最高掩码位,确定移位长度;以及
将所述输出尾数向左移位所述移位长度,以获得归一化的输出尾数。
14.如权利要求13所述的系统,其特征在于,所述至少一个加法单元还包括舍入所述归一化的输出尾数的舍入器。
15.如权利要求11所述的系统,其特征在于,所述LCA逻辑包括接收所述第一位值Xi以及所述第二位值Xi-1作为输入的异或非(XNOR)门。
16.一种方法,包括:
由加法器电路,将第一位向量X和第二位向量Y相加,以获得具有位长度n的输出位向量;
对于所述输出位向量的从n-1到1的每一个位位置i:
由引导变化预测器(LCA)逻辑,从所述加法器获得多个传播值P;
由所述LCA逻辑,获得所述第一位向量X的第一位值Xi和第二位值Xi-1;以及
基于所述多个传播值P、所述第一位值Xi以及所述第二位值Xi-1,生成掩码位;以及
使用为从n-1到1的每一个位位置i生成的所述掩码位中的至少某些,确定移位长度。
17.如权利要求16所述的方法,进一步包括将所述输出位向量向左移位所述移位长度,以获得归一化的输出位向量。
18.如权利要求17所述的方法,进一步包括舍入所述归一化的输出位向量。
19.如权利要求16所述的方法,其特征在于,为从n-1到1的每一个位位置i生成所述掩码位包括:
为每一个引导1或0,生成第一值位;以及
为最高有效位(MSB)生成第二值位。
20.如权利要求16所述的方法,进一步包括向被包括在所述LCA逻辑中的异或非(XNOR)门,提供所述第一位值Xi以及所述第二位值Xi-1,作为输入。
21.如权利要求16所述的方法,进一步包括,由所述LCA逻辑,基于从n-1到1的每一个位位置i的所述掩码位,生成LCA掩码。
22.如权利要求21所述的方法,其特征在于,将所述第一位向量X与所述第二位向量Y相加是与生成所述LCA掩码并行地执行的。
23.如权利要求22所述的方法,其特征在于,生成所述LCA掩码在完成所述第一位向量X和所述第二位向量Y的所述相加完成之前完成。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/729,421 US9274752B2 (en) | 2012-12-28 | 2012-12-28 | Leading change anticipator logic |
US13/729,421 | 2012-12-28 | ||
PCT/US2013/048084 WO2014105187A1 (en) | 2012-12-28 | 2013-06-27 | Leading change anticipator logic |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104823153A true CN104823153A (zh) | 2015-08-05 |
CN104823153B CN104823153B (zh) | 2018-02-13 |
Family
ID=51018474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380061966.XA Expired - Fee Related CN104823153B (zh) | 2012-12-28 | 2013-06-27 | 用于执行指令的处理器、归一化加法运算的方法、通信设备、机器可读介质、用于处理指令的设备和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9274752B2 (zh) |
CN (1) | CN104823153B (zh) |
WO (1) | WO2014105187A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108292219A (zh) * | 2015-12-23 | 2018-07-17 | 英特尔公司 | 浮点(fp)加法低指令功能单元 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2522902B (en) * | 2014-02-10 | 2021-03-03 | Advanced Risc Mach Ltd | Comparing a runlength of bits with a variable number |
CN117785108A (zh) * | 2024-02-27 | 2024-03-29 | 芯来智融半导体科技(上海)有限公司 | 一种前导数处理方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4926369A (en) * | 1988-10-07 | 1990-05-15 | International Business Machines Corporation | Leading 0/1 anticipator (LZA) |
US5493520A (en) * | 1994-04-15 | 1996-02-20 | International Business Machines Corporation | Two state leading zero/one anticipator (LZA) |
US6499044B1 (en) * | 1999-11-12 | 2002-12-24 | Jeffrey S. Brooks | Leading zero/one anticipator for floating point |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5751621A (en) * | 1994-11-17 | 1998-05-12 | Hitachi, Ltd. | Multiply-add unit and data processing apparatus using it |
KR100291383B1 (ko) * | 1996-11-18 | 2001-09-17 | 윤종용 | 디지털신호처리를위한명령을지원하는모듈계산장치및방법 |
US6405232B1 (en) | 1999-08-19 | 2002-06-11 | National Semiconductor Corporation | Leading bit prediction with in-parallel correction |
US6820106B1 (en) | 2000-06-27 | 2004-11-16 | Intel Corporation | Method and apparatus for improving the performance of a floating point multiplier accumulator |
US6922714B2 (en) * | 2002-05-09 | 2005-07-26 | International Business Machines Corporation | Floating point unit power reduction scheme |
JP4232838B2 (ja) | 2007-03-29 | 2009-03-04 | 日本電気株式会社 | 再構成可能なsimd型プロセッサ |
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 |
-
2012
- 2012-12-28 US US13/729,421 patent/US9274752B2/en not_active Expired - Fee Related
-
2013
- 2013-06-27 CN CN201380061966.XA patent/CN104823153B/zh not_active Expired - Fee Related
- 2013-06-27 WO PCT/US2013/048084 patent/WO2014105187A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4926369A (en) * | 1988-10-07 | 1990-05-15 | International Business Machines Corporation | Leading 0/1 anticipator (LZA) |
US5493520A (en) * | 1994-04-15 | 1996-02-20 | International Business Machines Corporation | Two state leading zero/one anticipator (LZA) |
US6499044B1 (en) * | 1999-11-12 | 2002-12-24 | Jeffrey S. Brooks | Leading zero/one anticipator for floating point |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108292219A (zh) * | 2015-12-23 | 2018-07-17 | 英特尔公司 | 浮点(fp)加法低指令功能单元 |
Also Published As
Publication number | Publication date |
---|---|
CN104823153B (zh) | 2018-02-13 |
US9274752B2 (en) | 2016-03-01 |
US20140188967A1 (en) | 2014-07-03 |
WO2014105187A1 (en) | 2014-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11281965B2 (en) | Reconfigurable processing unit | |
CN108475193B (zh) | 用于字节排序指令和用于四位组排序的处理器、方法和系统 | |
US20190102671A1 (en) | Inner product convolutional neural network accelerator | |
EP3719639B1 (en) | Systems and methods to perform floating-point addition with selected rounding | |
TWI729019B (zh) | 處理裝置、系統單晶片、非暫時性機器可讀儲存媒體及用於排序之方法 | |
US9542154B2 (en) | Fused multiply add operations using bit masks | |
US10755242B2 (en) | Bitcoin mining hardware accelerator with optimized message digest and message scheduler datapath | |
CN104951296A (zh) | 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块 | |
EP3394737B1 (en) | Processing devices to perform a key value lookup instruction | |
JP2017107579A (ja) | リードマスク及びライトマスクにより制御されるベクトル移動命令 | |
EP3394729B1 (en) | Fused multiply add (fma) low functional unit | |
CN104756090A (zh) | 提供扩展的缓存替换状态信息 | |
US20180225093A1 (en) | Implementing logarithmic and antilogarithmic operations based on piecewise linear approximation | |
KR20210028075A (ko) | 범위-특정 계수 세트를 사용하여 단항 함수를 수행하는 시스템 | |
CN104823153A (zh) | 引导变化预测器逻辑 | |
CN108475242B (zh) | 冲突掩码生成 | |
TW201729075A (zh) | 壓縮資料解碼器 | |
CN105320494A (zh) | 带有一致的和非一致的子系统的存储器排序 | |
US20170185413A1 (en) | Processing devices to perform a conjugate permute instruction | |
EP3394730B1 (en) | Floating point (fp) add low instructions functional unit | |
US20220365751A1 (en) | Compressed wallace trees in fma circuits | |
CN115857872A (zh) | 针对每个矩阵维度的多个片的矩阵操作 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180213 Termination date: 20210627 |