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

        ?

        面向人工智能的浮點乘加器設(shè)計

        2019-08-22 09:26:26陳正博吳鐵彬丁亞軍
        關(guān)鍵詞:浮點移位乘法

        陳正博,吳鐵彬,鄭 方,丁亞軍

        (江南計算技術(shù)研究所,江蘇 無錫 214000)

        0 引 言

        隨著人工智能應(yīng)用需求的快速增長,面向人工智能推理和訓(xùn)練的加速芯片已成為該領(lǐng)域重要的發(fā)展方向,許多國內(nèi)外知名的大公司都大力投入相關(guān)研發(fā)。谷歌TPU、NVIDIA Tesla V100、寒武紀(jì)DianNao等是具有代表性的人工智能加速芯片。谷歌公司的TPU[1]以脈動陣列為基礎(chǔ),支持半精度和8位整數(shù)的推理應(yīng)用;寒武紀(jì)公司的DianNao系列[2-5]芯片將神經(jīng)網(wǎng)絡(luò)各層分解成神經(jīng)功能單元(NFU),支持半精度的推理應(yīng)用;英偉達(dá)公司于2017年推出了Tesla V100[6]芯片,引入了張量計算單元(tensor core),支持雙、單、半精度以及混合精度的訓(xùn)練和推理應(yīng)用。

        浮點乘加部件能力是衡量人工智能芯片性能的主要指標(biāo)。以NVIDIA Tesla V100為例,該芯片可達(dá)到7.5 TFLOPS的雙精度計算性能、15 TFLOPS的單精度計算性能和125 TFLOPS的張量計算性能。Tesla V100中包含2 560個FP64的計算單元和5 120個FP32的計算單元,同時引入了640個張量核心。作為人工智能卷積運算的基本單元,張量計算單元的運算方式如圖1所示。

        圖1 Tensor Core基本運算方式

        矩陣運算中,A和B都是半精度浮點數(shù)(FP16)組成的矩陣,C和D同為半精度浮點數(shù)(FP16)或單精度浮點數(shù)(FP32)組成的矩陣。當(dāng)C和D矩陣同為半精度浮點數(shù)時,張量計算單元進(jìn)行半精度的浮點乘加運算;當(dāng)C和D矩陣同為單精度浮點數(shù)時,張量計算單元進(jìn)行半精度乘半精度加單精度的單半混合精度浮點乘加運算。

        考慮到人工智能領(lǐng)域?qū)τ诟鱾€精度的浮點運算和整數(shù)運算都存在需求,研究人員開始進(jìn)行混合浮點乘加器的相關(guān)研究。NVIDIA公司[7]提出了單精度和半精度混合的浮點融合乘加部件。該部件采用雙模式實現(xiàn)不同功能,通過硬件復(fù)用技術(shù),支持單精度浮點乘加、半精度浮點乘加和半精度浮點乘法后加法的運算模式。

        為滿足人工智能領(lǐng)域的不同應(yīng)用場景,人工智能芯片需要集成多種不同精度的運算部件。但目前的人工智能芯片都采用多種獨立運算部件集成的技術(shù)路線,這些獨立的運算部件帶來了較大的芯片面積和功耗開銷。文中采用跨精度復(fù)用的思想,探索通過復(fù)用技術(shù)進(jìn)行多種精度混合的浮點乘加部件實現(xiàn)的技術(shù)可行性。該研究成果對國產(chǎn)人工智能芯片研發(fā)具有重要借鑒意義。

        文中設(shè)計并實現(xiàn)的面向人工智能的浮點乘加器,支持IEEE-754[8]標(biāo)準(zhǔn)的單精度、并行2個半精度、半精度乘半精度加單精度(單半混合精度)的浮點乘加操作,也支持32位、并行2個16位/8位的整數(shù)乘法操作。提出了乘法器復(fù)用、移位器復(fù)用和前導(dǎo)零預(yù)測復(fù)用等一系列關(guān)鍵技術(shù),使用復(fù)用關(guān)鍵技術(shù)設(shè)計和實現(xiàn)該浮點乘加器,研究浮點乘加器中各模塊的詳細(xì)設(shè)計方法。在完成代碼設(shè)計后,對其進(jìn)行功能點和隨機(jī)數(shù)測試,驗證浮點乘加器的正確性,同時使用DC工具進(jìn)行物理綜合,結(jié)果顯示綜合運行頻率可達(dá)2 GHz。

        1 面向AI的浮點乘加器的總體結(jié)構(gòu)

        文中設(shè)計的面向AI的浮點乘加器以經(jīng)典的浮點融合乘加結(jié)構(gòu)[9]為基礎(chǔ),采用6級全流水結(jié)構(gòu)實現(xiàn),總體實現(xiàn)結(jié)構(gòu)如圖2所示。浮點乘加器的輸入數(shù)據(jù)為32位數(shù)據(jù)A/B/C和控制信號,在第6級站臺輸出的數(shù)據(jù)包括32位浮點乘加結(jié)果、浮點異常信號、32位整數(shù)乘法結(jié)果和乘法溢出信號。該浮點乘加器支持單精度、單半混合精度和并行2個半精度的浮點乘加操作,也支持32位、并行2個16位/8位的整數(shù)乘法操作。

        文中設(shè)計的面向AI的浮點乘加器包括數(shù)據(jù)預(yù)處理、指數(shù)差值、對階移位、乘法器、合并、前導(dǎo)零預(yù)測、規(guī)格化移位、指數(shù)調(diào)整、舍入等模塊。圖2中涂黑的乘法器、移位器、合并、前導(dǎo)零預(yù)測模塊使用復(fù)用技術(shù)實現(xiàn),既解決了跨精度復(fù)用功能,又可以優(yōu)化整體實現(xiàn)的面積和功耗等指標(biāo)。各模塊的功能、跨精度復(fù)用技術(shù)和詳細(xì)設(shè)計方法將在第2節(jié)詳細(xì)介紹。

        在設(shè)計的各模塊實現(xiàn)后,首先進(jìn)行功能點和隨機(jī)數(shù)等正確性測試,然后對該設(shè)計進(jìn)行物理綜合,根據(jù)結(jié)果手動調(diào)節(jié)流水線的劃分,使得各級站臺之間的時延基本一致,最終的流水線站臺劃分合理后,再對比單精度和半精度浮點乘加部件比較性能。

        2 各模塊詳細(xì)設(shè)計方法

        本節(jié)將介紹各模塊的功能、邏輯結(jié)構(gòu)和詳細(xì)設(shè)計方法。該設(shè)計中乘法器、移位器、合并與前導(dǎo)零預(yù)測等依據(jù)跨精度復(fù)用思想,使用復(fù)用技術(shù)實現(xiàn)。

        2.1 數(shù)據(jù)預(yù)處理

        數(shù)據(jù)預(yù)處理是對輸入數(shù)據(jù)和控制信號提前進(jìn)行處理,判斷計算方式和數(shù)據(jù)是否符合規(guī)范。數(shù)據(jù)預(yù)處理模塊的功能分別有指數(shù)尾數(shù)拆分、輸入數(shù)據(jù)例外異常檢測兩部分。在數(shù)據(jù)進(jìn)入到數(shù)據(jù)預(yù)處理模塊時,根據(jù)控制信號和部件需要完成的功能,遵守一定的規(guī)則,如表1所示。

        表1 數(shù)據(jù)輸入規(guī)則

        圖2 面向AI的浮點乘加器總體結(jié)構(gòu)

        輸入數(shù)據(jù)滿足規(guī)則后,還需要對輸入異常和例外進(jìn)行檢測,異常情況直接旁路處理,以減少后續(xù)計算復(fù)雜度。例外和異常結(jié)果主要由非數(shù)和無窮數(shù)產(chǎn)生,除此以外,非規(guī)格化數(shù)在實際運算過程中會作為0處理。浮點乘加操作的異常產(chǎn)生條件和處理結(jié)果如表2所示。

        表2 浮點乘加操作異常條件與結(jié)果

        2.2 指數(shù)差值

        指數(shù)差值模塊是根據(jù)輸入數(shù)據(jù)A、B和C的指數(shù)值,計算對階移位量和初始結(jié)果的階碼。由于不同精度數(shù)據(jù)的指數(shù)值不同,尾數(shù)長度也不同,所以分別計算各個精度的對階移位量和初始結(jié)果階碼。在此分別介紹單精度、半精度和單半混合精度的浮點乘加操作中指數(shù)差值模塊的計算方法。

        各種的精度浮點乘加操作,階差的表達(dá)式均為:d=Ce-Ae-Be+bias。

        在得到指數(shù)域差值d后,可以分別計算對階移位量和指數(shù)階碼。單精度浮點乘加操作的尾數(shù)對階移位示意如圖3所示,其中數(shù)據(jù)位0后表示補(bǔ)0,數(shù)據(jù)位0前表示尾數(shù)在小數(shù)點前的部分,小數(shù)點前表示尾數(shù)在小數(shù)點后的部分,可知對階移位量應(yīng)為ASC=27-d,結(jié)果階碼的初值也應(yīng)根據(jù)階差大小決定。若d>27,此時ASC為負(fù)數(shù),對階移位量為0,取加數(shù)階碼的大小作為乘加結(jié)果基礎(chǔ)解碼;若1

        圖3 單精度浮點乘加尾數(shù)對階移位示意

        文中設(shè)計的浮點乘加器分別支持單精度、半精度和單半混合精度的浮點乘加運算,而不同精度的浮點乘加運算中的對階移位量和乘加結(jié)果階碼的計算方式也不相同,需要分別進(jìn)行分析。單精度、半精度和單半混合精度的浮點乘加運算的ASC、對階移位量和乘加結(jié)果階碼計算方式如表3所示。

        表3 對階移位量和結(jié)果階碼的計算方式

        2.3 移位器

        在該設(shè)計中,移位器包括對階移位器和規(guī)格化移位器兩種。對階移位器的功能是進(jìn)行尾數(shù)C和乘法結(jié)果的對階,規(guī)格化移位器的功能是進(jìn)行中間尾數(shù)結(jié)果與規(guī)格化數(shù)的對階。雖然各模塊的功能不同,但移位器的跨精度復(fù)用思想一致。

        移位器跨精度復(fù)用設(shè)計方法介紹如下:以對階移位為例,單精度浮點乘加需求76位移位器,半精度浮點乘加需求37位移位器,混合精度浮點乘加需求50位移位器,考慮到該設(shè)計支持一個單精度乘加、并行兩個半精度乘加、一個混合精度乘加的操作,使用一個37位和一個76位的桶形移位器[10]可滿足需求,在移位器前后分別加上移位位數(shù)選擇器和結(jié)果選擇器,完成對階移位器模塊的復(fù)用設(shè)計。

        以規(guī)格化移位為例,單精度浮點乘加需求52位移位器,半精度浮點乘加需求26位移位器,混合精度浮點乘加可直接復(fù)用單精度操作完成。同樣地,使用一個26位和一個52位的移位器,并在前后分別加上移位位數(shù)選擇器和結(jié)果選擇器,即可完成規(guī)格化移位器模塊的復(fù)用設(shè)計。

        2.4 乘法器

        乘法器是該設(shè)計中最重要的單元,包括部分積生成和部分積壓縮兩個部分,計算方法是按位拆分,分別計算再進(jìn)行合并。乘法計算公式為:

        將公式中括號內(nèi)的內(nèi)容進(jìn)行Booth-4編碼[11-12],生成以A為基礎(chǔ)的16個部分積,再通過部分積壓縮樹將部分積壓縮成Carry和Sum結(jié)果??缇葟?fù)用技術(shù)在部分積生成和部分積壓縮樹兩部分中都有體現(xiàn)。進(jìn)行并行兩個的半精度數(shù)計算的操作中,在生成后8個部分積時,A和B低位填充第一個半精度數(shù),高位填零;生成前8個部分積時,A和B低位填零,高位填充第二個半精度數(shù)。這樣的填充方法可直接進(jìn)行壓縮,不影響最終結(jié)果,得到的后8個部分積壓縮后得到第一個半精度數(shù)乘法結(jié)果,前8個部分積壓縮后得到第二個半精度數(shù)乘法結(jié)果。部分積生成完成后進(jìn)行部分積壓縮,復(fù)用的部分積壓縮樹的結(jié)構(gòu)如圖4所示。

        產(chǎn)生的16個部分積首先經(jīng)過兩層4∶2的CSA壓縮樹,此時產(chǎn)生的4個分量結(jié)果與2個半精度特殊分量分別進(jìn)行3∶2CSA壓縮后即可輸出2個半精度結(jié)果;若其中兩個分量結(jié)果直接與單精度特殊分量進(jìn)行壓縮可輸出單半混合精度結(jié)果;而4個分量經(jīng)過4∶2CSA壓縮樹后再與單精度特殊分量進(jìn)行壓縮可得到單精度結(jié)果,所以此時需要增加一個MUX選擇器,根據(jù)控制信號中的精度信息進(jìn)行分量選擇,這樣最終可得到半精度、單精度或是單半精度的浮點數(shù)乘法中間結(jié)果Carry和Sum。值得注意的是,整數(shù)乘法也可借用此邏輯復(fù)用實現(xiàn),8位整數(shù)乘法套用半精度整數(shù)乘法,16位整數(shù)乘法套用半精度整數(shù)乘法,32位整數(shù)乘法套用單精度整數(shù)乘法即可。

        圖4 部分積壓縮樹

        2.5 合并與前導(dǎo)零預(yù)測

        得到Carry和Sum后,需要將這兩個分量合并成一個分量,同時并行使用這兩個分量進(jìn)行前導(dǎo)零預(yù)測,預(yù)測合并后的分量前方有多少個零,這樣在分量合并得到結(jié)果后,同時通過前導(dǎo)零預(yù)測模塊得到的規(guī)格化移位位數(shù),直接進(jìn)行規(guī)格化移位,從而減少關(guān)鍵路徑時延。

        合并模塊的功能是將Sum和Carry分量合并到一起,得到尾數(shù)計算的中間結(jié)果,通常使用加法器即可實現(xiàn)。合并模塊的跨精度復(fù)用實現(xiàn)技術(shù)比較直觀,由于單精度、半精度和單半混合精度的輸入數(shù)據(jù)大小不同,按照最低位數(shù)拆分并處理,并行使用4個41位的超前進(jìn)位加法器[13],輸入進(jìn)位分別設(shè)置為0和1,4個加法器根據(jù)控制信號分別輸入各種精度的浮點或整數(shù)乘加的Sum和Carry(位數(shù)不足時分別補(bǔ)0和1),然后將加法器結(jié)果通過選擇器可得到不同精度的合并數(shù)值。

        前導(dǎo)零預(yù)測模塊的功能是根據(jù)Sum和Carry分量預(yù)測計算兩個分量合并后的首1位置。前導(dǎo)零預(yù)測模塊的核心算法是LZA算法[14],即對兩個操作數(shù)做減法計算,得到數(shù)零位串,對得到的數(shù)零位串通過樹形結(jié)構(gòu)LZD預(yù)測第一個1的位置,即可得到前導(dǎo)零預(yù)測的結(jié)果。

        前導(dǎo)零預(yù)測的跨精度復(fù)用思想和設(shè)計技術(shù)與合并模塊類似,單精度和半精度的數(shù)零位串的長度分別為52位和26位,考慮到LZD預(yù)測樹的高度可擴(kuò)展性,使用長度為2的次方數(shù)的LZD樹形結(jié)構(gòu)。按照最低位數(shù)拆分并處理,并行使用兩個32位的LZD預(yù)測樹,根據(jù)兩個預(yù)測樹分別輸出的有效位和預(yù)測數(shù)值進(jìn)行邏輯判斷,通過選擇器后,最終得到不同精度需求的規(guī)格化移位位數(shù)。由于前導(dǎo)零預(yù)測算法本身可能會存在1位的誤差,且加法和減法可能存在1位誤差,所以至多存在2位的誤差,需要在規(guī)格化移位結(jié)束后進(jìn)行檢測,若存在誤差則進(jìn)行指數(shù)和尾數(shù)的修正。值得注意的是,在乘法器輸出結(jié)果之后,單半混合精度與單精度結(jié)果的處理方式完全相同,不會額外增加邏輯。

        2.6 指數(shù)調(diào)整與舍入

        指數(shù)調(diào)整模塊的功能是消除誤差,得到準(zhǔn)確的指數(shù)值。由于前導(dǎo)零預(yù)測本身可能存在至多2位的誤差,故在規(guī)格化移位后進(jìn)行簡單的邏輯判斷,計算出指數(shù)調(diào)整和尾數(shù)移位的數(shù)值,使用加法器即可得到最終結(jié)果的指數(shù)值,并對尾數(shù)再進(jìn)行一定量的移位得到最終結(jié)果的尾數(shù)值。

        舍入模塊的功能是對最終結(jié)果進(jìn)行舍入,并合并指數(shù)尾數(shù)結(jié)果得到最終的輸出結(jié)果和異常或溢出信號。得到最終結(jié)果的指數(shù)值和尾數(shù)值后,結(jié)合舍入位和粘貼位的數(shù)據(jù),舍入模塊根據(jù)控制信號提供的4種不同的舍入方式進(jìn)行舍入,得到正常的計算結(jié)果,同時與異常處理結(jié)果合并,即可最終輸出浮點乘加結(jié)果、浮點異常信號、整數(shù)乘法結(jié)果和整數(shù)溢出信號,完成面向AI的浮點乘法器功能。

        3 實驗分析

        3.1 正確性測試

        完成代碼設(shè)計后,撰寫激勵使用PSL語言對浮點乘加器進(jìn)行正確性測試,驗證面向人工智能的浮點乘加器是否滿足正確性要求。正確性測試主要分為功能點測試和隨機(jī)數(shù)測試兩個方面。第一是功能點測試,對于各種異常的輸入分別制造激勵進(jìn)行測試,直到所有的異常情況都被覆蓋,從而檢測浮點乘加器的異常處理機(jī)制是否完備;第二是隨機(jī)數(shù)測試,對于表1中列舉的各種部件功能,包括單精度、半精度和混合精度三種精度浮點乘加,和32/16/8位定點乘法,分別生成十萬組不同的隨機(jī)數(shù)數(shù)據(jù),測試各個功能的結(jié)果是否保持正確,從而檢測浮點乘加器的各功能都能正確使用。功能點和隨機(jī)數(shù)測試的結(jié)果顯示,文中設(shè)計的面向AI的浮點乘加器結(jié)果滿足正確性要求。

        3.2 物理綜合

        使用Synopsys公司的Design Compiler工具,基于28 nm工藝庫條件對浮點乘加器進(jìn)行物理綜合。物理綜合結(jié)果顯示,該部件的綜合運行頻率可達(dá)2 GHz。

        為了評估該部件的功耗和面積等指標(biāo),體現(xiàn)該設(shè)計的優(yōu)越性,在相同條件下,分別對單精度浮點乘加部件[9]、半精度浮點乘加部件[9]和設(shè)計的面向AI的浮點乘加器進(jìn)行物理綜合,并對面積和功耗等性能指標(biāo)進(jìn)行對比,結(jié)果如表4所示。

        表4 性能對比

        對比的結(jié)果可以發(fā)現(xiàn),文中設(shè)計的面積比經(jīng)典的單精度浮點乘加部件增加了27.2%,功耗增加了37.55%??紤]完全無復(fù)用的設(shè)計,完成面向AI的浮點乘加器的計算功能需求至少需要1個單精度部件和2個半精度部件,同時需要1個單半精度混合部件,且單半精度混合部件的面積和功耗比半精度部件要大,在計算無復(fù)用結(jié)果時可進(jìn)行累加。最終結(jié)果顯示,該設(shè)計比完全無復(fù)用設(shè)計的面積至少減少50.09%,功耗至少減少47.91%。

        總而言之,該設(shè)計使用跨精度復(fù)用技術(shù)[15],在保證頻率可接受范圍內(nèi),大幅度減少了設(shè)計的硬件實現(xiàn)消耗,優(yōu)化了浮點乘加器的性能,提出的復(fù)用技術(shù)具有顯著意義。

        4 結(jié)束語

        文中研究和設(shè)計了一種面向AI的浮點乘加器,支持32位、并行2個16位/8位的整數(shù)乘法運算,同時支持單精度、單半混合精度、并行2個半精度的浮點乘加運算。采用跨精度復(fù)用思路,詳細(xì)講解了各模塊的功能、詳細(xì)設(shè)計方法和跨精度復(fù)用實現(xiàn)方案。跨精度復(fù)用技術(shù)是文中的主要創(chuàng)新點,提出了乘法器復(fù)用、移位器復(fù)用和前導(dǎo)零預(yù)測復(fù)用等一系列關(guān)鍵技術(shù)。完成代碼設(shè)計后,對浮點乘加器進(jìn)行了正確性測試,結(jié)果表明浮點乘加器能夠滿足正確性要求。使用DC工具對浮點乘加器進(jìn)行硬件綜合,結(jié)果顯示該設(shè)計類比于無復(fù)用設(shè)計,減少了至少50.09%的面積、47.91%的功耗,綜合運行頻率可達(dá)2 GHz。

        猜你喜歡
        浮點移位乘法
        算乘法
        LEO星座增強(qiáng)GNSS PPP模糊度浮點解與固定解性能評估
        我們一起來學(xué)習(xí)“乘法的初步認(rèn)識”
        《整式的乘法與因式分解》鞏固練習(xí)
        再生核移位勒讓德基函數(shù)法求解分?jǐn)?shù)階微分方程
        基于浮點DSP的鐵路FSK信號檢測
        把加法變成乘法
        大型總段船塢建造、移位、定位工藝技術(shù)
        Σ(X)上權(quán)移位算子的不變分布混沌性
        多指離斷手指移位再植拇指25例
        亚洲一区二区三区在线观看蜜桃| 偷拍一区二区视频播放器| 91视色国内揄拍国内精品人妻| 日韩精品亚洲一区二区| 97夜夜澡人人双人人人喊| 亚洲熟妇少妇69| 一区二区特别黄色大片| 国产午夜免费一区二区三区视频| 西川结衣中文字幕在线| 色视频线观看在线网站| 国产精品老熟女露脸视频| 国产偷窥熟女精品视频| 婷婷激情六月| 国产精品日本中文在线| 亚洲av成人精品一区二区三区 | 粗一硬一长一进一爽一a级| 永久无码在线观看| 产精品无码久久_亚洲国产精| 蜜桃一区二区三区在线视频| 青青草 视频在线观看| av一区二区三区人妻少妇| 国产成人一区二区三区免费观看| 国产av无码专区亚洲aⅴ| 亚洲天堂av黄色在线观看| 国产电影一区二区三区| 国产成人亚洲精品无码mp4| 欧美激情αv一区二区三区| 国产精品久久久久免费看| 国产精品不卡免费版在线观看| 在线观看午夜视频国产| 中文字幕在线观看| 亚洲综合久久成人a片| 任你躁欧美一级在线精品免费| 丰满少妇av一区二区三区| 亚洲tv精品一区二区三区| 香港日本三级亚洲三级| 精品人妻无码视频中文字幕一区二区三区| 国产成人自产拍免费视频| 阴唇两边有点白是怎么回事| 天天爽天天爽夜夜爽毛片| 国产精品后入内射日本在线观看|