《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于多核DSP的超聲成像處理算法的并行實現(xiàn)
基于多核DSP的超聲成像處理算法的并行實現(xiàn)
來源:電子技術(shù)應(yīng)用2013年第6期
肖 亮,張學(xué)健
北京化工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,北京100029
摘要: 基于TI公司的多核DSP-TMS320C6678對黑白超聲成像的中端(Mid-End)處理算法進(jìn)行并行設(shè)計與實現(xiàn),。介紹了多核DSP編程實現(xiàn)算法所用到的關(guān)鍵技術(shù):程序并行設(shè)計與第三代增強(qiáng)型直接內(nèi)存存取(EDMA3),,并重點分析了核間通信技術(shù)。根據(jù)算法的特點選用數(shù)據(jù)流模式對其進(jìn)行了任務(wù)規(guī)劃并分配到3個DSP核上執(zhí)行,核間通信采用消息隊列方案。實驗結(jié)果證明了采用消息隊列方案進(jìn)行核間通信,、實現(xiàn)多核并行的有效性。
中圖分類號: TP751.1
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)06-0027-04
Parallel implementation of processing algorithm of ultrasound imaging based on multi-core DSP
Xiao Liang,,Zhang Xuejian
College of Information Science and Technology,,Beijing University of Chemical Technology,,Beijing 100029,,China
Abstract: The parallel design and programming of Mid-End processing algorithm of B-mode ultrasound imaging based on TI’s multi-core DSP-TMS320C6678 is discussed in this article. The paper introduces key technologies used in the multi-core DSP programming for the algorithm, including task parallelism and the 3rd generation EDMA3(Enhanced Direct Memory Access). Particularly, the IPC(Inter-Processor-Communication) technique is analyzed in detail. The algorithm, according to its characteristics, is divided into several components using task planning, and is assigned to 3 cores to be executed separately in view of Data-Flow model. The IPC is accomplished by utilizing MessageQ scheme. The effectiveness of MessageQ scheme to accomplish IPC and task parallelism is validated through experiments.
Key words : ultrasound imaging;multi-core DSP,;IPC,;MessageQ;EDMA3

    當(dāng)前,,超聲成像技術(shù)在臨床診斷中得到了廣泛的應(yīng)用,,隨著技術(shù)的發(fā)展,對圖像分辨率與成像實時性的要求越來越高[1],,現(xiàn)有的單核DSP已經(jīng)不能滿足其信號處理需求,。2010年,TI公司推出了采用KeyStone架構(gòu)的TMS320C66x系列多核DSP,。每個C66x核主頻最高可達(dá)1.25 GHz,,可實現(xiàn)每秒40 GMAC的定點運(yùn)算或20 GFLOP的浮點運(yùn)算;片內(nèi)有4 MB的共享內(nèi)存(MSMCSRAM),,具有多種高速互聯(lián)接口,。并且,TI公司提供了具有任務(wù)調(diào)度,、資源管理等功能的SYS/BIOS實時操作系統(tǒng),,可大大縮短開發(fā)周期。

    本研究基于多核DSP-TMS320C6678對TI公司提供的黑白超聲成像的中端(Mid-End)處理算法進(jìn)行了并行設(shè)計與實現(xiàn)(前端的波束合成與數(shù)字解調(diào)一般在FPGA中完成[2]),,以充分利用多核DSP的處理性能與C語言編程的靈活性,。
    文中介紹了多核DSP編程實現(xiàn)算法用到的3項關(guān)鍵技術(shù):程序并行設(shè)計,、核間通信和第三代增強(qiáng)型直接內(nèi)存存取技術(shù)(EDMA3),著重對核間通信技術(shù)進(jìn)行了分析,,包括通知方案與消息隊列方案,。為高效地實現(xiàn)超聲成像算法,首先對算法在單個DSP核上運(yùn)行的性能進(jìn)行了評估,,然后根據(jù)算法各模塊的時間消耗和數(shù)據(jù)依賴關(guān)系選擇了數(shù)據(jù)流模式進(jìn)行任務(wù)規(guī)劃,,分配到3個DSP核上執(zhí)行。采用消息隊列方案來實現(xiàn)各DSP核間的通知和同步,,使用EDMA3實現(xiàn)外部存儲器(DDR3)與共享內(nèi)存之間的數(shù)據(jù)交換,。
    實驗結(jié)果表明,超聲成像處理算法在3個DSP核上運(yùn)行的時間消耗為在單個DSP核上時間消耗的42%,,DSP每秒鐘可處理約40幀尺寸為512×1 024的圖像,,這表明多核DSP的并行處理能夠滿足超聲成像的數(shù)據(jù)處理需求。實驗結(jié)果證明了采用消息隊列方案進(jìn)行核間通信,、實現(xiàn)多核并行的有效性,。
  
2 多核DSP處理技術(shù)
    為了實現(xiàn)TMS320C6678的多核處理,需要將算法分解為多個任務(wù),,分配到多個DSP核上并行執(zhí)行,。以下是實現(xiàn)過程中用到的幾項關(guān)鍵技術(shù)。
2.1 程序并行設(shè)計
    程序并行設(shè)計首先對應(yīng)用進(jìn)行任務(wù)規(guī)劃,,將一個應(yīng)用分解為多個任務(wù),,然后根據(jù)一定的任務(wù)分配模式分配到相應(yīng)的DSP核上執(zhí)行[3]。多核程序開發(fā)中兩種常用的任務(wù)分配模式如下,。
    (1)主從模式
    主核作為控制核進(jìn)行任務(wù)分配,、調(diào)度和觸發(fā)[4]。該模式適用于含有多個獨立任務(wù)的應(yīng)用,。主核與從核間需要進(jìn)行頻繁地消息通信,,從核之間不需要進(jìn)行同步和數(shù)據(jù)傳遞。
    (2)數(shù)據(jù)流模式
    各DSP核以流水線的方式按照數(shù)據(jù)處理的流程執(zhí)行各任務(wù),。該模式適用于分布式控制和數(shù)據(jù)處理的應(yīng)用,,這類應(yīng)用中通常包含多個復(fù)雜的算法模塊,單個DSP核不能滿足需求,,且各算法模塊間有很強(qiáng)的數(shù)據(jù)依賴關(guān)系,。
2.2 核間通信
    TI公司提供了用于多核以及多核與外設(shè)之間通信的IPC庫[5],其支持下列兩種常用的通信方案,。
    (1)通知方案
    通知方案(Notify)采用對目標(biāo)核產(chǎn)生中斷的方式實現(xiàn)DSP核間通信,。其一次傳遞的數(shù)據(jù)為固定的32 bit,適合在多核間執(zhí)行簡單的同步操作,。其配置方式如圖2所示[5],。

    通知模塊(Notify Module)用于對通知方案中用到的資源進(jìn)行靜態(tài)配置,。多核處理器模塊(MultiProc Module)用于配置需要啟用的DSP核個數(shù)及其名稱。需要在SYS/BIOS操作系統(tǒng)的靜態(tài)配置文件(*.cfg)中進(jìn)行如下配置:
    var Notify = xdc.useModule ('ti.sdo.ipc.Notify');
    var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
    var nameList =["CORE0", "CORE1","CORE2",……];
    MultiProc.setConfig (null, nameList);
    在程序中,,Ipc_start()函數(shù)用于在各個DSP核之間建立連接,;Notify_registerEvent()函數(shù)將每個DSP核使用的事件號與相應(yīng)的回調(diào)函數(shù)對應(yīng)起來;在DSP核執(zhí)行過程中需要通知其他核執(zhí)行相應(yīng)操作時調(diào)用函數(shù)Notify_sendEvent(),,該函數(shù)使用中斷通知目標(biāo)核執(zhí)行與事件號對應(yīng)的回調(diào)函數(shù),。
    (2)消息隊列方案
    消息隊列方案(MessageQ)通過在共享內(nèi)存中開辟消息隊列的方法實現(xiàn)DSP核間的通信,各DSP核通過輪詢專屬消息隊列的方式來完成消息的獲取,,可以滿足DSP核同步,、核間數(shù)據(jù)傳輸?shù)榷喾N需求。該方案支持可變長數(shù)據(jù)的發(fā)送和接收,;每個DSP核可擁有多個寫消息端,,即可同時向多個DSP核發(fā)送消息。其配置方式如圖3所示,。

    消息隊列模塊(MessageQ Module)用于對消息隊列方案中用到的資源進(jìn)行靜態(tài)配置,。共享區(qū)模塊(SharedRegion Module)用于開辟用來存放消息隊列的共享區(qū)域。需要在SYS/BIOS操作系統(tǒng)的靜態(tài)配置文件(*.cfg)中進(jìn)行如下配置:
    var MessageQ = xdc.useModule ('ti.sdo.ipc.MessageQ');
    var Ipc = xdc.useModule ('ti.sdo.ipc.Ipc');
    var MultiProc = xdc.useModule ('ti.sdo.utils.MultiProc');
    var nameList = ["CORE0", "CORE1","CORE2",……];
    MultiProc.setConfig (null, nameList);
    var SharedRegion=xdc.useModule('ti.sdo.ipc.SharedRegion');
    var SHAREDMEM = 0x0C000000;
    var SHAREDMEMSIZE = 0x00200000;
    SharedRegion.setEntryMeta(0,
        { base: SHAREDMEM,
          len:  SHAREDMEMSIZE,
          ownerProcId: 0,
          isValid: true,
          name: "INTERNAL_SHARED_MEM",});
    在主程序中,,對MessageQ模塊進(jìn)行如下動態(tài)配置:
    ①使用Ipc_start()函數(shù)在各個DSP核間建立連接,;
    ②使用MessageQ_create()創(chuàng)建本地消息隊列;
    ③使用函數(shù)MessageQ_registerHeap()在消息隊列與由SharedRegion模塊開辟的共享區(qū)之間建立連接,;
    ④使用函數(shù)MessageQ_open()打開由接收核創(chuàng)建的消息隊列,。
    在程序執(zhí)行過程中,,對MessageQ模塊中函數(shù)的調(diào)用流程如圖4所示[5],。

    DSP核發(fā)送消息時,使用函數(shù)MessageQ_alloc()在共享區(qū)分配消息空間,,然后使用函數(shù)MessageQ_put()將消息發(fā)送到接收核的消息隊列,。當(dāng)DSP核接收消息時,使用函數(shù)MessageQ_get()獲取本地消息隊列中的消息,,然后調(diào)用函數(shù)MessageQ_free()或MessageQ_delete()刪除該消息,。通信完成后,調(diào)用MessageQ_close()關(guān)閉消息隊列,。
2.3 EDMA3
    EDMA3是第三代增強(qiáng)型直接內(nèi)存存取技術(shù),,支持一維(數(shù)組)傳輸、二維(數(shù)據(jù)幀)傳輸和三維(數(shù)據(jù)塊)傳輸,,這3種傳輸都可通過一次CPU觸發(fā)(寫入相應(yīng)寄存器)或事件觸發(fā)完成,。
    這里介紹實際使用的二維傳輸。數(shù)據(jù)幀中的每個元素為一個一維數(shù)組,,可用于從大的數(shù)據(jù)塊中等間隔地提取子幀,。例如,,可以將圖像數(shù)據(jù)從逐行排列的外部存儲器傳輸?shù)絻?nèi)部緩沖區(qū)以實現(xiàn)隔行排列。為了實現(xiàn)二維傳輸,,需要正確地配置參數(shù)RAM,,其結(jié)構(gòu)如圖5所示。

 

 

    由表2可知,,消息隊列方案的通信速度稍快于通知方案,,且本設(shè)計中程序計算的中間結(jié)果存儲在內(nèi)部共享存儲中,需要使用核間通信傳輸中間結(jié)果的指針,,通知方案的32 bit固定負(fù)載不能滿足需求,。因此,本設(shè)計選擇消息隊列方案實現(xiàn)核間通信,。
3.3 超聲成像算法的多核實現(xiàn)
    為了平衡各DSP核任務(wù)的時間消耗,,根據(jù)表1的評估結(jié)果,將包絡(luò)檢測算法放在CORE0核執(zhí)行,,將動態(tài)壓縮算法放在CORE1核執(zhí)行,,將頻率復(fù)合和行濾波算法合并到一起放在CORE2核上執(zhí)行。因此,,本設(shè)計需要使用TMS320C6678的3個DSP核以流水方式進(jìn)行數(shù)據(jù)處理,。3個DSP核間的數(shù)據(jù)流水和消息傳遞如圖6所示。

    以Core1為例,,其程序基本流程為:
    ①初始化消息隊列方案用到的資源,;
    ②使用MessageQ_get()函數(shù)等待CORE0傳遞來的消息;
    ③用動態(tài)壓縮算法處理從CORE0導(dǎo)入的數(shù)據(jù),;
    ④使用MessageQ_put()函數(shù)向CORE2發(fā)送消息,;
    ⑤使用MessageQ_get()函數(shù)等待下一個由CORE0傳遞來的消息。
    經(jīng)驗證,,在一次處理8條掃描線的情況下,,3個DSP核各自運(yùn)行的時間如表3所示。

    在對數(shù)據(jù)進(jìn)行流水處理時,,任務(wù)完成所需時間等于耗時最多的CORE0所用時間,。因此,在3個DSP核上運(yùn)行的時間消耗為在單個DSP核上時間消耗的42%,。在這種并行設(shè)計下,,DSP每秒鐘可以處理約40幀尺寸為512×1 024的圖像。
    本設(shè)計基于TI公司的多核DSP-TMS320C6678對黑白超聲成像的中端處理算法進(jìn)行了并行設(shè)計與實現(xiàn),。根據(jù)數(shù)據(jù)流模式對超聲成像算法進(jìn)行了任務(wù)規(guī)劃,,將各模塊分配到3個DSP核上執(zhí)行。使用高效的消息隊列方案實現(xiàn)核間通信,,并使用EDMA3實現(xiàn)DSP與外部存儲器之間的快速數(shù)據(jù)交換,。實驗證明了采用消息隊列方案進(jìn)行核間通信,、實現(xiàn)多核并行的有效性。測試結(jié)果表明,,基于多核DSP的并行架構(gòu)具有強(qiáng)大的數(shù)據(jù)處理能力,,可以為超聲成像的實現(xiàn)提供有力的支持。
參考文獻(xiàn)
[1] 王艷丹,,高上凱.超聲成像新技術(shù)及其臨床應(yīng)用[J].北京生物醫(yī)學(xué)工程,,2006(9):553-555.
[2] Texas Instruments Inc.Signal processing overview of ultra sound systems for medical imaging[Z].2008.
[3] 吳灝,肖吉陽,,范紅旗,,等.TMS320C6678多核DSP的核間通信方法[J].電子技術(shù)應(yīng)用,2012,,38(9):12-14.
[4] Texas Instruments Inc.Multicore programming guide[Z].2012.
[5] Texas Instruments Inc.SYS/BIOS inter-processor communication(IPC) user guide[Z].2012.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。