(57)【特許請求の範囲】
【請求項１】
ネットワークを介して受信したデータを補助記憶装置に記憶可能なプリンタにおいて、
ネットワークを介してデータを受信する通信処理手段と、
前記受信されたデータを解釈してイメージデータを生成するイメージデータ生成手段と、
前記生成されたイメージデータに基づいて印刷を行う印刷処理手段と、
前記補助記憶装置に書き込まれている途中のファイル又は前記補助記憶装置に既に記憶されているファイル又は前記補助記憶装置からデータを読み出されているファイルのいずれかのデータ（以下、「処理中のデータ」）が前記補助記憶装置に記憶されているか否かを検出する検出手段と、
前記通信処理手段と前記補助記憶装置の入力側との間に設けられ、複数のメモリブロックを有する第１バッファメモリと、
前記補助記憶装置の出力側と前記イメージデータ生成手段との間に設けられ、複数のメモリブロックを有する第２バッファメモリとを備え、
前記補助記憶装置内に前記処理中のデータが記憶されている場合には、前記受信されたデータを、前記通信処理手段から前記第１バッファメモリと前記補助記憶装置とを経由して前記第２バッファメモリに格納し、前記第２バッファメモリから前記イメージデータ生成手段に入力させる補助記憶装置経由モードを選択し、
前記補助記憶装置内に前記処理中のデータが記憶されていない場合には、前記受信されたデータを、前記通信処理手段又は前記通信処理手段からのデータを格納した前記第１バッファメモリから前記補助記憶装置を介さずに前記第２バッファメモリに格納して、前記イメージデータ生成手段に入力させるバイパスモードを選択し、
前記第１バッファメモリ又は前記第２バッファメモリのメモリブロック単位で、前記補助記憶装置経由モードと前記バイパスモードとの切換を判定し、
かつ、前記バイパスモードとして、前記通信処理手段が前記第２バッファメモリのメモリブロックに前記受信したデータを格納する第１のバイパスモードと、前記第１バッファメモリのメモリブロックに格納されたデータを前記第２バッファメモリのメモリブロックに移す第２のバイパスモードとを備え、
前記第１のバイパスモードは、
(a1)前記第１バッファメモリにデータ格納済みのメモリブロックが存在せず、
(a2)前記補助記憶装置内に処理中のデータが記憶されておらず、
(a3)前記第２バッファメモリに空いているメモリブロックが存在する場合に、切り換えられ、
前記第２のバイパスモードは、
(b1)前記補助記憶装置内に処理中のデータが記憶されておらず、
(b2)前記第２バッファメモリに空いているメモリブロックが存在し、
(b3)前記第１バッファメモリにデータ格納済みのメモリブロックが存在する場合に、切り換えられる、
ことを特徴とするプリンタ。
【請求項２】
ネットワークを介して受信したデータを補助記憶装置に記憶可能なプリンタにおいて、
ネットワークを介してデータを受信する通信処理手段と、
前記通信処理手段から入力されたデータを前記補助記憶装置に記憶させる書込み手段と、
前記補助記憶装置に記憶されたデータを読み出す読出し手段と、
前記読出し手段から入力されたデータを解釈してイメージデータを生成するイメージデータ生成手段と、
前記生成されたイメージデータに基づいて印刷を行う印刷処理手段と、
前記補助記憶装置に書き込まれている途中のファイル又は前記補助記憶装置に既に記憶されているファイル又は前記補助記憶装置からデータを読み出されているファイルのいずれかのデータ（以下、「処理中のデータ」）が前記補助記憶装置に記憶されているか否かを検出する検出手段と、
前記通信処理手段と前記書込み手段との間に設けられ、複数のメモリブロックを有する第１バッファメモリと、
前記読出し手段と前記イメージデータ生成手段との間に設けられ、複数のメモリブロックを有する第２バッファメモリとを設け、
前記補助記憶装置内に前記処理中のデータが記憶されている場合には、前記通信処理手段が受信したデータを、前記第１バッファメモリ、前記書込み手段、前記補助記憶装置、前記読出し手段、前記第２バッファメモリを順に経て前記イメージデータ生成手段に入力させる補助記憶装置経由モードを選択し、
前記補助記憶装置内に処理中のデータが記憶されていない場合には、前記通信処理手段が受信したデータを、前記通信処理手段又は前記書込み手段から前記補助記憶装置を介さずに前記第２バッファメモリに格納して、前記イメージデータ生成手段に入力させるバイパスモードを選択し、
前記補助記憶装置経由モードと前記バイパスモードとの切換判定を、前記第１バッファメモリ又は前記第２バッファメモリのメモリブロック単位で行い、
かつ、前記バイパスモードとして、前記通信処理手段が前記第２バッファメモリのメモリブロックに前記受信したデータを格納する第１のバイパスモードと、前記第１バッファメモリのメモリブロックに格納されたデータを前記書込み手段が前記第２バッファメモリのメモリブロックに移す第２のバイパスモードとを備え、
前記第１のバイパスモードは、
(a1)前記第１バッファメモリにデータ格納済みのメモリブロックが存在せず、
(a2)前記補助記憶装置内に処理中のデータが記憶されておらず、
(a3)前記第２バッファメモリに空いているメモリブロックが存在する場合に、切り換えられ、
前記第２のバイパスモードは、
(b1)前記補助記憶装置内に処理中のデータが記憶されておらず、
(b2)前記第２バッファメモリに空いているメモリブロックが存在し、
(b3)前記第１バッファメモリにデータ格納済みのメモリブロックが存在する場合に、切り換えられる、
ことを特徴とするプリンタ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば、HDD（Hard Disk Drive）等の補助記憶装置を有するプリンタ及びプリンタのデータ処理方法に関する。
【０００２】
【従来の技術】
従来のプリンタでは、ホストコンピュータからの印刷ジョブデータを受信バッファに格納し、受信バッファに格納されたデータを順次解釈して、印刷出力用のイメージデータを生成し印刷を行う。このように順次解釈して印刷すれば良いため、いわゆるローカルプリンタでは、プリントエンジンの形式に応じて、例えば１バンド分、１ページ分のデータを一時的に格納できるだけのメモリがあれば足りる。
【０００３】
しかし、近年では、コンピュータや画像処理技術等の発達に伴って、印刷ドキュメントのカラーイメージ化等が進んでいるため、印刷ジョブデータのデータ量が増大している。また、LAN（Local Area Network）等のネットワークを介して、複数のホストコンピュータがプリンタを共用するネットワーク印刷システムの場合は、複数のホストコンピュータからの印刷ジョブデータを次々に処理する必要がある。もし、プリンタの搭載メモリ量が１ページ分しかないのであれば、数百ページのドキュメントの印刷を希望するホストコンピュータは、長時間に亘って延々と印刷ジョブデータを送り続けなければならない。そして、ネットワークを介して接続された他の多くのホストコンピュータは、長い印刷待ち時間を耐える必要がある。
【０００４】
従って、膨大な印刷ジョブデータを速やかに格納してホストコンピュータを早期に解放等すべく、プリンタ内にHDD等の補助記憶装置を設け、受信データをHDDに格納させるようにしたプリンタが近年提案されている。
【０００５】
【発明が解決しようとする課題】
ところで、上述した補助記憶装置内蔵型のプリンタでは、多量のデータを格納できるため、ホストコンピュータを早期に解放することができる。しかし、補助記憶装置は、回転する記録媒体上の所定位置にヘッドを移動させてデータの読み書きを行うため、RAM等のメモリにアクセスする場合よりも遅くなる。例えば、ネットワークからのデータ受信速度が１〜２ＭＢ／ｓ、イメージデータ生成部での処理が１ＭＢ／ｓの場合でも、HDDのデータ転送速度は約５００ＭＢ／ｓと遅いのが通常である。
【０００６】
従って、補助記憶装置を経由して印刷ジョブデータの転送を行うと、補助記憶装置への書込み時間と補助記憶装置からの読出し時間とがかかり、印刷処理速度が大幅に低下する。高速インターフェースやＤＭＡ転送等を採用すれば、補助記憶装置のデータ転送速度は向上するが、製造コストが増大する。
【０００７】
本発明は、上記のような種々の課題に鑑みなされたものであり、その目的は、プリンタ内部のデータ処理状態に応じて補助記憶装置を利用することにより、ホストコンピュータの早期解放と印刷処理速度の向上とを両立できるようにしたプリンタ及びプリンタのデータ処理方法を提供することにある。
【０００８】
【課題を解決するための手段】
上記目的達成のため、本発明に係るプリンタでは、補助記憶装置を経由してデータを転送する補助記憶装置経由モードと補助記憶装置を経由せずにデータを転送するバイパスモードとを用意し、受信データの処理中も、必要に応じて切り換えるようにしている。
【０００９】
即ち、本発明では、ネットワークを介して受信したデータを補助記憶装置に記憶可能なプリンタにおいて、ネットワークを介してデータを受信する通信処理手段と、前記受信されたデータを解釈してイメージデータを生成するイメージデータ生成手段と、前記生成されたイメージデータに基づいて印刷を行う印刷処理手段と、前記補助記憶装置に書き込まれている途中のファイル又は前記補助記憶装置に既に記憶されているファイル又は前記補助記憶装置からデータを読み出されているファイルのいずれかのデータ（以下、「処理中のデータ」）が前記補助記憶装置に記憶されているか否かを検出する検出手段と、前記通信処理手段と前記補助記憶装置の入力側との間に設けられ、複数のメモリブロックを有する第１バッファメモリと、前記補助記憶装置の出力側と前記イメージデータ生成手段との間に設けられ、複数のメモリブロックを有する第２バッファメモリとを備え、前記補助記憶装置内に前記処理中のデータが記憶されている場合には、前記受信されたデータを、前記通信処理手段から前記第１バッファメモリと前記補助記憶装置とを経由して前記第２バッファメモリに格納し、前記第２バッファメモリから前記イメージデータ生成手段に入力させる補助記憶装置経由モードを選択し、前記補助記憶装置内に前記処理中のデータが記憶されていない場合には、前記受信されたデータを、前記通信処理手段又は前記通信処理手段からのデータを格納した前記第１バッファメモリから前記補助記憶装置を介さずに前記第２バッファメモリに格納して、前記イメージデータ生成手段に入力させるバイパスモードを選択し、前記第１バッファメモリ又は前記第２バッファメモリのメモリブロック単位で、前記補助記憶装置経由モードと前記バイパスモードとの切換を判定し、かつ、前記バイパスモードとして、前記通信処理手段が前記第２バッファメモリのメモリブロックに前記受信したデータを格納する第１のバイパスモードと、前記第１バッファメモリのメモリブロックに格納されたデータを前記第２バッファメモリのメモリブロックに移す第２のバイパスモードとを備え、前記第１のバイパスモードは、(a1)前記第１バッファメモリにデータ格納済みのメモリブロックが存在せず、(a2)前記補助記憶装置内に処理中のデータが記憶されておらず、(a3)前記第２バッファメモリに空いているメモリブロックが存在する場合に、切り換えられ、前記第２のバイパスモードは、(b1)前記補助記憶装置内に処理中のデータが記憶されておらず、(b2)前記第２バッファメモリに空いているメモリブロックが存在し、(b3)前記第１バッファメモリにデータ格納済みのメモリブロックが存在する場合に、切り換えられる、ことを特徴としている。
【００１０】
補助記憶装置としては、代表的には、ハードディスク装置（HDD）を挙げることができるが、これに限定されない。補助記憶装置経由モードでは、ホストコンピュータから受信したデータを補助記憶装置に記憶させるため、ホストコンピュータを早期に解放することができる。一方、バイパスモードでは、受信データを補助記憶装置を介さずに直接イメージデータ生成手段に転送するため、補助記憶装置への書込み時間、補助記憶装置からの読出し時間を省略することができ、印刷処理速度を向上させることができる。
【００１１】
補助記憶装置経由モードとバイパスモードとの切換は、検出手段により検出されるデータ処理状態に基づいて行われる。データ処理状態に基づく切換の一例としては、例えば、請求項２に係る発明のように、補助記憶装置内に処理中のデータが記憶されている場合には補助記憶装置経由モードを選択し、補助記憶装置内に処理中のデータが記憶されていない場合にはバイパスモードを選択することができる。
【００１２】
もしも補助記憶装置内に処理中のデータが記憶されている場合に、バイパスモードでイメージデータ生成部にデータを転送すると、印刷順序等が混乱するため、例えば、補助記憶装置内のデータの有無によりモードを切り換える。ここで、「処理中のデータ」とは、これから印刷しようとする又は印刷中の印刷ジョブデータを意味する。
【００１３】
本発明では、補助記憶装置の入力側に第１のバッファメモリを、補助記憶装置の出力側に第２のバッファメモリをそれぞれ設け、各バッファメモリのメモリブロックを介してデータ転送を行うことができる。この場合、バイパスモードとしては、通信処理手段が第２のバッファメモリのメモリブロックに受信データを格納させる第１のバイパスモードを採用することができる。イメージデータ生成部は、第２のバッファメモリのメモリブロックを介してデータを受け取るため、第２のバッファメモリのメモリブロックに直接データを格納すれば、補助記憶装置を介さずにデータを転送することができる。
【００１４】
ここで、第１のバイパスモードの切換条件としては、(a1)第１バッファメモリにデータ格納済みのメモリブロックが存在せず、かつ、(a2)補助記憶装置内に処理中のデータが記憶されておらず、かつ、(a3)第２バッファメモリに空いているメモリブロックが存在する場合であること、を挙げることができる。
【００１５】
つまり、第１バッファメモリから補助記憶装置までの間に処理中のデータが存在せず、第２バッファメモリに空いたメモリブロックが存在する場合には、通信処理手段は、受信データを直接第２バッファメモリのメモリブロックに格納させることができる。この場合、前記第１バッファメモリよりも第２バッファメモリの方が容量が大きくなるように設定することにより、第２バッファメモリの全メモリブロックを消費するまでに時間がかかるため、第１のバイパスモードによる転送期間を長くすることができる。
【００１６】
また、第１のバイパスモードとは別に、第１バッファメモリのメモリブロックの内容を第２バッファメモリのメモリブロックに移すことにより、補助記憶装置をバイパスさせる第２のバイパスモードを採用することもできる。ここで、各メモリブロック間のデータ移動方法としては、２つの方法を挙げることができる。一つは、第１バッファメモリのメモリブロックに格納されたデータを読み出して第２バッファメモリの空きメモリブロックに格納させるメモリ間コピーである。他の一つは、第１バッファメモリのメモリブロックを特定する情報（メモリブロックのアドレスやポインタ）と第２バッファメモリのメモリブロックを特定する情報とを交換することにより、メモリブロック自体を入れ替えるブロック交換である。
【００１７】
第２バイパスモードの切換条件としては、(b1)補助記憶装置内に処理中のデータが記憶されておらず、かつ、(b2)第２バッファメモリに空いているメモリブロックが存在し、かつ、(b3)第１バッファメモリにデータ格納済みのメモリブロックが存在すること、を挙げることができる。
【００１８】
また、バイパスモードとして、第１バイパスモード及び第２バイパスモードの双方を備えてもよい。
【００１９】
一方、他の観点に従う発明では、ネットワークを介して受信したデータを補助記憶装置に記憶可能なプリンタにおいて、ネットワークを介してデータを受信する通信処理手段と、通信処理手段から入力されたデータを前記補助記憶装置に記憶させる書込み手段と、前記補助記憶装置に記憶されたデータを読み出す読出し手段と、入力されたデータを解釈してイメージデータを生成するイメージデータ生成手段と、前記生成されたイメージデータに基づいて印刷を行う印刷処理手段と、前記補助記憶装置内の残存データを検出する検出手段と、前記通信処理手段と前記書込み手段との間に設けられ、複数のメモリブロックを有する第１バッファメモリと、前記補助記憶装置と前記読出し手段との間に設けられ、複数のメモリブロックを有する第２バッファメモリとを設け、前記各バッファメモリの使用状態と前記補助記憶装置内の残存データ量とに基づいて、前記通信処理部が受信したデータを前記第１バッファメモリ、前記書込み手段、前記補助記憶装置、前記読出し手段、前記第２バッファメモリを順に経て前記イメージデータ生成手段に入力させる補助記憶装置経由モードと、前記通信処理手段が受信したデータを前記補助記憶装置を介さずに前記イメージデータ生成手段に入力させるバイパスモードとを切り換えることを特徴としている。
【００２０】
また、本発明は、プリンタのデータ処理方法として把握することもできる。更に、本発明は、所定のプログラムを記録した記録媒体をプリンタのコンピュータに読み取らせて実行させることによっても実現することができる。「記録媒体」としては、例えば、ハードディスク（HD）、フロッピーディスク（FD）、コンパクトディスク（CD-ROM，CD-RAM等）、メモリ、ＩＣカード等の各種記録媒体を用いることができる。また、これに限らず、ネットワークを介してプログラムをダウンロードする等のように、通信媒体を用いることもできる。
【００２１】
【発明の実施の形態】
以下、図１〜図１２に基づき、本発明の実施の形態を詳細に説明する。
【００２２】
まず、図１は、本実施の形態によるプリンタのハードウエア構成を概略的に示す説明図である。プリンタは、インターフェース（以下「Ｉ／Ｆ」と略記）１，２と、CPU３と、RAM４及びROM５と、エンジン制御部８及びプリントエンジン９と、HDD１０とを備えている。
【００２３】
Ｉ／Ｆ１，２、CPU３、RAM４，ROM５及びHDD１０は、バス６を介して相互に接続されており、エンジン制御部８は、Ｉ／Ｆ２，７を介してCPU３等と接続されている。CPU３は、Ｉ／Ｆ１を介してLAN等のネットワークＮとの間でデータ通信を行う一方、Ｉ／Ｆ２を介してエンジン制御部８とデータ通信を行う。
【００２４】
CPU３は、通信タスク１１と、ＨＤ書込みタスク１２と、ＨＤ読出しタスク１３と、イメージ生成タスク１４と、印刷タスク１５とを実行可能に構成することができる。各タスク１１〜１５の切換、即ち、CPU実行権の管理は、例えば切換制御部として表現可能なスケジューラ１６によって行われる。スケジューラ１６は、予め設定された優先度に基づいて各タスク１１〜１５にCPU実行権を割り当てるようになっている。ここで、例えば、通信タスク１１や印刷タスク１５をそれぞれ専用のCPUで処理することもできる。
【００２５】
「通信処理手段」としての通信タスク１１は、ネットワークＮからパケットが着信すると、CPU実行権を得て起動する。通信タスク１１は、受信したパケットから例えばチェックサム等の余分なデータを除去して印刷データを取り出し、この印刷データをメモリブロックが一杯になるまで格納する。後述のように、データを格納したメモリブロックは、ＨＤ書込みタスク１２（補助記憶装置経由モード）又はイメージ生成タスク１４（第１のバイパスモード）のいずれかに引き渡される。
【００２６】
「書込み手段」としてのＨＤ書込みタスク１２は、後述のように、通信タスク１１からメモリブロックを介して入力されたデータをHDD１０に書き込むか（補助記憶装置経由モード）又はイメージ生成タスク１４に転送する（第２のバイパスモード）ようになっている。「読出し手段」としてのＨＤ読出しタスク１３は、HDD１０に記憶されたデータを読み出してメモリブロックに格納し、イメージ生成タスク１４に転送するようになっている。
【００２７】
「イメージデータ生成手段」としてのイメージ生成タスク１４は、データの格納されたメモリブロックを渡されると起動する。イメージ生成タスク１４は、メモリブロック内の印刷データを読み出して印刷イメージ（印刷要求）を生成し、この生成した印刷要求を印刷タスク１５に引き渡す。
【００２８】
「印刷処理手段」としての印刷タスク１５は、イメージ生成タスク１４から印刷要求が入力されると起動し、印刷要求に応じてエンジン制御部８を駆動させるようになっている。これにより、エンジン制御部８は、プリントエンジン９を駆動させてページ単位の印刷を行う。なお、エンジン制御部８及びプリントエンジン９を印刷手段又は印刷部と表現することもできる。
【００２９】
次に、図２は、プリンタ内部の機能構成を示すブロック図である。図２中の太線矢印は補助記憶装置経由モードによるデータ転送の流れを、一点鎖線矢印は第１のバイパスモードによるデータ転送の流れを、破線矢印は第２のバイパスモードによるデータ転送の流れを、それぞれ示す。
【００３０】
図２に示すように、通信タスク１１とＨＤ書込みタスク１２との間のデータ転送は、第１バッファメモリ２１を介して行われ、ＨＤ読出しタスク１３とイメージ生成タスク１４との間のデータ転送は、第２バッファメモリ２２を介して行われるようになっている。より正確には、通信タスク１１とイメージ生成タスク１４間のデータ転送（第１のバイパスモード）と、ＨＤ書込みタスク１２とイメージ生成タスク１４間のデータ転送（第２のバイパスモード）とにおいても、第２のバッファメモリ２２が用いられる。
【００３１】
また、HDD１０内には、ＨＤ書込みタスク１２によりデータが書き込まれている途中のファイルと、既に記憶されて処理待ちのファイルと、ＨＤ読出しタスク１３によりデータを読み出されているファイルの３種類のファイルが生成される場合がある。この３種類のファイルの全てが「処理中のデータ」又は「残存データ」に相当する。さらに、図３中のＨＤ書込みタスク１２，図４中のＨＤ読出しタスク１３中にそれぞれ示すように、各タスク内にデータが存在する場合も、「処理中のデータ」又は「残存データ」に相当する。読出し待ちのファイル数は、残存ファイル検出部２３により検出され、通信タスク１１，ＨＤ書込みタスク１２及びＨＤ読出しタスク１３にそれぞれ通知される。
【００３２】
ここで、第１バッファメモリ２１よりも第２バッファメモリ２２の方がメモリ容量が大きくなるように設定されている。これにより、第２バッファメモリの全メモリブロックにデータが格納されるまでの時間が長くなる。従って、第１のバイパスモードによる転送時間を長くして、印刷処理時間を短縮することができるようになっている。
【００３３】
図３は、通信タスク１１からHDD１０までのデータ転送の流れを模式的に示す説明図である。通信タスク１１は、着信したパケットからヘッダ情報等の余分なデータを取り除き、第１バッファメモリ２１の空いているメモリブロックが一杯になるまでデータを格納する。ＨＤ書込みタスク１２は、満杯のメモリブロックを受け取ると、該メモリブロックからデータを取り出し、HDD１０上のファイルにデータを書き込む。データを取り出されたメモリブロックは第１バッファメモリ２１に返却される。なお、メモリブロックからのデータ読出しは、FIFO（先入れ先出し）で順次処理される。
【００３４】
図４は、HDD１０からイメージ生成タスク１４までのデータ転送の流れを模式的に示す説明図である。ＨＤ読出しタスク１３は、HDD１０内のファイルからデータを読出し、第２バッファメモリ２２から空きメモリブロックを一つ取出し、一杯になるまでデータを格納する。この処理は、空きメモリブロックがある限り繰り返される。イメージ生成タスク１４は、満杯のメモリブロックを受け取ると、該メモリブロックからデータを取り出して１ページ分の印刷要求を生成し、この印刷要求を印刷タスク１５に入力する。データを取り出されて空になったメモリブロックは、第２バッファメモリ２２に返却される。
【００３５】
次に、図５〜図１２に基づいて本実施の形態の作用を説明する。なお、以下の説明では、ステップを「Ｓ」と略記する。また、説明の便宜上、図中では、バッファメモリを「バッファ」と、メモリブロックを「ブロック」と、「HDD」を「ＨＤ」とそれぞれ略記する。
【００３６】
まず、図５は、通信タスク１１による処理を示す。通信タスク１１はネットワークＮからパケットデータが着信すると起動し（S1:YES）、次に、データ転送モード切換条件を判定する。即ち、第１バッファメモリ２１にデータが格納された空ではないメモリブロックが存在するか否か（Ｓ２）、HDD１０に残存ファイルがあるか否か（Ｓ３）、第２バッファメモリ２２に空いているメモリブロックがあるか否か（Ｓ４）についてそれぞれ判定する。
【００３７】
第１バッファメモリ２１に満杯のブロックがある場合（S2:YES）、HDD１０に残存ファイルが存在する場合（S3:YES）、第２バッファメモリ２２に空きメモリブロックが無い場合（S4:NO）のいずれかである場合には、補助記憶装置経由モードによるデータ転送を行うべく、第１バッファメモリ２１に空いているメモリブロックがあるか否かを検査する（Ｓ５）。空いているメモリブロックが存在する場合には（S5:YES）、第１バッファメモリ２１から空いているメモリブロックを一つ取出し、メモリブロックが満杯になるまでデータを格納する（Ｓ６）。なお、第１バッファメモリ２１に空いているメモリブロックが無い場合は（S5:NO）、データを格納することができないため、Ｓ２に戻る。
【００３８】
一方、第１バッファメモリ２１に満杯のメモリブロックが存在せず（S2:NO）、HDD１０に残存ファイルが無く（S3:NO）、かつ、第２バッファメモリ２２に空きブロックが存在する場合には（S4:YES）、第１のバイパスモードでデータ転送を行うことができる。そこで、第１のバイパスモードでは、第２バッファメモリ２２から空いているメモリブロックを一つ取出し、メモリブロックが満杯になるまでデータを格納する（Ｓ７）。即ち、第１バッファメモリ２１からHDD１０までの経路中に処理中のデータが存在しないため、HDD１０をバイパスしてイメージ生成タスク１４にデータを転送しても印刷が乱れたりする等の不具合を生じない。もっとも、第２バッファメモリ２２に空きメモリブロックが無ければ、バイパス転送を行うことができないため、Ｓ４では第２バッファメモリ２２の状態を検査している。なお、電源投入直後の初期状態では、HDD１０に処理中のファイルは存在せず、各バッファメモリ２１，２２のメモリブロックは空いているため、第１のバイパスモードでデータが転送される。ここで、各バッファメモリ２１，２２にメモリを割り当てる際に、第２バッファメモリ２２の容量を第１バッファメモリの容量よりも大きくなるように設定すれば、第１のバイパスモードによる転送時間を長くすることができ、全体的な処理時間を短縮することができる。ここで、具体的には、バッファメモリとして使用可能な全メモリ量をメモリブロック１個のサイズで割ると、全メモリブロック数を求めることができる。この全メモリブロックのうち２割程度を第１バッファメモリ２１として使用し、残りの８割程度を第２バッファメモリ２２として使用することもできる。
【００３９】
次に、図６は、ＨＤ書込みタスク１２の処理を示す。まず、HDD１０に残存ファイルが存在するか否かを検査する（Ｓ１１）。HDD１０に残存ファイルが存在する場合は（S11:YES）、HDD１０をバイパスしてデータを転送できない場合、即ち、補助記憶装置経由モードでデータを転送すべき場合である。そこで、第１バッファメモリ２１に空きメモリブロックがあるか否か（Ｓ１２）、通信タスク１１が次の印刷ジョブを受信しており、空きメモリブロックを必要としているか否か（Ｓ１３）をそれぞれ検査する。第１バッファメモリ２１に空きメモリブロックが無く（S12:NO）、通信タスク１１が新たな空きメモリブロックを要求している場合は（S13:YES）、空きメモリブロックを生成すべく、データが格納された空ではないメモリブロックからデータを取り出してHDD１０にファイルを書き込む（Ｓ１４）。データを取り出されたメモリブロックは第１バッファメモリ２１に返却される（Ｓ１５）。これにより、通信タスク１１は、新たに受信したパケットデータをメモリブロックに格納することができる。
【００４０】
HDD１０に残存ファイルが存在しない場合は（S11:NO）、第２バッファメモリ２２に空いているメモリブロックが存在するか否かを検査する（Ｓ１６）。第２バッファメモリ２２に空きメモリブロックが無ければ、HDD１０をバイパスすることができないためである。次に、第１バッファメモリ２１にデータが格納された空ではないメモリブロックがあるか否かを検査し、第１バッファメモリから第２バッファメモリへ移し替え可能なデータの有無を判定する（Ｓ１７）。
【００４１】
Ｓ１６，Ｓ１７の双方で「ＹＥＳ」と判定された場合は、第１バッファメモリ２１のメモリブロックの中味（データ）を、第２バッファメモリの空きメモリブロックに移し替える（Ｓ１８）。ここで、データが格納されたメモリブロックからデータを読出し、読み出されたデータを空きメモリブロックにコピーしても良いし、あるいは、両メモリブロックのポインタ等を互いに交換することにより、ブロック毎交換してもよい。データを移し替えられて空になったメモリブロックは、第１バッファメモリ２１に返却される（Ｓ１９）。
【００４２】
なお、より詳細に述べると、Ｓ１４でHDD１０にデータを書き込む場合、新規の印刷ジョブに関するデータであるか否かを検査する。新規印刷ジョブのデータである場合は、HDD１０上にファイルを新規に作成し、該ファイルにデータを書き込む。また、一方、Ｓ１４では、印刷ジョブの最後のデータであるか否かも検査し、最後のデータである場合は、ファイルをクローズする。
【００４３】
次に、図７は、ＨＤ読出しタスク１３の処理を示す。まず、第２バッファメモリ２２に空きメモリブロックがあるか否かを検査する（Ｓ２１）。次に、HDD１０に残存ファイルがあるか否かを検査する（Ｓ２２）。第２バッファメモリ２２に空きメモリブロックが無い場合（S21:NO）又はHDD１０に読み出すべきファイルが存在しない場合（S22:NO）は、データ転送を行うことができないので、Ｓ２１に戻って待機する。一方、Ｓ２１，Ｓ２２の双方で「ＹＥＳ」と判定された場合は、HDD１０のファイルからデータを読出し、第２バッファメモリ２２の空きメモリブロックが満杯になるまでデータを格納する（Ｓ２３）。
【００４４】
そして、Ｓ２３でデータが読み出されたファイルの全てのデータを読み出し終えたか否かを判定し（Ｓ２４）、データを全て読み出した場合は（S24:YES）、該ファイルを削除する（Ｓ２５）。
【００４５】
次に、図８は、イメージ生成タスク１４の処理を示す。まず、第２バッファメモリ２２にデータが格納された空ではないメモリブロックがあるか否かを判定する（Ｓ３１）。第２バッファメモリ２２に空ではないメモリブロックがある場合は（S31:YES）、第２バッファメモリ２２からメモリブロックを一つ取り出してデータを読出し、印刷要求を生成する（Ｓ３２）。そして、データが取り出された空きメモリブロックを第２バッファメモリに返却する（Ｓ３３）。なお、印刷タスクは、本発明の要旨ではないので、処理の説明を割愛する。
【００４６】
このように構成される本実施の形態によれば、図９〜図１１に示すように、データ処理状態に応じた転送モードでデータを転送することができる。即ち、図９に示すように、補助記憶装置経由モードでは、受信データを、通信タスク１１、第１バッファメモリ２１、ＨＤ書込みタスク１２を経てHDD１０に記憶させ、HDD１０に記憶させたデータを、ＨＤ読出しタスク１３、第２バッファメモリ２２を介してイメージ生成タスク１４に入力することができる。従って、ホストコンピュータを早期に解放することができる。また、図１０に示す第１のバイパスモードでは、受信データを直接第２バッファメモリのメモリブロックに格納するため、ＨＤ書込みタスク１２及びＨＤ読出しタスク１３の処理を省略して、データを速やかにイメージ生成タスク１４に入力することができる。さらに、図１１に示す第２のバイパスモードでは、ＨＤ書込みタスク１２は、HDD１０にデータを書き込む代わりに、第２バッファメモリ２２のメモリブロックにデータを格納するため、速やかにデータをイメージ生成タスク１４に転送することができる。
【００４７】
図１２（ａ）に示すように、印刷ジョブの受信初期には、第１のバイパスモードで転送が行われる。やがて、通信タスク１１が第２バッファメモリ２２のメモリブロックを使い果たすと、受信データは第１バッファメモリ２１のメモリブロックに格納される。通信タスク１１が第１バッファメモリ２１を使用している間に、イメージ生成タスク１４は第２バッファメモリ２２から満杯のメモリブロックを受け取って印刷要求を生成する。上述の通り、HDD１０に残存ファイルが存在しない状況下で、第１バッファメモリ２１に満杯のメモリブロックが生じると、ＨＤ書込みタスク１２による第２のバイパスモードに切り換わる。第２のバイパスモードでは、ＨＤ書込みタスク１２が第２バッファメモリ２２のメモリブロックにデータを格納する。第２バイパスモードへの移行により、第２バッファメモリ２２に空きメモリブロックが無くなると、補助記憶装置経由モードに切り替わり、データはHDD１０を経由してイメージ生成タスク１４に入力される。従って、印刷ジョブの受信直後から第１、第２のバイパスモードによる高速なデータ転送が行われ、印刷ジョブの中間付近で補助記憶装置経由モードに移行する。
【００４８】
そして、印刷ジョブの終わり頃では、HDD１０内のファイルが全て読み出されるため、補助記憶装置経由モードから第２のバイパスモードに切り替わる。やがて、第２のバイパスモードから第１のバイパスモードへと移行する。
【００４９】
なお、全ての印刷ジョブにおいて、図１２（ａ）のようなモード切換が行われる訳ではない。パケットの受信速度、印刷ジョブのデータ量、イメージ生成タスク１４の処理速度等の各種パラメータの変化によって、モード切換の状況は変化する。例えば、図１２（ｂ）に示すように、イメージ生成タスク１４の動作に比較して通信タスク１１の動作が圧倒的に速く、第２バッファメモリ２２の空きメモリブロックが一つも存在しなくなった後、最初の空きメモリブロックが一つできる以前に第１バッファメモリ２１のメモリブロックを使い切ってしまった場合には、第１バイパスモードから補助記憶装置経由モードに移行する場合も考えられる。印刷ジョブのデータ量が少ない場合は、図１２（ｃ）に示すように、補助記憶装置経由モードに移行することなく、第１のバイパスモードのみでデータ処理が行われることもある。
【００５０】
この他にも、第１バイパスモード→第２バイパスモード→補助記憶装置経由モード→第１バイパスモード（第２バイパスモードを経ずに補助記憶装置経由モードから第１バイパスモードに移行して印刷を終了する）の順で処理が行われる場合もある。また、第１バイパスモード→補助記憶装置経由モード→第２バイパスモード→第１バイパスモードの順で処理される場合もある。
【００５１】
さらに、本実施の形態では、一つの印刷ジョブが単独で受信された場合を例示しているが、実際には、複数の印刷ジョブが連続して受信されたり、他の印刷ジョブと隙間をあけて孤立した印刷ジョブが受信される場合もある。このように、複数の印刷ジョブを受信する場合には、第１のバイパスモード、第２のバイパスモード及び補助記憶装置経由モードのいずれの状態間でも遷移し得る。但し、初期状態及び全印刷ジョブの処理を完了した後では、最初に第１のバイパスモードで転送が行われる。
【００５２】
本実施の形態によれば、以下の効果を奏する。
【００５３】
第１に、データ処理状態に基づいて、HDD１０を経由する補助記憶装置経由モードとHDD１０をバイパスするバイパスモードとを切り換えるため、印刷ジョブの全体をHDD１０に格納する場合よりも、処理時間を大幅に短縮することができる。この結果、補助記憶装置経由モードによるホストコンピュータの早期解放とバイパスモードによる高速処理とを両立させることができ、使い勝手が向上する。
【００５４】
第２に、データ処理状態に応じて、HDD１０を使用するか否かを動的に変化させるため、高速インターフェースやＤＭＡ転送等を用いずに、全体の処理速度を向上させることができる。
【００５５】
第３に、HDD１０内に残存ファイルが存在等する場合にはバイパスモードを選択せず、補助記憶装置経由モードでデータ転送を行うため、印刷順序が乱れたりするのを防止しつつ処理速度を高めることができる。
【００５６】
第４に、通信タスク１１からイメージ生成タスク１４への第１のバイパスモードのみならず、ＨＤ書込みタスク１２からイメージ生成タスク１４への第２のバイパスモードをも備えているため、高速なデータ転送期間を長くすることができ、全体の処理時間を短縮することができる。
【００５７】
第５に、HDD１０への読み書きも単一のCPU３で処理するマルチタスク型プリンタでは、HDD１０へのデータ操作の分だけ処理時間が長くなるが、本発明によれば、補助記憶装置経由モードとバイパスモードとを切換可能なため、マルチタスク型プリンタにおいて特に有効である。
【００５８】
なお、当業者であれば、前記実施の形態に記載された本発明の要旨の範囲内で種々の追加、変更等が可能である。例えば、記録媒体に記録された所定のプログラムをプリンタのコンピュータに読み取らせることにより、本発明を実現することもできる。
【００５９】
また、各バッファメモリの使用単位であるメモリブロックの大きさは、データ処理状態に応じて変化させることもできる。例えば、両メモリブロックのサイズを１００ＫＢ程度の固定値とすることもできるし、プリンタ内部のデータ処理速度等に応じてブロックサイズを変化させることもできる。また、各バッファメモリのメモリブロックのサイズは、同一である必要はなく、異なってもよい。但し、ブロックサイズが同一であれば、データの移し替え等に便利である。
【００６０】
更に、本発明は、少なくともＨＤ書込みタスク１２、ＨＤ読出しタスク１３及びイメージ生成タスク１４を単一のCPUでそれぞれ処理するマルチタスク型プリンタとして表現することも可能である。
【００６１】
さらに、プリンタとしては、プリンタ専用機に限らず、複写機、ファクシミリ装置等の他の機能を備えた複合機でもよい。
【００６２】
【発明の効果】
以上説明した通り、本発明に係るプリンタ及びプリンタのデータ処理方法によれば、データ処理状態に応じて、データ転送モードを変更できるため、補助記憶装置を利用したホストコンピュータの早期解放と補助記憶装置のバイパスによる高速処理とを両立させることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るプリンタの構成を示すブロック図である。
【図２】プリンタの機能構成を示すブロック図である。
【図３】通信タスクからHDDまでのデータ転送を示す説明図である。
【図４】  HDDからイメージ生成タスクまでのデータ転送を示す説明図である。
【図５】通信タスクの処理を示すフローチャートである。
【図６】ＨＤ書込みタスクの処理を示すフローチャートである。
【図７】ＨＤ読出しタスクの処理を示すフローチャートである。
【図８】イメージ生成タスクの処理を示すフローチャートである。
【図９】補助記憶装置経由モードによるデータ転送を示す説明図である。
【図１０】第１のバイパスモードによるデータ転送を示す説明図である。
【図１１】第２のバイパスモードによるデータ転送を示す説明図である。
【図１２】転送モードの移行状態を示す説明図である。
【符号の説明】
３  ＣＰＵ
１０  HDD
１１  通信タスク
１２  ＨＤ書込みタスク
１３  ＨＤ読出しタスク
１４  イメージ生成タスク
２１  第１バッファメモリ
２２  第２バッファメモリ
２３  残存ファイル検出部
【図１】
0003953676.tif 000002
【図２】
0003953676.tif 000003
【図３】
0003953676.tif 000004
【図４】
0003953676.tif 000005
【図５】
0003953676.tif 000006
【図６】
0003953676.tif 000007
【図７】
0003953676.tif 000008
【図８】
0003953676.tif 000009
【図９】
0003953676.tif 000010
【図１０】
0003953676.tif 000011
【図１１】
0003953676.tif 000012
【図１２】
0003953676.tif 000013