国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

利用可配置處理器來創建多標準多分辨率視頻引擎

發布時間:2010-12-18 15:53    發布者:conniede
關鍵詞: RTL , SIMD , 處理器 , 視頻
隨著消費類電子產品,尤其是手機、PDA和便攜式媒體播放器(PMP)的急劇發展,其對于終端硅供應商的要求也大大提高。對這些供應商來說,設計僅僅能夠適用于一到兩個多媒體編解碼器或無線標準的IC已經遠遠不夠了。消費者希望他們的設備能夠播放各種采用不同的編碼標準和無線下載標準的媒體。因此,必須采取一個新的更具靈活性的途徑來更好地適配新的媒體標準。在本文中,我們主要談一談視頻解碼器和編碼器引擎所面對的挑戰和機遇。

1 基于RTL的傳統視頻引擎設計方法

上一代視頻ASIC設計的目的是為了解碼和編碼MPEG-2,因為這是DVD所使用的標準。其中也有些支持MPEG-1,可以播放VCD。大多數情況下,這種單個應用的邏輯實現策略就是:利用RTL(寄存器轉換層,寄存器轉換邏輯)來設計定制化MPEG-2解碼器和編碼器。下圖1是一個典型的MPEG-2視頻ASIC結構,展示了由視頻子系統、主控制器和片上存儲器組成的RTL功能塊。



  圖1:典型的MPEG-2視頻ASIC結構

隨著市場形勢的改變,現在的視頻ASIC必須能夠支持多種視頻標準,并具有多個分辨率。由于下列原因,傳統的RTL方法已經不再有效:

·隨著標準數量的增加,RTL功能塊的數量和復雜性也增加;

·無論是執行一個新的視頻標準,還是升級現有的已執行的標準,或者修改bug,都需要進行硅芯片重制;

·在第一代硅執行之后的這4-5年內,視頻編解碼器,尤其是編碼器在性能上(比特率、性能)有很大的改進。要執行這些改進的成果,也必須在所有的RTL方法中進行硅芯片重制。

2 在視頻引擎中使用處理器,而不是固定的RTL

那么,有沒有其它辦法呢?使用一個可編程處理器是最佳方案,因為它可以解決上面提到的所有問題:

(1)處理器和編解碼器之間很容易建立連接端口;(不論是采用新的視頻標準,還是升級現有的編解碼器或者修改bug,都可以很容易地在軟件中進行);

(2)通過軟件升級,可以很容易地應用視頻編解碼器執行中的改進。

但是,由于其性能瓶頸,傳統的處理器只能用于一般的編碼,而不能用于視頻引擎。嵌入式DSP也不是專為視頻而設計的,但擁有通用DSP應用所需的硬件功能單元、指令和接口。因此,要在傳統的RISC和DSP處理器上執行視頻編解碼,就意味著這些處理器必須以非常高的速度運行(MHz),而且還需要大量內存并消耗大量功率,但是在便攜式設備中,這顯然是行不通的。

只要我們對某個視頻內核中所需的計算次數作一個簡單分析,就很容易得出這一點。絕對誤差和是大多數視頻解碼運算的動作估計中所進行的一個重要計算步驟。SAD運算的目的在于發現兩個連續視頻幀之間的宏模塊的運動。它是通過計算這兩個宏模塊中每套相應的象素值之間的絕對誤差之和來實現這一目的的。



下面的C代碼展示了SAD運算的一次簡單執行:



圖2展示了SAD運算中的基本計算步驟。如圖所示,其中主要進行的計算有減、算絕對值和結果累計。



          圖2:絕對誤差和(SAD)內核中進行的主要計算

計算一個RISC上的兩個16x16宏模塊的SAD需要進行256次減法、256次求絕對值和256次相加――總共進行了768次計算,還不包括傳輸數據所需的負載與內存。由于每一幀當中所有的宏模塊都必須進行這一運算,很顯然這在計算上成本是很昂貴的,而且會隨著視頻幀分辨率的增加而越來越難。

實際上,在一個帶有一些如相乘和乘法累加等指令的中等范圍通用型RISC處理器上,如果要以CIF的分辨率進行H。26?Baseline解碼,需要250MHz的速率,而如果進行H。26?Baseline編碼,所需速率更是超過1GHz。這意味著光是處理器內核就要消耗將近500mW的功率,更不用提內存和視頻片上系統中其它部分消耗的功率了。很顯然這種處理器不能作為嵌入式多媒體處理器用于便攜式設備中。


3 可配置處理器解決了問題

如何在處理器中進行SAD運算呢?有一個方法是編寫一個能夠同時進行“減-求絕對值-加”計算的指令。這可以將16x16宏模塊所需的計算次數從768減少到256。另外,由于一個執行這種綜合化簡單運算的功能單元一般都能夠優化成一個周期,意味著計算周期也被減少到了256。

但是如何執行這個“減-求絕對值-加”指令呢?

在這個時候,就需要可配置處理器了。可配置處理器是嵌入式的,設計者可以配置選項菜單中進行選擇,并通過添加特殊應用指令、寄存器文件和接口來擴展處理器功能。

下面是目前的可配置處理器具備的一些可配置和可擴展性功能,傳統的固定式處理器是沒有這些功能的:

可配置性,有下面的一系列選項可供選擇:

·設計者想要或者不想要的指令,包括:16x16相乘或乘法累加、漏斗轉換、浮點指令等;

·零耗循環、5或7個步進管線、本地數據加載/存儲單元的數量等各種功能;

·是否需要內存保護、內存轉換或者一個全內存管理單元(MMU);

·是否需要一個系統總線接口;

·系統總線和本地內存接口的寬度;

·本地內存的數量和大小;

·中斷的次數、種類和等級

可擴展性,可自由添加下列由設計者自定義的組件:

·寄存器和寄存器文件;

·多周期、任意復雜功能單元;

·SIMD功能單元;

·將基本型處理器轉換成多發射處理器;

·定制能夠直接從數據路徑讀取和寫入的接口,例如在處理器內核上的類似于GPIO(通用IO)的端口或管腳,以及可以用來和其它邏輯或者處理器內核進行連接的外置FIFO。

可配置性的優點在于使你可以通過選擇你的應用所需的功能選項來構建一個規模適中的處理器,而可擴展性的優點則是讓設計者可以通過創造能加快應用速度的指令、寄存器文件、功能單元和接口來定制處理器,使之完全與其視頻應用相匹配。但必須注意的是,只有當今先進的可配置處理器才具能提供設計者自定義可擴展性。

4 利用可配置處理器來構建視頻引擎

4.1 創建能進行多次運算的功能單元

這一步即是SAD運算和加速SAD運算的內容。對于可配置處理器來說,要添加這一綜合運算功能簡直是小菜一碟。它可以添加名為"sub。abs。acc(減-求絕對值-加)"的新指令來進行“相減、求絕對值和相加”運算。如圖3所示。



                圖3:進行“相減、求絕對值和相加”運算的新指令

現代的可配置處理器(例如Tensilica的Xtensa處理器)所配的軟件工具會自動修改編輯器工具,包括C/C++編輯器、匯編程序、調試器、模仿器和ISS(指令集仿真器)。此時,C編輯器會識別新的C內部指令"sub。abs。acc"并安排相應的指令,調試器則顯示sub。abs。acc功能模塊中使用的內部信號,同時,匯編程序會將之作為一個新的指令進行處理,而ISS則對之進行周期精確級仿真。

圖4是嵌入這種新的視頻特殊功能單元之后數據路徑的簡化圖。必須注意的是,硬件生成工具不僅能夠自動生成功能單元邏輯,還可自動嵌入正向路徑、控制邏輯和旁路邏輯來將這一新的功能單元和數據路徑的其它部分相連。



圖4:嵌入sub。abs。acc視頻特殊功能單元之后數據路徑的簡化圖



現在,運用了C內部指令來進行SAD運算的C代碼就變為:



正如前文所說,這將16x16宏模塊(例如:numrows=numcols=16)的計算次數減少至256次。

4.2 創建SIMD功能單元

除了上面的成果,我們還可以實現進一步改進。在這個內核中,內循環穿越整個宏模塊,并進行同樣的計算。此時恰恰可以創建一個SIMD(單指令多數據)功能單元和相應的指令sub。abs。acc16,來在16象素上同時進行“相減、求絕對值和相加”運算,如圖5所示。



圖5:SIMD在16象素上同時進行的“相減、求絕對值和相加”運算



相應的C內部指令是sub。abs。acc16,用來在SAD運算中重寫C代碼:



此時,SAD運算的次數從768次減少至僅16次。

但是,上面的C代碼是不精確的。我們掩蓋了一個細節,那就是sub。abs。acc16指令要求來自兩個宏模塊的128-b的輸入。這要求支持兩個功能-一個128b的寄存器文件和一個寬加載/存儲接口-這些會在接下來的部分進行討論。

4.3 創建自定義寄存器文件

在可配置處理器中創建一個任意大小的自定義寄存器文件是很簡單的。例如,一個名為"myRegFile128"并帶有4個寄存器的128b寄存器文件,就可以創建一個相應的新的C數據類型,用于C/C++編碼中來顯示變量。另外,軟件工具還可以進行“移動”操作,能將各種C數據類型轉換成這種新的自定義數據類型。



因此,使用了sub。abs。acc16內部指令和新的寄存器文件的SAD運算的正確的C編碼是:



接著,C/C++編輯器將生成移動指令來將數據從普通的C數據類型轉化成自定義C數據類型"myRegFile128",并為新的寄存器文件進行寄存器分配。

4.4 創建新的加載/存儲接口

要在如此之大的寄存器文件(和相應的SIMD功能單元)中讀出和寫入數據,要求可以進行大規模的加載和存儲。還是在可配置處理器中,設計者可以自定義加載和存儲指令來直接在自定義寄存器文件中加載和存儲數據。接著,編輯器會自動生成對應于這個加載/存儲接口的加載/存儲指令,從而將數據從內存中加載到寄存器文件中。

圖6是處理器數據路徑的更新圖。如圖中所示,硬件生成工具自動生成大的自定義寄存器文件和加載/存儲接口以及所有相關的正向控制和旁路邏輯。特別需要注意的是這些工具還會生成硬件邏輯來將數據從基本寄存器文件轉移到用戶自定義的寄存器文件中。



圖6

4.5  加載或存儲時更新地址

創建指令來進行自定義加載或存儲時,最好能在加載或存儲的同時更新地址。這種新的加載/存儲指令可以同時進行:

加載A1←存儲器(地址1);地址1=地址1+索引更形

這種能夠同時進行數據加載/存儲和地址更新的指令使得處理器可以進行背靠背加載/存儲,而不需要一個中介指令來進行地址更新。

4.6 創建FIFO接口和通用IO端口

可配置處理器中另一個重要特征是可以定義FIFO接口和通用IO(GPIO)端口來直接從數據路徑中讀取和寫入數據。這些FIFO接口和GPIO端口的寬度可以是任意的(在這個例子中是1024b),在數字上沒有任何限制(例如,FIFO和GPIO端口的寬度都可以是1024)。這些寬的數據路徑直接接口可以提供多媒體和網絡應用所需的高數據吞吐量,來通過處理器內核讀取、處理和寫入數據。

圖7顯示的是帶有這樣的FIFO接口和GPIO端口的數據路徑。(有了這種方法)我們可以創建一個指令來發射兩個FIFO(只要確保這兩個不是空的),進行一次復雜的計算(例如循環乘加),并將結果傳到另一個輸出FIFO上(只要這個FIFO還沒有滿)。接著,再次由硬件生成工具生成適當的接口信號、控制邏輯和旁路邏輯,并生成已配置處理器所需的完整RTL,同時,軟件生成工具則自動生成一套完整的編輯器工具和模仿新指令的周期精確級ISS。



                 圖7:通過FIFO接口和GPIO端口進行的高速通信

4.7 加速復雜控制代碼

多媒體應用中控制代碼的數量和復雜性已經增加到這樣的一個程度:它所消耗的計算時間和工作幾乎和代碼的數據密集型部分一樣多。H。26?Mainprofile解碼器中的一個關鍵部分-CABAC算法(內容自適應二進制算術編碼)就是這樣的一個例子:這種算法幾乎就是一棵控制流程判定樹,有各種各樣復雜的數據計算和比較。

由于CABAC計算過于復雜,很多傳統的處理器方案不得不放棄CABAC而選擇一個專用的RTL加速器。但是,CABAC可以在可配置處理器上作為一套指令擴展而產生作用,不僅在性能足以媲美RTL方案的性能,同時比起RTL加速器還有另外一個優勢,那就是它的數據不需要進出處理器。這樣一來就顯示出處理器指令擴展的另外一個優勢—由于特殊應用硬件位于處理器內部,你可以更好地分割硬件和軟件。

5 總結

現代的可配置及可擴展處理器是創建視頻和音頻引擎的完美選擇,迄今為止已經為眾多的半導體ASIC供應商所廣泛采用。另外也有一些作為嵌入式SoC模塊的視頻和音頻IP產品。例如,Tensilica公司及其合作伙伴就能供應一套完整的視頻和音頻IP產品,其中包括XtensaHiFi2音頻引擎和一系列多標準多分辨率視頻方案,以及H。26?(基本類、主流類和高級類)、MPEG-4(SPandASP)、MPEG-2、VC-1/WM9及各種標準的編碼器和解碼器軟件(編解碼器)。這些視頻方案覆蓋了QCIF、CIF和SD,都以實現HD分辨率為目標,并以低功耗和小封裝為設計起點。

由于消費者的需求擴展了消費類設備中ASIC的技術規格要求,越來越多的應用將通過使用可配置處理器來執行。借助于可配置處理器所帶來的自動設計流程,新的功能支持將會像軟件升級一樣簡單,而設計和驗證時間也將大大降低。
本文地址:http://m.qingdxww.cn/thread-47041-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区在线欧美日韩中文| 亚洲、国产综合视频| 在线 | 果冻国产传媒61国产免费| 天天se天天cao| 天天综合网天天综合色| 色哟哟在线观看视频| 一级毛片免费观看不收费| 国产99网站| 任你躁精品一区二区三区| 亚洲国产色图| 亚洲国产精品久久久久秋霞66| 亚洲成a人片在线看| 亚洲精品视频专区| 国产婷婷一区二区在线观看| 宿舍BL 纯肉各种PLAY H| 人人爱干| 日本japanese丰满高清成人视| 亚洲精品图区| 亚洲天堂久| 国产精品久久精品| 少妇仑乱A毛片| 亚洲精品乱码久久久久久蜜桃| 日韩一区二三区国产好的精华液| 综合激情六月| 中国黄色一级片| 久久久青青| 亚洲欧美在线看| 青青青草影院| 四虎影视在线观看2413| 总裁h啪肉1v1文| 麻豆国产99在线中文| 视频久久| 欧美一级特黄aaaaaa在线看首页| 中文有码中文字幕免费视频| 欲梦ai换脸www在线观看视频| 国内精品久久久久影院网站 | 男女XX00上下抽搐动态图| 日韩精品成人免费观看| 欧洲激情网站| 综合久久网| 扒开校花粉嫩小泬喷潮漫画|