(57)【要約】  ＭＰＥＧデコーダ（１００〜１８０）は、連続する画像を復号する場合に、参照画像に関し画像データメモリ（１５０）に対して異なるフォーマット（リニア、タイル化、等）を使用することができる。各フォーマットは、利点及び欠点を招来する。本開示は、異なるビデオシーケンスが、例えば画像間に多くの動きがあるか又は少しの動きしかない場合に、或る画像バッファフォーマットには良好に適合するが、他のものには適合しないような特性を有し得ることを示す。有利には、上記デコーダは、パラメータ化された画像バッファフォーマット並びに入力ストリーム及び／又は測定された復号性能の解析を使用して（１９０）、ストリームの現部分に対して最良の画像バッファフォーマットを動的に選択する（９０、１６０、１７０）。キャッシュ制御機能も、入力された特定のデータに適合するように制御することができる（１９８）。
2007510320.tif 000002
【特許請求の範囲】
【請求項１】
動画シーケンスを表す画像データを画像データ処理システムにおけるメモリサブシステム内に配置する方法において、該方法が、前記メモリにおける前記シーケンスの連続する画像に関する画像データの配置を、前記画像データの測定された特性、前記処理システムの性能の測定された特性、及び前記画像処理システム内での前記画像データの後の処理の既知の特性のうちの少なくとも１つに従って動的に選択するステップを有していることを特徴とする方法。
【請求項２】
請求項１に記載の方法において、前記メモリサブシステムが、ページ化されたメモリから構成された画像データ記憶メモリを含んでいることを特徴とする方法。
【請求項３】
請求項１又は請求項２に記載の方法において、前記メモリサブシステムが、主画像データ記憶メモリに加えて、プロセッサキャッシュメモリを含んでいることを特徴とする方法。
【請求項４】
請求項１ないし３の何れか一項に記載の方法において、記憶メモリにおける画像データの配置を選択する前記ステップが、画像データがメモリ内にライン毎に記憶されるようなリニアフォーマットと、ピクセルの二次元群がメモリ内でグループ化されるような少なくとも１種類のタイル化フォーマットとの間で選択するステップを有していることを特徴とする方法。
【請求項５】
請求項３又は請求項４に記載の方法において、前記メモリサブシステムがキャッシュメモリを含む場合、前記タイル化フォーマットが、１つのタイルのデータが全数のキャッシュブロックに対応するように定義されることを特徴とする方法。
【請求項６】
請求項１ないし５の何れか一項に記載の方法において、当該方法が、前記メモリにおけるデータの配置の選択に影響を与えるために、前記画像データの特性として：
Ａ．入力されるデータ内で符号化された動きベクトルの変動性；
Ｂ．画像タイプ；
Ｃ．当該シーケンスにおける画像当たりの符号化データサイズ；
Ｄ．当該画像データが導出される画像の構造；
Ｅ．画像を画像メモリに記憶するために使用される構造；及び
Ｆ．当該画像ストリームのシーケンスヘッダを復号することにより得られる該ストリームの一定の特性；
のうちの１以上を測定するステップを有していることを特徴とする方法。
【請求項７】
請求項６に記載の方法において、該方法が、当該動画シーケンスの先を調べて該シーケンスの或る部分に関する画像データの前記特性を測定すると共に、該部分を処理する前にメモリ配置を選択することを特徴とする方法。
【請求項８】
請求項６又は請求項７に記載の方法において、当該シーケンスの或る部分における画像データの測定された特性が該シーケンスの後の部分の特性を予測するために有効に使用され、当該メモリ配置が前記シーケンスにおける最近に処理された部分の測定された特性に従って制御されることを特徴とする方法。
【請求項９】
請求項６、７又は８に記載の方法において、前記画像データの特性の測定が、或る期間にわたり平均化されることを特徴とする方法。
【請求項１０】
請求項６ないし９の何れか一項に記載の方法において、前記動きベクトルの変動性が垂直面と水平面との間で別個に測定される場合、各々が当該記憶配置の選択において異なる効果を有することを特徴とする方法。
【請求項１１】
請求項１ないし１０の何れか一項に記載の方法において、該方法が、メモリにおけるデータの配置の選択に影響を与えるために、システム性能の特性として：
Ｇ．前記メモリサブシステムにおけるデータキャッシュストール率；
Ｈ．プロセッサ使用度；
Ｉ．サービス品質、又は処理されている内容のエンドユーザにとり知覚可能なような他の定性的測定値；及び
Ｊ．データを画像プロセッサへ（又はから）供給するリンクの帯域幅；
のうちの１以上を測定するステップを有していることを特徴とする方法。
【請求項１２】
請求項１１に記載の方法において、前記メモリサブシステムがキャッシュメモリを含む場合、前記システム性能の測定が画像再構築の間におけるデータキャッシュストール率の測定を含んでいることを特徴とする方法。
【請求項１３】
請求項１２に記載の方法において、前記システム性能が、データのサンプルを使用して、該データを処理する前にテスト的に測定されることを特徴とする方法。
【請求項１４】
請求項１１、１２又は１３に記載の方法において、当該シーケンスの第１部分を処理している間に測定されたシステム性能が、該シーケンスの後続の部分に対するメモリの配置の選択に使用されることを特徴とする方法。
【請求項１５】
請求項１ないし１４の何れか一項に記載の方法において、当該方法が、メモリにおけるデータの配置の選択に影響を与えるために、後の処理ステップの知識を使用するステップを有していることを特徴とする方法。
【請求項１６】
請求項１ないし１５の何れか一項に記載の方法において、前記メモリ配置の選択が、メモリアクセスプログラムコードにより使用されるパラメータを変更することにより少なくとも部分的に実施されることを特徴とする方法。
【請求項１７】
請求項１ないし１６の何れか一項に記載の方法において、前記メモリ配置の選択が、実行されるべきコードの別のバージョンを選択することにより少なくとも部分的に実施されることを特徴とする方法。
【請求項１８】
画像データ処理システムにおけるメモリサブシステム内の動画シーケンスを表す画像データを処理する方法において、前記メモリサブシステムは主画像データ記憶メモリに加えてプロセッサキャッシュメモリを含み、当該方法が、請求項２ないし１７の何れか一項に記載されたもののうちの、前記画像データの測定された特性及び前記処理システムの性能の測定された特性の少なくとも一方に従って、プログラム制御下でキャッシュ処理機能を選択的に使用するステップを有していることを特徴とする方法。
【請求項１９】
請求項１８に記載の方法において、新たなキャッシュブロックが割り当てられると共に、前記主メモリから事前ロードすることなしに重ね書きされるようなブロック割当機能が、前記測定された特性に従って選択的に使用されることを特徴とする方法。
【請求項２０】
請求項１８又は請求項１９に記載の方法において、更に、キャッシュ先取りが、前記測定された特性に従って選択的に起動されることを特徴とする方法。
【請求項２１】
請求項１ないし１７の何れか一項に記載の方法において、請求項１８ないし２０の何れか一項に記載の方法と組み合わされることを特徴とする方法。
【請求項２２】
画像データ処理システムにおいて、
メモリサブシステムと、
該メモリサブシステム内における動画シーケンスの連続するフレームに関する画像データの配置を、該画像データの測定された特性、当該処理システムの性能の測定された特性、及び当該画像処理システム内での前記画像データの後の処理に関する既知の特性のうちの少なくとも１つに従って動的に選択する手段と、
を有していることを特徴とする画像データ処理システム。
【請求項２３】
請求項２２に記載のシステムにおいて、前記メモリサブシステムが、ページ化されたメモリから構成された画像データ記憶メモリを含んでいることを特徴とするシステム。
【請求項２４】
請求項２３に記載のシステムにおいて、前記メモリサブシステムが、主画像データ記憶メモリに加えて、プロセッサキャッシュメモリを含んでいることを特徴とするシステム。
【請求項２５】
請求項２２ないし２４の何れか一項に記載のシステムにおいて、記憶メモリにおける画像データの配置を選択する前記手段が、画像データがメモリ内にライン毎に記憶されるようなリニアフォーマットと、ピクセルの二次元群がメモリ内でグループ化されるような少なくとも１種類のタイル化フォーマットとの間で選択するように構成されていることを特徴とするシステム。
【請求項２６】
請求項２４又は請求項２５に記載のシステムにおいて、前記メモリサブシステムがキャッシュメモリを含む場合、前記タイル化フォーマットが、１つのタイルに対するデータが全数のキャッシュブロックに対応するように定義されることを特徴とするシステム。
【請求項２７】
請求項２２ないし２６の何れか一項に記載のシステムにおいて、前記選択する手段が、メモリにおけるデータの配置の選択に影響を与えるために、前記画像データの特性として：
Ａ．入力されるデータ内で符号化された動きベクトルの変動性；
Ｂ．画像タイプ；
Ｃ．当該シーケンスにおける画像当たりの符号化データサイズ；
Ｄ．当該画像データが導出される画像の構造；
Ｅ．画像を画像メモリに記憶するために使用される構造；及び
Ｆ．当該画像ストリームのシーケンスヘッダを復号することにより得られる該ストリームの一定の特性；
のうちの１以上を測定する手段を含んでいることを特徴とするシステム。
【請求項２８】
請求項２７に記載のシステムにおいて、前記選択する手段が、当該動画シーケンスの先を調べて該シーケンスの或る部分に関する画像データの前記特性を測定すると共に、該部分を処理する前にメモリ配置を選択することを特徴とするシステム。
【請求項２９】
請求項２７又は請求項２８に記載のシステムにおいて、前記選択する手段が、当該シーケンスの或る部分における画像データの測定された特性が該シーケンスの後の部分の特性を予測するために有効に使用され、当該メモリ配置が前記シーケンスにおける最近に処理された部分の測定された特性に従って制御されるように構成されていることを特徴とするシステム。
【請求項３０】
請求項２７、２８又は２９に記載のシステムにおいて、前記測定する手段が、測定された画像データの特性を或る期間にわたり平均化する手段を含んでいることを特徴とするシステム。
【請求項３１】
請求項２７ないし３０の何れか一項に記載のシステムにおいて、前記測定する手段が、前記動きベクトルの変動性を測定するように構成されると共に、垂直面と水平面との間で別個に測定するように構成され、各々が当該記憶配置の選択において異なる効果を有することを特徴とするシステム。
【請求項３２】
請求項２２ないし３１の何れか一項に記載のシステムにおいて、前記選択する手段が、メモリにおけるデータの配置の選択に影響を与えるために、システム性能の特性として：
Ｇ．前記メモリサブシステムにおけるデータキャッシュストール率；
Ｈ．プロセッサ使用度；
Ｉ．サービス品質、又は処理されている内容のエンドユーザにとり知覚可能なような他の定性的測定値；及び
Ｊ．データを画像プロセッサへ（又はから）供給するリンクの帯域幅；
のうちの１以上を測定する手段を、代わりに又は更に、有していることを特徴とするシステム。
【請求項３３】
請求項３２に記載のシステムにおいて、前記メモリサブシステムがキャッシュメモリを含む場合、システム性能を測定する前記手段が、画像再構築の間にデータキャッシュストール率を測定するように構成されていることを特徴とするシステム。
【請求項３４】
請求項３２又は請求項３３に記載のシステムにおいて、システム性能を測定する前記手段が、データを処理する前に、該データのサンプルを使用して少なくとも部分的にテスト的に測定するように構成されていることを特徴とするシステム。
【請求項３５】
請求項３２、３３又は３４に記載のシステムにおいて、前記選択する手段及びシステム性能を測定する前記手段が、当該シーケンスの第１部分を処理している間に測定されたシステム性能が該シーケンスの後続の部分に対するメモリの配置の選択に使用されるように構成されていることを特徴とするシステム。
【請求項３６】
請求項２２ないし３５の何れか一項に記載のシステムにおいて、前記選択する手段が、メモリにおけるデータの配置の選択に影響を与えるために、後の処理ステップに関する知識を使用するように構成されていることを特徴とするシステム。
【請求項３７】
請求項２２ないし３６の何れか一項に記載のシステムにおいて、当該画像データ処理システムが、少なくとも部分的にプログラムコード及びプログラマブル処理ユニットにより実施化されていることを特徴とするシステム。
【請求項３８】
請求項２２ないし３７の何れか一項に記載のシステムにおいて、前記選択する手段が、前記メモリサブシステムをアクセスする際にプログラムコードにより使用されるパラメータを変更する手段により少なくとも部分的に実施化されていることを特徴とするシステム。
【請求項３９】
請求項２２ないし３７の何れか一項に記載のシステムにおいて、前記選択する手段が、実行されるべきコードの別のバージョンを選択する手段により少なくとも部分的に実施化されていることを特徴とするシステム。
【請求項４０】
処理される動画シーケンスを表すような画像データを記憶するメモリサブシステムを含むような画像データ処理システムであって、前記メモリサブシステムは主画像データ記憶メモリに加えてプロセッサキャッシュメモリを含み、当該システムが、請求項２３ないし３９の何れか一項に記載されたもののうちの、前記画像データの測定された特性及び当該処理システムの性能の測定された特性の少なくとも一方に従って、プログラム制御下でキャッシュ処理機能を選択的に使用するように構成されていることを特徴とする画像データ処理システム。
【請求項４１】
請求項４０に記載のシステムにおいて、当該システムが、新たなキャッシュブロックが割り当てられると共に、前記主メモリから事前ロードすることなしに重ね書きされるようなブロック割当機能が、前記測定された特性に従って選択的に使用されるように構成されていることを特徴とするシステム。
【請求項４２】
請求項４０又は請求項４１に記載のシステムにおいて、当該システムが、前記測定された特性に従ってキャッシュ先取りが選択的に起動されるように構成されていることを特徴とするシステム。
【請求項４３】
請求項４０ないし４２の何れか一項に記載のシステムと組み合わされた、請求項２２ないし３９の何れか一項に記載のシステム。
【請求項４４】
データ処理システムに請求項１ないし４３の何れか一項に記載の方法のステップ又はシステムの機能を実施させる命令を有するような、物理的記憶装置上の又は何らかの他のチャンネルを介して供給されるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを画像プロセッサのメモリ内に配置する方法及び装置に関する。本発明は、ＭＰＥＧビデオストリームのようなブロック型符号化画像データを復号する分野に特別な用途を有する。
【背景技術】
【０００２】
デジタル伝送及び記憶システムは、利用可能な伝送帯域幅及び記憶容量内で許容可能な画像品質を達成するために、良く知られたＪＰＥＧ又はＭＰＥＧフォーマットで使用されているようなブロック型圧縮を一般的に使用する。ＪＰＥＧは、ピクセルデータのグループ（即ち、ブロック）に対して離散コサイン変換（ＤＣＴ）を実行することに基づくビデオ圧縮システムである。ＭＰＥＧも、同一の原理には基づくが、画像フレーム間の動きを支援するための追加のフィーチャを備えるような動画ビデオ圧縮システムである。大幅なデータ圧縮を達成するために、ピクセルの各ブロックを表すＤＣＴ係数に、適応型量子化及び可変長符号化（ＶＬＥ）が施される。ブロックは“マクロブロック”を形成するために４つにグループ化され、クロミナンス（カラー）成分は、輝度（明るさ）成分に対して提供される空間解像度の半分で表される。これらの技術は、静止画像（ＪＰＥＧ）及び動画ビデオ（ＭＰＥＧ）の両方において適用することができる。動画に対しては、画像フレーム間の時間的冗長性が識別され、動き補償されたフレーム間予測符号化を用いて大幅に低減される。
【０００３】
ＭＰＥＧシーケンスを記述するために使用される用語は、完全な画像を含む“フレーム”と、１ライン置きに配置された画像の半分であるような“フィールド”とを含む。しかしながら、復号の単位は、フィールド構造化又はフレーム構造化されたものとすることが可能な画像である。画像バッファは、採用される記憶フォーマットに依存して、フレーム及び／又はフィールドの両方を記憶するために使用される。
エンコーダとデコーダとの間の制限されたチャンネルの間でデータを伝送するための画像シーケンスを構築するために、“Ｉ”、“Ｂ”及び“Ｐ”画像として知られている３つの画像タイプが使用される。“チャンネル”は、帯域幅が限定された通信リンク、及びハードドライブ、コンパクトディスク又はビデオテープのような大容量記憶媒体上での映像の記憶（記憶効率を最大化したい場合）を含む。“Ｉ”画像フレームは“イントラ”フレームであり、これらフレームは、構造が単一のＪＰＥＧフレームに類似し、完全な緩やかに圧縮された画像データのフレームを含む。“Ｐ”画像フレームは“予測”フレームであり、ビデオストリーム内の前の“Ｉ”又は“Ｐ”フレーム（“キーフレーム”として知られている）に対して符号化される。“Ｂ”画像フレームは、“双方向補間”フレームであり、符号化されるためには以前の及び後の参照フレームを必要とする。
【０００４】
ＭＰＥＧ画像シーケンスの生成をサポートするために、データは画像メモリに記憶されねばならない。“Ｂ”又は“Ｐ”フレームが生成されている場合、１つ又は２つの前のソースＩ又はＰ画像が記憶されていなければならず、動き予測データを形成するために参照される。
【０００５】
ＭＰＥＧ処理を実行する画像プロセッサのための典型的な構成は、データを入力し、アナログドメインとデジタルドメインとの間で当該画像を変換し（当該プロセッサがエンコーダであるか又はデコーダであるかに依存して、何れかの方向に）、当該データを記憶し、該データに対して圧縮又は伸張を実行し、動きを補償し、表示等の後の使用のために当該データを出力するためのモジュール（ハードウェア又はソフトウェアの）を有する。
【０００６】
信頼性があり、効率的であり且つ高品質な出力を供給するような構成を提供するために、プロセッサの過負荷の結果として、画像品質を劣化させるようなフレーム飛び（スキッピング）又は他の画像アーチファクトが生じるような最悪の場合の条件を許容するように設計されねばならない。更に、メモリの帯域幅は、ハードウェアによる及びソフトウェアによる実施化の両者にとり重大な問題である。
【０００７】
スループットを最大化する（従って、プロセッサの過負荷の可能性を低減する）ために、プロセッサは、しばしば、非常に高いアクセス速度を持つキャッシュメモリを使用し、該プロセッサが非常に高速でデータを得るのを可能にする。斯かるキャッシュは、可能な限り多くのデータが、遅い“外部”メモリからではなく該キャッシュから得られるように構成される。特にソフトウェアによる実施化の場合、キャッシュのサイズ及びトラフィックが、時には、重大な性能決定要因となる。最悪状況性能はキャッシュ動作により著しく影響を受け得る。というのは、予測データが入力画像の広く分けられた部分から得られる可能性があり、結果として著しい“キャッシュ・スラッシング（cache thrashing）”（著しく且つ実質的に不要なキャッシュの使用及び内容の破棄）が生じるからである。
【０００８】
画像メモリは、しばしば、“ページ化された”メモリとして設けられ、これによれば、画像用の画像データは多くのページにわたって記憶され、各ページはプロセッサによりページアクセスによってアクセスされる。ページアクセスは、ページ化されたランダムアクセスメモリ（ＲＡＭ）からのデータにアクセスする非常に高速な方法であり、プロセッサによるベースアドレスの供給のみを必要とし、該供給の後、データは、当該メモリの更なるアドレス指定を行うことなく、クロックにより読み出されてプロセッサに渡される。しかしながら、ページの横断は非効率的である。というのは、ページの横断は、現在のページングされているメモリの伝送の終了、及び次の組のデータ伝送のための新たなアドレス指定の発生を必要とするからである。
【０００９】
ＭＰＥＧ画像処理の分野では、ページ化されたメモリが使用される場合、異なる記憶フォーマットは、処理されている画像の内容に依存して、異なる利点を提供すると理解されている。画像データをリニアな基準で（例えば、ラスタ走査に従って）記憶することは、画像を連続的に表示するために要する複雑さを最小化する。しかしながら、リニア記憶が、動き補償／再生に使用するための画像データの参照フレームに対して使用される場合、参照データの取り出しは、多数のメモリページの横断を必要としかねない。他の例として、参照画像データを“タイル化されたフォーマット（tiled format）”（符号化処理で使用されたピクセルの二次元ブロックがメモリに順番に記憶される）で記憶することは、画像ピクセルが、当然、二次元的空間関係を有するという事実を利用することにより、ページ横断の数を減少させる。これを心に留めて、米国特許第5,912,676号は、走査ライン（ラスタ）、タイル化又は“スキュータイル化（skewed-tiled）”フォーマットのような異なる画像記憶フォーマットに従ってメモリへ（又はメモリから）画像データを記憶する（又は取り出す）再コンフィギュレーション可能な画像メモリインターフェースを記載している。しかしながら、本発明者は、画像シーケンスの内容は、各画像を形成するフィールド又はフレームの間の動きの量及び性質が大きく変化するので、全てのシーケンスに対して最適なものとなるであろう参照データメモリのコンフィギュレーションを選択することは不可能であると理解した。従って、上記米国特許は、もし適切に選択されるなら有利となり得る一連のコンフィギュレーションは提供するが、どれが適切なコンフィギュレーションであるかを規定してはいない。また、全てのシーケンスにおいて最適となるであろう単一のコンフィギュレーションを規定することも不可能である。最適なコンフィギュレーションは、更に、復号後に画像データに対してどの様なステップが実行されるべきかにも依存し得る。後続の処理段階のための他のフォーマットへの変換の必要性は、例えば、動き推定段階に対して好ましいフォーマットを採用することによる如何なる節約も無効にすることになりかねない。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、処理されている画像ストリームの検出された特性に従って自動的に選択されるような、柔軟性のある動的に再コンフィギュレーション可能な画像メモリ記憶フォーマットを用いてＭＰＥＧシーケンスを復号する方法及び装置を提供することにある。
【課題を解決するための手段】
【００１１】
本発明は、第１の態様においては、動画シーケンスを表す画像データを画像データ処理システムにおけるメモリサブシステム内に配置する方法であって、前記シーケンスの順次の画像に関する画像データの前記メモリにおける配置を、前記画像データの測定された特性、前記処理システムの性能の測定された特性、及び前記画像処理システム内での前記画像データの後続の処理の既知の特性のうちの少なくとも１つに従って動的に選択するステップを有するような方法を提供する。このような構成は、所与の画像ストリーム（例えば、インターレースされた及びインターレースされていない画像フォーマットに対してスループットを最大化するためには、異なるフォーマット化が必要となる）、プロセッサ性能及び／又は画像の宛先に対して最も適したメモリ記憶フォーマット化が使用されることを保証することにより、システム設計者が例えばメモリサブシステム内でのページング及びキャッシュの使用を最適化し、これによりスループットを改善することを可能にする。
【００１２】
上記メモリサブシステムは、ページ化されたメモリから構成された画像データ記憶メモリを含むことができる。
【００１３】
上記メモリサブシステムは、主画像データ記憶メモリに加えて、プロセッサのキャッシュメモリを含むこともできる。
【００１４】
前記画像データの記憶メモリにおける配置を選択するステップは、画像データがライン毎にメモリに記憶されるようなリニアフォーマットと、ピクセルの二次元グループがメモリ内でグループ化されるような少なくとも１種のタイル化フォーマットとの間で選択するステップを有することができる。
【００１５】
前記メモリサブシステムがキャッシュメモリを含む場合、上記タイル化フォーマットは、好ましくは、１つのタイルに対するデータが全数のキャッシュブロックに対応するように規定される。
【００１６】
本発明は、メモリ内でのデータの配置の選択に影響を与えるための当該画像データの特性として：
Ａ．入力されたデータ内で符号化された動きベクトルの変動性。例えば、復号されている画像にわたり動きが零であるか、又は少なくとも比較的一定している場合、参照画像をリニアフォーマットで記憶するのが効率的であり得る。動きベクトルが高度に変動的である場合、タイル化された又は他のフォーマットが単純なリニアフォーマットより好ましいであろう；
Ｂ．画像タイプ。例えば、キー画像（Ｉ又はＰ）の処理の効率を最大化するためには、タイル化された記憶フォーマットのような、他の画像から予測するのに一層効率的であるようなフォーマットが選択される；
Ｃ．当該シーケンスの画像当たりの符号化データのサイズ；
Ｄ．当該画像データが取り出される画像構造（例えば、画像フレームが単一の非インターレースフレームとして、又はインターレースフィールドとして配置されているか）；
Ｅ．画像フレームのフィールドが別々に記憶される場合等の、画像を画像メモリに記憶するために採用された構造；
Ｆ．画像解像度等の、当該画像ストリームのシーケンスヘッダを復号することにより得られる当該ストリームの一定の特性。例えば、低解像度を持つ画像（シーケンスヘッダから決定される）はリニアな編成の記憶を用いて一層効率的に処理することができる。というのは、多くの表示ラインはデータキャッシュ内に納まり得、画像再構築のために配置が最適化されるからである。しかしながら、高解像度画像は、キャッシュストール及び／又はページ横断を最少化するために、タイル化フォーマットで記憶する方が有益であり得る；
のうちの１以上を測定するステップを有することができる。
【００１７】
Ｐ画像に関する動きベクトルの変動性等の測定される特性は、参照画像が復号され記憶されるまでは通常は利用可能ではないことが分かるであろう。従って、本方法は、動画シーケンスの先を調べて、該シーケンスの所与の部分に関する画像データの上記特性を測定し、該部分を処理する前にメモリ配置を選択することができる。
【００１８】
しかしながら、代わりに又は加えて、当該シーケンスの或る部分における画像データの測定された特性は、該シーケンスの後続の部分の特性を予測するために有効に使用され、当該シーケンスの最近に処理された部分の測定特性に従ってメモリ配置が選択される。
【００１９】
画像データの特性の測定値は、或る期間にわたり平均化することができる。
【００２０】
動きベクトルの変動性が測定される場合、垂直面と水平面との間で別個に測定することができ、各々が記憶配置の選択において異なる効果を有する。（純粋に水平的である変動性は、依然としてリニア記憶フォーマットに有利である。）
【００２１】
本方法は、代わりに又は加えて、メモリにおけるデータの配置の選択に影響を与えるために、システム性能の特性として：
Ｇ．メモリサブシステムにおけるデータキャッシュストール率；
Ｈ．プロセッサ利用度（例えば、プロセッサの百分率でのアイドル時間を測定することによる）；
Ｉ．サービス品質（quality of service）、又は処理されている内容のエンドユーザにとり知覚可能な斯様な品質的測定値；
Ｊ．前記画像プロセッサへ（又はから）データを供給するリンクの帯域幅；
のうちの１以上を測定するステップを有することができる。
【００２２】
当該メモリサブシステムがキャッシュメモリを含む場合、システム性能の測定は画像再構築の間におけるデータキャッシュストール率の測定を含むことができる。
【００２３】
システム性能は、当該データを処理する前に該データのサンプルを使用して、少なくとも試験的に測定することができる。他の例として、当該シーケンスの第１部分を処理している間に測定されたシステム性能を、該シーケンスの後続部分に対するメモリの配置に影響を与えるように使用することもできる。
【００２４】
本方法は、代わりに又は加えて、メモリにおけるデータの配置に影響を与えるために、後続の処理ステップに関する知識を使用するステップを有することもできる。これは、異なるタイプの処理ステップに対するフォーマットの間の変換の必要性を考慮するために実行することができる。
【００２５】
メモリ配置の選択は、メモリをアクセスするプログラムコードにより使用されるパラメータを変更することにより少なくとも部分的に実施化することができる。他の例として、メモリ配置の選択は、実行されるべき異なるバージョンのコードを選択することにより実行することができる。これら２つのオプションは、異なる配置の数及び性質に応じて、一緒に使用することができる。
【００２６】
上述した態様とは独立に、又は上述した態様に加えて使用することが可能な本発明の第２の態様によれば、本発明は、画像データ処理システムにおけるメモリサブシステム内の動画シーケンスを表す画像データを処理する方法であって、該メモリサブシステムが主画像データ記憶メモリに加えてプロセッサキャッシュメモリを含み、該方法が、前記画像データの測定された特性及び前記処理システムの性能の測定された特性の少なくとも一方に従って、プログラム制御下でキャッシュ処理機能を選択的に使用するステップを有するような方法を提供する。
【００２７】
幾つかのタイプのプロセッサは、プログラム制御されるキャッシュ処理機能を提供する。例えば、ブロック割当機能、又は先取り（pre-fetch）処理を設けることができる。しかしながら、本発明者は、メモリ配置の場合と同様に、これらの使用は必ずしも全ての画像シーケンスにとり等しく有利であるとは限らず、幾つかの状況では反生産的であり得ることに気が付いた。
【００２８】
従って、主メモリから事前ロードすることなしに新たなキャッシュブロックが割り当てられ、書き換えられるようなブロック割当機能を、前記測定された特性に従って選択的に使用することができる。例えば、記憶のためにタイル化フォーマットが使用される場合に、より頻繁にブロック割当を使用し、かくしてプロセッサのスループットを改善することが可能である。
【００２９】
加えて、キャッシュ先取りを、測定された特性に従って選択的に起動することができる。先取りは、思惑的な傾向があり、帯域幅の浪費の危険性がある。しかしながら、タイル化フォーマットの使用は、より少ないキャッシュブロックが処理されており、従って、先取りされているデータのより少ししか使用されずに最終的に破棄されないことを意味する。
【００３０】
本発明の第１及び第２の態様が共に使用される場合、キャッシュ処理機能の使用及びメモリの配置の選択は、先に掲載したもののうちの、同一の特性又は異なる特性に従って実行することができる。
【００３１】
更に、本発明は画像データ処理システムであって、メモリサブシステムと、該メモリサブシステム内の前記シーケンスの順次のフレームに関する画像データの配置を、前記画像データの測定された特性、当該処理システムの性能の測定された特性、及び当該画像処理システム内での前記画像データの後続の処理の既知の特性のうちの少なくとも１つに従って動的に選択する手段とを含むような画像データ処理システムを提供する。
【００３２】
上記メモリサブシステムは、ページ化されたメモリから構成された画像データ記憶メモリを含むことができる。
【００３３】
上記メモリサブシステムは、主画像データ記憶メモリに加えて、プロセッサのキャッシュメモリを含むこともできる。
【００３４】
前記画像データの記憶メモリにおける配置を選択する手段は、画像データがライン毎にメモリに記憶されるようなリニアフォーマットと、ピクセルの二次元グループがメモリ内でグループ化されるような少なくとも１種類のタイル化フォーマットとの間で選択するように構成することができる。
【００３５】
前記メモリサブシステムがキャッシュメモリを含む場合、上記タイル化フォーマットは、１つのタイルに対するデータが全数のキャッシュブロックに対応するように規定することができる。
【００３６】
前記選択する手段は、メモリ内でのデータの配置の選択に影響を与えるために、当該画像データの特性として：
Ａ．入力されたデータ内で符号化された動きベクトルの変動性；
Ｂ．画像タイプ；
Ｃ．当該シーケンスの画像当たりの符号化データのサイズ；
Ｄ．当該画像データが取り出される画像の構造；
Ｅ．画像を画像メモリに記憶するために採用された構造；
Ｆ．当該画像ストリームのシーケンスヘッダを復号することにより得られる当該ストリームの一定の特性；
のうちの１以上を測定する手段を含むことができる。
【００３７】
上記測定する手段は、動画シーケンスの先を調べて、該シーケンスの所与の部分に関する画像データの上記特性を測定し、該部分を処理する前にメモリ配置を選択することができる。
【００３８】
代わりに又は加えて、前記選択する手段は、当該シーケンスの或る部分における画像データの測定された特性が、該シーケンスの後続の部分の特性を予測するために有効に使用され、当該シーケンスの最近に処理された部分の測定特性に従ってメモリ配置が選択されるように構成することができる。
【００３９】
該測定する手段は、測定された画像データの特性を或る期間にわたり平均化する手段を含むことができる。
【００４０】
上記測定する手段が動きベクトルの変動性を測定するように構成される場合、垂直面と水平面との間で別個にそのようにするよう構成することができ、各々が記憶配置の選択において異なる効果を有する。
【００４１】
前記選択する手段は、代わりに又は加えて、メモリにおけるデータの配置の選択に影響を与えるために、システム性能の特性として：
Ｇ．メモリサブシステムにおけるデータキャッシュストール率；
Ｈ．プロセッサ利用度（例えば、プロセッサの百分率でのアイドル時間を測定することによる）；
Ｉ．サービス品質（quality of service）、又は処理されている内容のエンドユーザにとり知覚可能な斯様な品質的測定値；
Ｊ．前記画像プロセッサへ（又はから）データを供給するリンクの帯域幅；
のうちの１以上を測定する手段を有することができる。
【００４２】
当該メモリサブシステムがキャッシュメモリを含む場合、上記システム性能を測定する手段は、画像再構築の間においてデータキャッシュストール率を測定するように構成することができる。
【００４３】
上記システム性能を測定する手段は、データを処理する前に該データのサンプルを使用して試験的にそのようにするよう構成することができる。他の例として、上記選択する手段及びシステム性能を測定する手段は、当該シーケンスの第１部分を処理している間に測定されたシステム性能が、該シーケンスの後続部分のためのメモリ配置を制御するために使用されるよう構成することもできる。
【００４４】
上記選択する手段は、代わりに又は加えて、メモリにおけるデータの配置に影響を与えるために、後続の処理ステップに関する知識を使用するように構成することもできる。
【００４５】
当該画像処理システムは、少なくとも部分的にプログラムコード及びプログラマブル処理ユニットにより実施化することができる。
【００４６】
前記選択する手段は、前記メモリサブシステムをアクセスする場合に前記プログラムコードにより使用されるパラメータを変更する手段により実施化することができる。他の例として、上記選択する手段は、実行されるべき別のバージョンのコードを選択することにより実施することができる。
【００４７】
本発明の第３の態様によれば、本発明は、処理されている動画シーケンスを表す画像データを記憶するためのメモリサブシステムを含むような画像データ処理システムであって、該メモリサブシステムが主画像データ記憶メモリに加えてプロセッサキャッシュメモリを含み、該システムが、前記画像データの測定された特性及び当該処理システムの性能の測定された特性の少なくとも一方に従って、プログラム制御下でキャッシュ処理機能を選択的に使用するよう構成された処理システムを更に提供する。
【００４８】
該システムは、主メモリから事前ロードすることなしに新たなキャッシュブロックが割り当てられ、書き換えられるようなブロック割当機能が、前記測定された特性に従って選択的に使用されるように構成することができる。
【００４９】
該システムは、キャッシュ先取りが、測定された特性に従って選択的に起動されるように構成することができる。
【００５０】
更に、本発明は、物理的記憶装置上であるか又は何らかの他のチャンネルを介して伝送されるものであるかに拘わらないコンピュータプログラム製品であって、データ処理システムに、上述した本発明を実施化する装置のフィーチャ又は方法のステップを実施させる命令を有するようなコンピュータプログラム製品も提供する。
【００５１】
以下、本発明の実施例を、添付図面を参照して例示のみとして説明する。
【発明を実施するための最良の形態】
【００５２】
図１は、ＭＰＥＧ復号を実行する画像プロセッサの種々のモジュール、並びに画像シーケンスの特性解析並びに画像バッファ及びキャッシュ制御の動的再コンフィギュレーションを支援する付加的フィーチャを図示している。該再コンフィギュレーションの更なる一般的考察及び詳細は、後に別個の見出しで説明する。
【００５３】
アナログビデオ又はデジタルストリームの何れかの形態の入力データＩＮは、インターフェースブロックＩ／Ｆに入力される。当該デコーダは、更に、コンフィギュレーションブロック（ＭＡＰ１）９０、バッファ（ＢＵＦＦ）１００、可変長デコーダ（ＶＬＤ）１１０、逆走査（ＩＳ）及び逆量子化器（ＩＱ）１２０、逆離散コサイン変換（ＩＤＣＴ）１３０、動き補償器（ＭＣ）１４０、画像メモリ（ＭＥＭ）１５０、コンフィギュレーションブロック（ＭＡＰ２）１６０、コンフィギュレーションブロック（ＭＡＰ３）１７０、画像メモリ／出力インターフェース（ＩＭ／ＯＩ）１８０、並びに統計プロセッサ（ＳＴＡＴＳ）１９０を有している。該デコーダは、専用のハードウェアで、一連の処理ステップとしてのプロセッサにより、又は両者の組み合わせで実施化することができる。本開示は、これらステップ（特に、ＶＬＤ及びＩＳ／ＩＱステップ）がマイクロプロセッサをプログラミングすることにより実施化されるものと仮定し、該マイクロプロセッサはメディア処理拡張部を備える又は備えない汎用マイクロプロセッサとすることができる。好ましい実施化においては、上記プロセッサは、フィリップス・セミコンダクタ社製のトライメディア（登録商標）プロセッサファミリ等の画像処理用に最適化されたＶＬＩＷプロセッサとする。
【００５４】
図示のステップの動作は、下記の通りである：
・８０で示すインターフェースは、入力データをＭＰＥＧ復号用の適切なデジタルフォーマットに変換するためのものである。図示しないがブロック（Ｉ／Ｆ）８０内の追加のステージは、入力データのフォーマットに応じて、アナログ／デジタル変換、同期信号抽出、利得制御ブロック等を含むことができるが、デジタル信号を変換するインターフェースを含むこともできる。
・１００に示す入力ビットストリームをバッファリングするＢＵＦＦは、ビデオストリームを入力すると共に、後続の処理ステップに該ビデオを入力ビデオレートに対して種々のレートで復号するのを可能にさせるような時間的に柔軟性のある行列を形成するためのものである（この時点で、オーディオ及び他のデータを分離し、自身のデコーダに導くことができる）。
・１１０に示す可変長復号は、可変長ＭＰＥＧトークンを、量子化されたＤＣＴ係数のような、対応する値に変換するためのものである。
・１２０に示す逆量子化は、ＤＣＴ係数の実際の値を、選択された量子化及びスケールファクタマトリクスの値に従って獲得する一方、逆走査ステップはトークンのストリームから、通常はジグザグである所定の順序に従って係数マトリクスを再形成する。
・逆離散コサイン変換ステップ１３０は、上記ＤＣＴ係数を、これら係数が表すピクセル値のブロックに再形成するためのものである。
・当該画像がイントラ符号化されていない場合、動き補償が１４０において実行され、復号されたピクセル値を、当該画像シーケンスにおける先に復号された近隣画像である参照画像からの値と組み合わせる。
・コンフィギュレーションブロック（ＭＡＰ１）９０、（ＭＡＰ２）１６０及び（ＭＡＰ３）１７０は、メモリ中のデータのフォーマットをＳＴＡＴＳブロック１９０からの制御信号に従って変更するよう、アドレス値を変換するために使用される。後に詳述するように、これらのブロックは、パラメータ化されたメモリアドレス指定の使用によりソフトウェアで実施化することができる。このようにして、当該画像データの処理を規定するプログラムコードは、実行時に実際に使用されるメモリフォーマットとは独立に書くことができ、該フォーマットは、単にパラメータ値を変更することにより変更及び再変更することができる。
・メモリブロック１５０は、データの一時的記憶が必要とされるような予測等の機能をサポートするために動き補償器（ＭＣ）１４０により使用される。
・画像メモリ／出力インターフェース処理は、１５０において、例えば当該ビデオをメモリ内の二次元ビデオ画像又はデジタルビデオストリーム等の適切なフォーマットで表すために実行される。
・最後に、統計プロセッサ（ＳＴＡＴＳ）１９０は、異なる段階の処理において取得される種々の測定データを監視すると共に、当該デコーダを介してのデータのスループットを最大化すべく、理にかなったステップに記憶要素におけるデータのフォーマットを変更させるために使用される。これは、“適応型フォーマット処理”と称する。
【００５５】
図２は、ＭＰＥＧ復号を実行する画像処理システムの物理的実施例を示す。プロセッサ２００は、自身と主メモリ２２０との間でキャッシュ２１０を使用する。キャッシュ２１０及び主メモリ２２０は、メモリサブシステムを形成する。典型的には、キャッシュシステムはメモリ空間を、ページ化ＤＲＡＭが利用可能なメモリをページに分割するのと同様の方法でキャッシュブロックに分割する。データは、通常は、キャッシュに一度にキャッシュブロックで転送される。触られるキャッシュブロックの数を最少化することは、時には、メモリシステムのトラフィック及びプロセッサの遅延を低減させる。これは、キャッシュシステムの効果は、アクセスされるキャッシュブロックの数を最少化することが望ましいという点で、メモリページングシステムのものと非常に類似している。
【００５６】
ＣＰＵ２００はＰＣワークステーションの主プロセッサとすることができるか、又は前述したトライメディア（登録商標）プロセッサのようなビデオ処理全般専用の若しくはＭＰＥＧ復号専用の補助プロセッサとすることができる。これらプロセッサ及びメモリは、代わりに、ＤＶＤプレーヤ、ビデオ会議端末又はゲームコンソール等の専用のデジタルビデオ装置の一部を形成することもできる。ＣＰＵ２００は、好ましくは、図１の復号処理の全体又は少なくともかなりの部分を実行する。これを示すために、当該図はビデオビットストリーム（ＩＮ）２３０が上記プロセッサに入力されるのを示しているが、メモリへのＤＭＡ転送等のデータを入力する他の方法でも充分である。同様に、ビデオ出力（ＯＵＴ）２４０が上記メモリから出力されるのが示されているが、実際には、データを読み取り、フォーマットし、出力するためにプロセッサの相互作用が必要であり得る。動作時において、プログラム、入力データ及びＣＰＵにより発生された復号された画像は主メモリ２２０に保持される。しかしながら、既知のように、頻繁に使用されるデータ又は処理ステップは、これらを遅いメモリ２２０から得るのに優先して、キャッシュ２１０へロード及び斯かるキャッシュから抽出される（利用可能な場合は）。当該プロセッサ用がここで述べる処理を実施するためのプログラムコード（命令）は、事前にインストールするか（ファームウェア）、又はＣＤ−ＲＯＭ又はフロッピーディスク２５０等の記録担体上で別途供給することができる。一緒に実行されるメモリアクセス処理が、通常、近隣のロケーションに対するものである限り、キャッシュの使用は主メモリの帯域幅を制限した。
【００５７】
適応型フォーマット処理により、種々のメモリ１００、１５０及び１８０における画像データの記憶を最も適したフォーマットに動的にコンフィギュレーションして、スループットを最大化すると共に、特に、キャッシュの効率を最大化することを狙うものである。
【００５８】
当該装置は、記憶されたプログラムの制御下で、メモリ内の画像データの配置を、画像データの測定された特性、処理システムの性能の測定された特性（画像データの特性に依存する）及び／又は画像プロセッサ内での画像データの後の宛先の特性に従って動的に選択することができる。
【００５９】
この実施例で動的にコンフィギュレーションされるメモリは、主メモリ２２０である。というのは、該メモリは参照画像用の画像データ記憶のために使用されるからである。また、本原理をメモリ２２０の他の機能、及びプロセッサのキャッシュ２１０にさえも適用することができる。もっとも、キャッシュの幾何学構造の変更を許容する現在利用可能な製品の数は極少ない。当該画像データの記憶メモリは、スタチックＲＡＭでもよいが、ページ化されたＤＲＡＭのほうがありそうである。
【００６０】
単独で又は種々の組み合わせで解析することが可能な測定される特性は下記のものを含む：
Ａ．導出された動きベクトルの変動性を測定する。動きベクトルの変動性の測定は或る期間にわたり平均化することができ、その結果は、当該動きベクトルが参照する参照画像に対する最も適した記憶フォーマットを決定するために使用される。水平面と垂直面との間で別個に変動性を測定すると、一層有効であろう。その理由は次の通りである。リニアフォーマットを考察した場合、（例えば）８ビットの水平方向の動きベクトルの乱れは厄介ではない。何故なら、キャッシュブロックは水平方向に大きな領域を表す（従って、当該プロセッサは同一のキャッシュブロック内からデータにアクセスする可能性が高い）からである。垂直には、同一の乱れは、メモリを経ての長い距離のアドレス指定を要し（７６８なるメモリ歩幅の場合、メモリアドレスの変化は７６８ｘ８＝６１４４バイトとなる）、これは多くのキャッシュブロックの移動となるであろう。垂直方向の乱れの方が、一層大幅にキャッシュミスとなる可能性が高い。しかしながら、フォーマットがタイル化された場合、水平方向及び垂直方向の動きベクトルの乱れの効果は同じ様になる。これらの例は、水平方向及び垂直方向の動きベクトルの変化の混合は異なるメモリフォーマットに異なる態様で影響し、幾つかの場合においては結果として変動性を別個に測定する必要性があることを示している。
Ｂ．画像タイプに従って動作する。例えば、キー画像（Ｉ又はＰ）を処理する効率を最大化するためには、キー画像を後続のＰ又はＢ画像に対する参照データとして使用する場合にデータキャッシュストール率を制限するようなタイル化記憶フォーマット等の、他の画像から予測するのに一層効率的なフォーマットを選択することができる。Ｂ画像は全てリニアフォーマットで記憶し得る（それが、望ましい出力フォーマットであるなら）。何故なら、これらの画像はデコーダにおいて参照データとして使用されないからである。しかしながら、実質的に全ての動きベクトルが零又は一定である場合、キー画像をリニアに記憶させることは可能である。何故なら、参照データが比較的滑らかな順序で必要とされるからである。
Ｃ．代替的に（又は付加的に）、情報は、後続の画像の特性を決定するために、圧縮されたサイズを監視する等、当該画像ストリームを通して先を解析することにより得ることもできる。該圧縮されたサイズは（単独で又は他の測定値との組み合わせで）、当該画像を処理する困難さを相当程度示すと思われる。そして、これは何の記憶フォーマットが典型的には最適であるかを示すことができる。例えば、相対的に少ない量のデータは殆ど動きのないシーケンスの画像を示す可能性があり、これはリニア記憶が最適であり得ることを示すであろう。
Ｄ．当該画像データが導出される画像の構造を測定（又は当該データストリーム内のヘッダ情報から検出）する（例えば、画像フレームがインターレースされていない又はインターレースされた画像ラインとして配置されているか）。
Ｅ．画像解像度のような当該ストリームの特性のために、該画像ストリームのシーケンスヘッダを復号する。例えば、低解像度を有する画像はリニアな編成の記憶を用いて一層効率的に処理することができる。というのは、多くの表示ラインがデータキャッシュ内に納まり、該配置が画像再構築のために最適化されるからである。しかしながら、高解像度画像は、キャッシュストールを最少化するために、タイル化フォーマットでの記憶の方が有益である。
Ｆ．画像再構築の間においてデータキャッシュストール率を測定する。現在のメモリコンフィギュレーションが如何様であっても、高いキャッシュストール率は、別のメモリコンフィギュレーションの方が適切であるかも知れないことを示す。
Ｇ．プロセッサの利用度を測定する。１以上の追加の“バックグラウンド”作業を実行するためにプロセッサ時間が必要とされる時には、当該メモリ内の画像データの配置はプロセッサ利用度を最小化するように制御されるべきである。該プロセッサ性能を他の測定された特性は、プロセッサのアイドル時間の百分率の測定を含み得る。
Ｈ．サービス品質（quality of service）、又は処理されている内容についてエンドユーザにとり知覚可能なような他の定性的測定値を測定し、又は測定値を利用する。このようなものの一例は、プロセッサ能力が不充分な場合にデータを（例えば）破棄することにより生じるブロックノイズであり、これは再構築された画像内に可視アーチファクトを発生する。ブロックノイズ及び他の斯様な可視アーチファクトは、画像プロセッサのスループットを増加させることにより低減することができる。
Ｉ．当該画像シーケンスにおける到来しつつある画像に応答して画像データの記憶を最適化するために、先行情報に従って動作する。斯様な態様の一例は、当該画像ストリームの内容に関係する関連データファイルを有することである。該データファイルは、先行して読み取り、当該画像内容が処理される前にそれに従い、統計値の獲得と当該画像プロセッサの最適化との間における不可避的遅れにより生じる短期的影響を除去することができる。
Ｊ．当該画像プロセッサへ（又はから）データを供給するリンクの帯域幅を測定し、又は斯かる測定値を使用する。入力又は出力リンクの帯域幅は、時には、無線又は通信リンクの帯域幅による等により、制約される。幾つかの場合においては、帯域幅はリンクの完全さに従い変化する。これらの要因も、当該画像プロセッサのコンフィギュレーションの間において考慮に入れることができる。もっとも、本実施例においては、これは実施されていない。
【００６１】
メモリにおける画像データの配置の動的選択の効果は、或る期間にわたり監視することができ、その結果は後の記憶配置を仕立てると共に、当該画像プロセッサのスループット及び／又は当該処理の品質を最大化するために使用される。例えば、少数のマクロブロックを先取り及び処理し、性能統計値を得るために測定がなされ、その結果は当該画像プロセッサのコンフィギュレーションを仕立てるために使用される。フィリップス社製トライメディア（登録商標）等の既知のマイクロプロセッサは、プログラムにキャッシュミス及び失敗した先取り試行の数を監視させることにより直接的に測定値を得ることができる。
【００６２】
メモリ中の画像データの配置は、当該画像プロセッサにおける画像の宛先に従って選択することができる。例えば、当該画像が画像プロセッサからモニタへ直接出力されねばならない場合、該画像はリニアな配置で記憶することができるが、該画像が、タイル化記憶配置を使用して最適に動作するような他の処理段に渡される場合は、当該画像データの選択配置はタイル化となるであろう。隣接する行のブロックがブロック幅の一部だけ互いにオフセットされるような“スキュータイル化（skewed tiled）”フォーマットも興味あるものであり得る。これらの及び他のタイル化フォーマットは、前記導入部で言及した米国特許に更に詳細に記載されている。
【００６３】
図３は、グループ・オブ・ピクチャ（ＧＯＰ）シーケンス内の物理的画像順序と時間的画像順序との間の相違を示している。良く知られているように、ＭＰＥＧ−２及び他の現代のデジタルフォーマットにおける画像は、時間的冗長性を低減するために互いを参照することにより符号化される。動き補償は、或る画像の内容の推定を、隣接する画像又は複数の画像に関して既に復号された内容から形成する。従って、グループ・オブ・ピクチャ（ＧＯＰ）は、典型的には、他の画像を参照しないで符号化されたイントラ符号化“Ｉ”画像と、先行するＩ画像に基づく動きベクトルを使用して符号化された２個又は３個の“Ｐ”（予測）符号化画像と、順序的に前及び後ろのＩ及び／又はＰ画像からの予測により符号化された双方向予測“Ｂ”とを有する。Ｂ画像に必要とされるデータ量はＰ画像に必要とされるものより少なく、Ｐ画像に必要とされるデータ量はＩ画像に必要とされるデータ量より少ない。一方、Ｐ及びＢ画像は他の画像を参照してのみ符号化されているから、所与のシーケンスの再生を開始するための実際の入力点を提供するものは、Ｉ画像のみである。更に、Ｉ及びＰ画像は、対応するＢ画像の前に符号化され、正しい提示順序を達成するために復号の後に再配列される。Ｉ（及びＰ）画像に関する復号された画像データは、Ｐ及びＢ画像の復号において参照データとして使用するために保持され、又はメモリに取り込まれなければならない。
【００６４】
良く知られているように、グループ・オブ・ピクチャの符号化及び構造に関する情報は、データの始点におけるＧＯＰヘッダ３００内に含まれている一方、各画像の符号化及びタイプに関する情報は、各画像に対するデータの始点における画像ヘッダ３０２に含まれている。
【００６５】
以下、メモリサブシステムが、上記レビューで説明したもののような技術を使用して最適化された性能を達成するように制御されて編成されるような種々の方法について更に述べる。
【００６６】
［効率的メモリ配置］
画像データをメモリ２２０に配置する通常の且つ自明な方法は、完全な行のピクセルを表示順に連続するロケーションに記憶することである。これは、以下では“リニア編成”と呼ぶ。この明細書の目的では、簡略化のために輝度のみが考察される。同じ一般的考察が、クロミナンスデータにも、又はクロミナンス／輝度成分がインターリーブされる場合にも当てはまる。これらは、別個に処理することができるか、又は所与のマクロブロックに対して輝度データと一緒に処理することができる。
【００６７】
図４は、この配置を、７２０なる水平解像度（ＴＶシステムでは普通である）及びキャッシュブロックサイズが６４バイトのメモリサブシステムでの輝度データ例で示し、この場合、各ラインの輝度は１１.２５のキャッシュブロック（ＣＢ０、ＣＢ１、等）を占める。隣接するラインに対して影響を有さないようなキャッシュ制御処理を実行するためには、画像をメモリに、記憶されたライン間に使用されない空間を伴うようにして記憶するのが明らかに有利であり、かくしてメモリの“歩幅”（２つの隣接するラインのアドレス間のアドレスの差）は７６８（６４の最寄りの倍数に切り上げられる）となる。ＥＯＬは或るラインのピクセルに関する実際のデータの終了を示す。斜線のロケーションは使用されない。
【００６８】
結果として、各マクロブロックの処理は、１６キャッシュブロックを占めるような１６ｘ１６領域の出力データを生成することになる。
【００６９】
予測データの各ソースは、少なくとも１６ｘ１６ブロックの予測データを供給しなければならない。動きベクトルにおける半分のピクセル解像度の結果として、これは、最悪の場合で１７ｘ１７領域のソースデータ（動きベクトルの水平及び垂直成分の両者における最下位ビットが設定される）を必要とし得る。
【００７０】
図５は、１７の別個のキャッシュブロック内に配置された、１７ｘ１７のピクセルデータのブロック５００を示している。残念ながら、この１７ｘ１７のデータブロックのページ化メモリ内の位置は、キャッシュブロックと整列されない可能性がある。ソースデータの全ての１７バイト幅の行が１つのキャッシュブロック内に納まる場合（図５）、全データに対してアクセスを有するためには、１７のデータのキャッシュブロックが必要となる。もし、図６に示されるように、これらの行がキャッシュブロックの境界を横断すると、３４のキャッシュブロックが必要となる。このブロックの横断の発生は、時間の約２５％で生じそうであるから、平均のブロックカウントは約２１となるであろう。
【００７１】
２１のキャッシュブロックはキャッシュの２１ｘ６４＝１３４４バイトを占める。双方向予測を考察すると、２つのデータソースが存在することになり、これはソースデータのキャッシュ占有を２６８８に倍化させる。宛先データは、１６のキャッシュブロックを占め、キャッシュブロックを横断しないことが保証され得るので（キャッシュに整列された表示ラインを仮定する）、宛先データのキャッシュ占有は１６ｘ６４＝１０２４バイトである。従って、全キャッシュ占有は３７１２バイトとなり、これは多くのプロセッサのキャッシュ内に納まるのに充分なほど小さい。
【００７２】
１つのキャッシュブロックが取り込まれる場合、１６又は１７バイトしか実際には必要とされない場合でも、キャッシュブロックの全６４バイトが当該キャッシュに読み込まれる。マクロブロック間で動きベクトルが変化しない場合、該ブロックに対して使用されないデータは、後続のブロックに対して使用されるであろう。しかしながら、動きベクトルが広く変化するような“困難な”ビデオシーケンスにおいては、このデータは使用されない可能性が高い。最悪の場合は、どのマクロブロックも、読み出されたが前のマクロブロックの処理の間に使用されなかったデータの何れも使用せず、結果として、予測データが読み出されるのに要するメモリ帯域幅が４倍になる場合である。これは、使用されるであろうデータキャッシュの量の大幅な増加の原因ともなるので、他の有用なデータ（予測ソースデータ、予測出力データ又は動き再生に必ずしも直接的に関係しない他のデータ）が当該キャッシュから破棄され得、斯かるデータが再度必要となった場合に、結果的な時間の浪費を伴う。これの明らかな結果は、当該シーケンスをリアルタイムで提示するためにデータを廃棄しなければならない場合の画像品質の悪化である。柔軟性のあるメモリアドレス指定方法は、他のメモリ構造が実施化されるのを可能にする。例えば図７は、各キャッシュブロックが８ｘ８の矩形領域（“タイル”）の輝度データを含むように画像データが編成されるようなタイル化配置を図示している。この編成の場合、マクロブロックによりカバーされる輝度の宛先領域は、４つのキャッシュブロックの全てを占める（１６ブロックの一部の代わりに）。図８は、１６ｘ１６ピクセル及び１７ｘ１７ピクセルの間の各ソース領域が、通常どの様に３ｘ３＝９キャッシュブロック（図５及び６のリニア配置における典型的な２１に対して、４から９の範囲となる）を占有するかを示している。
【００７３】
図９及び１０はスキュータイル化配置を図示し、これによれば、画像データは、ここでも、各キャッシュブロックが８ｘ８矩形領域（“タイル”）の輝度データを含むように編成されるが、各交互の行はタイルの半分だけスキューされている。この配置は、画像メモリのページの横断を更に減少させることができる。
【００７４】
実験結果は、予測されたように、タイル化された編成は動きベクトルが高度に変動的である場合に性能を改善することを示している。しかしながら、動きベクトルが一定である場合は単純なリニア編成が非常に良好に動作し、フォーマット間の変換のオーバーヘッドは無視することができない。
【００７５】
［キャッシュ制御］
多くのプロセッサは、キャッシュの動作がプログラマにより直接制御されるのを可能にする命令を有している。ここでは２つの例を、フィリップス社製トライメディアＰＮＸ１３００プロセッサに関連して説明する。キャッシュ制御機能は、図１においてブロック（ＳＴＡＴＳ）１９０からメモリサブシステムにつながるライン１９８により示されている。他のプロセッサも、プログラマがキャッシュを制御するための同等の又は異なるオプションを提供することができる。
【００７６】
＜キャッシュブロック割当＞
プロセッサが記憶命令を実行する場合、その効果は、キャッシュブロック内のデータが変更されるというものである。変更されるメモリデータが既にキャッシュ内にある場合、これは全速で生じる。しかしながら、これが当てはまらない場合、新たなキャッシュブロックが割り当てられなければならず、変更されたバイトが該ブロックに書き込まれる。当該キャッシュブロック内の該データの残りをメモリと一致させるために、データを該新たに割り当てられたキャッシュブロックに読み込むための読取動作が存在しなければならない。
【００７７】
幾つかの場合において、プログラマは、キャッシュブロック内の全てのバイトが重ね書きされ、この読取動作は不必要であることを知るであろう。該読み取りはメモリシステムの帯域幅を占有する。幾つかのプロセッサの構成においては、これはプロセッサを遅延させ得る。上記トライメディアの“alloc”命令は、新たなキャッシュブロックが、メモリから充填されることなしに割り当てられるようにし、これらの問題を回避する。
【００７８】
しかしながら、“alloc”命令は危険であり得る。当該ブロック内のデータの幾つかがプログラムにより重ね書きされない場合、その影響は、このデータが失われるということになる。斯かるプログラムは、当該キャッシュブロックによりカバーされるメモリ領域内の既存のデータの何れも再び必要とされないことを保証するように、書かれなければならない。
【００７９】
前述した２つのメモリ編成に関しては、第２の（タイル化）編成の方が、この観点からは、遙かに単純であることがわかる。各マクロブロックの復号は、４つのキャッシュブロックを完全にカバーする。他方の編成は１６のキャッシュブロックを部分的にカバーし、これは、“alloc”の使用を制御するために一層の計算上の複雑さが必要とされることを意味する。これは、表示ラインの始点及び終点の近傍で特に複雑になり得る。この複雑さは、キャッシュ管理命令を使用することからの利益を減少させる又は破壊さえもし得るような計算的コストを有するであろう。
【００８０】
＜先取り（pre-fetch）＞
この処理は、当該メモリシステムがキャッシュラインを割り当て、指定されたメモリ領域からのデータでロードすることをリクエストする。利点は、これを、データを必要とされる前にコールすることができる点である。当該メモリシステムが、当該先取りリクエストが発せられる時点と当該データが必要とされる時点との間に充分な予備時間を有している場合、該データは先取りされ、当該プロセッサは該データを待って遅らされることはないであろう。
【００８１】
タイル型編成においては、関係するキャッシュブロックが大幅に少ないので、先取りが生じるために利用可能な時間が一層ありそうである。全体では、先取りされるデータは大幅に少ない。これは、動きベクトルが一定である場合には余り関係がなく、全てのデータが最終的には有用となろうが、当該データの幾つかが決して使用され得ないように動きベクトルが変化する場合は一層重大である。
【００８２】
結論として、タイル化フォーマットのような幾つかのメモリ編成は、他のものより有効なキャッシュ最適化の余地がある。しかしながら、ここでも、タイル化フォーマットへの変換にはオーバーヘッドが関わるという事実は、当該フォーマットを全てのフレームに対して使用することが必ずしも効率的でないことを意味する。
【００８３】
［パラメータ化されたアドレス指定］
通常、異なるメモリ編成は、異なって書かれたコードを必要とする。これを回避する１つの技術は、単一の共通のコードを種々のメモリ編成を扱うことができるようにパラメータ化することである。
【００８４】
一例は、トライメディア（登録商標）に適用される１つの可能性のある構成を示す。これは３２ビットプロセッサであるので、４つの値のデータ群を扱うのが便利である。この場合、各ワードは、当該画像の１つからの４つの隣接する値（例えば、４つの水平方向に隣接するピクセルの輝度値）を表す。
【００８５】
該パラメータ化は、所要の方向に或る距離移動させる場合に使用されるべきアドレスオフセットを定義するために、固定定数の代わりにパラメータを代用する。例えば、右方向に４つの値（１ワードのデータ）だけ移動する、又は下方に１行移動するためである。これらパラメータを一定のオフセットの代わりに使用する追加のコストが小さくなるように、これらパラメータはプロセッサのレジスタ内に保持することができそうである。
【００８６】
最初に述べたリニアなメモリ配置（図５及び６）を使用すると、マクロブロック内で４つの値を右に移動させることは、当該アドレスへの４の加算を必要とし、１だけ下方への移動はメモリ行歩幅（例えば、ラインの長さが７２０であり、これがキャッシュ整合目的で７６８に切り上げられている場合、上述したように７６８）を加算することを意味する。
【００８７】
メモリ配置の説明は、第２のタイル化メモリ配置の動作の理解を助けるであろう。輝度データの記憶が７２０ｘ５７６の解像度におけるものであるような例を考察すると、データの各ファイルは、この画像の８ｘ８領域を表すであろう。該画像は、７２０／８＝９０タイル幅、及び５７６／８＝７２高である。各マクロブロックは、１６ｘ１６の輝度領域をカバーするので、幅及び高さの両方が２タイルとなる。
【００８８】
図７及び８のタイル化編成は、タイルをメモリ内で列に配列する。従って、当該画像バッファの最初の６４バイトは（メモリ順序での最初のタイル）は、当該画像の左上のタイルを描く。メモリ順序で２番目の６４バイトは、最初の列のタイルにおける２番目のタイル（その最初の左上の値は、水平ピクセル位置零及び垂直ピクセル位置８である）を描く。これは、列全体のタイルが描かれるまで継続する。次いで、第２列のタイルが続き、当該輝度画像バッファの終了まで続く。スキュータイル化フォーマットの場合は、タイルは依然として列に配列されるものの、交互の行では各タイルは他のものに対してオフセットされる。
【００８９】
このタイル化編成においては、１行下方に移動するのに要するメモリアドレス変化は８である。８ピクセル右方向に移動するのに要するメモリアドレスの増加は、１列のタイルのサイズ（７２ｘ８）に等しい。このパラメータ化の構成の結果は、２つの非常に異なるメモリ編成を、２つのパラメータ（１ピクセル下方に移動する及び８ピクセル右方向に移動するためのアドレス変化）に対して異なる値が付与される同一のコードを使用することにより扱うことが可能になるということである。スキュータイル化フォーマットの場合、どの行がアクセスされているかに依存して、行アドレスにオフセットが加算されるべきであることは明らかである。
【００９０】
可能な場合は、より多くの又は他のパラメータを用いて他の配置が達成される。例えば、タイルは８ｘ８平方である必要はなく、１６ｘ４又は４ｘ１６等の長方形とすることもできる。冒頭導入部で言及した米国特許は、三角形タイルを含む他の形状を述べている。
【００９１】
幾つかの場合においては、関連コードの代替バージョンが必要となり得る。例えば、幾つかの場合において、上記のパラメータ化された方法は、該方法が４つの値のブロックで動作する故に動作しない可能性がある。これの一例は、クロミナンスＵ及びＶ値がインターリーブされる（u0, v0, u1, v1, u2, v2, u3, v3）ような“準平面（semi-planar）”フォーマットである。このフォーマットにおいては、発生される４つのＵ値の組は連続したバイトに書き込まれないので、汎用のパラメータ化されたコードは動作し得ない。
【００９２】
[出力フレーム変換]
上述したタイル化されたもののようなメモリ編成はＭＰＥＧデコーダ内では計算的に効率的であり得るが、出力端において必要とされるフォーマットではない可能性が高い。リニアな編成の方が適切であるかも知れない。
【００９３】
従って、Ｂ画像構築において使用される予測データを取り込むコストを、最少のキャッシュ動作のために、Ｉ及びＰ画像を構築することにより低減することが有利である。上述した例では、これは、これら画像のためのタイル化された構造の使用を意味し得る。一方、リニア編成は、スクリーン上での画像表示又は他の動作に必要とされるものであり得る。これは、異なって編成された画像を取り込み、該画像を所要のフォーマットに変換する変換処理が存在しなければならないことを意味する。この変換組織は、データをキャッシュブロック順序で効率的に読み取り及び書き込むと共に、“alloc”等のキャッシュ最適化命令を使用して、該変換のコストがデコーダにおける処理時間の節約より少なくなり得るように構成することができる。
【００９４】
当該デコーダにおける次の処理段／モジュールが、通常でない構造を許容するように設計され得るなら、この変換の必要性はないであろう。例えば、幾つかの場合においては、ビデオ復号の後の次のステップは画像内容の、字幕データとの混合であり得る。この混合処理は、当該ビデオデータを追加のコストなしにタイルフォーマットで読み取るように構成することができる。
【００９５】
[画像タイプ]
一例としてＭＰＥＧ−２復号を使用いると、本符号化方法は３つの画像タイプ（Ｉ、Ｐ及びＢ）を使用する。Ｉ及びＰ画像は“重要（key）”画像であり、これは、これら画像が動き予測のソースとして使用することができることを意味する。Ｂ画像はその様に使用することはできないが、これらを構築するために使用される予測データの量が故に、復号するのに時には最も費用が掛かる。
【００９６】
従って、Ｉ及びＰ画像に対してはタイル化フォーマットを使用し、Ｂ画像は、直接、所要の出力フォーマットで発生することに有利がある。処理コストは、性能問題が少ないＩ及びＰ画像に対して生じるであろう出力画像変換である。Ｂ画像の処理は、改善された入力画像バッファフォーマットの利益を受ける一方、出力画像バッファ変換のオーバーヘッドの不利益を被ることはない。
【００９７】
ここでは、両方の場合において同一のコードが使用されるのを可能にするために、前記パラメータ化されたアドレス指定構造が有効である。
【００９８】
幾つかのシーケンスは、フィールド構造化されている。これは、当該ストリーム内で符号化されている各画像が当該画像の１つのフィールド（全て奇数行又は全て偶数行の何れか）であることを意味する。この種のシーケンスで効率的に動作するためには、メモリ構造をフィールドを分離するように変更し、フィールド予測が、より少ないキャッシュブロックをカバーするようにするのが有効であり得る。ここでも、これは当該ストリームの解析及び最も適した画像バッファフォーマットの動的選択からの結果であり得る。当該シーケンスが、殆どの予測がフィールド構造化されているようなものである場合、当該フレームを、単一のインターリーブ（インターレース）されたフレームの代わりに、２つの別個のフィールドとして記憶することが好ましいであろう。これは、フレーム構造化されたバッファからのフィールド予測は、データの１行置きのみから読み取り、これが、フィールド予測データを得るために２倍多くのタイルをアクセスしなければならない（タイルの半分のみが有効であるからである）ことを意味するからである。これの解決策は、バッファ内の全ての連続するラインが同一のフィールドに属するように、２つのフィールドをメモリ内に別個に保持することである。
【００９９】
上述した説明は、特定のシーケンスが或る画像バッファフォーマットには良好に合致するが、他のものには合致しない可能性があることを示している。これは、元のソースビデオ題材の差故に発生し得るか、又は異なるエンコーダ構成の結果であり得る。有利には、当該パラメータ化された画像バッファフォーマットは、ストリームの現部分に対して最良の画像バッファフォーマットを選択するために、測定された復号性能値及び／又は入力ストリームの分析をサポートする。当該キャッシュ制御機能は、利益を増加させるために、同一の測定値に基づいて又は独立に制御することができる。
【０１００】
当業者であれば、当該メモリサブシステムを測定値及び上記洞察に基づいて制御するための全ての範囲のアルゴリズムを容易に導出することができるであろう。実データ及び当該システムの応答に適合させるために、これらアルゴリズムは、単一の測定値若しくは多数のものに基づくことができ、単純であるか若しくは高度に複雑であることができ、固定の規則に基づくことができ、斯かる規則自体は自動的に変更することができる。
【０１０１】
これら及び他の変更例は、添付請求項に記載された本発明の趣旨及び範囲内で可能である。
【図面の簡単な説明】
【０１０２】
【図１】図１は、ＭＰＥＧ画像デコーダの機能ブロック図である。
【図２】図２は、図１のデコーダを実施化する処理システムのブロック図である。
【図３】図３は、ＭＰＥＧデータストリームの構造、及び図１及び２のデコーダ内での上記ストリーム内で表される画像フレームの順序を示す。
【図４】図４は、図１及び２のデコーダのメモリにおけるリニアフォーマットの画像記憶を示す。
【図５】図５は、リニアフォーマットの画像記憶におけるピクセルブロックに関するデータの可能性のある位置を示す。
【図６】図６も、リニアフォーマットの画像記憶におけるピクセルブロックに関するデータの可能性のある位置を示す。
【図７】図７は、図１及び２のデコーダのメモリにおけるタイル化フォーマットの画像記憶を示す。
【図８】図８は、タイル化フォーマットの画像記憶におけるピクセルブロックに関するデータの位置を示す。
【図９】図９は、図１及び２のデコーダのメモリにおけるスキュータイル化フォーマットの画像記憶を示す。
【図１０】図１０は、スキュータイル化フォーマットの画像記憶におけるピクセルブロックに関するデータの位置を示す。
【図１】
2007510320.tif 000003
【図２】
2007510320.tif 000004
【図３】
2007510320.tif 000005
【図４】
2007510320.tif 000006
【図５】
2007510320.tif 000007
【図６】
2007510320.tif 000008
【図７】
2007510320.tif 000009
【図８】
2007510320.tif 000010
【図９】
2007510320.tif 000011
【図１０】
2007510320.tif 000012
【国際調査報告】
2007510320.tif 000013
2007510320.tif 000014
2007510320.tif 000015