(57)【特許請求の範囲】
【請求項１】
印刷データを読み込み、読み込んだ印刷データに対して印刷データ処理を実行する第１のプロセッサと、
印刷データを読み込み、読み込んだ印刷データに対して印刷データ処理を実行する第２のプロセッサとを有し、
印刷データ処理を実行している前記第２のプロセッサは、所定量の印刷データを印刷データ処理するとウェイトが入り印刷データ処理とは異なる処理の実行が可能になり、印刷データ処理とは異なる処理の指示があった場合、印刷データ処理とは異なる処理を実行し
ウェイトが解除されると印刷データ処理を実行し、
前記第１のプロセッサは印刷データ処理のみ実行し、かつ、前記第１のプロセッサは印刷データの中で印刷データ処理が行われていない最も早いページである先頭ページの印刷データを読み込み、読み込んだ先頭ページの印刷データに対して印刷データ処理を実行し、前記第２のプロセッサは先頭ページの次のページである２ページ目の印刷データを読み込み、読み込んだ２ページ目の印刷データに対して印刷データ処理を実行することを特徴とする印刷データ処理装置。
【請求項２】
ウェイトが入るタイミングは、印刷データの所定量によって決まることを特徴とする請求項１に記載の印刷データ処理装置。
【請求項３】
ウェイトが解除されるタイミングは、ウェイトが入っていた時間によって決まることを特徴とする請求項１または２に記載の印刷データ処理装置。
【請求項４】
印刷データの１ページ分に含まれる複数のオブジェクトを印刷データ処理するために、前記第１のプロセッサおよび前記第２のプロセッサの両方のプロセッサは、夫々が印刷データ処理するべき担当のオブジェクトの印刷データ処理を実行することを特徴とする請求項１乃至３のいずれか１項に記載の印刷データ処理装置。
【請求項５】
印刷データ処理され生成されたページ単位の画像データがスプールに複数ページ以上保存されている場合、前記第１のプロセッサは印刷データを読み込み、読み込んだ印刷データに対して印刷データ処理を実行し、前記第２のプロセッサを、印刷データとは異なる処理を実行可能にしておくことを特徴とする請求項１乃至４のいずれか１項に記載の印刷データ処理装置。
【請求項６】
前記印刷データ処理とは異なる処理とは、ユーザインターフェースを表示させるための処理、または、印刷データを基に生成された画像データに対して行う画像処理であることを特徴とする請求項１乃至５のいずれか１項に記載の印刷データ処理装置。
【請求項７】
前記第２のプロセッサは、１回で印刷データ処理する印刷データ量と、ウェイトが解除され印刷データ処理を実行する時間とを調整するためのプログラムを実行することを特徴とする請求項１乃至６のいずれか１項に記載の印刷データ処理装置。
【請求項８】
第１のプロセッサは、印刷データを読み込み、読み込んだ印刷データに対して印刷データ処理を実行し、
第２のプロセッサは、印刷データを読み込み、読み込んだ印刷データに対して印刷データ処理を実行し、
印刷データ処理を実行している前記第２のプロセッサは、所定量の印刷データを印刷データ処理するとウェイトが入り印刷データ処理とは異なる処理の実行が可能になり、印刷データ処理とは異なる処理の指示があった場合には、印刷データ処理とは異なる処理を実行し、ウェイトが解除されると印刷データ処理を実行し、
前記第１のプロセッサは印刷データ処理のみ実行し、かつ、前記第１のプロセッサは印刷データの中で印刷データ処理が行われていない最も早いページである先頭ページの印刷データを読み込み、読み込んだ先頭ページの印刷データに対して印刷データ処理を実行し、前記第２のプロセッサは先頭ページの次のページである２ページ目の印刷データを読み込み、読み込んだ２ページ目の印刷データに対して印刷データ処理を実行することを特徴とする印刷データ処理方法。
【請求項９】
第１のプロセッサに、印刷データを読み込ませ、読み込ませた印刷データに対して印刷データ処理を実行させ、
第２のプロセッサに、印刷データを読み込ませ、読み込ませた印刷データに対して印刷データ処理を実行させ、
印刷データ処理を実行している前記第２のプロセッサが、印刷データ処理を終えるとウェイトが入り印刷データ処理とは異なる処理の実行が可能になり、ウェイトが解除された前記第２のプロセッサに印刷データ処理を実行させ、
前記第１のプロセッサに印刷データ処理のみ実行させ、かつ、前記第１のプロセッサに印刷データの中で印刷データ処理が行われていない最も早いページである先頭ページの印刷データを読み込ませ、読み込んだ先頭ページの印刷データに対して印刷データ処理を実行させ、前記第２のプロセッサに先頭ページの次のページである２ページ目の印刷データを読み込ませ、読み込んだ２ページ目の印刷データに対して印刷データ処理を実行させることを特徴とする印刷データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサを搭載した印刷データ処理装置におけるプリンティング処理に関連するものである。
【背景技術】
【０００２】
消費電力や動作温度を抑えるためにプロセッサの動作クロックを上昇させるよりも、低クロックのマルチプロセッサを用いて並列化し処理速度を上げる方法が取られる。近年では、画像形成装置（例えば、複写機やプリンタ等）にマルチプロセッサを搭載し、コピー及びプリント等のプリンティング処理をよりストレス無く処理させるようになってきている。
【０００３】
特許文献１には、プリンティング処理が可能な画像形成装置において、マルチプロセッサを用いて印刷データを並列処理することによりプリンティングの処理を高速化する方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１５２６２３
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、マルチプロセッサを用いた画像形成装置において、プリンティング処理の高速化を行うとプリンティング処理がマルチプロセッサを占有してしまう可能性がある。
【０００６】
画像形成装置のマルチプロセッサを占有したプリンティング処理は、次のような状況を誘発することがある。その状況とは、例えば、プリンティング中の画像形成装置のユーザインターフェース動作が不安定になってユーザからのプリンティングのキャンセル指示を受け付けることができない、または、キャンセル制御が遅くなると言った状況である。
【０００７】
そこで、本発明ではマルチプロセッサを搭載した画像形成装置において、マルチプロセッサを用いてプリンティング処理の並列処理を行わせつつ、プリンティングとは異なる処理も実行させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一実施形態に係る装置は、印刷データを読み込み、読み込んだ印刷データに対して印刷データ処理を実行する第１のプロセッサと、印刷データを読み込み、読み込んだ印刷データに対して印刷データ処理を実行する第２のプロセッサとを有し、印刷データ処理を実行している前記第２のプロセッサは、所定量の印刷データを印刷データ処理するとウェイトが入り印刷データ処理とは異なる処理の実行が可能になり、印刷データ処理とは異なる処理の指示があった場合、印刷データ処理とは異なる処理を実行し、ウェイトが解除されると印刷データ処理を実行し、前記第１のプロセッサは印刷データ処理のみ実行し、かつ、前記第１のプロセッサは印刷データの中で印刷データ処理が行われていない最も早いページである先頭ページの印刷データを読み込み、読み込んだ先頭ページの印刷データに対して印刷データ処理を実行し、前記第２のプロセッサは先頭ページの次のページである２ページ目の印刷データを読み込み、読み込んだ２ページ目の印刷データに対して印刷データ処理を実行することを特徴とする。
【発明の効果】
【０００９】
ユーザインターフェースや画像処理等の処理の阻害を軽減させつつ、プリンティング処理をより高速に行うことができる。
【図面の簡単な説明】
【００１０】
【図１】ページを並列処理する画像形成装置の全体フロー図。
【図２】ページを並列処理する画像形成装置のハード構成図。
【図３】マルチプロセッサによるＰＤＬ処理プログラムのウェイト決定の一例を示す図。
【図４】ＰＤＬ処理プログラムがプロセッサ間で移動する様子を現す図。
【図５】プログラムが動作するためのリソース関係図。
【図６】シングルプロセッサによるＰＤＬ処理プログラムのウェイト決定の一例を示す図。
【図７】画像形成装置のＵＩ画面図。
【図８】ウェイトコントロールプログラムのフローチャート。
【図９】オブジェクトを並列処理する画像形成装置の全体フロー図
【図１０】オブジェクト並列時の各プロセッサのタイムチャート。
【図１１】夫々のウェイトが入ったプロセッサの処理状況図。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【実施例１】
【００１２】
図１および図２は印刷データ処理装置である画像形成装置において行われるプリンティング処理全体の流れを説明する。なお、プリンティング処理とは、受信したＰＤＬや汎用文書（例えば、ＰＤＦ）を基に画像形成を行い印刷または一時保存する一連の処理のことである。しかし、プリンティング処理に一部の処理が存在しなくとも良い。例えば、受信したＰＤＬや汎用文書を基に画像形成を行うまでの過程もプリンティング処理と呼べるが、本発明においては、印刷データ処理と呼称する。
【００１３】
図１に示すアプリケーションプログラム以外のプログラムは、全て図２のＲＯＭ２０６に格納されており、画像形成装置が起動するときにＲＡＭ２０７上に展開され、プロセッサ１（２０３）またはプロセッサ２（２０４）によって実行される。また、プロセッサ１およびプロセッサ２以外の第３のプロセッサに実行させても良い。入力インターフェースプログラム１０１は、外部メモリ（ＵＳＢメモリ等）やホストＰＣからネットワークを通じてＰＤＬデータや電子文書（以下、印刷データと呼称する。）が送信されてきた場合、印刷データを印刷データスプール１１０（ＲＡＭ２０７またはＨＤＤ２０８内の領域）に格納する。
【００１４】
印刷データの送信は、外部インターフェースハード２０１によって検知され、外部インターフェースプログラム１０１へ通知される。また、入力インターフェースプログラム１０１は、ＵＩハード２０２によってＨＤＤ２０８に保存された印刷データの印刷を指示された場合、それらの印刷データを印刷データスプール１１０に格納する。１つの印刷データには複数のページが含まれている。なお、ＵＩはＵｓｅｒ  Ｉｎｔｅｒｆａｃｅの略語である。
【００１５】
入力インターフェースプログラム１０１を実行したプロセッサは、上記格納処理とともにウェイトコントロールプログラム１０４に印刷データが送られてきたことを通知する。ウェイトコントロールプログラム１０４を実行したプロセッサは、入力インターフェースプログラム１０１から印刷データが送られてきたことを確認する。ウェイトコントロールプログラム１０４を実行したプロセッサは、ＵＩプログラム１０２、アプリケーションプログラム１０３、画像スプール１０８、ＰＤＬ処理部１０５の状態を判断する。
【００１６】
ウェイトコントロールプログラム１０４を実行したプロセッサは、上述の判断の結果に応じて、ＵＩプログラム１０２、アプリケーションプログラム１０３等の動作を妨げないようにする。具体的には、ＰＤＬ処理部１０５に含まれる各プログラムを最適な状態でマルチプロセッサ（２０３および２０４）上で起動させる。なお、プロセッサ２０３を第１のプロセッサ、プロセッサ２０４を第２のプロセッサとする。
【００１７】
本発明において、画像形成装置はプロセッサ１（２０３）とプロセッサ２（２０４）との２つのプロセッサを搭載するＨ／Ｗ構成を持つ。そのため、ウェイトコントロールプログラム１０４は、ＰＤＬデータ入力プログラム１０６およびＰＤＬ処理プログラム（印刷データ処理プログラム）１０７をそれぞれ２つ同時に起動させることができる。
【００１８】
ＵＩハード２０２は、操作パネルと操作画面とで構成され、ユーザは操作画面を見ながら操作パネルを用いて所定の入力を行う。ＵＩハード２０２からのユーザの入力はＵＩプログラム１０２に伝えられ、操作内容の解釈および解釈結果から求められる必要な処理が実行される。
【００１９】
アプリケーションプログラム１０３は、画像形成装置に最初から搭載されているプログラムにユーザが独自のプログラムを追加するものである。例えば、高画質化のために色変換プログラムやトラッピングプログラムなどを追加出来る。アプリケーションプログラム１０３は、ユーザが作成し、ネットワークや外部メモリ等から画像形成装置のＨＤＤ２０６に保存する。ＨＤＤ２０６に保存されたアプリケーションプログラム１０３は、ＨＤＤ２０６に保存された直後や次の起動時にＲＡＭ２０７に展開され実行される。
【００２０】
ＰＤＬデータ入力プログラム１０６を実行したプロセッサは、印刷データスプール１１０から印刷データを読み込みＰＤＬ処理プログラム１０７を実行するプロセッサに渡す。ＰＤＬデータ入力プログラム１０６は、一回の読み込みできるデータ量の上限を持っており、１ページのＰＤＬデータを読み込むためには複数回の読み込みを必要とする。ＰＤＬデータ入力プログラム１０６の一回の読み込みの開始時または終了時にウェイトを入れることによりＰＤＬ処理プログラム１０７の処理速度を調整する。ウェイトの長さはウェイト時間と一回に読み込めるデータ量の上限によって調整できる。
【００２１】
ウェイト時間が長く一回に読み込めるデータ量の上限が低ければ、プロセッサは頻繁にＰＤＬ処理プログラム１０７が停止する。そのため、ＵＩプログラム１０２やアプリケーションプログラム１０３は動作し易くなるが、ＰＤＬ処理プログラム１０７の動作は低速になる。逆にウェイト無しや、ウェイトが短く一回に読み込めるデータ量の上限が高ければ、プロセッサはＰＤＬ処理プログラム１０７を頻繁に動作する。そのため、ＵＩプログラム１０２やアプリケーションプログラム１０３は動作し難く、ＰＤＬ処理プログラム１０７の動作は高速になる。
【００２２】
ＰＤＬ処理プログラム１０７は、印刷データから１ページ分を解釈し、画像イメージを形成し、画像イメージを画像スプール１０８（ＲＡＭ２０７またはＨＤＤ２０８の領域）に格納する。画像スプール１０８に格納された画像イメージは、プリンタエンジン１１１（２０９）に送られ印刷される。セキュアプリント等が指定されている場合、印刷データ処理され画像形成された画像データは、画像スプール１０８から即時にプリンタエンジン１１１（２０９）に送られない。画像データは、ＵＩプログラム１０２からの指示を受けてから印刷される。
【００２３】
図３から図６を用いてウェイトコントロールプログラム１０４が、ＰＤＬデータ入力プログラム１０６とＰＤＬ処理プログラム１０７をどのように起動するかについて説明する。起動は、ＵＩプログラム１０２、アプリケーションプログラム１０３、画像スプール１０８、ＰＤＬ処理部１０５の状態を基にしている。
【００２４】
本発明において、ウェイトコントロールプログラム１０４、外部インターフェースプログラム１０１、プリンタインターフェースプログラム１０９は、その他のプログラムに対して処理が軽微であるとし、プロセッサ２（２０４）で実行されているものとする。なお、プロセッサ２（２０４）以外のプロセッサに実行させても良いが、プロセッサ１に実行させた場合、プロセッサ１のＰＤＬ処理が低速になる。図３は、ＰＤＬデータ入力プログラム１０６とＰＤＬ処理プログラム１０７をマルチプロセッサで（２０３、２０４）実際にページ並列で動作させる方法について示している。
【００２５】
ここで、ＰＤＬデータ入力プログラム１０６を実行したプロセッサがどのように動作するかについて説明する。始めに、ＰＤＬデータ入力プログラムについて説明する。ＰＤＬデータ入力プログラムには幾つかの種類があり、例えば、図１に示すＰＤＬデータ入力プログラム１０６には、ウェイトなし、ウェイト小、ウェイト大という３種類のＰＤＬデータ入力プログラムが存在する。この３種類のＰＤＬデータ入力プログラムをプロセッサが実行すれば、プロセッサがＰＤＬ処理とは異なる処理を実行可能になる時間と、プロセッサが一回に読み込む印刷データ量とを調整することができる。これについて詳細に説明する。
【００２６】
始めに、プロセッサがＰＤＬ処理を実行しない時間について説明する。プロセッサが実行しているＰＤＬ処理プログラムを停止させる方法としてウェイトを入れるという方法がある。ウェイトが入ったプロセッサは、ＰＤＬ処理から開放されるのでＰＤＬ処理とは異なる処理にリソースを割り当てることができる。そして、ＰＤＬ処理から開放される時間、すなわち、ウェイト時間を延ばせばその分だけＰＤＬ処理とは異なる処理を実行可能になる時間が長くなる。図１に示す３種類のＰＤＬデータ入力プログラムは、このＰＤＬ処理とは異なる処理を実行可能になる時間が夫々異なるのである。具体的に、ウェイトなしは、プロセッサにウェイトが入らないのでＰＤＬ処理以外の処理を実行しない。よって、ウェイトなしは、ＰＤＬ処理から開放されるまで印刷データ処理とは異なる処理を実行できない。また、ウェイト小は、ウェイト大と比較してＰＤＬ処理から開放されている時間は少ない。よって、ウェイト小は、ウェイト大と比較してＰＤＬ処理とは異なる処理が実行可能になる時間が少ない。以上から、ＰＤＬ処理とは異なる処理を実行可能な時間を不等式で表すと、ウェイト大＞ウェイト小＞ウェイトなしという関係が成り立つ。
【００２７】
次に、プロセッサが一回で印刷データ処理する印刷データ量について説明する。図１に示す３種類のＰＤＬデータ入力プログラムは、一回で印刷データ処理する印刷データ量が夫々異なる。ウェイト小は、ウェイトなしと比較して一回で印刷データ処理する印刷データ量が少ない。また、ウェイト大は、ウェイト小と比較して一回で印刷データ処理する印刷データ量が少ない。夫々のウェイトが入ったプロセッサが一回で印刷データ処理する印刷データ量の関係を不等式で表すと、ウェイトなし＞ウェイト小＞ウェイト大という関係が成り立つ。
【００２８】
次に、夫々のウェイトが入ったプロセッサの動作について図１１を参照しながら説明する。図１１は、図１に示す３種類のＰＤＬデータ入力プログラムを実行したプロセッサが、印刷データ処理と、印刷データ処理とは異なる処理との両方の処理をどのように実行したかを示す一例である。なお、図１１は、１ｍｓｅｃで１ＭｂｙｔｅのＰＤＬデータ量が処理されているとする。
【００２９】
図１１のウェイトなしのＰＤＬデータ入力プログラムを実行したプロセッサは、２００［ｍｓｅｃ］かけて２００Ｍｂｙｔｅの印刷データ量を印刷データ処理しており、印刷データ処理とは異なる処理を行っていない。図１１のウェイト小のＰＤＬデータ入力プログラムを実行したプロセッサは、一回の印刷データ処理で３０Ｍｂｙｔｅの印刷データ量を印刷データ処理している。よって、ウェイト小のＰＤＬデータ入力プログラムを実行したプロセッサは、２００［ｍｓｅｃ］の内の１２０［ｍｓｅｃ］をかけて合計１２０Ｍｂｙｔｅの印刷データ量を印刷データ処理している。また、ウェイト小のＰＤＬデータ入力プログラムを実行したプロセッサは、残りの８０［ｍｓｅｃ］で印刷データ処理とは異なる処理をしている。図１１のウェイト大のＰＤＬデータ入力プログラムを実行したプロセッサは、一回の印刷データ処理で１０Ｍｂｙｔｅの印刷データ量を印刷データ処理している。よって、ウェイト大のＰＤＬデータ入力プログラムを実行したプロセッサは、２００［ｍｓｅｃ］の内の４０［ｍｓｅｃ］をかけて合計４０Ｍｂｙｔｅの印刷データ量を印刷データ処理している。また、ウェイト大のＰＤＬデータ入力プログラムを実行したプロセッサは、残りの１６０［ｍｓｅｃ］で印刷データ処理とは異なる処理を実行している。
【００３０】
このように、ウェイトを入れることでプロセッサが一回にＰＤＬ処理する印刷データ量を調整する。印刷データ量を調整することで、プロセッサが印刷データ処理とは異なる処理を実行可能にする時間を増減させることができる。また、プロセッサが印刷データ処理を終えた後、次に印刷データ処理を行うタイミングを調整することで、印刷データ処理とは異なる処理が実行可能になる時間を増減させることができる。
【００３１】
なお、印刷データ処理を終え、印刷データ処理とは異なる処理を実行可能になるタイミングを第１のタイミング、第１のタイミングの後のウェイトが解除されてＰＤＬ処理を実行するタイミングを第２のタイミングと呼称する。例えば、図１１のウェイト小の第１のタイミングは３０Ｍｂｙｔｅの印刷データ量をＰＤＬ処理し終えたタイミングのことであり、ウェイト小の第２のタイミングは第１のタイミングの後から２０［ｍｓｅｃ］経ったタイミングのことを指す。
【００３２】
図３（ａ）は、ＵＩプログラム３００がＵＩハード２０２からの指示待ち状態で、アプリケーションプログラムは動作していない状態を想定している。この場合、ウェイトコントロールプログラム３０７は、先頭のページ（印刷データに含まれる画像データ生成済みで無いページ中でページ番号が最も早いページ）をＰＤＬ処理プログラム１（３０３）に担当させて動作させる。なぜなら、先頭ページの印刷データ処理は高速に処理しないとプリンタインターフェース１０９の処理が滞ってしまい印刷を停止させてしまうからである。そのため、ウェイトコントロールプログラム３０７は、ＰＤＬ処理プログラム１（３０３）を高速に動作させる必要があるので、ＰＤＬデータ入力プログラム（ウェイトなし）３０１と組み合わせて、プロセッサ１（３０５）で動作させる。
【００３３】
２ページ目は先頭ページの処理の間にある程度の処理が進んでいれば良いため、高速に画像データの生成をする必要はない。ウェイトコントロールプログラム３０７は、ＰＤＬ処理プログラム２（３０４）に２ページ目を担当させて、ＵＩプログラム３００が即座に動作開始できるようにする。そのために、ＰＤＬデータ入力プログラム（ウェイト小）３０１と組み合わせてプロセッサ２（３０６）で動作させる。ウェイトコントロールプログラム３０７は、ＵＩプログラム３００をＵＩハード２０２からの指示のみを待つ状態でプロセッサ２（３０６）上で動作させる。
【００３４】
このように、ＵＩプログラム３００が何時でも動作できるようにするのには理由がある。それは、ユーザの中には次の様な状況で不満を感じたり、不安を抱くユーザもいるからである。ユーザがＵＩハード２０２を操作した際、ＵＩプログラム３００が即座に動作せずにＵＩハード２０２の操作画面がフリーズしてしまった。ユーザは早く次の仕事を画像形成装置に実行させたいのに、操作画面はフリーズしており操作できない。この状況に対してユーザは不満を感じるであろう。また、フリーズ時間が長期化し、画像形成装置が故障したとユーザが勘違いしてしまった。ユーザはこの状況に不安を抱くであろう。このような問題を解決するためにも、ＵＩプログラムを実行可能な状態にすることは重要なのである。特に、この状況が顕著に現れるのは、タスク優先順を持たない単純なタイムスレッドで処理するオペレーティングシステムを用いてる画像形成装置である。
【００３５】
図３（ｂ）は、ＵＩハード２０２をユーザが実際に操作中でＵＩプログラム３１２が動作しており、アプリケーションプログラムは動作していない状態を想定している。ウェイトコントロールプログラム３１７は先頭のページ（印刷データに含まれるページで画像データ生成済みで無いページ中でページ番号が最も早いページ）をＰＤＬ処理プログラム１（３１３）で動作させる。
【００３６】
ウェイトコントロールプログラム３１７は、ＰＤＬ処理プログラム１（３１３）を高速に動作させる必要があるので、ＰＤＬデータ入力プログラム（ウェイトなし）３１０と組わせて、プロセッサ１（３１５）で動作させる。ユーザがＵＩハード２０２を操作中なので、ＵＩプログラム３１２は頻繁に動作することになるため、２ページ目のＰＤＬ処理プログラムはウェイトを多くしてＵＩプログラム３１２は高速に処理できるようにする必要がある。ウェイトコントロールプログラム３１７は、ＰＤＬ処理プログラム２（３１４）をＰＤＬデータ入力プログラム（ウェイト大）３１１と組わせてプロセッサ２（３１６）で動作させる。
【００３７】
図３（ｃ）は、ＵＩハード２０２をユーザが実際に操作中でＵＩプログラム３２２が動作しており、アプリケーションプログラム３２３も動作している状態を想定している。アプリケーションプログラム３２３は、上述したように画像データの色変換やトラッピング等の画像処理を行うためＵＩプログラム３２２よりも処理が遅い。そのため、ＵＩプログラム３２２よりも多くのプロセッサ処理時間を割り当てる必要がある。
【００３８】
ウェイトコントロールプログラム３２８は、先頭のページをＰＤＬ処理プログラム１（３２４）で動作させる。ウェイトコントロールプログラム３２８は、ＰＤＬ処理プログラム１（３２４）を高速に動作させる必要がある。しかし、ＵＩプログラム３２２を高速に動作させたいので、ＰＤＬデータ入力プログラム（ウェイト小）３２０と組わせてプロセッサ１（３２６）で動作させる。ウェイトコントロールプログラム３２８は、ＰＤＬ処理プログラム２（３２５）をＰＤＬデータ入力プログラム（ウェイト大）３２１と組わせてプロセッサ２（３２７）で動作させる。
【００３９】
以上のように、ウェイトコントロール１０４が画像形成装置内で動作しているプログラムの状態に応じてＰＤＬ処理プログラム１０７の動作速度をコントロールして動作させる。これにより、マルチプロセッサ（２０３、２０４）によるＰＤＬ処理プログラム１０７をより高速に動作させることと、ＵＩプログラム１０２やアプリケーションプログラム１０３の動作を阻害しないように動作させることが出来る。
【００４０】
図３を用いた説明において、先頭ページを処理しているＰＤＬ処理プログラム１０７が終了した場合、２ページ目を処理しているＰＤＬ処理プログラム１０７は先頭ページとなる。２ページ目から先頭ページになったページを処理しているＰＤＬ処理プログラム１０７は高速に処理するようにしたい。そのため図４で示すようにプロセッサ１で先頭ページを処理しているＰＤＬ処理プログラム４０１の処理が終了したときに、プロセッサ２で２ページ目を処理しているＰＤＬ処理プログラム４０２をプロセッサ１で処理するように変更する。また、画像データの生成が済んでないページの中で先頭のページ４０３をプロセッサ２で処理するように変更する。この時にプロセッサ間でプログラムの動作を受け渡す必要がある。
【００４１】
図５（ａ）のようにＰＤＬ処理プログラム１０７を動作させるために必要なスタックやワークメモリ等のリソースを各プロセッサに依存して割り当てておくとプロセッサ間の移動が出来ない。本発明を適用するには図５（ｂ）のようにＰＤＬ処理プログラム１０７ごとに動作させるために必要なスタックやワークメモリ等のリソースを管理しておく必要がある。
【００４２】
なお、先頭ページの印刷データ処理を終えた第１のプロセッサに、２ページ目の印刷データの印刷データ処理を実行させることも考えられる。例えば、第１のプロセッサが１ページ目を印刷データ処理し終え、第２のプロセッサが２ページ目を印刷データ処理しているとする。この場合、実施例１では２ページ目を第１のプロセッサに処理させたが、２ページ目の処理を第２のプロセッサに実行させて、第１のプロセッサは３ページ目を処理させることになる。しかし、先頭ページとなった２ページ目を処理している第２のプロセッサは、印刷データ処理とは異なる処理も実行しているので、全体のプリンティング処理は遅くなる。しかし、この効果を望まないのであればこのような構成にしても良い。
【００４３】
図６は、ＰＤＬデータ入力プログラム１０６とＰＤＬ処理プログラム１０７を例外としてマルチプロセッサで（２０３、２０４）ページ並列で動作させない場合について示している。図６（ａ）は、複数のＵＩプログラム６０２やアプリケーションプログラム６０３が動作している状態を示している。この状態において、１つのプロセッサだけでは、印刷データ処理とは異なる処理に対して十分な速度を確保した処理ができないとする。この場合は、先頭ページのみをＰＤＬ処理プログラム６０１で処理するようにしても良い。なお、十分な速度を確保できるかできないを判断する方法としては、１つのプロセッサで印刷データ処理とは異なる処理を実行した場合のプロセッサのリソース状況を確認すれば良い。例えば、半分以上使用しているのであれば、ＵＩ画面を表示できないかもしれないと判断し、シングルプロセッサでＰＤＬ処理を行うという方法が考えられる。
【００４４】
図６（ｂ）のように画像スプールに画像データが複数ページ分格納してある場合、その後の画像データが高速に作られる必要が無いので、先頭ページのみをＰＤＬ処理プログラム３２０で処理するようにしても良い。
【００４５】
図７をウェイトコントロールプログラム１０４の動作設定を行うＵＩ画面について説明する。ＵＩ画面はＵＩハード２０２上の画面である。７０１示す動的設定の場合には、図３から図６を用いて説明してきたように、ウェイトコントロールプログラム１０４が画像形成装置内のプログラムの動作状況を判断し、ＰＤＬ処理プログラム１０７の動作速度を動的に設定する。７０２はウェイトコントロールモジュール１０４の動的な設定によらず、ユーザが固定の動作速度を設定したいときに用いる。これはプリンティングを多く使うユーザは、プリンティング処理を常に高速に行いたいし、コピーを多く使うユーザはＵＩ操作を快適に行いたいという要望があることが想定されるためである。
【００４６】
本発明では先頭ページを高速に行い、２ページ目以降を低速で行うことによりＰＤＬ処理プログラムを高速に動作させながら、その他のプログラムの動作を阻害しないことを特徴としている。そのため７０３に示すようにＮページ目以降の速度を設定するようなＵＩ画面が好適である。また、７０５のようなツールバーによる設定ならば、ツールバーの最小に近い指定がされた場合はページ並列処理せずにＰＤＬプログラムは１つのプロセッサで動作する。
【００４７】
さらにツールバーの中間が指定された場合、ＰＤＬプログラムは、先頭ページをプロセッサ１でウェイト無しで処理、プロセッサ２で２ページ目をウェイト大で処理する。さらにツールバーの最大に近い設定がされた場合、ＰＤＬプログラムは先頭ページをプロセッサ１でウェイト無しで処理、プロセッサ２で２ページ目をウェイト小で処理するというような設定を行う。
【００４８】
図８を用いてウェイトコントロールプログラム１０４の詳細な処理の流れについて説明する。図８のフローチャートに記載された処理は全てウェイトコントロールプログラム１０４の処理であり、画像形成装置の起動時にＲＯＭ２０６からＲＡＭ２０７に展開されプロセッサ２（２０４）で実行される。所定のイベントがウェイトコントロールプログラム１０４に送られてくるまで待つ（Ｓ８０１）。所定のイベントとは、外部インターフェースプログラム１０１から新たな印刷データが送られてきた場合、ＰＤＬ処理プログラム１０７の１ページの処理が終了した場合、ＵＩ操作がされた場合、アプリケーションプログラムが新たに起動した場合等である。
【００４９】
ウェイトコントロールモジュール１０４は、いずれかのＰＤＬ処理プログラム１０７のページ処理の終了であるかを判断する（Ｓ８０２）。いずれかのＰＤＬ処理プログラム１０７のページ処理の終了である場合、ウェイトコントロールモジュール１０４は終了したページが先頭のページであるか判断する（Ｓ８０３）。先頭ページであった場合、ウェイトコントロールモジュール１０４は、動作中のＰＤＬ処理プログラム１０７を先頭ページの処理に設定し（Ｓ８０４）、画像データ生成が終わって無い印刷データに含まれるページを２ページ目に設定する（Ｓ８０６）。ＰＤＬ処理プログラム１０７のページ処理の終了が先頭ページで無い場合は、画像データ生成が終わって無い印刷データに含まれるページを２ページ目に設定することのみを行う（Ｓ８０６）。
【００５０】
次にユーザがＵＩ画面を利用して設定した値を取得し、ウェイトコントロールモジュール１０４がユーザの設定した固定値でウェイトを決めるべきか、画像形成装置内のプログラムの動作状態等から動的に決定するかを判断する（Ｓ８０６）。ＵＩ画面でユーザが設定した値はＲＡＭ２０７に保存されているものとし、ウェイトコントロールプログラム１０４はＲＡＭ２０７  から値を取り出すことにより設定を取得する。固定であった場合、ウェイトコントロールモジュール１０４は、ユーザ指定に応じた各ＰＤＬ処理プログラム１０７のウェイトを設定する（Ｓ８０７）。動的であった場合は、Ｓ８０７  からＳ８１３に示すフローのように画像形成装置内のプログラムの動作状態等から、ウェイトコントロールプログラムが動的に各ＰＤＬ処理プログラム１０７のウェイトを決定する。
【００５１】
画像スプール１０８にページ単位の画像データが複数ページ以上保存されている、または、印刷データに含まれているページが１ページで合った場合（Ｓ８０７）は次のような動作を行う。ウェイトコントロールプログラム１０４は、ページ並列処理を行わずに１つのプロセッサでウェイト無しに設定する（Ｓ８０８）。ＵＩプログラム１０２がＵＩハード２０２からの入力待ちで、アプリケーションプログラム１０３が動作して無い場合（Ｓ８０９）、ウェイトコントロールプログラム１０４は先頭ページをウェイト無し、２ページをウェイト小で動作するように設定する（Ｓ８１０）。ＵＩプログラム１０２のみ動作している時は（Ｓ８１１）、ウェイトコントロールプログラム１０４は先頭ページをウェイト無し、２ページ目をウェイト大で動作するように設定する（Ｓ８１２）。
【００５２】
ＵＩプログラム１０２とアプリケーションプログラム１０３が動作している場合、ウェイトコントロールプログラム１０４は、先頭ページをウェイト小、２ページ目をウェイト大で動作するように設定する（Ｓ８１３）。ここまでの処理でＰＤＬ処理プログラム１０７のウェイトが決定している。よって、ウェイトコントロールモジュールは、各ＰＤＬ処理プログラム１０７の一時停止（Ｓ８１４）し、必要があればプログラムのプロセッサ間移動を行い（Ｓ８１５）、各プログラムを再起動する（Ｓ８１６）。
【実施例２】
【００５３】
実施例１では印刷データに含まれる複数のページを、マルチプロセッサ上でページ並列で処理する方法を説明した。実施例２では、ページ内に含まれる複数のオブジェクトをマルチプロセッサで並列に処理するオブジェクト並列への本発明の適用方法について説明する。ここでオブジェクトとは、文字やグラフィックスやイメージデータのことである。
【００５４】
オブジェクトを並列処理する場合、図９に示すＰＤＬ処理プログラム９０１は、オブジェクト抽出プログラム９０２と画像データ生成プログラム９０３で構成される。オブジェクト抽出プログラム９０２と画像データ生成プログラム９０３はＲＯＭ１００１上に格納されており、起動時にＲＡＭ１００６に展開され、各プロセッサ（１００２、１００３、１００４、１００５）で実行される。プロセッサ１（１００２）で動作するオブジェクト抽出プログラム９０２は、印刷データのページ内に含まれるオブジェクト（９０４，９０５，９０６）を抽出しＲＡＭ（１０１０）に格納する。
【００５５】
抽出されたオブジェクトは、並列に処理しても画像データの間違いが発生しないように、９０４、９０５、９０６のオブジェクト群に分割する。画像データの間違いが発生するのはオブジェクトの重なりに依存する、そのためオブジェクト抽出プログラム９０２はオブジェクトを画像形成座標のＹ軸かＺ軸にソートしてから分割する。夫々のオブジェクト群は、プロセッサ２（１００３）、プロセッサ３（１００４）、プロセッサ４（１００５）で印刷データ処理される。夫々のオブジェクト群は、画像データ生成プログラム９０３によって画像形成され画像スプールに画像データとして格納され、プリンタインターフェースを通して印刷される。
【００５６】
ウェイトコントロールプログラム９０４は、オブジェクト群に分割するときにオブジェクト数に差をつけて画像データ生成プログラム９０３の処理をプロセッサに実行させる。オブジェクト数が少なく割り当てられた画像データ生成プログラム９０３は印刷データ処理が減るため、他の画像データ生成プログラム９０３よりも早く処理を終了しウェイト状態になる。このウェイト状態になることによりＵＩプログラムやアプリケーションプログラムが動作可能となる。ウェイトコントロールプログラム９０４は実施例１と同じように画像形成装置内のプログラムの動作状態等から、オブジェクト群に分割するときのオブジェクト数を調整することにより各画像データ生成プログラムのウェイトをコントロールする。
【００５７】
以上の処理によりオブジェクト並列処理時にも本実施例を適用できる。図１１のように１１０１のプロセッサ１でオブジェクト抽出プログラム９０２を動作させ、１１０２、１１０３、１１０４で画像データ生成プログラム９０３を動作させる。また１１０４ではＵＩプログラムやアプリケーションプログラムを動作させたい場合は、画像データ生成プログラム９０３をウェイトを入れて動作させるため少ないオブジェクト数を処理させる。
【００５８】
図１０に示すタイムチャートで見ると、１１０６と１１０７の区間は画像データ生成処理９０３が動作していないためＵＩプログラムはアプリケーションプログラムが動作可能となる。１１０８のページ処理全体に対してオブジェクト抽出を複数回に分けて実行するのは１１０６と１１０７のようにウェイトを頻繁に入れないと、ＵＩプログラムが即時に動作できなくなってしまうためである。
【００５９】
実施例１でも記載したようにユーザがＵＩハードを操作してから、ＵＩプログラムが反応するまでに時間がかかるとユーザが快適に利用できなくなってしまうため、オブジェクト抽出を複数回に分けてウェイトを頻繁に入れるようにする。そのことから１１０５の区間はすでにプロセッサ３の画像データ生成プログラム９０３は動作可能だが、プロセッサ２やプロセッサ３の画像データ生成プログラム９０３の動作完了まで待つようにする方が良い。
【００６０】
本発明の各実施例では、ウェイト小のＰＤＬデータ入力プログラムにおける１回で処理される印刷データ量が、ウェイト大のＰＤＬデータ入力プログラムにおける１回で処理される印刷データ量よりも多かった。また、ウェイト小のＰＤＬデータ入力プログラムにおけるＰＤＬ処理から開放されている時間が、ウェイト大のＰＤＬデータ入力プログラムにおけるＰＤＬ処理から開放されている時間よりも少なかった。すなわち、本発明において、ウェイト小は印刷データ処理とは異なる処理にかける様に、どちらの条件もウェイト大と比較して印刷データ処理の時間を省く構成になっていた。しかし、どちらか片方の条件だけが成立していても良い。但し、全ての処理が終了した後、ウェイト小のＰＤＬデータ入力プログラムを実行したプロセッサの方が、ウェイト大のＰＤＬデータ入力プログラムを実行したプロセッサよりもＰＤＬ処理に多く時間を費やしていなくてはいけない。
【００６１】
また、本発明の各実施例では、ＰＤＬデータ入力プログラム１０６とＰＤＬ処理プログラム１０７を別々のプログラムとしたが、ＰＤＬデータ入力プログラム１０６を予め含むＰＤＬ処理プログラム１０７を持つような構成でも良い。
【００６２】
また、本発明の各実施例では、画像形成装置のＣＰＵの個数を２個としたが、本発明はＣＰＵ個数が１つ以上であれば適用可能である。また、コアプロセッサを複数搭載するＣＰＵであっても良い。その場合、各コアプロセッサが１スレッドを処理する。なお、コアプロセッサとは、プロセッサの中にある命令発行器や演算器などを組み合わせて動作する集合体のことである。
【符号の説明】
【００６３】
１０２  ＵＩプログラム
１０３  アプリケーションプログラム
１０６  入力プログラム
１０７  ＰＤＬ処理プログラム
２０３  プロセッサ１
２０４  プロセッサ２
２０６  ＲＯＭ
【図１】
0005430319.tif 000002
【図２】
0005430319.tif 000003
【図３】
0005430319.tif 000004
【図４】
0005430319.tif 000005
【図５】
0005430319.tif 000006
【図６】
0005430319.tif 000007
【図７】
0005430319.tif 000008
【図８】
0005430319.tif 000009
【図９】
0005430319.tif 000010
【図１０】
0005430319.tif 000011
【図１１】
0005430319.tif 000012