QuickPlay迅速構(gòu)建基于 FPGA 的高效應(yīng)用_第1頁
QuickPlay迅速構(gòu)建基于 FPGA 的高效應(yīng)用_第2頁
QuickPlay迅速構(gòu)建基于 FPGA 的高效應(yīng)用_第3頁
QuickPlay迅速構(gòu)建基于 FPGA 的高效應(yīng)用_第4頁
QuickPlay迅速構(gòu)建基于 FPGA 的高效應(yīng)用_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

QuickPlay迅速構(gòu)建基于FPGA的高效應(yīng)用QuickPlay的高級工作流程讓軟件開發(fā)人員迅速構(gòu)建基于FPGA的高效應(yīng)用。隨著物聯(lián)網(wǎng)和大數(shù)據(jù)處理的崛起,人們對數(shù)據(jù)傳輸和處理的需求急劇增長,僅靠CPU再也不能滿足這一指數(shù)級增長需求。添加更多處理器和更多虛擬機來運行給定應(yīng)用并不能徹底解決這一問題,因為對給定應(yīng)用而言,能夠在多個CPU上并行處理的應(yīng)用有限。另一方面,現(xiàn)場可編程門陣列(FPGA)具有所需的I/O帶寬和處理能力,這一點無論是從純粹的處理角度考慮,還是從功耗的角度考慮都非常重要。FPGA對數(shù)據(jù)中心設(shè)備制造商而言,長期以來一直頗具吸引力。英特爾近期收購了第二大FPGA廠商,這一舉措是純CPU解決方案再也不能滿足應(yīng)用需求的又一力證。FPGA實現(xiàn)相當(dāng)復(fù)雜,這也是阻礙其廣泛采用的主要障礙。到目前為止,在基于FPGA的平臺上開發(fā)應(yīng)用的唯一途徑仍是采用一些最底層的硬件實現(xiàn)方案。這不僅讓軟件開發(fā)人員這一龐大的潛在客戶群無法使用FPGA器件,還讓傳統(tǒng)FPGA設(shè)計人員的日子越來越不好過。近期涌現(xiàn)的FPGA設(shè)計方法以高層次綜合(HLS)工具為中心,充分利用OpenCL?、C和C++等軟件編程語言的優(yōu)勢,為軟件開發(fā)人員提供了沙盒效應(yīng),在大量應(yīng)用中能從基于FPGA的硬件加速中大受裨益。但這些方法往往存在一個關(guān)鍵的不足,即無法讓軟件開發(fā)人員定義并配置最適合其應(yīng)用的硬件基礎(chǔ)架構(gòu)。業(yè)界一直都在追尋高級工作流程的圣杯,從而無需FPGA專業(yè)技術(shù)即可在基于FPGA的平臺上實現(xiàn)應(yīng)用。PLDA在過去五年中已經(jīng)開發(fā)出一種這樣的工作流程。稱作QuickPlay的工作流程能夠高效解決實現(xiàn)復(fù)雜性問題,為FPGA開發(fā)提供多種使用模式。但其價值的核心源頭之一是它讓軟件開發(fā)人員將原本用于CPU的應(yīng)用部分或全部地實現(xiàn)在FPGA硬件上的方式。QuickPlay能夠全面發(fā)揮FPGA資源的作用,將這些功能強大而復(fù)雜的器件轉(zhuǎn)化為軟件定義平臺,無需艱苦的硬件設(shè)計即能獲得FPGA帶來的優(yōu)勢。試想一種可以細(xì)分為兩項功能的軟件算法:其中一項功能用于數(shù)據(jù)處理,然后另一項功能用于數(shù)據(jù)的進(jìn)一步處理。從軟件角度看,這種實現(xiàn)方案相當(dāng)簡單,就是先調(diào)用Function1(),接著再單獨調(diào)用Function2(),使用指針來定位待處理數(shù)據(jù)的位置。如果沒有合適的硬件抽象工具流程輔助,在基于FPGA的硬件平臺上實現(xiàn)這種算法需要軟件開發(fā)人員處理圖1所示的硬件設(shè)計(其中內(nèi)核1和內(nèi)核2分別是Function1和Function2的硬件實現(xiàn))。該硬件設(shè)計需要包含兩個元素:控制層面和數(shù)據(jù)層面??刂茖用嫫鹬鴪?zhí)行引擎的作用,用于生成時鐘與復(fù)位、管理系統(tǒng)啟動、編排數(shù)據(jù)層面運行以及執(zhí)行所有維護(hù)功能。數(shù)據(jù)層面例化并連接處理元件元、內(nèi)核1和內(nèi)核2以及用于讀入數(shù)據(jù)和寫出處理后數(shù)據(jù)所需的必備I/O接口。雖然不同的應(yīng)用會要求使用不同的I/O接口,不過在我們的實例中使用的是以太網(wǎng)和PCIExpress(PCIe)這些接口,如圖1所示。

圖1—使用傳統(tǒng)FPGA工具實現(xiàn)兩功能算法的詳細(xì)硬件實現(xiàn)無需硬件專業(yè)知識,軟件開發(fā)人員使用編譯軟件功能Function1()和Function2()(一般用C或C++語言編寫)的HLS工具就可以輕松地生成內(nèi)核1和內(nèi)核2到采用VHDL或Verilog等的FPGA硬件描述中。但是設(shè)計中每一個從性質(zhì)上不屬于算法的其他元素(接口、控制、時鐘及復(fù)位)都不能用HLS工具生成,硬件設(shè)計人員必須將它們設(shè)計為自定義硬件描述語言功能或IP。獲得這些元素并將它們連接起來構(gòu)成了另一個難題,因為部分元素可能并非是現(xiàn)成的,或是具有不同的接口(類型和大?。?、時鐘要求以及專門的啟動順序等。QuickPlay能夠充分利用FPGA資源,將這些功能強大而復(fù)雜的器件轉(zhuǎn)化為軟件定義平臺,無需艱苦的硬件設(shè)計即能獲得由FPGA帶來的優(yōu)勢。除了設(shè)計工作,同樣具有難度的是實現(xiàn)工作。這包括將設(shè)計映射到選定FPGA平臺上的資源、生成適當(dāng)?shù)募s束以及確認(rèn)在FPGA硬件上完成邏輯綜合與實現(xiàn)后滿足這些約束要求。在新的FPGA硬件上實現(xiàn)有效設(shè)計也需要耗費一名經(jīng)驗豐富的硬件設(shè)計人員數(shù)星期的時間。因此,任何旨在使用自定義硬件幫助軟件開發(fā)人員來增強其應(yīng)用的工具必須能夠:

從純軟件代碼中創(chuàng)建功能硬件;

根據(jù)需要采用現(xiàn)有的硬件IP模塊;

調(diào)用并創(chuàng)建所有的支持硬件(接口、控制、時鐘等);

支持使用現(xiàn)成商用開發(fā)板以及自定義平臺;

確保生成的硬件能自動建構(gòu)校正,這樣無需進(jìn)硬件調(diào)試;

且支持僅使用標(biāo)準(zhǔn)軟件調(diào)試工具即可調(diào)試功能模塊。PLDA重新設(shè)計QuickPlay以滿足所有各項要求,讓純軟件開發(fā)人員以極小工作量就能指定、構(gòu)建和集成FPGA到自己的軟件架構(gòu)中。以軟件為中心的方法

使用QuickPlay實現(xiàn)整個設(shè)計流程相當(dāng)簡單直觀:

1.開發(fā)硬件引擎的C/C++語言功能模型。

2.使用標(biāo)準(zhǔn)的C/C++語言調(diào)試工具來驗證功能模型。

3.指定目標(biāo)FPGA平臺和I/O接口(PCIe、以太網(wǎng)、DDR、QDR等)。

4.編譯并構(gòu)建硬件引擎。該流程看似簡單,但如果要無縫地工作,關(guān)鍵在于保證生成的硬件引擎在功能上與初始軟件模型完全相同。換言之,功能模型必須具有確定性,這樣無論硬件實現(xiàn)方案的運行速度有多快,軟硬件執(zhí)行的結(jié)果都是完全一致的。但令人遺憾的是大多數(shù)并行系統(tǒng)都屬于非確定性執(zhí)行。例如多線程軟件執(zhí)行取決于CPU、操作系統(tǒng)以及運行在同一主機上的無關(guān)進(jìn)程。多次運行相同的多線程程序可能會得到不同的行為。硬件中這樣的非確定性將會是一場災(zāi)難,因為這樣會要求在電氣波形層面調(diào)試硬件引擎本身,從而妨礙工具為軟件開發(fā)人員抽象硬件的目的。QuickPlay使用直觀的數(shù)據(jù)流模型,能從數(shù)學(xué)角度保證可確定性執(zhí)行,與執(zhí)行引擎無關(guān)。該模型由稱之為內(nèi)核的并行功能組成,負(fù)責(zé)與流通道進(jìn)行通信。因此它與軟件開發(fā)人員在白板上勾勒應(yīng)用草圖關(guān)聯(lián)緊密。為確保行為的確定性,這些內(nèi)核必須彼此進(jìn)行通信,以防發(fā)生競態(tài)條件和死鎖等數(shù)據(jù)沖突。實現(xiàn)這一要求的方法是使用具備下列特點的流通道:(1)基于FIFO,(2)阻塞式讀取和阻塞式寫入,以及(3)點對點。這些就是PLDA據(jù)以構(gòu)建QuickPlay的計算模型——卡恩進(jìn)程網(wǎng)絡(luò)(KPN)的特點。圖2的QuickPlay設(shè)計實例描述了KPN模型。

圖2—QuickPlay中的設(shè)計實例任何內(nèi)核的內(nèi)容都可以是任意C/C++語言代碼、第三方IP,甚至是HDL代碼(對硬件設(shè)計人員而言)。QuickPlay采用相當(dāng)簡單直觀的設(shè)計流程(圖3)。

圖3—QuickPlay采用簡單直觀的設(shè)計流。當(dāng)您完成軟件調(diào)試階段,并且糾正了所有的功能問題,就無需在硬件層面上進(jìn)一步開展調(diào)試。下面詳細(xì)介紹QuickPlay設(shè)計流程的每一個步驟。步驟1:純軟件設(shè)計。在這個階段,您可以用C語言添加并連接處理內(nèi)核,創(chuàng)建自己的FPGA設(shè)計,然后使用自己的主機軟件來指定通信通道。QuickPlay基于Eclipse的集成開發(fā)環(huán)境(IDE)通過簡單的API提供C/C++語言庫,用于創(chuàng)建內(nèi)核、流、流端口和存儲器端口,以及從流端口和存儲器端口讀取/寫入。此外,QuickPlayIDE還提供直觀的圖形編輯器,便于您拖放內(nèi)核與其他設(shè)計元素并繪制流。步驟2:功能驗證。這一步的重點是確保步驟1編寫的軟件模型能正確工作。實現(xiàn)的方法是先在桌面上編譯軟件模型,然后使用測試程序發(fā)送數(shù)據(jù)到輸入以執(zhí)行軟件模型,最后驗證輸出的正確性。并行執(zhí)行FPGA設(shè)計的軟件模型,為每個內(nèi)核提供獨立的線程,以模擬實際硬件實現(xiàn)的并行性。然后您可以使用標(biāo)準(zhǔn)軟件調(diào)試方法和工具,如斷點、檢測點、分步執(zhí)行以及格式化輸出函數(shù)來調(diào)試軟件模型。(在實現(xiàn)到硬件中之后您可能還想運行更多測試。我們將對此做簡要描述。)從設(shè)計流程來看,這是您完成全部驗證工作的步驟。一旦您完成這個調(diào)試步驟,您完成這個調(diào)試步驟,并且糾正了所有的功能問題,您就無需在硬件層面上進(jìn)一步開展調(diào)試。需要提醒的是:功能模型完全不涉及任何硬件基礎(chǔ)架構(gòu)元素。上述實例的重點是簡單的兩功能模型。圖1中添加的系統(tǒng)構(gòu)成(如通信組件、控制層面、時鐘及復(fù)位)在這個建模和驗證階段完全不涉及。步驟3:硬件生成。這一步用于從用戶的軟件模型生成FPGA硬件。它涉及三個簡單的操作:

1.在QuickPlayGUI的下拉菜單中選擇您想要實現(xiàn)到自己的設(shè)計中的FPGA硬件。QuickPlay能夠使用品種不斷豐富的現(xiàn)成開發(fā)板來實現(xiàn)設(shè)計。這些開發(fā)板采用先進(jìn)的賽靈思AllProgrammableFPGA、PCIe3.0、10Gb以太網(wǎng)、DDR3SDRAM、QDR2+SRAM等。2.選擇需要映射到設(shè)計輸入及輸出端口的物理接口(以及協(xié)議)。這些通過菜單都能方便選擇。具體選擇取決于用戶選定的FPGA板件上提供的接口,例如PCIe、10Gb以太網(wǎng)TCP/IP和10Gb以太網(wǎng)UDP。選擇通信協(xié)議即自動調(diào)用實現(xiàn)連接所需的硬件IP模塊以及其上分層的任何軟件協(xié)議棧,從而完成整個系統(tǒng)的創(chuàng)建。3.啟動構(gòu)建流程這個過程包括運行HLS引擎(從C語言代碼創(chuàng)建硬件),創(chuàng)建所需的系統(tǒng)硬件功能(我們原始實例中的控制層邏輯)和運行構(gòu)建板件要求的硬件鏡像所需的其他工具(例如賽靈思Vivado?集成設(shè)計環(huán)境)。完成這個過程無需手動干預(yù)。步驟4:系統(tǒng)執(zhí)行。這個步驟與步驟2中的功能模型執(zhí)行(功能驗證)相似,除了現(xiàn)在雖然主機應(yīng)用仍然運行在軟件中,但FPGA設(shè)計運行在選定的FPGA板件上。這意味著您可以從FPGA板件輸入輸出真實數(shù)據(jù),從而進(jìn)一步驗證其功能的完整性。由于這樣可以顯著加快運行速度,而且因為您可以使用實時數(shù)據(jù)資源,您在這個階段與在功能驗證階段相比可以運行數(shù)量多得多的測試。步驟5:系統(tǒng)調(diào)試。因為與功能驗證階段相比現(xiàn)在您可以運行數(shù)量多得多的測試,您可以發(fā)現(xiàn)在步驟2中未能發(fā)現(xiàn)的功能缺陷。那么您現(xiàn)在該如何調(diào)試呢?如前文所述,您永遠(yuǎn)不必在硬件層面進(jìn)行調(diào)試,即便缺陷是在在硬件中運行功能后發(fā)現(xiàn)的。由于QuickPlay保證軟件模型和硬件實現(xiàn)之間的功能等效性,因此任何硬件版本中發(fā)生的缺陷也必然存在于軟件版本中。這就是您無需在硬件中進(jìn)行調(diào)試的原因;您只需要在軟件域中調(diào)試就足夠了。作為由QuickPlay提供的抽象結(jié)果,算法保持純粹性,著重處理數(shù)據(jù)操作,獨立于底層通信細(xì)節(jié)。只要您發(fā)現(xiàn)測試序列在硬件中失敗,QuickPlay就能采集在設(shè)計輸入端造成錯誤操作的事件序列,然后在軟件環(huán)境中將其回放,以便您使用Eclipse調(diào)試器進(jìn)行調(diào)試,從而找出缺陷的源頭。由于QuickPlay能自動為基礎(chǔ)架構(gòu)配置硬件,以便觀察設(shè)計中的所有關(guān)鍵點,因此這樣做的是可行的。您還可以禁用該基礎(chǔ)架構(gòu)以釋放寶貴的硬件資源。圖4所示即為添加了調(diào)試電路的實例系統(tǒng)。如果沒有QuickPlay,就必須插入某種調(diào)試基礎(chǔ)架構(gòu)并進(jìn)行手動管理。而在使用QuickPlay的情況下,這一切對軟件開發(fā)人員來說都是自動化和透明化的。

圖4—自動創(chuàng)建調(diào)試基礎(chǔ)架構(gòu)整個流程就是先在軟件中建模,然后在硬件中構(gòu)建并測試系統(tǒng)。如果存在缺陷,將失敗的測試序列導(dǎo)回軟件環(huán)境中,在軟件環(huán)境中調(diào)試,修改源代碼,然后重復(fù)這一過程。與傳統(tǒng)流程相比這能顯著提高生產(chǎn)力。步驟6(可選):系統(tǒng)優(yōu)化。在您完成調(diào)試階段后,就會擁有一個能夠在FPGA開發(fā)板上正確運行的功能設(shè)計。不過您可能想要進(jìn)行一些性能優(yōu)化,而且這也是性能優(yōu)化的合適時間,因為您已經(jīng)知道自己的系統(tǒng)能正確運行。首先應(yīng)該考慮的優(yōu)化是優(yōu)化功能模型。有可能存在更多并行的機會。例如您可以嘗試使用不同的辦法來分解或重構(gòu)各項功能。在這個層面優(yōu)化可以帶來顯著的性能提升。勿庸置疑,使用VHDL或Verilog設(shè)計來開展優(yōu)化工作需要占用大量的時間,而在C語言中進(jìn)行調(diào)整則非常迅速與簡捷。其次您可以嘗試使用其他速度更快的FPGA開發(fā)板。因為從功能模型映射到開發(fā)板十分容易,嘗試各種不同開發(fā)板并從中選優(yōu)是件簡單的事情。第三項需要優(yōu)化的對象是QuickPlay使用高級綜合創(chuàng)建的硬件內(nèi)核。雖然得到的硬件能保證正確高效地運行,不過其運行效率未必有硬件工程人員手動編制的硬件高。在這個階段您有多種選擇:您可以優(yōu)化代碼和HLS設(shè)置來改善生成的硬件;可以使用VivadoHLS來生成更高效的硬件;或是讓硬件工程人員手動編制HDL中最關(guān)鍵的模塊。這些優(yōu)化步驟并非是強制要求,不過在可用的硬件資源有限、而您又需要提升硬件性能時不妨一試。硬件工程師可可協(xié)助開展這些優(yōu)化工作。當(dāng)您完成任何此類調(diào)整后,只需重復(fù)構(gòu)建流程。通用流通道

QuickPlay提供的通用流API完全抽象并獨立于底層物理通信協(xié)議。流數(shù)據(jù)通過ReadStream()函數(shù)接收,使用WriteStream()函數(shù)。這些函數(shù)可用于在內(nèi)核之間、向嵌入式或板級存儲器、向嵌入式或外部主機CPU發(fā)送與接收數(shù)據(jù),從而無需開發(fā)人員理解或管理底層低級協(xié)議即可提供開發(fā)板架構(gòu)靈活性。選擇的協(xié)議決定了通過什么硬件接收與發(fā)送數(shù)據(jù)。目前QuickPlay支持ARM?AMBA?AXI4-Stream、DDR3、PCIe(具備DMA功能)以及TCP/IP;更多協(xié)議正在添加中,也可根據(jù)需求添加協(xié)議。選擇所需的協(xié)議不僅是設(shè)置實現(xiàn)協(xié)議所需的硬件,也是支持較高級協(xié)議層所需的軟件協(xié)議棧,如圖5所示。

圖5—選擇所需的協(xié)議對所要求的硬件與軟件棧進(jìn)行設(shè)置。QuickPlay負(fù)責(zé)管理這些讀寫的具體實現(xiàn)(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論