《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > TMS320C6678多核DSP并行訪問存儲器性能的研究
TMS320C6678多核DSP并行訪問存儲器性能的研究
2014年微型機與應(yīng)用第13期
周 佩1,2,周維超1,王凱凱1,2
1.中國科學(xué)院光電技術(shù)研究所,四川 成都 6102092.中國科學(xué)院大學(xué),北京
摘要: 為充分挖掘多核DSP能力,結(jié)合TI的TMS320C6678 DSP的存儲器架構(gòu),分析了各個關(guān)鍵節(jié)點的理論數(shù)據(jù)傳輸帶寬,展開了對多核DSP主設(shè)備(CPU內(nèi)核、EDMA控制器)并行訪問存儲器(共享SL2、外部DDR3)的性能研究,并采用數(shù)據(jù)拷貝測試實驗進行驗證,最后討論了影響帶寬的因素,對多核軟件設(shè)計具有一定的指導(dǎo)意義。
Abstract:
Key words :

  摘  要: 為充分挖掘多核DSP能力,結(jié)合TI的TMS320C6678 DSP的存儲器架構(gòu),分析了各個關(guān)鍵節(jié)點的理論數(shù)據(jù)傳輸帶寬,展開了對多核DSP主設(shè)備(CPU內(nèi)核、EDMA控制器)并行訪問存儲器(共享SL2、外部DDR3)的性能研究,并采用數(shù)據(jù)拷貝測試實驗進行驗證,最后討論了影響帶寬的因素,對多核軟件設(shè)計具有一定的指導(dǎo)意義。

  關(guān)鍵詞: 多核DSP;存儲器性能;TMS320C6678

  嵌入式領(lǐng)域的處理器設(shè)計已向多核處理器迅速發(fā)展,TI最新的8核DSP處理器TMS320C6678(以下簡稱C6678),每個內(nèi)核頻率為1.25 GHz,提供高達40 GB/s MAC定點運算和20 GB/s FLOP浮點運算能力[1],在信號處理、圖像處理等對定浮點運算能力及實時性要求較高的領(lǐng)域得到了廣泛應(yīng)用。

  多核環(huán)境下并行訪問存儲器的性能是多核系統(tǒng)設(shè)計和應(yīng)用開發(fā)的難點之一。郝朋朋[2]研究了多核處理器的體系結(jié)構(gòu),但沒有對帶寬進行實驗測試和結(jié)果分析;吳灝[3]分析了多核DSP的核間通信方法。而本文基于TMS320C6678 DSP,詳細闡述了多核DSP并行訪問存儲器的性能,分析了影響帶寬的因素以及瓶頸所在,對多核軟件設(shè)計具有一定的指導(dǎo)意義。

  1 C6678多核DSP存儲器架構(gòu)

  存儲器訪問性能對于DSP的軟件運行是至關(guān)重要的。C6678 DSP所有的存儲器都可以被DSP內(nèi)核和多個DMA主設(shè)備訪問。圖1顯示了C6678的存儲器系統(tǒng)架構(gòu)框圖,總線上的數(shù)字代表總線寬度,大部分模塊運行在1/2或1/3 DSP內(nèi)核頻率[1]。

001.jpg

  1.1 C66x內(nèi)核

  C6678集成了8個C66x核,每個內(nèi)核具有以下性能。(1)32 KB L1D(Level 1 Data)SRAM,運行在DSP內(nèi)核頻率,可用于數(shù)據(jù)存儲或緩存;(2)32 KB L1P(Level 1 Program)SRAM,運行在DSP內(nèi)核頻率,可用于程序存儲或緩存;(3)512 KB LL2(Local Level2)SRAM,運行在1/2 DSP內(nèi)核頻率,可用于程序或數(shù)據(jù)的存儲RAM或緩存[4]。

  所有的DSP內(nèi)核共享4 MB SL2(Shared Level 2)SRAM,運行在1/2 DSP內(nèi)核頻率,有4個bank區(qū),可用于數(shù)據(jù)或代碼存儲[5]。C6678提供了64位1 333 MHz DDR3 SDRAM接口,最高支持8 GB的外部存儲,可用于數(shù)據(jù)或程序存儲。

  C6678運行在1 GHz的時鐘頻率下,每個C66x內(nèi)核可以執(zhí)行每周期128位的加載和存儲操作。當(dāng)訪問L1D時,DSP內(nèi)核的訪問速度高達16 GB/s(如表1所示)。當(dāng)訪問L2存儲空間時,速率依賴于存儲器訪問模式和緩存配置。C6678提供了內(nèi)部DMA(IMDA)引擎用于數(shù)據(jù)搬移,運行在1/2 DSP內(nèi)核頻率,處理速度高達8 GB/s。IDMA只能用于L1、LL2和外設(shè)端口之間的數(shù)據(jù)搬移,不能訪問外部存儲器[1,4]。

  1.2 EDMA傳輸控制器

  C6678 DSP提供了10個EDMA傳輸控制器TC,可以同時用于器件任意存儲節(jié)點(L1、L2、外部存儲和片上外設(shè))之間的數(shù)據(jù)移動[1]。其中兩個EDMA傳輸控制器連接著256 bit高速TeraNet交換橋,運行在1/2 DSP內(nèi)核頻率,理論上可以支持高達16 GB/s的數(shù)據(jù)帶寬;其余8個EDMA傳輸控制器連接著128 bit低速TeraNet交換橋,運行在1/3 DSP內(nèi)核頻率,理論上可以支持高達5.333 GB/s的數(shù)據(jù)帶寬(如表1所示)。EDMA結(jié)構(gòu)設(shè)計了許多特性,專門用于同時進行多個高速數(shù)據(jù)傳輸。了解這些結(jié)構(gòu)和數(shù)據(jù)傳輸、交互的方式,才可以建立有效的系統(tǒng),并最大化EDMA傳輸帶寬。

  1.3 多核DSP的理論帶寬

  從以上的存儲器結(jié)構(gòu)可以分析C6678 DSP的主設(shè)備(C66x核和EDMA)訪問不同存儲器(L1D、L1P、LL2、SL2、DDR3)的理論帶寬,它是由該節(jié)點的數(shù)據(jù)寬度和時鐘頻率計算而得,如表1所示。

006.jpg

  C6678包括8個內(nèi)核和10個EDMA主設(shè)備,它們可以并行地訪問存儲器。每個DSP內(nèi)核集成了各自的L1D、L1P、LL2存儲器,而共享存儲器(SL2、DDR3)在多個主設(shè)備(DSP內(nèi)核、EDMA控制器)并行訪問時的性能,對系統(tǒng)資源的安排、軟件結(jié)構(gòu)的設(shè)計有著指導(dǎo)性的意義。接下來通過數(shù)據(jù)拷貝測試實驗對C6678并行訪問存儲器性能進行說明。

  2 并行訪問SL2的性能

  所有的主設(shè)備可以通過MSMC(Multicore Shared Memory Controller)訪問4個SL2 Bank。多個主設(shè)備可以并行地訪問不同的Bank;如果多個主設(shè)備訪問同一個Bank,是基于優(yōu)先級仲裁的[4]。

  2.1 多個DSP內(nèi)核共享SL2的情況

  圖2給出了1 GHz C6678的多個DSP內(nèi)核同時訪問SL2的性能測試數(shù)據(jù)。每個DSP內(nèi)核分別訪問它在SL2上的數(shù)據(jù)緩沖區(qū),帶寬是用拷貝的總字節(jié)數(shù)除以消耗的總時間。每個內(nèi)核L1D緩存是32 KB,沒有使用L2緩存。圖2右側(cè)圖例的每一行代表一次測試,不同測試中使用不同數(shù)目的DSP內(nèi)核同時訪問存儲器,空表示當(dāng)前DSP內(nèi)核沒有參與,柱狀圖表示了相應(yīng)DSP內(nèi)核的帶寬,最后給出了所有DSP內(nèi)核的總體帶寬。

002.jpg

  圖2(a)是DSP內(nèi)核從SL2向LL2拷貝數(shù)據(jù),每個內(nèi)核的帶寬穩(wěn)定在2 GB/s左右;圖2(b)是從DSP內(nèi)核從LL2向SL2拷貝數(shù)據(jù),每個內(nèi)核的帶寬將近3.6 GB/s??傮w帶寬隨著參與核數(shù)的增加幾乎成線性增長。以上測試結(jié)果表明,SL2不是多個內(nèi)核同時訪問SL2的瓶頸,SL2有足夠的帶寬(理論64 GB/s)來支持多個內(nèi)核同時訪問,吞吐量限制是在于DSP內(nèi)核本身。由于SL2帶寬完全可以滿足多個處理器同時訪問,內(nèi)核的優(yōu)先級對于這些情況就不重要了。

  2.2 多個EDMA共享SL2的情況

003.jpg

  圖3給出了1 GHz C6678的多個EDMA同時訪問SL2的性能測試數(shù)據(jù)。每個EDMA分別訪問它在SL2上的數(shù)據(jù)緩沖區(qū),帶寬是用拷貝的總字節(jié)數(shù)除以消耗的總時間。圖3右側(cè)圖例的每一行代表一次測試,不同測試中使用不同數(shù)目的EDMA同時訪問存儲器,空表示當(dāng)前EDMA沒有參與,柱狀圖表示了相應(yīng)EDMA的帶寬,最后給出了所有EDMA的總體帶寬。

  因為C6678有10 TCs,但只有8個DSP內(nèi)核,在測試中,8個TC(DMA1 TC0~TC3, DMA2 TC0~TC3)用于SL2和每個內(nèi)核LL2之間的數(shù)據(jù)搬移,其他兩個TC(DMA0 TC0~~TC1)用于SL2和DDR3之間的數(shù)據(jù)搬移。圖3(a)和圖3(b)是在10個TC的優(yōu)先級相同、SL2分別作為目的地址和源地址的測試??梢钥闯隹傮w帶寬不超過16 GB/s,另外性能表現(xiàn):EDMA0>EDMA1>EDMA2,這是因為C6678的EDMA0專門為DDR3和SL2之間的數(shù)據(jù)傳輸進行了優(yōu)化[1]。圖3(c)和圖3(d)是在10個TC的優(yōu)先級不一樣、SL2分別作為目的地址和源地址的測試??梢钥闯隹傮w帶寬同樣不超過16 GB/s,低優(yōu)先級的EDMA分得較少的帶寬,對于那些數(shù)據(jù)負載非常嚴重的情況,一些低優(yōu)先級的EDMA可能會帶寬為0。

  由測試結(jié)果表明,雖然SL2有非常高的帶寬,但是所有的EDMA是通過TeraNet交換橋的同一個端口訪問SL2的,因此TeraNet總線是多個EDMA并行訪問SL2的瓶頸,它只有理論16 GB/s(500 MHz×32 B)的帶寬來支持多個EDMA同時訪問。如果EDMA的優(yōu)先級是一樣的,帶寬基本上平均分配,略有差異。可以注意到,即使優(yōu)先級相同的情況,DMA1 TC1和TC3,DMA2 TC1和TC2的帶寬比其他少。這是因為C6678的EDMA TC的FIFO大小和總線寬度不一樣(如表2所示)[1],TC的數(shù)據(jù)搬移能力存在一定的差異。

  3 并行訪問DDR3的性能

  如果幾個主設(shè)備同時訪問DDR3,則基于主設(shè)備的優(yōu)先級進行仲裁。實驗用的C6678板的DDR有8個Bank,盡管DDR3有多個Bank,但是不像SL2有多個總線連接到每個Bank,因此,Bank數(shù)目不會直接提高吞吐量。

  3.1 多個DSP內(nèi)核共享DDR3的情況

004.jpg

  圖4給出了不同應(yīng)用場景下多個DSP內(nèi)核共享   1 GHz C6678處理板的64 bit 1 333 MHz DDR3的性能。每個DSP內(nèi)核分別訪問DDR3上對應(yīng)的數(shù)據(jù)緩沖區(qū)。用拷貝的數(shù)據(jù)量除以消耗的總時間就得到了每個主設(shè)備的帶寬。圖4右側(cè)圖例的每一行代表一次測試,不同測試中使用不同數(shù)目的DSP內(nèi)核同時訪問DDR3,空表示當(dāng)前DSP內(nèi)核沒有參與,柱狀圖表示了相應(yīng)DSP內(nèi)核的帶寬,最后給出了所有DSP內(nèi)核的總體帶寬。

  在該測試中,DDR3支持緩存、支持預(yù)取,L1D緩存為32 KB,L2緩存為256 KB。非緩存的情況沒有測試,因為它的數(shù)據(jù)傳輸帶寬要小得多。多個內(nèi)核訪問相同Bank的性能較差;而多個內(nèi)核訪問不同Bank的性能較好,原因在于DDR3的行切換負載。

  圖4(a)~圖4(d)是在DSP內(nèi)核優(yōu)先級相同的情況下,DDR3(不同Bank/相同Bank)與LL2之間相互拷貝數(shù)據(jù)的帶寬性能。訪問DDR3不同Bank的性能較好,每個內(nèi)核的帶寬穩(wěn)定在1.4 GB/s左右,總體帶寬隨著參與核數(shù)的增加幾乎成線性增長,但不超過10.6 GB/s;而訪問DDR3相同bank的性能較差,在實際應(yīng)用中需要避免出現(xiàn)這樣的情況。圖4(e)和圖4(f)是在DSP內(nèi)核優(yōu)先級不一樣的情況下,DDR3(不同Bank)與LL2之間相互拷貝數(shù)據(jù)的帶寬性能。優(yōu)先級高的DSP內(nèi)核分得的帶寬較多,但優(yōu)先級對DSP內(nèi)核帶寬的影響沒有那么明顯;總體帶寬同樣隨著參與核數(shù)的增加幾乎成線性增長,但不超過10.6 GB/s。

  以上測試結(jié)果表明,DDR3帶寬(10 666 MB/s)對于所有的DSP內(nèi)核同時訪問是不夠的,不同內(nèi)核的優(yōu)先級會影響它們之間的帶寬分配。當(dāng)優(yōu)先級相同時,帶寬基本上平均分配;當(dāng)優(yōu)先級不一樣時,較低優(yōu)先級的分得較少的帶寬。

  3.2 多個EDMA共享DDR3的情況

005.jpg

  圖5給出了不同應(yīng)用場景下多個EDMA共享DDR3的性能。每個EDMA分別訪問DDR3上對應(yīng)的數(shù)據(jù)緩沖區(qū),帶寬是用拷貝的數(shù)據(jù)量除以消耗的總時間。圖5右側(cè)圖例的每一行代表一次測試,不同測試中使用不同數(shù)目的EDMA同時訪問DDR3,空表示當(dāng)前EDMA沒有參與,柱狀圖表示了相應(yīng)EDMA的帶寬,最后給出了總體帶寬。

  因為C6678有10個TC,但是只有8個DSP內(nèi)核,以上測試中,8個TC(DMA1 TC0~TC3,DMA2 TC0~TC3)用于傳輸DDR3和內(nèi)核的LL2之間的數(shù)據(jù),其余兩個TC(DMA0 TC0~TC1)用于傳輸DDR3與SL2之間的數(shù)據(jù)。EDMA TC訪問DDR相同Bank的性能較差;而EDMA TC訪問DDR不同Bank的性能較好。原因是由于DDR的行切換負載。

  圖5(a)~圖5(d)是在10個TC的優(yōu)先級相同、DDR3(不同Bank/相同Bank)分別作為目的地址和源地址的測試??梢钥闯隹傮w帶寬不超過10.6 GB/s,另外性能表現(xiàn):EDMA0>EDMA1>EDMA2。圖5(e)和圖5(f)是在10個TC的優(yōu)先級不同、DDR3(不同Bank/相同Bank)分別作為目的地址和源地址的測試??梢钥闯隹傮w帶寬同樣不超過10.6 GB/s,低優(yōu)先級的EDMA分得較少的帶寬,甚至為0。

  結(jié)果表明了DDR3沒有足夠的帶寬來支持EDMA TC同時訪問。優(yōu)先級影響著EDMA的帶寬分配,當(dāng)優(yōu)先級相同時,帶寬基本上平均分配,略有差異;當(dāng)優(yōu)先級不同時,較低優(yōu)先級的分得較少的帶寬。

  C6678的存儲器結(jié)構(gòu)決定了每個關(guān)鍵節(jié)點(CPU內(nèi)核、EDMA、TeraNet總線、SL2、DDR3等)的帶寬能力。在兩個節(jié)點之間進行數(shù)據(jù)傳輸,帶寬會受到總線帶寬、源地址的吞吐量和目標地址的吞吐量3個因素的限制本文以數(shù)據(jù)拷貝測試實驗,詳細闡述了m個DSP內(nèi)核或者n個EDMA控制器(1≤m≤8,1≤n≤10)并行訪問SL2或DDR3存儲器的帶寬性能結(jié)果??梢钥偨Y(jié)為以下幾點:(1)優(yōu)先級會顯著影響EDMA的帶寬分配,但對DSP內(nèi)核表現(xiàn)得并不明顯。優(yōu)先級相同時,帶寬幾乎平均分配;優(yōu)先級不同時,低優(yōu)先級的分得較少的帶寬,甚至為0。(2)SL2有足夠大的帶寬支持多個主設(shè)備訪問,總體帶寬隨著主設(shè)備數(shù)目的增加而幾乎線性增加;但由于EDMA控制器都通過TeraNet總線傳輸數(shù)據(jù),因此,總線吞吐量成為了多個EDMA控制器訪問SL2的瓶頸。(3)DDR3的帶寬有限(10.6 GB/s),它是多個主設(shè)備并行訪問的瓶頸,特別要避免訪問相同Bank。這對于C6678 DSP應(yīng)用程序存儲器資源的安排、軟件結(jié)構(gòu)的設(shè)計有一定的指導(dǎo)價值。

  參考文獻

  [1] Texas Instruments. TMS320C6678 multicore fixed and floating-point digital signal processor data manual[Z]. 2011.

  [2] 郝朋朋,周煦林,唐藝菁,等.基于TMS320C6678多核處理器體系結(jié)構(gòu)的研究[J].微電子學(xué)與計算機,2012,29(12):171-175.

  [3] 吳灝,肖吉陽,范紅旗,等.TMS320C6678多核DSP的核間通信方法[J].電子技術(shù)應(yīng)用,2012,38(9):11-13.

  [4] Texas Instruments. TMS320C66x DSP CorePac user guide[Z]. 2011.

  [5] Texas Instruments. KeyStone architecture multicore shared memory controller(MSMC) user guide[Z]. 2011.



如需購買,請直接點擊,官方大促75折


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。