基於ARM和DSP架構的多處理器高速通訊協議設計

來源:互聯網
上載者:User
 目前,建立在寬頻網路的多媒體應用日漸增多,高效能的DSP也不斷推陳出新,由於DSP具備非常靈活的編程運算能力,針對不同的編碼通訊協定,採用不同的編碼軟體,加上合適的晶片價位,在視頻會議終端、視頻監控伺服器、IP數字機頂盒等產品中已被普遍採用。
  雖然DSP具備眾多的優點, 但卻不適合作系統控制,因為DSP通常沒有強大的作業系統,沒有完備的網路通訊協定棧和可靠的檔案系統,DSP架構在作控制指令時無法平行處理,分支判斷和快取沒命中(cache miss)都會使運行效率極大降低。而這些正好是嵌入式RISC處理器的強項,比如ARM和MIPS系列,所以現在很多國際知名的半導體公司如PHILIPS和TI都推出了整合了RISC處理器和DSP的SOC晶片,如PNX8550、PNX8525、OMAP等。
  高效能的DSP在進行ApsaraVideo for Media Processing時會產生和消費大量的音視頻資料,這些資料需要在RISC 和DSP兩個處理器之間高速、穩定地交換資料,另外,RISC處理器也要經常給DSP發送指令,並且還要支援來自DSP的RPC調用。下面本文將要介紹一種基於多處理器之間的高速通訊機制,並且已在實踐中得到商業化的應用。
  本方案採用了SAMSUNG的S3C2510(ARM940T核心)和PHILIPS的Trimedia1300(TM1300) 數位訊號處理器,ARM940T內建了PCI2.1規範的匯流排介面,Trimedia1300可以作為PCI的MASTER和SLAVE,基本架構-1。
圖-1
  基於上述的硬體架構,在ARM和Trimedia1300處理器上分別採用了WindRiver的即時嵌入式作業系統(RTOS)vxWorks和pSos2.5,本通訊協議的基本思路為,在ARM的記憶體空間上開闢一塊共用記憶體,並能使TRIMEDIA能夠訪問,資料通訊的握手協議通過兩個處理器的中斷來實現,配合訊號量的使用,可以達到高速、高效通訊的目的,其軟體架構-2。
圖-2
  該通訊協議採用分層分布,兩個處理器基本處於對稱狀態,因此,主要軟體模組是公用的,有區別的是硬體抽象層和作業系統抽象層,與硬體和作業系統相關的模組比如中斷驅動、訊號量同步處理都分別提煉出來,單獨放在這些模組檔案中,減少軟體開發和維護的工作量。
下面對圖-2中的軟體模組進行說明:
 1. 硬體抽象層:該層主要完成對不同處理器的硬體的抽象,比如地址映射、中斷處理、 PCI配置空間的訪問,IO寄存器的訪問等功能。將兩個處理器之間的硬體差異隱藏起來,以便上一層統一管理介面。
 2. 作業系統抽象層:該層主要完成對不同作業系統之間的抽象,提供vxWorks和pSos兩個作業系統的統一介面,主要是同步、訊號量、關鍵代碼的互斥保護機制等功能。
 3. 通道及同步事件管理層:為了建立多處理器之間的多通道通訊和同步機制,該層支援多個通道獨立通訊能力,每個通道都有唯一的控制代碼用於訪問,通道的開啟、使用、關閉相互獨立。該層同時也支援命名的同步事件,可用於處理器之間的同步等待功能。
 4. 訊息處理管理層:該層完成多通道的指定長度分組包通訊功能,支援小資料量的通訊資料,並支援同步機制,DSP的控制指令可以採用這種方式進行通訊。
 5. 共用快取:支援多通道命名共用快取,其中的資料可以同時被兩個處理器訪問,配合約步事件機制,流式資料可以採用這種方式進行高速、高效通訊。
 6. 同步事件:支援多通道可命名的處理器之間的同步事件功能,ARM或DSP可以讓對方等待同步事件,用於精確控制同步處理共用資源。
 7. RPC(遠端程序呼叫)層:在訊息處理管理層和同步事件的基礎上,當DSP處理器有時需要列印調試資訊,或者讀取HOST的資源時,比如調用printf、fopen、fread等標準c輸入輸出函數,通過該層處理後,ARM會調用相關函數完成指定的任務,並將結果返回給Trimedia1300。
  在這裡我們還要專門的描述的是位於硬體抽象層裡的共用記憶體,它只在HOST的一方存在,所有需要兩個處理器共用的資料都儲存在該地區裡,包括高層的共用快取、訊息、同步事件、通道資訊等資料,因此需要主機維護物理連續的、一定大小的記憶體,並且是處理器非cacheable的地區。
下面本文將描述典型的控制指令傳輸方式,具體的過程見圖-3
圖-3
  過程說明:本端處理器作初始化,建立同步事件,開啟訊息通訊控制代碼, 同步事件用於讀取資料時任務阻塞,然後建立通訊資料包並且發送,發送常式將資料存放區在共用緩衝區內,最後觸發對方中斷。
  對端處理器進入中斷響應,首先中斷常式分析共用資料區的通訊資料狀態,發現某通道有新的未處理資料後,將其拷貝至自己的私人記憶體空間,並清理自己的共用資料區狀態,然後釋放在等待中的通訊任務的訊號量,使讀通訊資料包的任務解除阻塞狀態,從私人資料區讀取通訊資料包並作相應處理。
  資料流通訊與資料包通訊類似,不過方法更簡單,在建立共用快取和同步事件後,一方寫入資料後,出發同步事件,另一方等到同步事件解除後讀取資料,效率很高而處理器開銷節省至最低。
  處理器之間的同步事件功能可以有效地對共用資源進行保護,防止多處理器同時對某一個共用資源訪問,導致資料不完整。RPC(遠端程序呼叫)功能能方便的用於系統調試和利用主處理器資源,能方便產品的調試和功能開發。
  以上是簡化的多處理器通訊模型,方法適用於大多數RISC+DSP的架構,另外為了實現該通訊機制,還必須先完成三個前提,下面將簡單對此進行描述。
 1. 位於HOST的共用記憶體必須是物理連續、非緩衝(none-cacheable)的一段記憶體,否則,兩個處理器因為本身都帶有資料快取,會使資料的完整性無法保障,因此需要對兩個處理器進行配置,對這段記憶體的訪問關閉cache操作,具體操作過程不再贅述。
 2. 在編譯Trimedia1300程式的時候,將指向共用記憶體的指標設定為下載時解析,並且要將Trimedia1300的下載程式移植到vxWorks作業系統,再下載解析該指標時將其指向ARM已指派給好的物理連續記憶體,Trimedia1300程式開始運行後就可以立即對共用記憶體初始化並進行通訊。
 3. 該通訊協議以vxWorks的BSP(板級支援包)的方式提供介面,並建立標準的vxWorks裝置,便於安裝、使用。
  該通訊規範已經在實用化的商業多媒體機頂盒中運行,該產品的資料流量較大,對時延要求很高,控制命令非常密集,從總體評價來看,採用該通訊協議後,無論是其效率、延時、處理器佔用時間、靈活性、穩定性、可拓展性均獲得很好的表現,希望本文也能對正在開發類似產品的人員起一定的提示作用,能加快相關產品的研發。
2004-7-8
參考文獻:
Tornado Online Manuals by Windriver
Trimedia SDE Documents by Philips Semiconductor
pSOS Manuals by Integrated Systems, Inc.
S3c2510A User’s manuals by Samsung Electronics
PCI Local Bus Specification by PCI Special Interest Group

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.