(57)【要約】【課題】  印刷システムに対するプリントジョブの制御及びデータ流れを促進して、どんな単一のジョブについても格納ディスクへの多数回のアクセスを不要にする。【解決手段】  印刷システムは、プリンタと、プリントジョブの一部をプリンタ依存フォーマットに処理するために配置された複数の処理ノードと、プリントジョブを選択的に寸法決めされたチャンクにスプーリングし、チャンクを処理ノードにより、プリンタ依存フォーマットに並行処理するためにチャンクをノードの選択されたものに割当てる処理マネージャとを備える。チャンクは、ページ処理効率を高めるための所定の分割計数（ファクター）により、少なくとも１つのページからプリントジョブの全体の大きさにまで選択的に寸法決めされる。【選択図】      図１
2004310763.tif 000002
【特許請求の範囲】
【請求項１】
プリンタと、
プリントジョブの一部をプリンタ・レディ・フォーマットに処理するように各々が配置された複数の処理ノードと、
プリントジョブの言語を定める手段を包含する処理マネージャと、
複数の、言語特定分割プロセッサであって、前記プリントジョブを独立処理可能な複数のページに分割して、それらのページを前記プリンタ・レディ・フォーマットに並行処理するように、前記処理ノードの選択されたものに前記ページを割当てる、言語特定分割プロセッサと
を包含することを特徴とする印刷システム。
【請求項２】
請求項１に記載の印刷システムにおいて、前記処理マネージャがさらに、前記プリントジョブの前記定められた言語に基づいて、前記プリントジョブを、前記複数の言語特定分割プロセッサの選択されたものに割当てる手段を含むことを特徴とする印刷システム。
【請求項３】
請求項１に記載の印刷システムにおいて、前記処理マネージャが、処理ノードの作業負荷を適応可能にスケジュールする手段を含み、該スケジュール手段が、前記処理ノードによりパフォーマンスの統計結果を取得し、次に処理ノードを終了するべき１つのノードについての処理の完了の推定に基づいて、前記処理ノードの１つに対するページ処理割当てをスケジュールするための手段を含む、ことを特徴とする印刷システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷システムと、そのアーキテクチャと、処理ステップとに関し、より具体的には、デジタルブリンタをより効率的にかつ高速に駆動してに電子画像を生成することに関する。
【背景技術】
【０００２】
印刷システムにより印刷されるべき印刷可能（プリント・レディ）文書を生成することは、所望の文書を、印刷エンジンが理解可能な電子形態で視認し、処理して出力するのに必要とされる情報（コンテンツ、グラフィックス、製造規格など）を取得することを含んでいる。このようなシステムは、パーソナルコンピュータシステムの消費者であるユーザによく知られているもののような簡単で適度の値段であるものから、１分間に１００ページもの範囲をフルカラーで生成することができる商業用印刷システムまでの範囲に及ぶものである。しかし、すべてのシステムは、より迅速な印刷について高いレベルの目的を有する。
【０００３】
ネットワーク上にトランスレータを分散させることにより、プリントジョブを並行して処理することができる。各々のプリントジョブは、ポストスクリプト（ＰｏｓｔＳｃｒｉｐｔ）ファイル、ＡＳＣＩＩ、ＰＣＬ等のようなページ記述言語（「ＰＤＬ」）からなる特定のデータ型でシステムにおいてフォーマットされる。分散されたトランスレータの組は、各々のデータ型について用いられ、トランスレータの各々は、各々のデータ型を同時にラスタ化するための複数のＣＰＵを備える。リアルタイムの作動においては、ネットワーク上の各トランスレータはラスタ化された画像をフォーマットすることができ、この画像は次いで該ネットワーク上で印刷エンジンに供給される。ジョブの並行性は、速いジョブが完了して印刷されている間に、遅いジョブを処理することを可能にすることにより、印刷システムの融通性を増加させるものである。しかしながら、大幅に異なる処理時間が必要とされるジョブにおいては、待機が必然的に生じて、システム全体の効率性が悪くなることを容易に理解することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、印刷システムにおける効率性及び速さを改善することが引き続き必要とされている中で、単なるジョブ又はページの並行性だけに限定されるのではなく、印刷システムに対するプリントジョブの制御及びデータ流れを促進して、どんな単一のジョブについても格納ディスクへの多数回のアクセスを不要にすることができるシステムについての必要性がある。
【課題を解決するための手段】
【０００５】
本発明は、ユニークな並行性の実施を包含するものであり、これについては満足な定義された用語を見出すことができず、したがって、我々自身が辞書編集として機能してこの概念を「チャンク（Ｃｈｕｎｋ）並行性」と定義する。「チャンク並行性」は、プリントジョブ並行性とページ並行性との間の中間レベルの並行性である。チャンクは、少なくとも１つのページと、１つより多くなることはないジョブとからなるラスタ化されたデータの集合である。チャンクは、ジョブ全体より少ない整数のページとすることができるが、ページ毎ではなくチャンク毎に生じる起動（スタートアップ）オーバーヘッドを有する。
【０００６】
本発明の印刷システムは、プリンタと、プリントジョブの一部をプリンタ依存フォーマットに処理するために配置された複数の処理ノードと、該プリントジョブを選択的に寸法決めされたチャンクにスプーリングし、該チャンクを該処理ノードにより、該プリンタ依存フォーマットに並行処理するために該チャンクを該ノードの選択されたものに割当てる処理マネージャとを備える。チャンクは、ページ処理効率を高めるための所定の分割計数（ファクター）により、少なくとも１つのページからプリントジョブの全体の大きさにまで選択的に寸法決めされる。分割係数は、バイト数のしきい値境界であるか又はページ数のしきい値境界のいずれかを含む。チャンクの１つについての終わりは、しきい値境界の１つを横切ることに続く、次のページ境界からなる。バイト数についてのしきい値境界及びページ数についてのしきい値境界は、境界当たりの処理ノード間で等しい量の処理作業を達成すること、及び所定のジョブにおいて多数のプロセッサのビジー状態の維持を達成することのそれぞれを管理するために定められる。
【０００７】
本発明の別の態様においては、多数のＰＤＬが収容される。プリントジョブの決定によって、複数の言語特有の分割プロセッサが、定められた言語についてのプリントジョブの分割を行うために設けられており、したがって、複数のプリントジョブ言語を単一の所定の標準的な言語に変換することは不要になる。
【発明を実施するための最良の形態】
【０００８】
本発明は、より迅速な印刷システム、特にすべてのページがカラーでありかつ異なることがあるシステムについての引き続く必要性に対処するものである。このシステムは、その速さを促進するために並行性を利用するが、特に、ジョブの並行性又はページの並行性に限定されていた従来技術の印刷システムにおいては知られていない並行性の実施を利用するものである。本発明は、ここでは「チャンク」並行性として定義される並行性の中間レベルを用いる。プリントジョブデータのチャンクは、少なくとも１ページであり、１つのジョブより多くなることはないラスタ化可能データの集合を含むことを意図するものである。ジョブの並行性は、ジョブが最小チャンクの大きさよりも小さい場合に生じ、ページの並行性は、最小チャンクの大きさが０（バイト／ページ）である場合に生じる。特に図３を参照すると、特定のプリントジョブ１０は、多数のページ１２からなり、幾つかのページは、以下により完全に説明される、割当てられたＲＩＰモードによりラスタ化するために、互いに「チャンク」１６の中に関連づけることができる。従来技術のシステムは、ジョブ１０又はページ１２全体を単一ノードにおいて個々にラスタ化することはできたが、特定のジョブ内の関連するページの組をラスタ化することはできなかった。
【０００９】
このシステムは、プリントジョブがチャンクに分割される方法を選択する言語識別子を含む。これを許可する言語については、チャンクの大きさは、作業量を見積もることにより求められる。小さなチャンク／減少したジョブ時間と、大きなチャンク／改良された処理能力との間のトレードオフは、ジョブの優先順位により管理される。言語識別子に加えて、システムは、支持される各言語についてのスプリッタ、ＰＤＬを好ましくは圧縮された印刷可能形態に変換するＲＩＰ（ラスタ化イメージ処理）ノードの集合、チャンクが元のジョブで表示されたのと同じ順番で表示されて完了するように、チャンク完了メッセージを順序付けるコレクタ、及び分割プロセスにおいて集められた統計に基づいてジョブを処理するのに必要な時間を見積もり、これを用いてＲＩＰノードに渡る作業のロードバランスをとるスーパバイザプロセスを含む。
【００１０】
基本動作
特に図１及び図２を参照すると、本発明は幾つかの新規な特徴を備え、その１つは、チャンク並行ページラスタ化システムである。このシステムは、印刷エンジン（図示せず）を駆動するために、分散システム、又は単一のマルチプロセッサ機上の集中サービスとして、実施することができる。
【００１１】
システムのアーキテクチャ、制御及びデータ流れ、並びに処理ステップは、以下のものからなる。
【００１２】
ジョブ提示／プリンタ管理ノード１００において、クライアントからプリントジョブ２００（図２：以下、プリントジョブは単にジョブと表現することが多い）が到着すると、入力スプーリングシステムは、その内容をメモリ又はディスク１０２のいずれかに保存し（ステップ２０２）、言語が定められる（ステップ２０４）。言語は、必要に応じて、ポストスクリプト、ＰＤＦ、ＰＰＭＬ、非構造化ＡＳＣＩＩテキストその他を含む。
【００１３】
入力スプーリングシステム１０２は、必要な監視機能を行うための、図１においてはジョブマネージャノード１０４、スーパバイザノード１０６、及びタスクマネージャノード１０８として示される処理マネージャアセンブリに通知し、言語を管理ノードに伝えるようにする。ジョブの大きさ（これが完全に受け取られた場合には）、及びどのように／どこでデータを見出すかがさらに決定される（ステップ２０４）。幾つかのよく知られた機構を用いて、分散システムについてのネットワークのファイル名、又は集中システムについてのメモリアドレスを含むデータの位置を通信するようにすることができる。
【００１４】
監視ノード１０６は、どのスプリッタがジョブを分割することができるかを選択するために、定められた言語を用いてスプリッタ１１０を選択する（ステップ２０６）。大きなシステムにおいては複数のスプリッタが意図され、この場合には、監視機能はすべてのスプリッタのキューにおける推定される保留作業量に基づいて、スプリッタを選択する。スーパバイザ１０６はさらに、新しいジョブがシステムに存在することをコレクタ１１２に通知し、該新しいジョブについてどのようなユニーク（一意）な識別子がシステム内にあるかをスプーリングシステム１０２に伝える。スーパバイザは、ユニークな識別子を生成して、該ユニークな識別子を対立させることなく、多数の入力スプールシステムと通信できるようにする。
【００１５】
監視機能は次に、どこでデータを見出すかを選択されたスプリッタ１１０に知らせ（ステップ２０８：スーパバイザはデータを見ることはない）、該スプリッタは準備が整い次第、ファイルを分割し始めることができるようになる。スプリッタは、前のジョブを分割している間に入力ジョブを記述するメッセージを受け取ることができるように、マルチスレッド化されている。監視機能はさらに、チャンクの定義しきい値境界（最小のページ計数、最小のバイト計数）を含むチャンクのパラメータをスプリッタに知らせる（ステップ２０８）。
【００１６】
スプリッタ１１０は、チャンクの宛先を要求する。スーパバイザは、ノード上の保留仕事量の見積もりを用いることにより、コモン・デコンポーザ・ファシリティ（ＣＤＦ：共用分解機能部）ＲＩＰ（ラスタ化イメージ処理）ノード１１３を実施するＲＩＰノードに対してチャンクを割当てる（ステップ２１０）。（ＣＤＦは、ＰＤＬ形態から印刷可能形態への変換をもたらす）。見積もりは、所定の物理的なノードはそこで作動しているＲＩＰ及びスプリッタの両方を有することがあるため、物理的なＲＩＰプロセッサに割当てられた合計作業量に基づいて計算される。スーパバイザ１０６は、スーパバイザ１０６は、各々の物理的なプロセッサに割当てられた作業量の見積もりを最適化するように、スプリッタ１１０に対して少数の（３のような）宛先しか与えない。
【００１７】
スプリッタ１１０は、ジョブをチャンクに分割する（ステップ２１２）。各々のページ境界において、スプリッタはページ計数又はバイト計数が超過していないかどうかをチェックして、いずれか１つが超過している場合には、そのチャンクを終了させる。ジョブをチャンクに分割するとき、スプリッタは該チャンクをスーパバイザから受け取った次の宛先に送る（ステップ２１４）。これはチャンクをスーパバイザにより指定された宛先が示すノードに関連するＣＤＦメモリ又はディスクのいずれかに書き込む。好ましい実施形態においては、チャンクについてのデータは、ディスクではなくメモリに書き込まれる。スプリッタは、別々のスレッドを用いてデータをＲＩＰノードにコピーするため、ネットワークの転送時間又は受け取りノードの速度により制限されることなく、分割を続けることができる。
【００１８】
スプリッタが、チャンクの最初のページを書き込んだ後、該スプリッタはスーパバイザに通知し、次いでＲＩＰノード及びコレクタ１１２に通知する。コレクタは、システムにおけるジョブの組を維持し（ステップ２１６）、各ジョブについては、到着順にチャンクのリストを維持する。
【００１９】
ＲＩＰノードは、多数のスレッド又はプロセスを有し、これらのうちの１つは、データ転送の受け取り側を処理する。スプリッタ及びＲＩＰノードは、スプリッタがそのチャンクの書き込みが完了（ステップ２１８）していても、いなくても、別々のメッセージを送ることによるような幾つかの通信手段を用いる。或いは、スーパバイザは、スプリッタノードから通知を受け取ったときにメッセージをＲＩＰに送ることができる。ＲＩＰが、これまでに書き込まれたデータの最後を越えて読み込むことを試みると、ブロックされる。スプリッタがチャンクを終了させたときに、書き込まれたデータの最後を越えて読み込むことを試みた場合には、ファイルの終わりの信号を受け取る。
【００２０】
好ましい実施形態においては、データ転送は、ファイル及びディレクトリを開き、ファイルを読み取りかつ書き込むなどの能力をもった、通常のディスクのような送信及び受信の両方に表示される、ＶＤＩＳＫ（仮想ディスクを表す）と呼ばれる中間プロセスを用いる。通常のディスクとは異なり、ＶＤＩＳＫは、遠隔転送を含むことができる機能をもたらし（受取りプロセスがネットワーク化システムにおける別のノードにある場合には）、送信プロセスがファイルを「閉じた」かどうかを知っているため、書き込まれた最後のデータを超えて読み取ることを試みたときに、受け取りプロセスがファイルの終わりの信号を受け取るべきであるか又はブロックすべきかがわかる。ＶＤＩＳＫは、共有されるメモリを与えるプロセス及び受け取りプロセスにより実施される。ＶＤＩＳＫの実装は、使用頻度が最も低い（書き込まれた）ページは最も早く必要とされる（読取られる）ために、データ・ブロックを直前に参照された順番でページアウトすることにより、メモリに適合するよりも多いデータをＶＤＩＳＫに書き込み得るようにする。トランスペアレントなネットワーク化ファイルシステムのインターフェースをもたらすこと、ファイルの終わりの前の読み取りをブロックすること、及び直前に参照されたものをページングすること以外は、ＶＤＩＳＫは通常のＲＡＭディスクと同じように作動する。
【００２１】
スプリッタがチャンクを完了すると、該スプリッタはどのページが書き込まれたかについてのメッセージをスーパバイザに送って知らせ、該スーパバイザは、どのページを所定のチャンクと関連させるかについてコレクタに知らせる（ステップ２２０）。
【００２２】
スプリッタが幾つかのチャンクを書き込んだ後、多数の並行ＲＩＰノード１１３は並行作動して（ステップ２２２）、印刷可能データのページを書き込む。このデータは、混合ラスタコンテンツファイルのような圧縮形態で、内部メモリのデータバッファに書き込まれる（ステップ２２６：ＶＤＩＳＫにより与えられるような）。
【００２３】
ＲＩＰノードがチャンクを完了すると、該ＲＩＰノードはメッセージをスーパバイザに送り（ステップ２２４）、スーパバイザは、メッセージをコレクタ１１２に通過させる。コレクタは、このチャンクが完了していることを認識し、このジョブについてのリストにおける第１のものが完了していることを見出す限り、該リストにおける第１のものを除去して、スーパバイザに知らせる。スーパバイザはそのチャンクについての出力データの位置をスプーリングシステムに通知する。
【００２４】
スプリッタがジョブを完了すると（ステップ２２８）、スプリッタはスーパバイザに知らせ、スーパバイザは、コレクタにそのジョブについてこれ以上の新しいチャンクを期待しないよう知らせる。
【００２５】
コレクタが、スーパバイザからＲＩＰノードがチャンクを完了したという最後のメッセージを受け取ると、ジョブが関連するジョブ終了メッセージを有するため、コレクタは、このことを知り、チャンクのリストはそのチャンクが除去されたとき空になる。コレクタは次にスーパバイザに知らせ（ステップ２３０）、該スーパバイザはジョブが完了したことを入力スプーリングシステムに知らせる。
【００２６】
完了した出力ジョブについての圧縮された出力ページは、プリンタ管理１００に戻されて、印刷エンジンに送られる。
【００２７】
並行性は、図１の処理ノードのうちの幾つかが並行して作動する多数のノードとなることが意図されているこのシステムアーキテクチャにより高められる。より具体的には、このような並行処理ノードは、ジョブ提示／プリンタ管理１００、ジョブマネージャ１０４、タスクマネージャ１０８、スプリッタ１１０、及びＣＤＦ１１３を含む。
【００２８】
チャンクの大きさは、処理能力に対する個々のジョブの速さとの妥協のもとで最適化される。ＲＩＰがチャンクの処理に必要とする時間は、小さな一定値の起動時間、並びに、一般には、チャンクにおけるデータ量に比例する時間を含む。データ量を処理時間に関連させる比例定数は、処理される文書の種類により変化するが、典型的なショップにおいては、ジョブの混合が変化するにつれて、時間とともに比較的ゆっくりと変化するに過ぎない。すべてのチャンクが１ページの長さである場合には、起動時間は各ページ毎に費やされて、合計処理時間は起動時間のＮ倍とすべてのページを処理するのにかかった時間とを含むことになる。直列システムにおいては、単純に、合計処理時間は、起動時間にすべてのページを処理するのにかかる時間を加えたものとなる。並行システムの処理能力は、より大きなチャンクの場合に、さらによいものとなることは明らかである。逆に、ジョブが非常に大きなチャンクに区切られる場合には、起動費用は極くわずかとなるが、任意の所定のジョブのチャンクはＲＩＰノードの幾つかしか占めることにならないという傾向をもつ。システムにおいて、１つのジョブしかない場合には、残りのノードはアイドル状態のままにされる。システムにおいて多数のジョブがある場合であっても、いずれの１つのジョブについての提示と完了との間の時間は、作業がノード間で良好に平均化されないために、より長くなる。チャンクがジョブ自体と同じくらい大きいという極端な場合を考えると、システムにおいて個々のジョブが費やす時間は、直列システムにおけるものより速くならないことが明らかである。
【００２９】
処理されるべきページは、複雑性が広範囲にわたる。典型的なシステムにおいては、最も易しいページと最も困難なページとの処理時間の間は２０倍又はそれ以上になる。最も単純なページ処理時間の予測子は、ページにおけるバイト数である。ページが困難なページである場合には、そのページについての起動オーバーヘッドは、そのページに費やされる合計時間に比較すると非常に小さくなる。ページが易しいページである場合には、起動オーバーヘッドは、そのページに費やされる合計時間に比較すると大きくなる。この理由のために、チャンクの大きさを求める基準は、合計バイト及び合計ページ計数の両方を考慮する。易しいページは互いにグループ分けされて、チャンクを、起動オーバーヘッドを少なく維持するのに十分なだけ大きく、しかしジョブを多数のＲＩＰに拡げるのに十分なだけ小さく維持する。短くて易しいジョブは多数のＲＩＰに渡り拡がることはないが、これらは短くて易しいものであるため、これらをさらに加速する必要はない。
【００３０】
入力の各々の種類について、分割はユニークな方法により実行することができる。１つの例は、多数のオブジェクトと併せて、該オブジェクトの位置を示す相互参照表を含むファイルフォームでもたらされるＰＤＦである。オブジェクトの１つの種類は、すべてのマーキング情報、すなわちマークを紙上に付けることに関する情報のすべてを含むストリームオブジェクトである。別の種類のものは、ポインタに相当する間接参照オブジェクトである。さらに別のものは、一組のキー値の対を与える辞書である。特別な辞書に含まれる情報を調べることにより、相互参照表における情報と併せて、そのページの各々に関連したファイルにおけるすべてのオブジェクトを見出して、該ページの各々について別々のＰＤＦファイルを書き出すことは単純なことである。好ましい実施形態においては、スプリッタは、各ページについてのストリームの大きさのような幾つかの統計情報を計算し、その情報をスーパバイザに通過させて、そのページと関連する作業を見積もるのに用いるようにする。
【００３１】
別の例は、ＤＳＣ−ＰＳ、すなわち文書構造化規則コンフォーマントのポストスクリプトである。このフォーマットは、ファイルの最初に、すべてのページについての必要な情報を含み、その後に連続して個々のページの各々に特有の情報を含む。ＱｕａｒｋＸｐｒｅｓｓのような幾つかの生成ツールは、個々のページに特有の情報だけが表示されればよい後のページに必要な情報を混合するが、これを個々のページに分けることも可能である。文書を個々のページに分割することができる如何なるスプリッタも、多数のページを支持する入力フォーマットを受け入れることを想定して、１チャンク当たり１ページだけを用いるのではなく、容易に幾つかのページを連結することができる。
【００３２】
データベースのモードＶＩＰＰ（可変情報ポストスクリプト・プリントウェア）のような幾つかの言語は、ページ境界上で容易に分割できない。この場合においては、一連の記録はジョブを含み、各々の記録は単一の文書を記述し、この記述は数ページの長さに及ぶことがある。典型的には、このことは大量注文制作されるメーリングを意図するものであり、ジョブ内の各々の文書は、別々の封筒の中に入れられることが意図される。このような言語については、スプリッタがジョブを文書の境界で分けることになる。
【００３３】
本発明はさらに、幾つかの他の特徴を含む。
適応スケジューリング
スプリッタは、分割する各々のページについての統計情報を収集することが好ましい。ＰＤＦスプリッタにおいては、このことは、ページの合計の大きさ、及びストリームにどれだけのバイトがあるかを含む。さらに、ストリームに用いられる圧縮形式に関するデータ（ＰＤＦストリームは圧縮されていることが普通である）、及び大きさの分布に関するデータを含むことができる。ＤＳＣ−ＰＳスプリッタにおいては、少なくとも生成者名及びページのバイトの大きさを含む。生成者が画像におけるバイト数を明確に示す場合には（％％ＢｅｇｉｎＤａｔａ／％％ＥｎｄＤａｔａの構築を介して）、該画像におけるバイト数は別々の統計として含まれる。別の統計は、プリントジョブの分割部分についての合計ページ数とすることができる。この情報は、スーパバイザに向けられ、該スーパバイザは、ＲＩＰノードがそのページ又はチャンク上で費やすと予想される推定時間を計算するのに用いる。ＲＩＰがページを完了すると、これが実際にはどれだけの時間かかったかをスーパバイザに知らせる。スーパバイザは、実時間と併せて統計を用いて、処理時間のモデルを該スーパバイザが受け取る種々の統計情報の関数として作成する。より多くのＲＩＰがより多くのページを完了すると、より多くの統計情報が利用可能になり、モデルが改良される。この改良されたモデル、及びどの作業が各々のＲＩＰノード上でスケジュールされているかについての知識により、スーパバイザは、ノードが新しい作業（すなわち、そのＲＩＰについてまだスケジュールされていない作業）を始められるようになるまでどれだけの時間がかかるかを予測できる。最も早く利用可能であるように予測されるＲＩＰは、スプリッタからの宛先についての要求が満たされると、次にスケジュールされるものとなる。これらと関連づけられた統計をまだもたないスケジュールされたチャンクは、不確実さを見積もりに加えることになるに過ぎないために、スーパバイザは、少数の宛先要求しか前もって満たすことはない。統計は、同じプリントジョブ、すなわち、同じジョブの前の部分から収集される必要はない。
【００３４】
モデルを作成するのに種々の手法が可能である。１つの可能性は、ニューラルネットワークである。別の可能な実施は、生成者（ＤＳＣ−ＰＳの場合において）又はストリームの大きさの分布（ＰＤＦについて）のような統計情報の幾つかのサブセットに基づいて、入力ページをグループに分けて、次いで各々のグループについてのＲＩＰ時間を１つ又はそれ以上の他の統計（バイトにおけるページの大きさのような）の関数として与える線形モデルを計算する。最小２乗推定技術（例えば、パブリックドメインのパッケージＬＡＰＡＣＫにおいて見出せるもののような）は、線形モデルの構築パラメータについて満足できるものである。
【００３５】
ジョブ割り込み／再開
典型的には、より優先順位の高いジョブがシステムを通過させるためにジョブが割り込みされた場合には、スーパバイザはＲＩＰに対して、現在のジョブについての如何なる新しいチャンクも開始しないよう通知する。ＲＩＰは、それらが実行中のものに割り込んでその状態を保存することができるが、チャンクが相当小さい場合には、現在処理中のチャンクが完了してからすぐに、より優先順位の高いジョブがサービスされることになる。スーパバイザは、それらの宛先についての要求を満たさないことにより、現在作動しているすべてのスプリッタを停止する。このことは、スプリッタを一時停止させることになる。優先順位の高いジョブが到着すると（割り込みのための理由）、スーパバイザはこれを異なるスプリッタ（すでに作動中であるが、ソースのジョブを受け取っていなかったために一次停止された）に送り、該スプリッタがジョブを完了するまで宛先を与える。優先順位の高いジョブは、異常なことが起きていないかどうかをシステムに知らせる必要がほとんどない状態で、該システムを通過する。
【００３６】
優先順位ベースのチャンキング
すべてのノードが異なるジョブに関してビジー状態で作動するように維持するのに十分なジョブが入力キューに、常にある場合には、処理能力は最大にされる（実効的には無限のチャンクの大きさ）。これは、ジョブをチャンクに分割することに対して避けることのできない幾つかのオーバーヘッドがあるためである。すべてのジョブがチャンキングパラメータが０である状態で送られた場合に、個々のジョブ速さは最大にされる（単一ページのジョブのみ）。これは、すべてのノードがそのジョブ上で作動するためである。良好な妥協は、オーバーヘッドをＲＩＰ時間の５〜１０パーセントに維持するようにチャンキングの大きさを選択することである。このことは、処理能力には僅かな影響しか与えずに、全体として満足できるジョブの割りつけを与える。優先順位の高いジョブが到着すると、チャンクの大きさは単一ページのチャンキングを用いるように減少されて、ジョブがより迅速に通過するようになる。このことは、ジョブの割り込み／再開と組み合わせて、より良好な応答を与えるようにすることができる。細分性のレベルは、さらに、システム負荷の関数として変更することができ、すなわち、すべてのノードが非常にビジーである場合には、処理能力はより重要であり、幾つかのノードがかなりの割合の時間だけアイドル状態である場合には、より微細なグレインのチャンキングでより高い程度の並行性を達成することができる。スーパバイザは、種々のノードについてスケジュールされた仕事量の知識、及び分割待機中のジョブの数及び大きさに基づいて、チャンクの大きさを変更することができる。
【００３７】
ジョブのパイプライン／オーバラップ処理
キューシステムは、ジョブを修正されたＩｎＰｒｏｇｒｅｓｓ段階を通して行う。通常は１つのジョブだけが進行中でろうが、このシステムは、多数のジョブを進行中にすることを可能にする。ジョブは、それらの言語が識別されるとすぐに進行中段階に入り、直後に並行システムに出される。これらは、ａ）完了するまで、及びｂ）ＩｎＰｒｏｇｒｅｓｓ段階において前に提示されたジョブが残らなくなるまで、進行中段階のままに残る。ジョブにいずれかの方法で障害が起こった場合には、ジョブがＩｎＰｒｏｇｒｅｓｓ段階を離れるときにエラーが報告される。並行システム（特にスプリッタ）は、通常は、前のジョブが分割されるまでジョブを開始することはないが、このことは必要条件であるわけではなく、多数のスプリッタ及び多くのＲＩＰノードをもった大きなシステムにおいては、多数のジョブを同時に分割することができる。次のジョブの分割された段階を前のジョブのページのＲＩＰとオーバラップすることは、純粋なページ又はチャンクの並行システムにおけるジョブ時間及び処理能力の両方について実質的な改良をもたらす。任意のモードにおいては、システムは、ジョブが完了するとすぐに該ジョブをＩｎＰｒｏｇｒｅｓｓ状態から解放するが、この潜在性は、印刷システムに期待される先入れ先出し動作を侵すものであり、オペレータに複雑さをもたらすことになる。
【００３８】
ブート時におけるハードウェア資源の自動発見
システムがブートされるときにはいつでも、その初期作動は並行ＲＩＰ適正をチェックすることである。並行ＲＩＰを可能にするためには、２つの前提条件、つまり、最小プロセッサ計数すなわちコンフィグレーションファイル定義された最小ＣＰＵ値と関連して、有効ライセンスが存在しなければならないという条件が満たされなくてはならない。いずれかの前提条件が満たされていない場合には、Ｎ−ＷＡＹ、すなわちアクティブなＲＩＰの数に対する制限が一方に強いられて、並行ＲＩＰはディスエーブルにされる。さらにブート時間において、及び並行ＲＩＰがイネーブルの場合においてのみ、システムはハードウェアをチェックし、これはＳＭＰ実装が、幾つのプロセッサが取り付けられて、幾つのコンプレッサのカード、どれだけのメモリ、及びどれだけ利用可能なスワップがあるかを求めることを意味する。ｎ個のプロセッサをもったシステムを与えられた場合には、経験により、ＲＩＰ速度は、αが幾らかの値であるものとしてＲＩＰの数がαｎ個を超えるまで、ＲＩＰソフトウェアの改訂及びジョブの混合の性質によってＲＩＰの数と共に線形に増加することが示される。ＲＩＰの数についてのより高い値は、（ＣＰＵ）ボトルネックされたシステム上の付加的なオーバーヘッド（コンテクストの切り換えなど）の負荷に起因して、システムを（わずかに）遅くさせる傾向をもつ。デフォルトのセットアップにおいて用いられるαの値は、カスタマ文書に典型的であると予測される一組のマスタに基づくものである。これは、理想的なＲＩＰ計数、ＰｒｅｆｅｒｒｅｄＲＩＰＣｏｎｆｉｇの計算に対する１つの入力として用いられる。コンプレッサのカード数は、理想的な数のＲＩＰ上にあるプロセッサの数と同様の効果を有する。したがって、ＰｒｅｆｅｒｒｅｄＲＩＰＣｏｎｆｉｇの計算に対する第２の入力は、コンプレッサのカード数となる。利用可能なメモリの量は、スラッシングすることなくある時間においてアクティブであることができるＲＩＰの最大数に影響を与える。これは、常にＰｒｅｆｅｒｒｅｄＲＩＰＣｏｎｆｉｇより大きいか又はこれに等しいＮ−ＷＡＹの値を求めるのに用いられる。このシステムは、Ｎ−ＷＡＹ及びＰｒｅｆｅｒｒｅｄＲＩＰＣｏｎｆｉｇについての値を求め、これらを実際の作動における並行ＲＩＰの数値であるＭａｘＲＩＰを求めるのに用いる。特に、これらの値のどれか又はすべてが既にコンフィグレーションファイルにおいて定められている場合には、これはＮ−ＷＡＹ及びＰｒｅｆｅｒｒｅｄＲＩＰＣｏｎｆｉｇがちょうど計算された値と適合するかどうかをチェックし、適合しない場合には、ファイルにおける値を変更する。第２に、ＭａｘＲＩＰが定められた場合には、これがＮ−ＷＡＹより少ないかどうかをチェックし、そうでない場合には、Ｎ−ＷＡＹと等しくなるように変更する。ＭａｘＲＩＰが定められていない場合には、ＰｒｅｆｅｒｒｅｄＲＩＰＣｏｎｆｉｇの値に設定する。
【００３９】
上述の特徴に対するオペレータ・インターフェース
グラフィック・ユーザ・インターフェース（ＧＵＩ）において、オペレータは、３つの値（ＭａｘＲＩＰ、好ましいＲＩＰＣｏｎｆｉｇ、及びＮ−ＷＡＹ）を示され、正の整数値のＭａｘＲＩＰをＮ−ＷＡＹより大きくないいずれかのものに変更することが可能である。ＧＵＩは、並行ＲＩＰがディスエーブルにされたとき（Ｎ−ＷＡＹが１である）、並行ＲＩＰに関連するパラメータをオペレータから隠す。
【００４０】
順次モードにおける自動リカバリ
予測されるジョブの実質的な割合は、ポストスクリプト言語において符号化される。これらのジョブのほとんどは、文書構造化規則コンフォーマント（又はこのシステムの目的に十分近いもの）、又は、不適合さを即時に検知することができる十分に不適合なもののいずれかである。幾つかのジョブは、システムを、スプリッタを通過させてＲＩＰの間に障害を起こさせるのに十分なだけだます。ＲＩＰされているページに同時に障害が起きると、そのジョブにおけるすべての他のページはシステムからパージされ、ログメッセージがこのジョブについてのエラーログに書き出されて、該ジョブは分割されることなく単一のＲＩＰに送られる。このことは、ジョブが連続してＲＩＰされる一方で、他のジョブがこれと並行してシステムを通過することができるという効果を有する。ジョブが連続的にＲＩＰされているときにページに障害が起きると、該ジョブは再試行されることなく障害が起こる。１つ又はそれ以上のページが既に印刷された後に障害を起こすこれらのジョブは、自動リカバリから不適格とされる。
【００４１】
非保護ポストスクリプト（ＰＳ）ジョブの並行ＲＩＰをイネーブルする特別なワークフロー
保護されていないＰＳジョブは、「すべて」の将来のジョブに影響を与えるような方法により、いずれのジョブも「恒久的に」インタープリタの仮想メモリの状態を変更することができる特別なコンテクストにおいて作動する。恒久的に及びすべて、がかぎ括弧に入れられているが、これは、再起動またはシステムのクラッシュの後には、仮想メモリは常に既知の状態に再設定され、かつ、将来のジョブはさらに仮想メモリ（ＶＭ）により変化するジョブが行ったどんな影響も元に戻すことができるためである。通常の（すなわち同時ではない）システムにおいては、保護されていないジョブはそれら自体のコンテクストで作動し、すなわち保護されていないジョブについてのキューがあり、これらのジョブは別々のＵＮＩＸ（登録商標）プロセスを用いてＲＩＰする（保護されたジョブを実行するＲＩＰとは別に）。保護されていないモードの通常の使用は、ＶＭの状態を変更するジョブを実行し、次に変更されたＶＭの状態を用いる１つ又はそれ以上のジョブを実行することである。ＲＩＰプロセスは、ジョブにおいてアクティブ状態を継続し、保護されたＲＩＰは、各ジョブが実行された後に、ＶＭの状態を標準的な状態に戻すようにすることを確実にする。ページ並行システムにおいてこの作業を可能にするためには、すべての影響されたＲＩＰ上のＶＭを変化させる方法と、このＲＩＰの組を並行して用いるための機構という２つのことを必要とする。このことは、保護されていない読み取り・書き込み、及び保護されていない読み取り専用という２つの（相互排他的な）ユーザが視認可能なジョブの属性として実施される。保護されていない読み取り専用の実施は、ジョブが分割されチャンクは独立して多数のＲＩＰに供給されて、これらの出力が収集され順序付けられてプリンタに送られるという、保護されたページの並行性とまったく同じものである。唯一の違いは、保護されていないＲＩＰが用いられるということである。保護されていない読み取り・書き込みモードは、ジョブ全体が同時にすべての保護されていないＲＩＰに送られて、これらのＶＭ状態がそれにしたがって設定されるようになる冗長モード処理を用いて実施される。保護されていない読み取り専用についてのＶＭ書き込み許可を実施するためにパスワードが用いられて、ＶＭに書き込むことを試みるあらゆる読み取り専用ジョブに障害を起こさせる（これは、保護されたキューにおける読み取り専用動作を実施するのに用いられるのと同じ機構である）。すべてのＲＩＰは、冗長モードに切り換わる前に、あらゆる前のジョブを終了する。すべてのＲＩＰは、ディスエーブルにされた出力を１つを保存する。ジョブが任意の出力を生成した場合には、唯一のコピーだけが印刷される。この方法により、保護されていない読み取り・書き込みジョブの速さは、シリアルシステムに送られたものよりも遅いということはなく、これらの出力は同一であり、保護されていない読み取り専用ジョブは、並行性の完全な利点を得る。
【００４２】
同時処理におけるキューレベルの制御
ＰＳジョブの処理は、ＤＳＣコンフォーマンスに依存するものであるため、幾つかのソースからのジョブは定期的に障害を起こす。ユーザは、同時性がキューレベルで用いられたかどうかを制御することができる。この制御は、並行して実行された場合には障害が起こると予想されるジョブを連続的なキューに提示するという選択肢を与えて、これらが直列システム上でも実行されるようにすることを保証する。このことは、ジョブの潜在的な分割時間を節約して、結局は最初の数ページの後に障害が起きることになるＲＩＰを開始させる。
【００４３】
順次チャンク及び同時チャンクの同時処理
ジョブが連続的なものであるとタグ付けされた場合には（キューパラメータ又は再試行のいずれかによって）、１つのＲＩＰだけが用いられる。スプリッタは、付加的なジョブをキューにおいて見出すとこれらを分割し続け、残りのＲＩＰは他のジョブに属するチャンクを処理する。このことは、生産性を最大にする。代替的手法は、連続的なジョブが開始されるか又は完了したときにはいつでも、これらの間に２つのモード及びスイッチを有することである。
【００４４】
利用可能なバッファ空間に基づいた流れ制御
一度に多数のジョブがシステムにあることがある。例えば、１０個のＲＩＰをもったシステムにおいては、３つの２ページのジョブ、並びに、２０ページのジョブの最終ページ及び後続するジョブの始まりが該システムにあることがあり、すべて単一ページの細分性で分割される。分割パラメータによって、ＲＩＰがアクティブである限りジョブは幾つあってもよく、並びに任意に、幾つのジョブを「前もって分割」するようにしてもよい。システムにおけるすべてのジョブは、ＶＤＩＳＫの空間を用いる。少なくとも、これはその分割チャンクのための空間を用い、さらに調子の悪い完了されたページ、又は完了を報告されるべき第１のジョブ以外のジョブのためのページがあることがある。システムにおいてジョブの数に固定された制限を有するのではなく、制限は、ＶＤＩＳＫに残された空間に基づいている。ＶＤＩＳＫのフルネスがしきい値を交差すると、如何なる新しいチャンクも生成されなくなる（スプリッタはストールされる）。新しいジョブは、スプリッタが既にシステム上で作動しているものを終わらせて初めて該システムに加えられる。
【００４５】
述べられた本発明は、多様な言語について、ページの並行処理及びチャンクの並行処理の両方を含み、該チャンクは１つ又はそれ以上のページからなるが、１チャンク当たり単一のジョブを超えることはない。データはディスクへの最小アクセスで分散システムにおいて管理される。好ましい実施形態においては、ジョブは、パイプラインされて、早く完了するＲＩＰが、困難なページ／チャンクが完了する前に、次のジョブを始めることを可能にする。並行性の細分性レベルは、ジョブの優先順位及びシステムの負荷により変化する。単一のジョブは、システムの負荷が重くても、微細なグレインに分割して他のジョブが資源を使用しないようにすることにより、該システムを迅速に通過することを可能にする。システムは、来るべきジョブ及び既に進行中のジョブに必要な作業のインテリジェントな見積もりに基づいてスケジュールされ、見積もりをするのに用いられるパラメータはシステムの実行につれて改良される。
【図面の簡単な説明】
【００４６】
【図１】本発明により形成された印刷システムの制御及びデータ流れのためのアーキテクチャを示すブロック図である。
【図２】本発明によるプリントジョブを処理する方法を要約するフローチャートである。
【図３】ページ及び可能性のあるチャンク境界を示すプリントジョブの概略図である。
【符号の説明】
【００４７】
１００：プリントジョブ提示／プリンタ管理ノード
１０２：入力スプーリングシステム
１０４：ジョブマネージャノード
１０６：スーパバイザノード
１０８：タスクマネージャノード
１１０：スプリッタノード
１１２：コレクタノード
１１３：ＣＤＦ・ＲＩＰ（コモンデコンポーザファシリティ／ラスタ化イメージ処理）ノード
【図１】
2004310763.tif 000003
【図２】
2004310763.tif 000004
【図３】
2004310763.tif 000005