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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > FPGA研發(fā)之道(9)架構(gòu)設(shè)計(jì)漫談(四)并行與復(fù)用

          FPGA研發(fā)之道(9)架構(gòu)設(shè)計(jì)漫談(四)并行與復(fù)用

          作者: 時(shí)間:2014-10-27 來源:網(wǎng)絡(luò) 收藏

            其在眾多器件中能夠被工程師青睞的一個(gè)很重要的原因就是其強(qiáng)悍的處理能力。那如何能夠做到高速的數(shù)據(jù)處理,數(shù)據(jù)的處理則是其中一個(gè)很重要的方式。

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

            數(shù)據(jù)的處理,從結(jié)構(gòu)上非常簡(jiǎn)單,但是設(shè)計(jì)上卻是相當(dāng)復(fù)雜,對(duì)于現(xiàn)有的來說,雖然各種的容量都在增加,但是在有限的邏輯中達(dá)到更高的處理能力則是FPGA工程師面臨的挑戰(zhàn)。常用計(jì)算結(jié)構(gòu)如下圖所示:

            

          ?

            上圖中:前端處理單元負(fù)責(zé)將進(jìn)入數(shù)據(jù)信息,分配到多個(gè)計(jì)算單元中,圖中為3個(gè)計(jì)算單元(幾個(gè)根據(jù)所需的性能計(jì)算得出)。然后計(jì)算單元計(jì)算完畢后,交付后端處理單元整合為統(tǒng)一數(shù)據(jù)流傳入下一級(jí)。如果單個(gè)計(jì)算單元的處理能力為N ,則通過并行的方式,根據(jù)并行度M,其計(jì)算能力為N*M;在此結(jié)構(gòu)中,涉及到幾個(gè)問題:

            一, 前端處理單元如何將數(shù)據(jù)分配到多個(gè)計(jì)算單元,其中一種算法為round-robin,輪流寫入下一級(jí)計(jì)算單元,這種方式一般使用用計(jì)算單元計(jì)算數(shù)據(jù)塊的時(shí)間等同。更常用的一種方式,可以根據(jù)計(jì)算單元的標(biāo)示,即忙閑狀態(tài),如果哪個(gè)計(jì)算單元標(biāo)示為閑狀態(tài),則分配其數(shù)據(jù)塊。

            二, 計(jì)算單元和前后端處理之間如何進(jìn)行數(shù)據(jù)交互。一般來說,計(jì)算單元處理頻率較低,為關(guān)鍵路徑所在。前后端處理流量較大,時(shí)鐘頻率較高,因此通過異步FIFO連接,或者雙端口RAM都是合適的方式。如果數(shù)據(jù)可分塊計(jì)算,且塊的大小不定,建議使用FIFO作為隔離手段,同時(shí)使用可編程滿信號(hào),作為前端處理識(shí)別計(jì)算模塊的忙閑標(biāo)示。

            三, 如果數(shù)據(jù)有先后的標(biāo)示,即先計(jì)算的數(shù)據(jù)需要先被送出,則后端處理模塊需要額外的信號(hào),確定讀取各個(gè)計(jì)算模塊的順序。這是因?yàn)椋喝绻麛?shù)據(jù)等長(zhǎng),則計(jì)算時(shí)間等長(zhǎng),則先計(jì)算的數(shù)據(jù)會(huì)先被送出。但是如果數(shù)據(jù)塊不等長(zhǎng),后送入的小的數(shù)據(jù)塊肯能先被計(jì)算完畢,后端處理單元如果不識(shí)別先后計(jì)算的數(shù)據(jù)塊,就會(huì)造成數(shù)據(jù)的亂序。這可以通過前端計(jì)算單元通過小的FIFO通知后端計(jì)算單元獲知首先讀取那個(gè)計(jì)算單元輸出的數(shù)據(jù),即使其他計(jì)算單元輸出已準(zhǔn)備好,也要等待按照順序來讀取。

            數(shù)據(jù)的并行處理是FPGA常用的提升處理性能的方法,其優(yōu)點(diǎn)是結(jié)構(gòu)簡(jiǎn)單,通過計(jì)算單元模塊的復(fù)用達(dá)到高性能的處理。缺點(diǎn),顯而易見就是達(dá)到M倍的性能就要要耗費(fèi)M倍邏輯。

            與之相反減少邏輯的另一種方式,則是復(fù)用,即一個(gè)處理能力較強(qiáng)的模塊,可以被N的單元復(fù)用,通過復(fù)用,而不用每個(gè)單元例化模塊,可以達(dá)到減少邏輯的效果,但控制復(fù)雜度就會(huì)上升。其結(jié)構(gòu)圖如下所示:

            

          ?

            上圖復(fù)用的結(jié)構(gòu)圖中,分別介紹了流過模式復(fù)用和調(diào)用模式復(fù)用。流過模式下,計(jì)算單元處理多路數(shù)據(jù)塊,然后將數(shù)據(jù)塊分配到多路上,這種情況下,通過round-robin可以保證各個(gè)通路公平機(jī)會(huì)獲得計(jì)算單元。其處理思路與上圖描述并行處理類似。

            調(diào)用模式下,計(jì)算單元被多個(gè)主設(shè)備復(fù)用,這種架構(gòu)可以通過總線及仲裁的方式來使各個(gè)主設(shè)備能夠獲取計(jì)算單元的處理(有很多成熟的例子可供使用,如AHB等)。如果多個(gè)主設(shè)備和多個(gè)計(jì)算單元的情況,則可以不通過總線而通過交換矩陣,來減少總線處理帶來的總線瓶頸。

            實(shí)際應(yīng)用場(chǎng)合,設(shè)計(jì)的架構(gòu)都應(yīng)簡(jiǎn)單實(shí)用為好,交互矩陣雖然實(shí)用靈活,但其邏輯量,邊界測(cè)試驗(yàn)證的難度都較大,在需要靈活支持多端口互聯(lián)互通的情況下使用,可謂物盡其用。但如果僅僅用于一般計(jì)算單元能力復(fù)用的場(chǎng)景,就屬于過度設(shè)計(jì),其可以通過化簡(jiǎn)成上述兩種簡(jiǎn)單模式,達(dá)到高速的數(shù)據(jù)處理的效果。

            并行和復(fù)用,雖然是看其來屬性相反的操作,但其本質(zhì)上就是通過處理能力和邏輯數(shù)量的平衡,從而以最優(yōu)的策略滿足項(xiàng)目的需要。設(shè)計(jì)如此,人生亦然。

          fpga相關(guān)文章:fpga是什么




          評(píng)論


          相關(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); })();