TMS320C6678多核DSP的核間通信方法

摘要:嵌入式應用中採用多處理系統所面臨的主要難題是多處理器內核之間的通信。對Key-Stone架構TMS320C6678 處理器的多核間通信機制進行研究,利用處理器間中斷和核間通信寄存器,設計並實現了多核之間的通信。從系統的角度出發,設計與仿真了兩種多核通信拓撲結構,並分析對比了性能。對設計多核DSP 處理器的核間通信有一定的指導價值。

關鍵詞: TMS320C6678;KeyStone;處理器間中斷;多核通信

 

嵌入式領域的處理器設計已向多核處理器迅速發展,TI公司的KeyStone 架構的多核處理器就是其中之一。2010年11月,TI公司發佈了最新的KeyStone 架構的8核DSP處理器TMS320C6678 ,每個C66x內核頻率爲1.25GHz,提供每秒高達40 GB MAC定點運算和20 GBFLOP 浮點運算能力;1片8核的TMS320C6678 提供等效達10 GHz的內核頻率,單精度浮點並行運算能力理論上可達160 GB FLOP,是TS201S 的50 倍、C67x+的115.2倍,適合於諸如油氣勘探、雷達信號處理以及分子動力學等對定浮點運算能力及實時性有較高要求的超高性能計算應用。

核間通信是多核處理器系統所面臨的主要難點,通信機制的優劣直接影響多核處理器的性能,高效的通信機制是發揮多核處理器高性能的重要保障。TMS320C6678 採用TI全新KeyStone多核架構,屬於單芯片多核架構,有別於常見的板載多芯片通信方式。而KeyStone 架構的通信研究纔剛剛起步,因多核通信複雜,需要搭建合適的通信拓撲結構,因此拓撲結構的選取會直接影響通信代價和並行計算的效率。TMS320C6678採用基於KeyStone架構的中斷控制器、核間通信寄存器以及合適的通信拓撲結構實現多核間的通信。通過中斷系統激活處理器,觸發具有通信功能的中斷服務程序,調用寄存器完成相應的功能,並通過合適拓撲結構完成通信。

基於以上分析,本文針對TMS320C6678多核處理器,首先分析了中斷控制器和核間中斷原理及其實現;然後分析了核間通信的原理,給出了通信的發起和響應的實現方法;最後介紹了主輔和數據流兩種多核通信的拓撲結構,並通過仿真對其通信代價進行了對比,得出了兩種結構的優缺點以及適用範圍。對設計多核處理器核間通信有一定指導意義。

1 TMS320C6678 中斷控制器

TMS320C6678採用基於KeyStone架構的中斷控制器INTC(Interrupt Controller )、激活處理器觸發相應的中斷服務程序,完成通信的第一步。首先需要配置中斷向量表,啓動CPU中斷功能。TMS320C6678 的CPU 可接收15箇中斷,其中:1個硬件異常(EXCEP)、1個不可屏蔽中斷(NMI)、1個復位(RESET)和12 個可屏蔽中斷(INT4~INT15), 中斷源支持最多128個。

中斷(IPI)和其他核心進行通信。在TMS320C6678中,核間中斷(IPC_LOCAL)默認對應91號事件, 而核間中斷屬於可屏蔽中斷, 通過中斷控制器可以映射到INT4 ~INT15 任意一箇中斷上。爲了實現核間中斷, 必須按以

下方式進行設置:

(1) 控制狀態寄存器(CSR) 中的全局中斷使能位置爲1,全局中斷使能;

(2) 中斷使能寄存器(IER) 中的NMIE位置爲1,可屏蔽中斷使能;

(3)中斷使能寄存器(IER) 將要映射的可屏蔽中斷的相應位置1 ;

(4)選擇91 號事件作爲中斷源, 映射事件到指定的物理中斷號。中斷髮生後, 將中斷標誌寄存器(IFR)的相應位置1 。

中斷髮生時,由事先配置好的中斷向量表跳入中斷服務程序(ISR),完成核間通信,如圖1 所示。


2 多核處理器的核間通信機制

多核處理器由中斷觸發通信後,配置相應的寄存器,以完成通信。TMS320C6678主要的核間通信寄存器有16個, 其中8個IPC中斷生成寄存器(IPCGR0~IPCGR7) 和8個IPC中斷確認寄存器(IPCAR0~IPCAR7)。將IPC 中斷生成寄存器IPCGRx(0≤x≤7) 的最後一位IPCG 位置1,就能產生對core_x 的中斷;1~3位是保留位,4~31位(SRCS0~SRCS27)提供了可以識別多達28種的中斷來源。IPC 中斷確認寄存器IPCARx(0≤x≤7) 的0~3位是保留位,4~31 位(SRCC0~SRCC27)分別對應28種不同的中斷來源。當SRCSx 被置1時,寄存器將相應的中斷確認寄存器的SRCCx 位置1。當中斷被確認後,寄存器將SRCCx和相應的SRCSx 位同時置0 。

當TMS320C6678的一個處理器覈准備與其他處理器核通信時,根據TMS320C6678 的中斷事件映射表, 引發91號事件,產生可屏蔽的核間中斷, 調用中斷服務例程。中斷服務例程IPC_ISR 函數設計如下:

voidIPC_ISR()

{

KICK0= KICK0_UNLOCK;

KICK1= KICK1_UNLOCK;

*(volatileuint32_t *) IPCGR[2] = 0x20;

*(volatileuint32_t *) IPCGR [2] |= 1;

KICK0= KICK0_UNLOCK;

KICK1= KICK1_UNLOCK;

}

以向core_2 發送0x20 信息的中斷爲例,對應的0x20 的信息存入SRCS 位中, 用於識別中斷源。同時將當前CPU 核心內的中斷產生寄存器IPCGR2 的最後一位IPCG位置1, 觸發IPC 中斷。當目標處理器核被中斷觸發後,會自動跳轉到中斷異常向量表中相應的入口點,讀取當前核心中斷產生寄存器IPCGRx (0≤x≤7 ),從寄存器的SRCS 位中獲取通信發起方傳來的核間信息。然後將信息存入對應的中斷確認寄存器IPCARx 中,清空SRCC 和相應的SRCS位, 用以接收下一次的核間中斷。其中的KICK0 和KICK1 爲陷阱控制寄存器, 用來避免通信衝突的發生。

3 拓撲結構設計與性能測試

以上對TMS320C6678 基本核間通信機制及其實現過程進行了分析, 但是要實現TMS320C6678 強大的多核功能, 必須從系統的角度上設計良好的並行計算方案,設計合適的系統並行拓撲是其中的關鍵所在。通信代價、帶寬和功能是評測通信的重要指標,下面介紹了兩種多核通信並行方式, 分析了它們的拓撲結構, 並對上述指標做了測試對比。

3.1 通信的拓撲結構

適用於多核DSP 通信的並行方式有兩種: 一種是主輔拓撲結構(Master Slave ),另一種是數據流拓撲結構(Data Flow)。

主輔拓撲結構, 在TMS320C6678 中如圖2所示。作爲主核(控制核)的處理器通過EDMA 與外部存儲器DDR進行數據交換,然後主核通過核間中斷與輔核通信。主核起到控制的作用, 所有輔核( 計算核) 的中斷都由控制核來處理,輔核只負責計算任務,輔核之間沒有任何核間通信的產生。


數據流拓撲結構, 在TMS320C6678中如圖3所示,是一種基於片上互聯的結構。每個處理器核均有單獨的處理單元和存儲媒介。第一個核與FPGA 或者外部存儲器DDR 相連, 核間通信順序產生。核間通信時每個處理器核既是控制核又是計算核, 核間傳遞的信息在每個核內都起到一箇中轉站的作用。

3.2 性能測試實驗

本文設計了核間通信測試程序來測試兩種結構。程序的功能是:當一個核收到來自其他核的中斷後, 立即確認並按照拓撲結構依次發出核間中斷,沒有其他耗時的操作。程序在TMDXEVM6678L評估板上進行仿真, 板載有一塊TMS320C6678芯片,處理器運行的頻率設置爲1 GHz ,採用的編譯環境是TI 公司的CCSv5.0。

通信測試結果如表1所示, 主輔結構運行完測試程序所需要的總通信代價是171 352 個時鐘週期。其中, 作爲主核的core_0 耗費116 311個時鐘週期, 而7 個輔核每個核均耗費7 863個時鐘週期。採用數據流結構運行完測試程序所需要的總通信代價是171 319個時鐘週期, 其中core_0 耗費21 385個時鐘週期,core_7 耗費21 366 個時鐘週期, 其他6個核耗費21 428 個時鐘週期。



如圖4所示,採用主輔結構時,作爲輔助核的7個核可以同時並行運行, 理論上通信時間可以減少到124 174 個時鐘週期。主輔結構由於利用了多核的並行處理, 總的通信時間是數據流結構的72.5%, 以測試環境中的1 GHz 的主頻計算, 則節省了47.1 μs 。主輔結構涉及到通信任務的分配,主核的設計困難,而且輔核之間不能通信。每個線程的執行時間可能是隨機的,作爲控制核的主核需要最優化負載均衡以達到系統最優的並行效率, 適用於高級的操作系統( 如Linux) 上,並預先要設定好每個核的通信線程,由操作系統進行調度。


數據流結構的優點是數據帶寬有保證,可擴展性好。但是設計過程複雜, 而且由於具有比較高的數據傳輸速率, 對通信帶寬有較高的要求,因此數據流結構更適用於簡單的實時系統。因爲每個數據單元的傳輸都是統一的, 結構相對簡單, 數據的通信也是有規律的,不過通信時間較長。

本文研究了基於TMS320C6678 多核DSP 處理器的核間通信, 深入分析了核間中斷、核間通信機制( 包括寄存器配置以及具體的實現方法), 討論及測試了主輔結構和數據流結構兩種多核通信的拓撲結構, 並對比了兩者的性能和優缺點。對設計多核DSP 處理器的核間通信有一定的指導價值。

發佈了117 篇原創文章 · 獲贊 294 · 訪問量 66萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章