張偉達(dá)
(中國(guó)電子科技集團(tuán)公司第十研究所,四川成都 610036)
合成孔徑雷達(dá)(SAR)因其高分辨的成像能力和穿透性強(qiáng),具有全天時(shí)全天候的特點(diǎn),被廣泛應(yīng)用于海洋、陸地、航空航天等領(lǐng)域[1-5]。而隨著SAR 成像實(shí)時(shí)性、分辨率等要求越來(lái)越高,成像處理中的數(shù)據(jù)量和運(yùn)算量也越來(lái)越大,此時(shí)多節(jié)點(diǎn)、多內(nèi)核的并行處理架構(gòu)常常被用來(lái)提高系統(tǒng)性能,以解決上述問(wèn)題[6-7]。
SAR 成像功能中需要處理的復(fù)數(shù)點(diǎn)數(shù)據(jù)以二維數(shù)據(jù)矩陣的形式存儲(chǔ),且數(shù)據(jù)量規(guī)模龐大,而傳統(tǒng)用于存儲(chǔ)處理數(shù)據(jù)的DSP 芯片可使用的存儲(chǔ)空間有限,同時(shí)若直接以線性方式存儲(chǔ)二維數(shù)據(jù)(在存儲(chǔ)介質(zhì)中某一維度數(shù)據(jù)連續(xù)存儲(chǔ),另一維度跨越式存儲(chǔ)),則會(huì)造成數(shù)據(jù)讀寫性能失衡,某一維度存取速率很高而另一維度卻非常低。
該文基于某國(guó)產(chǎn)類TMS320C6678 芯片[8-13],針對(duì)大規(guī)模數(shù)據(jù)的存儲(chǔ)和矩陣的二維高效傳輸,設(shè)計(jì)了一種將單片DSP 不足以容納的數(shù)據(jù)存儲(chǔ)于多片DSP中,并且DSP 間通過(guò)Serial RapidIO[14-16](SRIO)網(wǎng)絡(luò)互聯(lián)的系統(tǒng)方案,系統(tǒng)網(wǎng)絡(luò)中的每一片DSP 都可以通過(guò)SRIO 接口訪問(wèn)到其他DSP 中的數(shù)據(jù),同時(shí)制定數(shù)據(jù)矩陣在DSP 中的存儲(chǔ)策略來(lái)替換線性存儲(chǔ)方式,以達(dá)到網(wǎng)絡(luò)中的DSP 都可以以任意維度高效訪問(wèn)完整矩陣空間數(shù)據(jù)的目的,為系統(tǒng)中多DSP 并行高效地完成成像運(yùn)算提供支持。
單片DSP 不足以存儲(chǔ)完整的二維復(fù)數(shù)點(diǎn)數(shù)據(jù)矩陣,可以將數(shù)據(jù)矩陣分布式的存儲(chǔ)在多片DSP存儲(chǔ)介質(zhì)中,多片DSP 通過(guò)SRIO 網(wǎng)絡(luò)協(xié)同實(shí)現(xiàn)對(duì)完整數(shù)據(jù)矩陣的訪問(wèn),該文設(shè)計(jì)的雷達(dá)信號(hào)數(shù)據(jù)處理板根據(jù)待處理的數(shù)據(jù)量,采用四片類6678 DSP并行工作的方式,提高運(yùn)算效率的同時(shí)擴(kuò)展了存儲(chǔ)容量。
方案中使用的國(guó)產(chǎn)類TMS320C6678 DSP 芯片具有8 個(gè)內(nèi)核,每個(gè)內(nèi)核最高主頻為1 GHz;具有兩組SRIO 控制器,且全部接入SRIO 網(wǎng)絡(luò)中,速率均使用4×3.125 Gbps 配置,在接入交換芯片的情況下,實(shí)際讀寫吞吐量分別可達(dá)到5.9 Gbps、8.6 Gbps;DSP 外部配有8 GB 容量的DDR(雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器),內(nèi)部配有4 MB 的MSMC(共享內(nèi)存空間),其他存儲(chǔ)能力與TMS320C6678 完全相同。
系統(tǒng)構(gòu)成圖如圖1 所示,四片類6678 DSP 芯片通過(guò)1848 交換芯片接入共同的SRIO 網(wǎng)絡(luò),每片DSP與交換芯片間都有兩組SRIO 相連接,傳輸數(shù)據(jù)時(shí)可獨(dú)立并行傳輸。
圖1 系統(tǒng)構(gòu)成圖
在該文方案中,可以處理的復(fù)數(shù)點(diǎn)(4 字節(jié)實(shí)部+4 字節(jié)虛部)上限為64k×64k 的二維矩陣(共32 GB數(shù)據(jù)),完整的待處理數(shù)據(jù)矩陣將被分成2×2個(gè)子矩陣(對(duì)應(yīng)4 個(gè)DSP 組成的2×2 DSP 矩陣)分布式地保存在四片DSP 的DDR 中,(1,1)子矩陣被保存在(1,1)號(hào)DSP 中,(1,2)子矩陣被保存在(1,2)號(hào)DSP中,以此類推,數(shù)據(jù)矩陣分塊方法如圖2 所示。
圖2 數(shù)據(jù)矩陣分塊方法
考慮到可擴(kuò)展性的需要,在其他應(yīng)用場(chǎng)景中,可根據(jù)待處理矩陣數(shù)據(jù)量靈活地選擇SRIO 網(wǎng)絡(luò)中參與存取處理數(shù)據(jù)的DSP 矩陣規(guī)模,若選擇的DSP 矩陣模型為m×n(共m×n片DSP),則數(shù)據(jù)矩陣也要相應(yīng)的被分割成m×n個(gè)子矩陣,并依據(jù)編號(hào)對(duì)應(yīng)的保存在相應(yīng)的DSP 中,如圖3 所示。
圖3 規(guī)模為m×n的DSP矩陣架構(gòu)圖
雷達(dá)成像數(shù)據(jù)一般以二維復(fù)數(shù)點(diǎn)矩陣形式排列,矩陣的行、列兩個(gè)維度分別對(duì)應(yīng)著方位向和距離向兩類數(shù)據(jù),在存儲(chǔ)時(shí),若單獨(dú)地以某一個(gè)維度為單位將整個(gè)數(shù)據(jù)矩陣存入DDR 中,那么由于存儲(chǔ)單位使用的維度對(duì)應(yīng)的數(shù)據(jù)在DDR 中連續(xù)存儲(chǔ),其讀寫速度非???,但另一維度的數(shù)據(jù)在DDR 中會(huì)以不連續(xù)的方式排列,且隨著數(shù)據(jù)體量的增大間隔也越大,同時(shí)會(huì)頻繁發(fā)生跨頁(yè)(DDR 中的存儲(chǔ)單位)讀寫數(shù)據(jù)的情況,此時(shí),其對(duì)應(yīng)的讀寫效率非常差。所以在DDR 中存寫數(shù)據(jù)矩陣時(shí),都應(yīng)依據(jù)一定的存寫策略平衡兩個(gè)維度的速率,以提高整體效率。
該文方案中使用如下存儲(chǔ)方法,以2×2 的DSP模型(共4 片)和64k×64k 的二維數(shù)據(jù)矩陣為例:
64k×64k 的二維數(shù)據(jù)矩陣會(huì)被分為2×2 個(gè)32k×32k 的子矩陣分別存儲(chǔ)在每片DSP 的DDR 中,為均衡行數(shù)據(jù)和列數(shù)據(jù)在DDR 中的讀寫速率,將數(shù)據(jù)矩陣分解為兩種規(guī)模的數(shù)據(jù)塊Rank 和Block,劃分規(guī)則如下:
原始數(shù)據(jù)矩陣(32k×32k)如圖4 所示,每一個(gè)數(shù)據(jù)點(diǎn)由其在矩陣中的行序號(hào)和列序號(hào)表示,表示形式為(0,0)~(32k-1,32k-1):
圖4 原始數(shù)據(jù)矩陣
Rank:每一列中以h(以h為512 為例,可根據(jù)DDR 的具體類型選擇最優(yōu)的h值)個(gè)點(diǎn)為一組,定義為一個(gè)Rank,Rank 為存入ddr 中的基本單元,每一個(gè)Rank 中的數(shù)據(jù)按順序?qū)懭雂dr 的一段連續(xù)空間,如圖5 所示。
圖5 Rank在數(shù)據(jù)矩陣中的定義
Block:每一行Rank(以Rank為單位,包括Rank0~32k-1)為一個(gè)Block,如圖6 所示,32k×32k 數(shù)據(jù)矩陣中存在64 個(gè)Block,同一個(gè)Block 內(nèi)的不同Rank 之間依照序號(hào)順序先后寫入連續(xù)的DDR 空間,該例中寫入Block0 數(shù)據(jù)塊時(shí),先寫入Rank0,再寫入Rank1,依次寫入Block0 中的全部Rank。
圖6 Block在數(shù)據(jù)矩陣中的定義
Block 之間同樣依照序號(hào)順序依次寫入連續(xù)的DDR 空間,在DDR 中,用于存儲(chǔ)數(shù)據(jù)矩陣的起始地址開始存寫B(tài)lock0 數(shù)據(jù)塊,在Block0 數(shù)據(jù)塊的下一個(gè)連續(xù)地址寫入Block1 數(shù)據(jù)塊,依次寫入全部Block數(shù)據(jù)塊。
由于圖像處理的高效性要求,往往采用并行處理的方式,既包括8 核的并行數(shù)據(jù)處理,也包括同步進(jìn)行的數(shù)據(jù)傳輸與數(shù)據(jù)處理。
利用芯片的集成外設(shè)DMA(Direct Memory Access)控制器[17],可以實(shí)現(xiàn)DMA 控制器進(jìn)行數(shù)據(jù)搬移的同時(shí)使用CPU 并行執(zhí)行數(shù)據(jù)處理;使用ping-pong 模式,CPU 處理ping 區(qū)數(shù)據(jù)時(shí)DMA 搬移數(shù)據(jù)至pong區(qū),CPU 處理完ping 區(qū)數(shù)據(jù)后開始處理pong 區(qū)數(shù)據(jù),此時(shí)DMA 開始搬移并更新ping 區(qū)數(shù)據(jù)。
數(shù)據(jù)傳輸部分包括兩個(gè)環(huán)節(jié):1)通過(guò)DMA 完成DDR 和本地MSMC 間的傳輸;2)通過(guò)SRIO 完成源DSP 與目標(biāo)DSP 的MSMC 間傳輸。由于存儲(chǔ)方案并沒(méi)有線性地將數(shù)組數(shù)據(jù)存入DDR 中,需要使用DMA的多維傳輸和鏈?zhǔn)絺鬏斈J酵瓿蓴?shù)據(jù)由DDR 到MSMC 的搬移,流程如下:
行讀寫時(shí),DDR 中數(shù)據(jù)矩陣同一行數(shù)據(jù)的相鄰兩個(gè)數(shù)據(jù)點(diǎn)間隔h(即一個(gè)Rank 中的點(diǎn)數(shù))個(gè)數(shù)據(jù)點(diǎn)(每個(gè)復(fù)數(shù)點(diǎn)占8 字節(jié)),行讀寫時(shí),使用二維DMA 讀寫,即讀取一個(gè)點(diǎn)后間隔h個(gè)點(diǎn)讀取下一個(gè)點(diǎn),為提高效率,在多行(設(shè)為g行,根據(jù)需要)讀寫中,一次讀取g個(gè)數(shù)據(jù)點(diǎn)(g行數(shù)據(jù)中相同序號(hào)的數(shù)據(jù)點(diǎn)相鄰,即存在于同一個(gè)Rank 中),間隔h個(gè)點(diǎn)后再讀取下一組的g個(gè)點(diǎn)。
圖7 以512 個(gè)點(diǎn)為一個(gè)Rank(h=512)、讀寫4 行數(shù)據(jù)(g=4)、以每行32k 個(gè)點(diǎn)為例,使用DMA 的二維傳輸模式(以固定間隔跨越式地多次傳輸),以4k Byte 為間隔每次搬移32 Byte,共搬移32k 次,陰影部分為待傳輸數(shù)據(jù)。
圖7 行數(shù)據(jù)在DDR中分布及讀寫示例
列讀寫時(shí),列數(shù)據(jù)在DDR 中被分為數(shù)個(gè)Rank 存儲(chǔ),Rank 中數(shù)據(jù)連續(xù)存儲(chǔ),同一列數(shù)據(jù)所屬的兩個(gè)Rank 間隔h(本例中h為512)×32k(32k×32k 矩陣中)個(gè)數(shù)據(jù)點(diǎn),使用鏈?zhǔn)紻MA 進(jìn)行傳輸,每一個(gè)節(jié)點(diǎn)傳輸一個(gè)Rank,為提高效率,在多列(g列)傳輸中,一次節(jié)點(diǎn)傳輸g個(gè)Rank(同一個(gè)Block 內(nèi),相鄰列數(shù)據(jù)的Rank 連續(xù))。
圖8 以512 個(gè)點(diǎn)為一個(gè)Rank(h=512)、讀寫4 列數(shù)據(jù)(g=4)、以每列32k 個(gè)點(diǎn)為例,使用DMA 的鏈?zhǔn)絺鬏斈J?,每個(gè)DMA 節(jié)點(diǎn)傳輸2 048(512×4 列)個(gè)復(fù)數(shù)點(diǎn),一次DMA 傳輸鏈包括64 個(gè)節(jié)點(diǎn)(32×1 024/512),陰影部分為待傳輸數(shù)據(jù),每一段陰影部分都為一次DMA 傳輸節(jié)點(diǎn)待傳輸?shù)臄?shù)據(jù)。
圖8 列數(shù)據(jù)在DDR中分布及讀寫示例
為了進(jìn)一步提高數(shù)據(jù)傳輸?shù)男剩瑯邮褂胮ing-pong模式,使DDR 和本地MSMC間的DMA 傳輸、源DSP 與目標(biāo)DSP 間的SRIO 傳輸兩個(gè)環(huán)節(jié)同步執(zhí)行,DMA 向ping 區(qū)搬移數(shù)據(jù)完成后,啟動(dòng)ping 區(qū)數(shù)據(jù)SRIO 傳輸,同時(shí)DMA 開始向pong 區(qū)搬移數(shù)據(jù),通過(guò)并行運(yùn)行減少數(shù)據(jù)讀出DDR 的損耗。
實(shí)驗(yàn)采用圖1 所示的4 片DSP 模型,國(guó)產(chǎn)類6678 DSP 主頻時(shí)鐘使用1 GHz,DDR 工作時(shí)鐘使用667 MHz,兩組SRIO 設(shè)備都使用4 路3.125 Gbps 的配置(在通過(guò)交換芯片互連的情況下,實(shí)測(cè)SRIO 讀模式可達(dá)2×8.503 Gbps,寫模式可達(dá)2×5.915 Gbps)。
每次測(cè)試以讀寫4 條數(shù)據(jù)線為例,每條數(shù)據(jù)線分別訪問(wèn)64k 個(gè)復(fù)數(shù)點(diǎn)(共4(線數(shù))×64×1 024(點(diǎn)數(shù))×8(點(diǎn)字節(jié)數(shù))=2 MB 數(shù)據(jù))和32k 個(gè)復(fù)數(shù)點(diǎn)(共4(線數(shù))×32×1 024(點(diǎn)數(shù))×8(點(diǎn)字節(jié)數(shù))=1 MB 數(shù)據(jù)),存儲(chǔ)策略中Rank的h參數(shù)使用512。
該文方案實(shí)際傳輸帶寬及與傳統(tǒng)線性存儲(chǔ)方案(以行為單位逐字節(jié)存入DDR 中)對(duì)比如表1 和表2。
表1 訪問(wèn)4線64k個(gè)復(fù)數(shù)點(diǎn)實(shí)驗(yàn)性能對(duì)比表
表2 訪問(wèn)4線32k個(gè)復(fù)數(shù)點(diǎn)實(shí)驗(yàn)性能對(duì)比表
由實(shí)驗(yàn)結(jié)果可以看出,由于采用了DMA 和SRIO并行工作的ping-pong 模式,完整流程的傳輸帶寬會(huì)受到二者中速率較慢一方的限制。
傳統(tǒng)線性存儲(chǔ)方式中,若以行為單位逐字節(jié)地將數(shù)據(jù)存入DDR 中,由于行數(shù)據(jù)在DDR 中連續(xù),DMA 對(duì)DDR 中行數(shù)據(jù)的寫入、讀出非??焖伲藭r(shí)數(shù)據(jù)傳輸?shù)膸拑H受SRIO 帶寬上限制約;但由于列數(shù)據(jù)在DDR 中不連續(xù),且同一列中連續(xù)的兩點(diǎn)之間間隔較大,實(shí)驗(yàn)中間隔32k 個(gè)復(fù)數(shù)點(diǎn)(即256 kB,一片DSP 中存有32k×32k 數(shù)據(jù)矩陣),DMA 對(duì)DDR 中列數(shù)據(jù)的寫入讀出效率非常低(由于DDR 中頁(yè)屬性的限制,兩點(diǎn)間間隔越大,跨頁(yè)越多,耗時(shí)越久),此時(shí)數(shù)據(jù)傳輸?shù)膸捠蹹MA 對(duì)DDR 中數(shù)據(jù)讀寫速率的限制。
通過(guò)對(duì)比可以看出,使用該文方案后,列數(shù)據(jù)在DDR 中以Rank 的形式存儲(chǔ),Rank 內(nèi)部連續(xù)存儲(chǔ),Rank 間離散分布,此時(shí)使用DMA 的鏈?zhǔn)絺鬏斈J剑梢允沽袛?shù)據(jù)傳輸帶寬得到大幅提高;同時(shí),雖然行數(shù)據(jù)由連續(xù)分布變?yōu)榱穗x散分布,但連續(xù)兩點(diǎn)之間的存儲(chǔ)間隔可控,且會(huì)被設(shè)置為較小值,以便增加單個(gè)DDR 頁(yè)(DDR 中的存儲(chǔ)單位)中的存儲(chǔ)行點(diǎn)數(shù),此時(shí)行數(shù)據(jù)讀寫時(shí)跨頁(yè)的消耗會(huì)被大大減少,最后達(dá)到在提高列數(shù)據(jù)傳輸速率的同時(shí)有限地降低行數(shù)據(jù)獲取性能的目的。
此方案中的讀寫性能同時(shí)也受訪問(wèn)數(shù)據(jù)線數(shù)的影響,訪問(wèn)的數(shù)據(jù)線數(shù)目越多,待操作的數(shù)據(jù)分布在同一個(gè)DDR 頁(yè)中的部分就越多,性能便越高,反之性能則會(huì)有所下降,實(shí)驗(yàn)結(jié)果如表3 所示。
表3 訪問(wèn)線數(shù)不同時(shí)實(shí)驗(yàn)性能對(duì)比表
實(shí)驗(yàn)數(shù)據(jù)可以看出,幾種訪問(wèn)方式下,隨著訪問(wèn)數(shù)據(jù)線數(shù)的降低,數(shù)據(jù)存寫效率也隨之降低,常用的2 線和4 線存寫和8 線相比性能分別下降了20%和10%,當(dāng)只進(jìn)行單線讀寫時(shí)速率達(dá)到最低,僅能達(dá)到8 線訪問(wèn)性能的60%,實(shí)際應(yīng)用中可根據(jù)具體需求選擇最合適的訪問(wèn)模式來(lái)完成二維矩陣的傳輸。
該文提出的基于SRIO 網(wǎng)絡(luò)的多DSP 架構(gòu)模式簡(jiǎn)單靈活易擴(kuò)展,有效解決了存儲(chǔ)數(shù)據(jù)量龐大及系統(tǒng)芯片間數(shù)據(jù)矩陣傳輸效率的問(wèn)題,搭配文中闡述的二維矩陣存儲(chǔ)方案,相較于線性存儲(chǔ),顯著地提高了兩個(gè)維度中較慢維度的傳輸速率,同時(shí)對(duì)另一維度數(shù)據(jù)的存取影響有限,使系統(tǒng)的綜合效率得以提高。