CN100474235C - 用于单指令/多数据指令的乘法积累单元 - Google Patents

用于单指令/多数据指令的乘法积累单元 Download PDF

Info

Publication number
CN100474235C
CN100474235C CNB028196473A CN02819647A CN100474235C CN 100474235 C CN100474235 C CN 100474235C CN B028196473 A CNB028196473 A CN B028196473A CN 02819647 A CN02819647 A CN 02819647A CN 100474235 C CN100474235 C CN 100474235C
Authority
CN
China
Prior art keywords
vector
carry
wallace tree
accumulation operation
partial product
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
Application number
CNB028196473A
Other languages
English (en)
Other versions
CN1633637A (zh
Inventor
S·斯特拉斯杜斯
Y·廖
A·杰布森
N·帕弗
D·邓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1633637A publication Critical patent/CN1633637A/zh
Application granted granted Critical
Publication of CN100474235C publication Critical patent/CN100474235C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

用于执行单指令/多数据(SIMD)操作的紧耦合(tightly coupled)的双16位乘法积累(MAC)单元可促进到流水线中另一个操作的中间结果,以解决积累依存关系惩罚(accumulating dependency penalty)。该MAC单元也可被用来执行32位×32位操作。

Description

用于单指令/多数据指令的乘法积累单元
技术领域
本发明涉及乘法积累单元,有其涉及用于单指令/多数据指令的乘法积累单元。
背景技术
数字信号处理器(DSP)可用作SIMD(单指令/多数据),或数据并行处理器。在SIMD操作中,单个指令被发送到许多处理元件,这些处理元件在不同的数据上执行相同的操作。SIMD指令提供用于几种类型的标准操作,这包括加法、减法、乘法、乘法积累(MAC)和许多用于执行如裁剪(clipping)和双线性内插操作这样的专用指令。
许多DSP应用,包括许多言语编解码器,需要高性能16位乘法积累(MAC)操作。为实现关于这些16位DSP应用的高性能,可引入64位SIMD指令。该64位SIMD指令可被用来更有效的处理媒体流并减少寄存器压力(registerpressure)及存储器通信量,这是由于4个16位数据项可一次被载入到64位寄存器中。
虽然对实现高性能而言,高吞吐量是重要的因素,但是在设计用于无线/手提式产品的DSP时,能量消耗也可能是重要的考虑因素。因此,我们也需要在DSP中使用能够具有高性能且低需要功率的MAC体系结构。
发明内容
本发明旨在解决上述技术问题。
根据本发明的一种方法,其特征在于,包含:在流水线中执行第一乘法积累操作中的第一压缩操作,其中所述执行第一压缩操作包含将第一多个部分乘积压缩为第一和向量与第一进位向量,并将第二多个部分乘积压缩为第二和向量与第二进位向量;在所述第一乘法积累操作中的第一压缩操作中生成两个或更多中间向量,其中所述两个或更多中间向量至少包括一个中间和向量和一个中间进位向量,其中所述第一与第二和向量以及所述第一与第二进位向量被压缩成所述中间和向量与中间进位向量;以及在所述流水线中将所述中间和向量和所述中间进位向量的每一个的至少一部分转发到第二乘法积累操作,其中所述第二乘法积累操作与所述第一乘法积累操作相分离。
根据本发明的一种方法,包含:在乘法积累操作的第一***树压缩阶段中,将第一多个部分乘积压缩成第一和向量与第一进位向量,以及将第二多个部分乘积压缩到第二和向量与第二进位向量;将所述第一和第二和向量以及所述第一和第二进位向量压缩成第一中间和向量与第一中间进位向量;以及在所述乘法积累操作的第二阶段中,压缩所述中间和向量与第三多个部分乘积,并压缩所述中间进位向量和第四多个部分乘积。
根据本发明的一种装置,包含:第一和第二***树压缩单元,用于在乘法积累操作的第一和第二阶段中压缩向量;压缩器,其作用为将所述乘法积累操作的所述第一阶段中来自所述第一和第二***树单元的多个向量输出压缩成两个中间向量,所述两个中间向量包括中间和向量和中间进位向量;以及从所述压缩器的输出到复用器的输入的数据通路,所述复用器可用于在所述乘法积累操作的所述第二阶段中,将所述中间向量的其中一个选择性地输入到所述第一和第二***树压缩单元的其中一个。
根据本发明的一种***,包含:静态随机地址存储器;以及与所述静态随机存取存储器联结的处理器,所述处理器包含双乘法积累单元,所述单元包括:第一和第二***树压缩单元,用于在乘法积累操作的第一和第二阶段中压缩向量;压缩器,其作用为将来自所述乘法积累操作的所述第一阶段中的所述第一和第二***树单元的多个向量输出压缩成两个中间向量,所述两个中间向量包括中间和向量与中间进位向量;以及从所述压缩器的输出到复用器的输入的数据通路,所述复用器可用于在所述乘法积累操作的所述第二阶段中,将所述中间向量的其中一个选择性的输入到所述第一和第二***树压缩单元的其中一个。
附图说明
图1是依照实施例的双乘法积累(MAC)单元的框图。
图2是依照实施例阐明MAC SIMD(单指令/多数据)操作的框图。
图3A到3C是依照实施例描述MAC SIMD操作的流程图。
图4A到4C是依照实施例阐明利用数据转发的流水线指令序列(pipelinedinstruction sequences)的框图。
图5A到5C是依照实施例阐明利用中间数据转发(intermediate dataforwarding)的流水线指令序列的框图。
图6A到6B是依照实施例描述在紧耦合的双16位MAC单元上执行的32位×32位MAC操作的流程图。
图7是依照实施例包括MAC单元的移动视频单元的框图。
具体实施方式
图1示出了依照实施例的乘法积累(MAC)单元100。该MAC单元100可被用来执行许多不同的SIMD(单指令/多数据)操作。
MAC单元100可具有紧耦合的双16位MAC体系结构。图2中概念地示出可由这样的MAC单元执行的16位MAC SIMD操作200。两个64位寄存器,202(wRn)和204(wRm)的内容可被视为4对16位数值,A0-A3(wRn)和B0-B3(wRm)。wRn的第一16位到第四16位分别与wRm的第一16位到第四16位相乘。然后,该4个相乘的结果P0-P3被加到64位寄存器206(wRd)的数值中,且该结果被发送到寄存器206。
可通过4个执行阶段来实现该MAC操作200:(1)进行B1和B0的工作台编码(booth encoding)和***树压缩;(2)进行B3和B2的工作台编码和***树压缩;(3)4到2(4-2)压缩,并将该结果的低32位相加;以及(4)将该结果的高32位相加。这4个阶段可被分别称作CSA0、CSA1、CLA0和CLA1阶段。
图3A到3C示出了依照实施例的描述该MAC操作200的实现300的流程图。在CSA0阶段中,MUX和工作台编码器单元(booth encoder unit)102选择B0(16位)并对那些位进行编码(框302)。生成控制信号,每个这样的控制信号从集合{0,-A0,-2A0,A0,2A0}中选择部分乘积向量(partial product vector)。生成9个部分乘积向量,Pa0到Pa8,并将其传递到MUX阵列104(框304)。所有的9个部分乘积向量和寄存器206(wRd)中数值的低32位通过***树单元106而被压缩到两个向量中(框306)。该两个向量包括和向量与进位向量(carry vector),它们分别被存储在和向量触发器(FF)108中和进位向量触发器110中。
MUX和工作台编码器单元112选择B1(16位)并对那些位进行编码(框308)。生成控制信号,每个这样的控制信号从集合{0,-A1,-2A1,A1,2A1}中选择部分乘积向量。生成9个部分乘积向量,Pb0到Pb8,并将其传递到MUX阵列114(框310)。所有的9个部分乘积向量和零向量通过***树单元116而被压缩到两个向量中(框312)。该两个向量包括和向量与进位向量,它们分别被存储在和向量触发器118中和进位向量触发器120中。
在CSA1阶段中,来自CSA0阶段的和向量以及进位向量触发器108、110、118和120的4个向量通过MUX和4到2压缩器单元122被压缩到向量Vs0和Vc0中(框314)。MUX和工作台编码器单元102选择B2(16位)并对那些位进行编码(框316)。生成控制信号,每个这样的控制信号从集合{0,-A2,-2A2,A2,2A2}中选择部分乘积向量。生成9个部分乘积向量(框318)。然后所有的9个部分乘积向量和向量Vs0通过***树单元106而被压缩到两个向量中(框320)。该两个向量包括和向量与进位向量,它们分别被存储在和向量触发器108中和进位向量触发器110中。
MUX和工作台编码器112选择B3(16位),然后对那些位进行编码(框322)。生成控制信号,每个这样的控制信号从集合{0,-A3,-2A3,A3,2A3}中选择部分乘积向量。生成9个部分乘积向量(框324)。然后所有的9个部分乘积向量和向量Vc0通过***树单元116而被压缩到两个向量中(框326)。该两个向量包括和向量与进位向量,它们分别被存储在和向量触发器118中和进位向量触发器120中。
在CLA0阶段,来自CSA1阶段的触发器108、110、118和120的4个向量被发送到该4到2压缩器单元122,以生成向量Vs1和向量Vc1(框327)。Vs1和Vc1的较低32位通过向前进位(CLA)(carry look-ahead)单元124相加以产生最后结果的低32位(框328)。
在CLA1阶段,将Vs1和Vc1的高位符号扩展成32位向量(框330)。该扩展的向量和wRd的高32位随后通过3到2压缩器单元126而被压缩到两个向量中(框332)。来自CLA0单元124的两个压缩的向量和进位输入(carry-in bit)通过CLA单元128相加,以产生最后结果的高32位(框334)。
如上所述,完成工作台编码和向量压缩要花费两个周期。在第一周期内,来自两个***树单元的结果被发送回来,以用于在第二周期内进一步处理。按照惯例,来自触发器108、110、118和120的所有四个向量将被发送回***树,以用于在第二周期内进一步处理。然而,我们已经注意到(it has beenobserved)MUX和4到2压缩器单元122与MUX和工作台编码器单元以及MUX阵列相比可更快的执行该向量的4到2压缩。这样,仅有来自MUX和4到2压缩器单元122的两个向量(Vs0和Vc0)被发送回***树单元106和116。通过这个体系结构,可减少反馈路由选择而且能使***树单元106、116相对较小。较少的反馈路由选择使该布局(layout)更简单,这一点是我们所需要的,因为路由选择限制是在MAC设计中的问题之一。
某些传统的MAC实现在一个周期内执行64位加法。然而,这样的MAC可能对频率非常高的64位数据通路不合适,而且其结果可能没有足够的时间通过旁路逻辑(bypass logic)返回,该旁路逻辑一般被用来解决流水线操作中的数据依存关系。与传统体系结构相比,图1中所示的双MAC体系结构可更容易的在频率非常高和低功率应用中实现。CLA1阶段可具有比CLA0阶段更少的逻辑门,这就允许最终结果有足够的时间通过旁路逻辑返回,从而使这个双MAC体系结构适合于高速和低功率64位数据通路。
MAC单元可用在流水线DSP中。可通过重叠其执行而改变相对指令计时(relative timing of instructions)的流水线操作与非流水线DSP相比,可增加DSP的吞吐量。然而,流水线操作可引入数据依存关系或者冒险,每当前一条指令的结果不可得到并且当前指令需要该前一条指令的结果时,这种情况就可能出现。当前操作在数据依存关系被解决之前,可在流水线中停止(stalled)。
通常,数据转发是基于操作的最后结果的。对许多DSP算法而言,前一个MAC操作的结果需要被加到当前MAC操作。然而,MAC操作可花费4个周期来完成,而且前一个MAC操作的结果对于当前MAC操作而言可能不是可用的。在此情况中,被称作积累依存关系(accumulating dependency)的数据依存关系就被引入了。
图4A—4C示出关于标准数据转发方案的积累依存关系惩罚。该标准转发方案被用来减少积累依存关系惩罚,其中EX402是关于其它非MAC指令的执行阶段。即使使用该标准数据转发,在最差的情况下,积累依存关系惩罚还是两个周期,这在图4A中示出(注意,尽管在CLA1阶段之后,最后结果为可用之前,有3个停止404,图4A中的第一停止404还是由***树单元中的资源冲突引起的,其不被认为是数据依存关系惩罚)。两个周期惩罚可能对某些DSP应用而言可能太苛刻了,因此需要消除积累依存关系惩罚。
MAC单元100可被用来实现新的数据转发方案,这个新的数据转发方案被称作中间数据转发,其可消除积累依存关系惩罚。与等待来自前一个操作的最后结果不同,中间数据转发方案促进中间结果以解决数据依存关系。图5A—5C阐明图4A—4C中示出的序列,但使用中间数据转发技术来实现。
如图5A—5C中所示,CSA0阶段500被分割成两个子阶段502(BE0)和504(WT0),以分别对操作数B0和B1进行工作台编码和***树压缩。CSA1阶段506被分割成两个子阶段508(BE1)和510(WT1),以分别对操作数B2和B3进行工作台编码和***树压缩。CLA0阶段512被分割成两个子阶段514(4T2)和516(ADD0),以对应于向量的4到2压缩和最后结果的低32位加法。CLA1阶段518包括最后结果520的高32位加法(ADD1)。
在图5A和5B中所示的情况下,第一MAC指令的中间向量Vs、Vc的低32位可被转发到***树单元106和116以用于第二MAC指令,以解决积累依存关系。来自CLA1单元128的第一MAC指令的高32位结果被发到MUX和3到2压缩器单元126。图5A中的停止404是由***树资源冲突引起的,这并不被认为是数据依存关系惩罚。
在图5C中所示的情况下,当第二MAC指令需要第一MAC指令的最后结果时,该第一MAC指令的最后结果是不可用的,但是第一MAC指令的低32位结果是可用的。与等待最后结果不同,第一MAC指令的低32位结果被发到***树单元106,以解决积累依存关系。来自CLA1单元126的第一MAC指令的高32位结果被转发到MUC和3到2压缩器单元128。
表1中给出了图4A到4C中所示的标准数据转发技术与图5A到5C中所示的中间数据转发技术之间的积累数据依存关系惩罚比较。如表1中所示,中间数据转发可消除积累依存关系,其可为许多DSP应用实现较高的吞吐量。
 
关于情况(A)的惩罚      关于情况(B)的惩罚      关于情况(C)的惩罚     
标准数据转发         2个周期 2个周期 1个周期
中间数据转发         0个周期 0个周期 0个周期
表1
依照实施例,诸如图1中所示这样的紧耦合的双16位MAC单元可用于32位×32位指令以及16位SIMD指令。32位×32位操作可被分成4个16位×16位操作,如下面方程中所示:
A[31:0]×B[31:0]=(A[31:16]×B[15:0]×216+A[15:0]×B[15:0])+(A[31:16]×B[31:16]×216+A[15:0]×B[31:16])×216.
图6是依照实施例的描述32位×32位MAC操作600的流程图。在CSA0阶段中,由MUX和工作台编码器单元102生成A[15:0]×B[15:0]的部分乘积向量(框602)。***树单元106将该部分乘积向量压缩到两个向量中(框604)。该两个向量包括和向量与进位向量,它们分别被存储在和向量触发器108和进位向量触发器110中。由MUX和工作台编码器单元112生成A[31:16]×B[15:0]的部分乘积向量(框606)。***树单元116将该部分乘积向量压缩到两个向量中(框608)。该两个向量包括和向量与进位向量,它们分别被存储在和向量触发器118和进位向量触发器120中。
在CSA1阶段中,来自和向量触发器118和进位向量触发器120的两个向量被左移16位(框610)。MUX和4到2压缩器单元122将该经移位的向量以及来自和向量触发器108和进位向量触发器110的另外两个向量压缩到向量Vs0和向量Vc0中(框612)。Vs0和Vc0的低16位被发送到CLA0单元124。剩余位(remaining bits)被发送回***树单元106和116。然后,由CLA0单元124生成最后结果的位0到位15(框614)。然后,A[15:0]×B[31:16]的部分乘积向量以及来自Vs0的反馈向量被***树单元106压缩到两个向量中(框616)。该两个向量包括和向量与进位向量,它们分别被存储在和向量触发器108和进位向量触发器120中。A[31:16]×B[31:16]的部分乘积向量以及来自Vs0的反馈向量被***树单元116压缩到两个向量中(框618)。该两个向量包括和向量与进位向量,它们分别被存储在和向量触发器118和进位向量触发器120中。
在CLA0阶段,来自和向量触发器118和进位向量触发器120的两个向量被左移16位(框620)。MUX和4到2压缩器单元122将该经移位的向量以及来自和向量触发器108和进位向量触发器110的另外两个向量压缩到向量Vs1和向量Vc1中(框622)。向量Vs1和Vc1的低16位通过CLA0单元124相加。然后生成最后结果的位16到位31(框624)。
在CLA1阶段,向量Vs1和Vc1的高位(从位16到位47)通过CLA1单元128相加以产生高32位最后结果(从位32到位63)(框626)。
可在包括通用计算***、数字处理***、膝上型计算机、个人数字助理(PDA)和蜂窝电话在内的多种***中实现MAC单元100。在这样的***中,MAC单元可被包括在耦合至存储器设备的处理器中,该存储器设备诸如闪存设备或静态随机存取存储器(SRAM),其保存操作***或其它的软件应用。
这样的处理器可被用在视频可携式摄像机、电话会议、PC视频卡以及高清晰度电视(HDTV)中。另外,该处理器可连同利用诸如用在移动通话、话音识别和其它应用中的语音处理这样的数字信号处理的其它技术来使用。
例如,图7示出了依照实施例的包括处理器701的移动视频设备700,该处理器701包括MAC单元100。移动视频装置700可为手提式设备,其显示从接收自天线702或诸如数字视频盘(DVD)或存储器卡这样的数字视频存储媒体704的已经编码的视频信号中生成的视频图像。处理器100可与高速缓冲存储器706进行通信,该高速缓冲存储器可存储关于处理器操作以及诸如SRAM 708这样的其它装置的指令和数据。
已经说明了许多实施例。然而应当理解,可进行各种修改而不背离本发明主旨和范围。例如,可跳过流程图中的框或者不按次序执行这些框,并仍旧产生需要的结果。进一步,在每SIMD指令上操作的操作数的大小和操作数的数量可以不同。因此,其它实施例落在所附权利要求的范围内。

Claims (15)

1.一种方法,其特征在于,包含:
在流水线中执行第一乘法积累操作中的第一压缩操作,其中所述执行第一压缩操作包含将第一多个部分乘积压缩为第一和向量与第一进位向量,并将第二多个部分乘积压缩为第二和向量与第二进位向量;
在所述第一乘法积累操作中的第一压缩操作中生成两个或更多中间向量,其中所述两个或更多中间向量至少包括一个中间和向量和一个中间进位向量,其中所述第一与第二和向量以及所述第一与第二进位向量被压缩成所述中间和向量与中间进位向量;以及
在所述流水线中将所述中间和向量和所述中间进位向量的每一个的至少一部分转发到第二乘法积累操作,其中所述第二乘法积累操作与所述第一乘法积累操作相分离。
2.如权利要求1所述的方法,其特征在于,所述转发所述中间和向量和所述中间进位向量的每一个的至少一部分包含转发所述中间和向量和所述中间进位向量的每一个的低位部分。
3.如权利要求1所述的方法,其特征在于,所述转发包含将所述中间和向量和所述中间进位向量的每一个的至少部分转发到***树压缩单元。
4.一种方法,其特征在于,包含:
在乘法积累操作的第一***树压缩阶段中,将第一多个部分乘积压缩成第一和向量与第一进位向量,以及将第二多个部分乘积压缩到第二和向量与第二进位向量;
将所述第一和第二和向量以及所述第一和第二进位向量压缩成第一中间和向量与第一中间进位向量;以及
在所述乘法积累操作的第二阶段中,压缩所述中间和向量与第三多个部分乘积,并压缩所述中间进位向量和第四多个部分乘积。
5.如权利要求4所述的方法,其特征在于,所述乘法积累操作包含单指令/多数据SIMD操作。
6.如权利要求4所述的方法,进一步包含:
从第一对操作数产生第一多个部分乘积;
从第二对操作数产生第二多个部分乘积;
从第三对操作数产生第三多个部分乘积;以及
从第四对操作数产生第四多个部分乘积。
7.如权利要求4所述的方法,其特征在于,进一步包含在流水线中将所述中间和向量与所述中间进位向量转发到第二乘法积累操作。
8.如权利要求7所述的方法,其特征在于,所述转发包含消除所述第二乘法积累操作中的积累数据依存关系。
9.一种装置,其特征在于,包含:
第一和第二***树压缩单元,用于在乘法积累操作的第一和第二阶段中压缩向量;
压缩器,其作用为将所述乘法积累操作的第一阶段中来自所述第一和第二***树单元的多个向量输出压缩成两个中间向量,所述两个中间向量包括中间和向量和中间进位向量;以及
从所述压缩器的输出到复用器的输入的数据通路,所述复用器可用于在所述乘法积累操作的所述第二阶段中,将所述中间向量的其中一个选择性地输入到所述第一和第二***树压缩单元的其中一个。
10.如权利要求9所述的装置,进一步包含双乘法积累单元。
11.如权利要求9所述的装置,其特征在于,所述多个向量包含第一和第二和向量以及第一和第二进位向量。
12.如权利要求9所述的装置,其特征在于,所述压缩器包含4到2向量压缩器。
13.如权利要求9所述的装置,其特征在于,所述复用器包含具有与所述第一***树压缩单元联结的输出的第一复用器以及具有与所述第二***树压缩单元联结的输出的第二复用器。
14.一种***,其特征在于,包含:
静态随机地址存储器;以及
与所述静态随机存取存储器联结的处理器,所述处理器包含双乘法积累单元,所述单元包括:
第一和第二***树压缩单元,用于在乘法积累操作的第一和第二阶段中压缩向量;
压缩器,其作用为将来自所述乘法积累操作的所述第一阶段中的所述第一和第二***树单元的多个向量输出压缩成两个中间向量,所述两个中间向量包括中间和向量与中间进位向量;以及
从所述压缩器的输出到复用器的输入的数据通路,所述复用器可用于在所述乘法积累操作的所述第二阶段中,将所述中间向量的其中一个选择性的输入到所述第一和第二***树压缩单元的其中一个。
15.如权利要求14所述的***,其特征在于,所述复用器包括:具有与所述第一***树压缩单元联结输出的第一复用器以及具有与所述第二***树压缩单元联结输出的第二复用器。
CNB028196473A 2001-10-05 2002-10-03 用于单指令/多数据指令的乘法积累单元 Expired - Fee Related CN100474235C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/972,720 US7107305B2 (en) 2001-10-05 2001-10-05 Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions
US09/972,720 2001-10-05

Publications (2)

Publication Number Publication Date
CN1633637A CN1633637A (zh) 2005-06-29
CN100474235C true CN100474235C (zh) 2009-04-01

Family

ID=25520040

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028196473A Expired - Fee Related CN100474235C (zh) 2001-10-05 2002-10-03 用于单指令/多数据指令的乘法积累单元

Country Status (11)

Country Link
US (1) US7107305B2 (zh)
EP (1) EP1446728B1 (zh)
JP (2) JP4584580B2 (zh)
KR (1) KR100834178B1 (zh)
CN (1) CN100474235C (zh)
AT (1) ATE371893T1 (zh)
AU (1) AU2002334792A1 (zh)
DE (1) DE60222163T2 (zh)
HK (1) HK1065127A1 (zh)
TW (1) TWI242742B (zh)
WO (1) WO2003032187A2 (zh)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6581003B1 (en) * 2001-12-20 2003-06-17 Garmin Ltd. Systems and methods for a navigational device with forced layer switching based on memory constraints
US7532720B2 (en) * 2003-10-15 2009-05-12 Microsoft Corporation Utilizing SIMD instructions within montgomery multiplication
JP4502662B2 (ja) * 2004-02-20 2010-07-14 アルテラ コーポレイション 乗算器−累算器ブロックモード分割
US7353244B2 (en) 2004-04-16 2008-04-01 Marvell International Ltd. Dual-multiply-accumulator operation optimized for even and odd multisample calculations
US20060004903A1 (en) * 2004-06-30 2006-01-05 Itay Admon CSA tree constellation
US8856201B1 (en) 2004-11-10 2014-10-07 Altera Corporation Mixed-mode multiplier using hard and soft logic circuitry
EP1710691A1 (en) * 2005-04-07 2006-10-11 STMicroelectronics (Research & Development) Limited MAC/MUL unit
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US8024394B2 (en) 2006-02-06 2011-09-20 Via Technologies, Inc. Dual mode floating point multiply accumulate unit
US8266199B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8041759B1 (en) * 2006-02-09 2011-10-18 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US7836117B1 (en) 2006-04-07 2010-11-16 Altera Corporation Specialized processing block for programmable logic device
US7822799B1 (en) 2006-06-26 2010-10-26 Altera Corporation Adder-rounder circuitry for specialized processing block in programmable logic device
US7783862B2 (en) * 2006-08-07 2010-08-24 International Characters, Inc. Method and apparatus for an inductive doubling architecture
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US8122078B2 (en) * 2006-10-06 2012-02-21 Calos Fund, LLC Processor with enhanced combined-arithmetic capability
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US20080140753A1 (en) * 2006-12-08 2008-06-12 Vinodh Gopal Multiplier
US7814137B1 (en) 2007-01-09 2010-10-12 Altera Corporation Combined interpolation and decimation filter for programmable logic device
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US7949699B1 (en) 2007-08-30 2011-05-24 Altera Corporation Implementation of decimation filter in integrated circuit device using ram-based data storage
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
JP5376659B2 (ja) * 2009-09-03 2013-12-25 エヌイーシーコンピュータテクノ株式会社 積和演算装置及び積和演算装置の制御方法
US20110055303A1 (en) * 2009-09-03 2011-03-03 Azuray Technologies, Inc. Function Generator
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US7948267B1 (en) 2010-02-09 2011-05-24 Altera Corporation Efficient rounding circuits and methods in configurable integrated circuit devices
US8601044B2 (en) 2010-03-02 2013-12-03 Altera Corporation Discrete Fourier Transform in an integrated circuit device
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8539014B2 (en) 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8478969B2 (en) * 2010-09-24 2013-07-02 Intel Corporation Performing a multiply-multiply-accumulate instruction
US8645451B2 (en) 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US8812576B1 (en) 2011-09-12 2014-08-19 Altera Corporation QR decomposition in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8762443B1 (en) 2011-11-15 2014-06-24 Altera Corporation Matrix operations in an integrated circuit device
US8868634B2 (en) * 2011-12-02 2014-10-21 Advanced Micro Devices, Inc. Method and apparatus for performing multiplication in a processor
CN102520906A (zh) * 2011-12-13 2012-06-27 中国科学院自动化研究所 支持定浮点可重构的向量长度可配置的向量点积累加网络
CN107368286B (zh) * 2011-12-19 2020-11-06 英特尔公司 用于多精度算术的simd整数乘法累加指令
US8543634B1 (en) 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9275014B2 (en) * 2013-03-13 2016-03-01 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US10489155B2 (en) 2015-07-21 2019-11-26 Qualcomm Incorporated Mixed-width SIMD operations using even/odd register pairs for wide data elements
CN107977192A (zh) * 2016-10-21 2018-05-01 超威半导体公司 用于执行低功率和低延时多精度计算的方法和***
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
KR102408858B1 (ko) * 2017-12-19 2022-06-14 삼성전자주식회사 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 비휘발성 메모리 장치의 동작 방법
US11409525B2 (en) * 2018-01-24 2022-08-09 Intel Corporation Apparatus and method for vector multiply and accumulate of packed words
EP3844608A4 (en) 2018-08-31 2021-12-08 Flex Logix Technologies, Inc. MULTIPLICATOR ADDITION CIRCUIT, LOGICAL TILE ARCHITECTURE FOR MULTIPLICATION ADDITION AND IC WITH LOGICAL TILE MATRIX
US11194585B2 (en) 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
US11314504B2 (en) 2019-04-09 2022-04-26 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipelines and processing component, and methods of operating same
US11288076B2 (en) 2019-09-13 2022-03-29 Flex Logix Technologies, Inc. IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory
US11455368B2 (en) 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
US12015428B2 (en) 2019-11-05 2024-06-18 Flex Logix Technologies, Inc. MAC processing pipeline using filter weights having enhanced dynamic range, and methods of operating same
US11693625B2 (en) 2019-12-04 2023-07-04 Flex Logix Technologies, Inc. Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
US11960856B1 (en) 2020-01-15 2024-04-16 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format
US11442881B2 (en) 2020-04-18 2022-09-13 Flex Logix Technologies, Inc. MAC processing pipelines, circuitry to control and configure same, and methods of operating same
WO2022020164A1 (en) 2020-07-22 2022-01-27 Flex Logix Technologies, Inc. Mac processing pipelines having programmable granularity, and methods of operating same

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3435744B2 (ja) * 1993-09-09 2003-08-11 富士通株式会社 乗算回路
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5777679A (en) * 1996-03-15 1998-07-07 International Business Machines Corporation Video decoder including polyphase fir horizontal filter
JPH10207863A (ja) * 1997-01-21 1998-08-07 Toshiba Corp 演算処理装置
US5847981A (en) * 1997-09-04 1998-12-08 Motorola, Inc. Multiply and accumulate circuit
JP3667635B2 (ja) * 1998-01-21 2005-07-06 松下電器産業株式会社 演算装置
JP2000081966A (ja) * 1998-07-09 2000-03-21 Matsushita Electric Ind Co Ltd 演算装置
US6571268B1 (en) * 1998-10-06 2003-05-27 Texas Instruments Incorporated Multiplier accumulator circuits
US6542915B1 (en) * 1999-06-17 2003-04-01 International Business Machines Corporation Floating point pipeline with a leading zeros anticipator circuit
US6532485B1 (en) * 1999-09-08 2003-03-11 Sun Microsystems, Inc. Method and apparatus for performing multiplication/addition operations
US6574651B1 (en) * 1999-10-01 2003-06-03 Hitachi, Ltd. Method and apparatus for arithmetic operation on vectored data
US6611856B1 (en) 1999-12-23 2003-08-26 Intel Corporation Processing multiply-accumulate operations in a single cycle
US6922716B2 (en) * 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing

Also Published As

Publication number Publication date
US20030069913A1 (en) 2003-04-10
HK1065127A1 (en) 2005-02-08
WO2003032187A2 (en) 2003-04-17
KR100834178B1 (ko) 2008-05-30
DE60222163T2 (de) 2008-06-12
DE60222163D1 (de) 2007-10-11
CN1633637A (zh) 2005-06-29
EP1446728A2 (en) 2004-08-18
AU2002334792A1 (en) 2003-04-22
JP4555356B2 (ja) 2010-09-29
EP1446728B1 (en) 2007-08-29
JP2008217805A (ja) 2008-09-18
KR20040048937A (ko) 2004-06-10
US7107305B2 (en) 2006-09-12
TWI242742B (en) 2005-11-01
WO2003032187A3 (en) 2004-06-10
JP4584580B2 (ja) 2010-11-24
JP2005532601A (ja) 2005-10-27
ATE371893T1 (de) 2007-09-15

Similar Documents

Publication Publication Date Title
CN100474235C (zh) 用于单指令/多数据指令的乘法积累单元
US6611856B1 (en) Processing multiply-accumulate operations in a single cycle
US9075651B2 (en) Methods and apparatus for efficient complex long multiplication and covariance matrix implementation
WO1994023384A1 (en) Apparatus for adaptively processing video signals
US20040117422A1 (en) Method and apparatus for performing multiply-add operations on packed data
CN110705703B (zh) 基于脉动阵列的稀疏神经网络处理器
US20060112159A1 (en) Processor
JPS60134974A (ja) ベクトル処理装置
JPH04167172A (ja) ベクトルプロセッサ
US6324638B1 (en) Processor having vector processing capability and method for executing a vector instruction in a processor
CN109753268B (zh) 多粒度并行运算乘法器
KR20220031098A (ko) 부호형 다중-워드 곱셈기
EP1936492A1 (en) SIMD processor with reduction unit
Chen et al. A reconfigurable digital signal processor architecture for high-efficiency MPEG-4 video encoding
WO2008077803A1 (en) Simd processor with reduction unit
CN1422402A (zh) 在通用处理器中有效多输入累加的最优化乘法器结构
Tang et al. Integrated partition integer execution unit for multimedia and conventional applications
CN116796816A (zh) 处理器、计算芯片和计算设备
Chen et al. A high-efficiency reconfigurable digital signal processor for multimedia computing
JPH02235174A (ja) バス・マトリツクス
GB2397674A (en) Multiplier accumulator unit with a Wallace tree coupled to an adder and a controller
Lin et al. Fast Inner Product Computation on Short Buses
Do-All et al. A Parallel-Architecture Processor Design for the Fast Multiplication of Homogeneous Transformation Matrices
KR20030011978A (ko) 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법
JPH01244578A (ja) 画像処理装置

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

Granted publication date: 20090401

Termination date: 20181003

CF01 Termination of patent right due to non-payment of annual fee