(57)【特許請求の範囲】
【請求項１】
メモリと、
プレディケートビット値を記憶するように構成されるプレディケートレジスタと、
前記メモリに結合されるプロセッサであって、
専用算術符号化命令を実行することであって、前記専用算術符号化命令は、第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の比較器入力値は前記プレディケートビット値に基づく、比較器と
を備える、装置。
【請求項２】
前記専用算術符号化命令は、エントロピー符号化方式を用いてビデオストリームを符号化するために前記プロセッサによって実行可能であり、前記エントロピー符号化方式はCABACである、請求項1に記載の装置。
【請求項３】
前記第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に記載の装置。
【請求項４】
前記第2の状態はCABAC状態ビットを含み、前記第2のレンジはCABACレンジビットを含み、前記第2のオフセットはCABACオフセットビットを含み、前記専用算術符号化命令は、CABAC MPSビットを生成し、前記装置は出力レジスタ対をさらに備え、前記プロセッサは、
前記出力レジスタ対の第1のレジスタに前記CABAC状態ビット、前記CABAC MPSビット、および前記CABACレンジビットを記憶することと、
前記出力レジスタ対の第2のレジスタに前記CABACオフセットビットを正規化して記憶することと
を行うようにさらに構成される、請求項2に記載の装置。
【請求項５】
前記専用算術符号化命令は、前記専用算術符号化命令を1つまたは複数の汎用命令に分離することなく前記プロセッサによって実行可能であり、前記1つまたは複数の汎用命令を実行するように構成されるロジックおよび前記専用算術符号化命令を実行するように構成されるロジックは、前記プロセッサの共通実行ユニットに対応する、請求項1に記載の装置。
【請求項６】
前記専用算術符号化命令は前記プロセッサの命令セットの単一の命令を含み、前記プロセッサはパイプライン化マルチスレッド超長命令語(VLIW)プロセッサを含む、請求項1に記載の装置。
【請求項７】
プレディケートレジスタにおいてプレディケートビット値を記憶するステップと、
プロセッサにおいて、専用算術符号化命令を実行するステップであって、前記専用算術符号化命令は、第1のレンジ、第1のオフセット、および第1の状態を含む複数の入力を受け付け、かつ前記複数の入力に基づいて1つまたは複数の出力を生成し、前記1つまたは複数の出力のうちの少なくとも1つの出力の値は前記プレディケートビット値に基づいて計算可能である、ステップと、
しきい値以上である前記第1のレンジの1つまたは複数の値を生成するために、前記第1のレンジおよび前記第1のオフセットに関する再正規化を実行するステップと、
前記専用算術符号化命令の前記1つまたは複数の出力、前記再正規化された第1のレンジ、および前記再正規化された第1のオフセットに基づいて、第2の状態を記憶し、第2のレンジを生成し、かつ第2のオフセットを生成するステップと、
前記第2のオフセットのキャリアビットから独立して、前記第2のオフセットに関する再正規化を実行するステップと
を含む、方法。
【請求項８】
前記専用算術符号化命令を実行するステップは、
前記第1のレンジをシフタに与えるステップと、
前記第1の状態をコンテキスト適応バイナリ算術(CABAC)ルックアップテーブルのためのインデックスルックアップ値として使用するステップであって、前記CABACルックアップテーブルはハードコード化されるか、または書換え可能である、ステップと
を含む、請求項7に記載の方法。
【請求項９】
前記第2のオフセットの複数のバイトをビットストリームに入力するステップと、
前記ビットストリームを復号器に送信するステップと
をさらに含む、請求項7に記載の方法。
【請求項１０】
専用コンテキスト適応バイナリ算術(CABAC)符号化命令を含む非一時的コンピュータ可読記録媒体であって、前記専用CABAC符号化命令は、第1のレンジ、第1のオフセット、第1の状態、およびプレディケートレジスタに記憶されるプレディケートビット値を含む複数の入力を受け付け、かつ前記複数の入力に基づいて1つまたは複数の出力を生成し、前記1つまたは複数の出力のうちの少なくとも1つの出力の値が前記プレディケートビット値に基づいて計算可能であり、前記専用CABAC符号化命令は、プロセッサによって実行されるとき、前記プロセッサに、
しきい値以上である前記第1のレンジの1つまたは複数の値を生成するために、前記第1のレンジおよび前記第1のオフセットに関する再正規化を実行することと、
前記再正規化された第1のレンジおよび前記再正規化された第1のオフセットに基づいて、
第2の状態を記憶することと、
第2のレンジを生成することと、
第2のオフセットを生成することと、
前記第2のオフセットのキャリアビットから独立して、前記第2のオフセットに関する再正規化を実行することと
を行わせる、非一時的コンピュータ可読記録媒体。
【請求項１１】
前記第1の状態、CABAC MPSビット、CABACビット位置(bitpos)ビット、またはそれらの組合せを記憶するように構成される第1の入力レジスタ対と、
前記第1のレンジ、前記第1のオフセット、またはそれらの組合せを記憶するように構成される第2の入力レジスタ対であって、前記第1の状態はCABAC状態ビットを含み、前記第1のレンジはCABACレンジビットを含み、前記第1のオフセットはCABACオフセットビットを含む、第2の入力レジスタ対と
をさらに備える、請求項1に記載の装置。
【請求項１２】
前記比較器は、
前記第1の比較器入力値を受信することであって、前記第1の比較器入力値は前記第1の入力レジスタ対に記憶される前記CABAC MPSビットに基づく、受信することと、
前記第2の比較器入力値を受信することと
を行うようにさらに構成される、請求項1に記載の装置。
【請求項１３】
インバータであって、
インバータ入力値を受信することであって、前記インバータ入力値は前記第1の入力レジスタ対のCABAC状態ビットに基づく、受信することと、
前記インバータ入力値に基づいて第1のインバータ出力値を生成することと
を行うように構成される、インバータ
をさらに備える、請求項12に記載の装置。
【請求項１４】
論理ゲートであって、
比較器から第1の比較器出力値を受信することと、
インバータから第1のインバータ出力値を受信することであって、前記第1のインバータ出力値は前記第1の状態に基づく、受信することと、
前記第1の比較器出力値および前記第1のインバータ出力値に基づいて、論理ゲート出力値を決定することと
を行うように構成される、論理ゲートと
をさらに備える、請求項1に記載の装置。
【請求項１５】
論理ゲートであって、前記第1の比較器出力値および第1のインバータ出力値に基づいて論理ゲート出力値を決定するように構成され、前記第1の比較器出力値は前記第1の比較器入力値と前記第2の比較器入力値との間の比較に基づき、前記第1のインバータ出力値は第1の状態に基づく、論理ゲートをさらに備える、請求項1に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照によりその内容全体が本明細書に明確に組み込まれる、同一出願人が所有する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  専用算術符号化命令
【図１】
0006695813.tif 000002
【図２】
0006695813.tif 000003
【図３】
0006695813.tif 000004
【図４】
0006695813.tif 000005
【図５】
0006695813.tif 000006
【図６】
0006695813.tif 000007
【図７】
0006695813.tif 000008