FPGA研發(fā)之道(9)架構(gòu)設(shè)計(jì)漫談(四)并行與復(fù)用
FPGA其在眾多器件中能夠被工程師青睞的一個(gè)很重要的原因就是其強(qiáng)悍的處理能力。那如何能夠做到高速的數(shù)據(jù)處理,數(shù)據(jù)的并行處理則是其中一個(gè)很重要的方式。
本文引用地址:http://2s4d.com/article/264454.htm數(shù)據(jù)的并行處理,從結(jié)構(gòu)上非常簡(jiǎn)單,但是設(shè)計(jì)上卻是相當(dāng)復(fù)雜,對(duì)于現(xiàn)有的FPGA來(lái)說(shuō),雖然各種FPGA的容量都在增加,但是在有限的邏輯中達(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 ,則通過(guò)并行的方式,根據(jù)并行度M,其計(jì)算能力為N*M;在此結(jié)構(gòu)中,涉及到幾個(gè)問(wèn)題:
一, 前端處理單元如何將數(shù)據(jù)分配到多個(gè)計(jì)算單元,其中一種算法為round-robin,輪流寫(xiě)入下一級(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ù)交互。一般來(lái)說(shuō),計(jì)算單元處理頻率較低,為關(guān)鍵路徑所在。前后端處理流量較大,時(shí)鐘頻率較高,因此通過(guò)異步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ù)的亂序。這可以通過(guò)前端計(jì)算單元通過(guò)小的FIFO通知后端計(jì)算單元獲知首先讀取那個(gè)計(jì)算單元輸出的數(shù)據(jù),即使其他計(jì)算單元輸出已準(zhǔn)備好,也要等待按照順序來(lái)讀取。
數(shù)據(jù)的并行處理是FPGA常用的提升處理性能的方法,其優(yōu)點(diǎn)是結(jié)構(gòu)簡(jiǎn)單,通過(guò)計(jì)算單元模塊的復(fù)用達(dá)到高性能的處理。缺點(diǎn),顯而易見(jiàn)就是達(dá)到M倍的性能就要要耗費(fèi)M倍邏輯。
與之相反減少邏輯的另一種方式,則是復(fù)用,即一個(gè)處理能力較強(qiáng)的模塊,可以被N的單元復(fù)用,通過(guò)復(fù)用,而不用每個(gè)單元例化模塊,可以達(dá)到減少邏輯的效果,但控制復(fù)雜度就會(huì)上升。其結(jié)構(gòu)圖如下所示:
?
上圖復(fù)用的結(jié)構(gòu)圖中,分別介紹了流過(guò)模式復(fù)用和調(diào)用模式復(fù)用。流過(guò)模式下,計(jì)算單元處理多路數(shù)據(jù)塊,然后將數(shù)據(jù)塊分配到多路上,這種情況下,通過(guò)round-robin可以保證各個(gè)通路公平機(jī)會(huì)獲得計(jì)算單元。其處理思路與上圖描述并行處理類(lèi)似。
調(diào)用模式下,計(jì)算單元被多個(gè)主設(shè)備復(fù)用,這種架構(gòu)可以通過(guò)總線及仲裁的方式來(lái)使各個(gè)主設(shè)備能夠獲取計(jì)算單元的處理(有很多成熟的例子可供使用,如AHB等)。如果多個(gè)主設(shè)備和多個(gè)計(jì)算單元的情況,則可以不通過(guò)總線而通過(guò)交換矩陣,來(lái)減少總線處理帶來(lái)的總線瓶頸。
實(shí)際應(yīng)用場(chǎng)合,設(shè)計(jì)的架構(gòu)都應(yīng)簡(jiǎn)單實(shí)用為好,交互矩陣雖然實(shí)用靈活,但其邏輯量,邊界測(cè)試驗(yàn)證的難度都較大,在需要靈活支持多端口互聯(lián)互通的情況下使用,可謂物盡其用。但如果僅僅用于一般計(jì)算單元能力復(fù)用的場(chǎng)景,就屬于過(guò)度設(shè)計(jì),其可以通過(guò)化簡(jiǎn)成上述兩種簡(jiǎn)單模式,達(dá)到高速的數(shù)據(jù)處理的效果。
并行和復(fù)用,雖然是看其來(lái)屬性相反的操作,但其本質(zhì)上就是通過(guò)處理能力和邏輯數(shù)量的平衡,從而以最優(yōu)的策略滿足項(xiàng)目的需要。設(shè)計(jì)如此,人生亦然。
fpga相關(guān)文章:fpga是什么
評(píng)論