采用硬件加速發(fā)揮MicroBlaze處理能力
MicroBlaze處理器是賽靈思(Xilinx)在嵌入式開(kāi)發(fā)套件 (EDK) 中提供的兩款32位內核之一,是實(shí)現硬件加速的靈活工具。圖1是MicroBlaze的典型設計。該內核含有一個(gè)32位乘法器,但不含浮點(diǎn)單元(FPU)、桶式移位器或專(zhuān)用硬件加速器。對Xilinx公司Spartan FPGA 器件而言,默認系統含有區域優(yōu)化的MicroBlaze(采用三級流水線(xiàn)),但大多數客戶(hù)通常在開(kāi)始時(shí)使用速度優(yōu)化版(采用五級流水線(xiàn))進(jìn)行性能評估,其優(yōu)點(diǎn)是小巧簡(jiǎn)潔,易于擴展。
本文引用地址:http://dyxdggzs.com/article/106702.htmXilinx客戶(hù)針對這種處理器設計所要求的兩個(gè)實(shí)際應用案例可說(shuō)明MicroBlaze在硬件加速方面的作用。本文以 Spartan 器件為重點(diǎn),比較 FPGA 解決方案和標準控制器內核,展現我們能夠達到的性?xún)r(jià)比。這一方法同樣適用于Virtex FPGA。
案例1:實(shí)施位反轉算法
在第一個(gè)應用示例中,假定MicroBlaze處理器的運行速度僅為50MHz。采用 Spartan-3或Spartan-6器件可輕松實(shí)現這一速度。諸如本地存儲器總線(xiàn)(指令和數據,LMB)以及處理器本機總線(xiàn)(PLB)等所有內部總線(xiàn)的運行速度均達到50MHz。為簡(jiǎn)單起見(jiàn),假定沒(méi)有連接外部DDR存儲器。
現在假設客戶(hù)想要在這個(gè)CPU上實(shí)施位反轉算法。MicroBlaze自身沒(méi)有通過(guò)硬件直接提供這個(gè)功能。再假定每秒需要完成2萬(wàn)次位反轉操作。
要解決這個(gè)問(wèn)題,大多數客戶(hù)首先會(huì )采用純軟件方案,因為這樣可輕松地實(shí)現想要的功能。而且如果性能足夠高,無(wú)需進(jìn)行任何修改。
為此,讓我們先從簡(jiǎn)單的軟件算法出發(fā),實(shí)施簡(jiǎn)短精悍的解決方案。結果確實(shí)簡(jiǎn)單、精巧而且容易理解,不過(guò)效率很低。
unsigned int v=value;
unsigned int r = v;
int s = sizeof(v) * CHAR_BIT - 1;
for (v >>= 1; v; v >>= 1)
{
r <<= 1;
r |= v & 1;
s--;
}
r <<= s;
return r;
這段程序運行相當順利,不過(guò)就算在專(zhuān)門(mén)針對速度優(yōu)化的MicroBlaze(使用五級流水線(xiàn))上運行處理一個(gè)32 位字的算法,也用了220個(gè)周期。要執行2萬(wàn)次位反轉操作,在速度為50MHz的MicroBlaze上約需88ms。
客戶(hù)試圖采用略有不同的方法來(lái)優(yōu)化算法,但仍作為純軟件解決方案來(lái)實(shí)施。
要進(jìn)一步提升性能,就要采用純硬件解決方案,通過(guò)一種新的方式來(lái)讓硬件加速器充分發(fā)揮性能。
評論