TMS320C6678存儲(chǔ)器訪問性能 (下)
由于總共有10 個(gè)EDMA TC,而只有8 個(gè)DSP 核,在這些測(cè)試?yán)铮? 個(gè)TC 在SL2 和8 個(gè)核的LL2 之間傳輸數(shù)據(jù),另兩個(gè)TC 則在SL2 和DDR 之間傳輸數(shù)據(jù)。
本文引用地址:http://www.ex-cimer.com/article/276393.htm盡管SL2 本身的帶寬非常高,但所有EDMA 訪問SL2 時(shí)都需要經(jīng)過內(nèi)部總線交換網(wǎng)絡(luò)的一個(gè)相同的端口,這個(gè)端口就成了這種情況下的瓶頸。這個(gè)端口的理論帶寬是500MHz x 32 bytes = 16000MB/s。如果所有EDMA 傳輸?shù)膬?yōu)先級(jí)相同,帶寬會(huì)在這些傳輸之間平均分配。而當(dāng)優(yōu)先級(jí)不同時(shí)(上表中第二列是每個(gè)主模塊的優(yōu)先級(jí)),優(yōu)先級(jí)低的EDMA 傳輸?shù)玫降膸挶容^小。對(duì)負(fù)載很高的情況下,一些低優(yōu)先級(jí)的傳輸可能會(huì)被“餓死”,也就是說,得到的帶寬為0。
根據(jù)Table 6中列出的不同EDMA TC 的區(qū)別,EDMACC1 TC1 和TC3,EDMACC2 TC1 和TC2在某些情況下獲得的帶寬會(huì)比其它TC 小,即使優(yōu)先級(jí)相同。
2.2 多個(gè)主模塊共享DDR 的性能
多個(gè)主模塊同時(shí)訪問DDR 時(shí),DDR 控制器會(huì)根據(jù)主模塊的優(yōu)先級(jí)進(jìn)行仲裁。
C6678 的DDR 控制器支持包含1,2,4,或8 個(gè)banks 的DDR 存儲(chǔ)器。現(xiàn)在大多數(shù)DDR3 存儲(chǔ)器都包含8 個(gè)bank,以C6678 EVM 上的DDR 存儲(chǔ)器為例,它的組織結(jié)構(gòu)如圖11 所示。請(qǐng)注意,對(duì)不同的DDR 存儲(chǔ)器,每一行的大小可能會(huì)不同。
![](http://editerupload.eepw.com.cn/201506/d60eee5afc2ceb0c3d7bc8e5881dd915.jpg)
圖11 DDR bank 數(shù)據(jù)組織結(jié)構(gòu)
盡管DDR 存儲(chǔ)器有多個(gè)bank,但與SL2 的bank 不同的是,它們并沒有獨(dú)立的總線與控制器相連,而是共享相同的總線接口。所以,DDR 存儲(chǔ)器bank 的個(gè)數(shù)并不直接的影響帶寬,但它卻顯著的影響多個(gè)主模塊共享DDR 的效率。
DDR SDRAM 的訪問以行或頁為基礎(chǔ)。一個(gè)主模塊在訪問某個(gè)頁中的數(shù)據(jù)之前,這一頁必須首先被“打開”,然后這一頁中的內(nèi)容才可以被隨意訪問。如果主模塊想訪問同一個(gè)bank 中另一頁中的數(shù)據(jù),必須先關(guān)閉原先的頁,然后打開新的一頁。而頁切換(關(guān)閉/打開)操作需要消耗額外的時(shí)鐘周期。
每個(gè)bank 只可以有一頁被打開,DDR 存儲(chǔ)器的bank 數(shù)越多,頁切換的概率就越小。例如,一個(gè)主模塊在訪問了bank0 的0 頁后,它可以訪問bank1 的1 頁而不用關(guān)閉之前訪問的bank0 的0頁,然后這個(gè)主模塊可以自由的在這兩頁之間訪問而不會(huì)產(chǎn)生頁切換。包含8 個(gè)bank 的DDR 存儲(chǔ)器可以有8 頁同時(shí)被打開。
為了測(cè)試頁切換的影響,我們定義了兩種測(cè)試的數(shù)據(jù)結(jié)構(gòu)。
![](http://editerupload.eepw.com.cn/201506/dd2a675f4b89d06302cba4ab649bccd5.jpg)
圖12 多個(gè)主模塊訪問相同DDR bank 的不同頁
上面的情況是最壞的情況,頁切換的額外開銷被最大化。每換一個(gè)主模塊訪問就會(huì)導(dǎo)致一次頁切換。
下面的情況則是最佳情況,每個(gè)主模塊始終訪問打開的頁,而不會(huì)有任何頁切換發(fā)生。
![](http://editerupload.eepw.com.cn/201506/92fc2ee460a2cec59829028d06566935.jpg)
![](http://editerupload.eepw.com.cn/201506/299a1201d5954dfc07b84f289dc53c6f.jpg)
圖13 多個(gè)主模塊訪問不同DDR bank 的不同頁
2.2.1 多個(gè)DSP 核共享DDR 的性能
下面的表格列出了不同場(chǎng)景下多個(gè)DSP 核共享1GHz C6678 EVM 上64-bit 1333MTS DDR 的性能。每個(gè)主模塊反復(fù)訪問自己在DDR 中的數(shù)據(jù)buffer,在相同的時(shí)間內(nèi)(大概2 秒),每個(gè)主模塊傳輸?shù)臄?shù)據(jù)量被統(tǒng)計(jì);而每個(gè)主模塊獲得的帶寬則由數(shù)據(jù)量除以時(shí)間計(jì)算出來。
在這些測(cè)試中,DDR 是cacheable 且prefetchable 的,L1D cache 是32KB,L2 cache 是256KB,prefetch buffer 被使能。我們沒有測(cè)試Non-cacheable 的情況是因?yàn)镹on-cacheable 情況下每個(gè)核需要的帶寬比cacheable 的情況下要少很多。
在下面的表中,每列是一個(gè)測(cè)試場(chǎng)景的結(jié)果,不同測(cè)試場(chǎng)景的主要區(qū)別是同時(shí)訪問存儲(chǔ)器的主模塊的個(gè)數(shù),格子中的數(shù)據(jù)代表相應(yīng)的主模塊在這個(gè)測(cè)試場(chǎng)景下獲得的帶寬,一列中的空格代表對(duì)應(yīng)的主模塊在這個(gè)測(cè)試場(chǎng)景下未被使用。最后一行中的數(shù)據(jù)是在這個(gè)測(cè)試場(chǎng)景下所有主模塊獲得的帶寬的總和。
![](http://editerupload.eepw.com.cn/201506/20a9eb8405be9bd3212adf8faf8459d7.jpg)
![](http://editerupload.eepw.com.cn/201506/fcc0df3da54813f0581070e24c1363ad.jpg)
![](http://editerupload.eepw.com.cn/201506/4a43d1a1ba62d219ed95f9735e72027a.jpg)
表10 多個(gè)DSP 核共享DDR 的性能
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論