CN100405361C - 用于执行计算操作的方法、系统以及设备 - Google Patents

用于执行计算操作的方法、系统以及设备 Download PDF

Info

Publication number
CN100405361C
CN100405361C CNB2003801084019A CN200380108401A CN100405361C CN 100405361 C CN100405361 C CN 100405361C CN B2003801084019 A CNB2003801084019 A CN B2003801084019A CN 200380108401 A CN200380108401 A CN 200380108401A CN 100405361 C CN100405361 C CN 100405361C
Authority
CN
China
Prior art keywords
data
pipeline stages
interface
output
equipment
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
CNB2003801084019A
Other languages
English (en)
Other versions
CN1735881A (zh
Inventor
D·格沃尔基安
A·劳尼埃宁
P·利乌哈
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.)
Nokia Oyj
Original Assignee
Nokia Oyj
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 Nokia Oyj filed Critical Nokia Oyj
Publication of CN1735881A publication Critical patent/CN1735881A/zh
Application granted granted Critical
Publication of CN100405361C publication Critical patent/CN100405361C/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/386Special constructional features
    • G06F2207/3884Pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Hardware Redundancy (AREA)
  • Fishing Rods (AREA)
  • Preliminary Treatment Of Fibers (AREA)
  • Forklifts And Lifting Vehicles (AREA)
  • Advance Control (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明涉及通过使用管线化的计算设备执行计算操作的一种方法,该计算设备包括:一组至少两个管线级、至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口。所述管线级包括至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口。在该方法中,用于执行第一和第二计算操作的数据被输入该设备。在所述第一计算操作中,至少一个管线级的输出数据被存入存储器中。在所述第二计算操作中存储的数据被用作一个管线级的输入数据。本发明还涉及其中使用了本方法的系统和设备。

Description

用于执行计算操作的方法、系统以及设备
技术领域
本发明涉及一种使用管线化的计算设备来执行计算操作的方法,该管线化的计算设备包括:一组至少两个管线级、至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述管线级具有至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述方法包括以下步骤:把用于执行第一计算操作的数据输入到该设备中;把用于执行第二计算操作的数据输入到该设备中;执行第一计算操作;和执行第二计算操作。本发明还涉及一种用于在管线化的计算设备中执行计算操作的系统,所述管线化的计算设备包括:一组至少两个管线级、至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述管线级具有至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,以及所述设备还包括用于第一和第二计算操作的数据的输入。本发明还涉及一种用于在管线化的计算设备中执行计算操作的设备,所述管线化的计算设备包括:一组至少两个管线级、至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述管线级具有至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,以及所述设备还包括用于第一和第二计算操作的数据的输入。
背景技术
有很多应用程序中需要乘法、乘法累加(MAC)和其它计算操作。作为非限制性例子,诸如数字信号滤波应用程序、视频/图像处理应用程序等之类的许多信号处理应用程序是其中实现了实时乘法操作的应用程序。其中需要向量和/或矩阵操作的其它应用程序也使用乘法和MAC操作。乘法操作通常以加法和移位操作来实现。这种乘法操作是高占用资源的任务,因为两个操作数之间的一个乘法操作需要很多加法和移位操作来计算乘法结果。
视频/图像处理算法的特殊之处是必须实时执行大量计算。因此,高速度性能已经是开发用于不同的视频/图像处理算法或子任务的并行专用结构(加速器)的推动力量。现有技术的视频/图像处理系统包含几个这种加速器(例如绝对误差和(SAD)、余弦变换等),每个都由大量的硬件元件组成。但是,在开发移动通信系统中,影响系统成本的硬件面积以及功率/能量消耗是和高速度性能同样重要的特性。接近满足所有这些标准的一个方法是进一步革新数字信号处理器(DSP)并减少专用加速器的个数。尽管这个领域有一些改进,但开发的系统仍然不是总能满足高速度和功率消耗的要求。
表1汇总了一些核心运算模式以及其中经常执行这些模式的视频/图像处理算法的例子。这些模式中涉及的操作是非常基础和非常常见的操作。大量文献致力于它们的实现。这里强调在视频/图像处理环境中与这些操作有关的两个细节。首先,操作的操作数通常是中等(8到16比特)精度的整数。其次,大部分算法使用整体并行的操作。在一些情况下,这些并行操作共享相同的操作数。例如,在标量量化中,图像的许多像素乘以相同数字,在矩阵-向量乘积中,矩阵的不同行被乘以同一个输入向量,在有限脉冲响应(FIR)滤波中,多个MAC操作包含同样的系数。
表1
Figure C20038010840100091
用于视频和图像处理以及其它信号处理任务的现有技术体系结构通常基于传统的乘法器结构。用于实现乘法和/或乘法累加操作的许多乘法方法和非常多不同的设备已经被开发出来。在下面,将只考虑用于两个操作数(被乘数和乘数)都未知的情况的乘法方法和通用乘法器结构,在二进制补码运算中出现的两个定点带符号整数的乘法,以及所谓的radix-T方法。
乘数a的n-比特二进制补码表示(包括符号)记为 a ~ = a n - 1 a n - 2 · · · a 1 a 0 , 以及被乘数x的m-比特二进制补码表示(包括符号)记为 x ~ = x m - 1 x m - 2 · · · x 1 x 0 . a和
Figure C20038010840100103
的关系(以及x和
Figure C20038010840100104
是类似的关系)如下:
a = - a n - 1 2 n - 1 + Σ r = 0 n - 2 a r 2 r , x = - x m - 1 2 m - 1 + Σ l = 0 m - 2 x l 2 l . - - - ( 1 )
在radix-T并行乘法方法中,积y=a·x的二进制补码 y ~ = y m + n - 1 y m + n - 2 · · · y 1 y 0 根据下面公式获得
y ~ = Σ r = 0 n radix - T - 1 ( A r x ) 2 r t radix - T - - - ( 2 )
下面是两个主要步骤:
步骤1.生成部分积(PP)Ar·x,r=0,...nradix-T-1,这样公式(2)有效。
步骤2.将所有的部分积并行相加,相加前预先将第r个部分积Ar·x,r=0,...nradix-T-1向左移rtradix-T位。
radix-T MAC单元以相似的方式操作,不同之处在于在步骤2中另一个数(累积项)同部分积一起相加。
现在将详细考虑步骤1。根据如何定义和获得所述数字Ar·x,r=0,...nradix-T-1,可以派生出不同的乘法方法。反过来,数字Ar·x,r=0,...nradix-T-1的选择实际上是由乘数a的表示决定的。最简单的乘法方法是radix-2方法,其使用(1)的左边公式中给出的a的基本二进制补码表示。这样的话,积的二进制补码将如下得到:
y ~ = Σ r = 0 n radix - 2 - 1 ( A r x ) 2 rt radix - 2 = Σ r = 0 n - 2 ( a r x ) 2 r - ( a n - 1 x ) 2 n - 1 , - - - ( 3 )
也就是说,nradix-2=n,以及部分积Ar·x,r=0,...n-1是由r=0,...n-2时Ar=ar且r=n-1时An-1=-an-1确定。这些部分积可以简单地(并且通常)利用在乘数
Figure C20038010840100111
和被乘数
Figure C20038010840100112
的每个二进制补码位之间的2输入的与门阵列形成。Ar·x,r=0,...n-1的值在第二步累加之前乘以2r(即向左移r位)。应该注意在这个方法中,对有时也被称为校正因子的部分积An-1·x的处理同其它部分积的处理不同。
在另一种基于将乘数的二进制补码位来Booth重编码为冗余的有符号数字的radix-2乘法方法中,避免了所述部分积的不一致特性。乘积现在可以表示为:
y ~ = Σ r = 0 n radix - 2 - 1 ( A r x ) 2 r = Σ r = 0 n - 1 ( - a r + a r - 1 ) x 2 r , a - 1 = 0 - - - ( 4 )
也就是说,如同前面方法一样nradix-2=n,但是部分积Ar·x,r=0,...n-1现在都由Ar=-ar+ar-1定义。与前一个方法类似,Ar·x,r=0,...n-1的值在第二步累加之前乘以2r。在这个方案中,部分积在0,±x之间选择。这些值中的两个值(0和x)容易得到,而要得到-x需要取反的各位并且加上单位元素。通常,在其中部分积相加的步骤2中进行单位元素的相加。
不管使用的是Booth再编码方法还是非再编码方法,在radix-2乘法方法中都总共有nradix-2=n个部分积相加。为了减少部分积的数目,并因此减少第二级(将部分积相加)的延迟,基于radix-4修正Booth算法(MBA)的方法已被开发出来。MBA是最流行的乘法方法之一,并正在被广泛地研究和优化。
为了简化下面的公式,在每个项如n/k出现的地方,假设n是k的整数倍。这是一个有效的假设,因为二进制补码数字可以以任意个数的位被补足(重复最高有效位)。
在MBA中,积的二进制补码以nradix-4=n/2个部分积的和的形式获得
y ~ = Σ r = 0 n radix - 4 - 1 ( A r x ) 2 2 r = Σ r = 0 n / 2 - 1 ( [ - 2 a 2 r + 1 + a 2 r + a 2 r - 1 ] x ) 2 2 r , - - - ( 5 )
a - 1 = 0
其中根据乘数的二进制补码的三个连续位a2r+1,a2r,a2r-1(a-1=0)选择值Ar∈{-2,-1,0,1,2},r=0,1,...n/2-1。部分积Ar·x,r=0,1,...n/2-1在步骤2累加之前乘以22r(即硬件向左移动2r位)。
使用基数大于2的非再编码乘法方法减小部分积的个数也是可能的。例如,在radix-4非再编码乘法方法中,根据乘数的两个连续位a2r+1,a2r选择部分积Arx,Ar∈{0,1,2,3},r=0,1,...n/2-1。这个方法中有nradix-4=n/2个部分积。通过将潜在(potential)部分积x向左移动一位可以生成潜在部分积2x。奇数部分积3x需要另外加上x。如果还用到负数相乘,则必须使用符号扩展,其中每个部分积的最高有效位(即符号位)被复制的次数与达到要求的位长所需的次数一样多。
在radix-8非再编码乘法方法中,根据乘数的三个连续位选择部分积Arx,Ar∈{0,1,2,3,4,5,6,7},r=0,1,...n/3-1。潜在部分积的列表是0,x,2x,3x,...7x,通过执行得到3x=x+2x,5x=x+4x,7x=8x-x的三个独立的加法/减法,所有部分积都成为可获得的。潜在部分积6x能够通过将潜在部分积3x左移一位形成。但是对更高基数(>=16)的情况,有一些潜在部分积(例如11x和13x)不能用一个加法/减法获得。
图1显示用于执行修正Booth算法的一种通用设备101。设备中有n/2个Booth编码-解码行,每行包括一个Booth编码器102和m+1个Booth解码器103,它们可以两两组合。每个Booth编码器102分析乘数
Figure C20038010840100121
的二进制补码的三个连续位,该三个连续位的一位有重叠,并且输出q个信号给相应行的解码器103。在一些近来的现有技术中,q的值等于3。当输入是被乘数的各位的时候,根据这q个信号,解码器行形成部分积(Arx)∈{0,±x,±2x}。x的非负倍数容易得到,因为2x通过硬件移位就能得到。x的负数倍是通过对x的相应正数倍的各位取反并接着加1得到的,这个过程通常在步骤2中执行。例如,美国专利6,173,304中描述了这样一种实现Booth编码器和解码器的系统。在radix-2方法中获得部分积比在修正Booth算法中容易,但是当使用修正Booth算法时部分积的个数减少到n/2,这在速度性能、面积和功率消耗上带来很大好处。
为了进一步减少部分积的个数,Booth编码被进一步扩展到多位再编码(任意的radix-T)。现在对于该乘积给出通用公式如下:
y ~ = Σ r = 0 n radix - T - 1 ( A r x ) 2 rt = Σ r = 0 n / t - 1 ( [ - a tr + t - 1 2 t - 1 + Σ i = 0 t - 2 a tr + i 2 i + a tr - 1 ] x ) 2 tr - - - ( 6 )
a - 1 = 0 , T = 2 t = 2 t radix - T .
也就是说,有nradix-T=n/t个部分积(T=2t),并且根据乘数
Figure C20038010840100133
的t+1个连续位从潜在部分积Ax的列表中选择每个部分积,其中A的范围在一2t-1与2t-1之间。通过将两个(对于T=8,16)或多个(对于T>16)x的2次幂的倍数相加,并且可能对各位取反接着加1,可以比较容易地构成每一个潜在部分积(步骤2)。例如,关于radix-8的再编码,潜在部分积的列表是0,±x,±2x,±3x,+4x。这个列表中所有的非负倍数除了3x之外都容易得到,3x可以用一个加法3x=x+2x获得。负数倍数可以同前面一样通过取反加1法得到。关于radix-16的再编码,潜在部分积的列表是0,±x,±2x,±3x,...±8x,通过执行得到3x=x+2x,5x=x+4x,7x=8x-x的三个独立的加法/减法,所有部分积都能够获得。潜在部分积6x能够通过将潜在部分积3x左移一位形成.但是对更高基数的情况,存在一些潜在部分积(例如11x和13x),这些潜在部分积不能用一个加法/减法获得。
图2表示现有技术radix-T(T>18)的多位Booth再编码和radix-T(T>=4)的新的非再编码(“大于4的基数”)乘法器的通用结构201。这个结构包括用于计算潜在部分积列表0,±x,±2x,...±Tx的加法器阵列202,用于根据乘数位选择n/t个部分积的选择块203,以及用于对所选择的部分积求和的求和块204。最后的加法器205从求和块204产生的项即和S和进位C构成积
Figure C20038010840100134
一种典型的现有技术的基数大于4的乘法器的加法器阵列包括s个加法器/减法器,其中s是潜在部分积的列表中包含的x的正奇数倍数的个数(对于T=8的Booth再编码乘法器和T-4的非再编码乘法器s=1,对于T=16的Booth再编码乘法器或T=8的非再编码乘法器s=3等)。通常使用快速先行进位(CLA)加法器,因为形成潜在部分积的列表是这种乘法器中很耗时间的部分。在美国专利5,875,125中,提出了一种特殊的x+2x加法器,其可以用在radix-8乘法器中。应注意混合的radix-4/8乘法器也已经被提出,例如在美国专利号为4,965,762的专利中,但是该乘法器主要对于迭代的(不是并行的)乘法器有用,在迭代乘法器中部分积是串行产生和累加的.美国专利号为5,646,877的专利描述了一种乘法器结构,其中任意基数的所有潜在部分积在加法器阵列中以3x和x的移位结果的和或差的形式获得,该加法器阵列包括一个用于产生3x的x+2x加法器、两个移位器和一个加法器/减法器。
一种典型现有技术的基数大于4的乘法器的选择块包括n/t个radix-T Booth编码器和同样数目的解码器行。各编码器分析乘法器的相应(t+1)个元组并输出多个控制信号,根据所述控制信号由解码器行形成对应的部分积。例如,美国专利6,240,438中讨论了如何将radix-4Booth编码器和解码器扩展到给定的更高基数。
在下面,将更详细考虑部分积的求和,即步骤2。大部分并行乘法器/MAC单元结构使用对步骤1(参见图1和2)生成的部分积求和的求和块,该求和块包括压缩阵列,其后接着是快速加法器(最终加法器)。压缩阵列将nradix-T个部分积行缩减到两行,这两行对应通过最终加法器相加的项即和S与进位C。该压缩阵列通常包括全加器和半加器(进位保留加法器树或Wallace树)或4:2的压缩器。最终加法器通常是一个快速先行进位加法器,该加法器根据来自压缩阵列的不同位的延迟被小心设计。
应注意到,如果使用Booth再编码方案,那么,作为在步骤2中代替步骤1中执行单位元素相加的结果,每一个部分积行都伴有一个一位值,如果该部分积是被乘数的非负倍数则所述一位值为0,否则为单位元素。这样,实际上行的数目是2nradix-T。尽管这些一位值可以被并入部分积行,这样使得行的数目又一次是nradix-T或可能是nradix-T+1,但是这要付出增加部分积行的长度(增加一位)和令它们不规则的代价。在非再编码式方案中,最多只有一个额外的一位值,所以可以设计更简单的压缩阵列。
与Booth再编码乘法器的求和块相关的另一个问题是如何处理符号扩展,因为在将部分积行相加前它们相对彼此被移位。在一种直接实现方案中,每一个部分积(移位后的)应该已经被扩展到(n+m)位数字,这是非常浪费的方法。已经开发出特殊的符号扩展方法和电路,以将符号扩展位的数目减少到每行两个。在非再编码式乘法器的情况下,符号扩展处理起来较容易,没有额外的符号位,因为所有部分积除了可能的一个之外,符号都相同。
将乘法器结构扩展为MAC单元主要有两种方法,如图3a和3b所绘。在第一种情形下(图3a),压缩阵列301的两个输出(和S和进位C项)被反馈给其输入,使得当前部分积的值同当前累加值的两个加数相累加。然后最终的项和S与进位C在最终加法器302中相加。在第二种情形下(图3b),这些输出被馈送给另一个压缩阵列303,该压缩阵列303的输出被反馈给它(第二压缩阵列303)的输入。现在,当前积的项和S与进位C被累加到当前累加值中,直到最后一个循环,这时项最终和S与进位C在最终加法器302中相加。在第一种情形下整个压缩阵列的深度(以及因此总延迟)较小,而在第二种情形下整个压缩阵列的宽度并因此还有面积和功率消耗较小。
作为高基数乘法器的总结,应注意到,基数越高,步骤1(生成部分积)的复杂度就越高,而步骤2(对部分积求和)的复杂度就越低。所述“基数高于4的”乘法方法没有获得推广,或许是因为部分积生成器必须有相当的时间和面积消耗,所述部分积生成器包括加法器阵列和选择块。通常,radix-4 MBA被认为是最好的现有技术的并行乘法方法,并且在很多工业乘法器中使用。
一种被称为管线技术的方法可以在计算操作方面使用。因此,利用管线技术的设备包括两个或多个管线级。每个管线级用来执行计算操作的某一部分或多部分(即子操作)。在现有技术中,管线级的计算操作彼此关联,使得每个管线级执行要执行的计算操作的一个或多个子操作,并且最后一个管线级的输出提供该计算操作的结果。在这样的设备中,不同的管线级连续运行,其中下一个管线级在前面的管线级结束其子操作的计算之后开始子操作的计算。如果管线级是完全平衡的(即一些管线级比其它的快得多),这意味着大部分时间除了一个管线级之外所有的管线级都在等待或处于空闲状态。另外,所有的管线级被保留给一个特定任务(一个特定子操作的计算),于是它们不能被用于执行其它的计算操作。
下面将介绍从视频和图像处理角度看需要的但是现有技术解决方案中缺少或不佳的一些乘法器/MAC单元特征。首先考虑最常用的radix-4Booth再编码式乘法器/MAC方法。这种方法的一个普遍缺点是它比更高基数的方法更耗电。它的另一个普遍缺点是,尽管部分积的个数与radix-2乘法相比已经减少到一半,但是使用更高基数则部分积的个数还能减少。也就是说,这个方法的复杂性主要集中在步骤2(对部分积求和)。当管线化radix-4 Booth再编码式乘法器/MAC结构时,通常将部分积生成块看作第一管线级,但是,它是与其它管线级完全平衡的(即比其它管线级快)。
考虑“基数大于4”的Booth再编码式乘法器,已经说明当只考虑乘法操作的实现时,这些乘法器的不同实现方式与radix-4乘法器相比在面积和时间标准方面具有竞争力,同时在功率消耗方面更优越。“基数大于4”的方法的主要缺点是其部分积生成块必须具有一个加法器阵列。
“基数大于4”的Booth再编码式乘法器还有一个缺点,该缺点涉及必须处理被乘数的负数倍和符号扩展。
radix-T非再编码式乘法器和radix-(2T)Booth再编码式乘法器在潜在部分积的生成块中涉及同样数目的加法器。当使用“基数大于8”的非再编码式乘法器或“基数大于16”的Booth再编码式乘法器时,生成潜在部分积需要多于一级的加法。
表2a
Figure C20038010840100171
表2b
Figure C20038010840100181
表2c
    BR Booth再编码式radix-T乘法器
    NR1 类型1的非再编码式radix-T乘法器
    HR2 类型2的非再编码式radix-T乘法器
    SE 符号扩展电路
    BR4,BR8,BR16 相应基数的Booth再编码器电路
    BD4 radix-4 Booth解码器电路
    4:1,8:1,4:1t/c,8:1  t/c 有相应数目的输入的多路复用器或真/补码多路复用器
    SB 选择块
    CA,FA-CA,4:2CA 压缩阵列,包括全加器(FA)和半加器(HA)的CA,包括4::2压缩器的CA
表2a给出用于将n位乘数和m位被乘数相乘的现有技术的Booth再编码式radix-T乘法器/MAC单元中使用的不同块的各种特性,以及表1b给出用于将n位乘数和m位被乘数相乘的新的非再编码式radix-T乘法器/MAC单元中使用的不同块的各种特性,以及表2b给出用于将n位乘数和m位被乘数相乘的现有技术的非再编码式radix-T乘法器/MAC单元中使用的不同块的各种特性。表2c给出表2a和2b中使用的首字母缩写词。分析表2a和2b可以看出,对于n和m的大部分值,每种乘法器/MAC单元类型中每个乘法器的不同块的延迟有根本不同。也就是说,这些乘法器的直接管线化实现方式会因为管线级之间的平衡性差而受到影响。为了设法得到管线级之间的较好平衡,可以通过在进位传送块中设计具有不同数目FA的先行进位加法器(CLA)而灵活地增加第一个和最后一个管线级的吞吐量。这是为什么没有在表2a和2b中指出这些块的延迟的原因。在一些情况下,例如n小,基数T较高,这意味着进位传送块很小,并且因此面积大。无论如何,使用CLA是提高这两级速度的一种解决方案,尽管这个解决方案不是最有效的。中间两个管线级(SB和CA)的情况不同,因为用于这些块的现有技术的电路是通过优化关键路径设计的,所以这些电路的内部管线不合理。另外,对于不同的n值,现有技术的乘法器/MAC单元结构的每种类型((BR(T=8,16),NR1(T=4,8))的这些块的延迟之间的相对差值很不一样。对于n较小而基数T较高的例子(例如T=16以及n任意),选择块比压缩阵列慢,但是在其它例子中情况相反。这意味着为一个块或别的块设计更快的电路不能给出对平衡这些级的问题的通用解决方案。所有这些使得难于导出一种用于利用平衡性良好的管线级来管线化现有技术的乘法器/MAC结构的系统方法。
另一方面,如果使用独立的现有技术乘法器/MAC单元的并行阵列执行多个相应操作,则即使可以共享较快的块而不影响总的吞吐量,也需要大块的硅面积。另外,如同上面说明的,如果在这样的阵列中使用管线化的乘法器/MAC单元,则管线级的平衡性将会很差。
用于矩阵-向量运算的现有技术的并行结构被设计为使用多个与加法器结合的独立的乘法器或多个独立的MAC单元。它还通常具有多个用于不同类型运算操作的专用电路。但是,高基数乘法器包括可以重用于诸如加法/减法、累加等之类的其它操作的块(管线级)。还应该指出,在矩阵-向量运算中,特别是那些用于视频/图像处理的运算中,如果使用了高基数乘法方法,则有多种解决方案,其中一个被乘数将被几个乘数相乘,这意味着被乘数的潜在部分积可以在所有这些乘法中重用。例如,在向量和矩阵计算操作中,其中同一个乘数将被使用很多次,在运算期间同一个部分积将被使用不止一次。当在现有技术结构中执行这种计算操作时,它们在每次需要部分积时计算部分积,这带来硬件资源的低效使用和额外的功率消耗。另外,如上所述,很多情况下现有技术的乘法器的管线级是完全平衡的,因此降低了设备的效率。
发明内容
本发明的目的是实现一种用于执行计算操作的改善的计算结构和方法,其具有存储计算操作的中间结果的能力,特别是存储乘法运算的潜在部分积的能力。在依照本发明的方法中,在操作中至少一个计算级的输出数据例如管线级的输出数据被存储在存储器中,其中被存储的数据作为另一个计算操作的输入数据。除了存储潜在部分积之外,该计算设备的存储器可以用于许多计算操作。依照本发明的计算设备的一种有利实施例是通过一组控制信号可以实现几种不同结构的功能或可配置为几种不同结构。本发明的结构可以有利地实现为VLSI结构。
本发明有多种不同的实施例,在说明书中稍后将更详细地说明其中的一些。
在第一实施例中使用了存储器单元,在同一个被乘数被乘以多个乘数的情况下,在存储器中可以存储和重用潜在部分积。这种操作的非限定性例子是矩阵-向量乘法、FIR滤波等。这样,具有相同被乘数的多个乘法中只有第一个被完全执行,而其它的乘法只被部分执行,从而避免了计算潜在部分积的大部分资源需求。例如,当将一个矩阵和一个向量相乘时,只对用于计算输出向量的第一分量执行完全乘法,而对用于计算输出向量的其余分量的其余乘法只是部分地执行。当执行FIR滤波时,完全乘法只在计算第一个输出采样时执行一次,而用于计算其它输出采样的其余乘法被不完全执行。
第二实施例在矩阵-向量运算中使用并行乘法器结构,同时有机会灵活地配置它来执行更小的任务。
本发明的第二实施例的结构提供了可被实现为如下设备的结构,该设备可以被配置执行一系列操作,包括:(a)多个乘法;(b)多个MAC操作;(c)多个不同精度(位宽)的加法/减法;和/或(d)并行累加。
第三实施例是并行乘法器结构和用于视频和图像处理(MAVIP)的绝对误差和(SAD)加速器结构的组合。该结构是多功能结构,从而通过一组控制信号可以将它配置为不同结构。
确切地说,依照本发明的方法的主要特征在于,在所述第一计算操作中至少一个管线级的输出数据被存储在存储器中,以及在所述第二计算操作中所存储的数据被用作一个管线级的输入数据。依照本发明的系统的主要特征在于,该系统还包括用于在所述第一计算操作中存储至少一个管线级的输出数据的存储器,以及用于在所述第二计算操作中使用所存储的数据作为一个管线级的输入数据的数据检索器。依照本发明的设备的主要特征在于,该设备还包括用于在所述第一计算操作中存储至少一个管线级的输出数据的存储器,以及用于在所述第二计算操作中使用所存储的数据作为一个管线级的输入数据的数据检索器。
本发明与现有技术的解决方案相比显示出显著优势。可以开发一种VLSI结构,其适于有效实现在诸如视频/图像处理算法之类的信号处理应用中经常执行的广泛的运算模式。通过使用根据本发明的方法,可以比现有技术的方法和设备更快地并且更低能耗地执行视频/图像处理环境中的乘法运算。本发明对于执行多个乘法/MAC以及执行多个具有一个共享操作数(共享的被乘数)的多个乘法/MAC尤其有效。由于能够存储潜在部分积并在后续计算操作中使用它们,所以在面积和功耗上能取得显著的缩减。本发明的另一个有利实施例具有当不需要某些管线级时将这些不同管线级设置为节能模式和/或使用不同的管线级基本上同时执行不同的计算操作的能力,这个能力导致减少的功耗。高速性能(高吞吐量)是由于使用了管线技术,使用管线技术有可能灵活地平衡不同管线级的延迟并将整个结构的周期缩小到最快块的延迟长度。与单个的管线化的现有技术(radix-4或更高基数)乘法器相比,本发明的方法提高了吞吐量,而面积最小限度地增加,以及输入/输出总线的宽度没有增加。
存储器单元还允许与其它管线级并行地使用第一管线级以用于另一任务,也就是说,可以与执行一个基于乘法的操作同时地为另一个任务执行(改变精度的)并行加法/减法操作。
本发明的一个有利实施例的优势还在于,不必平衡该结构的第一管线级和其它管线级,因为在大部分循环中第一管线级即用于计算潜在部分积的加法器阵列不在关键路径上。
依照本发明的有利实施例的可配置结构使得有可能对不同操作重用同一个设备。另外,可以执行输入自变量的位精度不同的操作,例如八个并行的8位加法或4个并行的16位加法。
因为从大部分乘法运算中丢弃了最耗费资源的部分,即计算潜在部分积的部分,所以可以实现显著节约时间和功率/能量消耗。
作为多功能的结构,本发明的一个有利实施例能够取代几种专用于特定信号处理操作如视频/图像处理操作的硬件加速器。
在本发明的一个方面,提供了一种使用管线化的计算设备来执行计算操作的方法,该管线化的计算设备包括:一组至少两个管线级、至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述管线级具有至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述方法包括以下步骤:
把用于执行第一计算操作的数据输入到该设备中;
把用于执行第二计算操作的数据输入到该设备中;
执行第一计算操作;和
执行第二计算操作;
其特征在于,
其中执行第一计算操作的步骤还包括把至少一个管线级的输出数据存储到存储器中,以及
其中执行第二计算操作的步骤还包括使用所存储的数据作为输入到一个管线级的输入数据。
在本发明的另一个方面,提供了一种用于在管线化的计算设备中执行计算操作的系统,所述管线化的计算设备包括:一组至少两个管线级、至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述管线级具有至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,以及所述设备还包括用于第一和第二计算操作的数据的输入,其特征在于:所述系统还包括存储器,用于在所述第一计算操作中存储至少一个管线级的输出数据,还包括数据检索器,用于在所述第二计算操作中使用所存储的数据作为一个管线级的输入数据。
在本发明的再一个方面,提供了一种用于在管线化的计算设备中执行计算操作的设备,所述管线化的计算设备包括:一组至少两个管线级、至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述管线级具有至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,以及所述设备还包括用于第一和第二计算操作的数据的输入,其特征在于:该设备还包括存储器,用于在所述第一计算操作中存储至少一个管线级的输出数据,还包括数据检索器,用于在所述第二计算操作中使用所存储的数据作为一个管线级的输入数据。
附图说明
下面将参考附图更详细地描述本发明,其中
图1说明一种现有技术radix-4 Booth再编码式乘法器的典型结构,
图2说明一种radix-T Booth再编码式(T≥8)或非再编码式(T≥4)乘法器的通用结构,
图3a说明并行radix-T MAC单元结构中的求和块的一种实施例,其中该求和块被实现为通用压缩阵列,用于n/t个选择的部分积以及用于反馈的和与进位项,
图3b说明并行radix-T MAC单元结构中的求和块的另一种实施例,其中该求和块被实现为分裂的压缩阵列,
图4显示一种绝对误差和结构的通用结构,其中DS单元用作减法器,随后是XOR门,
图5显示DS单元的通用结构,
图6说明一个绝对误差和结构的例子,其中p=1,s=8,n=8,
图7以简化框图说明依照本发明的第一有利实施例的计算设备的通用结构,
图8以简化框图说明用于多个乘法/MAC操作的依照本发明的第二有利实施例的可配置计算设备的通用结构,
图9说明依照本发明的结构的有利实施例,其用于两个同步的(13×13)-位的乘法累加操作的矩阵-向量运算,
图10a说明具有以循环的mod P模式工作的寻址单元的寄存器存储器,
图10b说明具有循环的mod P反馈回路的移位寄存器存储器,
图11说明依照本发明的用于视频和图像处理的多功能结构的通用结构,
图12说明AA/DSA单元的示例性实现,
图13说明用于视频和图像处理的多功能结构的示例性实现,该多功能结构是通过合并图6的SAD结构和图9中用于矩阵-向量运算的结构得到的,以及
图14以简化框图说明依照本发明的有利实施例的设备。
具体实施方式
下面将更详细地描述本发明的第一有利实施例。图7说明依照本发明的设备的第一有利实施例的通用结构。设备1被分成一组不同的管线级P1到P4。在这个实施例中,设备1包括4个管线级,但是显然在本发明的范围内管线级的数目可以不同于4。该结构还包括一个存储器块,其中对应一个操作的第一管线级的输出可以被写入其中,并且重用为第二管线级的输入以用于另一个操作。
管线是提高用于执行多个类似操作如乘法和/或MAC的系统的吞吐量的通常方法。考虑现有技术radix-T Booth再编码式(T=8,16)或非再编码式(T=4,8)乘法器结构的一种典型的管线化实现方案,第一管线级P1将是s个加法器的阵列,其中s在表2a中给出,第二管线级P2将是选择块,第三管线级P3将是压缩阵列,以及最后几个管线级P4(它们的数目在不同实现方案中是不同的)将构成最终加法器。
在依照本发明的第一有利实施例的设备的一个实现方案中包括多个(一组)乘法器/MAC单元。图7示意性显示了不同radix-T Booth再编码式(T=8,16)或非再编码式(T=4,8)乘法器组的通用结构。一组乘法器/MAC单元的结构的有利实施例一般可以描述为管线化设备1,其中第一管线级P1包括多个例如p个s个加法器(AA)的阵列2,并且所有的s个加法器的阵列2共享相同的输入线6。第二管线级P2是多个例如q个选择块(SB)3,第三管线级P3是多个例如u个压缩阵列(CA)4,以及第四管线级P4由多个例如v个最终先行进位加法器(CLA)5构成。所述基本功能块(AA,SB,CA和CLA)实际上可以与在相应类型的现有技术乘法器和/或MAC单元中使用的功能块相同。因此,p=q=u=v=1的情况对应于现有技术乘法器/MAC单元结构的情况。主要不同在于所述设备包括存储器21,其可以用来存储一个或多个计算操作的中间结果。这种中间结果的一个非限制性例子是潜在部分积。多路复用器22可以用来选择第一管线级的输出或存储器21作为第二管线级P2的输入。在一个有利实施例中,现有技术结构的至少一些基本块被多于一个的基本块代替。该设备的操作依赖于几个参数(p,q,u和v),通过适当选择这几个参数,可以设计出具有良好平衡的管线级的设备。一个管线级中的块最好以时间交错的方式运行,这样使得各管线级的吞吐量可以变化,以便它们彼此大致相等并且匹配期望的操作步骤持续时间。
下面简单解释多个功能块的时间交错式运行的原理。考虑用在较大系统的管线级中的一个功能块FB,并假设该功能块有一个估计延迟DFB≈pTdes(但是DFB≤pTdes),其中Tdes是该系统期望的操作步骤持续时间。然后,为了使管线级P1,...P4按照匹配一个步骤的持续时间的吞吐量运行,串行功能块可以被置换为w个功能块FB1,FB2,...FBw,这w个功能块在其入口有管线寄存器(锁存器)R1,...Rw,并在其出口具有一个w:1多路复用器10,11,12,13。参数w依赖于讨论的管线级。对于第一管线级P1,参数w对应于参数p,即其中有p个管线寄存器R1,...Rp,并且第一管线级的多路复用器10选择p个输入之一送往其输出。对于第二管线级P2,参数w对应于参数q,即其中有q个管线寄存器R1,...Rq,并且第二管线级P2的多路复用器11选择q个输入之一送往其输出。对于第三管线级P3,参数w对应于参数u,即其中有u个管线寄存器R1,...Ru,并且第三管线级P3的多路复用器12包括两个多路复用器(未示出),每个都选择u个输入之一送往其输出。对于第四管线级P4,参数w对应于参数v,即其中有v个管线寄存器R1,...Rv,并且第四管线级P4的多路复用器13选择v个输入之一送往其输出414。管线级P1,P2,P3,P4的共享输入与w个管线寄存器R1,...Rw中的每一个相连接。但是,这些寄存器的每一个在每w次操作步骤中只打开一次,该w个操作步骤具有一个操作步骤的时间偏差。这样,在每个操作步骤中,输入I实际上只连接到一个功能块的输入,同时其它连接是无效的,因为所讨论的管线级的多个功能块中其它功能块的输入寄存器对于写入都是关闭的。在每w个操作步骤的第一个操作步骤期间,在第一个功能块FB1的输入端处的寄存器R1是打开的,在每w个操作步骤的第二个操作步骤期间,在第二个功能块FB2的输入端处的寄存器R2是打开的,等等。通常,在操作步骤t=1,2,...K中,输入I实际上仅仅连接到FBf的输入,这里f=(t-1)mod w+1。因此,输入I由所讨论的管线级的功能块FB1,..FBw空间共享,但是时间上在它们之间分摊。在该系统运行期间,在操作步骤t=1,2,...K,该管线级的输入数据流的一个样本Xt进入在该管线级处启动的功能块FBf,f=(t-1)mod w+1。一旦FBf在操作步骤t+w-1,t=1,2,...K的末尾完成它对Xt的操作,在功能块的输出端的w:1多路复用器10,11,12,13在下一个操作步骤t+w,t=1,2,...K将FBf中获得的结果传送到该管线级的输出。因此,多路复用器10,11,12,13遵循mod w的循环规则运行。
通过将现有技术的乘法器/MAC单元结构的每个功能块置换为多个相似的功能块,并且通过使用时间交错运行的原理,对于通过在每个管线级选择合适数目的块(也就是说,参数p,q,u和v)而预先确定的操作步骤持续时间,这些管线级能够达到一个更好的平衡。假设在现有技术的乘法器/MAC单元结构中的四个管线级的延迟分别是DAA,DSB,DCA,DCLA,以及该系统的期望吞吐量是每秒Ndes个乘法/MAC操作,然后期望的操作步骤持续时间将被选择为Tdes秒,使得Tdes≤1/Ndes,并且所述设计参数将被选择为
Figure C20038010840100272
Figure C20038010840100273
以及
Figure C20038010840100274
其中表示向上舍入到相邻的整数值。
图8描述了依照本发明的第二有利实施例的计算设备。依照本发明的第二有利实施例的结构的可配置性是通过在第一管线级P1、第三管线级P3和第四管线级P4的输入端包含一个或多个选择装置如多路复用器15、16、17实现的。多路复用器15、16、17有利的是2:1多路复用器。分别通过控制信号c1、c2和c3控制它们。该结构还包括输出选择器20,其由第一控制信号c1和第二控制信号c2与第三控制信号c3的OR组合(即
Figure C20038010840100276
)控制。输出选择器20从第一管线级P1或从将连接到该结构的输出总线14的最后一个管线级P4的输出中选择数据。多路复用器15、16、17的第一输入端被连接到该结构的输入总线6的相应线路,并且多路复用器15、16、17的第二输入端被连接,使得如果第二输入端被激活,则该结构作为一个乘法/MAC操作设备运行。因此对于控制信号c1、c2和c3的不同组合,该结构可能是不同的配置。可以使用该选择装置为该设备重定内部信号路径,还可以使用它从一组内部信号中选择一个输出信号。该选择装置在至少两个可选择的管线级间选择至少一个管线级的输入。所述配置对这些信号的依赖关系如下。
当所有的控制信号c1、c2、c3被设置为逻辑1状态,即c1=c2=c3=1,该结构作为一个乘法/MAC操作设备运行。在第一控制信号c1是逻辑0状态并且另外两个控制信号c2、c3是逻辑1状态的情况下,即c1=0;c2=c3=1,该结构作为sp个加法器/减法器的阵列运行。只有第一管线级P1(即加法器阵列2)被激活,而其它管线级无效。第三个可选方案是第一控制信号c1被设置为逻辑1状态而第二控制信号c2和第三控制信号c3被设置为逻辑0状态(c1=1;c2=c3=0)。这意味着该结构作为累加器运行。只有压缩阵列4和最终加法器5工作,而加法器阵列和选择块无效。在第四个可选方案中,第一控制信号c1和第二控制信号c2都被设置为逻辑1状态,而第三控制信号c3被设置为逻辑0状态(c1=c2=1;c3=0)。在这种情况下,该结构作为一个宽精度的快速加法器运行。还有在另一个可选方案中,当c1=c2=c3=0时,该结构同时作为sp个加法器/减法器的阵列和一个累加器运行。显然以上所述的选择装置16,17,20以及该结构/操作模式对控制信号c1、c2、c3的状态的依赖关系只是一种可能的可选方案,在本发明的范围内还可以应用其它的可选方案。这也适用于在说明书中稍后将描述的其它控制信号。
在图8的结构中有两个其它控制信号c4和c5,它们在不需重新配置结构的条件下给该结构增添多功能性。第四控制信号c4激活(例如如果c4=1)或者去激活(例如如果c4=0)第三管线级P3中的压缩阵列4的输出端和输入端之间的反馈回路。因此,如果c1=c2=c3=1,c4=0,则该结构作为乘法器运行,以及如果c1=c2=c3=c4=1,则该结构作为MAC单元运行。第五控制信号c5(它可以是1、2或3位信号)通过允许(c5的相应位例如是逻辑1)或停止(c5的相应位例如是逻辑0)全加器5的块之间的进位传送来控制第一管线级P1中的加法器/减法器的精度。这样,多个包含sp个用于m位输入的加法器/减法器的加法器阵列也可以作为多个包含2sp个用于m/2位输入的加法器/减法器或者作为多个包含4sp个用于m/4位输入的加法器/减法器等等工作。还可能的是选择块3、压缩阵列4和最终加法器5可以被稍微修改并可由一个控制信号控制,从而也允许实现乘法/MAC操作的不同精度。
用于矩阵-向量运算的结构
下面将使用依照本发明的乘法器/MAC单元结构的有利实施例执行矩阵-向量运算,例如标量与向量或与矩阵的乘法,矩阵与向量的乘法(以及由此矩阵与矩阵的乘法,逆矩阵计算,颜色转换,快速正交变换,例如FFT,快速DCT等),以及卷积或FIR滤波,以及因此滤波器组和特别是离散小波变换执行过程。这些运算的共同之处在于,一个被乘数x被乘以多个乘数ai,i=1,...K。另一方面,高基数乘法方法的一个基本特征是主要的复杂性从第二步(对部分积求和)转移到了第一步(形成部分积)。基数越高,复杂性转移的越多。
这个有利应用的主要思想是仅仅计算公共被乘数x的潜在部分积一次,就是当用第一个乘数a1乘以它的时候,然后当其余乘数ai,i=2,...K与x相乘时就重用这些潜在部分积。这样,K个乘法中只有一个将被完全执行,而K-1个乘法将不完全执行,即不执行高基数乘法方法中最复杂的部分(即潜在部分积的计算)。显然,于是就能做到显著节约时间和功率/能量消耗。
依照这种思想,可以从本发明的第一有利实施例的乘法器/MAC单元结构中以及从第二有利实施例的可再配置设备中导出用于矩阵-向量运算的建议结构的通用结构。这是通过利用如图7和图8所描绘的存储器21实现的。存在第六控制信号c6,根据该控制信号存储器21打开写入功能(当第六控制信号c6例如被设置为逻辑0(低))或者关闭写入功能(当第六控制信号c6例如被设置为逻辑1(高))。当存储器21被设置为打开写入时,可以从多个加法器阵列2的输出将潜在部分积存入存储器21。同一个控制信号c6可以被用来控制2:1多路复用器22。多路复用器22的第一输入与多个加法器阵列2的输出相连接,以及多路复用器22的第二输入与存储器21的输出相连接。因此,潜在部分积或者直接从多个加法器阵列2的输出(当第六控制信号c6例如被设置为逻辑0时)或者从存储器21进入多个选择块3的输入(当第六控制信号c6例如被设置为逻辑1时)。
图9描绘了一种用于矩阵-向量运算的示例性结构,这种情况下两个(13×13)位的乘法累加运算能够同步执行。该结构包含两个独立的选择块3a、3b,这两个选择块由两个不同乘数的位控制。可以选择相同被乘数的潜在部分积(如果c2=c3)或者选择两个不同的被乘数的潜在部分积(如果c2≠c3)来输入选择块3a、3b。两个选择块的输出被输入两个独立的具有31位反馈的压缩阵列(b=32是该种情况下最终累加结果的最大位精度)。这些压缩阵列的输出即和S和进位C可以在其后连接最终加法器的(4×31)输入压缩阵列中组合而形成一个累加项,或者可以成对相加以组成两个累加项。这样,两个独立的压缩阵列在执行累加的阶段工作,每个都具有较小的深度,以及由此具有较短的反馈回路。之后,两对和与进位项或者在两个CPA中独立相加(成对),或者在第三个加法块中联合相加。在第一种情况下,同时获得两个独立操作的结果(例如矩阵-向量乘法中的两个输出分量)。在第二种情况下,一个复杂操作的计算被分割成两个较小的计算然后结果被合并。
实际上,在用于矩阵-向量运算的建议结构中可以使用任何读/写存储器。图10a和图10b描绘了两种推荐的存储器类型。图10a描绘的存储器类型对应于具有R个长度为L的寄存器的寄存器存储器的情况,其中L足够大以便在一个寄存器中存储一个被乘数的潜在部分积:L≥(m+t)s,其中m是被乘数的位精度,t=logT,T是使用的乘法方法的基数,以及s是每个加法器阵列中加法器/减法器的数目。这种存储器类型的寻址单元应该能够为任何正整数P≤R按照循环的mod P规则生成地址。这意味着在操作步骤t=1,2,...寻址单元生成a(t)=(t-1)mod P作为当前的地址值。然后如果第六控制信号c6是低,则输入线上的潜在部分积被写入寄存器a(t),a(t)∈{0,1,...R-1}(写入存储器),或者如果第六控制信号c6是高,则寄存器a(t),a(t)∈{0,1,...R-1}的内容,即先前存储的潜在部分积的值被写到输出线(从存储器)。
图10b描绘的第二存储器类型以类似的mod P方式操作,但是被组织为一个带有可控制反馈的移位寄存器。在每个操作步骤,来自第p(p=0,...P-2)个寄存器单元的数据在其后一个寄存器没有被中止的条件下被移往第(p+1)寄存器单元。存在来自每个寄存器单元的反馈线。所有反馈线被输入一个(R+1):1多路复用器,该多路复用器还具有作为另一输入的输入线(到存储器)。多路复用器由一个(log R)位的信号控制,该信号的值被设置为c6P,这样来自该输入线的数据(如果c6=0)或来自开始于第(P-1)个寄存器的输出的反馈回路(如果c6=1)的数据被写入第0个寄存器。存储器的输出总是取自第0个寄存器。
接下来将更详细考虑在视频和图像处理中经常执行的三个操作的实现。应注意这些只是用于特定操作的示例性实现方案,但是本发明并不只局限于这些操作,也不正好局限于所介绍的方法。涉及一个公共被乘数被多个乘数相乘的乘法的其他运算可以类似地由依照本发明的用于矩阵-向量运算的结构执行。也可以开发用于所考虑的运算的其他类似算法。
首先,考虑标量和向量的乘法操作的执行,这个操作是最明显的例子,其中公共的被乘数(标量)x被乘以多个乘数即向量a的分量ai,i=1,...K。在第一步,当执行公共被乘数和第一个乘数a1的乘法的时候,第六控制信号c6被设置为低,这样x的潜在部分积就直接从第一管线级P1的加法器阵列2送往第二管线级P2的多个选择块3,并且同时被写入存储器21。存储器21被设置为依照mod 1模式运行,并且除了第0个寄存器外其所有的寄存器都被中止。如果将执行只有一个标量与一个或几个向量的乘法,则第一管线级的所有加法器阵列2a除了第一个之外也都被中止。从第二个操作步骤开始,第六控制信号c6被设置为高,这样存储器21被关闭写入,并且已经在第一步后被写入存储器的x的潜在部分积从存储器21中取出以通过对应的2:1多路复用器22的第二个输入送往选择块3。同时,所有的加法器阵列2(包括第一个)被停止,或者被转换到另一个任务。因此,由于通过丢弃代价最高的部分即潜在部分积的计算而缩减了乘法操作的关键路径,所以实现了节约时间。显著节约功率和能量消耗的实现是因为在K个操作步骤的K-1个步骤中第一管线级被停止或者转换到另一任务。另一个好处在于,在这个计算方案中,第一管线级P1不必和其他管线级P2到P4平衡,因为在K个操作步骤的K-1个步骤中它不属于关键路径。还有一个优势在于被乘数x只从外部存储器(未示出)中取出一次,而在传统实现方案中必须取出K次。
这里将考虑的第二个运算是矩阵-向量乘法
s=Ax,或同样地, s i = Σ j = 1 P a i , j x j , i = 1,2 , . . . , K
这个运算是很多线性代数和视频/图像处理算法的一部分,例如矩阵与矩阵的乘法、逆矩阵计算、图像颜色空间转换、快速正交变换(例如FFT、快速DCT等)、几何变换、边缘检测等等。矩阵-向量乘法可以被看作多个向量与向量的乘法,所以可以用一个MAC单元或一组MAC单元来实现。但是,应注意到输入向量x的每个分量(被乘数)xj,j=1,...P,被乘以K个乘数,即矩阵A第j列的分量。通过在依照本发明的这个实施例的用于矩阵-向量运算的结构中使用存储器21,允许对于输入向量x的每个分量xj,j=1,...P,只计算潜在部分积一次。然后该潜在部分积被存储在存储器21中,假如其包含足够寄存器(即P≤R)的话。
如从图示原理中所知,上述关键路径表示从一个开始节点到结束节点的最长路径。当应用到本发明中,关键路径表示在该管线化系统中从计算过程的开始到计算过程的结束的最长路由。关键路径的长度描述了执行计算操作花去的时间。通过使用关键路径分析,有可能找到系统中影响关键路径长度的部分。当找到了这样的部分,可以分析它们以发现是否存在任何缩短该部分长度的可能。通常,试图缩短不属于关键路径的部分既不必要也没有用。
为了初始化一个(K×P)矩阵和一个向量的乘法,通过如下所述为控制信号设置适当的值来配置依照本发明的有利实施例的该结构。存储器21被设置为依照mod P模式运行,并且存储器的从P到R的寄存器都被中止。通过将第五控制信号c5设置为高,该结构的压缩阵列4被设置为作为累加器工作。起初,第六控制信号c6被设置为低,同时在P个操作步骤内t=p+1,...p+P,形成每个分量xj,j=1,...P的潜在部分积,其中p个步骤是第一管线级的延迟,p等于其中加法器阵列的数目。在这些操作步骤期间,分量xj,j=1,...P的潜在部分积直接从第一管线级P1的加法器阵列2经由多路复用器22送往第二管线级P2的多个选择块3,并且同时被写入存储器21。因此,矩阵A的第一行乘以输入向量x的乘法被实现,并且,每个分量xj,j=1,...P的潜在部分积基本上同时被存储在连续的寄存器中。在操作步骤p+P后,控制信号c6被设置为高,这样存储器21对写入关闭,并且xj,j=1,...P的潜在部分积被循环地从存储器21中取出,经由2:1多路复用器的第二个输入送往多个选择块3的输入。第五控制信号c5也在一个步骤内被设置为低,以便重新开始新的累加。重复以上过程K-1次,直到矩阵A的所有行被乘以输入向量x。从操作步骤p+P开始,所有的加法器阵列2(包括第一个)都被关闭,或者转换到另一个任务。因此在PK个乘法中只有P个被完全执行,而它们中的P(K-1)个被部分执行,即不包含第一个最复杂的步骤。与标量和向量乘法运算的情况类似,这样明显节约了时间和功率/能量消耗。
接下来将更详细地考虑在依照本发明的结构上的卷积或FIR滤波的执行。执行的运算如下:
s i = Σ j = 1 P a j x i - j , i = 1 , . . . , K
其中通常P<<K。在依照本发明用于矩阵-向量运算的结构中有两个策略可能实现FIR滤波。
在第一个策略中,FIR滤波被看作P-对角(或P-taped)矩阵A与输入向量的乘积,该向量被附加对应负的下标的P个分量xi,i=-P+1,...0,并且被向下移动P个位置。考虑到矩阵A是稀疏矩阵(它只在P对角线上才有非0项),上面用于矩阵-向量乘法的通常策略可以被稍微改变以适应FIR滤波的情况。矩阵A的第i行(i=1,...K)只有P个非0项,即在i,i+1,...i+P-1列的滤波系数aj,j=1,...P。在这个实施例中,没有将输入向量的所有分量的潜在部分积同时存储在存储器中,而是只将P个分量的潜在部分积同时存储在存储器中。每P个操作步骤在多个加法器阵列中为当前输入采样计算新的一组潜在部分积,并且以它代替P个操作步骤之前存入存储器21的那组潜在部分积。这通过每P个操作步骤将第六控制信号c6设置为低实现。因此,多个加法器阵列2不能完全被中止,但是它们可以比没有存储潜在部分积的实施方案慢P倍地执行。在PK个乘法中只有P+K个乘法被完全执行,而其它乘法只被部分执行。
在第二个用于实现FIR滤波的策略中,当计算第一个输出采样时,P个滤波系数的潜在部分积被存储在存储器21中。然后当计算其余K-1个输出采样时,这些潜在部分积被从存储器21中循环取出。这意味着在PK个乘法中只有P个被完全执行,而其它只被部分执行。所有滤波系数的潜在部分积一被存储在存储器21中,所有的加法器阵列2就可以被中止或者转换到另一个任务。因此,第二策略甚至比第一策略更有利。但是,只有在第一管线级P1的加法器/减法器2有足够的精度来为滤波系数计算潜在部分积的条件下,这个策略才可能实现。
用于视频/图像处理的多功能结构
本发明的结构可以被有利地实现为一种用于视频/图像处理(MAVIP)的多功能结构。图11描绘了一种依照本发明的视频处理结构的有利实施例。这个结构基于上述实施例,并且它使用了一个所谓的绝对误差和(SAD)结构24。SAD体系结构的通用结构在图4中给出。它包括:多个所谓的差分符号(DS)单元的p阵列25,其以时间交错的方式工作,以及带有反馈的压缩阵列4,以及最终加法器5,其后面连接最小值计算(M)单元26,该最小值计算单元在运动估计过程(基于SAD)中是需要的,但是它自己在SAD计算中不必要。每个DS单元阵列25(DS阵列或简称DSA)包括s个DS单元27(图5),它们之中的每一个实质上是在符号位和其它差分位之间的一个8位减法器跟随有一个XOR门28。压缩阵列的输入是由s个1位数字(符号数据)、s个n位数字(差分数据,通常n=8)和两个(n+logK-1)位反馈(通常K=256)组成。最终加法器可以有(n+logK)位精度。SAD结构的一个例子包括八个DS单元(减法器)并且对应p=1,s=8,n=8和K=256的情况,其在图6中示出。
比较图4的SAD结构和基于乘法器的图8的结构,特别是图6的例子和图8或图9的结构,可以注意到在这两种类型的结构之间有实质性的相似。这些类型的结构实质上都包括:包含多个加法器4或减法器27(在SAD的例子中随后连接XOR门)的块;数据路径选择块,其在基于乘法器的结构的情况下是选择块3,在SAD的情况下是直接的连接;包括压缩阵列4和最终加法器5的求和块。可以利用这种相似性以便统一这两种类型的结构并将它们合并到一个可再配置结构中,该可再配置结构可以利用几个控制信号被配置为这两种结构中一种。这样,可以通过由几个信号控制的简单逻辑的最小开销实现该结构的进一步的多功能型。
合并SAD结构和基于乘法器的结构有几种可替换方案。图11给出用于视频/图像处理的多功能结构的通用结构的这些可替换方案中的一种。这个结构通过对基于基本乘法器的结构的每个块做简单改动而得到。在这种情况下,所述基本结构是图8中用于矩阵-向量运算的结构。图13说明从图9的用于矩阵-向量运算的结构导出的用于视频/图像处理的多功能结构的一种示例性实现。
在一种实现方案中,用于视频/图像处理的多功能结构包括加法器阵列2,该加法器阵列依赖于第一控制信号c1和第五控制信号c5,其能被配置为加法器/减法器或DS单元,因此被表示为AA/DSA。图12示意性地示出通常情况下AA/DSA单元的可能实现。该阵列的每一个m位加法器/减法器包括r个连续的(m/r)位加法器/减法器(图13中,m=16,r=2),其后连接XOR门。XOR门只有在c1c5=1的情况下,也就是在(c1,c5)=(1,0)的情况下是有效的,此时该结构作为SAD结构工作。另一方面,只有这种情况下提供r个连续的(m/r)位加法器/减法器之间的进位传递。第一控制信号c1和第五控制信号c5的组合还被用来控制是否允许不同的输入(c1c5=0)(加数或SAD操作数)或一个输入(c1c5=1)(被乘数)进入该阵列。执行加法或减法通过信号cin控制,该信号依赖于乘法方法和所讨论的m位加法器/减法器在AA/DSA单元中的位置。因此,根据控制信号c1和c5,AA/DSA单元可以被配置为以下面不同模式工作。
Figure C20038010840100351
在所考虑的图11的MAVIP的实施例中,在AA/DSA单元的块和压缩阵列的块之间存在一个数据路径选择块,该选择块此时和AA/DSA单元块由相同的信号c1和c5控制。通过一个AND门使选择块的时钟信号(未示出)和信号c1相结合,使得当c1=0时该选择块被停止。在这种情况下,该结构作为加法器/减法器的并行阵列工作。根据控制信号c5,该数据路径选择块在SAD结构内时可以被配置为直接连接,(如果c5=0),从AA/DSA单元的输出端直接发送r个(m/r)位差分数据和r个1位数据给压缩阵列块,或者作为对应的乘法器结构之内的标准选择块工作(如果c5=1),从AA/DSA单元块或者存储器发送s个m位部分积到压缩阵列块。这是通过插入一个从相应线路选择数据的数据统一器/多路复用器块23实现的。如果c5=0,则该数据统一器/多路复用器块23选择AA/DSA单元块的输出,或者如果c5=1,则选择该选择块的输出,并且将数据类型转化为一个适于压缩阵列4的数据类型。例如,在图13的例子中压缩阵列的输入包括两组,每一组包括5个25位数字和两个31位反馈回路。每组中的输入集对应乘法方法中移位后的部分积的集合。因此,如果c5=1,则统一器/乘法器块23不对部分积做任何转变,而是只执行相应的移位,并且将两组部分积发送到压缩阵列块。但是,当实现SAD(c5=0)时,统一器/乘法器块23在将数据送往压缩阵列块之前转化8个8位和8个1位差分与符号数据。8个1位数据在一个小的压缩阵列内被压缩成两个2位数字,然后被以0补足(在MSB边)为25位数字。8个8位数字也被以0补足为25位数字。结果得到10个25位数字,然后按5个数字分组。
与图8的用于矩阵-向量运算的结构相比,需要改变图11的结构中的求和块4,以便使其根据信号c1和c5而可配置。首先,如果(c1,c2)=(0,1),则停止求和块4,使得在这种情况下该结构作为并行加法器/减法器工作。但是,如果(c1,c2)=(0,0),求和块4作为累加器工作,其直接从输入总线6获得数据,这样该结构实际上被分成了两个部分,第一部分作为加法器/减法器的并行阵列工作,而第二部分作为累加器工作。如果(c1,c2)=(1,1)且c5=0,那么求和块4被配置为用于SAD结构的那种形式,在每一个操作步骤从AA/DSA单元的块接收和累加已经由数据统一器/多路复用器块23预先转换过的rs个(m/r)位差分数据和rs个1位数据。在(c1,c2)=(1,1)且c5=1的情况下,求和块4被配置为用于基于基本乘法器结构的形式(例如图8的用于矩阵-向量运算的结构的求和块),其在每个操作步骤接收s个m位部分积,并且利用在数据统一器/多路复用器块中实现的适当移位对所述部分积求和或者累加。有多种方法来设计这样的可再配置求和块。图13的例子如图9的例子一样使用了两个求和块(压缩阵列),之后连接第三个求和块(最终加法器)。
图13给出从图9的用于矩阵-向量运算的结构导出的用于视频/图像处理的多功能结构的一个有利实施例,该实施例用于(n=m=13)位的被乘数和乘数的情况。这种实施方案的结构包括8个8位或4个16位的加法器/减法器2的可再配置阵列,用于存储加法器/减法器2的结果的存储器单元21,可配置的数据路径选择块3,也可以作为两个独立的求和/累加块工作的求和块4,以及选择正确输出的输出多路复用器20。该结构由七个控制信号c1,...c7控制。该结构的时钟信号(未示出)通过AND门与信号c1和c2组合,以便根据执行的运算中止该结构的一些块。例如,当(c1,c2)=(0,1)时,只有加法器/减法器阵列和输出多路复用器是有效的。在这种情况下,该结构简单地作为并行加法器/减法器阵列工作。当c1=1时,所有的块有效,但是数据路径选择块根据c5=0或c5=1分别被配置为用于SAD实现方式的直接连接或基于乘法器的结构的数据路径选择块。压缩阵列的不同部分也是依赖于c5工作。因此,该结构根据信号c5被配置为SAD结构(如果c1=1且c5=0)或基于乘法器的结构(如果c1=1且c5=1)。接下来,当c1=c5=1时,与本说明书上述的类似,基于乘法器的结构根据信号c3,...c7被再配置为其可能配置中的一种。另外,求和块可以被配置为两个独立的求和块(如果c6=1),使得有机会立刻实现一对乘法,或者被配置为一个单独的块(如果c6=0),用于更快地累计更多的部分结果。
表3列出可以在图13的MAVIP的示例性实施方案中执行的一些运算连同控制信号c1,...c7的相应选择。
表3
  运算   控制信号c<sub>1</sub>  c<sub>2</sub>  c<sub>3</sub>  c<sub>4</sub>  c<sub>5</sub>  c<sub>6</sub>  c<sub>7</sub>
  并行8位加法器/减法器   0   x   x   x   0   1   1
  SAD   1   x   x   x   0   0   1
  一对13位乘法   1   x   0   0   1   1   0
  (k×1)到(1×k)的13位向量-向量内积(k<65)   1   0   0   1   1   0   1(不使用存储器)
  (k×1)到(1×k)的13位向量-向量内积(k<65)   1   1   1   1   1   0   0(使用存储器)
  (p×k)到(k×1)的13位矩阵-向量积(k<65)   1   c<sub>2</sub>  c<sub>3</sub>  1   1   0   0首先k/2个循环c<sub>2</sub>=c<sub>3</sub>=0,之后c<sub>2</sub>=c<sub>3</sub>=1
  长度为p的信号的k抽头FIR滤波   1  c<sub>2</sub>   c<sub>3</sub>  1   1   0   0首先k/2个循环c<sub>2</sub>=c<sub>3</sub>=0,之后c<sub>2</sub>=c<sub>3</sub>=1
有多种备选方案可以实现上述的本发明的实施例,因为可以应用不同类型的乘法器/MAC单元结构的多种不同扩展。另外,在每种结构中设计参数的不同选择导致不同的备选方案。
本发明的有利实施例可以被应用为例如独立的(紧耦合或松耦合)设备。本发明的备选实施方案可以是系统的处理器内的一个功能单元。这种装置可以代替处理器内的乘法单元。还有许多关于如何做到这一点的备选方式。其中之一可以是如下的实现方式,不同实施例之一的仅仅一部分被用作处理器中的功能单元,不包括多个加法器阵列(第一管线级P1),也不包括存储器21。该处理器的加法器/减法器于是将担任用于矩阵-向量运算的结构中的多个加法器阵列的角色,而寄存器担任存储器的角色。
例如,德州仪器TMS320C64x DSP包括八个功能单元,其中六个可以用作64位加法器/减法器,它们中的每一个能够作为两个32位或四个16位或八个8位的加法器/减法器工作。该设备还包括128个64位寄存器,每个寄存器同样可以用作两个32位或四个16位或八个8位的寄存器。假设与图6的功能单元相似但没有加法器阵列的另一个功能单元(FU)将被包括在处理器中。那么这个包含多个选择块、多个压缩阵列和多个快速最终加法器的功能单元可以用于乘法和用于在以下两个周期中基于乘法的运算(现有的TMS320C64x乘法器的乘法也采用两个周期)。在第一个周期,加法器/减法器计算被乘数x的潜在部分积并把结果存入寄存器。在下一步,利用讨论的功能单元选择合适的部分积集合并将它们相加。在这种被乘数x被重用的情况下,第一个周期可以仅仅在涉及a的第一个乘法中执行一次,而在随后的关于a的乘法中这个周期可以省略,这在时间和功率消耗方面带来显著节约。另外,当执行具有相当少的系数的FIR滤波(卷积)时,TMS320C64x的加法器/减法器将仅仅用在其开始的几个(也许是一个)周期中,以便为滤波器系数计算潜在部分积,并把它们存入寄存器中。然后,将利用依照本发明的功能单元执行其余计算,并且加载/存储单元得到机会使用加法器/减法器用于别的目的(或者为了节省功率而中止它们)。在TMS320C64x的FIR滤波器的当前实现方案中,包括乘法器和加法器/减法器的所有的功能单元都将忙于那个任务。
另一个备选方案是可能实现具有不同位精度的本发明的有利结构。例如,可能实现能够在一个操作步骤中执行一个n×m乘法或两个(n/2)×m或n×(m/2)乘法,或四个(n/2)×(m/2)乘法的乘法器/MAC单元。
图14示出依照本发明的有利实施例的设备29。它包括用于控制设备29的操作的控制单元30。该设备还包括用来执行其它处理任务如信号处理的处理单元31。依照本发明的有利实施例的计算设备1优选地在处理单元31中实施。该处理单元还可以包括用于计算设备和控制单元30的有利共享存储器40,以及用于处理单元31的内部使用的内部存储器41,例如存储潜在部分积。该设备的用户接口33包括显示装置34、音频装置35、键盘36和例如视频照相机37。该设备29包括诸如移动通信装置之类的通信装置38,以便和通信网络(未示出)通信以及和其它已知的此类设备(未示出)交换信息。存储器装置39用来存储不同类型的数据和程序,例如控制单元30的操作命令。
本发明不仅仅限于上述的实施例,而是可以在所附的权利要求书的范围内进行修改。

Claims (30)

1.一种使用管线化的计算设备来执行计算操作的方法,该管线化的计算设备包括:一组至少两个管线级、至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述管线级具有至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述方法包括以下步骤:
把用于执行第一计算操作的数据输入到该设备中;
把用于执行第二计算操作的数据输入到该设备中;
执行第一计算操作;和
执行第二计算操作;
其特征在于,
其中执行第一计算操作的步骤还包括把至少一个管线级的输出数据存储到存储器中,以及
其中执行第二计算操作的步骤还包括使用所存储的数据作为输入到一个管线级的输入数据。
2.依照权利要求1的方法,其特征在于它是高基数的非Booth再编码式乘法方法。
3.依照权利要求1或2的方法,其特征在于所述计算操作被分为一个第一子操作和多个第二子操作,第一子操作的计算结果被存储,以及所存储的计算结果随所述多个第二子操作而被使用。
4.依照权利要求1或2的方法,其特征在于所述计算操作是乘法,其中一个被乘数被乘以一个乘数,该第一管线级执行乘数的潜在部分积的计算,并且潜在部分积被存储在存储器中。
5.依照权利要求1或2的方法,其特征在于所述计算操作是一个乘法操作,其中一个被乘数x被乘以多个乘数(ai,i=1,...K),当被乘数被乘以第一个乘数a1时计算公共被乘数(x)的潜在部分积,该潜在部分积被存入存储器中,以及当将被乘数(x)与其它乘数(ai,i=2,...K)相乘时使用所存储的潜在部分积。
6.依照权利要求5的方法,其特征在于通过将至少一个子操作划分成部分子操作并在不同时间开始每个部分子操作来至少部分地以时间交错方式执行所述计算操作。
7.依照权利要求1或2所述的方法,其特征在于该方法结合视频信息的处理而使用。
8.依照权利要求1或2所述的方法,其特征在于以管线化的方式执行一个乘法操作和另一个乘法操作,其中所述另一个乘法操作在所述一个乘法操作完成之前开始,所述乘法操作被划分为至少一个第一和第二子操作,所述第一和第二子操作的每一个在一个管线级中实现,并且所述子操作中至少一个在一个管线中并行执行,其中第二个乘法操作的子操作在第一个乘法操作的对应子操作完成之前开始。
9.依照权利要求1或2所述的方法,其特征在于在所述计算设备中执行选择性的数据路由,其中为至少一个数据接口在至少两个其它数据接口中进行选择,以便将所述至少一个数据接口连接到所选择的数据接口以在所述至少一个数据接口和所述选择的数据接口之间路由数据。
10.一种用于在管线化的计算设备中执行计算操作的系统,所述管线化的计算设备包括:一组至少两个管线级、至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述管线级具有至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,以及所述设备还包括用于第一和第二计算操作的数据的输入,其特征在于:所述系统还包括存储器(21),用于在所述第一计算操作中存储至少一个管线级的输出数据,还包括数据检索器(22),用于在所述第二计算操作中使用所存储的数据作为一个管线级的输入数据。
11.依照权利要求10的系统,其特征在于所述计算设备是高基数的非Booth再编码式乘法器。
12.依照权利要求10或11的系统,其特征在于所述计算操作被分成在第一管线级中执行的一个第一子操作以及在其它管线级中执行的多个第二子操作,第一子操作的计算结果被安排成存储在存储器(21),并且数据检索器包括一个多路复用器,用于把存储器的输出连接到所述其它管线级中至少一个的输入数据接口,以便随所述多个第二子操作使用存储的计算结果。
13.依照权利要求10或11的系统,其特征在于第一管线级包括加法器阵列(2),第二管线级包括选择块(3),第三管线级包括压缩阵列(4),以及第四管线级包括先行进位加法器(5),第一管线级的输出数据接口连接到存储器的输入端并连接到数据检索器的一个输入端,存储器的输出连接到数据检索器的另一个输入端,以及数据检索器的输出连接到第二管线级的输入数据接口。
14.依照权利要求10或11的系统,其特征在于所述存储器包括多个寄存器,每个寄存器被安排成存储一个值,还包括一个寻址单元,用于在从寄存器中读取数据/向寄存器写入数据时寻址一个寄存器。
15.依照权利要求10或11的系统,其特征在于所述存储器包括多个寄存器,每个寄存器被安排成存储一个值,还包括一个多路复用器,用于选择存储器的输入或寄存器之一的输出以便将所述所选择的源的值存储到第一寄存器,并且第一寄存器的输出被连接到存储器的输出。
16.依照权利要求10或11所述的系统,其特征在于该系统包括至少一个多路复用器,用于从至少第一输出数据接口和第二输出数据接口中选择一个管线级(P1,P2,P3,P4)的输入数据接口,所述第一输出数据接口是所讨论的管线级之前的管线级的输出。
17.依照权利要求10或11所述的系统,其特征在于它包括用于处理视频信息的装置(34,37)。
18.一种用于在管线化的计算设备中执行计算操作的设备,所述管线化的计算设备包括:一组至少两个管线级、至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,所述管线级具有至少一个用于输入数据的数据接口和至少一个用于输出数据的数据接口,以及所述设备还包括用于第一和第二计算操作的数据的输入,其特征在于:该设备还包括存储器(21),用于在所述第一计算操作中存储至少一个管线级的输出数据,还包括数据检索器(22),用于在所述第二计算操作中使用所存储的数据作为一个管线级的输入数据。
19.依照权利要求18的设备,其特征在于它是高基数的非Booth再编码式乘法器。
20.依照权利要求18或19的设备,其特征在于所述计算操作被分成在第一管线级中执行的一个第一子操作和在其它管线级中执行的多个第二子操作,第一子操作的计算结果被安排成存储到存储器(21)中,并且数据检索器包括一个多路复用器,用于将存储器的输出连接到所述其它管线级中至少一个的输入数据接口,以便随所述多个第二子操作使用所存储的计算结果。
21.依照权利要求18或19的设备,其特征在于第一管线级包括加法器阵列(2),第二管线级包括选择块(3),第三管线级包括压缩阵列(4),以及第四管线级包括先行进位加法器(5),第一管线级的输出数据接口连接到存储器的输入端并且连接到数据检索器的一个输入端,存储器的输出连接到数据检索器的另一个输入端,以及数据检索器的输出连接到第二管线级的输入数据接口。
22.依照权利要求18或19的设备,其特征在于所述存储器包括多个寄存器,每个寄存器被安排成存储一个值,还包括一个寻址单元,其用于在从寄存器中读取数据/向寄存器写入数据时寻址一个寄存器。
23.依照权利要求18或19的设备,其特征在于所述存储器包括多个寄存器,每个寄存器被安排成存储一个值,还包括一个多路复用器,用于选择存储器的输入或寄存器之一的输出以便将所述所选择的源的值存储到第一寄存器中,并且第一寄存器的输出被连接到存储器的输出。
24.依照权利要求18或19所述的设备,其特征在于该设备包括至少一个多路复用器,用于从至少第一输出数据接口和第二输出数据接口中选择一个管线级(P1,P2,P3,P4)的输入数据接口,所述第一输出数据接口是所讨论的管线级之前的管线级的输出。
25.依照权利要求18或19所述的设备,其特征在于它包括用于处理视频信息的装置(34,37)。
26.依照权利要求18或19所述的设备,其特征在于安排以管线化的方式执行一个乘法操作和另一个乘法操作,其中该设备包括在至少一个管线级的输入数据接口处的管线寄存器,在所述至少一个管线级的输出处的至少一个多路复用器,以及用于控制所述管线寄存器使得在向所述管线级的输入数据接口写入数据的时候只有一个管线寄存器打开的控制输入,其中所述乘法操作被安排划分成至少第一和第二子操作,第一和第二子操作中的每个被安排在一个管线级上实现,并且所述子操作中至少一个被安排在一个管线中并行执行,其中第二个乘法操作的子操作被安排成在第一个乘法操作的对应子操作完成之前开始。
27.依照权利要求18或19所述的设备,其特征在于它包括用于执行选择性的数据路由的选择装置(2,3,4,5),所述选择装置包括用于将一个数据接口连接到至少两个其它数据接口中的另一个数据接口以便在连接的数据接口之间路由数据的装置。
28.依照权利要求18或19所述的设备,其特征在于它包括用于执行移动通信的装置(38)。
29.依照权利要求18或19所述的设备,其特征在于它是一个集成电路。
30.依照权利要求18或19所述的设备,其特征在于它是一个计算设备。
CNB2003801084019A 2002-11-06 2003-11-05 用于执行计算操作的方法、系统以及设备 Expired - Fee Related CN100405361C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20021984 2002-11-06
FI20021984A FI118612B (fi) 2002-11-06 2002-11-06 Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite

Publications (2)

Publication Number Publication Date
CN1735881A CN1735881A (zh) 2006-02-15
CN100405361C true CN100405361C (zh) 2008-07-23

Family

ID=8564893

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003801084019A Expired - Fee Related CN100405361C (zh) 2002-11-06 2003-11-05 用于执行计算操作的方法、系统以及设备

Country Status (10)

Country Link
US (1) US7536430B2 (zh)
EP (1) EP1576494B1 (zh)
KR (1) KR100714358B1 (zh)
CN (1) CN100405361C (zh)
AT (1) ATE359559T1 (zh)
AU (1) AU2003276292A1 (zh)
DE (1) DE60313215T2 (zh)
FI (1) FI118612B (zh)
TW (1) TWI263167B (zh)
WO (1) WO2004042600A1 (zh)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565390B1 (en) * 2005-03-23 2009-07-21 Altera Corporation Circuitry for facilitating performance of multiply-accumulate operations in programmable logic devices
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US8301681B1 (en) 2006-02-09 2012-10-30 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
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
US7836117B1 (en) 2006-04-07 2010-11-16 Altera Corporation Specialized processing block for programmable logic device
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic 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
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
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
US7948267B1 (en) 2010-02-09 2011-05-24 Altera Corporation Efficient rounding circuits and methods in configurable integrated circuit devices
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
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
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
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
US9268742B2 (en) * 2012-06-05 2016-02-23 Intel Corporation Reconfigurable variable length fir filters for optimizing performance of digital repeater
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
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
CN107315718B (zh) * 2016-04-26 2020-08-21 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
CN106168941B (zh) * 2016-06-30 2019-06-14 中国人民解放军国防科学技术大学 一种支持复数乘法的fft蝶形运算硬件实现电路
KR102631381B1 (ko) * 2016-11-07 2024-01-31 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
CN106970896B (zh) * 2017-03-30 2020-05-12 中国人民解放军国防科学技术大学 面向向量处理器的二维矩阵卷积的向量化实现方法
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
US10678507B2 (en) * 2017-12-22 2020-06-09 Alibaba Group Holding Limited Programmable multiply-add array hardware
CN110190843B (zh) * 2018-04-10 2020-03-10 中科寒武纪科技股份有限公司 压缩器电路、华莱士树电路、乘法器电路、芯片和设备
JP7183079B2 (ja) * 2019-03-08 2022-12-05 株式会社東芝 半導体装置
TWI798640B (zh) * 2021-02-09 2023-04-11 新唐科技股份有限公司 常數乘法器
CN113870918B (zh) * 2021-09-30 2023-03-28 华中科技大学 存内稀疏矩阵乘法运算方法、方程求解方法以及求解器
CN115718724B (zh) * 2023-01-09 2023-05-09 阿里巴巴(中国)有限公司 Gpu、数据选择方法及芯片

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994023384A1 (en) * 1993-03-31 1994-10-13 Sony Corporation Apparatus for adaptively processing video signals
CN1289422A (zh) * 1998-11-26 2001-03-28 松下电器产业株式会社 运算装置和使用运算装置的图象处理装置
US6367003B1 (en) * 1998-03-04 2002-04-02 Micron Technology, Inc. Digital signal processor having enhanced utilization of multiply accumulate (MAC) stage and method

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3732410A (en) * 1969-12-22 1973-05-08 Postmaster Department Res Labo Self adaptive filter and control circuit therefor
GB8718488D0 (en) * 1987-08-05 1987-09-09 British Petroleum Co Plc Chemical process
US5220525A (en) * 1991-11-04 1993-06-15 Motorola, Inc. Recoded iterative multiplier
JP3140187B2 (ja) * 1992-07-23 2001-03-05 アイシン・エィ・ダブリュ株式会社 車両用経路誘導装置
US5825680A (en) * 1996-06-21 1998-10-20 Digital Equipment Corporation Method and apparatus for performing fast division
US5935202A (en) * 1997-03-25 1999-08-10 International Business Machines Corporation Compressor circuit in a data processor and method therefor
US6085214A (en) * 1997-09-04 2000-07-04 Cirrus Logic, Inc. Digital multiplier with multiplier encoding involving 3X term
US6141674A (en) * 1998-06-10 2000-10-31 Hewlett-Packard Company Reducing the hardware cost of a bank of multipliers by combining shared terms
JP2000047852A (ja) * 1998-07-27 2000-02-18 Mitsubishi Electric Corp 乗算装置、該乗算装置を複数備える固定係数型firディジタルフィルタ
US6353843B1 (en) * 1999-10-08 2002-03-05 Sony Corporation Of Japan High performance universal multiplier circuit
US7127482B2 (en) * 2001-11-19 2006-10-24 Intel Corporation Performance optimized approach for efficient downsampling operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994023384A1 (en) * 1993-03-31 1994-10-13 Sony Corporation Apparatus for adaptively processing video signals
US6367003B1 (en) * 1998-03-04 2002-04-02 Micron Technology, Inc. Digital signal processor having enhanced utilization of multiply accumulate (MAC) stage and method
CN1289422A (zh) * 1998-11-26 2001-03-28 松下电器产业株式会社 运算装置和使用运算装置的图象处理装置

Also Published As

Publication number Publication date
US7536430B2 (en) 2009-05-19
EP1576494B1 (en) 2007-04-11
FI20021984A0 (fi) 2002-11-06
TW200411540A (en) 2004-07-01
FI20021984A (fi) 2004-07-15
ATE359559T1 (de) 2007-05-15
EP1576494A1 (en) 2005-09-21
KR20050065673A (ko) 2005-06-29
AU2003276292A1 (en) 2004-06-07
US20040139131A1 (en) 2004-07-15
KR100714358B1 (ko) 2007-05-02
CN1735881A (zh) 2006-02-15
DE60313215T2 (de) 2007-12-20
DE60313215D1 (de) 2007-05-24
TWI263167B (en) 2006-10-01
WO2004042600A1 (en) 2004-05-21
FI118612B (fi) 2008-01-15

Similar Documents

Publication Publication Date Title
CN100405361C (zh) 用于执行计算操作的方法、系统以及设备
CN100530168C (zh) 用于执行计算操作的系统、方法及设备
Zhuo et al. High-performance designs for linear algebra operations on reconfigurable hardware
JP5408913B2 (ja) 高速かつ効率的な行列乗算ハードウェアモジュール
Shieh et al. Word-based Montgomery modular multiplication algorithm for low-latency scalable architectures
CN103793199B (zh) 一种支持双域的快速rsa密码协处理器
JP3213628B2 (ja) Mを法として長い整数を乗算するための算術ユニット及びそのような乗算デバイスを具えるr.s.a.変換器
CN113032723B (zh) 一种矩阵乘法器的实现方法及矩阵乘法器装置
Lang et al. Very high radix square root with prescaling and rounding and a combined division/square root unit
US20020161810A1 (en) Method and apparatus for multiplication and/or modular reduction processing
Kumar et al. Analysis of low power, area and high speed multipliers for DSP applications
US20040133618A1 (en) Method and system for performing a multiplication operation and a device
Ibrahim Radix-2n multiplier structures: A structured design methodology
Roohi et al. ReFACE: efficient design methodology for acceleration of digital filter implementations
Yeh et al. Efficient pipelined multi-operand adders with high throughput and low latency: designs and applications
Srinivas et al. High efficient accurate DL-PO logic multiplier design for low power applications
Ramya et al. Implementation of High Speed FFT using Reversible Logic Gates for Wireless DSP Applications
Batra Coprocessor design for high speed multiplication
Bhongale et al. Review on Recent Advances in VLSI Multiplier
CN109558170B (zh) 一种支持数据级并行和多指令融合的二维数据通路架构
Shivaanivarsha et al. An Efficient Design and Implementation of High-Speed Booth Multiplier using Shift-Opt Algorithm
KR100900790B1 (ko) 재구성형 프로세서 연산 방법 및 장치
Pandey et al. A Review on Low Power and Less Area Multiplier Using Adder
Andrzejczak An Improved Architecture of a Hardware Accelerator for Factoring Integers with Elliptic Curve Method
SUREKHA et al. Pre Encoded Multipliers Based on Non Redundant Radix-4 Design Using Modified Wallace Scheme

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080723

Termination date: 20111105