降低的浮点精度的算术电路的制作方法

文档序号:17582886发布日期:2019-05-03 21:04阅读:263来源:国知局
降低的浮点精度的算术电路的制作方法

此专利文档要求2016年9月21日提交的共同待审的共同转让的美国专利申请no.15/272,231的权益,该申请的公开由此通过引用全部结合于本文中。



背景技术:

本实施例涉及集成电路,并且更具体地说,涉及使用具有更高精度浮点算术电路的专用处理块来执行降低的精度的浮点算术运算。

随着应用在复杂性方面增加,在集成电路中包含专用处理块已经变得更普遍。这种专用处理块可以部分或全部被硬连线以执行一个或更多个特定任务,诸如逻辑或数学运算。专用处理块还可以包含一个或更多个专用结构,诸如可配置存储器元件阵列。

通常在这种专用处理块中实现的结构的示例包括:乘法器、算术逻辑单元(alu)、桶形移位器、各种存储器元件或存储电路诸如先进先出(fifo)电路、后进先出(lifo)电路、串进并出(sipo)移位寄存器电路、并进串出(piso)移位寄存器电路、随机存取存储器(ram)电路、只读存储器(rom)电路、内容可寻址存储器(cam)电路和寄存器堆、逻辑和、逻辑与非、逻辑或、逻辑或非阵列等,或其组合。

一种特别有用类型的专用处理块(其有时也被称为数字信号处理(dsp)块)可用于处理数字信号,诸如视频信号、音频信号等。这种块时常也被称为乘法累加(mac)块,因为它们包括执行乘法运算以及乘法运算的求及和/或累加的结构。

作为stratix®和arria®系列的一部分,诸如由加利福尼亚州圣何塞的altera公司销售的可编程集成电路的集成电路包括专用处理块,其每一个包括多个乘法器。那些专用处理块中的每个专用处理块还包括加法器和寄存器,以及允许块的各种组件以不同方式被配置的可编程连接器(例如,多路复用器)。

通常,这种专用处理块中的算术运算符(加法器和乘法器)已经是定点运算符。如果需要浮点运算符,则它们将使用器件的通用可编程逻辑或者使用专用处理块内部的定点运算符与通用可编程逻辑中的附加逻辑的组合而构造在专用处理块外部。



技术实现要素:

执行第一和第二半精度浮点乘法运算的单精度浮点乘法电路可以包括第一、第二和第三算术运算符电路和压缩器电路。第一算术运算符电路可以生成第一和第二半精度浮点数的第一部分乘积,并且第二算术运算符电路可以生成第三和第四半精度浮点数的第二部分乘积。压缩器电路可基于所述第一和第二部分乘积生成进位矢量信号及和矢量信号,并且第三算术运算符电路可基于所述进位矢量信号及和矢量信号并行地生成所述第一半精度浮点乘法运算的至少第一和第二结果以及所述第二半精度浮点乘法运算的至少第三和第四结果以预期(anticipate)舍入和归一化运算。

要认识到,本文描述的实施例能以多种方式实现,诸如过程、设备、系统、装置或在处理机器上执行的方法。下面描述几个发明实施例。

在某些实施例中,上面提到的单精度浮点乘法电路可以包括:第一算术运算符电路中的第一部分乘积生成器,其基于第一和第二半精度浮点数生成第一和第二输出矢量信号;以及第二算术运算符电路中的第二部分乘积生成器,其基于第三和第四半精度浮点数生成第三和第四输出矢量信号。

如果期望的话,第一算术运算符电路可以包括:第四算术运算符电路,其执行所述第一、第二、第三和第四输出矢量信号的4:2压缩;以及在所述第四算术运算符电路周围的旁路路径,其将所述第一和第二输出矢量信号作为所述第一部分乘积从所述第一算术运算符电路递送到所述压缩器电路,并且将所述第三和第四输出矢量信号作为所述第二部分乘积从所述第二算术运算符电路递送到所述压缩器电路。

在某些实施例中,第三算术运算符电路可以包括:组合电路,其基于所述进位矢量信号及和矢量信号生成输入传播矢量信号和输入生成矢量信号。组合电路可以包括:逻辑异或门,其执行进位矢量信号及和矢量信号的逐位异或运算以生成输入传播矢量信号,其中输入传播矢量信号的最低有效位被设置为1;以及逻辑与门,其执行进位矢量信号及和矢量信号的逐位与运算以生成输入生成矢量信号。

本发明的另外特征、其性质和各种优点根据附图以及优选实施例的以下详细描述将显而易见。

附图说明

图1是按照实施例的可配置为执行单精度浮点运算或两个半精度浮点运算的说明性专用处理块的图解。

图2是按照实施例的计算用于半精度和单精度浮点乘法运算的和加零、和加一以及和加二信号的说明性算术电路的图解。

图3是按照实施例的基于来自3:2压缩器的进位信号及和信号来确定输入生成和传播信号的说明性算术运算符电路的图解。

图4a是按照实施例的计算和加零信号的说明性算术运算符电路的图解。

图4b是按照实施例的计算和加一信号的说明性算术运算符电路的图解。

图4c是按照实施例的计算和加二信号的说明性算术运算符电路的图解。

图5是按照实施例的在和加零、和加一及和加二信号之间进行选择的说明性电路的图解。

图6是按照实施例的基于来自3:2压缩器的进位信号及和信号来计算和加零、和加一及和加二信号的说明性电路的图解。

图7是按照实施例的计算和加零及和加一信号并基于用于半精度和单精度浮点乘法运算的和加一信号确定和加二信号的说明性算术电路的图解。

图8是示出按照实施例的用于操作专用处理块的说明性步骤的流程图的图解。

具体实施方式

本文提供的本实施例涉及集成电路,并且更具体地说,涉及使用具有更高精度浮点算术电路的专用处理块来执行降低的精度的浮点算术运算。

执行算术运算的专用处理块可以被优化为支持预定精度的浮点运算。例如,一些专用处理块可以被优化为非常有效地支持单精度浮点运算,但是具有对于半精度浮点运算或双精度浮点运算的差支持。

然而,功耗和功能密度在电路设计中是重要的方面,并且许多应用不要求单精度浮点算术。例如,卷积神经网络(cnn)可以与半精度浮点算术(即fp16)和单精度浮点算术电路(即fp32)的混合很好地工作。因此,可能期望专用处理块有效且高效地支持单精度浮点算术和半精度浮点算术二者。

将由本领域技术人员认识到,本示范实施例可在没有一些或所有的这些特定细节的情况下实践。在其他实例中,众所周知的操作未详细描述,以免不必要地使本实施例模糊不清。

图1中示出了可适于有效地实现定点运算以及单精度和半精度浮点运算的专用处理块100的说明性实施例。在该逻辑表示中,为了简化讨论,省略了实现细节,诸如寄存器和一些可编程路由特征,诸如可以允许具体结构的输出被路由绕过某些组件或者直接离开专用处理块的多路复用器。

在图1的逻辑表示中,“左乘法器”101是部分乘积生成器,诸如18×18部分乘积生成器,如果期望的话,其可以被用作例如两个9×18部分乘积生成器。左乘法器101可以产生两个无量纲输出矢量111、121。类似地,“右乘法器”102是部分乘积生成器,诸如18×18部分乘积生成器,其可以被用作例如18×9部分乘积生成器和27×9部分乘积生成器。右乘法器102可以产生两个无量纲输出矢量112、122。

在ieee754-1985标准下,单精度浮点数具有23位的尾数大小,不包括隐含的前导‘1’,而半精度浮点数具有10位的尾数大小,不包括隐含的前导‘1’。从而,左乘法器101和右乘法器102可各实现18x18部分乘积生成器以支持两个半精度浮点乘法运算,或者左乘法器101和右乘法器102一起可实现27x27部分乘积生成器以支持单精确浮点乘法。

输入多路复用器阶段103可以根据具体用户逻辑设计的需要在四个与六个输入113之间进行组合和对齐。

如果期望,多路复用器105、106可以根据如由用户设计所确定的正在执行的操作的类型分别对齐矢量111、121、121和122。确切地说,矢量111、112、121和122可以彼此完全偏移(例如,以执行两个单独的较小乘法,诸如两个9×9乘法)、彼此完全对齐(例如,以执行一个较大乘法,诸如一个18×18乘法)、或者彼此部分对齐(例如,以执行“矩形”乘法,诸如9×18乘法)。

4:2压缩器104可以将四个无量纲输出矢量111、112、121和122组合成两个无量纲输出矢量114和124。如果期望,则4:2压缩器104的每一个输入和输出矢量可以高达74位宽。在一些实施例中,旁路路径(未示出)可以将绕过4:2压缩器104将四个无量纲输出矢量111、112、121和122从左乘法器101和右乘法器102递送到3:2压缩器108。

专用处理块100可以从另一个专用处理块接收另一个矢量117。3:2压缩器108可以与矢量114和124一起接收矢量117,并且提供矢量118和128。多路复用器109可以在矢量114、124和矢量118、128之间进行选择,如果不使用级联输入117,允许3:2压缩器108被旁路。“与”门107可以例如当该结构正在累加器模式中使用并且累加器不得不被重置时将输入117设置为零。

将由本领域技术人员认识到,专用处理块100可以包括具有不同压缩率和架构的电路,其可以产生与4:2压缩器104后面是3:2压缩器108相同的效果。

输出矢量119和129各可以高达74位宽,并且被输入到主加法器200以提供乘法运算的结果乘积,其能是定点输出130或浮点输出131。在浮点情况下,指数可以在132处置。

当根据ieee754-1985标准将两个浮点数相乘时,输入被乘数是在十进制1.0和十进制1.999..之间的归一化数。因此,结果乘积能在十进制1.0和十进制3.999..之间,并且可以受到归一化和舍入。

为了适应归一化和舍入,可能有必要将0、1或2加到结果(其可以被称为和)的(一个或多个)最低有效位。

确切地说,归一化可以涉及零位或一位的右移(如果结果大于或等于十进制1.0且小于十进制2.0,则右移是零位;如果结果大于或等于十进制2.0且小于小数4.0,则右移是一位)。在其中不应用舍入的情况下,不管归一化是0位还是1位,都可以使用和加零(即和)。在其中应用舍入的情况下,则如果归一化是零位,则可以使用和加一,而如果归一化是一位,则可以使用和加二。

因此,按照实施例,并且如下面所更详细描述的,使用电路的不同部分同时生成那三个量(和加零、和加一及和加二),并且然后使用来自计算的另一部分的信号(例如,进位信号)选择三个量之一作为最终结果,由此消除了对在生成适当结果(即和加零、和加一或和加二)之前等待计算的另一部分的需要。

在一个实施例中,同时生成三个结果由图2中示出的电路完成。如该逻辑表示中所示,电路可以包括3:2压缩器210、212、214和216、多路复用器220、224、280和282、前缀网络240、242和246、异或门230、234、236、250、254和258、生成和加一信号的电路253和257、生成和加二信号的电路252和256以及舍入选择电路260和270。

3:2压缩器210、212、214和216可以接收由上游电路(例如,来自图1的4:2压缩器104或者经由旁路路径来自左乘法器101和右乘法器102)计算的部分乘积。作为示例,3:2压缩器210和212可以接收第一半精度浮点运算的部分乘积(例如,信号202、203、204和205),并且3:2压缩器214和216可以接收第二半精度浮点运算的部分乘积(例如,信号206、207、208和209)。作为另一示例,分别地,3:2压缩器210和212可以接收单精度浮点乘法运算的部分乘积的最低有效位(lsb),并且3:2压缩器214和216可以接收其最高有效位(msb)。在一些实施例中,当在浮点运算模式中操作图2的电路时,信号201可以为零。

如所示,3:2压缩器210、212、214和216各可生成两个信号,它们可被称为和矢量信号211、215、221和225(或简称为和信号)以及进位矢量信号213、217、223和227(或简称为进位信号)。例如,3:2压缩器210可以执行相应输入信号(即信号202和203)的逐位逻辑异或运算,以生成相应的和信号(即信号211),并且执行相应输入信号(即信号202和203)的逐位逻辑与运算,以生成相应的进位信号(即信号213)。

在一些实施例中,如果期望,3:2压缩器210、212、214和216可以选择性地将零插入到部分乘积中,例如,以将进位信号及和信号与前缀网络240、242和246的边界对齐。

例如,浮点乘法运算的舍入点可以与前缀网络(例如,前缀网络240、242和246)之间的浮点断点对齐。舍入点可以是在浮点乘法结果的lsb和舍入位、防护位和粘滞位之间的边界。如果期望,则用于单精度浮点乘法的舍入点可以在位23和24之间。从而,前缀网络240和242可以在位23和24之间具有断点。

图2的电路可以支持两个半精度浮点乘法运算。从而,第一半精度浮点乘法运算可以在位23和24之间对齐。然而,半精度乘法运算可以不映射到此位置。半精度浮点乘法运算的乘数和被乘数值是奇数,并且包括一个隐含的前导位和10个尾数位,而单精度浮点乘法运算的乘数和被乘数值是偶数,并且包括一个隐含的前导位和23个尾数位。

换句话说,单精度浮点乘法器可具有两个24位输入,其中小数范围为1.0(即隐含的‘1’后跟23个零)到1.99..99(即隐含的‘1’后跟23个1),其中结果在1.0和3.999..99之间。结果可以具有1后跟46个0到1后跟47个位(它们大多数是1)的位范围。如果结果在1.0和1.99..99之间,则23位尾数可以在46向下到24的位范围中,并且如果结果在2.0和3.99..99之间,则23位尾数可以在47向下到25的位范围中。类似地,半精度浮点乘法运算的10位尾数可以在33向下到24或34向下到35的范围中。

如果期望,第一和第二半精度浮点乘法运算可以使用非对称偏移来向单精度浮点乘法运算的舍入点对齐。如果期望,可以在第一半精度浮点乘法运算的舍入边界的任一侧上插入10个位。例如,通过将7个lsb零添加到输入bx并将6个lsb零添加到输入by,或者备选地总共13个零的任何组合,可以在图1的乘法器输入113的lsb中插入13个零。

第二半精度浮点乘法运算可以具有17个位的下半部分和20个位的上半部分。舍入边界可以在这两个部分之间。从而,可以在舍入边界的任一侧上平衡10个位。如果期望,可以将四个lsb零插入到输入ax中,并且将三个lsb零插入到输入ay中,或者七个零的任何其他组合。

多路复用器220和224可以分别接收进位信号213和223及和信号211和221,并且分别部分乘积202、203和206、207,并且在进位信号及和信号与部分乘积之间进行选择。例如,当在单精度浮点模式中操作图2的电路时,多路复用器220可以选择部分乘积202和203,由此旁路3:2压缩器210。作为另一示例,当在半精度浮点模式中操作图2的电路时,多路复用器220和224可分别选择部分乘积202、203和206、207,由此分别旁路3:2压缩器210和214。

如所示,前缀网络240和242可以分别从多路复用器220和224接收所选择的进位信号及和信号。前缀网络242和246可以分别从3:2压缩器212和216接收进位信号及和信号217、215及227、225。如果期望,则当图2的电路在半精度浮点模式中操作时,前缀网络242可以被分成两个部分,如虚线垂直线所标示的。

前缀网络240、242和246中的每个前缀网络例如可以是kogge-stone前缀网络或任何其他前缀网络,诸如brent-kung前缀网络或hancarlson前缀网络(仅列举几个),其输出相应的生成和传播信号。

例如,前缀网络240可以从多路复用器220接收所选择的和信号s_a和进位信号c_a,并且创建生成信号g_out241。类似地,前缀网络242可以从多路复用器224接收所选择的和及进位信号,并且从3:2压缩器212接收和信号215和进位信号217,并且创建传播信号243和生成信号245,并且前缀网络246可以从3:2压缩器216接收和信号225和进位信号227,并且创建传播信号247和生成信号249。

当使用前缀网络240、242和246时,相应的进位信号及和信号的逐位逻辑与运算可以创建相应的输入生成信号,并且逐位逻辑或运算可以创建相应的输入传播信号。如果期望,输入传播信号可以被计算为相应的和信号和进位信号的逻辑异或。

图3示出了基于进位信号及和信号确定输入生成和传播信号的说明性算术运算符电路。如所示,算术运算符电路可以包括逻辑异与门320、322、324、326和328,它们可以执行和信号(s1、s2、s3、s4和s5)和进位信号(c1、c2、c3、c4和c5)的逐位逻辑与运算以产生输入生成信号(g1、g2、g3、g4和g5)。

如果期望,算术运算符电路可以包括逻辑异或门310、312、314、316和318,它们可以执行和信号(s1、s2、s3、s4和s5)和进位信号(c1、c2、c3、c4和c5)的逐位逻辑异或运算以产生异或的信号(x1、x2、x3、x4和x5)。

在一些实施例中,逻辑异或门310、312、314、316和318可分别实现图2的逻辑异或门230、234和236的一部分。例如,逻辑异或门230可以执行和信号s_a和进位信号c_a的逐位逻辑异或运算以生成异或的信号x_a(231),逻辑异或门234可以执行和信号215和进位信号217的逐位逻辑异或运算以生成异或的信号233,并且逻辑异或门236可以执行和信号225和进位信号227的逐位逻辑异或运算以生成异或的信号237。

在一些实施例中,当在单精度或半精度浮点模式中操作算术运算符电路时,输入传播信号(即信号pi)的最低有效位(lsb)可以被设置为‘1’。例如,当图2的电路执行舍入到最近偶数舍入运算时,将输入传播信号(即信号p1)的lsb设置为‘1’可以能够实现和加一及和加二信号的生成。

如所示,图3的逻辑或门330可以在异或的信号x1和信号float之间执行逻辑或运算,信号float可以当算术运算符电路执行浮点运算是‘1’并且否则是‘0’时,从而当算术运算符电路执行浮点运算时,将输入传播信号p1的lsb设置为‘1’,并且否则设置为异或的信号x1。

为了简化讨论,图3-6仅示出了有限数量的位,以举例说明和加零、和加一及和加二信号的生成。例如,在图3的算术运算符电路的逻辑表示中仅示出了5个位的进位信号及和信号。如果期望,进位信号及和信号并且从而输入和输出生成和传播信号和异或的信号以及和加零、和加一及和加二信号可以具有任何数量的位。例如,输入生成和传播信号可以具有18个位、23个位、32个位或任何其他数量的位。

图2的电路可以基于输出生成信号241、245和249、输出传播信号243和247以及异或的信号231、233和237来生成和加零、和加一及和加二信号。例如,逻辑异或门254和258可以通过分别执行输出生成信号245和249与异或的信号233和237的逐位逻辑异或运算来计算两个半精度浮点乘法的和加零信号264和267或者单精确浮点乘法运算的和加零信号的lsb264和msb267。

在图4a中进一步图示了基于输出生成信号和异或的信号计算和加零信号。如图4a中所示,逻辑异或门440、442、444、446和448可以执行输出生成信号g1、g2、g3、g4和g5与异或的信号x1、x2、x3、x4和x5的逐位逻辑异或运算,以生成和加零信号r1、r2、r3、r4和r5。

作为另一示例,电路253可以基于输出生成信号245、输出传播信号243和异或的信号233生成半精度浮点乘法或单精度浮点乘法运算的和加一信号263。类似地,电路257可以基于输出生成信号249、输出传播信号247和异或的信号237来生成另一半精度浮点乘法运算的和加一信号266。

在图4b中进一步图示了基于输出生成和传播信号以及异或的信号计算和加一信号。如图4b中所示,逻辑或门410执行和信号(即信号s1)的lsb与模式信号(即信号float)的反相的逻辑或运算,该模式信号指示电路是在执行浮点运算(即单精度浮点运算或两个半精度浮点运算)还是定点运算。换句话说,逻辑或门410的输出在电路正在执行浮点运算时是和信号(即信号s1)的lsb,并且否则是‘1’。

逻辑与门420、422和424可以分别执行逻辑或门410的输出与输出传播信号p2、p3和p4的逻辑与运算。从而,如果和信号(即信号s1)的lsb是‘1’,或者如果电路不执行浮点运算,则逻辑与门420、422和424分别传播输出传播信号p2、p3和p4。

逻辑或门430、432和434可以分别执行逻辑与门420、422和424的输出与输出生成信号g2、g3和g4的逻辑或运算,并且逻辑异或门470、472、474可以通过分别执行逻辑或门430、432和434的输出与异或的信号x3、x4和x5的逻辑异或运算来生成和加一信号(即r+l_3、r+1_4和r+1_5)。

作为另一示例,电路252可以基于输出生成信号245、输出传播信号243和异或的信号233生成半精度浮点乘法或单精度浮点乘法运算的和加二信号262。类似地,电路256可以基于输出生成信号249、输出传播信号247和异或的信号237来生成另一半精度浮点乘法运算的和加二信号265。

在图4c中进一步图示了基于输出生成和传播信号以及异或的信号计算和加二信号。

逻辑或门450、452和454可以分别执行输出传播信号p2、p3和p4与输出生成信号g2、g3和g4的逻辑或运算,并且逻辑异或门460、462、464可以通过分别执行逻辑或门450、452和454的输出与异或的信号x3、x4和x5的逻辑异或运算来生成和加二信号(即r+2_4、r+2_5和r+2_6)。

舍入选择电路260和270可以生成控制信号,该控制信号在多路复用器280和282处在相应的和加零信号、和加一信号及和加二信号之间进行选择。例如,舍入选择电路260可以基于逻辑异或门250的输出生成控制信号,逻辑异或门250执行输出生成信号241和异或的信号231的逻辑异或运算。类似地,舍入选择电路270可以基于由多路复用器280选择的信号的msb(即基于信号285)生成控制信号。

图5是在和加零、和加一及和加二信号之间进行选择的说明性电路的图解。如所示,多路复用器570可以接收和加零信号r_p、和加一信号r+1_p及和加二信号r+2_p,并基于控制信号(即信号sel)在接收的信号之间进行选择,控制信号指示是选择和加零信号(例如,sel=+0=‘001’)、和加一信号(例如,sel=+1=‘010’)还是和加二信号(例如,sel=+2=‘100’)。

图2的多路复用器280和282可以分别输出所选择的信号(即和加零、和加一或和加二)作为信号281、285和283。例如,多路复用器280可以输出第一半精度浮点乘法运算的结果作为与信号281级联的信号285,并且多路复用器282可以输出第二半精度浮点乘法运算的结果作为信号283。如果期望,多路复用器280可以输出单精度浮点乘法运算的结果作为与信号281级联的信号285。

如果期望,可以组合图4b中所示的和加一信号的生成和图4c中所示的和加二信号的生成。图6示出了生成和加零及和加一信号并基于用于半精度和单精度浮点乘法运算的和加一信号确定和加二信号的说明性算术电路的图解。

如所示,算术运算符电路可以包括逻辑异与门622、624、626、628和629,它们可以执行和信号(s1、s2、s3、s4和s5)和进位信号(c1、c2、c3、c4和c5)的逐位逻辑与运算以产生输入生成信号(g1、g2、g3、g4和g5)。

如果期望,算术运算符电路可以包括逻辑异或门310、312、314、316和318,它们可以执行和信号(s1、s2、s3、s4和s5)和进位信号(c1、c2、c3、c4和c5)的逐位逻辑异或运算以产生异或的信号(x1、x2、x3、x4和x5)。

在一些实施例中,进位信号及和信号的逻辑异或运算可以生成输入传播信号p2、p3、p4和p5(即异或的信号x2、x3、x4和x5)。

在一些实施例中,当生成和加二信号并且在单精度或半精度浮点模式中操作算术运算符电路时,输入传播信号(即信号p1)的最低有效位(lsb)可以被设置为‘1’。如所示,逻辑与门610可以执行在信号float和信号sel+2之间的逻辑与运算,信号float当算术运算符电路执行浮点运算时可以是‘1’,并且否则是‘0’,信号sel+2当生成和加二信号时可以是‘1’。逻辑或门620可以执行在异或的信号x1和逻辑与门610的输出之间的逻辑或运算,由此当算术运算符电路生成和加二信号并执行浮点运算时将输入传播信号p1的lsb设置为‘1’,并且否则设置为异或的信号x1。

可以使用生成和加一信号的电路生成和加二信号。如所示,逻辑或门630、632和634可以分别执行输出传播信号p2、p3和p4与输出生成信号g2、g3和g4的逻辑或运算,并且逻辑异或门640、642、644可以通过分别执行逻辑或门630、632和634的输出与异或的信号x3、x4和x5的逻辑异或运算来生成和加一信号(即r+1_3、r+1_4和r+1_4)。

多路复用器650可以接收和加零信号r_p、和加一信号r+1_p及和加二信号r+1_p+1(其是和加一信号的下一较高位),并基于控制信号(即信号sel)在接收的信号之间进行选择,控制信号指示是选择和加零信号(例如,sel=+0=‘001’)、和加一信号(例如,sel=+1=‘010’还是和加二信号(例如,sel=+2=‘100’)。

图7示出了计算和加零及和加一信号并基于用于半精度和单精度浮点乘法运算的和加一信号确定和加二信号的说明性算术电路的实施例。如所示,图7的电路可以再利用来自图2的电路的一部分。例如,图7的电路可以包括3:2压缩器210、212、214和216、多路复用器220和224、逻辑异或门230、234、236和250、前缀网络240和舍入选择电路260和270,它们可以采用与图2中描述的相同方式生成和信号和进位信号、输入传播和生成信号以及一些输出传播和生成信号。

例如,舍入选择电路260和270可以生成控制信号,该控制信号在多路复用器780和782处在相应的和加零信号、和加一信号及和加二信号之间进行选择。控制信号可以馈送到前缀网络742和746中,这两者可以是例如kogge-stone前缀网络或任何其他前缀网络,诸如brent-kung前缀网络或hancarlson前缀网络(仅仅列举了几个),其基于相应的进位信号及和信号以及相应的控制信号输出相应的输出生成信号745和749以及输出传播信号743和747。

图7的电路可以基于输出生成信号745和749、输出传播信号743和747以及异或的信号233和237来生成和加零及和加一信号。例如,逻辑异或门754和758可以通过分别执行输出生成信号745和749与异或的信号233和237的逐位逻辑异或运算来计算两个半精度浮点乘法的和加零信号764和767或者单精确浮点乘法运算的和加零信号的lsb764和msb767。

作为另一示例,例如如图6中所示,如果期望,电路753可以基于输出生成信号745、输出传播信号743和异或的信号233来计算半精度浮点乘法运算或单精度浮点乘法运算的和加一信号763。类似地,例如如图6中所示,如果期望,电路757可以基于输出生成信号749、输出传播信号747和异或的信号237来计算半精度浮点乘法运算的和加一信号766。

可以使用生成和加一信号的电路生成和加二信号。从而,多路复用器780和782可以分别输出所选择的信号(即和加零、和加一或和加二)作为信号781、785和783。例如,多路复用器780可以输出第一半精度浮点乘法运算的结果作为与信号781级联的信号785,并且多路复用器782可以输出第二半精度浮点乘法运算的结果作为信号783。如果期望,多路复用器780可以输出单精度浮点乘法运算的结果作为信号781和785。如果期望,可以生成和加一及和加二信号,如图6中所示。

图8是示出按照实施例的用于操作专用处理块的说明性步骤的流程图的图解。在步骤810期间,专用处理块可接收第一、第二、第三和第四半精度浮点数。例如,图1的专用处理块100可以接收半精度浮点数bx、by、ax和ay。

在步骤820期间,专用处理块可通过将第一和第二半精度浮点数相乘来生成第一部分乘积。例如,图1的专用处理块100的右乘法器102可以计算部分乘积(即信号112和122)。

在步骤830期间,专用处理块可通过将第三和第四半精度浮点数相乘来生成第二部分乘积。例如,专用处理块100的左乘法器101可以计算另一个部分乘积(即信号114和124)。

在步骤840期间,专用处理块可使用3:2压缩器电路基于所述第一和第二部分乘积生成进位矢量信号及和矢量信号。例如,图2的电路可以基于部分乘积112、122、114和124生成进位矢量信号213、217、223和227。

在步骤850期间,专用处理块可基于进位矢量信号及和矢量信号并行地生成第一半精度浮点乘法运算的至少第一和第二结果以及第二半精度浮点乘法运算的至少第三和第四结果以预期舍入和归一化运算。例如,图2的电路可以基于相应的进位矢量信号及和矢量信号生成第一半精度浮点乘法运算(即信号264和263)和第二半精确浮点乘法运算(即信号267和266)的和加零结果及和加一结果。

本文描述的方法和设备可以被合并到任何合适的电路或电路系统中。例如,方法和设备可以被结合到许多类型的装置(诸如微处理器或其他集成电路)中。示例性集成电路包括可编程阵列逻辑(pal)、可编程逻辑阵列(pla)、现场可编程逻辑阵列(fpga)、电可编程逻辑器件(epld)、电可擦除可编程逻辑器件(eepld)、逻辑单元阵列(lca)、现场可编程门阵列(fpga)、粗粒度可重构架构(cgra)、数字信号处理(dsp)电路、专用标准产品(assp)、专用集成电路(asic)(仅列举几个)。

本文描述的集成电路可以是包含如下组件中的一个或多个的数据处理系统的一部分:处理器;存储器;i/o电路;和外围装置。数据处理系统能被用在各种各样的应用中,诸如计算机连网、数据连网、仪表化、视频处理、数字信号处理或任何合适的其他应用,其中使用半精度浮点算术运算和单精度浮点算术运算的优点是期望的。

集成电路可以被配置为执行各种不同的逻辑功能。例如,集成电路可以被配置为与系统处理器协同工作的处理器或控制器。集成电路还可以被用作用于仲裁对数据处理系统中的共享资源的存取的仲裁器。在又一示例中,集成电路可以被配置为在处理器与系统中其他组件中的一个之间的接口。在一个实施例中,集成电路可以是由受让人拥有的器件系列之一。

尽管以特定次序描述了方法操作,但应该理解,在所描述的操作之间可执行其他操作,所描述的操作可被调整使得它们在略微不同的时刻发生,或者所描述的操作可被分布在允许以与处理关联的各种间隔发生处理操作的系统中。

前述的仅仅是实施例的原理的举例说明,并且本领域技术人员能在不脱离本文公开的实施例的范围和精神的情况下进行各种修改。前述实施例可单独实现或在任何组合中实现。

以下示例涉及另外的实施例。

示例1是一种单精度浮点乘法电路,其执行第一和第二半精度浮点乘法运算,所述电路包括:第一算术运算符电路,其生成第一和第二半精度浮点数的第一部分乘积;第二算术运算符电路,其生成第三和第四半精度浮点数的第二部分乘积;压缩器电路,其基于所述第一和第二部分乘积生成进位矢量信号及和矢量信号;以及第三算术运算符电路,其基于所述进位矢量信号及和矢量信号并行地生成所述第一半精度浮点乘法运算的至少第一和第二结果以及所述第二半精度浮点乘法运算的至少第三和第四结果以预期舍入和归一化运算。

示例2是示例1的单精度浮点乘法电路,进一步包括:第一算术运算符电路中的第一部分乘积生成器,其基于第一和第二半精度浮点数生成第一和第二输出矢量信号;以及第二算术运算符电路中的第二部分乘积生成器,其基于第三和第四半精度浮点数生成第三和第四输出矢量信号。

示例3是示例2的单精度浮点乘法电路,其中第一算术运算符电路进一步包括:第四算术运算符电路,其执行所述第一、第二、第三和第四输出矢量信号的4:2压缩;以及在所述第四算术运算符电路周围的旁路路径,其将所述第一和第二输出矢量信号作为所述第一部分乘积从所述第一算术运算符电路递送到所述压缩器电路,并且将所述第三和第四输出矢量信号作为所述第二部分乘积从所述第二算术运算符电路递送到所述压缩器电路。

示例4是示例1的单精度浮点乘法电路,进一步包括:旁路多路复用器,其中所述压缩器电路连同所述旁路多路复用器选择性地将零插入到所述第一和第二部分乘积中以生成和矢量信号与进位矢量信号。

示例5是示例1的单精度浮点乘法电路,其中第三算术运算符电路进一步包括:组合电路,其基于所述进位矢量信号及和矢量信号生成输入传播矢量信号和输入生成矢量信号。

示例6是示例5的单精度浮点乘法电路,其中组合电路进一步包括:逻辑异或门,其执行进位矢量信号与和矢量信号的逐位异或运算以生成输入传播矢量信号,其中输入传播矢量信号的最低有效位被设置为1;以及逻辑与门,其执行进位矢量信号与和矢量信号的逐位与运算以生成输入生成矢量信号。

示例7是示例5的单精度浮点乘法电路,其中第三算术运算符电路进一步包括:前缀网络,其基于所述输入传播和生成矢量信号来生成输出传播矢量信号和输出生成矢量信号。

示例8是示例7的单精度浮点乘法电路,其中第三算术运算符电路进一步包括:附加组合电路,其基于所述输出生成和传播矢量信号以及所述进位矢量信号及和矢量信号来生成和加零、和加一及和加二信号。

示例9是示例8的单精度浮点乘法电路,其中第三算术运算符电路进一步包括:选择电路,其基于预定舍入方案生成控制信号;以及多路复用器,其基于所述控制信号在所述和加零、和加一及和加二信号之间进行选择。

示例10是一种用于操作专用处理块的方法,包括:接收第一、第二、第三和第四半精度浮点数;通过将所述第一和第二半精度浮点数相乘来生成第一部分乘积;通过将所述第三和第四半精度浮点数相乘来生成第二部分乘积;使用压缩器电路基于所述第一和第二部分乘积生成进位矢量信号及和矢量信号;以及基于所述进位矢量信号及和矢量信号并行地生成所述第一半精度浮点乘法运算的至少第一和第二结果以及所述第二半精度浮点乘法运算的至少第三和第四结果以预期舍入和归一化运算。

示例11是示例10的方法,其中所述第一部分乘积包含第一和第二输出矢量信号,并且所述第二部分乘积包含第三和第四输出矢量信号,所述方法进一步包括:执行第一、第二、第三和第四输出矢量信号的4:2压缩;以及选择性地将第一和第二输出矢量信号作为第一部分乘积在旁路路径上路由绕过所述4:2压缩器电路到压缩器电路。

示例12是示例10的方法,其中使用压缩器电路生成所述进位矢量信号与和矢量信号进一步包括:选择性地将零插入到第一和第二部分乘积中。

示例13是示例10的方法,其中并行生成所述至少第一和第二结果以及所述至少第三和第四结果进一步包括:执行所述进位矢量信号与和矢量信号的逐位异或运算以生成所述输入传播矢量信号;将所述输入传播矢量信号的所述最低有效位设置为1;以及执行所述进位矢量信号与和矢量信号的逐位与运算以生成所述输入生成矢量信号。

示例14是示例13的方法,进一步包括:使用前缀网络基于所述输入传播和生成矢量信号生成输出传播矢量信号和输出生成矢量信号;以及基于所述输出生成和传播矢量信号以及所述进位矢量信号及和矢量信号来生成和加零、和加一及和加二信号。

示例15是示例14的方法,进一步包括:基于预定舍入方案生成控制信号;以及基于所述控制信号在所述和加零、和加一及和加二信号之间进行选择。

示例16是一种专用处理模块,其接收第一、第二、第三和第四输入信号,并且其可配置为在执行级联的第一和第三输入信号与级联的第二和第四输入信号的单精度浮点运算和分别执行第一与第二输入信号的和第三与第四输入信号的两个半精确浮点运算之间进行选择,所述块包括:第一部分乘积生成器,其生成第一和第二输入信号的第一部分乘积;第二部分乘积生成器,其生成第三和第四输入信号的第二部分乘积;压缩器电路,其基于所述第一和第二部分乘积生成进位矢量信号及和矢量信号;以及电路,其通过基于进位矢量信号及和矢量信号在执行单精度浮点运算时并行生成至少两个结果并且在执行两个半精度浮点运算时生成至少四个结果来预期舍入和归一化运算。

示例17是示例16的专用处理块,其中所述第一部分乘积包含第一和第二输出矢量信号,并且所述第二部分乘积包含第三和第四输出矢量信号,进一步包括:算术运算符电路,其当执行所述单精度浮点运算时执行所述第一、第二、第三和第四输出矢量信号的4:2压缩;以及绕过所述算术运算符电路的旁路路径,其在执行所述两个半精度浮点运算时,将所述第一和第二输出矢量信号作为所述第一部分乘积从所述第一部分乘积生成器递送到所述压缩器电路,并且将所述第三和第四输出矢量信号作为所述第二部分乘积从所述第二部分乘积生成器递送到所述压缩器电路。

示例18是示例17的专用处理块,其中预期舍入和归一化运算的电路进一步包括:组合电路,其基于所述进位矢量信号及和矢量信号生成输入传播矢量信号和输入生成矢量信号。

示例19是示例18的专用处理块,其中组合电路进一步包括:逻辑异或门,其执行进位矢量信号与和矢量信号的逐位异或运算以生成输入传播矢量信号,其中输入传播矢量信号的最低有效位被设置为1;以及逻辑与门,其执行进位矢量信号与和矢量信号的逐位与运算以生成输入生成矢量信号。

示例20是示例18的专用处理块,其中预期舍入和归一化运算的电路进一步包括:前缀网络,其基于所述输入传播和生成矢量信号来生成输出传播矢量信号和输出生成矢量信号;以及附加组合电路,其基于所述输出生成和传播矢量信号以及所述进位矢量信号及和矢量信号来生成和加零、和加一及和加二信号。

为了举例说明而非限制的目的给出了上述实施例,并且本发明仅由所附的权利要求书限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1