(57)【要約】【課題】複数の印刷用データ処理を並列に実行する場合に、全体として効率的に処理すること。【解決手段】  印刷装置に設けられた複数の制御手段において、印刷用データ処理及びその他の処理を並列に実行する情報処理方法であって、印刷用データ処理を複数の部分に分割して複数の制御手段に割当てる。複数の制御手段の何れかにおいて、印刷用データ処理の割当てられた部分を終了した場合に、終了した部分以外の印刷用データ処理を、複数の制御手段に再度割り当てる。再割り当ての結果、最も優先順位が高い部分が割り当てられた制御手段以外の制御手段に、その他の処理を実行させる。【選択図】  図６
2010149422.tif 000002
【特許請求の範囲】
【請求項１】
印刷用データを用いた印刷用データ処理及びその他の処理を並列に実行できる複数の制御手段を備えた印刷装置における情報処理方法であって、
前記印刷用データを入力する入力ステップと、
前記印刷用データ処理を複数の部分に分割して前記複数の制御手段に割当てるステップと、
前記複数の制御手段の何れかにおいて、前記印刷用データ処理の割当てられた部分の前記印刷用データ処理を終了した場合に、終了した部分以外の前記印刷用データ処理を、再度、前記複数の制御手段に割り当てる再割当てステップと、
前記再割当てステップによる再割り当ての結果、最も優先順位が高い部分が割り当てられた制御手段以外の制御手段に、前記その他の処理を実行させる制御ステップと、
前記複数の制御手段により前記印刷用データ処理が実行された前記印刷用データに基づいて、印刷を実行する印刷ステップと、
を含むことを特徴とする情報処理方法。
【請求項２】
前記再割当てステップにおいて、前記終了した部分以外の前記印刷用データ処理の中で優先順位が低い部分を、前記印刷用データ処理の割り当てられた部分を終了した前記制御手段に対して割り当てることを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記再割当てステップにおいて、終了した部分以外の前記印刷用データ処理における最も優先順位が高い部分を割り当てられた制御手段が、他の制御手段よりも早く処理を終了するように、再割当てを行なうことを特徴とする請求項１に記載の情報処理方法。
【請求項４】
前記印刷用データは、ページ単位の複数の印刷用データ部分を含み、
前記印刷ステップは、前記複数の印刷用データ部分に前記印刷用データ処理が実行されることにより生成されたページ単位の画像データに基づいて印刷を実行し、
前記印刷ステップにて先に印刷されるページに対応する前記印刷用データ部分の前記印刷用データ処理の優先順位が高いことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理方法。
【請求項５】
前記再割当てステップにおいて、前記その他の処理を過去にどの制御手段が実行したかを考慮して、再割当てを行なうことを特徴とする請求項１乃至４のいずれか１項に記載の情報処理方法。
【請求項６】
前記再割当てステップにおいて、再割当てが完了するまで、処理が終了していない制御手段は引き続き前回割り振られた処理を実行することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理方法。
【請求項７】
前記制御手段は、ＣＰＵ、スレッド、又はプロセスであることを特徴とする請求項１乃至６のいずれか１項に記載の情報処理方法。
【請求項８】
印刷用データを入力する入力手段と、
前記入力手段により入力された前記印刷用データを用いた印刷用データ処理及びその他の処理を並列に実行できる複数の制御手段と、
前記印刷用データ処理を複数の部分に分割して前記複数の制御手段に割当てる手段と、
前記複数の制御手段の何れかにおいて、前記印刷用データ処理の割当てられた部分の前記印刷用データ処理を終了した場合に、終了した部分以外の前記印刷用データ処理を、再度、前記複数の制御手段に割り当てる再割当て手段と、
前記再割当て手段による再割り当ての結果、最も優先順位が高い部分が割り当てられた制御手段以外の制御手段に、前記その他の処理を実行させる手段と、
前記複数の制御手段により前記印刷用データ処理が実行された前記印刷用データに基づいて、印刷を実行する印刷手段と、
を含むことを特徴とする印刷装置。
【請求項９】
前記再割当て手段は、前記終了した部分以外の前記印刷用データ処理の中で優先順位が低い部分を、前記印刷用データ処理の割り当てられた部分を終了した前記制御手段に対して割り当てることを特徴とする請求項８に記載の印刷装置。
【請求項１０】
前記再割当て手段は、終了した部分以外の前記印刷用データ処理における最も優先順位が高い部分を割り当てられた制御手段が、他の制御手段よりも早く処理を終了するように、再割当てを行なうことを特徴とする請求項８に記載の印刷装置。
【請求項１１】
前記印刷用データは、ページ単位の複数の印刷用データ部分を含み、
前記印刷手段は、前記複数の印刷用データ部分に前記印刷用データ処理が実行されることにより生成されたページ単位の画像データに基づいて印刷を実行し、
前記印刷手段により先に印刷されるページに対応する前記印刷用データ部分の前記印刷用データ処理の優先順位が高いことを特徴とする請求項８乃至１０のいずれか１項に記載の印刷装置。
【請求項１２】
前記再割当て手段は、前記その他の処理を過去にどの制御手段が実行したかを考慮して、再割当てを行なうことを特徴とする請求項８乃至１１のいずれか１項に記載の印刷装置。
【請求項１３】
前記再割当て手段は、再割当てが完了するまで、処理が終了していない制御手段は引き続き前回割り振られた処理を実行することを特徴とする請求項８乃至１２のいずれか１項に記載の印刷装置。
【請求項１４】
前記制御手段は、ＣＰＵ、スレッド、又はプロセスであることを特徴とする請求項８乃至１３のいずれか１項に記載の印刷装置。
【請求項１５】
請求項１乃至７の何れか１項に記載の情報処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列の制御手段を用いた並列処理に関するものである。
【背景技術】
【０００２】
従来から、複数のプロセッサを用いて処理を行うことにより、処理完了時間を短縮するシステムが多数存在している。複数の印刷装置で１つの印刷ジョブを印刷する分散印刷がその１例である。
【０００３】
例えば入力データを等分して分散処理する場合や、或いは入力データの論理的な区切りで入力データを分け、各装置に分散して処理する場合がある。上述の分散印刷では、印刷用紙単位で処理を分散し、それぞれの印刷装置で印刷用データ処理を行う技術が知られている（例えば特許文献１）。
【０００４】
一方、一つの印刷装置にプロセッサを複数搭載することで、高速に印刷用データ処理を行う技術も多数知られている（例えば特許文献２）。
【特許文献１】特開２００４−２８８０７１号公報
【特許文献２】特開２００７−１５２６２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術ではそれぞれの処理を高速に行うことを目的としているため、１つの印刷装置の中で複数の処理を同時に実行して、全体として高速化することを考慮したものはなかった。
【０００６】
従って、例えば、印刷用データ処理とネットワーク処理、ユーザインタフェースの処理等を、印刷装置に搭載されている複数の制御手段で並列して実行する場合、次のような課題が発生する。
【０００７】
まず、印刷用データ処理を行う制御手段と、その他の処理を行う制御手段とが固定されている場合、印刷装置におけるネットワークの処理やユーザインタフェースの処理は、頻繁に発生するものではないため、効率的に複数の制御手段を利用しているとはいえない。
【０００８】
一方、タイムシェアリング方式等で印刷用データ処理とネットワーク処理とユーザインタフェース処理を複数の制御手段で時分割して実行する場合、各処理の優先度を設定することが可能である。ここで、一つの印刷用データ処理に対して制御手段の数と等しい数のスレッドを生成し、生成した全てのスレッドがその他の処理よりも優先されるように設定すると、印刷用データ処理中はネットワーク処理などが行なわれず、著しくそれらの処理速度が低下する。逆に印刷用データ処理が他の処理よりも優先されないように設定すると、ネットワーク処理などが複数のスレッドで実行される場合には、何れの制御手段でも印刷用データ処理が実行されないような期間が発生し、印刷用データ処理が高速化されない可能性がある。
【０００９】
これに対し、印刷用データ処理のスレッドの一部を、他の処理よりも優先されるように設定し、残りのスレッドを、他の処理よりも優先されないように設定すれば、上述の問題は解決する。しかしながら、どの印刷用データ処理を優先的に設定し、どの印刷用データ処理を優先的に設定しないのか、といった割り振り方が重要になる。
【００１０】
最終的に用紙上に印刷を行う順番は通常ページ順になるため、印刷用データ処理は通常ページの先頭から処理を行うのが好ましい。しかし、先頭ページから順番に複数の制御手段に割り振ると、各ページでの印刷用データ処理時間が異なる場合には、印刷用データ処理が終了するページの順番がばらばらになる可能性が高い。
【００１１】
予め印刷用データ処理の処理時間を予測することにより印刷用データ処理を終了するページの順番が、実際に紙面に印刷を行う順番になるようにページの割り振りを行うことも考えられるが、処理時間を正確に予測するのは困難な場合が多い。ユーザインタフェースとネットワークの処理が関係する場合、処理時間を正確に予測するのは更に困難である。
【００１２】
実際に印刷するページ順に印刷用データ処理を行うため、一つの印刷用データ処理スレッドで連続したページを処理するように、予め各印刷用データ処理スレッドで処理するページ群を決定するのが望ましい。
【００１３】
しかしながら、それぞれのページの処理時間が一定ではない場合、搭載されている制御手段が効率的に利用されない場合がある。
【００１４】
例えば、第１制御手段と第２制御手段が搭載された印刷装置で、１からＪ（Ｊは１以上の整数）のページを第１制御手段で、Ｊ＋１から最後のページを第２制御手段で処理するようにスケジューリングする場合を考える。この場合、ネットワーク処理等よりも高い優先順位の第１印刷用データ処理スレッドで１からＪまでのページを処理し、ネットワーク処理等よりも低い優先順位の第２印刷用データ処理スレッドでＪ＋１から最後のページを処理すればよい。
【００１５】
しかしながら、１からＪまでのページの処理がＪ＋１から最後のページの処理よりも早く終わると、１からＪまでのページの処理が終了してから、実質上一つの制御手段でしか印刷用データ処理が行われないことになる。
【００１６】
本発明は問題点を解決するためになされたものであり、複数の印刷用データ処理を並列に実行する場合に、全体として効率的に処理することを目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明に係る方法は、
印刷用データを用いた印刷用データ処理及びその他の処理を並列に実行できる複数の制御手段を備えた印刷装置における情報処理方法であって、
前記印刷用データを入力する入力ステップと、
前記印刷用データ処理を複数の部分に分割して前記複数の制御手段に割当てるステップと、
前記複数の制御手段の何れかにおいて、前記印刷用データ処理の割当てられた部分の前記印刷用データ処理を終了した場合に、終了した部分以外の前記印刷用データ処理を、前記複数の制御手段に再度割り当てる再割当てステップと、
前記再割当てステップによる再割り当ての結果、最も優先順位が高い部分が割り当てられた制御手段以外の制御手段に、前記その他の処理を実行させる制御ステップと、
前記複数の制御手段により前記印刷用データ処理が実行された前記印刷用データに基づいて、印刷を実行する印刷ステップと、
を含むことを特徴とする。
【００１８】
上記目的を達成するため、本発明に係る装置は、
印刷用データを入力する入力手段と、
前記入力手段により入力された前記印刷用データを用いた印刷用データ処理及びその他の処理を並列に実行できる複数の制御手段と、
前記印刷用データ処理を複数の部分に分割して前記複数の制御手段に割当てる手段と、
前記複数の制御手段の何れかにおいて、前記印刷用データ処理の割当てられた部分の前記印刷用データ処理を終了した場合に、終了した部分以外の前記印刷用データ処理を、前記複数の制御手段に再度割り当てる再割当て手段と、
前記再割当て手段による再割り当ての結果、最も優先順位が高い部分が割り当てられた制御手段以外の制御手段に、前記その他の処理を実行させる手段と、
前記複数の制御手段により前記印刷用データ処理が実行された前記印刷用データに基づいて、印刷を実行する印刷手段と、
を含むことを特徴とする。
【００１９】
上記目的を達成するため、本発明に係るプログラムは、上記情報処理方法をコンピュータに実行させる。
【発明の効果】
【００２０】
本発明によれば、複数の印刷用データ処理を並列に実行する場合に、全体として効率的に処理することができる。
【発明を実施するための最良の形態】
【００２１】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。なお、ここで印刷用データ処理とは、印刷装置に画像データが伝送されてから実際に用紙紙面上に印刷を行う前までの処理を示す。印刷用データ処理の結果は印刷装置が備える記憶部に保持され、実際に用紙紙面上に印刷を行った後に記憶部から削除される。
【００２２】
＜システム構成＞
図１は、本発明の実施形態を示す画像処理システムとしての印刷システムの全体構成を説明するシステム構成図である。プリンタコントローラ１０００は、ネットワークＩ／Ｆ１００１と、制御手段としてのＣＰＵ１００２及びＣＰＵ１００３と、ＲＡＭ１００４とＨＤＤ１００５と操作部Ｉ／Ｆ１００６とデバイスＩ／Ｆ１００７とＲＩＰ１００８とを含む。そして、それらは内部バス１００９で接続されている。ＰＣ１１００はパーソナルコンピュータに代表されるホストコンピュータである。操作部１２００はユーザインタフェースであり、図示しない各種ボタンやタッチパネル等を備える。操作部１２００は操作部Ｉ／Ｆ１００６と接続される。プリンタ部１３００はプリンタコントローラで形成した画像データを紙面上に印刷を行う画像出力装置である。プリンタ部１３００はデバイスＩ／Ｆ１００７と接続される。スキャナ部１４００は、図示しない原稿台に置かれた原稿を光学的に走査して画像を読み取る画像入力装置である。スキャナ部１４００も、プリンタ部１３００と同様、デバイスＩ／Ｆ１００７と接続される。
【００２３】
ネットワークＩ／Ｆ１００１は、ＬＡＮ１１０１と接続される、ＰＣ１１００と各種通信を行うためのインタフェースである。ＣＰＵ１００２及びＣＰＵ１００３は、ＲＡＭ１００４に格納されている各種プログラムを実行する。ＲＡＭ１００４は、各種プログラム以外に、それぞれのＣＰＵが動作するために必要なワークメモリとして利用される。またＲＡＭ１００４には各種データを一時的に記憶することができる。ＨＤＤ１００５は、ＲＡＭにロードする前のプログラムや各種データを保存することができる。操作部Ｉ／Ｆ１００６は操作部１２００と接続されるインタフェースであり、ユーザが操作部１２００を操作すると、その情報がプリンタコントローラ１０００へと伝えられる。また、操作部１２００はプリンタコントローラ１０００が出力する各種ステイタスを表示する機能も有する。ＲＩＰ１００８は、特定フォーマットの文書データをビットマップデータに変換するためのハードウェアである。
【００２４】
続いて図１の印刷システムのプリント動作について図２のフローチャートを用いて説明する。まず印刷する文書データをＰＣ１１００から伝送する（Ｓ２００１）。この文書データは例えばＰＤＬ（Ｐａｇｅ  Ｄｉｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）であり、ＰＣ１１００に搭載されるプリンタドライバで生成される。ＰＣ１１００から伝送（入力）された文書データは、ネットワークＩ／Ｆを経由してＲＡＭ１００４に格納される。
【００２５】
ＲＡＭ１００４に格納された文書データは、ＲＡＭ１００４にロードされている文書データ解析プログラムによって、ページ単位で並列処理可能な第１中間データに変換される（Ｓ２００２）。文書データ解析プログラムは、ＣＰＵ１００２、１００３の何れか、若しくは時分割で両方のＣＰＵ１００２、１００３で動作する。上述のように生成されたデータはＨＤＤ１００５若しくはＲＡＭ１００４に格納される。
【００２６】
続いてＲＡＭ１００４若しくはＨＤＤ１００５に格納された第１中間データを、ＲＡＭ１００４にロードされている中間データ解析プログラムによって、ＲＩＰ１００８が解釈可能な第２中間データに変換する（Ｓ２００３）。中間データ解析プログラムは、ＣＰＵ１００２とＣＰＵ１００３それぞれで実行されるように、２つのスレッドを作成する。それぞれの中間データ解析スレッドには、処理するページ範囲がそれぞれ重複しないように指示する。それぞれの中間データ解析スレッドで生成された第２中間データは、ＲＡＭ１００４若しくはＨＤＤ１００５に格納される。第２中間データの生成後、該当する第１中間データを削除してもよい。
【００２７】
続いてＲＡＭ１００４若しくはＨＤＤ１００５に格納された第２中間データを、ＲＩＰ１００８を用いてビットマップに変換する（Ｓ２００４）。ビットマップに変換されたページに対応する第１中間データ及び第２中間データはビットマップ形成後に削除してもよい。Ｓ２００４で生成されたビットマップは、デバイスＩ／Ｆ１００７を経由してプリンタ部１３００に伝送され、そこで紙等の媒体上に印刷される（Ｓ２００５）。
【００２８】
なお、Ｓ２００１で受信した印刷データは、全ページの第２中間データを生成した後に削除してもよいし、該当する第２中間データの生成後に、ページ単位で印刷データを削除してもよい。
【００２９】
また、Ｓ２００３の処理は、全ページ分の第１中間データを生成した後に実行しても構わない。或いは、一ページ分の第１中間データが生成された時点で、上述のように決定したそれぞれのスレッドで処理するページ範囲にしたがって中間データ解析プログラムに解析処理を依頼してもよい。また、この場合、中間データ解析プログラムはＦＩＦＯキューを備えるのが望ましい。
【００３０】
続いて、第１中間データについて図３を用いて説明する。文書データ（ＰＤＬ）には様々なフォーマットがあり、ページ単位で並列処理することができないフォーマットも存在する。例えば、これから描画するラインの線幅を指定する等の印刷設定コマンドと、ラインを描画する等の描画コマンドから構成される文書データがある。ページ毎に印刷設定コマンドを設定する必要のない文書データでは、前ページの印刷設定を次のページでも引き継ぐことが一般的である。この場合、ページ１の描画コマンドが終了するまでに指定された印刷設定は、上書きされない限り、ページ２でも有効にしなければならない。
【００３１】
図３の３０００は、ページ単位で並列処理することができないフォーマットの印刷データを表す。３００１はページ１の終了までに設定される印刷設定コマンドであり、３００２はページ１の描画コマンドである。ページ２では印刷設定はないので、３００１の印刷設定にしたがってページ２の描画処理を実行する。ページ３には３００４に示す印刷設定があるので、この印刷設定にしたがってページ３の描画コマンド３００５の処理を行う。
【００３２】
このような仕様の文書データで、ページ単位で並列処理を行えるようにするためには、前ページの終了までに行なわれた印刷設定コマンドを、次のページの開始部にコピーすればよい。即ち図３の３１００に示すように、ページ毎に前ページの印刷設定をコピーする。３１０１はページ１の第１中間データであり、印刷設定３００１と描画コマンド３００２で構成される。３１０２はページ２の第１中間データであり、印刷設定３００１と描画コマンド３００３で構成される。３１０３はページ３の第１中間データであり、印刷設定３００４と描画コマンド３００５で構成される。このような変換処理を行うことで、並列処理可能な第１中間データに変換することが可能になる。つまり、印刷用データとしての第１中間データ３１００は、複数の印刷用データ部分（ページ１の第１中間データ、ページ２の第１中間データ、ページ３の第１中間データ）を含むものである。なお、３０００と３１００の印刷設定と描画コマンドはそれぞれ同じフォーマットである必要はない。３１００の印刷設定や描画コマンドは、印刷装置独自の印刷設定コマンドと描画コマンドとしても構わない。
【００３３】
続いて図１のプリンタコントローラ１０００で実行されるソフトウェアの構成について図４を用いて説明する。
【００３４】
オペレーティングシステム４０００は、各種ソフトウェアに各種ＡＰＩ（アプリケーションインタフェース）を公開し、また各ソフトウェアの実行を制御するソフトウェアである。本実施の形態のおいて、オペレーティングシステム４０００上で動作するソフトウェアは、ネットワーク制御部４１００、ユーザＩ／Ｆ制御部４２００、コピー動作制御部４３００、印刷動作制御部４４００及びその他のソフトウェアである。それぞれのソフトウェアは少なくとも一つ以上のスレッドを保有する。オペレーティングシステム４０００は、これらのソフトウェアのスレッドに対してＣＰＵ１００２若しくはＣＰＵ１００３を適切なタイミングで割り当てて、各スレッドを実行する。オペレーティングシステム４０００の各アプリケーションスレッドへのＣＰＵの割り当ては、各スレッドに対してＡＰＩを用いて設定されるスレッドの優先順位等に従う。優先順位は起動時だけではなく、ソフトウェアの動作中にも動的に設定することが可能である。
【００３５】
ネットワーク制御部４１００は、図１のネットワークＩ／Ｆ１００１を介して伝送された各種プロトコル解析を行うソフトウェアである。プリンタコントローラ１０００は、文書データの伝送に利用するＬＰＲやＲＡＷといったプロトコルだけではなく、プリンタコントローラ１０００やプリンタ部１３００のステイタスを表示するＨＴＴＰや、通信機器を監視するためのＳＮＭＰ等もサポートする。ネットワーク制御部で解析された受診データは、適切なソフトウェアに引渡される。例えばＬＰＲやＲＡＷで伝送されたデータは印刷動作制御部４４００に引渡され、ＨＴＴＰデータは、図示しないＷＷＷサーバソフトウェアに引渡されて各種処理を行う。
【００３６】
ユーザＩ／Ｆ制御部４２００は、図１の操作部１２００から入力されたユーザの操作情報にしたがって処理を行い、また、操作部１２００に備え付けられた表示装置にプリンタコントローラ１０００やプリンタ部１３００のステイタスを表示する。
【００３７】
また図１のプリンタコントローラ１０００でコピー機能を利用する際には、利用者は操作部１２００を操作する。例えば操作部に備え付けられたコピー開始ボタンを押下する。このとき、ユーザＩ／Ｆ制御部４２００は、コピー動作制御部４３００に処理の開始を指示する。するとコピー動作制御部４３００は、図１のスキャナ部を操作して原稿を読み取り、読み取られた画像をプリンタ部１３００によって印刷する動作を制御する。
【００３８】
続いて、印刷動作制御部４４００について詳細に説明する。印刷動作制御部４４００は図２のフローチャートを用いて説明したプリント動作を実行するソフトウェアである。印刷制御部４４００は、複数のソフトウェアモジュール４４０１及至４４０６で構成される。なお、文書データは上述したネットワーク制御部４１００から伝送されるが、その際に文書データをＲＡＭ１００４やＨＤＤ１００５にバッファリングしても構わない。
【００３９】
第１中間データ生成部４４０１は、図２のフローチャートのＳ２００２における文書データを第１中間データに変換するソフトウェアモジュールである。
【００４０】
並列処理スケジューラ４４０２は、第１中間データ生成部４４０１が生成する第１中間データを、第２中間データ生成部４４０３ａ及び第２中間データ生成部４４０３ｂに割り振る役割を担う。それぞれの第２中間データ生成部はひとつのスレッドを保有する。また、並列処理スケジューラ４４０２は、各第２中間データ生成部４４０３ａ、ｂに割り振った処理が終了すると、処理が終了していないページの第２中間データ生成処理の再割り振りを行う。また、並列処理スケジューラ４４０２は、各第２中間データ生成部４４０３ａ、ｂが保有するスレッドの優先順位の再設定を行う。
【００４１】
第２中間データ生成部４４０３ａ及び第２中間データ生成部４４０３ｂは、図２のフローチャートのＳ２００３における、第１中間データを第２中間データに変換するソフトウェアモジュールである。各第２中間データ生成部は予め指定されたページ範囲の第１中間データを、ページ単位に逐次的に第２中間データに変換する。或いは、各第２中間データ生成部４４０３ａ、ｂに設けられたＦＩＦＯキューに蓄えられる、ページ単位の第１中間データ変換命令を逐次的に第２中間データに変換する。
【００４２】
図５に示すように、第２中間データ生成部４４０３ａ、ｂは、ＦＩＦＯキュー５００１に格納された第１中間データを逐次的に処理して第２中間データに変換して出力する。或いは、並列処理スケジューラ４４０２がＦＩＦＯキュー５００２に第１中間データを格納する。
【００４３】
ＲＩＰスケジューラ４４０４は、第２中間データ生成部４４０３ａ、ｂで生成された第２中間データを、図１のプリンタ部１３００で出力する順番で、レンダリング制御部４４０４に送信する。
【００４４】
レンダリング処理部４４０５は、図２のフローチャートのステップＳ２００４における第２中間データからビットマップを生成する処理を担うソフトウェアモジュールである。実際には、レンダリング処理部４４０５は、図１のＲＩＰ１００８を制御することによりレンダリング処理を実行する。
【００４５】
印刷処理部４４０６は、図２のフローチャートのＳ２００５における、レンダリング処理部４４０５で生成されたビットマップを、図１のプリンタ部１３００で紙面上に印刷する処理を行うソフトウェアモジュールである。
【００４６】
＜並列処理スケジューリング＞
並列処理スケジューラ４４０２の動作の流れについて、図６のフローチャートを用いて説明する。まず、Ｓ６００１で、各第２中間データ生成部の優先度を設定する。続いてＳ６００２で、各第２中間データ生成部に割り振るページの境界ページ数Ｎを決定する。
【００４７】
続いてＳ６００３で、第２中間データ生成処理を行う。続いてＳ６００４で何れかの第２中間データ生成部の処理の終了を待つ。続いてＳ６００５で、全ページの第２中間データ生成が終了しているかを判断する。全ページの第２中間データの生成が終了していない場合には、第２中間データが生成されていないページを各第２中間データ生成部に割り振るページ境界Ｊを決定する（Ｓ６００６）。更に各第２中間データ生成部は、スレッドの優先順位を変更して第２中間データ生成処理を続行する。
【００４８】
最終的に全てのページについての第２中間データが生成されるまでステップＳ６００３からＳ６００７の処理を繰り返す。
【００４９】
生成された第２中間データは、図１のＲＡＭ１００４に格納されるが、各第２中間データ生成部は、ある程度連続したページを処理することになるため、効率よくメモリを利用することが可能である。即ち、各第２中間データ生成部は、処理が割り振られるタイミングで、ＲＡＭ１００４の連続領域から割り振られたページ全ての中間データを格納する領域を予約する。各第２中間データ生成部は逐次的に第２中間データを生成するので、前ページの第２中間データの終端直後に次ページの第２中間データを配置することが可能になる。
【００５０】
次に、図６のステップＳ６００１とＳ６００２の処理の内部について説明する。これらの処理は、各第２中間データ生成部の優先順位を設定し、並列処理スケジューラ４４０２が、第１中間データを割り振る処理である。なお、ここでは説明を簡単にする為に、全ページの第１中間データを作成してから第２中間データを作成する場合について説明する。
【００５１】
図７は、一つの第２中間データ生成部で第２中間データを生成する従来技術について説明する図である。生成された第２中間データ７０００と、レンダリング済データ７１００と、印刷処理済データ７２００のタイムチャートである。レンダリング処理は、実質上、図１のＲＩＰ１００８によって行なわれるので、第２中間データの生成とレンダリング処理は並列して実行される。レンダリング処理を行うページに対応する第２中間データが生成されなければレンダリング処理は行えない。印刷処理は、図１のプリンタ部１３００を操作して紙面上に印刷する処理であり、物理的な用紙の搬送時間等の時間がかかる。特にプリンタ部１３００が停止している状態から最初の用紙が出力されるまでの時間はＦＣＯＴと呼ばれ、プリンタ部の性能を示す一つの指標となっている。
【００５２】
なお、プリンタ部に転送するビットマップを生成してからプリンタ部の停止状態を解除することが一般的であるが、ＲＩＰに渡す第２中間データが生成されてから解除する場合や、第２中間データが生成されていない段階で解除するような場合もある。本実施の形態では、印刷するビットマップが生成されてからプリンタ部の待ちを解除するものとする。本実施の形態におけるＦＣＯＴは、図７に示しているように一ページ目のビットマップデータが生成されてから、１ページ目の用紙が出力されるまでの時間となる。
【００５３】
図７によると、印刷処理７２００は４ページまで遅延無く行っているが、５ページ目以降は遅延７２０２が発生しているため、効率的に処理が行えていない。これを、図８に示すように２つの第２中間データ生成部、即ち２つのスレッドで第２中間データの生成を行うと、効率的に印刷用データ処理を行うことが可能となる。
【００５４】
例えば、図８のように１ページから４ページまでの第２中間データの生成処理を一つの第２中間データ生成部４４０３ａで行い、５ページ以降の処理を他方の第２中間データ生成部４４０３ｂで行う。なお、１ページから４ページまでの第２中間データ８０００は、ネットワーク制御部４１００やユーザＩ／Ｆ制御部４２００のスレッドより優先して実行されるように設定する。また、５ページ以降の第２中間データ８１００は、第２中間データ生成部４４０３ｂによりネットワーク制御部４１００やユーザＩ／Ｆ制御部４２００のスレッドより優先して実行されないように制御する。
【００５５】
処理を分断する境目（本実施形態では５ページ）は、一般的に表すと、以下の数式を満たす最大のＮとなる。
【数１】
2010149422.tif 000003
【００５６】
ここでｆ（ｉ）はページｉの第２中間データの生成予測時間である。ＦＣＯＴは上述したプリンタ部が停止している状態から最初の用紙が出力されるまでの時間である。ｔはプリンタ部で連続して印刷処理を行える場合の、連続するページの出力完了の間隔である。ｒ（ｉ）はページｉのビットマップ生成に必要な時間である。
【００５７】
いずれかの第２中間データ生成部に割り当てられた処理が終了すると、並列処理スケジューラ４４０２は第２中間データの生成が終了していないページの再割り振りを行う。
【００５８】
＜再割当て処理と優先順位の変更＞
次に図９、図１０を用いて、再割当て処理と優先順位の変更処理について具体的に説明する。
処理を終了した第２中間データ生成部で最後に処理していたページをＭ、同時点でもう一方の第２中間データ生成部の処理対象となっているページをＰ、同時点でレンダリングしているページをＱ、同時点で印刷処理を行っているページをＲとする。
【００５９】
（ＭがＰよりも小さい場合）
図９（ａ）に示す例では、Ｍページ（図では４ページ）が終了した時点で、ページＰ＋１（図では９ページ）から最終ページ（図では２０ページ）までの第２中間データ生成処理が終了していない。この場合、図９（ｂ）に示すように、並列処理スケジューラ４４０２は、ページＰ＋１からページＪ（ここでは１３ページ）までを、ページＰを処理していた第２中間データ生成部（図中下側）で行う。そして、ページＪ＋１（図では１４ページ）から最終ページまでを、処理が終了した第２中間データ生成部（図中上側）で処理するようにスケジューリングを行う（図９（ｂ））。即ち、前回割り当てられた処理が終了していない第２中間データ生成部（図中下側）において、優先的な印刷用データ処理を行なう。つまり、終了した部分以外の印刷用データ処理を、複数の制御手段に割り当てる。
【００６０】
また並列処理スケジューラ４４０２は、ページＰ＋１が割り振られた第２中間データ生成部（図中下側）を、上述のネットワーク制御部４１００やユーザＩ／Ｆ制御部４２００のスレッドより優先して実行されるように設定する。また、Ｊ＋１ページ（１４ページ）が割り振られた第２中間データ生成部（図中上側）を、上述のネットワーク制御部４１００やユーザＩ／Ｆ制御部４２００のスレッドより優先して実行されないように設定する。実質上、各第２中間データ生成部の優先順位は互いに入れ替えられることになる。
【００６１】
Ｊは以下の数式を満たすもっとも大きい整数に設定する。なお、以下の数式では、レンダリングにかかる時間は第２中間データ生成時間よりも小さいとして無視している。
【数２】
2010149422.tif 000004
【００６２】
次にＪページ（図では１３ページ）までの第２中間データ生成処理が終了した時点で、他方の第２中間データ生成処理が終了していなければ、その時点で、図６のステップＳ６００６に進み、再割当て処理及び優先順位の変更を行なう。図９の例では、１番目に上式でＪとして求められたＪ１ページ（図では１３ページ）が終了した時点で、上側の第２中間データ生成部での第２中間データ生成処理が終了しておらず、１９ページの途中までしか終了していない。従って、再度Ｊの値を求め、２度目のＪの値Ｊ２＝１９だとすると、２０ページについては再割当ての対象となり、下側の第２中間データ生成部で２０ページの第２中間データを生成する。この際、優先順位が変更になり、下側の第２中間データ生成部の優先順位が下がり、ネットワーク制御部４１００やユーザＩ／Ｆ制御部４２００の割り込み処理を下側の第２中間データ生成部で実行するように設定が変わる。
【００６３】
（ＭがＰよりも大きい場合）
処理を終了した第２中間データ生成部で最後に処理していたページＭが、同時点でもう一方の第２中間データ生成部の処理対象となっているページＰよりも大きい場合について説明する、
図１０に示す例では、１度目の再割当て処理では、図９と同様の処理を行ない、図１０（ａ）から図１０（ｂ）に進む。その後、最終ページＭ（ここでは２０ページ）が終了した時点で、他方の第２中間データ生成部でページＰ（ここでは１２ページ）が処理中である場合、Ｍ＞Ｐとなる。この場合、再度、Ｊの値を求め、Ｊ２＝１４だとすると、図１０（ｃ）に示すようにページＰ＋１（ここでは１３ページ）からページＪ２（ここでは１４ページ）までを、ページＰを処理していた図中下側の第２中間データ生成部で行う。ページＪ２＋１（ここでは１５ページ）から、Ｊ１ページまでを、図１０（ｂ）で処理が終了した図中上側の第２中間データ生成部で処理するようにスケジューリングを行う。この再割当てでは、少ない数字のページを処理する下側の第２中間データ生成部が、優先的に処理すべき第２中間データ生成部であるので、上側の第２中間データ生成部が、引き続き割り込み対象となる。つまり、実質上、各第２中間データ生成部の優先順位は変更されない。つまり、再割当て手段は、その他の処理を過去にどの制御手段が実行したかを考慮して、最も優先順位が高い部分が割り当てられた制御手段以外の制御手段に、その他の処理を実行させる。
【００６４】
＜メモリの使用状況＞
ページ１からページＬまでの処理を一つのスレッドで行い、Ｌ＋１からＭまでを別のスレッドで処理したときの第２中間データのメモリ出力状況を図１１に示す。この図に示されるように、処理を割り振ったページの境目以外では、メモリを連続的に使用することが可能になる。
【００６５】
＜本実施形態の効果＞
以上で説明した方法によれば、ｆ（ｉ）の予測に誤差がある場合や、第２中間データ生成に直接関係が無いような処理が割り込んだ場合においても、第２中間データの生成処理の順番を、ある程度印刷する順番通りに行うことができる。これにより、高速に第２中間データ生成を行うことができ、ある程度同じスレッドで連続するページを処理することになるので、メモリ使用効率を向上させることができる。
【００６６】
また、並列処理スケジューラ４４０２は、オペレーティングシステム４０００が公開するＡＰＩを利用して取得できる、本システム上で動作するスレッドのＣＰＵ占有率にしたがって、上述したＮやＬの値を決定してもよい。
【００６７】
つまり、本実施の形態を適用する別のシステムでは、第２中間データ生成よりも優先順位が高い処理が実行されてもよい。この場合、ネットワークやＵＩ処理によって第２中間データ生成処理は阻害されないが、その他の処理で上述のｆ（ｉ）の予測値に誤差が生じる恐れがある。そのため第２中間データ生成処理スレッドの占有率を計測して、ｆ（ｉ）にその値を乗ずることでＮやＬの値を算出すれば、より効率的に処理を行うことができる。
【００６８】
また、並列処理スケジューラ４４０２が、上述したＮやＬの値を算出している間、動作中の第２中間データ生成部は、既に割り振られている処理を実行するようにしてもよい。即ち、並列処理スケジューラ４４０２がＮやＬの値を算出するのに時間がかかる場合においても、第２中間データ生成部は前回割り当てられた処理を続行することができるので、更に効率的に処理が行うことができる。この場合、ＮやＬの値を算出している間に生成された第２中間データ以外のページを、第２中間データ生成部で処理するように制御すればよい。
【００６９】
（他の実施形態）
以上の実施形態について、２つの制御手段（ここではＣＰＵ）を用いた情報処理方法について説明したが、本発明はこれに限定されるものではなく、３つ以上のＣＰＵを用いた情報処理方法にも適用できる。また、さらには、ＣＰＵやメモリを複数のスレッドで共有する並列処理や、ＣＰＵやメモリを複数のプロセスで共有する並列処理においても、適用できる。
【００７０】
なお、本発明は、前述した実施形態の機能を実現するプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置が、供給されたプログラムコードを読み出して実行することによっても達成される。したがって、本発明の機能処理をコンピュータで実現するために、コンピュータにインストールされるプログラムコード自体も本発明の技術的範囲に含まれる。
【００７１】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００７２】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスクがある。また、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【００７３】
その他、クライアントＰＣのブラウザを用いてインターネットサイトに接続し、本発明に係るプログラムそのもの、若しくは更に自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードするという利用方法もある。また、本発明に係るプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明の範疇に含まれる。  また、本発明に係るプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布してもよい。所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００７４】
また、プログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００７５】
さらに、ＰＣの機能拡張ユニットに備わるメモリに本発明に係るプログラムが書き込まれ、そのプログラムに基づき、その機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行なう場合も、本発明の範疇に含まれる。
【図面の簡単な説明】
【００７６】
【図１】本発明の実施の形態に係るシステム全体図を説明するための図である。
【図２】本発明の実施の形態に係る印刷用データ処理を説明するためのフローチャートである。
【図３】本発明の実施の形態に係る印刷データと第１中間データを説明するための図である。
【図４】本発明の実施の形態に係るソフトウェア構成を説明するための図である。
【図５】本発明の実施の形態に係る第２中間データ生成部を説明するための図である。
【図６】本発明の実施の形態に係る並列処理スケジューラの動作を説明するためのフローチャートである。
【図７】本発明の実施の形態に係る並列処理スケジューラの動作を説明するための図である。
【図８】本発明の実施の形態に係る並列処理スケジューラの動作を説明するための図である。
【図９】本発明の実施の形態に係る並列処理スケジューラの動作を説明するための図である。
【図１０】本発明の実施の形態に係る並列処理スケジューラの動作を説明するための図である。
【図１１】本発明の実施の形態に係るメモリ管理を説明するための図である。
【図１】
2010149422.tif 000005
【図２】
2010149422.tif 000006
【図３】
2010149422.tif 000007
【図４】
2010149422.tif 000008
【図５】
2010149422.tif 000009
【図６】
2010149422.tif 000010
【図７】
2010149422.tif 000011
【図８】
2010149422.tif 000012
【図９】
2010149422.tif 000013
【図１０】
2010149422.tif 000014
【図１１】
2010149422.tif 000015