??? 摘? 要: 為了滿足圖像處理系統(tǒng)對圖像處理能力和圖像數(shù)據(jù)通信能力的實(shí)時(shí)要求,在分析多DSP系統(tǒng)的架構(gòu)以及多DSP核之間通信機(jī)制的基礎(chǔ)上,提出了一種基于非共享存儲的同構(gòu)多DSP系統(tǒng)設(shè)計(jì)。在硬件系統(tǒng)設(shè)計(jì)的基礎(chǔ)上,根據(jù)實(shí)時(shí)系統(tǒng)的層次體系思想,實(shí)現(xiàn)了基于實(shí)時(shí)微內(nèi)核的實(shí)時(shí)分布式操作系統(tǒng)DSP/BIOS。?
??? 關(guān)鍵詞: 圖像處理;多DSP系統(tǒng);系統(tǒng)架構(gòu);通信機(jī)制
?
??? 隨著計(jì)算機(jī)產(chǎn)品應(yīng)用領(lǐng)域的日趨廣泛,數(shù)字信號處理器(DSP)得到了迅猛發(fā)展,采用現(xiàn)有的單核DSP系統(tǒng)已經(jīng)無法滿足對信號處理速度和運(yùn)算量越來越高的需求。采用同構(gòu)或異構(gòu)多DSP系統(tǒng)是解決信號處理瓶頸問題的主要途徑,即在功耗增長不大的前提下可大幅度提高性能,具備強(qiáng)大的實(shí)時(shí)多任務(wù)處理能力[1]。目前,多DSP系統(tǒng)的應(yīng)用廣泛,其中包括醫(yī)學(xué)、圖像處理、軍事、工業(yè)控制、電信等許多領(lǐng)域。?
??? 實(shí)時(shí)圖像處理系統(tǒng)要求必須具有大數(shù)據(jù)量的處理能力,以保證系統(tǒng)的實(shí)時(shí)性;對系統(tǒng)的體積、功耗等也有較嚴(yán)格的要求。一個(gè)典型的數(shù)字圖像處理系統(tǒng)主要包括圖像預(yù)處理、圖像分割、特征計(jì)算、模板匹配、識別和歸類、運(yùn)動分析、目標(biāo)跟蹤等基本功能。在硬件上采用高速的DSP可以在實(shí)時(shí)條件下實(shí)現(xiàn)目標(biāo)的檢測、提取、識別、跟蹤技術(shù)。為了進(jìn)一步提高準(zhǔn)確性和實(shí)時(shí)性,采用多DSP完成數(shù)字圖像處理已經(jīng)成為一個(gè)主要技術(shù)途徑[2-5]。本文在分析多DSP系統(tǒng)架構(gòu)的基礎(chǔ)上,提出了一種可以提高圖像處理能力的非共享存儲多核DSP系統(tǒng)的設(shè)計(jì)。其中每一個(gè)DSP均有各自獨(dú)立的存儲器、I/O接口。此外,本文還分析了多DSP核之間的通信機(jī)制。在硬件系統(tǒng)設(shè)計(jì)的基礎(chǔ)上,基于實(shí)時(shí)系統(tǒng)的層次體系思想,分析實(shí)現(xiàn)了基于實(shí)時(shí)微內(nèi)核的實(shí)時(shí)分布式操作系統(tǒng)DSP/BIOS。?
1 多DSP系統(tǒng)架構(gòu)的分析?
1.1 多DSP系統(tǒng)架構(gòu)?
??? 為了滿足實(shí)時(shí)圖像處理、任務(wù)調(diào)度的需要,本文設(shè)計(jì)了主從結(jié)構(gòu)的多DSP系統(tǒng)架構(gòu),如圖1所示。設(shè)圖像匹配處理算法P可以分離為m個(gè)子任務(wù),則系統(tǒng)由主控制器(PowerPC)、m個(gè)DSP處理器和FPGA組成。主控制器負(fù)責(zé)系統(tǒng)的加載、系統(tǒng)任務(wù)的分配、調(diào)度、管理、多DSP之間的同步以及狀態(tài)的檢測等。DSP0~DSPm的主要任務(wù)是響應(yīng)主控CPU的命令,完成相關(guān)算法計(jì)算。FPGA主要完成圖像數(shù)據(jù)的接收、主控CPU和DSP之間的數(shù)據(jù)傳輸以及控制邏輯等。?
?
?
??? 為了防止共享數(shù)據(jù)沖突,主控CPU和每一個(gè)DSP子系統(tǒng)分別配置獨(dú)立的存儲系統(tǒng),包括SDRAM內(nèi)存和FLASH存儲器。每個(gè)處理器只能訪問自己的存儲空間,不能對其他處理器的存儲空間進(jìn)行訪問。這種非共享方式存儲結(jié)構(gòu)完全保證了數(shù)據(jù)的可靠性和數(shù)據(jù)的一致性,并具有良好的系統(tǒng)擴(kuò)展性。?
??? 本文設(shè)計(jì)的主控CPU選用飛思卡爾公司的高性能PowerPC MPC8260處理器,DSP選用TI公司的TMS320C6414處理器,F(xiàn)PGA選用XILINX公司的Virtex4系列FPGA。?
1.2 系統(tǒng)結(jié)構(gòu)性能分析?
??? 在評估一個(gè)多處理器并行系統(tǒng)的性能時(shí),最常用的性能指標(biāo)是加速比和系統(tǒng)效率。系統(tǒng)加速比其中:p為處理器的個(gè)數(shù),ts為用單處理器完成算法運(yùn)算的時(shí)間,tp為 p個(gè)處理器完成算法運(yùn)算的時(shí)間。系統(tǒng)效率?
??? 本架構(gòu)中,在算法的計(jì)算量隨數(shù)據(jù)量的增加呈線性增加的前提下,設(shè)數(shù)據(jù)在單DSP上需要的處理時(shí)間ts近似為單DSP處理1/m塊該數(shù)據(jù)需要的耗時(shí)ts/m;并假設(shè)數(shù)據(jù)傳輸需要耗時(shí)tc,主控CPU分配任務(wù)和綜合結(jié)果耗時(shí)ta,從而得到m個(gè)DSP完成算法所需時(shí)間:?
????? tm=(ts/m)+tc+ta?
????? 則系統(tǒng)的數(shù)據(jù)加速比為:?
???????
????? 如果主控DSP分配任務(wù)和綜合結(jié)果的時(shí)間可以忽略不計(jì),即(ta/ts)<<1,則可以得到系統(tǒng)效率?
????? 從上面的式子可以看到,通信計(jì)算比tc/ts是影響性能的主要因素, 特別是在圖像處理應(yīng)用中,通常數(shù)據(jù)傳輸量很大, 這會使得整個(gè)多DSP系統(tǒng)的效率非常低。因此提高處理器與DSP之間、DSP與DSP之間的傳輸效率、減少傳輸時(shí)間是提高系統(tǒng)性能的有效途徑。?
1.3 DSP間數(shù)據(jù)通信設(shè)計(jì)與分析?
??? DSP之間的通信控制及數(shù)據(jù)交換是DSP 并行處理系統(tǒng)的核心,也是任務(wù)調(diào)度分配及數(shù)據(jù)共享的關(guān)鍵。一般DSP 并行處理系統(tǒng)可有以下5種結(jié)構(gòu)形式:共享總線式、基于Link接口式、基于同步串口接口式、基于主機(jī)接口式和基于數(shù)據(jù)交換式。本設(shè)計(jì)為了充分發(fā)揮多DSP的并行性、提高圖像處理速度,采用了基于同步串口式、主機(jī)接口式以及基于數(shù)據(jù)交換式結(jié)合的方案。?
??? (1)基于同步串口?
??? 隨著DSP 器件技術(shù)的發(fā)展,多通道串口(McBSP)作為標(biāo)準(zhǔn)外設(shè)出現(xiàn)在各種型號的DSP 中。由于McBSP口強(qiáng)大的標(biāo)準(zhǔn)化功能、靈活的使用性以及互聯(lián)的簡單性,使其在DSP與DSP之間的數(shù)據(jù)流通信中占有重要的地位。每個(gè)同步串行通信口一般有6根信號線,可以同時(shí)進(jìn)行雙向數(shù)據(jù)發(fā)送和接收。多通道模式使同步串口以時(shí)分復(fù)用(TDM)方式進(jìn)行多通道通信,允許最多32通道時(shí)分多址數(shù)據(jù)收發(fā)。對每個(gè)通道, 串口可以將其設(shè)置為:發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、同時(shí)發(fā)送和接收數(shù)據(jù)、不作操作。在多通道模式下,收發(fā)雙方應(yīng)有同一個(gè)時(shí)間基準(zhǔn)RFS和串行時(shí)鐘。?
??? 在本設(shè)計(jì)中,各DSP以主從方式工作在多通道模式下,所有通信進(jìn)程由主CPU控制, 各從DSP以TDM方式掛接在總線上,各自有唯一的通道號。主CPU可任意選擇某一指定通道建立雙向數(shù)據(jù)通信, 亦可用“廣播寫”的方式同時(shí)向各從DSP發(fā)送數(shù)據(jù),主要完成任務(wù)調(diào)度中的命令交互,其最高傳輸速率可達(dá)16 Mb/s。?
??? (2)基于主機(jī)接口?
??? 主機(jī)接口(HPI)是DSP的一個(gè)16/32 bit寬的對外接口。外部主機(jī)可通過HPI訪問DSP所有地址空間,復(fù)位時(shí)向DSP加載程序,對DSP進(jìn)行控制。外部主機(jī)是HPI的主方,DSP是HPI的從方。一旦主機(jī)獲得了總線控制權(quán),DSP使自身的外部數(shù)據(jù)/ 地址總線均處于高阻狀態(tài),主機(jī)就可對DSP內(nèi)部寄存器直接讀寫,利用相關(guān)的寄存器來控制DSP或者建立DMA傳輸。主機(jī)可通過HPI訪問DSP,但DSP不能通過HPI向外部發(fā)起訪問。?
??? 主處理器通過譯碼控制產(chǎn)生HPI接口訪問控制信號線, 以獲得外部總線控制權(quán)的方式管理各個(gè)DSP,實(shí)現(xiàn)主從DSP之間的并行任務(wù)分配、訪問控制、程序的加載以及數(shù)據(jù)、狀態(tài)信息的高速交換。?
??? (3)基于數(shù)據(jù)交換?
??? DSP的處理速度越來越快,TMS320C6214的峰值處理能力可達(dá)6 800 MI/s。然而在通過McBSP和HPI連接的多DSP系統(tǒng)中,由于McBSP最高速度僅為16 MHz,且HPI為異步接口,數(shù)據(jù)傳輸速率有限,各個(gè)傳輸速率之和≤50 MB/s,因此數(shù)據(jù)傳輸有時(shí)會成為系統(tǒng)處理能力提高的瓶頸,使得CPU或圖像處理產(chǎn)生的大量數(shù)據(jù)流無法及時(shí)送到多個(gè)DSP。在多DSP分布式處理系統(tǒng)中,DSP相互之間需進(jìn)行大量的數(shù)據(jù)傳輸,然而TI的DSP沒有高速的片間無縫傳輸機(jī)制,使得相關(guān)的任務(wù)因等待數(shù)據(jù)而被延遲,造成系統(tǒng)整體效率降低。?
??? 本文提出了一種基于環(huán)形雙向FIFO的方案。各個(gè)DSP與主機(jī)之間通過一個(gè)環(huán)形雙向FIFO和一個(gè)專用互聯(lián)模塊來實(shí)現(xiàn)高速互聯(lián),如圖1所示?;ヂ?lián)模塊提供了一個(gè)按照包路由協(xié)議進(jìn)行尋址交換的機(jī)制,提供多個(gè)異步讀寫FIFO接口,完成到外部器件的連接和數(shù)據(jù)包的路由轉(zhuǎn)發(fā)功能。當(dāng)DSP通過EMIF總線或主機(jī)通過主機(jī)相應(yīng)的總線訪問對應(yīng)端口的環(huán)形雙向FIFO時(shí),互聯(lián)模塊根據(jù)地址信息選擇目的FIFO,建立兩兩通路,進(jìn)行數(shù)據(jù)傳輸。當(dāng)有多個(gè)處理器產(chǎn)生請求時(shí),互聯(lián)模塊根據(jù)產(chǎn)生請求的時(shí)間,組成請求隊(duì)列,依次鏈接傳輸。由此數(shù)據(jù)可傳輸?shù)街付ǖ腄SP,同時(shí)也可傳輸?shù)街鳈C(jī)中。環(huán)形雙向FIFO為兩個(gè)處理器之間狀態(tài)信息交換和海量數(shù)據(jù)傳輸提供了一個(gè)高速緩沖區(qū)。?
??? 本方案中互聯(lián)模塊由FPGA實(shí)現(xiàn),每個(gè)端口上的環(huán)形雙口FIFO也由FPGA內(nèi)部邏輯實(shí)現(xiàn)。?
2 多DSP系統(tǒng)軟件分析?
??? 系統(tǒng)有1個(gè)主控CPU和m個(gè)DSP處理器,故需要為m+1個(gè)處理器分別編寫程序,以最大限度地保證系統(tǒng)并行性,滿足實(shí)時(shí)數(shù)據(jù)的處理。具體分工如下:?
??? (1)主控CPU主要完成系統(tǒng)的總體控制,包括上電啟動、程序加載、任務(wù)分配調(diào)度、任務(wù)管理、資源管理、目標(biāo)跟蹤分析控制、DSP間信息同步、輸入輸出交互等。?
??? (2)DSP0~DSPm按照主控CPU的任務(wù)分配完成圖像的相關(guān)處理運(yùn)算,包括圖像分割、特征計(jì)算、圖像匹配運(yùn)算、響應(yīng)主控CPU發(fā)出的相應(yīng)命令控制等。同時(shí)DSP0還負(fù)責(zé)系統(tǒng)的結(jié)果綜合和圖像壓縮等任務(wù)。?
2.1 系統(tǒng)BootLoader?
??? 為了防止程序和數(shù)據(jù)沖突,防止誤操作,系統(tǒng)程序加載方式采用順序加載的方式,即所有的程序代碼,包括主控CPU和DSP的程序代碼均存入主控CPU的FLASH中。當(dāng)系統(tǒng)上電或復(fù)位后,主控CPU首先從FLASH中讀取程序并啟動,完成自身的初始化之后,利用主機(jī)接口HPI對m個(gè)DSP按照從0到m的順序進(jìn)行程序裝載,并在裝載完成之后,啟動所有DSP的運(yùn)行。由于HPI接口和主控CPU的接口控制電路并不兼容,需要FPGA進(jìn)行邏輯轉(zhuǎn)換,故FPGA的配置插入在DSP配置之前。系統(tǒng)Bootloader的流程如圖2所示。?
?
?
2.2 DSP 操作系統(tǒng)?
??? DSP/BIOS是一個(gè)簡易的針對DSP的嵌入式操作系統(tǒng),主要為需要實(shí)時(shí)線程調(diào)度、同步以及主機(jī)與目標(biāo)系統(tǒng)通信以及實(shí)時(shí)監(jiān)測的應(yīng)用而設(shè)計(jì)的。DSP/BIOS集成在CCS中,不需要額外費(fèi)用,但不提供源碼。它是TI公司倡導(dǎo)的eXpressDSP技術(shù)的重要組成部分。DSP/BIOS本身占用資源很少,而且可裁剪,它只把直接或間接調(diào)用的模塊和API連接到目標(biāo)文件中。它提供底層的應(yīng)用程序接口,支持系統(tǒng)實(shí)時(shí)分析、線程管理、調(diào)用軟件中斷、周期函數(shù)與后臺運(yùn)行函數(shù)以及外部硬件中斷與多種外設(shè)的管理。利用DSP/BIOS編寫代碼,借助CCS提供的多種分析與評估工具,如代碼執(zhí)行時(shí)間統(tǒng)計(jì)、顯示輸出、各線程占用CPU的時(shí)間統(tǒng)計(jì)等,可以直觀地了解各部分代碼的運(yùn)行開銷,高效地調(diào)試實(shí)時(shí)應(yīng)用程序、縮短軟件開發(fā)時(shí)間,而且DSP/BIOS是構(gòu)建于已被證實(shí)為有效的技術(shù)之上的,創(chuàng)建的應(yīng)用程序穩(wěn)定性好、軟件標(biāo)準(zhǔn)化程度高、可重復(fù)使用,這也減少了軟件的維護(hù)費(fèi)用。?
??? DSP/BIOS組件由以下三部分組成:?
??? (1)DSP/BIOS API:用戶在PC機(jī)上使用C、C++或匯編語言編寫調(diào)用DSP/BIOS API函數(shù)的應(yīng)用程序。?
??? (2)DSP/BIOS 配置:用戶創(chuàng)建一個(gè)DSP/BIOS配置,定義了程序中要使用的靜態(tài)對象。該配置會生成相應(yīng)的代碼文件,和應(yīng)用程序一起進(jìn)行編譯鏈接。?
??? (3)DSP/BIOS分析工具:CCS中的分析工具使用戶可以測試和分析目標(biāo)DSP上應(yīng)用程序的運(yùn)行,包括對CPU負(fù)荷、日志、線程執(zhí)行情況的監(jiān)測等。?
??? 為了更好地處理多任務(wù)調(diào)度,接受主控CPU控制和進(jìn)行圖像運(yùn)算,在每個(gè)DSP中均設(shè)計(jì)實(shí)現(xiàn)了DSP/BIOS。其抽象結(jié)構(gòu)如圖3所示。硬件抽象層實(shí)現(xiàn)對系統(tǒng)中各種外部設(shè)備的驅(qū)動,從而向上層提供各種邏輯設(shè)備。通過加入硬件抽象層,一方面保證了設(shè)備驅(qū)動模塊是整個(gè)系統(tǒng)中唯一的直接讀寫某個(gè)具體設(shè)備的控制狀態(tài)寄存器的軟件;另一方面使得硬件平臺相對系統(tǒng)內(nèi)核是透明的,系統(tǒng)內(nèi)核只需要進(jìn)行邏輯操作而不需要知道硬件的實(shí)現(xiàn)過程。通過對硬件抽象層和系統(tǒng)核心層的設(shè)計(jì),實(shí)際上也實(shí)現(xiàn)了向上層用戶層程序提供應(yīng)用編程接口的功能。用戶程序(如每個(gè)DSP分配的算法程序、數(shù)據(jù)通信程序)可以通過調(diào)用系統(tǒng)所提供的API函數(shù)來創(chuàng)建任務(wù)、訪問下層硬件設(shè)備。由于系統(tǒng)的API 函數(shù)屏蔽了下層的硬件環(huán)境,因而可以較好地保證上層用戶程序的硬件獨(dú)立性和可移植性,使得上層的程序可以在其他計(jì)算機(jī)平臺上開發(fā)。?
?
?
2.3 圖像匹配算法調(diào)度?
??? 相關(guān)匹配是實(shí)時(shí)圖像處理的關(guān)鍵。歸一化去均值互相關(guān)匹配算法是一種用于圖像匹配的經(jīng)典算法[3],設(shè)參考圖為Gr,其大小為Mr×Nr,實(shí)時(shí)圖為Gs,其大小為Ms×Ns,且應(yīng)使Mr>Ms,Nr>Ns。Ms×Ns的子圖Gr(u,v) 與實(shí)時(shí)圖Gs間的相關(guān)度ρ(u,v)定義為:?
??? 式中Gr(u,v)和Gs分別為Gr(u,v)和Gs的灰度均值。之后,再從計(jì)算出的匹配相關(guān)面數(shù)據(jù)ρ(u,v)中選取極值點(diǎn)得到匹配定位點(diǎn),故互相關(guān)匹配算法的運(yùn)算量主要集中在相關(guān)面數(shù)據(jù)ρ(u,v)的計(jì)算上。?
??? 從式中可以看出,實(shí)時(shí)圖Gs的均值Gs只需計(jì)算一次, 參考圖子圖Gr(u,v)的均值Gr(u,v)和標(biāo)準(zhǔn)差可以預(yù)先計(jì)算并載入各DSP獨(dú)立的FLASH存儲器中,這樣相關(guān)匹配算法運(yùn)算量主要集中在即參考圖子圖Gr(u,v)與實(shí)時(shí)圖Gs的點(diǎn)積計(jì)算。?
??? 計(jì)算點(diǎn)積的運(yùn)算量很大,遠(yuǎn)遠(yuǎn)超過了其他參數(shù)的計(jì)算時(shí)間,且實(shí)驗(yàn)證明單幀圖像的匹配處理時(shí)間很長,不能滿足實(shí)時(shí)系統(tǒng)的需要,故不適合將單幀圖像放在一個(gè)DSP中處理,而需要一個(gè)降低單幀圖像處理時(shí)間的方法。?
??? 點(diǎn)積計(jì)算實(shí)際上是圖像上各個(gè)點(diǎn)和參考圖相關(guān)點(diǎn)的乘加運(yùn)算,故可以根據(jù)點(diǎn)積計(jì)算公式采用空間并行的方法,將采集的實(shí)時(shí)圖分割成m個(gè)區(qū)域,即為m個(gè)子塊,每個(gè)DSP的FLASH存儲器均存入?yún)⒖紙D,每個(gè)DSP完成一個(gè)子塊的點(diǎn)積運(yùn)算。主控CPU在所有子塊計(jì)算完畢后,將數(shù)據(jù)整合發(fā)送給DSP0,并由DSP0計(jì)算求取相關(guān)面, 并求匹配定位點(diǎn)位置。?
??? 本文介紹了基于多核DSP的實(shí)時(shí)圖像匹配處理系統(tǒng)。通過合理的軟硬件劃分和并行處理,系統(tǒng)在充分發(fā)揮多核DSP的快速處理能力的同時(shí),使得多核DSP 間的數(shù)據(jù)傳輸能力得到擴(kuò)展,從而保證了系統(tǒng)的處理能力和通信能力。在硬件系統(tǒng)的基礎(chǔ)上,還專門開發(fā)了應(yīng)用于DSP系統(tǒng)的分布式實(shí)時(shí)操作系統(tǒng)DSP/BIOS,使得硬件系統(tǒng)對于算法設(shè)計(jì)者而言是透明的。測試結(jié)果表明,該系統(tǒng)能夠滿足實(shí)時(shí)匹配圖像處理的要求。?
參考文獻(xiàn)?
[1] HUANG Kai,XU Zhi Wei.Scalable parallel computers for?real time signal processing. IEEE Signal Processing Magazine,1996,13(4):50-66.?
[2] LIU Peng,YAO Qing Dong.Design and implementation of?real-time image processing parallel operating system?microkernel[J].Acta Electronica Sinica,1999,27(7):42-46.?
[3] 沈勝宏,韓月秋.基于多DSP 和FPGA的高速并行互相關(guān)圖像跟蹤技術(shù).北京理工大學(xué)學(xué)報(bào),2000,20(1):98-101.?
[4] 王岳環(huán),汪國有,張?zhí)煨?一種模塊化多DSP 實(shí)時(shí)圖像處理系統(tǒng).華中科技大學(xué)學(xué)報(bào),2000,28(3):63-64.?
[5] 曹治國,王岳環(huán),左崢嶸,等.多總線多DSP 實(shí)時(shí)圖像處理操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)學(xué)報(bào),2002,25(7):708-715.?
[6] TMS320C6414、TMS320C6415、TMS320C6416 Fixed-point?Digital Signal Processors[Z].Texas Instruments Inc.,2003.