車文博 劉衡竹 田甜
摘要:針對高性能M型數字信號處理器(M-DSP)對浮點運算的性能、面積和功耗要求,研究分析了M-DSP總體結構和浮點運算的指令特點,設計和實現了一種高性能低功耗的浮點乘累加器(FMAC)。該乘加器采用單、雙精度通路分離的主體結構,分為六級流水站執(zhí)行,對乘法器、對階移位等關鍵模塊進行了復用設計,支持雙精度和單精度浮點乘法、乘累加、乘累減、單精度點積和復數運算。對所設計的乘加器進行了全面的驗證,基于45nm工藝采用Synopsys公司的Design Compiler工具綜合所設計的代碼,綜合結果表明運行頻率可達1GHz,單元面積36856μm2;與FT-XDSP中的乘加器相比,面積節(jié)省了12.95%,關鍵路徑長度減少了2.17%。
關鍵詞:浮點乘法;浮點乘累加器;浮點點積;布斯算法;IEEE754
中圖分類號:TP332.2
文獻標志碼:A
0引言
數字信號處理器(Digital Signal Processor, DSP)從專用信號處理器開始發(fā)展到今天的超長指令字(Very Long Instruction Word, VLIW)陣列處理器,其應用領域已經從最初的語音、聲納等低頻信號的處理發(fā)展到今天雷達、圖像等視頻大數據量的信號處理。由于浮點運算和并行處理技術的應用,信號處理能力已得到極大的提高。隨著數字信號處理器在處理速度和運算精度兩個方向的發(fā)展,體系結構中數據流結構甚至人工神經網絡結構等,將可能成為下一代數字信號處理器的基本結構模式。近些年,從傳統DSP結構中已不能有效地提高DSP處理器的性能,許多新的提高DSP性能的方法被提出[1]。其中提高頻率的方法已達到瓶頸階段,最有效的途徑是提高并行性。數字信號處理領域的核心算法根據運算類型可以分為兩大類:一類是以密集的浮點乘加運算為典型的信號處理算法,包括快速傅里葉變換(Fast Fourier Transformation, FFT)[2-3]、有限沖激響應(Finite Impulse Response,FIR)和離散傅里葉變換(Discrete Fourier Transform, DFT)等算法;另一類是以密集的復數矩陣操作為主的算法,包括信道估計和多輸入多輸出(Multiple-Input Multiple-Output, MIMO)均衡[4]等算法。這兩類算法均需要DSP處理器提供較高的浮點乘加運算的計算性能。第一類算法主要是進行乘加運算(a*b+c),第二類算法主要進行大量的復數矩陣乘和矩陣求逆等運算,而在這些運算中都存在密集的乘后加運算(a*c+c*d)。浮點乘累加器(Floating-point Multiply ACcumulate, FMAC)已經成為提高并行計算以減少計算延時的有效方法,其運算能力已經成為衡量數字信號處理器DSP性能的一個重要特征。
浮點乘加結構已被研究多年,IBM學者Montoye和Hokenek于1990年最先提出了融合乘加的概念[5],即將乘法和加法融合成一條指令執(zhí)行,并將加法操作融合在乘法的部分積壓縮陣列中,從而減少硬件開銷和延時;這種乘加結構的主要缺點是求和尾數長且結果尾數舍入延時長。Lang等[6]于2004年提出了低延時融合乘加結構,這種結構采用前導零預測(Leading Zero Anticipation, LZA),將尾數舍入和加法合并,并在尾數加法之前進行規(guī)格化移位。目前大多數處理器中的浮點乘加設計實現均采用這種技術,為進一步提高浮點融合乘加結構的并行度以提升浮點乘加器的性能,Lang等[7]于2005 年設計了雙通路浮點融合乘加結構,該乘加結構主要優(yōu)點是延時更低、處理性能得到進一步提高;但該乘加結構邏輯設計復雜,硬件資源消耗大。國防科技大學研制的FT-XDSP中設計了多功能快速浮點融合乘加運算單元[8],但該設計硬件資源消耗太多,功耗過大。
本文基于高性能計算的應用需求,以M型數字信號處理器(M-DSP)為研究背景,深入研究FMAC的各功能模塊和流水線結構,對已有浮點融合乘加結構[9]的關鍵模塊和算法進行了研究與優(yōu)化,設計了6級流水線結構的FMAC單元,可支持雙精度和單精度浮點乘法、乘累加、乘累減、單精度點積和復數運算。對所設計的FMAC單元的寄存器傳送語言(Register Transfer Language, RTL)代碼實現進行了仿真測試,并基于45nm工藝采用Synopsys公司的DC(Design Compiler)對硬件實現進行了綜合,運行頻率可達1GHz。
1M-DSP處理器體系結構
M-DSP總體結構設計如圖1所示。M-DSP 是自主研發(fā)的一款具有自主知識產權的高性能DSP,目標頻率1GHz。內核采用新型的哈佛結構,采用可變長的11發(fā)射超長指令字結構,可以同時并行取指和派發(fā)11條指令。M-DSP中內核結構主要包括一級程序Cache、取指單元(Instruction Fetch, IF)、指令派發(fā)單元(DisPatch, DP)、向量運算部件(Vector Process Unit,VPU)、標量運算部件(Scale Process Unit,SPU)和向量陣列存儲器(Array Memory, AM)等。其中運算部件是DSP內核中最重要的單元之一,約80%以上的指令來自于運算部件。標量運算單元(Scale Process Element, SPE)包括兩個乘加部件和一個定點執(zhí)行單元。兩個同構的乘加部件由共享54×32位乘法器結構的定點MAC單元與浮點MAC單元以及浮點算數邏輯單元(Arithmetic Logical Unit, ALU)組成,三個單元獨立運算但共用乘累加(Multiply-ACcumulate, MAC)單元的寫端口寫回到寄存器,三個單元共用同一套寄存器端口。
向量運算單元(Vector Process Element, VPE)內數據通路如圖2所示,它包含64個局部通用寄存器,三個同構的MAC部件由定點乘加(Integer Multiply Accumulate, IMAC)、浮點MAC和浮點ALU單元三個單元構成,其中FMAC和IMAC復用了一個54×32乘法器。向量運算部件均包含有16個相同結構的向量運算單元VPE,與標量運算類似,每一個向量運算單元由三個向量乘加部件(Vector Multiply ACcumulate, VMAC)及一個向量定點執(zhí)行單元組成。每一個單元內部的部件組成及數據寫回方式與標量的處理方式相同。
VPE之間通過混洗網絡和規(guī)約樹網絡進行數據交互?;煜淳W絡可以根據混洗粒度和混洗模式的不同對VPE之間的數據進行混洗操作;歸約網絡將多個VPE中的數據通過多寬度規(guī)約方式規(guī)約到一個或者多個VPE中,多寬度歸約操作將所有的16個VPE進行分組,每個分組歸約操作并行執(zhí)行,分組只支持平均分組,分組大小為2的整數次冪。
2FMAC單元的結構設計與實現
2.1浮點乘加單元指令集設計
浮點MAC單元共設計實現9條指令(如表1所示),包括雙精度乘法(Double Floating-point MULtiply, DFMUL)、單精度乘法(Single Floating-point MULtiply, SFMUL)、雙精度乘加(Double Floating-point MULtiply-Adder, DFMULA)、單精度乘加(Single Floating-point MULtiply-Adder, SFMULA)、雙精度乘減(Double Floating-point MULtiply-Subtration, DFMULS)、單精度乘減(Single Floating-point MULtiply-Subtration, SFMULS)、浮點復數實部乘法(Floating-point Complex multiplication REAL, FCREAL)、浮點復數虛部乘法(Floating-point Complex multiplication IMAGinary, FCIMAG)和
浮點點積(Floating-point DOT product, FDOT)指令。由于寄存器端口的限制,雙精度指令和4操作數單精度指令需要讀取兩拍,雙精度結果寫回需要兩拍。
2.2高性能浮點MAC單元的體系結構設計
浮點MAC單元其總體結構設計實現如圖3所示?;诮浀涞脱訒r浮點乘加結構,根據M-DSP的體系結構設計要求設計實現了雙精度浮點乘加運算通路,在此基礎上復用部分硬件實現單精度指令的相關運算通路,包括單精度浮點乘法/乘加、點積和復數操作。為提高性能、降低邏輯設計復雜度,基于傳統浮點乘加結構將單、雙精度指令計算分開處理,設計了一套單、雙精度通路分離[10]的浮點乘加結構。所設計的浮點MAC單元包括54×32共享乘法器、指數計算、源操作數例外判斷、尾數對階移位、尾數加法、乘法結果輸出、結果符號計算、結果尾數規(guī)格化移位、結果舍入和結果選擇寫回等模塊,單/雙精度浮點操作均需要用到上述模塊。根據邏輯復用的設計思想,將對階移位、尾數加法和前導零等模塊進行優(yōu)化,使得硬件邏輯在支持單/雙精度浮點乘加的同時支持單精度浮點乘法后加法操作。各流水線設計如下:
1)流水線第一站設計實現。流水線第一站主要由源操作數讀取、源操作數例外判斷、指數計算和對階移位量計算等運算模塊構成(乘法器模塊單獨設計),其中乘法器的相關模塊與定點MAC單元共用,為了減少乘法器面積和提高邏輯復用的能力,采用4個27×16的乘法器實現54×32的乘法操作,雙精度乘法需要兩次乘法操作才能計算出結果,乘法器詳細設計在2.3.1節(jié)中介紹。
2)流水線第二站設計實現。流水線第二站主要包括部分積壓縮第3級、27×16乘法結果的Sum與Carry的加法和乘法/乘加指令的尾數對階移位等運算模塊。第3級部分級壓縮將乘法器中前兩級壓縮的結果采用進位保留加法器(Carry-Save Adder, CSA)進一步壓縮,在得到單精度乘法的部分積和陣列的Sum和Carry后,采用43位加法器對Sum和Carry進行全加操作,得到高位部分的單精度浮點乘法結果尾數。
3)流水線第三站設計實現。流水線第三站包括乘加/乘后加指令的尾數加法等運算模塊。在第三站中,在單精度乘法操作完成后,雙精度乘法的中間結果Sum和Carry也已計算出來,采用2個全加器用來計算浮點尾數求和,前導零LZA邏輯有部分邏輯在第三站進行。
4)流水線第四站設計實現。第四流水站主要包括前導零預測LZA第二部分、乘加結果尾數舍入進位處理、乘法結果溢出、例外判斷和乘法結果選擇寫回等運算模塊,在乘法結果旁路寫回模塊中,單精度乘法執(zhí)行4拍寫回,雙精度乘法由于讀、寫都要多一拍,需要6拍寫回結果。
5)流水線第五站設計實現。流水線第五站主要包括規(guī)格化移位、尾數舍入處理、結果符號計算和結果指數修正。在第五級流水線中,浮點MAC除乘法類的各條指令的規(guī)格化移位都使用128位對數移位器對結果尾數進行規(guī)格化移位。根據舍入模式以及粘接位的值,舍入模塊判斷是否對最后結果尾數進行加1操作。根據規(guī)格化移位的結果尾數和移位量,利用指數修正模塊可以計算出正確的結果指數,根據尾數加法的最后結果采用符號計算邏輯判斷結果符號。
6)流水線第六站設計實現。第六級流水線主要包括結果尾數的例外判斷、溢出判斷以及結果選擇寫回處理。結果尾數選擇寫回時,先根據浮點控制寄存器中各標志位進行結果處理,待結果尾數確定后選擇寫回,寫回時雙精度指令要寫兩拍。
2.3浮點MAC單元關鍵模塊設計
2.3.1乘法器設計
傳統的定點和浮點運算部件都有單獨的乘法器單元。特別是處于同一流水線上的定、浮點單元,這樣的設計會導致硬件資源浪費。因此在M-DSP中,采用定點乘加部件與浮點乘加部件復用同一個乘法器,這樣可以在滿足功能要求的前提條件下,提高硬件利用率,減少芯片面積。按照指令設計需求,定點MAC單元中有32×32和單指令多數據(Single Instruction Multiple Data, SIMD)的16×16定點乘法,浮點MAC單元有54×54和24×24的浮點乘法。由于寄存器文件端口個數和位寬的限制,浮點乘加的讀操作數與寫結果均需要兩拍實現,無法實現全流水操作。通過優(yōu)化邏輯結構,因此將乘法器設計為54×32位乘法器,采用4個27×16的子乘法器搭建而成,復用的乘法器共三級流水,其中定點MAC單元使用前面的兩級流水站,浮點MAC單元使用三級流水站。由于乘法器面積在定、浮點乘加部件面積中比重較大,共享同一個乘法器的設計可以大幅度減少MAC單元的面積。
27×16位乘法器采用兩級流水實現,其實現結構如圖4所示,其中基2Booth編碼[11]、第一級壓縮與第二級壓縮為第一站,第三級壓縮和Sum與Carry的加法為第二站。這樣的流水設計滿足功能要求和時序要求,并且可以提高乘法器速度。對所設計的27×16位與54×32位乘法器進行模塊級驗證后,使用綜合工具DC在40nm工藝下對所設計的乘法器進行了邏輯綜合, 27×16位乘法器關鍵路徑340ps,單元面積6758.707μm2,單元總功耗6.0817mW;54×32位乘法器關鍵路徑390ps,單元面積27438.196μm2,單元總功耗17.4217mW。
定、浮點MAC單元共享乘法器結構如圖5所示,其中PP0~PP8表示9個部分積(Part of the Product, PP),乘法器內部有單獨的源操作數預處理模塊,根據派發(fā)的定、浮點指令對讀取的源操作數進行處理,浮點尾數乘法的操作數均視作無符號數,而定點的操作數則要區(qū)分有無符號分別處理。
2.3.2對階移位和規(guī)格化移位
本文所設計的浮點乘加單元,浮點乘加指令需要對尾數進行對階移位,設計一個m位移位器,將尾數乘積固定在設計的移位器最右端,通過固定右移加數實現對階。乘積與加數的指數差決定了對階移位的移位量。同樣在進行乘加/減指令時,在對尾數進行加法后,由于尾數高位可能會出現0的情況,為滿足IEEE754浮點數標準,需要對結果尾數進行規(guī)格化,使其最高位為1,即規(guī)格化移位,在規(guī)格化的同時根據移位量對預測結果指數進行修正。本文所設計的浮點MAC單元,除乘法類指令外其余指令需要進行規(guī)格化移位操作。
在浮點MAC 中設計了兩個右移的對階移位器,一個是106位用于單/雙精度浮點乘加尾數對階移位器,一個是98位用于點積和復數指令運算的對階移位器,均處于浮點MAC流水線上的第二級流水站。設計兩個對階移位器主要是考慮時序問題,通過實驗,復用同一個對階移位器時,面積并沒有減少,由于關鍵路徑的增加,面積還會有增大。這里以點積指令為例介紹其移位設計思想。浮點單精度點積乘法尾數對階采用一個98位的移位器進行對階操作, 98位移位器的結構組成是由48位單精度乘法結果、用于保護處理和舍入操作的2位填充位和另一個單精度乘法尾數的48位組成,保護位與舍入位的添加可以簡化舍入運算。
由式(1)可知,在提取公共指數Ea+Eb+50-2p后,C*D結果尾數右移|Ec-(Ea+Eb+50)|位后,兩個乘法結果尾數的小數點已對齊。設兩個乘法指數階差為d,則d=Ec+Ed-(Ea+Eb),根據式(1)提取出的公共指數Ea+Eb+50-2p,設對階移位量為Shift_Bit,則Shift_Bit=Ec+Ed-(Ea+Eb+50)=d-50,不同的移位量會產生以下幾種對階移位情形:
a)Shift_Bit≥0時,尾數mC*mD相對其在98位對階移位器中的最高位置左移或者不移動,則mA*mB的乘法結果只對粘貼位sticky位的計算有影響,sticky=|mA*mB,即A*B乘法結果的或值,左移時尾數后面填充的0對sticky位沒有影響。
b)Shift_Bit<0且Shift_Bit≥-50時,尾數mC*mD要右移,移位量為|Shift_Bit|,但mC*mD最多右移50位,而mC*mD還處在98位移位器中,此時sticky位要等到尾數加法完成后才能計算出來。
c)Shift_Bit<-50且Shift_Bit≥-98時,說明移位量大于50,尾數mC*mD有一部分尾數會移出移位器,但不會完全移出,可以將sticky位分成兩部分(sticky1和sticky2)計算:sticky1根據兩個乘法結果尾數在加法完成后,將需要舍入的位進行或操作,sticky2是將移出移位器的尾數值進行或操作,最終的sticky=sticky1|sticky2。
d)Shift_Bit≤-98時,尾數mC*mD全部移出移位器,也可將sticky位分成兩部分計算:sticky1是加法完成后需舍入的位數的或值,sticky2是移出移位器的尾數mC*mD的或值。
同理也設計了用于雙精度浮點乘加運算的108位對階移位器,該移位器也可以滿足單精度浮點乘加運算的對階移位。
規(guī)格化移位器是一個左移的移位器,為滿足IEEE754浮點運算標準,在尾數進行加法后,結果尾數最高位有可能不為1,需根據計算出的前導零個數將結果尾數進行左移操作,使結果尾數最高位為1。雙精度浮點乘加運算尾數為161位,最大只要一個161位的規(guī)格化移位器即可滿足要求;單精度浮點乘加運算需要一個74位的規(guī)格化移位器;復數與點積運算需要一個98位規(guī)格化移位器。針對規(guī)格化移位的設計需求,設計了一個108位對數移位器。主要是對雙精度的規(guī)格化移位作了優(yōu)化,先判斷計算出的結果尾數前導零個數是在前53位還是在后108位:若在前53位,則用移位器直接進行108位規(guī)格化移位要求;若在后108位,則結果尾數固定左移53位再用移位器進行108位移位.單精度浮點乘加與復數指令的規(guī)格化移位不需要再進行判斷,使用108位規(guī)格化移位完全可以滿足要求。
3FMAC模擬驗證與綜合優(yōu)化
3.1FMAC驗證
M-DSP中浮點MAC的驗證主要從模擬驗證和形式驗證兩方面來完成[12]。模擬驗證主要借助Cadence公司的NC-Verilog等工具完成,包括模塊級驗證、系統級驗證以及覆蓋率分析等;形式化驗證主要借助于ATEC(Advanced Test Equivalence Checking)和Formality等價性檢查工具來完成。通過上述驗證方法,發(fā)現了一些邊界值錯誤和全局控制信號的控制錯誤,均已修正。
3.1.1黃金模型建立
模塊級與系統級驗證都需要驗證大量功能點來保證功能的正確性,硬件仿真的結果需要與另一結果進行對比來判斷,而另一結果的取得由于數據量大且有準確性高的要求,往往不能由人工計算得到,所以使用準確度高、速度快的軟件方式計算結果對于提高驗證工作效率十分必要。按照硬件邏輯的執(zhí)行架構,使用C語言將每條指令的功能描述出來,并與硬件仿真調用同一組操作數,這一由軟件建立的模型即為黃金模型。黃金模型的結果不依賴硬件,作為軟件結果而獨立存在,因此可以作為參考結果與硬件結果進行比較,方便檢查硬件結果的正確性,同時節(jié)省大量資源。
3.1.2模塊級驗證
浮點MAC的驗證首先從模塊級驗證開始,根據浮點數的數據結構和浮點MAC單元實現的指令,有針對性地加入相應的功能點測試激勵,根據驗證結果分析模塊結構是否存在錯誤;模塊級驗證工具采用NC-Verilog仿真工具進行驗證,通過編寫特定的TestBench加入到模塊級模擬驗證環(huán)境中,查看激勵響應,檢測模塊設計的正確性。對所有子模塊完成充分驗證之后,再在浮點MAC單元中進行功能驗證,模塊級驗證主要內容如表2所示。
3.1.3系統級驗證
系統級驗證在單核情況下進行,通過匯編指令在高層次對FMAC進行驗證,保證FMAC在系統級工作的正確性。系統級驗證進行的主要驗證工作有:
1)隨機數測試。隨機數驗證主要是針對驗證功能點與邊界值時遺漏的測試點進行的驗證,手工編寫測試激勵很難將邊界值中的各種情況測試完全,根據浮點數據的結構特征,將生成的符號位、指數位、尾數位自由交叉組合生成偽隨機數測試激勵,在單核系統下測試1000萬組隨機數。
2)精度測試。進行精度測試主要是為了查看在相同的標準條件下,浮點運算的結果是否一致或誤差的大小。在進行精度測試時,與Intel的Pentium Dual-core E5300 CPU和TI的TMS320C6678的運算結果進行了對比。由于TMS320C6678沒有復數指令和乘加、乘減指令,所以測試結果與其有誤差,但與Pentium E5300的結果完全一致。
3)流水線測試。指令流水線測試是為了驗證處于系統級下的浮點MAC單元是否按預定的執(zhí)行周期進行指令流水,浮點MAC單元共有9條指令,每條指令均能按照設計的流水節(jié)拍正確地執(zhí)行寫回。
4)全局信號測試。全局信號測試主要測試與外部模塊通信的接口和信號的通信和控制,主要涉及到控制流水線的相關全局信號,包括全局暫停(Global Stall, G_Stall)信號、流水線沖刷(Pipeline_Flush, P_Flush)信號、派發(fā)暫停(Instruction Dispatch Snop, ID_Snop)信號以及條件執(zhí)行(Condition Execution, Cond_Exe)信號。以全局信號測試為例,當全局信號G_Stall為高時,指令暫緩執(zhí)行,等到為低時流水線繼續(xù)執(zhí)行,其測試波形如圖6所示。
5)指令組合測試。M-DSP中MAC單元包括3個執(zhí)行單元:浮點MAC單元、定點MAC單元和浮點ALU單元,三條執(zhí)行通路共用一套讀寫端口,因此,在對浮點MAC指令進行驗證時,與其他單元的指令組合驗證是必要的,不僅可以檢查本單元的正確性,還可以驗證整個MAC流水線通路的正確性。
3.1.4形式驗證
形式驗證(Formal Verification, FV)是一種集成電路(Integrated Circuit, IC)設計的驗證方法,它從靜態(tài)的角度對設計進行驗證,不需要模擬驗證的激勵。ATEC等價性檢查工具采用形式化的驗證方法,將RTL代碼與C語言編寫的黃金模型轉化為可以比較的表達式,在相同的約束條件下進行等價性驗證,保證硬件設計的正確性。驗證初期已對浮點MAC單元的每條指令建立C語言黃金模型,ATEC等價性檢查的流程如圖7所示。由于FMAC模塊的復雜性,在進行ATEC驗證過程中,當存在錯誤時,會快速地舉出反例測試激勵,可以通過給出的測試激勵進行錯誤定位,大幅縮短設計周期。Formality等價性檢查旨在驗證綜合前的RTL代碼與綜合后的門級網表是否等價。
3.2邏輯綜合
浮點MAC單元采用Synopsys公司的DC工具進行邏輯綜合,綜合環(huán)境是基于40nm工藝庫,在Typical條件下進行綜合,綜合的目標頻率是1GHz,留給后端物理設計的時間大約是30%,剩下的前端的時鐘周期大約為450ps,寄存器的輸入延時設置為100ps,輸出延時設置為100ps。
采用上述綜合約束條件,對浮點MAC單元的乘法器模塊和MAC運算主體結構流水線進行邏輯綜合,浮點MAC單元綜合結果如表3所示,單個浮點MAC單元綜合面積35250μm2,總功耗6.7570mW,其中動態(tài)功耗6.0432mW,靜態(tài)功耗713.7950μW,最長關鍵路徑450ps。與參考文獻[8]中的FMAC結構相比,本文采用單雙精度通路分離的乘加結構,雖然通路分離,但精簡了邏輯設計,降低了硬件設計的復雜度,有效減少了硬件開銷;文獻[8]中的浮點MAC采用單一的浮點乘加結構,雖然復用了大部分邏輯資源,但增加了邏輯設計的復雜度,很多硬件資源并沒有有效復用,從而導致面積較大,本文所設計的FMAC在硬件資源開銷上比參考結構在性能提高了2.17%,單元面積減少了12.95%。
4結語
本文詳細設計了M-DSP中浮點MAC單元,根據浮點MAC單元的指令功能和性能要求,設計和實現了單、雙精度通路分離的6級流水線浮點MAC單元,針對每個功能單元進行了詳細設計,并對乘法器等關鍵模塊進行了優(yōu)化設計。全面驗證了所設計的浮點MAC單元,基于40nm工藝對浮點MAC單元采用DC綜合工具進行綜合,綜合結果表明所設計的浮點MAC單元工作頻率可達1GHz,功耗6.7570mW,面積35250μm2。整個M-DSP芯片1GHz下峰值處理性能達到單精度浮點復數乘法25GFLOPs(Giga FLoating-point Operations Per second)、單精度浮點100GFLOPs、雙精度浮點50GFLOPs,滿足M-DSP芯片對浮點乘加運算的高性能要求。
參考文獻:
[1]李海森,李思純,周天.高速DSP原理、應用與試驗教程[M].北京:清華大學出版社,2009:23-47. (LI H S, LI S C, ZHOU T. High Speed DSP Principle, Application and Experiment Course [M]. Beijing: Tsinghua University Press, 2009: 23-47.)
[2]方維,孫廣中,吳超,等.一種三維快速傅里葉變換并行算法[J].計算機研究與發(fā)展,2011,48(3):440-446. (FANG W, SUN G Z, WU C, et al. A parallel algorithm of three-dimensional fast Fourier transform [J]. Journal of Computer Research and Development, 2011, 48(3): 440-446.)
[3]WANG X, ZHANG Y, WANG F, et al. A configurable floating-point discrete Hilbert transform processor for accelerating the calculation of filter in Katsevich formula [J]. WSEAS Transactions on Communications, 2012, 11(11): 395-404.
[4]張擁軍,陳艇.基于軟件無線電的并行多輸入多輸出均衡技術[J].計算機應用,2015,35(4):1179-1184. (ZHANG Y J, CHEN T. Parallel multiple input and multiple output equalization based on software defined radio [J]. Journal of Computer Applications, 2015, 35(4): 1179-1184.)
[5]MONTOYE R K, HOKENEK E, RUNYON S L. Design of the IBM RISC System/6000 floating-point execution unit [J]. IBM Journal of Research and Development, 1990, 34(1): 59-70.
[6]LANG T, BRUGUERA J D. Floating-point fused multiply-add with reduced latency [J]. IEEE Transactions on Computers, 2004, 53(8): 988-1003.
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=1306992&url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel5%2F12%2F29016%2F01306992
http://xueshu.baidu.com/s?wd=paperuri%3A%280abb7fbed27abc68d04bc9efe4c31c30%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Fdl.acm.org%2Fcitation.cfm%3Fid%3D846996&ie=utf-8&sc_us=16446173281281047444
ICCD '02 Proceedings of the 2002 IEEE International Conference on Computer Design: VLSI in Computers and Processors (ICCD'02)
Page 145
IEEE Computer Society Washington, DC, USA ?2002
[7]LANG T, BRUGUERA J D. Floating-point fused multiply-add: reduced latency for floating-point addition [C]// ARITH 05: Proceedings of the 17th IEEE Symposium on Computer Arithmetic. Washington, DC: IEEE Computer Society, 2005: 42-51.
[8]田甜.FT-XDSP中FMAC單元的研究與實現[D].長沙.國防科學技術大學,2013:56-57. (TIAN T. The research and implementation of high performance SIMD floating-point multiplication accumulator unit for FT-XDSP [D].Changsha: National University of Defence Technology, 2013: 56-57.)
[9]彭元喜,楊洪杰,謝剛.X-DSP浮點乘法器的設計與實現[J].計算機應用,2010,30(11):3121-3126. (PENG Y X, YANG H J, XIE G. Design and implementation of float point multiplier in X-DSP [J]. Journal of Computer Applications, 2010, 30(11): 3121-3126.)
[10]何軍,黃永勤,朱英.分離通路浮點乘加器設計與實現[J].計算機科學,2013,40(8):28-33. (HE J, HUANG Y Q, ZHU Y. Design and implementation of separated path floating-point fused multiply-add unit [J]. Computer Science, 2013, 40(8): 28-33.)
[11]RUBINFIELD L P. A proof of the modified Booths algorithm for multiplication [J]. IEEE Transactions on Computer, 1975, 24(10): 1014-1015.
[12]陳海燕,郭陽,劉祥遠,等.集成電路計算機輔助設計與驗證實踐[M].長沙:國防科技大學出版社,2010:210-220. (CHEN H Y, GUO Y, LIU X Y, et al. The Practice of Computer Aided Design and Verification of Integrated Circuits [M]. Changsha: National University of Defence Technology Press, 2010: 210-220.)