當(dāng)今的設(shè)計(jì)工程師受到面積、功率和成本的約束,不能采用GHz級(jí)的計(jì)算機(jī)實(shí)現(xiàn)嵌入式設(shè)計(jì)。在嵌入式系統(tǒng)中,通常是由相對(duì)數(shù)量較少的算法決定最大的運(yùn)算需求。使用設(shè)計(jì)自動(dòng)化工具可以將這些算法快速轉(zhuǎn)換到硬件協(xié)處理器中。然后,協(xié)處理器可以有效地連接到處理器,產(chǎn)生“GHz”級(jí)的性能。
本文主要研究了代碼加速和代碼轉(zhuǎn)換到硬件協(xié)處理器的方法。我們還分析了通過(guò)一個(gè)涉及到基于輔助處理器單元(APU)的實(shí)際圖像顯示案例的基準(zhǔn)數(shù)據(jù)均衡決策的過(guò)程。該設(shè)計(jì)使用了在一個(gè)平臺(tái)FPGA中實(shí)現(xiàn)的一個(gè)嵌入式PowerPC。
協(xié)處理器的意義
協(xié)處理器是一個(gè)處理單元,該處理單元與一個(gè)主處理單元一起使用來(lái)承擔(dān)通常由主處理單元執(zhí)行的運(yùn)算。通常,協(xié)處理器功能在硬件中實(shí)現(xiàn)以替代幾種軟件指令。通過(guò)減少多種代碼指令為單一指令,以及在硬件中直接實(shí)現(xiàn)指令的方式,從而實(shí)現(xiàn)代碼加速。
最常用的協(xié)處理器是浮點(diǎn)單元(FPU),這是與CPU緊密結(jié)合的唯一普通協(xié)處理器。沒(méi)有通用的協(xié)處理器庫(kù),即使是存在這樣的庫(kù),將依然難以簡(jiǎn)單地將協(xié)處理器與一個(gè)CPU(例如Pentium 4)連接。Xilinx Virtex-4 FX FPGA擁有一個(gè)或兩個(gè)PowerPC,每個(gè)都有一個(gè)APU接口。通過(guò)在FPGA中嵌入一個(gè)處理器,現(xiàn)在就有機(jī)會(huì)在單芯片上實(shí)現(xiàn)完整的處理系統(tǒng)。
帶APU接口的PowerPC使得在FPGA中得以實(shí)現(xiàn)一個(gè)緊密結(jié)合的協(xié)處理器。因?yàn)轭l率的需求以及管腳數(shù)量的限制,采用外部協(xié)處理器不大可行。因此可以創(chuàng)建一個(gè)直接連接到PowerPC的專(zhuān)用應(yīng)用協(xié)處理器,大大地提高了軟件速度。因?yàn)镕PGA是可編程的,你可以快速地開(kāi)發(fā)和測(cè)試連接到CPU的協(xié)處理器解決方案。
協(xié)處理器連接模型
協(xié)處理器有三種基本的形式:與CPU總線連接的、與I/O連接的和指令流水線連接(Instruction Pipeline Connection)。此外,還存在一些這些形式的混合形式。
1. CPU總線連接
處理器總線連接加速器需要CPU在總線上移動(dòng)數(shù)據(jù)以及發(fā)送命令。通常,單個(gè)數(shù)據(jù)處理就需要很多的處理器時(shí)鐘周期。因?yàn)榭偩€仲裁以及總線驅(qū)動(dòng)的時(shí)鐘是處理器時(shí)鐘的分頻,所以會(huì)降低數(shù)據(jù)處理速度。一個(gè)與總線連接的加速器可以包含一個(gè)存儲(chǔ)器存取(DMA)引擎。在增加額外的邏輯情況下,DMA引擎允許協(xié)處理器工作在位于連接到總線的存儲(chǔ)器上的數(shù)據(jù)塊,獨(dú)立于CPU。
2. I/O連接
與I/O連接的加速器直接連接到一個(gè)專(zhuān)用的I/O端口。通常通過(guò)GET或PUT函數(shù)提供數(shù)據(jù)和控制。因?yàn)槿鄙倭酥俨?、控制?fù)雜度降低以及連接器件較少,因此這些接口的驅(qū)動(dòng)時(shí)鐘通常比處理器總線更快。這種接口的一個(gè)較好的例子如Xilinx Fast Simplex Link(FSL)。FSL是一種簡(jiǎn)單的FIFO接口,可以連接到Xilinx MicroBlaze軟核處理器或Virtex-4 FX PowerPC。與處理器總線接口中的數(shù)據(jù)移動(dòng)相比,通過(guò)FSL移動(dòng)的數(shù)據(jù)具有較低的延時(shí)和更高的數(shù)據(jù)速率。
3. 指令流水線連接
指令流水線連接加速器直接連接到CPU的計(jì)算內(nèi)核。通過(guò)與指令流水線連接,CPU不能識(shí)別的指令可以由協(xié)處理器執(zhí)行。操作數(shù)、結(jié)果以及狀態(tài)直接從數(shù)據(jù)執(zhí)行流水線向外傳遞,或接收。單個(gè)運(yùn)算可以實(shí)現(xiàn)兩個(gè)操作數(shù)的處理,同時(shí)返回一個(gè)結(jié)果和狀態(tài)。
作為一個(gè)直接連接的接口,連接道指令流水線的加速器可以用比處理器總線更快的時(shí)鐘驅(qū)動(dòng)。Xilinx通過(guò)APU接口實(shí)現(xiàn)這種協(xié)處理器連接模型,對(duì)于典型的雙操作數(shù)指令,在數(shù)據(jù)控制和數(shù)據(jù)傳輸上可以縮減10倍的時(shí)鐘周期。APU控制器還連接到數(shù)據(jù)緩存控制器,通過(guò)它可以執(zhí)行數(shù)據(jù)加載/存儲(chǔ)操作。因此,APU接口能在每秒內(nèi)移動(dòng)數(shù)百兆字節(jié),接近DMA速度。
I/O連接加速器或指令流水線連接加速器可以與總線連接加速器結(jié)合起來(lái)。在增加額外的邏輯條件下,可以創(chuàng)建一個(gè)加速器,這個(gè)加速器運(yùn)行在一個(gè)位于總線連接存儲(chǔ)器上的數(shù)據(jù)塊上,通過(guò)一個(gè)快速、低延時(shí)的接口接收命令并返回狀態(tài)。
在本文中介紹的C-HDL工具組可以實(shí)現(xiàn)總線連接和I/O連接加速器,它還能實(shí)現(xiàn)連接到PowerPC的APU接口的加速器。盡管APU連接是基于指令流水線的,C-HDL工具組實(shí)現(xiàn)了一種I/O流水線接口,該接口具有I/O連接加速器的典型性能。
評(píng)論
查看更多