《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > EDA與制造 > 設(shè)計應(yīng)用 > Stratus HLS工具在高性能雙精度浮點乘法設(shè)計中的應(yīng)用流程
Stratus HLS工具在高性能雙精度浮點乘法設(shè)計中的應(yīng)用流程
2018年電子技術(shù)應(yīng)用第8期
苑佳紅
天津飛騰信息技術(shù)有限公司,湖南 長沙410000
摘要: 雙精度浮點乘法部件是高性能CPU的核心運算部件之一。描述了使用Cadence Stratus HLS工具設(shè)計和實現(xiàn)雙精度浮點乘法部件,,探索新設(shè)計方法學(xué)在關(guān)鍵路徑延時調(diào)整,、數(shù)據(jù)路徑優(yōu)化以及低功耗優(yōu)化等問題的解決方法,,并探討如何將新的設(shè)計流程結(jié)合到原有項目開發(fā)中等問題,。最終,,高階綜合設(shè)計的RTL,,在28 nm工藝下綜合實現(xiàn)頻率為2.5 GHz,、面積為28 211 μm2,,基本滿足高性能微處理器的開發(fā)要求,增強了在項目中更加廣泛地使用新設(shè)計方法學(xué)的信心,。
關(guān)鍵詞: 高階綜合 HLS 雙精度浮點乘法
中圖分類號: TP302.2
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.189018
中文引用格式: 苑佳紅. Stratus HLS工具在高性能雙精度浮點乘法設(shè)計中的應(yīng)用流程[J].電子技術(shù)應(yīng)用,2018,,44(8):20-23,30.
英文引用格式: Yuan Jiahong. The application flow of Stratus HLS tool in high performance double precision floating point multiplication design[J]. Application of Electronic Technique,2018,,44(8):20-23,30.
The application flow of Stratus HLS tool in high performance double precision floating point multiplication design
Yuan Jiahong
Phytium Technology Co.,Ltd.,Changsha 410000,,China
Abstract: Double-precision floating-point multiplication parts is one of the most important unit of high performance CPU.This article describes the use of Cadence Stratus HLS tools in 28 nm process design and implement double-precision floating-point multiplication. The frequency of this multiplication is 2.5 GHz, and its area is 28 211 square micrometers, which almost meets the requirements of high performance microprocessor development. The experiences of this work enhance the confidence of the more widely using of the new design methodology in our project.
Key words : high-level synthesis,;HLS,;double-precision floating-point multiplication

0 引言

    數(shù)字多媒體的廣泛應(yīng)用,、互聯(lián)網(wǎng)的高速發(fā)展,、人工智能等新興領(lǐng)域的蓬勃興起,,對通用處理器的計算能力要求越來越高,。采用更加復(fù)雜的算法設(shè)計、探索效率更高的架構(gòu)有助于提升通用處理器的性能,。然而在傳統(tǒng)的寄存器傳輸級(Register Transfer level,,RTL)設(shè)計流程中,設(shè)計人員完成運算功能設(shè)計時需消耗大量時間在狀態(tài)機設(shè)計,、流水棧劃分和調(diào)整,、端口協(xié)議,、存儲設(shè)計等復(fù)雜,、難以驗證和優(yōu)化的部分。而且由于RTL抽象層次較低,,需要大量的時間和資源驗證RTL的功能,,最后導(dǎo)致較長的設(shè)計周期,。Stratus高階綜合工具(High-level Synthesis,,HLS)基于高階綜合設(shè)計方法學(xué),,將設(shè)計層次抽象到算法級,將設(shè)計的低值且復(fù)雜的領(lǐng)域交給工具自動完成,,設(shè)計人員能夠?qū)⒏嗟臅r間應(yīng)用在算法設(shè)計、優(yōu)化,、架構(gòu)探索等高價值領(lǐng)域,提高設(shè)計效率,,專注產(chǎn)品質(zhì)量的提升。本文基于Cadence公司的高階綜合工具Stratus設(shè)計和實現(xiàn)高頻低功耗的雙精度浮點乘法模塊,并在此過程中探討高階綜合完成產(chǎn)品前端設(shè)計,、驗證,、優(yōu)化、性能評估的方法和流程,。

1 HLS應(yīng)用流程

    Stratus HLS將設(shè)計抽象到算法級,,對算法做硬件微架構(gòu)實現(xiàn)的構(gòu)想后,使用高級語言SystemC/C/C++描述設(shè)計,,并在高級語言層對設(shè)計做充分的非時序功能驗證,如圖1中設(shè)計階段1所示,。在設(shè)計階段2,,首先需根據(jù)設(shè)計目標設(shè)置高階綜合的約束文件及工藝庫,。然后將設(shè)計階段1完成的SystemC代碼和約束文件灌入Stratus HLS工具,,由工具完成狀態(tài)機、寄存器插入,、流水線級數(shù)設(shè)置等控制電路,生成符合時序,、面積,、性能要求的RTL代碼。最后對RTL代碼做PPA檢查,,選擇使用邏輯綜合工具再一次對HLS生成的RTL代碼做性能評估,,如果符合要求,則開始做RTL的完整功能驗證,。如果PPA檢查不能達到目標要求,,則需要對關(guān)鍵路徑進行分析、優(yōu)化,,此時可以充分利用HLS工具自帶的優(yōu)化功能加速優(yōu)化設(shè)計迭代的完成過程。功能驗證正確后,,則可以進入設(shè)計階段3,邏輯綜合后,,設(shè)計交由后端做邏輯實現(xiàn)。

wdz5-t1.gif

2 Fmul64 SystemC設(shè)計

    雙精度浮點乘法運算部件是通用CPU內(nèi)最基本運算部件之一,其應(yīng)用要求高階綜合獲得RTL設(shè)計滿足2.5 GHz的高頻率,,三站流水,并且其面積和功耗較小,。此部分將介紹Fmul64的主要結(jié)構(gòu)和SystemC設(shè)計方法。

2.1 Fmul64_hls總體結(jié)構(gòu)

    Fmul64的SC設(shè)計總體框圖如圖2所示,,sc_main()是SystemC設(shè)計的top文件,,連接測試環(huán)境Testbench和待測設(shè)計DUT,。DUT即Fmul64,用SystemC語言中的SC_MODULE類實現(xiàn),,作為此次設(shè)計的頂層模塊,,同時在此模塊內(nèi)定義模塊的端口,、時鐘信號、復(fù)位信號,、輸入端口,、輸出端口等,,作為設(shè)計的頭文件,,并包含在其他文件內(nèi)使用,。SystemC語言提供兩個方法用于設(shè)計功能的描述:SC_METHOD和SC_CTHREAD,。其中SC_METHOD用于組合邏輯電路實現(xiàn),,內(nèi)部不能包括wait()語句,,而要實現(xiàn)的Fmul64是流水線設(shè)計,,所以使用SC_CTHREAD用于乘法運算功能的實現(xiàn),函數(shù)命名為run,。

wdz5-t2.gif

2.2 SC_CTHREAD方法實現(xiàn)

    SC_CTHREAD進程實現(xiàn)如圖3所示,,首先設(shè)置需要復(fù)位的信號和復(fù)位值,,然后是定義無限循環(huán)語句,并在內(nèi)部調(diào)用輸入輸出信號的讀寫函數(shù)和含3階波茲編碼的乘法運算函數(shù)do_booth3_multply,。這里用HLS命令HLS_PIPELINE_LOOP設(shè)置設(shè)計類型,,即吞吐率參數(shù)PIPELINE_Ⅱ設(shè)為1,即將Fmul64_hls設(shè)置為流水線型設(shè)計,,并用HLS_CONSTRAINT_LATENCY設(shè)定流水線拍數(shù)LATENCY為3,。Stratus HLS允許將吞吐率和延遲使用宏定義的形式,便于架構(gòu)探索時更改參數(shù),。

wdz5-t3.gif

2.3 Fmul64行為級實現(xiàn)

    雙精度浮點乘法運算過程如圖4所示,。首先對輸入乘法操作數(shù)做數(shù)據(jù)的預(yù)處理,然后做尾數(shù)相乘的乘法運算,,在這里,,本文做了架構(gòu)探索,一種架構(gòu)是使用3階波茲編碼算法實現(xiàn)雙精度浮點尾數(shù)乘法運算,;另一種是使用乘號“*”直接完成浮點尾數(shù)相乘運算,,讓工具來完成乘法運算的具體實現(xiàn)。兩種架構(gòu)的驗證環(huán)境,、優(yōu)化流程是相同的,,所以后續(xù)設(shè)計將以Fmul64波茲編碼設(shè)計為例進行介紹,最后會介紹兩者邏輯綜合結(jié)果,。設(shè)計中使用到的高階綜合指導(dǎo)語句(主要是HLS_DPOPT_REGION)如圖5所示。

wdz5-t4.gif

wdz5-t5.gif

    至此,,SC代碼設(shè)計已完成,并且按照設(shè)計目標的要求使用高階綜合指導(dǎo)語句設(shè)置了流水線和時序要求,,可以開始后續(xù)的驗證和高階綜合處理,。雖然設(shè)計是使用高級語言SystemC描述,,但是其微架構(gòu)仍然是符合硬件設(shè)計和實現(xiàn)規(guī)則的,所以需要注意保持良好的SystemC代碼風(fēng)格非常重要,。

3 功能驗證

    Stratus HLS工具提供統(tǒng)一的驗證平臺,,所以在SC級的測試用例可以同樣用于RTL代碼的驗證,。但是,SC設(shè)計是不包含時序信息的,,所以包含時序的RTL驗證也是必需的,,除了在Stratus內(nèi)回歸測試SC代碼的用例,,還將使用已有的UVM平臺,對RTL和SC設(shè)計同時驗證,,一方面驗證RTL的功能并收集RTL覆蓋率,另一方面一定程度上驗證SC設(shè)計和RTL代碼的一致性,。所以HLS設(shè)計的驗證分為2個方面:

    (1)基于Stratus HLS的驗證

    ①SC行為級模型驗證(SystemC behavioral model)

    ②綜合的SC RTL模型驗證(Synthesized SystemC RTL model)

    (2)基于UVM的SystemC&RTL的驗證

    Verilog RTL實現(xiàn)驗證(Verilog RTL implementation)

3.1 基于Stratus HLS的驗證

    基于Stratus HLS環(huán)境,,本文使用SystemC建立設(shè)計的Testbench環(huán)境,,其結(jié)構(gòu)框圖如圖6所示。時鐘和復(fù)位信號的定義是在主函數(shù)內(nèi),并連接到測試模塊和待測設(shè)計模塊,。Testbench中共實現(xiàn)兩個進程,,Stimuli和Monitor,。Stimuli進程里調(diào)用SystemC語言提供的隨機數(shù)據(jù)生成函數(shù),,生成測試的隨機數(shù)據(jù),。Monitor進程實現(xiàn)簡單的雙精度乘法運算模型,,用于待測設(shè)計的參考模型,并在此處監(jiān)測DUT的結(jié)果輸出,,獲得DUT結(jié)果并與參考模型結(jié)果做比對,,判斷結(jié)果的正確性,。Stratus HLS工具內(nèi)可以自動實現(xiàn)對SC設(shè)計和RTL設(shè)計使用同一個Testbench驗證,,只要在project.tcl中定義不同的define_sim_config時,,指定為RTL_C是對SC設(shè)計驗證或者指定RTL_V是測試高階綜合生成的RTL模型,。

wdz5-t6.gif

3.2 基于UVM的SystemC&RTL驗證

    UVM驗證環(huán)境是既有的乘法運算驗證環(huán)境,如圖7所示,,可以對Fmul64_hls設(shè)計做完整的功能驗證、覆蓋率收集,、斷言監(jiān)測,,同時將SC設(shè)計也放到了驗證環(huán)境里,,但是需要對其外包一個殼,,可以由Stratus工具自動生成,。此部分功能驗證即如圖1 Stratus HLS設(shè)計流程的設(shè)計階段2中的功能驗證2,,因為高階綜合生成RTL代碼的可讀性較差,,所以如果測試用例結(jié)果不一致,,尤其SC設(shè)計的結(jié)果也報錯的話,則需要將測試用例轉(zhuǎn)到Stratus HLS環(huán)境下進行調(diào)試。

wdz5-t7.gif

4 性能評估

4.1 優(yōu)化設(shè)計

    Stratus HLS在將SC設(shè)計轉(zhuǎn)化為RTL代碼時,,由于評估的謹慎性,,會給出更加悲觀的結(jié)果,因此本文選擇使用邏輯綜合工具評估HLS設(shè)計的PPA檢查,邏輯綜合約束參考設(shè)計實際實現(xiàn)要求,,所以比HLS工具中的邏輯綜合約束設(shè)置得更加細致,,最后根據(jù)邏輯綜合結(jié)果來決定是否做設(shè)計優(yōu)化的迭代,。

    在時序較為緊張的時候,,Stratus通常需要很長的時間來做高階綜合優(yōu)化和調(diào)度,,這就使設(shè)計優(yōu)化迭代的時間非常長,,是違背使用高階綜合工具提高設(shè)計效率初衷的。但是Stratus提供多種有效的數(shù)據(jù)路徑優(yōu)化方法,,可以有效地改善路徑延遲,,提高高階綜合效率。比如在設(shè)計優(yōu)化迭代過程中添加DPOPT,,如圖5 SC實現(xiàn)Fmul64過程中的主要HLS指導(dǎo)語句所示,。DPOPT會調(diào)用內(nèi)部集成的邏輯綜合工具優(yōu)化這部分設(shè)計,而且DPOPT通常會使Stratus綜合一版RTL用時大為縮短,,從而大幅提高優(yōu)化設(shè)計的效率,。

4.2 低功耗優(yōu)化

    Stratus工具自帶低功耗優(yōu)化選項,可以自動完成寄存器門控時鐘的插入,、時鐘樹優(yōu)化、狀態(tài)機優(yōu)化等,。本文的設(shè)計是運算功能模塊,,要求在沒有此模塊運算指令的情況下,模塊完全關(guān)閉,動態(tài)功耗為零,;有乘法運算指令的情況下,,動態(tài)功耗和靜態(tài)功耗能夠盡可能小。Fmul4_booth3的初次功耗評估結(jié)果如表1所示,。

wdz5-b1.gif

    通過上述數(shù)據(jù),,可以了解到Fmul64_HLS設(shè)計在無乘法運算時,滿足動態(tài)功耗為零的要求,,但是在有乘法運算指令時的功耗卻比較大,,不滿足功耗要求,需要對功耗做進一步的優(yōu)化,。分析設(shè)計發(fā)現(xiàn)DPOPT功耗和資源共享都會引起功耗的增加,,所以在project增加以下選項優(yōu)化功耗:

    (1)set_attr  dpopt_with_enable   on

    (2)set_attr  sharing_effort_parts  low

    dpopt_with_enable對RTL架構(gòu)的影響如圖8所示。

wdz5-t8.gif

    顯然dpopt_with_enable=on的RTL架構(gòu)是對靜態(tài)功耗的優(yōu)化大有幫助的,。

    sharing_effort_parts =low 會停止演算器的共享,。經(jīng)分析,這個選項可以減少不必要的演算器的共享從而可優(yōu)化動態(tài)功耗以及時序,。優(yōu)化之后的Fmul64_booth3功耗如表2所示,。

wdz5-b2.gif

    可以看到通過設(shè)置優(yōu)化選項,靜態(tài)功耗和動態(tài)功耗均有所優(yōu)化,,其中靜態(tài)功耗約優(yōu)化了5%,,動態(tài)功耗優(yōu)化了約39%。寄存器門控比率達到100%,,完全由工具完成寄存器門控時鐘的插入和低功耗優(yōu)化,,提高設(shè)計效率。

4.3 邏輯綜合結(jié)果

    高階綜合設(shè)計的RTL功能驗證正確后,,則設(shè)計可以做邏輯綜合,。對兩種Fmul64架構(gòu)分別作了邏輯綜合,在28 nm工藝下,,邏輯綜合結(jié)果如表3所示,。

wdz5-b3.gif

    Stratus HLS給出的面積評估結(jié)果與邏輯綜合工具的結(jié)果有所不同,經(jīng)分析,,Stratus HLS綜合約束并不嚴格,,所以面積、延遲的評估數(shù)據(jù)存在誤差,。而對比兩種架構(gòu)綜合結(jié)果,,可以看到Fmul64用乘號代替波茲編碼算法的設(shè)計面積上更優(yōu)化,而時序結(jié)果相對較差,,但是,,其在設(shè)計時間的節(jié)省是非常顯著的,。

5 結(jié)論

    Stratus HLS工具改變了設(shè)計的抽象層次,所以其在工程中的應(yīng)用流程與傳統(tǒng)RTL設(shè)計是有區(qū)別的,,驗證環(huán)境,、調(diào)試流程、驗證收斂的依據(jù),、邏輯綜合優(yōu)化的時間等問題的解決提前到了算法級,,而且可以將微架構(gòu)的探索加入到設(shè)計流程,不變的是設(shè)計人員仍然需要從硬件的角度考慮SC代碼的微架構(gòu)設(shè)計,。Stratus HLS工具強大的狀態(tài)機自動化設(shè)計,、資源自動調(diào)度和共享、低功耗優(yōu)化等功能,,使設(shè)計人員能夠?qū)⒏嗟臅r間用于架構(gòu)探索或者算法優(yōu)化,,極大的縮短設(shè)計周期,拓展設(shè)計人員可控制設(shè)計規(guī)模上限,,滿足工程項目的時間進度要求,,也增強了我們在工程項目中推廣使用高階綜合工具的信心和決心。



作者信息:

苑佳紅

(天津飛騰信息技術(shù)有限公司,,湖南 長沙410000)

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。