(57)【要約】【課題】高性能ビデオプロセッサ用の低電力メモリ階層を提供する。【解決手段】通常、内部メモリと外部転送回路とを有する装置を開示する。内部メモリはチップ上に配置することができるとともに、（ｉ）動き補償に適し（ｉｉ）チップ外の外部メモリに格納された少なくとも１つの基準フレームのサブセットを格納するための少なくとも１つの第１のバッファを含むことができる。上記少なくとも１つの第１のバッファの大きさは、通常、基準フレーム内のブロックの１行より大きい。外部転送回路はチップ上に配置されるとともに、そのサブセットを外部メモリから内部メモリへ転送するように構成することができる。【選択図】図１
2006254437.tif 000002
【特許請求の範囲】
【請求項１】
チップ上に配置されるとともに、（ｉ）動き補償を適用し（ｉｉ）前記チップ外の外部メモリに格納された少なくとも１つの基準フレームのサブセットを格納するための少なくとも１つの第１のバッファを含む、内部メモリであって、前記少なくとも１つの第１のバッファの大きさが前記基準フレームのブロックの１行より大きい内部メモリと、
前記チップ上に配置されるとともに、前記サブセットを前記外部メモリから前記内部メモリへ転送するように構成された外部転送回路とを備える装置。
【請求項２】
前記チップ上に配置されるとともに、画像データを前記内部メモリから処理エンジンへ転送するように構成されたクライアント転送回路を更に含む請求項１記載の装置。
【請求項３】
前記クライアント転送回路が、前記内部メモリと前記処理エンジン間で前記ブロックを転送するように使用される前記少なくとも１つの第１のバッファ内において、複数個の内部オフセットを指定する複数個のクライアント・オフセット・メモリを使用する請求項２記載の装置。
【請求項４】
前記クライアント転送回路は更に、クライアントからのインクリメント要求に応答して前記内部オフセットの少なくとも１つをプログラム可能な量だけインクリメントするように構成される請求項３記載の装置。
【請求項５】
前記クライアント転送回路への転送要求内の少なくとも１つのベクトルオフセットが、前記クライアント・オフセット・メモリ内に格納された前記内部オフセットの少なくとも１つに加算される請求項３記載の装置。
【請求項６】
前記処理エンジンがダブルバッファ・ローカルメモリを含み、前記ダブルバッファ・ローカルメモリの第１の部分は前記処理エンジンと前記内部メモリ間でのデータ転送用に構成可能であり、前記ダブルバッファ・ローカルメモリの第２の部分は前記処理エンジンによる前記データに対する演算用に構成可能である請求項２記載の装置。
【請求項７】
前記転送と前記演算の両方が完了すると、前記第１の部分と前記第２の部分が交換される請求項６記載の装置。
【請求項８】
前記内部メモリと前記外部メモリ間でデータを転送するために使用される前記基準フレーム内において、前記外部転送回路が、複数個の外部オフセットを指定する複数個の外部オフセット・メモリを使用する請求項２記載の装置。
【請求項９】
（ｉ）前記外部オフセット・メモリの少なくとも１つが、複数個のクライアント・オフセット・メモリの少なくとも１つにリンクされ、
（ｉｉ）前記外部メモリと前記内部メモリ間の転送は、前記少なくとも１つのクライアント・オフセット・メモリへの作用により開始され、前記内部メモリと前記処理エンジン間で転送を行う請求項８記載の装置。
【請求項１０】
前記クライアント転送回路は更に、前記内部メモリと前記処理エンジン間のクライアント転送を阻むように構成される一方、前記外部メモリと前記内部メモリ間の少なくとも特定数のメモリ処理が保留される請求項９記載の装置。
【請求項１１】
前記内部メモリが前記ブロックの行より小さい、少なくとも１つの第２のバッファを含む請求項１記載の装置。
【請求項１２】
チップ上に配置されるとともに、（ｉ）動き補償を適用し（ｉｉ）前記チップ外の外部メモリに格納された少なくとも１つの基準フレームのサブセットを格納する第１のバッファを含む、内部メモリであって、前記第１のバッファの幅が前記基準フレームの幅に一致し、前記第１のバッファの高さが２ブロック行以上である内部メモリと、
前記チップ上に配置されるとともに、前記内部メモリからの前記サブセットの少なくとも一部分に作用するように構成された第１の処理エンジンとを備える装置。
【請求項１３】
前記チップ上に配置されるとともに、（ｉ）前記サブセットの第１の部分を前記外部メモリから前記内部メモリへ転送し、（ｉｉ）前記サブセットの第２の部分を前記内部メモリから前記第１の処理エンジンへ転送するように構成された転送回路を更に含む請求項１２記載の装置。
【請求項１４】
前記第１の処理エンジンが、動き補償を行なう前記転送回路へ水平オフセットおよび垂直オフセットの両方を与えるように構成される請求項１３記載の装置。
【請求項１５】
前記第１の処理エンジンが動き予測エンジンを備える請求項１２記載の装置。
【請求項１６】
前記内部メモリが、前記基準フレームのブロックの１行より狭い幅を有する第２のバッファを含む請求項１２記載の装置。
【請求項１７】
前記第２のバッファと前記外部メモリ間でデータを転送するように構成された外部転送回路を更に含む請求項１６記載の装置。
【請求項１８】
前記チップ上に配置された第２の処理エンジンを更に含む請求項１２記載の装置。
【請求項１９】
前記内部メモリの一部分を中間記憶領域として使用することにより、データを前記第１の処理エンジンと前記第２の処理エンジン間で転送するように構成された転送回路を更に備える請求項１８記載の装置。
【請求項２０】
前記第１の処理エンジンが動き補償と動き予測のいずれかを行なうように、前記基準フレーム内の複数個のブロックのそれぞれが１フレームごとに一回だけ前記第１のバッファへ転送される請求項１２記載の装置。
【請求項２１】
前記チップ上に配置され、前記内部メモリと通信するとともに、（ｉ）入力ビット・ストリームを処理すること、（ｉｉ）出力ビット・ストリームを生成することのうち少なくとも１つを行うように構成されたクライアント・エンジンを更に備える請求項１２記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的にはメモリに関し、特には高性能ビデオプロセッサ用の低電力メモリ階層を実現するための方法及び／またはアーキテクチャに関する。
【背景技術】
【０００２】
従来の高い帯域幅（伝送容量）のメモリシステムはリアルタイム（実時間）ビデオ符号化（エンコーディング）のような要求の厳しい画像処理アプリケーションに使用される。フレーム落ちは許されないので、想定される最悪の場合のメモリの待ち時間と帯域幅はビデオ符号化システム基準を満足しなければならない。Ｈ．２６４標準のような、最近のビデオ符号化や高効率符号化システムは想定される最悪の場合の帯域幅の仕様を大幅に高めている。従来のリアルタイムシステムにおいては、外部のダイナミック・アクセス・メモリ（ＤＲＡＭ）チップが、リアルタイムビデオ符号化の際、想定される最悪の場合でも十分な帯域幅を提供している。
【０００３】
【非特許文献１】Ｈ．２６４（Ｅ）：２００５「Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  ｆｏｒ  Ｇｅｎｅｒｉｃ  Ａｕｄｉｏ  ｖｉｓｕａｌ  Ｓｅｒｖｉｃｅｓ」（ＩＴＵ−Ｔ  Ｒｅｖｉｓｅｄ  Ｒｅｃ．  Ｈ．２６４（Ｅ）｜ＩＳＯ／ＩＥＣ  １４４９６−１０（Ｅ）），ｐｕｂｌｉｓｈｅｄ  ｂｙ  ｔｈｅ  Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ  （ＪＶＴ）  ｏｆ  ｔｈｅ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ／Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｓｓｉｏｎ（ＩＳＯ／ＩＥＣ）  ＭＰＥＧ  ａｎｄ  ｔｈｅ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ  （ＶＣＥＧ）  ｏｆ  ｔｈｅ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｕｎｉｏｎ−Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ  Ｓｅｃｔｏｒ（ＩＴＵ−Ｔ），Ｆｅｂｒｕａｒｙ  ２８，２００５  Ｇｅｎｅｖａ，Ｓｗｉｔｚｅｒｌａｎｄ
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のオンチップ・キャッシュは、キャッシュをヒットした場合には十分な帯域幅と待ち時間を提供し、キャッシュをヒットしなかった場合には想定される最悪の場合での十分な性能を提供しない。この結果、最新のリアルタイムビデオ処理回路の電力消費は携帯用アプリケーションには余りに大き過ぎる。
【課題を解決するための手段】
【０００５】
本発明は、一般的に内部メモリと外部転送回路とを備える装置に関する。内部メモリはチップ上に配置されるとともに（ｉ）動き補償に適し（ｉｉ）チップ外の外部メモリに格納された少なくとも１つの基準フレームのサブセットを格納するための少なくとも１つの第１のバッファを含む。上記少なくとも１つの第１のバッファの大きさは通常、基準フレーム内のブロックの１行より大きい。外部転送回路はチップ上に配置され、サブセットを外部メモリから内部メモリへ転送するように構成される。
【０００６】
本発明の目的、特徴、および利点としては、（ｉ）消費電力を低減し、（ｉｉ）外部メモリに対する使用帯域幅を最小化し、（ｉｉｉ）外部メモリへアクセスする待ち時間を見えないようにし、及び／または（ｉｖ）外部メモリとの効率的な長時間バースト交換を最大化することができる高性能ビデオプロセッサ用のメモリ階層を提供することにある。
【０００７】
本発明のこれらおよび他の目的、機能と利点は、以下の詳細な説明と添付の特許請求の範囲と図面から明白になる。
【発明の効果】
【０００８】
本発明によれば、（ｉ）消費電力を低減し、（ｉｉ）外部メモリに対する使用帯域幅を最小化し、（ｉｉｉ）外部メモリへアクセスする待ち時間を見えないようにし、及び／または（ｉｖ）外部メモリとの効率的な長時間バースト交換を最大化することができる。
【発明を実施するための最良の形態】
【０００９】
図１を参照すると、本発明の好適な一実施形態によるシステム１００のブロック図が示されている。システム（または装置）１００は通常、回路（またはチップ）１０２と回路（またはチップ）１０４とを含む。回路１０２のインタフェース１０６は回路１０４のインタフェース１０８へ接続される。信号（例えばＥＸＴ）は、インタフェース１０６、１０８を介して回路１０２と回路１０４間で転送される。回路１０２は入力信号（例えばＶＩＤＥＯ＿ＩＮ）を受信することができる。出力信号（例えばＶＩＤＥＯ＿ＯＵＴ）は回路１０２から送信される。
【００１０】
回路１０２はビデオチップと称されるものである。ビデオチップ１０２は、回路１０４内に格納されたビデオ情報を処理するように動作可能である。限定するものではないが、この処理は符号化、復号化、動き予測、および動き補償を含む。ビデオチップ１０２は通常、単一の集積回路ダイすなわちチップとして作製される。ビデオ情報の一部は、信号ＥＸＴにより回路１０４から処理用のビデオチップ１０２へ搬送される。ビデオ情報もまた信号ＥＸＴによりビデオチップ１０２から回路１０４へ搬送され、戻される。
【００１１】
回路１０４は外部メモリ・チップと称されるものである。外部メモリ・チップ１０４は通常、単一の集積回路ダイまたはチップとしてビデオチップ１０２とは別に作製される。外部メモリ・チップ１０４は、１つまたは２以上の基準フレームと、１つまたは２以上の処理すべきフレームと、１つまたは２以上の処理されたフレームとを含む多数のビデオフレームを格納するように動作可能である。
【００１２】
符号化の実施形態に関し、ビデオチップ１０２により提供される出力ビット・ストリーム（例えば信号ＶＩＤＥＯ＿ＯＵＴ）は、（非特許文献１）のビデオ標準ＩＴＵ−Ｔ  Ｒｅｖｉｓｅｄ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎに準拠してよい。復号化の実施形態において、ビデオチップ１０２により受信された入力ビット・ストリーム（例えば信号ＶＩＤＥＯ＿ＩＮ）は、（非特許文献１）に準拠してよい。特定のアプリケーションの基準を満たすためには他の符号化（コーディング）方法を実施してもよい。
【００１３】
ビデオチップ１０２は通常、回路（またはモジュール）１１０、回路（またはモジュール）１１２、任意の回路（またはモジュール）１１４、任意の回路（またはモジュール）１１６、任意の回路（またはモジュール）１１８を含む。回路１１０は信号ＥＸＴを通じて外部メモリ・チップ１０４と通信可能である。信号（例えばＩＮＴ）は回路１１０と回路１１２間でビデオ情報を交換するために使用される。別の信号（例えばＢＵＦ）も回路１１０と回路１１２間でビデオ情報を交換するために使用される。回路１１０は信号（例えばＣＬＩＥＮＴ）内のビデオ情報を、回路１１４−１１８と交換することができる。信号（例えばＴＲＡＮＳ）は回路１１４−１１８により提供され、回路１１０へ戻される。
【００１４】
回路１１０はダイレクトメモリアクセス（ＤＭＡ）ユニットと称されるものである。ＤＭＡユニット１１０は、回路１１２と、外部メモリ・チップ１０４および回路１１４−１１８の両方との間でデータ（例えば、ビデオフレーム、動きベクトル及び／またはその他ビデオ情報の一部）を転送するように動作可能である。転送制御は、回路１１４−１１８からの信号ＴＲＡＮＳにおいて受信された情報により管理される。ＤＭＡユニット１１０もまた、転送回路（またはモジュール）と称される。
【００１５】
回路１１２は、共有メモリ（ＳＭＥＭ：ｓｈａｒｅｄ  ｍｅｍｏｒｙ）回路と称されるものである。ＳＭＥＭ回路１１２は、外部メモリ・チップ１０４と回路１１４−１１８間で流れるビデオ情報を格納またはバッファするように動作可能なメモリ回路として実装される。ＳＭＥＭ回路１１２はまた、回路１１４−１１８間で転送されたビデオ情報をバッファするように動作可能である。ＳＭＥＭ回路１１２は通常、ＤＭＡユニット１１０及び回路１１４−１１８と同じチップ上に（または、チップ内に）作製される。
【００１６】
回路１１４は、動き予測（ＭＥ）エンジンと称されるものである。ＭＥエンジンは、ＳＭＥＭ回路１１２とＤＭＡユニット１１０を介して外部メモリ・チップ１０４から受信された基準フレーム（参照フレーム）の一部を使用することにより動き予測を行なうように実装される。ＭＥエンジン１１４は、ビデオチップ１０２がビデオ符号化システムの一部である場合に実施され、ビデオチップ１０２がビデオ復号化のみのシステムの一部である場合は無くてよい。ＭＥエンジン１１４は通常、ＤＭＡユニット１１０、ＳＭＥＭ回路１１２、回路１１６−１１８と同一チップ上に（または、同一チップ内に）作製される。
【００１７】
回路１１６はクライアント・エンジンと称されるものである。クライアント・エンジン１１６は、ビデオ情報を処理するためのＳＭＥＭ回路１１２にアクセスするように動作可能である。信号ＶＩＤＥＯ＿ＩＮの入力データは、クライアント指定の処理を行うクライアント・エンジン１１６へルーティングされることができる。出力データはクライアント・エンジン１１６により生成され、信号ＶＩＤＥＯ＿ＯＵＴに提供される。他のＳＭＥＭクライアント（例えば動き予測エンジン１１４と回路１１８）は、信号ＶＩＤＥＯ＿ＩＮから入力データを受信し、及び／または信号ＶＩＤＥＯ＿ＯＵＴに提供される出力データを生成する。クライアント・エンジン１１６は通常、ＤＭＡユニット１１０、ＳＭＥＭ回路１１２、ＭＥエンジン１１４、回路１１８と同一チップ上に（または、同一チップ内に）作製される。
【００１８】
回路１１８は処理エンジンと称されるものである。処理エンジン１１８はＳＭＥＭ回路１１２内にバッファされたビデオ情報を修正するように動作可能である。限定するものではないが、処理エンジン１１８により行なわれるビデオ符号化と復号化処理はフォーワード変換および逆変換、フォーワード量子化および逆量子化、可変長符号化および可変長復号化を含むことができる。処理エンジン１１８は通常、ＤＭＡユニット１１０、ＳＭＥＭ回路１１２、クライアント・エンジン１１４、ＭＥエンジン１１６と同一のチップ上に（または、同一チップ内に）作製される。
【００１９】
付加的な画像処理動作を行なうために、ビデオチップ１０２には、追加の処理エンジン（図示せず）があってもよい。限定するものではないが、追加の画像処理動作としては色の間引きと補間、コントラスト調整、輝度調整、フェーディング効果、オーバレイ、雑音フィルタリング等が挙げられる。
【００２０】
動き補償は、専用の動き補償エンジンを持たないビデオチップ１０２により行なわれる。整数（画素）動き補償はＤＭＡユニット１１０を使用して行なわれる。分数（画素）動き補償は、必要に応じＳＭＥＭクライアント（例えばクライアント・エンジン１１６及び／または処理エンジン１１８）により行なわれる。
【００２１】
オンチップのＳＭＥＭ回路１１２は通常、処理エンジン１１４−１１８により使用される１つまたは２以上の画像フレームのそれぞれを保持するかバッファするために使用される。２つの異なるバッファ・タイプはＳＭＥＭ回路１１２に設けられる。第１のバッファ・タイプ１２０はウインドウ・バッファと称されるものである。ＳＭＥＭ回路１１２内では、１つまたは２以上のウインドウ・バッファ１２０が同時に存在することができる。各ウインドウ・バッファ１２０は、画像（またはフレーム）の全幅と、画像（またはフレーム）の全高さの一部を保持する。例えば、ウインドウ・バッファ１２０の幅はフレームの幅と一致してもよく、一方、ウインドウ・バッファ１２０の高さは、フレームの２つ以上のマクロ・ブロック行を格納することができる。
【００２２】
第２のバッファ・タイプ１２２は小バッファと称されるものである。ＳＭＥＭ回路１１２内には、ゼロ個または１個以上の小バッファ１２２が同時に存在することができる。各小バッファ１２２の大きさは通常、画像（またはフレーム）の幅および高さのサブセットである。例えば、小バッファ１２２は、外部メモリ・チップ１０４内に格納されたフレームからコピーされたか、あるいはウインドウ・バッファ１２０からコピーされた単一行のマクロ・ブロックの一部を保持するような大きさである。
【００２３】
ウインドウ・バッファ１２０と小バッファ１２２は、ＤＭＡユニット１１０内のＤＭＡモジュール１２４、１２６と通信することができる。通常、１つまたは２以上の外部ＤＭＡモジュール１２４（図では１つ）、及び１つまたは２以上クライアントＤＭＡモジュール１２６（図では１つ）は、外部メモリ・チップ１０４とバッファ１２０及び／または１２２間の転送に、バッファ１２０及び／または１２２と内部処理エンジン１１４−１１８間の転送をオーバーラップさせることができる。ＤＭＡモジュール１２４もまた、外部ＤＭＡ回路（またはチャネル）および外部転送回路（またはチャネル）と称されるものである。ＤＭＡモジュール１２６もまた、クライアントＤＭＡ回路（またはチャネル）およびクライアント転送回路（またはチャネル）と称されるものである。転送回路１２４、１２６はハードウェア及び／またはソフトウェアで実現される。ＤＭＡ回路として以外の、外部転送回路１２４及び／またはクライアント転送回路１２６の設計は特定アプリケーションの基準を満たすように実装される。
【００２４】
図２を参照すると、ウインドウ・モードにおける画像１４０の一部のブロック図が示されている。画像（またはフレーム）１４０は入力されたビデオフレームまたは基準フレームである。画像１４０は、外部メモリ・チップ１０４内のある位置（例えばＤＢＡＳＥＴＯＰ）で始まる位置に配置される。画像１４０は、ある幅（例えばＳＣＯＬＭＡＸ）と高さ（例えばＤＲＯＷＭＡＸ）を有する。図２は一般的には、既にＳＭＥＭ回路１１２へ転送された画像１４０の第１の部分１４２を示す。また、外部メモリ・チップ１０４からＳＭＥＭ回路１１２への画像１４０の第２の部分１４４（例えば、１マクロ・ブロック行  ×  ＳＢＬＫマクロ・ブロック列）に対して進行中のＤＭＡ転送も例示されている。上記の第２の部分１４４は、画像１４０の特定行（例えばＤＲＯＷ）と特定列（例えばＤＣＯＬ）で始まる。画像１４０の第３の部分１４６は第２の部分１４４が転送された後、ＳＭＥＭ回路１１２へ転送されるようにスケジュールされる。
【００２５】
送信先ウインドウ・バッファ１２０は、ＳＭＥＭ回路１１２内のベース位置（例えばＳＢＡＳＥ）で始めると定義される。送信先ウインドウ・バッファ１２０は、画像１４０から、画像１４０のマクロ・ブロック幅ＳＣＯＬＭＡＸと、いくつかの行（例えばＳＲＯＷＭＡＸ）のブロックとを同時に収容することができる。通常、画像１４０の幅はウインドウ・バッファ１２０の幅と一致するので、第２の部分１４４の始まる列（例えばＤＣＯＬ）は、ウインドウ・バッファ１２０と外部メモリ・チップ１０４では同じである。
【００２６】
ウインドウ・バッファ１２０は、ターゲット・ブロック（マクロ・ブロック）１４８の垂直方向に制限されたオフセット内の画像１４０の領域へのランダム・アクセスを援助するように動作する。ターゲット・ブロック１４８は、ウインドウ・バッファ１２０内で、ベース位置ＳＢＡＳＥに対するある位置（例えば（ＳＲＯＷ、ＳＣＯＬ））を有する。
【００２７】
ウインドウ・バッファ１２０は、動き補償されるビデオ圧縮処理に対し特に有用である。通常、ウインドウ・バッファ１２０の垂直動きベクトル範囲を、動き予測処理の垂直探索範囲に制限される。特に、動きベクトルが余りに大きくなると、関連する動き補償予測値は一般的に不正確となり、また動き予測演算（に使用する演算装置）があまりにも高価なものとなりうる。従って、動き補償に有用な画像１４０の量は、ターゲット・ブロック１４８の周りの垂直方向および水平方向に限定されることとなる。人間の視覚システムは一般的に高速の上下動より高速の水平動を容易に追跡するので、ビデオシーケンスは通常、水平動ベクトル範囲より小さな垂直動きベクトル範囲を有する。その結果、垂直探索範囲は水平探索範囲より小さくでき、限られた数のマクロ・ブロック行のみをウインドウ・バッファ１２０によりバッファすればよい。
【００２８】
一実施態様においては、オンチップＳＭＥＭメモリ回路１１２は、高速のビデオシーケンスに対する適切な垂直動きベクトル範囲を可能にする組み込み型ＤＲＡＭあるいは、１トランジスタ・スタティック・ランダムアクセス・メモリ（ＳＲＡＭ）（６トランジスタＳＲＡＭではなく）のような高密度オンチップ・メモリ技術を使用することにより実現できる。ウインドウ・バッファ１２０の垂直範囲は通常、垂直動きベクトル範囲に設定される。通常、垂直ウインドウ・バッファ１２０の範囲を垂直動きベクトル範囲に一致させることにより、すべての動き予測および動き補償フェッチは外部メモリ・チップ１０４においてではなくＳＭＥＭ回路１１２のみを使用することにより実行することができる。オンチップＳＭＥＭ回路１１２は非常に小さくかつ、処理エンジン１１４−１１８により接近しているので、オンチップＳＭＥＭ回路１１２へのアクセスは、繰り返し外部メモリ・チップ１０４へのアクセスするよりはるかに電力効率がよい。更に、オンチップＳＭＥＭ回路１１２は通常、小規模な転送へアクセスする際、外部メモリ・チップ１０４に使用される長いバースト転送用に最適化可能な標準ＤＲＡＭ部品よりはるかに効率的である。
【００２９】
通常、基準フレーム全体はＳＭＥＭ回路１１２内に格納されないので、ターゲット・ブロック１４８が進められるにつれて（通常はマクロ・ブロックからマクロ・ブロックへ）、外部ＤＭＡモジュール１２４は、新しい基準データをウインドウ・バッファ１２０へ読み込むとともにウインドウ・バッファ内の最も古いデータを廃棄するように使用される。外部ＤＭＡモジュール１２４はウインドウ・バッファ１２０を、ターゲット・ブロック１４８の位置を中心として保持し、その結果、一定の上下動補償範囲が維持される。外部ＤＭＡモジュール１２４は、動き探索の数及び／または動き補償の数（実行回数）とは無関係に、外部メモリ・チップ１０４からの基準フレームの各画素をフレーム当たり１回だけロードすることができる。この一回だけのロードは、（ｉ）外部メモリ・チップ１０４からすべてのデータにアクセスすること、または（ｉｉ）従来のキャッシュ・システムの想定される最悪の場合の動作（より高い待ち時間とキャッシュ・ブロック・サイズのオーバヘッドのせいで外部メモリ・チップ１０４に直接アクセスすることよりも更に悪い場合）と比較すると、外部メモリ・チップ１０４とビデオチップ１０２間の帯域幅を著しく低減することができる。ターゲット・ブロック１４８を中心とした画像の水平方向に制限された領域を格納する従来のオンチップ・キャッシュでも、ターゲット・ブロック１４８がマクロ・ブロックの１つの行から次の行へ移動するにつれて、結局、外部メモリ・チップ１０４からの画像データを複数回読み取り、探索領域の大きさが増加するにつれ、外部メモリ・チップ１０４の帯域幅の使用を増大することになる。
【００３０】
画像１４０の一部分が一旦ウインドウ・バッファ１２０にコピーされると、クライアントＤＭＡモジュール１２６は、画像１４０の下位部分（またはサブウィンドウ）１５０をウインドウ・バッファ１２０から１または２以上の処理エンジン１１４−１１８へ移動することができる。例えば、クライアントＤＭＡモジュール１２６は、下位部分１５０を処理エンジン１１４−１１８内の１つまたは２以上のローカルメモリ１５２ａ−１５２ｎへ転送することができる。ローカルメモリ１５２ａ−１５２ｎは、ＲＭＥＭ（基準メモリ）、ＴＭＥＭ（ターゲットメモリ）、およびローカルメモリ１５２と略して称する。ＴＭＥＭは、１つまたは２以上のターゲット・ブロック１４８を格納する大きさである。ＲＭＥＭは、１つまたは２以上の基準フレームのターゲット・ブロック１４８の位置の周りの探索範囲を格納する大きさである。
【００３１】
下位部分１５０は、ターゲット・ブロック１４８より大きな幅（例えばＳＣＯＬＣＮＴ）および高さ（例えばＳＲＯＷＣＮＴ）を有する。通常、動きゼロに対応する基準ブロックは送信先ローカルメモリ１５２のベース位置（例えばＳＤＥＳＡＤＤＲ）からオフセット（例えば（ＹＯＦＦＳＥＴ、ＸＯＦＦＳＥＴ）した下位部分１５０を中心とする。処理エンジン１１４−１１８がターゲット・ブロックに対する動作を完了すると、ターゲットの水平オフセット（例えばＳＣＯＬ）は、通常はブロックの幅であるプログラム可能な数（例えばＣＯＬＩＮＣ）だけインクリメント（増加）される。処理エンジン１１４−１１８がプログラム可能な数（例えばＳＣＮＴ）のターゲット・ブロック１４８に対する動作を完了した後、外部ＤＭＡモジュール１２４は新しい下位部分をウインドウ・バッファ１２０内にコピーする。ターゲット・ブロック１４８が一旦ウインドウ・バッファ１２０内の画像１４０の端（例えば右側）に到達すると、クライアントＤＭＡモジュール１２６は、ターゲット（例えばＳＣＯＬ）の水平オフセットをゼロにリセットし、通常はターゲット高さであるプログラム可能な数（例えばＲＯＷＩＮＣ）だけ垂直オフセットをインクリメントする。
【００３２】
図３を参照すると、動きベクトルを有するウインドウ・モードにおける画像１４０のブロック図が示されている。動き補償処理では、各ターゲット・ブロック１４８は、１つまたは２以上の基準フレームに対して１つまたは２以上の関連する動きベクトルをそれぞれ有する。動きベクトルは、ウインドウ・バッファ１２０の最大の高さを定義する最大の垂直範囲を有する。
【００３３】
図３に示すように、第１の最大動きベクトル（例えばＭＶａ）は、基準フレーム内の左上方を指す。従って、クライアントＤＭＡモジュール１２６は、下位部分１５０ａをウインドウ・バッファ１２０から、ターゲット・ブロック１４８位置から動きベクトルＭＶａ分オフセットしたローカルメモリ１５２へコピーする。最後の最大動きベクトル（例えばＭＶｎ）は基準フレーム内の右下方を指す。従って、クライアントＤＭＡモジュール１２６は、下位部分１５０ｎをウインドウ・バッファ１２０からローカルメモリ１５２へコピーする。クライアントＤＭＡモジュール１２６は、異なる大きさと方向を有する他の動きベクトルを用いて、画像データの異なるサブセットをウインドウ・バッファ１２０からローカルメモリ１５２へコピーする。
【００３４】
図４を参照すると、小バッファモードにおける画像１４０の一部分のブロック図が示されている。各小バッファ１２２は、画像１４０からの全１行未満のブロックを格納するように構成（設定）される。特に、小バッファ１２２は単一ブロックの高さ（例えばＳＲＯＷＩＮＣ）を有する。小バッファ１２２の幅（例えばＳＣＯＬＭＡＸＳ）は、画像１４０の幅ＳＣＯＬＭＡＸより小さくてもよい。クライアントＤＭＡモジュール１２６は、ローカルメモリ１５２とターゲット・ブロック１４８のみを処理するためにやり取り（送受信）する。
【００３５】
小バッファ１２２は、通常は第１の処理エンジン１１４−１１８と、外部ＤＲＡＭメモリ・チップ１０４または第２の処理エンジン１１４−１１８のいずれかとの間で転送される画像データをバッファするために使用される。小バッファ１２２は、通常、フレームの全幅をバッファすることによりオンチップ・メモリを浪費する逐次的に処理されるブロックであるフレームに対し有用である。小バッファ１２２は、外部メモリ・チップ１０４との長い待ち時間交換を、内部処理エンジン１１４−１１８のより短い待ち時間基準から分離するように使用することができる。共用のオンチップＳＭＥＭメモリ回路１１２内に小バッファ１２２とウインドウ・バッファ１２０との両方を実現することにより、より大きな柔軟性を付与して２つのタイプのバッファ間でメモリ空間と帯域幅を割り当てることができる。単一の高密度オンチップＳＭＥＭ回路１１２アレイはまた、２つの別々のアレイより効率的に実現することができる。
【００３６】
ＤＭＡモジュール１２４と１２６は通常、２組のレジスタ（またはメモリ）１６０ａ−ｌ６０ｂにより制御される。レジスタ１６０ａもまた、クライアントＤＭＡレジスタ（またはメモリ）およびクライアント・オフセット・レジスター（またはメモリ）と称されるものである。レジスタ１６０ｂもまた、外部ＤＭＡレジスタ（またはメモリ）および外部オフセット・レジスター（またはメモリ）と称されるものである。
【００３７】
ＤＭＡモジュール１２４と１２６は、画像処理用に最適化された２次元ブロック・データ転送を援助することができる。クライアントＤＭＡレジスタ１６０ａは、処理クライアント（処理エンジン１１４−１１８）とＳＭＥＭ回路１１２間の転送を制御することができる。外部ＤＭＡレジスタ１６０ｂは外部メモリ・チップ１０４とＳＭＥＭ回路１１２間の転送を制御することができる。ＳＭＥＭ回路１１２とＤＭＡモジュール１２４、１２６は、外部メモリ・チップ１０４へアクセスする待ち時間が見えなくなる（隠れる）ように、通常（ｉ）クライアントが読み込むためのＤＲＡＭデータのプリフェッチと、（ｉｉ）ＤＲＡＭデータを外部メモリ・チップ１０４へ格納し戻すことを実施するべく一緒に接続される。
【００３８】
クライアント処理エンジン１１４−１１８および別個のエンジン制御プロセッサ（図示せず）は通常、レジスタセット１６０ａ−１６０ｂの内、特定セットのＤＭＡレジスタ（チャネル）を指定する信号（例えばＴＲＡＮＳ）でＤＭＡ要求を発行する。クライアントＤＭＡレジスタ１６０ａは、（ｉ）ベース位置ＳＢＡＳＥと、ウインドウ・バッファ１２０または小バッファ１２２の高さＳＲＯＷＭＡＸおよび幅ＳＣＯＬＭＡＸ、またはＳＣＯＬＭＡＸＳ、（ｉｉ）外部転送幅ＳＢＬＫと転送されるデータ・ブロック１４４幅との比、そして（ｉｉｉ）ウインドウ・バッファ１２０内のデータ・ブロック１４４の水平オフセットＳＣＯＬと垂直オフセットＳＲＯＷを指定することができる。ウインドウ・モード（例えば図２と図３）では、ウインドウ・バッファ１２０の幅と、外部メモリ・チップ１０４内に格納されるフレームの幅は一致してよい。小バッファ・モード（例えば図４）では、小バッファ１２２の幅ＳＣＯＬＭＡＸＳと、外部メモリ・チップ１０４内のフレームの幅ＳＣＯＬＭＡＸＤは、別々に指定することができる。ウインドウ・バッファ１２０に関わる転送要求は、付加的な水平オフセットと垂直オフセットとを指定する動きベクトル信号（例えばＭＶ）を含むことができる。一般的には、動きベクトルのオフセット値により動き補償をＤＭＡ転送の一部として扱うことができる。ウインドウ・バッファ１２０の下位部分の開始場所を搬送する信号（例えばＡ）は、クライアントＤＭＡモジュール１２６内にあり、アドレス信号（例えばＡＤＤ）を生成する加算器１６４により動きベクトル値へ加算される。信号ＡＤＤは、クライアント・エンジン１１４−１１８へ転送するためにはウインドウ・バッファ１２０内の発見すべき適切なブロックの位置を関連（連結、連想）するクライアントＤＭＡモジュール１２６に指示する。
【００３９】
各クライアント処理エンジン１１４−１１８および個別のエンジン制御プロセッサは、ＤＭＡユニット１１０に対する未処理のＤＭＡ要求リストをキュー１６２ａ−１６２ｃ内にそれぞれ保持する。ＤＭＡユニット１１０は、各キュー１６２ａ−１６２ｃからの要求を処理し、読み込みデータを返すか、格納データを検索する（引き出す）かのいずれかを行う。クライアントＤＭＡモジュール１２６もまた、ウインドウ・バッファ・モードにおけるクライアントからの別の種類の要求を待ち行列に入れることができ、この要求は通常、関連するクライアントＤＭＡモジュール１２６をウインドウ・バッファ１２０内の次のターゲット・ブロック１４８へ進ませる。通常、上記進行の結果、現在の水平オフセットＳＣＯＬをソフトウェアが指定した量（例えばＳＣＯＬＣＮＴ）だけインクリメントさせることとなる。しかしながら、上記インクリメントの結果、水平オフセットがウインドウ・バッファ１２０の幅に達すると、ターゲット・ブロック１４８の水平オフセットＳＣＯＬはゼロに設定され、現在の垂直オフセットＳＲＯＷはソフトウェアに指定された量（例えばＳＲＯＷＩＮＣ）だけインクリメントすることができる。上記インクリメント要求もまた、どの外部ＤＭＡモジュール１２４（もしあれば）がクライアントＤＭＡモジュール１２６に接続されるかを指定する。一般的には、別のインクリメント要求により、次のターゲット・ブロックに移動する前に現在のターゲット・ブロック１４８に対する多数の動き補償ＤＭＡ要求を行うことが可能となる。
【００４０】
クライアントＤＭＡモジュール１２６は通常、小バッファ・モードにおける各正規のＤＭＡモジュールがレジスタセット１６０ａ内に水平インクリメント量および接続される外部ＤＭＡモジュール１２４の両方を指定した後、暗黙のインクリメント要求を行なう。小バッファモードのＤＭＡは通常、動き補償アクセス用には使用されないので、別個のインクリメント演算は通常実施されない。外部ＤＭＡモジュール１２４がクライアントＤＭＡモジュール１２６に接続されると、外部メモリ回路１０４からの転送は、クライアントＤＭＡモジュール１２６におけるある数のインクリメント後に、接続した外部ＤＭＡモジュール１２４により起動することができる。ＤＭＡ要求ごとのインクリメント数はクライアントＤＭＡレジスタ１６０ａで指定することができる。
【００４１】
各処理エンジン１１４−１１８はダブルバンク・ローカルメモリＲＭＥＭ及び／またはＴＭＢＭを実現し、ＤＭＡ転送が１つのバンク（例えば１５２ａ）で行なわれるようにする一方で、エンジン１１４−１１８は他のバンク（例えば１５２ｂ）のデータを処理する。通常は、ダブルバンク・ローカルメモリにより、ＳＭＥＭ回路１１２にアクセスする待ち時間を処理エンジン１１４−１１８から見えなくすることができる。通常、クライアント処理エンジン１１４−１１８とＤＭＡ処理間の同期は次のように扱われる。「最後の」ビットは、当該要求を現在のＤＭＡバンクへの最後の要求として識別する信号ＴＲＡＮＳ内のＤＭＡ要求に含むことができる。ＤＭＡユニット１１０が「最後の」要求を完了すると、ＤＭＡユニット１１０は、クライアント（例えば１１４）が処理の完了を現在のメモリバンク（例えば１５２ｂ）から示すまで待つ。同様にしてクライアント１１４は通常、クライアント１１４がバンク１５２ｂ処理を完了した後、ＤＭＡユニット１１０が対応するメモリバンク（例えば１５２ａ）へのＤＭＡ転送を完了するのを待つ。クライアント１１４とＤＭＡユニット１１０との両方の準備が整うと、バンク１５２ａと１５２ｂとを交換することができる。クライアント１１４による処理はローカルメモリ・バンク１５２ａから再開し、ＤＭＡ転送はローカルメモリ・バンク１５２ｂにより再開することができる。
【００４２】
外部ＤＭＡレジスタ１６０ｂは通常、（ｉ）外部メモリ１０４におけるフレーム１４０のベース位置ＤＢＡＳＥＴＯＰ、および高さＤＲＯＷＭＡＸ、（ｉｉ）転送されるデータ・ブロック１４４のフレーム１４０内の水平オフセットＤＣＯＬおよび垂直オフセットＤＲＯＷ、そして（ｉｉｉ）現在のＳＭＥＭ行オフセットＳＲＯＷ（ウインドウ・モード）、またはＳＭＥＭ列オフセットＳＣＯＬ（小バッファモード）のいずれかを指定する。ウインドウ・モードに関しては、通常、現在のＳＭＥＭ列オフセットＳＣＯＬは外部フレーム・オフセットと一致する。小バッファモードに関しては、ＳＭＥＭ行オフセットＳＲＯＷは常にゼロであってよい。外部メモリ・チップ１０４転送の高さは、関連するＳＭＥＭクライアントＤＭＡレジスタ１６０ａ転送の高さと同じであってよい。外部メモリ転送の幅は、ＳＭＥＭインクリメントの数（関連するＳＭＥＭクライアントＤＭＡレジスタ１６０ａ（ＳＣＮＴ）において指定された外部メモリ転送）を掛けたＳＭＥＭ水平インクリメントの大きさＳＣＯＬＣＮＴと一致する。したがって、ある点後のプリフェッチ・リード／ライトと現在のターゲット・ブロック１４８間の一定の距離を維持することができる。
【００４３】
一実施形態では、２つの外部メモリ要求は、各外部ＤＭＡモジュール１２４に対するキューに入れることができる。第１の外部メモリ要求は、同じＭＥＭバッファにおいて転送されるデータに関わるクライアント転送要求とオーバーラップしてよい。クライアントが十分に高速であると、第２の外部メモリ要求を第１の要求の完了に先立って始動することができる。それゆえ後続のクライアントＤＭＡ転送は、第１の外部メモリ要求が終わるまで遮断することができる。通常、この遮断は、クライアント１１４−１１８が外部メモリプリフェッチ点または外部メモリの遅延書き込み（ｗｒｉｔｅｂｅｈｉｎｄ）点より先に進むことを防ぐことにより、外部メモリ転送およびＳＭＥＭ転送間の同期を実現する。
【００４４】
１つの可能なアプリケーションでは、本発明は携帯用録画装置に適用することができる。例えば、本発明は、消費者市場に適した携帯型、高品位または標準解像度のデジタル・ビデオ・カメラに組み込むことができる。一般的には、本発明のメモリ階層は高性能で、低電力のビデオ処理能力をカメラに提供する。ビデオ符号化／圧縮は、Ｈ．２６４／ＭＰＥＧ４−Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  ｓｔａｎｄａｒｄ、または他の最新ビデオ符号化技術に準拠することができる。カメラ内蔵のメモリにより、１時間以上の高品位録画を実現できるであろう。本発明はまた、動き補償されたビデオ圧縮及び／または復元を実施する任意のプロセッサに適する。本発明の他の応用を実施することにより特定の設計の基準を満たすことができる。
【００４５】
本発明はまた、ＡＳＩＣ、ＦＰＧＡを作成することにより、従来の構成回路（ステートマシンを実施する従来の回路等）を適切なネットワークで相互に連結させることにより、またはここに説明されたようなハードウェアとソフトウェア要素の組合せにより実現でき、それらの変形は当業者には容易に理解できる。本明細書で使用された用語「同時に」は、ある共通の期間を共有する事象を説明することを意味するが、この用語は同じ時点に始まり、同じ時点に終わる事象、または同じ期間を有する事象に限定されることを意味しない。
【００４６】
本発明はその好ましい実施例を参照して特に図示され、説明されたが、その形態と詳細において様々な変更が、本発明の精神および範囲から逸脱することなく行なうことができることは当業者には理解されるであろう。
【図面の簡単な説明】
【００４７】
【図１】本発明の好適な実施形態によるシステムのブロック線図である。
【図２】ウインドウ・モードにおける画像の一部のブロック図である。
【図３】動きベクトルを含むウインドウ・モードにおける画像のブロック図である。
【図４】小バッファ・モードにおける画像の一部のブロック図である。
【符号の説明】
【００４８】
１００  システム
１０２  ビデオチップ
１０４  外部メモリ・チップ
１０６、１０８  インタフェース
１１０  ダイレクトメモリアクセス（ＤＭＡ）ユニット
１１２  共有メモリ回路
１１４  動き予測（ＭＥ）エンジン
１１６  クライアント・エンジン
１１８  処理エンジン
１２０  ウインドウ・バッファ
１２２  小バッファ
１２４  外部ＤＭＡ回路
１２６  クライアントＤＭＡ回路
１４０  画像
１４８  ターゲット・ブロック
１５２ａ−１５２ｎ  ローカルメモリ
１５２  ローカルメモリ
１６０ａ  クライアントＤＭＡレジスタ
１６０ｂ  外部ＤＭＡレジスタ
ＲＭＥＭ  基準メモリ
ＴＭＥＭ  ターゲットメモリ
【図１】
2006254437.tif 000003
【図２】
2006254437.tif 000004
【図３】
2006254437.tif 000005
【図４】
2006254437.tif 000006
【外国語明細書】
2006254437000001.pdf
2006254437000002.pdf
2006254437000003.pdf
2006254437000004.pdf