(57)【特許請求の範囲】
【請求項１】
画像信号の処理を、外部メモリを用いて、パイプライン処理によって実行する画像処理装置であって、
画像処理のための演算をそれぞれ行う複数のコアと、
前記複数のコアと前記外部メモリとの間のデータ転送を行うメモリアクセス部とを備え、
前記メモリアクセス部は、
データ転送の種類を、パイプライン処理の単位であるステージごとに記憶するアクセススケジュール記憶部を有し、このアクセススケジュール記憶部の記憶内容に従って、前記複数のコアと前記外部メモリとの間のデータ転送を行うものであり、
前記アクセススケジュール記憶部は、
各ステージにおいて必要なデータ転送の種類が、当該ステージの前のステージにおいて設定可能に構成されている
画像処理装置。
【請求項２】
請求項１の画像処理装置において、
前記複数のコアおよびメモリアクセス部を制御するシステム制御部を備え、
前記システム制御部は、
各ステージにおいて、前記メモリアクセス部にデータ転送を行わせるとともに、当該ステージの後のステージにおいて必要なデータ転送の種類を、前記アクセススケジュール記憶部に設定する
ことを特徴とする画像処理装置。
【請求項３】
請求項２の画像処理装置において、
前記メモリアクセス部は、
各ステージにおけるデータ転送が終了したか否かを示すステージ転送状態信号を出力するものであり、
前記システム制御部は、
前記ステージ転送状態信号がデータ転送の終了を示すとき、前記メモリアクセス部に、次のステージにおけるデータ転送を行わせるものである
画像処理装置。
【請求項４】
請求項１の画像処理装置において、
前記メモリアクセス部は、
指定された種類のデータ転送を行うとともに、このデータ転送が終了したか否かを示すローカル転送状態信号を出力するインターフェイス部と、
データ転送の種類を指定して前記インターフェイス部を作動させるとともに、前記ローカル転送状態信号がデータ転送の実行終了を示すとき、新たにデータ転送の種類を指定して、前記インターフェイス部を作動させるアクセス制御部とを備えている
ことを特徴とする画像処理装置。
【請求項５】
画像信号の処理として、符号化を行うものである
ことを特徴とする請求項１の画像処理装置。
【発明の詳細な説明】
【０００１】
［技術分野］
本発明は、画像処理装置に関するものであり、特に、複数のコアからのメモリに対するアクセス要求を制御する技術に属する。
【０００２】
［背景技術］
従来の技術について、ＭＰＥＧ２ビデオ符号化を例にとって説明する。
【０００３】
ＭＰＥＧ２ビデオ符号化では、画像全体を縦１６画素×横１６画素のマクロブロックという単位で格子状に区切り、このマクロブロック毎に画像信号の符号化処理を行う。各マクロブロックの符号化処理は互いに独立している。
【０００４】
このような画像符号化において、スループットを向上させるために、マクロブロック単位のパイプライン処理が行われている。そして、このパイプライン処理を実行するために、ＭＰＥＧ２ビデオ符号化システムは、符号化のために必要な演算、例えば、動きベクトル検出、ＤＣＴ演算、量子化演算などをそれぞれ行う専用演算器を内蔵している。以下、これらの専用演算器のことを「コア」という。
【０００５】
なお、本願明細書では、パイプライン処理の処理単位時間を「マクロブロック時間」といい、マクロブロック時間毎に区切られる処理単位を「マクロブロックステージ」または単に「ステージ」という。
【０００６】
あるステージに着目すると、各コアは、異なるマクロブロックに対するそれぞれの処理を並列に実行する。そして、各コアは、メモリに対してそれぞれ独立にアクセス要求を行う。したがって、ＭＰＥＧ２ビデオ符号化を正常かつ確実に実行させるためには、複数のコアからのメモリに対するアクセス要求を各ステージにおいて排他的に制御する仕組みが必要になる。
【０００７】
図１２は従来のＭＰＥＧ２ビデオ符号化システムにおけるメモリアクセスの制御方法を示す図である（Ｍ．ＭＩＺＵＮＯ他「Ａ １．５Ｗ Ｓｉｎｇｌｅ−Ｃｈｉｐ ＭＰＥＧ２ ＭＰ＠ＭＬ Ｅｎｃｏｄｅｒ ｗｉｔｈ Ｌｏｗ−Ｐｏｗｅｒ Ｍｏｔｉｏｎ Ｅｓｔｉｍａｔｉｏｎ ａｎｄ Ｃｌｏｃｋｉｎｇ」１９９７年，ＩＳＳＣＣ、および大西他「１チップＭＰＥＧ−２ ＭＰ＠ＭＬビデオ符号化ＬＳＩにおけるメモリアーキテクチャ」１９９７年，電子情報通信学会総合大会）。図１２において、縦軸はこのＭＰＥＧ２ビデオ符号化システムのコアの種類、横軸は時間である。図１２は各コアについてのデータ転送がステージの開始から何サイクル後に行われるか、すなわち、１マクロブロック時間における各コアのメモリアクセスのスケジュールを示している。
【０００８】
この従来例では、１マクロブロック時間中において、外部メモリに対するアクセスをどのコアがいつ許可されるのかを固定的にスケジュールすることによって、複数のアクセス要求を排他制御している。すなわち、ステージの開始から何サイクル後にビデオ入力部からメモリにデータをライトし、何サイクル後に動きベクトル検出部にメモリからデータをリードする、というように予めスケジュールを決めている。
【０００９】
［解決課題］
前記の従来例では、各ステージにおけるメモリアクセスを固定的にスケジュールしている。このため、パイプライン処理を正常かつ確実に実行させるためには、各コアについてのデータ転送に必要となるサイクル数が最大となる場合を想定して、すなわち、最悪の場合を想定して、ステージ１個あたりのサイクル数を設定する必要がある。
【００１０】
ところが、本願発明者の検討によると、従来例では、最悪の場合を想定してステージ１個あたりのサイクル数を設定すると、パイプライン処理を正常に実行可能である上限値（従来例の動作周波数の仕様を基にして推定）を越えてしまうことが分かった。
【００１１】
この問題を解決するために、従来例では、動きベクトル検出用のキャッシュメモリを符号化システム内に設けていた。そして、１次探索で用いた参照画像データをキャッシュメモリに格納し、この参照画像データを再び２次探索に用いることによって、２次探索時の外部メモリからのデータ転送を省き、これにより、メモリアクセス全体に要するサイクル数を減少させていた（大井他，「ＭＰＥＧ２のＭＰ＠ＭＬ準拠の１チップ符号化ＬＳＩを開発」１９９７．４，日経エレクトロニクス）。
【００１２】
しかしながら、このようにキャッシュメモリを設けてメモリアクセスのサイクル数を減少させた場合には、キャッシュメモリの分だけ消費電力や面積が増大する。特に、システムがＬＳＩとして実現されている場合には、消費電力や面積の増大は由々しき問題である。
【００１３】
［発明の開示］
本発明は、複数のコアを備えた画像処理装置において、従来よりも効率のよいメモリアクセスを実現することを目的とする。特に、ＭＰＥＧ２ビデオ符号化システムにおいて、従来例と同等の動作周波数で、キャッシュメモリを設けないで、符号化に必要なデータ転送を確実に実行可能にする。
【００１４】
具体的には、本発明は、画像信号の処理を外部メモリを用いてパイプライン処理によって実行する画像処理装置として、画像処理のための演算をそれぞれ行う複数のコアと、前記複数のコアと前記外部メモリとの間のデータ転送を行うメモリアクセス部とを備え、前記メモリアクセス部は、データ転送の種類をパイプライン処理の単位であるステージごとに記憶するアクセススケジュール記憶部を有し、このアクセススケジュール記憶部の記憶内容に従って前記複数のコアと前記外部メモリとの間のデータ転送を行うものであり、前記アクセススケジュール記憶部は、各ステージにおいて必要なデータ転送の種類が当該ステージの前のステージにおいて設定可能に構成されているものである。
【００１５】
本発明によると、各ステージにおいて必要なデータ転送の種類をその前のステージにおいて設定することができるので、データ転送の種類をステージごとに柔軟に変更することができる。これにより、各ステージにおいて、メモリアクセス部はアービトレーションを行わないで、必要な種類のデータ転送のみを実行させることができるので、効率のよいメモリアクセスを実現することができる。
【００１６】
そして、前記本発明に係る画像処理装置は、前記複数のコアおよびメモリアクセス部を制御するシステム制御部を備え、前記システム制御部は、各ステージにおいて、前記メモリアクセス部にデータ転送を行わせるとともに、当該ステージの後のステージにおいて必要なデータ転送の種類を、前記アクセススケジュール記憶部に設定するものとするのが好ましい。
【００１７】
さらに、前記画像処理装置において、前記メモリアクセス部は、各ステージにおけるデータ転送が終了したか否かを示すステージ転送状態信号を出力するものとし、前記システム制御部は、前記ステージ転送状態信号がデータ転送の終了を示すとき、前記メモリアクセス部に、次のステージにおけるデータ転送を行わせるものとするのが好ましい。
【００１８】
また、前記本発明に係る画像処理装置におけるメモリアクセス部は、指定された種類のデータ転送を行うとともに、このデータ転送が終了したか否かを示すローカル転送状態信号を出力するインターフェイス部と、データ転送の種類を指定して前記インターフェイス部を作動させるとともに、前記ローカル転送状態信号がデータ転送の実行終了を示すとき、新たにデータ転送の種類を指定して、前記インターフェイス部を作動させるアクセス制御部とを備えているものとするのが好ましい。
【００１９】
そして、前記本発明に係る画像処理装置は、画像信号の処理として符号化を行うものとするのが好ましい。
【００２０】
［発明を実施するための最良の形態］
以下、本発明の実施の形態について、図面を用いて説明する。
【００２１】
図１は本発明の一実施形態に係る画像処理装置であって、ＭＰＥＧ２ビデオ符号化を実行するシステムの全体構成を示す図である。図１において、１は画像信号の処理をパイプライン処理によって実行する画像処理装置としてのシステム、２はシンクロナスＤＲＡＭなどによって構成され、システム１とデータのやりとりを行う外部メモリである。外部メモリ２は、ビデオ入力信号からなる原画像フレームデータ、動きベクトル検出を行うためにリコンストラクトされた過去の画像フレームデータ、可変長符号化されたコードなどを格納するために用いられる。システム１は例えばＬＳＩとして実現される。
【００２２】
システム１は、符号化のための演算をそれぞれ行う複数のコア１１〜１７からなる演算部１０と、外部メモリ２と演算部１０との間のデータ転送を行うメモリアクセス部２０と、演算部１０およびメモリアクセス部２０並びにシステム１全体を制御するシステム制御部３０とを備えている。演算部１０とメモリアクセス部２０との間には、各コア１１〜１７とメモリアクセス部２０とのデータ転送のバッファとなる複数のバッファメモリからなるバッファメモリ群４０が設けられている。
【００２３】
図２は図１に示すメモリアクセス部２０の構成を示す図である。図２において、２１はメモリアクセス部２０を制御するアクセス制御部、２２はデータ転送の種類および順序をステージごとに記憶するアクセススケジュール記憶部、２５はデータ転送の種類に応じてそれぞれ設けられ、外部メモリ２をアクセスする際のアドレスを生成する複数のアドレスジェネレータ（ＡＧ）からなるアドレスジェネレータ群、２６はアドレスセレクタ、２７はデータセレクタである。アドレスジェネレータ群２５の各アドレスジェネレータＡＧ１〜ＡＧ８と、バッファメモリ群４０に含まれる各バッファメモリＳＭＢＭ，ＭＳＢＭ，ＭＹＢＭ，ＭＣＢＭ，ＺＭＢＭ，ＲＯＢＭ，ＶＷＢＭ，ＶＲＢＭとは、それぞれ対応している。アドレスジェネレータ群２５、アドレスセレクタ２６およびデータセレクタ２７によって、インターフェイス部６０が構成されている。
【００２４】
アクセススケジュール記憶部２２はイネーブル記憶部５１、パラメータ記憶部５２およびモード記憶部５３によって構成されている。イネーブル記憶部５１、パラメータ記憶部５２およびモード記憶部５３はそれぞれ２バンク構成を有しており、一方のバンクがアクセス制御部２１からアクセス可能である（メモリアクセス部２０側を向いている）とき、他方のバンクはシステム制御部３０からその記憶内容が設定可能である（システム制御部３０側を向いている）。
【００２５】
システム制御部３０は第１のトグル信号ＴＧＬ１によってアクセススケジュール記憶部２２のバンク切り替えを行い、システム制御部３０側を向いたバンクにデータ転送の種類および順序を設定する。第１のトグル信号ＴＧＬ１によるバンク切り替えは、パイプライン処理のステージ切り替えに同期させて行う。
【００２６】
すなわち、アクセススケジュール記憶部２２は、各ステージにおけるデータ転送の種類および順序を前のステージにおいて設定可能に構成されている。そしてシステム制御部３０は、各ステージにおいて、起動信号ＡＣ１をアクセス制御部２１に出力してメモリアクセス部２０にデータ転送を行わせるとともに、後のステージにおけるデータ転送の種類および順序をアクセススケジュール記憶部２２に設定する。
【００２７】
これにより、各ステージにおけるデータ転送の種類および順序を、その前のステージにおいて、アクセススケジュール記憶部２２の一方のバンクにシステム制御部３０から設定することができる。そして、ステージの切り替えとともにアクセススケジュール記憶部２２のバンクが切り替えられ、前のステージにおいてデータ転送の種類および順序が設定されたバンクがアクセス制御部２１からアクセス可能になり、このバンクの記憶内容を基にこのステージにおけるデータ転送が実行される。
【００２８】
このように、各ステージにおいて、後のステージにおけるデータ転送の種類および順序をアクセススケジュール記憶部２２に設定することを繰り返して、符号化処理に必要な外部メモリ２とのデータ授受を行う。
【００２９】
また、バッファメモリ群４０の各バッファメモリもそのほとんどは２バンク以上で構成されている。システム制御部３０は、第２のトグル信号ＴＧＬ２によって各バッファメモリのバンク切り替えを行う。
【００３０】
図３は図２に示すイネーブル記憶部５１の構成を示す図である。図３に示すように、イネーブル記憶部５１は２個の８ビットのイネーブルレジスタ５１ａ，５２ｂを備えており（２バンク構成）、システム制御部３０からの第１のトグル信号ＴＧＬ１によってバンク切り替え可能に構成されている。
【００３１】
また、パラメータ記憶部５２は８個（イネーブルレジスタ２２ａ，２２ｂのビット数に対応）の１６ビットレジスタからなるパラメータレジスタ群を２組備えており（２バンク構成）、第１のトグル信号ＴＧＬ１によってバンク切り替え可能に構成されている。モード記憶部５３もまた８個の４ビットレジスタからなるモードレジスタ群を２組備えており（２バンク構成）、第１のトグル信号ＴＧＬ１によってバンク切り替え可能に構成されている。モードレジスタとパラメータレジスタとは１対１に対応している。各モードレジスタはデータ転送の種類をそれぞれ格納し、各パラメータレジスタは対応するモードレジスタに格納された種類のデータ転送に必要なパラメータを格納する。
【００３２】
図４はアクセススケジュール記憶部２２の記憶内容の一例を示す図である。図４を用いて、メモリアクセス部２０の動作を説明する。
【００３３】
アクセス制御部２１はシステム制御部３０から起動信号ＡＣ１を受けると、イネーブル記憶部５１が有する２つのイネーブルレジスタのうち、メモリアクセス部２０側に向いた方のバンクに相当するものに格納された値をＬＳＢからＭＳＢに向かって１ビットずつ検査する。イネーブルレジスタの各ビットはそれぞれモードレジスタに対応しており、“０”は転送禁止を表し、“１”は転送許可を表す。すなわち、検査したビットが“１”のときは、対応するモードレジスタに格納された種類のデータ転送を実行する一方、“０”のときは、対応するモードレジスタに格納された種類のメモリアクセスを行わない。モードレジスタに格納された種類のデータ転送を実行するとき、このモードレジスタに対応するパラメータレジスタに格納された値をデータ転送のパラメータとして用いる。
【００３４】
例えば図４に示すように、イネーブルレジスタに保持された値が「００１１００１０」であるとする。この場合、まずＬＳＢ（ビット０）は“０”であるので、モード０のモードレジスタに格納された種類のデータ転送は行わない。
【００３５】
次のビット１は“１”であるので、アクセス制御部２１はモード１のモードレジスタに格納された種類のデータ転送を実行する。アクセス制御部２１はモード１のモードレジスタに格納された値を調べ、実行するデータ転送の種類を特定し、起動するアドレスジェネレータを選択する。いまモード１のモードレジスタには＄２（＄は１６進数を表す）が格納されている。ここでは、この＄２は「ＮｏＭＣマクロブロック入力」を行うことを意味するものとする。なお、ＮｏＭＣマクロブロックとは、前画像との輝度の差分が極めて大きいために、または前画像との輝度の差がほとんどないために、動き補償（Ｍｏｔｉｏｎ Ｃｏｍｐｅｎｓａｔｉｏｎ）を行わないマクロブロックのことをいう。
【００３６】
アクセス制御部２１はモード１のモードレジスタの値をデコードすることによって、「ＮｏＭＣマクロブロック入力」を行うことを認識し、ＮｏＭＣマクロブロック入力用のアドレスジェネレータに起動信号ＡＣ２を送る。起動信号ＡＣ２を受けたアドレスジェネレータは、モード１のパラメータレジスタの値（＄０１，＄０Ａ）を用いて、外部メモリ２をアクセスするためのアドレスを生成する。モード１のパラメータレジスタには、「ＮｏＭＣマクロブロック入力」に対するパラメータとして、入力するマクロブロックの先頭アドレスが格納されている。
【００３７】
またこれとともに、アクセス制御部２１はセレクト信号ＳＬによって、アドレスセレクタ２６に、ＮｏＭＣマクロブロック入力用のアドレスジェネレータが出力するアドレスや制御信号を外部メモリ２に選択出力させる。アクセス制御部２１は同様にセレクト信号ＳＬによって、データセレクタ２７に、外部メモリ２から出力されたデータを、バッファメモリ群４０の中のＮｏＭＣマクロブロック入力用のバッファメモリに選択出力させる。
【００３８】
起動信号ＡＣ２を受けたアドレスジェネレータは、データ転送を実行している間、ローカル転送状態信号としてのビジー信号ＢＳ２を立ち上げる。データ転送の実行が終了すると、ビジー信号ＢＳ２を立ち下げることによって、データ転送の実行終了をアクセス制御部２１に伝える。アクセス制御部２１はこのアドレスジェネレータのデータ転送の実行終了を確認すると、イネーブルレジスタの検査を再開する。
【００３９】
イネーブルレジスタのビット２，３は“０”であるので、モード２，３のモードレジスタに格納された種類のデータ転送は行わない。
【００４０】
次のビット４は“１”であるので、アクセス制御部２１はモード４のモードレジスタに格納された種類のデータ転送を実行する。モード４のモードレジスタには＄３（１６進数の３）が格納されており、ここでは、この＄３は「可変長コード出力」を行うことを意味するものとする。アクセス制御部２１は可変長コード出力用のアドレスジェネレータに起動信号ＡＣ２を送る。起動信号ＡＣ２を受けたアドレスジェネレータはモード４のパラメータレジスタの値を用いて、外部メモリ２をアクセスするためのアドレスを生成する。モード４のパラメータレジスタは、「可変長コード出力」に対するパラメータとして、転送するワード数などを格納している。
【００４１】
アクセス制御部２１はイネーブルレジスタに格納された値の全てのビットについて検査を終了すると、システム制御部３０に、ステージ転送状態信号としてのビジー信号ＢＳ１によってこのステージにおけるデータ転送の終了を伝える。このようにして、１マクロブロックステージにおける外部メモリ２と複数のコア１０との間のデータ転送が完了する。
【００４２】
図５は図２に示すメモリアクセス部２０のデータ転送のタイミングを示すタイミングチャートである。図５では、ビデオ信号入力からコード信号出力までの一連の画像符号化処理において、例えばコード出力部１７がマクロブロック（ｎ−１）乃至（ｎ＋１）の処理において外部メモリ２からデータをリードする場合を抜粋して示している。なお、外部メモリ２にデータをライトする場合には、スケジュール設定とともにライトデータを設定する必要がある。
【００４３】
各ステージにおいて、外部メモリ２をアクセスするために要する時間は、複数のコアが演算をそれぞれ実行するのに要する時間よりもはるかに長い。このため、各ステージのサイクル数はデータ転送に要するサイクル数によって決まる。そして、各ステージのデータ転送にはほとんどロスタイムがなく、かつ、あるステージのデータ転送が終了するとすぐに次のステージのデータ転送が開始される。したがって図５に示すように、本実施形態では、各ステージのサイクル数はステージごとに異なっている。
【００４４】
以下、本実施形態に係る画像処理装置の動作について、ＭＰＥＧ２の符号化処理を例にとって、具体的に説明する。ＭＰＥＧ２では、各フレームを（１６×１６）画素のマクロブロックに分割し、マクロブロック毎に圧縮符号化処理を実行する。例えばＮＴＳＣ画像の場合、１フレームは７２０画素×４８０ラインなので、１３５０個（＝横４５×縦３０）のマクロブロックに分割される。
【００４５】
図６は一のマクロブロックＭＢ０の符号化処理の流れを示す図である。図６において、横軸はステージを表し、図中の各矢印は、アドレス設定とデータ転送との対応関係、および、コアの処理とデータ転送との対応関係を示している。また図６では、符号化処理の流れに合わせて、各ステージにおける，動作するコア、外部メモリ２とアクセスするバッファメモリ、およびアドレス設定を行うアドレスジェネレータを示している。
【００４６】
図６に示す各コアの処理内容について、説明する。
【００４７】
＜ＭＥ１処理＞
第１の動きベクトル検出部１２が実行する、１画素精度の動きベクトル検出である。外部メモリ２からバッファメモリＳＭＢＭに、エンコードの対象となる原画像のマクロブロックデータが読み出される。また、外部メモリ２からバッファメモリＭＳＢＭに、参照画像フレームのＹ成分データが読み出される。第１の動きベクトル検出部１２は、バッファメモリＳＭＢＭ，ＭＳＢＭに格納したデータから１画素精度の動きベクトルを検出する。バッファメモリＳＭＢＭ，ＭＳＢＭへのデータ転送の前に、システム制御部３０は符号化の対象となるマクロブロックの位置を、パラメータとして設定する。
【００４８】
＜ＭＥ２処理＞
第２の動きベクトル検出部１３が実行する、半画素精度の動きベクトル検出である。１回目のＭＥ２処理では、外部メモリ２からバッファメモリＭＹＢＭに、第１の動きベクトル検出部１２から出力された動きベクトルが示す領域の参照画像のＹ成分が読み出される。第２の動きベクトル検出部１３は、バッファメモリＳＭＢＭのデータと、バッファメモリＭＹＢＭに読み出したデータとを用いて、半画素精度の動きベクトルを検出する。
【００４９】
２回目のＭＥ２処理では、外部メモリ２からバッファメモリＭＣＢＭに、参照画像フレームのＣ成分データが読み出される。第２の動きベクトル検出部１３は、１回目のＭＥ２処理で求めた動きベクトルを用いて、バッファメモリＳＭＢＭ，ＭＣＢＭに格納したデータから半画素精度の動きベクトルを検出する。
【００５０】
＜ＭＳＰ処理＞
ＤＣＴ演算をフレーム単位で行うかフィールド単位で行うか等の，エンコードに必要な処理のモード選択であり、モード選択演算部１４が実行する。＜ＭＥ１処理＞および＜ＭＥ２処理＞によって求められた動きベクトルの値が０の場合、外部メモリ２からバッファメモリＺＭＢＭに、符号化を行うマクロブロックと同一位置の参照画像が読み出される。
【００５１】
＜ＤＣＴ／Ｑ処理＞
マクロブロックと、＜ＭＥ１処理＞および＜ＭＥ２処理＞によって求めた動きベクトルが指す位置の参照画像との差分画像について、ＤＣＴ演算→量子化→逆量子化→逆ＤＣＴ演算の各処理を行うものであり、ＤＣＴおよび量子化演算部１５が実行する。＜ＭＳＰ処理＞で選択されたモードに従って実行される。逆ＤＣＴ演算された画像データは、バッファメモリＲＯＢＭに格納され、外部メモリ２に転送される。そして、他のフレームをエンコードする際の参照画像として用いられる（リコンストラクト（ＲＥＣ））。
【００５２】
＜ＶＬＣ処理＞
＜ＤＣＴ／Ｑ処理＞における量子化後のデータを可変長符号化するものであり、可変長符号化演算部１６が実行する。可変長符号化されたデータは、バッファメモリＶＷＢＭに格納され、バッファリングのため一旦外部メモリ２に書き込まれる。可変長符号化後のデータ量は、可変長符号化演算部１６からシステム制御部３０に送られる。システム制御部３０は可変長符号化後のデータ量を基に、バッファメモリＶＷＢＭからのデータ転送のパラメータとして転送ワード数を設定する。
【００５３】
＜コード出力処理＞
コード出力部１７は、システム１の外部に接続されたデバイスが要求するタイミングに従って、可変長符号化データを送出する。バッファメモリＶＲＢＭは、外部出力のためのバッファとして用いられる。システム制御部３０は、外部から要求される転送タイミングに応じて、バッファメモリＶＲＢＭからのデータ転送のパラメータとして、転送ワード数を設定する。
【００５４】
図７はＭＰＥＧ２の符号化処理を実行するパイプライン処理全体の流れを示す図である。ＭＰＥＧ２の規格では、Ｉ，Ｐ，Ｂという３種類のピクチャタイプがあり、図７はその中で最もデータ転送が多いＰピクチャタイプについて示している。ステージ１１までは、各ステージにおける処理の種類が徐々に増えていき、ステージ１２以降は、ほぼ同種類の処理が各ステージにおいて繰り返し実行される。
【００５５】
Ｉピクチャタイプでは、他のフレームを一切参照せずに符号化を行う。このため、動きベクトル検出に係る処理（ＭＥ１処理およびＭＥ２処理）は実行せず、バッファメモリＭＳＢＭ，ＭＹＢＭ，ＭＣＢＭへのデータ転送は行わない。またＢピクチャタイプは他のフレームから参照されないので、リコンストラクト（ＲＥＣ）処理は不要であり、バッファメモリＲＯＢＭからのデータ転送は行わない。また他の理由により、バッファメモリＺＭＢＭへのデータ転送も行わない。
【００５６】
このように、ピクチャタイプに応じて、必要なデータ転送の種類が異なるので、イネーブルレジスタ等の設定も、ピクチャタイプに応じて変更する必要がある。
【００５７】
図８は図７の各ステージにおけるイネーブルレジスタ、モードレジスタおよびパラメータレジスタの設定値の変化を示す図である。図８に示すモードレジスタの各設定値＄１，＄２，＄３，＄４，＄６，＄７，＄８および＄Ａは、アドレスジェネレータＡＧ１〜ＡＧ８にそれぞれ対応している。図８に示すように、ステージ１１以降はイネーブルレジスタの各ビットの値が全ての“１”になるので、全てのアドレスジェネレータＡＧ１〜ＡＧ８がアドレス設定を行う。
【００５８】
図９はＢピクチャタイプのエンコードにおける各レジスタの設定値の変化を示す図、図１０はＩピクチャタイプのエンコードにおける各レジスタの設定値の変化を示す図である。図８と比較すると分かるように、ステージ１１以降においても、イネーブルレジスタの各ビットの中に“０”が存在する。
【００５９】
システム制御部３０は、アプリケーションに応じて、ピクチャタイプの連続パターン（例えば「ＩＰＰＢＰＰＢＰＰＢＰＰＢＰＰ」）を記憶しており、この連続パターンに応じて、図８〜図１０に示すように、各レジスタの値を設定する。
【００６０】
図８〜図１０ではモードレジスタの設定値は常に一定である。すなわち、最もデータ転送の多いＰピクチャに合わせてモードレジスタの値を設定し、データ転送の有無をイネーブルレジスタの設定のみによって制御している。もちろん、モードレジスタの値の設定変更によって、データ転送の有無を制御することも可能である。
【００６１】
また、モードレジスタの設定によって、各ステージにおけるデータ転送の順序を制御することも可能である。大抵のアプリケーションでは、各データ転送は、そのステージ内に実行完了できればよいのであって、その順序まで厳密に制御する必要は必ずしもない。しかしながら、アプリケーションによっては、例えば「ＭＣＢＭへのデータ転送はＺＭＢＭへのデータ転送に先行して実行しなければならない」という条件が、存在する場合がある。このような場合には、ＭＣＢＭへのデータ転送をモード０に設定し、ＺＭＢＭへのデータ転送をモード１に設定すれば、この条件を満たすことができる。
【００６２】
パラメータレジスタの値設定は次のように行う。モード＄１，＄２，＄６および＄７のデータ転送では、マクロブロックの位置を示すデータが設定される（パラメータ０，１，４，５）。モード＄３，＄４のデータ転送では、＜ＭＥ１処理＞で求めた動きベクトルを基に、転送元の座標値＊１，＊２を設定する（パラメータ２，３）。モード＄８，＄Ａのデータ転送では、転送ワード数＊３，＊４を設定する（パラメータ６，７）。
【００６３】
このように、本実施形態に係る画像処理装置によると、アクセススケジュール記憶部２２にデータ転送の種類および順序をステージごとに設定することができ、またこの設定は実際にデータ転送を行うステージの前のステージにおいて行うことができる。さらに、ビジー信号ＢＳ２によってあるアドレスジェネレータの実行終了を確認するとすぐに次のアドレスジェネレータの起動を行うことができる。このため、各ステージにおいて、必要なデータ転送のみをほとんどロスタイムを生じることなく連続して行うことができる。
【００６４】
したがって、各ステージにおいては、そのステージの前のステージまでに、外部メモリ２とのデータ転送のスケジュールがシステム制御部３０によって決定されているため、メモリアクセス部２０は、各コア１１〜１７間のアービトレーションを行わないで、複数のデータ転送を順次実行することができる。また、データ転送量が少ない場合は、無駄な待ち時間を生じることなく、データ転送を早く終了させることができる。これにより、データ転送自体を省くためのバッファメモリを設けなくても、ＭＰＥＧ２ビデオ符号化を正常かつ確実に実行することができる。
【００６５】
なお、本実施形態では、アドレスジェネレータとバッファメモリとが１対１に対応しているものとしたが、例えば、あるアドレスジェネレータが複数のバッファメモリと対応していてももちろんかまわない。また、あるアドレスジェネレータが複数の転送モードに対応していてもかまわない。さらに、アドレスジェネレータの個数は８個に限られるものではない。
【００６６】
また、本実施形態におけるイネーブルレジスタのビット幅、モードレジスタおよびパラメータレジスタの本数はあくまでも一例であり、これらの値に限定されるものではない。
【００６７】
さらに、本実施形態では、各ステージのデータ転送の種類および順序はその直前のステージにおいて設定するものとしたが、直前のステージでなくても、前のステージであればよい。例えば、直前のステージにおいてＮＯＰ処理を行うときは、さらにその前のステージにおいて設定してもよい。また、アクセススケジュール記憶部２２を３バンク構成にすれば、各ステージのデータ転送の種類および順序を、その２つ前のステージにおいて設定することも可能である。
【００６８】
ここで、課題の項で述べた従来例における問題と本願発明との関係について、補足説明を行う。
【００６９】
図１１はＢピクチャの画像符号化（時間軸で前と後に位置する参照画像を用いる符号化）を行う場合における各コアと外部メモリとの間のデータ転送に要するサイクル数を示す図である。図１１に示すデータは、本願発明者がＭＰＥＧ２の規格から推定したものである。ＭＰＥＧ２ビデオ符号化では、各コアと外部メモリとの間のデータ転送量は各マクロブロックにおいて一定ではなく、画像の複雑さ等によってマクロブロックごとに変動する。図１１は１フィールド（ＮＴＳＣ画像の場合、１／６０秒分の画像）における各マクロブロックのデータ転送に要するサイクル数の分布を示しており、その最大値は２２２２、最小値は１６４９である。
【００７０】
いま、有効画素期間と垂直ブランキング期間とを合わせた時間を全て１フィールドの画像符号化に利用できるものとすると、マクロブロック１個あたりの符号化に割り当て可能なサイクル数の上限値は１９９７サイクルとなる（従来例の仕様から動作周波数８１ＭＨｚとして推定）。
【００７１】
すなわち、図１１から分かるように、マクロブロック１個あたりのサイクル数の最大値はその上限値を越えている。このことは、このまま何の方策も講じなければ、ＭＰＥＧ２ビデオ符号化が正常に実行できないことを示している。従来例では、動きベクトル検出用のキャッシュメモリを設けることによって２次探索時の外部メモリからのデータ転送を省き、これにより、マクロブロック１個あたりのサイクル数の最大値を、上限値よりも小さい１５５１サイクルまで低減している。
【００７２】
本願発明者は、図１１に示すような推定結果から、１フィールドすなわち６７５マクロブロックの平均でみれば、サイクル数はその上限値を下回ることに着目した。そして、各マクロブロックのデータ転送に要するサイクル数を平均化して、キャッシュメモリを設けなくても画像符号化を確実に実行できるようにしたのが、本願発明に係る本実施形態といえる。
【００７３】
また、従来例と同様にキャッシュメモリを設けた場合には、本願発明を適用することによって、例えばクロック周波数を下げることもできる。これにより、消費電力を低減することも可能である。
【００７４】
なお、本発明は、ＭＰＥＧ２ビデオ符号化以外の画像符号化や、画像復号化などの他の画像処理にも容易に適用可能である。また、画像処理以外の信号処理であっても、複数のアクセス主体からメモリアクセスを行う場合には、容易に適用可能である。
【００７５】
以上のように本発明によると、複数のコアと外部メモリとの間のデータ転送を行う際に、各ステージにおいて、そのステージより前のステージでスケジュール設定を順次行うことにより、メモリアクセス部はアービトレーションを行わないで、必要な種類のデータ転送のみを順次実行させることができるので、効率のよいメモリアクセスを実現することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る画像処理装置の全体構成を示す図である。
【図２】図１に示すメモリアクセス部の構成を示す図である。
【図３】図２に示すイネーブル記憶部の構成を示す図である。
【図４】図２に示すアクセススケジュール記憶部の記憶内容の一例を示す図である。
【図５】図１に示すメモリアクセス部のデータ転送のタイミングを示すタイミングチャートである。
【図６】一のマクロブロックの符号化処理の流れを示す図である。
【図７】ＭＰＥＧ２の符号化処理を実行するパイプライン処理全体の流れを示す図である。
【図８】図７の各ステージにおけるイネーブルレジスタ、モードレジスタおよびパラメータレジスタの設定値の変化を示す図である。
【図９】Ｂピクチャタイプのエンコードにおける各レジスタの設定値の変化を示す図である。
【図１０】Ｉピクチャタイプのエンコードにおける各レジスタの設定値の変化を示す図である。
【図１１】１フィールド当たりのデータ転送に要するサイクル数を示す図であり、本願発明と従来例との差を説明するための図である。
【図１２】従来のＭＰＥＧビデオ符号化におけるメモリアクセスの制御方法を示す図である。
【図１】
0003544524.tif 000002
【図２】
0003544524.tif 000003
【図３】
0003544524.tif 000004
【図４】
0003544524.tif 000005
【図５】
0003544524.tif 000006
【図６】
0003544524.tif 000007
【図７】
0003544524.tif 000008
【図８】
0003544524.tif 000009
【図９】
0003544524.tif 000010
【図１０】
0003544524.tif 000011
【図１１】
0003544524.tif 000012
【図１２】
0003544524.tif 000013