新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > TMS320C6678存儲器訪問性能(上)

TMS320C6678存儲器訪問性能(上)

—— TMS320C6678存儲器訪問性能
作者: 時間:2015-06-27 來源:網(wǎng)絡(luò) 收藏

  表3 列出了在1GHz C6678 EVM(64-bit 1333MTS DDR)上,在不同情況下用EDMA,IDMA和DSP核做大塊連續(xù)數(shù)據(jù)拷貝測得的吞吐量。

本文引用地址:http://m.butianyuan.cn/article/276392.htm

  在這些測試中,L1上的測試數(shù)據(jù)塊的大小是8KB;IDMA LL2->LL2 拷貝的數(shù)據(jù)塊的大小是32KB;其它DSP核拷貝測試的數(shù)據(jù)塊的大小是64KB,其它EDMA拷貝測試的數(shù)據(jù)塊大小是128KB。

  吞吐量由拷貝的數(shù)據(jù)量除以消耗的時間得到。

  

 

  表3 DSP核,EDMA和IDMA數(shù)據(jù)拷貝的吞吐量比較

  總的來說,DSP核可以高效地訪問內(nèi)部,而用DSP 核訪問外部則不是有效利用資源的方式;IDMA非常適用于DSP核本地 (L1D,L1P,LL2) 內(nèi)連續(xù)數(shù)據(jù)塊的傳輸,但它不能訪問共享存儲器(SL2, DDR) ;而外部存儲器的訪問則應(yīng)盡量使用EDMA。

  Cache配置顯著地影響DSP核的訪問性能,Prefetch buffer也能提高讀訪問的效率,但它們不影響EDMA和IDMA。這里所有DSP核的測試都是基于cold cache(cache 和Prefetch buffer在測試前被清空)。

  對DSP核,SL2可以通過從0x0C000000開始的缺省地址空間被訪問,通常這個地址空間被設(shè)置為cacheable 而且prefetchable。SL2可以通過XMC(eXtended Memory Controller) 被重映射到其它存儲器空間,通常重映射空間被用作non-cacheable, nonprefetchable訪問(當然它也可以被設(shè)置為cacheable 而且prefetchable)。通過缺省地址空間訪問比通過重映射空間訪問稍微快一點。

  前面列出的EDMA 吞吐量數(shù)據(jù)是在EDMA CC0(Channel Controller 0) TC0(Transfer Controller 0)上測得的,EDMA CC1和EDMA CC2的吞吐量比EDMA CC0低一些,后面有專門的章節(jié)來比較10個EDMA傳輸控制器的差別。

  3. DSP核訪問存儲器的時延

  L1和DSP核的速度相同,所以DSP核每個時鐘周期可以訪問L1存儲器一次。對一些特殊應(yīng)用,需要非??斓脑L問小塊數(shù)據(jù),可以把L1的一部分配置成普通RAM(而不是cache)來存放數(shù)據(jù)。

  通常,L1被全部配置成cache,如果cache訪問命中(hit),DSP核可在一個周期完成訪問;如果cache訪問沒有命中(miss),DSP核需要等待數(shù)據(jù)從下一級存儲器中被讀到cache中。

  本節(jié)討論DSP核訪問內(nèi)部存儲器和外部DDR存儲器的時延。下面是時延測試的偽代碼:

  

 

  3.1 DSP核訪問LL2的時延

  圖2是在1GHz C6678 EVM上測得的DSP核訪問LL2的時延。DSP核執(zhí)行512個連續(xù)的LDDW(LoaD Double Word) 或STDW(STore Double Word) 指令所花的時間被測量,平均下來每個操作所花的時間被畫在圖中。這個測試使用了32KB L1D cache。

  

 

  圖2 DSP核訪問LL2

  對LDB/STB和LDW/STW的測試表明,它們的時延與LDDW/STDW相同。

  由于L1D cache只有在讀操作時才會被分配,DSP核讀LL2總是通過L1D cache。所以,DSP核訪問LL2的性能高度依賴cache。多個訪問之間的地址偏移(stride)顯著地影響訪問效率,地址連續(xù)的訪問可以充分地利用cache;大于或等于64字節(jié)的地址偏移導致每次訪問都miss L1 cache因為L1D cache行大小是64 bytes。

  由于L1D cache不會在寫操作時被分配,并且這里的測試之前cache都被清空了,所以任何對LL2的寫操作都通過L1D write buffer(4x16bytes)。對多個寫操作,如果地址偏移小于16bytes,這些操作可能在write buffer中被合并成一個對LL2的寫操作,從而獲得接近平均每個寫操作用1個時鐘周期的效率。

  當多個寫操作之間的偏移是128bytes整數(shù)倍時,每個寫操作都訪問LL2的相同sub-bank(LL2包含兩個banks,每個bank包含4個總線寬度為16-byte的sub-bank),對相同sub-bank的連續(xù)訪問的時延是4個時鐘周期。對其它的訪問偏移量,連續(xù)的寫操作會訪問LL2不同的bank,這樣的多個訪問的在流水線上可以被重疊起來,從而使平均的訪問時延比較小。

  C66x核在C64x+核的基礎(chǔ)上有很多改進,C66x核的L2存儲器控制器和DSP核速度相同,而C64x+的L2存儲器控制器的運行速度是DSP核速度的1/2。圖3比較了C66x和C64x+Load/Store LL2存儲器的性能

  

 

  圖3 C66x和C64x+核在LL2上Load/Store的時延比較

  3.2 DSP核訪問SL2的時延

  圖4 是在1GHz C6678 EVM上測得的DSP核訪問SL2的時延。DSP核執(zhí)行512個連續(xù)的LDDW(LoaD Double Word) 或STDW(STore Double Word)指令所花的時間被測量,平均下來每個操作所花的時間被畫在圖中。測試中,L1D被配置成32KB cache。

  

 

  圖4 DSP核訪問SL2

  對LDB/STB和LDW/STW的測試表明,它們的時延LDDW/STDW相同。

存儲器相關(guān)文章:存儲器原理




關(guān)鍵詞: TMS320C6678 存儲器

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉