《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 高速深流水線浮點加法單元的設計
高速深流水線浮點加法單元的設計
2015年微型機與應用第20期
張 明1,2,鄭莉平1,余寧梅1
1.西安理工大學 自動化與信息工程學院,陜西 西安 710048; 2.中國航天科技集團公司第九研究院第七七一研究所,陜西 西安 710119
摘要: 在X87執行環境下,采用基于Two-Path算法的并行深度流水線優化算法,設計了一種能夠實現符合IEEE-754標準的單精度、雙精度和擴展雙精度及整型數據且舍入模式可控的高速浮點加法器。采用并行深度流水設計,經驗證,功能滿足設計要求,使用TSMC 65 nm工藝庫進行綜合,其工作頻率可達900 MHz。
Abstract:
Key words :

  摘  要: 在X87執行環境下,采用基于Two-Path算法的并行深度流水線優化算法,設計了一種能夠實現符合IEEE-754標準的單精度、雙精度和擴展雙精度及整型數據且舍入模式可控的高速浮點加法器。采用并行深度流水設計,經驗證,功能滿足設計要求,使用TSMC 65 nm工藝庫進行綜合,其工作頻率可達900 MHz。

  關鍵詞: 浮點加法器;IEEE-754;Two-Path算法;并行流水線

0 引言

  浮點運算單元(FPU)是微處理器(CPU)的重要組成部分,是進行大規模數據運算處理的關鍵技術[1]。在通用處理器中,浮點加法指令、浮點減法指令及浮點反轉減法指令最終都是使用浮點加法單元來實現的[2]。浮點加法運算過程是由指數差計算、尾數對階移位、有效數相加、前導零計算、規格化操作、例外處理等單獨操作組成。通過提高各個操作步驟的并行化,減少運算過程的關鍵路徑,可以提高浮點加法運算單元的性能[3]。根據設計要求,對浮點加法單元的結構進行并行優化,采用基于Two-Path算法的深度流水設計,在X87執行環境下進行仿真驗證,兼容X87指令集中的浮點加法指令,包括對控制狀態寄存器、狀態寄存器和標記寄存器的處理過程。

1 數據格式

  本設計兼容IEEE-754浮點標準,IEEE-754標準浮點數據具體格式[4]如表1所示。

Image 007.png

  實數Y=(-1)S×F×2E-Bias,其中:S(sign)為符號位,F(significand)是有效數字位,E(exponent)為指數位,Bias為偏移值[5]。目前主流計算機系統中運算數據的表現形式均是通過上述表達式轉換而來的。

2 浮點加法單元的算法

  2.1 浮點加法單元Two-Path算法

  由于傳統浮點加法算法每個步驟之間都是串行執行的,限制了FPU的執行效率,FARMWARL M P提出的Two-Path算法[6]主要在以下方面進行了改進:

  (1)通過判斷指數差的符號,對操作數進行交換,使其總是較大的操作數在前。除指數相等的情況外,數據轉換這一步驟可以省略。在指數相等的情況下,則不需要進行對階移位,有效減法的運算結果是一個精確值,不必進行舍入操作。數據轉換步驟中的加法與舍入步驟中的加法互斥,可以將傳統算法中三個全長加法延時減少一個。

  (2)在有效數加法的運算過程中,指數差絕對值△E≦1的情況下,運算結果一般不會出現多位數據有多個零的情況,故不需要對結果進行全長的規格化移位操作。當指數差絕對值△E>1時,有效數的加法過程只需一個全長的對階移位器。對于有效數減法,可以分兩種情況:①如果指數差絕對值△E≦1,只需要一個全長的規格化移位。這種情況下,一位的對階移位和尾數交換條件能夠通過指數差絕對值的最低位和指數比較與尾數比較的結果來進行預測。②指數差絕對值△E>1,則需要一個全長的對階移位器,但卻不需要超過一位的規格化移位。因此,全長的規格化移位與全長的對階移位是互斥的,并且在關鍵路徑上兩種移位器只會出現一個。上述情況可以表示為:當△E≦1且是有效減法運算時為近端(CLOSE)路徑;當△E>1時為遠端(FAR)路徑。

  (3)在近端CLOSE路徑中,將有效數相加和前導零計算并行處理,采用前導零預測直接從兩個源操作數中預測出有效加法運算后結果中前導一的位置,得到規格化移位量[7]。

  2.2 Two-Path并行深度流水優化算法

  為進一步提高浮點加法運算單元的性能,引入了合并舍入的Two-Path算法。由于舍入計算的實現一般要等到運算結果產生后根據舍入模式才可以執行,并且只是對結果進行小數量的修改。合并舍入的Two-Path算法需要通路上每一個有效數的加法器同時計算出有效數相加結果(sum)和有效數相加結果加一(sum+1)兩個運算結果。為此,浮點運算單元的主加法器采用混合加法器來同時計算sum和sum+1兩個結果,混合加法器是一個專用加法器,通過共用內部硬件單元的方法以減少運算規模。在得到了可能的運算結果之后,通過分析浮點運算結果的末尾的多位有效數據包括最低位(LSB)、警戒位(guard bit)、舍入位(round bit)和粘貼位(sticky bit),最終選擇需要的結果。由于舍入方式的不同,還需要產生一個有效數相加結果加2(sum+2)的運算結果,并且需要一個舍入矯正操作。在旁路通道上,需要在執行主通路時同時處理符號位的結果以及特殊數據的運算過程,保證整個設計的并行化。

  本文基于合并舍入的Two-Path算法提出了一種高速深流水線浮點加法單元設計,共6級流水線。第1級完成分離操作場(符號場、指數場、尾數場),指數差的計算以及尾數大小的比較;第2級實現尾數交換、有效加減法的判斷、結果符號預判、通路選擇等操作;第3級完成尾數對階移位,其中FAR通路是全長對階移位,CLOSE通路是最多一位的移位;第4級進行有效數相加和前導零預測;第5級完成舍入選擇和指數尾數規格化;第6級完成最終結果的選擇、特殊數據處理、對例外的標記。其算法結構如圖1所示,通過Verilog HDL硬件描述語言對算法進行實現。

Image 001.png

3 浮點加法單元的實現與驗證

  3.1 指數差計算

  該模塊通過分別計算|expa-expb|和|expb-expa|,其中expa為操作數0的指數,expb為操作數1指數。通過16 bit超前進位加法器,分別得出操作數0指數減操作數1的結果(exp_ab)及進位(cout_ab)和操作數1指數減操作數0的結果(exp_ba)及進位(cout_ba),從而得到兩個源操作數的指數大小關系:不等于(exp_diff_sign)和等于(exp_diff_zero),以及指數差的絕對值(exp_diff),如圖2所示。

Image 002.png

  3.2 移位器

  設計中共有兩個全長移位器,其中一個移位器為 67 bit數據尾數對階移位器,用來對較小的尾數進行邏輯右移。通過指數差判斷移位量,從而得到較小尾數對階移位后的結果。另一個移位器為65 bit數據規格化移位器,用來對CLOSE通路有效數相加計算后的結果進行規格化左移位。通過前導零預測得出移位量,然后對運算結果進行移位,完成規格化操作。

  3.3 加法器設計

  加法器是浮點加法單元最主要的模塊電路。本設計在不同階段的操作過程中運用了多種加法器。實現16 bit超前進位加法器,需要使用4個超前進位加法器模塊(CLA)進行級聯[8]。CLOSE通路指數規格化同樣采用的是16 bit超前進位加法器,如圖3所示。

Image 003.png

  有效數相加模塊采用64 bit的混合加法器,即采取4個16 bit混合加法器并行計算,每個16 bit的混合加法器計算出16 bit的計算結果(out0_0、out1_0、out2_0、out3_0)及其進位(cout0_0、cout1_0、cout2_0、cout3_0)和計算結果加一(out0_1、out1_1、out2_1、out3_1)及其進位(cout0_1、cout1_1、cout2_1、cout3_1),再通過每一級的進位來選擇最終結果(sum_0)及其進位(cout_0)和最終結果加一(sum_1)及其進位(cout_1),如圖4所示。

Image 004.png

  3.4 前導零計算

  前導零預測邏輯電路是提高浮點加法器性能的關鍵。前導零計算一般有兩種方式:前導零檢測和前導零預測[9]。前導零檢測處理的是浮點加法運算中有效數相加的結果,而預測處理的是需要進行浮點加法運算中有效數相加的兩個有效數,即前導零預測不需要等待浮點數加法運算有效數相加的計算結果就可以得到前導零的個數。兩者均可以完成有效數相加后結果的前導零的計算,但前導零預測可以與有效數相加運算并行進行,很大程度地提高浮點加法運算的性能,圖5為前導零檢測電路結構與前導預測電路結構框圖。

Image 005.png

  3.5 浮點加法運算單元的驗證

  本設計功能驗證采用VMM測試方法學,通過System verilog系統硬件描述語言搭建對比測試平臺,產生定向測試激勵和受約束隨機測試激勵[10],對本設計的運算結果與C模型運算結果進行比對,比對結果一致,覆蓋率達到100%,功能上滿足設計要求。圖6為完成一次FADD指令的結果波形圖。

Image 006.png

4 結論

  本文從浮點加法單元的算法結構入手,提出了高速深流水線浮點加法單元設計。使用TSMC 65 nm工藝庫進行綜合,其工作頻率可達900 MHz,兼容X87指令集,可用于高通量CISC微處理器中。

參考文獻

  [1] 張予器.超高精度浮點運算的關鍵技術研究[D].長沙:國防科學技術大學,2005.

  [2] 陳弦,張偉功,于倫正.并行浮點加法器架構與核心算法的研究[J].計算機工程與應用,2006,17(3):53-55.

  [3] 夏杰,宣志斌,薛忠杰.基于流水線結構的浮點加法器IP核設計[J].微計算機信息,2008,24(9):192-193.

  [4] 朱亞超.基于IEEE 754的浮點數存儲格式分析研究[J].計算機與信息技術,2006(9):50-52.

  [5] Intel Corporation. Intel 64 and IA-32 Architectures Software Developer′s Manual[Z]. U.S: Intel Corporation,2011.

  [6] 王穎,林正浩.快速浮點加法器的優化設計[J].電子工程師,2004,30(11):24-26.

  [7] 靳戰鵬.高速浮點加法運算單元的研究與實現[D].西安:西北工業大學,2006.

  [8] 夏有為,林正浩,楊曉峰.一款32位嵌入式CPU的定點加法器設計[J].電子技術應用,2005,31(10):76-78.

  [9] 李星,胡春媚,李勇,等.前導1預測算法的設計與實現[J].計算機科學.2013,40(4):31-35.

  [10] [美]克里斯·斯皮爾.SystemVerilog驗證測試平臺編寫指南[M].張春,趙益新,麥宋平,譯.北京:科學出版社,2009.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 下面一进一出好爽视频| 亚洲一区二区三区免费观看| 美女张开腿黄网站免费| 国产成人午夜精华液| 2019中文字幕无线乱码| 天堂mv在线免费播放| 一本色道久久88加勒比—综合| 日本乱子伦xxxx| 久久精品国产亚洲av电影| 欧美人与物videos另| 亚洲欧美日韩第一页| 特级毛片A级毛片100免费播放 | 成人在线免费看片| 国产精品成人无码视频| 97人洗澡从澡人人爽人人模| 夜夜高潮夜夜爽夜夜爱爱一区| va亚洲va欧美va国产综合| 成人免费毛片视频| 中文字幕免费在线视频| 无码高潮少妇毛多水多水免费| 久久国产精品波多野结衣AV| 日韩欧美小视频| 久久香蕉国产视频| 最新精品亚洲成a人在线观看| 亚洲专区欧美专区| 欧美乱妇高清无乱码免费| 亚洲国产视频一区| 欧美日韩亚洲另类| 亚洲日韩中文无码久久| 欧美激情一区二区三区在线| 国产AV天堂无码一区二区三区| 青青操在线免费观看| 国产区图片区小说区亚洲区| 麻豆国产96在线|日韩| 国产成人福利在线| 国产你懂的在线| 国产成人精品久久一区二区三区 | 九九久久精品无码专区| 最近最新的免费中文字幕| 亚洲AV无码专区在线亚| 月夜直播手机免费视频高清|