文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)09-0011-03
嵌入式領(lǐng)域的處理器設(shè)計(jì)已向多核處理器迅速發(fā)展,TI公司的KeyStone架構(gòu)的多核處理器就是其中之一。2010年11月,TI公司發(fā)布了最新的KeyStone架構(gòu)的8核DSP處理器TMS320C6678,每個(gè)C66x內(nèi)核頻率為1.25 GHz,提供每秒高達(dá)40 GB MAC定點(diǎn)運(yùn)算和20 GB FLOP浮點(diǎn)運(yùn)算能力;1片8核的TMS320C6678提供等效達(dá)10 GHz的內(nèi)核頻率,單精度浮點(diǎn)并行運(yùn)算能力理論上可達(dá)160 GB FLOP,是TS201S的50倍、C67x+的115.2倍[1],適合于諸如油氣勘探、雷達(dá)信號(hào)處理以及分子動(dòng)力學(xué)等對(duì)定浮點(diǎn)運(yùn)算能力及實(shí)時(shí)性有較高要求的超高性能計(jì)算應(yīng)用。
核間通信是多核處理器系統(tǒng)所面臨的主要難點(diǎn),通信機(jī)制的優(yōu)劣直接影響多核處理器的性能,高效的通信機(jī)制是發(fā)揮多核處理器高性能的重要保障。TMS320C6678采用TI全新KeyStone多核架構(gòu),屬于單芯片多核架構(gòu),有別于常見(jiàn)的板載多芯片通信方式[2]。而KeyStone架構(gòu)的通信研究才剛剛起步,因多核通信復(fù)雜,需要搭建合適的通信拓?fù)浣Y(jié)構(gòu),因此拓?fù)浣Y(jié)構(gòu)的選取會(huì)直接影響通信代價(jià)和并行計(jì)算的效率[3]。TMS320C6678采用基于KeyStone架構(gòu)的中斷控制器、核間通信寄存器以及合適的通信拓?fù)浣Y(jié)構(gòu)實(shí)現(xiàn)多核間的通信。通過(guò)中斷系統(tǒng)激活處理器,觸發(fā)具有通信功能的中斷服務(wù)程序,調(diào)用寄存器完成相應(yīng)的功能,并通過(guò)合適拓?fù)浣Y(jié)構(gòu)完成通信。
基于以上分析,本文針對(duì)TMS320C6678多核處理器,首先分析了中斷控制器和核間中斷原理及其實(shí)現(xiàn);然后分析了核間通信的原理,給出了通信的發(fā)起和響應(yīng)的實(shí)現(xiàn)方法;最后介紹了主輔和數(shù)據(jù)流兩種多核通信的拓?fù)浣Y(jié)構(gòu),并通過(guò)仿真對(duì)其通信代價(jià)進(jìn)行了對(duì)比,得出了兩種結(jié)構(gòu)的優(yōu)缺點(diǎn)以及適用范圍。對(duì)設(shè)計(jì)多核處理器核間通信有一定指導(dǎo)意義。
1 TMS320C6678中斷控制器
TMS320C6678采用基于KeyStone架構(gòu)的中斷控制器INTC(Interrupt Controller)[4]、激活處理器觸發(fā)相應(yīng)的中斷服務(wù)程序,完成通信的第一步。
首先需要配置中斷向量表,啟動(dòng)CPU中斷功能。TMS320C6678的CPU可接收15個(gè)中斷,其中:1個(gè)硬件異常(EXCEP)、1個(gè)不可屏蔽中斷(NMI)、1個(gè)復(fù)位(RESET)和12個(gè)可屏蔽中斷(INT4~INT15),中斷源支持最多128個(gè)。每個(gè)核心通過(guò)事件控制器產(chǎn)生事件(Event),觸發(fā)核間中斷(IPI)和其他核心進(jìn)行通信。在TMS320C6678中,核間中斷(IPC_LOCAL)默認(rèn)對(duì)應(yīng)91號(hào)事件,而核間中斷屬于可屏蔽中斷,通過(guò)中斷控制器可以映射到INT4~INT15任意一個(gè)中斷上。為了實(shí)現(xiàn)核間中斷,必須按以下方式進(jìn)行設(shè)置:
(1)控制狀態(tài)寄存器(CSR)中的全局中斷使能位置為1,全局中斷使能;
(2)中斷使能寄存器(IER)中的NMIE位置為1,可屏蔽中斷使能;
(3)中斷使能寄存器(IER)將要映射的可屏蔽中斷的相應(yīng)位置1;
(4)選擇91號(hào)事件作為中斷源,映射事件到指定的物理中斷號(hào)。中斷發(fā)生后,將中斷標(biāo)志寄存器(IFR)的相應(yīng)位置1。
中斷發(fā)生時(shí),由事先配置好的中斷向量表跳入中斷服務(wù)程序(ISR),完成核間通信,如圖1所示。
2 多核處理器的核間通信機(jī)制
多核處理器由中斷觸發(fā)通信后,配置相應(yīng)的寄存器,以完成通信。TMS320C6678主要的核間通信寄存器有16個(gè),其中8個(gè)IPC中斷生成寄存器(IPCGR0~IPCGR7)和8個(gè)IPC中斷確認(rèn)寄存器(IPCAR0~IPCAR7)。將IPC中斷生成寄存器IPCGRx(0≤x≤7)的最后一位IPCG位置1,就能產(chǎn)生對(duì)core_x的中斷;1~3位是保留位,4~31位(SRCS0~SRCS27)提供了可以識(shí)別多達(dá)28種的中斷來(lái)源。IPC中斷確認(rèn)寄存器IPCARx(0≤x≤7)的0~3位是保留位,4~31位(SRCC0~SRCC27)分別對(duì)應(yīng)28種不同的中斷來(lái)源。當(dāng)SRCSx被置1時(shí),寄存器將相應(yīng)的中斷確認(rèn)寄存器的SRCCx位置1。當(dāng)中斷被確認(rèn)后,寄存器將SRCCx和相應(yīng)的SRCSx位同時(shí)置0。
當(dāng)TMS320C6678的一個(gè)處理器核準(zhǔn)備與其他處理器核通信時(shí),根據(jù)TMS320C6678的中斷事件映射表,引發(fā)91號(hào)事件,產(chǎn)生可屏蔽的核間中斷,調(diào)用中斷服務(wù)例程。中斷服務(wù)例程IPC_ISR函數(shù)設(shè)計(jì)如下:
void IPC_ISR()
{
KICK0 = KICK0_UNLOCK;
KICK1 = KICK1_UNLOCK;
*(volatile uint32_t *) IPCGR[2] = 0x20;
*(volatile uint32_t *) IPCGR [2] |= 1;
KICK0 = KICK0_UNLOCK;
KICK1 = KICK1_UNLOCK;
}
以向core_2發(fā)送0x20信息的中斷為例,對(duì)應(yīng)的0x20的信息存入SRCS位中,用于識(shí)別中斷源。同時(shí)將當(dāng)前CPU核心內(nèi)的中斷產(chǎn)生寄存器IPCGR2的最后一位IPCG位置1,觸發(fā)IPC中斷。當(dāng)目標(biāo)處理器核被中斷觸發(fā)后,會(huì)自動(dòng)跳轉(zhuǎn)到中斷異常向量表中相應(yīng)的入口點(diǎn),讀取當(dāng)前核心中斷產(chǎn)生寄存器IPCGRx(0≤x≤7),從寄存器的SRCS位中獲取通信發(fā)起方傳來(lái)的核間信息。然后將信息存入對(duì)應(yīng)的中斷確認(rèn)寄存器IPCARx中,清空SRCC和相應(yīng)的SRCS位,用以接收下一次的核間中斷。其中的KICK0和KICK1為陷阱控制寄存器,用來(lái)避免通信沖突的發(fā)生。
3 拓?fù)浣Y(jié)構(gòu)設(shè)計(jì)與性能測(cè)試
以上對(duì)TMS320C6678基本核間通信機(jī)制及其實(shí)現(xiàn)過(guò)程進(jìn)行了分析,但是要實(shí)現(xiàn)TMS320C6678強(qiáng)大的多核功能,必須從系統(tǒng)的角度上設(shè)計(jì)良好的并行計(jì)算方案,設(shè)計(jì)合適的系統(tǒng)并行拓?fù)涫瞧渲械年P(guān)鍵所在。通信代價(jià)、帶寬和功能是評(píng)測(cè)通信的重要指標(biāo),下面介紹了兩種多核通信并行方式,分析了它們的拓?fù)浣Y(jié)構(gòu),并對(duì)上述指標(biāo)做了測(cè)試對(duì)比。
3.1 通信的拓?fù)浣Y(jié)構(gòu)
適用于多核DSP通信的并行方式有兩種:一種是主輔拓?fù)浣Y(jié)構(gòu)(Master Slave)[5],另一種是數(shù)據(jù)流拓?fù)浣Y(jié)構(gòu)(Data Flow)[6]。
主輔拓?fù)浣Y(jié)構(gòu),在TMS320C6678中如圖2所示。作為主核(控制核)的處理器通過(guò)EDMA與外部存儲(chǔ)器DDR進(jìn)行數(shù)據(jù)交換,然后主核通過(guò)核間中斷與輔核通信。主核起到控制的作用,所有輔核(計(jì)算核)的中斷都由控制核來(lái)處理,輔核只負(fù)責(zé)計(jì)算任務(wù),輔核之間沒(méi)有任何核間通信的產(chǎn)生。
數(shù)據(jù)流拓?fù)浣Y(jié)構(gòu),在TMS320C6678中如圖3所示,是一種基于片上互聯(lián)的結(jié)構(gòu)。每個(gè)處理器核均有單獨(dú)的處理單元和存儲(chǔ)媒介。第一個(gè)核與FPGA或者外部存儲(chǔ)器DDR相連,核間通信順序產(chǎn)生。核間通信時(shí)每個(gè)處理器核既是控制核又是計(jì)算核,核間傳遞的信息在每個(gè)核內(nèi)都起到一個(gè)中轉(zhuǎn)站的作用。
3.2 性能測(cè)試實(shí)驗(yàn)
本文設(shè)計(jì)了核間通信測(cè)試程序來(lái)測(cè)試兩種結(jié)構(gòu)。程序的功能是:當(dāng)一個(gè)核收到來(lái)自其他核的中斷后,立即確認(rèn)并按照拓?fù)浣Y(jié)構(gòu)依次發(fā)出核間中斷,沒(méi)有其他耗時(shí)的操作。程序在TMDXEVM6678L評(píng)估板上進(jìn)行仿真,板載有一塊TMS320C6678芯片,處理器運(yùn)行的頻率設(shè)置為1 GHz,采用的編譯環(huán)境是TI公司的CCSv5.0。
通信測(cè)試結(jié)果如表1所示,主輔結(jié)構(gòu)運(yùn)行完測(cè)試程序所需要的總通信代價(jià)是171 352個(gè)時(shí)鐘周期。其中,作為主核的core_0耗費(fèi)116 311個(gè)時(shí)鐘周期,而7個(gè)輔核每個(gè)核均耗費(fèi)7 863個(gè)時(shí)鐘周期。采用數(shù)據(jù)流結(jié)構(gòu)運(yùn)行完測(cè)試程序所需要的總通信代價(jià)是171 319個(gè)時(shí)鐘周期,其中core_0耗費(fèi)21 385個(gè)時(shí)鐘周期,core_7耗費(fèi)21 366個(gè)時(shí)鐘周期,其他6個(gè)核耗費(fèi)21 428個(gè)時(shí)鐘周期。
如圖4所示,采用主輔結(jié)構(gòu)時(shí),作為輔助核的7個(gè)核可以同時(shí)并行運(yùn)行,理論上通信時(shí)間可以減少到124 174個(gè)時(shí)鐘周期。主輔結(jié)構(gòu)由于利用了多核的并行處理,總的通信時(shí)間是數(shù)據(jù)流結(jié)構(gòu)的72.5%,以測(cè)試環(huán)境中的1 GHz的主頻計(jì)算,則節(jié)省了47.1 μs。
主輔結(jié)構(gòu)涉及到通信任務(wù)的分配,主核的設(shè)計(jì)困難,而且輔核之間不能通信。每個(gè)線程的執(zhí)行時(shí)間可能是隨機(jī)的,作為控制核的主核需要最優(yōu)化負(fù)載均衡以達(dá)到系統(tǒng)最優(yōu)的并行效率,適用于高級(jí)的操作系統(tǒng)(如Linux)上,并預(yù)先要設(shè)定好每個(gè)核的通信線程,由操作系統(tǒng)進(jìn)行調(diào)度。
數(shù)據(jù)流結(jié)構(gòu)的優(yōu)點(diǎn)是數(shù)據(jù)帶寬有保證,可擴(kuò)展性好。但是設(shè)計(jì)過(guò)程復(fù)雜,而且由于具有比較高的數(shù)據(jù)傳輸速率,對(duì)通信帶寬有較高的要求,因此數(shù)據(jù)流結(jié)構(gòu)更適用于簡(jiǎn)單的實(shí)時(shí)系統(tǒng)。因?yàn)槊總€(gè)數(shù)據(jù)單元的傳輸都是統(tǒng)一的,結(jié)構(gòu)相對(duì)簡(jiǎn)單,數(shù)據(jù)的通信也是有規(guī)律的,不過(guò)通信時(shí)間較長(zhǎng)。
本文研究了基于TMS320C6678多核DSP處理器的核間通信,深入分析了核間中斷、核間通信機(jī)制(包括寄存器配置以及具體的實(shí)現(xiàn)方法),討論及測(cè)試了主輔結(jié)構(gòu)和數(shù)據(jù)流結(jié)構(gòu)兩種多核通信的拓?fù)浣Y(jié)構(gòu),并對(duì)比了兩者的性能和優(yōu)缺點(diǎn)。對(duì)設(shè)計(jì)多核DSP處理器的核間通信有一定的指導(dǎo)價(jià)值。
參考文獻(xiàn)
[1] Texas Instruments Inc. TMS320C6678 data manual[Z].2011.
[2] 邢向磊,周余,都思丹.基于ARM11MPCore的多核間通信機(jī)制研究[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(5):9-10,110.
[3] 謝子光.多核處理器核間通信技術(shù)研究[D].成都:電子科技大學(xué),2009.
[4] Texas Instruments Inc.KeyStone architecture interrupt controller user guide[Z].2011.
[5] 陳國(guó)兵.嵌入式異構(gòu)多核體系的片上通信[D].杭州:浙江大學(xué),2007.
[6] Texas Instruments Inc.Multicore design overview[Z].2011.