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

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

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

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

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

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

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

001.jpg

  1.1 C66x內(nèi)核

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

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

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

  1.2 EDMA傳輸控制器

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

  1.3 多核DSP的理論帶寬

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

006.jpg

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

  2 并行訪問(wèn)SL2的性能

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

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

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

002.jpg

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

  2.2 多個(gè)EDMA共享SL2的情況

003.jpg

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

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

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

  3 并行訪問(wèn)DDR3的性能

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

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

004.jpg

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

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

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

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

  3.2 多個(gè)EDMA共享DDR3的情況

005.jpg

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

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

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

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

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

  參考文獻(xiàn)

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

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

  [3] 吳灝,肖吉陽(yáng),范紅旗,等.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.



如需購(gòu)買(mǎi),請(qǐng)直接點(diǎn)擊,官方大促75折


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