CN1735857A - 用于完成乘法运算的方法、系统和设备 - Google Patents
用于完成乘法运算的方法、系统和设备 Download PDFInfo
- Publication number
- CN1735857A CN1735857A CNA2003801083389A CN200380108338A CN1735857A CN 1735857 A CN1735857 A CN 1735857A CN A2003801083389 A CNA2003801083389 A CN A2003801083389A CN 200380108338 A CN200380108338 A CN 200380108338A CN 1735857 A CN1735857 A CN 1735857A
- Authority
- CN
- China
- Prior art keywords
- pipeline stages
- multiplying
- computing
- sub
- pipeline
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
Abstract
本发明涉及一种用于在第一操作数和第二操作数之间执行乘法运算的方法。在该方法中将该乘法运算分成两个子运算。以时间交错方式执行至少一个所述子运算,其中将所述至少一个子运算进一步分成部分子运算以便在不同的时间启动所述部分子运算。
Description
技术领域
本发明涉及一种用于以流水线方式完成一个乘法运算和另一个乘法运算的方法,其中,在完成所述一个乘法运算之前开始所述另一个乘法运算,将所述乘法运算分成至少第一子运算和第二子运算,在一个流水线级执行每个所述第一和第二子运算。本发明也涉及一种用于以流水线方式完成一个乘法运算和另一个乘法运算的设备,该设备包括用于将乘法运算分成至少第一子运算和第二子运算的装置,将每一个所述第一和第二子运算设置成在一个流水线级内执行。本发明也涉及一种包含用于以流水线方式完成一个乘法运算和另一个乘法运算的装置的无线终端,其包括用于将该乘法运算分成至少第一子运算和第二子运算的装置,将每个所述第一和第二子运算设置成在一个流水线级中执行。本发明进一步涉及一种用于以流水线方式完成一个乘法运算和另一个乘法运算的系统,该系统包括用于将该乘法运算分成至少第一子运算和第二子运算的装置,将每个所述第一和第二子运算设置成在一个流水线级中执行。
背景技术
存在着许多其中需要乘法和/或相乘累加(MAC)运算的应用。作为一个非限制性的例子,如数字信号滤波应用、视频/图像处理应用等等这样的许多信号处理应用就是其中实现了实时乘法运算的应用。其中需要向量和/或矩阵运算的其他应用也利用了乘法和/或MAC运算。通常将乘法运算实现为求和及逐位移位运算。由于两个操作数间的一次乘法运算需要许多次求和及移位运算以计算乘法结果,因此这种乘法运算是资源需求作业。
尤其是视频/图像处理算法是不得不实时实现的巨大量计算。因此,高速性能已经成为发展用于不同视频/图像处理算法或者子作业的并行专门化结构(加速器)中的推动力。一个现有技术的视频/图像处理系统包括几个这种加速器(如绝对差求和(SAD),余弦变换等等),其中每个由大量的硬件元件组成,然而,随着移动通信系统的发展,该影响系统成本的硬件领域以及功率/能量消耗成为了与高速性能同等重要的性能。对于满足所有这些准则的一种方法是进一步现代化数字信号处理器(DSP)并降低专用加速器的数目。虽然在这个领域存在着一些改进,但是所开发的系统仍然不能总是满足高速及功率消耗的需要。
用于视频及图像处理及其他信号处理作业的现有技术体系通常以传统乘法器结构为基础。已经开发出了用于实现乘法和/或相乘累加运算的许多乘法方法以及相当多种类的设备。在下文中,仅考虑两个操作数(被乘数及乘数)均未知的情况的乘法方法及通用乘法器结构、存在于二进制补码运算的两个定点带符号整数乘法以及所谓的以T为基数的(radix-T)方法。
分别地将n位(包括符号)乘数a的二进制补码表示描述成
在radix-T并行乘法方法中,根据以下公式而获得乘积y=a·x的二进制补码
在以下两个主要步骤中:
步骤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的基本二进制补码表示。在这个情况中,通过下述公式而获得乘积的二进制补码:
即,nradix-2=n,以及由Ar=ar,其中r=0,...,n-2以及An-1=-an-1,其中r=n-1而定义了部分乘积Ar·x,r=0,...,n-1。可利用乘数
和被乘数
的每个二进制补码位之间的两输入端AND门阵列而简单地(并且通常地)形成这些部分乘积。在第二步的累加之前Ar·x,r=0,...,n-1的值乘以2r(即向左移动r位)。应当注意的是在这个方法中,与其他部分乘积不同的方式来处理有时也称作是校正因数的该部分乘积An-1·x。
即如前所述,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需要对
的位求反并加1。通常,在其中对部分乘积进行求和的步骤2中完成加1。
不管是否采用Booth重编码或非编码方法,在radix-2乘法方法中共有nradix-2=n个部分乘积要被求和。为了降低部分乘积的数目并因此而降低第二级的延迟(累加部分乘积),已经开发了基于改进Booth算法(MBA)的radix-4方法。MBA可能是最普及的乘法方法,并且正在被广泛地研究和最佳化。在MBA中通过nradix-4=n/2个部分乘积的和
a-1=0
而获得乘积的二进制补码,其中根据乘数
的二进制补码表示的三个连续位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。
为了简化以下公式,在其中存在象n/k这样的项的每种情况中,假定n是k的整数倍。由于可根据任意数目的位(重复最高有效位)而对二进制补码数求补码,因而这是一个有效的假定。
图1呈现了通常的改进Booth算法101。有n/2个Booth编-解码行,其中每行包含一个Booth编码器102和m+1个Booth解码器103,所述编码器和解码器可以两个为一组。每个Booth编码器102分析乘数
的二进制补码的三个连续位,包括一位重叠,并向相应的行解码器103输出q个信号。在一些最近的现有技术设计中,q的值=3。根据这q个信号,解码器行在其输入端形成具有被乘数的位
的部分乘积(Arx)∈{0,±x,±2x}。由于是通过硬件移位形成了2x,因而x的非负倍数可容易地获得。通过将x的相应正倍数的位求反并接着加1而形成x的负倍数,这通常在步骤2中完成。例如,美国专利US6173304描述了一种实现Booth编码器和解码器的这种系统。在radix-2方法中可以比在改进Booth算法中更容易得到部分乘积,但是当采用改进Booth算法时将部分乘积的数目减小到n/2其导致了在速度性能、面积及功率消耗中的显著优势。
为了进一步减小部分乘积的数目,将Booth编码进一步扩展到多位(以任意T为基数)重编码。现在给出该乘积的通用方程:
a-1=0,
即,存在着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重编码(基数高于4)乘法器的通用结构201。这个结构包括用于计算可能的部分乘积的列表0,±x,±2x,...,±Tx的加法器阵列202、用于根据乘数位而选择n/t个部分乘积的选择模块203、和用于将所选择的部分乘积求和的求和模块204。最后加法器205从由求和模块204中所产生的和S以及进位C项而形成乘积
典型的现有技术基数高于4乘法器的加法器阵列包括与包含在可能的部分乘积列表中的x的正奇数倍数一样多的加法器(在T=8的情况中是1,在T=16的情况中是3等等)。通常,由于形成该可能的部分乘积列表是这种乘法器相当费时间的部分,因而采用快速-超前进位(CLA)加法器。在专利US5875125中,提出了一种可用在radix-8乘法器中的专门的x+2x加法器。值得注意的是也提出了混合的radix-4/radix-8乘法器,例如在美国专利号4965762中,然而,其主要对其中串行产生并累加可能的部分乘积的迭代(非并行)乘法器有用。美国专利号5646877描述了一种乘法器结构,其中对于任意基数的可能的部分乘积均是作为加法器阵列内3x及x移位方案的和或差而得到的,该阵列包括一个用于产生3x的x+2x加法器、两个移位器和一个加法器/减法器。
典型现有技术以高于4为基数的乘法器的选择模块203包括n/t个radix-T Booth编码器和相等数目的解码器行。根据由该解码器行所形成的相应部分乘积,每个编码器分析乘数的相应(t+1)个字节组并输出多个控制信号。例如,在专利US6240438中给出了对如何将radix-TBooth编码器和解码器扩展到更高的基数的评述。
下面,将更详细地考虑该部分乘积的相加,即步骤2。大部分并行乘法器/MAC单元结构采用由压缩阵列组成,该压缩阵列后跟用于将步骤1(见图1和2)所形成的部分乘积相加的快速加法器(最后加法器)。该压缩阵列将nradix-T个部分乘积行减小成相应于用最后加法器来相加的和S及进位C项的两行。该压缩阵列通常不是由全加和半加加法器(一个-保存进位加法器树或Wallace树)就是4∶2压缩器组成。最后加法器通常是快速-超前进位加法器,其是根据压缩阵列中不同位的延迟而仔细设计的。
如图3a和3b所述,大体上存在两种将乘法器结构扩展到MAC单元的方式。在第一种情况中(图3a),将压缩阵列301的两个输出(S和C项)反馈到其输入以便将当前部分乘积值与当前累加值的两个加数相累加。然后将最终S和C项在最后加法器302内相加。在第二种情况中(图3b),将这些输出送到反馈到另一压缩阵列303,其输出又反馈到它的输入端。现在,将当前乘积的S及C项累加到当前累加值直到最后周期,这时在最后加法器302内将最终S及C项相加。在第一种情况中整个压缩阵列的深度(depth)(因此为总时延)可以更小,同时因此,在第二种情况中宽度、面积和功率消耗可以更小。
作为高基数乘法器的概述,值得注意的是基数越高,步骤1(产生部分乘积)的复杂性越高,但是步骤2(将部分乘积相加)的复杂性越低。“高于4的基数”乘法方法没有得到流行,或许是由于必需具有包括加法器阵列及选择模块的部分乘积发生器,其消耗的相当的时间和面积。通常,认为以4为基数的MBA是现有技术最佳并行乘法方法并且其用于许多产业上的乘法器中。
本发明的主要目的是强化一些乘法器/MAC单元特征,这些特征从视频和图像处理角度出发是所期望的但在现有技术解决办法中是空白的或不充分的。首先,考虑最流行的radix-4 Booth重编码乘法器/MAC方法。作为这种方法的一个通用缺陷,它比更高基数方法更耗电。另一个通用缺陷是,即使与radix-2乘法相比部分乘积的数目减小为一半,仍然可利用更高基数而使其减小。也就是说,这个方法的复杂性主要集中于步骤2(将部分乘积相加)。当流水作业radix-4Booth重编码乘法器/MAC结构时,通常将部分乘积产生模块认为是第一流水线级,然而其纯平衡于(即更快于)其他流水线级。
考虑“基数高于4”乘法器,已经示出了当仅考虑到该乘法运算的实现时,就面积和时间判据而言这些乘法器的不同实现方式与radix-4乘法器相比表现为有竞争力,同时就功率消耗方面也胜过那些radix-4乘法器。“基数高于4”方法的主要缺陷是部分乘积产生模块必须具有一个加法器阵列。
Booth重编码乘法器也具有与必须处理被乘数的负倍数以及符号扩展有关的缺陷。更重要的是,“基数高于16”Booth重编码乘法器需要一级以上的加法以产生可能的部分乘积。
因此,本发明的一个目的就是开发不利用Booth重编码的高基数乘法器。
如果要采用独立的现有技术并行阵列或新提出的高基数乘法器/MAC单元来实现多个相应运算,则即使可以不影响总处理量而共享较快模块,仍然需要较大的硅面积。
因此,本发明的另一个目的是开发一组具有一些公共模块的乘法器和/或MAC单元。
流水作业的现有技术乘法器和/或MAC单元的一个本质缺陷在于流水线级之间的均衡性差。
发明内容和目的
这里示出了两张表。分别地,表1a呈现了现有技术将n位乘数和m位被乘数相乘的Booth重编码radix-T乘法器/MAC单元中的不同模块的各种特征,表1b呈现了将n位乘数和m位被乘数相乘的新非重编码radix-T乘法器/MAC单元中的不同模块的各种特征。表1c呈现了在表1a和1b中所使用的简称。分析表1a和1b可以看出,对于大多数的n值和m值来说,在每种乘法器/MAC单元类型中每个乘法器的不同模块的延迟都存在着本质的区别。也就是说,这些乘法器的直接流水线的实现将受到流水线级之间的不良对称的影响。设法在流水线级之间实现较佳对称,人们可以通过在一个进位串行传送(carry-ripple)模块内设计一个具有不同数目的FA的超前进位(CLA)加法器而灵活地提高第一和最后流水线级的处理量。这就是为什么表1a和1b中没有显示出这些模块的延迟原因。在有些情况中,如n取小的数值,基数T较高,这可能意味着很小的进位串行传送模块,以及由此的较大面积。总之,利用CLA是加速这两级的一种解决方案,虽然这种解决方案不是太有效。由于目前工艺电路的设计是通过使这些电路的内部流水线不仅合理的方式来最佳化关键路径而进行的,因此对于中间两个流水线级(SB和CA),情况是不同的。另外,在不同的n值下,对于现有技术乘法器/MAC单元结构的每种类型(BR(T=8,16),NR1(T=4,8))来说,这些模块的延迟之间的相对差异是很悬殊的。对于n较小而基数T较高(如T=16且n任意)的情况,选择模块比压缩阵列更慢,而在其他情况中情形正相反。这意味着为一个或另一个模块设计更快的电路并非解决这些级均衡性问题的通用方案。所有这些使得很难得出一个以均衡性较好的流水线级使现有技术乘法器/MAC单元实现流水线作业的系统性方法。
表1a
乘法器类型 | BR,T=4 | BR,T=8 | BR,T=16 | |
AA宽度,s | - | 1 | 3 | |
#的可能的部分乘积 | 5 | 9 | 17 | |
SB的分量 | 编码 | n/2BR4 | n/3BR8 | n/4BR16 |
解码 | n/2(m+1)-BD4 | n/3(m+2)-4∶1t/c | n/4(m+3)-8∶1t/c | |
SE | 是 | 是 | 是 | |
SB的延迟 | 6t | 12t | 16t | |
#的输入端到CA | n/2个(m+1)位+3n/2个1位 | n/3个(m+2)位+4n/3个1位 | n/4(m+3)位+5n/4个1位 | |
FA-CA的#输入端/级别/延迟 | n=13,x MAC | 7/4/8t9/5/10t | 5/3/6t8/4/8t | 4/2/4t6/3/6t |
n=16,x MAC | 8/4/8t10/5/10t | 6/3/6t8/4/8t | 4/2/4t6/3/6t | |
n=64,x MAC | 32/8/16t34/9/18t | 22/7/14t24/7/14t | 16/6/12t18/6/12t | |
4∶2-CA的#输入端/级别/延迟 | n=13,x MAC | 7/2/6t9/2(4∶2)+FA/8t | 5/(4∶2)+FA/5t7/2/6t | 4/1/3t6/2/6t |
n=16,x MAC | 8/2/6t10/3/9t | 6/2/6t8/2/6t | 4/1/3t6/2/6t | |
n=64,x MAC | 32/4/12t34/5/15t | 22/4/12t24/4/12t | 16/3/9t18/4/12t |
表1b
乘法器类型 | NR1,T=4 | NR1,T=8 | NR2,T=4 | NR2,T=8 | |
AA宽度,s | 2 | 4 | 1 | 3 | |
#的可能的部分乘积 | 4 | 8 | 4 | 8 | |
SB的分量 | 编码 | 否 | 否 | 1BR4 | 1BR8 |
解码 | n/2(m+1)-4∶1 | n/3(m+2)-8∶1 | (m+1)-(BD4+n/2(4∶1)) | (m+2)(4∶1t/c+n/3(8∶1)) | |
SE | 否 | 否 | 否 | 否 | |
SB的延迟 | 5t | 6t | 6t | 12t | |
#的输入端到CA | ((n-1)/2+1)个(m+2)位 | ((n-1)/3+1)个(m+3)位 | (n-1)/2个(m+4)位+1个1位 | (n-1)/3个(m+6)位+1个1位 | |
FA-CA 的#输入端/级别/延迟 | n=13,x MAC | 7/4/8t9/4/8t | 5/3/6t7/4/8t | 6/3/6t8/4/8t | 4/2/4t6/3/6t |
n=16,x MAC | 9/4/8t11/5/10t | 6/3/6t8/4/8t | 8/4/8t10/5/10t | 5/3/6t7/4/8t | |
n=64,x MAC | 33/8/16t35/9/18t | 22/7/14t24/7/14t | 32/8/16t34/9/18t | 21/7/14t23/8/16t | |
4∶2-CA的#输入端/级别/延迟 | n=13,x MAC | 7/2/6t9/2(4∶2)+FA/8t | 5/(4∶2)+FA/5t7/2/6t | 6/2/6t8/2/6t | 4/1/3t6/2/6t |
n=16,x MAC | 9/2(4∶2)+FA/8t11/3/9t | 6/2/6t8/2/6t | 8/2/6t10/3/9t | 5/(4∶2)+FA/5t7/2/6t | |
n=64,x MAC | 33/4(4∶2)+FA/14t35/5/15t | 22/4/12t24/4/12t | 32/4/12t34/5/15t | 21/4/12t23/4/12t |
表1c
BR | Booth重编码radix-T乘法器 |
NR1 | 类型1的非重编码radix-T乘法器 |
NR2 | 类型2的非重编码radix-T乘法器 |
SE | 符号扩展电路 |
BR4,BR8,BR16 | 用于相应基数的Booth重编码器电路 |
BD4 | Radix-4 Booth重解码电路 |
4∶1,8∶1,4∶1t/c,8∶1t/c | 具有相应输入端数的乘法器或真/补乘法器 |
SB | 选择模块 |
CA,FA-CA,4∶2CA | 压缩阵列,由全加法器(FA)及半加法器(HA)组成的CA,由4∶∶2压缩器组成的CA |
本发明的目的是实现一种用于以并行流水作业方式进行定点乘法运算的改进的计算结构及方法,其中流水线级的均衡性较佳。
本发明基于利用并行乘法器或MAC单元来至少部分地以时间交错方式完成计算运算的思想。简言之,通过利用这样的流水线作业,即,其中在不同程度并行性上并行每个流水线级以便将更高的并行性用于相对更慢的模块,而从radix-T Booth重编码(T=8,16)乘法器/MAC单元的现有技术结构中或者从新的非重编码乘法器/MAC单元结构(其中T=4,8)中导出本发明的结构。用这种方法,将高度的灵活性引入到了设计乘法器/MAC单元中。一个方面,与单个现有技术乘法器/MAC相比较,在硬件/功率开销增加最小的情况下允许实现较高的处理量。另一个方面,与具有一组独立的现有技术乘法器/MAC单元相比,这导致了面积显著的节省、流水线级间较佳的均衡性、以及由此的较佳地硬件利用及功率消耗。根据本发明的方法的另一个重要优点在于无需增加输入/输出总线宽度即可获得更大的并行性。
高基数乘法器/MAC单元结构包括那些可将其独立地用于完成其他有效运算的模块。这种模块是加法器/减法器阵列或求和模块。本发明的一个目的是要设计可重构的高基数乘法器/MAC单元结构,可配置该结构使其仅包括乘法器模块的子集以便由同样的设备支持乘法运算的子运算的实现。
确切地说,根据本发明的方法的主要特征在于:在一个流水线级内并行执行包含在高基数乘法中的至少一个子运算,其中在完成第一乘法运算的相应子运算之前开始第二乘法运算的子运算。根据本发明的设备的主要特征在于:该设备进一步包括用于在一个流水线级内并行执行包含在一个高基数乘法中的至少一个子运算的装置,以及用于在完成第一乘法运算的相应子运算之前开始第二乘法运算的子运算的装置。根据本发明的无线终端的主要特征在于:该无线终端进一步包括用于在一个流水线级内并行执行包含在一个高基数乘法中的至少一个子运算的装置,以及用于在完成所述一个乘法运算的相应子运算之前开始所述另一个乘法运算的子运算的装置。根据本发明的计算设备的主要特征在于:该计算设备进一步包括用于在一个流水线级内并行执行包含在一个高基数乘法中的至少一个子运算的装置,以及用于在完成所述一个乘法运算的相应子运算之前开始所述另一个乘法运算的子运算的装置。根据本发明的系统的主要特征在于:该系统进一步包括用于在一个流水线级内并行执行包含在一个高基数乘法中的至少一个子运算的装置,以及用于在完成所述一个乘法运算的相应子运算之前开始所述另一个乘法运算的子运算的装置。
与现有技术的解决方案相比较,本发明显示出了显著的优点。通过利用根据本发明的方法,与现有技术方法和设备相比,可以更快地并且采用更少功率地执行视频/图像处理环境中的乘法运算。本发明对于实现多个乘法/MAC尤其有效。与例如具有独立的乘法器阵列的情况相比,由于流水线级之间的均衡性更佳,因此,实现了面积及功率消耗上的显著降低。高速性能(高处理量)是由于所用的流水线可灵活地平衡不同流水线级(乘法器模块)的延迟以及将总体结构的周期降低至最快模块的延迟。与单个流水作业的现有技术(radix-4或更高)乘法器相比,用最小的面积增长实现了处理量的提高而没有增加输入/输出总线宽度。
附图的简要描述
在下文中,参考附图将更详细地描述本发明,其中:
图1示出了现有技术radix-4 Booth重编码乘法器的典型结构,
图2示出了radix-T Booth重编码(T≥8)或非重编码(T≥4)乘法器的通用结构,
图3a示出了并行radix-T MAC单元结构内的一个求和模块的实施例,其中将该求和模块实现为对于n/t个所选择的PP和用于反馈和及进位项的共用压缩阵列,
图3b示出了并行radix-T MAC单元结构内的求和模块的另一个实施例,其中求和模块实现为一个拆分压缩阵列,
图4示出了根据本发明的用于多个乘法/MAC运算的设备的优选实施例简化方框图,
图5a是串行功能模块的说明,
图5b是根据本发明的延迟(交错)并行性原理的多个类似并行功能模块的说明,
图6a显示为图5b的延迟并行功能模块内输入寄存器的工作模式时序图,
图6b显示为图5b的延迟并行功能模块内功能模块工作模式的时序图,
图6c显示为图5b的延迟并行功能模块内输出多路复用器工作模式的时序图,
图7示出了根据本发明的包含用于将被乘数求反的加法器的类型1 radix-8乘法器的优选实施例,
图8示出了图7中乘法器结构内SEL单元的示例性实施例,
图9示出了由对于m=13,n=16的情况下图7中乘法器结构的全加器和半加器组成的压缩阵列,
图10示出了根据本发明优选实施例的设备的简化方框图,以及
图11示出了用于多个乘法/MAC运算的根据本发明另一个实施例的可配置设备的通用结构的简化方框图。
发明的详细说明
在下文中,将更详细地描述本发明的优选实施例。图4显示了根据本发明的设备的通用结构。设备401包括一组不同的流水线级P1、P2、P3、P4。在这个实施例中,设备401包含四个流水线级,但是显然在本发明的范围内,流水线级的数目可以不同于四。
作为一个非限制性的例子而在此处采用的本发明优选实施例是一个用于实现一系列乘法yi=aixi,i=1,...,k或多个MAC运算,即向量-向量内积
运算的设备。该设备实际上作为一并行阵列(一组)高基数Booth重编码或非重编码并行乘法器或MAC单元而运算,其中由该阵列的乘法器/MAC单元共享某些模块。
流水线是一个提高用于实现如乘法和/或MAC这样的多个类似运算的系统处理量的常用方式。考虑现有技术radix-T Booth重编码(T=8,16)或非重编码(T=4,8)乘法器结构(图2)的典型流水线实现,第一流水线级P1将是具有表1a中给出的s的s个加法器阵列,第二级P2将是选择模块,第三级P3将是压缩阵列,最后几级P4(其数量在不同的实现中不同)将构成最后的加法器。
为了在一个乘法处理中应用本发明,通过如下的修改公式(3)而导出了用于任意带符号二进制补码整数的新的非重编码基数高于四乘法的方法:
其中T=2t
或者通过如下的修改公式(3)
如果采用公式(7),那么将有(n-1)/t+1个可能的部分乘积,其中前(n-1)/t个可能的部分乘积是被乘数的非负倍数Arx,r=0,1,...,n/t-1,其中Ar在0到2t-1之间变化,以及最后的可能的部分乘积是-an-1x。如果采用公式(8),那么将有n/t个可能的部分乘积Arx,r=0,1,...,n/t-1,其中对于前(n-1)/t个可能的部分乘积来说Ar在0到2t-1之间变化,以及对于最后的可能的部分乘积来说Ar在-2t-1到2t-1之间变化。在这个情况中,仅将前t+1个最高有效位进行类Booth重编码,而将其他位t个一组进行分组。基于等式(7)或(8)的乘法器将具有与图2所示类似的结构,所不同的在于选择模块203和部分乘积的数目。由于没有将乘法器编码,可将选择模块简单地实现为乘法器阵列,以及如果采用公式(8),对于前t+1个最高有效位来说,仅需要一行Booth编码/解码器。由于几乎所有可能的部分乘积都是乘数的非负倍数,所以除了如果采用公式(8)时的1位以外,在求和模块中不需要执行任何的加1操作。这使选择模块更小并且有规则的利用更简单的互连网络。
根据本发明的设备的优选实施例包括了多个(一组)乘法器/MAC单元。该装置的工作取决于几个适当选取的参数,通过它们可以设计出具有较好均衡性的流水线级的设备。图4示意性地显示了所提出的各种radix-T Booth重编码(T=8、16)或非重编码(T=4、8)乘法器组的通用结构。通常将根据本发明优选实施例的一组乘法器/MAC单元的结构描述成一个流水线设备401,其中第一流水线级P1包括多个(即p个)s加法器阵列(AAs)402,并且所有的s加法器阵列(AAs)402共享相同的输入线406。第二流水线级P2是多个(即q个)选择模块(SB’s)403,第三级P3是多个(即u个)压缩阵列(CA’s)404,以及第四流水线级包括多个(即v个)最后的超前进位加法器(CLA’s)405。基本功能模块(AA’s、SB’s、CA’s和CLA’s)事实上可与现有技术radix4、8、16 Booth重编码乘法器和/或MAC单元或者新提出的radix8或16非重编码乘法器/MAC单元的相应类型中所用的相同。因而p=q=u=v=1的情况相当于现有技术乘法器/MAC单元的情况。主要区别在于,在根据本发明设备的优选实施例中,用多个不同数量的基本模块替换现有技术结构的每个基本模决。一个流水线级内的模块以下面描述的时间交错方式运算,这样,为了使它们大致彼此相等并且与所期望的操作步骤持续时间匹配,可以改变流水线级的处理量。
参考图4、5a、5b,其中FB表示乘法器/MAC结构的任一个基本功能模块(AA、SB、CA、CLA),下面阐述多个功能模块的时间交错运算的原理。要将功能模块FB要用于较大系统的流水线级中,并假定其具有DFB≈pTdes(但是DFB<pTdes)的预估延迟,其中Tdes是系统的期望运算步骤持续时间。因此,为了使流水线级P1,...,P4以匹配于一个步骤持续时间的处理量工作,可用多个(w个)功能模块FB1,FB2,...,FBw来替换该串行功能模块,所述功能模块在其输入端406、407、408、409具有流水线寄存器(锁存器)R1,...,Rw并且在其输出端具有w∶1多路复用器410、411、412、413。参数w取决于所讨论的流水线级。对于第一流水线级P1,参数w相当于参数p,即存在p个流水线寄存器R1,...,Rp,并且第一流水线级的多路复用器410选择p个输入端中的一个到其输出。对于第二流水线级P2,参数w相当于参数q,即存在q个流水线寄存器R1,...,Rq,并且第二流水线级的多路复用器411选择q个输入端中的一个到其输出。对于第三流水线级P3,参数w相当于参数u,即存在u个流水线寄存器R1,...,Ru,并且第三流水线级的多路复用器412包含两个多路复用器(未画出),每个选择u个输入端中的一个到其输出。对于第四流水线级P4,参数w相当于参数v,即存在v个流水线寄存器R1,...,Rv并且,第四流水线级的多路复用器413选择v个输入端中的一个到其输出414。流水线级P1、P2、P3、P4的共享输入端406、407、408、409连接到w个流水线寄存器R1,...,Rw中的每一个。然而,在一个运算步骤的时间偏移中,这些寄存器中的每一个在每w个运算步骤中的一个中是开启的。这在图6a中显示成一个时序图。用这种方法,在每个运算步骤,由于在所考虑的流水线级内的所有其他功能模块的输入寄存器是写关闭的,因而将输入端I仅实际连接到一个功能模块的输入端而其他连接无效。在每w个运算步骤的第一个步骤中打开第一功能模块FB1输入端的寄存器R1,在每w个运算步骤的第二个步骤中打开第二功能模块FB1输入端的寄存器R1等等。通常,在运算步骤t=1,2,...,K时,输入端I实际上仅连接到FB1的输入端,其中f=(t-1)modw+1。因此,将输入端I空间上共享但是在时域上分配于所考虑的流水线级的功能模块FB1,FB2,...,FBw之间。如在图6b的时序图中所显示的那样,在系统运算期间,在运算步骤t=1,2,...,K,送往该流水线级的输入数据流的一个样值Xt输入到在该级被启动的功能模块FBf,其中f=(t-1)modw+1。一旦该FBf在运算步骤t+w-1,t=1,2,...,K的结束处完成其对Xt的运算,功能模块输出端的该w∶1多路复用器410、411、412、413将在FBf中得到的结果传送到下一运算步骤t+w,t=1,2,...,K处的该级输出端。由于这个原因,多路复用器410、411、412、413根据图6c所示的循环modw规则而运算。
将第一流水线级P1的输出端连接到第二流水线级P2的输入端。分别地,将第二流水线级P2的输出端连接到第三流水线级P3的输入端,以及将第三流水线级P3的输出端连接到第四流水线级P4的输入端。在根据本发明优选实施例的设备中,最后一个流水线级即第四流水线级P4的输出端连接到系统输出端。
因此,通过将现有技术乘法器/MAC单元结构的每个功能模块替换成多个类似功能模块以及通过利用时间交错运算的原理,经过适当地选择每个流水线级内模块的数目(即参数p、q、u、v),可相对于预定的运算步骤持续时间而言获得流水线级较佳的均衡性。假定现有技术乘法器/MAC单元结构内四个流水线级的延迟分别是DAA,DSB,DCA,DCLA,并且系统的期望处理量是Ndes次乘法/MAC运算/秒,则将期望运算步骤持续时间选定为Tdes,以使得Tdes≤1/Ndes,并且将所提及的设计参数选择为
,其中符号
意思指上舍入到下一个整数值。
可将所提出的在时间Tdes下运算的乘法器/MAC单元结构的表面积估计为:
Sprop=pSAA+qSSB+uSCA+vSCLA+Soverhead其中SAA、SSB、SCA和SCLA是相应模块的面积,以及Soverhead是用于将多个功能模块集成到每个流水线级中的互连及控制装置的开销。
另一方面,在单个传统的高基数流水线乘法器中,可将处理量定义为Npipe=1/Tpipe,其中Tpipe=max{DAA,DSB,DCA,DCLA}。即使Npipe≥Ndes,意味着单个流水线乘法器可以处理该作业,但由于如表1中可见的那样在DAA,DSB,DCA,DCLA之间的较大差异,该结构将会受到各级间低均衡性的影响。该不良的均衡性导致低硬件利用以及因此导致功率消耗无效率。然而,例如在信号处理中,即使流水线化处理,也需要提供比单个乘法器高几倍的处理量。这意味着在多数情况下,一个信号处理系统将不得不包括一阵列(一组)
个独立的乘法器/MAC单元。显然n=max{p,q,u,v}。因此,将传统的乘法器/MAC单元阵列的总面积估计为:
Sconv=n(SAA+SSB+SCA+SCLA)+Soverhead比较Sprop和Sconv,可见,与传统的独立乘法器/MAC单元阵列相比,根据本发明的结构的面积明显节省。本发明的优点不仅可以在信号处理(例如图像/视频处理)中实现而且可以在其中需要实时乘法运算的其他处理中实现。
因此,根据本发明优选实施例的方法提供了流水线级P1到P4的较佳均衡性,并且能够在最小地扩展面积的情况下提高单个高基数流水线乘法器/MAC单元的处理量。因为由流水线级的较佳均衡性而实现的较佳的硬件利用,因此该结构的处理量比面积增加的幅度更大。此外,应当注意的是,无需提高输入/输出总线宽度即可提高处理量,由于许多数字信号处理器提供相当窄的总线宽度,因此这是关键性的。
图7呈现了其中利用了本发明的该类型1非重编码(即基于等式(7))radix-8乘法器结构(NR1,T=8)的示范性实现。该乘法器701的运算基于以下知识。
设
和
分别是n位(包括符号位)乘数a和m位(包括符号位)被乘数x的二进制补码表示。同样设将乘数进行符号扩展以便n=3n′+1(n′是整数)。因此,乘积y=a·x的(n+m)位(包括符号位)二进制补码表示可这样获得:
其中
Ar=a3r+2a3r+1a3r=22a3r+2+2a3r+1+a3r,r=0,...,n′-1,是部分乘积值,其从数字
k=min{n-1,m+2}的二进制补码表示的前m+2个最低有效位中形成,并且
是由以下公式给定的符号校正项
应当注意的是,如果Ar≠0,则通过去掉由项项xm-1C(n)2m+2-k中所获得的
的符号位而获得
r=0,...,n′-1的值。然而,如果Ar=0,根据被乘数x的符号而应当使用负数(10...0)或正数(00...0)。
根据上述知识,可以采用下列乘法的算法。
算法1
将乘数a的二进制补码值
和被乘数x的二进制补码值
作为算法1的输入数据而提供。那么算法1的输出将是乘积y=a·x的二进制补码值
算法1包括以下步骤:
步骤1:首先,形成可能的部分乘积
以及 这可以分别由如加法器/减法器702b、702c、702d这样的组合装置来完成。同样,例如是由第一加法器/减法器702a来形成符号校正项
的二进制补码形式。
和
的值可以通过分别将
的值向左移一位、两位和三位而获得。
的值可以通过将
的值向左移一位而获得。实质上,在这一级获得了任意三位非负数的被乘数x的所有可能的部分乘积值0,
和
在这一级获得的每一个数都是一次加法或减法的结果,所述加法或减法的一个操作数是
而另一个操作数是向左移动某些数目的位的
因而,可将这一级在一个运算步骤中的四个并行加法器/减法器阵列702a、702b、702c、702d中实现。
步骤2:因此,根据乘数的每一组三个连续位Ar=a3r+2a3r+1a3r,r=0,...,n′-1,从第1步所获得的所有可能的部分乘积值列表0,
和
中选择出n′个部分乘积
该选择可由选择装置703b、703c、703d完成。同样,如果an-1=0,那么将符号校正项的值设置为
否则(如果an-1=1)
其中是在第1步中得到的。这可由第一选择装置703a来完成,其根据an的值而从其输入
和
中选择一个到输出端。部分乘积
是通过去掉符号位而从
中所形成的(m+2)位数字,因此,它们总是与x的符号不相关的正数。
步骤3:将n′个所选部分乘积
r=0,...,n′-1与
相加来定义乘积
如在压缩阵列704a中执行相加之前,将
的值乘以2r并将
的值乘以2k。这些乘法以图7中选择模块703和求和模块704之间的箭头表示为移位运算。根据本发明的乘法方法的步骤3总共要相加
个数(部分乘积行),而在Booth乘法方法中,取决于符号扩展的方式,这个数是
或
另外,由于要将部分乘积值以及符号扩展条件相对彼此移位3个位置,由此可将这些行中的一些合并。例如,000101和011000这两行可以合并成下面一行:011101。很容易看出,在合并后部分乘积行的总数是
由于所有的部分乘积
都是正数并且
是一个(m+n)位数,因此在实现求和中不需要符号扩展。形成及相加符号扩展项值的另一种方式是可能的,然而其应当看作是算法1的较少改进。显然,如果将步骤3的结果与前面的结果相加,则可以容易地将所提出的乘法方法扩展到乘法-累加(MAC)方法。
图7中的乘法器701是建立在算法1的基础上的。它包括用于从被乘数
中计算符号校正项
和该组可能的部分乘积
和
的加法器阵列702,用于根据乘数
的位形成该组部分乘积
r=0,...,n′-1以及项
的选择模块703,以及通过将选择模块703的输出
和
相加而计算乘积
的求和模块704,其中所述选择模块预先将
的值向左移3r个位置并将
的值向左移K个位置。
通过包含一个从整个求和模块或压缩阵列的输出端到其输入端的反馈可容易地将图7的乘法器结构扩展成一个相乘-累加结构,以便将来自选择模块703的值的和与在前面的运算步骤中得到的值累加。
图7中乘法器结构不同模块可以不同方式实现。在下文中,假定被乘数
以具有可能移位的位并行方式输入到加法器阵列702的四个加法器/减法器702a、702b、702c、702d中的每一个。第一加法器702a实现从常数xm-1C(n)2m+2-k中减去
得到
如果在求和模块704中实现了将an的值相加,那么可用m个反相器代替这个加法器702a。第二和第三加法器702b及702c在其第二输入端接收
并在其第一输入端分别将
向左移动一位和二位(也可考虑仅具有一个输入端的加法器)。其结果分别是
和
类似地,第四加法器702d实现从
中减去
得到
加法器阵列702a、702b、702c和702d构成了第一流水线级P1。
加法器阵列702的输出输入到选择模块703,在当前实施例中其构成了第二流水线级P2且包括一个(n+m-k)位2∶1多路复用器703以及n’个选择单元(SEL)703b、703c、703d。多路复用器703a在其第一输入端得到
并且在其第二输入端得到xm-1C(n)2m+2-k,并且受an控制以便其将在其输出端得到项
每个选择单元703b、703c、703d在其输入端得到0、
和
的值并且受乘数
的相应三位控制。该输出根据表3而形成
表3
图8呈现了一个可实现为选择单元703b、703c、703d的电路的非限制性例子。该电路包括8选1多路复用器,它的一些输入是通过将一些其他输入的位移位而形成的。通常,选择单元703b、703c、703可以是根据表3而工作的任一种电路。
根据本发明的乘法器结构当前实施例的求和模块704由一个后面跟着加法器705(以下称作最后加法器)的压缩阵列(CA)704a组成。求和模块704构成该结构的第三流水线级P3及第四流水线级P4。压缩阵列704a将该n′+1个部分乘积行减少到两行。它可以从3∶2比率全加器(FA)、半加器(HA),和/或4∶2比率压缩器中构造。各种构造用于本实施例中的压缩阵列和最后加法器的技术是现有技术中已知的。然而,应当注意的是,要在求和模块中相加的行数比现有技术radix-4 Booth重编码乘法器中的小。相应地,压缩阵列内的级数以及由此的其延迟和尺寸都显著降低。例如,在13位被乘数(m=13)和16位乘数(n=16)的情况中,当利用radix-8方法替换radix-4方法来实现乘法器和MAC单元时,可使要相加的行数分别从9降低到6以及从11降到8。图9描述了对于这种情况中的全加器和半加器组成的可能的压缩阵列的例子。在所考虑的例子中,分别与目前工艺的radix-4 Booth乘法器和MAC单元相比较,级数(延迟)分别从4降到3(从8t降到6t,t是NAND门延迟)以及从5降到4(从10t降到8t)。当利用radix-8方法替换radix-4方法时,在13×16乘法器的情况中全加器(FA)和半加器(HA)的数目从72和14降到36和13。
表4
结构 | PP产生器的延迟 | CA的延迟 | 最后加法器的延迟 | CC持续时间 | 一次乘法或一次MAC的CC’s/反应时间 | 用于K次乘法或长度为p的向量乘法的CC’/反应时间 |
现有技术radix-4Booth乘法器,p=q=u=v=1 | 6t | 8t(4层) | 8t(7级) | 8t | 9/72t | K+8=40/320t |
现有技术radix-8NR1乘法器,p=q=u=v=1 | 24t | 6t(3层) | 22t(3级) | 24t | 4/96t | K+4=36/864t |
所提出乘法器,p=2,q=u=v=1 | 12t | 6t(3层) | 12t(5级) | 12t | 7/84t | K+6=38/456t |
所提出乘法器,p=3,q=u=v=1 | 8t | 6t(3层) | 8t(7级) | 8t | 9/72t | K+8=40/320t |
所提出乘法器,p=4,q=u=v=1 | 6t | 6t(3层) | 6t(10级) | 6t | 12/72t | K+11=43/258t |
现有技术Booth MAC | 6t | 10t(5层) | 10t(7级) | 10t | 9/90t | K+8=40/400t |
现有技术radix-8NR1 MACp=q=u=v=1 | 24t | 8t(4层) | 22t(3级) | 24t | 5/120t | K+4=36/864t |
所提出MAC,p=2,q=u=v=1 | 12t | 8t(4层) | 12t(6级) | 12t | 8/96t | K+7=39/468t |
所提出MAC,p=3,q=u=v=1 | 8t | 8t(4层) | 8t(8级) | 8t | 10/80t | K+9=41/328t |
所提出MAC,p=4,q=u=v=1 | 6t | 8t(4层) | 8t(8级) | 8t | 10/80t | K+9=41/328t |
所提出MAC,p=6,q=1,v=2,u=4 | 4t | 4t(4层) | 4t(4×4级) | 4t | 6/24t | K+7=39/156t |
表5
结构 | FA数+HA数 | Booth编码 | Booth解码 | |||
第1级PP产生器 | 第2级CA | 第3级最后加法器 | 总共 | |||
现有技术Booth乘法器 | 无 | 72+14 | 28 | 100+14 | 8 | 96 |
所提出乘法器p=1 | 4×13 | 36+13 | 28 | 116+13 | 无 | 无 |
所提出乘法器p=2 | 8×13 | 36+13 | 28 | 168+13 | 无 | 无 |
所提出乘法器p=3 | 12×13 | 36+13 | 28 | 223+13 | 无 | 无 |
所提出乘法器p=4 | 16×13 | 36+13 | 28 | 272+13 | 无 | 无 |
表5(续)
结构 | MUXs(SB) | INV | AND/OR | 门总数 | |||||
2∶1 | 3∶1 | 4∶1 | 8∶1 | 2 | 3 | 4 | |||
现有技术Booth乘法器 | 3 | 0 | 0 | 0 | 24 | 30 | 32 | 8 | 1225 |
所提出乘法器p=1 | 15 | 0 | 0 | 75 | 26 | 13 | 0 | 0 | 1630 |
所提出乘法器p=2 | 75 | 0 | 0 | 75 | 52 | 13 | 0 | 0 | 2040 |
所提出乘法器p=3 | 15 | 60 | 0 | 75 | 78 | 13 | 0 | 0 | 2460 |
所提出乘法器p=4 | 15 | 0 | 60 | 75 | 104 | 13 | 0 | 0 | 2750 |
表4呈现了估计时间特性的对比,表5呈现的估计硬件资源以及门数目将根据本发明优选实施例的类型1非重编码radix-8乘法器及MAC单元结构(所提出乘法器)与现有技术中的Booth乘法器和BoothMAC单元结构相比较,比较的情形是13位(m=13)被乘数和16位(n=16)乘数,并且用MAC单元累加K=32次乘法。在生成这两张表时都假定在第一流水线级中使用了标准的进位串行传送加法器以及将流水线加法器用作最后加法器(具有表4所示级数)。如所见到的,radix-8乘法器压缩阵列的延迟(6t)比在radix-4 Booth乘法器的情况中(8t)更小。然而,如果仅采用一个加法器阵列,那么由于运算步骤持续时间由第一流水线级的延迟(24t)来决定,因此总延迟(864t)比在radix-4Booth乘法器中时(320t)要大得多。显然,流水线级是纯均衡的。同时,从表5中可见,由于该选择模块,radix-8乘法器总的门数目(1630G)比radix-4 Booth乘法器(1225G)更大。
另一方面,当在该结构中包括更多加法器阵列时,可以使radix-8乘法器延迟减小的幅度超过门数目增加的幅度。当包括p=4个加法器阵列时,实现了流水线级之间的较佳均衡,并且总延迟(258t)变得比在p=1加法器阵列的情况中小3.34倍(但是几乎比较大的K小了4倍)。应当注意的是门数目仅增大了2750/1630=1.67倍。在MAC单元的情况中,对于意味着利用了六个加法器阵列及两个压缩阵列的p=6,q=1,v=2,u=4情况,实现了级间的最佳均衡。在这个情况中,与p=q=v=u=1的情况相比,在门数目增大2.65倍的代价下实现了快约5.54倍的性能。
根据本发明的结构可用在许多不同的系统和设备中。有益地,其可用于视频编码/解码系统中以执行许多资源需求型计算运算。可根据系统的专门需要而选择参数p,q,u,v,以便得到每个流水线级P1,...,P4的最佳延迟。
本发明可例如是表示为包含不同流水线级P1,...,P4的一个独立单元。在每个流水线级内有必要的功能单元,其数目取决于所讨论的应用。还可以将本发明包含在一个数字信号处理器(DSP)中、在微处理器(MPU)中、在专用集成电路(ASIC)中等等。
接下来,将详细描述根据本发明的另一个优选实施例。图11示出了根据本发明的设备的这个实施例的通用结构。主要区别在于这个设备是可配置的,这意味着其可以包括主要模块(流水线级)的不同的子集。这是通过在第一流水线级P1、第三流水线级P3和第四流水线级P4的输入端包括一个或多个诸如多路复用器21、22、23这样的选择装置而实现的。该多路复用器21、22、23有益地是2∶1多路复用器。其分别由信号c1,c2和c3来控制。该结构也包含一个由第一控制信号c1以及由第二控制信号c2和第三控制信号c3的OR组合(c2∨c3)来控制的输出选择器24。该输出选择器24从第一流水线级P1的输出端选择数据或者从连接到该结构输出总线26的最后流水线级P4的输出端选择数据。多路复用器21、22、23的第一输入端连接到该结构输入总线25的相应线上,以及将多路复用器21、22、23的第二输入端连接以便如果激活第二输入端,那么该结构如同一个乘法/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)。这意味着该结构起累加器的作用。仅压缩阵列404和最后加法器405工作而加法器402和选择模块403空闲。在第四种选择中,将第一控制信号c1和第二控制信号c2都设置成逻辑1状态,而将第三控制信号c3设置成逻辑0状态(c1=c2=1;c3=0)。在这个情形中该结构起多个宽精度快速加法器的作用。而在另一个选择中,当c1=c2=c3=0时,该结构同时起一个sp加法器/减法器阵列的作用和累加器的作用。显然,上述选择装置22、23、24以及其结构/工作模式对控制信号c1,c2,c3状态的依赖关系仅是一种可能的选择,而且在本发明的范围内也可施加其他选择。这也适用于本说明书以下所描述的其他控制信号。
在图11的结构中,存在两个其他控制信号c4和c5,其向该结构中增加了多功能性而没有对其重配置。第四控制信号c4激活(如果例如c4=1)或不激活(如果例如c4=0)在第三流水线级P3内压缩阵列404的输入端和输出之间的反馈环路。因此,如果c1=c2=c3=1,c4=0,则该结构作为一个乘法器而工作,以及如果c1=c2=c3=c4=1,则其作为MAC单元而工作。第五控制信号c5(其可能是1、2或3位信号)通过允许(c5的相应位例如是逻辑1)或停止(c5的相应位例如是逻辑0)全加器模块405之间的进位传送而控制第一流水线级P1内的加法器/减法器的精度。用这种方法,包含用于m位输入的sp加法器/减法器的多个加法器阵列也作为多个用于(m/2)位输入的2sp加法器/减法器或用于(m/4)位输入的4sp加法器/减法器等而工作。选择模块403、压缩阵列404以及最后加法器405也可稍作修改并且由同一个信号c4控制,从而实现不同精度下的乘法/MAC运算。
通过利用一个或多个处理器、逻辑电路和存储器等,可将本发明的结构实现成例如是一个集成电路。
图10描述了一个根据本发明优选实施例的设备10。它包括用于控制设备10工作的控制单元11。该设备也包括微控制单元12,其包含一个乘法器或一个乘法累加单元13(MAC)或者一个根据本发明优选实施例的可重配置设备。该设备的用户界面14包括显示装置15、音频装置15、键盘17以及如摄像机18。该设备10包含如移动通信装置这样的通信装置19以与通信网络(未显示)进行通信并与同样的另一个设备交换信息。存储装置20用于存储不同种类的数据和诸如用于控制单元11的运算命令之类的程序。
该设备可以例如是一个无线终端、计算设备等。
本发明不仅限于以上描述的实施例,而是其可以在所附权利要求的范围内进行改进。
Claims (27)
1.一种用于以流水线方式执行一个乘法运算和另一个乘法运算的方法,其中在完成所述一个乘法运算之前开始所述另一个乘法运算,将所述乘法运算分成至少第一子运算和第二子运算,以及在一个流水线级中执行每个所述第一和第二子运算,其特征在于:在一个流水线级中并行执行包含在高基数乘法中的至少一个子运算,其中在完成第一乘法运算的相应子运算之前开始第二乘法运算的一个子运算。
2.根据权利要求1的方法,其特征在于:以时间交错方式执行至少一个所述子运算,其中将所述至少一个子运算进一步分成部分子运算,以便在不同的时间启动每一个部分子运算。
3.根据权利要求1或2的方法,其特征在于:流水线级(P1,...,P4)之间的数据路由是可配置的。
4.根据权利要求1、2或3的方法,其特征在于:在至少两个流水线级(P1,...,P4)中执行每个所述乘法运算,其中在不同的流水线级中执行至少两个子运算。
5.根据权利要求1到4中任一个的方法,其特征在于:在第一操作数和第二操作数之间执行所述一个乘法运算和另一个乘法运算。
6.根据权利要求5的方法,其特征在于:在至少三个流水线级中执行该乘法运算,其中将第一操作数输入到第一流水线级,在其中形成第一操作数的一组部分乘积,将第二操作数输入到第二流水线级以完成从所述第一流水线级中形成的该组部分乘积中选择至少一个部分乘积,以及将所选择的部分乘积在第三流水线级中进行组合以形成所述第一操作数和第二操作数之间乘法运算的和(S)及进位(C)项。
7.根据权利要求6的方法,其特征在于:在项第四流水线级中执行一个加法运算,其中将所述和及进位项组合以形成乘法运算结果。
8.根据权利要求7的方法,其特征在于:有几个数据部分被立即,在一个或多个运算步骤中执行乘法,定义运算步骤持续时间,以及定义流水线级的延迟,其中为每个所述流水线级定义交错级别。
9.根据权利要求8的方法,其特征在于:定义交错级别以设置每个流水线级的延迟尽可能相等,并小于预定运算步骤持续时间。
10.根据权利要求9的方法,其特征在于:通过设置要在每个流水线级内立即处理的所述数据部分的数目而将流水线级的延迟设置成与预定运算步骤持续时间相对应。
12.根据权利要求5到11中任一个的方法,其特征在于:利用任意带符号二进制补码整数的非重编码基数高于四的乘法方法来完成根据以下等式的在所述第一操作数(a)和第二操作数(x)之间的乘法运算:
其中T=2t。
13.根据权利要求1到12中任一个的方法,其特征在于:将其用于视频信息的处理。
14.一种用于以流水线方式执行一个乘法运算和另一个乘法运算的设备,该设备包括用于将乘法运算分成至少第一和第二子运算的装置(P1,P2,P3,P4),并且将每个所述第一和第二子运算设置成在一个流水线级内执行,其特征在于:该设备进一步包括用于在一个流水线级中并行执行包含在高基数乘法中的至少一个子运算的装置(402、403、404、405),以及用于在完成所述一个乘法运算的相应子运算之前开始另一个乘法运算的一个子运算的装置。
15.根据权利要求14的设备,其特征在于:它包括用于将至少一个子运算分成部分子运算以在不同的时间启动每个部分子运算的装置(R1,...,Rp)。
16.根据权利要求14或15的设备,其特征在于:它包括用于在流水线级(P1,...,P4)之间可选择数据路由的至少一个多路复用器(410,411,412,413)。
17.一种根据权利要求14、15或16的设备,其特征在于:它包括用于以流水线方式执行每个所述乘法运算的至少两个流水线级(P1,...,P4),其中将至少两个子运算设置成在不同的流水线级中执行。
18.根据权利要求14到17中任一个的设备,其特征在于:将所述一个乘法运算和另一个乘法运算设置成在第一操作数和第二操作数之间执行,以及该设备包括用于以流水线方式执行每个所述乘法运算的至少第一(P1)、第二(P2)和第三流水线级(P3),用于将第一操作数输入到第一流水线级的装置,用于将第二操作数输入到第二流水线级的装置,该第一流水线级包括用于形成第一操作数的一组部分乘积的装置,该第二流水线级包括用于根据第二操作数从所述第一流水线级中所形成的该组部分乘积中选择至少一个部分乘积的选择器,以及第三流水线级包括组合器以组合所选部分乘积来形成所述第一和第二操作数之间的乘法运算的和(S)及项(C)。
19.根据权利要求18的设备,其特征在于:它进一步包括第四流水线级,其包括加法器以在所述和以及进位项之间执行加法运算以形成乘法运算的结果。
20.根据权利要求19的设备,其特征在于:至少一个流水线级包括用于将要处理的数据分成部分子运算以立即处理该数据的几个数据部分,其中所述至少一个流水线级包括每个数据部分的数据处理模块以大致同时处理该流水线级的每个数据部分。
21.根据权利要求20的设备,其特征在于:定义每个流水线级中数据处理模块的数目以便要在流水线级内处理的数据的处理时间在每个流水线级中大致相同。
23.根据权利要求14到22中任一个的设备,其特征在于:它是一个视频处理设备。
24.根据权利要求14到23的设备,其特征在于:它是一个集成电路。
25.一种包含用于以流水线方式执行一个乘法运算和另一个乘法运算的装置的无线终端,其包括用于将乘法运算分成至少第一和第二子运算的装置(P1,P2,P3,P4),并且将每个所述第一和第二子运算设置成在一个流水线级内执行,其特征在于:该无线终端进一步包括用于在一个流水线级中并行执行包含高基数乘法中的至少一个子运算的装置(402、403、404、405),以及用于在完成所述一个乘法运算的相应子运算之前开始另一个乘法运算的一个子运算的装置。
26.一种包含用于以流水线方式执行一个乘法运算和另一个乘法运算的装置的计算设备,其包括用于将乘法运算分成至少第一和第二子运算的装置(P1,P2,P3,P4),并且将每个所述第一和第二子运算设置成在一个流水线级内执行,其特征在于:该计算设备进一步包括用于在一个流水线级中并行执行包含高基数乘法中的至少一个子运算的装置(402、403、404、405),以及用于在完成所述一个乘法运算的相应子运算之前开始另一个乘法运算的一个子运算的装置。
27.一种用于以流水线方式执行一个乘法运算和另一个乘法运算的系统,该系统包括用于将乘法运算分成至少第一和第二子运算的装置(P1,P2,P3,P4),并且将每个所述第一和第二子运算设置成在一个流水线级内执行,其特征在于:该设备进一步包括用于在一个流水线级中并行执行包含高基数乘法中的至少一个子运算的装置(402、403、404、405),以及用于在完成所述一个乘法运算的相应子运算之前开始另一个乘法运算的一个子运算的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FI20021982 | 2002-11-06 | ||
FI20021982A FI115862B (fi) | 2002-11-06 | 2002-11-06 | Menetelmä ja järjestelmä kertolaskuoperaation suorittamiseksi ja laite |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1735857A true CN1735857A (zh) | 2006-02-15 |
Family
ID=8564891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2003801083389A Pending CN1735857A (zh) | 2002-11-06 | 2003-11-05 | 用于完成乘法运算的方法、系统和设备 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7334011B2 (zh) |
EP (1) | EP1558994A1 (zh) |
KR (1) | KR20050084681A (zh) |
CN (1) | CN1735857A (zh) |
AU (1) | AU2003279421A1 (zh) |
FI (1) | FI115862B (zh) |
TW (1) | TWI235954B (zh) |
WO (1) | WO2004042554A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255463A (zh) * | 2017-12-28 | 2018-07-06 | 深圳市紫光同创电子有限公司 | 一种数字逻辑运算方法、电路和fpga芯片 |
CN110399117A (zh) * | 2019-07-31 | 2019-11-01 | 上海燧原智能科技有限公司 | 一种混合乘法加法处理方法及装置 |
CN111596887A (zh) * | 2020-05-22 | 2020-08-28 | 天津国科医工科技发展有限公司 | 一种基于可重构计算结构的内积计算方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008030916A2 (en) * | 2006-09-06 | 2008-03-13 | The Research Foundation Of State University Of New York | A parameterized vlsi architecture and method for binary multipliers |
EP3480710A1 (en) * | 2017-11-03 | 2019-05-08 | Nokia Technologies Oy | Computer architectures and instructions for multiplication |
US11270196B2 (en) | 2019-10-15 | 2022-03-08 | International Business Machines Corporation | Multi-mode low-precision inner-product computation circuits for massively parallel neural inference engine |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5025408A (en) * | 1989-07-31 | 1991-06-18 | Shographics, Inc. | Bit serial multiplier with parallel-in-serial-out carry and partial product shift registers |
US4965762A (en) * | 1989-09-15 | 1990-10-23 | Motorola Inc. | Mixed size radix recoded multiplier |
US5150322A (en) * | 1990-06-05 | 1992-09-22 | Vlsi Technology, Inc. | Mixed-radix serial/parallel multipliers |
US5636155A (en) | 1993-04-27 | 1997-06-03 | Matsushita Electric Industrial Co., Ltd. | Arithmetic processor and arithmetic method |
US5646877A (en) * | 1995-05-25 | 1997-07-08 | Texas Instruments Incorporated | High radix multiplier architecture |
US5729485A (en) * | 1995-09-11 | 1998-03-17 | Digital Equipment Corporation | Fast determination of carry inputs from lower order product for radix-8 odd/even multiplier array |
US5825680A (en) * | 1996-06-21 | 1998-10-20 | Digital Equipment Corporation | Method and apparatus for performing fast division |
US5761106A (en) * | 1996-06-24 | 1998-06-02 | Motorola, Inc. | Horizontally pipelined multiplier circuit |
JP3678512B2 (ja) | 1996-08-29 | 2005-08-03 | 富士通株式会社 | 乗算回路、該乗算回路を構成する加算回路、該乗算回路の部分積ビット圧縮方法、および、該乗算回路を適用した大規模半導体集積回路 |
US5875125A (en) | 1997-07-07 | 1999-02-23 | International Business Machines Corporation | X+2X adder with multi-bit generate/propagate circuit |
US6173304B1 (en) | 1998-08-20 | 2001-01-09 | Lucent Technologies, Inc. | Joint optimization of modified-booth encoder and partial product generator |
US6353843B1 (en) * | 1999-10-08 | 2002-03-05 | Sony Corporation Of Japan | High performance universal multiplier circuit |
ATE316668T1 (de) * | 2001-12-14 | 2006-02-15 | Koninkl Philips Electronics Nv | Fliessbandkern in einem montgomery-multiplizierer |
-
2002
- 2002-11-06 FI FI20021982A patent/FI115862B/fi active IP Right Grant
-
2003
- 2003-11-05 EP EP03772366A patent/EP1558994A1/en not_active Ceased
- 2003-11-05 AU AU2003279421A patent/AU2003279421A1/en not_active Abandoned
- 2003-11-05 KR KR1020057007987A patent/KR20050084681A/ko active IP Right Grant
- 2003-11-05 TW TW092130871A patent/TWI235954B/zh not_active IP Right Cessation
- 2003-11-05 WO PCT/FI2003/000821 patent/WO2004042554A1/en not_active Application Discontinuation
- 2003-11-05 CN CNA2003801083389A patent/CN1735857A/zh active Pending
- 2003-11-06 US US10/703,154 patent/US7334011B2/en not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255463A (zh) * | 2017-12-28 | 2018-07-06 | 深圳市紫光同创电子有限公司 | 一种数字逻辑运算方法、电路和fpga芯片 |
CN108255463B (zh) * | 2017-12-28 | 2020-12-22 | 深圳市紫光同创电子有限公司 | 一种数字逻辑运算方法、电路和fpga芯片 |
CN110399117A (zh) * | 2019-07-31 | 2019-11-01 | 上海燧原智能科技有限公司 | 一种混合乘法加法处理方法及装置 |
CN110399117B (zh) * | 2019-07-31 | 2021-05-28 | 上海燧原智能科技有限公司 | 一种混合乘法加法处理方法及装置 |
CN111596887A (zh) * | 2020-05-22 | 2020-08-28 | 天津国科医工科技发展有限公司 | 一种基于可重构计算结构的内积计算方法 |
CN111596887B (zh) * | 2020-05-22 | 2023-07-21 | 威高国科质谱医疗科技(天津)有限公司 | 一种基于可重构计算结构的内积计算方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1558994A1 (en) | 2005-08-03 |
US7334011B2 (en) | 2008-02-19 |
US20040133618A1 (en) | 2004-07-08 |
KR20050084681A (ko) | 2005-08-26 |
FI20021982A (fi) | 2004-05-07 |
WO2004042554A1 (en) | 2004-05-21 |
AU2003279421A1 (en) | 2004-06-07 |
FI115862B (fi) | 2005-07-29 |
TWI235954B (en) | 2005-07-11 |
FI20021982A0 (fi) | 2002-11-06 |
TW200419445A (en) | 2004-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1735881A (zh) | 用于执行计算操作的方法和系统以及一种设备 | |
CN1735880A (zh) | 用于执行计算操作的系统、方法及设备 | |
CN1109990C (zh) | 运算装置及运算方法 | |
US20210349692A1 (en) | Multiplier and multiplication method | |
CN112540743B (zh) | 面向可重构处理器的有无符号乘累加器及方法 | |
CN1020806C (zh) | 使用跳跃阵列和变形华莱士树的并行乘法器 | |
Jagadeshwar Rao et al. | A high speed wallace tree multiplier using modified booth algorithm for fast arithmetic circuits | |
CN1781076A (zh) | 组合多项式和自然乘法的乘法器架构 | |
CN1735857A (zh) | 用于完成乘法运算的方法、系统和设备 | |
CN1108557C (zh) | 减少高速算术单元中超前进位加法器级数的结构和方法 | |
Saha et al. | Vedic mathematics based 32-bit multiplier design for high speed low power processors | |
CN103699729B (zh) | 模乘法器 | |
Daud et al. | Hybrid modified booth encoded algorithm-carry save adder fast multiplier | |
CN115904507A (zh) | 面向cgra的多精度小面积simd运算系统、方法、介质及设备 | |
CN114691086A (zh) | 一种基于操作数裁剪的高性能近似乘法器及其计算方法 | |
CN1829957A (zh) | 长整数乘法器 | |
Jaberipur et al. | Posibits, negabits, and their mixed use in efficient realization of arithmetic algorithms | |
CN116126283B (zh) | 一种fpga卷积加速器的资源占用率优化方法 | |
George et al. | Wallace tree multiplier using compressor | |
Mohanty | Design and implementation of faster and low power multipliers | |
Setia et al. | Novel Architecture of High Speed Parallel MAC using Carry Select Adder | |
Patronik et al. | Design of an RNS reverse converter for a new five-moduli special set | |
Deepthi et al. | Performance Analysis of a 64-bit signed Multiplier with a Carry Select Adder Using VHDL | |
Guem et al. | Variable Precision Multiplier for CNN Accelerators Based on Booth Algorithm. | |
Rathore et al. | Implementation and Design of Xilinx based Booth multiplier |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20060215 |
|
C20 | Patent right or utility model deemed to be abandoned or is abandoned |