説明

画像形成装置、画像形成装置の制御方法、及びプログラム

【課題】マルチコアCPUを無駄なく使用し、CPUコア数に応じてPDL処理のパフォーマンスを向上し、少ないメモリ資源でPDLを高速に処理し、印刷時間を短縮すること。
【解決手段】マルチコアCPUにより実行される複数のDL生成タスク404を用いて中間コード(DL)を並列に生成する画像形成装置のDL生成管理タスク403は、PDLタスク402で解析された描画コマンドが、先に解析されDL生成が終了していない各描画コマンドと処理順序を変更可能か判定し、処理順序変更可能と判定された描画コマンドについては、先に解析された描画コマンドのDL生成終了状況に関係なくDL生成タスク404にDL生成を依頼し、一方、特定の描画コマンドと処理順序変更不可能と判定された描画コマンドについては、特定の描画コマンドのDL生成終了を待ってDL生成タスク404にDL生成を依頼するように制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ページ記述言語(PDL)のデータを複数のプロセッサにより処理する画像形成装置の制御に関するものである。
【背景技術】
【0002】
近年、ハードウェア技術の向上により、マルチコアのCPUが開発され、パーソナルコンピュータ(PC)等では、複数のアプリケーションを同時実行可能となっている。
マルチファンクションプリンタ(MFP;Multifunction Printer又はMultifunction Peripheral)においても、コピー、プリント等の複数の機能をストレスなく並列実行するために、マルチコアのCPUが搭載されるようになっている。
【0003】
ページ記述言語(PDL;Page Description Language)データの印刷処理を行う場合、各描画コマンドをマルチコアのCPUによりそれぞれ並列に処理し、マルチコアのCPUにより高速に処理する方法が提案されている(特許文献1参照)。
【0004】
また、PDLデータ内の描画コマンドの並べ替えをしてから、各描画コマンドをそれぞれのCPUで並列に処理し、効率よくマルチコアのCPUで処理する方法も提案されている(特許文献2参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−116450号公報
【特許文献2】特開2009−259231号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、特許文献1に示すように、PDLを並列に処理する場合、生成される中間コードの順序は保証されないため、ページ終了後、生成された中間コードの並べ替えを行う必要があり、並べ替えの処理に時間がかかってしまう。
【0007】
また、特許文献2に示すように、事前にコマンドの並べ替えをする場合、全てのデータを事前に受け取る必要があり、メモリ資源を圧迫するとともに、最初の印刷を行うまで時間がかかってしまう。
【0008】
本発明は、上記の問題点を解決するためになされたものである。本発明の目的は、ページ記述言語データの描画コマンドから中間コードを生成するまでの処理を、事前の並べ替えや事後の並べ替えを行うことなくマルチコアCPUを用いて並列に行っても、順序を変更できない描画コマンドについてはシーケンシャルのまま処理できるようにし、マルチコアCPUを無駄なく使用し、CPUコア数に応じてページ記述言語データ処理のパフォーマンスを向上して、少ないメモリ資源でページ記述言語データを高速に処理し、印刷時間を短縮することができる仕組みを提供することである。
【課題を解決するための手段】
【0009】
本発明は、ページ記述言語データに基づいて印刷を行う画像形成装置であって、前記ページ記述言語データに含まれる描画コマンドを順次解析する解析手段と、前記解析手段により解析された描画コマンドから描画コマンド単位で中間コードをそれぞれ並列に生成する複数の生成手段と、前記複数の生成手段により生成された中間コードからイメージデータを生成するレンダリング手段と、前記レンダリング手段により生成されたイメージデータを印刷する印刷手段と、前記解析手段により解析された描画コマンドが、当該描画コマンドより先に解析され中間コード生成が終了していない各描画コマンドと処理順序を変更可能かどうか判定する判定手段と、前記判定手段により前記いずれの描画コマンドとも処理順序変更可能と判定された描画コマンドについては、前記先に解析された描画コマンドの中間コード生成終了状況に関係なく前記生成手段に中間コード生成を依頼し、一方、前記判定手段により1又は複数の特定の描画コマンドと処理順序変更不可能と判定された描画コマンドについては、前記特定の描画コマンドの中間コード生成終了を待って前記生成手段に中間コード生成を依頼するように制御する管理手段と、を有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、ページ記述言語データの描画コマンドから中間コードを生成するまでの処理を、事前の並べ替えや事後の並べ替えを行うことなくマルチコアCPUを用いて並列に行っても、順序を変更できない描画コマンドについてはシーケンシャルのまま処理できるようにし、マルチコアCPUを無駄なく使用し、CPUコア数に応じてページ記述言語データ処理のパフォーマンスを向上して、少ないメモリ資源でページ記述言語データを高速に処理し、印刷時間を短縮することができる。
【図面の簡単な説明】
【0011】
【図1】本発明の一実施例を示す画像形成装置の構成の一例を示すブロック図である。
【図2】本発明におけるPDL全体のデータフローの一例を示す図である。
【図3】本発明におけるPDL全体のタスク制御の一例を示す図である。
【図4】画像形成装置101の電源投入時の処理の一例を示すフローチャートである。
【図5】実施例1における受信タスク401が実行する受信処理301の一例を示すフローチャートである。
【図6】実施例1におけるPDLタスク402が実行するPDL処理302の一例を示すフローチャートである。
【図7】本発明におけるPDL全体のタスク制御の一例を示す図である。
【図8】実施例1におけるDL生成管理タスク403が実行するDL生成管理処理303の一例を示すフローチャートである。
【図9】図8のS1361に示したDL生成終了処理の一例を示すフローチャートである。
【図10】描画オブジェクトの描画イメージの一例を示す図である。
【図11】実施例1におけるDL生成管理タスク実行中のDL生成管理テーブルの変化を説明するための図である。
【図12】実施例1における各DL生成タスク404が実行するDL生成処理304の一例を示すフローチャートである。
【図13】実施例1におけるレンダラタスク405が実行するレンダリング処理305の一例を示すフローチャートである。
【図14】実施例2におけるPDLデータの一例を示す図である。
【図15】実施例2におけるDL生成管理タスク403の一例を示すフローチャートである。
【図16】描画オブジェクトの描画結果の一例を示す図である。
【図17】実施例2におけるDL生成管理タスク実行中のDL生成管理テーブルの変化を説明するための図である。
【図18】2コアのCPUにおける各処理の積み上げた時間を示す図である。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態について、図面を参照して説明する。
【実施例1】
【0013】
図1は、本発明の一実施例を示す画像形成装置の構成の一例を示すブロック図である。
図1において、101は画像形成装置である。204は、画像形成装置101の演算処理や制御などを並列で行うことができるマルチコアの中央演算処理装置(CPU)である。即ち、CPU204は、複数のプロセッサに対応するものである。CPU204は、複数のコア(演算ユニット)により、複数の処理(例えば、後述する複数のDL生成タスク)を並列処理可能である。
【0014】
201はROMで、CPU204の制御コード等をコンピュータ読取可能に格納する。ROM201に格納される制御コードは、後述する受信部211、解析部212、中間コード生成管理部213、中間コード生成部214、展開処理部215等として、CPU204を機能させるためのものである。
【0015】
202はRAMで、様々な情報を一時格納する。RAM202は、受信バッファ221、ワークメモリ222、フレームバッファ223、ラスタメモリ224等として利用される。
【0016】
203はネットワークインターフェース(ネットワークI/F)で、PC等外部デバイスとネットワーク102を介して情報の入出力を行うためのものであり、外部デバイスから送信された印刷データを受信する。
【0017】
受信部211は、ネットワークI/F203を介して受信したデータを受信バッファ221にデータを格納する。また、受信部211は、受信バッファ221から印刷データを読み出し、該読み出した印刷データからPDL(Page Discription Language)を特定し、PDLデータをワークメモリ222に格納し、解析部212にPDLデータ(ページ記述言語データ)を渡す。
【0018】
解析部212は、受信部211から渡されたPDLデータをワークメモリ222から読み出し、コマンドを解析する。
中間コード生成管理部213は、解析部212において解析されたデータを判定し、中間コード生成を制御するための情報をワークメモリ222に格納する。
【0019】
中間コード生成部214は、解析部212において解析されたデータから描画を行なうための内部情報である中間コード(DL:Display List(中間データともいう))を生成し、フレームバッファ223に格納する。なお、中間コード(DL)は、レンダラ(Renderer)207により、ラスタイメージの生成が可能なデータである。
【0020】
展開処理部215は、フレームバッファ223に格納された中間コード(DL)をラスタイメージ(ビットマップデータ)に展開し、該展開したラスタイメージをラスタメモリ224に格納する。なお、展開処理部215は、処理に時間がかかるため、専用ハードウェアであるレンダラ207を用いて高速に処理を行っている。
【0021】
受信バッファ221は、ネットワークI/F203を介して受信した印刷データを格納するメモリである。ワークメモリ222は、入力された印刷データから特定されたPDLデータや、中間コードに変換するときに一時的に使用するメモリである。
【0022】
フレームバッファ223は、中間コード生成部214で生成された中間コードを格納するメモリである。ラスタメモリ224は、フレームバッファ223に格納された中間コードから展開処理部215により展開制御されたラスタイメージを格納するメモリである。
【0023】
レンダラ207は、上述したように、展開処理部215の制御により、フレームバッファ223に格納されているディスプレイリスト(DL)を入力として、ラスタイメージを生成する専用ハードウェアである。
【0024】
205はエンジンI/Fで、プリンタエンジン206との信号の入出力を行う。プリンタエンジン206は、ラスタイメージデータに基づいて、例えば、周知の電子写真プロセスによって感光ドラム上に潜像を形成し、用紙に転写して定着し印字を行う。なお、プリンタエンジン206の印刷方法は、電子写真プロセスによる印刷方法に限定されるものではなく、どのような印刷方法であってもよく、例えばインクジェット方式、昇華式等の他の印刷方法でもよい。
【0025】
図2は、本発明におけるPDL全体のデータフローの一例を示す図である。なお、図2に示す各処理はインプットとアウトプットのデータがあり、それぞれRAM202に一時的に格納される。
【0026】
受信処理301は、受信部211で実行される処理である。受信処理301は、受信バッファ221に格納された受信データからPDLを特定し、PDLデータ311をワークメモリ222に格納する。
【0027】
PDL処理302は、解析部212で実行される処理である。PDL処理302は、ワークメモリ222に格納されたPDLデータ311を解析し、解析したコマンドに従って中間コード生成コマンド(DL生成コマンド312)をワークメモリ222に格納する。なお、DL生成コマンド312とは、PDLデータから解析された描画コマンド毎に生成されるものであり、該描画コマンドから中間コードを生成するための命令である。
【0028】
DL生成管理処理303は、中間コード生成管理部213で実行される処理である。DL生成管理処理303は、ワークメモリ222に格納されたDL生成コマンド312に従って判定を行う。そして、判定結果に基づいて、DL生成管理処理303は、ワークメモリ222内のDL生成管理テーブル315に、DL生成コマンドの描画情報(描画オブジェクト)を格納(順次登録)し、DL生成実行を管理する。
【0029】
DL生成処理304は、中間コード生成部214で実行される処理である。DL生成処理304は、ワークメモリ222に格納されたDL生成コマンド312に従って、DL313を生成し、フレームバッファ223に格納する。
【0030】
レンダリング処理305は、展開処理部215で実行され処理である。レンダリング処理305は、レンダラ207を用いて、フレームバッファ223に格納されたDL313からビットマップ314を生成し、ラスタメモリ224に格納する。
なお、PDLにおいては、以上説明した各処理をシーケンシャルに実行し、通常、PDLデータのコマンド順にDLを生成する必要がある。
【0031】
図3は、本発明におけるPDL全体のタスク制御の一例を示す図である。なお、図3に示す各タスクは、画像形成装置101の電源投入時に生成され、他のタスクからの指示に従って各タスクの処理が実行される。
【0032】
受信タスク401は、ネットワークI/F203からの指示に従って受信処理301を実行し、PDLタスク402にジョブ開始を依頼する。
PDLタスク402は、受信タスク401にPDLデータを要求し、PDL処理302の解析結果からDL生成管理タスク403に処理依頼する。
DL生成管理タスク403は、PDLタスク402から処理依頼されたデータの判定と複数のDL生成タスク404の動作状況を管理し、DL生成タスク404に処理依頼をする。また、DL生成管理タスク403は、1ページ分のDL生成を終了するとレンダラタスク405に処理を依頼する。
【0033】
各DL生成タスク404はそれぞれ、DL生成管理タスク403から処理依頼された描画コマンドから描画コマンド単位で中間コード(DL)を生成するDL生成処理304を行う。
レンダラタスク405は、DL生成管理タスク403からの依頼に従ってレンダリング処理305を実行し、不図示のエンジンタスクに渡して印刷処理を依頼する。
なお、各タスクは全て独立であり、マルチコアのCPU204において、複数のタスクを並列に実行できる。
【0034】
以下、画像形成装置101処理についてフローチャートを参照して説明する。
図4は、画像形成装置101の電源投入時の処理の一例を示すフローチャートである。なお、このフローチャートの処理(S1001〜S1005等の各ステップ)は、画像形成装置101のCPU204がROM201にコンピュータ読み取り可能に記録されたプログラムを実行することにより実現されるものである。
【0035】
S1001において、CPU204は、受信タスク401を起動し、受信処理301を実行可能にする。
次に、S1002において、CPU204は、PDLタスク402を起動し、PDL処理302を実行できるようにする。
次に、S1003において、CPU204は、DL生成管理タスク403を起動し、DL生成管理処理303を実行できるようにする。
【0036】
次に、S1004において、CPU204は、1つまたは複数のDL生成タスク404を起動し、DL生成処理304を実行できるようにする。CPU204は、CPUコアの数だけDL生成タスク404を起動し、各CPUコアにより並列に実行するようにする。
次に、S1005において、CPU204は、レンダラタスク405を起動し、レンダリング処理305を実行できるようにする。
なお、各ステップは、順不同で実行することができ、各タスク間で通信できるようにする。
【0037】
以下、画像形成装置101の各タスクについてフローチャートを参照して説明する。
図5は、実施例1における受信タスク401が実行する受信処理301の一例を示すフローチャートである。即ち、このフローチャートの処理(S1101〜S1121等の各ステップ)は、画像形成装置101のCPU204がROM201に記録されたプログラム(受信部211)を実行することにより実現されるものである。
【0038】
まず、受信タスク401は、データ受信待ち、又はデータ取得依頼待ちを行う(S1101,S1110)。ネットワークI/F203を介してデータ受信すると(S1101でYes)、受信タスク401は、S1102において、受信バッファ221にデータを格納する。
【0039】
次に、S1103において、受信タスク401は、ジョブ開始実行済みか否かを判定する。そして、まだジョブ開始実行していないと判定した場合(S1103でNo)、受信タスク401は、S1104によりを進める。S114では、受信タスク401は、PDLタスク402に「ジョブ開始通知」を行う。この「ジョブ開始通知」に応じて、PDLタスク402は「データ取得依頼」を受信タスクに行う。
【0040】
一方、既にジョブ開始実行していると判定した場合(S1103でYes)、受信タスク401は、S1101に処理を戻す。
また、ネットワークI/F203を介してPDLタスク402から「データ取得依頼」を受信すると(S1110でYes)、受信タスク401は、S1111に処理を進める。
【0041】
S1111では、受信タスク401は、受信バッファ221にデータが格納されているか否かを判定する。
そして、受信バッファ221にデータが格納されていると判定した場合(S1111でYes)、受信タスク401は、S1112に処理を進める。
S1112では、受信タスク401は、PDLタスク402からデータ取得依頼時に渡されたワークメモリ222のアドレスに、上記受信バッファ221に格納されたデータをコピーする。
【0042】
次に、S1113において、受信タスク401は、「データ取得完了」をPDLタスク402に通知する。次に、S1114において、受信タスク401は、受信バッファ221を解放し、S1101に処理を戻す。
【0043】
一方、受信バッファ221にデータが格納されていないと判定した場合(S1111でNo)、受信タスク401は、S1120において、データ受信待ちを行う。
そして、ネットワークI/F203を介してデータを受信すると(S1120でYes)、受信タスク401は、S1121において、データ取得依頼時に渡されたワークメモリ222のアドレスに、上記受信したデータを格納し、S1112に処理を進める。
【0044】
図6は、実施例1におけるPDLタスク402が実行するPDL処理302の一例を示すフローチャートである。このフローチャートの処理(S1201〜S1223等の各ステップ)は、画像形成装置101のCPU204がROM201に記録されたプログラム(解析部212)を実行することにより実現されるものである。
【0045】
まず、PDLタスク402は、S1201において、受信タスク401からの「ジョブ開始通知」待ちを行う。そして、受信タスク401から「ジョブ開始通知」を受けると、S1202において、PDLタスク402は、受信タスク401にワークメモリ222のアドレスを渡し、「データ取得依頼」を行う。
【0046】
次に、S1203において、PDLタスク402は、受信タスク401からのデータ取得完了通知待ちを行う。そして、受信タスク401からデータ取得完了通知を受けると(S1203でYes)、PDLタスク402は、S1204で、上記ワークメモリ222のアドレスに格納されたデータを解析する。
【0047】
次に、S1205において、PDLタスク402は、上記S1204での解析の結果、上記ワークメモリ222に格納されたデータがページ開始を示すデータか否かを判定する。
【0048】
そして、ページ開始を示すデータであると判定した場合(S1205でYes)、PDLタスク402は、S1206において、DL生成管理タスク403に、「ページ開始通知」を行う。
【0049】
次に、S1207において、PDLタスク402は、DL生成管理タスク403からの「ページ開始処理完了通知」待ちを行う。そして、DL生成管理タスク403から「ページ開始処理完了通知」を受けると(S1207でYes)、PDLタスク402は、S1202に処理を戻す。
【0050】
一方、上記S1205において、ページ開始を示すデータでないと判定した場合(S1205でNo)、PDLタスク402は、S1210に処理を進める。
S1210では、PDLタスク402は、上記ワークメモリ222に格納されたデータがページ終了を示すデータであるか否かを判定する。
そして、ページ終了を示すデータであると判定した場合(S1210でYes)、PDLタスク402は、S1211において、DL生成管理タスク403に、「ページ終了通知」を行う。
【0051】
さらに、S1212において、PDLタスク402は、DL生成管理タスク403からの「ページ終了処理完了通知」待ちを行う。そして、DL生成管理タスク403から「ページ終了処理完了通知」を受けると(S1212でYes)、PDLタスク402は、S1202に処理を戻す。
【0052】
一方、上記S1210において、ページ終了を示すデータでないと判定した場合(S1210でNo)、PDLタスク402は、S1220に処理を進める。
S1220では、PDLタスク402は、上記ワークメモリ222に格納されたデータがジョブ終了を示すデータであるか否かを判定する。そして、ジョブ終了示すデータでないと判定した場合(S1220でNo)、PDLタスク402は、S1221に処理を進める。
【0053】
S1221では、PDLタスク402は、上記ワークメモリ222に格納されたデータ(描画コマンド)からDL生成コマンドを生成し、ワークメモリ222に格納する。
次に、S1222において、PDLタスク402は、DL生成管理タスク403へDL生成処理依頼を行う。この際、ワークメモリ222を介して、上記S1221で生成したDL生成コマンドをDL生成管理タスク403へ渡す。
【0054】
さらに、S1223において、PDLタスク402は、DL生成管理タスク403からのDL生成終了通知待ちを行う。そして、DL生成管理タスク403からDL生成終了通知を受けると(S1223でYes)、PDLタスク402は、S1202に処理を戻す。
【0055】
一方、上記ワークメモリ222に格納されたデータがジョブ終了を示すデータであると判定した場合(S1220でYes)、PDLタスク402は、S1201に処理を戻す。
【0056】
ここで、図7を参照して、DL生成タスク404にてDL生成処理される描画オブジェクトについて説明する。
図7は、実施例1において処理される描画コマンドで描画指示される描画オブジェクトの構成の一例を示す図である。
図7に示すように、描画オブジェクトは、外径1001を形成する複数の頂点座標3(Xn,Yn)の点列を示すデータを含む。また、描画オブジェクトは、その外径1001又は外径内の領域1003を描画する色値(R,G,B)と、その外径1001を包含する矩形1002の左上の描画座標(X,Y)と、矩形1002の幅Wd、高さHtを示すデータを含む。
【0057】
後述する重なり判定おいては、各描画オブジェクトの矩形1002の描画座標(X,Y)と、矩形1002の幅Wd、高さHtを用いて判定する。また、後述する色の判定においては、外径1001又は外径に囲まれた領域1003を描画する色値(R,G,B)を用いて判定する。
【0058】
図8は、実施例1におけるDL生成管理タスク403が実行するDL生成管理処理303の一例を示すフローチャートである。このフローチャートの処理(S1301〜S1382等の各ステップ)は、画像形成装置101のCPU204がROM201に記録されたプログラム(中間コード生成管理部213)を実行することにより実現されるものである。
【0059】
DL生成管理タスク403は、他のタスクからの通知を受信すると、該通知がDL生成依頼、DL生成終了通知、ページ開始通知、ページ終了通知かを判定する(S1301、S1360、S1370、S1380)。
【0060】
そして、受信した通知がPDLタスク402からの「ページ開始通知」であると判定した場合(S1370でYes)、DL生成管理タスク403は、S1371に処理を進める。
【0061】
S1371では、DL生成管理タスク403は、カレントの描画オブジェクトのIDを示すCurIDと、DL生成管理テーブルに登録されている描画オブジェクトの数を示すObjectCount(RAM202内に確保される変数)を「0」に初期化する。なお、CurIDは、カレントの描画オブジェクトのIDを示す変数であり、RAM202内に確保される。また、ObjectCountは、後述するDL生成管理テーブルに登録されている描画オブジェクトの数を示す変数であり、RAM202内に確保される。
【0062】
次に、DL生成管理タスク403は、S1372において、PDLタスク402に「ページ開始処理完了通知」を行い、S1301に処理を戻す。
また、受信した通知がPDLタスク402からの「DL生成依頼」であると判定した場合(S1301でYes)、DL生成管理タスク403は、S1302に処理を進める。
S1302では、DL生成管理タスク403は、CurIDをインクリメントする。
次に、S1303において、DL生成管理タスク403は、DL生成依頼とともにワークメモリ222を介して受け取ったDL生成コマンドから生成されるカレントの描画オブジェクトに、CurIDを割り当てる。なお、この描画オブジェクトは、DL生成コマンドがDL生成を指示する描画コマンドで描画指示される描画オブジェクトに対応する。
【0063】
次に、S1304において、DL生成管理タスク403は、カレントの描画オブジェクトの描画位置(CurX、CurY)、幅CurWd、高さCurHt、色(CurR、CurG、CurB)を上記DL生成コマンドから取得する。
【0064】
次に、S1305において、DL生成管理タスク403は、ObjectCountが「0」であるか否かを判定する。
そして、ObjectCountが「0」であると判定した場合(S1305でYes)、DL生成管理タスク403は、S1322に処理を進める。
S1322では、DL生成管理タスク403は、カレントの描画オブジェクトの情報を、DL生成管理テーブルに、「DL生成処理中状態」で登録する。例えば、図11(a)の1221に示すように、CurID、描画位置、幅、高さ、色、及び1222に示すように、DL生成処理中状態(ここでは1211や1212のように「DL生成処理中状態」を示す「Exec」)を、DL生成管理テーブルに登録する。
【0065】
次に、DL生成管理タスク403は、S1323において、ObjectCountをインクリメントし、S1324において、空き状態のDL生成タスク404に「DL生成依頼」をして、S1301に処理を戻す。なお、DL生成依頼の際には、DL生成依頼とともにDL生成コマンドをDL生成タスク404に通知する。このDL生成依頼を受けたDL生成タスク404は、DL生成を行い、「DL生成終了通知」をDL生成管理タスク403に返す(詳細は、後述する図12に示す)。
【0066】
また、上記S1305において、ObjectCountが「0」でないと判定した場合(S1305でNo)、DL生成管理タスク403は、S1310に処理を進める。
S1310では、DL生成管理タスク403は、DL生成管理テーブルに登録されている描画オブジェクトを1つ取得し、該取得した描画オブジェクトの描画位置(X、Y)、幅Wd、高さHt、色(R、G、B)、描画オブジェクトIDのObjIDを取得する。
【0067】
そして、S1311において、DL生成管理タスク403は、カレントの描画オブジェクトと上記S1310で取得したDL生成管理テーブルに登録されている描画オブジェクトについて、描画位置、幅、高さをそれぞれ比較し、重なりがあるか否かを判定する。重なりの有無の判定方法は以下の条件文で行う。
【0068】
(CurX<X+Wd) AND (CurY<Y+Ht) AND (CurX+CurWd>X) AND (CurY+CurHt>Y)
そして、この条件文を満たす場合には重なりがあると判定し、一方、この条件文を満たさない場合には重なりがないと判定する。
【0069】
そして、重なりがないと判定した場合(S1311でNo)、DL生成管理タスク403は、S1314に処理を進める。
一方、重なりがあると判定した場合(S1311でYes)、DL生成管理タスク403は、S1312に処理を進める。
S1312では、DL生成管理タスク403は、カレントの描画オブジェクトと上記S1310で取得したDL生成管理テーブルに登録されている描画オブジェクトについて、色(R,G,B)を比較し、色が異なるか否かを判定する。色の判定方法は以下の条件文で行う。
【0070】
(CurR≠R) OR (CurG≠G) OR (CurB≠B)
そして、この条件文を満たす場合には色が同じと判定し、一方、この条件文を満たさない場合には色が異なると判定する。
【0071】
そして、色が同じと判定した場合(S1312でNo)、DL生成管理タスク403は、S1314に処理を進める。
一方、色が異なると判定した場合(S1312でYes)、DL生成管理タスク403は、S1313に処理を進める。
S1313では、DL生成管理タスク403は、待ち合わせ対象の描画オブジェクトとしてObjIDを保持する。なお、ObjIDは、RAM202内に保持される。
即ち、本実施例の待ち合わせ判定処理では、2つの描画コマンドの描画位置に重なりが有り、且つ、描画する色が異なる場合に、前記2つの描画コマンドについて処理順序変更不可能と判定し、上記場合以外の場合に、前記2つの描画コマンドについて処理順序変更可能と判定する。
次に、S1314において、DL生成管理タスク403は、DL生成管理テーブルに登録されている描画オブジェクトを全てチェックしたか否かを判定する。そして、DL生成管理テーブルに登録されている描画オブジェクトを全てチェックしたと判定するまで、S1310〜S1314を繰り返し実行する。
【0072】
一方、DL生成管理テーブルに登録されている描画オブジェクトを全てチェックしたと判定した場合(S1314でYes)、DL生成管理タスク403は、S1320に処理を進める。
【0073】
S1320では、DL生成管理タスク403は、待ち合わせ対象の描画オブジェクトのIDが保持されているか否かを判定する。
そして、待ち合わせ対象の描画オブジェクトのIDが保持されていないと判定した場合(S1320でYes)、DL生成管理タスク403は、S1321に処理を進める。
S1321では、DL生成管理タスク403は、空き状態のDL生成タスク404があるか否かを判定する。
そして、空き状態のDL生成タスク404があると判定した場合(S1321でYes)、DL生成管理タスク403は、上述したS1322〜S1324の処理を実行し、S1301に処理を戻す。
【0074】
一方、空き状態のDL生成タスクがないと判定した場合(S1321でNo)、DL生成管理タスク403は、S1330に処理を進める。
S1330では、DL生成管理タスク403は、カレントの描画オブジェクトを、DL生成管理テーブルに、「DL生成タスク空き待ち状態」で登録する。例えば、図11(a)の1221に示すように、CurID、描画位置、幅、高さ、色、及び1222に示すように、DL生成タスク空き待ち状態(ここでは1214のように、「DL生成タスク空き待ち状態」を示す「wait=0」)を、DL生成管理テーブルに登録する。
【0075】
さらに、DL生成管理タスク403は、S1350において、ObjectCountをインクリメントし、S1301に処理を戻す。
また、上記S1320において、待ち合わせ対象の描画オブジェクトのIDが保持されていると判定した場合(S1320でNo)、DL生成管理タスク403は、S1340に処理を進める。
【0076】
S1340では、DL生成管理タスク403は、カレントの描画オブジェクトを、DL生成管理テーブルに、「待ち合わせ状態」で登録する。例えば、図11(a)の1221に示すように、CurID、描画位置、幅、高さ、色、及び1222に示すように、「待ち合わせ状態」(例えば、待ち合わせIDが「2」の場合、1213のように「ID=2の待ち合わせ状態」を示す「wait=2」)を、DL生成管理テーブルに登録する。なお、待ち合わせIDが複数(例えば、0,2,4)保持されている場合には、「wait=0,2,4」のように、複数の待ち合わせID(待合情報)を登録する。
【0077】
そして、DL生成管理タスク403は、ObjectCountをインクリメントし(S1350)、S1301に処理を戻す。
また、DL生成管理タスク403は、受信した通知がDL生成タスク404からの「DL生成終了通知」であると判定した場合(S1360でYes)、DL生成管理タスク403は、S1361に処理を進める。
【0078】
S1361では、DL生成管理タスク403は、後述する図9に示すDL生成終了処理を行い、S1301に処理を戻す。
また、DL生成管理タスク403は、受信した通知がPDLタスク402からの「ページ終了通知」であると判定した場合(S1380でYes)、DL生成管理タスク403は、S1381に処理を進める。
【0079】
S1381では、DL生成管理タスク403は、レンダラタスク405に、「レンダリング処理依頼」を行う。
さらに、S1382において、DL生成管理タスク403は、PDLタスク402に、「ページ終了処理完了通知」を行い、S1301に処理を戻す。
【0080】
図9は、図8のS1361に示したDL生成終了処理の一例を示すフローチャートである。このフローチャートの処理(S1401〜S1430等の各ステップ)は、画像形成装置101のCPU204がROM201に記録されたプログラム(中間コード生成管理部213)を実行することにより実現されるものである。
【0081】
まず、S1401において、DL生成管理タスク403は、DL生成タスク404から「DL生成終了通知」とともに通知された終了した描画オブジェクトのIDと一致する描画オブジェクト情報をDL生成管理テーブルから削除する。
【0082】
次に、S1402において、DL生成管理タスク403は、ObjectCountをデクリメントする。
さらに、S1403において、DL生成管理タスク403は、ObjectCountが「0」か否かを判定する。
そして、ObjectCountが「0」であると判定した場合(S1403でYes)、DL生成管理タスク403は、本DL生成終了処理を終了し、図8のフローチャートに処理を戻す。
【0083】
一方、ObjectCountが「0」でないと判定した場合(S1403でNo)、DL生成管理タスク403は、S1404に処理を進める。
S1404では、DL生成管理タスク403は、DL生成管理テーブルに登録されている描画オブジェクトの情報を1つ取得し、該取得した描画オブジェクト(以下、「現在の描画オブジェクト」という)の状態が「DL生成処理中状態」か否かを判定する。
【0084】
そして、現在の描画オブジェクトの状態が「DL生成処理中状態」であると判定した場合(S1404でYes)、DL生成管理タスク403は、そのままS1430に処理を進める。
【0085】
一方、現在の描画オブジェクトの状態が「DL生成処理中状態」でないと判定した場合(S1404でNo)、DL生成管理タスク403は、S1405に処理を進める。
S1405では、DL生成管理タスク403は、上記終了した描画オブジェクトのIDが、現在の描画オブジェクトの待ち合わせ対象のIDか否かを判定する。
そして、上記終了した描画オブジェクトのIDが現在の描画オブジェクトの待ち合わせ対象のIDでないと判定した場合(S1405でNo)、DL生成管理タスク403は、そのままS1430に処理を進める。
【0086】
一方、上記終了した描画オブジェクトのIDが現在の描画オブジェクトの待ち合わせ対象のIDであると判定した場合(S1405でYes)、DL生成管理タスク403は、S1406に処理を進める。
【0087】
S1406では、DL生成管理タスク403は、上記終了した描画オブジェクトのIDを、現在の描画オブジェクトの待ち合わせ対象のIDから削除する。例えば、上記終了した描画オブジェクトのIDが「1」で、現在の描画オブジェクトの状態が「wait=1,2」の場合、待ち合わせ対象のID「1」を削除して「wait=2」のようにする。
【0088】
次に、S1407において、DL生成管理タスク403は、現在の描画オブジェクトに、待ち合わせ対象のIDが登録されている(待ち合わせ対象あり)か否かを判定する。
そして、現在の描画オブジェクトに、待ち合わせ対象のIDが登録されている(待ち合わせ対象あり)と判定した場合(S1407でNo)、DL生成管理タスク403は、そのままS1430に処理を進める。
【0089】
一方、現在の描画オブジェクトに、待ち合わせ対象のIDが登録されていない(待ち合わせ対象なし)と判定した場合(S1407でYes)、DL生成管理タスク403は、S1408に処理を進める。
【0090】
S1408では、DL生成管理タスク403は、空き状態のDL生成タスク404が存在する(DL生成タスク404が空いている)か否かを判定する。
そして、空き状態のDL生成タスク404が存在する(DL生成タスク404が空いている)と判定した場合(S1408でYes)、DL生成管理タスク403は、S1410に処理を進める。
【0091】
S1410では、DL生成管理タスク403は、DL生成管理テーブルに登録されている現在の描画オブジェクトの状態の「DL生成処理中状態」を示す「Exec」に変更し、S1411において、空き状態のDL生成タスク404にDL生成依頼する。
【0092】
一方、空き状態のDL生成タスク404が存在しない(DL生成タスク404が空いていない)と判定した場合(S1408でNo)、DL生成管理タスク403は、S1420に処理を進める。
【0093】
S1420では、DL生成管理タスク403は、現在の描画オブジェクトの状態を「DL生成タスク空き待ち状態」を示す「Wait=0」に変更し、S1430に処理を進める。
【0094】
S1430では、DL生成管理タスク403は、DL生成管理テーブルの全ての描画オブジェクトについてS1404〜S1430の処理が終わったか否かを判定する。
そして、まだDL生成管理テーブルの描画オブジェクトでS1404〜S1430の処理が終わっていないものがあると判定した場合(S1430でNo)、DL生成管理タスク403は、S1404に処理を進める。
【0095】
一方、既にDL生成管理テーブルの全ての描画オブジェクトについてS1404〜S1430の処理が終わったと判定した場合(S1430でYes)、DL生成管理タスク403は、本DL生成終了処理を終了し、図8のフローチャートに処理を戻す。
【0096】
以上示した図9の処理は、DL生成タスク404から「DL生成終了通知」を受け取る毎に実行される。即ち、図9の処理は、DL生成タスク404がDL生成を終了するごとに実行される。
【0097】
以下、図10、図11(a)〜図11(c)を参照して、図8,図9で示したDL生成管理タスク実行中のDL生成管理テーブルの変化を具体的に説明する。
図10、図11(a)〜図11(c)は、実施例1におけるDL生成管理タスク実行中のDL生成管理テーブルの変化を説明するための図である。なお、ここでは、DL生成タスク404が2つの場合を例に、DL生成管理テーブルの登録、削除について説明する。
【0098】
図10は、描画オブジェクトの描画イメージの一例を示す図である。
図10において、1101、1102、1103、1104、1105は、それぞれ描画オブジェクトの描画イメージである。
図11(a)は、図10に示したDL生成管理タスク403が描画オブジェクト1101、1102、1103、1104をDL生成管理テーブルに登録した状態を示す図である。
【0099】
図11(a)において、1201、1202は、それぞれDL生成タスク0、DL生成タスク1で実行している描画オブジェクト情報を指すポインタである。
1203は、登録された描画オブジェクトを管理するDL生成管理テーブル315(図2)である。
1211、1212、1213、1214は、それぞれ図10に示した描画オブジェクト1101、1102、1103、1104に対応して、登録された描画オブジェクト情報である。描画オブジェクト情報には、1221のように、ID、描画位置(X、Y)、幅Wd、高さHt、色(R、G、B)と、1222のように、処理状態等の情報が格納されている。
【0100】
描画オブジェクト情報1211と1212は、それぞれ「DL生成処理中状態」を示す「Exec」となっている。また、描画オブジェクト情報1213は、「ID=2の描画オブジェクトの待ち合わせ状態」を示す「Wait=2」となっている。また、描画オブジェクト情報1214は、「DL生成タスク空き待ち状態」を示す「Wait=0」となっている(待ち合わせ無し)。
【0101】
図11(b)は、描画オブジェクト1105の登録時のDL生成管理テーブルを示す図である。
図11(b)に示すように、1215は描画オブジェクト1105の描画オブジェクト情報である。描画オブジェクト情報1215に示すように、描画オブジェクト1105は、描画位置(230,230)、幅100、高さ100である。
【0102】
描画オブジェクト1105は、ID=1の描画オブジェクト1101に対し、図8のS1311の重なり判定で「重なり無し」と判定される。よって、ID=1の描画オブジェクト1101と描画オブジェクト1105とは、DL生成の順番が入れ替わっても描画結果に影響ない。そのため、ID=1の描画オブジェクト1101は描画オブジェクト1105の待ち合わせ対象とならない。
【0103】
また、描画オブジェクト1105は、ID=2の描画オブジェクト1102に対し、図8のS1311の重なり判定で「重なり有り」と判定され、図8のS1312の色判定が行われる。なお、描画オブジェクト1102の色値(255,0,0)は、描画オブジェクト1105の色値(255,0,0)と同じであり、図8のS1312の色判定で「同色」と判定される。よって、ID=2の描画オブジェクト1102と描画オブジェクト1105とは、DL生成の順番が入れ替わっても描画結果に影響ない。そのため、ID=2の描画オブジェクト1102は描画オブジェクト1105の待ち合わせ対象とならない。
【0104】
また、描画オブジェクト1105は、ID=3の描画オブジェクト1103に対し、図8のS1311の重なり判定で「重なり有り」と判定され、図8のS1312の色判定が行われることとなる。なお、描画オブジェクト1103の色値(0,0,0)は、描画オブジェクト1105の色値(255,0,0)と異なり、図8のS1312の色判定で「異なる色」と判定される。よって、ID=3の描画オブジェクト1103は、描画オブジェクト1105の待ち合わせ対象となる。このため、待ち合わせ対象としてID=3が「Wait=3」のように、描画オブジェクト情報1215に格納される。
【0105】
また、描画オブジェクト1105は、ID=1の描画オブジェクト1101の場合と同様に、ID=4の描画オブジェクト1103と重なりがない。よって、ID=4の描画オブジェクト1104と描画オブジェクト1105とは、DL生成の順番が入れ替わっても描画結果に影響ない。そのため、ID=4の描画オブジェクト1104は描画オブジェクト1105の待ち合わせ対象とならない。
【0106】
図11(c)は、ID=2の描画オブジェクト1102のDL生成終了時のDL生成管理テーブルを示す図である。
図11(c)に示すように、ID=1の描画オブジェクト情報1211は、図9のS1404で「DL生成処理中」と判定され、何も変更されない。
一方、ID=3の描画オブジェクト情報1213は、図11(b)に示したように、図9のS1405で「DL生成終了したID=2の描画オブジェクト1102が待ち合わせ対象である」と判定される。そして、図9のS1406で描画オブジェクト情報1213の「wait=2」から「2」が削除され、「wait=0」に変更される。これにより、描画オブジェクト情報1211は、待ち合わせ対象のIDがなくなり、且つ「DL生成タスク1」が空いている状態となる。このため、図9のS1410で、ID=3の描画オブジェクト情報1213を「DL処理中状態」を示す「Exec」に変更する。この状態を図11(c)に示している。
ID=4の描画オブジェクト情報1214、ID=5の描画オブジェクト情報1215は、それぞれ変更なしである。
【0107】
以下、図12、図13を参照して、DL生成タスク404、レンダラタスク405について説明する。
図12は、実施例1における各DL生成タスク404が実行するDL生成処理304の一例を示すフローチャートである。このフローチャートの処理(S1501〜S1503等の各ステップ)は、画像形成装置101のCPU204がROM201に記録されたプログラム(中間コード生成部214)を実行することにより実現されるものである。
【0108】
DL生成タスク404は、S1501において、DL生成管理タスク403からのDL生成依頼待ちを行う。
そして、DL生成管理タスク403からDL生成依頼を受信すると(S1501でYes)、DL生成タスク404は、S1502に処理を進める。
S1502では、DL生成タスク404は、DL生成依頼とともに受けたDL生成コマンドに従ってDL生成を行い、生成したDLをフレームバッファ223に格納する。
そして、S1503において、DL生成タスク404は、DL生成管理タスク403に、DL生成終了通知を行う。なお、DL生成終了通知を行う際には、上記S1502でDL生成したDL生成コマンドのIDもDL生成管理タスク403に通知する。上記S1503の通知処理を終了すると、DL生成タスク404は、S1501に処理を戻す。
【0109】
図13は、実施例1におけるレンダラタスク405が実行するレンダリング処理305の一例を示すフローチャートである。このフローチャートの処理(S1601〜S1603等の各ステップ)は、画像形成装置101のCPU204がROM201に記録されたプログラム(展開処理部215)を実行することにより実現されるものである。
【0110】
レンダラタスク405は、S1601において、DL生成管理タスク403からのレンダリング依頼待ちを行う。
そして、DL生成管理タスク403からレンダリング依頼を受信すると(S1601でYes)、レンダラタスク405は、S1602に処理を進める。
なお、レンダラタスク405は、各DL生成タスク404でのDL生成に応じて、フレームバッファ223上に生成されたDLをフレームバッファ223からレンダラ207内のメモリに転送するDL転送を行っている。このため、「レンダリング処理依頼」があった際には、DL転送はほぼ終了しており、レンダラタスク405は速やかにレンダリングを行うことが可能な状態である。
【0111】
S1602では、レンダラタスク405は、上記DL転送により専用ハードウェアであるレンダラ207内のメモリに格納されたDLに対してレンダリングを行い、レンダラ207でレンダリングされたビットマップデータ(ラスタデータ)を、ラスタメモリ224に格納する。
【0112】
次に、S1603において、レンダラタスク405は、エンジンI/F205を介してプリンタエンジン206にビットマップデータを出力し、印刷させ、S1601に処理を戻す。
【0113】
以上示したように、実施例1によれば、マルチコアCPUで並列して描画コマンドからDL生成を行う場合において、PDLタスクで順次解析された描画コマンドの順番(処理順序)を、先に解析され未だDL生成終了していない描画コマンドと変更可能かどうか判定するように構成する。そして、順番の変更が可能(処理順序変更可能)な描画コマンドについては順番を考慮することなく(先に解析された描画コマンドの中間コード生成終了状況(DL生成終了状況)に関係なく)DL生成を依頼する。一方、順番の変更が不可能(処理順序変更不可能)な描画コマンドについては順番通り(先の描画コマンドのDL生成終了を待って)にDL生成を依頼するように、DL生成順序を管理(制御)するように構成する。このような構成により、PDLデータの描画コマンドから中間コード(DL)を生成するまでの処理を、事前の並べ替えや事後の並べ替えを行うことなくマルチコアCPUを用いて並列に行っても、順序を変更できない描画コマンドについてはシーケンシャルのまま処理できるようにし、マルチコアCPUを無駄なく使用し、CPUコア数に応じてPDL処理のパフォーマンスを向上して、少ないメモリ資源でPDLデータを高速に処理し、印刷時間を短縮することができる。
【実施例2】
【0114】
上記実施例1では、DL生成管理テーブルに登録されている全ての描画オブジェクトに対して待ち合わせの判定を行う構成を示した。実施例2では、PDLデータを生成するホストコンピュータで描画オブジェクトを分割して送ってくる場合のように待ち合わせ判定が必要ない場合には、待ち合わせ判定をしないように構成する。以下、図面を用いて詳細に説明する。
【0115】
図14は、実施例2におけるPDLデータの一例を示す図である。
描画オブジェクト1403、1404、1405は、一つのイメージデータを分割したイメージである。
なお、拡大描画を行うときに隣接するイメージ間の位相のずれを少なくするために、1443、1444、1445に示すように、描画オブジェクト1403、1404、1405を重ねて描画する場合がある。このような描画オブジェクト1403、1404、1405は重なりが有るが、どの順番で描画しても問題ない。このため、描画オブジェクト1403、1404、1405間での、DL生成管理タスク403での待ち合わせ判定は不要である。
【0116】
よって、本実施例では、このような描画オブジェクトに対して、DL生成管理タスク403にて待ち合わせ判定を行わないようにするため、ホストコンピュータにて各イメージの描画コマンドに、示唆情報(ヒント情報)を付加するように構成する。
【0117】
例えば、描画オブジェクト1404について、描画オブジェクト1403を待ち合わせ判定対象から外すため、ホストコンピュータ側で、ヒント情報1431を「Hint=1」とし、描画オブジェクト1404の描画コマンド1421に付加する。
【0118】
また、描画オブジェクト1405について、描画オブジェクト1403,1404を待ち合わせ判定対象から外すため、ホストコンピュータ側で、ヒント情報1432を「Hint=2」とし、描画オブジェクト1405の描画コマンド1422に付加する。
【0119】
即ち、ネットワーク102を介して画像形成装置101と通知可能なホストコンピュータ(情報処理装置)のプリンタドライバは、一つのイメージデータを分割した複数の描画オブジェクトに対応して生成した各描画コマンドに対して、これらの間で待ち合わせ判定が行われないように、ヒント(Hint)情報を付加するように構成する。なお、ヒント(Hint)情報には、上記各描画コマンドの画像形成装置101への送信順序を示す数字が格納される。先頭の描画コマンドには、ヒント(Hint)情報を付加しないか、「Hint=0」を付加するようにし、以下、「Hint=1」、「Hint=2」、「Hint=3」、「Hint=4」、・・・のようなヒント情報を、分割された一連の描画コマンドにそれぞれ送信順に付加するように構成する。
【0120】
図14の例では、先頭の描画コマンド1420にはヒント情報は付加せず、描画コマンド1421、1422には、順次「Hint=1」、「Hint=2」のように、描画コマンドの画像形成装置101への送信順序を示す数字をヒント情報として付加している。
【0121】
このようにして描画コマンドに付加されたヒント情報は、待ち合わせ判定が不要となる一連の描画コマンドの先頭の位置を示すこととなる。即ち、図14の例では、描画コマンド1421については、1431に示す「Hint=1」が示すように、1つ先に解析される描画コマンド1420を待ち合わせ判定対象外とする。また、描画コマンド1422については、1432に示す「Hint=2」が示すように、2つ先に解析される描画コマンド1420と1つ先に解析される描画コマンド1421を待ち合わせ判定対象外とする。
【0122】
なお、ここでは、一つのイメージデータを分割した複数の描画オブジェクトに対応して生成した各描画コマンドに対して、ヒント(Hint)情報を付加する場合を示した。しかし、一つのイメージデータを分割した各描画コマンドのみでなく、どのような描画コマンドであっても、ホストコンピュータ側で待ち合わせ判定が必要ないと判っている一連の描画コマンドに対しては、プリンタドライバがヒント(Hint)情報を付加するように構成してもよい。
【0123】
なお、ホストコンピュータのプリンタドライバは、ホストコンピュータのCPUがハードディスク等の記録媒体にコンピュータ読み取り可能に記録されたプリンタドライバプログラムを読み出して実行することにより実現されるものである。
【0124】
以下、実施例2における画像形成装置101(DL生成管理タスク403)側の処理について説明する。
図15は、実施例2におけるDL生成管理タスク403の一例を示すフローチャートである。このフローチャートの処理(S1301〜S1382、S2001〜S2003等の各ステップ)は、画像形成装置101のCPU204がROM201に記録されたプログラム(中間コード生成管理部213)を実行することにより実現されるものである。なお、図8と同一のステップには同一のステップ番号を付してあり、説明は省略する。
【0125】
S2001において、DL生成管理タスク403は、カレントの描画オブジェクトの描画位置(CurX、CurY)、幅CurWd、高さCurHt、色(CurR、CurG、CurB)、HintをDL生成コマンドから取得する。
【0126】
次に、S2002において、DL生成管理タスク403は、CheckIDに、CurIDからHintを減算した値を代入する(CheckID=CurID−Hint)。なお、CheckIDは、ホストコンピュータにて待ち合わせ判定が不要とされた一連の描画オブジェクトの先頭のIDを示す変数であり、RAM202内に確保される。
【0127】
また、S2003において、DL生成管理タスク403は、S1310で取得したDL生成管理テーブルに登録されている描画オブジェクトのIDと、上記S2002でセットしたCheckIDとを比較する。そして、DL生成管理タスク403は、IDがCheckIDより小さい(ID<CheckID)か否かを判定する。
【0128】
そして、IDがCheckIDより小さい(ID<CheckID)と判定した場合(S2003でYes)、DL生成管理タスク403は、S1311〜S1314にて重なり判定や色判定等の処理を実行し、S1314に処理を進めるように制御する。
【0129】
一方、IDがCheckIDより小さくない(ID≧CheckID)と判定した場合(S2003でNo)、DL生成管理タスク403は、重なり判定や色判定等の処理を実行することなく(スキップして)、そのままS1314に処理を進めるように制御する。なお、その他の処理は、図8と同一のため説明を省略する。
【0130】
以下、図16、図17(a)〜図17(c)を参照して、DL生成管理タスク実行中のDL生成管理テーブルの変化を具体的に説明する。
図16、図17(a)〜図17(c)は、実施例2におけるDL生成管理タスク実行中のDL生成管理テーブルの変化を説明するための図である。なお、ここでは、DL生成タスク404が2つの場合を例に、DL生成管理テーブルの登録について説明する。
【0131】
図16は、描画オブジェクトの描画結果の一例を示す図である。
図16において、1401、1402、1403、1404、1405は、それぞれ描画オブジェクトの描画結果を示す。
図17(a)は、DL生成管理タスクが図16の描画オブジェクト1401、1402、1403をDL生成管理テーブルに登録した状態を示す図である。
図17(a)において、1501、1502は、それぞれDL生成タスク0、DL生成タスク1で実行している描画オブジェクト情報を指すポインタである。
1503は、登録された描画オブジェクトを管理するDL生成管理テーブル315である。
1511〜1513は、登録された描画オブジェクト情報であり、ID、描画位置(X、Y)、幅Wd、高さHt、色(R、G、B)またはイメージ種別Imageと、処理状態が格納されている。
【0132】
ここでは、3個の描画オブジェクト(図16の1401、1402、1403)が、描画オブジェクト情報1511、1512、1513として登録されている。
描画オブジェクト情報1511と1512は、それぞれDL生成状態を示す「Exec」となっている。描画オブジェクト情報1513は、ID=1の描画オブジェクトのDL生成終了待ち状態を示す「Wait=1」となっている。
【0133】
図17(b)は、描画オブジェクト1404の登録時のDL生成管理テーブルを示す図である。
図17(b)において、1506は描画オブジェクト1404の描画コマンドである。1506に示すように、描画オブジェクト1404は、「Hint=1」であるため、図15のS2003で「No」と判定され、待ち合わせ対象外として、ID=3の描画オブジェクト情報1513との重なり判定や色判定は実行されず(省略され)、処理順序変更可能とみなされる。
なお、描画オブジェクト情報1514は、ID=1やID=2の描画オブジェクトとの重なり判定や色判定は実行される。ここでは、ID=1の描画オブジェクトとの重なり判定や色判定で「Yes」と判定され、ID=1の描画オブジェクトのDL生成終了待ち状態を示す「Wait=1」となる。
【0134】
図17(c)は、描画オブジェクト1405の登録時のDL生成管理テーブルを示す図である。
図17(c)において、1507は描画オブジェクト1405の描画コマンドである。1507に示すように、描画オブジェクト1405は、「Hint=2」であるため、図15のS2003で「No」と判定され、待ち合わせ対象外として、ID=3の描画オブジェクト情報1513及びID=4の描画オブジェクト情報1514との重なり判定や色判定は実行されず(省略され)、処理順序変更可能とみなされる。
なお、描画オブジェクト情報1514は、ID=1やID=2の描画オブジェクトとの重なり判定や色判定は実行される。しかし、ここでは、ID=1、ID=2の描画オブジェクトのいずれの重なり判定や色判定でも「No」と判定され、DL生成スレッド空き待ち状態を示す「Wait=0」となる。
【0135】
以上示したように、実施例2によれば、ホストコンピュータ側で待ち合わせ判定の必要がないと判断された一連の描画コマンドにヒント情報を付加して画像形成装置に送信するように構成する。そして、画像形成装置側では、ヒント情報に基づいて待ち合わせ判定を省略して処理順序変更可能とみなし、描画コマンドからDL生成を行うように構成する。このような構成により、実施例1の効果に加え、PDLデータに描画データを分割した一連の描画コマンド等の待ち合わせ判定が不要な一連の描画コマンドが含まれている場合には、さらに高速にPDLデータを処理し、印刷時間を短縮することができる。
【0136】
以下、本発明の効果について従来と比較して説明する。
図18は、2コアのCPUにおける各処理の積み上げた時間を示す図である。
以下に示す積み上げ時間は、PDL処理、DL生成処理、DL転送処理、レンダリング処理の各処理の積み上げ時間である。
なお、レンダリング処理は専用のハードウェアで行い、DL生成時のメモリ領域とは別のメモリ領域から参照する構成のケースを想定しており、DL生成タスク404で生成したDLの転送が実行されるものとしている。この転送処理が、上記DL転送処理となる。
【0137】
図18(a)は、DL生成タスク404を1つで動作させたときの積み上げ時間を示す図である。
このケースでは、PDL解析の結果を順次1つのDL生成タスク404でDL生成し、生成したDLをハードウェアがアクセスするメモリ領域にDL転送を並行で行う。ページ終了した時点で、ほぼDL転送は終了しており、レンダリングが実行される。レンダリング実行中には、次のページのPDL解析、DL生成が実行される。
【0138】
図18(b)は、DL生成タスク404を2つで動作させ、且つ、本発明対応前の積み上げ時間を示す図である。
このケースでは、PDL解析の結果を順次2つのDL生成タスク404でDL生成するため、DL生成タスク404を1つで動作させたときの半分の時間で終了する。しかし、生成されたDLの順番は描画順番とは異なるため、それぞれのDL生成タスク404で作成したDLの結合処理(並べ替え)を必要とする。
【0139】
また、各描画オブジェクトのDL生成後は未だレンダリングできる状態でないため、DL転送はDL結合処理終了後となる。また、次のページのDL生成はDL転送後になり、DL生成タスク404を2つで動作させる効果はかなり落ちる。
【0140】
図18(c)は、DL生成タスク404を2つで動作させ、かつ、本発明対応後の積み上げ時間を示す図である。
このケースでも、PDL解析の結果を順次2つのDL生成タスク404でDL生成するため、DL生成タスク404を1つで動作させたときの半分の時間で終了する。
また、生成されたDLの順番は描画順番と常に一致するため、各描画オブジェクトのDL生成後すぐにDL転送が可能である。さらに、次のページのDL生成もすぐに実行することが可能である。これらのため、DL生成タスク404を2つ動作させる効果を無駄なく発揮することができる。このため、CPUコア数に応じてPDL処理のパフォーマンスを向上することができる。
【0141】
以上示したように、本発明によれば、PDLデータの描画コマンドから中間コード(DL)を生成するまでの処理を、事前の並べ替えや事後の並べ替えを行うことなくマルチコアCPUを用いて並列に行っても、順序を変更できない描画コマンドについてはシーケンシャルのまま処理できるようにし、マルチコアCPUを無駄なく使用し、CPUコア数に応じてPDL処理のパフォーマンスを向上して、少ないメモリ資源でPDLデータを高速に処理し、印刷時間を短縮することができる。
【0142】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施例を組み合わせた構成も全て本発明に含まれるものである。
【0143】
(他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施例の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【0144】
101 画像形成装置
201 ROM
202 RAM
204 CPU
206 プリンタエンジン
207 レンダラ
211 受信部
212 解析部
213 中間コード生成管理部
214 中間コード生成部
215 展開処理部

【特許請求の範囲】
【請求項1】
ページ記述言語データに基づいて印刷を行う画像形成装置であって、
前記ページ記述言語データに含まれる描画コマンドを順次解析する解析手段と、
前記解析手段により解析された描画コマンドから描画コマンド単位で中間コードをそれぞれ並列に生成する複数の生成手段と、
前記複数の生成手段により生成された中間コードからイメージデータを生成するレンダリング手段と、
前記レンダリング手段により生成されたイメージデータを印刷する印刷手段と、
前記解析手段により解析された描画コマンドが、当該描画コマンドより先に解析され中間コード生成が終了していない各描画コマンドと処理順序を変更可能かどうか判定する判定手段と、
前記判定手段により前記いずれの描画コマンドとも処理順序変更可能と判定された描画コマンドについては、前記先に解析された描画コマンドの中間コード生成終了状況に関係なく前記生成手段に中間コード生成を依頼し、一方、前記判定手段により1又は複数の特定の描画コマンドと処理順序変更不可能と判定された描画コマンドについては、前記特定の描画コマンドの中間コード生成終了を待って前記生成手段に中間コード生成を依頼するように制御する管理手段と、
を有することを特徴とする画像形成装置。
【請求項2】
前記解析手段により解析され中間コード生成が終了していない描画コマンドを順次登録するための管理テーブルを有し、
前記判定手段は、前記解析手段により解析された描画コマンドが、前記管理テーブルに登録されている各描画コマンドと処理順序を変更可能かどうか判定するものであり、
前記管理手段は、前記判定手段により特定の描画コマンドと処理順序変更不可能と判定された描画コマンドについては、前記特定の描画コマンドを示す待合情報を付加した状態で前記管理テーブルに登録し、一方、前記判定手段により前記いずれの描画コマンドとも処理順序変更可能と判定された描画コマンドについては、前記待合情報なしの状態で前記管理テーブルに登録し、前記管理テーブルに登録されている各描画コマンドの状態に基づいて、前記各描画コマンドの中間コード生成を前記生成手段に依頼する、ことを特徴とする請求項1に記載の画像形成装置。
【請求項3】
前記管理手段は、前記生成手段が1の描画オブジェクトの中間コード生成を終了すると、その描画オブジェクトを示す待合情報を前記管理テーブルに登録されている描画コマンドから削除し、前記待合情報のない状態で前記管理テーブルに登録されている描画コマンドから中間コード生成を依頼することを特徴とする請求項2に記載の画像形成装置。
【請求項4】
前記判定手段は、2つの描画コマンドの描画位置に重なりが有り、且つ、描画する色が異なる場合に、前記2つの描画コマンドについて処理順序変更不可能と判定し、上記場合以外の場合に、前記2つの描画コマンドについて処理順序変更可能と判定する判定処理を行う、ことを特徴とする請求項1乃至3のいずれか1項に記載の画像形成装置。
【請求項5】
前記判定手段は、前記解析手段により解析された描画コマンドに、当該描画コマンドと前記処理順序の判定を行わない描画コマンドを示す示唆情報が付加されている場合、当該描画コマンドと前記示唆情報が示す描画コマンドと間では前記判定処理を行うことなく処理順序変更可能であるとみなす、ことを特徴とする請求項4に記載の画像形成装置。
【請求項6】
前記示唆情報は、前記ページ記述言語データを生成する情報処理装置で動作してプリンタドライバにより付加されることを特徴とする請求項5に記載の画像形成装置。
【請求項7】
前記示唆情報は、1の描画データを分割して生成された複数の描画コマンドに対して、該複数の描画コマンドを示す情報として付加されることを特徴とする請求項6に記載の画像形成装置。
【請求項8】
情報処理装置から受信するページ記述言語データに基づいて印刷を行う画像形成装置の制御方法であって、
解析手段が、前記ページ記述言語データに含まれる描画コマンドを順次解析する解析ステップと、
生成手段が、前記解析ステップで解析された描画コマンドから描画コマンド単位で中間コードをそれぞれ並列に生成する複数の生成ステップと、
レンダリング手段が、前記複数の生成ステップで生成された中間コードからイメージデータを生成するレンダリングステップと、
印刷手段が、前記レンダリングステップで生成されたイメージデータを印刷する印刷ステップと、
判定手段が、前記解析ステップで解析された描画コマンドが、当該描画コマンドより先に解析され中間コード生成が終了していない各描画コマンドと処理順序を変更可能かどうか判定する判定ステップと、
管理手段が、前記判定ステップで前記いずれの描画コマンドとも処理順序変更可能と判定された描画コマンドについては、前記先に解析された描画コマンドの中間コード生成終了状況に関係なく前記生成手段に中間コード生成を依頼し、一方、前記判定ステップで1又は複数の特定の描画コマンドと処理順序変更不可能と判定された描画コマンドについては、前記特定の描画コマンドの中間コード生成終了を待って前記生成手段に中間コード生成を依頼するように制御する管理ステップと、
を有することを特徴とする画像形成装置の制御方法。
【請求項9】
コンピュータを、請求項1乃至7のいずれか1項に記載された手段として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2013−22889(P2013−22889A)
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願番号】特願2011−161527(P2011−161527)
【出願日】平成23年7月25日(2011.7.25)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】