(57)【要約】【課題】描画部の監視を必要としないで描画部への描画範囲の割り当てを動的に行うことができる画像形成装置及び画像処理方法を提供すること。【解決手段】外部から取得した印刷データの画像を転写媒体に印刷する画像形成装置１５０であって、印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段１２と、描画命令データを記憶する描画命令データ記憶手段１５と、描画命令データを読み出して、予め分割されている描画範囲に対応づけられた描画命令を実行して描画処理する複数の描画処理手段３０２と、第一の描画範囲の描画処理が終了した第一の描画処理手段から描画終了の通知を受けた第二の描画処理手段が第二の描画範囲を分割して、第一の描画処理手段に第二の描画範囲の一部の描画を要求する描画範囲制御手段３０３を有する。【選択図】図１
2012081626.tif 000002
【特許請求の範囲】
【請求項１】
外部から取得した印刷データの画像を転写媒体に印刷する画像形成装置であって、
前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、
前記描画命令データを記憶する描画命令データ記憶手段と、
前記描画命令データを読み出して、予め分割されている描画範囲に対応づけられた描画命令を実行して描画処理する複数の描画処理手段と、
第一の描画範囲の描画処理が終了した第一の描画処理手段から描画終了の通知を受けた第二の描画範囲を描画処理中の第二の描画処理手段が、前記第二の描画範囲を分割して前記第一の描画処理手段に前記第二の描画範囲の一部の描画処理を要求することを可能とする描画範囲制御部と、
を有することを特徴とする画像形成装置。
【請求項２】
前記描画範囲制御手段は、所定の基準に基づき前記第二の描画範囲の分割が必要か否かを判定する、
ことを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記描画範囲制御手段は、前記第二の描画範囲に対応づけられた描画命令のうちの未処理の描画命令の数が所定数以上か否かに基づき、前記第二の描画範囲の分割が必要か否かを判定する、
ことを特徴とする請求項２記載の画像形成装置。
【請求項４】
前記描画範囲制御手段は、前記未処理の描画命令に、前記第一の描画処理手段のケイパビリティを重み付けして得た処理時間と、前記第二の描画処理手段のケイパビリティを重み付けして得た処理時間とを比較して、前記第二の描画範囲の分割が必要か否かを判定する、
ことを特徴とする請求項３記載の画像形成装置。
【請求項５】
前記描画範囲制御手段は、前記第二の描画範囲の面積が閾値以上か否かに基づき、前記第二の描画範囲の分割が必要か否かを判定する、
ことを特徴とする請求項２記載の画像形成装置。
【請求項６】
前記描画範囲制御手段は、前記第二の描画範囲の面積を均等に分割する、ことを特徴とする請求項２〜５いずれか１項記載の画像形成装置。
【請求項７】
前記描画範囲制御手段は、前記第二の描画範囲に対応づけられた描画命令のうちの未処理の描画命令に、前記第一の描画処理手段のケイパビリティ及び前記第二の描画処理手段のケイパビリティに基づく重み付けをそれぞれ行い、前記第一の描画処理手段と前記第二の描画処理手段の処理時間が均等になるように前記第二の描画範囲の面積を分割する、ことを特徴とする請求項６記載の画像形成装置。
【請求項８】
前記第二の描画処理手段が、前記第一の描画処理手段から前記第一の描画範囲の描画処理の通知を受けた後、前記第二の描画範囲を分割する前に、第三の描画範囲の描画処理が終了した第三の描画処理手段から描画終了の通知を受けた場合、
前記描画範囲制御手段は、前記第二の描画範囲を３つの前記分割後描画範囲に分割する、ことを特徴とする請求項１記載の画像形成装置。
【請求項９】
外部から取得した印刷データの画像を転写媒体に印刷する画像形成装置の画像処理方法であって、
描画命令生成手段が、前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成するステップと、
前記描画命令データを描画命令データ記憶手段に記憶するステップと、
複数の描画処理手段が、前記描画命令データを読み出して、予め分割されている描画範囲に対応づけられた描画命令を実行して描画処理するステップと、
第一の描画処理手段が第一の描画範囲の描画処理が終了した旨を第二の描画範囲を描画処理中の第二の描画処理手段に通知するステップと、
描画範囲制御手段が、前記第二の描画範囲を分割して前記第一の描画処理手段に前記第二の描画範囲の一部の描画処理を要求することを可能とするステップと、
を有することを特徴とする画像処理方法。
【請求項１０】
外部から取得した印刷データの画像を転写媒体に印刷する画像形成装置に、
前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成ステップと、
前記描画命令データを描画命令データ記憶手段に記憶するステップと、
前記描画命令データを読み出して、予め分割されている描画範囲に対応づけられた描画命令を実行して描画処理する複数の描画処理ステップと、
第一の描画範囲の描画処理が終了した第一の描画処理手段から描画終了の通知を受けた第二の描画範囲を描画処理中の第二の描画処理手段が、前記第二の描画範囲を分割して前記第一の描画処理手段に前記第二の描画範囲の一部の描画処理を要求することを可能とする描画範囲制御ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷データを描画処理する画像形成装置等に関し、特に、描画範囲を再編できる画像形成装置及び画像処理方法に関する。
【背景技術】
【０００２】
従来の組み込み機器にはシングルコアのＣＰＵが多く使用されてきたが、汎用ＰＣ（Personal  Computer）のＣＰＵにデュアルコアやクアッドコアといった複数のコアを持つマルチコアのＣＰＵが普及することに伴い、組み込み機器にもマルチコアのＣＰＵの導入が進められている。このため、プリンタにおいてもマルチコアの採用が検討されている。
【０００３】
マルチコアを採用することでプリンタは、複数の処理を平行に行うことが容易になり処理の速度向上を図ることができる。一般にプリンタでは、ＰＤＬデータから中間データ（ディスプレイリスト）を生成するＤＬ作成処理と、中間データをレンダリングする描画処理の２つの処理を実行する。そこで、複数のコアに描画処理を並行に実行させ、印刷処理を高速化することが考えられている（例えば、特許文献１参照。）。
【０００４】
特許文献１には、マルチコアではないが複数の画像処理プロセッサが、１ページが複数に分割された複数の描画範囲をそれぞれ描画処理する画像処理装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示された画像処理装置は、ブロック分割部が各画像処理プロセッサの実行状況を確認し、アイドル状態にある画像処理プロセッサがあると、この画像処理プロセッサに描画範囲を割り当てるため、処理の負荷状況などを監視し続けなければならないという問題がある。
【０００６】
本発明は、上記課題に鑑み、描画部の監視を必要としないで描画部への描画範囲の割り当てを動的に行うことができる画像形成装置、画像処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題に鑑み、本発明は、外部から取得した印刷データの画像を転写媒体に印刷する画像形成装置であって、前記印刷データを解析し、描画対象とされるオブジェクトの描画命令をページ毎に記述した描画命令データを生成する描画命令生成手段と、前記描画命令データを記憶する描画命令データ記憶手段と、前記描画命令データを読み出して、予め分割されている描画範囲に対応づけられた描画命令を実行して描画処理する複数の描画処理手段と、第一の描画範囲の描画処理が終了した第一の描画処理手段から描画終了の通知を受けた第二の描画範囲を描画処理中の第二の描画処理手段が、第二の描画範囲を分割して前記第一の描画処理手段に前記第二の描画範囲の一部の描画処理を要求する描画範囲制御部と、を有することを特徴とする。
【発明の効果】
【０００８】
描画部の監視を必要としないで描画部への描画範囲の割り当てを動的に行うことができる画像形成装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態の画像形成装置の概略的な特徴部を説明する図の一例である。
【図２】印刷システムの一例を示す図である。
【図３】画像形成装置のハードウェア構成図の一例である。
【図４】コントローラの機能を模式的に説明する図の一例である。
【図５】ＰＤＬ部の機能ブロック図の一例を示す図である。
【図６】描画処理部の機能ブロック図の一例である。
【図７】描画処理部が描画範囲を再分割する手順を示すフローチャート図の一例である。
【図８】描画範囲再分割部が描画範囲を再分割する処理の手順を示すフローチャート図の一例である。
【図９】描画範囲の分割を模式的に説明する図の一例である。
【図１０】描画結果メモリの分割について説明する図の一例である。
【図１１】描画範囲の再分割後に実行される描画コマンドを模式的に示す図の一例である。
【図１２】描画範囲とオブジェクトの関係の一例を示す図である。
【図１３】描画部が、分割が必要か否かを判定する手順を示すフローチャート図の一例である。
【図１４】描画処理部が２つの場合の描画範囲の一例を示す図である。
【図１５】描画処理部が３つの場合の描画範囲の一例を示す図である。
【図１６】描画処理部１が分割する描画範囲Ｂ、Ｄのいずれかを選択する基準の一例を説明する図の一例である。
【図１７】描画処理部が３つの場合で描画範囲が４つの場合の分割例の一例を示す図である。
【図１８】略同時に複数の描画処理部が描画処理を終了させた場合の分割例の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図１は、本実施形態の画像形成装置の概略的な特徴部を説明する図の一例である。画像形成装置は複数の描画部を有し、各描画部が時間的に並行に描画処理を行えるように１ページを複数の描画範囲に予め分割している。そして、例えば、ページの上から順番に、描画範囲ＡとＣが描画部１、描画範囲Ｂが描画部２、のように描画部１，２には描画範囲が割り当てられている。
【００１１】
このため、描画部１は描画範囲Ａの描画処理が終了すると、描画範囲Ｃの描画を開始する。また、前後して描画部２が描画範囲Ｂの描画処理を終了させる。本実施形態の画像形成装置は、描画部２が描画部１に描画範囲Ｃの描画処理のヘルプを申し出ることが特徴の１つである。
【００１２】
描画部１は、分割が必要であるか否かの判断基準に基づき分割が必要であると判定すると、描画範囲Ｃを描画範囲Ｃ１とＣ２に分割し、描画範囲Ｃ２を描画部２に割り当てる。そして、描画部１は描画範囲Ｃ１の描画処理を再開し、描画部２は描画範囲Ｃ２の描画処理を開始する。したがって、描画範囲Ｃは２つの描画部１、２が描画処理するので、処理時間を短縮できる。
【００１３】
また、描画部２が描画部１に描画処理を申し出るので、本実施形態の画像形成装置は、待ち状態の描画部があるかどうかを監視する特定の手段を必要としないで、複数の描画部への描画範囲の割り当てを動的に行うことができる。
【００１４】
〔構成〕
図２は、印刷システム３００の一例を示す図である。この印刷システム３００ではホストＰＣ（Personal Computer）１５０と画像形成装置２００がネットワークを介して接続されている。
【００１５】
ホストＰＣ１５０がユーザの操作を受け付け、例えば何らかのアプリケーションプログラムがＯＳのグラフィック制御部（例えばＧＤＩ）に文書データの印刷を要求する。グラフィック制御部は、アプリケーションに依存しないＡＰＩ（基本関数）により文書データを描画する描画命令（中間ファイル）を生成する。
【００１６】
この後、グラフィック制御部は、画像形成装置２００が対応したＰＤＬデータを生成するプリンタドライバを呼び出す。グラフィック制御部とプリンタドライバの間には、ＤＤＩ(Device Driver Interface)と呼ばれるインタフェースが定義されている。プリンタドライバは、中間ファイルをプリンタが解釈可能なＰＤＬデータに変換し、画像形成装置２００に送信する。
【００１７】
ＰＤＬデータとしては、ＰｏｓｔＳｃｒｉｐｔ、ＰＣＬ、ＲＰＣＳ、ＰＤＦ（Ｐｏｒｔａｂｌｅ Ｄｏｃｕｍｅｎｔ Ｆｏｒｍａｔ）、又は、ＸＰＳなどのフォーマットが知られており、ＰＤＬデータのフォーマットは画像形成装置２００が解析可能なフォーマットである必要がある。
【００１８】
画像形成装置２００は、ＰＤＬデータを解析してディスプレイリスト（中間データと呼ばれることもある）を作成し、描画処理（レンダリング処理）などを行い印刷する。なお画像形成装置２００は、プリンタ機能さえ有していればよいが、複写機、スキャナ、送信機能（FAX、電子メール、フォルダ）等を有していてもよい。
【００１９】
図３は、画像形成装置２００のハードウェア構成図の一例である。画像形成装置２００は、画像形成装置２００の全体を制御するコントローラ１００ と、用紙に画像を印刷するためのエンジン１６０ と、ユーザが入力を行う操作パネル・状態を表示するパネル装置 １７０ とを有する。
【００２０】
コントローラ１００ は、ＣＰＵ１１０、ＲＯＭ１２０、ＲＡＭ１３０、ＮＶＲＡＭ１４０、ネットワークＩ／Ｆ１５１、エンジンＩ／Ｆ１６１、パネルＩ／Ｆ１７１、ＨＤＤ１８０を有する。
【００２１】
ＣＰＵ１１０は、第１コア１１１、第２コア１１２、第３コア１１３、及び、第４コア１１４を有するマルチコア型のＣＰＵであり、プログラム１８１に記述された命令を実行する。プログラム１８１は、第１コア１１１、第２コア１１２、第３コア１１３、及び、第４コア１１４のそれぞれ専用に４つに分かれていてもよいし、１つのプログラムを４つのコアが重複して実行してもよい。ＣＰＵ１１０のコア数は２個以上であれば５個以上でもよい。また、マルチコア型でなく、マルチプロセッサ又はマルチＣＰＵと呼ばれる、複数の独立したＣＰＵを搭載してもよい。
【００２２】
ＲＯＭ１２０は、起動用のプログラムや初期設定値などが記憶されている。ＲＡＭ１３０は、コントローラ１００が作成するディスプレイリストの記憶場所やソフトウエアが動作するために必要なワークメモリとして利用される。ＮＶＲＡＭ１４０は、画像形成装置２００に設定された印刷条件などを保存しておく不揮発性メモリである。ネットワークＩ／Ｆ１５１は、ネットワーク上に接続されたホストＰＣ１５０とデータを送受信する。エンジンＩ／Ｆ１６１は印刷指示等を行いエンジン１６０を制御する。
【００２３】
エンジン１６０は、少なくとも画像形成を行うプロッタエンジンを有する。プロッタエンジンは、例えばタンデム型の感光ドラムを有し、ホストＰＣ１５０から受信したＰＤＬデータをレンダリングして得られた画像データに基づきレーザビームを変調し感光ドラムを走査して潜像を形成する。そして、潜像にトナーを付着して現像した１ページ毎のトナー画像を用紙に熱と圧力で転写する。なお、プロッタエンジンは、インクジェット方式でもよい。また、エンジン１６０には、スキャナエンジンやＦＡＸエンジンがある。
【００２４】
パネルＩ／Ｆ１７１はパネル装置１７０との入出力を制御する。ＨＤＤ１８０はデータやプログラム１８１を記憶する。
【００２５】
図４は、コントローラ１００の機能を模式的に説明する図の一例である。図４において図３と同一部には同一の符号を付しその説明は省略する。コントローラ１００の機能は、ＣＰＵ１１０がプログラム１８１を実行して実現される、プリンタコントロールシステム２０４とＰＤＬ部２０５に代表される。
【００２６】
プリンタコントロールシステム２０４は、ネットワークＩ／Ｆ１５１が受信するＰＤＬデータを印刷するため、ＰＤＬ部２０５にレンダリングを要求し、レンダリングにより得られた印刷イメージデータをＰＤＬ部２０５から取得する。その後、エンジンＩ／Ｆ１６１に印刷イメージデータの印刷を要求するなど、印刷の手順を制御する。
【００２７】
ＰＤＬ部２０５は、ＰＤＬデータをプリンタコントロールシステム２０４から受け取りレンダリングされた出力イメージデータを作成する。ＰＤＬ部２０５は、ＰＤＬデータのフォーマットとしてＰｏｓｔＳｃｒｉｐｔ  ＰＣＬ、ＲＰＣＳ、ＰＤＦ、ＸＰＳ等に対応している。
【００２８】
図５は、ＰＤＬ部２０５の機能ブロック図の一例を示す図である。ＰＤＬ部２０５は、ＰＤＬパーサー１２及び描画コアモジュール３０１を有する。また、描画コアモジュール３０１は描画モジュールＩ／Ｆ１３、中間データ保存部１４、中間データメモリ１５、及び、描画処理部１６を有する。
【００２９】
ＰＤＬパーサー１２は、ＰＤＬデータの種類に応じて構文解析を行い、ディスプレイリスト（中間データ）を作成する。描画コアモジュール３０１はディスプレイリストの描画命令を実行することでディスプレイリストにレンダリング処理を施し、印刷イメージデータを生成する。
【００３０】
描画モジュールＩ／Ｆ１３は、テキスト、イメージ、ベクターグラフィックス、及び、描画設定情報を受け取るためのＩ／Ｆである。中間データ保存部１４は、テキスト、イメージ、ベクターグラフィックスなどの描画データと色や透過設定などをもつ描画設定情報（テキスト、イメージ、ベクターグラフィックスなどの描画データと描画設定情報がディスプレイリストである。）を中間データメモリ１５に保存する。中間データメモリ１５は、ＲＡＭ１３０やＨＤＤ１８０等を実体とする。
【００３１】
描画処理部１６はそれぞれ、描画範囲毎に、ディスプレイリストを出力イメージデータにレンダリングする。３つの描画処理部１６は同じ機能でもよいし、得意な描画処理（処理速度が速い描画処理）に特色がある等、異なった機能を有していてもよい。この図では描画処理部１６は３つだが、1つ以上であれば個数は何個でもよい。なお、描画範囲とは、ページを長手方向に等間隔又は予め定めた間隔で区分したページ上の一範囲をいい、描画処理部１６にとって既知である。
【００３２】
図示する描画処理部１６が３つなのは、ＣＰＵ１１０のコア数を考慮したためであり、本実施形態では、４つのコアの１つをＰＤＬパーサー１２に、残りを描画処理部１６に、それぞれ割り当てることができる。以下、複数の描画処理部１６を区別する場合は描画処理部１〜３という。
【００３３】
図６は、描画処理部１６の機能ブロック図の一例を示す。各描画処理部１６は、描画の処理を行い描画範囲の再分割が必要か否かを判定する描画部３０２と、描画範囲の再分割を行う描画範囲再分割部３０３と、を有する。
【００３４】
描画部３０２は、ディスプレイリストを出力イメージデータにレンダリングする。また、描画部３０２は、描画範囲の再分割が必要であるか否かを判定する。必要であるか否かの判定については後述するが、例えば、描画範囲の面積、描画処理が終わっていない残り描画コマンドの残数、予め特定されている各描画処理部１６のケイパビリティ（能力や機能、及び、その度合い）に基づく処理時間などが基準になる。なお、判断基準は描画処理部１６によって異なってもよい。
【００３５】
描画範囲再分割部３０３は再分割が必要であると判断されるときに描画範囲を再分割する。描画範囲再分割部３０３を各描画処理部１６が有することで、描画処理部１６が動的に描画範囲を分割することができる。
【００３６】
〔再分割の手順〕
図７は、描画処理部１６が描画範囲を再分割する手順を示すフローチャート図の一例である。図7では、描画処理部１が描画処理を完了しているが、描画処理部２が描画処理中であり、描画処理部１は描画処理部２をヘルプし、描画処理部２が描画範囲を再分割するものとする。描画処理部２が描画処理を完了しているが、描画処理部１が描画処理中の場合、描画処理部１と描画処理部２の処理が逆になるが手順は同じである。
【００３７】
描画処理部１は、例えば、中間データ保存部１４からディスプレイリストを中間データメモリ１５に記憶したことを通知されると、あらかじめ最初に割り当てられている描画範囲の描画処理を開始する（Ｓ１０）。
【００３８】
描画処理部１は、最初に割り当てられている描画範囲の描画処理を完了すると、描画処理部２が描画処理を行っているか否か判定する（Ｓ２０）。この判定はどのように行ってもよいが、例えば、描画処理部２が割り当てられたＣＰＵコアの負荷率が所定値以上であること、描画範囲毎に設けられた処理が終了したことを示すフラグがセットされていないこと、等により判定される。
【００３９】
描画処理部２が、描画処理を行っていない場合（Ｓ２０のＮｏ）、描画処理部１は描画処理すべき描画範囲はないとして図７の手順を終了させる。なお、３つ以上の描画処理部がある場合、１つでも描画処理部１６が描画処理を行っていれば、描画処理部１は他の描画処理１６を描画処理を行っていると判定する。
【００４０】
描画処理部２が描画処理を行っている場合（Ｓ２０のＹｅｓ）、描画処理部１は描画処理部２に分割が必要か問い合わせる（Ｓ３０）。この問い合わせは、例えば、コア間通信を利用する。コア間通信の態様はＣＰＵ１１０の設計によって様々であるが、例えば、共有メモリを介した通信や、各コアを貫く専用線（リング）を使用した通信や、各コアをメッシュ状に接続する専用線を使用した通信がある。
【００４１】
問い合わせを受けた描画処理部２の描画部３０２は、再分割が必要か否かを判定する（Ｓ１１０）。再分割が必要か否かの判定については後述する。
【００４２】
再分割が不要な場合（Ｓ１１０のＮｏ）、描画処理部２の描画部３０２は不要という通知を描画処理部１に送信する（Ｓ１２０）。
【００４３】
再分割が必要な場合（Ｓ１１０のＹｅｓ）、描画処理部２の描画部３０２は必要という通知を描画処理部１に送信する（Ｓ１３０）。
【００４４】
描画処理部１は問い合わせの結果を受信する（Ｓ４０）。再分割が不要という問い合わせ結果を受信した場合、描画処理部１は再度、描画処理する必要がないので、図７の処理は終了する。
【００４５】
再分割が必要という問い合わせ結果を受信すると描画処理部１は、描画処理部２に割込みする（Ｓ５０）。この割込みにより描画処理部２は描画範囲の再分割を開始する。
【００４６】
まず、描画処理部２は割込みにより、停止処理を開始する（Ｓ１４０）。停止処理は、描画処理から再分割の処理へ切り替えるための処理であり、例えば、描画処理部２の描画部３０２が実行している描画コマンドを終了させること、描画コマンドの描画結果を保存することなどである。描画部３０２は実行中の描画コマンドの処理が終了次第、描画範囲再分割部３０３を呼び出す。
【００４７】
呼び出された描画範囲再分割部３０３は、描画範囲を再分割する（Ｓ１５０）。再分割の処理について詳細は次述する。
【００４８】
そして、描画範囲再分割部３０３は、描画範囲の再分割が完了すると再分割の完了を描画処理部１に通知する（Ｓ１６０）。再分割の完了の通知には、描画処理部１に割り当てられた描画範囲等が含まれる。
【００４９】
描画処理部１は再分割の完了を受信する（Ｓ６０）。これにより、描画処理部１の描画部３０２は、再分割により割り当てられた描画範囲の描画処理を再開する。
【００５０】
なお、描画処理部２はステップＳ１４０〜Ｓ１６０間に（描画処理部２が割込みを受けてから分割完了を送信するまでの間）、描画処理部３から割り込みされる可能性がある。この場合、描画処理部２は割り込みコントローラから２つの割込みを検出して、描画範囲を３つに再分割する。このような態様の再分割は、１つの描画範囲を同時に再分割することに相当する。
【００５１】
図８は、描画範囲再分割部３０３が描画範囲を再分割する処理の手順を示すフローチャート図の一例である。図８の処理は、図７の説明では描画処理部２の描画範囲再分割部３０３が行う処理となるが、割込みを受け付けた描画処理部１６の描画範囲再分割部３０３が実行する処理は同様である。
【００５２】
まず、描画範囲再分割部３０３は、描画結果を保存する中間データメモリ１５と描画範囲を分割する（Ｓ２１０）。描画範囲の分割とは、言葉どおり、描画範囲を２つに分割することである。ディスプレイリストの描画コマンドにはその描画コマンドの出力イメージがどの描画範囲に含まれるかという情報が含まれているので、描画部３０２は再分割により割り当てられた描画範囲の描画コマンドを選択的に実行すればよい。
【００５３】
図９は、描画範囲の分割を模式的に説明する図の一例である。ディスプレイリストは各描画処理部１６が処理可能なデータ形式であり、ＰＤＬデータの各種の描画命令や設定情報をリスト化したものである。例えば、「set foreground color（R,G,B）」は前景の色を指示する命令で、「set  raster operation（Op Code）」は画像に施す演算を指示する命令で、「draw rectangle（x、ｙ、ｗ、ｈ）」は描画位置とサイズを含む矩形の描画命令である。
【００５４】
例えば、ｘ、ｙ、等がオブジェクト（描画コマンドで描画される図形など）の描画位置を表すので、ディスプレイリストにより描画コマンドがどの描画範囲に属するかは明らかとなる。
【００５５】
したがって、描画範囲再分割部３０３が、描画範囲Ａを例えば描画範囲ＢとＣに２分割した場合、描画処理部１，２は、描画範囲Ｂに属する描画コマンド及び描画範囲Ｃに属する描画コマンドを特定することができる。
【００５６】
描画範囲再分割部３０３は、再分割した描画範囲Ｂ，Ｃを描画処理部１，２に割り当てる。描画処理部１，２は、描画範囲が分かれば、ディスプレイリストの描画コマンドのうち、実行すべき描画コマンドを選別できる。
【００５７】
次に、図１０により、中間データメモリ１５の分割について説明する。図１０（ａ）は、再分割の前の描画範囲Ａと中間データメモリ１５のアドレスの対応の一例を示す。図１０（ａ）では、描画範囲Ａの描画結果は中間データメモリ１５の０〜１０のアドレスに記憶される。描画範囲の広さと中間データメモリ１５のサイズは決まっており、描画範囲が分かれば必要となる中間データメモリ１５のサイズも決まるようになっている。すなわち、描画範囲と中間データメモリ１５のアドレスの対応は描画範囲再分割部３０３にとって既知となっている。
【００５８】
図１０（ｂ）は、描画範囲の分割と中間データメモリ１５の分割の関係を模式的に説明する図の一例である。描画範囲Ａが描画範囲ＢとＣに分割されている。描画範囲再分割部３０３は、描画範囲Ｂのサイズに基づき中間データメモリ１５のサイズを決定し、中間データメモリ１５の０〜１０のアドレスを分割する。図では描画範囲Ｂに必要な中間データメモリ１５のサイズは６程度であり、描画範囲再分割部３０３は中間データメモリ１５の０〜５のアドレスを描画範囲Ｂに割り当てている。また、描画範囲再分割部３０３は中間データメモリ１５の６〜１０のアドレスを描画範囲Ｃに割り当てている。描画範囲再分割部３０３は割り当てた中間データメモリ１５のアドレスを描画処理部１と２に通知する。
【００５９】
図８に戻り、描画範囲再分割部３０３は、図９のように描画処理部１と２に描画範囲を割り当て、図１０のように中間データメモリ１５のアドレスを割り当てる（Ｓ２２０）。描画範囲の割り当てには例えば、1ページの長さ方向の始点と終点（以下、バンド位置という）を通知する。図９（ｂ）や図１０（ｂ）を例にすると、描画範囲再分割部３０３は描画範囲Ｂのバンド位置を描画処理部２に通知し、描画範囲再分割部３０３は描画範囲Ｃのバンド位置を描画処理部１に通知する。
【００６０】
描画処理部１と２の描画部３０２は、割り当てられた描画範囲Ｂ，Ｃに基づき、ディスプレイリストの描画コマンドの実行を再開する（Ｓ２３０）。
【００６１】
図１１は、描画範囲の再分割後に実行される描画コマンドを模式的に示す図の一例である。描画処理部２が描画コマンド２を実行中に、描画処理部１が描画処理部２に割込みした場合、停止処理として、描画処理部２の描画部３０２は実行している描画コマンド２の実行を継続する。したがって、再開される描画コマンドは描画コマンド３以下である。
【００６２】
このため、描画処理部１と描画処理部２が描画コマンドの実行を再開した場合、描画処理部１と描画処理部２は描画コマンド３から実行する。描画処理部２は、描画コマンド３以下を実行する際、割り当てられた描画範囲Ｂの描画コマンドであるか否かを判定し、描画範囲Ｂに含まれる描画コマンドのみを実行する。描画処理部１は、描画コマンド３以下を実行する際、割り当てられた描画範囲Ｃの描画コマンドであるか否かを判定し、描画範囲Ｃに含まれる描画コマンドのみを実行する。こうすることで、描画範囲が実際に分割される。
【００６３】
〔分割の判定〕
描画部３０２が、分割が必要か否かを判定する手順について説明する。例えば、描画処理部１〜３の能力が以下のようになっているとする。
描画処理部１        ：グラフィック描画が得意
描画処理部２        ：グラフィック描画が苦手
描画処理部３        ：特徴無し
描画処理部１〜３にこのような特徴があり、描画範囲に図１２のようなオブジェクトが存在するとする。図示するように描画範囲１〜４には文字が、描画範囲５にはグラフィックが存在する。
【００６４】
例えば、描画処理部１〜３がそれぞれ描画範囲Ａ〜Ｃを担当した場合、描画処理部１が描画範囲Ａを描き終えた後、次の描画範囲Ｄの描画処理を開始する。その後、描画処理部２が描画範囲Ｂを描き終えた後、描画範囲Ｅを書き始める。しかし、描画範囲Ｅはグラフィックが多数あり描画処理部２は苦手な処理なので無駄に時間がかかってしまう。換言すると、描画範囲Ｅはグラフィックが多いので、描画処理部１が描画することで、描画部３０２の処理が効率的になる。このような考え方を描画部３０２は分割が必要か否かを判定する際に適用する。
【００６５】
図１３は描画部３０２が、分割が必要か否かを判定する手順を示すフローチャート図の一例である。まず、描画部３０２は他の描画処理部（描画処理部１とする）から問い合わせがあったか否かを判定する（Ｓ３１０）。問い合わせがない場合、図１３の手順は終了する。
【００６６】
問い合わせがあった場合（Ｓ３１０のＹｅｓ）、描画部３０２は自身と、問い合わせた描画処理部１の描画部３０２のケイパビリティを読み出す（Ｓ３２０）。ケイパビリティは、描画処理部１〜３（の各描画部）の能力を描画対象のオブジェクト毎に数値化したものである。
＜描画処理部1＞
文字        ：2
イメージ    ：2
グラフィックス    ：3
（１：不得意、２：通常、３：得意）
なお、各描画部３０２のケイパビリティは、ディスプレイリスト生成前までの任意のタイミングで各描画処理部１６にプリンタコントロールシステム２０４から伝えられる。
【００６７】
描画部３０２は、自身のケイパビリティで処理中の描画範囲の未処理の描画コマンドを重み付けして処理時間Ａを推定し、問い合わせのあった描画処理部１のケイパビリティで処理中の描画範囲の描画コマンドを重み付けして処理時間Ｂを推定する（Ｓ３３０）。例えば、描画処理部１の処理時間Ｂなら、文字やイメージの描画コマンドを"文字を中位の速度で処理する時間"としてカウントし、グラフィックスの描画コマンドの処理時間を"グラフィクスを早い時間で処理する時間"としてカウントすることで、処理時間Ｂを推定できる。同様の計算を描画処理部２についても行えば、処理時間Ａを推定できる。
【００６８】
処理時間Ｂが処理時間Ａに対し同じかそれ以下なら、描画範囲を分割することで処理時間が半分以下になると期待できる。しかし、例えば、処理時間Ｂが処理時間Ａに対し２倍だと、描画範囲を等分に再分割しても処理時間がほとんど短くならない。したがって、例えば、処理時間Ｂ≧２×処理時間Ａの場合、分割が有効でないことが分かる。
【００６９】
描画部３０２はこのようにして再分割が有効か否かを判定する（Ｓ３４０）。再分割が有効の場合（Ｓ３４０のＹｅｓ）、描画部３０２は再分割が必要と判定し（Ｓ３５０）、再分割が有効でない場合（Ｓ３４０のＮｏ）、描画部３０２は分割が不要と判定する（Ｓ３６０）。
【００７０】
描画部３０２は判定結果を問い合わせのあった描画処理部１にコア間通信により通知する。これにより、描画処理の終わった描画処理部１は、割り込みするか否かを判定できる。
【００７１】
なお、問い合わせを受けた描画処理部２が描画している描画範囲に属する描画コマンドのうち未処理の描画コマンドが十分に少ない場合、再分割する必要性が低いので、処理時間に関係なく、再分割しないと判定する。
【００７２】
また、問い合わせを受けた描画処理部２が描画している描画範囲に属する描画コマンドのうち未処理の描画コマンドが所定値以上であっても、該描画範囲の面積が十分に狭い場合、再分割する必要性が低いので、処理時間に関係なく、再分割しないと判定する。
【００７３】
したがって、総合すると再分割が必要であると判定する好ましい条件は、以下を全て満たすこととなる。なお、一部の条件をだけを採用してもよい。
・問い合わせを受けた描画処理部２が描画している描画範囲に属する描画コマンドのうち未処理の描画コマンドが所定数以上、
・問い合わせを受けた描画処理部２が描画している描画範囲の面積が閾値以上、
・処理時間Ｂ≧２×処理時間Ａ
〔分割例〕
図１４（ａ）は、描画処理部１６が２つの場合の描画範囲の一例を示す図である。描画範囲Ａは描画処理部１に、描画範囲Ｂは描画処理部２に、描画範囲Ｃは描画処理部１に、それぞれ割り当てられている。この場合、描画処理部１による描画範囲Ａの処理、又は、描画処理部２による描画版値Ｂの処理、のどちらかが先に終了する。
・描画処理部１による描画範囲Ａの処理が先に終了した場合、描画処理部１は描画範囲Ｃの描画処理を開始する。この場合、描画処理部２は描画処理部１に、分割が必要か否かを問い合わせることになる。
・描画処理部２による描画範囲Ｂの処理が先に終了した場合、描画処理部２は描画処理部１に、分割が必要か否かを問い合わせることになる。この場合、描画処理部１にとって描画範囲Ａの残りと描画範囲Ｃの描画処理が残っていることになる。描画範囲Ａの残りの描画コマンドが少なければ、描画処理部１は再分割不要と判定するが、描画範囲Cについては再分割が必要であると判定すると考えられる。
【００７４】
したがって、描画処理部１が描画処理部２よりも極端に処理が速いなどの事情がない限り、いずれの場合も描画処理部１の描画部３０２が、再分割が必要か否かを判定し、描画処理部１の描画範囲再分割部３０３が描画範囲を再分割する。
【００７５】
図１４（ｂ）は、描画範囲Ｃを等分に再分割した場合の再分割例を模式的に示す図の一例である。描画処理部１の描画部３０２は分割が必要であると判定し、描画範囲再分割部３０３は描画範囲Ｃを同じサイズの描画範囲Ｃ１とＣ２に再分割している。
【００７６】
このように分割することで描画範囲の数（図では３つ）や描画処理部の数（図では２個）に関係なく、処理負荷を分散することができる。また、描画処理部１６を監視する手段が必要になることもない。
【００７７】
＜再分割時の描画範囲のサイズの決定＞
再分割された描画範囲のサイズについて説明する。図のように等分に分割するのでなく、描画処理部１６の性能などによって分割割合を変えてもよい。具体的には、描画処理部１６の性能に比例して描画範囲を分割することや、処理の速い描画コマンドを多く含むように描画範囲を分割する方法などがある。
【００７８】
例えば、描画処理部１、２の、「1クロックあたりの平均命令実行数クロック×周波数」が明らかな場合、描画範囲再分割部３０３はこの処理能力（例えば、クロック周波数）に比例して、描画範囲を再分割する。
【００７９】
また、分割の判定にて説明したように、ケイパビリティにて推定した処理時間に応じて、分化するサイズを決定することもできる。例えば、ケイパビリティを考慮した描画処理部１の処理時間Ｂが、ケイパビリティを考慮した描画処理部２の処理時間Ａに対し２倍の場合、問い合わせを受けた描画部３０２と問い合わせした描画部３０２は、２：１の比に描画範囲を分割することで処理時間がほぼ同じになり、１つの描画範囲の全体の描画処理時間を短縮できる（描画部３０２が描画範囲の全体を処理するのに比べ約０．６７に短縮できる）。すなわち、描画部３０２は処理能力の比を描画範囲のサイズに乗じて分割する範囲を決定することができる。
【００８０】
また、例えば、処理の速い描画コマンドを多く含むように描画範囲を分割する場合、描画範囲再分割部３０３は、１つの描画範囲を例えば１／４ずつに区分して、１／４毎にケイパビリティを考慮した描画処理部１，２の処理時間を算出する。そして、最も合計の処理時間が短くなるように、描画範囲の１／４毎に描画処理部１，２への割り当てを決定する。
【００８１】
なお、描画コマンドの内容を考慮して分割する場合、すでに処理済みの描画コマンドは処理時間の算出対象から除くことが好ましい。
【００８２】
〔描画処理部が３つの場合〕
図１５（ａ）は、描画処理部が３つの場合の描画範囲の一例を示す図である。描画範囲Ａは描画処理部１に、描画範囲Ｂは描画処理部２に、描画範囲Ｃは描画処理部３に、それぞれ割り当てられている。このように３つの描画処理部１〜３が３つの描画範囲を描画処理する場合、３つの描画処理部１〜３のいずれかが一番最初に描画処理を完了させるが、その後の処理手順は描画処理部１〜３に共通なので、図では描画処理部１が描画範囲Ａの描画範囲を完了させたとする。
【００８３】
描画処理部１にとって描画処理中の描画処理部が２つあるので、描画処理部が３つ以上ある場合、描画処理部１の描画処理が終わった後、処理中の描画範囲が複数存在する。このため、描画処理部１は何らかの基準によって分割する描画範囲Ｂ、Ｄのいずれかを選択する必要がある。
【００８４】
図１６は、描画処理部１が分割する描画範囲Ｂ、Ｄのいずれかを選択する基準の一例を説明する図の一例である。図１６はそれぞれの描画処理部１〜３が処理している描画コマンドの進行状況を表している。描画処理部１は描画処理が終わった状態なので描画位置はなく、描画処理部２は描画コマンド３を処理しており、描画処理部３は描画コマンド２を処理している途中である。
【００８５】
したがって、描画処理部３の方が描画コマンドが多く残っていることになるので、描画処理部３の方が残りの描画処理に時間がかかりそうであると予測できる。描画処理部１は、描画処理部２，３に対し、実行している描画コマンドの位置をコア間通信により問い合わせる。そして、描画処理部１は、描画処理部２，３のうち、残りの描画コマンドの数が多い方を（又は最も多い）、分割が必要か否かを問い合わせる描画処理部１６に決定する。このようにして、決定した描画処理部２又は３に、描画処理部１は描画範囲の再分割が必要かを問い合わせる。
【００８６】
なお、描画処理部１はランダムに分割する描画処理部２，３を選んでもよい。また、図１６では未処理描画コマンドの数の単純な残数を分割要求先の描画処理部としているか、ケイパビリティに基づき残りの各描画コマンドの処理時間を推定し、処理時間の大小により分割が必要か否かを問い合わせる描画処理部２，３を決定する方法もある。また、描画処理部３１処理した際に処理時間がより短くなる描画範囲を割り当てられている描画処理部２又は３を選択することもできる。
【００８７】
このようにして、描画処理部１は例えば描画処理部３に分割が必要か否かを判定し、描画処理部３の描画範囲再分割部３０３が描画範囲を再分割する。描画処理部２のほうが描画処理部３よりも多くの未処理の描画コマンドを抱えている場合には描画処理部２の描画範囲Ｂを分割する。
【００８８】
図１５（ｂ）は、描画範囲Ｃを等分に再分割した場合の再分割例を模式的に示す図の一例である。描画処理部３の描画部３０２は分割が必要であると判定し、描画範囲再分割部３０３は描画範囲Cを同じサイズの描画範囲C１とC２に再分割している。なお、図のように等分に分割するのでなく、図１４にて説明したように、描画処理部１，３の性能などによって分割割合を変えることができる。
【００８９】
〔描画処理部が３つで描画範囲が４つの場合〕
図１７（ａ）は、描画処理部が３つの場合で描画範囲が４つの場合の分割例の一例を示す図である。描画範囲Ａは描画処理部１に、描画範囲Ｂは描画処理部２に、描画範囲Ｃは描画処理部３に、描画範囲Ｄは描画処理部１にそれぞれ割り当てられている。このように３つの描画処理部１〜３が４つの描画範囲を描画処理する場合、最も描画範囲が広い描画処理部１の描画処理が最も長い時間かかると考えられる。
【００９０】
すなわち、描画処理部１が一番上の描画範囲Ａの描画処理を終え、一番下の描画範囲Ｄの描画処理を行っている際に、例えば、描画処理部３が描画範囲Ｃの描画処理を終えたとして説明する。
【００９１】
この場合、描画処理部３から見て描画処理中なのは描画処理部1と２である。よって、描画処理部３は、図１６で説明したような基準で、描画処理部1又は２を選択し、分割が必要か否かを問い合わせる。ここでは、割り当てられている描画範囲の面積が大きい描画処理部２に分割を問い合わせるとする。
【００９２】
図１７（ｂ）は、描画範囲Ｂを等分に再分割した場合の再分割例を模式的に示す図の一例である。描画処理部２の描画部３０２は分割が必要であると判定し、描画範囲再分割部３０３は描画範囲Ｂを同じサイズの描画範囲Ｂ１とＢ２に再分割している。
【００９３】
このように、描画処理部に不均一に描画範囲が割り当てられていても、各描画処理部１〜３は描画範囲を再分割して、１ページの描画処理の処理時間が短くなるように、描画範囲を再分割することができる。
【００９４】
〔複数の描画処理部がほぼ同時に描画処理を終了した場合〕
図１８（ａ）は、描画処理部１と３がほぼ同時に処理を終了し、描画処理部２だけが処理を行っている処理状況を模式的に示す図の一例である。描画処理部１，３が割り当てられた描画範囲の描画処理を終了させた場合、全ての描画処理部１〜３が残りの描画範囲の描画処理を行うことで、描画処理の時間を短縮できる。描画処理部１と３はいずれも描画処理部２に分割が必要か否かを問い合わせる。これにより、描画処理部２は描画範囲Bを３つに再分割すべきことを検出できる。
【００９５】
図１８（ｂ）は、描画範囲Ｂを３つに等分に再分割した場合の再分割例を模式的に示す図の一例である。
【００９６】
描画処理部２の描画部３０２は、描画処理部１と描画処理部２の問い合わせに対し分割が必要であると判定し、描画処理部２の描画範囲再分割部３０３は描画範囲Ｂを３つに再分割している。この後、描画処理部１，２，３は、描画範囲Ｂ１、Ｂ２、Ｂ３の描画処理を再開する。
【００９７】
なお、描画処理部１〜３のケイパビリティは各描画処理部１〜３にとって既知であるので、処理時間が同程度になるように、描画範囲を割り当てるようにしておけば、均等に割り当てることができる。
【００９８】
以上説明したように、本実施形態の画像形成装置は、複数の描画部への描画範囲の割り当てを動的に行うことができる。また、描画部を監視する特定の手段を必要とすることもない。
【符号の説明】
【００９９】
１２        ＰＤＬパーサー
１３        描画モジュールＩ／Ｆ
１４        中間データ保存部
１５        中間データメモリ
１６        描画処理部
１００      コントローラ
１１０      ＣＰＵ
１１１      第１コア
１１２      第２コア
１１３      第３コア
１１４      第４コア
１２０      ＲＯＭ
１３０      ＲＡＭ
１４０      ＮＶＲＡＭ
１５０      ホストＰＣ
１５１      ネットワークＩ／Ｆ
１６１      エンジンＩ／Ｆ
１７１      パネルＩ／Ｆ
１６０      エンジン
１７０      パネル装置
１８０      ＨＤＤ
２００      画像形成装置
２０４      プリンタコントロールシステム
２０５      ＰＤＬ部  
３００      印刷システム
３０１      描画コアモジュール
３０２      描画部
３０３      描画範囲再分割部
【先行技術文献】
【特許文献】
【０１００】
【特許文献１】特開２００６−０９２１２５号公報
【図１】
2012081626.tif 000003
【図２】
2012081626.tif 000004
【図３】
2012081626.tif 000005
【図４】
2012081626.tif 000006
【図５】
2012081626.tif 000007
【図６】
2012081626.tif 000008
【図７】
2012081626.tif 000009
【図８】
2012081626.tif 000010
【図９】
2012081626.tif 000011
【図１０】
2012081626.tif 000012
【図１１】
2012081626.tif 000013
【図１２】
2012081626.tif 000014
【図１３】
2012081626.tif 000015
【図１４】
2012081626.tif 000016
【図１５】
2012081626.tif 000017
【図１６】
2012081626.tif 000018
【図１７】
2012081626.tif 000019
【図１８】
2012081626.tif 000020