引言隨著CPU速度的迅速提高,CPU與片外存儲(chǔ)器的速度差異越來(lái)越大,匹配CPU與外部存儲(chǔ)器的方法通常是采用Cache或者片上存儲(chǔ)器。微處理器中的片上存儲(chǔ)器結(jié)構(gòu)通常包含指令Cache、數(shù)據(jù)Cache或者片上存儲(chǔ)器。對(duì)于嵌入式設(shè)備上數(shù)據(jù)密集的應(yīng)用,數(shù)據(jù)Cache與片上存儲(chǔ)器相比存在以下缺陷:①片上存儲(chǔ)器是固定的單周期訪問(wèn),可在設(shè)計(jì)時(shí)(不是運(yùn)行時(shí))研究數(shù)據(jù)訪問(wèn)模式;而Cache還要考慮不命中的情況,因而有可變的數(shù)據(jù)訪問(wèn)時(shí)間,執(zhí)行時(shí)間的預(yù)測(cè)
引 言
隨著
CPU速度的迅速提高,CPU與片外存儲(chǔ)器的速度差異越來(lái)越大,匹配CPU與外部存儲(chǔ)器的方法通常是采用Cache或者片上存儲(chǔ)器。微處理器中的片上存儲(chǔ)器結(jié)構(gòu)通常包含指令Cache、數(shù)據(jù)Cache或者片上存儲(chǔ)器。
對(duì)于嵌入式設(shè)備上數(shù)據(jù)密集的應(yīng)用,數(shù)據(jù)Cache與片上存儲(chǔ)器相比存在以下缺陷:
①片上存儲(chǔ)器是固定的單周期訪問(wèn),可在設(shè)計(jì)時(shí)(不是運(yùn)行時(shí))研究數(shù)據(jù)訪問(wèn)模式;而Cache還要考慮不命中的情況,因而有可變的數(shù)據(jù)訪問(wèn)時(shí)間,執(zhí)行時(shí)間的預(yù)測(cè)更加困難。
②使用Cache執(zhí)行時(shí)間的不可預(yù)測(cè)性影響編譯器的優(yōu)化。
③細(xì)顆粒的Cache對(duì)于圖像編碼等的規(guī)則數(shù)據(jù)訪問(wèn)并不合適,因而使用Cache對(duì)于嵌入式設(shè)備可能不是最優(yōu)的。對(duì)于大多數(shù)應(yīng)用,使用片上存儲(chǔ)器比使用數(shù)據(jù)Cache能耗平均節(jié)省約
40%,芯片面積與時(shí)間的乘積僅為Cache的46%,因而對(duì)于嵌入式多媒體處理器,片上RAM作為數(shù)據(jù)Cache的替代,功耗更低。片上存儲(chǔ)器的有效使用對(duì)于提高嵌入式應(yīng)用的速度、降低功耗具有重要的意義。
TMS320C55x(簡(jiǎn)稱為“C55x”)具有極低的功耗(0.05 mW/MIPS),非常適合手持設(shè)備,現(xiàn)在已經(jīng)集成至TT公司專門針對(duì)3G
手機(jī)的高性能多媒體處理器上。C55x片上除了
24KB的指令Cache外,還有64 KB的雙端口存儲(chǔ)器(DARAM)和96 KB的單端口存儲(chǔ)器(SARAM)。DARAM和SARAM總共
160 KB,分成20個(gè)塊,每個(gè)塊8 KB。本文以C55x上的視頻
編碼器為例,討論片上存儲(chǔ)器的有效使用。
1 數(shù)據(jù)的片外、片上動(dòng)態(tài)分配
因?yàn)槠洗鎯?chǔ)器比片外存儲(chǔ)器具有更強(qiáng)的數(shù)據(jù)訪問(wèn)能力和更低的訪問(wèn)功耗,所以盡可能分配數(shù)據(jù)到片上存儲(chǔ)器;未能分配到片上的數(shù)據(jù)可在CPU處理前轉(zhuǎn)移到片上;已經(jīng)轉(zhuǎn)移到片上的數(shù)據(jù),應(yīng)盡可能在片上保存,直到其生命期結(jié)束,以便盡可能減少數(shù)據(jù)從片外存儲(chǔ)器到片上存儲(chǔ)器的數(shù)據(jù)轉(zhuǎn)移。在視頻編碼等應(yīng)用中,標(biāo)量、常數(shù)相對(duì)矩陣而言,通常數(shù)量較少,可以分配到片上。若分配到片外,則在運(yùn)算時(shí)直接存取片外數(shù)據(jù),CPU流水線將會(huì)停滯。直接存儲(chǔ)器存取(
DMA)可以在存儲(chǔ)器之間、存儲(chǔ)器與外設(shè)之間轉(zhuǎn)移數(shù)據(jù),除了DMA通道參數(shù)初始化以外,DMA轉(zhuǎn)移數(shù)據(jù)和CPU處理數(shù)據(jù)可以并行進(jìn)行。
設(shè)置DMA通道參數(shù)需要一定的時(shí)間,用DMA來(lái)轉(zhuǎn)移單個(gè)變量或常數(shù)的開銷可能比直接存取更大,因此DMA適合轉(zhuǎn)移具有較多數(shù)據(jù)的矩陣,并不適合片外標(biāo)量的轉(zhuǎn)移。包含大量元素的矩陣可以分配到片外,處理前使用DMA轉(zhuǎn)移到片上存儲(chǔ)器。
局部變量由編譯器分配到軟件棧上,C55x具有兩個(gè)軟件!獢(shù)據(jù)棧和系統(tǒng)棧。C55x的棧有3種工作模式,可設(shè)置成雙16比特快返回模式,以減小棧所占的存儲(chǔ)器空間,并提高其運(yùn)行速度。數(shù)據(jù)棧和系統(tǒng)棧在函數(shù)調(diào)用及返回時(shí)同時(shí)訪問(wèn),可將這兩個(gè)棧分配到DARAM塊或者不同的SARAM塊內(nèi)。
本文中數(shù)據(jù)存儲(chǔ)器的分配,強(qiáng)調(diào)從實(shí)際多媒體應(yīng)用處理的基本數(shù)據(jù)塊出發(fā),分析簡(jiǎn)單、直觀。多媒體算法總是將原始輸入數(shù)據(jù)分成一定大小的塊來(lái)處理,并產(chǎn)生對(duì)應(yīng)該輸入的最后輸出。如果片上沒有足夠的存儲(chǔ)器,則大量的輸入數(shù)據(jù)和最后結(jié)果僅能存儲(chǔ)在片外。對(duì)于元素較多的矩陣,可以根據(jù)算法特征,將矩陣分成若干數(shù)據(jù)子塊,如H.
263編碼器中的宏塊和搜索窗等,或者單純根據(jù)可得到的片上存儲(chǔ)器數(shù)最