(57)【要約】  ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｔｉｐｌｅ  Ｄａｔａ）処理を用いたメディア符号化のパラレルな実行のための装置、システム、方法及び物が記載される。本装置は、マクロブロックデータのＳＩＭＤ処理を実行するメディア処理ノードを有する。マクロブロックデータは、マクロブロックの複数のブロックの係数を含む。メディア処理ノードは、マクロブロックデータから複数のブロックに係る複数のフラグデータを生成し、フラグワードからパラレルに複数のブロックのラン値を決定する符号化モジュールを有する。他の実施例が記載及び請求される。
2008541663.tif 000002
【特許請求の範囲】
【請求項１】
マクロブロックの複数のブロックの係数を有するマクロブロックデータのＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｐｌｅ  Ｄａｔａ）処理を実行するメディア処理ノードを有する装置であって、
前記メディア処理ノードは、前記マクロブロックデータから前記複数のブロックに係る複数のフラグワードを生成し、前記フラグワードからパラレルに複数のブロックのラン値を決定する符号化モジュールを有する装置。
【請求項２】
前記係数は、前記複数のブロックのそれぞれに対する変換された量子化及びスキャンした係数のシーケンスを有する、請求項１記載の装置。
【請求項３】
前記符号化モジュールは、フラグワードをフラグレジスタに格納する、請求項１記載の装置。
【請求項４】
前記符号化モジュールは、ＬＺＤ（Ｌｅａｄｉｎｇ  Ｚｅｒｏ  Ｄｅｔｅｃｔｉｏｎ）を実行することによってラン値を決定する、請求項１記載の装置。
【請求項５】
前記符号化モジュールは、前記ラン値に基づき複数のブロックの非ゼロ値係数のパラレルな移動を実行する、請求項１記載の装置。
【請求項６】
前記非ゼロ値係数は、複数のブロックのレベル値に対応する、請求項５記載の装置。
【請求項７】
前記符号化モジュールは、前記マクロブロックのコードシーケンスを構成するため、パッキングモジュールにコードアレイを出力する、請求項１記載の装置。
【請求項８】
前記パッキングモジュールは、前記符号化モジュールから分割され、
前記符号化モジュールは、複数のマクロブロックのマルチスレッド処理を実行する、請求項７記載の装置。
【請求項９】
通信媒体と、
前記通信媒体に接続されるＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｐｌｅ  Ｄａｔａ）処理装置と、
を有するシステムであって、
前記ＳＩＭＤ処理装置は、マクロブロックの複数のブロックの係数を有するマクロブロックデータを処理するメディア処理ノードを有し、
前記メディア処理ノードは、前記マクロブロックデータから前記複数のブロックに係る複数のフラグワードを生成し、前記フラグワードからパラレルに複数のブロックのラン値を決定する符号化モジュールを有するシステム。
【請求項１０】
前記係数は、前記複数のブロックのそれぞれに対する変換された量子化及びスキャンした係数のシーケンスを有する、請求項９記載のシステム。
【請求項１１】
前記符号化モジュールは、フラグワードをフラグレジスタに格納する、請求項９記載のシステム。
【請求項１２】
前記符号化モジュールは、ＬＺＤ（Ｌｅａｄｉｎｇ  Ｚｅｒｏ  Ｄｅｔｅｃｔｉｏｎ）を実行することによってラン値を決定する、請求項９記載のシステム。
【請求項１３】
前記符号化モジュールは、前記ラン値に基づき複数のブロックの非ゼロ値係数のパラレルな移動を実行する、請求項９記載のシステム。
【請求項１４】
前記非ゼロ値係数は、複数のブロックのレベル値に対応する、請求項１３記載のシステム。
【請求項１５】
前記符号化モジュールは、前記マクロブロックのコードシーケンスを構成するため、パッキングモジュールにコードアレイを出力する、請求項９記載のシステム。
【請求項１６】
前記パッキングモジュールは、前記符号化モジュールから分割され、
前記符号化モジュールは、複数のマクロブロックのマルチスレッド処理を実行する、請求項１５記載のシステム。
【請求項１７】
マクロブロックの複数のブロックの係数を有するマクロブロックデータを受信するステップと、
前記マクロブロックデータから前記複数のブロックに係る複数のフラグワードを生成し、前記フラグワードからパラレルに複数のブロックのラン値を決定することによって、前記マクロブロックデータのＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｐｌｅ  Ｄａｔａ）処理を実行するステップと、
を有する方法。
【請求項１８】
前記係数は、前記複数のブロックのそれぞれに対する変換された量子化及びスキャンした係数のシーケンスを有する、請求項１７記載の方法。
【請求項１９】
フラグワードをフラグレジスタに格納するステップをさらに有する、請求項１７記載の方法。
【請求項２０】
ＬＺＤ（Ｌｅａｄｉｎｇ  Ｚｅｒｏ  Ｄｅｔｅｃｔｉｏｎ）を実行することによってラン値を決定するステップをさらに有する、請求項１７記載の方法。
【請求項２１】
前記ラン値に基づき、複数のブロックの非ゼロ値係数のパラレル移動を実行するステップをさらに有する、請求項１７記載の方法。
【請求項２２】
前記非ゼロ値係数に基づき、複数のブロックのレベル値を決定するステップをさらに有する、請求項２１記載の方法。
【請求項２３】
前記マクロブロックのコードシーケンスを構成するため、コードアレイを出力するステップをさらに有する、請求項１７記載の方法。
【請求項２４】
複数のマクロブロックのマルチスレッド処理を実行するステップをさらに有する、請求項２３記載の方法。
【請求項２５】
実行される場合、システムが、
マクロブロックの複数のブロックの係数を有するマクロブロックデータを受信するステップと、
前記マクロブロックデータから前記複数のブロックに係る複数のフラグワードを生成し、前記フラグワードからパラレルに複数のブロックのラン値を決定することによって、前記マクロブロックデータのＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｐｌｅ  Ｄａｔａ）処理を実行するステップと、
を実行することを可能にする命令を含むマシーン可読記憶媒体を有する物。
【請求項２６】
前記係数は、前記複数のブロックのそれぞれに対する変換された量子化及びスキャンした係数のシーケンスを有する、請求項２５記載の物。
【請求項２７】
実行される場合、システムがフラグワードをフラグレジスタに格納するステップをさらに実行することを可能にする命令を有する、請求項２５記載の物。
【請求項２８】
実行される場合、システムがＬＺＤ（Ｌｅａｄｉｎｇ  Ｚｅｒｏ  Ｄｅｔｅｃｔｉｏｎ）を実行することによってラン値を決定するステップをさらに実行することを可能にする命令を有する、請求項２５記載の物。
【請求項２９】
実行される場合、システムが前記ラン値に基づき、複数のブロックの非ゼロ値係数のパラレル移動を実行するステップをさらに実行することを可能にする命令を有する、請求項２５記載の物。
【請求項３０】
実行される場合、システムが前記非ゼロ値係数に基づき、複数のブロックのレベル値を決定するステップをさらに実行することを可能にする命令を有する、請求項２９記載の物。
【請求項３１】
実行される場合、システムが前記マクロブロックのコードシーケンスを構成するため、コードアレイを出力するステップをさらに実行することを可能にする命令をさらに有する、請求項２５記載の物。
【請求項３２】
実行される場合、システム複数のマクロブロックのマルチスレッド処理を実行するステップをさらに実行することを可能にする命令をさらに有する、請求項２５記載の物。
【請求項３３】
マクロブロックデータを受信するステップと、
同時の動き推定処理、符号化処理及び再構成処理を有する前記マクロブロックデータのパラレルなマルチスレッド処理を実行するステップと、
を有する方法であって、
前記符号化処理は、スレッドレベル並列化を実現するため、前記再構成処理からファンクション及びデータドメイン分割される方法。
【請求項３４】
前記マルチスレッド処理は、可変長符号化処理を有する、請求項３３記載の方法。
【請求項３５】
前記マルチスレッド処理は、ビットストリームパッキング処理を有する、請求項３３記載の方法。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［背景］
メディアデータを符号化するための各種技術が、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ）、ＩＴＵ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｕｎｉｏｎ）、ＩＳＯ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ）、ＩＥＣ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｓｓｉｏｎ）などの組織によって公表された規格に記載されている。例えば、ＭＰＥＧ−１、ＭＰＥＧ−２及びＭＰＥＧ−４ビデオ圧縮規格は、ピクチャがスライス、マクロブロック及びブロックに分割されるブロック符号化技術について記載している。時間動き予測及び／又は空間予測を実行した後、ブロック内の残差値がエントロピー符号化される。エントロピー符号化の一般的な例は、データシンボルを可変長符号に変換することに関する可変長符号化（ＶＬＣ）である。より複雑なエントロピー符号化の具体例として、コンテクストベースアダプティブ可変長符号化（ＣＡＶＬＣ）やコンテクストベースアダプティブバイナリ算術符号化（ＣＡＢＡＣ）があげられ、これらは、ＭＰＥＧ−４  Ｐａｒｔ  １０やＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｈ．２６４のＩＴＵ／ＩＥＣ  Ｈ．２６４ビデオ圧縮規格“Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  ｆｏｒ  Ｖｅｒｙ  Ｌｏｗ  Ｂｉｔ  Ｒａｔｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ”（２００３年５月）に規定されている。
【０００２】
ビデオエンコーダは、典型的には、固定ファンクションロジック又はスからプロセッサによって実現される単一ユニットによるシーケンシャルな符号化を実行する。エントロピー符号化に用いられるコンプレクシティの増大によって、シーケンシャルなビデオ符号化はＭｕｌｔｉ−ＧＨｚマシーンによってさえ大量のプロセッサ時間を消費する。
【０００３】
［詳細な説明］
図１は、ノードの一実施例を示す。図１は、メディア処理ノード１００のブロック図を示す。ノードは、一般にシステム１００において情報を通信するための任意の物理的又は論理的エンティティを有し、所与の設計パラメータセット又はパフォーマンス制約に対して所望されるようなハードウェア、ソフトウェア又はそれらの何れかの組み合わせとして実現可能である。
【０００４】
各種実施例では、ノードは、コンピュータシステム、コンピュータサブシステム、コンピュータ、家電機器、ワークステーション、ターミナル、サーバ、パーソナルコンピュータ（ＰＣ）、ラップトップ、ウルトララップトップ、携帯コンピュータ、携帯情報端末（ＰＤＡ）、セットトップボックス（ＳＴＢ）、電話、携帯電話、ハンドセット、無線アクセスポイント、基地局、無線ネットワークコントローラ（ＲＮＣ）、移動加入者センター（ＭＳＣ）、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）などの集積回路、プログラマブルロジックデバイス（ＰＬＤ）、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）及び／若しくはネットワークプロセッサなどのプロセッサ、インタフェース、入出力（Ｉ／Ｏ）デバイス（キーボード、マウス、ディスプレイ、プリンタなど）、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、回路、ロジックゲート、レジスタ、半導体デバイス、チップ、トランジスタ、若しくは他の何れかのデバイス、マシーン、ツール、装置、コンポーネント又はそれらの組み合わせから構成又は実現されてもよい。
【０００５】
各種実施例では、ノードは、ソフトウェア、ソフトウェアモジュール、アプリケーション、サブルーチン、命令セット、計算コード、ワード、値、シンボル又はこれらの組み合わせから構成又は実現されてもよい。ノードは、プロセッサに特定のファンクションを実行するよう維持するための所定のコンピュータ言語、方法又はシンタックスに従って実現されてもよい。コンピュータ言語の具体例として、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、ＢＡＳＩＣ、Ｐｅｒｌ、Ｍａｔｌａｂ、Ｐａｓｃａｌ、Ｖｉｓｕａｌ  ＢＡＳＩＣ、アセンブリ言語、マシーンコード、ネットワークプロセッサ用のマイクロコードなどがあげられる。これらの実施例は上記コンテクストに限定されるものでない。
【０００６】
各種実施例では、メディア処理ノード１００は、処理システム、処理サブシステム、プロセッサ、コンピュータ、デバイス、エンコーダ、デコーダ、コーダ／デコーダ（ＣＯＤＥＣ）、圧縮装置、解凍装置、フィルタリング装置（グラフィックスケーリング装置、デブロッキングフィルタリング装置など）、変換装置、エンターテイメントシステム、ディスプレイ又は他の何れかの処理アーキテクチャから構成又は実現されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【０００７】
各種実現形態では、メディア処理ノード１００は、１以上の処理演算を実行するよう構成されてもよい。処理演算は、一般に情報の生成、管理、通信、送信、受信、格納、転送、アクセス、読み込み、書き込み、操作、符号化、復号化、圧縮、解凍、再構成、暗号化、フィルタリング、ストリーミング又は他の処理などの１以上の演算を表すかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【０００８】
各種実施例では、メディア処理ノード１００は、ビデオ情報などの１以上のタイプの情報を処理するよう構成されるかもしれない。ビデオ情報は、一般に１以上のビデオ画像から導出される又は関連付けされる任意のデータを表すかもしれない。一実施例では、例えば、ビデオ情報は、ビデオデータ、ビデオシーケンス、ピクチャグループ、ピクチャ、オブジェクト、フレーム、スライス、マクロブロック、ブロック、ピクセルなどの１以上から構成されるかもしれない。ピクセルに割り当てられる値は、実数及び／又は整数から構成されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【０００９】
各種実施例では、例えば、メディア処理ノード１００は、格納又はストリーミング可能なファイルへのビデオデータの符号化及び／又は圧縮、格納されているファイル若しくはメディアストリームからのビデオデータの復号化及び／又は解凍、フィルタリング（グラフィックスケーリング、デブロッキングフィルタリングなど）、ビデオ再生、インターネットベースビデオアプリケーション、テレビ会議アプリケーション、ストリーミングビデオアプリケーションなどのメディア処理演算を実行するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００１０】
各種実現形態では、メディア処理ノード１００は、１以上のプロトコルに従って情報を通信、管理又は処理するかもしれない。プロトコルは、ノード間の通信を管理するための所定のルール又は命令セットから構成されるかもしれない。プロトコルは、ＩＴＵ、ＩＳＯ、ＩＥＣ、ＭＰＥＧ、ＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）などの標準化組織によって公表されるような１以上の規格によって定義されるかもしれない。例えば、記載される実施例は、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４及びＨ．２６４規格などのビデオ処理のための規格に従って動作するよう構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００１１】
各種実施例では、メディア処理ノード１００は複数のモジュールから構成されるかもしれない。これらのモジュールは、所与の設計又はパフォーマンス制約セットについて所望されるような１以上のシステム、サブシステム、プロセッサ、デバイス、マシーン、ツール、コンポーネント、回路、レジスタ、アプリケーション、プログラム、サブルーチン又はこれらの何れかの組み合わせから構成又は実現されてもよい。各種実施例では、これらのモジュールは、１以上の通信メディアにより接続されるかもしれない。通信メディアは、一般に情報信号を搬送可能な任意の媒体から構成されるかもしれない。例えば、通信メディアは、所与の実現形態について所望されるような有線通信メディア、無線通信メディア又はこれらの組み合わせから構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００１２】
メディア処理ノード１００は、動き推定モジュール１０２を有するかもしれない。各種実施例では、動き推定モジュール１０２は、入力ビデオデータを受信するよう構成される。各種実現形態では、入力ビデオデータのフレームは１以上のスライス、マクロブロック及びブロックから構成されるかもしれない。スライスは、例えば、Ｉスライス、Ｐスライス又はＢスライスから構成され、複数のマクロブロックを有するかもしれない。各マクロブロックは、ルミナスブロック及び／又はクロミナスブロックなどの複数のブロックを有するかもしれない。一実施例では、マクロブロックは１６×１６ピクセルのエリアから構成され、ブロックは８×８ピクセルのエリアから構成されるかもしれない。他の実施例では、マクロブロックは、１６×１６、１６×８、８×１６、８×８、８×４、４×８及び４×４などの各種ブロックサイズに分割されるかもしれない。マクロブロック及びブロックについて参照するが、記載される実施例及び実現形態はビデオデータの他の分割に適用可能である。これらの実施例は上記コンテクストに限定されるものでない。
【００１３】
各種実施例では、動き推定モジュール１０２は、１以上のマクロブロックに対して動き推定を実行するよう構成されるかもしれない。動き推定モジュール１０２は、１以上のリファレンスフレームに基づき、マクロブロック内の現在のブロックのコンテンツを推定するかもしれない。各種実現形態では、動き推定モジュール１０２は、一致するエリアを決定するため、現在フレームの１以上のマクロブロックとリファレンスフレームの周囲のエリアとを比較する。一部の実施例では、動き推定モジュール１０２は、動き推定を実行するため、複数のリファレンスフレーム（以前の、前の、以降のなど）を利用するかもしれない。一部の実現形態では、動き推定モジュール１０２は、例えば、動きベクトルを用いて現在フレームに対する１以上のリファレンスフレームの間の一致するエリアの動きを推定するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００１４】
メディア処理ノード１００は、モード決定モジュール１０４を有するかもしれない。各種実施例では、モード決定モジュール１０４は、１以上のマクロブロックに対する符号化モードを決定するよう構成されるかもしれない。符号化モードは、イントラ符号予測及び／又はインター符号予測などの予測符号化モードから構成されるかもしれない。イントラフレームブロック予測は、以前に復号化したピクセルを使用して、同一フレームからピクセル値を推定することに関するものである。インターフレームブロック予測は、シーケンスの連続するフレームからピクセル値を推定することに関するものである。これらの実施例は上記コンテクストに限定されるものでない。
【００１５】
メディア処理ノード１００は、動き予測モジュール１０６を有するかもしれない。各種実施例では、動き予測モジュール１０６は、ブロックのコンテンツを予測するため、時間動き予測及び／又は空間予測を実行するよう構成されるかもしれない。動き予測モジュール１０６は、イントラフレーム予測及びインターフレーム予測などの予測技術を使用するよう構成されるかもしれない。各種実現形態では、動き予測モジュール１０６は、双方向予測をサポートするかもしれない。一部の実施例では、動き予測モジュール１０６は、周囲のブロックの動きベクトルに基づき、動きベクトル予測を実行するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００１６】
各種実施例では、動き予測モジュールは、現在フレームと１以上のリファレンスフレームとの間の差分に基づき、残差を提供するよう構成されるかもしれない。残差は、例えば、ブロックの予測されたコンテンツと実際のコンテンツ（ピクセル、動きベクトルなど）との間の差分から構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００１７】
メディア処理ノード１００は、ＦＤＣＴ（Ｆｏｒｗａｒｄ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）などの変換モジュール１０８から構成されるかもしれない。各種実施例では、変換モジュール１０８は、残差の周波数記述を提供するよう構成されるかもしれない。各種実現形態では、変換モジュール１０８は、残差を周波数ドメインに変換し、周波数係数のマトリックスを生成するかもしれない。例えば、１６×１６のマクロブロックは、１６×１６の周波数係数マトリックスに変換され、８×８のブロックは、８×８の周波数係数マトリックスに変換されるかもしれない。一部の実施例では、変換モジュール１０８は、８×８ピクセルベース変換及び／又は４×４ピクセルベース変換を利用するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００１８】
メディア処理ノード１００は、量子化モジュール１１０を有するかもしれない。各種実施例では、量子化モジュール１１０は、変換された係数及び出力残差係数を量子化するよう構成される。各種実現形態では、量子化モジュール１１０は、相対的に少ない非ゼロ値係数を有する残差係数を出力するかもしれない。量子化モジュール１１０は、変換された周波数係数の多くをゼロにすることによって符号化を容易にするかもしれない。例えば、量子化モジュール１１０は、小さな係数（高周波数係数など）をゼロにする量子化係数又は量子化マトリックによって周波数係数を除するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００１９】
メディア処理ノード１００は、逆量子化モジュール１１２と逆変換モジュール１１４を有するかもしれない。各種実施例では、逆量子化モジュール１１２は、量子化した変換された係数を受け取り、ＤＣＴ係数などの変換された係数を生成するため、逆量子化を実行するよう構成されるかもしれない。逆変換モジュール１１４は、ＤＣＴ係数などの変換された係数を受け取り、ピクセル値を生成するため逆変換を実行するよう構成されてもよい。各種実現形態では、逆量子化及び逆変換は、量子化中に生じたロスを予測するのに利用可能である。これらの実施例は上記コンテクストに限定されるものでない。
【００２０】
メディア処理ノード１００は、動き補償モジュール１１６を有するかもしれない。各種実施例では、動き補償モジュール１１６は、逆変換モジュール１１４の出力を受け取り、１以上のマクロブロックに対して動き補償を実行するかもしれない。各種実現形態では、動き補償モジュール１１６は、現在フレームと１以上のリファレンスフレームとの間の一致するエリアの動きを補償するよう構成される。これらの実施例は上記コンテクストに限定されるものでない。
【００２１】
メディア処理ノード１１０は、スキャニングモジュール１１８を有するかもしれない。各種実施例では、スキャニングモジュール１１８は、量子化モジュール１１０から変換された量子化した残差係数を受け取り、スキャニング処理を実行するよう構成されるかもしれない。各種実現形態では、スキャニングモジュール１１８は、変換された量子化した残差係数のシーケンスを生成するため、ジグザグスキャニング順序などのあるスキャニング順序に従って残差係数をスキャンするかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００２２】
メディア処理ノード１００は、ＶＬＣモジュールなどのエントロピー符号化モジュール１２０を有するかもしれない。各種実施例では、エントロピー符号化モジュール１２０は、ＶＬＣ（ランレベルＶＬＣなど）、ＣＡＶＬＣ、ＣＡＢＡＣなどのエントロピー符号化を実行するよう構成されるかもしれない。一般に、ＣＡＶＬＣ及びＣＡＢＡＣはＶＬＣより複雑である。例えば、ＣＡＶＬＣは、整数ビットを用いて値を符号化し、ＣＡＢＡＣは、算術符号化を利用し、分数ビットを用いて値を符号化するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００２３】
各種実施例では、エントロピー符号化モジュール１２０は、ハフマンテーブルを用いたランレベルＶＬＣなどのＶＬＣ演算を実行するよう構成されるかもしれない。このような実施例では、スキャンされた変換及び量子化した係数のシーケンスは、ランレベルシンボルのシーケンスとして表されるかもしれない。各ランレベルシンボルは、レベルが非ゼロ値の係数の値であり、ランが非ゼロ値係数に先行するゼロ値係数の個数であるランレベルペアから構成されるかもしれない。例えば、もとのシーケンスＸ１，Ｘ２，Ｘ３，０，０，０，０，０，Ｘ４の一部は、ランレベルシンボル（０，Ｘ１）（０，Ｘ２）（０，Ｘ３）（５，Ｘ４）として表されるかもしれない。各種実現形態では、エントロピー符号化モジュール１２０は、所定のハフマンテーブルセットに従って、各ランレベルシンボルを異なる長さのビットシーケンスに変換するよう構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００２４】
メディア処理ノード１００は、ビットストリームパッキングモジュール１２２を有するかもしれない。各種実施例では、ビットストリームパッキングモジュール１２２は、ブロックのＶＬＣシーケンスを構成するため、あるスキャニング順序に従ってブロックのエントロピー符号化されたビットシーケンスをパッキングするよう構成される。ビットストリームパッキングモジュール１２２は、マクロブロックのコードシーケンスを構成するため、あるブロック順序に従って複数のブロックのビットシーケンスをパッキングしてもよい。各種実現形態では、シンボルのビットシーケンスは、パッキング処理の逆転がブロック及びマクロブロックの一意的な復号化を可能にするのに利用可能となるように、一意的に決定されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００２５】
各種実施例では、メディア処理ノード１００は、マルチステージファンクションパイプを実現するようにしてもよい。図１に示されるように、例えば、メディア処理ノード１００は、ステージＡにおいて動き推定処理に、ステージＢにおいて符号化処理に、及びステージＣにおいてビットストリームパッキング処理に分割されたファンクションパイプを実現してもよい。一部の実現形態では、ステージＢの符号化処理はさらに分割されてもよい。各種実施例では、メディア処理ノード１００は、マルチスレッドコンピュータアーキテクチャについて利用可能な並列化を実行するため、ファンクション及びデータドメインベース分割を実現してもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００２６】
各種実現形態では、個別のスレッドは、動き推定ステージ、符号化ステージ及びパックビットストリームステージを実行してもよい。各スレッドは、他のスレッドから独立して及びパラレルに実行可能なコンピュータプログラムの一部を有するかもしれない。各種実施例では、スレッド同期は相互排除オブジェクト（ｍｕｔｅｘ）及び／又はセマフォを用いて実現されるかもしれない。スレッド通信は、メモリ及び／又はダイレクトレジスタアクセスによって実現されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００２７】
各種実施例では、メディア処理ノード１００は、パラレルマルチスレッド演算を実行するかもしれない。例えば、３つの個別のスレッドは、ステージＡにおける推定処理、ステージＢにおける符号化処理及びステージＣにおけるビットストリームパッキング処理をパラレルに実行するかもしれない。各種実現形態では、複数のスレッドが、ステージＣで実行される複数のスレッドとパラレルに、ステージＢで実行される複数のスレッドとパラレルにステージＡにおいて実行されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００２８】
各種実現形態では、ファンクションパイプは、ステージＣのビットストリームパッキング処理が、ステージＡの動き推定処理及びステージＢの符号化処理から分離されるように分割されてもよい。ファンクションパイプの分割は、スレッドレベル並列化を実現するため、ファンクション及びデータドメインベースであってもよい。例えば、動き推定ステージＡ及び符号化ステージＢは、マクロブロックにデータドメイン分割され、ビットストリームパッキングステージＣは、他のステージの計算とのさらなる並列化を可能にする各行に分割されてもよい。各種実施例では、マクロブロック又はブロックの最終的なビットシーケンスパッキングは、各マクロブロック及び各ブロックに対するエントロピー符号化（ＶＬＣなど）演算が各スレッドによってパラレルに実行可能となるように、マクロブロック又はブロック内のランレベルシンボルについてビットシーケンスパッキングから分離されてもよい。マクロブロックベース符号化処理の外部にパッキングビットストリームの最終的なシーケンシャル処理を移すことによって、シーケンシャル従属性が低減され、並列化が向上するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００２９】
図２は、一実施例のメディア処理を示す。図２は、メディア処理ノード１００などのメディア処理ノードによって実行可能なパラレルマルチスレッド処理の一実施例を示す。各種実施例では、パラレルマルチスレッド処理がマクロブロック、ブロック及び行に対して実行されるかもしれない。図２に示された例では、例えば、各マクロブロック（ｍ，ｎ）は１６×１６のマクロブロックから構成される。７２０ピクセル×４８０ラインを有する標準解像度（ＳＤ）フレームについては、Ｍ＝４５及びＮ＝３０となる。これらの実施例は上記コンテクストに限定されるものでない。
【００３０】
一実施例では、ステージＢにおけるマクロブロック（１０）、（１１）、（１２）及び（１３）の１以上に対する符号化処理が、ステージＣのＲｏｗ−００に対して実行されるビットストリームパッキング処理とパラレルに実行されてもよい。各種実現形態では、ブロックレベル処理がマクロブロックレベル処理とパラレルに実行されてもよい。ステージＢ内では、例えば、ブロックレベル符号化処理が、マクロブロック（００）、（０１）、（０２）及び（０３）に対して実行されるマクロブロックレベル符号化処理とパラレルに、マクロブロック（１０）内で実行されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００３１】
各種実施例では、パラレルなマルチスレッド処理はイントラレイヤ及び／又はインターレイヤデータ従属性を受けるかもしれない。図２に示される例では、イントラレイヤデータ従属性は実線の矢印により示され、インターレイヤデータ従属性は破線の矢印により示される。本例では、ステージＡの動き推定処理を実行するとき、マクロブロック（１２）、（１３）及び（２１）の間にイントラレイヤデータ従属性があるかもしれない。また、ステージＡとステージＢとの間にはマクロブロック（１１）のインターレイヤ従属性が存在するかもしれない。この結果、ステージＢにおけるマクロブロック（１１）に対して実行される符号化処理は、ステージＡにおけるマクロブロック（１１）に対して実行される動き推定処理が完了するまでスタートしないようにしてもよい。また、ステージＢとステージＣとの間にはマクロブロック（００）、（０１）、（０２）及び（０３）に対するインターレイヤ従属性が存在するかもしれない。この結果、ステージＣにおけるＲｏｗ−００に対するビットストリームパッキング処理は、マクロブロック（００）、（０１）、（０２）及び（０３）に対する処理が完了するまでスタートしないようにしてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００３２】
図３は、システムの一実施例を示す。図３は、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）処理システム３００のブロック図を示す。各種実現形態では、ＳＩＭＤ処理システム３００は、ＶＬＣ処理などのメディア符号化処理のマルチスレッド並列実行を含む各種メディア処理演算を実行するよう構成されるかもしれない。各種実施例では、メディア処理ノード１００は、ＳＩＭＤ処理を実現することによって、メディア符号化のマルチスレッド並列実行を行うようにしてもよい。図示されたＳＩＭＤ処理システム３００は一実施例であり、理解を容易にし、簡単化するため省略されるかもしれない追加的なコンポーネントを有するかもしれない。
【００３３】
メディア処理システム３００は、メディア処理装置３０２を有するかもしれない。各種実施例では、メディア処理装置３０２は、各種機能ユニット及びリソースとアクセス可能なＳＩＭＤプロセッサ３０４を有するかもしれない。ＳＩＭＤプロセッサ３０４は、例えば、汎用プロセッサ、専用プロセッサ、ＤＳＰ、メディアプロセッサ、グラフィックスプロセッサ、通信プロセッサなどから構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００３４】
各種実施例では、ＳＩＭＤプロセッサ３０４は、例えば、マイクロエンジンやコアなどのいくつかの処理エンジンから構成されるかもしれない。各処理エンジンは、複数の（４又は８など）実行スレッドについてマクロエンジンのスレッド上で実行されるマイクロブロックなどのプログラミングロジックを実行するよう構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００３５】
各種実施例では、ＳＩＭＤプロセッサ３０４は、例えば、１つの命令期間においてデータのｎオペランドのＳＩＭＤ命令を同時に実行するため、ｎオペランドＳＩＭＤ実行エンジンなどのＳＩＭＤ実行エンジンを有するかもしれない。例えば、８チャネルＳＩＭＤ実行エンジンは、８つの３２ビットデータオペランドに対してＳＩＭＤ命令を同時に実行してもよい。各オペランドは、ＳＩＭＤ実行エンジンの個別の計算チャネルにマッピングされるかもしれない。各種実現形態では、ＳＩＭＤ実行エンジンは、ＳＩＭＤ実行エンジンの対応するチャネルに対する処理のため、ｎコンポーネントのデータベクトルと共にＳＩＭＤ命令を受け取るかもしれない。ＳＩＭＤエンジンは、ベクトルのすべてのコンポーネントに対してＳＩＭＤ命令を同時実行するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００３６】
各種実現形態では、ＳＩＭＤ命令は条件付きなものであってもよい。例えば、ＳＩＭＤ命令又はＳＩＭＤ命令セットは、１以上の所定の条件を充足すると実行されるかもしれない。各種実施例では、ある処理演算のパラレルなループオーバーが、ＳＩＭＤ条件ブランチ及びループ機構を用いて可能とされるかもしれない。これらの条件は、１以上のマクロブロック及び／又はブロックに基づくものであってもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００３７】
各種実施例では、ＳＩＭＤプロセッサ３０４はリージョンベースレジスタアクセスを実現するかもしれない。ＳＩＭＤプロセッサ３０４は、例えば、情報を格納するためのレジスタファイルにあるリージョンを記述した値を格納するためのレジスタファイル及びインデックスファイルを有するようにしてもよい。いくつかのケースでは、当該リージョンはダイナミックとされてもよい。インデックス付けされたレジスタは複数の独立したインデックスを有するかもしれない。各種実現形態では、インデックスレジスタの値はレジスタファイルのリージョンの１以上のソースを規定するかもしれない。当該値は、例えば、レジスタ内のデータ要素の位置を示すレジスタ識別子及び／又はサブレジスタ識別子を表すものであってもよい。レジスタリージョンの記述（レジスタ番号、サブレジスタ番号など）は、各オペランドについて命令ワードに符号化されてもよい。インデックスレジスタは、レジスタリージョンの幅、水平方向のストライド又はデータタイプなどのレジスタリージョンを記述するための他の値を含むものであってもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００３８】
各種実施例では、ＳＩＭＤプロセッサ３０４はフラグ構成を有するかもしれない。ＳＩＭＤプロセッサ３０４は、例えば、フラグワード又はフラグを格納するための１以上のフラグレジスタを有するかもしれない。フラグワードは、処理演算によって生成される１以上の結果に関連付けされるかもしれない。これらの結果は、例えば、ゼロ、非ゼロ、等しい、等しくない、より大きい、以上、より小さい、以下及び／又はオーバーフロー条件に関連付けされてもよい。フラグレジスタ及び／又はフラグワードの構成はフレキシブルであるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００３９】
各種実施例では、フラグレジスタはｎチャネルＳＩＭＤ実行エンジンのｎビットフラグレジスタから構成されるかもしれない。フラグレジスタの各ビットはチャネルに関連付けされ、フラグレジスタはＳＩＭＤ実行ユニットから情報を受け取り、格納するようにしてもよい。各種実現形態では、ＳＩＭＤプロセッサ３０４は、１以上のフラグレジスタの水平方向及び／又は垂直方向評価ユニットを有するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００４０】
ＳＩＭＤプロセッサ３０４は、バス３０６により１以上の機能ユニットに接続されるかもしれない。各種実現形態では、バス３０６は、メディア処理装置３０２の各種機能ユニットを相互接続する１以上のオンチップバス群から構成されてもよい。バス３０６は理解を容易にするため１つのバスとして示されているが、バス３０６が任意のバスアーキテクチャを有し、任意数のバス及びそれらの組み合わせを含むものであってもよいということは理解されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００４１】
ＳＩＭＤプロセッサ３０４は、命令メモリユニット３０８及びデータメモリユニット３１０に接続されてもよい。各種実施例では、命令メモリ３０８はＳＩＭＤ命令を格納するよう構成され、データメモリユニット３１０は、２次元イメージ、３次元イメージ及び／又は動画に係るスカラー及びベクトルなどのデータを格納するよう構成されてもよい。各種実現形態では、命令メモリユニット３０８及び／又はデータメモリユニット３１０は、個別の命令及びデータキャッシュ、共有された命令及びデータキャッシュ、共通の共有キャッシュによってバックされた個別の命令及びデータキャッシュ又は他の何れかのキャッシュ階層に関連付けされてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００４２】
命令メモリユニット３０８及びデータメモリユニット３１０は、揮発性及び不揮発性メモリの双方を含むデータを格納可能な任意のコンピュータ可読記憶媒体から構成又は実現されてもよい。記憶媒体の具体例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＤＤＲＡＭ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ  ＤＲＡＭ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、フラッシュメモリ、ＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）、ポリマーメモリ（強誘電性ポリマーメモリ、オボニック（ｏｖｏｎｉｃ）メモリ、相変化又は強誘電性メモリなど）、ＳＯＮＯＳ（Ｓｉｌｉｃｏｎ−Ｏｘｉｄｅ−Ｎｉｔｒｉｄｅ−Ｏｘｉｄｅ−Ｓｉｌｉｃｏｎ）メモリ、ディスクメモリ（フロッピー（登録商標）ディスク、ハードドライブ、光ディスク、磁気ディスクなど）、カード（磁気カード、光カードなど）又は他の何れかのタイプの情報を格納するのに適した媒体があげられる。記憶媒体は、コンピュータプログラム、命令及びデータを格納するための各種コントローラ及び／又はマシーン可読記憶装置の各種組み合わせを含むかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００４３】
メディア処理装置３０２は、通信インタフェース３１２を有するかもしれない。通信インタフェース３１２は、メディア処理装置３０２を１以上のネットワーク及び／又はネットワーク装置に接続可能な何れか適切なハードウェア、ソフトウェア又はハードウェアとソフトウェアの組み合わせから構成されてもよい。各種実施例では、通信インタフェース３１２は、例えば、送信インタフェース、受信インタフェース、ＭＳＦ（Ｍｅｄｉａ  ａｎｄ  Ｓｗｉｔｃｈ  Ｆａｂｒｉｃ）インタフェース、ＳＰＩ（Ｓｙｓｔｅｍ  Ｐａｃｋｅｔ  Ｉｎｔｅｒｆａｃｅ）、ＣＳＩ（Ｃｏｍｍｏｎ  Ｓｗｉｔｃｈ  Ｉｎｔｅｒｆａｃｅ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｆａｃｅ）、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＩＥ（Ｉｎｔｅｒｎｅｔ  Ｅｘｃｈａｎｇｅ）インタフェース、ＦＩＣ（Ｆａｂｒｉｃ  Ｉｎｔｅｒｆａｃｅ  Ｃｈｉｐ）、ラインカード、ポート又は他の何れか適切なインタフェースなどの１以上のインタフェースから構成されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００４４】
各種実現形態では、通信インタフェース３１２は、メディア処理装置３０２を１以上の物理レイヤ装置及び／又はスイッチファブリック３１４に接続するよう構成されるかもしれない。メディア処理装置３０２は、ネットワークとスイッチファブリックの間のインタフェースを提供するかもしれない。メディア処理装置３０２は、スイッチファブリック３１４を介した送信のため、データに対して各種メディア処理を実行するようにしてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００４５】
各種実施例では、ＳＩＭＤ処理システム３００は、１以上のインデックス付けされたレジスタ、リージョンベースレジスタ及び／又はフラグレジスタへのフレキシブルなアクセス及びＳＩＭＤ命令機能を利用することによって、データレベル並列化を実現するかもしれない。各種実現形態では、例えば、ＳＩＭＤプロセッサシステム３００は、データの複数のブロック及び／又はマクロブロックを受け取り、ＳＩＭＤ方式によりブロックレベル及びマクロブロックレベル処理を実行するようにしてもよい。処理演算（比較演算など）の結果は、フレキシブルなフラグ構造を用いてフラグワードにパッキングされてもよい。ＳＩＭＤ処理は、ＳＩＭＤレジスタにパッキングされる各ブロックのフラグワードに対してパラレルに実行されるかもしれない。例えば、フラグワードに対するＬＺＤ（Ｌｅａｄｉｎｇ−Ｚｅｒｏ−Ｄｅｔｅｃｔｉｏｎ）演算などの命令を用いて、非ゼロ値係数の先行するゼロ値係数の個数が決定されてもよい。複数のブロックのフラグワードは、リージョンベースレジスタアクセス機能を用いてＳＩＭＤレジスタにパッキングされてもよい。複数のブロックの非ゼロ値の係数値のパラレルな移動は、複数のソース及び／又は複数のデスティネーションノードのリージョンベースレジスタアクセス及びマルチインデックスＳＩＭＤ移動命令を用いてパラレルに実行されるかもしれない。テーブル（ハフマンテーブルなど）ルックアップなどのパラレルなメモリアクセスは、データポートスキャッタギャザリング（ｓｃａｔｔｅｒ−ｇａｔｈｅｒｉｎｇ）機能を用いて実行されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００４６】
各種実施例の処理が、以下の図及び関連する具体例を参照してさらに説明される。図のいくつかは、ロジックフローを含むかもしれない。ロジックフローは記載された機能の実現方法の一例を単に提供するに過ぎないということが理解できる。さらに、与えられたロジックフローは、特段の記載がない場合、与えられた順序により必ずしも実行される必要はない。さらに、ロジックフローは、ハードウェア要素、プロセッサにより実行されるソフトウェア要素、又はこれらの何れかの組み合わせによって実現されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００４７】
図４は、ロジックフロー４００の一実施例を示す。図４は、メディア処理を実行するロジックフロー４００を示す。各種実施例では、ロジックフロー４００は、メディア処理ノードなどのメディア処理ノード及び／又はエントロピー符号化モジュール１２０などの符号化モジュールによって実行されるかもしれない。ロジックフロー４００は、マクロブロックのＳＩＭＤベース符号化から構成されるかもしれない。ＳＩＭＤベース符号化は、例えば、ＶＬＣ（ランレベルＶＬＣなど）、ＣＡＶＬＣ、ＣＡＢＡＣなどのエントロピー符号化から構成されてもよい。各種実現形態では、エントロピー符号化はランレベルシンボルのシーケンスとしてスキャンされた係数（変換された量子化及びスキャンした係数など）のシーケンスを表すかもしれない。各ランレベルシンボルは、レベルが非ゼロ値係数の値であり、ランが非ゼロ値係数に先行するゼロ値係数の個数であるランレベルペアから構成されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００４８】
ロジックフロー４００は、マクロブロックデータを入力すること（４０２）を有する。各種実施例では、マクロブロックは、Ｎ個のブロックを有し（例えば、ＹＵＶ４２０は６つのブロック、ＹＵＣ４４４は１２のブロックなど）、マクロブロックデータは、マクロブロックの各ブロックのスキャンされた係数（ＤＣＴ変換された量子化及びスキャンした係数など）のシーケンスを有するかもしれない。例えば、マクロブロックは６つのデータブロックを有し、各ブロックは、８×８の係数マトリックスから構成されるかもしれない。この場合、マクロブロックデータは、マクロブロックの各ブロックについて６４個の係数のシーケンスを有するかもしれない。各種実現形態では、マクロブロックデータは、ＳＩＭＤ方式によりパラレルに処理されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００４９】
ロジックフロー４００は、マクロブロックデータからフラグワードを生成すること（４０４）を有する。各種実施例では、ゼロとの比較がマクロブロックデータに対して実行され、この比較結果に基づきフラグワードが生成されるかもしれない。例えば、ゼロとの比較が、マクロブロックの各ブロックのスキャンされた係数のシーケンスに対して実行されるかもしれない。各フラグは、比較結果に基づき係数毎に１ビットを有するかもしれない。例えば、比較結果に基づく１と０とを有する６４ビットフラグワードが、８×８のブロックの６４個の係数から生成されるかもしれない。各種実現形態では、複数のフラグワードが、複数のブロックの比較結果をＳＩＭＤフレキシブルフラグレジスタにパッキングすることによって、ＳＩＭＤ方式によりパラレルに生成されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００５０】
ロジックフロー４００は、フラグワードを格納すること（４０６）を有する。各種実施例では、複数のブロックのフラグワードがパラレルに実行されるかもしれない。例えば、マクロブロックの６つのブロックに対応する６つの６４ビットフラグワードが、パラレルに格納されてもよい。各種実現形態では、複数のブロックのフラグワードが、リージョンベースレジスタアクセス機能を有するＳＩＭＤレジスタにフラグワードをパッキングすることによって、ＳＩＭＤ方式によりパラレルに格納されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００５１】
ロジックフロー４００は、すべてのフラグワードがゼロであるか判断すること（４０８）を有する。各種実施例では、フラグワードがゼロ値係数しか含まないか判断するため、各フラグワードに対して比較が行われるかもしれない。フラグワードがゼロ値を含むとき、ＥＯＢ（Ｅｎｄ  Ｏｆ  Ｂｌｏｃｋ）がブロックに対して到達したか判断されるかもしれない。各種実現形態では、複数のフラグワードに対して、複数の判定がパラレルに実行されるかもしれない。例えば、これらの判定は、６つの６４ビットフラグワードに対してパラレルに実行されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００５２】
ロジックフロー４００は、すべてのフラグワードが必ずしもゼロでない場合、フラグワードからラン値を決定すること（４１０）を有する。各種実施例では、ＬＺＤ演算がフラグワードに実行されるかもしれない。ＬＺＤ演算は、ＳＩＭＤ命令などを用いてＳＩＭＤ方式により実行されてもよい。ＬＺＤ演算の結果は、フラグワードの非ゼロ値係数に先行するゼロ値係数の個数から構成されるかもしれない。ラン値は、ｒｕｎ＝ＬＺＤ（フラグ）などのＬＺＤ演算の結果に基づき設定されるかもしれない。ラン値は、フラグワードに係るブロックのスキャンされた係数のシーケンスにおける非ゼロ値係数に先行するゼロ値係数の個数に対応するかもしれない。この結果、決定されたラン値は、フラグに係るブロックのランレベルシンボルに対して使用されるかもしれない。各種実現形態では、ＳＩＭＤ  ＬＺＤ演算は、ＳＩＭＤレジスタにパッキングされる複数のブロックの複数のフラグワードに対してパラレルに実行されるかもしれない。例えば、ＳＩＭＤ  ＬＺＤ演算は、６つの６４ビットフラグワードについてパラレルに実行されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００５３】
ロジックフロー４００は、ラン値に基づき係数のインデックス移動を実行すること（４１２）を有する。各種実施例では、インデックス移動は、ＳＩＭＤ命令などを用いてＳＩＭＤ方式により実行されるかもしれない。これらの係数は、ブロックのスキャンされた係数のシーケンスの非ゼロ値係数から構成されるかもしれない。ラン値は、ブロックのスキャンされた係数のシーケンスの非ゼロ値係数に先行するゼロ値係数の個数に対応するかもしれない。インデックス移動は、非ゼロ値係数を記憶場所（レジスタ）から出力に移すかもしれない。各種実施例では、非ゼロ値係数は、ブロックのランレベルシンボルのレベル値から構成されるかもしれない。各種実現形態では、インデックス移動処理は、複数のブロックに対してパラレルに実行されるかもしれない。インデックス移動は、例えば、複数のソース及び／又は複数のデスティネーションインデックスに対するリージョンベースレジスタアクセス及びマルチインデックスＳＩＭＤ移動命令を用いて実行されてもよい。マルチインデックスＳＩＭＤ移動命令は、条件付きで実行されてもよい。この条件は、ブロックのＥＯＢに到達したか否かにより判定されるかもしれない。ＥＯＢに到達した場合、当該ブロックに対して移動は実行されない。他方、ブロックのＥＯＢに到達していない場合、当該ブロックに対して移動が実行される。これらの実施例は上記コンテクストに限定されるものでない。
【００５４】
ロジックフロー４００は、インクリメントランのインデックスの格納を実行すること（４１４）を有する。各種実施例では、インデックス格納は、ＳＩＭＤ命令などを用いてＳＩＭＤ方式により実行されるかもしれない。インクリメントランは、スキャンされた係数のシーケンスの次の非ゼロ値係数を特定するため使用されるかもしれない。例えば、インクリメントランは、ブロックのスキャンされた係数のシーケンスからの非ゼロ値係数のインデックス移動を実行するとき利用されるかもしれない。各種実現形態では、インデックス格納処理が、複数のブロックに対してパラレルに実行されるかもしれない。マルチインデックスＳＩＭＤ格納命令は、条件付きにより実行されてもよい。この条件は、ブロックについてＥＯＢに到達したかによって判断されるものであるかもしれない。ブロックのＥＯＢに到達した場合、当該ブロックについて格納は実行されない。他方、ブロックのＥＯＢに到達していない場合、当該ブロックについて格納が実行される。これらの実施例は上記コンテクストに限定されるものでない。
【００５５】
ロジックフロー４００は、フラグワードの左シフトを実行すること（４１６）を有する。各種実施例では、ブロックのフラグワードから非ゼロ値係数を取り除くため、フラグに対して左シフトが実行されるかもしれない。左シフトは、ＳＩＭＤ命令などを用いてＳＩＭＤ方式により実行されるかもしれない。各種実現形態では、左シフト演算は、複数のブロックの複数のフラグワードに対してパラレルに実行されるかもしれない。ＳＩＭＤ左シフト命令は、条件付きにより実行されるかもしれない。この条件は、ブロックのＥＯＢに到達したか否かによって判断されるものであるかもしれない。ブロックのＥＯＢに到達した場合、ブロックのフラグワードに対して左シフトが実行される。他方、ブロックのＥＯＢに到達していない場合、ブロックのフラグに対して左シフトが実行される。これらの実施例は上記コンテクストに限定されるものでない。
【００５６】
ロジックフロー４００は、マクロブロックのブロックのすべてのランレベルシンボルを決定するため、１以上のパラレルループを実行することを有する。各種実施例では、パラレルループが、ＳＩＭＤループ機構を用いてＳＩＭＤ方式により実行されるかもしれない。各種実現形態では、条件ブランチが、ＳＩＭＤ条件ブランチ機構を用いてＳＩＭＤ方式により実行されるかもしれない。条件ブランチは、ブロックの処理が完了したとき、ループを終了及び／又はバイパスするのに利用されるかもしれない。この条件は、１つ、いくつか又はすべてのブロックに基づくものであるかもしれない。例えば、あるブロックに係るフラグワードがゼロ値係数しか有しないとき、条件ブランチは、他のブロックについて処理を継続することを可能にしながら、当該ブロックに関してさらなる処理の継続を停止するかもしれない。この処理は、以下に限定するものでないが、ラン値の決定、係数のインデックス移動及びインクリメントランのインデックス格納を含むかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００５７】
ロジックフロー４００は、すべてのフラグワードがゼロであるとき、ＶＬＣコードのアレイを出力すること（４１８）を有する。各種実施例では、ランレベルシンボルは、所定のハフマンテーブルに従ってＶＬＣコードに変換されてもよい。各種実現形態では、パラレルなハフマンテーブルのルックアップが、例えば、データポートのスキャッタギャザリング機能を用いてＳＩＭＤ方式により実行されてもよい。ＶＬＣコードのアレイは、マクロブロックのコードシーケンスを構成するため、ビットストリームパッキングモジュール１２２などのパッキングモジュールに出力されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００５８】
各種実現形態では、記載された実施例はＳＩＭＤ処理を用いてメディア符号化（ＶＬＣなど）のパラレルな実行を行うかもしれない。記載された実施例は、各種プロセッサアーキテクチャ（マルチスレッド及び／又はマルチコアアーキテクチャなど）及び／又は各種ＳＩＭＤ機能（ＳＩＭＤ命令セット、リージョンベースレジスタ、複数の独立したインデックスによるインデックスレジスタ、及び／又はフレキシブルフラグレジスタなど）から構成又は実現されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００５９】
各種実現形態では、記載された実施例はメディア符号化のためのスレッドレベル及び／又はデータレベルの並列化を実現し、これにより、処理パフォーマンスが向上する。例えば、マルチスレッドアプローチの実現形態は、処理コアの個数及び／又はハードウェアスレッドの個数に対してほぼリニアにマルチスレッド処理スピードを向上させる（例えば、１６コアプロセッサについては約１６×のスピードアップなど）。フラグワード及びＬＺＤ命令を用いたＬＺＤ検出の実現形態は、スカラーループ実現形態（約４〜１０×のスピードアップなど）に対して処理スピードを向上させるかもしれない。ＳＩＭＤ  ＬＺＤ演算及びブランチ／ループ機構を用いた複数のブロック（６ブロックなど）のパラレル処理は、ブロックシーケンシャルアルゴリズムに対して処理スピードを向上させるかもしれない（６×のスピードアップなど）。これらの実施例は上記コンテクストに限定されるものでない。
【００６０】
本発明の完全なる理解を提供するため、多数の具体的詳細が提供された。しかしながら、これらの実施例が上記具体的詳細なしに実現可能であるということは当業者により理解されるであろう。他の例では、実施例を不明りょうにしないため、周知の処理、コンポーネント及び回路は詳細には記載しなかった。ここに開示された特定の構成上及び機能上の詳細は典型的なものであって、実施例の範囲を必ずしも限定するものでないことは理解することができる。
【００６１】
各種実現形態では、記載された実施例は、有線通信システム、無線通信システム又はこれらの組み合わせの一部を構成するかもしれない。特定の実施例は特定の通信メディアを用いて示されたが、ここに記載された原理及び技術は各種通信メディアと関連する技術を用いて実現されてもよいということは理解されるであろう。
【００６２】
各種実現形態では、記載された実施例は、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＭＡＮ（Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、ワールド・ワイド・ウェブ、電話ネットワーク、ラジオネットワーク、テレビネットワーク、ケーブルネットワーク、衛星ネットワーク、ＷＰＡＮ（Ｗｉｒｅｌｅｓｓ  Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＷＡＮ（Ｗｉｒｅｌｅｓｓ  ＷＡＮ）、ＷＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＭＡＮ（Ｗｉｒｅｌｅｓｓ  ＭＡＮ）、ＣＤＭＡ（Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）セルラー無線電話通信ネットワーク、ＷＣＤＭＡ（Ｗｉｄｅｂａｎｄ  ＣＤＭＡ）などの第３世代（３Ｇ）ネットワーク、第４世代（４Ｇ）ネットワーク、ＴＤＭＡ（Ｔｉｍｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）ネットワーク、Ｅ−ＴＤＭＡ（Ｅｘｔｅｎｄｅｄ−ＴＤＭＡ）セルラー無線電話ネットワーク、ＧＳＭ（Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）セルラー無線電話ネットワーク、ＮＡＤＣ（ＮｏｒｔｈＡｍｅｒｉｃａｎ  Ｄｉｇｉｔａｌ  Ｃｅｌｌｕｌａｒ）セルラー無線電話ネットワーク、ＵＭＴＳ（Ｕｎｉｖｅｒｓａｌ  Ｍｏｂｉｌｅ  Ｔｅｌｅｐｈｏｎｅ  Ｓｙｓｔｅｍ）ネットワーク及び／又は他の何れかのデータを搬送するよう構成される有線若しくは無線通信ネットワークなどのネットワークの一部を構成するかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００６３】
各種実現形態では、記載された実施例は、１以上の有線通信メディアを介し情報を通信するよう構成されるかもしれない。有線通信メディアの具体例として、ワイヤ、ケーブル、プリント回路ボード（ＰＣＢ）、バックプレイン、スイッチファブリック、半導体物質、ツイストペアワイヤ、同軸ケーブル、光ファイバなどがあげられる。
【００６４】
各種実現形態では、記載された実施例は、１以上のタイプの無線通信メディアを介し情報を通信するよう構成されるかもしれない。無線通信メディアの一例は、無線周波数（ＲＦ）スペクトルなどの無線スペクトルの一部を含むかもしれない。このような実現形態では、記載された実施例は、１以上のアンテナ、無線送信機／受信機（送受信機）、アンプ、フィルタ、制御ロジックなどの指定された無線スペクトルを介し情報信号を通信するのに適したコンポーネント及びインタフェースを含むかもしれない。ここで使用される“送受信機”という用語は、送信機、受信機又はそれらの組み合わせを含むよう大変一般的な意味により使用され、アンテナ、アンプなどの各種コンポーネントを含むかもしれない。アンテナの具体例として、内部アンテナ、無指向性アンテナ、モノポールアンテナ、ダイポールアンテナ、終端給電アンテナ、円偏波アンテナ、マイクロストリップアンテナ、ダイバーシチアンテナ、デュアルアンテナ、アンテナアレイなどがあげられる。これらの実施例は上記コンテクストに限定されるものでない。
【００６５】
各種実施例では、通信メディアは、入出力（Ｉ／Ｏ）アダプタを用いてノードに接続されるかもしれない。Ｉ／Ｏアダプタは、所望される通信プロトコル、サービス若しくは動作手順群を用いて、ノード間における情報信号を制御するのに適した何れかの技術によって動作するよう構成されるかもしれない。Ｉ／Ｏアダプタはまた、Ｉ／Ｏアダプタを対応する通信メディアに接続するための適切な物理コネクタを含むかもしれない。Ｉ／Ｏアダプタの具体例として、ネットワークインタフェース、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）、ラインカード、ディスクコントローラ、ビデオコントローラ、オーディオコントローラなどがあげられる。これらの実施例は上記コンテクストに限定されるものでない。
【００６６】
各種実現形態では、記載された実施例は、メディア情報や制御情報などの１以上のタイプの情報を通信するよう構成されるかもしれない。メディア情報は、一般にイメージ情報、ビデオ情報、グラフィック情報、オーディオ情報、ボイス情報、テキスト情報、数値情報、英数字シンボル、キャラクタシンボルなどのユーザ向けのコンテンツを表す任意のデータを表すかもしれない。制御情報は、一般に自動化されたシステムのためのコマンド、命令又は制御ワードを表す任意のデータを表すかもしれない。例えば、制御情報は、システムを介しメディア情報をルーティングし、又はノードに特定の方法によりメディア情報を処理するよう指示するのに使用されるかもしれない。メディア及び制御情報は、いくつかの異なるデバイス又はネットワークの間で通信されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００６７】
いくつかの実現形態では、情報は、ＷＬＡＮのためのＩＥＥＥ８０２．１１ｘ（８０２．１１ａ，ｂ，ｇ／ｈ，ｊ，ｎ）及び／又はＷＭＡのための８０２．１６規格を含む１以上のＩＥＥＥ８０２規格に従って通信されるかもしれない。情報は、ＤＶＢ−Ｔ（Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｂｒｏａｄｃａｓｔｉｎｇ  Ｔｅｒｒｅｓｔｒｉａｌ）は威信規格及びＨｉｐｅｒＬＡＮ（Ｈｉｇｈ  ｐｅｒｆｏｒｍａｎｃｅ  ｒａｄｉ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）規格の１以上に従って通信されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００６８】
各種実現形態では、記載された実施例は、１以上のＩＥＥＥ８０２規格などによって規定されるような１以上のパケットプロトコルに従って、情報を通信するパケットネットワークの一部を構成するかもしれない。各種実施例では、パケットはＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）プロトコル、ＰＬＣＰ（Ｐｈｙｓｉｃａｌ  Ｌａｙｅｒ  Ｃｏｎｖｅｒｇｅｎｃｅ  Ｐｒｏｔｏｃｏｌ）、フレームリレイ、ＳＮＡ（Ｓｙｓｔｅｍｓ  Ｎｅｔｗｏｒｋ  Ａｒｃｈｉｔｅｃｔｕｒｅ）などを用いて通信されるかもしれない。いくつかの実現形態では、パケットは、ＴＣＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）及びＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、ＴＣＰ／ＩＰ、Ｘ．２５、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）などのインターネットプロトコルに従って通信可能である。これらの実施例は上記コンテクストに限定されるものでない。
【００６９】
いくつかの実施例は、例えば、マシーンにより実行される場合、マシーンに実施例による方法及び／又は処理を実行させる命令又は命令セットを格納可能なマシーン可読媒体又はものを用いて実現されてもよい。このようなマシーンは、例えば、何れか適切な処理プラットフォーム、計算プラットフォーム、計算装置、処理装置、計算システム、処理システム、コンピュータ、プロセッサなどを含むものであってもよく、ハードウェア及び／又はソフトウェアの何れか適切な組み合わせを用いて実現されてもよい。マシーン可読媒体又は物は、何れか適切なタイプのメモリユニット、記憶装置、記憶物、記憶媒体、ストレージ装置、ストレージもの、ストレージ媒体及び／又はストレージユニット、メモリ、着脱可能若しくは着脱不可な媒体、消去可能又は消去不可な媒体、書き込み可能若しくは書き換え可能な媒体、デジタル若しくはアナログ媒体、ハードディスク、フロッピー（登録商標）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  ＲＯＭ）、ＣＤ−Ｒ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ）、ＣＤ−ＲＷ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｗｒｉｔａｂｌｅ）、光ディスク、磁気媒体、光磁気媒体、着脱可能なメモリカード若しくはディスク、各種タイプのＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、テープ、カセットなどを含むかもしれない。命令は、何れか適切なハイレベル、ローレベル、オブジェクト指向、ビジュアル、コンパイル及び／又はインタープリットされたプログラミング言語を用いて実現されるかもしれない。これらの実施例は上記コンテクストに限定されるものでない。
【００７０】
一部の実施例は、所望の計算レート、パワーレベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード及び他のパフォーマンス制約などの任意数のファクタに従って可変的なアーキテクチャを用いて実現されてもよい。他の例では、ある実施例は、汎用又は特定用途向けプロセッサによって実行されるソフトウェアを利用して実現されるかもしれない。他の例では、回路、ＡＳＩＣ、ＰＬＤ、ＤＳＰなどの専用ハードウェアとして実施例が実現されるかもしれない。さらなる他の例では、プログラムされた汎用コンピュータコンポーネント及びカスタムハードウェアコンポーネントの何れかの組み合わせによって実施例が実現されてもよい。これらの実施例は上記コンテクストに限定されるものでない。
【００７１】
特に記載されない場合、“処理”、“計算”、“決定”などの用語は、計算システムのレジスタ及び／又はメモリ内の物理量（電子）として表されるデータを操作し、計算システムのメモリ、レジスタ又は他の同様の情報ストレージ、伝送又は表示デバイス内の物理量として同様に表される他のデータに変換するコンピュータ、計算システム又は同様の電子計算システムのアクション及び／又は処理を表すことは理解されるであろう。これらの実施例は上記コンテクストに限定されるものでない。
【００７２】
“一実施例”又は“ある実施例”という表現は、当該実施例に関して説明された特定の特徴又は構成が少なくとも１つの実施例に含まれていることを意味することに留意されたい。明細書の各箇所における“一実施例では”というフレーズの出現は、必ずしもすべてが同一の実施例を参照しているとは限らない。
【００７３】
実施例の特定の特徴が記載されたが、多くの改良、置換、変更及び均等が当業者に想到するであろう。従って、添付した請求項は実施例の真の趣旨に属するすべての改良及び変更をカバーすることが理解されるべきである。
【図面の簡単な説明】
【００７４】
【図１】図１は、ノードの一実施例を示す。
【図２】図２は、メディア処理の一実施例を示す。
【図３】図３は、システムの一実施例を示す。
【図４】図４は、ロジックフローの一実施例を示す。
【図１】
2008541663.tif 000003
【図２】
2008541663.tif 000004
【図３】
2008541663.tif 000005
【図４】
2008541663.tif 000006
【国際調査報告】
2008541663.tif 000007
2008541663.tif 000008
2008541663.tif 000009