JP4962476B2 - 算術復号装置 - Google Patents

算術復号装置

Info

Publication number
JP4962476B2
JP4962476B2 JP2008303524A JP2008303524A JP4962476B2 JP 4962476 B2 JP4962476 B2 JP 4962476B2 JP 2008303524 A JP2008303524 A JP 2008303524A JP 2008303524 A JP2008303524 A JP 2008303524A JP 4962476 B2 JP4962476 B2 JP 4962476B2
Authority
JP
Japan
Prior art keywords
decoding
instruction
bin
context
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008303524A
Other languages
English (en)
Other versions
JP2010130407A (ja
Inventor
浩章 坂口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2008303524A priority Critical patent/JP4962476B2/ja
Priority to US12/625,630 priority patent/US7956776B2/en
Priority to CN2009102258676A priority patent/CN101753148B/zh
Publication of JP2010130407A publication Critical patent/JP2010130407A/ja
Application granted granted Critical
Publication of JP4962476B2 publication Critical patent/JP4962476B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock

Description

本発明は、算術復号方式に関し、特にコンテキスト適応型二値算術符号化方式(CABAC:Context-Adaptive Binary Arithmetic Coding)により符号化されたデータを復号する算術復号装置に関する。
コンテキスト適応型二値算術符号化方式(CABAC)は、ITU−T(International Telecommunication Union - Telecommunication standardization sector:国際電気通信連合の電気通信標準化部門)において標準化されたH.264における、エントロピー符号化方式の一つである(非特許文献1参照。)。このCABACでは、符号化前に各種多値データを「0」か「1」のシンボルで表現することにより二値化する。それを二値算術符号化処理によって符号化する。復号の際にはその逆の処理を行うことになる。
二値算術符号化処理は、「0」か「1」のシンボルで表現されたデータをさらに出現確率が高いと推測される方のシンボルを優勢確率シンボル(MPS:Most Probable Symbol)とし、MPSでない方を劣勢確率シンボル(LPS:Least Probable Symbol)として、{0,1}から{LPS,MPS}に置き換える処理である。そして、LPSまたはMPSの2シンボルによって表現された二値データを算術符号で符号化する。MPSが「0」であるか「1」であるかは、処理済みのデータに基づいて1シンボルごとに予測されて決定される。すなわち、符号化(エンコード)の際は符号化済みのデータのみから次に符号化するシンボルのMPS値が決まり、復号(デコード)の際には復号済みのデータのみから次に復号するシンボルのMPS値が決まる。
また、二値算術符号化処理では、予め用意された複数の確率モデル(コンテキスト)の中から現在の状態に適合するものに順次切り替えながら処理が行われる。CABACでは、それぞれのコンテキストに対応したコンテキスト変数をコンテキスト変数テーブルに格納しておいて、コンテキストインデックス(ctxIdx)によってコンテキスト変数context[ctxIdx]を特定する。各コンテキスト変数は、出現確率を示す確率状態インデックスpStateIdxと、出現確率の高い優勢確率シンボル(MPS)を示すvalMPSとから構成される。pStateIdxは、そのコンテキストにおけるLPSの出現確率の推定値を、予め定義された0から63までの確率状態によって表す。valMPSは、MPSに該当するシンボルが「0」または「1」の何れであるかを表す。なお、各コンテキスト変数において、確率状態インデックスはcontext[ctxIdx].pStateIdxと表記し、valMPSはcontext[ctxIdx].valMPSと表記する。
CABAC復号器では、コンテキスト変数が1つ選択され、そのコンテキスト変数に基づいて1つのBinデータ(2値データの1ビット)が復号される。そして、その復号されたBinデータによってコンテキスト変数が更新される。CABAC復号器では、マクロブロックを構成するパラメータ毎に復号の方法が定義されている。このパラメータは、シンタックス要素(SE:Syntax Element)と呼ばれる。1つのシンタックス要素の復号は、複数のコンテキスト変数を使用して復号した複数のBinデータに対して、シンタックス要素毎に決められている多値化の方法に従って、シンタックス要素の多値データを求めることによって行われる。
1つのBinデータを復号する場合、1つ前に復号されたBinデータの値によってそのコンテキストインデックスが決まるようになっているものは、コンテキストインデックスの昇順において各シンタックス要素の先頭や中間に存在することが多い。各シンタックス要素のBinデータの長さも直前のBinデータを復号するまで確定しないものが多い。そのため、1つのシンタックス要素の復号が終わり、別のシンタックス要素を復号する際においても、コンテキストインデックスは直前のBinデータを復号するまで決まらないことになる。さらに、1つのシンタックス要素の復号において、同じコンテキストインデックスのコンテキスト変数を連続して使用する場合もあれば、毎回異なるコンテキストインデックスのコンテキスト変数を使用する場合もある。
先頭のBinデータのコンテキストインデックスは、シンタックス要素に応じて決まった番号である場合もあるが、復号済みの複数のシンタックス要素がどのような値かによって4個程度の候補から選択されるシンタックス要素もある。シンタックス要素の先頭以外のBinデータの場合は、1つ前に復号されたBinデータが0か1かによってコンテキストインデックスが算出される。また、シンタックス要素の最後か否かは、各シンタックス要素で定義されている可変長の符号表に基づいて判断される。
CABACの復号手順は、分岐処理を多く含んでいる。また、コンテキストインデックスは毎回1ずつ増加するとは限らず、同じ値が続くこともあれば2つ増加する場合もある。このようにコンテキストインデックスの算出は直前のBinデータの値に依存しており、値の算出も単純ではない。また、Binデータの長さはシンタックス要素によって固定の長さではなく分岐の経路によって異なるため、最後の判定も複雑である。
先頭のコンテキストインデックスは、シンタックス要素によって一意に決定される場合と、隣接マクロブロックから算出される場合とがある。隣接マクロブロックから算出される場合には、復号済みである真上のマクロブロックのシンタックス要素と左隣のマクロブロックのシンタックス要素とが参照される。このとき、画像の上端や左右端などのように隣接マクロブロックが存在しない場合があり、例外処理も合わせて行う必要があり、処理が非常に複雑になる。
このようなCABACの復号処理をハードウェアで実装するためには、460個のコンテキスト変数を格納する専用メモリと、先頭のコンテキストインデックスを算出するために過去のシンタックス要素を保存する専用メモリが必要になる。そして、シンタックス要素毎の個別の復号方法に応じたステートマシンが必要になる。そのため、非常に複雑な制御を要し、回路規模が大きくなってしまうという問題がある。
一方、CPUおよびコプロセッサの組み合わせを想定して、ソフトウェア処理によりCABACの復号処理を実現することが考えられる。コプロセッサ命令としてコンテキストインデックスを1つ与えると、1つのBinデータを復号して、その値をCPUのレジスタへ書き戻すような命令を想定する。このような命令を実行する装置として、CPUと同程度の高周波数動作させるためにBinデータの復号をパイプライン化したCABAC復号装置が提案されている(特許文献1参照。)。
ITU−T H.264 特開2007−074648号公報(図6)
上述のソフトウェア処理を実現するための従来技術では、Binデータの復号処理をパイプライン化するため、Binデータの復号結果を得るのに数サイクル必要になり、次のコンテキストインデックスの決定も遅れることになる。コンテキストインデックスの計算とシンタックス要素の最後の判定をCPUで処理することを考えると、さらにBinデータの復号毎に比較命令と分岐命令が必要になるため、コンテキストインデックスの確定がさらに遅れる。そのため、次のBinデータの復号が開始できずにパイプラインストールが頻繁に発生し、命令実行効率が著しく低下するおそれがある。一般に、命令のレイテンシを隠蔽するために本来の演算と依存関係のない演算命令をレイテンシの長い命令の後に挿入するという手法がある。しかし、CABACの復号処理においてはそのような演算パターンはほとんど無く、レイテンシを適切に隠蔽することが困難である。
本発明はこのような状況に鑑みてなされたものであり、コンテキスト適応型二値算術復号処理に適した命令セットを提供することを目的とする。
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、算術符号化されたデータを二値信号に算術復号する算術符号化データ復号命令をデコードする命令デコーダと、直前に算術復号された二値信号を実行条件コードとして保持する実行条件コード保持部と、上記算術符号化データ復号命令によって指定されたコンテキスト番号をそのままコンテキスト番号とするか、または、上記指定されたコンテキスト番号に1を加算した番号をコンテキスト番号とするかを、上記実行条件コードに応じて決定して当該決定されたコンテキスト番号を使用して上記算術復号を実行する算術復号実行部とを具備する算術復号装置である。これにより、直前の復号結果に応じてコンテキスト番号を切り換えて復号を行わせるという作用をもたらす。
また、この第1の側面において、上記算術復号実行部は、上記実行条件コードに応じて上記算術復号を実行するか否かを切り替えてもよい。これにより、直前の復号結果に応じて復号の有無を制御させるという作用をもたらす。
また、この第1の側面において、上記算術符号化データ復号命令において、上記コンテキスト番号は入力オペランドに示されるレジスタの値と即値との加算値として指定されてもよい。これにより、コンテキスト番号を動的に設定させるという作用をもたらす。
また、本発明の第2の側面は、算術符号化されたデータを二値信号に算術復号する算術符号化データ復号命令、上記算術復号のマッチング条件を表すビットマップを入力オペランドとして有するマッチング命令、および、分岐条件コードに応じて命令分岐を実行する分岐命令をデコードする命令デコーダと、上記算術符号化データ復号命令によって指定されたコンテキスト番号を使用して上記算術復号を実行する算術復号実行部と、上記算術復号された二値信号の履歴を保持する履歴保持部と、上記二値信号の履歴が上記マッチング条件に合致しているか否かに応じて上記分岐条件コードを設定するマッチング処理部と、上記分岐条件コードに応じて上記命令分岐を実行する命令制御部とを具備する算術復号装置である。これにより、復号履歴のマッチング条件に応じて命令分岐を実行させるという作用をもたらす。
また、この第2の側面において、上記算術復号実行部は、上記算術符号化データ復号命令の入力オペランドによって上記履歴のクリアが指定されている場合には上記履歴保持部に保持される上記履歴をクリアするようにしてもよい。これにより、シンタックス要素の復号開始に先立って履歴をクリアさせるという作用をもたらす。
本発明によれば、コンテキスト適応型二値算術復号処理をソフトウェア処理するに際して、処理速度を高速化することができるという優れた効果を奏し得る。
以下、本発明を実施するための最良の形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.CABAC復号器の概要
2.コプロセッサ命令の内容
3.適用例
<1.CABAC復号器の概要>
[CABAC復号器の機能構成例]
図1は、本発明の実施の形態における算術復号装置の一例としてのCABAC復号器20の機能構成例を示す図である。このCABAC復号器20は、符号列入力部10から符号化データを受け取り、二値信号(Binデータ)に復号(デコード)した後に、多値信号(SE:シンタックス要素)に多値化するものである。ここで、シンタックス要素とは、H.264においてシンタックスで伝送することが規定されている情報である。このCABAC復号器20は、二値算術符号復号処理部21と、コンテキストインデックス計算処理部22と、コンテキスト変数テーブル保持部23と、多値化処理部24とを備えている。
コンテキストインデックス計算処理部22は、コンテキストインデックス(ctxIdx)を計算して、その計算されたコンテキストインデックスを二値算術符号復号処理部21に供給するものである。このコンテキストインデックス計算処理部22は、コンテキストインデックスを計算する際、以前に復号されたBinデータおよびシンタックス要素を参照する。
コンテキスト変数テーブル保持部23は、各コンテキストに対応したコンテキスト変数をコンテキスト変数テーブルとして保持するものである。各コンテキスト変数は、出現確率を示す確率状態インデックスpStateIdxと、出現確率の高い優勢確率シンボル(MPS)を示すvalMPSとから構成される。コンテキスト変数テーブル保持部23に保持されるコンテキスト変数は、ctxIdxによって特定され、context[ctxIdx]と表される。
二値算術符号復号処理部21は、符号列入力部10から入力された符号化データをBinデータに復号するものである。この二値算術符号復号処理部21は、シンボルを1つ復号する際、コンテキストインデックス計算処理部22からctxIdxを受け取る。そして、このctxIdxに基づいてコンテキスト変数テーブル保持部23からコンテキスト変数context[ctxIdx]を取得する。そして、このコンテキスト変数に基づいてシンボルを復号して、Binデータを多値化処理部24に出力する。
多値化処理部24は、二値算術符号復号処理部21から出力されたBinデータを元の多値信号(シンタックス要素)に多値化するものである。二値算術符号化の際にはシンタックス要素に応じて多値信号から二値信号への変換が行われており、この多値化処理部24ではそのような二値信号を元の多値信号に戻す処理が行われる。
図2は、本発明の実施の形態におけるCABAC復号の処理手順例を示す図である。この復号処理は、コンテキスト変数を用いてBinデータを復号するBin復号処理(ステップS902乃至904)と、多値化を行う多値化処理(ステップS901、S905乃至907)とに大別される。
まず、シンタックス要素の先頭のctxIdxがコンテキストインデックス計算処理部22によって算出される(ステップS901)。先頭のBinデータのコンテキストインデックスは、シンタックス要素に応じて決まった番号である場合もあるが、復号済みの複数のシンタックス要素がどのような値かによって4個程度の候補から選択されるシンタックス要素もある。二値算術符号復号処理部21は、その算出されたctxIdxに基づいて、コンテキスト変数テーブル保持部23からコンテキスト変数context[ctxIdx]を取得する(ステップS902)。
二値算術符号復号処理部21は、この取得したコンテキスト変数を用いて、符号列入力部10からの符号化データをBinデータに復号する(ステップS903)。Binデータの復号結果によって、コンテキスト変数テーブル保持部23のコンテキスト変数は更新される(ステップS904)。
多値化処理部24は、後述する可変長符号表を参照して、シンタックス要素の最後か否かを判定する(ステップS905)。シンタックス要素の最後でなければ、次のctxIdxがコンテキストインデックス計算処理部22によって算出されて(ステップS906)、ステップS902以降の処理が繰り返される。シンタックス要素の先頭以外のBinデータの場合は、1つ前に復号されたBinデータが0か1かによってctxIdxが算出される。シンタックス要素の最後であれば、多値化処理部24は、そのシンタックス要素を多値信号として生成する(ステップS907)。
[CABAC復号の概要]
上述のように、CABAC復号の際には、コンテキストインデックスctxIdxにより特定されるコンテキスト変数context[ctxIdx]が用いられる。以下では、コンテキストインデックスとBinデータおよびシンタックス要素との関係について、マクロブロック(MB)タイプコンテキストグループを例として説明する。
図3は、本発明の実施の形態におけるマクロブロックタイプコンテキストグループのコンテキスト変数の割当例を示す図である。「cidx」は、この割当例における先頭からの相対的なコンテキストインデックスを示すものである。「ctxIdx」は、H.264において規定されたコンテキストインデックスを示すものである。
図3(a)は、Iスライス用のコンテキスト変数を割り当てた場合の例である。ここでは、8個のコンテキスト変数(「3」乃至「10」)がシンタックス要素「Mb_Type_I」に割り当てられている。
図3(b)は、Pスライス用のコンテキスト変数を割り当てた場合の例である。ここでは、7個のコンテキスト変数(「14」乃至「20」)がシンタックス要素「Mb_Type_P」に、続く3個のコンテキスト変数(「21」乃至「23」)がシンタックス要素「SubMb_Type_P」にそれぞれ割り当てられている。
図3(c)は、Bスライス用のコンテキスト変数を割り当てた場合の例である。ここでは、9個のコンテキスト変数(「27」乃至「35」)がシンタックス要素「Mb_Type_B」に、続く4個のコンテキスト変数(「36」乃至「39」)がシンタックス要素「SubMb_Type_B」にそれぞれ割り当てられている。
図4乃至8は、CABACにおけるmb_typeまたはsub_mb_typeのシンタックス要素とBinデータとの対応関係を表す符号表である。図4は、Iスライスのmb_type(Mb_Type_I)とBinデータとの対応関係を表す符号表である。図5は、Pスライスのmb_type(Mb_Type_P)とBinデータとの対応関係を表す符号表である。図6は、Bスライスのmb_type(Mb_Type_B)とBinデータとの対応関係を表す符号表である。図7は、Pスライスのsub_mb_type(SubMb_Type_P)とBinデータとの対応関係を表す符号表である。図8は、Bスライスのsub_mb_type(SubMb_Type_B)とBinデータとの対応関係を表す符号表である。
多値化処理部24は、図4乃至8の符号表を参照して、シンタックス要素の最後か否かを判定する。シンタックス要素の最後でなければ、最後になるまで二値算術符号復号処理部21におけるBinデータの復号処理が繰り返される。そして、シンタックス要素の最後になると、多値化処理部24は、図4乃至8の符号表を参照して、対応するシンタックス要素の多値信号を出力する。
[CABAC復号器のハードウェア構成例]
図9は、本発明の実施の形態におけるCABAC復号器のハードウェア構成例を示す図である。本発明の実施の形態では、CPUを中心として構成される情報処理装置において復号コプロセッサを設け、CABAC復号のためのコプロセッサ命令を復号コプロセッサに対して発行することにより、CABAC復号器として動作させることを想定する。この情報処理装置は、メモリ110と、命令キャッシュ120と、データキャッシュ130と、DMAコントローラ140と、バス109と、CPU200と、復号コプロセッサ300とを備える。
メモリ110は、CPU200および復号コプロセッサ300において実行されるプログラムや処理対象となるデータ等を記憶するメインメモリである。命令キャッシュ120は、メモリ110に記憶されるプログラムの命令列を一時的に保持するレベル1キャッシュメモリである。データキャッシュ130は、メモリ110に記憶されるデータを一時的に保持するレベル1キャッシュメモリである。DMAコントローラ140は、メモリ110に記憶されるデータを、CPU200を介さずに、復号コプロセッサ300にDMA(Direct Memory Access)転送するための制御装置である。バス109は、メモリ110、命令キャッシュ120、データキャッシュ130およびDMAコントローラ140を相互に接続するバスである。CPU200は、命令キャッシュ120から供給された命令を実行するプロセッサである。復号コプロセッサ300は、CPU200から供給されたコプロセッサ命令を実行するコプロセッサである。
DMAコントローラ140は、ストリームの読出し開始アドレスと読出しデータサイズを設定することができ、それらの設定後に転送開始が指示されることで開始アドレスから順次ストリームの読出しが行われる。ストリームは、DMAコントローラ140を介してメモリ110から順次読み出され、復号コプロセッサ300における再正規化処理で後述のcodIOffsetをシフトする際に、シフト量に等しいビット数のストリームがcodIOffsetのLSB側に取り込まれる。このようにしてストリームは自動的に読み出されていき、復号処理が実行される。
CPU200は、命令デコーダ210と、命令制御部220と、演算パイプライン230と、プロセッサレジスタ群240と、ロードストアユニット250とを備える。命令デコーダ210は、命令キャッシュ120から供給された命令をデコード(解読)する命令デコーダである。命令制御部220は、CPU200において実行すべき命令を制御するものである。この命令制御部220は、プログラムカウンタ(PC)を備え、通常の状態においては連続する命令が実行されるようにプログラムカウンタを更新する。但し、命令デコーダ210において分岐命令がデコードされ、分岐が発生する(taken)場合には、命令制御部220は分岐先に飛ぶようにプログラムカウンタを更新する。演算パイプライン230は、パイプライン化された演算器である。ここでは簡略化のため1つしか図示していないが、必要に応じて複数本のパイプラインを演算パイプライン230として設けることができる。プロセッサレジスタ群240は、CPU200の汎用レジスタ(GPR:general purpose registers)および条件コードレジスタ(CCR:condition code registers)である。ロードストアユニット250は、データキャッシュ130を介してメモリ110との間のロード処理およびストア処理を行うものである。ロードストアの対象となるのは、CPU200のプロセッサレジスタ群240および後述する復号コプロセッサ300内のコプロセッサレジスタ群である。
CPU200と復号コプロセッサ300との間にはコプロセッサ命令キュー301およびライトバックバッファ309が設けられる。コプロセッサ命令キュー301は、CPU200から復号コプロセッサ300へコプロセッサ命令を受け渡すために用いられる。ライトバックバッファ309は、復号コプロセッサ300からCPU200の汎用レジスタGPRへデータをライトバックするために用いられる。
CPU200は、リセット後にメモリ110上の予め決められたメモリ番地に記憶される命令から順番に、命令制御部220のプログラムカウンタに従って、命令キャッシュ120を介してCPU200内に取り込む。CPU200内で命令デコーダ210が命令をデコードして、命令の実行に必要なユニットを動作させるように制御を行う。CPU200用の命令であれば、CPU200内の演算パイプライン230を動作させる。コプロセッサ用の命令であれば、コプロセッサ命令キュー301を介して復号コプロセッサ300へ命令を送る。復号コプロセッサ300はコプロセッサ命令を受信すると、命令を解釈しその命令の実行に必要な制御を行う。CPU200は、命令制御部220のプログラムカウンタに従って、後続の命令をCPU200内に取り込み、同様の処理を繰り返す。
ただし、命令デコーダ210において分岐命令がデコードされると、分岐先アドレスが算出され、分岐する必要があれば(taken)分岐先アドレスが命令制御部220のプログラムカウンタに設定される。そして、その分岐先アドレスのメモリ番地にある命令から順番に命令キャッシュ120を介してCPU200内に取り込まれる。分岐命令には、無条件に分岐する無条件分岐命令と、条件コードレジスタCCRの対応するビットを分岐条件コード(BC:branch code)として、BCが「0」か「1」かによって分岐する条件分岐命令とが存在する。条件分岐命令は「0」で分岐するか「1」で分岐するかを指定できるものとする。条件コードレジスタCCRは、比較や論理演算の結果、命令により指定されたビット位置が更新される。
図10は、本発明の実施の形態における復号コプロセッサ300の一構成例を示す図である。復号コプロセッサ300は、コプロセッサ命令デコーダ310と、Binデコーダ320と、コンテキスト変数レジスタ330と、Binバッファ340と、Binカウンタ350と、ライトバックデータ生成器360とを備えている。
コプロセッサ命令デコーダ310は、コプロセッサ命令キュー301を介して供給されたコプロセッサ命令をデコード(解読)する命令デコーダである。このコプロセッサ命令デコーダ310は、特許請求の範囲に記載の命令デコーダの一例である。
Binデコーダ320は、DMAコントローラ140から供給された符号化データを復号してBinデータを生成するデコーダである。このBinデコーダ320は、特許請求の範囲に記載の算術復号実行部の一例である。
コンテキスト変数レジスタ330は、Bin復号に必要なコンテキスト変数を保持するレジスタである。このコンテキスト変数レジスタ330は、例えば、128ビット構成を想定し、8ビットに対して1つのコンテキスト変数を割り当てて、計16個のコンテキスト変数を保持する。コンテキスト変数レジスタ330は、コプロセッサロード命令またはコプロセッサストア命令によって、メモリ110との間のデータ転送が行われる。シンタックス要素の復号を開始する前にそのシンタックス要素に対応するコンテキスト変数がメモリ110からコンテキスト変数レジスタ330へロードされて、シンタックス要素全体の復号が実行される。その後、次のシンタックス要素を復号する前に、以前のシンタックス要素のコンテキスト変数がコンテキスト変数レジスタ330からメモリ110へ退避される。そして、次のシンタックス要素のコンテキスト変数がメモリ110からコンテキスト変数レジスタ330へロードされる。このようにして、メモリ110上に格納されたコンテキスト変数を順次必要なだけコンテキスト変数レジスタ330へ読み出して復号処理を実行する。
この場合、16個のコンテキスト変数は、4ビットのコンテキスト番号cidxにより特定することができる。実際上、コンテキスト変数の数は、シンタックス要素毎では図3に示したように、高々16個程度であることが知られている。これを利用することにより、コンテキスト番号cidxを用いてコンテキスト変数レジスタ上のコンテキスト変数を特定することができ、ctxIdxの算出に相当する処理を実現することができる。また、これにより、Binデコーダ320をより簡素に実現でき、全てのコンテキスト変数を格納する大容量SRAMを用いることなくデータキャッシュを利用して処理できるようになり、小さな回路規模でCABAC復号器を実現することができる。なお、ここでは8ビットに対して1つのコンテキスト変数を割り当てることを想定したが、1つのコンテキスト変数は7ビットで表現されるため、コンテキスト変数レジスタ330を112ビット構成としてもよい。
なお、コンテキスト変数をロード命令によりメモリ110からロードしたとき、図3のようにコンテキストインデックスctxIdxとコンテキスト番号cidxが対応するようにコンテキスト変数レジスタ330に配置されるものとする。また、このコンテキスト変数をコンテキスト変数レジスタ330からストア命令によりストアすると、以前メモリ110に配置されていたのと同一の配置によりメモリ110に格納されるものとする。
Binバッファ(BINBUF)340は、Binデコーダ320により復号されたBinデータの履歴を保持するバッファである。ここでは、7つ前までのBinデータの結果を同時に参照できるよう、7ビット以上のシフトレジスタにより構成されるものとする。このBinバッファ340は、特許請求の範囲に記載の履歴保持部の一例である。
Binカウンタ(BINCNT)350は、Binデコーダ320により復号されたBinデータの数を計数するカウンタである。シンタックス要素の先頭でBinデコーダ320をクリアすることにより、シンタックス要素の復号後に、Bin列の長さを取得することができる。
ライトバックデータ生成器360は、Binバッファ340の値を参照して、ビット単位で取り出す等のデータの加工を行うものである。この加工データはライトバックバッファ309を介してCPU200の汎用レジスタGPRまたは条件コードレジスタCCRに書き込まれる。このライトバックデータ生成器360は、単純なデータ加工以外にマッチング処理を行う機能を備える。マッチング処理機能とは、Binバッファ340に保持されたBinデータの履歴に対して条件を満たすビットパターンを複数指定し、その何れかのパターンに合致すれば「1」を生成し、そうでなければ「0」を生成する機能である。このマッチング処理における条件をマッチング条件と称する。なお、このライトバックデータ生成器360は、特許請求の範囲に記載のマッチング処理部の一例である。
<2.コプロセッサ命令の内容>
[命令セットの概要]
図11は、本発明の実施の形態におけるCABAC復号のための命令セットの一例を示す図である。ニーモニックの中で、[]により囲まれた部分は、省略が可能なオペランドを意味する。また、「cpr」はコプロセッサレジスタ全般を意味し、コンテキスト変数レジスタ330の他、Binバッファ340およびBinカウンタ350が含まれる。
「cbc_dec_bin」命令、「cbc_dec_bin_cc」命令、および、「cbc_dec_term_cc」命令は、Binデコーダ320によりCABACの復号を行うBin復号命令である。「cbc_dec_bin」命令では、コンテキスト番号cidxの即値とレジスタ番号rsが示す汎用レジスタGPRの値GRR[rs]とを加算した番号によりコンテキスト変数レジスタのコンテキスト変数CTX(cidx+GPR[rs])が特定される。特定されたコンテキスト変数を用いて、Binデータが復号され、その結果がBinバッファ340へ追加され、Binカウンタ350が1増加される。オプションとしてCEX0が指定された場合には、前回の復号結果のBinデータが「0」のときのみ、この「cbc_dec_bin」命令が実行される。また、CEX1が指定された場合には、前回の復号結果のBinデータが「1」のときのみ、この「cbc_dec_bin」命令が実行される。オプションとしてCINC0が指定された場合には、前回の復号結果のBinデータが「0」のときにコンテキスト変数CTX(cidx+GPR[rs]+1)を使用して復号が行われる。また、CINC1が指定された場合には、前回の復号結果のBinデータが「1」のときにコンテキスト変数CTX(cidx+GPR[rs]+1)を使用して復号が行われる。オプションとしてCLRが指定された場合には、復号に先立ってBinバッファ340およびBinカウンタ350がクリアされ、Binバッファ340の内容が空になり、Binカウンタ350は一旦「0」になる。その後、Binデータが復号されることにより、Binカウンタ350は「1」に設定される。
「cbc_dec_bin_cc」命令では、オペランドccにより指定されたCCRのビットに、復号されたBinデータが格納される。その他のオペランドは「cbc_dec_bin」命令と同様である。
「cbc_dec_term_cc」命令では、pStateIdxを「63」、valMPSを「0」として、Binデータが復号され、その結果がBinバッファ340へ追加され、Binカウンタ350が1増加される。また、オペランドccにより指定されたCCRのビットに、復号されたBinデータが格納される。
「cbc_match」命令は、ライトバックデータ生成器360によりマッチング処理を行うBinマッチング命令である。この「cbc_match」命令では、Binバッファ340のLSB側の4ビット(つまり過去の4つのBinデータ)を比較対象として、マッチング処理が行われる。オペランドに列挙されたマッチパターン集合に同じパターンがあるときには「1」が、無いときには「0」が、オペランドccにより指定されたCCRのビットに格納される。ptn0、ptn1等のパターンを示すオペランドは、0、1、xの3文字を4つ連続して並べて、例えば、「0001」、「xxx1」、「x10x」などのように表現する。例えば、「0001」は、4つ前と3つ前と2つ前のBinデータが全て「0」で、最後の1つ前のBinデータが「1」であることを表す。また、xは「0」または「1」の何れでもよいことを表す。例えば、「xxx1」は1つ前のBinデータが「1」である全てのパターンを表し、「x10x」は3つ前のBinデータが「1」で2つ前のBinデータが「0」の全てのパターンを表す。このようにして、{ptn0,ptn1,...}に列挙したパターンで示された全てに対応するビットを1とした16ビットのビットマップの即値が命令のオペランドに設定される。
「cbc_tblidx」命令は、符号表に整合するようにBinバッファ340の値を加工する多値化テーブルインデックス命令である。多値化処理はBinデータの可変長符号表により定義されており、また、一意復号可能な可変長符号であることから、最長な符号のMSBと各符号のMSBを揃えるように左シフトした値をテーブルのインデックスとして作成したテーブルを用意すると便利である。そこで、この「cbc_tblidx」命令では、復号されたシンタックス要素の最大ビット長をオペランドwにより指定し、Binバッファ340の内容を(BINCNT−w)ビット左シフトする。これにより、そのシンタックス要素の先頭のBinデータがwビットの値のMSBになるように加工される。そして、レジスタ番号rdが示す汎用レジスタGRR[rd]にwビットのデータが書き込まれる。
「cbc_MbTypeI」命令、「cbc_MbTypeP」命令、「cbc_MbTypeB」命令、「cbc_SubMbTypeB」命令、および、「cbc_SubMbTypeP」命令は、多値化命令である。これら多値化命令は、図4乃至図8に示したH.264規格書に規定された復号手順に従って、Binバッファ340およびBinカウンタ350の値からシンタックス要素の多値信号を算出する。この算出結果は、レジスタ番号rdが示す汎用レジスタGRR[rd]に書き込まれる。
ここまでに説明したコプロセッサ命令は、CPU200から復号コプロセッサ300に供給され、復号コプロセッサ300において実行される。これらコプロセッサ命令に加えて、CABAC復号を行うためにCPU200において実行される命令として、以下の命令が用いられる。
「cbc_ldq」命令は、メモリ110から復号コプロセッサ300のコプロセッサレジスタにデータをロードするロード命令である。この「cbc_ldq」命令では、メモリ110のアドレスaddrから128ビットのデータが読み出され、オペランドcprの示すコプロセッサレジスタへ書き込まれる。
「cbc_stq」命令は、復号コプロセッサ300のコプロセッサレジスタからメモリ110にデータをストアするストア命令である。この「cbc_stq」命令では、オペランドcprの示すコプロセッサレジスタから128ビットのデータが読み出され、メモリ110のアドレスaddrへ書き込まれる。
「br」命令は、分岐条件コードに応じて分岐先アドレスに分岐する条件分岐命令である。この「br」命令では、オペランドccにより指定されたCCRのビットの値がオペランドvに等しい場合に、メモリ110のアドレスaddrを分岐先アドレスとして分岐が発生する。「jpr」命令は、無条件で分岐先アドレスにジャンプする無条件分岐命令である。この「jpr」命令では、CCRの値にかかわらず、メモリ110のアドレスaddrを分岐先アドレスとして分岐が発生する。
[コプロセッサ命令の命令フォーマット例]
図12は、本発明の実施の形態におけるCABAC復号のためのコプロセッサ命令の命令フォーマットの一例を示す図である。図12(a)は、「cbc_dec_bin」命令の命令フォーマットである。図12(b)は、「cbc_dec_bin_cc」命令の命令フォーマットである。図12(c)は、「cbc_dec_term_cc」命令の命令フォーマットである。図12(d)は、「cbc_match」命令の命令フォーマットである。図12(e)は、「cbc_tblidx」命令の命令フォーマットである。図12(f)は、「cbc_MbTypeI」命令、「cbc_MbTypeP」命令、「cbc_MbTypeB」命令、「cbc_SubMbTypeB」命令、および、「cbc_SubMbTypeP」命令の命令フォーマットである。
第31ビット目から第26ビット目には、コプロセッサ命令を表す値COPが共通に割り当てられている。また、第5ビット目から第0ビット目には、コプロセッサ命令の機能として各命令のコードが設定される。第25ビット目から第21ビット目のrsおよび第15ビット目から第11ビット目のrdは、汎用レジスタGPRのレジスタ番号である。第24ビット目から第21ビット目のwは、多値化テーブルインデックス命令の処理対象となるwビットを表す。第18ビット目から第16ビット目のccは、条件コードレジスタCCRのビット位置を表す。第14ビット目から第11ビット目のcidxはコンテキスト番号を表す。第6ビット目のCLRはオプションとして、復号の際のクリアを実行するか否かを示すフラグである。
第24ビット目から第19ビット目および第15ビット目から第6ビット目のPXXXXは、XXXXのパターンが現れた際に条件コードレジスタCCRを「1」に設定するためのビットである。ここでは過去4つのBinデータについて判断することを想定しているため、4ビットのパターンの総数である16個が指定できるようになっている。例えば、ビットマップのビットの値が「1」のときマッチング条件の候補とし、「0」であればマッチング条件の候補から外すものとする。複数のビットを同時に「1」にすることで、マッチング条件を満たす候補の集合を定義することができる。Binマッチング命令は、その集合に含まれるものがあるかを判断する比較命令として機能する。そして、比較結果を条件コードレジスタCCRへ書き込むことによって分岐条件コードBCとして参照することができるため、分岐命令によって集合に含まれるかどうかによってプログラムを分岐させることができる。また、Binマッチング命令は、条件コードレジスタCCRのどのビットに書き込むかを第18ビット目から第16ビット目のccで指定することができる。例えば、条件コードレジスタCCRが8ビットで8個の分岐条件コードBCを格納できる場合を考えると、3ビットで8個のうちの1つを特定することができる。そのため、条件コードレジスタCCRのビット数だけ異なったマッチング条件のパターンの集合を定義できることになる。これにより、あるBinバッファ340の状態に対して複数のBinマッチング命令を実行することができ、複雑な分岐処理であっても非常に少ない分岐命令で処理することができる。
第10ビット目のCINCBIN、第9ビット目のCINCEN、第8ビット目のCEXBIN、第7ビット目のCEXENは、直前に復号されたBinデータを実行条件コードECとして利用するためのオプションである。このオプションには、条件付き加算と、条件付き実行の2種類の機能がある。条件付き加算の機能は、条件付き加算有効フラグCINCENが「1」のときにのみ有効になる。条件付き加算機能が有効なとき、条件付き加算条件CINCBINが実行条件コードECと等しい場合にはオペランドcidxに1を加算した番号のコンテキスト変数を用いて復号し、実行条件コードECと異なる場合にはオペランドcidxのコンテキスト変数を用いて復号を行う。条件付き実行の機能は、条件付き実行有効フラグCEXENが「1」のときにのみ有効になる。条件付き実行機能が有効なとき、条件付き実行条件CEXBINが実行条件コードECと等しい場合にBinデータの復号処理を行うが、実行条件コードECと異なる場合にはBinデータの復号を行わず、また、各種レジスタの更新を行わずにNOP命令と同様な動作をする。また、CINCENとCEXENをともに「0」にすると、無条件に通常のcidxのコンテキスト変数を用いたBin復号処理を実行することになる。
CEXENおよびCEXBINはペアで使用され、CINCENおよびCINCBINもペアで使用される。CEXENを「1」かつCEXBINを「0」とするためには、ニーモニック(図11)のオプションを「CEX0」とする。CEXENを「1」かつCEXBINを「1」とするためには、ニーモニックのオプションを「CEX1」とする。CINCENを「1」かつCINCBINを「0」とするためには、ニーモニックのオプションを「CINC0」とする。CINCENを「1」かつCINCBINを「1」とするためには、ニーモニックのオプションを「CINC1」とする。
[Binデコーダ320の構成例]
図13および図14は、本発明の実施の形態におけるBinデコーダ320の一構成例を示す図である。
シンボルを1つ復号する際には、pStateIdxおよびvalMPS、すなわちコンテキスト変数CTXがコンテキスト変数レジスタ330から読み出される。また、内部状態変数codIRangeの7ビット目から6ビット目までの値がqCodIRangeIdxに設定される。そして、rangeTabLPS[pStateIdx][qCodIRangeIdx]の参照値がcodIRangeLPSに設定され、codIRangeからcodIRangeLPSを減じた値がcodIRangeMPSに設定される。
このとき、codIOffsetがcodIRangeMPS以上であれば、復号結果はLPSになり、codIOffsetからcodIRangeMPSを減じたものがcodIOffsetとして更新され、codIRangeLPSがcodIRangeとして更新されるとともに、コンテキスト変数が更新される。
一方、codIOffsetがcodIRangeMPS未満であれば、復号結果はMPSになり、codIRangeMPSがcodIRangeとして更新されるとともに、コンテキスト変数が更新される。
その後、内部状態変数codIRangeおよびcodIOffsetは、再正規化の処理対象となる。
復号結果がLPSの場合、valMPSの反転値が復号データとして出力される。また、pStateIdxの次の状態は、遷移テーブルのtransIdxLPS[pStateIdx]から求められる。このとき、transIdxLPS[pStateIdx]が「0」であった場合、valMPSは反転される。そして、このように求められたpStateIdxおよびvalMPSにより、コンテキスト変数が更新される。
復号結果がMPSの場合、valMPSの値が復号データとして出力される。また、pStateIdxの次の状態は、遷移テーブルのtransIdxMPS[pStateIdx]から求められ、これによりコンテキスト変数が更新される。
再正規化処理部329においては、codIRangeが0x0100(=256)より小さい場合には、codIRangeが0x0100以上になるまで、codIRangeおよびcodIOffsetが1ビットずつ左シフトされるとともに、codIOffsetのLSBにはストリーム(符号化データ)から1ビット分が入力される。
復号されたBinデータは、Binバッファ340を1ビット左シフトして空いたLSBに格納される。このとき、Binカウンタ350が1加算される。
コプロセッサ命令デコーダ310によってデコードされた信号は、必要に応じてパイプラインレジスタにラッチされる。この例では、「cbc_dec_term_cc」命令をデコードした旨のフラグcbc_dec_term_cc_flagが示されている。また、オプションとして、CLR、CEXEN、CEXBIN、CINCEN、CINCBIN、cidxが示されている。
直前に復号されたBinデータは実行条件コード(EC)保持部323にも保持される。「cbc_dec_bin」命令および「cbc_dec_bin_cc」命令の場合、実行判定部321は、CEXENが「0」であれば実行する旨判定してBin有効信号を有効にし、CEXENが「1」であれば条件付き実行機能を有効にする。条件付き実行機能が有効であれば、CEXBINが実行条件コード保持部323に保持される実行条件コードECと一致していれば実行する旨判定してBin有効信号を有効にし、不一致であれば実行しない旨判定してBin有効信号を有効にする。なお、実行条件コード保持部323は、特許請求の範囲に記載の実行条件コード保持部の一例である。
また、「cbc_dec_bin」命令および「cbc_dec_bin_cc」命令の場合、加算判定部322は、CINCENが「0」であれば加算しない旨判定し、CINCENが「1」であれば条件付き加算機能を有効にする。すなわち、条件付き加算機能が有効であれば、CINCBINが実行条件コード保持部323に保持される実行条件コードECと一致していれば加算する旨判定し、不一致であれば加算しない旨判定する。加算しない旨判定された場合には、選択器325においてオペランドのコンテキスト番号cidxがそのままコンテキスト番号として選択され、選択器326においてコンテキスト変数CTX(cidx)が選択される。加算する旨判定された場合には、加算器324によってオペランドのコンテキスト番号cidxに1が加算された値が選択器325においてコンテキスト番号として選択され、選択器326においてコンテキスト変数CTX(cidx+1)が選択される。ここでは、コンテキスト変数レジスタ330に格納されるコンテキスト変数の数を16個(cidx=0〜15)と想定しているため、cidxが「15」の場合には、cidx+1の値は「0」になるものとする。
「cbc_dec_term_cc」命令の場合、選択器327によって値「63」がpStateIdxとして選択される。また、「cbc_dec_term_cc」命令の場合は、Bin有効信号が有効を示していたとしてもコンテキスト変数を更新しないように、論理積回路328によってコンテキスト変数更新許可信号がマスクされる。
復号の結果として得られたBin有効信号およびシフト量は、DMAコントローラ140に供給される。このとき、Bin有効信号が有効を示していて、シフト量が「1」以上であれば、符号化データが消費されたものとして、DMAコントローラ140は符号化データの出力を更新する。
復号の結果として得られたBin有効信号およびパイプラインレジスタにラッチされたCLRは、Binカウンタ350に供給される。Bin有効信号が有効を示している場合にはBinカウンタ350が1加算される。このとき、CLRが有効、すなわちクリアする旨を示している場合には、Binカウンタ350は「1」に設定される。すなわち、このとき、Binデータは1ビット目としてカウントされる。
<3.適用例>
[マクロブロックタイプ(Iスライス)の適用例]
図15は、Iスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。ノード内の数字はコンテキストインデックスを表す。上から状態遷移し、各ノードにおいて遷移した先の番号のコンテキストインデックスを使用して1つのBinデータを復号する。その後、枝で接続された別のノードへと遷移して、Binの復号を繰り返す。「0」または「1」のラベルが付与された枝は復号結果のBinデータの値を表し、Binデータの値と等しいラベルの枝に接続されたノードへ遷移(分岐)する。枝のラベルのないものは、Binデータの値にかかわらず必ず遷移する(分岐しない)。枝の先が「end」であれば1つのシンタックス要素の復号が完了したことになる。このIスライスのマクロブロックタイプの復号においては、「3」、「4」、「5」の何れかのコンテキストインデックスを使用してBin復号が実行され、その復号結果によってその後の遷移が決定される。
図16は、本発明の実施の形態の命令セットによるIスライスのマクロブロックタイプのシンタックス要素を復号するプログラム例である。
第1行目において、コンテキスト変数レジスタ330にコンテキスト変数がメモリ110からロードされる。第2行目において、「3」、「4」、「5」の何れかのコンテキストインデックスを使用してBinデータが復号される。このとき、オペランドCLRが指定されているため、Binバッファ340およびBinカウンタ350がクリアされる。コンテキストインデックスはオペランドの汎用レジスタgpr1により指定される。復号されたBinデータが「0」であれば、第3行目の条件分岐命令によって第11行目に分岐する。復号されたBinデータが「1」であれば、次の第4行目に進む。
第4行目において、コンテキストインデックス「276」を使用してBinデータが復号される。この結果は、オペランドcc1により指定された条件コードレジスタCCRのビットに保持される。
第5行目において、コンテキストインデックス「6」(cidx=3、rs=0)を使用してBinデータが復号される。オペランドzeroは、オペランドレジスタrsとしてゼロ値を有するゼロレジスタを指定していることを意味する。オペランドCEX0は、直前の復号結果が「0」の場合にのみ、この復号を実行する旨を意味する。
第6行目では、オペランドcc1により指定された条件コードレジスタCCRのビットの値、すなわち第4行目の復号命令において復号されたBinデータが「1」であれば、第11行目に分岐し、「0」であれば、次の第7行目に進む。
第7行目において、コンテキストインデックス「7」(cidx=4、rs=0)を使用してBinデータが復号される。第8行目において、コンテキストインデックス「8」(cidx=5、rs=0)を使用してBinデータが復号される。オペランドCEX1は、直前の復号結果が「1」の場合にのみ、この復号を実行する旨を意味する。第9行目において、コンテキストインデックス「9」(cidx=6、rs=0)を使用してBinデータが復号される。第10行目において、コンテキストインデックス「10」(cidx=7、rs=0)を使用してBinデータが復号される。
第11行目において、コンテキスト変数レジスタ330に保持されているコンテキスト変数がメモリ110にストアされる。第12行目において、これまで復号されたBinデータの多値化処理が行われる。最後に、第13行目において戻り先アドレスにジャンプする。
図17は、図16のプログラム例によりIスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。
最初の「3」、「4」、「5」の何れかのコンテキストインデックスを使用してBinデータを復号するために、汎用レジスタにコンテキストインデックスを設定することにより、1つの命令(第2行目のBin復号命令)で処理を行っている。
また、コンテキストインデックス「6」を使用してBinデータを復号する際、条件付き実行機能を利用することにより、第6行目の分岐命令よりも先に第5行目のBin復号命令を実行することが可能となり、分岐条件生成のレイテンシを隠蔽している。
また、コンテキストインデックス「8」を使用してBinデータを復号する際、第8行目のBin復号命令において条件付き実行機能を利用することにより、分岐命令を削除し、パイプラインストールを回避している。
[マクロブロックタイプ(Pスライス)の適用例]
図18および図19は、Pスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。このPスライスのマクロブロックタイプの復号においては、最初にコンテキストインデックス「14」を使用してBin復号が実行され、その結果が「1」であれば図19のマクロブロック内の復号処理が行われる。一方、復号結果が「0」であれば次に遷移し、コンテキストインデックス「15」を使用してBin復号が実行される。そして、その結果に応じて、復号結果が「1」であればコンテキストインデックス「17」を、「0」であればコンテキストインデックス「16」をそれぞれ使用してBin復号が実行される。
図20は、本発明の実施の形態の命令セットによるPスライスのマクロブロックタイプのシンタックス要素を復号するプログラム例である。
第1行目において、コンテキスト変数レジスタ330にコンテキスト変数がメモリ110からロードされる。第2行目において、コンテキストインデックス「14」(cidx=0、rs=0)を使用してBinデータが復号される。オペランドzeroは、オペランドレジスタrsとしてゼロ値を有するゼロレジスタを指定していることを意味する。この結果は、オペランドcc0により指定された条件コードレジスタCCRのビットに保持される。また、オペランドCLRが指定されているため、Binバッファ340およびBinカウンタ350がクリアされる。
第3行目において、コンテキストインデックス「15」(cidx=1、rs=0)を使用してBinデータが復号される。オペランドCEX0は、直前の復号結果が「0」の場合にのみ、この復号を実行する旨を意味する。
第4行目において、コンテキストインデックス「16」または「17」(cidx=2、rs=0、CINC1)を使用してBinデータが復号される。ここでは、オペランドCINC1が指定されているため、直前のBin復号命令の結果に応じて、復号結果が「0」であればコンテキストインデックス「16」を、「1」であればコンテキストインデックス「17」をそれぞれ使用してBinデータが復号される。この結果は、オペランドcc1により指定された条件コードレジスタCCRのビットに保持される。
第5行目の条件分岐命令では、オペランドcc0により指定された条件コードレジスタCCRのビットに保持された値、すなわち第2行目のBin復号命令の復号結果が「0」であれば第14行目に分岐する。第6行目の条件分岐命令では、オペランドcc1により指定された条件コードレジスタCCRのビットに保持された値、すなわち第4行目のBin復号命令の復号結果が「0」であれば第14行目に分岐する。
第7行目において、コンテキストインデックス「276」を使用してBinデータが復号される。この結果は、オペランドcc2により指定された条件コードレジスタCCRのビットに保持される。
第8行目において、コンテキストインデックス「18」(cidx=4、rs=0)を使用してBinデータが復号される。オペランドCEX0は、直前の復号結果が「0」の場合にのみ、この復号を実行する旨を意味する。
第9行目の条件分岐命令では、オペランドcc2により指定された条件コードレジスタCCRのビットに保持された値、すなわち第7行目のBin復号命令の復号結果が「1」であれば第14行目に分岐する。
第10行目において、コンテキストインデックス「19」(cidx=5、rs=0)を使用してBinデータが復号される。第11行目において、コンテキストインデックス「19」(cidx=5、rs=0)を使用してBinデータが復号される。オペランドCEX1は、直前の復号結果が「1」の場合にのみ、この復号を実行する旨を意味する。
第12行目において、コンテキストインデックス「20」(cidx=6、rs=0)を使用してBinデータが復号される。第13行目において、コンテキストインデックス「20」(cidx=6、rs=0)を使用してBinデータが復号される。
第14行目において、コンテキスト変数レジスタ330に保持されているコンテキスト変数がメモリ110にストアされる。第15行目において、これまで復号されたBinデータの多値化処理が行われる。最後に、第16行目において戻り先アドレスにジャンプする。
図21および図22は、図20のプログラム例によりPスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。
ここでは、コンテキストインデックス「15」を使用してBinデータを復号する際、条件付き実行機能を利用することにより、第5行目の分岐命令よりも先に第3行目のBin復号命令を実行することが可能となり、分岐条件生成のレイテンシを隠蔽している。
また、「16」または「17」のコンテキストインデックスを使用してBinデータを復号する際、条件付き加算機能を利用することにより、分岐命令を削除し、パイプラインストールを回避している。ここでは、マクロブロック内のコンテキストインデックス「17」の復号命令を共通化することにより、命令数を削減している。
また、コンテキストインデックス「18」を使用してBinデータを復号する際、条件付き実行機能を利用することにより、第9行目の分岐命令よりも先に第8行目のBin復号命令を実行することが可能となり、分岐条件生成のレイテンシを隠蔽している。
また、コンテキストインデックス「19」を使用してBinデータを復号する際、条件付き実行機能を利用することにより、分岐命令を削除し、パイプラインストールを回避している。
[マクロブロックタイプ(Bスライス)の適用例]
図23および図24は、Bスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。このBスライスのマクロブロックタイプの復号においては、最初に「27」、「28」、「29」の何れかのコンテキストインデックスを使用してBin復号が実行され、その復号結果によってその後の遷移が決定される。
図25は、本発明の実施の形態の命令セットによるBスライスのマクロブロックタイプのシンタックス要素を復号するプログラム例である。
第1行目において、コンテキスト変数レジスタ330にコンテキスト変数がメモリ110からロードされる。第2行目において、「27」、「28」、「29」の何れかのコンテキストインデックスを使用してBinデータが復号される。このとき、オペランドCLRが指定されているため、Binバッファ340およびBinカウンタ350がクリアされる。コンテキストインデックスはオペランドの汎用レジスタgpr1により指定される。復号されたBinデータが「0」であれば、第3行目の条件分岐命令によって第23行目に分岐する。復号されたBinデータが「1」であれば、次の第4行目に進む。
第4行目において、コンテキストインデックス「30」(cidx=3、rs=0)を使用してBinデータが復号される。この結果は、オペランドcc1により指定された条件コードレジスタCCRのビットに保持される。
第5行目において、コンテキストインデックス「31」または「32」(cidx=4、rs=0、CINC0)を使用してBinデータが復号される。ここでは、オペランドCINC0が指定されているため、直前のBin復号命令の結果に応じて、復号結果が「1」であればコンテキストインデックス「31」を、「0」であればコンテキストインデックス「32」をそれぞれ使用してBinデータが復号される。
第6行目の条件分岐命令では、オペランドcc1により指定された条件コードレジスタCCRのビットに保持された値、すなわち第4行目のBin復号命令の復号結果が「0」であれば第23行目に分岐する。
第7乃至9行目において、コンテキストインデックス「32」(cidx=5、rs=0)を使用してBinデータが3回復号される。
第10行目のマッチング命令では、4つ前、3つ前、2つ前の復号結果が全て「1」の場合、または、4つ前の復号結果が「0」の場合に、オペランドcc2により指定された条件コードレジスタCCRのビットに「1」が保持される。それ以外の場合には、オペランドcc2により指定された条件コードレジスタCCRのビットに「0」が保持される。
第11行目のマッチング命令では、4つ前、3つ前、1つ前の復号結果が全て「1」で、2つ前の復号結果が「0」の場合には、オペランドcc3により指定された条件コードレジスタCCRのビットに「1」が保持される。それ以外の場合には、オペランドcc3により指定された条件コードレジスタCCRのビットに「0」が保持される。
第12行目の条件分岐命令では、オペランドcc2により指定された条件コードレジスタCCRのビットに保持された値、すなわち第10行目のマッチング命令の結果が「1」であれば第23行目に分岐する。
第13行目において、コンテキストインデックス「32」(cidx=5、rs=0)を使用してBinデータが復号される。この結果は、オペランドcc4により指定された条件コードレジスタCCRのビットに保持される。
第14行目の条件分岐命令では、オペランドcc3により指定された条件コードレジスタCCRのビットに保持された値、すなわち第11行目のマッチング命令の結果が「0」であれば第23行目に分岐する。第15行目の条件分岐命令では、オペランドcc4により指定された条件コードレジスタCCRのビットに保持された値、すなわち第13行目のBin復号命令の復号結果が「0」であれば第23行目に分岐する。
第16行目において、コンテキストインデックス「276」を使用してBinデータが復号される。この結果は、オペランドcc5により指定された条件コードレジスタCCRのビットに保持される。
第17行目において、コンテキストインデックス「33」(cidx=6、rs=0)を使用してBinデータが復号される。オペランドCEX0は、直前の復号結果が「0」の場合にのみ、この復号を実行する旨を意味する。
第18行目の条件分岐命令では、オペランドcc5により指定された条件コードレジスタCCRのビットに保持された値、すなわち第16行目のBin復号命令の復号結果が「0」であれば第23行目に分岐する。
第19行目において、コンテキストインデックス「34」(cidx=7、rs=0)を使用してBinデータが復号される。
第20行目において、コンテキストインデックス「34」(cidx=7、rs=0)を使用してBinデータが復号される。オペランドCEX1は、直前の復号結果が「1」の場合にのみ、この復号を実行する旨を意味する。
第21および22行目において、コンテキストインデックス「35」(cidx=8、rs=0)を使用してBinデータが2回復号される。
第23行目において、コンテキスト変数レジスタ330に保持されているコンテキスト変数がメモリ110にストアされる。第24行目において、これまで復号されたBinデータの多値化処理が行われる。最後に、第25行目において戻り先アドレスにジャンプする。
図26および図27は、図25のプログラム例によりBスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。
最初の「27」、「28」、「29」の何れかのコンテキストインデックスを使用してBinデータを復号するために、汎用レジスタにコンテキストインデックスを設定することにより、1つの命令(第2行目のBin復号命令)で処理を行っている。
また、「31」または「32」のコンテキストインデックスを使用してBinデータを復号する際、条件付き加算機能を利用することにより、分岐命令を削除し、パイプラインストールを回避している。
また、「31」または「32」のコンテキストインデックスを使用してBinデータを復号してからマクロブロック内のBinデータを復号するまでの処理(第5乃至12行目の命令に相当)において、マッチング処理を利用している。これにより、分岐命令を削除して、まとめて4つのBin復号の結果を比較することで、パイプラインストールを回避している。
また、コンテキストインデックス「33」を使用してBinデータを復号する際、条件付き実行機能を利用することにより、第18行目の分岐命令よりも先に第17行目のBin復号命令を実行することが可能となり、分岐条件生成のレイテンシを隠蔽している。
また、コンテキストインデックス「34」を使用してBinデータを復号する際、条件付き実行機能を利用することにより、分岐命令を削除し、パイプラインストールを回避している。
[サブマクロブロックタイプ(Pスライス)の適用例]
図28は、Pスライスのサブマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。このPスライスのサブマクロブロックタイプの復号においては、最初にコンテキストインデックス「21」を使用してBin復号が実行され、その結果が「1」であれば復号処理は終了する。一方、復号結果が「0」であれば次に遷移し、コンテキストインデックス「22」を使用してBin復号が実行される。そして、その結果に応じて、復号結果が「1」であればコンテキストインデックス「23」を使用してBin復号が実行され、復号結果が「0」であれば復号処理は終了する。
図29は、本発明の実施の形態の命令セットによるPスライスのサブマクロブロックタイプのシンタックス要素を復号するプログラム例である。
第1行目において、コンテキスト変数レジスタ330にコンテキスト変数がメモリ110からロードされる。第2行目において、コンテキストインデックス「21」(cidx=7、rs=0)を使用してBinデータが復号される。オペランドzeroは、オペランドレジスタrsとしてゼロ値を有するゼロレジスタを指定していることを意味する。この結果は、オペランドcc0により指定された条件コードレジスタCCRのビットに保持される。また、オペランドCLRが指定されているため、Binバッファ340およびBinカウンタ350がクリアされる。
第3行目において、コンテキストインデックス「22」(cidx=8、rs=0)を使用してBinデータが復号される。オペランドCEX0は、直前の復号結果が「0」の場合にのみ、この復号を実行する旨を意味する。
第4行目の条件分岐命令では、オペランドcc0により指定された条件コードレジスタCCRのビットに保持された値、すなわち第2行目のBin復号命令の復号結果が「1」であれば第6行目に分岐する。
第5行目において、コンテキストインデックス「23」(cidx=9、rs=0)を使用してBinデータが復号される。オペランドCEX1は、直前の復号結果が「1」の場合にのみ、この復号を実行する旨を意味する。
第6行目において、コンテキスト変数レジスタ330に保持されているコンテキスト変数がメモリ110にストアされる。第7行目において、これまで復号されたBinデータの多値化処理が行われる。最後に、第8行目において戻り先アドレスにジャンプする。
図30は、図29のプログラム例によりPスライスのサブマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。
ここでは、コンテキストインデックス「22」を使用してBinデータを復号する際、条件付き実行機能を利用することにより、第4行目の分岐命令よりも先に第3行目のBin復号命令を実行することが可能となり、分岐条件生成のレイテンシを隠蔽している。
また、コンテキストインデックス「23」を使用してBinデータを復号する際、条件付き実行機能を利用することにより、分岐命令を削除し、パイプラインストールを回避している。
[サブマクロブロックタイプ(Bスライス)の適用例]
図31は、Bスライスのサブマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。このBスライスのサブマクロブロックタイプの復号においては、最初にコンテキストインデックス「36」を使用してBin復号が実行され、その結果が「0」であれば復号処理は終了する。一方、復号結果が「1」であれば次に遷移し、コンテキストインデックス「37」を使用してBin復号が実行され、その復号結果によってその後の遷移が決定される。
図32は、本発明の実施の形態の命令セットによるBスライスのサブマクロブロックタイプのシンタックス要素を復号するプログラム例である。
第1行目において、コンテキスト変数レジスタ330にコンテキスト変数がメモリ110からロードされる。第2行目において、コンテキストインデックス「36」(cidx=9、rs=0)を使用してBinデータが復号される。オペランドzeroは、オペランドレジスタrsとしてゼロ値を有するゼロレジスタを指定していることを意味する。この結果は、オペランドcc0により指定された条件コードレジスタCCRのビットに保持される。また、オペランドCLRが指定されているため、Binバッファ340およびBinカウンタ350がクリアされる。
第3行目において、コンテキストインデックス「37」(cidx=10、rs=0)を使用してBinデータが復号される。オペランドCEX1は、直前の復号結果が「1」の場合にのみ、この復号を実行する旨を意味する。この結果は、オペランドcc0により指定された条件コードレジスタCCRのビットに保持される。
第4行目において、コンテキストインデックス「38」または「39」(cidx=11、rs=0、CEX1、CINC0)を使用してBinデータが復号される。ここでは、オペランドCINC0が指定されているため、直前のBin復号命令の結果に応じて、復号結果が「1」であればコンテキストインデックス「38」を、「0」であればコンテキストインデックス「39」をそれぞれ使用してBinデータが復号される。この結果は、オペランドcc0により指定された条件コードレジスタCCRのビットに保持される。ただし、オペランドCEX1が指定されているため、直前の復号結果が「1」の場合にのみ、この復号が実行される。
第5行目の条件分岐命令では、オペランドcc0により指定された条件コードレジスタCCRのビットに保持された値が「0」であれば第11行目に分岐する。第2行目のBin復号命令の結果が「0」の場合、第3行目および第4行目のBin復号命令は実行されないため、この第5行目の条件分岐命令において「0」判定される対象は第2行目のBin復号命令の結果となる。
第6行目および第7行目において、コンテキストインデックス「39」(cidx=12、rs=0)を使用して2回Binデータが復号される。
第8行目のマッチング命令では、3つ前および2つ前の復号結果がそれぞれ「1」「0」の場合、オペランドcc1により指定された条件コードレジスタCCRのビットに「1」が保持される。それ以外の場合には、オペランドcc1により指定された条件コードレジスタCCRのビットに「0」が保持される。
第9行目の条件分岐命令では、オペランドcc1により指定された条件コードレジスタCCRのビットに保持された値、すなわち第8行目のマッチング命令の結果が「0」であれば第11行目に分岐する。
第10行目において、コンテキストインデックス「39」(cidx=12、rs=0)を使用してBinデータが復号される。
第11行目において、コンテキスト変数レジスタ330に保持されているコンテキスト変数がメモリ110にストアされる。第12行目において、これまで復号されたBinデータの多値化処理が行われる。最後に、第13行目において戻り先アドレスにジャンプする。
図33は、図32のプログラム例によりBスライスのサブマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。
ここでは、「37」、「38」または「39」のコンテキストインデックスを使用してBinデータを復号する際、条件付き実行機能を利用することにより、第5行目の分岐命令よりも先に第3行目および第4行目のBin復号命令を実行することが可能となり、分岐条件生成のレイテンシを隠蔽している。また、「38」または「39」のコンテキストインデックスを使用してBinデータを復号する際、条件付き加算機能を利用することにより、分岐命令を削除し、パイプラインストールを回避している。
また、「39」のコンテキストインデックスを使用して2回Binデータを復号する際、マッチング処理を利用することにより、分岐命令を削除して、まとめて2つのBin復号の結果を比較することで、パイプラインストールを回避している。
このように、本発明の実施の形態によれば、Bin復号命令において条件付き実行機能および条件付き加算機能を設けることにより、命令の並び替えの自由度を上げることができ、分岐条件生成のレイテンシを隠蔽することができる。また、Binマッチング命令を設けることにより、分岐命令を大幅に削減することができ、分岐条件生成から分岐命令実行までに起き得る待ち時間のストールサイクル数を低減することができる。すなわち、これらにより、本発明の実施の形態によれば、パイプラインの実行効率を向上することができる。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、上述のように特許請求の範囲における発明特定事項とそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
本発明の実施の形態における算術復号装置の一例としてのCABAC復号器20の機能構成例を示す図である。 本発明の実施の形態におけるCABAC復号の処理手順例を示す図である。 本発明の実施の形態におけるマクロブロックタイプコンテキストグループのコンテキスト変数の割当例を示す図である。 Iスライスのmb_type(Mb_Type_I)とBinデータとの対応関係を表す符号表である。 Pスライスのmb_type(Mb_Type_P)とBinデータとの対応関係を表す符号表である。 Bスライスのmb_type(Mb_Type_B)とBinデータとの対応関係を表す符号表である。 Pスライスのsub_mb_type(SubMb_Type_P)とBinデータとの対応関係を表す符号表である。 Bスライスのsub_mb_type(SubMb_Type_B)とBinデータとの対応関係を表す符号表である。 本発明の実施の形態におけるCABAC復号器のハードウェア構成例を示す図である。 本発明の実施の形態における復号コプロセッサ300の一構成例を示す図である。 本発明の実施の形態におけるCABAC復号のための命令セットの一例を示す図である。 本発明の実施の形態におけるCABAC復号のためのコプロセッサ命令の命令フォーマットの一例を示す図である。 本発明の実施の形態におけるBinデコーダ320の一構成例を示す図である。 本発明の実施の形態におけるBinデコーダ320の再正規化処理部329一構成例を示す図である。 Iスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。 本発明の実施の形態の命令セットによるIスライスのマクロブロックタイプのシンタックス要素を復号するプログラム例である。 図16のプログラム例によりIスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。 Pスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。 Pスライスのマクロブロックタイプのマクロブロック内のシンタックス要素を復号する際の状態遷移図である。 本発明の実施の形態の命令セットによるPスライスのマクロブロックタイプのシンタックス要素を復号するプログラム例である。 図20のプログラム例によりPスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。 図20のプログラム例によりPスライスのマクロブロックタイプのマクロブロック内のシンタックス要素を復号する際の状態遷移図である。 Bスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。 Bスライスのマクロブロックタイプのマクロブロック内のシンタックス要素を復号する際の状態遷移図である。 本発明の実施の形態の命令セットによるBスライスのマクロブロックタイプのシンタックス要素を復号するプログラム例である。 図25のプログラム例によりBスライスのマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。 図25のプログラム例によりBスライスのマクロブロックタイプのマクロブロック内のシンタックス要素を復号する際の状態遷移図である。 Pスライスのサブマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。 本発明の実施の形態の命令セットによるPスライスのサブマクロブロックタイプのシンタックス要素を復号するプログラム例である。 図29のプログラム例によりPスライスのサブマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。 Bスライスのサブマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。 本発明の実施の形態の命令セットによるBスライスのサブマクロブロックタイプのシンタックス要素を復号するプログラム例である。 図32のプログラム例によりBスライスのサブマクロブロックタイプのシンタックス要素を復号する際の状態遷移図である。
符号の説明
20 CABAC復号器
21 二値算術符号復号処理部
22 コンテキストインデックス計算処理部
23 コンテキスト変数テーブル保持部
24 多値化処理部
109 バス
110 メモリ
120 命令キャッシュ
130 データキャッシュ
140 DRAMコントローラ
210 命令デコーダ
220 命令制御部
230 演算パイプライン
240 プロセッサレジスタ群
250 ロードストアユニット
300 復号コプロセッサ
301 コプロセッサ命令キュー
309 ライトバックバッファ
310 コプロセッサ命令デコーダ
320 Binデコーダ
321 実行判定部
322 加算判定部
323 実行条件コード保持部
324 加算器
325、326、327 選択器
328 論理積回路
329 再正規化処理部(RenormD)
330 コンテキスト変数レジスタ
340 Binバッファ(BINBUF)
350 Binカウンタ(BINCNT)
360 ライトバックデータ生成器

Claims (3)

  1. 算術符号化されたデータを二値信号に算術復号する算術符号化データ復号命令をデコードする命令デコーダと、
    直前に算術復号された二値信号を実行条件コードとして保持する実行条件コード保持部と、
    前記算術符号化データ復号命令によって指定されたコンテキスト番号をそのままコンテキスト番号とするか、または、前記指定されたコンテキスト番号に1を加算した番号をコンテキスト番号とするかを、前記実行条件コードに応じて決定して当該決定されたコンテキスト番号を使用して前記算術復号を実行する算術復号実行部と
    を具備する算術復号装置。
  2. 前記算術復号実行部は、前記実行条件コード保持部に保持されている前記実行条件コードに応じて前記算術復号を新たに実行するか否かを切り替える
    請求項1記載の算術復号装置。
  3. 前記算術符号化データ復号命令において、前記コンテキスト番号は入力オペランドに示されるレジスタの値と即値との加算値として指定される
    請求項1記載の算術復号装置。
JP2008303524A 2008-11-28 2008-11-28 算術復号装置 Expired - Fee Related JP4962476B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008303524A JP4962476B2 (ja) 2008-11-28 2008-11-28 算術復号装置
US12/625,630 US7956776B2 (en) 2008-11-28 2009-11-25 Arithmetic decoding apparatus
CN2009102258676A CN101753148B (zh) 2008-11-28 2009-11-30 算术解码设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008303524A JP4962476B2 (ja) 2008-11-28 2008-11-28 算術復号装置

Publications (2)

Publication Number Publication Date
JP2010130407A JP2010130407A (ja) 2010-06-10
JP4962476B2 true JP4962476B2 (ja) 2012-06-27

Family

ID=42222322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008303524A Expired - Fee Related JP4962476B2 (ja) 2008-11-28 2008-11-28 算術復号装置

Country Status (3)

Country Link
US (1) US7956776B2 (ja)
JP (1) JP4962476B2 (ja)
CN (1) CN101753148B (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110310966A1 (en) * 2010-06-18 2011-12-22 Texas Instruments Incorporated Syntax element decoding
GB2484654B (en) * 2010-10-12 2013-10-09 Advanced Risc Mach Ltd Conditional selection of data elements
US8990435B2 (en) 2011-01-17 2015-03-24 Mediatek Inc. Method and apparatus for accessing data of multi-tile encoded picture stored in buffering apparatus
US9497466B2 (en) 2011-01-17 2016-11-15 Mediatek Inc. Buffering apparatus for buffering multi-partition video/image bitstream and related method thereof
US9060173B2 (en) * 2011-06-30 2015-06-16 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US9338465B2 (en) 2011-06-30 2016-05-10 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US11647197B2 (en) 2011-06-30 2023-05-09 Velos Media, Llc Context initialization based on slice header flag and slice type
US9538177B2 (en) * 2011-10-31 2017-01-03 Mediatek Inc. Apparatus and method for buffering context arrays referenced for performing entropy decoding upon multi-tile encoded picture and related entropy decoder
GB2496193A (en) * 2011-11-07 2013-05-08 Sony Corp Context adaptive data encoding and decoding
HUE061628T2 (hu) * 2011-11-07 2023-07-28 Tagivan Ii Llc Képdekódoló eljárás és képdekódoló eszköz
US20130188736A1 (en) 2012-01-19 2013-07-25 Sharp Laboratories Of America, Inc. High throughput significance map processing for cabac in hevc
US9860527B2 (en) 2012-01-19 2018-01-02 Huawei Technologies Co., Ltd. High throughput residual coding for a transform skipped block for CABAC in HEVC
US9654139B2 (en) 2012-01-19 2017-05-16 Huawei Technologies Co., Ltd. High throughput binarization (HTB) method for CABAC in HEVC
US9743116B2 (en) 2012-01-19 2017-08-22 Huawei Technologies Co., Ltd. High throughput coding for CABAC in HEVC
US10616581B2 (en) 2012-01-19 2020-04-07 Huawei Technologies Co., Ltd. Modified coding for a transform skipped block for CABAC in HEVC
CA2873694A1 (en) * 2012-06-01 2013-12-05 Sharp Kabushiki Kaisha Arithmetic decoding device, image decoding device, arithmetic encoding device, and image encoding device
CN103227924B (zh) * 2013-05-07 2016-08-03 北京大学 一种算术编码器及编码方法
US9032273B2 (en) * 2013-09-05 2015-05-12 Infineon Technologies Ag Method, apparatus and device for data processing
CN105207677B (zh) * 2015-09-01 2018-02-06 上海斐讯数据通信技术有限公司 一种图形化编解码系统及方法
US9788314B2 (en) * 2015-12-03 2017-10-10 Nxp Usa, Inc. Base transceiver station for reducing congestion in communcation network
US9792044B2 (en) * 2016-02-12 2017-10-17 Oracle International Corporation Decompression history buffer read/write pipelines
KR20180031944A (ko) 2016-09-21 2018-03-29 삼성전자주식회사 비디오 디코더 및 이를 포함하는 전자 시스템
US10264264B2 (en) * 2016-09-24 2019-04-16 Apple Inc. Multi-bin decoding systems and methods
JP6707045B2 (ja) 2017-03-15 2020-06-10 Nttエレクトロニクス株式会社 二値算術復号器および二値算術復号装置
CN109889834B (zh) * 2019-01-11 2021-07-13 珠海亿智电子科技有限公司 一种cabac算术解码方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2333412B (en) * 1998-01-20 2002-05-15 Daewoo Electronics Co Ltd Context-based arithmetic encoding/decoding apparatus
US7274671B2 (en) * 2001-02-09 2007-09-25 Boly Media Communications, Inc. Bitwise adaptive encoding using prefix prediction
JP2002318686A (ja) * 2001-04-19 2002-10-31 Sony Corp プロセッサ
JP2005130099A (ja) * 2003-10-22 2005-05-19 Matsushita Electric Ind Co Ltd 算術復号装置、算術符号化装置、算術符号化・復号装置、携帯端末装置、動画像撮影装置、及び、動画像記録・再生装置
EP1836858A1 (en) * 2005-01-14 2007-09-26 Sungkyunkwan University Methods of and apparatuses for adaptive entropy encoding and adaptive entropy decoding for scalable video encoding
JP2007074648A (ja) 2005-09-09 2007-03-22 Matsushita Electric Ind Co Ltd Cabac復号化装置
US7245242B2 (en) * 2005-11-28 2007-07-17 Conexant Systems, Inc. Decoding systems and methods
JP4893657B2 (ja) * 2008-02-29 2012-03-07 ソニー株式会社 算術復号装置
JP4930435B2 (ja) * 2008-04-03 2012-05-16 ソニー株式会社 可変長符号復号装置、可変長符号復号方法およびプログラム
JP4962400B2 (ja) * 2008-04-30 2012-06-27 ソニー株式会社 算術復号装置

Also Published As

Publication number Publication date
US7956776B2 (en) 2011-06-07
CN101753148A (zh) 2010-06-23
CN101753148B (zh) 2013-02-27
JP2010130407A (ja) 2010-06-10
US20100134330A1 (en) 2010-06-03

Similar Documents

Publication Publication Date Title
JP4962476B2 (ja) 算術復号装置
US7917733B2 (en) Instruction code compression using instruction codes with reuse flags
CN1312938C (zh) 用于解码可变长度编码位流的方法和设备
KR100717055B1 (ko) Cabac 복호기에서 복수의 이진 값들을 파이프라인방식에 의하여 복호화하는 방법 및 이를 위한 복호화 장치
KR100717052B1 (ko) Cabac 복호기에서 이진 산술 복호화와 이진 매칭을병렬 처리하는 원소 구문의 복호화 방법 및 이를 위한복호화 장치
CN108292222B (zh) 用于数据解压缩的硬件装置和方法
WO2007129508A1 (ja) 動画像処理方法、動画像処理方法のプログラム、動画像処理方法のプログラムを記録した記録媒体及び動画像処理装置
KR100644713B1 (ko) 컨텍스트 기반 적응적 이진 산술 코딩 복호기에서 원소구문을 복호화하는 방법 및 이를 위한 복호화 장치
CN101072353A (zh) 译码系统以及图形处理单元
US20110310966A1 (en) Syntax element decoding
KR100486251B1 (ko) 가변 길이 코드 복호화 장치 및 방법
WO2008034094A2 (en) Entropy processor for decoding
JP6159240B2 (ja) 二値算術符号化装置、二値算術符号化方法及び二値算術符号化プログラム
US20020199083A1 (en) High code-density microcontroller architecture with changeable instruction formats
CN101414830A (zh) 平行处理至少两个二进制值的方法与相应算术编码系统
JP2007104194A (ja) 復号化システム
JP4930435B2 (ja) 可変長符号復号装置、可変長符号復号方法およびプログラム
JP4841496B2 (ja) 可変長符号復号化装置
JP2008199100A (ja) 可変長符号復号装置
KR20210011494A (ko) 동작 캐시 및 명령 캐시 인출과 디코딩 명령을 위한 낮은 레이턴시 동기화
JPH04245539A (ja) パイプラインにおける分岐命令制御方式
US7075462B2 (en) Speeding up variable length code decoding on general purpose processors
JP5105191B2 (ja) 画像処理装置
JP4537089B2 (ja) 可変長復号装置及び方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体
JP2001043082A (ja) 情報処理装置並びに命令コーディング方法及び命令デコーディング方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111024

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120228

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120312

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees