(58)【調査した分野】(Int.Cl.,DB名)
前記コマンド生成手段は、前記画像データに表された複数のオブジェクトのうち、前記画像メモリに対して同一の描画処理が行われ描画順番が連続する複数のオブジェクトを、継続して前記画像メモリに描画するよう前記描画処理手段に指示するための前記コマンドを生成する、
ことを特徴とする請求項1に記載の画像処理装置。
描画処理を実行する回路を前記描画処理手段に実現させるための回路構成情報を生成し、前記回路構成情報に基づき前記描画処理手段に回路を構成する制御手段を更に有し、
前記制御手段は、前記コマンドに従い、同一の描画処理が行われる複数のオブジェクトの描画処理が連続する場合、前記描画処理手段の回路を変更せずに、継続して描画処理を前記描画処理手段に実行させる、
ことを特徴とする請求項1又は請求項2に記載の画像処理装置。
同一の描画処理が行われる複数のオブジェクトの描画順番が連続しない場合、前記制御手段は、当該複数のオブジェクトのそれぞれの描画処理を実行する回路を前記描画処理手段に実現させるための複数の回路構成情報を主記憶手段上で生成し、描画順番に従い、前記複数の回路構成情報のそれぞれを、順次、前記主記憶手段から前記待機用記憶手段にロードし、前記待機用記憶手段から前記実行用記憶手段にロードすることで、前記実行用記憶手段に記憶された回路構成情報を描画順番に従って変更して前記描画処理手段の回路を変更し、同一の描画処理が行われる複数のオブジェクトの描画順番が連続する場合、前記制御手段は、前記実行用記憶手段に記憶された回路構成情報を変更せずに、前記実行用記憶手段に記憶された回路構成情報に基づき前記描画処理手段に回路を構成する、
ことを特徴とする請求項4に記載の画像処理装置。
【発明を実施するための形態】
【0021】
図1に、本発明の実施形態に係るシステムの一例を示す。本システムは、画像処理装置100と、画像メモリ130と、印刷装置140とを含む。画像処理装置100は、中間データ生成部110と描画処理部120とを含む。
【0022】
例えば、ページ記述言語(PDL:Page Description Language)で記述された画像データが、コンピュータ等の装置から画像処理装置100に提供される。ページ記述言語は、印刷処理やディスプレイ表示処理等を情報処理装置に実行させるためのコンピュータプログラミング言語である。ページ記述言語で記述された画像データは、印刷対象の画像を構成する文字や図形等のオブジェクトの位置情報、書式情報及び色情報等を含む。
【0023】
中間データ生成部110はコマンドデコーダであり、画像データを解釈することで、印刷対象の画像が中間言語で記述された中間データを生成し、出力する。中間データは、最終的に印刷装置140に出力される描画データに変換される前段階のデータであり、描画データの生成の手順を表すコマンドを含む。中間データの具体例として、例えばディスプレイリスト(DL)があるが、本発明はこの例に限定されるものではない。中間データは、印刷対象の画像の構成要素であるオブジェクトのそれぞれについて、当該オブジェクトを描画する手順を表す描画コマンドを含む。具体的には、中間データは、ページ内におけるオブジェクトの位置を示す位置情報、そのオブジェクトの描画順番(描画コマンドの実行順番)、そのオブジェクトの大きさを示すサイズ情報、そのオブジェクトの描画内容(例えばイメージや図形や文字等)を示す描画情報、及び、そのオブジェクトの色(例えばオブジェクトを何色で塗りつぶすか等)を示す色情報等を含む。例えば、あるページの中間データは、当該ページを構成する各オブジェクトの描画手順を表すコマンドの集合であると捉えられる。
【0024】
また、中間データ生成部110は、画像データを解釈し、実行される描画処理が同一であり描画順番が連続する複数のオブジェクトを、継続して画像メモリ130に書き込むよう描画処理部120に指示するための新たな中間データ(コマンド)を生成する。なお、中間データ生成部110はコマンド生成手段の一例に相当する。
【0025】
描画処理部120(ラスタライザ)は、例えばRIP(Raster Image Processor)である。描画処理部120は、中間データ生成部110から中間データを取得し、当該中間データに従って、印刷装置140に適合し印刷装置140で取り扱われる描画データを生成する。描画データは、例えば印刷画像を構成する画素毎の情報(画素値)を含むラスタデータであり、一例としてビットマップデータ等である。描画処理部120は、画像メモリ130(フレームメモリ)にアクセスして描画データを画像メモリ130に書き込むことで、描画データを画像メモリ130に記憶させる。例えば、描画処理部120は、中間データが示す描画順番(実行順番)に従い、各オブジェクトを順番に画像メモリ130に書き込む。また、実行される描画処理が同一である複数のオブジェクトの描画順番が連続する場合、描画処理部120は、当該複数のオブジェクトを継続して画像メモリ130に書き込む(オブジェクト連続処理)。この場合、異なるオブジェクトが継続して画像メモリ130に書き込まれることになる。
【0026】
印刷装置140は、描画データによって表される画像を用紙等の記録媒体に印刷する。例えば、1ページ分の描画データが画像メモリ130に書き込まれると、この描画データは印刷装置140に出力され、描画データによって表される画像が印刷装置140によって記録媒体に印刷される。
【0027】
上述した画像処理装置100では、例えばDRP(Dynamic Reconfigurable Processor:動的再構成可能プロセッサ)によって処理が実行される。
【0028】
図2に、DRPを用いて処理を行うシステムの一例を示す。このシステムは、一例として、メインCPU(中央演算装置)1と、メインメモリ2と、CPUバス−PCIブリッジ3と、DRPアクセラレータ4と、これらを接続するための内部バス50とを含む。DRPアクセラレータ4は、例えば複数のDRPシステム5とPCIスイッチ6とを含む。PCIスイッチ6には、複数のDRPシステム5が接続されている。DRPシステム5は、DRP10とDDRメモリ40とを含む。DDRメモリ40には、DRP10を制御するためのデータやプログラム等が記憶される。
【0029】
図3に、画像処理装置100のハードウェア構成の一例を示す。
図3に示す例では、画像処理装置100は、DRP10によって構成される。
【0030】
DRP10は、内部の論理回路の構成を動的に変更(再構成)可能なプロセッサである。DRP10は、一例として、特開2009−3765号公報に開示されているDAP・DNAアーキテクチャのプロセッサであるが、本発明はこの例に限定されるものではなく、他の回路で構成されてもよい。以下、
図3を参照してDRP10の一例を説明する。
【0031】
DRP10は、DAP(Digital Application Processor)と称される再構成制御部12(RISCコアモジュール)と、DNA(Distributed Network Architecture)と称される再構成可能回路部14(ダイナミックコンフィギュラブルデータフローアクセラレータ)とを含む。DRP10は、再構成制御部12及び再構成可能回路部14に加え、再構成可能回路部14のダイレクト入出力用のインタフェース16と、PCIインタフェース18と、SDRAMインタフェース20と、DMAコントローラ22と、その他の周辺デバイス24と、これらを接続するための内部バス(高速スイッチングバス)26とを含む。再構成制御部12は、デバッグインタフェース12aと、RISCコア12bと、命令キャッシュ12cと、データキャッシュ12dとを含む。再構成可能回路部14は、PEマトリックス14aと、コンフィギュレーションメモリ14bとを含む。PEマトリックス14aには、複数の処理エレメントPE(論理回路要素)が2次元に配置されている。一例として、376個の処理エレメントPEが、PEマトリックス14aに配置されている。コンフィギュレーションメモリ14bには、コンフィギュレーションデータ14cが格納されている。コンフィギュレーションデータ14cは、PEマトリックス14aに含まれる処理エレメントPEの機能及び/又は接続を変えてPEマトリックス14aを再構成し、PEマトリックス14aに回路を構成するためのデータである。
【0032】
再構成制御部12は、再構成可能回路部14を含むDRP10全体の動作制御を行うモジュールであり、例えば、制御のためのプログラムを実行することで実現される。再構成制御部12は、PEマトリックス14a内の処理エレメントPEの接続関係を制御することで、PEマトリックス14aにおいてデータ処理のための回路を構成する。また、再構成制御部12は、PEマトリックス14aにおいて構成された回路に対してデータを供給したり、その回路からのデータを他のシステムに出力したりする制御を行う。
【0033】
コンフィギュレーションデータ14cは、PEマトリックス14aの回路構成を規定するデータである。PEマトリックス14a内の回路の再構成は、コンフィギュレーションデータ14cに従って行われる。コンフィギュレーションメモリ14bには、複数のコンフィギュレーションデータ14cが記憶される。コンフィギュレーションメモリ14b内の複数のコンフィギュレーションデータ14cのうち1つが選択されてアクティブ状態になると、そのコンフィギュレーションデータ14cが規定する回路構成がPEマトリックス14a内に構成されることになる。一例として、コンフィギュレーションメモリ14bには3つのコンフィギュレーションデータ14cが記憶されている。但し、本発明はこの例に限定されるものではなく、3つ以外の数のコンフィギュレーションデータ14cが、コンフィギュレーションメモリ14bに記憶されてもよい。
【0034】
コンフィギュレーションメモリ14bについて詳しく説明すると、コンフィギュレーションメモリ14bは、複数バンク(複数のメモリ)の構成となっている。例えば、コンフィギュレーションメモリ14bは、実行バンク#0(実行用のメモリ)、バンク#1(待機用のメモリ)及びバンク#2(待機用のメモリ)によって構成されている。そして、実行バンク#0に格納されたコンフィギュレーションデータ14cによって、PEマトリックス14aには第1の機能が構成されて実行される。また、バックグラウンドバンクとしてのバンク#1又はバンク#2にそれぞれ格納されたコンフィギュレーションデータ14cによって、PEマトリックス14aには第2の機能又は第3の機能が構成される。そして、コンフィギュレーションメモリ14bのバンクを切り替えることにより、PEマトリックス14aには、第1の機能に替わって第2の機能又は第3の機能が再構成される。PEマトリックス14aの再構成は、例えば1サイクル(クロックサイクル)でダイナミックに行われる。このようにPEマトリックス14aは、回路を構成するための複数の処理エレメントPEと、これらの処理エレメントPEを接続するための内部配線とを含む再構成ユニットであり、内部配線によって処理エレメントPEの接続を変えることにより、PEマトリックス14aに含まれる回路が再構成される。
【0035】
ここで、
図4を参照して、PEマトリックス14aに構成される機能の切り替え処理について説明する。例えば、再構成制御部12は、中間データ(各オブジェクトの描画コマンド)に従い、各オブジェクトを画像メモリ130に描画するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成し(DAP動作)、当該コンフィギュレーションデータ14cをDDRメモリ40からバンク#1又はバンク#2にロードする(DAP動作)。具体的には、再構成制御部12は、オブジェクトの位置情報、サイズ情報、描画内容及び色情報等のパラメータ(中間データに規定されているパラメータ)に基づき、当該オブジェクトを画像メモリ130に描画するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成する。そして、再構成制御部12は、当該コンフィギュレーションデータ14cをDDRメモリ40からバンク#1又はバンク#2にロードし、さらに、バンク#1又はバンク#2から実行バンク#0にコンフィギュレーションデータ14cをロードすることで、コンフィギュレーションデータ14cに応じた機能をPEマトリックス14aに構成する(DAP動作)。PEマトリックス14aは、実行バンク#0にロードされたコンフィギュレーションデータ14cによって構成された機能を実行する(DNA動作)。なお、再構成制御部12によって実行されるDAP動作は、ソフトウェアのよる処理に相当し、PEマトリックス14aによって実行されるDNA動作は、ハードウェアによる処理に相当する。
【0036】
次に、
図5を参照して、参考例に係る描画処理の一例を説明する。ここで、画像メモリ130上に描画データを描画する処理(描画処理)の種類について説明する。描画処理としては、一例として、「GRA」、「RAS−G」及び「RECT」等の描画コマンドがある。「GRA」は、指定された2点間を線分で描画することを示す描画コマンドである。「RAS−G」は、指定された領域をBitmap等の形式で描画することを示す描画コマンドである。「RECT」は、指定された領域を、いわゆるベタで塗り潰すことを示す描画コマンドである。これらの描画コマンドは、各オブジェクトの中間データに規定されている。
【0037】
例えば、PEマトリックス14aで構成される描画処理部120は、中間データによって規定される描画順番に従い、画像メモリ130に各オブジェクトを描画する。一例として、
図5に示すように、1番目のオブジェクト(小文字の「a」)の描画処理が「RAS−G」であり、2番目のオブジェクト(小文字の「i」)の描画処理が「GRA」であり、3番目のオブジェクト(大文字の「B」)の描画処理が「GRA」である場合について説明する。この場合、再構成制御部12は、1番目のオブジェクト(「a」)の中間データに基づき、1番目のオブジェクトの描画処理「RAS−G」を実行するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成し、当該コンフィギュレーションデータ14cをDDRメモリ40からバンク#2にロードし、さらに、当該コンフィギュレーションデータ14cをバンク#2から実行バンク#0にロードする(DAP動作)。これにより、PEマトリックス14aに、1番目のオブジェクトの描画処理「RAS−G」を実行するための回路が構成される。そして、PEマトリックス14aは、1番目のオブジェクト(「a」)を対象にして「RAS−G」を実行することで、1番目のオブジェクト(「a」)を画像メモリ130に書き込む(DNA動作)。
【0038】
また、再構成制御部12は、2番目のオブジェクト(「i」)の中間データに基づき、2番目のオブジェクトの描画処理「GRA」を実行するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成し、「GRA」用のコンフィギュレーションデータ14cをDDRメモリ40からバンク#1にロードする(DAP動作)。例えば、PEマトリックス14aが、1番目のオブジェクトの描画処理「RAS−G」を実行している間に、再構成制御部12は、2番目のオブジェクトの描画処理「GRA」用のコンフィギュレーションデータ14cをDDRメモリ40からバンク#1にロードしておく(DAP動作)。すなわち、DNA動作と並行してDAP動作が行われる。そして、PEマトリックス14aによる1番目のオブジェクトの描画処理「RAS−G」が終了すると、再構成制御部12は、2番目のオブジェクトの描画処理「GRA」用のコンフィギュレーションデータ14cを、バンク#1から実行バンク#0にロードする(DAP動作)。これにより、PEマトリックス14aには、2番目のオブジェクトの描画処理「GRA」を実行するための回路が構成される。そして、PEマトリックス14aは、2番目のオブジェクト(「i」)を対象にして「GRA」を実行することで、2番目のオブジェクト(「i」)を画像メモリ130に書き込む(DNA動作)。
【0039】
また、再構成制御部12は、3番目のオブジェクト(「B」)の中間データに基づき、3番目のオブジェクトの描画処理「GRA」を実行するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成し、「GRA」用のコンフィギュレーションデータ14cをDDRメモリ40からバンク#2にロードする(DAP動作)。例えば、PEマトリックス14aが、2番目のオブジェクトの描画処理「GRA」を実行している間に、再構成制御部12は、3番目のオブジェクトの描画処理「GRA」用のコンフィギュレーションデータ14cをDDRメモリ40からバンク#2にロードしておく(DAP動作)。そして、PEマトリックス14aによる2番目のオブジェクトの描画処理「GRA」が終了すると、再構成制御部12は、3番目のオブジェクトの描画処理「GRA」用のコンフィギュレーションデータ14cを、バンク#2から実行バンク#0にロードする(DAP動作)。これにより、PEマトリックス14aには、3番目のオブジェクトの描画処理「GRA」を実行するための回路が構成される。そして、PEマトリックス14aは、3番目のオブジェクト(「B」)を対象にして「GRA」を実行することで、3番目のオブジェクト(「B」)を画像メモリ130に書き込む(DNA動作)。
【0040】
4番目以降のオブジェクトについても同様に、各オブジェクトの描画処理を実行するためのコンフィギュレーションデータ14cがDDRメモリ40上で生成され、当該コンフィギュレーションデータ14cがDDRメモリ40からバンク#1又はバンク#2にロードされる。DDRメモリ40からバンク#1,#2には、コンフィギュレーションデータ14cが交互にロードされる。そして、バンク#1又はバンク#2から実行バンク#0にコンフィギュレーションデータ14cがロードされ、PEマトリックス14aによって描画処理が実行される。
【0041】
図5に示す参考例に係る描画処理では、実行される描画処理が同一である複数のオブジェクトの描画順番が連続する場合であっても、DDRメモリ40上でコンフィギュレーションデータ14cを一旦生成し、DDRメモリ40からバンク#1又はバンク#2にコンフィギュレーションデータ14cをロードし、さらに、実行バンク#0にコンフィギュレーションデータ14cをロードする。すなわち、各オブジェクトの描画処理を実行する度に、PEマトリックス14aの回路構成が変更されることになる。
図5に示す例で説明すると、2番目のオブジェクト(「i」)〜N番目のオブジェクト(「x」)の描画処理はいずれも「GRA」であるにもかかわらず、オブジェクト毎のコンフィギュレーションデータ14cをDDRメモリ40上で一旦生成し、オブジェクト毎のコンフィギュレーションデータ14cをDDRメモリ40からバンク#1又はバンク#2にロードし、さらに、バンク#1又はバンク#2から実行バンク#0にロードしている。このように、各オブジェクトの描画処理を行う度に、オブジェクト毎にコンフィギュレーションデータ14cを生成し、各オブジェクトのコンフィギュレーションデータ14cをDDRメモリ40からバンクへとロードしているため、コンフィギュレーションデータ14cの生成時間やロード時間が増大し、全体の処理時間が増大するおそれがある。例えば、コンフィギュレーションデータ14cの生成に要する時間と、コンフィギュレーションデータ14cをDDRメモリ40からバンクへロードする時間とを合わせた時間(DAP動作に要する時間)よりも、PEマトリックス14aによる描画処理に要する時間(DNA動作に要する時間)が短い場合、コンフィギュレーションデータ14cの生成及びロード(DAP動作)が、描画処理(DNA動作)に追い付かず、全体の処理時間が増大する。つまり、DAP動作とDNA動作とを並行して実行している場合に、DAP動作に要する時間がDNA動作に要する時間よりも長くなると、DNA動作の待機時間が発生し、全体の処理時間が増大することになる。
【0042】
本実施形態においては、実行される描画処理が同一である複数のオブジェクトの描画順番が連続する場合、参考例に係る描画処理とは異なり、オブジェクト毎にコンフィギュレーションデータ14cをDDRメモリ40上で生成してバンクへとロードせずに、当該複数のオブジェクトを継続して描画する。この場合、PEマトリックス14aは、自身の回路構成を変更せずに、当該連続する複数のオブジェクトを継続して画像メモリ130に書き込む。
【0043】
ここで、
図6を参照して、本実施形態に係る描画処理の一例を説明する。
図6(a)に本実施形態に係る描画処理の一例を示し、
図6(b)に参考例に係る描画処理の一例を示す。例えば、
図5に示す例と同様に、1番目のオブジェクトの描画処理が「RAS−G」であり、2番目のオブジェクトの描画処理が「GRA」であり、3番目の描画処理が「GRA」である場合について説明する。
【0044】
図6(a)を参照して、本実施形態に係る描画処理を説明する。まず、再構成制御部12は、1番目のオブジェクトの描画処理「RAS−G」を実行するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成し、当該コンフィギュレーションデータ14cをDDRメモリ40からバンク#2にロードし、さらに、当該コンフィギュレーションデータ14cをバンク#2から実行バンク#0にロードする(DAP動作)。これにより、PEマトリックス14aに、1番目のオブジェクトの描画処理「RAS−G」を実行するための回路が構成される。そして、PEマトリックス14aは、1番目のオブジェクトを対象にして「RAS−G」を実行することで、1番目のオブジェクトを画像メモリ130に書き込む(DNA動作)。
【0045】
また、再構成制御部12は、2番目のオブジェクトの描画処理「GRA」を実行するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成し、当該コンフィギュレーションデータ14cをDDRメモリ40からバンク#1にロードしておく(DAP動作)。例えば、DNA動作と並行してDAP動作が行われる。そして、PEマトリックス14aによる1番目のオブジェクトの描画処理「RAS−G」が終了すると、再構成制御部12は、2番目のオブジェクトの描画処理「GRA」用のコンフィギュレーションデータ14cを、バンク#1から実行バンク#0にロードする(DAP動作)。これにより、PEマトリックス14aには、2番目のオブジェクトの描画処理「GRA」を実行するための回路が構成される。そして、PEマトリックス14aは、2番目のオブジェクトを対象にして「GRA」を実行することで、2番目のオブジェクトを画像メモリ130に書き込む(DNA動作)。
【0046】
3番目のオブジェクトの描画処理は「GRA」であり、2番目のオブジェクトの描画処理と同一であるため、再構成制御部12は、3番目のオブジェクト用のコンフィギュレーションデータ14cをDDRメモリ40上で生成せず、DDRメモリ40からバンク#1又はバンク#2へのコンフィギュレーションデータ14cのロードも実行しない。この場合、PEマトリックス14aは、3番目のオブジェクトの位置情報、サイズ情報及び色情報等のパラメータ(中間データに規定されているパラメータ)を取得し、PEマトリックス14a自身の回路構成は変更せずに、当該パラメータのみを変更して3番目のオブジェクトを画像メモリ130に書き込む(オブジェクト連続処理)。すなわち、3番目のオブジェクトの描画処理「GRA」を実行するための回路は、2番目のオブジェクトの描画処理を実行するときにPEマトリックス14aに既に構成されているため、PEマトリックス14aは当該回路を利用することで、3番目のオブジェクトを画像メモリ130に書き込む。更に換言すると、オブジェクト連続処理が実行されている間、実行バンク#0にロードされたコンフィギュレーションデータ14cは書き換えられずに、同一の描画処理を実行するための回路がPEマトリックス14aに構成されることになる。一方で、オブジェクト連続処理が実行されない場合、実行バンク#0にロードされたコンフィギュレーションデータ14cは書き換えられ、PEマトリックス14aの回路構成が変更されることになる。例えば、不連続処理が継続する場合、バンク#1又はバンク#2から実行バンク#0にコンフィギュレーションデータ14cが交互にロードされることで、実行バンク#0に記憶されたコンフィギュレーションデータ14cが書き換えられることになる。
【0047】
4番目以降のオブジェクトについても、実行される描画処理が同一である複数のオブジェクトの描画順番が連続する場合、PEマトリックス14aは自身の回路構成を変更せずに、連続する複数のオブジェクトを継続して画像メモリ130に書き込む(オブジェクト連続処理)。
図6(a)に示す例では、2番目〜N番目のオブジェクトの描画処理が同一であるため、PEマトリックス14aは、回路構成を変更せずに、2番目〜N番目のオブジェクトを継続して画像メモリ130に書き込む。
【0048】
オブジェクト連続処理が行われている間、再構成制御部12は、オブジェクト連続処理の後に実行される描画処理のコンフィギュレーションデータ14cをDDRメモリ40上で生成し、当該コンフィギュレーションデータ14cをDDRメモリ40からバンク#1又はバンク#2にロードする。
図6(a)に示す例では、オブジェクト連続処理「GRA」の後に、(N+1)番目のオブジェクトを対象にして描画処理「RAS−G」の実行が予定されているため、再構成制御部12は、(N+1)番目のオブジェクト用の描画処理「RAS−G」を実行するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成し、当該コンフィギュレーションデータ14cをDDRメモリ40からバンク#2にロードする。そして、PEマトリックス14aによるオブジェクト連続処理「GRA」が終了すると、再構成制御部12は、「RAS−G」を実行するためのコンフィギュレーションデータ14cをバンク#2から実行バンク#0にロードする(DAP動作)。これにより、PEマトリックス14aは、「RAS−G」を実行することで、(N+1)番目のオブジェクトを画像メモリ130に書き込む(DNA動作)。それ以降のオブジェクトについても同様であり、実行される描画処理が同一である複数のオブジェクトの描画順番が連続する場合、PEマトリックス14aは自身の回路構成を変更せずに、連続する複数のオブジェクトを継続して画像メモリ130に書き込む。一方、実行される描画処理が同一である複数のオブジェクトの描画順番が連続しない場合、再構成制御部12は、連続しない各オブジェクトに対する描画処理用のコンフィギュレーションデータ14cをDDRメモリ40上で生成し、当該コンフィギュレーションデータ14cをバンク#1又はバンク#2にロードする。
【0049】
なお、
図6(b)に示す参考例では、
図5に示す参考例と同様に、実行される描画処理が同一である複数のオブジェクトの描画順番が連続する場合であっても、DDRメモリ40上でコンフィギュレーションデータ14cを一旦生成し、DDRメモリ40からバンク#1又はバンク#2にコンフィギュレーションデータ14cを交互にロードする。
【0050】
以上のように、本実施形態によると、実行される描画処理が同一である複数のオブジェクトの描画順番が連続する場合、PEマトリックス14aの回路を変更せずに、PEマトリックス14aに既に構成された回路を利用し、連続する複数のオブジェクトを継続して画像メモリ130に書き込むことで、参考例に係る描画処理と比較して、全体の処理時間が短縮される。すなわち、本実施形態では、実行される描画処理が同一である複数のオブジェクトの描画順番が連続する場合、オブジェクト毎にコンフィギュレーションデータ14cをDDRメモリ40上で生成してバンクへとロードせずに、オブジェクト連続処理を実行することで、DDRメモリ40上でコンフィギュレーションデータ14cを生成するのに要する時間と、DDRメモリ40からバンクへコンフィギュレーションデータ14cをロードするのに要する時間とが削減される。そのことにより、参考例と比較して、全体の処理時間が短縮される。つまり、コンフィギュレーションデータ14cの生成及びロードの回数が削減されるので、参考例と比較して、全体の処理時間が短縮される。
【0051】
次に、本実施形態の具体例について説明する。まず、
図7を参照して、中間データ生成部110によって生成される中間データについて説明する。一例として、中間データは、Stream0(パラメータ情報)とStream1(シェイプ情報)とを含む。中間データ生成部110は、画像データに表されたオブジェクト毎にStream0及びStream1を生成し、各オブジェクトのStream0及びStream1を、各オブジェクトの実行順序(描画順番)に並べてリスト化する。
【0052】
Stream0は、「コンフィギュレーションID(Config ID)」、「Data ID」、「Shape Top address」、「Shape Length」、「BitMask_ConstColor」、「Offset_Y_LSB、Offset_X_LSB」、及び、「Bbox」を含む。また、Stream1は、「Config ID」、「Data ID」、及び、「Shape data」を含む。
【0053】
「Config ID」は、コンフィギュレーションデータ14cのIDであり、画像メモリ130上にオブジェクトを描画する処理(描画処理)の種類を示す。上記の「RAS−G」、「GRA」及び「REC」等の描画コマンドが、当該描画処理に該当する。この「Config ID」を参照することで、描画対象となるオブジェクトの描画処理が特定される。「Data ID」は、画像データのShapeコマンドのシリーズ番号であり、各オブジェクトの描画順番を示す。「Shape Top address」は、Stream1の先頭アドレスを示す。「Shape Length」は、Shapeコマンドの長さを示し、byte単位で規定される。「BitMask_ConstColor」は、画像データのカラーコマンドで指定された値を規定し、画像データの色属性の一例として、画像データの色空間や階調等を規定する。「Offset_Y_LSB、Offset_X_LSB」は、原点からの位置を示す。「Bbox」はバウンダリボックスであり、画像データに表されたオブジェクトの描画領域を規定する。例えば、「Bbox」は、オブジェクトに外接する矩形状の描画領域の位置及びサイズを規定する。一例として、「Bbox」はx−y座標系で規定され、矩形状の描画領域における対角線上の頂点の座標((Lx,Ly)、(Gx,Gy))を示す。「Shape data」は、Shapeコマンドのデータであり、オブジェクトの形状等を示す。「Shape data」は可変長であり、一例として256byteバースト単位となるように0データが埋められる。なお、
図7に示す中間データのフォーマットは一例であり、本発明はこの例に限定されるものではない。ページ内におけるオブジェクトの位置情報、描画順番、サイズ情報、描画情報及び色情報等を規定するものであれば、中間データのフォーマットは、
図7に示すフォーマット以外のものであってもよい。
【0054】
本実施形態では、中間データ生成部110は、実行される描画処理が同一であり描画順番が連続する複数のオブジェクト(オブジェクト連続処理の対象となる複数のオブジェクト)と、オブジェクト連続処理の対象とならないオブジェクトとを区別し、それぞれ異なる中間データを生成する。以下、オブジェクト連続処理の対象となるオブジェクトの中間データを、「連続処理用の中間データ」と称し、オブジェクト連続処理の対象とならないオブジェクトの中間データを、「不連続処理用の中間データ」と称することとする。
【0055】
例えば、中間データ生成部110は、各オブジェクトの中間データに含まれる「Config ID」を参照することで、各オブジェクトの描画処理を特定する。特定された描画処理が同一であり複数のオブジェクトの描画順番が連続する場合、中間データ生成部110は、当該複数のオブジェクトについては「連続処理用の中間データ」を生成する。一方、同一の描画処理が実行される複数のオブジェクトの描画順番が連続しない場合、中間データ生成部110は、当該オブジェクトについては「不連続処理用の中間データ」を生成する。
【0056】
図8に、不連続処理用の中間データの一例を示す。中間データ生成部110は、不連続処理用の中間データのStream0(パラメータ情報)に、連続処理ではないことを示す情報「Single Obj.」を追加する。「Single Obj.」以外の情報は、
図7に示す元々の中間データに含まれる情報と同じである。
【0057】
図9に、連続処理用の中間データの一例を示す。中間データ生成部110は、連続処理用の中間データのStream0(パラメータ情報)に、連続処理であることを示す情報「Continue Obj.」を追加し、「Shape Top address」に替えて「Index Top address」を規定し、「Shape Length」に替えて「Index Object address」を規定する。「Index Top address」及び「Index Object address」については後述する。
【0058】
また、中間データ生成部110は、連続処理用の中間データのStream1(パラメータ/シェイプ情報)に、「BitMask_ConstColor」、「Offset_Y_LSB、Offset_X_LSB」、及び、「Bbox」を追加する。すなわち、中間データ生成部110は、連続処理対象のオブジェクトの位置情報及び色情報を、Stream1に追加する。これにより、Stream1には、オブジェクトの位置情報、色情報及び「Shape data」が規定されることになる。
【0059】
さらに、中間データ生成部110は、連続処理の対象となるオブジェクトのStream0(パラメータ情報)に基づき、Stream2(連続処理情報)を生成する。このStream2(連続処理情報)は、連続処理対象の各オブジェクトの描画順番を規定するとともに、メモリ上における各オブジェクトのStream1(パラメータ/シェイプ情報)のアドレスを規定する。具体的には、中間データ生成部110は、連続処理対象の各オブジェクトの「Shape Top address」及び「Shape Length」を、描画順番通りにStream2に規定する。
【0060】
ここで、
図10を参照して、Stream0とStream2との対応関係について説明する。Stream2には、連続処理対象となるオブジェクト#1〜#Nの「Shape Top address」及び「Shape Length」が、8byte単位で描画順番通りに規定される。また、Stream2の最後には、連続処理の終了を示す情報「End of DNA continuous execute」が規定される。Stream2に規定された順番に従って、各オブジェクトの描画処理が行われる。この描画処理の詳細については後述する。
【0061】
Stream0の「Index Top address」は、Stream2の先頭アドレスを示す。各オブジェクトのStream0には、「Index Top address」が規定されているため、各オブジェクトのStream0を参照することで、Steam2の先頭アドレスが特定される。例えば、連続処理対象の複数のオブジェクトのうち1番目のオブジェクト#1のStream0に「Index Top address」が規定され、同様に、2番目のオブジェクト#2のStream0にも「Index Top address」が規定されている。3番目〜N番目のオブジェクトのStream0にも「Index Top address」が規定されている。
【0062】
また、各オブジェクトのStream0の「Index Object address」は、Stream2において各オブジェクトの「Shape Top address」が規定されているアドレスを示す。例えば、オブジェクト#1は1番目のオブジェクトであるため、オブジェクト#1の「Index Object address」は、「Index Top address」と同じアドレスを示す。また、オブジェクト#2の「Index Object address」は、Stream2においてオブジェクト#2の「Shape Top address」が規定されているアドレスを示す。他のオブジェクトについても同様である。
【0063】
以上のように、本実施形態では、描画処理部120による描画処理の前に、中間データ生成部110によって、新たな中間データであるStream0、Stream1及びStream2が生成される。
【0064】
そして、オブジェクト連続処理が行われる場合、PEマトリックス14aは、Stream2を参照することで、オブジェクト#1の「Shape Top address」及び「Shape Length」をパラメータとして取得する。そして、PEマトリックス14aは、Stream1を参照し、「Shape Top address」及び「Shape Length」で特定されるメモリ領域に規定されたオブジェクト#1のパラメータ(「Shape data」、「BitMask_ConstColor」及び「Bbox」)に従って、オブジェクト#1を画像メモリ130に書き込む。オブジェクト#1の描画処理が終了すると、PEマトリックス14aは、Stream2を参照することで、オブジェクト#2の「Shape Top address」及び「Shape Length」をパラメータとして取得する。そして、PEマトリックス14aは、Stream1を参照し、「Shape Top address」及び「Shape Length」で特定されるメモリ領域に規定されたオブジェクト#2のパラメータ(「Shape data」、「BitMask_ConstColor」及び「Bbox」)に従って、オブジェクト#2を画像メモリ130に書き込む。オブジェクト#3〜#Nについても同様の処理が行われる。
【0065】
図11に、メモリ上における各オブジェクトの「Shape Top address」及び「Shape Length」の関係の一例を示す。例えば、PEマトリックス14aは、オブジェクト#1の「Shape Top address」及び「Shape Length」で特定されるメモリ領域(例えば64byte)に規定されたオブジェクト#1のパラメータ(「Shape data」、「BitMask_ConstColor」及び「Bbox」)に従って、オブジェクト#1を画像メモリ130に書き込む。また、PEマトリックス14aは、オブジェクト#2の「Shape Top address」及び「Shape Length」で特定されるメモリ領域(例えば128byte)に規定されたオブジェクト#2のパラメータ(「Shape data」、「BitMask_ConstColor」及び「Bbox」)に従って、オブジェクト#2を画像メモリ130に書き込む。オブジェクト#3〜#Nについても同様の処理が行われる。
【0066】
また、オブジェクト連続処理が行われない場合、PEマトリックス14aは、不連続処理用のStream1を参照してオブジェクトの描画処理を行う。
【0067】
次に、
図12を参照して、Stream0,1,2に基づき実行される描画処理について説明する。まず、再構成制御部12は、中間データを生成するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成し、当該コンフィギュレーションデータをバンク#1にロードし、さらに、バンク#1から実行バンク#0にロードする(DAP動作)。これにより、PEマトリックス14aに、中間データ生成部110の機能を実現する回路が構成される。中間データ生成部110は、画像データを解釈することで、Stream0、Stream1及びStream2を生成する。
【0068】
そして、再構成制御部12は、Stream0及びStream2を参照し、描画処理用のコンフィギュレーションデータ14cの生成、ロード、パラメータ設定、DNA動作の実行/終了確認等の描画処理制御を行う。
【0069】
例えば、1番目のオブジェクトの描画処理が「RAS−G」であり、2番目のオブジェクトの描画処理が「GRA」であり、3番目の描画処理が「GRA」である場合について説明する。
【0070】
再構成制御部12は、1番目のオブジェクトのStream0を参照することで、1番目のオブジェクトが連続処理の対象ではないことを特定し、さらに、Stream0に規定されたパラメータに基づき、1番目のオブジェクトの描画処理「RAS−G」を実行するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成する。1番目のオブジェクトは連続処理の対象となっていないため、
図8に示すStream0(不連続処理用の中間データ)が再構成制御部12で参照されてコンフィギュレーションデータ14cが生成されることになる。そして、再構成制御部12は、当該コンフィギュレーションデータ14cをDDRメモリ40からバンク#2にロードし、さらに、バンク#2から実行バンク#0に当該コンフィギュレーションデータ14cをロードする(DAP動作)。これにより、PEマトリックス14aに、1番目のオブジェクトの描画処理「RAS−G」を実行するための回路が構成される。そして、PEマトリックス14aは、1番目のオブジェクトのStream1を解釈し、Stream1に規定された「Shape Data」に従って、1番目のオブジェクトを対象にして「RAS−G」を実行することで、1番目のオブジェクトを画像メモリ130に書き込む(DNA動作)。1番目のオブジェクトは連続処理の対象となっていないため、
図8に示すStream1(不連続処理用の中間データ)がPEマトリックス14aで解釈されて描画処理が行われることになる。
【0071】
また、再構成制御部12は、2番目のオブジェクトのStream0を参照することで、2番目のオブジェクトが連続処理の対象であることを特定し、さらに、Stream0に基づき、2番目のオブジェクトの描画処理「GRA」を実行するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成する。2番目のオブジェクトは連続処理の対象となっているため、
図9に示すStream0(連続処理用の中間データ)が再構成制御部12で参照されてコンフィギュレーションデータ14cが生成されることになる。そして、再構成制御部12は、当該コンフィギュレーションデータ14cをDDRメモリ40からバンク#1にロードする(DAP動作)。例えば、PEマトリックス14aが、1番目のオブジェクトの描画処理「RAS−G」を実行している間に、再構成制御部12は、2番目のオブジェクトの描画処理「GRA」用のコンフィギュレーションデータ14cをDDRメモリ40からバンク#1にロードしておく。そして、PEマトリックス14aによる1番目のオブジェクトの描画処理「RAS−G」が終了すると、再構成制御部12は、2番目のオブジェクトの描画処理「GRA」用のコンフィギュレーションデータ14cを、バンク#1から実行バンク#0にロードする(DAP動作)。これにより、PEマトリックス14aには、描画処理「GRA」を実行するための回路が構成される。
【0072】
そして、PEマトリックス14aは、連続処理用の中間データであるStream2及びStream1を参照し、連続処理の対象となっている2〜N番目のオブジェクトを対象にして「GRA」を実行することで、2〜N番目のオブジェクトを継続して画像メモリ130に書き込む(DNA動作)。一例として、
図10に示すStream2を例にとって説明する。PEマトリックス14aは、Stream2を参照することで、連続する1つ目のオブジェクト#1(
図12で示す2番目のオブジェクト)の「Shape Top address」及び「Shape Length」をパラメータとして取得する。そして、PEマトリックス14aは、Stream1を解釈し、オブジェクト#1の「Shape Top address」及び「Shape Length」で特定されるメモリ領域に規定されたオブジェクト#1のパラメータ(「Shape data」、「BitMask_ConstColor」及び「Bbox」)に従って、オブジェクト#1を対象として「GRA」を実行することでオブジェクト#1を画像メモリ130に書き込む(DNA動作)。
【0073】
さらに、PEマトリックス14aは、Stream2を参照することで、連続する2つめのオブジェクト#2(
図12で示す3番目のオブジェクト)の「Shape Top address」及び「Shape Length」をパラメータとして取得する。そして、PEマトリックス14aは、Stream1を解釈し、オブジェクト#2の「Shape Top address」及び「Shape Length」で特定されるメモリ領域に規定されたオブジェクト#2のパラメータ(「Shape data」、「BitMask_ConstColor」及び「Bbox」)に従って、オブジェクト#2を対象として「GRA」を実行することでオブジェクト#2を画像メモリ130に書き込む(DNA動作)。PEマトリックス14aには描画処理「GRA」を実行するための回路が既に構成されているため、PEマトリックス14aは当該回路を維持した状態で、オブジェクト#2を画像メモリ130に書き込む。すなわち、連続処理を行う場合、オブジェクト#2の描画処理「GRA」を実行するためのコンフィギュレーションデータ14cは、再構成制御部12によってDDRメモリ40上で生成されず、バンクへのコンフィギュレーションデータ14cのロードも実行されない。
【0074】
PEマトリックス14aは、N番目のオブジェクトまで連続して画像メモリ130に書き込む。そして、PEマトリックス14aは、Stream2を参照し、連続処理終了「End of DNA continuous execute」を検出した場合、連続処理を終了する。
【0075】
2〜N番目のオブジェクトについて連続処理が行われている間、再構成制御部12は、(N+1)番目のオブジェクトのStream0を参照することで、(N+1)番目のオブジェクトが連続処理の対象でないことを特定し、さらに、Stream0に規定されたパラメータに基づき、(N+1)番目のオブジェクトの描画処理「RAS−G」を実行するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成する。そして、再構成制御部12は、当該コンフィギュレーションデータ14cをDDRメモリ40からバンク#2にロードする。N番目のオブジェクトの描画処理が終了すると、再構成制御部12は、バンク#2から実行バンク#0にコンフィギュレーションデータ14cをロードする(DAP動作)。これにより、PEマトリックス14aに、(N+1)番目のオブジェクトの描画処理「RAS−G」を実行するための回路が構成される。そして、PEマトリックス14aは、(N+1)番目のオブジェクトのStream1を解釈し、Stream1に規定された「Shape Data」に従って、(N+1)番目のオブジェクトを対象にして「RAS−G」を実行することで、(N+1)番目のオブジェクトを画像メモリ130に書き込む(DNA動作)。(N+2)番目以降のオブジェクトについても、画像処理装置100はStream0,1,2を解釈することで、オブジェクトの連続処理又は不連続処理を実行する。
【0076】
以上のように、描画処理前に中間データとしてのStream0,1,2を予め生成しておき、PEマトリックス14aがStream2及びStream1を解釈することで、オブジェクト連続処理が実行される場合には、描画処理に必要なパラメータがPEマトリックス14aに設定されて描画処理が実行される。すなわち、再構成制御部12が各オブジェクトのStream0を解釈してオブジェクト毎にコンフィギュレーションデータ14cを生成せずに済み、また、オブジェクト毎のコンフィギュレーションデータ14cをDDRメモリ40からバンクにロードせずに済む。つまり、再構成制御部12によるDAP動作が行われなくても、PEマトリックス14aによる描画処理が実行されることになる。このように、再構成制御部12によるコンフィギュレーションデータ14cの生成及びコンフィギュレーションデータ14cのロードの回数が削減されるので、コンフィギュレーションデータ14cの生成時間及びロード時間が削減され、その結果、全体の処理時間が短縮される。換言すると、描画処理前に、Stream0,1に加え、ハードウェアであるPEマトリックス14aが解釈し得るStream2を予め生成しておくことで、オブジェクト連続処理が実行される場合には、ソフトウェア処理であるDAP動作が省略され、ハードウェア処理であるDNA動作(描画処理)が実行される。このようにDAP動作が省略されるので、全体の処理時間が短縮される。
【0077】
次に、
図13及び
図14に示すフローチャートを参照して、画像処理装置100の動作の一例を説明する。
【0078】
まず、割り込み処理(描画要求)が発生すると、描画処理部120に割り込みマスクが設定され(S01)、以降、描画処理の状態に応じて処理A,B,Cのいずれかが実行される(S02)。ここで、処理Aは、描画処理開始時に実行される処理であり、バンク#1及びバンク#2のいずれにもコンフィギュレーションデータ14cがロードされていないときに実行される処理である。処理Bは、描画処理の途中に実行される処理であり、バンク#1及びバンク#2の両方にコンフィギュレーションデータ14cがロードされて描画処理が実行されているときに実行される処理である。処理Cは、描画処理終了時に実行される処理であり、最後のオブジェクトの描画処理が終了したときに実行される処理である。
【0079】
まず、処理Aが実行される場合について説明する。この場合、描画処理のコマンドが選択され(S03)、当該描画処理を実行するためのパラメータが設定されてコンフィギュレーションデータ14cがDDRメモリ40上で生成され(S04)、当該コンフィギュレーションデータ14cがDDRメモリ40からバンク#1にロードされる(S05)。
図14に、この一連の処理の流れを示す。まず、再構成制御部12は、描画対象のオブジェクトのStream0を解釈することで描画処理のコマンドを選択する(S20)。また、再構成制御部12は、描画対象のオブジェクトのStream0を参照することで、当該オブジェクトが連続処理の対象か否かを特定する。当該オブジェクトが連続処理の対象でない場合、再構成制御部12は、当該オブジェクトのStream0を参照し、Stream0に規定されたパラメータに従い、当該オブジェクトを描画するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成する(S21)。一方、描画対象のオブジェクトが連続処理の対象である場合、再構成制御部12は、当該オブジェクトのStream0及びStream2を参照し、Stream0に規定されたパラメータに従い、当該オブジェクトを描画するためのコンフィギュレーションデータ14cをDDRメモリ40上で生成する(S22)。そして、再構成制御部12は、コンフィギュレーションデータ14cをDDRメモリ40からバンク#1にロードする(S23)。
図12に戻って説明すると、再構成制御部12は、コンフィギュレーションデータ14cをバンク#1から実行バンク#0にロードする。そして、PEマトリックス14aは、実行バンク#0にロードされたコンフィギュレーションデータ14cによって構成された機能を実行することで、描画処理を実行する(S06)。その後、ステップS03〜S05の処理と同様に、描画処理のコマンドが選択され(S07)、当該描画処理を実行するためのパラメータが設定されたコンフィギュレーションデータ14cがDDRメモリ40上で生成され(S08)、当該コンフィギュレーションデータ14cがDDRメモリ40からバンク#2にロードされる(S09)。そして、処理Aは終了し(S10)、割り込みマスクが解除され(S11)、割り込み処理は終了する。なお、ステップS07にて描画処理の終了コマンドが検出された場合、処理Aは終了する(S10)。
【0080】
次に、処理Bが実行される場合について説明する。この場合、割り込み処理(描画要求)が発生すると、再構成制御部12はPEマトリックス14aの処理を停止させ(S12)、コンフィギュレーションデータ14cをバンク#1又はバンク#2から実行バンク#0にロードする。そして、PEマトリックス14aは、実行バンク#0にロードされたコンフィギュレーションデータ14cによって構成された機能を実行することで、描画処理を実行する(S13)。その後、ステップS03〜S05の処理と同様に、描画処理のコマンドが選択され(S14)、当該描画処理を実行するためのパラメータが設定されてコンフィギュレーションデータ14cがDDRメモリ40上で生成され(S15)、当該コンフィギュレーションデータがDDRメモリ40からバンク#1又はバンク#2にロードされる(S16)。そして、割り込みマスクが解除され(S11)、割り込み処理は終了する。なお、ステップS14にて描画処理の終了コマンドが検出された場合、処理Bは終了する(S17)。
【0081】
次に、処理Cが実行される場合について説明する。この場合、最後のオブジェクトの描画処理が終了しているため、再構成制御部12はPEマトリックス14aの処理を停止させる(S18)。そして、割り込みマスクが解除され(S11)、割り込み処理は終了する。
【0082】
以上のように、コンフィギュレーションデータ14cが実行バンク#0にロードされて描画処理が実行されることになる。