采用硬件加速發(fā)揮MicroBlaze處理能力
不過(guò)客戶仍不滿意,客戶要求更高的速度。在這種情況下,把算法從浮點(diǎn)運(yùn)算變?yōu)楣厅c(diǎn)運(yùn)算并不適合。因此,我們開(kāi)發(fā)了一款新型專用硬件加速器(新型FSL IP)來(lái)加快對(duì)循環(huán)的處理。
本文引用地址:http://www.biyoush.com/article/106702.htm新的FSL IP使用CORE Generator模塊浮點(diǎn)_v4_0來(lái)為4x ADD、2x MUL、1x GREATER、1x LESS和1x SQRT等操作創(chuàng)建9個(gè)示例。所有這些示例都可以實(shí)體化,并對(duì)相同的輸入數(shù)據(jù)進(jìn)行完全并行處理(圖2)。
FSL IP中實(shí)例的創(chuàng)建帶有部分時(shí)延,但吞吐率僅為1。這要求為加速器內(nèi)部的控制器硬件準(zhǔn)備更多的芯片,不過(guò)這樣可以在每個(gè)時(shí)鐘周期內(nèi)向協(xié)處理器提供新數(shù)據(jù)。
在取回結(jié)果前,只有在處理循環(huán)末端才需要增加周期。
我們采用直連方式把MicroBlaze連接到FSP IP時(shí)不需要FIFO。傳輸?shù)乃袛?shù)據(jù)都將緩存在IP內(nèi),并隨即加以處理。
從FSL IP返回到MicroBlaze的連接是使用FSL總線創(chuàng)建的。由于我們必須發(fā)回一些結(jié)果,因而這更加容易實(shí)現(xiàn),而且可以更加簡(jiǎn)單地在IP內(nèi)完成。部分CoreGen模塊有一些已被添加到執(zhí)行時(shí)間中的時(shí)延,并被getfsl()調(diào)用完全覆蓋。MicroBlaze只需要等到所有結(jié)果都存入FSL總線FIFO。不過(guò),只要數(shù)據(jù)率是1,即可完全實(shí)現(xiàn)所要求的吞吐率。
FSL總線的額外延遲僅會(huì)占用為數(shù)不多的一些周期。使用FSL硬件加速器的C代碼如下:for (i=0;i<512;i++) {
putfsl(farr[i],fsl0_id);
}
// get the min,max values:
getfsl(min_f,fsl0_id);
getfsl(max_f,fsl0_id);
// get the sum and products:
getfsl(f_sum,fsl0_id);
getfsl(f_sum_prod,fsl0_id);
getfsl(f_sum_tprod,fsl0_id);
getfsl(f_sqrt,fsl0_id);
算法的最終實(shí)施僅需大約4,630個(gè)周期,而且依然是全浮點(diǎn)實(shí)施。
硬件需要本來(lái)應(yīng)該用于實(shí)施硬件加速器的更多芯片才能并行計(jì)算出所有結(jié)果。不過(guò)與擴(kuò)展FPU實(shí)施方案相比,我們最終提升了大約7.6倍。否則,如果使用標(biāo)準(zhǔn)處理器來(lái)替換這個(gè)50MHz的處理器,可能需要大約380MHz的CPU才能勝任(假設(shè)硬件自帶有浮點(diǎn)平方根函數(shù))。
更為顯著的是與使用PFU的最初方案,而非平方根函數(shù)的對(duì)比效果:總體提升了大約239倍。這種效果可能需要12GHz左右的浮點(diǎn)處理器才能實(shí)現(xiàn)。
評(píng)論