(57)【要約】【課題】パイプライン構造かつ並列処理を行う印刷システムにおいて、処理負荷の異なるデータが混在すると、印刷機への安定したデータ供給ができなかった。【解決手段】複数のコアを有する１または複数のＣＰＵを備えた情報処理装置であって、処理単位に分割されたＰＤＬデータを蓄積する第一の保持手段と、前記第一の保持手段に蓄積された処理単位のデータに対する処理を実行し中間データを生成する第一の処理手段と、前記第一の処理手段にて生成された中間データを蓄積する第二の保持手段と、前記第二の保持手段にて蓄積された処理単位の中間データに対する処理を実行し印刷データを生成する第二の処理手段と、前記第二の処理手段にて生成された印刷データを蓄積する第三の保持手段と、前記第一および第二の処理手段それぞれに前記複数のコアを割り当てる制御手段と、前記第三の保持手段にて蓄積された印刷データを前記印刷装置へ送信する送信手段とを有し、前記第一および第二の処理手段は、前記制御手段にて割り当てられたコアを用いて並列処理を実行する。【選択図】  図２
2015114776.tif 000002
【特許請求の範囲】
【請求項１】
印刷ジョブに対応するＰＤＬデータから印刷装置が処理するための印刷データを生成する情報処理装置であって、
処理を実行するための複数のコアを有する１または複数のＣＰＵを備え、
前記ＰＤＬデータを処理単位のデータに分割する分割手段と、
前記分割手段にて分割されたデータを蓄積する第一の保持手段と、
前記第一の保持手段に蓄積された処理単位のデータに対する処理を実行し、中間データを生成する１または複数の第一の処理手段と、
前記１または複数の第一の処理手段にて生成された中間データを蓄積する第二の保持手段と、
前記第二の保持手段にて蓄積された処理単位の中間データに対する処理を実行し、印刷データを生成する１または複数の第二の処理手段と、
前記１または複数の第二の処理手段にて生成された印刷データを蓄積する第三の保持手段と、
前記１または複数の第一の処理手段および前記１または複数の第二の処理手段それぞれに、前記複数のコアを割り当てる制御手段と、
前記第三の保持手段にて蓄積された印刷データを前記印刷装置へ送信する送信手段と
を有し、
前記１または複数の第一の処理手段および前記１または複数の第二の処理手段は、前記制御手段にて割り当てられたコアを用いて並列処理を実行することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記第一の保持手段、前記第二の保持手段、前記第三の保持手段、前記送信手段の負荷の状況に応じて、前記複数のコアのうち、前記１または複数の第一の処理手段および前記１または複数の第二の処理手段それぞれに割り当てるコアを増減させることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ＰＤＬデータの処理に要する処理時間を予測する予測手段を更に有し、
前記制御手段は、前記予測手段にて予測された予測処理時間に基づき、前記複数のコアを割り当てることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記予測手段にて予測された予測処理時間が所定の値を超えるデータの処理の期間およびその前後の一定の期間において、処理を行うコアを追加して割り当てることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記制御手段は、前記予測手段により予測された予測処理時間と前記印刷装置における印刷速度との関係に基づいて、前記複数のコアを割り当てることを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記予測手段は、分割された処理単位のデータごとに処理時間を予測することを特徴とする請求項３乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記予測手段は、予測を行うＰＤＬデータの範囲の指定を受け付けることを特徴とする請求項３乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
前記１または複数の第一の処理手段および前記１または複数の第二の処理手段における処理状況を表示する表示手段を更に有することを特徴とする請求項３乃至７のいずれか一項に記載の情報処理装置。
【請求項９】
前記表示手段は、印刷ジョブのＰＤＬデータに対する処理状況として、前記予測手段にて予測された予測処理時間と、前記１または複数の第一の処理手段および前記１または複数の第二の処理手段による実績処理時間と、前記印刷装置による印刷タイミングと、現在時刻との関係を、時間の経過とともに更新しながら表示することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記表示手段は、前記印刷装置による印刷タイミングを示す指標と現在時刻を示す指標の画面上の位置を固定した状態で、印刷ジョブの処理状況を随時更新して表示することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記表示手段は、ＰＤＬデータの処理が開始される前の印刷ジョブに対し、処理の順序の入れ換えまたは取り消しを受け付けることを特徴とする請求項８乃至１０のいずれか一項に記載の情報処理装置。
【請求項１２】
前記分割手段は、１または複数のページ、もしくはベクタ画像を処理単位として、前記ＰＤＬデータを分割することを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
前記１または複数の第一の処理手段は、前記第一の保持手段に蓄積された処理単位のデータを更に小さな処理単位に分割して処理し、
前記１または複数の第二の処理手段は、前記第二の保持手段に蓄積された処理単位の中間データを更に小さな処理単位に分割して処理する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１４】
前記１または複数の第一の処理手段および前記１または複数の第二の処理手段は、更に小さな処理単位にデータを分割する場合、ページ、ベクタ画像、バンド、もしくはタイルのいずれかの処理単位に分割することを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
前記複数のコアのうち、前記制御手段が割り当て可能なコアの上限数の設定を受け付ける設定手段を更に有し、
前記制御手段は、前記設定手段にて設定された上限数の範囲にて、前記複数のコアを動的に割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項１６】
前記複数のコアは、前記１または複数の第一の処理手段および前記１または複数の第二の処理手段それぞれに対し、固定して割り当てられるコアと、動的に割り当てられるコアとを含むことを特徴とする請求項１に記載の情報処理装置。
【請求項１７】
前記制御手段は、前記１または複数の第一の処理手段および前記１または複数の第二の処理手段に対し、処理単位のデータごとにコアを割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項１８】
前記送信手段は、前記印刷装置の印刷速度に応じて印刷データを送信することを特徴とする請求項１に記載の情報処理装置。
【請求項１９】
請求項１乃至１８のいずれか一項に記載の情報処理装置と、前記情報処理装置が生成した印刷データを用いて印刷処理を行う印刷装置とを含む印刷システム。
【請求項２０】
処理を実行するための複数のコアを有する１または複数のＣＰＵを備える情報処理装置における情報処理方法であって、
印刷ジョブに対応するＰＤＬデータを処理単位のデータに分割する分割工程と、
前記分割工程にて分割されたデータを蓄積する第一の保持部に保持する工程と、
前記第一の保持部に蓄積された処理単位のデータに対する処理を実行し、中間データを生成する１または複数の第一の処理工程と、
前記１または複数の第一の処理工程にて生成された中間データを蓄積する第二の保持部に保持する工程と、
前記第二の保持部にて蓄積された処理単位の中間データに対する処理を実行し、印刷データを生成する１または複数の第二の処理工程と、
前記１または複数の第二の処理工程にて生成された印刷データを蓄積する第三の保持部に保持する工程と、
前記１または複数の第一の処理工程および前記１または複数の第二の処理工程それぞれに、前記複数のコアを割り当てる制御工程と、
前記第三の保持部にて蓄積された印刷データを印刷装置へ送信する送信工程と
を有し、
前記１または複数の第一の処理工程および前記１または複数の第二の処理工程において、前記制御工程にて割り当てられたコアを用いて並列処理を実行することを特徴とする情報処理方法。
【請求項２１】
複数のコアを有する１または複数のＣＰＵを備えるコンピュータを、
印刷ジョブに対応するＰＤＬデータを処理単位のデータに分割する分割手段、
前記分割手段にて分割されたデータを蓄積する第一の保持手段、
前記第一の保持手段に蓄積された処理単位のデータに対する処理を実行し、中間データを生成する１または複数の第一の処理手段、
前記１または複数の第一の処理手段にて生成された中間データを蓄積する第二の保持手段、
前記第二の保持手段にて蓄積された処理単位の中間データに対する処理を実行し、印刷データを生成する１または複数の第二の処理手段、
前記１または複数の第二の処理手段にて生成された印刷データを蓄積する第三の保持手段、
前記１または複数の第一の処理部および前記１または複数の第二の処理部それぞれに、前記複数のコアを割り当てる制御手段、
前記第三の保持手段にて蓄積された印刷データを印刷装置へ送信する送信手段
として機能させ、
前記１または複数の第一の処理手段および前記１または複数の第二の処理手段は、前記制御手段にて割り当てられたコアを用いて並列処理を実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、印刷システム、およびプログラムに関する。
【背景技術】
【０００２】
従来、一方の処理部による処理済みデータに対して他方の処理部が処理を実行する、いわゆるパイプライン構造の印刷システムが存在する。
【０００３】
一方、印刷機の内部では印刷動作の際に一定速度で高速に紙送りがされているため、それに伴って印刷データを遅延なく供給する必要がある。しかしながら、印刷機の印刷速度が一定なのに対し、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）データから印刷データへの変換処理の速度は、ＰＤＬデータの内容によって変動する。つまり、ＰＤＬデータは、複数の描画命令や画像の組み合わせで構成されており、それらの数や複雑さによって変換処理に必要な時間が異なる。印刷機が印刷可能となった時点で変換処理が完了せず印刷データの供給ができなかった場合、例えば損紙（印刷されず廃棄される用紙）が多く発生する等、生産性が低下する。これを防ぐためには、印刷機の印刷速度以上のデータ変換の処理速度が要求される。
【０００４】
特許文献１は、印刷システムにおいて、複数のプロセッサコアを用いて中間データ生成部および描画部の処理を行う。そして、中間データ生成部が、ＰＤＬデータから中間データを生成し、生成された中間データを描画部が描画して出力する。この印刷システムでは、生成された中間データを一時的に保持（スプール）し、スプールされた中間データの量が十分にある場合に描画部による描画処理を行う。そして、描画処理後の画像データが印刷機によって印刷される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１６７８５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前述の印刷システムは、高速かつ高解像度の印刷機向けに、ＰＤＬデータを定められた粒度（ページ単位、バンド単位等）に分解し複数の計算機を用いて並列処理している。しかし、処理負荷の高いデータは処理時間が長くなる傾向があり、これを短時間で処理し印刷機への安定したデータ供給を行うためには、並列処理で使用するハードウェアリソース（プロセッサコア、メモリ、ネットワーク帯域）が大量に必要であった。
【０００７】
更に、システムの処理状況を表示するユーザインタフェースに関して、複数ジョブの処理状況をリスト形式にて表示されるものが多く一覧性は高いが、複数の印刷ジョブの時間経過を直感的に把握することは困難であった。
【課題を解決するための手段】
【０００８】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、印刷ジョブに対応するＰＤＬデータから印刷装置が処理するための印刷データを生成する情報処理装置であって、処理を実行するための複数のコアを有する１または複数のＣＰＵを備え、前記ＰＤＬデータを処理単位のデータに分割する分割手段と、前記分割手段にて分割されたデータを蓄積する第一の保持手段と、前記第一の保持手段に蓄積された処理単位のデータに対する処理を実行し、中間データを生成する１または複数の第一の処理手段と、前記１または複数の第一の処理手段にて生成された中間データを蓄積する第二の保持手段と、前記第二の保持手段にて蓄積された処理単位の中間データに対する処理を実行し、印刷データを生成する１または複数の第二の処理手段と、前記１または複数の第二の処理手段にて生成された印刷データを蓄積する第三の保持手段と、前記１または複数の第一の処理手段および前記１または複数の第二の処理手段それぞれに、前記複数のコアを割り当てる制御手段と、前記第三の保持手段にて蓄積された印刷データを前記印刷装置へ送信する送信手段とを有し、前記１または複数の第一の処理手段および前記１または複数の第二の処理手段は、前記制御手段にて割り当てられたコアを用いて並列処理を実行する。
【発明の効果】
【０００９】
本発明によれば、ページ毎の処理時間のばらつきを抑制し、過剰なデータ蓄積によるハードウェアリソースの消費と、データ枯渇による印刷動作の停止を防ぐことができる。
【図面の簡単な説明】
【００１０】
【図１】第一の実施形態に係る印刷システムのハードウェアの構成の例を示す図。
【図２】第一の実施形態に係る印刷システムの処理の概念図。
【図３】並列処理を行う２つの手法を説明するための概念図。
【図４】ページ毎に１コアずつ割り当てて並列処理を行う場合の処理完了の時間と印刷可能ページ数の変化の関係を表す概念図。
【図５】ページ毎に複数コアを割り当てて並列処理を行う場合の処理完了の時間と印刷可能ページ数の変化の関係を表す概念図。
【図６】ページ毎に複数コアを割り当てて並列処理を行うフローチャート。
【図７】平均処理時間を超えるページに対して追加コアを割り当てて並列処理を行う場合の処理完了の時間と印刷可能ページ数の変化の関係を表す概念図。
【図８】平均処理時間を超えるページに対して追加コアを割り当てて並列処理を行うフローチャート。
【図９】パラメータを設定するためのユーザインタフェースの構成例を示す図。
【図１０】処理状況を表示するユーザインタフェースの構成例を示す図。
【図１１】処理状況を表示するユーザインタフェースの時間経過に伴う表示内容の変化を表す概念図。
【図１２】一定時間後の処理状況を表示するユーザインタフェースの構成例を示す図。
【図１３】ジョブの順序を入れ換えた場合の処理状況を表示するユーザインタフェースの構成例を示す図。
【図１４】第１処理プロセスと第２処理プロセスが一続きに動作しない場合を説明するための図。
【発明を実施するための形態】
【００１１】
＜第一の実施形態＞
本実施形態に係る印刷システムは、読み込まれたＰＤＬデータから印刷データへの変換処理を行いながら、同時に印刷を行う。以下、図面を参照して本発明を実施するための形態について説明する。
【００１２】
［印刷システムのハードウェア構成］
本実施形態に係る印刷システムは、例えば図１に示すようにコンピュータ１０１、１１１、印刷機１２１で構成される。ここではコンピュータ１０１、１１１は同様のハードウェア構成を有するものとし、コンピュータ１０１を例に挙げて説明する。
【００１３】
コンピュータ１０１は、情報処理装置であり、複数のＣＰＵ１０２、１０４、ＲＡＭ１０５、ＨＤＤ１０６、及びＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１０７を備える。これらは、システムバス１０８を介して互いに通信可能に接続されている。ＣＰＵ１０２は、ＲＡＭ１０５またはＨＤＤ１０６に記憶されたプログラムを読み出して実行することで、システムバス１０８に接続された各構成部を総括的に制御する。ＲＡＭ１０５は、ＣＰＵ１０２の主メモリまたはワークエリア等として機能する。ＮＩＣ１０７は、ネットワーク１３１を介して他のコンピュータや印刷機１２１と互いに通信可能に接続される。
【００１４】
ここで、本実施形態のＣＰＵ１０２は複数のプロセッサコア１０３を備えたマルチコアプロセッサであり、プロセッサコアが処理プログラムを実行することで実現される各プロセス（動作中のプログラムの単位）を動作させる。ＣＰＵ１０４、１１２、１１４も同様である。更に、プロセスの動作は１つ以上のスレッド（プロセス中の処理の単位）が動作することで構成されている。なお、プロセッサコアのことを以下では単に「コア」と呼ぶ。
【００１５】
印刷機１２１は、コンピュータ１０１、１１１から送信された印刷データを受信し、その印刷データを用いて印刷処理を行い、印刷物を出力する。印刷機１２１は、ネットワーク１３１を介してコンピュータ１０１、１１１と通信可能に接続されている。
【００１６】
なお、図１では、コンピュータと印刷機とが異なる装置として示しているが、これに限定せず、同じ装置内に設けられていてもよい。
【００１７】
［マルチコアとスレッド制御］
以下、本実施形態に係るマルチコアおよびスレッド制御について説明する。スレッドは、複数のコアのうちの１つを使用して処理を行う。以下の説明において、複数のプロセスが同時に異なる処理を行うこと、もしくは複数のスレッドが同時に異なる処理を行うことを「並列処理」と呼ぶ。スレッドのコア割り当て（つまり、スレッドがどのコアを使用して処理を行うかの決定）は、通常、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が管理し、コンピュータ内での他のプロセスやスレッドによるコアの使用状況に応じて動的に行われる。
【００１８】
ＯＳによる管理ではスレッドと使用するコアの対応が多対１となることがある。このとき、複数のスレッドを１つのコア上で動作させるために、動作しているスレッドのメモリ領域とキャッシュを他のメモリ領域に退避させ、以前に退避したスレッドのメモリ領域とキャッシュを元のメモリ領域とキャッシュに復帰させる動作を繰り返し行う。つまり、複数のスレッドの処理を時間軸で分割し短時間に切り替える事で、並行処理（疑似的な並列処理）を行う事になる。
【００１９】
それに対し、処理プログラムの管理で、スレッドと使用するコアの対応が１対１となる並列処理の場合、複数のスレッドが１つのコア上で動作する並行処理と違い、メモリ領域とキャッシュの退避と復帰の動作が必要無くなるため、処理効率が良い。
【００２０】
印刷システムが備える制御手段による管理によって、１つのスレッドに対して明示的に１つのアフィニティマスク（動作中のスレッドとそのスレッドの処理において使用されるコアとの対応関係表）が設定される。アフィニティマスクを設定することで、スレッドが使用できるコアをアフィニティマスクで指定した１つ以上のコアだけに限定できる。本実施形態ではアフィニティマスクによって使用できるコアを１つに設定することで、スレッドと使用するコアを１対１に対応付ける。つまり、複数動作するスレッドそれぞれに対してアフィニティマスクが設定されることにより、スレッドの使用するコア同士が重複しないように制御される。
【００２１】
本明細書において、「スレッドにコアを割り当てること」とは、「１つのスレッドが特定の１コアを使用して動作し、かつ、他スレッドが当該１コアを使用して動作しないように、印刷システムが持つ制御手段がアフィニティマスクを設定すること」を意味するものと定義する。また、「プロセスにコアを割り当てること」とは、「プロセスに含まれる１つ以上のスレッドにコアを割り当てること」と定義する。ここで、プロセスに割り当てるコア数とそのプロセスに含まれるスレッド数は同じである。例えば、プロセスに２コアが割り当てられる場合、そのプロセス内部では２つのスレッドが動作し、２つのスレッドにはそれぞれのアフィニティマスクによって、２つのコアが１コアずつ重複せずに割り当てられる。
【００２２】
［印刷システムの処理の概念とデータの流れ］
図２に、パイプライン構造で動作する印刷システムの処理の概念図を示す。本実施形態の印刷システムは、ＣＰＵ１０２、１０４がＨＤＤ１０６に記憶される処理プログラムを実行することで実現され、次の各プロセス（各処理部）を有する。図２においては、読込プロセス２０１（読込部）、第１保持プロセス２０２（第一の保持部）、第１処理プロセス２０３（第一の処理部）、第２保持プロセス２０５（第二の保持部）、第２処理プロセス２０６（第二の処理部）、及び第３保持プロセス２０８（第三の保持部）が示されている。第３保持プロセス２０８は、印刷機２０９と通信する。
【００２３】
読込プロセス２０１は、ＮＩＣ１０７を通じて受信したＰＤＬデータを読み込み、ページ単位などの処理単位データに分割する。ここでの処理単位の詳細については後述する。そして読込プロセス２０１は、第１保持プロセス２０２へ処理単位データを送信する。第１処理プロセス２０３は、第１保持プロセス２０２に保持された処理単位データを読み込み、内部の処理スレッド２０４によって中間データに変換処理を行う。そして、第１処理プロセス２０３は、第２保持プロセス２０５へ中間データを送信する。第２処理プロセス２０６は、第２保持プロセス２０５に保持された中間データを読み込み、内部の処理スレッド２０７によって印刷データへの変換処理を行う。そして第２処理プロセス２０６は、第３保持プロセス２０８へ印刷データを送信する。印刷機２０９は、第３保持プロセス２０８に保持された印刷データを受信して読み込み、一定速度で印刷を行う。各保持プロセスにて蓄積されたデータは、以降の処理部により処理されることによって順次消費される。
【００２４】
予測プロセス２１２は、読込プロセス２０１からＰＤＬデータから分割れた処理単位データを受け取り、各処理単位データの処理に要する予測処理時間の計算を行う。そして予測プロセス２１２は、制御プロセス２１０へ予測処理時間を送信する。制御プロセス２１０は、コンピュータ１０１、１１１に搭載されているＣＰＵ内のコアから構成されるコア群２１１による処理状況と、第１保持プロセス２０２、第２保持プロセス２０５、および第３保持プロセス２０８のメモリの使用状況を監視する。更に制御プロセス２１０は、使用状況と処理状況に基づいて、第１処理プロセス２０３と第２処理プロセスそれぞれへコアを割り当てる。
【００２５】
ここでの予測プロセス２１２による予測処理時間の計算は、読込プロセス２０１がＰＤＬデータをページ単位の処理単位データに分割した後、処理単位データを解析することで行う。なお、読込プロセス２０１による分割の処理単位をページ単位としたが、これに限定するものではなく、例えば、複数のページを１つの単位としても構わない。また、第一１処理プロセス２０３と第２処理プロセス２０６の処理単位は同じでなくてもよい。例えば、第２処理プロセス２０６では、中間データを、ページ、ベクタ画像、バンド、もしくはタイルなどの処理単位で処理を行うようにしても構わない。以下、第１処理プロセス２０３および第２処理プロセスを総称して「処理プロセス」と呼び、第１保持プロセス２０２、第２保持プロセス２０５、および第３保持プロセス２０８を総称して「保持プロセス」と呼ぶ。なお、各プロセスは処理手段と言い換えることができる。例えば制御プロセス２１０は制御手段と言い換えることができる。同様に第１処理プロセス２０３、第２処理プロセス２０６は、第１の処理手段、第２の処理手段と言い換えることができる。
【００２６】
［予測プロセスに入力されるＰＤＬデータの構成要素］
読込プロセス２０１によって分割される処理単位データには、大きく分けてベクタ画像データ、ラスタ画像データ、フォントデータ、テキストデータ、レイアウトデータの５種類のデータが格納されている。
【００２７】
ベクタ画像データは、直線や曲線の座標、重なりの前後関係、属性（線の太さ、色、塗りつぶしの有無、透明度など）によって記録され、データサイズは比較的小さい。ベクタ画像データは、処理によって、印刷データ（ビットマップデータ）に変換される。ＰＤＬデータに含まれるベクタ画像データが多い場合や、複雑な形状、半透明やグラデーションなどの特殊な塗り潰しを持つオブジェクトが存在する場合は、処理に多くの時間を要する。
【００２８】
ラスタ画像データは、ビットマップデータと属性（縦横の画素数、１画素あたりの色数、圧縮形式など）によって記録され、ベクタ画像データに比べデータサイズが大きい。ラスタ画像データは、処理プロセスによって、印刷される寸法と解像度から印刷に必要な縦横の画素数の計算、圧縮画像の展開、印刷時に必要な縦横の画素数への拡大もしくは縮小、画像の圧縮が順に行われる。極端に大きい画像や処理負荷の高い圧縮形式が採用されている場合は、処理プロセスでの処理に多くの時間を要する。
【００２９】
フォントデータは、文字の形状が直線や曲線の座標によって記録され、データサイズは形状の複雑さやフォントデータに含まれる文字数に依存する。例えば、文字数が少ない欧文はデータサイズが小さく、複雑な形状で文字数が多い日本語や中国語などはデータサイズが大きい傾向がある。ＰＤＬデータで使用されていない文字の情報を削除し、データサイズを削減することも可能である。フォントデータは、ベクタ画像データと同様に、処理プロセスによって、印刷データに変換される。
【００３０】
テキストデータは、フォントデータの文字への対応表として記録され、データサイズは小さい。テキストデータは、処理プロセスによって、対応したフォントデータの文字形状をビットマップデータとして描画される。何度も出現する文字を処理する場合、ビットマップデータとしてキャッシュすることで変換処理の回数を削減し、処理時間を短縮できる。
【００３１】
レイアウトデータは、印刷用紙の寸法や解像度、色数、ページ数などが記録される。上述した４種類のデータは、レイアウトデータに応じた印刷データへ変換されるため、大きい印刷用紙や高解像度が指定されたＰＤＬデータの場合は、処理に多くの時間を要する。
【００３２】
［予測プロセスによる、ＰＤＬデータの構成要素を利用した処理時間の予測方法１］
データの座標の数や属性の値など、ＰＤＬデータから複雑な計算を要せずに得られる数字を、ここでは「特徴ベクトル」と呼ぶ。事前に、学習用データとして様々なＰＤＬデータを処理し、特徴ベクトルと実際の処理時間を記録しておく。この作業で得られる結果に基づき、どの特徴ベクトルの値が処理時間の増減への寄与率が高いか判定することができる。
【００３３】
特徴ベクトルの値から予測処理時間を計算する方法はいくつかある。例えば、予測プロセス２１２で得られた特徴ベクトルの値が、事前に定めた閾値を超えているか比較して点数化し、その合計値を予測処理時間の値とする方法がある。具体的には、処理するＰＤＬデータに含まれるベクタ画像の数が、学習データでの平均値を超えれば１秒加算するといった方法がある。
【００３４】
ここで、各特徴ベクトルが直交している（ある特徴ベクトルの値が他の特徴ベクトルの値と関連性が無い）とは限らないため、算出した値を正規化や次元圧縮を行うことで予測精度の向上が期待できる。学習データの複数のＰＤＬデータから得た特徴ベクトルＶｉ（ｉ＝１，２，…）から、実測処理時間Ｔｉを一定区間ごとに分類する分類器ｆ：Ｖｉ→Ｔｉを機械学習（Ｎａｉｖｅ  Ｂａｙｅｓ、Ｓｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｍａｃｈｉｎｅ等）によって作成する。得られた分類器ｆを、実動作する予測プロセス２１２で得られた入力ＰＤＬデータの特徴ベクトルｖに適用することで、予測処理時間ｔ＝ｆ（ｖ）が得られる。
【００３５】
［予測プロセスによる、ＰＤＬデータの構成要素を利用した処理時間の予測方法２］
前述の特徴ベクトルを用いる方法とは異なる、低解像度で処理した場合の実測値を利用する方法もある。これは、予測プロセス２１２において、実際の解像度（例えば、６００ｄｐｉ（Ｄｏｔｓ  Ｐｅｒ  Ｉｎｃｈ））と比べて低い解像度（例えば、６０ｄｐｉ）で実際に処理を行う。第１処理プロセス２０３による描画グラフィックデータの処理や第２処理プロセス２０６による中間データから印刷データへの変換処理は解像度に依存するため、解像度が低い場合には処理時間が短くなる。例えば、第２処理プロセス２０６の場合、出力する印刷データの描画面積が小さくなるため、処理時間が短くなる。一方、それ以外の第１処理プロセス２０３でのベクタ画像データやテキストデータの処理などは解像度に非依存のため、解像度の変動によっては大きく処理時間が変わらない。
【００３６】
そのため、解像度に依存する処理の処理時間に一定の係数をかける、または事前に作成した対応表と照らし合わせて補正を行い、解像度に非依存の処理の処理時間を足し合わせることで、予測処理時間とすることができる。
【００３７】
上記の方法から、入力されたＰＤＬデータの予測処理時間が予測プロセス２１２によって計算され、処理単位データごとの予測処理時間が制御プロセス２１０にとって既知である場合、印刷機の速度に処理の速度を合わせ、かつ使用するコア数の削減が可能となる。なお、上記に示した予測処理時間の算出方法は一例であり、他の方法を用いても良いし、複数の方法を組み合わせて用いても構わない。
【００３８】
［処理プロセスによる、並列処理行う上でのページとコア割り当ての関係］
印刷機２０９の印刷速度に基づいて、コアの割り当てを行う例について説明する。ここでは、印刷速度３００ｐｐｍ（Ｐａｇｅｓ  Ｐｅｒ  Ｍｉｎｕｔｅ）で動作する印刷機２０９に合わせて処理を行う場合を考える。このとき、印刷速度に合わせてＰＤＬデータに対する変換処理を行うためには、２００ミリ秒に１ページの間隔で第３保持プロセス２０８から印刷機２０９に印刷データを次々と送信する必要がある。つまり、第２処理プロセス２０６の処理が１ページあたり平均２００ミリ秒で行われ第３保持プロセス２０８に次々と蓄積されれば、第３保持プロセス２０８での印刷データの入力と出力のページ数がほぼ一致し、印刷データ保持用のメモリ使用量の変動が減少する。
【００３９】
メモリ使用量の変動が少なければ、処理時間が極端に長いＰＤＬデータを処理する場合等の急激なメモリ使用量の増加に備えて、余裕を持たせた大量のメモリモジュールを搭載する必要性が軽減される。同時に、蓄積している印刷データのページ数の不足を防ぐ目的で、処理速度を一時的に大きくするための大量のコアを搭載する必要性が軽減される。また、蓄積している印刷データのページ数が不足してしまった場合に、印刷機２０９の印刷速度に合わせて印刷データを供給できなくなって印刷機２０９の印刷処理が一時停止する可能性も減少する。第２処理プロセス２０６と第３保持プロセス２０８におけるこれらの利点は、第１処理プロセス２０３と第２保持プロセス２０５の関係、読込プロセス２０１と第１保持プロセス２０２の関係でも同様である。
【００４０】
１ページあたり２００ミリ秒の間隔で印刷を行う印刷機２０９を対象として、印刷データを供給するための処理単位データに対するコアの割り当て方を考える。ただし、ジョブには１つ以上のＰＤＬデータが含まれ、ＰＤＬデータは１つ以上のページにて構成され、色変換や面付けなどの設定がなされているものとする。ここでは、複数のジョブや複数のページを並列に処理できるが、ジョブ内のページはページの番号順に処理が開始されることとし、処理のために使用できるコアの上限数はジョブ単位で設定される。また、ページに含まれるベクタ画像データなどの数は複数のコア割り当てを行う上で十分多く、データ分割およびデータ統合に必要なオーバーヘッドの時間は無視できるものとし、割り当てるコア数に応じ処理時間が反比例して短くなるものとする。
【００４１】
上記の印刷機２０９の印刷速度において、予測処理時間が１ページあたり２００ミリ秒である場合、単純に１ページに１コアを使用し１ページずつ順次処理を行えば良い。一方、予測処理時間が１ページあたり１０００ミリ秒である場合、５コアで並列処理を行えば間に合う計算になる。ここで、並列処理には２つの方法がある（図３）。１つは、１ページあたり１コアを使用して１秒で処理し、同時に５ページを並列処理する方法（ａ）である。もう１つは、１ページあたり同時に５コアを使用して２００ミリ秒で処理し、１ページずつ逐次処理する方法（ｂ）である。２つの方法とも必要な時間とコア数は同じになる。
【００４２】
ページ毎に予測処理時間に大きなばらつきがある場合に、これら２つの方法を組み合わせることで各ページの処理時間の調整が可能となる。方法（ｂ）はページ内のベクタ画像データやラスタ画像データ等をどのコアで処理するかを事前に判断する必要があるため、オーバーヘッドが発生する。そのため、上記の２つの並列処理の方法を比較すると、方法（ｂ）は方法（ａ）と比べ効率は低下する。しかし、一部のページの予測処理時間が大きい場合は、方法（ａ）では印刷機へのデータ供給が滞る可能性（後述）があるため、方法（ｂ）を用いて処理時間の短縮を図ることが必要となる。
【００４３】
ジョブごとの優先度に応じて印刷順序を入れ換えることが実務上必要とされるため、本実施形態では、上記のページ単位での並列処理、およびページ内のデータ単位での並列処理と同様に、ジョブ単位での並列処理も可能とする。また、ジョブは複数のＰＤＬデータを面付け済みであり、ＰＤＬデータの順序を入れ換えることは行われないため、ジョブ内のＰＤＬデータには一続きのページ番号が与えられることとする。
【００４４】
［処理プロセスによる、並列処理による処理完了時刻のばらつき］
並列処理を行う場合、処理単位データの処理内容に応じて各処理単位データの処理時間が異なると、処理を開始した時点でのデータの順序と処理を終了した時点でのデータの順序が一致するとは限らない。例えばＮページ目、Ｎ＋１ページ目の順序でデータ変換処理した際に、Ｎ＋１ページ目、Ｎページ目の順序で印刷データが生成される場合がある。印刷データの生成された順序で印刷を行うと印刷順序の逆転が発生するため、第３保持プロセス２０８に一定量の印刷データを蓄積し、順序の若いデータから出力することで印刷順序の逆転を防いでいる。第３保持プロセス２０８に一定量の印刷データを蓄積することには、データ変換処理の速度が変動したときの影響を吸収する働きもある。
【００４５】
第３保持プロセス２０８に一定量のデータを蓄積するためには、第３保持プロセス２０８の印刷データの入出力量が影響するため、システム全体での処理速度の調整が必要になる。本実施形態では、その処理速度の調整の手段として、後述の並列動作する第１処理プロセス２０３と第２処理プロセス２０６の動作する数を増減させる。
【００４６】
［第１処理プロセスと第２処理プロセスの動作の特徴］
前述のように、第１処理プロセス２０３はＰＤＬデータを中間データに変換する変換処理を行い、第２処理プロセス２０６は中間データを印刷データに変換する変換処理を行う。それぞれの動作の特徴について説明する。
【００４７】
第１処理プロセス２０３の変換処理は、様々な内容のＰＤＬデータを入力とするため処理時間のばらつきが大きい傾向がある。そのため、１ページに数コアを割り当てる必要がある時もあれば、１コアで十分な時もあり、コア割り当ての変動が大きくなる。
【００４８】
一方、中間データは変換処理が容易な形式に整えられているため、第２処理プロセス２０６の変換処理は、第１処理プロセス２０３と比べ処理時間のばらつきが小さい。しかし、中間データに比べ、出力される印刷データは、ベクタ画像なので１ページあたりのデータサイズは数十から数百倍と大きくなる。保持する印刷データの数を少なくしつつ、印刷機２０９への安定したデータの供給を行うためには、第２処理プロセス２０６の処理時間のばらつきを抑える必要がある。
【００４９】
第２処理プロセス２０６の処理時間の変動は、印刷機２０９への安定したデータ供給に影響を及ぼすため、予測処理時間を利用し、第１処理プロセス２０３より優先して第２処理プロセス２０６へのコア割り当てを行うことを前提に説明を進める。
【００５０】
［制御プロセスによる、ページ単位での並列処理を行うための制御方法］
次に、１つのジョブ内での第２処理プロセス２０６の並列処理について説明する。図４（ａ）は、ページ毎の処理時間と第２処理プロセス２０６で使用しているコアの関係（矩形中の数字はページ番号）を示す。図４（ｂ）は、処理時間と第３保持プロセス２０８にて保持されたページ順に印刷可能なページ数の関係を示す。ここではページ４０１（１０ページ目）が平均予想処理時間よりも処理時間が長いと予測されたページとし、他のページは平均予測処理時間以下で処理が完了すると予測されたものとする。
【００５１】
予測処理時間が平均予想処理時間より長いページ４０１が存在するため、処理開始はページ番号順であっても処理が完了するページ番号が入れ替わり、１２、１１、１４、１３、１５、１６、１０の順となっている。そのため、ページ順に印刷が開始できず蓄積されるページ群４０２（１１〜１６ページ目）の処理が先に完了しても、ページ順に印刷を開始することができない。
【００５２】
つまり、図４（ｂ）のように処理時間の長いページを処理している間は第３保持プロセス２０８にて保持される印刷可能なページ数４０３が徐々に減少し、処理が完了した段階で、事前に設定された印刷可能なページ数の基準値４０４におおよそ戻る。保持されている印刷可能なページ数が枯渇すると印刷データを供給できずに印刷機２０９の印刷動作が停止してしまう。そこで、上記の並列処理の方法によって処理時間の調整を行うことにより、印刷可能なページ数の枯渇を抑制し、印刷機の印刷動作の停止を防止する必要がある。
【００５３】
図５は、予測処理時間が平均予想処理時間より長いページ５０１に対して複数コアを使用して並列処理を行った場合についての模式図である。図５（ａ）は、ページ毎の処理時間と第２処理プロセス２０６で使用しているコアの関係（矩形中の数字はページ番号）を示す。図５（ｂ）は、処理時間と第３保持プロセス２０８にて保持されたページ順に印刷可能なページ数の関係を示す。
【００５４】
ページの予測処理時間が平均の予測処理時間と比べて長い場合、そのページの処理に複数コアを割り当てて処理速度を向上させ、平均の予測処理時間との差異が最小になるように調整する。その結果、処理が完了する時間のばらつきが抑えられることで、第３保持プロセス２０８にて保持される印刷可能なページ数５０２の変動が小さくなり、印刷ページの枯渇を抑制することができる。
【００５５】
この第２処理プロセス２０６と第３保持プロセス２０８との関係は、第１処理プロセス２０３と第２保持プロセス２０５との関係にも同様に適用できる。つまり、第２処理プロセス２０６が印刷機２０９への安定したデータ供給を行うために使用したコアの余剰分を利用して第１処理プロセス２０３が動作する。これにより、第２処理プロセス２０６が処理する中間データの枯渇を防止し、第２処理プロセス２０６の処理遅延を抑制することができる。
【００５６】
［制御プロセスによる、コア割り当ての処理フロー］
図６は、図５において並列処理を行ったことによる印刷可能なページ数の減少を抑制する動作を表すフローチャートである。図６（ａ）はコア割り当ての処理の全体を示す。
【００５７】
ここで、目標処理時間Ｔは、印刷速度に合わせた場合の１ページあたりの処理時間の目標値とする。全ページの平均処理時間が目標処理時間Ｔ以下であれば、使用可能に割り当てられたコア数が充足していることを意味する。予測対象のページ数Ｎは、予測処理時間の計算を何ページ先まで行うかを指定するためのパラメータである。Ｎには、投入された全てのジョブのページ数か、十分大きな数字が指定される。
【００５８】
本処理フローは、コンピュータ１０１のＣＰＵ１０２もしくは１０４がＨＤＤ１０６等に格納された本実施形態に係るプログラムを読み出して実行することにより、制御プロセス２１０として動作することで実現される。
【００５９】
Ｓ６０１にて、制御プロセス２１０は、目標処理時間Ｔ、現在のページ番号ｐ、ｉページ目の予測処理時間ｔｉ、予測対象のページ数Ｎを設定する。Ｓ６０２にて、制御プロセス２１０は、ページ番号ｉにｐを代入する。更に、制御プロセス２１０は、使用可能コア数Ｃに、ｔをＴで割った値を超える最小の整数を代入する。図６では、変数Ｘ以上の最小の整数を求めるための関数としてｃｅｉｌ（Ｘ）関数にて表現している。更に、制御プロセス２１０は、平均予測処理時間ｔに、全てのｉに対するｔｉの合計値をＣで割った値（（Σｔｉ）／Ｃ）を代入する。
【００６０】
Ｓ６０３にて、制御プロセス２１０は、ページ毎の割り当てコア数の決定サブルーチン（図６（ｂ））を呼び出す。Ｓ６０４にて、制御プロセス２１０は、ページ毎の処理開始時刻の予測サブルーチン（図６（ｃ））を呼び出す。そして、本処理フローを終了する。
【００６１】
（制御プロセスによる、ページ毎の割り当てコア数の決定を行うサブルーチン）
制御プロセス２１０は、Ｓ６０３にてページ毎の割り当てコア数の決定をするために、図６（ｂ）に示す処理を行う。
【００６２】
Ｓ６１１にて、制御プロセス２１０は、ｉページ目の使用コア数ｃｉに、ｔｉをＴで割った値を超えない最大の整数を代入する。図６では、変数Ｙ以下の最大の整数を求めるための関数として、ｆｌｏｏｒ（Ｙ）関数にて表現している。Ｓ６１２にて、制御プロセス２１０は、ｃｉが１未満か判定する。１未満であれば（Ｓ６１２にてＹＥＳ）Ｓ６１３へ進み、１未満でなければ（Ｓ６１２にてＮＯ）Ｓ６１４へ進む。
【００６３】
Ｓ６１３にて、制御プロセス２１０は、ｃｉに１を代入し、Ｓ６１６へ進む。Ｓ６１４にて、制御プロセス２１０は、ｃｉがＣを超えているか判定する。Ｃを超えていれば（Ｓ６１４にてＹＥＳ）Ｓ６１５へ進み、Ｃを超えていなければ（Ｓ６１４にてＮＯ）Ｓ６１６へ進む。Ｓ６１５にて、制御プロセス２１０は、ｃｉにＣを代入し、Ｓ６１６へ進む。
【００６４】
Ｓ６１６にて、制御プロセス２１０は、ｉに１を加算し、Ｓ６１７へ進む。Ｓ６１７にて、制御プロセス２１０は、ｉがｐ＋Ｎを超えているか判定する。ｐ＋Ｎを超えていれば（Ｓ６１７にてＹＥＳ）本サブルーチンから抜け、ｐ＋Ｎを超えていなければ（Ｓ６１７にてＮＯ）Ｓ６１１へ戻る。
【００６５】
（制御プロセスによる、ページ毎の処理開始時刻の予測を行うサブルーチン）
制御プロセス２１０は、Ｓ６０４にてページ毎の処理開始時刻の予測をするために、図６（ｃ）に示す処理を行う。
【００６６】
Ｓ６２１にて、制御プロセス２１０は、ｉにｐを代入し、Ｓ６２２へ進む。Ｓ６２２にて、制御プロセス２１０は、ページｉに対し、Ｃ個のコアのうち最も早い時間に使用可能となるｃｉ個のコアを割り当てた時の処理開始予測時刻を記録し、Ｓ６２３へ進む。
【００６７】
Ｓ６２３にて、制御プロセス２１０は、ｉに１を加算し、Ｓ６２４へ進む。Ｓ６２４にて、制御プロセス２１０は、ｉがｐ＋Ｎを超えているか判定する。ｐ＋Ｎを超えていれば（６２４にてＹＥＳ）本サブルーチンから抜け、ｐ＋Ｎを超えていなければ（Ｓ６２４にてＮＯ）Ｓ６２２へ戻る。
【００６８】
以上、本実施形態により、処理に応じてコアを動的に割り当てることで、ページ毎の処理時間のばらつきを抑制し、過剰なデータ蓄積によるハードウェアリソースの消費と、データ枯渇による印刷動作の停止を防ぐことができる。
【００６９】
＜第二の実施形態＞
複数のコアを用いて並列処理を行うことで印刷速度に合わせた処理を行う方法について、第一の実施形態にて述べた。次に、第一の実施形態と同様のアーキテクチャにおいて、使用可能コア数Ｃを割り当てるだけでは予想処理時間が平均処理時間（所定の値）より大幅に超過するページ（以下、「ヘビーページ」と記載）が存在する場合がある。ヘビーページの存在は、保持部に保持されている印刷可能ページ数が枯渇する可能性を高め、印刷機の停止を招く。これを防ぐためには、第一の実施形態にて述べた、複数コアを割り当てた並列化処理による処理時間の短縮が効果的である。しかし、第一の実施形態で例示したように、割り当てられたコア数では処理速度が足りない場合、第三保持プロセスに保持される印刷可能ページ数（印刷データ）が枯渇しやすい。
【００７０】
そこで、ヘビーページとその前後の一定の期間（もしくは、一定のページ数）に対しては、使用可能コア数の制限Ｃと追加で使用可能なコア数ａとからなるコア数Ｃ’＝Ｃ＋ａを使用し、処理の高速化を行う。これにより、処理時間の短縮を促し、印刷機の印刷速度に伴う印刷可能ページ数の枯渇を防止する。
【００７１】
例えば１０コアを搭載する印刷システムにおいて、２つのジョブが３コアずつ占有して処理する場合、余裕分の４コア（＝１０−３×２）は必要な時だけ利用するための共有コアという扱いとなる。共有コアである４コアは、ヘビーページが処理される際にいずれか１つのジョブに一時的に割り当てられる。一定量の共有コアを用意することで、予想処理時間と実際の処理時間の間にある誤差を吸収することができる。
【００７２】
図７は、一時的に使用可能コア数を増やすことで処理を高速化し、印刷機における印刷動作の停止を防ぐ動作を示す模式図である。例えば、普段の使用可能コア数を３とし、一時的に使用可能コア数を５に増やして対応する場合を考える。図７（ａ）に示すようにヘビーページ７０１（２９ページ目）とその前後の一定時間の間は５コアを使用して処理を行う。その結果、図７（ｂ）に示すように印刷可能なページ数を事前に積み増しすることで、印刷機２０９の印刷動作の停止７０２を予防する。
【００７３】
ヘビーページ以外の処理を高速化する対象は、本来処理すべきタイミングのページ７０３とし、ヘビーページの直前で処理すべきページ７０４と直後で処理すべきページ７０５の割合は、オペレータによって事前に指定されるものとする。ここでは、設定された割合に応じて、追加された２つのコア（コア４、５）により、ヘビーページの直前に処理されるページ７０４として、１５、１６、１９、２２、２５、２７ページ目が処理されている。また、追加された２つのコア（コア４、５）により、ヘビーページの後に処理されるページ７０５として、３０、３１、３６ページ目が処理されている。また、追加で使用可能なコアを追加する時間間隔（ヘビーページを処理する時間及びその前後の一定時間）についてもオペレータが設定可能としてもよい。
【００７４】
［制御プロセスによる、ヘビーページに対するコア割り当ての処理フロー］
図８は、図７において極端に予想処理時間が長いページ（ヘビーページ）とその前後の一定時間の間だけ高速化して処理する動作を表すフローチャートである。図８（ａ）は本実施形態に係るコア割り当ての処理の全体を示す。本処理フローは、コンピュータ１０１のＣＰＵ１０２もしくは１０４がＨＤＤ１０６等に格納された本実施形態に係るプログラムを読み出して実行することにより、制御プロセス２１０として動作することで実現される。
【００７５】
Ｓ８０１にて、制御プロセス２１０は、目標処理時間Ｔ、現在のページ番号ｐ、ｉページ目の予測処理時間ｔｉ、予測対象のページ数Ｎ、高速化に使用するコア数ａを設定する。Ｓ８０２にて、制御プロセス２１０は、ページ番号ｉに、ｐを代入する。更に、制御プロセス２１０は、使用可能コア数Ｃに、ｔをＴで割った値を超える最小の整数を代入する。更に、制御プロセス２１０は、高速化時の使用可能コア数Ｃ’に、Ｃとａを加算した値（Ｃ＋ａ）を代入する。更に、制御プロセス２１０は、平均予測処理時間ｔに、全てのｉに対するｔｉの合計値をＣで割った値（（Σｔｉ）／Ｃ）を代入する。
【００７６】
Ｓ８０３にて、制御プロセス２１０は、ページ毎の割り当てコア数の決定サブルーチン（図８（ｂ））を呼び出す。Ｓ８０４にて、制御プロセス２１０は、ページ毎の処理開始時刻の予測サブルーチン（図８（ｃ））を呼び出す。そして、本処理フローを終了する。
【００７７】
（制御プロセスによる、ページ毎の割り当てコア数の決定を行うサブルーチン）
制御プロセス２１０は、Ｓ８０３にてページ毎の割り当てコア数の決定をするために、図８（ｂ）に示す処理を行う。
【００７８】
Ｓ８１１にて、制御プロセス２１０は、ｉページ目の使用コア数ｃｉに、ｔｉをＴで割った値を超えない最大の整数（ｆ（ｔｉ／Ｔ））を代入する。Ｓ８１２にて、制御プロセス２１０は、ｃｉが１未満か判定する。１未満であれば（Ｓ８１２にてＹＥＳ）Ｓ８１３へ進み、１未満でなければ（Ｓ８１２にてＮＯ）Ｓ８１４へ進む。
【００７９】
Ｓ８１３にて、制御プロセス２１０は、ｃｉに１を代入し、Ｓ８１６へ進む。Ｓ８１４にて、制御プロセス２１０は、ｃｉがＣ’を超えているか判定する。Ｃ’を超えていれば（Ｓ８１４にてＹＥＳ）Ｓ８１５へ進み、Ｃ’を超えていなければ（Ｓ８１４にてＮＯ）Ｓ８１６へ進む。Ｓ８１５にて、制御プロセス２１０は、ｃｉにＣ’を代入し、Ｓ８１６へ進む。Ｓ８１６にて、制御プロセス２１０は、ｉに１を加算し、Ｓ８１７へ進む。Ｓ８１７にて、制御プロセス２１０は、ｉがｐ＋Ｎを超えているか判定する。ｐ＋Ｎを超えていれば（Ｓ８１７にてＹＥＳ）本サブルーチンから抜け、ｐ＋Ｎを超えていなければ（Ｓ８１７にてＮＯ）Ｓ８１１へ戻る。
【００８０】
（制御プロセスによる、ページ毎の処理開始時刻の予測を行うサブルーチン）
制御プロセス２１０は、Ｓ８０４にてページ毎の処理開始時刻の予測をするために、図８（ｃ）に示す処理を行う。
【００８１】
Ｓ８２１にて、制御プロセス２１０は、ヘビーページの前に処理するページ数の割合ｄの設定を行う。ここでのｄについては、予めユーザによって定義されているものとする。更に、制御プロセス２１０は、ｉにｐを代入し、Ｓ８２２へ進む。Ｓ８２２にて、制御プロセス２１０は、ｃｉがＣを超えているか判定する。Ｃを超えていれば（Ｓ８２２にてＹＥＳ）Ｓ８２６へ進み、Ｃを超えていなければ（Ｓ８２２にてＮＯ）Ｓ８２３へ進む。Ｓ８２３にて、制御プロセス２１０は、ページｉに対し、Ｃ個のコアのうち最も早い時間に使用可能なｃｉ個のコアを割り当てた時の処理開始予測時刻を記録し、Ｓ８２４へ進む。
【００８２】
Ｓ８２４にて、制御プロセス２１０は、ｉに１を加算し、Ｓ８２５へ進む。Ｓ８２５にて、制御プロセス２１０は、ｉがｐ＋Ｎを超えているか判定する。ｐ＋Ｎを超えていれば（Ｓ８２５にてＹＥＳ）本サブルーチンを抜け、ｐ＋Ｎを超えていなければ（Ｓ８２５にてＮＯ）Ｓ８２２へ戻る。
【００８３】
Ｓ８２６にて、制御プロセス２１０は、高速化して処理するページ数ｎに、Ｃとｔｉの積をＣ’とｔの積で割った値（（Ｃ×ｔｉ）／（Ｃ’×ｔ））を代入する。更に制御プロセス２１０は、予定前に処理するページ番号ｎ１に、ｉからｄとｎの積を引いた値（ｉ−ｄ×ｎ）を代入する。更に、制御プロセス２１０は、予定前に処理するページ番号ｎ１に、ｉから１−ｄとｎの積を足した値（ｉ＋（１−ｄ）×ｎ）を代入し、Ｓ８２７へ進む。
【００８４】
Ｓ８２７にて、制御プロセス２１０は、ｎ１がｐを下回っているか判定する。ｐを下回っていれば（Ｓ８２７にてＹＥＳ）Ｓ８２８へ進み、ｐを下回っていなければ（Ｓ８２７にてＮＯ）Ｓ８２９へ進む。Ｓ８２８にて、制御プロセス２１０は、ｎ１にｐを代入し、Ｓ８２９へ進む。Ｓ８２９にて、制御プロセス２１０は、ｎ２がｐ＋Ｎを超えているか判定する。ｐ＋Ｎを超えていれば（Ｓ８２９にてＹＥＳ）Ｓ８３０へ進み、ｐ＋Ｎを超えていなければ（Ｓ８２９にてＮＯ）Ｓ８３１へ進む。
【００８５】
Ｓ８３０にて、制御プロセス２１０は、Ｎ２にｐ＋Ｎを代入し、Ｓ８３１へ進む。Ｓ８３１では、制御プロセス２１０は、ｉにｎ１を代入し、Ｓ８３２へ進む。Ｓ８３２にて、制御プロセス２１０は、ページｉに対し、Ｃ’個のコアのうち最も早い時間に使用可能なｃｉ個のコアを割り当てた時の処理開始予測時刻を記録し、Ｓ８３３へ進む。
【００８６】
Ｓ８３３にて、制御プロセス２１０は、ｉに１を加算し、Ｓ８３４へ進む。Ｓ８３４にて、制御プロセス２１０は、ｉがｎ２を超えているか判定する。ｎ２を超えていれば（Ｓ８３４にてＹＥＳ）Ｓ８２２へ戻り、ｎ２を超えていなければ（Ｓ８３４にてＮＯ）Ｓ８３２へ戻る。
【００８７】
以上、本実施形態により、第一の実施形態よりもさらに柔軟にコアの割り当てを行うことができる。
【００８８】
＜第三の実施形態＞
印刷システムにて並列処理する方法を第一、第二の実施形態にて述べた。これらの実施形態に対し、印刷機の速度やジョブの種類に応じて、オペレータがパラメータを設定する方法、およびオペレータに処理状況を表示する方法について述べる。
【００８９】
［印刷システムのパラメータを設定するユーザインタフェース］
図９は、第一、第二の実施形態に係る印刷システムに適用可能なパラメータを設定するＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）の一例を示す。
【００９０】
予測対象のページ数の項目９０１は、ジョブを投入した際に現在処理しているページから何ページ分の予測処理時間を計算するか指定するための設定項目である。この値を大きくすると、印刷機２０９の印刷動作の停止の可能性を早期に発見することが可能となるが、予測を行うための処理時間が長くなり、特に印刷機が動作前の場合はスタートアップタイムが遅くなる。なお、ここでは予測対象の範囲としてページ数を指定できるようにしているが、これに限定するものではなく、例えばジョブ数等であってもよい。
【００９１】
保持する印刷可能ページ数の項目９０２は、第３保持プロセス２０８が印刷機２０９に供給できるページ数の目標値を指定するための設定項目である。保持する印刷可能ページ数と連続印刷可能時間は、印刷機の速度に応じた比例関係にある。値が大きいほど印刷機２０９の印刷動作の停止の可能性が低くなるが、多くの印刷データを保持のためには高速に読み書き可能な物理メモリを大量に必要とする。なお、ここでは保持する印刷可能ページ数を指定できるようにしているが、これに限定するものではなく、例えばジョブ数等であってもよい。
【００９２】
共有コア数の項目９０３は、ヘビーページ対応に必要な、１ジョブあたり処理を高速化するために使用できるコア数を指定するための設定項目である。第二の実施形態において例示した、１０コアの印刷システムで３コアが割り当てられた２つのジョブが動作する場合において、共有コアに２コアを指定すると、３〜５コアの間で割り当てが可能となる。同様に、共有コアに４コアを指定すると、３〜７コアの間で割り当てが可能となる。
【００９３】
ヘビーページ直前に高速化するページ数の割合の項目９０４は、ヘビーページの処理の前後で共有コアを使用してヘビーページ以外のページを処理の高速化を行う際に、ヘビーページの直前に処理すべきページ数の割合を指定するための設定項目である。値を大きく指定すると保持する印刷可能ページ数の項目と同様に多くの物理メモリを必要とするため、ヘビーページの処理で減少すると考えられるページ数を指定する必要がある。
【００９４】
［印刷システムの処理状況を表示するユーザインタフェース］
次に、オペレータの処理状況を表示する方法について述べる。印刷ジョブを管理するシステムにオペレータがジョブを投入すると、解析部（予測プロセス２１２）によってジョブの予測処理時間が計算される。ここで得られる数値は、ジョブに含まれるページ数、各ページの予測処理時間である。予測処理時間は、１ページを処理するときに使用するコア数を考慮した値であり、全ページを１コアで処理した時の予測処理時間の平均値に対してＮ倍の処理時間が必要なページに対してはＮコアを割り当てることで、ページの処理時間のばらつきを抑制する。
【００９５】
しかし、解析部による処理時間の予測は、ハードウェアの動作状況や並列動作している他の処理等が影響して変換処理の時間変動も生じ得ることから、処理時間の完全な予測を行うことはできない。そのため、本願発明では大まかな指標として、予測処理時間を用いる。予測で得られる数値の一例として、その処理対象データの処理に必要な時間（秒単位）が挙げられ、この数値をオペレータが理解しやすい形式に整えたユーザインタフェースに示すことで、印刷計画の策定や変更、印刷状況の把握のための参考情報とする。
【００９６】
以下では、第１処理プロセスと第２処理プロセスの処理を分割せず、ひと続きで処理を行う場合を例に取って説明をする。
【００９７】
（処理状況を表示するユーザインタフェースの動き）
図１０は、ジョブの予測処理時間と実績処理時間を示すＧＵＩ画面の一例である。縦軸は投入されたジョブの一覧１００１を示し、横軸は現在時間からの相対時間１００２を示す。中央にある現在時刻を表す中心軸１００３（相対時間０秒の位置）を基準として、右側にジョブの予測処理時間を表すひし形１００４、左側に一定ページ数毎の実績処理時間を表す矩形１００５を示す。印刷タイミングを表す直線１００６が斜めに示され、印刷機２０９を停止させないためには、これより左側に予測処理時間と実績処理時間があることが求められる。図１０のＧＵＩ画面において、印刷済みのページ１００７、印刷可能ページ１００８、および処理未完了ページ１００９の領域を、予測処理時間または実績処理時間と印刷タイミングを表す直線１００６の間に設ける。印刷済みページ１００７のページ数の表示１０１０と、印刷可能ページ１００８のページ数の表示１０１１も提示される。
【００９８】
ページによる処理時間のばらつきによって生じた印刷完了タイミングのずれから、未処理のページ１０１２が生じるため、ページ番号順に連続印刷可能時間の表示１０１３を同一画面に提示する。予測処理時間と印刷速度から、今後の連続印刷可能時間の減少が見込まれる場合は、警告表示１０１４を同一画面に提示する。さらに、本実施形態に係るＧＵＩ画面は、ジョブの取り消しや処理順序の入れ替えの指示をオペレータから受け付け可能である。この指示により、制御プロセス２１０は、ジョブに対する処理の制御を行う。
【００９９】
図１１は、ＧＵＩ画面の動きを説明するための模式図である。ここでは、実績処理時間の矩形を省略し、予測処理時間のひし形で示す。予測処理時間および実績処理時間の平行四辺形１１０１と、印刷タイミングを表す直線１１０２を描画した平面１１０３に対し、時間経過枠１１２１で切り取った領域が図１０のＧＵＩ画面を表す。時間の経過とともに印刷タイミングを表す直線１１０２と並行に時間経過枠を移動させる。その結果、例えば、時間経過枠１１２１、１１３１で切り取ったＧＵＩ画面の印刷タイミングを表す直線１１０２は同じ位置に固定された状態で表示される。一方、予測処理時間と実績処理時間については、随時更新されながら表示される。
【０１００】
ＧＵＩ画面上において、時間経過枠１１２１の現在時刻を表す中心軸１１２２と印刷タイミングを表す直線１１０２の交点１１２３は、時間経過枠１１３１の現在時刻を表す中心軸１１３２と直線１１０２の交点１１３３と同じ位置に表示される。
【０１０１】
続けて時間経過に伴って、直線１１０２と並行に時間経過枠１１３１を移動させ、時間経過枠１１４１になった場合、ＧＵＩ画面は印刷速度に合わせてスクロールするように更新されて表示される。なお、時間経過枠のサイズは一例であり、ユーザの設定等に応じて変動させても構わない。
【０１０２】
（印刷機停止の警告表示とオペレータ操作による印刷機停止の可能性の解消）
図１２は、図１０から一定時間経過後の、ジョブの予測処理時間と実績処理時間を示す例である。図１０と比べ、予測処理時間のひし形や実績処理時間の矩形が左上に移動している。一方、現在時刻を表す中心軸１２０１と印刷タイミングを表す直線１２０２の位置関係は変わっていないことが見て取れる。
【０１０３】
図１０では未処理のページ１０１２の存在によってページ順に印刷可能ページが減少し、連続印刷可能時間の表示１０１３が９０秒であった。しかし、図１２ではページ１０１２に対応するページ１２０３の処理が完了しているため、連続印刷可能時間１２０４が１２０秒の表示となっている。このように他と比べ処理時間の長いページが混在していると、連続印刷可能時間が減少するため、極端な場合は印刷機の印刷処理の停止を発生させる原因となり得る。
【０１０４】
図１３は、事前にジョブの順序を入れ換えた際の図１０と同じ時間における、ジョブの予測処理時間と実績処理時間を示すＧＵＩ画面の一例である。オペレータが、ジョブの順番を手動で入れ換えることで、予測処理時間における連続印刷可能時間の減少を防ぐことができると判断し、１３番目のジョブ１３０１と１２番目のジョブ１３０２を入れ換えた場合を表している。その結果、連続印刷可能時間が減少する可能性が解消され、図１０と図１２と比べて連続印刷可能時間減少の警告表示１０１４が無くなっていることがわかる。
【０１０５】
（第１処理部と第２処理部が独立して動く場合）
上記の実施形態では、第１処理プロセス２０３と第２処理プロセス２０６が一続きに動作することを前提とし、予測プロセス２１２は処理プロセスにおける予測処理時間をまとめて予測していた。これに限られず、処理プロセスそれぞれに対する予測処理時間の予測を行ってもよい。この場合には、ＧＵＩ画面にて表示される構成についても変更がなされる。
【０１０６】
図１４は、第１処理プロセス２０３と第２処理プロセス２０６が一続きに動作せず、それぞれの予測処理時間を独立して計算した場合の概要図である。現在時刻を表す中心軸１４０１の右側に、第１処理プロセス２０３の予測処理時間１４０２と第２処理プロセス２０６の予測処理時間１４０３がそれぞれ異なるひし形で表される。
【０１０７】
現在時刻を表す中心軸１４０１の左側に、第１処理プロセス２０３の実績処理時間１４０４と第２処理プロセス２０６の実績処理時間１４０５がそれぞれ異なる矩形で表される。第２保持プロセス２０５の保持しているページ数１４０６は、第１処理プロセス２０３の予測処理時間または実績処理時間と、第２処理プロセス２０６の予測処理時間または実績処理時間に挟まれた領域によって表される。
【０１０８】
＜その他の実施形態＞
オペレータがユーザインタフェースを介して設定するパラメータの値は、印刷システムの提供に従事するユーザが事前にＰＤＬデータの複雑さを事前に予測した事例と照らし合わせて推測し、固定値を予め組み込む方法を適用してもよい。
【０１０９】
オペレータがユーザインタフェースを介して設定するパラメータの値は、印刷システムの提供に従事するユーザが事前にＰＤＬデータの複雑さを当該印刷システムとは異なるシステムを用いて予測し、固定値を予め組み込む方法を適用してもよい。
【０１１０】
オペレータがユーザインタフェースを介して設定するパラメータの値は、印刷システムが変換処理を行いながらＰＤＬデータの複雑さと実際の処理時間を記録し、それらの関係の法則性の学習を行い、動的に設定または変更する方法を適用してもよい。
【０１１１】
オペレータがユーザインタフェースを介して設定するパラメータの値は、印刷システムの存在する場所とは異なる複数の印刷システムを管理する場所において、ネットワークを介して集中して設定や変更する方法を適用してもよい。
【０１１２】
印刷システムの動作状況を表示するユーザインタフェースは、印刷速度の変化する印刷機の速度を把握して印刷タイミングを表す直線の表示を途中で変化させ、印刷機の速度に一致させる表示方法を適用してもよい。
【０１１３】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015114776.tif 000003
【図２】
2015114776.tif 000004
【図３】
2015114776.tif 000005
【図４】
2015114776.tif 000006
【図５】
2015114776.tif 000007
【図６】
2015114776.tif 000008
【図７】
2015114776.tif 000009
【図８】
2015114776.tif 000010
【図９】
2015114776.tif 000011
【図１０】
2015114776.tif 000012
【図１１】
2015114776.tif 000013
【図１２】
2015114776.tif 000014
【図１３】
2015114776.tif 000015
【図１４】
2015114776.tif 000016