CN1519704A - 包括纯量算术逻辑单元的单指令多数据处理机 - Google Patents
包括纯量算术逻辑单元的单指令多数据处理机 Download PDFInfo
- Publication number
- CN1519704A CN1519704A CNA2004100024197A CN200410002419A CN1519704A CN 1519704 A CN1519704 A CN 1519704A CN A2004100024197 A CNA2004100024197 A CN A2004100024197A CN 200410002419 A CN200410002419 A CN 200410002419A CN 1519704 A CN1519704 A CN 1519704A
- Authority
- CN
- China
- Prior art keywords
- scale
- alu
- vector
- composition
- processing unit
- 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.)
- Granted
Links
- 239000013598 vector Substances 0.000 claims abstract description 148
- 238000012545 processing Methods 0.000 claims abstract description 65
- 238000000034 method Methods 0.000 claims abstract description 9
- 239000000203 mixture Substances 0.000 claims description 109
- 230000006870 function Effects 0.000 claims description 42
- 230000015654 memory Effects 0.000 claims description 10
- 230000003111 delayed effect Effects 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000009183 running Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- QXOQNNAWFUXKMH-UHFFFAOYSA-N 1-(Malonylamino)cyclopropanecarboxylic acid Chemical compound OC(=O)CC(=O)NC1(C(O)=O)CC1 QXOQNNAWFUXKMH-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本发明提供一种纯量处理单元,用来处理至少两个含有多个组合成分的向量。纯量处理单元包括一输入数据缓冲器,将向量的组合成分重新组合,从并行向量成分流排列成连续向量成分流。纯量处理单元还包括至少一个纯量算术逻辑单元,从输入数据缓冲器接收向量的组合成分。纯量算术逻辑单元对向量的各组合单元执行函数运算,并因此判断一运算结果。纯量处理单元还包括从算术逻辑单元接收运算结果的一输出转换器。输出转换器重新将组合成分排列回并行向量成分流。
Description
技术领域
本发明涉及图形向量(vector)处理机,特别是涉及一种包括纯量(scalar)算术逻辑单元(arithmetic logic units;ALUs)的图形处理机,可用于处理图形向量数据。
背景技术
图形数据可利用几何(XYZW)信息或像素值(RGBA)信息为成分,以向量形式组合来表示。通常用来处理这些向量的几何计算器(geometry engine)会将所有的信息组合成分在同一时间处理,因而需要复杂的内部构造,并且数据输入与输出的间也需要较长的时间才能完成图形数据的处理。一般几何计算器是任何现代图形加速器(graphics accelerator)中重要的前端部分。几何计算器处理数据的速度会影响图形加速器结构整体的效率。
最近图形API发展必须要支持特殊指示,并且规定硬件处理几何与像素值向量的能力。由于这些高标准实施规定,现在的图形计算器(graphicsengine)都被实施成能接收复杂输入数据与内部数据纵横制(crossbars),以并行方式处理全部向量的组合成分的一个单元。再者,为了实现这些实施规定,图形计算器利用额外硬件与额外时间,在单指令多数据(SingleInstrction,Multiple Data;SIMD)或多指令多数据(MultipleInstruction,Multiple Data;MIMD)的架构中使用多向量单元。因此导致需要极长指令(Very Long Instruction Word;VLIW)的架构,其中包括复杂的控制与同步单元以支持多线执行(multithreaded execution)的程序。
请参阅图1,图1显示已知技术的向量处理机单元的数据流10。图形向量12的组合成分Xi、Yi、Zi、与Wi输入至缓冲存储器14。每一个图形向量12从缓冲存储器14依序读出到向量ALU 16。单一向量ALU 16同一时间并行运算向量12的每一个组合成分。向量ALU 16包括一个执行特殊运作的特殊功能单元18。ALU 16需要大而复杂的内部结构以便同时执行向量12的四个组合成分(即Xi、Yi、Zi、以及Wi)的运算。此外,ALU 16的内部协议以及通讯也因运算的并行性质而更复杂。向量ALU 16产生最终输出向量20,其中包括的组合成分有Xout、Yout、Zout、以及Wout。已知的向量处理单元同时处理各向量12的所有组合成分,因此这样的向量处理单元的架构为并行(全向量或横向)向量成分流。
请参阅图2,图2显示已知的向量处理机处理一组数据的数据途径图。图2的例子中,“正规化差额”的函数显示如下:
vector Normalized_Difference(vector V1,vector V2)
V1->r0.xyzw V2->r1.xyzw
(xyzw为图形数据的组合成分)
该函数对应的指令如下:
SUB r2,r0,r1//subtraction of all components
DP3 r3.x,r2,r2//dot product of 3 components(x,y,z)with resultin x-component
RSQ r3.x,r3.x//reciprocal square root of result in x-component
MUL r2,r2,r3.x//scaling all components with RSQ result
请参阅图2,其中第一行指令周期(1)将r0与r1相减,并产生各组合成分x、y、z、w的输出向量r2。第二行指令周期(2)将r2与本身点积(dotproduct),只有在x组合成分如r3.x所得到的答案。第三行指令周期(3)中,计算出r 3.x的平方根倒数。如图2所示,第三行指令周期(3)中,只有在向量的x组合成分上运算。第四行指令周期(4)中,r2的组合成分于是按照x组合成分(即r3.x)的比例调整,以产生正规化向量差r2。使用已知技术处理四组的数据,程序会重复四次,也就是一共会花费执行十六行指令周期的时间。
已知技术的向量处理单元,由于要同时(并行)处理向量的组合成分,结构非常复杂。也因此潜伏着延迟时间成为处理过程中极大的问题。已知的向量处理单元也需要较大的指令形式,可以包括控制向量组合成分选路及处理的多位。已知的向量处理单元并需要复杂的输入数据总线,以支持图形API所需要的功能。最后,使用已知的向量处理单元的硬件或软件必须要检测数据相依性。
本发明针对上述已知的向量处理单元的缺点,提供一个使用纯量ALU的向量处理单元。本发明提供的SIMD纯量处理单元,因此会比已知的单元更小而简单。本发明还因此提供一种系统,系统的指令组比已知的向量处理单元更简单,并降低所需的潜伏延迟时间。
发明内容
有鉴于此,本发明提供一种SIMD纯量处理单元,处理至少两个由多成分组合而成的向量。SIMD纯量处理单元还包括至少一个可运作的纯量算术逻辑单元,从输入数据缓冲器接收向量的组合成分。纯量算术逻辑单元可在向量的各组合成分上执行函数运作,以判断结果。SIMD纯量处理单元还包括输出转换器,可从算术逻辑单元接收结果。如有需要,输出转换器还可将组合成分重组成并行向量成分流(parallel vector component flow)。
SIMD纯量处理单元还包括与纯量算术逻辑单元相互通讯的特殊功能单元。特殊功能单元可在向量组合成分上执行某些特殊运算,是纯量算术逻辑单元无法做到的运算。SIMD纯量处理单元还包括多工器,多工器从各纯量算术逻辑单元接收向量组合成分,并为特殊功能单元选择一个组合成分执行特殊运算。
通常向量会有i个组合成分,纯量处理单元于是包括i个纯量算术逻辑单元(scalar arithmetic logic units;SCU)。每一个纯量算术逻辑单元是一个连接至另一个,而指令传送至第一个纯量算术逻辑单元后会先被延迟,再被传送至随后的纯量算术逻辑单元。每一个纯量算术逻辑单元至少有一个指令延迟寄存器,以延迟传给下一个连接的纯量算术逻辑单元的指令。下一个纯量算术逻辑单元的地址与控制讯号也可因此被延迟。
纯量算术逻辑单元还包括一个为要运算向量组合成分的数据路径区,以及一个运算数据路径区的控制与地址模块。纯量算术逻辑单元也可包括至少一个延迟共享数据至下一个连接的纯量算术逻辑单元的数据延迟寄存器。
依照本发明提供一种方法,以SIMD纯量处理单元,处理至少两个由多成分组合而成的向量。本发明的方法最初利用输入数据缓冲器,先将向量的组合成分从并行向量成分流重新排列成连续向量成分流(sequential vectorcomponent flow)。接着,以一各自的纯量算术逻辑单元执行一个向量组合成分的运算,并产生运算结果。特殊功能单元也可在组合成分上执行运算。最后运算结果的各组合成分会被输出至转换器,以重新排列成并行向量成分流。
按照本发明提供的纯量算术逻辑单元,可用在SIMD纯量处理单元上处理向量组合成分。各纯量算术逻辑单元可被连续连接到另一个向量处理单元的纯量算术逻辑单元。纯量算术逻辑单元有一个执行向量组合成分的运算的数据路径区。纯量算术逻辑单元还有一个延迟发布向量的组合成分到下一个连接的纯量算术逻辑单元的延迟寄存器区。依据本发明,纯量算术逻辑单元的延迟寄存器区可包括一个寄存器,用来延迟每个通过纯量算术逻辑单元的向量组合成分。纯量算术逻辑单元还包括一个用来控制数据路径区的地址与控制模块。纯量算术逻辑单元的一个地址与控制延迟寄存器可延迟传地址与控制讯号至下一个连接的纯量算术逻辑单元所需要的时间。纯量算术逻辑单元还可包括一个共享数据延迟寄存器,用来延迟传送共享数据至数据路径区的时间。
依照本发明,可提供SIMD处理单元,用来处理包括x、y、z、w组合成分的向量。各个x、y、z、w组合成分都有多个值。SIMD处理单元有一个正交存取存储器(orthogonal access memory),将各组合成分中多个值的并行向量成分流排列成连续向量成分流。SIMD处理单元还包括一个纯量处理机与正交存取存储器相连。纯量处理机有一排纯量算术逻辑单元,分别用来执行从正交存取存储器传来组合成分的每一个值,并产生结果。纯量处理机还包括一个特殊功能单元,与这排纯量算术逻辑单元相连。特殊功能单元执行从其中一个纯量算术逻辑单元传来结果的运算,并将结果送回原本的纯量算术逻辑单元。SIMD处理单元还包括一个输出正交转换器,与纯量处理机连接。输出正交转换器将从纯量处理机得到的结果,重新排列成并行向量成分流。
为了使本发明的上述和其它特征能更明显易懂,下面将结合附图作详细说明。
附图说明
图1为已知向量处理单元的数据流程图;
图2为已知向量处理单元处理一组数据的路径表示图;
图3为本发明的向量SIMD处理单元;
图4为本发明的纯量SIMD处理机的实体组织图;
图5为使用本发明的向量SIMD处理单元的指令计时图;
图6为图4的纯量算术与逻辑单元(SCU)的内部结构的电路图;
图7a-7b为本发明的向量处理单元处理一组数据的路径表示图。
附图符号说明
10-已知技术的向量处理机单元的数据流;
12-图形向量;
14-输入缓冲存储器;
16-向量ALU;
18-特殊功能单元;
20-输出向量;
30-SIMD处理单元;
32-输入数据缓冲器;
33-分量向量(component vector);
34a-34d-纯量ALU1-4;
36-特殊功能单元;
38-输出正交转换器;
40-纯量输出向量;
42-纯量处理机;
44-多工器;
46-数据路径区;
48-7×4多工器;
50-乘法器;
52-多工器;
54-加法器;
56-进位传播加法器(CPA);
58-2×1多工器;
60-乘法累加器;
62-写回寄存器;
64-累加寄存器;
66-寄存器区;
68、70、72、74、76-寄存器;
78-负载寄存器;
79-存储器区;
80-寄存器档案;
82-控制与地址模块;
84-控制区。
具体实施方式
图示的目的只在于解释本发明的最佳实施例,并非用来限制本发明。图3描述依据本发明建造的SIMD向量处理单元。图形向量12输入至SIMD处理单元30的输入数据缓冲器32,使图形向量12可被重新安排成适当的顺序。输入数据缓冲器32具体来说是四组正交存取存储器,可将组合成分以连续(垂直)向量成分流的方式输出。如同图3所示,向量的组合成分被重新排列而使每一个向量的x组合成分同时被输出。因此,分量向量(componentvector)33的组合成分是被同时输出的X1、X2、X3、以及X4。接着各向量的Y组合成分(即Y1、Y2、Y3、Y4)同时被输出。这样的输出程序也同样发生在Z以及W组合成分上。藉由这种输出程序,向量被输入数据缓冲器32从并行向量成分流转换成连续向量成分流。
分量向量(component vector)33接着会被输入至纯量处理机42,纯量处理机42中有一排四个纯量ALU34a-34d,以及一个特殊功能单元(SpecialFunction Unit;SFU)36。每一个ALU34a-34d与SFU36都为分量向量(component vector)33的组合成分执行运算。分量向量(componentvector)33的组合成分被纯量ALU 34a-34d以并行方式处理,下面会有较详细的说明。纯量处理机42产生一个纯量输出向量40,并将此纯量输出向量40输入至一个输出正交转换器38。纯量输出向量40必须被重新排列,才可产生输出向量20。转换器38是一个垂直寄存器,有能力同时处理向量12的所有组合成分。为了产生输出向量20,转换器38会将纯量处理机12输出的向量组合成分重新排列至正确的并行向量成分流。输出正交转换器38的运作在本发明申请人的另一份专利“同步定期正交数据转换器”说明书中有更详细的解说。
请参阅图4,此图显示纯量处理机42的实体组织。处理机42有四个一样的纯量ALU(SCU)34a-34d以及一个特殊功能单元36。每一个纯量ALU34a-34d都有四个输入I0-I3,以及四个输出O0-O3。每一个纯量ALU34a-34d也有一个存储器地址输入MA、一个共享数据输入C、一个存储器地址输出MO、以及一个共享数据输出CO。每一个纯量ALU 34a-34d还有一个转送输出FWD,与一个特殊功能单元输入SC。
每个分量向量(component vector)33中各有M位的组合成分,分别输入至纯量ALU 34a-34d输入I0-I3的其中特定的一个输入。例如,分量向量(component vector)33包括X组合成分(即X1、X2、X3、X4),第一个X组合成分(即X1)的M位先被输入至纯量ALU34a的I0。同样地,第二个X组合成分(即X2)的M位被输入至第二个纯量ALU 34b的I1,第三个X组合成分(即X3)的M位被输入至第三个纯量ALU 34c的I2,第四个X组合成分(即X4)的M位被输入至第四个纯量ALU 34d的I3。每一个纯量ALU 34a-34d剩下的输入会连接到纯量ALU 34a-34d的一个输出。例如,第一个纯量ALU 34a中,输出O0被连接至输入I3,输出O2被连接至输入I1,输出O3被连接至输入I2。输出O1是最终的输出,用来产生纯量ALU输出向量40的第一个X组合成分。依照图4所示,其它纯量ALU 34b-34d也会将各自剩下来的输出连接至各自的其它输入。各纯量ALU 34a-34d个别将输入I0-I3以及输出O0-O3连接,这样的方式使各纯量ALU依据图5的指示图中每一个指示周期作个别运作。纯量ALU 34b在输出O2产生纯量ALU输出向量40的第二个组合成分,同样地,纯量ALU34c在输出O3产生纯量ALU输出向量40的第三个组合成分,纯量ALU 34d在输出O0产生纯量ALU输出向量40的第四个组合成分。
这里补充前面的叙述,每一个纯量ALU 34a-34d的转送输出FWD连接于一个多工器44。多工器44的输出连接到SFU 36,SFU 36是用来运算特殊的功能,例如1/x、1/sqrt、sqrt、log、exp、等等。SFU 36的输出连接到每一个纯量ALU 34a-34d的SC输入。当纯量ALU 34a-34d执行到无法运算的指令时,SFU 36会帮忙执行运算,并将运算结果传回到适当的纯量ALU34a-34d。
每一个纯量ALU 34a-34d的输入MA用来接收地址与控制讯号。在经过一段适当的延迟时间后,每一个纯量ALU 34a-34d的输出MO转送这些地址与控制讯号到下一个纯量ALU 34a-34d。适当的延迟使得每一个接下来的纯量ALU 34a-34d可以在正确的周期处理指令,以支持分量向量(componentvector)33的并行处理方式。同样地,从存储器传来共享数据的M位会输入至每一个纯量ALU 34a-34d的输入C,并在适当的一段延迟时间后,藉由输出CO转送到下一个纯量ALU 34a-34d。地址与控制讯号因此会从一个纯量ALU 34到另一个纯量ALU 34,间隔适当的延迟时间,一个接着一个的发布。输入数据(向量组合成分)直接分发到各纯量ALU 34一个合适的输入I0-I3,因此提供处理随后的时钟周期所需要的延迟时间。如图4所示,纯量处理机42只有三种单元:纯量ALU 34a-34d、特殊功能单元(SFU)36、以及多工器44,因此在实施上是非常简单的。
请参阅第4、5、6图,其中包括一个纯量处理机42以及指令周期计时的例子。在第一个指令执行周期(1)中,第一个纯量ALU 34a在第一个纯量ALU 34a的输入I0接收到第一个组合成分33a,并对第一个组合成分33a作运算。第一个纯量ALU 34a从微码(microcode)单元接收控制与地址数据,并从存储器接收共享数据。参阅图6,控制与共享数据在控制与共享延迟寄存器68与70中被延迟一个指令执行周期,并以连续顺序转送至下一个纯量ALU 34b,以在下一个指令执行周期作运算。同样地,纯量单元34b、34c、以及34d会用相同的方法,彼此依序延迟并转送对应的控制与共享数据。反之,如图4所示,输入向量成分数据33b将被传送到第二个纯量ALU 34b的输入I1。如第4与图6所示,输入向量成分数据33b会被寄存器72延迟,直到下一个指令周期,然后再从O1转送至同一个纯量ALU 34b的输入I0。其它的纯量ALU 34c以及34d会分别从输入I2、I3接收此输入数据,为各向量组合成分33c、33d提供所需的延迟时间。
在第二个指令执行周期(2)中,第二个纯量ALU 34b对第二组合成分33b作运算,并在延迟后将控制与共享数据转送至第三个纯量ALU 34c。当第二纯量ALU 34b在作运算的同一时间,第一个纯量ALU 34a的输出,与其它向量输入向量组合成分33c、33d将会被纯量ALU 34a、34c、及34d的内部延迟寄存器延迟。同样地,在第三个指令周期(3)中,第三个纯量ALU 34c在其它讯号被延迟的时候,对第三组合成分33c作运算。在第四个指令周期(4)中,第四个纯量ALU 34d在其它讯号被延迟的时候,对第四组合成分33d作运算。由此所见,各纯量ALU 34a-34d分别对向量的一个组合成分作相同指令的运算,只不过是发生在不同的时间。延迟输入及输出向量组合成分的内部延迟寄存器在最终的处理周期会将输出数据对齐,使得每周期提供的执行指令可以产生正确的运算结果。
藉由在每个指令周期延迟讯号,以及交错各纯量ALU 34a-34d的运算,可以只利用一个特殊功能单元来执行纯量运算。如图5所示,各纯量ALU34a-34d的输出还可跳至多工器44的输入(即图4所示的Fwd输出)。藉由跳过延迟程序,SFU 36可以在适当的执行指令周期执行其特殊功能。SFU 36的输出会输入至各纯量ALU 34a-34d的输入SC。就这一点,纯量处理机42可以只使用单个SFU 36作特殊运算。
请参阅图6,图6显示各纯量ALU 34a-34d的内部结构。各纯量ALU 34的构造并不取决于该纯量ALU 34在处理机42中的位置。端口连接的差别是由处理机34中纯量ALU 34的位置规定的。纯量ALU 34有数据路径区46,包括7×4多工器48。7×4多工器48其中一个输入为端口10。7×4多工器48的其它输入为共享数据、从内部寄存器档案80来的已登记数据、写回寄存器62、累加器64、以及负载寄存器78。数据路径区46还包括乘法器50,与多工器48的两个输出连接。乘法器50也与7×4多工器48的其中一个输出连接。乘法器50的另一个输入与乘法累加器(Multiply Accumulator;MACC)60的输出连接。乘法器50的输出与多工器52的输出与加法器54的输入连接。加法器54的输出则连接至乘法累加器60以及进位传播加法器(Carry Propagation Adder;CPA)56。乘法器50、加法器54与CPA 56构成ALU 34的算术计算单元。CPA 56的输出被连接至写回(Write Back;WB)寄存器62,产生输出O0,以及将寄存器62连接至7×4多工器48的输入与寄存器档案80。
数据路径区46还包括第二个2×1多工器58,多工器58的输入与CPA56的输出讯号,以及从特殊功能单元36传回的数据讯号SC连接。多工器64的输出接着被输进累加器寄存器ACCxT 64,累加寄存器64中运作的每一个引线(thread)。累加器寄存器64的输出被连接于7×4多工器48的输入。
纯量ALU 34还包括寄存器区66,包括延迟与处理寄存器。更具体来说,寄存器66有地址与控制延迟寄存器68与共享数据延迟寄存器70,用来提供地址/控制讯号提供所需要的延迟时间,并如先前图5的描述,用作共享数据讯号的延迟。寄存器区66也包括负载寄存器(Load Register;LR)78,从7×4多工器48计算出的结果。寄存器区66也有三个输入延迟寄存器72、74、及76,如图5中所示,这些输入延迟寄存器是用来延迟输入讯号I1、I2、及I3。
请参阅图6,在存储器区79中,纯量ALU 34a有一个暂时的SRAM存储器80,大小为N乘M个位,为7×4多工器48提供读出输出讯号RD0与RD1。存储器80被控制区84的控制与地址模块82所控制,从端口MA接收地址与控制数据,以产生适合的地址与控制讯号到多工器48、乘法器50、及多工器52,以及累加器64与负载寄存器78。
下文与图7a-7b为本发明的指令周期的范例。这些指令的功能与之前所述的图2范例相同,为“正规化差额”的函数。
Vector Normalized_Difference(vector V1,vector V2)
V1->r0.xyzw=r0[0],r0[1],r0[2],r0[3]
V2->r1.xyzw=r1[0],r1[1],r1[2],r1[3]
(x,y,z,w-图形数据向量的组合成本,r[0-3]为分别的纯量)
对于此函数在纯量处理机30中对应的指令为:
Repl(j<3)SUB R2[j],r0[j],r1[j]//subtraction of allcomponents
Repl(j<3)MAC Null,r2[j],r2[j]//dot product of all componentswith result in x-component,implements as multiply-accumulate
RSQ ACC,FWD//reciprocal square root of result in x-componentforwarded to Special Function Unit,paired with MAC
Repl(j<3)MUL r2[j],r2[j],r2[j],ACC//scaling allcomponents with the RSQ result
(Repl(j<3)为相同指令的复制前置)
图7a-7b显示每一个纯量ALU34a-34d执行先前描述的函数vectorNormalized_Difference(vector V1,vector V2)的运算。在第一行指令周期(1)中,第一个纯量ALU 34a将第一个x组合成分执行减法。的后在第二个指令周期(2)中,纯量ALU 34a将第二个y组合成分执行减法。在第三个指令周期(3)中,纯量ALU 34a将第三个z组合成分执行减法。在第四个指令周期(4)的一开始,纯量ALU 34a利用乘法累加运算,开始将所有组合成分执行点乘。在第四个指令周期(4)中,x组合成分会被乘。在第五个指令周期(5)中,y组合成分会被乘,以及在第六个指令周期(6)中,z组合成分会被乘,以计算出点乘的结果。接着在第七个指令周期(7)中,点乘结果会被转送到特殊功能单元36,随即执行平方根倒数(RSQ)。如同先前所描述的,特殊功能单元36用来执行ALU34a无法运算的特殊函数,例如计算平方根、平方根倒数、log、exp等等。当特殊功能单元36执行RSQ运算时,纯量ALU34a保留在闲置状态,然后将计算出的运算结果放入累加器(ACC)中。在第八个指令周期(8)中,累加器(ACC)的结果与x组合成分相乘,以按照比例放大。同样地,在第九个指令周期(9)中,累加器的结果与y组合成分相乘,以及在第十个指令周期(10)中,累加器的结果与z组合成分相乘。如此,第一纯量ALU 34a的结果在第十个指令周期就会计算好,也就是纯量ALU 34会有九个指令周期忙碌,只有一个指令周期是闲置的。
第二、第三、及第四个纯量ALU 34b、34c、34d分别在延迟过后,对一个向量组合成分执行与第一个纯量ALU 34a相同的指令。如图7a-7b所示,第二个纯量ALU 34b在延迟一个指令周期后,执行与第一个纯量ALU 34a相同的指令于第二组的组合成分。第三个纯量ALU 34c在第二个纯量ALU 34b执行指令之后的一个指令周期开始运算,而第四个纯量ALU 34d在第三个纯量ALU 34c执行指令的后的一个指令周期开始运算。
藉由将每一个ALU 34a-34d执行指令的时间依序延迟一个周期,在纯量处理机42中,只使用一个特殊功能单元36是可行的。如图7a-7b所示的函数运算中,第七个指令周期(7),特殊功能单元36会为第第一个纯量ALU34a的指令引线计算平方根倒数(RSQ)。而在第八个指令周期(8)中,特殊功能单元36会为第二个纯量ALU34b的指令引线计算平方根倒数(RSQ)。第三个纯量ALU 34c的平方根倒数(RSQ)会在第九个指令周期(9)被计算,第四个纯量ALU 34d的平方根倒数(RSQ)则会在第十个指令周期(10)被计算。
SIMD纯量处理单元30可以与每一个纯量ALU 34a-34d同时处理四组图案数据。如图7a-7b所示。与已知的图形处理机需要十六指令周期比较,完整的执行运算总共只需十三个指令周期(事实上平均为十个周期)。每个纯量ALU 34a-34d只用了九个指令周期运算,并在一个指令的周期时间内利用特殊功能单元36。因此总共只需要十个指令周期,便可得到一组图形数据的结果,而已知处理机则须花十六个指令周期。此外,SIMD纯量处理机42的效率随着向量的尺寸增加。举例来说,同样是处理二元(2-element)向量数据,本发明的处理机42只一共需八个指令周期,就可代替使用已知处理机的架构所需的十六个周期。
本发明提供基本纯量ALU 34a-34d,在SIMD模式下可被复制与控制。这样的架构可藉由高密度微码增强效能以及简化基本指令。此外,本发明因简化编辑程序以及减少指令个数,可提供比已知技术较低负担的多引线支持硬件。本领域的技术人员除了可以将该纯量处理机42应用为图形处理机,还可应用在处理其它环境种类上。
本领域的技术人员还可对本发明做额外的修改及改进,像是以多于四个ALU 34处理各种更大的向量。也就是说ALU 34的个数可被变更,以提供更大的效率。上述实施例中描述的特定组件组合只代表本发明某种实施并非用以限定在本发明精神与范围内另外的实施装置,因此本发明的保护范围以本发明的权利要求为准。
Claims (23)
1.一种SIMD纯量处理单元,用来处理至少两个包括多个组合成分的向量,该SIMD纯量处理单元包括:
一输入数据缓冲器,将所述向量的所述组合成分重新组合,从一并行向量成分流排成一连续向量成分流;
至少一个纯量算术逻辑单元,从该输入数据缓冲器接收所述向量的所述组合成分,该纯量算术逻辑单元对所述向量的所述组合成分执行一运算,以测定一结果;以及
一输出转换器,从该纯量算术逻辑单元接收该结果,该输出转换器将该结果的所述组合成分从新组合,从该连续向量成分流排成该并行向量成分流。
2.如权利要求1所述的纯量处理单元,还包括一特殊功能单元,与该纯量算术逻辑单元互相通讯,该特殊功能单元用在对所述向量组合成分执行运算。
3.如权利要求2所述的纯量处理单元,还包括一多工器,从该纯量算术逻辑单元接收多个向量组合成分,并选择一组合成分给该特殊功能单元处理。
4.如权利要求1所述的纯量处理单元,其中包括i个纯量算术逻辑单元,各向量有i个组合成分。
5.如权利要求4所述的纯量处理单元,其中所述纯量算术逻辑单元以一连续结构连接,各纯量算术逻辑单元从前一个纯量算术逻辑单元被延迟一指令后执行运算。
6.如权利要求5所述的纯量处理单元,其中各纯量算术逻辑单元为随后的一纯量算术逻辑单元设定延迟地址、以及控制与共享数据讯号。
7.如权利要求1所述的纯量处理单元,其中各纯量算术逻辑单元包括:
至少一个指令延迟寄存器,延迟传送指令至下一个以一连续结构连接的纯量算术逻辑单元。
一数据路径区,对所述向量的所述组合成分执行运算;以及
一控制与地址模块,操作该数据路径区。
8.如权利要求7所述的纯量处理单元,其中各纯量算术逻辑单元还包括至少一个数据延迟寄存器,延迟传送数据至下一个连续连接的纯量算术逻辑单元。
9.一种处理至少两个包括多个组合成分的向量的方法,包括一SIMD纯量处理单元,其中有一输入数据缓冲器、至少一个纯量算术逻辑单元、以及一输出转换器,该方法包括以下步骤:
(1)利用该输入数据缓冲器,重新组合所述向量的所述组合成分,从一并行向量成分流排成一连续向量成分流;
(2)利用一特定的纯量算术逻辑单元,将从该输入数据缓冲器接收的每一个组合成分,分别执行一运算,以产生一结果;以及
(3)利用一输出转换器,将该结果的所述组合成分从新组合成该并行向量成分流。
10.如权利要求9所述的处理方法,其中该SIMD纯量处理单元还包括一特殊功能单元,以及步骤(2)还包括利用该特殊功能单元对各组合成分执行一运算。
11.如权利要求10所述的处理方法,其中该SIMD纯量处理单元还包括一多工器,从各纯量算术逻辑单元接收多个向量组合成分,以及步骤(2)还包括利用该多工器选择从该纯量算术逻辑单元计算的该结果,给该特殊功能单元运算。
12.如权利要求9所述的处理方法,其中所述纯量算术逻辑单元以一连续地址、控制与数据讯号分布的方式连接,以及该方法还包括延迟一指令至随后的一个算术逻辑单元。
13.如权利要求9所述的处理方法,其中所述纯量算术逻辑单元彼此连续连接,以及该方法还包括延迟多个向量组合成分至下一个连续连接着的多个算术逻辑单元。
14.如权利要求9所述的处理方法,其中各纯量算术逻辑单元包括一数据路径区,并且步骤(2)还包括使用该路径数据区执行该运算。
15.如权利要求9所述的处理方法,其中各纯量算术逻辑单元有一控制与地址模块,并且步骤(2)还包括利用该控制与地址模块控制该数据路径区的该运算。
16.一种SIMD纯量处理单元,用来处理多个向量的多个组合成分,该SIMD纯量处理单元包括:
一种转换所述向量的所述组合成分的装置,从一并行向量成分流重新排成一连续向量成分流;
一种对以该连续向量成分流排列的所述向量的所述组合成分执行运算的装置,并产生多个向量组合成分的一结果;以及
一种将该结果从该连续向量成分流转换为一并行向量成分流的装置。
17.如权利要求16所述的SIMD纯量处理单元,其中:
转换所述向量的所述组合成分,从一并行向量成分流重新排成一连续向量成分流的装置为一输入数据缓冲器;
对所述向量的所述组合成分执行运算的装置为至少一个纯量算术逻辑单元;以及
将多个组合成分的该结果从该连续向量成分流转换为该并行向量成分流的装置为一正交转换器。
18.一种给一纯量处理单元的算术逻辑单元,用来处理多个向量成分,该算术逻辑单元可与另一算术逻辑单元连接成连续结构,该算术逻辑单元包括:
一数据路径区,执行所述向量成分的运算;以及
一数据延迟寄存器区,延迟所述向量成分传至下一个以一连续结构连接的算术逻辑单元。
19.如权利要求18所述的算术逻辑单元,还包括一地址与控制模块,用在该数据路径区的控制。
20.如权利要求19所述的算术逻辑单元,还包括一地址与控制延迟寄存器,用来延迟地址与控制讯号的计时。
21.如权利要求20所述的算术逻辑单元,还包括一共享数据延迟寄存器,用来延迟递送共享数据至接下来算术逻辑单元的该数据路径区。
22.如权利要求21所述的算术逻辑单元,其中该延迟寄存区包括一延迟寄存器,用在通过该纯量算术逻辑单元的向量成分的输入或输出。
23.一种SIMD纯量处理单元,用来处理一包括x、y、z、与z的组合成分的向量,每一个所述x、y、z、与z组合成分中有多个值,该纯量处理单元包括:
一正交存取存储器,用来将各成分的所述值重新组合,从一并行向量成分流排成一连续向量成分流;
一纯量处理机,与该正交存取存储器相连互相通讯,该纯量处理机包括:
一组纯量算术逻辑单元,各纯量算术逻辑单元用来执行一运算于从该正交存取存储器传来的该成分的一个值上,并产生一结果;以及
一特殊功能单元,与该组纯量算术逻辑单元相连互相通讯,该特殊功能单元在从一纯量算术逻辑单元传来的结果执行一运算,并将该结果传回该算术逻辑单元;以及
一输出正交转换器,与该纯量处理单元相连互相通讯,该输出正交转换器将从该纯量处理单元传来的该结果重新组合成一并行向量成分流。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/354,795 US7146486B1 (en) | 2003-01-29 | 2003-01-29 | SIMD processor with scalar arithmetic logic units |
US10/354,795 | 2003-01-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1519704A true CN1519704A (zh) | 2004-08-11 |
CN1272705C CN1272705C (zh) | 2006-08-30 |
Family
ID=32907589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100024197A Expired - Lifetime CN1272705C (zh) | 2003-01-29 | 2004-01-29 | 包括纯量算术逻辑单元的单指令多数据处理机 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7146486B1 (zh) |
CN (1) | CN1272705C (zh) |
TW (1) | TWI230869B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104756069A (zh) * | 2012-06-14 | 2015-07-01 | 爱立信调制解调器有限公司 | 元素选择单元及其中的方法 |
CN107688466A (zh) * | 2016-08-05 | 2018-02-13 | 北京中科寒武纪科技有限公司 | 一种运算装置及其操作方法 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7383427B2 (en) * | 2004-04-22 | 2008-06-03 | Sony Computer Entertainment Inc. | Multi-scalar extension for SIMD instruction set processors |
US8024549B2 (en) * | 2005-03-04 | 2011-09-20 | Mtekvision Co., Ltd. | Two-dimensional processor array of processing elements |
CN101359284B (zh) * | 2006-02-06 | 2011-05-11 | 威盛电子股份有限公司 | 处理数个不同数据格式的乘法累加单元及其方法 |
US8766995B2 (en) | 2006-04-26 | 2014-07-01 | Qualcomm Incorporated | Graphics system with configurable caches |
US8884972B2 (en) * | 2006-05-25 | 2014-11-11 | Qualcomm Incorporated | Graphics processor with arithmetic and elementary function units |
US8869147B2 (en) | 2006-05-31 | 2014-10-21 | Qualcomm Incorporated | Multi-threaded processor with deferred thread output control |
US8644643B2 (en) | 2006-06-14 | 2014-02-04 | Qualcomm Incorporated | Convolution filtering in a graphics processor |
US8766996B2 (en) | 2006-06-21 | 2014-07-01 | Qualcomm Incorporated | Unified virtual addressed register file |
DE602006016590D1 (de) * | 2006-07-12 | 2010-10-14 | Procter & Gamble | Auf Gelnetzwerk-Emulgatoren basierende Verdickersysteme für Haarfärbe und Haaraufhellungszusammensetzungen |
US8996846B2 (en) | 2007-09-27 | 2015-03-31 | Nvidia Corporation | System, method and computer program product for performing a scan operation |
US8284188B1 (en) | 2007-10-29 | 2012-10-09 | Nvidia Corporation | Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects |
US8264484B1 (en) | 2007-10-29 | 2012-09-11 | Nvidia Corporation | System, method, and computer program product for organizing a plurality of rays utilizing a bounding volume |
US8065288B1 (en) * | 2007-11-09 | 2011-11-22 | Nvidia Corporation | System, method, and computer program product for testing a query against multiple sets of objects utilizing a single instruction multiple data (SIMD) processing architecture |
US8661226B2 (en) * | 2007-11-15 | 2014-02-25 | Nvidia Corporation | System, method, and computer program product for performing a scan operation on a sequence of single-bit values using a parallel processor architecture |
US20090138680A1 (en) * | 2007-11-28 | 2009-05-28 | Johnson Timothy J | Vector atomic memory operations |
US8773422B1 (en) | 2007-12-04 | 2014-07-08 | Nvidia Corporation | System, method, and computer program product for grouping linearly ordered primitives |
US8243083B1 (en) | 2007-12-04 | 2012-08-14 | Nvidia Corporation | System, method, and computer program product for converting a scan algorithm to a segmented scan algorithm in an operator-independent manner |
US8923510B2 (en) * | 2007-12-28 | 2014-12-30 | Intel Corporation | Method and apparatus for efficiently implementing the advanced encryption standard |
US20190377580A1 (en) * | 2008-10-15 | 2019-12-12 | Hyperion Core Inc. | Execution of instructions based on processor and data availability |
WO2010043401A2 (en) | 2008-10-15 | 2010-04-22 | Martin Vorbach | Data processing device |
US8321492B1 (en) | 2008-12-11 | 2012-11-27 | Nvidia Corporation | System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm |
US9164770B2 (en) * | 2009-10-23 | 2015-10-20 | Mindspeed Technologies, Inc. | Automatic control of multiple arithmetic/logic SIMD units |
US9235414B2 (en) * | 2011-12-19 | 2016-01-12 | Intel Corporation | SIMD integer multiply-accumulate instruction for multi-precision arithmetic |
CN104011664B (zh) * | 2011-12-23 | 2016-12-28 | 英特尔公司 | 使用三个标量项的超级乘加(超级madd)指令 |
US9019284B2 (en) | 2012-12-20 | 2015-04-28 | Nvidia Corporation | Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline |
US9123128B2 (en) * | 2012-12-21 | 2015-09-01 | Nvidia Corporation | Graphics processing unit employing a standard processing unit and a method of constructing a graphics processing unit |
CN106650923B (zh) * | 2015-10-08 | 2019-04-09 | 上海兆芯集成电路有限公司 | 具有神经存储器与神经处理单元与定序器的神经网络单元 |
US10997116B2 (en) * | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4524455A (en) * | 1981-06-01 | 1985-06-18 | Environmental Research Inst. Of Michigan | Pipeline processor |
US4739474A (en) * | 1983-03-10 | 1988-04-19 | Martin Marietta Corporation | Geometric-arithmetic parallel processor |
US5179714A (en) * | 1988-10-07 | 1993-01-12 | Martin Marietta Corporation | Parallel bit serial data processor |
US5642444A (en) * | 1994-07-28 | 1997-06-24 | Univ North Carolina | Specialized image processing system architecture and method for image data arrays |
-
2003
- 2003-01-29 US US10/354,795 patent/US7146486B1/en not_active Expired - Lifetime
-
2004
- 2004-01-14 TW TW093100869A patent/TWI230869B/zh not_active IP Right Cessation
- 2004-01-29 CN CNB2004100024197A patent/CN1272705C/zh not_active Expired - Lifetime
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104756069A (zh) * | 2012-06-14 | 2015-07-01 | 爱立信调制解调器有限公司 | 元素选择单元及其中的方法 |
CN104756069B (zh) * | 2012-06-14 | 2017-08-04 | 瑞典爱立信有限公司 | 元素选择单元及其中的方法 |
CN107688466A (zh) * | 2016-08-05 | 2018-02-13 | 北京中科寒武纪科技有限公司 | 一种运算装置及其操作方法 |
CN107688466B (zh) * | 2016-08-05 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 一种运算装置及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1272705C (zh) | 2006-08-30 |
TW200413946A (en) | 2004-08-01 |
US7146486B1 (en) | 2006-12-05 |
TWI230869B (en) | 2005-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1272705C (zh) | 包括纯量算术逻辑单元的单指令多数据处理机 | |
US11620491B2 (en) | Neural processor | |
US11726950B2 (en) | Compute near memory convolution accelerator | |
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
US8049760B2 (en) | System and method for vector computations in arithmetic logic units (ALUs) | |
CN1044646C (zh) | 动态多方式并行处理器阵列体系结构 | |
US7584342B1 (en) | Parallel data processing systems and methods using cooperative thread arrays and SIMD instruction issue | |
US7788468B1 (en) | Synchronization of threads in a cooperative thread array | |
US8112614B2 (en) | Parallel data processing systems and methods using cooperative thread arrays with unique thread identifiers as an input to compute an identifier of a location in a shared memory | |
TW201734770A (zh) | 計算設備和相應計算方法 | |
JPH0635877A (ja) | アレイ・プロセッサ | |
JPH07271764A (ja) | 計算機プロセッサ及びシステム | |
CN1434380A (zh) | 图像处理装置和方法以及用于该装置的编译程序 | |
CN1656445A (zh) | 对宽存储器访问 | |
Guo et al. | Balancing efficiency and flexibility for DNN acceleration via temporal GPU-systolic array integration | |
US20210216312A1 (en) | Semiconductor device | |
JP2020525907A (ja) | 高スループットプロセッサ | |
US8024549B2 (en) | Two-dimensional processor array of processing elements | |
WO2008027567A2 (en) | Integral parallel machine | |
Li et al. | Fsa: A fine-grained systolic accelerator for sparse cnns | |
Haghi et al. | FLASH: FPGA-accelerated smart switches with GCN case study | |
US20220083314A1 (en) | Flexible accelerator for a tensor workload | |
Taka et al. | MaxEVA: Maximizing the Efficiency of Matrix Multiplication on Versal AI Engine | |
CN116774968A (zh) | 具有一组线程束的高效矩阵乘法和加法 | |
US11625453B1 (en) | Using shared data bus to support systolic array tiling |
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20060830 |
|
CX01 | Expiry of patent term |