基于ARM和DSP架構(gòu)的多處理器高速通訊協(xié)議設(shè)計
杭州海康威視數(shù)字技術(shù)有限公司蔣海青
關(guān)鍵詞:RISCprocessor(精簡指令集處理器),DSP(數(shù)字信號處理器),ARM,Trimedia,RTOS(嵌入式操作系統(tǒng)),數(shù)字視頻,STB(機(jī)頂盒),PCI,通訊
目前,建立在寬帶網(wǎng)絡(luò)的多媒體應(yīng)用日漸增多,高性能的DSP也不斷推陳出新,由于DSP具備非常靈活的編程運(yùn)算能力,針對不同的編碼標(biāo)準(zhǔn),采用不同的編碼軟件,加上合適的芯片價位,在視頻會議終端、視頻監(jiān)控服務(wù)器、IP數(shù)字機(jī)頂盒等產(chǎn)品中已被普遍采用。
雖然DSP具備眾多的優(yōu)點(diǎn),但卻不適合作系統(tǒng)控制,因?yàn)镈SP通常沒有強(qiáng)大的操作系統(tǒng),沒有完備的網(wǎng)絡(luò)協(xié)議棧和可靠的文件系統(tǒng),DSP架構(gòu)在作控制指令時無法并行處理,分支判斷和高速緩存沒命中(cachemiss)都會使運(yùn)行效率極大降低。而這些正好是嵌入式RISC處理器的強(qiáng)項,比如ARM和MIPS系列,所以現(xiàn)在很多的半導(dǎo)體公司如PHILIPS和TI都推出了整合了RISC處理器和DSP的SOC芯片,如PNX8550、PNX8525、OMAP等。
高性能的DSP在進(jìn)行媒體處理時會產(chǎn)生和消費(fèi)大量的音視頻數(shù)據(jù),這些數(shù)據(jù)需要在RISC和DSP兩個處理器之間高速、穩(wěn)定地交換數(shù)據(jù),另外,RISC處理器也要經(jīng)常給DSP發(fā)送指令,并且還要支持來自DSP的RPC調(diào)用。下面本文將要介紹一種基于多處理器之間的高速通訊機(jī)制,并且已在實(shí)踐中得到商業(yè)化的應(yīng)用。
本方案采用了SAMSUNG的S3C2510(ARM940T內(nèi)核)和PHILIPS的Trimedia1300(TM1300)數(shù)字信號處理器,ARM940T內(nèi)置了PCI2.1規(guī)范的總線接口,Trimedia1300可以作為PCI的MASTER和SLAVE,基本架構(gòu)如圖-1。
圖-1
基于上述的硬件架構(gòu),在ARM和Trimedia1300處理器上分別采用了WindRiver的實(shí)時嵌入式操作系統(tǒng)(RTOS)vxWorks和pSos2.5,本通訊協(xié)議的基本思路為,在ARM的內(nèi)存空間上開辟一塊共享內(nèi)存,并能使TRIMEDIA能夠訪問,數(shù)據(jù)通訊的握手協(xié)議通過兩個處理器的中斷來實(shí)現(xiàn),配合信號量的使用,可以達(dá)到高速、通訊的目的,其軟件架構(gòu)如圖-2。
圖-2
該通訊協(xié)議采用分層分布,兩個處理器基本處于對稱狀態(tài),因此,主要軟件模塊是公用的,有區(qū)別的是硬件抽象層和操作系統(tǒng)抽象層,與硬件和操作系統(tǒng)相關(guān)的模塊比如中斷驅(qū)動、信號量同步處理都分別提煉出來,單獨(dú)放在這些模塊文件中,減少軟件開發(fā)和維護(hù)的工作量。
下面對圖-2中的軟件模塊進(jìn)行說明: 1.硬件抽象層:該層主要完成對不同處理器的硬件的抽象,比如地址映射、中斷處理、PCI配置空間的訪問,IO寄存器的訪問等功能。將兩個處理器之間的硬件差異隱藏起來,以便上一層統(tǒng)一管理接口。
2.操作系統(tǒng)抽象層:該層主要完成對不同操作系統(tǒng)之間的抽象,提供vxWorks和pSos兩個操作系統(tǒng)的統(tǒng)一接口,主要是同步、信號量、關(guān)鍵代碼的互斥保護(hù)機(jī)制等功能。
3.通道及同步事件管理層:為了建立多處理器之間的多通道通訊和同步機(jī)制,該層支持多個通道獨(dú)立通訊能力,每個通道都有*的句柄用于訪問,通道的打開、使用、關(guān)閉相互獨(dú)立。該層同時也支持命名的同步事件,可用于處理器之間的同步等待功能。
4.消息處理管理層:該層完成多通道的長度分組包通訊功能,支持小數(shù)據(jù)量的通訊數(shù)據(jù),并支持同步機(jī)制,DSP的控制指令可以采用這種方式進(jìn)行通訊。
5.共享緩存:支持多通道命名共享緩存,其中的數(shù)據(jù)可以同時被兩個處理器訪問,配合同步事件機(jī)制,流式數(shù)據(jù)可以采用這種方式進(jìn)行高速、通訊。
6.同步事件:支持多通道可命名的處理器之間的同步事件功能,ARM或DSP可以讓對方等待同步事件,用于控制同步處理共享資源。
7.RPC(遠(yuǎn)程過程調(diào)用)層:在消息處理管理層和同步事件的基礎(chǔ)上,當(dāng)DSP處理器有時需要打印調(diào)試信息,或者讀取HOST的資源時,比如調(diào)用printf、fopen、fread等標(biāo)準(zhǔn)c輸入輸出函數(shù),通過該層處理后,ARM會調(diào)用相關(guān)函數(shù)完成的任務(wù),并將結(jié)果返回給Trimedia1300。
在這里我們還要專門的描述的是位于硬件抽象層里的共享內(nèi)存,它只在HOST的一方存在,所有需要兩個處理器共享的數(shù)據(jù)都存儲在該區(qū)域里,包括高層的共享緩存、消息、同步事件、通道信息等數(shù)據(jù),因此需要主機(jī)維護(hù)物理連續(xù)的、一定大小的內(nèi)存,并且是處理器非cacheable的區(qū)域。
下面本文將描述典型的控制指令傳輸方式,具體的過程見圖-3
圖-3
過程說明:本端處理器作初始化,創(chuàng)建同步事件,打開消息通訊句柄,同步事件用于讀取數(shù)據(jù)時任務(wù)阻塞,然后創(chuàng)建通訊數(shù)據(jù)包并且發(fā)送,發(fā)送例程將數(shù)據(jù)存儲在共享緩沖區(qū)內(nèi),zui后觸發(fā)對方中斷。
對端處理器進(jìn)入中斷響應(yīng),首先中斷例程分析共享數(shù)據(jù)區(qū)的通訊數(shù)據(jù)狀態(tài),發(fā)現(xiàn)某通道有新的未處理數(shù)據(jù)后,將其拷貝至自己的私有內(nèi)存空間,并清理自己的共享數(shù)據(jù)區(qū)狀態(tài),然后釋放在等待中的通訊任務(wù)的信號量,使讀通訊數(shù)據(jù)包的任務(wù)解除阻塞狀態(tài),從私有數(shù)據(jù)區(qū)讀取通訊數(shù)據(jù)包并作相應(yīng)處理。
數(shù)據(jù)流通訊與數(shù)據(jù)包通訊類似,不過方法更簡單,在創(chuàng)建共享緩存和同步事件后,一方寫入數(shù)據(jù)后,出發(fā)同步事件,另一方等到同步事件解除后讀取數(shù)據(jù),效率很高而處理器開銷節(jié)省至zui低。
處理器之間的同步事件功能可以有效地對共享資源進(jìn)行保護(hù),防止多處理器同時對某一個共享資源訪問,導(dǎo)致數(shù)據(jù)不完整。RPC(遠(yuǎn)程過程調(diào)用)功能能方便的用于系統(tǒng)調(diào)試和利用主處理器資源,能方便產(chǎn)品的調(diào)試和功能開發(fā)。
以上是簡化的多處理器通訊模型,方法適用于大多數(shù)RISC+DSP的架構(gòu),另外為了實(shí)現(xiàn)該通訊機(jī)制,還必須先完成三個前提,下面將簡單對此進(jìn)行描述。
1.位于HOST的共享內(nèi)存必須是物理連續(xù)、非緩沖(none-cacheable)的一段內(nèi)存,否則,兩個處理器因?yàn)楸旧矶紟в袛?shù)據(jù)高速緩存,會使數(shù)據(jù)的完整性無法保障,因此需要對兩個處理器進(jìn)行配置,對這段內(nèi)存的訪問關(guān)閉cache操作,具體操作過程不再贅述。
2.在編譯Trimedia1300程序的時候,將指向共享內(nèi)存的指針設(shè)置為下載時解析,并且要將Trimedia1300的下載程序移植到vxWorks操作系統(tǒng),再下載解析該指針時將其指向ARM已分配給好的物理連續(xù)內(nèi)存,Trimedia1300程序開始運(yùn)行后就可以立即對共享內(nèi)存初始化并進(jìn)行通訊。
3.該通訊協(xié)議以vxWorks的BSP(板級支持包)的方式提供接口,并創(chuàng)建標(biāo)準(zhǔn)的vxWorks設(shè)備,便于安裝、使用。
該通訊規(guī)范已經(jīng)在實(shí)用化的商業(yè)多媒體機(jī)頂盒中運(yùn)行,該產(chǎn)品的數(shù)據(jù)流量較大,對時延要求很高,控制命令非常密集,從總體評價來看,采用該通訊協(xié)議后,無論是其效率、延時、處理器占用時間、靈活性、穩(wěn)定性、可拓展性均獲得很好的表現(xiàn),希望本文也能對正在開發(fā)類似產(chǎn)品的人員起一定的提示作用,能加快相關(guān)產(chǎn)品的研發(fā)。
2004-7-8
參考文獻(xiàn):
TornadoOnlineManualsbyWindriver
TrimediaSDEDocumentsbyPhilipsSemiconductor
pSOSManualsbyIntegratedSystems,Inc.
S3c2510AUser’smanualsbySamsungElectronics
PCILocalBusSpecificationbyPCISpecialInterestGroup