FPGA允許硬件設(shè)計(jì)工程師利用單芯片上的處理器、解碼邏輯、外設(shè)和協(xié)處理器實(shí)現(xiàn)一個(gè)完整的計(jì)算系統(tǒng)。FPGA可以包含數(shù)千到數(shù)十萬的邏輯單元,可以從這些邏輯單元實(shí)現(xiàn)一個(gè)處理器,如Xilinx PicoBlaze或MicroBlaze處理器,或者可以是一個(gè)或者更多的硬邏輯單元(如Virtex-4 FX PowerPC)。大量的邏輯單元使你可以實(shí)現(xiàn)數(shù)據(jù)處理單元,這些單元與處理器系統(tǒng)一起工作,由處理器對(duì)其進(jìn)行控制或監(jiān)控。
FPGA作為一種可重復(fù)編程的單元,允許你在設(shè)計(jì)過程中進(jìn)行編程并對(duì)其進(jìn)行測(cè)試。如果你發(fā)現(xiàn)了一個(gè)設(shè)計(jì)缺陷,你可以立即對(duì)其進(jìn)行重新編程設(shè)計(jì)。FPGA還允許你實(shí)現(xiàn)硬件運(yùn)算功能,而這在以前的實(shí)現(xiàn)成本是很高的。CPU流水線與FPGA邏輯之間緊密結(jié)合,這樣就可以創(chuàng)建高性能軟件加速器。
圖1的模塊框圖顯示了PowerPC、集成的APU控制器以及一個(gè)與之相連的協(xié)處理器。來自高速緩存或存儲(chǔ)器中的指令可以立即出現(xiàn)在CPU解碼器和APU控制器上,如果CPU能識(shí)別指令,則運(yùn)行這些指令。否則,APU控制器或用戶創(chuàng)建的協(xié)處理器可以對(duì)指令做出應(yīng)答并執(zhí)行指令。一個(gè)或者兩個(gè)操作數(shù)被傳遞到協(xié)處理器,并返回一個(gè)結(jié)果或狀態(tài)。APU接口還支持用一個(gè)指令發(fā)送一個(gè)數(shù)據(jù)單元。數(shù)據(jù)單元的大小范圍從一個(gè)字節(jié)到4個(gè)32位的字。

圖1:PowerPC、集成的APU控制器和協(xié)處理器
通過一個(gè)結(jié)構(gòu)協(xié)處理器總線(FCB),可以將一個(gè)或多個(gè)協(xié)處理器連接到APU接口。連接到總線的協(xié)處理器范圍包括現(xiàn)存的內(nèi)核(例如FPU)到用戶創(chuàng)建的協(xié)處理器。一個(gè)協(xié)處理器可以連接到FCB用于控制和狀態(tài)運(yùn)算,并連接到一個(gè)處理器總線,實(shí)現(xiàn)直接存儲(chǔ)器數(shù)據(jù)塊訪問以及DMA數(shù)據(jù)傳遞。一種簡(jiǎn)化的連接方案,例如FSL,也可以在FCB和協(xié)處理器之間使用,在犧牲一定性能的條件下實(shí)現(xiàn)FIFO數(shù)據(jù)和控制通信。
為展示指令流水線連接加速器的性能優(yōu)勢(shì),我們采用一個(gè)處理器總線連接FPU首先實(shí)現(xiàn)了一個(gè)設(shè)計(jì),然后采用APU/FCB連接的FPU實(shí)現(xiàn)設(shè)計(jì)。表1總結(jié)了兩種實(shí)現(xiàn)方式下有限脈沖響應(yīng)(FIR)濾波器的性能。如表1中所反映的一樣,連接到一個(gè)指令流水線的FPU使軟件浮點(diǎn)運(yùn)算速度增加30倍,而APU接口相比于總線連接FPU來說改善了近4倍。

C代碼轉(zhuǎn)換到HDL
采用C到HDL的轉(zhuǎn)換工具將C代碼轉(zhuǎn)換到HDL加速器是一種創(chuàng)建硬件協(xié)處理器的高效方法。圖2所示以及下面詳述的步驟總結(jié)了C到HDL轉(zhuǎn)換的過程:

圖2:C-HDL設(shè)計(jì)流程
1. 使用標(biāo)準(zhǔn)C工具實(shí)現(xiàn)應(yīng)用程序或算法。開發(fā)一種軟件測(cè)試向量(test bench)用于基線性能和正確性(主機(jī)或臺(tái)式電腦仿真)測(cè)試。使用一種編譯器(例如gprof)來開始確定關(guān)鍵的函數(shù)。
2. 確定是否浮點(diǎn)到定點(diǎn)轉(zhuǎn)換適當(dāng)。使用庫(kù)或宏來輔助這種轉(zhuǎn)換,使用一個(gè)基線測(cè)試向量來分析性能和準(zhǔn)確性。使用編譯器來重新評(píng)估關(guān)鍵函數(shù)。
3. 使用C到HDL轉(zhuǎn)換工具(如Impulse C),在每個(gè)關(guān)鍵功能上重復(fù),以實(shí)現(xiàn):將算法分割成并行的進(jìn)程;創(chuàng)建硬件/軟件進(jìn)程接口(流、共享存儲(chǔ)器、信號(hào));對(duì)關(guān)鍵的代碼段(例如內(nèi)部代碼循環(huán))進(jìn)行自動(dòng)優(yōu)化和并行化;使用桌面電腦仿真、周期準(zhǔn)確的C仿真以及實(shí)際的在系統(tǒng)測(cè)試對(duì)得到的并行算法進(jìn)行測(cè)試和驗(yàn)證。
4. 使用C到HDL轉(zhuǎn)換工具將關(guān)鍵的代碼段轉(zhuǎn)換到HDL協(xié)處理器。
5. 將協(xié)處理器連接到APU接口用于最終的測(cè)試。
評(píng)論