(57)【要約】【課題】  マルチコアＣＰＵを用いた並列処理において、ページ並列処理、オブジェクト並列処理の２つの方式それぞれのメリットを活かすことでＶＤＰのＲＩＰ処理速度をより高める。【解決手段】  プリンタ１００は、再利用される描画オブジェクトからディスプレイリストを生成して、生成されたディスプレイリストをキャッシュするキャッシュ制御部２１０と、キャッシュヒット率を取得し、印刷データの先頭ページから順番に前記オブジェクト並列処理により処理し、取得されたキャッシュヒット率が所定のしきい値以上になったページ以降のページをページ並列処理手段により処理するＰＰＭＬインタプリタ２０９とを有する。【選択図】  図６
2012171239.tif 000002
【特許請求の範囲】
【請求項１】
ジョブ内で再利用される描画オブジェクトを含む印刷データの画像データを生成する画像形成装置であって、
前記再利用される描画オブジェクトからディスプレイリストを生成して、生成されたディスプレイリストをキャッシュするキャッシュ手段と、
前記印刷データの各ページを描画オブジェクト単位で分割して並列にＲＩＰ処理を行うオブジェクト並列処理手段と、
前記印刷データをページ単位で分割して並列にＲＩＰ処理を行うページ並列処理手段と、
前記印刷データにおいて、ページ内に含まれる前記再利用される描画オブジェクトのうち、前記キャッシュ手段によりディスプレイリストとしてキャッシュされた描画オブジェクトの割合を示すキャッシュヒット率を取得する取得手段と、
前記印刷データの先頭ページから順番に前記オブジェクト並列処理手段により処理し、前記取得手段により取得されたキャッシュヒット率が所定のしきい値以上になったページ以降のページをページ並列処理手段により処理する処理制御手段とを有することを特徴とする画像形成装置。
【請求項２】
前記オブジェクト並列処理手段は、前記オブジェクト並列処理におるオブジェクトの分割を前記印刷データで指定されるオブジェクト単位で行うことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記印刷データはＰＰＭＬデータであることを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記印刷データにおける１ページあたりのオブジェクト数により、前記ページ並列処理を開始する基準となるしきい値を調整する調整手段を有することを特徴とする請求項１乃至３いずれか１項に記載の画像形成装置。
【請求項５】
前記調整手段は、前記オブジェクト数が多いほど、前記ページ並列処理を開始する基準となるしきい値を大きくし、前記オブジェクト数が少ないほど、前記ページ並列処理を開始する基準となるしきい値を小さくするように調整することを特徴とする請求項４に記載の画像形成装置。
【請求項６】
ジョブ内で再利用される描画オブジェクトを含む印刷データの画像データを生成する画像形成装置の制御方法であって、
前記再利用される描画オブジェクトからディスプレイリストを生成して、生成されたディスプレイリストをキャッシュするキャッシュ工程と、
前記印刷データの各ページを描画オブジェクト単位で分割して並列にＲＩＰ処理を行うオブジェクト並列処理工程と、
前記印刷データをページ単位で分割して並列にＲＩＰ処理を行うページ並列処理工程と、
前記印刷データにおいて、ページ内に含まれる前記再利用される描画オブジェクトのうち、前記キャッシュ工程でディスプレイリストとしてキャッシュされた描画オブジェクトの割合を示すキャッシュヒット率を取得する取得工程と、
前記印刷データの先頭ページから順番に前記オブジェクト並列処理工程により処理し、前記取得工程で取得されたキャッシュヒット率が所定のしきい値以上になったページ以降のページをページ並列処理工程により処理することを特徴とする画像形成装置の制御方法。
【請求項７】
請求項６に記載の画像形成装置の制御方法に含まれる各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、その制御方法及びプログラムに関するものである。
【背景技術】
【０００２】
デジタル印刷の進展と共に、その特色を活かした形態としてのバリアブルデータ印刷（Ｖａｒｉａｂｌｅ  Ｄａｔａ  Ｐｒｉｎｔ、以後、ＶＤＰと略す）が注目されて久しい。印刷物の一部を可変データとして部毎に変更するなどの印刷形態は、電子写真などのデジタルプリンタの特性を最大限に発揮するものである。初期のＶＤＰでは各社各様のＶＤＰ言語が使われていたが、現在では標準言語としてのＰＰＭＬが規定され、広く利用されている。ＰＰＭＬでは、ページを描画する要素として、繰り返し参照されるリユーサブルオブジェクトと、一度限り参照されるローカルオブジェクトの二つがある。リユーサブルオブジェクトはページ内、ページ間、あるいはジョブ間で、単一の描画オブジェクトを複数箇所に配置する場合に用いられる。通常、ローカルオブジェクトやリユーサブルオブジェクト等の描画オブジェクトはソース描画データとしてＰｏｓｔＳｃｒｉｐｔ（登録商標。以後、ＰＳと略記する）やＰＤＦにより記述される。これらのソース描画データはＲＩＰ処理を経てラスタイメージ化された後にページ上に配置される。ＰＰＭＬのリユーサブルオブジェクトのように再利用されることが明確な場合は、ソース描画データからＲＩＰ処理した結果のラスタイメージをキャッシュする。その結果、非常に高速な描画処理が可能となる。但し、ラスタイメージは高解像度かつ高階調のカラーデータの場合、非常に大きなサイズとなる。その為、大容量のメモリが必要となる。そこでラスタイメージに変換する手前のディスプレイリスト（中間データ）をソース描画データから生成し、これをキャッシュするという方法もある。ディスプレイリストをレンダリングするための時間は残るが、キャッシュに必要なメモリ容量を大幅に削減することが可能で、メモリ容量と性能のバランスを考慮した折衷案といえる。
【０００３】
一方、近年、ＶＤＰのＲＩＰ処理を行うＣＰＵは、クロック性能の向上が頭打ちとなり、複数のコアを単一パッケージに格納したマルチコア化が進んでいる。マルチコア化したＣＰＵの性能をフルに引き出すためには、ＲＩＰ処理の並列化が必須となり、ＶＤＰを含むＰＤＬデータの並列処理方法として幾つかの方法が考案されている。例えば、複数ジョブを複数のコアで同時並行してＲＩＰ処理するジョブ並列処理方式がある。ジョブ並列処理方式では大量のジョブを処理する場合には、全体の生産性を向上することができる。しかしながら、その中の単一ジョブだけをみると、ＲＩＰ処理時間はシングルコアで実行した場合と変わらない。ターンアラウンドタイムの短縮が要求されるＶＤＰジョブには適した方式とは言えない。また、別の方法として、単一ジョブ内の複数ページを複数のコアで同時並行してＲＩＰ処理するページ並列処理方式がある。ページ並列処理方式では単一ジョブに対しても高速化が見込める。しかし、ページ間の依存関係の無いページ独立なＰＤＬ言語（ＶＤＰ言語）である必要がある。また、ジョブ中の単一ページだけをみると、ＲＩＰ処理時間はシングルコアで実行した場合と変わらない。複雑な描画がされたページのＲＩＰ処理は時間がかかることが多く、ページ並列処理方式でもボトルネックとなる可能性が残る。さらに別の方法として、単一ページ内の複数描画オブジェクトを複数のコアで同時並行してＲＩＰ処理するオブジェクト並列処理方式がある。オブジェクト並列処理方式は単一ページのＲＩＰ処理時間を短縮することも可能であるが、オブジェクトの分割と収集にかかる計算コストが高いことが知られている。並列処理の効率を考えた場合には、ジョブ並列処理方式、もしくはページ並列処理方式の方が望ましい。また、ＶＤＰに特化した並列処理方式として、ジョブをＶＤＰで定義されたレコード毎に分割して、レコード毎に複数のコアで同時並行してＲＩＰ処理するレコード並列処理方式がある（例えば、特許文献１参照）。ＶＤＰの目的として、Ｏｎｅ  ｔｏ  Ｏｎｅマーケティングを実現するためのパーソナライズされた印刷物の製造がある。一般に、この一人分のＶＤＰデータをレコードと呼ぶ。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１７２９１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＶＤＰにおいてもマルチコアＣＰＵによる並列処理を用いた高速化が期待されるが、ＶＤＰの場合には固有の課題がある。ページ並列処理方式では、ある一つのリユーサブルオブジェクトを同時並行でＲＩＰ処理する複数のページで同時に参照していると効率が低下する。単一のリユーサブルオブジェクトを複数のコアで重複してＲＩＰ処理するか、片方のコアのＲＩＰ処理が完了するのを待つ必要があるためである。重複してＲＩＰ処理すると、ＶＤＰの大きなメリットであるリユーサブルオブジェクトのキャッシュ処理の効用が失われる。かといって、待ち合わせ処理を行うと待ちによるＣＰＵ時間の無駄が発生する。一般に、リユーサブルオブジェクトのＲＩＰ処理はジョブの先頭付近で多く発生し、ジョブの進展と共にキャッシュ処理による高速化が可能となる。従って、ＶＤＰにおけるページ並列処理方式はジョブの先頭が苦手で、ジョブの後半が得意と言える。
【０００６】
対して、オブジェクト並列処理はローカルオブジェクトとリユーサブルオブジェクトが明確に定義されるＰＰＭＬなどのＶＤＰ言語とは比較的相性の良い方法とも言える。オブジェクトの分割と収集の計算コストを比較的少なく抑えることが可能なためである。また、オブジェクトの再利用はジョブ間やレコード間、ページ間で行われることが多く、ページ内で再利用されるケースは比較的少ない。しかし、オブジェクトの分割がＶＤＰデータを生成するＶＤＰアプリケーションに依存してしまい、少ないオブジェクト数でページを構成するＶＤＰデータでは効果が期待できない。また、ジョブの進展と共にキャッシュされたリユーサブルオブジェクトの再利用が増えるため、並列処理の対象となるオブジェクト数が減ってしまう。即ち、ＶＤＰにおけるオブジェクト並列処理方式はジョブの先頭が得意で、どちらかというとジョブの後半が苦手な方式と言える。
このように、ＶＤＰにおけるＲＩＰの並列処理方式にはＶＤＰ固有の事情があり、どの処理方式を選択するにせよ、それぞれ一長一短がある。
【０００７】
本発明は、マルチコアＣＰＵを用いた並列処理において、ページ並列処理、オブジェクト並列処理の２つの方式それぞれのメリットを活かすことでＶＤＰのＲＩＰ処理速度をより高めることが可能な画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を鑑み、本発明の画像形成装置は、ジョブ内で再利用される描画オブジェクトを含む印刷データの画像データを生成する画像形成装置であって、前記再利用される描画オブジェクトからディスプレイリストを生成して、生成されたディスプレイリストをキャッシュするキャッシュ手段と、前記印刷データの各ページを描画オブジェクト単位で分割して並列にＲＩＰ処理を行うオブジェクト並列処理手段と、前記印刷データをページ単位で分割して並列にＲＩＰ処理を行うページ並列処理手段と、前記印刷データにおいて、ページ内に含まれる前記再利用される描画オブジェクトのうち、前記キャッシュ手段によりディスプレイリストとしてキャッシュされた描画オブジェクトの割合を示すキャッシュヒット率を取得する取得手段と、前記印刷データの先頭ページから順番に前記オブジェクト並列処理手段により処理し、前記取得手段により取得されたキャッシュヒット率が所定のしきい値以上になったページ以降のページをページ並列処理手段により処理する処理制御手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、マルチコアＣＰＵを用いた並列処理において、ページ並列処理、オブジェクト並列処理の２つの方式それぞれのメリットを活かすことでＶＤＰのＲＩＰ処理速度をより高めることが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態を説明するハードウェアブロック図
【図２】（Ａ）本発明の一実施形態を説明するソフトウェアブロック図、（Ｂ）ＰＤＬインタプリタの詳細を説明するソフトウェアブロック図
【図３】ＰＰＭＬにおけるオブジェクト並列処理のフローチャート
【図４】ＰＰＭＬにおけるページ並列処理のフローチャート
【図５】ページ並列処理時のディスプレイリスト生成処理のフローチャート
【図６】ＰＰＭＬにおけるハイブリッド並列処理のフローチャート
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１２】
図１は、本発明の実施形態に適用される画像形成装置であるプリンタ１００の構成を説明するハードウェアブロック図である。なお、本実施形態では画像形成装置単体の構成を用いて説明するが、ネットワークを介して接続させるホストコンピュータ上に多くの処理を分離実行させる構成も可能である。
【００１３】
コントローラユニット２００は、画像信号やデバイス情報の入出力を制御する。ＣＰＵ１は、ＲＯＭ３あるいはＨＤＤ４に記憶されたプログラムをＲＡＭ２に読み出し、実行する。さらに、ＣＰＵ１は、システムバス５に接続される各デバイスを統括的に制御する。ＣＰＵ１は、内部に二つのコアを有するデュアルコアプロセッサであり、２つの制御プログラムを同時並列に実行可能である。
【００１４】
ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリアとして機能する。ＲＯＭ３には、電源ＯＮ時に実行されるブートプログラムが格納され、ＨＤＤ４には、オペレーティングシステムと本装置の制御プログラム本体が格納される。また、ＨＤＤ４は、画像データやプリントデータ等の大容量データを一時的あるいは長期的に保持する目的でも使用される。Ｎｅｔｗｏｒｋ６は、ローカルエリアネットワーク１３に接続し、印刷データやデバイス情報の入出力を担う。
【００１５】
操作部Ｉ／Ｆ７は、操作部１４とのインターフェース部で、操作部１４に表示する画像データを操作部１４に対して出力する。また、操作部Ｉ／Ｆ７は、操作部１４から本装置の使用者が入力した情報を、ＣＰＵ１に伝える役割をする。操作部１４は、出力器として液晶パネルと音源を備え、入力器としてタッチパネルとハードキーを備えるものである。コントローラユニット２００は、デバイスＩ／Ｆ８を介して、プリンタエンジン１５に接続される。デバイスＩ／Ｆ８は、ＣＰＵ１の指示に基づき、画像信号の送出、デバイス動作指示、デバイス情報の受信を行う。プリンタエンジン１５は、コントローラユニット２００からの画像信号を媒体上に出力する出力機であり、電子写真方式、インクジェット方式の何れでも構わない。
【００１６】
Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ（ＲＩＰ）９は、ディスプレイリストをラスタイメージに展開する専用ハードウェアである。ＲＩＰ９は、ＣＰＵ１によりＲＡＭ２上に生成されたディスプレイリストを高速かつ、ＣＰＵ１の実行と並列に、処理するものである。プリンタ画像処理部１０は、プリント出力画像データに対して、画像補正、ハーフトーニング等を行う。画像回転部１２は、画像データの回転を行う。画像圧伸部１１は、多値画像データはＪＰＥＧ、２値画像データはＪＢＩＧ、ＭＭＲ、ＭＨの圧縮伸張処理を行う。
【００１７】
図２（Ａ）は、本画像処理装置のソフトウェアモジュール構成図である。図２（Ａ）に記載した各ソフトウェアモジュールは、プログラムとしてＨＤＤ４に格納され、ＲＡＭ２にロードされＣＰＵ１により実行されるものである。より具体的には、各ソフトウェアモジュールはＣＰＵ１上で動作するＯＳ（オペレーティングシステム）によりＲＡＭ２にロードされ、スレッド単位で実行権を付与され、実行されるものである。
【００１８】
データ受信部２０１は、ホストから送信されたプリントデータを受信し、受信したデータはジョブ制御部２０２を介してジョブデータ管理部２０８で保持される。ジョブ制御部２０２は、データ受信から印刷までのジョブ制御の全般を司る。ＰＤＬインタプリタ２０３は、プリントデータを解釈して、中間データであるディスプレイリストを生成する。生成されたディスプレイリストは、ジョブ制御部２０２を介してジョブデータ管理部２０８で保持される。レンダラ２０４は、ディスプレイリストからビットマップイメージを生成するモジュールであり、多くの処理は専用ハードウェアＲＩＰ９により実行される。
【００１９】
生成されたビットマップイメージは、ジョブ制御部２０２を介してジョブデータ管理部２０８で保持される。プリンタドライバ２０５は、デバイスＩ／Ｆ８を介してプリンタエンジンへの印刷指示とビットマップイメージの送出を行う。ユーザインターフェース２０６は、操作部Ｉ／Ｆ７を介して、操作部１４を制御するモジュールである。主に操作部１４の液晶パネルに表示するデータを生成し、タッチパネルからの入力に従い液晶パネルの表示を更新する。また、タッチパネルからの入力が何らかのジョブ実行指示であった場合は、ジョブ制御部２０２に指示を伝達する。ジョブデータ管理部２０８は、プリントデータ、ディスプレイリスト、ビットマップイメージのそれぞれを一時的もしくは長期的に保持管理するデータベースである。
【００２０】
図２（Ｂ）は、図２（Ａ）のＰＤＬインタプリタ２０３をより詳細に記したソフトウェアモジュール構成図である。ＰＰＭＬインタプリタ２０９は、ＰＰＭＬデータを解釈し、ディスプレイリストの生成を行う。ＰＤＦインタプリタ２１１は、ＰＤＦデータの解釈を行い、ディスプレイリストの生成を行う。ＰＳインタプリタ２１２は、ＰＳデータの解釈を行い、ディスプレイリストを生成する。キャッシュ制御部２１０は、描画オブジェクトをディスプレイリストの形式でキャッシュする。
【００２１】
ＰＰＭＬインタプリタ２０９は、ＰＰＭＬのコンテンツとして、ＰＳもしくはＰＤＦデータが指定されている場合は、ジョブ制御部２０２を介して、ＰＤＦインタプリタ２１１、もしくはＰＳインタプリタ２１２を起動する。ＰＰＭＬインタプリタ２０９は、ＰＰＭＬデータで描画オブジェクトの再利用が指示された場合は、キャッシュ制御部２１０と連動して描画オブジェクトの再利用を行う。
【００２２】
図３は、オブジェクト単位でのＲＩＰ処理である、オブジェクト並列処理を行う場合の１ページ分のＰＰＭＬデータをＲＩＰ処理する制御フローをあらわしたフローチャートである。なお、本説明では図２（Ａ）および図２（Ｂ）の各ソフトウェアモジュールによって実行されるように記述する。また、本フローチャートは、ＨＤＤ４に記憶された図２（Ａ）および図２（Ｂ）の各ソフトウェアモジュール内の各プログラムがＲＡＭ２に読み出され、ＣＰＵ１により実行されることにより実現される。
【００２３】
本フローチャートではスレッドＡ１、スレッドＡ２、スレッドＣの三つのスレッドが並列に実行される。各スレッドはＯＳにより時分割され、ＣＰＵ１内の二つのコアに順番に割り振られる。時分割の単位は十分に小さいため、三つのスレッドは並列動作すると見なすことができる。しかしながら、ある一時点に着目すると同時に実行されるスレッドは二つである。オペレーティングシステムによるマルチスレッディング処理は一般に広く知られる技術であるため、詳細は省略する。スレッドＣがＰＰＭＬ処理のメインスレッドであり、スレッドＡ１、スレッドＡ２はスレッドＣにより実行時に動的生成されるものである。
【００２４】
スレッドＣでは最初にステップＳ１１０１において、ＰＰＭＬインタプリタ２０９は、その時点でディスプレイリスト生成中の描画オブジェクトがあるか否か判定する。ページ処理開始当初はディスプレイリスト生成中の描画オブジェクトは存在しないため、Ｎｏとなる。Ｎｏの場合はステップＳ１１０２に進み、ＰＰＭＬインタプリタ２０９はページ内の全描画オブジェクトのディスプレイリスト生成依頼が完了しているか判定する。後述するように、描画オブジェクトのディスプレイリスト生成処理は別スレッドに依頼して行う。
【００２５】
ページ処理開始当初は全描画オブジェクトのディスプレイリスト生成依頼は完了していないためＮｏとなる。Ｎｏの場合はステップＳ１１０３へ進み、ＰＰＭＬインタプリタ２０９はＰＰＭＬデータを解釈して、描画オブジェクトを取りだす。ここで、描画オブジェクトはＰＰＭＬデータで定義されたローカルオブジェクトもしくはリユーサブルオブジェクトのいずれかを指すものである。
【００２６】
次にステップＳ１１０４へ進み、ＰＰＭＬインタプリタ２０９は、描画オブジェクトがリユーサブルオブジェクトかつキャッシュ内に格納済みか判定する。Ｎｏの場合は、ステップＳ１１０５へ進み、ＰＰＭＬインタプリタ２０９は描画オブジェクトに対応するＰＤＬデータのディスプレイリスト生成依頼をジョブ制御部２０２に通知する。ここでジョブ制御部２０２は新たなスレッドＡを生成し、当該ＰＤＬインタプリタにディスプレイリスト生成を実行させる。なお、図３ではスレッドＡ１、スレッドＡ２と二つのスレッドを図示しているが、スレッドは描画オブジェクトの数分だけ動的生成される。ただし、後述するように同時に実行されるスレッドは二つに限定するように制御されるため、便宜的にスレッドＡ１、スレッドＡ２と表記する。
【００２７】
ステップＳ１１０５の処理を完了すると、ステップＳ１１０１に戻る。ステップＳ１１０４でＹｅｓの場合は、ステップＳ１１１１に進み、ＰＰＭＬインタプリタ２０９はキャッシュ制御部２１０を介してキャッシュされたディスプレイリストを取りだす。なお、ディスプレイリストのキャッシュはジョブ間、ページ間で破棄されないため、ページ処理開始直後でもキャッシュにヒットする可能性がある。次にステップＳ１１０２へ進み、ＰＰＭＬインタプリタ２０９は描画オブジェクトのページ内でのレイアウトを考慮して、ディスプレイリストをページ用ディスプレイリストに合成する。次にステップＳ１１１３へ進み、ＰＰＭＬインタプリタ２０９は１ページ分のディスプレイリスト生成が完了したか判定する。ここでＮｏの場合は、ステップＳ１１０１に戻り、処理を繰り返す。
【００２８】
ステップＳ１１０１でＹｅｓの場合は、ステップＳ１１０６へ進む。ステップＳ１１０１で、ＰＰＭＬインタプリタ２０９はディスプレイリスト生成が完了していても、ステップＳ１１１２の処理が完了していない場合も含めて生成中と判定する。ステップＳ１１０６で、ＰＰＭＬインタプリタ２０９はディスプレイリストの生成が完了した描画オブジェクトがあるか判定する。スレッドＡ１、スレッドＡ２のディスプレイリスト生成処理は非同期に並列実行されるため、どちらのケースも想定される。Ｎｏの場合はステップＳ１１０７へ進み、その時点でディスプレイリスト生成中の描画オブジェクトが二つか判定する。
【００２９】
ステップＳ１１０７でＮｏの場合はステップＳ１１０２へ進み、Ｙｅｓの場合はステップＳ１１０８へ進む。ステップＳ１１０８では、ＰＰＭＬインタプリタ２０９は、いずれかの描画オブジェクトのディスプレイリスト生成が完了するまで待つ。ここでは、スレッドＡ１もしくはＡ２との同期制御が行われ、スレッドＡ１もしくはＡ２の処理が完了すると次のステップＳ１１０９に進む。なお、ステップＳ１１０７で描画オブジェクト数の判定値を２としているのは、ＣＰＵコアが二つであることに対応している。さらに多数のＣＰＵコアを有する実施形態では判定値をその数に合わせて変更すれば良い。
【００３０】
ステップＳ１１０６でＹｅｓの場合は、ステップＳ１１０９へ進む。ステップＳ１１０９で、ＰＰＭＬインタプリタ２０９は当該描画オブジェクトがリユーサブルオブジェクトか否か判定する。Ｙｅｓの場合はＳ１１１０へ進みＰＰＭＬインタプリタ２０９はキャッシュ制御部２１０を介して、生成してディスプレイリストをキャッシュに格納する。次にステップＳ１１１２へ進む。また、ステップＳ１１０９でＮｏの場合もステップＳ１１１２へ進む。
【００３１】
ステップＳ１１０２でＹｅｓの場合は、ステップＳ１１０８へ進む。この制御フローは、全ての描画オブジェクトのディスプレイリスト生成依頼が完了し、スレッドＡ１もしくはＡ２での処理待ちの状態になった際に発生する。最後にステップＳ１１１３でＹｅｓの場合はステップＳ１１１４へ進み、ＰＰＭＬインタプリタ２０９はレンダリングを行い、そしてビットマップを生成する。
【００３２】
スレッドＡ１、スレッドＡ２のステップＳ１２０１において、ＰＳインタプリタ２１２もしくはＰＤＦインタプリタ２１１は当該描画オブジェクトに対応するＰＤＬデータを解釈する。そして、ＰＳインタプリタ２１２もしくはＰＤＦインタプリタ２１１は当該描画オブジェクトに対応するディスプレイリストを生成する。これにより、描画オブジェクト単位で、ＲＩＰ処理が行われることとなる。ＰＳインタプリタ２１２もしくはＰＤＦインタプリタ２１１はリエントラントな構成となっており、同時に二つのＰＳデータもしくは二つのＰＤＦデータを処理することが可能である。スレッドＡ１、スレッドＡ２の処理時間は解釈するＰＤＬデータの量と複雑度に大きく依存するため、終了タイミングは事前に予測できない。
【００３３】
図４は、ページ単位でのＲＩＰ処理である、ページ並列処理を行う場合のＰＰＭＬデータをＲＩＰ処理する制御フローをあらわしたフローチャートである。なお、本説明では図２（Ａ）および図２（Ｂ）の各ソフトウェアモジュールによって実行されるように記述する。また、本フローチャートはＨＤＤ４に記憶された図２（Ａ）および図２（Ｂ）の各ソフトウェアモジュール内の各プログラムがＲＡＭ２に読み出され、ＣＰＵ１により実行されることにより実現される。
【００３４】
本フローチャートではスレッドＢ１、スレッドＢ２、スレッドＣの三つのスレッドが並列に実行される。各スレッドはＯＳにより時分割され、ＣＰＵ１内の二つのコアに順番に割り振られる。時分割の単位は十分に小さいため、三つのスレッドは並列動作すると見なすことができる。しかしながら、ある一時点に着目すると同時に実行されるスレッドは二つである。オペレーティングシステムによるマルチスレッディング処理は一般に広く知られる技術であるため、詳細は省略する。スレッドＣがＰＰＭＬ処理のメインスレッドであり、スレッドＢ１、スレッドＢ２はスレッドＣにより実行時に動的生成されるものである。
【００３５】
スレッドＣでは最初にステップＳ１３０１において、ＰＰＭＬインタプリタ２０９はディスプレイリストの生成が完了したページがあるか判定する。図４のフローを開始した当初はディスプレイリストの生成は完了していないので、Ｎｏとなる。Ｎｏの場合はステップＳ１３０２へ進み、ＰＰＭＬインタプリタ２０９は全ページのディスプレイリスト生成依頼が完了したか判定する。後述するように、各ページのディスプレイリスト生成処理は別スレッドに依頼して行う。
【００３６】
図４のフローを開始した当初は全ページのディスプレイリスト生成依頼は完了していないためＮｏとなる。Ｎｏの場合はステップＳ１３０３へ進み、ＰＰＭＬインタプリタ２０９はＰＰＭＬデータを解釈して、次のページを取りだす。そして、ステップＳ１３０４へ進み、その時点でディスプレイリスト生成依頼中のページは二つか否か判定する。Ｎｏの場合はステップＳ１３０６へ進み、ＰＰＭＬインタプリタ２０９はページに対応するＰＰＭＬデータのディスプレイリスト生成依頼をジョブ制御部２０２に通知する。ここでジョブ制御部２０２は新たなスレッドＢを生成し、ＰＰＭＬインタプリタ２０９にディスプレイリスト生成を実行させる。
【００３７】
ステップＳ１３０４でＹｅｓの場合は、ステップＳ１３０５へ進み、ＰＰＭＬインタプリタ２０９はいずれかのページのディスプレイリスト生成処理が完了するまで待つ。なお、図４ではスレッドＢ１、スレッドＢ２と二つのスレッドを図示しているが、スレッドはページの数分だけ動的生成される。ただし、ステップＳ１３０４、ステップＳ１３０５の制御により同時に実行されるスレッドは二つに限定されるため、便宜的にスレッドＢ１、スレッドＢ２と表記する。
【００３８】
ステップＳ１３０５では、スレッドＢ１もしくはＢ２との同期制御が行われ、スレッドＢ１もしくはＢ２の処理が完了すると次のステップＳ１３０６に進む。なお、ステップＳ１３０４でページ数の判定値を２としているのは、ＣＰＵコアが二つであることに対応している。さらに多数のＣＰＵコアを有する実施形態では判定値をその数に合わせて変更すれば良い。ステップＳ１３０６の処理が終了すると、ステップＳ１３０１へ戻り、処理を繰り返す。
【００３９】
ステップＳ１３０１でＹｅｓの場合はステップＳ１３０８へ進み、ＰＰＭＬインタプリタ２０９はレンダリングを行い、そしてビットマップを生成する。次にステップＳ１３０９へ進み、ＰＰＭＬインタプリタ２０９は全ページのレンダリングが完了したか判定する。Ｙｅｓの場合は、図４のフローを終了する。Ｎｏの場合は、ステップＳ１３０１へ戻り、処理を繰り返す。ステップＳ１３０２でＹｅｓの場合はステップＳ１３０７へ進み、ＰＰＭＬインタプリタ２０９はいずれかのページのディスプレイリスト生成が完了するまで待つ。この制御フローは、全てのページのディスプレイリスト生成依頼が完了し、スレッドＢ１もしくはＢ２での処理待ちの状態になった際に発生する。
【００４０】
スレッドＢ１、スレッドＢ２のステップＳ１４０１において、ＰＰＭＬインタプリタ２０９は当該描画オブジェクトに対応するＰＤＬデータを解釈し、ディスプレイリストを生成する。ＰＰＭＬインタプリタ２０９のディスプレイリスト生成処理はリエントラントな構成となっており、同時に二つのＰＰＭＬデータを処理することが可能である。スレッドＡ１、スレッドＡ２の処理時間は解釈するＰＤＬデータ（ＰＰＭＬとＰＳもしくはＰＤＦ）の量と複雑度に大きく依存するため、終了タイミングは事前に予測できない。
【００４１】
図５はページ並列処理時の各ページのディスプレイリスト生成処理を示したもので、図４のステップＳ１４０１を詳細化したものである。なお、本説明では図２（Ａ）および図２（Ｂ）の各ソフトウェアモジュールによって実行されるように記述する。また、本フローチャートはＨＤＤ４に記憶された図２（Ａ）および図２（Ｂ）の各ソフトウェアモジュール内の各プログラムがＲＡＭ２に読み出され、ＣＰＵ１により実行されることにより実現される。
【００４２】
最初にステップＳ１５０１でＰＰＭＬインタプリタ２０９はＰＰＭＬデータを解釈して、描画オブジェクトを取りだす。ここで、描画オブジェクトはＰＰＭＬデータで定義されたローカルオブジェクトもしくはリユーサブルオブジェクトのいずれかを指すものである。次に、ステップＳ１５０２に進み、ＰＰＭＬインタプリタ２０９は描画オブジェクトがリユーサブルオブジェクトか否か判定する。
【００４３】
Ｎｏの場合はステップＳ１５０３へ進み、ＰＰＭＬインタプリタ２０９は描画オブジェクトに対応するＰＤＬデータのディスプレイリスト生成処理をジョブ制御部２０２に依頼する。ジョブ制御部２０２は、ＰＤＬ種に応じて、ＰＳインタプリタ２１２もしくはＰＤＦインタプリタ２１１にディスプレイリスト生成処理を実行させる。ＰＳインタプリタ２１２もしくはＰＤＦインタプリタ２１１は当該描画オブジェクトに対応するＰＤＬデータを解釈する。そして、ＰＳインタプリタ２１２もしくはＰＤＦインタプリタ２１１は当該描画オブジェクトに対応するディスプレイリストを生成する。
【００４４】
ステップＳ１５０２でＹｅｓの場合はステップＳ１５０４へ進み、当該描画オブジェクトのディスプレイリストがキャッシュ内に格納済みか否か判定する。Ｙｅｓの場合はステップＳ１５０７へ進み、ＰＰＭＬインタプリタ２０９はキャッシュ制御部２１０を介してキャッシュから当該描画オブジェクトのディスプレイリストを取りだす。ステップＳ１５０４でＮｏの場合は、ステップＳ１５０５へ進む。
【００４５】
ステップＳ１５０５で、ＰＰＭＬインタプリタ２０９、ジョブ制御部２０２、ＰＳインタプリタ２１２、ＰＤＦインタプリタ２１１は連携して、当該描画オブジェクトに対応するディスプレイリストを生成する。ステップＳ１５０５の処理は、ステップＳ１５０３と同様である。次にステップＳ１５０６へ進み、ＰＰＭＬインタプリタ２０９はキャッシュ制御部２１０を介して当該描画オブジェクトのディスプレイリストをキャッシュに格納する。
【００４６】
ステップＳ１５０３、ステップＳ１５０６、ステップＳ１５０７の処理が終了すると、いずれもステップＳ１５０８へ進む。ステップＳ１５０８で、ＰＰＭＬインタプリタ２０９は描画オブジェクトのページ内でのレイアウトを考慮して、ディスプレイリストをページ用ディスプレイリストに合成する。次にステップＳ１５０９へ進み、ＰＰＭＬインタプリタ２０９は１ページ分の処理が完了したか判定する。Ｙｅｓの場合は、図５のフローを終了する。Ｎｏの場合は、ステップＳ１５０１へ戻り、処理を繰り返す。
【００４７】
図６はＰＰＭＬ処理における、オブジェクト並列処理とページ並列処理を組み合わせたハイブリッド並列処理を示すフローチャートである。なお、本説明では図２（Ａ）および（Ｂ）の各ソフトウェアモジュールによって実行されるように記述する。また、本フローチャートはＨＤＤ４に記憶された図２（Ａ）および（Ｂ）の各ソフトウェアモジュール内の各プログラムがＲＡＭ２に読み出され、ＣＰＵ１により実行されることにより実現される。
【００４８】
ステップＳ１６０１で、ＰＰＭＬインタプリタ２０９はＰＰＭＬデータを解釈して次のページを取りだす。次に、ステップＳ１６０２へ進み、ＰＰＭＬインタプリタ２０９は当該ページをオブジェクト並列処理でＲＩＰする。ステップＳ１６０２の詳細は図３で示したフローチャートが該当する。
【００４９】
次にステップＳ１６０３へ進み、ＰＰＭＬインタプリタ２０９は当該ページに含まれるリユーサブルオブジェクトのキャッシュヒット率を計数し取得する。なお、キャッシュヒット率とは、ページで使用されるリユーザブルオブジェクトのうち、すでにディスプレイリストが生成され、キャッシュされているリユーザブルオブジェクトの割合を示す。例えば、ページに１０個のリユーザブルオブジェクトが含まれており、該ページのＲＩＰ時にすでに６個のリユーザブルオブジェクトがキャッシュされていた場合には、キャッシュヒット率は０．６（６０％）となる。
【００５０】
次に、ステップＳ１６０４へ進み、ＰＰＭＬインタプリタ２０９は当該ページの描画オブジェクト数を計数して、以下の式によりオブジェクト分割度数を算出する。
Ｒ１＝Ｓ／Ｓｓ
（Ｒ１：オブジェクト分割度数、Ｓ：当該ページの描画オブジェクト数、Ｓｓ：基準値Ｓｓ）
ここで、描画オブジェクト数は当該ページで定義されたローカルオブジェクト数とリユーサブルオブジェクト数の総和となる。即ち、オブジェクト分割度数はページおけるオブジェクト数が多いか少ないかを示す度数となる。ＰＰＭＬデータ上で定義される描画オブジェクトをどの程度分割するかは、ＰＰＭＬデータを生成するＶＤＰアプリケーションに大きく依存する。
【００５１】
次に、ステップＳ１６０５へ進み、ＰＰＭＬインタプリタ２０９はページ並列移行しきい値を以下の式により調整する。
Ｔ＝Ｓｑｕａｒｅ（Ｒ１）×Ｔｓ
（Ｔ：ページ並列移行しきい値、Ｒ１：オブジェクト分割度数、Ｔｓ：ページ並列移行しきい値の基準値、Ｓｑｕａｒｅ（）：平方根を求める関数）
この式により、ページ並列移行しきい値は描画オブジェクト数が多いデータではその値が大きくなるように調整される。描画オブジェクト数が少ないデータではその値が小さくなるように調整される。
【００５２】
次にステップＳ１６０６へ進み、ＰＰＭＬインタプリタ２０９は当該ページのキャッシュヒット率がページ並列移行しきい値以上か否か判定する。Ｎｏの場合、即ちキャッシュヒット率がページ並列移行しきい値未満の場合はステップＳ１６０７へ進み、ＰＰＭＬインタプリタ２０９は未処理のページが残っているか判定する。Ｎｏの場合は、図６のフローを終了する。Ｙｅｓの場合はステップＳ１６０１へ戻り、オブジェクト並列処理を繰り返す。即ち、Ｓ１６０５におけるしきい値調整により、描画オブジェクト数が多いデータではオブジェクト並列処理を繰り返す可能性が高まる。逆に描画オブジェクト数が少ないデータではオブジェクト並列処理は早めに断念する可能性が高まる。これは、ページあたりの描画オブジェクト数が多いデータほどオブジェクト並列処理に向いており、オブジェクト並列処理のメリットを享受することが可能なためである。
【００５３】
ステップＳ１６０６でＹｅｓの場合はステップＳ１６０８へ進み、ＰＰＭＬインタプリタ２０９はまだ未処理のページが残っているか否か判定する。Ｎｏの場合は、図６のフローを終了する。Ｙｅｓの場合は、ステップＳ１６０９へ進み、ＰＰＭＬインタプリタ２０９は次のページ以降をページ並列処理でＲＩＰする。ステップＳ１６０９の詳細は図４で示したフローチャートが該当する。
【００５４】
以上の通り、本実施形態におけるハイブリッド並列処理では、先頭ページからリユーサブルオブジェクトのキャッシュヒット率が低いうちは、オブジェクト並列処理を実行し、ヒット率が高くなるとページ並列処理に移行するよう処理制御する。即ち、オブジェクト並列処理とページ並列処理の長所を併せ持つ、効率的な並列処理が可能となり、ＶＤＰジョブのＲＩＰ性能をより高めることが可能となる。
【００５５】
以上、本発明の実施例について具体例を挙げて説明したが、本発明は上記の実施例に限定されるものではない。また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００５６】
２０１  データ受信部
２０２  ジョブ制御部
２０３  ＰＤＬインタプリタ
２０４  レンダラ
２０５  プリンタドライバ
２０６  ユーザインターフェース
２０７  ジョブデータ管理部
２０９  ＰＰＭＬインタプリタ
２１０  キャッシュ制御部
２１１  ＰＤＦインタプリタ
２１２  ＰＳインタプリタ
【図１】
2012171239.tif 000003
【図２】
2012171239.tif 000004
【図３】
2012171239.tif 000005
【図４】
2012171239.tif 000006
【図５】
2012171239.tif 000007
【図６】
2012171239.tif 000008