CN101506771B - 多级浮点累加器 - Google Patents
多级浮点累加器 Download PDFInfo
- Publication number
- CN101506771B CN101506771B CN2007800303290A CN200780030329A CN101506771B CN 101506771 B CN101506771 B CN 101506771B CN 2007800303290 A CN2007800303290 A CN 2007800303290A CN 200780030329 A CN200780030329 A CN 200780030329A CN 101506771 B CN101506771 B CN 101506771B
- Authority
- CN
- China
- Prior art keywords
- floating
- operand
- accumulator
- point values
- floating point
- 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.)
- Expired - Fee Related
Links
Images
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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/509—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
- G06F7/5095—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators word-serial, i.e. with an accumulator-register
-
- 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
-
- 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/509—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
-
- 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
-
- 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/49936—Normalisation mentioned as feature only
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Secondary Cells (AREA)
- Telephone Function (AREA)
Abstract
本发明提供一种多级浮点累加器,其包含至少两个级且能够以较高速度操作。在一种设计中,所述浮点累加器包含第一级和第二级。所述第一级包含三个操作数对准单元、两个多路复用器和三个锁存器。所述三个操作数对准单元对当前浮点值、前一浮点值和前一累加值进行操作。第一多路复用器将零或所述前一浮点值提供给第二操作数对准单元。第二多路复用器将零或所述前一累加值提供给第三操作数对准单元。所述三个锁存器耦合到所述三个操作数对准单元。所述第二级包含用以对由所述三个操作数对准单元产生的操作数求和的3操作数加法器、锁存器和后对准单元。
Description
技术领域
本发明大体上涉及电子装置,且更具体地说,涉及一种浮点累加器。
背景技术
在数字处理器中,可使用整数或浮点表示来表达数值数据。由于浮点表示能够表达较广范围的值以及对于某些算术运算来说其易于操纵,所以浮点表示用于许多应用中。浮点表示通常包含三个分量:符号位(sign)、尾数(mant)(有时称作有效数)和指数(exp)。可将浮点值表达为(-1)sign×mant×2exp。
浮点累加是一种算术运算,其一般经执行以用于各种应用,例如图形、数字信号处理等。浮点累加通常需要(1)接收输入的浮点值和累加的浮点值,(2)基于所述两个浮点值的指数而对准所述两个浮点值的尾数,(3)对所述两个对准的尾数求和,以及(4)对结果进行后对准以实现标准化。步骤2、3和4中的每一者都需要一定量的时间来执行。用于这些步骤的总时间可能限制处理器可操作的速度。
发明内容
本文描述能够以较高速度操作的多级浮点累加器。所述多级浮点累加器将用于浮点累加的步骤分割为多个级。每一级的延迟是用于浮点累加的所有步骤的总延迟的分数。这允许多级浮点累加器以较高的时钟速度操作。
在一实施例中,浮点累加器包括至少两个级。每一级包括功能逻辑和至少一个锁存器以存储所述级的至少一个结果。所述浮点累加器使用来自早先至少两个时钟循环的累加结果来对多个浮点值执行累加。
在一实施例中,所述浮点累加器包括两个级。在一实施例中,第一级包含三个操作数对准单元、两个多路复用器和三个锁存器。所述三个操作数对准单元对当前浮点值、前一浮点值和来自早先两个时钟循环的前一累加值进行操作。第一多路复用器将零或前一浮点值提供给第二操作数对准单元。第二多路复用器将零或前一累加值提供给第三操作数对准单元。所述三个锁存器耦合到所述三个操作数对准单元。在一实施例中,第二级包括:3操作数加法器,其对由所述三个操作数对准单元产生的操作数求和;锁存器,其耦合到所述3操作数加法器;以及后对准单元,其耦合到所述锁存器。
所述多级浮点累加器可与乘法器组合用于执行乘法与累加(MAC)操作,其一般用于点积、过滤等。
下文进一步详细地描述本发明的各种方面和实施例。
附图说明
从下文结合图式陈述的详细描述,将更容易明白本发明的各方面和实施例,在图式中相同的参考标号始终对应地进行识别。
图1展示单级浮点累加器。
图2和图3展示两级浮点累加器的两个实施例。
图4展示乘法与累加(MAC)单元。
图5展示图形处理器的方框图。
图6展示无线装置的方框图。
具体实施方式
本文使用词“示范性”来意指“用作实例、例子或说明”。本文描述为“示范性”的任何实施例或设计没有必要解释为比其它实施例或设计优选或有利。
一个级中的浮点累加可表达为:
等式(1)
其中n为正被累加的浮点值的索引,
Xn为正被累加的第n个浮点值,其中X0=0,且
N为正被累加的浮点值的总数。
一般来说,N可为任何正整数值。
等式(1)可经改写为如下:
An=An-1+Xn,对于1≤n≤N, 等式(2)
其中An为X1到Xn的累加结果,其中A0=0。在已累加了所有N个浮点值X1到Xn之后,获得最终的累加结果AN。
图1展示单级浮点累加器100的方框图。锁存器110接收并锁存输入浮点值(其也称作输入操作数),并提供所锁存的值作为将要累加的当前浮点值Xn。多路复用器(Mux)112在两个输入端上接收累加结果和零(0.0)。如果累加正开始或被停用,则多路复用器112提供零,且如果累加正继续进行,则多路复用器112提供累加结果。多路复用器112的输出是等式(2)中的前一累加值An-1,且将要与Xn求和。
操作数对准单元120和122分别接收操作数Xn和An-1。单元120和122例如通过移位一个操作数的尾数并调整其指数直到所述两个操作数的指数相等为止来对准所述两个操作数的尾数。2操作数加法器140接着对两个对准的尾数求和,并提供结果尾数和指数。锁存器150接收并锁存加法器140的输出。后对准单元160在必要时移位结果尾数并调整指数,以获得具有1.xxx--xxx格式的标准化尾数,其中每一“x”表示一个二进制位。单元160提供标准化尾数和指数作为累加结果。
浮点累加器100具有两个信号路径:用于Xn的第一信号路径和用于An-1的第二信号路径。第一信号路径的总延迟是从锁存器110到锁存器150,且由操作数对准单元120和2操作数加法器140的延迟确定。第二信号路径的总延迟是由后对准单元160、多路复用器112、操作数对准单元122和2操作数加法器140的延迟确定。第二信号路径的总延迟长于第一信号路径的总延迟,且确定可对锁存器110和150计时的速度。明确地说,用于锁存器的时钟速度可经选择以使得每一时钟周期长于第二信号路径的总延迟。此总延迟可能相对较长,且因此限制了浮点累加器100的时钟速度。
浮点累加器100可用于可以高时钟速度操作的高性能和高速度算术逻辑单元(ALU)中。如果无法在一个时钟周期中完成浮点累加,则可能在利用ALU的数据管线之间引入额外的数据相依性。所述数据管线可能需要等待,直到浮点累加器100提供累加结果为止。此数据相依性可影响性能,尤其是对于广泛地执行浮点累加的应用。
多级浮点累加器可用以改进操作速度。所述多级浮点累加器将用于浮点累加的步骤分割为多个级。每一级的延迟是用于累加的所有步骤的总延迟的分数。这允许多级浮点累加器以较高的时钟速度操作。
两个级中的浮点累加可表达为:
等式(3)
其中X0=X-1=0。
等式(3)可经改写为如下:
An=An-2+Xn+Xn-1,对于1≤n≤N, 等式(4)
其中A0=A-1=0。
图2展示两级浮点累加器200的实施例的方框图。锁存器210接收并锁存输入浮点值,并提供将要累加的当前浮点值Xn。多路复用器212接收前一操作数和零,如果累加正开始或被停用,则提供零,且如果累加正继续进行,则提供前一操作数。多路复用器212的输出是等式(4)中的Xn-1,且将要与Xn求和。多路复用器214接收累加结果和零,如果累加在上两个时钟周期内开始或被停用,则提供零,且如果累加正继续进行,则提供累加结果。多路复用器214的输出是等式(4)中的前一累加值An-2,且将要与Xn求和。浮点累加器200是具有两个时钟循环延迟的管线。因此,来自单元260的当前累加结果是早先两个时钟循环的前一累加值。
操作数对准单元220、222和224分别接收操作数Xn、Xn-1和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-1的第二信号路径和用于An-2的第三信号路径。第一信号路径被分割为两个段:(1)第一段,其从锁存器210到锁存器230且具有由操作数对准单元220的延迟确定的延迟;以及(2)第二段,其从锁存器230到锁存器250且具有由3操作数加法器240的延迟确定的延迟。第二信号路径被分割为:(1)第一段,其从多路复用器212到锁存器232且具有由多路复用器212和操作数对准单元222的延迟确定的延迟;以及(2)第二段,其从锁存器232到锁存器250。第三信号路径被分割为:(1)第一段,其从锁存器250到锁存器234且具有由后对准单元260、多路复用器214和操作数对准单元224的延迟确定的延迟;以及(2)第二段,其从锁存器234到锁存器250。因此,所述三个信号路径中的每一者都被分割为两个段。对于所有三个信号路径来说,第二段是相同的。
因此,浮点累加器200具有四个不同的段:用于三个操作数的三个第一段和共同的第二段。所有四个段的最长延迟确定可对锁存器计时的速度。此最长延迟可能远短于浮点累加器100中的第二信号路径的总延迟。因此,浮点累加器200可以高于浮点累加器100的时钟速度操作。
表1展示用于累加N个浮点值X1到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输出 | |
1 | X1 | 0 | 0 | - | |
2 | X2 | X1 | 0 | - | |
3 | X3 | X2 | A1 | A1=X1 | |
4 | X4 | X3 | A2 | A2=X2+X1 | |
5 | X5 | X4 | A3 | A3=A1+X3+X2 | |
... | ... | ... | ... | ... | |
n | Xn | Xn-1 | An-2 | An-2=An-4+Xn-2+Xn-3 | |
... | ... | ... | ... | ... | |
N | XN | XN-1 | AN-2 | AN-2=AN-4+XN-2+XN-3 | |
N+1 | - | - | - | AN-1=AN-3+XN-1+XN-2 | |
N+2 | - | - | - | AN=AN-2+XN+XN-1 |
如图2和表1中所示,浮点累加器200是具有两个时钟循环延迟的管线。在将最后的浮点值XN提供给浮点累加器200之后两个时钟循环获得最终结果AN。
浮点累加器200使用来自早先两个时钟循环的累加结果An-2。这允许将用于累加结果的信号路径分割为具有较小延迟的两个段。此分割还导致浮点累加器200使用3操作数加法器240,所述3操作数加法器240具有比图1中的2操作数加法器140略长的延迟。尽管如此,浮点累加器200可以较高的速度操作。
可通过特定实例说明时钟速度中的可能改进。在此实例中,在浮点累加器100和200内,多路复用器112和214可具有0.2毫微秒(ns)的延迟,操作数对准单元122和224可具有1.0 ns的延迟,2操作数加法器140可具有2.0 ns的延迟,3操作数加法器240可具有2.4 ns的延迟,且后对准单元160和260可具有1.0 ns的延迟。对于浮点累加器100,用于An-1的信号路径具有4.2 ns的总延迟,且累加器100可以高达238兆赫兹(MHz)的时钟速度操作。对于浮点累加器200,第一段的延迟为2.2 ns,且第二段的延迟为2.4ns。浮点累加器200于是可以高达416 MHz的时钟速度操作。改进的量对于其它设计可能有所不同。
图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)操作一般用于各种应用。两个级中的乘法与累加可表达为:
等式(5)
其中Yi=Ci·Di,且Ci和Di是将要相乘和累加的第i对浮点操作数。等式(5)可经改写为如下:
An=An-2+Yn+Yn-1,对于1≤n≤N。 等式(6)
图4展示MAC单元400的实施例的方框图。MAC单元400包含2操作数乘法器208和两级浮点累加器200。乘法器208接收将要相乘和累加的两个操作数,将所述两个操作数相乘,且将结果提供给锁存器210。浮点累加器200对来自锁存器210的结果执行累加,如上文针对图2所描述。
MAC单元400可用于各种应用,例如图形、数字信号处理等。MAC单元400可用以执行两个浮点值序列{C1,C2,...,CN}和{D1,D2,...,DN}的点积,如下:AN=C1·D1+C2·D2+...+CN·DN。点积广泛用于过滤、相关、图形中碰撞物体的物理计算等。MAC单元400也可用于以一标量缩放浮点值序列,并累加经缩放值的序列。
也可与其它功能组合执行累加。举例来说,可用标量乘法器、加法器、除法器、初等函数、移位器等来取代乘法器208。
也可在两个以上级中执行浮点累加。举例来说,三级浮点累加可表达为:
等式(7)
其中X0=X-1=X-2=0。
等式(7)可经改写为如下:
An=An-3+Xn+Xn-1+Xn-2,对于1≤n≤N, 等式(8)
其中A0=A-1=A-2=0。
等式(7)和(8)使用来自早先三个时钟循环的累加结果An-3。这允许将用于累加结果的信号路径分割为具有较小延迟的三个段。举例来说,可在图2中的后对准单元260之后插入额外的锁存器。用于累加结果的第三信号路径于是可分割为三个段,且浮点累加器可以甚至更高的时钟速度操作。4操作数加法器可用以对等式(8)中的四个操作数求和。
本文所描述的多级浮点累加器可用于各种类型的处理器,例如处理器(例如,着色器)、图形处理单元(GPU)、数字信号处理器(DSP)、精简指令集计算机(RISC)、高级RISC机器(ARM)等。下文描述多级浮点累加器用于图形处理器和无线装置的示范性用途。
图5展示支持L个图形应用/程序的图形处理器500的实施例的方框图,其中一般来说,L≥1。所述L个图形应用可用于视频游戏、图形等,且可同时运行。图形处理器500包含着色器核心502、纹理引擎504和高速缓冲存储器系统506。着色器核心502可执行例如着色等图形操作,所述着色为涉及照明、遮蔽等的高度复杂的图形操作。纹理引擎504可执行例如纹理映射等图形操作。通过使用纹理表/图像的色彩来修改图像的像素的色彩而实现纹理化。高速缓冲存储器系统506可包含一个或一个以上高速缓冲存储器,其为可存储用于着色器核心502和纹理引擎504的数据和指令的快速存储器。
在着色器核心502内,多路复用器510从L个图形应用接收线程,且将这些线程提供给线程调度器512。线程调度器512执行各种功能来调度和管理线程的执行。指令高速缓冲存储器514存储用于线程的指令。这些指令指示将要针对每一线程执行的特定操作,且可从高速缓冲存储器系统506和/或主存储器加载。ALU 516执行算术运算、逻辑运算、格式转换等。ALU 516可实施一个或一个以上多级浮点累加器(Acc)。常数缓冲器518存储由ALU 516使用的常数值。加载控制单元520控制用于着色器核心502内的各种单元的数据和指令流。输出缓冲器522存储来自ALU 516和544的中间和最终结果。多路分用器(Demux)524从输出缓冲器522接收所执行线程的最终结果,且将这些结果提供给图形应用。
在纹理引擎504内,纹理地址产生器540计算将要由纹理引擎504对其进行操作的每一像素的位置。纹理高速缓冲存储器542存储用于纹理引擎504的像素。ALU 544对像素执行计算,且提供中间结果,所述中间结果可被存储回到输出缓冲器522中。ALU544还可实施一个或一个以上多级浮点累加器。
图6展示无线通信系统中的无线装置600的实施例的方框图。无线装置600可为蜂窝式电话、终端、手持机、个人数字助理(PDA)或某种其它装置。无线通信系统可为码分多址(CDMA)系统、全球移动通信系统(GSM)系统或某种其它系统。
无线装置600能够经由接收路径和传输路径提供双向通信。在接收路径上,由天线612接收由基站传输的信号,且将其提供给接收器(RCVR)614。接收器614调节并数字化所接收的信号,且将样本提供给数字区段620以供进一步处理。在传输路径上,传输器(TMTR)616接收将要从数字区段620传输的数据,处理并调节所述数据,且产生经调制信号,所述经调制信号经由天线612传输到基站。
数字区段620包含各种处理、接口和存储器单元,例如调制解调器处理器622、视频处理器624、控制器/处理器626、显示处理器628、ARM/DSP 632、图形处理器634、内部存储器636和外部总线接口(EBI)638。调制解调器处理器622执行用于数据传输和接收的处理(例如,编码、调制、解调和解码)。视频处理器624对视频内容(例如,静态图像、移动视频和移动文本)执行处理以用于视频应用,例如摄像机、视频回放和视频会议。控制器/处理器626可引导数字区段620内的各种处理和接口单元的操作。显示处理器628执行处理以促进视频、图形和文本在显示单元630上显示。
ARM/DSP 632可执行用于无线装置600的各种类型的处理。图形处理器634执行图形处理。处理器622到634可每一者实施一个或一个以上多级浮点累加器。内部存储器636存储用于数字区段620内的各种单元的数据和/或指令。EBI 638促进数据在数字区段620(例如,内部存储器636)与主存储器640之间传送。
可使用一个或一个以上DSP、微处理器、RISC等来实施数字区段620。也可在一个或一个以上专用集成电路(ASIC)或某种其它类型的集成电路(IC)上制造数字区段620。
本文所描述的多级浮点累加器可实施于各种硬件单元中。举例来说,浮点累加器可实施于ASIC、DSP、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、电子装置和其它电子单元中。
提供所揭示实施例的先前描述以使得所属领域的技术人员能够制作或使用本发明。所属领域的技术人员将容易明白对这些实施例的各种修改,且在不脱离本发明的精神或范围的情况下,本文所界定的一般原理可应用于其它实施例。因此,不希望将本发明限于本文所示的实施例,而是本发明应符合与本文所揭示的原理和新颖特征相一致的最广泛范围。
Claims (23)
1.一种处理器,其包括:
多级浮点累加器,其操作以对多个浮点值执行累加,且包括至少两个级,每一级包括至少一个锁存器,所述锁存器操作以存储所述级的至少一个结果,其中所述浮点累加器进一步包括加法器,所述加法器经操作以对当前浮点值、至少一个前一浮点值、以及前一累加值求和。
2.根据权利要求1所述的处理器,其中所述浮点累加器操作以执行累加,其中所述前一累加值包括来自早先至少两个时钟循环的累加结果。
3.根据权利要求1所述的处理器,其中所述浮点累加器是具有至少两个级的管线,且具有至少两个时钟循环的延迟。
4.根据权利要求1所述的处理器,其中所述浮点累加器包括
第一操作数对准单元,其用于所述当前浮点值,
第二操作数对准单元,其用于所述前一浮点值,以及
第三操作数对准单元,其用于所述前一累加值。
5.根据权利要求4所述的处理器,其中所述浮点累加器进一步包括
第一多路复用器,其操作以将零或所述前一浮点值提供给所述第二操作数对准单元,以及
第二多路复用器,其操作以将零或所述前一累加值提供给所述第三操作数对准单元。
6.根据权利要求4所述的处理器,其中所述浮点累加器进一步包括
第一、第二和第三锁存器,其分别耦合到所述第一、第二和第三操作数对准单元。
7.根据权利要求4所述的处理器,其中所述浮点累加器的所述加法器进一步包括3操作数加法器,其操作以对由所述第一、第二和第三操作数对准单元产生的操作数求和。
8.根据权利要求1所述的处理器,其中所述浮点累加器的所述加法器进一步包括3操作数加法器,其操作以对所述当前浮点值、所述前一浮点值和所述前一累加值求和。
9.根据权利要求8所述的处理器,其中所述浮点累加器进一步包括
锁存器,其耦合到所述3操作数加法器,以及
后对准单元,其耦合到所述锁存器。
10.根据权利要求1所述的处理器,其进一步包括:
乘法器,其操作以将输入操作数相乘,且将所述多个浮点值提供给所述浮点累加器。
11.根据权利要求10所述的处理器,其中所述乘法器和所述浮点累加器操作以将两个操作数序列相乘并累加。
12.一种集成电路,其包括:
多级浮点累加器,其操作以对多个浮点值执行累加,且包括至少两个级,每一级包括至少一个锁存器,所述锁存器操作以存储所述级的至少一个结果,其中所述浮点累加器进一步包括加法器,所述加法器经操作以对当前浮点值、至少一个前一浮点值、以及前一累加值求和。
13.根据权利要求12所述的集成电路,其中所述浮点累加器操作以执行累加,其中所述前一累加值包括来自早先至少两个时钟循环的累加结果。
14.根据权利要求12所述的集成电路,其中所述浮点累加器包括
第一操作数对准单元,其用于所述当前浮点值,
第二操作数对准单元,其用于所述前一浮点值,以及
第三操作数对准单元,其用于所述前一累加值。
15.根据权利要求14所述的集成电路,其中所述浮点累加器的所述加法器进一步包括3操作数加法器,其操作以对由所述第一、第二和第三操作数对准单元产生的操作数求和。
16.根据权利要求15所述的集成电路,其中所述浮点累加器进一步包括
锁存器,其耦合到所述3操作数加法器,以及
后对准单元,其耦合到所述锁存器。
17.根据权利要求12所述的集成电路,其进一步包括:
乘法器,其操作以将输入操作数相乘,且将所述多个浮点值提供给所述浮点累加器。
18.一种图形处理器,其包括:
至少一个算术逻辑单元,每一算术逻辑单元包括一多级浮点累加器,所述浮点累加器操作以对多个浮点值执行累加且包括至少两个级,每一级包括至少一个锁存器,所述锁存器操作以存储所述级的至少一个结果,其中所述浮点累加器进一步包括加法器,所述加法器经操作以对当前浮点值、至少一个前一浮点值、以及前一累加值求和;以及
存储器,其耦合到所述算术逻辑单元。
19.根据权利要求18所述的图形处理器,其中所述浮点累加器包括
第一操作数对准单元,其用于所述当前浮点值,
第二操作数对准单元,其用于所述前一浮点值,
第三操作数对准单元,其用于所述前一累加值,以及
其中所述浮点累加器的所述加法器包括3操作数加法器,其操作以对由所述第一、第二和第三操作数对准单元产生的操作数求和。
20.根据权利要求18所述的图形处理器,其中每一算术逻辑单元进一步包括乘法器,其操作以将输入操作数相乘,且将所述多个浮点值提供给所述浮点累加器。
21.根据权利要求18所述的图形处理器,其进一步包括
着色器核心,其操作以执行图形操作,且包括第一算术逻辑单元。
22.根据权利要求21所述的图形处理器,其进一步包括
纹理引擎,其操作以执行纹理映射,且包括第二算术逻辑单元。
23.一种无线装置,其包括:
图形处理器,其包括多级浮点累加器,所述浮点累加器操作以对多个浮点值执行累加且包括至少两个级,每一级包括至少一个锁存器,所述锁存器操作以存储所述级的至少一个结果,其中所述浮点累加器进一步包括加法器,所述加法器经操作以对当前浮点值、至少一个前一浮点值、以及前一累加值求和;以及
存储器,其耦合到所述图形处理器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/506,349 | 2006-08-18 | ||
US11/506,349 US7543013B2 (en) | 2006-08-18 | 2006-08-18 | Multi-stage floating-point accumulator |
PCT/US2007/076242 WO2008022331A2 (en) | 2006-08-18 | 2007-08-17 | Multi-stage floating-point accumulator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101506771A CN101506771A (zh) | 2009-08-12 |
CN101506771B true CN101506771B (zh) | 2013-01-02 |
Family
ID=39083186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800303290A Expired - Fee Related CN101506771B (zh) | 2006-08-18 | 2007-08-17 | 多级浮点累加器 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7543013B2 (zh) |
EP (1) | EP2057535B1 (zh) |
JP (1) | JP5086348B2 (zh) |
KR (1) | KR101085810B1 (zh) |
CN (1) | CN101506771B (zh) |
AT (1) | ATE487981T1 (zh) |
DE (1) | DE602007010468D1 (zh) |
WO (1) | WO2008022331A2 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101847087B (zh) * | 2010-04-28 | 2012-03-28 | 中国科学院自动化研究所 | 一种支持定浮点可重构的横向求和网络结构 |
CN102445606A (zh) * | 2010-09-30 | 2012-05-09 | 上海华建电力设备股份有限公司 | 电力监测终端的功能优化方法 |
CN102033732B (zh) * | 2010-12-17 | 2012-07-18 | 浙江大学 | 基于fpga的高速低延迟浮点累加器及其实现方法 |
CN103176767B (zh) * | 2013-03-01 | 2016-08-03 | 浙江大学 | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 |
US9575725B1 (en) | 2014-03-18 | 2017-02-21 | Altera Corporation | Specialized processing block with embedded pipelined accumulator circuitry |
CN106355246B (zh) * | 2015-10-08 | 2019-02-15 | 上海兆芯集成电路有限公司 | 三配置神经网络单元 |
CN107305485B (zh) * | 2016-04-25 | 2021-06-08 | 中科寒武纪科技股份有限公司 | 一种用于执行多个浮点数相加的装置及方法 |
US10891991B2 (en) * | 2018-11-26 | 2021-01-12 | Gsi Technology Inc. | Massively parallel, associative multiplier accumulator |
CN111221496B (zh) * | 2018-11-26 | 2023-06-13 | 北京华航无线电测量研究所 | 一种使用fpga实现浮点数据累加的方法 |
US11188329B1 (en) * | 2020-06-24 | 2021-11-30 | Micron Technology, Inc. | Dynamic precision bit string accumulation |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0517241A2 (en) * | 1991-06-06 | 1992-12-09 | Lsi Logic Corporation | Interleaved multiplier accumulator |
EP0376266B1 (en) * | 1988-12-28 | 1995-07-26 | Nec Corporation | Total sum calculation circuit capable of rapidly calculating a total sum of more than two input data represented by a floating point representation |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4866652A (en) | 1987-09-01 | 1989-09-12 | Weitek Corporation | Floating point unit using combined multiply and ALU functions |
US4841467A (en) * | 1987-10-05 | 1989-06-20 | General Electric Company | Architecture to implement floating point multiply/accumulate operations |
JPH03163662A (ja) * | 1989-11-21 | 1991-07-15 | Mitsubishi Electric Corp | 浮動小数点累算器 |
JPH04151729A (ja) * | 1990-09-10 | 1992-05-25 | Mitsubishi Electric Corp | 浮動小数点累算器 |
US6247036B1 (en) * | 1996-01-22 | 2001-06-12 | Infinite Technology Corp. | Processor with reconfigurable arithmetic data path |
US6446195B1 (en) * | 2000-01-31 | 2002-09-03 | Intel Corporation | Dyadic operations instruction processor with configurable functional blocks |
GB2409074B (en) | 2001-03-14 | 2005-08-03 | Micron Technology Inc | Arithmetic pipeline |
US7080111B2 (en) * | 2001-06-04 | 2006-07-18 | Intel Corporation | Floating point multiply accumulator |
US20030154227A1 (en) | 2002-02-08 | 2003-08-14 | Intel Corporation | Multi-threaded multiply accumulator |
-
2006
- 2006-08-18 US US11/506,349 patent/US7543013B2/en active Active
-
2007
- 2007-08-17 EP EP07814226A patent/EP2057535B1/en not_active Not-in-force
- 2007-08-17 WO PCT/US2007/076242 patent/WO2008022331A2/en active Application Filing
- 2007-08-17 CN CN2007800303290A patent/CN101506771B/zh not_active Expired - Fee Related
- 2007-08-17 KR KR1020097001736A patent/KR101085810B1/ko not_active IP Right Cessation
- 2007-08-17 JP JP2009525707A patent/JP5086348B2/ja not_active Expired - Fee Related
- 2007-08-17 AT AT07814226T patent/ATE487981T1/de not_active IP Right Cessation
- 2007-08-17 DE DE602007010468T patent/DE602007010468D1/de active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0376266B1 (en) * | 1988-12-28 | 1995-07-26 | Nec Corporation | Total sum calculation circuit capable of rapidly calculating a total sum of more than two input data represented by a floating point representation |
EP0517241A2 (en) * | 1991-06-06 | 1992-12-09 | Lsi Logic Corporation | Interleaved multiplier accumulator |
Also Published As
Publication number | Publication date |
---|---|
ATE487981T1 (de) | 2010-11-15 |
US7543013B2 (en) | 2009-06-02 |
CN101506771A (zh) | 2009-08-12 |
EP2057535B1 (en) | 2010-11-10 |
US20080046495A1 (en) | 2008-02-21 |
EP2057535A2 (en) | 2009-05-13 |
KR20090031594A (ko) | 2009-03-26 |
WO2008022331A3 (en) | 2008-05-22 |
JP2010501938A (ja) | 2010-01-21 |
DE602007010468D1 (de) | 2010-12-23 |
WO2008022331A2 (en) | 2008-02-21 |
KR101085810B1 (ko) | 2011-11-22 |
JP5086348B2 (ja) | 2012-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101506771B (zh) | 多级浮点累加器 | |
KR101566257B1 (ko) | 입력 데이터 값에 따른 결합형 곱셈-덧셈 (fma) 유닛의 전력 소모 절감 | |
US7574584B2 (en) | Splitting execution of a floating-point add instruction between an integer pipeline for performing mantissa addition and a hardware state machine | |
EP3719639A2 (en) | Systems and methods to perform floating-point addition with selected rounding | |
US8612726B2 (en) | Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type | |
US8046564B2 (en) | Reconfigurable paired processing element array configured with context generated each cycle by FSM controller for multi-cycle floating point operation | |
US20180121386A1 (en) | Super single instruction multiple data (super-simd) for graphics processing unit (gpu) computing | |
US7917568B2 (en) | X87 fused multiply-add instruction | |
GB2455401A (en) | Graphical rendering pipeline having double precision fused multiply-add functional unit(DFMA) | |
US8639737B2 (en) | Method to compute an approximation to the reciprocal of the square root of a floating point number in IEEE format | |
CN102576302B (zh) | 微处理器及用于微处理器上增强精确度乘积和计算的方法 | |
US8930433B2 (en) | Systems and methods for a floating-point multiplication and accumulation unit using a partial-product multiplier in digital signal processors | |
Ritpurkar et al. | Design and simulation of 32-Bit RISC architecture based on MIPS using VHDL | |
US20050223055A1 (en) | Method and apparatus to correct leading one prediction | |
CN100367191C (zh) | 一种快速流水线型除法器 | |
EP1335278A2 (en) | Higher precision divide and square root approximations | |
US8140608B1 (en) | Pipelined integer division using floating-point reciprocal | |
CN111752605A (zh) | 使用浮点乘法-累加结果的模糊-j位位置 | |
CN104823153A (zh) | 引导变化预测器逻辑 | |
Edman et al. | Fixed-point implementation of a robust complex valued divider architecture | |
Tsao et al. | Parameterized and low power DSP core for embedded systems | |
US6792442B1 (en) | Signal processor and product-sum operating device for use therein with rounding function | |
US9619205B1 (en) | System and method for performing floating point operations in a processor that includes fixed point operations | |
US11704092B2 (en) | High-precision anchored-implicit processing | |
Albeck et al. | Energy efficient computing by multi-mode addition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
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: 20130102 Termination date: 20210817 |