説明

画像形成装置、画像処理方法、プログラム

【課題】描画部の監視を必要としないで描画部への描画範囲の割り当てを動的に行うことができる画像形成装置及び画像処理方法を提供すること。
【解決手段】外部から取得した印刷データの画像を転写媒体に印刷する画像形成装置150であって、印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段12と、描画命令データを記憶する描画命令データ記憶手段15と、描画命令データを読み出して、予め分割されている描画範囲に対応づけられた描画命令を実行して描画処理する複数の描画処理手段302と、第一の描画範囲の描画処理が終了した第一の描画処理手段から描画終了の通知を受けた第二の描画処理手段が第二の描画範囲を分割して、第一の描画処理手段に第二の描画範囲の一部の描画を要求する描画範囲制御手段303を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、印刷データを描画処理する画像形成装置等に関し、特に、描画範囲を再編できる画像形成装置及び画像処理方法に関する。
【背景技術】
【0002】
従来の組み込み機器にはシングルコアのCPUが多く使用されてきたが、汎用PC(Personal Computer)のCPUにデュアルコアやクアッドコアといった複数のコアを持つマルチコアのCPUが普及することに伴い、組み込み機器にもマルチコアのCPUの導入が進められている。このため、プリンタにおいてもマルチコアの採用が検討されている。
【0003】
マルチコアを採用することでプリンタは、複数の処理を平行に行うことが容易になり処理の速度向上を図ることができる。一般にプリンタでは、PDLデータから中間データ(ディスプレイリスト)を生成するDL作成処理と、中間データをレンダリングする描画処理の2つの処理を実行する。そこで、複数のコアに描画処理を並行に実行させ、印刷処理を高速化することが考えられている(例えば、特許文献1参照。)。
【0004】
特許文献1には、マルチコアではないが複数の画像処理プロセッサが、1ページが複数に分割された複数の描画範囲をそれぞれ描画処理する画像処理装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に開示された画像処理装置は、ブロック分割部が各画像処理プロセッサの実行状況を確認し、アイドル状態にある画像処理プロセッサがあると、この画像処理プロセッサに描画範囲を割り当てるため、処理の負荷状況などを監視し続けなければならないという問題がある。
【0006】
本発明は、上記課題に鑑み、描画部の監視を必要としないで描画部への描画範囲の割り当てを動的に行うことができる画像形成装置、画像処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題に鑑み、本発明は、外部から取得した印刷データの画像を転写媒体に印刷する画像形成装置であって、前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、前記描画命令データを記憶する描画命令データ記憶手段と、前記描画命令データを読み出して、予め分割されている描画範囲に対応づけられた描画命令を実行して描画処理する複数の描画処理手段と、第一の描画範囲の描画処理が終了した第一の描画処理手段から描画終了の通知を受けた第二の描画範囲を描画処理中の第二の描画処理手段が、第二の描画範囲を分割して前記第一の描画処理手段に前記第二の描画範囲の一部の描画処理を要求する描画範囲制御部と、を有することを特徴とする。
【発明の効果】
【0008】
描画部の監視を必要としないで描画部への描画範囲の割り当てを動的に行うことができる画像形成装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【0009】
【図1】本実施形態の画像形成装置の概略的な特徴部を説明する図の一例である。
【図2】印刷システムの一例を示す図である。
【図3】画像形成装置のハードウェア構成図の一例である。
【図4】コントローラの機能を模式的に説明する図の一例である。
【図5】PDL部の機能ブロック図の一例を示す図である。
【図6】描画処理部の機能ブロック図の一例である。
【図7】描画処理部が描画範囲を再分割する手順を示すフローチャート図の一例である。
【図8】描画範囲再分割部が描画範囲を再分割する処理の手順を示すフローチャート図の一例である。
【図9】描画範囲の分割を模式的に説明する図の一例である。
【図10】描画結果メモリの分割について説明する図の一例である。
【図11】描画範囲の再分割後に実行される描画コマンドを模式的に示す図の一例である。
【図12】描画範囲とオブジェクトの関係の一例を示す図である。
【図13】描画部が、分割が必要か否かを判定する手順を示すフローチャート図の一例である。
【図14】描画処理部が2つの場合の描画範囲の一例を示す図である。
【図15】描画処理部が3つの場合の描画範囲の一例を示す図である。
【図16】描画処理部1が分割する描画範囲B、Dのいずれかを選択する基準の一例を説明する図の一例である。
【図17】描画処理部が3つの場合で描画範囲が4つの場合の分割例の一例を示す図である。
【図18】略同時に複数の描画処理部が描画処理を終了させた場合の分割例の一例を示す図である。
【発明を実施するための形態】
【0010】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図1は、本実施形態の画像形成装置の概略的な特徴部を説明する図の一例である。画像形成装置は複数の描画部を有し、各描画部が時間的に並行に描画処理を行えるように1ページを複数の描画範囲に予め分割している。そして、例えば、ページの上から順番に、描画範囲AとCが描画部1、描画範囲Bが描画部2、のように描画部1,2には描画範囲が割り当てられている。
【0011】
このため、描画部1は描画範囲Aの描画処理が終了すると、描画範囲Cの描画を開始する。また、前後して描画部2が描画範囲Bの描画処理を終了させる。本実施形態の画像形成装置は、描画部2が描画部1に描画範囲Cの描画処理のヘルプを申し出ることが特徴の1つである。
【0012】
描画部1は、分割が必要であるか否かの判断基準に基づき分割が必要であると判定すると、描画範囲Cを描画範囲C1とC2に分割し、描画範囲C2を描画部2に割り当てる。そして、描画部1は描画範囲C1の描画処理を再開し、描画部2は描画範囲C2の描画処理を開始する。したがって、描画範囲Cは2つの描画部1、2が描画処理するので、処理時間を短縮できる。
【0013】
また、描画部2が描画部1に描画処理を申し出るので、本実施形態の画像形成装置は、待ち状態の描画部があるかどうかを監視する特定の手段を必要としないで、複数の描画部への描画範囲の割り当てを動的に行うことができる。
【0014】
〔構成〕
図2は、印刷システム300の一例を示す図である。この印刷システム300ではホストPC(Personal Computer)150と画像形成装置200がネットワークを介して接続されている。
【0015】
ホストPC150がユーザの操作を受け付け、例えば何らかのアプリケーションプログラムがOSのグラフィック制御部(例えばGDI)に文書データの印刷を要求する。グラフィック制御部は、アプリケーションに依存しないAPI(基本関数)により文書データを描画する描画命令(中間ファイル)を生成する。
【0016】
この後、グラフィック制御部は、画像形成装置200が対応したPDLデータを生成するプリンタドライバを呼び出す。グラフィック制御部とプリンタドライバの間には、DDI(Device Driver Interface)と呼ばれるインタフェースが定義されている。プリンタドライバは、中間ファイルをプリンタが解釈可能なPDLデータに変換し、画像形成装置200に送信する。
【0017】
PDLデータとしては、PostScript、PCL、RPCS、PDF(Portable Document Format)、又は、XPSなどのフォーマットが知られており、PDLデータのフォーマットは画像形成装置200が解析可能なフォーマットである必要がある。
【0018】
画像形成装置200は、PDLデータを解析してディスプレイリスト(中間データと呼ばれることもある)を作成し、描画処理(レンダリング処理)などを行い印刷する。なお画像形成装置200は、プリンタ機能さえ有していればよいが、複写機、スキャナ、送信機能(FAX、電子メール、フォルダ)等を有していてもよい。
【0019】
図3は、画像形成装置200のハードウェア構成図の一例である。画像形成装置200は、画像形成装置200の全体を制御するコントローラ100 と、用紙に画像を印刷するためのエンジン160 と、ユーザが入力を行う操作パネル・状態を表示するパネル装置 170 とを有する。
【0020】
コントローラ100 は、CPU110、ROM120、RAM130、NVRAM140、ネットワークI/F151、エンジンI/F161、パネルI/F171、HDD180を有する。
【0021】
CPU110は、第1コア111、第2コア112、第3コア113、及び、第4コア114を有するマルチコア型のCPUであり、プログラム181に記述された命令を実行する。プログラム181は、第1コア111、第2コア112、第3コア113、及び、第4コア114のそれぞれ専用に4つに分かれていてもよいし、1つのプログラムを4つのコアが重複して実行してもよい。CPU110のコア数は2個以上であれば5個以上でもよい。また、マルチコア型でなく、マルチプロセッサ又はマルチCPUと呼ばれる、複数の独立したCPUを搭載してもよい。
【0022】
ROM120は、起動用のプログラムや初期設定値などが記憶されている。RAM130は、コントローラ100が作成するディスプレイリストの記憶場所やソフトウエアが動作するために必要なワークメモリとして利用される。NVRAM140は、画像形成装置200に設定された印刷条件などを保存しておく不揮発性メモリである。ネットワークI/F151は、ネットワーク上に接続されたホストPC150とデータを送受信する。エンジンI/F161は印刷指示等を行いエンジン160を制御する。
【0023】
エンジン160は、少なくとも画像形成を行うプロッタエンジンを有する。プロッタエンジンは、例えばタンデム型の感光ドラムを有し、ホストPC150から受信したPDLデータをレンダリングして得られた画像データに基づきレーザビームを変調し感光ドラムを走査して潜像を形成する。そして、潜像にトナーを付着して現像した1ページ毎のトナー画像を用紙に熱と圧力で転写する。なお、プロッタエンジンは、インクジェット方式でもよい。また、エンジン160には、スキャナエンジンやFAXエンジンがある。
【0024】
パネルI/F171はパネル装置170との入出力を制御する。HDD180はデータやプログラム181を記憶する。
【0025】
図4は、コントローラ100の機能を模式的に説明する図の一例である。図4において図3と同一部には同一の符号を付しその説明は省略する。コントローラ100の機能は、CPU110がプログラム181を実行して実現される、プリンタコントロールシステム204とPDL部205に代表される。
【0026】
プリンタコントロールシステム204は、ネットワークI/F151が受信するPDLデータを印刷するため、PDL部205にレンダリングを要求し、レンダリングにより得られた印刷イメージデータをPDL部205から取得する。その後、エンジンI/F161に印刷イメージデータの印刷を要求するなど、印刷の手順を制御する。
【0027】
PDL部205は、PDLデータをプリンタコントロールシステム204から受け取りレンダリングされた出力イメージデータを作成する。PDL部205は、PDLデータのフォーマットとしてPostScript PCL、RPCS、PDF、XPS等に対応している。
【0028】
図5は、PDL部205の機能ブロック図の一例を示す図である。PDL部205は、PDLパーサー12及び描画コアモジュール301を有する。また、描画コアモジュール301は描画モジュールI/F13、中間データ保存部14、中間データメモリ15、及び、描画処理部16を有する。
【0029】
PDLパーサー12は、PDLデータの種類に応じて構文解析を行い、ディスプレイリスト(中間データ)を作成する。描画コアモジュール301はディスプレイリストの描画命令を実行することでディスプレイリストにレンダリング処理を施し、印刷イメージデータを生成する。
【0030】
描画モジュールI/F13は、テキスト、イメージ、ベクターグラフィックス、及び、描画設定情報を受け取るためのI/Fである。中間データ保存部14は、テキスト、イメージ、ベクターグラフィックスなどの描画データと色や透過設定などをもつ描画設定情報(テキスト、イメージ、ベクターグラフィックスなどの描画データと描画設定情報がディスプレイリストである。)を中間データメモリ15に保存する。中間データメモリ15は、RAM130やHDD180等を実体とする。
【0031】
描画処理部16はそれぞれ、描画範囲毎に、ディスプレイリストを出力イメージデータにレンダリングする。3つの描画処理部16は同じ機能でもよいし、得意な描画処理(処理速度が速い描画処理)に特色がある等、異なった機能を有していてもよい。この図では描画処理部16は3つだが、1つ以上であれば個数は何個でもよい。なお、描画範囲とは、ページを長手方向に等間隔又は予め定めた間隔で区分したページ上の一範囲をいい、描画処理部16にとって既知である。
【0032】
図示する描画処理部16が3つなのは、CPU110のコア数を考慮したためであり、本実施形態では、4つのコアの1つをPDLパーサー12に、残りを描画処理部16に、それぞれ割り当てることができる。以下、複数の描画処理部16を区別する場合は描画処理部1〜3という。
【0033】
図6は、描画処理部16の機能ブロック図の一例を示す。各描画処理部16は、描画の処理を行い描画範囲の再分割が必要か否かを判定する描画部302と、描画範囲の再分割を行う描画範囲再分割部303と、を有する。
【0034】
描画部302は、ディスプレイリストを出力イメージデータにレンダリングする。また、描画部302は、描画範囲の再分割が必要であるか否かを判定する。必要であるか否かの判定については後述するが、例えば、描画範囲の面積、描画処理が終わっていない残り描画コマンドの残数、予め特定されている各描画処理部16のケイパビリティ(能力や機能、及び、その度合い)に基づく処理時間などが基準になる。なお、判断基準は描画処理部16によって異なってもよい。
【0035】
描画範囲再分割部303は再分割が必要であると判断されるときに描画範囲を再分割する。描画範囲再分割部303を各描画処理部16が有することで、描画処理部16が動的に描画範囲を分割することができる。
【0036】
〔再分割の手順〕
図7は、描画処理部16が描画範囲を再分割する手順を示すフローチャート図の一例である。図7では、描画処理部1が描画処理を完了しているが、描画処理部2が描画処理中であり、描画処理部1は描画処理部2をヘルプし、描画処理部2が描画範囲を再分割するものとする。描画処理部2が描画処理を完了しているが、描画処理部1が描画処理中の場合、描画処理部1と描画処理部2の処理が逆になるが手順は同じである。
【0037】
描画処理部1は、例えば、中間データ保存部14からディスプレイリストを中間データメモリ15に記憶したことを通知されると、あらかじめ最初に割り当てられている描画範囲の描画処理を開始する(S10)。
【0038】
描画処理部1は、最初に割り当てられている描画範囲の描画処理を完了すると、描画処理部2が描画処理を行っているか否か判定する(S20)。この判定はどのように行ってもよいが、例えば、描画処理部2が割り当てられたCPUコアの負荷率が所定値以上であること、描画範囲毎に設けられた処理が終了したことを示すフラグがセットされていないこと、等により判定される。
【0039】
描画処理部2が、描画処理を行っていない場合(S20のNo)、描画処理部1は描画処理すべき描画範囲はないとして図7の手順を終了させる。なお、3つ以上の描画処理部がある場合、1つでも描画処理部16が描画処理を行っていれば、描画処理部1は他の描画処理16を描画処理を行っていると判定する。
【0040】
描画処理部2が描画処理を行っている場合(S20のYes)、描画処理部1は描画処理部2に分割が必要か問い合わせる(S30)。この問い合わせは、例えば、コア間通信を利用する。コア間通信の態様はCPU110の設計によって様々であるが、例えば、共有メモリを介した通信や、各コアを貫く専用線(リング)を使用した通信や、各コアをメッシュ状に接続する専用線を使用した通信がある。
【0041】
問い合わせを受けた描画処理部2の描画部302は、再分割が必要か否かを判定する(S110)。再分割が必要か否かの判定については後述する。
【0042】
再分割が不要な場合(S110のNo)、描画処理部2の描画部302は不要という通知を描画処理部1に送信する(S120)。
【0043】
再分割が必要な場合(S110のYes)、描画処理部2の描画部302は必要という通知を描画処理部1に送信する(S130)。
【0044】
描画処理部1は問い合わせの結果を受信する(S40)。再分割が不要という問い合わせ結果を受信した場合、描画処理部1は再度、描画処理する必要がないので、図7の処理は終了する。
【0045】
再分割が必要という問い合わせ結果を受信すると描画処理部1は、描画処理部2に割込みする(S50)。この割込みにより描画処理部2は描画範囲の再分割を開始する。
【0046】
まず、描画処理部2は割込みにより、停止処理を開始する(S140)。停止処理は、描画処理から再分割の処理へ切り替えるための処理であり、例えば、描画処理部2の描画部302が実行している描画コマンドを終了させること、描画コマンドの描画結果を保存することなどである。描画部302は実行中の描画コマンドの処理が終了次第、描画範囲再分割部303を呼び出す。
【0047】
呼び出された描画範囲再分割部303は、描画範囲を再分割する(S150)。再分割の処理について詳細は次述する。
【0048】
そして、描画範囲再分割部303は、描画範囲の再分割が完了すると再分割の完了を描画処理部1に通知する(S160)。再分割の完了の通知には、描画処理部1に割り当てられた描画範囲等が含まれる。
【0049】
描画処理部1は再分割の完了を受信する(S60)。これにより、描画処理部1の描画部302は、再分割により割り当てられた描画範囲の描画処理を再開する。
【0050】
なお、描画処理部2はステップS140〜S160間に(描画処理部2が割込みを受けてから分割完了を送信するまでの間)、描画処理部3から割り込みされる可能性がある。この場合、描画処理部2は割り込みコントローラから2つの割込みを検出して、描画範囲を3つに再分割する。このような態様の再分割は、1つの描画範囲を同時に再分割することに相当する。
【0051】
図8は、描画範囲再分割部303が描画範囲を再分割する処理の手順を示すフローチャート図の一例である。図8の処理は、図7の説明では描画処理部2の描画範囲再分割部303が行う処理となるが、割込みを受け付けた描画処理部16の描画範囲再分割部303が実行する処理は同様である。
【0052】
まず、描画範囲再分割部303は、描画結果を保存する中間データメモリ15と描画範囲を分割する(S210)。描画範囲の分割とは、言葉どおり、描画範囲を2つに分割することである。ディスプレイリストの描画コマンドにはその描画コマンドの出力イメージがどの描画範囲に含まれるかという情報が含まれているので、描画部302は再分割により割り当てられた描画範囲の描画コマンドを選択的に実行すればよい。
【0053】
図9は、描画範囲の分割を模式的に説明する図の一例である。ディスプレイリストは各描画処理部16が処理可能なデータ形式であり、PDLデータの各種の描画命令や設定情報をリスト化したものである。例えば、「set foreground color(R,G,B)」は前景の色を指示する命令で、「set raster operation(Op Code)」は画像に施す演算を指示する命令で、「draw rectangle(x、y、w、h)」は描画位置とサイズを含む矩形の描画命令である。
【0054】
例えば、x、y、等がオブジェクト(描画コマンドで描画される図形など)の描画位置を表すので、ディスプレイリストにより描画コマンドがどの描画範囲に属するかは明らかとなる。
【0055】
したがって、描画範囲再分割部303が、描画範囲Aを例えば描画範囲BとCに2分割した場合、描画処理部1,2は、描画範囲Bに属する描画コマンド及び描画範囲Cに属する描画コマンドを特定することができる。
【0056】
描画範囲再分割部303は、再分割した描画範囲B,Cを描画処理部1,2に割り当てる。描画処理部1,2は、描画範囲が分かれば、ディスプレイリストの描画コマンドのうち、実行すべき描画コマンドを選別できる。
【0057】
次に、図10により、中間データメモリ15の分割について説明する。図10(a)は、再分割の前の描画範囲Aと中間データメモリ15のアドレスの対応の一例を示す。図10(a)では、描画範囲Aの描画結果は中間データメモリ15の0〜10のアドレスに記憶される。描画範囲の広さと中間データメモリ15のサイズは決まっており、描画範囲が分かれば必要となる中間データメモリ15のサイズも決まるようになっている。すなわち、描画範囲と中間データメモリ15のアドレスの対応は描画範囲再分割部303にとって既知となっている。
【0058】
図10(b)は、描画範囲の分割と中間データメモリ15の分割の関係を模式的に説明する図の一例である。描画範囲Aが描画範囲BとCに分割されている。描画範囲再分割部303は、描画範囲Bのサイズに基づき中間データメモリ15のサイズを決定し、中間データメモリ15の0〜10のアドレスを分割する。図では描画範囲Bに必要な中間データメモリ15のサイズは6程度であり、描画範囲再分割部303は中間データメモリ15の0〜5のアドレスを描画範囲Bに割り当てている。また、描画範囲再分割部303は中間データメモリ15の6〜10のアドレスを描画範囲Cに割り当てている。描画範囲再分割部303は割り当てた中間データメモリ15のアドレスを描画処理部1と2に通知する。
【0059】
図8に戻り、描画範囲再分割部303は、図9のように描画処理部1と2に描画範囲を割り当て、図10のように中間データメモリ15のアドレスを割り当てる(S220)。描画範囲の割り当てには例えば、1ページの長さ方向の始点と終点(以下、バンド位置という)を通知する。図9(b)や図10(b)を例にすると、描画範囲再分割部303は描画範囲Bのバンド位置を描画処理部2に通知し、描画範囲再分割部303は描画範囲Cのバンド位置を描画処理部1に通知する。
【0060】
描画処理部1と2の描画部302は、割り当てられた描画範囲B,Cに基づき、ディスプレイリストの描画コマンドの実行を再開する(S230)。
【0061】
図11は、描画範囲の再分割後に実行される描画コマンドを模式的に示す図の一例である。描画処理部2が描画コマンド2を実行中に、描画処理部1が描画処理部2に割込みした場合、停止処理として、描画処理部2の描画部302は実行している描画コマンド2の実行を継続する。したがって、再開される描画コマンドは描画コマンド3以下である。
【0062】
このため、描画処理部1と描画処理部2が描画コマンドの実行を再開した場合、描画処理部1と描画処理部2は描画コマンド3から実行する。描画処理部2は、描画コマンド3以下を実行する際、割り当てられた描画範囲Bの描画コマンドであるか否かを判定し、描画範囲Bに含まれる描画コマンドのみを実行する。描画処理部1は、描画コマンド3以下を実行する際、割り当てられた描画範囲Cの描画コマンドであるか否かを判定し、描画範囲Cに含まれる描画コマンドのみを実行する。こうすることで、描画範囲が実際に分割される。
【0063】
〔分割の判定〕
描画部302が、分割が必要か否かを判定する手順について説明する。例えば、描画処理部1〜3の能力が以下のようになっているとする。
描画処理部1 :グラフィック描画が得意
描画処理部2 :グラフィック描画が苦手
描画処理部3 :特徴無し
描画処理部1〜3にこのような特徴があり、描画範囲に図12のようなオブジェクトが存在するとする。図示するように描画範囲1〜4には文字が、描画範囲5にはグラフィックが存在する。
【0064】
例えば、描画処理部1〜3がそれぞれ描画範囲A〜Cを担当した場合、描画処理部1が描画範囲Aを描き終えた後、次の描画範囲Dの描画処理を開始する。その後、描画処理部2が描画範囲Bを描き終えた後、描画範囲Eを書き始める。しかし、描画範囲Eはグラフィックが多数あり描画処理部2は苦手な処理なので無駄に時間がかかってしまう。換言すると、描画範囲Eはグラフィックが多いので、描画処理部1が描画することで、描画部302の処理が効率的になる。このような考え方を描画部302は分割が必要か否かを判定する際に適用する。
【0065】
図13は描画部302が、分割が必要か否かを判定する手順を示すフローチャート図の一例である。まず、描画部302は他の描画処理部(描画処理部1とする)から問い合わせがあったか否かを判定する(S310)。問い合わせがない場合、図13の手順は終了する。
【0066】
問い合わせがあった場合(S310のYes)、描画部302は自身と、問い合わせた描画処理部1の描画部302のケイパビリティを読み出す(S320)。ケイパビリティは、描画処理部1〜3(の各描画部)の能力を描画対象のオブジェクト毎に数値化したものである。
<描画処理部1>
文字 :2
イメージ :2
グラフィックス :3
(1:不得意、2:通常、3:得意)
なお、各描画部302のケイパビリティは、ディスプレイリスト生成前までの任意のタイミングで各描画処理部16にプリンタコントロールシステム204から伝えられる。
【0067】
描画部302は、自身のケイパビリティで処理中の描画範囲の未処理の描画コマンドを重み付けして処理時間Aを推定し、問い合わせのあった描画処理部1のケイパビリティで処理中の描画範囲の描画コマンドを重み付けして処理時間Bを推定する(S330)。例えば、描画処理部1の処理時間Bなら、文字やイメージの描画コマンドを"文字を中位の速度で処理する時間"としてカウントし、グラフィックスの描画コマンドの処理時間を"グラフィクスを早い時間で処理する時間"としてカウントすることで、処理時間Bを推定できる。同様の計算を描画処理部2についても行えば、処理時間Aを推定できる。
【0068】
処理時間Bが処理時間Aに対し同じかそれ以下なら、描画範囲を分割することで処理時間が半分以下になると期待できる。しかし、例えば、処理時間Bが処理時間Aに対し2倍だと、描画範囲を等分に再分割しても処理時間がほとんど短くならない。したがって、例えば、処理時間B≧2×処理時間Aの場合、分割が有効でないことが分かる。
【0069】
描画部302はこのようにして再分割が有効か否かを判定する(S340)。再分割が有効の場合(S340のYes)、描画部302は再分割が必要と判定し(S350)、再分割が有効でない場合(S340のNo)、描画部302は分割が不要と判定する(S360)。
【0070】
描画部302は判定結果を問い合わせのあった描画処理部1にコア間通信により通知する。これにより、描画処理の終わった描画処理部1は、割り込みするか否かを判定できる。
【0071】
なお、問い合わせを受けた描画処理部2が描画している描画範囲に属する描画コマンドのうち未処理の描画コマンドが十分に少ない場合、再分割する必要性が低いので、処理時間に関係なく、再分割しないと判定する。
【0072】
また、問い合わせを受けた描画処理部2が描画している描画範囲に属する描画コマンドのうち未処理の描画コマンドが所定値以上であっても、該描画範囲の面積が十分に狭い場合、再分割する必要性が低いので、処理時間に関係なく、再分割しないと判定する。
【0073】
したがって、総合すると再分割が必要であると判定する好ましい条件は、以下を全て満たすこととなる。なお、一部の条件をだけを採用してもよい。
・問い合わせを受けた描画処理部2が描画している描画範囲に属する描画コマンドのうち未処理の描画コマンドが所定数以上、
・問い合わせを受けた描画処理部2が描画している描画範囲の面積が閾値以上、
・処理時間B≧2×処理時間A
〔分割例〕
図14(a)は、描画処理部16が2つの場合の描画範囲の一例を示す図である。描画範囲Aは描画処理部1に、描画範囲Bは描画処理部2に、描画範囲Cは描画処理部1に、それぞれ割り当てられている。この場合、描画処理部1による描画範囲Aの処理、又は、描画処理部2による描画版値Bの処理、のどちらかが先に終了する。
・描画処理部1による描画範囲Aの処理が先に終了した場合、描画処理部1は描画範囲Cの描画処理を開始する。この場合、描画処理部2は描画処理部1に、分割が必要か否かを問い合わせることになる。
・描画処理部2による描画範囲Bの処理が先に終了した場合、描画処理部2は描画処理部1に、分割が必要か否かを問い合わせることになる。この場合、描画処理部1にとって描画範囲Aの残りと描画範囲Cの描画処理が残っていることになる。描画範囲Aの残りの描画コマンドが少なければ、描画処理部1は再分割不要と判定するが、描画範囲Cについては再分割が必要であると判定すると考えられる。
【0074】
したがって、描画処理部1が描画処理部2よりも極端に処理が速いなどの事情がない限り、いずれの場合も描画処理部1の描画部302が、再分割が必要か否かを判定し、描画処理部1の描画範囲再分割部303が描画範囲を再分割する。
【0075】
図14(b)は、描画範囲Cを等分に再分割した場合の再分割例を模式的に示す図の一例である。描画処理部1の描画部302は分割が必要であると判定し、描画範囲再分割部303は描画範囲Cを同じサイズの描画範囲C1とC2に再分割している。
【0076】
このように分割することで描画範囲の数(図では3つ)や描画処理部の数(図では2個)に関係なく、処理負荷を分散することができる。また、描画処理部16を監視する手段が必要になることもない。
【0077】
<再分割時の描画範囲のサイズの決定>
再分割された描画範囲のサイズについて説明する。図のように等分に分割するのでなく、描画処理部16の性能などによって分割割合を変えてもよい。具体的には、描画処理部16の性能に比例して描画範囲を分割することや、処理の速い描画コマンドを多く含むように描画範囲を分割する方法などがある。
【0078】
例えば、描画処理部1、2の、「1クロックあたりの平均命令実行数クロック×周波数」が明らかな場合、描画範囲再分割部303はこの処理能力(例えば、クロック周波数)に比例して、描画範囲を再分割する。
【0079】
また、分割の判定にて説明したように、ケイパビリティにて推定した処理時間に応じて、分化するサイズを決定することもできる。例えば、ケイパビリティを考慮した描画処理部1の処理時間Bが、ケイパビリティを考慮した描画処理部2の処理時間Aに対し2倍の場合、問い合わせを受けた描画部302と問い合わせした描画部302は、2:1の比に描画範囲を分割することで処理時間がほぼ同じになり、1つの描画範囲の全体の描画処理時間を短縮できる(描画部302が描画範囲の全体を処理するのに比べ約0.67に短縮できる)。すなわち、描画部302は処理能力の比を描画範囲のサイズに乗じて分割する範囲を決定することができる。
【0080】
また、例えば、処理の速い描画コマンドを多く含むように描画範囲を分割する場合、描画範囲再分割部303は、1つの描画範囲を例えば1/4ずつに区分して、1/4毎にケイパビリティを考慮した描画処理部1,2の処理時間を算出する。そして、最も合計の処理時間が短くなるように、描画範囲の1/4毎に描画処理部1,2への割り当てを決定する。
【0081】
なお、描画コマンドの内容を考慮して分割する場合、すでに処理済みの描画コマンドは処理時間の算出対象から除くことが好ましい。
【0082】
〔描画処理部が3つの場合〕
図15(a)は、描画処理部が3つの場合の描画範囲の一例を示す図である。描画範囲Aは描画処理部1に、描画範囲Bは描画処理部2に、描画範囲Cは描画処理部3に、それぞれ割り当てられている。このように3つの描画処理部1〜3が3つの描画範囲を描画処理する場合、3つの描画処理部1〜3のいずれかが一番最初に描画処理を完了させるが、その後の処理手順は描画処理部1〜3に共通なので、図では描画処理部1が描画範囲Aの描画範囲を完了させたとする。
【0083】
描画処理部1にとって描画処理中の描画処理部が2つあるので、描画処理部が3つ以上ある場合、描画処理部1の描画処理が終わった後、処理中の描画範囲が複数存在する。このため、描画処理部1は何らかの基準によって分割する描画範囲B、Dのいずれかを選択する必要がある。
【0084】
図16は、描画処理部1が分割する描画範囲B、Dのいずれかを選択する基準の一例を説明する図の一例である。図16はそれぞれの描画処理部1〜3が処理している描画コマンドの進行状況を表している。描画処理部1は描画処理が終わった状態なので描画位置はなく、描画処理部2は描画コマンド3を処理しており、描画処理部3は描画コマンド2を処理している途中である。
【0085】
したがって、描画処理部3の方が描画コマンドが多く残っていることになるので、描画処理部3の方が残りの描画処理に時間がかかりそうであると予測できる。描画処理部1は、描画処理部2,3に対し、実行している描画コマンドの位置をコア間通信により問い合わせる。そして、描画処理部1は、描画処理部2,3のうち、残りの描画コマンドの数が多い方を(又は最も多い)、分割が必要か否かを問い合わせる描画処理部16に決定する。このようにして、決定した描画処理部2又は3に、描画処理部1は描画範囲の再分割が必要かを問い合わせる。
【0086】
なお、描画処理部1はランダムに分割する描画処理部2,3を選んでもよい。また、図16では未処理描画コマンドの数の単純な残数を分割要求先の描画処理部としているか、ケイパビリティに基づき残りの各描画コマンドの処理時間を推定し、処理時間の大小により分割が必要か否かを問い合わせる描画処理部2,3を決定する方法もある。また、描画処理部31処理した際に処理時間がより短くなる描画範囲を割り当てられている描画処理部2又は3を選択することもできる。
【0087】
このようにして、描画処理部1は例えば描画処理部3に分割が必要か否かを判定し、描画処理部3の描画範囲再分割部303が描画範囲を再分割する。描画処理部2のほうが描画処理部3よりも多くの未処理の描画コマンドを抱えている場合には描画処理部2の描画範囲Bを分割する。
【0088】
図15(b)は、描画範囲Cを等分に再分割した場合の再分割例を模式的に示す図の一例である。描画処理部3の描画部302は分割が必要であると判定し、描画範囲再分割部303は描画範囲Cを同じサイズの描画範囲C1とC2に再分割している。なお、図のように等分に分割するのでなく、図14にて説明したように、描画処理部1,3の性能などによって分割割合を変えることができる。
【0089】
〔描画処理部が3つで描画範囲が4つの場合〕
図17(a)は、描画処理部が3つの場合で描画範囲が4つの場合の分割例の一例を示す図である。描画範囲Aは描画処理部1に、描画範囲Bは描画処理部2に、描画範囲Cは描画処理部3に、描画範囲Dは描画処理部1にそれぞれ割り当てられている。このように3つの描画処理部1〜3が4つの描画範囲を描画処理する場合、最も描画範囲が広い描画処理部1の描画処理が最も長い時間かかると考えられる。
【0090】
すなわち、描画処理部1が一番上の描画範囲Aの描画処理を終え、一番下の描画範囲Dの描画処理を行っている際に、例えば、描画処理部3が描画範囲Cの描画処理を終えたとして説明する。
【0091】
この場合、描画処理部3から見て描画処理中なのは描画処理部1と2である。よって、描画処理部3は、図16で説明したような基準で、描画処理部1又は2を選択し、分割が必要か否かを問い合わせる。ここでは、割り当てられている描画範囲の面積が大きい描画処理部2に分割を問い合わせるとする。
【0092】
図17(b)は、描画範囲Bを等分に再分割した場合の再分割例を模式的に示す図の一例である。描画処理部2の描画部302は分割が必要であると判定し、描画範囲再分割部303は描画範囲Bを同じサイズの描画範囲B1とB2に再分割している。
【0093】
このように、描画処理部に不均一に描画範囲が割り当てられていても、各描画処理部1〜3は描画範囲を再分割して、1ページの描画処理の処理時間が短くなるように、描画範囲を再分割することができる。
【0094】
〔複数の描画処理部がほぼ同時に描画処理を終了した場合〕
図18(a)は、描画処理部1と3がほぼ同時に処理を終了し、描画処理部2だけが処理を行っている処理状況を模式的に示す図の一例である。描画処理部1,3が割り当てられた描画範囲の描画処理を終了させた場合、全ての描画処理部1〜3が残りの描画範囲の描画処理を行うことで、描画処理の時間を短縮できる。描画処理部1と3はいずれも描画処理部2に分割が必要か否かを問い合わせる。これにより、描画処理部2は描画範囲Bを3つに再分割すべきことを検出できる。
【0095】
図18(b)は、描画範囲Bを3つに等分に再分割した場合の再分割例を模式的に示す図の一例である。
【0096】
描画処理部2の描画部302は、描画処理部1と描画処理部2の問い合わせに対し分割が必要であると判定し、描画処理部2の描画範囲再分割部303は描画範囲Bを3つに再分割している。この後、描画処理部1,2,3は、描画範囲B1、B2、B3の描画処理を再開する。
【0097】
なお、描画処理部1〜3のケイパビリティは各描画処理部1〜3にとって既知であるので、処理時間が同程度になるように、描画範囲を割り当てるようにしておけば、均等に割り当てることができる。
【0098】
以上説明したように、本実施形態の画像形成装置は、複数の描画部への描画範囲の割り当てを動的に行うことができる。また、描画部を監視する特定の手段を必要とすることもない。
【符号の説明】
【0099】
12 PDLパーサー
13 描画モジュールI/F
14 中間データ保存部
15 中間データメモリ
16 描画処理部
100 コントローラ
110 CPU
111 第1コア
112 第2コア
113 第3コア
114 第4コア
120 ROM
130 RAM
140 NVRAM
150 ホストPC
151 ネットワークI/F
161 エンジンI/F
171 パネルI/F
160 エンジン
170 パネル装置
180 HDD
200 画像形成装置
204 プリンタコントロールシステム
205 PDL部
300 印刷システム
301 描画コアモジュール
302 描画部
303 描画範囲再分割部
【先行技術文献】
【特許文献】
【0100】
【特許文献1】特開2006−092125号公報

【特許請求の範囲】
【請求項1】
外部から取得した印刷データの画像を転写媒体に印刷する画像形成装置であって、
前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、
前記描画命令データを記憶する描画命令データ記憶手段と、
前記描画命令データを読み出して、予め分割されている描画範囲に対応づけられた描画命令を実行して描画処理する複数の描画処理手段と、
第一の描画範囲の描画処理が終了した第一の描画処理手段から描画終了の通知を受けた第二の描画範囲を描画処理中の第二の描画処理手段が、前記第二の描画範囲を分割して前記第一の描画処理手段に前記第二の描画範囲の一部の描画処理を要求することを可能とする描画範囲制御部と、
を有することを特徴とする画像形成装置。
【請求項2】
前記描画範囲制御手段は、所定の基準に基づき前記第二の描画範囲の分割が必要か否かを判定する、
ことを特徴とする請求項1記載の画像形成装置。
【請求項3】
前記描画範囲制御手段は、前記第二の描画範囲に対応づけられた描画命令のうちの未処理の描画命令の数が所定数以上か否かに基づき、前記第二の描画範囲の分割が必要か否かを判定する、
ことを特徴とする請求項2記載の画像形成装置。
【請求項4】
前記描画範囲制御手段は、前記未処理の描画命令に、前記第一の描画処理手段のケイパビリティを重み付けして得た処理時間と、前記第二の描画処理手段のケイパビリティを重み付けして得た処理時間とを比較して、前記第二の描画範囲の分割が必要か否かを判定する、
ことを特徴とする請求項3記載の画像形成装置。
【請求項5】
前記描画範囲制御手段は、前記第二の描画範囲の面積が閾値以上か否かに基づき、前記第二の描画範囲の分割が必要か否かを判定する、
ことを特徴とする請求項2記載の画像形成装置。
【請求項6】
前記描画範囲制御手段は、前記第二の描画範囲の面積を均等に分割する、ことを特徴とする請求項2〜5いずれか1項記載の画像形成装置。
【請求項7】
前記描画範囲制御手段は、前記第二の描画範囲に対応づけられた描画命令のうちの未処理の描画命令に、前記第一の描画処理手段のケイパビリティ及び前記第二の描画処理手段のケイパビリティに基づく重み付けをそれぞれ行い、前記第一の描画処理手段と前記第二の描画処理手段の処理時間が均等になるように前記第二の描画範囲の面積を分割する、ことを特徴とする請求項6記載の画像形成装置。
【請求項8】
前記第二の描画処理手段が、前記第一の描画処理手段から前記第一の描画範囲の描画処理の通知を受けた後、前記第二の描画範囲を分割する前に、第三の描画範囲の描画処理が終了した第三の描画処理手段から描画終了の通知を受けた場合、
前記描画範囲制御手段は、前記第二の描画範囲を3つの前記分割後描画範囲に分割する、ことを特徴とする請求項1記載の画像形成装置。
【請求項9】
外部から取得した印刷データの画像を転写媒体に印刷する画像形成装置の画像処理方法であって、
描画命令生成手段が、前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成するステップと、
前記描画命令データを描画命令データ記憶手段に記憶するステップと、
複数の描画処理手段が、前記描画命令データを読み出して、予め分割されている描画範囲に対応づけられた描画命令を実行して描画処理するステップと、
第一の描画処理手段が第一の描画範囲の描画処理が終了した旨を第二の描画範囲を描画処理中の第二の描画処理手段に通知するステップと、
描画範囲制御手段が、前記第二の描画範囲を分割して前記第一の描画処理手段に前記第二の描画範囲の一部の描画処理を要求することを可能とするステップと、
を有することを特徴とする画像処理方法。
【請求項10】
外部から取得した印刷データの画像を転写媒体に印刷する画像形成装置に、
前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成ステップと、
前記描画命令データを描画命令データ記憶手段に記憶するステップと、
前記描画命令データを読み出して、予め分割されている描画範囲に対応づけられた描画命令を実行して描画処理する複数の描画処理ステップと、
第一の描画範囲の描画処理が終了した第一の描画処理手段から描画終了の通知を受けた第二の描画範囲を描画処理中の第二の描画処理手段が、前記第二の描画範囲を分割して前記第一の描画処理手段に前記第二の描画範囲の一部の描画処理を要求することを可能とする描画範囲制御ステップと、
を実行させるプログラム。

【図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


【公開番号】特開2012−81626(P2012−81626A)
【公開日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願番号】特願2010−228837(P2010−228837)
【出願日】平成22年10月8日(2010.10.8)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】