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

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

Info

Publication number
CN1735880A
CN1735880A CNA2003801083374A CN200380108337A CN1735880A CN 1735880 A CN1735880 A CN 1735880A CN A2003801083374 A CNA2003801083374 A CN A2003801083374A CN 200380108337 A CN200380108337 A CN 200380108337A CN 1735880 A CN1735880 A CN 1735880A
Authority
CN
China
Prior art keywords
data
interface
output
pipeline stages
input
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
Application number
CNA2003801083374A
Other languages
English (en)
Other versions
CN100530168C (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 Technologies Oy
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 CN1735880A publication Critical patent/CN1735880A/zh
Application granted granted Critical
Publication of CN100530168C publication Critical patent/CN100530168C/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
    • 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
    • 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
    • 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/3868Bypass control, i.e. possibility to transfer an operand unchanged to the output

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)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Forklifts And Lifting Vehicles (AREA)
  • Preliminary Treatment Of Fibers (AREA)
  • Fishing Rods (AREA)
  • Multi Processors (AREA)

Abstract

本发明涉及一种用于利用其包括一组至少两个流水线级的流水线计算设备执行计算操作的方法。所述流水线级包括至少一个用于数据输入的数据接口和至少一个用于数据输出的数据接口。在该方法中,将用于执行计算操作的数据输入到该设备中。在该计算设备中执行有选择的数据处理,其中在至少一个所述输入数据接口和至少一个输出数据接口之间执行一种选择以将所述至少一个输入数据接口连接到所述至少一个输出数据接口以在所述至少一个输入数据接口和所述至少一个输出数据接口之间路由数据并且根据所述选择而处理数据。本发明进一步涉及一种其利用该方法的系统和设备。

Description

用于执行计算操作的系统、方法及设备
技术领域
本发明涉及一种用于利用其包含一组至少两个流水线级的流水线计算设备而执行计算操作的方法,所述流水线级具有至少一个用于数据输入的数据接口和至少一个用于数据输出的数据接口,在该方法中将用于执行计算操作的数据输入到设备中。本发明也涉及一种用于在流水线计算设备中执行计算操作的系统,其包含一组至少两个流水线级,所述流水线级具有至少一个用于数据输入的数据接口和至少用于数据输出的数据接口。本发明进一步涉及一种用于在包含一组至少两个流水线级的流水线计算设备中执行计算操作的设备,所述流水线级具有至少一个用于数据输入的数据接口和至少一个用于数据输出的数据接口。本发明进一步涉及一种无线终端,其包括一个用于在包含一组至少两个流水线级的流水线计算设备中执行计算操作的设备,所述流水线级具有至少一个用于数据输入的数据接口和至少一个用于数据输出的数据接口。本发明也涉及一种计算设备,其包括一个用于在包含一组至少两个流水线级的流水线估算设备中执行计算操作的设备,所述流水线级具有至少一个用于数据输入的数据接口和至少一个用于数据输出的数据接口。
本发明的背景
存在着许多其中需要乘法、多重累加(MAC)和其它计算操作的应用。如一个非限制性的例子,比如数字信号滤波应用、视频/图像处理应用等这样的许多信号处理应用就是其中实现了实时乘法和MAC运算的应用。其中需要向量和/或矩阵运算的其它应用也利用乘法运算。乘法运算通常是由加法和逐位移位运算而实现的。因为两个操作数间的一次乘法运算需要许多次加法和移位运算以计算乘法结果,因而这种乘法运算是资源需求作业。
视频/图像处理算法的特点是不得不实时实现的巨大量计算。因此,高速性能已经成为用于不同视频/图像处理算法或子任务的并行专门化结构(累加器)发展中的推动力。一种现有技术的视频/图像处理系统包括每个均由大量硬件元件所组成的几个这种累加器(如绝对差求和(SAD),余弦变换等等)。然而,随着移动通信系统的发展,影响系统成本的硬件领域以及功率/能量消耗是与高速性能同样重要的性能。对于满足所有这些标准的一种方法是数字信号处理器(DSP)的进一步现代化和专门的累加器数目的缩减。尽管这个领域存在某些改进,但是已开发的系统仍然一直没有满足这种高速和功率消耗的需求。
表1连同其中经常实现这些模式(pattern)的视频/图像处理算法的例子一起总结出了一些核心算术模式。包含在这些模式中的运算是非常基础的也是非常熟悉的。有巨大量的文献都专注于它们的实现。这里强调了关于视频/图像处理环境中的这些运算的两个细节。第一,运算的操作数最常见的是中等(8到16位)精度整数。其次,大部分算法采用大规模并行运算。在有些情况中这些并行运算共享相同的操作数。例如,在标量量化中,将相同的数字乘以图像的多个像素,在矩阵-向量乘积中,将矩阵的不同行乘以相同的输入向量,在有限脉冲响应(FIR)滤波中,若干MAC运算中包含相同的系数等等。
                     表1.
视频和图像处理及其它信号处理作业的现有技术体系通常是基于传统的乘法器结构。已经开发出了用于实现乘法和/或多重累加运算的许多乘法方法和很多种类的设备。下面,将仅考虑其中两个操作数(被乘数和乘数)均未知的情况中的乘法方法和通用乘法器结构、存在于二进制补码算术中的两个定点带符号整数的乘法以及所谓的以T为基数(radix-T)的方法。
分别将n位(包括符号)乘数a的二进制补码描述表示为 a ~ = a n - 1 a n - 2 · · · a 1 a 0 , 并且将m位(包括符号)被乘数x的补码表示表示成 x ~ = x m - 1 x m - 2 · · · x 1 x 0 . a和
Figure A20038010833700084
之间的关系(以及x和 之间的类似关系)如下:
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 rt 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可以导出不同的乘法方法。接着,事实上由乘数a的表示而规定对数字Ar·x,r=0,...,nradix-T-1的选择。最简单的乘法方法是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=ar其中r=0,...,n-2以及An-1=-an-1其中r=n-1而定义了部分乘积Ar·x,r=0,...,n-1。可利用乘数 的每个二进制补码位和被乘数
Figure A20038010833700096
之间的2输入AND门阵列而简单地(并且通常地)形成这些部分乘积。在第二步的累加之前Ar·x,r=0,...,n-1的值乘以2r(即向左移动r位)。应当注意的是在这个方法中,与其它部分乘积不同地来对待有时也称作是校正因数的该部分乘积An-1·x。
根据将该乘数的二进制补码位
Figure A20038010833700097
作Booth重编码成冗余带符号数字,在另一个radix-2乘法方法中避免了部分乘积的不均匀性。现在该乘积可以表示为:
y ~ = Σ r = 0 n radix - 2 - l ( 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需要对
Figure A20038010833700102
的位求反并加1。通常,在其中对部分乘积进行求和的步骤2中执行加1。
不管是否采用Booth重编码或非编码方法,在radix-2乘法方法中共有nradix-2=n个部分乘积要被求和。为了降低部分乘积的数目并因此而降低第二级的延迟(累加部分乘积),已经开发了radix-4改进Booth算法(MBA)基础方法。MBA是众多普及的乘法方法中的一种并且正在被广泛地研究和最佳化。
为了简化以下公式,在其中存在象n/k这样的条件的每种情况中,假定n是k的整数倍。由于可根据任意数目的位(重复最高有效位)而对two′s补码数求补码,因而这是一个有效的假定。
在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
而获得乘积的二进制补码,其中根据乘数
Figure A20038010833700104
的二进制补码表示的三个连续位a2r+1、a2r、a2r-1(a-1=0)而选定Ar∈{-2,-1,0,1,2},r=0,1,...,n/2-1的值。在步骤2相加之前用22r来乘以该部分乘积(即硬件向左移动2r位)Ar·x,r=0,...,n/2-1。
非重编码乘法方法也可能采用比2更高的基数用于降低部分乘积数目。例如,在radix-4非重编码乘法方法中,根据乘数的两个连续位a2r+1、a2r而选择部分乘积Arx,Ar∈{0,1,2,3},r=0,1,...,n/2-1。在这个方法中有nradix-4=n/2个部分乘积。可通过将可能的部分乘积(potentialpartial product)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分析乘数 的二进制补码的三个连续位,包括一位重叠,并向解码器103的相应行输出q信号。在一些最近的现有技术设计中,q的值=3。根据这些q信号,解码器行在其输入端形成具有被乘数的位
Figure A20038010833700112
的部分乘积(A,x)∈{0,±x,±2x)。由于是通过硬件移位形成了2x,因而x的非负倍数可容易地获得。通过将x的相应正倍数的位求反并接着加1而形成x的负倍数,这通常在步骤2中执行。例如,美国专利US6173304描述了一种实现Booth编码器和解码器的这种系统。在radix-2方法中可以比在改进Booth算法中更容易得到部分乘积,但是当采用改进Booth算法时将部分乘积的数目减小到n/2其导致了在速度性能、面积(area)及功率消耗中的显著优势。
为了进一步减小部分乘积的数目,将Booth编码进一步扩展到多位(任意以T为基数)重编码。现在给出该乘积的通用方程:
y ~ = Σ r = 0 n radix - T - l ( 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)并且根据来自可能的部分乘积Ax(A的范围在-2t-1到2t-1之间)的数据清单中的乘数 的t+1个连续位而选择每个部分乘积。可通过两个(T=8,16)或更多个(T>16)2的x次幂的倍数的加法,以及可能地通过将位求反并加1(在步骤2)可相对容易地形成每个可能的部分乘积。例如,在radix-8重编码的情况中,可能的部分乘积的数据清单是0,±x,±2x,±3x,±4x。除3x可通过一次加法:3x=x+2x而获得之外这个数据清单中的所有非负倍数均可容易的得到。如前所述,可通过求反加1的方法而得到负的倍数。在radix-16重编码的情况中,可能的部分乘积的数据清单是0,±x,±2x,±3x,...,±8x,所有这些均可通过实现三个独立的加法/减法以便得到3x=x+2x,5x=x+4x,7x=-x+8x而变得有效。可通过将可能的部分乘积3x向左移一位而形成可能的部分乘积6x。然而,对于更高基数的情况,存在着不能在一次加法/减法中得到的一些可能的部分乘积(如11x和13x)。
图2呈现了现有技术radix-T(T≥8)多位Booth重编码和radix-T(T≥4)新非重编码(基数高于4)乘法器的通用结构201。这个结构包括用于计算可能的部分乘积数据清单的加法器阵列202、用于根据乘数位而选择n/t个部分乘积的选择模块203、和用于将所选择的部分乘积求和的求和模块204。最后加法器205从由求和模块204中所产生的和S以及进位C项而形成乘积
Figure A20038010833700124
典型的现有技术基数高于4乘法器的加法器阵列包括s个加法器/减法器,其中s是包含在可能的部分乘积数据清单中的x的正奇数倍的数(在T=8Booth重编码和T=4非重编码乘法器的情况中s=1,并且在T=16Booth重编码或T=8非重编码乘法器的情况中s=3等等)。通常,由于形成该可能的部分乘积数据清单是这种乘法器相当费时间的部分,因而采用快速一超前进位(CLA)加法器。在专利US5875125中,提出了一种其可用在radix-8乘法器中的专门的x+2x加法器。值得注意的是也提出了混合的radix-4/radix-8乘法器,例如在美国专利No.4965762中,然而,其主要对其中串联产生并累加部分乘积的迭代(非并行)乘法器有用。美国专利No.5646877描述了一种乘法器结构,其中对于固定基数的所有可能的部分乘积均是作为其包括一个用于产生3x的x+2x加法器、两个移位器和一个加法器/减法器的加法器阵列内的3x及x的移位方案的和或差而得到的。
典型现有技术基数高于4的乘法器的选择模块包括n/t个radix-TBooth编码器和相等数目的解码器行。根据由该解码器行所形成的相应部分乘积,每个编码器分析乘数的相应(t+1)个字节组并输出多个控制信号。例如,在专利US6240438中给出了对如何将radix-4 Booth编码器和解码器扩展到更高的基数的评述。
下面,将更详细地考虑该部分乘积的相加,即步骤2。大部分并行乘法器/MAC单元结构采用了用于将步骤1(见图1和2)所形成的部分乘积相加的由其后连接了快速加法器(最后加法器)的压缩阵列所组成的求和模块。该压缩阵列将nradix-T个部分乘积行减小成相应于用最后的加法器来相加的和S及进位C项的两行。该压缩阵列通常由全部到一半加法器(一个-保存进位加法器树或一个Wallace树)或者4:2压缩器组成。最后加法器通常是快速-超前进位加法器,其是根据压缩阵列中不同位的延迟而仔细设计的。
值得注意的是,如果利用Booth重编码方案,那么会导致在步骤2而不是步骤1中执行1的加法,每个部分乘积行带有一位的值,如果部分乘积是被乘数的非负倍数其是0而否则是1。因此,实际上行的数目是2nradix-T。即使可以用行的数目仍是nradix-T或可以是nradix-T+1这样的方式将这些一位的值合并成部分乘积行,但是会带来部分乘积行(由1位)增加长度的代价及使它们不规则的代价。在非重编码方案中,至多有一个额外的一位值,因此可设计出更简单的压缩阵列。
由于在将其相加之前要相对于彼此而移位该部分乘积行,因此与Booth重编码乘法器中累加模块相关的另一个问题是如何处理符号扩充。在一种简单的实现中,要将每个部分乘积(移位之后)扩展到一个(n+m)位数字,其是很浪费的方法。已经开发了专门的符号扩展方法及电路以在每行中将符号扩充位的数目减小到2。在非重编码乘法器的情况中,由于几乎所有但是可能是一个的部分乘积是同号的,因此,无需额外的符号位即可更容易地处理符号扩充。
如图3a和3b所述,大体上存在两种将乘法器结构扩展到MAC单元的方式。在第一种情况中(图3a),将压缩阵列301的两个输出(和S和进位C项)反馈到其输入以便将当前部分乘积值与当前累加值的两个加数相累加。然后将最终和S和进位C项在最后加法器302内相加。在第二种情况中(图3b),将这些输出送到将其输出端反馈到它的(第二压缩阵列303)输入端的另一个压缩阵列303。现在,将当前乘积的和S及进位C项累加到当前累加值直到最后循环,这时在最后加法器302内将最终和S和进位C项相加。在第一种情况中整个压缩阵列的深度(depth)(以及,由此,总时延)可以更小,同时因此,在第二种情况中宽度、面积(area)和功率消耗可以更小。
作为高基数乘法器的概述,值得注意的是基数越高,步骤1(产生部分乘积)的复杂性越高,但是步骤2(将部分乘积相加)的复杂性越低。“高于4的基数”乘法方法没有得到流行,或许是由于具有相当时间的需求和具有包括加法器阵列及选择模块的部分乘积发生器消耗的面积。通常,认为radix-4MBA是最佳的现有技术并行乘法方法并且其用于许多产业上的乘法器中。
可与计算操作相关联地采用一种称为流水线的方法。因此,利用流水线的设备包含两个或更多流水线级。每个流水线级用于打算执行某个或某几个部分的计算操作(即子运算)。在现有技术中流水线级的计算操作彼此相关以致于每个流水线级执行要执行的计算操作的一个或多个子运算,并且最后一个流水线级的输出端提供计算操作的结果。在这种设备中不同的流水线级依次运算,在其中,前一流水线级已经结束其子运算的估算之后下一个流水线级开始子运算的估算。如果流水线级纯平衡(pure balanced)(即,一些级明显地比其它级更快),这意味着大部分时间中除一个流水线级以外的所有流水线级都处于等待或空闲状态。此外,所有流水线级均专用于某一种作业(某种子运算的估算)并且不能利用它们执行其它计算操作。
在下文中,将给出一些乘法器/MAC单元特征,其是视频和图像处理角度中所期望的但在现有技术解决办法中是空白的或不充分的。首先,考虑最流行的radix-4 Booth重编码乘法器/MAC方法。作为这种方法的一个通用缺陷,它比更高基数方法更耗功率。另一个通用缺陷是,即使与radix-2乘法相比部分乘积的数目减小为一半,仍然可利用更高基数而使其减小。也就是说,这个方法的复杂性主要集中于步骤2(将部分乘积相加)。当流水作业radix-4 Booth重编码乘法器/MAC结构时,通常将部分乘积产生模块认为是第一流水线级,然而其纯平衡于(即更快于)其它流水线级。
考虑“基数高于4”Booth重编码乘法器,已经示出了当仅考虑到该乘法运算的实现时,就面积和时间准则而言,其表现可与radix-4乘法器竞争,同时在功率消耗方面胜过那些radix-4乘法器。“基数高于4”方法的主要缺陷是在部分乘积产生模块具有一个加法器阵列的需求。
当将Booth重编码“基数高于4”乘法器与该非重编码乘法器相比较时,前者具有与必须处理被乘数的负倍数以及符号扩展的需求的相关缺陷。另一方面,radix-T非重编码乘法器在部分乘积产生模块包括与radix-(2T)Booth重编码乘法器同样数量的加法器。更重要地,“基数高于8”非重编码乘法器需要多于一级的加法以产生可能的部分乘积,同时在Booth重编码方法中,这对于“基数高于16”乘法器是成立的。这些原因使得这两种类型的乘法器在不同的设计环境中都是有用的。
设计用于矩阵-向量算法的现有技术并行体系以致于它们采用了多个与加法器相组合的独立乘法器或者多个独立的MAC单元。通常也具有用于不同种类算法运算的多个特定电路。然而高基数乘法器包括可再利用于如加法/减法、累积等这样的其它运算的模块(流水线级)。同时应当指出的是,在矩阵-向量算法中,尤其是在用于视频/图像处理的矩阵向量算法中,存在着多种将一个被乘数乘以几个乘数的情形,其意味着如果采用高基数乘法方法,那么在所有这些乘法中可再利用被乘数的可能的部分乘积。此外,如上所述,存在多种这样的情形,其中纯平衡了现有技术乘法器的流水线级从而降低了设备的效率。
本发明的目的和概述
本发明的一个目的是要实现一种用于利用可配置结构而执行计算操作的改进的计算结构和方法。可通过一组控制信号而将该多功能/可配置体系配置成几种不同的结构。可将本发明的结构有益地实现为一个VLSI体系。
本发明具有不同的实施例,在本说明书以下部分将更详细的说明其中一些实施例。
第一个实施例在矩阵-向量算法中利用了一种并行乘法器结构,并且同时其灵活的提供一个机会以将其配置到较小作业。
本发明第一实施例的结构提供了或者可将其实现成一种可将其配置成实现一系列运算的设备的结构,其包括:(a)多个乘法;(b)多个MAC运算;(c)多个不同精度(位宽度)的加法/减法;和/或(d)并行累加。
在第二个实施例中,利用了一个可能的部分乘积可存储于其中且可将该可能的部分乘积再利用于将相同的被乘数乘以多个乘法器的情况中的存储单元。这种运算的非限制性例子为矩阵-向量乘法,FIR滤波等等。用这种方法,仅完全实现了具有相同被乘数的第一个乘法数目,同时仅部分地实现其它的乘法数目,避免了计算可能的部分乘积的最大资源需求部分。例如,当将矩阵乘以向量时,仅对计算输出向量的第一部分实现完全乘法,同时仅部分实现用于计算输出向量另一部分的其余乘法。当实现FIR滤波时,仅在计算第一个输出采样时实现一次完全乘法,但是不完全地实现用于计算另一个输出样值的其余乘法。
第三个实施例是并行乘法器结构和用于视频及图像处理(MAVIP)的绝对差求和(SAD)累加器结构的一种组合。该结构是以利用一组控制信号而将其配置成不同的体系的方式的一种多功能体系,
准确地说,根据本发明的方法主要特征在于,在计算设备中执行选择数据处理,其中在至少一个所述输入数据接口和至少一个输出数据接口之间执行选择以将所述至少一个输入数据接口连接到所述至少一个输出数据接口以便在所述至少一个输入数据接口和所述至少一个输出数据接口之间路由数据并且根据所述选择而处理数据。根据本发明的系统主要特征在于,该系统进一步包括至少一个用于执行选择数据处理的开关,所述至少一个开关包含用于将所述至少一个输入数据接口连接到所述至少一个输出数据接口以便在所连接的数据接口之间路由数据并且根据所述选择而处理数据的至少一个控制输入。根据本发明的设备主要特征在于,该设备进一步包括至少一个用于执行选择数据处理的开关,所述至少一个开关包含用于将所述至少一个输入数据接口连接到所述至少一个输出数据接口以便在所连接的数据接口之间路由数据并且根据所述选择而处理数据的至少一个控制输入。根据本发明的无线终端主要特征在于,该无线终端进一步包括至少一个用于执行选择数据处理的开关,所述至少一个开关包含至少一个用于将所述至少一个输入数据接口连接到所述至少一个输出数据接口以便在所连接的数据接口之间路由数据并且根据所述选择而处理数据的的控制输入。根据本发明的计算设备主要特征在于,该计算设备进一步包括至少一个用于执行选择数据处理的开关,所述至少一个开关包含用于将所述至少一个输入数据接口连接到所述至少一个输出数据接口以便在所连接的数据接口之间路由数据并且根据所述选择而处理数据的至少一个控制输入。
与现有技术的解决方案相比本发明显示出显著优点。可开发一种适用于有效地实现在如视频/图像处理算法这样的信号处理应用中所经常地实现的大规模算法模式的VLSI体系。通过利用根据本发明的方法,可更快地执行视频图像处理环境中的乘法运算并且与现有技术方法和设备相比具有更少的功率。本发明对于实现多个乘法/MAC、和利用一个公共操作数(公共被乘数)而实现多个乘法尤其有效。由于当不需要不同的流水线级时将不同流水线级设置成节电模式和/或利用不同流水线级来大体上同时执行不同的计算操作的能力,因而可获得功率消耗上的明显降低。高速性能(高吞吐量)是由于具有平衡不同流水线级的延迟的灵活可能性的流水作业的利用并且将整个结构的周期降低为最快的模块的延迟。当与单流水线的现有技术(以4或更高为基数)乘法器相比时,以最小的面积增加和未增大输入/输出总线宽度,获得了吞吐量的增大。
该可配置结构使得再利用同样的装置进行不同运算成为可能。另外,利用如八个并行8位加法或四个并行16位加法这样的输入自变量的不同位精度可以实现运算。
由于从大部分乘法运算中舍弃了最大开销部分,即可能的部分乘积的运算,因而实现了显著的时间和功率/能量消耗的节省。
本发明优选实施例还有一个优点是由于其是来自于大部分周期期间的关键路径因而不必平衡该体系的第一流水线级与其它级,所述第一流水线级即用于计算可能的部分乘积的加法器阵列。
引入存储单元也允许利用该第一流水线级与其它级并行执行另一个作业,即在实现基于乘法的运算的同时,为另一个作业实现(变化精度的)并行加法/减法运算。
由于是多功能的,因此本发明优选实施例可替换几个专用于某种信号处理运算如视频/图像处理运算的硬件累加器。
附图的简要说明
在下文中,参考附图将更详细地描述本发明,其中
图1示出了现有技术radix-4 Booth重编码乘法器的典型结构,
图2示出了radix-T Booth重编码(T>8)或非重编码(T>4)乘法器的通用结构,
图3a示出了radix-T MAC单元结构内累加模块的一个实施例,其中该累加模块实现为一种用于n/t选择部分乘积和用于反馈求和及进位项的常见压缩阵列,
图3b示出了radix-T MAC单元结构内累加模块的另一个实施例,其中该累加模块实现为一种拆分压缩阵列,
图4a显示了一个绝对差求和体系的通用结构,其中DS单元作为接在XOR门后面的减法器而操作,
图4b显示了该DS单元的一种通用结构,
图5示出了绝对差求和体系的一个例子,其中p=1,s=8,n=8,
图6示出了根据本发明用于多种乘法/MAC运算的可配置设备的通用结构的简化方框图,
图7示出了图6上的可配置设备的一个优选实施例,
图8示出了根据本发明用于矩阵-向量运算的设备的通用结构的简化方框图,
图9示出了根据本发明用于两个同时发生的(13×13)位相乘-累加运算的矩阵-向量算法体系的优选实施例,
图10a示出了具有操作于循环模数P模式下的寻址单元的寄存器式存储器,
图10b示出了具有循环模数P反馈回路的移位寄存器式存储器,
图11示出了根据本发明用于视频和图像处理的多功能体系的通用结构,
图12a示出了AA/DSA单元的一个实现例子,
图12b示出了该AA/DSA单元的另一个实现例子,
图13示出了通过统一图5上的SAD结构和图9上用于矩阵-向量算法的体系而得到的用于视频和图像处理的多功能体系的实现例子,以及
图14将根据本发明优选实施例的设备显示为一个简化方框图。
本发明的详细描述
在下文中,将更详细地描述本发明的第一个优选实施例。在图6中示出了根据本发明的设备的第一个实施例的通用结构。将设备1分成一组不同的流水线级P1到P4。在这个实施例中,设备1包含四个流水线级,但是显然在本发明的范围内流水线级的数目可以不同于四。
根据本发明的第一个优选实施例的设备包括多个(组)乘法器/MAC单元。在图6中示意性地显示了多组该radix-T Booth重编码(T=8、16)或非编码(T=4、8)乘法器的通用结构。通常将用于一组乘法器/MAC单元的该结构的优选实施例描述成一个流水线设备,其中第一流水线级P1包括例如是p个的多个s加法器阵列(AAs)2,并且所有的s加法器阵列2共享相同的输入线6。第二流水线级P2是例如是q个的多个选择模块(SB′s)3,第三流水线级P3是例如是u个的多个压缩阵列(CA′s)4,第四流水线级P4是例如是v个的多个最后的超前进位加法器(CLA′s)5。该基本功能模块(AA′s,SB′s,CA′s,和CLA′s)事实上可与用于现有技术乘法器和/或MAC单元的相应类型中的相同。根据本发明的设备的一个特征在于它包括选择装置来在该设备内部重新路由信号路径(s)并且也从一组内部信号中选择一个输出信号。选择装置在至少两个替换流水线级中选择至少一个流水线级的输入。在优选实施例中,将至少一些现有技术结构的基本模块替换为一个以上的基本模块。设备的运算取决于几个参数(p、q、u和v),通过适当的从中进行选择可以设计具有良好均衡性的设备。一个流水线级内的模块最好是以时间交错方式来运算以这样一种方法,从而可改变流水线级的吞吐量以便将它们构造得彼此近似相等,并匹配期望运算步骤持续时间。
下面简要阐述多个功能模块的时间交错运算的原理。考虑到功能模块FB要用于较大系统的流水线级中,并假定其具有DFB≈pTdes(但是DFB≤pTdes)的预估延迟,其中Tdes是系统的期望运算步骤持续时间。因此,为了使流水线级P1,...,P4在工作时。吞吐量与一个步骤的持续时间相匹配,可用w个功能模块的多个FB1,FB2,...,FBw来替换该连续功能模块,所述w个功能模块的多个FB1,FB2,...,FBw在其输入端具有流水线寄存器(锁存器)R1,...,Rw并且在其输出端具有w:1多路复用器602,603,604,605。参数w取决于所讨论的流水线级。对于第一流水线级P1,参数w相当于参数p,即存在p个流水线寄存器R1,...,Rp,并且第一流水线级的多路复用器602选择p个输入端中的一个到其输出。对于第二流水线级P2,参数w相当于参数q,即存在q个流水线寄存器R1,...,Rq,并且第二流水线级P2的多路复用器603分别选择q个输入端中的一个到其输出。对于第三流水线级P3,参数w相当于参数u,即存在u个流水线寄存器R1,...,Ru,并且第三流水线级P3的多路复用器604包括两个多路复用器(未示出),其中的每一个选择u个输入端中的一个到其输出。对于第四流水线级P4,参数w相当于参数v,即存在v个流水线寄存器R1,...,Rv并且,第四流水线级P4的多路复用器605选择v个输入端中的一个到其输出414。流水线级P1、P2、P3、P4的共享输入端连接到w个流水线寄存器R1,...,Rw中的每一个。然而,在一个运算步骤的时间偏移中,从每w个运算步骤中仅打开一次这些寄存器中的每一个。用这种方法,在每个运算步骤,由于为了写入而将在其多元形成的所考虑流水线级内的所有其它功能模块的输入寄存器关闭,因而将输入端I仅实际连接到一个功能模块的输入端而其它连接无效。在每w个运算步骤的第一个步骤中打开第一功能模块FB1输入端的寄存器R1,在每w个运算步骤的第二个步骤中打开第二功能模块FB2输入端的寄存器R2等等。通常,在运算步骤t=1,2,...,K时,输入端I实际上仅连接到FBf的输入端,其中f=(t-1)modw+1。因此,将输入端I在空间上共享但是在时域上分配于在所考虑的流水线级的功能模块FB1,FB2,...,FBw之间。在系统工作期间,在运算步骤t=1,2,...,K,将送往该级的输入数据流的一个样值Xt输入到在该级被启动的功能模块FBf,其中f=(t-1)modw+1。一旦该FBf在运算步骤t+w-1,t=1,2,...,K的结尾处完成对Xt的运算,功能模块输出端的该w:1多路复用器602,603,604,605将在FBf中得到的结果传送到下一运算步骤t+w,t=1,2,…,K处的该级输出端。由于这个原因,多路复用器602、603、604、605根据循环modw规则而运算。
通过将现有技术乘法器/MAC单元结构的每个功能模块替换成多个类似功能模块并且通过利用时间交错运算的原理,可通过每个流水线级内模块的数目(即参数p、q、u、v)的适当选择而根据预定的运算步骤持续时间来获得一个流水线级较佳平衡。假定现有技术乘法器/MAC单元结构内四个流水线级的延迟分别是DAA,DSB,DCA,DCLA,并且系统的期望吞吐量是Ndes乘以MAC次运算/每秒钟,然后因此将期望运算步骤持续时间选定为Tdes,使得Tdes≤1/Ndes,并且将所提及的设计参数选择为
Figure A20038010833700211
Figure A20038010833700212
Figure A20038010833700213
其中符号
Figure A20038010833700215
意思指上舍入到下一个整数值。
通过在第一流水线级P1,第三流水线级P3,第四流水线级P4的输入端处包括一个或多个如多路复用器15、16、17,这样的选择装置可实现根据本发明的第一优选实施例的结构的可配置性。该多路复用器15、16、17有益地是2:1多路复用器。分别通过信号c1,c2和c3来控制它们。该结构同时包含其由第一控制信号c1并且将第二控制信号c2与第三控制信号c3进行“OR”组合(即c2∨c3)来控制的输出选择器20。该输出选择器20从要连接到该结构的输出总路线14的第一流水线级P1或最后流水线级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=0;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状态的依赖性仅是一个可能的选择,在本发明的范围内也可应用其它的选择。这也运用于本说明书以后要描述的其它控制信号中。
在图6的结构中存在两个其它控制信号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内加法器/减法器的精度。用这种方法,含有m位输入的sp个加法器/减法器的多个加法器阵列也可作为(m/2)位输入的多个2sp加法器/减法器来运算或作为(m/4)位输入的多个4sp加法器/减法器来运算等等。也可以对选择模块3、压缩阵列4、和最后加法器5稍微作修改并且使它们可由一个控制型号控制,从而允许实现多种精度的乘法/MAC运算。
图7中描述了根据本发明第一优选实施例的类型1非重编码radix-8乘法器结构的例子。这个例子相应于其中m=13(被乘数精度)n=13(乘数精度)以及p=q=u=v=1的情况。在取决于第五控制信号c5而可将其配置成四个16位加法器/减法器的第一流水线级P1内总共有八个8位加法器/减法器。根据该第四控制信号c4,可将在这个例子中的第三流水线级P3的压缩阵列配置成总共有七个输入端(如果例如c4=1),其中的两个实际上从其输出端反馈,或者总共只有五个没有反馈的输入端(
Figure A20038010833700221
Y0,Y1,Y2,Y3)(如果例如c4=0)。第四控制信号c4可与压缩阵列的内部时钟(未显示)组合以便停止那些在后面的情况中不需要的全加器。输入总线6用于输入被乘数(第一控制信号c1例如是逻辑1)或者被加数(第一控制信号c1例如是逻辑0)。
用于矩阵-向量算法的体系
在下文中,根据本发明的乘法器/MAC单元的优选实施例将用来执行矩阵-向量运算,如标量到向量或到矩阵乘法、矩阵到向量乘法(以及因此的矩阵到矩阵乘法、逆矩阵计算、颜色转换、快速正交变换、如FFT,快速DCT等等)、卷积或者FIR滤波、以及因此的滤波器组以及尤其是离散子波变换实现。这些运算的共同点是一个被乘数x乘以若干个乘数ai,i=1,...,K。另一方面,高基数乘法方法的本质特征是将显著的复杂性从第二个步骤(总计部分乘积)中转移到第一个步骤(形成部分乘积)中。基数越高,则要转移越高的复杂性。
这种优选应用的主要思想是当由将其乘以第一乘数a1时仅计算一次公共被乘数x的可能的部分乘积并且当将x乘以其余的乘数ai,i=1,...,K时再利用这些可能的部分乘积。用这种方法,仅将完全地执行K个乘法中的一个,同时不完全执行K-1个乘法,而不执行比四更高基数乘法方法中最复杂的部分(即可能的部分乘积的计算)。显然,因此将实现显著地节省时间和功率/能量消耗。
根据这种思想,用于矩阵-向量算术的所提出的体系的通用结构得自于本发明第一优选实施例的乘法器/MAC单元结构。这通过如图8所描述那样引入存储器21而实现。根据第六控制信号c6决定存储器21对于写操作是开启(当第六控制信号c6例如是设置为逻辑0(低))或关闭(当第六控制信号c6例如是设置为逻辑1(高))。当存储器21为了写操作而设置为开启时,可将可能的部分乘积从多个加法器阵列2的输出端存储到存储器21。同一个信号c6可用于控制该2:1多路复用器22。多路复用器22的第一输入端连接到多个加法器阵列2的输出端,并且多路复用器22的第二输入端连接到存储器21的输出端。因此,可能的部分乘积直接从多个加法器阵列2的输出端(当第六控制信号c6例如是设置为逻辑0时)输入到多个选择模块3的输入端或者从存储器21(当第六控制信号c6例如是设置为逻辑1时)输入到多个选择模块3的输入端。
图9描述了用于在同时执行两个(13×13)-位乘法累加运算的情况中的矩阵-向量算法的一个示例结构。该结构包括由两个不同的乘数的位来控制的两个独立的选择模块3a、3b。可以选择将同一个被乘数的可能的部分乘积(如果c2=c3)或者将两个不同被乘数的可能的部分乘积(如果c2≠c3)输入到选择模块3a、3b。将两个选择模块的输出输入到具有31位反馈(在这个情况中,对于最后的累加结果,b=32是最大位精度)的两个独立的压缩阵列。将这些压缩阵列输出的和S及进位C在其后连接了最后加法器的该(4×31)输入端压缩阵列内进行组合以形成一个累加项或者将其逐对地添加以形成两个累加项。用这种方法,每个具有较小深度并且由此的较短反馈回路的两个独立的压缩阵列在累加级运算。然后,将两对和及进位项在两个CPA中单独地(逐对地)相加或者在第三求和模块中共同地相加。在第一种情况中,同时得到两个独立运算的结果(例如矩阵-向量乘法中的两个输出分量)。在第二种情况中,将一次复杂的运算的估算分成两个较小的运算,然后将结果组合。
实际上,任何读/写存储器均可用在矩阵-向量算法的所提出结构中。图10a和图10b中描述了两个推荐的存储器类型。图10a描述的存储器类型相应于具有长度为L的R个寄存器的寄存器存储器的情况,其中L足够长以在一个寄存器中存储一个被乘数的可能的部分乘积:L≥(m+t)s其中m是该被乘数的位精度,t=logT,T是所采用乘法方法的基数,以及s是每个加法器阵列内加法器/减法器的数目。这个存储器类型的寻址单元将能够对所有P≤R的正整数根据循环modP规则而产生地址。这意味着在运算步骤t=1,2,...,寻址单元产生a(t)=(t-1)modp作为当前地址值。因此,如果第六控制信号c6是低的(到存储器),则将该输入线上的可能的部分乘积值写到寄存器a(t),a(t)∈{0,1,...,R-1},或者如果第六控制信号c6是高的(来自存储器),则将寄存器a(t),a(t)∈{0,1,...,R-1}的内容,即在前存储的可能的部分乘积值写入到输出线。
图10b中描述的第二存储器类型以类似的modP方式进行运算,但是将其作为具有可控制反馈的移位寄存器而组织。在每个运算步骤,如果第(p+1)个寄存器单元未停止,就将来自第p个寄存器单元,p=0,...,P-2中的数据移动到第(p+1)个寄存器单元。每个寄存器单元中存在反馈线。将所有反馈线输入到一个其也具有输入线来作为另一个输入端(到存储器)的(R+1):1多路复用器中。该多路复用器由(logR)位信号来控制,该(logR)位信号的值设置为c6P以便将来自输入线的数据(如果c6=0)或者将来自其源于第(P-1)个寄存器输出端的反馈回路的数据(如果c6=1)写入到第0个寄存器中。从存储器中的输出始终从该第0个寄存器中取得。
在下文中,将更详细地考虑在视频及图像处理中经常实现的三个运算的执行。值得注意的是,这些仅是对唯一的特定运算的示例实现,但是本发明不仅局限于这些运算,也不仅是局限于所提出的方法。利用根据本发明用于矩阵-向量算法的体系可以类似地执行那些包括一个公共被乘数乘以若干乘数的乘法的所有其它运算。同时也可开发所考虑运算的其它类似算法。
首先,考虑标量到向量乘法运算xa的执行,其是将一个公共被乘数(标量)x乘以大量乘数ai,i=1,...,K,即向量a的分量的最明显的情况。在第一个步骤中,当实现公共被乘数与第一个乘数a1的乘法时,第六控制信号c6设置为低以便x的可能的部分乘积直接从第一流水线级P1的加法器阵列2中传送到第二流水线级P2的多个选择模块3中,并且同时将其写入到存储器21中。存储器21根据mod1模式而开始运算并且停止除第0个寄存器器之外的所有它的寄存器。如果要实现仅一个标量对一个或几个向量的乘法,则同时停止除第一流水线级的第一个加法器阵列2a之外的所有加法器阵列。从第二个运算步骤开始,将第六控制信号c6设置为高以便为了写操作而关闭存储器21并且将在第一步后已经写入到存储器中的x的可能的部分乘积经由相应的2:1多路复用器22的第二输入端而从存储器21中取到选择模块3中。同时,停止所有加法器阵列2(包括第一个)或者将其切换到另一个作业。因此,由于通过舍弃代价最高的部分即计算可能的部分乘积的部分来减少乘法运算的关键路径而实现了节省时间。因为停止第一流水线级或在K个运算步骤中的K-1个期间将其切换到另一任务而实现了功率及能量消耗上的显著节省。另一个优点是,在这个计算方案中,由于其在K个运算步骤中的K-1个期间不是关键路径,因此第一流水线级P1对于平衡其它的流水线级P2到P4不是所必需的。又一个优点是仅从外存储器(未显示)中取一次被乘数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仅计算一次可能的部分乘积。接着将可能的部分乘积存储到假定其包含足够的寄存器(即P≤R)的存储器21中。
如从图中原理可知,上述关键路径表达了从起始节点到结束节点的最长路线。在应用本发明时,关键路径表示在该流水线系统中从估算处理开始到估算处理结束的最长路线。关键路径的长度描述了执行估算运算花费的时间。通过利用关键路径分析法,有可能找出系统的影响关键路径长度的该部分。当找出这样的部分时,可分析它们以得到是否存在缩短这部分长度的任何可能性。分别地,通常不必也不用试图缩短不属于关键路径的此部分。
为了初始化(K×P)矩阵-向量的乘法,通过如下所述的为控制信号设置适当的值而配置根据本发明优选实施例的结构。将存储器21设置成根据modP模式运算并且将存储器的从P到R的寄存器停止。通过将第五控制信号c5设置为高而将该体系的压缩阵列4设置成作为累加器而运算。在开始时将第六控制信号c6设置为低,同时在P个运算步骤t=p+1,...,p+P期间形成每个分量xj,j=1,...,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对角线上具有非零记录(entries)),将上述用于矩阵-向量乘法的通用策略稍微地改进到FIR滤波的情况。矩阵A的第i行,i=1,...,K,仅有P个非零记录,即在第i,i+1,...,i+P-1列的滤波系数aj,j=1,...,P。在这个实施例中,对于输入向量的所有分量来说,可能的部分乘积不会同时保存在存储器中,但是同时存储仅P个分量的可能的部分乘积。每P个运算步骤,在多个加法器阵列内计算当前输入样值的新一组可能的部分乘积,并且其代替前P个运算步骤保存在存储器中的那组可能的部分乘积。这通过每P个运算步骤将第六控制信号c6设置为低而实现。因此,多个加法器阵列2不能完全地停止,但是它们比在没有存储可能的部分乘积的实现中慢P次而运算。PK个乘法中仅有P+K次是完全地实现的,而其它的仅部分实现。
在用于FIR滤波实现的第二个策略中,将P个滤波系数的可能的部分乘积保存在存储器21中,同时计算第一输出样值。接着,当计算其它K-1个输出样值时,循环地将这些可能的部分乘积从存储器21中取出。这意味着PK个乘法中仅有P个是完全实现的,而其它的仅部分实现。一旦所有滤波系数的可能的部分乘积都存储在存储器21中就可将所有加法器阵列2停止或切换到另一个作业。然而,这个策略仅当第一流水线级P1的加法器/减法器2具有足够的精度以计算该滤波系数的可能的部分乘积时是可能的。
视频/图像处理的多功能体系
可将本发明的结构有益地实现成一个视频/图像处理(MAVIP)的多功能体系。图11描述了根据本发明的视频处理结构的优选实施例。这个结构建立在上述实施例基础上并且它利用了一个所谓的绝对差求和(SAD)体系24。图4a中描述了SAD体系的通用结构。它包括以时间交错方式来运算的多个p阵列所谓差-符号(difference-sign)(DS)单元25、一个具有反馈的压缩阵列4、以及一个最后加法器5,其后是一个在动作预测处理(基于SAD)中需要的但是对SAD计算本身不是必需的最小估值(M)单元26。每个DS单元阵列25(简称DS阵列或DSA)包括s个DS单元27(图4b),它们中的每个实质上是一个其后是在符号位与其余的差位之间的XOR门28的8位减法器。压缩阵列的输入由s个1位数(符号数据)、s个n位数(差数据、最经常是n=8)、以及两个(n+logK-1)位反馈(最经常是K=256)形成。最后加法器可具有(n+logK)位精度。图5显示了包括八个DS单元(减法器)并且相当于p=1,s=8,n=8及K=256的情况的SAD体系的一个例子。
将图4a的SAD结构与图6或8并且尤其是具有图7或9的结构的图5的例子中的乘法器基础结构相比,应当注意的是在这两种类型的结构中间存在着本质上的相似。这些类型的结构本质上都是由包含多个加法器或减法器4,27(在SAD的情况中其后是XOR门)的模块、其在乘法器基础结构的情况中是选择模块以及在SAD的情况中直接连接的数据路由模块、以及包括压缩阵列4和最后加法器5的求和模块所组成的。可利用这种相似以便统一这两种类型的结构并将它们组成一个可利用少数控制信号而将其配置成这两种结构中的任一种的可再配置体系。用这个方法,可实现该体系的进一步的多功能性,同时具有少数信号控制的简单逻辑的最小开销。
存在着几种替换以将SAD结构与乘法器基础结构进行组合。图11呈现了视频/图像处理的多功能体系通用结构的这些替换中的一种。通过在基本乘法器基础结构的每个模块中简单地改进而得出了这个体系。在这个情况中,基本结构是图8的用于矩阵-向量算法的体系。图13示出了从图9的矩阵一向量算法体系中导出的视频/图像处理多功能体系的一个实现例子。
在一种实现中,该视频/图像处理多功能体系包括其取决于第一控制信号c1和第五控制信号c5而被配置成加法器/减法器或配置成DS单元并且由此以AA/DSA表示的加法器阵列2。图12a示意性地显示了在通常情况下AA/DSA单元的一种可能实现。图12b显示了对于m=16,r=2的情况下整个AA/DSA单元阵列的例子。该阵列的每个m位加法器/减法器由其后跟着XOR门的r个连续(m/r)位加法器/减法器所组成。该XOR门仅在 c 1 c 5 ‾ = 1 的情况即当该体系作为SAD体系来运算时(c1,c5)=(1,0)的情况下有效。另一方面,仅当c5=0时,提供r个连续(m/r)位加法器/减法器间的进位传送。第一控制信号c1和第五控制信号c5的组合也用于控制是否是不同输入端(c1c5=0)(被加数或SAD操作数)或者是一个输入端(c1c5=1)(被乘数)输入到该阵列中。是否实现加法或减法由取决于乘法方法以及AA/DSA单元内所考虑的m位加法器减法器的位置的信号cin来控制。例如,在一个非重编码radix-8乘法方法中,其中m=16,r=2,取决于加法器的位置(见图12b)而将cin指定为cin=cs或者 c in = c 1 c 5 c s ‾ , 其中在c1=0的情况中实现cs=0装置加法和cs=0装置减法。因此,取决于控制信号c1和cs,可将AA/DSA单元配置为运算在如下的不同模式下。
  (c1,c5)   AA/DSA的操作模式   输入   输出   目标用途
  (0,0)   rs个并行(m/r)位加法/减法   rs个(m/r)位对(xi,yi),i=1,...,r   rs个(m/r+1)位相加ci=xi+yi   并行加法/减法
  (0,1)   s个并行m位加法/减法   rs个(m/r)位对(xi,yi),i=1,...,r   rs个(m/r+1)位相减ci=xi-yi
  (1,0)   rs个(m/r)位并行减法接着XOR   rs个(m/r)位对(xi,yi),i=1,...,r   rs个(m/r)位差数据,以及rs个1位数据   SAD体系的第一级(多个DS单元)
  (1,1)   根据radix-T乘法算法的s个加法或减法   一个(m-t)位被乘数x(t=logT)   s个m位部分乘积和rs个1位零值   radix-T乘法器的第一级(从)
在图11的MAVIP的所考虑实施例中,在AA/DSA单元模块与压缩阵列模块之间存在一个数据路由模块,其现在由两个相同的控制信号c1和c5来控制成AA/DSA单元。由AND门将到选择模块的时钟信号(未显示)与信号c1进行组合以便当c1=0时停止该选择模块。在这种情况下该体系作为一个并行加法器/减法器阵列而运算。取决于控制信号c5,将该数据路由模块配置成如在SAD体系内(如果c5=0)将r个(m/r)位差数据和r个1位数据从AA/DSA单元的输出端直接发送到压缩阵列模块的直接连接,或者是(如果c5=1)该数据路由模块作为将s个m位部分乘积或者从该AA/DSA单元模块中或者从存储器中发送到压缩阵列模块的相应乘法器结构内的标准选择模块来运算。这通过插入一个从相应线选择数据的数据一致器/多路复用器模块23而实现。如果c5=0则该数据一致器/多路复用器模块23选择AA/DSA单元模块的输出端,或者如果c5=1则其选择该选择模块的输出端,并且其将数据类型转换成适合于压缩阵列4的数据类型。例如,在图13的例子内压缩阵列的输入端包括两个组,每组包括5个25位数字和2个31位反馈回路。每组内输入端的设置与移位后乘法方法中的那组部分乘积相对应。因此,该一致器/乘法器模块23不会产生部分乘积的任何转换,而只是实现相应的移位并且如果c5=1则将该两组部分乘积发送到压缩阵列模块。然而,当实现SAD(c5=0)时,一致器/乘法器模块23在将其发送到压缩阵列模块之前转换8个8位和8个1位差及符号数据。在一个小压缩阵列中将该8个1位数据压缩成2个2位数字并接着对其补零(在MSB一侧)以变成25位数字。同时对该8个8位数字补零以变成25位数字。接着利用5个数字对得到的10个25位数字进行分组。
需要对与图8的用于矩阵-向量算法的体系相比的图11的体系内的求和模块进行改进以便使其可根据信号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的例子中所示,其后跟着第三个求和模块(最后加法器)。
图12b呈现了与8个8位或4个16位加法器的情况相对应的加法器或DS单元的可重配置模块的例子。这个模块取决于三个控制信号c1,c5和cs而实现了不同的功能,如表2所示。
表2
  (c1,c5,cs)   模块的操作模式   输入   输出   目标用途
  (0,0,0)   8并行8位加法   8个8位对(xi,yi),其中分别从输入线A(8(i-1):8i-1)和B(8(i-1):8i-1)中取得用于加法器i=1,...,8的xi和yi   8个9位和/差ci=xi+yi/xi-yi,其中8个和/差位是在输出线2i-1形成并且符号位是在输出线2i形成   不同精度的并行加法器/减法器
  (0,0,1)   8并行8位减法
  (0,1,0)   4并行16位加法   4个16位对(xi,yi),其中分别从输入线A(16(i-1):16i-1)和B(16(i-1):16i-1)中取得输入到该对加法器2i-1和2i中的xi和yi,i=1,...,4。   4个17位和/差ci=xi+yi,其中4组16和/差位,每组分别在组合输出线(1,3),(5,7),(9,11)和(13,15)上形成。与这些组合线相对应的符号位分别在输出线4、8、12和16上形成。
  (0,1,1)   4并行16位减法
  (1,0,0)   不是控制信号的有效组合
  (1,0,1)   8并行8位DS运算(减法后面为XOR)   8个8位对(xi,yi),其中分别从输入线(8(i-1):8i-1)和B(8(i-1):8i-1)中取得用于加法器i=1,...,8的xi和yi   8个8位差数据在线2i-1上并且8个1位符号数据在线2i上,i=1,...,8   SAD体系的第一级(多个DS单元)
  (1,1,0)   不是控制信号的有效组合
  (1,1,1)   2个16位加法和2个16位减法   来自一个寄存器中的常数C(16)连接到该2个8位AND门,并且假定该16位被乘数x(符号从一个13位的值中扩展)在总线A的0,...,15位线上是有效的   4个16位PP(具有15位值)。组合线(1,3)包含C(16)-x,线(5,7)包含3x,线(9,11)包含5x并且线(13,15)包含7x。   radix-8非重编码乘法器的第一级(AA)
下面将描述与控制信号的每个有效组合相对应的数据路径。
首先,说明多路复用器的运算。对输入锁存器的输入端的多路复用器M1的模式进行控制以便如果控制输入端(即c1c5)是高则多路复用器将第一输入端(图12b上面的输入端)送到其输出端。相应地,如果控制输入是低,该多路复用器将第二输入端(图12b中下面的输入端)送到其输出端。对加法器间的多路复用器M2的操作模式进行控制以便如果控制输入(即c5)是高则多路复用器将第一输入端(图12b中最右面的输入端)送到其输出端。相应地,如果控制输入是低,则多路复用器将其第二输入端(图12b中最左边的输入端)送到其输出端。
在c1,c5,cs=0,0,0和c1,c5,cs=0,0,1前两种情况中,由于c5=0暗示着到每个加法器(包括偶数的那些)的进位输入(Carry-in)是信号cs,因此该模块作为一个并行8个8位加法器/减法器并行阵列而运算,也就是说取决于是实现加法还是减法在8位加法器对之间没有进位传送。因为c1c5=0,所以到每个8位加法器(包括偶数的那些以及具有进位输入
Figure A20038010833700331
的那些)的进位输入是信号cs ( c 1 c 5 c s ‾ = c s ) . 因此,是否实现加法或减法由信号cs定义,其不仅是到每个加法器的进位输入,而且是到加法器输入端(如果cs=1则对输入端求反)的XOR门的第二输入端。因为c5=0,并且因此c1c5=0,流水线锁存器(在图12b上的小空方框)的输入端的多路复用器会将上面的输入送到这些锁存器中。并且,将多路复用器上面的输入连接到总线A和B的输入线上以便根据表2而形成8个8位对。应当注意的是,由于c1=0,现在加法器输出端的XOR门是无效的,因此XOR的第二输入端不会影响其输出端。
在c1,c5,cs=0,1,0和c1,c5,cs=0,1,1的情况中,由于c5=1暗示着将来自奇数加法器的进位输出(Carry-out)传送到偶数加法器的进位输入,因此该模块作为一个并行的4个16位加法器/减法器而操作。是否实现加法或减法再次由信号cs来定义。还是由于c1c5=0,在到流水线锁存器R(图12b中的小空方框)的输入端的多路复用器会将上面的输入送到这些锁存器中,其与表2中的输入方案相对应。输出端的XOR门再一次无效。
在c1,c5,cs=1,0,1的情况中,该模块作为一个并行的8DS(差-符号)单元阵列而运算。该输入方案和进位传输方案与在情况1中完全相同,但是由于cs=1,因此仅实现减法。另外,由于现在(且仅是现在) c 1 c 5 ‾ = 1 , 输出端的XOR门有效。这意味着如果相应8位加法器的进位输出是高(即如果到加法器的上面的输入小于下面的输入)则要将差位(在8位线上形成)反向。
在c1,c5,cs=1,1,1的情况中,该模块作为radix-8非重编码乘法器第一级的4个16位加法器/减法器而运算:c5=1使得这对8位加法器作为16位加法器/减法器而运算。加法器对(1,2)和(7,8)作为16位减法器而运算(由于cs=1),并且加法器对(3,4)和(5,6)作为16位加法器而运算(由于 c 1 c 5 c s ‾ = 0 )。同样地,由于现在(且仅是现在)c1c5=1,在输入端的多路复用器将它们的下面的输入端送到流水线锁存器。由加法器对(1,2)所形成的减法器在其第一输入端获取常数C(16)(保存在寄存器中),并且在其第二输入端获取16位被乘数x(从一个13位值中扩展的符号)。假定该被乘数x可以在总线A的0,...,15位线处获得。加法器对(3,4)在其第一输入端获取2x(对x移位)并且在其第二输入端获取x。加法器对(5,6)分别在其第一和第二输入端获取4x和x。最后,减法器对(7,8)分别在其第一和第二输入端获取8x和x。应当指出的是在这种情况下加法器输出端的XOR门无效。
图13呈现了用于视频/图像处理的多功能体系的优选实施例,其源自图9的(n=m=13)位被乘数和乘数的情况下的矩阵-向量算法的体系。在这个实现中的该体系包括可重构的8个8位或4个16位加法器/减法器阵列2(见图12b)、用于存储来自于加法器/减法器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列出了与控制信号c1,...,c7的相应选择一起的图13的MAVIP的示例实现中所实施的一些运算。
                                 表3
  运算   控制信号c1  c2  c3  c4  c5   c6   c7
  并行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     c2  c3  1     1     0     0前(k/2)周期c2=c3=0,其后c2=c3=1
  长度p的信号的k-抽头FIR滤波   1     c2  c3  1     1     0     0前(k/2)周期c2=c3=0,其后c2=c3=1
由于可应用不同类型的乘法器/MAC单元结构的若干不同的扩展,因此存在着实现本发明上述实施例的许多替换。此外,在每种结构中设计参数的不同选择会导致不同的替换。
可将本发明的优选实施例实施为例如是独立(紧密或弱耦合)设备。本发明的一种替换实现可以是一个系统处理器内的功能单元。这种方案可以替换处理器内的乘法单元。怎样来完成仍然存在许多替换。其中之一是这样一种实现,即其中将不包括多个加法器阵列(第一流水线级P1)且不包括存储器21的一个不同实施例的一部分用作处理器内的功能单元。因此该处理器的加法器/减法器起多个加法器阵列的作用,而寄存器起用于矩阵-向量运算的结构中所采用的存储器的作用。
例如,得克萨斯仪器公司TMS320C64x DSP包括八个功能单元,其中六个可作为64位加法器/减法器而运算,它们中的每个均可以作为两个32位或四个16位、或者八个8位加法器/减法器而运算。其也包括128个64位寄存器,其中每一个同样可用作两个32位或四个16位或八个8位寄存器。假定将与图5中的功能单元类似但不包括加法器阵列的另一个功能单元(FU)包括在该处理器内。那么在下面两个周期中(在当前TMS320C64x乘法器上的乘法也占用两个周期),包含有多个选择模块、多个压缩阵列和多个快速最后加法器的这个功能单元可用于乘法和乘法基础运算。在第一个周期,加法器/减法器计算被乘数x的可能的部分乘积并将结果存储在寄存器中。在下一个步骤,选择部分乘积的适当集合并将其与所考虑的功能单元相加。在再次利用被乘数x的这种情况中,当实现其中包括x的第一个乘法时仅执行第一个周期一次,同时其在随后与x的乘法中可以被忽略,这导致显著的节省了时间及功率消耗。此外,当利用合理少量的系数实现FIR滤波(卷积)时,仅将TMS320C64x加法器/减法器用在最初的几个(可能是一个)周期中以便计算该滤波系数的可能的部分乘积并且将它们存储在寄存器中。然后利用根据本发明的功能单元、以及为其它目的而提供机会以利用该加法器/减法器的读取/存储单元来执行剩余的计算(或为功率节省而停止它们)。在TMS320C64x上的FIR滤波的当前实现中,包括乘法器和加法器/减法器在内的所有功能单元将都忙于该作业。
又一个替换是实现用于多种位精度的本发明优选结构的可能性。例如,有可能实现可在一个运算步骤中执行一次n×m乘法,两次(n/2)×m或n×(m/2)次乘法或四次(n/2)×(m/2)乘法的乘法器/MAC单元。
图14描述了一个根据本发明优选实施例的设备29。它包含控制设备29运算的控制单元30。该设备也包含用于执行信号处理作业的数字信号处理器31或者用于执行控制作业的微处理器。然而,一些信号处理作业,尤其是关于视频信号处理的作业,将要在根据本发明优选实施例的视频/图像处理单元32中执行,所述视频/图像处理单元可以是一个独立单元或是在数字信号处理器31内实现。该设备的用户界面33包含显示装置34、音频装置35、键盘36以及例如摄像机37。该设备29包含如移动通信装置这样的通信装置38以与通信网络(未显示)通信以及与像这样的另一个设备交换信息。存储装置39用于存储不同种类的数据和如控制单元30的操作命令这样的程序以及部分乘积。
本发明不只限于上述实施例,而是在所附权利要求的范围内可以对其进行改进。

Claims (27)

1.一种用于利用包括一组至少两个流水线级的流水线计算设备执行计算操作的方法,所述流水线级具有至少一个用于数据输入的数据接口和至少一个用于数据输出的数据接口,其中,用于执行计算操作的数据输入到设备中,其特征在于:在计算设备中执行选择数据处理,其中,在至少一个所述输入数据接口和至少一个输出数据接口之间执行选择以将所述至少一个输入数据接口连接到所述至少一个输出数据接口,以便在所述至少一个输入数据接口和所述至少一个输出数据接口之间路由数据并且根据所述选择处理数据。
2.根据权利要求1的方法,其特征在于:检查输入数据所期望的流水线级,其中在所述检查的基础上做出选择以将设备的输入数据连接到所期望的流水线级的数据接口。
3.根据权利要求1或2的方法,其特征在于:所述数据接口之一包括计算设备的输出端,并且选择一个流水线级的计算结果以作为该计算设备的输出提供,其中将所述一个流水线级的输出连接到包含所述计算设备输出的该计算设备的所述一个数据接口。
4.根据权利要求1、2或3的方法,其特征在于:在至少两个流水线级(P1,...,P4)中执行所述计算操作,其中将所述计算操作分成至少两个子运算,并且在不同的流水线级执行所述至少两个子运算。
5.根据权利要求4的方法,其特征在于:通过将至少一个子运算分成部分子运算以及在不同的时间启动每个部分子运算而至少部分地以时间交错方式执行该计算操作。
6.根据权利要求3的方法,其特征在于:从至少一个第一数据接口和一个第二数据接口选择到流水线级(P1,P2,P3,P4)的输入,该第一数据接口是当前流水线级之前的流水线级数据输出的数据接口,而第二数据接口是该计算设备的所述数据接口数据输出的另一个数据接口。
7.根据权利要求1到5中任一个的方法,其特征在于:存储至少一个流水线级(P1,P2,P3,P4)的输出值。
8.根据权利要求1到7中任一个的方法,其特征在于:其用于视频信息处理。
9.根据权利要求1到8中任一个的方法,其特征在于:以流水线方式执行一个乘法运算和另一个乘法运算,其中在完成所述一个乘法运算之前开始所述另一个乘法运算,所述乘法运算分成至少一个第一和一个第二子运算,在一个流水线级中执行每个所述第一和第二子运算,并且在一个流水线中并行执行至少一个所述子运算,其中在完成第一乘法运算的相应子运算之前开始第二乘法运算的一个子运算。
10.一种用于在包括一组至少两个流水线级的流水线估算设备中执行计算操作的系统,所述流水线级具有至少一个用于数据输入的数据接口和至少一个用于数据输出的数据接口,其特征在于:该系统进一步包括用于执行一个选择数据处理的至少一个开关(2、3、4、5),所述至少一个开关包括用于将所述至少一个输入数据接口连接到所述至少一个输出数据接口的至少一个控制输入,以在所连接的数据接口之间执行路由数据并且根据所述选择处理数据。
11.根据权利要求10的系统,其特征在于:其包括一个选择器以检查该输入数据所期望的流水线级,其中根据所述检查以将设备的输入数据连接到所期望流水线级的数据接口。
12.根据权利要求10或11的系统,其特征在于:所述数据接口之一包括该计算设备的输出,以及该系统包括一个通过将所述一个流水线级的输出连接到所述计算设备的输出而提供流水线级计算结果作为计算设备的输出的输出开关。
13.根据权利要求10、11或12的系统,其特征在于:其包括用于将所述至少一个计算操作分成子运算并且在不同时间启动每个子运算的输入锁存器(R1,...,Rp)。
14.根据权利要求10到13中任一个的系统,其特征在于:它在流水线级之间包括开关,用于将流水线级(P1,P2,P3,P4)的输入数据接口与第一输出数据接口或第二输出数据接口连接,该第一输出数据接口是当前流水线级之前的流水线级的输出端。
15.根据权利要求10到14中任一个的系统,其特征在于:它包括用于存储流水线级(P1,P2,P3,P4)输出值的存储器(21)。
16.根据权利要求10到15中任一个的系统,其特征在于:它包括一个用于呈现视频信息的显示器(34、37)和/或一个用于将视频信息输入到系统中的摄像机。
17.一种用于在包括一组至少两个流水线级的流水线估算设备中执行计算操作的设备,所述流水线级具有至少一个用于数据输入的数据接口和至少一个用于数据输出的数据接口,其特征在于:该设备进一步包括用于执行一个选择数据处理的至少一个开关(2、3、4、5),所述至少一个开关包括用于将所述至少一个输入数据接口连接到所述至少一个输出数据接口的至少一个控制输入,以在所连接的数据接口之间执行路由数据并且根据所述选择处理数据。
18.根据权利要求17的设备,其特征在于:它包括一个用于将该设备的输入数据连接到期望输入数据的流水线级的数据接口的选择器。
19.根据权利要求17或18的设备,其特征在于:它包括一个输出,以及一个通过将所述一个流水线级的输出连接到所述设备的输出而提供流水线级计算结果作为计算设备的输出的输出开关。
20.根据权利要求17、18或19的设备,其特征在于:其包括用于将所述至少一个计算操作分成子运算并且在不同时间启动每个子运算的输入锁存器(R1,...,Rp)。
21.根据权利要求17到20中任一个的设备,其特征在于:它在流水线级之间包括开关,用于将流水线级(P1,P2,P3,P4)的输入数据接口与第一输出数据接口或第二输出数据接口连接,该第一输出数据接口是当前流水线级之前的流水线级的输出。
22.根据权利要求17到21中任一个的设备,其特征在于:它包括用于存储流水线级(P1,P2,P3,P4)输出值的存储器(21)。
23.根据权利要求17到22中任一个的设备,其特征在于:它是一个视频处理装置。
24.根据权利要求17到23中任一个的设备,其特征在于:它包括一个移动通信发送器和接收器(38)。
25.根据权利要求17到22中任一个的设备,其特征在于:它是一个集成电路。
26.一种包括用于在流水线计算设备中执行计算操作的设备的无线终端,该流水线计算设备包括一组至少两个流水线级,所述流水线级具有至少一个用于数据输入的数据接口和至少一个用于数据输出的数据接口,其特征在于:该无线终端进一步包括用于执行一个选择数据处理的至少一个开关(2、3、4、5),所述至少一个开关包括用于将所述至少一个输入数据接口连接到所述至少一个输出数据接口的至少一个控制输入,以在所连接的数据接口之间执行路由数据并且根据所述选择处理数据。
27.一种包括用于在流水线计算设备中执行计算操作的设备的计算设备,该流水线计算设备包括一组至少两个流水线级,所述流水线级具有至少一个用于数据输入的数据接口和至少一个用于数据输出的数据接口,其特征在于:该计算设备进一步包括用于执行一个选择数据处理的至少一个开关(2、3、4、5),所述至少一个开关包括用于将所述至少一个输入数据接口连接到所述至少一个输出数据接口的至少一个控制输入,以在所连接的数据接口之间执行路由数据并且根据所述选择处理数据。
CNB2003801083374A 2002-11-06 2003-11-05 用于执行计算操作的系统、方法及设备 Expired - Fee Related CN100530168C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20021983A FI118654B (fi) 2002-11-06 2002-11-06 Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite
FI20021983 2002-11-06

Publications (2)

Publication Number Publication Date
CN1735880A true CN1735880A (zh) 2006-02-15
CN100530168C CN100530168C (zh) 2009-08-19

Family

ID=8564892

Family Applications (1)

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

Country Status (10)

Country Link
US (1) US7774400B2 (zh)
EP (1) EP1576493B1 (zh)
KR (1) KR100715770B1 (zh)
CN (1) CN100530168C (zh)
AT (1) ATE382901T1 (zh)
AU (1) AU2003276291A1 (zh)
DE (1) DE60318494T2 (zh)
FI (1) FI118654B (zh)
TW (1) TWI266233B (zh)
WO (1) WO2004042599A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315718A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行向量内积运算的装置和方法
CN113395551A (zh) * 2021-07-20 2021-09-14 珠海极海半导体有限公司 处理器、npu芯片和电子设备

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8856201B1 (en) 2004-11-10 2014-10-07 Altera Corporation Mixed-mode multiplier using hard and soft logic circuitry
DE102005011374B3 (de) * 2005-03-11 2006-07-13 Infineon Technologies Ag Sicheres und schnelles Rechenwerk für Addiereschaltungen von Kryptographieprozessoren
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US8041759B1 (en) 2006-02-09 2011-10-18 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
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
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
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
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
US20080225939A1 (en) * 2007-03-15 2008-09-18 Jiun-In Guo Multifunctional video encoding circuit system
KR20080085423A (ko) * 2007-03-20 2008-09-24 엘지전자 주식회사 Bma 연산기 및 이를 이용한 인코더
US20090063609A1 (en) * 2007-06-08 2009-03-05 Honkai Tam Static 4:2 Compressor with Fast Sum and Carryout
US7958180B2 (en) * 2007-07-05 2011-06-07 International Business Machines Corporation Multiplier engine
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
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
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
US8892620B2 (en) * 2009-10-07 2014-11-18 Qsigma, Inc. Computer for Amdahl-compliant algorithms like matrix inversion
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
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
US9588765B2 (en) * 2014-09-26 2017-03-07 Intel Corporation Instruction and logic for multiplier selectors for merging math functions
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US9846623B2 (en) 2015-08-20 2017-12-19 Qsigma, Inc. Simultaneous multi-processor apparatus applicable to acheiving exascale performance for algorithms and program systems
CN111857822B (zh) * 2016-08-05 2024-04-05 中科寒武纪科技股份有限公司 一种运算装置及其操作方法
US20180113840A1 (en) * 2016-10-25 2018-04-26 Wisconsin Alumni Research Foundation Matrix Processor with Localized Memory
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
US10671349B2 (en) * 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
EP3480710A1 (en) * 2017-11-03 2019-05-08 Nokia Technologies Oy Computer architectures and instructions for multiplication
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
WO2021102382A1 (en) * 2019-11-20 2021-05-27 Mentium Technologies Inc. Data processing system configured for separated computations for positive and negative data
US11409356B1 (en) 2019-11-20 2022-08-09 Mentium Technologies Inc. Using data correlation to reduce the power consumption of signal processing systems without affecting the precision of computation
CN115138208B (zh) * 2022-09-06 2022-11-25 山东超华环保智能装备有限公司 数据处理器及包含该处理器的一种废气智能处理系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8718488D0 (en) * 1987-08-05 1987-09-09 British Petroleum Co Plc Chemical process
US5204828A (en) * 1989-02-10 1993-04-20 Intel Corporation Bus apparatus having hold registers for parallel processing in a microprocessor
US4965762A (en) * 1989-09-15 1990-10-23 Motorola Inc. Mixed size radix recoded multiplier
US5299320A (en) * 1990-09-03 1994-03-29 Matsushita Electric Industrial Co., Ltd. Program control type vector processor for executing a vector pipeline operation for a series of vector data which is in accordance with a vector pipeline
US5420815A (en) * 1991-10-29 1995-05-30 Advanced Micro Devices, Inc. Digital multiplication and accumulation system
US5220525A (en) * 1991-11-04 1993-06-15 Motorola, Inc. Recoded iterative multiplier
JP3140187B2 (ja) * 1992-07-23 2001-03-05 アイシン・エィ・ダブリュ株式会社 車両用経路誘導装置
JP3546437B2 (ja) * 1993-03-31 2004-07-28 ソニー株式会社 適応形ビデオ信号演算処理装置
US6058473A (en) * 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US5646877A (en) * 1995-05-25 1997-07-08 Texas Instruments Incorporated High radix multiplier architecture
JPH09305401A (ja) * 1996-05-13 1997-11-28 Mitsubishi Electric Corp コンピュータ及びコンパイラ
US5825680A (en) * 1996-06-21 1998-10-20 Digital Equipment Corporation Method and apparatus for performing fast division
JP3678512B2 (ja) * 1996-08-29 2005-08-03 富士通株式会社 乗算回路、該乗算回路を構成する加算回路、該乗算回路の部分積ビット圧縮方法、および、該乗算回路を適用した大規模半導体集積回路
KR100291383B1 (ko) * 1996-11-18 2001-09-17 윤종용 디지털신호처리를위한명령을지원하는모듈계산장치및방법
US5875125A (en) * 1997-07-07 1999-02-23 International Business Machines Corporation X+2X adder with multi-bit generate/propagate circuit
US6175911B1 (en) * 1998-08-21 2001-01-16 Advanced Micro Devices, Inc. Method and apparatus for concurrently executing multiplication and iterative operations
WO2000031658A1 (fr) * 1998-11-26 2000-06-02 Matsushita Electric Industrial Co., Ltd. Processeur et dispositif de traitement d'image
JP2000322235A (ja) * 1999-05-07 2000-11-24 Sony Corp 情報処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315718A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行向量内积运算的装置和方法
CN113395551A (zh) * 2021-07-20 2021-09-14 珠海极海半导体有限公司 处理器、npu芯片和电子设备

Also Published As

Publication number Publication date
EP1576493A1 (en) 2005-09-21
DE60318494D1 (de) 2008-02-14
KR20050065672A (ko) 2005-06-29
DE60318494T2 (de) 2009-01-15
CN100530168C (zh) 2009-08-19
US20040148321A1 (en) 2004-07-29
TWI266233B (en) 2006-11-11
FI20021983A0 (fi) 2002-11-06
AU2003276291A1 (en) 2004-06-07
FI20021983A (fi) 2004-07-16
ATE382901T1 (de) 2008-01-15
KR100715770B1 (ko) 2007-05-08
US7774400B2 (en) 2010-08-10
WO2004042599A1 (en) 2004-05-21
FI118654B (fi) 2008-01-31
TW200414023A (en) 2004-08-01
EP1576493B1 (en) 2008-01-02

Similar Documents

Publication Publication Date Title
CN1735880A (zh) 用于执行计算操作的系统、方法及设备
CN1735881A (zh) 用于执行计算操作的方法和系统以及一种设备
Liang et al. Evaluating fast algorithms for convolutional neural networks on FPGAs
JP7469407B2 (ja) ニューラルネットワーク計算ユニットにおける入力データのスパース性の活用
Zhu et al. An efficient hardware accelerator for structured sparse convolutional neural networks on FPGAs
Ma et al. Optimizing the convolution operation to accelerate deep neural networks on FPGA
CN106909970B (zh) 一种基于近似计算的二值权重卷积神经网络硬件加速器计算装置
US20210349692A1 (en) Multiplier and multiplication method
Schinianakis et al. An RNS implementation of an $ F_ {p} $ elliptic curve point multiplier
Motamedi et al. PLACID: A platform for FPGA-based accelerator creation for DCNNs
Bahn et al. Parallel FFT algorithms on network-on-chips
You et al. RSNN: A software/hardware co-optimized framework for sparse convolutional neural networks on FPGAs
Farrukh et al. Optimization for efficient hardware implementation of CNN on FPGA
Liu et al. A precision-scalable energy-efficient convolutional neural network accelerator
Sun et al. A high-performance accelerator for large-scale convolutional neural networks
Pinto et al. Low-power modified shift-add multiplier design using parallel prefix adder
CN102799564A (zh) 基于多核dsp平台的fft并行方法
EP2608015B1 (en) System and method for implementing a multiplication
Fonseca et al. Design of power efficient butterflies from Radix-2 DIT FFT using adder compressors with a new XOR gate topology
Qureshi et al. NeuroMAX: a high throughput, multi-threaded, log-based accelerator for convolutional neural networks
KR20080050226A (ko) 모듈러 곱셈 장치 및 설계 방법
CN1735857A (zh) 用于完成乘法运算的方法、系统和设备
Spagnolo et al. Designing fast convolutional engines for deep learning applications
CN113705794B (zh) 一种基于动态激活位稀疏的神经网络加速器设计方法
US20070180010A1 (en) System and method for iteratively eliminating common subexpressions in an arithmetic system

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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160114

Address after: Espoo, Finland

Patentee after: Technology Co., Ltd. of Nokia

Address before: Espoo, Finland

Patentee before: Nokia Oyj

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

Granted publication date: 20090819

Termination date: 20181105

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