<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 采用硬件加速發(fā)揮MicroBlaze處理能力

          采用硬件加速發(fā)揮MicroBlaze處理能力

          作者:Karsten Trott博士 賽靈思(德國慕尼黑) 現(xiàn)場應(yīng)用工程師 時間:2010-03-09 來源:電子產(chǎn)品世界 收藏

            不過客戶仍不滿意,客戶要求更高的速度。在這種情況下,把算法從浮點運算變?yōu)楣厅c運算并不適合。因此,我們開發(fā)了一款新型專用器(新型FSL IP)來加快對循環(huán)的處理。

          本文引用地址:http://www.ex-cimer.com/article/106702.htm

            新的FSL IP使用CORE Generator模塊浮點_v4_0來為4x ADD、2x MUL、1x GREATER、1x LESS和1x SQRT等操作創(chuàng)建9個示例。所有這些示例都可以實體化,并對相同的輸入數(shù)據(jù)進行完全并行處理(圖2)。

            FSL IP中實例的創(chuàng)建帶有部分時延,但吞吐率僅為1。這要求為加速器內(nèi)部的控制器硬件準備更多的芯片,不過這樣可以在每個時鐘周期內(nèi)向協(xié)提供新數(shù)據(jù)。

            在取回結(jié)果前,只有在處理循環(huán)末端才需要增加周期。

            我們采用直連方式把連接到FSP IP時不需要FIFO。傳輸?shù)乃袛?shù)據(jù)都將緩存在IP內(nèi),并隨即加以處理。

            從FSL IP返回到的連接是使用FSL總線創(chuàng)建的。由于我們必須發(fā)回一些結(jié)果,因而這更加容易實現(xiàn),而且可以更加簡單地在IP內(nèi)完成。部分CoreGen模塊有一些已被添加到執(zhí)行時間中的時延,并被getfsl()調(diào)用完全覆蓋。只需要等到所有結(jié)果都存入FSL總線FIFO。不過,只要數(shù)據(jù)率是1,即可完全實現(xiàn)所要求的吞吐率。

            FSL總線的額外延遲僅會占用為數(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);

            算法的最終實施僅需大約4,630個周期,而且依然是全浮點實施。

            硬件需要本來應(yīng)該用于實施器的更多芯片才能并行計算出所有結(jié)果。不過與擴展實施方案相比,我們最終提升了大約7.6倍。否則,如果使用標準來替換這個50MHz的,可能需要大約380MHz的CPU才能勝任(假設(shè)硬件自帶有浮點平方根函數(shù))。

            更為顯著的是與使用PFU的最初方案,而非平方根函數(shù)的對比效果:總體提升了大約239倍。這種效果可能需要12GHz左右的浮點處理器才能實現(xiàn)。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();