TMS320C6678存儲器訪問性能(上)
表3 列出了在1GHz C6678 EVM(64-bit 1333MTS DDR)上,在不同情況下用EDMA,IDMA和DSP核做大塊連續(xù)數(shù)據(jù)拷貝測得的吞吐量。
本文引用地址:http://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é)的地址偏移導(dǎo)致每次訪問都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)文章:存儲器原理
評論