欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于視頻編碼器的幀間預(yù)測(cè)電路及其實(shí)現(xiàn)方法

文檔序號(hào):7898583閱讀:652來源:國知局
專利名稱:用于視頻編碼器的幀間預(yù)測(cè)電路及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種用于視頻編碼器的幀間預(yù)測(cè)器及其實(shí)現(xiàn)方法。
背景技術(shù)
集成電路設(shè)計(jì)方法學(xué)是用來指導(dǎo)集成電路設(shè)計(jì)的方法學(xué)。目前的集成電路設(shè)計(jì), 尤其是大規(guī)模集成電路設(shè)計(jì),其常見的設(shè)計(jì)流程是系統(tǒng)工程師根據(jù)功能需求提出系統(tǒng)功 能框架,軟件工程師利用計(jì)算機(jī)高級(jí)程序語言(例如JaVa、C、C++、Matlab等)對(duì)系統(tǒng)功能 框架進(jìn)行描述,從而得到集成電路的高級(jí)程序語言的算法描述;而后由集成電路設(shè)計(jì)工程 師利用硬件描述語言(例如Veril0g、VHDL等),將算法描述綜合成網(wǎng)表文件,之后使用專 門的硬件綜合工具實(shí)現(xiàn)布局布線,得到集成電路版圖。在集成電路產(chǎn)業(yè)需求中,設(shè)計(jì)速度已成為集成電路設(shè)計(jì)方法學(xué)的重要考慮因素。 當(dāng)集成電路制造商或集成系統(tǒng)供應(yīng)商將商業(yè)運(yùn)作的基本問題(如產(chǎn)品數(shù)量、設(shè)計(jì)/測(cè)試費(fèi) 用、不可再用的工程開支(Non Recurring Engineering,NRE)、用戶IP的整合/復(fù)用、可靠 性和可維護(hù)性、生產(chǎn)過程復(fù)雜性等)綜合考慮在內(nèi)時(shí),加速產(chǎn)品推出時(shí)間、提高產(chǎn)品性能、 降低產(chǎn)品制造風(fēng)險(xiǎn)便成為選擇設(shè)計(jì)技術(shù)時(shí)的重要考慮因素。隨著集成電路制造工藝進(jìn)入45nm以下階段,集成電路設(shè)計(jì)發(fā)展落后于集成電 路工藝進(jìn)步的剪刀差繼續(xù)增大。數(shù)據(jù)流算法,尤其是數(shù)字媒體類的ASIC(AppliCati0n Specific Integrated Circuit,專用集成電路)設(shè)計(jì),例如視頻編碼器的集成電路設(shè)計(jì),面 臨設(shè)計(jì)周期長、靈活性差、擴(kuò)展性差等問題,難以滿足產(chǎn)品快速上市、功能不斷提升的需求, 因而需要改進(jìn)和提升。

發(fā)明內(nèi)容
本發(fā)明要解決的主要技術(shù)問題是,提供一種用于視頻編碼器的幀間預(yù)測(cè)器及其實(shí) 現(xiàn)方法,能夠加快幀間預(yù)測(cè)器的集成電路設(shè)計(jì)速度。為解決上述技術(shù)問題,本發(fā)明提供一種用于視頻編碼器的幀間預(yù)測(cè)器的實(shí)現(xiàn)方 法,其特征在于,包括將高級(jí)程序語言算法描述的視頻編碼器的幀間預(yù)測(cè)器的各個(gè)功能塊映射成由算 子單元構(gòu)成的硬件邏輯描述;由所述算子單元構(gòu)成的硬件邏輯描述生成幀間預(yù)測(cè)器硬件集 成電路。將高級(jí)程序語言算法描述的視頻編碼器的幀間預(yù)測(cè)器的各個(gè)功能塊映射成由算 子單元構(gòu)成的硬件邏輯描述包括如下步驟程序分析步驟讀取幀間預(yù)測(cè)器的各個(gè)功能塊的高級(jí)程序語言算法程序,根據(jù) 該高級(jí)程序語言規(guī)則從所述高級(jí)程序語言算法程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì) 象;數(shù)據(jù)控制流圖生成步驟將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述幀間預(yù)測(cè)器 算法的數(shù)據(jù)控制流圖中相應(yīng)節(jié)點(diǎn);
算子結(jié)構(gòu)圖生成步驟根據(jù)數(shù)據(jù)控制流圖中的各個(gè)節(jié)點(diǎn)的功能處理,從所述算子 單元庫中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將所述數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元組成 的算子時(shí)空?qǐng)D;時(shí)序約束步驟根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定出總時(shí)序約 束,對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束;時(shí)空?qǐng)D壓縮步驟根據(jù)時(shí)間標(biāo)注對(duì)算子時(shí)空?qǐng)D進(jìn)行空間上的聚類壓縮,并使總體 算法執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射步驟將聚類壓縮后的算子時(shí)空?qǐng)D映射成由算子單元構(gòu)成的硬件邏 輯描述。上述方法中,所述算子單元庫中的算子單元包括控制類算子、運(yùn)算類算子、存儲(chǔ)類 算子、路徑類算子、時(shí)鐘類算子中的至少一種。上述方法中,所述運(yùn)算類算子為可重構(gòu)算子,一個(gè)運(yùn)算類算子配置控制位以及多 種運(yùn)算,所述控制位用于擇一選擇一種運(yùn)算;所述路徑類算子用于鏈接存儲(chǔ)類算子與運(yùn)算 類算子,形成數(shù)據(jù)流結(jié)構(gòu),其實(shí)現(xiàn)形式包括多選器、交叉開關(guān)和總線;所述控制類算子用于 推動(dòng)數(shù)據(jù)流的流動(dòng),其實(shí)現(xiàn)形式包括計(jì)數(shù)器、狀態(tài)機(jī)和微指令字,控制輸出內(nèi)容包括運(yùn)算 類算子動(dòng)態(tài)重構(gòu)信息、存儲(chǔ)類算子的配置信息、路徑類算子的配置信息;所述存儲(chǔ)類算子用 于對(duì)不同的數(shù)據(jù)存儲(chǔ)格式和計(jì)算格式進(jìn)行轉(zhuǎn)換。上述方法中,所述執(zhí)行對(duì)象包括運(yùn)算指令和/或控制指令,所述參數(shù)對(duì)象包括輸 入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù)中的至少一種,將所述運(yùn)算指令映射為運(yùn)算類算子,將所述控 制指令映射為控制類算子,所述參數(shù)對(duì)象映射為存儲(chǔ)類算子。一種幀間預(yù)測(cè)器,用于實(shí)現(xiàn)視頻編碼器的幀間預(yù)測(cè),包括ME控制算子模塊、ME存 儲(chǔ)算子功能群落模塊、ME運(yùn)算算子功能群落模塊、MC控制算子功能模塊、MC存儲(chǔ)算子功能 群落模塊和MC運(yùn)算算子功能群落模塊;所述ME控制算子模塊,用于生成ME存儲(chǔ)算子功能群落模塊的存儲(chǔ)地址,還用于配 置ME運(yùn)算算子功能群落的參數(shù),并且還對(duì)ME運(yùn)算算子功能群落模塊的幀間整數(shù)預(yù)測(cè)的判 決處理結(jié)果進(jìn)行比較處理;所述MC控制算子模塊,用于生成MC存儲(chǔ)算子功能群落的存儲(chǔ)地址,還用于配置MC 運(yùn)算算子功能群落的參數(shù),并且還對(duì)MC運(yùn)算算子功能群落模塊的幀間分?jǐn)?shù)預(yù)測(cè)的判決處 理結(jié)果比較處理;所述ME存儲(chǔ)算子功能群落模塊,用于存儲(chǔ)參考幀圖像的參考窗和參考宏塊;所述MC存儲(chǔ)算子功能群落模塊,用于存儲(chǔ)分?jǐn)?shù)插值運(yùn)算的中間結(jié)果和當(dāng)前處理 的宏塊信息和進(jìn)行幀間預(yù)測(cè)得到的最佳宏塊的殘差和運(yùn)動(dòng)矢量,以及參考宏塊的相關(guān)參 數(shù);ME運(yùn)算算子功能群落模塊,用于進(jìn)行幀間整數(shù)預(yù)測(cè)的判決處理;所述MC運(yùn)算算子功能群落模塊,用于計(jì)算幀間分?jǐn)?shù)預(yù)測(cè)的插值和幀間分?jǐn)?shù)預(yù)測(cè) 的判決處理。上述結(jié)構(gòu)中,所述ME運(yùn)算算子功能群落模塊包括cost算子功能I型算子功能塊, 所述MC運(yùn)算算子功能群落模塊包括1/^2插值算子功能塊、1/4插值算子功能塊和cost算 子功能II型算子功能塊;
所述C。St算子功能工型算子功能塊,用于進(jìn)行幀間整數(shù)預(yù)測(cè)的判決處理;
所述l/2插值算子功能塊,用于計(jì)算幀間分?jǐn)?shù)預(yù)測(cè)的l/2插值;
所述l/4插值算子功能塊,用于計(jì)算幀間分?jǐn)?shù)預(yù)測(cè)的l/4插值;
所述C。St算子功能工工型算子功能塊,用于幀間分?jǐn)?shù)預(yù)測(cè)的判決處理。
上述結(jié)構(gòu)中,所述ME存儲(chǔ)算子功能群落模塊包括ME—MEM存儲(chǔ)算子模塊和ME—GEG存儲(chǔ)算子模塊,所述MC存儲(chǔ)算子功能群落模塊包括MC—MEM存儲(chǔ)算子模塊1CUR—RE(存儲(chǔ)算子模塊和S”一3一MEM存儲(chǔ)算子模塊;
所述ME—MEM存儲(chǔ)算子模塊,用于保存參考幀圖像的參考窗的信息;
所述ME—GEG存儲(chǔ)算子模塊,用于保存參考宏塊的信息;
所述MC—MEM存儲(chǔ)算子模塊,用于保存所述MC存儲(chǔ)算子功能群落模塊進(jìn)行幀間分?jǐn)?shù)預(yù)測(cè)插值計(jì)算時(shí)產(chǎn)生的中間結(jié)果;
所述CUR—RE(存儲(chǔ)算子模塊,用于保存當(dāng)前處理宏塊的信息;
所述S”一3一MEM存儲(chǔ)算子模塊,用于保存所述MC存儲(chǔ)算子功能群落模塊進(jìn)行幀間預(yù)測(cè)所得到的最佳宏塊的殘差和運(yùn)動(dòng)矢量,以及所述殘差和運(yùn)動(dòng)矢量所用到的參考宏塊的信息。
上述結(jié)構(gòu)中,還包括ME—AGU地址生成器模塊和MC—AGU地址生成器模塊;
所述ME—AGU地址生成器模塊用于根據(jù)所述ME控制算子模塊的配置信息生成相應(yīng)的地址信息給ME存儲(chǔ)算子功能群落模塊;
所述MC—AGU地址生成器模塊用于根據(jù)所述MC控制算子模塊的配置信息生成相應(yīng)的地址信息給MC存儲(chǔ)算子功能群落模塊。
本發(fā)明的有益效果是本發(fā)明通過設(shè)計(jì)表示硬件邏輯的算子單元,將視頻編碼器的幀間預(yù)測(cè)器的高級(jí)程序語言算法描述映射成由算子單元構(gòu)成的硬件邏輯描述,從而加快幀間預(yù)測(cè)器的集成電路設(shè)計(jì)速度。


圖l為X264一me—SearCh函數(shù)的部分調(diào)用關(guān)系示意 圖2為X264一me—SearCh函數(shù)的輸入輸出表格 圖3為X264一me—SearCh函數(shù)的內(nèi)部變量和常量表格 圖4為piXcl—Sa0—16×16函數(shù)的輸入輸出表格 圖5為X264一me—SearCh函數(shù)的總體數(shù)據(jù)流結(jié)構(gòu) 圖6為piXcl—Sa0—16×16函數(shù)的總體數(shù)據(jù)流結(jié)構(gòu) 圖7為Lo和Ll邏輯算子時(shí)空 圖8為L2邏輯算子時(shí)空 圖9為L3邏輯第一部分的算子時(shí)空 圖lo為L3邏輯第二部分的算子時(shí)空?qǐng)D
圖11為L4邏輯算子時(shí)空 圖12為L5邏輯算子時(shí)空 圖13為X264 me SearCh函數(shù)的全部算子時(shí)空 圖14為piXel Sad 16×16函數(shù)的算子時(shí)空?qǐng)D15為圖13所示結(jié)構(gòu)標(biāo)注時(shí)序后的時(shí)空?qǐng)D;圖16為圖14結(jié)構(gòu)標(biāo)注時(shí)序后的時(shí)空?qǐng)D;圖17為piXel_Sad_16X 16函數(shù)聚類壓縮后的時(shí)空?qǐng)D;圖18為幀間預(yù)測(cè)器算子結(jié)構(gòu)實(shí)現(xiàn)圖;圖19為幀間預(yù)測(cè)器功能模塊圖。
具體實(shí)施例方式下面通過具體實(shí)施方式
結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。一、視頻編碼器概述視頻編碼技術(shù)是數(shù)字媒體存儲(chǔ)與傳輸?shù)年P(guān)鍵技術(shù),它廣泛地應(yīng)用在數(shù)字電視、視 頻通信、網(wǎng)絡(luò)流媒體等領(lǐng)域。本發(fā)明涉及一種基于算子思想的幀間預(yù)測(cè)器及其實(shí)現(xiàn)方法,適 用于信號(hào)處理領(lǐng)域中各種圖像/視頻/音頻DCT變換數(shù)據(jù)的幀間預(yù)測(cè)。目前在視頻編碼領(lǐng)域,由國際電聯(lián)(ITU-T)和國際標(biāo)準(zhǔn)化組織(ISO)聯(lián)合組建的 聯(lián)合視頻組(JVT)共同制定的新數(shù)字視頻編碼標(biāo)準(zhǔn)H.沈4已得到廣泛應(yīng)用。H. 264算法既 是國際電聯(lián)(ITU-T)的H.沈4,也是國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委(IEC)的MPEG-4 標(biāo)準(zhǔn)的第10部分的內(nèi)容,其采用分層次的算法結(jié)構(gòu),在概念上可以分為兩層,分別是視頻 編碼層和網(wǎng)絡(luò)提取層。視頻編碼層(Video Coding Layer,簡(jiǎn)稱VCL)負(fù)責(zé)高效的視頻內(nèi)容 表示,網(wǎng)絡(luò)提取層(Network Abstraction Layer,簡(jiǎn)稱NAL)負(fù)責(zé)以網(wǎng)絡(luò)所要求的恰當(dāng)?shù)姆?式對(duì)數(shù)據(jù)進(jìn)行打包和傳送。通過視頻編碼層和網(wǎng)絡(luò)提取層這樣的結(jié)構(gòu)有助于信息的封裝和 對(duì)信息進(jìn)行更好的優(yōu)先級(jí)控制。H. 264視頻編碼器結(jié)構(gòu)和編碼器的編碼過程如圖1和圖2所示。由圖示中可以看 出,H. 264編碼過程的主要子算法有幀間預(yù)測(cè)、幀內(nèi)預(yù)測(cè)、變換和量化、去塊效應(yīng)濾波和熵 編碼。下面對(duì)各子算法做一簡(jiǎn)述。1、幀間預(yù)測(cè)幀間預(yù)測(cè)是利用視頻圖像幀間的相關(guān)性,即時(shí)間相關(guān)性,來達(dá)到圖像壓縮的目的。 在圖像傳輸技術(shù)中,活動(dòng)圖像是關(guān)注的重點(diǎn)?;顒?dòng)圖像是由時(shí)間上以幀周期為間隔的連續(xù) 圖像幀組成的時(shí)間圖像序列,它在時(shí)間上比在空間上具有更大的相關(guān)性。大多數(shù)圖像相鄰 幀間細(xì)節(jié)變化很小,即圖像幀間具有很強(qiáng)的相關(guān)性,利用幀所具有的這種相關(guān)性特點(diǎn)進(jìn)行 幀間編碼,可獲得比幀內(nèi)編碼高得多的壓縮比。H. 264幀間預(yù)測(cè)是利用已編碼視頻幀/場(chǎng)和 基于塊的運(yùn)動(dòng)補(bǔ)償?shù)念A(yù)測(cè)模式。2、幀內(nèi)預(yù)測(cè)幀內(nèi)預(yù)測(cè)是H. 264采用的一種新技術(shù),指利用當(dāng)前塊的上方和左方的相鄰像素作 為參考像素,對(duì)當(dāng)前塊的像素進(jìn)行預(yù)測(cè)。幀內(nèi)預(yù)測(cè)編碼可以縮減圖像的空間冗余,減小碼率。3、變換和量化在圖像編碼中,變換編碼和量化從原理上講是兩個(gè)獨(dú)立的過程。但在H. 264中,將 兩個(gè)過程的乘法合二為一,并進(jìn)一步采用整數(shù)運(yùn)算,減少編解碼的運(yùn)算量。量化過程是在不 降低視頻效果的前提下減小圖像編碼長度,減少視頻恢復(fù)中不必要的信息。其目的是去除 變換后對(duì)圖像的視覺質(zhì)量不重要的數(shù)據(jù)分量且保持視覺上重要的數(shù)據(jù)分量。其性質(zhì)是被去除后的分量不能恢復(fù),是有損過程。4、去塊濾波基于塊的視頻編碼系統(tǒng)在重建圖像時(shí)不可避免地在某些塊邊界處會(huì)出現(xiàn)一些較 為明顯的塊效應(yīng),特別是在低碼率的情況下。出現(xiàn)塊效應(yīng)的原因在于塊邊界像素的運(yùn)動(dòng)補(bǔ) 償精度一般都低于塊內(nèi)像素,而且塊變換也導(dǎo)致了塊邊界的不連續(xù)性。去塊濾波的主要過 程包括確定濾波強(qiáng)度、判斷虛假邊界、濾波計(jì)算。5、熵編碼在視頻編碼中,熵編碼把一系列用來表示視頻序列的元素符號(hào)轉(zhuǎn)變?yōu)橐粋€(gè)用來傳 輸或是存儲(chǔ)的壓縮碼流。輸入的符號(hào)可能包括量化的變換系統(tǒng)、運(yùn)動(dòng)向量、標(biāo)記、頭以及附 加信息。二、算子設(shè)計(jì)思想概述集成電路設(shè)計(jì),從全定制的晶體管設(shè)計(jì)開始,發(fā)展到1984年前后以1. 0 μ m工藝節(jié) 點(diǎn)為代表的門陣列設(shè)計(jì),再到1994年前后以0. 5 μ m工藝節(jié)點(diǎn)為代表的標(biāo)準(zhǔn)單元設(shè)計(jì),以及 1999年前后以0. 25 μ m工藝節(jié)點(diǎn)為代表的基于IP (知識(shí)產(chǎn)權(quán)核)的設(shè)計(jì)和2004年0. 13um 工藝節(jié)點(diǎn)為代表的時(shí)間驅(qū)動(dòng),目前的集成電路設(shè)計(jì)一般基于標(biāo)準(zhǔn)單元粒度,由硬件描述語 言對(duì)集成電路硬件邏輯進(jìn)行描述,然而硬件描述語言并不適合直接描述高級(jí)程序語言的程 序邏輯和執(zhí)行流程,造成在目前的集成電路設(shè)計(jì)中,由高級(jí)語言向下層硬件映射的速度所 需時(shí)間較長,成為制約集成電路設(shè)計(jì)速度的瓶頸所在。隨著集成電路制造工進(jìn)入45nm以后,集成電路設(shè)計(jì)的效率嚴(yán)重滯后于制造工藝 的進(jìn)步。傳統(tǒng)ASIC設(shè)計(jì)由于設(shè)計(jì)周期長、設(shè)計(jì)成本高、靈活性差、擴(kuò)展性差,難以滿足產(chǎn)品 快速上市、功能不斷提升的需求。大規(guī)模的基于標(biāo)準(zhǔn)單元的設(shè)計(jì)速度已不能滿足要求,究 其原因,主要在于標(biāo)準(zhǔn)單元的粒度太小,只能進(jìn)行加減乘除等運(yùn)算,無法實(shí)現(xiàn)粒度較大的運(yùn) 算。如一次操作可完成一個(gè)多路加法、移位加、加移位或|a_b|等運(yùn)算,而這些算法在視頻 算法中尤為常見。鑒于此,一種基于算子的快速設(shè)計(jì)方法被提出。算子設(shè)計(jì)的基本思想是快速設(shè)計(jì), 其力圖把握最有利的切分點(diǎn),以實(shí)現(xiàn)集成電路的快速設(shè)計(jì)。算子設(shè)計(jì)方法希望從數(shù)學(xué)上能夠支持算法的描述,為實(shí)現(xiàn)算法到算子語言、算子 結(jié)構(gòu)的自動(dòng)化翻譯提供支撐。算子的特點(diǎn)如下1.粒度更大每個(gè)算子都具有一定功能,它是一種函數(shù)運(yùn)算的符號(hào)表示。整個(gè)算子體系能夠支 持算法描述中的各種功能實(shí)現(xiàn),設(shè)計(jì)人員可以基于算子對(duì)算法進(jìn)行描述和驗(yàn)證;2.支持算法的實(shí)現(xiàn)種類完備但是數(shù)量有限的算子能夠支持上層語言描述中對(duì)運(yùn)算、存儲(chǔ)、控制和數(shù) 據(jù)路徑的描述,并且可以基于算子描述進(jìn)行優(yōu)化和驗(yàn)證;3.能夠加速設(shè)計(jì)和驗(yàn)證設(shè)計(jì)人員利用算子完成算法的功能描述后,對(duì)應(yīng)的硬件設(shè)計(jì)也同時(shí)完成。因?yàn)樗?有算子均是預(yù)先全定制的且已被驗(yàn)證正確的單元,因此將縮短設(shè)計(jì)和驗(yàn)證的時(shí)間,設(shè)計(jì)人 員只需要保證基于算子的描述和映射過程的正確即可,從而將大大加速設(shè)計(jì)和驗(yàn)證過程。本發(fā)明提出的算子,或者說算子單元,可以表示集成電路的硬件邏輯,基于算子的不同功能,可將算子分為運(yùn)算類算子、存儲(chǔ)類算子、路徑類算子、控制類算子、時(shí)鐘類算子等 幾類,這些算子構(gòu)成一套完備的算子體系,能支撐所有算法的實(shí)現(xiàn)。經(jīng)過設(shè)計(jì),這些基本算 子在面積、功耗、性能等參數(shù)上是最優(yōu)化,它們構(gòu)成了算子單元庫。并且算子單元還可以組 成算子功能塊,算子功能塊間采用共享MEM鏈接方式進(jìn)行數(shù)據(jù)通信,也可以采用寄存器傳 遞進(jìn)行控制信息傳遞。下面對(duì)各類算子做進(jìn)一步說明。1.運(yùn)算類算子運(yùn)算類算子支持算術(shù)邏輯、移位等運(yùn)算功能的實(shí)現(xiàn),實(shí)現(xiàn)這些基本運(yùn)算的算子稱 為基本運(yùn)算算子。并且,針對(duì)不同應(yīng)用可以在基本運(yùn)算算子的基礎(chǔ)上進(jìn)行擴(kuò)展而予以支持, 比如媒體處理中相減、取絕對(duì)值、求平均值、固定系數(shù)濾波運(yùn)算等復(fù)雜但很常用的運(yùn)算,實(shí) 現(xiàn)這些擴(kuò)展運(yùn)算的運(yùn)算算子稱為擴(kuò)展運(yùn)算算子,它們由基本運(yùn)算算子搭建而成。運(yùn)算類算子具有可重構(gòu)性,即可以為一個(gè)運(yùn)算類算子配置多種運(yùn)算及控制位,控 制位用于擇一選擇一種運(yùn)算。根據(jù)不同應(yīng)用的需求,通過配置控制位,可以使運(yùn)算算子實(shí)現(xiàn) 不同的功能。如果算子在執(zhí)行運(yùn)算過程中變化,可以通過控制位實(shí)現(xiàn)動(dòng)態(tài)可重構(gòu)。而如果 算子的運(yùn)算功能被優(yōu)化固定,則可以將控制位固定(即固化定制)。2.存儲(chǔ)類算子算法中的不同階段對(duì)數(shù)據(jù)處理的順序和排列是不一樣的,從而使得在每個(gè)階段中 數(shù)據(jù)的存儲(chǔ)格式和方式不同,存儲(chǔ)算子則針對(duì)這類需求實(shí)現(xiàn)數(shù)據(jù)不同存儲(chǔ)格式和方式的轉(zhuǎn) 換。存儲(chǔ)類算子可以支持不同應(yīng)用中基本且常用的存儲(chǔ)格式和轉(zhuǎn)換方式,比如串并轉(zhuǎn)換、并 串轉(zhuǎn)換、隊(duì)列結(jié)構(gòu)、堆棧結(jié)構(gòu)等。3.路徑類算子路徑類算子的作用是連接存儲(chǔ)類算子與運(yùn)算類算子,形成數(shù)據(jù)流結(jié)構(gòu)。其實(shí)現(xiàn)形 式主要有三種多選器、交叉開關(guān)和總線。4.控制類算子控制類算子的作用是正常控制數(shù)據(jù)流的流動(dòng)。其實(shí)現(xiàn)形式有三種計(jì)數(shù)器、狀態(tài)機(jī) 和微指令字??刂戚敵鰞?nèi)容包括運(yùn)算類算子動(dòng)態(tài)重構(gòu)信息、存儲(chǔ)類算子AGU的配置信息、 路徑類算子的配置信息,實(shí)現(xiàn)對(duì)其他算子的控制。5.時(shí)鐘類算子時(shí)鐘類算子是驅(qū)動(dòng)和定時(shí)部件,用于產(chǎn)生供控制和處理算子的時(shí)鐘信號(hào),時(shí)鐘信 號(hào)包含控制時(shí)鐘起停和控制時(shí)鐘頻率的信號(hào)。集成電路(IC)的算子設(shè)計(jì)過程可以概括為將C、Matlab等高級(jí)語言的算法描述 轉(zhuǎn)化為算子描述并在算子結(jié)構(gòu)上進(jìn)行優(yōu)化設(shè)計(jì)的過程。由于算子已經(jīng)預(yù)先設(shè)計(jì)并驗(yàn)證,因 此算法的算子描述可以快速或者自動(dòng)完成設(shè)計(jì)驗(yàn)證過程。對(duì)于特定領(lǐng)域,比如通信或媒體, 可以設(shè)計(jì)一些更好支撐算法實(shí)現(xiàn)的擴(kuò)展算子或算子IP,從而更大程度地加速和優(yōu)化設(shè)計(jì)過程。本發(fā)明涉及將算子用于視頻編碼器的幀間預(yù)測(cè)器的實(shí)現(xiàn),其主要包括將高級(jí)程序語言算法描述的視頻編碼器的幀間預(yù)測(cè)器的各個(gè)編碼功能塊映射成 由算子單元構(gòu)成的硬件邏輯描述;由所述算子單元構(gòu)成的硬件邏輯描述生成幀間預(yù)測(cè)器硬 件集成電路。在將高級(jí)程序語言算法描述的視頻編碼器的幀間預(yù)測(cè)器的各個(gè)編碼功能塊映射成由算子單元構(gòu)成的硬件邏輯描述過程中,主要包括如下步驟1)程序分析步驟讀取幀間預(yù)測(cè)器的各個(gè)編碼功能塊的高級(jí)程序語言算法程序, 根據(jù)該高級(jí)程序語言規(guī)則從所述高級(jí)程序語言算法程序中識(shí)別出被映射的執(zhí)行對(duì)象和參 數(shù)對(duì)象;該步驟的主要作用在于算法分解,主要是將C、Java, Matlab等高級(jí)語言描述形式 的算法劃分為若干個(gè)子算法過程。算法分解主要分析函數(shù)調(diào)用關(guān)系、函數(shù)結(jié)構(gòu)體和變量、底 層函數(shù)的基本運(yùn)算等信息,以便以上述的各類算子實(shí)現(xiàn)對(duì)算法的映射。執(zhí)行對(duì)象主要包括 運(yùn)算指令和/或控制指令,參數(shù)對(duì)象主要包括輸入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù)中的至少一 種,在算子映射時(shí),將運(yùn)算指令映射為運(yùn)算類算子,將控制指令映射為控制類算子,參數(shù)對(duì) 象映射為存儲(chǔ)類算子。運(yùn)算類算子和存儲(chǔ)類算子通過路徑類算子鏈接,控制類算子提供控 制,時(shí)鐘類算子提供時(shí)鐘。2)數(shù)據(jù)控制流圖生成步驟將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述幀間預(yù) 測(cè)器算法的數(shù)據(jù)控制流圖中相應(yīng)節(jié)點(diǎn)。即將匹配出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電路算法的數(shù)據(jù)控制流圖中 的相應(yīng)節(jié)點(diǎn)。例如將所述運(yùn)算指令映射為處理框圖,將所述控制指令映射為用于標(biāo)識(shí)狀 態(tài)、狀態(tài)轉(zhuǎn)移條件及狀態(tài)控制信號(hào)的控制流,將所述輸入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù)映射為 數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn)。每個(gè)函數(shù)具有自己的數(shù)據(jù)控制流圖。3)算子結(jié)構(gòu)圖生成步驟根據(jù)數(shù)據(jù)控制流圖中的各個(gè)節(jié)點(diǎn)的功能處理,從算子單 元庫中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將所述數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元組成的 算子時(shí)空?qǐng)D;算子時(shí)空?qǐng)D主要表示了利用算子將算法完全展開后的形式,當(dāng)算法被算子完 全展開之后,算法將完全通過并行性執(zhí)行,速度最快,面積最大,此即時(shí)空?qǐng)D展開。將數(shù)據(jù)控制流圖轉(zhuǎn)換成算子時(shí)空?qǐng)D時(shí)將上層函數(shù)和下層函數(shù)的數(shù)據(jù)控制流圖分 別轉(zhuǎn)換成各自的算子時(shí)空?qǐng)D。先將數(shù)據(jù)控制流圖根據(jù)其數(shù)據(jù)流相關(guān)性展開,然后將展開后 節(jié)點(diǎn)轉(zhuǎn)換成可完成節(jié)點(diǎn)功能的算子單元。用一個(gè)或多個(gè)算子單元的組合取代數(shù)據(jù)控制流圖 中的各節(jié)點(diǎn),一個(gè)或多個(gè)算子單元的組合(算子塊)可完成與各節(jié)點(diǎn)功能相同的功能。展 開成算子時(shí)空?qǐng)D后擴(kuò)大了集成電路的設(shè)計(jì)面積,但這種情況下時(shí)序最快。將數(shù)據(jù)控制流圖展開的方式包括但不限于以下幾種方式如果數(shù)據(jù)控制流圖中的數(shù)據(jù)流為順序相關(guān)數(shù)據(jù)流結(jié)構(gòu),則將所述順序相關(guān)數(shù)據(jù)流 采用流水線的方式展開。如果數(shù)據(jù)控制流圖中的數(shù)據(jù)流中存在反饋時(shí),當(dāng)數(shù)據(jù)流是一個(gè)循環(huán)時(shí),對(duì)于有數(shù) 據(jù)相關(guān)性的數(shù)據(jù)流不能轉(zhuǎn)化為流水結(jié)構(gòu),如果數(shù)據(jù)流的數(shù)據(jù)之間存在數(shù)據(jù)相關(guān)性,并且存 在數(shù)據(jù)相關(guān)性的各數(shù)據(jù)流內(nèi)部不存在數(shù)據(jù)相關(guān)性時(shí),則將所述內(nèi)部數(shù)據(jù)不存在數(shù)據(jù)相關(guān)性 的各數(shù)據(jù)流采用局部流水線的方式展開。如果數(shù)據(jù)控制流圖中的數(shù)據(jù)流之間不存在數(shù)據(jù)相關(guān)性,則將所述并行數(shù)據(jù)流采用 并行方式展開,并轉(zhuǎn)換成由算子單元組成的算子時(shí)空?qǐng)D。4)時(shí)序約束步驟根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定出總時(shí)序 約束,對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束。如果所述數(shù)據(jù)流結(jié)構(gòu)為并行數(shù)據(jù)流,則將總時(shí)序約束平分給到對(duì)應(yīng)的時(shí)空?qǐng)D中的 每個(gè)算子層級(jí),并將每個(gè)算子層級(jí)的時(shí)序約束平分到該算子層級(jí)中的每一個(gè)算子單元。將 數(shù)據(jù)控制流中串行各節(jié)點(diǎn)所對(duì)應(yīng)的各算子層級(jí)總的算子的基本時(shí)序單位作為總體時(shí)序約束,按照各算子層級(jí)中最長運(yùn)算路徑所映射的運(yùn)算算子的時(shí)序占各個(gè)算子層級(jí)中最長運(yùn)算 路徑所映射的算子單元對(duì)應(yīng)的時(shí)序總和的比例來分配各算子層級(jí)的時(shí)序。5)時(shí)空?qǐng)D壓縮步驟根據(jù)時(shí)間標(biāo)注對(duì)算子時(shí)空?qǐng)D進(jìn)行空間上的聚類壓縮,并使總 體算法執(zhí)行時(shí)間最接近于總時(shí)序約束;該步驟是根據(jù)各個(gè)子算法過程的時(shí)間標(biāo)注,在算子 時(shí)空?qǐng)D中進(jìn)行聚類壓縮,通過增加控制類算子和路徑類算子來提高存儲(chǔ)類算子和運(yùn)算類算 子的復(fù)用,使各個(gè)子算法過程的完成時(shí)間盡量與算法過程標(biāo)注的時(shí)間接近,即盡量減少運(yùn) 算和存儲(chǔ)類算子的數(shù)量。將一個(gè)算法描述用算子完全平鋪開,沒有任何復(fù)用,算法的完成速度將最快,但這 帶來的代價(jià)將是很高的面積成本和功耗,這并非設(shè)計(jì)所希望的。設(shè)計(jì)的目標(biāo)期望滿足在 滿足用戶時(shí)序要求的前提下,最大地減小面積和功耗需求,所以需要復(fù)用一些算子。這樣就 需要在每個(gè)算子執(zhí)行相應(yīng)的功能上加上其執(zhí)行時(shí)間的標(biāo)注,從而能夠根據(jù)執(zhí)行時(shí)間復(fù)用算 子,使總體算法執(zhí)行時(shí)間最接近于實(shí)際要求時(shí)間,這就是算子的時(shí)間圖??臻g圖是對(duì)算子面 積的定義,即在算子聚類映射時(shí),根據(jù)算子的面積進(jìn)行聚類,選擇復(fù)用面積較小的算子。在 算子聚類過程中,這兩種因素都需要考慮到。6)下層硬件映射步驟將聚類壓縮后的算子時(shí)空?qǐng)D映射成由算子單元構(gòu)成的硬 件邏輯描述。在基于快速設(shè)計(jì)的算子方法學(xué)中,從高級(jí)程序語言算法描述開始,通過映射得到 可配置算子的時(shí)空?qǐng)D,從時(shí)空?qǐng)D經(jīng)過聚類將算子進(jìn)行空間壓縮,使得在滿足時(shí)序條件的情 況下,基于功能相近與控制一致的原則,將算子聚類形成初步算子實(shí)現(xiàn)的ASIC架構(gòu)。根據(jù) 目標(biāo)算法的實(shí)現(xiàn)去除算子不必要的可重構(gòu)部件,使得面積、功耗、性能等參數(shù)得到進(jìn)一步優(yōu) 化,最后為定制完成的ASIC生成配置指令。這一過程可省去對(duì)高級(jí)程序語言算法,例如C程 序算法的研讀,而可直接根據(jù)C算法的屬性進(jìn)行算子的映射,進(jìn)而大大地縮短了設(shè)計(jì)時(shí)間。三、算子實(shí)現(xiàn)按照上述方法,本發(fā)明以H. 264標(biāo)準(zhǔn)的x264_me_Search函數(shù)為例對(duì)幀間預(yù)測(cè)器的 實(shí)現(xiàn)方法進(jìn)行分析,H. 264標(biāo)準(zhǔn)中提到的X264_me_search函數(shù)可以實(shí)現(xiàn)幀間預(yù)測(cè)功能。步驟一,對(duì)以C語言描述的x264_me_Search函數(shù)進(jìn)行分解,具體包括1、分析x264_me_search函數(shù)的調(diào)用關(guān)系,圖1部分示出了 x^4_me_search函數(shù) 的調(diào)用關(guān)系;2、針對(duì)x264_me_Search函數(shù)作輸入輸出變量分析,具體分析結(jié)果見圖2所示的表 格;3、針對(duì)X264_me_SearCh函數(shù)作內(nèi)部變量與常量分析,具體分析結(jié)果見圖3所示的 表格;4、內(nèi)部函數(shù)(調(diào)用函數(shù))分析。比如,x^4_me_SearCh主函數(shù)調(diào)用了 pixel_ sad_16X16函數(shù),以pixel_sad_16X16函數(shù)為例,對(duì)內(nèi)部函數(shù)分析作說明。分析pixel_ sad_16X 16函數(shù)時(shí),主要分析pixel_sad_16X 16函數(shù)的輸入和輸出,pixel_sad_16X 16函 數(shù)的輸入和輸出如圖4所示的表格。步驟二 將分解后的x264_me_Search函數(shù)生成算子時(shí)空?qǐng)D,包括先由高級(jí)語言生 成數(shù)據(jù)流圖,再由數(shù)據(jù)流圖調(diào)用算子單元庫中相應(yīng)的算子映射成算子時(shí)空?qǐng)D。1、由算法生成數(shù)據(jù)流圖。
如圖5所示為X264_me_SearCh函數(shù)的數(shù)據(jù)流圖,其中圖2表格中的輸入信號(hào)映射 為圖中的左側(cè)方框,輸出信號(hào)映射為圖中的右側(cè)方框;圖3表格中的中間變量和常量映射 為中部方框。上述中,輸入變量,輸出變量和常量均映射為寄存器的形式,在基于算子的設(shè) 計(jì)方法中,寄存器可以用存儲(chǔ)類算子實(shí)現(xiàn)。x264_me_search函數(shù)的內(nèi)部邏輯映射為圖示中的標(biāo)有用LO至L5其中一個(gè)的三維 立體框表示,LO和L5具體內(nèi)容如下LO WM :bmx = x264_clip3 ((m- > mvp
+2) >>2, _m_ > i_mv_range, m_ > i_mv_range);Ll WM :bmy = x264_clip3 ((m- > mvp[l]+2) >>2, _m_ > i_mv_range, m_ > i_mv_range);L2 WM :P_fref = &m_ > p_fref [bmy* (m- > i_stride) *5+bmx];L 3邏輯COst比較邏輯;L4 邏輯bmx、bmy 和 p_fref 更新邏輯;L5 邏輯m- > mv
= bmx << 2 ;m_ > mv[l] = bmy << 2 ;x264_me_search函數(shù)調(diào)用映射為圖示中的三維立體框,用虛線表示的是反 饋。特別地,由于圖2中的輸入信號(hào)Im算法中總是給piXel_sad_16X16函數(shù)或pixel_ satd_16X 16函數(shù)作為輸入,因此,在由算法分解后映射的數(shù)據(jù)流圖中并沒有在圖中示出 Im輸入。在圖5所示的數(shù)據(jù)流圖中,并沒有詳細(xì)描述出piXel_Sad_16X16函數(shù)的數(shù)據(jù)流 圖。piXel_sad_16X16函數(shù)的數(shù)據(jù)流圖如圖6所示,具體含義如與上所述類似。2、由數(shù)據(jù)流圖生成算子時(shí)空?qǐng)D。(1)、調(diào)用預(yù)先設(shè)計(jì)好的算子單元庫中的算子,將上述數(shù)據(jù)流圖映射成用算子表示 的時(shí)空?qǐng)D。在映射過程中可以考慮數(shù)據(jù)的相關(guān)性,從而使算子結(jié)構(gòu)具有最大的并行結(jié)構(gòu)。對(duì)圖5所示的x264_me_Search函數(shù)的數(shù)據(jù)流圖,將其LO到L5邏輯分別映射成相 應(yīng)的算子時(shí)空?qǐng)D,映射過程如下述LO和Ll的高級(jí)語言表述相同,如下所示bmx = x264_clip3 ((m_ > mvp
+2) > > 2,-m_ > i_mv_range, m_ > i_mv_ range);因此,LO和Ll邏輯生成的算子時(shí)空?qǐng)D如圖7所示。圖示中,左側(cè)方框的內(nèi)容表示 輸入的信號(hào),右側(cè)方框的內(nèi)容表示輸出的變量。XO和Xl為控制算子產(chǎn)生的配置信號(hào),其控 制流用虛線表示。圖示中矩形方框代表映射的運(yùn)算算子或存儲(chǔ)算子,它們的互連由路徑算 子實(shí)現(xiàn)。圖示中,ALU2、ADSSM、CLIP是運(yùn)算類算子,標(biāo)有變量的矩形框是存儲(chǔ)變量的存儲(chǔ)節(jié) 點(diǎn),標(biāo)有2的矩形框是值為2的存儲(chǔ)常量節(jié)點(diǎn),空的矩形框是變量傳遞的存儲(chǔ)節(jié)點(diǎn),用于數(shù) 據(jù)同步。L2邏輯的高級(jí)語言表述如下L2 WM :P_fref = &m_ > p_fref [bmy* (m- > i_stride) *5+bmx];L2邏輯的算子時(shí)空?qǐng)D生成如圖8所示,圖示中各部分表示的內(nèi)容如LO和Ll邏輯 中所述。L3邏輯的高及語言由兩部分組成,分別對(duì)這兩部分時(shí)行算子映射,其中第一部分的高級(jí)語言表述如下bcost = h- > pixf. sad[i_pixel] (m_ > p_fenc, m_ > i_stride, p_fref,(m-> i_stride)*5);for(i_iter = 0 ;i_iter < 16 ;i_iter++){int best = 0 ;int cost [4];(cost
) = h- > pixf. sad[i_pixel] (m_ > p_fenc,m- > i_stride,&p_fref[(-l)*m- > i_stride*5+(0)],m_ > i_stride*5)+m_ > lm*(bs_size_se(((bmx+ (0)) < < 2)-m- > mvp
) +bs_size_se (((bmy+ (-1))
<< 2)-m- > mvp[l]));(cost[1]) = h- > pixf. s ad[i_pixel] (m_ > p_fenc,m- > i_stride, &p_fref[(1)> i_stride*5+(0)], m_ > i_stride*5)+m- > lm*(bs_size_se(((bmx+(0)) < < 2)-m- > mvp
) +bs_size_se (((bmy+ (1)) << 2)-m- > mvp[l]));(cost[2]) = h- > pixf. sad[i_pixel] (m_ > p_fenc,m- > i_stride,&p_fref[(0)*m- > i_stride*5+(_l)],m_ > i_stride*5)+m_ > lm*(bs_size_se (((bmx+ (-1)) < < 2)-m- > mvp
) +bs_size_se (((bmy+ (0)) << 2)-m- > mvp[l]));(cost[3]) = h- > pixf. sad[i_pixel] (m_ > p_fenc,m- > i_stride, &p_fref[(0)> i_stride*5+(1)], m_ > i_stride*5)+m- > lm*(bs_size_se(((bmx+(l)) < < 2)-m- > mvp
) +bs_size_se (((bmy+ (0)) << 2)-m- > mvp[l]));L3邏輯第一部分算子時(shí)空?qǐng)D生成如圖9所示,圖示中各部分表示的內(nèi)容如LO和 Ll邏輯中所述。L3邏輯第二部分的高級(jí)語言表述如下if (cost[l] < cost
)best = 1 ;if (cost [2] < cost [best]) best = 2 ;if (cost[3] < cost [best]) best = 3 ;if (bcost < = cost [best])break ;
bcost = cost [best];L3邏輯第二部分算子時(shí)空?qǐng)D生成如圖10所示,圖示中各部分表示的內(nèi)容如LO和 Ll邏輯中所述。L4邏輯的高級(jí)語言表述如下1^4邏輯丨€0^81==0){bmy—;p_fref- = (m_ > i_stride)*5 ;} else if (best == 1) {bmy++ ;p_fref+ = (m_ > i_stride)*5 ;}else if (best = = 2) {bmx—;p_fref—;}else if (best = = 3) {bmx++ ;p_fref++ ;}L4邏輯的算子時(shí)空?qǐng)D生成如圖11錯(cuò)誤!未找到引用源。所示,圖示中各部分表示 的內(nèi)容如LO和Ll邏輯中所述。L5邏輯的高級(jí)語言表述如下L5 邏輯m_ > mv
= bmx < < 2 ;m- > mv[l] = bmy << 2 ;L5邏輯的算子時(shí)空?qǐng)D生成如12錯(cuò)誤!未找到引用源。所示,,圖示中各部分表示 的內(nèi)容如LO和Ll邏輯中所述。由LO至L5邏輯的算子時(shí)空?qǐng)D得x264_me_SearCh函數(shù)的全部算子時(shí)空?qǐng)D展開如 圖13所示。(2)、調(diào)用函數(shù)高級(jí)語言生成算子時(shí)空?qǐng)D。針對(duì)調(diào)用函數(shù)的分析以x264_me_Search 函數(shù)內(nèi)部調(diào)用pixel_sad_16X 16函數(shù)為例。pixel_sad_16X 16函數(shù)的高級(jí)語言表述如下for(y = 0 ;y < Iy ;y++){for (χ = 0 ;χ < Ix ;χ++){i_sum+ = abs(pixl[x]-pix2[x]) ;}pixl+ = i_stride_pixl ;pix2+ = i_stride_pix2 ;}return i_sum ;pixel_sad_16X16函數(shù)的算子時(shí)空?qǐng)D生成如圖14所示。僅用5個(gè)算子周期即可 完成pixel_sad_16X 16函數(shù)的運(yùn)算。步驟三對(duì)算子時(shí)空?qǐng)D添加時(shí)序標(biāo)注,包括對(duì)當(dāng)前函數(shù)的算子時(shí)空?qǐng)D進(jìn)行時(shí)序標(biāo) 注和對(duì)調(diào)用函數(shù)的時(shí)空?qǐng)D標(biāo)注時(shí)序。
14
1、對(duì)圖13所示的x264_me_Search函數(shù)的算子時(shí)空?qǐng)D標(biāo)注時(shí)序。標(biāo)注時(shí)序后的算 子時(shí)空?qǐng)D如圖15所示。2、對(duì)如圖14所示的piXel_Sad_16X16函數(shù)的算子時(shí)空?qǐng)D標(biāo)注時(shí)序,標(biāo)注時(shí)序后 的算子時(shí)空?qǐng)D如圖16所示。步驟四對(duì)圖15和圖16所示的標(biāo)注了時(shí)序的時(shí)空?qǐng)D進(jìn)行聚類壓縮。pixel_ sad_16X16函數(shù)的算子時(shí)空?qǐng)D的聚類壓縮結(jié)果如圖17所示,整個(gè)x264_me_search函數(shù)進(jìn) 行聚類壓縮后的算子結(jié)構(gòu)圖如圖18所示。對(duì)于完成圖15和圖16這種平鋪展開的算子時(shí)空?qǐng)D的總體算法所用的時(shí)間是最少 的,但所述算子時(shí)空?qǐng)D占據(jù)的空間面積確是最大的,對(duì)于集成電路的設(shè)計(jì)來說,時(shí)間和空間 都要綜合考慮。因此,可以對(duì)圖15和圖16所述的算子時(shí)空?qǐng)D進(jìn)行聚類壓縮,聚類壓縮是指 對(duì)某此運(yùn)算屬性相同的運(yùn)算類算子和/或存儲(chǔ)屬性相同的存儲(chǔ)類算子通過引入控制算子 的方式將其復(fù)用,以達(dá)到增加時(shí)序和減小面積的目的。由于在幀間預(yù)測(cè)算子時(shí)空?qǐng)D中所用 到的算子多種多樣,所以可能的聚類壓縮結(jié)果也很多,所選擇聚類壓縮后執(zhí)行算法所需總 時(shí)間最接近時(shí)序約束時(shí)間的結(jié)果作為聚類壓縮后的結(jié)果。在聚類壓縮過程中,有以下原則 可供參考1、對(duì)算子時(shí)空?qǐng)D中運(yùn)算屬性相同的運(yùn)算類算子進(jìn)行聚類壓縮。比如,時(shí)空?qǐng)D中可 以將兩個(gè)并行的加法操作算子壓縮成一個(gè)加法操作算子,同時(shí)通過引入控制算子的方式實(shí) 現(xiàn)壓縮后的加法算子的復(fù)用,完成與壓縮前的兩個(gè)加法算子相同的功能。由此可見,對(duì)算子 時(shí)空?qǐng)D進(jìn)行壓縮后,算子的數(shù)目可以大幅度的減少,從而節(jié)約了集成電路的面積,相應(yīng)地, 壓縮后的算子通過控制算子實(shí)現(xiàn)復(fù)用,增加了集成電路總算法的執(zhí)行時(shí)間。可以理解的是, 對(duì)運(yùn)算類算子的聚類壓縮必然引起存儲(chǔ)類算子、控制類算子、路徑類算子和時(shí)鐘類算子也 相應(yīng)地發(fā)生變化,所以可以根據(jù)實(shí)際情況對(duì)上述算子也作相應(yīng)的聚類壓縮以進(jìn)一步節(jié)約集 成電路面積,尤其是其中的存儲(chǔ)類算子。2、在引入控制算子的同時(shí),生成相應(yīng)的配置指令,所述配置指令用于控制生成的 算子按照預(yù)定的方式工作,從而實(shí)現(xiàn)與壓縮前算子的相同功能。3、對(duì)于同一個(gè)算子時(shí)空?qǐng)D可能的聚類壓縮結(jié)果有多種。因此,在壓縮過程中,選擇 壓縮后時(shí)空?qǐng)D總算法執(zhí)行時(shí)間最接近約束時(shí)間的時(shí)空?qǐng)D作為最終的壓縮結(jié)果。選擇總算法 執(zhí)行時(shí)間最接近約束時(shí)間的時(shí)空?qǐng)D作為壓縮結(jié)果,可以在保證滿足時(shí)序條件的情況下,最 大地節(jié)約集成電路的面積。約束時(shí)間是根據(jù)用戶提出的性能指標(biāo)而計(jì)算出的集成電路最大 執(zhí)行時(shí)間。對(duì)于上述聚類壓縮后的結(jié)果,還可以進(jìn)行更進(jìn)一步的優(yōu)化,一種優(yōu)化的方式是固 化定制。固化定制是指對(duì)于可重構(gòu)的算子,將沒有用到的單元結(jié)構(gòu)或其擴(kuò)展功能取消息,使 其只具有在本算法中所使用的功能。四、算子實(shí)現(xiàn)后的幀間預(yù)測(cè)器結(jié)構(gòu)。如圖19所示,一種幀間預(yù)測(cè)器,用于實(shí)現(xiàn)視頻編碼器的幀間預(yù)測(cè),包括ME控制算 子模塊、ME存儲(chǔ)算子功能群落模塊、ME運(yùn)算算子功能群落模塊、MC控制算子功能模塊、MC 存儲(chǔ)算子功能群落模塊和MC運(yùn)算算子功能群落模塊;所述ME控制算子模塊,用于生成ME存儲(chǔ)算子功能群落模塊的存儲(chǔ)地址,還用于配 置ME運(yùn)算算子功能群落的參數(shù),并且還對(duì)ME運(yùn)算算子功能群落模塊的幀間整數(shù)預(yù)測(cè)的判決處理結(jié)果進(jìn)行比較處理;所述MC控制算子模塊,用于生成MC存儲(chǔ)算子功能群落的存儲(chǔ)地址,還用于配置MC 運(yùn)算算子功能群落的參數(shù),并且還對(duì)MC運(yùn)算算子功能群落模塊的幀間分?jǐn)?shù)預(yù)測(cè)的判決處 理結(jié)果比較處理;所述ME存儲(chǔ)算子功能群落模塊,用于存儲(chǔ)參考幀圖像的參考窗和參考宏塊;所述MC存儲(chǔ)算子功能群落模塊,用于存儲(chǔ)分?jǐn)?shù)插值運(yùn)算的中間結(jié)果和當(dāng)前處理 的宏塊信息和進(jìn)行幀間預(yù)測(cè)得到的最佳宏塊的殘差和運(yùn)動(dòng)矢量,以及參考宏塊的相關(guān)參 數(shù);ME運(yùn)算算子功能群落模塊,用于進(jìn)行幀間整數(shù)預(yù)測(cè)的判決處理;所述MC運(yùn)算算子功能群落模塊,用于計(jì)算幀間分?jǐn)?shù)預(yù)測(cè)的插值和幀間分?jǐn)?shù)預(yù)測(cè) 的判決處理。如圖18所示,所述ME運(yùn)算算子功能群落模塊包括cost算子功能I型算子功能塊, 所述MC運(yùn)算算子功能群落模塊包括1/^2插值算子功能塊、1/4插值算子功能塊和cost算 子功能II型算子功能塊;所述cost算子功能I型算子功能塊,用于進(jìn)行幀間整數(shù)預(yù)測(cè)的判決處理;所述1/2插值算子功能塊,用于計(jì)算幀間分?jǐn)?shù)預(yù)測(cè)的1/2插值;所述1/4插值算子功能塊,用于計(jì)算幀間分?jǐn)?shù)預(yù)測(cè)的1/4插值;所述cost算子功能II型算子功能塊,用于幀間分?jǐn)?shù)預(yù)測(cè)的判決處理。如圖18所示,所述ME存儲(chǔ)算子功能群落模塊包括ME-MEM存儲(chǔ)算子模塊和ME-GEG 存儲(chǔ)算子模塊,所述MC存儲(chǔ)算子功能群落模塊包括MC-MEM存儲(chǔ)算子模塊、CUR-REG存儲(chǔ)算 子模塊和ST2_3-MEM存儲(chǔ)算子模塊;所述ME-MEM存儲(chǔ)算子模塊,用于保存參考幀圖像的參考窗的信息;所述ME-GEG存儲(chǔ)算子模塊,用于保存參考宏塊的信息;所述MC-MEM存儲(chǔ)算子模塊,用于保存所述MC存儲(chǔ)算子功能群落模塊進(jìn)行幀間分 數(shù)預(yù)測(cè)插值計(jì)算時(shí)產(chǎn)生的中間結(jié)果;所述⑶R-REG存儲(chǔ)算子模塊,用于保存當(dāng)前處理宏塊的信息;所述ST2_3_MEM存儲(chǔ)算子模塊,用于保存所述MC存儲(chǔ)算子功能群落模塊進(jìn)行幀間 預(yù)測(cè)所得到的最佳宏塊的殘差和運(yùn)動(dòng)矢量,以及所述殘差和運(yùn)動(dòng)矢量所用到的參考宏塊的 fn息ο如圖18所示,還包括ME-AGU地址生成器模塊和MC-AGU地址生成器模塊;所述ME-AGU地址生成器模塊用于根據(jù)所述ME控制算子模塊的配置信息生成相應(yīng) 的地址信息給ME存儲(chǔ)算子功能群落模塊;所述MC-AGU地址生成器模塊用于根據(jù)所述MC控制算子模塊的配置信息生成相應(yīng) 的地址信息給MC存儲(chǔ)算子功能群落模塊。以上內(nèi)容是結(jié)合具體的實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā) 明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫 離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù) 范圍。
權(quán)利要求
1.一種用于視頻編碼器的幀間預(yù)測(cè)器的實(shí)現(xiàn)方法,其特征在于,包括將高級(jí)程序語言算法描述的視頻編碼器的幀間預(yù)測(cè)器的各個(gè)功能塊映射成由算子單 元構(gòu)成的硬件邏輯描述;由所述算子單元構(gòu)成的硬件邏輯描述生成幀間預(yù)測(cè)器硬件集成電路。
2.如權(quán)利要求1所述的方法,其特征在于,將高級(jí)程序語言算法描述的視頻編碼器的 幀間預(yù)測(cè)器的各個(gè)功能塊映射成由算子單元構(gòu)成的硬件邏輯描述包括如下步驟程序分析步驟讀取幀間預(yù)測(cè)器的各個(gè)功能塊的高級(jí)程序語言算法程序,根據(jù)該高級(jí) 程序語言規(guī)則從所述高級(jí)程序語言算法程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象;數(shù)據(jù)控制流圖生成步驟將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述幀間預(yù)測(cè)器算法 的數(shù)據(jù)控制流圖中相應(yīng)節(jié)點(diǎn);算子結(jié)構(gòu)圖生成步驟根據(jù)數(shù)據(jù)控制流圖中的各個(gè)節(jié)點(diǎn)的功能處理,從所述算子單元 庫中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將所述數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元組成的算 子時(shí)空?qǐng)D;時(shí)序約束步驟根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定出總時(shí)序約束,對(duì) 算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束;時(shí)空?qǐng)D壓縮步驟根據(jù)時(shí)間標(biāo)注對(duì)算子時(shí)空?qǐng)D進(jìn)行空間上的聚類壓縮,并使總體算法 執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射步驟將聚類壓縮后的算子時(shí)空?qǐng)D映射成由算子單元構(gòu)成的硬件邏輯描述。
3.如權(quán)利要求2所述的方法,其特征在于,所述算子單元庫中的算子單元包括控制類 算子、運(yùn)算類算子、存儲(chǔ)類算子、路徑類算子、時(shí)鐘類算子中的至少一種。
4.如權(quán)利要求3所述的方法,其特征在于,所述運(yùn)算類算子為可重構(gòu)算子,一個(gè)運(yùn)算 類算子配置控制位以及多種運(yùn)算,所述控制位用于擇一選擇一種運(yùn)算;所述路徑類算子用 于鏈接存儲(chǔ)類算子與運(yùn)算類算子,形成數(shù)據(jù)流結(jié)構(gòu),其實(shí)現(xiàn)形式包括多選器、交叉開關(guān)和總 線;所述控制類算子用于推動(dòng)數(shù)據(jù)流的流動(dòng),其實(shí)現(xiàn)形式包括計(jì)數(shù)器、狀態(tài)機(jī)和微指令字, 控制輸出內(nèi)容包括運(yùn)算類算子動(dòng)態(tài)重構(gòu)信息、存儲(chǔ)類算子的配置信息、路徑類算子的配置 信息;所述存儲(chǔ)類算子用于對(duì)不同的數(shù)據(jù)存儲(chǔ)格式和計(jì)算格式進(jìn)行轉(zhuǎn)換。
5.如權(quán)利要求3所述的方法,其特征在于,所述執(zhí)行對(duì)象包括運(yùn)算指令和/或控制指 令,所述參數(shù)對(duì)象包括輸入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù)中的至少一種,將所述運(yùn)算指令映射 為運(yùn)算類算子,將所述控制指令映射為控制類算子,所述參數(shù)對(duì)象映射為存儲(chǔ)類算子。
6.一種幀間預(yù)測(cè)器,用于實(shí)現(xiàn)視頻編碼器的幀間預(yù)測(cè),其特征在于,包括:ME控制算子 模塊、ME存儲(chǔ)算子功能群落模塊、ME運(yùn)算算子功能群落模塊、MC控制算子功能模塊、MC存 儲(chǔ)算子功能群落模塊和MC運(yùn)算算子功能群落模塊;所述ME控制算子模塊,用于生成ME存儲(chǔ)算子功能群落模塊的存儲(chǔ)地址,還用于配置ME 運(yùn)算算子功能群落的參數(shù),并且還對(duì)ME運(yùn)算算子功能群落模塊的幀間整數(shù)預(yù)測(cè)的判決處 理結(jié)果進(jìn)行比較處理;所述MC控制算子模塊,用于生成MC存儲(chǔ)算子功能群落的存儲(chǔ)地址,還用于配置MC運(yùn) 算算子功能群落的參數(shù),并且還對(duì)MC運(yùn)算算子功能群落模塊的幀間分?jǐn)?shù)預(yù)測(cè)的判決處理 結(jié)果比較處理;所述ME存儲(chǔ)算子功能群落模塊,用于存儲(chǔ)參考幀圖像的參考窗和參考宏塊; 所述MC存儲(chǔ)算子功能群落模塊,用于存儲(chǔ)分?jǐn)?shù)插值運(yùn)算的中間結(jié)果和當(dāng)前處理的宏 塊信息和進(jìn)行幀間預(yù)測(cè)得到的最佳宏塊的殘差和運(yùn)動(dòng)矢量,以及參考宏塊的相關(guān)參數(shù); ME運(yùn)算算子功能群落模塊,用于進(jìn)行幀間整數(shù)預(yù)測(cè)的判決處理; 所述MC運(yùn)算算子功能群落模塊,用于計(jì)算幀間分?jǐn)?shù)預(yù)測(cè)的插值和幀間分?jǐn)?shù)預(yù)測(cè)的判 決處理。
7.如權(quán)利要求6所述的幀間預(yù)測(cè)器,其特征在于,所述ME運(yùn)算算子功能群落模塊包括 cost算子功能I型算子功能塊,所述MC運(yùn)算算子功能群落模塊包括1/2插值算子功能塊、 1/4插值算子功能塊和cost算子功能II型算子功能塊;所述cost算子功能I型算子功能塊,用于進(jìn)行幀間整數(shù)預(yù)測(cè)的判決處理; 所述1/2插值算子功能塊,用于計(jì)算幀間分?jǐn)?shù)預(yù)測(cè)的1/2插值; 所述1/4插值算子功能塊,用于計(jì)算幀間分?jǐn)?shù)預(yù)測(cè)的1/4插值; 所述cost算子功能II型算子功能塊,用于幀間分?jǐn)?shù)預(yù)測(cè)的判決處理。
8.如權(quán)利要求6所述的幀間預(yù)測(cè)器,其特征在于,所述ME存儲(chǔ)算子功能群落模塊包括 ME-MEM存儲(chǔ)算子模塊和ME-GEG存儲(chǔ)算子模塊,所述MC存儲(chǔ)算子功能群落模塊包括MC-MEM 存儲(chǔ)算子模塊、CUR-REG存儲(chǔ)算子模塊和ST2_3-MEM存儲(chǔ)算子模塊;所述ME-MEM存儲(chǔ)算子模塊,用于保存參考幀圖像的參考窗的信息; 所述ME-GEG存儲(chǔ)算子模塊,用于保存參考宏塊的信息;所述MC-MEM存儲(chǔ)算子模塊,用于保存所述MC存儲(chǔ)算子功能群落模塊進(jìn)行幀間分?jǐn)?shù)預(yù) 測(cè)插值計(jì)算時(shí)產(chǎn)生的中間結(jié)果;所述CUR-REG存儲(chǔ)算子模塊,用于保存當(dāng)前處理宏塊的信息; 所述ST2_3-MEM存儲(chǔ)算子模塊,用于保存所述MC存儲(chǔ)算子功能群落模塊進(jìn)行幀間預(yù) 測(cè)所得到的最佳宏塊的殘差和運(yùn)動(dòng)矢量,以及所述殘差和運(yùn)動(dòng)矢量所用到的參考宏塊的信 肩、ο
9.如權(quán)利要求6所述的幀間預(yù)測(cè)器,其特征在于,還包括ME-AGU地址生成器模塊和 MC-A⑶地址生成器模塊;所述ME-AGU地址生成器模塊用于根據(jù)所述ME控制算子模塊的配置信息生成相應(yīng)的地 址信息給ME存儲(chǔ)算子功能群落模塊;所述MC-AGU地址生成器模塊用于根據(jù)所述MC控制算子模塊的配置信息生成相應(yīng)的地 址信息給MC存儲(chǔ)算子功能群落模塊。
全文摘要
本發(fā)明公開了一種用于視頻編碼器的幀間預(yù)測(cè)器的實(shí)現(xiàn)方法,包括將高級(jí)程序語言算法描述的視頻編碼器的幀間預(yù)測(cè)器的各個(gè)功能塊映射成由算子單元構(gòu)成的硬件邏輯描述;由所述算子單元構(gòu)成的硬件邏輯描述生成幀間預(yù)測(cè)器硬件集成電路。通過上述可以加快幀間預(yù)測(cè)器的集成電路實(shí)現(xiàn)速度。本發(fā)明還公開了一種依據(jù)上述方法得到的幀間預(yù)測(cè)器。
文檔編號(hào)H04N7/36GK102075762SQ201010619869
公開日2011年5月25日 申請(qǐng)日期2010年12月31日 優(yōu)先權(quán)日2010年12月31日
發(fā)明者關(guān)保貞, 張興, 王巍, 王新安, 王騰, 胡子一, 謝崢 申請(qǐng)人:北京大學(xué)深圳研究生院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
赞皇县| 江达县| 陕西省| 桐庐县| 浏阳市| 滁州市| 应城市| 仙居县| 壶关县| 鄯善县| 阳江市| 政和县| 龙州县| 迭部县| 响水县| 宝清县| 嘉荫县| 根河市| 齐齐哈尔市| 临江市| 德惠市| 郓城县| 西平县| 卢龙县| 河南省| 永胜县| 吉安县| 沂南县| 辽宁省| 吉隆县| 阜城县| 偃师市| 襄樊市| 宜都市| 清新县| 安化县| 平陆县| 东兴市| 灌南县| 晴隆县| 满洲里市|