运算装置及运算方法

文档序号:6418765阅读:311来源:国知局
专利名称:运算装置及运算方法
技术领域
本发明涉及一种能高速执行多用于信号处理的乘法、乘加运算的运算装置及运算方法。
到目前为止,多媒体数据是用微处理器和专用LSI的组合来处理的。可是,由于最近几年微处理器的性能取得了惊人的提高,仅用微处理器也能够执行某种多媒体数据处理。寄存器分割式运算的应用为所述性能提高的原因之一。还有,在图像处理、音频处理等方面,经常采用将数组元素作输入,以求一个累加数据的运算方法。


图12示出以往的用被分割的寄存器来执行乘加运算的运算装置的结构图。
同图中,寄存器105将32位累加数据ZU存储在高位32位中,将32位累加数据ZL存储在低位32位中。乘法器101将32位输入数据X的高位16位(以下,称此为“XU”)和32位输入数据Y的高位16位(以下,称此为“YU”)作输入来执行乘法,并输出32位的乘积。乘法器102将输入数据X的低位16位(以下,称此为“XL”)和输入数据Y的低位16位(以下,称此为“YL”)作输入来执行乘法,并输出32位的乘积。加法器103将乘法器101的输出数据和存储在寄存器105的高位32位中的数据ZU加起来,并输出32位的和数。加法器104将乘法器102的输出数据和存储在寄存器105的低位32位中的数据ZL加起来,并输出32位的和数。加法器103的输出数据被存储在寄存器105的高位32位中,加法器104的输出数据被存储在寄存器105的低位32位中。
按上述所构成的运算装置中,乘法器101执行乘法XU·YU,加法器103将乘法器101的乘法结果和存储在寄存器105的高位32位中的ZU加在一起,寄存器105将加法器103的输出,即乘加运算XU·YU+ZU的结果,存储在高位32位中。
同样地,乘法器102执行乘法XL·YL,加法器104将乘法器102的乘法结果和存储在寄存器105的低位32位中的ZL加在一起,寄存器105将加法器104的输出,即乘加运算XL·YL+ZL的结果,存储在低位32位中。
在把图13所示的数组元素,其中i意指第i次数据输入,i从0变化到N-1,作为输入数据X、Y输给运算装置来执行N次乘加运算时,运算结果(x0·y0+x2·y2+…+x2n-2·y2n-2)被存储在寄存器105的高位32位中,运算结果(x1·y1+x3·y3+…+x2n-1·y2n-1)被存储在寄存器105的低位32位中。
然而,在用上述以往的运算装置来求(x0·y0+x1·y1+x2·y2+…+x2n-2·y2n-2+x2n-1·y2n-1)的情况下,一定要在执行N次乘加运算之后,再将存储在寄存器105的高位32位中的运算结果(x0·y0+x2·y2+…+x2n-2·y2n-2)和存储在寄存器105的低位32位中的运算结果(x1·y1+x3·y3+…+x2n-1·y2n-1)加在一起。
在该加法中,要仅把存储在寄存器105中的高位32位数据传送到另一寄存器中;要仅把存储在寄存器105中的低位32位数据传送到其他(或者,所述另一)寄存器中,从而必须把所述被传送的各数据加起来。
如上所述,以往的运算装置中存在有这样的问题在要从被分割的多个输入数据来求一个累加运算结果的情况下,除了乘加运算以外,还要进行数据传送、数据加算等处理,处理周期不得已变大。
本发明的目的在于提供一种在要从被分割的多个输入数据求出一个累加运算结果的情况下,也不用进行数据传送、数据加法运算的运算装置。
为了达到上述目的,本发明的第1方面所涉及的运算装置为一可将分别由n个互相独立的M位部分数据构成的(n×M)位数据X和数据Y作输入,并输出一个独立的数据Z的运算装置,其中包括对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算的第1到第n个乘法器;可对所述第1到第n个乘法器的输出分别进行移位的第1到第n个移位器;和将所述第1到第n个移位器的输出都加起来的加法器。所述第1到第n个移位器进行以下的控制在要求出所述第1到第n个乘法器的输出之总和来作所述数据Z的情况下,所述移位器不进行移位;在要分别求出所述第1到第n个乘法器的输出来作所述数据Z的情况下,所述移位器将所述第1到第n个乘法器的输出位移到互相不重叠的数字位置。
按照上述结构,能够进行步骤数得以减少的乘加运算。此外,通过转换移位器的控制方式,也能够并列地进行多个乘法。
为达到上述目的,本发明的第2方面所涉及的运算装置为一可将分别由n个互相独立的M位部分数据构成的(n×M)位的数据X和数据Y作输入,并输出一个独立的数据Z的运算装置,其中包括可存储所述数据Z的寄存器;对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算的第1到第n个乘法器;将所述第1到第n个乘法器和所述寄存器的输出都加起来并将该结果输入所述寄存器的加法器。在该运算装置中,将多次循环输入的所述数据X和所述数据Y相乘后累加起来。
按照上述结构,即使多输入加法器的输入数增加,也可在某一程度抑制电路规模的增大,所以能够在抑制电路规模的增大的情况下实现乘加运算。
为达到上述目的,本发明的第3方面所涉及的运算装置为一可将分别由n个互相独立的M位部分数据构成的(n×M)位的数据X和数据Y作输入,并输出一个独立的数据Z的运算装置,其中包括可存储所述数据Z的寄存器;对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算的第1到第n个乘法器;可对所述第1到第n个乘法器的输出分别进行移位的第1到第n个移位器;将所述第1到第n个移位器和所述寄存器的输出都加起来并将该结果输入所述寄存器的加法器,在要用多次循环输入的所述数据X和数据Y来进行乘积累加运算的情况下,所述第1到第n个移位器进行以下的控制在要求出所述第1到第n个乘法器的乘积的累加和的总和来作所述数据Z时,所述移位器不进行移位;在要分别求出所述第1到第n个乘法器的乘积的累加和来作所述数据Z时,所述移位器将所述第1到第n个乘法器的输出位移到互相不重叠的数字位置。
按照上述结构,能够实现步骤数得以减少的乘积累加运算。此外,通过转换移位器的控制方式,能够并列地进行多个乘积累加运算。
为达到上述目的,本发明的第4方面所涉及的运算装置为一可将分别由n个M位部分数据构成的(n×M)位数据X和数据Y作输入,并输出数据Z的运算装置,其中包括可存储所述数据Z的寄存器;从构成所述数据Y的n个部分数据中选择一个的选择器;从构成所述数据X的n个部分数据中取出互相不重叠的一个,并乘以所述选择器的输出的第1到第n个乘法器;可对所述第1到第n个乘法器的输出分别进行移位的第1到第n个移位器;将所述第1到第n个移位器和所述寄存器的输出都加起来并将该结果输入所述寄存器的加法器。在第p次循环中,所述选择器选择从低位数起第p个所述部分数据,从低位数起第q个移位器进行(p+q-2)M位的移位控制。
按照上述结构,当被乘数的位数等于或者多于运算器所具备的乘法器的输入位数时,也可以进行乘法运算。
为达到上述目的,本发明的第5方面所涉及的运算装置为一可将2M位数据X和数据Y作输入,并输出4M位数据Z的运算装置,其中包括第1寄存器,存储在加法运算中所产生的每一位的进位C;第2寄存器,存储在加法运算中所产生的每一位的和S;第3寄存器,存储所述数据Z;第1译码器,将所述数据X的高位M位作输入并进行译码;第2译码器,将所述数据X的低位M位作输入并进行译码;第1、第2选择器,选择所述数据Y的高位M位和低位M位中之一;第1部分积发生器,将所述第1译码器的输出数据及所述第1选择器的输出数据作输入,来产生乘加运算的部分积;第2部分积发生器,将所述第2译码器的输出数据及所述第2选择器的输出数据作输入,来产生乘加运算的部分积;第1全加器,将由所述第1部分积发生器所产生的部分积加起来;第2全加器,将由所述第2部分积发生器所产生的部分积加起来;数据扩充移位器,可将所述第1全加器和所述第2全加器的输出数据作输入,进行数据扩充及数据移位工作;行波进位加法器,将上述第1、第2寄存器所存储的上述每一位的进位C和上述每一位的和S作输入来进行行波进位加法运算,并将该结果输出到上述第3寄存器中;第3选择器,选择并输出所述第3寄存器所存储的数据和零数据中之一;第4选择器,选择并输出所述行波进位加法器的输出数据和零数据中之一;第3全加器,将所述数据扩充移位器的输出数据、所述第4选择器的输出数据、所述第3选择器的输出数据作输入来将其全部都加起来,并将每一位的进位C和每一位的和S分别输入所述第1寄存器和第2寄存器。
按照上述结构,能够在电路规模得以减小的情况下进行步骤数少的乘积累加运算。此外,通过转换移位器的控制方式,既可并列地进行多个乘积累加运算,又可在电路规模得以减小的情况下,对位数等于或者多于乘法器的输入位数的被乘数进行乘法运算。
还有,本发明的第6方面所采取的运算方法是将分别由n个互相独立的M位部分数据构成的(n×M)位数据X和数据Y作输入,来计算出一个独立的数据Z的运算方法,其中包括以下几个步骤对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算以求乘积的乘法步骤;对在所述乘法步骤中所求得的乘积,分别进行移位的移位步骤;将在所述移位步骤中所求得的值进行加法运算以求和的加法步骤,在要求出所述乘法步骤中所求得的n个乘积的总和来作所述数据Z的情况下,在所述移位步骤中不进行移位工作;在要分别求出所述乘法步骤中的n个乘积来作所述数据Z的情况下,在所述移位步骤中,将所述n个乘积位移到互相不重叠的数字位置。
按照第6方面的发明,能够进行步骤数得以减少的乘加运算。
并且,本发明的第7方面所采取的运算方法是将分别由n个互相独立的M位部分数据构成的(n×M)位数据X和数据Y作输入,来计算出一个独立的数据Z的运算方法,其中包括以下几个步骤对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算来求乘积的乘法步骤;将所述乘法步骤中所求得的n个乘积进行加法运算来求和的加法步骤;多次循环输入所述数据X和所述数据Y,在所述加法步骤中所求得的和进行乘积累加运算的乘积累加步骤。
按照第7方面的发明,能够在电路规模的增大得以抑制的情况下实现乘加运算。
还有,本发明的第8方面所采取的运算方法是将分别由n个互相独立的M位部分数据构成的(n×M)位的数据X和数据Y作输入,来计算出一个独立的数据Z的运算方法,其中包括以下几个步骤对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算来求乘积的乘法步骤;对在所述乘法步骤中所求得的乘积,分别进行移位的移位步骤;将在所述移位步骤中所求得的值加在一起,来求和的加法步骤;多次循环输入所述数据X和所述数据Y,在所述加法步骤中所求得的和进行乘积累加运算的乘积累加步骤。在要求出所述乘法步骤中所求得的n个乘积的累加和的总和来作所述数据Z的情况下,在所述移位步骤中不进行移位工作;在要分别求出所述乘法步骤中所求得的n个乘积的累加和来作所述数据Z的情况下,在所述移位步骤中,将所述n个乘积位移到互相不重叠的数字位置。
按照第8方面的发明,能够实现步骤数得以减少的乘积累加运算。
下面,对本发明中的附图作简要说明。
图1是本发明的实施例所涉及的运算装置的结构图。
图2是本发明的实施例所涉及的数据扩充移位器的详细结构图。
图3是本发明的实施例所涉及的第3全加器的详细结构图。
图4是本发明的实施例所涉及的行波进位加法器的详细结构图。
图5是用图1的运算装置所进行的乘加运算的说明图。
图6是用图1的运算装置所进行的乘加运算的时间图。
图7是用图1的运算装置所进行的对偶乘加运算的说明图。
图8是用图1的运算装置所进行的对偶乘加运算的时间图。
图9是用图1的运算装置所进行的乘法运算的说明图。
图10是用图1的运算装置所进行的乘法运算的时间图。
图11表示在图1的运算装置中所进行的各种运算。
图12是以往的寄存器分割运算器的结构图。
图13表示乘加运算中的数组元素。
下面,参照附图将本发明的实施例加以说明。
图1是本发明的一实施例所涉及的运算装置的结构示意图。图1中,X和Y分别是由两个互相独立的16位数据所构成的32位输入数据,Z是64位累加数据。S及C是在运算中把每一位之和及进位分别收集起来而构成的64位中间数据。使用中间数据S、C的理由是在重复进行加法运算的情况下,加法效率之好坏,与其每次求出所有位之和,不如先一位一位地求和及进位,最后求出所有位的加法结果。布斯(Booth)译码器511、512分别对XU、XL进行译码,并输出其结果。选择器521、522选择并输出YU和YL中之一。部分积发生器531将第1译码器511的输出数据和由第1选择器521所选择的数据作输入,产生并输出乘法的部分积。部分积发生器532将第2译码器512的输出数据和由第2选择器522所选择的数据作输入,产生并输出乘法的部分积。全加器541、542分别将由第1、第2部分积发生器531、532所产生的部分积都加起来,并输出该结果。数据扩充移位器55将第1、第2全加器541、542的输出数据作输入,进行数据扩充及数据移位工作,并输出其结果。第3选择器523选择并输出“0”和第3寄存器59所存储的数据Z中之一,第4选择器524选择并输出“0”和行波进位加法器58的输出(S+C)中之一。全加器56将通过数据扩充移位器55被扩充、移位的数据和第3、第4选择器523、524所选择的数据作输入来进行全加运算,并输出64位中间数据C、S。寄存器571、572存储第3全加器56的输出数据C和S。行波进位加法器58将第1、第2寄存器571、572所存储的数据C和数据S作输入来进行行波进位加法运算,并输出结果数据(S+C)。寄存器59存储行波进位加法器58的输出。
图2示出数据扩充移位器55的详细结构。同图中,数据扩充部61由数据扩充器611~614构成,它对输入数据进行符号扩充或者零扩充,并输出其结果。数据移位部62由数据移位器621~624构成,它将数据扩充部的输出数据作输入,进行数据移位,并输出其结果。同图中,SFT1.0~SFT4.0分别是数据移位器621~624的输出数据。
图3示出第3全加器56的详细结构。同图中,全加器72将数据移位器621~624的输出数据SFT1.0~SFT4.0的低位32位、第3选择器523的输出数据SEL1.0的低位32位和第4选择器524的输出数据SEL2.0的低位32位作输入,来进行全加运算。选择器73选择并输出第4全加器72的溢出信号和“0”中之一。控制信号CTRL50为“H”时,第5选择器73选择第4全加器72的溢出信号并输出到第5全加器71中;为“L”时,选择“0”并输出到第5全加器71中。全加器71将数据移位器621~624的输出数据SFT1.0~SFT4.0的高位32位、第3选择器523的输出数据SEL1.0的高位32位、第4选择器524的输出数据SEL2.0的高位32位和第5选择器73的输出数据作输入,来进行全加运算。图3中,CU和SU是第5全加器71的输出数据,CL和SL是第4全加器72的输出数据。
图4示出行波进位加法器58的详细结构。
同图中,行波进位加法器82将在第1、第2寄存器571、572的低位32位中所存储的CL和SL作输入来进行行波进位加法,并输出其结果。选择器83选择并输出行波进位加法器82的溢出信号和“0”中之一。控制信号CTRL 50为“H”时,第6选择器83选择行波进位加法器82的溢出信号并输出到行波进位加法器81中;为“L”时,选择“0”并输出到行波进位加法器81中。行波进位加法器81将在第1、第2寄存器571、572的高位32位中所存储的CU、SU及第6选择器83的输出数据作输入来进行行波进位加法,并输出其结果。
以下,说明按上述所构成的运算装置的动作。
(1)关于由被分为二个的输入数据来求一个独立的累加数据的运算动作进行说明。下面,对将图13所示的数组元素作输入以求(x0·y0+x1·y1+x2·y2+…+x2n-2·y2n-2+x2n-1·y2n-1)的运算加以说明。这里,要说明的是带符号的乘加运算。此时,假定控制信号CTRL50为“H”来进行运算。
图1中,在第一个周期,由于第1选择器521选择YU,第2选择器522选择YL,因此,第1部分积发生器531产生用以求XU·YU的部分积,第2部分积发生器532产生用以求XL·YL的部分积。第1全加器541将在第1部分积发生器531中所产生的部分积都加起来,并输出运算XU·YU中的两个32位中间数据。同样地,第2全加器542输出运算XL·YL中的两个32位中间数据。
来自第1全加器541的两个32位中间数据被输入到数据扩充移位器55的数据扩充器611、612中而用表示符号的数据扩充到64位。通过数据扩充器611、612被加以符号扩充的数据,再被输入到数据移位器621、622中。数据移位器621、622不进行数据移位,而输出运算XU·YU中的两个64位中间数据。
同样地,来自第2全加器542的两个32位中间数据被输入到数据扩充移位器55的数据扩充器613、614中而用表示符号的数据扩充到64位。通过数据扩充器613、614而被加以符号扩充的数据,再被输入到数据移位器623、624中。数据移位器623、624不进行数据移位,而输出运算XL·YL中的64位中间数据。
第4选择器524选择“0”,第3选择器523选择存储在第3寄存器59中的64位数据Z,从而输出到第3全加器56中。
第3全加器56将数据扩充移位器的输出SFT1.0~SFT4.0和第3、第4选择器523、524的输出SEL1.0、SEL2.0作输入,进行全加运算。此时,由于控制信号CTRL50为“H”,所以第4全加器72的溢出信号被输入到第5全加器71中,而在64位全加运算中,溢出信号从第31位传播到第32位。
从而,如图5所示,第3全加器56输出乘加运算(XU·YU+XL·YL+Z)中的两个64位中间数据C和S。
该64位中间数据C和S分别被存储到第1、第2寄存器571、572中。
在第二个周期,行波进位加法器58将存储在第1、第2寄存器571、572中的两个64位中间数据C和S作输入,来进行行波进位加法运算。此时,由于控制信号CTRL50为“H”,所以行波进位加法器82的溢出信号被输入到行波进位加法器81中,而在64位行波进位加法运算中,溢出信号从第31位传播到第32位。
从而,如图5所示,行波进位加法器58输出乘加运算(XU·YU+XL·YL+Z)的结果。第3寄存器59存储行波进位加法器58所输出的数据。
如上所述,运算装置可将由两个16位数据构成的32位数据X和Y作输入来进行乘加运算,从而,能够在两个周期内求得一个64位累加数据(如图6所示)。
因此,运算装置仅将图13所示的数组元素作输入来执行N次乘加运算,即可求出(x0·y0+x1·y1+x2·y2+…+x2n-2·y2n-2+x2n-1·y2n-1),不用进行以往的运算装置所必需的数据传送和数据加法运算。
(2)关于由被分为两个的输入数据求出两个独立的累加数据的运算动作进行说明。下面,叙述将由两个16位数据构成的32位数据X和Y作输入来进行运算而在两个周期内求出两个32位累加数据的情况(如图8所示)。这里,要说明的是带符号的对偶乘加运算。此时,假定控制信号CTRL50为“L”来进行运算。
图1中,在第一个周期,由于第1选择器521选择YU,第2选择器522选择YL,因此,第1部分积发生器531产生用以求XU·YU的部分积,第2部分积发生器532产生用以求XL·YL的部分积。第1全加器541将在第1部分积发生器531中所产生的部分积都加起来,并输出运算XU·YU中的两个32位中间数据。同样地,第2全加器542输出运算XL·YL中的两个32位中间数据。
来自第1全加器541的两个32位中间数据被输入到数据扩充移位器55的数据扩充器611、612中而用“0”扩充到64位。通过数据扩充器611、612被加以零扩充的数据,再被输入到数据移位器621、622中。数据移位器621、622执行32位左移,并输出运算(XU·YU)<<32中的两个64位中间数据。
同样地,来自第2全加器542的两个32位中间数据被输入到数据扩充移位器55的数据扩充器613、614中而用“0”扩充到64位。通过数据扩充器613、614而被加以零扩充的数据,再被输入到数据移位器623、624中。数据移位器623、624不进行数据移位,而输出运算XL·YL中的两个64位中间数据。
第4选择器524选择“0”,第3选择器523选择存储在第3寄存器59中的64位数据Z,从而输出到第3全加器56中。
第3全加器56将数据扩充移位器的输出SFT1.0~SFT4.0和第3、第4选择器523、524的输出SEL1.0、SEL2.0作输入,进行全加运算。此时,由于控制信号CTRL50为“L”,所以“0”数据被输入到第5全加器71中,而在64位全加运算中,溢出信号不从第31位传播到第32位。
从而,如图7所示,第3全加器56输出高位32位代表运算XU·YU+ZU、低位32位代表运算XL·YL+ZL的中间数据C和S。64位中间数据C和S分别被存储到第1、第2寄存器571、572中。
在第二个周期,行波进位加法器58将存储在第1、第2寄存器571、572中的两个64位中间数据C和S作输入,来进行行波进位加法运算。此时,由于控制信号CTRL50为“L”,所以“0”数据被输入到行波进位加法器81中,而在64位行波进位加法运算中,溢出信号不从第31位传播到第32位。
从而,如图7所示,行波进位加法器58将运算(XU·YU+ZU)的结果作高位32位输出,将运算(XL·YL+ZL)的结果作低位32位输出。第3寄存器59存储行波进位加法器58所输出的数据。
如上所述,运算装置可将由两个16位数据构成的32位数据X和Y作输入来进行运算,从而,能够在两个周期内求出两个32位累加数据(如图8所示)。
(3)关于未被分割的输入数据的运算动作加以说明。下面,叙述将32位数据X和Y作输入,以求64位乘积的情况。这里,要说明的是带符号的乘法运算。此时,假定控制信号CTRL50为“H”来进行运算。
图1中,在第一个周期,由于第1选择器521选择YU,第2选择器522选择YL,因此,第1部分积发生器531产生用以求XU·YU的部分积,第2部分积发生器532产生用以求XL·YL的部分积。第1全加器541将在第1部分积发生器531中所产生的部分积都加起来,并输出运算XU·YU中的两个32位中间数据。同样地,第2全加器542输出运算XL·YL中的两个32位中间数据。
来自第1全加器541的两个32位中间数据被输入到数据扩充移位器55的数据扩充器611、612中而用表示符号的数据扩充到64位。通过数据扩充器611、612被加以符号扩充的数据,再被输入到数据移位器621、622中。数据移位器621、622执行32位左向算术移位,并输出运算(XU·YU)<<32中的两个64位中间数据。
同样地,来自第2全加器542的两个32位中间数据被输入到数据扩充移位器55的数据扩充器613、614中而用表示符号的数据扩充到64位。通过数据扩充器613、614而被加以符号扩充的数据,再被输入到数据移位器623、624中。数据移位器623、624不进行数据移位,而输出运算XL·YL中的两个64位中间数据。
再就是,第3、第4选择器523、524选择“0”,从而输出到第3全加器56中。
第3全加器56将数据扩充移位器的输出SFT1.0~SFT4.0和第3、第4选择器523、524的输出SEL1.0、SEL2.0作输入,进行全加运算。此时,由于控制信号CTRL50为“H”,所以第4全加器72的溢出信号被输入到第5全加器71中,而在64位全加运算中,溢出信号从第31位传播到第32位。
从而,如图9所示,第3全加器56输出乘加运算(((XU·YU)<<32)+XL·YL)中的两个64位中间数据C和S。
64位中间数据C和S分别被存储到第1、第2寄存器571、572中。
在第二个周期,行波进位加法器58将存储在第1、第2寄存器571、572中的两个64位中间数据C和S作输入,来进行行波进位加法运算。此时,由于控制信号CTRL50为“H”,所以行波进位加法器82的溢出信号被输入到行波进位加法器81中,而在64位行波进位加法运算中,溢出信号从第31位传播到第32位。
从而,如图9所示,行波进位加法器58输出乘加运算(((XU·YU)<<32)+XL·YL)的结果。
还有,由于第1选择器521选择YL,第2选择器522选择YU,因此,第1部分积发生器531产生用以求XU·YL的部分积,第2部分积发生器532产生用以求XL·YU的部分积。第1全加器541将在第1部分积发生器531中所产生的部分积都加起来,并输出运算XU·YL中的两个32位中间数据。同样地,第2全加器542输出运算XL·YU中的两个32位中间数据。
来自第1全加器541的两个32位中间数据被输入到数据扩充移位器55的数据扩充器611、612中而用表示符号的数据扩充到64位。通过数据扩充器611、612被加以符号扩充的数据,再被输入到数据移位器621、622中。数据移位器621、622执行16位左向移位,并输出运算(XU·YL)<<16中的两个64位中间数据。
同样地,来自第2全加器542的两个32位中间数据被输入到数据扩充移位器55的数据扩充器613、614中而用表示符号的数据扩充到64位。通过数据扩充器613、614而被加以符号扩充的数据,再被输入到数据移位器623、624中。数据移位器623、624执行16位左向移位,并输出运算(XL·YU)<<16中的两个64位中间数据。
第4选择器524选择行波进位加法器58的输出,第3选择器523选择“0”,从而输出到第3全加器56中。
第3全加器56将数据扩充移位器的输出SFT1.0~SFT4.0和第3、第4选择器523、524的输出SEL1.0、SEL2.0作输入,进行全加运算。此时,由于控制信号CTRL50为“H”,所以第4全加器72的溢出信号被输入到第5全加器71中,而在64位全加运算中,溢出信号从第31位传播到第32位。
从而,如图9所示,第3全加器56输出运算(((XU·YU)<<32)+XL·YL)+(((XU·YL)<<16)+((XL·YU)<<16))中的两个64位中间数据C和S。64位中间数据C和S分别被存储到第1、第2寄存器571、572中。
在第三个周期,行波进位加法器58将存储在第1、第2寄存器571、572中的两个64位中间数据C和S作输入,来进行行波进位加法运算。此时,由于控制信号CTRL50为“H”,所以行波进位加法器82的溢出信号被输入到行波进位加法器81中,而在64位行波进位加法运算中,溢出信号从第31位传播到第32位。
从而,如图9所示,行波进位加法器58输出运算(((XU·YU)<<32)+XL·YL)+(((XU·YL)<<16)+((XL·YU)<<16))即乘法运算X·Y的结果。
如上所述,运算装置可将32位数据X和Y作输入来进行乘法运算,从而,能够在三个周期内求出64位的乘积(如图10所示)。
再就是,图1所示的运算器,除了上述运算以外,还能进行各种运算。
图11示出所述各种运算及其控制。同图中,第1~第4选择器521~524栏表示被选择的数据,移位器621~624栏表示移位量及方向。m<<表示m位左移,m>>表示m位右移。S+C是行波进位加法器58的输出。
选择器和移位器属于二级流水线运算器的第一级,因此,图11中,关于二周期运算所示出的是第一个周期的控制情况;关于三周期运算,示出的是第一个周期和第二个周期的控制情况。
值得一提的是,图1中,将第3、第4选择器523、524的输出输入到第3全加器56中,但是,将其输入第1、第2全加器541、542也可得到同样的结果。
需提一下,图1所示的运算装置具有二级流水线结构,但是,采用多级流水线结构,也可得到同样的结果。
另外,在本实施例中,将寄存器分为两部分,将被分为两部分的数据作输入来进行运算,但是,将被分为两个以上的数据作输入,也可获得同样的结果。
-效果-综上所述,若按照本发明,能够得到以下的有利的效果即使在由被分割的多个输入数据求出一个独立的累加数据的运算中,也不用进行数据传送、数据加法运算处理。此外,还能进行图11所示的各种运算。
总之,本发明的运算装置及运算方法有用于图像处理或者音频处理等,又可适用于包括这些处理的多媒体数据处理。
权利要求
1.一种运算装置,其为将分别由n个互相独立的M位部分数据构成的(n×M)位的数据X和数据Y作输入,并输出一个独立的数据Z的运算装置,其中包括对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算的第1到第n个乘法器;可对所述第1到第n个乘法器的输出分别进行移位的第1到第n个移位器;和将所述第1到第n个移位器的输出都加起来的加法器,所述第1到第n个移位器进行以下的控制在要求出所述第1到第n个乘法器的输出之总和来作所述数据Z的情况下,不进行移位;在要分别求出所述第1到第n个乘法器的输出来作所述数据Z的情况下,将所述第1到第n个乘法器的输出位移到互相不重叠的数字位置。
2.一种运算装置,其为将分别由n个互相独立的M位部分数据构成的(n×M)位的数据X和数据Y作输入,并输出一个独立的数据Z的运算装置,其中包括可存储所述数据Z的寄存器;对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算的第1到第n个乘法器;将所述第1到第n个乘法器和所述寄存器的输出都加起来并将该结果输入所述寄存器的加法器,将多次循环输入的所述数据X和所述数据Y进行乘积累加运算。
3.一种运算装置,其为将分别由n个互相独立的M位部分数据构成的(n×M)位的数据X和数据Y作输入,并输出一个独立的数据Z的运算装置,其中包括可存储所述数据Z的寄存器;对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算的第1到第n个乘法器;可对所述第1到第n个乘法器的输出分别进行移位的第1到第n个移位器;将所述第1到第n个移位器和所述寄存器的输出都加起来并将该结果输入所述寄存器的加法器,在要用多次循环输入的所述数据X和所述数据Y来进行乘积累加运算的情况下,所述第1到第n个移位器进行以下的控制在要求出所述第1到第n个乘法器的乘积的累加和的总和来作所述数据Z时,所述移位器不进行移位;在要分别求出所述第1到第n个乘法器的乘积的累加和来作所述数据Z时,所述移位器将所述第1到第n个乘法器的输出位移到互相不重叠的数字位置。
4.一种运算装置,其为将分别由n个M位部分数据构成的(n×M)位的数据X和数据Y作输入,并输出数据Z的运算装置,其中包括可存储所述数据Z的寄存器;从构成所述数据Y的n个部分数据中选择一个的选择器;从构成所述数据X的n个部分数据中取出互相不重叠的一个,并乘以所述选择器的输出的第1到第n个乘法器;可对所述第1到第n个乘法器的输出分别进行移位的第1到第n个移位器;将所述第1到第n个移位器和所述寄存器的输出都加起来并将该结果输入所述寄存器的加法器,在第p次循环中,所述选择器选择从低位数起第p个所述部分数据,从低位数起第q个移位器进行(p+q-2)M位的移位控制。
5.一种运算装置,其为将2M位的数据X和数据Y作输入,并输出4M位数据Z的运算装置,其中包括第1寄存器,存储在加法运算中所产生的每一位的进位C;第2寄存器,存储在加法运算中所产生的每一位的和S;第3寄存器,存储所述数据Z;第1译码器,将所述数据X的高位M位作输入并进行译码;第2译码器,将所述数据X的低位M位作输入并进行译码;第1、第2选择器,选择所述数据Y的高位M位和低位M位中之一;第1部分积发生器,将所述第1译码器的输出数据及所述第1选择器的输出数据作输入,来产生乘加运算的部分积;第2部分积发生器,将所述第2译码器的输出数据及所述第2选择器的输出数据作输入,来产生乘加运算的部分积;第1全加器,将由所述第1部分积发生器所产生的部分积加起来;第2全加器,将由所述第2部分积发生器所产生的部分积加起来;数据扩充移位器,可将所述第1全加器和所述第2全加器的输出数据作输入,进行数据扩充及数据移位工作;行波进位加法器,将上述第1、第2寄存器所存储的上述每一位的进位C和上述每一位的和S作输入来进行行波进位加法运算,将该结果输出到上述第3寄存器中;第3选择器,选择并输出所述第3寄存器所存储的数据和零数据中之一;第4选择器,选择并输出所述行波进位加法器的输出数据和零数据中之一;第3全加器,将所述数据扩充移位器的输出数据、所述第4选择器的输出数据、所述第3选择器的输出数据作输入来将其全部都加起来,并将每一位的进位C和每一位的和S分别输入所述第1寄存器和第2寄存器。
6.一种运算方法,其为将分别由n个互相独立的M位部分数据构成的(n×M)位数据X和数据Y作输入,来计算出一个独立的数据Z的运算方法,其中包括以下几个步骤对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算以求乘积的乘法步骤;对在所述乘法步骤中所求得的乘积,分别进行移位的移位步骤;将在所述移位步骤中所求得的值进行加法运算以求和的加法步骤,在要求出所述乘法步骤中所求得的n个乘积的总和来作所述数据Z的情况下,在所述移位步骤中不进行移位工作,在要分别求出所述乘法步骤中的n个乘积来作所述数据Z的情况下,在所述移位步骤中,将所述n个乘积位移到互相不重叠的数字位置。
7.一种运算方法,其为将分别由n个互相独立的M位部分数据构成的(n×M)位数据X和数据Y作输入,来计算出一个独立的数据Z的运算方法,其中包括以下几个步骤对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算来求乘积的乘法步骤;将所述乘法步骤中所求得的n个乘积进行加法运算来求和的加法步骤;多次循环输入所述数据X和所述数据Y,在所述加法步骤中所求得的和进行乘积累加运算的乘积累加步骤。
8.一种运算方法,其为将分别由n个互相独立的M位部分数据构成的(n×M)位数据X和数据Y作输入,来计算出一个独立的数据Z的运算方法,其中包括以下几个步骤对所述数据X和所述数据Y中位于同一数字位置的所述部分数据进行乘法运算来求乘积的乘法步骤;对在所述乘法步骤中所求得的乘积,分别进行移位的移位步骤;将在所述移位步骤中所求得的值加在一起,来求和的加法步骤;多次循环输入所述数据X和所述数据Y,在所述加法步骤中所求得的和进行乘积累加运算的乘积累加步骤,在要求出所述乘法步骤中所求得的n个乘积的累加和的总和来作所述数据Z的情况下,在所述移位步骤中不进行移位工作,在要分别求出所述乘法步骤中所求得的n个乘积的累加和来作所述数据Z的情况下,在所述移位步骤中,将所述n个乘积位移到互相不重叠的数字位置。
全文摘要
本发明的目的是提供一种可执行乘积累加运算的运算装置,其中,即使在要由被分割的多个输入数据获得一个结果的情况下,也不用进行数据传送和数据加法运算,处理周期数也少。输入数据X和Y,通过第1译码器511、第1选择器521、第1部分积发生器531和第1全加器541来计算出X和Y当中高位部分间之乘积,又通过第2译码器512、第2选择器522、第2部分积发生器532和第2全加器542来计算出X和Y当中低位部分间之乘积,再通过移位器55对所述运算结果进行适当的移位控制,然后通过第3全加器56和行波进位加法器58,和所反馈的数据Z加在一起,就这样获得乘积累加运算的结果数据Z。
文档编号G06F7/52GK1288545SQ99802266
公开日2001年3月21日 申请日期1999年1月21日 优先权日1998年1月21日
发明者鹿子木朋睦, 中岛雅逸 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1