(57)【特許請求の範囲】
【請求項１】
印刷データを受信する通信処理手段と、
前記受信された印刷データを記憶可能な記憶制御装置と、
前記印刷データを解釈してイメージデータを生成するイメージデータ生成手段と、
前記イメージデータに基づいて印刷を行う印刷処理手段とを備え、前記記憶制御装置は、
シーケンシャルファイルが設定される補助記憶装置と、
前記シーケンシャルファイルへの入力要求が生じた場合には所定のファイル操作準備処理を行い、入力された印刷データを前記シーケンシャルファイルに書き込む書込み手段と、
前記シーケンシャルファイルからの出力要求が生じた場合には所定のファイル操作準備処理を行い、前記シーケンシャルファイルから印刷データを読み出して出力する読出し手段と、
所定の起動条件が成立したか否かを監視する監視手段を備え、
前記書込み手段及び読出し手段は、前記シーケンシャルファイルへの操作終了後もファイル操作可能状態を維持し、前記起動条件が成立した場合にのみファイル操作終了処理を実行させ、
前記読出し手段は、前記書込み手段による印刷データの書込みに応じて、前記シーケンシャルファイルから印刷データを読み出すことを特徴とするプリンタ。
【請求項２】
前記書込み手段は、前記補助記憶装置のデータ転送効率の点から決定される所定のデータ量毎に、前記シーケンシャルファイルへ印刷データを書き込む請求項１に記載のプリンタ。
【請求項３】
前記所定の起動条件は、電源の切断が検出された場合である請求項１に記載のプリンタ。
【請求項４】
前記所定の起動条件は、前記通信処理手段から前記印刷処理手段までのデータ処理系統中に印刷処理すべき印刷データが１つも存在しない場合である請求項１に記載のプリンタ。
【請求項５】
前記通信処理手段から前記書込み手段に印刷データを入力するための第１バッファメモリと、前記読出し手段から前記イメージデータ生成手段に印刷データを出力するための第２バッファメモリとを更に設け、
補助記憶装置経由モードによる転送を行う場合は、前記第１バッファメモリ、前記書込み手段、前記補助記憶装置、前記読出し手段を順に経て前記第２バッファメモリに印刷データを格納し、
バイパスモードによる転送を行う場合は、前記第１バッファメモリに格納された印刷データを前記第２バッファメモリに格納させる請求項１に記載のプリンタ。
【請求項６】
前記補助記憶装置内に処理中の印刷データが記憶されている場合には前記補助記憶装置経由モードを選択し、前記補助記憶装置内に処理中の印刷データが記憶されていない場合には前記バイパスモードを選択する請求項５に記載のプリンタ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば、HDD（Hard Disk Drive）等の補助記憶装置のデータ入出力を制御する記憶制御装置及び該記憶制御装置を有するプリンタに関する。
【０００２】
【従来の技術】
従来のプリンタでは、ホストコンピュータからの印刷ジョブデータを受信バッファに格納し、受信バッファに格納されたデータを順次解釈して、印刷出力用のイメージデータを生成し印刷を行う。このように順次解釈して印刷すれば良いため、いわゆるローカルプリンタでは、プリントエンジンの形式に応じて、例えば１バンド分、１ページ分のデータを一時的に格納できるだけのメモリがあれば足りる。
【０００３】
しかし、近年では、コンピュータや画像処理技術等の発達に伴って、印刷ドキュメントのカラーイメージ化等が進んでいるため、印刷ジョブデータのデータ量が増大している。また、LAN（Local Area Network）等のネットワークを介して、複数のホストコンピュータがプリンタを共用するネットワーク印刷システムの場合は、複数のホストコンピュータからの印刷ジョブデータを次々に処理する必要がある。もし、プリンタの搭載メモリ量が１ページ分しかないのであれば、数百ページのドキュメントの印刷を希望するホストコンピュータは、長時間に亘って延々と印刷ジョブデータを送り続けなければならない。そして、ネットワークを介して接続された他の多くのホストコンピュータは、長い印刷待ち時間を耐える必要がある。
【０００４】
従って、膨大な印刷ジョブデータを速やかに格納してホストコンピュータを早期に解放等すべく、プリンタ内にHDD等の補助記憶装置を設け、受信データをHDDに格納させるようにしたプリンタが近年提案されている。
【０００５】
一方、プリンタに限らず、従来の補助記憶装置を用いたファイルアクセス方法では、補助記憶装置上のファイルをオープンしてデータの読み書きを行った後、ファイルをクローズして処理を終了する。また、通常は、複数のランダムアクセスファイルを補助記憶装置上に記憶させる。
【０００６】
図１７は、従来のファイルアクセス方法の概略を示す。図中左側に示すように、書き込むべきデータが入力された場合は（PS1:YES）、ファイルをオープンする（ＰＳ２）。ファイルのオープンとは、ファイル操作のための準備処理、前処理を意味し、具体的には、OS（Operating System）に対するファイル使用の宣言、データ入出力用のバッファの確保、ファイル構造体からのファイル情報の取得等を行う。そして、ファイルのオープンに成功したことを確認した後（PS3:YES）、データを所定の位置に書き込む（ＰＳ４）。データの書込みを確認した後（PS5:YES）、ファイルをクローズし（ＰＳ６）、データの書込みが終了したことをデータの読出し側に通知する（ＰＳ７）。ファイルのクローズとは、ファイル操作の終了処理を意味し、具体的には、OSに対するファイル使用の終了宣言、データバッファ内に残されたデータのファイルへの書込み、データバッファの解放等を行うものである。
【０００７】
図１７中の右側に示すように、データを読み出す場合は、書込み終了通知に基づいて、ファイルの読出しが可能になったことを確認し（ＰＳ１１）、ファイルをオープンする（ＰＳ１２）。そして、所望のデータを読み出した後（ＰＳ１３）、ファイルをクローズする。
【０００８】
【発明が解決しようとする課題】
ところで、上述した補助記憶装置のファイルアクセス方法では、複数のランダムアクセスファイルを補助記憶装置上に形成し、各ファイルへのデータ書込み及び読出しの度に、ファイルオープン及びファイルクローズの処理をそれぞれ繰り返すため、各ファイルの格納先アドレスの確認に時間がかかり、また、磁気ヘッドのシーク回数や移動距離も増大する。従って、補助記憶装置のデータ転送速度が低下するという問題がある。また、補助記憶装置上に複数のファイルを記憶するため、ファイル数に応じて増大するファイル管理情報等により、補助記憶装置の記憶容量が消費されてしまい、記憶効率が低下する。
【０００９】
補助記憶装置を内蔵したプリンタでは、多量の印刷データを記憶させることができるため、ホストコンピュータを早期に解放することも可能である。しかし、上述したように、従来の補助記憶装置のファイルアクセス方法では、データ転送時間が増大する。従って、補助記憶装置を経由して印刷データの処理を行うと、印刷データの書込み時間及び読出し時間が長くなり、印刷処理速度が大幅に低下するという問題がある。例えば、ネットワークからのデータ受信速度が１〜２ＭＢ／ｓ、イメージデータ生成部での処理が１ＭＢ／ｓの場合でも、HDDのデータ転送速度は約５００ＭＢ／ｓと遅いのが通常である。高速インターフェースやＤＭＡ転送等を採用すれば、補助記憶装置のデータ転送速度は向上するが、製造コストが増大する。
【００１０】
本発明は、上記のような種々の課題に鑑みなされたもので、その目的は、データ転送速度を向上できるようにした記憶制御装置及び該記憶制御装置を有するプリンタを提供することにある。また、本発明の他の目的は、データ転送速度を高めた記憶制御装置を用いることにより、ホストコンピュータの早期解放と印刷処理速度の向上とを両立できるようにしたプリンタを提供することにある。
【００１１】
【課題を解決するための手段】
上記目的達成のため、本発明に係る記憶制御装置では、補助記憶装置上にシーケンシャルに編成されるファイルを設定し、ファイル操作を終了した場合にも終了処理を行わず、ファイル操作可能状態を維持させるようにしている。
【００１２】
即ち、本発明では、印刷データを受信する通信処理手段と、前記受信された印刷データを記憶可能な記憶制御装置と、前記印刷データを解釈してイメージデータを生成するイメージデータ生成手段と、前記イメージデータに基づいて印刷を行う印刷処理手段とを備え、前記記憶制御装置は、シーケンシャルファイルが設定される補助記憶装置と、前記シーケンシャルファイルへの入力要求が生じた場合には所定のファイル操作準備処理を行い、入力された印刷データを前記シーケンシャルファイルに書き込む書込み手段と、前記シーケンシャルファイルからの出力要求が生じた場合には所定のファイル操作準備処理を行い、前記シーケンシャルファイルから印刷データを読み出して出力する読出し手段と、所定の起動条件が成立したか否かを監視する監視手段を備え、前記書込み手段及び読出し手段は、前記シーケンシャルファイルへの操作終了後もファイル操作可能状態を維持し、前記起動条件が成立した場合にのみファイル操作終了処理を実行させ、前記読出し手段は、前記書込み手段による印刷データの書込みに応じて、前記シーケンシャルファイルから印刷データを読み出すことを特徴としている。
【００１３】
ここで、「補助記憶装置」としては、代表的には、ハードディスク装置（HDD）を挙げることができるが、これに限定されない。また、「所定のファイル操作準備処理」とは、いわゆるファイルのオープンに伴う処理を意味し、具体的には、ファイル操作の宣言、データ入出力用バッファの確保、目的とするファイルのファイル情報取得等が含まれる。「ファイル操作可能状態」とは、ファイルがオープンされている状態を意味する。さらに、「書込み手段によるデータの書込みに応じて前記シーケンシャルファイルからデータを読み出す」とは、書込み手段によるデータ書込みと読出し手段によるデータ読出しとが順次実行されていくことを意味する。
【００１４】
例えば、通信処理部等の前処理部からデータが書込み手段に入力されると、書込み手段は、ファイル操作準備処理を行い、シーケンシャルファイルにデータを書き込む。このデータ書込みに応じて、読出し手段は、ファイル操作準備処理を行い、シーケンシャルファイルからデータを読み出す。読み出されたデータは、例えば、イメージデータ生成処理部等の後処理部に向けて出力される。
【００１５】
通常の場合、データ書込み又はデータ読出し等のファイル操作終了後は、ファイル操作終了処理を行うが、本発明では、ファイル操作終了後もファイル操作可能状態を維持する。従って、新たなデータ入力要求が生じた場合、書込み手段は、ファイル操作準備処理を行うことなくデータを書き込むことができる。また、読出し手段も、新たな出力要求が生じた場合、ファイル操作準備処理を行うことなくシーケンシャルファイルからデータを読み出すことができる。これにより、ファイル操作時の処理を簡素化することができる。従って、シーク回数等を低減してデータ転送速度を向上させることができる。
【００１６】
書込み手段は、補助記憶装置のデータ転送速度が上限値をとる最低のデータ量毎に、シーケンシャルファイルへデータを書き込むこともできる。一回の書込み操作で書き込むデータの単位（ブロックサイズ）を大きくするほど、データ転送速度は向上するが、書込み単位が所定の値に達すると、データ転送速度は最高速度で一定となる。記録媒体の回転数等が上限に達するためである。従って、書込み手段は、データ転送速度が上限値をとるデータ量のうち最小値のデータ量を転送単位として採用する。
【００１７】
また、所定の起動条件が成立したか否かを監視する監視手段を更に設け、起動条件が成立した場合には、ファイル操作終了処理を実行させてもよい。「ファイル操作終了処理」とは、いわゆるファイルクローズに伴う処理を意味し、具体的には、データバッファに残されたデータの処理、データバッファの解放等が含まれる。起動条件としては、例えば、（１）電源の切断が検出された場合、又は（２）入出力すべきデータの存在が検出されない場合のいずれか又は双方を挙げることができる。電源切断時やデータ処理終了時には、ファイル操作終了処理を行うことにより、磁気ヘッドをシッピングゾーンに退避させる等の処理を行うことができ、補助記憶装置の寿命や信頼性等を向上することができる。
【００１８】
さらに、書込み手段にデータを入力するための第１バッファメモリと、読出し手段からデータを受け取るための第２バッファメモリとを更に設け、補助記憶装置経由モードによる転送を行う場合は、第１バッファメモリ、書込み手段、補助記憶装置、読出し手段を順に経て第２バッファメモリにデータを格納し、バイパスモードによる転送を行う場合は、第１バッファメモリに格納されたデータを第２バッファメモリに格納させることもできる。
【００１９】
補助記憶装置経由モードとバイパスモードとを適宜使い分けることにより、データ処理速度を高めることができる。
【００２０】
一方、請求項７に係る発明では、印刷データを受信する通信処理手段と、前記受信された印刷データを記憶可能な記憶制御装置と、前記印刷データを解釈してイメージデータを生成するイメージデータ生成手段と、前記イメージデータに基づいて印刷を行う印刷処理手段とを備え、前記記憶制御装置は、シーケンシャルファイルが設定される補助記憶装置と、前記シーケンシャルファイルへの入力要求が生じた場合には所定のファイル操作準備処理を行い、入力された印刷データを前記シーケンシャルファイルに書き込む書込み手段と、前記シーケンシャルファイルからの出力要求が生じた場合には所定のファイル操作準備処理を行い、前記シーケンシャルファイルから印刷データを読み出して出力する読出し手段とを備え、前記書込み手段及び読出し手段は、前記シーケンシャルファイルへの操作終了後もファイル操作可能状態を維持し、前記読出し手段は、前記書込み手段による印刷データの書込みに応じて、前記シーケンシャルファイルから印刷データを読み出すことを特徴とする。
【００２１】
ファイル操作終了後もファイル操作可能状態を維持する記憶制御装置を用いて印刷データの転送・記憶を行うことにより、データ転送速度を高めて印刷処理時間を短縮することができる。
【００２２】
ここで、前記同様に、補助記憶装置経由モードとバイパスモードとを採用することができるが、補助記憶装置内に処理中の印刷データが記憶されている場合には補助記憶装置経由モードを選択し、補助記憶装置内に処理中の印刷データが記憶されていない場合にはバイパスモードを選択することができる。
【００２３】
もしも補助記憶装置内に処理中のデータが記憶されている場合に、バイパスモードでイメージデータ生成手段にデータを転送すると、印刷順序等が混乱するため、例えば、補助記憶装置内のデータの有無によりモードを切り換える。ここで、「処理中のデータ」とは、これから印刷しようとする又は印刷中の印刷ジョブデータを意味する。
【００２４】
また、本発明は、ファイルアクセス方法として把握することもできる。更に、本発明は、所定のプログラムを記録した記録媒体をプリンタのコンピュータに読み取らせて実行させることによっても実現することができる。「記録媒体」としては、例えば、ハードディスク（HD）、フロッピーディスク（FD）、コンパクトディスク（CD-ROM，CD-RAM等）、メモリ、ＩＣカード等の各種記録媒体を用いることができる。また、これに限らず、ネットワークを介してプログラムをダウンロードする等のように、通信媒体を用いることもできる。
【００２５】
【発明の実施の形態】
以下、図１〜図１６に基づき、本発明の実施の形態を詳細に説明する。
【００２６】
１．第１の実施の形態
まず、図１〜図４は、本発明の第１の実施の形態に係る記憶制御装置を示している。図１は、記憶制御装置の機能構成を概略的に示すブロック図である。本記憶制御装置は、それぞれ後述するように、第１バッファメモリ１００．書込み部１０１，HDD１０２，読出し部１０３，第２バッファメモリ１０４及びファイル管理部１０５を備えている。
【００２７】
第１バッファメモリ１００は、複数のメモリブロックを有しており、例えば、通信処理部等の前処理部から渡されたデータをメモリブロックに格納して書込み部に入力するものである。図中では、データが格納されたメモリブロックに斜線を付し、空いているメモリブロックを白く表示している。
【００２８】
「書込み手段」としての書込み部１０１は、第１バッファ１００からデータ格納済みのメモリブロックを一つ取り出し、このメモリブロックからデータを読み出して、HDD１０２上のメタファイル１１０の所定位置にデータを書き込むものである。データが読み出されて空になったメモリブロックは、第１バッファメモリ１００に返却される。書込み部１０１は、メモリブロックから読み出したデータをファイルオープン時に確保された所定のデータバッファ（図示せず）に転送し、該データバッファを介してHDD１０２上のメタファイル１１０にデータを書き込む。このときの書込み単位（ブロックサイズ）は所定値に設定されているが、ブロックサイズの決定については図２と共に後述する。
【００２９】
ここで、書込み部１０１は、補助記憶装置経由モードとバイパスモードの２種類の転送モードを使い分けてデータ転送を行うことができる。補助記憶装置経由モードでは、第１バッファメモリ１００から取得したデータをHDD１０２上のメタファイル１１０に書込み、バイパスモードでは、第１バッファメモリ１００から取得したデータを直接第２バッファメモリ１０４に転送する。入力されたモード切換信号によって各転送モードを切り換えることもできるし、あるいは、第２の実施の形態で詳述するように、内部のデータ処理状態に応じて各転送モードを切り換えることもできる。
【００３０】
「補助記憶装置」としてのHDD１０２は、例えば、円盤状の記録媒体と、記録媒体を回転させる回転機構と、記録媒体表面に近接してデータの読み書きを行う磁気ヘッドと、磁気ヘッドを記録媒体上の所定位置まで移動させるヘッド移動機構と、制御回路等とを備えている。
【００３１】
HDD１０２上には、「シーケンシャルファイル」としてのメタファイル１１０が設定されている。メタファイル１１０は、シーケンシャルに編成されており、書込み部１０１によって書き込まれた各ブロックＢ１〜Ｂｎが書込み順に記憶されている。また、HDD１０２上の所定の位置には、メタファイルのファイル名、ファイル先頭アドレス等の管理情報も記憶されている。ここで、通常の場合、メタファイル１１０は単一に設定される。但し、データ処理系統が複数存在する場合、例えば、それぞれ独立に起動される書込み部１０１及び読出し部１０３が複数用意されているような場合には、このデータ処理系統の数に応じて複数のメタファイルを設定することも可能である。
【００３２】
「読出し手段」としての読出し部１０３は、メタファイル１１０内の先頭のブロックをデータバッファを介して読出し、読み出されたデータを第２バッファメモリ１０４の空きメモリブロックが一杯になるまで該メモリブロックに格納させるものである。読出し部１０３は、後述のように、例えば、書込み部１０１からメッセージキュー等を介してブロックの書込みが通知されると、次のブロックをメタファイル１１０から読み出すようになっている。なお、第２バッファメモリ１０４は、第１バッファメモリ１００と同様に複数のメモリブロックから構成されている。
【００３３】
ファイル管理手段として表現可能なファイル管理部１０５は、例えば、メタファイル１１０のファイル名、メタファイルの先頭アドレス及び終端アドレス、ブロックの最新の書込み位置及びブロックの最新の読出し位置等の各種ファイル管理情報を記憶している。
【００３４】
次に、図２に基づいて、書込み部１０１が採用する書込みの単位（ブロックサイズ）を説明する。図２は、１回の書込み操作でメタファイル１１０に書き込まれるデータ量（バイト）を横軸に、書込み操作時の転送速度（バイト／秒）を縦軸にとった特性図である。
【００３５】
例えば、１回の操作で書き込まれるブロックのサイズを３００ＫＢ等のＢＳ１とした場合、その転送速度Ｖ１は３００ＫＢ／ｓとなる。ブロックサイズを１ＭＢ等のＢＳ２に上げた場合、その転送速度Ｖ２は１ＭＢ／ｓに上昇する。しかし、空気抵抗やモータ性能等の諸条件によってディスク最高回転数は定まるため、ディスク回転数や磁気ヘッドの性能等が同一である限り、ＢＳ２以上にブロックサイズを大きくしても、書込み時の転送速度は上昇しない。そこで、本実施の形態では、書込み時の転送速度が最大値をとる最小のブロックサイズ（例えば、１ＭＢ）をデータ書込み時の単位として採用する。
【００３６】
次に、図３及び図４に基づいて本実施の形態の作用を説明する。なお、以下の説明では、ステップを「Ｓ」と略記する。まず、図３は書込み処理及び読出し処理を示すフローチャートである。
【００３７】
書込み処理では、最初のデータの書込み要求が発生すると、ファイルをオープンし、データバッファの確保等を行う（Ｓ１００）。次に、第１バッファメモリ１００からデータを満杯に格納したメモリブロックを一つ取出し（Ｓ１０１）、このメモリブロックから読み出したデータをデータバッファに格納させる（Ｓ１０２）。また、データが読み出されて空になったメモリブロックは、第１バッファメモリ１００に返却される（Ｓ１０２）。
【００３８】
図２と共に述べたように、所定のデータ量がデータバッファに蓄積されるまで（Ｓ１０３）、第１バッファメモリ１００からメモリブロックを一つずつ取り出してデータバッファに格納させる。所定量のデータ（ブロック）がデータバッファに格納されると（S103:YES）、メタファイル１１０にブロックを一つ書き込むだけの余裕があるか否かを検査する（Ｓ１０４）。メタファイル１１０に一つのブロックを格納するだけの空きがある場合は（S104:YES）、ブロックを一つだけメタファイル１１０の所定位置に書込む（Ｓ１０５）。もしも、メタファイル１１０に新たなブロックを受け入れる余地が無い場合、例えば、読出し部１０３以降の後処理が遅れており読出し位置と書込み位置とが接近しているような場合には、ブロックを書き込まずに待機する（S104:NO）。書込み部１０１が待機している間に、読出し部１０３の読出し処理が進んでメタファイル１１０に空きが生じた場合にブロックは書き込まれる。
【００３９】
読出し処理では、最初の読出し要求が発生したときにファイルをオープンし、データバッファの確保等を行う（Ｓ１１１）。書込み部１０１がブロックを一つ書き込むと、書込みが終了した旨がメッセージキュー等を介して読出し部１０３に通知される。そこで、メッセージキュー等に基づいて、メタファイル１１０にブロックが書き込まれたか否かを判定する（Ｓ１１２）。ブロックが書き込まれた場合には（S112:YES）、メタファイル１１０からブロックを一つ読み出して（Ｓ１１３）、第２バッファメモリ１０４の空きメモリブロックにデータを格納させる（Ｓ１１４）。
【００４０】
次に、図４は、ファイルクローズを行うためのクローズ処理を示すフローチャートである。本実施の形態では、ファイルクローズを行うために２つの起動条件を設定している。起動条件の一つは、電源切断シーケンスに入った場合である（Ｓ１２１）。即ち、例えば、電源スイッチがオフ操作されてシステムの終了処理に入った場合である。起動条件の他の一つは、処理すべきデータが存在しなくなった場合である（Ｓ１２２）。即ち、第１バッファ１００から第２バッファ１０４に至るデータ処理系統中にデータが一つも存在しない場合である。上記２つの起動条件のうち一つでも満たした場合は、ファイルをクローズし、データバッファに残されたデータの強制転送やデータバッファの解放等の終了処理を行う（Ｓ１２３）。
【００４１】
このように構成される本実施の形態によれば以下の効果を奏する。
【００４２】
第１に、HDD１０２上にシーケンシャル編成された単一のメタファイル１１０を設定し、書込み部１０１及び読出し部１０３は、ファイル操作終了後もファイルをクローズせずにファイル操作可能状態を維持するため、従来技術のように、複数のファイルのそれぞれを入出力する度にファイルのオープン及びクローズを行う必要が無い。従って、シーク回数等を低減してHDD１０２の転送速度を向上させることができる。
【００４３】
第２に、書込み部１０１がブロック単位でデータを書込む度に、読出し部１０３はデータを読み出すため、HDD１０２をいわゆるリングバッファのように用いることができる。従って、HDD１０２を無駄なく効率的に使用できる。また、データが読み出された位置に新たなデータを順次上書きするため、書込み位置と読出し位置との競合のみを管理するだけでよく、従来のように複数のファイル位置やHDD容量の上限管理等を行う必要がない。つまり、従来では、ディスク上に分散する空きセクタの位置及び場所等をそれぞれ管理する必要があるが、本実施の形態では、HDD１０２をリングバッファ的に用い、FIFO（First-In First-Out）でデータを入出力するため、簡易な構成でファイルアクセスを行うことができる。
【００４４】
第３に、書込み部１０１は、所定のデータ量毎にメタファイル１１０に書込みを行うため、HDD１０２の運用効率を高めてデータ転送速度を向上させることができる。
【００４５】
第４に、電源切断シーケンスに入った場合又は処理すべきデータが存在しなくなった場合は、ファイルをクローズするため、磁気ヘッドを所定位置に退避させることができ、振動等による損傷を防止することができる。
【００４６】
第５に、補助記憶装置経由モードとバイパスモードとを切り換えてデータ転送を行うことができるため、状況に応じて適切な転送モードを選択することができ、転送速度を向上させることができる。
【００４７】
２．第２の実施の形態
次に、図５〜図１６に基づいて本発明の第２の実施の形態を説明する。本実施の形態の特徴は、前記実施の形態で述べた記憶制御装置をプリンタに搭載した点にある。
【００４８】
まず、図５は、本実施の形態によるプリンタのハードウエア構成を概略的に示す説明図である。プリンタは、インターフェース（以下「Ｉ／Ｆ」と略記）１，２と、CPU３と、RAM４及びROM５と、エンジン制御部８及びプリントエンジン９と、HDD１０とを備えている。
【００４９】
Ｉ／Ｆ１，２、CPU３、RAM４，ROM５及びHDD１０は、バス６を介して相互に接続されており、エンジン制御部８は、Ｉ／Ｆ２，７を介してCPU３等と接続されている。CPU３は、Ｉ／Ｆ１を介してLAN等のネットワークＮとの間でデータ通信を行う一方、Ｉ／Ｆ２を介してエンジン制御部８とデータ通信を行う。
【００５０】
CPU３は、通信タスク１１と、ＨＤ書込みタスク１２と、ＨＤ読出しタスク１３と、イメージ生成タスク１４と、印刷タスク１５とを実行可能に構成することができる。各タスク１１〜１５の切換、即ち、CPU実行権の管理は、例えば切換制御部として表現可能なスケジューラ１６によって行われる。スケジューラ１６は、予め設定された優先度に基づいて各タスク１１〜１５にCPU実行権を割り当てるようになっている。ここで、例えば、通信タスクや印刷タスクをそれぞれ専用のCPUで処理することもできる。
【００５１】
「通信処理手段」としての通信タスク１１は、ネットワークＮからパケットが着信すると、CPU実行権を得て起動する。通信タスク１１は、受信したパケットから例えばチェックサム等の余分なデータを除去して印刷データを取り出し、この印刷データをメモリブロックが一杯になるまで格納する。後述のように、データを格納したメモリブロックは、ＨＤ書込みタスク１２（補助記憶装置経由モード）又はイメージ生成タスク１４（第１のバイパスモード）のいずれかに引き渡される。
【００５２】
「書込み手段」としてのＨＤ書込みタスク１２は、後述のように、通信タスク１１からメモリブロックを介して入力されたデータをHDD１０に書き込むか（補助記憶装置経由モード）又はイメージ生成タスク１４に転送する（第２のバイパスモード）ようになっている。「読出し手段」としてのＨＤ読出しタスク１３は、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１０上のメタファイル１１０内に残存データが存在するか否かを検査する（Ｓ１１）。メタファイル１１０内に残存データが存在する場合は（S11:YES）、HDD１０をバイパスしてデータを転送できない場合、即ち、補助記憶装置経由モードでデータを転送すべき場合である。そこで、第１バッファメモリ２１に空きメモリブロックがあるか否か（Ｓ１２）、通信タスク１１が次の印刷ジョブを受信しており、空きメモリブロックを必要としているか否か（Ｓ１３）をそれぞれ検査する。第１バッファメモリ２１に空きメモリブロックが無く（S12:NO）、通信タスク１１が新たな空きメモリブロックを要求している場合は（S13:YES）、空きメモリブロックを生成すべく、データが格納された空ではないメモリブロックからデータを取り出してHDD１０のメタファイル１１０にデータを書き込む（Ｓ１４）。なお、データ書込み時の詳細は、図３と略同様である。但し、正確には、図３と図１０とでは、第１バッファメモリ２１への空きメモリブロックの返却時期が相違するが、いずれを採用してもよい。
【００６９】
そして、データを取り出されたメモリブロックは第１バッファメモリ２１に返却される（Ｓ１５）。これにより、通信タスク１１は、新たに受信したパケットデータをメモリブロックに格納することができる。
【００７０】
メタファイル１１０上に残存データが存在しない場合は（S11:NO）、第２バッファメモリ２２に空いているメモリブロックが存在するか否かを検査する（Ｓ１６）。第２バッファメモリ２２に空きメモリブロックが無ければ、HDD１０をバイパスすることができないためである。
【００７１】
次に、第１バッファメモリ２１にデータが格納された空ではないメモリブロックがあるか否かを検査し、第１バッファメモリから第２バッファメモリへ移し替え可能なデータの有無を判定する（Ｓ１７）。
【００７２】
Ｓ１６，Ｓ１７の双方で「ＹＥＳ」と判定された場合は、第１バッファメモリ２１のメモリブロックの中味（データ）を、第２バッファメモリの空きメモリブロックに移し替える（Ｓ１８）。ここで、データが格納された空ではないメモリブロックからデータを読出し、読み出されたデータを空きメモリブロックにコピーしても良いし、あるいは、両メモリブロックのポインタ等を互いに交換することにより、ブロック毎交換してもよい。データを移し替えられて空になったメモリブロックは、第１バッファメモリ２１に返却される（Ｓ１９）。
【００７３】
次に、図１１は、ＨＤ読出しタスク１３の処理を示す。まず、第２バッファメモリ２２に空きメモリブロックがあるか否かを検査する（Ｓ２１）。次に、メタファイル１１０に残存データがあるか否かを検査する（Ｓ２２）。第２バッファメモリ２２に空きメモリブロックが無い場合（S21:NO）又はHDD１０に読み出すべきファイルが存在しない場合（S22:NO）は、データ転送を行うことができないので、Ｓ２１に戻って待機する。一方、Ｓ２１，Ｓ２２の双方で「ＹＥＳ」と判定された場合は、HDD１０のファイルからデータを読出し、第２バッファメモリ２２の空きメモリブロックが満杯になるまでデータを格納する（Ｓ２３）。
【００７４】
次に、図１２は、イメージ生成タスク１４の処理を示す。まず、第２バッファメモリ２２にデータが格納された空ではないメモリブロックがあるか否かを判定する（Ｓ３１）。第２バッファメモリ２２に空でないメモリブロックがある場合は（S31:YES）、第２バッファメモリ２２からデータが格納されたメモリブロックを一つ取り出してデータを読出し、印刷要求を生成する（Ｓ３２）。
【００７５】
そして、データが取り出された空きメモリブロックを第２バッファメモリに返却する（Ｓ３３）。なお、印刷タスクは、本発明の要旨ではないので、処理の説明を割愛する。
【００７６】
このように構成される本実施の形態によれば、図１３〜図１５に示すように、データ処理状態に応じた転送モードでデータを転送することができる。即ち、図１３に示すように、補助記憶装置経由モードでは、受信データを、通信タスク１１、第１バッファメモリ２１、ＨＤ書込みタスク１２を経てHDD１０のメタファイル１１０に記憶させ、メタファイル１１０に記憶させたデータを、ＨＤ読出しタスク１３、第２バッファメモリ２２を介してイメージ生成タスク１４に入力することができる。従って、ホストコンピュータを早期に解放することができる。また、図１４に示す第１のバイパスモードでは、受信データを直接第２バッファメモリのメモリブロックに格納するため、ＨＤ書込みタスク１２及びＨＤ読出しタスク１３の処理を省略して、データを速やかにイメージ生成タスク１４に入力することができる。さらに、図１５に示す第２のバイパスモードでは、ＨＤ書込みタスク１２は、HDD１０上のメタファイル１１０にデータを書き込む代わりに、第２バッファメモリ２２のメモリブロックにデータを格納するため、速やかにデータをイメージ生成タスク１４に転送することができる。
【００７７】
図１６（ａ）に示すように、印刷ジョブの受信初期には、第１のバイパスモードで転送が行われる。やがて、通信タスク１１が第２バッファメモリ２２のメモリブロックを使い果たすと、受信データは第１バッファメモリ２１のメモリブロックに格納される。通信タスク１１が第１バッファメモリ２１を使用している間に、イメージ生成タスク１４は第２バッファメモリ２２からデータ格納済みのメモリブロックを受け取って印刷要求を生成する。上述の通り、HDD１０上のメタファイル１１０内に残存データが存在しない状況下で、第１バッファメモリ２１にデータが格納されたメモリブロックが生じると、ＨＤ書込みタスク１２による第２のバイパスモードに切り換わる。第２のバイパスモードでは、ＨＤ書込みタスク１２が第２バッファメモリ２２のメモリブロックにデータを格納する。第２バイパスモードへの移行により、第２バッファメモリ２２に空きメモリブロックが無くなると、補助記憶装置経由モードに切り替わり、データはHDD１０上のメタファイル１１０を経由してイメージ生成タスク１４に入力される。従って、印刷ジョブの受信直後から第１、第２のバイパスモードによる高速なデータ転送が行われ、印刷ジョブの中間付近で補助記憶装置経由モードに移行する。
【００７８】
そして、印刷ジョブの終わり頃では、HDD１０内のファイルが全て読み出されるため、補助記憶装置経由モードから第２のバイパスモードに切り替わる。やがて、第２のバイパスモードから第１のバイパスモードへと移行する。
【００７９】
なお、全ての印刷ジョブにおいて、図１６（ａ）のようなモード切換が行われる訳ではない。パケットの受信速度、印刷ジョブのデータ量、イメージ生成タスク１４の処理速度等の各種パラメータの変化によって、モード切換の状況は変化する。例えば、図１６（ｂ）に示すように、イメージ生成タスク１４の動作に比較して通信タスク１１の動作が圧倒的に速く、第２バッファメモリ２２の空きメモリブロックが一つも存在しなくなった後、最初の空きメモリブロックが一つできる以前に第１バッファメモリ２１のメモリブロックを使い切ってしまった場合には、第１バイパスモードから補助記憶装置経由モードに移行する場合も考えられる。印刷ジョブのデータ量が少ない場合は、図１６（ｃ）に示すように、補助記憶装置経由モードに移行することなく、第１のバイパスモードのみでデータ処理が行われることもある。
【００８０】
この他にも、第１バイパスモード→第２バイパスモード→補助記憶装置経由モード→第１バイパスモード（第２バイパスモードを経ずに補助記憶装置経由モードから第１バイパスモードに移行して印刷を終了する）の順で処理が行われる場合もある。また、第１バイパスモード→補助記憶装置経由モード→第２バイパスモード→第１バイパスモードの順で処理される場合もある。
【００８１】
さらに、本実施の形態では、一つの印刷ジョブが単独で受信された場合を例示しているが、実際には、複数の印刷ジョブが連続して受信されたり、他の印刷ジョブと隙間をあけて孤立した印刷ジョブが受信される場合もある。このように、複数の印刷ジョブを受信する場合には、第１のバイパスモード、第２のバイパスモード及び補助記憶装置経由モードのいずれの状態間でも遷移し得る。但し、初期状態及び全印刷ジョブの処理を完了した後では、最初に第１のバイパスモードで転送が行われる。
【００８２】
本実施の形態によれば、以下の効果を奏する。
【００８３】
第１に、データ処理状態に基づいて、HDD１０上のメタファイル１１０を経由する補助記憶装置経由モードとHDD１０をバイパスするバイパスモードとを切り換えるため、印刷ジョブの全体をHDD１０に格納する場合よりも、処理時間を大幅に短縮することができる。この結果、補助記憶装置経由モードによるホストコンピュータの早期解放とバイパスモードによる高速処理とを両立させることができ、使い勝手が向上する。
【００８４】
第２に、HDD１０上に単一のメタファイル１１０を設定し、該メタファイル１１０内にデータを順次書込み、そして順次読み出す構成のため、前記実施の形態と同様に、HDD１０をいわゆるリングバッファのように使用することができ、シーク回数等を低減してデータ転送速度を向上できる等の効果を得る。
【００８５】
第３に、データ処理状態に応じて、HDD１０を使用するか否かを動的に変化させるため、高速インターフェースやＤＭＡ転送等を用いずに、全体の処理速度を向上させることができる。
【００８６】
第４に、HDD１０上のメタファイル１１０内に残存データが存在等する場合にはバイパスモードを選択せず、補助記憶装置経由モードでデータ転送を行うため、印刷順序が乱れたりするのを防止しつつ処理速度を高めることができる。
【００８７】
第５に、通信タスク１１からイメージ生成タスク１４への第１のバイパスモードのみならず、ＨＤ書込みタスク１２からイメージ生成タスク１４への第２のバイパスモードをも備えているため、高速なデータ転送期間を長くすることができ、全体の処理時間を短縮することができる。
【００８８】
第６に、HDD１０への読み書きも単一のCPU３で処理するマルチタスク型プリンタでは、HDD１０へのデータ操作の分だけ処理時間が長くなるが、本発明によれば、補助記憶装置経由モードとバイパスモードとを切換可能なため、マルチタスク型プリンタにおいて特に有効である。
【００８９】
なお、当業者であれば、前記各実施の形態に記載された本発明の要旨の範囲内で種々の追加、変更等が可能である。例えば、記録媒体に記録された所定のプログラムをプリンタのコンピュータに読み取らせることにより、本発明を実現することもできる。
【００９０】
さらに、前記実施の形態では、HDD上にメタファイル１１０を１個だけ設定するものとして述べたが、本発明はこれに限定されない。例えば、通信タスク１１，ＨＤ書込みタスク１２，ＨＤ読出しタスク１３及びイメージ生成タスク１４までのデータ処理系統を複数用意するならば、各データ処理系統毎にメタファイル１１０を設定することもできる。
【００９１】
また、各バッファメモリの使用単位であるメモリブロックの大きさは、データ処理状態に応じて変化させることもできる。例えば、両メモリブロックのサイズを１００ＫＢ程度の固定値とすることもできるし、プリンタ内部のデータ処理速度等に応じてブロックサイズを変化させることもできる。また、各バッファメモリのメモリブロックのサイズは、同一である必要はなく、異なってもよい。但し、ブロックサイズが同一であれば、データの移し替え等に便利である。
【００９２】
更に、本発明は、少なくともＨＤ書込みタスク１２、ＨＤ読出しタスク１３及びイメージ生成タスク１４を単一のCPUでそれぞれ処理するマルチタスク型プリンタとして表現することも可能である。
【００９３】
さらに、プリンタとしては、プリンタ専用機に限らず、複写機、ファクシミリ装置等の他の機能を備えた複合機でもよい。
【００９４】
【発明の効果】
以上説明した通り、本発明に係る記憶制御装置及び該記憶制御装置を有するプリンタによれば、シーク回数等を低減して補助記憶装置のデータ転送速度を高めることができ、処理時間を短縮することができる。また、補助記憶装置経由モードとバイパスモードとを切換可能なため、補助記憶装置を利用したホストコンピュータの早期解放と補助記憶装置のバイパスによる高速処理とを両立させることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態による記憶制御装置の機能構成を示すブロック図である。
【図２】  HDDへの１回のデータ書込み量と書込み時の転送速度との関係を示す特性図である。
【図３】書込み処理及び読出し処理を示すフローチャートである。
【図４】ファイルをクローズするための処理を示すフローチャートである。
【図５】本発明の第２の実施の形態に係るプリンタの構成を示すブロック図である。
【図６】プリンタの機能構成を示すブロック図である。
【図７】通信タスクからHDDまでのデータ転送を示す説明図である。
【図８】  HDDからイメージ生成タスクまでのデータ転送を示す説明図である。
【図９】通信タスクの処理を示すフローチャートである。
【図１０】ＨＤ書込みタスクの処理を示すフローチャートである。
【図１１】ＨＤ読出しタスクの処理を示すフローチャートである。
【図１２】イメージ生成タスクの処理を示すフローチャートである。
【図１３】補助記憶装置経由モードによるデータ転送を示す説明図である。
【図１４】第１のバイパスモードによるデータ転送を示す説明図である。
【図１５】第２のバイパスモードによるデータ転送を示す説明図である。
【図１６】転送モードの移行状態を示す説明図である。
【図１７】従来のファイルアクセス方法の概略を示すフローチャートである。
【符号の説明】
３  ＣＰＵ
１０  HDD
１１  通信タスク
１２  ＨＤ書込みタスク
１３  ＨＤ読出しタスク
１４  イメージ生成タスク
２１  第１バッファメモリ
２２  第２バッファメモリ
２３  残存データ検出部
１００  第１バッファメモリ
１０１  書込み部
１０２  HDD
１０３  読出し部
１０４  第２バッファメモリ
１０５  ファイル管理部
１１０  メタファイル
【図１】
0003951084.tif 000002
【図２】
0003951084.tif 000003
【図３】
0003951084.tif 000004
【図４】
0003951084.tif 000005
【図５】
0003951084.tif 000006
【図６】
0003951084.tif 000007
【図７】
0003951084.tif 000008
【図８】
0003951084.tif 000009
【図９】
0003951084.tif 000010
【図１０】
0003951084.tif 000011
【図１１】
0003951084.tif 000012
【図１２】
0003951084.tif 000013
【図１３】
0003951084.tif 000014
【図１４】
0003951084.tif 000015
【図１５】
0003951084.tif 000016
【図１６】
0003951084.tif 000017
【図１７】
0003951084.tif 000018