一种高速乘法器 本发明涉及一种乘法器及除法器,特别是一种用于计算机中心处理单元(CPU)及各种数字信号处理中的运算器。
目前的乘法器电路实现二个n位整数相乘时,技术上采用移位__加的算法,做n次加法与n次位移,是一种最慢最简单的乘法器。有许多改进方案,例如欧州专利0534760″高速乘法装置″,不是由乘数一位位的决定移位__加,而是按乘数编码组决定被乘数的位移__加。美国专利4769780″高速乘法器″根据一次4比特(16进制)的乘数决定被乘数的位移__加,得出部分和,直到做完4次(64比特),用高阶基数作位的计算单位,但仍是串行计算。大规模并行计算中的阵列乘法器,将问题化为一个矩阵部份积产生器和一个加法阵列,其实现上有各种方案。例如进位保存阵列加法方案(CSA),有n2个与门细胞元,得出n2个部分积后一位位阵列相加,CSA相加采用Wallace树的CSA互连结构,减少部份积为2个操作数,尽可能并行处理,是技术上最快的一种算法之一。各种Wallace树的改进,如美国专利申请NO653053和美国专利4799183″具有并行进位保留加法树的矢量乘法器″将乘数分成4个16比特的组,分别同被乘数64比特相乘,每级流水用较多时间执行16×64。这类分组并行的组越多,级数越多,每级用时少,流水长。反之,每组用时多,流水线短,当n大时尤为突出。现有的乘法器技术都是一次将n位操作数全部存入操作数寄存器才能进行运算。进行多级连续相乘,必须等待上级运算的全部2n位乘积全都出来才能开始下级。目前整数定点运算电路精度高、运算快,但是数的动态范围小。传统上浮点数表示数的动态范围大但却影响精度。技术上实现多个部份积相加时,进位由最低位向高位推进过程经历较多进位延迟。这种串行进位的时间与位数n成比例增长。
发明的主要目的在于提供一种达到操作数局部并行相乘,部份积的高位、低位、低到高的进位并行相加,流水得到部份高位乘积,循环得到全部积的乘法器;利用单乘法器多级串联能够顺序流水处理多级连乘提高运算速度;不限定操作数长度,运算过程可仅仅处理高位数据、舍弃任意的低位操作即可以加快运算,又可以达到浮点动态范围大优点地定点乘法器。
发明的又一目的在于提供一种基于单乘法器的大规模并行乘法装置,把上述单乘法器多重并行设置,对所有部份积达到并行相加和进位,以达到比传统相加更快速地得到乘积。
发明的又一目的在于提供一种基于乘法电路加少部份辅助电路单元进行除法的除法器,按乘法过程并行执行除数乘以全部可能商(试商),比较其乘积和被除数确定商,循环求得所需精度的高速运算除法器。
本发明的目的可以通过以下措施来达到:
本发明的乘法器由两n比特寄存器RA(被乘数)、RB(乘数)、操作数输入电路、阵列乘法单元、部分积加法CSA树电路、2n比特寄存器RC(乘积)组成。
操作数输入电路由m个k比特被乘数寄存器、m个k比特乘数寄存器组成。
阵列乘法单元由m个k比特积产生单元、m个高位进位保留加法器CSA、m个低位进位保留加法器CSA、m个进位锁存器组成;或者由m个k比特直接乘单元组成。
部分积加法CSA树电路由一个m端CSA树、另一个同样结构的CSA树、一m+1端CSA加法树、一个移位累加器、一k端与非门组成;或者由一个m端CSA树、另一个同样结构的CSA树、一m端CSA加法树、3端CSA加法器、一个移位累加器、一k端与非门组成;或者由一个m端CSA树、另一同样结构的CSA树、两个加法器、一个移位累加器、一k端与非门组成。
寄存器RA、RB将操作数按每个时钟节拍由高到低顺序输出到操作数输入电路,整个乘法过程共进行2m-1次;
操作数输入电路按同样的节拍、顺序、数据长度接收RA、RB的数据,将每K比特的被乘数与所有的K比特乘数配对,输出到阵列整个乘法过程共进行2m-1次,每次分别配对1、2、---、m、---、1对;
阵列乘法单元按同样的节拍、顺序、数据长度将操作数输入电路的配对数据相乘,生成的比特积项分高位、低位相加,得出1或m个k比特的高、低位部份积送到部份积加法CSA树,整个乘法过程共进行2m-1次;
部份积加法CSA树电路按同样的节拍、顺序将阵列乘法单元送来的1-m个k比特高位部份积、低位部份积,或者连同它们之间进位同时相加,输出最高k比特乘积到寄存器RC,整个乘法过程中一共进行2m-1次;
寄存器RC按同样的节拍、顺序接收部份积加法CSA树送来的高位的k比特乘积,左移k比特后准备下次接收低位的乘积,整个乘法过程共进行2m次;
本发明乘法器将两个相乘的n比特操作数通过二个寄存器,按高到低顺序各取k比特送1-m个比特积产生单元。得到部份积输入两进位保留加法器CSA--高位CSA和低位CSA--中相加。两部份和--高位和低位--分别于高位CSA树和低位CSA树相加,结果与m个进位锁存中的值于进位CSA树中相加。输出和与高位CSA树的和直接于移位累加器内累加并左移k比特输出一高位到乘积寄存器(1位=k比特,下同)。第一高位积将于此过程进行常数a次后,k端与非门根据输入是否为全″1″,由移位累加器左移k比特输出到乘积寄存器。否则左移后不输出,直到当k端与非门满足条件时移位累加器左移输出a*k比特之前的所有积。常数a受操作数位数m限制:当m=16,a=3;当m=256,a=4。乘法器可对任意小于m位的两操作数m1、m2相乘,这种情况下乘法的计算少进行(m-m1)*(m-m2)项,省略2m-(m1+m2)位乘积运算,提前得出乘积。
或者三个部份和--高位、低位、进位--分别于高位CSA、低位CSA树、进位CSA树中相加。三个的和输出直接于3端CSA加法器相加,相加的进位与高位CAS进位于另一加法器相加。三个和直接送移位累加器累加并左移k比特,输出过程同上。
或者将两个相乘的n比特操作数通过两个寄存器RA、RB,并行送入k比特直接乘单元。一拍执行m个kxk。其高、低位积的和分别由高位CSA-H和低位CSA-L得到。高位和与低位进位于一加法器相加,相加的进位与高位CAS进位于另一加法器相加。三个和直接送移位累加器累加并左移k比特,输出过程同上。
本发明的更高速并行乘法装置由2m-1个上述单乘法、2m-2个加法器CSA、2m-2个部份和锁存器、2m-3个进位锁存器、2m-3个与门、2m-1个加法单元组成。
本发明的大规模更高速并行乘法装置将上述包含第二种部分积加法CSA树电路的乘法器重复设置2m-1个。其中各内含的阵列乘法单元数不等,分别为1、2、…、m、m-1、…、1。两操作数A、B各取k比特通过两寄存器RA、RB送入不同单元一步执行m2个Ai*Bj,产生低位积P2m及其它高位部份积。这些部份积经2m-2个加法器CSA相加一次,产生次低位积P2m-1,输出2m-3个k比特部份积P′2、---、P′2m-2到2m-3个和锁存器和2m-3个进位锁存器。2m-3个与门检测它们的值:全为″1″时,对高位有进位,再次相加,产生2m-3个低位积P2P3---P2m-2。如果产生所有低位积的过程对最高位有进位,再次加后得出最高位积P1。所有部份积仅仅经执行三次k比特加法,效率比并行相加串行进位提高近m/3倍,实现用一步(5拍)产生2m位乘积P=P1P2P3...P2m-1P2m。比单乘法少用2m-1步(拍)。
本发明的除法器由两个操作数寄存器(被除数、除数)、两个结果寄存器(商、余数)、一个辅助寄存器、w(w=2k,下同)个乘法器、w个试商发生器、w个减法器、一2k端比较器、一计数器、一比较器、一减1器组成。
本发明的除法器设置w个乘法器,除数寄存器、被除数寄存器存放操作数,商寄存器、余数寄存器存放结果,辅助寄存器存放精度控制参数。w个试商发生器每次产生O-w-1个可能商值。每次将已求出的前i-1个商结合第i个试商值与i位除数相乘,乘积由w个减法器被除数相减求得w个余数。w个比较器将找出余数集合中的最小正数对应的试商值作为商值。取下一位除数,循环求下一商;若余数集合全小于零,则减1器中将前i位商值减1,重新相乘、相减,直到余数得正数。循环到精度p位。这种基于高速乘法的除法运算,执行速度很快。将除数寄存器换成商寄存器的连接,除法时对两个寄存器的值同时减1。除法器能够求出被除数的开平方。
把本发明的单乘法器多重设置,第一个乘积寄存器输出直接与第二个的被乘数寄存器相连,第二个与第三个按同样方式,…直到连完。多操作数A、B、C、D…分别存放于第一、二、三、…个乘法器的乘数寄存器,可得到一种高效的连乘装置。
把本发明的上述单乘法器,增加两大数操作数寄存器、一输入控制逻辑、两累加器(第一、第二累加器)、一n端与非门、一大数乘积寄存器可构成一种任意字长、任意精度的乘法器。
本发明与现有技术相比具备如下效果:
由于本发明的乘法器采用每次部份操作数并行相乘,部份积的高、低位、进位并行相加,流水级少,每级时间短,速度快。由高到低得出一位位乘积,不影响高位的精度时舍弃任意低位的操作,能够赢得速度。可对大整数运算,以定点整数电路结构得到相当浮点的动态范围。把单乘法装置串联多级,能顺序流水处理多级连乘:A*B*C…,减少连乘间的数据相关度,提高连乘情况下总运算速度。基于单乘法器的大规模并行相乘的装置,一次对所有mz个操作数相乘,采用并行加法进位的手段以比传统并行相加串行进位快3倍的速度相加部份积,能够比单乘法器快数倍得到全部乘积。采用基于乘法器可对任意两小于m位的操作数相乘的特点,每次并行执行除数乘以试商,比较调整后确定k比特商、循环达到一定精度的除法器,电路筒单、高速。
附图的图例说明:图1.乘法器结构框图图2.乘法器电路图图3.部分积加法CSA树之二电路图图4.乘法器电路之二图图5.大规模并行乘法装置图图6.除法运算流程图图7.除法装置图
本发明的最佳实施方式:
下面结合附图进一步祥细解释本发明(实施方式中,n为操作数比特数,k为每位比特数,m=n/k 为位数。k∶m为1∶4或1∶2或1∶1或2∶1或4∶1。1∶1较合理,当n=64时,k可取8,则m为8,当n=32时,k可取4,则m为8):
如图1所示本发明乘法器将两个n比特寄存器RA(被乘数)1、RB(乘数)2的输出连接到操作数输入电路DATAIN3输入端,其输出连接到阵列乘法单元MUUNIT4输入端,后者又连接到部分积加法CSA树电路CSATREE5的输入端,其输出连接到2n比特寄存器RC(乘积)6的输入端。
如图2所示本发明乘法器电路图,将操作数输入电路3中寄存器RA1的输出按每组k比特由高到低顺序连接到m个k比特被乘数寄存器Ra7、9、11,将寄存器RB2的输出连接到乘数寄存器Rb8的输入端,寄存器Rb8的输出连接到寄存器Rb10的输出端,按此方式直到连完m个寄存器Rb12。第1对寄存器Ra7与Rb8连接到阵列乘法单元MUUNIT4的第1个比特积产生个单元MA13两输入端、第2对寄存器Ra9与Rb10连接到第2个比特积产生单元MA14输入、第m对寄存器Ra11与Rb12连接到第m个比特积产生单元MA15。m个k比特积产生单元MA13、MA14、MA15的k个高位比特积输出端连到对应的m个有k输入端的高位CSA:CSA16、17、18;k个低位比特积输出端连到m个有k输入端的低位CSA:CSA19、20、21。m个高位CSA的输出连到一个m端CSA树HCSA25;m个低位CSA连到另一同样结构的CSA树LCSA27。低位CSA19、20、21的进位输出连到m个进位锁存器CL22、23、24,后者输出与LCSA27输出共同连到一m+1端CSA加法器CCSA26的m+1个输入端,其输出与CSA树HCSA25的输出连到移位累加器SA29两操作数端。移位累加器SA29的输出连到乘积寄存器RC6的输入端。移位累加器SA29的接收当前数据的高端a*k比特(a对特定m为常数)之处输出k比特连到k输入与非门A28,后者的输出又反馈到它的控制输入端。
本发明乘法器操作数输入电路3的寄存器RA1按时钟节拍每次由高到低顺序输出k比特数据到m个寄存器Ra7、9、11。寄存器RB2每时钟节拍由高到低顺序输出k比特数据到寄存器Rb8,寄存器Rb8输出k比特到寄存器Rb10,最后传到寄存器Rb12。m对寄存器--Ra7与Rb8、Ra9与Rb10、Ra11与Rb12--按时钟节拍每次输出k比特数据到阵列乘法单元MUUINT4的m个k比特积产生单元MA13、MA14、MA15的输入。比特积产生单元MA13、14、15具有由n2个与门组成的相同结构。一拍执行n2个乘。设A、B为m位操作数(序号小的为高位端):A=A1A2…Am其中:Ai=ai1ai2…aip…aik为k比特1≤i≤mB=B1B2…Bm其中:Bj=bj1bj2…bjp…bjk为k比特1≤j≤m高位CSA16、17、18对2≤p+q≤k的那些比特积项aip*bjq相加,低位CSA19、20、21对k+1≤p+q ≤2k的积项aip*bjq相加。高位CSA16、17、18得高位部份积,低位CSA19、20、21得低位部份积。两数一拍内分别于HCSA25、LCSA27内相加,进位锁存器CL22、23、24的值与LCSA27的输出同一拍于CSA加法器CCSA26内相加。HCSA25的输出与CCSA26的输出在下一拍于移位累加器SA45与原有的值先后累加并左移k比特。第一高位积将于位移a次后输出最高k比特到乘积寄存器RC6;乘积寄存器RC6带左移功能,左移k比特后输入1位积;若k端与非门A28输出″0″,SA45、RC6仅仅左移但不输出,等下一循环当与非门A28满足条件(输出为″1″)时,移位累加器一次输出判断位(接收当前数据的高端a个k比特处)之前的所有位乘积。整个过程经3级流水。可在第3+a拍得出第一位积,以下每拍一位或者一拍多位,(视与非门A28是否满足条件)。这里每拍用时仅仅相当m个k比特进位保留加法器CSA的加法时间。共需3+a+2m-1拍得出全部2m位乘积。常数a与特定操作数位数m有关:当m<=16时,a=3;当m<=256时,a=4。它的意义是最高位输出延时a拍。假如n=64,k=8,则m=64/8=8,21拍得出128比特乘积;如n=16,k=4,则m=16/4=4,13拍得出32比特乘积。乘法器可对任意小于m位的两操作数m1、m2相乘,这种情况下乘法Ai*Bj(m1<i<=m,m2<j<=m,m1、m2不必相等)的计算少进行(m-ml)*(m-m2)项,省略2m-(m1+m2)位乘积运算,提前得出乘积。
如图3所示本发明的部分积加法CSA树电路之二,m端高CSA树HCSA25的和输出与低CSA树LCSA27的进位输出及CSA加法器CCSA30的输出连到CSA加法器CSA31的三个输入端,HCSA25的进位输出与CCSA31的进位输出连到加法器ADD32的两操作数端。其输出与CSA31、LCSA27的和输出共同连到移位累加器SA34的操作数端。移位累加器SA34的输出次商位连到一k输入与非门A33,其输出反馈到它的控制输入端。移位累加器SA34连到乘积寄存器RC6的输入端。
本发明乘法器的部分积加法CSA树电路之二的高、低位部份积之和,进位锁存器CL22、23、24的值之和分别由高位CSA树HCAS25、低位CSA树LCSA27、进位CSA树CCSA30于同一拍内于得到。HCSA25的和、LCSA27的进位、CCSA30的和于CSA加法器CSA31内相加。进位与HCAS25的进位在同一拍于加法器ADD32相加。其输出、CSA31与LCSA27的3k比特和输出于下一拍与移位累加器SA34中原有值累加后左移k比特。第一高位积将于位移a次后输出最高k比特到乘积寄存器RC6;乘积寄存器RC6带左移功能,左移k比特后输入1位积;若k端与非门A33输出″0″,SA34仅仅左移但不输出,等下一循环。
如图4所示本发明乘法器电路之二,将操作数输入电路3的输出连接到m个k比特直接乘单元MUL35、MUL36、MUL37的两输入端。其k比特高位积输出连到一个m端CSA树CSA-H38;k比特低位积连到另一个同样结构的CSA树CSA-L39。CSA-H38的和输出与CSA-L39的进位输出连到加法器AD-140的两输入端。后者与CSA-H38的进位输出连到加法器AD-241的两输入。CSA-L39、AD-140的和输出与AD-241的输出共同连到移位累加器SA34,移位累加器SA34的接收当前数据的高端a*k比特之处输出连到与非门A33,后者的输出又反馈到它的控制输入端。移位累加器SA34输出连到乘积寄存器RC6。
本发明的乘法器电路之二将两个相乘的n比特操作数通过两个寄存器RA1,RB2并行送入k比特直接乘单元MUL35、36、37。一拍执行m个kxk,其高、低位积的和分别由高位CSA-H38和低位CSA-L39得到。CSA-H38的和与低位CSA-L39的进位在一拍内于加法器AD-140内相加,相加的进位和CSA-H38的进位在同一拍内于加法器AD-241相加。AD-140、CSA-L39、AD-241的和输出在下一拍送移位累加器SA34。
如图5所示本发明的更高速并行乘法装置将将部分积加法CSA树电路之二(图3)组成的乘法器MU42中自ADD32、CSA31、LCSA27引出的低位输出k比特、3个乘法器MU43、46、47中自ADD32、CSA31、LCSA27引出二个和输出(2k比特,由左到右依次为高、低2位)以及2m-5个乘法器MU44、45中自ADD32、CSA31、LCSA27引出的三个和输出端(3k比特,由左到右依次为进、高、低3位)按图5示连到CSA加法器CSA51、52的二个、CSA48、49、50的三个输入端。2m-3个CSA加法器CSA48、49、50、51的和输出连到个2m-3个部份和锁存器SL53、54、55、56的输入,2m-3个CSA加法器CSA49、50、51、52的进位输出连接到2m-3个进位锁存器CL57、58、59、60的输入端。部份和锁存器SL53、54、55、56的输出端连接到2m-3个加法单元AD67、68、69、70的被加数端。进位锁存器CL57、58、59、60的输出端一方面连接到2m-3个加法单元AD67、68、69、70加数端;另一方面连到2m-3个判断与门61、62、63、64的输入端。判断与门62、63、64的输出又连到高一级的部份和锁存器SL53、54、55、71和进位锁存器CL57、58、59的控制端。2m-3个CSA加法器CSA48、49、50、51的和输出又连到2m-3个判断与门61、62、63、64另外的输入端。乘法器MU42高位输出k比特连到加法器AD65的被加数端,其加数端来自CSA加法器CSA48的进位输出端,AD65的和输出连到锁存器SL71的输入端,SL71输出连到加法器AD66的被加数,其加数来自判断与门61的输出。
本发明的更高速并行乘法装置的2m-1个乘法器中,每个所含的比特积产生单元数MA13、14、15不等,分别为1、2、…、m-1、m、m-1、…、2、1。操作数A、B按图示规律各取k比特送入不同比特积产生单元MA13、14、15。按图3所示本发明的部分积加法CSA树电路之二中ADD32、CSA31、LCSA27形成的k比特部份积送入加法器CSA48,按ADD32、CSA31、LCSA27形成的2k比特部份积送入加法器CSA48、49、51、52,按ADD32、CSA31、LCSA27形成的3k比特部份积送入加法器CSA48、49、50,仅进行一次k比特加法。直接产生低位积P2m-1、P2m,以及将2m-3个部份积P′2、P′3、…、P′2m-2输出到2m-3个部份和锁存器SL53、54、55、56输入端,部份积P′1由MU42的高k比特和CSA加法器CSA48的进位于加法器AD65相加得出,再送SL71;CSA加法器CSA49、50、51、52的后级到前级的进位输出到2m-3个进位锁存器CL57、58、59、60的输入端。2m-3个判断与门61、62、63、64根据2m-3个部份和锁存器SL53、54、55、56及进位锁存器CL57、58、59、60的值是否全″1″,决定是否向高一级进位;控制SL53、54、55、56、SL71以及CL57、58、59、60的控制端。输出到对应的2m-3个加法单元AD67、68、69、70,再进行一次k比特加法,产生2m-3位积P2P3---P2m-2。如果产生所有低位积的过程对最高位有进位,AD66再次加,得出最高位积P1。所有部份积仅仅经执行三次k比特加法,效率比并行相加串行进位提高近m/3倍,产生乘积P=P1P2P3...P2m-1P2m。实现一步(5拍)产生2m位乘积,比单乘法少用2m-1步(拍)。
如图6所示除法流程图,输入x位除数A=A1A2…Ax,y位被除数D=D1D2…Dy(x不必等于y)精度p(正整数)。初始化i=1商值B1=0,2k个可能试商B′ui=u(u为0、1、2、…、2k-1)。i位除数和i-1位商、一位(第i位)试商B′ui送入2k个乘法器并行相乘A1…Ai*B1…Bi-1B′ui得乘积C=C1C2…Ci-1C′ui,2k个余数R′ui=D1D2…Di-C1C2…Ci-1C′ui。若R′ui ≥0,找出最小的R′ui所用的试商--u(min),令商Bi=试商B′ui=u(min)及i+1-->i。取下一个Ai(若i=>n,Ai=″0″)和新试商B′ui=u(0、1、2、…、2k-1)。计算A1…Ai*B1…Bi-1B′ui;若不存在R′ui的正数,则(B1…Bi-1)-1-->B1…Bi-1,计算A1…Ai*B1…Bi-1B′ui,直到精度p为止。
如图7所示本发明的除法装置将除数寄存器RA72和商寄存器RB73、w(w=2k)个试商发生器IN75、IN76、IN77的输出端连到w个乘法器MUL78、MUL79、MUL80的被乘数和乘数输入端,w个乘法器MUL78、MUL79、MUL80的乘积输出端和被除数寄存器RD89的输出端分别连到w个减法器ST81、ST82、ST83的被减数和减数输入端。减法器ST81、ST82、ST83的差输出端连到一w端比较器MIN85的输入端。它的输出一个连到余数寄存器RR84,另一个连到商寄存器RB73,第三个连到一计数器ICONT86的输入端,第四个连到RA72、RB73的控制端。后者的输出连到比较器PCOM88的一个输入,精度寄存器RP87连到它的另一个输入端。比较器PCOM88的一个输出端连到除数寄存器RA72和商寄存器RB73的控制输入端。商寄存器RB73输出又连到减1器ST174输入端。它的输出连到商寄存器RB73数据输入端。
本发明的除法装置,将上述图2的乘法器设置2k个,每个乘法器不使用连到移位累加器SA29的接收当前数据高端a*k比特之处k输入与非门A28,并且SA29一次输出所有乘积。寄存器RA72和寄存器RD89存放除数和被除数,所求商B=B1B2…Bp(p为计算精度)存放商寄存器RB73中,所求余数R=R1R2…Rp存余数寄存器RR84。试商的w个可能值B′ui=0、1、2、…、2k-1,由w个试商发生器IN75、IN76、IN77产生并随商寄存器RB73已有商值一同输w个入乘法器MUL78、MUL79、MUL80的乘数输入端,其被乘数Ai来自寄存器RA72。假设已求出前i-1(第1个商值为″0″)个商值B1…Bi-1(2≤i≤p),求第i个商的过程如下:每次由寄存器RA72中取出新的一位Ai,与前i-1位除数,w个新试商B′ui结合前i-1位商由w个乘法器MUL78、MUL79、MUL80算出w个乘积C1C2…Ci-1 C′ui=A1…Ai*B1…Bi-1B′ui。用被除数D=D1D2…Di-1Di分别于w个减法器ST81、ST82、ST83减得w个余数R′ui的集合。经比较器MIN85对R′ui的集合找出其中最小大于或等于零的余数所对应的u(min)。输出一成功找到信号到除数寄存器RA72和商寄存器RB73的公共控制输入端,将此u(min)写到商寄存器RB73的最低一位。计数器ICONT86对位数参数i计数1次。如果余数R′ui都小于零,输出不成功信号到RA72和RB73的公共控制输入端,将RB73中的前i-1个值B1B2…Bi-1在减1器ST174减1。循环此过程直到比较器PCOM88在达到精度i=>p时输出停止信号到除数寄存器RA72和商寄存器RB73的公共控制输入端,使它们不再输出数据。由于乘法器可对任意小于m位并且不必是相等的两操作数相乘,位数越少时乘法过程短,试商基本不校正,最多一次,因此速度快,商寄存器RB73输出商B=B1B2…Bp,余数寄存器RR84输出余数R=D1…Dn-C1…Cp。
若将除数寄存器RA72亦换成商寄存器RB73的连接,即RA72的输出连接到试商发生器IN75、IN76、IN77的输出,输入连到RB73的输入,除法时同时对除数、商在减1器ST174中减1,则可进行被除数的开平方运算。
本发明的连乘装置将上述单乘法器设置多个。第一个乘法的乘积寄存器RC6输出直接与第二个的被乘数寄存器RA1相连,第二个与第三个按同样方式,…直到连完。多操作数A、B、C、D…分别存放于第一、二、三、…个乘法器乘数寄存器RB2中。当第一乘积寄存器RC6得到A*B的最高1位时,即启动第二个乘以C的最高1位,第一个A*B*C的最高位出来即运算A*B*C*D,整个过程为: 乘法级 运算 乘积
1 A*B C11C12…C1j…C1m
2 A*B*C C21C22…C2j…C2m
3 A*B*C*D C31C32…C3j…C3m
· … …
u A*B*C*D*… Cu1Cu2…Cuj…Cum。流水运算减少数据间的相关度,M级连乘能在(3+a)M拍得出第M级的一位乘积,其后每拍一位。(3+a)M+m-1拍完成每级m位精度,而单乘法需(3+a)M+(m-1)*M拍,且m与M越大,效率越高。
把本发明的单乘法器的操作数寄存器RA1、RB2的输入端连接到两大数寄存器的输出端。输入控制逻辑连接到大数寄存器的控制输入端,单乘法器的乘积寄存器RC6的输出端连接到第一累加器的输入端,第一累加器的输出端连接带移位功能的第二累加器的输入端,此移位累加器的接收当前数据的高端a′*k比特之处输出连到一n端与非门,后者输出又反馈到它的控制输入端。第二累加器的输出端连接到大数乘积寄存器的输入端。可将乘法器用于大整数、任意精度的操作数相乘。
将二待乘大整数A,B分为p(p>n)个n比特:
A=A1A2A3…Ap B=B1B7B3…Bp输入控制逻辑按规律每次从两大数寄存器存放A、B中取一对Ai、Bj(0≤i≤n,0≤j≤n),在单乘法器中执行Ai*Bj。每次乘积结果于第一累加器按以上规律累加1到p次如下:
i+j-1 取数Ai、Bj 累加次数
1 A1B1 1
2 A1B2 A2B1 2
3 A1B3 A2B2 A3B1 3
· … ·
n A1Bp A2Bp-1 A3Bp-2 ApB1 p
· … ·
2n ApBp 1输出一个2n比特部份积到二级累加器,累加并位移n比特,第一累加器复位零。为得到第一n比特高位积,当位移达到数a′时,与非门判断第二累加器的第2个n比特高位是否为2n-1,左移n比特,输出最高n比特积到大数乘积存器;否则累加并左移不输出。如此循环得出一位位n比特积。设置精度控制单元,可以在第q个(1≤q≤2p)n比特积时终止。结果表示为以2k为基:
P=P1P2…Pq*WzN-q其中:Pj为n比特积(1≤j≤q,W=2k)。这样便得到任意字长、任意精度的乘法运算。a′的意义是最高n比特输出延时a′拍(这里一拍得出n比特乘积)。a′与p的关系:
p=16时,a′=3;当p=256时,a′=4。