TMS320C6678存儲器訪(fǎng)問(wèn)性能(上)
表3 列出了在1GHz C6678 EVM(64-bit 1333MTS DDR)上,在不同情況下用EDMA,IDMA和DSP核做大塊連續數據拷貝測得的吞吐量。
本文引用地址:http://dyxdggzs.com/article/276392.htm在這些測試中,L1上的測試數據塊的大小是8KB;IDMA LL2->LL2 拷貝的數據塊的大小是32KB;其它DSP核拷貝測試的數據塊的大小是64KB,其它EDMA拷貝測試的數據塊大小是128KB。
吞吐量由拷貝的數據量除以消耗的時(shí)間得到。

表3 DSP核,EDMA和IDMA數據拷貝的吞吐量比較
總的來(lái)說(shuō),DSP核可以高效地訪(fǎng)問(wèn)內部存儲器,而用DSP 核訪(fǎng)問(wèn)外部存儲器則不是有效利用資源的方式;IDMA非常適用于DSP核本地存儲器 (L1D,L1P,LL2) 內連續數據塊的傳輸,但它不能訪(fǎng)問(wèn)共享存儲器(SL2, DDR) ;而外部存儲器的訪(fǎng)問(wèn)則應盡量使用EDMA。
Cache配置顯著(zhù)地影響DSP核的訪(fǎng)問(wèn)性能,Prefetch buffer也能提高讀訪(fǎng)問(wèn)的效率,但它們不影響EDMA和IDMA。這里所有DSP核的測試都是基于cold cache(cache 和Prefetch buffer在測試前被清空)。
對DSP核,SL2可以通過(guò)從0x0C000000開(kāi)始的缺省地址空間被訪(fǎng)問(wèn),通常這個(gè)地址空間被設置為cacheable 而且prefetchable。SL2可以通過(guò)XMC(eXtended Memory Controller) 被重映射到其它存儲器空間,通常重映射空間被用作non-cacheable, nonprefetchable訪(fǎng)問(wèn)(當然它也可以被設置為cacheable 而且prefetchable)。通過(guò)缺省地址空間訪(fǎng)問(wèn)比通過(guò)重映射空間訪(fǎng)問(wèn)稍微快一點(diǎn)。
前面列出的EDMA 吞吐量數據是在EDMA CC0(Channel Controller 0) TC0(Transfer Controller 0)上測得的,EDMA CC1和EDMA CC2的吞吐量比EDMA CC0低一些,后面有專(zhuān)門(mén)的章節來(lái)比較10個(gè)EDMA傳輸控制器的差別。
3. DSP核訪(fǎng)問(wèn)存儲器的時(shí)延
L1和DSP核的速度相同,所以DSP核每個(gè)時(shí)鐘周期可以訪(fǎng)問(wèn)L1存儲器一次。對一些特殊應用,需要非??斓脑L(fǎng)問(wèn)小塊數據,可以把L1的一部分配置成普通RAM(而不是cache)來(lái)存放數據。
通常,L1被全部配置成cache,如果cache訪(fǎng)問(wèn)命中(hit),DSP核可在一個(gè)周期完成訪(fǎng)問(wèn);如果cache訪(fǎng)問(wèn)沒(méi)有命中(miss),DSP核需要等待數據從下一級存儲器中被讀到cache中。
本節討論DSP核訪(fǎng)問(wèn)內部存儲器和外部DDR存儲器的時(shí)延。下面是時(shí)延測試的偽代碼:

3.1 DSP核訪(fǎng)問(wèn)LL2的時(shí)延
圖2是在1GHz C6678 EVM上測得的DSP核訪(fǎng)問(wèn)LL2的時(shí)延。DSP核執行512個(gè)連續的LDDW(LoaD Double Word) 或STDW(STore Double Word) 指令所花的時(shí)間被測量,平均下來(lái)每個(gè)操作所花的時(shí)間被畫(huà)在圖中。這個(gè)測試使用了32KB L1D cache。

圖2 DSP核訪(fǎng)問(wèn)LL2
對LDB/STB和LDW/STW的測試表明,它們的時(shí)延與LDDW/STDW相同。
由于L1D cache只有在讀操作時(shí)才會(huì )被分配,DSP核讀LL2總是通過(guò)L1D cache。所以,DSP核訪(fǎng)問(wèn)LL2的性能高度依賴(lài)cache。多個(gè)訪(fǎng)問(wèn)之間的地址偏移(stride)顯著(zhù)地影響訪(fǎng)問(wèn)效率,地址連續的訪(fǎng)問(wèn)可以充分地利用cache;大于或等于64字節的地址偏移導致每次訪(fǎng)問(wèn)都miss L1 cache因為L(cháng)1D cache行大小是64 bytes。
由于L1D cache不會(huì )在寫(xiě)操作時(shí)被分配,并且這里的測試之前cache都被清空了,所以任何對LL2的寫(xiě)操作都通過(guò)L1D write buffer(4x16bytes)。對多個(gè)寫(xiě)操作,如果地址偏移小于16bytes,這些操作可能在write buffer中被合并成一個(gè)對LL2的寫(xiě)操作,從而獲得接近平均每個(gè)寫(xiě)操作用1個(gè)時(shí)鐘周期的效率。
當多個(gè)寫(xiě)操作之間的偏移是128bytes整數倍時(shí),每個(gè)寫(xiě)操作都訪(fǎng)問(wèn)LL2的相同sub-bank(LL2包含兩個(gè)banks,每個(gè)bank包含4個(gè)總線(xiàn)寬度為16-byte的sub-bank),對相同sub-bank的連續訪(fǎng)問(wèn)的時(shí)延是4個(gè)時(shí)鐘周期。對其它的訪(fǎng)問(wèn)偏移量,連續的寫(xiě)操作會(huì )訪(fǎng)問(wèn)LL2不同的bank,這樣的多個(gè)訪(fǎng)問(wèn)的在流水線(xiàn)上可以被重疊起來(lái),從而使平均的訪(fǎng)問(wèn)時(shí)延比較小。
C66x核在C64x+核的基礎上有很多改進(jìn),C66x核的L2存儲器控制器和DSP核速度相同,而C64x+的L2存儲器控制器的運行速度是DSP核速度的1/2。圖3比較了C66x和C64x+Load/Store LL2存儲器的性能

圖3 C66x和C64x+核在LL2上Load/Store的時(shí)延比較
3.2 DSP核訪(fǎng)問(wèn)SL2的時(shí)延
圖4 是在1GHz C6678 EVM上測得的DSP核訪(fǎng)問(wèn)SL2的時(shí)延。DSP核執行512個(gè)連續的LDDW(LoaD Double Word) 或STDW(STore Double Word)指令所花的時(shí)間被測量,平均下來(lái)每個(gè)操作所花的時(shí)間被畫(huà)在圖中。測試中,L1D被配置成32KB cache。

圖4 DSP核訪(fǎng)問(wèn)SL2
對LDB/STB和LDW/STW的測試表明,它們的時(shí)延LDDW/STDW相同。
存儲器相關(guān)文章:存儲器原理
評論