專利名稱:組合多項(xiàng)式和自然乘法的乘法器架構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及半導(dǎo)體集成電路的架構(gòu),尤其涉及乘法電路。
背景技術(shù):
乘法硬件通常適用于執(zhí)行自然乘法(在小學(xué)學(xué)習(xí)的普通算術(shù)),但是是對(duì)二進(jìn)制數(shù)進(jìn)行運(yùn)算的。在自然乘法中,兩個(gè)操作數(shù)A和B相乘可產(chǎn)生積C=A·B,其中A、B和C分別可由等于0或1的二進(jìn)制數(shù)字ai、bj和ck表示A=(an-1,...,a1,a0)=SUMi(ai·2i)B=(bn-1,...,b1,b0)=SUMj(bj·2j)C=(cn-1,...,c1,c0)=SUMk(ci·2k)在此,指數(shù)i、j和k表示特定數(shù)字的比特重要性或“權(quán)重”。(類似的數(shù)表示,諸如二的補(bǔ)碼或一的補(bǔ)碼,通常可用來表示負(fù)整數(shù),以及實(shí)數(shù)的尾數(shù)。使用這些額外的數(shù)所表示的乘法也是與適當(dāng)乘法相類似的。)在并聯(lián)乘法器架構(gòu)中,積通常的形式為叉積的和。兩個(gè)操作數(shù)比特的部分積等同于邏輯AND(與)操作,并通過使用AND門以電路硬件的方式來實(shí)現(xiàn)。權(quán)重相同的兩個(gè)部分積比特的和產(chǎn)生相同權(quán)重的和項(xiàng)以及下一更高權(quán)重的進(jìn)位項(xiàng),其中,該和項(xiàng)等同于邏輯XOR(異或)操作,而進(jìn)位項(xiàng)等同于邏輯AND操作x+y=carry,sum=AND(x,y),XOR(x,y)通常,硬件加法器可具有兩種主要類型,全加法器可將三個(gè)輸入比特相加在一起,半加法器可將兩個(gè)輸入比特相加在一起。輸入比特可以是部分積比特、來自另一加法器的和項(xiàng)輸出、或進(jìn)位項(xiàng)。不管源自何處的所有輸入比特,包括“進(jìn)位”輸入比特,對(duì)加法器輸出具有完全相同的邏輯貢獻(xiàn),并且通常可示為相對(duì)于結(jié)果是等同的。(然而,應(yīng)該注意的是,加法器電路的標(biāo)準(zhǔn)單元實(shí)現(xiàn)常常在加法器電路的構(gòu)建中給予進(jìn)位輸入優(yōu)先定時(shí),以便最小化整個(gè)加法器陣列結(jié)構(gòu)中的傳播延遲和過分的切換。)兩種類型的加法器都可生成和項(xiàng)和進(jìn)位項(xiàng)作為輸出。
在自然乘法中,進(jìn)位項(xiàng)可傳送并添加到下一更高權(quán)重的和項(xiàng)中。因而,自然積C為
C=SUMi,j(ai·bj·2i+j)=SUMk((SUMi+j=k(AND(ai·bj)))·2k)并聯(lián)自然乘法器電路有各種各樣的架構(gòu),主要是在排列部分積加法器陣列的方式上不同。
Wallace的架構(gòu)(“A Suggestion for a Fat Multiplier”,IEEE Trans.On ElectronicComputers,vol.EC.15,pp14-17,F(xiàn)eb.1964)和Dadda的架構(gòu)(在法國Grennobled1965年1月的Colloque sur l’Algèbre de Boole上刊登的文章)是相似的。圖1顯示了由L.Dadda揭示的基本結(jié)構(gòu)。部分積的陣列可示為在A區(qū)以豎直列根據(jù)其權(quán)重排列的點(diǎn)。對(duì)兩個(gè)n比特的操作數(shù)而言,給定權(quán)重的部分積的數(shù)量可在1到n之間變化。累加給定權(quán)重的各個(gè)部分積可通過二進(jìn)制計(jì)數(shù)器來實(shí)現(xiàn),在圖中示為對(duì)角線。術(shù)語“二進(jìn)制計(jì)數(shù)器”是由Dadda使用的,且在本文檔中其它地方的含義是,對(duì)于給定數(shù)量的輸入行,它產(chǎn)生表示總數(shù)量或?qū)δ切┹斎氲摹坝?jì)數(shù)”的二進(jìn)制輸出。(這與常用的時(shí)序計(jì)數(shù)器不同,時(shí)序計(jì)數(shù)器可隨著時(shí)間的流逝產(chǎn)生一系列增量輸出。)部分積的累加可分成兩個(gè)主要步驟,其中,第一個(gè)步驟(再可分成若干級(jí)聯(lián)階段)將部分積減少成兩個(gè)數(shù)字的數(shù)組,第二個(gè)步驟包括一個(gè)進(jìn)位傳送加法器步驟。第一個(gè)步驟的級(jí)聯(lián)階段在圖中示為B到D區(qū)。計(jì)數(shù)器的大小取決于要計(jì)數(shù)的給定權(quán)重項(xiàng)的總量。例如,在B區(qū)中,列為5,要累加(計(jì)數(shù))權(quán)重為24的5個(gè)部分積,它們一起形成了權(quán)重分別為26、25、24的3-比特和。因而,會(huì)有要傳送到下一計(jì)數(shù)階段或區(qū)的若干個(gè)不同權(quán)重的進(jìn)位項(xiàng)。C和D區(qū)將同樣的原理應(yīng)用于前一個(gè)區(qū)的輸出上。D區(qū)計(jì)數(shù)器的輸出僅由兩行組成。這些都在第二個(gè)主要步驟(E區(qū))中用快速加法器來處理,以給出自然乘積。其它并聯(lián)自然乘法器可使用各種類型的全加法器的樹結(jié)構(gòu)(或甚至更復(fù)雜的加法器電路)以將部分積快速減為最終的乘積。
其它類型的代數(shù)都具有它們自己的乘法。一種常用于產(chǎn)生錯(cuò)誤校正碼并且近來用于橢圓曲線密碼系統(tǒng)(參見專利號(hào)為6,252,959的美國專利)可在有限(Galois)域內(nèi)產(chǎn)生乘法乘積??墒褂貌煌挠?,但大多數(shù)常用的應(yīng)用都采用質(zhì)數(shù)域GF(p)或二進(jìn)制域GF(2N)。錯(cuò)誤校正碼應(yīng)用,諸如Reed-Solomon代碼發(fā)生,通常在小尺寸字(例如,8比特)上進(jìn)行重復(fù)操作,因此可在GF(256)上也使用乘法。橢圓曲線應(yīng)用通??蓪?duì)具有160比特或大于160比特的字寬度的較大數(shù)據(jù)塊進(jìn)行操作。常常,在任一種使用多項(xiàng)式表示的應(yīng)用中,乘積可定義為多項(xiàng)式乘積,隨后可由殘數(shù)除法通過適當(dāng)?shù)牟豢杉s多項(xiàng)式來減小??梢詷?gòu)建專用的硬件結(jié)構(gòu),以實(shí)現(xiàn)有限域乘法。
在GF(2N)上,一個(gè)數(shù)的各個(gè)元素可表示為n-uple(矩陣表示)或表示為具有n個(gè)系數(shù)的多項(xiàng)式(多項(xiàng)式表示)A=(an-1,...,a1,a0)=an-1Xn-1+...+a1X1+a0X0=SUMi(aiXi)ai是GF(2)的元,即,可以是0或1。GF(2)上的加法律和乘法律分別是XOR和AND邏輯運(yùn)算。兩個(gè)GF(2N)數(shù)的加法可定義為多項(xiàng)式加法,即,同次或相同權(quán)重的系數(shù)的累加c=A+B=sumi(XOR(ai,ni)xi)兩個(gè)GF(2N)數(shù)的乘法可定義為多項(xiàng)式乘法,以特定的不可約多項(xiàng)式P為模c=A·B=(A*B)mod P=sumk(XORi+j=k(AND(ai,bj))xk)mod P其中k為從0到N-1。值得注意的是,A*B表示多項(xiàng)式乘積(不是折合模數(shù)P),而A·B表示兩個(gè)GF(2N)數(shù)的乘積。A*B是2N-2次的多項(xiàng)式,因此不是GF(2N)的元。A·B是GF(2N)的元。
將具有系數(shù)GF(2)的多項(xiàng)式加法和乘法與自然加法和乘法作比較,我們可觀察到akXk(k次的多項(xiàng)式項(xiàng))和ak2k(其中k的自然數(shù)比特)在加法和乘法中起相似作用,但又有些不同。具有有限域GF(2)內(nèi)系數(shù)的多項(xiàng)式加法與自然加法相似,除了相同次數(shù)項(xiàng)的和在多項(xiàng)式加法情形中不向相鄰項(xiàng)提供任何進(jìn)位,而相同權(quán)重項(xiàng)的自然加法不向下一更高權(quán)重提供進(jìn)位。具有有限域GF(2)內(nèi)系數(shù)的多項(xiàng)式乘法也與自然乘法相似,除了相同次數(shù)部分積的和在多項(xiàng)式乘法情形中不產(chǎn)生相鄰次的進(jìn)位,而相同權(quán)重項(xiàng)的部分積的自然加法不向下一更高權(quán)重提供進(jìn)位。最后,我們應(yīng)該指出的是n比特自然和的最低有效位比特是這些比特的XOR,就像多項(xiàng)式情形中一樣。
在專利號(hào)為4,918,638的美國專利中,Matsumoto等人描述了一種有限域乘法器,用來獲取GF(24)中的乘積以用于產(chǎn)生操作校正碼。在執(zhí)行二進(jìn)制乘法之后,獨(dú)立的多項(xiàng)式發(fā)生器塊用乘法通過發(fā)生器多項(xiàng)式g(x)=x4+x+1來減小乘積。該專利的圖5和9示出用于執(zhí)行有限域乘法的二進(jìn)制乘法器陣列。AND門用來形成部分積,而XOR門用來對(duì)相同權(quán)重的部分積執(zhí)行比特加法。乘法器可構(gòu)建成不執(zhí)行自然乘法,而僅執(zhí)行GF(24)有限域乘法。
本發(fā)明的一個(gè)目的是提供一種并聯(lián)乘法器的結(jié)構(gòu),該結(jié)構(gòu)不僅能傳送自然乘法乘積,而且能傳送具有GF(2)上系數(shù)的多項(xiàng)式乘法乘積,從而有助于在GF(2N)(對(duì)于任何N≥1的值)中完成有限域乘法。
發(fā)明內(nèi)容
本發(fā)明的目標(biāo)可由并聯(lián)乘法器硬件架構(gòu)來達(dá)到,該結(jié)構(gòu)安排部分積的加法,使得該加法從執(zhí)行加法但不接收任何進(jìn)位項(xiàng)作為輸入的第一組加法器階段開始,從而將進(jìn)位項(xiàng)的加法延遲到在該第一組之后安排了第二組加法器階段。將各加法器安排成兩個(gè)不同組的有意安排使得多項(xiàng)式乘積都能從第一組加法的結(jié)果中提取,而自然乘積則從第二組加法的結(jié)果中提取。
乘法器包括AND門的陣列,其中輸入與操作數(shù)比特相連,而輸出提供整個(gè)部分積的集合。安排為累加相同比特重要性或“權(quán)重”的部分積的加法架構(gòu)分多個(gè)階段構(gòu)建。值得注意的是,這些階段的第一組累加所有部分積而不包括任何進(jìn)位輸入,第二組階段則將從加法架構(gòu)的較低權(quán)重部分獲取的進(jìn)位輸入累加到前面階段的結(jié)果上。所有階段都向加法架構(gòu)的較高權(quán)重部分提供進(jìn)位輸出。
在加法架構(gòu)包括并聯(lián)計(jì)數(shù)器的級(jí)聯(lián)階段的情形中,其中在相同權(quán)重的兩個(gè)或多個(gè)部分積的每一列中都具有至少一個(gè)計(jì)數(shù)器,第一組僅包括具有部分積輸入的第一行計(jì)數(shù)器,而輸入來自前面計(jì)數(shù)器行的計(jì)數(shù)比特的所有其它計(jì)數(shù)器行是第二組的一部分。多項(xiàng)式乘法乘積從每個(gè)第一行計(jì)數(shù)器的最低有效位比特中提取,而自然乘法乘積從接收每個(gè)權(quán)重的最后一對(duì)計(jì)數(shù)比特的進(jìn)位傳送加法器中提取。
在加法架構(gòu)包括各個(gè)權(quán)重的全加法器的樹結(jié)構(gòu)的情形中,第一組加法器僅接收部分積輸入和部分積加法的和項(xiàng)。該樹結(jié)構(gòu)將給定權(quán)重的奇數(shù)個(gè)部分積減少為單個(gè)和項(xiàng),該和項(xiàng)表示該權(quán)重的二進(jìn)制乘積比特。該樹結(jié)構(gòu)將給定權(quán)重的偶數(shù)個(gè)部分積減少為一對(duì)和項(xiàng)。然后具有該對(duì)和項(xiàng)作為輸入的XOR門輸出該權(quán)重的二進(jìn)制乘積比特。第二組加法器取得來自第一組的和項(xiàng)和來自下一更低權(quán)重的加法樹的進(jìn)位項(xiàng),并將它們減少為第二對(duì)和項(xiàng)。然后,最后的加法器結(jié)構(gòu)(例如,進(jìn)位傳送、進(jìn)位保存、4到2簡(jiǎn)化器等)從這些第二和項(xiàng)中形成自然乘積比特。
在加法架構(gòu)包括全加法器和半加法器的混合樹結(jié)構(gòu)的情形中,給定權(quán)重的第一組全和半加法器將乘積項(xiàng)輸入減少為單個(gè)和項(xiàng),該和項(xiàng)是該權(quán)重的二進(jìn)制乘積比特。然后,第二組加法器累加進(jìn)位以獲得該權(quán)重的自然乘積比特。
通過將進(jìn)位加法分離到第二組中,多項(xiàng)式乘法乘積可從第一組提取,并且還可獲得自然乘法乘積。
圖1是根據(jù)Dadda現(xiàn)有技術(shù)的并聯(lián)自然乘法器架構(gòu)的平面示圖。
圖2是圖1所示修改版本的平面示意圖,其中提供了可從內(nèi)部計(jì)數(shù)器中提取二進(jìn)制乘積比特的比特線,作為除自然乘積之外的單獨(dú)輸出。
圖3是根據(jù)本發(fā)明的通用乘法器架構(gòu)的示意框圖。
圖4是適用于任何乘法器電路的部分積發(fā)生器的電路部分示意圖。
圖5是具有八個(gè)相同權(quán)重的部分積輸入的現(xiàn)有技術(shù)中的進(jìn)位保存加法器部分的電路示意框圖。
圖6是本發(fā)明的進(jìn)位保存加法器部分的一個(gè)實(shí)施例的電路示意框圖,其中具有適用于提取多項(xiàng)式乘積比特的額外的XOR門。
圖7是根據(jù)本發(fā)明的進(jìn)位保存加法器部分的其它實(shí)施例的電路示意框圖,其中使用半加法器以及多項(xiàng)式乘積比特的比特線提取。
圖8A-8G示出類似于圖6所示的電路部分的電路示意框圖,它具有一到七個(gè)部分積輸入,其中具有偶數(shù)個(gè)部分積輸入的每個(gè)電路部分都有額外的XOR門。
圖9示出還能處理負(fù)整數(shù)乘法的加法器結(jié)構(gòu)的兩個(gè)相鄰權(quán)重k和k+1的電路示意框圖。
具體實(shí)施例方式
參照?qǐng)D2,Dadda結(jié)構(gòu)(圖1所示)的變體可看成B區(qū)中每個(gè)計(jì)數(shù)器11的最低有效位比特13與第一列和最后一列的單乘積項(xiàng)15一起相對(duì)應(yīng)于具有GF(2)中系數(shù)的多項(xiàng)式的多項(xiàng)式乘積比特。這些計(jì)數(shù)器最低有效位比特13通過比特線17來提取,并提供為多項(xiàng)式乘積輸出,與在E區(qū)中所獲取的自然乘積不同,并添加到該自然乘積上。盡管這些多項(xiàng)式乘積比特可呈現(xiàn)為某些自然乘法電路的內(nèi)部狀態(tài),但就發(fā)明人所知,它們并不是單獨(dú)提取成提供多項(xiàng)式和自然乘積的乘法器。
對(duì)GF(2)中乘積的和出現(xiàn)并可用于從自然乘法器架構(gòu)內(nèi)提取的認(rèn)識(shí),顯示了乘法器可特殊設(shè)計(jì)成提供多項(xiàng)式和自然乘積,即通過適當(dāng)?shù)亟M合部分積加法架構(gòu)。這通過重新將自然乘積C安排為兩個(gè)部分成為可能,這兩個(gè)部分包括表示持續(xù)累加操作的多項(xiàng)式乘積D和其它項(xiàng)EC=SUMi,j(ai·bj·2i+j)=SUMk((SUMi+j=k(AND(ai·bj)))·2k)=SUMk[XORi,j=k-i[ANDi+j=k(ai·bj)]·2k]+SUMk(ek·2k)=D+SUMk(ek·2k)
式中ek是從下一較低權(quán)重k-1加法中獲取的權(quán)重k的所有進(jìn)位項(xiàng)。這些附加項(xiàng)與多項(xiàng)式乘法乘積D無關(guān),但只是繼續(xù)自然乘法的累加以獲取自然乘積C。將進(jìn)位加法分離到第二組階段的任何乘法架構(gòu)進(jìn)行管理以完成自然乘法,并且還提供來自第一組加法階段的多項(xiàng)式乘法結(jié)果D,這些加法階段僅使用部分積且無進(jìn)位。
圖3說明性地示出將加法器分成兩個(gè)組23和29,并從這兩個(gè)組中提取不同乘積27和33。特別是,操作數(shù)比特ai和bj(其中i和j的范圍都是從0到n-1)由AND門(由標(biāo)記)陣列21接收,以產(chǎn)生整個(gè)部分積項(xiàng)pi,j的集,它的每一項(xiàng)都由多項(xiàng)式次數(shù)或權(quán)重wk來表征,其中k=i+j且其范圍是0~2n-2。然后,部分積可由加法結(jié)構(gòu)(由標(biāo)記)的第一組23來接收,這些加法結(jié)構(gòu)根據(jù)每個(gè)多項(xiàng)式次數(shù)或權(quán)重來分開(由實(shí)線25標(biāo)記)。這些加法結(jié)構(gòu)將乘積項(xiàng)pi,j減為一個(gè)和項(xiàng)Sk集和一個(gè)進(jìn)位項(xiàng)ek+1集。(對(duì)于給定權(quán)重k,可有若干進(jìn)位項(xiàng)線ek+1。)由于第一階段加法對(duì)每個(gè)次數(shù)或權(quán)重分開執(zhí)行且未輸入任一加法操作所導(dǎo)致的任何進(jìn)位,所以和項(xiàng)sk表示為多項(xiàng)式乘積項(xiàng),并可沿著比特線27提取以形成多項(xiàng)式乘積系數(shù)dk,其中k的范圍仍然是從0到2n-2。在該提取過程中,任意對(duì)相等多項(xiàng)式次數(shù)的項(xiàng)目之和可異或,以便于產(chǎn)生每個(gè)次數(shù)的單個(gè)乘積比特。和項(xiàng)sk和進(jìn)位項(xiàng)ek+1輸入到第二組加法結(jié)構(gòu)29(還是由標(biāo)記)中。但在此處,任何進(jìn)位項(xiàng)(由穿過虛線權(quán)重邊界的對(duì)角線31標(biāo)記)都包括在加法結(jié)構(gòu)的輸入中。由進(jìn)位傳送加法器、進(jìn)位保存加法器、或4到2簡(jiǎn)化器的陣列可以完成第二階段加法,以減少表示自然乘積比特ck的一系列輸出33,其中因?yàn)榻Y(jié)合了進(jìn)位項(xiàng),現(xiàn)在k的范圍是0到2n-1。因而,多項(xiàng)式和自然乘法乘積都可獲得并從電路輸出。這通常不會(huì)比常規(guī)的快速自然乘法架構(gòu)慢太多。實(shí)際上,由于某些優(yōu)化結(jié)構(gòu)因?yàn)閷?duì)進(jìn)位項(xiàng)加法必須延遲到第二組加法結(jié)構(gòu)的要求而遭排除的事實(shí),而使該架構(gòu)會(huì)與類似結(jié)構(gòu)的其它乘法器一樣快。至于尺寸,提取二進(jìn)制乘積的附加硬件是可忽略的,例如一些額外的比特線或一些額外的XOR門。值得注意的是,盡管所示實(shí)施例是兩個(gè)n-比特操作數(shù)相乘,但是本發(fā)明在具有不同大小的操作數(shù)的非對(duì)稱情形中也能很好地工作(m×n乘法和乘法-累加,包括1×n+n乘法-累加操作)。
在圖4中,可以看到部分積產(chǎn)生電路是由AND門組成的。每個(gè)AND門41接收對(duì)應(yīng)于操作數(shù)比特ai和bj的兩個(gè)輸入。AND門輸出該對(duì)操作數(shù)比特的部分積Pi,j,并組成相同多項(xiàng)式次數(shù)或權(quán)重k(=i+j)的部分積。也可使用其它部分乘積產(chǎn)生電路。例如,它們可以是NAND門,只要在其后某個(gè)點(diǎn)上能邏輯恢復(fù)正確的極性。該恢復(fù)步驟可在加法器陣列之后,就當(dāng)我們具有carryOut(結(jié)果),sum=a+b+c,則我們也可具有not(carryOut),not(sum)=not(a)+not(b)+not(c)(not為非操作)。相類似,我們可根據(jù)極性的慣例來使用OR門或NOR門;或者在輸入或輸出處使用相反極性工作的加法器。
參照?qǐng)D5-7,相同次數(shù)或權(quán)重的部分積項(xiàng)可加入到例如大部分由全加法器所組成的加法器電路。全加法器是眾所周知的電路元件,它可累加三個(gè)輸入以產(chǎn)生和與進(jìn)位。輸入可以是來自該電路部分的其它加法器的相同次數(shù)或權(quán)重的部分積、或從加法器的下一更低權(quán)重部分接收的進(jìn)位項(xiàng)。所有由加法器所產(chǎn)生的進(jìn)位項(xiàng)具有下一更高的權(quán)重,并提供給相鄰的電路部分(用于自然乘法)。圖5-7的該加法器電路一共具有八個(gè)部分積輸入Pi,j,其中i,j范圍從0-7且權(quán)重為i+j=7。各個(gè)電路還具有6個(gè)進(jìn)位輸入、6個(gè)進(jìn)位輸出、以及2個(gè)自然乘積輸出項(xiàng)。兩個(gè)輸出項(xiàng)是典型的情形,其中在最后,快速加法器(進(jìn)位前瞻、進(jìn)位選擇等)將在每一個(gè)不同部分中收集兩條輸出線來計(jì)算最后的結(jié)果。其它架構(gòu)可在所考慮權(quán)重中產(chǎn)生一條或兩條以上輸出線。圖6和7還提供多項(xiàng)式乘積輸出項(xiàng)。不同權(quán)重的其它加法器部分可具有不同數(shù)量的部分積輸入。在圖5-7中,進(jìn)位輸入和進(jìn)位輸出對(duì)齊,就像各部分都相同一樣。這是接近于實(shí)際情況的,即使在部分積輸入的數(shù)量隨著權(quán)重的增加而增加(或減少)的任何情況下可能會(huì)少一個(gè)(或多一個(gè))進(jìn)位輸入項(xiàng)。(隨著權(quán)重增加,部分積輸入的數(shù)量在乘法的LSB部分增加而在乘法的MSB部分減少。)在圖5中,現(xiàn)有技術(shù)的進(jìn)位保存加法器部分采用全加法器51-53累加盡可能多的部分積,而不接收進(jìn)位輸入(在此為8個(gè)部分積輸入中的7個(gè))。即使這樣,第八個(gè)部分積項(xiàng)可加到全加法器54中的進(jìn)位項(xiàng)輸入c7。隨后,由全加法器55-57進(jìn)行的加法來累加各全加法器53和54的和,并累加進(jìn)位輸入c7。下一更高權(quán)重的進(jìn)位項(xiàng)c8可輸入到相鄰部分中。該加法器部分提供一個(gè)和輸出,它可在隨后的進(jìn)位傳送加法器階段中添加到任一剩余的進(jìn)位輸入項(xiàng)。該安排可在4個(gè)加法器延遲中執(zhí)行8到2簡(jiǎn)化。因?yàn)閳D5是僅用于自然乘法器的加法器部分,所以有限域乘法的二進(jìn)制乘積不可用。
圖6的進(jìn)位保存排列基本上與圖5相同,除了多項(xiàng)式乘積比特通過XOR加法來創(chuàng)建。在圖6中,加法器的經(jīng)修改進(jìn)位保存排列仍具有8個(gè)相等權(quán)重(i+j=k=7)的部分積輸入。其次,其中7個(gè)項(xiàng)可由全加法器61-63來累加。最后的和,與第八個(gè)部分積輸入一起在線67和68上提取,并輸入到XOR門69,以獲取多項(xiàng)式7次項(xiàng)PMUL7。來自加法器63的和、第八個(gè)部分積輸入、以及進(jìn)位輸入c7都使用全加法器64-66累加在一起以獲得和項(xiàng),然后與剩下的一個(gè)進(jìn)位輸入項(xiàng)一起由進(jìn)位傳送加法器進(jìn)行隨后的加法,以獲取相應(yīng)的自然乘法比特。因此,經(jīng)修改的電路可執(zhí)行與圖6一樣的加法,但使用了額外的XOR門來提取多項(xiàng)式乘積項(xiàng)。加法器延遲與圖5電路并無較大不同。
在圖7中,對(duì)圖5進(jìn)位保存排列的不同修改是引入了半加法器電路。半加法器是眾所周知的,僅取兩個(gè)輸入并生成和與進(jìn)位輸出的電路。使用半加法器使得圖7所示的所有八個(gè)部分積輸入得以累加。三個(gè)輸入由第一全加法器71處理,另三個(gè)輸入由第二全加法器72處理,而最后的兩個(gè)輸入由半加法器73處理。所有三個(gè)加法器71-73的和輸出由全加法器74累加以獲得多項(xiàng)式乘積項(xiàng)PMUL7。將加法器74的和輸出添加到進(jìn)位輸入c7由全加法器75-77處理。其次,對(duì)加法器延遲并沒有太大影響。圖7所示的實(shí)施例相對(duì)于圖5需要一個(gè)額外的半加法器、以及一個(gè)額外的進(jìn)位項(xiàng)。(該額外進(jìn)位項(xiàng)歸因于全加法器從來不使用和與進(jìn)位輸出的全部組合的事實(shí)。實(shí)際上,(進(jìn)位,和)=(1,1)的情形是不可能的。)參照?qǐng)D8a-g,擴(kuò)展了圖6所示的實(shí)施例,示出具有不同數(shù)量部分積輸入的多個(gè)排列。僅當(dāng)有偶數(shù)個(gè)部分積輸入時(shí)才需要額外的XOR門。對(duì)于奇數(shù),加法器在加進(jìn)位之前就減為單個(gè)和項(xiàng)。因此,對(duì)于奇數(shù)數(shù)量的部分積輸入,該部分僅需一條額外比特線來提取多項(xiàng)式乘積比特項(xiàng)PMULi。除這兩個(gè)輸入情形外,加法架構(gòu)的遞增側(cè)(次數(shù)或權(quán)重從0到n-1)具有少一個(gè)的進(jìn)位輸入,因此只有一個(gè)對(duì)隨后的進(jìn)位傳送加法器階段的和輸入。對(duì)于從n到2n-2的次數(shù)或權(quán)重,有通過該部分提供給進(jìn)位傳送加法器階段的和與進(jìn)位輸入。對(duì)于較大的乘法器,例如32×32,全加法器和XOR門的序列可繼續(xù)在乘法的LSB部分?jǐn)U展,其中偶數(shù)個(gè)部分積輸入需要該部分具有一個(gè)XOR門來提供多項(xiàng)式乘積項(xiàng)。類似的過程也在半加法器(需要偶數(shù)數(shù)量的部分乘法輸入)的使用中出現(xiàn)。
圖6、7和8A-8G表示根據(jù)本發(fā)明的優(yōu)選實(shí)施例的示例性實(shí)現(xiàn)。然而,本發(fā)明的其它實(shí)現(xiàn)也是可能的。例如,盡管以上所示實(shí)現(xiàn)對(duì)具有偶數(shù)數(shù)量的部分積輸入使用了一個(gè)XOR或半加法器,其它可能實(shí)現(xiàn)可選擇具有一個(gè)以上XOR或半加法器,或在使用奇數(shù)數(shù)量的部分積輸入的情形中也使用一個(gè)XOR或半加法器。盡管根據(jù)門的數(shù)量這些可選方案未達(dá)最優(yōu),仍然可因?yàn)楹?jiǎn)便的設(shè)置、可映射到FPGA器件或某些其它原因而選擇它們。此外,XOR或半加法器在加法器樹上的位置可與圖中所示有變化。此外,盡管圖6和7所示結(jié)構(gòu)具有相等數(shù)量的進(jìn)位輸入和進(jìn)位輸出,圖8A-8G示出并不需要總是如此。并且,盡管以上實(shí)現(xiàn)用全加法器、半加法器或XOR門建立,但是也可使用諸如4到2簡(jiǎn)化器的其它構(gòu)件。
乘法-加法C=A·B+z的情形可適用于乘法累加C=A·B+C或C=A·B+F·G+K·L,并用于計(jì)算被乘數(shù)的乘積,這些被乘數(shù)的一個(gè)或兩個(gè)都比乘法器硬件要寬,例如,使用32比特寬的乘法電路進(jìn)行160比特寬的乘法。在這些情形中,要累加的數(shù)可視為它好像是要累加的另一個(gè)部分積集。對(duì)于自然乘法-加法的情形,所有進(jìn)位都被可包括在該結(jié)果中。對(duì)于具有GF(2)中系數(shù)的多項(xiàng)式乘法-加法,所有進(jìn)位都不跨越多項(xiàng)式次數(shù)邊界,因此可忽略。
對(duì)于自然乘法,較大寬度的處理可簡(jiǎn)約成一序列乘法和加法的操作。對(duì)于L個(gè)比特的硬件字寬度和M個(gè)字的操作數(shù)寬度,即,P=M·L比特,并用自然方式來處理操作數(shù),A=SUMi(Ai·2i),i=0,...,P-1,我們可有選擇地通過字來表示操作數(shù),A=SUMj(jA·wj),其中w=2L,作為字jA中的左指數(shù)用于字指數(shù),指數(shù)j=0,...,M-1,比特jA=Aj·L+i。然后,兩個(gè)操作數(shù)A和B的乘積是A·B=SUMk(SUMi+j=k(iA·jB)·wk)量SUMi+j=k(iA·jB)是相同權(quán)重的乘積之和,因此寬的乘法可通過一系列乘法(iA·jB)和加法(SUMk)操作來完成。一般而言,每個(gè)乘法操作的結(jié)果在2L比特上對(duì)乘法編碼,再加上另一些對(duì)加法編碼的比特就完成了。當(dāng)處理k+1指數(shù)時(shí),應(yīng)隨后加入w上的結(jié)果,即,具有大于或等于L的權(quán)重的結(jié)果比特。
對(duì)于具有GF(2)中系數(shù)的多項(xiàng)式乘法,再次使用以上對(duì)自然乘法使用的符號(hào),但是用符號(hào)*來表示多項(xiàng)式乘法。A=SUMi(Ai·Xi),i=0,...,P-1。這由L比特硬件處理為A=SUMj(jA·wj),其中jA是L比特多項(xiàng)式,j=0,...,M-1且w=XL。jA多項(xiàng)式被定義為jA=SUMi(Aj·L+1·xi)其中i=0,...,L-1。然后多項(xiàng)式乘積為A*B=SUMk(XORi+j=k(iA*jB)·wk)k=0,...,2M-2,其中量Xk=XORi+j=k(iA*jB)是相同次數(shù)的多項(xiàng)式部分積的多項(xiàng)式和,所有系數(shù)都具有GF(2)中的值,即,不引用進(jìn)位?;径囗?xiàng)式乘積就在2L-2比特中編碼并且不添加額外的比特,因?yàn)槎囗?xiàng)式加法不會(huì)導(dǎo)致次數(shù)增大。當(dāng)處理k+1指數(shù)時(shí),應(yīng)通過多項(xiàng)式的多項(xiàng)式加法(即XOR)隨后加入w上的結(jié)果,即,具有大于或等于L的權(quán)重的結(jié)果比特。
更可能的進(jìn)一步改進(jìn)是將乘法和加法結(jié)合于乘法-加法操作中。大多數(shù)人通常將乘法-加法操作C=A·B+C視為先進(jìn)行乘法產(chǎn)生之間結(jié)果A·B,然后進(jìn)行加法獲得最終結(jié)果。然而,這并非是必須的,并可構(gòu)件乘法加法硬件來結(jié)合乘法和加法,其中部分積和累加比特或系數(shù)都可加到一起。即,從部分積(Ai·Bj),將它們與適當(dāng)權(quán)重的累加比特Ck加在一起。我們僅需提供可從附加C總線輸入比特Ck的加法器陣列。在具有GF(2)中系數(shù)的多項(xiàng)式的乘法-加法情形中,我們用不加區(qū)分的方式將部分積比特和累加比特輸入加法器陣列的輸入端,并異或相同權(quán)重的所有項(xiàng)而不涉及任何進(jìn)位比特D=A*B+C=SUMk(XORi+j=k(AND(Ai,Bj),Ck)·2k)對(duì)于具有GF(2)中系數(shù)的多項(xiàng)式的乘法-加法,我們必須在次數(shù)為k的電路部分輸入端置入要從C添加的所有必需的部分積,以及次數(shù)為k的多項(xiàng)式系數(shù),并建立加法陣列的電路部分,從而這些輸入的和可用作該電路部分的多項(xiàng)式輸出D=A*B+C=SUMk(SUMi+j=k(iA,jB),kC)·wk)其中指數(shù)在此是指N比特多項(xiàng)式系數(shù)的權(quán)重。
乘法-加法操作的結(jié)合還可進(jìn)一步推廣為包括,例如A1*B1+A2*B2+C,其中A1*B1是當(dāng)前要執(zhí)行的乘法,A2*B2是用于模塊式提取的Montgomery(或Barrett)的恒定算法,且C允許累加或擴(kuò)展為寬的數(shù)。此外,盡管以上描述主要用于有限域操作的多項(xiàng)式乘法部分,但是有限域中的多項(xiàng)式簡(jiǎn)化操作也可在乘法之后進(jìn)行,甚至結(jié)合到組合的有限域乘法-簡(jiǎn)化操作。乘法器電路可執(zhí)行的可能操作包括M=1情形中的N×M-字乘法操作。例如,可執(zhí)行乘以一字常數(shù)b然后可能有累加步驟的乘法(A*b或A*b+C),以擴(kuò)展為多倍較大尺寸。類似地,上述兩次乘法和加法情形可應(yīng)用于自然或多項(xiàng)式乘法中的單字被乘數(shù)b1和b2(A1*b1+A2*b2+C),并在后一乘法中可有或沒有隨后的模塊化簡(jiǎn)化(Barrett、Montgomery或其它類型)??商峁﹥蓚€(gè)或多個(gè)并聯(lián)乘法器單元來完成多個(gè)一般操作,其中根據(jù)本發(fā)明這些單元的至少之一可選擇用于自然或多項(xiàng)式乘積輸出。
這樣,我們已經(jīng)描述了能夠處理多項(xiàng)式或正整數(shù)的乘法器。本發(fā)明也可適用于處理負(fù)整數(shù)。例如,2的補(bǔ)碼符號(hào)可用來表示正數(shù)和負(fù)數(shù)A=-an·2n+an-1·2n-1+...+a0·20,其中an是“符號(hào)比特”。如果an=1,則A是負(fù)的;如果an=0,則A是正的或等于0。具有(n+1)個(gè)比特,a的值的范圍可從-2n直到2n-1。對(duì)于2的補(bǔ)碼,自然乘法為
A·B=an·bn·22n-an(bn-1·22n-1+…+b0·2n)-bn(an-2·22n-1+…+a0·2n)+SUM0≤i,j<n(ai·bj·2i+j)=ab·bn·22n-22n+1+2n+1+[an·bn-1‾·22n-1+···+an·b0‾·2n]+[bn·an-1‾·22n-1]]>+···+bn·a0‾·2n]+SUM0≤i,j<n(ai·bj·2i+j)]]>最后一項(xiàng)SUM0≤i,j<n(ai·bj·2i+j)等于n*n比特的正乘法。在該部分,我們可簡(jiǎn)便地提取多項(xiàng)式乘法,正如本文檔前面所述,只要我們組織該乘法器架構(gòu)使得在計(jì)算中剩余各項(xiàng)中不存在干擾即可。
所有這些其它項(xiàng),即高權(quán)重、已求反的部分積、和2n+1常數(shù),必須累加以獲取自然乘法結(jié)果。然而,由于加法是相互關(guān)聯(lián)并可互換的,如果加法是在該流程的后來執(zhí)行,結(jié)果不會(huì)改變。為了以最優(yōu)速度和成本來執(zhí)行這些項(xiàng)的累加,最好在一完成多項(xiàng)式提取時(shí)就加入這些要累加的項(xiàng)。
圖9示出乘法器架構(gòu)的部分框圖,其中,加法器結(jié)構(gòu)適用于實(shí)現(xiàn)前述2的補(bǔ)碼乘法。在圖9中,可看到兩個(gè)相鄰權(quán)重的加法器階段91k和91k+1分別包括第一加法階段95k和95k+1,其中,添加特定權(quán)重(k或k+1)的正的部分積93k和93k+1不使用任何進(jìn)位項(xiàng),以便在異或輸出的加法器階段97k和97k+1上獲取相同權(quán)重的多項(xiàng)式乘積比特。這些多項(xiàng)式比特可像前面實(shí)施例一樣地提取以產(chǎn)生多項(xiàng)式乘積。進(jìn)一步的加法步驟99k和99k+1接收多項(xiàng)式比特97k和97k+1,以及從下一較低權(quán)重的第一加法階段輸出的進(jìn)位項(xiàng)101k和101k+1。為了處理正整數(shù)和負(fù)整數(shù),2的補(bǔ)碼形式的eiuuggtr0.g.、已求反的部分積、和2n+1常數(shù)(以及上述等式中的其它項(xiàng)),在相應(yīng)權(quán)重的比特線103k和103k+1上輸入到下一加法階段99k和99k+1(即2n+1僅向權(quán)重n+1的加法器階段99n+1提供)。進(jìn)一步的加法步驟99k和99k+1輸出自然乘積比特105k和105k+1。
這種乘法器能夠支持(1)n*n正乘法,通過使符號(hào)位為零;(2)(n+1)*(n+1)的2的補(bǔ)碼乘法;(3)n*n的2補(bǔ)碼乘法,通過符號(hào)擴(kuò)展到(n+1)比特;以及(4)n*n多項(xiàng)式乘法,通過多項(xiàng)式乘積比特提取,如上所述。
同樣的方法也可應(yīng)用于m*n乘法或乘法-加法,通過(a)符號(hào)擴(kuò)展以便僅具有多項(xiàng)式乘法(-加法)的輸入線的正表示;(b)分開處理與多項(xiàng)式乘法(加法)相關(guān)的各條線,即部分積、通過加法器異或、半加法器、或簡(jiǎn)單異或;(c)提取多項(xiàng)式結(jié)果;以及(d)僅在已提取多項(xiàng)式結(jié)果之后合并陣列加法。
權(quán)利要求
1.一種提供具有GF(2)上系數(shù)的多項(xiàng)式乘法乘積和自然乘法乘積的并聯(lián)乘法器硬件架構(gòu),其特征在于,所述乘法器架構(gòu)包括AND門陣列,其輸入與操作數(shù)比特相連,而輸出提供一個(gè)所述操作數(shù)比特的部分積的完整集,各個(gè)部分積可由比特重要性或“權(quán)重”表征;加法架構(gòu),安排成累加所述相同權(quán)重的部分積,所述加法架構(gòu)分多個(gè)階段構(gòu)建,第一組階段可安排成添加部分積而不從所述加法架構(gòu)的較低權(quán)重部分接收任何進(jìn)位輸入,第二組階段可安排成將來自所述加法架構(gòu)的較低權(quán)重部分的進(jìn)位輸入加到來自前面階段的結(jié)果中,兩個(gè)組中的階段都向所述加法架構(gòu)的較高權(quán)重部分提供進(jìn)位輸出;以及連接所述第一組階段和所述第二組階段之間的裝置,用于提取所述第一階段加法結(jié)果作為多項(xiàng)式乘法乘積,所述自然乘法乘積可從所述第二組階段末端提取。
2.如權(quán)利要求1所述的乘法器架構(gòu),其特征在于,所述加法架構(gòu)包括并聯(lián)計(jì)數(shù)器的級(jí)聯(lián)階段,其中在每一列相同權(quán)重的部分積中有至少一個(gè)計(jì)數(shù)器,且其中用于提取的裝置包括與所述最低有效位比特相連的比特線,表示來自所述級(jí)聯(lián)中每個(gè)第一計(jì)數(shù)器的多項(xiàng)式乘積系數(shù)。
3.如權(quán)利要求1所述的乘法器架構(gòu),其特征在于,所述加法架構(gòu)包括安排成用于累加所述部分積和進(jìn)位的一系列全加法器,每個(gè)全加法器可接收三個(gè)相同權(quán)重的輸入,并提供相同權(quán)重的和輸出和下一較高權(quán)重的進(jìn)位輸出,第一組加法器不接收任何進(jìn)位項(xiàng)作為輸入,所述第一組加法器可安排成將給定權(quán)重的部分積減為和項(xiàng),所述用于提取的裝置包括與所述最低有效位比特相連的比特線,所述第二組加法器接收給定權(quán)重的進(jìn)位輸入與和項(xiàng),并可安排為將所述進(jìn)位輸入與和項(xiàng)減為自然乘積比特。
4.如權(quán)利要求3所述的乘法器架構(gòu),其特征在于,所述第一組加法器包括至少一個(gè)XOR門,用于將一對(duì)項(xiàng)減為一個(gè)項(xiàng)。
5.如權(quán)利要求3所述的乘法器架構(gòu),其特征在于,所述加法架構(gòu)還包括至少一個(gè)與所述第一組加法器相連的半加法器,用于將一對(duì)項(xiàng)減為一個(gè)項(xiàng)。
6.如權(quán)利要求1所述的乘法器架構(gòu),其特征在于,所述AND門陣列接收操作數(shù)比特并提供一個(gè)以上乘法的部分積,且所述加法架構(gòu)累加相同權(quán)重的來自所述一個(gè)以上乘法的部分積,以提供形式為(SUM[Ai*Bi])的多項(xiàng)式和自然乘法結(jié)果,其中Ai和Bi是操作數(shù),且任何Bi操作數(shù)可以是一個(gè)字的常數(shù)。
7.如權(quán)利要求6所述的乘法器架構(gòu),其特征在于,所述加法架構(gòu)還累加至少一個(gè)累加或常數(shù)項(xiàng)的相同權(quán)重相對(duì)應(yīng)比特的部分積,以提供形式為(SUM[Ai*Bi]+SUM[Ci])的多項(xiàng)式和自然乘法結(jié)果,其中Ci是所述累加或常數(shù)項(xiàng)。
8.一種在并聯(lián)乘法器硬件架構(gòu)中使兩個(gè)n比特操作數(shù)相乘以獲取具有GF(2)系數(shù)的多項(xiàng)式乘法乘積和自然乘法乘積的方法,其特征在于,所述方法包括用所述硬件架構(gòu)的門陣列產(chǎn)生一個(gè)來自操作數(shù)比特的部分積的完整集合,每個(gè)部分積可由比特重要性或“權(quán)重”表征,所述權(quán)重等于從中產(chǎn)生部分積的操作數(shù)比特權(quán)重的和;在加法架構(gòu)的多個(gè)階段中累加所述相同權(quán)重的部分積,第一組階段累加所述部分積而不使用來自較低權(quán)重加法的任何相同權(quán)重的進(jìn)位結(jié)果,每個(gè)加法產(chǎn)生下一更高權(quán)重的進(jìn)位,第二組階段累加來自所述第一組階段的和結(jié)果與所述相同權(quán)重的進(jìn)位項(xiàng);以及從作為加法架構(gòu)的第一組階段的輸出而獲取的和結(jié)果中提取多項(xiàng)式乘積系數(shù),并從作為加法架構(gòu)的第二組階段的輸出而獲取的和結(jié)果中提取自然乘積比特。
9.如權(quán)利要求8所述的乘法方法,其特征在于,所述累加相同權(quán)重的部分積包括通過二進(jìn)制計(jì)數(shù)器電路計(jì)數(shù)具有二進(jìn)制值為1的部分積數(shù)量,以提供具有與所計(jì)數(shù)部分積相同的權(quán)重的最低有效位比特的計(jì)數(shù)值,然后使用從前面計(jì)數(shù)器階段獲取的計(jì)數(shù)值比特來重復(fù)計(jì)數(shù)器階段級(jí)聯(lián)的所述計(jì)數(shù)步驟,直到剩下每個(gè)權(quán)重最大的兩個(gè)比特,然后用硬件加法器陣列對(duì)所述剩余比特對(duì)執(zhí)行與進(jìn)位的最后加法操作,以獲取所述自然乘法乘積;以及其中,提取所述多項(xiàng)式乘積系數(shù)包括提取從所述第一計(jì)數(shù)步驟中所獲取的最低有效位比特。
10.如權(quán)利要求8所述的乘法方法,其特征在于,所述累加相同權(quán)重的部分積只需用全加法器電路來實(shí)現(xiàn),所述各個(gè)全加法器電路都具有三個(gè)操作數(shù)輸入、和輸出和進(jìn)位輸出。
11.如權(quán)利要求8所述的乘法方法,其特征在于,所述累加部分積包括在所述第一組階段中使用至少一個(gè)半加法器電路。
12.如權(quán)利要求8所述的乘法方法,其特征在于,所述提取多項(xiàng)式乘積系數(shù)包括在所述第一組階段中應(yīng)用與邏輯門的至少一個(gè)XOR操作。
13.如權(quán)利要求8所述的乘法方法,其特征在于,所述由門陳列從操作數(shù)比特中產(chǎn)生部分積可由一個(gè)以上乘法操作進(jìn)行,且其中由所述加法架構(gòu)累加所述部分積以獲取多項(xiàng)式乘積系數(shù)和自然乘積的結(jié)果也由一個(gè)以上乘法操作進(jìn)行,使得所述結(jié)果具有(SUM[Ai*Bi])的形式,其中所述Ai和Bi是操作數(shù),而任一Bi操作數(shù)可以是一個(gè)字的常數(shù)。
14.如權(quán)利要求13所述的乘法方法,其特征在于,所述由加法架構(gòu)所執(zhí)行的所述加法步驟還包括累加至少一個(gè)累加或常數(shù)項(xiàng)的相同權(quán)重所相對(duì)應(yīng)的部分積,以提供形式為(SUM[Ai*Bi]+SUM[Ci])的多項(xiàng)式和自然乘法結(jié)果,其中Ci是所述累加或常數(shù)項(xiàng)。
全文摘要
集成電路并聯(lián)乘法電路可提供自然乘法乘積和具有GF(2)上系數(shù)的多項(xiàng)式乘積。并聯(lián)乘法器硬件架構(gòu)(圖3)安排成部分積(P
文檔編號(hào)G06F7/52GK1781076SQ200480009432
公開日2006年5月31日 申請(qǐng)日期2004年3月22日 優(yōu)先權(quán)日2003年4月4日
發(fā)明者V·杜帕丘斯, L·帕利斯 申請(qǐng)人:愛特梅爾股份有限公司