張 明,鄭莉平,余寧梅(.西安理工大學 自動化與信息工程學院,陜西 西安 70048;2.中國航天科技集團公司第九研究院第七七一研究所,陜西 西安 709)
高速深流水線浮點加法單元的設(shè)計
張 明1,2,鄭莉平1,余寧梅1
(1.西安理工大學 自動化與信息工程學院,陜西 西安 710048;2.中國航天科技集團公司第九研究院第七七一研究所,陜西 西安 710119)
在X87執(zhí)行環(huán)境下,采用基于Two-Path算法的并行深度流水線優(yōu)化算法,設(shè)計了一種能夠?qū)崿F(xiàn)符合IEEE-754標準的單精度、雙精度和擴展雙精度及整型數(shù)據(jù)且舍入模式可控的高速浮點加法器。采用并行深度流水設(shè)計,經(jīng)驗證,功能滿足設(shè)計要求,使用TSMC65nm工藝庫進行綜合,其工作頻率可達900MHz。
浮點加法器;IEEE-754;Two-Path算法;并行流水線
浮點運算單元(FPU)是微處理器(CPU)的重要組成部分,是進行大規(guī)模數(shù)據(jù)運算處理的關(guān)鍵技術(shù)[1]。在通用處理器中,浮點加法指令、浮點減法指令及浮點反轉(zhuǎn)減法指令最終都是使用浮點加法單元來實現(xiàn)的[2]。浮點加法運算過程是由指數(shù)差計算、尾數(shù)對階移位、有效數(shù)相加、前導零計算、規(guī)格化操作、例外處理等單獨操作組成。通過提高各個操作步驟的并行化,減少運算過程的關(guān)鍵路徑,可以提高浮點加法運算單元的性能[3]。根據(jù)設(shè)計要求,對浮點加法單元的結(jié)構(gòu)進行并行優(yōu)化,采用基于Two-Path算法的深度流水設(shè)計,在X87執(zhí)行環(huán)境下進行仿真驗證,兼容X87指令集中的浮點加法指令,包括對控制狀態(tài)寄存器、狀態(tài)寄存器和標記寄存器的處理過程。
本設(shè)計兼容IEEE-754浮點標準,IEEE-754標準浮點數(shù)據(jù)具體格式[4]如表1所示。
表1 浮點數(shù)據(jù)類型格式
實數(shù)Y=(-1)S×F×2E-Bias,其中:S(sign)為符號位,F(xiàn)(significand)是有效數(shù)字位,E(exponent)為指數(shù)位,Bias為偏移值[5]。目前主流計算機系統(tǒng)中運算數(shù)據(jù)的表現(xiàn)形式均是通過上述表達式轉(zhuǎn)換而來的。
2.1 浮點加法單元Two-Path算法
由于傳統(tǒng)浮點加法算法每個步驟之間都是串行執(zhí)行的,限制了FPU的執(zhí)行效率,F(xiàn)ARMWARL M P提出的Two-Path算法[6]主要在以下方面進行了改進:
(1)通過判斷指數(shù)差的符號,對操作數(shù)進行交換,使其總是較大的操作數(shù)在前。除指數(shù)相等的情況外,數(shù)據(jù)轉(zhuǎn)換這一步驟可以省略。在指數(shù)相等的情況下,則不需要進行對階移位,有效減法的運算結(jié)果是一個精確值,不必進行舍入操作。數(shù)據(jù)轉(zhuǎn)換步驟中的加法與舍入步驟中的加法互斥,可以將傳統(tǒng)算法中三個全長加法延時減少一個。
(2)在有效數(shù)加法的運算過程中,指數(shù)差絕對值△E≦1的情況下,運算結(jié)果一般不會出現(xiàn)多位數(shù)據(jù)有多個零的情況,故不需要對結(jié)果進行全長的規(guī)格化移位操作。當指數(shù)差絕對值△E>1時,有效數(shù)的加法過程只需一個全長的對階移位器。對于有效數(shù)減法,可以分兩種情況:①如果指數(shù)差絕對值△E≦1,只需要一個全長的規(guī)格化移位。這種情況下,一位的對階移位和尾數(shù)交換條件能夠通過指數(shù)差絕對值的最低位和指數(shù)比較與尾數(shù)比較的結(jié)果來進行預(yù)測。②指數(shù)差絕對值△E>1,則需要一個全長的對階移位器,但卻不需要超過一位的規(guī)格化移位。因此,全長的規(guī)格化移位與全長的對階移位是互斥的,并且在關(guān)鍵路徑上兩種移位器只會出現(xiàn)一個。上述情況可以表示為:當△E≦1且是有效減法運算時為近端(CLOSE)路徑;當△E>1時為遠端(FAR)路徑。
(3)在近端CLOSE路徑中,將有效數(shù)相加和前導零計算并行處理,采用前導零預(yù)測直接從兩個源操作數(shù)中預(yù)測出有效加法運算后結(jié)果中前導一的位置,得到規(guī)格化移位量[7]。
2.2 Two-Path并行深度流水優(yōu)化算法
為進一步提高浮點加法運算單元的性能,引入了合并舍入的Two-Path算法。由于舍入計算的實現(xiàn)一般要等到運算結(jié)果產(chǎn)生后根據(jù)舍入模式才可以執(zhí)行,并且只是對結(jié)果進行小數(shù)量的修改。合并舍入的Two-Path算法需要通路上每一個有效數(shù)的加法器同時計算出有效數(shù)相加結(jié)果(sum)和有效數(shù)相加結(jié)果加一(sum+1)兩個運算結(jié)果。為此,浮點運算單元的主加法器采用混合加法器來同時計算sum和sum+1兩個結(jié)果,混合加法器是一個專用加法器,通過共用內(nèi)部硬件單元的方法以減少運算規(guī)模。在得到了可能的運算結(jié)果之后,通過分析浮點運算結(jié)果的末尾的多位有效數(shù)據(jù)包括最低位(LSB)、警戒位(guard bit)、舍入位(round bit)和粘貼位(sticky bit),最終選擇需要的結(jié)果。由于舍入方式的不同,還需要產(chǎn)生一個有效數(shù)相加結(jié)果加 2(sum+2)的運算結(jié)果,并且需要一個舍入矯正操作。在旁路通道上,需要在執(zhí)行主通路時同時處理符號位的結(jié)果以及特殊數(shù)據(jù)的運算過程,保證整個設(shè)計的并行化。
本文基于合并舍入的Two-Path算法提出了一種高速深流水線浮點加法單元設(shè)計,共6級流水線。第1級完成分離操作場(符號場、指數(shù)場、尾數(shù)場),指數(shù)差的計算以及尾數(shù)大小的比較;第2級實現(xiàn)尾數(shù)交換、有效加減法的判斷、結(jié)果符號預(yù)判、通路選擇等操作;第3級完成尾數(shù)對階移位,其中FAR通路是全長對階移位,CLOSE通路是最多一位的移位;第4級進行有效數(shù)相加和前導零預(yù)測;第5級完成舍入選擇和指數(shù)尾數(shù)規(guī)格化;第6級完成最終結(jié)果的選擇、特殊數(shù)據(jù)處理、對例外的標記。其算法結(jié)構(gòu)如圖1所示,通過Verilog HDL硬件描述語言對算法進行實現(xiàn)。
圖1 浮點加法單元結(jié)構(gòu)圖
3.1 指數(shù)差計算
該模塊通過分別計算|expa-expb|和|expb-expa|,其中expa為操作數(shù)0的指數(shù),expb為操作數(shù)1指數(shù)。通過16bit超前進位加法器,分別得出操作數(shù)0指數(shù)減操作數(shù)1的結(jié)果(exp_ab)及進位(cout_ab)和操作數(shù)1指數(shù)減操作數(shù)0的結(jié)果(exp_ba)及進位(cout_ba),從而得到兩個源操作數(shù)的指數(shù)大小關(guān)系:不等于(exp_diff_sign)和等于(exp_diff_zero),以及指數(shù)差的絕對值(exp_diff),如圖2所示。
圖2 指數(shù)差計算數(shù)據(jù)通路圖
3.2 移位器
設(shè)計中共有兩個全長移位器,其中一個移位器為67bit數(shù)據(jù)尾數(shù)對階移位器,用來對較小的尾數(shù)進行邏輯右移。通過指數(shù)差判斷移位量,從而得到較小尾數(shù)對階移位后的結(jié)果。另一個移位器為65bit數(shù)據(jù)規(guī)格化移位器,用來對CLOSE通路有效數(shù)相加計算后的結(jié)果進行規(guī)格化左移位。通過前導零預(yù)測得出移位量,然后對運算結(jié)果進行移位,完成規(guī)格化操作。
3.3 加法器設(shè)計
加法器是浮點加法單元最主要的模塊電路。本設(shè)計在不同階段的操作過程中運用了多種加法器。實現(xiàn)16bit超前進位加法器,需要使用4個超前進位加法器模塊(CLA)進行級聯(lián)[8]。CLOSE通路指數(shù)規(guī)格化同樣采用的是16bit超前進位加法器,如圖3所示。
有效數(shù)相加模塊采用64bit的混合加法器,即采取4個16bit混合加法器并行計算,每個16bit的混合加法器計算出16bit的計算結(jié)果(out0_0、out1_0、out2_0、out3_0)及其進位(cout0_0、cout1_0、cout2_0、cout3_0)和計算結(jié)果加一(out0_1、out1_1、out2_1、out3_1)及其進位(cout0_1、cout1_1、cout2_1、cout3_1),再通過每一級的進位來選擇最終結(jié)果(sum_0)及其進位(cout_0)和最終結(jié)果加一(sum_1)及其進位(cout_1),如圖4所示。
圖4 64bit主加法器數(shù)據(jù)通路圖
3.4 前導零計算
前導零預(yù)測邏輯電路是提高浮點加法器性能的關(guān)鍵。前導零計算一般有兩種方式:前導零檢測和前導零預(yù)測[9]。前導零檢測處理的是浮點加法運算中有效數(shù)相加的結(jié)果,而預(yù)測處理的是需要進行浮點加法運算中有效數(shù)相加的兩個有效數(shù),即前導零預(yù)測不需要等待浮點數(shù)加法運算有效數(shù)相加的計算結(jié)果就可以得到前導零的個數(shù)。兩者均可以完成有效數(shù)相加后結(jié)果的前導零的計算,但前導零預(yù)測可以與有效數(shù)相加運算并行進行,很大程度地提高浮點加法運算的性能,圖5為前導零檢測電路結(jié)構(gòu)與前導預(yù)測電路結(jié)構(gòu)框圖。
圖5 前導零檢測與前導零預(yù)測電路結(jié)構(gòu)框圖
3.5 浮點加法運算單元的驗證
本設(shè)計功能驗證采用VMM測試方法學,通過System verilog系統(tǒng)硬件描述語言搭建對比測試平臺,產(chǎn)生定向測試激勵和受約束隨機測試激勵[10],對本設(shè)計的運算結(jié)果與C模型運算結(jié)果進行比對,比對結(jié)果一致,覆蓋率達到100%,功能上滿足設(shè)計要求。圖6為完成一次FADD指令的結(jié)果波形圖。
圖6 浮點加法單元仿真波形圖
本文從浮點加法單元的算法結(jié)構(gòu)入手,提出了高速深流水線浮點加法單元設(shè)計。使用TSMC65nm工藝庫進行綜合,其工作頻率可達900MHz,兼容X87指令集,可用于高通量CISC微處理器中。
[1]張予器.超高精度浮點運算的關(guān)鍵技術(shù)研究[D].長沙:國防科學技術(shù)大學,2005.
[2]陳弦,張偉功,于倫正.并行浮點加法器架構(gòu)與核心算法的研究[J].計算機工程與應(yīng)用,2006,17(3):53-55.
[3]夏杰,宣志斌,薛忠杰.基于流水線結(jié)構(gòu)的浮點加法器IP核設(shè)計[J].微計算機信息,2008,24(9):192-193.
[4]朱亞超.基于IEEE754的浮點數(shù)存儲格式分析研究[J].計算機與信息技術(shù),2006(9):50-52.
[5]Intel Corporation.Intel 64and IA-32Architectures Software Developer′s Manual[Z].U.S:Intel Corporation,2011.
[6]王穎,林正浩.快速浮點加法器的優(yōu)化設(shè)計[J].電子工程師,2004,30(11):24-26.
[7]靳戰(zhàn)鵬.高速浮點加法運算單元的研究與實現(xiàn)[D].西安:西北工業(yè)大學,2006.
[8]夏有為,林正浩,楊曉峰.一款32位嵌入式CPU的定點加法器設(shè)計[J].電子技術(shù)應(yīng)用,2005,31(10):76-78.
[9]李星,胡春媚,李勇,等.前導1預(yù)測算法的設(shè)計與實現(xiàn)[J].計算機科學.2013,40(4):31-35.
[10][美]克里斯·斯皮爾.SystemVerilog驗證測試平臺編寫指南[M].張春,趙益新,麥宋平,譯.北京:科學出版社,2009.
The design of high-speed deep pipeline floating-point adder unit
Zhang Ming1,2,Zheng Liping1,Yu Ningmei1
(1.School of Automation and Information Engineering,Xi′an University of Technology,Xi′an 710048,China;2.The 771th Institute of the 9th Academy of CASC,Xi′an 710119,China)
The paper describes a high-speed floating point adder design,which achieves compliance with IEEE-754 standard single-precision,double-precision,extended-double-precision and integer data with rounding mode controlled,working under X87 execution environment.The design is based on Two-Path algorithm with parallel pipeline depth optimization algorithm.The paper puts forward a deep parallel pipeline design.After verification the function meets the design requirements,using TSMC 65 nm technology library,whose operating frequency is up to 900 MHz.
floating point adder;IEEE-754;Two-Path algorithm;parallel pipeline
TP332.1
A
1674-7720(2015)20-0015-03
張明,鄭莉平,余寧梅.高速深流水線浮點加法單元的設(shè)計[J].微型機與應(yīng)用,2015,34(20):15-17.
2015-05-16)
張明(1987-),通信作者,男,碩士,助理工程師,主要研究方向:數(shù)字集成電路設(shè)計與驗證。E-mail:zhangm_work@163.com。
鄭莉平(1963-),女,碩士,副教授,主要研究方向:電路與系統(tǒng)。
余寧梅(1963-),女,博士,教授,主要研究方向:專用集成電路設(shè)計技術(shù)及工藝。