(57)【要約】【課題】入力バッファに読み込まれるが画像処理には用いられない無駄データの量を、入力データを保持する入力バッファのサイズを固定とする場合よりも少なくする。【解決手段】最適バンクサイズ算出部は、処理対象のオブジェクトに対応する画像データのサイズを、例えばバウンディングボックスの情報から計算する（Ｓ１０）。そのサイズがバンクの上限サイズ以下であれば、そのサイズを最適バンクサイズとする（Ｓ１４）。そのサイズが上限サイズを超えている場合（Ｓ１２がＮｏ）、バンクサイズを上限サイズからバースト長ずつ減らしていき、オブジェクトのサイズが割り切れるバンクサイズが得られれば、そのバンクサイズを最適バンクサイズとする（Ｓ２２）。割り切れるバンクサイズが得られなかった場合、ダミーデータが最小サイズとなるバンクサイズを最適バンクサイズとする（Ｓ３０）。【選択図】図５
2015076735.tif 000002
【特許請求の範囲】
【請求項１】
入力バッファと、
外部から入力され前記入力バッファに保持された入力データを用いて画像処理を実行する画像処理回路と、
処理対象の画像オブジェクトに対応するデータのサイズを取得する取得手段と、
前記入力バッファのうち前記画像オブジェクトに対応するデータの保持に使用する部分の最適サイズを、前記取得手段が取得したサイズに基づき算出する算出手段と、
前記入力バッファに対し、外部から、前記画像オブジェクトに対応する前記入力データとして前記最適サイズずつのデータを読み込むよう制御する読み込み制御手段と、
を有する画像処理装置。
【請求項２】
前記算出手段は、前記入力バッファの使用サイズを単位サイズずつ変えた場合において、前記画像オブジェクトに対応するデータのサイズをその使用サイズで割った余りが最小となる場合の使用サイズを、前記画像オブジェクトに対応する前記入力バッファの最適サイズとする、ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記算出手段は、前記余りが最小となる前記使用サイズが複数ある場合、それら複数のうち最大のものを前記最適サイズに決定する、ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記算出手段は、前記画像オブジェクトに対応するデータのサイズが前記入力バッファの上限サイズ以下である場合に、当該画像オブジェクトに対応するデータのサイズを前記最適サイズに決定する、ことを特徴とする請求項１に記載の画像処理装置。
【請求項５】
コンピュータを、
処理対象の画像オブジェクトに対応するデータのサイズを取得する取得手段、
画像処理回路に対する入力データを保持する入力バッファのうち前記画像オブジェクトに対応するデータの保持に使用する部分の最適サイズを、前記取得手段が取得したサイズに基づき算出する算出手段、
前記入力バッファに対し、外部から、前記画像オブジェクトに対応する前記入力データとして前記最適サイズずつのデータを読み込むよう制御する読み込み制御手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及びプログラムに関する。
【背景技術】
【０００２】
例えばページ記述言語等で記述された印刷データからプリンタに供給するラスター画像データを生成する印刷データ生成システムでは、その生成処理のうちハードウエア処理に適した部分をハードウエアの画像処理装置（ハードウエアアクセラレータとも呼ばれる）として実装する例がよくある。この種のシステムでは、印刷データ生成システムのＣＰＵがソフトウエア処理により生成したデータを、ハードウエアアクセラレータである画像処理装置の入力バッファに読み込む。入力バッファに読み込まれた入力データは、画像処理装置内の画像処理のための回路に読み込まれ、処理される。回路による処理結果のデータは、出力バッファに保持され、出力バッファから、下流側の処理を行うソフトウエアへと供給される。
【０００３】
従来のこの種の画像処理装置では、入力バッファや出力バッファのサイズは固定であった。
【０００４】
一方、画像処理装置が行う画像処理の中には、画像オブジェク単位の処理がある。例えば、ディスプレイリスト等の中間言語データで表現された画像オブジェクトを、下地画像の上にラスタライズ（ラスター画像として描画する処理）する処理がその一例である。この処理では、下地画像のうち画像オブジェクトに対応する部分のデータを入力バッファに読み込む。画像処理のための回路は、その画像オブジェクトの中間言語データをラスタライズし、ラスタライズ結果の各画素の値を、入力バッファから読み込んだ下地画像の対応画素の値と例えば掛け合わせる（オーバープリントの場合）。
【０００５】
画像処理装置は、入力バッファにいったんバッファサイズ分のデータを読み込んでから画像処理を行うので、処理対象の画像オブジェクトのサイズがバッファサイズに合っていないと、処理の対象でない無駄なデータをバッファに読み込むことになる。無駄なデータの読み込みが多いと、その読み込みに要する時間だけ、画像処理の所要時間が無駄に長くなることとなる。
【０００６】
画像処理装置におけるバッファの制御に関する従来技術として、特許文献１に示された技術が知られている。
【０００７】
特許文献１には、メモリから読み出した画像データを画像処理し、画像処理結果をメモリに記憶するまでの時間を短縮するために、出力バッファの状態に応じて入力バッファを制御する技術が開示されている。この技術では、複数の出力用ライン・メモリのいずれかにデータ入力待ち状態、データ入力状態またはデータ出力状態のいずれでも無い空き状態のものがあると、入力バッファのいずれかの入力用ライン・メモリからの出力が許可される。出力用ライン・メモリには空き状態のものが存在する確立が高く、入力用ライン・メモリから画像データを出力する出力待ち状態の時間を短縮できる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−２０５１７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
画像オブジェクト毎に画像処理を行う画像処理装置において、入力バッファに読み込まれるが画像処理には用いられない無駄データの量を、入力データを保持する入力バッファのサイズを固定とする場合よりも少なくすることを目的とする。
【課題を解決するための手段】
【００１０】
請求項１に係る発明は、入力バッファと、外部から入力され前記入力バッファに保持された入力データを用いて画像処理を実行する画像処理回路と、処理対象の画像オブジェクトに対応するデータのサイズを取得する取得手段と、前記入力バッファのうち前記画像オブジェクトに対応するデータの保持に使用する部分の最適サイズを、前記取得手段が取得したサイズに基づき算出する算出手段と、前記入力バッファに対し、外部から、前記画像オブジェクトに対応する前記入力データとして前記最適サイズずつのデータを読み込むよう制御する読み込み制御手段と、を有する画像処理装置である。
【００１１】
請求項２に係る発明は、前記算出手段は、前記入力バッファの使用サイズを単位サイズずつ変えた場合において、前記画像オブジェクトに対応するデータのサイズをその使用サイズで割った余りが最小となる場合の使用サイズを、前記画像オブジェクトに対応する前記入力バッファの最適サイズとする、ことを特徴とする請求項１に記載の画像処理装置である。
【００１２】
請求項３に係る発明は、前記算出手段は、前記余りが最小となる前記使用サイズが複数ある場合、それら複数のうち最大のものを前記最適サイズに決定する、ことを特徴とする請求項２に記載の画像処理装置である。
【００１３】
請求項４に係る発明は、前記算出手段は、前記画像オブジェクトに対応するデータのサイズが前記入力バッファの上限サイズ以下である場合に、当該画像オブジェクトに対応するデータのサイズを前記最適サイズに決定する、ことを特徴とする請求項１に記載の画像処理装置である。
【００１４】
請求項５に係る発明は、コンピュータを、処理対象の画像オブジェクトに対応するデータのサイズを取得する取得手段、画像処理回路に対する入力データを保持する入力バッファのうち前記画像オブジェクトに対応するデータの保持に使用する部分の最適サイズを、前記取得手段が取得したサイズに基づき算出する算出手段、前記入力バッファに対し、外部から、前記画像オブジェクトに対応する前記入力データとして前記最適サイズずつのデータを読み込むよう制御する読み込み制御手段、として機能させるためのプログラムである。
【発明の効果】
【００１５】
請求項１、２、４及び５に係る発明によれば、入力バッファに読み込まれるが画像処理には用いられない無駄データの量を、入力データを保持する入力バッファのサイズを固定とする場合よりも少なくすることができる。
【００１６】
請求項３に係る発明によれば、この発明を用いない場合よりも、同じ画像オブジェクトに対応するデータを前記最適サイズずつ前記入力バッファに読み込む回数が少なくなり、読み込みのリクエストの処理の時間が少なくなる分だけ、そのデータ全部を読み込むのに要する時間が少なくなる。
【図面の簡単な説明】
【００１７】
【図１】オブジェクトのサイズがバンクサイズよりも小さい場合のダミーデータを説明するための図である。
【図２】オブジェクトのサイズがバンクサイズよりも大きい場合のダミーデータを説明するための図である。
【図３】オブジェクトとバウンディングボックスとの関係を説明するための図である。
【図４】実施形態の画像処理装置の機能構成の例を示す図である。
【図５】最適バンクサイズ算出部の処理手順の一例を示す図である。
【図６】実施形態の最適バンクサイズ算出を用いた場合の、画像データの読み込み時間の短縮効果を説明するための図である。
【発明を実施するための形態】
【００１８】
まず、図１〜図３を参照して、従来方式（バッファサイズ固定）の問題点を説明する。以下では、画像処理装置がラスター画像データをオブジェクト単位で読み込み、処理する場合を代表例にとって説明する。
【００１９】
例えば中間データ形式で表現されたページの印刷データを、プリンタが取り扱い可能なラスター形式の画像データに変換（ラスタライズ）する場合、ページの印刷データ内でのオブジェクトの出現順に各オブジェクトをラスタライズしていく。これにより、重なり順が下のオブジェクトから順にラスタライズされていくことになる。このようなラスタライズをハードウエア回路で実現する場合、オブジェクト同士が重なる場合を考慮すると、その回路は、まずラスタライズ対象のオブジェクトの下地となる部分のラスター画像をページメモリから読み出し、その下地のラスター画像上にその対象オブジェクトのラスタライズ結果を書き込み、その書き込み結果のラスター画像をページメモリに書き戻すという処理を行うことになる。この書き戻しの後のページメモリ上の画像は、次のオブジェクトにとっての下地の画像となる。このような処理を１ページ中の先頭のオブジェクトから順にオブジェクトごとに繰り返すことで、１ページのラスター画像が形成される。
【００２０】
なお、中間データ形式とは、ページ記述言語とラスター形式の中間の粒度で画像を表現するデータ形式であり、ディスプレイリストなどがその一例である。中間データ形式は、一般に、ハードウエア回路での処理に適している。中間データ形式の画像データにおけるオブジェクトは、一般にページ記述言語データにおけるオブジェクトを複数に分割したものであり、中間データ形式でのオブジェクトはページ記述言語データでのオブジェクトよりも小さい単位となっている。
【００２１】
このようなラスタライズ処理をハードウエア回路にて実行する画像処理装置は、例えば、ページ記述言語形式の印刷データをラスター画像データへと変換するコンピュータに、ハードウエアアクセラレータとして接続される。すなわち、この例では、コンピュータがソフトウエア処理によりページ記述言語形式の印刷データを中間データ形式へと変換し、変換結果の中間データ形式の印刷データを、ハードウエアアクセラレータである画像処理装置がラスター形式へと変換する。この場合、画像処理装置は、コンピュータのメインメモリ上に保持された中間データ形式の印刷データを受け取り、この印刷データをオブジェクト毎にラスタライズし、そのラスタライズ結果を同じメインメモリ上に確保されたページメモリ領域に書き込んでいく。ここで、オブジェクト同士が重なる場合があるので、ラスタライズ処理では、上述のように、オブジェクト毎に、下地画像をページメモリ領域から読み込み、その下地画像上にオブジェクトのラスタライズ結果を画素毎に書き込んでいくことになる。
【００２２】
このため、画像処理装置は、内蔵する入力バッファに、ラスタライズ対象のオブジェクトの下地となる部分の画像をページメモリから読み込む。そして、そのオブジェクトをラスタライズして得られる各画素の値を、その入力バッファから読み出した下地画像内の対応画素の値と組み合わせる（例えば後者に対し前者を上書き、あるいは前者と後者を乗算など）ことで、そのオブジェクトのラスタライズ結果を反映したラスター画像を得る。この画像処理装置によるラスタライズ処理の結果の画像は、画像処理装置内に内蔵される出力バッファに書き込まれる。あるオブジェクトについてのラスタライズ処理が完了すると、出力バッファ内に保持されたラスター画像データが、上位のコンピュータが管理するページメモリ領域へと書き戻される。
【００２３】
ここで、この種の画像処理装置では、入力バッファや出力バッファをそれぞれダブルバッファとして構成し、両者をピンポン動作させることで、バッファへの書き込みに要する時間を隠蔽することが行われている。以下では、ダブルバッファを構成する２つのバッファのことを「バンク」とも呼ぶ。ピンポン動作では、ダブルバッファの２つのバンクの一方から読み出しを行っている間に他方に書き込みを行う。このようなピンポン動作を行う場合、一方のバンクに対して容量一杯まで書き込んだ後でないと、書き込み先を他方のバンクへと切り換えることができない。
【００２４】
このような画像処理装置において、従来、入力バッファや出力バッファのサイズ（データ容量）は固定であった。このため、対象となるオブジェクトのサイズがバッファのサイズと異なる場合などには、バッファ容量一杯まで下地画像を読み込むと、そのオブジェクトの画素が絶対に存在しない範囲の画像も読み込むことになり、この読み込みに要する時間は実質上無駄な時間となる。
【００２５】
例えば、図１及び図２には、バッファのサイズ（バンクサイズ）が４Ｋ（キロ）バイトである場合において、ラスタライズ対象となるオブジェクト（以下「対象オブジェクト」と呼ぶ）のサイズが４Ｋより小さい場合（図１）と、４Ｋより大きい場合（図２）とのそれぞれについて、無駄が生じる場合を示している。
【００２６】
図１の例では、対象オブジェクトは幅が１ライン（走査線）あたり１００バイトで高さが３ラインであり、そのオブジェクトのサイズは３００バイトである。なお、オブジェクトのサイズは、そのオブジェクトのバウンディングボックスのサイズと等しいものとする。なお、図３に示すように、オブジェクト１０のバウンディングボックス１２は、走査線に平行な辺と垂直な辺からなる、そのオブジェクト１０を内包する最小の矩形のことである。ページ記述言語形式や中間データ形式の印刷データは、一般にオブジェクトを表すデータの一部として、バウンディングボックスの情報（例えばその矩形の左上隅及び右下隅の頂点の座標）を含んでいる。
【００２７】
図１の例では、４Ｋバイトのバンクに対し、ページメモリから、対象オブジェクトのバウンディングボックスの範囲に該当する３００バイトの下地画像を読み込む（バッファに対してはＷｒｉｔｅ（書き込み）処理）が、４Ｋバイトのバンクを一杯にするには、更にその範囲の外側の画像を３７９６バイト余計に読み込む必要がある。バウンディングボックスの外側の画像は、オブジェクトと絶対に重ならないので、ラスタライズにおいては全く不要なデータである。このような処理に不要なデータを、ダミーデータと呼ぶことにする。
【００２８】
ここで、メインメモリから画像形成装置のバッファへのデータの転送速度が１クロックあたり８バイトであり、クロック周波数が２００ＭＨｚであるとすると、４Ｋバイトのバンクを一杯にするのに要する時間は４０９６バイト÷８バイト×５ｎｓ（ナノ秒）＝２．５６μｓ（マイクロ秒）である。一方、３７９６バイトのダミーデータを読み込むのに要する時間は、３７９６バイト÷８バイト×５ｎｓ（ナノ秒）＝２．３７μｓである。
【００２９】
バッファに対して４Ｋバイトの下地画像（うち３７９６バイトはダミーデータ）が書き込まれた（Ｗｒｉｔｅされた）後、そのバッファが読み出し（Ｒｅａｄ）対象に切り替わる。
【００３０】
仮に、このような３００バイト程度のサイズのオブジェクトが１ページ内に１００００個あったとする（中間データ形式では、オブジェクトの粒度がページ記述言語の場合よりもはるかに小さいので、１ページ中に１００００個程度のオブジェクトが含まれる場合は少なくない）。この場合、１ページ分のラスタライズを行う際にダミーデータの読み込みに使われる時間は、２．３７μｓ×１００００、すなわち約２４ｍｓ（ミリ秒）である。一方、仮に毎分２０００ページの印刷を行う場合を考えると、１ページあたりの印刷所要時間は３３．３ｍｓである。したがって、前述した１ページ中のダミーデータの読み込み時間２４ｍｓは、１ページあたりの印刷所要時間３３．３ｍｓのうちの７３％に上ることとなる。
【００３１】
図２の例では、対象オブジェクトのサイズは２０４８バイト（＝２Ｋバイト）×３ライン＝６１４４バイト（６Ｋバイト）である。この場合、図示のように、ダブルバッファの一方のバンクに、そのオブジェクトに対応する６Ｋバイトの下地画像のうち２ライン分（２Ｋバイト×２）を書き込んだ後、そのバンクから１ライン目及び２ライン目を読み出して処理すると共にもう一方のバンクにそのオブジェクトの３ライン目及びダミーデータ（２Ｋバイト分）を書き込む。そして、その書き込みが終わると、それまで書き込んでいたバンクから３ライン目を読み出して処理を行う。この場合、２Ｋバイトのダミーデータの書き込みに要する時間は２０４８バイト÷８バイト×５ｎｓ＝１．２８μｓである。したがって、このようなオブジェクトが１００００個含まれるページの場合、１ページあたり約１２ｍｓの時間がダミーデータの読み込みに使われていることとなる。この１２ｍｓは、１ページの印刷所要時間３３．３ｍｓのうちの３６％に相当する。
【００３２】
図２に示したように、オブジェクトのサイズがバンクのサイズより大きい場合、オブジェクトに対応するデータを何回かに分けてバンクに入れていくことになるが、そのうちの最後の回は、そのデータではバンクが一杯にならない。そこで、バンクの空いた部分にダミーデータが入れられることになる。
【００３３】
上述したダミーデータを読み込む時間は、画像処理装置が行う画像処理にとっては全くの無駄な時間であり、そのような無駄な時間はできるだけ少ない方が望ましい。
【００３４】
以上、バッファサイズが固定であることによる問題を、入力バッファを代表例にとって説明したが、出力バッファも同様の問題を有する。
【００３５】
そこで、本実施形態では、対象オブジェクト毎にそのオブジェクトのサイズに応じた最適なバンクサイズを計算し、対象オブジェクトを処理する際には、バンクの物理的な最大容量のうちそのオブジェクトに応じた最適バンクサイズの部分のみを使用する。オブジェクトに対応する「最適バンクサイズ」は、そのオブジェクトの大きさに対応するデータ量のデータをメモリとバンクとの間で転送する際に、その転送に要する時間が最も短くなる時のバンクのサイズのことである。この実施形態では、ダミーデータの量が最小となるバンクサイズのうち、最も大きいサイズを最適バンクサイズとして求める。ダミーサイズが小さいほど、無駄なデータの転送が少ないので効率がよい。ダミーデータの量が最小となるバンクサイズのうち、最も大きいサイズを最適バンクサイズとするのは、同じデータ量のデータを書き込む（あるいは読み出す）のなら、バンクサイズが大きいほどその書き込み（又は読み出し）の回数が少なくなるからである。バッファへの書き込み（又は読み出し）のためには、データ転送のためのバス使用権の獲得などの準備を行う必要があり、その準備のためにある程度の時間を要するので、ダミーデータの量が同じなら、その準備の回数が少ないほど、オブジェクト全体の処理に要する時間が短くなる。
【００３６】
図４に、本実施形態の画像処理装置１００の機能構成の一例を示す。
【００３７】
図４において、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）２００は、画像処理装置１００が接続されるコンピュータのメインメモリである。一例としてＳＤＲＡＭを挙げたが、メインメモリはＳＤＲＡＭ以外の方式のメモリであってもよい。
【００３８】
ＤＲＡＭコントローラ１０２は、ＳＤＲＡＭ２００との間の読み書きを制御する装置である。ＤＲＡＭコントローラ１０２は、ＳＤＲＡＭ２００に対するアクセス（読み出し又は書き込み）のために、ＳＤＲＡＭ２００及びＤＲＡＭコントローラ１０２が接続されているバスの使用権を取得するアービタ機能を有している。ＤＲＡＭコントローラ１０２は、ＳＤＲＡＭ２００と入力バッファ１１０及び出力バッファ１３０との間で、データのバースト転送を実行する機能を有する。
【００３９】
ＤＲＡＭ読出アドレス生成部１０４は、ＳＤＲＡＭ２００からデータを読み出す際の読出アドレスの情報を生成する。本実施形態では、ＳＤＲＡＭ２００内のページメモリ領域から、対象オブジェクトに対応する最小限の下地画像から読み出す。このため、ＤＲＡＭ読出アドレス生成部１０４は、その対象オブジェクトのバウンディングボックスの位置及びサイズの情報から、読出アドレスの情報、例えば読み出す先頭のアドレス及び読み出すデータの量（この量はバウンディングボックスのサイズに対応）を求める。
【００４０】
読出リクエスト部１０６は、ＤＲＡＭ読出アドレス生成部１０４が生成した読出アドレスの情報をもとに、ＤＲＡＭコントローラ１０２に対して、バンクサイズ単位で読出リクエストを発行する。ＤＲＡＭコントローラ１０２は、ＳＤＲＡＭ２００から、その読出リクエストに示されたアドレス及びサイズのデータを読み出し、入力バッファ１１０に転送する。
【００４１】
ここで、本実施形態では、バンクサイズをオブジェクトのサイズに応じて制御する。すなわち、読出リクエスト部１０６は、最適バンクサイズ算出部１５０が求めた最適バンクサイズ毎に読出リクエストを発行する。
【００４２】
バッファ書込カウンタ１０８は、入力バッファ１１０の各バンク１１２ａ、１１２ｂに対してＳＤＲＡＭ２００から書き込まれたデータ量をカウントする。バッファ読出カウンタ１１４は、入力バッファ１１０の各バンク１１２ａ、１１２ｂから処理回路１２０に読み出されたデータの量をカウントする。
【００４３】
入力バッファ１１０は、ＳＤＲＡＭ２００から読み込まれた処理回路１２０の処理対象となるデータ（この例では下地画像）を保持するバッファである。この例では、入力バッファ１１０は、２つのバンク１１２ａ、１１２ｂからなるダブルバッファ構成である。図１は、第１のバンク１１２ａに対してＳＤＲＡＭ２００からデータの書き込みが行われ、第２のバンク１１２ｂから処理回路１２０にデータの供給が行われている時点の状態を示している。ピンポン動作により読み書きの対象となるバンクが切り換えられると、これに応じてバッファ書込カウンタ１０８とバッファ読出カウンタ１１４のカウント対象も切り換えられる。
【００４４】
処理回路１２０は、画像処理装置１００が担う画像処理を実行するハードウエア回路である。この例では、処理回路１２０は、オブジェクトのラスタライズ処理を実行する。処理回路１２０の処理結果は、出力バッファ１３０のうちの書込対象のバンク１３２ａ又は１３２ｂに書き込まれる。
【００４５】
出力バッファ１３０は、処理回路１２０の処理結果のデータ（この例では下地画像上に対象オブジェクトをラスタライズすることで得られる画像）を保持するバッファである。この例では、出力バッファ１３０も、２つのバンク１３２ａ、１３２ｂからなるダブルバッファとして構成されている。図１は、第２のバンク１３２ｂに対して処理回路１２０からデータの書き込みが行われ、第１のバンク１３２ａからＳＤＲＡＭ２００に対してデータの書き戻しが行われている時点の状態を示している。
【００４６】
バッファ書込カウンタ１３４は、出力バッファ１３０の各バンク１３２ａ、１３２ｂに対して処理回路１２０から書き込まれたデータ量をカウントする。バッファ読出カウンタ１３６は、入力バッファ１１０の各バンク１３２ａ、１３２ｂから読み出されＳＤＲＡＭ１００に書き戻されたデータの量をカウントする。
【００４７】
ＤＲＡＭ書込アドレス生成部１３８は、出力バッファ１３０からＳＤＲＡＭ２００へデータを書き込む際の書込アドレスの情報を生成する。この実施形態では、ＳＤＲＡＭ２００内のページメモリ領域から読み出した下地画像上に、処理回路１２０にて対象オブジェクトのラスタライズ結果を書き込み、その書込結果の画像データをページメモリ領域上のその下地画像が元々あった場所に書き戻す。したがって、ＤＲＡＭ書込アドレス生成部１３８が生成する書込アドレスの情報は、同じ対象オブジェクトについてＤＲＡＭ読出アドレス生成部１０４が生成する読出アドレスの情報と同じ内容となる。
【００４８】
書込リクエスト部１４０は、ＤＲＡＭ書込アドレス生成部１３８が生成した書込アドレスの情報をもとに、ＤＲＡＭコントローラ１０２に対して、バンクサイズ単位で書込リクエストを発行する。ＤＲＡＭコントローラ１０２は、出力バッファ１３０の読出対象のバンクからその書き込みリクエストに示されたサイズのデータを読み出し、そのデータをＳＤＲＡＭ２００内のその書込リクエストに示されたアドレスに書き込む。
【００４９】
なお、書込リクエスト部１４０は、読出リクエスト部１０６と同様、最適バンクサイズ算出部１５０が求めた最適バンクサイズ毎に書込リクエストを発行する。
【００５０】
本実施形態の画像処理装置１００は、以上に説明した構成に加え、最適バンクサイズ算出部１５０を有している。最適バンクサイズ算出部１５０は、入力バッファ１１０及び出力バッファ１３０のバンクのうち、対象オブジェクトの処理のために実際に使用する部分のサイズ（すなわち「最適バンクサイズ」）を算出する。最適バンクサイズは、オブジェクト毎に計算する。最適バンクサイズ算出部１５０は、ページのラスタライズ処理に先立って画像処理装置１００内のメモリに読み込まれている当該ページのオブジェクトデータ１６０から、対象オブジェクトのサイズ情報を読み出し、このサイズ情報を用いて最適バンクサイズを求める。なお、このオブジェクトデータ１６０は、処理回路１２０により先頭から順に１オブジェクトずつ読み出され、ラスタライズされ、下地画像に対して書き込まれる。
【００５１】
図５に、最適バンクサイズ算出部１５０が実行する処理手順の一例を示す。
【００５２】
この手順では、まず、オブジェクトデータ１６０から、次の対象オブジェクトのサイズ情報を求める（Ｓ１０）。オブジェクトデータ１６０には、各オブジェクトのバウンディングボックスの例えば左上隅と右下隅の頂点の座標（例えば画素を単位として表したもの）の情報が含まれているので、この情報からバウンディングボックスの縦横の画素数を求め、この縦横の画素数と１画素あたりのデータ量からそのバウンディングボックスのデータサイズを求めることができる。
【００５３】
次に最適バンクサイズ算出部１５０は、Ｓ１０で求めたオブジェクトサイズと、バンクの上限サイズとを比較し、前者が後者以下であるかどうかを判定する（Ｓ１２）。バンクの上限サイズは、入力バッファ１１０及び出力バッファ１３０の個々のバンク１１２ａ、１１２ｂ、１３２ａ、１３２ｂが取り得る上限のデータ容量、すなわち個々のバンクの物理的な最大容量のことである。すなわち、本実施形態では、画像処理装置１００内に設けられたバンクの物理的な全容量のうちの全部又は一部の容量を個々のオブジェクトの処理の際に使用するが、そのバンクの全容量がＳ１２でいう上限サイズである。それらバンク１１２ａ、１１２ｂ、１３２ａ、１３２ｂの上限サイズは等しい。
【００５４】
Ｓ１２にてオブジェクトサイズがバンクの上限サイズ以下であることがわかった場合は、最適バンクサイズ算出部１５０は、そのオブジェクトサイズを最適バンクサイズに決定する（Ｓ１４）。
【００５５】
Ｓ１２にてオブジェクトサイズがバンクの上限サイズより大きいことがわかった場合は、最適バンクサイズ算出部１５０は、現在のバンクサイズを表す変数「カレントバンクサイズ」にバンクの上限サイズを設定する（Ｓ１６）。そして、オブジェクトサイズをカレントバンクサイズで割り算し（Ｓ１８）、割り切れるかどうかを判定する（Ｓ２０）。Ｓ２０にて割り切れることがわかった場合、最適バンクサイズ算出部１５０は、そのカレントバンクサイズを最適バンクサイズに決定する（Ｓ２２）。一方、Ｓ２０にて割り切れないことがわかった場合には、最適バンクサイズ算出部１５０は、Ｓ１８の割り算の結果の余り（剰余）を、そのカレントバンクサイズに対応づけて記憶する（Ｓ２４）。この余りが、ダミーデータのサイズである。すなわち、オブジェクトに対応するデータをそのカレントバンクサイズずつ複数回（Ｓ１８の割り算の結果が）に分けてバンクに入れていく場合、最後の回には、そのデータの一部に加え、その余りの量のダミーデータがバンクに入れられることになる。例えばＳ１８の割り算の商がｎ、余りがｍバイトである場合、オブジェクトのデータの転送はｎ＋１回に分けて行われ、そのうちの最初からｎ回目まではオブジェクトの処理に用いる有効なデータがバンクに入れられ、最後のｎ＋１回目にはｍバイトのダミーデータがバンクに入れられる。
【００５６】
次に最適バンクサイズ算出部１５０は、カレントバンクサイズをバースト長１つ分だけ減らす（Ｓ２６）。ここでバースト長とは、ＳＤＲＡＭ２００と入力バッファ１１０又は出力バッファ１３０との間でのバースト転送の際の１サイクルあたりの転送データ量のことである。カレントバンクサイズを１バースト長だけ減らすと、カレントバンクサイズのバンクを一杯にするのに要する時間が１サイクル短くなる。バースト長は、ＤＲＡＭコントローラ１０２で管理しているので、ＤＲＡＭコントローラ１０２から取得すればよい。
【００５７】
Ｓ２６の後、最適バンクサイズ算出部１５０は、カレントバンクサイズが下限値以下になったかどうかを判定する（Ｓ２８）。カレントバンクサイズの下限値は、例えば０であってもよいし、０より大きい値であってもよい。下限値が０の場合においてＳ２８の判定結果がＹｅｓとなると、その判定の直前のカレントバンクサイズは１バースト長である。この場合、カレントバンクサイズが上限サイズから１バースト長になるまで１バースト長刻みでカレントバンクサイズを減らしつつ、オブジェクトサイズがカレントバンクサイズで割りきれるかの判定（Ｓ２０）を行ったことになる。
【００５８】
また、下限値としての適切な値を実験やシミュレーションで求めてもよい。最適バンクサイズを小さくするほど、一般にダミーサイズは小さくなる（ダミーサイズはバンクサイズ未満だから）ため無駄なデータの転送時間が減るが、その反面、ＳＤＲＡＭ２００に対する読出リクエストや書込リクエストの発行回数が増え、それらリクエストの処理のための時間が増大する。このトレードオフの関係において、これ以上最適バンクサイズを減らすと、ダミーデータの減少による転送時間の短縮効果が、リクエストの回数増大による処理時間の増大により打ち消されてしまうという限界点を、実験等により求める。この限界点は、ＳＤＲＡＭ２００の性能、バスの転送周波数、転送時のバースト長などといった様々な環境要因の組合せにより変わるので、１つのシステム（ＳＤＲＡＭ２００と画像処理装置１００をバスで接続したシステム）を設計すると、そのシステムについて実験等により求める。そして、その限界点のサイズから１バースト長分減算した値を、Ｓ２８で用いる下限値とすればよい。
【００５９】
Ｓ２８でカレントバンクサイズが下限値より大きいことがわかった場合、最適バンクサイズ算出部１５０は、Ｓ１８に戻り同様の処理を繰り返す。Ｓ２８でカレントバンクサイズが下限値以下になったことがわかった場合、最適バンクサイズ算出部１５０は、それまでに記憶した、カレントバンクサイズとダミーデータのサイズとのペアの中から、ダミーデータの量が最小のカレントバンクサイズを特定し、特定したカレントバンクサイズを最適バンクサイズに決定する（Ｓ３０）。ダミーデータの量が最小のカレントバンクサイズが複数存在する場合には、そのうちで最も大きいカレントバンクサイズを最適バンクサイズに決定する。
【００６０】
以上のようにして、Ｓ１４、Ｓ２２又はＳ３０にて最適バンクサイズが決定されると、当該オブジェクトについての最適バンクサイズ決定処理を終了する。
【００６１】
最適バンクサイズ算出部１５０は、このようにして求めた最適バンクサイズを、読出リクエスト部１０６、書込リクエスト部１４０、バッファ書込カウンタ１０８及び１３４、並びに、バッファ読出カウンタ１１４及び１３６に供給する。読出リクエスト部１０６及び書込リクエスト部１４０は、その最適バンクサイズ毎に、読出又は書込のためのリクエストを生成する。バッファ書込カウンタ１０８及び１３４は、書込対象のバンク１１２ａ、１１２ｂ、１３２ａ、又は１３２ｂに対して書き込まれたデータ量が最適バンクサイズに達する毎に、その書込対象のバンクへのデータの書き込みを停止し、書込対象のバンクと読出対象のバンクの切り換えを可能とする。同様に、バッファ読出カウンタ１１４及び１３６は、読出対象のバンク１１２ａ、１１２ｂ、１３２ａ、又は１３２ｂから読み出されたデータ量が最適バンクサイズに達する毎に、その読出対象のバンクからのデータの読出を停止し、書込対象のバンクと読出対象のバンクの切り換えを可能とする。１つのバッファ１１０又は１３０内の書込対象のバンクへの書込が終了し、読出対象のバンクからの読出が終了すると、書込対象と読出対象のバンクを切り換える。
【００６２】
この実施形態の方式によれば、例えばバンクの上限サイズが４Ｋバイトである場合において、サイズが６Ｋバイトのオブジェクトを処理する場合、図６の（ｂ）に示すように、最適バンクサイズが３Ｋバイト（＝３０９６バイト）となる。この場合、そのオブジェクトに対応する６Ｋバイトの下地画像のデータが、３Ｋバイトずつ２回に分けて入力バッファ１１０のバンク１１２ａ及び１１２ｂに順に書き込まれ、ダミーデータは生じない。一方のバンク１１２ａへの３Ｋバイトのデータの書込が完了した時点で、書込対象がもう一方のバックへと切り換えられると共に、それまで書き込んでいたバンクからのデータの読出が開始される。バンクへの書込の速度と読出の速度が等しいとし、その他の条件を図２の例と同様とすると、そのオブジェクトのラスタライズのために下地画像を入力バッファ１１０に読み込み、読み込んだ下地画像をその入力バッファ１１０からすべて読み出すまでに要する時間は図示の通り５．８２μｓとなる。
【００６３】
これに対し、図２の例のように、バンクサイズを４Ｋバイト固定とすると、図６の（ａ）に示すように、１Ｋバイトのダミーデータをバンクに読み込む必要がある。この場合、オブジェクトに対応する６Ｋバイトの下地画像を入力バッファ１１０にいったん読み込んでから、すべて読み出す（そして処理する）までに要する時間は、図示の通り、７．６８μｓとなる。
【００６４】
図６の（ａ）と（ｂ）を比較すると、本実施形態の方式の方が、そのオブジェクトを処理するのに要する時間がバンクサイズが４Ｋバイト固定の場合より１．８６μｓ短くて済むことがわかる（処理回路１２０はハードウエア回路であり、入力バッファ１１０からデータを読み出すと同時にそのデータがその回路で処理されるので、処理に要する時間はデータを読み出す時間と等しい）。したがって、同様のオブジェクトが１ページ内に仮に１００００個ある場合、そのページを処理するのに要する時間は、本実施形態の方がバンクサイズが４Ｋバイト固定の場合より約１９ｍｓ短くなる。前述の通り１ページあたりの処理時間が３３．３ｍｓであるとすると、約１９ｍｓの短縮は、１ページの処理時間の約５７％の短縮に相当する。
【００６５】
以上に説明した最適バンクサイズ算出部１５０は、例えば、画像処理装置１００が備えるプロセッサ（図示省略）が、その最適バンクサイズ算出部１５０の処理を記述したプログラムを実行することにより実現される。ハードウエア回路である処理回路１２０があるオブジェクトについてのラスタライズ処理を実行している間に、プロセッサが、そのオブジェクトの次あるいはその後のオブジェクトについての最適バンクサイズを計算することで、最適バンクサイズの計算に要する時間が隠蔽される。
【００６６】
例えば、画像処理装置１００を、特開２００９−３７６５号公報に紹介されたＤＡＰ・ＤＮＡアーキテクチャ等の、動的再構成可能プロセッサ（ＤＲＰ：Dynamic Reconfigurable Processor）を用いて構成することも可能である。この場合、処理回路１２０は、ＤＮＡ（Distributed Network Architecture）と呼ばれる、構成を動的に変更可能なＰＥ（プロセッサエレメント）のマトリックスを用いて構成する。また、入力バッファ１１０、出力バッファ１３０、バッファ書込カウンタ１０８及び１３４、バッファ読出カウンタ１１４及び１３６、オブジェクトデータ１６０を保持するメインメモリ、プログラムや設定値等を保持する不揮発性メモリ等は、固定のハードウエア回路としてＤＲＰに内蔵される。そして、最適バンクサイズ算出部１５０は、不揮発性メモリに記憶されたプログラムを、ＤＡＰ（Digital Application Processor）と呼ばれるプロセッサにより実行することにより実現される。なお、ＤＡＰ・ＤＮＡアーキテクチャはあくまで一例に過ぎない。
【００６７】
以上の例では、入力バッファ１１０及び出力バッファ１３０の両方のバンクサイズをオブジェクトのサイズに合わせて制御したが、それら両者のうち一方のみを制御するようにしてもよい。
【００６８】
以上の説明では、オブジェクトをラスタライズして下地のラスター画像上に書き込む処理を例にとったが、本実施形態の最適バンクサイズの決定方式は、そのような応用例に限定されるものではない。例えば、画像に対して平均値フィルタやエッジ強調フィルタなどのフィルタ処理を施す場合などにおいて、適用するフィルタの種類やフィルタのパラメータをオブジェクトの種類毎に切り換える場合にも、オブジェクト毎の画像データをバンク（バッファ）に入れる必要がある。このような場合にも、本実施形態の方式を用いて、最適バンクサイズを求めることができる。
【符号の説明】
【００６９】
１００  画像処理装置、１０２  ＤＲＡＭコントローラ、１０４  読出アドレス生成部、１０６  読出リクエスト部、１０８  バッファ書込カウンタ、１１０  入力バッファ、１１２ａ，１１２ｂ，１３２ａ，１３２ｂ  バンク、１１４  バッファ読出カウンタ、１２０  処理回路、１３０  出力バッファ、１３４  バッファ書込カウンタ、１３６  バッファ読出カウンタ、１３８  ＤＲＡＭ書込アドレス生成部、１４０  書込リクエスト部、１５０  最適バンクサイズ算出部、１６０  オブジェクトデータ、２００  ＳＤＲＡＭ。
【図１】
2015076735.tif 000003
【図２】
2015076735.tif 000004
【図３】
2015076735.tif 000005
【図４】
2015076735.tif 000006
【図５】
2015076735.tif 000007
【図６】
2015076735.tif 000008