基于FPGA協(xié)處理器的算法加速的實現(xiàn)
當今的設(shè)計工程師受到面積、功率和成本的約束,不能采用GHz級的計算機實現(xiàn)嵌入式設(shè)計。在嵌入式系統(tǒng)中,通常是由相對數(shù)量較少的算法決定最大的運算需求。使用設(shè)計自動化工具可以將這些算法快速轉(zhuǎn)換到硬件協(xié)處理器中。然后,協(xié)處理器可以有效地連接到處理器,產(chǎn)生“GHz”級的性能。
本文引用地址:http://www.ex-cimer.com/article/189618.htm本文主要研究了代碼加速和代碼轉(zhuǎn)換到硬件協(xié)處理器的方法。我們還分析了通過一個涉及到基于輔助處理器單元(APU)的實際圖像顯示案例的基準數(shù)據(jù)均衡決策的過程。該設(shè)計使用了在一個平臺FPGA中實現(xiàn)的一個嵌入式PowerPC。
協(xié)處理器的意義
協(xié)處理器是一個處理單元,該處理單元與一個主處理單元一起使用來承擔通常由主處理單元執(zhí)行的運算。通常,協(xié)處理器功能在硬件中實現(xiàn)以替代幾種軟件指令。通過減少多種代碼指令為單一指令,以及在硬件中直接實現(xiàn)指令的方式,從而實現(xiàn)代碼加速。
最常用的協(xié)處理器是浮點單元(FPU),這是與CPU緊密結(jié)合的唯一普通協(xié)處理器。沒有通用的協(xié)處理器庫,即使是存在這樣的庫,將依然難以簡單地將協(xié)處理器與一個CPU(例如Pentium 4)連接。Xilinx Virtex-4 FX FPGA擁有一個或兩個PowerPC,每個都有一個APU接口。通過在FPGA中嵌入一個處理器,現(xiàn)在就有機會在單芯片上實現(xiàn)完整的處理系統(tǒng)。
帶APU接口的PowerPC使得在FPGA中得以實現(xiàn)一個緊密結(jié)合的協(xié)處理器。因為頻率的需求以及管腳數(shù)量的限制,采用外部協(xié)處理器不大可行。因此可以創(chuàng)建一個直接連接到PowerPC的專用應(yīng)用協(xié)處理器,大大地提高了軟件速度。因為FPGA是可編程的,你可以快速地開發(fā)和測試連接到CPU的協(xié)處理器解決方案。
協(xié)處理器連接模型
協(xié)處理器有三種基本的形式:與CPU總線連接的、與I/O連接的和指令流水線連接(Instruction Pipeline Connection)。此外,還存在一些這些形式的混合形式。
1. CPU總線連接
處理器總線連接加速器需要CPU在總線上移動數(shù)據(jù)以及發(fā)送命令。通常,單個數(shù)據(jù)處理就需要很多的處理器時鐘周期。因為總線仲裁以及總線驅(qū)動的時鐘是處理器時鐘的分頻,所以會降低數(shù)據(jù)處理速度。一個與總線連接的加速器可以包含一個存儲器存取(DMA)引擎。在增加額外的邏輯情況下,DMA引擎允許協(xié)處理器工作在位于連接到總線的存儲器上的數(shù)據(jù)塊,獨立于CPU。
2. I/O連接
與I/O連接的加速器直接連接到一個專用的I/O端口。通常通過GET或PUT函數(shù)提供數(shù)據(jù)和控制。因為缺少了仲裁、控制復雜度降低以及連接器件較少,因此這些接口的驅(qū)動時鐘通常比處理器總線更快。這種接口的一個較好的例子如Xilinx Fast Simplex Link(FSL)。FSL是一種簡單的FIFO接口,可以連接到Xilinx MicroBlaze軟核處理器或Virtex-4 FX PowerPC。與處理器總線接口中的數(shù)據(jù)移動相比,通過FSL移動的數(shù)據(jù)具有較低的延時和更高的數(shù)據(jù)速率。
3. 指令流水線連接
指令流水線連接加速器直接連接到CPU的計算內(nèi)核。通過與指令流水線連接,CPU不能識別的指令可以由協(xié)處理器執(zhí)行。操作數(shù)、結(jié)果以及狀態(tài)直接從數(shù)據(jù)執(zhí)行流水線向外傳遞,或接收。單個運算可以實現(xiàn)兩個操作數(shù)的處理,同時返回一個結(jié)果和狀態(tài)。
作為一個直接連接的接口,連接道指令流水線的加速器可以用比處理器總線更快的時鐘驅(qū)動。Xilinx通過APU接口實現(xiàn)這種協(xié)處理器連接模型,對于典型的雙操作數(shù)指令,在數(shù)據(jù)控制和數(shù)據(jù)傳輸上可以縮減10倍的時鐘周期。APU控制器還連接到數(shù)據(jù)緩存控制器,通過它可以執(zhí)行數(shù)據(jù)加載/存儲操作。因此,APU接口能在每秒內(nèi)移動數(shù)百兆字節(jié),接近DMA速度。
I/O連接加速器或指令流水線連接加速器可以與總線連接加速器結(jié)合起來。在增加額外的邏輯條件下,可以創(chuàng)建一個加速器,這個加速器運行在一個位于總線連接存儲器上的數(shù)據(jù)塊上,通過一個快速、低延時的接口接收命令并返回狀態(tài)。
在本文中介紹的C-HDL工具組可以實現(xiàn)總線連接和I/O連接加速器,它還能實現(xiàn)連接到PowerPC的APU接口的加速器。盡管APU連接是基于指令流水線的,C-HDL工具組實現(xiàn)了一種I/O流水線接口,該接口具有I/O連接加速器的典型性能。
FPGA/PowerPC/APU接口
FPGA允許硬件設(shè)計工程師利用單芯片上的處理器、解碼邏輯、外設(shè)和協(xié)處理器實現(xiàn)一個完整的計算系統(tǒng)。FPGA可以包含數(shù)千到數(shù)十萬的邏輯單元,可以從這些邏輯單元實現(xiàn)一個處理器,如Xilinx PicoBlaze或MicroBlaze處理器,或者可以是一個或者更多的硬邏輯單元(如Virtex-4 FX PowerPC)。大量的邏輯單元使你可以實現(xiàn)數(shù)據(jù)處理單元,這些單元與處理器系統(tǒng)一起工作,由處理器對其進行控制或監(jiān)控。
FPGA作為一種可重復編程的單元,允許你在設(shè)計過程中進行編程并對其進行測試。如果你發(fā)現(xiàn)了一個設(shè)計缺陷,你可以立即對其進行重新編程設(shè)計。FPGA還允許你實現(xiàn)硬件運算功能,而這在以前的實現(xiàn)成本是很高的。CPU流水線與FPGA邏輯之間緊密結(jié)合,這樣就可以創(chuàng)建高性能軟件加速器。
圖1的模塊框圖顯示了PowerPC、集成的APU控制器以及一個與之相連的協(xié)處理器。來自高速緩存或存儲器中的指令可以立即出現(xiàn)在CPU解碼器和APU控制器上,如果CPU能識別指令,則運行這些指令。否則,APU控制器或用戶創(chuàng)建的協(xié)處理器可以對指令做出應(yīng)答并執(zhí)行指令。一個或者兩個操作數(shù)被傳遞到協(xié)處理器,并返回一個結(jié)果或狀態(tài)。APU接口還支持用一個指令發(fā)送一個數(shù)據(jù)單元。數(shù)據(jù)單元的大小范圍從一個字節(jié)到4個32位的字。
圖1:PowerPC、集成的APU控制器和協(xié)處理器
通過一個結(jié)構(gòu)協(xié)處理器總線(FCB),可以將一個或多個協(xié)處理器連接到APU接口。連接到總線的協(xié)處理器范圍包括現(xiàn)存的內(nèi)核(例如FPU)到用戶創(chuàng)建的協(xié)處理器。一個協(xié)處理器可以連接到FCB用于控制和狀態(tài)運算,并連接到一個處理器總線,實現(xiàn)直接存儲器數(shù)據(jù)塊訪問以及DMA數(shù)據(jù)傳遞。一種簡化的連接方案,例如FSL,也可以在FCB和協(xié)處理器之間使用,在犧牲一定性能的條件下實現(xiàn)FIFO數(shù)據(jù)和控制通信。
為展示指令流水線連接加速器的性能優(yōu)勢,我們采用一個處理器總線連接FPU首先實現(xiàn)了一個設(shè)計,然后采用APU/FCB連接的FPU實現(xiàn)設(shè)計。表1總結(jié)了兩種實現(xiàn)方式下有限脈沖響應(yīng)(FIR)濾波器的性能。如表1中所反映的一樣,連接到一個指令流水線的FPU使軟件浮點運算速度增加30倍,而APU接口相比于總線連接FPU來說改善了近4倍。
表1:未加速與加速的浮點性能
評論