(57)【要約】【課題】キャッシュメモリに記憶されたデータが記憶装置に書き込まれる前に失われてしまうことがなく、書き込みデータの安全性を高める。【解決手段】データをキャッシュメモリからＨＤＤ１０５にＤＭＡ転送するデータ転送装置において、データ書き込み指示のコマンドをＤＭＡ転送する前にキャッシュメモリのキャッシュ内容をＨＤＤ１０５に書き込む制御コマンドを発行し、予め設定されたデータＤＭＡ転送条件に従って、データをＨＤＤ１０５に書き込んでキャッシュメモリにデータを残さないように制御するＡＳＩＣ１０３を備えた。【選択図】      図１
2004342037.tif 000002
【特許請求の範囲】
【請求項１】
データをキャッシュメモリから記憶装置にＤＭＡ転送するデータ転送装置において、
データ書き込み指示のコマンドをＤＭＡ転送する前に前記キャッシュメモリのキャッシュ内容を前記記憶装置に書き込む制御コマンドを発行し、予め設定された転送条件に従って、前記キャッシュメモリのデータを前記記憶装置に書き込む制御手段を備えていることを特徴とするデータ転送装置。
【請求項２】
前記転送条件は、１回のデータ転送毎であることを特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記転送条件は、予め設定されたＤＭＡ転送回数であることを特徴とする請求項１記載のデータ転送装置。
【請求項４】
前記転送条件は、予め設定したデータ転送量であることを特徴とする請求項１記載のデータ転送装置。
【請求項５】
前記転送条件は、予め設定した時間間隔であることを特徴とする請求項１記載のデータ転送装置。
【請求項６】
前記転送条件は、前記記憶装置上の予め設定されたアドレス範囲に書き込みがあった場合であること特徴とする請求項１記載のデータ転送装置。
【請求項７】
前記転送条件は、予め設定されたＤＭＡの転送元アドレスからの書き込みデータが転送されたときであること特徴とする請求項１記載のデータ転送装置。
【請求項８】
データをキャッシュメモリから記憶装置にＤＭＡ転送するデータ転送装置において、
データ書き込み指示のコマンドをＤＭＡ転送する前に前記キャッシュメモリのキャッシュ内容を前記記憶装置に書き込む制御コマンドを発行し、予め設定した時間を超えたとき、前記キャッシュ内容を前記記憶装置に書き込む制御手段を備えていることを特徴とするデータ転送装置。
【請求項９】
請求項１ないし８のいずれか１項に記載のデータ転送装置と、
記録媒体に画像を形成する画像形成手段と、
を備えていることを特徴とする画像形成装置。
【請求項１０】
データをキャッシュメモリから記憶装置にＤＭＡ転送するデータ転送制御方法において、
データ書き込み指示のコマンドをＤＭＡ転送する前に前記キャッシュメモリのキャッシュ内容を前記記憶装置に書き込む制御コマンドを発行し、
予め設定された転送条件に従って、前記キャッシュメモリのデータを前記記憶装置に書き込むことを特徴とするデータ転送制御方法。
【請求項１１】
データを前記キャッシュメモリから記憶装置にＤＭＡ転送するデータ転送制御方法において、
データ書き込み指示のコマンドをＤＭＡ転送する前に前記キャッシュメモリのキャッシュ内容を前記記憶装置に書き込む制御コマンドを発行し、
予め設定した時間を超えたとき、前記キャッシュ内容を前記記憶装置に書き込むことを特徴とするデータ転送制御方法。
【請求項１２】
請求項１０または１１に記載のデータ転送制御方法をコンピュータで実行するためのコンピュータプログラム。
【請求項１３】
請求項１２記載のコンピュータプログラムが、コンピュータによって読み出され、実行可能に記録された記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、各種データを転送するデータ転送装置、このデータ転送装置を備えた画像形成装置、データ転送制御方法、このデータ転送制御方法を実行するコンピュータプログラム及びこのコンピュータプログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
複写機、プリンタ、ファクシミリなどの画像形成装置においては、ハードディスクのような磁気ディスク装置や大容量の不揮発性メモリなどの記憶装置は、例えばプリンタや複写機といった印刷装置の大容量記憶装置としても利用され、フォントなどの文字情報のキャッシュや印刷情報を一時的に蓄積し電子ソートを行うなどで使用することが、例えば特許文献１に開示されている。
【０００３】
【特許文献１】
特開２００１−２８２７０５号公報
【０００４】
【発明が解決しようとする課題】
通常、これらの記憶装置は大容量であることや電源を切断しても記録内容が失われないなどの利点がある代わりに、書き込みや読み出し速度が遅いといった欠点もある。このような速度の遅さをカバーするためハードディスク装置（以下、ＨＤＤと称する）などでは、内部にキャッシュメモリを持ち、データの読み書きの際に直接ＨＤＤにアクセスするのではなく、高速なキャッシュメモリを利用して読み書き速度の効率を上げている。そのためデータ書き込み時にプリンタや複写機の制御装置（コントローラ）側からキャッシュメモリに対してデータ転送が終了していても、実際に不揮発性の記憶装置部分に書き込みが終了するまでには時間差が発生している。
【０００５】
装置の終了動作が正常に行われている場合は、このキャッシュ内容が記憶装置に書き込まれたことを確認後に電源切断処理に移るが、停電やユーザによる電源スイッチ操作などによる不意の電源切断があった時には、記憶装置側のディスクあるいは不揮発性メモリ部分では書き込みが行われていなかったり、書き込みが行われていないにも関わらず、装置側ではデータ転送が終了したものとしてデータ保持を終了してしまうといった不整合が発生し、キャッシュメモリに記憶されたデータが記憶装置に書き込まれる前に失われてしまうことがあった。
【０００６】
本発明はこのような従来技術の実情に鑑みてなされたもので、その目的は、キャッシュメモリに記憶されたデータが記憶装置に書き込まれる前に失われてしまうことがなく、書き込みデータの安全性を高めることができるデータ転送装置、このデータ転送装置を備えた画像形成装置、データ転送制御方法、このデータ転送制御方法を実行するコンピュータプログラム及び記録媒体を提供することにある。
【０００７】
【課題を解決するための手段】
前記目的を達成するため、第１の手段は、データをキャッシュメモリから記憶装置にＤＭＡ転送するデータ転送装置において、データ書き込み指示のコマンドをＤＭＡ転送する前に前記キャッシュメモリのキャッシュ内容を前記記憶装置に書き込む制御コマンドを発行し、予め設定された転送条件に従って、前記キャッシュメモリのデータを前記記憶装置に書き込む制御手段を備えていることを特徴とする。
【０００８】
前記転送条件としては、例えば１回のデータ転送毎、予め設定されたＤＭＡ転送回数、予め設定したデータ転送量、予め設定した時間間隔、前記記憶装置上の予め設定されたアドレス範囲に書き込みがあった場合、予め設定されたＤＭＡの転送元アドレスからの書き込みデータが転送されたとき、のいずれかである。
【０００９】
第２の手段は、データをキャッシュメモリから記憶装置にＤＭＡ転送するデータ転送装置において、データ書き込み指示のコマンドをＤＭＡ転送する前に前記キャッシュメモリのキャッシュ内容を前記記憶装置に書き込む制御コマンドを発行し、予め設定した時間を超えたとき、前記キャッシュ内容を前記記憶装置に書き込む制御手段を備えていることを特徴とする。
【００１０】
第３の手段は、第１または第２の手段に係るデータ転送装置と、記録媒体に画像を形成する画像形成手段とを備えていることを特徴とする。
【００１１】
第４の手段は、データをキャッシュメモリから記憶装置にＤＭＡ転送するデータ転送制御方法において、データ書き込み指示のコマンドをＤＭＡ転送する前に前記キャッシュメモリのキャッシュ内容を前記記憶装置に書き込む制御コマンドを発行し、予め設定された転送条件に従って、前記キャッシュメモリのデータを前記記憶装置に書き込むことを特徴とする。
【００１２】
第５の手段は、データを前記キャッシュメモリから記憶装置にＤＭＡ転送するデータ転送制御方法において、データ書き込み指示のコマンドをＤＭＡ転送する前に前記キャッシュメモリのキャッシュ内容を前記記憶装置に書き込む制御コマンドを発行し、予め設定した時間を超えたとき、前記キャッシュ内容を前記記憶装置に書き込むことを特徴とする。
【００１３】
第６の手段は、第４または第５の手段に係るデータ転送制御方法をコンピュータプログラムによって構築し、コンピュータで実行させるようにしたことを特徴とする。
【００１４】
第７の手段は、第６の手段に係るコンピュータプログラムが、コンピュータによって読み出され、実行可能に記録媒体に記録されていることを特徴とする。
【００１５】
【発明の実施の形態】
以下、図面を参照し、本発明の実施の形態について説明する。
【００１６】
＜第１の実施形態＞
図１は本発明に係るデータ転送装置の実施の形態を示すブロック図、図２はコマンドＤＭＡＣのディスクリプタの構成図である。図１において、データ転送装置は、ＣＰＵ１０１と、入出力ブロック（以下Ｉ／Ｏと称する）１０２と、システムＡＳＩＣ１０３と、システムメモリ１０４と、外部記憶装置であるハードディスクドライブ（以下、ＨＤＤと称する）１０５とを備えている。ＣＰＵ１０１は、ＡＳＩＣ１０３を介してシステムメモリ１０４からプログラムコードを取り出しデータの処理などを行う。ＡＳＩＣ１０３は、システムメモリ１０４、ＨＤＤ１０５、あるいはＩ／Ｏ１０２に接続された外部装置などとデータの伝達制御を行うものであり、データ転送のためのデータＤＭＡコントローラ（以下、データＤＭＡＣと称する）２０２と、コマンド発行用のコマンドＤＭＡコントローラ（以下、コマンドＤＭＡＣと称する）２０３が設けられている。
【００１７】
ＨＤＤ１０５はデータなどを保存するものであり、システムＡＳＩＣ１０３のデータＤＭＡＣ２０２とコマンドＤＭＡＣ２０３に接続されている。ＨＤＤ１０５には、図示していないが、データレジスタ、書き込み時にフィーチャレジスタとして機能し、読み取り時にはエラーレジスタとして機能するレジスタ、セクタカウントレジスタ、セクタナンバーレジスタ、シリンダローレジスタ、シリンダハイレジスタ、デバイスヘッドレジスタ、コマンドレジスタ、ステータレジスタなどを備えている。コマンドＤＭＡＣ２０３のレジスタにＨＤＤ１０５の各レジスタへ書き込むコマンドが格納されている。
【００１８】
コマンドＤＭＡＣ２０３のメモリには、図２に示すように、全体が４ワード（３２バイト）のディスクリプタ３１４を備えている。このディスクリプタ３１４は、ネクストディスクリプタポインタ３０１、デバイスヘッド３０２、シリンダハイ３０３、シリンダロー３０４、セクタナンバー３０５、セクタカウント３０６、コマンド３０７、未使用エリア３０８，３０９，３１０，３１２、ｎカウンタ３１１、ＰＭＯＤＥ／ＣＩＮＴ３１３、ＰＯＬ３１５を有している。
【００１９】
ネクストディスクリプタポインタ３０１は、ここが０のとき、次のディスクリプタが無いことを示す。デバイスヘッド３０２は、ＨＤＤ１０５のレジスタのデバイスヘッドに書くべき内容を格納する。シリンダハイ３０３は、ＨＤＤ１０５のレジスタのシリンダハイに書くべき内容を格納する。シリンダロー３０４は、ＨＤＤ１０５のレジスタのシリンダローに書くべき内容を格納する。セクタナンバー３０５は、ＨＤＤ１０５のレジスタのセクタナンバーに書くべき内容を格納する。セクタカウント３０６は、ＨＤＤ１０５のレジスタのセクタカウントに書くべき内容を格納する。コマンド３０７は、ＨＤＤ１０５のレジスタのコマンドに書くべき内容を格納する。ｎカウンタ３１１は、このディスクリプタ３１４が繰り返される回数を格納する。ＰＭＯＤＥ／ＣＩＮＴ３１３のＰＭＯＤＥは、このディスクリプタ３１４が終了したら、一時停止することを示すフラグであり、ＣＩＮＴはこのディスクリプタ３１４が終了して、チェーンする時に割り込みを発生することを示すフラグである。ＰＯＬ３１５は、コマンドがポーリングを必要とすることを示すフラグである。
【００２０】
このようにＨＤＤ１０５にアクセスするデータ転送部であるＡＳＩＣ１０３は、データ転送用のデータＤＭＡＣ２０２と、コマンド転送用のコマンドＤＭＡＣ２０３とを備え、コマンドＤＭＡＣ２０３はＨＤＤ１０５のコマンドレジスタに書き込む内容の転送を行い、ＨＤＤ１０５のヘッド、シリンダ、セクタ数、動作モード、繰り返し回数などを指定する。あらかじめデータ転送に必要な制御コマンド列を複数準備しておくことにより、いったんデータ転送が開始されるとデータＤＭＡＣ２０２、コマンドＤＭＡＣ２０３が自動的にデータ転送のコマンド発行を継続する。
【００２１】
ここで、データ書き込み指示のコマンドをＤＭＡ転送する前にキャッシュ内容をＨＤＤ１０５に書き込む制御コマンドを発行することによって、１回のデータＤＭＡ転送ごとにデータをＨＤＤ１０５に書き込んでキャッシュメモリにデータを残さないようにする制御を図３のフローチャートにより説明する。図３はデータ転送装置における動作制御の処理手順を示すフローチャートである。この実施例は、デバイスヘッド３０２、シリンダハイ３０３、シリンダロー３０４、セクタナンバー３０５の情報からＨＤＤ１０５内のすべてのセクタに通し番号を振り、その通し番号によってセクタを指定するＬＢＡ（Ｌｏｇｉｃａｌ  ＢｌｏｃｋＡｄｄｒｅｓｓｉｎｇ）方式を想定して説明する。なお、ＬＢＡには、４８ｂｉｔに拡張されたＬａｒｇｅ  ＬＢＡの規格もあるが、この実施例では２８ｂｉｔ  ＬＢＡを想定して説明を行っている。
【００２２】
コマンドＤＭＡＣ２０３はディスクリプタ３１４を取得し（ステップＳ１０１）、ステータスをリードする（ステップＳ１０２）。そしてステータスがレディであるか否かをチェックし（ステップＳ１０３）、レディでない場合はステップｓ１０２に戻す。レディの場合は、ＨＤＤ１０５のコマンドレジスタ以外のレジスタの値をセットし（ステップＳ１０４），コマンドレジスタにコマンドをセットする（ステップＳ１０５）。次いで、データＤＭＡＣ２０２によってデータの転送を行い（ステップＳ１０６）、ＨＤＤ１０５の状態の確認を行う（ステップＳ１０７）。
【００２３】
このステップＳ１０７の詳細を図４により説明する。図４は図３のハードディスクの状態確認のステップの動作を詳細に示すフローチャートである。
【００２４】
この処理では、まず、データが割り込み系かポーリング系かをチェックし（ステップＳ２０１）、割り込み系の場合は、割込みがあったときにコマンドＤＭＡＣ２０３はステータスをリードし（ステップＳ２０２，Ｓ２０３）、エラーがあれば、エラー処理をして（ステップＳ２０４，Ｓ２０５）、終了する。エラーが発生していない場合は、次の動作に移るための準備が完了しているかをチェックし（ステップＳ２０４，Ｓ２０６）、準備が完了した場合は、次のステップに進む。
【００２５】
また、ステップＳ２０１でデータがポーリング系と判定されたときは、そのときのデータ転送が終了するまで待ち（ステップＳ２０７）、ステータスをリードし（ステップＳ２０８）、エラーが発生している場合は、エラー処理をして（ステップＳ２０９，Ｓ２１０）、終了する。エラーが発生していない場合は、次の動作に移るための準備が完了しているかをチェックし（ステップＳ２０９，Ｓ２１１）、準備が完了した場合は、次のステップに進み、準備が完了していない場合はステップＳ２０７に戻る。
【００２６】
このようにしてＨＤＤ１０５の状態を確認して、次の動作に移るための準備が完了している場合は、図３のステップＳ１０８に進み、  キャッシュフラッシュを実行するか否かをチェックする。実行する場合は、キャッシュ内容をＨＤＤ１０５に書き込む制御コマンド（ＦＬＡＳＨ  ＣＡＣＨＥコマンド）をＨＤＤ１０５に発行する（ステップＳ１０９）。ここでキャッシュフラッシュコマンドを実行するか否かの判断には、ユーザによるキャッシュフラッシュの動作設定の反映以外に、リード動作時には無駄にキャッシュフラッシュコマンドを実行しないといった判断も含む。次いで、ＨＤＤ１０５の状態を確認し（ステップＳ１１０）、次のディスクリプタ３１４があるか否かをチェックする（ステップＳ１１１）。次のディスクリプタ３１４がある場合には、ｎカウンタ３１１の設定値を確認し（ステップＳ１１２）、ｎカウンタ３１１が「０」の場合はネクストディスクリプタポインタ３０１のアドレスからディスクリプタを取得し（ステップＳ１１３）、ステップｓ１０２に戻って上記の処理を繰り返す。一方、ｎカウンタ３１１が「０」でない場合は、ｎカウンタ３１１の設定値から１を減算し（ステップＳ１１４）、ＨＤＤ１０５へのロジカルブロックアドレス（ＬＢＡ）に「０ｘ１００」を足してレジスタにセットする。この場合、ＨＤＤ１０５のデバイスヘッドレジスタの上位４ビットはそのままにしておく。そしてステップＳ１０５に戻り、コマンドレジスタをセットして上記処理を繰り返す。
【００２７】
このようにして、ＨＤＤ１０５はキャッシュ内のデータをディスクに書き込み終了後に再度コントローラ側に割り込み信号を発行して書き込み終了を通知する。キャッシュデータの書き込みが正常に終了し、ＨＤＤ１０５の状態確認動作でステータスがＲＥＡＤＹになっていれば、コマンドＤＭＡＣ２０３は次のデータ転送に必要な制御コマンドをＨＤＤ１０５に発行してＣＰＵ１０１による制御を介さずにデータ転送の動作を続ける。ＨＤＤ１０５の状態確認は、図４に示すように、割り込み信号を用いなくてもステータスのポーリングや他の制御信号の状態監視などでも実現可能である。
【００２８】
このように、ＨＤＤ１０５への書き込みごとにキャッシュメモリ上のデータを残さずに書き込み完了させるので、ＨＤＤ１０５を利用している機器に不意のトラブルが発生した場合でも書き込みデータを損失するリスクを軽減することができ、データの信頼性を向上させることが可能となる。また、ＣＰＵ１０１を介さずに処理可能になり、コントローラの負荷を軽減させることができる。
【００２９】
＜第２の実施形態＞
上記第１の実施形態の動作では、コマンド発行のタイミングで毎回キャッシュ内のデータを書き込みするため、書き込み時のデータ転送速度が落ちてしまう。そこで、第２の実施形態では、フラッシュキャッシュコマンドの発行頻度を制御コマンドの発行ごとのタイミングではなく、制御コマンドの複数回に対してフラッシュキャッシュコマンドを１回発行するといった回数選択を可能とし、フラッシュキャッシュコマンドの間引き処理を行う。その処理動作は、図３の点線で囲まれたステップＳ１０８からステップＳ１１０までのステップを図５に示すように変更することにより実施できる。図５はデータ転送装置における第２の実施形態の動作制御の処理手順を示すフローチャートである。
【００３０】
この処理手順では、図３のステップＳ１０７においてＨＤＤ１０５の状態の確認を行った後、キャッシュフラッシュを実行するか否かをチェックし（ステップＳ３０１）、実行する場合は書き込みコマンドの実行回数が設定値に達したか否かをチェックする（ステップＳ３０２）。設定値に達していない場合は、書き込みコマンドの実行回数を加算し（ステップＳ３０３）、図３のステップＳ１１１に進む。一方、設定値に達した場合は書き込み回数の実行回数をクリアにし（ステップＳ３０４）、キャッシュ内容をＨＤＤ１０５に書き込むフラッシュキャッシュコマンドをＨＤＤ１０５に発行する（ステップＳ３０５）。次いで、ＨＤＤ１０５の状態を確認し（ステップＳ３０６）、図３のステップＳ１１１に進む。ステップＳ３０１において、キャッシュフラッシュを実行しない場合も、図３のステップＳ１１１に進む。
【００３１】
このように、データ転送回数に対して必要なキャッシュフラッシュ回数を設定することで、データ安全性を高めるとともに、キャッシュの使用効率を上げることができる。この動作制御により、第１の実施例に比べてデータ転送性能を一段と向上させることができる。
【００３２】
その他、特に説明しない各部は前述の第１の実施形態と同等に構成され、同等に機能するので、重複する説明は省略する。
【００３３】
＜第３の実施形態＞
大容量のデータを少数回ＤＭＡ転送を行うような設定の場合、上記第２の実施形態の動作制御では、フラッシュキャッシュコマンドの発行頻度が減って、データがキャッシュメモリ上に残っている時間が長くなってしまう。そこで、第３の実施形態では、フラッシュキャッシュコマンドの発行頻度を制御コマンドの発行回数ではなく、データ転送量あるいは転送数を元に発行回数を決定するように制御している。その処理動作は、図３の点線で囲まれたステップＳ１０８からステップＳ１１０までのステップを図６に示すように変更することにより実施できる。図６はデータ転送装置における第３の実施形態の動作制御の処理手順を示すフローチャートである。
【００３４】
この処理手順では、図３のステップＳ１０７においてＨＤＤ１０５の状態の確認を行った後、キャッシュフラッシュを実行するか否かをチェックし（ステップＳ４０１）、実行する場合はデータ書き込み数が設定値に達したか否かをチェックする（ステップＳ４０２）。データ書き込み数が設定値に達していない場合は、書き込みデータ数を加算した後（ステップＳ４０３）、図３のステップＳ１１１に進む。キャッシュフラッシュを実行しない場合も、図３のステップＳ１１１に進む。
【００３５】
ステップＳ４０２において、データ書き込み数が設定値に達した場合は、書き込みデータ数をクリアにし（ステップＳ４０４）、キャッシュ内容をＨＤＤ１０５に書き込むフラッシュキャッシュコマンドをＨＤＤ１０５に発行し（ステップＳ４０５）、ＨＤＤ１０５の状態を確認し（ステップＳ４０６）、図３のステップＳ１１１に進む。このようにして、任意に設定した量のデータ書き込みを行った後の制御コマンド発行のタイミングでフラッシュキャッシュコマンドの発行を行う。
【００３６】
データ転送量は、コマンドＤＭＡＣ２０３により発行される制御コマンドのセクタ数、コマンド繰り返し回数より算出するほか、データＤＭＡＣ２０２に転送済みデータ数をカウントする機能を持たせるとともに、転送データ数を参照する機能を持つ手段を設けることなどで対応可能である。
【００３７】
このように、データ転送量から必要なキャッシュフラッシュ回数を設定し、データ安全性を高めるとともにキャッシュの使用効率を上げることで第１の実施例の動作に比べデータ転送性能を向上させることができる。また、データ転送量でキャッシュフラッシュ回数を決めることで、不意のトラブルでデータが失われることがあった場合でも、どこまでのデータが書き込み保証されているかの予測が立て易い。
【００３８】
その他、特に説明しない各部は前述の第１の実施形態と同等に構成され、同等に機能するので、重複する説明は省略する。
【００３９】
＜第４の実施形態＞
一方、データ転送回数も、転送量も頻繁でない場合、上記第２、第３の実施形態の動作制御では、フラッシュキャッシュコマンドの発行頻度が減ってしまう。そこで、第４の実施形態においては、フラッシュキャッシュコマンドの発行頻度を時間設定により制御し、一定時間経過後の制御コマンド発行時に、フラッシュキャッシュコマンドを発行する処理を行うことで、データがキャッシュメモリ上に残っている時間が長くなりすぎないように制御するようにしている。時間の監視はハードウェアタイマなどで構成することによりＣＰＵ１０１によるソフトウェア処理を介さずに実現する。またフラッシュキャッシュコマンドの発行は、書き込み動作の時だけでなく読み出し動作中の制御コマンド発行時に実行することも選択可能としている。
【００４０】
その処理動作は、図２の点線で囲まれたステップＳ１０８からステップＳ１１０までのステップを図７に示すように変更することにより実施できる。図７はデータ転送装置における第４の実施形態の動作制御の処理手順を示すフローチャートである。
【００４１】
この処理手順では、図３のステップＳ１０７においてＨＤＤ１０５の状態の確認を行った後、キャッシュフラッシュを実行するか否かをチェックし（ステップＳ５０１）、実行する場合は時間情報をハードウェアタイマなどにより取得し（ステップＳ５０２）、前回コマンドＤＭＡＣ２０３が実行してから予め設定された所定時間が経過したかをチェックする（ステップＳ５０３）。所定時間が経過していない場合は、キャッシュフラッシュを実行しない場合と同様に、図３のステップＳ１１１に進む。
【００４２】
ステップＳ５０３において、所定時間が経過している場合は、キャッシュ内容をＨＤＤ１０５に書き込むフラッシュキャッシュコマンドをＨＤＤ１０５に発行し（ステップＳ５０４）、ＨＤＤ１０５の状態を確認し（ステップＳ５０５）、図３のステップＳ１１１に進む。
【００４３】
このように、設定時間経過以後の制御コマンド発行時に、キャッシュフラッシュを実行させることにより、データの転送回数／転送量が少ない場合でも長時間キャッシュメモリ上にデータを残さずに書き込みを実行することが可能になる。また、時間監視の機能をハードウェアタイマなどで構成することでＣＰＵを介さずに処理することが可能となり、コントローラの負荷が軽減できる。
【００４４】
その他、特に説明しない各部は前述の第１の実施形態と同等に構成され、同等に機能するので、重複する説明は省略する。
【００４５】
＜第５の実施形態＞
この第４の実施形態の動作制御に加え、一定時間経過後は制御コマンド発行要求がなくても、フラッシュキャッシュコマンドを自動発行する処理を選択可能とすることもできる。この場合、第４の実施形態の動作制御と同様に、キャッシュメモリ上に残っている時間が長くなりすぎないように制御可能であり、ＣＰＵによる制御も不要でコントローラの負荷を軽減することができる。その動作制御は、ＨＤＤ１０５へのリードあるいはライトの動作の後だけに限らず、一定時間経過後単独でキャッシュフラッシュコマンドの発行を可能とすることができる。また、コマンドＤＭＡＣ２０３やデータＤＭＡＣ２０２、ＣＰＵ１０１によるＨＤＤ１０５へのレジスタアクセスなど、他のアクセス要求がある場合はそちらを優先的に処理を行う。単独での動作制御は、図８に示すようになる。図８はデータ転送装置の第５の実施形態の動作制御の処理手順を示すフローチャートである。
【００４６】
この処理手順では、キャッシュフラッシュを実行するか否かをチェックし（ステップＳ６０１）、実行しない場合には処理を終え、実行する場合は時間情報をハードウェアタイマなどにより取得し（ステップＳ６０２）、前回のキャッシュフラッシュ実行時から所定時間が経過したか否かをチェックする（ステップ６０３）。所定時間が経過していない場合は、処理を終える。所定時間が経過している場合は、フラッシュキャッシュコマンドをＨＤＤ１０５に発行し（ステップＳ６０４）、ＨＤＤ１０５の状態を確認する（ステップＳ６０５）。なお、コマンドＤＭＡＣ２０３の要求と重なった場合の例は第４の実施形態の動作制御と同等になる。
【００４７】
このように、第５に実施形態によれば、設定時間経過以後に制御コマンド発行要求がなくとも単独でキャッシュフラッシュを実行させるので、第４の実施形態の動作と比較してより確実にデータの書き込み保証を行うことが可能になる。
【００４８】
その他、特に説明しない各部は前述の第１の実施形態と同等に構成され、同等に機能するので、重複する説明は省略する。
【００４９】
＜第６の実施形態＞
第６の実施形態においては、データの書き込み後、キャッシュメモリ内にデータを蓄えることなく、即時ＨＤＤ１０５に書き込みを行いたい領域を事前に設定するようにしている。領域の範囲は、ＨＤＤ１０５であればＬＢＡなどで指定される領域を、記憶素子であればアドレスで指定される領域を即時データ書き込みを実行する範囲として設定する。また、このアドレス範囲は任意に設定変更を可能とする。その処理動作は、図３の点線で囲まれたステップＳ１０８からステップＳ１１０までのステップを図９に示すように変更することにより実施できる。図９はデータ転送装置における第６の実施形態の動作制御の処理手順を示すフローチャートである。すなわち、図３のステップＳ１０７においてＨＤＤ１０５の状態の確認を行った後、キャッシュフラッシュを実行するか否かをチェックし（ステップＳ７０１）、実行する場合は、さらに書き込み先アドレスがキャッシュフラッシュの対象範囲内にあるか否かをチェックする（ステップＳ７０２）。キャッシュフラッシュの対象範囲内にある場合は、キャッシュ内容をＨＤＤ１０５に書き込むフラッシュキャッシュコマンドをＨＤＤ１０５に発行し（ステップＳ７０３）、ＨＤＤ１０５の状態を確認し（ステップＳ７０４）、図３のステップＳ１１１に進む。キャッシュフラッシュを実行しない場合、およびデータ転送先アドレスがキャッシュフラッシュの対象範囲内ではない場合はいずれも図３のステップＳ１１１に進む。
【００５０】
このように、ＨＤＤ１０５への書き込みごとにキャッシュメモリ上のデータを残さずに書き込み完了させることにより、ＨＤＤ１０５を利用している機器に不意のトラブルが発生した場合でも書き込みデータを損失するリスクを軽減し、データの信頼性向上につなげることができる。また、あらかじめ設定したアドレス範囲に書き込み動作を行ったときに、キャッシュデータの書き込み実行をＣＰＵ１０１を介さずに処理することができるので、コントローラの負荷を軽減することが可能になる。同時に、不要なキャッシュデータの書き込み実行を防ぐことができるので、処理能力低下を防ぐことが可能となる。
【００５１】
その他、特に説明しない各部は前述の第１の実施形態と同等に構成され、同等に機能するので、重複する説明は省略する。
【００５２】
＜第７の実施形態＞
上記第６の実施形態においては、書き込み先のアドレスでコマンド発行の決定を行っていたが、この第７の実施形態では転送元のアドレスによりフラッシュキャッシュコマンドの発行を決定するようにしている。すなわち、ＨＤＤ１０５に即時書き込みを行いたいデータが格納されている領域を事前に設定し、データＤＭＡＣ２０３により設定された領域範囲内からデータを読み出してＨＤＤ１０５へ転送を実行した際に、フラッシュキャッシュコマンドの要求を行い、データ転送終了後にフラッシュキャッシュコマンドをＨＤＤ１０５に対して発行する処理を実行する。この処理は設定範囲外からのデータ読み出しを実行するまで継続される。
【００５３】
その処理動作は、図３の点線で囲まれたステップＳ１０８からステップＳ１１０までのステップを図１０に示すように変更することにより実施できる。図１０はデータ転送装置における第７の実施形態の動作制御の処理手順を示すフローチャートである。
【００５４】
この処理手順では、図３のステップＳ１０７においてＨＤＤ１０５の状態の確認を行った後、キャッシュフラッシュを実行するか否かをチェックし（ステップＳ８０１）、実行する場合はデータ転送先アドレスがキャッシュフラッシュの対象範囲内にあるか否かをチェックする（ステップＳ８０２）。キャッシュフラッシュの対象範囲内にある場合は、キャッシュ内容をＨＤＤ１０５に書き込むフラッシュキャッシュコマンドをＨＤＤ１０５に発行し（ステップＳ８０３）、ＨＤＤ１０５の状態を確認し（ステップＳ８０４）、図３のステップＳ１１１に進む。キャッシュフラッシュを実行しない場合、およびデータ転送先アドレスがキャッシュフラッシュの対象範囲外の場合はいずれも図３のステップＳ１１１に進む。
【００５５】
この第７の実施形態では、予め設定したアドレス範囲からのデータの書き込み動作を行ったときにＣＰＵ１０１を介さずに処理することができるので、コントローラの負荷を軽減することが可能となる。更に、書き込み先でなく元データのある場所で処理実行の判定を行うため、ＨＤＤ１０５の利用者がデータ内容によりキャッシュデータの書き込み実行可否を判断しやすいという利点がある。
【００５６】
＜第８の実施形態＞
第１ないし第７の実施形態にデータ転送装置は、例えば画像形成装置の画像データの転送に使用される。このデータ転送装置のＩ／Ｏ１０１に図１１に示す画像処理ブロック３００を接続し、システム化すれば、複写機やデジタル複合機（ＭＦＰ−Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）などの１つの画像形成装置を構成することができる。画像処理ブロック３００は、原稿の画像を読み取る画像入力部３０１、複写枚数や濃度の濃淡や複写サイズの設定や動作状態を表示する操作表示部３０２、プリンタエンジンを有し記録紙などに画像を形成して出力する画像出力部３０３、外部のホスト装置４００からコマンドをを授受してデータを入力するホストインターフェイス（Ｉ／Ｆ）３０３で構成されている。
【００５７】
このように構成すると、ホスト装置４００の指示により、あるいはあるいは自身の画像入力部３０１から取り込んだ画像データを一旦、メモリ１０４を介してＨＤＤ１０５に取り込み、画像出力するときにＨＤＤ１０５からメモリ１０４に読み出し、このメモリ１０４から取得した画像データに基づいて画像出力部から記録紙に可視画像として出力することができる。
【００５８】
なお、第１ないし第７の実施形態に係る処理は予め図示しないＲＯＭに書き込まれたプログラムにより、あるいは記録媒体やサーバからＨＤＤにダウンロードしたプログラムに従ってＣＰＵ１０１によって実行される。
【００５９】
【発明の効果】
以上のように、本発明によれば、データ書き込み指示のコマンドをＤＭＡ転送する前にキャッシュメモリのキャッシュ内容を記憶装置に書き込む制御コマンドを発行し、キャッシュメモリのデータを記憶装置に書き込むので、キャッシュに記憶されたデータが記憶装置に書き込まれる前に失われてしまうことがなく、書き込みデータの安全性を高めることができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るデータ転送装置の構成を示すブロック図である。
【図２】コマンドＤＭＡＣのディスクリプタの構成図である。
【図３】第１の実施形態に係るデータ転送装置における処理手順を示すフローチャートである。
【図４】図４のハードディスクの状態確認のステップの動作を詳細に示すフローチャートである。
【図５】第２の実施形態に係るデータ転送装置における処理手順を示すフローチャートである。
【図６】第３の実施形態に係るデータ転送装置における処理手順を示すフローチャートである。
【図７】第４の実施形態に係るデータ転送装置における処理手順を示すフローチャートである。
【図８】第５の実施形態に係るデータ転送装置における処理手順を示すフローチャートである。
【図９】第６の実施形態に係るデータ転送装置における処理手順を示すフローチャートである。
【図１０】第７の実施形態に係るデータ転送装置における処理手順を示すフローチャートである。
【図１１】第８の実施形態に係る画像形成装置の構成を示すブロック図である。
【符号の説明】
１０１  ＣＰＵ
１０２  入出力（Ｉ／Ｏ）ブロック
１０３  システムＡＳＩＣ１０３
１０４  システムメモリ
１０５  ハードディスクドライブ（ＨＤＤ）
２０２  データＤＭＡコントローラ（データＤＭＡＣ）
２０３  コマンドＤＭＡコントローラ（コマンドＤＭＡＣ）
３００  外部装置
３０１  画像入力部
３０２  操作表示部
３０３  画像出力部
【図１】
2004342037.tif 000003
【図２】
2004342037.tif 000004
【図３】
2004342037.tif 000005
【図４】
2004342037.tif 000006
【図５】
2004342037.tif 000007
【図６】
2004342037.tif 000008
【図７】
2004342037.tif 000009
【図８】
2004342037.tif 000010
【図９】
2004342037.tif 000011
【図１０】
2004342037.tif 000012
【図１１】
2004342037.tif 000013