JP6695813B2 - 専用算術符号化命令 - Google Patents

専用算術符号化命令 Download PDF

Info

Publication number
JP6695813B2
JP6695813B2 JP2016568663A JP2016568663A JP6695813B2 JP 6695813 B2 JP6695813 B2 JP 6695813B2 JP 2016568663 A JP2016568663 A JP 2016568663A JP 2016568663 A JP2016568663 A JP 2016568663A JP 6695813 B2 JP6695813 B2 JP 6695813B2
Authority
JP
Japan
Prior art keywords
cabac
offset
range
bit
input
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.)
Active
Application number
JP2016568663A
Other languages
English (en)
Other versions
JP2017525005A5 (ja
JP2017525005A (ja
Inventor
ボ・ジョウ
マオ・ゼン
エーリヒ・ジェームズ・プロンドケ
ルシアン・コドレスク
シュ・シャオ
ジュンチェン・ドゥ
スハイル・ジャリル
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2017525005A publication Critical patent/JP2017525005A/ja
Publication of JP2017525005A5 publication Critical patent/JP2017525005A5/ja
Application granted granted Critical
Publication of JP6695813B2 publication Critical patent/JP6695813B2/ja
Active 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
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

関連出願の相互参照
本出願は、参照によりその内容全体が本明細書に明確に組み込まれる、同一出願人が所有する2014年5月27日に出願の米国非仮特許出願第14/288,018号の優先権を主張する。
本開示は、一般には、マイクロプロセッサ命令に関する。
技術が進歩した結果として、コンピューティングデバイスがより小型に、そしてより強力になった。たとえば、小型で軽量であり、ユーザによって容易に携帯されるポータブルワイヤレス電話、携帯情報端末(PDA)、およびページングデバイスなどのワイヤレスコンピューティングデバイスを含む、種々のポータブルパーソナルコンピューティングデバイスが現存している。より具体的には、セルラー電話、インターネットプロトコル(IP)電話などのポータブルワイヤレス電話は、ワイヤレスネットワークを介して音声およびデータパケットを通信することができる。さらに、多くのそのようなワイヤレス電話は、その内部に組み込まれる他のタイプのデバイスを含む。たとえば、ワイヤレス電話はまた、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤを含むこともできる。また、そのようなワイヤレス電話は、インターネットにアクセスするために使用することができるウェブブラウザアプリケーションなどのソフトウェアアプリケーションを含む実行可能命令を処理することができる。したがって、これらのワイヤレス電話は、著しいコンピューティング能力を含むことができる。
効率的なデータ転送を達成するために、ビデオファイルを表すビットストリームが、ワイヤレス電話のようなコンピューティングデバイスに送信する前に符号化されてもよい。ビデオファイルをシリアル符号化するために、コンテキストベース適応バイナリ算術符号化(CABAC:context-based adaptive binary arithmetic coding)が使用されてもよい。CABAC符号化中にビン(たとえば、ビット)を符号化するために、汎用命令が使用されてもよい。しかしながら、汎用命令は、相対的に長い処理時間に起因して非効率的な場合がある。
ビデオストリームを符号化するための装置および方法が開示される。コンテキスト適応バイナリ算術符号化(CABAC)符号化方式を用いてビット(たとえば、「ビン(bin)」)を符号化することは、「現在の」コード区間の「レンジ(range)」および「オフセット(offset)」を再帰的に更新することを含む。レンジは、第1のサブ区間(たとえば、最低確率シンボル(LPS:least probable symbol))と第2の区間(たとえば、最尤シンボル(MPS:most probable symbol))とを含む場合がある。ビンがMPS(たとえば、論理"1")として符号化される場合には、レンジはMPSのレンジ(たとえば、rMPS)に等しい場合があり、オフセットは「ロー(low)」で表される場合があり、一定のままである場合がある(たとえば、lownew=low)。代替的には、ビンがLPS(たとえば、論理"0")として符号化される場合には、レンジはLPSのレンジ(たとえば、rLPS)に等しい場合があり、オフセットは、オフセットとMPSのレンジとの和に等しい場合がある(lownew=low+rMPS)。オフセットは、符号化されたビットストリームである。
説明される技法によれば、CABACを用いてビデオストリームを符号化するための専用CABAC命令のような専用算術符号化命令が、プロセッサによって実行可能である。プロセッサは、汎用命令を実行し、かつ専用算術符号化命令を実行するように構成されてもよい。たとえば、専用算術符号化命令は、入力として、第1のレンジ、第1のオフセットおよび第1の状態を受け付ける。専用算術符号化命令の1つまたは複数の出力に基づいて、プロセッサは、第2の状態を記憶し、第2のレンジを生成するために第1のレンジを再アラインし、第2のオフセットを生成するために第1のオフセットを再アラインする。
たとえば、専用算術符号化命令の実行中に、第1のレンジ(たとえば、9ビット)が第1のレジスタ(たとえば、32ビットレジスタ)に記憶される場合があり、第1のオフセット(たとえば、10ビット)が第2のレジスタ(たとえば、32ビットレジスタ)に記憶される場合がある。第1のレジスタは、先行する複数の0、第1のレンジ(たとえば、9ビット)および後続する複数の0を含んでもよい。ビット位置(たとえば、"bitpos")は、第1のレジスタ内の先行する0の数を示してもよく、カウント先行ゼロ(CLZ:count leading zero)命令を用いて取得してもよい。したがって、特定の例では、後続する0の数は、(32-9bitpos)=(23bitpos)である。ビットは第1のレジスタから抽出され、ルックアップテーブル内のLPSのレンジの値を見つけるためにインデックスとして使用されてもよい。LPSのレンジの値を後続する0の数だけ左にシフトし、LPSのレンジの値を第1のレジスタ内に第1のレンジ(たとえば、9ビット)と位置合わせしてもよい。各符号化反復後に、次の反復において使用される第1のレンジ(たとえば、9ビット)の最上位ビット(MSB)が1に等しくなるように、第1のレジスタ内のビンが再正規化されてもよい。
再正規化中に、第2のレジスタの特定のバイトをビットストリームに与える(出力する)ことができる。たとえば、そのレンジのMSBが1未満である(オフセットの増加に対応する)とき、第2のレジスタの第1のバイトおよび第2のバイトをビットストリームに与えることができ、第2のレジスタの第3のバイトは第1のバイト位置まで左にシフトされてもよく、第2のレジスタの第4のバイトは、第2のレジスタ(たとえば、オフセット)および第1のレジスタ(たとえば、レンジ)を再正規化するためにクリアされてもよい。
ビンを符号化するために専用算術符号化命令(たとえば、単一の命令)を使用することは、複数の汎用命令を使用することに比べて符号化速度を高めることができる。たとえば、専用算術符号化命令の使用は、符号化されたビデオストリームを生成する時間を、複数のプログラム実行サイクル(すなわち、>2サイクル)(汎用命令を使用する)から2プロセッサ実行サイクルまで短縮する。
1つの特定の態様では、本装置は、メモリと、メモリに結合されたプロセッサとを含む。プロセッサは、専用算術符号化命令を実行するように構成される。専用算術符号化命令は、第1のレンジ、第1のオフセットおよび第1の状態を含む複数の入力を受け付け、複数の入力に基づいて1つまたは複数の出力を生成する。専用算術符号化命令の1つまたは複数の出力に基づいて、プロセッサは、第2の状態を記憶し、第2のレンジを生成するために第1のレンジを再アラインし、第2のオフセットを生成するために第1のオフセットを再アラインするように構成される。
別の特定の態様では、本方法は、プロセッサにおいて、専用算術符号化命令を実行することを含む。専用算術符号化命令は、第1のレンジ、第1のオフセットおよび第1の状態を含む複数の入力を受け付け、複数の入力に基づいて1つまたは複数の出力を生成する。また、本方法は、専用算術符号化命令の1つまたは複数の出力に基づいて、第2の状態を記憶することと、第2のレンジを生成するために第1のレンジを再アラインすることと、第2のオフセットを生成するために第1のオフセットを再アラインすることとを含む。
別の特定の態様では、非一時的コンピュータ可読媒体が、第1のレンジ、第1のオフセットおよび第1の状態を含む複数の入力を受け付け、複数の入力に基づいて1つまたは複数の出力を生成する専用コンテキスト適応バイナリ算術(CABAC)符号化命令を含む。専用CABAC符号化命令は、プロセッサによって実行される。専用CABAC符号化命令は、プロセッサに、第2の状態を記憶させ、第2のレンジを生成するために第1のレンジを再アラインさせ、第2のオフセットを生成するために第1のオフセットを再アラインさせる。
別の特定の態様では、本装置は、汎用命令および専用算術符号化命令を記憶するための手段を含む。また、本装置は、記憶するための手段から取り出された汎用命令を実行するための手段も含む。装置はさらに、記憶するための手段から取り出された専用算術符号化命令を実行するための手段も含む。専用算術符号化命令は、第1のレンジ、第1のオフセットおよび第1の状態を含む複数の入力を受け付ける。専用算術符号化命令は、複数の入力に基づいて、1つまたは複数の出力を生成するために実行される。1つまたは複数の出力に基づいて、第2の状態が記憶され、第2のレンジを生成するための第1のレンジが再アラインされ、第2のオフセットを生成するために第1のオフセットが再アラインされる。
開示される態様の少なくとも1つによって提供される1つの特定の利点は、マイクロプロセッサにおいて専用算術符号化命令をプログラムし、実行できることである。専用算術符号化命令の使用は、エントロピー符号化ビデオストリーム(たとえば、H.264CABACビデオストリームまたはH.265CABACビデオストリーム)を符号化するプログラム実行サイクルの数を削減することができる。以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲を含む、本出願全体を検討した後に、本開示の他の態様、利点および特徴が明らかになるであろう。
専用算術符号化命令を実行するように動作可能であるシステムの特定の例示的な態様の図である。 専用算術符号化命令を用いてCABACレンジおよびオフセットを変更する例示的な態様を示す図である。 専用算術符号化命令を実行するように構成されるプロセッサのレジスタ内に情報を記憶する方法の特定の例示的な態様の図である。 専用算術符号化命令を実行するロジックの特定の例示的な態様のアーキテクチャ図である。 レンジおよびオフセットを再正規化する方法を示す流れ図である。 専用算術符号化命令を実行する方法の特定の例示的な態様の流れ図である。 汎用命令および専用算術符号化命令を有する命令セットを含むワイヤレスデバイスのブロック図である。
図1を参照すると、専用算術符号化命令を実行するように動作可能であるシステム100の特定の例示的な態様が示される。システム100は、メモリ120に結合されるプロセッサ110を含む。
プロセッサ110は、汎用命令を実行するように構成される汎用命令実行ロジック112を含む。汎用命令は、LOAD、STORE、JUMP、ADD、INCREMENTなどの一般的に実行されるプロセッサ命令を含んでもよい。汎用命令実行ロジック112は、汎用命令を実行する汎用ロード-ストアロジックを含んでもよい。また、プロセッサは、専用算術符号化命令を実行するように構成される専用算術符号化命令実行ロジック114も含む。専用算術符号化命令は、コンテキスト適応バイナリ算術符号化(CABAC)方式のような、エントロピー符号化方式に基づいて、ビデオストリームを符号化するためにプロセッサ110によって実行可能である。特定の態様では、専用算術符号化命令は、国際電気通信連合によって公表された264オーディオビジュアルおよびマルチメディアシステム標準規格("Advanced video coding for generic audiovisual services"と題するH.264)に従って、ビデオストリームを符号化する際に使用されてもよい。別の態様では、専用算術符号化命令は、国際電気通信連合によって公表された265オーディオビジュアルおよびマルチメディアシステム標準規格("Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services - coding of moving video"と題するH.265)に従って、ビデオストリームを符号化する際に使用されてもよい。
特定の態様では、汎用命令および専用算術符号化命令は、プロセッサ110の共通実行ユニットによって実行される。たとえば、共通実行ユニットは、汎用命令実行ロジック112および専用算術符号化命令実行ロジック114の両方を含んでもよい。例示的な態様では、専用算術符号化命令は、専用算術符号化命令を、汎用命令実行ロジック112によって実行されることになる1つまたは複数の汎用命令に分離することなく、プロセッサ110によって実行可能であるアトミック命令である。専用算術符号化命令は、プロセッサ110の命令セットの単一の命令であってもよく、プロセッサ110の少ないサイクル数(たとえば、3実行サイクル未満)で実行されてもよい。特定の態様では、プロセッサ110は、パイプライン化マルチスレッド超長命令語(VLIW:very long instruction word)プロセッサである。
メモリ120は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、レジスタメモリ、またはそれらの任意の組合せを含んでもよい。メモリ120は、図1において、プロセッサ110と別に存在するように示されるが、メモリ120は、代わりに、プロセッサ110のエンベデッドメモリ(たとえば、キャッシュ)であってもよい。
動作時に、プロセッサ110はビデオストリームを符号化する際に使用される場合がある。ビデオストリームの特定のビットを符号化するとき、プロセッサ110は、メモリ120から専用算術符号化命令を取り出すことができ、ロジック114は、取り出された命令を実行してもよい。
図1のシステム100は、専用算術符号化命令を(たとえば、ビデオストリームを符号化しながら)実行できるようにする場合があることが理解されよう。専用算術符号化命令を実行するように構成されるプロセッサ(たとえば、プロセッサ110)は、複数の汎用命令を用いてビデオ符号化アルゴリズムを実行するプロセッサより高速にビデオストリームを符号化してもよい。たとえば、専用算術符号化命令を実行できることによって、プロセッサは、本明細書においてさらに説明されるように、汎用命令を使用することより少ない命令サイクルにおいて、複雑で、時間を要する符号化演算を実行できるようになる場合がある。
図2を参照すると、専用算術符号化命令を用いてCABACレンジおよびオフセットを変更する例示的な態様200、220が開示される。CABACは、バイナリ算術符号化の一形態である。一般的に、バイナリ算術符号化は、2つの量:現在区間の「レンジ」および現在区間のレンジ内の現在の「オフセット」によって特徴付けることができる。
特定のビットを符号化するために、現在のレンジは、最初に、最低確率シンボル(LPS)および最尤シンボル(MPS)の確率に基づいて2つの部分に細分される。たとえば、LPSは“0”シンボルであってもよく、MPSは“1”シンボルであってもよく、現在のレンジは、0と1との間のレンジであってもよい。一般的には、Rが現在のレンジの幅であり、rLPSが第1の部分の幅であり、rMPSが第2の部分の幅であり、pLPSが最低確率シンボルに遭遇する確率であり、pMPSが最尤シンボルに遭遇する確率である場合には、rLPS=RxpLPSかつrMPS=RxpMPS=R-rLPSである。したがって、最低確率シンボルの確率pLPSが、最尤シンボルの確率pMPSより高いとき、最低確率シンボルに対応する部分は、最尤シンボルに対応する部分の幅rMPSより広い幅rLPSを有することになる。すなわち、pLPS>pMPSであるとき、rLPS>rMPSである。同様に、pMPS>pLPSであるとき、rMPS>rLPSである。各ビンは、MPSまたはLPSとして符号化されてもよく、後に説明されるように、rLPSおよびrMPSは、符号化されたビンに基づいて繰返し更新されてもよい。
図2の第1の態様200において示されるように、ビン204をMPSとして符号化する(たとえば、ビンを論理"1"として符号化する)ために、専用算術符号化命令202を実行してもよい。特定の態様では、専用算術符号化命令202は、図1のプロセッサ110の専用算術符号化命令実行ロジック114によって実行されてもよい。レンジ206およびロー208(たとえば、オフセット)が、ビン204を特徴付けることができる。レンジ206は、図示されるように、ビン204のrLPS210と、ビン204のrMPS212との和に等しい場合がある。ビン204をMPSとして符号化するために専用算術符号化命令202を実行することは、符号化されたビン214を生成する。符号化されたビン214のレンジ216は、ビン204のrMPS212に等しく、符号化されたビン214のロー218(たとえば、オフセット)は、ビン204のロー208に等しい。
別の例として、図2の第2の態様220において示されるように、ビン204をLPSとして符号化する(たとえば、ビンを論理"0"として符号化する)ために、専用算術符号化命令222が実行されてもよい。特定の態様では、専用算術符号化命令222は、図1のプロセッサ110の専用算術符号化命令実行ロジック114によって実行されてもよい。ビン204をLPSとして符号化するために専用算術符号化命令222を実行することは、符号化されたビン234を生成することができる。符号化されたビン234のレンジ236は、ビン204のrLPS210に等しく、符号化されたビン234のロー(たとえば、オフセット)は、ビン204のロー208と、ビン204のrMPS212との和に等しい。特定の態様では、専用算術符号化命令202および専用算術符号化命令222は同じ命令であってもよい。
図2に示される態様200、202を参照すると、オフセット(たとえば、それぞれロー218、238)は、ビットストリーム(符号化されたビン)に書くことができる。図2に示されるように、符号化されたビン214、234のレンジ216、236は、ビン204のレンジ206より小さい場合がある(たとえば、レンジは、符号化ステップごとに減少する場合がある)。したがって、各ビンを符号化した後に、またはレンジの値がしきい値未満に降下するとき、レンジおよびローが再正規化されてもよい。たとえば、9ビット2進数によって表されるレンジは、そのレンジの最上位ビット(MSB)が1未満(たとえば、MSB=0)であるときに再正規化されてもよい。再正規化は、図5に関してより詳細に説明される。
H.264またはH.265によるCABAC符号化は、状態依存演算である。すなわち、ビデオストリームを符号化することは、レンジおよびオフセット以外の情報(たとえば、状態、ビット位置およびMPSビット)を保持することを含んでもよい。H.264またはH.265の場合、レンジは9ビット量であり、オフセットは少なくとも9ビット量である。rLPSの計算は、CABAC定数を記憶し、レンジおよび状態によってインデックスを付される256バイトの64*4ルックアップテーブルによって近似することができる。ルックアップテーブル内の値はH.264標準規格またはH.265標準規格によって規定される定数であるので、ルックアップテーブルはハードコード化されてもよい。代替的には、ルックアップテーブルはプログラマブル(たとえば、書換え可能)であってもよい。
専用CABAC符号化命令(たとえば、専用算術符号化命令202、222)は、本明細書において説明されるように、レンジを再アラインし、オフセットを再アラインし、CACAB定数を探索してもよい。専用CABAC符号化命令は、入力として、CABAC状態ビット、CABAC MPSビット、ビット位置(bitpos)ビット、9個のCABACレンジビット、少なくとも9個のCABACオフセットビットおよび入力値ビット(たとえば、入力値ビン)を受け付けることができる。専用CABAC符号化命令は、新たなCABAC状態ビット、新たなCABAC MPSビット、9個のCABACレンジビット、および少なくとも9個のCABACオフセットビットを含む出力を生成してもよい。先に説明されたように、符号化プロセスは、一定の繰返し後に、MPSのMSBの値が1になるように再正規化されてもよい。たとえば、専用CABAC符号化命令は、以下の擬似コードに従って動作してもよい。
state = Rtt.w[0][5:0];
valMPS = Rtt.w[0][8:8];
bitpos = Rtt.w[1][4:0];
range = Rss.w[0];
low = Rss.w[1];
bin = Pu[0];
range <<= bitpos
range &= 0xFF800000U;
rLPS = rLPS_table_64*4[state][(range>>29)&3];
rLPS = rLPS<<23;
rMPS = range-rLPS;
if (bin == valMPS) {
Rdd AC_next_state_MPS_64[state];//(state<62)?(state+1):状態;
Rdd[8:8] = valMPS;
Rdd[31:23] = rMPS>>23;
Rdd.w[1] = low;
} else {
Rdd = AC_next_state_LPS_64[state];
Rdd[8:8] = !state?(1-valMPS):valMPS;
Rdd[31:23] = rLPS>>23;
Rdd.w[1] = low+(rMPS>>bitpos);
}
本明細書において記載される数式および式の多くはCまたはC+プログラミング言語に類似の構文を使用するが、それらの式は例示することを目的としており、代わりに、異なる構文を用いる他のプログラミング言語において表すこともできることに留意されたい。
上記の擬似コードは、関数ENCBIN( )(後に例示される)にカプセル化されてもよく、符号化されたH.264またはH.265ビデオビットは、2プロセッササイクルにおいて生成されてもよい。
cabac_encode_bin:
{
R1:0 = ENCBIN(R1:0,R3:2,P0)//[1つのビンを符号化]
//[R0[5:0]:状態]
//[R0[8]: valMPS]
//[R0[31:23]:レンジ]
//[R1:ロー]
R6 = ASL(R5,R2) //[0x100<<bitpos]
}
{
MEMH(R4+#0) = R0 //[コンテキストを記憶]
P1 = CMP.GTU(R6,R0) //[0x100>レンジ?]
R0 = LSR(R0,R2) //[レンジを再アライン]
IF (!P1.NEW) JUMPR:T LR //[戻る]
}
特定の態様では、専用CABAC符号化命令の使用は、符号化されたビデオストリームビットを生成する時間を複数のプログラム実行サイクル(すなわち、>2サイクル)(汎用命令を使用する)から、2プロセッサ実行サイクルに短縮する。
図3を参照すると、専用算術符号化命令360を実行するように構成されるプロセッサのレジスタ内に情報を記憶する方法の特定の例示的な態様の図が開示される。例示的な態様では、専用算術符号化命令360は、H.264CABAC符号化命令である。別の例示的な態様では、専用算術符号化命令360は、H.265CABAC符号化命令である。特定の態様では、専用算術符号化命令360は、図2の専用算術符号化命令202、222のうちの1つに対応する場合がある。
専用算術符号化命令360の実行中に、ビン350(たとえば、専用CABAC符号化命令360の入力値ビット350)がプレディケートレジスタ340に記憶される場合がある。プレディケートレジスタ340に記憶されたビン350は、決定またはビデオ符号化アルゴリズムにおいて使用される場合がある。プロセッサ110は、2つの入力レジスタ対310および320において専用算術符号化命令360を実行するために使用されるデータをロードし、記憶してもよい。特定の態様では、レジスタ対310および320は32ビットレジスタ対である。
プロセッサは、出力レジスタ対330において専用算術符号化命令の実行中に生成されるデータを記憶してもよい。特定の態様では、出力レジスタ対330は、32ビットレジスタ対である。
第1の入力レジスタ対310の第1のレジスタRtt.w0 311は、入力状態301と、入力MPSビット302とを記憶してもよい。特定の態様では、Rtt.w0 311のビット0〜5は、Rtt.w0[0:5]で表され、入力状態301を記憶し、Rtt.w0[8]は入力MPSビット302を記憶する。入力レジスタ対310の第2のレジスタRtt.w1 312は、入力bitpos303を記憶してもよい。たとえば、Rtt.w1[0:4]が入力bitpos303を記憶してもよい。
第2のレジスタ対320の第1のレジスタRss.w0 321は、入力レンジ304を記憶してもよい。たとえば、Rss.w0[0:8]は、入力レンジ304の9ビットを記憶してもよい。第2の入力レジスタ対320の第2のレジスタRss.w1 322は、入力オフセット305を記憶してもよい。特定の態様では、Rss.w1[0:8]は、入力オフセット305の9ビットを記憶する。
出力レジスタ対330の第1のレジスタRdd.w0 331は、出力状態308、出力MPSビット307および出力レンジ306を記憶してもよい。たとえば、Rdd.w0[0:5]が6ビット出力状態308を記憶してもよく、Rdd.w0[8]が出力MPSビット307を記憶してもよく、Rdd.w0[23:31]が出力レンジ306を記憶してもよい。出力レジスタ対331の第2のレジスタRdd.w1 332は、出力オフセット309を正規化して記憶してもよい。
プロセッサは、専用CABAC符号化命令のための出力データを2つの入力レジスタ対に「詰め込む(pack)」ことができることが理解されよう。専用CABAC符号化命令360は、H.264ビデオ圧縮標準規格および/またはH.265ビデオ圧縮標準規格を参照しながら本明細書において説明されてきたが、専用CABAC符号化命令360は、他の算術符号化されたビットストリームを符号化する際に使用することができることに留意されたい。たとえば、専用CABAC符号化命令360は、Joint Photographic Experts Group 3000(JPEG3000)画像圧縮標準規格に従って符号化されたビットストリームを符号化する際に使用することができる。図3は、プレディケートレジスタ、2つの入力レジスタ対および1つの出力レジスタ対を示すが、代替的には、専用CABAC符号化命令360は、入力レジスタおよび出力レジスタの任意の数および組合せを用いて実行される場合があることに留意されたい。さらに、本明細書において説明されるように、専用CABAC符号化命令360は、9ビットレンジおよび9ビットオフセットを利用するが、そのようなビット長は例示にすぎないことに留意されたい。他の算術符号化アルゴリズムは、他のビット長を使用する場合があり、本明細書において説明されるような専用算術符号化命令は、任意のビット長のデータを、入力として受け付け、出力として生成することができる。
図4は、専用算術符号化命令を実行するロジック400の特定の例示的な態様のアーキテクチャ図が示される。例示的な態様では、専用算術符号化命令は、H.264CABAC符号化命令である。別の例示的な態様では、専用算術符号化命令は、H.265CABAC符号化命令である。
6個の入力変数が取り出され、ロジック400に与えられる場合がある。たとえば、第1の入力レジスタ対310の第1のレジスタRtt.w0 311から入力状態301が取り出される場合があり、第1の入力レジスタ対310の第1のレジスタRtt.w0 311から入力MPSビット302が取り出される場合があり、第1の入力レジスタ対310の第2のレジスタRtt.w1 312から入力bitpos303が取り出される場合があり、第2の入力レジスタ対320の第1のレジスタRss.w0 321から入力レンジ304が取り出される場合があり、第2の入力レジスタ対320の第2のレジスタRss.w1 322から入力オフセット305(たとえば、ロー)が取り出される場合があり、プレディケートレジスタ340から入力ビン350が取り出される場合がある。
入力bitpos303および入力レンジ304は、左シフタ443に与えることができる。左シフタ443は、入力レンジ304を入力bitpos303だけシフトさせるように構成されてもよい。入力レンジ304を入力bitpos303だけシフトさせることは、シフトされたレンジ445を生成することができる。入力状態310は、CABAC H.264/H.265定数ルックアップテーブル422へのインデックスとして使用される。インデックス演算の結果として、4つのCABAC定数423が生成され、4:1マルチプレクサ424に入力され、マルチプレクサは、シフトされたレンジ445に基づいて、選択されたCABAC定数を出力する。選択されたCABAC定数は、LPSの幅(たとえば、rLPS427)に対応する場合がある。シフトされたレンジ445およびrLPS427は減算器412に与えることができる。減算器412は、MPSの幅(たとえば、rMPS448)を生成するために、シフトされたレンジ445からrLPS427を減算してもよい(たとえば、レンジ-rLPS)。
CABAC H.264/H.265定数ルックアップテーブル422はまた、新たなLPS状態定数425および新たなMPS状態定数426を生成することもできる。新たなLPS状態定数425および新たなMPS状態定数426は、2:1マルチプレクサ474に与えることができる。入力ビン350および入力MPSビット302は、比較器414に与えることができる。比較器414は、入力ビン350および入力MPSビット302が等しいか否かを判断してもよい。入力ビン350および入力MPSビット302が等しいと判断するのに応答して、比較器414は、論理ハイ電圧信号(たとえば、論理"1")を生成する。入力ビン350および入力MPSビット302が等しくないと判断するのに応答して、比較器414は、論理ロー電圧信号(たとえば、論理"0")を生成する。比較器414の出力は、論理ANDゲート418に、2:1マルチプレクサ470の制御入力に、2:1マルチプレクサ474の制御入力に、そして2:1マルチプレクサ476の制御入力に与えられる。
入力オフセット305(「ロー」)は、2:1マルチプレクサ470に、そして加算器449に与えることができる。rMPS448も加算器449に与えることができる。加算器449は、rMPS448を入力オフセット305と加算し、結果(たとえば、和)を2:1マルチプレクサ470に与えるように構成される。比較器414の出力に基づいて、2:1マルチプレクサ470は、出力オフセット309として入力オフセット305を出力してもよいし、または出力オフセット309として、入力オフセット305とrMPS448との和を出力してもよい。たとえば、入力ビン350がLPSとして符号化される(たとえば、入力ビン350が入力MPSビット302に等しくない)とき、比較器414は、2:1マルチプレクサ470の制御入力に論理ハイ電圧信号を与えることができる。論理ハイ電圧信号を受信するのに応答して、2:1マルチプレクサ470は、出力オフセット309として入力オフセット305とrMPS448との和を出力してもよい。入力ビン350がMPSとして符号化される(たとえば、入力ビン350が入力MPSビット302に等しい)とき、比較器414は、2:1マルチプレクサ470の制御入力に論理ロー電圧信号を与えることができる。論理ロー電圧信号を受信するのに応答して、2:1マルチプレクサ470は、出力オフセット309として入力オフセット305を出力してもよい。
出力状態308は、比較器414の出力に依存する場合がある。たとえば、入力ビン350がLPSとして符号化される(たとえば、入力ビン350が入力MPSビット302に等しくない)とき、比較器414は、2:1マルチプレクサ474の制御入力に論理ハイ電圧信号を与えることができる。論理ハイ電圧信号を受信するのに応答して、2:1マルチプレクサ474は、出力状態308として新たなLPS状態定数425を出力することができる。入力ビン350がMPSとして符号化される(たとえば、入力ビン350が入力MPSビット302に等しい)とき、比較器414は、2:1マルチプレクサ474の制御入力に論理ロー電圧信号を与えることができる。論理ロー電圧信号を受信するのに応答して、2:1マルチプレクサ474は、出力状態308として新たなMPS状態定数426を出力してもよい。
出力レンジ306は、比較器414の出力に依存する場合がある。たとえば、入力ビン350がLPSとして符号化される(たとえば、入力ビン350が入力MPSビット302に等しくない)とき、比較器414は、2:1マルチプレクサ476の制御入力に論理ハイ電圧信号を与えることができる。論理ハイ電圧信号を受信するのに応答して、2:1マルチプレクサ476は、出力レンジ306としてrLPS427を出力してもよい。入力ビン350がMPSとして符号化される(たとえば、入力ビン350が入力MPSビット302に等しい)とき、比較器414は、2:1マルチプレクサ476の制御入力に論理ロー電圧信号を与えることができる。論理ロー電圧信号を受信するのに応答して、2:1マルチプレクサ476は、出力レンジ306としてrMPS448を出力してもよい。
入力状態301はまた、インバータ420に与えることもできる。インバータ420は、入力状態301を反転し、その結果を論理ANDゲート418に与えるように構成されてもよい。比較器414の出力およびインバータ420の出力が論理ハイ電圧信号に対応する(たとえば、入力ビン350が入力MPSビット302に等しく、かつ入力状態301が論理"0"である)とき、論理ANDゲート418は、2:1マルチプレクサ472の制御入力に論理ハイ電圧信号を与えることができる。図4に示される入力状態301は、論理"0"(たとえば、"==0")である。しかしながら、入力状態301はまた、論理"1"(たとえば、"==1")とすることもできる。入力ビン350が入力MPSビット302に等しくない場合には、および/または入力状態301が論理"1"である場合には、論理ANDゲート418は、2:1マルチプレクサ472の制御入力に論理ロー電圧信号を与えることができる。
入力MPSビット302はまた、2:1マルチプレクサ472に与えることができる。入力MPSビット302は、インバータ416によって反転することもできる。インバータの出力(たとえば、反転された入力MPSビット)は、2:1マルチプレクサ472に与えることができる。出力MPSビット307は、論理ANDゲート418の出力に依存する場合がある。たとえば、論理ANDゲート418が2:1マルチプレクサ472の制御入力に論理ハイ電圧信号を与えるとき(たとえば、入力ビン350が入力MPSビット302に等しく、入力状態301が論理"0"であるとき)、2:1マルチプレクサ472は、出力MPSビット302として、反転された入力MPSビットを出力する。そうでない場合には、2:1マルチプレクサ472は、出力MPSビット307として入力MPSビット302を出力する。
数多くのプロセッサがシフタを含むので、図4のロジック400は、定数ルックアップテーブル422を記憶し、比較器、インバータおよびマルチプレクサのようないくつかの回路素子を追加することによって、そのようなプロセッサにおいて実現できることが理解されよう。したがって、プロセッサは、プロセッサに対する実質的な変更を必要とすることなく、図4のロジック400を実施することによって専用算術符号化命令を実行するように構成されてもよい。
図5を参照すると、流れ図500が、レンジおよびオフセットを再正規化する方法を示す。オフセットは、出力レジスタ対331の第2のレジスタRdd.w1 332内のビットに対応する場合がある。たとえば、第2のレジスタRdd.w1 332は、第1の部分ub[0]に8ビット(たとえば、第1のバイトlow.ub[0])を記憶し、第2の部分ub[1]に第2のバイトlow.ub[1]を記憶し、第3の部分ub[2]に第3のバイトlow.ub[2]を記憶し、第4の部分ub[3]に第4のバイトlow.ub[3]を記憶してもよい。第2のレジスタRdd.w1 332に記憶されるバイトは出力オフセット309に対応する場合がある。
図2に関して説明されたように、レンジおよびオフセットは、レンジの値がしきい値未満に降下するときに再正規化されてもよい。たとえば、9ビット2進数によって表されるレンジは、そのレンジの最上位ビット(MSB)が0である(たとえば、そのレンジがバイナリ"10000000"未満である)ときに再正規化されてもよい。図5を参照すると、プロセッサ(たとえば、図1のプロセッサ110)は、502において、出力レンジ306が16進数値0x100未満である(たとえば、256未満である)か否かを判断してもよい。出力レンジ306が16進数値0x100以上である場合には、出力オフセット309は再正規化される必要はなく、プロセスは504において終了する。
出力レンジ306が16進数値0x100未満である場合には、プロセッサは、506において、第3のレジスタRdd.w1 332の第2の部分ub[1]に記憶される第2のバイトlow.ub[1]が16進数値0xFF(たとえば、255)に等しいか否かを判断してもよい。たとえば、プロセッサが、第2のバイトlow.ub[1]の各ビットが論理"1"ビットであるか否かを判断してもよい。第2のバイトlow.ub[1]が16進数値0xFFに等しいと判断するのに応答して、508において、バッファリングされたバイト(たとえば、出力ビットストリームに書き込まれることになるバイト)の数をインクリメントしてもよい。その後、プロセッサは、510において、第1のバイトlow.ub[0]を第2の部分ub[1]にシフトし、16進数値0x00を第1の部分ub[0]にロードし、出力レンジ306を8ビットだけ左にシフトしてもよい。本方法は、504において終了してもよい。
506において、第2のバイトlow.ub[1]が16進数値0x100に等しくないと判断するのに応答して、プロセッサは、512において、バッファリングされたバイトの数が0より大きいか否かを判断してもよい。バッファリングされたバイトの数が0より大きいと判断するのに応答して、プロセッサは、518において、第4のバイトlow.ub[3]をビットストリームに入力してもよい。たとえば、プロセッサは、符号化されたビットストリームとして、デコーダに第4のバイトlow.ub[3]を送信してもよい。プロセッサは、520において、バッファリングされたバイトの数が1より大きいか否かを判断してもよい。バッファリングされたバイトの数が1より大きいと判断するのに応答して、プロセッサは、522において、第3のw.ub[2]をビットストリームに入力してもよく、524において、バッファリングされたバイトの数をデクリメントしてもよい。520〜524における動作は、バッファリングされたバイトの数が1より大きい間、継続されてもよい。520において、バッファリングされたバイトの数が1未満であると判断するのに応答して、プロセッサは、516において、第2のバイトを第4の部分ub[3]にシフトし、16進数値0xFFを第3のub[2]にシフトしてもよい。その後、プロセッサは、510において、第1のバイトlow.ub[0]を第2の部分ub[1]にシフトし、16進数値0x00を第1の部分ub[1]にロードし、出力レンジ306を8ビットだけ左にシフトしてもよい。この後、本方法は、504において、終了してもよい。
512において、バッファリングされたバイトの数が0以下であると判断するのに応答して、プロセッサは、514において、バッファリングされたバイトの数を1に設定してもよい。次に、プロセッサは、516において、第2のバイトlow.ub[1]を第4の部分ub[3]にシフトし、16進数値0xFFを第3の部分ub[2]にシフトしてもよい。その後、プロセッサは、510において、第1のバイトlow.ub[0]を第2の部分ub[1]にシフトし、16進数値0x00を第1の部分ub[0]にロードし、出力レンジ306を8ビット(たとえば、1バイト)だけ左にシフトしてもよい。本方法は、504において終了してもよい。
図5の流れ図500は、出力オフセット309のキャリアビットをチェックするのを不要にし、ビットストリームに論理"0"が書き込まれるべきであるか、論理"1"が書き込まれるべきであるか導出するのを不要にすることができる。たとえば、専用算術符号化命令360の実行中に出力オフセット309を更新するときに生成される任意のキャリアが存在する場合には、そのキャリアは自動的に第3のバイトlow.ub[2]を介して第4のバイトlow.ub[3](たとえば、最上位バイト)に伝搬することができる。流れ図500はまた、バッファリングされたバイトの数に基づいて複数のバイトをビットストリームに選択的に入力する(たとえば、書き込む)ことによって、再正規化の再発率を低減することもできる。
図6を参照すると、専用算術符号化命令を実行する方法600の特定の例示的な態様の流れ図が示される。例示的な態様では、ブロック600は、図1のプロセッサ110または図4のロジック400によって実行される場合がある。
方法600は、602において、プロセッサにおいて、専用コンテキスト適応バイナリ算術符号化(CABAC)符号化命令を実行することを含む。たとえば、プロセッサ110は、専用算術符号化命令202、222、または専用算術符号化命令360のような、1つまたは複数の専用算術符号化命令を実行してもよい。専用算術符号化命令202、222、360は、入力として、入力状態301(たとえば、第1の状態)、入力MPSビット302、入力ビット位置(bitpos)303、入力レンジ304(たとえば、第1のレンジ)、入力オフセット305(たとえば、第1のオフセット)および入力ビン350を受け付けることができる。
また、方法600はまた、専用CABAC符号化命令の1つまたは複数の出力に基づいて、604において、第2の状態を記憶することと、第2のレンジを生成するために第1のレンジを再アラインすることと、第2のオフセットを生成するために第1のオフセットを再アラインすることとを含むこともできる。たとえば、専用算術符号化命令を実行することは、出力オフセット309(たとえば、第2のオフセット)と、出力MPSビット307と、出力状態308(たとえば、第2の状態)と、出力レンジ306(たとえば、第2のレンジ)とを生成することができる。図3を参照すると、出力MPSビット307は、出力レジスタ対330の第1のレジスタRdd.w0 331に記憶することができ、第2の入力レジスタ対320の第1のレジスタRss.w0 321内の入力レンジ304は、出力レジスタ対330の第1のレジスタRdd.w0 331において再アラインすることができ、第2の入力レジスタ対320の第2のレジスタRss.w1 322内の入力オフセット305は、出力レジスタ対330の第2のレジスタRdd.w1 332において再アラインすることができる。
図6の方法600によって、専用算術符号化命令を(たとえば、ビデオストリームを符号化しながら)実行できるようになる場合がある。専用算術符号化命令を実行するように構成されるプロセッサ(たとえば、プロセッサ110)は、複数の汎用命令を用いてビデオ符号化アルゴリズム(たとえば、CABAC)を実行するプロセッサより高速にビデオストリームを符号化することができる。たとえば、専用算術符号化命令を実行できることによって、プロセッサは、汎用命令を使用するより、少ない命令サイクルにおいて、複雑で、時間を要する符号化演算を実行できるようになる場合がある。
図7は、ワイヤレスデバイス700のブロック図である。ワイヤレスデバイス700内のメモリ732は、汎用命令752および専用算術符号化命令754を含む。ワイヤレスデバイス700は、メモリ732に結合される、デジタルシグナルプロセッサなどのプロセッサ710を含む。例示的な態様では、プロセッサ710は、図1のプロセッサ110を含むことができ、メモリ732は、図1のメモリ120を含んでもよい。メモリ732は、コンピュータ可読記憶媒体であってもよい。
特定の態様では、汎用命令752および専用算術符号化命令754は、メモリ732に記憶される符号化アプリケーションまたは何らかの他の符号化ソフトウェアにおいて使用される。たとえば、汎用命令752および専用算術符号化754は、ビデオを符号化するために使用されるCABAC符号化アプリケーションにおいて使用される場合がある。ワイヤレスデバイス700は、専用算術符号化命令754を実行するロジック712も含む。例示的な態様では、ロジック712は、図4のロジック400を含む。特定の態様では、ロジック712は、汎用命令752および専用算術符号化命令754を実行するように構成されるプロセッサ710の実行ユニットである。
特定の態様では、専用算術符号化命令754は単一の命令である。特定の態様では、汎用命令752および専用算術符号化命令754によって、ワイヤレスデバイス700は、H.264準拠CABAC符号化ビデオストリームまたはH.265準拠CABAC符号化ビデオストリームを符号化できるようになる。ロジック712は、専用算術符号化命令754を実行するために、プロセッサ710によって利用される。特定の態様では、専用算術符号化命令754を実行することは、図4に関して本明細書において説明されたように、データを取り出すことと、処理することと、記憶することとを含む。
また、図7は、プロセッサ710およびディスプレイ728に結合されるオプションのディスプレイコントローラ726も示す。コーダ/デコーダ(コーデック)734も、デジタルシグナルプロセッサ710に結合することができる。スピーカ736およびマイクロフォン738をコーデック734に結合することができる。また、図7は、また、ワイヤレスインターフェース740がプロセッサ710およびアンテナ742に結合可能であることを示す。特定の態様では、プロセッサ710、ディスプレイコントローラ726、メモリ732、コーデック734およびワイヤレスコントローラ740は、システムインパッケージデバイスまたはシステムオンチップデバイス722に含まれる。特定の態様では、入力デバイス730および電源744がシステムオンチップデバイス722に結合される。さらに、特定の態様では、図7に示されるように、ディスプレイ728、入力デバイス730、スピーカ736、マイクロフォン738、アンテナ742、および電源744は、システムオンチップデバイス722の外部にある。しかし、それぞれを、たとえばインターフェースまたはコントローラを介して、システムオンチップデバイス722の構成要素に結合することができる。例示的な態様では、ワイヤレスデバイス700はセルラー電話、スマートフォンまたは携帯情報端末(PDA)である。したがって、ワイヤレスデバイス700は、ビデオストリームを符号化し、符号化されたビデオストリームを、アンテナ742を介して送信してもよい。ビデオストリームは、プロセッサ710のロジック712によって実行される汎用命令752と、専用算術符号化命令754のうちの1つまたは複数とを用いて符号化してもよい。
図7はワイヤレスデバイス700を示すが、代替的には、ロジック712、汎用命令752および専用算術符号化命令754がセットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、定置データユニット、またはコンピュータのような他のデバイス内に含まれる場合もあることに留意されたい。
説明された態様とともに、汎用命令および専用算術符号化命令を記憶するための手段を含む装置が開示される。たとえば、記憶するための手段は、汎用命令および専用算術符号化命令を記憶するための図1のメモリ120、図7のメモリ732、1つまたは複数の他のデバイス、回路もしくはモジュール、または任意のその組合せを含んでもよい。
また、本装置はまた、汎用命令および専用算術符号化命令を実行するための手段を含むこともできる。たとえば、実行するための手段は、汎用命令および専用算術符号化命令を実行するための、図1のプロセッサ110、図1の汎用命令実行ロジック112、図1の専用算術符号化命令実行ロジック114、図3のプレディケートレジスタ340、図3の第1の入力レジスタ対310、図3の第2の入力レジスタ対320、第3の出力レジスタ対330、図4のロジック400、図7のプロセッサ700、図7の専用算術符号化命令754を実行するロジック712、1つまたは複数の他のデバイス、回路もしくはモジュール、またはその任意の組合せを含んでもよい。
本明細書において開示される態様に関連して説明された種々の例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、または両方の組合せとして実現される場合があることは、当業者はさらに理解されよう。種々の例示的な構成要素、ブロック、構成、モジュール、回路、およびステップが、それらの機能の観点から概略的にこれまで説明されてきた。そのような機能が、ハードウェアとして実現されるか、プロセッサ実行可能命令として実現されるかは、特定の用途およびシステム全体に課される設計制約によって決まる。当業者は、特定の適用例ごとに様々な方法で上記の機能を実施してもよいが、そのような実装形態の決定は、本開示の範囲からの逸脱を引き起こすと解釈されるべきではない。
本明細書において開示される態様に関して説明される方法またはアルゴリズムのステップは、ハードウェアにおいて直接、またはプロセッサによって実行されるソフトウェアモジュールにおいて、またはその2つの組合せにおいて具現される場合がある。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラム可能読取り専用メモリ(PROM)、消去可能プログラム可能読取り専用メモリ(EPROM)、電気的消去可能プログラム可能読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野において既知の任意の他の形の非一時的記憶媒体内に存在する場合がある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替形態では、記憶媒体は、プロセッサに一体化される場合がある。プロセッサおよび記憶媒体は特定用途向け集積回路(ASIC)内に存在する場合がある。ASICはコンピューティングデバイスまたはユーザ端末内に存在する場合がある。代替形態では、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末内に個別の構成要素として存在する場合がある。
開示される態様のこれまでの説明は、開示された態様を当業者が作製または使用できるようにするために提供される。これらの態様への種々の変更は当業者には容易に明らかになり、本明細書において規定された原理は本開示の範囲から逸脱することなく他の態様にも適用される場合がある。したがって、本開示は、本明細書において示される態様に限定されることを意図するものではなく、以下の特許請求の範囲によって規定されるような原理および新規の特徴と一致する可能な最も広い範囲を与えられるべきである。
100 システム
110 プロセッサ
112 汎用命令実行ロジック
114 専用算術符号化命令実行ロジック
120 メモリ
200 第1の態様
202 専用算術符号化命令
204 ビン
206 レンジ
208 ロー
210 rLPS
212 rMPS
214 符号化されたビン
216 レンジ
218 ロー
220 第2の態様
222 専用算術符号化命令
234 符号化されたビン
236 レンジ
238 ロー
301 状態
302 入力MPSビット
303 入力bitpos
304 入力レンジ
305 入力オフセット
306 出力レンジ
307 出力MPSビット
308 出力状態
309 出力オフセット
310 入力レジスタ対
311 第1のレジスタRtt.w0
312 第2のレジスタRtt.w1
320 入力レジスタ対
321 第1のレジスタRss.w0
322 第2のレジスタRss.w1
330 出力レジスタ対
331 第1のレジスタRdd.w0
340 プレディケートレジスタ
350 ビン
360 専用算術符号化命令
400 専用算術符号化命令を実行するロジック
412 減算器
414 比較器
416 インバータ
418 論理ANDゲート
420 インバータ
422 定数ルックアップテーブル
423 CABAC定数
424 マルチプレクサ
425 新たなLPS状態定数
426 新たなMPS状態定数
427 rLPS
443 左シフタ
445 シフトされたレンジ
448 rMPS
449 加算器
470 マルチプレクサ
472 マルチプレクサ
474 マルチプレクサ
476 マルチプレクサ
500 流れ図
600 方法
700 ワイヤレスデバイス
710 プロセッサ
712 ロジック
722 システムインパッケージデバイスまたはシステムオンチップデバイス
726 ディスプレイコントローラ
728 ディスプレイ
730 入力デバイス
732 メモリ
734 コーダ/デコーダ(コーデック)
736 スピーカ
738 マイクロフォン
740 ワイヤレスインターフェース
742 アンテナ
744 電源
752 汎用命令
754 専用算術符号化命令

Claims (15)

  1. メモリと、
    プレディケートビット値を記憶するように構成されるプレディケートレジスタと、
    前記メモリに結合されるプロセッサであって、
    専用算術符号化命令を実行することであって、前記専用算術符号化命令は、第1のレンジ、第1のオフセット、および第1の状態を含む複数の入力を受け付け、かつ前記複数の入力に基づいて1つまたは複数の出力を生成するように構成され、前記1つまたは複数の出力のうちの少なくとも1つの出力の値は前記プレディケートビット値に基づいて計算可能である、実行することと、
    しきい値以上である前記第1のレンジの1つまたは複数の値を生成するために、前記第1のレンジおよび前記第1のオフセットに関する再正規化を実行することと、
    前記専用算術符号化命令の前記1つまたは複数の出力、前記再正規化された第1のレンジ、および前記再正規化された第1のオフセットに基づいて、
    第2の状態を記憶することと、
    第2のレンジを生成することと、
    第2のオフセットを生成することと
    前記第2のオフセットのキャリアビットから独立して、前記第2のオフセットに関する再正規化を実行することと
    を行うように構成される、プロセッサと、
    第1の比較器入力値と第2の比較器入力値との間の比較に基づいて第1の比較器出力値を決定するように構成される比較器であって、前記第1の比較器入力値は、第1の入力レジスタ対に記憶されるコンテキスト適応バイナリ算術符号化(CABAC)最尤シンボル(MPS)ビットに基づき、前記第2の比較器入力値は前記プレディケートビット値に基づく、比較器と
    を備える、装置。
  2. 前記専用算術符号化命令は、エントロピー符号化方式を用いてビデオストリームを符号化するために前記プロセッサによって実行可能であり、前記エントロピー符号化方式はCABACである、請求項1に記載の装置。
  3. 前記第1の状態はCABAC状態ビットを含み、前記第1のレンジはCABACレンジビットを含み、前記第1のオフセットはCABACオフセットビットを含み、前記複数の入力は、CABAC MPSビット、CABACビット位置(bitpos)ビットおよびプレディケート入力値ビットをさらに含み、前記装置は、第1の入力レジスタ対および第2の入力レジスタ対をさらに備え、前記プロセッサは、
    前記第1の入力レジスタ対の第1のレジスタからCABAC状態ビットおよび前記CABAC MPSビットを取り出すことと、
    前記第1の入力レジスタ対の第2のレジスタから前記CABAC bitposビットを取り出すことと、
    前記第2の入力レジスタ対の第3のレジスタから前記CABACレンジビットを取り出すことと、
    前記第2の入力レジスタ対の第4のレジスタから前記CABACオフセットビットを取り出すことと、
    前記プレディケートレジスタから前記プレディケートビット値を取り出すことと
    を行うようにさらに構成される、請求項2に記載の装置。
  4. 前記第2の状態はCABAC状態ビットを含み、前記第2のレンジはCABACレンジビットを含み、前記第2のオフセットはCABACオフセットビットを含み、前記専用算術符号化命令は、CABAC MPSビットを生成し、前記装置は出力レジスタ対をさらに備え、前記プロセッサは、
    前記出力レジスタ対の第1のレジスタに前記CABAC状態ビット、前記CABAC MPSビット、および前記CABACレンジビットを記憶することと、
    前記出力レジスタ対の第2のレジスタに前記CABACオフセットビットを正規化して記憶することと
    を行うようにさらに構成される、請求項2に記載の装置。
  5. 前記専用算術符号化命令は、前記専用算術符号化命令を1つまたは複数の汎用命令に分離することなく前記プロセッサによって実行可能であり、前記1つまたは複数の汎用命令を実行するように構成されるロジックおよび前記専用算術符号化命令を実行するように構成されるロジックは、前記プロセッサの共通実行ユニットに対応する、請求項1に記載の装置。
  6. 前記専用算術符号化命令は前記プロセッサの命令セットの単一の命令を含み、前記プロセッサはパイプライン化マルチスレッド超長命令語(VLIW)プロセッサを含む、請求項1に記載の装置。
  7. プレディケートレジスタにおいてプレディケートビット値を記憶するステップと、
    プロセッサにおいて、専用算術符号化命令を実行するステップであって、前記専用算術符号化命令は、第1のレンジ、第1のオフセット、および第1の状態を含む複数の入力を受け付け、かつ前記複数の入力に基づいて1つまたは複数の出力を生成し、前記1つまたは複数の出力のうちの少なくとも1つの出力の値は前記プレディケートビット値に基づいて計算可能である、ステップと、
    しきい値以上である前記第1のレンジの1つまたは複数の値を生成するために、前記第1のレンジおよび前記第1のオフセットに関する再正規化を実行するステップと、
    前記専用算術符号化命令の前記1つまたは複数の出力、前記再正規化された第1のレンジ、および前記再正規化された第1のオフセットに基づいて、第2の状態を記憶し、第2のレンジを生成し、かつ第2のオフセットを生成するステップと
    前記第2のオフセットのキャリアビットから独立して、前記第2のオフセットに関する再正規化を実行するステップと
    を含む、方法。
  8. 前記専用算術符号化命令を実行するステップは、
    前記第1のレンジをシフタに与えるステップと、
    前記第1の状態をコンテキスト適応バイナリ算術(CABAC)ルックアップテーブルのためのインデックスルックアップ値として使用するステップであって、前記CABACルックアップテーブルはハードコード化されるか、または書換え可能である、ステップと
    を含む、請求項7に記載の方法。
  9. 記第2のオフセットの複数のバイトをビットストリームに入力するステップと、
    前記ビットストリームを復号器に送信するステップと
    をさらに含む、請求項7に記載の方法。
  10. 専用コンテキスト適応バイナリ算術(CABAC)符号化命令を含む非一時的コンピュータ可読記録媒体であって、前記専用CABAC符号化命令は、第1のレンジ、第1のオフセット、第1の状態、およびプレディケートレジスタに記憶されるプレディケートビット値を含む複数の入力を受け付け、かつ前記複数の入力に基づいて1つまたは複数の出力を生成し、前記1つまたは複数の出力のうちの少なくとも1つの出力の値が前記プレディケートビット値に基づいて計算可能であり、前記専用CABAC符号化命令は、プロセッサによって実行されるとき、前記プロセッサに、
    しきい値以上である前記第1のレンジの1つまたは複数の値を生成するために、前記第1のレンジおよび前記第1のオフセットに関する再正規化を実行することと、
    前記再正規化された第1のレンジおよび前記再正規化された第1のオフセットに基づいて、
    第2の状態を記憶することと、
    第2のレンジを生成することと、
    第2のオフセットを生成することと
    前記第2のオフセットのキャリアビットから独立して、前記第2のオフセットに関する再正規化を実行することと
    を行わせる、非一時的コンピュータ可読記録媒体。
  11. 前記第1の状態、CABAC MPSビット、CABACビット位置(bitpos)ビット、またはそれらの組合せを記憶するように構成される第1の入力レジスタ対と、
    前記第1のレンジ、前記第1のオフセット、またはそれらの組合せを記憶するように構成される第2の入力レジスタ対であって、前記第1の状態はCABAC状態ビットを含み、前記第1のレンジはCABACレンジビットを含み、前記第1のオフセットはCABACオフセットビットを含む、第2の入力レジスタ対と
    をさらに備える、請求項1に記載の装置。
  12. 前記比較器は、
    前記第1の比較器入力値を受信することであって、前記第1の比較器入力値は前記第1の入力レジスタ対に記憶される前記CABAC MPSビットに基づく、受信することと、
    前記第2の比較器入力値を受信することと
    を行うようにさらに構成される、請求項1に記載の装置。
  13. インバータであって、
    インバータ入力値を受信することであって、前記インバータ入力値は前記第1の入力レジスタ対のCABAC状態ビットに基づく、受信することと、
    前記インバータ入力値に基づいて第1のインバータ出力値を生成することと
    を行うように構成される、インバータ
    をさらに備える、請求項12に記載の装置。
  14. 論理ゲートであって、
    比較器から第1の比較器出力値を受信することと、
    インバータから第1のインバータ出力値を受信することであって、前記第1のインバータ出力値は前記第1の状態に基づく、受信することと、
    前記第1の比較器出力値および前記第1のインバータ出力値に基づいて、論理ゲート出力値を決定することと
    を行うように構成される、論理ゲートと
    をさらに備える、請求項1に記載の装置。
  15. 論理ゲートであって、前記第1の比較器出力値および第1のインバータ出力値に基づいて論理ゲート出力値を決定するように構成され、前記第1の比較器出力値は前記第1の比較器入力値と前記第2の比較器入力値との間の比較に基づき、前記第1のインバータ出力値は第1の状態に基づく、論理ゲートをさらに備える、請求項1に記載の装置。
JP2016568663A 2014-05-27 2015-04-30 専用算術符号化命令 Active JP6695813B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/288,018 US9455743B2 (en) 2014-05-27 2014-05-27 Dedicated arithmetic encoding instruction
US14/288,018 2014-05-27
PCT/US2015/028443 WO2015183462A1 (en) 2014-05-27 2015-04-30 Dedicated arithmetic encoding instruction

Publications (3)

Publication Number Publication Date
JP2017525005A JP2017525005A (ja) 2017-08-31
JP2017525005A5 JP2017525005A5 (ja) 2018-05-31
JP6695813B2 true JP6695813B2 (ja) 2020-05-20

Family

ID=53267582

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016568663A Active JP6695813B2 (ja) 2014-05-27 2015-04-30 専用算術符号化命令

Country Status (10)

Country Link
US (1) US9455743B2 (ja)
EP (1) EP3149947B1 (ja)
JP (1) JP6695813B2 (ja)
KR (1) KR102296153B1 (ja)
CN (1) CN106415484B (ja)
BR (1) BR112016027558B1 (ja)
CA (1) CA2947856A1 (ja)
ES (1) ES2826425T3 (ja)
TW (1) TWI669945B (ja)
WO (1) WO2015183462A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104394418B (zh) * 2014-09-23 2018-06-05 清华大学 一种视频数据编码、解码的方法及装置
CN118626147A (zh) * 2024-08-14 2024-09-10 北京开源芯片研究院 指令译码方法、装置、电子设备及可读介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69327927T2 (de) * 1992-08-31 2000-10-12 Sun Microsystems, Inc. Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
US7769088B2 (en) * 2003-05-28 2010-08-03 Broadcom Corporation Context adaptive binary arithmetic code decoding engine
US7061410B1 (en) * 2005-07-18 2006-06-13 Lsi Logic Corporation Method and/or apparatus for transcoding between H.264 CABAC and CAVLC entropy coding modes
CN100466739C (zh) * 2005-10-12 2009-03-04 华为技术有限公司 Cabac解码系统及方法
CN101087411A (zh) * 2006-06-08 2007-12-12 威盛电子股份有限公司 译码方法
US7656326B2 (en) 2006-06-08 2010-02-02 Via Technologies, Inc. Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit
US8749409B2 (en) 2006-08-25 2014-06-10 Sony Computer Entertainment Inc. Entropy decoding methods and apparatus using most probable and least probable signal cases
US7561082B2 (en) 2006-12-29 2009-07-14 Intel Corporation High performance renormalization for binary arithmetic video coding
CN100531386C (zh) * 2007-06-15 2009-08-19 上海富瀚微电子有限公司 一种上下文自适应二进制算术编码器及其方法
US7839311B2 (en) * 2007-08-31 2010-11-23 Qualcomm Incorporated Architecture for multi-stage decoding of a CABAC bitstream
US8782379B2 (en) * 2007-09-27 2014-07-15 Qualcomm Incorporated H.264 video decoder CABAC core optimization techniques
US7777654B2 (en) * 2007-10-16 2010-08-17 Industrial Technology Research Institute System and method for context-based adaptive binary arithematic encoding and decoding
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
US7982641B1 (en) 2008-11-06 2011-07-19 Marvell International Ltd. Context-based adaptive binary arithmetic coding engine
US8638850B2 (en) * 2009-05-06 2014-01-28 Advanced Micro Devices, Inc. Execution units for context adaptive binary arithmetic coding (CABAC)
US20110125987A1 (en) 2009-11-20 2011-05-26 Qualcomm Incorporated Dedicated Arithmetic Decoding Instruction
US8913662B2 (en) * 2011-01-06 2014-12-16 Qualcomm Incorporated Indicating intra-prediction mode selection for video coding using CABAC
WO2013050612A1 (en) 2011-10-06 2013-04-11 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Entropy coding buffer arrangement
US10289412B2 (en) * 2012-02-09 2019-05-14 Qualcomm Incorporated Floating point constant generation instruction

Also Published As

Publication number Publication date
KR102296153B1 (ko) 2021-08-30
US20150349796A1 (en) 2015-12-03
BR112016027558B1 (pt) 2023-03-14
CA2947856A1 (en) 2015-12-03
BR112016027558A2 (ja) 2017-08-15
WO2015183462A1 (en) 2015-12-03
KR20170013222A (ko) 2017-02-06
EP3149947B1 (en) 2020-07-22
ES2826425T3 (es) 2021-05-18
US9455743B2 (en) 2016-09-27
EP3149947A1 (en) 2017-04-05
TWI669945B (zh) 2019-08-21
JP2017525005A (ja) 2017-08-31
TW201607294A (zh) 2016-02-16
CN106415484A (zh) 2017-02-15
CN106415484B (zh) 2019-02-01

Similar Documents

Publication Publication Date Title
JP5006451B2 (ja) 最適cabac復号器
TWI768295B (zh) 用於音訊/視訊樣本向量之錐型向量量化檢索/解檢索之方法及裝置
KR101118089B1 (ko) 가변장 복호화 장치 및 방법
KR100717055B1 (ko) Cabac 복호기에서 복수의 이진 값들을 파이프라인방식에 의하여 복호화하는 방법 및 이를 위한 복호화 장치
JPH06224777A (ja) 符号化方法、符号化装置、復号方法、復号器、データ圧縮装置、ビットストリーム生成方法及び遷移マシン生成方法
KR20060012093A (ko) 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더
US20090201180A1 (en) Compression for deflate algorithm
US20070097850A1 (en) Method of decoding syntax element in context-based adaptive binary arithmetic coding decoder and decoding device therefor
KR101099950B1 (ko) 인코딩된 비디오 압축을 위한 방법 및 시스템
JP6695813B2 (ja) 専用算術符号化命令
CN106537914B (zh) 通过限制的进位运算来执行算术编译的方法和设备
JP2015115665A (ja) 二値算術符号化装置、二値算術符号化方法及び二値算術符号化プログラム
US20110102212A1 (en) Entropy decoding device
US20110125987A1 (en) Dedicated Arithmetic Decoding Instruction
KR101030726B1 (ko) 확률적 테이블에 의해 생성된 심볼을 기반으로 호프만 테이블을 적용한 메모리 효율이 개선된 멀티미디어용 호프만 디코딩 방법 및 장치
US8018359B2 (en) Conversion of bit lengths into codes
CN107277553B (zh) 一种二元算术编码器
TW201440046A (zh) 解壓縮電路與相關的壓縮方法與解壓縮方法
JPH08167855A (ja) ハフマン復号化回路
KR101311617B1 (ko) 저전력 대규모 집적 회로 시스템을 위한 어드레스 버스코딩/디코딩 방법 및 장치
US20090289820A1 (en) Mechanism for coding a non-increasing sequence of values
TW202418807A (zh) 非疊代的熵編碼
CN113489979A (zh) 熵编码方法、装置、电子设备及存储介质
CN116582669A (zh) 二进制算术编码结构、装置、方法及存储介质
JP2021064900A (ja) 情報処理装置、情報処理方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180416

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191212

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: 20200330

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200422

R150 Certificate of patent or registration of utility model

Ref document number: 6695813

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250