(57)【要約】システムはメモリ、いくつかの低レベルプロセッサおよび制御プロセッサを含みうる。メモリは指標データ、該指標データによって記述される他のデータおよび命令を保存しうる。低レベルプロセッサは前記他のデータを前記命令に基づいて処理しうる。制御プロセッサは前記指標データから前記他のデータを処理するのに必要とされる命令のサブセットを決定しうる。制御プロセッサはまた、命令のサブセットが前記いくつかの低レベルプロセッサにロードされるようにしうる。
2007538334.tif 000002
【特許請求の範囲】
【請求項１】
指標データ、該指標データによって記述される他のデータおよび命令を保存するメモリと、
前記他のデータを前記命令に基づいて処理する複数の低レベルプロセッサと、
前記指標データから前記他のデータを処理するのに必要とされる命令のサブセットを決定し、前記命令のサブセットが前記複数の低レベルプロセッサのうちの少なくとも一つにロードされるようにする制御プロセッサ、
とを有することを特徴とするシステム。
【請求項２】
前記制御プロセッサが前記複数の低レベルプロセッサのそれぞれに動作的に接続されていることを特徴とする、請求項１記載のシステム。
【請求項３】
各低レベルプロセッサが第一のサイズの命令メモリを含み、
制御プロセッサが前記第一のサイズの少なくとも10倍である第二のサイズの命令メモリを含むことを特徴とする、請求項１記載のシステム。
【請求項４】
前記メモリ、前記複数の低レベルプロセッサおよび前記制御プロセッサに接続された、前記指標データ、前記他のデータおよび前記命令の転送を調整する直接メモリアクセス・デバイスをさらに有することを特徴とする、請求項１記載のシステム。
【請求項５】
前記直接メモリアクセス・デバイスおよび前記複数の低レベルプロセッサが共通のチップ内に含まれていることを特徴とする、請求項４記載のシステム。
【請求項６】
前記制御プロセッサが前記共通のチップ内に含まれていることを特徴とする、請求項５記載のシステム。
【請求項７】
前記指標データおよび前記他のデータを前記メモリに提供するデータソースをさらに有することを特徴とする、請求項１記載のシステム。
【請求項８】
前記データソースが：
チューナーまたは通信回路
を含むことを特徴とする、請求項７記載のシステム。
【請求項９】
前記複数の低レベルプロセッサによって処理されたデータを受け取るデータ目的地をさらに有することを特徴とする、請求項１記載のシステム。
【請求項１０】
前記データ目的地が：
記憶装置または出力インターフェース、
を含むことを特徴とする、請求項９記載のシステム。
【請求項１１】
第一のデータから第一のプロセッサによって実行されるべきタスクを判別し、
前記タスクを実行するための命令を第二のプロセッサにロードし、
前記タスクを実行するための前記命令を第二のデータに対して実行する、
ことを含むことを特徴とする方法。
【請求項１２】
前記第二のデータを前記第二のプロセッサに前記タスクの間に転送する、
ことをさらに含むことを特徴とする、請求項１１記載の方法。
【請求項１３】
前記第一のデータが前記第二のデータを記述するものであることを特徴とする、請求項１１記載の方法。
【請求項１４】
前記第二のデータがビデオ情報を含み、
前記第一のデータが少なくとも前記ビデオ情報のエンコード種別を含むことを特徴とする、請求項１３記載の方法。
【請求項１５】
前記第二のデータがビデオ情報を含み、
前記第一のデータが少なくとも前記ビデオ情報の表示モードを含むことを特徴とする、請求項１３記載の方法。
【請求項１６】
前記第一のプロセッサによって前記ロードののちに、実行されるべき別のタスクをある第三のデータから判別し、
前記別のタスクを実行するための別の命令を第三のプロセッサにロードする、
ことをさらに含むことを特徴とする、請求項１１記載の方法。
【請求項１７】
前記別の命令を実行するための前記別の命令を、前記第三のデータによって記述される第四のデータに対して実行する、
ことをさらに含むことを特徴とする、請求項１６記載の方法。
【請求項１８】
提供されたプログラムに基づいて第一のデータを処理するための複数の第一のプロセッサと、
前記第一のデータを記述する第二のデータに基づいて前記第一のプロセッサに提供するための適切なプログラムを決定する第二のプロセッサと、
前記第一のプロセッサおよび前記第二のプロセッサに接続された、前記第一のデータおよび前記適切なプログラムを前記第一のプロセッサに提供し、前記第二のデータを前記第二のプロセッサに提供するメモリアクセス装置、
とを有することを特徴とする装置。
【請求項１９】
前記第一のプロセッサおよび前記メモリアクセス装置が一つのパッケージ内に含められていることを特徴とする、請求項１８記載の装置。
【請求項２０】
前記第一のプロセッサが少なくとも８個の相異なるプロセッサを含むことを特徴とする、請求項１８記載の装置。
【請求項２１】
一つの第一のプロセッサが第一の命令メモリを含み、
前記第二のプロセッサが、前記第一の命令メモリの少なくとも10倍の大きさの第二の命令メモリを含む、
ことを特徴とする、請求項１８記載の装置。
【請求項２２】
命令を含んでいる機械アクセス可能媒体であって、該命令は実行されたときに機械をして：
いくつかの計算タスクのうち、第一のデータに対して実行すべき一つの計算タスクを、前記第一のデータを特徴付ける第二のデータに基づいて判別し、
前記一つの計算タスクを実行する別の命令をロードし、
前記一つの計算タスクを実行する前記別の命令を、前記第一のデータに対して実行する、
ことをせしめることを特徴とする機械アクセス可能媒体。
【請求項２３】
さらなる命令を含んでいる請求項２２記載の機械アクセス可能媒体であって、該さらなる命令は実行されたときに機械をして：
前記一つの計算タスクを実行する前記別の命令を、前記機械内の複数の相異なるプロセッサの間に分散させる、
ことをせしめることを特徴とする機械アクセス可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
特許請求される発明の実装は概略的には情報処理に、より詳細には受信したビデオ情報の処理に関しうる。
【背景技術】
【０００２】
ある種の処理タスクには、複雑なアルゴリズムおよび著しい量の処理データの両方が関わってくることがありうる。ビデオ情報のデコードおよび／またはエンコードはそのような処理タスクの一つでありうる。たとえば、ビデオ情報の種々のインターレース方式、フレーム種別、順序などは、はいってくるビデオのストリームを扱うプロセッサに対してアルゴリズム上の複雑さを呈しうる。いくぶん高いフレームレートおよび／またはフレームあたりのピクセル数も著しい量の処理データ（たとえば計算負荷）を呈しうる。
【０００３】
そのような処理タスクを扱う一つの方法は、論理的に複雑なタスクを扱うことができ、それでいて著しい量のデータを扱うのに十分高速／高性能であるプロセッサを使用することでありうる。しかしながら、そのようなアプローチは比較的速いクロック周波数で動作する比較的大きくて複雑なプロセッサを必要としうる。比較的速いクロック周波数で動作する大きくて複雑なプロセッサは、比較的高い電力量を費消しうる。
【０００４】
本明細書に組み込まれてその部分をなす付属の図面は、本発明の原理と整合する一つまたは複数の実施形態を示し、本文と一緒にそのような実施形態を説明するものである。図面は必ずしもスケール通りではなく、むしろ本発明の原理を図解することに重点が置かれている。
【発明を実施するための最良の形態】
【０００５】
以下の詳細な記述は付属の図面を参照する。同じまたは同様な要素を指すために異なる図面において同じ参照符号が使われることがある。以下の記述では、限定ではなく説明の目的で、特許請求される発明のさまざまな側面の完全な理解を提供するために、特定の構造、アーキテクチャ、インターフェース、技法などといった個別的な詳細が記載されるが、本開示の恩恵を得た当業者には、特許請求される本発明のさまざまな側面はこうした個別的な詳細からは外れる他の例において実施されることもできることは明らかであろう。場合によっては、よく知られた装置、回路および方法の記述は、本発明の記載を不必要な詳細によって埋没させないよう省略される。
【０００６】
図１は例としてのシステム１００を示している。システム１００の例としての実施形態はパーソナルビデオレコーダー（PVR）またはデジタル多用途ディスクレコーダー（DVD-R）であるが、特許請求される発明はこれに関して限定されない。たとえば、システム１００は汎用コンピュータ、携帯機器、消費者電子装置またはその他の電気システム内に具現されてもよい。システム１００は単一の装置内に具現されてもよいが、実施形態によってはシステム１００のある種の構成要素はシステム１００のその他の構成要素からはリモートおよび／または物理的に離れていてもよい。さらに、システム１００は離散的な諸構成要素を含むものとして例示されるが、これらの構成要素はハードウェア、ソフトウェア／ファームウェアまたはそれらの組み合わせにおいて実装されてもよい。ハードウェアで実装されるとき、システム１００のいくつかの構成要素がある種のチップまたは装置において組み合わされてもよい。
【０００７】
システム１００はデータソース１１０、メモリ１２０、データプロセッサ１３０、データ目的地１７０を含みうる。ソース１１０はデータをメモリ１２０に送りうる。メモリ１２０内のデータはデータプロセッサ１３０によって処理されうる。処理されたデータは目的地１７０に送られうる。説明の目的上、送られ、作用されるデータはメディアデータ（たとえばビデオ情報）を含むことがあるが、特許請求される発明はこれに関して限定されない。データプロセッサ１３０はここにおける記載と整合する、メディア情報以外のその他の種類のデータを処理してもよい。
【０００８】
ソース１１０はシステム１００の残りにメディア情報を提供する装置を含みうる。ソース１１０によって提供されるメディア情報は、MPEG-1,  MPEG-2,  MPEG-4,  H.264,  ウィンドウズ（登録商標）・メディア・ビデオ・バージョン９（WMV9）および先進ビデオシステム（AVS:  Advanced  Video  System）のフォーマットといったフォーマットでエンコードされたビデオ情報を含みうる。特許請求される発明はここで具体的に言及されるフォーマットに限定されない。むしろ、現在知られている、あるいはのちに開発されるいかなるメディアフォーマットでもここに開示される方式に従って使用されうる。
【０００９】
実施形態によっては、ソース１１０は、ビデオ情報（たとえば高精細度（HD:  high  definition）MPEG-2情報）のストリームまたはチャンネルをメディア情報の他のストリームまたはチャンネルから分離させるためのチューナーを含みうる。いくつかの実施形態では、ソース１１０は記憶媒体からメディア情報を読むための読み取り器を含みうる。たとえば、そのような読み取り器は、DVD、ハードディスク、半導体記憶装置またはその他の記憶媒体からビデオ情報を抽出するための光学式、磁気式および／または電気式読み取り器を含みうる。
【００１０】
実施形態によっては、ソース１１０は、メディア情報を通信リンク（図示せず）から受信するための受信機回路を含みうる。ソース１１０中のそのような受信機は、有線、光または無線の伝送媒体から情報を受信するよう構成されうる。ソース１１０中の受信機は、所望の情報を他の受信情報から分離させるためのチューナーその他の装置と一緒に作用してもよいし、そうでなくてもよい。
【００１１】
メモリ１２０はソース１１０からメディア情報を受け取って該メディア情報を保存しうる。データプロセッサ１３０から命令されればメモリ１２０が処理されたメディアデータを目的地１７０に提供することもできるし、および／または目的地１７０がデータプロセッサ１３０によってトリガーされたときにそのような処理されたメディアデータを読み取ることもできる。メモリ１２０は、データの高速な転送および保存を容易にするためにランダムアクセスメモリ（RAM）を含みうる。そのようなRAMは、システム１００の設計パラメータに従って、同期式、非同期式、倍速データレート（DDR:  double  data  rate）などでありうる。
【００１２】
メディアデータを保存することに加えて、メモリ１２０はデータプロセッサ１３０および／またはその構成要素による使用のための命令を保存しうる。そのような命令はタスク特異的であり、要求されたときにデータプロセッサ１３０に提供されうる。メモリ１２０は、データプロセッサ１３０によってロードされたときにデータプロセッサ１３０がソース１１０から受け取ったデータ（たとえばメディアまたはビデオデータ）に対して多様な処理タスクを実行できるようにするそのような命令の一つまたは複数のセットを含みうる。
【００１３】
データプロセッサ１３０は、制御プロセッサ１４０、いくつかの低レベルプロセッサ１５０−１、１５０−２…１５０−ｎ（まとめて「低レベルプロセッサ１５０」）および直接メモリアクセス（DMA:  direct  memory  access）１６０を含みうる。実施形態によっては、要素１３０〜１６０のすべては同じチップまたはパッケージ内に位置されうる。しかし、実施形態によっては、低レベルプロセッサ１５０およびDMA１６０は一つのチップまたはパッケージ内でありうる一方、制御プロセッサ１４０は別個のチップまたはパッケージに位置されうる。その他の組み合わせおよび実装も可能である。
【００１４】
制御プロセッサ１４０は、比較的複雑な処理動作を制御および／または調整するために十分な命令メモリを含みうる。そのような複雑な動作（たとえばビデオ情報のデコード）を扱う際には、制御プロセッサはそのタスクのためにどのリソースが必要とされるかを判定し（たとえばデコード・アルゴリズムのようなアルゴリズムを構文解析することによって）、リソースをそのタスクに割り当てる（たとえば、低レベルプロセッサ１５０を適切に構成設定することによって）ことを両方行いうる。この後者、割り当て機能においては、制御プロセッサ１４０は、タスク特異的な命令を、メモリ１２０から低レベルプロセッサ１５０にロードするよう構成されうる。
【００１５】
いくつかの処理動作は「データ駆動」（たとえば、ソース１１０からのデータによって定義される）でありうる。そこで制御プロセッサ１４０はどの種類の処理が実行されるべきかを決定するために指標データを調べうる。制御プロセッサ１４０は次いで、指標データに続くソース１１０からのデータを処理するために、メモリ１２０からの適切な命令を用いて低レベルプロセッサ１５０を構成設定しうる。制御プロセッサ１４０はまた、低レベルプロセッサ１５０のあるものを、並列式にあるデータを処理するため、および／またはあるタスクを実行するために割り当てうる。制御プロセッサ１４０は低レベルプロセッサ１５０を、新たに受け取られた指標データに基づいて必要に応じて構成設定しなおしうる。この制御方式については、のちにさらに詳細に述べる。
【００１６】
論理的に複雑なタスクおよび比較的多量のデータに関わるタスクを処理するために、制御プロセッサ１４０は論理的な複雑さを扱うことができ、当該量のデータを扱うために望むなら「オンザフライで」低レベルプロセッサ１５０を構成設定することができる。これらの機能を達成するため、制御プロセッサ１４０はその命令メモリにおいて、低レベルプロセッサ１５０の約10倍以上の数の命令（たとえば、少なくとも10倍）のための余地を有しうる。ある実施形態では、制御プロセッサ１４０は約32キロバイト（KB）の命令RAMを有しうる。ただし、特許請求される発明はこれに関して限定されない。
【００１７】
低レベルプロセッサ１５０は制御プロセッサ１４０より少量の命令メモリ（たとえば1/10未満）をもついくつかのプロセッサを含みうる。ある実施形態では、低レベルプロセッサ１５０はそれぞれ約1.5キロバイト（KB）の命令RAMを有しうるが、特許請求される発明はこれに関して限定されない。命令メモリの容量がより小さいため、低レベルプロセッサ１５０のそれぞれは、比較的小さなコードサイズに対応するタスクを実行しうる。低レベルプロセッサ１５０はまたたとえば、キャッシュ（caches）、深いパイプライン（deep  pipelines）、分岐予測（branch  prediction）、投機的実行（speculative  execution）などのうちの一つまたは複数を欠いていてもよい。しかし、低レベルプロセッサ１５０の比較的小さなメモリおよび比較的単純な構造は、より複雑なプロセッサに比して電力および大きさの節約につながりうる。実施形態によっては、諸低レベルプロセッサ１５０は構造および性能において均質でもよいが、実施形態によっては諸低レベルプロセッサ１５０は構造および／または性能において不均質であってもよい。
【００１８】
説明の簡単のため図１には明示的に示していないが、低レベルプロセッサ１５０はいくつかの実施形態では相互接続されていてもよい。たとえば、行列型の構成では、低レベルプロセッサ１５０の一つが低レベルプロセッサ１５０のうちの一つ、二つ、三つまたはそれ以上の他のものに接続されていることができる。いくつかの実施形態では、低レベルプロセッサ１５０の数は一桁（たとえば４つまたは８つ）であってもよいが、他の実施形態では２桁の数（たとえば16、20、32、40など）の低レベルプロセッサ１５０があってもよい。また、低レベルプロセッサ１５０は処理タスクを実行するものとして記述されることになるが、実施形態によっては低レベルプロセッサ１５０のそれぞれは一つまたは複数の低レベルプロセッサ１５０と共同してサブタスクを実行してもよい。低レベルプロセッサ１５０については、その他の構造上および処理フローの変形も可能であり、かつ考えられている。
【００１９】
いずれにせよ、低レベルプロセッサ１５０はメモリ１２０からの命令および制御プロセッサ１４０からの指揮に基づいてそれらの命令を使って処理するデータを受け取りうる。受け取った命令に依存して、低レベルプロセッサ１５０のそれぞれは、プロセッサの間で可能な異なる処理タスクについての特定目的プロセッサとなるよう構成されうる。低レベルプロセッサ１５０は、それぞれのデータを可能性としては並列で、取得し、処理するよう構成されうる。さらに、低レベルプロセッサ１５０のどの一つも、現在のタスクが完了するたびに構成設定しなおされ（たとえば異なる命令を受け取り）うる。しかし、制御プロセッサ１４０は、低レベルプロセッサ１５０のいくつかが実行される必要のあるタスクのためにすでに構成設定されている場合にはそれらを再使用してもよい（すなわち、構成設定しなおさない）。制御プロセッサ１４０による低レベルプロセッサ１５０の構成設定のため、データプロセッサ１３０は階層的プロセッサ（hierarchical  processor）と称されうる。
【００２０】
DMA１６０はメモリ１２０からのデータの読み取りおよび／またはメモリ１２０へのデータの書き込みを行いうる。そうすることにおいて、DMA１６０は、制御プロセッサ１４０がソース１１０から指標データを読むのを容易にしうる。DMA１６０はまた、命令データおよび処理すべきデータを低レベルプロセッサ１５０に提供しうる。DMA１６０はまた、低レベルプロセッサ１５０の間のデータの流れを制御しうる。DMA１６０はメモリ１２０と単一の接続でつながれているように図示されているが、それは単にDMA１６０とメモリ１２０との間の双方向のデータ転送を示すのみであって、特許請求される発明を限定するものではないことを理解しておくべきである。実際上は、DMA１６０とメモリ１２０との間には、図１には明示的に示されていないものの、一つまたは複数の追加的な（たとえば制御）接続が存在しうる。この例示的な原則は、図１に示されているその他の接続にもあてはまる。
【００２１】
データ目的地１７０は、処理されたデータ（たとえば、デコードされたメディアまたはビデオ情報）を保存または出力するよう構成されうる。実施形態によっては、目的地１７０は、別のシステムまたはシステム１００の別の構成要素（図示せず）にデータプロセッサ１３０によって処理されたデータへのアクセスを提供するための出力インターフェースを含みうる。そのような物理的な出力インターフェースは光学式、電気式、無線式などでありえ、データの伝送および／またはアクセスのための一つまたは複数の現存またはのちに開発されるインターフェース仕様に従うものでありうる。
【００２２】
実施形態によっては、目的地１７０は処理されたデータを保存するための記憶装置を含みうる。たとえば、目的地１７０は情報を保存するためのハードディスクまたはフラッシュメモリを含みうる。実施形態によっては、目的地１７０は、処理された情報を持ち運び可能な記憶媒体に転送するための書き込み可能な光学式ドライブ（たとえばDVD-RWなど）を含みうる。後刻、再生または他の何らかの目的のために、目的地１７０内の保存情報に表示プロセッサ（図示せず）がアクセスしてもよい。
【００２３】
目的地１７０についていくつかの例示的な実施形態を議論してきたが、特許請求される発明は明示的に言及されたものに限定されるべきではなく、メモリ１２０からの処理された情報を伝送または保存することのできるいかなる装置またはインターフェースをも包含すべきである。デコードされたビデオ情報は、実施形態によっては、それが受け取られたストリームに再挿入されてもよい（たとえば別のチャンネルへの戻し変調（back  modulation）によって）。
【００２４】
図２は、データに対する作用のプロセス２００を示すフローチャートである。プロセス２００は説明の便宜上システム１００に関して述べられるかもしれないが、特許請求される発明はこれに関して限定されない。処理は制御プロセッサ１４０がメモリ１２０から指標データを読み取り、該指標データに基づいて実行すべき一つまたは複数のタスクを判別することで開始されうる（動作２１０）。制御プロセッサ１４０は、その命令メモリ内に常駐している命令（たとえばアルゴリズムをなす命令）を使ってそのような判別を行いうる。のちにより詳細に述べる一つの例では、制御プロセッサ１４０はビデオデータのためのデコード・アルゴリズムを実行しうる。そして使用される指標データはたとえば、ビデオデータのある特定のフレームがどのような種類のエンコードを有しているかでありうる。
【００２５】
処理は続き、制御プロセッサ１４０は、前記一つまたは複数のタスクを実行するための命令が低レベルプロセッサ１５０のうちの一つまたは複数にロードされるよう手配しうる（動作２２０）。実施形態によっては、制御プロセッサ１４０はDMA１６０に、メモリ１２０内の適切な命令（たとえば単数または複数のマイクロコード・プログラム）にアクセスしてそれらを低レベルプロセッサ１５０に渡すよう命令しうる。実施形態によっては、制御プロセッサ１４０は低レベルプロセッサ１５０に、メモリ１２０から命令をDMA１６０を介して入手するよう命令しうる。指標データが処理されるべき他のデータに先行する限り、制御プロセッサ１４０は比較的低い遅延（delay）または潜在時間（latency）で命令を低レベルプロセッサ１５０にロードしうる。
【００２６】
命令を受け取った低レベルプロセッサ１５０は該命令を実行して、制御プロセッサ１４０によって決定された前記一つまたは複数のタスクを実行しうる（動作２３０）。そのような命令実行は、命令をロードした後まもなく、おそらくは小規模な構成設定（たとえばメモリ１２０中のどこでデータを取得すべきか）が低レベルプロセッサ１５０に対してなされたのち開始されうる。動作２３０またはそれ以前の動作の一部として、制御プロセッサ１４０または低レベルプロセッサ１５０はDMA１６０を、処理タスクの間、低レベルプロセッサ１５０にデータを届け、低レベルプロセッサ１５０からデータを受け付けるようプログラムしうる。一つの計算タスクは単一の低レベルプロセッサ１５０が実行しうるが、実施形態によっては一つのタスクを実行するために二つ以上の低レベルプロセッサ１５０が協働しうる。また、実施形態によっては、低レベルプロセッサ１５０はそれぞれのタスクまたはそのようなタスクの部分を並列的に実行してもよい。
【００２７】
低レベルプロセッサ１５０はそれぞれの処理タスクのためにメモリ１２０との間でDMA１６０を介して適宜データを転送しうる（動作２４０）。そのような処理が完了したとき、処理されたデータは、バッファリングおよび／または目的地１７０への転送のために、メモリ１２０に転送されうる。
【００２８】
動作２１０〜２４０は逐次の計算タスクのために適宜反復されうる。上記のように、制御プロセッサ１４０は動作２１０および２２０を実行および／または調整することができ、低レベルプロセッサ１５０は動作２３０および２４０を実行および／または調整することができる。動作２１０〜２４０の反復は、指標データがメモリ１２０によって受け取られるのがいつかに依存しうる。たとえば、指標データの次のデータ片（たとえば、次のタスクまたはタスクのセットを示すもの）が低レベルプロセッサ１５０がデータを処理し終わるまで受け取られないとすると、制御プロセッサ１４０は動作２１０を動作２４０のあとまで反復しないこともありうる。このことは図２で実線矢印によって示されている。
【００２９】
しかし、指標データの次のデータ片が低レベルプロセッサ１５０がデータを処理し終わるより前に受け取られるとすると、制御プロセッサ１４０は動作２１０を動作２２０のあとに反復しうる。このことは図２で破線矢印によって示されている。そのような筋書きでは、新たな指標データが利用可能であれば、制御プロセッサ１４０は低レベルプロセッサ１５０のいくつかへの命令のロードを終わらせ、低レベルプロセッサ１５０が動作２３０および２４０を実行している間に動作２１０および２２０においてタスクを判別して命令をロードしうる。ここでの記載と整合する、制御プロセッサ１４０と低レベルプロセッサ１５０との間のその他の処理の流れも可能である。
【実施例】
【００３０】
システム１００およびプロセス２００の理解を助ける具体的な例をこれから呈示する。以下に述べるようにシステム１００およびプロセス２００はビデオ情報をデコードするのになじみやすいが、特許請求される発明はそれに限定されるべきではない。さらに、システム１００およびプロセス２００は、ビデオ・デコードだろうとその他の種類だろうと以下で議論するよりもずっと複雑なアルゴリズムにもなじみやすい。
【００３１】
図３は、例としてのビデオ処理アルゴリズム３００を示している。アルゴリズム３００は、ビデオ情報のフレームをデコードするための、当該フレームがイントラコードされた（I）画像か予測された（P）画像か双方向予測された（B）画像かに依存し、かつそのI、PまたはB画像のビデオ情報がインターレースされているか順次走査されているかに依存して、機能A〜Gのうちの一つまたは複数を実行しうる。このフレーム種別（たとえばBフレーム）およびビデオモード（たとえばインターレース）の情報は指標データの一例でありうる。それは、当該フレームのビデオデータの残りに対してどのような処理タスクが実行されるべきかを指示するものだからである。
【００３２】
例示のため、インターレースされたBフレームの受信を想定すると、アルゴリズム３００はそのようなビデオ情報のフレームをデコードするために機能DおよびGが実行されるべきであると判定する。図３における矢印は、どの機能を実行すべきかの判定を行うためにとるべき論理的なステップを図解している。機能DおよびGは、ビデオデータのインターレースされたBフレームをデコードするのに必要な相異なる計算タスクを表しうる。もちろん、そのようなビデオ情報のフレームをデコードするために必要とされるタスクが２つより多く、あるいは少なくてもよい。例示した２つというのは純粋に例示および説明の目的のためである。
【００３３】
図４は、システム１００がアルゴリズム３００をどのように実装しうるかを示しているが、異なる実装を示すためにアルゴリズム４００と表示されている。比較のため、ここでも処理されるべきビデオ情報はインターレースされたBフレームであると想定することにする。図のように、制御プロセッサ１４０はアルゴリズム４００のさまざまな論理部分を逐次経て、インターレースされた種別Bのデータフレームについてどのようなタスクが実行されるべきかを判別することができる（動作２１０）。
【００３４】
制御プロセッサ１４０は次いでプログラム２を低レベルプロセッサ１５０の一つまたは複数にロードし（動作２２０）、それが実行されるようにしうる。プログラム２の複雑さに基づいて、制御プロセッサ１４０は対応する命令を低レベルプロセッサ１５０のうちの単一のものまたは低レベルプロセッサ１５０のうちの複数のものにロードしうる。プログラム２を複数の低レベルプロセッサ１５０にわたって分散させるかどうかは制御プロセッサ１４０が決定してもよいし、あるいはそのようなことはあらかじめ決定されていて、たとえばプログラム２がメモリ１２０に保存される仕方に反映されているのでもよい。ひとたび制御プロセッサ１４０がプログラム２をロードしたら、制御プロセッサ１４０は、指標データ（たとえばフレーム種別および／またはモード）がビデオデータの別のフレームについて利用可能であれば、動作２１０および２２０を再び実行しうる。
【００３５】
低レベルプロセッサ１５０は次いで機能DおよびG、プログラム２の第一および第二の部分を実行しうる（動作２３０／２４０）。実施形態によっては、一つの低レベルプロセッサ（たとえば１５０−１）が機能DおよびGの両方を実行しうる。実施形態によっては、ある低レベルプロセッサ（たとえば１５０−１）が機能Dを実行し、ある低レベルプロセッサ（たとえば１５０−２）が機能Gを実行するのでもよい。実施形態によっては、二つ以上の低レベルプロセッサ１５０が協働して機能DおよびGのうちの少なくとも一つ、たとえば機能Gを実行してもよい。ここでの記載と整合するその他の実装も可能である。
【００３６】
図５は、プログラム０〜５がメモリ１２０内にどのように保存されうるかを示している。構造５００は、メモリ１２０内の連結リスト、配列などのようなデータ構造を含みうる。プログラム０〜５は構造５００内のあるアドレスに常駐しうるものであり、そのアドレスは概念的に構造中の行によって図示されている。いくつかの実施形態では、プログラム（たとえばプログラム２）の同じバージョンが、低レベルプロセッサ１５０のいずれによっても実行される。
【００３７】
構造５００内の列を定義する点線はプログラム（たとえばプログラム２）が、低レベルプロセッサ１５０のうちの異なるものについては異なる扱いがされる可能性を表している。実施形態によっては、たとえば、プログラム（たとえばプログラム２）は、異なる低レベルプロセッサ（たとえば１５０−１ないし１５０−３）について、実行すべきいくつかの部分（たとえば図５では３つ；ただし、これは特許請求される発明を限定するべきではない）に分割されうる。たとえば、プログラム２の第一の部分は機能Dを実行する命令などであり、プログラム２の第二の（およびありうる第三の）部分は機能Gを実行する命令などである。実施形態によっては、低レベルプロセッサ１５０のうちの異なるものは、アドレス指定、データ転送などを支援するためにプログラム（たとえばプログラム２またはその一部分）の微妙に異なったバージョンをロードしうる。
【００３８】
ここに記載される計算集約的なタスクからの高度に複雑なタスクの分割は、システム１００が、アルゴリズムの論理的な複雑さを扱える、可能性としてはより低パフォーマンス（たとえばより低電力）制御プロセッサ１４０と、アルゴリズムの計算負荷を扱うための多数のそれほど複雑でない（たとえばより小型でより低電力）低レベルプロセッサ１５０とを含むことを許容する。そのような方式を使うことで、システム１００は、同じ計算動作（たとえばビデオデコード）のために、そうでない場合に可能であるであろうよりも消費する電力が少なくなりうる。高パフォーマンスおよび低電力使用の両方がシステム１００によって得られる。ビデオの圧縮解除においてはたとえば指標データ（たとえばどのような処理タスクがやってくるかについての詳細な情報）が他のデータに先立って伝送されるからである。そのような指標データを使って、制御プロセッサ１４０はデータプロセッサ１３０の残りを、ちょうどそのやってくるタスクを実行するよう、オンザフライでカスタマイズする、および／または構成設定しなおすことができるのである。
【００３９】
本発明の原理と整合する一つまたは複数の実施形態の以上の記述は例示および説明を提供するが、網羅的であることも、開示される厳密な形に本発明の範囲を限定することも意図されてはいない。修正および変形が上記の教示に照らして可能であり、あるいは本発明のさまざまな実施形態の実践から獲得されうる。
【００４０】
たとえば、ここで記載される階層的処理方式はビデオデータに限定されない。むしろ、低レベルプロセッサ１５０またはオンザフライでプログラム可能な別のプロセッサもしくは論理を構成設定するために指標データ（たとえば将来の処理タスクを示すデータ）が利用可能であるいかなるデータにも適用されうる。また、単一の装置として示されたものの、実施形態によってはメモリ１２０は複数の装置を含みうる。たとえば、処理すべきデータは比較的大きなRAMに保存される一方、低レベルプロセッサ１５０のための命令はより小さなRAM、専用の読み出し専用メモリ（ROM）または他の何らかの別個の記憶装置に保存されることができる。
【００４１】
さらに、制御プロセッサ１４０がアルゴリズム的な複雑さを扱い、低レベルプロセッサ１５０がデータ処理を扱ったが、複雑さと処理ニーズのそのような厳格な分離は常に行われるわけではない。たとえば、制御プロセッサ１４０がいくつかの事例でデータを処理することもあるし、低レベルプロセッサ１５０がいくつかの事例で限られた論理的構文解析および／または判断を扱うこともある。しかし、そのようなハイブリッド方式でもやはり、低レベルプロセッサ１５０が実際的にできるだけ多くのデータを処理し、制御プロセッサ１４０が実際的にできるだけ多くのアルゴリズム的複雑さを扱うことが望ましいことでありうる。また、ビデオ情報のデコードが一つの実施形態として記載されてきたが、他の実施形態では他の機能も可能である。たとえばシステム１００は、メディア情報をエンコードするため、メディア情報をレンダリングするため、物理現象をモデル化するため、またはその他、大量のデータの処理に関わりうる比較的複雑な数値動作を実行するために構成されてもよい。
【００４２】
さらに、図２における諸動作は図示した順序で実装される必要はないし、諸動作のすべては必ずしも実行される必要はない。また、他の動作に依存しないような動作は他の動作と並列的に実行されてもよい。さらに、この図における動作の少なくともいくつかは、機械可読媒体において具現される命令または命令のグループとして具現されてもよい。
【００４３】
本願の記載において使用されるいかなる要素、動作または命令も、明示的にそう述べられていない限り、本発明にとって決定的または本質的であるとして解釈されるべきではない。また、ここでの用法では、単数形の表現は一つまたは複数の項目を含むことが意図されている。一つの項目だけが意図されている場合には、「一つの」の用語または同様の言辞が使用される。特許請求される発明の上記の実施形態には、本発明の精神および原理から実質的に外れることなく変形および修正がなしうる。そのような修正および変形のすべてはこの開示の範囲内においてここに含められ、付属の請求項によって保護されることが意図されている。
【図面の簡単な説明】
【００４４】
【図１】例としてのシステムを示す図である。
【図２】データに対して作用するプロセスを示すフローチャートである。
【図３】例としてのビデオ処理アルゴリズムを示す図である。
【図４】図１のシステムが図３のアルゴリズムをどのように具現化しうるかを示す図である。
【図５】図４におけるさまざまなプログラムがどのようにメモリに保存されうるかを示す図である。
【図１】
2007538334.tif 000003
【図２】
2007538334.tif 000004
【図３】
2007538334.tif 000005
【図４】
2007538334.tif 000006
【図５】
2007538334.tif 000007
【国際調査報告】
2007538334.tif 000008
2007538334.tif 000009
2007538334.tif 000010