(57)【特許請求の範囲】
【請求項１】
ホストシステムがプリントジョブを、画像データオブジェクトを処理する第１プロセッサと他のデータオブジェクトを処理する第２プロセッサとを有するプリンタに転送するための方法であって、
前記ホストシステムが、前記第１プロセッサと前記第２プロセッサのキャパシティ情報から、前記プリンタ内のマルチ処理能力を決定する決定ステップと、
前記ホストシステムが、前記プリンタに転送すべきプリントジョブを受理するステップと、
前記ホストシステムが、前記プリンタの前記マルチ処理能力に従って、前記プリントジョブ内のオブジェクトを再配列し、再配列されたプリントジョブを発生する再配列ステップと、
前記ホストシステムが、前記プリンタでパラレルに複数のオブジェクトを処理するための前記プリンタの前記マルチ処理能力を使って前記プリンタで前記プリントジョブを出力するよう、前記再配列されたプリントジョブを前記プリンタに転送するステップと、
を有し、
前記キャパシティ情報は、前記第１プロセッサによって処理される第１の数（Ｎ）の画像オブジェクトとパラレルに、前記第２プロセッサによって処理できる他の非画像データオブジェクトの第２の数（Ｍ）とを含み、
前記再配列ステップは、前記第１の数（Ｎ）の画像データオブジェクトと前記第２の数（Ｍ）の他のデータオブジェクトとが、前記再配列されたプリントジョブ内で交互に配置されるように、前記プリントジョブ内のオブジェクトを再配列するステップを含むことを特徴とする方法。
【請求項２】
前記決定ステップは、
前記プリンタに関するスタティックなコンフィギュレーション情報を参照して、前記プリンタの前記マルチ処理能力を決定するステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記決定ステップは、
前記プリンタの前記マルチ処理能力に関する情報を前記プリンタにリクエストするステップと、
前記リクエストに応答し、前記プリンタから前記マルチ処理能力に関する情報を受信するステップとを更に含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記再配列ステップは、
前記再配列されたプリントジョブ内のオブジェクトの最適な再配列を可能にするよう、前記プリントジョブの前記オブジェクトをスプールするステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記ホストシステムが、前記プリンタから受信した更新情報に応答し、前記プリンタの前記マルチ処理能力をダイナミックに更新するステップを更に有することを特徴とする請求項１に記載の方法。
【請求項６】
画像データオブジェクトを処理する第１プロセッサと他のデータオブジェクトを処理する第２プロセッサとを有するプリントデバイスでドキュメントをプリントするためのシステムであって、
ホストシステムと、前記ホストシステム内に設けられ、前記ホストシステムを前記プリントデバイスに結合すると共に、前記ホストシステムからプリントジョブを受信するドライバモジュールと、を備え、
前記ドライバモジュールは、前記第１プロセッサと前記第２プロセッサのキャパシティ情報から、前記プリントデバイスに関するマルチ処理能力を決定するプリンタマルチ処理能力アナライザモジュールと、前記マルチ処理能力に従って、受信されたプリントジョブ内のデータオブジェクトを再配列し、再配列されたプリントジョブを発生するプリントジョブ再配列モジュールと、を有し、
前記ドライバモジュールは、前記再配列されたプリントジョブを前記プリントデバイスに伝送し、前記プリントデバイスのうちの複数のプロセッサを使って出力を発生し、
前記キャパシティ情報は、前記第１プロセッサによって処理される第１の数（Ｎ）の画像オブジェクトとパラレルに、前記第２プロセッサによって処理できる他の非画像データオブジェクトの第２の数（Ｍ）とを含み、
前記プリントジョブ再配列モジュールは、前記第１の数（Ｎ）の画像データオブジェクトと前記第２の数（Ｍ）の他のデータオブジェクトとが、前記再配列されたプリントジョブ内で交互に配置されるように、前記プリントジョブ内のオブジェクトを再配列することを特徴とするシステム。
【請求項７】
前記プリンタマルチ処理能力アナライザモジュールは、前記プリントデバイスに関するスタティックなコンフィギュレーション情報を参照して、前記マルチ処理能力を決定することを特徴とする請求項６に記載のシステム。
【請求項８】
前記プリンタマルチ処理能力アナライザモジュールは、前記プリントデバイスから受信したダイナミックな前記キャパシティ情報から、前記マルチ処理能力を決定することを特徴とする請求項６に記載のシステム。
【請求項９】
前記プリントジョブ再配列モジュールは、前記第１プロセッサによって処理できるデータオブジェクトをグループにまとめると共に、前記第１プロセッサとパラレルに前記第２プロセッサによって処理できる他のデータオブジェクトをグループにまとめることを特徴とする請求項６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、受信したプリントジョブを処理するための複数のプロセッサを有するプリントデバイスを含むシステムにおいて、プリントジョブを処理することに関し、より詳細には、処理のプリンタドライバ層において、プリントジョブ内のオブジェクトを再配列（re-order）することにより、プリントデバイスにおけるプロセッサの利用率を改善するための方法およびシステムに関する。
【背景技術】
【０００２】
今日のプリントデバイス、例えばインクジェットまたはレーザプリンタまたは多機能デバイスは、一般にプリントデバイス内に組み込まれたプリンタ／デバイスコントローラを備え、受信したプリントジョブのデータオブジェクトを処理するために、コントローラに複数のプロセッサを内蔵できる。例えば、かかる複数のプロセッサは、処理タスクを複数の基本的に同じプロセッサに分散できるように複数の汎用プロセッサを含むことができるか、あるいは、種々のタイプのプロセッサ、一部の汎用プロセッサ、および、特定タイプのデータオブジェクトに最良に適した特定のプロセッサ内で特定のデータオブジェクトを処理できるように目的が特化されたその他のプロセッサを含むことができる。例えば一部のプリントデバイスコントローラは、特に画像データまたはカラーデータ、もしくはベクトルデータなどを処理するのに効率的な特殊目的のプロセッサを含むことができる。
【０００３】
かかるマルチプロセッサプリンタコントローラ内には、任意の数のかかる汎用プロセッサおよび／または特別目的のプロセッサを組み込むことができる。現在では、このようなマルチプロセッサプリンタコントローラを使用するかかるほとんどのシステムは、受信したプリントジョブのオブジェクトの処理をどのように最良に分散するかを決定するための責任をプリンタコントローラ内に有している。換言すれば、プリントシステムのプリンタコントローラは、複数のプロセッサ間で受信されたプリントジョブのデータオブジェクトを最良に分散する方法に関し、特有の決定を行う。例えば、特定のプリンタコントローラが、あるタイプのデータオブジェクトを処理するための汎用プロセッサおよび画像データを処理する専用の別の特殊目的のプロセッサを有する場合、受信された画像データオブジェクトを特殊目的の画像データプロセッサに転送し、一方、他のデータオブジェクトを汎用プロセッサ領域に向けることができる。
【０００４】
特許文献１には、複数の描画モジュールを備えたプリンタコントローラにおいて、コンピュータから送信された複数の印刷ジョブを、複数の描画モジュールを用いて並列処理することが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−１８７３１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のプロセッサ間にデータオブジェクトを分散させることが好ましいとき、プリンタコントローラは受信したプリントジョブの複数のデータオブジェクトを実質的にパラレルに処理することにより、その性能を改善できる。換言すれば、各プロセッサは受信したプリントジョブの独立したデータオブジェクトを処理するのにパラレルに作動できる。しかしながら、かかるシステムにおける最適な性能を保証するためには、プリンタコントローラが複数のデータオブジェクトを含む大量のデータを受信し、どのようにすれば複数のプロセッサ間にデータオブジェクトを最も効率的に分散できるかを最良に判断しなければならない。潜在的に大量のプリントジョブデータオブジェクトを記憶しなければならない、かかる分析的処理を施すには、プリンタコントローラに過酷なリソース条件が課せられる場合がある。例えばプリンタコントローラの複数のプロセッサによるパラレル処理のための潜在力を完全に最適にするには、プリンタコントローラがプリントジョブ全体を受信し、データオブジェクトの分散のための分析を実行し、次に複数のプロセッサ間で種々のオブジェクトを分散させなければならない。しかしながら、かかる大量のデータを受信するには、プリンタコントローラにかなりのリソースが必要である。すなわちより低いコストのプリンタシステムで利用できるリソースを超えるリソースが必要となり得る。
【０００７】
上記の記載から、プリントシステムのプリンタコントローラ内の複数のプロセッサの間に処理を分散させるための、改良された方法およびシステムに対するニーズが存在することが明らかである。
【０００８】
本発明は、上述のような実情に鑑みてなされたものであり、その目的は、複数のプロセッサを備えたマルチプロセッサプリンタコントローラでの処理効率を向上させるように、プリントジョブを送信する方法およびシステムを提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の第１の技術手段は、ホストシステムがプリントジョブを、画像データオブジェクトを処理する第１プロセッサと他のデータオブジェクトを処理する第２プロセッサとを有するプリンタに転送するための方法であって、前記ホストシステムが、前記第１プロセッサと前記第２プロセッサのキャパシティ情報から、前記プリンタ内のマルチ処理能力を決定する決定ステップと、前記ホストシステムが、前記プリンタに転送すべきプリントジョブを受理するステップと、前記ホストシステムが、前記プリンタの前記マルチ処理能力に従って、前記プリントジョブ内のオブジェクトを再配列し、再配列されたプリントジョブを発生する再配列ステップと、前記ホストシステムが、前記プリンタでパラレルに複数のオブジェクトを処理するための前記プリンタの前記マルチ処理能力を使って前記プリンタで前記プリントジョブを出力するよう、前記再配列されたプリントジョブを前記プリンタに転送するステップと、を有し、前記キャパシティ情報は、前記第１プロセッサによって処理される第１の数（Ｎ）の画像オブジェクトとパラレルに、前記第２プロセッサによって処理できる他の非画像データオブジェクトの第２の数（Ｍ）とを含み、前記再配列ステップは、前記第１の数（Ｎ）の画像データオブジェクトと前記第２の数（Ｍ）の他のデータオブジェクトとが、前記再配列されたプリントジョブ内で交互に配置されるように、前記プリントジョブ内のオブジェクトを再配列するステップを含むことを特徴としたものである。
【００１０】
第２の技術手段は、第１の技術手段において、前記決定ステップは、前記プリンタに関するスタティックなコンフィギュレーション情報を参照して、前記プリンタの前記マルチ処理能力を決定するステップを更に含むことを特徴としたものである。
【００１１】
第３の技術手段は、第１の技術手段において、前記決定ステップは、前記プリンタの前記マルチ処理能力に関する情報を前記プリンタにリクエストするステップと、前記リクエストに応答し、前記プリンタから前記マルチ処理能力に関する情報を受信するステップとを更に含むことを特徴としたものである。
【００１４】
第４の技術手段は、第１の技術手段において、前記再配列ステップは、前記再配列されたプリントジョブ内のオブジェクトの最適な再配列を可能にするよう、前記プリントジョブの前記オブジェクトをスプールするステップを更に含むことを特徴としたものである。
【００１５】
第５の技術手段は、第１の技術手段において、前記ホストシステムが、前記プリンタから受信した更新情報に応答し、前記プリンタの前記マルチ処理能力をダイナミックに更新するステップを更に有することを特徴としたものである。
【００２５】
第６の技術手段は、画像データオブジェクトを処理する第１プロセッサと他のデータオブジェクトを処理する第２プロセッサとを有するプリントデバイスでドキュメントをプリントするためのシステムであって、ホストシステムと、前記ホストシステム内に設けられ、前記ホストシステムを前記プリントデバイスに結合すると共に、前記ホストシステムからプリントジョブを受信するドライバモジュールと、を備え、前記ドライバモジュールは、前記第１プロセッサと前記第２プロセッサのキャパシティ情報から、前記プリントデバイスに関するマルチ処理能力を決定するプリンタマルチ処理能力アナライザモジュールと、前記マルチ処理能力に従って、受信されたプリントジョブ内のデータオブジェクトを再配列し、再配列されたプリントジョブを発生するプリントジョブ再配列モジュールと、を有し、前記ドライバモジュールは、前記再配列されたプリントジョブを前記プリントデバイスに伝送し、前記プリントデバイスのうちの複数のプロセッサを使って出力を発生し、前記キャパシティ情報は、前記第１プロセッサによって処理される第１の数（Ｎ）の画像オブジェクトとパラレルに、前記第２プロセッサによって処理できる他の非画像データオブジェクトの第２の数（Ｍ）とを含み、前記プリントジョブ再配列モジュールは、前記第１の数（Ｎ）の画像データオブジェクトと前記第２の数（Ｍ）の他のデータオブジェクトとが、前記再配列されたプリントジョブ内で交互に配置されるように、前記プリントジョブ内のオブジェクトを再配列することを特徴としたものである。
【００２６】
第７の技術手段は、第６の技術手段において、前記プリンタマルチ処理能力アナライザモジュールは、前記プリントデバイスに関するスタティックなコンフィギュレーション情報を参照して、前記マルチ処理能力を決定することを特徴としたものである。
【００２７】
第８の技術手段は、第６の技術手段において、前記プリンタマルチ処理能力アナライザモジュールは、前記プリントデバイスから受信したダイナミックな前記キャパシティ情報から、前記マルチ処理能力を決定することを特徴としたものである。
【００３０】
第９の技術手段は、第６の技術手段において、前記プリントジョブ再配列モジュールは、前記第１プロセッサによって処理できるデータオブジェクトをグループにまとめると共に、前記第１プロセッサとパラレルに前記第２プロセッサによって処理できる他のデータオブジェクトをグループにまとめることを特徴としたものである。
【発明の効果】
【００３２】
本発明によれば、複数のプロセッサを備えたマルチプロセッサプリンタコントローラでの処理効率を向上させるように、プリントジョブを送信することができ、もってプリンタコントローラでの処理効率を向上させることができる。
【図面の簡単な説明】
【００３３】
【図１】プリントデバイス内の複数のプロセッサの利用率を改善するための本発明の特徴および様相を含むシステムの一例を示すブロック図である。
【図２】プリントデバイス内の複数のプロセッサの利用率を改善するための、本発明の特徴および様相にかかわる方法の一例を示すフローチャートである。
【図３】図２の方法の様相における処理の更なる細部の例を示すフローチャートである。
【図４】図２の方法の様相における処理の更なる細部の例を示すフローチャートである。
【図５】プリントデバイス内の複数のプロセッサの利用率を改善するための、本発明の特徴および様相にかかわる別の方法の一例を示すフローチャートである。
【発明を実施するための形態】
【００３４】
本発明は、取り付けられたホストシステム内のプリンタのマルチ処理能力を決定するための方法およびシステムを提供することにより、有効な技術状態を進歩させるよう、上記およびそれ以外の問題を解決するものである。従って、本発明の特徴および様相は、プリントシステム内で複数のプロセッサの利用率を改善できるよう、プリントジョブ内のオブジェクトを再配列するために、ホストシステムの計算リソースを利用するものである。
【００３５】
本発明の特徴は、プリントジョブをプリンタに転送するための方法を提供することにある。この方法は、プリンタ内のマルチ処理能力を決定することと、プリンタに転送すべきプリントジョブを受信することとを有する。この方法は次に、プリンタのマルチ処理能力に従って、プリントジョブ内のオブジェクトを再配列（re-order、再分配）し、再配列されたプリントジョブを発生する。次にこの再配列されたプリントジョブは、プリンタでパラレルに複数のオブジェクトを処理するためのプリンタのマルチ処理能力を使って、プリンタ上でプリントジョブを出力するために、プリンタへ転送される。
【００３６】
別の特徴は、多機能デバイスに結合されたホストシステム内で作動できる方法を提供することにある。この方法は、プリントジョブ内のオブジェクトを再配列する。この方法は、ホストシステム内において、多機能デバイスのうちの第１プロセッサが画像オブジェクトを処理するためのキャパシティ、および多機能デバイスのうちの第２プロセッサが他のデータオブジェクトを処理するためのキャパシティを決定することを含む。これらキャパシティは、多機能デバイスに関するプロファイル情報から決定される。この方法は次に、受信したプリントジョブ内の他のデータオブジェクトとパラレルに処理できる、受信したプリントジョブ内の画像データオブジェクトを識別する。このホストシステム内の方法は、プリントジョブ内のオブジェクトを再配列し、第１プロセッサおよび第２プロセッサのキャパシティに従って１つにグループ分けされた画像データオブジェクトおよびグループ分けされた他のデータオブジェクトを有する再配列されたプリントジョブを発生する。再配列されたプリントジョブは、次にホストシステムから多機能デバイスへ伝送される。次に多機能デバイスは多機能デバイスのうちの第２プロセッサを使用することとパラレルに、他のオブジェクトを処理しながら、多機能デバイスのうちの第１プロセッサを使って再配列されたプリントジョブの画像オブジェクトを処理し、この処理は、多機能デバイス上に再配列されたプリントジョブを出力する。
【００３７】
本発明の更に別の特徴は、プリンタに結合するホストシステム内で作動できる方法を提供する。この方法は、プリンタ内の複数のプロセッサの数を決定することと、プリンタへ送られるプリントジョブを受信することとを有し、このプリントジョブは、あるシーケンスのオブジェクトを含む。本方法は次に、受信したプリントジョブ内のオブジェクトを識別し、識別された各オブジェクトとプリンタの複数のプロセッサのうちの対応するプロセッサとを関連付ける。本方法は次に、プリントジョブ内のオブジェクトを再配列し、対応する共通プロセッサに関連付けされた、グループにまとめられたオブジェクトを有する再配列されたプリントジョブを発生する。再配列されたプリントジョブは次にプリンタへ伝送され、プリントされた出力を発生する。ここで、オブジェクトはプリンタの複数のプロセッサでパラレルに処理される。
【００３８】
図１は、取り付けられたプリントデバイス１１０内の複数のプロセッサ（１１２および１１４）の利用率を改善するために、受信したプリントジョブ１０２を処理するためにホストシステム１０１内で作動できるドライバ１０４を含むシステム１００の一例を示すブロック図である。プリントデバイス１１０は、スタンドアローンプリンタまたは（スキャン能力および／またはコピー能力を含む）マルチ機能デバイスとして具現化された、例えばインクジェットデバイスおよびレーザプリントデバイスを含む任意の適当なプリントデバイスとすることができる。
【００３９】
ドライバ１０４は、一般にホストシステム１０１内で作動できるオペレーティングシステムソフトウェアと統合されている。ホストシステム１０１は、例えば適当なネットワークを通して他のシステムおよびプリントデバイス１１０に統合されたプリントサーバ計算ノードを含む任意の適当なパソコンまたはワークステーションとすることができる。ホストシステム１０１のドライバ１０４は、プリントジョブ１０２のソースにかかわらず、プリントジョブを受信し、プリントジョブ再配列要素１０８での処理により、プリントジョブ１０２内で受信したデータオブジェクトを再配列する。一般に、強化されたドライバ１０４は、受信したオブジェクトを、プリントデバイス１１０によってサポートされた特定のページ記述言語（ＰＤＬ）のための対応するオブジェクトとなるように、必要な変換も行う。従って、再配列は、受信したオブジェクトを対応するＰＤＬオブジェクトに変換するよう、ドライバ１０４による処理と統合できる。ドライバ１０４の要素１０８の処理によるプリントジョブ１０２内のオブジェクトの特定の再配列は、プリントデバイス１１０内の複数のプロセッサによる再配列されたデータオブジェクトのパラレル処理をするための潜在力を改善できる。
【００４０】
プリントデバイス１１０は、受信したプリントジョブ（例えばホストシステム１０１内のドライバ１０４のプリントジョブ再配列要素１０８の処理により発生される再配列されたプリントジョブ）のデータオブジェクトを処理するための複数のプロセッサ１１２および１１４を含む。プリントデバイス１１０の複数のプロセッサ１１２および１１４の各々は汎用プロセッサでもよいし、または特殊なプリントデバイス用に適した特別目的のプロセッサのいずれでもよい。図１は２つのプロセッサ（１１２および１１４）を示しているが、特定のプリントシステム１１０内に任意の数（２つ以上）のプロセッサが存在していてもよい。複数のプロセッサのうちの少なくとも１つ（１１２）は、例えば画像スキャナ１１６のような他の周辺コンポーネントとの相互対話およびマーキングエンジン１１８の制御を含むプリントデバイス１１０の制御全体に対する責任も果たす。
【００４１】
多くのプリントシステムでは、少なくとも１つの追加プロセッサ１１４は、特定タイプのデータオブジェクトに適した特定のデータ処理計算を実行するのに、その処理を特化している。例えば、プリントデバイス１１０の第２プロセッサ１１４は、特に画像データオブジェクトを処理するようにできる。従って、プリントデバイス１１０内のプロセッサ１１２による別のデータオブジェクトの処理と実質的にパラレルに、プロセッサ１１４により画像データオブジェクトを処理できる。上記のようにプリントデバイス１１０内では任意の数のプロセッサを使用できる。更に、各プロセッサにより処理される特別のタイプのオブジェクトをグループ分けし、特定のアプリケーションに適す各プロセッサに関連付けできる。従って、プロセッサ１１２による画像データオブジェクトの処理およびプロセッサ１１４による他のオブジェクトの処理は、種々のプロセッサの間の処理の１つの可能な分割の一例にすぎない。
【００４２】
プリントデバイス１１０のマルチプロセッサのうちの少なくとも１つのプロセッサ１１２は、ホストシステム１０１内のドライバ１０４のプリンタ能力分析要素１０６と相互対話できる。この相互対話は、プリントデバイス１１０のマルチプロセッサ能力を表示する情報の返信を含むことができる。かかる情報は、ドライバ１０４によるプリントデバイス１１０の初期化時に１回得ることができるので、システム１００の動作全体にわたってスタティックとなり得る。上記方法とは異なり、ドライバ１０４のプリンタ能力アナライザ１０６が、そのときのマルチ処理能力を判断するように、時間ごとにプリントデバイス１１０と相互対話してもよい。従って、データオブジェクトを処理するための任意のプロセッサの能力が変わるにつれ、プリンタ能力アナライザ１０６はプリントデバイス１１０からそのときの性能情報を得ることができる。更に、別の方法では、プリントデバイス１１０はプリントデバイス１１０のそのときのマルチ処理能力に対する変化を示す情報を非同期的に発生し、プリンタ能力アナライザ要素１０６内で処理するためのかかる変化を表示する適当なメッセージを発生できる。更に別の実施形態では、プリントデバイス１１０がプリントデバイス１１０のそのときのマルチ処理能力をドライバ１０４に伝えるために、かかる双方向通信を行う能力を提供しなくてもよい。従って、能力分析要素１０６は特定のプリントデバイス１１０に関連したスタティックなコンフィギュレーション情報（図示せず）から、プリントデバイス１１０のマルチ処理能力を判断することを試しみることができる。プリントシステムからダイナミックに得るか、またはスタティックに構成するかのいずれにおいても、例えば各プロセッサに対するＣＰＵの利用、ＣＰＵが処理できるオブジェクトのサイズ、プリントデバイス内のメモリの利用率、プリントデバイスにおけるディスクスペースの利用、およびプリントデバイスの処理のそのときのステートなどを含むパフォーマンス情報からデバイス１１０のマルチ処理能力決定できる。
【００４３】
かかるマルチ処理能力情報がどのように決定されるかにかかわらず、この情報は、関連するタイプのデータオブジェクトを処理するためのマルチプロセッサの各々の能力を一般に含むことができる。例えば２つのプロセッサ（画像データオブジェクトのための１つのプロセッサと他のすべてのオブジェクトのための別のプロセッサ）を有するプリントシステムについては、マルチ処理能力／キャパシティ情報としては、画像データオブジェクトの数（第１の数Ｎ）と、非画像データオブジェクトまたは他のデータオブジェクトの数（第２の数Ｍ）とを含むことができる。この第１の数Ｎは、第２の数Ｍの非画像データオブジェクトまたは他のデータオブジェクトに先行する（または後に続かなければならない）画像データオブジェクトの数とする。ここで、ＮとＭは１より大きい任意の整数とすることができる。従って、ＭとＮとにより、異なるオブジェクトタイプの連続するオブジェクトをインターリーブする処理を含む再配列処理を行う特定シーケンスを明記できる。従って、かかるマルチ処理能力情報に応答し、強化されたドライバ１０４の再配列要素１０８は、プリントジョブ内のデータオブジェクトを再配列し、Ｎ個（またはそれよりも少数）の画像データオブジェクトが、再配列後のプリントジョブデータ内のＭ個（またはそれよりも少数）の非画像データオブジェクトまたは他のデータオブジェクトに常に先行する（または後に続く）ように、データオブジェクトを発生する。更に別のキャパシティ情報は、画像データオブジェクトの複雑さ、例えば画像カラー深度、画像ディメンション、および画像分析能などから誘導される、処理すべき画像データの総ボリュームに関する情報を含むことができる。
【００４４】
例えば複数のオブジェクトを処理するのに共通する一部のステート情報が必要となる場合、または例えばデータオブジェクトの処理の配列が、発生されたページ画像に影響を与え得る場合、オブジェクトのうちの適当なグループと不適当なグループとを識別するように、より多くの分析を行うことができる。強化されたドライバ１０４は、かかるグループの適否（propriety）に関する判断を行うことができるようにプリントジョブのデータオブジェクトに関し、十分な情報にアクセスする。当業者には適当な再配列を決定するための分析におけるかかる設計の選択が容易に明らかとなろう。
【００４５】
マルチ処理のためのプリントデバイスのキャパシティに関する強化されたドライバモジュール１０４とプリントデバイス１１０との間の交換は、いくつかの周知のデバイス管理プロトコルのうちのいずれかを利用できる。例えばかかる交換のために、シンプルネットワーク管理プロトコル（ＳＮＭＰ）を利用できるだけでなく、マイクロソフト社のＷＳＤＰｒiｎｔプリンタドライバプロトコルも使用できる。他のプリンタ管理プロトコルも周知であり、これらプロトコルをかかるプリンタ管理に使用できる。これら周知のプロトコルの多くを記載した仕様書は、国際標準化機構（ＩＳＯ−ｗｗｗ．ｉｓｏ．ｏｒｇ参照）、印刷関連の業界団体（ＰＷＧ−ｗｗｗ．ｐｗｇ．ｏｒｇ参照）、インターネット規格標準化団体（ＩＥＴＦ−ｗｗｗ．ｉｅｔｆ．ｏｒｇ参照）といった種々の標準機構により作成され、維持され、公開されている。またさらに、プリント製品の特定の業者に特有のカスタマイズされたプロトコルは、プリンタドライバ１０４およびプリントシステム１１０の間で使用されてもよい。
【００４６】
当業者であれば、プリントデバイス１１０は、任意の数の汎用および／または特殊目的のプロセッサ（各プロセッサは特定タイプのデータオブジェクトに割り当てられている）を含む任意の数のプロセッサを含むことができることが容易に認識できよう。更に、マルチ処理能力情報は再配列されたプリントジョブ内のデータオブジェクトの望ましい再配列を定める任意の適当な形態の情報を含むことができる。データオブジェクトは、ジョブ再配列要素１０８のプリント動作により、任意の数のタイプのオブジェクトに分離し、再配列でき、あるタイプのオブジェクトの任意の数のかかるグループを、任意の数の他のタイプのデータオブジェクトとインターリーブした状態または交互となる状態に設けることができる。
【００４７】
更に、当業者であれば、完全に作動できるシステム１００において、種々の追加かつ均等的要素を容易に認識できよう。図１からは、説明を簡潔にするために、これら追加または均等的要素は省略されている。従って、図１は本発明の特徴および様相を含むシステムの１つの可能な実施形態の例に過ぎない。
【００４８】
図２は、取り付けられたプリントデバイス内のマルチプロセッサによりデータオブジェクトをパラレルに処理するための機会を改善するために、受信されたプリントジョブ内のオブジェクトを再配列するよう、ホストシステム内に作動できる本発明の特徴および様相に係わる方法の一例を示すフローチャートである。図２の方法は、図１に示されているようなシステム１００のホストシステムのドライバモジュール内で作動できる。ステップ２００は、まず取り付けられたプリントデバイスのマルチ処理能力を決定する。上記のように、ホストシステム内で提供されたスタティックなコンフィギュレーション情報を参照して、かかる決定を行うことができる。かかるスタティックなコンフィギュレーション情報は特殊なプリントデバイスと関連付けてもよいし、またはホストシステムに取り付けられた特定の物理的プリンタと関連付けてもよい。更に上記のように、ホストシステムの強化されたドライバモジュールは、プリントデバイスからのかかる能力情報を受信することにより、プリントデバイスのマルチ処理能力をダイナミックに判断できる。このマルチ処理能力情報は、プリントデバイスの動作により非同期で、または強化されたドライバモジュールからプリントデバイスに向けられた問い合わせに応答し、強化されたドライバモジュールへ返信することができる。更に上記のように、能力情報は再配列されたプリントジョブ内の識別されたタイプのデータオブジェクトを取り扱うための各プロセッサの能力を含むことができる。例えばプリントデバイスの他の１つ以上のプロセッサによって処理すべき第２の数（Ｍ）の他のデータオブジェクトと実質的にパラレルに、適当な１つ以上の特殊目的のプロセッサによって処理できる画像データオブジェクトの数（Ｎ）として、キャパシティ情報を表記できる。当業者であれば、複数のプロセッサをパラレルに使用することにより、プリントジョブ内の複数のタイプのオブジェクトをパラレルに処理するためのプリントデバイスの能力を表記するための複数の他のフォーマットを容易に認識できよう。
【００４９】
ステップ２０２は次に、マルチ処理のためのプリントデバイスのキャパシティまたは能力の決定に応答し、適当なソースからのプリントジョブを受信する。プリントジョブは、あるシーケンスのデータオブジェクトを含む。ホスト計算環境内で作動中のドライバモジュールは、その配置時に重要なリソースを有することができるので、再配列されたプリントジョブ内でデータオブジェクトを再配列するための能力を改善するためにプリントジョブ全体をセーブまたはスプールすることができる。例えば持続するディスク記憶ファイルにスプールすることを含む、ホストシステム上のドライバモジュールに関連した適当なメモリ内にプリントジョブをバッファ化またはスプールすることができる。次にステップ２０４は、プリントデバイスのマルチ処理能力に従って、データオブジェクトの所望する再配列を実行する。従って、ステップ２０４は、元のデータオブジェクトを再配列させたプリントジョブを発生する。上記のように、一実施形態によれば、第１の数（Ｎ）の画像データオブジェクトが、（Ｍ個の）非画像または他のデータオブジェクトの各グループに先行する（または後に続く）ことができるように、再配列されたデータオブジェクトをグループ分けできる。次にかかるオブジェクトのグループ分けは、プリントデバイスのマルチ処理の能力およびキャパシティに従い、画像データオブジェクトと非画像データオブジェクトとの間で交互に続けることができる。
【００５０】
プリントジョブ全体の受信を待つのではなく、プリントジョブの任意の部分を処理してもよいことが容易に明らかとなろう。かかるケースでは、プリントジョブの各部分を受信する際に、その部分に対する再配列されたデータオブジェクトが発生されるよう、すべてのオブジェクトが処理されるまで、ステップ２０２および２０４の処理を繰り返すことができる。従って、本明細書で使用する「プリントジョブ」なる用語は、プリントジョブの任意の部分も意味すると理解してもよい。例えば一部は、１つのフルドキュメント、マルチドキュメント、１つ以上のドキュメントの一部、１つのフルページ、マルチページ、プリントジョブの１ページの１つ以上の束の部分などでもよい。従って、プリントジョブは、プリントジョブ全体のどのような所望の部分であってもよい。
【００５１】
次に、ステップ２０６は、プリントデバイスの複数のプロセッサが、再配列されたデータからの複数のオブジェクトを処理するように、実質的にパラレルに作動できるよう、再配列されたプリントジョブをプリントデバイスに送信する。次に、ステップ２０８は、プリントシステムの動作によりプリント可能なメディア上に、再配列されたプリントジョブを出力する。ステップ２０８のプリンタシステム処理は、再配列されたデータオブジェクトに基づき、複数のオブジェクトをパラレルに処理するためのマルチ処理能力を良好に利用できる。
【００５２】
図３は、プリントデバイスの現在のマルチ処理能力を決定するための、図２のステップ２００の処理の更なる詳細な例を示すフローチャートである。ステップ３００は、プリントデバイスが双方向の通信ができるかどうかを判断する。双方向の通信が可能でない場合、ステップ３０６でプリントデバイスがスタティックに決定されたプリントデバイスの能力（例えばプリントデバイスのあらかじめコンフィギュアされたマルチ処理能力）を記憶するための、現在のプロファイル情報を利用する処理が続けられる。プリントデバイスがマルチ処理のための現在のキャパシティを決定するために、双方向の通信をサポートしている場合、ステップ３０２は次にそのときのマルチ処理能力またはキャパシティを決定するためにプリントデバイスに問い合わせをする。プリントデバイスは、データオブジェクトを実質的にパラレルに処理するためのプリントデバイスのマルチプロセッサのそのときのキャパシティを返信することにより、かかる問い合わせに応答する。ステップ３０４は、かかる返信された情報を使用し、複数のデータオブジェクトをパラレル処理するための現在のキャパシティを示すために、このプリントデバイスのためのそのときのプロファイル情報を更新する。次にステップ３０６は、プリントデバイスのマルチ処理のためのそのときの（更新された）キャパシティ情報を利用し、上記のような処理を完了する。
【００５３】
上記のように本発明の特徴および様相の別の実施形態は、ホストシステムの強化されたドライバモジュールへ転送される適当なメッセージを発生することにより、プリントデバイスがプロファイル情報を非同期に更新できるようにするものである。従って、マルチ処理のためのプリントデバイスのキャパシティに関するそのときのプリント情報を更新するために、ステップ３０４を非同期的に起動できる。一般に、かかる強化されたプリントデバイスは、プリントデバイス内（例えばプリンタコントローラの各プロセッサ内）のリソースの利用率をモニタできる。例えばリソースの利用率、例えば各プロセッサのためのＣＰＵの利用率、各プロセッサのためのメモリ利用率、および他の性能および各プロセッサのための通信バンド幅パラメータを、強化されたプリントデバイス内の機能によって連続的にモニタできる。強化されたプリントデバイスのマルチ処理能力の大幅な変更が検出されると、非同期メッセージを発生し、取り付けられたホストシステムの強化されたドライバモジュールへ転送し、ドライバモジュールがステップ３０４の動作により、このプリントデバイスに関するプロファイル情報を更新できるようにする。当業者であれば、プリントデバイスの性能キャパシティが変化したことを決定するためにモニタできる特別な複数のリソースについて容易に認識できよう。
【００５４】
図４は、プリントデバイスのそのときのマルチ処理キャパシティに従ってプリントジョブのデータオブジェクトを再配列し再配列されたプリントジョブを発生する、図２のステップ２０４の処理の更なる詳細例を示すフローチャートである。図４のフローチャートは、２つのプロセッサ（１つは画像データオブジェクト処理専用であり、第２のプロセッサは他のすべてのオブジェクト処理のためのものである）を備えたプリントシステムのためのプリントジョブをドライバが再配列する処理を例示したものである。当業者であれば、各々が１つ以上のタイプのデータを処理する任意の数のプロセッサに方法を拡張できることが容易に認識できよう。
【００５５】
まず、ステップ４００にて、処理すべき元のプリントジョブ内に追加データオブジェクトが残っているかどうかを判断する。処理の開始段階では、必ずデータオブジェクトが残っておりステップ４００でＹＥＳとなるため、ステップ４０２にて、プリントデバイスのためのそのときのプロファイル情報に基づき、再配列後のプリントジョブ内にあるべき第２の数（Ｍ）の他の非画像データオブジェクトに先行する（または後に続く）ことが望ましい、画像データオブジェクトの数（Ｎ）を決定する。第１の数Ｎおよび第２の数Ｍを決定した後に、ステップ４０４にて、元のプリントジョブから、多くてＮ個の次の画像データオブジェクトを添付した再配列後のプリントジョブを作成する。次にステップ４０６にて、元のプリントジョブから再配列後のプリントジョブ（Ｎ個の画像データオブジェクトでなる再配列後のプリントジョブ）の後へ、多くてＭ個の他の非画像データオブジェクトを添付する。その後、ステップ４００に戻り、ステップ４０６で再配列されたプリントジョブに対し、元のプリントジョブに未再配列のデータオブジェクトが残っているか、元のプリントジョブのすべてのデータオブジェクトが正しく添付済みであるか、を判断する。
そして、ステップ４００でＮＯとなるまで、ステップ４０２，４０４，４０６のループを繰り返す。
【００５６】
例えば、１回目のループでステップ４００の判定が未だＹＥＳとなる場合には次のような２回目のループを行う。２回目のループでは、ステップ４０２がプリントデバイスのためのそのときのプロファイル情報に基づき、再配列後（２回目のループ終了後）のプリントジョブ内にあるべき第２の数（Ｍ）の他の非画像データオブジェクトに先行する（または後に続く）ことが望ましい、画像データオブジェクトの数（Ｎ）を決定する。第１の数Ｎおよび第２の数Ｍを決定した後に、ステップ４０４は、元のプリントジョブから１回目のループで再配列されたプリントジョブの後へ、多くてＮ個の次の画像データオブジェクトを添付する。次にステップ４０６は、元のプリントジョブから再配列されたプリントジョブ（１回目のループによるＮ個の画像データオブジェクト、１回目のループによるＭ個の非画像データオブジェクト、今回のループによるＮ個の画像データオブジェクト、が順に配置された再配列後のプリントジョブ）の後へ、多くてＭ個の他の非画像データオブジェクトを添付する。
２回目のループの処理後でも、ステップ４００で未だＹＥＳとなる場合には、同様に３回目のループを行う。このようにして、元のプリントジョブのすべてのデータオブジェクトの添付が終了するまで、ステップ４０６の後にステップ４００へループバックする処理が続く。
【００５７】
上記のように、再配列されたプリントジョブを発生するために、元のプリントジョブからデータオブジェクトを再配列する目的のために、プリントデバイスのマルチ処理能力に関する、他の複数の形態のキャパシティまたは能力情報を利用できる。従って、ある数の画像データオブジェクトの次に第２の数の他の非画像データオブジェクトが続く上記再配列は、本発明の特徴および様相に従った再配列の１つのタイプにすぎない。
【００５８】
図５は、プリントジョブ内のデータオブジェクトを再配列し、よって複数のプロセッサを有するプリントデバイス内のデータオブジェクトの改良されたパラレル処理を可能にするように強化されたドライバモジュールを作動させるための、本発明の特徴および様相に係わる方法の別の例を示すフローチャートである。ステップ５００は、まずプリントデバイス内のプロセッサの数および識別されたプロセッサの各々におけるオブジェクト処理のためのキャパシティを決定する。上記のようにプリントデバイス内の複数のプロセッサの各々に関するかかるキャパシティおよび能力情報は、特定のプリントデバイスに関するスタティックなコンフィギュレーション情報から得ることができ、および／またはプリントデバイスからのそのときの能力またはキャパシティ情報を得るように、プリントデバイスと通信することによって判断することができる。
【００５９】
ステップ５０２は次に、元の配列においてシーケンスとなっている複数のオブジェクトを含むオリジナルのプリントジョブを、受信（スプール）する。上記のように、ホストシステムでは、強化されたドライバモジュールが作動できるので、ドライバモジュールがプリントジョブ全体（またはそのプリントジョブ全体の供給された部分）をスプールし、取り付けられたプリントデバイス上のマルチ処理のためのキャパシティおよび能力に従ってデータオブジェクトをより完全に分析し、再配列することが可能となるように、一般に（プリントデバイス内のリソースと比較して）かなりのリソースを利用できる。
【００６０】
ステップ５０４は、スプールされたプリントジョブ内の各データオブジェクトのために、そのオブジェクトと、プリントデバイス内の複数のプロセッサのうちの対応するプロセッサとを関連付ける。一実施形態では、特定のタイプの、例えば画像データオブジェクト、テキストデータオブジェクト、ベクトルデータオブジェクト、カラーデータオブジェクト、グラフィックデータオブジェクトなどと、各データオブジェクトとを関連付けできる。更にプリントデバイスの複数のプロセッサのうちの各プロセッサを、種々のタイプのオブジェクトのうちの１つ以上を処理するようになっていると識別できる。従って、データオブジェクトのタイプに基づき、各オブジェクトと、対応するプリンタとを関連付けできる。
【００６１】
ステップ５０６は同じプロセッサに関連するデータオブジェクトをグループ分けすることにより、再配列されたプリントジョブを発生する。上記例を参照し続ければ、すべての画像データオブジェクトを、特に画像データ処理に適合しているプロセッサとを関連付けできる。ベクトルデータオブジェクトは、特にベクトルデータ処理をするプロセッサと、関連付けられるように共にグループ分けできる。他のデータオブジェクトは、その関連するタイプに従い、かつそのタイプの処理をするためのプロセッサに従ってグループ分けできる。更に上記のように、キャパシティまたは能力情報は、強化されたプリントデバイスにおいてそれぞれ種々のプロセッサにより、パラレルに処理できるデータオブジェクトの各タイプの特定の数も示すことができる。こうして、ステップ５０６は、データオブジェクトをグループ化し、プリントデバイスの複数のプロセッサ内でパラレルに処理するための最良の機会を示すように、それらをインターリーブする。ステップ５０８は、その後、再配列されたプリントジョブをプリントデバイスに送信する。ステップ５１０は、複数のプロセッサを中で利用するそのプリントデバイスでの処理を、再配列されたプリントジョブデータを実質的にパラレルに処理するように表わす。
【００６２】
最良のケースのシナリオでは、複数のプロセッサの各々がほぼ同じ時間に処理を完了し、次に同じタイプのオブジェクトの次のグループの処理を再スタートできるように、再配列されたオブジェクトをグループ分けする。特に例えば、Ｎ個の画像データオブジェクトのグループをＭ個の他のオブジェクトのグループとほぼ同じ経過時間で処理でき、各処理は関連するプロセッサ（例えば画像オブジェクトプロセッサと別のオブジェクトプロセッサ）の作動により実行される。
【００６３】
図面およびこれまでに記載で、本発明について説明し、図示したが、かかる図示および記載は、当然、例にすぎず、限定的なものではない。本発明の種々の実施形態および本発明の小さい変形についても図示し、説明した。特に当業者であれば、これまで説明した方法の例は、汎用または特殊目的のプログラマブルプロセッサにより実行される、適当にプログラムされる命令として実施できるか、または組み合わせたおよび／またはシーケンスロジック要素を含む均等なカスタムロジック回路として実施することもできる。本発明の要旨の範囲に入るすべての変形および変更について、保護を求める。当業者であれば、本発明の要旨の範囲内の上記実施形態の変形例については理解できよう。この結果、本発明はこれまで説明した特定の例および説明だけに限定されるものではなく、次の特許請求の範囲およびその均等物によってしか限定されない。
【符号の説明】
【００６４】
１０１…ホストシステム、１０２…プリントジョブ、１０４…ドライバ、１０６…プリンタ能力アナライザ、１０８…プリントジョブ再配列要素、１１０…プリンタ（例えば多機能デバイス）、１１２…プロセッサ１（他のオブジェクトおよび全制御）、１１４…プロセッサｎ（画像オブジェクト）、１１６…画像スキャナ、１１８…マーキングエンジン。
【図１】
0004810580.tif 000002
【図２】
0004810580.tif 000003
【図３】
0004810580.tif 000004
【図４】
0004810580.tif 000005
【図５】
0004810580.tif 000006