摘 要: 以往,手寫RTL代碼在FPGA上實現的高強度應用通常能實現較高的質量,但是生產力不高;而用DSP處理器實現的應用生產力雖高,但結果質相對較差。權衡可編程DSP處理器和FPGA的使用問題時,開發時間對許多系統設計人員而言都是一大障礙。BDTI的評估顯示,高級綜合工具可以在很大程度上消除這一障礙,能夠簡化DSP開發人員用 FPGA 實現設計的工作。
關鍵詞: DSP;FPGA;高級綜合工具(HLST)
近年來,高級綜合工具(HLST)已成為在設計方案中使用或希望使用FPGA的工程師的必備工具。這種工具以應用的高級表示法(例如用C語言或MATLAB的M語言編寫的表示法)為輸入,并生成面向FPGA的硬件實現的寄存器傳輸級HDL描述。
高級綜合工具對兩種類型的潛在用戶非常有用,一是正在實現高強度數字信號處理(DSP)應用的FPGA用戶,二是正在實現高強度數字信號處理(DSP)應用的高性能DSP處理器用戶。這是因為信號處理工作負載非常繁重,通常需要較高的數據速率和高級并行處理能力,這種需求往往適合采用HLST的FPGA來實現。
對目前的FPGA用戶來說,HLST工具有望簡化并加速設計進程。而對目前的DSP處理器用戶而言,HLST則提供了一種獨特且相當富有吸引力的作用,無需編寫RTL代碼就能移植到更強大的處理引擎FPGA上。
過去的高級綜合工具都不能生成高效的RTL代碼(就資源使用率而言)。大多數工程師都不愿犧牲手編的RTL代碼的性能和效率,因此這種工具未能贏得較大市場份額。不過,最近出現的一些新鮮事例顯示,面向賽靈思FPGA的新型HLST工具其效率和易用性都非常高。在這種情況下,潛在用戶要如何去評判高級綜合工具是否有使用價值呢?
為了回答這一問題,獨立基準測試與分析公司BDTI于2009年制定了BDTI高級綜合工具認證計劃。其目標是為FPGA的HLST提供客觀可信的數據與分析,確保潛在用戶能快速了解其在高強度信號處理應用中的功能及局限性。評估時站在沒有FPGA開發經驗但卻具有豐富DSP軟件開發經驗的工程師角度,這也反映了大量潛在受益于HLST的處理器用戶的實際情況。
最初進行評估的兩個HLST程序是Synfora的PICO和AutoESL的AutoPilot。2010年初,BDTI發布了首次評估測試計劃的結果,其中的一些結果讓許多FPGA和DSP處理器用戶都感到吃驚。
采用HLST實現應用
采用HLST實現測試應用的步驟是,先對所需功能進行高級語言描述,高級綜合工具由此生成RTL 實現。隨后賽靈思的RTL工具(集成綜合環境(ISE)和嵌入式開發套件(EDK))將RTL實現轉化為比特流形式的完整FPGA實現,用于對帶有I/O和存儲器的特定硬件平臺上的特定賽靈思FPGA進行編程。本案例中使用的平臺為賽靈思的XtremeDSPTM視頻入門套件——Spartan?誖-3A DSP版本,這是一款基于Spartan-3A DSP FPGA的目標設計平臺。
該評估本可以僅限于高級綜合工具,忽略設計流程中的“RTL到比特流”部分的評估,但評估者認為,潛在用戶應該了解從高級應用描述轉變到FPGA實現的整個流程情況,而這項工作需要RTL工具以及高級綜合工具,因此還是應對整個實現流程進行評估,不只是“C到 RTL”部分,還包含賽靈思RTL工具鏈。
在任何硬件目標上實現應用的第一步通常都是重建初始C代碼。這里所說的“重建”是指重新編寫初始的C代碼(初始的代碼主要是為了讓代碼變得更清晰,便于了解,而不是出于性能考慮),將其轉變為更適合于目標處理引擎的格式(例如在DSP處理器上重新安排應用的控制流程,確保中間數據始終適應高速緩存要求)。就面向FPGA的高級綜合工具而言,重建通常要提供應用表示法,確保工具能提取潛在的并行性,從而優化流水線實現。
一般而言,高級綜合工具都不能自動進行重建,而是需要手工重建。事實上,設計人員可以不借助高級綜合工具來進行重建。例如,在評估中使用Microsoft Visual Studio重建并驗證C代碼。相對于重建和語言翻譯作為統一步驟出現的手編RTL代碼而言,完全用C語言進行重建相對比較簡單,出錯的可能性也少,這是高級綜合工具的一大優勢。
重建高級代碼后,用戶讓HLST綜合生成RTL HDL代碼所指定功能的硬件實現。賽靈思的RTL工具(ISE和EDK)采用HLST生成的RTL代碼,執行綜合和布局布線任務,報告實現的資源利用率,并通知用戶各種時序問題。
BDTI的工具認證計劃
BDTI制定高級綜合工具認證計劃的目標就是進行兩大關鍵點對比,以滿足兩類潛在HLST用戶的需求。首先,希望比較基于HLST的FPGA應用實現和基于手編RTL代碼實現的效率,這一信息對目前正在考慮是否要采用HLST加速開發時間的FPGA用戶而言至關重要(就資源使用率而言)。其次,希望對用面向FPGA的HLST與用DSP處理器及相關軟件開發工具實行同一工作負載時的性能與難度比較。這一對比可幫助DSP處理器用戶估算出將技術移植到FPGA設計方案上的難度有多大。
用明確定義的樣本應用(即“工作負載”)評估高級綜合工具流程(包括相關的RTL工具)。上述應用(下一節將做簡要說明)主要代表設計人員通常在FPGA上實現的高強度數字信號處理應用,對數據速率和計算強度均要求高。其他類型的應用產生的結果與這里給出的結果可能會有所不同。
用不同方法實現這兩種應用。首先,將高級綜合工具與賽靈思RTL工具結合使用,在目標FPGA上實現給定的工作負載。隨后,采用傳統的RTL設計方法,或者用DSP處理器配合其相關開發工具(取決于具體的工作負載),在相同的FPGA上實現相同的工作負載。這樣就能比較出采用不同工具與芯片組合實現的應用的結果質量與生產力。
評估工作負載
用于評估目的的兩個應用是BDTI Optical Flow Workload和BDTI DQPSK Receiver Workload。
“光流法”是指一種分析場景中對象運動和對象特性(如邊緣)的視頻處理算法。BDTI Optical Flow Workload操作720 p分辨率(1 280×
720逐行掃描)的輸入視頻序列并生成一系列雙維矩陣,確定序列中的水平及垂直運動。在設計工作負載時集成了動態數據依賴性決策和陣列索引,從而確保為工具提供嚴格的測試。
BDTI Optical Flow Workload涉及兩個操作點,每個操作點都使用相同的算法,但針對不同的標準優化。操作點1是固定工作負載,定義為60幀/s的720 p分辨率處理視頻。其目的就是最大限度地減少實現指定分辨率所需的資源利用率(資源利用率指的是實現工作負載所需資源占可用處理引擎資源的比例)。
與此同時,操作點2的目的則是用所有可用資源來最大限度地提高吞吐量(以每秒幀數為單位)。
第二個工作負載BDTI DQPSK Receiver Workload為無線通信接收器基帶應用,其中包含許多無線收發器中的傳統通信模塊。這是一種固定工作負載,只有一個操作點來處理輸入流,輸入流為復數調制數據,速率為18.75 MS/s,接收器鏈的時鐘速率為75 MHz。接收器可生成4.687 5 Mb/s的解調輸出比特流。該工作負載的目的是最大限度地減少實現指定吞吐量所需的FPGA資源的使用。
對不同工作負載而言,存儲器的使用與存儲器的帶寬要求差異較大。BDTI DSPSK Receiver Workload 只需使用最小的存儲器(因此無需外部存儲芯片),而 BDTI Optical Flow Workload則需要存儲4個視頻幀(每幀1 280×720像素)的歷史記錄,因此需要外部存儲芯片來配合Spartan-3A DSP FPGA。Optical Flow Workload操作點1需要單一外部存儲芯片與接口(帶寬約為每秒450 MB),而Optical Flow Workload操作點2通常需要兩個外部存儲芯片與接口,其帶寬之和約為1.4 Gb/s。
就BDTI Optical Flow Workload而言,在典型的FPGA實現中,操作點1每個時鐘循環處理一個像素,而操作點2每個時鐘循環處理2個像素。BDTI DQPSK Receiver Workload實現每4個時鐘循環處理1個輸入樣品。
度量指標和平臺介紹
此前,雖然用手寫RTL代碼在FPGA上實現的較高要求應用通常能實現更優異的質量(即性能和效率較高),但工作效率不高;而用DSP處理器實現的應用工作效率雖高,但結果質量差強人意。面向FPGA的高級綜合工具旨在提供二者相結合后的最佳水平,既提供較高質量,又實現較高效率。因此在評估中考慮了兩組度量指標:結果質量和可用性。
結果質量度量指標用于評估工作負載實現的性能和資源使用情況。BDTI Optical Flow Workload提供HLST-Xilinx流程和DSP處理器流程的結果質量度量指標。BDTI DQPSK Receiver Workload提供 HLST-
Xilinx流程以及賽靈思根據典型業界設計實踐采用手寫RTL設計的傳統FPGA實現方案的結果流程,其中包括在適當的時候使用賽靈思CORE GeneratorTM知識產權模塊。
可用性度量指標用于評估HLSTXilinx設計方案的工作效率和易用程度,并以實現BDTI Optical Flow Workload的情況為參考依據。這些度量指標將面向FPGA的HLST和賽靈思工具流相對于使用DSP處理器及其相關軟件開發工具鏈的工作效率和易用性進行比較。根據工具使用的9個方面量化評估可用性度量指標,其中包括直接體驗、易用性、工具功能完整性、整體設計方法的效率以及文檔與支持質量等。
就本次評估而言,目標FPGA為賽靈思Spartan-3A DSP 3400(XC3S-
D3400A);就BDTI Optical Flow Work-
load而言,賽靈思XtremeDSP Video Starter Kit—Spartan-3A DSP Edition為目標平臺。使用了賽靈思RTL工具,包括ISE和EDK工具套件(版本 10.1.03,lin64)以及高級綜合工具等。
本項目中的目標DSP處理器為德州儀器的TMS320DM6437。這款面向視頻的處理器采用600 MHz TMS320C64x+DSP內核以及視頻硬件加速器(硬件加速器不適用于 BDTI Optical Flow Workload,因此并未使用)。評估中采用了德州儀器的DM6437 Digital Video Development Environment作為目標平臺,并采用了德州儀器的Code Composer Studio工具套件(版本為 V3.3.82.13,Code Generation Tools版本為 6.1.9)。
實現與認證進程
將兩個工作負載的實現工作分配給兩個芯片,并根據使用的芯片和工具鏈來選擇采用賽靈思和BDTI不同的高級綜合工具廠商。HLST廠商使用其自有工具以及賽靈思的工具實現兩個工作負載,并將性能和資源使用結果提交給BDTI進行驗證與認證。利用認證的結果生成了本文的結果質量度量指標。
與此同時,工程師接受了HLST廠商的培訓,并分別用高級綜合工具和賽靈思工具獨立實現了BDTI Optical Flow Workload的某些部分。這一過程為BDTI提供了工具鏈易用性及其生成結果質量的第一手信息。此外還在DSP處理器上實現了BDTI Optical Flow Workload,而賽靈思則實現手寫RTL FPGA版的BDTI DQPSK Receiver Workload(隨后也經 BDTI驗證與認證)。
結果質量:性能和效率
如圖 1 所示,使用HLST的Spartan-3A DSP FPGA 在BDTI Optical Flow Workload視頻應用上以 720 p的分辨率獲得了195幀/s的成績,而同樣情況下C64x+DSP處理器的成績僅為5.1幀/s。前者的性能比后者高出約40倍。再分析一下芯片成本,圖2所示的是相應的性價比優勢,Spartan-3A DSP FPGA 上使用HLST的BDTI Optical Flow Workload(720p)性價比優于600 MHz TI C64x+架構的DSP,FPGA實現方案大約有30倍的優勢。顯然,配合高級綜合工具使用的FPGA能為某些類型的應用提供出色的價性比優勢(更多詳細結果請參見www.BDTI.com)。
此外還就BDTI DQPSK Receiver Workload對基于HLST的FPGA實現方案與采用手寫RTL實現相同工作負載的效率進行了評估。再次發現,HLST的表現非常出色。如表1所示,AutoPilot和PICO都能生成效率(即資源使用情況)相當于手寫RTL代碼的RTL代碼。HLST和手寫RTL的效率結果相當并非偶然。在評估工作開始時就為AutoESL和Synfora提供了手寫RTL實現方案的資源使用示意圖,這兩家公司可能用該圖作為其優化實現方案的目標(不過我們也應當注意,這種信息并非是高效使用高級綜合工具所必需的,而且HLST廠商并未獲得RTL設計方案)。
使用AutoESL和Synfora高級綜合工具的設計人員確認了資源使用情況的真實性。他們表示該工具所產生的結果優于通過手寫RTL代碼所能實現的結果,而且還減少了大量設計和驗證工作——這是一個巨大的成就。
易用性度量指標
易用性度量指標主要用于評估高級綜合工具流程相對于DSP處理器工具鏈的易用性。對每個易用性度量指標都相應給出優秀、很好、好、一般和差等評分。在打分時,要考慮完整項目的整體設計方法——先是C語言應用規范,最后是目標芯片(FPGA或DSP處理器)上的實時實現。易用性度量指標如表2所示。
通常,PICO和AutoPilot都便于安裝和使用,甚至無需FPGA設計經驗就能進行。與此形成對比的是,在安裝和使用賽靈思的RTL工具時遇到了很大困難,最終還是決定邀請經驗豐富的FPGA工程師協助設置運行在FPGA上的設計方案。例如,需要讓FPGA工程師解讀賽靈思RTL工具發出的錯誤消息,并將HLST生成的RTL模塊與I/O和存儲器模塊連接在一起,以生成可在FPGA上運行的完整設計方案??傮w而言,高級綜合工具之外發生的設計問題相當難以解決。如果HLST用戶沒有RTL設計和工具技能,那么在設計流程的這一階段就需要具有相關經驗的工程師予以幫助。
不過,即便考慮到與流程中 RTL-比特流部分相關的挑戰,從表2中仍能看出,HLST-Xilinx工具鏈仍能夠實現出色的易用性和生產力業績,且并不比DSP處理器流程所產生的業績差??傊绻薪涷炟S富的 FPGA 工程師幫助開展流程中的某些工作,則可發現在TI DSP處理器上實現BDTI Optical Flow Workload的工作量與采用兩種HLST在賽靈思FPGA上加以實現的工作量基本相同。
上述結論意義重大,可能會讓很多DSP軟件工程師感到驚訝。在比較可編程DSP處理器和FPGA的使用時,開發時間對許多系統設計人員來說都是一大障礙。BDTI的評估顯示,這種新方法在很大程度上為 BDTI Optical Flow Workload 等應用消除了時間障礙。
HLST:規則改變者
BDTI早先對FPGA和DSP處理器進行的基準測試(發表于2007年的“用FPGA完成DSP工作任務”報告中)顯示,用傳統RTL設計方法實現FPGA時,FPGA在某些應用中具有較大的性能和性價比優勢。新的分析結果確認了上述性能優勢,這表明FPGA配合使用高級綜合工具也可實現類似的性價比優勢。此外還發現,目前所評估的兩種高級綜合工具——Synfora的PICO和AutoESL的AutoPilot所實現的資源使用效率相當于通過手寫RTL代碼所實現的效率。盡管沒有直接評估HLST相對于手寫RTL代碼的時間節約優勢,但根據對目前HLST用戶的采訪結果可以相信時間方面的優勢也會相當顯著。
用傳統手寫RTL編碼創建的FPGA設計方案通常比DSP處理器上用軟件實現的同類應用花費更加多的工作量,這較好地解釋了很多DSP處理器用戶不愿意改變工作方法的原因。因此,本項目最令人驚訝的結果或許就在于,在FPGA上(用AutoPilot或PICO配合賽靈思工具)實現評估工作負載與使用DSP處理器所需的工作量基本相當。
對FPGA用戶而言,我們的研究充分說明HLST可在無顯著負面影響的情況下提升生產力。而對于DSP處理器用戶,FPGA顯而易見確實值得考慮,HLST正快速成為改變格局的重大技術。