專利名稱:算術(shù)解碼設(shè)備的制作方法
技術(shù)領(lǐng)域:
總體地,本發(fā)明涉及算術(shù)解碼方法。更特別地,本發(fā)明涉及用于對已經(jīng)采用 CABAC (Context-Adaptive Binary Arithmetic Coding,上下文自適應(yīng)二進制算術(shù)編碼)技 術(shù)編碼的數(shù)據(jù)進行解碼的算術(shù)解碼設(shè)備。
背景技術(shù):
CABAC技術(shù)是已經(jīng)由ITU-T (International Teleco匪nicationUnion-Teleco匪 nication standardization sector,國際電信同盟-電信標準部)標準化的H. 264中熵編 碼技術(shù)中的一種。根據(jù)CABAC技術(shù),在編碼處理之前,通過以'0'和'l'符號表達多值數(shù)據(jù) 而把各種類型的多值數(shù)據(jù)轉(zhuǎn)換成二進制數(shù)據(jù)。然后,通過實施二進制算術(shù)編碼處理而對二 進制數(shù)據(jù)編碼。另一方面,在解碼處理中,以相反的方式實施處理。 以'0'和1'符號表達的二進制數(shù)據(jù)經(jīng)受二進制算法編碼處理,該處理是用{LPS, MPS}代替{0,1}的處理。MPS是最有可能的符號(Most ProbableSymbol)的縮寫,該符 號是推斷為具有高出現(xiàn)概率的符號。另一方面,LPS是最不可能的符號(Least Probable Symbol)的縮寫,該符號是不同于MPS的符號。 于是,以兩個不同的符號,即MPS和LPS,表達的二進制數(shù)據(jù)通過使用算術(shù)碼而被 編碼。通過基于已經(jīng)處理的數(shù)據(jù)對每個符號進行預(yù)測而確定MPS是'O'或'l'。也就是說, 在編碼處理中,僅從已經(jīng)作為在前編碼處理的結(jié)果獲得的數(shù)據(jù)確定接下來將被編碼的符號 的MPS值。另一方面,在解碼處理中,僅從已經(jīng)作為在前解碼處理的結(jié)果獲得的數(shù)據(jù)確定接 下來將被解碼的符號的MPS值。 另外,二進制算術(shù)編碼處理包括下述處理,即總是順序地將概率模型(下文中也 稱為上下文(context))切換成從預(yù)先準備的多個上下文中合適地選擇的上下文,作為適 于當(dāng)前狀態(tài)的合適上下文。在CABAC解碼處理的情況下,每個相應(yīng)于上下文中的一個的上 下文變量被預(yù)先存儲在上下文變量表中。通過利用指向上下文變量的以符號ctxldx表示 的上下文索引(contextindex),從已經(jīng)預(yù)先存儲在上下文變量表中的上下文變量中識別以 符號context [ctxldx]表示的上下文變量,而從預(yù)先準備的上下文中選擇出適于當(dāng)前狀態(tài) 的上下文。每個上下文配置成包括示出出現(xiàn)概率的概率狀態(tài)指標(index)pStateIdx和示 出具有高出現(xiàn)概率的最有可能的符號(MPS)的valMPS。上下文的概率狀態(tài)指標pStateIdx 示出就在預(yù)定范圍0至63中的概率狀態(tài)而言在上下文中LPS的出現(xiàn)概率的推測值。另一 方面,valMPS表明相應(yīng)于MPS的符號是0或1 。應(yīng)注意,對于每個上下文變量,相應(yīng)于該上 下文變量的上下文的概率狀態(tài)指標pStateldx用符號context [ctxldx]. pStateldx表示, 而相應(yīng)于該上下文變量的上下文的valMPS用符號context [ctxldx]. valMPS表示。
在CABAC解碼器中,選擇一個上下文變量以用作被實施來生成一份(即iece of) Bin數(shù)據(jù)的Bin解碼處理的基礎(chǔ)。在下文的描述中, 一份Bin數(shù)據(jù)也稱作Bin數(shù)據(jù)比特,其 是l比特的二進制數(shù)據(jù)。然后,通過使用作為Bin解碼處理的執(zhí)行結(jié)果生成的Bin數(shù)據(jù),計 算用于識別上下文變量的上下文索引(index)的更新值。在CABAC解碼器中,對于構(gòu)成宏塊(macroblock)的參數(shù)的每個定義了解碼方法。該參數(shù)稱作SE(syntax element,語法元 素)。在針對語法元素生成Bin數(shù)據(jù)的CABAC解碼處理中,使用多個上下文變量以生成多個 Bin數(shù)據(jù)比特。然后,對于Bin數(shù)據(jù)比特,根據(jù)對于語法元素唯一確定的多值轉(zhuǎn)換方法來找 到語法元素的多值數(shù)據(jù)。 在生成一個Bin數(shù)據(jù)比特的Bin解碼處理中,在許多情況下,下述上下文索引 以升序存在于語法元素的開始和語法元素的中間,所述上下文索引每個根據(jù)在前緊鄰 (immediately proceding) Bin數(shù)據(jù)比特的值而確定,作為在Bin解碼處理中用于識別上下 文變量的索引。另外,在許多情況下,作為用于生成語法元素的Bin數(shù)據(jù)的Bin解碼處理的 結(jié)果所獲得的Bin數(shù)據(jù)的長度是不確定的,直到作為Bin解碼處理的結(jié)果獲得在前緊鄰Bin 數(shù)據(jù)。應(yīng)注意,Bin數(shù)據(jù)的長度是Bin數(shù)據(jù)比特的數(shù)量,每個Bin數(shù)據(jù)比特作為Bin解碼處 理的結(jié)果獲得。因而,在生成用于語法元素的Bin數(shù)據(jù)的Bin解碼處理中,在生成用于另一 語法元素的Bin數(shù)據(jù)的Bin解碼處理的結(jié)束之后,每個上下文索引沒有確定,直到生成用于 語法元素的在前緊鄰Bin數(shù)據(jù)的Bin解碼處理完成。另外,在生成用于語法元素的Bin解 碼處理中,存在由相同的上下文索引識別的相同上下文變量連續(xù)用于生成用于語法元素的 不同Bin數(shù)據(jù)比特的不同解碼處理的情況,以及存在由不同的上下文索引識別的不同上下 文變量用于生成用于語法元素的不同Bin數(shù)據(jù)比特的不同解碼處理的情況。
存在如下情況,其中識別用于生成在Bin數(shù)據(jù)的頭部的Bin數(shù)據(jù)比特的上下文變 量的上下文索引是根據(jù)從Bin數(shù)據(jù)獲得的語法元素確定的數(shù)字。然而,也存在如下情況,其 中識別用于在Bin數(shù)據(jù)的頭部的Bin數(shù)據(jù)比特的上下文變量的上下文索引是根據(jù)下述語法 元素確定的數(shù)字,該語法元素是根據(jù)每個已經(jīng)從在前解碼處理中生成的Bin數(shù)據(jù)中獲得的 多個語法元素的值是哪些值而從近似四個候選中選擇出來的。識別用于除了在語法元素的 頭部的Bin數(shù)據(jù)比特外的Bin數(shù)據(jù)比特的上下文變量的上下文索引是根據(jù)在前緊鄰Bin數(shù) 據(jù)比特是0還是1而計算出,該在前緊鄰Bin數(shù)據(jù)比特是作為通過執(zhí)行在前緊鄰Bin解碼指 令所實施的Bin解碼處理的結(jié)果而獲得的。另外,通過參考為語法元素定義的可變長度代 碼表,CABAC解碼器確定是否已經(jīng)作為CABAC解碼處理的結(jié)果獲得語法元素的最后(end)。
CABAC解碼過程包括許多分支處理,每個分支處理由實現(xiàn)CABAC解碼過程的程序 的分支指令執(zhí)行。另外,用于識別上下文變量的上下文索引并不總是對于每一解碼處理都 遞增一。例如,可能提供一種配置,其中用于識別上下文變量的相同上下文索引被連續(xù)地用 在所有的Bin解碼處理中,或上下文索引可對于每一 Bin解碼處理遞增二。無論如何,如上 所述,上下文索引是根據(jù)在前緊鄰Bin數(shù)據(jù)比特的值而計算出來的,其中該在前緊鄰Bin數(shù) 據(jù)比特是作為通過執(zhí)行在前緊鄰Bin解碼指令而實施的Bin解碼處理的結(jié)果而獲得的,并 且計算上下文索引的處理不簡單。另外,作為用于生成用于語法元素的Bin數(shù)據(jù)的CABAC 解碼處理的結(jié)果獲得的Bin數(shù)據(jù)的長度不是由語法元素確定的固定值。相反地,作為CABAC 解碼處理的結(jié)果獲得的Bin數(shù)據(jù)的長度根據(jù)解碼處理路徑(path)而改變,該解碼處理路徑 可包括或不包括如上所述的分支處理,該CABAC解碼處理用以生成用于語法元素的Bin數(shù) 據(jù)。因而,由CABAC解碼器實施來判定是否作為Bin解碼處理的結(jié)果生成語法元素的最后 的處理也是復(fù)雜的。 存在如下情況,其中識別用于在Bin數(shù)據(jù)的頭部處的Bin數(shù)據(jù)比特的上下文變量 的上下文索引是根據(jù)作為CABAC解碼處理的最終結(jié)果而獲得的語法元素唯一地確定的數(shù)字,該CABAC解碼處理用于生成用于語法元素的比特數(shù)據(jù)。另一方面,還存在如下情況,其 中識別用于Bin數(shù)據(jù)的頭部處的Bin數(shù)據(jù)比特的上下文變量的上下文索引是從鄰近宏塊唯 一地確定的數(shù)字,每個宏塊由語法元素組成。如果識別用于Bin數(shù)據(jù)的頭部處的Bin數(shù)據(jù) 比特的上下文變量的上下文索引是從鄰近宏塊中唯一地確定的數(shù)字,那么參考屬于剛好在 當(dāng)前語法元素上方的鄰近宏塊的語法元素以及屬于在當(dāng)前語法元素的左側(cè)的鄰近宏塊的 語法元素。諸如圖像的上邊緣和圖像的左右邊緣的圖像部分在一些情況下可能沒有鄰近宏 塊。在這樣的情況下,還需要實施排除處理。結(jié)果是Bin解碼處理變得極其復(fù)雜。
為了通過使用硬件而實現(xiàn)CABAC解碼處理,需要設(shè)置用于存儲460個上下文變量 的專用存儲器和用于保存在前語法元素的專用存儲器,這些在前語法元素用于計算識別用 于Bin數(shù)據(jù)頭部處的Bin數(shù)據(jù)比特的上下文變量的上下文索引。另外,還需要根據(jù)每個相 應(yīng)于語法元素的個別解碼方法提供狀態(tài)機。因而,CABAC解碼器出現(xiàn)了需要執(zhí)行極其復(fù)雜 的控制并且電路尺寸不期望地變大的問題。 另一方面,還可能通過使用在硬件組合上執(zhí)行的軟件來實現(xiàn)CABAC解碼處理,該 硬件組合假定為包括CPU和處理器。當(dāng)執(zhí)行用于給出一個上下文索引的協(xié)處理器指令時, 實施Bin解碼處理以生成Bin數(shù)據(jù)比特,并且能夠假設(shè)為了將Bin數(shù)據(jù)比特存儲在CPU中采 用的寄存器中而執(zhí)行指令。作為用于執(zhí)行這樣的指令的設(shè)備,已經(jīng)提出了 Bin解碼處理流 水線化的CABAC解碼器,以生成Bin數(shù)據(jù),從而能夠在大約與CPU相同的高頻下進行操作。 對于提出的CABAC解碼器的細節(jié),建議讀者參考日本專利特開No. 2007-074648,其中包括 如圖6所示的表。
發(fā)明內(nèi)容
根據(jù)現(xiàn)有技術(shù),通過運行軟件實現(xiàn)生成Bin數(shù)據(jù)的解碼處理,Bin解碼處理被流水 線化。結(jié)果是期望若干流水線化的處理循環(huán),以獲得Bin數(shù)據(jù)作為Bin解碼處理的結(jié)果。 因而,不能在應(yīng)到的(due)時間確定接下來的上下文索引。如果CPU運行軟件以計算上下 文索引且確定語法元素的最后,對于生成Bin數(shù)據(jù)的每個解碼處理期望比較指令和分支指 令。因而,進一步延遲了上下文索引的確定。結(jié)果是生成接下來Bin數(shù)據(jù)的Bin解碼處理 不能開始,使得頻繁地發(fā)生流水線停頓(stall)。因而,擔(dān)心指令執(zhí)行的效率顯著惡化。通 常,為了隱藏指令的等待時間(latency),提供了用于把不取決于在前指令生成的結(jié)果的處 理指令插入到落在具有長等待時間的指令之后的指令位置的程序設(shè)計技術(shù)。然而,在CABAC 解碼處理中,幾乎沒有這樣的引入不取決于在前指令生成的結(jié)果的指令的處理模式,因而 難于合適地隱藏在前指令的等待時間。 致力于上述問題,本發(fā)明的發(fā)明人創(chuàng)新了適合用于上下文自適應(yīng)二進制算術(shù)編碼 處理的指令集合。 為了解決上述問題,根據(jù)本發(fā)明的第一模式,提供了一種算術(shù)解碼設(shè)備,采用指 令解碼器,配置成對算術(shù)已編碼數(shù)據(jù)解碼指令進行解碼,該算術(shù)已編碼數(shù)據(jù)解碼指令將被 執(zhí)行來實施把算術(shù)已編碼數(shù)據(jù)算術(shù)解碼為二進制信號的算術(shù)解碼處理;執(zhí)行條件代碼保存 部分,配置成將作為在前緊鄰算術(shù)解碼處理的結(jié)果獲得的所述二進制信號保存為執(zhí)行條件 代碼;和算術(shù)解碼執(zhí)行部分,配置成根據(jù)所述執(zhí)行條件代碼確定是由所述算術(shù)已編碼數(shù)據(jù) 解碼指令指定的上下文數(shù)字依原樣用作上下文索引,還是增加1的所述指定的上下文數(shù)字
5用作所述上下文索引,以及通過使用所述確定的上下文索引實施所述算術(shù)解碼處理。
因而,可能產(chǎn)生如下Bin解碼處理的效果,通過根據(jù)作為在前緊鄰算術(shù)解碼處理 的結(jié)果獲得的二進制信號選擇上下文索引而實施該Bin解碼處理。 另外,根據(jù)本發(fā)明的第一模式,還可能提供一種構(gòu)造,其中算術(shù)解碼執(zhí)行部分基于
執(zhí)行條件代碼確定是否實施算術(shù)解碼處理。因而可能產(chǎn)生具有下述能力的效果根據(jù)作為
在前緊鄰算術(shù)解碼處理的結(jié)果獲得的二進制信號控制算術(shù)解碼處理的執(zhí)行。 此外,根據(jù)本發(fā)明的第一模式,還可能提供一種構(gòu)造,其中所述上下文數(shù)字在所述
算術(shù)已編碼數(shù)據(jù)解碼指令中被指定為將加到寄存器的內(nèi)容中的立即值,所述寄存器由也在
所述算術(shù)已編碼數(shù)據(jù)解碼指令中指定的輸入操作數(shù)指示。因而,可能產(chǎn)生動態(tài)地設(shè)置上下
文數(shù)字的能力的效果。 另外,根據(jù)本發(fā)明的第二模式,提供了一種算術(shù)解碼設(shè)備,采用指令解碼器,配置 成解碼算術(shù)已編碼數(shù)據(jù)解碼指令,該算術(shù)已編碼數(shù)據(jù)解碼指令用于實施把算術(shù)已編碼數(shù) 據(jù)算術(shù)解碼為二進制信號的算術(shù)解碼處理,匹配指令,具有作為輸入操作數(shù)的位圖,所述位 圖表示所述算術(shù)解碼處理的匹配條件,和分支指令,用于根據(jù)分支條件代碼產(chǎn)生指令跳轉(zhuǎn); 算術(shù)解碼執(zhí)行部分,配置成通過使用由所述算術(shù)已編碼數(shù)據(jù)解碼指令指定的上下文數(shù)字來 實施所述算術(shù)解碼處理;歷史保存部分,配置成用于存儲所述二進制信號的歷史,每個所述 二進制信號是作為所述算術(shù)解碼處理的結(jié)果而獲得的;匹配處理部分,配置成根據(jù)所述二 進制信號的所述歷史是否匹配所述匹配條件而設(shè)置所述分支條件代碼;以及指令控制部 分,配置成根據(jù)所述分支條件代碼而進行所述指令跳轉(zhuǎn)。 另外,根據(jù)本發(fā)明的第二模式,還可能提供一種構(gòu)造,其中如果算術(shù)已編碼數(shù)據(jù)解 碼指令的輸入操作數(shù)指定清除歷史的操作,那么算術(shù)解碼執(zhí)行部分清除由歷史保存部分保 存的歷史。因而能夠產(chǎn)生在開始用于生成用于語法元素的Bin數(shù)據(jù)的Bin解碼處理之前清 除歷史的效果。 根據(jù)本發(fā)明的實施例,在通過運行軟件而實施的上下文自適應(yīng)二進制算術(shù)解碼處 理中,可能給出增加處理速度能力的良好效果。
圖1是方框圖,示出了根據(jù)本發(fā)明實施例的用作算術(shù)解碼設(shè)備的典型例子的 CABAC解碼器的典型功能構(gòu)造; 圖2示出了表示根據(jù)本發(fā)明實施例的CABAC解碼處理的典型過程的流程圖;
圖3A至3C是多個圖表,每個圖表示出了實施例中每個識別上下文變量的上下文 索引到用于宏塊類型上下文組的SE(語法元素)的典型分配; 圖4是長度可變代碼表,示出了 Mb_Type_I的語法元素和Bin數(shù)據(jù)之間的關(guān)系,該 Mb一Type一I是I片的mb一type ; 圖5是長度可變代碼表,示出了 Mb_Type_P的語法元素和Bin數(shù)據(jù)之間的關(guān)系,該 Mb一Type一P是P片的mb一type ; 圖6是長度可變代碼表,示出了 MbvType_B的語法元素和Bin數(shù)據(jù)之間的關(guān)系,該 Mb一Type一B是B片的mb一type ; 圖7是長度可變代碼表,示出了 SubMb_Type_P的語法元素和Bin數(shù)據(jù)之間的關(guān)系,該SubMb_Type_P是P片的sub_mb_type ; 圖8是長度可變代碼表,示出了 SubMb_Type_B的語法元素和Bin數(shù)據(jù)之間的關(guān) 系,該SubMb_Type_B是B片的sub_mb_type ; 圖9是方框圖,示出了根據(jù)本發(fā)明實施例的CABAC解碼器的典型硬件構(gòu)造;
圖10是方框圖,示出了根據(jù)本發(fā)明實施例的CABAC解碼器中采用的解碼協(xié)處理器 的典型構(gòu)造; 圖11是根據(jù)本發(fā)明實施例的用于CABAC解碼處理的典型指令集合的表格;
圖12A至12F是多個圖表,每個示出了被執(zhí)行以實施本發(fā)明實施例中的CABAC解 碼處理的協(xié)處理器指令的典型格式; 圖13是方框圖,示出了根據(jù)本發(fā)明實施例的在解碼協(xié)處理器中應(yīng)用的Bin解碼器 的典型構(gòu)造; 圖14是方框圖,示出了根據(jù)本發(fā)明實施例的在Bin解碼器中應(yīng)用的再正規(guī)化 (renormalization)部分的典型構(gòu)造; 圖15是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成I-片宏塊類型的語法元素的CABAC解碼 處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖16示出了由屬于根據(jù)本發(fā)明實施例的指令集合的指令組成的典型程序,以用 作將被執(zhí)行來實施用于生成I-片宏塊類型的語法元素的CABAC解碼處理的程序;
圖17是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖16中示出的典型程序,在用以生成I-片宏塊 類型的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖18是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成P-片宏塊類型的語法元素的CABAC解碼 處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖19是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成P-片宏塊類型的宏塊內(nèi)的語法元素的 CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖20示出了由屬于根據(jù)本發(fā)明實施例的指令集合的指令組成的典型程序,以用 作將被執(zhí)行來實施用于生成P-片宏塊類型的語法元素的CABAC解碼處理的程序;
圖21是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖20中示出的典型程序,在用以生成P-片宏塊 類型的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖22是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖20中示出的典型程序,在用以生成P-片宏塊 類型的宏塊內(nèi)的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖23是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成B-片宏塊類型的語法元素的CABAC解碼 處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖24是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成B-片宏塊類型的宏塊內(nèi)的語法元素的 CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖25示出了由屬于根據(jù)本發(fā)明實施例的指令集合的指令組成的典型程序,以用 作將被執(zhí)行來實施用于生成B-片宏塊類型的語法元素的CABAC解碼處理的程序;
圖26是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖25中示出的典型程序,在用以生成B-片宏塊 類型的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖27是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖25中示出的典型程序,在用以生成B_片宏塊 類型的宏塊內(nèi)的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變;
圖28是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成P-片子宏塊類型的語法元素的CABAC解 碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖29示出了由屬于根據(jù)本發(fā)明實施例的指令集合的指令組成的典型程序,以用 作將被執(zhí)行來實施用于生成P-片子宏塊類型的語法元素的CABAC解碼處理的程序;
圖30是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖29中示出的典型程序,在用以生成P-片子宏 塊類型的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖31是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成B-片子宏塊類型的語法元素的CABAC解 碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變; 圖32示出了由屬于根據(jù)本發(fā)明實施例的指令集合的指令組成的典型程序,以用 作將被執(zhí)行來實施用于生成B-片子宏塊類型的語法元素的CABAC解碼處理的程序;禾口
圖33是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖32中示出的典型程序,在用以生成B_片子宏 塊類型的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。
具體實施例方式
下面解釋了實施本發(fā)明的優(yōu)選實施例。在下面的描述中,優(yōu)選實施例簡單地稱為
實施例。按如下布置的章節(jié)中對實施例進行描述。 1 :CABAC解碼器的概述 2 :協(xié)處理器指令 3 :典型應(yīng)用 1 :CABAC解碼器的概述 CABAC解碼器的典型構(gòu)造 圖1是方框圖,示出了根據(jù)本發(fā)明實施例的用作算術(shù)解碼設(shè)備的典型例子的 CABAC解碼器20的典型功能構(gòu)造。如圖所示,用于實施CABAC解碼處理的CABAC解碼器20 采用了 二進制算術(shù)編碼_解碼處理部分21以及多值轉(zhuǎn)換部分24, 二進制算術(shù)編碼_解碼處 理部分21用于接收來自代碼串輸入部分10的已編碼數(shù)據(jù),并實施將已編碼數(shù)據(jù)解碼成二 進制數(shù)據(jù)的Bin( 二進制)解碼處理,多值轉(zhuǎn)換部分24用于對二進制數(shù)據(jù)實施多值轉(zhuǎn)換處 理,以將二進制數(shù)據(jù)轉(zhuǎn)換成多值信號。在圖中,二進制數(shù)據(jù)用符號Bin數(shù)據(jù)表示,而多值信 號用代表語法元素的符號SE表示。語法元素是規(guī)定通過使用H. 264中的語法的傳送的信 息。如圖中所示,除了二進制算術(shù)編碼_解碼處理部分21和多值轉(zhuǎn)換部分24之外,CABAC 解碼器20還采用了上下文索引計算部分22和上下文變量表保存部分23。
上下文索引計算部分22是用于計算上下文索引ctxldx和將上下文索引提供給二 進制算術(shù)編碼-解碼處理部分21的部分。當(dāng)上下文索引計算部分22計算上下文索引時, 上下文索引計算部分22參考作為由二進制算術(shù)編碼_解碼處理部分21實施的Bin解碼處 理的結(jié)果獲得的Bin數(shù)據(jù)和由多值轉(zhuǎn)換部分24輸出的語法元素。 上下文變量表保存部分23是用于將每個相應(yīng)于上下文的上下文變量保存在上下 文變量表中的部件。每個上下文變量具有示出出現(xiàn)概率的概率狀態(tài)指標(index)pStateldx 和示出具有高出現(xiàn)概率的最有可能的符號(mostprobable symbol, MPS)的valMps。保 存在上下文變量表保存部分23中的每個上下文變量由上下文索引ctxldx識別且表達為 context(ctxldx)。
二進制算術(shù)編碼_解碼處理部分21接收代碼串輸入部分10提供的已編碼數(shù)據(jù), 以及實施將已編碼數(shù)據(jù)解碼成二進制數(shù)據(jù)的Bin(二進制)解碼處理。當(dāng)二進制算術(shù)編 碼-解碼處理部分21解碼一個符號時,二進制算術(shù)編碼-解碼處理部分21從上下文索引 計算部分22得到上下文索引ctxldx,然后上下文變量表保存部分23獲得由上下文索引 ctxldx識別(identify)的上下文變量context [ctxldx]。隨后,二進制算術(shù)編碼_解碼處 理部分21基于上下文變量context [ctxldx]對已編碼數(shù)據(jù)的符號進行解碼,并將作為Bin 解碼處理的結(jié)果獲得的Bin數(shù)據(jù)提供給多值轉(zhuǎn)換部分24。 多值轉(zhuǎn)換部分24對于二進制算術(shù)編碼_解碼處理部分21輸出的Bin( 二進制) 數(shù)據(jù)實施多值轉(zhuǎn)換處理,以將二進制數(shù)據(jù)轉(zhuǎn)換成稱為語法元素的原始多值信號。由編碼器 實施的二進制算術(shù)編碼處理是根據(jù)語法元素將原始多值信號轉(zhuǎn)換成用Bin( 二進制)數(shù)據(jù) 表示的二進制信號的處理。由多值轉(zhuǎn)換部分24實施的多值轉(zhuǎn)換處理是由編碼器實施的二 進制算術(shù)編碼處理的逆處理。如上所述,多值轉(zhuǎn)換處理由多值轉(zhuǎn)換部分24實施,以將表示 二進制信號的Bin數(shù)據(jù)轉(zhuǎn)換回稱為語法元素的原始多值信號。 圖2示出了表示根據(jù)本發(fā)明實施例的CABAC解碼處理的典型過程的流程圖。CABAC 解碼處理劃分成兩大處理部分。第一大處理部分是在步驟S902至S904,通過使用上下文 變量而實施的Bin ( 二進制)解碼處理以生成Bin數(shù)據(jù),而第二大處理部分是在步驟S901 和S905至S907實施的多值轉(zhuǎn)換處理,以將Bin數(shù)據(jù)轉(zhuǎn)換成原始多值信號。特別地,在步驟 S903實施的處理稱為較早描述的Bin解碼處理,然而在步驟S907實施的處理稱為上面解釋 的多值轉(zhuǎn)換處理。 如圖所示,流程圖從步驟S901開始,在該步驟中,上下文索引計算部分22計算用 于語法元素的Bin數(shù)據(jù)的頭部處的Bin數(shù)據(jù)比特的上下文索引ctxldx。在一些情況下,用 于語法元素的Bin數(shù)據(jù)的頭部處的Bin數(shù)據(jù)比特的上下文索引ctxldx是根據(jù)將在CABAC 解碼處理中最終產(chǎn)生的語法元素確定的數(shù)字,該CABAC解碼處理包括用于生成上述Bin數(shù) 據(jù)的Bin解碼處理。在其它情況下,用于Bin數(shù)據(jù)的頭部處的Bin數(shù)據(jù)比特的上下文索引 ctxldx是根據(jù)下述語法元素確定的數(shù)字,該語法元素是根據(jù)已經(jīng)從在前解碼處理中生成的 多個語法元素的值是什么值而從近似四個候選中選擇出的。 然后,在接下來的步驟S902中,二進制算術(shù)編碼_解碼處理部分21從上下文索引 計算部分22得到上下文索引ctxldx,以及從上下文變量表保存部分23獲得由上下文索引 ctxldx識另U的上下文變量context [ctxldx]。 隨后,在接下來的步驟S903中,二進制算術(shù)編碼_解碼處理部分21使用從上下文 變量表保存部分23獲得的上下文變量,以實施將從代碼串輸入部分10接收的已編碼數(shù)據(jù) 解碼成Bin數(shù)據(jù)的Bin解碼處理。然后,在接下來的步驟S904中,通過使用作為Bin解碼 處理的結(jié)果獲得的Bin數(shù)據(jù),計算用于識別由上下文變量表保存部分23保存的上下文變量 的上下文索引的更新值。 隨后,在接下來的步驟S905中,多值轉(zhuǎn)換部分24參考下文將描述的長度可變 (variable-length)代碼表,以便做出關(guān)于是否已經(jīng)作為CABAC解碼處理結(jié)果獲得了用于 語法元素的最后(end)的Bin數(shù)據(jù)的確定結(jié)果。如果該確定結(jié)果沒有表明已經(jīng)作為CABAC 解碼處理結(jié)果獲得了語法元素的最后,處理流程繼續(xù)到步驟S906,在步驟S906中,上下文 索引計算部分22計算接下來的上下文索引ctxldx。然后,處理流程返回到步驟S902,以重復(fù)在步驟S902和后續(xù)步驟實施的處理。在用于非語法元素的開始的語法元素部分的Bin 數(shù)據(jù)情況下,在步驟S906中,上下文索引計算部分22根據(jù)下述Bin數(shù)據(jù)是0還是1 ,計算上 下文索引ctxldx,該Bin數(shù)據(jù)是作為通過執(zhí)行在前緊鄰Bin解碼指令而實施的Bin解碼處 理的結(jié)果而獲得的。另一方面,如果在步驟S905中生成的確定結(jié)果表明已經(jīng)作為CABAC解 碼處理結(jié)果獲得語法元素的最后,那么處理流程繼續(xù)到步驟S907,在步驟S907中,多值轉(zhuǎn) 換部分24生成語法元素作為多值信號。
CABAC解碼概述 如上所述,通過使用從上下文變量表保存部分2 3獲得的上下文變量 context [ctxldx]作為由通過上下文索引計算部分22生成的上下文索引ctxldx識別的上 下文變量,二進制算術(shù)編碼_解碼處理部分21實施Bin解碼處理,作為CABAC解碼處理的 一部分。下面的描述通過采用MB(宏塊)類型上下文組作為例子,解釋上下文索引、Bin數(shù) 據(jù)和語法元素之間的關(guān)系。 圖3A至3C是多個圖表,每個圖表示出了實施例中每個識別上下文變量的上下文 索引到用于宏塊類型上下文組的SE(語法元素)的典型分配(assignment)。附圖標記cidx 表示分配中相對于語法元素的開始的上下文索引。數(shù)字0、1、2等是相對上下文索引cidx 的值。另一方面,附圖標記ctxldx表示H. 264中規(guī)定的上下文索引。顯示在圖3A的圖表 中的數(shù)字3、4、5等是上下文變量的值,每個上下文變量由上下文索引ctxldx識別。
更詳細地,圖3A是示出每個識別用于I片的上下文變量context [mb_type_i]的 上下文索引到語法元素Mb—TypeJ的典型分配的圖表。如圖所示,3至10的八個上下文變 量被分配到語法元素Mb_Type_I 。 圖3B是示出每個識別用于P片的上下文變量context [mb_type_p]的上下文索引 到語法元素Mb_Type_P和語法元素SubMb_Type_P的典型分配的圖表。如圖所示,14至20 的七個上下文變量被分配到語法元素Mb—Type—P,然而21至23的隨后三個上下文變量被分 配到語法元素SubMb_Type_P。 圖3C是示出每個識別用于B片的上下文變量context [mb_type_b]的上下文索引 到語法元素Mb_Type_B和語法元素SubMb_Type_B的典型分配的圖表。如圖所示,27至35 的九個上下文變量被分配到語法元素Mb—Type—B,然而36至39的隨后四個上下文變量被分 配到語法元素SubMb_Type_B。 圖4至8是多個長度可變代碼表,每個示出了語法元素和CABAC解碼處理中的Bin 數(shù)據(jù)之間的關(guān)系,該語法元素可以是mb_type或sub_mb_type。更詳細地,圖4是長度可變 代碼表,示出了 Mb_Type_I的語法元素和Bin數(shù)據(jù)之間的關(guān)系,該Mb_Type_I是I片的mb_ type。圖5是長度可變代碼表,示出了 Mb_Type_P的語法元素和Bin數(shù)據(jù)之間的關(guān)系,該Mb— Type_P是P片的mb_type。圖6是長度可變代碼表,示出了 Mb_Type_B的語法元素和Bin 數(shù)據(jù)之間的關(guān)系,該Mb_Type_B是B片的mb_type。圖7是長度可變代碼表,示出了 SubMb_ Type_P的語法元素和Bin數(shù)據(jù)之間的關(guān)系,該SubMb_Type_P是P片的sub_mb_type。圖 8是長度可變代碼表,示出了 SubMb_Type_B的語法元素和Bin數(shù)據(jù)之間的關(guān)系,該SubMb_ Type_B是B片的sub_mb_type。 多值轉(zhuǎn)換部分24參考圖4至8的長度可變代碼表,以便生成關(guān)于作為Bin解碼處 理的結(jié)果是否已經(jīng)獲得用于語法元素的最后的Bin數(shù)據(jù)比特。如果確定的結(jié)果沒有表示已經(jīng)獲得用于語法元素的結(jié)束的Bin數(shù)據(jù),那么重復(fù)二進制算術(shù)編碼_解碼處理部分21執(zhí)行
的Bin解碼處理以生成Bin數(shù)據(jù),直到已經(jīng)生成關(guān)于語法元素的結(jié)束的Bin數(shù)據(jù)。當(dāng)已經(jīng)獲
得關(guān)于語法元素的結(jié)束的Bin數(shù)據(jù)時,多值轉(zhuǎn)換部分24參考圖4至8的長度可變代碼表,
以便輸出語法元素的多值信號。 CABAC解碼器的典型硬件構(gòu)造 圖9是方框圖,示出了根據(jù)本發(fā)明實施例的CABAC解碼器20的典型硬件構(gòu)造。根據(jù)本發(fā)明的實施例,如圖所示,CABAC解碼器20設(shè)計為信息處理設(shè)備,該信息處理設(shè)備配置成包括用作核心部分(core section)的CPU 200和解碼協(xié)處理器300。假定該信息處理設(shè)備起CABAC解碼器20的作用,在解碼器20中,CPU 200向解碼協(xié)處理器300發(fā)出用于實施CABAC解碼處理的協(xié)處理器指令。更詳細地,信息處理設(shè)備采用存儲器110、指令高速緩存120、數(shù)據(jù)高速緩存130、DMA(直接存儲器存取)控制器140、總線109、前述的CPU 200和在前引用的解碼協(xié)處理器300。 存儲器110是用于存儲將由CPU 200和解碼協(xié)處理器300執(zhí)行的程序的主存儲器。存儲器110還用于存儲諸如將在程序的執(zhí)行中被處理的數(shù)據(jù)的信息。指令高速緩存120是用于臨時存儲在存儲器110中存儲的程序的指令序列(instruction sequence)的單級(single-level)高速緩存。數(shù)據(jù)高速緩存130是用于臨時存儲在存儲器110中存儲的數(shù)據(jù)的單級高速緩存。DMA控制器140是用于實施把存儲在存儲器110中的數(shù)據(jù)傳輸?shù)浇獯a協(xié)處理器300或反之而不用通過CPU 200移動數(shù)據(jù)的DMA(直接存儲器存取)傳輸?shù)目刂撇考?。總線109是用于將存儲器110、指令高速緩存120、數(shù)據(jù)高速緩存130和DMA控制器140彼此連接的總線。CPU 200是用于執(zhí)行從指令高速緩存120讀取的指令的處理器。解碼協(xié)處理器300是用于執(zhí)行CPU 200提供的協(xié)處理器指令的協(xié)處理器。
DMA控制器140根據(jù)開始數(shù)據(jù)流的傳輸?shù)恼埱螅瑢碜源鎯ζ?10的數(shù)據(jù)流通過總線109傳輸?shù)浇獯a協(xié)處理器300。將傳輸?shù)臄?shù)據(jù)流在已經(jīng)預(yù)先設(shè)置在DMA控制器140中的讀取開始地址處開始。將傳輸?shù)臄?shù)據(jù)流的長度由也已經(jīng)預(yù)先設(shè)置在DMA控制器140中的讀取數(shù)據(jù)大小指定。在數(shù)據(jù)流的傳輸中,數(shù)據(jù)流順序地從存儲器110中讀出,并通過總線109和DMA控制器140傳輸?shù)浇獯a協(xié)處理器300。在解碼協(xié)處理器300實施的再正規(guī)化處理的過程中,在沿左方向移位(shift) codIOffset的操作期間,如下文所述,與移位量相等數(shù)目的比特組成的流被包括在codIOffset的LSB側(cè)。以此方式,數(shù)據(jù)流自動地從存儲器110讀出,并且實施CABAC解碼處理。 CPU 200采用指令解碼器210、指令控制部分220、處理流水線(pipeline) 230、處理器寄存器集合240和加載存儲單元250。指令解碼器210是用于對從指令高速緩存120讀取的指令進行解碼(或解釋)的部件。指令控制部分220是用于確定哪個指令將由CPU200執(zhí)行的部件。指令控制部分220具有PC(程序計數(shù)器)。在正常狀態(tài)下,程序計數(shù)器通過遞增一而更新,使得連續(xù)的指令由CPU 200執(zhí)行。然而,如果指令解碼器210檢測到作為指令解碼(解釋)處理的結(jié)果的分支指令,并且必須跳轉(zhuǎn)到特定指令而不是緊隨當(dāng)前解碼分支指令后的指令,則指令控制部分220將程序計數(shù)器更新到指向用作分支的目的地的特定指令的值。處理流水線230是流水線化處理器。為了簡單起見,僅僅一個流水線示出在圖9的方框圖中。然而,如果需要可設(shè)置多個流水線作為處理流水線230。處理器寄存器集合240包括GPR(ge證al-purpose register,通用寄存器)禾口 CCR(condition-code
11register,條件碼寄存器)。加載存儲單元250是用于將數(shù)據(jù)從存儲器110經(jīng)由數(shù)據(jù)高速緩存130加載到寄存器以及用于將數(shù)據(jù)從寄存器經(jīng)由數(shù)據(jù)高速緩存130存儲到存儲器110的部件。在此情況下,寄存器可以是在CPU 200中采用的處理器寄存器集合240,或下文將描述的作為在解碼協(xié)處理器300中采用的協(xié)處理器寄存器的一組協(xié)處理器寄存器。
協(xié)處理器指令隊列301和寫回(write-back)緩沖器309設(shè)置在CPU 200和解碼協(xié)處理器300之間。協(xié)處理器指令隊列301是用于將來自CPU 200的協(xié)處理器指令傳遞到解碼協(xié)處理器300的部件。寫回緩沖器309是存儲器,用于將來自解碼協(xié)處理器300的數(shù)據(jù)寫回到包括在CPU 200中采用的處理器寄存器集合240內(nèi)的通用寄存器GPR。
剛好在重置(reset)之后,根據(jù)指令控制部分220的程序計數(shù)器,CPU 200經(jīng)由指令高速緩存120從包括在存儲器110中的、作為從預(yù)先確定的存儲器地址開始的區(qū)域的區(qū)域順序地讀取指令。在CPU 200中,指令解碼器210對指令中每個單個指令進行解碼,并根據(jù)指令解碼的結(jié)果執(zhí)行控制,以便驅(qū)動在單個指令的執(zhí)行中期望的部件。如果經(jīng)解碼的指令是用于CPU 200的指令,那么驅(qū)動在CPU 200中采用的處理流水線230來操作。另一方面,如果經(jīng)解碼的指令是用于解碼協(xié)處理器300的指令,那么CPU 200經(jīng)由協(xié)處理器指令隊列301將該指令傳遞到解碼協(xié)處理器300。如果解碼協(xié)處理器300接收用于解碼協(xié)處理器300的指令,那么解碼協(xié)處理器300解釋該指令,并實施對于指令的執(zhí)行所必須的控制。根據(jù)指令控制部分220的程序計數(shù)器,CPU200然后讀取接下來的指令,并重復(fù)上述處理。
然而,如果指令解碼器210實施的指令解碼處理的結(jié)果表明該指令是分支指令時,那么需要跳轉(zhuǎn)到分支目的地的存儲器地址。在此情況下,在指令控制部分220的程序計數(shù)器中設(shè)置跳轉(zhuǎn)目的地的地址。然后,CPU 200順序地讀取來自包括在存儲器110中的區(qū)域的指令,該區(qū)域作為從分支目的地的存儲器地址開始的區(qū)域。分支指令可以是無條件分支指令或附條件分支指令。在無條件分支指令的情況下,需要無條件地跳轉(zhuǎn)到分支目的地的存儲器地址。另一方面,在附條件分支指令的情況下,根據(jù)BC(branch code,分支代碼)具有的值是O還是l,跳轉(zhuǎn)到分支目的地的存儲器地址。BC是CCR(condition code register,條件碼寄存器)中的比特。有可能提供如果BC是O則跳轉(zhuǎn)到分支目的地的存儲器地址的附條件分支指令,和有可能提供如果BC是1則跳轉(zhuǎn)到分支目的地的存儲器地址的附條件分支指令。CCR(條件碼寄存器)具有多個比特,每個比特都用作BC。例如,根據(jù)用于實施比較處理的指令的執(zhí)行結(jié)果,CCR的BC比特置位為1或重置為0。作為另一例子,根據(jù)用于實施邏輯處理的指令的執(zhí)行結(jié)果,CCR的另一 BC比特置位為1或重置為0。
圖10是方框圖,示出了根據(jù)本發(fā)明實施例的解碼協(xié)處理器300的典型構(gòu)造。如圖所示,解碼協(xié)處理器300采用了協(xié)處理器指令解碼器310、Bin解碼器320、上下文變量寄存器330、 Bin緩沖器340、 Bin計數(shù)器350和寫回數(shù)據(jù)發(fā)生器360。 協(xié)處理器指令解碼器310是用于對協(xié)處理器指令進行解碼(或解釋)的指令解碼
器,協(xié)處理器指令經(jīng)由協(xié)處理器指令隊列301提供給協(xié)處理器指令解碼器310。協(xié)處理器指
令解碼器310是本發(fā)明說明書所附的權(quán)利要求中描述的指令解碼器的典型例子。 Bin解碼器320是用于實施對從DMA控制器140接收的編碼數(shù)據(jù)進行解碼的Bin
解碼處理以便生成Bin數(shù)據(jù)的解碼器。Bin解碼器320是本發(fā)明說明書所附的權(quán)利要求中
描述的算術(shù)解碼執(zhí)行部分的典型例子。 上下文變量寄存器330是用于保存生成Bin數(shù)據(jù)的Bin解碼處理中期望的上下文變量的寄存器。上下文變量寄存器330具有128比特的典型長度,用于存儲16個上下文變量,每個上下文變量具有8比特的大小。根據(jù)協(xié)處理器加載指令或協(xié)處理器存儲指令而在上下文變量寄存器330和存儲器110之間交換上下文變量。更詳細地,在用于生成語法元素的CABAC解碼處理之前,根據(jù)協(xié)處理器加載指令,用于該語法元素的上下文變量被從存儲器110加載到上下文變量寄存器330(圖2中示出的流程圖的步驟S902)。然后,通過實施CABAC解碼處理生成整個語法元素。稍后,在用于生成下一個語法元素的CABAC解碼處理之前,根據(jù)協(xié)處理器存儲指令,作為在前CABAC解碼處理結(jié)果而獲得的語法元素的上下文變量被從上下文變量寄存器330存儲到存儲器IIO(圖2中示出的流程圖的步驟S904)。然后,根據(jù)協(xié)處理器加載指令,用于下一個語法元素的上下文變量被從存儲器110加載到上下文變量寄存器330 。以此方式,每個由期望的上下文變量組成的集合被順序地從存儲器110加載到上下文變量寄存器330,并用于CABAC解碼處理。 在CABAC解碼處理中,有可能通過使用由4比特組成的上下文數(shù)字(相對上下文索引)cidx來識別16個上下文變量中的一個。實際上,用于每個語法元素的上下文變量的數(shù)量已知為最多16個,如圖3的圖表中示出的cidx值的數(shù)量所示。也就是說,上下文數(shù)字cidx用于識別存儲在上下文變量寄存器330中的16個上下文變量中的一個,并且能夠?qū)嵤┫鄳?yīng)于計算上下文索引ctxldx的處理。因而,也能夠簡化Bin解碼器320。另外,代替訪問用于存儲所有的上下文變量的大型SRAM,通過訪問具有更小尺寸的數(shù)據(jù)高速緩存130,能夠?qū)嵤〣in解碼處理。因而,能夠以小規(guī)模電路實現(xiàn)CABAC解碼器20。應(yīng)注意,如上所示,假定上下文變量寄存器330的每8比特被分配給一個上下文變量。因為上下文變量被實現(xiàn)為7比特,因而上下文變量寄存器330可以被配置為具有112比特。 還值得注意的是,根據(jù)協(xié)處理器加載指令,上下文變量被從存儲器110加載到上下文變量寄存器330,并且上下文變量以此方式布置在上下文變量寄存器330中,使得由上下文索引ctxldx識別的每個上下文變量相應(yīng)于圖3的圖表中示出的上下文數(shù)字cidx的值。另外,執(zhí)行協(xié)處理器存儲指令,以將布置在上下文變量寄存器330中的上下文變量傳輸?shù)綇拇鎯ζ?10中選擇的與用于最初存儲該上下文變量的位置相同的位置。
用符號BINBUF表示的Bin緩沖器340是用于保存Bin數(shù)據(jù)的歷史的緩沖器,該Bin數(shù)據(jù)作為Bin解碼器320實施的Bin解碼處理的結(jié)果而獲得。Bin緩沖器340是典型的至少由7比特組成的移位寄存器。因而,Bin緩沖器340能夠用于最多同時保存七份Bin數(shù)據(jù)(或7Bin數(shù)據(jù)比特)。Bin緩沖器340是本發(fā)明說明書所附的權(quán)利要求中描述的歷史保存部分的典型例子。 用符號BINCNT表示的Bin計數(shù)器350是用于對Bin解碼器320解碼的Bin數(shù)據(jù)比特的數(shù)量進行計數(shù)的計數(shù)器。當(dāng)在CABAC解碼處理中根據(jù)Bin數(shù)據(jù)生成語法元素的頭部時,Bin解碼器320被清零以設(shè)置其內(nèi)容為0。因而,在用于生成語法元素的Bin解碼處理的處理結(jié)束之后,可以從Bin計數(shù)器350獲得Bin數(shù)據(jù)比特串的長度作為保存在Bin緩沖器340中的Bin數(shù)據(jù)比特的數(shù)量。 寫回數(shù)據(jù)發(fā)生器360是用于通過參考Bin數(shù)據(jù)的值,實施對存儲在Bin緩沖器340中的Bin數(shù)據(jù)的加工(fabrication)處理的部件。加工處理的典型例子是以比特為單位取出(fetch)Bin數(shù)據(jù)的處理。作為加工處理的結(jié)果獲得的數(shù)據(jù)經(jīng)由寫回緩沖器309被傳輸?shù)紺PU 200中的通用寄存器GPR或條件代碼寄存器CCR。除了簡單的數(shù)據(jù)加工處理之外,寫回數(shù)據(jù)發(fā)生器360還具有用于實施匹配處理的功能。匹配處理功能是如下功能指定將與保存在Bin緩沖器340中的Bin數(shù)據(jù)的歷史進行比較的多個比特模式(pattern),以及在Bin數(shù)據(jù)的歷史與比特模式中的一個匹配的條件下生成1或在Bin數(shù)據(jù)的歷史與比特模式中的任一個都不匹配的條件下生成O。用于匹配處理中的條件每個都稱為匹配條件。應(yīng)注意,寫回數(shù)據(jù)發(fā)生器360是本發(fā)明說明書所附的權(quán)利要求中描述的匹配處理部分的典型例子。 2 :協(xié)處理器指令
指令集合的概述 圖11是根據(jù)本發(fā)明實施例的用于CABAC解碼處理的典型指令集合的圖表。助記符(mnemonic)列中包含在括號[]內(nèi)的部分表示能夠從指令中省略的可選操作數(shù)。符號cpr表示協(xié)處理器寄存器中的任意一個,協(xié)處理器寄存器除了上下文變量寄存器330之外,還包括Bin緩沖器340和Bin計數(shù)器350。 cbc_dec_bin指令、cbc_dec_bin_cc指令禾口 cbc_dec_term_cc指令中的任——個是用于通過使用Bin解碼器320實施基于CABAC技術(shù)的Bin解碼處理以生成Bin數(shù)據(jù)的Bin解碼指令。在cbC_dec_bin指令的執(zhí)行中,被指定為指令中的操作數(shù)的上下文數(shù)字cidx的立即值(immediate value)被加到通用寄存器GPR[rs]的內(nèi)容,以得到加和(cidx+GPR[rs]),該通用寄存器GPR[rs]由也在指令中指定的rs操作數(shù)值指示。通用寄存器GPR[rs]是由rs操作數(shù)指示的寄存器編號識別的通用寄存器GPR。然后該加和(cidx+GPR[rs])用于指定已經(jīng)預(yù)先存儲在上下文變量寄存器330中的上下文變量CTX中的一個。由加和(cidx+GPR[rs])識別的上下文變量CTX用符號CTX(cidx+GPR[rs])表示。由加和(cidx+GPR[rs])識別的上下文變量CTX(cidx+GPR[rs])被用在生成Bin數(shù)據(jù)比特的Bin解碼處理中,該Bin數(shù)據(jù)比特然后被附加地(additionally)存儲在Bin緩沖器340中。每次Bin數(shù)據(jù)比特被附加地存儲在Bin緩沖器340中,Bin計數(shù)器350的內(nèi)容遞增1。在Cbc_dec_bin指令中可以指定可選的CEXO操作數(shù)值。包括可選的CEXO操作數(shù)值的cbC_dec_bin指令僅當(dāng)剛好在前生成的Bin數(shù)據(jù)是0時才被執(zhí)行。同樣,可以在cbc_dec_bin指令中指定可選的CEX1操作數(shù)值。包括可選的CEX1操作數(shù)值的Cbc_dec_bin指令僅當(dāng)剛好在前生成的Bin數(shù)據(jù)是1時才執(zhí)行。另外,可以在cbC_dec_bin指令中指定可選的CINCO操作數(shù)值。如果剛好在前生成的Bin數(shù)據(jù)是0時,執(zhí)行包括可選的CINCO操作數(shù)值的cbc_dec_bin指令,以通過使用上下文變量CTX(cidx+GPR[rs]+l)實施Bin解碼處理。同樣,可以在cbC_dec_bin指令中指定可選的CINC1操作數(shù)值。如果剛好在前生成的Bin數(shù)據(jù)是1時,執(zhí)行包括可選的CINC1操作數(shù)值的Cbc_dec_bin指令,以通過使用上下文變量CTX(cidx+GPR[rs]+l)實施Bin解碼處理。另外,可以在cbc_dec_bin指令中指定可選的CLR操作數(shù)值。當(dāng)執(zhí)行包括可選的CLR操作數(shù)值的Cbc_dec_bin指令以便實施Bin解碼處理時,在Bin解碼處理之前對Bin緩沖器340和Bin計數(shù)器350清零。也就是說,當(dāng)執(zhí)行包括可選的CLR操作數(shù)值的Cbc_dec_bin指令以便實施Bin解碼處理時,在Bin解碼處理之前,清空Bin緩沖器340,并且Bin計數(shù)器350的內(nèi)容被設(shè)置為0。隨著稍后生成一份(a piece of) Bin數(shù)據(jù),因而Bin計數(shù)器350的內(nèi)容通過遞增1而從0到1 。
執(zhí)行cbc_dec_bin_CC指令,以便將作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)存儲在條件代碼寄存器CCR的特定比特中。CbC_dec_bin_CC指令中指定的cc操作數(shù)用于指定條件代碼寄存器CCR的特定比特。Cbc_dec_bin_CC指令的其它操作數(shù)與在cbc_dec_bin指令中指定的操作數(shù)一樣。 執(zhí)行cbc_dec_term_cc指令,以通過將pStateldx設(shè)置為63且將valMPS設(shè)置為0,實施生成Bin數(shù)據(jù)的Bin解碼處理。作為CbC_dec_term_CC指令的執(zhí)行結(jié)果獲得的Bin數(shù)據(jù)比特被附加地存儲在Bin緩沖器340中。每次Bin數(shù)據(jù)比特被附加地存儲在Bin緩沖器340中,Bin計數(shù)器350的內(nèi)容遞增1。另外,作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)被存儲在條件代碼寄存器CCR的特定比特中。在CbC_dec_term_CC指令中指定的cc操作數(shù)用于指定條件代碼寄存器CCR的特定比特。 cbcjiiatch指令是將被執(zhí)行用于驅(qū)動寫回數(shù)據(jù)發(fā)生器360實施匹配處理的Bin匹配指令。更詳細地,執(zhí)行cbcjiiatch指令,以實施把指令中指定的每個特定操作數(shù)與用作比較對象的Bin緩沖器340的四個LSB側(cè)比特進行比較的匹配處理。Bin緩沖器340的四個LSB側(cè)比特表示四個最近的(recent)Bin數(shù)據(jù)比特。在下面的描述中,最近生成的Bin數(shù)據(jù)比特也稱為第一最近Bin數(shù)據(jù)比特,第一最近Bin數(shù)據(jù)比特的在前緊鄰的最近Bin數(shù)據(jù)比特稱為第二最近Bin數(shù)據(jù)比特,第二最近Bin數(shù)據(jù)比特的在前緊鄰的最近Bin數(shù)據(jù)比特稱為第三最近Bin數(shù)據(jù)比特等。如果一組匹配模式 一 每一個列出為cbcjiiatch指令的特定操作數(shù)中的一個 一包括與Bin緩沖器340的四個LSB側(cè)比特相同的模式,那么通過cbc_match指令的cc操作數(shù)指定的CCR(條件碼寄存器)比特被設(shè)置為1。另一方面,如果一組匹配模式 一 每一個列出為cbcjiiatch指令的特定操作數(shù)中的一個 一 不包括與Bin緩沖器340的四個LSB側(cè)比特相同的模式,那么通過cbcjiiatch指令的cc操作數(shù)指定的CCR(條件碼寄存器)比特被設(shè)置為O。 在cbcjiiatch指令的助記符中,符號ptnO、ptnl等是匹配模式,每一個列出為cbc—match指令的特定操作數(shù)中的一個。例如,匹配模式ptn0、ptnl、ptn2等中的每一個是四個連續(xù)字符,每一個能夠是三個不同字符,即0、1和x中的一個。構(gòu)成匹配模式的四個連續(xù)字符中的第一個、第二個、第三個和第四個將分別與四個最近Bin數(shù)據(jù)比特中的第一個、第二個、第三個和第四個進行比較。更具體地,作為例子,讓匹配模式ptn0、ptnl、ptn2等分別為0001、 xxxl、 xlOx等。如果四個最近Bin數(shù)據(jù)比特中的第一個、第二個、第三個和第四個分別為0、0、0和l,那么我們說該OOOl的匹配模式ptnO與四個最近Bin數(shù)據(jù)比特匹配(或與之相同)。 附帶地,匹配模式中的特征x代表不關(guān)注的比特。也就是說,匹配模式中的特征x代表0和1比特這兩者。因而,xxxl的匹配模式代表每個包括為1的第一比特1而不管其余比特具有的值的所有匹配模式。同樣,xlOx的匹配模式ptn2代表每個包括為1的第二比特和為0的第三比特而不管其余比特具有的值的所有匹配模式。 匹配模式集合(ptn0,ptnl,ptn3,ptn4卜-如上所述每個作為cbc_match指令的特定操作數(shù)中的一個列出 一是形成16比特位圖的立即值(immediate value)的集合,。典型地,在位圖(bit m即)的比特處設(shè)置的值1(或0)在每個匹配模式的相應(yīng)比特處設(shè)置,作為將與四個最近的Bin數(shù)據(jù)比特的相應(yīng)比特的值進行比較的值。 cbc—tblidx指令是多值轉(zhuǎn)換表索引指令,用于加工存儲在Bin緩沖器340中的Bin數(shù)據(jù)的值,以便將該Bin數(shù)據(jù)與存儲在代碼表中的Bin數(shù)據(jù)對齊(align) 。 Bin數(shù)據(jù)由代碼表定義為具有可變長度的數(shù)據(jù),并且是每個都能作為Bin解碼處理的唯一結(jié)果獲得的長度可變代碼。因而,如果預(yù)先準備通過使用代碼表的索引(index)創(chuàng)建的代碼表,那么多值轉(zhuǎn)換處理的執(zhí)行變得方便。代碼表的索引是用于實施左移(left-shifting)操作以把最長代碼的MSB (Most Significant Bit,最高有效位)與每個可變長度代碼的MSB對齊的比特計數(shù)。cbC_tblidx指令包括指定作為CABAC解碼處理的結(jié)果獲得的語法元素的最大比特計數(shù)的w操作數(shù)。執(zhí)行Cbc_tblidx指令以將Bin緩沖器340的內(nèi)容沿左方向移位(BINCNTi)個比特,其中符號BINCNT表示代碼表的索引。這樣,加工Bin緩沖器340的內(nèi)容,使得與語法元素的頭部(head)對應(yīng)的Bin數(shù)據(jù)比特變?yōu)閣個比特的值的MSB。另外,Cbc_tblidx指令還包括指定寄存器編號的另一 rd操作數(shù)。根據(jù)Cbc_tblidx指令,把w個比特的數(shù)據(jù)存儲在通用寄存器GPR[rd]中,該通用寄存器GPR[rd]由指定為另一操作數(shù)的寄存器編號rd指示。 cbc—MbTypel矛旨々、cbc—MbTypeP矛旨々、cbc—MbTypeB矛旨々、cbc_SubMbTypeP矛旨々和cbC_SUbMbTypeB指令中的每一個是多值轉(zhuǎn)換指令。這些多值轉(zhuǎn)換指令中的每一個被執(zhí)行來根據(jù)圖4至8的圖表中示出的H. 264規(guī)范中規(guī)定的解碼過程,從存儲在Bin緩沖器340中的Bin數(shù)據(jù)和Bin計數(shù)器350的內(nèi)容計算語法元素的多值信號。計算出的多值信號被存儲在通用寄存器GPR[rd]中,該通用寄存器GPR[rd]由被指定為每個指令中的rd操作數(shù)的寄存器編號rd指示。 目前為止解釋的每個協(xié)處理器指令經(jīng)由協(xié)處理器指令隊列301從CPU200傳遞到解碼協(xié)處理器300,并由解碼協(xié)處理器300執(zhí)行。除了協(xié)處理器指令之外,處理器指令由CPU200執(zhí)行,用于實施CABAC解碼處理。如下將解釋由CPU 200執(zhí)行的處理器指令。
cbcjdq指令是加載指令,用于將數(shù)據(jù)從存儲器110加載到解碼協(xié)處理器300中采用的協(xié)處理器寄存器。執(zhí)行cbc—ldq指令以便從存儲器110中的地址讀出具有128比特大小的數(shù)據(jù),并將數(shù)據(jù)存儲在由指令中指定的操作數(shù)cpr指示的協(xié)處理器寄存器中。
cbc—stq指令是存儲指令,用于將數(shù)據(jù)從解碼協(xié)處理器300中采用的協(xié)處理器寄存器存儲到存儲器110。執(zhí)行Cbc_stq指令以便從由指令中指定的操作數(shù)cpr指示的協(xié)處理器寄存器中讀取具有128比特大小的數(shù)據(jù),并將數(shù)據(jù)存儲在存儲器110中的地址處。
br指令是附條件分支指令,用于根據(jù)分支條件代碼附條件地跳轉(zhuǎn)到分支目的地的地址。執(zhí)行br指令,以便如果由指令的cc操作數(shù)指定的CCR(條件碼寄存器)比特的值等于指令的操作數(shù)v則附條件地跳轉(zhuǎn)到地址,該地址由用于指示存儲器110中的地址的指令的操作數(shù)addr指定。由br指令的操作數(shù)addr指定的用于指示存儲器110中的地址的地址是上述的分支目的地的地址。 jpr指令是無條件分支指令,用于無條件地跳轉(zhuǎn)到分支目的地的地址,而不管分支條件代碼。執(zhí)行jpr指令,以便無條件地跳轉(zhuǎn)到地址,而不管CCR(條件碼寄存器)的內(nèi)容如何,該地址由指令的操作數(shù)addr指定,用于指示存儲器110中的地址。由指令的操作數(shù)addr指定的用于指示存儲器110中的地址的地址是上述分支目的地的地址。
協(xié)處理器指令的典型指令格式 圖12A至12F是多個圖表,每個圖表示出了被執(zhí)行以實施本發(fā)明實施例中的CABAC解碼處理的協(xié)處理器指令的典型格式。更具體地,圖12A是示出cbc—dec—bin指令的典型格式的圖表,而圖12B是示出cbc—decj3in—cc指令的典型格式的圖表。圖12C是示出cbc_dec—term—cc指令的典型格式的圖表,而圖12D是示出cbcjiiatch指令的典型格式的圖表。
16圖12E是示出cbc—tblidx指令的典型格式的圖表,而圖12F是示出cbc—MbTypel指令、cbc—MbTypeP指令、cbc—MbTypeB指令、cbc—SubMbTypeP指令和cbc—SubMbTypeB指令中的每一個指令的典型格式的圖表。 每個協(xié)處理器指令的指令格式的第31至26比特分配給COP,這對于所有協(xié)處理器指令是一樣的。第5至0比特分配給用于指示協(xié)處理器指令的功能的代碼。第25至21比特分配給rs操作數(shù),而第15至11比特分配給rd操作數(shù)。rs和rd操作數(shù)中的每一個都是分配給通用寄存器GPR的寄存器編號。在第24至21比特處設(shè)置的w操作數(shù)指定用作在前描述的多值轉(zhuǎn)換表索引指令的對象的比特數(shù)目。在第18至16比特處設(shè)置的cc操作數(shù)表示條件代碼寄存器CCR中比特的位置。在第14至11比特處設(shè)置的cidx操作數(shù)表示上下文數(shù)字。在第6比特處設(shè)置的CLR操作數(shù)值是用作指示在Bin解碼處理之前是否對Bin緩沖器340和Bin計數(shù)器350進行清零的標記的可選操作數(shù)。 如圖12D的圖表所示,在第24至19比特以及第15至6比特處設(shè)置的十六個PXXXX字段用于設(shè)置上述的四個匹配模式。符號XXXX表示匹配模式的比特。如上所述,如果XXXX值的任何一個匹配Bin緩沖器340的四個最近Bin數(shù)據(jù)比特(或四個LSB側(cè)比特),那么在由第18至16比特處設(shè)置的cc字段指定的CCR(條件碼寄存器)比特處設(shè)置1。另一方面,如果任何XXXX值都不匹配Bin緩沖器340的四個最近Bin數(shù)據(jù)比特(或四個LSB側(cè)比特),那么在由第18至16比特處設(shè)置的cc字段指定的CCR(條件碼寄存器)比特處設(shè)置0。由符號XXXX表示的比特數(shù)是4,這是因為將分別與由符號XXXX表示的比特進行比較的最近Bin數(shù)據(jù)比特的數(shù)量假定為4。因而能夠使用由第24至19比特以及第15至6比特組成的16個比特,以指定四個匹配模式,每個匹配模式由具有值0和1的4個比特組成。16個比特形成由16個比特組成的位圖。換句話說,16比特位圖由四個匹配模式組成,每個匹配模式設(shè)置匹配條件。四個匹配條件中的每一個是將與四個最近Bin數(shù)據(jù)比特進行比較的候選者。因而,通過在位圖的多個比特處同時設(shè)置值l,可以定義每個設(shè)置匹配條件的一組候選者。 cbcjiiatch指令是作為比較指令執(zhí)行的Bin匹配指令,該比較指令具有確定四個最近Bin數(shù)據(jù)比特是否已經(jīng)被包括在位圖中的功能,該位圖用作每個設(shè)置匹配條件的候選者的集合。確定四個最近Bin數(shù)據(jù)比特是否已經(jīng)被包括在位圖中的功能通過將四個最近Bin數(shù)據(jù)比特與位圖的比特進行比較而實施。通過Bin匹配指令實施的比較的結(jié)果被設(shè)置在由作為分支條件代碼BC的指令的cc字段指定的CCR(條件碼寄存器)比特處,該分支條件代碼BC稍后由用作條件分支指令的br指令參考(reference)。因而,取決于四個最近Bin數(shù)據(jù)比特是否被包括在用作每個設(shè)置匹配條件的候選者集合的位圖中,程序的流程在附條件分支指令的執(zhí)行處可能產(chǎn)生跳轉(zhuǎn)。Bin匹配指令包括在第18至16比特處設(shè)置的cc字段。cc字段表明CCR(條件碼寄存器)比特,在該CCR比特處,Bin匹配指令實施的比較的結(jié)果被設(shè)置為分支條件代碼BC。典型地,條件代碼寄存器CCR包括8個比特。cc字段的3個比特用于指定條件代碼寄存器CCR的八個比特中的特定的一個比特。然后條件代碼寄存器CCR的該特定比特用于將Bin匹配指令實施的比較結(jié)果存儲為分支條件代碼BC。因而,可以定義與構(gòu)成條件代碼寄存器CCR的比特一樣多的每個由用于四個不同匹配條件的四個匹配模式組成的集合。因而,對于Bin緩沖器340的某狀態(tài),能夠執(zhí)行多個不同的Bin匹配指令。因而,即使復(fù)雜的分支處理也可以通過使用非常少的附條件分支指令實施。
在第10比特處設(shè)置的CINCBIN字段、在第9比特處設(shè)置的CINCEN字段、在第8比特處設(shè)置的CEXBIN字段和在第7比特處設(shè)置的CEXEN字段中的每一個是用于可選地使用Bin數(shù)據(jù)作為執(zhí)行條件代碼EC的可選字段,該Bin數(shù)據(jù)是作為通過在前緊鄰的Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果而獲得的。用作Bin解碼指令中的附條件遞增標記的CINCEN字段是用于使能附條件遞增功能的可選字段,該附條件遞增功能用于在Bin解碼指令的執(zhí)行中附條件地將在cidx字段中設(shè)置的值增加1。也就是說,僅當(dāng)CINCEN字段設(shè)置成1時,附條件遞增功能被置于被使能(being enabled)的狀態(tài)。另一方面,CINCBIN字段是用于確定附條件遞增功能的執(zhí)行的條件的可選字段。更詳細地,通過將附條件遞增標記CINCEN設(shè)置為1而將附條件遞增功能置于被使能的狀態(tài),如果CINCBIN字段等于執(zhí)行條件代碼EC,那么通過執(zhí)行附條件遞增功能在Bin解碼指令的執(zhí)行中實施Bin解碼處理,以生成Bin數(shù)據(jù),即通過使用下述上下文變量而實施Bin解碼處理,該上下文變量由作為把cidx字段中設(shè)置的值遞增1的結(jié)果的數(shù)字指示。另一方面,即使通過將附條件遞增標記CINCEN設(shè)置為1而將附條件遞增功能置于被使能的狀態(tài),如果CINCBIN字段不等于執(zhí)行條件代碼EC,那么在不執(zhí)行附條件遞增功能的情況下,在Bin解碼指令的執(zhí)行中實施Bin解碼處理以生成Bin數(shù)據(jù),通過使用由依原樣的(as it is)cidx字段指示的上下文變量而實施Bin解碼處理。 同樣地,用作Bin解碼指令中附條件遞增標記的CEXEN字段是用于使能附條件執(zhí)行功能的可選字段,該附條件執(zhí)行功能用于通過Bin解碼指令的執(zhí)行附條件地實施Bin解碼處理。也就是說,僅當(dāng)CEXEN字段設(shè)置成l時,附條件執(zhí)行功能置于使能的狀態(tài)。另一方面,CEXBIN字段是用于確定附條件執(zhí)行功能的執(zhí)行的條件的可選字段。更詳細地,如下附條件地實施附條件執(zhí)行功能。通過將附條件執(zhí)行標記CEXEN設(shè)置為l而將附條件執(zhí)行功能置于被使能的狀態(tài),如果CEXBIN字段等于執(zhí)行條件代碼EC,那么在Bin解碼指令的執(zhí)行中實施Bin解碼處理,以生成Bin數(shù)據(jù)。另一方面,即使通過將附條件執(zhí)行標記CEXEN設(shè)置為1而將附條件執(zhí)行功能置于被使能的狀態(tài),如果CEXBIN字段不等于執(zhí)行條件代碼EC,那么也不實施生成Bin數(shù)據(jù)的Bin解碼處理,即實際上不實施Bin解碼指令。另外,在此情況下,不更新各種寄存器,從而給出與NOP指令相同的效果。 如果用作附條件遞增標記的CINCEN字段和用作附條件執(zhí)行標記的CEXEN字段這兩者都設(shè)置為0,那么在不改變cidx字段的值的情況下通過使用由cidx字段指示的上下文變量無條件地實施Bin解碼處理以生成Bin數(shù)據(jù)。 CEXEN和CEXBIN字段用于指定用單個操作數(shù)值代表的一對。更具體地,為了將CEXEN字段設(shè)置為1而將CEXBIN字段設(shè)置為0, CEXO被指定為圖11的表中所示的助記符中的可選操作數(shù)的值。另一方面,為了將CEXEN字段設(shè)置為l且也將CEXBIN字段設(shè)置為1,CEX1被指定為圖11的表中所示的助記符中的可選操作數(shù)的值。 同樣,CINCEN和CINCBIN字段也用做由單個操作數(shù)值代表的一對。為了將CINCEN字段設(shè)置為1而將CINCBIN字段設(shè)置為0, CINCO被指定為圖11的表中所示的助記符中的另一可選操作數(shù)的值。另一方面,為了將CINCEN字段設(shè)置為l且也將CINCBIN字段設(shè)置為1, CINC1被指定為圖11的表中所示的助記符中的該另一可選操作數(shù)的值。
Bin解碼器320的典型構(gòu)造 圖13和14中的每一個是方框圖,示出了根據(jù)本發(fā)明實施例的Bin解碼器320的典型構(gòu)造。 在對一個符號進行解碼的處理中,包括概率狀態(tài)指標pStateldx和valMPS的上下 文變量CTX被從上下文變量寄存器330中讀出。另外,在內(nèi)部狀態(tài)變量codIRange的第7和 6比特處設(shè)置的值被設(shè)置在qCodlRangeldx中。然后,把由符號rangeTabLPS[pStateldx] [qCodlRangeldx]表示的參考值設(shè)置在codIRangeLPS中,而作為從codIRange中減去 codIRangeLPS的結(jié)果獲得的值被設(shè)置在codIRangeMPS中。 這時,如果codIOffset等于或大于codIRangeMPS,那么解碼結(jié)果是LPS,作為從 codIOffset中減去codIRangeMPS的結(jié)果獲得的值用作更新的codIOffset, codIRangeLPS 用作更新的codIRange,并且計算上下文變量的更新值。 另 一 方面,如果codIOffset小于codIRangeMPS,那么解碼結(jié)果是MPS, codIRangeMPS用作更新的codIRange,并且計算上下文變量的更新值。
然后,內(nèi)部狀態(tài)變量codIRange和codIOffset每 一 個被作為再正規(guī)化 (renormalization)處理的巨標。 如果解碼結(jié)果是LPS,那么valMPS的反轉(zhuǎn)值(inverted)被輸出為解碼數(shù)據(jù)。另 外,概率狀態(tài)指標pStateldx的下一狀態(tài)從轉(zhuǎn)變表的transIdxLPS[pStateldx]中找到。此 時,如果transIdxLPS[pStateldx]是0,那么反轉(zhuǎn)valMPS。然后,通過使用找到的概率狀態(tài) 指標pStateldx的下一狀態(tài)和valMPS或經(jīng)反轉(zhuǎn)的valMPS而計算上下文變量的更新值。
另一方面,如果解碼結(jié)果是MPS,那么valMPS被輸出為作為解碼結(jié)果獲得的數(shù)據(jù)。 另外,概率狀態(tài)指標pStateldx的下一狀態(tài)從轉(zhuǎn)變表的transIdxMPS[pStateldx]中找到, 且通過使用找到的概率狀態(tài)指標pStateldx的下一狀態(tài)和valMPS計算上下文變量的更新 值。 如果codIRange小于0x0100 ( = 256),那么再正規(guī)化處理部分329逐個比特地沿 左方向?qū)odIRange和codIOffset進行移位,直到codIRange變得等于或大于0x0100,并 且每次把codIOffset沿左方向移位1比特,將編碼數(shù)據(jù)流的1比特插入到codeIOffset的 LSB中。 在把Bin數(shù)據(jù)沿左方向移位1比特后,把作為Bin解碼處理的結(jié)果獲得的Bin數(shù) 據(jù)比特插入到存儲在Bin緩沖器340中的Bin數(shù)據(jù)的LSB中。此時,把Bin計數(shù)器350的 內(nèi)容遞增1。 如果需要,把作為由協(xié)處理器指令解碼器310實施的Bin解碼操作的結(jié)果獲得的 信號鎖存在流水線寄存器中。例如,cbc_dec_term_cc_flag是用于指示cbc_dec_term_cc 指令已經(jīng)被解碼的標記。作為選擇,還可以使用CLR、 CEXEN、 CEXBIN、 CINCEN、 CINCBIN和 cidx操作數(shù)值。 作為通過在前緊鄰的Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的 Bin數(shù)據(jù)也被保存在執(zhí)行條件代碼(EC)保存部分323中作為執(zhí)行條件代碼。在cbc_dec_ bin指令或Cbc_dec_bin_CC指令的情況下,如果在該Bin解碼指令中指定的CEXEN操作數(shù) 值是0,那么執(zhí)行確定部分321確定Bin解碼指令將被無條件地執(zhí)行,并將Bin有效信號置 于指示Bin解碼指令的有效情形的狀態(tài),但是另一方面,如果CEXEN操作數(shù)值是l,那么執(zhí)行 確定部分321將之前描述的附條件執(zhí)行功能置于被使能的狀態(tài)。在把附條件執(zhí)行功能置于 被使能的狀態(tài)的情況下,如果CEXBIN操作數(shù)值與保存在執(zhí)行條件代碼保存部分323中的執(zhí)行條件代碼EC匹配,那么確定Bin解碼指令將被執(zhí)行,并且Bin有效信號被置于指示Bin 解碼指令的有效信號情形的狀態(tài)。另一方面,如果CEXBIN操作數(shù)值不匹配保存在執(zhí)行條件 代碼保存部分323中的執(zhí)行條件代碼EC,那么確定不執(zhí)行Bin解碼指令,并且Bin有效信號 被置于指示Bin解碼指令的無效信號情形的狀態(tài)。應(yīng)注意執(zhí)行條件代碼保存部分323是本 發(fā)明說明書所附的權(quán)利要求中描述的執(zhí)行條件代碼保存部分的典型例子。
另外,在cbc_dec_bin指令或cbc_dec_bin_cc指令的情況下,如果在該Bin解碼 指令中指定的CINCEN操作數(shù)值是O,那么遞增確定部分322確定不增加被指定為Bin解碼 指令中的操作數(shù)的上下文數(shù)字cidx,另一方面,如果CINCEN操作數(shù)值是l,那么遞增確定部 分322將附條件遞增功能置于被使能的狀態(tài)。在附條件遞增功能置于被使能的狀態(tài)的情況 下,如果CINCBIN操作數(shù)值匹配保存在執(zhí)行條件代碼保存部分323中的執(zhí)行條件代碼EC, 那么遞增確定部分322確定將遞增(increment)被指定為Bin解碼指令中的操作數(shù)的上下 文數(shù)字cidx,但是另一方面,如果CINCBIN操作數(shù)值不匹配保存在執(zhí)行條件代碼保存部分 323中的執(zhí)行條件代碼EC,那么遞增確定部分322確定將不遞增被指定為Bin解碼指令中 的操作數(shù)的上下文數(shù)字cidx。如果遞增確定部分322確定將不遞增被指定為Bin解碼指 令中的操作數(shù)的上下文數(shù)字cidx,那么選擇器325將被指定為指令中的操作數(shù)的上下文數(shù) 字cidx選擇為依原樣的上下文數(shù)字,而選擇器326選擇由上下文數(shù)字cidx指示的上下文 變量CTX(cidx)。另一方面,如果遞增確定部分322確定將遞增被指定為Bin解碼指令中 的操作數(shù)的上下文數(shù)字cidx,那么加法器324將被指定為指令的操作數(shù)的上下文數(shù)字cidx 遞增l,并且將遞增后的上下文數(shù)字(cidx+1)輸出給選擇器325。然后,選擇器325選擇從 加法器324接收的遞增后的上下文數(shù)字(cidx+1),而選擇器326選擇由遞增的上下文數(shù)字 (cidx+1)指示的上下文變量CTX (cidx+1)。存儲在上下文變量寄存器330中的上下文變量 的數(shù)量假定為16個,該值相應(yīng)于0至15范圍中的cidx值。因而,當(dāng)加法器324遞增具有 值15的上下文數(shù)字cidx時,加法器324將為0的上下文數(shù)字cidx輸出為遞增后的上下文 數(shù)字cidx。 在cbc_dec_term_cc指令的情況下,選擇器327選擇整數(shù)63作為pStateldx。另 外,在CbC_dec_term_CC指令的情況下,即使Bin有效信號沒有被置于指示cbC_dec_term_ cc指令的有效情形的狀態(tài)中,邏輯積分電路328屏蔽(mask)上下文變量更新許可信號,使 得上下文變量不更新。 每個作為Bin解碼處理的結(jié)果獲得的Bin有效信號和移位量被提供給DMA控制器 140。如果Bin有效信號已經(jīng)被置于指示Bin解碼指令的有效情形的狀態(tài)中且移位量至少 是1時,作為Bin解碼處理結(jié)果獲得的Bin數(shù)據(jù)假定為已經(jīng)被消費(consume),并且DMA控 制器140更新其作為編碼數(shù)據(jù)的輸出。 作為Bin解碼處理的結(jié)果獲得的Bin有效信號和鎖存在流水線寄存器中的CLR操 作數(shù)值被提供給Bin計數(shù)器350。如果Bin有效信號已經(jīng)被置于指示Bin解碼指令的有效 情形的狀態(tài)中時,Bin計數(shù)器350的內(nèi)容遞增1。在此情況下,如果CLR操作數(shù)值指示意味 著Bin計數(shù)器350的內(nèi)容將被清零的激活(active)狀態(tài),那么把Bin計數(shù)器350的內(nèi)容設(shè) 置為1,該值意味著作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特是Bin數(shù)據(jù)的第一比特。
3:典型應(yīng)用
在I-片宏塊類型上的典型應(yīng)用
圖15是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成I-片宏塊類型的語法元素的CABAC解碼 處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。 每個普通節(jié)點內(nèi)的數(shù)字是用于識別上下文變量的上下文索引,該上下文變量被用 于在由該普通節(jié)點表示的狀態(tài)下實施的Bin解碼處理中。沿狀態(tài)轉(zhuǎn)變圖的向下方向出現(xiàn)狀 態(tài)轉(zhuǎn)變。 在每個普通節(jié)點處,由分配給普通節(jié)點的數(shù)字表示的上下文索引識別上下文變 量,該上下文變量被用于在由該普通節(jié)點表示的狀態(tài)下實施的Bin解碼處理中以生成Bin 數(shù)據(jù)比特??梢詮娜魏翁貏e節(jié)點到另一個通過分支連接到該特別節(jié)點的普通節(jié)點產(chǎn)生狀態(tài) 轉(zhuǎn)變。在由其它普通節(jié)點表示的狀態(tài)中,再次實施Bin解碼處理以生成另一 Bin數(shù)據(jù)比特。
標簽0或1被附加到將分支節(jié)點連接到分支目的地節(jié)點的分支,以用作將與Bin 數(shù)據(jù)比特的值進行比較的標簽,該Bin數(shù)據(jù)比特由在分支節(jié)點在前緊鄰的節(jié)點表示的狀態(tài) 中實施的Bin解碼處理產(chǎn)生。在此情況下,通過其附加標簽與Bin數(shù)據(jù)比特的值匹配的分 支,產(chǎn)生從分支節(jié)點到分支目的地節(jié)點的狀態(tài)轉(zhuǎn)變,該Bin數(shù)據(jù)比特作為在由分支節(jié)點在 前緊鄰的節(jié)點表示的狀態(tài)中實施的Bin解碼處理的結(jié)果而獲得。 另一方面,普通節(jié)點通過沒有附加標簽的分支連接到轉(zhuǎn)變目的地節(jié)點。沒有附加 標簽的分支表明典型地產(chǎn)生從普通節(jié)點到轉(zhuǎn)變目的地節(jié)點的狀態(tài)轉(zhuǎn)變,而不考慮作為在由 普通節(jié)點表示的狀態(tài)下實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特的值為何。
分支目的地節(jié)點或轉(zhuǎn)變目的地節(jié)點可以是結(jié)束(end)節(jié)點。在此情況下,在由結(jié) 束節(jié)點前面的節(jié)點表示的狀態(tài)下實施的Bin解碼處理中,已經(jīng)生成相應(yīng)于語法元素的最后 的Bin數(shù)據(jù)比特,由此完成CABAC解碼處理以生成整個語法元素。 在上文中通過參考圖15的狀態(tài)轉(zhuǎn)變圖中示出的狀態(tài)轉(zhuǎn)變(該狀態(tài)轉(zhuǎn)變作為在用 于生成I-片宏塊類型的語法元素的CABAC解碼處理中發(fā)生的狀態(tài)轉(zhuǎn)變)而描述的CABAC 解碼處理中,由上下文索引3、4或5識別的上下文變量最初用于生成Bin數(shù)據(jù)比特,作為第 一 Bin解碼處理的結(jié)果。然后,該第一解碼處理的結(jié)果用于確定從第一 Bin解碼處理之后 的附條件分支指令被執(zhí)行的狀態(tài)開始的狀態(tài)轉(zhuǎn)變。 圖16示出了由屬于根據(jù)本發(fā)明實施例的指令集合的指令組成的典型程序,以用 作將被執(zhí)行來實施用于生成I-片宏塊類型的語法元素的CABAC解碼處理的程序。
執(zhí)行圖16所示的程序的第1行的加載指令,以便將上下文變量從存儲器110加載 到上下文變量寄存器330。執(zhí)行程序的第2行的Bin解碼指令,以便通過使用由上下文索引 3、4或5識別的上下文變量實施Bin解碼處理以生成Bin數(shù)據(jù)比特。因為在第2行的Bin 解碼指令中指定了 CLR操作數(shù)值,因而在Bin解碼指令的執(zhí)行之前,對存儲在Bin緩沖器 340中的數(shù)據(jù)和Bin計數(shù)器350的內(nèi)容進行清零。把作為Bin解碼處理的結(jié)果獲得的Bin 數(shù)據(jù)比特存儲在由Bin解碼指令中指定的ccO操作數(shù)值指示的CCR(條件碼寄存器)比特 中。協(xié)同cidx操作數(shù)值O,rs操作數(shù)的gprl操作數(shù)值指定下述上下文索引的值,該上下文 索引將用于識別已經(jīng)存儲在上下文變量寄存器330中的上下文變量中的一個。更詳細地, gprl操作數(shù)值識別特定的通用寄存器,其內(nèi)容將與cidx操作數(shù)值0相加,以生成將用作用 于識別上下文變量中的一個的上下文索引的加和。在此情況下,假設(shè)值3、4或5已經(jīng)預(yù)先 存儲在特定的通用寄存器中。 如果作為通過第2行的Bin解碼指令實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特是0,則執(zhí)行圖16中示出程序的第3行的附條件分支指令,以跳轉(zhuǎn)到程序的第11行的 存儲指令。另一方面,如果作為通過第2行的Bin解碼指令實施的Bin解碼處理的結(jié)果獲 得的Bin數(shù)據(jù)比特是1,那么程序的流程從第3行的附條件分支指令繼續(xù)到第4行的Bin解 碼指令。 執(zhí)行圖16中示出程序的第4行的Bin解碼指令,以便通過使用由上下文索引276 識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。把作為Bin解碼處理的結(jié) 果獲得的Bin數(shù)據(jù)比特存儲在由Bin解碼指令中指定的ccl操作數(shù)值指示的CCR(條件碼 寄存器)比特中。 執(zhí)行圖16中示出程序的第5行的Bin解碼指令,以便通過使用由上下文索引 6(cidx = 3且rs = 0)識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。在 該Bin解碼指令中,操作數(shù)值3是cidx操作數(shù)的值。另一方面,在Bin解碼指令中指定的0 操作數(shù)值相當(dāng)于語句rs = O,這意味著把rs操作數(shù)的值設(shè)置為0。另外,假設(shè)通用寄存器 GPR[rs( = 0)]的內(nèi)容已經(jīng)設(shè)置為3。也就是說,上下文索引6是cidx( = 3)與GPR[rs] (=3)的加和。在Bin解碼指令中指定的CEXO操作數(shù)值意味著,僅當(dāng)在作為通過在前緊 鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特是0時才實施該 Bin解碼處理。 如果由ccl操作數(shù)值指定的CCR(條件碼寄存器)比特是l,那么執(zhí)行圖16中示出 程序的第6行的附條件分支指令,以便跳轉(zhuǎn)到程序的第11行的存儲指令。如上所述,由ccl 操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第4行的Bin解碼指令而實施的Bin 解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。另一方面,如果由ccl操作數(shù)值指定的CCR比特是 O,那么程序的流程從第6行的附條件分支指令繼續(xù)到第7行的Bin解碼指令。
執(zhí)行圖16中示出程序的第7行的Bin解碼指令,以便通過使用由上下文索引 7 (cidx = 4且rs = 0)識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。執(zhí) 行程序的第8行的Bin解碼指令,以便通過使用由上下文索引8 (cidx = 5且rs = 0)識別 的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。然而,程序的第8行的Bin解碼 指令通過指定CEX1操作數(shù)值而使用附條件執(zhí)行功能,該CEX1操作數(shù)值意味著,僅當(dāng)作為 通過在前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特是1 時才實施該Bin解碼處理。同樣地,執(zhí)行程序的第9行的Bin解碼指令,以便通過使用由上 下文索引9 (cidx = 6且rs = 0)識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù) 據(jù)比特。以同樣的方式,執(zhí)行程序的第lO行的Bin解碼指令,以便通過使用由上下文索引 10 (cidx = 7且rs = 0)識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。
執(zhí)行圖16所示的程序的第11行的存儲指令,以便將保存在上下文變量寄存器330 中的上下文變量存儲到存儲器110中。然后,執(zhí)行程序的第12行的多值轉(zhuǎn)換指令,以便實 施關(guān)于Bin數(shù)據(jù)比特的多值轉(zhuǎn)換處理,每個Bin數(shù)據(jù)比特作為目前為止已經(jīng)實施的Bin解 碼處理中的一個的結(jié)果而獲得。最后,執(zhí)行程序的第13行的無條件分支指令,以跳轉(zhuǎn)到返 回地址。 圖17是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖16中示出的典型程序,在用以生成I-片宏塊 類型的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。 如上所述,執(zhí)行圖16中所示程序的第2行的Bin解碼指令,以便通過使用由初始的上下文索引3、4或5識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。為 了通過使用一行(即第2行)上的Bin解碼指令實施該Bin解碼處理,初始的上下文索引 中的一個已經(jīng)存儲在Bin解碼指令中指定的通用寄存器中。 在通過具有圖17的狀態(tài)轉(zhuǎn)變圖中的上下文數(shù)字(3+r)的普通節(jié)點表示的狀態(tài)中, 執(zhí)行圖16所示的程序的第2行的Bin解碼指令,其中符號r表示值0、1和2。
另外,如果由ccl操作數(shù)值指定的CCR(條件碼寄存器)比特是l,那么執(zhí)行圖16 中示出程序的第6行的附條件分支指令,以便跳轉(zhuǎn)到程序的第11行的存儲指令,或如果由 ccl操作數(shù)值指定的CCR比特是O,那么程序的流程從第6行的附條件分支指令繼續(xù)到第7 行的Bin解碼指令。如上所述,由ccl操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通 過第4行的Bin解碼指令而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。因而,程序 的第6行的附條件分支指令必須在CCR比特處已經(jīng)設(shè)置作為通過第4行的Bin解碼指令而 實施的Bin解碼處理結(jié)果獲得的Bin數(shù)據(jù)比特之后才被執(zhí)行。然而,完成Bin解碼指令的 執(zhí)行耗費時間。這種情況引起等待時間增加,該等待時間是在CCR比特處建立分支條件所 占用的時間。該等待時間是所謂的Bin解碼指令的等待時間,該Bin解碼指令建立用于第 6行的附條件分支指令的分支條件。為了隱藏該等待時間,程序的第5行的Bin解碼指令 在程序的第4行和第6行之間執(zhí)行,以通過使用由上下文索引6識別的上下文變量而實施 Bin解碼處理。以此方式,在正實施該Bin解碼處理時,在CCR比特處建立分支條件。
在通過具有圖17的狀態(tài)轉(zhuǎn)變圖中的上下文數(shù)字276的普通節(jié)點表示的狀態(tài)中,執(zhí) 行圖16所示的程序的第4行的Bin解碼指令。在通過虛線框表示的狀態(tài)中,執(zhí)行相同程序 的第5行的Bin解碼指令,該虛線框包含具有相同狀態(tài)轉(zhuǎn)變圖中的上下文數(shù)字6的普通節(jié) 點。在通過具有由相同狀態(tài)轉(zhuǎn)變圖中的符號cc(276) 二l和cc(276) = 0示出的分支的分 支節(jié)點表示的狀態(tài)中,執(zhí)行相同程序的第6行的附條件分支指令。 另外,執(zhí)行圖16中示出程序的第8行的Bin解碼指令,以便通過使用由上下文索
引8識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。程序的第8行的Bin
解碼指令故意地使用附條件執(zhí)行功能。附條件執(zhí)行功能的使用允許消除附條件分支指令,
使得能夠避免流水線停頓。 在P-片宏塊類型上的典型應(yīng)用 圖18和19中的每一附圖都是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成P-片宏塊類型的語 法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。如圖18的狀態(tài)轉(zhuǎn)變圖所示,在用以生成P-片 宏塊類型的語法元素的CABAC解碼處理中,最初,上下文索引14用于生成第一 Bin數(shù)據(jù)比 特。如果作為初始Bin解碼處理的結(jié)果獲得的第一 Bin數(shù)據(jù)比特是1 ,那么針對宏塊的內(nèi)部 實施Bin解碼處理,如圖19的狀態(tài)轉(zhuǎn)變圖所示。另一方面,如果作為初始Bin解碼處理的 結(jié)果獲得的第一 Bin數(shù)據(jù)比特是0,那么產(chǎn)生到下一狀態(tài)的轉(zhuǎn)變。在下一狀態(tài)中,上下文索 引15用于下一Bin解碼處理,以生成另一Bin數(shù)據(jù)比特。如果作為下一 Bin解碼處理的結(jié) 果獲得的該另一Bin數(shù)據(jù)比特是l,那么產(chǎn)生到隨后狀態(tài)的轉(zhuǎn)變,在該隨后狀態(tài)中,由上下 文索引17識別的上下文變量用于隨后的Bin解碼處理,以生成另外的Bin數(shù)據(jù)比特。另一 方面,如果作為下一 Bin解碼處理的結(jié)果獲得的該另一 Bin數(shù)據(jù)比特是0,那么產(chǎn)生到隨后 狀態(tài)的轉(zhuǎn)變,在該隨后狀態(tài)中,由上下文索引16識別的上下文變量用于隨后的Bin解碼處 理,以生成另外的Bin數(shù)據(jù)比特。
23
圖20示出了由屬于根據(jù)本發(fā)明實施例的指令集合的指令組成的典型程序,以用 作將被執(zhí)行來實施用于生成P-片宏塊類型的語法元素的CABAC解碼處理的程序。
執(zhí)行圖20所示的程序的第1行的加載指令,以便將上下文變量從存儲器110加載 到上下文變量寄存器330中。執(zhí)行程序的第2行的Bin解碼指令,以便通過使用由上下文 索引14(cidx = O且rs = 0)識別的上下文變量實施Bin解碼處理以生成Bin數(shù)據(jù)比特。 在該Bin解碼指令中,操作數(shù)值0是cidx操作數(shù)的值。另一方面,在該Bin解碼指令中指 定的zero操作數(shù)值相當(dāng)于語句rs = O,這意味著把rs操作數(shù)的值設(shè)置為0。另外,通用寄 存器GPR[rs( = O)]的內(nèi)容假定為已經(jīng)設(shè)置為14。也就是說,上下文索引14是cidx(= 0)與GPR[rs] ( = 14)的加和。把作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特存儲在由 Bin解碼指令中指定的ccO操作數(shù)值指示的CCR(條件碼寄存器)比特中。因為CLR操作數(shù) 值在第2行的Bin解碼指令中被指定,因而在Bin解碼指令的執(zhí)行之前,對存儲在Bin緩沖 器340中的數(shù)據(jù)和Bin計數(shù)器350的內(nèi)容進行清零。 執(zhí)行圖20所示的程序的第3行的Bin解碼指令,以便通過使用由上下文索引
15 (cidx = 1且rs = 0)識別的上下文變量實施Bin解碼處理以生成Bin數(shù)據(jù)比特。通過 指定CEXO操作數(shù)值,第3行的Bin解碼指令使用附條件執(zhí)行功能,CEXO操作數(shù)值意味著僅 當(dāng)作為通過在前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比 特是0時,才實施該Bin解碼處理。 執(zhí)行圖20所示的程序的第4行的Bin解碼指令,以便通過使用由上下文索引16或 17 (cidx = 2,rs = 0以及CINC1)識別的上下文變量實施Bin解碼處理以生成Bin數(shù)據(jù)比 特。通過指定CINC1操作數(shù)值,程序的第4行的Bin解碼指令使用附條件遞增功能,CINC1 操作數(shù)值意味著根據(jù)作為通過在前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果 獲得的Bin數(shù)據(jù)比特,實施該Bin解碼處理。更具體地,如果作為通過在前緊鄰Bin解碼指 令的執(zhí)行而實施Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特為O,那么通過使用由上下文索引
16 ( = cidx+GPR
)識別的上下文變量,而實施Bin解碼處理,或如果作為通過在前緊鄰 Bin解碼指令的執(zhí)行而實施Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特為1 ,那么通過使用由 作為將(cidx+GPR
)遞增1的結(jié)果獲得的上下文索引17 ( = cidx+GPR
+l)識別的上 下文變量,而實施Bin解碼處理。把作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特存儲在 由Bin解碼指令中指定的ccl操作數(shù)值指示的CCR(條件碼寄存器)比特中。 如果由ccO操作數(shù)值指定的CCR(條件碼寄存器)比特是0,那么執(zhí)行圖20中示出 程序的第5行的附條件分支指令,以便跳轉(zhuǎn)到程序的第14行的存儲指令。如上所述,由ccO 操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第2行的Bin解碼指令而實施的Bin 解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。另一方面,如果由ccO操作數(shù)值指定的CCR比特是 l,那么程序的流程從第5行的附條件分支指令繼續(xù)到第6行的附條件分支指令。
如果由ccl操作數(shù)值指定的CCR比特是O,那么執(zhí)行圖20中示出程序的第6行的 附條件分支指令,以便跳轉(zhuǎn)到程序的第14行的存儲指令。如上所述,由ccl操作數(shù)值指定 的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第4行的Bin解碼指令而實施的Bin解碼處理的結(jié) 果獲得的Bin數(shù)據(jù)比特。另一方面,如果由ccl操作數(shù)值指定的CCR比特是l,那么程序的 流程從第6行的附條件分支指令繼續(xù)到第7行的Bin解碼指令。 執(zhí)行圖20中示出程序的第7行的Bin解碼指令,以便通過使用由上下文索引276識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。把作為Bin解碼處理的結(jié) 果獲得的Bin數(shù)據(jù)比特存儲在由Bin解碼指令中指定的cc2操作數(shù)值指示的CCR(條件碼 寄存器)比特中。 執(zhí)行圖20中示出程序的第8行的Bin解碼指令,以便通過使用由上下文索引 18(cidx = 4且rs = 0)識別的上下文變量而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。通 過指定CEX0操作數(shù)值,第8行的Bin解碼指令使用附條件執(zhí)行功能,CEXO操作數(shù)值意味著 僅當(dāng)作為通過在前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù) 比特是0時,才實施該Bin解碼處理。 如果由cc2操作數(shù)值指定的CCR(條件碼寄存器)比特是l,那么執(zhí)行圖20中示出 程序的第9行的附條件分支指令,以便跳轉(zhuǎn)到程序的第14行的存儲指令。如上所述,由cc2 操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第7行的Bin解碼指令而實施的Bin 解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。另一方面,如果由cc2操作數(shù)值指定的CCR比特是 O,那么程序的流程從第9行的附條件分支指令繼續(xù)到第10行的Bin解碼指令。
執(zhí)行圖20中示出程序的第10行的Bin解碼指令,以便通過使用由上下文索引 19(cidx = 5且rs = 0)識別的上下文變量而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。執(zhí) 行程序的第11行的Bin解碼指令,以便通過使用由上下文索引19(cidx = 5且rs = 0)識 別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。通過指定CEX1操作數(shù)值,程 序的第11行的Bin解碼指令使用附條件執(zhí)行功能,CEX1操作數(shù)值意味著僅當(dāng)作為通過在 前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特是1時,才 實施該Bin解碼處理。 執(zhí)行圖20中示出程序的第12行的Bin解碼指令,以便通過使用由上下文索引 20(cidx = 6且rs = 0)識別的上下文變量而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。同 樣,程序的第13行的Bin解碼指令也通過使用由上下文索引20(cidx = 6且rs = 0)識別 的上下文變量,實施Bin解碼處理以生成Bin數(shù)據(jù)比特。 執(zhí)行圖20所示的程序的第14行的存儲指令,以便將保存在上下文變量寄存器330 中的上下文變量存儲到存儲器110中。然后,執(zhí)行程序的第15行的多值轉(zhuǎn)換指令,以便實 施關(guān)于Bin數(shù)據(jù)比特的多值轉(zhuǎn)換處理,每個Bin數(shù)據(jù)比特作為目前為止已經(jīng)實施的Bin解 碼處理中的一個的結(jié)果而獲得。最后,執(zhí)行程序的第16行的無條件分支指令,以便跳轉(zhuǎn)到 返回地址。 圖21和22中的每一附圖是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖20中示出的典型程序,在 用以生成P-片宏塊類型的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。
如果由ccO操作數(shù)值指定的CCR(條件碼寄存器)比特是O,那么執(zhí)行程序的第5 行的附條件分支指令以便跳轉(zhuǎn)到程序的第14行的存儲指令,或程序的流程從第5行的附 條件分支指令繼續(xù)到第6行的附條件分支指令。如上所述,由ccO操作數(shù)值指定的CCR比 特應(yīng)該已經(jīng)用于存儲作為通過第2行的Bin解碼指令而實施的Bin解碼處理的結(jié)果獲得的 Bin數(shù)據(jù)比特。因而,程序的第5行的附條件分支指令必須在作為通過第2行的Bin解碼指 令而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特已經(jīng)在CCR比特處設(shè)置之后執(zhí)行。然 而,完成Bin解碼指令的執(zhí)行耗費時間。這種情況引起等待時間增加,該等待時間是在CCR 比特處建立分支條件所占用的時間。該等待時間是建立用于第5行的附條件分支指令的分支條件的Bin解碼指令的所謂等待時間。為了隱藏該等待時間,程序的第3行的Bin解碼 指令在程序的第2行和第5行之間執(zhí)行,以通過使用由上下文索引15識別的上下文變量而 實施Bin解碼處理。以此方式,在正實施該Bin解碼處理期間,在CCR比特處建立起分支條 件。 在通過圖21的狀態(tài)轉(zhuǎn)變圖中的具有上下文數(shù)字14的普通節(jié)點表示的狀態(tài)中,執(zhí) 行圖20所示的程序的第2行的Bin解碼指令。在通過虛線框表示的狀態(tài)中,執(zhí)行相同程序 的第3行的Bin解碼指令,該虛線框包含相同狀態(tài)轉(zhuǎn)變圖中具有上下文數(shù)字15的普通節(jié) 點。在通過相同狀態(tài)轉(zhuǎn)變圖中的具有由符號cc(14) 二l和cc(14) =0示出的分支的分支 節(jié)點表示的狀態(tài)中,執(zhí)行相同程序的第5行的附條件分支指令。 另外,執(zhí)行圖20中示出程序的第4行的Bin解碼指令,以便通過使用由上下文索 引16或17識別的上下文變量而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。通過指定CINC1 操作數(shù)值,程序的第4行的Bin解碼指令故意地使用附條件遞增功能。CINC1操作數(shù)值意 味著根據(jù)作為通過在前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的Bin 數(shù)據(jù)比特,實施該Bin解碼處理。更具體地,如果作為通過在前緊鄰Bin解碼指令的執(zhí)行 而實施Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特為O,那么通過使用由上下文索引16(= cidx+GPR
)識別的上下文變量,而實施Bin解碼處理,或如果作為通過在前緊鄰Bin解 碼指令的執(zhí)行而實施Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特為l,那么通過使用由作為 將(cidx+GPR
)遞增1的結(jié)果獲得的上下文索引17 ( = cidx+GPR
+l)識別的上下文 變量,而實施Bin解碼處理。附條件遞增功能的使用允許程序的第4行的共同Bin解碼指 令代替2個不同的Bin解碼指令而使用,并允許消除2個附條件分支指令,使得能夠避免流 水線停頓。 另外,如果由cc2操作數(shù)值指定的CCR(條件碼寄存器)比特是l,那么執(zhí)行圖20 中示出程序的第9行的附條件分支指令,以便跳轉(zhuǎn)到程序的第14行的存儲指令,或程序的 流程從第9行的附條件分支指令繼續(xù)到第10行的Bin解碼指令。如上所述,由cc2操作數(shù) 值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第7行的Bin解碼指令而實施的Bin解碼處 理的結(jié)果獲得的Bin數(shù)據(jù)比特。因而,程序的第9行的附條件分支指令必須在作為通過第 7行的Bin解碼指令而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特已經(jīng)在CCR比特處 設(shè)置之后執(zhí)行。然而,完成Bin解碼指令的執(zhí)行耗費時間。這種情況引起等待時間增加,該 等待時間是在CCR比特處建立分支條件所占用的時間。該等待時間是建立用于第9行的附 條件分支指令的分支條件的Bin解碼指令的所謂等待時間。為了隱藏該等待時間,程序的 第8行的Bin解碼指令在程序的第7行和第9行之間執(zhí)行,以通過使用由上下文索引18識 別的上下文變量而實施Bin解碼處理。以此方式,在正實施該Bin解碼處理期間,在CCR比 特處建立分支條件。 在通過圖22的狀態(tài)轉(zhuǎn)變圖中的具有上下文數(shù)字276的普通節(jié)點表示的狀態(tài)中,執(zhí) 行圖20所示的程序的第7行的Bin解碼指令。在通過虛線框表示的狀態(tài)中,執(zhí)行相同程序 的第8行的Bin解碼指令,該虛線框包含相同狀態(tài)轉(zhuǎn)變圖中的具有上下文數(shù)字18的普通節(jié) 點。在通過相同狀態(tài)轉(zhuǎn)變圖中的具有由符號cc(276) 二l和cc(276) = 0示出的分支的分 支節(jié)點表示的狀態(tài)中,執(zhí)行相同程序的第9行的附條件分支指令。 另外,執(zhí)行圖20中示出程序的第ll行的Bin解碼指令,以便通過使用由上下文索引19識別的上下文變量而實施Bin解碼處理。程序的第ll行的Bin解碼指令故意地使用 附條件執(zhí)行功能。附條件執(zhí)行功能的使用允許消除附條件分支指令,使得能夠避免流水線 停頓。 在B-片宏塊類型上的典型應(yīng)用 圖23和24中的每一附圖都是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成B-片宏塊類型的 語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。在用以生成B-片宏塊類型的語法元素的 CABAC解碼處理中,由上下文索引27、28或29識別的上下文變量最初地用于識別用于生成 作為第一Bin解碼處理的結(jié)果的Bin數(shù)據(jù)比特的上下文變量。然后,Bin解碼處理的結(jié)果 用于緊跟第一 Bin解碼處理的附條件分支指令,以確定從執(zhí)行分支指令的狀態(tài)到下一狀態(tài) 的狀態(tài)轉(zhuǎn)變。 圖25示出了由屬于根據(jù)本發(fā)明實施例的指令集合的指令組成的典型程序,以用 作將被執(zhí)行來實施用于生成B-片宏塊類型的語法元素的CABAC解碼處理的程序。
執(zhí)行圖25所示的程序的第1行的加載指令,以便將上下文變量從存儲器110加載 到上下文變量寄存器330中。執(zhí)行程序的第2行的Bin解碼指令,以便通過使用由上下文 索引27、28或29識別的上下文變量實施Bin解碼處理以生成Bin數(shù)據(jù)比特。因為CLR操 作數(shù)值在第2行的Bin解碼指令中被指定,因而在Bin解碼指令的執(zhí)行之前,對存儲在Bin 緩沖器340中的數(shù)據(jù)和Bin計數(shù)器350的內(nèi)容進行清零。把作為Bin解碼處理的結(jié)果獲得 的Bin數(shù)據(jù)比特存儲在由Bin解碼指令中指定的cc0操作數(shù)值指示的CCR(條件碼寄存器) 比特中。協(xié)同cidx操作數(shù)值O,rs操作數(shù)的gprl操作數(shù)值指定上下文索引的值,該上下文 索引將用于識別已經(jīng)存儲在上下文變量寄存器330中的上下文變量中的一個。更詳細地, gpr 1操作數(shù)值識別特定的通用寄存器,該特定的通用寄存器的內(nèi)容將與cidx操作數(shù)值0相 加,以生成將用作用于識別上下文變量中的一個的上下文索引的加和。在此情況下,假設(shè)值 27、28或29已經(jīng)預(yù)先存儲在特定的通用寄存器中。 如果作為通過第2行的Bin解碼指令實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù) 比特是0,執(zhí)行程序的第3行的附條件分支指令,以便跳轉(zhuǎn)到程序的第23行的存儲指令。另 一方面,如果作為通過第2行的Bin解碼指令實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù) 比特是l,那么程序的流程從第3行的附條件分支指令繼續(xù)到第4行的指令。
執(zhí)行圖25中示出程序的第4行的Bin解碼指令,以便通過使用由上下文索引 30(CidX = 3irs = 0)識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。把 作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特存儲在由Bin解碼指令中指定的ccl操作數(shù) 值指示的CCR(條件碼寄存器)比特中。 執(zhí)行圖25中示出程序的第5行的Bin解碼指令,以便通過使用由上下文索引31 或32 (cidx = 4,rs = 0以及CINCO)識別的上下文變量而實施Bin解碼處理以生成Bin數(shù) 據(jù)比特。通過指定CINCO操作數(shù)值,程序的第5行的Bin解碼指令使用附條件遞增功能, CINCO操作數(shù)值意味著根據(jù)作為通過在前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理 的結(jié)果獲得的Bin數(shù)據(jù)比特,實施該Bin解碼處理。更具體地,如果作為通過在前緊鄰Bin 解碼指令的執(zhí)行而實施Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特為1 ,那么通過使用由上下 文索引31 ( = cidx+GPR
)識別的上下文變量,而實施Bin解碼處理,或如果作為在前緊 鄰解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特為O,那么通過使用由作為將(cidx+GPR
)增加1的結(jié)果獲得的上下文索引32( = cidx+GPR
+l)識別的上下文變量,而實施Bin解碼處理。 如果由ccl操作數(shù)值指定的CCR(條件碼寄存器)比特是0,執(zhí)行圖25中示出程序 的第6行的附條件分支指令,以便跳轉(zhuǎn)到程序的第23行的存儲指令。如上所述,由ccl操 作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第4行的Bin解碼指令而實施的Bin解 碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。另一方面,如果由ccl操作數(shù)值指定的CCR比特是1, 那么程序的流程從第6行的附條件分支指令繼續(xù)到第7行的Bin解碼指令。
執(zhí)行圖25所示程序的第7行至第9行中每一行的Bin解碼指令,以便通過使用由 上下文索引32(cidx = 5且rs = 0)識別的上下文變量,實施Bin解碼處理以生成Bin數(shù) 據(jù)比特。也就是說,在行中實施三次Bin解碼處理,以便生成三個連續(xù)的Bin解碼比特。
執(zhí)行圖25所示程序的第10行的Bin匹配指令,以便如果每一個作為之前解碼處 理結(jié)果而獲得的第四、第三和第二最近Bin數(shù)據(jù)比特都是1 ,或作為之前解碼處理結(jié)果而獲 得的第四最近Bin數(shù)據(jù)比特是O,那么將l存儲在由cc2操作數(shù)值指定的CCR(條件碼寄存 器)比特中。另一方面,如果每一個作為之前解碼處理結(jié)果而獲得的第四、第三和第二最近 Bin數(shù)據(jù)比特并非都是1 ,且作為之前解碼處理結(jié)果而獲得的第四最近Bin數(shù)據(jù)比特不是0, 那么執(zhí)行第10行的Bin匹配指令以便將0存儲在由cc2操作數(shù)值指定的CCR比特中。
執(zhí)行圖25所示程序的第11行的Bin匹配指令,以便如果每一個作為之前解碼處 理結(jié)果而獲得的第四、第三和第一最近Bin數(shù)據(jù)比特都是1 ,并且作為之前解碼處理結(jié)果而 獲得的第二最近Bin數(shù)據(jù)比特是O,則將l存儲在由cc3操作數(shù)值指定的CCR(條件碼寄存 器)比特中。另一方面,如果每一個作為之前解碼處理結(jié)果而獲得的第四、第三和第一最近 Bin數(shù)據(jù)比特并非都是1 ,或作為之前解碼處理結(jié)果而獲得的第二最近Bin數(shù)據(jù)比特不是0, 那么執(zhí)行第11行的Bin匹配指令以便將0存儲在由cc3操作數(shù)值指定的CCR比特中。
執(zhí)行圖25中示出程序的第12行的附條件分支指令,以便如果由cc2操作數(shù)值指 定的CCR(條件碼寄存器)比特是1,那么跳轉(zhuǎn)到程序的第23行的存儲指令。如上所述,由 cc2操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲通過第10行的Bin匹配指令而實施的匹配 處理的結(jié)果。 執(zhí)行圖25中示出程序的第13行的Bin解碼指令,以便通過使用由上下文索引 32(cidx = 5且rs = 0)識別的上下文變量而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。把 作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特存儲在由Bin解碼指令中指定的cc4操作數(shù) 值指示的CCR(條件碼寄存器)比特中。 執(zhí)行圖25中示出程序的第14行的附條件分支指令,以便如果由cc3操作數(shù)值指 定的CCR(條件碼寄存器)比特是0,那么跳轉(zhuǎn)到程序的第23行的存儲指令。如上所述,由 cc3操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲通過第ll行的Bin匹配指令而實施的匹配 處理的結(jié)果。 執(zhí)行圖25中示出程序的第15行的附條件分支指令,以便如果由cc4操作數(shù)值指 定的CCR(條件碼寄存器)比特是0,那么跳轉(zhuǎn)到程序的第23行的存儲指令。如上所述,由 cc4操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第13行的Bin解碼指令而實施的 Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。 執(zhí)行圖25中示出程序的第16行的Bin解碼指令,以便通過使用由上下文索引276識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特,。把作為Bin解碼處理的結(jié) 果獲得的Bin數(shù)據(jù)比特存儲在由Bin解碼指令中指定的cc5操作數(shù)值指示的CCR(條件碼 寄存器)比特中。 執(zhí)行圖25中示出程序的第17行的Bin解碼指令,以便通過使用由上下文索引 33(cidx = 6且rs = 0)識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。通 過指定CEX0操作數(shù)值,程序的第17行的Bin解碼指令使用附條件執(zhí)行功能,CEXO操作數(shù) 值意味著僅當(dāng)作為通過在前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的 Bin數(shù)據(jù)比特是0時,才實施該Bin解碼處理。 執(zhí)行圖25中示出程序的第18行的附條件分支指令,以便如果由cc5操作數(shù)值指 定的CCR(條件碼寄存器)比特是0,那么跳轉(zhuǎn)到程序的第23行的存儲指令。如上所述,由 cc5操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第16行的Bin解碼指令而實施的 Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。 執(zhí)行圖25中示出程序的第19行的Bin解碼指令,以便通過使用由上下文索引 34(cidx = 7且rs = 0)識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。
執(zhí)行圖25中示出程序的第20行的Bin解碼指令,以便通過使用由上下文索引 34(cidx = 7且rs = 0)識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。通 過指定CEX1操作數(shù)值,程序的第20行的Bin解碼指令使用附條件執(zhí)行功能,CEX1操作數(shù) 值意味著僅當(dāng)作為通過在前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的 Bin數(shù)據(jù)比特是1時,才實施該Bin解碼處理。 執(zhí)行圖25所示程序的第21行至第22行中任一行的Bin解碼指令,以便通過使用 由上下文索引35(cidx = 8且rs = 0)識別的上下文變量,實施Bin解碼處理以生成Bin 數(shù)據(jù)比特。也就是說,在行中實施兩次Bin解碼處理,以便生成兩個連續(xù)的Bin數(shù)據(jù)比特。
執(zhí)行圖25所示的程序的第23行的存儲指令,以便將保存在上下文變量寄存器330 中的上下文變量存儲到存儲器110中。然后,執(zhí)行程序的第24行的多值轉(zhuǎn)換指令,以便實 施關(guān)于Bin數(shù)據(jù)比特的多值轉(zhuǎn)換處理,每個Bin數(shù)據(jù)比特作為目前為止已經(jīng)實施的Bin解 碼處理中的一個的結(jié)果而獲得。最后,執(zhí)行程序的第25行的無條件分支指令,以便跳轉(zhuǎn)到 返回地址。 圖26和27中的每一附圖是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖25中示出的典型程序,在
用以生成B-片宏塊類型的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。 如上所述,執(zhí)行圖25中所示程序的第2行的Bin解碼指令,以便通過使用由初始
的上下文索引27、28或29識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。
為了通過使用一行(即第2行)上的Bin解碼指令實施該Bin解碼處理,初始的上下文索
引27、28或29中的一個已經(jīng)存儲在Bin解碼指令中指定的通用寄存器中。 在通過圖26的狀態(tài)轉(zhuǎn)變圖中的具有上下文數(shù)字(27+r)的普通節(jié)點表示的狀態(tài)
中,執(zhí)行圖25所示的程序的第2行的Bin解碼指令,其中符號r表示值0、1和2。 另外,執(zhí)行圖25中示出程序的第5行的Bin解碼指令,以便通過使用由上下文索
引31或32識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。程序的第5行
的Bin解碼指令故意地使用附條件遞增功能。附條件遞增功能的使用允許消除附條件分支
指令,使得能夠避免流水線停頓。
29
另外,通過程序的第5行至第12行的指令的執(zhí)行而實施處理,以便針對宏塊的內(nèi) 部生成Bin數(shù)據(jù)比特。該處理從程序的第5行的Bin解碼指令開始。如上所述,執(zhí)行程序 的第5行的Bin解碼指令,以便通過使用由上下文索引31或32識別的上下文變量,而實施 Bin解碼處理以生成其中一個Bin數(shù)據(jù)比特。處理還包括在第5行的Bin解碼指令之后的 程序的第10和11行的匹配指令。執(zhí)行Bin匹配指令的每一個,以便把4個Bin數(shù)據(jù)比特 與指令中指定的操作數(shù)相比較,每一個Bin數(shù)據(jù)比特作為之前實施的Bin解碼處理的結(jié)果 而獲得。因而,Bin匹配指令的使用允許消除附條件分支指令。因此,能夠避免流水線停頓。
另外,執(zhí)行圖25中示出程序的第18行的附條件分支指令,以便如果由cc5操作數(shù) 值指定的CCR(條件碼寄存器)比特是l,那么跳轉(zhuǎn)到程序的第23行的存儲指令,或程序的 流程從第18行的附條件分支指令繼續(xù)到第19行的Bin解碼指令。如上所述,由cc5操作 數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第16行的Bin解碼指令而實施的Bin解 碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。因而,程序的第18行的附條件分支指令必須在CCR比 特處已經(jīng)設(shè)置作為通過第16行的Bin解碼指令而實施的Bin解碼處理結(jié)果獲得的Bin數(shù) 據(jù)比特之后才執(zhí)行。然而,完成Bin解碼指令的執(zhí)行耗費時間。這種情況引起等待時間增 加,該等待時間是在CCR比特處建立分支條件所占用的時間。該等待時間是建立用于第18 行的附條件分支指令的分支條件的Bin解碼指令的所謂等待時間。為了隱藏該等待時間, 程序的第17行的Bin解碼指令在程序的第16行和第18行之間執(zhí)行,以通過使用由上下文 索引33識別的上下文變量而實施Bin解碼處理。以此方式,在正實施該Bin解碼處理期間, 在CCR比特處建立起分支條件。 在通過圖27的狀態(tài)轉(zhuǎn)變圖中的具有上下文數(shù)字276的普通節(jié)點表示的狀態(tài)中,執(zhí) 行圖25所示的程序的第16行的Bin解碼指令。在通過虛線框表示的狀態(tài)中,執(zhí)行相同程 序的第17行的Bin解碼指令,該虛線框包含相同狀態(tài)轉(zhuǎn)變圖中的具有上下文數(shù)字33的普 通節(jié)點。在通過相同狀態(tài)轉(zhuǎn)變圖中的具有由符號cc(276) 二l和cc(276) = 0示出的分支 的分支節(jié)點表示的狀態(tài)中,執(zhí)行相同程序的第18行的附條件分支指令。在通過相同的狀態(tài) 轉(zhuǎn)變圖中的具有上下文數(shù)字34的上(upper)普通節(jié)點表示的狀態(tài)中,執(zhí)行相同程序的第19 行的Bin解碼指令。 另外,執(zhí)行圖25中示出程序的第20行的Bin解碼指令,以便通過使用由上下文索 引34識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。程序的第20行的Bin 解碼指令故意地使用附條件執(zhí)行功能。附條件執(zhí)行功能的使用允許消除附條件分支指令, 使得能夠避免流水線停頓。 在P-片子宏塊(Sub-Macroblock)類型上的其它典型應(yīng)用 圖28是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成P-片子宏塊類型的語法元素的CABAC解 碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。如圖28的狀態(tài)轉(zhuǎn)變圖所示,在用以生成P-片子宏塊類型的語 法元素的CABAC解碼處理中,由上下文索引21識別的上下文變量用于第一狀態(tài),在第一狀 態(tài)中實施第一 Bin解碼處理,以生成第一 Bin數(shù)據(jù)比特。如果作為第一 Bin解碼處理的結(jié) 果獲得的第一 Bin數(shù)據(jù)比特是l,那么立刻結(jié)束CABAC解碼處理。另一方面,如果作為第一 Bin解碼處理的結(jié)果獲得的第一 Bin數(shù)據(jù)比特是0,那么產(chǎn)生到第二狀態(tài)的轉(zhuǎn)變。在第二狀 態(tài)中,由上下文索引22識別的上下文變量用于第二 Bin解碼處理,以生成第二 Bin數(shù)據(jù)比 特。如果作為第二 Bin解碼處理的結(jié)果獲得的第二 Bin數(shù)據(jù)比特是1 ,那么產(chǎn)生到第三狀態(tài)的轉(zhuǎn)變,在第三狀態(tài)中,由上下文索引23識別的上下文變量用于第三Bin解碼處理,以生成 第三Bin數(shù)據(jù)比特。 一旦完成第三Bin解碼處理,結(jié)束CABAC解碼處理。另一方面,如果作 為第二 Bin解碼處理的結(jié)果獲得的第二 Bin數(shù)據(jù)比特是O,那么立刻結(jié)束CABAC解碼處理。
圖29示出了由屬于根據(jù)本發(fā)明實施例的指令集合的指令組成的典型程序,以用 作將被執(zhí)行來實施用于生成P-片子宏塊類型的語法元素的CABAC解碼處理的程序。
執(zhí)行圖29所示的程序的第1行的加載指令,以便將來自存儲器110的上下文變量 加載到上下文變量寄存器330中。執(zhí)行程序的第2行的Bin解碼指令,以便通過使用由上下 文索引21(cidx = 7且rs = 0)識別的上下文變量,實施Bin解碼處理以生成Bin數(shù)據(jù)比 特。在該Bin解碼指令中,操作數(shù)值7是cidx操作數(shù)的值。另一方面,在該Bin解碼指令中 指定的zero操作數(shù)值相當(dāng)于語句rs = O,這意味著把rs操作數(shù)的值設(shè)置為0。另外,通用 寄存器GPR[rs(二O)]的內(nèi)容假定為已經(jīng)設(shè)置為14。也就是說,上下文索引21是cidx(二 7)與GPR[rs] ( = 14)的加和。把作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特存儲在由 Bin解碼指令中指定的ccO操作數(shù)值指示的CCR(條件碼寄存器)比特中。另外,因為CLR 操作數(shù)值在Bin解碼指令中被指定,因而在Bin解碼指令的執(zhí)行之前,對存儲在Bin緩沖器 340中的數(shù)據(jù)和Bin計數(shù)器350的內(nèi)容進行清零。 執(zhí)行圖29所示的程序的第3行的Bin解碼指令,以便通過使用由上下文索引 22(cidx = 8且rs = 0)識別的上下文變量,實施Bin解碼處理以生成Bin數(shù)據(jù)比特。在 Bin解碼指令中指定的CEXO操作數(shù)值意味著,僅當(dāng)作為通過在前緊鄰Bin解碼指令的執(zhí)行 而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特是0時才實施該Bin解碼處理。
執(zhí)行圖29中示出程序的第4行的附條件分支指令,以便如果由ccO操作數(shù)值指定 的CCR(條件碼寄存器)比特是1,那么跳轉(zhuǎn)到程序的第6行的存儲指令。如上所述,由cc0 操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第2行的Bin解碼指令而實施的Bin 解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。 執(zhí)行圖29中示出程序的第5行的Bin解碼指令,以便通過使用由上下文索引 23(cidX = 9irs = 0)識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。在 Bin解碼指令中指定的CEX1操作數(shù)值意味著,僅當(dāng)作為通過在前緊鄰Bin解碼指令的執(zhí)行 而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特是1時才實施該Bin解碼處理。
執(zhí)行圖29所示的程序的第6行的存儲指令,以便將保存在上下文變量寄存器330 中的上下文變量存儲到存儲器110中。然后,執(zhí)行程序的第7行的多值轉(zhuǎn)換指令,以便實施 關(guān)于Bin數(shù)據(jù)比特的多值轉(zhuǎn)換處理,每個Bin數(shù)據(jù)比特作為目前為止已經(jīng)實施的Bin解碼 處理中的一個的結(jié)果而獲得。最后,執(zhí)行程序的第8行的無條件分支指令,以便跳轉(zhuǎn)到返回 地址。 圖30是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖29中示出的典型程序,在用以生成P-片子宏 塊類型的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。 執(zhí)行圖29所示程序的第4行的附條件分支指令,以便如果由ccO操作數(shù)值指定的 CCR(條件碼寄存器)比特是l,那么跳轉(zhuǎn)到程序的第6行的存儲指令,或如果由ccO操作數(shù) 值指定的CCR比特是0,那么程序的流程從第4行的附條件分支指令繼續(xù)到第5行的Bin解 碼指令。如上所述,由ccO操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第2行的 Bin解碼指令而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。因而,程序的第4行的附條件分支指令必須在作為通過第2行的Bin解碼指令而實施的Bin解碼處理的結(jié)果獲得的 Bin數(shù)據(jù)比特已經(jīng)在CCR比特處設(shè)置之后才執(zhí)行。然而,完成Bin解碼指令的執(zhí)行耗費時 間。這種情況引起等待時間增加,該等待時間是在CCR比特處建立分支條件所占用的時間。 該等待時間是建立用于第4行的附條件分支指令的分支條件的Bin解碼指令的所謂等待時 間(latency)。為了隱藏該等待時間,程序的第3行的Bin解碼指令在程序的第2行和第4 行之間執(zhí)行,以通過使用由上下文索引22識別的上下文變量而實施Bin解碼處理。以此方 式,在正實施該Bin解碼處理期間,在CCR比特處建立起分支條件。 在通過圖30的狀態(tài)轉(zhuǎn)變圖中的具有上下文數(shù)字21的普通節(jié)點表示的狀態(tài)中,執(zhí) 行圖29所示的程序的第2行的Bin解碼指令。在通過虛線框表示的狀態(tài)中,執(zhí)行相同程序 的第3行的Bin解碼指令,該虛線框包含相同狀態(tài)轉(zhuǎn)變圖中的具有上下文數(shù)字22的普通節(jié) 點。在通過相同狀態(tài)轉(zhuǎn)變圖中的具有由符號cc(21) 二l和cc(21) =0示出的分支的分支 節(jié)點表示的狀態(tài)中,執(zhí)行相同程序的第4行的附條件分支指令。 另外,執(zhí)行圖29中示出程序的第5行的Bin解碼指令,以便通過使用由上下文索 引23識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。程序的第5行的Bin 解碼指令故意地使用附條件執(zhí)行功能。附條件執(zhí)行功能的使用允許消除附條件分支指令, 使得能夠避免流水線停頓。 在B-片子宏塊類型上的其它典型應(yīng)用 圖31是狀態(tài)轉(zhuǎn)變圖,示出了在用以生成B-片子宏塊類型的語法元素的CABAC解 碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。如圖31的狀態(tài)轉(zhuǎn)變圖所示,在用以生成B-片子宏塊類型的語 法元素的CABAC解碼處理中,由上下文索引36識別的上下文變量用于第一狀態(tài),在第一狀 態(tài)中實施第一 Bin解碼處理,以生成第一 Bin數(shù)據(jù)比特。如果作為第一 Bin解碼處理的結(jié) 果獲得的第一 Bin數(shù)據(jù)比特是O,那么立刻結(jié)束CABAC解碼處理。另一方面,如果作為第一 Bin解碼處理的結(jié)果獲得的第一 Bin數(shù)據(jù)比特是l,那么產(chǎn)生到第二狀態(tài)的轉(zhuǎn)變,在第二狀 態(tài)中,由上下文索引37識別的上下文變量用于執(zhí)行第二 Bin解碼處理,以生成第二 Bin數(shù) 據(jù)比特。然后,產(chǎn)生到附條件分支指令的狀態(tài)的狀態(tài)轉(zhuǎn)變。隨后,產(chǎn)生根據(jù)第二Bin數(shù)據(jù)比 特確定的下一狀態(tài)轉(zhuǎn)變。 圖32示出了由屬于根據(jù)本發(fā)明實施例的指令集合的指令組成的典型程序,以用 作將被執(zhí)行來實施用于生成B-片子宏塊類型的語法元素的CABAC解碼處理的程序。
執(zhí)行圖32所示的程序的第1行的加載指令,以便將上下文變量從存儲器110加載 到上下文變量寄存器330中。執(zhí)行程序的第2行的Bin解碼指令,以便通過使用由上下文 索引36(cidx = 9且rs = 0)識別的上下文變量,實施Bin解碼處理以生成Bin數(shù)據(jù)比特。 在該Bin解碼指令中,操作數(shù)值9是cidx操作數(shù)的值。另一方面,在該Bin解碼指令中指 定的zero操作數(shù)值相當(dāng)于語句rs = 0,這意味著把rs操作數(shù)的值設(shè)置為0。另外,通用寄 存器GPR[rs( = O)]的內(nèi)容假定為已經(jīng)設(shè)置為27。也就是說,上下文索引36是cidx(= 9)與GPR[rs] ( = 27)的加和。另外,因為CLR操作數(shù)值在Bin解碼指令中被指定,因而在 Bin解碼指令的執(zhí)行之前,對存儲在Bin緩沖器340中的數(shù)據(jù)和Bin計數(shù)器350的內(nèi)容進 行清零。把作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特存儲在由Bin解碼指令中指定的 ccO操作數(shù)值指示的CCR(條件碼寄存器)比特中。 執(zhí)行圖32所示的程序的第3行的Bin解碼指令,以便通過使用由上下文索引37(cidx = 10且rs = 0)識別的上下文變量,實施Bin解碼處理以生成Bin數(shù)據(jù)比特。把 作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特存儲在由Bin解碼指令中指定的cc0操作數(shù) 值指示的CCR(條件碼寄存器)比特中。通過指定CEXl操作數(shù)值,程序的第3行的Bin解碼 指令使用附條件執(zhí)行功能,該CEXl操作數(shù)值意味著,僅當(dāng)作為通過在前緊鄰Bin解碼指令 的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特是1時才實施該Bin解碼處理。
執(zhí)行圖32中示出程序的第4行的Bin解碼指令,以便通過使用由上下文索引38或 39(cidx = ll,rs = 0和CEX1以及CINCO)識別的上下文變量,而實施Bin解碼處理以生成 Bin數(shù)據(jù)比特。通過指定CINCO操作數(shù)值,程序的第4行的Bin解碼指令使用附條件遞增功 能,CINCO操作數(shù)值意味著根據(jù)作為通過在前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼 處理的結(jié)果獲得的Bin數(shù)據(jù)比特,實施該Bin解碼處理。更具體地,如果作為通過在前緊鄰 Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特為1 ,那么通過使用 由上下文索引38 ( = cidx+GPR
)識別的上下文變量,而實施Bin解碼處理,或如果作為 在前緊鄰解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特為O,那么通過使用由作為將(cidx+GPR
) 增加1的結(jié)果獲得的上下文索引39 ( = cidx+GPR
+l)識別的上下文變量,而實施Bin解 碼處理。把作為Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特存儲在由Bin解碼指令中指定的 ccO操作數(shù)值指示的CCR(條件碼寄存器)比特中。然而,通過指定CEXl操作數(shù)值,程序的 第4行的Bin解碼指令也使用附條件執(zhí)行功能,該CEXl操作數(shù)值意味著,僅當(dāng)作為通過在 前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特是1時才實 施該Bin解碼處理。 執(zhí)行圖32中示出程序的第5行的附條件分支指令,以便如果由ccO操作數(shù)值指定 的CCR(條件碼寄存器)比特是O,那么跳轉(zhuǎn)到程序的第ll行的存儲指令。另一方面,如果 由ccO操作數(shù)值指定的CCR比特是1,那么程序的流程從第5行的附條件分支指令繼續(xù)到第 6行的Bin解碼指令。如果作為程序的第2行的Bin解碼指令的執(zhí)行的結(jié)果獲得的Bin數(shù) 據(jù)比特已經(jīng)是O,那么第3和4行的Bin解碼指令應(yīng)該沒有執(zhí)行。在此情況下,獲得的作為 程序的第2行的Bin解碼指令的執(zhí)行的結(jié)果的Bin數(shù)據(jù)比特0應(yīng)該已經(jīng)存儲在由在第5行 的附條件分支指令中所包括的ccO操作數(shù)值指定的CCR比特中。也就是說,執(zhí)行程序的第 5行的附條件分支指令,以便跳轉(zhuǎn)到第11行的存儲指令。 執(zhí)行圖32所示程序的第6行至第7行中每一行的Bin解碼指令,以便通過使用由 上下文索引39(cidx = 12且rs = 0)識別的上下文變量,實施Bin解碼處理以生成Bin數(shù) 據(jù)比特。也就是說,在行中實施兩次Bin解碼處理,以便生成兩個連續(xù)的Bin解碼比特。
執(zhí)行圖32所示程序的第8行的Bin匹配指令,以便如果每一個作為之前解碼處理 結(jié)果而獲得的第三和第二最近Bin數(shù)據(jù)比特分別是1和O,那么,將1存儲在由指令中指定 的ccl操作數(shù)值指示的CCR(條件碼寄存器)比特中。另一方面,如果每一個作為之前解碼 處理結(jié)果而獲得的第三和第二最近Bin數(shù)據(jù)比特不是分別為1和0,那么執(zhí)行第8行的Bin 匹配指令,以便將0存儲在由ccl操作數(shù)值指示的CCR比特中。 執(zhí)行圖32中示出程序的第9行的附條件分支指令,以便如果由ccl操作數(shù)值指定 的CCR(條件碼寄存器)比特是0,那么跳轉(zhuǎn)到程序的第11行的存儲指令。如上所述,由ccl 操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第8行的Bin匹配指令而實施的Bin 解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。
執(zhí)行圖32中示出程序的第10行的Bin解碼指令,以便通過使用由上下文索引 39(cidx = 12且rs = 0)識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。
執(zhí)行圖32所示的程序的第11行的存儲指令,以便將保存在上下文變量寄存器330 中的上下文變量存儲到存儲器110中。然后,執(zhí)行程序的第12行的多值轉(zhuǎn)換指令,以便實 施關(guān)于Bin數(shù)據(jù)比特的多值轉(zhuǎn)換處理,每個Bin數(shù)據(jù)比特作為目前為止已經(jīng)實施的Bin解 碼處理中的一個的結(jié)果而獲得。最后,執(zhí)行程序的第13行的無條件分支指令,以便跳轉(zhuǎn)到 返回地址。 圖33是狀態(tài)轉(zhuǎn)變圖,示出了根據(jù)圖32中示出的典型程序,在用以生成B_片子宏 塊類型的語法元素的CABAC解碼處理中出現(xiàn)的狀態(tài)轉(zhuǎn)變。 執(zhí)行圖32所示程序的第5行的附條件分支指令,以便如果由ccO操作數(shù)值指定的 CCR(條件碼寄存器)比特是O,那么跳轉(zhuǎn)到程序的第11行的存儲指令。如上所述,由ccO 操作數(shù)值指定的CCR比特應(yīng)該已經(jīng)用于存儲作為通過第2行的Bin解碼指令而實施的Bin 解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特。因而,程序的第5行的附條件分支指令必須在作為 通過第2行的Bin解碼指令而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特已經(jīng)在CCR 比特處設(shè)置之后才執(zhí)行。然而,完成Bin解碼指令的執(zhí)行耗費時間。這種情況引起等待時 間增加,該等待時間是在CCR比特處建立分支條件所占用的時間。該等待時間是建立用于 第5行的附條件分支指令的分支條件的Bin解碼指令的所謂等待時間(latency)。為了隱 藏該等待時間,程序的第3行的Bin解碼指令在程序的第2行和第5行之間執(zhí)行,以通過使 用由上下文索引37識別的上下文變量而實施Bin解碼處理。以此方式,在正實施該Bin解 碼處理期間,在CCR比特處建立起分支條件。 在通過圖33的狀態(tài)轉(zhuǎn)變圖中的具有上下文數(shù)字36的普通節(jié)點表示的狀態(tài)中,執(zhí) 行圖32所示的程序的第2行的Bin解碼指令。在通過虛線框表示的狀態(tài)中,執(zhí)行相同程序 的第3行的Bin解碼指令,該虛線框包含相同狀態(tài)轉(zhuǎn)變圖中的具有上下文數(shù)字37的普通節(jié) 點。在通過相同狀態(tài)轉(zhuǎn)變圖中的具有由符號cc(36) = l和cc(36) =0示出的分支的分支 節(jié)點表示的狀態(tài)中,執(zhí)行相同程序的第5行的附條件分支指令。 另外,執(zhí)行圖32中示出程序的第4行的Bin解碼指令,以便通過使用由上下文索 引38或39識別的上下文變量,而實施Bin解碼處理以生成Bin數(shù)據(jù)比特。通過指定CINCO 操作數(shù)值,程序的第4行的Bin解碼指令故意地使用附條件遞增功能,CINCO操作數(shù)值意味 著根據(jù)作為通過在前緊鄰Bin解碼指令的執(zhí)行而實施的Bin解碼處理的結(jié)果獲得的Bin數(shù) 據(jù)比特,實施該Bin解碼處理。更具體地,如果作為通過在前緊鄰Bin解碼指令的執(zhí)行而實 施的Bin解碼處理的結(jié)果獲得的Bin數(shù)據(jù)比特為1,那么通過使用由上下文索引38識別的 上下文變量,而實施Bin解碼處理,或如果作為在前緊鄰Bin解碼處理的結(jié)果獲得的Bin數(shù) 據(jù)比特為O,那么通過使用上下文索引39識別的上下文變量,而實施Bin解碼處理。附條件 遞增功能的使用允許消除附條件分支指令(否則在第4行的Bin解碼指令之前將包括附條 件分支指令),因而能夠避免流水線停頓。 在通過圖33的狀態(tài)轉(zhuǎn)變圖中的包含具有上下文數(shù)字(38+s)的普通節(jié)點的虛線框 表示的狀態(tài)中,執(zhí)行圖32所示的程序的第4行的Bin解碼指令,其中符號s表示值0或1。
執(zhí)行圖32所示程序的第6行至第7行中每一行的Bin解碼指令,以便通過使用由 上下文索引39識別的上下文變量,實施Bin解碼處理以生成Bin數(shù)據(jù)比特。也就是說,在行中實施兩次Bin解碼處理,以便生成兩個連續(xù)的Bin解碼比特。然后,執(zhí)行第8行的Bin 匹配指令,以便如果每一個作為之前解碼處理結(jié)果而獲得的第三和第二最近Bin數(shù)據(jù)比特 分別是1和O,那么將1存儲在由指令中指定的ccl操作數(shù)值指示的CCR(條件碼寄存器) 比特中。另一方面,如果每一個作為之前解碼處理結(jié)果而獲得的第三和第二最近Bin數(shù)據(jù) 比特不是分別為1和O,那么執(zhí)行第8行的Bin匹配指令,以便將0存儲在由ccl操作數(shù)值 指示的CCR比特中。以此方式,通過僅僅一個匹配指令的執(zhí)行把兩個Bin數(shù)據(jù)比特與Bin 匹配指令中指定的操作數(shù)進行比較。Bin匹配指令的使用消除了分支指令。因而,能夠避免 流水線停頓。 在由圖33的狀態(tài)轉(zhuǎn)變圖中具有上下文數(shù)字39的上普通節(jié)點表示的狀態(tài)下,執(zhí)行 圖32所示程序的第6行的Bin解碼指令。在由相同狀態(tài)轉(zhuǎn)變圖中具有上下文數(shù)字39的下 普通節(jié)點表示的狀態(tài)下,執(zhí)行相同程序的第7行的Bin解碼指令。在由相同狀態(tài)轉(zhuǎn)變圖中 具有用符號10x以及Oxx和llx表示的分支的分支節(jié)點表示的狀態(tài)下,執(zhí)行相同程序的第 8行的Bin匹配指令和相同程序的第9行的附條件分支指令。 如上所述,根據(jù)本發(fā)明實施例,每個Bin解碼指令可以具有附條件執(zhí)行功能和/或 附條件遞增功能,使得安排指令的自由度能夠增加,并且建立用于Bin解碼指令的分支條 件的指令的等待時間(latency)能夠隱藏。另外,通過使用Bin匹配指令, 一些附條件分支 指令能夠從程序中去除,使得在附條件分支時間的解釋和附條件分支時間的執(zhí)行之間可能 導(dǎo)致的等待時間的停頓周期的數(shù)量能夠減少。也就是說,通過提供具有附條件執(zhí)行功能和 /或附條件遞增功能的Bin解碼指令,以及通過使用根據(jù)本發(fā)明實施例的Bin匹配指令,能 夠增加流水線的執(zhí)行效率。 應(yīng)注意本發(fā)明的實施例只是本發(fā)明的典型實施。如上所述,在實施例中采用的部 分相應(yīng)于附于本發(fā)明說明書的權(quán)利要求中描述的部分。然而,本發(fā)明的實施絕不局限于實 施例。也就是說,為了實現(xiàn)本發(fā)明,可能以不脫離本發(fā)明本質(zhì)的范圍內(nèi)的各種方式改變實施 例。 另外,根據(jù)本發(fā)明實施例的處理過程可以被理解為具有作為一連串處理而將被執(zhí) 行的過程的方法。在此情況下,作為一連串處理而將被執(zhí)行的過程通過將由計算機執(zhí)行 的程序來執(zhí)行,并且該程序預(yù)先存儲在程序記錄介質(zhì)中。程序記錄介質(zhì)的典型例子包括 CD (光盤)、MD (迷你光盤)、DVD (數(shù)字化視頻光盤)、存儲卡和藍光光盤(商標)。
本申請包括的主題涉及2008年11月28日提交日本專利局的日本在先專利申請 JP 2008-303524中所公開的主題,其整個內(nèi)容在此引入以作參考。 本領(lǐng)域技術(shù)人員應(yīng)該理解,取決于設(shè)計需要和其他因素,可能出現(xiàn)各種修改、組 合、子組合和替換,只要他們在所附權(quán)利要求或其等價物的范圍內(nèi)。
權(quán)利要求
一種算術(shù)解碼設(shè)備,包括指令解碼器,配置成對算術(shù)已編碼數(shù)據(jù)解碼指令進行解碼,該算術(shù)已編碼數(shù)據(jù)解碼指令將被執(zhí)行來實施把算術(shù)已編碼數(shù)據(jù)算術(shù)解碼為二進制信號的算術(shù)解碼處理;執(zhí)行條件代碼保存部分,配置成將作為在前緊鄰算術(shù)解碼處理的結(jié)果獲得的所述二進制信號保存為執(zhí)行條件代碼;和算術(shù)解碼執(zhí)行部分,配置成根據(jù)所述執(zhí)行條件代碼確定是由所述算術(shù)已編碼數(shù)據(jù)解碼指令指定的上下文數(shù)字依原樣用作上下文索引,還是增加1的所述指定的上下文數(shù)字用作所述上下文索引,以及通過使用所述確定的上下文索引實施所述算術(shù)解碼處理。
2. 根據(jù)權(quán)利要求1所述的算術(shù)解碼設(shè)備,其中所述算術(shù)解碼執(zhí)行部分基于所述執(zhí)行條 件代碼確定是否實施所述算術(shù)解碼處理。
3. 根據(jù)權(quán)利要求1所述的算術(shù)解碼設(shè)備,其中所述上下文數(shù)字在所述算術(shù)已編碼數(shù)據(jù) 解碼指令中被指定為將加到寄存器的內(nèi)容中的立即值,所述寄存器由也在所述算術(shù)已編碼 數(shù)據(jù)解碼指令中指定的輸入操作數(shù)指示。
4. 一種算術(shù)解碼設(shè)備,包括 指令解碼器,配置成解碼算術(shù)已編碼數(shù)據(jù)解碼指令,該算術(shù)已編碼數(shù)據(jù)解碼指令用于實施把算術(shù)已編碼數(shù)據(jù)算 術(shù)解碼為二進制信號的算術(shù)解碼處理,匹配指令,具有作為輸入操作數(shù)的位圖,所述位圖表示所述算術(shù)解碼處理的匹配條件,和分支指令,用于根據(jù)分支條件代碼產(chǎn)生指令跳轉(zhuǎn);算術(shù)解碼執(zhí)行部分,配置成通過使用由所述算術(shù)已編碼數(shù)據(jù)解碼指令指定的上下文數(shù) 字來實施所述算術(shù)解碼處理;歷史保存部分,配置成用于存儲所述二進制信號的歷史,每個所述二進制信號是作為 所述算術(shù)解碼處理的結(jié)果而獲得的;匹配處理部分,配置成根據(jù)所述二進制信號的所述歷史是否匹配所述匹配條件而設(shè)置 所述分支條件代碼;以及指令控制部分,配置成根據(jù)所述分支條件代碼而進行所述指令跳轉(zhuǎn)。
5. 根據(jù)權(quán)利要求4所述的算術(shù)解碼設(shè)備,其中,如果所述算術(shù)已編碼數(shù)據(jù)解碼指令的 輸入操作數(shù)指定清除由所述歷史保存部分保存的所述歷史的操作,則所述算術(shù)解碼執(zhí)行部 分清除所述歷史。
全文摘要
本發(fā)明公開了一種算術(shù)解碼設(shè)備,包括指令解碼器,配置成對算術(shù)已編碼數(shù)據(jù)解碼指令進行解碼,該算術(shù)已編碼數(shù)據(jù)解碼指令被執(zhí)行來實施把算術(shù)已編碼數(shù)據(jù)算術(shù)解碼為二進制信號的算術(shù)解碼處理;執(zhí)行條件代碼保存部分,配置成將作為在前緊鄰算術(shù)解碼處理的結(jié)果獲得的所述二進制信號保存為執(zhí)行條件代碼;和算術(shù)解碼執(zhí)行部分,配置成根據(jù)所述執(zhí)行條件代碼確定是由所述算術(shù)已編碼數(shù)據(jù)解碼指令指定的上下文數(shù)字依原樣用作上下文索引,還是增加1的所述指定的上下文數(shù)字用作所述上下文索引,以及通過使用所述確定的上下文索引實施所述算術(shù)解碼處理。
文檔編號H03M7/40GK101753148SQ20091022586
公開日2010年6月23日 申請日期2009年11月30日 優(yōu)先權(quán)日2008年11月28日
發(fā)明者坂口浩章 申請人:索尼株式會社