當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 前 言 隨著CPU速度的迅速提高,CPU與片外存儲(chǔ)器的速度差異越來越大,匹配CPU與外部存儲(chǔ)器的方法通常是采用Cache或者片上存儲(chǔ)器。微處理器中片上存儲(chǔ)器結(jié)構(gòu)通常包含指令Cache ,數(shù)據(jù)Cache 或者片上存儲(chǔ)

前 言

隨著CPU速度的迅速提高,CPU與片外存儲(chǔ)器的速度差異越來越大,匹配CPU與外部存儲(chǔ)器的方法通常是采用Cache或者片上存儲(chǔ)器。微處理器中片上存儲(chǔ)器結(jié)構(gòu)通常包含指令Cache ,數(shù)據(jù)Cache 或者片上存儲(chǔ)器。對于嵌入式設(shè)備上的數(shù)據(jù)密集的應(yīng)用,數(shù)據(jù)Cache 與片上存儲(chǔ)器相比存在以下缺陷:(1) 片上存儲(chǔ)器是固定的單周期訪問,可在設(shè)計(jì)時(shí)而不是運(yùn)行時(shí)研究數(shù)據(jù)訪問模式;而Cache還要考慮擊不中的情況,因而有可變的數(shù)據(jù)訪問時(shí)間,執(zhí)行時(shí)間的預(yù)測更加困難。(2) 使用Cache 執(zhí)行時(shí)間的不可預(yù)測性影響編譯器的優(yōu)化;(3) 細(xì)顆粒的Cache 對于圖像編碼等的規(guī)則數(shù)據(jù)訪問并不合適,因而使用Cache 對于嵌入式設(shè)備可能不是最優(yōu)的。文指出,對于大多數(shù)應(yīng)用,使用片上存儲(chǔ)器比使用數(shù)據(jù)Cache能量平均大約節(jié)省40 % ,芯片面積與時(shí)間的乘積僅為Cache的46%。因而對于嵌入式多媒體處理器,片上RAM作為數(shù)據(jù)Cache的替代,功耗更低。片上存儲(chǔ)器的有效使用對于提高嵌入式應(yīng)用的速度,降低功耗具有重要的意義。

文討論了在同時(shí)具有數(shù)據(jù)Cache和片上SRAM的處理器上標(biāo)量和矩陣變量的存儲(chǔ)器分配方法。文以摩托羅拉公司的DSP56000為平臺,文以AMS Gepard DSP為平臺,分別討論了如何把數(shù)據(jù)分配到X/Y數(shù)據(jù)存儲(chǔ)器塊,以便最大限度地利用數(shù)據(jù)移動(dòng)的并行性。DSP56000片上X、Y數(shù)據(jù)存儲(chǔ)器都是單端口的,并且容量較小。與DSP56000不同,TI公司的TMS320C55x具有更多的數(shù)據(jù)總線,片上RAM容量更大,且分塊多,具有訪問能力更強(qiáng)的 DARAM。

TMS320C55x具有極低的功耗(0.05mW/MIPS) ,非常適合手持設(shè)備,現(xiàn)在已經(jīng)集成至TI 公司專門針對3G手機(jī)的高性能多媒體處理器上。C55x 片上除了24K字節(jié)的指令Cache外,還有64K字節(jié)的雙端口存儲(chǔ)器(DARAM),96K字節(jié)的單端口存儲(chǔ)器(SARAM)。DARAM和SARAM 總共160K字節(jié),分成20個(gè)塊,每個(gè)塊8K字節(jié)。本文以C55x的視頻編碼器為例,討論片上存儲(chǔ)器的有效使用。

數(shù)據(jù)的片外、片上動(dòng)態(tài)分配

因?yàn)槠洗鎯?chǔ)器比片外存儲(chǔ)器具有更高的數(shù)據(jù)訪問能力和更小的訪問功耗,所以盡可能分配數(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ù)相對于矩陣而言,通常數(shù)量較少,可以分配到片上;若分配到片外,在運(yùn)算時(shí)直接存取片外數(shù)據(jù),CPU流水線將會(huì)停滯。直接存儲(chǔ)器存?。―MA)可以在存儲(chǔ)器之間,存儲(chǔ)器與外設(shè)之間轉(zhuǎn)移數(shù)據(jù),除了DMA通道參數(shù)初始化以外,DMA轉(zhuǎn)移數(shù)據(jù)和CPU處理數(shù)據(jù)可以并行進(jìn)行。設(shè)置DMA通道參數(shù)需要一定的時(shí)間,采用DMA來轉(zhuǎn)移單個(gè)變量或常數(shù)的開銷可能比直接存取更大,因此DMA適合轉(zhuǎn)移具有較多數(shù)據(jù)的矩陣,并不適合片外標(biāo)量的轉(zhuǎn)移。包含大量元素的矩陣可以分配到片外,處理前使用DMA轉(zhuǎn)移到片上存儲(chǔ)器。

局部變量由編譯器分配到軟件棧上,C55x具有兩個(gè)軟件棧:數(shù)據(jù)棧和系統(tǒng)棧。C55x的棧有三種工作模式,可設(shè)置成雙16比特快返回模式,以減少棧所占的存儲(chǔ)器空間,并提高其運(yùn)行速度。數(shù)據(jù)棧和系統(tǒng)棧在函數(shù)調(diào)用及返回時(shí)同時(shí)訪問,可將這兩個(gè)棧分配到DARAM塊或者不同的SARAM塊內(nèi)。

本文中數(shù)據(jù)存儲(chǔ)器的分配,強(qiáng)調(diào)從實(shí)際多媒體應(yīng)用處理的基本數(shù)據(jù)塊出發(fā),分析簡單直觀。多媒體算法總是將原始輸入數(shù)據(jù)分成一定大小的塊進(jìn)行處理,并產(chǎn)生對應(yīng)該輸入的最后輸出。如果片上沒有足夠的存儲(chǔ)器,大量的輸入數(shù)據(jù)和最后結(jié)果僅能可存儲(chǔ)在片外。對于元素較多的矩陣,可以根據(jù)算法特征將矩陣分成若干數(shù)據(jù)子塊,如H.263編碼器中的宏塊,搜索窗等,或者單純根據(jù)可得到的片上存儲(chǔ)器數(shù)量分成適當(dāng)大小的子塊逐個(gè)運(yùn)算,然后分析數(shù)據(jù)子塊的生命期和使用頻率。我們定義數(shù)據(jù)子塊的生命期為首次使用到最后一次使用之間的間隔,而通常變量的生命期為定義到最后使用之間的間隔,例如定義整型數(shù)組int MB[384],用來存儲(chǔ)待編碼宏塊的數(shù)據(jù),圖像的某個(gè)宏塊的數(shù)據(jù)在該宏塊編碼結(jié)束后,該宏塊數(shù)據(jù)的生命期也就結(jié)束,然后該數(shù)組用來存儲(chǔ)下一宏塊的數(shù)據(jù),因而變量的生命期遠(yuǎn)比存儲(chǔ)在該變量中的某一具體數(shù)據(jù)生命期要長。若數(shù)據(jù)子塊具有不相交的生命期,則可以共享相同的片上存儲(chǔ)器。

很多數(shù)據(jù)子塊在運(yùn)算中多次使用,可在首次運(yùn)算前轉(zhuǎn)移到片上,并盡可能保存到生命期結(jié)束,即直到這些數(shù)據(jù)不再使用為止,因而這些數(shù)據(jù)僅需要一次轉(zhuǎn)移。將程序執(zhí)行時(shí)間看成是由很多連續(xù)的時(shí)間間隔組成的,若在下個(gè)時(shí)間間隔內(nèi)需要轉(zhuǎn)移新的數(shù)據(jù)到片上供CPU處理,而片上又沒有足夠的存儲(chǔ)器存儲(chǔ)這些數(shù)據(jù),這時(shí)將隨后需要連續(xù)頻繁使用的數(shù)據(jù)保留到片上;對于隨后較少使用的數(shù)據(jù),若片外存儲(chǔ)器還保存有該數(shù)據(jù)的備份,這些數(shù)據(jù)可直接覆蓋,等到下次使用時(shí)再從片外存儲(chǔ)器拷貝到片上;否則,在覆蓋前將數(shù)據(jù)轉(zhuǎn)移到片外。在片上分配一定的緩沖區(qū),用來存儲(chǔ)需要再次使用的數(shù)據(jù),可有效地減少片外存儲(chǔ)器的訪問。對于中間結(jié)果,盡量在使用前分階段計(jì)算,使用后釋放,以縮減存儲(chǔ)中間結(jié)果的存儲(chǔ)器需求。通過數(shù)據(jù)的這種動(dòng)態(tài)分配,既可以減少或避免訪問片外慢速存儲(chǔ)器所引起的指令延遲,又可以減少片外到片上的數(shù)據(jù)轉(zhuǎn)移。

在H.263視頻編碼器中,編碼是按宏塊順序進(jìn)行的,INTRA宏塊編碼僅需要當(dāng)前的編碼宏塊數(shù)據(jù),INTER宏塊編碼還需要以當(dāng)前宏塊為中心的重建圖像搜索窗。因此根據(jù)算法特征將整幀輸入圖像劃分成宏塊,某個(gè)宏塊數(shù)據(jù)在編碼前轉(zhuǎn)移到片上,這一宏塊編碼結(jié)束后就不再使用,這部分片上存儲(chǔ)器就可釋放,用來存儲(chǔ)下一宏塊數(shù)據(jù)。若在編碼的同時(shí)采用DMA轉(zhuǎn)移下一個(gè)宏塊,這需要在片上分配兩個(gè)宏塊的存儲(chǔ)器空間,用來存儲(chǔ)編碼的原始圖像。

在進(jìn)行INTER幀編碼時(shí),運(yùn)動(dòng)搜索需要使用前一幀的重建圖像作為參考,設(shè)搜索范圍為 [-16,+16],編碼該宏塊需要搜索參考圖像中以編碼宏塊位置為中心的9個(gè)宏塊,即前一幀中宏塊(x,y) 的的重建圖像直到編碼(x+1,y+1)宏塊后生命期才結(jié)束。以CIF分辨率為例,不可能把一幀圖像的所有重建宏塊保存到生命期結(jié)束,因而部分重建圖像必需暫時(shí)存儲(chǔ)在片外,若在編碼(x-1,y-1) 前將重建宏塊(x,y)拷貝到片上并一直保存到編碼(x+1,y+1) 宏塊結(jié)束,只需要在片上分配將近3個(gè)GOB的空間用來存儲(chǔ)參考圖像,就可以保證每個(gè)宏塊的重建圖像數(shù)據(jù)只需要一次片外到片上的轉(zhuǎn)移。

半像素內(nèi)插結(jié)果,用于在整像素運(yùn)動(dòng)搜索后作為半像素搜索的參考,因而可在整像素搜索后、半像素搜索前,圍繞整像素運(yùn)動(dòng)矢量,對整像素運(yùn)動(dòng)矢量對應(yīng)的匹配宏塊進(jìn)行內(nèi)插,這樣就沒有必要在編碼INTER 幀前將整幀圖像進(jìn)行內(nèi)插,可顯著減少存儲(chǔ)內(nèi)插結(jié)果的存儲(chǔ)器數(shù)量,從而分配在片上。

片上數(shù)據(jù)的存儲(chǔ)器分配

TMS320C55x 除了讀指令的地址數(shù)據(jù)總線外,還有三條用于從存儲(chǔ)器讀操作數(shù)的地址數(shù)據(jù)總線,兩條寫操作數(shù)到存儲(chǔ)器的地址數(shù)據(jù)總線。CPU在一個(gè)周期內(nèi)可完成多個(gè)操作數(shù)的讀寫,由于每個(gè)DARAM塊或SARAM塊有限的訪問能力,這些操作數(shù)位于適當(dāng)?shù)腄ARAM或SARAM塊內(nèi),才能在單周期內(nèi)完成多個(gè)數(shù)據(jù)的讀入或者數(shù)據(jù)的同時(shí)讀寫,而不產(chǎn)生延遲。

指令代碼的分配

應(yīng)用程序的指令代碼可以存儲(chǔ)在片外存儲(chǔ)器,通過指令Cache進(jìn)行訪問,可以減少CPU讀指令代碼與CPU讀寫片上存儲(chǔ)器內(nèi)數(shù)據(jù)的沖突,同時(shí)將空余更多的片上存儲(chǔ)器空間用于數(shù)據(jù)分配。若存儲(chǔ)程序代碼和數(shù)據(jù)所需的存儲(chǔ)器總和少于片上存儲(chǔ)器容量,將代碼分配到片外存儲(chǔ)器的性能與代碼數(shù)據(jù)全部分配到片上存儲(chǔ)器相比,性能降低大約10%。因此當(dāng)代碼和數(shù)據(jù)總和小于片上存儲(chǔ)器容量時(shí),應(yīng)該全部分配到片上存儲(chǔ)器。通常程序代碼僅供CPU讀取、并不修改,而數(shù)據(jù)經(jīng)常需要同時(shí)讀寫,因而應(yīng)盡量將代碼存儲(chǔ)在SARAM內(nèi),以便將訪問能力更強(qiáng)的DARAM用來存儲(chǔ)數(shù)據(jù)。在單個(gè)CPU周期內(nèi),SARAM僅有一次訪問能力,同時(shí)讀取指令和數(shù)據(jù)必然產(chǎn)生延遲,為了保證讀取數(shù)據(jù)時(shí)不產(chǎn)生延遲,數(shù)據(jù)不能與訪問這些數(shù)據(jù)的代碼存儲(chǔ)在同一SARAM塊內(nèi)。也就是說,當(dāng)程序代碼大小不是剛好整數(shù)個(gè)塊大小時(shí),可通過調(diào)整代碼或者數(shù)據(jù)的存儲(chǔ)器分配,以免CPU讀代碼與讀寫數(shù)據(jù)產(chǎn)生沖突。

數(shù)據(jù)分配

前面已經(jīng)討論過變量和常數(shù)的分配,這里主要討論耗時(shí)較多的矩陣運(yùn)算。通??梢杂肅語言或者匯編語言編寫應(yīng)用程序,C語言編譯后可產(chǎn)生匯編代碼。在匯編語言的代碼中,找到處理矩陣操作數(shù)的指令,依次列舉這些指令不產(chǎn)生延遲的矩陣分配限制,并求解滿足這些限制條件的片上存儲(chǔ)器分配。下面列出了C55x中一些常見的存儲(chǔ)器操作數(shù)

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

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

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

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

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

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

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

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

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

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

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

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

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

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

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

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

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉