汲夏,叢衛(wèi)華,杜栓平
(杭州應(yīng)用聲學(xué)研究所聲納技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,浙江杭州310012)
基于C6678多核數(shù)字信號(hào)處理器的聲納信號(hào)并行處理設(shè)計(jì)
汲夏,叢衛(wèi)華,杜栓平
(杭州應(yīng)用聲學(xué)研究所聲納技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,浙江杭州310012)
針對(duì)多核并行機(jī)制下,共享資源爭(zhēng)奪激烈,硬件能力提升難以切實(shí)轉(zhuǎn)變成程序效率提高的難題,通過協(xié)調(diào)存儲(chǔ)器訪存和核間同步等關(guān)鍵問題,研究了一種基于C6678多核數(shù)字信號(hào)處理器的聲納信號(hào)多級(jí)并行處理方法,包括核間流水線設(shè)計(jì)、數(shù)據(jù)傳輸與中央處理器并行設(shè)計(jì)和指令流線設(shè)計(jì)。以聲納二維相控方位濾波為例,介紹各級(jí)設(shè)計(jì)的實(shí)現(xiàn)方法,逐個(gè)測(cè)試并行性能,并編制實(shí)時(shí)處理軟件。測(cè)試結(jié)果表明,該方法能夠?qū)崿F(xiàn)存儲(chǔ)器訪問和中央處理器運(yùn)算并行,極大提高程序執(zhí)行效率。通過采用該方法開發(fā)的實(shí)時(shí)處理系統(tǒng),具有集成度高和實(shí)時(shí)性強(qiáng)的優(yōu)點(diǎn),獲得了高航速下海中浮球和配重條石清晰的實(shí)時(shí)成像效果,具有工程應(yīng)用價(jià)值。
聲學(xué);聲納;相控方位濾波;多核數(shù)字信號(hào)處理器;并行處理
現(xiàn)代聲納大數(shù)據(jù)率、高集成度和強(qiáng)實(shí)時(shí)性的發(fā)展趨勢(shì),對(duì)信號(hào)處理平臺(tái)核心器件的傳輸和運(yùn)算能力提出了越來越高的要求[1]。在傳統(tǒng)單核數(shù)字信號(hào)處理器(DSP)工作頻率提升越來越困難,運(yùn)算能力受限的情況下,多核DSP并行處理逐漸成為主流,廣泛應(yīng)用于現(xiàn)代聲納信號(hào)處理。在多核并行機(jī)制下,共享資源的爭(zhēng)奪非常激烈,由此導(dǎo)致的對(duì)于系統(tǒng)性能的影響也更加顯著,因而設(shè)計(jì)一個(gè)能夠公平有效地調(diào)度資源的并行方法,將硬件能力的提高切實(shí)轉(zhuǎn)變成程序性能的提升,在聲納信號(hào)處理中至關(guān)重要[2-5]。
本文系統(tǒng)介紹了TMS320C6678多核DSP架構(gòu),設(shè)計(jì)出一種基于C6678多核DSP的聲納信號(hào)多級(jí)并行處理方法,在協(xié)調(diào)各核公平競(jìng)爭(zhēng)資源的同時(shí),實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)暮笈_(tái)執(zhí)行和匯編指令的相互驅(qū)動(dòng),并以二維相控方位濾波為例,介紹各級(jí)并行處理實(shí)現(xiàn)方法,逐級(jí)進(jìn)行性能測(cè)試。采用該方法開發(fā)的實(shí)時(shí)處理軟件,獲得了海上浮球及其配重條石的清晰成像,具有較高的工程應(yīng)用價(jià)值。
C6678DSP是美國(guó)TI公司最新推出的一款片上多內(nèi)核處理器,它將8個(gè)運(yùn)算核心集成到一個(gè)芯片上,具有極強(qiáng)的高速并行運(yùn)算能力,能夠以較小的硬件規(guī)模,滿足多數(shù)聲納陣列信號(hào)處理的需求。C6678DSP多核架構(gòu)主要包括8個(gè)C66x運(yùn)算核心、10個(gè)增強(qiáng)型直接內(nèi)存存取(EDMA)控制器、4通道高速串行互聯(lián)接口(SRIO)、三級(jí)內(nèi)部存儲(chǔ)器、1個(gè)第3代雙倍速隨機(jī)動(dòng)態(tài)存儲(chǔ)器(DDR3)以及外設(shè)總線交換接口等,C6678DSP內(nèi)部還集成了多核導(dǎo)航器、分組加速器等硬件加速模塊,如圖1所示C6678 DSP多核架構(gòu)[5-7]。
圖1 C6678DSP多核架構(gòu)Fig.1 Multicore architecture of C6678 DSP
C6678DSP允許8個(gè)1GHz的C66x運(yùn)算核心完全并行,理論上具有單片浮點(diǎn)運(yùn)算能力1600億次/s,是TS201DSP的約40倍。C66x采用多級(jí)緩存,根據(jù)與中央處理器(CPU)的距離,由近到遠(yuǎn)依次為32kB數(shù)據(jù)存儲(chǔ)器(L1DS)、512KB本地存儲(chǔ)器(LL2S)、4MB內(nèi)部共享存儲(chǔ)器(MSMS)以及超大容量的DDR3. CPU突發(fā)訪存緩存器時(shí),距離越近訪存速度越快。L1DS通常被配置成Cache模式,用來保障CPU對(duì)LL2S、MSMS的快速訪存。
存儲(chǔ)器的合理調(diào)度是保證并行軟件高效執(zhí)行的基礎(chǔ),也是多核架構(gòu)下并行軟件設(shè)計(jì)的研究熱點(diǎn)。C6678DSP的8個(gè)核心完全相同,但各級(jí)緩存器的訪存帶寬有限且存在很大差異,例如LL2S的連續(xù)訪存帶寬為16GB/s,MSMS為64GB/s,DDR3僅為10GB/s.由于存儲(chǔ)器帶寬遠(yuǎn)小于CPU處理和EDMA訪存的帶寬,在實(shí)時(shí)并行處理軟件開發(fā)時(shí),存儲(chǔ)器將成為EDMA控制器并發(fā)訪存的瓶頸,尤其是DDR3.
8個(gè)核心同時(shí)通過EMDA將數(shù)據(jù)在DDR3與MSMS之間雙向傳輸,每個(gè)核心傳輸256MB,各EDMA優(yōu)先級(jí)相同,統(tǒng)計(jì)得到的8個(gè)核心訪存DDR3帶寬如圖2所示??梢娮杂筛?jìng)爭(zhēng)條件下,多核并行訪存DDR3時(shí),將均分DDR3帶寬。因此設(shè)計(jì)并行軟件時(shí)必須考慮C6678DSP各級(jí)存儲(chǔ)器帶寬的有限性和不一致性,采取任務(wù)均衡措施,設(shè)計(jì)一個(gè)公平的存儲(chǔ)器調(diào)度的方法,減少訪存請(qǐng)求的阻塞時(shí)間,才能保證軟件的并行效率。
圖2 8核并行訪存DDR3帶寬Fig.2 Bandwidth of DDR3 fetched by eight cores
綜合考慮聲納信號(hào)高數(shù)據(jù)率和C6678DSP多內(nèi)核、多級(jí)緩存的特點(diǎn),本文設(shè)計(jì)了一種聲納信號(hào)多級(jí)并行處理方法,協(xié)調(diào)各內(nèi)核公平競(jìng)爭(zhēng)資源的同時(shí),實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)暮笈_(tái)執(zhí)行和CPU的快速運(yùn)算。第1級(jí)采用基于時(shí)間切片的核間流水線設(shè)計(jì),克服多核并發(fā)訪問低帶寬存儲(chǔ)器帶來的程序阻塞;第2級(jí)采用基于ping-pong存儲(chǔ)的內(nèi)存數(shù)據(jù)傳輸與CPU并行設(shè)計(jì),完成數(shù)據(jù)在內(nèi)部存儲(chǔ)器間的高速后臺(tái)傳輸;第3級(jí)采用匯編指令流水線設(shè)計(jì),實(shí)現(xiàn)多周期指令的相互驅(qū)動(dòng),充分挖掘CPU的運(yùn)算能力。本文以聲納信號(hào)處理中較為復(fù)雜的二維相控方位濾波為例,介紹聲納信號(hào)多級(jí)并行處理流程,測(cè)試程序并行性能。
3.1任務(wù)分配策略
二維相控方位濾波的處理公式[1,8]為
式中:r為目標(biāo)到參考點(diǎn)的距離;θ為目標(biāo)的縱向方位角;β為目標(biāo)的橫向方位角;m、n分別為陣元在縱向和橫向方位的位置索引,如圖3所示橫向和縱向方位角。相比于參考點(diǎn),陣元(xn,ym,0)接收目標(biāo)(x,y,z)回波的延時(shí)為
式中:c為聲速。
根據(jù)聲納陣列信號(hào)的通道獨(dú)立性和(2)式,二維相控方位濾波的信號(hào)處理任務(wù)可進(jìn)行距離、橫向方位角、縱向方位角三維分割,只要每一維都采用均勻劃分,即可實(shí)現(xiàn)任務(wù)均衡。
3.2核間流水線設(shè)計(jì)
聲納信號(hào)陣元域的數(shù)據(jù)量非常大,只能存儲(chǔ)在容量較大的DDR3中。由前面的介紹可知,來自不同核心的DDR3訪存請(qǐng)求存在嚴(yán)重的競(jìng)爭(zhēng)關(guān)系,本文設(shè)計(jì)了一種基于時(shí)間切片的核間流水線方法,控制8個(gè)核心輪流訪存DDR3.首先將DDR3中的任務(wù)數(shù)據(jù)均分給8個(gè)C66x核心,每個(gè)核心進(jìn)一步劃分為更小的任務(wù)數(shù)據(jù),使得每個(gè)任務(wù)數(shù)據(jù)傳輸僅占用很小的時(shí)間切片。然后通過設(shè)置和判讀進(jìn)程間通信中斷生成寄存器,控制8核輪流訪存目的存儲(chǔ)器,CPU運(yùn)算填充等待訪存間隙,基于時(shí)間切片的核間流水線設(shè)計(jì)如圖4所示。
圖3 相控方位濾波的橫向和縱向方位角Fig.3 Horizontal and longitudinal azimuth angles of phased azimuth filter
圖4 基于時(shí)間切片的核間流水線設(shè)計(jì)Fig.4 Multicorepipelinedesignbasedontimeslice
將陣元域數(shù)據(jù)由DDR3傳輸至MSMS,每核256MB,在自由競(jìng)爭(zhēng)和核間流水線設(shè)計(jì)條件下,傳輸耗時(shí)的100次統(tǒng)計(jì)平均如圖5所示。由圖5可知,自由競(jìng)爭(zhēng)條件下,數(shù)據(jù)傳輸耗時(shí)遠(yuǎn)遠(yuǎn)大于核間流水線設(shè)計(jì),CPU容易因等待數(shù)據(jù)而出現(xiàn)較長(zhǎng)時(shí)間的程序阻塞。因此采用核間流水線設(shè)計(jì),可以避免多EDMA并發(fā)訪問存儲(chǔ)器帶來的總線競(jìng)爭(zhēng),既能夠全帶寬訪存DDR3,又克服了多內(nèi)核競(jìng)爭(zhēng)引起的程序阻塞,可以兼顧公平和高效。
圖5 數(shù)據(jù)從DDR3到MSMS傳輸耗時(shí)Fig.5 Time consuming of data transmission from DDR3 to MSMS
3.3內(nèi)存數(shù)據(jù)傳輸與CPU運(yùn)算并行設(shè)計(jì)
C6678DSP中MSMS接口帶寬64GB/s,LL2S接口帶寬為16GB/s,因此MSMS到LL2S的訪存速度非常快,能夠允許多個(gè)EDMA通道同時(shí)訪存。MSMS工作在1/3CPU主頻,LL2S工作在1/2CPU主頻,且LL2S可以自動(dòng)完成內(nèi)存一致性維護(hù),所以CPU對(duì)LL2S的訪存效率更高。因此,進(jìn)一步設(shè)計(jì)了基于ping-pong存儲(chǔ)的內(nèi)存數(shù)據(jù)傳輸與CPU并行方法,通過ping-pong存儲(chǔ)使EDMA和CPU同一時(shí)刻訪存不同的存儲(chǔ)區(qū)間,從而將數(shù)據(jù)在MSMS和LL2S之間的后臺(tái)傳輸與CPU運(yùn)算并行。如圖6所示基于ping-pong存儲(chǔ)的數(shù)據(jù)傳輸與CPU運(yùn)算并行設(shè)計(jì),該方法的實(shí)現(xiàn)步驟為:
1)各核心分別在LL2S中開辟ping-pong緩存區(qū),EDMA將數(shù)據(jù)從MSMS傳輸?shù)絃L2S的ping緩存,數(shù)據(jù)傳輸完成但暫不處理,而是啟動(dòng)EDMA將數(shù)據(jù)后臺(tái)傳輸至pong緩存,不等待數(shù)據(jù)傳輸結(jié)束。
2)等待ping傳輸結(jié)束,如果結(jié)束則對(duì)ping內(nèi)存數(shù)據(jù)進(jìn)行處理,否則等待直至傳輸結(jié)束后CPU再執(zhí)行處理程序。
3)ping處理完成后讀出,但不等待ping讀出結(jié)束,而是使讀出結(jié)束自動(dòng)觸發(fā)ping的讀入中斷服務(wù)程序。
4)等待pong傳輸結(jié)束,如果結(jié)束則對(duì)pong內(nèi)存數(shù)據(jù)進(jìn)行處理,否則等待直至傳輸結(jié)束后CPU再執(zhí)行處理程序。
5)pong處理完成后讀出,但不等待pong讀出結(jié)束,而是使pong讀出結(jié)束自動(dòng)觸發(fā)pong的讀入中斷服務(wù)程序,程序返回到步驟2.
6)循環(huán)結(jié)束,依次等待ping-pong傳輸結(jié)束,同時(shí)CPU完成相應(yīng)數(shù)據(jù)的處理。
采用基于ping-pong存儲(chǔ)的數(shù)據(jù)傳輸與CPU運(yùn)算并行設(shè)計(jì),可在后臺(tái)將待處理數(shù)據(jù)從MSMS傳輸?shù)皆L存性能更好的LL2S,該方法既可以避免人工進(jìn)行Cache一致性維護(hù),簡(jiǎn)化程序,又不占用CPU處理時(shí)間。圖7是程序采用常規(guī)串行設(shè)計(jì)和數(shù)據(jù)傳輸與CPU運(yùn)算并行設(shè)計(jì),各核完成聲納回波數(shù)據(jù)二維相控搜索耗時(shí)的100次統(tǒng)計(jì)平均。由圖7可知,采用數(shù)據(jù)傳輸與CPU運(yùn)算并行設(shè)計(jì),數(shù)據(jù)傳輸被完全并入CPU運(yùn)算耗時(shí),數(shù)據(jù)傳輸不增加程序開銷。
3.4匯編指令流水線設(shè)計(jì)
C66xCPU有兩組完全并行的處理通路A和B,每組通路有L、S、M、D4個(gè)獨(dú)立的功能單元。每時(shí)鐘周期,CPU可以讀取一個(gè)指令包,每個(gè)指令包最多可含有8條32位指令,只要功能單元不沖突,同一包內(nèi)的指令完全并行。但大部分C66x匯編指令的執(zhí)行需要多個(gè)時(shí)鐘周期,需要空等待指令NOP的驅(qū)動(dòng)。指令的多周期性極大地限制了CPU運(yùn)算能力的發(fā)揮。
本文采用指令并行和相互驅(qū)動(dòng)的匯編指令流水線設(shè)計(jì)方法,開發(fā)求和、復(fù)乘、濾波、取共軛等矢量算法函數(shù)。通過指令排流水盡可能地增大指令包內(nèi)的指令個(gè)數(shù),使一個(gè)NOP驅(qū)動(dòng)更多的指令,然后進(jìn)一步利用指令包互相填充延遲間隙,避免使用NOP指令驅(qū)動(dòng),以實(shí)現(xiàn)多次迭代的并列執(zhí)行,實(shí)現(xiàn)C66x CPU的滿負(fù)荷運(yùn)算。
圖6 基于ping-pong存儲(chǔ)的數(shù)據(jù)傳輸與CPU運(yùn)算并行設(shè)計(jì)Fig.6 Parallel processing design of data transmission and CPU computation based on ping-pong memory
綜合采用上文所述的并行處理方法,控制8核流水線訪問外存DDR3,以避免并發(fā)訪問引起程序阻塞,控制EDMA和CPU互斥訪問內(nèi)存空間,以降低內(nèi)存數(shù)據(jù)傳輸耗時(shí),控制匯編指令相互驅(qū)動(dòng),以提高CPU使用率,在一臺(tái)僅擁有8片C6678DSP的信號(hào)處理機(jī)上開發(fā)了二維相控方位濾波的實(shí)時(shí)處理軟件。
組織海上試驗(yàn),以驗(yàn)證基于本文多級(jí)并行處理方法開發(fā)的二位相控方位濾波軟件的實(shí)時(shí)性和可靠性。首先在某海域用條石作為配重,布放了一個(gè)浮球目標(biāo),然后進(jìn)行實(shí)時(shí)掃海試驗(yàn)。試驗(yàn)結(jié)果表明,該實(shí)時(shí)處理軟件在15kn高航速下,仍可以實(shí)現(xiàn)每秒對(duì)32×32元面陣完成64(方位)×64(俯仰)× 8192(距離)共32兆像素點(diǎn)的實(shí)時(shí)聚焦成像,獲得清晰的浮球及其配重石塊的三維圖像。說明該處理軟件可以以較小的硬件規(guī)模,突破大數(shù)據(jù)率聲納強(qiáng)實(shí)時(shí)成像的難題。浮球及石塊三維成像的試驗(yàn)效果如圖8所示,懸浮小球清晰可見,配重條石輪廓分明。
圖7 順序處理和并行設(shè)計(jì)方式下相控方位濾波耗時(shí)Fig.7 Time consumed by phased azimuth filter with serial design and parallel processing design
圖8 浮球及條石的三維成像效果Fig.8 Sonar image of suspended ball and rectangle stone
本文設(shè)計(jì)了一種基于C6678多核DSP的聲納信號(hào)多級(jí)并行處理方法,并以聲納中較為復(fù)雜的二維相控濾波為例,逐級(jí)測(cè)試并行效果。測(cè)試結(jié)果表明:該方法通過控制8核流水線訪問DDR3外存,可以避開外存總線競(jìng)爭(zhēng),實(shí)現(xiàn)外存數(shù)據(jù)的全帶寬讀取與運(yùn)算的并行;通過控制EDMA與CPU互斥訪問內(nèi)存,可以實(shí)現(xiàn)內(nèi)存數(shù)據(jù)傳輸?shù)牧汩_銷;通過匯編語(yǔ)言的相互驅(qū)動(dòng),可以實(shí)現(xiàn)CPU的滿負(fù)荷運(yùn)算。因此,本文方法有利于突破大數(shù)據(jù)率聲納高集成度和強(qiáng)實(shí)時(shí)性的難題。海上試驗(yàn)表明,采用本文多級(jí)并行處理方法開發(fā)的實(shí)時(shí)處理系統(tǒng),穩(wěn)定可靠,且具有集成度高和實(shí)時(shí)性強(qiáng)的優(yōu)點(diǎn),獲得了水中浮球和配重條石清晰的實(shí)時(shí)成像效果,證明本文方法具有較高的工程應(yīng)用價(jià)值。
(References)
[1] 李啟虎.進(jìn)入21世紀(jì)的聲納技術(shù)[J].應(yīng)用聲學(xué),2002,21(1):13-18. LI Qi-hu.Sonar technology in entering the 21st century[J].Applied Acoustics,2002,21(1):13-18.(in Chinese)
[2] 王磊,劉道福.片上多核處理器共享資源分配與調(diào)度策略研究綜述[J].計(jì)算機(jī)研究與發(fā)展,2013,50(10):2212-2227. WANG Lei,LIU Dao-fu.Survey on partitioning and scheduling policies of shared resources in chip multiprocess[J].Journal of Computer Research and Development,2013,50(10):2212-2227.(in Chinese)
[3] 袁琪,楊康.大點(diǎn)數(shù)FFT算法C6678多核DSP的并行實(shí)現(xiàn)[J].電子測(cè)量技術(shù),2015,38(2):74-80. YUAN Qi,YANG Kang.Implementation of large points FFT based on C6678 multi-core DSP[J].Electronic Measurement Technology,2015,38(2):74-80.(in Chinese)
[4] Suh G,Devadas S,Rudolph L.Dynamic partitioning of shared cache memory[J].The Journal of Supercomputing,2004,28(1): 7-26.
[5] 周本海,喬建忠.基于多核處理器的動(dòng)態(tài)共享緩存分配算法[J].東北大學(xué)學(xué)報(bào):自然科學(xué)版,2011,32(1):44-47. ZHOU Ben-hai,QIAO Jian-zhong.Research on the dynamic allocation algorithm of shared cache for multicore processor[J].Journal of Northeastern University:Natural Science,2011,32(1): 44-47.(in Chinese)
[6] Texas Instruments.TMS320C6678 multicore fixed and floatingpoint digital signal processor data manual[M].Texas:Texas Instruments,2012.
[7] Texas Instruments.Keystone architecture multicore shared memory controller(MSMC)user guide[M].Texas:Texas Instruments,2012.
[8] élias G.Source localization with a two-dimensional focused array: optimal signal processing for a cross shaped array[C]∥The 1995 International Congress on Noise Control Engineering.Newport Beach,CA,US:International Institute of Noise Control Engineering,1995:1775-1778.
Sonar Signal Processing Parallel Design Based on C6678 Multicore DSP
JI Xia,CONG Wei-hua,DU Shuan-ping
(State Key Laboratory of Sonar Technology,Hangzhou Applied Acoustics Research Institute,Hangzhou 310012,Zhejiang,China)
In parallel processing system with multicore,it is hard to turn the improvement of hardware into the efficiency of software substantially for the drastic competition of shared resources on chip.To solve the problem,a multistage parallel sonar signal processing method based on C6678 multicore digital signal processor(DSP)is presented by scheduling memory access and multicore synchronization,which includes multicore pipeline design,parallel processing design of data transmission and CPU computation,and assembly code pipeline design.The multi-parallel stage method is introduced by taking two-dimension phased azimuth filter as an example.Performance of each stage above is tested,and a real-time processing software is developed.Test result shows that the proposed method can parallel memory access and CPU computation effectively,and the software developed based on the proposed method works efficiently. In a high speed sea trial,the sharp images of a suspension ball and its counterweight rectangle stone were got by the real-time processing system.The multistage parallel processing method is of great application value in engineering.
acoustics;sonar;phased azimuth filter;multicore DSP;parallel processing
TB566
A
1000-1093(2016)08-1476-06
10.3969/j.issn.1000-1093.2016.08.020
2015-05-18
武器裝備預(yù)先研究項(xiàng)目(7301303);
汲夏(1986—),男,博士研究生。E-mail:ljx060721@163.com;杜栓平(1970—),男,研究員,博士生導(dǎo)師。E-mail:skldusp@tom.com