(57)【要約】  出力データを複数セットの転送データに分割して周辺機器（３）に転送する転送機能（２２）を有するホスト装置（２）であって、転送機能（２２）が、複数セットの転送データを順番に圧縮してメモリ（１４）に格納し、圧縮済みのデータセット（８２ｃ）および未圧縮のデータセット（８２ｎ）を選択して転送する装置を提供する。転送機能（２２）は、今回のデータセットの転送の開始が可能となった時に、今回のデータセットが圧縮済みであれば、圧縮済みのデータセットを転送すること、今回のデータセットが圧縮済みでなければ、圧縮済みのデータセットを転送したときの第１の終了時間と、未圧縮のデータセットを転送したときの第２の終了時間とを予測し、予測された終了時間の短いデータセットを転送すること、および、転送を開始する時に、次回のデータセットの圧縮が開始されていなければ、そのデータセットの圧縮を開始することを含む判断を行なう。【特許請求の範囲】
【請求項１】
ホスト装置から出力データを複数セットの転送データに分割して周辺機器に転送する工程を有する方法であって、当該転送する工程は、前記複数セットの転送データを順番に圧縮してメモリに格納し、圧縮済みのデータセットおよび未圧縮のデータセットのいずれかを選択して転送し、さらに、この転送する工程は、
今回のデータセットの転送の開始が可能となったときに、前記今回のデータセットが圧縮済みであれば、圧縮済みの今回のデータセットを転送し、
前記今回のデータセットの転送の開始が可能となったときに、前記今回のデータセットが圧縮済みでなければ、前記圧縮済みの今回のデータセットを転送したときの第１の終了時間と、未圧縮の今回のデータセットを転送したときの第２の終了時間とを予測し、予測された終了時間の短い今回のデータセットを転送し、
今回のデータセットの転送を開始するときに、次回のデータセットの圧縮が開始されていなければ、前記次回のデータセットの圧縮を開始することを含む、方法。
【請求項２】
前記転送する工程は、前回のデータセットの転送速度に基づき、前記第１の終了時間および第２の終了時間を予測することを含む、請求項１の方法。
【請求項３】
前記転送する工程は、前記転送速度、または前記転送速度を求めるための情報を、前記周辺機器から転送許可信号と共に取得することを含む、請求項２の方法。
【請求項４】
前記転送する工程は、さらに、前記圧縮済みの今回のデータセットの予測データ量が、データ転送に割当てられた前記周辺機器のバッファの空き容量よりも大きいときは、前記圧縮済みの今回のデータセットを転送することを含む、請求項１の方法。
【請求項５】
前記転送する工程は、さらに、前記圧縮済みの今回のデータセットの予測データ量が前記周辺機器のバッファの空き容量よりも小さく、かつ、前記未圧縮の今回のデータセットのデータ量が前記バッファの空き容量よりも大きいときは、前回のデータセットの転送速度および前記バッファの解放速度に基づき前記第２の終了時間を予測することを含む、請求項１の方法。
【請求項６】
出力データを複数セットの転送データに分割して周辺機器に転送し、前記周辺機器において前記出力データに基づく出力を生成可能とする転送手段を有する装置であって、
前記転送手段は、前記複数セットの転送データを順番に圧縮してメモリに格納し、圧縮済みのデータセットおよび未圧縮のデータセットのいずれかを選択して転送し、さらに、この転送手段は、
今回のデータセットの転送の開始が可能となったときに、前記今回のデータセットが圧縮済みであれば、圧縮済みの今回のデータセットを転送すること、
前記今回のデータセットの転送の開始が可能となったときに、前記今回のデータセットが圧縮済みでなければ、前記圧縮済みの今回のデータセットを転送したときの第１の終了時間と、未圧縮の今回のデータセットを転送したときの第２の終了時間とを予測し、予測された終了時間の短い今回のデータセットを転送すること、
今回のデータセットの転送を開始するときに、次回のデータセットの圧縮が開始されていなければ、前記次回のデータセットの圧縮を開始すること、を含む判断を行う、装置。
【請求項７】
前記転送手段は、前回のデータセットの転送速度に基づき、前記第１の終了時間および第２の終了時間を予測する、請求項６の装置。
【請求項８】
前記転送手段は、前記転送速度、または前記転送速度を求めるための情報を、前記周辺機器から転送許可信号と共に取得する、請求項７の装置。
【請求項９】
前記転送手段は、さらに、
前記圧縮済みの今回のデータセットの予測データ量が、データ転送に割当てられる前記周辺機器のバッファの空き容量よりも大きいときは、前記圧縮済みの今回のデータセットを転送すること、を含む判断を行う、請求項６の装置。
【請求項１０】
前記転送手段は、前記圧縮済みの今回の予測データ量が、前記周辺機器のバッファの空き容量よりも小さく、かつ、前記未圧縮の今回のデータセットのデータ量が前記バッファの空き容量よりも大きいときは、前回のデータセットの転送速度および前記バッファの解放速度に基づき前記第２の終了時間を予測する、請求項６の装置。
【請求項１１】
ホスト装置と、このホスト装置から複数セットの転送データに分割して転送された出力データに基づき印刷するプリンタとを有するシステムであって、
前記ホスト装置は、前記複数セットの転送データを順番に圧縮してメモリに格納し、圧縮済みのデータセットおよび未圧縮のデータセットのいずれかを選択して転送する前記転送手段を有し、さらに、この転送手段は、
今回のデータセットの転送の開始が可能となったときに、前記今回のデータセットが圧縮済みであれば、圧縮済みの今回のデータセットを転送する、
前記今回のデータセットの転送の開始が可能となったときに、前記今回のデータセットが圧縮済みでなければ、前記圧縮済みの今回のデータセットを転送したときの第１の終了時間と、未圧縮の今回のデータセットを転送したときの第２の終了時間とを予測し、予測された終了時間の短い今回のデータセットを転送する、
今回のデータセットの転送を開始するときに、次回のデータセットの圧縮が開始されていなければ、前記次回のデータセットの圧縮を開始すること、を含む判断を行う、システム。
【請求項１２】
前記転送手段は、前回のデータセットの転送速度に基づき、前記第１の終了時間および第２の終了時間を予測し、
前記プリンタは、前記転送速度、または前記転送速度を求めるための情報を、転送許可信号と共に送信する手段を備えている、請求項１１のシステム。
【請求項１３】
前記転送手段は、さらに、
前記圧縮済みの今回のデータセットの予測データ量が、データ転送に割当てられる前記プリンタのバッファの空き容量よりも大きいときは、前記圧縮済みの今回のデータセットを転送すること、を含む判断を行う、請求項１１のシステム。
【請求項１４】
前記転送手段は、前記圧縮済みの今回の予測データ量が、前記プリンタのバッファの空き容量よりも小さく、かつ、前記未圧縮の今回のデータセットのデータ量が前記バッファの空き容量よりも大きいときは、前回のデータセットの転送速度および前記バッファの解放速度に基づき前記第２の終了時間を予測する、請求項１１のシステム。
【請求項１５】
コンピュータから出力データを複数セットの転送データに分割して周辺機器に転送し、前記周辺機器において前記出力データに基づく出力を生成するためのデバイスドライバプログラムであって、
前記複数セットの転送データを順番に圧縮して前記コンピュータのメモリに格納し、前記メモリの圧縮済みのデータセットおよび未圧縮のデータセットのいずれかを選択して転送する処理を含み、この転送する処理は、
今回のデータセットの転送の開始が可能となったときに、前記今回のデータセットが圧縮済みであれば、圧縮済みの今回のデータセットを転送し、
前記今回のデータセットが圧縮済みでなければ、前記圧縮済みの今回のデータセットを転送したときの第１の終了時間と、未圧縮の今回のデータセットを転送したときの第２の終了時間とを予測し、予測された終了時間の短い今回のデータセットを転送し、
前記今回のデータセットの転送を開始するときに、次回のデータセットの圧縮が開始されていなければ、前記次回のデータセットの圧縮を開始することを含む、プログラム。
【請求項１６】
前記転送する処理は、前回のデータセットの転送速度に基づき、前記第１の終了時間および第２の終了時間を予測することを含む、請求項１５のプログラム。
【請求項１７】
前記転送する処理は、前記転送速度、または前記転送速度を求めるための情報を、前記周辺機器から転送許可信号と共に取得することを含む、請求項１６のプログラム。
【請求項１８】
前記転送する処理は、さらに、前記圧縮済みの今回のデータセットの予測データ量が、データ転送に割当てられた前記周辺機器のバッファの空き容量よりも大きいときは、前記圧縮済みの今回のデータセットを転送することを含む、請求項１５のプログラム。
【請求項１９】
前記転送する処理は、さらに、前記圧縮済みの今回のデータセットの予測データ量が前記周辺機器のバッファの空き容量よりも小さく、かつ、前記未圧縮の今回のデータセットのデータ量が前記バッファの空き容量よりも大きいときは、前回のデータセットの転送速度および前記バッファの解放速度に基づき前記第２の終了時間を予測することを含む、請求項１５のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、周辺機器に対しデータを転送する処理を備えた制御方法および装置に関するものである。
【背景技術】
【０００２】
画像データを圧縮して送受信（伝送）するシステムが知られている。ホスト装置から圧縮されたデータをプリンタに出力し、プリンタで伸張して印刷するシステムはその一例である。日本特開２００１−５３６１９号公報には、送信側の装置におけるデータ圧縮処理の種類やデータ圧縮比のパラメータを、通信速度により決定する画像データ通信装置が開示されている。この画像データ通信装置では、テストデータを用いて送信側装置と受信側装置との間の通信時間を計測し、この通信時間とテストデータのデータサイズとから通信速度を算出し、それに基づいて圧縮パラメータを決定する。【０００３】
ホスト装置などの送信側装置で画像データを圧縮して送信するシステムでは、画像データ全体を、プリンタや表示装置などの周辺機器で処理される単位のデータセットに分割して順番に転送する。圧縮してデータを転送する場合、圧縮処理と転送処理とを並列に処理可能なハードウェアおよびソフトウェアリソースがあれば、分割された１セットの転送データの圧縮が完了すれば、以降のデータセットについては、それらの圧縮処理を継続しながら、圧縮済みのデータセットを送信することが可能である。１ライン、１ページあるいは１フレームなどの単位で出力を生成する、例えば、印刷物を印刷したり、画像を表示する周辺機器であれば、その単位で圧縮済みのデータセットをホスト装置から周辺機器に順次転送することが可能である。周辺機器は、転送されたデータを適切に変換したり再構成することによりホスト装置が意図した出力を生成できる。圧縮済みの転送データであれば転送時間は短縮されるので、一般的にはホストからプリンタなどの周辺機器にデータを転送して出力するジョブ全体の処理時間を短縮できる。【０００４】
しかしながら、ホスト装置においては圧縮するために時間を要する。したがって、圧縮する時間が、周辺装置を用いた出力ジョブの処理速度のクリティカルパスになるのであれば、圧縮しないでデータを転送した方がジョブ全体の処理時間を短縮できる可能性がある。一方、転送時間がクリティカルパスになるのであれば、圧縮済みの転送データを送信することが望ましい。日本特開２００１−５３６１９号公報では、ジョブの開始で圧縮パラメータが決定する。【０００５】
しかしながら、ジョブの開始時に一律に圧縮済みのデータを転送することが好ましいか否かが決定されるというものではない。例えば、圧縮に要する時間およびデータの転送時間はデータ量にのみ依存するものではない。圧縮に要する時間は、圧縮方法、データの種類、さらにはホストのＣＰＵの占有率などにも依存する。さらに、圧縮後のデータ量は常に一定というわけではなく、それが転送時間に影響を与える。また、転送時間は、転送速度（通信速度）だけに左右されるだけではなく、周辺機器においてバッファを解放する時間やタイミングにも左右される。さらに、ジョブの間、転送データは順番に送信され、圧縮に要する時間および転送時間はジョブの途中で変動する可能性は常にある。
【発明の開示】
【０００６】
本発明の一つの態様は、ホスト装置から出力データを複数セットの転送データに分割して周辺機器に転送する工程を有する周辺機器の制御方法である。この転送する工程は、複数セットの転送データを順番に圧縮してメモリに格納し、圧縮済みのデータセットおよび未圧縮のデータセットのいずれかを選択して転送する。さらに、この転送する工程は、
今回のデータセットの転送の開始が可能となったときに、今回のデータセットが圧縮済みであれば、圧縮済みの今回のデータセットを転送し、
今回のデータセットの転送の開始が可能となったときに、今回のデータセットが圧縮済みでなければ、圧縮済みの今回のデータセットを転送したときの第１の終了時間と、未圧縮の今回のデータセットを転送したときの第２の終了時間とを予測し、予測された終了時間の短い今回のデータセットを転送し、
今回のデータセットの転送を開始するときに、次回のデータセットの圧縮が開始されていなければ、次回のデータセットの圧縮を開始することを含む。なお、本明細書において、転送データのセットを、セットあるいはデータセットと称する。
【０００７】
転送データの今回のデータセット（新しいデータセット）の転送の開始が可能となったとき（転送開始可能時）に、今回のデータセットの圧縮の状況を判断する。これにより、転送する工程による出力ジョブの中で何らかの条件が変化したときに、圧縮に要する時間が処理速度のクリティカルパスになり続けることを制御できる。また、転送の開始が可能となったタイミングで、第１および第２の終了時間を予想する。これにより、残りの圧縮に要する時間および転送に要する時間のトータルが最短となるデータセットを、その都度選択できる。
【０００８】
さらに、今回のデータセットの転送を開始するとき（転送開始時）に、次回のデータセットの圧縮を強制的に開始する。これにより、今回のデータセットの圧縮終了を待たずに、即座に次回のデータセットの圧縮が開始されるので、圧縮処理のタイムロスを抑制できる。さらに、出力ジョブが開始された直後の、最初のデータセットの転送は、圧縮を待たずに開始されるので、周辺機器から最初のアウトプットに要する時間を短縮できる可能性がある。
【０００９】
データの転送速度は、ジョブ中に変動する可能性がある。したがって、転送する工程は、前回のデータセットの転送速度に基づき、第１の終了時間および第２の終了時間を予測することを含むことが望ましい。前回の転送データの転送速度は、周辺装置からの受信を完了したことを示す信号、例えば、転送許可信号に基づきデータ処理装置の側で判断することも可能である。転送許可信号の転送時間が誤差として加わる可能性を低くするためには、周辺装置の側で転送速度を適当な方法で計測し、転送許可信号と共にデータ処理装置に送信することが望ましい。転送する工程は、転送速度、または転送速度を求めるための情報を、周辺機器から転送許可信号と共に取得することを含むことが好ましい。
【００１０】
転送する工程においては、ジョブの転送データの最初のデータセットは未圧縮の状態で転送される。したがって、最初のデータセットの転送時間により次のデータセットの転送方法が選択されるので、テストデータを転送する手間および処理時間を省くことができる。
【００１１】
転送開始時に、データ転送に割当てられる周辺機器のバッファの空き容量は、データ転送時間に大きな影響を与える。転送するデータセットのデータ量がバッファの空き容量よりも大きく、バッファの開放速度が転送速度よりも遅ければ、転送途中でバッファの開放を待つ必要がある。そして、一般に、データ転送速度よりバッファの解放速度は遅いので、バッファの解放速度がデータセットの転送時間に影響を与える。
【００１２】
このため、転送する工程は、さらに、圧縮済みの今回のデータセットの予測データ量が、データ転送に割当てられた周辺機器のバッファの空き容量よりも大きいときは、圧縮済みの今回のデータセットを転送することを含むことが望ましい。圧縮済みのデータセットのデータ量がバッファの空き容量を超えるケースでは、未圧縮のデータセットであればバッファの空きを複数回待ったり、解放速度に依存して転送速度の殆どが決まる可能性が高い。このため、第２の終了時間の予測精度は大幅に低下する。したがって、終了時間の予測は不用とし、圧縮済みの今回のデータセットを転送することが望ましい。
【００１３】
転送する工程は、さらに、圧縮済みの今回のデータセットの予測データ量が周辺機器のバッファの空き容量よりも小さく、かつ、未圧縮の今回のデータセットのデータ量がバッファの空き容量よりも大きいときは、前回のデータセットの転送速度およびバッファの解放速度に基づき第２の終了時間を予測することを含むことが望ましい。このケースでは、バッファの解放速度を条件に入れることにより第２の終了時間の予測精度を向上できる。バッファの解放速度は、周辺機器に依存したデータであるので、予めホスト装置にセットできる。また、転送速度と同様に、周辺機器の側で解放速度を適当な方法で計測し、転送許可信号と共にホスト装置に送信できる。
【００１４】
この転送する工程においては、出力ジョブが開始されたときの状態だけではなく、出力ジョブの進行中に変化する状態により、圧縮されたデータセットまたは未圧縮のデータセットを選択して周辺機器に転送できる。このため、ホスト装置から周辺機器（周辺装置）にデータを転送して出力するジョブの処理速度を改善するのに適した方法を提供できる。本発明の一態様の方法は、他の最適化方法との組み合わせも含む。例えば、転送する工程は、出力ジョブの初期条件により最適な圧縮方法をセットすることを含んでも良い。また、タイプの異なる複数の方法により圧縮する工程あるいは圧縮する手段を並列に動作させることが可能なホスト装置においては、転送する工程は、異なる方法により圧縮されたデータセットの終了時間をさらに予測し、最も終了時間の短い今回のデータセットを選択すること、および、それらの異なる方法の中から最適な圧縮方法を随時選択することを含めることも可能である。
【００１５】
本発明の他の一つの態様は、出力データを複数セットの転送データに分割して周辺機器に転送し、周辺機器において出力データに基づく出力を生成可能とする転送手段を有する装置である。この転送手段は、複数セットの転送データを順番に圧縮してメモリに格納し、圧縮済みのデータセットおよび未圧縮のデータセットのいずれかを選択して転送する。      
【００１６】
この転送手段は、さらに、
今回のデータセットの転送の開始が可能となったときに、今回のデータセットが圧縮済みであれば、圧縮済みの今回のデータセットを転送すること、
今回のデータセットの転送の開始が可能となったときに、今回のデータセットが圧縮済みでなければ、圧縮済みの今回のデータセットを転送したときの第１の終了時間と、未圧縮の今回のデータセットを転送したときの第２の終了時間とを予測し、予測された終了時間の短い今回のデータセットを転送すること、
今回のデータセットの転送を開始するときに、次回のデータセットの圧縮が開始されていなければ、次回のデータセットの圧縮を開始すること、を含む判断を行う。
【００１７】
転送手段は、前回のデータセットの転送速度に基づき、第１の終了時間および第２の終了時間を予測することが望ましい。そのため、判定手段は、転送速度、または転送速度を求めるための情報を、周辺機器から転送許可信号と共に取得することが望ましい。
【００１８】
転送手段は、圧縮済みの今回のデータセットの予測データ量が、データ転送に割当てられる周辺機器のバッファの空き容量よりも大きいときは、圧縮済みの今回のデータセットを転送することを含む判断を行うことが望ましい。
【００１９】
また、転送手段は、圧縮済みの今回の予測データ量が、周辺機器のバッファの空き容量よりも小さく、かつ、未圧縮の今回のデータセットのデータ量がバッファの空き容量よりも大きいときは、前回のデータセットの転送速度およびバッファの解放速度に基づき第２の終了時間を予測することが望ましい。
【００２０】
本発明のさらに異なる一つの態様は、ホスト装置と、このホスト装置から複数セットの転送データに分割して転送された出力データに基づき印刷するプリンタとを有するシステムである。ホスト装置は、複数セットの転送データを順番に圧縮してメモリに格納し、圧縮済みのデータセットおよび未圧縮のデータセットのいずれかを選択して転送する転送手段を有し、さらに、この転送手段は、
今回のデータセットの転送の開始が可能となったときに、今回のデータセットが圧縮済みであれば、圧縮済みの今回のデータセットを転送すること、
今回のデータセットの転送の開始が可能となったときに、今回のデータセットが圧縮済みでなければ、圧縮済みの今回のデータセットを転送したときの第１の終了時間と、未圧縮の今回のデータセットを転送したときの第２の終了時間とを予測し、予測された終了時間の短い今回のデータセットを転送すること、
今回のデータセットの転送を開始するときに、次回のデータセットの圧縮が開始されていなければ、次回のデータセットの圧縮を開始すること、を含む判断を行う。
【００２１】
転送手段は、前回のデータセットの転送速度に基づき、第１の終了時間および第２の終了時間を予測することが好ましく、このシステムの周辺機器であるプリンタは、転送速度、または転送速度を求めるための情報を、転送許可信号と共に送信する手段を備えている。
【００２２】
本発明のさらに異なる一つの態様は、コンピュータから出力データを複数セットの転送データに分割して周辺機器に転送し、周辺機器において出力データに基づく出力を生成するためのデバイスドライバプログラムあるいはデバイスドライバプログラム製品である。このデバイスドライバプログラムは、複数セットの転送データを順番に圧縮してコンピュータのメモリに格納し、メモリの圧縮済みのデータセットおよび未圧縮のデータセットのいずれかを選択して転送する処理を含む。
【００２３】
この転送する処理は、
今回のデータセットの転送の開始が可能となったときに、今回のデータセットが圧縮済みであれば、圧縮済みの今回のデータセットを転送し、
今回のデータセットが圧縮済みでなければ、圧縮済みの今回のデータセットを転送したときの第１の終了時間と、未圧縮の今回のデータセットを転送したときの第２の終了時間とを予測し、予測された終了時間の短い今回のデータセットを転送し、
今回のデータセットの転送を開始するときに、次回のデータセットの圧縮が開始されていなければ、次回のデータセットの圧縮を開始することを含む。
【００２４】
転送する処理は、前回のデータセットの転送速度に基づき、第１の終了時間および第２の終了時間を予測することを含むことが望ましい。また、転送する処理は、転送速度、または転送速度を求めるための情報を、周辺機器から転送許可信号と共に取得することを含むことが望ましい。また、転送する処理は、さらに、圧縮済みの今回のデータセットの予測データ量が、データ転送に割当てられた周辺機器のバッファの空き容量よりも大きいときは、圧縮済みの今回のデータセットを転送することを含むことが望ましい。また、転送する処理は、さらに、圧縮済みの今回のデータセットの予測データ量が周辺機器のバッファの空き容量よりも小さく、かつ、未圧縮の今回のデータセットのデータ量がバッファの空き容量よりも大きいときは、前回のデータセットの転送速度およびバッファの解放速度に基づき第２の終了時間を予測することを含むことが望ましい。
【００２５】
このデバイスドライバプログラムまたはプログラム製品は、上記の処理をコンピュータにおいて実行可能とする命令あるいはコードを有するものであり、実行するためのＣＤ−ＲＯＭなどの適当な記録媒体に記録したり、コンピュータネットワークを介して提供できる。コンピュータに、このデバイスドライバプログラムを実装あるいはロードすることにより、本発明の転送する工程を有する方法をコンピュータにより実行できる。また、コンピュータに、このデバイスドライバプログラムを実装あるいはロードすることにより、コンピュータを本発明の転送手段を有する装置として機能させることができる。
【００２６】
これらの態様を含む本発明により、ホスト側から周辺機器にデータを複数セットの転送データに分けて転送する際に、それぞれのデータセットを転送する都度、転送時間が最短になると予想されるデータセットを選択することが可能となる。したがって、ジョブの進行により変わる状況を自動的に転送形態に反映させることが可能となり、ジョブの処理速度の改善を図ることが可能となる。
【図面の簡単な説明】
【００２７】
【図１】プリンタを周辺機器として、ホスト装置であるコンピュータからデータを転送して印刷するシステムの概略を示す図。
【図２】ホスト装置のプリンタドライバの機能の概略を示す図。
【図３】プリンタドライバによる処理の概要を示すフローチャート。
【図４】プリンタの処理の概要を示すフローチャート。
【図５】画像を印刷出力するジョブの進行を示すタイミングチャート。
【発明を実施するための形態】
【００２８】
図１にホストコンピュータとプリンタとが接続されたシステム１の概略を示している。ホストコンピュータ２は、オペレーティングシステム１１と、そのオペレーティング上で動き、画像処理を行うアプリケーションソフト１２と、プリンタドライバ１３とがインストールされている。ホストコンピュータ２は、アプリケーション１２により選択あるいは生成された画像データ８１を、プリンタドライバ１３とインターフェイスケーブルや無線により形成される通信路４を介してプリンタ３に転送する。プリンタ３は、転送された画像データ８１に基づき、そのデータ８１に対応した印刷物を生成（印刷）する。
【００２９】
プリンタドライバ１３は、選択された画像データ８１を、１または複数のラインを単位とする複数セットの転送データ８２に分割し、それらの転送データセット８２をプリンタ３に順番に転送する。プリンタ３は、順番に転送された転送データセット８２に基づき画像データ８１に対応するプリントアウトを生成する。なお、以降においては、転送データのセット８２を、セットまたはデータセットと記述する。
【００３０】
プリンタドライバ１３は、印刷イベントが発生し、ホスト２のＲＡＭあるいはハードディスクなどのメモリ１４にスプールされた画像データ８１を適当な単位のデータセット８２に分割して取得し、それらのデータセット８２を圧縮してから、あるいは未圧縮のまま、順番にプリンタ３に転送するデバイスドライバプログラムである。したがって、プリンタドライバ１３は、コンピュータ２にインストールされることにより、コンピュータ２の適当な資源を用いて所定の機能を実現する。このプリンタドライバ１３は、取得したデータセット８２を順番に圧縮し、圧縮済み（圧縮後）のデータセット８２ｃをメモリ１４に格納し、圧縮済みのデータセット８２ｃ、あるいは未圧縮（圧縮前）のデータセット８２ｎを選択してプリンタ３に転送する転送機能２２を備えている。
【００３１】
転送機能２２は、出力データである画像データ８１を転送するために分割したデータセットを順番に圧縮してメモリ１４に格納する圧縮機能２１と、メモリ１４に格納された圧縮済みのデータセット８２ｃおよび未圧縮のデータセット８２ｎのいずれか一方を、通信路４を介してプリンタ３に出力する選択機能２４と、選択機能２４において選択されるデータセットを判断する判定機能２５とを備えている。判定機能２５は、それぞれのデータセット８２の転送を開始できるとき（転送開始可能時）に、そのときの条件あるいは状況を判断し、今回の転送するデータセット（今回のデータセット）８２として、圧縮されたデータセット８２ｃ、または未圧縮のデータセット８２ｎを選択する。
【００３２】
プリンタ３は、ＣＰＵ３１と、ＲＡＭ３２と、ＲＯＭ３３と、圧縮済みのデータセット８２ｃを伸張する伸張部３４と、ホスト装置２との間でデータ交換するインターフェイス３５と、プリンタエンジン３７を制御する機構制御部３６と、これらを接続するバス３８とを備えている。インターフェイス３５は、ホスト装置２から転送された圧縮済みのデータセット８２ｃまたは未圧縮のデータセット８２ｎを取得し、そのデータセットをＲＡＭ３２の一部の領域に確保されているデータ転送用のバッファ３９に格納する。取得されたデータセット８２が圧縮されていれば、伸張部３４により伸張され、機構制御部３６に供給され、そのデータセット８２に基づき印刷機構（エンジン）３７により印刷物が印刷される。取得されたデータセット８２が未圧縮であれば、伸張処理は行われずに、機構制御部３６に供給され、そのデータセット８２に基づき印刷機構３７により印刷物が印刷される。プリンタ３においては、ＣＰＵ３１が、ＲＯＭ３３に予め格納された制御用のプログラム（ファームウェア）４０に基づき種々の制御を行う。例えば、ＣＰＵ３１は、バッファ３９に格納されたデータセット８２が圧縮されているか、未圧縮のデータであるかの識別、バッファ３９でのデータの受信制御を行う。さらに、ＣＰＵ３１は、取得されたデータセット８２の単位、例えば、ライン単位で印刷を行うように指示できる。
【００３３】
図２に、プリンタドライバ１３に含まれる転送機能２２の概略構成を示している。圧縮機能２１は、画像データ８１から未圧縮の転送用のデータセット８２ｎを順番に取得して、圧縮した後に、圧縮済みのデータセット８２ｃをメモリ１４に順番に格納する。ただし、判定機能２５から、転送開始の信号８８を受けると、今回のデータセットの次に転送される予定の次回のデータセットの圧縮が開始されていなければ、次回のデータセットの圧縮を開始する。すなわち、圧縮機能２１は、圧縮途中のデータセット８２ｎの転送指示８８を受信すると、そのデータセット８２ｎの圧縮を中断して、次のデータセット８２ｎの圧縮を開始する。今回のデータセットの転送を開始するとき（転送開始時）に、次回のデータセットの圧縮が開始されていなければ、次回のデータセットの圧縮を開始する判断は、判定機能２５に含めることができる。
【００３４】
判定機能２５は、第１の判断機能４１と、第２の判断機能４２とを含んでいる。これらの判断機能４１および４２は、データセット毎に、転送が開始可能な時の状態を判定して、選択機能２４から出力されるデータセット８２の種別（圧縮であるか未圧縮であるか）を選択する。第１の判断機能４１は、新たに転送を開始する今回のデータセット８２の転送開始可能時に、今回のデータセット８２が圧縮機能２１により圧縮済みであれば、選択機能２４により、メモリ１４の圧縮済みの今回のデータセット８２ｃが選択され、圧縮済みの今回のデータセット８２ｃがプリンタ３に転送されるように指示する。
【００３５】
圧縮済みのデータセット８２ｃのデータ量と、未圧縮のデータセット８２ｎのデータ量とを比較すれば、圧縮済みのデータセット８２ｃのデータ量の方が少ない。転送開始可能時に圧縮済みのデータセット８２ｃがすでに用意されているのであれば、圧縮に時間を要しないので、圧縮済みのデータセットを転送する。本明細書において転送開始可能時とは、今回のデータセット８２を転送できる状態になったタイミングを示す。例えば、最初のデータセットであれば、ホストコンピュータ２において印刷イベントが発生し、印刷ジョブを開始するタイミングである。ジョブの途中であれば、前回転送したデータセット８２がプリンタ３のバッファ３９に格納され、プリンタ３からホストコンピュータ２に転送許可信号８５が通知されたタイミングである。プリンタ３から通知される受信完了通知が、転送許可信号８５となる。
【００３６】
第２の判断機能４２は、転送開始可能時に、今回のデータセット８２が圧縮機能２１により圧縮済みでないときの判断を行う。すなわち、第２の判断機能４２は、まず、メモリ１４に、圧縮済みの今回のデータセット８２ｃがないことを判断する。第２の判断機能４２は、次に、今回のデータセット８２の圧縮処理が完了するのを待って、圧縮済みのデータセット８２ｃを転送したときの第１の終了時間Ｔｃｐと、圧縮処理の完了を待たずに、未圧縮のデータセット８２ｎを転送したときの第２の終了時間Ｔｎｐを予測する。そして、先に終了すると予想されるデータセットを転送するように選択機能２４を制御する。すなわち、第２の判断機能４２は、圧縮済みの今回のデータセット８２ｃと、未圧縮の今回のデータセット８２ｎの内、予測された終了時間の短い今回のデータセットを選択し転送されるようにする。転送開始可能時に、データセットが圧縮済みでないケースでは、そのデータセットの圧縮に要する残り時間および転送に要する時間のトータルの時間が短い方が望ましい。第２の判断機能４２は、第１の終了時間Ｔｃｐおよび第２の終了時間Ｔｎｐを予測することにより、今回のデータセット８２の転送処理に要する時間を短くなるようにしている。
【００３７】
この第２の判断機能４２は、さらに、転送開始可能時にプリンタ３に確保されているデータ転送用のバッファ３９の空き容量Ｎｂにより、幾つかのケースを判断し、それぞれに対して最適なデータセットを転送する判断機能を備えている。以下で参照する各パラメータは、特に示されない限り、データセットを転送する毎に得られる値である。
Ｒ    ：転送レートまたは転送速度（前回転送したデータセットの実績）
Ｎｂ  ：転送開始可能時のプリンタ３のデータ転送用のバッファ３９の空き容量
Ｎｎ  ：今回のデータセット８２（未圧縮のデータセット８２ｃ）のデータサイズまたはデータ量
Ｎｃｆ：今回のデータセット８２を圧縮したときの予測データ量（圧縮データ予測値）
Ｔｃｆ：転送開始可能時から今回のデータセット８２の圧縮処理が完了するまで予測残時間（圧縮残時間予測値）
Ｋ    ：プリンタ３のバッファ３９の解放速度（定数または前回の実績）
Ｔｃｐ：圧縮済み今回のデータセット８２ｃを転送したときの予測終了時間（第１の終了時間）
Ｔｎｐ：未圧縮の今回のデータセット８２ｎを転送したときの予測終了時間（第２の終了時間）
【００３８】
ケースＡ  （Ｎｎ＜Ｎｂ）
ケースＡでは、バッファ３９の空き容量Ｎｂが未圧縮の今回のデータセットのデータ量Ｎｎよりも大きい。このケースでは、以下の式（１）および（２）により第１の終了時間Ｔｃｐおよび第２の終了時間Ｔｎｐを算出できる。
Ｔｃｐ＝Ｔｃｆ＋Ｎｃｆ／Ｒ  ・・・（１）
Ｔｎｐ＝Ｎｎ／Ｒ            ・・・（２）
【００３９】
このケースＡでは、今回のデータセットについて、圧縮されたデータセットおよび未圧縮のデータセットのいずれでも支障なくプリンタ側のバッファ３９に転送できる。したがって、終了時間ＴｃｐおよびＴｎｐの短い方のデータセットを転送する。
【００４０】
ケースＢ  （Ｎｃｆ＜Ｎｂ＜Ｎｎ、かつ、Ｋ＜Ｒ）
このケースＢの最初の条件は、バッファ３９の空き容量Ｎｂが、未圧縮の今回のデータセット８２ｎのデータ量Ｎｎよりも小さく、圧縮データ予測値Ｎｃｆよりは大きいことを示す。この条件だけであれば、バッファ３９の解放速度Ｋが転送速度Ｒと同じあるいは速ければ、バッファフルにならない。したがって、圧縮済みのデータセットおよび未圧縮のデータセットの終了時間はケースＡと同等に計算できる。
【００４１】
ケースＢの次の条件は、バッファ３９の解放速度Ｋが転送速度Ｒよりも遅いことを示す。したがって、未圧縮のデータセットを転送する場合には、バッファフルが発生する。
【００４２】
まず、このケースＢは、圧縮済みのデータセット８２ｃの第１の終了時間Ｔｃｐは、ケースＡと同様に式（１）により算出できる。一方、未圧縮のデータセット８２ｎの第２の終了時間Ｔｎｐは、バッファフルが考慮された下式（３）により算出できる。未圧縮の今回のデータセット８２ｎを転送する際は、バッファフルになるので、それ以降は解放速度Ｋで転送されるとして、その終了時間Ｔｎｐを予測する。
Ｔｎｐ＝Ｎｂ／Ｒ＋（Ｎｎ−Ｎｂ）／Ｋ  ・・・（３）
【００４３】
ケースＣ  （Ｎｂ＜Ｎｃｆ）
ケースＣでは、転送開始可能時のプリンタ３のバッファ３９の空き容量Ｎｂが、圧縮データ予測値Ｎｃｆよりも小さい。この条件だけであれば、バッファ３９の解放速度Ｋが転送速度Ｒと同じあるいは速ければ、バッファフルにならない。したがって、圧縮済みのデータセットおよび未圧縮のデータセットの終了時間はケースＡと同等に計算できる。
【００４４】
ケースＣにおいて、バッファ３９の解放速度Ｋが転送速度Ｒよりも遅ければ（Ｋ＜Ｒ）、未圧縮のデータセットだけではなく、圧縮済みのデータセットを転送する場合にも、バッファフルが発生する。したがって、このケースでは、バッファフルを考慮すると、圧縮済みのデータセット８２ｃの第１の終了時間Ｔｃｐは下式（４）により予測できる。未圧縮のデータセット８２ｎの第２の終了時間Ｔｎｐは、ケースＢと同様に、上記（３）式により求めることができる。
Ｔｃｐ＝Ｔｃｆ＋Ｎｂ／Ｒ＋（Ｎｃｆ−Ｎｂ）／Ｋ  ・・・（４）
【００４５】
このケースＣでは、圧縮済みの今回のデータセット８２ｃも、未圧縮の今回のデータセット８２ｎと同様に転送中にバッファフルになり、それ以降は解放速度Ｋで転送されるとして第１の終了時間Ｔｃｐを予測することができる。しかしながら、解放速度Ｋが転送速度Ｒより遅いので、圧縮残時間予測値Ｔｃｆに対してデータを転送する時間が占める割合が大きくなり、殆どの場合、第１の終了時間Ｔｃｐの方が短い。さらに、ホスト側で予測できる解放速度Ｋの精度は低いので、解放速度Ｋにより決まる時間が増加すると、第１の終了時間Ｔｃｐおよび第２の終了時間Ｔｎｐの予測精度は低下する。したがって、本例においては、第２の機能４２は、ケースＣであると判断すると、終了時間の予測を行わず、圧縮機能２１が圧縮済みの今回のデータセット８２ｃを生成するのを待って、圧縮済みのデータセット８２ｃを転送するように選択機能２４を制御する。
【００４６】
このように、第２の判断機能４２により、第１の終了時間Ｔｃｐおよび第２の終了時間Ｔｎｐを算出して、先に終了する方のデータセットの転送を選択することにより、今回のデータセット８２の転送に要する処理時間を短縮する。第２の判断機能４２は、第１の終了時間Ｔｃｐおよび第２の終了時間Ｔｎｐの算出に用いられる転送速度Ｒを、直前に転送された前回のデータセット８２のデータサイズＮｎと、前回のデータセット８２のプリンタ３における受信時間Ｔｔにより除算して算出する。プリンタ３は、転送許可信号８５と共に、転送速度Ｒを求めるための情報としての受信時間Ｔｔ、あるいはそれに基づいて算出された転送速度Ｒをホスト２に送信する。ホスト２のプリンタドライバ１３は、転送許可信号８５を受けて今回のデータセット８２の転送が開始可能になったときに、その都度、直近の転送速度Ｒを取得できる。このため、今回のデータセット８２の終了時間ＴｃｐおよびＴｎｐの予測に際し、ジョブの進行途上における転送速度Ｒに基づき、第１の終了時間Ｔｃｐおよび第２の終了時間Ｔｎｐを算出できる。したがって、ジョブの途中の転送路の状態変化などを考慮してデータセットを選択し、転送時間の短縮を図ることができる。
【００４７】
プリンタ３は、転送許可信号８５と共に、さらに、バッファ３９の空き容量Ｎｂ、前回のデータセットを処理したときのバッファの解放速度Ｋを送信する。これらを受信することにより、ホスト側のプリンタドライバ１３は、転送開始可能時における上記のケースＡ〜Ｃを判断することが可能となり、さらに的確な第１の終了時間Ｔｃｐおよび第２の終了時間Ｔｎｐを算出できる。このため、ジョブの途中のプリンタの状態変化などを考慮してデータセットを選択し、転送時間の短縮を図ることができる。
【００４８】
転送速度Ｒ、空き容量Ｎｂおよび解放速度Ｋは、プリンタの型式、プリンタとの通信経路などの情報が予めプリンタドライバ１３に設定されていれば、ジョブの進行状況からプリンタドライバ１３が独自で予想することが可能である。プリンタ３から実際の各値を取得することにより、予測の信頼性を向上でき、また、プリンタドライバ１３の計算負荷を下げることができる。
【００４９】
図２に示すように、本例のプリンタ３においてファームウェア４０により実現される制御機能は、個々のデータセット８２の受信に要した時間Ｔｔ、バッファ３９の解放速度Ｋ、バッファ３９の空き容量Ｎｂを転送許可信号８５と共にホスト側に通知する機能４６を備えている。また、この制御機能４０は、バッファ３９に格納されたデータセット８２が圧縮か未圧縮かを判別する機能４５も備えており、バッファ３９に格納されたデータセット８２を伸張する機能３４に供給したり、伸張する機能３４をバイパスして機構制御３６に供給したりする制御を行う。
【００５０】
バッファ３９の解放速度Ｋは、バッファ３９に格納されているデータの圧縮率に比例して変わるのが一般的である。このため、ホスト側でバッファ３９の解放速度Ｋを予測する場合は、未圧縮のデータが格納されているときのバッファ３９の解放速度Ｋをプリンタ３の型式などにより予測し、圧縮率（未圧縮データサイズＮｎ／圧縮データサイズＮｃ）から圧縮されたデータのバッファ３９の解放速度Ｋを算出できる。未圧縮のデータに対応するバッファ３９の解放速度をＫｎとすると、下式（５）によりバッファ３９の解放速度Ｋを算出できる。
Ｋ＝Ｋｎ×Ｎｎ／Ｎｃ  ・・・（５）
【００５１】
さらに、第１の終了時間Ｔｃｐを求めるために使用される圧縮残時間予測値Ｔｃｆも、ホスト側のＣＰＵの能力およびタスクの状態などによって変動する値である。プリンタドライバ１３は、ホスト２の条件は自ら取得できるので、それぞれのデータセットの転送終了時間の予測にホスト２の状態を反映することが可能である。
【００５２】
図３に、プリンタドライバ１３をインストールしたコンピュータ（ホスト装置）２により、出力データが複数セットに分割されてプリンタ３へ転送される過程をフローチャートにより示している。ステップ５１において、ホスト装置２で画像データ８１を印刷するイベント（印刷指示）が発生する。判定機能２５は、ステップ５２において、先頭のデータセットについては、圧縮済みのデータセットがメモリ１４にはないと判断する。第２の判断機能４２は、ステップ６５において、先頭のデータセットを未圧縮のデータセット８２ｎとして転送する。
【００５３】
したがって、出力ジョブが開始されると、先頭のデータセットを圧縮する時間が省かれる。先頭のデータセットのデータ量が、プリンタ３が出力を開始するのに充分な情報を含んでいれば、ジョブスタートからプリンタ３の出力が開始されるまでの時間を短縮できる。
【００５４】
また、先頭のデータセットの転送許可信号８５は、受信完了通知であり、それと共に、先頭のデータセットの転送速度Ｒが得られる。この転送速度Ｒは、次回のデータセットの終了時間の予測に使用できる。また、先頭のデータセットを転送した実績値として、バッファの空き容量Ｎｂおよび解放速度Ｋを取得できる。これらのパラメータも、次回のデータセットの終了時間の予測に使用することができる。したがって、転送速度Ｒを求めるためにテストデータを転送したり、そのために費やされる時間も不用となる。これらの点においても、プリンタドライバ１３は、即座にデータの転送を開始でき、プリンタ３における印刷を開始できる。このため、ユーザが印刷開始を待つ時間を短縮できる。
【００５５】
ステップ６５において、先頭のデータセット８２の転送が開始されると、ステップ５８において、圧縮機能２１は、次回のデータセット８２の圧縮処理を開始する。これにより、ホスト装置２においては、先頭のデータセット８２の転送と共に、次回のデータセット８２の圧縮処理が並列して行われる。
【００５６】
前回のデータセットの転送が終了すると、プリンタ３から受信完了通知である転送許可信号８５が送信される。ステップ５３において、プリンタドライバ１３は、転送許可信号８５を受信すると、今回のデータセット８２の転送を開始できると判断する。今回のデータセットの転送が開始可能になるステップ５３のタイミングで、転送機能２２は、前回のデータセット８２の受信時間Ｔｔ、バッファ３９の空き容量Ｎｂおよびバッファ３９の解放速度Ｋを、転送許可信号または受信完了通知８５と共に取得する。
【００５７】
ステップ５４において、判定機能２５は、圧縮済みの今回のデータ８２ｃがメモリ１４に格納されているか否かを判断する。格納されていれば、第１の判断機能４１が選択手段２４を制御し、ステップ５５において、メモリ１４から圧縮済みの今回のデータセット８２ｃの転送を開始する。メモリ１４に圧縮済みの今回のデータセット８２ｃがない場合は、第２の判断機能４２は、現状がケースＡ〜Ｃのいずれであるかを判断する。ステップ５９において、バッファの空き容量Ｎｂが圧縮データ予測値Ｎｃｆよりも小さければ、ケースＣに該当する。したがって、ステップ６０において、今回のデータセット８２の圧縮処理が完了するのを待ち、ステップ５５において、圧縮済みの今回のデータセット８２ｃの転送を開始する。
【００５８】
ステップ５９において、バッファの空き容量Ｎｂが圧縮データ予測値Ｎｃｆよりも大きければ、ステップ６１において、バッファの空き容量Ｎｂと未圧縮のデータセットのデータ量Ｎｎとを比較する。バッファの空き容量Ｎｂが未圧縮のデータセットのデータ量Ｎｎよりも小さければケースＢに該当するので、ステップ６２において、第２の終了時間Ｔｎｐについては解放速度Ｋを加味した式（３）により予測する。バッファの空き容量Ｎｂが未圧縮のデータセットのデータ量Ｎｎよりも大きければケースＡに該当するので、ステップ６３において、第２の終了時間Ｔｎｐについては解放速度Ｋを加味しない式（２）により予測する。なお、第１の終了時間Ｔｃｐについてはいずれの場合も式（１）により予測する。
【００５９】
ステップ６４において、算出した第１の終了時間Ｔｃｐおよび第２の終了時間Ｔｎｐを比較する。第１の終了時間Ｔｃｐが先に終了するのであれば、ステップ６０において、今回のデータセット８２の圧縮処理が完了するまで待ち、ステップ５５において、圧縮済みの今回のデータセットの転送を開始する。第２の終了時間Ｔｎｐが第１の終了時間Ｔｃｐよりも短く、先に終了すると予測されるのであれば、ステップ６５において、圧縮処理の完了を待たずに、今回のデータセット８２を未圧縮のまま転送を開始する。このような判断を行なうことにより、圧縮処理と転送処理のトータルの処理時間が、データセット毎に最適化され、ジョブ全体の処理時間を短縮できる。
【００６０】
ステップ５６において、全てのデータセットが転送されたか否かを判断する。未転送のデータセットがあれば、ステップ５７において、次の未転送のデータセットの圧縮が開始されているか否かを確認する。圧縮が開始されていなければ、圧縮機能２１により、ステップ５８で次のデータセットの圧縮を開始する。圧縮機能２１が今回のデータセットの圧縮を行なっていれば、それを中断して次回のデータセットの圧縮を開始する。これにより、無駄な圧縮作業を最小限に止めることができると共に、次のデータセットの圧縮処理を早期に開始できる。このため、ステップ５４において、圧縮済みのデータセットを転送できる可能性が高くなり、ジョブ全体の処理時間をさらに向上できる。
【００６１】
図３に示した処理を行うためのプリンタドライバプログラム１３は、各ステップを実行可能な命令を有するプログラムあるいはプログラム製品である。プログラム製品は、ＣＤ−ＲＯＭ等の適当な記録媒体に記録して提供したり、コンピュータネットワークを介して提供することが可能である。
【００６２】
図４に、プリンタ３においてデータを受信する処理をフローチャートにより示してある。プリンタ３では、ステップ７１において、圧縮済みまたは未圧縮の今回のデータセット８２の受信を開始する。ステップ７２において、今回のデータセット８２の全てがバッファ３９に格納されると、ステップ７３において、通知機能４６により、今回のデータセット８２の受信に要した時間Ｔｔ、バッファ３９の空き容量Ｎｂおよびバッファ３９の解放速度Ｋを含む情報を、転送許可信号８５と共にホスト２に返す。プリンタ３においては、受信処理と並行して、バッファ３９にデータセットがあれば、圧縮されたデータは伸張部３４により伸張した後に、未圧縮のデータは伸張せずに、印刷機構３７に送って印刷を行なう。
【００６３】
図４に示した処理を行うための制御プログラム（ファームウェア）４０は、各ステップを実行可能な命令を有するプログラムあるいはプログラム製品である。このプログラム製品は、ＣＤ−ＲＯＭ等の適当な記録媒体に記録して提供したり、コンピュータネットワークを介して提供することが可能である。
【００６４】
図５に、ホスト２およびプリンタ３を備えたシステム１において、実行される印刷ジョブの一例を、タイミングチャートにより示している。ホスト２で時刻ｔ０に印刷イベントが発生すると、先頭のデータセット８２は、第２の判断機能４２の判断により、未圧縮のままプリンタ３に転送される。また、先頭のデータセット８２の転送が開始されると、圧縮機能２１により次回のデータセット８２の圧縮処理が開始される。
【００６５】
プリンタ３は、時刻ｔ１において、未圧縮の先頭のデータセット８２ｎの全てがバッファ３９に格納されると、データセット８２ｎの印刷を開始する。プリンタの制御機能４０は、転送許可信号８５をホスト２に返す。同時に、転送速度Ｒ、バッファの空き容量Ｎｂおよびバッファの解放速度Ｋをホスト２に送信する。
【００６６】
プリンタドライバ１３においては、プリンタ３からの転送許可信号８５を受け取った時刻ｔ２が、次のデータセット８２の転送の開始が可能となる時である。この例においては、転送開始可能時である時刻ｔ２には、次のデータセット（時刻ｔ２を基準とする今回のデータセット）８２の圧縮処理が済んでいない。このため、第２の判断機能４２は、ケースＡ〜Ｃの条件を判断する。ケースＢであれば、式（１）により第１の終了時間Ｔｃｐを算出し、式（３）によりバッファの解放速度Ｋを加味して第２の終了時間Ｔｎｐを算出する。バッファがフルになり、その後、解放速度Ｋで転送が行われると予想しても、第２の終了時間Ｔｎｐの方が第１の終了時間Ｔｃｐよりも短いとして良い。したがって、時刻ｔ２に、今回のデータセット８２の圧縮処理の完了を待たずに、未圧縮のデータセット８２ｎで転送を行なう。同時に、次回のデータセット８２の圧縮処理を開始する。このケースでは、転送開始可能時と、転送開始時とは略等しいタイミングとなる。
【００６７】
時刻ｔ４において、未圧縮の今回のデータセット８２ｎが全てプリンタ３で受信されると、上記と同様に、プリンタ３から転送許可信号８５とその他のパラメータがホスト２に送信される。時刻ｔ５に、転送許可信号８５および他の情報をホスト２が受信すると、次のデータセット８２の転送が開始可能になる。今回のデータセット８２は、転送開始可能な時刻ｔ５よりも前の時刻ｔ３に既に圧縮処理が終了してメモリ１４に格納されており、圧縮機能２１はさらに次のデータセット８２の圧縮を行っている。このため、時刻ｔ５においては、第１の判断機能４１の判断により、圧縮済みの今回のデータセット８２ｃの転送が開始される。時刻ｔ６において、この圧縮済みのデータセット８２ｃが全て受信されると、プリンタ３からホスト側に再び転送開始信号８５が通知される。
【００６８】
時刻ｔ７において、ホスト２が転送開始信号８５を受け取ると、今回のデータセット８２は、転送を開始可能な時刻ｔ７では圧縮処理が済んでいない。また、プリンタ３のバッファ３９は殆どフルの状態であり、空き容量Ｎｂが小さい。したがって、第２の判断機能４２は、圧縮データ予測値Ｎｃｆよりも空き容量Ｎｂが小さいので、ケースＣであると判断する。このため、第２の判断機能４２は、今回のデータセットの圧縮が終了する時刻ｔ８まで待って、圧縮済みのデータセットの転送を開始するように判断する。時刻ｔ８が転送を開始する時になる。
【００６９】
時刻ｔ９において、この圧縮済みのデータセット８２ｃが全てプリンタ３で受信されると、転送開始信号８５がホスト２に返される。時刻ｔ１０に、転送開始信号８５をホスト２が受信すると、転送開始可能になる。時刻ｔ１０に、今回のデータセット８２の圧縮処理が済んでいない。このため、第２の判断機能４２は、第１の終了時間Ｔｃｐおよび第２の終了時間Ｔｎｐを予測する。このケースでは、第２の終了時間Ｔｎｐが第１の終了時間Ｔｃｐよりも短い。したがって、今回のデータセット８２を圧縮処理の完了を待たずに、未圧縮のデータセット８２ｎで出力する。
【００７０】
このプリンタドライバ１３は、各々のデータセット８２の転送終了時間（終了時刻）を、そのときの転送速度Ｒ、バッファ容量Ｎｂおよび解放速度Ｋにより転送開始可能時に予測し、最も転送終了時刻の早い方法で個々のデータセットを転送している。このため、データセットを転送する毎に転送時間が短くなるようにデータセットが選択されるので、出力ジョブ全体の処理時間の短縮が図られる。
【００７１】
なお、上記では、プリンタ３を周辺機器とし、画像データ８１を出力データとして、プリンタ３に対してデータを転送し、プリンタ３において印刷物を印刷する例を示している。周辺機器はファックスなどの他の印刷機器であっても良く、ファックスであると、周辺機器とホストが一体になっているケースもある。さらに、出力データは画像データに限らず、テキストデータなどであっても良い。さらに、周辺装置には、画像データを画像として生成（表示）するＬＣＤなどの表示デバイスなど、ホスト装置からの出力データを受信する種々の機器が含まれる。
【図１】
2006054618.tif 000002
【図２】
2006054618.tif 000003
【図３】
2006054618.tif 000004
【図４】
2006054618.tif 000005
【図５】
2006054618.tif 000006
【国際調査報告】
2006054618.tif 000007
2006054618.tif 000008
2006054618.tif 000009