(57)【要約】【課題】限られたリングバッファの容量を有効に活用して、複数のデータ処理モジュールにそれぞれ適切なデータ処理環境を設定する。【解決手段】複数のデータ処理モジュールＡ〜Ｅからなるモジュール部２２と、元画像データを保持する領域、元画像データ中間データを保持する複数のリングバッファ領域１〜４、及び最終画像データを保持する領域を設定したメモリ３０と、データ処理モジュールＡ〜Ｅ中でデータ処理効率が最も低いものを選定し、その選定結果に基づいて、すでにデータ処理を終えたリングバッファ領域（１）を、選定したデータ処理モジュールが使用しているリングバッファ領域（３）の拡張領域（３−２）として割り当てるアドレスコントローラ２４及びメモリコントローラ２９とを備える。【選択図】      図６
2019053498.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ処理モジュールと、
元データに対する上記複数のデータ処理モジュールによるそれぞれのデータ処理結果を中間データとして保持する複数のリングバッファ領域を設定したメモリと、
すでにデータ処理を終えたリングバッファ領域を、当該データ処理を終えたリングバッファ領域以外のリングバッファ領域の拡張領域として割り当てるアドレス制御手段と、
を備えるメモリ制御装置。
【請求項２】
上記アドレス制御手段は、すでにデータ処理を終えたリングバッファ領域を、当該データ処理を終えたリングバッファ領域以外のデータ処理中のリングバッファ領域の拡張領域として割り当てる、請求項１記載のメモリ制御装置。
【請求項３】
上記複数のデータ処理モジュール中でデータ処理効率が最も低いものを選定する選定手段をさらに備え、
上記アドレス制御手段は、上記選定手段での選定結果に基づき、すでにデータ処理を終えたリングバッファ領域を、選定したデータ処理モジュールが使用しているリングバッファ領域の拡張領域として割り当てる、
請求項１または２記載のメモリ制御装置。
【請求項４】
上記選定手段は、複数のデータ処理モジュールのデータ処理時間から、最も時間を要しているデータ処理モジュールを選定する、請求項３記載のメモリ制御装置。
【請求項５】
上記選定手段は、予め設定した上記データ処理モジュールの優先順位、データ処理モジュール個々の処理能力、及び各データ処理モジュールが処理するデータ量の少なくとも１つに基づいて、データ処理モジュールを選定する、請求項３記載のメモリ制御装置。
【請求項６】
上記メモリは、上記元データを保持する領域をさらに設定しており、
上記アドレス制御手段は、上記メモリの上記元データを保持する領域を複数に分割し、それら領域中ですでに読み出しを終えている領域をリングバッファの拡張領域として割り当てる、
請求項１乃至５いずれか記載のメモリ制御装置。
【請求項７】
複数のデータ処理モジュールと、元データに対する上記複数のデータ処理モジュールによるそれぞれのデータ処理結果を中間データとして保持する複数のリングバッファ領域を設定したメモリとを備える装置でのメモリ制御方法であって、
すでにデータ処理を終えたリングバッファ領域を、当該データ処理を終えたリングバッファ領域以外のリングバッファ領域の拡張領域として割り当てるアドレス制御工程を有するメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データなどの大容量データを取扱うシステム等に好適なメモリ制御装置及びメモリ制御方法に関する。
【背景技術】
【０００２】
比較的簡易な技術でリングバッファを構成し、該リングバッファを用いた処理を実現するための技術が提案されている。（例えば、特許文献１）
上記特許文献に記載された技術を含めて、データ処理量の多い、例えば画像データを取扱う装置において、リングバッファは、ワークメモリとなるＲＡＭを有効に使うため、中間的な画像データをより少ない領域の使用に止めるための手法として用いられている。
【０００３】
リングバッファは、使用するデータ量に関係なく、固定された一部のメモリ領域のみを使用するもので、領域を超えてしまう場合に、その先頭に戻るようにアドレス領域をコントロールすることで、一定の領域をリング状に循環して使用するため、リングバッファと呼称される。
【０００４】
このため、リングバッファへのデータ入力側とリングバッファからのデータ出力側の２つのデータ処理モジュールでデータ処理速度が異なる場合には、まだデータの読み出しが行なわれていない領域へのデータの上書きが行なわれる可能性、書き込みがされていない領域からのデータの読み出しがなされる可能性が現出する。  
このため、データ入力側のモジュールがデータ出力側のモジュールを制御するか、またはデータ出力側のモジュールが同入力側のモジュールを制御するかにより、未書き込み領域からのデータの読み出しを抑制し、あるいは読み出しが終わっていない領域への新規のデータ書き込みを抑制するように制御する。具体的には、制御するモジュールに対し、その情報と自身の処理終了ラインのアドレスとリングバッファのライン数とにより、ＲＡＭのアクセスの制御を実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−１７７６３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のデータ処理モジュールによるそれぞれのデータ処理結果を中間データとして保持する複数のリングバッファを使用して処理を行なう場合、メモリ容量の関係で、各リングバッファは必ずしも必要充分なサイズのメモリ領域を確保できるとは限らない。
【０００７】
リングバッファの領域サイズが小さい場合、  
（ｉ）処理自体が遅い場合には、処理が遅いために処理中の領域への上書きを防止するべく、上流側のモジュールによるデータの書き込みを停止させることになる。  
（ii）入力データが多く、出力データが少ない場合には、処理に必要なデータ量が多いので、処理中の領域への上書きを防止するべく、上流側のモジュールによるデータの書き込みを停止させることになる。  
等の理由により、結果としていずれも処理速度が低下する。
【０００８】
上記のように、複数のデータ処理モジュールによるそれぞれのデータ処理結果を中間データとして保持する複数のリングバッファを使用して処理を行なう回路においては、確保したリングバッファの領域サイズが必要充分なサイズではない場合、個々のデータ処理モジュールの処理速度が遅い場合や、処理すべきデータ量が多い場合などで、対処が困難となり、結果として回路全体の処理速度が低下する不具合を生じることがある。
【０００９】
本発明は上記のような実情に鑑みてなされたもので、その目的とするところは、限られたリングバッファの容量を有効に活用して、複数のデータ処理モジュールにそれぞれ適切なデータ処理環境を設定することが可能なメモリ制御装置及びメモリ制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の一態様は、複数のデータ処理モジュールと、元データに対する上記複数のデータ処理モジュールによるそれぞれのデータ処理結果を中間データとして保持する複数のリングバッファ領域を設定したメモリと、すでにデータ処理を終えたリングバッファ領域を、当該データ処理を終えたリングバッファ領域以外のリングバッファ領域の拡張領域として割り当てるアドレス制御手段と、を備える。
【発明の効果】
【００１１】
本発明によれば、限られたリングバッファの容量を有効に活用して、複数のデータ処理モジュールにそれぞれ適切なデータ処理環境を設定することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係るデータ処理装置全体の構成を示すブロック図。
【図２】同実施形態に係るアドレスコントローラ、メモリコントローラ、及びモジュール部間で送受される信号の関係を示す図。
【図３】同実施形態に係るアドレスコントローラ内の回路構成を示すブロック図。
【図４】同実施形態に係る図３のアドレス生成部（３６Ａ〜３６Ｊ）の回路構成を示すブロック図。
【図５】同実施形態に係る図３のクロックカウンタの回路構成を示すブロック図。
【図６】同実施形態に係る外部ＲＡＭ上で複数モジュールによるリングバッファを使用した処理内容を例示する図。
【図７】同実施形態に係るリングバッファのアドレス制御の遷移状態を示す図。
【図８】同実施形態に係る制御部によって制御されるモジュールＡでの読み出し動作の内容を示すタイミングチャート。
【図９】同実施形態に係るメモリコントローラが優先順位設定に従ってモジュールＡ〜Ｅを制御する過程を示すタイミングチャート。
【図１０】同実施形態に係るメモリコントローラが実行する、リングバッファ拡張設定時のアドレスの算出方法を示す図。
【図１１】同実施形態に係る外部ＲＡＭ上で複数モジュールによるリングバッファを使用した処理内容を例示する図。
【図１２】同実施形態に係る外部ＲＡＭ上で元画像領域を複数に分割してリングバッファの領域に対する拡張領域として使用する場合を例示する図。
【発明を実施するための形態】
【００１３】
以下、本発明を、デジタルカメラ等に用いられる、画像エンジン等とも呼称されるデータ処理装置２０に適用した場合の一実施形態について図面を参照して説明する。
【００１４】
図１は、主として１チップ化されたデータ処理装置２０の構成を示すブロック図である。データ処理装置２０内で、ＣＰＵデータバス２１を介して、例えばモジュールＡ〜モジュールＥからなるモジュール部２２、バスブリッジ２３、アドレスコントローラ２４、ＲＯＭ２５、ＲＡＭ２６、及びＣＰＵ２７が接続される。
【００１５】
ＣＰＵ２７は、ＲＯＭ２５からプログラムを読み出してＲＡＭ２６に展開した上で当該プログラムを実行することで、画像処理の実行を制御する。ＲＡＭ２６は、スタックなどの一時データデータの保存を行なう。画像処理を実行するモジュールとして、モジュール部２２を構成するモジュールＡ〜Ｅを設ける。
【００１６】
これらモジュール部２２及びバスブリッジ２３が、画像データバス２８、メモリコントローラ２９を介して、データ処理装置２０外部の画像データ保存用の外部ＲＡＭ３０と接続される。
【００１７】
モジュール部２２は、各種設定値により、上記外部ＲＡＭ３０からデータを入力し、画像処理を実行するもので、画像処理後のデータを外部ＲＡＭ３０へ格納する。
【００１８】
メモリコントローラ２９は、画像データバス２８と外部ＲＡＭ３０との間で、主として外部ＲＡＭ３０のデータの読み出し／書き込み時の制御を行なう。
【００１９】
アドレスコントローラ２４は、メモリコントローラ２９を介して、外部ＲＡＭ３０で読み出し／書き込みを行なう場合のアドレスを制御する。
【００２０】
ＣＰＵデータバス２１は、ＣＰＵ２７が各種設定値をモジュール部２２の各モジュールＡ〜Ｅに設定する際に使用されると共に、バスブリッジ２３を経由してＣＰＵ２７が上記外部ＲＡＭ３０へのデータの書き込み／読み出しを行なう際に使用される。
【００２１】
図２は、上記アドレスコントローラ２４とメモリコントローラ２９、及びモジュール部２２間で送受される信号の関係を示している。同図中、信号名の「ｒｄ」はモジュール部２２のデータ入力（ＲＡＭからのデータの読み出し）、「ｗｒ」はモジュール部２２のデータ出力（ＲＡＭへのデータの書き込み）、「ｓｔａｒｔ」は各ラインの処理開始信号、「ｒｅｑ」はメモリ使用リクエスト信号、「ａｃｋ」は許可信号、「ｄａｔａ」は入出力データを表す。
【００２２】
すなわち、アドレスコントローラ２４は、モジュール部２２に対して、データ入力のスタート信号「ｒｄ＿ｓｔａｒｔ」とデータ出力のスタート信号「ｗｒ＿ｓｔａｒｔ」を送出する一方で、メモリコントローラ２９に対して、データ入力のアドレス信号「ｒｄ＿ｓａｄｄｒｅｓｓ」とデータ出力のアドレス信号「ｗｒ＿ａｄｄｒｅｓｓ」を送出する。
【００２３】
メモリコントローラ２９は、モジュール部２２からデータ出力のリクエスト信号「ｒｄ＿ｒｅｑ」、データ入力のリクエスト信号「ｗｒ＿ｒｅｑ」及び入力データ「ｗｒ＿ｄａｔａ」を受け付ける。またメモリコントローラ２９は、モジュール部２２及びアドレスコントローラ２４に対して、データ出力の許可信号「ｒｄ＿ａｃｋ」、データ入力の許可信号「ｗｒ＿ａｃｋ」を出力すると共に、モジュール部２２のみに出力データ「ｒｄ＿ｄａｔａ」を出力する。
【００２４】
図３は、上記アドレスコントローラ２４内の構成を示すブロック図である。３１はレジスタであり、上記ＣＰＵ２７により設定される各バッファのスタートアドレス、ラインデータ量、ライン数、転送開始設定などを一時的に保持する。このレジスタ３１の保持出力を、セレクタ（Ａ〜Ｄ）３２Ａ〜３２Ｄ、元画像用のライン開始アドレス生成部３３、出力画像用のライン開始アドレス生成部３５、及び制御部３７へ出力する。
【００２５】
セレクタ３２Ａ〜３２Ｄは、それぞれレジスタ３１の保持値から必要な値を選択して、ライン開始アドレス生成部（１〜４）３４Ａ〜３４Ｄへ出力する。
【００２６】
ライン開始アドレス生成部３３は、レジスタ３１の保持値に基づいて、元画像用のライン単位の開始アドレスを生成し、生成した開始アドレスをｒｄアドレス生成部（Ａ）３６Ａへ出力する。
【００２７】
ライン開始アドレス生成部３４Ａ〜３４Ｄは、セレクタ３２Ａ〜３２Ｄで選択された値に基づいて、各モジュール部２２の各モジュールＡ〜Ｅ用のライン単位の開始アドレスを生成し、生成した開始アドレスをｗｒアドレス生成部（Ａ〜Ｄ）３６Ｂ、３６Ｄ，３６Ｆ、３６Ｈ、ｒｄアドレス生成部（Ｂ〜Ｅ）３６Ｃ，３６Ｅ，３６Ｇ，３６Ｉへ出力する。
【００２８】
ライン開始アドレス生成部３５は、レジスタ３１の保持値に基づいて、出力画像用のライン単位の開始アドレスを生成し、生成した開始アドレスをｗｒアドレス生成部（Ｅ）３６Ｊへ出力する。
【００２９】
ｒｄアドレス生成部３６Ａ、３６Ｃ、３６Ｅ、３６Ｇ、３６Ｉは、モジュール部２２の各モジュールＡ〜Ｅ用のｒｄアドレス（Ａ〜Ｅ）を生成してメモリコントローラ２９へ出力する。
【００３０】
ｗｒアドレス生成部３６Ｂ、３６Ｄ，３６Ｆ、３６Ｈ、３６Ｊは、モジュール部２２の各モジュールＡ〜Ｅ用のｗｒアドレス（Ａ〜Ｅ）を生成してメモリコントローラ２９へ出力する。
【００３１】
図４は、上記ｒｄアドレス生成部３６Ａ、３６Ｃ、３６Ｅ、３６Ｇ、３６Ｉ、及びｗｒアドレス生成部３６Ｂ、３６Ｄ，３６Ｆ、３６Ｈ、３６Ｊの各構成を示すブロック図である。
【００３２】
メモリコントローラ２９、ＣＰＵ２７、及び制御部３７から与えられる要求信号ａｃｋ、スタート信号ｓｔａｒｔ、動作クロックｃｌｏｃｋにより入出力するデータのサイズをカウントするサイズカウンタ４１のカウント値が加算部４２へ出力される。
【００３３】
加算部４２は、サイズカウンタ４１のカウント値と、前段のライン開始アドレス生成部３３、３４Ａ〜３４Ｄ、３５から与えられるライン開始アドレスとを加算し、その和を入出力のためのアドレス出力とする。
【００３４】
上記制御部３７は、上記レジスタ３１から与えられる値と各モジュールの許可信号ａｃｋとに応じて、各モジュールへの開始信号ｓｔａｒｔ、及び終了信号ｅｎｄ、各アドレス生成部３６Ａ〜３６Ｊへのロード信号ｌｏａｄ、及びイネーブル移行ｅｎ、各セレクタ３２Ａ〜３２Ｄの選択信号を出力すると共に、上記開始信号ｓｔａｒｔ、及び終了信号ｅｎｄをクロックカウンタ部３８へも出力する。
【００３５】
クロックカウンタ部３８は、８系統分の処理系統毎に動作中のクロックをカウントし、そのカウント値の最大値を保持して、ＭＡＸ値選定部３９へ出力する。ＭＡＸ値選定部３９は、クロックカウンタ３８から得られるクロック最大値中で最も大きい値となる処理系統を選定して、その選定結果を上記制御部３７へ出力する。
【００３６】
図５は、上記クロックカウンタ部３８を構成する８系統中の１系統の回路構成を抜き出して示すブロック図である。
【００３７】
イネーブル移行ｅｎと開始信号ｓｔａｒｔ、及び動作クロックｃｌｏｃｋがクロックカウンタ５１に入力され、クロックカウンタ５１が動作クロックｃｌｏｃｋをカウントとすることで、その処理系統におけるデータ転送量をカウントする。
【００３８】
このクロックカウンタ５１のカウント値をＭＡＸ値レジスタ５２が随時保持し、その保持値が上記ＭＡＸ値選定部３９に送られる。
【００３９】
次に上記実施形態の動作について説明する。  
図６（Ａ）は、外部ＲＡＭ３０において、元画像のデータ領域、リングバッファ１〜リングバッファ４に分割したリングバッファの領域、及び最終画像のデータ領域を設定し、モジュール部２２を構成する５つのモジュールＡ〜モジュール５により、元画像データを５つのモジュールＡ〜モジュール５により順次中間状態の画像データに変換した後に、最終画像のデータを得て記憶させる場合を例示している。
【００４０】
元画像、リングバッファ１〜リングバッファ４、及び最終画像それぞれに設定される内容は、スタートアドレス、ラインデータ量、及びライン数である。
【００４１】
例えば、図７（Ａ）に示すように外部ＲＡＭ３０上に元画像と各リングバッファ、最終画像を配置する。ここで元画像のスタートアドレスを「０ｘ１０００００００」、ラインデータ量を「０ｘ２００」、ライン数を「５６」ラインと設定している。
【００４２】
同様にリングバッファ１は、スタートアドレス「０ｘ１００００２００」、ラインデータ量「０ｘ２００」、ライン数「２４」ラインとして設定される。リングバッファ２は、スタートアドレス「０ｘ１０００６２００」、ラインデータ量「０ｘ２００」、ライン数「１６」ライとして設定される。リングバッファ３は、スタートアドレス「０ｘ１０００ａ２００」、ラインデータ量「０ｘ２００」、ライン数「２４」ラインとして設定される。リングバッファ４は、スタートアドレス「０ｘ１００１０２００」、ラインデータ量「０ｘ２００」、ライン数「１６」ラインとして設定される。
【００４３】
最終画像は、スタートアドレス「０ｘ１００１００００」、ラインデータ量「０ｘ２００」、ライン数「１６」ラインとして設定される。
【００４４】
また、各モジュールＡ〜モジュールＥで処理する画像サイズの設定を行なう。これは、モジュールの処理終了を検知するための処理である。
【００４５】
各種設定後、転送開始設定により転送動作を開始する。転送開始時のラインスタートアドレスは、設定されたバッファのスタートアドレスである。
【００４６】
アドレスコントローラ２４内において、まず制御部３７は、各モジュールＡ〜モジュールＥにスタート信号ｒｄ＿ｓｔａｒｔ、ｗｒ＿ｓｔａｒｔを送出する。
【００４７】
アドレス上の最上流に位置するモジュールＡが、それより上流側にモジュールが存在しないために、まずデータ入力を開始し、リクエスト信号ｒｄ＿ｒｅｑを出力して元画像のデータの読み出し動作を実行する。
【００４８】
図８は、このとき制御部３７によって制御される動作内容を例示するものである。図８（Ａ）が動作クロックｃｌｏｃｋ、図８（Ｂ）が読み出しのスタート信号ｒｄ＿ｓｔａｒｔを示す。このスタート信号により、図８（Ｇ）に示すようにクロックカウンタ部３８内の各クロックカウンタ５１のカウント値ｓｉｚｅ＿ｃｔがリセットされて「０」とされる。
【００４９】
以後、図８（Ｅ）に示す読み出しの許可信号ｒｄ＿ａｃｔが入力される毎に（その立下りタイミングで）、順次カウントアップする。ラインデータ量（図中のｘ）となった時点で、カウント値を「０」とすると共に、図８（Ｆ）に示すようにエンド信号ｒｄ＿ｅｎｄを出力し、次ラインの開始アドレスである、現在のスタートアドレスと「０ｘ４００」との和を算出する。この次ラインの開始アドレスとサイズカウンタ４１のカウント値とを加算し、その和を読み出しアドレスの信号ｒｄ＿ｓａｄｄｒｅｓｓとしてメモリコントローラ２９へ出力する。
【００５０】
スタート信号ｒｄ＿ｓｔａｒｔの入力時には、サイズカウンタ４１のカウント値が「０」であるので、ライン開始アドレスがそのまま信号ｒｄ＿ｓａｄｄｒｅｓｓとして出力される。
【００５１】
同様に、各リクエスト信号ｒｅｑ、許可信号ａｃｋによって、各読み出しのアドレス信号ｒｄ＿ｓａｄｄｒｅｓｓ、書き込みのアドレス信号ｗｒ＿ａｄｄｒｅｓｓを生成する。
【００５２】
図８（Ｇ）に示すクロックカウンタ部３８のクロックカウンタ５１のカウント値ｃｌｋ＿ｃｔは、読み出しのスタート信号ｒｄ＿ｓｔａｒｔによりリセットされて「０」となり、読み出しのエンド信号ｒｄ＿ｅｎｄのタイミングに応じてＭＡＸ値レジスタ５２に読み出されて、ＭＡＸ値レジスタ５２の値と比較される。
【００５３】
ここでＭＡＸ値レジスタ５２の値より、クロックカウンタ５１のカウント値の方が大きい場合には、ＭＡＸ値レジスタ５２の保持値が更新されて、クロックカウンタ５１のカウント値が新たなＭＡＸ値レジスタ５２の保持値となる。
【００５４】
なお転送開始時にはモジュールＡでの転送開始時には、このＭＡＸ値レジスタ５２の値は「０」であり、転送開始以後の許可信号ａｃｋの状況や、モジュールＡの演算処理性能、転送するデータ量に応じてクロックカウンタ５１でのカウント値ｃｌｋ＿ｃｔが随時大きくなる。
【００５５】
メモリコントローラ２９は、モジュール部２２から与えられるリクエスト信号ｒｄ＿ｒｅｑ、ｗｒ＿ｒｅｑの状況、及び各モジュールに事前に割り当てられた優先順位設定に従って許可信号ａｃｋをモジュール部２２内の適切な各モジュールに順次出力する。
【００５６】
図９は、メモリコントローラ２９が優先順位設定に従ってモジュール部２２のモジュールＡ〜モジュールＥを制御する過程を例示するタイミングチャートである。ここでは、上流側のモジュールＡが最も優先順位が高く、下流側のモジュールＥが最も優先順位が低い、「優先順位：Ａ＞Ｂ＞Ｃ＞Ｄ＞Ｅ」であるものとして説明を行なう。
【００５７】
メモリコントローラ２９は、優先順位設定に従ってリクエスト信号ｒｅｑを送ってきたモジュール中から１つを選択し、許可信号ａｃｋ及びアドレスを選択して、上記のように外部ＲＡＭ３０に対してデータ処理を実行する。
【００５８】
その後、上流より処理後のデータを処理することから、上流側から順に処理が終了していく。すなわち、まず元画像のデータを処理するモジュールＡから処理が終了する。元画像のデータをそのまま再利用し、あるいは元画像の領域に最終画像を上書きする用途等が存在する可能性もあるので、元画像の領域をリングバッファとして使用するかどうかを設定できるものとしても良い。本実施形態では、説明を簡略化するべく、そのような設定は行なわないものとする。
【００５９】
次には、モジュールＡによるリングバッファ１の領域を使用しての処理が終了する。こうしてモジュールＡの処理の終了を検知した制御部３７は、クロックカウンタ部３８の各クロックカウンタ５１の値から、ＭＡＸ値選定部３９により最大値となる入出力経路を選定する。
【００６０】
この選定結果が、例えば上記図６（Ａ）で示した状態でのモジュールＤの読み出しｒｄ側であった場合、メモリコントローラ２９はリングバッファ３での処理速度が低下しているものとして、このリングバッファ３の拡張を行なうものとする。
【００６１】
図１０は、このときメモリコントローラ２９が実行する、リングバッファ拡張設定時のアドレスの算出方法を示す図である。同図においては、８ビットを「○」で示す１画素（１ｐｉｘ）で表現し、１アドレス（３２ビット）を４画素で表現している。
【００６２】
ラインの開始アドレスは、終了アドレスと連続するとは限らないため、現在のライン開始アドレスに、上記図７で示した１ライン使用量「０ｘ４００」を加算することで、図１０中の矢印ＸＡで示すように求めるものとする。
【００６３】
リングバッファの最終ラインの次のラインを計算を行なう場合、従来の技術であれば、図１０中の矢印ＸＢで示すように現在のリングバッファ内の先頭アドレスを使用することとなる。
【００６４】
しかしながら、本実施形態においては、リングバッファの拡張を行なうものとして、現在の最終ラインの次のラインを計算を行なう際に、図１０中の矢印ＸＣで示すように拡張先のリングバッファ内の先頭アドレスを使用する。これは、当該リングバッファに対する書き込みｗｒと読み出しｒｄ双方のアドレス計算を行なうことで実現する。
【００６５】
図６（Ｂ）は、処理を終えたリングバッファ１を、リングバッファ３の拡張領域であるリングバッファ３−２として使用する場合の概念を例示している。
【００６６】
図７（Ｂ）は、このときの外部ＲＡＭ３０での領域配置を示す。リングバッファ３での処理終了後、矢印VIIＡで示すように元のリングバッファ１の領域をリングバッファ３−２となる拡張領域として使用して、その開始アドレスから処理を開始させる。そして、リングバッファ３−２の領域での処理終了後、矢印VIIＢに示すように、リングバッファ３の領域の開始アドレスを使用してリングバッファ３に移行する。
【００６７】
その後、さらに処理が進んでモジュールＣでの処理が終了すると、残りのクロックカウンタ部３８でのクロックカウンタのカウント値中の最大値をＭＡＸ値選定部３９で選定させる。
【００６８】
図１１（Ａ）は、モジュールＥでの読み出し側で時間がかかっている場合を例示している。この場合、上記図６（Ｂ）で示した場合と同様に、図１１図（Ｂ）に示すようにメモリコントローラ２９は処理を終えたリングバッファ２を、リングバッファ４の拡張領域であるリングバッファ４−２として使用する。
【００６９】
図７（Ｃ）は、この場合の外部ＲＡＭ３０での領域配置を示す。リングバッファ４での処理終了後、矢印VIIＣで示すように元のリングバッファ２の領域をリングバッファ４−２となる拡張領域として使用して、その開始アドレスから処理を開始させる。そして、リングバッファ４−２の領域での処理終了後、矢印VIIＤに示すように、リングバッファ４の領域の開始アドレスを使用してリングバッファ４に移行する。
【００７０】
また、当初にリングバッファとして設定した複数の領域内で、処理を終えた領域を拡張領域として使用するのに限らず、リングバッファで処理を行なう元のデータ、本実施形態では元画像のデータ、を保持する領域を含めて、リングバッファの階調領域として使用するように制御するものとしてもよい。
【００７１】
図１２は、元画像のデータを保持する領域を複数に分割し、分割した複数の領域をそれぞれリングバッファの領域に対する拡張領域として使用する場合を例示する図である。
【００７２】
図１２（Ａ）は、外部ＲＡＭ３０において、元画像のデータ領域、リングバッファ１〜リングバッファ４に分割したリングバッファの領域、及び最終画像のデータ領域を設定し、モジュール部２２を構成する５つのモジュールＡ〜モジュール５により、元画像データを５つのモジュールＡ〜モジュール５により順次中間状態の画像データに変換した後に、最終画像のデータを得て記憶させる場合を例示している。
【００７３】
図１２（Ｂ）は、元画像のデータの読み出し処理を終えた後での外部ＲＡＭ３０の領域配置を示す。
【００７４】
ここで元画像のデータ領域を３等分し、読み出しを終えた元画像データの始めの１／３の領域を、リングバッファ２の拡張領域であるリングバッファ２−２として使用する。
【００７５】
その後、さらに読み出しを終えた元画像データの中央の１／３の領域を、リングバッファ３の拡張領域であるリングバッファ３−２として使用する。
【００７６】
そして、最後に読み出しを終えた元画像データの終わりの１／３の領域を、リングバッファ４の拡張領域であるリングバッファ４−２として使用する。
【００７７】
このように元画像のデータ領域を分割してリングバッファの拡張領域として使用させる場合、分割数に応じてリングバッファの開始アドレスを計算して求めるようにする。
【００７８】
なお上記実施形態では、モジュール部２２を構成する複数のデータ処理モジュールが、時間的に連続して処理を行なう場合について説明したが、複数のデータ処理モジュールが連続しておらず、個別に外部ＲＡＭ３０に対して処理を行なう場合であっても、それらの処理状況に応じて、処理を終えたリングバッファの領域、及び元のデータが保持される領域を、リングバッファの拡張領域として使用できるようにしても良い。
【００７９】
また上記実施形態では、すでにデータ処理を終えたリングバッファ領域を、複数のデータ処理モジュール中でデータ処理効率が最も低いデータ処理モジュールが使用しているリングバッファ領域の拡張領域として割り当てるようにしたが、すでにデータ処理を終えたリングバッファ領域を、当該データ処理を終えたリングバッファ領域以外のリングバッファ領域の拡張領域として割り当てるようにしても良い。
【００８０】
その際、当該データ処理を終えたリングバッファ領域以外のリングバッファ領域がデータ処理中か否かを判断し、データ処理中のリングバッファ領域の拡張領域として割り当てるようにしても良い。
【００８１】
以上詳述した如く本実施形態によれば、限られたリングバッファの容量を有効に活用して、複数のデータ処理モジュールにそれぞれ適切なデータ処理環境を設定することが可能となる。
【００８２】
また上記実施形態では、複数のデータ処理モジュール毎にその処理時間をカウントして最もカウント値が大きいモジュールの処理系統を、リングバッファの領域の拡張が必要な処理系統であるものとして選定することで、選定に関する回路構成を簡易化することができる。
【００８３】
なお上記実施形態では、複数のデータ処理モジュールに優先順位を設定し、その優先順位の高いものから順にリングバッファの領域の拡張の判断を行なう場合について説明したが、これに加えて、各データ処理モジュールの処理能力が異なる場合の個々の処理能力や、その時点で各データ処理モジュールが処理しているデータ量等を考慮した上で総合的にリングバッファの領域を拡張する処理系統を選定するものとしても良い。
【００８４】
これにより、その時点の状況により柔軟に対応して、全体の処理を迅速に実行することができる。
【００８５】
また上記実施形態では、リングバッファとして設定した分割領域内のみならず、元の画像データを保持した領域を複数に分割して、読み出し処理を終えた領域をリングバッファの拡張領域として割り当てるような設定の可能であるものとしたので、外部ＲＡＭ３０の記憶容量をより有効に活用して、全体の処理を迅速に実行することができる。
【００８６】
なお上記実施形態は、元のフォーマットの画像データをリングバッファにより中間的な画像データに変換した後に、最終的なフォーマットの画像データに変換する場合について説明したが、本発明は取扱うデータの種類やフォーマット等を限定するものではない。
【００８７】
その他、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は適宜組み合わせて実施してもよく、その場合組み合わせた効果が得られる。更に、上記実施形態には種々の発明が含まれており、開示される複数の構成要件から選択された組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、課題が解決でき、効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００８８】
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。  
［請求項１］  
複数のデータ処理モジュールと、  
元データに対する上記複数のデータ処理モジュールによるそれぞれのデータ処理結果を中間データとして保持する複数のリングバッファ領域を設定したメモリと、  
すでにデータ処理を終えたリングバッファ領域を、当該データ処理を終えたリングバッファ領域以外のリングバッファ領域の拡張領域として割り当てるアドレス制御手段と、  
を備えるメモリ制御装置。  
［請求項２］  
上記アドレス制御手段は、すでにデータ処理を終えたリングバッファ領域を、当該データ処理を終えたリングバッファ領域以外のデータ処理中のリングバッファ領域の拡張領域として割り当てる、請求項１記載のメモリ制御装置。  
［請求項３］  
上記複数のデータ処理モジュール中でデータ処理効率が最も低いものを選定する選定手段をさらに備え、  
上記アドレス制御手段は、上記選定手段での選定結果に基づき、すでにデータ処理を終えたリングバッファ領域を、選定したデータ処理モジュールが使用しているリングバッファ領域の拡張領域として割り当てる、  
請求項１または２記載のメモリ制御装置。  
［請求項４］  
上記選定手段は、複数のデータ処理モジュールのデータ処理時間から、最も時間を要しているデータ処理モジュールを選定する、請求項３記載のメモリ制御装置。  
［請求項５］  
上記選定手段は、予め設定した上記データ処理モジュールの優先順位、データ処理モジュール個々の処理能力、及び各データ処理モジュールが処理するデータ量の少なくとも１つに基づいて、データ処理モジュールを選定する、請求項３記載のメモリ制御装置。  
［請求項６］  
上記メモリは、上記元データを保持する領域をさらに設定しており、  
上記アドレス制御手段は、上記メモリの上記元データを保持する領域を複数に分割し、それら領域中ですでに読み出しを終えている領域をリングバッファの拡張領域として割り当てる、  
請求項１乃至５いずれか記載のメモリ制御装置。  
［請求項７］  
複数のデータ処理モジュールと、元データに対する上記複数のデータ処理モジュールによるそれぞれのデータ処理結果を中間データとして保持する複数のリングバッファ領域を設定したメモリとを備える装置でのメモリ制御方法であって、  
すでにデータ処理を終えたリングバッファ領域を、当該データ処理を終えたリングバッファ領域以外のリングバッファ領域の拡張領域として割り当てるアドレス制御工程を有するメモリ制御方法。
【符号の説明】
【００８９】
２０…データ処理装置（画像エンジンチップ）
２１…ＣＰＵデータバス
２２…モジュール部
２３…バスブリッジ
２４…アドレスコントローラ
２５…ＲＯＭ
２６…ＲＡＭ
２７…ＣＰＵ
２８…画像データバス
２９…メモリコントローラ
３０…外部ＲＡＭ
３１…レジスタ
３２…セレクタ
３３…ライン開始アドレス生成部（元画像）
３４…ライン開始アドレス生成部（１〜４）
３５…ライン開始アドレス生成部（出力画像）
３６Ａ〜３６Ｊ…アドレス生成部（Ａ〜Ｅ）
３７…制御部３７
３８…クロックカウンタ部
３９…ＭＡＸ値選定部
４１…サイズカウンタ
４２…加算部
５１…クロックカウンタ
５２…ＭＡＸ値レジスタ
【図１】
2019053498.tif 000003
【図２】
2019053498.tif 000004
【図３】
2019053498.tif 000005
【図４】
2019053498.tif 000006
【図５】
2019053498.tif 000007
【図６】
2019053498.tif 000008
【図７】
2019053498.tif 000009
【図８】
2019053498.tif 000010
【図９】
2019053498.tif 000011
【図１０】
2019053498.tif 000012
【図１１】
2019053498.tif 000013
【図１２】
2019053498.tif 000014