(57)【要約】【課題】マルチプロセッシング環境において効率的な画像の並列処理を実現する画像処理装置、画像処理方法およびプログラムを提供すること。【解決手段】本発明の画像処理装置１０は、互いに独立して動作する複数の演算処理装置４０を備え、描画命令が記述された描画命令データを解析して、領域分割による並列動作に関連付けられた特定描画命令を検出する解析手段１１４と、単位描画領域中に特定描画命令が検出されなかった場合に、該単位描画領域に対応する各色毎の描画処理を複数の演算処理装置４０に割り当てる割当手段１３２と、それぞれいずれか演算処理装置上で互いに並列に動作し、割り当てられた描画処理を実行して、前記描画命令データによる出力画像を構成する複数の色プレーンのうちの対応する色プレーンの描画像を記憶装置１８０に書き込む複数の処理手段１３４〜１４０とを含む。【選択図】  図２
2010102569.tif 000002
【特許請求の範囲】
【請求項１】
互いに独立して動作する複数の演算処理装置を備える画像処理装置であって、
描画命令が記述された描画命令データを解析して、領域分割による並列動作に関連付けられた特定描画命令を検出する解析手段と、
単位描画領域中に前記特定描画命令が検出されなかった場合に、該単位描画領域に対応する各色毎の描画処理を前記複数の演算処理装置に割り当てる割当手段と、
それぞれいずれか前記演算処理装置上で互いに並列に動作し、割り当てられた前記描画処理を実行して、前記描画命令データによる出力画像を構成する複数の色プレーンのうちの対応する色プレーンの描画像を記憶装置に書き込む複数の処理手段と
を含む、画像処理装置。
【請求項２】
前記割当手段は、前記演算処理装置の数が色プレーンの数の２倍以上ある場合に、前記単位描画領域を分割して、各分割領域に対応する各色毎の描画処理を前記複数の演算処理装置に割り当てる、請求項１に記載の画像処理装置。
【請求項３】
前記解析手段は、さらにカラー描画命令を検出し、前記割当手段は、前記単位描画領域中に前記特定描画命令が検出された場合、および前記単位描画領域中に前記カラー描画命令が検出されなかった場合、またはいずれか一方の場合に、該単位描画領域に対応する描画処理を領域分割して前記複数の演算処理装置に割り当てる、請求項１または２に記載の画像処理装置。
【請求項４】
前記複数の演算処理装置は、同一構成のプロセッサコアである、請求項１〜３のいずれか１項に記載の画像処理装置。
【請求項５】
前記特定描画命令は、半透明処理命令である、請求項１〜４のいずれか１項に記載の画像処理装置。
【請求項６】
互いに独立して動作する複数の演算処理装置を備える画像処理装置が実行する方法であって、
描画命令が記述された描画命令データを解析して、領域分割による並列動作に関連付けられた特定描画命令を検出を試みるステップと、
単位描画領域中に前記特定描画命令が検出されなかった場合に、該単位描画領域に対応する各色毎の描画処理を前記複数の演算処理装置に割り当てるステップと、
それぞれの前記演算処理装置上で、互いに並列に、割り当てられた前記描画処理を実行して、前記描画命令データによる出力画像を構成する複数の色プレーンのうちの対応する色プレーンの描画像を記憶装置に書き込むステップと
を含む、画像処理方法。
【請求項７】
前記割り当てるステップは、前記演算処理装置の数が色プレーンの数の２倍以上ある場合に、前記単位描画領域を分割するサブステップと、各分割領域に対応する各色毎の描画処理を前記複数の演算処理装置に割り当てるサブステップとを含む、請求項６に記載の画像処理方法。
【請求項８】
前記画像処理方法は、さらにカラー描画命令を検出を試みるステップを含み、前記割り当てるステップでは、前記単位描画領域中に前記特定描画命令が検出された場合、および前記単位描画領域中に前記カラー描画命令が検出されなかった場合、またはいずれか一方の場合に、該単位描画領域に対応する描画処理を領域分割して前記複数の演算処理装置に割り当てる、請求項６または７に記載の画像処理方法。
【請求項９】
装置実行可能なプログラムであって、互いに独立して動作する複数の演算処理装置を備える画像処理装置に対し、
描画命令が記述された描画命令データを解析して、領域分割による並列動作に関連付けられた特定描画命令を検出する解析手段、
単位描画領域中に前記特定描画命令が検出されなかった場合に、該単位描画領域に対応する各色毎の描画処理を前記複数の演算処理装置に割り当てる割当手段、および
それぞれいずれか前記演算処理装置上で互いに並列に動作し、割り当てられた前記描画処理を実行して、前記描画命令データによる出力画像を構成する複数の色プレーンのうちの対応する色プレーンの描画像を記憶装置に書き込む複数の処理手段
を実現する、プログラム。
【請求項１０】
前記割当手段は、前記演算処理装置の数が色プレーンの数の２倍以上ある場合に、前記単位描画領域を分割して、各分割領域に対応する各色毎の描画処理を前記複数の演算処理装置に割り当てる、請求項９に記載のプログラム。
【請求項１１】
前記解析手段は、さらにカラー描画命令を検出し、前記割当手段は、前記単位描画領域中に前記特定描画命令が検出された場合、および前記単位描画領域中に前記カラー描画命令が検出されなかった場合、またはいずれか一方の場合に、該単位描画領域に対応する描画処理を領域分割して前記複数の演算処理装置に割り当てる、請求項９または１０に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理技術に関し、より詳細には、マルチプロセッシング環境において効率的な画像の並列処理を実現する画像処理装置、画像処理方法およびプログラムに関する。
【背景技術】
【０００２】
従来より、プリンタなどの画像処理装置において、処理の高速化に対する要求がますます高まりつつある。このような背景にあって、画像処理の効率化を目的とした種々の技術が開発されている。例えば、特開２００１−４５３０４号公報（特許文献１）は、レンダラの高速化には限界があり、印刷装置の高解像度化、高速化およびカラー化に追従するのは困難であるとの課題を解決するために、並列動作が可能な複数のレンダラを有する画像処理装置を構成し、複数のレンダラそれぞれのレンダリングすべきバンドをスケジューリングする技術を開示している。
【０００３】
また特開２００１−２８７４１２号公報（特許文献２）は、高速の画像表示装置または、高速の画像印刷装置を実現することを目的として、ＳＭＰ（Symmetric Multi Processing）構成をとるマイクロコンピュータ装置上で、１ページ分もしくは１画面分の画像デ一タを、メインメモリ上の複数の領域のバンドメモリに分割し、分割されたバンドメモリのそれぞれに対して、画像の描画プログラム処理を複数のＣＰＵにて並列に実行する制御を設けたことを特徴とする技術を開示している。
【０００４】
さらに特開２００７−７９８５４号公報（特許文献３）は、処理負荷の重い領域が含まれている印刷ジョブのスループットを向上させることを目的として、印刷データの処理モード毎に複数の処理スレッドを立ち上げ、これら複数の処理スレッドを並行してＰＤＬプロセッサで処理して印刷データファイルを生成し、印刷データファイルができ次第、その印刷データファイルに含まれている印刷データをプリンタに出力することを特徴とする技術を開示している。
【０００５】
また特開２００１−３１２３８３号公報（特許文献４）は、より高速な印刷の実現を図ることを目的として、プリンタ・ドライバ内で、ＧＤＩ（Graphics Device Interface）形式の印刷データを、ページビットマップを構成する複数のバンド毎の中間データに変換し、一方、複数のバンドにそれぞれ対応した、並列して同時に実行可能な複数のレンダリング処理部を作成し、該作成された複数のレンダリング処理部に、変換され作成された複数のバンド毎の中間データをそれぞれ送り、複数のバンド毎のレンダリング処理を並列して同時に実行させ、これによってページビットマップを作成する技術を開示している。
【０００６】
さらに、特開２００４−１９３８７６号公報（特許文献５）は、ＣＭＹＫ出力画像の画質の向上および処理速度の低下を防止することを目的として、描画オブジェクトのレンダリングをＲＧＢ形式で行うかＣＭＹＫ形式で行うかを判断し、レンダリングして作成されたＲＧＢ形式の画像をさらに色変換して得られる画像を、ＣＭＹＫ形式でレンダリングして作成された画像とともに出力する技術を開示している。
【０００７】
その他、画像品質に関連し、特開２００４−３４６３６号公報（特許文献６）は、黒で描かれた文字と下絵の境界に下地が文字の輪郭に沿って見えるという画像の品質上の問題を解決することを目的として、プリンタ言語で表現されたカラー画像に対する中間処理としてＣＭＹ成分への色変換を行った後、ＣＭＹの各プレーンに１ビットでレンダリングし、レンダリング後の該ＣＭＹプレーンに対して下色除去処理及びＫ成分の生成を行い、カラー画像から得られたＣＭＹＫプレーンのデータと文字画像から生成したＫプレーンのデータに基づいて画像形成に用いる描画データを生成する画像形成装置を開示している。
【特許文献１】特開２００１−４５３０４号公報
【特許文献２】特開２００１−２８７４１２号公報
【特許文献３】特開２００７−７９８５４号公報
【特許文献４】特開２００１−３１２３８３号公報
【特許文献５】特開２００４−１９３８７６号公報
【特許文献６】特開２００４−３４６３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記特許文献１〜４に開示される従来技術は、独立に動作可能なレンダラの構成、マルチプロセッシング技術、またはマルチスレッディング技術を適用して、バンド毎あるいはページ毎にレンダリング処理を並列化することによって、高速化を図るものである。しかしながら、画像の並列処理において、各処理手段が、不連続なアドレスに対するメモリアクセスを頻発させてしまうことにより、メモリアクセス効率が低下してしまうという問題があった。
【０００９】
図９は、従来のＣＭＹＫ形式のレンダリングのバンド分割による並列処理を、バンド分割されたプレーン毎に示す概略図である。例えば、Ａ４用紙、６００ｄｐｉ、ＣＭＹＫ各色２ビットの階調で処理する場合には、それぞれ容量８ＭＢのＣＭＹＫ各プレーンに画像データが出力される。図９に示すように、バンド毎に並列処理する場合、各プロセッサは、描画命令に従って、対応するバンドをＫプレーンから順にＹプレーンまで処理してゆくこととなる。例えば、プロセッサ（Ｐ＃１）が、Ｋプレーンのバンド（ａ）に図形Ａを、Ｃプレーンのバンド（ａ）に図形Ｂをというように順次描画してゆくと、プロセッサ（Ｐ＃１）は、離間したアドレスに対するメモリアクセスを発生させる。すると、各図形に対する処理毎に、８ＭＢサイズの移動が発生し、そのためＣＰＵ内部のキャッシュ効果が小さくなり、処理効率が低下する可能性があった。一部のＣＰＵには、８ＭＢサイズ以上の大型サイズのキャッシュを搭載しているものもあるが、組み込み用途向けには高価である。
【００１０】
上記特許文献１に開示される従来技術では、各プレーンの各バンドに対して、予め中間データのレンダリング時間を見積り、複数のレンダラが効率よく働くように、スケジューリングを行うというものであり、文字、図形またはイメージ等の描画データの種類に関連して処理時間を見積もることにより、ある程度の効率的なスケジューリングを実現できるものといえる。また、特許文献２も同様に、バンド画像を構成する個々のオブジェクトの描画時間値を合計することにより、描画処理開始前に予想計算し、その予想した描画時間の大きいバンドから順番に、描画処理をＣＰＵの実行に割り当てるというものであり、ある程度の効率的なスケジューリングを実現できるものといえる。特許文献３も同様に、ページを単位として、ページが奇数であるか偶数であるかに応じて、またはページの抽象度の高さに応じてスレッドに振り分けるというものであり、ある程度の効率的に並列処理を実現できるものといえる。さらに、上記特許文献４は、十分に使いきっているとは言えなかったＣＰＵの能力をある程度活用できるものといえる。
【００１１】
しかしながら、上記特許文献１〜４に開示される従来技術では、分割された領域または割り振られたページ毎に処理を並列化するものであり、いずれもメモリアクセス効率を考慮していないため、上述した、アドレス不連続なメモリアクセスの頻発によりメモリアクセス効率の低下を充分に解消できるというものではなく、依然として、高いメモリアクセス効率を実現する画像の並列処理技術の開発が望まれていた。
【００１２】
本発明は、上記問題を鑑みてなされたものであり、レンダリングなどの描画処理におけるアドレス不連続なメモリアクセスの発生を低減し、高いメモリアクセス効率の画像並列処理を実現する画像処理装置、画像処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明では、上記課題を解決するために、まず画像処理装置は、互いに独立して動作する複数の演算処理装置を備え、例えばマルチコアプロセッサ構成を採用する。そして、画像処理装置は、例えば装置が内部的に扱う中間データなどの描画命令が記述された描画命令データを解析して、領域分割による並列動作に関連付けられた特定描画命令を検出を試みる。例えば１ページ分の単位描画領域中に、上記特定描画命令が検出されなかった場合には、該単位描画領域に対応する各色毎の描画処理を上記複数の演算処理装置に割り当て、それぞれの演算処理装置上で、互いに並列に、割り当てられた描画処理を実行させ、上記描画命令データによる出力画像を構成する複数の色プレーンのうちの対応する色プレーンの描画像を記憶装置に書き込ませる。
【００１４】
上記構成によれば、予め領域分割による並列動作に関連付けられた特定描画命令が含まれない単位描画領域については、各色プレーンに対応する描画処理を単位として、複数の演算処理装置に割り当てられることとなる。したがって、各演算処理装置が複数の色プレーンの記憶空間に対してアドレス不連続なアクセスを発生させてしまう割合を好適に低減することが可能となり、もってメモリアクセスの効率化が達成され、さらには画像処理装置の性能を向上させることが可能となる。なお、上記色プレーンの描画像は、より具体的には、対応する色成分についての階調値（例えば１ビットまたは２ビットの値など）が２次元的に配置された２次元配列とすることができる。
【００１５】
また本発明では、上記演算処理装置の数が色プレーンの数の２倍以上ある場合には、単位描画領域を分割して、各分割領域に対応する各色毎の描画処理を分けて複数の演算処理装置に割り当てることができる。上記構成によれば、単位描画領域のひとつの色プレーンに係る描画処理をさらに複数の演算処理装置に分けて割り当てることが可能であるため、並列処理が更に効率化される。
【００１６】
さらに本発明によれば、さらにカラー描画命令の検出を試みて、単位描画領域中に上記特定描画命令が検出された場合、および単位描画領域中にカラー描画命令が検出されなかった場合、またはいずれか一方の場合に、該単位描画領域に対応する描画処理を領域分割して複数の演算処理装置に割り当てることができる。上記構成によれば、単位描画領域の描画命令データを解析した結果、領域分割による並列化の方が好ましいと考えられる場合には領域毎の並列化を行いつつも、可能な限り各色プレーン毎の並列化が図られ、画質の劣化を防止しつつメモリアクセスの効率化が達成される。
【００１７】
さらにまた本発明では、上記複数の演算処理装置を同一構成のプロセッサコアとすることができる。上記構成により、対照マルチプロセシング環境が実現され、単一のオペレーティング・システムのみで実装できるため、複数のＯＳを実装するための余分なリソースを割く必要がないため、低いコストで装置性能を向上させることが可能となる。また上記特定描画命令は、分割された分割領域それぞれに対する描画処理を並列動作により行うものと予め指定された描画命令とすることができ、より好適には、半透明処理命令とすることができる。さらに、上記単位描画領域は、１ページ分または１画面分の描画領域または、該１ページ分または１画面分の描画領域から分割された分割領域とすることができる。さらに、上記描画処理は、ＣＭＹＫ色空間でのレンダリング処理を含むことができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施形態を説明するが、本発明の実施形態は、以下の実施形態に限定されるものではない。なお、以下の実施形態では、画像処理装置として、レーザプリンタを一例に説明する。
【００１９】
図１は、本実施形態のレーザプリンタ１０のハードウェア構成を示す。図１に示すレーザプリンタ１０は、マルチコア構成のＣＰＵ１６を備えたコントローラボード１２と、プロッタ・エンジン１４とを含んで構成されている。コントローラボード１２は、ＣＰＵ１６の他、クロック生成部１８と、ＩＰＵ（Image Processing Unit）２０と、画像処理の作業記憶領域を提供するＤＤＲ−ＳＤＲＡＭ（Double Data Rate - Synchronous Dynamic Random Access Memory）２６と、各種制御プログラムを記憶するＲＯＭ２８とを含んで構成される。クロック生成部１８で生成されたクロックは、ＣＰＵ１６およびＩＰＵ２０に供給される。
【００２０】
コントローラボード１２にはさらに、オペレータからの操作を受ける操作パネル３０と、２次記憶領域を提供するハードディスク（以下、ＨＤＤと参照する。）３２と、ネットワーク７０への接続を提供する物理層部（以下、ＰＨＹと参照する。）３４と、ＰＨＹ３４にクロックを供給するＰＨＹクロック生成部３６とを含んで構成されている。レーザプリンタ１０は、ＰＨＹ３４を経由してネットワーク７０を介してパーソナル・コンピュータなどのホスト装置（図示せず。）と接続されており、ホスト装置からプリンタ・ドライバを介した印刷ジョブを待ち受けている。
【００２１】
本実施形態のレーザプリンタ１０のＣＰＵ１６は、上述したようにマルチコア構成とされており、複数のプロセッサ４０を備える。プロセッサ４０は、それぞれ、プロセッサ・エレメント（Processor Element；ＰＥ）４２と、インストラクション・キャッシュ（以下、Ｉキャッシュと参照する。）４４およびデータ・キャッシュ（以下、Ｄキャッシュと参照する。）４６を含む１次キャッシュと、２次キャッシュ４８とを含んでいる。
【００２２】
ＣＰＵ１６は、さらに、ＰＨＹ３４と通信するＭＡＣ部５２、ＨＤＤ３２に接続するＨＤＤインタフェース（以下、ＨＤＤＩ／Ｆと参照する。）５４、操作パネル３０に接続する操作パネル・インタフェース（以下、ＯＰＥＩ／Ｆと参照する。）５６、ＤＤＲ−ＳＤＲＡＭ２６にアクセスするためのメモリ・インタフェース（以下、ＭＥＭＩ／Ｆと参照する。）６２、ＲＯＭ２８にアクセスするためのローカルバス・インタフェース（以下、ＬｏｃａｌＢｕｓＩ／Ｆと参照する。）６４、ＰＣＩＥｘｐｒｅｓｓインタフェース（以下、ＰＣＩＥｘｐｒｅｓｓＩ／Ｆと参照する。）５８、および３次キャッシュ６０を含んで構成されている。３次キャッシュ６０は、ＤＤＲ−ＳＤＲＡＭ２６へのアクセスの発生を削減するためのキャッシュとして機能する。
【００２３】
ＣＰＵ１６は、さらに、クロスバー・スイッチ５０を含んで構成され、複数のプロセッサ４０は、それぞれクロスバー・スイッチ５０を経由して、上記ＭＡＣ部５２、ＨＤＤＩ／Ｆ５４、ＯＰＥＩ／Ｆ５６、ＰＣＩＥｘｐｒｅｓｓＩ／Ｆ５８、３次キャッシュ６０、ＭＥＭＩ／Ｆ６２、およびＬｏｃａｌＢｕｓＩ／Ｆ６４にアクセス可能とされている。クロスバー・スイッチ５０経由でアクセスする構成により、プロセッサ４０の効率的なアクセスが実現されている。本実施形態のレーザプリンタ１０では、起動時にＣＰＵ１６は、ＲＯＭ２８から各種制御プログラムを読み出して、単一のオペレーティング・システム（ＯＳ）を起動し、ＳＭＰ（Symmetric Multi Processing）構成で動作している。
【００２４】
ＣＰＵ１６は、ＰＣＩＥｘｐｒｅｓｓＩ／Ｆ５８を介してＩＰＵ２０およびプロッタ・エンジン４０と接続する。ＩＰＵ２０は、ＲＧＢ色空間のデータ形式をＣＭＹＫ色空間のデータ形式に色変換する色変換部２２と、その出力であるＣＭＹＫ形式のデータを階調処理する階調処理部２４を含んでいる。ＩＰＵは、点順次のＲＧＢ形式のデータの入力を受けて、面順次のＣＭＹＫ形式のデータを出力し、出力されたＣＭＹＫ形式のデータは、ＤＤＲ−ＳＤＲＡＭ２６中に格納される。プロッタ・エンジン１４は、ＰＣＩＥｘｐｒｅｓｓＩ／Ｆ５８を経由してＤＤＲ−ＳＤＲＡＭ２６が提供する記憶領域にアクセスして、ＣＭＹＫ形式のデータを読み出し、例えば電子写真方式による作像プロセスなどにより画像を転写用紙上に転写して、定着させる。
【００２５】
図２は、本実施形態のレーザプリンタ１０上に実現される機能ブロック１００を示す。図２に示す機能ブロック１００は、ページ記述言語（Page Description Language：以下、ＰＤＬと参照する。）解釈部１１０と、第１バッファ１１２と、解析部１１４とを含んで構成されている。
【００２６】
ホスト装置（図示せず。）などから受信したPostScript（登録商標）、ＰＣＬ（Printer Control Language：登録商標）、ＬＩＰＳ（登録商標）、ＲＰＤＬ（登録商標）などのＰＤＬによって記述された印刷ジョブ・データ（以下、印刷データと参照する。）Ｊは、ＤＤＬ−ＳＤＲＡＭ２６が提供する記憶領域に一旦格納される。ＰＤＬ解釈部１１０は、一時的に保存された印刷データＪを読み出して、後段の機能部で解釈可能な中間データに変換し、第１バッファ１１２に格納する。第１バッファ１１２も、ＤＤＬ−ＳＤＲＡＭ２６により提供され、概ね１ページ分の中間データを保存できる容量とされている。またＰＤＬ解釈部１１０は、複数種類のＰＤＬを解釈可能に構成されており、ホスト装置から受信する印刷データの記述言語の相違を吸収して、レーザプリンタ１０内部で取り扱い可能な中間データに変換することができる。
【００２７】
解析部１１４は、具体的には、中間データ中から特定の描画命令を検出する特定描画命令検出部１１６と、同じく中間データ中からカラー描画命令を検出するカラー描画命令検出部１１８とを含んで構成されている。上記特定の描画命令は、後述の領域並列方式に関連付けられた描画命令であり、画像論理演算命令、より具体的には半透明描画命令とすることができる。
【００２８】
上記画像論理演算命令は、一度描画した印刷データに対し画像論理演算を実行して新たな画像を作成する命令であり、上記画像論理演算としては、論理積（ＡＮＤ）演算、論理和（ＯＲ）演算、上書き演算、半透明処理演算などを挙げることができる。なお、半透明処理演算とは、背景オブジェクトと前景オブジェクトとを任意の割合（例えば５０パーセント）で混合して表示させる効果を奏する画像処理をいい、比較的に処理負荷が大きく、好適にマルチコアプロセッサ構成の利点を得ることができる処理である。上記カラー描画命令とは、モノクロではなく、カラーのオブジェクトなどを描画を指令する描画命令である。
【００２９】
上記特定の描画命令は、画像処理の際に、色誤差などの観点から、後述のＣＭＹＫの各色に分離して並列処理するプレーン並列方式になじまず、全色を同一プロセッサ上でまとめて処理した方が好ましい描画命令であり、中間データの記述様式に応じて予め検出すべきものとして指定された描画命令である。以下では、半透明描画命令を一例として説明する。
【００３０】
特定描画命令検出部１１６は、ＰＤＬ解釈部１１０が出力した中間データ中に、半透明描画処理を指定する中間データであるＲＯＰ（Raster Operation）コードが含まれるか否かを検出する。特定描画命令検出部１１６は、１ページ分の中間データ中に半透明描画命令が存在すれば、その１ページ処理する間ＯＮ（１）を出力し、半透明描画命令が存在しなければ、その１ページ処理する間ＯＦＦ（０）を出力する。カラー描画命令検出部１１８は、１ページ分の中間データ中にカラー描画命令が存在すれば、１ページ処理する間、ＯＮ（１）を出力し、カラー描画命令が存在しなければ、ＯＦＦ（０）を出力する。なお、本実施形態のレーザプリンタ１０では、並列処理方式を判定するための特定の描画命令およびカラー描画命令の検出範囲は、１ページの単位描画領域とされている。
【００３１】
本実施形態では、解析部１１４は、特定描画命令検出部１１６の出力の否定（ＮＯＴ）と、カラー描画命令検出部１１８の出力との論理積（ＡＮＤ）を出力し、後述するプレーン並列方式による処理を許可する信号（以下、プレーン処理許可信号と参照する。）とされている。
【００３２】
図２に示す機能ブロック１００は、さらに、プレーン処理部１２４と、領域分割処理部１６０とを含んで構成される。解析部１１４の出力は、プレーン処理部１２４に入力され、プレーン処理部１２４は、プレーン処理許可信号がＯＮ（１）の時、そのページについてプレーン並列方式による並列処理を実行する。プレーン並列方式とは、中間データによるレンダリングなどの画像処理を、色プレーンを処理単位としてＣＰＵ１６の各プロセッサ４０に割り当てて、並列化する方式をいう。この色プレーンは、本実施形態では、プロッタ・エンジン１４が取り扱うＣＭＹＫ色空間における各色毎の画像データをいい、１ページを単位描画領域とすると、１つのカラー画像は、１ページ分の４色成分の色プレーンを含み構成される。なお、レンダリングなどの描画処理は、複数のプロセッサにより並列に処理されるが、ＰＤＬ解釈部１１０や解析部１１４などの必ずしも並列化の対象となされない処理については、例えば、任意の１つのプロセッサが処理するよう構成すればよい。
【００３３】
解析部１１４の出力の否定（ＮＯＴ）は、さらに、領域分割処理部１６０に入力され、領域分割処理部１６０は、プレーン処理許可信号がＯＦＦ（０）の時、つまりＯＮ（１）の信号が入力される時、そのページについて領域並列方式による並列処理を実行する。領域並列方式とは、１ページの描画領域をいくつかの領域、例えばバンド領域に分割して、分割されたバンド領域を処理単位としてＣＰＵ１６の各プロセッサ４０に割り当てて並列化する方式をいう。各バンド領域は、色プレーン毎に分けて異なるプロセッサ上で処理されず、各領域に対応する中間データおよび出力結果は、全ての色の成分を含んでいる。単位描画領域は、好適にはプロセッサ数ｎ分に分割され、分割された各領域に対する描画処理が、それぞれプロセッサ４０に割り当てられ、並列に処理されることとなる。
【００３４】
解析部１１４の出力と、特定描画命令検出部１１６およびカラー描画命令検出部１１８の出力との関係は、まとめると表１に示すようになる。
【００３５】
【表１】
2010102569.tif 000003
【００３６】
表１中「プレーン処理」は、プレーン処理部１２４によるプレーン並列方式の並列処理が指定されることを示し、プレーン処理許可信号がＯＮ（１）であることを表す。表１中「領域分割処理」は、領域分割処理部１６０による領域並列方式の並列処理が指定されることを示し、プレーン処理許可信号がＯＦＦ（０）であることを表す。すなわち、１ページ中に、領域分割方式に関連付けられた描画命令が含まれず、カラー描画命令が含まれる場合には、解析部１１４は、プレーン処理許可信号をＯＮ（１）として出力する。１ページ中に領域分割方式に関連付けられた描画命令が含まれる場合、およびカラー描画命令が含まれる場合、またはいずれか一方の場合には、解析部１１４は、プレーン処理許可信号をＯＦＦ（０）として出力する。
【００３７】
以下、領域分割処理部１６０の構成について、より詳細に説明する。領域分割処理部１６０は、より詳細には、領域分割部１６２と、第３バッファ１６４と、領域並列処理部１６８とを含んで構成される。さらに、機能ブロック１００は、領域分割処理部１６０による処理結果を格納する第４バッファ１７０と、プロッタ・エンジン１４が参照する最終的なＣＭＹＫ形式のデータを格納する第５バッファ１８０とを備えている。
【００３８】
領域分割部１６２は、第１バッファ１１２に格納される１ページ分の中間データを読み出して、１ページ分の単位描画領域を、例えばプロセッサ数分のバンド領域に分割して、各バンド領域毎の中間データを第３バッファ１６４に格納する。図２中、第３バッファ１６４のバッファ領域＃１〜ｍが、それぞれのバンド領域に対応している。領域並列処理部１６８は、分割された各バンド領域に対応する描画処理を、複数のプロセッサ４０に割り当てて、並列処理させる。図２中、処理ブロック＃１〜ｎは、それぞれ独立にプロセッサ４０上で動作し、割り当てられたバンド領域に対応する処理を実行する機能部である。なお、分割領域数ｍは、好適には、動作するプロセッサの数ｎに一致させることができるが、特に限定されるものではない。
【００３９】
図３は、本実施形態の領域並列方式の並列処理における領域の分割および割り当ての様態を示す概略図である。図３に示すように、１ページ分の単位描画領域２００は、複数のバンド領域２０２ａ〜ｅに分割され、各バンド領域２０２毎に異なるプロセッサ＃１〜ｎが割り当てられる。プロセッサ４０は、割り当てられたバンド領域に対応する第３バッファ１６４に分割して格納された中間データを読み出して、その中間データのレンダリングを実行し、ＲＧＢ色空間の点順次データとして描画結果を第４バッファ１７０に、同様にバンド領域に分けて格納する。各プロセッサ４０上で各バンド領域の描画処理がスレッド処理され、マルチスレッディングによる並列処理が実現される。
【００４０】
再び図２を参照して説明する。第４バッファ１７０に１ページ分の画像データが蓄積されると、ＩＰＵ２０は、第４バッファ１７０からＲＧＢ形式のデータを読み出して、色変換部２２でＲＧＢ色空間からＣＭＹＫ色空間のデータに色変換し、さらに階調処理部２４で階調処理を施し、ＣＭＹＫ形式の面順次データを第５バッファ１８０に出力して格納させる。第５バッファ１８０では、ＣＭＹＫの各色プレーン毎に分けて画像データが格納される。画像データは、ＰＣＩＥｘｐｒｅｓｓＩ／Ｆ５８経由でＤＭＡ（Direct Memory Access）転送によってプロッタ・エンジン１４に渡され、印刷出力物Ｐが印刷されることとなる。
【００４１】
中間データ中にカラー描画命令が存在しない場合には、各バンド領域の処理が割り当てられた各プロセッサ４０は、第３バッファ１６４に分割して格納された中間データを読み出して、その中間データのモノクロ・レンダリングを実行し、さらに階調処理まで実施して、ＣＭＹＫ色空間のデータとして描画結果を第５バッファ１８０に出力して格納する。なお、モノクロ・レンダリングの後に、適宜ＢＧ／ＵＣＲ（Black Generation / Under Color Generation）を実施してもよい。また、領域分割部１６２までの処理は、任意の１つのプロセッサ、例えばプロセッサ＃１が処理するように構成することができる。
【００４２】
以下、プレーン処理部１２４の構成について、より詳細に説明する。プレーン処理部１２４は、より詳細には、色変換部１２６と、プレーン並列処理部１３２とを含んで構成される。プレーン処理部１２４は、さらに、プロセッサ数が色プレーン数を上まわった場合にも対応可能とするために、好適には、領域分割部１２８と、第２バッファ１３０とを含んで構成することができる。
【００４３】
プレーン処理部１２４の色変換部１２６は、第１バッファ１１２に格納されたＲＧＢ形式の中間データを読み出して、ＲＧＢ色空間からＣＭＹＫ色空間へ色変換し、ＣＭＹＫ形式の中間データを出力する。プレーン処理部１２４の領域分割部１２８は、ＣＭＹＫ形式の中間データの入力を受けて、１ページ分の単位描画領域をバンド領域に分割して、各バンド領域毎に中間データを第２バッファ１３０に格納することができる。図２中、第２バッファ１３０のバッファ領域＃１〜ｍは、それぞれ分割されたバンド領域に対応している。
【００４４】
プレーン並列処理部１３２は、ＣＭＹＫ形式の中間データに従って各色毎の画像処理を実行する、Ｃプレーン処理部１３４、Ｍプレーン処理部１３６、Ｙプレーン処理部１３８、Ｋプレーン処理部１４０の各色プレーン処理部を含んで構成される。各色プレーン処理部１３４〜１４０は、図２中ではＣプレーン処理部１３４のみ詳細を示すが、中間データに従い対応する色のレンダリングを実行するレンダリング部１４２と、レンダリング結果に対し階調処理を施す階調処理部１４４とを含んで構成されており、各色プレーン処理部１３４〜１４０は、好適には、それぞれ異なるプロセッサ４０上で動作する。
【００４５】
プレーン並列処理部１３２は、分割されたバンド領域についての各色毎の処理を、複数のプロセッサ４０に割り当てて並列処理させる。より具体的には、プロセッサ数が色プレーン数と一致する場合（ｎ＝４）には、領域分割部１２８により分割された領域に拘わらず、１ページ分の単位描画領域に相当する処理を、各色毎に異なるプロセッサ４０に割り当てる。
【００４６】
図４は、色プレーン数とプロセッサ数が一致する場合のプレーン並列方式の並列処理における領域の分割および処理の割り当ての様態を示す概略図である。図４に示すように、１ページの単位描画領域２１０は、複数のバンド領域に分割されるが、この場合、すべてのバンド領域の描画処理が、各色毎に異なるプロセッサ＃１〜４に割り当てられる。各色の描画処理が割り当てられた各プロセッサ４０は、第２バッファ１３０から１ページ分の中間データを読み出して、その中間データに従い割り当てに応じた色のレンダリングおよび階調処理を実行し、その描画結果を第５バッファ１８０に格納する。各プロセッサ４０上で各色毎にスレッド処理され、マルチスレッディングによる並列処理が実現される。
【００４７】
プロセッサ数が色プレーン数に満たない場合（ｎ＞４）には、プレーン並列処理部１３２は、その複数のプロセッサに対し、各領域および各色の処理を略均等に分配して、割り当てることができる。例えばプロセッサ数が色プレーン数の半数である場合（ｎ＝２）には、すべてのバンド領域の描画処理を２色毎に異なるプロセッサに割り当てればよい。
【００４８】
プロセッサ数が色プレーン数の倍数に一致する場合（ｎ＝４×ｉ｜ｉは、２以上の自然数である。）には、複数のプロセッサ４０を色プレーン数毎にグループ分けして、上記倍数個のグループを作る。プレーン並列処理部１３２は、領域分割部１２８が分割したバンド領域を、上記グループに略均等に分配し、各グループでは、割り当てられたバンド領域について、各色毎に描画処理を異なるプロセッサ４０に割り当てる。
【００４９】
図５は、プロセッサ数が色プレーン数の倍数と一致する場合のプレーン並列方式の並列処理における領域の分割および割り当ての様態を示す概略図である。図５中、プロセッサを略号「Ｐ」で示す。図５に示すように、１ページ分の単位描画領域２２０は、複数のバンド領域に分割され、バンド領域の各色毎の描画処理が、異なるプロセッサに割り当てられている。図５に示す例では、プロセッサ＃１〜４の４つのプロセッサが１つのグループを形成し、バンド領域１，２の処理を色毎に分担している。同様に、プロセッサ＃（ｎ−３）〜（ｎ）の４つのプロセッサが１つのグループを形成し、バンド領域（ｍ−１）およびバンド領域（ｍ）の処理を色毎に分担している。
【００５０】
なお、描画処理の割り当て手法は、特に限定されるものではないが、一例を図６に示す。図６は、プレーン並列方式の並列処理における任意の数のプロセッサに対する描画処理の割り当て手法を示す概略図である。図６に示す手法では、プレーン処理部１２４の領域分割部１２８は、まず、１ページ分の単位描画領域を、プロセッサ数ｎでバンド分割する。説明便宜上、分割された各バンド領域の各色毎の描画処理には、色および領域番号からなる識別子（例えば、色：シアン，領域番号：１に対してＣ１のように）が与えられるものとする。プレーン並列処理部１３２は、プロセッサ数ｎのバンド領域および色プレーン数４の合計４ｎの描画処理を、ｎ個のプロセッサに対し、単一のプロセッサに割り当てられる色数が可能な限り小さくなるように割り当てる。より具体的には、４ｎ個のバンド領域および色で指定される描画処理を、色および領域の順に、色プレーン数（４つ）ずつプロセッサに割り当てる。
【００５１】
図６（Ａ）〜（Ｃ）は、それぞれ、プロセッサ数が４の場合、プロセッサ数が２の場合、プロセッサ数が８の場合の割り当て結果を例示している。図６に示すように、上記割り当て手法によれば、最悪でも１つのプロセッサに対して２色の描画処理が割り当てられることとなる。
【００５２】
以下、図７および図８を参照して、本実施形態のレーザプリンタ１０が実行する印刷データの並列処理方法について、説明する。図７は、本実施形態のレーザプリンタ１０が実行する印刷データの並列処理方法を示すフローチャートである。図７に示す処理は、ホスト装置からの印刷ジョブ要求を受領して、ステップＳ１００から開始される。なお、図７および図８に示す処理は、説明の簡単のため、１ページからなる印刷ジョブを処理する場合を例示するが、印刷ジョブが含むページ数は、特に限定されるものではない。
【００５３】
ステップＳ１０１では、レーザプリンタ１０は、ホスト装置から要求された印刷ジョブの印刷データを受信して、ＤＤＲ−ＳＤＲＡＭ２６上に一時的に格納する。ステップＳ１０２では、ＰＤＬ解釈部１１０が、ＤＤＲ−ＳＤＲＡＭ２６から印刷データを読み出し、解釈処理を施して、１ページ分の中間データを生成し、第１バッファ１１２上に格納する。ステップＳ１０３では、解析部１１４が、中間データを解析し、表１に示すように並列処理方式を決定する。
【００５４】
ステップＳ１０４では、ステップＳ１０３で決定された並列処理方式に従って処理を分岐させ、領域並列方式が決定された場合（領域並列方式）には、ステップＳ１０６へ処理を進める。ステップＳ１０６では、領域分割処理部１６０の領域分割部１６２が、１ページ分の単位描画領域を複数のバンド領域に分割して、分割されたバンド領域に対応する中間データを第３バッファに格納する。ステップＳ１０７では、領域並列処理部１６８が、各バンド領域に対応する描画処理をプロセッサ４０に割り当てる。
【００５５】
ステップＳ１０８では、当該ページがカラー描画命令を含まないモノクロ画像であるか否かに応じて処理を分岐させる。ステップＳ１０８では、カラー画像であった場合（ＮＯ）には、ステップＳ１０９へ処理を進める。ステップＳ１０９では、各プロセッサ４０が、割り当てられた描画処理のレンダリングを実行し、描画結果を第４バッファ１７０に出力し、格納させる。ステップＳ１１０では、ＩＰＵ２０の色変換部２２が、第４バッファ１７０に格納された１ページ分の描画結果に対し、ＲＧＢ色空間からＣＭＹＫ色空間への色変換を施す。ステップＳ１１１では、ＩＰＵ２０の階調処理部２４は、色変換部２２の処理結果に対し階調処理を施す。ステップＳ１１２では、ＩＰＵ２０は、色変換および階調処理が施された最終の描画結果を第５バッファ１８０に出力して、プレーン形式で格納させ、ステップＳ１１４へ進める。
【００５６】
一方、ステップＳ１０８で、モノクロの描画命令のみを含むモノクロ画像であった場合（ＹＥＳ）には、ステップＳ１１３へ処理を進める。ステップＳ１１３では、各プロセッサ４０が、割り当てられた描画処理のモノクロ・レンダリングを実行し、描画結果を第５バッファ１８０に直接出力して、プレーン形式でデータを格納させ、ステップＳ１１４へ進める。
【００５７】
ステップＳ１０４を再び参照すると、ステップＳ１０３でプレーン並列方式が決定された場合（プレーン並列方式）には、ステップＳ１０４からステップＳ１０５へ処理を分岐させる。ステップＳ１０５では、図８に示すプレーン処理を呼び出して実行し、ステップＳ１１４へ処理を進める。
【００５８】
図８は、本実施形態のレーザプリンタ１０が実行するプレーン処理を示すフローチャートである。図８に示す処理は、図７に示したステップＳ１０５の処理により呼び出されて、ステップＳ２００から開始される。ステップＳ２０１では、プレーン処理部１２４の色変換部１２６は、第１バッファ１１２からＲＧＢ形式の中間データを読み出して、ＣＭＹＫ形式に色変換する。ステップＳ２０２では、プレーン処理部１２４の領域分割部１２８は、１ページ分の単位描画領域を複数のバンド領域に分割して、分割された色変換済みの中間データを第２バッファに格納する。
【００５９】
ステップＳ２０３では、プレーン並列処理部１３２は、色およびバンド領域で指定される描画処理をプロセッサに割り当てる。ステップＳ２０４では、各色プレーン処理部１３４〜１４０は、割り当てに応じてプロセッサを動作させて、レンダリングおよび階調処理を並列に実行する。ステップＳ２０５では、レンダリングおよび階調処理された描画結果を第５バッファに出力して、プレーン形式で格納させる。
【００６０】
再び図７を参照すると、ステップＳ１１４では、ＣＭＹＫ各色プレーンの画像データをプロッタ・エンジン１４に転送して、ステップＳ１１５では、プロッタ・エンジン１４は、転送された画像データに従って画像形成処理を実行し、ステップＳ１１６で処理を終了させる。
【００６１】
図７および図８を参照して説明した並列処理によれば、印刷データに従った単位描画領域に対する描画処理が、予め領域分割による並列動作に関連付けられた特定描画命令がその単位描画領域中に含まれず、カラー描画命令が含まれる場合に、各色プレーンに対応する描画処理を単位として、複数のプロセッサに割り当てられる。このとき、各プロセッサが複数の色プレーンの記憶空間に対してアドレス不連続なアクセスを発生させてしまう割合を好適に低減することが可能となり、もってメモリアクセスの効率化が達成され、さらにはレーザプリンタの性能を向上させることが可能となる。
【００６２】
なお、上述した実施形態では、単位描画領域をページ単位としているが、検出範囲とする単位描画領域は、特に限定されるものではなく、半ページ単位など、如何なる単位で実施することができる。また、上述までの実施形態では、１ページ分の単位描画領域中から特定描画命令およびカラー描画命令の検出を試み、その検出結果に従って、当該単位描画領域に対する並列方式が決定されている。しかしながら、変形例の実施形態では、例えば、１ページを複数のバンド領域に分割した後に、各バンド領域毎の特定描画命令およびカラー描画命令の有無に応じて、プレーン並列処理の対象とするバンド領域、および領域並列方式の対象とするバンド領域を区分するよう構成してもよい。例えば、プロセッサ数が６で有る場合に、１ページを６つのバンド領域に分割し、第１〜４のバンド領域をプレーン並列方式で、残りの第５〜６のバンド領域を領域並列方式で処理するように構成することもできる。
【００６３】
以上説明したように、本実施形態によれば、レンダリングなどの描画処理におけるアドレス不連続なメモリアクセスの発生を低減し、高いメモリアクセス効率の画像並列処理を実現する、画像処理装置、画像処理方法およびプログラムが提供される。
【００６４】
上述した実施形態では、レーザプリンタ１０は、互いに独立して動作する複数のプロセッサを備え、描画命令が記述された印刷データを解析して、領域分割による並列動作に関連付けられた特定描画命令を検出を試みる。例えば１ページ分の単位描画領域中に、上記特定描画命令が検出されなかった場合には、該単位描画領域に対応する各色毎の描画処理を、上記複数のプロセッサに割り当て、それぞれのプロセッサ上で、互いに並列に、割り当てられた描画処理を実行させ、対応する色プレーンに対するレンダリング、続く階調処理後の結果画像をＤＤＲ−ＳＤＲＡＭ２６に書き込む。
【００６５】
上記実施形態の構成によれば、予め領域分割による並列動作に関連付けられた特定描画命令が含まれない単位描画領域については、各色プレーンに対応する描画処理を単位として、複数のプロセッサに割り当てられることとなる。したがって、各プロセッサが複数の色プレーンの記憶空間に対してアドレス不連続なアクセスを発生させてしまう割合を好適に低減することが可能となり、もってメモリアクセスの効率化が達成され、さらにはレーザプリンタの性能を向上させることが可能となる。つまり、マルチプロセッシング環境において、単一プロセッサによる複数の色プレーンのメモリ領域に対するアクセスを可能な限り排除することによって、メモリアクセスの効率化を図ることができる。
【００６６】
なお、上述した画像処理装置の機能および画像処理方法の各ステップは、ハードウェア、または如何なるオペレーティング・システム上のソフトウェア、またはこれらの組合わせにより実装することができる。また上記機能は、アセンブラ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）、などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、ＲＯＭ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、フラッシュメモリ、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、ＳＤメモリ、ＭＯなど装置可読な記録媒体に格納して頒布することができる。
【００６７】
画像処理装置としては、上述した実施形態のレーザプリンタの他、インクジェット・プリンタなどの他の画像形成装置、スキャナなどの画像読取装置、撮像装置、ディスプレイ制御装置など、画像処理を実行する各種装置として構成することができる。
【００６８】
以上本発明の特定の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【図面の簡単な説明】
【００６９】
【図１】本実施形態のレーザプリンタのハードウェア構成を示す図。
【図２】本実施形態のレーザプリンタ上に実現される機能を示すブロック図。
【図３】本実施形態の領域並列方式の並列処理における領域の分割および割り当ての様態を示す概略図。
【図４】色プレーン数とプロセッサ数が一致する場合のプレーン並列方式の並列処理における領域の分割および処理の割り当ての様態を示す概略図。
【図５】プロセッサ数が色プレーン数の倍数と一致する場合のプレーン並列方式の並列処理における領域の分割および割り当ての様態を示す概略図。
【図６】プレーン並列方式の並列処理における任意の数のプロセッサに対する描画処理の割り当て手法を示す概略図。
【図７】本実施形態のレーザプリンタが実行する印刷データの並列処理方法を示すフローチャート。
【図８】本実施形態のレーザプリンタが実行するプレーン処理を示すフローチャート。
【図９】従来のＣＭＹＫ形式のレンダリングのバンド分割による並列処理を、バンド分割されたプレーン毎に示す概略図。
【符号の説明】
【００７０】
１０…レーザプリンタ、１２…コントローラボード、１４…プロッタ・エンジン、１６…ＣＰＵ、１８…クロック生成部、２０…ＩＰＵ、２２…色変換部、２４…階調処理部、２６…ＤＤＲ−ＳＤＲＡＭ、２８…ＲＯＭ、３０…操作パネル、３２…ＨＤＤ、３４…ＰＨＹ、３６…ＰＨＹクロック生成部、４０…プロセッサ、４２…ＰＥ、４４…Ｉキャッシュ、４６…Ｄキャッシュ、４８…２次キャッシュ、５０…クロスバー・スイッチ、５２…ＭＡＣ部、５４…ＨＤＤＩ／Ｆ、５６…ＯＰＥＩ／Ｆ、５８…ＰＣＩＥｘｐｒｅｓｓＩ／Ｆ、６０…３次キャッシュ、６２…ＭＥＭＩ／Ｆ、６４…ＬｏｃａｌＢｕｓＩ／Ｆ、７０…ネットワーク、Ｊ…印刷データ、１００…機能ブロック、１１０…ＰＤＬ解釈部、１１２…第１バッファ、１１４…解析部、１１６…特定描画命令検出部、１１８…カラー描画命令検出部、１２４…プレーン処理部、１２６…色変換部、１２８…領域分割部、１３０…第２バッファ、１３２…プレーン並列処理部、１３４…Ｃプレーン処理部、１３６…Ｍプレーン処理部、１３８…Ｙプレーン処理部、１４０…Ｋプレーン処理部、１４２…レンダリング部、１４４…階調処理部、１６０…領域分割処理部、１６２…領域分割部、１６４…第３バッファ、１６８…領域並列処理部、１７０…第４バッファ、１８０…第５バッファ、２００…単位描画領域、２０２…バンド領域、２１０…単位描画領域、２２０…単位描画領域
【図１】
2010102569.tif 000004
【図２】
2010102569.tif 000005
【図３】
2010102569.tif 000006
【図４】
2010102569.tif 000007
【図５】
2010102569.tif 000008
【図６】
2010102569.tif 000009
【図７】
2010102569.tif 000010
【図８】
2010102569.tif 000011
【図９】
2010102569.tif 000012