專利名稱:長整數(shù)乘法器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于相乘兩個長整數(shù)并與一第三長整數(shù)相加,再以第三長整數(shù)為模的方法和裝置。這種相乘必須在例如密碼處理器中密碼算法的實現(xiàn)期間被重復(fù)地執(zhí)行,這些密碼處理器例如可以是用于智能卡中的處理器。
在電子設(shè)備中越來越多地使用密碼算法建立一種快速有效地執(zhí)行長整數(shù)模乘的需要。例如,智能卡和許多其它電子設(shè)備使用多種密碼協(xié)議,例如RSA以及基于橢圓曲線和超橢圓計算的其它協(xié)議。作為一個基本的需求,所有這些協(xié)議有能力執(zhí)行R=X.Y+ZmodN形式的長整數(shù)模乘,盡管不經(jīng)常需要加Z。
通常,利用諸如RSA之類的協(xié)議,長整數(shù)X和Y是1024比特或者甚至是2048比特整數(shù),并且必須執(zhí)行乘法操作幾百次或幾千次以完成加密或解密操作。因此,期望實施這些操作的密碼設(shè)備能快速地執(zhí)行長整數(shù)乘法。
執(zhí)行這種長整數(shù)乘法的一個方面是將長整數(shù)分解為許多字并且以迭代過程連續(xù)將這些字相乘在一起,該迭代過程產(chǎn)生連續(xù)的中間結(jié)果,累積這些中間結(jié)果以獲得最終結(jié)果。這個技術(shù)的一個特征是必須在乘法過程的每個階段期間求和很多不同長度的加數(shù)。因此,對于任何給定比特位置的加數(shù)的數(shù)目可以是顯著不同的。常規(guī)地,這種求和運算是通過Wallace樹來執(zhí)行,這些比特通常使用比期望更多的硬件,并引入比期望更多的延遲。
本發(fā)明的一個目的是提供一種用于盡可能快地實現(xiàn)長整數(shù)乘法操作的方法和裝置。
本發(fā)明的一個目的是提供一種更有效的方法和裝置,用于求和大量的加數(shù),特別是其中加數(shù)比特的數(shù)目作為總和中比特位置的函數(shù)而變化的情況。
在一種設(shè)置中,一種用于相乘兩個長整數(shù)的加法器電路使用加法器的網(wǎng)絡(luò),用于求和長整數(shù)的連續(xù)字以生成中間結(jié)果。加數(shù)的數(shù)目作為比特位置的函數(shù)而變化,并且根據(jù)預(yù)期加數(shù)的最大數(shù)目設(shè)計該加法器的網(wǎng)絡(luò)以減少網(wǎng)絡(luò)中加法器的級的數(shù)目。本發(fā)明的一個目的是調(diào)整該網(wǎng)絡(luò)從而包括作為比特位置的函數(shù)而變化的多個加法器。
在另一個設(shè)置中,可以提供一輸出級,其將和與表示中間結(jié)果的網(wǎng)絡(luò)進位輸出相加。本發(fā)明的一個目的是通過保留用于隨后網(wǎng)絡(luò)計算輸出的最高有效(進位)比特,從而避免將進位比特從這個輸出級送回網(wǎng)絡(luò)的延遲。
在另一設(shè)置中,本發(fā)明的一個目的是在完成前一個計算之前使網(wǎng)絡(luò)能夠利用一組新的加數(shù)開始后續(xù)計算。通過配置該加法器的網(wǎng)絡(luò)以便將前一個計算的輸出在一中間級反饋到該網(wǎng)絡(luò),其中該中間級位于最高(輸入)級和網(wǎng)絡(luò)最低(輸出)級之間。
根據(jù)一個方面,本發(fā)明提供一種用于求和來自多比特字的多個加數(shù)的加法器電路,包括n輸入進位保留加法器電路的網(wǎng)絡(luò),每個電路具有第一數(shù)目的和輸出和第二數(shù)目的進位輸出,該加法器電路排列在多列中,每列對應(yīng)和中的一個預(yù)定比特位置,并且按多級來排列,第一級接收來自多個字中的所選擇字的對應(yīng)比特位置的多個加數(shù),以及較低級中的每一級接收來自于下面各項中一個或多個的加數(shù)(i)多個字的其它所選擇字的對應(yīng)比特位置,(ii)來自同一列的較高級加法器電路的和數(shù)輸出,以及(iii)來自對應(yīng)較低有效比特位置的一列中的較高級加法器的進位輸出,其中每列中的n輸入加法器的數(shù)目根據(jù)比特位置而變化。
根據(jù)另一方面,本發(fā)明提供一種加法器電路,包括用于接收多個加數(shù)的輸入;第一求和裝置,用于對多個加數(shù)求和以產(chǎn)生包括高位(high order)部分以及第一和第二低位部分的輸出;第一反饋線,用于將第一高位部分耦合到所述輸入上較低位位置,以用于隨后計算;輸出級,包括第二求和裝置,用于求和第一和第二低位部分以提供第一字輸出和反饋寄存器,用于保留來自所述第二求和裝置的進位比特并在隨后計算期間將所述進位比特作為輸入提供到所述第二求和裝置。
根據(jù)另一方面,本發(fā)明提供一種用于求和來自多比特字的多個加數(shù)的流水線加法器電路,包括第一求和裝置,其包括一進位保留加法器電路的網(wǎng)絡(luò),加法器電路排列成多個列,每一列對應(yīng)和數(shù)中的一預(yù)定比特位置,并且按照多個級來排列,第一級耦合用于接收來自多個字的所選擇字的對應(yīng)比特位置的多個加數(shù),較底級耦合用于接收來自于如下各項中一個或多個的加數(shù)(i)多個字的其它所選擇字的對應(yīng)比特位置,(ii)來自同一列的較高級加法器電路的和輸出,以及(iii)來自對應(yīng)較低有效比特位置的一列的較高級加法器電路的進位輸出,第一反饋線,其為了后續(xù)計算將最低級加法器電路的第一組多個較高有效比特輸出耦合到加法器電路中間級的相應(yīng)數(shù)量的較低有效比特輸入,中間級位于所述第一和最低級加法器電路之間。
現(xiàn)在將通過實例并參考附圖描述本發(fā)明的實施例,其中
圖1示出了適于執(zhí)行乘法運算B.c+r=x.y+c+z(其中x和c具有64比特寬度,y、z和r具有16比特寬度)的陣列乘法器;圖2示出了要增加到執(zhí)行計算Rj=xn-j-1y0+zn-j-1+(xn-j-1y1+rj-1,0)By+(xn-j-1y2+rj-1,1)By2+...+(xn-j-1yn-1+rj-1,n-2)Byn-1+rj-1,n-1)Byn,的流水線乘法器中的字的比特對準,其中每個x.y字乘積由Pj表示,Pj被分為多個乘積,例如P0...P15和由z表示的和項;圖3是示出了為了對圖2的字求和,每一比特位置加數(shù)數(shù)目的圖;圖4示出了適用于執(zhí)行對圖2字的流水線求和的常規(guī)Wallace樹結(jié)構(gòu)的分段;圖5示出了適用于執(zhí)行對圖2字的流水線求和的自適應(yīng)樹結(jié)構(gòu)的分段;圖6示出了適于執(zhí)行對圖2字求和的非流水線加法器的示意框圖;圖7示出了基于圖6加法器結(jié)構(gòu)的流水線加法器的示意框圖;圖8示出了適用于執(zhí)行對圖2字的流水線求和的圖5自適應(yīng)樹結(jié)構(gòu)的另一分段;
圖9示出了根據(jù)圖5的自適應(yīng)樹結(jié)構(gòu)的一部分;以及圖10示出了用于插入到圖9自適應(yīng)樹結(jié)構(gòu)的多個兩輸入進位保留加法器的插入。
為了計算乘積X.Y+ZmodN,其中X、Y和Z例如是大約1024或2048比特長度量級的長整數(shù)變量,長整數(shù)變量X、Y和Z被分割為例如32比特長度或64比特長度的較小“字”。
首先,X和Z分割成n個字,通常每個字長度為K,從而X=xn-1Bxn-1+xn-2Bxn-2+...+x0,Z=zn-1Bxn-1+zn-2Bxn-2+...+z0其中Bx=2k。在一個實例中,k=32,在另一個實例中,k=64。
通過這種方式,X和Z分段為多個字,每個字長度為k比特。
于是,結(jié)果R可由下式計算出 因此,Rj=(xn-j-1Y+zn-j-1+Rj-1Bx)mod N。
首先,將xn-1與全部Y相乘,再加上zn-1;然后計算模N歸約。結(jié)果是R0。
接下來,將xn-2與全部Y相乘,再加上zn-2以及R0.BX;然后對所得結(jié)果計算以N為模的歸約。結(jié)果是R1。
接下來,將xn-3與全部Y相乘,再加上zn-3以及R1.BX;然后對所得結(jié)果計算以N為模的歸約。結(jié)果是R2。
重復(fù)這個過程直到使用完X的所有字為止,從而獲得最終結(jié)果R=Rn-1,其中x0是要被處理的X的最后字。
然而,從實用觀點來看,用于長為1024比特的Y的乘法器是不合乎需要的。因此,我們也把Y從而也將Rj拆為例如32比特長度或16比特長度的較小“字”。
因此,也將基本乘法Rj=(xn-j-1Y+zn-j-1+Rj-1Bx)mod N分段。
將Y和Rj分為p個m比特長度的字,即By=2mY=y(tǒng)p-1Byp-1+yp-2Byp-2+...+y0Rj=rj,p-1Byp-1+rj,p-2Byp-2+...+rj,0
為了簡單,首先假定X和Y的長度相同,并且X和Y字的大小相同,所以p=n和m=k。下面,我們將給出當(dāng)情況不同時必須要改變的內(nèi)容。
以此方式,X和Y被分段為n個字,每個字的長度為k比特。于是, 為了計算Rj,我們執(zhí)行下面操作首先,將xn-j-1與y0相乘,加上rj-1,-1=zn-j-1,并且將所得結(jié)果分為兩個相等部分較低部分rj,0(m比特)和較高部分cj,0(k比特)B.cj,0+rj,0=xn-j-1.y0+rj-1,-1.rj,0作為結(jié)果的一部分保存。
接下來,將xn-j-1與y1相乘,加上先前的進位字cj,0。而且,還加上z0=rj-1,0。同樣將所得結(jié)果分為兩個相等部分較低部分rj,1和較高部分cj,1B.cj,1+rj,1=xn-j-1.y1+cj,0+rj-1,0rj,1作為結(jié)果的一部分保存。
接下來,將xn-j-1與y2相乘,加上先前的進位字cj,1。而且,還加上z1=rj-1,1。同樣將所得結(jié)果分為兩個相等部分較低部分rj,2和較高部分cj,2B.cj,2+rj,2=xn-j-1.y2+cj,1+rj-1,1.rj,2作為結(jié)果的一部分保存。
重復(fù)這個過程直到執(zhí)行最后一次相乘yn-1為止,即將xn-j-1與yn-1相乘,再加上先前進位字cj,n-2。此外,還加上Zn-2=rj-1,n-2。所得結(jié)果同樣分為2部分,分別為k比特長度和m比特長度較低部分rj,n-1和較高部分cj,n-1By.cj,n-1+rj,n-1=xn-j-1.yn-1+cj,n-2+rj-1,n-2.rj,n-1作為結(jié)果的一部分保存。
最后一個步驟是加上cj,n-1和zn-1rj,n=cj,n-1+rj-1,n-1.rj,n作為結(jié)果的一部分保存。
現(xiàn)在,Rj被完成并且大于它從中導(dǎo)出的Y變量X的一個字的長度。Rj的大小優(yōu)選地在模N歸約中減少一個字,并且然后在計算隨后Rj+1期間將所減少的結(jié)果用作Rj。
上述計算描述了普通程序,其中X字的長度(k)與y字的長度(m)相等,即Bx=By。
X字的長度可以不同于Y字的長度。例如,如果k/m>1,k=64并且m=16,則Bx=By4,于是1.在第一k/m(在該實例中k/m=4)相乘期間加上z,并且其后開始加上Rj。
2.進位字cj,i比結(jié)果rj,i(m比特長度)大k/m(=4)(4m比特長度)倍。
3.最后步驟包括加上都為4m比特寬的進位字和Rj的剩余部分。這個相加可能由相同乘法器通過在k/m步驟中選擇y=0來完成,其中在每個步驟中加上m比特的字。
因此,在基本運算中,省略所有指數(shù)B.c+r=x.y+c+z在第一運算期間,c=0,z包括Z的k/m個字,隨后是r的所有字。在最后k/m個運算期間,y=0。對于每個Rj的全部運算集來說,x保持為常量。
執(zhí)行x-y相乘的相同乘法器可以用于模N歸約。在通過X的一個字完成一組(即x)相乘之后,結(jié)果Rj增大了一個k比特字。在計算下一個Rj之前必須通過模N歸約來減少k比特,從而恢復(fù)原始長度。
存在若干用于模歸約的可能算法(例如Quisquater、Barret、Montgomery等),但是它們都使用以下形式的乘法Rj=Xred.N+Rj.
其中Xred(具有k比特大小)乘以模數(shù),N加到結(jié)果中。可替換地,通過使用二進制補碼N′代替N,Xred被減去。這些方法在計算系數(shù)Xred的方式上是不同的。對于Montgomery歸約,還必須將所得結(jié)果除以Bx,即省略都為零的第一個字。
相同的基本運算可以用于以下歸約B.c+r=x.y+c+z其中B=By,r=rj,i,x=Xred,y=Ni并且z=rj,i.
上述乘法運算可以在多個可能的乘法器中執(zhí)行。然而,陣列乘法器是實現(xiàn)這種乘法器的常規(guī)方法。在圖1中示出了一個實例。
典型陣列乘法器10是64×16比特乘法器,但是還可以容易地使用其它比特配置。陣列乘法器10計算具有B.c+r=x.y+c+z形式的表達式Rj中的每項。x和c具有64比特寬度,y、z和r具有16比特寬度,作為輸入和輸出的c實際上包括兩項Cc和Cs。
陣列乘法器的基本元件12被示出為嵌入到圖1中,并且包括接收輸入x和y的乘法器13和加法器14,該加法器接收乘積項x.y、進位和求和輸入si和ci,從而從中產(chǎn)生進位和求和輸出c0和s0。
陣列乘法器10包括17個‘層’或‘級’,‘加法器1’、‘加法器2’...‘加法器17’。最初16層加法器1...加法器16執(zhí)行乘法和加法。最后一層加法器17和每一層中的最右邊元件僅執(zhí)行加法。輸出是16比特r(15:0)、63比特進位項Cc’(79:16)和63比特和項Cs’(79:16)。進位項Cc’以及和項Cs’的和是下面計算式中的進位項cB.c+r=x.y+c+z實際上,從不計算這個項。而是,執(zhí)行下面的計算B.(c′+s′)+r=x.y+c′+s′+z陣列乘法器10的基本元件12執(zhí)行比特計算(co,so)=y(tǒng)*x+ci+si.。通過除了第一層之外每層的最右加法器來實現(xiàn)對z的相加。第17層僅包括加法器,該加法器對于加r(15)是必需的。使用陣列乘法器的這個實施方式的缺點在于,由于來自17個邏輯層的累積延遲而造成該陣列乘法器低速運算。
因此,使用流水線乘法器是有利的,其中不同級的處理可以重疊,從而減少計算時間。參考圖2,示意性地示出乘法過程期間所需的不同加數(shù)。對于64×16比特乘法器,該過程需要以下內(nèi)容的相加(i)16個乘積項P0,P1...P15,Pj=X(63:0)*Y(j);(ii)16比特Z項Z(15:0);(iii)63比特進位項Cc(62:0)以及(iv)63比特和項Cs(62:0)。
輸出結(jié)果Rj(15:0),并且把中間項Cc′(78:16)和Cs′(78:16)進位到下一項Rj+1的計算中。
圖3給出了每個比特位置的加數(shù)的數(shù)目。從比特位置0到比特位置15,因為包括了更多P項,所以加數(shù)的數(shù)目從4線性增加到19。由于不存在更多z比特,所以對于比特16加數(shù)的數(shù)目減少1。當(dāng)進位項以及和數(shù)項Cc和Cs丟失時,加數(shù)的數(shù)目向右到比特62保持為常數(shù)18。從而,對于比特位置63發(fā)生加數(shù)的數(shù)目減少2而變?yōu)?6。最后,從比特位置63直到比特位置78,因為每個連續(xù)地較高P項丟失,所以加數(shù)的數(shù)目從16線性減少到1。
Wallace樹是一種使用最優(yōu)化的級數(shù),為了執(zhí)行大量加數(shù)的加法運算而配置進位保留加法器陣列的常規(guī)方法。圖4示出了這種Wallace樹40的分段。
每個加法器將三個輸入相加并且具有兩個輸出進位以及和數(shù)。Wallace樹假定每個比特位置的加數(shù)數(shù)目是常數(shù),并且圖4示出了適合執(zhí)行圖3所表示的所需相加的樹40的配置。在這個情況下,該樹被配置成每個比特位置19個加數(shù),因為對于比特位置15出現(xiàn)最大值。
在第一級,圖中表示為‘第一層’,每個比特位置(例如,圖中所示的比特位置j)有6個進位保留加法器41。這六個進位保留加法器提供了總共18個輸入42、6個和數(shù)輸出43以及6個進位輸出44。另外,存在一個額外的輸入45,該輸入45被加到第3級(‘第3層’)。這給出了所需的總共19個輸入。
通過進位保留加法器46將六個和數(shù)輸出43加到下一個級2。六個進位輸出44被加到樹的下一個級2中,但是在左邊表示為j+1的下一個比特位置的進位保留加法器56中。對于前面比特位置j-1,第一級的進位保留加法器61也提供六個進位輸出64,該六個進位輸出64被提供到比特位置j的第2級的加法器46。常規(guī)Wallace樹假定進位輸入(例如,43,44)的數(shù)目等于進位輸出的數(shù)目,當(dāng)?shù)?級每個比特位置的輸入數(shù)目相等時,通常是這種情況。
這種Wallace樹根據(jù)下面表格給出了對于給定加數(shù)數(shù)目的最小級數(shù)
可以看出,特別地、但非專門地對于上述討論的表達式R=X*Y+Zmod N所需的計算,可以減少對于給定數(shù)目的加數(shù)所需加法器的數(shù)目,特別是當(dāng)加數(shù)的數(shù)目在計算中是可變的時。
圖5說明了根據(jù)本發(fā)明的典型“自適應(yīng)樹”或網(wǎng)絡(luò)70的基本結(jié)構(gòu)的分段或部分,對于每個比特數(shù)位置j+1,j和j-1,每個比特位置對應(yīng)樹中的一列。在圖5的分段中,在每個比特位置(列)中加數(shù)的數(shù)目是18。這個基本結(jié)構(gòu)用于所有比特位置,而在每一級和每一比特位置上的進位保留加法器的數(shù)目是根據(jù)在對應(yīng)比特位置上所需的加數(shù)數(shù)目來獨立地確定的。圖8示出了自適應(yīng)樹70的另一部分,特別地對于分別需要4到12個加數(shù)(見圖3)的比特位置0到8。因此,自適應(yīng)樹包括一個加法器的樹結(jié)構(gòu),該樹結(jié)構(gòu)被建構(gòu)成最小化或減少所需加法器的數(shù)目,其中對于對應(yīng)輸入比特位置存在可變的輸入比特數(shù)目。
根據(jù)下面規(guī)則,建立確定自適應(yīng)樹或網(wǎng)絡(luò)的結(jié)構(gòu)。
在第一級,在給定比特位置中進位保留加法器71的數(shù)目被設(shè)定為輸入加數(shù)的數(shù)目除以3并且被下舍入為最近整數(shù)。例如,對于16個輸入,需要5個加法器。對于圖5中所說明的18個輸入,在位置j處需要6個加法器71。
在每個隨后的級上,根據(jù)下面表達式確定給定比特位置的加法器的數(shù)目(在第n級對于比特位置j的加法器數(shù)目)={(在比特位置j來自第n-1級的和數(shù)輸出數(shù)目)+(在比特位置j第n-1級的未連接輸入的數(shù)目)+(在比特位置j-1第n-1級的進位數(shù))}除以3并且下舍入為最近整數(shù)因此,特別地參考圖5,在對于第1級上的比特位置j需要18個輸入的樹70的中間部分,加法器71的數(shù)目是6。在第2級,根據(jù)上述公式,加法器72的數(shù)目是INT{(6+0+6)/3}=4。在第3級,加法器73的數(shù)目是INT{(4+0+4)/3}=2。在第4級,加法器74的數(shù)目是INT{(2+2+2)/3}=2。在第5級,加法器75的數(shù)目是INT{(2+0+2)/3}=1。最后,對于第6級,加法器76的數(shù)目是INT{(1+1+1)/3}=1。應(yīng)該指出的是,對于每個比特位置j+1,j和j-1,對于18個加數(shù),在每個比特位置的第3級節(jié)省了一個進位保留加法器。
特別地參考圖8,在樹70的一端還進行節(jié)省,因為來自右邊的進位數(shù)目(因為不斷增加的輸入比特數(shù)目)小于Wallace樹情況。例如,在比特位置7,存在11個加數(shù)。常規(guī)的Wallace樹建議5級。實際上,在這個位置需要分別具有三個、兩個、兩個和一個加法器的四級。
在一些情況下,有時還可以通過在網(wǎng)絡(luò)內(nèi)的策略位置上增加兩輸入的進位保留加法器,進一步減少級數(shù)。首先,根據(jù)上述所定義的策略,僅僅使用三輸入的進位保留加法器形成網(wǎng)絡(luò)70,從而實現(xiàn)該設(shè)計。為了識別插入兩輸入的進位保留加法器的策略位置,有必要在每個級(‘Ln’)和比特位置(‘Bj’)中識別到該比特位置Bj和第Ln級的輸入數(shù)目超過最小數(shù)目(例如,2)的位置。在所識別的位置上,兩輸入的進位保留加法器被插入到高于該位置的一個級(例如,Ln-1或Ln-2等),在該級上存在兩個未連接的加數(shù)。這有效地將一個輸入移動到下一個高位比特位置Bj+1。這進而又可能導(dǎo)致作為結(jié)果超過對于下一比特位置允許的輸出數(shù)目,并且因此必須重復(fù)多次該過程直到用于所有比特位置的輸入數(shù)目不超過所允許的數(shù)目。
例如,特別地參考圖9,對于更高位比特存在減少數(shù)目的輸入,導(dǎo)致高于必要層數(shù)的層數(shù)。每個比特位置的最大輸入數(shù)目是3,因此一級加法器應(yīng)該是足夠的,在圖9中有比特位置58的加法器100的三個輸入以及一個來自比特位置57的加法器(未示出)的進位輸出101。比特位置59和60的加法器102,103中的每一個分別具有兩個輸入,并且對于比特位置61具有一個輸入。對于比特位置59,具有來自第1級的三個輸出(而不是所期望的兩個輸出)來自比特位置58的一個進位輸出和兩個未連接的字輸入。因為來自于比特位置58到59的進位101以及以同樣方式來自于比特位置59到60的進位,所以需要三級(標記為第1層、第2層和第3層)。這給出了兩個額外的層。
參考圖10,我們可以通過使用額外的兩輸入兩輸出加法器110、110(相比于三輸入、兩輸出進位保留加法器‘CSA3’,其被標記為‘CSA2’)來減輕這種情況。這種加法器不減少總的輸入數(shù)目,但是對于那個比特位置它們確實減少了一個。CSA2加法器110對于下一更高比特位置60將輸入數(shù)目從2增加到3,因此該問題移到比特位置60而不是比特位置59。然而,也插入CSA2加法器111,該CSA2加法器111將第1級比特位置60的輸入數(shù)目從3減為2。在比特位置61上輸入數(shù)目從1到2的隨之增加是無關(guān)緊要的。
原理上,應(yīng)該承認,在特定比特位置的較高級上利用兩輸入加法器策略地處理加數(shù)對可以導(dǎo)致進一步減少級數(shù)。換句話說,在一個或多個相鄰更高位位置中利用兩個輸入加法器局部增加求和容量可以因此減少在較低級所需的求和容量,最終減少級數(shù)而不需額外的三輸入加法器。
這個解決方案增加了左邊相鄰的加數(shù)數(shù)目,結(jié)果這可能有更多的輸入。如果是的話,則需要在一級中插入多個兩輸入加法器直到存在具有足夠低輸入數(shù)目的比特位置,如所示的比特位置61。
在一般意義上,用于插入額外兩輸入進位保留加法器的過程可以定義為以下步驟。首先,對于給定數(shù)目的級,在網(wǎng)絡(luò)中發(fā)現(xiàn)具有比特位置Bj和第Ln級的第一位置,其中在該第一位置上的輸出數(shù)目大于2(例如是3,而不是2),并且其中在某一較高級上存在兩個未連接的加數(shù)。其次,就該第一位置來說,在具有相同比特位置Bj而具有高于第一位置的一級(例如,Ln-1、Ln-2等等)中的第二位置上插入兩輸入的進位保留加法器,在該位置上存在兩個未連接的加數(shù)。
需要重復(fù)該過程多次直到對于所有比特位置的輸入數(shù)目不超過所允許的數(shù)目。
參考圖6,自適應(yīng)樹用于非流水線加法器配置80中。在這個設(shè)置中,自適應(yīng)樹具有最多六個級81,82...86,用于求和圖2的所有加數(shù)。加法器使用六級的自適應(yīng)樹求和所有16個乘積P0...P15,Z、反饋進位項Cc(62:0)以及和項Cs(62:0)。該樹的輸出87被寄存,這樣以至于最終進位項Cc′(78:16)的更高位部分和最終和項Cs′(78:16)輸出的更高位部分被反饋到反饋線91并且傳送到比特位置(62:0)作為下一計算的輸入。通過額外的全加器88對進位項Cc′(15:0)以及和項Cs′(15:0)的低位部分求和,并且存儲到寄存器89,其是公式B.(c′+s′)+r=x.y+(c′+s′)+z中的項‘r’。
進位項Cc′(15:0)以及和項Cs′(15:0)的低位部分稍后的相加自身生成另一單比特進位項,在圖6中標識為c″16。為了包含在全加器88的下一個求和中,這個單比特進位項被反饋,如反饋線90所表示的。
因此,在一般意義上,額外的全加器88和寄存器89舉例說明了一個輸出級,其將和項和進位項相加,從而提供最終結(jié)果的第一字輸出,并且保留用作隨后級計算輸入的進位比特c″16,其中主加法器陣列生成另一高位和項以及進位項,用于由輸出級進行相加。
可替換地,進位項c″16可能反饋到在81所示的自適應(yīng)樹的第1級、比特0,因為它具有與Cc′(16)和Cs′(16)相同的權(quán)重。這個技術(shù)的一個缺點在于,開始隨后計算之前自適應(yīng)樹必須等待全加器88的c″16輸出。因此,優(yōu)選地使用全加器88來加c″16項。
在每一個新乘法開始時,像Cc′和Cs′,一樣清除進位比特c″16。
在另一設(shè)置中,如圖7所示的,可以給定自適應(yīng)樹180具有多個級181...187的一個流水線配置。在這個情況下,通常需要向前面級(即,中間級185)而不是第一級181反饋進位Cc′(78:16)以及和Cs′(78:16)的高位部分。因此,在圖7所述的特定設(shè)置中,不是在開始下一計算之前等待從最后級187輸出的最終進位項Cc′(78:16)的高位部分和最終和項Cs′(78:16)的高位部分反饋到第1級,這些項如圖所示被加到第5級。盡管這個設(shè)置將級數(shù)加1到7,但是將延遲從如圖6中設(shè)置的六級延遲減少為如圖7設(shè)置的四級延遲。
在這個配置中,在一般意義上反饋線191將加法器電路的較高有效比特輸出耦合到加法器電路中間級的相應(yīng)數(shù)目的較低有效比特輸入。有必要提供中間級寄存器191,用于暫時保持來自前四級181...184的求和結(jié)果。
通過以顯著增加硬件為代價,增加了1.5倍的運算速度。在所給出的例子中,需要附加的寄存器275來服務(wù)額外級。
自適應(yīng)樹的另一優(yōu)點存在于流水線版本。在圖7中,在前四級設(shè)置許多較低位比特數(shù)目的加法器,其中需要最多4個級,從而減少寄存器的數(shù)目。相反,Wallace樹需要這些加法器被放置在較低層中。因此,這大大需要多于4個的寄存器,因為Wallace樹對于較低比特數(shù)目在較高級沒有減少輸入數(shù)目。
圖7的設(shè)置還包括結(jié)合圖6設(shè)置的輸出級88...90所描述的輸出級180...190。
其它實施例預(yù)定將落入附加權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于對來自多比特字的多個加數(shù)求和的加法器電路(70),包括n輸入進位保留加法器電路(71...76)的網(wǎng)絡(luò),每個電路具有第一數(shù)目的和數(shù)輸出以及第二數(shù)目的進位輸出,該加法器電路排列成多列(j),每列對應(yīng)和數(shù)中的一個預(yù)定比特位置,并且排列成多個級,第一級接收來自多個字的所選擇字的對應(yīng)比特位置的多個加數(shù),以及較低級中的每一級接收來自如下各項中一個或多個的加數(shù)(i)該多個字的其它所選擇字的對應(yīng)比特位置,(ii)來自同一列的較高級加法器電路的和數(shù)輸出,以及(iii)來自對應(yīng)較低有效比特位置的一列中的較高級加法器電路的進位輸出,其中每列中的n輸入加法器的數(shù)目根據(jù)比特位置而變化。
2.根據(jù)權(quán)利要求1的電路,其中,每列中n輸入加法器的數(shù)目特別地適應(yīng)該列所需的加數(shù)數(shù)目。
3.根據(jù)權(quán)利要求1的電路,其中,第一級的每個比特位置中的n輸入加法器的數(shù)目不超過加數(shù)數(shù)目除以n的整數(shù)部分。
4.根據(jù)權(quán)利要求1或4的電路,其中,較低級的每個比特位置中的n輸入加法器的數(shù)目不超過下面各項之和除以n的結(jié)果的整數(shù)部分(a)在較高級和同一列中的n輸入加法器的和數(shù)輸出的數(shù)目,(b)來自較高級和同一列的未連接輸入的數(shù)目,以及(c)來自較高級和對應(yīng)較低有效比特位置的列的進位輸出的數(shù)目。
5.根據(jù)權(quán)利要求4的電路,其中,未連接輸入的數(shù)目是中間較高級的數(shù)目。
6.根據(jù)權(quán)利要求4的電路,其中,和數(shù)輸出的數(shù)目是中間較高級的數(shù)目。
7.根據(jù)權(quán)利要求4的電路,其中,進位輸出的數(shù)目是中間較高級的數(shù)目。
8.根據(jù)權(quán)利要求1的電路,其中,n是3,和數(shù)輸出的第一數(shù)目是2,并且進位輸出的第二數(shù)目是2。
9.根據(jù)權(quán)利要求1的電路,還包括用于將多個多比特字中的每一個傳送到n輸入加法器的網(wǎng)絡(luò),以便每個比特位置的加數(shù)數(shù)目作為比特位置的函數(shù)而變化的裝置。
10.根據(jù)權(quán)利要求1或4的電路,還包括放置在網(wǎng)絡(luò)內(nèi)的所選擇位置的一個或多個(n-1)輸入加法器。
11.根據(jù)權(quán)利要求10的電路,其中,確定所選擇的位置以便減少對多個加數(shù)求和所需的級數(shù)。
12.根據(jù)權(quán)利要求11的電路,其中,n輸入加法器是3輸入加法器,(n-1)輸入加法器是2輸入加法器,其中根據(jù)所識別的比特位置和其中輸出數(shù)目否則會大于2的級確定每個所選擇的位置,所選擇的位置在高于所識別位置的級上并且在同一比特位置。
13.一種加法器電路(80),包括用于接收多個加數(shù)的輸入;第一求和裝置(81...86),用于對多個加數(shù)求和以產(chǎn)生包括高位部分(Cc’(78:16),Cs’(78:16))以及第一和第二低位部分(Cc’(15:0),Cs’(15:0))的輸出(87);第一反饋線(91),用于將第一高位部分耦合到所述輸入上的低位位置,以用于隨后計算;輸出級,包括第二求和裝置(88),用于對第一和第二低位部分求和以提供第一字輸出(89),和反饋寄存器(90,c”16),用于保留來自所述第二求和裝置的進位比特并且在隨后計算期間將所述進位比特作為輸入提供到所述第二求和裝置。
14.根據(jù)權(quán)利要求13的加法器電路,其中,高位部分包括反饋到隨后計算的進位項以及和數(shù)項。
15.根據(jù)權(quán)利要求13的加法器電路,其中,進位比特(c”16)被用在通過第一求和裝置(81...86)的第一和第二低位部分的隨后計算的末端。
16.根據(jù)權(quán)利要求13的加法器電路(80),用于對來自多比特字的多個加數(shù)求和,其中第一求和裝置包括進位保留加法器電路(81...86)的網(wǎng)絡(luò),每個電路具有多個輸入、多個和數(shù)輸出以及多個進位輸出;該加法器電路排列成多個列,每一列對應(yīng)和數(shù)中的一個預(yù)定比特位置,并且被排列成多個級(81...86);第一級(81)耦合用于接收來自多個字的所選擇字的對應(yīng)比特位置的多個加數(shù),以及較低級(82...86)耦合用于接收來自如下各項中一個或多個的加數(shù)(i)該多個字的其它選擇字的對應(yīng)比特位置,(ii)來自同一列的較高級加法器電路的和輸出,以及(iii)來自對應(yīng)較低有效比特位置的一列的較高級加法器電路的進位輸出,第一反饋線(91)將最低級(86)加法器電路的第一組多個較高有效比特輸出(87),如所述第一高位部分一樣耦合到所述低位位置上加法器電路的所述第一級的相應(yīng)數(shù)量的較低有效比特輸入。
17.根據(jù)權(quán)利要求13或15的加法器電路,其中,高位部分包括高位進位項輸出和高位和數(shù)項輸出,其中第一低位部分包括低位進位項輸出,并且第二低位部分包括低位和數(shù)項輸出。
18.一種用于對來自多比特字的多個加數(shù)求和的流水線加法器電路(180),包括第一求和裝置(181...187),包括進位保留加法器電路的網(wǎng)絡(luò),加法器電路排列成多個列,每一列對應(yīng)和數(shù)中的一預(yù)定比特位置并且排列成多個級(181...187),第一級(181)耦合用于接收來自多個字的所選擇字的對應(yīng)比特位置的多個加數(shù),以及較底級耦合用于接收來自如下各項中一個或多個的加數(shù)(i)該多個字的其它所選擇字的對應(yīng)比特位置,(ii)來自同一列的較高級加法器電路的和數(shù)輸出,以及(iii)來自對應(yīng)較低有效比特位置的一列的較高級加法器電路的進位輸出,第一反饋線(91)為了后續(xù)計算將最低級(187)加法器電路的第一組多個較高有效比特輸出耦合到加法器電路的中間級(185)的相應(yīng)數(shù)量的較低有效比特輸入,中間級位于所述第一和最低級加法器電路之間。
19.根據(jù)權(quán)利要求18的流水線加法器電路,還包括輸出級,該輸出級包括第二求和裝置,用于對第一和第二低位部分求和以提供第一字輸出,該第一和第二低位部分分別包括最低級加法器的第二和第三組多個較低有效比特輸出;以及反饋寄存器,用于保留來自所述第二求和裝置的進位比特和在隨后計算期間將所述進位比特作為輸入提供到所述第二求和裝置。
20.一種基本如參考附圖5-11所描述的裝置。
全文摘要
一種用于相乘兩個長整數(shù)的加法器電路采用了加法器網(wǎng)絡(luò),用于長整數(shù)的連續(xù)的字求和以生成中間結(jié)果。加數(shù)的數(shù)目作為比特位置的函數(shù)而變化,并且根據(jù)預(yù)期加數(shù)的最大數(shù)目設(shè)計該加法器的網(wǎng)絡(luò)以減少網(wǎng)絡(luò)中加法器的級數(shù)。策略地放置的多個額外加法器可以被定位在網(wǎng)絡(luò)中以進一步減少級數(shù)。可以提供輸出級將網(wǎng)絡(luò)的和數(shù)以及進位輸出相加,并保留最有效的比特,用于網(wǎng)絡(luò)的隨后計算輸出??梢耘渲迷摼W(wǎng)絡(luò)以便在完成前一個計算之前,該網(wǎng)絡(luò)可以開始進行后續(xù)計算,前一個計算的輸出被反饋到網(wǎng)絡(luò)的中間級,該中間級位于最高(輸入)級和最低(輸出)級之間。
文檔編號G06F7/48GK1829957SQ200480021492
公開日2006年9月6日 申請日期2004年7月22日 優(yōu)先權(quán)日2003年7月26日
發(fā)明者G·T·M·哈伯特 申請人:皇家飛利浦電子股份有限公司