(57)【特許請求の範囲】
【請求項１】
処理データを入力してメモリに書き込む入力部と、該メモリに記憶される処理データに所定の処理を施す１つ又は複数の処理部と、該メモリに記憶される処理の施された処理データを出力する出力部とを備える処理装置で用いられて、それらの各部と該メモリとの間のデータ転送を制御するメモリ制御装置であって、
上記メモリと上記処理部との間に発生する一連のデータ処理用データ転送命令を規定の順序に従って発行する発行手段と、
上記入力部の持つバッファ容量から制限される上記入力部と上記メモリとの間に発生するデータ転送間隔の最大値である入力側最大値と、上記出力部の持つバッファ容量から制限される上記出力部と上記メモリとの間に発生するデータ転送間隔の最大値である出力側最大値とを記憶する第１の記憶手段と、
上記入力部と上記メモリとの間の外部とのインタラクションで発生するデータ転送を司るデータ入力用データ転送命令の終了からの経過サイクル数である入力側経過サイクル数と、上記出力部と上記メモリとの間の外部とのインタラクションで発生するデータ転送を司るデータ出力用データ転送命令の終了からの経過サイクル数である出力側経過サイクル数とを計数する計数手段と、
上記データ処理用データ転送命令のそれぞれについて、予め設定される固定値の実行サイクル数を記憶する第２の記憶手段と、
上記第２の記憶手段から上記発行手段の発行したデータ処理用データ転送命令の実行サイクル数を取得して、その取得した実行サイクル数と上記入力側経過サイクル数との加算値を算出し、その加算値が上記入力側最大値を超えるのか否かを判断して、超える場合には、上記データ入力用データ転送命令を次に実行するデータ転送命令として決定し、超えない場合には、続いて、その取得した実行サイクル数と上記出力側経過サイクル数との加算値を算出し、その加算値が上記出力側最大値を超えるのか否かを判断して、超える場合には、上記データ出力用データ転送命令を次に実行するデータ転送命令として決定し、超えない場合には、上記発行手段の発行したデータ処理用データ転送命令を次に実行するデータ転送命令として決定する決定手段と、
上記発行手段の発行したデータ処理用データ転送命令が次に実行するデータ転送命令として決定される場合にあって、そのデータ処理用データ転送命令が待ち状態にある場合には、上記データ入力用データ転送命令、あるいは、上記データ出力用データ転送命令を次に実行するデータ転送命令として最終決定する最終決定手段とを備えることを、
特徴とするメモリ制御装置。
【請求項２】
請求項１に記載のメモリ制御装置において、
上記発行手段は、複数のデータ処理用データ転送命令の組み合わせを繰り返し発行する場合には、その組み合わせのデータ処理用データ転送命令の転送シーケンスを保持するメモリ域をサイクリックに参照することで、その組み合わせのデータ処理用データ転送命令を繰り返し発行することを、
特徴とするメモリ制御装置。
【請求項３】
請求項１に記載のメモリ制御装置において、
上記最終決定手段は、前回に上記データ入力用データ転送命令を次に実行するデータ転送命令として最終決定した場合には、今回は上記データ出力用データ転送命令を次に実行するデータ転送命令として最終決定し、一方、前回に上記データ出力用データ転送命令を次に実行するデータ転送命令として最終決定した場合には、今回は上記データ入力用転送命令を次に実行するデータ転送命令として最終決定することを、
特徴とするメモリ制御装置。
【請求項４】
請求項１に記載のメモリ制御装置において、
上記最終決定手段は、上記入力側最大値と上記入力側経過サイクル数との差分値と、上記出力側最大値と上記出力側経過サイクル数との差分値とを求めて、小さな値を示す方の差分値を特定し、その特定した差分値が上記入力側最大値と上記入力側経過サイクル数との差分値である場合には、上記データ入力用データ転送命令を次に実行するデータ転送命令として最終決定し、一方、その特定した差分値が上記出力側最大値と上記出力側経過サイクル数との差分値である場合には、上記データ出力用データ転送命令を次に実行するデータ転送命令として最終決定することを、
特徴とするメモリ制御装置。
【請求項５】
処理データを入力してメモリに書き込む入力部と、該メモリに記憶される処理データに所定の処理を施す１つ又は複数の処理部と、該メモリに記憶される処理の施された処理データを出力する出力部とを備える処理装置で用いられて、それらの各部と該メモリとの間のデータ転送を制御するメモリ制御方法であって、
上記メモリと上記処理部との間に発生する一連のデータ処理用データ転送命令を規定の順序に従って発行する第１の過程と、
上記入力部の持つバッファ容量から制限される上記入力部と上記メモリとの間に発生するデータ転送間隔の最大値である入力側最大値と、上記出力部の持つバッファ容量から制限される上記出力部と上記メモリとの間に発生するデータ転送間隔の最大値である出力側最大値とを記憶する第１の記憶手段から、該入力側最大値及び該出力側最大値を取得する第２の過程と、
上記入力部と上記メモリとの間の外部とのインタラクションで発生するデータ転送を司るデータ入力用データ転送命令の終了からの経過サイクル数である入力側経過サイクル数と、上記出力部と上記メモリとの間の外部とのインタラクションで発生するデータ転送を司るデータ出力用データ転送命令の終了からの経過サイクル数である出力側経過サイクル数とを計数する第３の過程と、
上記データ処理用データ転送命令のそれぞれについて、予め設定される固定値の実行サイクル数を記憶する第２の記憶手段から、上記発行したデータ処理用データ転送命令の実行サイクル数を取得する第４の過程と、
上記第２の記憶手段から取得した実行サイクル数と上記入力側経過サイクル数との加算値を算出し、その加算値が上記入力側最大値を超えるのか否かを判断して、超える場合には、上記データ入力用データ転送命令を次に実行するデータ転送命令として決定し、超えない場合には、続いて、その取得した実行サイクル数と上記出力側経過サイクル数との加算値を算出し、その加算値が上記出力側最大値を超えるのか否かを判断して、超える場合には、上記データ出力用データ転送命令を次に実行するデータ転送命令として決定し、超えない場合には、上記発行したデータ処理用データ転送命令を次に実行するデータ転送命令として決定する第５の過程と、
上記発行したデータ処理用データ転送命令が次に実行するデータ転送命令として決定される場合にあって、そのデータ処理用データ転送命令が待ち状態にある場合には、上記データ入力用データ転送命令、あるいは、上記データ出力用データ転送命令を次に実行するデータ転送命令として最終決定する第６の過程とを備えることを、
特徴とするメモリ制御方法。
【請求項６】
請求項５に記載のメモリ制御方法において、
上記第１の過程では、複数のデータ処理用データ転送命令の組み合わせを繰り返し発行する場合には、その組み合わせのデータ処理用データ転送命令の転送シーケンスを保持するメモリ域をサイクリックに参照することで、その組み合わせのデータ処理用データ転送命令を繰り返し発行することを、
特徴とするメモリ制御方法。
【請求項７】
請求項５に記載のメモリ制御方法において、
上記第６の過程では、前回に上記データ入力用データ転送命令を次に実行するデータ転送命令として最終決定した場合には、今回は上記データ出力用データ転送命令を次に実行するデータ転送命令として最終決定し、一方、前回に上記データ出力用データ転送命令を次に実行するデータ転送命令として最終決定した場合には、今回は上記データ入力用転送命令を次に実行するデータ転送命令として最終決定することを、
特徴とするメモリ制御方法。
【請求項８】
請求項５に記載のメモリ制御方法において、
上記第６の過程では、上記入力側最大値と上記入力側経過サイクル数との差分値と、上記出力側最大値と上記出力側経過サイクル数との差分値とを求めて、小さな値を示す方の差分値を特定し、その特定した差分値が上記入力側最大値と上記入力側経過サイクル数との差分値である場合には、上記データ入力用データ転送命令を次に実行するデータ転送命令として最終決定し、一方、その特定した差分値が上記出力側最大値と上記出力側経過サイクル数との差分値である場合には、上記データ出力用データ転送命令を次に実行するデータ転送命令として最終決定することを、
特徴とするメモリ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像フレームを入力してマクロブロックに分割し、それらのマクロブロックを処理単位として符号化を行ってビットストリームを出力する処理を行う画像符号化装置などで用いられるメモリ制御装置及びその方法に関し、特に、入出力の際に必要となるバッファのオーバーフローやアンダーフローの発生を大幅に回避できるようにすることで、それらのバッファの容量を削減できるようにするメモリ制御装置及びその方法に関する。
【０００２】
【従来の技術】
ＭＰＥＧ２などの動画像符号化装置では、高圧縮を実現するために空間方向、時間方向の情報を用いているため、画像データなどの大量のデータを扱う必要がある。特に、ＨＤＴＶ画像の実時間符号化では、膨大な画像データを実時間で符号化するために、大容量のメモリと大きなメモリバンド幅（メモリにアクセスする際の帯域）とを確保することが重要である。
【０００３】
このため、動画像符号化装置で用いられる従来のメモリ制御方式では、メモリとのデータ転送のバンド幅を確保するために、設計時に、予めデータ転送の順序をスケジューリングすることにより実現している。
【０００４】
図１２に、動画像符号化装置の装置構成を図示する。
【０００５】
この図に示すように、動画像符号化装置は、▲１▼外部から画像フレームをインタレースあるいはプログレッシブで入力する画像入力部と、▲２▼画像フレームから分割されるマクロブロックを処理単位として動作するＭ個（Ｍ≧１）のマクロブロック同期転送部と、▲３▼画像フレームをＮ個（Ｎ≧１）に分割した分割フレームを入力としてマクロブロック単位で符号化処理を行った後それぞれの分割ビットストリームを出力する並列で動作するＮ個の符号化コア部と、▲４▼ビットストリームを外部に出力するビットストリーム出力部と、▲５▼メモリと、▲６▼メモリと画像入力部／マクロブロック同期転送部／符号化コア部／ビットストリーム出力部との間のデータ転送を制御するメモリ制御部とを備えるという構成を採っている。
【０００６】
ここで、図１２では、Ｍ個のマクロブロック同期転送部として、１個のフィルタ部を備えることを想定している。また、画像入力部及びビットストリーム出力部は、小容量のバッファを有する。また、入力画像、ビットストリームおよびマクロブロック処理用のデータについては、共通のメモリに蓄積されることになる。
【０００７】
このように構成される動画像符号化装置では、画像入力部やビットストリーム出力部のデータ転送は、内部処理とは無関係に発生することになる。
【０００８】
これから、予めデータ転送の順序をスケジューリングするという従来のメモリ制御方式に従っていたのでは、バッファのオーバーフローやアンダーフローが発生しないようにするために、画像入力部やビットストリーム出力部が保持するバッファを大きくするか、あるいは、画像入力部やビットストリーム出力部とメモリとの間のデータ転送回数を増やさなければならない。
【０００９】
この場合、バッファを大きくするようにすると、バッファのメモリ量が大きくなるという問題があり、一方、データ転送回数を増やすようにすると、オーバーヘッドが大きくなり、符号化コア部へのデータ転送サイクルを十分に確保できなくなるために、画像品質の劣化を生じやすいという問題がある。
【００１０】
なお、本発明に関連する先行技術として、（イ）下記の特許文献１には、画像メモリとバッファとの間のデータ転送を効率よく行うための技術が開示されており、（ロ）下記の特許文献２には、符号化データ量を制御することにより、バッファメモリでのオーバーフローを防止するという技術が開示されており、（ハ）下記の特許文献３には、画像符号化装置の各処理部の処理をスケジューリングにより決定することにより、処理競合を解決するという技術が開示されている。
【００１１】
【特許文献１】
特開平８−９３８１号公報
【特許文献２】
特開平６−２３３２７２号公報
【特許文献３】
特開平１０−１０８１９９号公報
【００１２】
【発明が解決しようとする課題】
従来のメモリ制御方式では、メモリとのデータ転送を行うときに以下のような問題が生じる。
【００１３】
（１）マクロブロックの処理サイクルは、画像の性質や符号化方法によって増減する。これから、図１３に示すように、マクロブロックの処理サイクルの増減により、予めスケジューリングされたデータ転送では、画像入力部やビットストリーム出力部とメモリとの間のデータ転送間隔が変動することになる。
【００１４】
このデータ転送間隔の変動により、一定のレートで入力されてくる画像入力部のバッファや、一定のレートで引き抜かれるビットストリーム出力部のバッファが破綻しないようにするために、バッファ量を大きくするとか、データ転送回数を多くする（オーバーヘッドの増加を招くことになる）という方法が用いられている。
【００１５】
（２）画像入力部とメモリとの間で発生するデータ転送や、ビットストリーム出力部とメモリとの間で発生するデータ転送は、マクロブロック処理に無関係に発生する。一方、設計時に転送シーケンスを決定する場合、転送シーケンス順序にしかデータ転送が発生しない。これから、画像入力部の持つバッファがオーバーフローしたり、ビットストリーム出力部の持つバッファがアンダーフローする可能性がある。
【００１６】
（３）Ｎ個の符号化コア部とメモリとの間の転送シーケンスとして、Ｎ回分指定するメモリ制御方式では、同様の転送シーケンスにも関わらず、Ｎ倍の転送シーケンスを指定しなければならない。
【００１７】
（４）Ｍ個のマクロブロック同期転送部とメモリとの間の転送シーケンスの実行の待ち状態や、Ｎ個の符号化コア部とメモリとの間の転送シーケンスの実行の待ち状態は、全体のデータ転送の効率を悪くする可能性がある。
【００１８】
以上に説明したように、従来技術に従っていると、画像入力部やビットストリーム出力部の持つバッファが大きなものとなったり、それらのバッファがオーバーフローしたりアンダーフローする可能性があるとともに、転送シーケンスを指定するメモリ量が大きく、転送シーケンスの待ち状態で無駄なオーバーヘッドを発生させるという問題がある。
【００１９】
このような問題は、動画像符号化装置に限られることなく、処理データを入力してメモリに書き込む入力部と、メモリに記憶される処理データに所定の処理を施す処理部と、メモリに記憶される処理の施された処理データを出力する出力部とを備える処理装置で一般的に発生している問題である。
【００２０】
本発明はかかる事情に鑑みてなされたものであって、処理データを入力してメモリに書き込む入力部と、メモリに記憶される処理データに所定の処理を施す処理部と、メモリに記憶される処理の施された処理データを出力する出力部とを備える処理装置で用いられて、それらの各部とメモリとの間のデータ転送を制御するという構成を採るときにあって、入出力の際に必要となるバッファのオーバーフローやアンダーフローの発生を大幅に回避できるようにすることで、それらのバッファの容量を削減できるようにする新たなメモリ制御技術の提供を目的とする。
【００２１】
さらに、本発明は、これに加えて、転送シーケンスを指定するメモリ量を削減できるようにするとともに、転送シーケンスの待ち状態により発生する無駄なオーバーヘッドを削減できるようにする新たなメモリ制御技術の提供を目的とする。
【００２２】
【課題を解決するための手段】
この目的を達成するために、本発明のメモリ制御装置は、処理データを入力してメモリに書き込む入力部と、メモリに記憶される処理データに所定の処理を施す１つ又は複数の処理部と、メモリに記憶される処理の施された処理データを出力する出力部とを備える処理装置で用いられて、それらの各部とメモリとの間のデータ転送を制御するという構成を採るときにあって、
（１）メモリと処理部との間に発生する一連のデータ処理用データ転送命令を規定の順序に従って発行する発行手段と、
（２）入力部の持つバッファ容量から制限される入力部とメモリとの間に発生するデータ転送間隔の最大値である入力側最大値と、出力部の持つバッファ容量から制限される出力部とメモリとの間に発生するデータ転送間隔の最大値である出力側最大値とを記憶する第１の記憶手段と、
（３）入力部とメモリとの間の外部とのインタラクションで発生するデータ転送を司るデータ入力用データ転送命令の終了からの経過サイクル数である入力側経過サイクル数と、出力部とメモリとの間の外部とのインタラクションで発生するデータ転送を司るデータ出力用データ転送命令の終了からの経過サイクル数である出力側経過サイクル数とを計数する計数手段と、
（４）データ処理用データ転送命令のそれぞれについて、予め設定される固定値の実行サイクル数を記憶する第２の記憶手段と、
（５）第２の記憶手段から発行手段の発行したデータ処理用データ転送命令の実行サイクル数を取得して、その取得した実行サイクル数と入力側経過サイクル数との加算値を算出し、その加算値が入力側最大値を超えるのか否かを判断して、超える場合には、データ入力用データ転送命令を次に実行するデータ転送命令として決定し、超えない場合には、続いて、その取得した実行サイクル数と出力側経過サイクル数との加算値を算出し、その加算値が出力側最大値を超えるのか否かを判断して、超える場合には、データ出力用データ転送命令を次に実行するデータ転送命令として決定し、超えない場合には、発行手段の発行したデータ処理用データ転送命令を次に実行するデータ転送命令として決定する決定手段と、
（６）発行手段の発行したデータ処理用データ転送命令が次に実行するデータ転送命令として決定される場合にあって、そのデータ処理用データ転送命令が待ち状態にある場合には、データ入力用データ転送命令、あるいは、データ出力用データ転送命令を次に実行するデータ転送命令として最終決定する最終決定手段とを備えるように構成する。
【００２４】
このように構成される本発明のメモリ制御装置では、発行手段は、メモリと処理部との間に発生する一連のデータ処理用データ転送命令を規定の順序に従って発行する。例えば、データ処理用データ転送命令の転送シーケンスを保持するメモリ域を参照することで、メモリと処理部との間に発生する一連のデータ処理用データ転送命令を規定の順序に従って発行するのである。
【００２５】
このとき、複数のデータ処理用データ転送命令の組み合わせを繰り返し発行する場合には、転送シーケンスの命令数の削減を図るために、その組み合わせのデータ処理用データ転送命令の転送シーケンスを保持するメモリ域をサイクリックに参照することで、その組み合わせのデータ処理用データ転送命令を繰り返し発行することが好ましい。
【００２６】
このデータ処理用データ転送命令の発行を受けて、決定手段は、第１の記憶手段の記憶データに従って、２つのデータ転送間隔の最大値（入力側最大値，出力側最大値）を取得するとともに、計数手段の計数する２つの経過サイクル数（入力側経過サイクル数，出力側経過サイクル数）を取得し、さらに、第２の記憶手段の記憶データに従って、発行手段の発行したデータ処理用データ転送命令の示すデータ転送に必要な実行サイクル数を取得する。
【００２７】
続いて、決定手段は、その取得したデータ転送に必要な実行サイクル数と、その取得した経過サイクル数との加算値を算出して、その加算値がその取得した最大値を超えるのか否かを判断することで、次に実行するデータ転送命令を決定する。
【００２８】
すなわち、その加算値が第１の記憶手段の記憶する最大値を超える場合には、発行手段の発行したデータ処理用データ転送命令を次に実行すると、入力部の持つバッファがオーバーフローしたり、出力部の持つバッファがアンダーフローすることになるので、そのような不都合を回避すべく、その加算値がその最大値を超える場合には、その超えた最大値に対応付けられるデータ転送命令（データ入力用データ転送命令あるいはデータ出力用データ転送命令）を次に実行するデータ転送命令として決定し、その加算値がその最大値を超えない場合には、発行手段の発行したデータ処理用データ転送命令を次に実行するデータ転送命令として決定するのである。
【００２９】
このとき、入力部とメモリとの間のデータ転送を司るデータ入力用データ転送命令の方が、出力部とメモリとの間のデータ転送を司るデータ出力用データ転送命令よりも緊急性が高いことを考慮して、先ず最初に、加算値が入力部に係る入力側最大値を超えるのか否かを判断して、超える場合には、入力部とメモリとの間のデータ転送を司るデータ入力用データ転送命令を次に実行するデータ転送命令として決定し、超えない場合には、続いて、加算値が出力部に係る出力側最大値を超えるのか否かを判断して、超える場合には、出力部とメモリとの間のデータ転送を司るデータ出力用データ転送命令を次に実行するデータ転送命令として決定し、超えない場合には、発行手段の発行したデータ処理用データ転送命令を次に実行するデータ転送命令として決定する。
【００３０】
決定手段が次に実行するデータ転送命令を決定すると、最終決定手段は、処理部とメモリとの間のデータ転送を司るデータ処理用データ転送命令に待ち状態が発生することを考慮して、発行手段の発行したデータ処理用データ転送命令が次に実行するデータ転送命令として決定される場合には、そのデータ処理用データ転送命令が待ち状態にあるのか否かをチェックして、そのデータ処理用データ転送命令が待ち状態にある場合には、入力部とメモリとの間のデータ転送を司るデータ入力用データ転送命令、あるいは、出力部とメモリとの間のデータ転送を司るデータ出力用データ転送命令を次に実行するデータ転送命令として最終決定するように処理する。
例えば、（ｉ）前回にデータ入力用データ転送命令を次に実行するデータ転送命令として最終決定した場合には、今回はデータ出力用データ転送命令を次に実行するデータ転送命令として最終決定し、一方、前回にデータ出力用データ転送命令を次に実行するデータ転送命令として最終決定した場合には、今回はデータ入力用転送命令を次に実行するデータ転送命令として最終決定したり、（ii）入力側最大値と入力側経過サイクル数との差分値と、出力側最大値と出力側経過サイクル数との差分値とを求めて、小さな値を示す方の差分値を特定し、その特定した差分値が入力側最大値と入力側経過サイクル数との差分値である場合には、データ入力用データ転送命令を次に実行するデータ転送命令として最終決定し、一方、その特定した差分値が出力側最大値と出力側経過サイクル数との差分値である場合には、データ出力用データ転送命令を次に実行するデータ転送命令として最終決定する。
【００３１】
このようにして、本発明によれば、処理データを入力してメモリに書き込む入力部と、メモリに記憶される処理データに所定の処理を施す処理部と、メモリに記憶される処理の施された処理データを出力する出力部とを備える処理装置で用いられて、それらの各部とメモリとの間のデータ転送を制御するという構成を採るときにあって、入力部の持つバッファのオーバーフローの発生を大幅に回避できるようになるとともに、出力部の持つバッファのアンダーフローの発生を大幅に回避できるようになり、これにより、バッファの容量に必要以上の余裕を持たせる必要がなくなるので、バッファの容量を削減できるようになる。
【００３２】
そして、本発明によれば、処理部とメモリとの間のデータ転送を司るデータ転送命令を優先する形でデータ転送を実行することで、入力部の持つバッファがオーバーフローとなる直前までそのバッファに処理データを入力するとともに、出力部の持つバッファがアンダーフローとなる直前までそのバッファから処理データを出力するというように処理することから、入力部とメモリとの間のデータ転送回数を削減できるようになるとともに、出力部とメモリとの間のデータ転送回数を削減できるようになる。
【００３３】
そして、本発明によれば、処理部とメモリとの間のデータ転送を司るデータ転送命令が繰り返し発行される場合に、その転送シーケンスを指定するメモリ量を削減できるようになる。
【００３４】
そして、本発明によれば、処理部とメモリとの間のデータ転送を司るデータ転送命令の待ち状態により発生する無駄なオーバーヘッドを削減できるようになる。
【００３５】
【発明の実施の形態】
以下、動画像符号化装置に適用した実施の形態に従って本発明を詳細に説明する。
【００３６】
図１に、本発明を具備する動画像符号化装置の一実施形態例を図示する。
【００３７】
図中、１は画像入力部であって、外部から画像フレームを入力するもの、１０は画像入力部１の備えるバッファ、２はフィルタ部であって、画像フレームから分割されるマクロブロックの同期転送のためのフィルタリング処理を行うもの、３-i（ｉ＝１〜Ｎ）はＮ個設けられる符号化コア部であって、並列動作して、画像フレームをＮ個に分割した分割フレームを入力としてマクロブロック単位で符号化処理を行った後それぞれの分割ビットストリームを出力するもの、４はビットストリーム出力部であって、符号化コア部３-iの出力するビットストリームを外部に出力するもの、４０はビットストリーム出力部４の備えるバッファ、５はメモリ、６は本発明を具備するメモリ制御部である。
【００３８】
この画像入力部１は、外部から画像データを入力して、メモリ制御部６を介してメモリ５に書き込む処理を行う。フィルタ部２は、メモリ制御部６を介してメモリ５から画像データを読み出してフィルタリング処理を施し、メモリ制御部６を介してメモリ５に書き込む処理を行う。符号化コア部３-iは、メモリ制御部６を介してメモリ５から画像データを読み出して符号化処理を施し、メモリ制御部６を介してメモリ５に書き込む処理を行う。ビットストリーム出力部４は、メモリ制御部６を介してメモリ５から符号化画像データを読み出して、外部に出力する処理を行う。
【００３９】
本発明を具備するメモリ制御部６は、パイプライン構成のハードウェアで構成されて、画像入力部１やビットストリーム出力部４のように、外部とのインタラクションでデータ転送が発生する処理部と、フィルタ部２や符号化コア部３-iのように、マクロブロックの処理に同期してデータ転送が発生する処理部とに対して、効率のよいデータ転送を提供する処理を行う。
【００４０】
この処理を実現するために、本発明を具備するメモリ制御部６は、転送シーケンス保持用レジスタ６１を備えるデータ転送命令発行手段６０と、実行サイクル数管理手段６２と、入出力実行間隔最大値管理手段６３と、入出力経過サイクル数計数手段６４と、実行命令決定手段６５と、アドレス計算手段６６と、データ転送手段６７とを備える。
【００４１】
転送シーケンス保持用レジスタ６１は、図２に示すように、フィルタ部２とメモリ５との間のデータ転送を司るデータ転送命令（Trans1）と、各符号化コア部３-iとメモリ５との間のデータ転送を司るデータ転送命令（符号化コア部３-1についてはTrans2,Trans3,Trans4、・・・・・、符号化コア部３-NについてはTransz-2,Transz-1,Transz) との羅列データ（転送シーケンスを構成することになる）について保持する。
【００４２】
データ転送命令発行手段６０は、図３に示すように、この転送シーケンス保持用レジスタ６１に保持される転送シーケンスに従って、実行命令決定手段６５に対して、フィルタ部２とメモリ５との間のデータ転送を司るデータ転送命令と、各符号化コア部３-iとメモリ５との間のデータ転送を司るデータ転送命令とをサイクリックの形式に従って順番に発行することで、メモリ５とフィルタ部２／符号化コア部３-iとの間に発生するＮマクロブロック処理分の一連のデータ転送命令を発行する。
【００４３】
実行サイクル数管理手段６２は、図２に示すように、転送シーケンス保持用レジスタ６１に保持される各データ転送命令に対応付けて、そのデータ転送命令の実行サイクル数（予め設定される固定値）を管理する。
【００４４】
入出力実行間隔最大値管理手段６３は、画像入力部１の持つバッファ１０の容量から制限される画像入力部１とメモリ５との間に発生するデータ転送間隔の最大値が何サイクルであるのかという情報と、ビットストリーム出力部４の持つバッファ４０の容量から制限されるビットストリーム出力部４とメモリ５との間に発生するデータ転送間隔の最大値が何サイクルであるのかという情報とを管理する。
【００４５】
すなわち、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令（TransIn)について、画像入力部１の持つバッファ１０がオバーフローしないようにするために、例えば１００サイクルを超えない形で実行されなければならないという条件が課されるときには、図２に示すように、画像入力部１とメモリ５との間に発生するデータ転送間隔の最大値が１００サイクルであるということを管理するのである。
【００４６】
そして、ビットストリーム出力部４とメモリ５との間のデータ転送を司るデータ転送命令（TransBs)について、ビットストリーム出力部４の持つバッファ４０がアンダーフローしないようにするために、例えば５００サイクルを超えない形で実行されなければならないという条件が課されるときには、図２に示すように、ビットストリーム出力部４とメモリ５との間に発生するデータ転送間隔の最大値が５００サイクルであるということを管理するのである。
【００４７】
入出力経過サイクル数計数手段６４は、マクロブロックに同期しないデータ転送を行う画像入力部１／ビットストリーム出力部４のそれぞれのデータ転送が終了してからの経過サイクル数を計数するものであり、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令（TransIn)の終了からの経過サイクル数（RTransIn）を計数して、それを保持するとともに、ビットストリーム出力部４とメモリ５との間のデータ転送を司るデータ転送命令（TransBs)の終了からの経過サイクル数（RTransBs）を計数して、それを保持する。
【００４８】
すなわち、入出力経過サイクル数計数手段６４は、図４に示すように、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令（TransIn)の終了からの経過サイクル数（RTransIn）を計数するカウンタ６４０を備えて、そのデータ転送命令が実行を開始すると、カウンタ６４０の値をリセットし、そのデータ転送命令が実行を終了すると、１サイクル経過する度にカウンタ６４０の値を１つインクリメントすることで、そのデータ転送命令の終了からの経過サイクル数（RTransIn）を計数するのである。
【００４９】
そして、入出力経過サイクル数計数手段６４は、図４に示すように、ビットストリーム出力部４とメモリ５との間のデータ転送を司るデータ転送命令（TransBs)の終了からの経過サイクル数（RTransBs）を計数するカウンタ６４１を備えて、そのデータ転送命令が実行を開始すると、カウンタ６４１の値をリセットし、そのデータ転送命令が実行を終了すると、１サイクル経過する度にカウンタ６４１の値を１つインクリメントすることで、そのデータ転送命令の終了からの経過サイクル数（RTransBs）を計数するのである。
【００５０】
実行命令決定手段６５は、データ転送命令発行手段６０の発行するデータ転送命令と、実行サイクル数管理手段６２から取得されるそのデータ転送命令の実行サイクル数と、入出力実行間隔最大値管理手段６３から取得されるデータ転送間隔の最大値と、入出力経過サイクル数計数手段６４の計数する経過サイクル数とを入力として、次に実行するデータ転送命令を決定する。
【００５１】
アドレス計算手段６６は、実行命令決定手段６５の決定したデータ転送命令を入力として、そのデータ転送命令の指定するアドレス計算を行い、メモリ５に対してそのアドレスを入力する。
【００５２】
データ転送手段６７は、メモリ５へのアドレス入力に同期して、画像入力部１／フィルタ部２／符号化コア部３-i／ビットストリーム出力部４とメモリ５との間のデータ転送を実行する。
【００５３】
次に、図５を参照しつつ、このように構成される本発明を具備するメモリ制御部６の実行する処理について詳細に説明する。
【００５４】
実行命令決定手段６５は、データ転送命令発行手段６０の発行するデータ転送命令（Transp(p=1〜z)) を受け取ると、図５に示すように、実行サイクル数管理手段６２から、そのデータ転送命令（Transp）の実行サイクル数（Ｓp)を取得する。
【００５５】
このとき、実行命令決定手段６５は、さらに、入出力実行間隔最大値管理手段６３から、データ転送間隔の最大値（MaxIn)／最大値（MaxBs)を取得するとともに、入出力経過サイクル数計数手段６４から、経過サイクル数（RTransIn）／経過サイクル数（RTransBs）を取得する。
【００５６】
続いて、実行命令決定手段６５は、先ず最初に、
RTransIn＋Ｓp ＞MaxIn
という条件が成立するのか否かを判断して、この条件が成立することを判断する場合には、次に実行するデータ転送命令として、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令（TransIn)を決定する。
【００５７】
すなわち、次に実行するデータ転送命令として、データ転送命令発行手段６０の発行したデータ転送命令（Transp）を選択すると、経過サイクル数（RTransIn）がデータ転送間隔の最大値（MaxIn)を超えてしまうことになる場合には、次に実行するデータ転送命令として、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令（TransIn)を選択するのである。
【００５８】
このときには、データ転送命令発行手段６０の発行したデータ転送命令（Transp）については保留状態とするので、データ転送命令発行手段６０にはデータ転送命令をアクセプトした旨の通知がいかず、これから、データ転送命令発行手段６０は、次のデータ転送命令の発行の待ち状態に入る。
【００５９】
一方、実行命令決定手段６５は、
RTransIn＋Ｓp ＞MaxIn
という条件が成立しないことを判断する場合には、続いて、
RTransBs＋Ｓp ＞MaxBs
という条件が成立するのか否かを判断して、この条件が成立することを判断する場合には、次に実行するデータ転送命令として、ビットストリーム出力部４とメモリ５との間のデータ転送を司るデータ転送命令（TransBs)を決定する。
【００６０】
すなわち、次に実行するデータ転送命令として、データ転送命令発行手段６０の発行したデータ転送命令（Transp）を選択すると、経過サイクル数（RTransBs）がデータ転送間隔の最大値（MaxBs)を超えてしまうことになる場合には、次に実行するデータ転送命令として、ビットストリーム出力部４とメモリ５との間のデータ転送を司るデータ転送命令（TransBs)を選択するのである。
【００６１】
このときには、データ転送命令発行手段６０の発行したデータ転送命令（Transp）については保留状態とするので、データ転送命令発行手段６０にはデータ転送命令をアクセプトした旨の通知がいかず、これから、データ転送命令発行手段６０は、次のデータ転送命令の発行の待ち状態に入る。
【００６２】
一方、実行命令決定手段６５は、
RTransBs＋Ｓp ＞MaxBs
という条件が成立しないことを判断する場合には、次に実行するデータ転送命令として、データ転送命令発行手段６０の発行したデータ転送命令（Transp）を決定する。
【００６３】
このときには、データ転送命令発行手段６０に対してデータ転送命令をアクセプトした旨が通知され、これから、データ転送命令発行手段６０は、次のデータ転送命令を発行することになる。
【００６４】
このように、実行命令決定手段６５は、マクロブロック処理用のデータ転送を優先することで効率的にマクロブロックの処理を進めながら、データ転送命令発行手段６０の発行したデータ転送命令（Transp）を選択すると、画像入力部１の持つバッファ１０がオーバーフローしてしまう場合には、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令（TransIn)を選択し、また、データ転送命令発行手段６０の発行したデータ転送命令（Transp）を選択すると、ビットストリーム出力部４の持つバッファ４０がアンダーフローしてしまうときには、ビットストリーム出力部４とメモリ５との間のデータ転送を司るデータ転送命令（TransBs)を選択するように処理するのである。
【００６５】
ここで、「RTransBs＋Ｓp ＞MaxBs 」の判断よりも「RTransIn＋Ｓp ＞MaxIn 」の判断を優先させるのは、画像入力部１の持つバッファ１０がオーバーフローして入力画像が失われると画質劣化に直結するのに対して、ビットストリーム出力部４の持つバッファ４０がアンダーフローすることにより出力できるビットストリームが無くなっても、ｎｕｌｌパケットを挿入することにより、ある程度回避可能であるからである。
【００６６】
これから、実行命令決定手段６５は、先ず最初に、「RTransIn＋Ｓp ＞MaxIn 」の判断を行い、続いて、「RTransBs＋Ｓp ＞MaxBs 」の判断を行うことで、次に実行するデータ転送命令を決定するのである。
【００６７】
実行命令決定手段６５が次に実行するデータ転送命令を決定すると、アドレス計算手段６６は、実行命令決定手段６５の決定したデータ転送命令を入力として、そのデータ転送命令の指定するアドレス計算を行い、メモリ５に対してそのアドレスを入力し、これを受けて、データ転送手段６７は、画像入力部１／フィルタ部２／符号化コア部３-i／ビットストリーム出力部４とメモリ５との間のデータ転送を実行する。
【００６８】
このようにして、本発明を具備するメモリ制御部６によれば、画像入力部１の持つバッファ１０のオーバーフローを回避できるようになるとともに、ビットストリーム出力部４の持つバッファ４０のアンダーフローを回避できるようになり、これにより、バッファ１０，４０の容量に必要以上の余裕を持たせる必要がなくなるので、バッファ１０，４０の容量を削減できるようになる。
【００６９】
そして、本発明を具備するメモリ制御部６によれば、フィルタ部２／符号化コア部３-iとメモリ５との間のデータ転送を司る命令を優先する形でデータ転送を実行することから、効率的にマクロブロックの処理を進めることができるようになる。
【００７０】
そして、本発明を具備するメモリ制御部６によれば、画像入力部１の持つバッファ１０がオーバーフローとなる直前までそのバッファ１０に画像データを入力するとともに、ビットストリーム出力部４の持つバッファ４０がアンダーフローとなる直前までそのバッファ４０から画像データを出力するというように処理することから、画像入力部１とメモリ５との間のデータ転送回数を削減できるようになるとともに、ビットストリーム出力部４とメモリ５との間のデータ転送回数を削減できるようになる。
【００７１】
上述したように、画像入力部１は、外部から与えられる画像データを入力する処理を行うことになるが、その他に、例えば、その入力した画像データの縮小画像データを作成してメモリ５に格納するというような処理を行うことがある。また、色画像を入力するときには、明度に関する画像データと輝度に関する画像データとを別々にメモリ５に入力する処理を行う。
【００７２】
これから、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令として、データ転送命令（TransIn'）と、データ転送命令（TransIn'')というように複数種類のデータ転送命令が存在することがある。なお、このようなときには別々のバッファ１０が用意されることになる。
【００７３】
このような場合には、図６に示すように、実行命令決定手段６５は、図５に示した手順と同様の手順を実行する実行処理１（全てのバッファにオーバフローやアンダフローが発生しないようにしつつ、マクロブロックの処理に係るデータ転送命令を優先する形でデータ転送命令を選択する処理）に従って、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令を選択するときに、実行処理２に示すように、この複数種類のデータ転送命令（TransIn'やTransIn'')を順番に選択していくように処理することになる。
【００７４】
ここで、このような場合には、図６に示すように、入出力実行間隔最大値管理手段６３には、それぞれのデータ転送間隔の最大値が管理されることになるとともに、入出力経過サイクル数計数手段６４は、それぞれのデータ転送命令の終了からの経過サイクル数を計数することになる。
【００７５】
図２では、一般的な説明を行うために、各符号化コア部３-iのデータ転送命令が異なるものとなることで説明したが、実際には、各符号化コア部３-iは同一の処理を実行することから、図７に示すように、符号化コア部３-1のデータ転送命令もTrans2,Trans3,Trans4であり、符号化コア部３-2のデータ転送命令もTrans2,Trans3,Trans4であり、・・・・・、符号化コア部３-Nのデータ転送命令もTrans2,Trans3,Trans4であるというように、各符号化コア部３-iのデータ転送命令は同一のものとなる。
【００７６】
この場合には、転送シーケンス保持用レジスタ６１は、図７に示すように、フィルタ部２とメモリ５との間のデータ転送を司るデータ転送命令（Trans1）と、この共通のデータ転送命令（Trans2,Trans3,Trans4）との羅列データについて保持すれば足りることになる。
【００７７】
すなわち、データ転送命令発行手段６０は、図８に示すように、データ転送命令（Trans1）を発行した後、データ転送命令（Trans2,Trans3,Trans4）を、「Trans2→Trans3→Trans4」という順番にＮ回繰り返して発行してから、再び、データ転送命令（Trans1）を発行していくことを繰り返していくという処理を行うことにより、転送シーケンス保持用レジスタ６１が「Trans1,Trans2,Trans3,Trans4 」という少ないデータ転送命令を保持すれば足りることを実現できるようになるからである。
【００７８】
この構成に従うと、転送シーケンス保持用レジスタ６１を小さなものにできるというメリットが得られる。
【００７９】
データ転送命令発行手段６０がこのようなデータ転送命令の発行形態を用いる場合には、アドレス計算手段６６は、データ転送命令発行手段６０での繰り返し数に応じてデータ転送毎のスライス番号とマクロブロック番号とを変更してアドレス計算を行うことになる。
【００８０】
図９に、本発明を具備する動画像符号化装置の他の実施形態例を図示する。
【００８１】
この実施形態例では、実行命令決定手段６５が次に実行するデータ転送命令としてデータ転送命令発行手段６０の発行したデータ転送命令（Transp）を決定するときにあって、そのデータ転送命令（Transp）が待ち状態にあるということが起こることを考慮して、そのような待ち状態により発生する無駄なオーバーヘッドを削減することを目的としている。
【００８２】
この実施形態例に従う場合、メモリ制御部６は、実行命令決定手段６５の決定したデータ転送命令を入力として、次に実行するデータ転送命令を最終決定する処理を行う実行命令最終決定手段６８を備えるという構成を採る。
【００８３】
この実行命令最終決定手段６８は、実行命令決定手段６５が次に実行するデータ転送命令としてデータ転送命令発行手段６０の発行したデータ転送命令（Transp）を決定するときにあって、そのデータ転送命令（Transp）が待ち状態にあるときには、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令（TransIn)か、ビットストリーム出力部４とメモリ５との間のデータ転送を司るデータ転送命令（TransBs)のいずれか一方を、次に実行するデータ転送命令として最終決定してアドレス計算手段６６に入力する処理を行う。
【００８４】
例えば、図１０に示すように、前回、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令（TransIn)を次に実行するデータ転送命令として最終決定した場合には、今回は、ビットストリーム出力部４とメモリ５との間のデータ転送を司るデータ転送命令（TransBs)を次に実行するデータ転送命令として最終決定し、逆に、前回、ビットストリーム出力部４とメモリ５との間のデータ転送を司るデータ転送命令（TransBs)を次に実行するデータ転送命令として最終決定した場合には、今回は、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令（TransIn)を次に実行するデータ転送命令として最終決定するのである。
【００８５】
あるいは、図１１に示すように、画像入力部１とメモリ５との間のデータ転送を司るデータ転送命令（TransIn)について、「MaxIn −RTransIn」を計算するとともに、ビットストリーム出力部４とメモリ５との間のデータ転送を司るデータ転送命令（TransBs)について、「MaxBs −RTransBs」を計算することで、どちらの方が余裕がないのかを判断して、その余裕のない方のデータ転送命令を次に実行するデータ転送命令として最終決定するのである。
【００８６】
この実行命令最終決定手段６８を備えることで、転送シーケンスの待ち状態により発生する無駄なオーバーヘッドを削減できるようになる。
【００８７】
図示実施形態例に従って本発明を説明したが、本発明はこれに限定されるものではない。例えば、実施形態例では、動画像符号化装置に適用した実施の形態に従って本発明を説明したが、本発明はその適用が動画像符号化装置に限られるものではない。
【００８８】
【発明の効果】
以上説明したように、本発明によれば、処理データを入力してメモリに書き込む入力部と、メモリに記憶される処理データに所定の処理を施す処理部と、メモリに記憶される処理の施された処理データを出力する出力部とを備える処理装置で用いられて、それらの各部とメモリとの間のデータ転送を制御するという構成を採るときにあって、入力部の持つバッファのオーバーフローの発生を大幅に回避できるようになるとともに、出力部の持つバッファのアンダーフローの発生を大幅に回避できるようになり、これにより、バッファの容量に必要以上の余裕を持たせる必要がなくなるので、バッファの容量を削減できるようになる。
【００８９】
そして、本発明によれば、処理部とメモリとの間のデータ転送を司るデータ転送命令を優先する形でデータ転送を実行することで、入力部の持つバッファがオーバーフローとなる直前までそのバッファに処理データを入力するとともに、出力部の持つバッファがアンダーフローとなる直前までそのバッファから処理データを出力するというように処理することから、入力部とメモリとの間のデータ転送回数を削減できるようになるとともに、出力部とメモリとの間のデータ転送回数を削減できるようになる。
【００９０】
そして、本発明によれば、処理部とメモリとの間のデータ転送を司るデータ転送命令が繰り返し発行される場合に、その転送シーケンスを指定するメモリ量を削減できるようになる。
【００９１】
そして、本発明によれば、処理部とメモリとの間のデータ転送を司るデータ転送命令の待ち状態により発生する無駄なオーバーヘッドを削減できるようになる。
【図面の簡単な説明】
【図１】本発明を具備する動画像符号化装置の一実施形態例である。
【図２】転送シーケンス保持用レジスタの保持する転送シーケンスの説明図である。
【図３】データ転送命令発行手段の実行処理の説明図である。
【図４】入出力経過サイクル数計数手段の実行処理の説明図である。
【図５】実行命令決定手段の実行処理の説明図である。
【図６】実行命令決定手段の実行処理の説明図である。
【図７】符号化コア部のデータ転送命令の説明図である。
【図８】データ転送命令発行手段の実行処理の説明図である。
【図９】本発明を具備する動画像符号化装置の他の実施形態例である。
【図１０】実行命令最終決定手段の実行処理の説明図である。
【図１１】実行命令最終決定手段の実行処理の説明図である。
【図１２】動画像符号化装置の装置構成の説明図である。
【図１３】従来の動画像符号化装置の処理の説明図である。
【符号の説明】
１    画像入力部
２    フィルタ部
３    符号化コア部
４    ビットストリーム出力部
５    メモリ
６    メモリ制御部
１０  バッファ
４０  バッファ
６０  データ転送命令発行手段
６１  転送シーケンス保持用レジスタ
６２  実行サイクル数管理手段
６３  入出力実行間隔最大値管理手段
６４  入出力経過サイクル数計数手段
６５  実行命令決定手段
６６  アドレス計算手段
６７  データ転送手段
【図１】
0004323174.tif 000002
【図２】
0004323174.tif 000003
【図３】
0004323174.tif 000004
【図４】
0004323174.tif 000005
【図５】
0004323174.tif 000006
【図６】
0004323174.tif 000007
【図７】
0004323174.tif 000008
【図８】
0004323174.tif 000009
【図９】
0004323174.tif 000010
【図１０】
0004323174.tif 000011
【図１１】
0004323174.tif 000012
【図１２】
0004323174.tif 000013
【図１３】
0004323174.tif 000014