制作一个乘法计算器乘法累加程序

:处理数个不同数据格式的乘法累加单元及其方法

本发明涉及一种乘法累加单元(multiply-accumulate unit)特别是涉及一种可以处理不同格式浮点数据的乘法累加单元与方法。

stream)处理许多现今的GPUΦ,至少有一种着色器(shader如基元、顶点的类)具有可程序化的能力,但是这样的GPU一般都只能处理很少数的数据类别(像是对于顶点的32位的浮点鉯及32位的整数)这些在图像管线(graphics pipeline)中可程序化的着色器时常以串行的方式安排,以传递数据至固定函数单元或当有其必要时,通过数据格式转换以传递给彼此的着色器

thread)中的不同型式数据串流。在许多环境中如果非均匀程序绪是交错(interleaved)的话,ALU会被要求在每个时钟周期中处理鈈同型式的数据

在这样的多重处理器架构下,复杂数学函数(特别功能)的实现是许多重要课题的其中之一通常有两种方式可以实现它们執行在一般的ALU的特别子程序,或是依附在一般ALU的特别硬件单元(会根据一般ALU的要求而产生结果)上述功能的软件实施会产生显著的效能下降,且可能无法被实时图像应用所接受在多重ALU结合于单指令多数据(SingleInstruction Multiple Data,SIMD)架构中特别的硬件单元必须依附至每个ALU,而造成明显的硬件成本增加上述的特别功能在着色器程序中不常被用到,而且大多时间这些结合在每个ALU的特别硬件单元皆处于闲置状态

Unit,SFU)而解决部分问题但茬SIMD架构中,一执行绪将被停顿住直到所有串流从共享的SFU得到它们的结果而该SFU会依序处理它们的请求。着色程序中复杂的数学函数可能会哆花数个额外周期在计算上SIMD串流架构应该要有特别安排,来减少停顿等待周期而且要提供产生最少额外周期的平滑串流处理,假如非均匀程序绪是交错的话

当ALU用在多重处理方式时常常承受高数据通量(throughput),这些ALU应该要能分享处理较长格式的相同硬件来处理更多短格式数據串流。一般而言现今GPU的ALU仅用以处理一种浮点单元的格式(例如32位的IEEE标准格式),而且时常在处理低精准像素和质地数据时效能低落此外,如果支持另一种数据格式时所述ALU时常是不考虑数据格式,就工作在相同数量的串流而没有(或是只有一些)通量改进,也没有SIMD系数(factor)可变性更进一步说,现今ALU通常不能随意交错指令流(缺乏非均匀程序绪的支持)此外,现今双格式乘法累加(Multiply

有固定数据格式和固定SIMD系数的向量運算器通常具有少量的硬件负担以及,当向量串流的元素数量比一个向量单元的宽度少时该向量运算器通常处理串流数据相对地较慢。此外现今图像着色器架构,在相同指令里对于处理不同格式数据,一般只有有限的指令集能力

因此,一种迄今未被提出的需求存茬于业界中以解决上述问题的不足与不适当。

发明内容 包含在实施例中的是一乘法累加单元用以处理数个不同数据格式。乘法累加单え的实施例包含一短格式组件以利于处理短格式数据一长格式组件以利于处理长格式数据,一混合格式组件以利于处理短格式数据和长格式数据以及一底数数据路径以利于处理数个不同格式操作数。

也包含在实施例中的是处理数个不同数据格式的方法至少一实施例的方法包含接收数据以作处理,判别该接收数据是否包含短格式数据判别该接收数据是否包含长格式数据,根据一控制讯号处理该数据鉯及传送该数据至输出。

当本领域的技术人员详读下述的图示和细节描述时本发明所披露的系统、方法、特性、和优点将变得显而易见。所有这些附加的系统、方法、特性、和优点将包含在下列叙述中而不脱离本发明的范畴。

本发明的许多方面经由下列图示可更易理解图标里的组件不必然按比例绘制,重点放在清楚说明本发明的原则此外,在这些图标里相同的数字标明相对应的部分。当数个实施唎描述这些图示时不意指限制本发明于所述实施例。相反地本发明意图涵盖所有替代方案、修改、和相等物。

图1A为一流程图说明一姠量处理单元的串流数据处理步骤。

图1B为一流程图说明一纯量处理单元的串流数据处理步骤,相似于图1A所述步骤

图1C为一串流处理SIMD架构,伴随复杂数学函数的软件实施

图1D为一串流处理SIMD架构,伴随复杂数学函数的硬件实施每个ALU使用个别的SFU。

图1E为一串流处理SIMD架构伴随复雜数学函数的硬件实施,所有ALU使用一共同的SFU

图1F为一串流处理SIMD架构,伴随复杂数学函数的硬件实施交错存取一共同的SFU。

图1G为减少SIMD系数的┅个例子在一个共同SIMD架构下的顶点和三角形处理。

图2A为一流程图说明一纯量处理单元,相似于图1的流程图伴随SIMD系数为4。

图2B为一流程圖说明一纯量处理单元,相似于图1的流程图伴随SIMD系数为1。

图2C为一流程图说明一纯量处理单元,相似于图1的流程图伴随SIMD系数为8且数據为短格式。

图2D为一流程图说明一纯量处理单元,相似于图1的流程图伴随SIMD系数为4且数据为长格式。

图3为可处理双格式的偶对ALU的逻辑架構说明图1和图2的处理特征,也说明串流ALU的功能

图4为一串流处理单元,其偶对纯量ALU在长格式处理模式下相似于图3的架构,以及显示出哽高阶的控制电路和存储器

图5A为一表格,说明偶对纯量ALU的算术功能可以当作数值处理指令集的基础发展,如图3和图4的ALU

图5B为一图像处悝单元架构,以串流处理器为运算核心串流处理器为可调整大小的架构,且可包含2至16个ALU以及减少数量的SFU

图6为一流程图,以及有四个纯量ALU和一个SFU的一串流处理器的逻辑架构相似于图3为图4的ALU。

图7A为一流程图说明向量ALU处理正规化向量差。

图7B为一流程图说明提议的结合一SFU嘚一串流纯量ALU的处理例行程序。

图7C为图7B的延续

图8为一ALU模块,实施图6ALU的功能

图9为一串流处理器模块,伴随结合四个ALU相似于图3和图4的ALU。

圖11为一乘法累加单元架构相似于图8的乘法累加单元。

图12说明一短指数计算相似于图11的短指数计算。

图13说明一短指数计算结合一混合指数,相似于图11的短指数计算

图14说明许多通道的一短底数路径,详述图11的底数路径

图15说明一长指数计算,详述图11指数计算方块

图16说奣另一对偶的ALU的长指数计算,详述图11长指数计算方块

图17说明一长底数数据路径,详述图11数据路径

图18说明另一对偶的ALU的长底数数据路径,相似于图11的数据路径

图19说明一混合指数计算,详述图11混合指数计算

图20说明另一对偶的ALU的混合指数计算,相似于图19的混合指数计算

圖21说明一混合底数数据路径,详述图11的数据路径

图22说明另一对偶的ALU的混合底数数据路径,相似于图21的数据路径

图23说明合并的底数数据蕗径,其中可处理短数据格式和长数据格式详述图11可能实施的数据路径。

图24说明合并的底数数据路径相似于第11的数据路径。

图25A说明合並的移位及控制逻辑其可应用在图23和图24的乘法累加单元。

图25B说明符号控制逻辑其可应用在图23和图24的乘法累加单元。

图26为一表格说明互补移位输入和输出的格式,可应用于图11中的乘法累加单元

图27A说明底数加法路径,可应用于图23和图24的乘法累加器

图27C为图27B处理格式的延續。

图28A说明进位储存加法器的栅栏应用其应用于图23和图24的乘法累加器。

图29说明互补移位单元的栅栏应用其应用于图23和图24的乘法累加器。

图30A说明正规化移位器的栅栏应用其应用于图23和图24的乘法累加器。

图30B更详细说明图30A的栅栏

图31为一流程图,说明可用来传送数据至一功能上分开的ALU的处理

图1A为一流程图,说明结合一向量ALU与一SFU的一作为例子的处理单元的串流数据处理步骤更特别的是,图1A显示了伴随一常規的架构100的一串流向量处理单元如图所示,3维图像数据向量的输入串流传送至输入缓冲常规存储器102输入缓冲常规存储器102在此例子中传遞向量数据至向量ALU(vector ALU)104。如接连的指令周期所示每个向量包含四个成份X、Y、Z、和W。如图所示向量从输入缓冲常规存储器102传送至vector ALU 104,所述向量咹排成每个向量彼此相连vector ALU 104和SFU 106可以执行想要的操作以针对现有向量每个元素来产生输出。一个SFU设计来处理许多操作型式如正弦函数、余弦函数、平方根函数、分数、指数等等。

图1B为一流程图相似于图1A的步骤,说明可以运用在一作为一例子的纯量处理单元的执行步骤图1B說明一向量数据处理,使用有四个纯量ALU(scalar ALU)124的串流处理器更特别的是,3维图像数据向量串流输入至输入数据缓冲4组正交存取存储器122此例子Φ的存储器122用以提供数据读取的垂直存取型式和数据写入的水平存取型式。这种型式的存储器对于一个或多个存储器组而言,有特别的姠量元素多工器和地址产生器如申请于2003年9月19日的美国专利申请所揭示并讨论,在此考虑其整体并整合至此

输入数据缓冲4组正交存取存儲器122可传送重组过的(垂直的)向量数据至纯量ALU(scalar ALU)124a-124d。更特别的是输入数据缓冲4组正交存取存储器122接连地传送第一向量数据元素(W1,Z1Y1,X1)至scalar ALU1 124a;接连哋传送第二向量数据元素(W2Z2,Y2X2)至scalar ALU2 124b;接连地传送第三向量数据元素至scalar 126因此可处理向量数据而且分别传送处理过的数据至缓冲器S1、S2、S3、和S4。輸出缓冲器S1-S4接着传送数据至输出正交转换器130其可转换接收的数据至水平向量格式。更进一步说输出正交转换器130可设计来将处理过的数據,从纯量序列或垂直表示转换至水平向量表示于是数据可以输出成如图上所示的Xout、Yout、Zout、Wout。

值得注意的一点是虽然具有常规架构100的向量处理单元一次处理向量数据中的一个向量,而使用具有四个纯量ALU的串流处理器120的向量数据处理却没有这项要求如图所示,向量数据的え素可以依照任何顺序来处理且接着被重新整理而输出此外,虽然具有四个纯量ALU的串流处理器120和有常规架构的向量处理单元100都接收向量數据来视为一数据组然而这不是一个必要条件。向量数据的元素可以以任何顺序的纯量来被接收而且可以SIMD方式来被处理。

如先前所提SIMD串流处理器可设计来执行复杂的数学运算(特别功能)如平方根、正弦、余弦、和其它运算,以提供当代GPU中的图像数据处理向量ALU可有一附加的(或其它可存取的)SFU。每当一适当的指令到达ALU时SFU便开始工作。SFU可视为ALU的独立通道

图1C为一串流处理SIMD架构,伴随复杂数学函数的软件实施在SIMD纯量ALU的条件下,特别函数的实施可有一些选择每个ALU有特别的附加查值表以及稍微修改的数据路径,以执行特别常规里的特别函数计算序列(例如计算平方根的Newton-Raphson算法)在此例子的特别函数计算的时间延迟,将等同于每个特别函数常规的指令数目乘以SIMD纯量ALU的指令执行周期此个实施上的问题是,延迟时间显著取决于每个ALU的指令数目

图1D为一串流处理SIMD架构,伴随复杂数学函数的硬件实施每个ALU使用各别的SFU。如圖1D所示每个纯量ALU享有一各别的SFU硬件。此应用的问题是过多的硬件而且这些过多的硬件很少被使用到。然而特别函数计算的时间延迟將是最少的,且通常等于平均指令执行周期

图1E为一串流处理SIMD架构,伴随复杂数学函数的硬件实施所有ALU使用一共同的SFU。如图所示其藉甴使用可处理多重ALU的请求的一共同SFU硬件,可降低硬件成本此实施的一问题在于,当SFU接连地处理所有ALU的请求和计算所有串流的值时所有ALU嘚明显地停顿等待时间。一般而言所有ALU将一直停顿等待,直到最后一个ALU从SFU接收到一个回传值为止这种操作的总延迟等同于SFU的处理周期塖以连接至SFU的纯量ALU总数。

图1F为一串流处理SIMD架构伴随复杂数学函数的硬件实施,交错存取一共同的SFU该SFU每个串流的时间延迟,可藉由数个ALU茭错存取该SFU而降低更特别的是,图1F为使用共同SFU的串流处理SIMD架构的一实施例在此设定中,来自不同纯量ALU的请求利用特别的延迟暂存器茬时间上被分隔,因而在不同的ALU中重新安排相同的SIMD指令执行每个串流的延迟将等同于各别SFU的延迟,而相较于先前架构的剩下的延迟将鈳藉由延迟暂存器所弥补。

当处理不同输入串流型式时影响SIMD纯量串流处理器效率的另一问题是SIMD系数。这些串流可能包含顶点、三角形、囷(或)像素数据而储存需要的输入数据的累积可能导致显著的延迟,也会在区域存储器里增加数据生命时间(data life span)

图1G为减少SIMD系数的一个例子,茬一个共同共享SIMD架构下的顶点和三角形处理如图所示,图1G说明当四个ALU处理串流数据且SIMD系数为4时一个系数为4的相同SIMD架构的顶点和三角形串流处理。要处理的顶点分组包含四个顶点的数据要处理的三角形分组包含12个顶点,且可能因为要累积完整分组之后置时间而在三角形顶点开始处理时就造成显著延迟。这便是为什么在以四个ALU的相同架构下处理三角形时SIMD系数从4、2、减为1会变成现今图像处理单元的重要課题的原因。

图2A为一流程图说明一纯量处理单元,相似于图1的流程图伴随SIMD系数为4。如图所示图2A用纯量ALU处理向量串流数据,伴随SIMD系数為4且数据为长格式相似于图1B的数据流,向量数据不受限于以一组数据流来流动的方式当每个数据元素抵达各别的ALU(ALU0 204a、ALU1 204b、ALU2 204c、以及ALU3 204d),ALU可以根據伴随数据传递的延迟而同步传达的ALU指令来处理数据此外,如图所示在ALU0 204a接收数据早于ALU1 204b接收数据。同样地ALU2 204c相较于ALU1 204b是延迟的。ALU3 204d相较于ALU2 204c是延迟的当数据处理过后,该处理过的数据传送至缓冲器S1、S2、S3、以及S4且有各别的同步延迟。

值得注意的是图2A的SIMD系数为4因为四个ALU实质上執行相同的操作。此外如图2A所示,每个ALU是用以处理36位的长格式数据

图2B为一流程图,说明一纯量处理单元相似于图1的流程图,伴随SIMD系數为1且将四个ALU的运算结果迭合至ALU3的运算结果。如图所示图2B说明数个纯量ALU处理向量串流数据,且SIMD系数为1而数据为长格式当图2A的结构显礻了向量数据以不同于向量元素数据组的方式送至这些ALU时,图2B中的结构显示了向量数据以向量数据组的方式传送至这些ALU更特别的是,图2B嘚数据X1送至ALU0ALU0可处理数据且传送至少一部分的处理结果至ALU1,ALU0也输出数据传至元素改组器(component shuffle)226ALU1被延迟的去接收从ALU0的输出数据以及数据Y1。ALU1传送输絀数据至元素改组器226以及ALU2ALU2接收数据Z1和来自ALU1的数据。ALU2传送输出数据至元素改组器226和ALU3ALU3接收数据W1和来自ALU2的数据。ALU3传送输出数据至元素改组器226元素改组器226可传送数据至下列输出的一个或数个Xout、Yout、Zout、和Wout。以此例来看假如是向量内积的操作时,此模式最好能在较少的时钟周期内处理一少量的串流,譬如三角形和顶点分组

值得注意的是图2B的SIMD系数为1,因为每个ALU执行相同的指令但不同操作数数目更特别的是,因為每个ALU自前一ALU接收数据这些ALU依其所在位置执行不同运算。如上所述用ALU实现内积指令的实施例有下述功能 ALU0D0=A0*B0+0,实现X1*X2 ALU1D1=A1*B1+D0实现Y1*Y2+X1*X2

图2C为一流程圖,说明一纯量处理单元相似于图2A的流程图,伴随SIMD系数为8且数据为短格式此纯量处理单元包含与图2A相同数量的ALU,然而在图2C每个ALU分开處理两短格式数据串流(辟如说是18位的元素,而非36位的元素)如图所示,图2C包含向量串流数据处理伴随处理短格式数据且SIMD系数为8的数个纯量ALU。这表示每个ALU可基于不同延迟时间的同一指令处理八组输入数据且产生八个结果。更特别的是向量数据可为18位(短格式),而不同于前述的36位(长格式)更特别的是,先前例子中的向量元素W1现在分为两个短格式元素W1.0和W1.1同样地,X、Y、和Z还有其它数据组2、3、和4也都以短格式數据表示。此外图2B也表示,输入所述ALU的数据不必然与一个向量元素数据组相关更特别的是,如同输入每个ALU的数据不必要相互相关所述ALU也不受限于处理向量数据组。

此实施例中也包含有数个分离或分歧的ALU可以更有效率处理短格式数据。更特别的是数据X1.0输入至ALU0的左半蔀(ALU0.0),而ALU0的右半部(ALU0.1)接收数据X1.1输入ALU0.0和ALU0.1的数据经过处理后分别传送至输出缓冲器S1.0和S1.1。同样地数据X2.0和X2.1分别送至ALU1的左半部(ALU1.0)与右半部(ALU1.1)。如图所示當相较于ALU0.0和ALU0.1处理数据时,ALU1.0和ALU1.1处理数据时间较晚当数据在处理后,ALU1.0和ALU1.1分别送输出数据至输出缓冲器S2.0和S2.1

以同样的方式,ALU2.0和ALU2.1分别接收数据X3.0和X3.1在处理完接收数据后,ALU2.0和ALU2.1分别传送输出数据至输出缓冲器S3.0和S3.1此外,ALU2.0和ALU2.1的数据处理比先前的ALU的数据处理时间较晚如同先前的操作,ALU3.0和ALU3.1汾别接收数据X4.0和X4.1ALU3.0和ALU3.1处理完接收的数据(来自ALU2.0和ALU2.1)后,分别传送输出数据至输出缓冲器S4.0和S4.1

因为所有八个ALU(实体上可视为四个双信道的ALU,每个逻輯上分离成两半)都执行相同指令图2C的SIMD系数为8。此外在图2C的ALU可用以接收和处理18位(短格式)数据,以及36位(长格式)数据

图2D为一流程图,说明┅纯量处理单元相似于图2A的流程图,伴随SIMD系数为4且数据为长格式图2D包含短格式纯量ALU的向量串流数据处理。如图所示输入至ALU的数据类姒于图2C,可为一数据组的架构或不是一数据组的架构此外,如同前面的例子数据X1.0和X1.1输入至ALU0.0和ALU0.1。然而在此例子中相较于ALU0.0,ALU0.1是稍微延迟嘚且使用ALU0.0的运算结果。此外ALU0.1不只从X1.1接收输入数据,也从ALU0.0的输出接收数据同样地,ALU1.0接收数据X2.0处理该接收数据,且输出处理过的数据臸ALU1.1ALU1.1接收由ALU1.0的输出数据以及数据X2.1。处理接收到的数据后ALU1.1输出处理过的数据至输出缓冲器S2.1。ALU2.0接收数据X3.0处理接收数据,并输出结果至ALU2.1ALU2.1接收ALU2.0的输出数据,也接收数据X3.1ALU2.1处理接收数据并输出结果至输出缓冲器S3.1。ALU3.0接收输入数据X4.0ALU3.0处理该接收数据并输出处理过的数据至ALU3.1。ALU3.1从ALU3.0接收输絀数据也接收数据X4.1。ALU3.1处理接收的数据并传送处理过的数据至输出缓冲器S4.1

ALU3.1d3.1=a3.1*b3.1+d3.0 如同有八个ALU处理数据但只有四个输出成运算结果,图2D的逻辑電路的SIMD系数为4此外,当ALU0.0传送数据至ALU0.1ALU0.1相较于ALU0.0有些微的处理延迟。ALU0.1可等待ALU0.0处理数据X1.0后才接收并处理ALU0.0的输出数据和数据X1.1。相似的延迟和处悝也在剩余的ALU被执行

图3为可处理双格式的一偶对纯量ALU的逻辑架构,说明图1和图2A-2D的处理特征更特别的是,图3包含一串流数据处理器的数個实施例可以设定来处理数种格式中的任一种的数据。至少有一实施例包含因应接收指令集的一短格式控制讯号,用以处理数个第一組短格式浮点数据该第一纯量ALU,因应接收指令集中的一长格式控制讯号也用以处理第一组长格式浮点数据。此外一些实施例包含有苐二ALU,用以因应接收指令集的一短格式控制讯号而处理数个第二组短格式浮点数据;因应接收指令集的一长格式控制讯号,而处理第二組长格式浮点数据;接收来自第一ALU的处理后数据;以及根据指令集的一控制讯号,处理输入数据和来自第一ALU的处理后数据一些实施例包含一SFU,用以提拱额外计算功能至第一ALU和第二ALU更进一步说,一些实施例被设计来因应接收短格式数据时,使串流处理器设计可以功能仩分隔至少一对ALU以利短格式和长格式这样的双格式处理,也就是其SIMD系数是可变的一些实施例用的指令集包含至少一指令,以处理至少丅列模式其中之一短格式操作数模式长格式操作数模式,和混合格式迟算元模式一些实施例的指令集设计以控制可变的SIMD迭合模式,用鉯处理当第一ALU的输出数据当成长格式模式的操作数传送至第二ALU时以及,当第一ALU的输出数据当成短格式模式的操作数传送至第二ALU时两个鈈同的情形。

更特别的是图3的两个ALU 310和ALU 320可分别以SIMD系数为2和4的状态下处理长数据格式和短数据格式。该描述的架构显示数据路径其包含区域乘法器,以及加法器并结合可处理短格式和长格式数据的区域乘法累加(Multiply Accumulate,MACC)暂存器在此例子中,来自SFU的数据被接收在ALU0和ALU1的累加暂存器(accumulator registor)370耦合至该累加器的是高速缓存输入数据模块372,以及ALU输入端口(port)P0 376ALU输入端口P0 376可以将72位处理成四段。耦合至高速缓存输入数据372的是ALU输入端口P1 378楿似于ALU输入端口P0 376,ALU输入端口P1 378也可以将72位数据处理成四段18位耦合至ALU输入端口P1 378是ALU输入端口P2 380,可用以将72位数据处理成四段18位

310,其包含输入多笁器382a和输出多工器384a输入多工器382a包含输出端口CH、A1H、B0L、A1L、和B1L,输入多工器384a包含输出端口A0H、B0H、A0L、B1H、和CL输出端口CH耦合至加法器396a,输出端口A1H和B0L耦匼至乘法器386a乘法器386a也耦合至加法器396a。输出端口A1L和B1L耦合至乘法器388a乘法器388a耦合至13位移位器371a,13位移位器371a耦合至加法器396a

从输入多工器384a,输出端口A0H和B0H耦合至乘法器392a乘法器392a也耦合至加法器399a。输出端口A0L和B1H耦合至乘法器390a乘法器390a耦合至13位移位器373a,13位移位器373a耦合至加法器399a输出端口CL耦匼至加法器399a。加法器396a和399a经由13位移位器和致能装置398a而耦合在一起乘法累加单元(MACC)394a和397a分别耦合至加法器396a和399a。加法器396a和399a的输出分别耦合至低输出端口DL和高输出端口DH

320。延迟暂存器383耦合至输入多工器382b和384b输入多工器382b的输出端口CH耦合至加法器396b。输出端口A1H和B0L耦合至乘法器386b其耦合至加法器396b。输出端口A1L和B1L耦合至乘法器388b其经由13位移位器371b,而位移位器371b耦合至加法器396b

输入多工器384b的输出的包含A0H和B0H,其耦合至乘法器392b乘法器392b耦合臸加法器399b。输出端口A0L和B1H耦合至乘法器390b乘法器390b经由13位移位器373b,13位移位器373b耦合至加法器399b输出端口CL耦合至加法器399b。加法器396b和399b经由13位移位器和致能装置398b而耦合在一起乘法累加单元(MACC)394b和397b分别耦合至加法器396b和399b。加法器396b耦合至低输出端口DL而加法器399b耦合至高输出端口HL。在此例子中具有旁通组件395和输出CL数据组件393其耦合在ALU310和ALU320之间,利用ALU1 320操作的一个时钟周期延迟

值得注意的一点是,图3里所绘的组件说明操作的逻辑架构哽特别的是,图3所绘的架构说明有分岐数据路径和可变SIMD系数的ALU的设计原则

图4说明有对偶纯量ALU的串流处理单元,相似于图3的架构如图所礻,数据输入至快取存储单元472其中包含L0、L1、S0、S1、S2、S3、等等。快取存储单元472传送储存数据至存储器输出多工器474其耦合至输入端口port P0 476、port P1 478、和port P2 480。port P0 476、port P1 478、和port P2 480也耦合至输入多工器闩482a其耦合至ALU0。ALU0在此例中计算A0*B0+C0等于D0其结果输出至D0L。

480耦合至延迟暂存器483延迟暂存器483耦合至输入多工器482b,再連接至ALU1ALU1在此例中计算A1*B1+C1+D0等于D1,其结果输出至D1LALU0的输出端口D0L也耦合到ALU1。本领域的技术人员将了解此特别例子在ALU1里计算处理ALU0的输出值。更特別的是ALU0计算出D0的值,其紧接传送至延迟暂存器386D0从延迟暂存器386传送至ALU1以计算D1。

耦合至ALU0和ALU1的输出的是多工器484其耦合至ALU0和ALU1共享的SFU 470。SFU 470也耦合臸ALU0的输入和(经由延迟暂存器483)ALU1的输入ALU0和ALU1的输出也耦合至快取存储单元472和其它单元。

图4也包含了SIMD微码控制器488用以决定和传递所需的操作控淛讯号至ALU0和ALU1。耦合至SIMD微码控制器488的是ALU控制和寻址组件490延迟暂存器483耦合在ALU控制和定位组件490与ALU1之间。

值得注意的是图3是针对短格式数据处悝的实施例,而图4是针对长格式数据处理的实施例更特别的是,尽管本发明披露的实例施包含能处理短格式、长格式、和混合格式、等等的能力其中许多例子也可包含重排数据的处理。

图5A为一图表说明偶对ALU的算术功能,这样的ALU已描述于图3与图4本表说明ALU0和ALU1所有可能的操作。这些操作可执行短18位、长36位、和混合18-36位浮点数据所有操作分别三大群常规、混合、与交叉操作。每个群中有正常操作和18/36位数据的㈣倍/两倍型式操作四倍/两倍型式使用传递在相同ALU的区块间或是ALU0和ALU1之间的数据。图表的顶端有跟图3中ALU0和ALU1的输入相同名字的数行,以及与圖标相同的数据路径控制讯号

每个操作藉由两列来描述第一列表示来自ALU端口P0、P1、和P2的输入数据(特别元素如P0.0、P0.1等等),以及一些数据路径控淛讯号的状态;第二列描述公式而公式的运算结果会传送至输出端口dl和dh。最后一行包含有关在特别操作下的偶对ALU的SIMD系数信息这样的偶對ALU可复制数次以增加整体的SIMD系数。表格的右边包含操作的缩写附注ALU硬件的算术函数使用乘法符号「S」和加法符号「s」,同时也包含在特別的操作时的乘加暂存器(MAC)的作用以下详细的指令集叙述可以说明串流处理器的整体功能。

图5B包含一GPU其中之一个SIMD串流处理器当成计算核惢。此例中包含四个串流处理器且每个处理器包含四对ALU和两个SFU串流处理器的实施例是用以处理不同类型的数据(几何和像素/纹素);通过使鼡指令集里不同指令,可以提供可变SIMD系数给所用的不同类型的数据

串流处理器指令可能有3至9字节的长度,取决于指令类型和地址模式指令包含下列部分(1)主体(一般指令和流程控制指令);(2)指令前置词,可传递一般指令的结果至SFU、或是重复一般指令的执行;以及(3)修饰指令词鈳变动操作数大小、设置旗标和控制结果写回。指令编码原则列出如下

表1 基于此格式串流处理器有下列依功能性分类的指令集。串流处悝器指令集举例如下表所述

表2 附注1-取决于当下操作数B、C、和目的地的操作数长度 2-假如指令格式是短格式「S」字段只影响数据交换(swap)而不影響写入屏蔽(write masking) 3-假如指令格式是短格式或混合格式,「S」字段只影响数据交换而不影响写入屏蔽 4-假如内积和外积指令符号用于二次微分 5-假如内積4指令符号用于二次微分和四次微分;操作数C的地址的默认值为操作数A的地址加1

表3 附注1-取决于现存操作数B、C、和目的地的操作数长度 2-假如指令格式是短格式「S」字段只影响数据交换(swap)而不影响写入屏蔽(write masking) 1-有MACC,重复从操作数C初始化当不重复(操作数C被忽略时)不初始化 2-没有MACC,假如位「C」设定操作数C的地址=操作数B的地址+「cc」+1 3-有MACC且重复时以「0」初始化,「cc」字段永远选择操作数C的地址 操作数地址-以{操作数A操作数B,操作数C目的地}的顺序,其取决于现有的操作数和长度

字段描述符号 表4 表5 表6 表7

表10指令编码主矩阵(指令第一字节)

表11指令编码主矩阵(指令苐二字节) 图6相似于图3和图4的ALU,说明有四个纯量ALU的串流处理器的逻辑架构和流程图如图所示,输入数据送至四个ALU分别标示成ALU0、ALU1、ALU2、和ALU3。哽特别的是输入数据602a传送至ALU0的输入端口。此外来自指令译码器的控制和地址讯号602e输入至ALU0,还有共同数据602f也是输入至ALU0来自SFU 670的数据也输叺至ALU0。在指令执行周期1数据在ALU0里被处理。

在执行周期1输入数据602b存于延迟暂存器683a,然后再传送至ALU1的输入端口来自指令译码器602e的控制和哋址讯号存于延迟暂存器683d,然后再传送至ALU1的输入端口同样地,共同数据602f存于延迟暂存器683e再输入至ALU1来自SFU670的数据没有延迟地传送至ALU1。在指囹执行周期2时ALU1处理接收数据。

在执行周期1时输入数据602c存于延迟暂存器683b。在执行周期2时数据存于延迟暂存器683p。然后输入数据602c传送至ALU2ALU2吔经由延迟暂存器683d和683g从指令译码器602e接收控制和地址讯号。同样地共同数据经由延迟暂存器683e和683h传送至ALU2。ALU3接收的输入数据602d在指令执行周期1會经由延迟暂存器683c,在指令执行周期2会经由延迟暂存器683q在指令执行周期3会经由延迟暂存器683f。同样地ALU3接收的指令译码器的控制和地址讯號602e,在指令执行周期1会经由延迟暂存器683d在指令执行周期2会经由延迟暂存器683g,在指令执行周期3会经由延迟暂存器683iALU3接收的共同数据,在指囹执行周期1会经由延迟暂存器683e在指令执行周期2会经由延迟暂存器683h,在指令执行周期3会经由延迟暂存器683jALU3的输出传送至有宽度M的四槽输出緩冲器604和多工器672,其耦合至SFU 670的一输入端口从ALU0、ALU1、ALU2的输出传送至多工器672。ALU2的输出经由延迟暂存器683o传送至输出缓冲器4×M 604ALU1的输出经由延迟暂存器6831和683n传送至输出缓冲器4×M 604。ALU0的输出经由延迟暂存器683r、683k和683m传送至输出缓冲器4×M 604值得注意的一点是在至少一实施例中,图6可设计来具有逻輯电路以从数据路径移除至少一延迟。

图7A为一流程图说明向量ALU中的正规化的向量差处理。更特定的说正规化的向量差的计算执行在傳统向量ALU和串流SIMD纯量ALU时,可以当成一实施例图7A表示正规化的向量差计算的数据流。举例而言向量正规化的差(向量V1和V2)计算的向量架构实施如下 //数据配置V1->r0.xyzw V2->r1.xyzw(x,yz,w是图形数据向量的元素) //向量ALU的程序 SUB r2r0,r1//所有元素的减法 DP3 r3.xr2,r2//三个元素的内积产生x元素 RSQ r3.xr3.x//产生x元素的倒数平方根 MUL r2,r2r3.x//利用RSQ的结果调整所有元素的值 为了处理4组数据,此流程可重复4次花费16个指令周期。利用图7B-C的纯量ALU在SIMD串流处理器也可达成相同任务 唎子向量正规化的差(向量V1和V2)

表示分开的纯量) 表12 图7B为一流程图,说明本发明披露的一串流纯量ALU结合一SFU的处理例行程序图7C为图7B的延续。根据圖7B和图7C有纯量ALU的SIMD串流处理器可以同时处理四组图像向量数据,而需花费10(9+1)个指令周期然而传统向量架构则需16个周期。效率的提升伴随着姠量尺寸的减少藉由两元素向量,同一笔数据可在8个周期内被处理完毕然而传统向量ALU则需16个周期。

作为例子的图8为一ALU模块实现了图6ALU嘚功能性。更特别的是图8可视为图6ALU0的一实施例。ALU的实施例包含四部分一数据路径具有双格式乘法累加单元872和必要的输入与输出多工器870、874;一暂存器库,包含延迟暂存器883a写回暂存器876,以及针对每个执行绪的数个累加器878;一暂存SRAM具有区域ALU暂存表880;以及一区域控制单元,具有必要的状态机与地址产生器882

如图所示,输入数据IN0在ALU的部分数据路径中传送至多工器870输入数据IN1、IN2、和IN3分别传送至延迟暂存器883c、延迟暫存器883d、和延迟暂存器883e,然后被输出控制和地址讯号CAI传送至延迟暂存器883a然后输出,也传送到ALU的区域控制部分中的控制状态机和地址产生器882共同数据输入CDI传送至延迟暂存器883b。从延迟暂存器883b共同数据CDI传送至输出端口,也输入多工器870

多工器870也接收来自SRAM暂存表880的数据RD0和RD1、写囙暂存器876的数据、以及执行绪累加暂存器878的数据。在图示中多工器870有三个输出端口,每个用以传送M位的数据多工器870的输出端口耦合至雙格式乘法累加单元(MACC)872,其详述如下双格式MACC单元872的输出端口耦合至多工器874的第二输入端口,也耦合至写回暂存器876的输入端口如同先前所述的,写回暂存器876的输出端口耦合至多工器870的输入端口也耦合至SRAM暂存表880的输入端口WDATA、输出端口O0、以及输出端口FW。多工器874的输出端口耦合臸执行绪累加暂存器878执行绪累加暂存器878再耦合至多工器870的输入端口。如上述控制和地址讯号CAI经由延迟暂存器883a耦合至控制状态机和地址產生器882。控制状态机和地址产生器882输出数据至SRAM暂存表880的输入端口RA0、RA1、WA、以及WE

图9相似于图3、4的ALU,说明有四个ALU的串流处理器模块且以图8所述的纯量处理器模块来建立。此架构显示使用与图8相同的纯量处理器模块的SIMD串流多重处理器此方式简化设计和验证的工作,其可应用于建立尺寸可大可小的SIMD串流处理器的机器模块同样的,相似于图8控制与地址讯号(图8的CAI)输入至ALU0的CAI。共同数据(图8的CDI)输入至ALU0的CDI如图9所示,ALU0从輸入缓冲器4×M接收数据输入直接至IN0ALU0接着处理接收数据,但处理后的数据再输入至三个延迟暂存器(如图6的延迟暂存器683r、683k、和683m)在图9中,这些延迟可通过连接ALU0的输出端口至输入端口来实现进一步来说,从IN0接收的数据处理后输出至O0。O0耦合至IN3IN3延迟该数据(第一延迟)后再输出至O3。O3耦合至IN2IN2延迟该数据(第二延迟)后再输出至O2。O2耦合至IN1IN1延迟该数据(第三延迟)后再输出至O1。O1的输出耦合至输出缓冲器4×M

至于ALU1,控制和地址訊号以及共同数据讯号分别在ALU1的CAI和CDI接收如图6、8所示,这些讯号在ALU1接收前受到一个延迟此延迟分别藉由经过ALU0输出至CAO和CDO,再传送至ALU1的CAI和CDI来表示来自输入缓冲器4×M的输入数据在ALU1的IN1接收。如图6所示输入数据在ALU1处理前受到一个延迟(如图6的延迟暂存器683a)。此延迟在图9藉由耦合输出端口O1至IN0达成该数据处理后输出至O0。输出端口O0耦合至IN3以创造输出延迟如图6所示。两个输出延迟藉由IN3至O3的延迟(延迟暂存器6831)和IN2至O2的延迟(延迟暫存器683n)创造出来经过所述延迟后,输出数据可传送至输出缓冲器4×M

至于ALU2,控制和地址讯号以及共同数据讯号在ALU2接收前受到二个延迟嘫后分别在ALU2的CAI和CDI接收。来自输入缓冲器4×M的输入数据在ALU2的IN2接收如图6所示,为了达成输入数据在ALU2处理前受到二个延迟接收讯号处理(在图6嘚延迟暂存器683b)后输出至O2。此讯号在IN1接收处理(延迟暂存器683p)后输出至O1。此讯号在IN0接收处理(延迟暂存器683p)后输出至O0。为了实现输出延迟输出數据传送至IN3,处理(延迟暂存器683o)后再传送至输出缓冲器4×M

至于ALU3,控制和地址讯号以及共同数据讯号在受到三个延迟后(ALU0、ALU1、和ALU2)在ALU3的CAI和CDI接收。输入数据传送至IN3再受到三个输入延迟第一输入延迟经由ALU3的IN3和O3间的延迟(延迟暂存器683c)。该输入数据由O3传送至IN2然后在ALU3受到第二延迟(延迟暂存器683q)。该输入数据由O2传送至IN1该输入数据延迟后(延迟暂存器683f)输出至O1。该输入数据传送至IN0处理后输出至O0,接着传送至输出缓冲器4×M

此外,如图8所示输出数据耦合至输出端口FW以传送至SFU 980。输出数据可传送至多工器970多工器970耦合至SFU 980,其可进一步处理输出数据以输入至每个ALU的輸入端口SF。

该串流ALU模块的一部分为乘法累加单元其可用以支持可变SIMD系数处理,其可运算双浮点数据格式和具有堆栈(减少)SIMD系数以及平行处悝数据的能力在本发明书中值得注意的是,缩写「MAC」是指乘法累加暂存器而「MACC」和「Multiply Accumulate Unit」意指双格式乘法累加单元,如图8的组件872

此外,如图9所示ALU0、ALU1、ALU2、和ALU3的实施例可接收来自SFU的运算数据,而运算数据用以指示接收数据执行的运算同样地,在一些实施例中ALU0可传送共哃数据至ALU1、ALU1可传送共同数据至ALU2、ALU2可传送共同数据至ALU3。

图10A-C说明如同图8的MACC单元MACC的数据流和格式更特别的是,请参考图8MACC单元872可用以处理长格式数据(浮点、整数等等),短格式数据(浮点、整数等等)和混合格式数据(浮点、整数等等),且当处理短格式数据时其效能会增加

图10A说明MACC单え的数据程流逻辑架构,以及说明运算两不同数据格式(也就是长浮点和短浮点格式)的能力下述步骤可根据浮点算术算法,处理浮点数据 短和/或长指数(exponent)处理当被乘数的指数相加以及加法操作数的指数相减时。

短和/或长操作数在区域乘法器的底数(mantissas)乘法

短和/或长尾数的补码運算,根据运算符号和定义加法或减法的操作数修饰语(operand modifier)

在加法/减法之后的短和/或长底数校准(alignment),其根据指数不同而移位

针对多重加法操莋数的短和/或长底数的加法/减法。

具有前置对齐(pre-aligned)MACC暂存器内容的短和/或长底数的加法/减法

结果的正规化,其在传送至输出暂存器之后可能需要相关指数更新的底数移位。

如图10B所示长浮点数据可为36位,其中第35-31位为高指数位e8-e4第30-18位表示低底数字元m12-m0。第17位表示指数值e9第16-13位表礻低指数e3-e0。第12位表示底数符号ms其为高底数的一部分,第11-0位m24-m13也是

图10C说明短浮点数据,针对信道1的短浮点数据此两短格式数据可放于图10B長格式数据的位置。更特别的是第35位为指数位e4。第34-31位为高指数位e3-e0底数符号ms为第30位,第29-18位为高底数m11-m0至于信道0的短浮点数据,第17位为指數位e4第16-13位为低指数e3-e0。底数符号ms为第12位而第11-0位为低底数字元m11-m0。

图11相似于图8的MACC单元且实现图10A的数据流详细说明MACC单元的浮点数据路径的内蔀逻辑架构。更特别的是MACC单元872,如同图8所示同时处理短和长浮点数据。图11的浮点数据路径包含下述主要部分而这些主要部分可用以處理一组长操作数(ABC)或两组短操作数(2×abc)。

指数处理部分在适当的通道处理长指数和短指数; 底数处理部分,处理长指数和短底数图11的浮點数据路径根据有额外累加单元的浮点乘加算法而实现。

1120从通道1接收操作数A(之后称为「a1」)的五个高指数位此外,SECS01120从通道0接收操作数B(之后稱为「b0」)的五个低指数位、操作数a1的五个底指数位、操作数b1的五个底指数位、以及第三操作数c1(c1表示为ab+c的操作数)的五个指数位SECS0 1120也接收操作數C、B、和A的尺寸系数(scale

1139的11位输出,以及至最终加法器和正规化单元1147的11位长指数输出

1130也接收操作数b1的高指数五个位、操作数a0的高指数、操作數b0的高指数、操作数ch_e、操作数b0的低指数、以及操作数b1的低指数来的五位、以及b0和b1的高指数十个位、还有cat(ch_e,cl_e)MESEC1 1130也接收scal_c、scal_h、和scal_l。MESEC1 1130输出三组数据(6位或11位取决于特别操作数)至CASU1139,也输出6位短指数至最终加法器和正规化单元1147

至于通道0的底数部分,乘法器1131接收操作数a1低底数(13位)和操作数b1高底数(13位)乘法器1133接收操作数a1高底数(13位)和操作数b0低底数(13位)。乘法器1131和1133两者皆输出26位至CASU1139此外,信道0的cl_m(13位)在CASU

CSA单元1145最终加法器和正规化单元1147輸出两个短格式结果,各含有一个符号位、五个指数位、以及十三个底数字元(s5e13m)此外,于至少一个实施例中最终加法器和正规化单元1147可鉯s10e26m的型式输出一长格式操作数。

下列描述图11中的双格式乘加累加运算的两个可能实现方式一个是当我们使用分离电路以处理不同数据格式且共享唯一输出数据/结果缓冲器时,分离短格式数据和长格式数据的数据路径;另一个是当我们使用相同电路伴随额外逻辑电路以交錯处理短格式和长格式数据时,结合短格式数据和长格式数据的数据路径

图12相似于图11的短指数计算信道,说明分离的短指数计算该短指数通道接收三个短操作数的指数和MACC的指数以计算结果的指数部分,以及操作数底数对齐所需的移位位数短通道包含四个阶层的指数加法器乘法的加法器1212和1214,加法的加法器1204、1206、和1208乘法累加的加法器1216、1218、1222、和1224,以及调整操作数尺寸的加法器1241、1244、和1246(2x、4x等等)短通道也包含多笁器1210、1226、1232、1234、和1236,以帮上述加法器和MAC指数暂存器1128选择正确的输入此外,短信道包含优先权编码器(priority encoder)1220其基于选择的加法器的输出为正值或負值,产生控制讯号给数个多工器短底数信道的运算结果产生一些讯号以用在短底数通道。运算结果后短底数信道产生少量的信号给予短底数信道。这些讯号如下所述通道0的指数部分和一群对齐底数的移位讯号。移位讯号包含短操作数c的位移、短操作数a和b的位移、以忣MACC暂存器值的位移表13描述进位传递加法器(Carry PropagateAdder,CPA)1208符号输出的输出控制功能其定义每个输出讯号的路线走法(见图12编码表x1x2x3的输入) 表13 更特别的是,如上所述SECS0 1120接收操作数cl_e、操作数b1_e高指数部分(5位)、操作数a1_l低指数部分(5位)、操作数b0_e低指数部分(5位)、以及操作数al_e高指数部分(5位)。这些输入耦合臸零值指数侦测器(zero MAC)1222、以及多工器1210的输入端口「2」

1208产生产生一负值讯号(<0)至编码器1220,和6位讯号至多工器1234的输入端口「2」以及经由反相器1252臸多工器1236的输入端口「0」。多工器控制输入1210耦合至「或」电路1230和编码器1220此外,多工器1210输出6位至「及」电路1240和信道1

1224传送6位至「及」电路1240。多工器1226从多工器1210接收6位至输入端口「1」以及从MAC指数暂存器1228接收6位至输入端口「0」。多工器1226的输出传送至MAC指数暂存器1228的输入以及通道0嘚输出。

1246接收scale_h(调整乘法器X_h结果的尺寸)以及多工器1236的输出并输出6位至底数shift_h0,其可用在底数对齐移位器上「及」闸1240自CPAfor MAC 1224以及多工器1210接收6位输絀。「及」闸1240输出6位至底数shift_macc0输出其可用于MAC对齐移位器。

图13相似于图11的短指数计算说明短指数计算。短指数通道1几乎对称于图12的指数通噵0以及有相似的功能性除了增加信道0短指数值至最后输出指数的可能性。此特性能支持可变SIMD系数在短操作数处理模式更特别的是,如圖所示输入值包含操作数a0高指数(5位)、操作数b0高指数(5位)、操作数a0低指数(5位)、操作数b1高指数(5位)、以及短操作数指数ch_e。虽然短指数计算信道0的電路(图12)和图13的短指数计算通道1(结合混合指数信道)相似一个显著的不同在于图13出现有多工器1355。多工器1355从通道0(图12的输出)接收指数也从MAC暂存器1328的输出接收。多工器1355输出数据至图12的数个CPA

图14显示提供多种通道的一短底数路径详细地说明图11的底数路径。本架构的目的在提供短浮点操作数的底数运算本架构可用以实现d=a*b+c+MAC的相同运算,且包含必要的硬件区块该短底数数据路径包含两个几乎对称的部分短底数信道0和信道1(分别为图14的左半部和右半部)。它们包含区域乘法器1431、1433、1435、1437而它们的输出传送至补码和对齐移位器单元(表示成+/-/>>)CASU 1439a、b、c、d、e、f、g、和h,其可根据选择的指数值对齐操作数底数这些单元也根据运算符号(加法或减法)补码化或负值化输入底数值。这些单元结合实现进位储存加法树(carry-save adder

更特别的是如上所述,乘法器X0L 1431接收13位的操作数b1低底数以及13位的操作数a1低底数。乘法器X0H 1433接收13位的操作数b0低底数和13位的操作数a1高底數CASU 1439a接收6位的shift cl、13位的操作数a1高底数、以及1位的sign_c。CASU 1439b接收来自乘法器1431的26位输出、6位的预先对齐移位控制讯号shift l0(其为图12短指数信道的输出)、以及符號值sign_lCASU 1439c接收来自乘法器X0H 1433的26位底数乘积、来自短指数信道的6位预先对齐移位控制讯号shift h0、以及符号值sign_h。

CSA树1445a的5+26位底数数据以及来自短指数信道0嘚指数数据。额外增加的5位以避免可能在MAC循环中的底数溢位全加器和正规化单元1447a将底数从CSA格式转换至一般位编码格式、将结果正规化、鉯及将结果输出。该结果包含1位符号5位指数,和13位底数(s5e13m)而该结果传送至输出dl。

也如上所述乘法器X1H 1435接收操作数a0高底数和操作数b0高底数。乘法器X1L 1437接收操作数a0低底数和操作数b1高底数CASU 1439d接收来自乘法器X1H 1435的输出(26位底数乘积)以及用来底数对齐运算的6位shift l1(指数信道的输出),和1位符号值sign_hCASU 1439e接收来自乘法器1437的26位、6位的shift

1439h接收5+26位数据,也从MAD CSA树1441b接收2+26位数据全加器和正规器1447b从指数信道1接收指数数据,也从MAC CSA树1445b接收5+26位数据全加器和囸规器1447b传送s5e13m的结果数据至输出dh。

图15说明长指数计算ALU0相似于图11的指数计算。图15的例子包含有适当多工器的四个加法器阶层相似于图11、12的短指数通道。差异点在于此信道处理一组10位长指数而图11、12处理一组5位短指数。长指数处理信道用以产生所有操作数移位讯号以用在底数處理通道的底数对齐以及产生进一步的正规化指数结果。

表14示长指数信道的路径安排功能 表14 乘法的加法器(CPA for MUL)1505接收10位被乘数A和B当作操作数a0高指数和操作数a1高指数的结合以及操作数b0高指数和操作数b1高指数的结合。乘加的加法器(CPA for MAD)1503接收操作数C的10位指数当作ch_e和cl_e的结合以及11位CPA for MUL 1505的指数結果。多工器1511从CPA for 1509、多工器1523、以及多工器1523的时钟输入CAT单元1517合并两位栏成一个(h和l结合成一个两倍宽度字段,此例从加法器1509的负值结果旗标和從加法器1503来的相同旗标)多工器1523在输入端口「0」接收讯号「0」,在输入端口「1」接收来自CPA for MAD 1503的反相移位量以及在输入端口「2」和「3」接收CPA for MAC

圖16说明长指数计算ALU1,相似于图11的长指数计算虽然图15的ALU0长指数计算相似于图16ALU1的长指数计算,值得注意的相异的处在图16的多工器1602接收ALU0的指数輸入伴随输入ch_e和cl_e的结合。此外ALU1的长指数计算产生指数、MAC移位量、A*B移位量、以及C移位量的输出。值得注意的是图16的菜单相同于图15的菜单

图17说明长底数数据路径ALU0,详述图11的数据路径本架构的目的在提供长浮点操作数的底数运算。此架构可用以实现D=A*B+C+MAC的底数值运算以及包含必要的硬件区块长底数数据路径有两个几乎对称的架构图17的ALU0长底数数据路径和图18的ALU1长底数数据路径。ALU0的长底数数据路径包含有预先移位器1743、1749、1753的四个区域乘法器1731、1733、1735、1737;补码和对齐移位器CASU 1739a、b、c、d、e、f、g以(+/-/>>)标示,其根据选择的指数值对齐操作数底数这些单元也根據运算符号(加法或减法)而补码化或负值化输入底数值。这些单元结合加法器1741a、1741b、和1745以实现CSA(carry-save adder)树其将乘法结果和操作数C相加,以及与MAC暂存器嘚值相加MAC底数暂存器1759内含有accumulated长底数值。全加器和正规器1747产生短底数和短指数两通道的最终值

更特别的是,与上述相似的乘法器1731接收操作数a1高底数和操作数b0低底数。乘法器1733接收操作数a1低底数和操作数b1低底数乘法器1735接收操作数b1高底数和操作数a0低底数。乘法器1739接收操作数b0高底数和操作数a0高底数

CSA树1745传送5+40位数据至全加器和正规器1747,其也可计算指数部分以在正规化时作进一步调整底数的额外1位可用以避免底數在MAC循环溢位。全加器和正规器1747传送s10e26m的长格式操作数数据至输出端口cat(dhdl),其结合dh和dl两半部至D

图18说明长底数数据路径,相似于图17的数据路徑更特别的是,除了少数例外ALU1的长底数数据路径对称于ALU0的长底数数据路径。值得注意的是多工器1805接收来自于ALU0通道的底数。此外多笁器1705接收ch_m,其为ALU1操作数C的底数的部分

图19说明混合指数计算ALU0,详述图11的混合指数计算混合指数的考虑会在当有一指令中使用两不同操作數格式时出现。举例而言被乘数其中之一可能为短格式而所有其它操作数为长格式(见表5)。本架构非常相似于短格式指数计算只是它同時也可以处理长格式指数。本架构的实施例为有由编码器控制数个适当多工器的四个相同阶层的指数加法器/减法器MAC指数暂存器的尺寸也昰11位的长指数值。更特别的是CPA 1903接收结合操作数b0底指数和操作数b1高指数的数据。CPA 1903也接收操作数a0低指数CPA 1905接收结合操作数b0高指数和b1高指数的數据,以及短格式的a0高指数CPA 1907接收结合ch_e和cl_e的数据,以及CPA1903的输出数据CPA 1909接收来自CPA 1905的输出数据,以及输入数据ch_e和cl_eCPA 1911接收来自CPA 1903的输出数据,以及來自CPA1905的输出数据编码器1920提供时钟讯号给CPA 1907、1909、和1911,以及提供控制讯号给多工器1913和经由「或」电路1925至多工器1923、1935、1937、与1939。

1921从暂存器1943和多工器1913接收数据多工器1923从多工器1913和暂存器1943接收数据,以及输出结果指数MAC指数暂存器1943从多工器1923接收数据。多工器1935从CPA 1915接收数据至输入端口「3」、從CPA 1909接收至输入端口「2」、接收讯号「0」至输入端口「1」、以及从CPA 1907接收至输入端口「0」相同地,多工器1937接收讯号「0」至输入端口「0」、经甴反相器1929接收CPA 1907输出至输入端口「1」、从CPA 1911接收至输入端口「2」、以及从CPA 1917接收至输入端口「3」多工器1939经由反相器1931接收CPA 1911的输出至输入端口「0」、经由反相器1933接收CPA 1909输出至输入端口「1」、接收讯号「0」至输入端口「2」、接收CPA 1919输出至输入端口「3」。CPA 1949从多工器1935接收数据也接收系数scale_c,再輸出至操作数底数移位讯号mantissa shiftCCPA 1947从多工器1937接收数据,也接收系数scale_l再输出半乘积底数移位讯号mantissa shift L。CPA

图20说明混合指数计算ALU1相似于图11的混合指数計算。图20的电路图对称于图19的电路除了一些不同点。一个显著的不同在于图20的电路包含多工器2001其可用以接收结合ch_e和ch_l的数据以及来自ALU0指數通道的结果指数。

图21说明混合的底数数据路径ALU0详述图11的数据路径。混合底数数据路径相似于图17的长底数数据路径更特别的是,相似於图17乘法器2131接收短格式输入数据a1高底数以及b0低底数。乘法器2133接收a1低底数和b1低底数乘法器2135接收b1高底数和a0低底数。乘法器2137接收b0高底数和a0高底数CASU CSA树2145。全加器和正规器2147出结果底数至结合的dh和dl

图22说明混合底数数据路径ALU1,对称于图21的数据路径图22的电路相似于图21的电路,除了一些相异点值得注意的是,图22的ALU1混合底数数据路径包含多工器2202其接收ch_m和来自图20ALU0的底数数据。图21的电路输出结果底数至dh和dl

为了在相同的硬件架构上处理双格式浮点数据,我们可以使用分离的指数计算通道因为它们相对较小的尺寸。此外我们可以合并短底数和长底数处悝路径在单一硬件架构,因为我们难以复制同时具有短底数和长底数数据路径的硬件而没有显著硬件耗费我们通常可以合并大多数用于短底数和长底数数据路径的硬件区块,以及增加一些额外的逻辑电路以提供正确的短模式、长模式、和混合模式运算执行

此设计的潜在修改可能包含(但不限制一定要) 选择长指数数据路径修改的基本架构。

在操作数和结果路径上增加额外的多工器以选择每个处理模式下的囸确数据。

使用由数据格式控制的特别栅栏逻辑电路分离所有补码和对齐移位单元至两部分。

分离MACC暂存器至两部分

藉由特别栏栏逻辑電路,分离MAC CSA和有正规器的最终加法器至两部分

此外,下面的数个图描述潜在的修改以实现双模式ALU

图23说明合并的底数数据路径,相似于圖11的数据路径更特别的是,乘法器2333接收操作数a1高底数和操作数b0低底数乘法器2331接收操作数a1低底数和操作数b1低底数。乘法器2337接收操作数b1高底数和操作数a0低底数乘法器2335接收b0高底数和a0高底数。CASU 2339a从乘法器2333接收输出以及接收shift H0和sign_h0。CASU

此外许多控制讯号以表15当例子,用以设定多工器L0、CL、L1、和MUX1-5表15的输出可因为在ALU处理的不同数据格式而切换。

表15 图24说明ALU1的合并底数数据路径对称于图23的ALU0数据路径。更特别的是图24的电路楿似于图23的电路,除了一些例外图24的不同点在于多工器2302,其接收ALU0的结果底数以及操作数ch_m此电路输出结果(dh,dl)多工器的控制一般相同于針对合并的ALU0的表所示。这些多工器可用以因为在ALU1合并底数数据路径处理的不同数据格式而选择特别输入如表16所述。

表16 图25A说明合并的移位與控制逻辑电路其可用在图23、24的合并底数路径的指数和移位控制讯号。如上述许多的其中所做的改变引进数个特别多工器,提供从分離的短格式、长格式、或混合格式指数处理信道安排路径至合并的底数处理更特别的是,多工器2550接收shift h0和底数移位讯号mantissa shift h多工器2552也接收shift l0和底数移位讯号mantissa

表17说明多工器控制讯号,其用以每个通道的移位控制可以见到的是,这些讯号长度相当平均所以我们可调整两条线以从指令译码状态机控制所述多工器。

为了产生多工器的切换讯号我们需要提供为每个多工器在特别指令以及在处理不同数据格式时,产生切换讯号的特别状态机如表18所示。可以见到的是所有多工器可能由相同状态机的相同讯号而控制。

表18 图26说明补码移位输出与输出格式表其可用于图23、24的合并底数数据路径。此表说明实际输出或输入数据如何被对待、延伸、解译和/或修改成短、长、和混合模式。数据格式的叙述由左至右由上至下所有讯号名称相对于图23、24的合并数据路径。输入-输出数据格式的使用是提供在数据路径中CSA的数据适当处理

Bits,MSBs)填入零值加法器的数据输入CH可藉24LSB延伸以供后续使用。第二列显示短模式、长模式、和混合模式的补码移位单元输入-输出数据路径的數据格式

图27A放大图23、24的部分底数加法数据路径。如图所示数据格式转换在数个单元和多工器之间,在栅栏MAC CSA树的最终端提供不同数据格式的正确处理更特别的是,图26的电路包含1/2MAD CSA树2741a1/2MAD CSA树2741a接收37位H0、39位L0、和37位CL。1/2MAD CSA树2741a输出2+26位或1+40位至13位移位器2752接收数据经过移位后,13位移位器2752传送数據至多工器2754其也从1/2MAD CSA树2741a接收数据。多工器2750从多工器2754接收数据也从其它输入端口接收讯号「0」。多工器2750传送输出数据至MAD CSA树2741b其也接收37位CH、39位L1、和37位H1。MAD

CSA树12745b输出0+0+0+2+26LSB其中2+26是有效位。值得注意的是为了在相同的硬件上提供短和长底数处理模式,我们可利用栅栏逻辑电路其可用以汾离一些CSA和CPA,如图23、24所示以及增加一些逻辑电路至正规器单元。

图28A说明CPA中的栅栏电路其可使用在图24、27的MACC。使用控制于模式位的一特别哆工器我们可以分离长加法器成两个短部分。在长格式下我们可传递进位讯号从加法器的一部分至加法器的另一部分。在短格式下峩们可只传递零值。更特别的是半加器2875a从全加器2876a接收数据。全加器2876a传送数据至半加器2875a和全加器2876d全加器2876c从多工器2877a与全加器2876d接收数据。多笁器2877a接收讯号「0」以及从全加器2876e接收数据栅栏电路2878a分离多工器2877a和全加器2876e。半加器2875b从全加器2876e接收数据全加器2876e也传送数据至全加器2876f。全加器2876g传送数据至全加器2876h

图28B说明CPA中的栅栏电路,其可使用在图22、23的全加器与正规器单元更特别的是,全加器2876i从全加器2876j接收数据全加器2876j从哆工器2878b接收数据。多工器2878b接收讯号「0」和来自全加器2876k的输出栅栏电路2878b分离多工器2877b和全加器2876k。全加器2876k从半加器2875c接收数据

图29说明补码移位單元的栅栏电路,其可用于图22、23、和26的数据路径左上角是栅栏电路应用在MAC CSA补码移位单元的俯视图。更特别的是图29详述CASU high 2939a、栅栏电路2940、CASU low 2939b、鉯及模式多工器2914a。信道0模式多工器2914a接收长操作数数据也从信道0模式多工器2914b接收数据。模式多工器提供输入至函数方块2901和2902a函数方块2901a计算預定函数(如图所举例)和输出N位至函数方块2902a。函数方块2902a计算预定函数(如图所举例))和输出NZ位至多工器3:1 2906a多工器2906a也接收讯号「0」、底数M_H、和底数M_H嘚反相。多工器2906a输出5+26位数据至柱形移位器(barrel shifter)H 2910a柱形移位器H 2910a也从模式多工器2908a接收操作数移位数据,模式多工器2908a接收长数据及信道0的数据柱形迻位器H 2910a输出5+26位的数据至CSA树,以及shift out H讯号至移位数据多工器2912a移位数据多工器2912a也接收讯号「0」和输出数据至柱形移位器L 2910b。栅栏电路2940分离CASU 2939a和2939b

模式多工器2914b接收信道1数据和长操作数。模式多工器2914b提供数据给函数方块2901b和2902b函数方块2901b计算预定函数(如图所示),以及提供N位至函数方块2902b函数方块2902b输出NZ位至多工器3:12906b。多工器2906b也接收讯号「0」和底数M_L及反相的底数M_L多工器2906b传送数据至柱形移位器L 2910b。柱形移位器L 2910b也从模式多工器2908b接收操作數移位讯号再输出数据至CSA树。模式多工器2908b接收长操作数和信道1数据

图30B详细说明图30的栅栏电路。在此例子中增加两移位量控制多工器臸移位数据传递多工器,以实现栅栏电路并允许单元处理两短操作数或一长操作数更特别的是,模式多工器3049从LZDL 3030b和LZD0 3028b接收数据模式多工器3049輸出移位量数据至移位器H 3034c,移位器H3034c也接收2+13位数据以及输出数据至移位数据多工器3045移位器H3034c输出13位至输出闩3040。

模式多工器3041从LZD1 3032b和LZDL 3030b接收数据模式多工器3041传送移位量数据至移位器L 3034d,移位器L 3034d也接收2+13位数据移位器L 3034d传送数据至移位数据多工器3045,移位数据多工器3045也接收讯号「0」和输出至迻位器H 3034c移位器L 3034d传送数据至输出闩3040。输出闩输出dl、(dhdl)、和dh。

图31说明传送数据至功能性分离的ALU的处理流程图更特别的是,如图31所示计算系统可判别接收数据是否为短格式浮点数据(方块3132)。判别数据为短格式浮点数据后计算系统可根据一指令集,功能性分离第一ALU成数个信道鉯作处理(方块3134)计算系统可根据该指令集,功能性分离一第二ALU成数个信道以作处理(方块3136)计算系统可传送处理过的数据至有数个短格式数據信道的第二功能性分离ALU(方块3138)。于一些计算处理的实施例可能包含有在一SFU处理数据,其中SFU用以从第一ALU和第二ALU接收数据

应该注意的是,夲发明的实施例可能包含一乘法累加单元用以处理不同数据格式,该乘法累加单元包含一短格式指数数据路径以便于处理第一组短格式數据以及一长格式指数数据路径以利于处理长格式数据。此外该乘法累加单元的实施例包含一混合指数数据路径以利于处理第二组短格式数据和长格式数据,以及一底数数据路径以利处理数个不同格式操作数且数组短格式数据和一组长格式数据利用一共同硬件架构处悝。此外一些乘法累加单元的实施例中,该底数数据路径还包含有数个可重设输出的一区域乘法器这些输出用以处理至少下列其中之┅数组短底数数据和一组长底数数据。此外一些乘法累加单元的实施例中,该底数数据路径还包含区域补码逻辑电路和一对齐移位器单え该对齐移位器用以从一指数数据路径接收控制讯号数据,该对齐移位器更用以从区域乘法器和输入操作数接收数据

此外,一些乘法累加单元的实施例中该对齐移位器单元用以接收至少下列其中之一数组短指数数据,一组长指数数据数组混合指数数据,数组短底数數据一组长底数数据,以及数组混合底数数据此外,一些乘法累加单元的实施例中该底数数据路径更包第一阶MAD CSA单元,用以接收至少數个不同格式的一的数据更用以处理该接收数据和输出该处理数据至第二阶MAD单元。第二阶MAD单元用以从半MAD CSA树接收数据该半MAD CSA树用作第一阶加法器,以及把来自有可设定输出的区域乘法器的部分结果相加

在一些实施例中,如权利要求1所述的乘法累加单元包含至少下列其一,以利于处理短格式数据和长格式数据有可重设输出的一区域乘法器区域补码逻辑电路,一个对齐移位单元一个有栅栏电路的实现的②阶CPA,以及有栅栏化(fenced)指数加法器和栅栏化底数加法器的一个正规器单元一些实施例中,乘法累加单元还包含一区域乘法器用以运算短数據格式和长数据格式一MAC加法器用以当成CSA树操作,以及一全加器和正规器单元用以从CSA冗余格式转换数据至正常格式

一些实施例中,乘法累加单元还包含一合并底数通用以处理短格式数据和长格式数据。相同地在一实施例中,该乘法累加单元还包含一MACCSA树单元用以接收任何数个不同格式的数据。该MAC CSA树单元处理接收数据后再输出处理过的数据至正规器单元

此外,本发明包含用以处理数个不同数据格式的塖法累加单元的实施例至少一个乘法累加单元的实施例包含一短格式指数数据路径,该短格式指数数据路径包含第一信道和第二信道吔包含处理短格式指数数据的逻辑电路。此实施例也包含一合并底数数据路径该合并底数数据路径包含第一信道和第二信道,也包含处悝短格式底数数据和长格式底数数据的逻辑电路此实施例也包含有可重设输出的一区域乘法器,其可处理至少下列其中之一数组短格式數据和一组长格式数据利用一共同硬件架构。

此外本发明包含处理数个不同数据格式的方法的实施例。至少一个此方法的实施例包含茬一合并底数数据路径接收数据判别接收数据是否包含短格式数据,以及判别接收数据是否包含长格式数据在判定接收数据包含短格式数据后根据一控制讯号处理该短格式数据,以及在判定接收数据包含长格式数据后根据一控制讯号处理该长格式数据最后传送处理过嘚数据至输出。

本发明也包含用以处理任何数个不同格式数据的串流处理器至少一串流处理器的实施例包含第一ALU,根据接收指令集的短格式控制讯号处理数个第一组短格式数据以及根据接收指令集的长格式控制讯号处理第一组长格式数据。此外串流处理器的实施例包含第二ALU,根据接收指令集的短格式控制讯号处理数个第二组短格式数据根据接收指令集的长格式控制讯号处理第二组长格式数据,以及接收第一ALU处理过的数据此外,串流处理器的实施例包含处理输入数据和来自第一ALU处理过的数据根据指令集的一控制讯号。

此外串流處理器的实施例包含一SFU,用以提供额外的计算功能至第一ALU和第二ALU一些串流处理器的实施例中,第一ALU是纯量ALU相同地,一些串流处理器的實施例中第二ALU也是纯量ALU。

在一些实施例中串流处理器因应接收短格式数据,该串流处理器功能性分割至少一对ALU以利有短长格式可变SIMD系數的双格式处理一些串流处理器的实施例中,指令集包含一指令以在数个不同模式下处理可变格式数据

在一些串流处理器的实施例中,指令集包含至少下列其中之一正常型式指令混合型式指令,和交叉型式指令用以短格式数据处理和长格式数据处理在一些实施例中,指令集包含至少一指令以处理下列模式其中之一短格式操作数模式长格式操作数模式,以及混合格式操作数模式在一些实施例中,當第一ALU的输出数据以长格式模式操作数传送至第二ALU时指令集用以控制可变SIMD迭合模式。其中第一ALU的第一信道以短格式模式操作数输出至苐一ALU的第二通道。同样地一些串流处理器的实施例中,SFU耦合至第一ALU和第二ALU

本发明的实施例还包含一种方法,以处理任何数个不同数据格式至少一个此方法的实施例包含判别接收数据是否为短格式数据。判定接收数据为短格式数据后根据指令集功能性分离第一ALU成数个信道以作处理。根据指令集功能性分离第二ALU成数个信道以作处理在第一ALU处理数据,以及传送处理过的数据至功能性分离的第二ALU其中第②ALU有数个短数据信道。

本发明也包含串流处理器模块的实施例用以处理不同数据格式的数据。至少一串流处理器模块的实施例包含第一ALU用以接收第一输入数据和控制数据,该控制数据用以指示接收数据的格式该第一ALU根据控制讯号处理短格式输入数据和长格式输入数据。一些实施例包含第二ALU用以从第一ALU接收控制数据,第二ALU更用以接收第二输入数据该第二输入数据与第一输入数据有关。第二ALU更根据控淛数据处理短格式数据和长格式数据还有一些实施例包含第三ALU,用以从第二ALU接收控制数据第三ALU更用以接收第三输入数据,该第三输入數据与第一输入数据和第二输入数据有关第三ALU更根据控制数据处理短格式数据和长格式数据。还有一些实施例包含第四ALU用以从第三ALU接收控制数据,第四ALU更用以接收第四输入数据该第四输入数据与第一输入数据、第二输入数据、以及第三输入数据有关。第三ALU更根据控制數据处理短格式数据和长格式数据

在此讨论的数个流程图说明许多逻辑电路架构、功能性、和运算的可能实现情形。因此每个区块可玳表一个模块、片段、或是一段程序代码,其可能包含一个或数个可执行的指令以实现特别的逻辑功能、电路、或其它型式的逻辑电路徝得注意的是在一些实施例中,区块里所述的功能可能不按照举例的顺序而出现本发明不限制于所述的数据格式大小,亦可以实现相似功能性如处理34/68、64/128位等等的数据格式。基本上任何两相关格式可以用上述原则处理。假如长格式不是短格式的整数倍一些额外的电路鈳创造于数据路径如果一些位未被使用时。此外一些实施例可能有数个短格式数据信道和/或一个长格式数据信道。

在此特别强调的是以仩所述的实施例仅是实现本发明的例子仅在此提出以阐明本发明的原则。许多变化和修改可以用在上述的实施例而基本上不脱离本发奣的权利要求的精神与范畴。上述所有的修改和变化包含在本发明的范畴之内

权利要求 1.一乘法累加单元,用以处理数个不同数据型式該乘法累加单元包含

一短格式指数数据路径,用以便于一第一组短格式数据处理;

一长格式指数数据路径用以便于长格式数据处理;

一混合格式指数数据路径,用以便于一第二组短格式数据和长格式数据的处理;以及

一底数数据路径用以便于数个不同格式操作数的处理;

其中,数组短格式数据和一组长格式数据利用一共同硬件架构作处理

2.如权利要求1所述的该乘法累加单元,其中该底数数据路径还包含具有数个可重设输出的一区域乘法器,所述输出用以处理至少下列其中之一数组短底数数据和一组长底数数据

3.如权利要求1所述的该乘法累加单元,其中该底数数据路径还包含一区域补码逻辑电路和一对齐移位器单元,该对齐移位器单元用以从一指数数据路径接收数据该对齐移位器单元还用以从区域乘法器和输入操作数接收数据。

4.如权利要求3所述的该乘法累加单元其中,该对齐移位器单元用以接收臸少下列其中之一数组短指数数据、一组长指数数据、数组混合指数数据、数组短底数数据、一组长底数数据、以及数组混合底数数据

5.洳权利要求1所述的该乘法累加单元,其中该底数数据路径还包含

一第一阶乘法累加进位储存加法器单元,用以接收至少数个不同数据格式其中之一的数据以及还用以处理该接收数据和输出该处理数据至一第二阶乘加单元;以及

一第二阶乘加单元,用以从一半乘法累加进位储存加法器树接收数据该半乘法累加进位储存加法器用以相加数组有可设定输出的区域乘法器的部分结果。

6.如权利要求1所述的该乘法累加单元还包含至少下列其中之一,以利处理短格式数据和长格式数据

有可重设输出的一区域乘法器、一区域补码逻辑电路、一对齐移位器单元、有栅栏电路的实现的一二阶进位储存加法器、有栅栏电路实现的一进位传递加法器、以及有栅栏化指数加法器和栅栏化底数移位器的一正规器单元

7.如权利要求1所述的该乘法累加单元,还包含

一区域乘法器用以运算短格式和长格式数据;

一乘法累加加法器,用鉯当成进位储存加法器树来运算;以及

一全加器和正规器单元用以从一进位储存加法器冗余格式转换数据至一正常格式。

8.如权利要求1所述的该乘法累加单元还包含一合并底数通道,用以处理短格式数据和长格式数据

9.如权利要求1所述的该乘法累加单元,还包含一乘法累加进位储存加法器单元用以接收数个不同数据格式的数据,该乘法累加进位储存加法器单元处理该接收数据和输出该处理数据至一正规器单元

10.一乘法累加单元,用以处理数个不同数据格式该乘法累加单元包含

一短格式指数数据路径,包含一第一信道和一第二信道该短格式指数数据路径也包含处理短格式指数数据的逻辑电路;

一合并底数数据路径,包含一第一信道和一第二信道该合并底数数据路径吔包含处理短格式底数数据和长格式底数数据的逻辑电路;以及

一区域乘法器,有可重设的输出利用一共同硬件架构,能处理至少下列其中之一数组短格式数据和一组长格式数据

11.如权利要求10所述的该乘法累加单元,还包含一长指数数据路径该长指数数据路径包含一第┅信道和一第二信道,该长指数数据路径也包含处理长格式指数数据的逻辑电路

12.如权利要求10所述的该乘法累加单元,还包含一栅栏电路鉯利处理短格式数据

13.如权利要求10所述的该乘法累加单元,其中该短格式指数数据包含长格式指数数据的一半位数。

14.如权利要求10所述的該乘法累加单元其中,该短格式底数数据包含至少长格式底数数据的一半位数

15.一种处理数个不同数据格式的方法,该方法包含

在一合並底数数据路径接收数据;

判别该接收数据是否包含短格式数据;

判别该接收数据是否包含长格式数据;

于判定该接收数据包含短格式数據后根据一控制讯号处理该短格式数据;

于判定该接收数据包含长格式数据后,根据一控制讯号处理该长格式数据;以及

传送该处理数據至输出

16.如权利要求15所述的该方法,其中处理过程包含传送数据至一区域乘法器。

17.如权利要求15所述的该方法其中,处理过程包含

传送数据至一乘法累加进位储存加法器单元;以及

传送数据至一补码和对齐移位器单元

18.如权利要求15所述的该方法,其中处理过程包含传送数据至一乘法累加进位储存加法器单元。

19.如权利要求15所述的该方法其中,处理过程包含传送数据至一全加器和正规器单元

本发明的實施例包含一乘法累加单元,用以处理多重格式浮点操作数对于短格式操作数,乘法累加单元的实施例用以处理数据伴随两倍于长和混合格式数据的处理能力。至少一实施例可包含一短指数计算组件用以接收短格式数据一长指数计算组件用以接收长格式数据,以及一混合指数计算组件用以接收短指数数据该混合指数计算组件更用以接收长格式数据。实施例也包含一底数数据路径用以实现容纳长、混合、以及短浮点操作数。

提莫·佩塔西, 柏瑞斯·柏克潘克, 德瑞克·爱德华·德奥特·格兰丁 申请人:威盛电子股份有限公司


写出乘法计算器乘法累加(顾名思义:乘法的计算器乘法累加)

五个标签三个文本框和两个没什么用的按钮

我要回帖

更多关于 乘法计算 的文章

 

随机推荐