專利名稱::譯碼系統(tǒng)及其譯碼方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及譯碼系統(tǒng)及其譯碼方法,特別是涉及應(yīng)用于可編程圖形處理單元內(nèi)的計算核心的內(nèi)容適應(yīng)性二進(jìn)制算術(shù)編碼的譯碼系統(tǒng)及其譯碼方法。
背景技術(shù):
:計算機(jī)繪圖是以計算機(jī)產(chǎn)生圖像、影像或其它圖形或圖像信息的一門藝術(shù)和科學(xué),目前的繪圖系統(tǒng)多包含數(shù)個接口,例如微軟的Direct3D接口及OpenGL等等,如此可于執(zhí)行特定操作系統(tǒng)(如微軟的WINDOWS)的計算機(jī)上控制諸如圖形加速器或圖形處理單元(graphicsprocessingunit,GPU)等的多媒體硬件,圖像、影像的產(chǎn)生常被稱為「描繪成像(rendering)」,此類操作的細(xì)節(jié)一般是由圖形加速器進(jìn)行,于三維(3D)計算機(jī)繪圖中,構(gòu)成場景中對象表面(或物體)的幾何形狀經(jīng)轉(zhuǎn)變?yōu)橄袼?圖形單元)后,儲存于畫面緩沖區(qū)(framebuffer)中,接著顯示于顯示裝置上,每一個對象或?qū)ο笕憾加信c表面外觀有關(guān)的特定視覺性質(zhì),例如材質(zhì)、反射性、形狀、紋理等等,這些可以定義成對象或?qū)ο笕旱拿枥L內(nèi)容(context)。計算機(jī)繪圖必須迎合消費(fèi)者對游戲及其它多媒體產(chǎn)品的控制性及特色的重口味要求,還要能產(chǎn)生更加真實(shí)的影像以及改善處理速度及耗能,現(xiàn)已發(fā)展出許多標(biāo)準(zhǔn)可以利用較少的位數(shù)產(chǎn)生較佳影像的質(zhì)量,例如H.264標(biāo)準(zhǔn)(又稱為ISO動畫專家群組MPEG-4第十部)是一種高壓縮數(shù)字視訊編碼標(biāo)準(zhǔn),與MPEG-2兼容的編碼相比,H.264兼容的編碼僅需要差不多三分之一的位數(shù),即可儲存同樣視頻質(zhì)量的視訊,H.264標(biāo)準(zhǔn)提供兩種熵(entropy)譯碼程序,分別是內(nèi)容適應(yīng)性二進(jìn)制算術(shù)編碼(context-adaptivebinaryarithmeticcoding,CABAC)以及內(nèi)容適應(yīng)性可變長度編碼(context-adaptivevariablelengthcoding,CAVLC),關(guān)于CABAC,其解碼運(yùn)算通常是依序處理,需要大量的計算以得到范圍、補(bǔ)償、內(nèi)容(context)信息等參數(shù),目前CABAC譯碼結(jié)構(gòu)可滿足消費(fèi)者的部分需求,但是在設(shè)計上仍有其限制。
發(fā)明內(nèi)容本發(fā)明披露一種內(nèi)容適應(yīng)性二進(jìn)制算術(shù)編碼(context-adaptivebinaryarithmetic,CABAC)的譯碼系統(tǒng)及方法(之后簡稱為譯碼系統(tǒng)),運(yùn)用于圖形處理單元(graphicsprocessingunit,GPU)內(nèi)的多線程(multithread)并行計算核心,簡單地說,于一實(shí)施例中,本系統(tǒng)包含一軟件可編程核心處理單元,其內(nèi)具有一CABAC單元以執(zhí)行一著色器(shader),該著色器可以執(zhí)行視訊流的CABAC譯碼,并提供一譯碼數(shù)據(jù)輸出。方法實(shí)施例則包括將著色器加載具有CABAC單元的可編程核心處理單元,CABAC執(zhí)行該著色器以CABAC譯碼一視訊流,并提供一譯碼數(shù)據(jù)輸出。本領(lǐng)域技術(shù)人員在閱讀以下結(jié)合附圖的詳細(xì)說明之后,可推演出其它系統(tǒng)、方法、特征及優(yōu)點(diǎn),所有這些推演的系統(tǒng)、方法、特征及優(yōu)點(diǎn)均屬本發(fā)明的范圍,受到如所附權(quán)利要求的保護(hù)。這里所披露實(shí)施例的各方觀點(diǎn)可參考下列附圖以獲得更深入的了解,圖式中的組件并未限定其尺寸比例,僅用于清楚說明本發(fā)明的原則,各圖中相似的標(biāo)號代表相對應(yīng)的部分。圖1是圖形處理器系統(tǒng)實(shí)施例的方塊圖,其中可施行多種譯碼系統(tǒng)(及方法)實(shí)施例。圖2例示處理環(huán)境的方塊圖,其中可施行多種譯碼系統(tǒng)實(shí)施例。圖3是圖2例示處理環(huán)境內(nèi)的選擇組件方塊圖。圖4是圖2與圖3例示處理環(huán)境內(nèi)的計算核心方塊圖,其中可施行多種譯碼系統(tǒng)實(shí)施例。圖5A是圖4計算核心內(nèi)的執(zhí)行單元的選擇組件方塊圖,其中可施行多種譯碼系統(tǒng)實(shí)施例。圖5B是執(zhí)行單元數(shù)據(jù)路徑的方塊圖,其中可施行多種譯碼系統(tǒng)實(shí)施例。圖6A是圖5所示譯碼系統(tǒng)實(shí)施例的方塊圖。圖6B是圖6A譯碼系統(tǒng)的方塊圖。圖6C是圖6A譯碼系統(tǒng)的位流緩沖器實(shí)施例的方塊圖。圖6D是圖6A譯碼系統(tǒng)的內(nèi)容存儲器結(jié)構(gòu)配合相關(guān)寄存器實(shí)施例的方塊圖。圖6E是應(yīng)用圖6A譯碼系統(tǒng)的宏塊分割方式實(shí)施例的方塊圖。圖6F是利用圖6A譯碼系統(tǒng)完成的例示宏塊譯碼機(jī)制的方塊圖。具體實(shí)施例方式本發(fā)明揭示了多種內(nèi)容適應(yīng)性二進(jìn)制算術(shù)編碼(context-adaptivebinaryarithmeticcoding,CABAC)的譯碼系統(tǒng)及方法(之后將通稱為譯碼系統(tǒng)),于一實(shí)施例中,譯碼系統(tǒng)內(nèi)嵌于圖形處理單元(graphicsprocessingunit,GPU)的可編程、多線程、并行計算核心的一個或多個執(zhí)行單元中,利用軟件結(jié)合硬件的方式來實(shí)現(xiàn)譯碼功能,亦即視訊譯碼是以圖形處理單元編程(programming)的內(nèi)容(context)配合施行于圖形處理單元數(shù)據(jù)路徑內(nèi)的硬件所完成,舉個例子,譯碼運(yùn)算或方法是由具有擴(kuò)充指令集(extendedinstructionset)的著色器(shader,如頂點(diǎn)著色器)、圖形處理單元的執(zhí)行單元數(shù)據(jù)路徑、以及用于CABAC處理環(huán)境中的自動管理位流緩沖器及內(nèi)容模型分析(contextmodeling)的附加硬件所共同完成,不像已知的舊有系統(tǒng),僅具有單純硬件或單純軟件的CABAC處理方法,因此或多或少會遇到于現(xiàn)有技術(shù)中所提到的問題。另外,自動位流緩沖器具備一些優(yōu)點(diǎn),例如,一旦位流緩沖器的直接存儲器存取(directmemoryaccess,DMA)引擎得知位流的位置(地址),便會自動管理位流而不需要進(jìn)一步的指令,這樣的機(jī)制就跟傳統(tǒng)的微處理器或數(shù)字信號處理器(digitalsignalprocessor,DSP)不同,一提到位流管理就代表了大量之間接費(fèi)用,再則,通過記錄已使用的位數(shù)量,位流緩沖器機(jī)制可以檢測和處理錯誤的位流。本發(fā)明譯碼系統(tǒng)的另一個優(yōu)點(diǎn)是可以減少指令延遲(latency),因?yàn)镃ABAC譯碼是非常連續(xù)的動作,不易利用多線程,因此在各種實(shí)施例中就會使用一種轉(zhuǎn)遞機(jī)制來減少等待延遲,例如寄存器轉(zhuǎn)遞(registerforwarding),進(jìn)一步解釋,便是深管(deep-pipeline)及多線程處理器無法以同一線程在每一周期執(zhí)行指令,有些系統(tǒng)利用一般轉(zhuǎn)遞(generalforwarding),是藉由檢查前次產(chǎn)生的操作數(shù)(operand)地址以及指令操作數(shù)地址(如果相同,則使用前次產(chǎn)生操作數(shù)),此種一般轉(zhuǎn)遞需要復(fù)雜的比較及多任務(wù)動作。在某些譯碼系統(tǒng)實(shí)施例中,會使用不同的轉(zhuǎn)遞方式,不管是利用前次計算結(jié)果(如保留在內(nèi)部寄存器)還是來源操作數(shù)的數(shù)據(jù),均利用指令中的位(例如總共2位,每一操作數(shù)使用1位)來編碼,藉由這種方式,可以減少整體的延遲,改善處理器管線的效率。這里描述的譯碼系統(tǒng)可以利用已知的國際電信聯(lián)盟通訊標(biāo)準(zhǔn)部門(InternationalTelecommunicationUnionTelecommunicationStandardizationSector,ITU-T)H.264標(biāo)準(zhǔn),根據(jù)執(zhí)行從圖形處理單元畫面緩沖器存儲器或主處理器(如中央處理單元(centralprocessingunit,CPU))存儲器所接收到的一個或多個指令組(如藉由預(yù)加載(preload)等已知機(jī)制或是快取失敗等),多種譯碼系統(tǒng)實(shí)施例即可進(jìn)行運(yùn)算。圖1是圖形處理器系統(tǒng)100實(shí)施例的方塊圖,其中介紹了譯碼系統(tǒng)及方法,于某些實(shí)施方式中,圖形處理器系統(tǒng)100可為計算機(jī)系統(tǒng),其中,圖形處理器系統(tǒng)100可包含由顯示接口單元(displayinterfaceunit,DIU)104驅(qū)動的顯示裝置102以及區(qū)域存儲器106(可包含顯示緩沖器、畫面緩沖器、紋理緩沖器、命令緩沖器等等),區(qū)域存儲器106可以畫面緩沖器或儲存單元取代,區(qū)域存儲器106通過一個或多個存儲器接口單元(memoryinterfaceunit,MIU)110連接至圖形處理單元(graphicsprocessingunit,GPU)114,于一實(shí)施例中,存儲器接口單元110、圖形處理單元114、顯示接口單元104三者連接至高速外圍組件互連(peripheralcomponentinterconnectexpress,PCI-E)兼容的總線接口單元(businterfaceunit,BIU)118,于一實(shí)施例中,總線接口單元118可以使用圖形地址重繪表(graphicsaddressremappingtable,GART),當(dāng)然也可使用其它存儲器繪圖機(jī)制,圖形處理單元114包含譯碼系統(tǒng)200,稍后會針對此部分作進(jìn)一步的說明,雖然于某些實(shí)施例中將圖形處理單元元114內(nèi)的譯碼系統(tǒng)200畫成一個組件,但是譯碼系統(tǒng)200其實(shí)可以包含更多圖形處理器系統(tǒng)100的繪示或未繪示組件??偩€接口單元118連接至芯片組122(如北橋芯片組)或開關(guān),芯片組122包含接口電路(interfaceelectronics),以增強(qiáng)從中央處理單元(centralprocessingunit,CPU)126(又稱主處理器)接收到的訊號,并分離從系統(tǒng)存儲器124進(jìn)出的信號與從輸出入(I/O)裝置進(jìn)出的訊號,雖然這里提到PCI-E總線協(xié)議,不過也可使用其它的連接和/或通訊方式來溝通主處理器與圖形處理單元114(如PCI、專用高速總線等),系統(tǒng)存儲器124還包含驅(qū)動軟件128,可利用中央處理單元126將指令組或命令傳送給圖形處理單元114內(nèi)的寄存器。在某些實(shí)施例中可再另外配置圖形處理單元,利用PCI-E總線協(xié)議或其它通訊協(xié)議經(jīng)由芯片組122連接至圖1的其它組件,于一實(shí)施例中,圖形處理單元100可以包含圖1的所有組件,當(dāng)然亦可剔除、新增或改變某些組件,例如,可另外增加連接至芯片組122的南橋芯片組。請參閱圖2,其為例示處理環(huán)境的方塊圖,其中應(yīng)用一譯碼系統(tǒng)200,圖形處理單元114包含一圖形處理器202,圖形處理器202則包含多個執(zhí)行單元(executionuit,EU)和計算核心204,于一實(shí)施例中,計算核心204包含內(nèi)嵌于執(zhí)行單元數(shù)據(jù)路徑(executionunitdatapath,EUDP)的譯碼系統(tǒng)200,該數(shù)據(jù)路徑分配至一個或多個執(zhí)行單元,圖形處理器202還包含執(zhí)行單元集合(executionunitpool,EUP)控制及頂點(diǎn)/串流閃存單元206(以后稱為EUP控制單元206)以及具有固定功能邏輯(例如,包含三角形設(shè)定單元(triangleset-upunit,TSU)、柵格-圖塊產(chǎn)生器(span-tilegenerator,STG)等)的繪圖管線208,計算核心204包含聯(lián)合的多個執(zhí)行單元,以符合不同著色器程序的著色器任務(wù)的計算要求,所述著色器程序可包含頂點(diǎn)著色器、幾何著色器、和/或像素著色器,使繪圖管線208能處理數(shù)據(jù),計算核心204的著色器能進(jìn)行譯碼系統(tǒng)200的大部分功能,下面將詳細(xì)說明圖形處理器的實(shí)施例,接著說明譯碼系統(tǒng)200的細(xì)節(jié)。譯碼系統(tǒng)可以硬件、軟件、固件或其組合等方式實(shí)施,于較佳實(shí)施例中,譯碼系統(tǒng)200可包含硬件或軟件,利用下列已知技術(shù)或其組合,例如具有邏輯門而可對數(shù)據(jù)信號進(jìn)行邏輯功能的離散邏輯電路、具有適當(dāng)組合邏輯門的特殊應(yīng)用集成電路(applicationspecificintegratedcircuit,ASIC)、可編程門陣列(programmablegatearray,PGA)、現(xiàn)場可編程門陣列(fieldprogrammablegatearray,F(xiàn)PGA)等等組件。請參考圖3及圖4,其為圖形處理器202實(shí)施例選擇組件的方塊圖,如前所述,譯碼系統(tǒng)200可以是圖形處理器202內(nèi)的著色器,另外加上擴(kuò)充指令組及其它硬件組件,以下將說明圖形處理器202及對應(yīng)程序的實(shí)施例,雖然圖3與圖4并未繪出圖形處理所用到的全部組件,但是已足以令本領(lǐng)域技術(shù)人員明了相關(guān)圖形處理器的功能及架構(gòu)。請參閱圖3,可編程處理環(huán)境的中心為計算核心204,其包含譯碼系統(tǒng)200,并可處理各種指令,計算核心204可以執(zhí)行或映像多種著色器程序,如頂點(diǎn)、幾何、像素著色器程序等,多線程處理器的計算核心204可以在單一頻率周期內(nèi)處理多個指令。于圖3中,圖形處理器202的相關(guān)組件包含計算核心204、紋理過濾單元302、像素打包組件304、命令流處理器306、寫回單元308、以及紋理地址產(chǎn)生器310,圖3中的EUP控制單元206也包含頂點(diǎn)閃存和/或串流閃存,另外,圖3的紋理過濾單元302提供紋素(texel)數(shù)據(jù)給計算核心204(輸入A及B),于某些實(shí)施例中,紋素數(shù)據(jù)為512位數(shù)據(jù)。像素打包組件304提供像素器著色輸入(PS輸入,輸入C和D)給計算核心204,輸入同樣是512位數(shù)據(jù)格式,另外,像素打包組件304向EUP控制單元206請求像素著色器任務(wù),而EUP控制單元206便會提供指定執(zhí)行單元號碼(EU#)及線程號碼(THREAD#)給像素打包組件304,因?yàn)橄袼卮虬M件304及紋理過濾單元302是已知的技術(shù),這里便不再贅述,雖然圖3顯示像素及紋素分組為512位的數(shù)據(jù)分組,但是可依各實(shí)施例根據(jù)圖形處理器202所需的效能改變其大小。命令流處理器306提供三角形頂點(diǎn)索引給EUP控制單元206,于圖3的實(shí)施例中,索引為256位的數(shù)據(jù),EUP控制單元206組合從串流閃存接收到的頂點(diǎn)著色器輸入,并將這些數(shù)據(jù)送至計算核心204(輸入E);EUP控制單元206亦組合幾何著色器輸入,并將這些數(shù)據(jù)送至計算核心204(輸入F);EUP控制單元206另外控制執(zhí)行單元輸入(EU輸入)402及執(zhí)行單元輸出(EU輸出)404(圖4),換句話說,EUP控制單元206控制計算核心204的各輸入流與輸出流。經(jīng)過處理之后,計算核心204提供像素著色器輸出(PS輸出,輸出J1與J2)給寫回單元308,像素著色器輸出包括色彩信息,例如紅/綠/藍(lán)/透明度(RGBA)信息,關(guān)于實(shí)施例中的數(shù)據(jù)結(jié)構(gòu),像素著色器輸出可以是兩條512位的數(shù)據(jù)流,其它實(shí)施例亦可使用其它的位寬度。除了像素著色器輸出,計算核心204亦會輸出紋理坐標(biāo)(TC,輸出K1及K2)給紋理地址產(chǎn)生器310,其中包括UVRQ信息,紋理地址產(chǎn)生器310向計算核心204的L2閃存408發(fā)出紋理描述符號請求(T#請求,輸入X),然后計算核心204的L2閃存408會輸出紋理描述符號數(shù)據(jù)(T#數(shù)據(jù),輸出W)給紋理地址產(chǎn)生器310,因?yàn)榧y理地址產(chǎn)生器310及寫回單元308是已知的技術(shù),因此這里不再贅述,再則,雖然畫中顯示URVQ及RGBA是512位的數(shù)據(jù),但是此參數(shù)亦可隨不同實(shí)施例而做變化,于圖3的實(shí)施例中,總線分成兩條512位信道,同時傳輸4個像素的128位RGBA色彩值及128位UVRQ紋理坐標(biāo)。繪圖管線208包含固定功能的圖形處理功能,例如,因應(yīng)從驅(qū)動軟件發(fā)出的繪制一三角形的命令,頂點(diǎn)信息通過計算核心204內(nèi)的頂點(diǎn)著色器邏輯組件以進(jìn)行頂點(diǎn)轉(zhuǎn)換,對象將從對象空間種換成工作空間和/或屏幕空間的三角形,三角形通過計算核心204到達(dá)繪圖管線208的三角形設(shè)定單元,結(jié)合像素后進(jìn)行已知的任務(wù),例如產(chǎn)生邊界盒(boundingbox)、揀選(culling)、產(chǎn)生邊緣功能(edgefunctiongeneration)及三角形層級剔除(trianglelevelrejection)等,接著三角形設(shè)定單元再將數(shù)據(jù)傳遞至繪圖管線208中具有圖塊產(chǎn)生功能的柵格及圖塊產(chǎn)生單元,因此,數(shù)據(jù)對象被分割成圖塊(例如8×8、16×16等),并且傳遞至其它的固定功能單元,進(jìn)行深度(z-值)處理,例如z-值的高階(同樣的程序在高階時使用的位數(shù)比低階少)剔除,然后將z-值傳回計算核心204的像素著色器邏輯組件,以根據(jù)所得紋理及管線數(shù)據(jù)進(jìn)行像素著色器功能,計算核心204將已處理的值輸出至位于繪圖管線208內(nèi)的目標(biāo)單元,目標(biāo)單元在各閃存將更新內(nèi)部值之前進(jìn)行α測試及模板測試。請注意計算核心204的L2閃存408以及EUP控制單元206之間有512位的頂點(diǎn)閃存溢出(spill)數(shù)據(jù)的傳輸(輸入G),另外,計算核心204輸出兩個512位頂點(diǎn)閃存(VC)寫入數(shù)據(jù)(輸出M1及M2)給EUP控制單元206做進(jìn)一步的處理。請參閱圖4,其顯示計算核心204的其它組件及相關(guān)組件,計算核心204包含具有一個或多個執(zhí)行單元420a-420h(以后通稱執(zhí)行單元420)的執(zhí)行單元集合(EUP)412,每一個執(zhí)行單元420可以在一個頻率周期內(nèi)處理多個指令,因此,執(zhí)行單元集合412在尖峰時可以同時或幾乎同時處理多個線程,盡管圖4僅繪出8個執(zhí)行單元(EU0-EU7),但是并不表示限制其數(shù)量為8,于其它實(shí)施例可以增加或減少數(shù)量,其中至少一個執(zhí)行單元(例如EU0420a)具有一譯碼系統(tǒng)200,詳細(xì)說明如下。計算核心204亦包含存儲器存取單元(memoryaccessunit,MXU)406,存儲器存取單元406藉由存儲器接口仲裁器410與L2閃存408連接,L2閃存408從EUP控制單元206接收頂點(diǎn)閃存溢出數(shù)據(jù)(輸入G),并提供頂點(diǎn)閃存溢出數(shù)據(jù)(輸出H)給EUP控制單元206,另外,L2閃存408從紋理地址產(chǎn)生器310接收紋理描述符號請求(T#請求,輸入X),并因應(yīng)接收到的該請求,提供紋理描述符號數(shù)據(jù)(T#數(shù)據(jù),輸出W)給紋理地址產(chǎn)生器310。存儲器接口仲裁器410提供了區(qū)域視訊存儲器(如畫面緩沖器或區(qū)域存儲器106)的控制接口,總線接口單元118則提供了系統(tǒng)的接口,其可為PCI-E總線,存儲器接口仲裁器410和總線接口單元118作為存儲器及L2閃存408之間的接口,于某些實(shí)施例中,L2閃存408藉由存儲器存取單元406與存儲器接口仲裁器410以及總線接口單元118連接,存儲器存取單元406會把從L2閃存408及其它區(qū)塊得到的虛擬存儲器地址轉(zhuǎn)換成實(shí)際存儲器地址。存儲器接口仲裁器410提供L2閃存的存儲器存取(如讀/寫存取),可提取指令/常數(shù)/數(shù)據(jù)/紋理、直接存儲器存取(如加載/儲存)、索引暫存存取、寄存器溢出、頂點(diǎn)快取記體內(nèi)容溢出等等。計算核心204還包含執(zhí)行單元輸入(EU輸入)402和執(zhí)行單元輸出(EU輸出)404,分別用于提供執(zhí)行單元集合412的輸入以及接收執(zhí)行單元集合412的輸出,執(zhí)行單元輸入402和執(zhí)行單元輸出404可以是交換開關(guān)(crossbar)或總線,或是其它已知的輸入及輸出機(jī)制。執(zhí)行單元輸入402從EUP控制單元206接收頂點(diǎn)著色器輸入(輸入E)以及幾何著色器輸入(輸入F),然后將信息提供給執(zhí)行單元集合412,讓各執(zhí)行單元420去處理;另外,執(zhí)行單元輸入402接收像素著色器輸入(輸入C及D)及紋素分組(輸入A及B),并將這些分組傳送至執(zhí)行單元集合412,讓各執(zhí)行單元420去處理;再者,執(zhí)行單元輸入402從L2閃存408接收信息(L2讀取),然后在必要時將這些信息提供給執(zhí)行單元集合412。圖4實(shí)施例的執(zhí)行單元輸出404分成偶輸出404a和奇輸出404b,執(zhí)行單元輸出404和執(zhí)行單元輸入402一樣可為交換開關(guān)或總線,或是其它已知的架構(gòu),執(zhí)行單元偶輸出404a處理偶執(zhí)行單元420a、420c、420e、420g的輸出,而執(zhí)行單元奇輸出404b處理奇執(zhí)行單元420b、420d、420f、420h的輸出,總而言之,兩個執(zhí)行單元輸出404a和404b共同接收執(zhí)行單元集合412的輸出,如UVRQ及RGBA數(shù)據(jù),這些輸出可傳回L2閃存408,或是從計算核心204經(jīng)由J1及J2輸出至寫回單元308,或是經(jīng)由K1及K2輸出至紋理地址產(chǎn)生器310。執(zhí)行單元集合412的執(zhí)行單元流通常包含數(shù)個層級,如描繪內(nèi)容層級、線程或任務(wù)層級、指令或執(zhí)行層級,在任一時間點(diǎn),每一執(zhí)行單元420可能準(zhǔn)許兩個描繪內(nèi)容,其中利用一位標(biāo)志或其它機(jī)制識別其描繪內(nèi)容,在屬于這個內(nèi)容的任務(wù)開始之前,從EUP控制單元206輸出內(nèi)容信息,內(nèi)容層級信息可為著色器種類、輸入/輸出寄存器數(shù)量、指令起始地址、輸出對映表、頂點(diǎn)識別符、各常數(shù)緩沖器內(nèi)的常數(shù),執(zhí)行單元集合412內(nèi)的每一個執(zhí)行單元420可以同時儲存多個任務(wù)或線程(例如32個線程),于一實(shí)施例中,每一線程根據(jù)程序計數(shù)器提取一指令。EUP控制單元206類似總?cè)蝿?wù)排程,利用數(shù)據(jù)驅(qū)動(data-driven)方法(如輸入訊號內(nèi)的頂點(diǎn)、像素、幾何分組)指派執(zhí)行單元420內(nèi)的適當(dāng)線程,舉例來說,EUP控制單元206指派一個線程給執(zhí)行單元集合412的執(zhí)行單元420內(nèi)的一個空線程位置,當(dāng)一線程已開始執(zhí)行,頂點(diǎn)閃存或其它組件或模塊(根據(jù)著色器種類)所輸入的數(shù)據(jù)會放置在共享暫存緩沖器中。通常圖形處理器202使用可編程頂點(diǎn)、幾何、及像素緩沖器,不再把這些組件當(dāng)成具有不同設(shè)計及指令組的各別固定功能單元而各別執(zhí)行或操作這些組件,而是取代成以聯(lián)合的執(zhí)行單元420a、420b...420n配合統(tǒng)一指令組執(zhí)行,除了執(zhí)行單元420a(這個執(zhí)行單元包含譯碼系統(tǒng)200,因此具有額外的功能)之外,每一個用于程序運(yùn)算的執(zhí)行單元420的設(shè)計與結(jié)構(gòu)均相同,于一實(shí)施例中,每一個執(zhí)行單元420可以進(jìn)行多線程運(yùn)算,當(dāng)頂點(diǎn)著色器、幾何著色器、像素著色器等產(chǎn)生不同的著色器任務(wù),這些著色器任務(wù)將送至個別的執(zhí)行單元420去執(zhí)行,于一實(shí)施例中,譯碼系統(tǒng)200可使用一頂點(diǎn)著色器,與其它執(zhí)行單元420有些不同,例如,執(zhí)行單元420a使用一譯碼系統(tǒng)200,這是其它執(zhí)行單元(如圖4的420b)所沒有的,因?yàn)樽g碼系統(tǒng)200管理一個或多個對應(yīng)的內(nèi)部緩沖器,譯碼系統(tǒng)200藉由接線413及執(zhí)行單元輸入402自存儲器存取單元406取得數(shù)據(jù)。當(dāng)生成了個別的任務(wù),EUP控制單元206會指派這些任務(wù)給不同執(zhí)行單元420的可用線程,當(dāng)完成任務(wù),EUP控制單元206再管理相關(guān)線程的釋放,就這一點(diǎn)而言,EUP控制單元206負(fù)責(zé)指派頂點(diǎn)著色器、幾何著色器及像素著色器的任務(wù)給執(zhí)行單元420的線程,然后記錄相關(guān)的任務(wù)及線程,具體來說,EUP控制單元206會有所有執(zhí)行單元420的線程及存儲器的資源表(這里不多做說明),EUP控制單元206會知道哪一個線程指派給哪一個任務(wù)使用、知道哪一個線程的任務(wù)結(jié)束要釋放、知道占用多少的共享寄存器文檔存儲器寄存器(registerfilememoryregister)、知道每一個執(zhí)行單元有多少可用空間。因此,如果已將一個任務(wù)指派給一個執(zhí)行單元,如420a,EUP控制單元206會將這個線程標(biāo)示為忙碌中,然后將全部的共享寄存器文檔存儲器減去每一個線程用掉的寄存器文檔機(jī)體(footpring)數(shù)量,機(jī)體是根據(jù)頂點(diǎn)著色器、幾何著色器及像素著色器的狀態(tài)而定,另外,每一個著色器階段可以有不同的機(jī)體大小,例如,頂點(diǎn)著色器線程可以要求10個共享寄存器文檔寄存器,而像素著色器線程可以僅要求5個寄存器。當(dāng)一線程完成其被指派的工作,運(yùn)行該線程的執(zhí)行單元420便會發(fā)出一訊號給EUP控制單元206,EUP控制單元206便會更新資源表,標(biāo)注該線程未使用,并將線程共享寄存器文檔空間的數(shù)量加回可用空間,當(dāng)所有的線程都處于忙碌中或所有的共享寄存器文檔存儲器都已分配完(或是保留的寄存器空間太小,無法容納額外的線程),則該執(zhí)行單元420算是已滿,EUP控制單元206不會再指派新的線程給該執(zhí)行單元。每一個執(zhí)行單元420內(nèi)部亦有一個線程控制器,可以管理或標(biāo)注每一個線程是在使用中(或執(zhí)行中)或是可用的,就這一點(diǎn)而言,于一實(shí)施例中,當(dāng)頂點(diǎn)著色器正執(zhí)行譯碼系統(tǒng)200的功能時,EUP控制單元206可以防止幾何著色器與像素著色器在此同時運(yùn)行。圖5A說明具有前述圖形處理器202及計算核心204特征的執(zhí)行單元420a,其包含內(nèi)嵌有譯碼系統(tǒng)200的執(zhí)行單元數(shù)據(jù)路徑512,具體來說,圖5A是一執(zhí)行單元420a的方塊圖,于一實(shí)施例中,其包含指令閃存控制器504、與指令閃存控制器504連接的線程控制器506、緩沖器508、共享寄存器文檔(commonregisterfile,CRF)510、與線程控制器506及緩沖器508及共享寄存器文檔510連接的執(zhí)行單元數(shù)據(jù)路徑(EUdatapath,EUDP)512、執(zhí)行單元數(shù)據(jù)路徑先進(jìn)先出緩沖器(firstinfirstout,F(xiàn)IFO)514、述部寄存器文檔(predicateregisterfile,PRF)516、純量寄存器文檔(scalarregisterfile,SRF)518、數(shù)據(jù)輸出控制器520以及線程任務(wù)接口524,如前所述,執(zhí)行單元420從執(zhí)行單元輸入402接收輸入,然后提供輸出給執(zhí)行單元輸出404。線程控制器506提供整個執(zhí)行單元420a的控制功能,包括管理每一個線程及判斷功能,例如決定如何執(zhí)行其線程,EUDP512包含譯碼系統(tǒng)200,可進(jìn)行各種的計算,包含像是浮點(diǎn)運(yùn)算計算邏輯單元(arithmeticlogicunit,ALU)、移位邏輯功能等邏輯電路。數(shù)據(jù)輸出控制器520可將完成的數(shù)據(jù)移至某些與執(zhí)行單元輸出404連接的組件,例如EUP控制單元206的頂點(diǎn)閃存、寫回單元308等等,EUSP512傳送「任務(wù)結(jié)束」的信息給數(shù)據(jù)輸出控制器520,告知任務(wù)已完成,數(shù)據(jù)輸出控制器520包含儲存部分,以儲存完成的任務(wù)(如32個項(xiàng)目(entry)),另包含多個寫入端口,數(shù)據(jù)輸出控制器520從儲存部分選擇任務(wù),接著根據(jù)著色器描繪內(nèi)容所指定的寄存器位置,從共享寄存器文檔510讀出所有的輸出數(shù)據(jù)項(xiàng),然后將數(shù)據(jù)送至執(zhí)行單元輸出404。線程任務(wù)接口524輸出執(zhí)行單元420a完成的任務(wù)識別符給EUP控制單元206,任務(wù)識別符會通知EUP控制單元206有一特定執(zhí)行單元內(nèi)有線程資源,可指派新的任務(wù)給該執(zhí)行單元(如420a)。于一實(shí)施例中,緩沖器508(如常數(shù)緩沖器)可以分成16個區(qū)塊,每一個區(qū)塊有16個128位水平向量常數(shù)的位置,著色器使用一操作數(shù)與一索引存取一常數(shù)緩沖器位置,其中,索引可以是包含32位或接近32位不具正負(fù)號的整數(shù)常數(shù)的寄存器。指令閃存控制器504是線程控制器506的接口方塊,如果有線程控制器讀取請求(如從指令存儲器提取可執(zhí)行著色器碼),指令閃存控制器504會查找標(biāo)簽表(未繪出),進(jìn)行擊中/不中(hit/miss)測試,舉個例子,如果請求的指令位于指令閃存控制器504的閃存中則表示擊中,如果所欲請求的指令將從L2閃存408或存儲器106提取則表示不中,如果擊中,而同時沒有從執(zhí)行單元輸入402發(fā)出的請求,則指令閃存控制器504即可同意請求,這是因?yàn)橹噶铋W存控制器504的指令閃存只有一個讀寫端口,而執(zhí)行單元輸入402具有最高的優(yōu)先權(quán);相反地,如果不中,而L2閃存408內(nèi)有可取代的區(qū)塊并有空間存在EUDPFIFO514,則指令閃存控制器504可同意請求。于一實(shí)施例中,指令閃存控制器504的閃存包含32組,每一組有4個區(qū)塊,每一個區(qū)塊帶有2位狀態(tài)訊號,可代表三種狀態(tài),分別是無效、加載、或有效狀態(tài),在區(qū)塊加載L2數(shù)據(jù)之前,區(qū)塊是「無效」?fàn)顟B(tài),當(dāng)?shù)群騆2數(shù)據(jù)時,是「加載」?fàn)顟B(tài),當(dāng)完全加載L2數(shù)據(jù)時,則成為「有效」?fàn)顟B(tài)。通過EUDP路徑512可對述部寄存器文檔516進(jìn)行讀寫,執(zhí)行單元輸入402作為進(jìn)入數(shù)據(jù)與執(zhí)行單元420a的接口,于一實(shí)施例中,執(zhí)行單元輸入402包含一8項(xiàng)目先進(jìn)先出緩沖器以緩沖進(jìn)入數(shù)據(jù),執(zhí)行單元輸入402亦可將數(shù)據(jù)送至指令閃存控制器504的指令閃存及常數(shù)緩沖器508,執(zhí)行單元輸入402也可保留著色器內(nèi)容。執(zhí)行單元輸出404作為將輸出數(shù)據(jù)從執(zhí)行單元420a送至EUP控制單元206、L2閃存408、及寫回單元308的接口,于一實(shí)施例中,執(zhí)行單元輸出404包含一4項(xiàng)目先進(jìn)先出緩沖器,用以接收仲裁請求,并緩沖輸出至EUP控制單元206的數(shù)據(jù),執(zhí)行單元輸出404包含多種功能,可以仲裁指令閃存讀取請求、數(shù)據(jù)輸出寫入請求、EUDP讀/寫請求。共享寄存器文檔510用于儲存輸入、輸出、以及暫存數(shù)據(jù),于一實(shí)施例中,共享寄存器文檔510包含8存儲頁(bank)的128×128位寄存器文檔及一讀一寫和一讀寫端口,一讀一寫端口供EUDP512使用,用于指令執(zhí)行啟動的讀寫存取,偶線程共享存儲頁0、2、4、6,奇線程則共享存儲頁1、3、5、7,線程控制器506配對不同線程的指令,并確認(rèn)共享寄存器文檔的存儲器沒有讀或?qū)懘鎯摏_突。讀寫端口則供執(zhí)行單元輸入402及數(shù)據(jù)輸出控制器520使用,以加載初始線程輸入數(shù)據(jù)以及將最終線程輸出寫至EUP控制單元數(shù)據(jù)緩沖器及L2閃存408或其它模塊,執(zhí)行單元輸入402及執(zhí)行單元輸出404共享一讀寫I/O端口,于一實(shí)施例中,寫入比讀出具有更高的優(yōu)先權(quán),512位輸入數(shù)據(jù)進(jìn)入4個不同的存儲頁,以避免將數(shù)據(jù)加載共享寄存器文檔510時發(fā)生沖突,2位信道索引、數(shù)據(jù)與512位對齊基準(zhǔn)地址(alignedbaseaddress)一起通過以指定輸入數(shù)據(jù)的開始存儲頁,舉個例子,如果開始信道索引為1,則存儲頁1加載從最低有效位(leastsignificantbit,LSB)起算的第一個128位,下一個128位則加載存儲頁2,以此類推,假設(shè)線程基準(zhǔn)存儲頁補(bǔ)償為0,最后一個128位則加載存儲頁0,請注意線程ID的兩個最低有效位用于產(chǎn)生一存儲頁補(bǔ)償,以隨機(jī)排列每一個線程的開始存儲頁位置。CRF寄存器索引及線程ID可用于建立一獨(dú)一無二的邏輯地址,以卷標(biāo)配對(tagmatching)共享寄存器文檔510的讀寫數(shù)據(jù),舉個例子,地址可以排成128位,就跟共享寄存器文檔存儲頁的寬度一樣,藉由結(jié)合8位的CRF寄存器索引以及5位的線程ID,可以建立獨(dú)一無二的13位地址,每一個1024位行有一個卷標(biāo),每一行則有兩個512位項(xiàng)目(字符),每一字符儲存于4個存儲頁中,并將CRF索引的兩個最低有效位加入目前線程的存儲頁補(bǔ)償,以建立存儲頁選擇。標(biāo)簽配對方法可讓不同線程的寄存器共享共享寄存器文檔510,有效利用存儲器,EUP控制單元206記錄共享寄存器文檔510的存儲器使用程度,確保排程執(zhí)行單元420a的新任務(wù)時有足夠的空間。檢查目前線程的目標(biāo)CRF索引占全部CRF寄存器的大小,在線程控制器506著手進(jìn)行線程及著色器執(zhí)行之前,輸入數(shù)據(jù)就應(yīng)該存放于共享寄存器文檔510中,當(dāng)線程執(zhí)行結(jié)束,數(shù)據(jù)輸出控制器520從共享寄存器文檔510讀取輸出數(shù)據(jù)。前述執(zhí)行單元420的實(shí)施例具有內(nèi)含譯碼系統(tǒng)200的EUDP512,圖5B說明一EUDP512的實(shí)施例,EUDP512包含寄存器文檔526、復(fù)用器528、向量浮點(diǎn)(FP)單元532、向量整數(shù)算術(shù)邏輯(ALU)單元534、特殊目的單元536、復(fù)用器538、寄存器文檔540、以及譯碼系統(tǒng)200,譯碼系統(tǒng)200包含一個或多個CABAC單元530,可以譯碼一個或多個串流,舉個例子,單一CABAC單元530可以譯碼單一串流,兩個CABAC單元530(如虛線所示,但為簡潔的故未繪出其連接關(guān)系)可以同時解碼兩個串流等等,為了清楚說明,之后的敘述僅針對使用單一CABAC單元530的譯碼系統(tǒng)200的操作,其原則可推衍至超過一個CABAC單元。如圖所示,EUDP512包含對應(yīng)于CABAC譯碼單元530、向量浮點(diǎn)單元532、向量ALU單元534、特殊目的單元536的一些平行數(shù)據(jù)路徑,每一個單元均可根據(jù)接收到的指令執(zhí)行對應(yīng)的運(yùn)算,寄存器文檔526接收操作數(shù)(標(biāo)示為SRC1及SRC2),于一實(shí)施例中,寄存器文檔526可為圖5A所示的共享寄存器文檔510、述部寄存器文檔516、和/或純量寄存器文檔518,請注意于某些實(shí)施例中,亦可使用更多的操作數(shù)運(yùn)算(功能)訊號線542提供各單元530-536接收運(yùn)算訊號的手段,目前訊號線544連接至復(fù)用器528,可傳送編碼成指令的當(dāng)前值,供每一個單元530-536進(jìn)行小整數(shù)值的整數(shù)運(yùn)算,指令譯碼器(未繪出)提供操作數(shù)、運(yùn)算(功能)訊號、以及目前訊號,數(shù)據(jù)路徑(可以包含寫回階段)末端的復(fù)用器538選擇正確路徑的輸出結(jié)果,送至寄存器文檔540,輸出寄存器文檔540包含一目標(biāo)組件,可以是寄存器文檔526或其它寄存器,請注意,于一實(shí)施例中,當(dāng)來源及目標(biāo)寄存器包含相同組件,指令的位具有來源及目標(biāo)組件選擇,供復(fù)用器處理來自/送至適當(dāng)寄存器文檔的數(shù)據(jù)。因此,執(zhí)行單元420a可以視為一多階管線(如4階管線,具有4個算術(shù)邏輯單元),CABAC譯碼運(yùn)算于4個執(zhí)行時相中發(fā)生,需要延遲好讓CABAC譯碼線程動作,舉個例子,當(dāng)位流緩沖器發(fā)生向下溢位(underflow)、等候初始話內(nèi)容存儲器、等候?qū)⑽涣骷虞dFIFO緩沖器及sREG寄存器(稍后解釋)、和/或處理時間已超過預(yù)定閾值時間等,可以在執(zhí)行階段加入延遲。如前所述,與某些實(shí)施例中,譯碼系統(tǒng)200利用單一執(zhí)行單元420a同時譯碼兩個位流,舉個例子,根據(jù)一個擴(kuò)充指令組,譯碼系統(tǒng)可以使用兩個數(shù)據(jù)路徑(如新增另一CABAC單元530)同時進(jìn)行兩個串流的譯碼,當(dāng)然也可譯碼較多或較少的串流(那么就會使用較多或較少的數(shù)據(jù)路徑),當(dāng)牽涉到多個串流,某些譯碼系統(tǒng)200并不限制同時解碼,另外,在某些實(shí)施例中,單一CABAC單元530可以執(zhí)行多重同時串流譯碼。于一實(shí)施例中,當(dāng)譯碼系統(tǒng)200使用兩個數(shù)據(jù)路徑、兩個線程便可以同時運(yùn)行,舉個例子,在兩串流譯碼實(shí)施例中,限制線程的數(shù)量為兩個,第一線程(如線程0)指派給譯碼系統(tǒng)200的第一存儲頁(即CABAC單元530),第二線程(如線程1)則指派給譯碼系統(tǒng)200的第二存儲頁(即圖5B的虛線CABAC單元),于某些實(shí)施例中,可以由兩個或多個線程運(yùn)行單一存儲頁,另外,雖然此處顯示譯碼系統(tǒng)200是內(nèi)嵌于EUDP512,亦可包含其它的組件,像是EUP控制單元206內(nèi)的邏輯電路?,F(xiàn)已說明執(zhí)行單元420a、EUDP512、以及CABAC單元530的某些實(shí)施例,下面簡單解釋CABAC譯碼,然后說明譯碼系統(tǒng)200的一些實(shí)施例,通常H.264CABAC譯碼程序可以包括解析第一語法成分的編碼位流、初始化第一語法成分的內(nèi)容變量及譯碼引擎、以及二進(jìn)制化(binarization),然后,針對每一個二進(jìn)制譯碼,程序還包括獲得一內(nèi)容模型(contentcodel)以及二進(jìn)制譯碼各語法成分,直到獲得有意義的字碼(codeword)配對,更進(jìn)一步解釋,譯碼系統(tǒng)200譯碼語法成分,而每一語法成分可以代表量子化系數(shù)、動作向量、和/或預(yù)測模式、或其它有關(guān)宏塊(macroblock)的參數(shù),用以表示影像或視訊的特殊圖場(field)或幀(frame),每一個語法成分可以包含一系列的二進(jìn)制符號或二進(jìn)制值,而每一個二進(jìn)制符號會被譯碼成0或1值,譯碼系統(tǒng)200根據(jù)輸入二進(jìn)制符號的發(fā)生機(jī)率控制輸出位長度。已知當(dāng)某些符號(稱為主要符號)比其它符號更容易發(fā)生時,CABAC編碼器可提供高效率編碼方法,這些主要符號可以較小位/符號比進(jìn)行編碼,編碼器持續(xù)更新進(jìn)入數(shù)據(jù)的頻率統(tǒng)計數(shù)據(jù),適當(dāng)?shù)卣{(diào)整編碼演算的計算及內(nèi)容模型,具有較高可能性的二進(jìn)制符號稱為高可能符號(mostprobablesymbol,MPS),而其它符號則為低可能符號(leastprobablesymbol,LPS),二進(jìn)制符號與其內(nèi)容模型連結(jié),每一內(nèi)容模型對應(yīng)于LPS機(jī)率以及一MPS值。為了決定每一個二進(jìn)制符號,譯碼系統(tǒng)200自行決定或接收一對應(yīng)范圍、補(bǔ)償及內(nèi)容模型,內(nèi)容模型是根據(jù)符號種類和相鄰圖塊(如目前宏塊或?qū)儆谇按谓獯a的相鄰宏塊)決定的內(nèi)容而從多個可能的環(huán)境模型中選擇,內(nèi)容辨識符(contextidentifier)可經(jīng)由內(nèi)容模型決定,從而得到MPS值以及用于譯碼程序的譯碼引擎的目前狀態(tài),范圍則表示一個區(qū)間,每經(jīng)過一次二進(jìn)制譯碼就會縮小一次范圍。區(qū)間分為兩個子范圍,分別對應(yīng)MPS值和LPS機(jī)率,將范圍及已知內(nèi)容模型所指定的LPS機(jī)率相乘可得LPS子范圍,將范圍減去LPS子范圍則可得MPS子范圍,補(bǔ)償則是決定譯碼二進(jìn)制值的標(biāo)準(zhǔn),通常是從編碼位流中取出前9位進(jìn)行初始化,對于一已知的二進(jìn)制符號譯碼及內(nèi)容模型,如果補(bǔ)償小于MPS子范圍,則二進(jìn)制值為MPS值,下一次譯碼所使用的范圍便為MPS子范圍,相反地,二進(jìn)制值則為LPS,將MPS值的反值放在相關(guān)的內(nèi)容模型中,同時下一個范圍便設(shè)為LPS子范圍,譯碼程序的結(jié)果為一連串的二進(jìn)制值,將用于判斷此串值是否符合有意義的字碼。概要說明譯碼系統(tǒng)200的運(yùn)算與CABAC解碼的關(guān)系,下列敘述提出于CABAC譯碼程序的內(nèi)容中的譯碼系統(tǒng)200的各種組件,可將符合實(shí)際應(yīng)用的各種變形列入考慮,本領(lǐng)域技術(shù)人員可知下列所使用的許多術(shù)語是出自H.264規(guī)格,為了簡潔的故不再贅述,除非是有助于了解所述的不同程序和/或組件,才會再做進(jìn)一步的說明。圖6A至圖6F是說明譯碼系統(tǒng)200及相關(guān)組件的方塊圖,其中繪出的譯碼系統(tǒng)200具有單一CABAC單元530(于圖6A至圖6F,所使用的CABAC單元530可與譯碼系統(tǒng)200互換),因此于實(shí)施例中,譯碼系統(tǒng)200可譯碼單一位流,同樣的原則可應(yīng)用至具有多個CABAC單元的譯碼系統(tǒng)200,可同時譯碼多個(如兩個)串流。簡單地說,圖6A是譯碼系統(tǒng)200的選擇組件,圖6B則為圖6A選擇組件加上其它組件的功能方塊圖,圖6C則為說明譯碼系統(tǒng)200提供的串流緩沖器功能的方塊圖,圖6D與圖6F是說明譯碼系統(tǒng)200的內(nèi)容存儲器功能的方塊圖,而圖6E是說明用于解碼一宏塊的例示機(jī)制的方塊圖,雖然下列敘述是有關(guān)宏塊譯碼的內(nèi)容,但是此原則可應(yīng)用至各種圖塊譯碼。請參閱圖6A,譯碼系統(tǒng)200包含CABAC單元530,CABAC單元530具有CABAC邏輯模塊660以及存儲器模塊650,于一實(shí)施例中,CABAC邏輯模塊660包含三個模塊,分別是CABAC單元530內(nèi)的二進(jìn)制化(BIND)模塊620、取得內(nèi)容(GCTX)模塊622、以及二進(jìn)制算術(shù)譯碼(BARD)引擎624,BARD引擎624還包含狀態(tài)索引(pStateIdx)寄存器602、MPS值(valMPS)寄存器604、碼長范圍(codlRange)寄存器606、以及碼長補(bǔ)償(codlOffset)寄存器608,CABAC單元530的存儲器模塊650包括宏塊相鄰內(nèi)容(mbNeighCtx)存儲器610(亦稱為內(nèi)容存儲器陣?yán)?contextmemoryarray))、區(qū)域寄存器612、總寄存器614、以及移位寄存器(SREG)-串流緩沖器/直接存儲器存取(DMA)引擎618(亦稱為DMA引擎模塊,將于圖6C中做進(jìn)一步的說明),另外還有未繪出的寄存器,于一實(shí)施例中,mbNeighCtx存儲器610包含如圖6D的陣列結(jié)構(gòu),之后會有更進(jìn)一步的說明,存儲器模塊650還包含二進(jìn)制字符串寄存器616。CABAC單元530與執(zhí)行單元420a的接口包括目標(biāo)總線628、兩個來源總線(SRC1632和SRC2630)、命令及線程信息總線634、以及延遲/重置總線636,目標(biāo)總線628上的數(shù)據(jù)可以直接或間接(如經(jīng)由中間閃存、寄存器、緩沖器、或存儲器)傳送至圖形處理單元114內(nèi)部或外部的視訊處理單元,目標(biāo)總線628上的數(shù)據(jù)可以是微軟的DXAPI格式或其它格式,這些數(shù)據(jù)包含系數(shù)、宏塊參數(shù)、動作信息、和/或IPCM取樣或是其它數(shù)據(jù),CABAC單元530還包括由地址總線638和數(shù)據(jù)總線640組成的存儲器接口,從地址總線638得到地址后,便可以藉由從數(shù)據(jù)總線640得到的數(shù)據(jù)進(jìn)行位流數(shù)據(jù)的存取,于一實(shí)施例中,數(shù)據(jù)總線640上的數(shù)據(jù)可以包括未加密視訊流,其中包括各種訊號參數(shù)及其它數(shù)據(jù)與格式,于某些實(shí)施例中,可以使用加載-儲存操作來存取位流數(shù)據(jù)。在開始說明CABAC單元530的各組件之前,簡單說明一下有關(guān)CABAC譯碼的執(zhí)行單元420a的整個操作,通常,根據(jù)切片(slice)形式,驅(qū)動軟件128(圖1)準(zhǔn)備CABAC著色器并將其加載執(zhí)行單元420a,該CABAC著色器使用標(biāo)準(zhǔn)指令組加上BIND指令、GCTX指令、以及BARD指令,可以進(jìn)行位流的譯碼,因?yàn)镃ABAC單元530使用的內(nèi)容表(contexttable)可以根據(jù)切片種類改變,所以每一切片均要加載,于一實(shí)施例中,在發(fā)出其它指令前,CABAC著色器執(zhí)行的第一個指令包含INT_CTX和INIT_ADE,這兩個指令使CABAC單元530開始譯碼一CABAC位流,并將位流從串流解碼點(diǎn)開始加載FIFO緩沖器,稍后將說明這兩個指令。關(guān)于解析位流,從存儲器接口的數(shù)據(jù)總線640接收位流,然后由SREG串流緩沖器/DMA引擎618進(jìn)行緩沖,切片數(shù)據(jù)解析階段提供位流譯碼,位流(如NAL位流)包括一張或多張圖片,將其切割成圖檔頭(header)及許多切片(slice),一張切片通常包含一系列的宏塊,于一實(shí)施例中,外部程序(即CABAC單元530外部)解析NAL位流、譯碼切片文件頭、傳送指向該切片數(shù)據(jù)(如切片開始處)的指針,硬件(加上軟件)可以從圖形解析H.264位流,不過,于一實(shí)施例中,CABAC編碼僅出現(xiàn)于切片數(shù)據(jù)與宏塊,通常,驅(qū)動軟件128從切片數(shù)據(jù)處理位流,因?yàn)檫@是應(yīng)用程序及API提供的功能,指向切片數(shù)據(jù)位置的指針傳遞還牽涉到切片數(shù)據(jù)的第一字節(jié)地址(如RBSPbyeAddress)和指出位流開始或標(biāo)頭位置(如sREGptr)的位補(bǔ)償指針(如一個位或多個位),位流的初始化將于稍后解釋,于某些實(shí)施例中,可以利用主處理器(如圖1的中央處理單元126)處理外部程序,提供圖片譯碼以及切片標(biāo)頭譯碼,與某些實(shí)施例中,因?yàn)樽g碼系統(tǒng)200的可編程特性,可以于任何階段進(jìn)行譯碼。請參閱圖6C,其為CABAC單元530的SREG串流緩沖器/DMA引擎618的選擇組件部分及其它組件的方塊圖,其包含操作數(shù)寄存器662及664,分別從總線632及630接收SRC1與SRC2值,再傳遞至寄存器666及668,其它組件則如有關(guān)圖6A的說明,除非說明需要,為簡潔之故不再贅述,SREG串流緩沖器/DMA引擎618包含內(nèi)部位流緩沖器618b,于一實(shí)施例中可為BigEndian格式的32位寄存器及8個128位寄存器。驅(qū)動軟件發(fā)出的初始化指令于開始時設(shè)定SREG串流緩沖器/DMA引擎618,一旦啟動,便自動管理SREG串流緩沖器/DMA引擎618的內(nèi)部緩沖器618b,SREG串流緩沖器/DMA引擎618保留待解析位的位置,于一實(shí)施例中,SREG串流緩沖器/DMA引擎618使用兩個寄存器,一個快速32位觸發(fā)器與一個較慢512或1024位存儲器,位流會使用位,移位寄存器618a以位進(jìn)行操作,而位流緩沖器618b以字節(jié)進(jìn)行操作,可以節(jié)省能源。通常移位寄存器618a運(yùn)算的指令會使用少許位(如1-3位),當(dāng)移位寄存器618a使用超過一位的數(shù)據(jù),數(shù)據(jù)(位片段)將從位流緩沖器618b傳送給移位寄存器618a,然后緩沖器指針會減少傳送的字節(jié)數(shù)量,當(dāng)SREG串流緩沖器/DMA引擎618的DMA引擎檢測到使用256位或更多位時,便從存儲器提取256位填滿位流緩沖器618b,如此CABAC單元530實(shí)行了一個簡單的循環(huán)緩沖器(256位片段x4),以追蹤位流緩沖器618b并進(jìn)行填充,于某些實(shí)施例中可以使用單一緩沖器,不過一個循環(huán)緩沖器需要更復(fù)雜的指針計算來跟上存儲器的速度。利用初始化指令實(shí)現(xiàn)與內(nèi)部緩沖器618b互動,稱為INITBSTR指令,于一實(shí)施例中是由驅(qū)動軟件128發(fā)出INIT_BSTR指令以及其它之后說明的指令,如果已知位流位置的字節(jié)地址及位補(bǔ)償,INIT_BSTR指令將數(shù)據(jù)加載內(nèi)部位流緩沖器618b,并開始管理程序,每一次呼叫處理切片數(shù)據(jù)均會發(fā)出下列格式的指令I(lǐng)NIT_BSTRoffset,RBSPbyteAddress這個指令用于將數(shù)據(jù)加載SREG串流緩沖器/DMA引擎618的內(nèi)部緩沖器618b,SRC2寄存器664提供字節(jié)地址(RBSPbyteAddress),而SRC1寄存器662提供位補(bǔ)償,如此,可以使用下列通用的指令格式INIT_BSTRSRC2,SRC1,其中,這個指令中的SRC1以及SRC2及其它訊號是對應(yīng)內(nèi)部寄存器662及664內(nèi)的值,但是不限于這些寄存器,于一實(shí)施例中,使用256位排列的存儲器提取來存取位流數(shù)據(jù),并將其寫入緩沖器寄存器并傳送至SREG串流緩沖器/DMA引擎618的32位移位寄存器618a,于一實(shí)施例中,在這些寄存器或緩沖器進(jìn)行運(yùn)算之前,位流緩沖器618b內(nèi)的數(shù)據(jù)是以字節(jié)方式排列,此數(shù)據(jù)排列可藉由排列指令實(shí)施,亦稱的為ABST指令,ABST指令會排列位流緩沖器618b內(nèi)的數(shù)據(jù),在譯碼過程中,排列位(如填充位)最后將被丟棄。當(dāng)移位寄存器618a使用數(shù)據(jù),內(nèi)部緩沖器618b便會填充數(shù)據(jù),換句話說,SREG串流緩沖器/DMA引擎618的內(nèi)部緩沖器618b類似以3為模(modulo)的循環(huán)緩沖器,并輸入SREG串流緩沖器/DMA引擎618的32位寄存器618a,CABAC邏輯模塊660可以使用READ指令從移位寄存器618a讀取數(shù)據(jù),READ指令的格式如下READDST,SRC1,其中DST對應(yīng)于一輸出或目標(biāo)寄存器,于一實(shí)施例中,SRC1寄存器662包含不具正負(fù)號的整數(shù)值n,經(jīng)過READ指令,從移位寄存器618a獲得n位,當(dāng)從32位寄存器618a消耗了256位的數(shù)據(jù)(如譯碼一個或多個語法成分),自動開始提取動作以獲得另一個256位的數(shù)據(jù),將其寫入內(nèi)部緩沖器618b的寄存器,接著進(jìn)入移位寄存器618a攻下一循環(huán)使用。于某些實(shí)施例中,如果對應(yīng)于一符號譯碼的移位寄存器618a的數(shù)據(jù)已被使用了預(yù)定數(shù)量的位或字節(jié),而內(nèi)部緩沖器618b沒有再接收到任何數(shù)據(jù),則CABAC邏輯模塊660可以經(jīng)由延遲/重置總線636進(jìn)行延遲,以便執(zhí)行其它的線程(例如與CABAC譯碼程序無關(guān)的線程),像是頂點(diǎn)著色器操作。使用SREG串流緩沖器/DMA引擎618的DMA引擎可以減少所需的緩沖器數(shù)量,以補(bǔ)償存儲器延遲(例如,于某些圖形處理單元中,會到三百多周期),當(dāng)使用了位流,可以請求流入排在后面的位流數(shù)據(jù),如果位流數(shù)據(jù)太少使得位流緩沖器618b有向下溢位的風(fēng)險(例如已知讓訊號從CABAC單元530流至處理器管線的周期數(shù)),可傳遞延遲信號給處理器管線,暫停操作,等候數(shù)據(jù)到達(dá)位流緩沖器618b。另外,SREG串流緩沖器/DMA引擎618原本便有處理錯誤位流的能力,舉個例子,因?yàn)槲涣麇e誤,有可能沒有檢測到切片結(jié)尾記號,這種檢測錯誤可能會導(dǎo)致譯碼完全錯誤,并用到后來的圖樣或切片的位,SREG串流緩沖器/DMA引擎618記錄使用的位數(shù),如果使用的位數(shù)大于預(yù)設(shè)的閾值值(可針對每一切片改變),則結(jié)束處理程序并將除去的信號送到處理器(如主處理器),然后處理器執(zhí)行編碼嘗試從錯誤中回復(fù)。請同時參閱圖6A與圖6B,進(jìn)一步說明CABAC單元530的功能,尤其是初始化譯碼引擎(即BARD引擎或模塊624)及內(nèi)容變量,在切片起始處,于解碼對應(yīng)于第一宏塊的語法成分之前,初始化內(nèi)容狀態(tài)以及BARD模塊624,于一實(shí)施例中,驅(qū)動軟件128發(fā)出兩個指令I(lǐng)NIT_CTX以及INIT_ADE進(jìn)行這個初始化動作。INIT_CTX指令會啟動CABAC譯碼模式并初始化一個或多個內(nèi)容表(如遠(yuǎn)程儲存或儲存于芯片上存儲器,像是ROM),INIT_CTX指令可以具有下列指令格式INIT_CTXSRC2,SRC1因應(yīng)INIT_CTX指令,根據(jù)位位置,操作數(shù)SRC1具有與H.264宏塊參數(shù)有關(guān)的值cabac_init_idc、mbPerLine、constrained_intra_pred_flag、NAL_unit_type(NUT)、MbaffFlag等,請注意constrained_intra_pred_flag、NAL_unit_type(NUT)、以及MbaffFlag對應(yīng)于H.264宏塊參數(shù),另外,根據(jù)位位置,操作數(shù)SRC2具有下列值SliceQPY以及mbAddrCurr,進(jìn)一步解釋,執(zhí)行INIT_CTX指令(即初始化CABAC內(nèi)容表)需要cabac_init_idc以及sliceQPY(如量子化)參數(shù),不過,要初始化整個CABAC引擎需要三個指令,即INIT_BTSR、INIT_CTX、以及INIT_ADE,因此,SRC1及SRC2(如全部64位或兩個32位)中的可用位可以傳遞其它用于CABAC相鄰內(nèi)容的參數(shù),因此兩個來源寄存器SRC1662以及SRC2664可以包含下列值SRC1[15:0]=cabac_init_idc,SRC1[23:16]=mbPerLineSRC1[24]=constrained_intra_pred_flagSRC1[27:25]=NAL_unit_type(NUT)SRC1[28]=MbaffFlagSRC1[31:29]=未定義SRC2[15:0]=SliceQPYSRC2[31:16]=mbAddrCurrSliceQPY的值是用于初始化位流緩沖器618b內(nèi)的一狀態(tài)機(jī)(未繪出)。雖然前文已討論各種已知的圖形與切片參數(shù),另外提供一些關(guān)于CABAC單元530的參數(shù),于一實(shí)施例中,cabac_init_idc的定義是針對未編碼為I-picture(I)和切換I-picture(SI)的切片(I),換句話說,cabac_init_idc只能針對P、SP以及B切片進(jìn)行定義,當(dāng)接收到I和SI切片,cabac_init_idc為默認(rèn)值,舉個例子,當(dāng)欲初始化將進(jìn)460個內(nèi)容(如I以及SI切片),可以將cabac_init_idc設(shè)為3(因?yàn)楦鶕?jù)H.264規(guī)格,cabac_init_idc的值只能是0-2),致能2位指示該切片為I或SI。CABAC單元530也可以使用INIT_CTX指令初始化區(qū)域寄存器612以及mbNeighCtx存儲器610陣列結(jié)構(gòu)或組件,如與暫存相鄰宏塊有關(guān)的寄存器,請參閱圖6D,于一實(shí)施例中,mbNeighCtx存儲器610位于圖的上方,mbNeighCtx存儲器610的宏塊基準(zhǔn)相鄰內(nèi)容存儲器排列成一存儲器陣列,以儲存有關(guān)宏塊列的數(shù)據(jù),mbNeighCtx存儲器610包含陣列元素mbNeighCtx601,每一個元素可儲存一列120個宏塊中的一個宏塊(因HDTV為1920×1080像素),目前mbNeighCtx603用于儲存目前解碼的宏塊,而左側(cè)mbNeighCtx605用于儲存現(xiàn)有解碼的(左側(cè))宏塊,另外,利用指標(biāo)607a、607b和607c(在圖6D中以箭頭表示)指向寄存器603、605和陣列元素601,當(dāng)譯碼目前的宏塊時,譯碼的數(shù)據(jù)儲存于目前mbNeighCtx603,當(dāng)已知CABAC解碼的內(nèi)容性質(zhì)時,根據(jù)前次解碼宏塊時所搜集的信息來譯碼目前的宏塊,亦即左側(cè)宏塊儲存于左側(cè)mbNeighCtx605并利用指標(biāo)607b進(jìn)行指向,而上方宏塊儲存于陣列元素[i]中并利用指標(biāo)607c進(jìn)行指向。繼續(xù)解釋初始化指令,INIT_CTX指令用于初始化與目前宏塊(如mbNeighCtx存儲器610陣列的元素)相鄰的宏塊有關(guān)的上方及左側(cè)指標(biāo)607c及607b,舉個例子,左側(cè)指標(biāo)607b可以設(shè)為0而上方指標(biāo)可以設(shè)為1,另外,INIT_CTX指令還會更新總寄存器614。關(guān)于初始化內(nèi)容表,因應(yīng)呼叫INIT_CTX,CABAC單元530建立一個或多個內(nèi)容表,亦稱為CTX_TABLE,于一實(shí)施例中,內(nèi)容表可以是4x460x16位表(8位給m,8位給n,具正負(fù)號的值)或其它數(shù)據(jù)結(jié)構(gòu),內(nèi)容表的每一個項(xiàng)目包含從pStateIdx寄存器602及valMPS寄存器604存取的pStateIdx值及valMPS值。INIT_ADE指令起始化BARD模塊624,亦稱為譯碼引擎,于一實(shí)施例中,完成INIT_BTSR指令后呼叫INIT_ADE,于執(zhí)行INIT_ADE指令之后,CABAC單元530建立兩個寄存器,分別是codlRange寄存器606以及codlOffset寄存器608,伴隨下列指令或數(shù)值codlRange=0x01FE以及codlOffset=ZeroExtend(READ(#9),#16)于一實(shí)施例中,這些變量可以是9位數(shù)值,關(guān)于codlOffset指令,從位流緩沖器618b讀取9位,0延伸(zero-extended)則儲存于16位codlOffset寄存器608中,某些實(shí)施例亦可使用其它數(shù)值。BARD模塊624使用儲存于寄存器606及608的數(shù)值,以決定要輸出0或1,當(dāng)二進(jìn)制譯碼完成,這些值將進(jìn)行更新。除了初始化codlRange寄存器606以及codlOffset寄存器608,INIT_ADE操作同時初始化二進(jìn)制字符串寄存器616,于一實(shí)施例中,二進(jìn)制字符串寄存器616可以是32位寄存器,從BARD模塊624接收每一輸出位,當(dāng)然亦可使用其它尺寸的寄存器。當(dāng)宏塊編碼成I_PCM數(shù)據(jù),BARD模塊624也會被初始化,已知I_PCM數(shù)據(jù)包含像素數(shù)據(jù),根據(jù)H.264規(guī)格,并沒有將轉(zhuǎn)換或預(yù)測模型應(yīng)用至原始視訊數(shù)據(jù),舉個例子,I_PCM可應(yīng)用至無損編碼。已說明與解析位流及初始化各種譯碼系統(tǒng)組件有關(guān)的架構(gòu)及指令,下面將說明有關(guān)二進(jìn)制化、取得模型信息及內(nèi)容、以及根據(jù)模型及內(nèi)容進(jìn)行譯碼的程序,通常CABAC單元530用于取得解析語法成分(syntaxelement,SE)所有可能的二進(jìn)制化,或是經(jīng)由BIND模塊620及BIND指令至少取得模型信息,CABAC單元530更經(jīng)由GCTX模塊622及GCTX指令得到已知語法成分的內(nèi)容,并根據(jù)內(nèi)容及模型信息,讓BARD模塊624及BARD指令實(shí)行運(yùn)算譯碼,實(shí)際上,呼叫GCTX/BARD指令、輸出一位給二進(jìn)制字符串寄存器616直到發(fā)現(xiàn)配合已知語法成分的有意義字碼等兩步驟會構(gòu)成一循環(huán),亦即于一實(shí)施例中,每一次譯碼二進(jìn)制值之后,提供對應(yīng)的譯碼位給二進(jìn)制字符串寄存器616,接著GCTX模塊622讀回二進(jìn)制字符串寄存器的內(nèi)容,直到發(fā)現(xiàn)配合的字碼。這里更詳細(xì)解釋使用單一CABAC單元530的譯碼系統(tǒng)架構(gòu),請再同時參閱圖6A與圖6B,驅(qū)動軟件128發(fā)出的BIND指令會致能BIND模塊620,于一實(shí)施例中,BIND指令具有下列格式BINDDST,#Imm16,SRC1,其中,DST對應(yīng)于DST寄存器652,#Imm16對應(yīng)于16位目前數(shù)值,而SRC1對應(yīng)輸入寄存器SRC1662,BIND運(yùn)算的輸入包含語法成分(SE,包含16位目前數(shù)值Imm)以及內(nèi)容區(qū)塊種類(ctxBlockCat),語法成分可以包含任何符合H.264規(guī)格的語法成分種類(如MBTYpeInI、MBSkipFlagB、IntraChromaPredMode等等),呼叫BIND指令會使得驅(qū)動軟件128從儲存在存儲器(如芯片上存儲器或遠(yuǎn)程存儲器)中的窗體(或其它數(shù)據(jù)結(jié)構(gòu))讀取語法成分,并取得語法成分索引(SEIdx),該語法成分索引用于存取其它窗體或數(shù)據(jù)結(jié)構(gòu),以獲得各宏塊參數(shù)。于一實(shí)施例中,DST寄存器652包含32位寄存器,具有下列格式位0-8(ctxIdxOffset)、位16-18(maxBinIdxCtx)、位21-23(ctxBlockCat)、位24-29(ctxIdxBlockCatOffset)、以及位31(bypassflag),這些數(shù)值(如ctxIdxOffset、maxBinIndxCtx等等)會傳送至GCTX模塊622用作內(nèi)容模型分析之用,在此實(shí)施例中,任何未定義的剩下位可以是0,根據(jù)語法成分索引與ctxBlockCat的配對結(jié)果,ctxIdxRlockOffset可從遠(yuǎn)程儲存或儲存于芯片上存儲器的窗體或其它數(shù)據(jù)結(jié)構(gòu)獲得,表一說明一非限定實(shí)施例的窗體內(nèi)容表一如果接收到未定義的ctxBlockCat,則CABAC單元530可以將未定義參數(shù)當(dāng)成0,所以將ctxIdxBlockOffset當(dāng)成0值。呼叫BIND也會使得重置信號(Rst_Signal)從BIND模塊620輸出至BARD模塊624,說明如下。為了說明BIND模塊620的各種輸入與輸出,這里提出至少一實(shí)施例說明BIND模塊620的操作,呼叫BIND模塊620,則BIND模塊620取出語法成分,并且經(jīng)由軟件提供語法成分索引(SEIdx),利用語法成分索引,BIND模塊620查找窗體以獲得maxBinIdxCtx、ctxIdxOffset、以及bypassFlag的對應(yīng)數(shù)值,這些查找值會暫時儲存在DST寄存器652的預(yù)先定義位配置,另外,利用語法成分索引及ctxBlockCat,BIND模塊620進(jìn)行第二次窗體查找(如從遠(yuǎn)程存儲器或芯片上存儲器)以獲得ctxIdxBlockOffset數(shù)值,第二次的查找值也是暫時儲存在DST寄存器652中,因此決定值將用于建立DST寄存器652,作為32位數(shù)值輸出目標(biāo)。針對某些語法成分,可利用其它的信息(語法成分與ctxBlockCat除外)開始H.264解碼操作,舉個例子,像是SigCoeffFlag以及l(fā)astSigCoeffFlag、儲存在宏塊鄰近內(nèi)容存儲器610的陣列元素maxBinIdxCtx[1]里的值、以及輸入ctxBlockCat值等宏塊參數(shù),均可用來決定宏塊是圖場編碼或是幀編碼,根據(jù)圖形是圖場編碼或是幀編碼,則SigCoeffFlag以及l(fā)astSigCoeffFlag會有不同的編碼,于某些實(shí)施例中,即使是不同的語法成分,這些標(biāo)志也使用同樣的語法成分?jǐn)?shù)目,然后利用mb_field_decoding_flag(mbNeighCtx[1]字段)來區(qū)分。除了上述所列有關(guān)BIND模塊620的功能,于圖6B中,BIND模塊620還與binIdx寄存器654、復(fù)用器單元656和/或轉(zhuǎn)遞寄存器666和/或668(在圖6C中為F1)連接,復(fù)用器單元656會根據(jù)各輸入提供輸出SRC1(如寄存器SRC1內(nèi)的值)給GCTX模塊622。至于標(biāo)示為F1的轉(zhuǎn)遞寄存器,當(dāng)BIND(或GCTX)指令產(chǎn)生結(jié)果,便會將結(jié)果寫入目標(biāo)寄存器(如DST寄存器652)和/或標(biāo)示為F1的轉(zhuǎn)遞寄存器666及668,一個指令及對應(yīng)的模塊(如GCTX模塊622或BARD模塊624)是否使用轉(zhuǎn)遞寄存器666及668會于指令中用轉(zhuǎn)遞標(biāo)志表示,代表轉(zhuǎn)遞寄存器666及668的符號有F1666(使用轉(zhuǎn)遞來源i的值,于一實(shí)施例中可以指令中的位26表示)以及F2668(使用轉(zhuǎn)遞來源2的值,于一實(shí)施例中可以指令中的位27表示),數(shù)據(jù)會分別轉(zhuǎn)遞至GCTX模塊622以及BARD模塊624,說明如下。前面已說明BIND模塊620及相關(guān)程序,這里將說明關(guān)于GCTX模塊622及GCTX指令如何取得已知模型的內(nèi)容及二進(jìn)制索引,簡單地說,GCTX模塊622的輸入包含maxBinIdxCtx、binIdx、以及CtxIdxOffset,GCTX模塊622使用CtxIdxOffset及binIdx值來計算CtxIdx的值(為輸出,代表內(nèi)容索引)。GCTX指令的范例格式如下GCTXDST,SRC2,SRC1,其中SRC1對應(yīng)于復(fù)用器單元656的輸出值并儲存于寄存器SRC1662,而SRC2對應(yīng)于DST寄存器652的輸出值并儲存于寄存器SRC2664,而DST對應(yīng)于目標(biāo)寄存器,于一實(shí)施例中,各寄存器具有下列數(shù)值SRC1[7:0]=binIdx;如果目前語法成分包含一codedBlockPattern,則SRC1的值(從復(fù)用器單元656輸出,并作為GCTX模塊622的輸入)可以是binIdx寄存器654的值。SRC1[15:8]可以是levelListIdx(當(dāng)計算sigCoeffFlag、lastSigCoeffFlag)或是mbPartIdx(當(dāng)計算編碼區(qū)塊圖樣的Ref_Idx或binIdx),亦即,當(dāng)語法成分是sigCoeffFlag或lastSigCoeffFlag時,復(fù)用器單元656可以用來傳送levelListIdx。SRC1[16]可以包含iCbCr標(biāo)志,當(dāng)其值為0時,區(qū)塊為Cb色度區(qū)塊,另外,SRC1[16]可以包含L0/L1值,如果是L0,其值為0,本領(lǐng)域技術(shù)人員從本發(fā)明的內(nèi)容可知L0/L1是用于運(yùn)動補(bǔ)償預(yù)測的圖形參考列表(L0=list0,L1=list1)。SRC1[21:20]=mbPartitionModeSRC2[8:0]=ctxIdxOffsetSRC2[18:16]=maxBinIdxCtxSRC2[23:31]=ctxBlockCatSRC2[29:24]=ctxIdxBlockOffsetSRC2[31]=bypassFlag另外,DST包括GCTX模塊622的輸出并具有下列值DST[15:00]=ctxIdxDST[23:16]=binIdxDST[27:24]=mbPartIdxDST[29:28]=mbPartitionModeDST[30]=L0GCTX模塊622可以與轉(zhuǎn)遞寄存器互相作用,因此使用轉(zhuǎn)遞寄存器的指令格式可以是GCTX.F1.F2,其中F1及F2分別代表使用轉(zhuǎn)遞寄存器666及668,亦即,在指令編碼中有兩位(F1及F2),如果缺少一個或兩個轉(zhuǎn)遞標(biāo)志,則代表沒有使用轉(zhuǎn)遞寄存器,如果有設(shè)定這些位(例如設(shè)成1),則代表使用轉(zhuǎn)遞寄存器的值(內(nèi)部產(chǎn)生值),否則,就使用來源寄存器的值,因此,這個轉(zhuǎn)遞寄存器的特征在于當(dāng)最早的指令發(fā)出時,將提供編譯器提示,如果沒有使用轉(zhuǎn)遞,則指令在來源寄存器可能會遇到寫后讀(read-after-write)風(fēng)險。對于GCTX指令,如果設(shè)定了重置信號Rst_Signal,則SRC1的值為0,如果(F1&rst_signal),則SRC1的值會是GCTX模塊622內(nèi)的值加1,不然SRC1會是從執(zhí)行單元寄存器得到的binIdx值,BIND模塊620的輸出可以作為SRC2的值,供GCTX及BARD指令使用,此時要等到BARD指令使用轉(zhuǎn)遞寄存器后才會發(fā)出BIND指令,更進(jìn)一步解釋,Rst_Signal以及F1轉(zhuǎn)遞訊號將結(jié)合成一單一訊號{F1,reset}(2位訊號),表示輸入GCTX模塊622的SRC1值是包括binIdx值或轉(zhuǎn)遞值,提供Rst_Signal的另一個作用是清空并重置二進(jìn)制字符串616,并將binIdx寄存器654重置為0。繼續(xù)討論GCTX模塊622以及取得內(nèi)容信息,于一實(shí)施例中,表二及表三列出的信息分別對應(yīng)于mbNeighCtx存儲器610及目前mbNeighCtx寄存器603,如前所述,目前mbNeighCtx寄存器603包含目前宏塊的解碼輸出結(jié)果,當(dāng)目前宏塊處理結(jié)束時,發(fā)出CWRITE指令,將目前mbNeighCtx寄存器603的信息復(fù)制到mbNeighCtx存儲器610陣列的對應(yīng)位置,這個復(fù)制的信息稍后會作為上方鄰近值。表二表三于一實(shí)施例中,codedFlagTrans分成三段,例如前4位與ctxBlockCat為0或1時有關(guān),較高4位則與ctxBlockCat為3或4有關(guān),較高4位還分成兩個部分,較低2位用于iCbCr=0時,而另2位則用于iCbCr=1時,預(yù)測模式(predMode)有三種選項(xiàng)predL0=0、predL1=、NiPred=2。圖6E顯示表二與表三中的refIdx的一結(jié)構(gòu)實(shí)施例,refIdx為重建圖形的用的參考圖形列表索引,這個結(jié)構(gòu)對存儲器及邏輯電路提供了最佳的方式,如圖所示,refIdx結(jié)構(gòu)包括第一列的宏塊609、宏塊分割區(qū)(partition)611(圖中有4個)、L0/L1值613、以及每一個L0和L1值都有對應(yīng)的儲存位值Gt0(大于0)615和Gt1(大于1)617,雖然需要的是底部列的宏塊,通常需要存取的是上方相鄰宏塊609,宏塊被切成4x4方塊,形成4個宏塊分割區(qū)611,對于每一個分割區(qū)611,確定L0/L1613的值,但不是真實(shí)值,即判斷L0及L1的值是1或大于1即可,于一實(shí)施例中,藉由儲存2位Gt0615和Gt1617完成判斷,這2位用于計算語法成分(refIdx)。更進(jìn)一步解釋refIdx結(jié)構(gòu)的好處,便是進(jìn)行了兩次最佳化,如果進(jìn)行一次最佳化,只有保留2位(雖然參考值通常比較大),CABAC單元530譯碼refIdx不需要其它位,譯碼完整值并保留在執(zhí)行單元寄存器或存儲器(如L2閃存408)中,第二次最佳化則只保留4個元素(2個左側(cè)及2個上方),這4個元素再次利用,并由CWRITE指令將最終值寫入相鄰元素,因?yàn)槟壳癿bNeighCtx寄存器603只需要保留16位,左側(cè)mbNeighCtx寄存器605以及陣列610的上方mbNeighCtx元素601只需要8位,所以可節(jié)省存儲器,同時因?yàn)椴辉偻暾赜嬎憬獯a參考值,改以較少位的布爾(Boolean)運(yùn)算代替,亦節(jié)省了計算邏輯電路。表四顯示包含的mb_type表四另外也可使用圖6B沒有畫出或討論的寄存器,像是mbPerLine(8位,不具正負(fù)號)、mb_qp_delta(8位,具有正負(fù)號)、以及mbAddrCurr(16位,目前宏塊地址),對于AddrCurr,提供1920x1080陣列,雖然只需要13位,但某些實(shí)施例可使用16位以增進(jìn)16位計算效能??偧拇嫫?14也儲存有從上述寄存器得到的值(如mbPerline、mbAddrCurr、以及mb_qp_delta),亦即這些儲存在總寄存器614的值也會儲存在其它寄存器,有助于硬件設(shè)計,于一實(shí)施例中,總寄存器614包括32位寄存器,內(nèi)部包括對應(yīng)于mbPerline、mbAddrCurr、以及mb_qp_delta的值,其它還有對應(yīng)于NUT、MBAFF_FLAG、以及chroma_format_idc的值??梢岳肐NSERT指令更新總寄存器614的各字段,INSERT指令的格式可為INSERTDST,#Imm,SRC1于此INSERT指令,#Imm包含10位數(shù)字,數(shù)據(jù)之前5位寬度和較高5位指定將插入數(shù)據(jù)的位置,輸入?yún)?shù)具有下列格式Mask=NOT(0xFFFFFFFF<<#Imm[4:0])Data=SRC1&MaskSDATA=Data<<#Imm[9:5]SMask=Mask<<#Imm[9:5]輸出DST可以下式表示DST=(DST&NOT(sMask))ISDATA利用INIT_CTX指令也可以將至少某些字段(如NUT(NAL_UNIT_TYPE)、C(constrained_intra_pred_flag)、MBAFF_FLAG、mbPerLine、以及mbAddrCurr)的值寫入/初始化總寄存器614。于一實(shí)施例中,區(qū)域寄存器612包含32位寄存器,其中包括對應(yīng)于b、mb_qp_delta、numDecodAbsLevelEq1、以及numDecodAbsLevelGt1的字段,使用INSERT指令可以更新這些字段,初始化區(qū)域寄存器612后,b=0、mb_qp_delta=0、numDecodAbsLevelEq1=-1、以及numDecodAbsLevelGt1=0,使用下列格式的指令可以進(jìn)行初始化CWRITESRC1,其中,SRC1[15:0]=mbAddrCurr,CWRITESRC1更新總寄存器614的mbAddrCurr字段,CWRITE指令還有其它的功能,于簡單討論相鄰元素結(jié)構(gòu)及如何使用于譯碼程序后,將再做進(jìn)一步的說明。在CABAC譯碼程序中,根據(jù)相鄰的宏塊(例如左側(cè)及上方)預(yù)測和/或模式分析語法值,下面介紹幾種方法,描述CABAC單元530如何決定左側(cè)及上方相鄰宏塊,以及決定這些宏塊是否存在,符號譯碼階段利用mbPerLine參數(shù),如前所述,譯碼程序使用鄰近值(如上方或左側(cè)的宏塊或區(qū)塊),于一實(shí)施例中,BARD模塊624利用目前宏塊號碼及一列宏塊數(shù)量(mbPerLine)計算下列式子,以計算出上方宏塊地址并確定左側(cè)及上方宏塊是否存在。舉個例子,要判斷相鄰宏塊(如左側(cè)宏塊)是否存在(有效),必須進(jìn)行一運(yùn)算(如mbCurrAddr%mbPerLine),檢查結(jié)果是否為0,于一實(shí)施例中,進(jìn)行下列算式a=(mbCurrAddr%mbPerLine)mbCurrAddr代表對應(yīng)于待譯碼二進(jìn)制符號的目前宏塊位置,mbPerLine代表每一列的宏塊數(shù)量,上面的計算用到一除法、一乘法、以及一減法。再進(jìn)一步說明BARD模塊624的譯碼機(jī)制,請參閱圖6F,其顯示待譯碼的圖形(16x8宏塊,因此mbPerLine=16),如果譯碼宏塊35(mbCurrent為35,宏塊36還未完全譯碼),需要前次譯碼的上方宏塊19及左側(cè)宏塊34的數(shù)據(jù),上方宏塊的信息可從mbNeighCtx[i]獲得,其中i=mbCurrent%mbPerLine,在這個例子中,i=35%16=3,當(dāng)目前宏塊譯碼完畢,利用CWRITE指令更新左側(cè)mbNeighCtx寄存器605及陣列中的mbNeighCtx[i]601。于另一例子中,考慮下式mbCurrAddr∈其中,maxMB是8192,而mbPerLine=120,于一實(shí)施例中,可利用乘法及由儲存于芯片上存儲器的窗體(如120x11位表)查找的(1/mbPerLine)進(jìn)行除法,如果mbCurrentAddr是13位,則使用13x11乘法器,于一實(shí)施例中,將乘法運(yùn)算的結(jié)果取整數(shù),儲存較上方的13位,進(jìn)行13x7的乘法運(yùn)算,儲存較低的13位,最后進(jìn)行13位的減法運(yùn)算以決定“a”,整個運(yùn)算程序需要2個周期,可以儲存這個結(jié)果給其它運(yùn)算使用,每當(dāng)mbCurrAddr改變就計算一次。于某些實(shí)施例中不進(jìn)行模數(shù)(modulo)運(yùn)算,改以執(zhí)行單元(如執(zhí)行單元420a,420b等等)內(nèi)的著色器邏輯電路提供第一個mbAddrCurr值,將其指派給第一切片的第一行,舉個例子,這個著色器邏輯電路可以進(jìn)行下列計算mbAddrCurr=absoluteMbAddrCurr-nxmbPerLine因?yàn)镠.264彈性宏塊順序(flexiblemacroblockordering,F(xiàn)MO)模式有些復(fù)雜的相鄰結(jié)構(gòu),為了處理這些模式,要新增譯碼系統(tǒng)200的著色器以計算左側(cè)/上方可用性,并加載CABAC單元530的一個或多個寄存器,如果不加載(off-loading)CABAC單元530,當(dāng)致能所有H.264模式支持符號譯碼,可降低硬件的復(fù)雜性。CWRITE指令從目前mbNeighCtx603的適當(dāng)字段復(fù)制到上方mbNeighCtx[]601以及左側(cè)mbNeighCtx[](如陣列610中的左側(cè)宏塊),根據(jù)mBaffFrameFlag(MBAFF)是否設(shè)定以及目前與現(xiàn)有宏塊的譯碼方式是圖場譯碼或幀譯碼等因素,將數(shù)據(jù)寫入特定的上方mbNeighCtx[]601以及左側(cè)mbNeighCtx[],當(dāng)(mbAddrCurr%mbPerLine==0),左側(cè)mbNeighCtxLeft605則標(biāo)記為不存在(如初始化成0),可以利用CWRITE指令「移動」mbNeighCtx存儲器610、區(qū)域寄存器612、以及總寄存器614的內(nèi)容,舉個例子,CWRITE指令移動mbNeighCtx存儲器610的相關(guān)內(nèi)容到第i個宏塊的左側(cè)及上方區(qū)塊(如mbNeighCtx[i]或目前宏塊),并清空mbNeighCtx寄存器603,如前所述,與mbNeighCtx存儲器相關(guān)的兩個指針是左側(cè)指標(biāo)607b及上方指針607c,CWRITE指令之后,上方索引增加1,而目前宏塊的內(nèi)容則移至陣列的上方位置及左側(cè)位置,上述系統(tǒng)可以減少存儲器陣列的讀取/寫入端口的數(shù)量至一個讀取/寫入端口。利用INSERT指令可以更新mbNeighCtx存儲器610、區(qū)域寄存器612、以及總寄存器614的內(nèi)容,舉個例子,使用INSERT指令(如INSERT$mbNeighCtxCurrent_1,#Imm10,SRC1)可以寫入目前宏塊,之后的運(yùn)算不會影響左側(cè)指標(biāo)607b及上方指標(biāo)607c(只寫入目前位置)。INSERT指令以及BARD模塊624的更新將寫入mbNeighCtx存儲器610的目前mbNeighCtx陣列元素601,左側(cè)指針607b指向存儲器610的元素,這個元素與相鄰的陣列元素(相鄰于mbNeighCtx601,例如mbNeighCtx[i-1])相同。上面說明了有關(guān)取得內(nèi)容及模型信息,接下來說明BARD模塊624以及如何根據(jù)內(nèi)容及模型信息進(jìn)行算述譯碼,BARD模塊624受BARD指令操作,BARD指令的格式可為BARDDST,SRC2,SRC1,提供的二進(jìn)制算術(shù)譯碼操作中,每一個二進(jìn)制譯碼形成單一位輸出,輸入?yún)?shù)如下SRC1=binIdx/ctxIdx,這是GCTX模塊622的輸出SRC2=bypassFlag,這是BIND模塊620的輸出如果使用轉(zhuǎn)遞寄存器,格式可為BARD.F1.F2,其中F1及F2代表轉(zhuǎn)遞寄存器666及668,如果缺少一個或兩個轉(zhuǎn)遞標(biāo)志,這表示沒有使用對應(yīng)的轉(zhuǎn)遞寄存器,如前所述,BARD模塊624會接收RST_Signal,而且在接收到訊號后,會保留RST_Signal等到第一次呼叫BARD指令,然后清空訊號。運(yùn)算時,BARD模塊624從GCTX模塊622接收內(nèi)容索引(ctxIdx)值以及指向編碼位流的目前位解析位置的指針(binIdx),BARD模塊624使用從codlOffset寄存器608以及codlRange寄存器606接收到的補(bǔ)償及范圍值,以記錄譯碼引擎的目前區(qū)間(補(bǔ)償、補(bǔ)償+范圍)狀態(tài),BARD模塊624使用內(nèi)容索引來存取內(nèi)容表(CTX_TABLE),依次使用內(nèi)容表存取目前的可能性狀態(tài)pStateIdx及MPS值,pStateIdx用于讀取(從儲存在遠(yuǎn)程存儲器或芯片上存儲器的窗體)LPS子范圍值、次一MPS值、以及次一LPS機(jī)率。根據(jù)MPS值的狀態(tài)、次一范圍及可能性信息,BARD模塊624計算目前二進(jìn)制符號的MPS值,BARD模塊624輸出一個二進(jìn)制符號(位或二進(jìn)制數(shù)值,例如b0、b1...bn)給二進(jìn)制字符串寄存器616,然后針對下一個二進(jìn)制值的相同或不同內(nèi)容重復(fù)這個程序,路徑如圖中所示的從二進(jìn)制字符串616寄存器到GCTX模塊622的反饋接線658,根據(jù)MPS值的選擇,BARD模塊624亦更新補(bǔ)償、范圍值、以及次一二進(jìn)制數(shù)值的可能性狀態(tài),另外,BARD模塊624將目前MPS及可能性狀態(tài)寫入內(nèi)容表,供后來的內(nèi)容使用。關(guān)于轉(zhuǎn)遞寄存器666及668的使用,如果利用信號通知轉(zhuǎn)遞,可以延遲或不延遲指令,舉個例子,從BIND模塊620轉(zhuǎn)遞至GCTX模塊622沒有延遲,所以在下一周期即發(fā)出GCTX指令;而從GCTX模塊622轉(zhuǎn)遞至BARD模塊624會用掉4個周期,如果在周期j發(fā)出GCTX指令,則可能在周期(j+5)發(fā)出BARD指令,中間沒有指令的空位則填入4個NOP;從BIND模塊620轉(zhuǎn)遞至BARD模塊624也沒有延遲;從BARD模塊624轉(zhuǎn)遞至GCTX模塊622的話,如果在周期j發(fā)出BARD指令,則在周期(j+5)發(fā)出GCTX指令;如果保留第二個二進(jìn)制字符串而用切換的方式,從BARD模塊624轉(zhuǎn)遞至BIND模塊620也沒有延遲,如果要保留第二個二進(jìn)制字符串,可能發(fā)出BARD至BARD指令,成為沒有延遲的繞走(bypass)方式。應(yīng)強(qiáng)調(diào)的是,本發(fā)明所舉的上所實(shí)施例或「較佳」實(shí)施例僅為可能的施行范例,僅用以清楚說明本發(fā)明的原理,即便對上述實(shí)施例施以變化和修飾,然皆不脫此中所述系統(tǒng)及方法的精神和原則,所有這些修飾及變化應(yīng)涵括于本發(fā)明的范圍內(nèi),受所附權(quán)利要求保護(hù)。權(quán)利要求1.一譯碼系統(tǒng),其包含一軟件可編程核心處理單元,其具有執(zhí)行一著色器的一內(nèi)容適應(yīng)性二進(jìn)制算術(shù)編碼CABAC單元,該著色器施行一視訊流的CABAC譯碼并提供一譯碼數(shù)據(jù)輸出,其中該CABAC譯碼使用硬件配合軟件的方式施行。2.如權(quán)利要求1所述的系統(tǒng),其中該CABAC譯碼是以圖形處理單元編程的內(nèi)容配合施行于一圖形處理單元數(shù)據(jù)路徑內(nèi)的硬件所完成。3.如權(quán)利要求1所述的系統(tǒng),其中該CABAC單元還包含一二進(jìn)制化BIND模塊,用以接收包含第一語法成分及一內(nèi)容區(qū)塊類型的第一信息,同時因應(yīng)該BIND模塊執(zhí)行該著色器的一第一指令,根據(jù)該第一信息提供對應(yīng)于一個或多個宏塊參數(shù)的第二信息,供內(nèi)容模型分析之用。4.如權(quán)利要求3所述的系統(tǒng),其中該CABAC單元還包含一取得內(nèi)容GCTX模塊,用以接收該第二信息,并因應(yīng)該GCTX模塊執(zhí)行該著色器的一第二指令,產(chǎn)生一二進(jìn)制值及內(nèi)容識別符,供二進(jìn)制譯碼之用。5.如權(quán)利要求4所述的系統(tǒng),其中該內(nèi)容辨識符對應(yīng)于一最高可能符號值MPS值或一最低可能符號LPS機(jī)率。6.如權(quán)利要求4所述的系統(tǒng),其中該CABAC單元還包含還一二進(jìn)制算術(shù)譯碼BARD模塊,用以接收該二進(jìn)制值及內(nèi)容辨識符、一補(bǔ)償、以及一范圍,并因應(yīng)該BARD模塊執(zhí)行該著色器的一第三指令,譯碼一二進(jìn)制符號。7.如權(quán)利要求6所述的系統(tǒng),其中該CABAC單元還包含一二進(jìn)制字符串寄存器,以接收該譯碼的二進(jìn)制符號,并提供更新內(nèi)容信息。8.如權(quán)利要求7所述的系統(tǒng),其中該二進(jìn)制字符串寄存器用于接收代表一譯碼語法成分的多個二進(jìn)制符號。9.如權(quán)利要求1所述的系統(tǒng),其中該CABAC單元根據(jù)一指令內(nèi)的位,判斷儲存在一內(nèi)部寄存器之前一次運(yùn)算結(jié)果是否可用,或是一來源操作數(shù)中的數(shù)據(jù)是否可供一個或多個模塊于目前運(yùn)算中使用。10.如權(quán)利要求1所述的系統(tǒng),其中該CABAC單元還包含一直接存儲器存取DMA引擎模塊,其內(nèi)包含一位流緩沖器以及一DMA引擎,該DMA引擎模塊因應(yīng)該著色器針對每一切片執(zhí)行的一第四指令,當(dāng)已使用該位流內(nèi)的預(yù)定數(shù)量的位,自動重復(fù)填入該預(yù)定數(shù)量的位,該位對應(yīng)于該視訊流。11.如權(quán)利要求10所述的系統(tǒng),其中該CABAC單元因應(yīng)該位流緩沖器內(nèi)有向下溢位的可能,延遲該DMA引擎模塊。12.如權(quán)利要求10所述的系統(tǒng),其中該DMA引擎用于記錄該位流緩沖器內(nèi)的已使用位數(shù)目,并因應(yīng)檢測到該位數(shù)目大于一預(yù)定值,暫停該位流緩沖器運(yùn)算,并將控制權(quán)轉(zhuǎn)移至一主處理器。13.如權(quán)利要求1所述的系統(tǒng),還包含一內(nèi)容存儲器陣列,供內(nèi)容基礎(chǔ)譯碼及對應(yīng)寄存器使用,其中內(nèi)容存儲器陣列包含儲存目前及相鄰宏塊的元素,因應(yīng)一GCTX模塊執(zhí)行該著色器的一第五指令,該GCTX模塊根據(jù)布爾邏輯運(yùn)算寫入該內(nèi)容存儲器陣列,其中包括數(shù)值從該寄存器移轉(zhuǎn)至該內(nèi)容存儲器陣列。14.一種解碼方法,其包括步驟將一著色器加載具有一CABAC單元的一可編程核心處理單元中;執(zhí)行該CABAC單元上的該著色器,以CABAC譯碼一視訊流;以及提供一譯碼數(shù)據(jù)輸出。15.如權(quán)利要求14所述的方法,其中該CABAC譯碼是以圖形處理單元編程的內(nèi)容配合施行于一圖形處理單元數(shù)據(jù)路徑內(nèi)的硬件所完成。16.如權(quán)利要求14所述的方法,還包括步驟BIND模塊接收包含一語法成分及一內(nèi)容區(qū)塊類型的第一信息;以及因應(yīng)該BIND模塊執(zhí)行該著色器的一第一指令,根據(jù)該第一信息提供對應(yīng)于一個或多個宏塊參數(shù)的第二信息,供內(nèi)容模型分析之用。17.如權(quán)利要求16所述的方法,還包括步驟GCTX模塊接收該第二信息;以及因應(yīng)該GCTX模塊執(zhí)行該著色器的一第二指令,產(chǎn)生一二進(jìn)制值及內(nèi)容識別符,供二進(jìn)制譯碼之用,其中該內(nèi)容辨識符對應(yīng)于一高可能符號MPS值或一低可能號LPS機(jī)率。18.如權(quán)利要求17所述的方法,還包括步驟一BARD模塊接收該二進(jìn)制值及內(nèi)容辨識符、一補(bǔ)償、以及一范圍;以及因應(yīng)該BARD模塊執(zhí)行該著色器的一第三指令,譯碼一個或多個二進(jìn)制符號。19.如權(quán)利要求18所述的方法,還包括步驟一二進(jìn)制字符串寄存器接收該一個或多個譯碼的二進(jìn)制符號,該一個或多個譯碼的二進(jìn)制符號代表一譯碼的語法成分;以及提供更新內(nèi)容信息。20.如權(quán)利要求14所述的方法,還包括步驟利用一指令內(nèi)的位,判斷儲存在一內(nèi)部寄存器之前一次運(yùn)算結(jié)果是否可用,或是一來源操作數(shù)中的數(shù)據(jù)是否可供一個或多個模塊于目前運(yùn)算中使用。21.如權(quán)利要求14所述的方法,還包括步驟當(dāng)譯碼程序已使用該位流內(nèi)的預(yù)定數(shù)量的位,自動重復(fù)填入該預(yù)定數(shù)量的位,該位對應(yīng)于該視訊流。22.如權(quán)利要求14所述的方法,還包括步驟因應(yīng)該位流緩沖器內(nèi)有向下溢位的可能,延遲該DMA引擎模塊。23.如權(quán)利要求21所述的方法,還包括步驟記錄該位流緩沖器內(nèi)的以使用位數(shù)目,并因應(yīng)檢測到該位數(shù)目大于一預(yù)定值,暫停該位流緩沖器運(yùn)算,并將控制權(quán)轉(zhuǎn)移至一主處理器。24.如權(quán)利要求14所述的方法,還包括步驟根據(jù)布爾邏輯運(yùn)算寫入用于CABAC譯碼的一內(nèi)容存儲器陣列,其中包括數(shù)值從作為該內(nèi)容存儲器的寄存器移轉(zhuǎn)至該內(nèi)容存儲器陣列。全文摘要本發(fā)明披露一種譯碼系統(tǒng)與方法,系統(tǒng)實(shí)施例包含軟件可編程核心處理單元,其具有內(nèi)容適應(yīng)性二進(jìn)制算術(shù)編碼(CABAC)單元,用于執(zhí)行一緩沖器,該著色器用于施行CABAC譯碼視訊流,并提供一譯碼數(shù)據(jù)輸出。文檔編號G06T9/00GK101072350SQ20071011029公開日2007年11月14日申請日期2007年6月8日優(yōu)先權(quán)日2006年6月8日發(fā)明者扎伊爾德·荷圣,裴德輝申請人:威盛電子股份有限公司