<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 將浮點(diǎn)轉為定點(diǎn) 大幅降低功耗和成本

將浮點(diǎn)轉為定點(diǎn) 大幅降低功耗和成本

作者: 時(shí)間:2018-09-14 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要

本文引用地址:http://dyxdggzs.com/article/201809/389188.htm

在數據中心、航空航天與軍用、5G 無(wú)線(xiàn)以及汽車(chē)等領(lǐng)域,客戶(hù)必須滿(mǎn)足高級駕駛員輔助 (ADAS)、雷達和深度學(xué)習等應用中嚴峻的散熱、功耗和成本要求。

要實(shí)現這些目標,一種極為有效的方法是用定點(diǎn)數實(shí)現信號處理鏈。賽靈思FPGA 和 SoC 具備固有的可變精度支持,允許客戶(hù)輕松調整以適應不斷演變的朝更低精度解決方案發(fā)展的這種行業(yè)趨勢。

賽靈思提供一種包含 Vivado® 高層次綜合 (HLS) 的工具流程,允許客戶(hù)方便地評估 C/C++ 設計的更低精度實(shí)現方案,諸如定點(diǎn)等。

簡(jiǎn)介 :賽靈思支持的數據類(lèi)型

賽靈思 All Programmable 器件和工具支持從二進(jìn)制到雙精度浮點(diǎn)在內的多種數據類(lèi)型。用定點(diǎn)實(shí)現的設計總是比用浮點(diǎn)實(shí)現的同一設計更加高效,因為定點(diǎn)實(shí)現方案所占用的資源和消耗的功耗更少。若將設計遷移到定點(diǎn),功耗和占用面積縮減一半并不稀奇。

相較于浮點(diǎn),定點(diǎn)數據類(lèi)型的優(yōu)勢包括 :

• 邏輯資源占用減少

• 功耗降低

• 材料成本降低

• 時(shí)延縮短

賽靈思所有器件均支持客戶(hù)采用浮點(diǎn)數據類(lèi)型提供的動(dòng)態(tài)范圍,能實(shí)現高達 7.3TFLOPs 的單精度浮點(diǎn)DSP 性能。

業(yè)界領(lǐng)先的賽靈思工具套件提供浮點(diǎn)支持。Vivado® 高層次綜合 (HLS) [ 參考資料 1] 和 System Generator for DSP [ 參考資料 2] 本身均支持可變的浮點(diǎn)精度,包括半精度 (FP16)、單精度 (FP32) 和雙精度 (FP64) ;System Generator 還支持自定義精度,具備更大的靈活性。這些工具本身還支持可變定點(diǎn)數據類(lèi)型。

表1 :賽靈思工具支持浮點(diǎn)和定點(diǎn)數據類(lèi)型

注 :

1. System Generator for DSP 原本不支持 FP16,但支持自定義 FP16。

2. 浮點(diǎn)運算符內核支持 →定點(diǎn)到浮點(diǎn)轉換、浮點(diǎn)到定點(diǎn)轉換以及浮點(diǎn)到浮點(diǎn)的精度變換

賽靈思器件和工具均能支持可變精度數據類(lèi)型,以便客戶(hù)能夠簡(jiǎn)單、靈活地調整和適應行業(yè)趨勢的變化,例如圖像分類(lèi)只要求 INT8 或更低的定點(diǎn)計算,以保持可接受的推斷精度 [ 參考資料 3][ 參考資料 4]。

用于高計算強度工作負載的其他器件,例如 GPU,在傳統上其結構決定了只能有效支持單精度浮點(diǎn)。這些廠(chǎng)商現在也開(kāi)始重新設計產(chǎn)品,以應對趨勢的變化。賽靈思的可擴展架構允許客戶(hù)調整信號處理鏈的精度,以便滿(mǎn)足日新月異的行業(yè)需求。

當選擇實(shí)現浮點(diǎn)還是定點(diǎn)信號處理鏈時(shí),客戶(hù)必須在功耗、成本、生產(chǎn)力和精度之間仔細權衡。

賽靈思靈活的 DSP48E2 Slice 可使用所有數據類(lèi)型進(jìn)行重要的 DSP 計算。當實(shí)現新的定點(diǎn)設計或針對某些應用(適用浮點(diǎn)到定點(diǎn)轉換)將現有設計從浮點(diǎn)轉換成定點(diǎn)時(shí),DSP Slice 與賽靈思工具集相結合能夠帶來(lái)巨大優(yōu)勢和靈活性 [ 參考資料 5]。

對于采用 C/C++ 語(yǔ)言設計的客戶(hù),賽靈思提供 Vivado HLS 并支持任意精度定點(diǎn)數據類(lèi)型,使客戶(hù)能夠方便地采用定點(diǎn)進(jìn)行設計或者將現有的 C/C++ 設計轉換成定點(diǎn)。

浮點(diǎn)轉換為定點(diǎn)的優(yōu)勢

對于目前幾乎所有的設計,最小化功耗是需要優(yōu)先處理的問(wèn)題。大多數應用產(chǎn)品必須首先滿(mǎn)足嚴格的功耗和散熱范圍要求,才能投產(chǎn)。

普遍接受的一個(gè)原則是,浮點(diǎn)設計較之低精度設計而言,功耗更大 [ 參考資料 6][ 參考資料 7]。這對FPGA 來(lái)說(shuō)也一樣,其中的浮點(diǎn) DSP 模塊已被硬化在 FPGA 中,另外客戶(hù)必須使用提供的 DSP 資源和其它 FPGA 資源來(lái)實(shí)現軟解決方案。浮點(diǎn)方案與同等的定點(diǎn)解決方案相比需占用更多的 FPGA 資源。資源占用增多,功耗隨之增大,最終會(huì )增加設計實(shí)現的總成本。

將浮點(diǎn)設計轉換為定點(diǎn)設計有助于滿(mǎn)足嚴格的規范,具體體現在以下幾個(gè)方面 :

減少 FPGA 資源占用

○ 使用定點(diǎn)數據類(lèi)型時(shí),所需的 DSP48E2、查找表 (LUT) 和觸發(fā)器更少。

○ 存儲定點(diǎn)數字所需的存儲容量更小。

• 功耗更低

○ 減少 FPGA 資源利用自然就會(huì )降低功耗。

• 材料成本降低

○ 設計人員可利用額外的資源以相同成本在應用中實(shí)現附加功能。

○ 資源的節約能大幅提升 FPGA 的計算能力。計算能力的提升可以讓很多應用受益,例如機器學(xué)習

DNN。

○ 資源的節省還可能減小設計所需的器件尺寸。

• 降低時(shí)延

○ 當實(shí)現 FIR 時(shí)減少所用的資源,尤其是減少 DSP48E2 Slice 的占用,能降低定點(diǎn)設計的時(shí)延。

• 相近的性能和精度

○ 對于不需要用浮點(diǎn)實(shí)現動(dòng)態(tài)范圍的設計和應用,定點(diǎn)方案能提供相近的結果和精度。 有些情況

下,結果甚至更好。

過(guò)去由于缺乏工具支持,難以將設計從浮點(diǎn)轉換為定點(diǎn)。對于針對賽靈思 All Programmable 器件的 C/C++ 開(kāi)發(fā)人員來(lái)說(shuō),可使用 Vivado HLS 減少轉換過(guò)程中遇到的挑戰。

這種轉換能帶來(lái)多種優(yōu)勢,在適用情況下應認真考慮——尤其是不需要利用浮點(diǎn)來(lái)實(shí)現動(dòng)態(tài)范圍和浮點(diǎn)精度的設計,而且很小的可預見(jiàn)的精度損失不會(huì )在部署后的應用中導致無(wú)效性。

實(shí)例 :將浮點(diǎn) FIR 濾波器轉換為定點(diǎn)

Vivado HLS 中簡(jiǎn)單的 FIR 濾波器設計 [ 參考資料 8] 可用來(lái)展示浮點(diǎn) FIR 設計轉換為定點(diǎn)設計如何減少所用資源和功耗并實(shí)現相近的結果精度。

單精度浮點(diǎn) FIR

在 C++ FIR 函數代碼中,頂層函數將 FIR.h 報頭文件中找到的類(lèi) CFir 文件 (class CFir) 實(shí)例化。

CFir 類(lèi) (CFir class) 是主要的 FIR 算法,在報頭文件 FIR.h 中定義。

此函數包含重要的 ARRAY_PARTITION 編譯指示,以確保設計的所有實(shí)現方案都是 II=1 (迭代間隔為1)[ 參考資料 9]。PIPELINE 編譯指示也被應用到頂層函數調用。

這些編譯指示、并行產(chǎn)品實(shí)現以及用于執行累加的加法器樹(shù),能夠在整個(gè) FIR 函數中確保最低時(shí)延(無(wú)論數據類(lèi)型如何),同時(shí)保持 II = 1。

在 fp_FIR 函數中,fp_coef_t、fp_data_t 和 fp_acc_t 都被定義為浮點(diǎn)類(lèi)型,即 C++ 默認的單精度浮點(diǎn)數據類(lèi)型。

通過(guò)報頭文件中的 include 命令加載濾波器系數

用系數創(chuàng )建一個(gè)對稱(chēng) FIR 濾波器,但本例中,未使用 DSP48E2 Slice 中的預加法器。如果使用預加法器,會(huì )實(shí)現更高效率。

以下是針對 85 抽頭 FIR 濾波器得到的結果,在 Vivado HLS 中運行 C 綜合與實(shí)現,并采用 XCVU9P2FLGB2104 器件上的 400MHz 時(shí)鐘(2.5ns 時(shí)鐘周期)。見(jiàn)表 2。

表 2 :?jiǎn)尉雀↑c(diǎn) FIR 的實(shí)現后結果

本例中,需要 423 個(gè) DSP48E2 以及約 23,000 個(gè) LUT 來(lái)實(shí)現單精度浮點(diǎn) FIR。實(shí)現后,時(shí)延為 91 個(gè)時(shí)鐘周期,FMAX 為 500MHz(遠遠高于 400MHz 的目標)。

轉換到定點(diǎn) FIR 濾波器

為實(shí)現最高 DSP 效率,浮點(diǎn)到定點(diǎn)的轉換必須考慮 DSP Slice 的總線(xiàn)寬度,即 27x18 位乘法器和 48 位累加器。將總線(xiàn)寬度進(jìn)一步縮減到到設計允許的最低水平,從而盡可能減少資源占用和功耗。

針對這個(gè) FIR 濾波器實(shí)例,定義以下定點(diǎn)數據類(lèi)型以匹配 DSP48E2 Slice 中的總線(xiàn)大小,即 18 位系數中1 個(gè)整數位和 17 個(gè)小數位 ;27 位數據中 15 個(gè)整數位和 12 個(gè)小數位 ;以及 48 位累加器中 19 個(gè)整數位和29 個(gè)小數位。

要使用 Vivado HLS 固有的 ap_fixed 數據類(lèi)型,必須包含 ap_fixed.h 報頭文件,以定義任意定點(diǎn)數據類(lèi)型 [ 參考資料 9]。

再次采用 400MHz 時(shí)鐘(2.5ns 時(shí)鐘周期)和 XCVU9P-2FLGB2104 器件,定點(diǎn) FIR 設計的 C 綜合與實(shí)現產(chǎn)生的結果如表 3 所示。

表 3 :比較兩種設計的實(shí)現后結果

正如結果顯示的那樣,重視時(shí)延和 FPGA 資源利用率,能獲得明顯的改進(jìn)。

在 UltraScale 架構中,通過(guò)將多個(gè) DSP48E2 Slice 級聯(lián),必要時(shí)仍可支持更高總線(xiàn)寬度。采用級聯(lián)DSP48E2 Slice 的定點(diǎn)設計,與浮點(diǎn)方案相比仍可顯著(zhù)減少資源占用和功耗。

比較濾波器精度

在 System Generator for DSP 中使用 Vivado HLS 模塊(來(lái)自賽靈思模塊集),在 MATLAB®/Simulink®環(huán)境中比較 FIR 濾波器的兩種實(shí)現方案。見(jiàn)圖 1。

圖 1 :System Generator for DSP 模型 - 使用兩種 HLS 解決方案進(jìn)行分析

System Generator 模型由兩個(gè) Vivado HLS 模塊構成,都經(jīng)過(guò)配置以包含來(lái)自 Vivado HLS 的單精度浮點(diǎn) (FP32) 和定點(diǎn) FIR 解決方案。兩個(gè)模塊具有相同的輸入和離散脈沖信號,然后在 Simulink 示波器上比較每個(gè) FIR 的輸出。見(jiàn)圖 2。

圖 2 :System Generator 中兩個(gè) HLS 設計的輸出

為了方便比較輸出,有必要延遲定點(diǎn)結果,以按照兩種解決方案之間的時(shí)延差進(jìn)行對比。

正如預期的那樣,兩種 FIR 濾波器產(chǎn)生的結果幾乎相同,差異很小。

為進(jìn)一步分析信號,將兩個(gè)輸出相減。得到的信號表明精度損失非常小,處在如圖 3 所示頻譜分析圖中的 -100dBm 至 -160dBm 范圍。

圖 3 :兩個(gè)輸出差的 dB 圖

關(guān)鍵優(yōu)勢

當把原始單精度浮點(diǎn) FIR 濾波器的結果與轉換后定點(diǎn) FIR 濾波器的結果進(jìn)行比較時(shí),發(fā)現定點(diǎn)設計不僅減少了資源占用 , 降低了時(shí)延,同時(shí)還能保持甚至提高設計的最大頻率 (FMAX) 。見(jiàn)圖 4。

圖 4 :定點(diǎn) - 性能相近,并減少時(shí)延、資源占用和功耗

大大減少 FPGA 資源占用

本例中的定點(diǎn) FIR 所占資源不足原始浮點(diǎn) FIR 的五分之一。

選擇總線(xiàn)寬度,實(shí)現到硬件中 DSP48E2 slice 的最佳映射。這樣允許每次相乘都在一個(gè) DSP48E2 Slice 中完成,并針對 85 個(gè)系數并行完成。這將 DSP48E2 Slice 的使用量減小至浮點(diǎn)解決方案的 20%。

實(shí)現 FPGA 架構中 LUT 的大幅節省(約 90%),因為在定點(diǎn)方案中,無(wú)需額外的 LUT 來(lái)構建浮點(diǎn)運算。

如果一個(gè)設計有 10 個(gè) FIR 濾波器,預計功耗會(huì )隨設計而擴展。表 4 顯示了 10 FIR 濾波器設計的單精度和定點(diǎn)實(shí)現方案的 XCVU9P FPGA 資源占用。當將單精度浮點(diǎn)的資源占用與定點(diǎn)實(shí)現方案進(jìn)行對比時(shí),會(huì )看到明顯的差異。

表 4 :兩種數據類(lèi)型 10 FIR 濾波器所使用的資源

顯著(zhù)的資源節省能實(shí)現多種優(yōu)勢,為設計人員帶來(lái)深遠的影響,有助于他們改進(jìn)設計特性集、設計功耗、設計性能和設計成本。

實(shí)現顯著(zhù)的功耗節省

顯著(zhù)的資源節省能夠相應地降低功耗量。

將本白皮書(shū)中單個(gè) FIR 濾波器的兩種實(shí)現方案的功耗估算結果進(jìn)行比較,發(fā)現定點(diǎn) FIR 的功耗減少1.4W。兩種方案中,器件的靜態(tài)功耗都是略高于 3W,單個(gè)單精度浮點(diǎn) FIR 設計的總功耗為 4.7W。這表明該設計的動(dòng)態(tài)功耗節省 80% 以上,定點(diǎn) FIR 功耗為 3.3W。

再看看 10 FIR 濾波器設計,可利用賽靈思功耗估算器 (XPE) 和表 4 中的資源來(lái)獲得兩種實(shí)現方案的功耗估算結果。圖 5 對節省效果進(jìn)行了比較。

圖 5 :10 FIR 濾波器實(shí)例 :利用定點(diǎn)實(shí)現顯著(zhù)的功耗節約

這個(gè) 10 FIR 濾波器實(shí)例中,把設計轉換成定點(diǎn)數據類(lèi)型后,總功耗節省 70%。如果設計具有大量浮點(diǎn)信號處理,需占用大量 FPGA 資源,則通過(guò)將部分或全部浮點(diǎn)信號處理鏈轉換成定點(diǎn),能夠實(shí)現巨大的功耗節省。

削減材料成本

將浮點(diǎn)設計轉換成定點(diǎn)方案,能大大減少 FPGA 資源占用。FPGA 資源的削減能降低材料成本。通過(guò)三種方法來(lái)實(shí)現。

1 可利用最新可用的 FPGA 資源來(lái)增加應用特性集。

2 由于所用 FPGA 資源大量減少以及通過(guò)數據路徑提高 FMAX,因此 FPGA 的總體計算能力顯著(zhù)提高。

3 由于所需 FPGA 資源減少,因此設計可遷移到更小型的賽靈思 FPGA 中。

相近的精度

通過(guò)比較單個(gè) FIR 濾波器設計兩種實(shí)現方案的輸出,會(huì )發(fā)現定點(diǎn)實(shí)現方案提供相近的濾波器精度,精度損失僅為 -100dBm 至 -160dBm,同時(shí)能降低功耗和成本。

然而,定點(diǎn)方案無(wú)法獲得相同的動(dòng)態(tài)范圍,導致設計中出現可預測的精度損失。對于很多設計來(lái)說(shuō)這不成問(wèn)題,因為只需要最低標準的精度。與單個(gè) FIR 實(shí)例類(lèi)似,這類(lèi)設計很適合轉換為定點(diǎn)。

對于需要更大精度值的設計,有時(shí)可將信號處理鏈中的中間值從浮點(diǎn)轉換為定點(diǎn)。這種方案使設計人員能夠將設計的特定部分(而非全部)轉換為定點(diǎn)。最終,這使設計人員能夠在需要時(shí)保持動(dòng)態(tài)范圍,確保維持數據路徑的精度,同時(shí)充分發(fā)揮定點(diǎn)實(shí)現方案帶來(lái)的部分優(yōu)勢。

降低時(shí)延

對于單個(gè) FIR 設計實(shí)例,可通過(guò)濾波器降低時(shí)延——定點(diǎn)實(shí)現方案為 12 個(gè)時(shí)鐘周期,浮點(diǎn)設計為 91 個(gè)時(shí)鐘周期。隨著(zhù)資源用量減少,尤其是 DSP48E2 Slice 減少,有望降低時(shí)延。

除了降低時(shí)延,在單個(gè) FIR 實(shí)例中,還能提升 FMAX,實(shí)現之后能將 FMAX 提升 16%。

結論

賽靈思 All Programmable 器件和工具支持多種數據類(lèi)型,包括多種精度的浮點(diǎn)和定點(diǎn)。使用浮點(diǎn)的設計與使用定點(diǎn)的同一設計相比,資源用量和功耗都要更高,無(wú)論針對 FPGA 還是其他架構(例如 GPU)都是如此。

某些應用領(lǐng)域已開(kāi)始放棄浮點(diǎn)數據類(lèi)型,例如深度學(xué)習推斷工作負載會(huì )盡可能多地使用 INT8 或更低精度,這已經(jīng)成為明顯的行業(yè)趨勢。

如今的設計環(huán)境極富挑戰,散熱和功耗要求越來(lái)越難以滿(mǎn)足,因此,設計人員必須評估所有可能的方法來(lái)降低功耗。其中一種選擇就是將浮點(diǎn)設計轉換為定點(diǎn)。

如果是使用 C/C++,Vivado HLS 等賽靈思工具有助于簡(jiǎn)化轉換過(guò)程。

設計人員必須對定點(diǎn)數據類(lèi)型的轉換進(jìn)行充分權衡,并充分理解這樣做所能帶來(lái)的巨大優(yōu)勢。

繼續使用浮點(diǎn)是通向市場(chǎng)的捷徑,但是成本高。投入時(shí)間和精力轉換成定點(diǎn),這樣能夠降低資源使用量、成本和功耗,而且性能損失很小,從而獲得巨大優(yōu)勢。



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>