多级浮点累加器的制作方法

文档序号:6455684阅读:232来源:国知局
专利名称:多级浮点累加器的制作方法
技术领域
本发明大体上涉及电子装置,且更具体地说,涉及一种浮点累加器。
背景技术
在数字处理器中,可使用整数或浮点表示来表达数值数据。由于浮点表示能够表达 较广范围的值以及对于某些算术运算来说其易于操纵,所以浮点表示用于许多应用中。 浮点表示通常包含三个分量符号位(sign)、尾数(mant)(有时称作有效数)和指数 (exp)。可将浮点值表达为(-l)s^ x mant x 2exp。
浮点累加是一种算术运算,其一般经执行以用于各种应用,例如图形、数字信号处 理等。浮点累加通常需要(1)接收输入的浮点值和累加的浮点值,(2)基于所述两个 浮点值的指数而对准所述两个浮点值的尾数,(3)对所述两个对准的尾数求和,以及(4) 对结果进行后对准以实现标准化。步骤2、 3和4中的每-一者都需要一定量的时间来执 行。用于这些步骤的总时间可能限制处理器可操作的速度。

发明内容
本文描述能够以较高速度操作的多级浮点累加器。所述多级浮点累加器将用于浮点 累加的步骤分割为多个级。每一级的延迟是用于浮点累加的所有步骤的总延迟的分数。 这允许多级浮点累加器以较高的时钟速度操作。
在一实施例中,浮点累加器包括至少两个级。每一级包括功能逻辑和至少一个锁存 器以存储所述级的至少一个结果。所述浮点累加器使用来自早先至少两个时钟循环的累 加结果来对多个浮点值执行累加。
在一实施例中,所述浮点累加器包括两个级。在一实施例中,第一级包含三个ji作 数对准单元、两个多路复用器和三个锁存器。所述三个操作数对准单元对当前浮点值、 前一浮点值和来自早先两个时钟循环的前一累加值进行操作。第一多路复用器将零或前 一浮点值提供给第二操作数对准单元。第二多路复用器将零或前一累加值提供给第三操 作数对准单元。所述三个锁存器耦合到所述三个操作数对准单元。在一实施例中,第二
5级包括3操作数加法器,其对由所述三个操作数对准单元产生的操作数求和;锁存器, 其耦合到所述3操作数加法器;以及后对准单元,其耦合到所述锁存器。
所述多级浮点累加器可与乘法器组合用于执行乘法与累加(MAC)操作,其一般用 于点积、过滤等。
下文进一步详细地描述本发明的各种方面和实施例。


从下文结合图式陈述的详细描述,将更容易明白本发明的各方面和实施例,在图式 中相同的参考标号始终对应地进行识别。 图1展示单级浮点累加器。
图2和图3展示两级浮点累加器的两个实施例。 图4展示乘法与累加(MAC)单元。 图5展示图形处理器的方框图。 图6展示无线装置的方框图。
具体实施例方式
本文使用词"示范性"来意指"用作实例、例子或说明"。本文描述为"示范性" 的任何实施例或设计没有必要解释为比其它实施例或设计优选或有利。
一个级中的浮点累加可表达为 ,
玄x, =Sa:,. + a: , 对于is"N ,
'=i '=i 等式(i)
其中n为正被累加的浮点值的索引, Xn为正被累加的第n个浮点值,其中Xo二0,且 N为正被累加的浮点值的总数。 一般来说,N可为任何正整数值。 等式(1)可经改写为如下
A , +X ,对于1 ^"SN, 等式(2)
6其中An为X,到Xn的累加结果,其中Ao = 0。在己累加了所有N个浮点值X,到Xn
之后,获得最终的累加结果AN。
图1展示单级浮点累加器100的方框图。锁存器IIO接收并锁存输入浮点值(其也 称作输入操作数),并提供所锁存的值作为将要累加的当前浮点值Xn。多路复用器(Mux) 112在两个输入端上接收累加结果和零(0.0)。如果累加正开始或被停用,则多路复用 器112提供零,且如果累加正继续进行,则多路复用器112提供累加结果。多路复用器 112的输出是等式(2)中的前一累加值A^,且将要与Xn求和。
操作数对准单元120和122分别接收操作数Xn和A^。单元120和122例如通过移 位一个操作数的尾数并调整其指数直到所述两个操作数的指数相等为止来对准所述两 个操作数的尾数。2操作数加法器140接着对两个对准的尾数求和,并提供结果尾数和 指数。锁存器150接收并锁存加法器140的输出。后对准单元160在必要时移位结果尾 数并调整指数,以获得具有l.xxx--xxx格式的标准化尾数,其中每一 "x"表示一个二 进制位。单元160提供标准化尾数和指数作为累加结果。
浮点累加器100具有两个信号路径用于X。的第一信号路径和用于An_,的第二信 号路径。第一信号路径的总延迟是从锁存器IIO到锁存器150,且由操作数对准单元120 和2操作数加法器140的延迟确定。第二信号路径的总延迟是由后对准单元160、多路 复用器112、操作数对准单元122和2操作数加法器140的延迟确定。第二信号路径的 总延迟长于第一信号路径的总延迟,且确定可对锁存器IIO和150计时的速度。明确地 说,用于锁存器的时钟速度可经选择以使得每一时钟周期长于第二信号路径的总延迟。 此总延迟可能相对较长,且因此限制了浮点累加器IOO的吋钟速度。
浮点累加器100可用于可以高时钟速度操作的高性能和高速度算术逻辑单元(ALU) 中。如果无法在一个时钟周期中完成浮点累加,则可能在利用ALU的数据管线之间引 入额外的数据相依性。所述数据管线可能需要等待,直到浮点累加器IOO提供累加结果 为止。此数据相依性可影响性能,尤其是对于广泛地执行浮点累加的应用。
多级浮点累加器可用以改进操作速度。所述多级浮点累加器将用于浮点累加的步骤 分割为多个级。每一级的延迟是用于累加的所有步骤的总延迟的分数。这允许多级浮点 累加器以较高的时钟速度操作。
两个级中的浮点累加可表达为
十;^ + a:"—,, 对于i"《n ,
'=| 等式(3)
7其中A^X/ = 0。
等式(3)可经改写为如下
/1 = A -2 + X + ,对于1S"^N, 等式(4)
其中H = 0。
图2展示两级浮点累加器200的实施例的方框图。锁存器210接收并锁存输入浮点 值,并提供将要累加的当前浮点值X。。多路复用器212接收前一操作数和零,如果累加 正开始或被停用,则提供零,且如果累加正继续进行,则提供前一操作数。多路复用器 212的输出是等式(4)中的Xw,且将要与Xn求和。多路复用器214接收累加结果和 零,如果累加在上两个时钟周期内开始或被停用,则提供零,且如果累加正继续进行, 则提供累加结果。多路复用器214的输出是等式(4)中的前一累加值An—2,且将要与 X。求和。浮点累加器200是具有两个时钟循环延迟的管线。因此,来自单元260的当前 累加结果是,先两个时钟循环的前一累加值。
操作数对准单元220、 222和224分别接收操作数Xn、 和An_2。单元220、 222 和224例如通过在必要时移位一个或一个以上操作数的一个或---个以上尾数并调整其指 数直到所有三个操作数的指数相等为止来对准所述三个操作数的尾数。锁存器230、 232 和234分别接收和锁存单元220、 222和224的输出。3操作数加法器240对来自锁存器 230、 232和234的三个对准的尾数求和,并提供结果尾数和指数。锁存器250接收并锁 存加法器240的输出。后对准单元260在必要时移位结果尾数并调整指数以获得标准化 尾数。单元260提供累加结果。
浮点累加器200具有两个级。第一级可视为包含多路复用器212到锁存器234。第 二级可被认为包含3操作数加法器240、锁存器250和后对准单元260。 一般来说,每 一级包含功能逻辑和至少一个锁存器或寄存器,其可位于所述级内的任何地方。锁存器 用以存储所述级的中间和/或最终结果。每一级在每一时钟周期中经更新。
浮点累加器200具有三个信号路径用于Xn的第一信号路径、用于Xn_,的第二信 号路径和用于Aw的第三信号路径。第一信号路径被分割为两个段(1)第一段,其从 锁存器210到锁存器230且具有由操作数对准单元220的延迟确定的延迟;以及(2) 第二段,其从锁存器230到锁存器250且具有由3操作数加法器240的延迟确定的延迟。 第二信号路径被分割为(l)第一段,其从多路复用器212到锁存器232且具有由多路
8复用器212和操作数对准单元222的延迟确定的延迟;以及(2)第二段,其从锁存器 232到锁存器250。第三信号路径被分割为(l)第一段,其从锁存器250到锁存器234 且具有由后对准单元260、多路复用器214和操作数对准单元224的延迟确定的延迟; 以及(2)第二段,其从锁存器234到锁存器250。因此,所述三个信号路径中的每一者 都被分割为两个段。对于所有三个信号路径来说,第二段是相同的。
因此,浮点累加器200具有四个不同的段用于三个操作数的三个第一段和共同的 第二段。所有四个段的最长延迟确定可对锁存器计时的速度。此最长延迟可能远短于浮 点累加器IOO中的第二信号路径的总延迟。因此,浮点累加器200可以高于浮点累加器 100的时钟速度操作。
表1展示用于累加N个浮点值X,到XN的锁存器210、多路复用器212和214以及 后对准单元260的输出。锁存器210为时钟循环1到N中的每一者提供当前浮点值。多 路复用器212为时钟循环1提供零,且为时钟循环2到N中的每一者提供前一浮点值。 多路复用器214为时钟循环1和2中的每一者提供零,且为时钟循环3到N中的每一者 提供前一累加值。对于时钟循环3以及随后的时钟循环,单元260的输出在同一时钟循 环中出现于多路复用器214的输出端处。表1中的"-"表示"无关"且可为任何值。
表1
时钟循环锁存器210 输出多路复用器 212输出多路复用器 214输出后对准单元260输出
100—
2X/0—
3X2A;
4X3A2
5x4A3
:
&A —2 = d + 12 + Xn—3
NXn-i= An—4 + Xn—2 + Xn—3
N+l---An—i = An—3 + Xn-i + Xn—2
N+2---An = AN-2 + XN + Xn-i
如图2和表1中所示,浮点累加器200是具有两个时钟循环延迟的管线。在将最后 的浮点值XN提供给浮点累加器200之后两个时钟循环获得最终结果AN。
浮点累加器200使用来自甲.先两个时钟循环的累加结果An—2。这允许将用于累加结 果的信号路径分割为具有较小延迟的两个段。此分割还导致浮点累加器200使用3操作 数加法器240,所述3操作数加法器240具有比图1中的2操作数加法器140略长的延
9迟。尽管如此,浮点累加器200可以较高的速度操作。
可通过特定实例说明时钟速度中的可能改进。在此实例中,在浮点累加器100和200 内,多路复用器112和214可具有0.2毫微秒(ns)的延迟,操作数对准单元122和224 可具有1.0 ns的延迟,2操作数加法器140可具有2.0 ns的延迟,3操作数加法器240 可具有2.4ns的延迟,且后对准单元160和260可具有l.Ons的延迟。对于浮点累加器 100,用于A^的信号路径具有4.2 ns的总延迟,且累加器100可以高达238兆赫兹(MHz) 的时钟速度操作。对于浮点累加器200,第一段的延迟为2.2ns,且第二段的延迟为2.4 ns。浮点累加器200于是可以高达416MHz的时钟速度操作。改进的量对于其它设计可 能有所不同。
图2展示分割用于累加结果的第三信号路径的特定实施例。也可以其它方式来分割 第三信号路径。举例来说,锁存器250可位于后对准单元260之后(作为在其之前的替 代)。第一段于是将包含多路复用器214和操作数对准单元224,且第二段将包含3操作 数加法器240和后对准单元260。 一般来说,第三信号路径可经分割以使得所述两个段 在延迟方面尽可能匹配,使得所述两个段的延迟之间的差异尽可能小。
图3展示两级浮点累加器300的实施例的方框图。除了多路复用器212和214之外, 浮点累加器300包含图2中的浮点累加器200的所有单元。将锁存器230的输出直接提 供到操作数对准单元222。将后对准单元260的输出肓接提供到操作数对准单元224。 锁存器230、 232、 234和250接收复位信号,其在开始累加时将这些锁存器复位到零。 此实施例移除了多路复用器212和214以及这些多路复用器的相关联延迟,这可允许浮 点累加器300以较高时钟速度操作。
可结合其它功能来执行浮点累加。举例来说,乘法与累加(MAC)操作一般用于各 种应用。两个级中的乘法与累加可表达为
t(C,..D,) = |^ =&,+};+1;,,对于1S"N ,
'=' '=1 等式(5)
其中y, = C, . A.,且C,和A是将要相乘和累加的第i对浮点操作数。 等式(5)可经改写为如下
4 =人—2 + y + JV/,对于1 S"^N。 等式(6)
10图4展示MAC单元400的实施例的方框图。MAC单元400包含2操作数乘法器 208和两级浮点累加器200。乘法器208接收将要相乘和累加的两个操作数,将所述两 个操作数相乘,且将结果提供给锁存器210。浮点累加器200对来自锁存器210的结果 执行累加,如上文针对图2所描述。
MAC单元400可用于各种应用,例如图形、数字信号处理等。MAC单元400可用 以执行两个浮点值序列(C,, C2, ...,Cn)和(Z),, Z)2, ..., Dr^的点积,如下4:d.Z), + C 2.D2 + ...+CN'DN。点积广泛用于过滤、相关、图形中碰撞物体的物理计算等。MAC单元400 也可用于以一标量縮放浮点值序列,并累加经縮放值的序列。
也可与其它功能组合执行累加。举例来说,可用标量乘法器、加法器、除法器、初 等函数、移位器等来取代乘法器208。
也可在两个以上级中执行浮点累加。举例来说,三级浮点累加可表达为
t夂,2 , 对于1S"N ,
'=' 等式(7)
等式(7)可经改写为如下
A = + X + 2,对于1^"SN, 等式(8)
其中A0 = /L/ = A-2 = 0。
等式(7)和(8)使用来自早先三个时钟循环的累加结果An—3。这允许将用于累加 结果的信号路径分割为具有较小延迟的三个段。举例来说,可在图2中的后对准单元260 之后插入额外的锁存器。用于累加结果的第三信号路径于是可分割为三个段,且浮点累 加器可以甚至更高的时钟速度操作。4操作数加法器可用以对等式(8)中的四个操作数 求和。
本文所描述的多级浮点累加器可用于各种类型的处理器,例如处理器(例如,着色 器)、图形处理单元(GPU)、数字信号处理器(DSP)、精简指令集计算机(RISC)、高 级RISC机器(ARM)等。下文描述多级浮点累加器用-r图形处理器和无线装置的不范 性用途。
图5展示支持L个图形应用/程序的图形处理器500的实施例的方框图,其中一般
11来说,L^l。所述L个图形应用可用于视频游戏、图形等,且可同时运行。图形处理器 500包含着色器核心502、纹理引擎504和高速缓冲存储器系统506。着色器核心502可 执行例如着色等图形操作,所述着色为涉及照明、遮蔽等的高度复杂的图形操作。纹理 引擎504可执行例如纹理映射等图形操作。通过使用纹理表/图像的色彩来修改图像的像 素的色彩而实现纹理化。高速缓冲存储器系统506可包含一个或一个以上高速缓冲存储 器,其为可存储用于着色器核心502和纹理引擎504的数据和指令的快速存储器。
在着色器核心502内,多路复用器510从L个图形应用接收线程,且将这些线程提 供给线程调度器512。线程调度器512执行各种功能来调度和管理线程的执行。指令高 速缓冲存储器514存储用于线程的指令。这些指令指示将要针对每一线程执行的特定操 作,且可从高速缓冲存储器系统506和/或主存储器加载。ALU516执行算术运算、逻辑 运算、格式转换等。ALU516可实施一个或一个以上多级浮点累加器(Acc)。常数缓冲 器518存储由ALU 516使用的常数值。加载控制单元520控制用于着色器核心502内的 各种单元的数据和指令流。输出缓冲器5 22存储来自ALU 516和544的中间和最终结果。 多路分用器(Demux) 524从输出缓冲器522接收所执行线程的最终结果,且将这些结 果提供给图形应用。
在纹理引擎504内,纹理地址产生器540计算将要由纹理引擎504对其进行操作的 每一像素的位置。纹理高速缓冲存储器542存储用于纹理引擎504的像素。ALU 544对 像素执行计算,且提供中间结果,所述中间结果可被存储回到输出缓冲器522中。ALU 544还可实施一个或一个以上多级浮点累加器。
图6展示无线通信系统中的无线装置600的实施例的方框图。无线装置600可为蜂 窝式电话、终端、手持机、个人数字助理(PDA)或某种其它装置。无线通信系统可为 码分多址(CDMA)系统、全球移动通信系统(GSM)系统或某种其它系统。
无线装置600能够经由接收路径和传输路径提供双向通信。在接收路径上,由天线 612接收由基站传输的信号,且将其提供给接收器(RCVR) 614。接收器614调节并数 字化所接收的信号,且将样本提供给数字区段620以供进一步处理。在传输路径上,传 输器(TMTR) 616接收将要从数字区段620传输的数据,处理并调节所述数据,且产 生经调制信号,所述经调制信号经由天线612传输到基站。
数字区段620包含各种处理、接口和存储器单元,例如调制解调器处理器622、视 频处理器624、控制器/处理器626、显示处理器628、 ARM/DSP632、图形处理器634、 内部存储器636和外部总线接口 (EBI) 638。调制解调器处理器622执行用于数据传输 和接收的处理(例如,编码、调制、解调和解码)。视频处理器624对视频内容(例如,
12静态图像、移动视频和移动文本)执行处理以用于视频应用,例如摄像机、视频回放和 视频会议。控制器/处理器626可引导数字区段620内的各种处理和接口单元的操作。显 示处理器628执行处理以促进视频、图形和文本在显示单元630上显示。
ARM/DSP632可执行用于无线装置600的各种类型的处理。图形处理器634执行图 形处理。处理器622到634可每一者实施一个或一个以上多级浮点累加器。内部存储器 636存储用于数字区段620内的各种单元的数据和/或指令。EBI 638促进数据在数字区 段620 (例如,内部存储器636)与主存储器640之间传送。
可使用 一个或一个以上DSP、微处理器、RISC等来实施数字区段620。也可在一个 或一个以上专用集成电路(ASIC)或某种其它类型的集成电路(IC)上制造数字区段 620。
本文所描述的多级浮点累加器可实施于各种硬件单元中。举例来说,浮点累加器可 实施于ASIC、 DSP、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编 程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、电T装置和其它电子单元屮。
提供所揭示实施例的先前描述以使得所属领域的技术人员能够制作或使用本发明。 所属领域的技术人员将容易明白对这些实施例的各种修改,且在不脱离本发明的精神或 范围的情况下,本文所界定的一般原理可应用于其它实施例。因此,不希望将本发明限 于本文所示的实施例,而是本发明应符合与本文所揭示的原理和新颖特征相一致的最广 泛范围。
1权利要求
1. 一种处理器,其包括浮点累加器,其操作以对多个浮点值执行累加,且包括至少两个级,每一级包括至少一个锁存器,所述锁存器操作以存储所述级的至少一个结果。
2. 根据权利要求1所述的处理器,其中所述浮点累加器操作以使用来自甲.先至少两个 时钟循环的累加结果来执行累加。 '
3. 根据权利要求1所述的处理器,其中所述浮点累加器是具有两个级的管线,且具有 两个时钟循环的延迟。
4. 根据权利要求1所述的处理器,其中所述浮点累加器包括第一操作数对准单元,其用于当前浮点值, 第二操作数对准单元,其用于前一浮点值,以及 第三操作数对准单元,其用于前一累加值。
5. 根据权利要求4所述的处理器,其中所述浮点累加器进一步包括第一多路复用器,其操作以将零或所述前一浮点值提供给所述第二操作数对准单 元,以及第二多路复用器,其操作以将零或所述前一累加值提供给所述第三操作数对准单元。
6. 根据权利要求4所述的处理器,其中所述浮点累加器进一步包括第一、第二和第三锁存器,其分别耦合到所述第一、第二和第三操作数对准单元。
7. 根据权利要求4所述的处理器,其中所述浮点累加器进一步包括3操作数加法器,其操作以对由所述第一、第二和第三操作数对准单元产生的操 作数求和。
8. 根据权利要求1所述的处理器,其中所述浮点累加器进一步包括3操作数加法器,其操作以对当前浮点值、前一浮点值和前一累加值求和。
9. 根据权利要求8所述的处理器,其中所述浮点累加器进一步包括锁存器,其耦合到所述3操作数加法器,以及 后对准单元,其耦合到所述锁存器。
10. 根据权利要求l所述的处理器,其进一步包括乘法器,其操作以将输入操作数相乘,且将所述多个浮点值提供给所述浮点累加 器。
11. 根据权利要求IO所述的处理器,其中所述乘法器和所述浮点累加器操作以将两个 操作数序列相乘并累加。
12. —种集成电路,其包括浮点累加器,其操作以对多个浮点值执行累加,且包括至少两个级,每一级包括 至少一个锁存器,所述锁存器操作以存储所述级的至少一个结果。
13. 根据权利要求12所述的集成电路,其中所述浮点累加器操作以使用来自,先至少 两个时钟循环的累加结果来执行累加。
14. 根据权利要求12所述的集成电路,其中所述浮点累加器包括第一操作数对准单元,其用于当前浮点值, 第二操作数对准单元,其用于前一浮点值,以及 第三操作数对准单元,其用于前一累加值。
15. 根据权利要求14所述的集成电路,其中所述浮点累加器进一步包括3操作数加法器,其操作以对由所述第一、第二和第三操作数对准单元产生的操 作数求和。
16. 根据权利要求15所述的集成电路,其中所述浮点累加器进一步包括第四锁存器,其耦合到所述3操作数加法器,以及 后对准单元,其耦合到所述第四锁存器。
17.根据权利要求12所述的集成电路,其进一步包括:乘法器,其操作以将输入操作数相乘,且将所述多个浮点值提供给所述浮点累加器。
18. —种图形处理器,其包括至少一个算术逻辑单元(ALU),每一 ALU包括一浮点累加器,所述浮点累加器 操作以对多个浮点值执行累加且包括至少两个级;以及 存储器,其耦合到所述ALU。
19. 根据权利要求18所述的图形处理器,其中所述浮点累加器包括第一操作数对准单元,其用于当前浮点值, 第二操作数对准单元,其用于前一浮点值, 第三操作数对准单元,其用于前一累加值,以及3操作数加法器,其操作以对由所述第一、第二和第三操作数对准单元产生的操 作数求和。
20. 根据权利要求18所述的图形处理器,其中每一ALU进一步包括乘法器,其操作以将输入操作数相乘,且将所述多个浮点值提供给所述浮点累加 器。
21. 根据权利要求18所述的图形处理器,其进一步包括着色器核心,其操作以执行图形操作,且包括第一ALU。
22. 根据权利要求21所述的图形处理器,其进一步包括纹理引擎,其操作以执行纹理映射,且包括第二ALU。
23. —种无线装置,其包括图形处理器,其包括浮点累加器,所述浮点累加器操作以对多个浮点值执行累加 且包括至少两个级;以及存储器,其耦合到所述图形处理器。
全文摘要
本发明提供一种多级浮点累加器,其包含至少两个级且能够以较高速度操作。在一种设计中,所述浮点累加器包含第一级和第二级。所述第一级包含三个操作数对准单元、两个多路复用器和三个锁存器。所述三个操作数对准单元对当前浮点值、前一浮点值和前一累加值进行操作。第一多路复用器将零或所述前一浮点值提供给第二操作数对准单元。第二多路复用器将零或所述前一累加值提供给第三操作数对准单元。所述三个锁存器耦合到所述三个操作数对准单元。所述第二级包含用以对由所述三个操作数对准单元产生的操作数求和的3操作数加法器、锁存器和后对准单元。
文档编号G06F7/509GK101506771SQ200780030329
公开日2009年8月12日 申请日期2007年8月17日 优先权日2006年8月18日
发明者春 于, 云 杜, 焦国方 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1