近年來,高級綜合工具已成為在設計方案中使用或希望使用FPGA的工程師的必殺技。這種工具以應用的高級表示法(比如用C語言或MATLAB的M語言編寫的表示法)為輸入,并生成面向FPGA的硬件實現的寄存器傳輸級HDL描述。
高級綜合工具 (HLST) 對兩種類型的潛在用戶非常有用,一是正在實現高強度數字信號處理 (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年初,我們發布了首次評估測試計劃的結果,其中的一些結果讓許多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操作720p分辨率(1,280 x720逐行掃描)的輸入視頻序列并生成一系列雙維矩陣,確定序列中的水平及垂直運動。在設計工作負載時,我們集成了動態數據依賴性決策和陣列索引,從而確保為工具提供嚴格的測試。
BDTI Optical Flow Workload涉及兩個操作點,每個操作點都使用相同的算法,但針對不同的標準優化。操作點1是固定工作負載,定義為每秒60幀的720p分辨率處理視頻。操作點1的目的就是最大限度的減少實現指定分辨率所需的資源利用率(資源利用率指的是實現工作負載所需資源占可用處理引擎資源的比例)。
與此同時,操作點2的目的則是用所有可用資源來最大限度地提高吞吐量(以每秒幀數為單位)。
第二個工作負載BDTI DQPSK Receiver Workload為無線通信接收器基帶應用,其中包含許多無線收發器中的傳統通信模塊。這是一種固定工作負載,只有一個單一操作點來處理輸入流,輸入流為復數調制數據,速率為每秒1875萬次采樣,接收器鏈的時鐘速率為75 MHz。接收器可生成每秒4.6875 M比特的解調輸出比特流。該工作負載的目的是最大限度地減少實現指定吞吐量所需的FPGA資源的使用。
對不同工作負載而言,存儲器的使用與存儲器的帶寬要求差異較大。BDTI DSPSK Receiver Workload只需使用最小的存儲器(因此無需外部存儲芯片),而BDTI Optical Flow Workload則需要存儲四個視頻幀(每幀1,280 x720像素)的歷史記錄,因此需要外部存儲芯片來配合Spartan-3A DSP FPGA。Optical Flow Workload操作點1需要單一外部存儲芯片與接口(帶寬約為每秒450 MB),而Optical Flow Workload操作點2通常需要兩個外部存儲芯片與接口,其帶寬之和約為每秒1.4GB。
就BDTI Optical Flow Workload而言,在典型的FPGA實現中,操作點1每個時鐘循環處理一個像素,而操作點2每個時鐘循環則處理兩個像素。BDTI DQPSK Receiver Workload實現每四個時鐘循環處理一個輸入樣品。
度量指標和平臺介紹
此前,雖然用手寫RTL代碼在FPGA上實現的較高要求應用通常能實現更優異的質量(即性能和效率較
高),但工作效率不高;而用DSP處理器實現的應用工作效率雖高,但結果質量差強人意。面向FPGA的高級綜合工具旨在提供二者相結合后的最佳水平,既提供較高質量,又實現較高效率。因此,我們在評估中考慮了兩組度量指標:結果質量和可用性。
結果質量度量指標用于評估工作負載實現的性能和資源使用情況。BDTI Optical Flow Workload提供HLSTXilinx流程和DSP處理器流程的結果質量度量指標。BDTI DQPSK Receiver Workload提供HLST-Xilinx流程以及賽靈思根據典型業界設計實踐采用手寫RTL設計的傳統FPGA實現方案的結果流程,其中包括在適當的時候使用賽靈思CORE GeneratorTM知識產權模塊。
可用性度量指標用于評估
HLSTXilinx設計方案的工作效率和易用程度,并以我們實現BDTI Optical Flow Workload 的情況為參考依據。這些度
量指標將面向FPGA的HLST和賽靈思工具流相對于使用DSP處理器及其相關軟件開發工具鏈的工作效率和易用性進行比較。我們根據工具使用的九個方面量化評估可用性度量指標,其中包括直接體驗、易用性、工具功能完整性、整體設計方法的效率以及文檔與支持質量等。
就本次評估而言, 目標FPGA為賽靈思Spar tan-3A DSP 3400(XC3SD3400A);就BDTI Optical F l o w Wo r k l o a d而言, 賽靈思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所示,用高級綜合工具為BDTI Optical Flow Workload創建的FPGA實現方案的性能比 DSP處理器實現方案高出約40倍。我們再分析一下芯片成本,圖2所示的是相應的性價比優勢,FPGA實現方案大約有30倍的優勢。顯然,配合高級綜合工具使用的FPGA能為某些類型的應用提供出色的性價比優勢(更多詳細結果請參見 。)
?
?
圖 1——使用HLST的Spartan-3A DSP FPGA在BDTI Optical Flow Workload視頻應用上以720p的分辨率獲
得了每秒195幀的成績,而同樣情況下C64x+ DSP處理器的成績僅為5.1幀每秒。
?
?
圖 2——Spartan-3A DSP FPGA上使用HLST的BDTI Optical Flow Workload (720p) 性價比優于600-MHz TI
C64x+架構的DSP。
我們還就BDTI DQPSK Receiver Workload對基于HLST的FPGA實現方案與采用手寫RTL實現相同工作負載的效率進行了評估。我們再次發現,HLST的表現非常出色。如表1所示,AutoPilot和PICO都能生成效率(即資源使用情況)相當于手寫RTL代碼的RTL代碼。HLST和手寫RTL的效率結果相當并非偶然;我們在評估工作開始時就為AutoESL和Synfora提供了手寫RTL實現方案的資源使用示意圖,這兩家公司可能用該圖作為其優化實現方案的目標(不過我們也應當注意,這種信息并非是高效使用高級綜合工具所必需的,而且HLST廠商并未獲得RTL設計方案)。
我們還采訪了使用 AutoESL 和
Synfora 高級綜合工具的設計人員,他
們確認了資源使用情況的真實性。事實
評論
查看更多