1 ADSP-BF56l結(jié)構(gòu)特點
ADSP-BF561是采用對等的雙核結(jié)構(gòu),可以很好地執(zhí)行兩種任務(wù),且開發(fā)人員可以隨意分配任務(wù)來平衡雙核之間的負載。如圖1所示,每一個Blackfin內(nèi)核包含兩個乘/累加器(MAC),兩個40位的ALU,四個視頻專用8位ALU和一個40位移位器。運算單元處理來自寄存器組的8位、16位或者32位數(shù)據(jù)。每個MAC每周期可完成一個16位乘16位的乘法運算,并把結(jié)果累加到40位的累加器中,提供8位的精度擴展。ALU單元執(zhí)行標準的算術(shù)和邏輯運算,由于兩個ALU具備對16位或32位數(shù)據(jù)操作的能力,因此運算單元具備的靈活性可以滿足各種應(yīng)用中信號處理的要求。每個32位的輸入寄存器可以作為兩個16位的寄存器,因此每個ALU可以完成非常靈活的單16位算術(shù)運算。通過把寄存器當作兩個16位的操作數(shù)使用,雙16位或單32位操作可以在一個周期中完成。更好地利用第二個ALU,四個16位操作可以簡單地完成,加速了每個周期的吞吐量。強大的40位移位器功能豐富,可以對數(shù)據(jù)進行移位、循環(huán)移位、歸一化、提取和存儲等操作。運算單元所使用的數(shù)據(jù)來自具有16個16位操作數(shù)或8個32位操作數(shù)的寄存器組。
同時BF561把存儲器視為一個統(tǒng)一的4 GB地址空間,使用32位地址并采用分級存儲器結(jié)構(gòu)。Level1(L1)存儲器一般以全速運行,沒有或只有很少的延遲。Level 2(L2)/Level 3(L3)分布在片內(nèi)或片外,對它的訪問會耗費多個處理器周期。在L1級,指令存儲器只存放指令,兩個數(shù)據(jù)存儲器存放數(shù)據(jù),一個專用的臨時數(shù)據(jù)存儲器存放堆棧和局部變量信息。在L2/L3級可以存放指令和數(shù)據(jù)。
2 編碼器整體結(jié)構(gòu)
以BF561為核心構(gòu)成的MPEG-4編碼器結(jié)構(gòu)如圖2所示,其中BF561為編碼處理器,完成視頻采集控制以及基于MPEG-4的壓縮編碼等工作;與之相連的視頻解碼芯片選用ADI公司提供的ADV7183,它是10位ADC的增強型視頻解碼器,其內(nèi)含三個精確模/數(shù)轉(zhuǎn)換器(ADCs)和完整的自動增益控制(AGC)電路。BF561與ADV7183之間通過其專用視頻接口PPI接口相連,并通過I2C總線協(xié)議完成對ADV7183內(nèi)部寄存器的讀/寫操作。[!--empirenews.page--]
3 編碼器優(yōu)化方案
3.1 基于Cache和DMA的優(yōu)化
Blackfin系列DSP多級存儲結(jié)構(gòu),其代碼從內(nèi)部L1指令存儲器運行、中間數(shù)據(jù)及常用參數(shù)從內(nèi)部L1數(shù)據(jù)存儲器讀取或存放時,才能實現(xiàn)最佳性能。但是MPEG-4算法大量的算法導(dǎo)致代碼不可能放入L1指令存儲器中,大量的中間數(shù)據(jù)和參數(shù)也不可能僅存放在L1數(shù)據(jù)存儲器中,所以要考慮如何更好地利用處理器上的L1存儲器才能讓系統(tǒng)的性能達到最佳。指令Cache,數(shù)據(jù)DMA,這是目前最流行的系統(tǒng)模型,多數(shù)的嵌入式媒體處理器都是基于這樣的想法而設(shè)計的。
使用高速緩存機制允許編程者訪問大的、低成本的外部存儲器。它的工作方式是:在需要的時候自動將代碼讀入L1指令存儲器。這使編程者不必繁瑣地將代碼從內(nèi)部存儲器移入移出。指令高速緩存有助于以更為有效的方式從外部存儲器預(yù)取指令。
相比于指令管理方面使用指令Cache,在數(shù)據(jù)管理上使用DMA顯得是自然而然的。但是在優(yōu)化過程中還是注意了以下幾個問題:
(1)由于BF561的外部總線是32位寬的,所以用32位DMA能最大程度地提高數(shù)據(jù)存取的性能。
(2)基于寄存器的DMA和基于描述符的DMA兩種DMA工作方式的選取?;诩拇嫫鞯腄MA中,處理器直接對DMA控制寄存器編程來初始化一個傳送。因為寄存器不必從內(nèi)存中裝載,并且內(nèi)核不必保存描述符,因此,基于寄存器的DMA提供了最好的DMA控制器性能。相反在基于描述符的DMA操作中,可以對一個DMA通道進行編程,以便在當前傳送隊列完成后,自動設(shè)置和重啟其他的DMA傳送過程。在管理一個系統(tǒng)的DMA過程時,基于描述符的模型可以提供最大的靈活性?;谏厦娴目紤],在視頻采集模塊中我們選了基于描述符的DMA控制方式,而在其他模塊中選取基于寄存器的DMA方式。
(3)當數(shù)據(jù)在內(nèi)部存儲器移動時,盡量不使用標準C語言中的memepy()函數(shù),而使用MemDMA的方式,這樣可以減少CPU等待時間。
3.2 存儲器管理策略優(yōu)化
對于通常的嵌入式媒體處理器,片上存儲器都不夠存儲一個完整的視頻幀,因此系統(tǒng)必須依賴L3外部RAM來支持對大緩沖區(qū)進行相對較快的訪問。因此對片外存儲器的訪問必須精心設(shè)計,以保證較優(yōu)的數(shù)據(jù)吞吐。以下是筆者在優(yōu)化過程中總結(jié)的一些關(guān)鍵步驟:
(1)分組類似傳送來減小存儲器總線出送方向切換的次數(shù)。以相同的方向訪問外存是是最有效率的(如連續(xù)的讀或者寫)。例如,當訪問片外SDRAM時,16個讀16個寫總比單獨的16個讀/寫要快,這是由于先寫再讀而導(dǎo)致的延遲。對外存的隨機訪問會產(chǎn)生高概率的總線中轉(zhuǎn)。因此在給定的方向上充分利用控制傳輸數(shù)量的能力是重要的。
對于MemDMA流,當期望共享可用的DMA總線帶寬時,可編程的DMA控制器以輪流選擇每個數(shù)據(jù)流的方式進行固定數(shù)量的傳送。在每條DMA總線上,這個“方向控制”工具在DMA資源的優(yōu)化使用方面是一個重要的考慮。通過分組同方向地傳送在一起,其提供了一種方法來管理DMA總線傳送方向的頻繁變動。當使用方向控制特性時,DMA控制器優(yōu)先級保證在DMA或存儲器總線上,與前一次傳送據(jù)具有相同讀/寫方向的數(shù)據(jù)傳輸,直到方向控制計數(shù)器溢出,或停止傳送,或傳送過程中自己改變方向。當方向計數(shù)器歸零時,DMA控制器改變其優(yōu)先選擇方向為相反的數(shù)據(jù)流動。
(2)保持SDRAM的行打開及實現(xiàn)多次數(shù)據(jù)傳送。每次訪問SDRAM都會花費幾個SCLK(系統(tǒng)時鐘周期),特別是如果需要的SDRAM的行還沒有被激活時。一旦一行是激活的,就能從一整行中讀取數(shù)據(jù)而不必每次訪問該行的時候再打開?;蛘呖梢赃@樣理解:每個SCLK周期訪問存儲器的任何位置都是可能的,只要這些位置在SDRAM的同一行中。關(guān)閉一行需要多個SDRAM時鐘周期,因此,連續(xù)的行關(guān)閉能嚴格限制SDRAM的吞吐量。
一個SDRAM的頁錯失可花費20~50個CCLK(核時鐘周期)。Blackfin系列DSP可以最多同時打開四個SDRAM行,從而減少設(shè)置時間。應(yīng)用程序應(yīng)當通過適當放置數(shù)據(jù)緩沖區(qū)和管理訪問來利用打開的SDRAM塊,原則就是把可能同一時間訪問的緩沖區(qū)分配到不同的SDRAM塊中。
3.3 基于雙核結(jié)構(gòu)的優(yōu)化
一片BF561內(nèi)包含了兩個完全相同的Blackfin內(nèi)核,這使其擁有比同系列芯片更為強勁的運算能力。因此想要充分發(fā)揮其能力就必須更具其結(jié)構(gòu)特性為編碼器設(shè)定合適的整體構(gòu)架。通常的方式有兩種,一種是非對稱的程序設(shè)計模式,另外一種為對稱的程序設(shè)計模式。顧名思義,非對稱模式就是兩個內(nèi)核完成不同的處理任務(wù),這種模式下,兩個內(nèi)核好像是兩個單獨的處理器,它們之間不共享代碼。不共享或者只共享少量的數(shù)據(jù)。而對稱的程序設(shè)計模式比較適合于處理器任務(wù)較為單一,但運算量比較大的情況,更能發(fā)揮雙核在運算能力方面的優(yōu)勢。
基于上面的分析,選擇了對稱的程序設(shè)計模式,而且是基于運算量考慮的對稱模型,即兩個核各負責半幀圖像的壓縮,另外A核還負責系統(tǒng)初始化以及輸入/輸出中斷的響應(yīng),B核還負責時間字符的疊加以及時間計算等,這樣最大程度上平衡了兩個核的工作量。此外,在L2存儲器中定義了兩個核都需要的變量,以及控制雙核同步的信號量等。雙核協(xié)作工作的過程以及同步方式如圖3所示。
[!--empirenews.page--]4 編碼器測試
在此分別采用foreman.yuv和Brige_close.yuv兩個標準序列對編碼其性能進行測試,圖4~圖7為效果圖。
優(yōu)化前后的兩種序列圖像的性能對比如表1所示。
采用實時采集的圖像進行測試時,優(yōu)化前圖像模糊、不連續(xù),說明編碼速度小于采集速度;優(yōu)化后圖像清晰連續(xù),說明編碼器的編碼速度已經(jīng)達到25 f/s以上,達到了D1格式實時采集壓縮的性能要求。
將優(yōu)化后的編碼算法應(yīng)用到實際視頻采集系統(tǒng)中,得到優(yōu)化前后的圖像如圖8、圖9所示,實驗結(jié)果表明,本文優(yōu)化后的編碼器可以得到很好的效果。
5 結(jié)語
在此論述一款基于BF561 DSP的MPEG-4編碼器的優(yōu)化方案,通過實驗驗證了編碼器的編碼效率達到了PAL制式25 f/s@D1的要求,可以充分滿足實時監(jiān)控、視頻圖像存儲等方面的應(yīng)用。