當前位置:首頁 > 單片機 > 單片機
[導讀]摘要TMS320C6678 有8 個C66x 核,典型速度是1GHz,每個核有 32KB L1D SRAM,32KB L1P SRAM 和 512KB LL2 SRAM;所有 DSP 核共享 4MB SL2 SRAM。一個 64-bit 1333MTS DDR3 SDRAM 接口可以支持8GB 外部擴展存儲器。存儲

摘要

TMS320C6678 有8 個C66x 核,典型速度是1GHz,每個核有 32KB L1D SRAM,32KB L1P SRAM 和 512KB LL2 SRAM;所有 DSP 核共享 4MB SL2 SRAM。一個 64-bit 1333MTS DDR3 SDRAM 接口可以支持8GB 外部擴展存儲器。

存儲器訪問性能對 DSP 上運行的軟件是非常關鍵的。在 C6678 DSP 上,所有的主模塊,包括多個DSP 核和多個DMA 都可以訪問所有的存儲器。

每個DSP 核每個時鐘周期都可以執(zhí)行最多128 bits 的load 或store 操作。在1GHz 的時鐘頻率下,DSP 核訪問L1D SRAM 的帶寬可以達到16GB/S。

DSP 的內部總線交換網絡,TeraNet,提供了 C66x 核(包括其本地存儲器),外部存儲器, EDMA 控制器,和片上外設之間的互連總共有 10 個 EDMA 傳輸控制器可以被配置起來同時執(zhí)行任意存儲器之間的數(shù)據傳輸。

本文為設計人員提供存儲器訪問性能評估的基本信息;提供各種操作條件下的性能測試數(shù)據;還探討了影響存儲器訪問性能的一些因素。

1. 存儲器系統(tǒng)簡介

TMS320C6678 有8 個C66x 核,每個核有:

· 32KB L1D (Level 1 Data) SRAM,它和DSP 核運行在相同的速度上,可以被用作普通的數(shù)據存儲器或數(shù)據cache。

· 32KB L1P (Level 1 Program) SRAM,它和DSP 核運行在相同的速度上,可以被用作普通的程序存儲器或程序cache。

· 512KB LL2 (Local Level 2) SRAM,它的運行速度是DSP 核的一半,可以被用作普通存儲器或cache,既可以存放數(shù)據也可以存放程序。

所有DSP 核共享4MB SL2 (Shared Level 2) SRAM,它的運行速度是DSP 核的一半,既可以存放數(shù)據也可以存放程序。

TMS320C6678 集成一個64-bit 1333MTS DDR3 SDRAM 接口,可以支持8GB 外部擴展存儲器,既可以存放數(shù)據也可以存放程序。它的總線寬度也可以被配置成32 bits 或16 bits。

存儲器訪問性能對 DSP 上軟件運行的效率是非常關鍵的。在 C6678 DSP 上,所有的主模塊,包括多個DSP 核和多個DMA 都可以訪問所有的存儲器。

每個DSP 核每個時鐘周期都可以執(zhí)行最多128 bits 的load 或store 操作。在1GHz 的時鐘頻率下,DSP 核訪問 L1D SRAM 的帶寬可以達到 16GB/S。當訪問二級(L2)存儲器或外部存儲器時,訪問性能主要取決于訪問的方式和cache。

每個 DSP 核有一個內部 DMA (IDMA),在 1GHz 的時鐘頻率下,它能支持高達 8GB/秒的傳輸。但IDMA 只能訪問L1 和LL2 以及配置寄存器,它不能訪問外部存儲器。

DSP 的內部總線交換網絡,TeraNet,提供了 C66x 核 (包括其本地存儲器) ,外部存儲器, EDMA 控制器,和片上外設之間的互聯(lián)。總共有 10 個 EDMA 傳輸控制器可以被配置起來同時執(zhí)行任意存儲器之間的數(shù)據傳輸。芯片內部有兩個主要的 TeraNet 模塊,一個用 128 bit 總線連接每個端點,速度是DSP 核頻率的1/3,理論上,在1GHz 的器件上每個端口支持 5.333GB/秒的帶寬;另一個 TeraNet 內部總線交換網絡用 256 bit 總線連接每個端點,速度是DSP 核頻率的1/2,理論上,在1GHz 的器件上每個端口支持16GB/秒的帶寬。

總共有10 個EDMA 傳輸控制器可以被配置起來同時執(zhí)行任意存儲器之間的數(shù)據傳輸。它們中的兩個連接到256-bit, 1/2 DSP 核速度的 TeraNet 內部總線交換網絡;另外8 個連接到128-bit, 1/3 DSP 核速度的 TeraNet 內部總線交換網絡。

圖1 展示了TMS320C6678 的存儲器系統(tǒng)。總線上的數(shù)字代表它的寬度。大部分模塊運行速度是DSP 核時鐘的1/n,DDR 的典型速度是1333MTS(Million Transfer per Second)。

圖1 TMS320C6678 存儲器系統(tǒng)

本文為設計人員提供存儲器訪問性能評估的基本信息;提供各種操作條件下的性能測試數(shù)據;還探討了影響存儲器訪問性能的一些因素。

本文對分析以下常見問題會有所幫助:

1. 應該用DSP 核還是DMA 來拷貝數(shù)據?

2. 一個頻繁訪問存儲器的函數(shù)會消耗多少時鐘周期?

3. 當多個主模塊共享存儲器時,對某個模塊的性能會有多大的影響?

本文中的大部分數(shù)據是在C6678 EVM (EValuation Module)板上測試得到的,它上面有64-bit 1333MTS 的DDR 存儲器。

2. DSP 核,EDMA3,IDMA 拷貝數(shù)據的性能比較

數(shù)據拷貝的帶寬由下面三個因素中最差的一個決定:

1. 總線帶寬

2. 源端吞吐量

3. 目的端吞吐量

表1 總結了C6678 上C66x 核,IDMA 和EDMA 的理論帶寬。

表1 1GHz C6678 上C66x 核,IDMA 和EDMA 的理論帶寬

表2 總結了C6678 EVM(64-bit 1333MTS DDR)上各種存儲器端口的理論帶寬。

表2 1GHz C6678 上各種存儲器端口的理論帶寬

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

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

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

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

總的來說,DSP 核可以高效地訪問內部存儲器,而用DSP 核訪問外部存儲器則不是有效利用資源的方式;IDMA 非常適用于DSP 核本地存儲器 (L1D,L1P,LL2) 內連續(xù)數(shù)據塊的傳輸,但它不能訪問共享存儲器 (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 吞吐量數(shù)據是在EDMA CC0 (Channel Controller 0) TC0 (Transfer Controller 0)上測得的,EDMA CC1 和EDMA CC2 的吞吐量比EDMA CC0 低一些,后面有專門的章節(jié)來比較10 個EDMA 傳輸控制器的差別。

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

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

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

本節(jié)討論DSP 核訪問內部存儲器和外部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)。對多個寫操作,如果地址偏移小于16 bytes,這些操作可能在write buffer 中被合并成一個對LL2 的寫操作,從而獲得接近平均每個寫操作用1 個時鐘周期的效率。

當多個寫操作之間的偏移是128 bytes 整數(shù)倍時,每個寫操作都訪問LL2 的相同sub-bank (LL2包含兩個banks,每個bank 包含4 個總線寬度為16-byte 的sub-bank),對相同sub-bank 的連續(xù)訪問的時延是4 個時鐘周期。對其它的訪問偏移量,連續(xù)的寫操作會訪問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 核執(zhí)行512 個連續(xù)的LDDW (LoaD Double Word) 或STDW (STore Double Word) 指令所花的時間被測量,平均下來每個操作所花的時間被畫在圖中。測試中,L1D 被配置成32KB cache。

圖4 DSP 核訪問SL2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如果被訪問的空間是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)顯著地影響訪問效率,地址連續(xù)的訪問可以充分地利用cache 和prefetch buffer;大于或等于64 字節(jié)的地址偏移導致每次訪問都miss L1 cache 因為L1D cache行大小是64 bytes;大于或等于128 字節(jié)的地址偏移導致每次訪問都miss L2 cache 因為L2 cache 行大小是128 bytes。

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

圖6 是在1GHz C6678 EVM(64-bit 1333MTS DDR)上測得的DSP 核訪問DDR 的時延。DSP核執(zhí)行512 個連續(xù)的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 控制器總是先把被訪問的數(shù)據所在的cache 行(128 bytes)讀進L2 cache,然后在cache 中改寫數(shù)據。被改寫是數(shù)據會在發(fā)生cache沖突或手工cache 回寫操作時被最終寫到外部存儲里。當寫操作的地址偏移是1024 bytes 的整數(shù)倍時,多個訪問在L2 cache 中發(fā)生沖突的概率很大,所以L2 cacheable 寫操作的時延會顯著地增加。最壞的情況下,每個寫操作都會導致一個cache 行的回寫 (之前的數(shù)據因為沖突而被替換/回寫)和一個cache 行的讀入(新的數(shù)據被分配到cache 中)。

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

 

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉