新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > TMS320C6678存儲器訪問性能(上)

        TMS320C6678存儲器訪問性能(上)

        —— TMS320C6678存儲器訪問性能
        作者: 時間:2015-06-27 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/276392.htm

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

          吞吐量由拷貝的數據量除以消耗的時間得到。

          

         

          表3 DSP核,EDMA和IDMA數據拷貝的吞吐量比較

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

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

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

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

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

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

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

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

          

         

          3.1 DSP核訪問LL2的時延

          圖2是在1GHz C6678 EVM上測得的DSP核訪問LL2的時延。DSP核執行512個連續的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)顯著地影響訪問效率,地址連續的訪問可以充分地利用cache;大于或等于64字節的地址偏移導致每次訪問都miss L1 cache因為L1D cache行大小是64 bytes。

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

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

          C66x核在C64x+核的基礎上有很多改進,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核執行512個連續的LDDW(LoaD Double Word) 或STDW(STore Double Word)指令所花的時間被測量,平均下來每個操作所花的時間被畫在圖中。測試中,L1D被配置成32KB cache。

          

         

          圖4 DSP核訪問SL2

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

        存儲器相關文章:存儲器原理




        關鍵詞: TMS320C6678 存儲器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 通辽市| 葫芦岛市| 土默特左旗| 五常市| 山东省| 延边| 罗城| 固始县| 社旗县| 济南市| 安丘市| 南平市| 徐水县| 五台县| 江达县| 新余市| 宁都县| 景东| 江油市| 扶余县| 岗巴县| 聊城市| 前郭尔| 辽阳县| 岳池县| 丰台区| 瑞昌市| 广汉市| 同德县| 梅河口市| 台北县| 阿鲁科尔沁旗| 水富县| 枣强县| 容城县| 玛多县| 张掖市| 岑溪市| 马尔康县| 呼和浩特市| 宜城市|