(57)【特許請求の範囲】
【請求項１】
メモリと、
受信データを格納するための受信バッファを前記メモリ上に確保する受信バッファ確保手段と、
受信バッファから受信データを読み込み、読み込んだデータからイメージデータを生成するイメージ生成手段と、
前記イメージ生成手段により生成されたイメージデータを格納するためのイメージバッファを前記メモリ上に確保するイメージバッファ確保手段とを備え、
前記イメージバッファ確保手段は、生成されたイメージデータの量に応じて、イメージバッファのサイズを調節し、
前記受信バッファ確保手段は、イメージデータの生成処理及び印刷処理の進行状況に応じて、前記イメージバッファのサイズに依存して、受信バッファのサイズの上限値を調節し、その際に、前記イメージバッファのサイズがより大きい時、前記イメージバッファのサイズがより小さいときに比較して、前記受信バッファの上限値をより小さくし、前記小さくした上限値以下の範囲で、前記生成処理及び印刷処理の進行状況に応じて、前記受信バッファのサイズを動的に調節することを特徴とするプリンタ。
【請求項２】
メモリと、
受信データを格納するための受信バッファを前記メモリ上に確保する受信バッファ確保手段と、
受信バッファから受信データを読み込み、読み込んだデータからイメージデータを生成するイメージ生成手段と、
前記イメージ生成手段により生成されたイメージデータを格納するためのイメージバッファを前記メモリ上に確保するイメージバッファ確保手段とを備え、
前記イメージバッファ確保手段は、生成されたイメージデータの量に応じて、イメージバッファのサイズを調節し、
前記受信バッファ確保手段は、イメージデータの生成処理及び印刷処理の進行状況に応じて、前記イメージバッファのサイズに依存して、受信バッファのサイズを動的に調節し、その際に、前記受信バッファのサイズの上限値として選択可能な少なくとも２つの値を用いて、前記イメージバッファのサイズに依存して定まる前記メモリの空き容量の大きさに応じて、前記受信バッファのサイズの上限値を、前記少なくとも２つの値のいずれにするかを選択し、前記選択した上限値以下の範囲で、前記生成処理及び印刷処理の進行状況に応じて、前記受信バッファのサイズを動的に調節することを特徴とするプリンタ。
【請求項３】
請求項１又は２記載のプリンタにおいて、
前記イメージ生成手段に必要なデータを格納するためのワークエリアを前記メモリ上に確保するワークエリア確保手段をさらに備え、
前記受信バッファ確保手段は、前記イメージバッファとワークエリアのサイズに応じて、前記受信バッファのサイズを動的に調節する事を特徴とするプリンタ。
【請求項４】
プリンタにおける受信バッファサイズ調節方法において、
受信データを格納するための受信バッファを、プリンタ内のメモリ上に確保するステップと、
受信バッファから受信データを読み込み、読み込んだデータからイメージデータを生成するステップと、
前記生成するステップにより生成されたイメージデータを格納するためのイメージバッファを、前記メモリ上に確保するステップと、
前記生成するステップにより生成されたイメージデータの量に応じて、イメージバッファのサイズを調節する第１の調節ステップと、
イメージデータの生成処理及び印刷処理の進行状況に応じて、前記イメージバッファのサイズに依存して、前記受信バッファのサイズの上限値を調節する第２の調節ステップと
を備え、前記第２の調節ステップが、前記イメージバッファのサイズがより大きい時、前記イメージバッファのサイズがより小さいときに比較して、前記受信バッファの上限値をより小さくし、前記小さくした上限値以下の範囲で、前記生成処理及び印刷処理の進行状況に応じて、前記受信バッファのサイズを動的に調節することを特徴とする、プリンタにおける受信バッファサイズ調節方法。
【請求項５】
プリンタにおける受信バッファサイズ調節方法において、
受信データを格納するための受信バッファを、プリンタ内のメモリ上に確保するステップと、
受信バッファから受信データを読み込み、読み込んだデータからイメージデータを生成するステップと、
前記生成するステップにより生成されたイメージデータを格納するためのイメージバッファを、前記メモリ上に確保するステップと、
前記生成するステップにより生成されたイメージデータの量に応じて、イメージバッファのサイズを調節する第１の調節ステップと、
イメージデータの生成処理及び印刷処理の進行状況に応じて、前記イメージバッファのサイズに依存して、受信バッファのサイズを調節する第２の調節ステップと
を備え、前記第２の調節ステップが、前記受信バッファのサイズの上限値として選択可能な少なくとも２つの値を用いて、前記イメージバッファのサイズに依存して定まる前記メモリの空き容量の大きさに応じて、前記空き容量が減少するほど前記上限値が小さい値となるように、前記受信バッファのサイズの上限値を、前記少なくとも２つの値のいずれにするかを選択し、前記選択した上限値以下の範囲で、前記生成処理及び印刷処理の進行状況に応じて、前記受信バッファのサイズを動的に調節することを特徴とする、プリンタにおける受信バッファサイズ調節方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムのプリンタに関わり、特にホストコンピュータからの受信データを一時的に蓄積する受信バッファの制御に関する。
【０００２】
【従来の技術】
特開平７−１４４４４２号公報の印刷装置は、コントロールパネル又はホストコンピュータからのユーザ指令により、受信バッファのサイズつまり容量を変更することができる。
【０００３】
【発明が解決しようとする課題】
しかし、従来技術では、受信バッファのサイズはユーザが変更しない限り一定である。ユーザは、受信バッファのサイズを頻繁に変更するような面倒は好まない。しかし、ホストコンピュータからの印刷データの量はジョブ毎に異なる。
【０００４】
印刷ジョブの処理中、メモリは受信バッファ、イメージバッファ、ワークエリアなど種々の用途に使用される。ジョブ処理状況に適合して、それら複数の用途にバランス良く且つ高効率にメモリが使用されたとき、スループット及びホスト解放時間を含めた総合的な印刷性能が最も高くなる。一般に、データ量の小さい印刷ジョブに対しては受信バッファサイズは小さくてよく、データ量の大きい印刷ジョブには大きいサイズの受信バッファを確保することが好ましい。しかし、従来技術では、個々のジョブ毎にユーザが受信バッファサイズを設定することは非現実的であり、また、ジョブの処理中に処理状況に応じて受信バッファサイズを調整することは不可能である。
【０００５】
そこで本発明の目的は、印刷ジョブの処理中に受信バッファのサイズを動的に自動調節することのできるプリンタを提供することにある。
【０００６】
【課題を解決するための手段】
本発明の第１の側面に従うプリンタは、受信バッファをメモリ上に確保する受信バッファ確保手段と、受信バッファから受信データを読み込み、読み込んだデータからイメージデータを生成するイメージ生成手段と、生成されたイメージデータを格納するためのイメージバッファをメモリ上に確保するイメージバッファ確保手段とを備え、イメージバッファ確保手段は、生成されたイメージデータの量に応じて、イメージバッファのサイズを調節し、受信バッファ確保手段は、イメージデータの生成処理及び印刷処理の進行状況に応じて、前記イメージバッファのサイズに依存して、受信バッファのサイズの上限値を調節し、その際に、前記イメージバッファのサイズがより大きい時、前記イメージバッファのサイズがより小さいときに比較して、前記受信バッファの上限値をより小さくし、前記小さくした上限値以下の範囲で、前記生成処理及び印刷処理の進行状況に応じて、前記受信バッファのサイズを動的に調節する。また、本発明の第２の側面に従うプリンタは、受信バッファをメモリ上に確保する受信バッファ確保手段と、受信バッファから受信データを読み込み、読み込んだデータからイメージデータを生成するイメージ生成手段と、生成されたイメージデータを格納するためのイメージバッファをメモリ上に確保するイメージバッファ確保手段とを備え、イメージバッファ確保手段は、生成されたイメージデータの量に応じて、イメージバッファのサイズを調節し、受信バッファ確保手段は、イメージデータの生成処理及び印刷処理の進行状況に応じて、前記イメージバッファのサイズに依存して、受信バッファのサイズを動的に調節し、その際に、前記受信バッファのサイズの上限値として選択可能な少なくとも２つの値を用いて、前記イメージバッファのサイズに依存して定まる前記メモリの空き容量の大きさに応じて、前記受信バッファのサイズの上限値を、前記少なくとも２つの値のいずれにするかを選択し、前記選択した上限値以下の範囲で、前記生成処理及び印刷処理の進行状況に応じて、前記受信バッファのサイズを動的に調節する。
【０００７】
本発明の第１又は第２の側面に従うプリンタによれば、プリンタ内で生成されたイメージデータの量に応じて、イメージバッファのサイズが優先的に調節され、そして、このイメージバッファのサイズに依存して、受信バッファのサイズの上限値が従属的に調節される。従って、プリンタ内では、イメージデータの生成処理及び印刷処理の進行状況に応じて、メモリ内の空き容量が変化するが、この空き容量の変化に応じて受信バッファのサイズの上限値が可変する。例えば、空き容量が大きければ、受信バッファのサイズの上限値も大きくなり、空き容量が小さければ、受信バッファのサイズの上限値も小さくなる。このように、メモリの空き容量に応じて受信バッファサイズの上限値が動的に変化し、その上限値以下の範囲で、受信バッファのサイズが調節されるので、メモリの利用効率は常に良好である。
【０００８】
好適な実施形態では、メモリの空き容量が充分大きいか否かに応じて、受信バッファの上限値を大小２段階に切換える。この２段階の制御は、比較的に単純ではあるが、相当に良好な結果が期待できる。
【０００９】
【発明の実施の形態】
図１は、本発明のプリンタの機能構成を表すブロック図である。
【００１０】
ホストコンピュータ１に接続されたプリンタ５は、ホストコンピュータ１から送出される印刷データを、ホストインターフェース３を通して受信する。印刷データは、プリンタ５が理解する言語で表現されたコマンドのストリームである。受信された印刷データは、ヒープメモリ１３内の受信バッファ７に一旦蓄えられる。メモリ１３は、受信バッファ７の他、ワークエリア９やイメージバッファ１１などに利用される。メモリ１３内に受信バッファ７、ワークエリア９、イメージバッファ１１を確保し、それらのサイズを制御するために、メモリ管理部１５と呼ばれるプロセスが働く。
【００１１】
また、コマンド解釈部１７と呼ばれるプロセスが、受信バッファ７からコマンドを受信順に読み出し、これを解釈して、最終的に、印刷すべきイメージの各ピクセルにドットを打つか否かを指示したバイナリ値の集合（以下、イメージデータという）を生成する。生成されたイメージデータは、メモリ１３内のイメージバッファ１１に蓄積される。すると、印刷制御部１９と呼ばれる典型的にはハードウェアである要素が、イメージバッファ１１からＤＭＡの方法でイメージデータを読み出して印刷エンジン２１に送る。印刷エンジン２１は、紙のようなハードコピー媒体上に発色剤を用いて実際にイメージを形成する。通常、印刷エンジン２１は固有の速度で媒体を取り込んで印刷を行ない、この印刷エンジンの速度に同期して、印刷制御１９がイメージデータをイメージバッファ１１から読み込む。
【００１２】
周知のように、受信バッファ７は、ホストコンピュータ１から受信した印刷データを、コマンド解釈部１７が読出すまで一時的に保持するメモリエリアである。ワークエリア９は、ホストコンピュータ１からのダウンロードフォント等、コマンド解釈部１７が印刷データからイメージデータを生成するのに必要な情報を格納するメモリエリアである。イメージバッファ１１は、コマンド解釈部１７が生成したイメージデータを、印刷制御部１９が読出すまで一時的に保持するメモリエリアである。ワークエリア９とイメージバッファ１１は、受信バッファ７よりも優先的に確保されるべきである。ワークエリア９は、これが確保されないと、コマンド解釈部１７が作動できないからである。
【００１３】
また、イメージバッファ１１は、前述したように、これが確保されて印刷エンジン２１の速度に同期してイメージデータを印刷エンジン２１に提供できるようになっていないと、印刷エンジン２１が印刷を正常に実行できないからである。
【００１４】
そのため、図２に示すように、ヒープメモリ１３内にワークエリア９及びイメージバッファ１１をそれぞれの必要サイズで優先的に確保した上で、残った領域内に受信バッファ７を確保するように、メモリ管理部１５が動作する。特に、イメージバッファ１１の必要サイズは時々刻々と変化する。つまり、コマンド解釈部１７がイメージデータを新たに生成すれば、その生成したデータ量だけイメージバッファ１１は増大させる必要があり、また、印刷制御部１９がイメージデータを新たに読み込めば、その読み込んだデータ量だけイメージバッファ１１を縮小することができる。メモリ管理部１５は、このようにイメージデータの生成及び読み込みの進行に応じてイメージバッファ１１のサイズを調節し、さらに、イメージバッファ１１のサイズ変化に依存させて、可能な限り受信バッファ９が大きく確保できるように受信バッファ９のサイズの上限値を変更する。
【００１５】
受信バッファ９のサイズが上記上限値を越えなければ、ホストコンピュータ１からの印刷データは継続して受信することができ、それに合せて受信バッファ９のサイズは増大していく。受信バッファ９のサイズが上限値を越えると、メモリ管理部１５はホストインタフェース３に命じて受信を一時的に中断させる。中断している間に、受信バッファ９からコマンド解釈部１７へ印刷データが読み出されて行き、新たな受信は行われないので、受信バッファ９のサイズは減少していく。受信バッファ９のサイズが上限値を下回ると、受信を再開することができる。
【００１６】
図３は、メモリ管理部１５が行う受信バッファ７のサイズ制御の手順を示すフローチャートである。この手順では、受信バッファ９のサイズの上限値は２段階、つまり、図４に模式的に示すように小さい上限値ｎ１と大きい上限値ｎ２とに切換え制御する。なお、ｎはヒープメモリ１３の全容量である。
【００１７】
メモリ管理部１５は、先ず、ヒープメモリ１３の全容量ｎから受信バッファサイズの大きい上限値ｎ２を差し引いた値（ｎ−ｎ２）に比べて、イメージバッファ１１とワークエリア９の合計サイズｂが、十分に小さいかどうか（ｂ＜＜（ｎ−ｎ２））を判定する（ステップＳ１）。要するに、受信バッファ７のサイズを大きい上限値ｎ２まで確保するのに十分なだけの空き容量が、メモリ１３内に存在するか否かを判断する。
【００１８】
尚、ワークエリア９は、ホストコンピュータ１からのダウンロードフォントなどを保存するエリアであって、そのサイズは一旦決まれば、以後は大きくは変化しないので、受信バッファ７のサイズの動的な調整に、イメージバッファ１１程には大きくは影響しない。そこで、以下では、説明を簡単にするために、ワークエリア９のサイズは一定とし、全ヒープメモリ１３からワークエリア９を除いた部分のサイズをｎとし、イメージバッファ１１のサイズをｂとして説明を行う。
【００１９】
さて、ステップＳ１でｂ＜＜（ｎ−ｎ２）であれば（ＹＥＳ）、メモリ１３に充分に空き容量があることを意味する。この場合は、ホストコンピュータ１から緩い制限ｎ２で印刷データを受信し、受信したデータを全て受信バッファ７が受入れられるよう、受信したデータ量の増加に合せて受信バッファサイズａを増加させる（Ｓ２）。このように、可能な限り受信バッファサイズａを増やしてホストコンピュータ１からのデータを受入れることは、ホストコンピュータ１の解放時間を短くすることに寄与する。
【００２０】
印刷データの受信を続けながら、受信バッファサイズａが大きい上限値ｎ２に達したか否かチェックし（Ｓ３）、ａがｎ２に達したら（Ｓ３でＹＥＳ）、ホストインタフェース３に命じてホストコンピュータ１からのデータ受信を一時的に停止する（Ｓ４）。
【００２１】
上記動作と並行して、コマンド解釈部１７は受信バッファ７から印刷データを読み出し、これを解釈してイメージデータを作成していく。従って、データ受信を停止している間は、コマンド解釈部１７の処理の進行に伴って、受信バッファ７内の印刷データ量は減少していく。そこで、この減少に合せて受信バッファサイズａも減少させていく（Ｓ５）。逆に、コマンド解釈部１７が生成したイメージデータの量は増えて行くから、このイメージデータを全てイメージバッファ１１に格納できるよう、このデータ増加に合せてイメージバッファ１１のサイズｂを増加させてゆく（Ｓ５）。
【００２２】
イメージバッファサイズｂが増加して行ってｂ＜＜（ｎ−ｎ２）でなくなると（Ｓ１でＮＯ）、つまりメモリ１３の空き容量が充分でなくなると、制御はステップＳ６へ移り、受信バッファサイズａの上限値を小さい上限値ｎ１へ切換える。即ち、まず、受信バッファサイズａが小さい上限値ｎ１を下回ったかどうかを判定し（Ｓ６）、ａがｎ１を下回っていなければ（Ｓ６でＮＯ）、データ受信停止をさらに継続し（Ｓ７）、その間、既に説明したステップ５と同様、受信バッファ７内のデータ減少に伴って受信バッファ７を縮小し、かつ、生成されたイメージデータの増加に伴ってイメージバッファ１１を拡大していく（Ｓ９）。その結果受信バッファ７が縮小していってｎ１を下回ると（Ｓ６でＹＥＳ）、再びホストコンピュータ１からの受信を開始し、それによる受信データ量の増加に伴って受信バッファサイズａをまた増加させる（Ｓ１０）。そして、受信バッファサイズａがｎ１を上回まわると（Ｓ１１でＹＥＳ）、再び受信を停止し（Ｓ１２）、ステップＳ９へ進む。
【００２３】
このように、イメージデータが増えて空き容量が充分でない間は、受信バッファサイズａが小さい上限値ｎ１を越えない範囲で、受信と受信停止とを繰り返すが、この間に印刷エンジン２１による印刷が開始されると（Ｓ８でＹＥＳ）、制御はステップＳ１へ戻る。印刷が開始されると、イメージバッファ１１内のイメージデータが印刷制御部１９に転送されてゆくので、イメージバッファ１１内のデータ量が減り、これに伴ってイメージバッファサイズｂも減少していく。その結果として、イメージバッファサイズｂが（ｎ−ｎ２）より充分小さくなると（Ｓ１でＹＥＳ）、制御はステップＳ２へ再び入って、受信バッファ７のサイズａは大きい上限値ｎ２に基づいて制御される。
【００２４】
以上のように、イメージバッファ１１のサイズに依存して、空き容量が充分に大きければ、受信バッファ７を比較的に大きく確保するように、また、空き容量が充分に大きくなければ、受信バッファ７を比較的に小さく確保するように、受信バッファサイズが動的に調節される。
【００２５】
以上の動作説明では、ワークエリア９のサイズを一定としたが、勿論、イメージバッファサイズとワークエリアサイズの和をｂとすれば、ワークエリアサイズの変動にも対応できる。
【００２６】
図４は、上述した制御によって各バッファのサイズが自動的に調節される過程の具体的な一例を示した模式図である。横軸は経過時間を示し、縦軸はメモリ量を示す。縦軸の、全幅ｎはメモリ１３の全容量、ｎ１は受信バッファサイズの小さい上限値、ｎ２は受信バッファサイズの大きい上限値、ａは受信バッファ７のサイズ、ｂはイメージバッファ１１のサイズ（又は、イメージバッファ１１とワークエリア９の合計サイズ）を示す。
【００２７】
先ず、印刷データの受信開始前Ｔ０には、メモリ１３には殆どデータが格納されていないので、受信バッファサイズａは最小値ａ０、イメージバッファサイズｂも最小値ｂ０になっている。この初期状態から、印刷データの受信が開始されると、空き容量が充分にあるため、制限なしに受信が行われ、受信バッファサイズａは一気に増大し、時点Ｔ１で大きい上限値ｎ２に等しいサイズａ１に達する。
【００２８】
すると、受信が停止するため、イメージ生成処理の進行に伴って、受信バッファサイズａは減少し、逆に、イメージバッファサイズｂが増加していく。そして、時点Ｔ２のように、イメージバッファサイズｂが（ｎ−ｎ１）に匹敵する程度に大きくなると、受信バッファサイズａが小さい上限値ｎ１を下回るまで、受信が停止されることになる。従って、時点Ｔ３に示すように、受信バッファサイズａは益々減少し、逆に、イメージバッファサイズｂは益々増加してゆく。そして時点Ｔ４で、受信バッファサイズａが小さい上限値ｎ１を下回ると、再び受信が開始され、受信バッファサイズａは増加していく。
【００２９】
ここで、例えば時点Ｔｐで印刷が開始されると、イメージバッファ１１に格納されたイメージデータが急速に減少し、これによってイメージバッファサイズｂも減少する。その結果、時点Ｔ５に示すように、イメージバッファサイズｂが（ｎ−ｎ２）より充分に小さくなれば、受信を再開して受信バッファサイズａを増大させていく。そして、時点Ｔ６のように、イメージバッファサイズｂが充分に小さい限り、受信バッファサイズａは大きい上限値ｎ２まで一気に増加される。
【００３０】
尚、図４に示した過程は一例であって、実際には必ずしも図４と全く同じようにバッファサイズが変化するわけではない。しかし、イメージバッファのサイズに応じて、空き容量が許す範囲でなるべく大きい受信バッファが確保できるように制御が行われることを、当業者は理解できる筈である。
【００３１】
また、上述の説明では、受信バッファサイズの上限値を大小２段階に切換えたが、より多くの段階で調節するようにしてもよい。つまり、イメージバッファサイズｂのサイズを多レベルに区分して判別し、その判断結果に応じて受信バッファサイズの上限値を多段階に切換えるようにしてもよい。
【図面の簡単な説明】
【図１】本発明のプリンタの一実施形態の機能構成を表すブロック図。
【図２】ヒープメモリ上に各バッファが占める領域を示す概念図。
【図３】本実施形態のバッファサイズ制御の手順を示すフローチャート。
【図４】本実施形態のバッファサイズが調節される過程を説明する模式図。
【符号の説明】
１  ホストコンピュータ
３  ホストインターフェース
５  プリンタ
７  受信バッファ
９  ワークエリア
１１  イメージバッファ
１３  ヒープメモリ
１５  メモリ管理部
１７  コマンド解釈部
１９  印刷制御部
２１  印刷エンジン
【図１】
0003574289.tif 000002
【図２】
0003574289.tif 000003
【図３】
0003574289.tif 000004
【図４】
0003574289.tif 000005