引言
在微處理器芯片中,乘法器是進行數字信號處理的核心,同時也是微處理器中進行數據處理的關鍵部件。乘法器完成一次操作的周期基本上決定了微處理器的主頻。乘法器的速度和面積優化對于整個CPU的性能來說是非常重要的。為了加快乘法器的執行速度,減少乘法器的面積,有必要對乘法器的算法、結構及電路的具體實現做深入的研究。
基4Booth算法與乘法器的一般結構
乘法器工作的基本原理是首先生成部分積,再將這些部分積相加得到乘積。在差模電感器目前的乘法器設計中,基4Booth算法是部分積生成過程中普遍采用的算法。對于N位有符號數乘法A×B來說,常規的乘法運算會產生N個部分積。如果對乘數B進行基4Booth編碼,每次需考慮3位:相鄰高位、本位和相鄰低位,編碼后產生部分積的個數可以減少到[(N+1)/2] ([X]取值為不大于X的整數),確定運算量0、±1A、±2A。對于2A的實現,只需要將A左移一位。因此,對于符號數乘法而言,基4 Booth算法既方便又快捷。而對于無符號數來說,只需對其高位作0擴展,而其他處理方法相同。雖然擴展后可能導致部分積的個數比有符號數乘法多1,但是這種算法很好地保證了硬件上的一致性,有利于實現。對于32位乘法來說,結合指令集的設計,通常情況下需要相加的部分積不超過18個。
對部分積相加,可以采用不同的加法器陣列結構。而不同的陣列結構將直接影響完成一次乘法所需要的時間,因此,加法器陣列結構是決定乘法器性能的重要因素。重復陣列(Iterative Array,簡稱IA)和Wal繞行電感lace樹型結構是最為典型的兩種加法器陣列結構。IA結構規整,易于版圖實現,但速度最慢且面積大;理論上,Wallace樹型結構是進行乘法操作最快的加法器陣列結構,但傳統的Wallace樹型結構電路互連復雜,版圖實現困難。為了解決這個問題,人們推出了一些連接關系較為簡單的樹型結構,例如ZM樹和OS樹。它們都是將IA樹分為幾段,每段稱之為子樹,大功率電感貼片電感器子樹內部連接采用IA結構,而子樹間采用樹型連接,以此來降低連接復雜度,但是這種方法降低了部分積相加的速度。
在對樹型結構進行改進的同時,設計者們也嘗試了對加法陣列中基本加法單元的改進。Wallace最早提出的方案中,是以CSA(進位保留加法器)作為基本單元構建加法陣列的。其基本方法是:通過CSA部件,以3∶2的壓縮比對部分積進行逐級壓縮,直到最后只產生兩個輸出為止,再通過進位傳遞加法器對產生的這兩個偽和與局部進位相加得出真正的結果。此后,Dadda提出了一種新的加法單元,稱為“(j,k)計數器”,它有j個輸入和k個輸出,其中j≦2k。經過研究和實踐,人們發現4-2壓縮器(實際上是5-3計數器)具有較好的平衡性和對稱性,用其作為基本加法單元構成的乘法器在總體性能上具有一定的優勢,因此4-2壓縮器也就成為了目前乘法器中較多采用的加法單元。
圖1中列舉了乘法器中幾種加法器陣列的結構,它們都采用4-2壓縮器作為基本加法單元來完成對18個部分積的加和。圖中每個矩形代表一組4-2壓縮器,帶箭頭的線段表示部分積與中間結果。
(a)IA陣列(b)Wallace樹
(c)一階OS樹(d)參考文獻[5]中的樹型結構
圖1 對18個部分積相加所采用的加法陣列結構
如前所述,圖1(a)中的IA陣列,結構最為規整,但很明顯,其延時級數大大多于其他結構。(b)是Wallace樹結構,由于采用4-2壓縮器作為唯一的加法單元,而18不能被4整除,因此在對18個部分積的求和過程中,必然要對其中的兩個部分積深圳電感做額外處理。Wallace樹采取的方法是:先將16個部分積通過三級4-2壓縮器后產生兩個結果,然后與剩下的兩個部分積一起再進行一級4-2壓縮。(c)中的一階OS樹結構也采用了類似的方法,只是在處理的先后順序上有所改變。這兩種結構,都破壞了樹的對稱性,造成路徑的不等長,因此浪費了硬件資源,且增加了布局布線的復雜度。(d)是參考文獻[5]中提出的一種經過改進的樹型結構,其求和過程是:將18個部分積分為3組,先對每組中的6個部分積求和,各產生兩個中間結果,再把這6個中間結果相加。由于對每組中的6個部分積求和,可以采用相同結構的兩組4-2壓縮器,這樣就很好地降低了布局布線的復雜度。其缺點在于:用4-2壓縮器對6個中間結果進行相加的過程中,仍不能避免路徑不平衡的問題,因此,還是使關鍵路徑的延時有不必要的增加。 大功率電感廠家 |大電流電感工廠