新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MPEG-4編碼器在BF561上的優(yōu)化

MPEG-4編碼器在BF561上的優(yōu)化

作者: 時(shí)間:2010-06-09 來源:網(wǎng)絡(luò) 收藏


3 方案
3.1 基于Cache和DMA的

Blackfin系列DSP多級存儲結(jié)構(gòu),其代碼從內(nèi)部L1指令存儲器運(yùn)行、中間數(shù)據(jù)及常用參數(shù)從內(nèi)部L1數(shù)據(jù)存儲器讀取或存放時(shí),才能實(shí)現(xiàn)最佳性能。但是算法大量的算法導(dǎo)致代碼不可能放入L1指令存儲器中,大量的中間數(shù)據(jù)和參數(shù)也不可能僅存放在L1數(shù)據(jù)存儲器中,所以要考慮如何更好地利用處理器上的L1存儲器才能讓系統(tǒng)的性能達(dá)到最佳。指令Cache,數(shù)據(jù)DMA,這是目前最流行的系統(tǒng)模型,多數(shù)的嵌入式媒體處理器都是基于這樣的想法而設(shè)計(jì)的。
使用高速緩存機(jī)制允許編程者訪問大的、低成本的外部存儲器。它的工作方式是:在需要的時(shí)候自動將代碼讀入L1指令存儲器。這使編程者不必繁瑣地將代碼從內(nèi)部存儲器移入移出。指令高速緩存有助于以更為有效的方式從外部存儲器預(yù)取指令。
相比于指令管理方面使用指令Cache,在數(shù)據(jù)管理上使用DMA顯得是自然而然的。但是在過程中還是注意了以下幾個(gè)問題:
(1)由于的外部總線是32位寬的,所以用32位DMA能最大程度地提高數(shù)據(jù)存取的性能。
(2)基于寄存器的DMA和基于描述符的DMA兩種DMA工作方式的選取?;诩拇嫫鞯腄MA中,處理器直接對DMA控制寄存器編程來初始化一個(gè)傳送。因?yàn)榧拇嫫鞑槐貜膬?nèi)存中裝載,并且內(nèi)核不必保存描述符,因此,基于寄存器的DMA提供了最好的DMA控制器性能。相反在基于描述符的DMA操作中,可以對一個(gè)DMA通道進(jìn)行編程,以便在當(dāng)前傳送隊(duì)列完成后,自動設(shè)置和重啟其他的DMA傳送過程。在管理一個(gè)系統(tǒng)的DMA過程時(shí),基于描述符的模型可以提供最大的靈活性?;谏厦娴目紤],在視頻采集模塊中我們選了基于描述符的DMA控制方式,而在其他模塊中選取基于寄存器的DMA方式。
(3)當(dāng)數(shù)據(jù)在內(nèi)部存儲器移動時(shí),盡量不使用標(biāo)準(zhǔn)C語言中的memepy()函數(shù),而使用MemDMA的方式,這樣可以減少CPU等待時(shí)間。
3.2 存儲器管理策略優(yōu)化
對于通常的嵌入式媒體處理器,片上存儲器都不夠存儲一個(gè)完整的視頻幀,因此系統(tǒng)必須依賴L3外部RAM來支持對大緩沖區(qū)進(jìn)行相對較快的訪問。因此對片外存儲器的訪問必須精心設(shè)計(jì),以保證較優(yōu)的數(shù)據(jù)吞吐。以下是筆者在優(yōu)化過程中總結(jié)的一些關(guān)鍵步驟:
(1)分組類似傳送來減小存儲器總線出送方向切換的次數(shù)。以相同的方向訪問外存是是最有效率的(如連續(xù)的讀或者寫)。例如,當(dāng)訪問片外SDRAM時(shí),16個(gè)讀16個(gè)寫總比單獨(dú)的16個(gè)讀/寫要快,這是由于先寫再讀而導(dǎo)致的延遲。對外存的隨機(jī)訪問會產(chǎn)生高概率的總線中轉(zhuǎn)。因此在給定的方向上充分利用控制傳輸數(shù)量的能力是重要的。
對于MemDMA流,當(dāng)期望共享可用的DMA總線帶寬時(shí),可編程的DMA控制器以輪流選擇每個(gè)數(shù)據(jù)流的方式進(jìn)行固定數(shù)量的傳送。在每條DMA總線上,這個(gè)“方向控制”工具在DMA資源的優(yōu)化使用方面是一個(gè)重要的考慮。通過分組同方向地傳送在一起,其提供了一種方法來管理DMA總線傳送方向的頻繁變動。當(dāng)使用方向控制特性時(shí),DMA控制器優(yōu)先級保證在DMA或存儲器總線上,與前一次傳送據(jù)具有相同讀/寫方向的數(shù)據(jù)傳輸,直到方向控制計(jì)數(shù)器溢出,或停止傳送,或傳送過程中自己改變方向。當(dāng)方向計(jì)數(shù)器歸零時(shí),DMA控制器改變其優(yōu)先選擇方向?yàn)橄喾吹臄?shù)據(jù)流動。
(2)保持SDRAM的行打開及實(shí)現(xiàn)多次數(shù)據(jù)傳送。每次訪問SDRAM都會花費(fèi)幾個(gè)SCLK(系統(tǒng)時(shí)鐘周期),特別是如果需要的SDRAM的行還沒有被激活時(shí)。一旦一行是激活的,就能從一整行中讀取數(shù)據(jù)而不必每次訪問該行的時(shí)候再打開?;蛘呖梢赃@樣理解:每個(gè)SCLK周期訪問存儲器的任何位置都是可能的,只要這些位置在SDRAM的同一行中。關(guān)閉一行需要多個(gè)SDRAM時(shí)鐘周期,因此,連續(xù)的行關(guān)閉能嚴(yán)格限制SDRAM的吞吐量。
一個(gè)SDRAM的頁錯(cuò)失可花費(fèi)20~50個(gè)CCLK(核時(shí)鐘周期)。Blackfin系列DSP可以最多同時(shí)打開四個(gè)SDRAM行,從而減少設(shè)置時(shí)間。應(yīng)用程序應(yīng)當(dāng)通過適當(dāng)放置數(shù)據(jù)緩沖區(qū)和管理訪問來利用打開的SDRAM塊,原則就是把可能同一時(shí)間訪問的緩沖區(qū)分配到不同的SDRAM塊中。
3.3 基于雙核結(jié)構(gòu)的優(yōu)化
一片內(nèi)包含了兩個(gè)完全相同的Blackfin內(nèi)核,這使其擁有比同系列芯片更為強(qiáng)勁的運(yùn)算能力。因此想要充分發(fā)揮其能力就必須更具其結(jié)構(gòu)特性為設(shè)定合適的整體構(gòu)架。通常的方式有兩種,一種是非對稱的程序設(shè)計(jì)模式,另外一種為對稱的程序設(shè)計(jì)模式。顧名思義,非對稱模式就是兩個(gè)內(nèi)核完成不同的處理任務(wù),這種模式下,兩個(gè)內(nèi)核好像是兩個(gè)單獨(dú)的處理器,它們之間不共享代碼。不共享或者只共享少量的數(shù)據(jù)。而對稱的程序設(shè)計(jì)模式比較適合于處理器任務(wù)較為單一,但運(yùn)算量比較大的情況,更能發(fā)揮雙核在運(yùn)算能力方面的優(yōu)勢。
基于上面的分析,選擇了對稱的程序設(shè)計(jì)模式,而且是基于運(yùn)算量考慮的對稱模型,即兩個(gè)核各負(fù)責(zé)半幀圖像的壓縮,另外A核還負(fù)責(zé)系統(tǒng)初始化以及輸入/輸出中斷的響應(yīng),B核還負(fù)責(zé)時(shí)間字符的疊加以及時(shí)間計(jì)算等,這樣最大程度上平衡了兩個(gè)核的工作量。此外,在L2存儲器中定義了兩個(gè)核都需要的變量,以及控制雙核同步的信號量等。雙核協(xié)作工作的過程以及同步方式如圖3所示。

本文引用地址:http://m.butianyuan.cn/article/151817.htm





關(guān)鍵詞: 優(yōu)化 BF561 編碼器 MPEG-4

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉