算术解码设备的制作方法

文档序号:7535932阅读:145来源:国知局
专利名称:算术解码设备的制作方法
技术领域
总体地,本发明涉及算术解码方法。更特别地,本发明涉及用于对已经采用 CABAC (Context-Adaptive Binary Arithmetic Coding,上下文自适应二进制算术编码)技 术编码的数据进行解码的算术解码设备。
背景技术
CABAC技术是已经由ITU-T (International Teleco匪nicationUnion-Teleco匪 nication standardization sector,国际电信同盟-电信标准部)标准化的H. 264中熵编 码技术中的一种。根据CABAC技术,在编码处理之前,通过以'0'和'l'符号表达多值数据 而把各种类型的多值数据转换成二进制数据。然后,通过实施二进制算术编码处理而对二 进制数据编码。另一方面,在解码处理中,以相反的方式实施处理。 以'0'和1'符号表达的二进制数据经受二进制算法编码处理,该处理是用{LPS, MPS}代替{0,1}的处理。MPS是最有可能的符号(Most ProbableSymbol)的縮写,该符 号是推断为具有高出现概率的符号。另一方面,LPS是最不可能的符号(Least Probable Symbol)的縮写,该符号是不同于MPS的符号。 于是,以两个不同的符号,即MPS和LPS,表达的二进制数据通过使用算术码而被 编码。通过基于已经处理的数据对每个符号进行预测而确定MPS是'O'或'l'。也就是说, 在编码处理中,仅从已经作为在前编码处理的结果获得的数据确定接下来将被编码的符号 的MPS值。另一方面,在解码处理中,仅从已经作为在前解码处理的结果获得的数据确定接 下来将被解码的符号的MPS值。 另外,二进制算术编码处理包括下述处理,即总是顺序地将概率模型(下文中也 称为上下文(context))切换成从预先准备的多个上下文中合适地选择的上下文,作为适 于当前状态的合适上下文。在CABAC解码处理的情况下,每个相应于上下文中的一个的上 下文变量被预先存储在上下文变量表中。通过利用指向上下文变量的以符号ctxldx表示 的上下文索引(contextindex),从已经预先存储在上下文变量表中的上下文变量中识别以 符号context [ctxldx]表示的上下文变量,而从预先准备的上下文中选择出适于当前状态 的上下文。每个上下文配置成包括示出出现概率的概率状态指标(index)pStateIdx和示 出具有高出现概率的最有可能的符号(MPS)的valMPS。上下文的概率状态指标pStateIdx 示出就在预定范围0至63中的概率状态而言在上下文中LPS的出现概率的推测值。另一 方面,valMPS表明相应于MPS的符号是0或1 。应注意,对于每个上下文变量,相应于该上 下文变量的上下文的概率状态指标pStateldx用符号context [ctxldx]. pStateldx表示, 而相应于该上下文变量的上下文的valMPS用符号context [ctxldx]. valMPS表示。
在CABAC解码器中,选择一个上下文变量以用作被实施来生成一份(即iece of) Bin数据的Bin解码处理的基础。在下文的描述中, 一份Bin数据也称作Bin数据比特,其 是l比特的二进制数据。然后,通过使用作为Bin解码处理的执行结果生成的Bin数据,计 算用于识别上下文变量的上下文索引(index)的更新值。在CABAC解码器中,对于构成宏块(macroblock)的参数的每个定义了解码方法。该参数称作SE(syntax element,语法元 素)。在针对语法元素生成Bin数据的CABAC解码处理中,使用多个上下文变量以生成多个 Bin数据比特。然后,对于Bin数据比特,根据对于语法元素唯一确定的多值转换方法来找 到语法元素的多值数据。 在生成一个Bin数据比特的Bin解码处理中,在许多情况下,下述上下文索引 以升序存在于语法元素的开始和语法元素的中间,所述上下文索引每个根据在前紧邻 (immediately proceding) Bin数据比特的值而确定,作为在Bin解码处理中用于识别上下 文变量的索引。另外,在许多情况下,作为用于生成语法元素的Bin数据的Bin解码处理的 结果所获得的Bin数据的长度是不确定的,直到作为Bin解码处理的结果获得在前紧邻Bin 数据。应注意,Bin数据的长度是Bin数据比特的数量,每个Bin数据比特作为Bin解码处 理的结果获得。因而,在生成用于语法元素的Bin数据的Bin解码处理中,在生成用于另一 语法元素的Bin数据的Bin解码处理的结束之后,每个上下文索引没有确定,直到生成用于 语法元素的在前紧邻Bin数据的Bin解码处理完成。另外,在生成用于语法元素的Bin解 码处理中,存在由相同的上下文索引识别的相同上下文变量连续用于生成用于语法元素的 不同Bin数据比特的不同解码处理的情况,以及存在由不同的上下文索引识别的不同上下 文变量用于生成用于语法元素的不同Bin数据比特的不同解码处理的情况。
存在如下情况,其中识别用于生成在Bin数据的头部的Bin数据比特的上下文变 量的上下文索引是根据从Bin数据获得的语法元素确定的数字。然而,也存在如下情况,其 中识别用于在Bin数据的头部的Bin数据比特的上下文变量的上下文索引是根据下述语法 元素确定的数字,该语法元素是根据每个已经从在前解码处理中生成的Bin数据中获得的 多个语法元素的值是哪些值而从近似四个候选中选择出来的。识别用于除了在语法元素的 头部的Bin数据比特外的Bin数据比特的上下文变量的上下文索引是根据在前紧邻Bin数 据比特是0还是1而计算出,该在前紧邻Bin数据比特是作为通过执行在前紧邻Bin解码指 令所实施的Bin解码处理的结果而获得的。另外,通过参考为语法元素定义的可变长度代 码表,CABAC解码器确定是否已经作为CABAC解码处理的结果获得语法元素的最后(end)。
CABAC解码过程包括许多分支处理,每个分支处理由实现CABAC解码过程的程序 的分支指令执行。另外,用于识别上下文变量的上下文索引并不总是对于每一解码处理都 递增一。例如,可能提供一种配置,其中用于识别上下文变量的相同上下文索引被连续地用 在所有的Bin解码处理中,或上下文索引可对于每一 Bin解码处理递增二。无论如何,如上 所述,上下文索引是根据在前紧邻Bin数据比特的值而计算出来的,其中该在前紧邻Bin数 据比特是作为通过执行在前紧邻Bin解码指令而实施的Bin解码处理的结果而获得的,并 且计算上下文索引的处理不简单。另外,作为用于生成用于语法元素的Bin数据的CABAC 解码处理的结果获得的Bin数据的长度不是由语法元素确定的固定值。相反地,作为CABAC 解码处理的结果获得的Bin数据的长度根据解码处理路径(path)而改变,该解码处理路径 可包括或不包括如上所述的分支处理,该CABAC解码处理用以生成用于语法元素的Bin数 据。因而,由CABAC解码器实施来判定是否作为Bin解码处理的结果生成语法元素的最后 的处理也是复杂的。 存在如下情况,其中识别用于在Bin数据的头部处的Bin数据比特的上下文变量 的上下文索引是根据作为CABAC解码处理的最终结果而获得的语法元素唯一地确定的数字,该CABAC解码处理用于生成用于语法元素的比特数据。另一方面,还存在如下情况,其 中识别用于Bin数据的头部处的Bin数据比特的上下文变量的上下文索引是从邻近宏块唯 一地确定的数字,每个宏块由语法元素组成。如果识别用于Bin数据的头部处的Bin数据 比特的上下文变量的上下文索引是从邻近宏块中唯一地确定的数字,那么参考属于刚好在 当前语法元素上方的邻近宏块的语法元素以及属于在当前语法元素的左侧的邻近宏块的 语法元素。诸如图像的上边缘和图像的左右边缘的图像部分在一些情况下可能没有邻近宏 块。在这样的情况下,还需要实施排除处理。结果是Bin解码处理变得极其复杂。
为了通过使用硬件而实现CABAC解码处理,需要设置用于存储460个上下文变量 的专用存储器和用于保存在前语法元素的专用存储器,这些在前语法元素用于计算识别用 于Bin数据头部处的Bin数据比特的上下文变量的上下文索引。另外,还需要根据每个相 应于语法元素的个别解码方法提供状态机。因而,CABAC解码器出现了需要执行极其复杂 的控制并且电路尺寸不期望地变大的问题。 另一方面,还可能通过使用在硬件组合上执行的软件来实现CABAC解码处理,该 硬件组合假定为包括CPU和处理器。当执行用于给出一个上下文索引的协处理器指令时, 实施Bin解码处理以生成Bin数据比特,并且能够假设为了将Bin数据比特存储在CPU中采 用的寄存器中而执行指令。作为用于执行这样的指令的设备,已经提出了 Bin解码处理流 水线化的CABAC解码器,以生成Bin数据,从而能够在大约与CPU相同的高频下进行操作。 对于提出的CABAC解码器的细节,建议读者参考日本专利特开No. 2007-074648,其中包括 如图6所示的表。

发明内容
根据现有技术,通过运行软件实现生成Bin数据的解码处理,Bin解码处理被流水 线化。结果是期望若干流水线化的处理循环,以获得Bin数据作为Bin解码处理的结果。 因而,不能在应到的(due)时间确定接下来的上下文索引。如果CPU运行软件以计算上下 文索引且确定语法元素的最后,对于生成Bin数据的每个解码处理期望比较指令和分支指 令。因而,进一步延迟了上下文索引的确定。结果是生成接下来Bin数据的Bin解码处理 不能开始,使得频繁地发生流水线停顿(stall)。因而,担心指令执行的效率显著恶化。通 常,为了隐藏指令的等待时间(latency),提供了用于把不取决于在前指令生成的结果的处 理指令插入到落在具有长等待时间的指令之后的指令位置的程序设计技术。然而,在CABAC 解码处理中,几乎没有这样的引入不取决于在前指令生成的结果的指令的处理模式,因而 难于合适地隐藏在前指令的等待时间。 致力于上述问题,本发明的发明人创新了适合用于上下文自适应二进制算术编码 处理的指令集合。 为了解决上述问题,根据本发明的第一模式,提供了一种算术解码设备,采用指 令解码器,配置成对算术已编码数据解码指令进行解码,该算术已编码数据解码指令将被 执行来实施把算术已编码数据算术解码为二进制信号的算术解码处理;执行条件代码保存 部分,配置成将作为在前紧邻算术解码处理的结果获得的所述二进制信号保存为执行条件 代码;和算术解码执行部分,配置成根据所述执行条件代码确定是由所述算术已编码数据 解码指令指定的上下文数字依原样用作上下文索引,还是增加1的所述指定的上下文数字
5用作所述上下文索引,以及通过使用所述确定的上下文索引实施所述算术解码处理。
因而,可能产生如下Bin解码处理的效果,通过根据作为在前紧邻算术解码处理 的结果获得的二进制信号选择上下文索引而实施该Bin解码处理。 另外,根据本发明的第一模式,还可能提供一种构造,其中算术解码执行部分基于
执行条件代码确定是否实施算术解码处理。因而可能产生具有下述能力的效果根据作为
在前紧邻算术解码处理的结果获得的二进制信号控制算术解码处理的执行。 此外,根据本发明的第一模式,还可能提供一种构造,其中所述上下文数字在所述
算术已编码数据解码指令中被指定为将加到寄存器的内容中的立即值,所述寄存器由也在
所述算术已编码数据解码指令中指定的输入操作数指示。因而,可能产生动态地设置上下
文数字的能力的效果。 另外,根据本发明的第二模式,提供了一种算术解码设备,采用指令解码器,配置 成解码算术已编码数据解码指令,该算术已编码数据解码指令用于实施把算术已编码数 据算术解码为二进制信号的算术解码处理,匹配指令,具有作为输入操作数的位图,所述位 图表示所述算术解码处理的匹配条件,和分支指令,用于根据分支条件代码产生指令跳转; 算术解码执行部分,配置成通过使用由所述算术已编码数据解码指令指定的上下文数字来 实施所述算术解码处理;历史保存部分,配置成用于存储所述二进制信号的历史,每个所述 二进制信号是作为所述算术解码处理的结果而获得的;匹配处理部分,配置成根据所述二 进制信号的所述历史是否匹配所述匹配条件而设置所述分支条件代码;以及指令控制部 分,配置成根据所述分支条件代码而进行所述指令跳转。 另外,根据本发明的第二模式,还可能提供一种构造,其中如果算术已编码数据解 码指令的输入操作数指定清除历史的操作,那么算术解码执行部分清除由历史保存部分保 存的历史。因而能够产生在开始用于生成用于语法元素的Bin数据的Bin解码处理之前清 除历史的效果。 根据本发明的实施例,在通过运行软件而实施的上下文自适应二进制算术解码处 理中,可能给出增加处理速度能力的良好效果。


图1是方框图,示出了根据本发明实施例的用作算术解码设备的典型例子的 CABAC解码器的典型功能构造; 图2示出了表示根据本发明实施例的CABAC解码处理的典型过程的流程图;
图3A至3C是多个图表,每个图表示出了实施例中每个识别上下文变量的上下文 索引到用于宏块类型上下文组的SE(语法元素)的典型分配; 图4是长度可变代码表,示出了 Mb_Type_I的语法元素和Bin数据之间的关系,该 Mb一Type一I是I片的mb一type ; 图5是长度可变代码表,示出了 Mb_Type_P的语法元素和Bin数据之间的关系,该 Mb一Type一P是P片的mb一type ; 图6是长度可变代码表,示出了 MbvType_B的语法元素和Bin数据之间的关系,该 Mb一Type一B是B片的mb一type ; 图7是长度可变代码表,示出了 SubMb_Type_P的语法元素和Bin数据之间的关系,该SubMb_Type_P是P片的sub_mb_type ; 图8是长度可变代码表,示出了 SubMb_Type_B的语法元素和Bin数据之间的关 系,该SubMb_Type_B是B片的sub_mb_type ; 图9是方框图,示出了根据本发明实施例的CABAC解码器的典型硬件构造;
图10是方框图,示出了根据本发明实施例的CABAC解码器中采用的解码协处理器 的典型构造; 图11是根据本发明实施例的用于CABAC解码处理的典型指令集合的表格;
图12A至12F是多个图表,每个示出了被执行以实施本发明实施例中的CABAC解 码处理的协处理器指令的典型格式; 图13是方框图,示出了根据本发明实施例的在解码协处理器中应用的Bin解码器 的典型构造; 图14是方框图,示出了根据本发明实施例的在Bin解码器中应用的再正规化 (renormalization)部分的典型构造; 图15是状态转变图,示出了在用以生成I-片宏块类型的语法元素的CABAC解码 处理中出现的状态转变; 图16示出了由属于根据本发明实施例的指令集合的指令组成的典型程序,以用 作将被执行来实施用于生成I-片宏块类型的语法元素的CABAC解码处理的程序;
图17是状态转变图,示出了根据图16中示出的典型程序,在用以生成I-片宏块 类型的语法元素的CABAC解码处理中出现的状态转变; 图18是状态转变图,示出了在用以生成P-片宏块类型的语法元素的CABAC解码 处理中出现的状态转变; 图19是状态转变图,示出了在用以生成P-片宏块类型的宏块内的语法元素的 CABAC解码处理中出现的状态转变; 图20示出了由属于根据本发明实施例的指令集合的指令组成的典型程序,以用 作将被执行来实施用于生成P-片宏块类型的语法元素的CABAC解码处理的程序;
图21是状态转变图,示出了根据图20中示出的典型程序,在用以生成P-片宏块 类型的语法元素的CABAC解码处理中出现的状态转变; 图22是状态转变图,示出了根据图20中示出的典型程序,在用以生成P-片宏块 类型的宏块内的语法元素的CABAC解码处理中出现的状态转变; 图23是状态转变图,示出了在用以生成B-片宏块类型的语法元素的CABAC解码 处理中出现的状态转变; 图24是状态转变图,示出了在用以生成B-片宏块类型的宏块内的语法元素的 CABAC解码处理中出现的状态转变; 图25示出了由属于根据本发明实施例的指令集合的指令组成的典型程序,以用 作将被执行来实施用于生成B-片宏块类型的语法元素的CABAC解码处理的程序;
图26是状态转变图,示出了根据图25中示出的典型程序,在用以生成B-片宏块 类型的语法元素的CABAC解码处理中出现的状态转变; 图27是状态转变图,示出了根据图25中示出的典型程序,在用以生成B_片宏块 类型的宏块内的语法元素的CABAC解码处理中出现的状态转变;
图28是状态转变图,示出了在用以生成P-片子宏块类型的语法元素的CABAC解 码处理中出现的状态转变; 图29示出了由属于根据本发明实施例的指令集合的指令组成的典型程序,以用 作将被执行来实施用于生成P-片子宏块类型的语法元素的CABAC解码处理的程序;
图30是状态转变图,示出了根据图29中示出的典型程序,在用以生成P-片子宏 块类型的语法元素的CABAC解码处理中出现的状态转变; 图31是状态转变图,示出了在用以生成B-片子宏块类型的语法元素的CABAC解 码处理中出现的状态转变; 图32示出了由属于根据本发明实施例的指令集合的指令组成的典型程序,以用 作将被执行来实施用于生成B-片子宏块类型的语法元素的CABAC解码处理的程序;禾口
图33是状态转变图,示出了根据图32中示出的典型程序,在用以生成B_片子宏 块类型的语法元素的CABAC解码处理中出现的状态转变。
具体实施例方式
下面解释了实施本发明的优选实施例。在下面的描述中,优选实施例简单地称为
实施例。按如下布置的章节中对实施例进行描述。 1 :CABAC解码器的概述 2 :协处理器指令 3 :典型应用 1 :CABAC解码器的概述 CABAC解码器的典型构造 图1是方框图,示出了根据本发明实施例的用作算术解码设备的典型例子的 CABAC解码器20的典型功能构造。如图所示,用于实施CABAC解码处理的CABAC解码器20 采用了 二进制算术编码_解码处理部分21以及多值转换部分24, 二进制算术编码_解码处 理部分21用于接收来自代码串输入部分10的已编码数据,并实施将已编码数据解码成二 进制数据的Bin( 二进制)解码处理,多值转换部分24用于对二进制数据实施多值转换处 理,以将二进制数据转换成多值信号。在图中,二进制数据用符号Bin数据表示,而多值信 号用代表语法元素的符号SE表示。语法元素是规定通过使用H. 264中的语法的传送的信 息。如图中所示,除了二进制算术编码_解码处理部分21和多值转换部分24之外,CABAC 解码器20还采用了上下文索引计算部分22和上下文变量表保存部分23。
上下文索引计算部分22是用于计算上下文索引ctxldx和将上下文索引提供给二 进制算术编码-解码处理部分21的部分。当上下文索引计算部分22计算上下文索引时, 上下文索引计算部分22参考作为由二进制算术编码_解码处理部分21实施的Bin解码处 理的结果获得的Bin数据和由多值转换部分24输出的语法元素。 上下文变量表保存部分23是用于将每个相应于上下文的上下文变量保存在上下 文变量表中的部件。每个上下文变量具有示出出现概率的概率状态指标(index)pStateldx 和示出具有高出现概率的最有可能的符号(mostprobable symbol, MPS)的valMps。保 存在上下文变量表保存部分23中的每个上下文变量由上下文索引ctxldx识别且表达为 context(ctxldx)。
二进制算术编码_解码处理部分21接收代码串输入部分10提供的已编码数据, 以及实施将已编码数据解码成二进制数据的Bin(二进制)解码处理。当二进制算术编 码-解码处理部分21解码一个符号时,二进制算术编码-解码处理部分21从上下文索引 计算部分22得到上下文索引ctxldx,然后上下文变量表保存部分23获得由上下文索引 ctxldx识别(identify)的上下文变量context [ctxldx]。随后,二进制算术编码_解码处 理部分21基于上下文变量context [ctxldx]对已编码数据的符号进行解码,并将作为Bin 解码处理的结果获得的Bin数据提供给多值转换部分24。 多值转换部分24对于二进制算术编码_解码处理部分21输出的Bin( 二进制) 数据实施多值转换处理,以将二进制数据转换成称为语法元素的原始多值信号。由编码器 实施的二进制算术编码处理是根据语法元素将原始多值信号转换成用Bin( 二进制)数据 表示的二进制信号的处理。由多值转换部分24实施的多值转换处理是由编码器实施的二 进制算术编码处理的逆处理。如上所述,多值转换处理由多值转换部分24实施,以将表示 二进制信号的Bin数据转换回称为语法元素的原始多值信号。 图2示出了表示根据本发明实施例的CABAC解码处理的典型过程的流程图。CABAC 解码处理划分成两大处理部分。第一大处理部分是在步骤S902至S904,通过使用上下文 变量而实施的Bin ( 二进制)解码处理以生成Bin数据,而第二大处理部分是在步骤S901 和S905至S907实施的多值转换处理,以将Bin数据转换成原始多值信号。特别地,在步骤 S903实施的处理称为较早描述的Bin解码处理,然而在步骤S907实施的处理称为上面解释 的多值转换处理。 如图所示,流程图从步骤S901开始,在该步骤中,上下文索引计算部分22计算用 于语法元素的Bin数据的头部处的Bin数据比特的上下文索引ctxldx。在一些情况下,用 于语法元素的Bin数据的头部处的Bin数据比特的上下文索引ctxldx是根据将在CABAC 解码处理中最终产生的语法元素确定的数字,该CABAC解码处理包括用于生成上述Bin数 据的Bin解码处理。在其它情况下,用于Bin数据的头部处的Bin数据比特的上下文索引 ctxldx是根据下述语法元素确定的数字,该语法元素是根据已经从在前解码处理中生成的 多个语法元素的值是什么值而从近似四个候选中选择出的。 然后,在接下来的步骤S902中,二进制算术编码_解码处理部分21从上下文索引 计算部分22得到上下文索引ctxldx,以及从上下文变量表保存部分23获得由上下文索引 ctxldx识另U的上下文变量context [ctxldx]。 随后,在接下来的步骤S903中,二进制算术编码_解码处理部分21使用从上下文 变量表保存部分23获得的上下文变量,以实施将从代码串输入部分10接收的已编码数据 解码成Bin数据的Bin解码处理。然后,在接下来的步骤S904中,通过使用作为Bin解码 处理的结果获得的Bin数据,计算用于识别由上下文变量表保存部分23保存的上下文变量 的上下文索引的更新值。 随后,在接下来的步骤S905中,多值转换部分24参考下文将描述的长度可变 (variable-length)代码表,以便做出关于是否已经作为CABAC解码处理结果获得了用于 语法元素的最后(end)的Bin数据的确定结果。如果该确定结果没有表明已经作为CABAC 解码处理结果获得了语法元素的最后,处理流程继续到步骤S906,在步骤S906中,上下文 索引计算部分22计算接下来的上下文索引ctxldx。然后,处理流程返回到步骤S902,以重复在步骤S902和后续步骤实施的处理。在用于非语法元素的开始的语法元素部分的Bin 数据情况下,在步骤S906中,上下文索引计算部分22根据下述Bin数据是0还是1 ,计算上 下文索引ctxldx,该Bin数据是作为通过执行在前紧邻Bin解码指令而实施的Bin解码处 理的结果而获得的。另一方面,如果在步骤S905中生成的确定结果表明已经作为CABAC解 码处理结果获得语法元素的最后,那么处理流程继续到步骤S907,在步骤S907中,多值转 换部分24生成语法元素作为多值信号。
CABAC解码概述 如上所述,通过使用从上下文变量表保存部分2 3获得的上下文变量 context [ctxldx]作为由通过上下文索引计算部分22生成的上下文索引ctxldx识别的上 下文变量,二进制算术编码_解码处理部分21实施Bin解码处理,作为CABAC解码处理的 一部分。下面的描述通过采用MB(宏块)类型上下文组作为例子,解释上下文索引、Bin数 据和语法元素之间的关系。 图3A至3C是多个图表,每个图表示出了实施例中每个识别上下文变量的上下文 索引到用于宏块类型上下文组的SE(语法元素)的典型分配(assignment)。附图标记cidx 表示分配中相对于语法元素的开始的上下文索引。数字0、1、2等是相对上下文索引cidx 的值。另一方面,附图标记ctxldx表示H. 264中规定的上下文索引。显示在图3A的图表 中的数字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 数据之间的关系,该语法元素可以是mb_type或sub_mb_type。更详细地,图4是长度可变 代码表,示出了 Mb_Type_I的语法元素和Bin数据之间的关系,该Mb_Type_I是I片的mb_ type。图5是长度可变代码表,示出了 Mb_Type_P的语法元素和Bin数据之间的关系,该Mb— Type_P是P片的mb_type。图6是长度可变代码表,示出了 Mb_Type_B的语法元素和Bin 数据之间的关系,该Mb_Type_B是B片的mb_type。图7是长度可变代码表,示出了 SubMb_ Type_P的语法元素和Bin数据之间的关系,该SubMb_Type_P是P片的sub_mb_type。图 8是长度可变代码表,示出了 SubMb_Type_B的语法元素和Bin数据之间的关系,该SubMb_ Type_B是B片的sub_mb_type。 多值转换部分24参考图4至8的长度可变代码表,以便生成关于作为Bin解码处 理的结果是否已经获得用于语法元素的最后的Bin数据比特。如果确定的结果没有表示已经获得用于语法元素的结束的Bin数据,那么重复二进制算术编码_解码处理部分21执行
的Bin解码处理以生成Bin数据,直到已经生成关于语法元素的结束的Bin数据。当已经获
得关于语法元素的结束的Bin数据时,多值转换部分24参考图4至8的长度可变代码表,
以便输出语法元素的多值信号。 CABAC解码器的典型硬件构造 图9是方框图,示出了根据本发明实施例的CABAC解码器20的典型硬件构造。根据本发明的实施例,如图所示,CABAC解码器20设计为信息处理设备,该信息处理设备配置成包括用作核心部分(core section)的CPU 200和解码协处理器300。假定该信息处理设备起CABAC解码器20的作用,在解码器20中,CPU 200向解码协处理器300发出用于实施CABAC解码处理的协处理器指令。更详细地,信息处理设备采用存储器110、指令高速缓存120、数据高速缓存130、DMA(直接存储器存取)控制器140、总线109、前述的CPU 200和在前引用的解码协处理器300。 存储器110是用于存储将由CPU 200和解码协处理器300执行的程序的主存储器。存储器110还用于存储诸如将在程序的执行中被处理的数据的信息。指令高速缓存120是用于临时存储在存储器110中存储的程序的指令序列(instruction sequence)的单级(single-level)高速缓存。数据高速缓存130是用于临时存储在存储器110中存储的数据的单级高速缓存。DMA控制器140是用于实施把存储在存储器110中的数据传输到解码协处理器300或反之而不用通过CPU 200移动数据的DMA(直接存储器存取)传输的控制部件。总线109是用于将存储器110、指令高速缓存120、数据高速缓存130和DMA控制器140彼此连接的总线。CPU 200是用于执行从指令高速缓存120读取的指令的处理器。解码协处理器300是用于执行CPU 200提供的协处理器指令的协处理器。
DMA控制器140根据开始数据流的传输的请求,将来自存储器110的数据流通过总线109传输到解码协处理器300。将传输的数据流在已经预先设置在DMA控制器140中的读取开始地址处开始。将传输的数据流的长度由也已经预先设置在DMA控制器140中的读取数据大小指定。在数据流的传输中,数据流顺序地从存储器110中读出,并通过总线109和DMA控制器140传输到解码协处理器300。在解码协处理器300实施的再正规化处理的过程中,在沿左方向移位(shift) codIOffset的操作期间,如下文所述,与移位量相等数目的比特组成的流被包括在codIOffset的LSB侧。以此方式,数据流自动地从存储器110读出,并且实施CABAC解码处理。 CPU 200采用指令解码器210、指令控制部分220、处理流水线(pipeline) 230、处理器寄存器集合240和加载存储单元250。指令解码器210是用于对从指令高速缓存120读取的指令进行解码(或解释)的部件。指令控制部分220是用于确定哪个指令将由CPU200执行的部件。指令控制部分220具有PC(程序计数器)。在正常状态下,程序计数器通过递增一而更新,使得连续的指令由CPU 200执行。然而,如果指令解码器210检测到作为指令解码(解释)处理的结果的分支指令,并且必须跳转到特定指令而不是紧随当前解码分支指令后的指令,则指令控制部分220将程序计数器更新到指向用作分支的目的地的特定指令的值。处理流水线230是流水线化处理器。为了简单起见,仅仅一个流水线示出在图9的方框图中。然而,如果需要可设置多个流水线作为处理流水线230。处理器寄存器集合240包括GPR(ge證al-purpose register,通用寄存器)禾口 CCR(condition-code
11register,条件码寄存器)。加载存储单元250是用于将数据从存储器110经由数据高速缓存130加载到寄存器以及用于将数据从寄存器经由数据高速缓存130存储到存储器110的部件。在此情况下,寄存器可以是在CPU 200中采用的处理器寄存器集合240,或下文将描述的作为在解码协处理器300中采用的协处理器寄存器的一组协处理器寄存器。
协处理器指令队列301和写回(write-back)缓冲器309设置在CPU 200和解码协处理器300之间。协处理器指令队列301是用于将来自CPU 200的协处理器指令传递到解码协处理器300的部件。写回缓冲器309是存储器,用于将来自解码协处理器300的数据写回到包括在CPU 200中采用的处理器寄存器集合240内的通用寄存器GPR。
刚好在重置(reset)之后,根据指令控制部分220的程序计数器,CPU 200经由指令高速缓存120从包括在存储器110中的、作为从预先确定的存储器地址开始的区域的区域顺序地读取指令。在CPU 200中,指令解码器210对指令中每个单个指令进行解码,并根据指令解码的结果执行控制,以便驱动在单个指令的执行中期望的部件。如果经解码的指令是用于CPU 200的指令,那么驱动在CPU 200中采用的处理流水线230来操作。另一方面,如果经解码的指令是用于解码协处理器300的指令,那么CPU 200经由协处理器指令队列301将该指令传递到解码协处理器300。如果解码协处理器300接收用于解码协处理器300的指令,那么解码协处理器300解释该指令,并实施对于指令的执行所必须的控制。根据指令控制部分220的程序计数器,CPU200然后读取接下来的指令,并重复上述处理。
然而,如果指令解码器210实施的指令解码处理的结果表明该指令是分支指令时,那么需要跳转到分支目的地的存储器地址。在此情况下,在指令控制部分220的程序计数器中设置跳转目的地的地址。然后,CPU 200顺序地读取来自包括在存储器110中的区域的指令,该区域作为从分支目的地的存储器地址开始的区域。分支指令可以是无条件分支指令或附条件分支指令。在无条件分支指令的情况下,需要无条件地跳转到分支目的地的存储器地址。另一方面,在附条件分支指令的情况下,根据BC(branch code,分支代码)具有的值是O还是l,跳转到分支目的地的存储器地址。BC是CCR(condition code register,条件码寄存器)中的比特。有可能提供如果BC是O则跳转到分支目的地的存储器地址的附条件分支指令,和有可能提供如果BC是1则跳转到分支目的地的存储器地址的附条件分支指令。CCR(条件码寄存器)具有多个比特,每个比特都用作BC。例如,根据用于实施比较处理的指令的执行结果,CCR的BC比特置位为1或重置为0。作为另一例子,根据用于实施逻辑处理的指令的执行结果,CCR的另一 BC比特置位为1或重置为0。
图10是方框图,示出了根据本发明实施例的解码协处理器300的典型构造。如图所示,解码协处理器300采用了协处理器指令解码器310、Bin解码器320、上下文变量寄存器330、 Bin缓冲器340、 Bin计数器350和写回数据发生器360。 协处理器指令解码器310是用于对协处理器指令进行解码(或解释)的指令解码
器,协处理器指令经由协处理器指令队列301提供给协处理器指令解码器310。协处理器指
令解码器310是本发明说明书所附的权利要求中描述的指令解码器的典型例子。 Bin解码器320是用于实施对从DMA控制器140接收的编码数据进行解码的Bin
解码处理以便生成Bin数据的解码器。Bin解码器320是本发明说明书所附的权利要求中
描述的算术解码执行部分的典型例子。 上下文变量寄存器330是用于保存生成Bin数据的Bin解码处理中期望的上下文变量的寄存器。上下文变量寄存器330具有128比特的典型长度,用于存储16个上下文变量,每个上下文变量具有8比特的大小。根据协处理器加载指令或协处理器存储指令而在上下文变量寄存器330和存储器110之间交换上下文变量。更详细地,在用于生成语法元素的CABAC解码处理之前,根据协处理器加载指令,用于该语法元素的上下文变量被从存储器110加载到上下文变量寄存器330(图2中示出的流程图的步骤S902)。然后,通过实施CABAC解码处理生成整个语法元素。稍后,在用于生成下一个语法元素的CABAC解码处理之前,根据协处理器存储指令,作为在前CABAC解码处理结果而获得的语法元素的上下文变量被从上下文变量寄存器330存储到存储器IIO(图2中示出的流程图的步骤S904)。然后,根据协处理器加载指令,用于下一个语法元素的上下文变量被从存储器110加载到上下文变量寄存器330 。以此方式,每个由期望的上下文变量组成的集合被顺序地从存储器110加载到上下文变量寄存器330,并用于CABAC解码处理。 在CABAC解码处理中,有可能通过使用由4比特组成的上下文数字(相对上下文索引)cidx来识别16个上下文变量中的一个。实际上,用于每个语法元素的上下文变量的数量已知为最多16个,如图3的图表中示出的cidx值的数量所示。也就是说,上下文数字cidx用于识别存储在上下文变量寄存器330中的16个上下文变量中的一个,并且能够实施相应于计算上下文索引ctxldx的处理。因而,也能够简化Bin解码器320。另外,代替访问用于存储所有的上下文变量的大型SRAM,通过访问具有更小尺寸的数据高速缓存130,能够实施Bin解码处理。因而,能够以小规模电路实现CABAC解码器20。应注意,如上所示,假定上下文变量寄存器330的每8比特被分配给一个上下文变量。因为上下文变量被实现为7比特,因而上下文变量寄存器330可以被配置为具有112比特。 还值得注意的是,根据协处理器加载指令,上下文变量被从存储器110加载到上下文变量寄存器330,并且上下文变量以此方式布置在上下文变量寄存器330中,使得由上下文索引ctxldx识别的每个上下文变量相应于图3的图表中示出的上下文数字cidx的值。另外,执行协处理器存储指令,以将布置在上下文变量寄存器330中的上下文变量传输到从存储器110中选择的与用于最初存储该上下文变量的位置相同的位置。
用符号BINBUF表示的Bin缓冲器340是用于保存Bin数据的历史的缓冲器,该Bin数据作为Bin解码器320实施的Bin解码处理的结果而获得。Bin缓冲器340是典型的至少由7比特组成的移位寄存器。因而,Bin缓冲器340能够用于最多同时保存七份Bin数据(或7Bin数据比特)。Bin缓冲器340是本发明说明书所附的权利要求中描述的历史保存部分的典型例子。 用符号BINCNT表示的Bin计数器350是用于对Bin解码器320解码的Bin数据比特的数量进行计数的计数器。当在CABAC解码处理中根据Bin数据生成语法元素的头部时,Bin解码器320被清零以设置其内容为0。因而,在用于生成语法元素的Bin解码处理的处理结束之后,可以从Bin计数器350获得Bin数据比特串的长度作为保存在Bin缓冲器340中的Bin数据比特的数量。 写回数据发生器360是用于通过参考Bin数据的值,实施对存储在Bin缓冲器340中的Bin数据的加工(fabrication)处理的部件。加工处理的典型例子是以比特为单位取出(fetch)Bin数据的处理。作为加工处理的结果获得的数据经由写回缓冲器309被传输到CPU 200中的通用寄存器GPR或条件代码寄存器CCR。除了简单的数据加工处理之外,写回数据发生器360还具有用于实施匹配处理的功能。匹配处理功能是如下功能指定将与保存在Bin缓冲器340中的Bin数据的历史进行比较的多个比特模式(pattern),以及在Bin数据的历史与比特模式中的一个匹配的条件下生成1或在Bin数据的历史与比特模式中的任一个都不匹配的条件下生成O。用于匹配处理中的条件每个都称为匹配条件。应注意,写回数据发生器360是本发明说明书所附的权利要求中描述的匹配处理部分的典型例子。 2 :协处理器指令
指令集合的概述 图11是根据本发明实施例的用于CABAC解码处理的典型指令集合的图表。助记符(mnemonic)列中包含在括号[]内的部分表示能够从指令中省略的可选操作数。符号cpr表示协处理器寄存器中的任意一个,协处理器寄存器除了上下文变量寄存器330之外,还包括Bin缓冲器340和Bin计数器350。 cbc_dec_bin指令、cbc_dec_bin_cc指令禾口 cbc_dec_term_cc指令中的任——个是用于通过使用Bin解码器320实施基于CABAC技术的Bin解码处理以生成Bin数据的Bin解码指令。在cbC_dec_bin指令的执行中,被指定为指令中的操作数的上下文数字cidx的立即值(immediate value)被加到通用寄存器GPR[rs]的内容,以得到加和(cidx+GPR[rs]),该通用寄存器GPR[rs]由也在指令中指定的rs操作数值指示。通用寄存器GPR[rs]是由rs操作数指示的寄存器编号识别的通用寄存器GPR。然后该加和(cidx+GPR[rs])用于指定已经预先存储在上下文变量寄存器330中的上下文变量CTX中的一个。由加和(cidx+GPR[rs])识别的上下文变量CTX用符号CTX(cidx+GPR[rs])表示。由加和(cidx+GPR[rs])识别的上下文变量CTX(cidx+GPR[rs])被用在生成Bin数据比特的Bin解码处理中,该Bin数据比特然后被附加地(additionally)存储在Bin缓冲器340中。每次Bin数据比特被附加地存储在Bin缓冲器340中,Bin计数器350的内容递增1。在Cbc_dec_bin指令中可以指定可选的CEXO操作数值。包括可选的CEXO操作数值的cbC_dec_bin指令仅当刚好在前生成的Bin数据是0时才被执行。同样,可以在cbc_dec_bin指令中指定可选的CEX1操作数值。包括可选的CEX1操作数值的Cbc_dec_bin指令仅当刚好在前生成的Bin数据是1时才执行。另外,可以在cbC_dec_bin指令中指定可选的CINCO操作数值。如果刚好在前生成的Bin数据是0时,执行包括可选的CINCO操作数值的cbc_dec_bin指令,以通过使用上下文变量CTX(cidx+GPR[rs]+l)实施Bin解码处理。同样,可以在cbC_dec_bin指令中指定可选的CINC1操作数值。如果刚好在前生成的Bin数据是1时,执行包括可选的CINC1操作数值的Cbc_dec_bin指令,以通过使用上下文变量CTX(cidx+GPR[rs]+l)实施Bin解码处理。另外,可以在cbc_dec_bin指令中指定可选的CLR操作数值。当执行包括可选的CLR操作数值的Cbc_dec_bin指令以便实施Bin解码处理时,在Bin解码处理之前对Bin缓冲器340和Bin计数器350清零。也就是说,当执行包括可选的CLR操作数值的Cbc_dec_bin指令以便实施Bin解码处理时,在Bin解码处理之前,清空Bin缓冲器340,并且Bin计数器350的内容被设置为0。随着稍后生成一份(a piece of) Bin数据,因而Bin计数器350的内容通过递增1而从0到1 。
执行cbc_dec_bin_CC指令,以便将作为Bin解码处理的结果获得的Bin数据存储在条件代码寄存器CCR的特定比特中。CbC_dec_bin_CC指令中指定的cc操作数用于指定条件代码寄存器CCR的特定比特。Cbc_dec_bin_CC指令的其它操作数与在cbc_dec_bin指令中指定的操作数一样。 执行cbc_dec_term_cc指令,以通过将pStateldx设置为63且将valMPS设置为0,实施生成Bin数据的Bin解码处理。作为CbC_dec_term_CC指令的执行结果获得的Bin数据比特被附加地存储在Bin缓冲器340中。每次Bin数据比特被附加地存储在Bin缓冲器340中,Bin计数器350的内容递增1。另外,作为Bin解码处理的结果获得的Bin数据被存储在条件代码寄存器CCR的特定比特中。在CbC_dec_term_CC指令中指定的cc操作数用于指定条件代码寄存器CCR的特定比特。 cbcjiiatch指令是将被执行用于驱动写回数据发生器360实施匹配处理的Bin匹配指令。更详细地,执行cbcjiiatch指令,以实施把指令中指定的每个特定操作数与用作比较对象的Bin缓冲器340的四个LSB侧比特进行比较的匹配处理。Bin缓冲器340的四个LSB侧比特表示四个最近的(recent)Bin数据比特。在下面的描述中,最近生成的Bin数据比特也称为第一最近Bin数据比特,第一最近Bin数据比特的在前紧邻的最近Bin数据比特称为第二最近Bin数据比特,第二最近Bin数据比特的在前紧邻的最近Bin数据比特称为第三最近Bin数据比特等。如果一组匹配模式 一 每一个列出为cbcjiiatch指令的特定操作数中的一个 一包括与Bin缓冲器340的四个LSB侧比特相同的模式,那么通过cbc_match指令的cc操作数指定的CCR(条件码寄存器)比特被设置为1。另一方面,如果一组匹配模式 一 每一个列出为cbcjiiatch指令的特定操作数中的一个 一 不包括与Bin缓冲器340的四个LSB侧比特相同的模式,那么通过cbcjiiatch指令的cc操作数指定的CCR(条件码寄存器)比特被设置为O。 在cbcjiiatch指令的助记符中,符号ptnO、ptnl等是匹配模式,每一个列出为cbc—match指令的特定操作数中的一个。例如,匹配模式ptn0、ptnl、ptn2等中的每一个是四个连续字符,每一个能够是三个不同字符,即0、1和x中的一个。构成匹配模式的四个连续字符中的第一个、第二个、第三个和第四个将分别与四个最近Bin数据比特中的第一个、第二个、第三个和第四个进行比较。更具体地,作为例子,让匹配模式ptn0、ptnl、ptn2等分别为0001、 xxxl、 xlOx等。如果四个最近Bin数据比特中的第一个、第二个、第三个和第四个分别为0、0、0和l,那么我们说该OOOl的匹配模式ptnO与四个最近Bin数据比特匹配(或与之相同)。 附带地,匹配模式中的特征x代表不关注的比特。也就是说,匹配模式中的特征x代表0和1比特这两者。因而,xxxl的匹配模式代表每个包括为1的第一比特1而不管其余比特具有的值的所有匹配模式。同样,xlOx的匹配模式ptn2代表每个包括为1的第二比特和为0的第三比特而不管其余比特具有的值的所有匹配模式。 匹配模式集合(ptn0,ptnl,ptn3,ptn4卜-如上所述每个作为cbc_match指令的特定操作数中的一个列出 一是形成16比特位图的立即值(immediate value)的集合,。典型地,在位图(bit m即)的比特处设置的值1(或0)在每个匹配模式的相应比特处设置,作为将与四个最近的Bin数据比特的相应比特的值进行比较的值。 cbc—tblidx指令是多值转换表索引指令,用于加工存储在Bin缓冲器340中的Bin数据的值,以便将该Bin数据与存储在代码表中的Bin数据对齐(align) 。 Bin数据由代码表定义为具有可变长度的数据,并且是每个都能作为Bin解码处理的唯一结果获得的长度可变代码。因而,如果预先准备通过使用代码表的索引(index)创建的代码表,那么多值转换处理的执行变得方便。代码表的索引是用于实施左移(left-shifting)操作以把最长代码的MSB (Most Significant Bit,最高有效位)与每个可变长度代码的MSB对齐的比特计数。cbC_tblidx指令包括指定作为CABAC解码处理的结果获得的语法元素的最大比特计数的w操作数。执行Cbc_tblidx指令以将Bin缓冲器340的内容沿左方向移位(BINCNTi)个比特,其中符号BINCNT表示代码表的索引。这样,加工Bin缓冲器340的内容,使得与语法元素的头部(head)对应的Bin数据比特变为w个比特的值的MSB。另外,Cbc_tblidx指令还包括指定寄存器编号的另一 rd操作数。根据Cbc_tblidx指令,把w个比特的数据存储在通用寄存器GPR[rd]中,该通用寄存器GPR[rd]由指定为另一操作数的寄存器编号rd指示。 cbc—MbTypel矛旨々、cbc—MbTypeP矛旨々、cbc—MbTypeB矛旨々、cbc_SubMbTypeP矛旨々和cbC_SUbMbTypeB指令中的每一个是多值转换指令。这些多值转换指令中的每一个被执行来根据图4至8的图表中示出的H. 264规范中规定的解码过程,从存储在Bin缓冲器340中的Bin数据和Bin计数器350的内容计算语法元素的多值信号。计算出的多值信号被存储在通用寄存器GPR[rd]中,该通用寄存器GPR[rd]由被指定为每个指令中的rd操作数的寄存器编号rd指示。 目前为止解释的每个协处理器指令经由协处理器指令队列301从CPU200传递到解码协处理器300,并由解码协处理器300执行。除了协处理器指令之外,处理器指令由CPU200执行,用于实施CABAC解码处理。如下将解释由CPU 200执行的处理器指令。
cbcjdq指令是加载指令,用于将数据从存储器110加载到解码协处理器300中采用的协处理器寄存器。执行cbc—ldq指令以便从存储器110中的地址读出具有128比特大小的数据,并将数据存储在由指令中指定的操作数cpr指示的协处理器寄存器中。
cbc—stq指令是存储指令,用于将数据从解码协处理器300中采用的协处理器寄存器存储到存储器110。执行Cbc_stq指令以便从由指令中指定的操作数cpr指示的协处理器寄存器中读取具有128比特大小的数据,并将数据存储在存储器110中的地址处。
br指令是附条件分支指令,用于根据分支条件代码附条件地跳转到分支目的地的地址。执行br指令,以便如果由指令的cc操作数指定的CCR(条件码寄存器)比特的值等于指令的操作数v则附条件地跳转到地址,该地址由用于指示存储器110中的地址的指令的操作数addr指定。由br指令的操作数addr指定的用于指示存储器110中的地址的地址是上述的分支目的地的地址。 jpr指令是无条件分支指令,用于无条件地跳转到分支目的地的地址,而不管分支条件代码。执行jpr指令,以便无条件地跳转到地址,而不管CCR(条件码寄存器)的内容如何,该地址由指令的操作数addr指定,用于指示存储器110中的地址。由指令的操作数addr指定的用于指示存储器110中的地址的地址是上述分支目的地的地址。
协处理器指令的典型指令格式 图12A至12F是多个图表,每个图表示出了被执行以实施本发明实施例中的CABAC解码处理的协处理器指令的典型格式。更具体地,图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指令中的每一个指令的典型格式的图表。 每个协处理器指令的指令格式的第31至26比特分配给COP,这对于所有协处理器指令是一样的。第5至0比特分配给用于指示协处理器指令的功能的代码。第25至21比特分配给rs操作数,而第15至11比特分配给rd操作数。rs和rd操作数中的每一个都是分配给通用寄存器GPR的寄存器编号。在第24至21比特处设置的w操作数指定用作在前描述的多值转换表索引指令的对象的比特数目。在第18至16比特处设置的cc操作数表示条件代码寄存器CCR中比特的位置。在第14至11比特处设置的cidx操作数表示上下文数字。在第6比特处设置的CLR操作数值是用作指示在Bin解码处理之前是否对Bin缓冲器340和Bin计数器350进行清零的标记的可选操作数。 如图12D的图表所示,在第24至19比特以及第15至6比特处设置的十六个PXXXX字段用于设置上述的四个匹配模式。符号XXXX表示匹配模式的比特。如上所述,如果XXXX值的任何一个匹配Bin缓冲器340的四个最近Bin数据比特(或四个LSB侧比特),那么在由第18至16比特处设置的cc字段指定的CCR(条件码寄存器)比特处设置1。另一方面,如果任何XXXX值都不匹配Bin缓冲器340的四个最近Bin数据比特(或四个LSB侧比特),那么在由第18至16比特处设置的cc字段指定的CCR(条件码寄存器)比特处设置0。由符号XXXX表示的比特数是4,这是因为将分别与由符号XXXX表示的比特进行比较的最近Bin数据比特的数量假定为4。因而能够使用由第24至19比特以及第15至6比特组成的16个比特,以指定四个匹配模式,每个匹配模式由具有值0和1的4个比特组成。16个比特形成由16个比特组成的位图。换句话说,16比特位图由四个匹配模式组成,每个匹配模式设置匹配条件。四个匹配条件中的每一个是将与四个最近Bin数据比特进行比较的候选者。因而,通过在位图的多个比特处同时设置值l,可以定义每个设置匹配条件的一组候选者。 cbcjiiatch指令是作为比较指令执行的Bin匹配指令,该比较指令具有确定四个最近Bin数据比特是否已经被包括在位图中的功能,该位图用作每个设置匹配条件的候选者的集合。确定四个最近Bin数据比特是否已经被包括在位图中的功能通过将四个最近Bin数据比特与位图的比特进行比较而实施。通过Bin匹配指令实施的比较的结果被设置在由作为分支条件代码BC的指令的cc字段指定的CCR(条件码寄存器)比特处,该分支条件代码BC稍后由用作条件分支指令的br指令参考(reference)。因而,取决于四个最近Bin数据比特是否被包括在用作每个设置匹配条件的候选者集合的位图中,程序的流程在附条件分支指令的执行处可能产生跳转。Bin匹配指令包括在第18至16比特处设置的cc字段。cc字段表明CCR(条件码寄存器)比特,在该CCR比特处,Bin匹配指令实施的比较的结果被设置为分支条件代码BC。典型地,条件代码寄存器CCR包括8个比特。cc字段的3个比特用于指定条件代码寄存器CCR的八个比特中的特定的一个比特。然后条件代码寄存器CCR的该特定比特用于将Bin匹配指令实施的比较结果存储为分支条件代码BC。因而,可以定义与构成条件代码寄存器CCR的比特一样多的每个由用于四个不同匹配条件的四个匹配模式组成的集合。因而,对于Bin缓冲器340的某状态,能够执行多个不同的Bin匹配指令。因而,即使复杂的分支处理也可以通过使用非常少的附条件分支指令实施。
在第10比特处设置的CINCBIN字段、在第9比特处设置的CINCEN字段、在第8比特处设置的CEXBIN字段和在第7比特处设置的CEXEN字段中的每一个是用于可选地使用Bin数据作为执行条件代码EC的可选字段,该Bin数据是作为通过在前紧邻的Bin解码指令的执行而实施的Bin解码处理的结果而获得的。用作Bin解码指令中的附条件递增标记的CINCEN字段是用于使能附条件递增功能的可选字段,该附条件递增功能用于在Bin解码指令的执行中附条件地将在cidx字段中设置的值增加1。也就是说,仅当CINCEN字段设置成1时,附条件递增功能被置于被使能(being enabled)的状态。另一方面,CINCBIN字段是用于确定附条件递增功能的执行的条件的可选字段。更详细地,通过将附条件递增标记CINCEN设置为1而将附条件递增功能置于被使能的状态,如果CINCBIN字段等于执行条件代码EC,那么通过执行附条件递增功能在Bin解码指令的执行中实施Bin解码处理,以生成Bin数据,即通过使用下述上下文变量而实施Bin解码处理,该上下文变量由作为把cidx字段中设置的值递增1的结果的数字指示。另一方面,即使通过将附条件递增标记CINCEN设置为1而将附条件递增功能置于被使能的状态,如果CINCBIN字段不等于执行条件代码EC,那么在不执行附条件递增功能的情况下,在Bin解码指令的执行中实施Bin解码处理以生成Bin数据,通过使用由依原样的(as it is)cidx字段指示的上下文变量而实施Bin解码处理。 同样地,用作Bin解码指令中附条件递增标记的CEXEN字段是用于使能附条件执行功能的可选字段,该附条件执行功能用于通过Bin解码指令的执行附条件地实施Bin解码处理。也就是说,仅当CEXEN字段设置成l时,附条件执行功能置于使能的状态。另一方面,CEXBIN字段是用于确定附条件执行功能的执行的条件的可选字段。更详细地,如下附条件地实施附条件执行功能。通过将附条件执行标记CEXEN设置为l而将附条件执行功能置于被使能的状态,如果CEXBIN字段等于执行条件代码EC,那么在Bin解码指令的执行中实施Bin解码处理,以生成Bin数据。另一方面,即使通过将附条件执行标记CEXEN设置为1而将附条件执行功能置于被使能的状态,如果CEXBIN字段不等于执行条件代码EC,那么也不实施生成Bin数据的Bin解码处理,即实际上不实施Bin解码指令。另外,在此情况下,不更新各种寄存器,从而给出与NOP指令相同的效果。 如果用作附条件递增标记的CINCEN字段和用作附条件执行标记的CEXEN字段这两者都设置为0,那么在不改变cidx字段的值的情况下通过使用由cidx字段指示的上下文变量无条件地实施Bin解码处理以生成Bin数据。 CEXEN和CEXBIN字段用于指定用单个操作数值代表的一对。更具体地,为了将CEXEN字段设置为1而将CEXBIN字段设置为0, CEXO被指定为图11的表中所示的助记符中的可选操作数的值。另一方面,为了将CEXEN字段设置为l且也将CEXBIN字段设置为1,CEX1被指定为图11的表中所示的助记符中的可选操作数的值。 同样,CINCEN和CINCBIN字段也用做由单个操作数值代表的一对。为了将CINCEN字段设置为1而将CINCBIN字段设置为0, CINCO被指定为图11的表中所示的助记符中的另一可选操作数的值。另一方面,为了将CINCEN字段设置为l且也将CINCBIN字段设置为1, CINC1被指定为图11的表中所示的助记符中的该另一可选操作数的值。
Bin解码器320的典型构造 图13和14中的每一个是方框图,示出了根据本发明实施例的Bin解码器320的典型构造。 在对一个符号进行解码的处理中,包括概率状态指标pStateldx和valMPS的上下 文变量CTX被从上下文变量寄存器330中读出。另外,在内部状态变量codIRange的第7和 6比特处设置的值被设置在qCodlRangeldx中。然后,把由符号rangeTabLPS[pStateldx] [qCodlRangeldx]表示的参考值设置在codIRangeLPS中,而作为从codIRange中减去 codIRangeLPS的结果获得的值被设置在codIRangeMPS中。 这时,如果codIOffset等于或大于codIRangeMPS,那么解码结果是LPS,作为从 codIOffset中减去codIRangeMPS的结果获得的值用作更新的codIOffset, codIRangeLPS 用作更新的codIRange,并且计算上下文变量的更新值。 另 一 方面,如果codIOffset小于codIRangeMPS,那么解码结果是MPS, codIRangeMPS用作更新的codIRange,并且计算上下文变量的更新值。
然后,内部状态变量codIRange和codIOffset每 一 个被作为再正规化 (renormalization)处理的巨标。 如果解码结果是LPS,那么valMPS的反转值(inverted)被输出为解码数据。另 外,概率状态指标pStateldx的下一状态从转变表的transIdxLPS[pStateldx]中找到。此 时,如果transIdxLPS[pStateldx]是0,那么反转valMPS。然后,通过使用找到的概率状态 指标pStateldx的下一状态和valMPS或经反转的valMPS而计算上下文变量的更新值。
另一方面,如果解码结果是MPS,那么valMPS被输出为作为解码结果获得的数据。 另外,概率状态指标pStateldx的下一状态从转变表的transIdxMPS[pStateldx]中找到, 且通过使用找到的概率状态指标pStateldx的下一状态和valMPS计算上下文变量的更新 值。 如果codIRange小于0x0100 ( = 256),那么再正规化处理部分329逐个比特地沿 左方向对codIRange和codIOffset进行移位,直到codIRange变得等于或大于0x0100,并 且每次把codIOffset沿左方向移位1比特,将编码数据流的1比特插入到codeIOffset的 LSB中。 在把Bin数据沿左方向移位1比特后,把作为Bin解码处理的结果获得的Bin数 据比特插入到存储在Bin缓冲器340中的Bin数据的LSB中。此时,把Bin计数器350的 内容递增1。 如果需要,把作为由协处理器指令解码器310实施的Bin解码操作的结果获得的 信号锁存在流水线寄存器中。例如,cbc_dec_term_cc_flag是用于指示cbc_dec_term_cc 指令已经被解码的标记。作为选择,还可以使用CLR、 CEXEN、 CEXBIN、 CINCEN、 CINCBIN和 cidx操作数值。 作为通过在前紧邻的Bin解码指令的执行而实施的Bin解码处理的结果获得的 Bin数据也被保存在执行条件代码(EC)保存部分323中作为执行条件代码。在cbc_dec_ bin指令或Cbc_dec_bin_CC指令的情况下,如果在该Bin解码指令中指定的CEXEN操作数 值是0,那么执行确定部分321确定Bin解码指令将被无条件地执行,并将Bin有效信号置 于指示Bin解码指令的有效情形的状态,但是另一方面,如果CEXEN操作数值是l,那么执行 确定部分321将之前描述的附条件执行功能置于被使能的状态。在把附条件执行功能置于 被使能的状态的情况下,如果CEXBIN操作数值与保存在执行条件代码保存部分323中的执行条件代码EC匹配,那么确定Bin解码指令将被执行,并且Bin有效信号被置于指示Bin 解码指令的有效信号情形的状态。另一方面,如果CEXBIN操作数值不匹配保存在执行条件 代码保存部分323中的执行条件代码EC,那么确定不执行Bin解码指令,并且Bin有效信号 被置于指示Bin解码指令的无效信号情形的状态。应注意执行条件代码保存部分323是本 发明说明书所附的权利要求中描述的执行条件代码保存部分的典型例子。
另外,在cbc_dec_bin指令或cbc_dec_bin_cc指令的情况下,如果在该Bin解码 指令中指定的CINCEN操作数值是O,那么递增确定部分322确定不增加被指定为Bin解码 指令中的操作数的上下文数字cidx,另一方面,如果CINCEN操作数值是l,那么递增确定部 分322将附条件递增功能置于被使能的状态。在附条件递增功能置于被使能的状态的情况 下,如果CINCBIN操作数值匹配保存在执行条件代码保存部分323中的执行条件代码EC, 那么递增确定部分322确定将递增(increment)被指定为Bin解码指令中的操作数的上下 文数字cidx,但是另一方面,如果CINCBIN操作数值不匹配保存在执行条件代码保存部分 323中的执行条件代码EC,那么递增确定部分322确定将不递增被指定为Bin解码指令中 的操作数的上下文数字cidx。如果递增确定部分322确定将不递增被指定为Bin解码指 令中的操作数的上下文数字cidx,那么选择器325将被指定为指令中的操作数的上下文数 字cidx选择为依原样的上下文数字,而选择器326选择由上下文数字cidx指示的上下文 变量CTX(cidx)。另一方面,如果递增确定部分322确定将递增被指定为Bin解码指令中 的操作数的上下文数字cidx,那么加法器324将被指定为指令的操作数的上下文数字cidx 递增l,并且将递增后的上下文数字(cidx+1)输出给选择器325。然后,选择器325选择从 加法器324接收的递增后的上下文数字(cidx+1),而选择器326选择由递增的上下文数字 (cidx+1)指示的上下文变量CTX (cidx+1)。存储在上下文变量寄存器330中的上下文变量 的数量假定为16个,该值相应于0至15范围中的cidx值。因而,当加法器324递增具有 值15的上下文数字cidx时,加法器324将为0的上下文数字cidx输出为递增后的上下文 数字cidx。 在cbc_dec_term_cc指令的情况下,选择器327选择整数63作为pStateldx。另 外,在CbC_dec_term_CC指令的情况下,即使Bin有效信号没有被置于指示cbC_dec_term_ cc指令的有效情形的状态中,逻辑积分电路328屏蔽(mask)上下文变量更新许可信号,使 得上下文变量不更新。 每个作为Bin解码处理的结果获得的Bin有效信号和移位量被提供给DMA控制器 140。如果Bin有效信号已经被置于指示Bin解码指令的有效情形的状态中且移位量至少 是1时,作为Bin解码处理结果获得的Bin数据假定为已经被消费(consume),并且DMA控 制器140更新其作为编码数据的输出。 作为Bin解码处理的结果获得的Bin有效信号和锁存在流水线寄存器中的CLR操 作数值被提供给Bin计数器350。如果Bin有效信号已经被置于指示Bin解码指令的有效 情形的状态中时,Bin计数器350的内容递增1。在此情况下,如果CLR操作数值指示意味 着Bin计数器350的内容将被清零的激活(active)状态,那么把Bin计数器350的内容设 置为1,该值意味着作为Bin解码处理的结果获得的Bin数据比特是Bin数据的第一比特。
3:典型应用
在I-片宏块类型上的典型应用
图15是状态转变图,示出了在用以生成I-片宏块类型的语法元素的CABAC解码 处理中出现的状态转变。 每个普通节点内的数字是用于识别上下文变量的上下文索引,该上下文变量被用 于在由该普通节点表示的状态下实施的Bin解码处理中。沿状态转变图的向下方向出现状 态转变。 在每个普通节点处,由分配给普通节点的数字表示的上下文索引识别上下文变 量,该上下文变量被用于在由该普通节点表示的状态下实施的Bin解码处理中以生成Bin 数据比特。可以从任何特别节点到另一个通过分支连接到该特别节点的普通节点产生状态 转变。在由其它普通节点表示的状态中,再次实施Bin解码处理以生成另一 Bin数据比特。
标签0或1被附加到将分支节点连接到分支目的地节点的分支,以用作将与Bin 数据比特的值进行比较的标签,该Bin数据比特由在分支节点在前紧邻的节点表示的状态 中实施的Bin解码处理产生。在此情况下,通过其附加标签与Bin数据比特的值匹配的分 支,产生从分支节点到分支目的地节点的状态转变,该Bin数据比特作为在由分支节点在 前紧邻的节点表示的状态中实施的Bin解码处理的结果而获得。 另一方面,普通节点通过没有附加标签的分支连接到转变目的地节点。没有附加 标签的分支表明典型地产生从普通节点到转变目的地节点的状态转变,而不考虑作为在由 普通节点表示的状态下实施的Bin解码处理的结果获得的Bin数据比特的值为何。
分支目的地节点或转变目的地节点可以是结束(end)节点。在此情况下,在由结 束节点前面的节点表示的状态下实施的Bin解码处理中,已经生成相应于语法元素的最后 的Bin数据比特,由此完成CABAC解码处理以生成整个语法元素。 在上文中通过参考图15的状态转变图中示出的状态转变(该状态转变作为在用 于生成I-片宏块类型的语法元素的CABAC解码处理中发生的状态转变)而描述的CABAC 解码处理中,由上下文索引3、4或5识别的上下文变量最初用于生成Bin数据比特,作为第 一 Bin解码处理的结果。然后,该第一解码处理的结果用于确定从第一 Bin解码处理之后 的附条件分支指令被执行的状态开始的状态转变。 图16示出了由属于根据本发明实施例的指令集合的指令组成的典型程序,以用 作将被执行来实施用于生成I-片宏块类型的语法元素的CABAC解码处理的程序。
执行图16所示的程序的第1行的加载指令,以便将上下文变量从存储器110加载 到上下文变量寄存器330。执行程序的第2行的Bin解码指令,以便通过使用由上下文索引 3、4或5识别的上下文变量实施Bin解码处理以生成Bin数据比特。因为在第2行的Bin 解码指令中指定了 CLR操作数值,因而在Bin解码指令的执行之前,对存储在Bin缓冲器 340中的数据和Bin计数器350的内容进行清零。把作为Bin解码处理的结果获得的Bin 数据比特存储在由Bin解码指令中指定的ccO操作数值指示的CCR(条件码寄存器)比特 中。协同cidx操作数值O,rs操作数的gprl操作数值指定下述上下文索引的值,该上下文 索引将用于识别已经存储在上下文变量寄存器330中的上下文变量中的一个。更详细地, gprl操作数值识别特定的通用寄存器,其内容将与cidx操作数值0相加,以生成将用作用 于识别上下文变量中的一个的上下文索引的加和。在此情况下,假设值3、4或5已经预先 存储在特定的通用寄存器中。 如果作为通过第2行的Bin解码指令实施的Bin解码处理的结果获得的Bin数据比特是0,则执行图16中示出程序的第3行的附条件分支指令,以跳转到程序的第11行的 存储指令。另一方面,如果作为通过第2行的Bin解码指令实施的Bin解码处理的结果获 得的Bin数据比特是1,那么程序的流程从第3行的附条件分支指令继续到第4行的Bin解 码指令。 执行图16中示出程序的第4行的Bin解码指令,以便通过使用由上下文索引276 识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。把作为Bin解码处理的结 果获得的Bin数据比特存储在由Bin解码指令中指定的ccl操作数值指示的CCR(条件码 寄存器)比特中。 执行图16中示出程序的第5行的Bin解码指令,以便通过使用由上下文索引 6(cidx = 3且rs = 0)识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。在 该Bin解码指令中,操作数值3是cidx操作数的值。另一方面,在Bin解码指令中指定的0 操作数值相当于语句rs = O,这意味着把rs操作数的值设置为0。另外,假设通用寄存器 GPR[rs( = 0)]的内容已经设置为3。也就是说,上下文索引6是cidx( = 3)与GPR[rs] (=3)的加和。在Bin解码指令中指定的CEXO操作数值意味着,仅当在作为通过在前紧 邻Bin解码指令的执行而实施的Bin解码处理的结果获得的Bin数据比特是0时才实施该 Bin解码处理。 如果由ccl操作数值指定的CCR(条件码寄存器)比特是l,那么执行图16中示出 程序的第6行的附条件分支指令,以便跳转到程序的第11行的存储指令。如上所述,由ccl 操作数值指定的CCR比特应该已经用于存储作为通过第4行的Bin解码指令而实施的Bin 解码处理的结果获得的Bin数据比特。另一方面,如果由ccl操作数值指定的CCR比特是 O,那么程序的流程从第6行的附条件分支指令继续到第7行的Bin解码指令。
执行图16中示出程序的第7行的Bin解码指令,以便通过使用由上下文索引 7 (cidx = 4且rs = 0)识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。执 行程序的第8行的Bin解码指令,以便通过使用由上下文索引8 (cidx = 5且rs = 0)识别 的上下文变量,而实施Bin解码处理以生成Bin数据比特。然而,程序的第8行的Bin解码 指令通过指定CEX1操作数值而使用附条件执行功能,该CEX1操作数值意味着,仅当作为 通过在前紧邻Bin解码指令的执行而实施的Bin解码处理的结果获得的Bin数据比特是1 时才实施该Bin解码处理。同样地,执行程序的第9行的Bin解码指令,以便通过使用由上 下文索引9 (cidx = 6且rs = 0)识别的上下文变量,而实施Bin解码处理以生成Bin数 据比特。以同样的方式,执行程序的第lO行的Bin解码指令,以便通过使用由上下文索引 10 (cidx = 7且rs = 0)识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。
执行图16所示的程序的第11行的存储指令,以便将保存在上下文变量寄存器330 中的上下文变量存储到存储器110中。然后,执行程序的第12行的多值转换指令,以便实 施关于Bin数据比特的多值转换处理,每个Bin数据比特作为目前为止已经实施的Bin解 码处理中的一个的结果而获得。最后,执行程序的第13行的无条件分支指令,以跳转到返 回地址。 图17是状态转变图,示出了根据图16中示出的典型程序,在用以生成I-片宏块 类型的语法元素的CABAC解码处理中出现的状态转变。 如上所述,执行图16中所示程序的第2行的Bin解码指令,以便通过使用由初始的上下文索引3、4或5识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。为 了通过使用一行(即第2行)上的Bin解码指令实施该Bin解码处理,初始的上下文索引 中的一个已经存储在Bin解码指令中指定的通用寄存器中。 在通过具有图17的状态转变图中的上下文数字(3+r)的普通节点表示的状态中, 执行图16所示的程序的第2行的Bin解码指令,其中符号r表示值0、1和2。
另外,如果由ccl操作数值指定的CCR(条件码寄存器)比特是l,那么执行图16 中示出程序的第6行的附条件分支指令,以便跳转到程序的第11行的存储指令,或如果由 ccl操作数值指定的CCR比特是O,那么程序的流程从第6行的附条件分支指令继续到第7 行的Bin解码指令。如上所述,由ccl操作数值指定的CCR比特应该已经用于存储作为通 过第4行的Bin解码指令而实施的Bin解码处理的结果获得的Bin数据比特。因而,程序 的第6行的附条件分支指令必须在CCR比特处已经设置作为通过第4行的Bin解码指令而 实施的Bin解码处理结果获得的Bin数据比特之后才被执行。然而,完成Bin解码指令的 执行耗费时间。这种情况引起等待时间增加,该等待时间是在CCR比特处建立分支条件所 占用的时间。该等待时间是所谓的Bin解码指令的等待时间,该Bin解码指令建立用于第 6行的附条件分支指令的分支条件。为了隐藏该等待时间,程序的第5行的Bin解码指令 在程序的第4行和第6行之间执行,以通过使用由上下文索引6识别的上下文变量而实施 Bin解码处理。以此方式,在正实施该Bin解码处理时,在CCR比特处建立分支条件。
在通过具有图17的状态转变图中的上下文数字276的普通节点表示的状态中,执 行图16所示的程序的第4行的Bin解码指令。在通过虚线框表示的状态中,执行相同程序 的第5行的Bin解码指令,该虚线框包含具有相同状态转变图中的上下文数字6的普通节 点。在通过具有由相同状态转变图中的符号cc(276) 二l和cc(276) = 0示出的分支的分 支节点表示的状态中,执行相同程序的第6行的附条件分支指令。 另外,执行图16中示出程序的第8行的Bin解码指令,以便通过使用由上下文索
引8识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。程序的第8行的Bin
解码指令故意地使用附条件执行功能。附条件执行功能的使用允许消除附条件分支指令,
使得能够避免流水线停顿。 在P-片宏块类型上的典型应用 图18和19中的每一附图都是状态转变图,示出了在用以生成P-片宏块类型的语 法元素的CABAC解码处理中出现的状态转变。如图18的状态转变图所示,在用以生成P-片 宏块类型的语法元素的CABAC解码处理中,最初,上下文索引14用于生成第一 Bin数据比 特。如果作为初始Bin解码处理的结果获得的第一 Bin数据比特是1 ,那么针对宏块的内部 实施Bin解码处理,如图19的状态转变图所示。另一方面,如果作为初始Bin解码处理的 结果获得的第一 Bin数据比特是0,那么产生到下一状态的转变。在下一状态中,上下文索 引15用于下一Bin解码处理,以生成另一Bin数据比特。如果作为下一 Bin解码处理的结 果获得的该另一Bin数据比特是l,那么产生到随后状态的转变,在该随后状态中,由上下 文索引17识别的上下文变量用于随后的Bin解码处理,以生成另外的Bin数据比特。另一 方面,如果作为下一 Bin解码处理的结果获得的该另一 Bin数据比特是0,那么产生到随后 状态的转变,在该随后状态中,由上下文索引16识别的上下文变量用于随后的Bin解码处 理,以生成另外的Bin数据比特。
23
图20示出了由属于根据本发明实施例的指令集合的指令组成的典型程序,以用 作将被执行来实施用于生成P-片宏块类型的语法元素的CABAC解码处理的程序。
执行图20所示的程序的第1行的加载指令,以便将上下文变量从存储器110加载 到上下文变量寄存器330中。执行程序的第2行的Bin解码指令,以便通过使用由上下文 索引14(cidx = O且rs = 0)识别的上下文变量实施Bin解码处理以生成Bin数据比特。 在该Bin解码指令中,操作数值0是cidx操作数的值。另一方面,在该Bin解码指令中指 定的zero操作数值相当于语句rs = O,这意味着把rs操作数的值设置为0。另外,通用寄 存器GPR[rs( = O)]的内容假定为已经设置为14。也就是说,上下文索引14是cidx(= 0)与GPR[rs] ( = 14)的加和。把作为Bin解码处理的结果获得的Bin数据比特存储在由 Bin解码指令中指定的ccO操作数值指示的CCR(条件码寄存器)比特中。因为CLR操作数 值在第2行的Bin解码指令中被指定,因而在Bin解码指令的执行之前,对存储在Bin缓冲 器340中的数据和Bin计数器350的内容进行清零。 执行图20所示的程序的第3行的Bin解码指令,以便通过使用由上下文索引
15 (cidx = 1且rs = 0)识别的上下文变量实施Bin解码处理以生成Bin数据比特。通过 指定CEXO操作数值,第3行的Bin解码指令使用附条件执行功能,CEXO操作数值意味着仅 当作为通过在前紧邻Bin解码指令的执行而实施的Bin解码处理的结果获得的Bin数据比 特是0时,才实施该Bin解码处理。 执行图20所示的程序的第4行的Bin解码指令,以便通过使用由上下文索引16或 17 (cidx = 2,rs = 0以及CINC1)识别的上下文变量实施Bin解码处理以生成Bin数据比 特。通过指定CINC1操作数值,程序的第4行的Bin解码指令使用附条件递增功能,CINC1 操作数值意味着根据作为通过在前紧邻Bin解码指令的执行而实施的Bin解码处理的结果 获得的Bin数据比特,实施该Bin解码处理。更具体地,如果作为通过在前紧邻Bin解码指 令的执行而实施Bin解码处理的结果获得的Bin数据比特为O,那么通过使用由上下文索引
16 ( = cidx+GPR
)识别的上下文变量,而实施Bin解码处理,或如果作为通过在前紧邻 Bin解码指令的执行而实施Bin解码处理的结果获得的Bin数据比特为1 ,那么通过使用由 作为将(cidx+GPR
)递增1的结果获得的上下文索引17 ( = cidx+GPR
+l)识别的上 下文变量,而实施Bin解码处理。把作为Bin解码处理的结果获得的Bin数据比特存储在 由Bin解码指令中指定的ccl操作数值指示的CCR(条件码寄存器)比特中。 如果由ccO操作数值指定的CCR(条件码寄存器)比特是0,那么执行图20中示出 程序的第5行的附条件分支指令,以便跳转到程序的第14行的存储指令。如上所述,由ccO 操作数值指定的CCR比特应该已经用于存储作为通过第2行的Bin解码指令而实施的Bin 解码处理的结果获得的Bin数据比特。另一方面,如果由ccO操作数值指定的CCR比特是 l,那么程序的流程从第5行的附条件分支指令继续到第6行的附条件分支指令。
如果由ccl操作数值指定的CCR比特是O,那么执行图20中示出程序的第6行的 附条件分支指令,以便跳转到程序的第14行的存储指令。如上所述,由ccl操作数值指定 的CCR比特应该已经用于存储作为通过第4行的Bin解码指令而实施的Bin解码处理的结 果获得的Bin数据比特。另一方面,如果由ccl操作数值指定的CCR比特是l,那么程序的 流程从第6行的附条件分支指令继续到第7行的Bin解码指令。 执行图20中示出程序的第7行的Bin解码指令,以便通过使用由上下文索引276识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。把作为Bin解码处理的结 果获得的Bin数据比特存储在由Bin解码指令中指定的cc2操作数值指示的CCR(条件码 寄存器)比特中。 执行图20中示出程序的第8行的Bin解码指令,以便通过使用由上下文索引 18(cidx = 4且rs = 0)识别的上下文变量而实施Bin解码处理以生成Bin数据比特。通 过指定CEX0操作数值,第8行的Bin解码指令使用附条件执行功能,CEXO操作数值意味着 仅当作为通过在前紧邻Bin解码指令的执行而实施的Bin解码处理的结果获得的Bin数据 比特是0时,才实施该Bin解码处理。 如果由cc2操作数值指定的CCR(条件码寄存器)比特是l,那么执行图20中示出 程序的第9行的附条件分支指令,以便跳转到程序的第14行的存储指令。如上所述,由cc2 操作数值指定的CCR比特应该已经用于存储作为通过第7行的Bin解码指令而实施的Bin 解码处理的结果获得的Bin数据比特。另一方面,如果由cc2操作数值指定的CCR比特是 O,那么程序的流程从第9行的附条件分支指令继续到第10行的Bin解码指令。
执行图20中示出程序的第10行的Bin解码指令,以便通过使用由上下文索引 19(cidx = 5且rs = 0)识别的上下文变量而实施Bin解码处理以生成Bin数据比特。执 行程序的第11行的Bin解码指令,以便通过使用由上下文索引19(cidx = 5且rs = 0)识 别的上下文变量,而实施Bin解码处理以生成Bin数据比特。通过指定CEX1操作数值,程 序的第11行的Bin解码指令使用附条件执行功能,CEX1操作数值意味着仅当作为通过在 前紧邻Bin解码指令的执行而实施的Bin解码处理的结果获得的Bin数据比特是1时,才 实施该Bin解码处理。 执行图20中示出程序的第12行的Bin解码指令,以便通过使用由上下文索引 20(cidx = 6且rs = 0)识别的上下文变量而实施Bin解码处理以生成Bin数据比特。同 样,程序的第13行的Bin解码指令也通过使用由上下文索引20(cidx = 6且rs = 0)识别 的上下文变量,实施Bin解码处理以生成Bin数据比特。 执行图20所示的程序的第14行的存储指令,以便将保存在上下文变量寄存器330 中的上下文变量存储到存储器110中。然后,执行程序的第15行的多值转换指令,以便实 施关于Bin数据比特的多值转换处理,每个Bin数据比特作为目前为止已经实施的Bin解 码处理中的一个的结果而获得。最后,执行程序的第16行的无条件分支指令,以便跳转到 返回地址。 图21和22中的每一附图是状态转变图,示出了根据图20中示出的典型程序,在 用以生成P-片宏块类型的语法元素的CABAC解码处理中出现的状态转变。
如果由ccO操作数值指定的CCR(条件码寄存器)比特是O,那么执行程序的第5 行的附条件分支指令以便跳转到程序的第14行的存储指令,或程序的流程从第5行的附 条件分支指令继续到第6行的附条件分支指令。如上所述,由ccO操作数值指定的CCR比 特应该已经用于存储作为通过第2行的Bin解码指令而实施的Bin解码处理的结果获得的 Bin数据比特。因而,程序的第5行的附条件分支指令必须在作为通过第2行的Bin解码指 令而实施的Bin解码处理的结果获得的Bin数据比特已经在CCR比特处设置之后执行。然 而,完成Bin解码指令的执行耗费时间。这种情况引起等待时间增加,该等待时间是在CCR 比特处建立分支条件所占用的时间。该等待时间是建立用于第5行的附条件分支指令的分支条件的Bin解码指令的所谓等待时间。为了隐藏该等待时间,程序的第3行的Bin解码 指令在程序的第2行和第5行之间执行,以通过使用由上下文索引15识别的上下文变量而 实施Bin解码处理。以此方式,在正实施该Bin解码处理期间,在CCR比特处建立起分支条 件。 在通过图21的状态转变图中的具有上下文数字14的普通节点表示的状态中,执 行图20所示的程序的第2行的Bin解码指令。在通过虚线框表示的状态中,执行相同程序 的第3行的Bin解码指令,该虚线框包含相同状态转变图中具有上下文数字15的普通节 点。在通过相同状态转变图中的具有由符号cc(14) 二l和cc(14) =0示出的分支的分支 节点表示的状态中,执行相同程序的第5行的附条件分支指令。 另外,执行图20中示出程序的第4行的Bin解码指令,以便通过使用由上下文索 引16或17识别的上下文变量而实施Bin解码处理以生成Bin数据比特。通过指定CINC1 操作数值,程序的第4行的Bin解码指令故意地使用附条件递增功能。CINC1操作数值意 味着根据作为通过在前紧邻Bin解码指令的执行而实施的Bin解码处理的结果获得的Bin 数据比特,实施该Bin解码处理。更具体地,如果作为通过在前紧邻Bin解码指令的执行 而实施Bin解码处理的结果获得的Bin数据比特为O,那么通过使用由上下文索引16(= cidx+GPR
)识别的上下文变量,而实施Bin解码处理,或如果作为通过在前紧邻Bin解 码指令的执行而实施Bin解码处理的结果获得的Bin数据比特为l,那么通过使用由作为 将(cidx+GPR
)递增1的结果获得的上下文索引17 ( = cidx+GPR
+l)识别的上下文 变量,而实施Bin解码处理。附条件递增功能的使用允许程序的第4行的共同Bin解码指 令代替2个不同的Bin解码指令而使用,并允许消除2个附条件分支指令,使得能够避免流 水线停顿。 另外,如果由cc2操作数值指定的CCR(条件码寄存器)比特是l,那么执行图20 中示出程序的第9行的附条件分支指令,以便跳转到程序的第14行的存储指令,或程序的 流程从第9行的附条件分支指令继续到第10行的Bin解码指令。如上所述,由cc2操作数 值指定的CCR比特应该已经用于存储作为通过第7行的Bin解码指令而实施的Bin解码处 理的结果获得的Bin数据比特。因而,程序的第9行的附条件分支指令必须在作为通过第 7行的Bin解码指令而实施的Bin解码处理的结果获得的Bin数据比特已经在CCR比特处 设置之后执行。然而,完成Bin解码指令的执行耗费时间。这种情况引起等待时间增加,该 等待时间是在CCR比特处建立分支条件所占用的时间。该等待时间是建立用于第9行的附 条件分支指令的分支条件的Bin解码指令的所谓等待时间。为了隐藏该等待时间,程序的 第8行的Bin解码指令在程序的第7行和第9行之间执行,以通过使用由上下文索引18识 别的上下文变量而实施Bin解码处理。以此方式,在正实施该Bin解码处理期间,在CCR比 特处建立分支条件。 在通过图22的状态转变图中的具有上下文数字276的普通节点表示的状态中,执 行图20所示的程序的第7行的Bin解码指令。在通过虚线框表示的状态中,执行相同程序 的第8行的Bin解码指令,该虚线框包含相同状态转变图中的具有上下文数字18的普通节 点。在通过相同状态转变图中的具有由符号cc(276) 二l和cc(276) = 0示出的分支的分 支节点表示的状态中,执行相同程序的第9行的附条件分支指令。 另外,执行图20中示出程序的第ll行的Bin解码指令,以便通过使用由上下文索引19识别的上下文变量而实施Bin解码处理。程序的第ll行的Bin解码指令故意地使用 附条件执行功能。附条件执行功能的使用允许消除附条件分支指令,使得能够避免流水线 停顿。 在B-片宏块类型上的典型应用 图23和24中的每一附图都是状态转变图,示出了在用以生成B-片宏块类型的 语法元素的CABAC解码处理中出现的状态转变。在用以生成B-片宏块类型的语法元素的 CABAC解码处理中,由上下文索引27、28或29识别的上下文变量最初地用于识别用于生成 作为第一Bin解码处理的结果的Bin数据比特的上下文变量。然后,Bin解码处理的结果 用于紧跟第一 Bin解码处理的附条件分支指令,以确定从执行分支指令的状态到下一状态 的状态转变。 图25示出了由属于根据本发明实施例的指令集合的指令组成的典型程序,以用 作将被执行来实施用于生成B-片宏块类型的语法元素的CABAC解码处理的程序。
执行图25所示的程序的第1行的加载指令,以便将上下文变量从存储器110加载 到上下文变量寄存器330中。执行程序的第2行的Bin解码指令,以便通过使用由上下文 索引27、28或29识别的上下文变量实施Bin解码处理以生成Bin数据比特。因为CLR操 作数值在第2行的Bin解码指令中被指定,因而在Bin解码指令的执行之前,对存储在Bin 缓冲器340中的数据和Bin计数器350的内容进行清零。把作为Bin解码处理的结果获得 的Bin数据比特存储在由Bin解码指令中指定的cc0操作数值指示的CCR(条件码寄存器) 比特中。协同cidx操作数值O,rs操作数的gprl操作数值指定上下文索引的值,该上下文 索引将用于识别已经存储在上下文变量寄存器330中的上下文变量中的一个。更详细地, gpr 1操作数值识别特定的通用寄存器,该特定的通用寄存器的内容将与cidx操作数值0相 加,以生成将用作用于识别上下文变量中的一个的上下文索引的加和。在此情况下,假设值 27、28或29已经预先存储在特定的通用寄存器中。 如果作为通过第2行的Bin解码指令实施的Bin解码处理的结果获得的Bin数据 比特是0,执行程序的第3行的附条件分支指令,以便跳转到程序的第23行的存储指令。另 一方面,如果作为通过第2行的Bin解码指令实施的Bin解码处理的结果获得的Bin数据 比特是l,那么程序的流程从第3行的附条件分支指令继续到第4行的指令。
执行图25中示出程序的第4行的Bin解码指令,以便通过使用由上下文索引 30(CidX = 3irs = 0)识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。把 作为Bin解码处理的结果获得的Bin数据比特存储在由Bin解码指令中指定的ccl操作数 值指示的CCR(条件码寄存器)比特中。 执行图25中示出程序的第5行的Bin解码指令,以便通过使用由上下文索引31 或32 (cidx = 4,rs = 0以及CINCO)识别的上下文变量而实施Bin解码处理以生成Bin数 据比特。通过指定CINCO操作数值,程序的第5行的Bin解码指令使用附条件递增功能, CINCO操作数值意味着根据作为通过在前紧邻Bin解码指令的执行而实施的Bin解码处理 的结果获得的Bin数据比特,实施该Bin解码处理。更具体地,如果作为通过在前紧邻Bin 解码指令的执行而实施Bin解码处理的结果获得的Bin数据比特为1 ,那么通过使用由上下 文索引31 ( = cidx+GPR
)识别的上下文变量,而实施Bin解码处理,或如果作为在前紧 邻解码处理的结果获得的Bin数据比特为O,那么通过使用由作为将(cidx+GPR
)增加1的结果获得的上下文索引32( = cidx+GPR
+l)识别的上下文变量,而实施Bin解码处理。 如果由ccl操作数值指定的CCR(条件码寄存器)比特是0,执行图25中示出程序 的第6行的附条件分支指令,以便跳转到程序的第23行的存储指令。如上所述,由ccl操 作数值指定的CCR比特应该已经用于存储作为通过第4行的Bin解码指令而实施的Bin解 码处理的结果获得的Bin数据比特。另一方面,如果由ccl操作数值指定的CCR比特是1, 那么程序的流程从第6行的附条件分支指令继续到第7行的Bin解码指令。
执行图25所示程序的第7行至第9行中每一行的Bin解码指令,以便通过使用由 上下文索引32(cidx = 5且rs = 0)识别的上下文变量,实施Bin解码处理以生成Bin数 据比特。也就是说,在行中实施三次Bin解码处理,以便生成三个连续的Bin解码比特。
执行图25所示程序的第10行的Bin匹配指令,以便如果每一个作为之前解码处 理结果而获得的第四、第三和第二最近Bin数据比特都是1 ,或作为之前解码处理结果而获 得的第四最近Bin数据比特是O,那么将l存储在由cc2操作数值指定的CCR(条件码寄存 器)比特中。另一方面,如果每一个作为之前解码处理结果而获得的第四、第三和第二最近 Bin数据比特并非都是1 ,且作为之前解码处理结果而获得的第四最近Bin数据比特不是0, 那么执行第10行的Bin匹配指令以便将0存储在由cc2操作数值指定的CCR比特中。
执行图25所示程序的第11行的Bin匹配指令,以便如果每一个作为之前解码处 理结果而获得的第四、第三和第一最近Bin数据比特都是1 ,并且作为之前解码处理结果而 获得的第二最近Bin数据比特是O,则将l存储在由cc3操作数值指定的CCR(条件码寄存 器)比特中。另一方面,如果每一个作为之前解码处理结果而获得的第四、第三和第一最近 Bin数据比特并非都是1 ,或作为之前解码处理结果而获得的第二最近Bin数据比特不是0, 那么执行第11行的Bin匹配指令以便将0存储在由cc3操作数值指定的CCR比特中。
执行图25中示出程序的第12行的附条件分支指令,以便如果由cc2操作数值指 定的CCR(条件码寄存器)比特是1,那么跳转到程序的第23行的存储指令。如上所述,由 cc2操作数值指定的CCR比特应该已经用于存储通过第10行的Bin匹配指令而实施的匹配 处理的结果。 执行图25中示出程序的第13行的Bin解码指令,以便通过使用由上下文索引 32(cidx = 5且rs = 0)识别的上下文变量而实施Bin解码处理以生成Bin数据比特。把 作为Bin解码处理的结果获得的Bin数据比特存储在由Bin解码指令中指定的cc4操作数 值指示的CCR(条件码寄存器)比特中。 执行图25中示出程序的第14行的附条件分支指令,以便如果由cc3操作数值指 定的CCR(条件码寄存器)比特是0,那么跳转到程序的第23行的存储指令。如上所述,由 cc3操作数值指定的CCR比特应该已经用于存储通过第ll行的Bin匹配指令而实施的匹配 处理的结果。 执行图25中示出程序的第15行的附条件分支指令,以便如果由cc4操作数值指 定的CCR(条件码寄存器)比特是0,那么跳转到程序的第23行的存储指令。如上所述,由 cc4操作数值指定的CCR比特应该已经用于存储作为通过第13行的Bin解码指令而实施的 Bin解码处理的结果获得的Bin数据比特。 执行图25中示出程序的第16行的Bin解码指令,以便通过使用由上下文索引276识别的上下文变量,而实施Bin解码处理以生成Bin数据比特,。把作为Bin解码处理的结 果获得的Bin数据比特存储在由Bin解码指令中指定的cc5操作数值指示的CCR(条件码 寄存器)比特中。 执行图25中示出程序的第17行的Bin解码指令,以便通过使用由上下文索引 33(cidx = 6且rs = 0)识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。通 过指定CEX0操作数值,程序的第17行的Bin解码指令使用附条件执行功能,CEXO操作数 值意味着仅当作为通过在前紧邻Bin解码指令的执行而实施的Bin解码处理的结果获得的 Bin数据比特是0时,才实施该Bin解码处理。 执行图25中示出程序的第18行的附条件分支指令,以便如果由cc5操作数值指 定的CCR(条件码寄存器)比特是0,那么跳转到程序的第23行的存储指令。如上所述,由 cc5操作数值指定的CCR比特应该已经用于存储作为通过第16行的Bin解码指令而实施的 Bin解码处理的结果获得的Bin数据比特。 执行图25中示出程序的第19行的Bin解码指令,以便通过使用由上下文索引 34(cidx = 7且rs = 0)识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。
执行图25中示出程序的第20行的Bin解码指令,以便通过使用由上下文索引 34(cidx = 7且rs = 0)识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。通 过指定CEX1操作数值,程序的第20行的Bin解码指令使用附条件执行功能,CEX1操作数 值意味着仅当作为通过在前紧邻Bin解码指令的执行而实施的Bin解码处理的结果获得的 Bin数据比特是1时,才实施该Bin解码处理。 执行图25所示程序的第21行至第22行中任一行的Bin解码指令,以便通过使用 由上下文索引35(cidx = 8且rs = 0)识别的上下文变量,实施Bin解码处理以生成Bin 数据比特。也就是说,在行中实施两次Bin解码处理,以便生成两个连续的Bin数据比特。
执行图25所示的程序的第23行的存储指令,以便将保存在上下文变量寄存器330 中的上下文变量存储到存储器110中。然后,执行程序的第24行的多值转换指令,以便实 施关于Bin数据比特的多值转换处理,每个Bin数据比特作为目前为止已经实施的Bin解 码处理中的一个的结果而获得。最后,执行程序的第25行的无条件分支指令,以便跳转到 返回地址。 图26和27中的每一附图是状态转变图,示出了根据图25中示出的典型程序,在
用以生成B-片宏块类型的语法元素的CABAC解码处理中出现的状态转变。 如上所述,执行图25中所示程序的第2行的Bin解码指令,以便通过使用由初始
的上下文索引27、28或29识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。
为了通过使用一行(即第2行)上的Bin解码指令实施该Bin解码处理,初始的上下文索
引27、28或29中的一个已经存储在Bin解码指令中指定的通用寄存器中。 在通过图26的状态转变图中的具有上下文数字(27+r)的普通节点表示的状态
中,执行图25所示的程序的第2行的Bin解码指令,其中符号r表示值0、1和2。 另外,执行图25中示出程序的第5行的Bin解码指令,以便通过使用由上下文索
引31或32识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。程序的第5行
的Bin解码指令故意地使用附条件递增功能。附条件递增功能的使用允许消除附条件分支
指令,使得能够避免流水线停顿。
29
另外,通过程序的第5行至第12行的指令的执行而实施处理,以便针对宏块的内 部生成Bin数据比特。该处理从程序的第5行的Bin解码指令开始。如上所述,执行程序 的第5行的Bin解码指令,以便通过使用由上下文索引31或32识别的上下文变量,而实施 Bin解码处理以生成其中一个Bin数据比特。处理还包括在第5行的Bin解码指令之后的 程序的第10和11行的匹配指令。执行Bin匹配指令的每一个,以便把4个Bin数据比特 与指令中指定的操作数相比较,每一个Bin数据比特作为之前实施的Bin解码处理的结果 而获得。因而,Bin匹配指令的使用允许消除附条件分支指令。因此,能够避免流水线停顿。
另外,执行图25中示出程序的第18行的附条件分支指令,以便如果由cc5操作数 值指定的CCR(条件码寄存器)比特是l,那么跳转到程序的第23行的存储指令,或程序的 流程从第18行的附条件分支指令继续到第19行的Bin解码指令。如上所述,由cc5操作 数值指定的CCR比特应该已经用于存储作为通过第16行的Bin解码指令而实施的Bin解 码处理的结果获得的Bin数据比特。因而,程序的第18行的附条件分支指令必须在CCR比 特处已经设置作为通过第16行的Bin解码指令而实施的Bin解码处理结果获得的Bin数 据比特之后才执行。然而,完成Bin解码指令的执行耗费时间。这种情况引起等待时间增 加,该等待时间是在CCR比特处建立分支条件所占用的时间。该等待时间是建立用于第18 行的附条件分支指令的分支条件的Bin解码指令的所谓等待时间。为了隐藏该等待时间, 程序的第17行的Bin解码指令在程序的第16行和第18行之间执行,以通过使用由上下文 索引33识别的上下文变量而实施Bin解码处理。以此方式,在正实施该Bin解码处理期间, 在CCR比特处建立起分支条件。 在通过图27的状态转变图中的具有上下文数字276的普通节点表示的状态中,执 行图25所示的程序的第16行的Bin解码指令。在通过虚线框表示的状态中,执行相同程 序的第17行的Bin解码指令,该虚线框包含相同状态转变图中的具有上下文数字33的普 通节点。在通过相同状态转变图中的具有由符号cc(276) 二l和cc(276) = 0示出的分支 的分支节点表示的状态中,执行相同程序的第18行的附条件分支指令。在通过相同的状态 转变图中的具有上下文数字34的上(upper)普通节点表示的状态中,执行相同程序的第19 行的Bin解码指令。 另外,执行图25中示出程序的第20行的Bin解码指令,以便通过使用由上下文索 引34识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。程序的第20行的Bin 解码指令故意地使用附条件执行功能。附条件执行功能的使用允许消除附条件分支指令, 使得能够避免流水线停顿。 在P-片子宏块(Sub-Macroblock)类型上的其它典型应用 图28是状态转变图,示出了在用以生成P-片子宏块类型的语法元素的CABAC解 码处理中出现的状态转变。如图28的状态转变图所示,在用以生成P-片子宏块类型的语 法元素的CABAC解码处理中,由上下文索引21识别的上下文变量用于第一状态,在第一状 态中实施第一 Bin解码处理,以生成第一 Bin数据比特。如果作为第一 Bin解码处理的结 果获得的第一 Bin数据比特是l,那么立刻结束CABAC解码处理。另一方面,如果作为第一 Bin解码处理的结果获得的第一 Bin数据比特是0,那么产生到第二状态的转变。在第二状 态中,由上下文索引22识别的上下文变量用于第二 Bin解码处理,以生成第二 Bin数据比 特。如果作为第二 Bin解码处理的结果获得的第二 Bin数据比特是1 ,那么产生到第三状态的转变,在第三状态中,由上下文索引23识别的上下文变量用于第三Bin解码处理,以生成 第三Bin数据比特。 一旦完成第三Bin解码处理,结束CABAC解码处理。另一方面,如果作 为第二 Bin解码处理的结果获得的第二 Bin数据比特是O,那么立刻结束CABAC解码处理。
图29示出了由属于根据本发明实施例的指令集合的指令组成的典型程序,以用 作将被执行来实施用于生成P-片子宏块类型的语法元素的CABAC解码处理的程序。
执行图29所示的程序的第1行的加载指令,以便将来自存储器110的上下文变量 加载到上下文变量寄存器330中。执行程序的第2行的Bin解码指令,以便通过使用由上下 文索引21(cidx = 7且rs = 0)识别的上下文变量,实施Bin解码处理以生成Bin数据比 特。在该Bin解码指令中,操作数值7是cidx操作数的值。另一方面,在该Bin解码指令中 指定的zero操作数值相当于语句rs = O,这意味着把rs操作数的值设置为0。另外,通用 寄存器GPR[rs(二O)]的内容假定为已经设置为14。也就是说,上下文索引21是cidx(二 7)与GPR[rs] ( = 14)的加和。把作为Bin解码处理的结果获得的Bin数据比特存储在由 Bin解码指令中指定的ccO操作数值指示的CCR(条件码寄存器)比特中。另外,因为CLR 操作数值在Bin解码指令中被指定,因而在Bin解码指令的执行之前,对存储在Bin缓冲器 340中的数据和Bin计数器350的内容进行清零。 执行图29所示的程序的第3行的Bin解码指令,以便通过使用由上下文索引 22(cidx = 8且rs = 0)识别的上下文变量,实施Bin解码处理以生成Bin数据比特。在 Bin解码指令中指定的CEXO操作数值意味着,仅当作为通过在前紧邻Bin解码指令的执行 而实施的Bin解码处理的结果获得的Bin数据比特是0时才实施该Bin解码处理。
执行图29中示出程序的第4行的附条件分支指令,以便如果由ccO操作数值指定 的CCR(条件码寄存器)比特是1,那么跳转到程序的第6行的存储指令。如上所述,由cc0 操作数值指定的CCR比特应该已经用于存储作为通过第2行的Bin解码指令而实施的Bin 解码处理的结果获得的Bin数据比特。 执行图29中示出程序的第5行的Bin解码指令,以便通过使用由上下文索引 23(cidX = 9irs = 0)识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。在 Bin解码指令中指定的CEX1操作数值意味着,仅当作为通过在前紧邻Bin解码指令的执行 而实施的Bin解码处理的结果获得的Bin数据比特是1时才实施该Bin解码处理。
执行图29所示的程序的第6行的存储指令,以便将保存在上下文变量寄存器330 中的上下文变量存储到存储器110中。然后,执行程序的第7行的多值转换指令,以便实施 关于Bin数据比特的多值转换处理,每个Bin数据比特作为目前为止已经实施的Bin解码 处理中的一个的结果而获得。最后,执行程序的第8行的无条件分支指令,以便跳转到返回 地址。 图30是状态转变图,示出了根据图29中示出的典型程序,在用以生成P-片子宏 块类型的语法元素的CABAC解码处理中出现的状态转变。 执行图29所示程序的第4行的附条件分支指令,以便如果由ccO操作数值指定的 CCR(条件码寄存器)比特是l,那么跳转到程序的第6行的存储指令,或如果由ccO操作数 值指定的CCR比特是0,那么程序的流程从第4行的附条件分支指令继续到第5行的Bin解 码指令。如上所述,由ccO操作数值指定的CCR比特应该已经用于存储作为通过第2行的 Bin解码指令而实施的Bin解码处理的结果获得的Bin数据比特。因而,程序的第4行的附条件分支指令必须在作为通过第2行的Bin解码指令而实施的Bin解码处理的结果获得的 Bin数据比特已经在CCR比特处设置之后才执行。然而,完成Bin解码指令的执行耗费时 间。这种情况引起等待时间增加,该等待时间是在CCR比特处建立分支条件所占用的时间。 该等待时间是建立用于第4行的附条件分支指令的分支条件的Bin解码指令的所谓等待时 间(latency)。为了隐藏该等待时间,程序的第3行的Bin解码指令在程序的第2行和第4 行之间执行,以通过使用由上下文索引22识别的上下文变量而实施Bin解码处理。以此方 式,在正实施该Bin解码处理期间,在CCR比特处建立起分支条件。 在通过图30的状态转变图中的具有上下文数字21的普通节点表示的状态中,执 行图29所示的程序的第2行的Bin解码指令。在通过虚线框表示的状态中,执行相同程序 的第3行的Bin解码指令,该虚线框包含相同状态转变图中的具有上下文数字22的普通节 点。在通过相同状态转变图中的具有由符号cc(21) 二l和cc(21) =0示出的分支的分支 节点表示的状态中,执行相同程序的第4行的附条件分支指令。 另外,执行图29中示出程序的第5行的Bin解码指令,以便通过使用由上下文索 引23识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。程序的第5行的Bin 解码指令故意地使用附条件执行功能。附条件执行功能的使用允许消除附条件分支指令, 使得能够避免流水线停顿。 在B-片子宏块类型上的其它典型应用 图31是状态转变图,示出了在用以生成B-片子宏块类型的语法元素的CABAC解 码处理中出现的状态转变。如图31的状态转变图所示,在用以生成B-片子宏块类型的语 法元素的CABAC解码处理中,由上下文索引36识别的上下文变量用于第一状态,在第一状 态中实施第一 Bin解码处理,以生成第一 Bin数据比特。如果作为第一 Bin解码处理的结 果获得的第一 Bin数据比特是O,那么立刻结束CABAC解码处理。另一方面,如果作为第一 Bin解码处理的结果获得的第一 Bin数据比特是l,那么产生到第二状态的转变,在第二状 态中,由上下文索引37识别的上下文变量用于执行第二 Bin解码处理,以生成第二 Bin数 据比特。然后,产生到附条件分支指令的状态的状态转变。随后,产生根据第二Bin数据比 特确定的下一状态转变。 图32示出了由属于根据本发明实施例的指令集合的指令组成的典型程序,以用 作将被执行来实施用于生成B-片子宏块类型的语法元素的CABAC解码处理的程序。
执行图32所示的程序的第1行的加载指令,以便将上下文变量从存储器110加载 到上下文变量寄存器330中。执行程序的第2行的Bin解码指令,以便通过使用由上下文 索引36(cidx = 9且rs = 0)识别的上下文变量,实施Bin解码处理以生成Bin数据比特。 在该Bin解码指令中,操作数值9是cidx操作数的值。另一方面,在该Bin解码指令中指 定的zero操作数值相当于语句rs = 0,这意味着把rs操作数的值设置为0。另外,通用寄 存器GPR[rs( = O)]的内容假定为已经设置为27。也就是说,上下文索引36是cidx(= 9)与GPR[rs] ( = 27)的加和。另外,因为CLR操作数值在Bin解码指令中被指定,因而在 Bin解码指令的执行之前,对存储在Bin缓冲器340中的数据和Bin计数器350的内容进 行清零。把作为Bin解码处理的结果获得的Bin数据比特存储在由Bin解码指令中指定的 ccO操作数值指示的CCR(条件码寄存器)比特中。 执行图32所示的程序的第3行的Bin解码指令,以便通过使用由上下文索引37(cidx = 10且rs = 0)识别的上下文变量,实施Bin解码处理以生成Bin数据比特。把 作为Bin解码处理的结果获得的Bin数据比特存储在由Bin解码指令中指定的cc0操作数 值指示的CCR(条件码寄存器)比特中。通过指定CEXl操作数值,程序的第3行的Bin解码 指令使用附条件执行功能,该CEXl操作数值意味着,仅当作为通过在前紧邻Bin解码指令 的执行而实施的Bin解码处理的结果获得的Bin数据比特是1时才实施该Bin解码处理。
执行图32中示出程序的第4行的Bin解码指令,以便通过使用由上下文索引38或 39(cidx = ll,rs = 0和CEX1以及CINCO)识别的上下文变量,而实施Bin解码处理以生成 Bin数据比特。通过指定CINCO操作数值,程序的第4行的Bin解码指令使用附条件递增功 能,CINCO操作数值意味着根据作为通过在前紧邻Bin解码指令的执行而实施的Bin解码 处理的结果获得的Bin数据比特,实施该Bin解码处理。更具体地,如果作为通过在前紧邻 Bin解码指令的执行而实施的Bin解码处理的结果获得的Bin数据比特为1 ,那么通过使用 由上下文索引38 ( = cidx+GPR
)识别的上下文变量,而实施Bin解码处理,或如果作为 在前紧邻解码处理的结果获得的Bin数据比特为O,那么通过使用由作为将(cidx+GPR
) 增加1的结果获得的上下文索引39 ( = cidx+GPR
+l)识别的上下文变量,而实施Bin解 码处理。把作为Bin解码处理的结果获得的Bin数据比特存储在由Bin解码指令中指定的 ccO操作数值指示的CCR(条件码寄存器)比特中。然而,通过指定CEXl操作数值,程序的 第4行的Bin解码指令也使用附条件执行功能,该CEXl操作数值意味着,仅当作为通过在 前紧邻Bin解码指令的执行而实施的Bin解码处理的结果获得的Bin数据比特是1时才实 施该Bin解码处理。 执行图32中示出程序的第5行的附条件分支指令,以便如果由ccO操作数值指定 的CCR(条件码寄存器)比特是O,那么跳转到程序的第ll行的存储指令。另一方面,如果 由ccO操作数值指定的CCR比特是1,那么程序的流程从第5行的附条件分支指令继续到第 6行的Bin解码指令。如果作为程序的第2行的Bin解码指令的执行的结果获得的Bin数 据比特已经是O,那么第3和4行的Bin解码指令应该没有执行。在此情况下,获得的作为 程序的第2行的Bin解码指令的执行的结果的Bin数据比特0应该已经存储在由在第5行 的附条件分支指令中所包括的ccO操作数值指定的CCR比特中。也就是说,执行程序的第 5行的附条件分支指令,以便跳转到第11行的存储指令。 执行图32所示程序的第6行至第7行中每一行的Bin解码指令,以便通过使用由 上下文索引39(cidx = 12且rs = 0)识别的上下文变量,实施Bin解码处理以生成Bin数 据比特。也就是说,在行中实施两次Bin解码处理,以便生成两个连续的Bin解码比特。
执行图32所示程序的第8行的Bin匹配指令,以便如果每一个作为之前解码处理 结果而获得的第三和第二最近Bin数据比特分别是1和O,那么,将1存储在由指令中指定 的ccl操作数值指示的CCR(条件码寄存器)比特中。另一方面,如果每一个作为之前解码 处理结果而获得的第三和第二最近Bin数据比特不是分别为1和0,那么执行第8行的Bin 匹配指令,以便将0存储在由ccl操作数值指示的CCR比特中。 执行图32中示出程序的第9行的附条件分支指令,以便如果由ccl操作数值指定 的CCR(条件码寄存器)比特是0,那么跳转到程序的第11行的存储指令。如上所述,由ccl 操作数值指定的CCR比特应该已经用于存储作为通过第8行的Bin匹配指令而实施的Bin 解码处理的结果获得的Bin数据比特。
执行图32中示出程序的第10行的Bin解码指令,以便通过使用由上下文索引 39(cidx = 12且rs = 0)识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。
执行图32所示的程序的第11行的存储指令,以便将保存在上下文变量寄存器330 中的上下文变量存储到存储器110中。然后,执行程序的第12行的多值转换指令,以便实 施关于Bin数据比特的多值转换处理,每个Bin数据比特作为目前为止已经实施的Bin解 码处理中的一个的结果而获得。最后,执行程序的第13行的无条件分支指令,以便跳转到 返回地址。 图33是状态转变图,示出了根据图32中示出的典型程序,在用以生成B_片子宏 块类型的语法元素的CABAC解码处理中出现的状态转变。 执行图32所示程序的第5行的附条件分支指令,以便如果由ccO操作数值指定的 CCR(条件码寄存器)比特是O,那么跳转到程序的第11行的存储指令。如上所述,由ccO 操作数值指定的CCR比特应该已经用于存储作为通过第2行的Bin解码指令而实施的Bin 解码处理的结果获得的Bin数据比特。因而,程序的第5行的附条件分支指令必须在作为 通过第2行的Bin解码指令而实施的Bin解码处理的结果获得的Bin数据比特已经在CCR 比特处设置之后才执行。然而,完成Bin解码指令的执行耗费时间。这种情况引起等待时 间增加,该等待时间是在CCR比特处建立分支条件所占用的时间。该等待时间是建立用于 第5行的附条件分支指令的分支条件的Bin解码指令的所谓等待时间(latency)。为了隐 藏该等待时间,程序的第3行的Bin解码指令在程序的第2行和第5行之间执行,以通过使 用由上下文索引37识别的上下文变量而实施Bin解码处理。以此方式,在正实施该Bin解 码处理期间,在CCR比特处建立起分支条件。 在通过图33的状态转变图中的具有上下文数字36的普通节点表示的状态中,执 行图32所示的程序的第2行的Bin解码指令。在通过虚线框表示的状态中,执行相同程序 的第3行的Bin解码指令,该虚线框包含相同状态转变图中的具有上下文数字37的普通节 点。在通过相同状态转变图中的具有由符号cc(36) = l和cc(36) =0示出的分支的分支 节点表示的状态中,执行相同程序的第5行的附条件分支指令。 另外,执行图32中示出程序的第4行的Bin解码指令,以便通过使用由上下文索 引38或39识别的上下文变量,而实施Bin解码处理以生成Bin数据比特。通过指定CINCO 操作数值,程序的第4行的Bin解码指令故意地使用附条件递增功能,CINCO操作数值意味 着根据作为通过在前紧邻Bin解码指令的执行而实施的Bin解码处理的结果获得的Bin数 据比特,实施该Bin解码处理。更具体地,如果作为通过在前紧邻Bin解码指令的执行而实 施的Bin解码处理的结果获得的Bin数据比特为1,那么通过使用由上下文索引38识别的 上下文变量,而实施Bin解码处理,或如果作为在前紧邻Bin解码处理的结果获得的Bin数 据比特为O,那么通过使用上下文索引39识别的上下文变量,而实施Bin解码处理。附条件 递增功能的使用允许消除附条件分支指令(否则在第4行的Bin解码指令之前将包括附条 件分支指令),因而能够避免流水线停顿。 在通过图33的状态转变图中的包含具有上下文数字(38+s)的普通节点的虚线框 表示的状态中,执行图32所示的程序的第4行的Bin解码指令,其中符号s表示值0或1。
执行图32所示程序的第6行至第7行中每一行的Bin解码指令,以便通过使用由 上下文索引39识别的上下文变量,实施Bin解码处理以生成Bin数据比特。也就是说,在行中实施两次Bin解码处理,以便生成两个连续的Bin解码比特。然后,执行第8行的Bin 匹配指令,以便如果每一个作为之前解码处理结果而获得的第三和第二最近Bin数据比特 分别是1和O,那么将1存储在由指令中指定的ccl操作数值指示的CCR(条件码寄存器) 比特中。另一方面,如果每一个作为之前解码处理结果而获得的第三和第二最近Bin数据 比特不是分别为1和O,那么执行第8行的Bin匹配指令,以便将0存储在由ccl操作数值 指示的CCR比特中。以此方式,通过仅仅一个匹配指令的执行把两个Bin数据比特与Bin 匹配指令中指定的操作数进行比较。Bin匹配指令的使用消除了分支指令。因而,能够避免 流水线停顿。 在由图33的状态转变图中具有上下文数字39的上普通节点表示的状态下,执行 图32所示程序的第6行的Bin解码指令。在由相同状态转变图中具有上下文数字39的下 普通节点表示的状态下,执行相同程序的第7行的Bin解码指令。在由相同状态转变图中 具有用符号10x以及Oxx和llx表示的分支的分支节点表示的状态下,执行相同程序的第 8行的Bin匹配指令和相同程序的第9行的附条件分支指令。 如上所述,根据本发明实施例,每个Bin解码指令可以具有附条件执行功能和/或 附条件递增功能,使得安排指令的自由度能够增加,并且建立用于Bin解码指令的分支条 件的指令的等待时间(latency)能够隐藏。另外,通过使用Bin匹配指令, 一些附条件分支 指令能够从程序中去除,使得在附条件分支时间的解释和附条件分支时间的执行之间可能 导致的等待时间的停顿周期的数量能够减少。也就是说,通过提供具有附条件执行功能和 /或附条件递增功能的Bin解码指令,以及通过使用根据本发明实施例的Bin匹配指令,能 够增加流水线的执行效率。 应注意本发明的实施例只是本发明的典型实施。如上所述,在实施例中采用的部 分相应于附于本发明说明书的权利要求中描述的部分。然而,本发明的实施绝不局限于实 施例。也就是说,为了实现本发明,可能以不脱离本发明本质的范围内的各种方式改变实施 例。 另外,根据本发明实施例的处理过程可以被理解为具有作为一连串处理而将被执 行的过程的方法。在此情况下,作为一连串处理而将被执行的过程通过将由计算机执行 的程序来执行,并且该程序预先存储在程序记录介质中。程序记录介质的典型例子包括 CD (光盘)、MD (迷你光盘)、DVD (数字化视频光盘)、存储卡和蓝光光盘(商标)。
本申请包括的主题涉及2008年11月28日提交日本专利局的日本在先专利申请 JP 2008-303524中所公开的主题,其整个内容在此引入以作参考。 本领域技术人员应该理解,取决于设计需要和其他因素,可能出现各种修改、组 合、子组合和替换,只要他们在所附权利要求或其等价物的范围内。
权利要求
一种算术解码设备,包括指令解码器,配置成对算术已编码数据解码指令进行解码,该算术已编码数据解码指令将被执行来实施把算术已编码数据算术解码为二进制信号的算术解码处理;执行条件代码保存部分,配置成将作为在前紧邻算术解码处理的结果获得的所述二进制信号保存为执行条件代码;和算术解码执行部分,配置成根据所述执行条件代码确定是由所述算术已编码数据解码指令指定的上下文数字依原样用作上下文索引,还是增加1的所述指定的上下文数字用作所述上下文索引,以及通过使用所述确定的上下文索引实施所述算术解码处理。
2. 根据权利要求1所述的算术解码设备,其中所述算术解码执行部分基于所述执行条 件代码确定是否实施所述算术解码处理。
3. 根据权利要求1所述的算术解码设备,其中所述上下文数字在所述算术已编码数据 解码指令中被指定为将加到寄存器的内容中的立即值,所述寄存器由也在所述算术已编码 数据解码指令中指定的输入操作数指示。
4. 一种算术解码设备,包括 指令解码器,配置成解码算术已编码数据解码指令,该算术已编码数据解码指令用于实施把算术已编码数据算 术解码为二进制信号的算术解码处理,匹配指令,具有作为输入操作数的位图,所述位图表示所述算术解码处理的匹配条件,和分支指令,用于根据分支条件代码产生指令跳转;算术解码执行部分,配置成通过使用由所述算术已编码数据解码指令指定的上下文数 字来实施所述算术解码处理;历史保存部分,配置成用于存储所述二进制信号的历史,每个所述二进制信号是作为 所述算术解码处理的结果而获得的;匹配处理部分,配置成根据所述二进制信号的所述历史是否匹配所述匹配条件而设置 所述分支条件代码;以及指令控制部分,配置成根据所述分支条件代码而进行所述指令跳转。
5. 根据权利要求4所述的算术解码设备,其中,如果所述算术已编码数据解码指令的 输入操作数指定清除由所述历史保存部分保存的所述历史的操作,则所述算术解码执行部 分清除所述历史。
全文摘要
本发明公开了一种算术解码设备,包括指令解码器,配置成对算术已编码数据解码指令进行解码,该算术已编码数据解码指令被执行来实施把算术已编码数据算术解码为二进制信号的算术解码处理;执行条件代码保存部分,配置成将作为在前紧邻算术解码处理的结果获得的所述二进制信号保存为执行条件代码;和算术解码执行部分,配置成根据所述执行条件代码确定是由所述算术已编码数据解码指令指定的上下文数字依原样用作上下文索引,还是增加1的所述指定的上下文数字用作所述上下文索引,以及通过使用所述确定的上下文索引实施所述算术解码处理。
文档编号H03M7/40GK101753148SQ20091022586
公开日2010年6月23日 申请日期2009年11月30日 优先权日2008年11月28日
发明者坂口浩章 申请人:索尼株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1