國常義,李超群,劉 峰
(南京郵電大學(xué) 圖像處理與圖像通信江蘇省重點實驗室,江蘇 南京 210003)
?
達芬奇異構(gòu)多核處理器核間通信技術(shù)研究
國常義,李超群,劉 峰
(南京郵電大學(xué) 圖像處理與圖像通信江蘇省重點實驗室,江蘇 南京 210003)
針對目前通用的達芬奇異構(gòu)多核處理器,研究了其ARM核、DSP核以及視頻協(xié)處理器之間的通信與協(xié)作機制。在分析多核處理器核間通信原理的基礎(chǔ)上,研究了TMS320DM816x系列達芬奇異構(gòu)多核處理器的核間通信技術(shù),詳細闡述片上核間互聯(lián)結(jié)構(gòu)與核間通信軟件的實現(xiàn)。最后基于SysLink底層通信模塊設(shè)計了多路高清音視頻應(yīng)用系統(tǒng),對核間通信進行驗證。系統(tǒng)可充分發(fā)揮各處理核的性能,實現(xiàn)了各核間的高效協(xié)作。
異構(gòu)多核;核間通信;SysLink;TMS320DM816x
隨著信息技術(shù)的發(fā)展與需求的提升,傳統(tǒng)單核SOC不能滿足人們的需求,市面上出現(xiàn)越來越多的嵌入式多核處理器。嵌入式多核處理器主要分兩類:第一類是同構(gòu)多核,如聯(lián)發(fā)科MTK6592集成8顆Cortex-A7核;另一類是異構(gòu)多核,如德州儀器(TI)的達芬奇與OMAP系列的ARM+DSP系列處理器。異構(gòu)多核處理器集成結(jié)構(gòu)、性能不同的多個核心,可發(fā)揮各核所長,實現(xiàn)資源的最佳配置,能夠很好地提升系統(tǒng)整體性能、降低功耗。但是,多核處理器性能的發(fā)揮離不開核間的通信與協(xié)作,因此處理器核間的通信技術(shù)至關(guān)重要。
達芬奇技術(shù)是TI專為數(shù)字圖像、視頻、音頻信號處理設(shè)計的平臺,包括達芬奇處理器、開發(fā)環(huán)境、算法庫和其他技術(shù)支持等[1]。TI為用戶提供ARM+視頻協(xié)處理器、ARM+DSP、ARM+DSP+視頻協(xié)處理器等不同架構(gòu)的達芬奇處理器。文章基于達芬奇異構(gòu)多核處理器,研究片上多個處理器核的互聯(lián)結(jié)構(gòu)及核間通信的實現(xiàn),并介紹了底層核間通信軟件的實現(xiàn)。最后,基于底層核間通信模塊SysLink實現(xiàn)了不同核之間的任務(wù)通信與算法調(diào)用,通過系統(tǒng)高效的核間協(xié)作與通信,完成多路高清視頻采集、編碼、處理、傳輸、顯示以及音頻編碼的軟件框架。
本文主要基于TMS320DM816x(以下簡稱DM816x)系列達芬奇異構(gòu)多核處理器進行研究。DM816x集成ARM Cortex-A8核、C674x DSP核、高清視頻/圖像協(xié)處理器(HDVICP2)、高清視頻處理子系統(tǒng)(HDVPSS)以及SGX530圖形加速器。HDVICP2由基于ARM968內(nèi)核的Video M3核管理,可完成H.264、MPEG-4、MJPEG編解碼;HDVPSS由VPSS M3核管理,具有2路高清視頻捕獲通道及顯示通道。
異構(gòu)多核處理器大多采用主從式的結(jié)構(gòu)。主從式結(jié)構(gòu)根據(jù)不同核的功能把處理器核分為主核和從核。主核的結(jié)構(gòu)和功能一般較為復(fù)雜,負(fù)責(zé)全局資源、任務(wù)的管理和調(diào)度并完成從核的引導(dǎo)加載。從核主要接受主核的管理,負(fù)責(zé)運行主核分配的任務(wù),并具有本地任務(wù)調(diào)度與管理功能[2]。在多核處理器中,根據(jù)不同核的結(jié)構(gòu),各個核可運行相同或不同的操作系統(tǒng)。在DM816x中ARM為主核、DSP和協(xié)處理器為從核,ARM核運行開源的Linux系統(tǒng),DSP核和M3核運行TI為其DSP設(shè)計的SYS/BIOS實時內(nèi)核。
主從式的異構(gòu)多核處理器核間的互聯(lián)結(jié)構(gòu)如圖1所示。
圖1 主從式異構(gòu)多核互聯(lián)結(jié)構(gòu)
從圖1可知,為了實現(xiàn)異構(gòu)多核之間的通信,在芯片內(nèi)設(shè)計了核間中斷控制器以及核間互聯(lián)的總線。核間中斷是多核間任務(wù)同步與通信的橋梁,核間中斷寄存器各標(biāo)志位分配給芯片內(nèi)不同的核,通過核間中斷向另一個核發(fā)送中斷請求,執(zhí)行相應(yīng)的中斷服務(wù)程序或通過中斷寄存器傳遞地址,配合共享內(nèi)存實現(xiàn)數(shù)據(jù)的傳遞與共享。各個核心對于外設(shè)的訪問則通過配置總線等實現(xiàn)。
綜上,實現(xiàn)各個處理器核有效的管理和通信需要具備以下功能:
1)主處理器對從處理器進行管理;
2)內(nèi)部處理器之間信息的傳輸和交換。
前者可通過片上互聯(lián)實現(xiàn),后者則由核間中斷和內(nèi)存共享來實現(xiàn)。下面將以DM816x為例詳細說明上述功能的實現(xiàn)。
1.1 核間中斷
為了實現(xiàn)高效的片上核間通信,DM816x系列達芬奇處理器片上集成硬件郵箱中斷(Mailbox Interrupts)和自旋鎖(Spinlocks)。DM816x有12個郵箱,每個郵箱有4個中斷源以向4個核發(fā)送中斷,并且提供4個消息深度的FIFO,每個消息32位寬。每個郵箱都可以由任意一個核讀寫,通過相應(yīng)的寄存器設(shè)置中斷發(fā)送者以及接收者,通過消息寄存器傳遞消息[3]。ARM、DSP和2個M3媒體控制器之間通過系統(tǒng)級的郵箱進行通信,每個HDVICP2有各自獨立的郵箱,可以向自身內(nèi)部模塊和其他核發(fā)送中斷。
1.2 片上互聯(lián)與內(nèi)存映射
共享內(nèi)存的實現(xiàn)首先需要系統(tǒng)對內(nèi)存進行合理的映射與管理。每個子系統(tǒng)或處理器都有自己的內(nèi)存和內(nèi)存映射寄存器,為了簡化軟件的開發(fā),DM816x使用統(tǒng)一的映射,映射到L3的4 Gbyte的空間,從而使得芯片資源具有一致性。
DM816x使用分層架構(gòu)(L3,L4)的互連技術(shù),將多處理器和子系統(tǒng)連接到一起。L3基于可擴展性、高帶寬、低成本的片上網(wǎng)絡(luò)(NoC)技術(shù)實現(xiàn)高效互聯(lián),NoC使用一個內(nèi)部基于包的通信規(guī)程[4],由發(fā)起者(Initiator)向目標(biāo)(Target)請求并返回數(shù)據(jù)。L3的互聯(lián)結(jié)構(gòu)如圖2所示。
圖2 L3互聯(lián)概貌
圖2中箭頭表示Master/Slave(或者Initiator/Target)關(guān)系。發(fā)起者向目標(biāo)通過L3總線請求并返回數(shù)據(jù),實現(xiàn)處理器中多個核之間、核與外設(shè)間的連接。
在上述連接中,ARM cortex A8的高2 Gbyte地址空間由一個特殊的端口master0 直接連接到DMM(動態(tài)內(nèi)存管理),以實現(xiàn)低延時訪問DDR;低2 Gbyte物理地址連接到L3,再通過DMM端口(128 bit寬)存取DDR,直接通過L3互連端口(64 bit)存取芯片的其他模塊。
DSP內(nèi)部采用物理地址,DSP有1個獨立的CFG配置總線用來訪問L4外設(shè),并且提供1個主接口和從接口連接到L3,以及3個主端口以供直接訪問HDVICP2子系統(tǒng)。DSP訪問外部的存儲通過MDMA(Master DMA)存取,并由DEMMU(DSP/EDMA內(nèi)存管理單元)進行地址翻譯,DEMMU將地址翻譯成系統(tǒng)物理地址,并保護ARM的內(nèi)存區(qū)不被DSP代碼修改,并允許在用戶空間分配緩沖區(qū),而不需要在ARM和DSP之間進行地址翻譯,以實現(xiàn)用戶分配的緩沖區(qū)在ARM與DSP之間共享[3]。
HDVPSS包括1個第33位地址位,用于附加的4 Gbyte地址范圍,用作虛擬尋址和非物理內(nèi)存尋址,用于目標(biāo)地址空間的定位。
L4連接到外設(shè),提供處理器對外設(shè)的訪問,這里不做詳述。
1.3 共享內(nèi)存
DM816x中運行Linux和SYS/BIOS兩套操作系統(tǒng),它們分別采用makefile機制與XDC構(gòu)建系統(tǒng)。Linux在運行時通過內(nèi)核啟動參數(shù)來配置由內(nèi)核管理的內(nèi)存空間,SYS/BIOS在構(gòu)建時采用XDC配置文件進行數(shù)據(jù)區(qū)、代碼區(qū)等內(nèi)存區(qū)的分配。系統(tǒng)構(gòu)建與運行時需要對各個核所使用的內(nèi)存以及共享內(nèi)存進行劃分。使用2 Gbyte內(nèi)存時,典型的內(nèi)存配置及其作用如圖3所示。
圖3 內(nèi)存分配
圖3中SR0-3作為共享內(nèi)存,可供不同處理器共享使用,為了實現(xiàn)共享資源的互斥訪問,芯片集成硬件自旋鎖,以解決多核間共享資源的訪問互斥問題。
異構(gòu)多核處理器實現(xiàn)高效的核間通信與協(xié)作,不僅需要片上硬件模塊的支持,還需要在軟件中提供任務(wù)間通信的機制。Linux和SYS/BIOS都提供了本操作系統(tǒng)上進程通信的機制,在Linux中有管道、消息隊列、信號量、共享內(nèi)存等任務(wù)間同步與互斥的方式,SYS/BIOS中提供了處理器間通信的IPC(Inter-Processor Communication)模塊。IPC模塊為單核或多核處理器提供核間任務(wù)的通信,實現(xiàn)了Notify、MessageQ、ListMP等單核或核間任務(wù)通信的機制。
下面首先研究IPC模塊在多核架構(gòu)中的實現(xiàn),然后介紹SYS/BIOS與Linux之間任務(wù)通信的實現(xiàn)。
2.1 IPC模塊的實現(xiàn)
IPC模塊包含處理器名稱及ID管理模塊、內(nèi)存管理模塊以及進程間通信模塊。常用的模塊的實現(xiàn)及其功能如下:
Notify:使用Notify驅(qū)動核間中斷來實現(xiàn)進程間通信的通知功能。傳輸?shù)臄?shù)據(jù)一般為32位,可以為事件動態(tài)注冊處理函數(shù)。
GateMP:使用硬件自旋鎖實現(xiàn)共享資源的互斥訪問。
SharedRegion:負(fù)責(zé)共享資源的虛擬地址空間和本地處理器地址空間的轉(zhuǎn)換。同一片共享內(nèi)存在不同處理器上映射的地址可能不同,此模塊創(chuàng)建共享區(qū)域的查詢表,記錄在不同處理器中該共享區(qū)域的地址。
ListMP模塊:在處理器間共享鏈表。ListMP是一個雙向鏈表,它使用SharedRegion的查找表管理共享內(nèi)存,使用GateMP解決多任務(wù)同時訪問一個資源的互斥。
Heap*MP模塊:基于SharedRegion模塊,實現(xiàn)動態(tài)內(nèi)存分配。
MessageQ:采用上述各模塊,提供可變長結(jié)構(gòu)化消息隊列通信機制。
另外還有對各個核進行唯一ID管理的MultiProc,對處理器名稱管理的NameSever模塊等。
2.2 底層通信模塊SysLink的實現(xiàn)
運行SYS/BIOS系統(tǒng)的處理器間可以通過IPC模塊完成核間的通信,而運行Linux的ARM要想與之通信則需要提供類似的IPC模塊,為了簡化程序的開發(fā),采用SysLink底層通信模塊來實現(xiàn)ARM與其他處理器核的通信。
SysLink是一套軟件與相關(guān)工具的集合,為運行在ARM上的Linux和運行在其他處理器核上的RTOS提供統(tǒng)一的進程間通信的接口[5]。在ARM側(cè)SysLink作為內(nèi)核驅(qū)動,可以在Linux用戶空間方便操作核間中斷、自旋鎖等硬件;在DSP側(cè)SysLink基于IPC模塊進行封裝,供開發(fā)者使用。
SysLink使用戶應(yīng)用程序不用關(guān)心進程間的通信是在同一個處理器核上還是在不同的處理器核上,而視頻數(shù)據(jù)的共享與核間傳遞則采用共享內(nèi)存的方式實現(xiàn)。DM816x基于SysLink的軟件設(shè)計架構(gòu)如圖4所示。
圖4 基于SysLink的軟件框架
為了驗證上述基于SysLink/IPC底層通信模塊的高效性,設(shè)計了一個多路高清音視頻采集、編碼、傳輸系統(tǒng)。系統(tǒng)硬件設(shè)計框圖如圖5所示。
系統(tǒng)采用DVRRDK軟件包進行開發(fā),DVRRDK將運行在各個核上的線程統(tǒng)一為Link結(jié)構(gòu),一個Link即為具有一定功能的線程及相關(guān)數(shù)據(jù)結(jié)構(gòu)的組合,每個Link都有一個唯一的ID,可以有一個或多個輸入隊列和輸出隊列以及Notify機制通知新數(shù)據(jù)是否準(zhǔn)備好,并通過prevId和nextId與該Link之前的preLink和之后的nextLink進行連接形成一個數(shù)據(jù)鏈,而Link中的各個線程則通過MessageQ、信號量等線程通信機制進行同步與互斥,對于視頻數(shù)據(jù)則通過核間共享內(nèi)存避免了數(shù)據(jù)的轉(zhuǎn)移,實現(xiàn)了高效的核間數(shù)據(jù)共享。
運行在各個處理器核中的Link如表1所示。
圖5 高清音視頻系統(tǒng)框圖
表1 系統(tǒng)中主要Link分配
處理器核(CPU類型)運行的LinkHDVICP(ARM968)Encoder、DecoderHDVPSS(ARM968)Caputre、Display、Merge、NoiseFilter等DSP(C674x)AlgLink(OSD、AAC)、其他算法ARM(cortexA8)與其他核數(shù)據(jù)交互的Link及控制線程、文件讀寫等
在多路視音頻應(yīng)用中通過HDVPSS驅(qū)動視頻AD采集視頻數(shù)據(jù)[6],然后將2路高清視頻數(shù)據(jù)經(jīng)過Merge Link合并成一個輸出隊列,由DSP完成視頻數(shù)據(jù)的OSD疊加處理,視頻數(shù)據(jù)流進入Dup Link復(fù)用形成兩個輸出隊列分別送往Display Link和Encoder Link,同時ARM將Encoder Link送來的數(shù)據(jù)進行存儲或傳輸。音頻數(shù)據(jù)則采用ALSA框架進行音頻采集,然后送往DSP進行編碼,再由ARM進行存儲、傳輸。系統(tǒng)中的數(shù)據(jù)鏈路圖如圖6所示。
圖6 系統(tǒng)數(shù)據(jù)鏈路圖
系統(tǒng)在ARM核的控制下,完成2路1 080p@60 f/s(幀/秒)視頻的采集并處理,由DSP完成圖片、文本等信息的OSD疊加,同時由Video M3完成2路視頻的實時H.264 High Profile編碼,并通過ARM進行音視頻的存儲和網(wǎng)絡(luò)傳輸。系統(tǒng)中各核之間高效協(xié)作,完成了在單核甚至多核ARM或DSP中難以完成的任務(wù)。
本文研究了嵌入式異構(gòu)多核處理器中各個處理核間的通信與協(xié)作機制,以達芬奇系列高性能處理器DM816x為例,從硬件結(jié)構(gòu)到軟件框架詳細分析了處理核之間任務(wù)通信與協(xié)作的實現(xiàn)過程,并基于文章所述的多核間通信機制設(shè)計了多路高清音視頻應(yīng)用系統(tǒng),系統(tǒng)在各個處理核的高效協(xié)作下,完成了多路高清音視頻的采集、編碼、處理等任務(wù)。
[1]高玉龍.達芬奇技術(shù)開發(fā)基礎(chǔ)、原理與實例[M].北京:電子工業(yè)出版社,2012.
[2]蔣建春.異構(gòu)多核嵌入式軟件關(guān)鍵問題研究[D].重慶:重慶大學(xué),2011.
[3]Texas Instruments.TMS320DM816x DaVinci digital video processors technical reference manual[EB/OL].[2014-08-27].http://www.ti.com/lit/ug/sprugx8b/sprugx8b.pdf.
[4]馬清勇.片上網(wǎng)絡(luò)(NoC)互連技術(shù)研究[D].成都:電子科技大學(xué),2013.
[5]Texas Instruments.SysLink user guide [EB/OL].[2014-08-21].http://www.ti.com.[6]王帥,劉峰.基于TMS320DM368的高清視頻采集系統(tǒng)設(shè)計與實現(xiàn)[J].電視技術(shù),2013,37(7):43-45.
國常義(1990— ),碩士生,主研圖像處理與多媒體通信;
李超群(1991— ),碩士生,主研圖像處理與多媒體通信;
劉 峰(1964— ),博士,教授,博士生導(dǎo)師,主研圖像處理與多媒體通信、高速DSP 與嵌入式系統(tǒng)。
責(zé)任編輯:閆雯雯
Research on Inter-processor Communication for DaVinci Heterogeneous Multi-core Processors
GUO Changyi, LI Chaoqun, LIU Feng
(JiangsuKeyLaboratoryofImageProcessing&Communication,NanjingUniversityofPostsandTelecommunications,Nanjing210003,China)
The communication mechanism of the cores covering ARM core, DSP core and co-processors in general DaVinci heterogeneous multi-core processors is researched in this paper.The basic principle of inter-processor communication(IPC for short) is analyzed and then the interconnection of cores and the implementation of the IPC software are delivered for TMS320DM816x series DaVinci multi-core processors.Finally, a multi-channel HD video and audio system based on SysLink is developed to verify the IPC.The system is efficient and the IPC works well.
heterogeneous multi-core; inter-processor communication; SysLink; TMS320DM816x
江蘇省高校自然科學(xué)研究項目(13KJA510004;12KJB510019);廣州市軟件和信息服務(wù)業(yè)發(fā)展專項資金項目(2060404)
TN915.04
A
10.16280/j.videoe.2015.07.012
2014-09-18
【本文獻信息】國常義,李超群,劉峰.達芬奇異構(gòu)多核處理器核間通信技術(shù)研究[J].電視技術(shù),2015,39(7).