新聞中心

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

        TMS320C6678存儲器訪問性能(上)

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

          DSP核讀SL2通常會通過L1D cache,所以,和訪問LL2一樣,DSP核訪問SL2的性能高度依賴cache。

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

          XMC中還有一個prefetch buffer(8x128bytes),它可以被看作是一個額外的只對讀操作可用的cache。DSP核之外的每16-MB塊都可以通過MAR(Memory Attribute Register)的PFX(PreFetchable eXternally)bit 被配置為是否通過prefetch buffer讀,使能它會對多個主模塊共享的效率有很大幫助;它也能顯著地改善對SL2連續讀的性能。不過,prefetch buffer對寫操作沒有任何作用。

          SL2可以通過從0x0C000000開始的缺省的地址空間訪問,這個空間總是cacheable,通常它也被配置為prefetchable。SL2可以通過XMC的配置被重映射到其它地址空間,通常重映射空間被用作non-cacheable, nonprefetchable 訪問(當然它也可以被設置為cacheable而且prefetchable)。通過缺省地址空間訪問比通過重映射空間訪問稍微快一點,因為地址重映射需要一個額外的時鐘周期。

          由于L1D cache不會在寫操作時被分配,并且這里的測試之前cache都被清空了,所以任何對SL2的寫操作都通過L1D write buffer(4x16bytes)。對多個寫操作,如果地址偏移小于16bytes,這些操作可能在write buffer中被合并成一個對SL2的寫操作,從而獲得比較高的效率。XMC也有類似的寫合并buffer,它可以合并兩個在32 bytes內的寫操作,所以,對偏移小于32bytes的寫操作,XMC的寫buffer改善了寫操作的性能。

          當寫偏移是N*256 bytes時,每個寫操作總是訪問SL2相同的bank(SL2組織結構是4 bankx2sub-bankx 32 bytes),對相同bank的連續訪問間隔是4個時鐘周期。對其它的訪問偏移量,連續的寫操作會訪問SL2不同的bank,這樣的多個訪問的在流水線上可以被重疊起來,從而使平均的訪問時延比較小。

          圖5 比較了DSP核訪問SL2和LL2的訪問時延。對地址偏移小于16bytes的連續訪問,訪問SL2的性能和LL2幾乎相同。而對地址偏移比較大的連續訪問,訪問SL2的性能比LL2差。因此,SL2最適合于存放代碼。

          

         

          圖5 DSP核訪問SL2和LL2的性能比較

          3.3 DSP核訪問外部DDR存儲器的時延

          DSP核訪問外部DDR存儲器高度依賴cache。當DSP核訪問外部存儲器時,一個傳輸請求會被發給XMC。根據cacheable和prefetchable的設置,傳輸請求可能是下列情況中的一種:

          一個數據單元–如果存儲器空間是non-cacheable,nonprefetchable

          一個L1 cache line-如果存儲器空間是cacheable而沒有L2 cache,

          一個L2 cache line-如果存儲器空間是cacheable并且設置了L2 cache。

          如果要訪問的數據在L1/L2 cache或prefetch buffer中,則不會有傳輸請求發出。

          如果被訪問的空間是prefetchable的,可能還會產生額外的prefetch請求。

          外部存儲器的內容可以被緩存在L1 cache或/和L2 cache,或者都不用。DSP核之外的每16-MB存儲器塊都可以通過MAR(Memory Attribute Register)的PC(Permit Copy)bit被配置為是否通過cache訪問。如果PC比特為0,這段空間就不是cacheable的。如果PC比特是1而L2 cache大小為0(所有LL2都被用作普通SRAM),那外部存儲器的內容只會被L1 cache緩存。如果PC比特是1并且L2 cache大于0,則外部存儲器的內容可以被L1和L2 cache同時緩存。

          像訪問SL2一樣,對外部存儲器的讀操作也可以利用XMC里的prefetch buffer。它可以通過MAR(Memory Attribute Register)的PFX(PreFetchable eXternally)bit來配置。

          多個訪問之間的地址偏移(stride)顯著地影響訪問效率,地址連續的訪問可以充分地利用cache和prefetch buffer;大于或等于64字節的地址偏移導致每次訪問都miss L1 cache因為L1D cache行大小是64 bytes;大于或等于128字節的地址偏移導致每次訪問都miss L2 cache因為L2 cache行大小是128 bytes。

          如果發生cache miss,DSP需要等待外部數據傳輸完成。等待的時間是請求發出時間,數據傳輸時間或數據返回時間的總和。

          圖6是在1GHz C6678 EVM(64-bit 1333MTS DDR)上測得的DSP核訪問DDR的時延。DSP核執行512個連續的LDDW(LoaD Double Word)或STDW(STore Double Word)指令所花的時間被測量,平均下來每個操作所花的時間被畫在圖中。測試中,L1D被配置成32KB cache,LL2的256KB被設置為cache。

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

          注意,下面第二和第三個圖實際上是第一個圖左邊的放大。

          

         

          

         

          圖6 DSP核對DDR Load/Store的時延

          對地址偏移小于128 bytes的訪問,性能主要受cache的影響。

          L2 cache會在寫操作時被分配,對任何寫操作,cache控制器總是先把被訪問的數據所在的cache行(128 bytes)讀進L2 cache,然后在cache中改寫數據。被改寫是數據會在發生cache沖突或手工cache回寫操作時被最終寫到外部存儲里。當寫操作的地址偏移是1024 bytes的整數倍時,多個訪問在L2 cache中發生沖突的概率很大,所以L2 cacheable寫操作的時延會顯著地增加。最壞的情況下,每個寫操作都會導致一個cache行的回寫 (之前的數據因為沖突而被替換/回寫)和一個cache行的讀入(新的數據被分配到cache中)。

          當地址偏移大于512bytes時,DDR頁(行)切換開銷成為性能下降的主要因素。C6678 EVM上的DDR頁(行)大小或bank寬度是8KB,而DDR3存儲器包含8個banks。最壞的情況是,當訪問地址偏移量是64KB時,每個讀或寫操作都會訪問相同bank中一個新的行,而這種行切換會增加大約40個時鐘周期的時延。請注意,不同的DDR存儲器的時延可能會不一樣。

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



        上一頁 1 2 3 下一頁

        關鍵詞: TMS320C6678 存儲器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 灵台县| 蒙自县| 正宁县| 尚义县| 河池市| 景德镇市| 塔河县| 长沙县| 简阳市| 冕宁县| 宁晋县| 翼城县| 寿阳县| 龙山县| 金湖县| 德州市| 阜宁县| 敖汉旗| 永州市| 义乌市| 腾冲县| 衡南县| 南涧| 个旧市| 嘉定区| 华蓥市| 虹口区| 浦北县| 保亭| 上饶市| 民乐县| 休宁县| 上犹县| 松潘县| 西贡区| 高碑店市| 望城县| 开封市| 湘乡市| 遂平县| 临邑县|