(57)【特許請求の範囲】
【請求項１】
複数ページの処理を並行して行うページ処理手段と、
前記ページ処理手段における負荷レベルをページごとに検出する負荷判定手段と、
前記負荷判定手段による検出結果に応じて前記ページ処理手段の制御を行う制御手段と、
を有し、
前記ページ処理手段は、処理対象のページに含まれる１又は２以上の画像データにエッジ抽出処理のスレッドを割り当て、当該スレッドにより抽出された各画像データのエッジを合成し、
前記制御手段は、前記負荷判定手段による判定の結果に応じて、前記ページ処理手段により割り当てられるスレッドの優先順位を指定するスレッド優先順位指定手段を有することを特徴とする画像処理装置。
【請求項２】
前記負荷判定手段は、２以上の検査処理の基準を有し、処理開始からの経過時間に応じて前記２以上の検査処理の基準のうちから１の基準を選択することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記スレッド優先順位指定手段は、前記負荷判定手段により負荷レベルが閾値よりも高いと検出されたページのスレッドの優先順位を上げることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記スレッド優先順位指定手段は、前記負荷レベルが閾値よりも高いと検出されたページとは異なるページを処理するスレッドのうちの１又は２以上の優先順位を下げることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
複数のコアを有しており、
前記スレッド優先順位指定手段は、前記１又は２以上の優先順位を下げる際に、前記複数のコアの間の接続関係を参照して優先順位を下げることが可能なスレッドを抽出することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
複数のコアを有しており、
前記スレッド優先順位指定手段は、前記１又は２以上の優先順位を下げる際に、前記複数のコアの間の処理速度の相対関係を参照して優先順位を下げることが可能なスレッドを抽出することを特徴とする請求項４に記載の画像処理装置。
【請求項７】
前記ページ処理手段により合成されたデータをスプールするスプーラと、
前記スプーラから前記データを読み出して画像を形成する画像形成手段と、
を有することを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
複数ページの処理を並行して行うページ処理ステップと、
前記ページ処理ステップにおける負荷レベルをページごとに検出する負荷判定ステップと、
前記負荷判定ステップにおける検出結果に応じて前記ページ処理ステップの制御を行う制御ステップと、
を有し、
前記ページ処理ステップでは、処理対象のページに含まれる１又は２以上の画像データにエッジ抽出処理のスレッドを割り当て、当該スレッドにより抽出された各画像データのエッジを合成し、
前記制御ステップは、前記負荷判定ステップにおける判定の結果に応じて、前記ページ処理ステップにおいて割り当てられるスレッドの優先順位を指定するスレッド優先順位指定ステップを有することを特徴とする画像処理方法。
【請求項９】
コンピュータに、
複数ページの処理を並行して行うページ処理ステップと、
前記ページ処理ステップにおける負荷レベルをページごとに検出する負荷判定ステップと、
前記負荷判定ステップにおける検出結果に応じて前記ページ処理ステップの制御を行う制御ステップと、
を実行させ、
前記ページ処理ステップでは、処理対象のページに含まれる１又は２以上の画像データにエッジ抽出処理のスレッドを割り当て、当該スレッドにより抽出された各画像データのエッジを合成し、
前記制御ステップは、前記負荷判定ステップにおける判定の結果に応じて、前記ページ処理ステップにおいて割り当てられるスレッドの優先順位を指定するスレッド優先順位指定ステップを有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字や写真、図形等、多彩な印刷に好適な画像処理装置及び画像処理方法等に関し、特にグラフィックス、図形描画の高速化処理に関する画像処理装置及び画像処理方法等に関する。
【背景技術】
【０００２】
従来、図形を描画するために図形が持つ座標情報等から図形の輪郭情報（エッジ情報とも呼ぶ）を抽出し、該輪郭情報に基づいて画像を形成するレンダリング手法は一般に広く利用されている（例えば、特許文献１）。輪郭情報は直線で表現されるが、該直線を表現するための手法としてＤＤＡ（digital differential analyzer）アルゴリズムが知られている（非特許文献１）。
【０００３】
一般にレンダリング処理において常に高速に描画処理が実行できることは重要な要件であるが、実際にレンダリング処理に要する時間は、図形の種類や数に依存して変化するためこれを実現することは容易ではない。
【０００４】
図１は前述したレンダリング処理を含むプリントジョブにおけるデータ処理時間の変化の一例を示したグラフである。図１において、縦軸は処理時間（ミリ秒）を示しており、横軸はプリントジョブのページを示している。図１に示す例では、１ページ目では処理を完了するために約４００ミリ秒かかっており、２ページ目では約５５０ミリ秒の時間を消費する。図１において、三角点で変化している線グラフはジョブに含まれる単純図形の数（相対値）を示しており、丸点で変化している線グラフは単純図形以外の図形（便宜上、ここでは複雑図形という）の数（相対値）を示している。単純図形とは、矩形及び三角形等の単純な図形であり、複雑図形には五角形以上の多角形等が含まれる。複数ページにわたるプリントジョブを分析すると、単純図形が含まれている場合、複雑図形が含まれている場合のいずれにおいても、データ処理の時間に相違があるものの、概ねグラフィックオブジェクト数に対して同様の相関関係を有していることが確認できる。該プリントジョブのようなデータ群に対してレンダリング処理の高速化を目的とした技術は多数提案されている（例えば特許文献２、特許文献３、特許文献４）。
【０００５】
図２は、従来の画像処理装置の構成を示す図である。従来の画像処理装置では、印刷が開始されると入力データ（ＰＤＬ（page description language）データ）９１０が中間データ生成モジュール９１１に渡り、中間データ生成モジュール９１１でＰＤＬインタプリタ及び描画処理（輪郭抽出）等が行われる。そして、各ページにおけるグラフィックスデータ等が後段の画像形成処理に適した形式のデータ（以下、中間データという）に変換される。中間データはディスプレイリスト等とよばれることもある。中間データは中間データスプーラ９１２に一旦ストアされ、その後に後段の画像形成モジュール９１３に転送される。画像形成モジュールは中間データの情報に基づいてメモリにピクセルデータを展開する。メモリに展開されたピクセルデータは一旦ビットマップデータ用バッファメモリ９１４にストアされ、その後にエンジンインタフェース（Ｉ／Ｆ：interface）９１５を経由してプリンタエンジン９１６に転送される。中間データ生成モジュール９１１、画像形成モジュール１１３及びエンジンＩ／Ｆ９１５は制御部９００により制御される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０４−１７０６８６号公報
【特許文献２】特開２００３−５１０１９号公報
【特許文献３】特開２０１１−３４１３９号公報
【特許文献４】特開２００６−１５５３０８号公報
【非特許文献】
【０００７】
【非特許文献１】David Rogers, "Procedural Elements for Computer Graphics" McGraw-Hill Education
【発明の概要】
【発明が解決しようとする課題】
【０００８】
画像処理装置を含む印刷システムにおいては、プリンタエンジンが始動され一旦印刷が開始されると簡単にプリンタエンジンが止められないということもあり、どのようなデータが入ってきても一定の速度でエンジンに印刷データが供給しなくてはならない。このため、時間変動におけるばらつきが大きい場合はスプールすべきデータ量を増やす必要があり、スプーラに用いるメモリサイズを大きく確保する必要がある。しかしながら、メモリサイズの増大は画像処理装置のコストの増加に直結する。
【０００９】
このような問題に着目した技術として、処理にかかる時間を予測することでプリント処理（レンダリング処理）のスケジュールを変更する技術が例えば特許文献４に記載されている。しかしながら、この技術によれば所期の目的は達成できるものの、実際にこの予測値に基づく処理の切り替えを試みてみると、処理速度の予測そのものが容易ではない。
【００１０】
本発明は、メモリサイズの増大を抑制しながら高速印刷を行うことができる画像処理装置及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
処理にかかる時間を予測することでプリント処理のスケジュールを変更する場合、処理を実行する前に得られる情報としては、そのページに含まれるグラフィック数に関する情報が挙げられる。一般的に、グラフィックが多く含まれるページほどその処理にかかる時間が長いという傾向がある。図３は、テストデータにおけるＰＤＬデータの各ページに含まれるグラフィック数と処理時間との関係の例を示すグラフである。図３から、大局的にはグラフィックス数が多くなるほど処理時間が長くなるものの、個々のデータを比較すると処理時間の予測にそのまま用いることが容易ではないことが読み取れる。例えば、ページｉは１５００個のグラフィックオブジェクト（図形）を含むページであって、その処理に約１００ｍｓ要している。その一方で、ページｊは２０００個のグラフィックオブジェクトを含むページであって、その処理に約５０ｍｓ要している。つまり、この例では、ページｊでは、グラフィックオブジェクトの数が４／３倍であるものの、その処理は約１／２の時間で済むのである。
【００１２】
上記の検証結果に基づき、本願発明者は予測される時間と実際の処理時間との乖離が画像処理装置の特性に及ぼす影響を調査する目的でシミュレーションによる検証を行った。図４は、図２に示す画像処理装置においてエンジンがストールしないために必要となる初期スプール数をシミュレーションで検査した結果を示す図である。
【００１３】
図４に示すグラフの横軸は処理が重いページ（以下、ヘビーページということがある）がジョブを占める割合（以下、ヘビーページ含有率という）を示し、縦軸は初期スプールに必要なページ数を示している。ここで、ヘビーページとは処理負荷が重いページを意味し、ヘビーページに該当するか否かは、画像処理装置の用途等に応じて適宜決定することができる。例えば、具体的な定義は各状況により異なる。例えば、１００ＰＰＭ（page per minute）の印刷速度が要求されるプリンタにおいては、その処理に１秒間以上の時間を要するものをヘビーページと定義することができる。また、抽象化するために印刷データにおける各ページの処理時間群を正規分布で捉え適当に設定した閾値（１．５σ）以上の時間を要するページをヘビーページと定義してもよい。図４に示す例では、その処理に１秒間以上の時間を要するページをヘビーページと定義してある。
【００１４】
このシミュレーションでは、ページの処理時間をランダムに生成し、予測時間は正確に予測できる場合（ミス率：０％）と、予測できない場合（ミス率：１０％、２０％）とでその違いを比較している。画像処理装置の基本動作としてはページ時間の各予測に基づいて、処理ページがヘビーページである場合に、該ページにかかる処理時間に対しては加速処理を適用してその挙動を観察してみた。この加速処理では、シミュレーション上では約半分の時間で処理完了する条件とした。
【００１５】
図４において、線Ａ（二重線、四角点）はプリント処理前の処理予測時間が常に正しかった場合の初期スプール数、つまり予測ミス率が０％時の特性を示している。線Ｂ（破線、黒塗三角点）は予測ミス率が１０％の場合の特性を示し、線Ｃ（実線、白抜き三角点）は予測ミス率が２０％の場合の特性を示している。ここで、ミス率とは、プリント処理時間の予測時間の正確さを表し、総ページ数中の予測が（一定値±１０％よりも）外れた割合を示している。予測通りに処理できたページの数をＰ１、収まらなかったページの数を予測ミスページＰ２とした場合、ミス率は「Ｐ２／（Ｐ１＋Ｐ２）×１００」で求められる。
【００１６】
このシミュレーションの結果によれば、ヘビーページ含有率が１４％程度の場合、予測ミス率が０％のときは、初期スプール数として１９０ページ程度がストアされれば、その後はプリンタエンジンがストールしないで動作ができる。一方、予測ミス率が１０％のときは、５３０ページ程度の初期スプール数が必要とされ、予測ミス率が２０％のときは、７５０ページ程度の初期スプール数が必要とされる。つまり、精度の高くない予測の結果に応じた制御を行う場合には、スプーラに大きなサイズのメモリが必要とされ、コストの増加を避けられない。換言すれば、従来の画像処理装置においては、経験的に又は実験的にスプーラ容量を決定していたため、該容量を減らすための分析や工夫がなされないまま無駄なコストを発生させていたということになる。
【００１７】
本願発明者は、このような知見に基づいて更に鋭意検討を重ねた結果、以下に示す発明の諸態様に想到した。
【００１８】
本発明に係る画像処理装置は、複数ページの処理を並行して行うページ処理手段と、前記ページ処理手段における負荷レベルをページごとに検出する負荷判定手段と、前記負荷判定手段による検出結果に応じて前記ページ処理手段の制御を行う制御手段と、を有し、前記ページ処理手段は、処理対象のページに含まれる１又は２以上の画像データにエッジ抽出処理のスレッドを割り当て、当該スレッドにより抽出された各画像データのエッジを合成し、前記制御手段は、前記負荷判定手段による判定の結果に応じて、前記ページ処理手段により割り当てられるスレッドの優先順位を指定するスレッド優先順位指定手段を有することを特徴とする。
【００１９】
本発明に係る画像処理方法は、複数ページの処理を並行して行うページ処理ステップと、前記ページ処理ステップにおける負荷レベルをページごとに検出する負荷判定ステップと、前記負荷判定ステップにおける検出結果に応じて前記ページ処理ステップの制御を行う制御ステップと、を有し、前記ページ処理ステップでは、処理対象のページに含まれる１又は２以上の画像データにエッジ抽出処理のスレッドを割り当て、当該スレッドにより抽出された各画像データのエッジを合成し、前記制御ステップは、前記負荷判定ステップにおける判定の結果に応じて、前記ページ処理ステップにおいて割り当てられるスレッドの優先順位を指定するスレッド優先順位指定ステップを有することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、負荷レベルに応じてスレッドの優先順位が指定されるため、負荷レベルの変動を抑えることができ、これにより、高速処理を行う場合であってもスプーラに準備すべきメモリサイズを抑えることができる。
【図面の簡単な説明】
【００２１】
【図１】データ処理時間の変化の一例を示したグラフである。
【図２】従来の画像処理装置の構成を示す図である。
【図３】グラフィック数と処理時間との関係の例を示すグラフである。
【図４】エンジンがストールしないために必要となる初期スプール数をシミュレーションで検査した結果を示す図である。
【図５】第１の実施形態に係る画像処理装置の機能構成を示す図である。
【図６】（ａ）は中間データ生成モジュールの機能構成を示す図であり、（ｂ）は中間データ生成モジュールの処理を示す図である。
【図７】図６に示す検査処理における状態遷移を示す状態遷移図である。
【図８】第１の実施形態における加速処理制御部１０２の動作を示す図である。
【図９】第１の実施形態に係る画像処理装置のハードウェア構成を示す図である。
【図１０】第１の実施形態におけるページ処理スケジュールを示す図である。
【図１１】（ａ）は第１の実施形態におけるコア割り当て処理を示すフローチャートであり、（ｂ）はＣＰＵ構成情報の一例を示す図である。
【図１２】図１１に示す処理を適用した具体例を示す図である。
【図１３】（ａ）は第２の実施形態に係る画像処理装置に用いられるＣＰＵチップの構成を示す図であり、（ｂ）はＣＰＵチップの接続形態の一例を示す図であり、（ｃ）はＣＰＵチップの接続形態の他の一例を示す図であり、（ｄ）はコアの組み合わせテストの処理を示すフローチャートである。
【図１４】（ａ）は第２の実施形態におけるコア割り当て処理を示すフローチャートであり、（ｂ）はＣＰＵ特性データの一例を示す図である。
【図１５】第２の実施形態の効果を示す図である。
【図１６】第３の実施形態における負荷レベル検出部の動作を示すフローチャートである。
【図１７】図１６に示す検査処理における状態遷移を示す状態遷移図である。
【図１８】（ａ）は一般的な画像処理装置のページ処理スケジュールを示す図であり、（ｂ）は第３の実施形態に係る画像処理装置のページ処理スケジュールを示す図である。
【図１９】第３の実施形態に係る画像処理装置の動作の一例を示す図である。
【図２０】第４の実施形態に係る画像処理装置の機能構成を示す図である。
【図２１】第４の実施形態における加速処理制御部の動作を示す図である。
【発明を実施するための形態】
【００２２】
以下、添付の図面を参照しながら本発明の実施形態について詳細に説明する。
【００２３】
（第１の実施形態）
先ず、第１の実施形態について説明する。図５は、第１の実施形態に係る画像処理装置の機能構成を示す図である。
【００２４】
第１の実施形態に係る画像処理装置には、制御部１００、中間データ生成モジュール１１１、中間データスプーラ１１２、画像形成モジュール１１３、ビットマップデータ用バッファメモリ１１４及びエンジンＩ／Ｆ１１５が含まれている。制御部１００には、負荷レベル検出部１０１及び加速処理制御部１０２が含まれている。中間データ生成モジュール１１１はページ処理手段の一例であり、負荷レベル検出部１０１は負荷判定手段の一例であり、加速処理制御部１０２は制御手段の一例である。
【００２５】
第１の実施形態では、ＰＤＬデータが入力データ１１０として中間データ生成モジュール１１１に入力され、図形等のデータは輪郭等のデータに置き換えられた後、中間データスプーラ１１２に一時的に保存される。制御部１００は、例えば、中間データ生成モジュール１１１、画像形成モジュール１１３及びエンジンＩ／Ｆ１１５との間で制御信号の送受信を行い、中間データ生成モジュール１１１、画像形成モジュール１１３及びエンジンＩ／Ｆ１１５を制御する。中間データ生成モジュール１１１の制御においては、負荷レベル検出部１０１がその時点で処理対象となっているページの負荷レベルを検出する。負荷レベルの検出の詳細については後述する。本実施形態では、３種類の負荷レベルが定義されており、最も軽い負荷レベルをレベル１、最も重い負荷レベルをレベル３、これらの間の負荷レベルをレベル２としている。例えば、負荷レベルがレベル１のページは６００ｍｓ未満で処理可能なページであり、負荷レベルがレベル３のページは処理に１ｓ以上かかるページであり、負荷レベルがレベル２のページは処理に６００ｍｓ以上１ｓ未満かかるページである。換言すると、例えば、レベル１のページの処理では、処理開始から３００ｍｓ経過した時点で５０％以上の処理が完了する。
【００２６】
本実施形態では、負荷レベル検出部１０１により、実際に処理をさせている途中の進捗をリアルタイムに計測しながら処理を進める。負荷レベル検出部１０１にて検出された負荷レベル、即ち検出結果に基づいて、加速処理制御部１０２がＣＰＵのコアの割り当て数を切り替えることで中間データ生成モジュール１１１個々の処理能力を適応的に調整する。なお、中間データが中間データスプーラ１１２にスプールされると、この中間データは画像形成モジュール１１３に順次入力され、ビットマップデータ用バッファメモリ（ビデオメモリ）１１４上にピクセルデータを展開される。これらはエンジンＩ／Ｆ１１５を経由してプリンタエンジン１１６に画像データとして出力される。
【００２７】
次に、中間データ生成モジュール１１１の詳細について説明する。図６（ａ）は、中間データ生成モジュール１１１の機能構成を示す図であり、図６（ｂ）は、中間データ生成モジュール１１１の処理を示す図である。
【００２８】
図６（ａ）に示すように、中間データ生成モジュール１１１にＰＤＬインタプリタ１２０が含まれている。ＰＤＬインタプリタ１２０は、入力された入力データ１１０を解読し、解読されたＰＤＬデータが描画インターフェース（Drawing I/F）を経由して、プリントシステム側に受け渡される。プリントシステム側では、データ受け取り部１２１が図形、文字、画像等のＰＤＬオブジェクトを受け取り、適時、内部スプーラ（図示せず）にデータを蓄えた後に後段の処理ユニットに受け渡す。例えば、ＰＤＬオブジェクトがイメージである場合は、該イメージのデータは画像処理部（画像処理スレッド）（図示せず）に受け渡される。ＰＤＬオブジェクトが図形である場合は、該図形のデータはエッジ抽出処理部（エッジ抽出処理スレッド）１２２−１〜１２２−ｎに受け渡される。このとき、１つのページに２以上の図形が存在する場合は、各図形に対してエッジ抽出処理スレッドが割り当てられる。そして、それぞれのエッジ抽出処理で抽出されたエッジデータが適宜後段のデータ合成処理部（デー合成処理スレッド）１２３に受け渡され、ページ上に合成されると共に、つまり重ね合わせの処理が行われると共に、タイル状のデータにフォーマットされる。フォーマットされたデータは中間データとして中間データスプーラ１１２に書き出される。その後、中間データスプーラ１１２に書き出された中間データは、画像形成モジュール１１３及びビットマップデータ用バッファメモリ１１４を経由してエンジンＩ／Ｆ１１５に転送される。
【００２９】
図形のデータは、図６（ｂ）に示すように、実体としては図形の種類を表す図形種情報及びそれを構成する座標データの群で構成されている。これらデータからエッジ抽出処理部（エッジ抽出処理スレッド）１２２−１〜１２２−ｎによりエッジデータが抽出される。図形１及び図形２が存在する場合、これらは互いに独立した別々のスレッドで処理がなされるために同時に２つの図形のエッジデータが抽出される。この処理は図６（ｂ）ではスレッド−１、スレッド−２として表現されている。また、これらの処理の過程において色情報抽出処理により図形の輪郭の中の塗り情報が同時に抽出される。スレッド−３ではスレッド−１及びスレッド−２により抽出されたエッジデータ及び色情報を用いてデータ合成処理を行う。例えば、図形２が赤の単色（不透明）で塗られており、図形１が青の単色（不透明）で塗られていて、図形１が図形２の上に描画されている場合、重なりの部分では上層の色である青が塗られることになる。この状態では２つの色情報（青及び赤）が保存される。一方、スレッド−３が処理の対象とする領域（図６の例では矩形タイル）においては図形１及び図形２の該領域におけるエッジデータの合成、例えば重なり処理の結果、不要になったエッジの消去、が行われる。なお、このような処理では、重なりの状況によっては、該領域に関して保持すべき色情報の数が増えることもある。例えば、図形１が赤の単色（不透明）で塗られており、図形２が青の単色（透過）で塗られている場合で、かつ図形２が図形１の上に重なっている場合は、透過合成の計算により該重なっている領域の色が計算される。例えば、青と赤を合成すると紫となるため、スレッド−３の処理においては赤、青、紫の色情報が保持される。
【００３０】
このような処理により、従来のペインターズ・アルゴリズムでは困難であった図形（重なった図形を含む）描画処理の並列処理、及び処理時間の調整が可能となる。一般に平面上の図形の描画は上書きの論理があるためにペインターズ処理の場合は全ての処理を順番（シーケンシャルに）実行していく必要がある。これに対し、第１の実施形態によれば図形の描画順序を保持しながら適宜、部分領域毎に合成処理を進めるために漸次（プログレッシブ）に、かつ時間独立で処理を進めることが可能である。例えば、図形のエッジ（輪郭）データを生成する処理は、各々独立に処理することが可能である。また、各領域における重ね処理についても、個々の領域において時間独立に処理が可能となる。重ね処理は、例えば、下層の赤色の図形が上層の青色の図形により上書きされる場合、その領域では青色しか描画されない等の処理である。
【００３１】
次に、負荷レベル検出部１０１の詳細について説明する。図７は、図６に示す検査処理における状態遷移を示す状態遷移図である。負荷レベル検出部１０１は、ページ処理の負荷をリアルタイムに検出する。負荷レベル検出部１０１による処理は本体の処理に対してはオーバーヘッドとなるため、常に検出処理の時間については考慮する必要がある。本実施形態では最初の検出は一定時間（例えば、６００ｍｓの半分の時間（３００ｍｓ））を経過した時点で、データ処理の進捗（与えられたデータの何割を処理したか）を検査するように構成することでオーバーヘッドを軽減する。
【００３２】
図７において、状態はアイドル（ｉｄｌｅ）状態からスタートし、最初の検査では周期ｆ1にて検査ｉ1を行う。適宜時間が経過した後に、条件に応じて異なる２つの基準が異なる検査処理のいずれかに移行する。どちらの検査処理に移行するかは、例えば処理開始からの経過時間に応じて選択する。一方では、検査周期をｆ2へ変更した上で検査ｉ1とは異なる検査ｉ2を行う。もう一方では、検査周期をｆ3へ変更した上で検査ｉ1とは異なる検査ｉ3を行う。これらは例えばページに含まれるオブジェクトの種類に応じて適宜検査ロジックが切り替えられるように構成されている。例えば、図形の複雑さの違いや、図形や画像の内容に依存して処理内容を適切に切り替える。一般に、処理が進む中で何度も検査をするとオーバーヘッドだけが増えるという課題があるが、第１の実施形態によれば処理が半分進むまでは一切、進捗の確認を行わず、半分進んだ所で、軽いか、重いかの判別を開始する。そして、重いデータと判断された場合はより入念な検査を行い、その程度がどのレベルに該当するのかを精密に検査する。
【００３３】
次に、加速処理制御部１０２の詳細について説明する。図８は、第１の実施形態における加速処理制御部１０２の動作を示す図である。加速処理制御部１０２は処理単位（スレッド、プロセス等）に対して処理速度の加速減速処理を指示する。図８中で処理単位Ａ，Ｂ，Ｃ，Ｄはそれぞれ異なる処理単位を示す。図８では、例としてページｉ及びページｊの処理が時間軸上で重なった状態で行われる場合を示している。ここでは、図形のエッジ抽出処理は制御部１００側からみればスレッドという単位の固まりで認識されている。図８ではページｉの処理をページｊの処理よりも処理速度の観点から優先して処理する例を示している。これを実現するために、加速処理制御部１０２が、ページｉを処理しているスレッドの優先順位をページｊのスレッドの優先順位よりも上げる指令（「＋指令」）を発し、ページｊに対しては処理スレッドの優先順位を下げる指令（「−指令」）を発する。このようなスレッドの優先順位は加速処理制御部１０２スレッド優先順位指定手段により行われる。具体的には「＋指令」の場合はスレッドを制御する属性パラメータ（Ｔｈｒｅａｄ関数の属性数値）をインクリメントし、「−指令」の場合はスレッドを制御する属性パラメータの数値をデクリメントする。この結果、ＣＰＵコアのスケジュールが変更される。つまり、割り当てられるＣＰＵタイム時間がスレッド単位で変更される。このようにスレッド優先順位指定手段がスレッドの優先順位を指定する。
【００３４】
図５に示す機能構成は、例えば図９に示すハードウェア構成により実現できる。例えば上記機能構成を実現するプログラムを図９に示すハードウェア構成を備えたコンピュータで実行することができる。図９は、第１の実施形態に係る画像処理装置のハードウェア構成を示す図である。第１の実施形態に係る画像処理装置では、１ボードに２つのＣＰＵソケットが用意されており、これらにＣＰＵチップ２００及びＣＰＵチップ３００が搭載されている。ＣＰＵチップ２００には、第１コア２０１、第２コア２０２、第３コア２０３及び第４コア２０４、これらに対応する４個のＬ２キャッシュメモリ２１１〜２１４、ラストレベルキャッシュメモリ２２２並びにメモリ２２１が含まれる。ラストレベルキャッシュメモリ２２２に接続されたプロセッサ間インターコネクト２２３も含まれる。ＣＰＵチップ３００には、第５コア３０５、第６コア３０６、第７コア３０７及び第８コア３０８、これらに対応する４個のＬ２キャッシュメモリ３１５〜３１８、ラストレベルキャッシュメモリ３２２並びにメモリ３２１が含まれる。ラストレベルキャッシュメモリ３２２に接続されたプロセッサ間インターコネクト３２３も含まれる。プロセッサ間インターコネクト２２３及びプロセッサ間インターコネクト３２３は高速の接続線であり、互いに結合されている。
【００３５】
メモリ２２１及び３２１の全アドレス空間は二分されており、上位側のアドレス空間はＣＰＵチップ２００のメモリ２２１に、下位側のアドレス空間はＣＰＵチップ３００のメモリ３２１に割り当てられている。ＣＰＵチップ２００、３００は各ラストレベルキャッシュメモリ２２２、３２２を経由して全てのアドレス空間に適宜アクセスができる。図６に示すように、ＣＰＵチップ２００、３００には、それぞれ４個のコアが搭載されているので、本実施形態では、１ボードで８個のコアを利用することができる。
【００３６】
次に、第１の実施形態におけるページ処理スケジュールについて説明する。図１０は、第１の実施形態におけるページ処理スケジュールを示す図である。第１の実施形態では、上記のようにマルチコアＣＰＵを用いており、プリント（レンダリング）処理の通常動作としてはページの処理にマルチスレッド処理を適用し、前ページの処理が完了していない場合でも次ページの処理を開始する。例えば、図１０に示すように、一つのページ群（４つのページ１〜４）の処理を同時に開始し、この処理の開始から一定期間経過した後には、このページ群の処理が完了しているか否かに拘わらず、次のページ群（４つのページ５〜８）の処理を開始する。そして、ページ１〜４の処理は互いに並行に進むため、これらのページの処理が重なっている時間帯ではＣＰＵチップ２００が同時並行で処理を行う。この結果、４つの処理が並行で動作した場合でもそれぞれの処理時間はシングルコアで処理したときの処理時間と比べて変わらず、処理を同時に行った分だけ早く処理が完了する。なお、シングルコアのＣＰＵが用いられる場合は、当該ＣＰＵは時分割処理でみせかけ上の並列処理を行うだけで処理能力が増えているわけではないため、４つ同時処理を行っても処理を加速することにはならない。
【００３７】
次に、第１の実施形態におけるコア割り当て処理について説明する。図１１（ａ）は、第１の実施形態におけるコア割り当て処理を示すフローチャートであり、図１１（ｂ）は、ＣＰＵ構成情報の一例を示す図である。
【００３８】
第１の実施形態では、図１１（ａ）に示すように、稼働開始時にＣＰＵ構成情報を取得する（ステップＳ１１）。ＣＰＵ構成情報は、例えば図１１（ｂ）に示すように、処理コア（起点側）に対して他のコアが同一ソケット上のコアか、別ソケット上のコアかを判定する表（テーブルデータ）であり、複数のコアの間の接続関係を示している。第１コア２０１を起点とすると、ＣＰＵ構成情報（テーブルデータ）から、第２コア２０２、第３コア２０３及び第４コア２０４が第１コア２０１と同一ソケット上に存在していることが判明する。また、第５コア３０５、第６コア３０６、第７コア３０７及び第８コア３０８が別ソケット上に存在するということも判明する。一般に、同一ソケット上のコアの間では、ラストレベルキャッシュメモリが共有されているため、比較的オーバーヘッドなしでデータのやりとりが可能である。一方、別ソケット上のコアとの間では、プロセッサ間インターコネクトを経由したデータのやりとりが必要となるため、ある程度のオーバーヘッドが発生する。
【００３９】
ＣＰＵ構成情報の取得後、印刷対象のページの処理を実行する（ステップＳ１２）。次いで、負荷レベル検出部１０１が、その時点で処理対象とするページがヘビーページであるか否か、即ち負荷レベルが閾値よりも高いか否かを検出する（ステップＳ１３）。ヘビーページと検出されなかった場合は通常のページとして処理を進める（ステップＳ１７）。一方、ヘビーページとして検出された場合は負荷レベルを把握する（ステップＳ１４）。負荷レベルは、上述のように負荷レベル検出部１０１により検出される。その後、負荷レベルに応じて他のコアに応援要請を行う（ステップＳ１５）。例えば、負荷レベルが２であれば処理を行っている起点のコアと同一ソケット上のコアに応援要請を行い、負荷レベルが３であれば起点のコアとは別ソケット上のコアにも応援要請を行う。ここでいう応援要請とは、ＣＰＵタイムの融通の要請をいう。そして、他に処理すべきページがあるか否か、即ち、処理を続行するか否かの判定を行い（ステップＳ１６）、他に処理すべきページがあればステップＳ１２に戻り、そうでなければ処理を終了する。
【００４０】
次に、図１１に示す処理を適用した具体例について説明する。第１の実施形態では、図形の処理にあたって、図６に示す機構でページ内部の処理を並列処理で高速化しているものの、それだけでは、負荷レベルによっては予め想定している規程時間内に処理が完了しないこともあり得る。そこで、第１の実施形態では、負荷レベルに応じたコアの割り当ても行うようにしている。即ち、図８に示すように、加速処理制御部１０２がヘビーページを処理しているスレッドの優先順位を上げる指令を発する。ただし、例えばヘビーページで使用しているスレッドの優先順位を上げただけでは、他のスレッドにおけるＣＰＵタイムが奪われてしまう。そこで、第１の実施形態では、ＣＰＵタイムを奪っても問題のないページ、及びそれを処理しているコアを制御部１００が把握する。図１２に示す具体例では、ページ４が処理負荷の重いページ（ヘビーページ）であり、これを第４コア２０４が処理するものとする。また、制御部１００が、ＣＰＵタイムを奪っても問題のないページとしてページ２、５を把握し、これらを処理しているコアとして第２コア２０２、第５コア３０５を把握しているとする。このような場合、図１１に示す処理によれば、第４コア２０４を起点とすると、同一ソケット上にあるコアは第２コア２０２であり、別ソケット上にあるコアは第５コア３０５となる。このため、負荷レベルが２であれば第２コア２０２への応援要請を行い、負荷レベルが３であれば第２コア２０２及び第５コア３０５の双方への応援要請を行う。つまり、負荷レベルに応じて第２コア２０２、第５コア３０５へのＣＰＵタイムの融通の要請が行われる。
【００４１】
このような処理によれば、負荷が比較的小さいヘビーページの処理では、同一ソケット上のコアに応援要請を行うので効率がよく、負荷が大きいヘビーページの処理では、別ソケット上のコアにも応援要請を行うので、起点コアの負荷をより低減することができる。
【００４２】
（第２の実施形態）
次に、第２の実施形態について説明する。第２の実施形態では、ＣＰＵチップの構成が第１の実施形態とは相違し、更にこれに伴ってコアの割り当ての処理も第１の実施形態と相違している。他の構成は第１の実施形態と同様である。図１３（ａ）は、第２の実施形態に係る画像処理装置に用いられるＣＰＵチップの構成を示す図である。
【００４３】
このＣＰＵチップ４００には、第１コア４０１及び第２コア４０２、これらに対応する２個のＬ２キャッシュメモリ４１１〜４１２、ラストレベルキャッシュメモリ４２２並びにメモリ４２１が含まれる。ラストレベルキャッシュメモリ４２２に接続されたプロセッサ間インターコネクト４２３も含まれる。つまり、ＣＰＵチップ４００は２個のコアを備えたデュアルコアプロセッサである。このようなＣＰＵチップ４００を用いて８コアの画像処理装置を構成するには、４個のＣＰＵチップ４００が必要とされる。そして、その接続形態として種々のものがあり、例えば、図１３（ｂ）又は図１３（ｃ）に示す接続形態が挙げられる。
【００４４】
図１３（ｂ）に示す例では、２個のＣＰＵソケットが設けられたボードが２個使用される。そして、これら２個のボードが高速スィッチングハブ４３１により互いに接続されている。ボード内では２個のＣＰＵチップがプロセッサ間インターコネクト４２３により互いに接続されている。
【００４５】
図１３（ｃ）に示す例では、４個のＣＰＵソケットが設けられたボードが１個使用される。そして、ボード内では各ＣＰＵチップが他の３個のＣＰＵチップにプロセッサ間インターコネクト４２３により接続されている。
【００４６】
いずれの例においても、各ＣＰＵチップ４００のメモリ４２１の全アドレス空間は適宜分割して割り当てられており、各ＣＰＵチップ４００は各ラストレベルキャッシュメモリ４２２を経由して全てのアドレス空間に適宜アクセスができる。
【００４７】
第２の実施形態では、第１の実施形態のようにＣＰＵ構成情報をスタティックかつ正確に把握することは容易ではない。そこで、第２の実施形態では、画像処理装置の内部でコアの組み合わせテストを行い、ＣＰＵ特性データを更新する。図１３（ｄ）は、コアの組み合わせテストの処理を示すフローチャートである。
【００４８】
先ず、ＣＰＵ構成情報を読み出す（ステップＳ２１）。次いで、コアの組み合わせテストを行う（ステップＳ２２）。例えば、任意の１個のコアに対して負荷の重い処理を実行させた状態において、他の７個のコアに応援要請を行わせ、その実行速度の比率を相対的に計測する。その後、テスト結果をＣＰＵ特性データとして書き出して記録する（ステップＳ２３）。
【００４９】
このように適宜特性をプロファイリングすることにより、画像処理装置の構成が変化した場合でも優れたパフォーマンスが得られるようにコアの割り当てを調整することができる。
【００５０】
図１４（ａ）は、第２の実施形態におけるコア割り当て処理を示すフローチャートであり、図１４（ｂ）は、ＣＰＵ特性データの一例を示す図である。
【００５１】
第２の実施形態では、図１４（ａ）に示すように、稼働開始時にＣＰＵ特性データを読み出す（ステップＳ３１）。ＣＰＵ特性データは、例えば図１４（ｂ）に示すように、処理コア（起点側）に対して他のコアへ応援要請した場合の処理速度の相対的な関係を示す表（テーブルデータ）であり、複数のコアの間の処理速度の相対関係を示している。一般にプロセッサ間インターコネクト等を経由する場合は、そのオーバーヘッド等により同一の処理であっても速度が低下する。ＣＰＵ特性データは、それらの程度を相対的な指標を示している。速度レベルは１から３に分類されており、ＣＰＵ特性データは、図１３（ｄ）のテストの結果から作成されている。
【００５２】
ＣＰＵ特性データの取得後、印刷対象のページの処理を実行する（ステップＳ３２）。次いで、負荷レベル検出部１０１が、その時点で処理対象とするページがヘビーページであるか否か、即ち負荷レベルが閾値よりも高いか否かを検出する（ステップＳ３３）。ヘビーページと検出されなかった場合は通常のページとして処理を進める（ステップＳ３７）。一方、ヘビーページとして検出された場合は負荷レベルを把握する（ステップＳ３４）。負荷レベルは、上述のように負荷レベル検出部１０１により検出される。その後、負荷レベルに応じて他のコアに応援要請を行う（ステップＳ３５）。そして、他に処理すべきページがあるか否か、即ち、処理を続行するか否かの判定を行い（ステップＳ３６）、他に処理すべきページがあればステップＳ３２に戻り、そうでなければ処理を終了する。
【００５３】
図１５は、第２の実施形態の効果を示す図である。図１５の縦軸には、２５個のページの個々の処理時間を示している。横軸のページの番号は、大きくなるほど処理時間が長くなるように付してある。図１５に示すように、第２の実施形態によれば、参考例と比較して、負荷が大きいものほど処理時間が短縮され、その一方で、負荷が小さいものほど処理時間が長くなっている。この結果、処理時間のばらつきが抑制されている。このことは、安定した速度で中間データを生成することができることを意味する。なお、参考例は、図２に示す従来の画像処理装置に相当する。
【００５４】
（第３の実施形態）
次に、第３の実施形態について説明する。第３の実施形態では、負荷レベル検出部１０１の構成及び動作が第１の実施形態と相違する。他の構成は第１の実施形態と同様である。図１６は、負荷レベル検出部１０１の動作を示すフローチャートである。
【００５５】
負荷レベルの検出処理が開始されると（ステップＳ４１）、ＧｅｔＰａｇｅ（）関数により対象となるページのプロパティ情報にアクセスする（ステップＳ４２）。これにより、処理対象のページに対して検査が開始できる状態となる。次いで、検査処理１として周期ｆ1で定義されたサイクルで検査処理を行う（ステップＳ４３）。単純には周期ｆ1のサイクル（タイミング）で次のステップＳ４５に進んで良いかを調査する。該判定はフラグにセットされ、分岐判断を行う（ステップＳ４４）。ステップＳ４３及びＳ４４は条件が合致するまでループし、この処理ループにおけるオーバーヘッドが最小になるように構成されている。
【００５６】
ステップＳ４５に進んで良い、つまり調査可能と判断されると、進捗確認処理１としてページ処理の進捗率を確認する（ステップＳ４５）。ここでは、上記の３レベルの負荷レベルが定義されているため、３００ｍｓを経過した時点でページデータ処理の５０％以上が完了しているか否かの確認を行う。そして、分岐判断を行う（ステップＳ４６）。
【００５７】
５０％以上の進捗が確認できた場合は、変数ｌｅｖｅｌに１を代入し（ステップＳ４７）、ステップＳ４６の終了処理に進む。進捗が５０％未満であった場合は、検査タイミング周期を変更する（ステップＳ４８）。この場合、つまり進捗が５０％未満の場合、当該ページの処理が重く、より正確な情報に基づいて応援（スレッド優先順位のインクリメント）を要請することが確定している。このため、多少オーバーヘッドが増えても構わないという理由から検査タイミングの周期等、その手続きを変更する。つまり、ステップＳ４３よりも頻繁、かつ正確に検査をするように設定する。次いで、検査処理２として周期ｆ2で定義されたサイクルで検査処理を行う（ステップＳ４９）。単純には周期ｆ2のサイクル（タイミング）で次のステップＳ５１に進んで良いかを調査する。該判定はフラグにセットされ、分岐判断を行う（ステップＳ５０）。ステップＳ４９及びＳ５０は条件が合致するまでループし、この処理ループにおけるオーバーヘッドはステップＳ４３及びＳ４４におけるオーバーヘッドより大きくても構わない。
【００５８】
ステップＳ５１に進んで良い、つまり調査可能と判断されると、進捗確認処理２としてページ処理の進捗率を確認する（ステップＳ５１）。処理の進捗は時間に比例することを前提として考えると、例えば３００ｍｓで５０％、３３０ｍｓ経過した時点では５５％を期待する。続けて３６０ｍｓ経過した時点では６０％が本来期待される進捗率である。ステップＳ５１では、このような期待される進捗度合いからの遅れを算出する。単純には進捗遅延率（達成値／目標値）を算出する。そして、負荷レベルがレベル２、レベル３のいずれであるかを確定するに十分な検査ができたか否かを判定する（ステップＳ５２）。未だ不十分であればステップＳ４９に戻る。
【００５９】
十分な検査ができたと判定された場合、負荷レベルがレベル２であるか否かの判定を行う（ステップＳ５３）。そして、レベル２でなければ、つまりレベル３であれば、変数ｌｅｖｅｌに３を代入し（ステップＳ５４）、ステップＳ５６の終了処理に進む。一方、レベル２であれば、変数ｌｅｖｅｌに２を代入し（ステップＳ５５）、ステップＳ５６の終了処理に進む。
【００６０】
図１７は、図１６に示す検査処理における状態遷移を示す状態遷移図である。状態はアイドル（ｉｄｌｅ）状態からスタートし、最初の検査では周期ｆ1にて検査ｉ1を行う。適宜時間が経過した後に、検査周期をｆ2へ変更した上で検査ｉ1とは異なる検査ｉ2を行う。一般に、処理が進む中で何度も検査をするとオーバーヘッドも増えてしまい全体のパフォーマンスに影響が出てしまうが、第３の実施形態によれば処理が半分進むまでは一切の進捗状況の確認をしないため、オーバーヘッドによる時間のロスが効果的に抑制できる。一方で、処理が半分進んだところで、軽いか重いかというマクロ的なレベルでの判定を行い、更に重いデータと判断された場合は図１６のステップＳ４９以降の手順で精査を行った上で、負荷レベルがレベル２、レベル３のいずれであるかの判定を行う。
【００６１】
次に、第３の実施形態におけるページ処理スケジュールについて、一般的な画像処理装置と比較して説明する。図１８（ａ）は、一般的な画像処理装置のページ処理スケジュールを示す図であり、図１８（ｂ）は、第３の実施形態に係る画像処理装置のページ処理スケジュールを示す図である。
【００６２】
一般的な画像処理装置では、各ページのレンダリング処理は前ページのレンダリング処理が終了してから開始される。一方、第３の実施形態では、第１の実施形態と同様にマルチコアＣＰＵを用いており、プリント（レンダリング）処理の通常動作としてはページの処理にマルチスレッド処理を適用している。そして、ページ処理のスケジュールとしては前ページの処理が完了していないときでも次ページの処理を開始する。図１８（ｂ）に示す例ではページ２の処理が完了する前にページ３の処理を開始し、ページ３の処理が完了する前にページ４の処理を開始する。このとき、２つのページの処理が重なっている時間帯ではＣＰＵが同時並行で処理を行う。この結果、２つの処理が並行で動作した場合でもそれぞれの処理時間はシングルコアで処理したときの処理時間と比べて変わらず、処理を同時に行った分だけ早く処理が完了する。なお、シングルコアのＣＰＵが用いられる場合は、当該ＣＰＵは時分割処理でみせかけ上の並列処理を行うだけで処理能力が増えているわけではないため、２つ同時処理を行っても処理を加速することにはならない。図１８における処理タイミングはプリンタエンジンの設計速度（ＰＰＭ）等から一定に規定されるものである。例えば、１００ＰＰＭのプリンタエンジンの場合は６００ｍｓが１ページ毎の基準時間となる。または、中間データスプーラ１１２の状況等から速度指定が可変であったとしても、ある時間帯においては常に一定にページ処理を開始する。
【００６３】
次に、処理対象の複数ページ中に負荷の高いヘビーページが含まれている場合の動作について説明する。図１９は、第３の実施形態に係る画像処理装置の動作の一例を示す図である。
【００６４】
ここでは、ページ１からページ６までの６ページについて連続して印刷処理が行われることとし、これら６ページの印刷処理が一定の間隔で開始される。ページ１については時刻ｔ０から時刻ｔ６までの時間をかけて処理（レンダリング）がなされ、その出力データが中間データスプーラ１１２に出力される。スプールされたデータは、時刻ｔ８まで中間データスプーラ１１２に保持され、その後、エンジンＩ／Ｆ１１５に出力される。ページ２についてはページ１の処理開始時刻ｔ０から遅れた時刻ｔ１から処理が開始され、時刻ｔ７で完了する。同様に、時刻ｔ２ではページ３の処理が開始され、時刻ｔ３ではページ４の処理が開始され、時刻ｔ５ではページ６の処理が開始される。従って、この例では時刻ｔ５から時刻ｔ６までの間に６ページ分の処理が同時並行で動作することになる。ここでは、説明の都合上、ＣＰＵのコア数が十分に確保できていることを想定している。例えば１ページの処理に２コア、６ページ並列で処理することを前提に１２コア以上のＣＰＵが使用されていることを想定している。
【００６５】
図１９に示す例では、ページ３が処理負荷の重いページ（ヘビーページ）である。そして、ページ３の処理は時刻ｔ２から開始されているが、時刻ｔ５を経過したあたりで途中までの進捗状況が把握できるようになる。この進捗状況は、負荷レベル検出部１０１により把握することが可能である。第３の実施形態でも、図６に示す機構でページ内部の処理を並列処理で高速化しているものの、それだけでは、負荷レベルによっては予め想定している規程時間内に処理が完了しないこともあり得る。そこで、第３の実施形態では、負荷レベルに応じたコアの割り当ても行うようにしている。即ち、図８に示すように、加速処理制御部１０２がヘビーページを処理しているスレッドの優先順位を上げる指令を発する。ただし、例えばヘビーページで使用しているスレッドの優先順位を上げただけでは、他のスレッドにおけるＣＰＵタイムが奪われてしまう。例えば、図１９に示す例で、ページ３で使用しているスレッドの優先順位を上げると、ページ１及びページ２の時刻ｔ５以降の処理に影響が及ぶこととなる。そこで、第３の実施形態では、ヘビーページの次のページの処理時間を融通するように構成している。図１９に示す例では、ページ４の処理を行うスレッドに対して優先順位を下げるよう指令を出す。
【００６６】
このような加速処理制御が行われると、加速処理制御が行われない場合は時刻ｔａまでかかってしまうページ３の処理が、時刻ｔｂで完了することとなる。その結果、エンジンＩ／Ｆ１１５へデータを出力する時刻ｔ１０までにスプールが間に合う。
【００６７】
このように、第３の実施形態によれば、各ページの加減速処理を、スレッドの優先順位を各ページの状況に応じて適宜調整することで実現しており、プリンタエンジンのスループットの低下を効果的に防止することが可能となる。
【００６８】
（第４の実施形態）
次に、第４の実施形態について説明する。第４の実施形態では、機能構成が第３の実施形態と相違する。他の構成は第３の実施形態と同様である。図２０は、第４の実施形態に係る画像処理装置の機能構成を示す図である。
【００６９】
第４の実施形態に係る画像処理装置には、中間データ生成モジュール１１１から提供されるヒント情報を保持するヒント（Hint）情報保持部５０１が含まれている。加速処理制御部１０２は負荷レベル検出部１０１により検出された負荷レベルに応じて、適宜スレッドの優先順位を変更するが、その際に、ヒント情報保持部５０１に保持されているヒント情報に基づいて優先順位の指定を行う。
【００７０】
図２１は、第４の実施形態における加速処理制御部１０２の動作を示す図である。加速処理制御部１０２は処理単位（スレッド、プロセス等）に対して処理速度の加速減速処理を指示する。図２１中で処理単位Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆはそれぞれ異なる処理単位を示す。図２１では、例としてページ３、ページ４及びページ５の処理が時間軸上重なった状態で処理されている場合を示している。ここでは、図形のエッジ抽出処理は制御部１００側からみればスレッドという単位の固まりで認識されている。図２１ではページ３の処理をページ４，５の処理よりも処理速度の観点から優先して処理する例を示している。これを実現するために、加速処理制御部１０２は、ページ３を処理しているスレッドの優先順位を、ページ３、４のスレッドの優先順位よりも上げる指令を発する。即ち、加速処理制御部１０２はスレッドを制御する属性パラメータを変更することでＣＰＵコアのスケジュールを変更する。つまり、割り当てられるＣＰＵタイム時間がスレッド単位で変更される。
【００７１】
第４の実施形態では、優先順位の数値を１から１０の自然数のうちから指定可能にしてあり、デフォルトでは標準値で５が指定されている。ここでは、優先順位の数値が大きいほど優先度が高く、１０において最優先とされる。
【００７２】
図２１に示すように、図形のエッジ抽出を行う処理では複数のスレッドで処理が行われる。データ等の状況によりスレッドの優先順位を一律に上げるのではなく、処理状況に応じて少しだけ優先度を変更した状態で処理を行った方が都合が良い場合がある。例えば、複雑な輪郭が多くある箇所はシンプルな輪郭の部分よりも時間がかかるため、その度合いに応じて優先度を変更した方が好都合である。そこで、本実施形態では、このような情報は各処理系でまとめられてヒント情報としてヒント情報保持部５０１に参照が可能な状態で保持される。そして、このヒント情報を加速処理制御部１０２へ通知することで各スレッドの優先順位の値を制御することが可能となる。
【００７３】
図２１において、ページ３ではＡのスレッドよりもＢのスレッドの方がより高い数値が指定される。つまり、標準値が５のところ、Ａのスレッドには「＋１」の指令がされるため、その優先順位は６となり、Ｂのスレッドには「＋２」の指令がされるため、その優先順位は７となる。その一方で、ページ４、５では、「−１」又は「−２」の指令がされ、優先順位が下がることとなる。なお、ページ３の処理が終了した場合には、ページ４、５の優先順位はデフォルトの標準値５に戻す。
【００７４】
このように、第４の実施形態は、スレッドの優先順位の値の幅を増した構成となっており、これにより、調整の粒度を下げ、つまりは細粒化し、よりきめ細かく調整できる。また、カレントページ、即ちその時点で処理対象としているページがヘビーである場合でも他のページに一律に応援要請をするのではなく、各ページにおけるその時点での進捗状況に応じて応援要請の程度を調整する。つまり、融通を要請するＣＰＵタイムの程度を各ページの進捗状況に応じて調整する。
【符号の説明】
【００７５】
１０１：負荷レベル検出部  １０２：加速処理制御部  １１１：中間データ生成モジュール  １１２：中間データスプーラ  １１３：画像形成モジュール  ５０１：ヒント情報保持部
【図１】
0006370202.tif 000002
【図２】
0006370202.tif 000003
【図３】
0006370202.tif 000004
【図４】
0006370202.tif 000005
【図５】
0006370202.tif 000006
【図６】
0006370202.tif 000007
【図７】
0006370202.tif 000008
【図８】
0006370202.tif 000009
【図９】
0006370202.tif 000010
【図１０】
0006370202.tif 000011
【図１１】
0006370202.tif 000012
【図１２】
0006370202.tif 000013
【図１３】
0006370202.tif 000014
【図１４】
0006370202.tif 000015
【図１５】
0006370202.tif 000016
【図１６】
0006370202.tif 000017
【図１７】
0006370202.tif 000018
【図１８】
0006370202.tif 000019
【図１９】
0006370202.tif 000020
【図２０】
0006370202.tif 000021
【図２１】
0006370202.tif 000022