鄭武興,王春平,付強(qiáng)
(軍械工程學(xué)院 電子與光學(xué)工程系,石家莊 050003)
多核DSP并行處理的核間通信與編程技巧
鄭武興,王春平,付強(qiáng)
(軍械工程學(xué)院 電子與光學(xué)工程系,石家莊 050003)
本文以圖像為基礎(chǔ),在TMDSEVM6678L實(shí)現(xiàn)并行處理設(shè)計(jì),并分析其性能。文中主要介紹了核間通信的幾種常用方法,以及多核編程的基本技巧。通過(guò)網(wǎng)頁(yè)實(shí)現(xiàn)用戶交互,并對(duì)網(wǎng)頁(yè)數(shù)據(jù)傳遞進(jìn)行分析,提供數(shù)據(jù)解析思路。分析比較數(shù)據(jù)的讀取速度,采用合適的數(shù)據(jù)采集方法提高仿真效率。最后,統(tǒng)計(jì)不同數(shù)據(jù)量的處理時(shí)間,實(shí)驗(yàn)結(jié)果表明,采用消息機(jī)制進(jìn)行核間通信實(shí)現(xiàn)并行處理具有實(shí)用性以及適用性。
TMS320C6678;并行處理;核間通信;消息機(jī)制
引 言
DSP是對(duì)數(shù)字信號(hào)進(jìn)行高速實(shí)時(shí)處理的專用處理器,因此,在數(shù)字化發(fā)展中,DSP憑借其高性能和軟件可編程等特點(diǎn),使之在電子工業(yè)領(lǐng)域的應(yīng)用迅速增長(zhǎng)。隨著應(yīng)用領(lǐng)域的擴(kuò)大以及終端產(chǎn)品性能的日益豐富,人們對(duì)其性能、功耗和成本也提出了越來(lái)越高的要求,這使得DSP廠商開始在單一硅片上集成更多的處理器內(nèi)核以適應(yīng)用戶需求,于是多核DSP應(yīng)運(yùn)而生。DSP在電子工業(yè)領(lǐng)域起著舉足輕重的作用,成為航空電子與國(guó)防、通信系統(tǒng)、機(jī)器視覺、嵌入式和云分析、高性能計(jì)算、多媒體基礎(chǔ)設(shè)施、醫(yī)療成像、測(cè)試和測(cè)量、監(jiān)控和安全、軟件定義無(wú)線電(SDR)、消費(fèi)類電子產(chǎn)品等領(lǐng)域的基礎(chǔ)器件[1]。
在多核處理器的使用過(guò)程中,最重要的就是要學(xué)會(huì)如何分配各核的工作,掌握各核之間的通信機(jī)制,以及各核之間的數(shù)據(jù)交流。本文以TI公司的TMDSEVM6678L八核處理器為平臺(tái),介紹典型核間通信機(jī)制以及多核編程方法。通過(guò)對(duì)單幀圖像處理進(jìn)行多核程序設(shè)計(jì),為后續(xù)視頻跟蹤算法的多核程序設(shè)計(jì)提供思路。
TI公司提供了允許在多處理器環(huán)境和通信處理器之間的通信外設(shè)包、IPC組件包,它是SYS/BIOS處理核間通信的組件。此通信包括消息傳遞、數(shù)據(jù)流和鏈表,這些工作透明地在兩個(gè)單處理器和多處理器之間配置。
1.1 最小使用
這種方案使用通知驅(qū)動(dòng)程序來(lái)執(zhí)行核間的通知(Notification),通過(guò)Notify模塊來(lái)實(shí)現(xiàn)。這種方式最適合處理核間的簡(jiǎn)單同步,而無(wú)法處理復(fù)雜的消息傳遞,當(dāng)前核可以發(fā)送一個(gè)通知給另一遠(yuǎn)程核讓其執(zhí)行任務(wù),而后遠(yuǎn)程核會(huì)反饋任務(wù)完成信號(hào)。這種通知攜帶的數(shù)據(jù)非常小,不超過(guò)32位,所以稱為最小使用。其配置方式如圖1所示[2]。
圖1 最小使用配置圖
多核處理器模塊的靜態(tài)配置在SYS/BIOS操作系統(tǒng)的配置文件(*.cfg)中進(jìn)行。在這種情況下,用戶通過(guò)API函數(shù)調(diào)用Notify模塊,比如用戶可以通過(guò)Notify_registerEvent()給特定事件動(dòng)態(tài)注冊(cè)回調(diào)函數(shù),該函數(shù)將事件注冊(cè)到指定核,同時(shí)注冊(cè)到指定中斷號(hào)。通過(guò)Notify_sendEvent()函數(shù)給某個(gè)特定核傳遞一個(gè)事件,當(dāng)該函數(shù)被調(diào)用時(shí),所注冊(cè)的回調(diào)函數(shù)開始執(zhí)行。由于一個(gè)通知所攜帶的信息是極少的,所以只能給處理器發(fā)送一個(gè)事件號(hào),而這個(gè)事件號(hào)所代表的回調(diào)函數(shù)決定之后的動(dòng)作。另外一些數(shù)據(jù)以函數(shù)參數(shù)方式也可以被送出。需要注意的是,同一個(gè)中斷號(hào)可以注冊(cè)多個(gè)事件,同一個(gè)事件可以有多個(gè)回調(diào)函數(shù)或者多個(gè)宿主,事件被觸發(fā)后所有宿主都會(huì)被喚醒;事件是有優(yōu)先級(jí)的,事件號(hào)越小優(yōu)先級(jí)越高,事件0的優(yōu)先級(jí)最高,當(dāng)多個(gè)事件被觸發(fā),優(yōu)先級(jí)最高的會(huì)最先響應(yīng)。
1.2 強(qiáng)大但易用的消息機(jī)制
MessageQ模塊,即消息隊(duì)列(Message Queue),有些情況下利用MessageQ模塊來(lái)傳遞消息。其配置方式如圖2所示。
圖2 強(qiáng)大但易用的消息機(jī)制配置圖
MessageQ同Notify模塊一樣,也是用于多核之間的通信,不過(guò)不同的是Notify模塊更加側(cè)重于通知,其只能傳遞一個(gè)參數(shù),而MessageQ卻可以傳遞可變長(zhǎng)度(一般超過(guò)32位)的消息結(jié)構(gòu)體,對(duì)于多個(gè)參數(shù),數(shù)據(jù)打包更加適用,更側(cè)重于傳遞消息。另外不同線程間的消息是獨(dú)立的,例如對(duì)于每個(gè)MessageQ來(lái)說(shuō),存在一個(gè)讀者卻可能有多個(gè)寫者。在這種通信方案下,只需要配置MultiProc和SharedRegion模塊就可以了,而Ipc_start()函數(shù)將自動(dòng)實(shí)現(xiàn)上面其他模塊的配置。Ipc_start()的調(diào)用必須在任何模塊的調(diào)用之前,即主函數(shù)最前面。它需要在SYS/BIOS 操作系統(tǒng)的配置文件(*.cfg )進(jìn)行靜態(tài)配置,還要在主程序中對(duì)MessageQ 模塊進(jìn)行動(dòng)態(tài)配置。
MessageQ模塊的主要特點(diǎn):
① 變長(zhǎng)消息傳遞,一般超過(guò)32位;
② 消息可以被任何類型的線程發(fā)送和接收;
③ 其消息的傳遞都是通過(guò)操作消息隊(duì)列來(lái)實(shí)現(xiàn)的;
④ 接收消息允許超時(shí)(等待),當(dāng)?shù)却龝r(shí)間timeout為0時(shí),確定消息已經(jīng)接收;
⑤ 每個(gè)消息隊(duì)列可以有多個(gè)寫者,但只能有一個(gè)讀者,而每個(gè)任務(wù)可以對(duì)多個(gè)消息隊(duì)列進(jìn)行讀寫;
⑥ 一個(gè)宿主在準(zhǔn)備接收消息時(shí),必須先創(chuàng)建消息隊(duì)列,而在發(fā)送消息前,需要打開預(yù)定的接收消息隊(duì)列;
消息被發(fā)送到消息隊(duì)列中,而讀者從消息隊(duì)列中讀取消息。每個(gè)寫者是發(fā)送消息到消息隊(duì)列的一個(gè)線程,每個(gè)讀者是從消息隊(duì)列接收消息的一個(gè)線程。DSP核發(fā)送消息前,使用函數(shù)MessageQ_alloc()在共享區(qū)域分配消息堆空間,然后使用函數(shù)MessageQ_put()將消息發(fā)送到接收核的消息隊(duì)列。當(dāng)DSP核接收消息時(shí),使用函數(shù)MessageQ_get()獲取本地消息隊(duì)列中的消息,然后調(diào)用函數(shù)MessageQ_free()或MessageQ_delete(),刪除該消息。通信完成后,調(diào)用MessageQ_close()關(guān)閉消息隊(duì)列。在程序執(zhí)行過(guò)程中,對(duì)MessageQ模塊中函數(shù)的調(diào)用流程如圖3所示[3]。
圖3 MessageQ模塊調(diào)用流程
1.3 核間的連接方法
通過(guò)配置*.cfg文件中的Ipc.ProcSync屬性,可以設(shè)置同步的核數(shù),它總共有三種模式。如果配置Ipc.ProcSync為Ipc.ProcSync_ALL,那么執(zhí)行Ipc_start()將會(huì)自動(dòng)連接和同步所有核,不需要再調(diào)用Ipc_attach()。如果配置Ipc.ProcSync為Ipc.ProcSync_PAIR,那么就必須調(diào)用Ipc_attach()手動(dòng)連接所需要同步的遠(yuǎn)程核。在Ipc_start()之后直接輸入Ipc_attach(coreID),coreID表示需要連接的核ID號(hào),如Ipc_attach(0)表示連接核0。手動(dòng)連接核時(shí),核的連接一定要按照核ID號(hào)從小到大的順序進(jìn)行,比如當(dāng)前核必須先連接核0,才能連接核1。另外,兩核之間的相互連接必須先滿足ID號(hào)小的先連接ID號(hào)大的,比如只有當(dāng)核0連接核1后,核1才能連接到核0。由于核的連接并不是一次就能成功,所以一般需要加一個(gè)循環(huán)等待的過(guò)程,一般使用方法如下:
while(Ipc_attach(coreID)<0)
{ Task_sleep(1); }
最后一種模式是配置為Ipc.ProcSync_NONE,當(dāng)用戶選擇這種模式時(shí),在被其他模塊設(shè)置為所需的對(duì)象之前,執(zhí)行Ipc_start()將不會(huì)同步任何處理器。用戶要謹(jǐn)慎使用這種模式,它一般用于應(yīng)用程序執(zhí)行自己的同步或者避免與IPC同步的一個(gè)潛在的死鎖情況。這種情況下,Ipc_start()的工作與Ipc.ProcSync_PAIR模式的情況完全一樣。解除核之間連接可以通過(guò)Ipc_detach()實(shí)現(xiàn),Ipc_detach()的使用方法與Ipc_attach()類似,這個(gè)步驟不是必須的。
以往主要通過(guò)提高硬件性能來(lái)提高處理速度,很少通過(guò)軟件來(lái)提高處理速度。隨著多核處理器的出現(xiàn),對(duì)程序員的編程能力要求更高,需要程序員對(duì)應(yīng)用程序合理分配,以充分發(fā)揮多核處理器的優(yōu)勢(shì)。
2.1 并行設(shè)計(jì)
并行設(shè)計(jì)首先要對(duì)任務(wù)的并行性進(jìn)行分析,然后根據(jù)其特點(diǎn)選擇合適的處理模型。通常主要有以下兩種模型。
(1) 主從模型
圖4 主從處理模型
主從模型屬于任務(wù)分發(fā)式,主核負(fù)責(zé)整個(gè)任務(wù)調(diào)度、數(shù)據(jù)分配與整合,其模型如圖4所示。這種情況一般代碼共享性比較高,主要通過(guò)拆分?jǐn)?shù)據(jù)來(lái)分配任務(wù),有些情況需要考慮數(shù)據(jù)拆分后再分析是否對(duì)結(jié)果造成影響,在最后的數(shù)據(jù)整合可能不是簡(jiǎn)單拼接,還需要進(jìn)一步處理。
(2) 數(shù)據(jù)流模型
數(shù)據(jù)流模型由數(shù)據(jù)觸發(fā)調(diào)度,初始數(shù)據(jù)一般由傳感器或者FPGA輸入接口提供。它的代碼共享性比較低,每個(gè)核使用各自的算法處理數(shù)據(jù),通過(guò)數(shù)據(jù)的處理流程形成流水線。這種模型向各個(gè)核均衡分配任務(wù),需要根據(jù)各個(gè)算法的處理時(shí)間來(lái)考慮各核所需要承擔(dān)的處理任務(wù),如果分配不當(dāng)就容易形成“木桶效應(yīng)”。當(dāng)前核的處理速度容易受前后核的影響,所以數(shù)據(jù)在核與核之間傳遞所形成的延遲時(shí)間是一個(gè)很大的挑戰(zhàn)。數(shù)據(jù)流處理模型如圖5所示。
圖5 數(shù)據(jù)流處理模型
2.2 緩存一致性
在TMS320C6678中,只有同一個(gè)核內(nèi)的L1D和L2SRAM的緩存內(nèi)容的一致性可以由硬件保證,這個(gè)過(guò)程不需要軟件參與[4]。L2中的內(nèi)容被更新時(shí),硬件保證相應(yīng)L1D中緩存的內(nèi)容也能及時(shí)更新。由于對(duì)功耗和延遲開銷的考慮,C66xx并不支持自動(dòng)的緩存一致,程序員需要手動(dòng)控制,通過(guò)軟件編程保持高速緩存一致性。在進(jìn)行每次寫入運(yùn)算時(shí)都需要立刻采取措施保證數(shù)據(jù)的一致性,否則不同核可能會(huì)看到不同的數(shù)據(jù),這樣會(huì)造成數(shù)據(jù)處理混亂,最終得到的數(shù)據(jù)結(jié)果不準(zhǔn)確。為此,TI提供了一套API函數(shù)以支持cache的一致性操作,包括緩存行無(wú)效(cache lineinvalidation)、緩存行寫回(cache line writeback)到存儲(chǔ)memory,以及回寫無(wú)效等操作。
2.3 代碼鏡像
應(yīng)用程序支持單獨(dú)鏡像和多鏡像。單獨(dú)鏡像的應(yīng)用程序在所有核之間共享一部分代碼和數(shù)據(jù)存儲(chǔ),這種情況允許所有核加載并運(yùn)行完全相同的應(yīng)用程序。如果運(yùn)行完全共享的代碼,只需要建立一個(gè)工程,同時(shí)只需要一個(gè)SYS/BIOS配置文件[5]。在多鏡像方案中,每個(gè)核運(yùn)行相互獨(dú)立且不相同的應(yīng)用程序,需要建立多個(gè)工程。這就要求給放在一個(gè)共享內(nèi)存區(qū)的所有代碼或數(shù)據(jù)分配唯一的地址區(qū)域,防止其他內(nèi)核訪問(wèn)相同的內(nèi)存區(qū)域。對(duì)于這種應(yīng)用,每個(gè)應(yīng)用程序的SYS/BIOS配置文件會(huì)調(diào)整內(nèi)存部分的位置,以確保多核不會(huì)訪問(wèn)到內(nèi)存重疊范圍。
本設(shè)計(jì)的硬件平臺(tái)為TI公司的TMDSEVM6678L開發(fā)板,程序開發(fā)環(huán)境為CCS5.2.1,采用瑞泰ICETEK-XDS200U通用開發(fā)系統(tǒng)進(jìn)行在線調(diào)試。
3.1 方案選擇
通知機(jī)制方案的實(shí)現(xiàn)代碼相對(duì)簡(jiǎn)單,除發(fā)送事件ID號(hào)外,還可選擇傳輸最大32位的整型數(shù)據(jù)負(fù)載,它的負(fù)載能力是十分有限的,其數(shù)據(jù)通信性能受到很大限制。在圖像處理過(guò)程中,各核之間所需要交流傳遞的數(shù)據(jù)量比較大,通知機(jī)制很難滿足此要求,實(shí)現(xiàn)難度大。而消息機(jī)制能通過(guò)消息結(jié)構(gòu)體封裝數(shù)據(jù)信息,負(fù)載能力比較強(qiáng),并且它具有較好的靈活性和適應(yīng)性,所以在此選用MessageQ方式進(jìn)行圖像多核并行處理設(shè)計(jì)。
3.2 基于MessageQ的程序設(shè)計(jì)
3.2.1 消息隊(duì)列相關(guān)操作
消息隊(duì)列模塊主要的操作有:配置消息模塊、創(chuàng)建消息隊(duì)列對(duì)象、打開消息隊(duì)列、分配消息堆空間、發(fā)送消息、接收消息、刪除消息對(duì)象等。消息機(jī)制進(jìn)行核間通信,詳細(xì)步驟以及注意事項(xiàng)如下:
(1) 配置消息模塊
用戶需要在*.cfg文件中配置消息模塊,通過(guò)以下配置使能消息模塊:
var MessageQ=xdc.useModule('ti.sdo.ipc.MessageQ');
它的屬性設(shè)置具體如下,以下是它的默認(rèn)值,如果不進(jìn)行設(shè)置就采用以下值:
MessageQ.maxNameLen=32; //消息序列名稱最大長(zhǎng)度
MessageQ.maxRuntimeEntries=10;// 可以被動(dòng)態(tài)創(chuàng)建的最大消息序列數(shù)
MessageQ.numHeaps=0;
MessageQ.tableSection=null;
(2) 創(chuàng)建消息隊(duì)列對(duì)象
接收核通過(guò)函數(shù)MessageQ_create(String name,MessageQ_Params *params)動(dòng)態(tài)創(chuàng)建消息隊(duì)列,它不支持靜態(tài)創(chuàng)建。一個(gè)消息隊(duì)列對(duì)象只存在于當(dāng)前核,不被其他核所共享。
(3) 打開消息隊(duì)列
發(fā)送核通過(guò)函數(shù)MessageQ_open(String name, MessageQ_QueueId *queueId)打開已被創(chuàng)建的消息隊(duì)列,如果成功將獲得queueId,并返回狀態(tài)值。
(4) 分配消息堆空間
消息被分配以后,它可以被發(fā)送到任何消息隊(duì)列。它需要通過(guò)函數(shù)MessageQ_alloc(UInt16 heapId,UInt32 size)來(lái)分配消息,一般為打包后的消息結(jié)構(gòu)體的大小。
(5) 發(fā)送消息
發(fā)送核首先打開被創(chuàng)建的消息隊(duì)列,然后將消息通過(guò)函數(shù)MessageQ_put(MessageQ_QueueId ueueId,MessageQ_Msg msg)發(fā)送到隊(duì)列中。
(6) 接收消息
接收核通過(guò)函數(shù)MessageQ_get(MessageQ_Handle handle,MessageQ_Msg *msg,UInt timeout)接收消息,timeout常設(shè)置為MessageQ_FOREVER,表示一直等待消息。
3.2.2 多核并行處理設(shè)計(jì)
本文以圖像邊緣檢測(cè)處理進(jìn)行介紹,任務(wù)相對(duì)比較簡(jiǎn)單,所以在此采用主從模型進(jìn)行設(shè)計(jì)。在任務(wù)相對(duì)獨(dú)立,涉及到的環(huán)節(jié)比較多,可以采用數(shù)據(jù)流模型進(jìn)行設(shè)計(jì)。其軟件框圖如圖6所示[6]。
圖6 軟件框架
在多核圖像處理中,主核Core0負(fù)責(zé)任務(wù)調(diào)度、網(wǎng)頁(yè)服務(wù)、數(shù)據(jù)采集、數(shù)據(jù)分發(fā)和整合,并參與圖像處理任務(wù)。從核運(yùn)行一個(gè)無(wú)限循環(huán)的任務(wù),當(dāng)接收到圖像處理的消息時(shí),進(jìn)行圖像處理,待完成后返回圖像處理完成的消息。其圖像處理流程如圖7所示。
圖7 圖像處理流程
數(shù)據(jù)的采集利用fopen()、fread()函數(shù)[7],在CCS集成開發(fā)環(huán)境下,直接讀取上位機(jī)中指定路徑下的文件,但是這必須是在Debug模式下,通過(guò)仿真器進(jìn)行連接才能實(shí)現(xiàn)。具體操作如下:
FILE * fpr = 0;
char image_name[250] = "…/images/MMMM.bmp";
fpr=fopen(image_name, "rb");
fseek(fpr, 0, SEEK_END);
input_image.length =ftell(fpr);
fseek(fpr, 0, SEEK_SET);
input_image.data=malloc(input_image.length);
fread(input_image.data,input_image.length,1, fpr);
fclose(fpr);
本文所處理的圖像為BMP格式文件,它主要由位圖文件頭、位圖信息頭、調(diào)色板和圖像數(shù)據(jù)構(gòu)成,在處理圖像的時(shí)候需要單獨(dú)把圖像數(shù)據(jù)提取出來(lái)。
3.2.3 網(wǎng)頁(yè)設(shè)計(jì)及數(shù)據(jù)處理
用戶通過(guò)網(wǎng)頁(yè)選擇參與處理的核數(shù),并通過(guò)動(dòng)態(tài)創(chuàng)建網(wǎng)頁(yè)輸出處理結(jié)果,實(shí)現(xiàn)用戶交互,這樣調(diào)試更加方便。其網(wǎng)頁(yè)界面如圖8所示,當(dāng)點(diǎn)擊Process按鈕時(shí),系統(tǒng)執(zhí)行對(duì)應(yīng)的回調(diào)函數(shù)[8]。
圖8 核數(shù)選擇界面
網(wǎng)頁(yè)源碼需要轉(zhuǎn)換為十六進(jìn)制數(shù)組形式,通過(guò)efs_createfile("index.html",INDEXHTML_SIZE, INDEXHTML)再創(chuàng)建網(wǎng)頁(yè)[9],嵌入仿真平臺(tái)。其中index.html為網(wǎng)頁(yè)名,INDEXHTML_SIZE為網(wǎng)頁(yè)大小,INDEXHTML為包含在頭文件中的網(wǎng)頁(yè)數(shù)據(jù)變量。轉(zhuǎn)換工具在“…packages i dk oolsinsrc”路徑下,在DOS環(huán)境下通過(guò)binsrc
網(wǎng)頁(yè)通過(guò)POST方式提交表單數(shù)據(jù),因此需要對(duì)提交的數(shù)據(jù)按照一定的規(guī)則進(jìn)行解析。圖9、圖10是通過(guò)兩種不同形式顯示表單接收到的數(shù)據(jù)結(jié)果,圖9為字符類型顯示,圖10為8位無(wú)符號(hào)整型顯示。
圖9 字符類型顯示
結(jié)合圖9和圖10,可以發(fā)現(xiàn)表單數(shù)據(jù)比較有規(guī)律,它有行開始標(biāo)識(shí)、單元格開始及結(jié)束標(biāo)識(shí)、表單結(jié)束標(biāo)識(shí)以及一些關(guān)鍵字段標(biāo)識(shí),如“name”。因此,通過(guò)這些固定的格式,很容易解析得到對(duì)應(yīng)參數(shù)值。
圖10 8位無(wú)符號(hào)整型顯示
3.3 性能分析
在仿真模式下,計(jì)算兩個(gè)斷點(diǎn)之間的運(yùn)行時(shí)間,發(fā)現(xiàn)fread()函數(shù)讀取上位機(jī)中的一張圖片需要耗費(fèi)很長(zhǎng)時(shí)間,一般高達(dá)幾分鐘。這可能是仿真設(shè)備的原因,仿真時(shí)電腦通過(guò)串行接口與評(píng)估板數(shù)據(jù)交流,另一方面還受評(píng)估板處理速度、內(nèi)存空間的限制,導(dǎo)致輸入讀入實(shí)驗(yàn)板外部存儲(chǔ)器速度慢。因此,出于算法調(diào)試速度和需要,按照網(wǎng)頁(yè)的轉(zhuǎn)換方式把圖片轉(zhuǎn)化為十六進(jìn)制數(shù)組,包含到程序中的頭文件,編譯時(shí)直接寫入內(nèi)存。這種方法大大提高了仿真效率,但需要考慮內(nèi)存不足問(wèn)題。最后對(duì)不同大小的圖片進(jìn)行處理,其處理速度對(duì)比,具體見表1。
表1 不同大小圖片處理時(shí)間(單位:ms)
通過(guò)表1可以發(fā)現(xiàn)處理時(shí)間與參加處理核數(shù)并不成正比,隨著核數(shù)目的增加,處理時(shí)間變短。但是,隨著圖像變小,即處理數(shù)據(jù)量減少,它的處理速度并不總是提高,甚至耗時(shí)會(huì)越多。從中可以看出,隨著處理數(shù)據(jù)量的減少,數(shù)據(jù)處理的時(shí)間越來(lái)越接近消息傳遞所消耗的時(shí)間,效率反而更低。因此,當(dāng)任務(wù)量比較少的時(shí)候,過(guò)多的資源利用會(huì)導(dǎo)致浪費(fèi),所做的無(wú)用功增多。顯然,在進(jìn)行圖像局部處理時(shí),所選取的圖片太小,數(shù)據(jù)分發(fā)式并行處理反而影響處理效率。
[1] 牛金海.TMS320C66x KeyStone 架構(gòu)多核DSP入門與實(shí)例精解[M].上海:上海交通大學(xué)出版社,2014.
[2] Texas Instruments.SYS/BIOS Inter-Processor Communication (IPC) 1.25 User’s Guide,2012.
[3] 肖亮,張學(xué)健.基于多核DSP的超聲成像處理算法的并行實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2013,39(6):27-30.
[4] Texas Instruments.TMS320C66x DSP Cache User Guide,2010.
[5] Texas Instruments.Multicore Programming Guide,2012.
[6] Texas Instruments.MCSDK Image Processing Demonstration Guide,2015.
[7] 譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005.
[8] Texas Instruments.TI Network Developer’s Kit (NDK) v2.21 User’s Guide,2012.
[9] Texas Instruments.TI Network Developer’s Kit (NDK) v2.21 API Reference Guide,2012.
鄭武興(碩士研究生),主要研究方向?yàn)樾畔⑻幚砝碚撆c方法;王春平(教授),主要研究方向?yàn)閳D像處理、火力控制理論與應(yīng)用;付強(qiáng)(講師),主要研究方向?yàn)橛?jì)算機(jī)視覺、網(wǎng)絡(luò)化火控與指控技術(shù)。
Inter Core Communication and Programming Skills of Multicore DSP Parallel Processing
Zheng Wuxing,Wang Chunping,Fu Qiang
(Department of Electrics and Optics Engineering,Ordnance Engineering College,Shijiazhuang 050003,China)
In the paper,the parallel processing design based on the image is implemented in TMDSEVM6678L,and its performance is analyzed.The usual methods of the Inter-Processor Communication (IPC), as well as the basic techniques of multicore programming are introduced.It implements user interaction via the web,and provides data parse ideas through the analysis of web page data transmission.Through analysis and comparison of the data acquisition speed,the suitable data acquisition method is adopted to improve the simulation efficiency.Finally,it indicates that the message mechanism for IPC is used to implement parallel processing practicability and applicability from the processing time of different data quantity and the experimental results.
TMS320C6678;parallel processing;IPC;message mechanism
TP302.7
A
士然
2017-01-06)