可变精密浮点加法器和减法器的制作方法
未命名
08-22
阅读:120
评论:0
可变精密浮点加法器和减法器
1.本技术为分案申请,其原申请是2019年2月20日进入中国国家阶段、国际申请日为2017年8月18日的国际专利申请pct/us2017/047673,该原申请的中国国家申请号是201780051029.4,发明名称为“可变精度浮点加法器和减法器”。
2.本技术要求享有于2016年9月20日提交的美国专利申请no.15/270,495的优先权,其全部内容通过引用的方式合并于此。
技术领域
3.本发明总体上涉及集成电路,具体而言,涉及具有浮点运算电路的集成电路。
背景技术:
4.可编程逻辑器件(pld)包括逻辑电路,例如查找表(lut)和基于乘积和的逻辑,其被设计为允许用户根据用户的特定需要定制电路。该可配置逻辑通常被分成称为逻辑元件(le)的各个逻辑电路。le可以被组合在一起以形成被称为逻辑阵列块(lab)的更大的逻辑块,其可以被配置为共享相同的资源(例如,寄存器和存储器)。除了这种可配置逻辑外,pld还包括可编程互连或路由电路,用于连接le和lab的输入和输出。该可编程逻辑和路由电路的组合称为软逻辑。
5.除了软逻辑之外,pld还可以包括实现特定预定义逻辑功能因而不能由用户配置的专用处理块。这种专用处理块可以包括pld上的电路集中,其已经被部分或完全硬连线以执行一个或多个特定任务,例如逻辑或数学运算。通常在这种专用处理块中实现的结构的示例包括:加法器、乘法器、算术逻辑单元(alu)、桶形移位器、各种存储器元件(例如fifo/lifo/sipo/ram/rom/cam块和寄存器文件)、逻辑and/nand/or/nor阵列等、或其组合。
6.在pld上提供的一个特别有用类型的专用处理块是数字信号处理(dsp)块。传统的dsp块包括支持固定精度(即固定指数和尾数宽度)的浮点加法器。然而,可能期望配置dsp以支持各种中间精度,以帮助改善dsp块的功能密度。
7.在此背景下,出现了本文描述的实施例。
技术实现要素:
8.本文的实施例总体上涉及集成电路,具体而言,涉及包括多精度浮点加法器的集成电路。浮点加法器可以接收第一和第二浮点数,每个浮点数具有尾数和指数。浮点加法器可以使用双路径加法器架构来实现,该架构将第一数和第二数分成近路径和远路径。当第一数和第二数的指数的差等于或小于1时,可以采用近路径,而当指数的差大于1时,可以采用远路径。
9.浮点加法器可以包括近路径中的至少减法电路和归一化电路,并且还可以包括远路径中的至少对准电路和加/减(+/-)电路。浮点加法器可以包括多路复用器,其选择性地输出来自近路径和远路径之一的结果。
10.根据实施例,浮点加法器可以以至少第一模式操作,第一模式支持第一数和第二
数的第一尾数大小;并且还以第二模式操作,第二模式支持不同于第一大小的第二尾数大小。例如,浮点加法器可以以支持10位、11位、12位、14位的尾数宽度的模式操作,其中,总宽度(包括符号位和指数宽度)为14位、23位、多于23位等。
11.为了支持可变尾数宽度,远路径中的对准电路可以包括输出移位值的右移位器;最大移位查找表电路,其根据所支持的当前尾数宽度输出期望最大移位值;比较器,其比较最大移位值与指数的差;以及选通电路,其基于比较器的比较步骤选择性地使移位值通过。右移位器可以包括各种级别的逻辑或(or)门,以用于选择性地组合适当数量的最低有效位(lsb)以产生用于浮点舍入确定的粘接位。
12.远路径中的加/减电路可以包括:第一求和电路,用于输出和值(即,第一数与第二数之和);第二求和电路,用于输出增量和值(即,第一数与第二数的总和加1);逐位逻辑异或(xor)门,用于选择性地将第二数反相;以及逐位逻辑或门,用于在lsb位置使“1”选择性地传播通过。可以仅针对较小的尾数宽度启动选择性传播。虽然尾数总是左对齐,但粘接位应总是右对齐,以使粘接位固定在最低位位置。可替换地,可以使用从较低求和段接收粘接位或进位输出信号的多路复用器来绕过一些lsb位。
13.根据附图和以下详细说明,本发明的其他特征、其性质和各种优点将更加明显。
附图说明
14.图1是根据实施例的具有专用处理块的说明性集成电路的视图。
15.图2是示出根据实施例的专用处理块如何可以包括一个或多个浮点加法器电路的视图。
16.图3是示出根据实施例的可以使用图2的加法器电路支持的不同精度的视图。
17.图4是根据实施例的说明性双路径浮点加法器电路的视图。
18.图5是根据实施例的说明性远路径对准电路的视图。
19.图6是根据实施例的可以包括在图5中所示的对准电路内的说明性右移位器电路的电路图。
20.图7是根据实施例的说明性远路径加法器电路的电路图。
21.图8是根据实施例的用于生成增量和输出的说明性逻辑电路的视图。
22.图9是示出根据实施例的如何可以生成lgrs位的电路图。
23.图10a是根据实施例的说明性舍入确定电路的视图。
24.图10b是根据实施例的说明性lsb翻转确定电路的视图。
25.图11是根据实施例的说明性补码信号生成电路的视图。
具体实施方式
26.本文给出的实施例涉及集成电路,具体而言,涉及集成电路上的浮点加法器/减法器。本领域技术人员将认识到,可以在没有这些具体细节中的一些或全部的情况下实践当前示例性实施例。在其他情况下,没有详细描述公知的操作,以免不必要地使当前实施例难以理解。
27.在图1中示出了具有示例性互连电路的集成电路(例如可编程逻辑器件(pld)100)的说明性实施例。如图1所示,可编程逻辑器件(pld)可以包括二维功能块阵列,包括逻辑阵
列块(lab)110和其他功能块,例如随机存取存储器(ram)块130和诸如专用处理块(spb)120的专用处理块。诸如lab 110的功能块可以包括较小的可编程区域(例如,逻辑元件,可配置逻辑块或自适应逻辑模块),其接收输入信号并对输入信号执行定制功能以产生输出信号。
28.可编程逻辑器件100可以包含可编程存储器元件。存储器元件可以使用输入/输出元件(ioe)102加载有配置数据(也称为编程数据)。一旦加载,存储器元件各自提供相应的静态控制信号,其控制相关联功能块(例如,lab 110、spb 120、ram 130或输入/输出元件102)的操作。
29.在典型情况下,加载的存储器元件的输出被施加到功能块中的金属氧化物半导体晶体管的栅极,以使某些晶体管导通或截止,从而配置包括布线路径的功能块中的逻辑。可以以这种方式控制的可编程逻辑电路元件包括多路复用器(例如,用于在互连电路中形成布线路径的多路复用器)、查找表、逻辑阵列、and、or、nand和nor逻辑门、传输门等的部分。
30.存储器元件可以使用任何合适的易失性和/或非易失性存储器结构,例如随机存取存储器(ram)单元、熔丝、反熔丝、可编程只读存储器存储单元、掩模编程和激光编程结构、机械存储器件(例如,包括局部机械谐振器)、机械操作ram(moram)、这些结构的组合等。因为存储器元件在编程期间加载有配置数据,所以存储器元件有时被称为配置存储器、配置ram(cram)、配置存储器元件或可编程存储器元件。
31.此外,可编程逻辑器件可以具有输入/输出元件(ioe)102,用于将信号驱动出器件100并从其他器件接收信号。输入/输出元件102可以包括并行输入/输出电路、串行数据收发器电路、差分接收器和发射器电路、或用于将一个集成电路连接到另一个集成电路的其他电路。如图所示,输入/输出元件102可以位于芯片的外围周围。
32.如果需要,可编程逻辑器件可以具有以不同方式布置的输入/输出元件102。例如,输入/输出元件102可以形成一列或多列输入/输出元件,其可以位于可编程逻辑器件上的任何位置(例如,均匀地分布在pld的宽度上)。如果需要,输入/输出元件102可以形成一行或多行输入/输出元件(例如,分布在pld的高度上)。可替换地,输入/输出元件102可以形成输入/输出元件的岛,其可以分布在pld的表面上或者聚集在选定的区域中。
33.pld还可以包括以垂直布线通道140(即,沿pld 100的垂直轴形成的互连)和水平布线通道150(即,沿pld 100的水平轴形成的互连)形式的可编程互连电路,每个布线通道包括至少一个轨道以布线至少一条导线。如果需要,互连电路可以包括双数据速率互连和/或单数据速率互连。
34.如果需要,布线可以比布线通道的整个长度短。长度l的导线可以跨越l个功能块。例如,长度四的导线可以跨越四个块。水平布线通道中的长度四的导线可称为“h4”导线,而垂直布线通道中的长度四的导线可称为“v4”导线。
35.不同的pld可以具有连接到不同数量的布线通道的不同功能块。图1中示出了三侧布线架构,其中,输入和输出连接存在于每个功能块至布线通道的三个侧面上。其他布线架构也旨在包括在本发明的范围内。其他布线架构的示例包括1侧、11/2侧、2侧和4侧布线架构。
36.在直接驱动布线架构中,每条导线由驱动器在单个逻辑点驱动。驱动器可以与多路复用器相关联,多路复用器选择在导线上驱动的信号。在沿其长度具有固定数量的导线的通道的情况下,可以在导线的每个起始点处放置驱动器。
37.注意,除了图1中示出的互连电路的拓扑之外,其他布线拓扑也旨在包括在本发明的范围内。例如,布线拓扑可以包括沿其范围的不同部分的对角导线、水平导线和垂直导线以及在三维集成电路的情况下垂直于器件平面的导线,并且导线的驱动器可以位于与导线一端不同的点处。布线拓扑可以包括跨越基本上所有pld 100的全局导线、诸如跨越pld 100的一部分的导线的部分全局导线、特定长度的交错导线、较小的局部导线、或任何其它合适的互连资源布置。
38.此外,应该理解,实施例可以实现在任何集成电路中。如果需要,这种集成电路的功能块可以布置在更多级或层中,其中多个功能块互连以形成更大的块。其他器件布置可以使用没有按行和列布置的功能块。
39.图2是示出根据实施例的专用处理块如何可以包括两个或多个浮点(fp)加/减电路的视图。如图2所示,专用处理块(有时称为数字信号处理块或“dsp”块)可以包括一个或多个浮点加法器/减法器电路200。
40.浮点数常见的是在计算系统中以科学计数法表示实数,并且旨在涵盖大数值范围和不同的精度要求。ieee 754标准通常用于浮点数。浮点数包括三个不同的部分:(1)浮点数的符号,(2)尾数,以及(3)指数。这些部分中的每一个可以用二进制数表示,并且在ieee 754格式中,根据精度具有不同的位大小。例如,单精度浮点数需要32位,其分布如下:一个符号位(位32),八个指数位(位[31:24])和23个尾数位(位[23:1])。双精度浮点数需要64位,包括一个符号位(位64),11个指数位(位[63:53])和52个尾数位(位[52:1])。
[0041]
根据标准ieee 754的浮点数的符号用单个位表示,其中,“0”表示正数,并且“1”表示负数。由于ieee 754浮点数以该有符号的量值格式定义,因此附加和减法运算基本相同,因此下面仅提及加法器以简化讨论。
[0042]
浮点数的指数优选地是无符号二进制数,对于单精度格式,其范围从0到255。为了表示非常小的数,必须使用负指数。因此,指数优选地具有负偏差。对于单精度浮点数,偏差优选地是-127。例如,指数的值140实际表示(140-127)=13,值100表示(100-127)=-27。对于双精度数,指数偏差优选地是-1023。
[0043]
如上所述,根据ieee 754标准,尾数是归一化数(即,它没有前导零并且表示浮点数的精度分量)。因为尾数以二进制格式存储,所以前导位可以是0或1,但对于归一化数,它总是1。因此,在总是将数归一化的系统中,前导位不必存储并且可以是隐含的,有效地给予尾数一个额外的精度位。因此,单精度格式有效地具有24位精度(即,23个尾数位加上一个隐含位)。
[0044]
由ieee 754标准定义的单精度浮点运算可以称为“fp32”,因为单精度浮点数需要32位(参见例如图3的表300中的第一行)。对于某些应用,可能期望支持“fp16”运算,其涉及具有一个符号位、五个指数位和十个尾数位的浮点数。包括隐含的前导位,fp16有效地具有11位尾数。
[0045]
通常,传统的可编程逻辑器件仅包括具有固定精度的浮点加法器。实现可变精度浮点运算电路可能过于昂贵,因为支持不同的精度可能需要大量的区域开销。因此,希望实现多精度浮点加法器电路而不会导致显著的区域损失。
[0046]
根据实施例,加法器200不仅可以被配置为支持fp32和fp16,而且还可以被配置为支持各种中间大小,例如fp17、fp18、fp20等,而不会引起大的区域损失。以这种方式配置,
dsp 120可以支持相对于fp32运算高达两倍的功能密度。如图3所示,fp17可以涉及具有一个符号位、五个指数位和11个尾数位的浮点数;fp18可以涉及具有一个符号位、五个指数位和12个尾数位的浮点数;fp20可以涉及具有一个符号位、五个指数位和14个尾数位的浮点数(作为示例)。
[0047]
如表300中所示分配给指数和尾数部分的位数仅仅是说明性的,并不用于限制本实施例。如果需要,各种浮点格式中每一个的指数可以多于或少于五位,并且可以基于指数调整尾数位的数量。
[0048]
图4是示出能够支持可变精度的加法器电路200的一种合适实施方式的视图。如图4所示,加法器200可以包括指数/尾数比较和近/远路径路由电路400,其接近输入a和b(即,数字a和b的指数和尾数),比较输入a和b的指数以及尾数,并将数字分成“近”路径和“远”路径。如果指数的差等于零或一,则可以使用近路径(其中“1”的值被设置为预定阈值)。在近路径中,通常仅发生减法。较大的数字(可以是a或b)将被路由到“近较大”的路径402,而较小的数字将被路由到“近较小”的路径404。另一方面,如果指数的差大于1或者对于真正的加法运算,则可以采用远路径(例如,远路径也可以处理近值的加法)。较大的数字(可以是a或b)将被路由到“远较大”的路径406,而较小的数字将被路由到“远较小”的路径408。图4中的其中值被分成近路径和远路径的示例性架构有时可被称为“双路径”加法器架构。
[0049]
为了说明近路径的操作,考虑一个示例,其中a等于1124*exp(15)并且其中b等于-1924*exp(14)。在上面的示例中,数字a的有效位数等于1124,指数基数为2。为了匹配指数,b可以右移一个位置(即,将b除以因子2,因为指数基数为2,这得到-962)。由于b是负的,因此可以从a中减去b的大小,然后得到162(即,1124减去962),相对应的指数为15。为了归一化162,可以确定前导零的数量然后左移位适当的位数。在该特定场景中,结果可以等于1296*exp(12)(即,162可以左移3位位置,实际上将162乘以因子8以得到1296)。
[0050]
如以上示例中所示,近路径可以涉及减法运算(可以使用图4的减法电路410执行)和归一化运算(可以使用归一化电路412执行)。虽然近较小数的右移位操作可能是微不足道的,但是减法电路410和归一化电路412的实现可能相当复杂。
[0051]
为了说明远路径的操作,考虑一个示例,其中a等于1524*exp(15)并且其中b等于-1424*exp(12)。为了匹配指数,b可以右移三位位置(即,将b除以8,因为指数基数为2,这得到-178)。由于b是负的,然后可以从a中减去b的大小,然后得到1346(即,1524减去178),其中相应的指数为15。由于a比b大至少几个数量级,因此得到的数可以用基数2表示,而没有复杂的计数零/归一化过程。
[0052]
如以上示例中所示,远路径可以涉及右移远较小数(可以使用对准电路414执行)和加/减运算(可以使用电路416执行)。虽然在电路416的输出处的归一化运算可能是微不足道的,但是对准电路414和运算电路416的实现可能相当复杂。
[0053]
仍然参考图4,浮点加法器电路200还可以包括多路复用电路,例如多路复用器418,其具有从近路径中的归一化电路412接收输出信号的第一数据输入,从远路径中的+/-电路416接收输出信号的第二数据输入,以及可以路由近路径结果或远路径结果的输出。然后可以通过异常/错误处理电路420馈送多路复用器418的输出以产生最终输出信号out。
[0054]
图5是根据实施例的远路径尾数对准电路414的视图。对准电路414用于使远较小尾数去归一化。如图5所示,对准电路414可以包括右移位器块500、诸如最大移位lut 506的
最大移位查找表(lut)电路、诸如比较器505的比较电路、以及诸如逻辑与(and)门502的选通电路。右移位器块500可以接收来自远较小路径408的尾数值、以及多位移位值,其等于输入a和b的指数差,并且可以将相对应的移位值输出到门502并且在输出508处还输出粘接位。
[0055]
如上所述,图4的浮点加法器200可以被配置为支持多个尾数宽度(例如,以支持可变数量的精度)。对于浮点加法器200支持的每个尾数宽度,允许最大移位量。在10位尾数的情况下,相对应的最大移位将是13位(即,包括隐含前导“1”与保护和舍入位的11位输入)。作为另一个示例,如果尾数是6位,则相对应的最大移位将是9位(即,包括隐含前导“1”与保护和舍入位的7位输入)。作为又一示例,如果尾数包括23位,则相应的最大移位将是26位(即,包括隐含前导“1”与保护和舍入位的24位输入)。换言之,最大移位值应该比所支持的当前精度多三。该映射可以在最大移位lut电路506内编码。如果需要,也可以使用只读存储器(rom)或其他类型的静态配置的逻辑门来实现电路506。
[0056]
可以使用比较器504将移位值与最大允许移位输出进行比较。如果输入移位值超过最大移位值,则比较器504将输出低值,这将使得门502输出归零值(即,远较小的输出将完全归零)。如果输入移位值等于或小于最大移位值,则比较器504将输出高值,这将允许选通电路502使移位值在右移位器块500的输出处通过。图5中的将比较电路504实现为比较器的示例仅仅是说明性的。如果需要,比较电路504也可以实现为减法电路或其他阈值确定电路。粘接位不应受最大移位比较结果的影响。
[0057]
图6是右移位器块500的电路图,该右移位器块500可以包括在结合图5描述的类型的对准电路414内。如图6所示,右移位器500可以包括多路复用级600-1、600-2、600-3和600-4。右移位器500可以接收远较小尾数输入,其在该特定示例中等于[12:1]中的12位输入值,并且还可以接收4位移位值。接收的移位信号的最低有效位(lsb)可以控制多路复用器级600-1,其选择性地将输入值右移一位位置,将最高有效位(msb)设置为零。移位信号的第二lsb(即,移位[2])可以用于控制多路复用器级600-2,其选择性地将输入值右移两位位置,将两个msb设置为零。类似地,移位信号的第三lsb(即,移位[3])可用于控制多路复用器级600-3,其选择性地将输入值右移四位位置,同时将四个msb设置为零。最后,移位信号的msb(即,移位[4])可以用于控制多路复用器级600-4,其选择性地将输入值右移八位位置,同时将八个前导位设置为零。以这种方式配置,图6的四级右移位器块可以支持无移位和15位右移位之间的任何数量的右移位(如果使所有四个移位控制位都有效)。
[0058]
在浮点计算中,还需要计算“粘接位”。粘接位指示高位是否移位到输入数的字宽的右侧并因此丢失。块602-1、602-2、602-3和602-4可以接收移位的位,并且可以用于通过将已经移位到数据路径右侧的任何位“或”运算在一起来计算对于每个级别的粘接位贡献。可以使用逻辑或门604将所有这些信号“或”运算在一起,以生成远路径的粘接位。
[0059]
可以根据需要浮点加法器200(图4)支持的最大尾数精度来设置右移位器块500的大小。此处,图5的12位宽移位器500将支持高达9位的尾数精度,如果考虑前导“1”以及用于保护位和舍入位的两个附加位,则转换为具有10位精度的数。如上所述,粘接位是舍入位右侧的一位位置,并且可用于做出舍入决定,例如在舍入到最近偶数(rne)操作的情况下。
[0060]
为了帮助支持较小尾数,粘接位需要包括移位到较小尾数右侧的位。这些位可以从最后的多路复用级得到,例如图5的示例中的级600-4,如lsb布线路径608所示。在较小尾
数为6位的情况下,最后一级的三个lsb(例如,9位减去6位)也将形成较小的粘接位的一部分。这三位将由门606“或”运算在一起。另外的逻辑与门610将用于在最终粘接位中选择性地包括这些位,最终粘接位是通过使用最终逻辑或门612将来自或门604的粘接位输出与来自or门606的附加粘接位分量“或”运算在一起来计算的。换言之,可以使控制信号sc在9位尾数模式中无效(即,被驱动为低),或者可以在6位尾数模式中有效(即,被驱动为高),其中k等于3。
[0061]
支持两个不同尾数宽度的该示例仅仅是说明性的,并不旨在限制本实施例的范围。如果需要,可以以这种方式支持三个或更多个不同的浮点精度。附加的或门606将位组合到左侧(比来自门606的位更重要)并且可以与较大的粘接位的分量选择性地“或”运算。换言之,从最后一级接收第四和第五位的附加或门可以与逻辑门606级联,并且可以使用附加逻辑与门选择性地组合,以帮助支持4位的尾数宽度。
[0062]
本文描述的方法可能要求所有输入尾数在msb处对准(例如,所有尾数应该左对齐)。以这种方式操作,保护位和舍入位将被暗示为紧挨着相应尾数的lsb的右侧。同样,所有尾数情况的粘接位将在相同位置(例如,最大数字的lsb的右侧)。换言之,具有较小尾数的数仍然左对齐,但在其lsb和实际粘接位之间至少会有一些无关位,实际粘接位根据最大尾数的大小右对齐(例如,尾数是左对齐的,而粘接位是右对齐的)。
[0063]
图7是示出根据实施例的远路径加法器/减法器电路416的一种合适实施方式的电路图。如图7所示,电路416可以包括第一求和电路700、第二求和电路702、逐位逻辑异或(xor)门704和逐位逻辑或门706。电路416可以被配置为允许用左对齐尾数和右对齐粘接位进行正确的舍入,在加/减之前和之后无需对准移位。在图7的示例中,电路416接收20位输入字,其支持14位尾数、前导“1”、两个前导零以允许无符号表示中的附加字增长、以及三个尾随位(即,保护位、舍入位和粘接位)。
[0064]
电路416接收来自远较大路径的第一输入信号左[20:1]和来自远较小路径的第二输入信号右[20:1]。可以使用逐位异或门704选择性地补充远较小输入信号右[20:1]。例如,在使异或门704的右输入有效时,在真正的减法运算期间,可以使用门704选择性地反相信号右[20:1]中的每个位。根据至少一些实施例,使用二的补码运算来执行减法运算,该减法运算是输入操作数的运算和符号的函数。为了将数转换为其二的补码,数可以反相并递增“1”。无论信号右[20:1]是否已被门704改变,在门704的输出处的值都可以表示为信号右'[20:1]。
[0065]
在最简单的情况下,远较大输入信号左[20:1]和远较小输入信号右'[20:1]使用求和电路700经由路径710加在一起以产生a+b或使用求和电路702与附加的“+1”加在一起以产生a+b+1。附加的“1”输入可以实现为高进位输入位。特别地,可以在减法运算的情况下或在向上舍入的加法运算的情况下选择求和电路702的a+b+1结果。上述14位尾数示例能够支持fp20加/减运算(参见例如图3)。在该模式中,逻辑或门706可以接收无效的控制信号sc(即,信号sc可以被驱动为低),使得在求和器702的直接输入处接收的信号右”[20:1]简单地是以下的级联:(1)通过路径712的信号右'[20:6],(2)通过路径714的右'[5:2]的简单传递,以及(3)通过路径716的右'[20:1]的lsb,其用作专用粘接位。
[0066]
当支持诸如10位尾数的较小尾数时(参见例如图3中的fp16),在左对齐的10位尾数和右对齐的粘接位之间将存在四个(即,14减10)无关位。在该模式中,可以使控制信号sc
有效(即,信号sc可以被驱动为高),使得在加法器702的直接输入处接收的信号右”[20:1]将是以下的级联:(1)通过路径712的信号右'[20:6],(2)通过路径714的位“1111”,以及(3)所计算的粘接位。换言之,信号右”[20:1]可以包括:前导零位“00”,后跟前导“1”,后跟10位尾数,一个保护位,一个舍入位,四个无关位(强制为高)、以及粘接位。虽然粘接位被明确地计算并且处于与之前相同的位置,但是未明确地计算保护位和舍入位。
[0067]
如该示例所示,当支持较小尾数时,较大尾数和较小尾数之间的精度差可以使用门706进行“或”运算。这样做具有将求和器702的附加“1”传播到较小尾数的lsb的效果。如果需要,可以扩展该技术以支持两种以上的不同精度。为了支持额外的较小尾数大小,可以添加额外的逻辑“或”门706以进一步在求和器702上传播进位输入“1”位。
[0068]
虽然将求和电路700和702示为单独的结构,但是可以使用其他结构和方法,例如标记前缀的加法器或复合加法器(作为示例)。用于计算至少两个不同尾数宽度的a+b+1的图7所示的示例性布置仅仅是说明性的。图8示出了通过绕过无关位来计算a+b+1的另一种合适的布置。如图8所示,求和电路702'可以分成两个部分:(1)第一求和部分800以及(2)第二求和部分802。第一求和部分800接收信号左[20:6]和右”[20:6]并输出(a+b+1)[20:6]。第二求和部分802接收信号{左[5:4],“001”}和右”[5:1]并输出(a+b+1)[5:1]。此处,到lsb的+1是通过用“001”替换左[5:1]的三个lsb而不是使用进位输入端口来实现的。
[0069]
求和电路702'还可以包括多路复用器804,多路复用器804具有耦合到求和部分802的进位输出端口808的第一输入、从右”lsb路径806接收粘接位的第二输入、接收控制信号sc的控制输入、以及向求和部分800的进位输入端口810馈送的输出。以此方式配置,当支持14位的较大尾数宽度时(例如,在当信号sc被驱动为低时的第一模式中),来自求和部分802的进位输出被路由到求和部分800的进位输入,而当支持10位的较小尾数宽度时(例如,在当信号sc被驱动为高时的第二模式中),粘接位通过路径806馈送到求和部分800的进位输入。粘接位应始终是信号右”的lsb。以这种方式将粘接位直接馈送到求和部分800提供了与从lsb到期望位位置行波传送“1”相同的功能。
[0070]
图9是示出根据实施例的如何使用lsb选择电路900生成lsb-保护-舍入-粘接(lgrs)位的电路图。对于所有尾数精度,粘接位始终相同,其始终设置为右'[1]位,如lsb路径908所示。当前尾数lsb(l)、保护(g)位和舍入(r)位可以分别使用多路复用器902、904和906从它们各自的位置多路复用。例如,当支持fp20(或尾数宽度为14位的任何其他fp算法)时,lgr位可被设置为等于右'[4:2],或者当支持fp16(或尾数宽度为10位的任何其他fp算法)时,lgr位可被设置为右'[8:6]。四位lgrs信号可用于舍入目的。通过增加额外的多路复用能力以从其他位位置选择lgr位,可以进一步扩展该方法以支持其他尾数宽度。
[0071]
仍然参考图9,lsb选择电路900还可以包括求和电路910,其在反相端口912处接收lgrs位的反相版本并接收“1”,从而输出lgrs位的负版本(neg_lgrs)。信号neg_lgrs可以等于原始lgrs位的二的补码版本。
[0072]
如前所述,尾数是左对齐的。必须测试由于尾数是左对齐的而始终在相同位置的尾数的三个msb位以检查范围是大于或等于2,小于2,大于或等于1,还是小于1。因此,处理msb所需的唯一逻辑是两位n:1多路复用器(其中n是唯一尾数精度的总数)和m个逻辑或门(其中m等于最大和最小的尾数之间的精度差)。这种在msb上对准尾数的方法意味着近路径在所有情况下都是相同的,因此近路径不需要任何多路复用来在近路径计算之前、期间或
之后定位尾数。
[0073]
图10a是示出如何做出舍入决策的视图。如图10a所示,电路1000可以包括第一舍入确定电路1002和第二舍入确定电路1004。第一舍入确定电路1002可以接收lgrs位(例如,从图9的lsb选择电路900输出的四位)和a+b的msb,以输出第一个舍入控制信号round_add。第二舍入确定电路1004可以接收负lgrs位neg_lgrs和a+b+1的第二msb,以输出第二舍入控制信号round_subtract。舍入的尾数结果仅取自a+b+1。在加法运算的情况下,信号round_add的极性将确定结果是未舍入的(来自a+b)还是舍入的(a+b+1)。在减法运算的情况下,信号round_subtract的极性将确定结果是未舍入的(来自a+b)还是舍入的(a+b+1)。多路复用器1006将根据当前运算是加法还是减法,选择性地将信号round_add和round_subtract之一输出到其输出。
[0074]
减法舍入还有一种特殊情况,它只影响结果的lsb。图10b是根据实施例的说明性lsb翻转确定电路1008的视图。如图10b所示,减法舍入可以基于a+b+1的第二msb、信号neg_lgrs和补码信号。如果相对应的输出为高,则可以翻转lsb并且可以使用二的补码表示。如果相应的输出为低,则lsb可以保持不变。
[0075]
图11是根据实施例的说明性补码信号生成电路1100的视图。如图11所示,电路1100可以包括第一逻辑与门1102、第二逻辑与门1104、多路复用电路1106和逻辑门1108。当支持fp20(或尾数宽度为14位的任何其他fp算法)时,门1102可用于将右'[3:1]位与运算在一起,而当支持fp16(或尾数宽度为10位任何其他fp算法)时,门1104可用于将右'[7,6,1]位与运算在一起。取决于当前正在支持哪种模式,多路复用器1106可以将与运算输出之一转发到门1108。门1108还可以接收符号分量。取决于多路复用器1106的输出和符号分量的极性,可以选择性地使最终补码控制信号有效(以指示二的补码表示)或无效(以指示存在普通正数)。图11中的电路1100仅包括两个不同的与门以支持fp20和fp16的配置仅仅是说明性的。如果需要,可以添加附加逻辑与门并可以使用大型多路复用器1106来支持三个或更多个尾数宽度、四个或更多个尾数宽度、五个或更多个尾数宽度等。
[0076]
图9-11的实施例与图5-8的实施例不相互排斥。实际上,图5-11中所示的电路可以全部包括在多精度浮点加法器的单个实施例中。
[0077]
到目前为止已经关于集成电路描述了实施例。本文描述的方法和装置可以结合到任何合适的电路中。例如,它们可以结合到许多类型的器件中,例如可编程逻辑器件、专用标准产品(assp)和专用集成电路(asic)。可编程逻辑器件的示例包括可编程阵列逻辑(pal)、可编程逻辑阵列(pla)、现场可编程逻辑阵列(fpla)、电可编程逻辑器件(epld)、电可擦除可编程逻辑器件(eepld)、逻辑单元阵列(lca)、复杂可编程逻辑器件(cpld)和现场可编程门阵列(fpga),仅举几例。
[0078]
在本文的一个或多个实施例中描述的可编程逻辑器件可以是数据处理系统的一部分,该数据处理系统包括以下组件中的一个或多个:处理器;存储器;i/o电路;和外围设备。数据处理可用于各种各样的应用,例如计算机网络、数据网络、仪器、视频处理、数字信号处理,或任何合适的其他应用,其中期望使用可编程或可重新编程逻辑的优点。可编程逻辑器件可用于执行各种不同的逻辑功能。例如,可编程逻辑器件可以配置为与系统处理器协同工作的处理器或控制器。可编程逻辑器件还可以用作仲裁器,用于仲裁对数据处理系统中的共享资源的访问。在又一示例中,可编程逻辑器件可以被配置为处理器与系统中的
其他组件之一之间的接口。在一个实施例中,可编程逻辑器件可以是altera/intel公司拥有的一系列器件之一。
[0079]
示例:
[0080]
以下示例涉及进一步实施例。
[0081]
示例1是一种集成电路,包括:浮点加法器,其接收第一数和第二数,每个数具有尾数和指数,其中,所述浮点加法器包括:尾数对准电路;以及加法电路,其中,尾数对准电路和加法电路可在支持第一尾数大小的第一模式下操作,并且还可在支持与第一尾数大小不同的第二尾数大小的第二模式下操作。
[0082]
示例2是示例1的集成电路,其中,所述尾数对准电路可选地包括产生移位的尾数的右移位器。
[0083]
示例3是示例2的集成电路,其中,所述尾数对准电路可选地还包括选择性地使移位的尾数通过的选通电路。
[0084]
示例4是示例3的集成电路,其中,所述尾数对准电路可选地还包括控制选通电路的比较电路,并且其中,所述比较电路选择性地指示选通电路仅输出零位。
[0085]
示例5是示例4的集成电路,其中,所述尾数对准电路可选地还包括最大移位查找表(lut)电路,所述最大移位查找表电路根据第一数和第二数的尾数的大小输出最大移位值,并且其中,比较电路将最大移位值与指数的差进行比较。
[0086]
示例6是示例5的集成电路,其中,最大移位lut电路可选地在第一模式期间输出第一最大移位值,并且在第二模式期间输出与第一最大移位值不同的第二最大移位值。
[0087]
示例7是示例2的集成电路,其中,右移位器可选地包括:多路复用级链;第一逻辑或门,其耦合到链中的每个多路复用级并产生第一输出信号;以及第二逻辑或门,其从链中的最后一个多路复用级接收至少一些最低有效位并产生第二输出信号,其中,第二输出信号仅在第二模式期间选择性地与第一输出信号组合。
[0088]
示例8是示例1-7中任一项的集成电路,其中,所述加法电路可选地包括:第一求和电路,其输出和;第二求和电路,其输出增量和;以及逻辑或门,其向第二求和电路馈送,并在第一模式期间接收失效的控制信号,并在第二模式期间接收生效的控制信号。
[0089]
示例9是示例8的集成电路,其中,第二求和电路可选地具有接收逻辑“1”的进位输入端口。
[0090]
示例10是示例1的集成电路,其中,所述加法电路可选地包括:第一求和电路,其输出和;以及第二求和电路,其输出增量和,其中,第二求和电路包括:第一求和段;第二求和段;以及多路复用电路,其从第二求和段接收进位输出信号,并选择性地将进位输出信号和粘接位中所选择的一个路由到第一求和段的进位输入端口。
[0091]
示例11是一种操作集成电路上的浮点加法器的方法,其中,该方法包括:接收各自具有尾数和指数的第一数和第二数;当指数的差等于或小于预定阈值时,将第一数和第二数路由到近路径;当指数的差超过预定阈值时,将第一数和第二数路由到远路径;以第一模式操作浮点加法器以支持用于第一数和第二数的第一尾数大小;以及以第二模式操作浮点加法器以支持与第一尾数大小不同的第二尾数大小。
[0092]
示例12是示例11的方法,可选地还包括:在第一模式和第二模式期间左对齐第一数和第二数的尾数。
[0093]
示例13是示例11的方法,可选地还包括:在第一模式和第二模式期间右对齐用于第一数和第二数的粘接位。
[0094]
示例14是示例11-13中任一项的方法,可选地还包括:确定用于第一模式的第一最大尾数移位量;以及确定用于第二模式的与第一最大尾数移位量不同的第二最大尾数移位量。
[0095]
示例15是示例11的方法,可选地还包括:通过在第一模式期间组合第二数中的第一数量的最低有效位(lsb)来生成粘接位;以及通过在第二模式期间组合第二数中的与第一数量不同的第二数量的lsb来生成粘接位。
[0096]
示例16是一种用于将第一和第二浮点数加在一起的浮点加法器电路,每个浮点数具有尾数和指数,所述浮点加法器电路包括:固定路径,其传送用于第二浮点数的粘接位;以及第一多路复用器,其包括:第一输入,其在第一模式期间从第二浮点数的尾数中的第一位位置接收位,以支持用于第一和第二浮点数的第一尾数大小;第二输入,其在第二模式期间从第二浮点数的尾数中的第二位位置接收位,以支持用于第一和第二浮点数的不同于第一尾数大小的第二尾数大小;以及输出,在所述输出处提供舍入位。
[0097]
示例17是示例16的浮点加法器电路,可选地还包括:第二多路复用器,其包括:第一输入,其在第一模式期间从第二浮点数的尾数中的第三位位置接收位;第二输入,其在第二模式期间从第二浮点数的尾数中的第四位位置接收位;以及输出,在所述输出处提供保护位。
[0098]
示例18是示例17的浮点加法器电路,可选地还包括:第三多路复用器,其包括:第一输入,其在第一模式期间从第二浮点数的尾数中的第五位位置接收位;第二输入,其在第二模式期间从第二浮点数的尾数中的第六位位置接收位;以及输出,其在所述输出处提供第二浮点数的尾数的最低有效位(lsb)。
[0099]
示例19是示例18的浮点加法器电路,可选地还包括:求和电路,其具有耦合到固定路径和第一、第二和第三多路复用器的第一反相输入以及接收逻辑1的第二输入。
[0100]
示例20是根据权利要求19所述的浮点加法器电路,可选地还包括:舍入确定电路,其接收所述粘接位、所述舍入位、所述保护位、所述第二浮点数的尾数的lsb、以及第一和第二浮点数之和的最高有效位。
[0101]
示例21是一种集成电路上的浮点加法器,包括:用于接收各自具有尾数和指数的第一数和第二数的模块;用于当指数的差等于或小于预定阈值时,将第一数和第二数路由到近路径的模块;用于当指数的差超过预定阈值时,将第一数和第二数路由到远路径的模块;用于以第一模式操作浮点加法器以支持用于第一数和第二数的第一尾数大小的模块;以及用于以第二模式操作浮点加法器以支持与第一尾数大小不同的第二尾数大小的模块。
[0102]
示例22是示例21的浮点加法器,可选地还包括:用于在第一模式和第二模式期间左对齐第一数和第二数的尾数的模块。
[0103]
示例23是示例21的浮点加法器,可选地还包括:用于在第一模式和第二模式期间右对齐用于第一数和第二数的粘接位的模块。
[0104]
示例24是示例21-23中任一项的浮点加法器,可选地还包括:用于确定用于第一模式的第一最大尾数移位量的模块;以及用于确定用于第二模式的与第一最大尾数移位量不同的第二最大尾数移位量的模块。
[0105]
示例25是示例21的浮点加法器,可选地还包括:用于通过在第一模式期间组合第二数中的第一数量的最低有效位(lsb)来生成粘接位的模块;以及用于通过在第二模式期间组合第二数中的与第一数量不同的第二数量的lsb来生成粘接位的模块。
[0106]
例如,还可以关于本文描述的方法或过程来实现上述装置的所有可选特征。前述仅仅是对本发明原理的说明,并且本领域技术人员可以进行各种修改。前述实施例可以单独实现或以任何组合实现。
技术特征:
1.一种集成电路,包括:浮点加法器,其接收第一数和第二数,每个数具有尾数和指数,其中,所述浮点加法器包括:尾数对准电路;以及加法电路,其中,所述尾数对准电路和所述加法电路能够在支持第一尾数大小的第一模式下操作,并且还能够在支持与所述第一尾数大小不同的第二尾数大小的第二模式下操作。2.根据权利要求1所述的集成电路,其中,所述尾数对准电路包括产生移位的尾数的右移位器。3.根据权利要求2所述的集成电路,其中,所述尾数对准电路还包括选择性地使所述移位的尾数通过的选通电路。4.根据权利要求3所述的集成电路,其中,所述尾数对准电路还包括控制所述选通电路的比较电路,并且其中,所述比较电路选择性地指示所述选通电路仅输出零位。5.根据权利要求4所述的集成电路,其中,所述尾数对准电路还包括最大移位查找表(lut)电路,所述最大移位查找表电路根据所述第一数和所述第二数的尾数的大小输出最大移位值,并且其中,所述比较电路将所述最大移位值与所述指数的差进行比较。6.根据权利要求5所述的集成电路,其中,所述最大移位lut电路在所述第一模式期间输出第一最大移位值,并且在所述第二模式期间输出与所述第一最大移位值不同的第二最大移位值。7.根据权利要求2所述的集成电路,其中,所述右移位器包括:多路复用级链;第一逻辑或门,其耦合到所述链中的每个多路复用级并产生第一输出信号;以及第二逻辑或门,其从所述链中的最后一个多路复用级接收至少一些最低有效位并产生第二输出信号,其中,第二输出信号仅在所述第二模式期间选择性地与所述第一输出信号组合。8.根据权利要求1-7中任一项所述的集成电路,其中,所述加法电路包括:输出和的第一求和电路;输出增量和的第二求和电路;以及逻辑或门,其向所述第二求和电路馈送,并在所述第一模式期间接收失效的控制信号,并在所述第二模式期间接收生效的控制信号。9.根据权利要求8所述的集成电路,其中,所述第二求和电路具有接收逻辑“1”的进位输入端口。10.根据权利要求1所述的集成电路,其中,所述加法电路包括:输出和的第一求和电路;以及输出增量和的第二求和电路,其中,所述第二求和电路包括:第一求和段;第二求和段;以及多路复用电路,其从所述第二求和段接收进位输出信号,并选择性地将所述进位输出信号和粘接位中所选择的一个路由到所述第一求和段的进位输入端口。
11.一种操作集成电路上的浮点加法器的方法,其中,所述方法包括:接收各自具有尾数和指数的第一数和第二数;当所述指数的差等于或小于预定阈值时,将所述第一数和所述第二数路由到近路径;当所述指数的差超过所述预定阈值时,将所述第一数和所述第二数路由到远路径;以第一模式操作所述浮点加法器以支持用于所述第一数和所述第二数的第一尾数大小;以及以第二模式操作所述浮点加法器以支持与所述第一尾数大小不同的第二尾数大小。12.根据权利要求11所述的方法,还包括:在所述第一模式和所述第二模式二者期间左对齐所述第一数和所述第二数的尾数。13.根据权利要求11所述的方法,还包括:在所述第一模式和所述第二模式二者期间右对齐用于所述第一数和所述第二数的粘接位。14.根据权利要求11-13中任一项所述的方法,还包括:确定用于所述第一模式的第一最大尾数移位量;以及确定用于所述第二模式的与所述第一最大尾数移位量不同的第二最大尾数移位量。15.根据权利要求11所述的方法,还包括:通过在所述第一模式期间组合所述第二数中的第一数量的最低有效位(lsb)来生成粘接位;以及通过在所述第二模式期间组合所述第二数中与所述第一数量不同的第二数量的lsb来生成所述粘接位。16.一种用于将第一浮点数和第二浮点数加在一起的浮点加法器电路,每个浮点数具有尾数和指数,所述浮点加法器电路包括:固定路径,其传送用于所述第二浮点数的粘接位;以及第一多路复用器,包括:第一输入,其在第一模式期间从所述第二浮点数的尾数中的第一位位置接收位,以支持用于所述第一浮点数和所述第二浮点数的第一尾数大小;第二输入,其在第二模式期间从所述第二浮点数的尾数中的第二位位置接收位,以支持用于所述第一浮点数和所述第二浮点数的不同于所述第一尾数大小的第二尾数大小;以及输出,在所述输出处提供舍入位。17.根据权利要求16所述的浮点加法器电路,还包括:第二多路复用器,包括:第一输入,其在所述第一模式期间从所述第二浮点数的尾数中的第三位位置接收位;第二输入,其在所述第二模式期间从所述第二浮点数的尾数中的第四位位置接收位;以及输出,在所述输出处提供保护位。18.根据权利要求17所述的浮点加法器电路,还包括:第三多路复用器,包括:第一输入,其在所述第一模式期间从所述第二浮点数的尾数中的第五位位置接收位;
第二输入,其在所述第二模式期间从所述第二浮点数的尾数中的第六位位置接收位;以及输出,在所述输出处提供所述第二浮点数的尾数的最低有效位(lsb)。19.根据权利要求18所述的浮点加法器电路,还包括:求和电路,其具有耦合到所述固定路径和所述第一多路复用器、第二多路复用器和第三多路复用器的第一反相输入以及接收逻辑一的第二输入。20.根据权利要求19所述的浮点加法器电路,还包括:舍入确定电路,其接收所述粘接位、所述舍入位、所述保护位、所述第二浮点数的尾数的lsb、以及所述第一浮点数和所述第二浮点数之和的最高有效位。21.一种集成电路上的浮点加法器,包括:用于接收各自具有尾数和指数的第一数和第二数的模块;用于当所述指数的差等于或小于预定阈值时,将所述第一数和所述第二数路由到近路径的模块;用于当所述指数的差超过所述预定阈值时,将所述第一数和所述第二数路由到远路径的模块;用于以第一模式操作所述浮点加法器以支持用于所述第一数和所述第二数的第一尾数大小的模块;以及用于以第二模式操作所述浮点加法器以支持与所述第一尾数大小不同的第二尾数大小的模块。22.根据权利要求21所述的浮点加法器,还包括:用于在所述第一模式和所述第二模式二者期间左对齐所述第一数和所述第二数的尾数的模块。23.根据权利要求21所述的浮点加法器,还包括:用于在所述第一模式和所述第二模式二者期间右对齐用于所述第一数和所述第二数的粘接位的模块。24.根据权利要求21-23中任一项所述的浮点加法器,还包括:用于确定用于所述第一模式的第一最大尾数移位量的模块;以及用于确定用于所述第二模式的与所述第一最大尾数移位量不同的第二最大尾数移位量的模块。25.根据权利要求21所述的浮点加法器,还包括:用于通过在所述第一模式期间组合所述第二数中的第一数量的最低有效位(lsb)来生成粘接位的模块;以及用于通过在所述第二模式期间组合所述第二数中的与所述第一数量不同的第二数量的lsb来生成所述粘接位的模块。26.一种可编程逻辑器件,包括:功能块阵列,所述功能块阵列包括多个逻辑阵列块;多个平行布线通道,所述平行布线通道中的至少一个布置在所述功能块阵列中的相邻行的逻辑阵列块之间;以及多个垂直布线通道,所述垂直布线通道中的至少一个布置在所述功能块阵列中的相邻
列的逻辑阵列块之间,其中,所述多个逻辑阵列块中的至少一个从三个侧面耦合到所述多个平行布线通道中的相应平行布线通道以及所述多个垂直布线通道中的相应垂直布线通道。27.根据权利要求26所述的可编程逻辑器件,其中,所述多个平行布线通道和所述多个垂直布线通道为可编程互连电路。28.根据权利要求27所述的可编程逻辑器件,其中,所述可编程互连电路包括双数据速率互连。29.根据权利要求27所述的可编程逻辑器件,其中,所述可编程互连电路包括单数据速率互连。30.根据权利要求26所述的可编程逻辑器件,其中,所述多个平行布线通道和所述多个垂直布线通道中的每个布线通道包括至少一个轨道以布线至少一条导线。
技术总结
集成电路可以包括支持可变精度的浮点加法器。浮点加法器可以接收要相加的第一和第二输入,其中,第一和第二输入每个都具有尾数和指数。取决于指数的差以及正在执行加法还是减法,可以使用双路径浮点加法器架构将尾数和指数值分成近路径和远路径。尾数值可以是左对齐的,而粘接位是右对齐的。最大尾数的硬件可用于支持较小尾数的计算,而不使用额外的算法结构,仅具有一些多路复用和解码逻辑。仅具有一些多路复用和解码逻辑。仅具有一些多路复用和解码逻辑。
技术研发人员:M
受保护的技术使用者:阿尔特拉公司
技术研发日:2017.08.18
技术公布日:2023/8/21
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种动柱式龙门铣床的制作方法 下一篇:差分对电路及其信号传输方法、显示面板与流程
