(57)【要約】  本発明によるビデオプロセッサは、プロセッサの動作が依存するビデオデータの属性に関して動的に構成可能である。いくつかの実施形態では、命令シーケンスを通じてプロセッサを動的に構成し、この場合、命令には、現在のビデオデータの属性に関する情報が含まれている。いくつかの実施形態は、動き検出の前にビデオデータに適用されるフィルタリング機能（例：入力されるビデオの補間又は間引き）を計算する、動的に構成可能な加算器の配列を含んでいる。本発明のいくつかの実施形態は、例えば、動きを検出するための動的に構成可能なハードウェア探索を提供する。本発明のいくつかの実施形態は、適応コンピューティングマシン（ＡＣＭ）を使用して実施されている。ＡＣＭは、それぞれが相互接続ネットワークに結合されている複数の異種の計算要素を含んでいる。【選択図】  図１
2007538431.tif 000002
【特許請求の範囲】
【請求項１】
デジタルプロセッサにおけるドメインビデオユニットであって、明細書に実質的に記載されている複数のコンポーネントの相互接続を備えており、コンポーネントが、参照画素のメモリ、現在の画素のメモリ、マルチプレクサ、動き推定プロセッサ、補間プロセッサ、データ書式設定器、のうちの１つ以上である、ドメインビデオユニット。
【請求項２】
前記複数のコンポーネントの少なくとも１つが再構成可能である、請求項１に記載のドメインビデオユニット。
【請求項３】
前記少なくとも１つの動き推定プロセッサが、差の合計のプロセッサを備えている、請求項１に記載のドメインビデオユニット。
【請求項４】
前記少なくとも１つのマルチプレクサがペル・マルチプレクサを備えている、請求項１に記載のドメインビデオユニット。
【請求項５】
前記動き推定プロセッサが、一度に１つの画素処理、又は同時画素処理のうちの少なくとも一方を実行するように構成可能である、請求項１に記載のドメインビデオユニット。
【請求項６】
前記少なくとも１つの動き推定プロセッサが、ハードワイヤード探索パターンと選択可能な探索パターンのうちの少なくとも一方に従った処理を実施するように構成可能である、請求項１に記載のドメインビデオユニット。
【請求項７】
前記少なくとも１つの動き推定プロセッサが、当該ドメインビデオユニットによって生成される選択可能な探索パターンに従って処理を実行する、請求項５に記載のドメインビデオユニット。
【請求項８】
ノードラッパーを更に備えている、請求項１に記載のドメインビデオユニット。
【請求項９】
様々な属性を有するデジタルビデオデータのプロセッサであって、
前記ビデオデータを処理する手段と、
前記ビデオデータの前記属性を調べて、前記属性に従って動作するように前記処理手段を動的に構成する手段と、
を備えている、プロセッサ。
【請求項１０】
前記ビデオデータが、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｖｉｄｅｏ（ＷＭＶ）、Ｘ．２６４の少なくとも１つのバージョンから選択される形式を有する、請求項９に記載のビデオプロセッサ。
【請求項１１】
前記ビデオデータが、約１／４ＣＥＬ（例：携帯電話の写真）の解像度と、高精細テレビ（ＨＤＴＶ）の１つのバージョンによって定義される解像度との間の解像度から選択される解像度を有する、請求項９に記載のビデオプロセッサ。
【請求項１２】
前記プロセッサが、符号化手段、復号化手段、圧縮手段、トランスコーディング手段のうちの少なくとも１つから選択される、請求項９に記載のビデオプロセッサ。
【請求項１３】
前記ビデオデータの前記属性に従って動的に構成可能である前記属性の１つが、加算器の配列である、請求項９に記載のビデオプロセッサ。
【請求項１４】
前記ビデオデータの前記属性に従って動的に構成可能である前記属性の１つが、前記ビデオデータ用のフィルタである、請求項９に記載のビデオプロセッサ。
【請求項１５】
前記ビデオデータの前記属性に従って動的に構成可能である前記手段の１つが、差の絶対値の合計（ＳＡＤ）のコンピューティング手段である、請求項９に記載のビデオプロセッサ。
【請求項１６】
プログラマブルである前記手段の１つが動き検出手段である、請求項９に記載のビデオプロセッサ。
【請求項１７】
前記プロセッサが適応コンピューティングマシン（ＡＣＭ）に基づいて実装されている、請求項９に記載のビデオプロセッサ。
【請求項１８】
様々な属性を有するデジタルビデオデータのプロセッサであって、
命令シーケンスを保持するように構成されているメモリ又はキューと、
ビデオデータに対して動作するように構成されているプロセッサと、
前記命令のうち現在の命令を復号化するようにと、そこから前記ビデオデータの前記属性を求めるようにと、前記属性に従って動作するように前記プロセッサを動的に構成するように構成されている命令復号器及び動作制御回路と、
を備えている、プロセッサ。
【請求項１９】
前記ビデオデータが、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｖｉｄｅｏ（ＷＭＶ）、Ｘ．２６４の少なくとも１つのバージョンから選択される形式を有する、請求項１８に記載のビデオプロセッサ。
【請求項２０】
前記ビデオデータが、約１／４ＣＥＬ（例：携帯電話の写真）の解像度と、高精細テレビ（ＨＤＴＶ）の１つのバージョンによって定義される解像度との間の解像度から選択される解像度を有する、請求項１８に記載のビデオプロセッサ。
【請求項２１】
前記プロセッサが、符号器、復号器、圧縮器、トランスコーダのうちの少なくとも１つから選択される、請求項１８に記載のビデオプロセッサ。
【請求項２２】
前記ビデオデータの前記属性に従って動的に構成可能である前記属性の１つが、加算器の配列である、請求項１８に記載のビデオプロセッサ。
【請求項２３】
前記ビデオデータの前記属性に従って動的に構成可能である前記属性の１つが、前記ビデオデータのフィルタである、請求項１８に記載のビデオプロセッサ。
【請求項２４】
前記ビデオデータの前記属性に従って動的に構成可能である前記属性の１つが、差の絶対値の合計（ＳＡＤ）の計算器である、請求項１８に記載のビデオプロセッサ。
【請求項２５】
プログラマブルである前記属性の１つが動き検出器である、請求項１８に記載のビデオプロセッサ。
【請求項２６】
前記プロセッサが適応コンピューティングマシン（ＡＣＭ）に基づいて実装されている、請求項１８に記載のビデオプロセッサ。
【請求項２７】
様々な属性を有するデジタルビデオデータのプロセッサであって、
１セットのビデオデータの中の参照ブロックを、同じセット又は異なるセットのビデオデータの中の一連の領域と比較するように構成されているハードウェア探索エンジンであって、前記ビデオデータの前記属性が動的に構成可能である、前記ハードウェア探索エンジンと、
プログラマブルな手段、すなわち、命令、レジスタ値、制御信号、又はプログラマブルなリンクによって指定されているように、前記データの前記属性に従って加算器の配列を制御するように構成されている制御回路と、
を備えている、プロセッサ。
【請求項２８】
前記制御回路が、
現在の一連の命令を復号化するようにと、そこから前記ビデオデータの前記属性を求めるようにと、前記属性に従って処理するように前記処理手段を制御するように構成されている復号器、
を含んでいる、請求項２７に記載のプロセッサ。
【請求項２９】
前記プロセッサが、前記セット内の領域の数と、複数の異なる領域の間の相対的なオフセットとに関して動的に構成可能である、請求項２７に記載のビデオプロセッサ。
【請求項３０】
前記ハードウェア探索エンジンが動き検出器として使用されるようにされている、請求項２７に記載のビデオプロセッサ。
【請求項３１】
前記ビデオデータが、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｖｉｄｅｏ（ＷＭＶ）、Ｘ．２６４の少なくとも１つのバージョンから選択される形式を有する、請求項２７に記載のビデオプロセッサ。
【請求項３２】
前記ビデオデータが、約１／４ＣＥＬ（例：携帯電話の写真）の解像度と、高精細テレビ（ＨＤＴＶ）の１つのバージョンによって定義される解像度との間の解像度から選択される解像度を有する、請求項２７に記載のビデオプロセッサ。
【請求項３３】
前記プロセッサが適応コンピューティングマシン（ＡＣＭ）に基づいて実装されている、請求項２７に記載のビデオプロセッサ。
【発明の詳細な説明】
【関連出願の参照】
【０００１】
[01]本出願は、米国仮特許出願第６０／５７０，０８７号明細書「適応コンピューティングマシンのデジタルビデオノード（Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｎｏｄｅ  ｆｏｒ  Ａｎ  Ａｄａｐｔｉｖｅ  Ｃｏｍｐｕｔｉｎｇ  Ｍａｃｈｉｎｅ）」（Ｍａｓｔｅｒら）、米国特許出願第（未記載）号明細書「ビデオデータのプロセッサ（Ｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ｖｉｄｅｏ  Ｄａｔａ）」（Ｍａｓｔｅｒら、出願日：２００５年５月９日）、米国特許出願公開第２００３／０１１５５５３号明細書「制御コードの実行に有限状態機械を選択的に使用するコンピュータプロセッサアーキテクチャ（Ｃｏｍｐｕｔｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｅｌｅｃｔｉｖｅｌｙ  Ｕｓｉｎｇ  Ｆｉｎｉｔｅ−Ｓｔａｔｅ−Ｍａｃｈｉｎｅ  ｆｏｒ  Ｃｏｎｔｒｏｌ  Ｃｏｄｅ  Ｅｘｅｃｕｔｉｏｎ）」（Ｍａｓｔｅｒら）、米国特許出願第２００４／００９３６０１号明細書「適応集積回路及び対応する制御情報又は構成情報を開発及びスケジューリングする方法、システム、及びプログラム（Ｍｅｔｈｏｄ，  Ｓｙｓｔｅｍ  ａｎｄ  Ｐｒｏｇｒａｍ  ｆｏｒ  Ｄｅｖｅｌｏｐｉｎｇ  Ａｎｄ  Ｓｃｈｅｄｕｌｉｎｇ  Ａｄａｐｔｉｖｅ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｒｙ  ａｎｄ  Ｃｏｒｒｅｓｐｏｎｄｉｎｇ  Ｃｏｎｔｒｏｌ  ｏｒ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ）」（Ｍａｓｔｅｒら）、米国特許出願公開第２００４／０１７７２２５号明細書「外部メモリコントローラノード（Ｅｘｔｅｒｎａｌ  Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｎｏｄｅ）」（Ｍａｓｔｅｒら）、米国特許出願公開第２００４／０１８１６１４号「適応コンピューティング環境における入出力コントローラノード（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｎｏｄｅ  ｉｎ  ａｎ  Ａｄａｐｔａｂｌｅ  Ｃｏｍｐｕｔｉｎｇ  Ｅｎｖｉｒｏｎｍｅｎｔ）」（Ｍａｓｔｅｒら）からの優先権を請求するものである。
【０００２】
[02]これらの出願と、米国特許第６，８３６，８３９号明細書「アプリケーションに固有の固定的なコンピューティング要素を有する、異種の再構成可能な様々な適応計算ユニットのマトリクスを備えた適応集積回路（Ａｄａｐｔｉｖｅ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｒｙ  ｗｉｔｈ  Ｈｅｔｅｒｏｇｅｎｅｏｕｓ  ａｎｄ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｍａｔｒｉｃｅｓ  ｏｆ  Ｄｉｖｅｒｓｅ  ａｎｄ  Ａｄａｐｔｉｖｅ  Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｕｎｉｔｓ  Ｈａｖｉｎｇ  Ｆｉｘｅｄ，  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｅｌｅｍｅｎｔｓ）」（Ｍａｓｔｅｒら）は、あらゆる目的に、本文書に参考とすることにより組み込まれる。
【発明の背景】
【０００３】
[03]今日の世界では、ビデオ（Ｖｉｄｏｅ：動画像）情報はあらゆる場所に存在する。子供は、映像用として作成されたテレビ番組や教材から学習する。大人は、娯楽のため、或いは現在の出来事から遅れないように映像を使用する。ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、デジタルケーブルテレビ、及び衛星テレビでは、映像情報を記録及び配信するのに、古いアナログ機構とは対照的にデジタルビデオデータを使用する。デジタルビデオデータは、今日のホーム環境及びオフィス環境においてますます普及しつつある。
【０００４】
[04]デジタルビデオデータの処理に関与する数値計算量には、膨大な計算パワーが要求される。一般的な画質の映像１秒分のデジタルビデオデータを生成するためには、数千万〜１０億回の算術計算を実行する必要がある。
【０００５】
[05]ビデオの計算は、ハードウェアを使用することにより、デジタルビデオデータ用のソフトウェアの符号器、復号器、トランスコーダと比較して高速化することができる。しかしながら、ハードウェアの一般的な設計方法は、１つの特定の解像度における１つの特定の形式のビデオデータに対して機能するのみである。従って、様々な解像度、標準・規格、形式のビデオデータに対して機能するハードウェアのニーズが存在している。
【発明の概要】
【０００６】
[06]本発明の様々な実施形態は、ビデオデータを処理するシステム及び方法を提供する。好ましい実施形態においては、ビデオプロセッサは、様々な属性を有するビデオデータに対して動作するように実行時に構成される。これらのストリームは、例えば、形式、規格・標準、解像度、符号化、圧縮などの属性の様々な組合せを有することができる。本ビデオプロセッサは、動的な制御機構、例えば、プログラム、或いはレジスタに保持されている動的に構成可能な値（ただしこれらに限定されない）に従って、様々なビデオデータストリームに対して動作する。
【０００７】
[07]本発明のいくつかの実施形態は、命令シーケンスを通じて動的に構成することのできるビデオプロセッサであって、命令が、現在のビデオデータの属性に関する情報を含んでいる、ビデオプロセッサを提供する。ビデオプロセッサは、指定されている属性を有するビデオデータを受け取るように、又は、指定されている属性を有するビデオデータを生成するように、又は、その両方を行うように、この情報によって構成される。
【０００８】
[08]ビデオプロセッサの動作は、少なくとも１つの命令シーケンスによって制御される。複数のシーケンスを同時に使用することができ、それによって、プロセッサは、属性の異なるビデオストリームを同時に生成する、若しくは同時に受け取る、又はその両方を行うことができる。
【０００９】
[09]本発明のいくつかの実施形態においては、１つ以上の制御プロセッサが、命令シーケンスをビデオプロセッサに提供する。制御プロセッサ及びビデオプロセッサは、コプロセッサとして協働するようにされている。これに代えて、又はこれに加えて、命令シーケンスを、ビデオプロセッサに関連付けられている１つ以上の命令メモリ又はキューに格納することができる。
【００１０】
[10]本発明のいくつかの実施形態は、制御機構、例えば、命令、レジスタ値、制御信号、プログラマブルリンク（ただしこれらに限定されない）を通じて動的に構成することのできる加算器の配列を提供する。プロセッサによって加算器の配列にビデオデータが送られると、配列は、ビデオデータを処理するのに必要な数値計算、論理計算、又は逐次計算の結果を生成する。
【００１１】
[11]本発明のいくつかの実施形態においては、加算器の配列を使用して様々な機能を計算することによって、誤りベクトルを生成する。誤りベクトルは、時間的に関連している一連のビデオデータの間で動きを検出するために使用することができる。更に、誤りベクトルは、出力されるビデオに符号化される未処理データの計算にも使用することができる。
【００１２】
[12]本発明のいくつかの実施形態においては、加算器の配列は、ビデオデータに適用されるフィルタリング機能の計算にも使用されている。そのようなフィルタリング機能としては、動き検出前の入力ビデオの補間又は間引き（ｄｅｃｉｍａｔｉｏｎ）が挙げられる（ただしこれらに限定されない）。
【００１３】
[13]間引き又は補間されたペルを使用して、入力ビデオとは異なる属性を有する出力ビデオを生成することができる。これに代えて、又はこれに加えて、符号化プロセス又は圧縮プロセスの間のみ存続する間引きされたペル、又は補間されたペルを使用して、出力ビデオの精度或いは視聴上の品質を高めることができる。そのような用途としては、最初のトップレベルの動きスキャン（ｔｏｐ−ｌｅｖｅｌ  ｍｏｔｉｏｎ  ｓｃａｎ）時に入力ビデオの解像度を下げることに基づいて動き検出の性能を高める階層的手法や、動き検出の精度を高める補間手法が挙げられる（ただしこれらに限定されない）。
【００１４】
[14]本発明のいくつかの実施形態は、動的に構成可能なハードウェア探索動作を提供する。そのような動作は、ビデオを符号化するときに、様々な目的で、例えば、時間的に関連している一連のビデオデータの間で動きを検出する目的で（ただしこれに限定されない）、使用することができる。１回のハードウェア動作においては、１セットのビデオデータの中の参照ブロックを、同じセット又は異なるセットのビデオデータの中の一連の領域と比較する。ビデオデータの属性を動的に構成できることに加えて、セット内の領域の数と、複数の異なる領域の間の相対的なオフセットとを動的に構成することができる。
【００１５】
[15]本発明のいくつかの実施形態は、適応コンピューティングマシン（ＡＣＭ）を使用して実施されている。ＡＣＭは、それぞれが相互接続ネットワークに結合されている複数の異種の計算要素を含んでいる。
【００１６】
[16]本明細書の説明を添付の図面を参照しながら読むことによって、本発明の様々な実施形態の目的、特徴、及び利点が明らかになるであろう。図面には、本発明に関連する技術、本発明の例としての実施形態、本発明の例としての使用法を図解してある。
【詳細な説明】
【００１７】
[60]本明細書における説明及び図は、本発明に関連する技術を解説しており、本発明の例及び本発明の使用例を示している。公知の方法、手順、システム、回路、要素については、本発明の原理があいまいになることを避けるため、概略的に図解及び説明してある。これに対して、本発明の具体的な実施形態については、細部が本発明の他の実施形態とは異なる場合にも、詳細に説明してある。
【００１８】
[61]本明細書の説明においては、抽象的な用語又は一般的な用語、例えば、受け取る、提示する、促進する、生成する、はい、いいえ（ただしこれらに限定されない）を使用している。そのような用語は、当業者には、コンピュータやデジタルデバイス、電気機械システムにおけるコンポーネント、データ、或いは動作を表す便利な術語として使用されている。そのようなコンポーネント、データ、及び動作は、実際の物体の物理特性、例えば、電子電圧（ｅｌｅｃｔｒｏｎｉｃ  ｖｏｌｔａｇｅ）、磁界、光の反射率（ただしこれらに限定されない）に具体化されている。同様に、知覚的或いは感覚的な用語、例えば、比較する、決定する、計算する、制御する（ただしこれらに限定されない）を使用して、そのようなコンポーネントやデータ、動作、或いはそのような物理的操作を言い表すこともできる。
【００１９】
[62]図１は、本発明の実施形態によるビデオプロセッサの高レベル機能のブロック図を示している。ビデオプロセッサ１００は、ビデオデータへのネットワークアクセスを維持又は提供する１つ以上のビデオデータデバイス１１０と、１つ以上のビデオ計算エンジン１２０と、現在のステータス情報を保持する１つ以上のデバイス１３０と、１つ以上の制御モジュール１４０と、制御・構成データへのネットワークアクセスを維持又は提供する１つ以上の制御・構成データデバイス１５０とを含んでいる。
【００２０】
[63]ビデオデータ１１０は、入力ビデオデータ１１２と、出力ビデオデータ１１４と、中間結果１１６とを含んでいる（ただしこれらに限定する必要はない）。本発明の様々な実施形態においては、ビデオデータ１１０は、ビデオプロセッサ１００の他のデバイスと同じ集積回路内のメモリモジュール、その集積回路の外部のメモリデバイス、レジスタファイル、又はデータを保持するその他の回路、のうちの１つ以上に保持されている。
【００２１】
[64]ビデオ計算エンジン１２０は、入力マルチプレクサ１２２と、フィルタ機能回路１２４と、動き探索回路１２６と、誤差、例えば差の絶対値の合計（ＳＡＤ：ｓｕｍ  ｏｆ  ａｂｓｏｌｕｔｅ  ｄｉｆｆｅｒｅｎｃｅｓ）計算回路１２７と、出力書式設定回路１２８とを含んでいる（ただしこれらに限定する必要はない）。動き推定エンジン１２０は、入力ビデオデータ１１２及び中間結果１１６を受け取り、中間結果１１６及び出力ビデオ１１４を生成する。
【００２２】
[65]結果１１６，１１４を生成する目的でビデオ計算エンジン１２０が受け取ったデータに適用される処理機能及び演算は、制御信号１４６によって制御される。エンジン１２０の様々な実施形態は、信号１４６の制御下で、様々な機能、例えば、符号化、復号化、トランスコーディング、動き推定を実行する（ただしこれらに限定されない）。
【００２３】
[66]ビデオ入力１１２、ビデオ出力１１４、及び中間結果１１６の属性は、制御信号１４６によって指定される。これらの属性としては、形式、規格・標準、解像度、符号化、圧縮度が挙げられる（ただしこれらに限定する必要はない）。
【００２４】
[67]制御信号１４６は、制御・構成データ１５０と現在のステータスデータ１３０とに基づいて制御モジュール１４０によって生成される。制御モジュール１４０は、ハードウェアタスクマネージャ１４２と、有限状態機械１４４と、コマンド復号器１４６とを含んでいる（ただしこれらに限定する必要はない）。
【００２５】
[68]現在のステータス１３０としては、ビデオデータ１１０の中の様々なデータ項目が処理可能な状態にあることを示すステータスと、制御・構成データ１５０の中の様々なデータ項目が、ビデオデータ１１０に適用される処理動作を制御できる状態にあることを示すステータスが挙げられる（ただしこれらに限定する必要はない）。様々な処理はビデオデータ及び制御・構成データが適用可能な状態にあるときに行われるため、現在のステータス１３０によって計算のデータフローモデルが導入される。
【００２６】
[69]制御・構成データ１５０としては、コマンドシーケンス１５２と、タスクパラメータリスト１５４と、アドレス及びポインタ１５６とが挙げられる（ただしこれらに限定する必要はない）。アドレス及びポインタ１５６は、ビデオデータ１１０又は制御・構成データ１５０、或いはその両方のデータの中の様々なデータ項目を指す。本発明の様々な実施形態においては、ビデオデータ１１０は、ビデオプロセッサ１００の他のデバイスと同じ集積回路内のメモリモジュール、その集積回路の外部のメモリデバイス、レジスタファイル、又はデータを保持するその他の回路或いはデバイス、のうちの１つ以上に保持されている。
【００２７】
[70]ビデオデータ１１０の様々な構成要素は、様々な属性、例えば、形式、規格・標準、解像度を有する（ただしこれらに限定する必要はない）。ビデオデータ１１０の中の構成要素の形式は、ＭＰＥＧ−２、ＭＰＥＧ−４の１つのバージョン、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｖｉｄｅｏ（ＷＭＶ）の１つのバージョン、ＩＴＵ−Ｔ（国際電気通信連合）規格Ｘ．２６４の１つのバージョンのうちの少なくとも１つを含んでいることができる。Ｘ．２６４は、この規格の開発を先導しているグループの後、ＪＶＴ（Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ：ジョイントビデオチーム）としても知られている。また、Ｘ．２６４は、ＩＳＯ／ＩＥＣ（国際標準化機構／国際電気標準会議）規格であるＭＰＥＧ−４（Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ  Ｌａｙｅｒ  ４）Ｐａｒｔ  １０としても知られている。ビデオデータ１１０の中の構成要素は、約１／４ＣＥＬ（例えば携帯電話によって撮影される静止画像に使用される）と、高精細テレビ（ＨＤＴＶ）の１つのバージョンによって定義される解像度との間の任意の解像度を有することができる。
【００２８】
[71]適応コンピューティングマシン（ＡＣＭ）は、同種のネットワークによって接続されている異種のノードを含んでいる。そのような異種のノードとしては、ドメインビデオノード（ＤＶＮ）が挙げられる（ただしこれに限定されない）。そのような同種のネットワークとしては、マトリクス相互接続ネットワーク（ＭＩＮ：ｍａｔｒｉｘ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｎｅｔｗｏｒｋ）が挙げられる（ただしこれに限定されない）。本発明のいくつかの実施形態のいくつかの側面、例えばＭＩＮ、或いは適応コンピューティングマシン（ＡＣＭ）の他の側面については、関連出願として先に引用した特許明細書及び特許出願明細書に更に説明してある。
【００２９】
[72]ドメインビデオノード（ＤＶＮ）は、ＡＣＭにおける１つのノード型として実施することができ、又は、任意の適切なハードウェア設計手法若しくはソフトウェア設計手法、又はその両方において実施することができる。例えば、本発明の実施形態の機能は、個別の回路として、或いは集積回路（例：カスタム、セミカスタム、その他）、プログラマブルなゲートアレイ、ＡＳＩＣ（特定用途向け集積回路）、又はその他として設計することができる。機能は、必要に応じて、ハードウェアによって、若しくはソフトウェアによって、又はその両方の組合せによって実行することができる。本明細書に説明した様々な機能は、都合よく単独で使用する、又は別の機能（例：先行技術において公知の機能、今後開発される機能）との組合せ或いはサブコンビネーションにおいて使用することができる。ＤＶＮは、ＡＳＩＣに匹敵するパワーエリア性能指標値を達成する再構成可能なデジタルビデオプロセッサである。
【００３０】
[73]１つの実施形態においては、ＤＶＮはＡＣＭに含まれており、再構成可能であるという付加的な利点を有し、これによってＤＶＮは、一般に使用されている動き推定アルゴリズムを複数実行することができる（同じ機能を達成するためには場合によっては複数のＡＳＩＣが必要となる）。しかしながら、別の実施形態においては、ＤＶＮ、又はＤＶＮの一部或いは機能を、任意の適切な方法（例：構成可能ではない設計、部分的に構成可能な設計）において実施することができる。
【００３１】
[74]ビデオの処理には、特にフレーム解像度が高い場合には相当な計算パワーが要求される動き推定ステップが含まれる。ドメインビデオノード（ＤＶＮ）は、ＡＣＭのノード型のうち、動き推定機能及びその他のビデオ処理機能の実行を提供するノードである。
【００３２】
[75]図２は、ＤＶＮの簡略化したブロック図を示している。動き推定は、現在のフレームのピクセル（すなわちペル）のブロックを、前のフレーム又は次のフレーム、又はその両方のブロックと比較して、変形（ｄｉｓｔｏｒｔｉｏｎ）が最小である１つ以上のブロックを特定するステップから成る。そのような比較は、例えば、選択基準として一般に使用されている「差の絶対値の合計」（ＳＡＤ）指標値（ｍｅｔｒｉｃ）を含んでいることができる。
【００３３】
[76]ＤＶＮは、クロックサイクルごとに１６回のＳＡＤ演算を可能とする８個の２ＫＢのノードメモリを含んでいる。更に、これにより、各次元における±１６ペルの探索領域について、１６×１６の現在のブロック（マクロブロック）と４８×４８の参照ブロックに対して、重複したデータの入力及び計算と結果の出力とを行うためのダブルバッファリングも可能である。
【００３４】
[77]ＤＶＮの動作には、１）フルペル（ｆｕｌｌ  ＰＥＬ）探索、２）１８×１８フルペルから３３×３３ハーフペル（ｈａｌｆ  ＰＥＬ）への双一次補間、３）ハーフペル探索、４）最良の指標値及びそれに対応する１６×１６マクロブロックの原点を指定されているノードに出力し、１６×１６マクロブロック自体を復号器の動き補償エンジンに出力する、が含まれている。
【００３５】
[78]フルペル探索：ＤＶＮは、フルペル探索の２つの動作モードをサポートする。一方のモードでは、１６×１６ポジションのそれぞれを一度に評価し、クロック周期ごとに１６回のＳＡＤ演算を実行する。第２のモードでは、隣り合う４０個のポジションを同時に評価し、クロック周期ごとに１６０回のＳＡＤ演算を実行する。いずれのモードの場合も、評価は、現在の１６×１６マクロブロックと、４８×４８の参照ブロックの１０８９の１６×１６マクロブロックのうちの１つとの間の「差の絶対値の合計」（ＳＡＤ）指標値を計算し、最良の指標値及びそれに対応する１６×１６マクロブロックの原点とをつねに保存するステップから成る。
【００３６】
[79]いずれのモードにおいても、探索パターンは、複数のハードワイヤードパターン（ｈａｒｄｗｉｒｅｄ  ｐａｔｔｅｒｎ）、又は、ノードによって生成されるｘ，ｙ座標（原点）のリスト（ＤＶＮ内に配置されているキューに格納されている）によって指定される複数のポジションとすることができる。様々なキューデータ構造を使用することができ、様々な早期完了方式をサポートすることができる。
【００３７】
[80]４８×４８の参照ブロックの中には、１０８９個の候補探索ポジションが存在する。図３には、相対座標Ｈ（０），Ｖ（０）を有する「中央」ポジションを示してある。図４には、５つの探索ポジション、すなわち、中央ポジション（Ｈ（０），Ｖ（０））、左上ポジション（Ｈ（−１６），Ｖ（−１６））、右上ポジション（Ｈ（＋１６），Ｖ（−１６））、左下ポジション（Ｈ（−１６），Ｖ（＋１６））、右下ポジション（Ｈ（＋１６），Ｖ（＋１６））を強調して示してある。
【００３８】
[81]図５は、４０個のポジション、すなわち４８×４８の参照ブロックの中央における８×５のポジションを同時に探索する例を示している。
【００３９】
[82]図６は、参照ブロックの中央における９セットの４０個のポジションを探索する例を示している。水平探索範囲は−１２〜＋１１であり、垂直探索範囲は−７〜＋７であり、探索されるポジションの合計数は３６０である。
【００４０】
[83]ハーフペル双一次補間：変形指標値が最良である１６×１６マクロブロックを求めるフルペル探索の後、周囲の１８×１８ペルの配列に対して双一次補間を実行し、図７に示したように３３×３３ハーフペル配列を得る。図８は、ハーフペル双一次補間において使用する計算についてまとめてある。
【００４１】
[84]ハーフペル探索：双一次補間を実行した後、ＤＶＮは、９個の候補ハーフペルポジションのそれぞれのＳＡＤ指標値を計算する。図９は、ハーフペルデータの番号付け規則を示している。この図では、フルペルポジション（ポジション「５」）の指標値はすでに計算されている。従って、ハーフペル探索では、それ以外の８個のハーフペルポジションのそれぞれのＳＡＤ指標値を生成し、９個の候補のうち指標値が最良である候補を求める。
【００４２】
[85]結果の出力：３３×３３ハーフペル配列の中の最良の指標値及びそれに対応する１６×１６マクロブロックの原点とを、指定されているノードに出力する。１６×１６マクロブロック自体は、復号器の動き補償エンジンに出力する。
【００４３】
[86]ＤＶＮの動作の要約：ＤＶＮは、ＱＳＴノードラッパー（ＱＳＴ  Ｎｏｄｅ  Ｗｒａｐｐｅｒ）と、８個の２ＫＢのノードメモリ（それぞれ３２ビットの５１２ワードとして編成されている）と、動き推定エンジン（ＭＥ）とを含んでいる。動き推定エンジンは、上に概説したフルペル探索と、双一次補間と、ハーフペル探索とを実行する。動き推定エンジンは、最良の指標値及びそれに対応する１６×１６マクロブロックの原点を、指定されているノードに出力し、１６×１６マクロブロック自体を復号器の動き補償エンジンに出力する。
【００４４】
[87]８個のノードメモリのそれぞれは、完全に重複したデータ入力及び計算と結果出力とが可能であるように、ピンポンバッファ対（ｐｉｎｇ  ｐｏｎｇ  ｂｕｆｆｅｒ  ｐａｉｒ）に分割されている。指定されているメモリから８個のＤＶＮメモリに１つのデータセットが転送された後、ＤＶＮの動き推定エンジンは、その計算を実行して結果を出力する。この間に、次のデータセットが別のシステムメモリから８個のＤＶＮメモリに転送され、以下同様である。
【００４５】
[88]各データセットは、４８×４８ペルの配列（参照ブロック）と、１６×１６ペルの配列（現在のブロック）とから成る。これらのデータは、動き推定エンジンからデータへのアクセスが最適化されるような方式で８個のノードメモリの間で分散されている。動き推定エンジンからデータへのアクセスには、一般的には、クロック周期ごとに８個のノードメモリのそれぞれからの４バイトデータへのアクセスが含まれる。これにより、一度に１セットの１６×１６探索ポジションを評価する「高速探索」モード時に、クロック周期ごとに１６回のＳＡＤ演算を実行することができる。更に、「４０ポジション同時探索」モードの場合、クロック周期ごとに、参照ブロックの４行のデータと、現在のブロックの４行のデータとにアクセスすることができる。
【００４６】
[89]ノードメモリアクセスの要約：各データセットは、指定されているノードによって制御される適応コンピューティングマシン（ＡＣＭ）アーキテクチャのマトリクス相互接続ネットワーク（ＭＩＮ）を介して、指定されているメモリから８個のＤＶＮノードメモリに転送される。４８×４８ペル参照ブロックの場合、行０，４，８，．．．，４４はノードメモリ１の中の連続する位置に書き込まれ、行１，５，９，．．．，４５はノードメモリ２の中の連続する位置に書き込まれ、行２，６，１０，．．．，４６はノードメモリ３の中の連続する位置に書き込まれ、行３，７，１１，．．．，４７はノードメモリ４の中の連続する位置に書き込まれる。１６×１６ペルの現在のブロックの場合、行０，４，８，１２はノードメモリ１及び５に書き込まれ、行１，５，９，１３はノードメモリ２及び６に書き込まれ、行２，６，１０，１４はノードメモリ３及び７に書き込まれ、行３，７，１１，１５はノードメモリ４及び８に書き込まれる。
【００４７】
[90]フルペル探索時には、動き推定エンジンは、メモリ１〜４から参照ブロックのデータを読み取り、メモリ５〜８から現在のブロックのデータを読み取る。双一次補間時には、動き推定エンジンは、メモリ１〜４から参照ブロックのフルペルデータを読み取り、ハーフペル補間した参照ブロックデータを、メモリ５〜８に書き込む。ハーフペル探索時には、動き推定エンジンは、ハーフペル補間した参照ブロックデータをメモリ５〜８から読み取り、メモリ１〜４から現在のブロックのデータを読み取る。最後に、１６×１６マクロブロックを復号器の動き補償エンジンに出力するため、動き推定エンジンは、メモリ５〜８から読み取ってＭＩＮに書き込む。
【００４８】
[91]ノードメモリの編成（ノードメモリへのデータ入力時）：ノードメモリ１〜４においては、参照ブロックのデータは位置０ｘ００〜０ｘ８Ｆに順次格納され、現在のブロックのデータは位置０ｘＣ０〜０ｘＣＦに順次格納される。ノードメモリ５〜８においては、現在のブロックのデータが位置０ｘＣ０〜０ｘＣＦに順次格納される。
【００４９】
[92]ノードメモリの編成（双一次補間時）：ノードメモリ５〜８においては、候補ポジション１（７）のハーフペルデータが位置０ｘ００〜０ｘ１０に順次格納される。候補ポジション２（８）のハーフペルデータは位置０ｘ２０〜０ｘ３０に順次格納される。候補ポジション３（９）のハーフペルデータは位置０ｘ４０〜０ｘ５０に順次格納される。候補ポジション４のハーフペルデータは位置０ｘ８０〜０ｘ８Ｆに順次格納される。候補ポジション５のハーフペルデータは位置０ｘ９０〜０ｘ９Ｆに順次格納される。候補ポジション６のハーフペルデータは位置０ｘＡ０〜０ｘＡＦに順次格納される。
【００５０】
[93]ＤＶＮプログラミングモデル：ＤＶＮの構成情報及び制御情報のすべては、ＤＶＮのタスクパラメータリスト（ＴＰＬ）に格納されている。条件付き動作では、探索キューに対して、ラッパーの６４個のカウンタのうちの適切な数のカウンタと、適切なデータ構造とを使用する。フルペル探索モードの両方において、適切な数及び特性の、ハードワイヤード探索パターンを使用することができる。
【００５１】
[94]将来的なＤＶＮの能力としては、例えば、更に高速なフルペル探索のための更に高いＳＡＤ強度（ＳＡＤ  ｓｔｒｅｎｇｔｈ）、クォーターペル（ｑｕａｒｔｅｒ  ＰＥＬ）処理、双三次補間が挙げられる（ただしこれらに限定されない）。
【００５２】
[95]適応コンピューティングマシン（ＡＣＭ）は、同種のネットワークによって接続されている異種のノードを含んでいる。各ノードは、図１２に示したように３つの要素、すなわちラッパーと、メモリと、実行ユニットとを含んでいる。
【００５３】
[96]ドメインビデオノード（ＤＶＮ）は、ＡＳＩＣ（特定用途向け集積回路）に匹敵するパワーエリア性能指標値を達成する再構成可能なデジタルビデオプロセッサであり、再構成可能であるという付加的な利点によって、ＤＶＮは、一般に使用されている動き推定アルゴリズムを複数実行することができる（同じ機能を達成するためには場合によっては複数のＡＳＩＣが必要となる）。
【００５４】
[97]図１３は、ＤＶＮプログラミング環境を描いたブロック図を示している。ＤＶＮの高レベル制御は、ＤＶＮノードのラッパー内のハードウェアタスクマネージャ（ＨＴＭ）と、ＤＶＮの実行ユニット内の有限状態機械（ＦＳＭ）とによって提供される。このインタフェースは、ラッパーから実行ユニット（ＥＵ）への、ＡＣＭに標準的なＥＵ＿ＲＵＮ信号、ＥＵ＿ＣＯＮＴＩＮＵＥ信号、及びＥＵ＿ＴＥＡＲＤＯＷＮ信号と、実行ユニットからラッパーへのＡＣＫ＋テスト応答及びＥＵ＿ＤＯＮＥ応答とを含んでいる。
【００５５】
[98]図１４は、ＦＳＭの遷移表を示している。ＦＳＭは、６つの状態、すなわち、アイドル、セットアップ、実行、ＡＣＫ＋テスト、待機、続行のうちの１つをとる。ノードが有効になっていない、又は実行ユニット（ＥＵ）が有効になっていないときには、ＦＳＭはアイドル状態に入り、その状態を維持する。ノードラッパーが「ｅｕ＿ａｂｏｒｔ」信号をアサートしたときにも、ＦＳＭはアイドル状態に遷移する。更に、ノードラッパーが「ｅｕ＿ｔｅａｒｄｏｗｎ」信号をアサートすると、ＦＳＭはそれに応答して待機状態を脱してアイドル状態に遷移する。
【００５６】
[99]ＦＳＭの一般的な動作シーケンスには、以下の遷移が含まれる。
・  ノードラッパーが「ｅｕ＿ｒｕｎ」信号をアサートしたことに応答しての、アイドルからセットアップ：セットアップの間は、バイトコードによって実行ユニットの初期化が制御され、ノードメモリに配置されている「タスクパラメータリスト（ＴＰＬ）」に格納されているパラメータが構成レジスタにロードされる。
・  セットアップのバイトコード「ｄｏｎｅ」に応答しての、セットアップから実行：実行状態の間は、実行ユニットがコマンドキューからの命令を処理して、動き推定動作として、フルペル探索、フラクショナルペル補間、フラクショナルペル探索、マクロブロックの符号付き差、結果の出力を実行する。
・  コマンドキューからＤＯＮＥ命令が読み取られたときの、実行からＡＣＫ＋テスト：ＡＣＫ＋テストの間は、動き推定段階中に生成及び消費されたデータ量を示すＡＣＫがネットワークに送られる。一般には、最後のＡＣＫには、ノードラッパーのハードウェアタスクマネージャ（ＨＴＭ）に「次の状態（ｗｈａｔ'ｓ  ｎｅｘｔ）」を尋ねる「テスト」指示が含まれる。
・  ＡＣＫ＋テストバイトコードに応答しての、ＡＣＫ＋テストから待機：ＡＣＫ＋テストから待機した後、ＦＳＭは、「次の状態」への応答をノードラッパーから受け取るまで待機状態のままである。
・  ノードラッパーが「ｅｕ＿ｔｅａｒｄｏｗｎ」信号をアサートしたことに応答しての、待機からアイドル：ＦＳＭは「ｅｕ＿ｄｏｎｅ」をアサートする。
・  ノードラッパーが「ｅｕ＿ｃｏｎｔｉｎｕｅ」信号をアサートしたことに応答しての、待機から続行：続行の間は、バイトコードによる制御下で、ノードメモリに配置されているタスクパラメータリストからのパラメータが特定の実行ユニットレジスタに再ロードされる。
・  続行のバイトコード「ｄｏｎｅ」に応答しての、続行から実行
【００５７】
[100]上記の動作シーケンスでは、ＡＣＫ＋テスト後に、ＦＳＭの制御がノードラッパーのハードウェアタスクマネージャに戻される。「ＡＣＫ処理」後に制御が保持されるようにＤＶＮをプログラムすることもできる。オプションとしては、（「ｅｕ＿ｄｏｎｅ」のアサート後に）条件付き又は無条件で続行又はアイドルに遷移することが挙げられる。テスト条件としては、ノードラッパーの６４個のうちの任意のカウンタの符号（ＭＳＢ：最上位ビット）、特定のタスクパラメータリストエントリの符号（ＭＳＢ）、バイトコードによって制御される５ビット・ダウンカウンタの符号（ＭＳＢ）が挙げられる。
【００５８】
[101]タスクを実行するうえで必要なすべての情報は、ノードメモリに配置されている「タスクパラメータリスト」（ＴＰＬ）に含まれている。セットアップの間、ＤＶＮのハードウェアは、タスクパラメータリストへのポインタをノードメモリから取得する。ノードメモリには、最大３１個のタスクのポインタが、ノードラッパー信号｛ｔｐｔ＿ｂｒ［８：０］，ａｃｔｉｖｅ＿ｔａｓｋ［４：０］｝によって指定される位置において３１個の連続するワードに格納される。
【００５９】
[102]ＤＶＮの各タスクパラメータリストには、ノードメモリの６４個のロングワードが割り当てられている。タスクパラメータリストの最初の８個のエントリは、特定の情報用に予約されている。残りの５６個のロングワードが、セットアップ、ＡＣＫ＋テスト、及び続行のパラメータを格納するのに利用可能である。
【００６０】
[103]タスクパラメータリストの位置０ｘ００には、セットアップの２つのパラメータ、すなわち、セットアップのバイトコードの、ノードメモリにおける開始アドレスと、ＴＰＬポインタからパラメータまでのオフセットとが含まれている。ＴＰＬ位置０ｘ０１には、ＡＣＫ＋テストの２つのパラメータ、すなわち、ＡＣＫ＋テストのバイトコードの、ノードメモリにおける開始アドレスと、ＴＰＬポインタからパラメータまでのオフセットとが含まれている。ＴＰＬ位置０ｘ０２には、破棄（ｔｅａｒｄｏｗｎ）の１つのパラメータ、すなわち、破棄のバイトコードの、ノードメモリにおける開始アドレスが含まれている（現時点では「破棄する」ものはないため、このパラメータは将来的に必要が生じた場合におけるプレースホルダである）。ＴＰＬ位置０ｘ０３には、続行の３つのパラメータ、すなわち、続行のバイトコードの、ノードメモリにおける開始アドレスと、ＴＰＬポインタから続行の２セットのパラメータまでのオフセットとが含まれている。ＴＰＬ位置０ｘ０４及び０ｘ０５は、バイトコードが操作することのできる一対のセマフォに使用され、位置０ｘ０６及び０ｘ０７は予約されている。ＴＰＬ位置０ｘ０８〜０ｘ３Ｆは、他のすべてのタスクパラメータを格納するのに利用可能である。
【００６１】
[104]図１５は、ＤＶＮのタスクパラメータリストのレイアウトを示している。タスクパラメータリストには、３つの状態、すなわち、セットアップ、ＡＣＫ＋テスト、及び続行のそれぞれのパラメータセットが格納される。続行に対しては、それぞれパラメータ数は同じであるがＴＰＬポインタオフセットが異なる２つのパラメータセットが存在することができる。これにより、２セットのグローバルパラメータ（例：１つ以上の消費側ノード宛先、フラクショナルペル補間フィルタ）の間で条件付き選択を行うことができる。特定の状態のパラメータセットは、タスクパラメータリストにおける連続する位置に格納されなければならない。バイトコードのＬＯＡＤ命令が実行されると、ＤＶＮのハードウェアは、セットにおける次のパラメータを選択する。その状態のＴＰＬポインタから第１のパラメータの位置までのオフセットは、０ｘ０８〜０ｘ３Ｆの範囲内でなければならない。
【００６２】
[105]ＤＶＮのＴＰＬメモリ及びレジスタのフォーマット：図１６は、バイトコードの開始アドレスとＴＰＬポインタオフセットとが含まれているＴＰＬ位置０ｘ００〜０ｘ０３のフォーマットを示している。図１７は、ＴＰＬ位置０ｘ０４及び０ｘ０５における２つのセマフォのフォーマットを示している。図１８は、ＴＰＬ位置（ＴＰＬポインタとＡＣＫ＋テストオフセットの合計）から始まるＡＣＫ＋テストパラメータのフォーマットを示している。図１９は、セットアップ及び続行時にタスクパラメータリストパラメータがロードされるレジスタのフォーマットを示している。
【００６３】
[106]制御及びステータスレジスタ（ＣＳＲ）：ＤＶＮのステータスレジスタには、使用する補間フィルタ、参照ブロックの端部における補間方法、６４個のフラグのうち「コマンドキューリダイレクト」を示すフラグ、使用するピンポンバッファ対、参照ブロックの場合の１行あたりのロングワード数を指定するフィールドが含まれている。
【００６４】
[107]表１及び表２は、ビット［６：５］及びビット［４：０］を説明している。
【表１】
2007538431.tif 000003
【表２】
2007538431.tif 000004
【００６５】
[108]ビット［１３：８］は、コマンドキューリダイレクトフラグである。コマンドキューの処理中は、ＤＶＮは、６４個のラッパーカウンタ符号ビットのうち、ビット［１３：８］によって示される符号ビットを絶え間なく監視している。カウンタ符号ビットが１’ｂ１にセットされると、ＤＶＮは、そのビットをクリアし、「切替」指示をコントローラに送り、コマンドキュー（Ａ／Ｂ）からの処理を中断し、コマンドキュー（Ｂ／Ａ）からの処理を再開する。
【００６６】
[109]ビット［２０：１６］は、バッファセレクタである。５個のビットのそれぞれは、一対のピンポンバッファの間で選択する。ビット１６は、「参照ブロックのバッファの選択」であり、０は参照ブロックＡを選択し、１は参照ブロックＢを選択する。ビット１７は、「現在のブロックのバッファの選択」であり、０は現在のブロックＡを選択し、１は現在のブロックＢを選択する。ビット１８は、「コマンドキューのバッファの選択」であり、０はコマンドキューＡを選択し、１はコマンドキューＢを選択する。ビット１９は、「水平コスト関数のバッファの選択」であり、０は水平コスト関数表Ａを選択し、１は水平コスト関数表Ｂを選択する。ビット２０は、「垂直コスト関数のバッファの選択」であり、０は垂直コスト関数表Ａを選択し、１は垂直コスト関数表Ｂを選択する。
【００６７】
[110]ビット［２８：２４］は、「参照ブロックの１行あたりのロングワード」である。参照ブロックの行を構成しているロングワード数は、行（ｋ）から行（ｋ＋４）までの幅をサポートするのにノードメモリアドレッシングユニットによって必要とされる。
【００６８】
[111]コントローラノードロケータレジスタ（ＣＮＬＲ）：ＤＶＮは、ＰＴＰプロトコルを使用してコントローラと通信し、この通信にはポート番号（すなわちビット［５：０］）及びノードＩＤ（すなわちビット［１５：８］）が必要である。
【００６９】
[112]宛先ノードロケータレジスタ（ＤＮＬＲ）：宛先（消費側）ノードへの出力動作が含まれているコマンドキュー命令を処理するとき、ＤＶＮは、１ビットの論理出力ポートフィールドを使用して２つの宛先ノードのうちの１つを選択する。このビットが１’ｂ０にセットされていると、その出力はノードＩＤ（すなわちビット［１５：８］）、ポート番号（すなわちビット［５：０］）に送られ、このビットが１’ｂ１にセットされていると、その出力はノードＩＤ（すなわちビット［３１：２４］）、ポート番号（すなわちビット［２１：１６］）に送られる。
【００７０】
[113]ＤＶＮのバイトコード：ＤＶＮのオーバーヘッドプロセッサ（ＯＨＰ）は、２つの個別のバイトコードセット、すなわち、セットアップ及び続行のセットと、ＡＣＫ＋テストのセットとを解釈する。バイトコードインタープリタがどちらのセットを使用するかは、ＦＳＭ状態によって示される。セットアップ及び続行に対しては、図２０に示したように１つのバイトコードＬＯＡＤのみが存在する。ＡＣＫ＋テストに対しては、より包括的なバイトコードセットが存在する。これらは図２１Ａ〜図４０Ｅにまとめてある。ＡＣＫ＋テストのバイトコード０ｘ８０〜０ｘＦＦは予約されており、ＮＯＰ、すなわち「無演算（ｎｏ  ｏｐｅｒａｔｉｏｎ）」として扱うことができる。
【００７１】
[114]ＤＶＮの場合、プログラミングステップの１つにおいて、バイトコードを書き込んでタスクパラメータリストを生成することが要求される。バイトコードは、必ず「インラインで」実行され、また、ロングワード境界から始まらなければならない。バイトコードの実行は、「リトルエンディアン」である、すなわち、最初に実行されるバイトコードが第１のロングワードのバイト［７：０］であり、次いでバイト［１５：８］、次いでバイト［２３：１６］、次いでバイト［３１：２４］、次いで第２のロングワードのバイト［７：０］であり、以下同様である。
【００７２】
[115]タスクパラメータリスト及びバイトコードのプログラミングの例：図２２は、「一般的な」タスクのタスクパラメータリスト及びバイトコードを示している。タスクパラメータリストは、２１個のロングワードから成り、バイトコードのロングワードは５個存在する。セットアップでは、タスクパラメータリストからレジスタをロードするのに３クロックサイクルが必要であり、３サイクルの最後にＤＯＮＥ（完了）が示される。ＡＣＫ＋テストでは、少なくとも１０クロックサイクルが必要であり、そのうち２クロックサイクルで提供側のＡＣＫ、２クロックサイクルで消費側のＡＣＫ、２クロックサイクル（又はそれ以上）で入力バッファの状態をテスト（及び必要であれば待機）し、２クロックサイクル（又はそれ以上）で出力バッファの状態をテスト（及び必要であれば待機）し、２クロックサイクルで、２セットの構成レジスタのうちの１セットを選択するためのカウンタ符号をテストする。続行では、構成レジスタ、すなわちステータスレジスタ、コントローラノードロケータレジスタ、及び宛先ノードロケータレジスタを更新するのに３クロックサイクルが必要である。
【００７３】
[116]コマンドキューの概要：ＤＶＮのプログラミングモデルには、ＤＶＮノードメモリ内のコマンドキューに格納される命令シーケンスを作成するステップが含まれる。これらの命令は、動き推定動作、すなわち、フルペル探索、フラクショナルペル補間、フラクショナルペル探索、（おそらくはマクロブロックの符号付き差）、及び結果の出力を制御する。
【００７４】
[117]図２３は、ＤＶＮのメモリマップを示している。各マクロブロックを処理するため、ＤＶＮは、タスクパラメータリスト（ＴＰＬ）内のエントリによって、ＤＶＮノードメモリ内の２つのバッファ、すなわちコマンドキューＡ又はコマンドキューＢのうちの１つから命令をフェッチするように指示される。２つのバッファのデータ構造は同じである。構造が同じである目的は、一方（又は両方）の静的コマンドキューに不変の命令セットを格納するため、又は、一方（又は両方）の動的コマンドキューの中に対話式のコマンドシーケンスを構築するため、又は、マクロブロックごとに２つのバッファの間で選択するためである。第２のコマンドキューを含めることにより、１つの命令シーケンスを終了させて新しい命令シーケンスで続行し、その一方で、前の命令シーケンス全体を後から再び使用できるように保存しておくことができる。
【００７５】
[118]２つのコマンドキューのそれぞれは、標準のＡＣＭ  ＰＴＰ（又はＤＭＡ）プロトコルを使用して、ＤＶＮノードメモリに転送される（利用可能な３２個の入力ポートのうちの１つ又は２つを消費する）。コマンドキューＡは、ノードメモリ６の位置０ｘ００〜０ｘ３Ｆにおける６４個のロングワード（１ロングワードあたり３２ビット）から成り、コマンドキューＢは、ノードメモリ７の位置０ｘ００〜０ｘ３Ｆにおける６４個のロングワードから成る。
【００７６】
[119]ＤＶＮのコントローラノードは、ＤＶＮのラッパーのポート変換表（ＰＴＴ）のうち、割り当てられているＤＶＮ入力ポート番号に対応する位置に０ｘ６Ｃ００を書き込むことによって、コマンドキューＡ（ＣＱＡ）を初期化する。これにより、コマンドキューＡバッファが、「メモリ＝６、物理アドレス＝０ｘ０００」を開始アドレスとする２５６バイト（６４個のロングワード）のサイズに設定される。コマンドキューＢ（ＣＱＢ）（０ｘ６Ｅ００）の初期化値は、「メモリ＝７、物理アドレス＝０ｘ０００」である。コントローラは、コマンドキューＡ及びコマンドキューＢ（６４ロングワードの循環バッファ）をＰＴＰ書込みを使用してロードする。コントローラは、０ｘ６Ｃ００及び０ｘ６Ｅ００をＤＶＮのポート変換表における適切な位置に再び書き込むことによって、これらのバッファを再初期化する。ＤＶＮは、（０に初期化されている）６ビットカウンタを使用して、コマンドキューＡ又はコマンドキューＢの命令をフェッチする。
【００７７】
[120]図２４は、コマンドキューのデータ構造を示している。ビット３１は、「有効な」命令を示すために使用され、コントローラがバッファに書き込む命令ごとに１’ｂ１にセットされていなくてはならない。ＤＶＮは、ビット３１が１’ｂ０にセットされているキューエントリを読み取ると、そのビットが１’ｂ１にセットされる、又はリダイレクトされるまで動作を停止する。
【００７８】
[121]コマンドキューＡ又はコマンドキューＢからフェッチされた命令シーケンスの処理中、コントローラは、ＤＶＮに対して、１）一方のキューからの命令の処理を終了する、２）他方のキューへのポインタをクリアする、又は、３）他方のキューの位置０から処理を再開する、ように命令することができる。コントローラからＤＶＮへのこの「切替」コマンドでは、ＤＶＮノードラッパー内の６４個のカウンタ符号の１つを利用する。コントローラは、ＭＳＢが１’ｂ１にセットされている適切なＰＣＴ／ＣＣＴカウンタを書き込む（この場合、このビットは以前に１’ｂ０に初期化されていたと想定する）。ＤＶＮは、処理の間、このビットを絶え間なく監視する。ＤＶＮのタスクのセットアップ時、タスクパラメータリストから６ビットレジスタをロードして、６４個のカウンタ符号のうち監視する適切な１つを選択する。ＤＶＮは、「切替」ルーチンの一部として、「自己アック、カウンタ初期化（ｓｅｌｆ−ａｃｋ，  ｉｎｉｔｉａｌｉｚｅ  ｃｏｕｎｔｅｒ）」のＭＩＮワードを送ることによってこのビットをクリアし、「切替完了」メッセージをコントローラに送る（図２５を参照）。
【００７９】
[122]ＤＶＮのコマンドキューデータ構造の説明：以下では、ＤＶＮのコマンドキューにおいて使用するデータ構造について、図２４を参照しながら説明する。
【００８０】
[123]１つの１６×１６マクロブロックの指標値の評価  −  コマンド０ｘ０：１つのポジション（Ｘ，Ｙ）の指標値を求める。この場合、（０，０）は参照ブロックの左上のペルを示し、Ｘは０〜７９の範囲内の正の整数であり、Ｙは０〜４９の範囲内の正の整数である。これらの正の整数は、左上ペルからの変位を示している。ＤＶＮは、指標値、すなわち、ＳＡＤ２５６、水平コスト関数、及び垂直コスト関数の合計値を評価する。コスト関数は、ノードメモリに格納されている。
【００８１】
[124]５×５ポジションの１つ以上のセットのうちの最良指標値を求める  −  コマンド０ｘ１：ポジション（Ｘ，Ｙ）から始まるｍ（水平）×ｎ（垂直）個のセットの５×５ポジションのうち最良の指標値を求める。Ｘは０〜７９の範囲内の正の整数であり、Ｙは０〜４９の範囲内の正の整数であり、ｍは１〜１６の範囲内の正の整数であり、ｎは１〜１０の範囲内の正の整数である（図２６を参照）。
【００８２】
[125]ハーフペル補間  −  コマンド０ｘ２：１６×１６マクロブロックに対して、フルペルからハーフペルへの補間を実行する。ビット［２４］は「評価」であり、すなわち、０は補間のみを意味し、１は、８（９）セットの１６×１６ハーフペルマクロブロックの補間及び評価を意味する。ビット［２５］は「モード」であり、すなわち、０は、「最良指標値」ベクトルを使用してマクロブロックを選択することを意味し、１は、（Ｘ，Ｙ）基準（すなわちビット［１４：８］及びビット［５：０］）を使用してマクロブロックを選択することを意味する。
【００８３】
[126]クォーターペル補間  −  コマンド０ｘ３：クォーターペル補間を実行する。ビット［２４］は「評価」であり、すなわち、０は補間のみを意味し、１は、８（９）セットの１６×１６クォーターペルマクロブロックの補間及び評価を意味する。ビット［２５］は「モード」であり、すなわち、０は、ハーフペル探索からの「最良指標値」ベクトルを使用してマクロブロックを選択することを意味し、１は、ハーフペルバッファ位置（すなわちビット［１１：０］）を使用してマクロブロックを選択することを意味する。
【００８４】
[127]フルペル符号付き差  −  コマンド０ｘ４：１６×１６の現在のブロックと、参照ブロックから選択される１６×１６フルペルマクロブロックとの間の符号付き差を求める。−２５５〜２５５の範囲内の２の補数の１６ビット整数としての２５６個の値を、１２８個のロングワードにパックして、選択されている宛先に出力する。ビット［２５］は「モード」であり、すなわち、０は、フルペル探索からの「最良指標値」ベクトルを使用してマクロブロックを選択することを意味し、１は、（Ｘ，Ｙ）基準（すなわちビット［１４：８］及びビット［５：０］）を使用してマクロブロックを選択することを意味する。ビット［２６］は「宛先」であり、２つの論理出力ポートのうちの一方を選択する。各ポートについて、タスクパラメータリストには、選択される宛先に関連付けられているルーティングと、入力ポート番号と、メモリモードの指示とが含まれている。
【００８５】
[128]ハーフペル符号付き差  −  コマンド０ｘ５：１６×１６の現在のブロックと、ハーフペルバッファから選択される１６×１６のハーフペルマクロブロックとの間の符号付き差を求める。−２５５〜２５５の範囲内の２の補数の１６ビット整数としての２５６個の値を、１２８個のロングワードにパックして、選択されている宛先に出力する。ビット［２５］は「モード」であり、すなわち、０は、ハーフペル探索からの「最良指標値」ベクトルを使用してマクロブロックを選択することを意味し、１は、ハーフペルバッファ位置（すなわちビット［１１：０］）を使用してマクロブロックを選択することを意味する。ビット［２６］は「宛先」であり、２つの論理出力ポートのうちの一方を選択する。各ポートについて、タスクパラメータリストには、選択される宛先に関連付けられているルーティングと、入力ポート番号と、メモリモードの指示とが含まれている。
【００８６】
[129]クォーターペル符号付き差  −  コマンド０ｘ６：１６×１６の現在のブロックと、クォーターペルバッファから選択される１６×１６のクォーターペルマクロブロックとの間の符号付き差を求める。−２５５〜２５５の範囲内の２の補数の１６ビット整数としての２５６個の値を、１２８個のロングワードにパックして、選択されている宛先に出力する。ビット［２５］は「モード」であり、すなわち、０は、クォーターペル探索からの「最良指標値」ベクトルを使用してマクロブロックを選択することを意味し、１は、ハーフペルバッファ位置（すなわちビット［１１：０］）を使用してマクロブロックを選択することを意味する。ビット［２６］は「宛先」であり、２つの論理出力ポートのうちの一方を選択する。各ポートについて、タスクパラメータリストには、選択される宛先に関連付けられているルーティングと、入力ポート番号と、メモリモードの指示とが含まれている。
【００８７】
[130]１６×１６フルペルマクロブロックの出力  −  コマンド０ｘ７：ＤＶＮノードメモリにおける参照ブロックから選択された１６×１６フルペルマクロブロックを、指定されている宛先に転送する。ビット［２５］は「モード」であり、すなわち、０は、フルペル探索からの「最良指標値」ベクトルを使用してマクロブロックを選択することを意味し、１は、（Ｘ，Ｙ）基準（すなわちビット［１４：８］及びビット［５：０］）を使用してマクロブロックを選択することを意味する。ビット［２６］は「宛先」であり、２つの論理出力ポートのうちの一方を選択する。各ポートについて、タスクパラメータリストには、選択される宛先に関連付けられているルーティングと、入力ポート番号と、メモリモードの指示とが含まれている。
【００８８】
[131]１６×１６ハーフペルマクロブロックの出力  −  コマンド０ｘ８：選択された１６×１６ハーフペルマクロブロックを、ＤＶＮノードメモリにおけるハーフペルバッファから、指定されている宛先に転送する。ビット［２５］は「モード」であり、すなわち、０は、ハーフペル探索からの「最良指標値」ベクトルを使用してマクロブロックを選択することを意味し、１は、ハーフペルバッファ位置（すなわちビット［１１：０］）を使用してマクロブロックを選択することを意味する。ビット［２６］は「宛先」であり、２つの論理出力ポートのうちの一方を選択する。各ポートについて、タスクパラメータリストには、選択される宛先に関連付けられているルーティングと、入力ポート番号と、メモリモードの指示とが含まれている。
【００８９】
[132]１６×１６クォーターペルマクロブロックの出力  −  コマンド０ｘ９：選択された１６×１６クォーターペルマクロブロックを、ＤＶＮノードメモリにおけるクォーターペルバッファから、指定されている宛先に転送する。ビット［２５］は「モード」であり、すなわち、０は、クォーターペル探索からの「最良指標値」ベクトルを使用してマクロブロックを選択することを意味し、１は、クォーターペルバッファ位置（すなわちビット［１１：０］）を使用してマクロブロックを選択することを意味する。ビット［２６］は「宛先」であり、２つの論理出力ポートのうちの一方を選択する。各ポートについて、タスクパラメータリストには、選択される宛先に関連付けられているルーティングと、入力ポート番号と、メモリモードの指示とが含まれている。
【００９０】
[133]最良指標値の出力  −  コマンド０ｘＡ：最良指標値（飽和した符号なし１６ビット整数）を、指定されている１つ以上の宛先に転送する。ビット［２５］は「モード」であり、すなわち、０は、コントローラのみに送ることを意味し、１は、コントローラに送り、更に、指定されている宛先に送ることを意味する。ビット［２６］は「宛先」であり、２つの論理出力ポートのうちの一方を選択する。各ポートについて、タスクパラメータリストには、選択される宛先に関連付けられているルーティングと、入力ポート番号と、メモリモードの指示とが含まれている。
【００９１】
[134]動きベクトルの出力  −  コマンド０ｘＢ：クォーターペル解像度を有する動きベクトルを、指定されている１つ以上の宛先に転送する。ビット［２５］は「モード」であり、すなわち、０は、コントローラのみに送ることを意味し、１は、コントローラに送り、更に、指定されている宛先に送ることを意味する。ビット［２６］は「宛先」であり、２つの論理出力ポートのうちの一方を選択する。各ポートについて、タスクパラメータリストには、選択される宛先に関連付けられているルーティングと、入力ポート番号と、メモリモードの指示とが含まれている。
【００９２】
[135]完了  −  コマンド０ｘＣ：ＤＯＮＥコマンドは、「現在のブロック」に対して実行すべき処理がそれ以上存在しないことをＤＶＮに知らせる。ＤＶＮは、キューからこのコマンドを読み取ると、ＤＯＮＥステータスワードをコントローラに送る。ＤＶＮのＦＳＭはＡＣＫ＋テスト状態に遷移する。
【００９３】
[136]エコー  −  コマンド０ｘＦ：ＥＣＨＯコマンドは、コマンド自体であるステータスワードを戻すようにＤＶＮに命令する。これは、診断の支援を目的としている。
【００９４】
[137]ＤＶＮからコントローラへのステータスワード：ＤＶＮは、各コマンドを実行した後、ＡＣＭ  ＰＴＰプロトコルを使用してステータスワードをコントローラに送る。ＤＶＮのタスクパラメータリストには、適切なルーティングフィールドと、入力ポート番号と、この動作をサポートするのに必要なメモリモード指示とが含まれる。この情報は、「セットアップ」動作中及び「続行」動作中に、ＤＶＮのコントローラノードロケータレジスタに転送される。図２５は、ステータスワードについてまとめてある。
【００９５】
[138]コマンド０ｘ０及びコマンド０ｘ１の場合には、ステータスワードには、その特定の現在のブロックの、その時点までの最良のフルペル指標値が含まれる。更に、ステータスワードには、水平次元については（フルペル単位で）０〜７９の範囲、垂直次元については０〜４９の範囲の対応するベクトルも含まれる。コマンド０ｘ２、すなわちフルペルからハーフペルへの補間の場合には、コマンドのビット［２４］が１’ｂ１（補間及び評価）にセットされているときには、ステータスワードビット［１５：０］は最良のハーフペル指標値の値を示し、ビット［１９：１６］は、９個のハーフペル候補のうち、最良の指標値が関連付けられている候補を示す（ビット［１９：１６］のコーディングには、図４０に示したハーフペル番号付け規則が使用される）。コマンドのビット［２４］が１’ｂ０（補間のみ）にセットされているときには、ビット［１５：０］は、以前に評価された最良のフルペル指標値の値を示し、ビット［１９：１６］は、補間の「完了」を示すため０ｘＦにセットされる。
【００９６】
[139]コマンド０ｘ３、すなわちハーフペルからクォーターペルへの補間の場合には、コマンドのビット［２４］が１’ｂ１（補間及び評価）にセットされているときには、ステータスワードビット［１５：０］は最良のクォーターペル指標値の値を示し、ビット［１９：１６］は、９個のクォーターペル候補のうち、最良の指標値が関連付けられている候補を示す（ビット［１９：１６］のコーディングには、図４２に示したクォーターペル番号付け規則が使用される）。コマンドのビット［２４］が１’ｂ０（補間のみ）にセットされているときには、ビット［１５：０］は、以前に評価された最良の指標値（フルペル又はハーフペル（評価されていた場合）のいずれか）の値を示し、ビット［１９：１６］は、補間の「完了」を示すため０ｘＦにセットされる。
【００９７】
[140]コマンド０ｘ４、０ｘ５、０ｘ６、０ｘ７、０ｘ８、及び０ｘ９の場合には、ステータスワードは、それぞれ「完了」を示す、０ｘＦＦ０１００００、０ｘＦＦ０２００００、０ｘＦＦ０４００００、０ｘＦＦ０８００００、０ｘＦＦ１０００００、及び０ｘＦＦ２０００００である。コマンド０ｘＡの場合には、ステータスワードは、最良の指標値の飽和した符号なし１６ビット整数である。コマンド０ｘＢの場合には、ステータスワードは、クォーターペル解像度を有する動きベクトルである。コマンド０ｘＣの場合には、ステータスワードは、「完了」を示す０ｘＦＦ４０００００である。コマンド０ｘＦの場合には、ステータスワードは、コマンド自体をエコーする。これは、診断の支援を目的としている。「コマンドキューリダイレクト」フラグへの応答においては、ステータスワードは、「完了」を示す０ｘＦＦ８０００００である。
【００９８】
[141]ＤＶＮノードメモリ：ＤＶＮは、それぞれが１ワードあたり３２ビットの５１２ワードとして編成された、８個の２ＫＢの物理メモリを含んでおり、ノードメモリの総容量は１６ＫＢである。これにより、クロックサイクルごとに３２バイトのビデオデータを読み取って、これらのデータの１６回の「差の絶対値の合計」を処理することができる。更に、１６ＫＢの容量によって、完全に重複したデータ入力及び出力と計算のためのダブルバッファリングが可能である。
【００９９】
[142]任意のＡＣＭは、ＤＶＮのラッパーにおけるポート変換表と、３つのサービス（ＰＴＰ、ＤＭＡ、ＲＴＩ）のいずれかとを使用して、ＤＶＮノードメモリに書き込むことができる。更に、Ｋノード（Ｋｎｏｄｅ）が、ＤＶＮノードメモリに対してＰＥＥＫ処理及びＰＯＫＥ処理を行うことができる。
【０１００】
[143]図２３は、ＤＶＮノードのメモリマップを示している。表３は、割り当てられるバッファの説明である。
【表３】
2007538431.tif 000005
【０１０１】
[144]この場合、参照ブロック及び現在のブロックが「データムーバ（Ｄａｔａ  Ｍｏｖｅｒ）」からＭＩＮを介して８個のＤＶＮノードメモリに転送されることを想定している。更に、「データムーバ」がＰＳＮノードによって制御されることを想定している。参照ブロックは、Ｍペル（行あたり）×Ｎペル（列あたり）として編成されている。Ｍ及びＮは５の倍数の整数であり、これは、一度に５×５ポジションを探索する方式に矛盾しない。Ｍの範囲は２０〜９５（２０，２５，３０，．．．，９０，９５）であり、Ｎの範囲は２０〜６５（２０，２５，３０，．．．，６０，６５）である。
【０１０２】
[145]参照ブロックのオプション：図２６には、参照ブロックの容量である３８４０バイトを超えることのない、ＭとＮの許容される組合せと、網羅的な探索処理サイクルに伴う数とをまとめてある。
【０１０３】
[146]Ｍペル×Ｎペルのそれぞれの場合、データムーバからＤＶＮノードメモリへの参照ブロックの転送は、次のように行われる。すなわち、行０，４，８，．．．，［Ｍ−（Ｍ）ｍｏｄ４］がノードメモリ０における連続する位置に書き込まれ、行１，５，９，．．．，［Ｍ−（Ｍ−１）ｍｏｄ４］がノードメモリ１における連続する位置に書き込まれ、行２，６，１０，．．．，［Ｍ−（Ｍ−２）ｍｏｄ４］がノードメモリ２における連続する位置に書き込まれ、行３，７，１１，．．．，［Ｍ−（Ｍ−３）ｍｏｄ４］がノードメモリ３における連続する位置に書き込まれる。
【０１０４】
[147]１６ペル×１６ペルの現在のブロックそれぞれについては、次のようにデータムーバからＤＶＮノードメモリに転送される。すなわち、行０，４，８，１２がノードメモリ０及び４に書き込まれ、行１，５，９，１３がノードメモリ１及び５に書き込まれ、行２，６，１０，１４がノードメモリ２及び６に書き込まれ、行３，７，１１，１５がノードメモリ３及び７に書き込まれる。
【０１０５】
[148]フルペル探索時には、ＤＶＮの動き推定エンジン（ＭＥ）は、参照ブロックのデータをメモリ０〜３から読み取り、現在のブロックのデータをメモリ４〜７から読み取る。ハーフペル補間時には、動き推定エンジンは、フルペル参照ブロックのデータをメモリ０〜３から読み取り、ハーフペル補間したデータをメモリ４〜７に書き込む。ハーフペル探索がハーフペル補間と同時に実行されるときには、動き推定エンジンは、現在のブロックのデータをメモリ４〜７から読み取る。クォーターペル補間時には、動き推定エンジンは、ハーフペル補間したデータをメモリ４〜７から読み取り、クォーターペル補間したデータをメモリ４〜７に書き込む。クォーターペル探索がクォーターペル補間と同時に実行されるときには、動き推定エンジンは、現在のブロックのデータをメモリ０〜３から読み取る。出力時には、動き推定エンジンは、フルペルマクロブロックをメモリ０〜３から読み取り、フラクショナルペルマクロブロックをメモリ４〜７から読み取り、マクロブロックの符号付き差の場合には、現在のブロックをメモリ０〜３から、フルペル及びフラクショナルペルマクロブロックをメモリ４〜７から読み取る。
【０１０６】
[149]コスト関数表：フルペル探索ポジションのそれぞれについて、ＤＶＮは、指標値、すなわち、ＳＡＤ２５６、水平コスト関数、及び垂直コスト関数の合計を評価する。コスト関数はノードメモリに格納されている。コスト関数は、符号なし１６ビット整数である。
【０１０７】
[150]Ｍ列×Ｎ行の参照ブロックに対して、Ｍ個の水平コスト関数とＮ個の垂直コスト関数とが存在する。水平コスト関数表のそれぞれには、２つの１６ビット整数として一対の水平コスト関数が、表における３２ビットのロングワードのそれぞれにパックされている。列０及び列１のコスト関数がテーブル位置０に格納されており、列２及び列３のコスト関数がテーブル位置１に格納されており、以下同様である。偶数番号の列のコスト関数はロングワードのビット［１５：０］に格納されており、奇数番号の列のコスト関数はロングワードのビット［３１：１６］に格納されている。
【０１０８】
[151]垂直コスト関数表のそれぞれには、２つの１６ビット整数として一対の垂直コスト関数が、表における３２ビットのロングワードのそれぞれにパックされている。行０及び行１のコスト関数がテーブル位置０に格納されており、行２及び行３のコスト関数がテーブル位置１に格納されており、以下同様である。偶数番号の行のコスト関数はロングワードのビット［１５：０］に格納されており、奇数番号の行のコスト関数はロングワードのビット［３１：１６］に格納されている。図２７は、フラクショナルペルのコスト関数と、コスト関数表Ａ及びＢとを示している。
【０１０９】
[152]参照ブロックの概要：図２３に示したように、ＤＶＮノードメモリには、３８４０バイトの２つの参照ブロックバッファが割り当てられている。クロック周期ごとに１６ペルにアクセスできるように、各バッファは４個の物理メモリに格納されている。本発明においては、左上ペルを基準とする番号付け規則を採用しており、左上ペルの（Ｈ）水平座標及び（Ｖ）垂直座標を（Ｈ：０，Ｖ：０）と表す。参照ブロックＡの左上ペルは、メモリ位置０ｘ０００の上位バイトに格納され、参照ブロックＢの左上ペルは、メモリ位置０ｘ１００の上位バイトに格納される。参照ブロックの行０，４，８，．．．がメモリ０に格納され、行１，５，９，．．．がメモリ１に格納され、行２，６，１０，．．．がメモリ２に格納され、行３，７，１１，．．．がメモリ３に格納される。
【０１１０】
[153]Ｍ＝５０列×Ｎ＝５０行の参照ブロックは、図２８に示したようにノードメモリ０〜３に格納される。１６ペル×１６ペルの現在のブロックのそれぞれは、図２９に示したように、ノードメモリ０〜３とノードメモリ４〜７とに格納される。
【０１１１】
[154]図３０に示したように、５０ペル×５０ペルの参照ブロックでは、（［Ｈ：１７，Ｖ：１７］における中央の探索ポジションを基準として）各次元において±１７ペルの探索範囲が可能である。５０ペル×５０ペルの参照ブロックの中には、１２２５個の候補探索ポジションが存在する。図３０には、相対座標Ｈ（１７），Ｖ（１７）の「中央」ポジションを示してある。図３０には、５個の探索ポジション、すなわち中央ポジションＨ（１７），Ｖ（１７）、左上ポジションＨ（０），Ｖ（０）、右上ポジションＨ（３４），Ｖ（０）、左下ポジションＨ（０），Ｖ（３４）、右下ポジションＨ（３４），Ｖ（３４）を、強調して示してある。
【０１１２】
[155]図３１は、そのような参照ブロック内の中央の５×５ポジションを同時に探索する状況を示している。この場合、探索されるポジションの合計数は２５であり、探索範囲は各次元において±２ペルである。図３２は、そのような参照ブロック内の中央の９セットの５×５ポジションを探索する状況を示している。この場合、探索されるポジションの合計数は、９×５×５＝２２５であり、探索範囲は各次元において±７ペルである。図３３は、そのような参照ブロック内の４９セットの５×５ポジションすべてを網羅的に探索する状況を示している。この場合、探索されるポジションの合計数は、４９×５×５＝１２２５であり、探索範囲は各次元において±１７ペルである。
【０１１３】
[156]フラクショナルペル処理が含まれるときには、プログラマは次の２つの方式から選択することができる。
・  あらゆる探索結果に対する補間がサポートされるような十分な数のペルを有する「オーバーサイズの」参照ブロックをロードする。そのような「オーバーサイズの」参照ブロックのサイズは、現在のマクロブロックのサイズ（ｍ）と、探索範囲（ｈ，ｖ）と、ハーフペル補間フィルタのタップ数（ｎ）とによって決定することができる。具体的には、このサイズは、［ｍ＋ｈ＋ｎ−１］水平ペル×［ｍ＋ｖ＋ｎ−１］垂直ペルである。例えば、図３４に示したように、１６×１６ペルマクロブロック、水平方向及び垂直方向に±１７ペルの探索範囲、Ｈ．２６４の６タップ補間フィルタの場合、参照ブロックは５６ペル×５６ペル（３１３６バイト）でなければならない。
・  望ましい探索範囲がサポートされる最小数のペルを有する参照ブロックをロードする。そのような参照ブロックのサイズは、現在のマクロブロックのサイズ（ｍ）と探索範囲（ｈ，ｖ）とによって決定することができる。具体的には、このサイズは、［ｍ＋ｈ−１］水平ペル×［ｍ＋ｖ−１］垂直ペルである。例えば、１６×１６ペルマクロブロック、水平方向及び垂直方向に±１７ペルの探索範囲の場合、参照ブロックは５０ペル×５０ペル（２５００バイト）であり、上の方式１）の場合に要求される３１３６バイトよりもかなり小さい。次いで、探索結果において必要であれば、補間ステップに進む前に、［ｍ＋ｎ］水平ペル×［ｍ＋ｎ］垂直ペルを有する参照ブロックバッファを再ロードする。この方式は、図３５にまとめてある。
【０１１４】
[157]フルペル探索：ＤＶＮは、フルペル探索の２つの動作モードをサポートしている。一方のモードでは、参照ブロック内の任意の１６×１６ポジションを評価し、クロック周期ごとに１６回のＳＡＤ演算を実行する。第２のモードでは、ｍ×ｎセットの（５×５＝２５）ポジションを同時に評価し、クロック周期ごとに最大２００回（平均１６０回）のＳＡＤ演算を実行する。いずれのモードの場合も、「評価」は、現在の１６×１６マクロブロックと、参照ブロック内の任意の１６×１６マクロブロックとの間の「差の絶対値の合計」（ＳＡＤ）指標値と、水平コスト関数及び垂直コスト関数との合計を計算し、最良の指標値及びそれに対応する１６×１６マクロブロックの原点をつねに保存するステップから成る。探索パターンは、ＤＶＮメモリ内の２つのコマンドキューの１つに制御ＰＳＮノードによって書き込まれる命令シーケンスによって制御される。原点（Ｘ，Ｙ）に対して１つのポジションを評価するのかｍ×ｎセットの５×５ポジションを評価するのかは、各キューエントリの一意のコマンドコードによって指定される。
【０１１５】
[158]ハーフペル補間：変形指標値が最良の１６×１６マクロブロックを求めるフルペル探索の後、周囲の（［１６＋ｎ］×［１６＋ｎ］）ペルの配列に対してハーフペル補間を実行する（ｎはフィルタ次数）。双一次補間、ＷＭＶ、Ｈ．２６４、ＭＰＥＧ４の場合、それぞれ、ｎ＝２，４，６，８である。図３６は、ハーフペル双一次補間に必要な計算についてまとめてある。図３７は、「最良指標値」の１６×１６マクロブロックに対応する１８×１８フルペル配列に対して双一次補間を行う結果としての３３×３３ハーフペル配列を示している。図４０は、Ｈ．２６４の６タップフィルタ補間の結果としての３３×３３ハーフペル配列を示している。図４１は、サポートされるハーフペル補間ＦＩＲフィルタについてまとめてある。水平方向及び垂直方向に１／２ペルだけシフトしたハーフペルポジションの場合、フルペル及びハーフペル補間された値に対して同じフィルタが使用され、これらの値のフル精度が維持される。
【０１１６】
[159]ハーフペル探索：４個のフィルタリングオプションのうちの１つを使用してのハーフペル補間の後、９個の候補ハーフペルポジションのそれぞれについてハーフペル指標値を計算する。この指標値は、ＳＡＤ２５６指標値とハーフペルコスト関数との合計である。図４２は、９個の候補ハーフペルポジションの番号付け規則を示している。この図において、フルペルポジション（ポジション「５」）のフルペル指標値は、以前にすでに計算されている。しかしながら、ポジション「５」のハーフペル指標値は、そのフルペル指標値からフルペル水平コスト関数及びフルペル垂直コスト関数を減じ、そのポジションのハーフペルコスト関数を加えた値である（図２７を参照）。ハーフペル探索は、９個の候補のそれぞれのＳＡＤの指標値＋ハーフペルコスト関数を生成するステップと、指標値が最良の候補を選択するステップとから成る。
【０１１７】
[160]クォーターペル補間：変形指標値が最良の１６×１６マクロブロックを求めるハーフペル探索の後、周囲の（［１６＋ｎ］×［１６＋ｎ］）ペルの配列に対してクォーターペル補間を実行する（ｎはフィルタ次数）。ＷＭＶの場合にはｎ＝４であり、Ｈ．２６４及びＭＰＥＧ４（双一次補間を使用する）の場合には、ｎ＝２である。図４２は、クォーターペルポジション、ハーフペルポジション、及び３／４ペルポジションに対するＷＭＶサブペル４タップＦＩＲフィルタの要約を示している。
【０１１８】
[161]クォーターペル探索：クォーターペル補間の後、９個の候補クォーターペルポジションのそれぞれについてクォーターペル指標値を計算する。この指標値は、ＳＡＤ２５６指標値とクォーターペルコスト関数との合計である。図４３は、９個の候補クォーターペルポジションの番号付け規則を示している。この図においては、１６個のクォーターペルポジションのうち９個を計算するのみでよい。更に、９個の候補クォーターペルポジションのうちの１つ（ポジション「５」）の指標値は、以前にすでに計算されている。しかしながら、ポジション「５」のクォーターペル指標値は、そのハーフペル指標値からハーフペルコスト関数を減じ、そのポジションのクォーターペルコスト関数を加えた値である（図２７を参照）。クォーターペル探索は、９個の候補のそれぞれのＳＡＤ指標値＋クォーターペルコスト関数を生成するステップと、指標値が最良の候補を選択するステップとから成る。
【０１１９】
[162]マクロブロックの符号付き差：ＤＶＮは、ＤＶＮノードメモリ内の任意の１６ペル×１６ペルマクロブロック（フルペル、ハーフペル、又はクォーターペル）と、ＤＶＮノードメモリ内のいずれかの１６ペル×１６ペルの現在のブロックとの間の、９ビット符号付き差の２５６要素の配列を計算及び出力することもできる。この配列は、１２８個のロングワードとして宛先ノードに出力され、この場合に各ロングワードは、１６×１６マクロブロックの符号拡張された９ビット符号付き差を表す、パックされた一対の１６ビット符号付き整数である。
【０１２０】
[163]ＤＶＮに関連するプログラミング要件の要約：図１３を参照して、ＤＶＮのプログラミングに要求されるステップは次のとおりである。すなわち、タスクパラメータリスト（ＴＰＬ）を構築してＤＶＮノードメモリにロードする、バイトコードを構築してＤＶＮノードメモリにロードする、ＤＶＮハードウェアタスクマネージャ（ＨＴＭ）を構成する、必要な参照ブロック、現在のブロック、及びコスト関数表と、適切なデータフローＡＣＫとを構築してＤＶＮノードメモリに転送するように、データムーバに指示する、必要なコマンドキュー命令シーケンスを構築してＤＶＮノードメモリに転送する、ＤＶＮからのメッセージの処理がサポートされるようにＤＶＮのコントローラノード内のハードウェアタスクマネージャを構成する、ＤＶＮからの出力を受信し且つ適切なデータフローＡＣＫをＤＶＮに送るようにＤＶＮ宛先ノード（消費者）を構成する。
【０１２１】
[164]ＤＶＮハードウェアの概要：図４３は、ＤＶＮ実行ユニットの簡略化したブロック図を示している。ＤＶＮは、ＱＳＴノードラッパーと、８個の２ＫＢのノードメモリ（それぞれ３２ビットの５１２ワードとして編成されている）と、実行ユニット（ＥＵ）とを含んでおり、実行ユニット（ＥＵ）は、オーバーヘッドプロセッサ（ＯＨＰ）と動き推定エンジン（ＭＥ）とから成る。動き推定エンジンは、フルペル探索、ハーフペル探索、及びクォーターペル探索と、ハーフペル補間及びクォーターペル補間と、マクロブロックの符号付き差とを実行する。動き推定エンジンは、最良の指標値及びそれに対応する１６×１６マクロブロックの原点を、コントローラノードと宛先ノードとに出力し、対応するその１６×１６マクロブロックを、復号器の動き補償機能を実行する宛先ノードに出力する。動き推定エンジンは、マクロブロックの符号付き差を宛先ノードに出力することができる。
【０１２２】
[165]ＤＶＮの特徴としては、効率を最大にするため動き推定エンジンとオーバーヘッドプロセッサとに個別の制御ユニットが設けられている、バイトコードがコンパクトである、セットアップ、ＡＣＫ＋テスト、及び続行のオーバーヘッドが最小になるようにタスクパラメータリストのロード動作及び格納動作が効率的である、シーケンサ（ｓｅｑｕｅｎｃｅｒ）及び制御メモリに基づく実施形態と比較して面積あたりパワーの指標値が高くなるように、動き推定エンジンに対して有限状態機械（ＦＳＭ）に基づくＰＬＡ制御が行われる、パフォーマンスが高まりパワーが低減する革新的なアルゴリズムの実施形態、大規模な並行処理が可能である８個の物理メモリブロックアーキテクチャ、「書込みアドレス及び読取りアドレスが同一」方式（ｒｅｓｏｌｕｔｉｏｎ）の高性能のメモリインタフェース、が挙げられる。
【０１２３】
[166]動き推定エンジンは、いくつかの機能要素、すなわち、制御プログラムユニット（ＣＰＵ）、メモリアドレスジェネレータユニット（ＡＧＵ）、データパスユニット（ＤＰＵ）、差の絶対値の合計（ＳＡＤ）、符号付き差、複数形式のサブペル補間、ラッパーインタフェースユニット（ＷＩＵ）、メモリインタフェースユニット（ＭＩＵ）を含んでいる。
【０１２４】
[167]ＤＶＮは、以下の動作を行う。１）（最大）８０ペル（水平次元）及び（最大）５０ペル（垂直次元）にわたるフルペル探索、２）４つ（おそらくはそれ以上）のフィルタのうちの１つを使用してのフルペルから３５×３５ハーフペルへの補間、３）ハーフペル探索、４）３５×３５ハーフペルから９×１６×１６クォーターペルへの補間、５）クォーターペル探索、６）最良の指標値及びそれに対応する１６×１６マクロブロックを制御ＰＳＮノードに出力し、１６×１６マクロブロック自体を、復号器動き補償を実行するノードに出力する、７）選択された１６×１６マクロブロック（フルペル、ハーフペル、又はクォーターペル）と現在の１６×１６マクロブロックとの間の２５６個の符号付き差を計算して出力する。
【０１２５】
[168]８個のノードメモリのそれぞれは、完全に重複したデータ入力と計算及び結果出力が可能であるように、ピンポンバッファ対に分割されている。データムーバから８個のＤＶＮメモリに１つのデータセットが転送された後、ＤＶＮの動き推定エンジンは、そのデータセットの計算を実行して結果を出力する。この間、次のデータセットがデータムーバから８個のＤＶＮメモリに転送される。以下同様である。
【０１２６】
[169]各データセットは、可変サイズの参照ブロックと、１６×１６ペルの配列（現在のブロック）と、フラクショナルペルコスト関数表とを含んでいる。これらのデータは、動き推定エンジンからデータへのアクセスが最適化されるような方式で８個のノードメモリの間で分散されている。動き推定エンジンからデータへのアクセスには、一般的には、クロック周期ごとに８個のノードメモリのそれぞれから４バイトデータへのアクセスが含まれる。これにより、一度に１セットの１６×１６探索ポジションが評価されるときに、クロック周期ごとに１６回のＳＡＤ演算を実行することができる。更に、「２５ポジション同時探索」モードの場合、クロック周期ごとに、参照ブロックの４行からのデータと、現在のブロックの４行からのデータとにアクセスすることができる。
【０１２７】
[170]本発明のルーチンは、任意の適切なプログラミング言語、例えば、Ｃ言語、Ｃ＋＋言語、Ｊａｖａ言語、アセンブリ言語などを使用して実装することができる。プロシージャ指向やオブジェクト指向など、様々なプログラミング手法を採用することができる。ルーチンは、１つの処理デバイス或いは複数のプロセッサにおいて実行することができる。ステップ、動作、或いは計算は、特定の順序で提示したが、異なる実施形態においてはこの順序を変更することができる。本明細書において連続するものとして示した複数のステップは、いくつかの実施形態においては、同時に実行することができる。本明細書に説明した一連の動作には、別のプロセス（例：オペレーティングシステム、カーネル）による割込み、中断、又はそれ以外の制御を行うことができる。ルーチンは、オペレーティングシステム環境において動作する、或いは、システム処理のすべて又は相当な部分を占有するスタンドアロンのルーチンとして動作することができる。機能は、ハードウェア、ソフトウェア、又はその両方の組合せにおいて実行することができる。特に明記しない限り、機能は、全体又は一部を手操作によって実行することもできる。
【０１２８】
[171]本明細書の説明では、本発明の実施形態が完全に理解されるように、コンポーネントの例や方法の例など具体的な詳細を豊富に記載した。しかしながら、これら具体的な細部の少なくとも１つを使用せずに、或いは別の装置、システム、アセンブリ、方法、コンポーネント、材料、部品、その他を使用して、本発明の実施形態を実施できることが、当業者には認識されるであろう。別の例においては、本発明の実施形態の側面があいまいになることを避けるため、周知の構造、材料、動作については、具体的な図示或いは詳細な説明は省いた。
【０１２９】
[172]本発明の実施形態のための「コンピュータ可読媒体」は、命令を実行するシステム、装置、システム、又はデバイスにおいて使用するプログラム、又は一緒に使用するプログラムを含む、格納する、通信する、伝える、又は転送することのできる任意の媒体とすることができる。コンピュータ可読媒体は、一例として、電子、磁気、光学、電磁気、赤外線、又は半導体に基づくシステム、装置、デバイス、伝播媒体、又はコンピュータメモリとすることができる（ただしこれらに限定されない）。
【０１３０】
[173]「プロセッサ」又は「プロセス」には、データ、信号、又はその他の情報を処理する、ヒューマン方式、ハードウェア方式、ソフトウェア方式の、任意のシステム、機構、コンポーネントの１つ以上が含まれる。プロセッサとしては、汎用の中央処理装置、複数の処理ユニット、機能を達成する専用回路、又はその他のシステムを備えたシステムが挙げられる。処理は、空間的な位置に限定されたり、時間的に制約される必要はない。例えば、プロセッサは、「リアルタイム」で、「オフライン」で、或いは「バッチモード」において機能を実行することができる。処理の一部を、別の時間に、別の位置において、別の（又は同じ）処理システムによって実行することができる。
【０１３１】
[174]本明細書全体を通じて、「１つの実施形態」、「実施形態」、又は「具体的な実施形態」という記述は、実施形態に関連して説明されている特定の特徴、構造、又は特性が、本発明の少なくとも１つの実施形態に含まれていることを意味し、これらが必ずしもすべての実施形態に含まれているわけではない。従って、本明細書の中の様々な場所で使われている「１つの実施形態において」、「実施形態において」、又は「具体的な実施形態において」という句は、必ずしも同じ実施形態を指しているわけではない。更に、本発明の任意の具体的な実施形態の特定の特徴、構造、又は特性を、任意の好適な方式において１つ以上の別の実施形態と組み合わせることができる。なお、本明細書における教えに鑑み、本明細書に説明及び図解した本発明の実施形態の別の変形形態及び変更形態が可能であり、これらは本発明の概念及び範囲の一部であるとみなされることを理解されたい。
【０１３２】
[175]本発明の実施形態は、プログラムされている汎用のデジタルコンピュータを使用することによって実施することができ、この場合、ＡＳＩＣ（特定用途向け集積回路）、ＰＬＤ（プログラマブルロジックデバイス）、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）、或いは、光学的、化学的、生物学的、若しくは量子工学、又はナノ工学に基づくシステム、コンポーネント、機構を使用することができる。一般的には、本発明の機能は、この技術分野において公知である任意の手段によって達成することができる。分散型又はネットワーク型のシステム、コンポーネント、及び回路を使用することができる。データの伝達又は転送は、有線、無線、又はその他の任意の手段によることができる。
【０１３３】
[176]また、図面に描いた要素の１つ以上は、特定の用途において有用であるとき、更に分割して、又は統合して、或いは一部の要素を省いて、或いは特定の場合には動作不能なように、実施できることも理解されるであろう。また、上述した方法をコンピュータが実行することができるように、機械可読媒体に格納することのできるプログラム又はコードを実装することも、本発明の概念及び範囲内である。
【０１３４】
[177]更には、図面における信号矢印は、特に明記しない限りは、制限ではなく例示のみを目的とするものとみなされたい。更に、本明細書において使用している語「又は、或いは、若しくは」は、特に明記しない限り、一般には「そのうちの少なくとも１つ」を意味するものとする。コンポーネント又はステップの組合せも、記載されているものとみなされ、その場合、分割又は組合せに関して不明確であるため専門用語は予測されるものとする。
【０１３５】
[178]本明細書の説明及び請求項全体を通じて使用されているとき、「ａ」、「ａｎ」、「ｔｈｅ」は、単数であることが文脈から明らかでない限りは、複数の存在も含まれる。また、本明細書の説明及び請求項全体を通じて使用されているとき、「における、の中の」の意味には、文脈によって特に明らかでない限りは、「の」も含まれる。
【０１３６】
[179]本発明の図解した実施形態の上記の説明（要約書に記載されている内容も含む）は、本発明を網羅的に説明すること、或いは、本明細書に開示した正確な形態に本発明を限定することを目的とするものではない。本明細書においては、本発明の具体的な実施形態及び例を例示のみを目的として説明しているが、関連する技術分野における当業者には認識、理解されるように、本発明の概念及び範囲内で様々な同等の変更形態が可能である。上述したように、これらの変更は、本発明の図解した実施形態の上記の説明に照らして本発明に行うことができるものであり、本発明の概念及び範囲に含まれるものとする。
【０１３７】
[180]従って、本明細書においては、本発明についてその具体的な実施形態を参照しながら説明したが、上記の開示においては様々な修正、変更及び置換えが意図されており、場合によっては、記載した本発明の範囲及び概念から逸脱することなく、本発明の実施形態のいくつかの特徴が、それ以外の特徴を対応して使用せずに採用されることが理解されるであろう。従って、特定の状況又は材料に適合するように、本発明の本質的な範囲及び概念に多数の変更を行うことができる。本発明は、請求項、若しくは、本発明を実施するうえで考えられる最良の形態として開示した具体的な実施形態、又はその両方において使用している特定の用語に制限されることはなく、本発明には、添付の請求項の範囲内に該当するあらゆる実施形態及び同等の形態が含まれるものとする。
【図面の簡単な説明】
【０１３８】
【図１】本発明の実施形態によるビデオプロセッサの高レベル機能のブロック図を示している。
【図２】本発明の実施形態によるドメインビデオノード（ＤＶＮ）を示している。
【図３】本発明の実施形態による、中央の探索ポジションの定義方式を示している。
【図４】本発明の実施形態による、４８×４８の参照ブロック内の探索領域を示している。
【図５】本発明の実施形態による、中央の８×５のポジションを同時に探索するプロセスを示している。
【図６】本発明の実施形態による、中央の９セットの８×５のポジションを探索するプロセスを示している。
【図７】本発明の実施形態による、ハーフペル双一次補間のプロセスを示している。
【図８】本発明の実施形態による、フルペルからハーフペルへの双一次補間のプロセスを示している。
【図９】本発明の実施形態による、ハーフペルの番号付け規則を示している。
【図１０】本発明の実施形態による、６タップフィルタに基づくＨ．２６４のハーフペル補間のプロセスを示している。
【図１１】本発明の実施形態による、６タップフィルタに基づくＨ．２６４のハーフペル補間のプロセスを示している。
【図１２】本発明の実施形態による、適応コンピューティングマシン（ＡＣＭ）のノードの要素のいくつかを示している。
【図１３】本発明の実施形態による、ドメインビデオノード（ＤＶＮ）のプログラミングモデル内のハードウェア要素のいくつかを示している。
【図１４】本発明の実施形態による、有限状態機械（ＦＳＭ）の状態遷移表を示している。
【図１５】本発明の実施形態による、ＤＶＮのタスクパラメータリスト（ＴＰＬ）を示している。
【図１６】本発明の実施形態による、タスクパラメータリスト内の位置０ｘ００〜０ｘ０３のフォーマットを示している。
【図１７】本発明の実施形態による、タスクパラメータリスト内の位置０ｘ０４〜０ｘ０５のフォーマットを示している。
【図１８】本発明の実施形態による、タスクパラメータリスト内のＡＣＫ＋テストのパラメータのフォーマットを示している。
【図１９】本発明の実施形態による、セットアップ及び続行のレジスタのフォーマットを示している。
【図２０】本発明の実施形態による、セットアップのバイトコード及び続行のバイトコードのフォーマットを示している。
【図２１Ａ】本発明の実施形態による、ＡＣＫ＋テストのバイトコードのフォーマットを示している。
【図２１Ｂ】本発明の実施形態による、ＡＣＫ＋テストのバイトコードのフォーマットを示している。
【図２１Ｃ】本発明の実施形態による、ＡＣＫ＋テストのバイトコードのフォーマットを示している。
【図２１Ｄ】本発明の実施形態による、ＡＣＫ＋テストのバイトコードのフォーマットを示している。
【図２１Ｅ】本発明の実施形態による、ＡＣＫ＋テストのバイトコードのフォーマットを示している。
【図２２】本発明の実施形態による、「一般的な」タスクのタスクパラメータリストエントリ及びバイトコードのフォーマットを示している。
【図２３】本発明の実施形態による、３２ビットの５１２ワードを有する８バンクとして編成されているＤＶＮメモリのメモリマップを示している。
【図２４】本発明の実施形態による、コマンドバッファのデータ構造のフォーマットを示している。
【図２５】本発明の実施形態による、「コントローラへの」ステータスワードのフォーマットを示している。
【図２６】本発明の実施形態による、探索範囲がＭ×Ｎセットの５×５である場合の、メモリ及びクロックサイクルに従っての参照ブロックのロングワードのフォーマットを示している。
【図２７】本発明の実施形態による、フラクショナルペルコスト関数及びテーブルの形式を示している。
【図２８】本発明の実施形態による、Ｍ＝５０列及びＮ＝５０行を有する参照ブロックのメモリレイアウトを示している。
【図２９】本発明の実施形態による、サイズが１６ペル×１６ペルである現在のブロックのメモリレイアウトを示している。
【図３０】本発明の実施形態による、５０×５０の参照ブロック内の探索領域を示している。
【図３１】本発明の実施形態による、中央の５×５のポジションを同時に探索するプロセスを示している。
【図３２】本発明の実施形態による、中央の９セットの５×５ポジションを同時に探索するプロセスを示している。
【図３３】本発明の実施形態による、４９セットの５×５ポジションを網羅的に探索するプロセスを示している。
【図３４】本発明の実施形態による、事前補間バッファを再ロードする必要のない、探索範囲±１７の場合の参照ブロックのサイズを示している。
【図３５】本発明の実施形態による、事前補間バッファを再ロードする必要のあるフルペル探索領域を示している。
【図３６】本発明の実施形態による、フルペルからハーフペルへの双一次補間を示している。
【図３７】本発明の実施形態による、ハーフペル双一次補間を行った配列を示している。
【図３８】本発明の実施形態による、６タップフィルタに基づくＨ．２６４ビデオのハーフペル補間を示している。
【図３９】本発明の実施形態による、ハーフペル補間の有限インパルス応答（ＦＩＲ）フィルタの要約を示している。
【図４０】本発明の実施形態による、ハーフペルの番号付け規則を示している。
【図４１】本発明の実施形態による、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ(R)  Ｍｅｄｉａ  Ｖｉｄｅｏ（ＷＭＶ）の場合のサブペル補間ＦＩＲフィルタの要約を示している。
【図４２】本発明の実施形態による、クォーターペルの番号付け規則を示している。
【図４３】本発明の実施形態による、ＤＶＮの実行ユニットを示している。
【図１】
2007538431.tif 000006
【図２】
2007538431.tif 000007
【図３】
2007538431.tif 000008
【図４】
2007538431.tif 000009
【図５】
2007538431.tif 000010
【図６】
2007538431.tif 000011
【図７】
2007538431.tif 000012
【図８】
2007538431.tif 000013
【図９】
2007538431.tif 000014
【図１０】
2007538431.tif 000015
【図１１】
2007538431.tif 000016
【図１２】
2007538431.tif 000017
【図１３】
2007538431.tif 000018
【図１４】
2007538431.tif 000019
【図１５】
2007538431.tif 000020
【図１６】
2007538431.tif 000021
【図１７】
2007538431.tif 000022
【図１８】
2007538431.tif 000023
【図１９】
2007538431.tif 000024
【図２０】
2007538431.tif 000025
【図２１Ａ】
2007538431.tif 000026
【図２１Ｂ】
2007538431.tif 000027
【図２１Ｄ】
2007538431.tif 000028
【図２１Ｅ】
2007538431.tif 000029
【図２２】
2007538431.tif 000030
【図２３】
2007538431.tif 000031
【図２４】
2007538431.tif 000032
【図２５】
2007538431.tif 000033
【図２６】
2007538431.tif 000034
【図２７】
2007538431.tif 000035
【図２８】
2007538431.tif 000036
【図２９】
2007538431.tif 000037
【図３０】
2007538431.tif 000038
【図３１】
2007538431.tif 000039
【図３２】
2007538431.tif 000040
【図３３】
2007538431.tif 000041
【図３４】
2007538431.tif 000042
【図３５】
2007538431.tif 000043
【図３６】
2007538431.tif 000044
【図３７】
2007538431.tif 000045
【図３８】
2007538431.tif 000046
【図３９】
2007538431.tif 000047
【図４０】
2007538431.tif 000048
【図４１】
2007538431.tif 000049
【図４２】
2007538431.tif 000050
【図４３】
2007538431.tif 000051
【図２１Ｃ】
2007538431.tif 000052
【国際調査報告】
2007538431.tif 000053