利用可配置處理器來(lái)創(chuàng)建多標(biāo)準(zhǔn)多分辨率視頻引擎
現(xiàn)代的可配置處理器(例如Tensilica的Xtensa處理器)所配的軟件工具會(huì)自動(dòng)修改編輯器工具,包括C/C++編輯器、匯編程序、調(diào)試器、模仿器和ISS(指令集仿真器)。此時(shí),C編輯器會(huì)識(shí)別新的C內(nèi)部指令sub。abs。acc并安排相應(yīng)的指令,調(diào)試器則顯示sub。abs。acc功能模塊中使用的內(nèi)部信號(hào),同時(shí),匯編程序會(huì)將之作為一個(gè)新的指令進(jìn)行處理,而ISS則對(duì)之進(jìn)行周期精確級(jí)仿真。
創(chuàng)建新的加載/存儲(chǔ)接口
要在如此之大的寄存器文件(和相應(yīng)的SIMD功能單元)中讀出和寫(xiě)入數(shù)據(jù),要求可以進(jìn)行大規(guī)模的加載和存儲(chǔ)。還是在可配置處理器中,設(shè)計(jì)者可以自定義加載和存儲(chǔ)指令來(lái)直接在自定義寄存器文件中加載和存儲(chǔ)數(shù)據(jù)。接著,編輯器會(huì)自動(dòng)生成對(duì)應(yīng)于這個(gè)加載/存儲(chǔ)接口的加載/存儲(chǔ)指令,從而將數(shù)據(jù)從內(nèi)存中加載到寄存器文件中。
圖6是處理器數(shù)據(jù)路徑的更新圖。如圖中所示,硬件生成工具自動(dòng)生成大的自定義寄存器文件和加載/存儲(chǔ)接口以及所有相關(guān)的正向控制和旁路邏輯。特別需要注意的是這些工具還會(huì)生成硬件邏輯來(lái)將數(shù)據(jù)從基本寄存器文件轉(zhuǎn)移到用戶自定義的寄存器文件中。
圖6
加載或存儲(chǔ)時(shí)更新地址
創(chuàng)建指令來(lái)進(jìn)行自定義加載或存儲(chǔ)時(shí),最好能在加載或存儲(chǔ)的同時(shí)更新地址。這種新的加載/存儲(chǔ)指令可以同時(shí)進(jìn)行:
加載A1←存儲(chǔ)器(地址1);地址1=地址1+索引更形
這種能夠同時(shí)進(jìn)行數(shù)據(jù)加載/存儲(chǔ)和地址更新的指令使得處理器可以進(jìn)行背靠背加載/存儲(chǔ),而不需要一個(gè)中介指令來(lái)進(jìn)行地址更新。
創(chuàng)建FIFO接口和通用IO端口
可配置處理器中另一個(gè)重要特征是可以定義FIFO接口和通用IO(GPIO)端口來(lái)直接從數(shù)據(jù)路徑中讀取和寫(xiě)入數(shù)據(jù)。這些FIFO接口和GPIO端口的寬度可以是任意的(在這個(gè)例子中是1024b),在數(shù)字上沒(méi)有任何限制(例如,F(xiàn)IFO和GPIO端口的寬度都可以是1024)。這些寬的數(shù)據(jù)路徑直接接口可以提供多媒體和網(wǎng)絡(luò)應(yīng)用所需的高數(shù)據(jù)吞吐量,來(lái)通過(guò)處理器內(nèi)核讀取、處理和寫(xiě)入數(shù)據(jù)。
圖7顯示的是帶有這樣的FIFO接口和GPIO端口的數(shù)據(jù)路徑。(有了這種方法)我們可以創(chuàng)建一個(gè)指令來(lái)發(fā)射兩個(gè)FIFO(只要確保這兩個(gè)不是空的),進(jìn)行一次復(fù)雜的計(jì)算(例如循環(huán)乘加),并將結(jié)果傳到另一個(gè)輸出FIFO上(只要這個(gè)FIFO還沒(méi)有滿)。接著,再次由硬件生成工具生成適當(dāng)?shù)慕涌谛盘?hào)、控制邏輯和旁路邏輯,并生成已配置處理器所需的完整RTL,同時(shí),軟件生成工具則自動(dòng)生成一套完整的編輯器工具和模仿新指令的周期精確級(jí)ISS。
圖7:通過(guò)FIFO接口和GPIO端口進(jìn)行的高速通信
加速?gòu)?fù)雜控制代碼
多媒體應(yīng)用中控制代碼的數(shù)量和復(fù)雜性已經(jīng)增加到這樣的一個(gè)程度:它所消耗的計(jì)算時(shí)間和工作幾乎和代碼的數(shù)據(jù)密集型部分一樣多。H。26?Mainprofile解碼器中的一個(gè)關(guān)鍵部分-CABAC算法(內(nèi)容自適應(yīng)二進(jìn)制算術(shù)編碼)就是這樣的一個(gè)例子:這種算法幾乎就是一棵控制流程判定樹(shù),有各種各樣復(fù)雜的數(shù)據(jù)計(jì)算和比較。
由于CABAC計(jì)算過(guò)于復(fù)雜,很多傳統(tǒng)的處理器方案不得不放棄CABAC而選擇一個(gè)專用的RTL加速器。但是,CABAC可以在可配置處理器上作為一套指令擴(kuò)展而產(chǎn)生作用,不僅在性能足以媲美RTL方案的性能,同時(shí)比起RTL加速器還有另外一個(gè)優(yōu)勢(shì),那就是它的數(shù)據(jù)不需要進(jìn)出處理器。這樣一來(lái)就顯示出處理器指令擴(kuò)展的另外一個(gè)優(yōu)勢(shì)—由于特殊應(yīng)用硬件位于處理器內(nèi)部,你可以更好地分割硬件和軟件。
總結(jié)
現(xiàn)代的可配置及可擴(kuò)展處理器是創(chuàng)建視頻和音頻引擎的完美選擇,迄今為止已經(jīng)為眾多的半導(dǎo)體ASIC供應(yīng)商所廣泛采用。另外也有一些作為嵌入式SoC模塊的視頻和音頻IP產(chǎn)品。例如,Tensilica公司及其合作伙伴就能供應(yīng)一套完整的視頻和音頻IP產(chǎn)品,其中包括XtensaHiFi2音頻引擎和一系列多標(biāo)準(zhǔn)多分辨率視頻方案,以及H。26?(基本類、主流類和高級(jí)類)、MPEG-4(SPandASP)、MPEG-2、VC-1/WM9及各種標(biāo)準(zhǔn)的編碼器和解碼器軟件(編解碼器)。這些視頻方案覆蓋了QCIF、CIF和SD,都以實(shí)現(xiàn)HD分辨率為目標(biāo),并以低功耗和小封裝為設(shè)計(jì)起點(diǎn)。
由于消費(fèi)者的需求擴(kuò)展了消費(fèi)類設(shè)備中ASIC的技術(shù)規(guī)格要求,越來(lái)越多的應(yīng)用將通過(guò)使用可配置處理器來(lái)執(zhí)行。借助于可配置處理器所帶來(lái)的自動(dòng)設(shè)計(jì)流程,新的功能支持將會(huì)像軟件升級(jí)一樣簡(jiǎn)單,而設(shè)計(jì)和驗(yàn)證時(shí)間也將大大降低。
評(píng)論