亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Karatsuba和Vedic算法的快速單精度浮點乘法器

        2021-06-19 06:46:50易清明符清桿駱愛文陳嘉文
        電子科技大學(xué)學(xué)報 2021年3期
        關(guān)鍵詞:浮點數(shù)乘法器浮點

        易清明,符清桿,石 敏,駱愛文,陳嘉文

        (1.暨南大學(xué)信息科學(xué)技術(shù)學(xué)院 廣州510632;2.泰斗微電子科技有限公司 廣州510663)

        單精度浮點數(shù)乘法運算的耗時主要集中在24 bit的尾數(shù)相乘部分。為了提高單精度浮點數(shù)乘法運算的速度,研究者提出了各種單精度浮點乘法器的改進方法[1-8]。文獻[1]提出了基于Karatsuba算法[9-10]的改進設(shè)計,通過數(shù)學(xué)運算的公式變換,用加法器代替乘法器,相比于24 bit尾數(shù)直接相乘的單精度浮點乘法器的設(shè)計,該設(shè)計減少了3個乘法器,只使用了6個乘法器。但是乘法器的使用限制了單精度浮點乘法器運算速度的進一步提高。文獻[2]提出了一種基于Vedic算法[3-4]的單精度浮點乘法器設(shè)計方法,該設(shè)計沿用了24 bit尾數(shù)直接相乘的設(shè)計思路,通過使用Vedic算法設(shè)計3 bit的乘法器,迭代復(fù)用,實現(xiàn)24 bit的尾數(shù)相乘運算,從而避免乘法器的使用,提高單精度浮點乘法器的運算速度。但是簡單使用Vedic算法設(shè)計單精度浮點乘法器,導(dǎo)致Vedic算法設(shè)計的3 bit乘法器迭代次數(shù)過多,硬件資源增多。文獻[3]沿用了Vedic算法的思想,利用流水線設(shè)計方法對單精度浮點乘法器結(jié)構(gòu)進行優(yōu)化,同時減少單精度浮點乘法器的組合邏輯延時,提高單精度浮點乘法器的運算速度,但是同樣存在Vedic算法設(shè)計的3 bit乘法器迭代次數(shù)過多,硬件資源增多的問題;文獻[5]在Vedic算法的基礎(chǔ)上,通過全加器的復(fù)用來簡化單精度浮點乘法器的設(shè)計結(jié)構(gòu),提高單精度浮點乘法器的運行速度,但是依然無法滿足目前的運算需求。

        以上文獻提出的改進方法對單精度浮點乘法器的運算速度均有一定的提高,但是人工智能的興起對浮點數(shù)乘法運算的速度提出了更高的要求,數(shù)以百萬計的浮點數(shù)乘法運算造成深度學(xué)習(xí)的訓(xùn)練時間過長,限制了人工智能的研究與實用性。為了進一步提高單精度浮點乘法器的運算速度,本文利用Vedic算法改進了Karatsuba算法,并把該算法應(yīng)用于單精度浮點乘法器設(shè)計。

        1 浮點數(shù)乘法原理

        本文設(shè)計的單精度浮點乘法器基于IEEE754標準[11]。單精度浮點數(shù)的表示格式由4字節(jié)組成,分為3個部分。第1部分為符號位,占1 bit;第二部分為階碼部分,占8 bit;第三部分為尾數(shù)部分,占23 bit。一個實數(shù)H的浮點數(shù)表示形式為:

        式中,C表示符號位;Z表示尾數(shù)部分,在浮點數(shù)運算時要補上隱藏的‘1’,轉(zhuǎn)換成{1,Z};E表示階碼,在實數(shù)轉(zhuǎn)換為浮點數(shù)格式時要減去相應(yīng)的偏移量。

        單精度浮點數(shù)乘法運算可以簡單分為4個步驟。

        1)兩個乘數(shù)的符號位進行異或運算。根據(jù)異或的結(jié)果決定最后計算結(jié)果的正負性。若符號位異或的結(jié)果為1,則浮點數(shù)相乘的結(jié)果是負數(shù),若異或的結(jié)果為0,則浮點數(shù)相乘的結(jié)果是正數(shù)。

        2)兩個乘數(shù)的階碼直接相加,其結(jié)果再減去偏移量Bias得到相乘后結(jié)果的階碼,Bias的值為127。

        3)尾數(shù)部分補上隱藏的‘1’,執(zhí)行尾數(shù)相乘操作,得到相乘的結(jié)果V。

        4)步驟3)相乘結(jié)果V的最高位的值決定標準化結(jié)果尾數(shù)的取值。若最高位為1,則取V[46:24]位作為最后標準化結(jié)果的尾數(shù);若最高位是0,則取V[45:23]位作為最后標準化結(jié)果的尾數(shù)。聯(lián)合符號位的值、階碼的值和尾數(shù)的值到兩個浮點數(shù)相乘的結(jié)果。

        浮點數(shù)乘法運算的流程如圖1所示。Ha、Hb表示32位的浮點數(shù),Za、Zb為23 bit的尾數(shù)。Ha的符號位與Hb的符號位進行異或運算得到符號位部分運算后的結(jié)果;Ha的階碼加上Hb的階碼再減去相應(yīng)的偏移量(Bias)得到階碼部分運算后的結(jié)果;尾數(shù)在高位補上隱藏的‘1’,分別得到24 bit的乘數(shù){1,Za}、{1,Zb}。24 bit的乘數(shù)相乘得到48 bit的結(jié)果V,其最高位的值決定浮點數(shù)相乘結(jié)果尾數(shù)的取值。聯(lián)合符號位部分運算后的結(jié)果、階碼部分運算后的結(jié)果及尾數(shù)部分標準化的結(jié)果得到浮點數(shù)相乘的結(jié)果。由于尾數(shù)部分的標準化需要依據(jù)V最高位的值,所以尾數(shù)相乘的耗時決定了浮點乘法器的運算速度。

        圖1 浮點數(shù)乘法運算的流程框圖

        2 Karatsuba算法

        傳統(tǒng)單精度浮點乘法器中的尾數(shù)相乘實現(xiàn)方法如下所示[1]:

        式中,n取值為8;W、X(W={1,Za},X={1,Zb})為24 bit的尾數(shù);W2、W1、W0分別表示W(wǎng)的高8位、中8位、低8位;X2、X1、X0分別表示X的高8位、中8位、低8位。傳統(tǒng)的單精度浮點乘法器設(shè)計把尾數(shù)W和X直接相乘,由式(4)可知,得到24 bit尾數(shù)相乘的結(jié)果需要9個8位×8位的乘法器和8個加法器。由于乘法運算比加法運算耗時長,且電路結(jié)構(gòu)更加復(fù)雜,所以傳統(tǒng)的單精度浮點乘法器效率比較低且運算速度慢。Karatsuba算法用加法器來替代乘法器,從而減少乘法器的使用,達到簡化電路結(jié)構(gòu),提高運算速度的目的?;贙aratsuba算法的24 bit尾數(shù)相乘的實現(xiàn)方法具體如下所示[1]:

        根據(jù)式(5)~(10)可以得到24 bit尾數(shù)相乘的結(jié)果,如下所示:

        由式(11)可得,相比于傳統(tǒng)方法實現(xiàn)的24 bit尾數(shù)相乘,基于Karatsuba算法實現(xiàn)的24 bit尾數(shù)相乘使用的乘法器數(shù)量更少,由之前的9個乘法器減少到6個乘法器,而僅增加了9個加法器。

        3 本文設(shè)計

        針對基于Karatsuba算法設(shè)計的單精度浮點數(shù)乘法器依然存在乘法器,限制了運算速度的提升,本文對原Karatsuba算法進行了改進,并將該改進算法應(yīng)用于單精度浮點乘法器設(shè)計。具體地,本設(shè)計在將24 bit乘法分解為8 bit乘法和9 bit乘法的基礎(chǔ)上,再次復(fù)用Karatsuba算法,將8 bit和9 bit的乘法運算進一步分解,使得原有的24 bit乘法運算被分解為3 bit和4 bit的乘法運算,從而使用更少的低位寬乘法器來實現(xiàn)更高比特的乘法運算,可以減少乘法器的使用,進一步簡化電路結(jié)構(gòu),達到提高運算速度的目的。另一方面,本設(shè)計同時結(jié)合Vedic算法設(shè)計一種基于加法運算的乘法器,替換Karatsuba尾數(shù)乘法架構(gòu)中的3 bit和4 bit的乘法器,從而利用少量低比特加法器實現(xiàn)乘法運算,降低硬件資源消耗和降低關(guān)鍵延時,提高單精度浮點乘法器運算速度。如圖2所示,單精度浮點乘法器由數(shù)據(jù)分割處理模塊、符號位運算模塊、階碼運算模塊、尾數(shù)運算模塊、標準化模塊等5個模塊組成。

        圖2 浮點數(shù)乘法器的整體結(jié)構(gòu)

        如圖2所示,本文對24 bit的尾數(shù)運算(尾數(shù)部分在最高位隱藏了一個“1”,在計算浮點數(shù)乘法時要補上“1”)進行改進。本文的設(shè)計步驟主要分為3個階段:

        1)將24 bit的乘法運算通過Karatsuba算法分解為8 bit的乘法器、9 bit的乘法器、加法器和移位寄存器[1];

        2)再次利用Karatsuba算法對8 bit乘法器和9 bit乘法器進行分解,分解成3 bit的乘法器和4 bit的乘法器、加法器和移位寄存器;

        3)使用Vedic算法設(shè)計的3 bit Vedic乘法器和4 bit Vedic乘法器來代替階段2)的3 bit乘法器和4 bit乘法器。

        以下是各個階段的具體實現(xiàn)方法。

        階段1):由式(11)可知,將24 bit的乘法運算分解為8 bit和9 bit乘法運算;階段2):對式(5)~(10)中的乘法運算進行分解,拆分為3 bit和4 bit的乘法運算。式(5)~(7)中的乘法運算是8 bit的乘法運算,式(8)~(10)中的乘法運算是9 bit的乘法運算。9 bit乘法運算的分解方法和24 bit乘法運算的分解方法一樣,把輸入進行劃分,n的取值變?yōu)?。8 bit乘法運算的分解方法為:

        圖3 Vedic算法設(shè)計3 bit乘法器的流程圖

        式中,W21、W22、X21、X22分別是W2、X2的高4位和低4位,此時n的取值為4。階段3):為了進一步提高單精度浮點乘法器的運算速度,利用Vedic算法設(shè)計的3 bit Vedic乘法器和4 bit Vedic乘法器來代替Karatsuba算法分解后的3 bit、4 bit的乘法器。按照Vedic算法的思想使用加法器來搭建乘法器時使用了流水線設(shè)計方法。

        Vedic算法可通過加法器來實現(xiàn)乘法運算,其具有運算簡單,實現(xiàn)的乘法運算速度快、效率高、硬件資源消耗少的特點[12]?;赩edic算法設(shè)計3 bit Vedic乘法器流程如圖3所示。

        如圖3所示,M是二進制的(110)2,N是二進制的(111)2。M2、M1、M0分別代表M的高1位、中間1位、低1位,N2、N1、N0分別代表N的高1位、中間1位、低1位。運算步驟如下:

        1)M0與N0相與的結(jié)果out0作為輸出結(jié)果的最低位S[0];

        2)M1與N0相與的結(jié)果再加上M0與N1相與的結(jié)果得到值out1,將out1[0]作為輸出結(jié)果的次低位S[1];

        3)out1[1]作為加數(shù)與M0和N2相與的值、M1和N1相與的值、M2和N0相與的值相加得到結(jié)果out2,將out2[0]作為輸出結(jié)果的S[2];

        4)out2[1:2]作為加數(shù)與M1和N2相與的值、M2和N1相與的值相加得到的結(jié)果out3,將out3[0]作為輸出結(jié)果的S[3];

        5)out3[1:2]作為加數(shù)與M2和N2相與的值相加得到結(jié)果out4,將out4作為輸出結(jié)果的S[5:4]。拼接S[5:4]、S[3]、S[2]、S[1]、S[0]的值得到輸出結(jié)果S。

        4 bit Vedic乘法器設(shè)計流程與3 bit Vedic乘法器設(shè)計流程類似。如圖4所示,把式(8)中的W2加W1的結(jié)果A分割為高3位A2、中間3位A1、低3位A0,X2加X1的結(jié)果B分割為高3位B2、中間3位B1、低3位B0。按照Karatsuba算法的思想可以通過3 bit的Vedic乘法器(VM表示Vedic multiplier)和4 bit的Vedic乘法器實現(xiàn)9 bit的乘法運算。9 bit乘法器的整體設(shè)計框如圖4所示。

        圖4 9 bit乘法器的硬件設(shè)計框圖

        同理,按照Karatsuba算法的思想通過8 bit乘法器和9 bit乘法器實現(xiàn)24 bit尾數(shù)相乘運算。24 bit乘法器的整體設(shè)計框如圖5所示。

        圖5 24 bit乘法器的硬件設(shè)計框圖

        由圖5可知,得到24 bit尾數(shù)相乘的結(jié)果僅需要21個4 bit Vedic乘法器和9個3 bit Vedic乘法器。相比于文獻[3]的64個3 bit Vedic乘法器,本文設(shè)計減少了Vedic乘法器的迭代次數(shù)。

        4 算法性能仿真與驗證

        本文設(shè)計的單精度浮點乘法器在Modelsim平臺上進行仿真。隨機產(chǎn)生3000組32位浮點數(shù)測試數(shù)據(jù)ain和bin,執(zhí)行完乘法運算后,在輸出數(shù)據(jù)有效指示信號dout_vld為高電平時得到輸出結(jié)果dout。

        圖6給出了本文設(shè)計的單精度浮點乘法器的一個測試案例的仿真結(jié)果。由仿真結(jié)果可知,輸入ain以十六進制表示為3f000000(即十進制實數(shù)0.5),輸入bin以十六進制表示為3f400000(即十進制實數(shù)0.75),輸出結(jié)果dout以十六進制表示為3ec00000 (即十進制實數(shù)0.375)。根據(jù)仿真波形可得,單精度浮點乘法器的輸出結(jié)果需要延時5拍時鐘,仿真結(jié)果證明了本文所提出的單精度浮點乘法器設(shè)計方法的正確性。

        圖6 浮點數(shù)乘法器的仿真結(jié)果

        為了進一步證明本文設(shè)計的有效性,利用Quartus II 64-bit 13.0.1平臺在相同的芯片Cyclone II EP2C5F256C6、Cyclone IV EP4CE6F17C6上綜合。表1給出了本文設(shè)計的單精度浮點乘法器與文獻[1]算法、文獻[3]算法設(shè)計的單精度浮點乘法器及Altera公司開發(fā)的浮點數(shù)乘法IP核的性能比較。

        表1 5種浮點乘法器的性能參數(shù)對比

        在相同的芯片Cyclone II EP2C5F256C6、Cyclone IV EP4CE6F17C6下,文獻[1]設(shè)計的單精度浮點乘法器最大時鐘頻率分別為59.11MHz、62.31 MHz。文獻[1]消耗的資源較少,是因為沿用了資源消耗少但工作頻率低的乘法器。文獻[3]設(shè)計的單精度浮點乘法器最大運行時鐘頻率分別為148.28 MHz、159.06 MHz。相比于文獻[1],文獻[3]設(shè)計的單精度浮點乘法器的最大運行時鐘頻率提高了2.5倍,但是邏輯單元、寄存器及LUTs使用數(shù)量分別平均增多了約730個、700個和690個。本文二次復(fù)用Karatsuba算法把文獻[1]的9 bit和8 bit乘法運算分解為3 bit和4 bit乘法運算。本文二次復(fù)用Karatsuba算法實現(xiàn)的單精度浮點乘法器的最大時鐘頻率分別增大到73.86 MHz、80.89 MHz。二次復(fù)用Karatsuba算法的實驗結(jié)果證明,文獻[1]設(shè)計的單精度浮點乘法器的最大時鐘頻率受限于乘法器。本文融合Karatsuba算法和Vedic算法兩者優(yōu)點設(shè)計的單精度浮點乘法器輸出結(jié)果需要延時5拍時鐘,相比于文獻[1]的8拍時鐘、文獻[3]的9拍時鐘,延時更短,響應(yīng)時間更快。本文融合Karatsuba算法和Vedic算法優(yōu)點實現(xiàn)的單精度浮點乘法器的最大時鐘頻率是相對最優(yōu)的,分別達到313.58 MHz、331.35 MHz。相比于文獻[1]、文獻[3]、浮點數(shù)乘法IP核,本文融合Karatsuba算法和Vedic算法兩者優(yōu)點設(shè)計的單精度浮點乘法器的最大時鐘頻率分別平均提高了5.30倍、2.10倍、1.97倍。本文融合Karatsuba算法和Vedic算法優(yōu)點設(shè)計的單精度浮點乘法器比文獻[3]的邏輯單元、寄存器及LUTs分別平均降低了22個、330個、127個,比文獻[1]的邏輯單元、寄存器及LUTs分別平均增加了706個、375個、559個,比浮點數(shù)乘法IP核的邏輯單元、寄存器及LUTs分別平均增加了938個、285個、778個,但是在硬件資源可以接受的范圍下獲得了更高的最大時鐘頻率,降低了輸出延時,提高了運算速度。同時本文融合Karatsuba算法和Vedic算法優(yōu)點設(shè)計的單精度浮點乘法器的功耗分別是40.38 mW、75.27 mW。在芯片Cyclone II EP2C5F256C6下,本文設(shè)計的單精度浮點乘法器相比于文獻[1]、文獻[3]、浮點數(shù)乘法IP核分別降低了0.68 mW、0.35 mW、0.21 mW。在芯片Cyclone IV EP4CE6F17C6下,本文設(shè)計的單精度浮點乘法器相比于文獻[1]、文獻[3]、浮點數(shù)乘法IP核分別降低了9.03 mW、9.21 mW、3.0 mW。本文所提出的設(shè)計方法在需要計算大量數(shù)據(jù)的人工智能領(lǐng)域更具有優(yōu)勢,更能滿足計算實時性的需求,具有一定的實用價值。

        5 結(jié)束語

        本文優(yōu)化了Karatsuba算法并利用該算法設(shè)計了基于IEEE754標準的單精度浮點乘法器。設(shè)計充分利用了Karatsuba算法可以減少乘法器數(shù)量的優(yōu)點和Vedic算法可以用簡單的加法器實現(xiàn)乘法功能而門延遲和面積增加很緩慢的優(yōu)點,通過二次復(fù)用Karatsuba算法來減少乘法器的數(shù)量,降低單精度浮點乘法器復(fù)雜度;再通過Vedic算法設(shè)計的3 bit、4 bit Vedic乘法器來替換本文設(shè)計中需要用到的3 bit乘法器和4 bit乘法器,并在Vedic算法設(shè)計的3 bit乘法器、4 bit的乘法器中運用了流水線設(shè)計方法來優(yōu)化結(jié)構(gòu),提高設(shè)計的運行時鐘頻率、運算效率及運算速度。在相同的平臺和芯片型號下,本文設(shè)計的單精度浮點乘法器的最大時鐘頻率相比于文獻[1]、文獻[3]、浮點數(shù)乘法IP核分別平均提高了5.30倍、2.10倍、1.97倍。

        本文研究工作得到羊城創(chuàng)新創(chuàng)業(yè)領(lǐng)軍人才支持計劃的資助(2019019),在此表示感謝。

        猜你喜歡
        浮點數(shù)乘法器浮點
        LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
        四種Python均勻浮點數(shù)生成方法
        電腦報(2021年11期)2021-07-01 08:26:31
        基于浮點DSP的鐵路FSK信號檢測
        在C語言中雙精度浮點數(shù)線性化相等比較的研究
        基于FPGA的流水線單精度浮點數(shù)乘法器設(shè)計*
        非精確浮點數(shù)乘法器設(shè)計
        基于FPGA的浮點FIR濾波器設(shè)計
        改進的Goldschmidt雙精度浮點除法器
        乘法器模塊在FPGA中的實現(xiàn)
        基于FPGA 的數(shù)字乘法器性能比較*
        電子器件(2011年6期)2011-08-09 08:07:22
        欧美乱人伦中文字幕在线不卡| 亚洲成av人的天堂在线观看| 免费观看又色又爽又黄的| 亚洲综合伊人制服丝袜美腿| 亚洲国产精品免费一区| 亚洲天堂av一区二区| 乱色精品无码一区二区国产盗| 久久国产精品一区av瑜伽| 初尝人妻少妇中文字幕| 三上悠亚av影院在线看| 亚洲欧美变态另类综合| 精品婷婷国产综合久久| 国产精品无码素人福利不卡| 欧美激情内射喷水高潮| 国产chinese在线视频| 蜜桃噜噜一区二区三区| 少妇愉情理伦片丰满丰满| 丰满爆乳一区二区三区| 人妻中文字幕不卡精品| 丰满又紧又爽又丰满视频| 天堂网www资源在线| 亚洲天堂在线播放| 性色av手机在线观看| 91久久精品色伊人6882| 日日摸天天摸人人看| 国内揄拍国内精品少妇国语| 国产桃色精品网站| 久久亚洲精品国产av| 国产精品激情| 激情五月天伊人久久| 国产一区二区三区精品成人爱| 色综合久久久久综合体桃花网| 成人精品综合免费视频| 美女黄频视频免费国产大全| 国产无套一区二区三区久久| 少妇下面好紧好多水真爽播放| 亚洲另类精品无码专区| 国产在线AⅤ精品性色| 久久一区二区三区久久久| 国产精品成人久久电影| 尤物无码一区|