(57)【要約】【課題】プロセッサの他にコプロセッサを搭載したＬＳＩで、コプロセッサの演算結果をプロセッサに送る手段として、データ転送専用のメモリをＬＳＩの内部に搭載するとチップの面積が増大してしまう。【解決手段】プロセッサの内部に搭載されているデータキャッシュを用いて、コプロセッサからプロセッサへデータを受け渡す。これを実現するために、データキャッシュには、バスからの書き込み要求に応じてタグメモリとデータメモリを書き換える機構を搭載し、コプロセッサにはデータキャッシュを書き込み先として指定可能なアドレス生成装置を搭載する。【選択図】　図１
2004005287.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュを有するプロセッサと、
特定の処理を行う第二のプロセッサと、
前記プロセッサ及び前記第二のプロセッサとを接続するバスとを有し、
前記第二のプロセッサは、前記バスに接続されたデバイスに対してアクセスするためのアドレスを生成する手段を有し、
前記第二のプロセッサは、該第二のプロセッサが演算した結果を、前記アドレス生成手段によって生成されたアドレスに基づいて、前記キャッシュに転送することを特徴とするシステム。
【請求項２】
前記第二のプロセッサは前記のバスを経由して前記キャッシュにアクセスすることを特徴とする請求項１記載のシステム。
【請求項３】
前記プロセッサと前記第二のプロセッサは異なる命令コード体系で動作することを特徴とする請求項１記載のシステム。
【請求項４】
前記第二のプロセッサから前記キャッシュへの書き込みは、前記キャッシュを構成しているタグメモリに格納されているデータの値にかかわらず実行されることを特徴とする請求項１記載のシステム。
【請求項５】
前記第二のプロセッサは動き補償処理を行うことを特徴とした請求項１記載のシステム。
【請求項６】
前記プロセッサ及び前記第二のプロセッサが行った動き補償処理の結果を格納するためのメモリを有し、
前記第二のプロセッサは動き補償処理の途中結果を、前記メモリに格納することなく前記プロセッサへ転送し、
前記プロセッサが前記途中結果を用いて動き補償処理の最終結果を生成し、前記メモリへ格納することを特徴とする請求項５記載のシステム。
【請求項７】
前記プロセッサ及び前記第二のプロセッサはバスブリッジによって接続された異なるバスに各々接続されており、
前記第二のプロセッサは前記異なるバスの各々に接続されたデバイスに対してアクセスするためのアドレスを生成し、
前記第二のプロセッサは、前記バスブリッジを経由して演算結果を前記のバスを経由して前記のキャッシュへ書き込むことを特徴とする請求項１記載のシステム。
【請求項８】
前記第二のプロセッサは前記異なるバスのどちらにも接続されていることを特徴とした請求項７記載のシステム。
【請求項９】
前記第二のプロセッサは画像のスケーリング処理を行うためのものであることを特徴とする請求項７記載のシステム。
【請求項１０】
前記第二のプロセッサは動きベクトルの検出を行うためのものであることを特徴とする請求項７記載のシステム。
【請求項１１】
プロセッサが有するキャッシュメモリに対して、前記プロセッサに接続されているバスを経由して演算結果を書き込むために必要となるアドレス生成装置を備えたことを特徴としたコプロセッサ。
【請求項１２】
前記プロセッサ及び前記コプロセッサは異なる命令コード体系を持っていることを特徴とする請求項１１記載のコプロセッサ。
【請求項１３】
前記演算は動き補償処理であることを特徴とした請求項１２記載のコプロセッサ。
【請求項１４】
前記キャッシュメモリはデータキャッシュであることを特徴とした請求項１記載のシステム。
【請求項１５】
前記キャッシュメモリはデータキャッシュであることを特徴とした請求項１３記載のコプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コプロセッサを搭載したプロセッサシステムに関するものである。
【０００２】
【従来の技術】
近年、マルチメディア用のプロセッサを用いたソフトウェアによる動画処理に対する要望が高まっている。動画処理をソフトウェア化することで、新しい規格への即応、ＬＳＩの開発経費の低減などが実現できるためである。しかし、動画は静止画や音声に比べて扱うデータの量が非常に大きいため、その処理には膨大な演算量が必要である。
【０００３】
動画をソフトウェアで処理する場合、全ての処理を単一のプロセッサで行う技術のほかに、動き補償等、比較的処理が簡単なわりに高い演算性能が要求される処理を特定の処理に特化したプロセッサ（以下「コプロセッサ」）で行い、残りの処理をメインのプロセッサで処理する方法がある。
【０００４】
一般に、単一のプロセッサを使用する方法のほうが、チップ面積を抑えられる。しかし、高い演算性能を得るためにプロセッサを高い動作周波数で動作させる必要があり、設計工数や消費電力などの点で問題が生ずる場合がある。
【０００５】
一方、コプロセッサを使用する方式では、チップ面積は増大するが、演算負荷が分散されるため、低い動作周波数で動画処理を実現でき、より高い性能が求められる分野や低消費電力化が求められる分野などで有利となる。
【０００６】
コプロセッサを使用する方式は、特開２０００−２５１６２５公報に開示されている。この公報には、コプロセッサの演算結果を、プロセッサとコプロセッサの双方からアクセスできるメモリに一旦格納し、それをプロセッサが読み出すことでプロセッサとコプロセッサの間でデータをやり取りしている。
【０００７】
【発明が解決しようとする課題】
前記公報に記載された技術では、プロセッサ、コプロセッサ及びメモリを同一のＬＳＩに集積すれば、これらの間の通信を高速に行うことができる。しかし、この場合には、チップ面積が増大し、システムの製造コストが増大してしまうという問題が生ずる。
【０００８】
一方、チップ外部に存在するメモリを用いてデータのやり取りを行うようにすれば、チップ面積の大幅な増大は回避できる。しかし外部メモリに対するアクセスは、ＬＳＩの内部動作に比べると低速であるため、システム全体の処理性能が向上しない。
【０００９】
チップ面積の増加を抑えて性能向上を実現する技術としては、プロセッサに接続されているキャッシュメモリの替わりに、通常のアドレッシングによりアクセス可能なメモリを搭載し、これをプロセッサとコプロセッサの通信にも使用するという技術がある。しかし、この方法はキャッシュメモリを用いずに、通常のアドレッシングによりメモリをアクセスするため、プログラム開発者の負担が増加し、ソフトウェアの開発工数が増えるという問題点がある。
【００１０】
【課題を解決するための手段】
本発明では、プロセッサ中のデータキャッシュとコプロセッサをバスにより接続し、コプロセッサが、コプロセッサにおける演算の結果をプロセッサ内部のデータキャッシュへ書き込むという構成とする。この際、データキャッシュのデータメモリへ転送するデータを書き込むだけでなく、タグメモリにも転送するデータのアドレス中の適切なフィールドを書き込む構成としても良い。
【００１１】
【発明の実施の形態】
図１は、本発明を適用したシステムである動画処理ＬＳＩ１０００の構成を示す図である。動画処理ＬＳＩ１０００は、圧縮された動画を伸張して表示するために用いられる。動画処理ＬＳＩ１０００は、動き補償機能を持ったデータ転送エンジン１、プロセッサ２、メモリ制御回路３、ストリーム制御回路４、画像出力回路５を有し、これらが各々内部バス６で接続されている。
【００１２】
プロセッサ２は、内部にデータキャッシュ２０を有する。尚、プロセッサ２は命令キャッシュも備えている場合もあるが、本図では省略する。プロセッサ２をシステム中のメインのプロセッサと考えた場合、動き補償機能付きデータ転送エンジン１は、コプロセッサの位置付けとなる。メモリ制御回路３は動画処理ＬＳＩ１０００が外部メモリ１００２と通信を行うための回路である。尚、プロセッサ２と動き補償機能付きデータ転送エンジン１で実行される命令体系は、同じでも、異なっていても構わない。
【００１３】
外部メモリ１００２は、半導体メモリに限定されず、ハードディスクのように磁気を利用した記憶媒体など、データを記憶できる媒体であれば良い。また、外部メモリ１００２は、ネットワークなどを介して離れた場所にあっても構わない。
【００１４】
ストリーム制御回路４は、入力された圧縮された動画ストリーム１００１をプロセッサ２等へ転送するための制御回路である。メモリ制御回路３とストリーム制御回路４は共通化することも可能である。画像出力回路５は、伸張された画像を画像表示装置１００３へ表示するための制御回路である。動画表示装置１００３は、ネットワークなどを介して離れた場所にあっても構わない。
【００１５】
本実施形態では、動き補償機能付きデータ転送エンジン１、プロセッサ２、メモリ制御回路３、ストリーム制御回路４、及び画像出力回路５は全て動画ＬＳＩ１０００へ集積されているとしているが、どの機能をＬＳＩに集積するかについては任意であり、動き補償機能付きデータ転送エンジン１、プロセッサ２、メモリ制御回路３、ストリーム制御回路４、画像出力回路５をそれぞれ一つのＬＳＩで実現して、チップ間バスで接続するといった形態も考えられるし、逆に外部メモリ１００２を動画処理ＬＳＩ１０００と同一のチップ内に収めることも可能である。
【００１６】
動き補償機能付きデータ転送エンジン１は、データ転送を行いながら転送しているデータに対して動き補償に必要な演算を施す回路である。動き補償とは、一般的な動画では連続したフレームのデータは非常に似ていることを利用して高い圧縮率を得る手法であり、ＭＰＥＧ（Ｍｏｔｉｏｎ　Ｐｉｃｔｕｒｅ　Ｅｘｐｅｒｔｓ　Ｇｒｏｕｐ）などで使用されている。
【００１７】
以下動き補償について簡単に解説する。図２に示すように風景のみが写っている動画では、各フレームの内容はほとんど変化しないため、あるフレームを繰り返し表示することでデータ量を抑えることが可能である。実際には、風景といえども完全に静止しているわけではないので、フレーム間の差分を取り、それを別の方法でさらに圧縮して圧縮後の画像データを作成するといった方法が取られる。
【００１８】
例えば、フレームｎ＋１を圧縮する際には、フレームｎとの差分を取り、その差分データを圧縮することで大幅に圧縮率を高めることができる。この場合、フレームｎ＋１を圧縮対象フレーム、フレームｎを参照フレームと呼ぶ。
【００１９】
しかし、この方法は、図３のように動く物体を表示する画像に対しては、圧縮率の効果が低減してしまう。このような場合には、各フレームを小さな領域（以下「マクロブロック」と呼ぶ）に分割してマクロブロック単位に圧縮を行う。この際、参照フレームから圧縮対象のマクロブロックに一番似ているマクロブロックを探し出し、両者の差分を取ることで、データ削減効果を保持することができる。これが動き補償技術である。
【００２０】
本技術を使用する場合、差分のデータと一緒に、参照フレーム中のどのマクロブロックを圧縮時に使用したかを示す情報が保存される必要がある。この情報は、一般には、圧縮対象のマクロブロックの座標に対する参照されるマクロブロックの相対座標で表され、動きベクトルと呼ばれる。動きベクトルは、圧縮された動画を伸張する際に必要となる情報の一つである。
【００２１】
通常、画像を扱う際の最小単位は画素であるが、実際の動画は画素単位に動くわけではない。このため、動きベクトルの設定値を１画素単位よりもさらに細かく指定できるようにすることでさらに圧縮率を上げることができる。ＭＰＥＧでは、ハーフペルと呼ぶ手法により、動きベクトルの設定値を１／２画素単位で設定することが可能である。
【００２２】
ハーフペルを使用する場合、参照フレームに対して隣接した２画素または４画素の算術平均による補完処理を施すことで、参照対象のマクロブロックが作成される。また、ＭＰＥＧでは、複数の参照フレームを使用して動き補償を行う双方向予測といった技術も使用されている。これらに関しては、ＭＰＥＧの規格書および「最新ＭＰＥＧ教科書、藤原洋監修、アスキー出版局」などの文献に詳しく記載されている。
【００２３】
動き補償機能付きデータ転送エンジン１は、内部バス６と接続されている装置間のデータ転送を制御することができる。ここで内部バス６に接続されている装置には、データキャッシュ２０も含まれる。例えば、メモリ制御回路３を経由して外部メモリ１００２からデータを読み出して、データキャッシュ２０へ書き込むといった処理を制御できる。この際、動き補償機能付きデータ転送エンジンが、データに演算処理を施すこともできる。
【００２４】
図４は、動き補償機能付きデータ転送エンジン１の内部構成示す図である。動き補償機能付きデータ転送エンジン１は、内部バス制御回路３０１、読み込みパスアドレス生成回路３０２、バッファ３０３、バッファ３０４、データ転送エンジン制御回路３０５、ハーフペル処理回路３０６、３０７、双方向予測処理回路３０８、書き出しパスアドレス生成回路３０９、及び演算結果出力回路３１０を有する。
【００２５】
内部バス制御回路３０１は、動き補償機能付きデータ転送エンジン１と内部バス６との間のデータのやり取りを制御する。読み込みパスアドレス生成回路３０２は、データ転送エンジン１が外部メモリ１００２などに内部バス６を経由して読み出しアクセスを行う際のアドレス生成を行う。読み込みパスアドレス生成回路３０２は、バッファ３０３およびバッファ３０４に対するアドレス生成も行う。
【００２６】
バッファ３０３及び３０４は、内部バス６経由で読み出したデータの格納に使用される。本実施形態では、バッファメモリを２つとしているが、これは２つに限定されたものではなく、１つにすることも可能であるし、３つ以上にすることも可能である。
【００２７】
本実施形態では、単純な双方向の動き補償に対応するために２つのバッファを用意する。すなわち双方向予測に使用する一方のフレームのマクロブロックがバッファ０へ格納され、もう一方のフレームのマクロブロックがバッファ１へ格納される。各バッファの容量は処理性能とチップ面積などのトレードオフにより決定される。本実施形態では、縦横共にマクロブロックの大きさより１画素大きいブロックが格納できるだけの容量を想定している。
【００２８】
仮にマクロブロックの大きさを縦１６画素、横１６画素とし、１画素あたりのビット数を８ビットとすれば、必要なメモリ容量は、（１６＋１）×（１６＋１）×８ビットとなる。なお、一般的には、画像データはＲＧＢのように複数の成分で表されるが、ここでは説明のため１成分の処理のみに着目する。成分が増えた場合でも、必要なる回路を複数個搭載すれば簡単に対応できる。
【００２９】
ハーフペル処理回路３０６、３０７は、動きベクトルの値が整数ではなく、１／２画素の倍数である場合に、画素間の補完を行う回路である。例えば、ｘ座標がｎ＋０．５（ｎは整数）の画素の値は、その両横のｘ座標がｎの画素とｘ座標がｎ＋１の画素の値を加算して２で除算することにより求められる。本実施形態では、ハーフペル処理回路３０６、３０７の出力画像の大きさはマクロブロックの大きさと同じ１６×１６画素となる。
【００３０】
ハーフペル処理回路３０６、３０７の出力は、双方向予測処理回路３０８へ入力される。この回路はＭＰＥＧなどの双方向予測の処理に対応する。本回路は、入力された２つのマクロブロックについて画素ごとに平均値を算出し、最終的な参照マクロブロックを生成する。
【００３１】
生成された参照マクロブロックは、演算結果出力回路３１０および内部バス制御回路３０１を経由して内部バス６へ出力される。出力先のアドレスは、書き出しパスアドレス生成回路３０９により生成される。出力先の装置としては、内部バスに接続されている任意の装置を指定することができる。
【００３２】
データ転送エンジン制御回路３０５は、動き補償機能付きデータ転送エンジン１内部の各ブロックを制御するための回路であり、バッファ３０３、３０４のリードライトのタイミング信号等を生成する。
【００３３】
なお、ここで説明したハーフペル処理回路３０６、３０７などの演算器やその他の構成要素は一例であり、他の種類の演算器を使用することや、各演算器の個数などを変更することも可能である。
【００３４】
図５は、データキャッシュ２０の内部構成を示す図である。データキャッシュ２０は、プロセッサ２の内部にあるプロセッサ内部バス２１と内部バス６の両方に接続されている。
データキャッシュ２０は、アドレス用データパス２００、コントローラ２０１、データ用データパス２０２、セレクタ２０３、２０４、タグメモリ２０５、データメモリ２０６、内部バス制御回路２０７、及びプロセッサ内部バス制御回路２０８を有する。
【００３５】
コントローラ２０１は、データキャッシュ２０の各ブロックを制御する。タグメモリ２０５には、データメモリ２０６の対応するエントリのタグアドレスおよび有効ビットが格納される。データメモリ２０６には、データが格納される。セレクタ２０３はタグメモリ２０５への入力を選択する。セレクタ２０４はデータメモリ２０６への入力を選択する。内部バス制御回路２０７は、データキャッシュ２０と内部バス６との間のデータのやり取りを制御する。内部バス制御回路２０８は、データキャッシュ２０とプロセッサ内部バス２１との間のデータのやり取りを制御する。
【００３６】
プロセッサ２の内部演算器からプロセッサ内部バス２１を経由してデータキャッシュ２０へデータの書き込み要求が来た場合には、プロセッサ内部バス制御回路２０８、アドレスデータパス２００、及びデータ用データパス２０２などを経由し、ライトアドレスの一部がタグメモリ２０５へ、ライトデータがデータメモリ２０６へ書き込まれる。
【００３７】
逆に内部バス６からデータキャッシュ２０へデータの書き込み要求が来た場合には、内部バス制御回路２０７などを経由し、ライトアドレスの一部がタグメモリ２０５へ、ライトデータがデータメモリ２０６へ書き込まれる。どちらの場合も書き込まれたエントリの有効ビットは１にセットされ、次にプロセッサ２の内部演算器からそのエントリへアクセス要求が来たときにはデータキャッシュ２０はキャッシュヒットすることとなる。
【００３８】
ここで、動き補償機能付きデータ転送エンジン１がデータキャッシュ２０へ演算結果を書き込む方法について説明する。本実施例における内部バス６上の信号の変化の一例を図１０に示す。
尚、ここでは、説明を簡単にするために、必要最小限の機能のバスを用いているが、スプリット転送対応やバースト転送対応などの技術を用いることで、さらにデータの転送効率を高めることも可能である。また本実施形態では、内部バス６のアービトレーションを行う回路２０９は内部バス制御回路２０７にあることを想定しているが、バスに接続されている他のデバイスに内蔵させることも可能である。
【００３９】
基準クロック６０１は、内部バス６に接続された全ての装置に供給される。リクエスト信号６０２は、動き補償機能付きデータ転送エンジン１が出力し、内部バス制御回路２０７内にあるバスのアービトレーション回路２０９が受け取る信号である。動き補償機能付きデータ転送エンジン１は、内部バス６に接続された装置に対してデータを転送する必要が生じたときに、リクエスト信号６０１として、１を示す信号を出力する。アービトレーション回路２０９には、バスに接続された全装置からのリクエスト信号が通知される。アービトレーション回路２０９は、これらの信号の内容をもとにどの装置にバスの使用を許可するかを決定する。
【００４０】
アービトレーション回路２０９は、バスの使用を許可する装置に対して、その装置に対するグラント信号を１にすることでバスの使用許可を通知する。本図では、動き補償機能付きデータ転送エンジン１に対し、グラント信号６０３を１にすることでバスの使用を許可している。
【００４１】
動き補償機能付きデータ転送エンジン１は、バスの使用を許可されると、次のサイクルで、書き出しパスアドレス生成回路３０９が生成したアドレス６１４を、アドレス信号６０４として出力する。本実施形態ではアドレス信号６０４は３２ビット幅の信号としており、その上位４ビットでアクセス対象の装置が決定される。
【００４２】
例えば、アドレス信号６０４の上位４ビットが「００００」〜「０１１１」ならばメモリ制御回路３、「１０００」ならばデータキャッシュ２０といった具合に、アクセス対象となる装置が対応付けられる。ここでは、書き出しパスアドレス生成回路３０９がアドレス６１４の上位４ビットを「１０００」に設定することで、データの書き込み先をデータキャッシュ２０に指定している。
【００４３】
内部バス制御回路３０１は、書き出しパスアドレス生成回路３０９が生成したアドレス６１４をアドレス信号６０４として出力するとともに、リードライト指定信号６０５を０に設定して現在のアクセスがライトアドレスであることを指定する。
【００４４】
次のサイクルで、内部バス制御回路３０１は演算結果出力回路３１０から送られてきたデータ６１６をデータ信号６０６として出力する。本実施例では、データ信号６０６は６４ビット幅としている。
一方、データキャッシュ２０内部にある内部バス制御回路２０７は、グラント信号６０３が１になったサイクルの次のサイクルで送られてくるアドレス６１４の上位４ビットの内容を調べ、これが「１０００」であることとリードライト信号６０５が０であることから、次のサイクルで送られてくるデータ６１６はデータキャッシュ２０へ書き込むべきデータであると判断する。
【００４５】
ここで、本実施形態では、データキャッシュ２０は８キロバイトの容量を持つダイレクトマップのキャッシュであり、タグメモリ２０５は幅２０ビット、ライン数１０２４のメモリ、データメモリは幅６４ビット、ライン数１０２４のメモリで構成されているものとする。１キャッシュラインの容量は、６４ビットである。タグメモリには、タグアドレスの３１〜１３ビット目と有効ビットが格納される。
【００４６】
アドレス６１４が送られてくると、アドレス用データパス２００は、アドレス６１４の１２〜３ビット目を用いて、書き込み対象となるキャッシュラインを決定する。コントローラ２０１は、ここで決定されたライン番号を用いて、タグメモリ２０５の対応するキャッシュラインに格納されているデータを読み出す。
【００４７】
読み出されたデータに含まれている有効ビットが０である場合には、そのキャッシュラインに対応するキャッシュメモリには、有効なデータが存在しないことを示す。この場合には、コントローラ２０１は、タグメモリ２０５の対応するキャッシュラインのアドレス格納部分にアドレス６１４の３１〜１３ビットを、有効ビット部分に１を書き込み、データメモリ２０６の対応するラインへデータ６１６を書き込む。このようにすることで、プロセッサ２がアドレス６１４に格納されているデータにアクセスする際には、データキャッシュ２０がヒットすることになる。
【００４８】
タグメモリ２０５から読み出されたデータに含まれている有効ビットが１である場合には、そのラインには有効なデータがすでに存在していることを示す。この場合には、コントローラ２０１は、データメモリ２０６の該当ラインに格納されているデータを、データ用データパス２０２の内部にあるレジスタへ一旦コピーした後に、タグメモリ２０５の対応するラインのアドレス格納部分にアドレス６１４の３１〜１３ビットを、有効ビット部分に１を書き込み、データメモリ２０６の対応するラインへ、次のサイクルで送られてくるデータ６１６を書き込む。データ用データパス２０２の内部にあるレジスタへコピーされたデータは、内部バス６が使用可能となった時点で、内部バス６を経由して外部メモリ１００２へ書き込まれる。
【００４９】
以上、ダイレクトマップ型のデータキャッシュを例に動作を説明したが、セットアソシアティブ型のキャッシュでも本発明の方式を使用することが可能である。この際には、書き込み対象となるラインは、アドレス６１４の他に、データキャッシュ２０の中にあるＬＲＵ制御回路などの情報を用いて決定される。
【００５０】
次に本構成における動画の伸張処理の流れについて説明する。
まず、最初に動き補償機能付きデータ転送エンジン１を使用しない場合の処理について説明する。
【００５１】
ＭＰＥＧなどのアルゴリズムを用いて圧縮された圧縮動画ストリーム１００１は、ストリーム制御回路４へ入力される。ストリーム制御回路４は、入力された圧縮動画ストリームのデータを、内部バス６を経由して外部メモリ１００２へと書き込む。これと並行して、プロセッサ２は、外部メモリ１００２に格納されている圧縮画像データを読み出して伸張処理を行い、その結果得られた画像（以下「原画像」）を外部メモリ１００２へ書き戻す。
【００５２】
画像出力回路５は、外部メモリ１００２から伸張された原画像のデータを読み出し、動画表示装置１００３へ出力する。これらの処理は並列に実行できる。通常、このなかで最も処理時間が長いのは、プロセッサ２が外部メモリ１００２から圧縮データを読み出し伸張して外部メモリ１００２へ書き戻す処理である。すなわち、この処理を高速化することでシステム全体を高速化することが可能である。
【００５３】
以下、従来技術における圧縮データの読み出し伸張処理について説明する。
ＭＰＥＧなど一般に使用されている動画圧縮手法では、圧縮後のデータ列は可変長符号（Ｖａｒｉａｂｌｅ　Ｌｅｎｇｔｈ　Ｃｏｄｅ）となっている。そこで、まずプロセッサ２は、外部メモリ１００２に格納された圧縮ストリームを読み出して、可変長符号の復号処理を行う。圧縮されているストリームを復号することで、動きベクトルおよび離散コサイン変換された画像データ（ＩＤＣＴデータ）を取り出すことができる。この処理がＶＬＣ復号処理である。ここでは、プロセッサ２がこの処理を行っているが、ＶＬＣ復号処理専用にコプロセッサを搭載することも可能である。
【００５４】
この後、プロセッサ２は、ＩＤＣＴデータに対して逆離散コサイン変換等（ＩＤＣＴ）を施し、動き補償前の画像データを得る。この処理をＩＤＣＴ処理と称する。この動き補償前の画像データに、必要に応じて参照データを加算することで原画像を得ることができる。
【００５５】
次に、プロセッサ２は、外部メモリ１００２から参照フレーム中のマクロブロックのデータを読み出し、ハーフペル予測のための画素補完、双方向予測のために複数のマクロブロックの平均化などを行い、参照データを作成する。これを以下「参照データ読み出し＋演算」処理と称する。
【００５６】
次に、プロセッサ２は、ここで得られた参照データをＩＤＣＴ処理８０２の結果と加算することで原画像を得る。これを「加算処理」と称する。最後に、プロセッサ２は、この結果を外部メモリ１００２へ書き込む。この処理を「ストア」と称する。
【００５７】
本実施形態では、「参照データ読み出し＋演算」処理を動き補償機能付きデータ転送エンジン１で実行する構成とする。これにより、他の処理との並列実行を可能とし全体の処理時間を短縮する。
【００５８】
図６は、動き補償機能付きデータ転送エンジン１を使用した場合のデータ伸張処理の詳細を示す図である。
本図において、上半分はプロセッサ２が行う処理の内容を、下半分は動き補償機能付きデータ転送エンジン１が行う処理の内容を表している。また、横方向は時間の経過を示している。
【００５９】
マクロブロックｎ＋１に着目すると、まずプロセッサ２は、ＶＬＣ復号処理８０１ｂ及びＩＤＣＴ処理８０２ｂを行う。次に、プロセッサ２は、ＶＬＣ復号処理８０１ｂで得られた動きベクトルを、内部バス６を介して、動き補償機能付きデータ転送エンジン１内部のレジスタへ書き込む。その後、動き補償機能付きデータ転送エンジン１へ、「参照データ読み出し＋演算」処理８０３ｂを起動する要求を発行する。本実施形態では、この起動操作も、動き補償機能付きデータ転送エンジン１内部のレジスタへプロセッサ２がデータを書き込むことにより行われる。これら一連の処理を完了したプロセッサ２は、マクロブロックｎに対する処理を開始する。
【００６０】
一方、起動要求を受信した動き補償機能付きデータ転送エンジン１は、自身が有するレジスタに書き込まれている、次に処理するマクロブロックの座標を示す値とプロセッサ２によって書き込まれた動きベクトルの値から、読み込むべき参照マクロブロックが格納されている外部メモリ１００２のアドレスを算出する。
【００６１】
次に、動き補償機能付きデータ転送エンジン１は、算出したアドレスを用いて、外部メモリ１００２から必要となるマクロブロックを読み出し、バッファ３０３へ書き込む。双方向予測を行うことが指定されている場合には、プロセッサ２によって既に書き込まれているもう一つの動きベクトルを用いて、第二の参照フレーム中の第二の参照マクロブロックを読み出し、バッファ３０４へ書き込む。
【００６２】
次に、ハーフペル処理回路３０６は、バッファ３０３の内容を、ハーフペル処理回路３０７はバッファ３０４の内容を用いて、ハーフペル演算を行う。補完の方法は、それぞれのバッファに読み込む際に使用した動きベクトルの値によって決定される。
【００６３】
次に双方向予測処理回路３０８は、ハーフペル処理回路３０６とハーフペル処理回路３０７からの出力データに対して画素ごとに平均値を求め、双方向予測処理回路３０８の出力データとする。なお、双方向予測をしない場合には、この平均化処理は不要であり、ハーフペル処理回路３０６とハーフペル処理回路３０７の出力のうち有効な方を双方向予測処理回路３０８の出力とする。
【００６４】
この双方向予測処理回路３０８の出力を、データ転送エンジン１は、演算結果出力回路３１０、内部バス制御回路３０１、内部バス６を経由してデータキャッシュ２０へ書き込む。ここまでの処理が「参照データ読み出し＋演算」処理８０３ｂである。
【００６５】
処理８０３ｂが終了した後、プロセッサ２は、ＩＤＣＴ処理８０２ｂの結果と、処理８０３ｂの結果を画素ごとに加算する処理８０４ｂを行う。このときには、どちらの結果もすでにデータキャッシュ２０へ格納されているため、この処理はキャッシュミスを引き起こさずに高速に行うことが可能である。
最後に、プロセッサ２は、処理８０４ｂの結果をストア処理８０５ｂにより、外部メモリ１００２へ書き込む。
【００６６】
このように、「参照データ読み出し＋演算」処理８０３ｂが、プロセッサ２ではなく、動き補償機能付きデータ転送エンジン１で実行されることで、この処理が実行されている間は、プロセッサ２は他の処理を実行することができる。本実施形態では、動き補償機能付きデータ転送エンジン１が処理８０３ｂを実行している間に、プロセッサ２は、直前のマクロブロックであるマクロブロックｎの加算処理８０４ａ、ストア処理８０５ａおよび直後のマクロブロックであるマクロブロックｎ＋２のＶＬＣ復号処理８０１ｃ、及びＩＤＣＴ処理８０２ｃを実行する。
このように、圧縮データの伸張処理をパイプライン化することで、プロセッサ２の処理能力を無駄にすることなくシステム全体の処理能力を高めることができる。
【００６７】
図７は、本発明の第２の実施形態の構成を示す図である。先の実施形態と異なる点は、動画処理ＬＳＩ１０００ａは複数の内部バス６１及び６２を有し、これらバス間がバスブリッジ３０で接続されている点である。この例では内部バス６を２つに分割しているが、内部バスは、３つ以上であっても構わない。
【００６８】
このようにバスを分割することで、それぞれのバスに接続される装置の数を減らすことができる。さらに、このようにバスを分割することで、バスの物理的な配線長も短くすることができ、動作周波数の高速化または省電力化に有利となる。
【００６９】
図８は、図７をさらに発展させた第３の実施形態を示す図である。第一及び第二の実施形態と異なる点は、バスブリッジと動き補償機能付きデータ転送エンジンとを一つの装置とした点である。したがって、本実施形態では、第２の実施形態と同じく、バスを分割したことによる動作周波数の向上などの効果が得られる。さらに、本実施形態では、動き補償機能付きデータ転送エンジン３１が二つの内部バスに接続されていることにより、それぞれのバスに対して独立にアクセスすることが可能となる。
【００７０】
すなわち、外部メモリ１００２から内部バス６２を経由して参照データを動き補償機能付きデータ転送エンジン３１へ読み込むと同時に、動き補償を行った結果を、内部バス６１を経由してデータキャッシュ２０へ書き込むことが可能となる。このため、各内部バスのデータ転送負荷を分散することができ、システム全体としてのデータ転送性能を高めることが可能となる。
【００７１】
本実施形態で使用される動き補償機能付きデータ転送エンジン３１は、内部バス制御回路３０１に複数の内部バス６１及び６２が接続される点で、第一の実施形態で使用される動き補償機能付きデータ転送エンジン１とは異なる。
【００７２】
また、第４の実施形態として、動画処理ＬＳＩ１０００が有する動き補償機能付きデータ転送エンジン１の代わりにスケーリング機能付きデータ転送エンジン６０が搭載される構成がある。
【００７３】
図９は、スケーリング機能付きデータ転送エンジン６０の内部構成を示す図である。スケーリング機能付きデータ転送エンジン６０は、内部バス制御回路６０１、読み込みパスアドレス生成回路、バッファ６０３、データ転送エンジン制御回路６０５、スケーリング処理回路６０６、書き出しパスアドレス生成回路、及び演算結果出力回路６１０を有する。
【００７４】
スケーリング処理回路６０６は、表示領域のある範囲に存在する画素に対して２次元のフィルタリング処理を行う回路である。この回路を用いることで、画像処理ＬＳＩは、画像の拡大縮小などを行うことが可能となる。また、２次元フィルタの係数を工夫すれば、輪郭強調などの処理を行わせることもできる。このスケーリング機能付きデータ転送エンジン６０を用いると、外部メモリ１００２に格納されている画像を縮小してからデータキャッシュ２０に転送するといったことが可能となる。このようにすると、最終的に要求される画像の解像度が低い場合などは、プロセッサ２に必要とされる演算量を少なくすることができる。
【００７５】
また、動画の圧縮処理を行う場合には、動き補償機能付きデータ転送エンジン１の代わりに、動き予測機能付きデータ転送エンジン５０を使用することでシステムの性能を高めることができる。動き予測機能付きデータ転送エンジン５０は、圧縮対象となっているマクロブロックと最も似たマクロブロックを参照フレーム中から探し出し、その相対座標、すなわち動きベクトルを算出する。この動きベクトルをデータキャッシュ２０へ転送する。
【００７６】
なお、上述した実施形態では、一つのコプロセッサを搭載するシステムについて説明した。しかし、本発明ではコプロセッサとデータキャッシュはバスにより接続されているので、コプロセッサの数を複数にすることや、データキャッシュの数を複数にすることも可能である。コプロセッサの数を増やした場合には、どのコプロセッサからもデータキャッシュに対してデータを書き込むことができる。
【００７７】
また、データキャッシュの数を増やした場合には、コプロセッサはデータをどれか一つのデータキャッシュを選択して書き込むことも可能であるし、複数のデータキャッシュに対して書き込むことも可能である。
【００７８】
また本発明では、データキャッシュはバスに対して接続されているので、バス上に接続されているコプロセッサの個数を増やした場合でもデータキャッシュの変更はほとんど行う必要がないという利点もある。
【００７９】
また、以上の説明ではデータキャッシュを例に説明したが、本発明はデータキャッシュに特定されるものではない。コプロセッサとしてプロセッサが実行する命令の変換回路などを使用する場合には、その演算結果は命令キャッシュへ書き込まれることになる。
【００８０】
【発明の効果】
データキャッシュ方式の持つプログラミングのしやすさという長所を生かしながらコプロセッサの演算結果を高速にプロセッサへ送ることが可能となる。これによりシステム全体の性能を高めることが可能である。また、コプロセッサの数を増やした場合でも、データキャッシュ側の面積の増加を抑えることが可能である。
【図面の簡単な説明】
【図１】本発明を使用したシステムの構成図である
【図２】動き補償を説明する図である。
【図３】動き補償を説明する図である。
【図４】動き補償機能付きデータ転送エンジンの構成図である。
【図５】データキャッシュの構成図である。
【図６】パイプライン化した動画伸張処理の例を示す図である。
【図７】本発明を使用したシステムの別の構成を示す図である。
【図８】本発明を使用したシステムの別の構成を示す図である。
【図９】スケーリング機能付きデータ転送エンジンの構成を示す図である。
【図１０】内部バス上の信号の変化を示す図である。
【符号の説明】
１…動き補償機能付きデータ転送エンジン、２…プロセッサ、３…メモリ制御回路、４…ストリーム制御回路、５…画像出力回路、６…内部バス、２０…データキャッシュ、２１…プロセッサ内部バス、２０１…コントローラ、２０２…データ用データパス、２０３…セレクタ、２０５…タグメモリ、２０６…データメモリ、２０７…内部バス制御回路、２０８…プロセッサ内部バス制御回路、２０９…内部バスアービトレーション回路。
【図１】
2004005287.tif 000003
【図２】
2004005287.tif 000004
【図３】
2004005287.tif 000005
【図４】
2004005287.tif 000006
【図５】
2004005287.tif 000007
【図６】
2004005287.tif 000008
【図７】
2004005287.tif 000009
【図８】
2004005287.tif 000010
【図９】
2004005287.tif 000011
【図１０】
2004005287.tif 000012