(57)【要約】【課題】データ転送時のエラーに伴う異常の発生を低減可能な画像形成技術を提供する。【解決手段】ＡＳＩＣ１１は、データが記憶されたＨＤＤ１４を制御するＨＤＣ１３を有し、ＨＤＣ１３は、コマンドＤＭＡＣ１３ａ、データＤＭＡＣ１３ｂ及びリトライレジスタ１３ｃを有する。コマンドＤＭＡＣ１３ａは、ＨＤＤ１４に対してコマンドをＤＭＡ方式により転送する。データＤＭＡＣ１３ｂは、ＨＤＤ１４に対するデータの送受信をＤＭＡ方式により行う。リトライレジスタ１３ｃは、データ転送のエラー時におけるデータの転送箇所を特定するためのものである。コマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂを介してＨＤＤ１４からエンジン部３にデータを転送中にエラーが発生した場合、ＣＰＵ１０は、リトライレジスタ１３ｃを用いて、コマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂを再設定して、データの転送をリトライする。【選択図】        図１
2008310547.tif 000002
【特許請求の範囲】
【請求項１】
装置全体を制御する制御手段と、
データを記憶する記憶手段と、
前記記憶手段に記憶されたデータをＤＭＡ（Direct Memory Access）方式により転送する第１転送手段と、
前記第１転送手段が前記データを転送する際に前記記憶手段に対してコマンドを発行してこれをＤＭＡ方式により転送する第２転送手段と、
前記第１転送手段が前記記憶手段から転送した前記データに対して画像処理を行う画像処理手段と、
前記画像処理手段が画像処理を行った前記データを用いて画像を形成する画像形成手段と、
前記第１転送手段が前記データを転送する際及び前記第２転送手段が前記コマンドを転送する際の少なくとも一方においてエラーが発生したときの前記データの転送箇所を特定する情報を記憶する記憶素子とを備え、
前記制御手段は、前記第１転送手段が前記データを転送する際及び前記第２転送手段が前記コマンドを転送する際の少なくとも一方においてエラーが発生したとき、前記記憶素子に記憶された前記情報に基づいて、前記データの転送箇所を特定して、特定した転送箇所以降のデータの転送を前記第１転送手段に再開させると共に、前記コマンドの転送を前記第２転送手段に再開させる
ことを特徴とする画像形成装置。
【請求項２】
前記第１転送手段は、第１ディスクリプタと、当該第１ディスクリプタの先頭アドレスが設定された第１レジスタとを有し、
前記制御手段は、前記データの転送を開始する際に、前記第１ディスクリプタに転送対象のデータの先頭アドレスを少なくとも設定し、前記第１レジスタに転送対象のデータのデータ量を示すサイズ情報を少なくとも設定し、前記第１転送手段を起動させる
ことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記第２転送手段は、前記データのブロック毎に前記コマンドを前記記憶手段に対して発行しこれをＤＭＡ方式により転送し、
前記エラーが発生したとき、前記記憶素子には、前記第１レジスタに設定された前記第１ディスクリプタの先頭アドレスと、前記エラーが発生したときの前記転送箇所を含む前記ブロックに含まれるデータであり且つ当該転送箇所以降のデータのデータ量を示すサイズ情報とが少なくとも設定され、
前記制御手段は、前記エラーが発生したとき、前記記憶素子に設定された前記第１ディスクリプタの先頭アドレス及び前記サイズ情報を読み出すことにより前記データの転送箇所を特定し、前記第１ディスクリプタの先頭アドレスを前記第１ディスクリプタに再設定すると共に前記サイズ情報を前記第１レジスタに再設定して、前記データの転送を前記第１転送手段に再開させる
ことを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記第２転送手段は、前記データのブロック毎に前記コマンドを前記記憶手段に対して発行しこれをＤＭＡ方式により転送し、
前記画像処理手段は、前記エラーが発生したとき、前記記憶素子に、前記第１レジスタに設定された前記第１ディスクリプタの先頭アドレスと、前記エラーが発生したときの前記転送箇所を含む前記ブロックに含まれるデータであり且つ当該転送箇所以降のデータのデータ量を示すサイズ情報とを少なくとも設定する
ことを特徴とする請求項２又は請求項３に記載の画像形成装置。
【請求項５】
前記第２転送手段は、第２ディスクリプタを有し、
前記制御手段は、前記データの転送を開始する際に、前記第２ディスクリプタに、前記記憶手段に格納すべきコマンド情報を少なくとも設定し、前記第２転送手段を起動させる
ことを特徴とする請求項１乃至請求項４のいずれか一項に記載の画像形成装置。
【請求項６】
前記制御手段は、前記エラーが発生したとき、前記記憶素子に設定された前記コマンド情報を読み出して前記第２ディスクリプタに再設定して、前記コマンドの転送を前記第２転送手段に再開させる
ことを特徴とする請求項５に記載の画像形成装置。
【請求項７】
前記画像処理手段は、前記エラーが発生したとき、前記記憶素子に、前記第２ディスクリプタに設定された前記コマンド情報を少なくとも設定する
ことを特徴とする請求項５又は請求項６に記載の画像形成装置。
【請求項８】
前記記憶手段へのデータのアクセスを制御する記憶制御手段を更に備え、
前記記憶制御手段が、前記第１転送手段、前記第２転送手段及び前記記憶素子のうち少なくとも１つを有する
ことを特徴とする請求項１乃至請求項７のいずれか一項に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成エンジンを備える画像形成装置に関するものであり、特にＨＤＤ（Hard Disk Drive）に記憶されたデータを画像形成エンジンに転送する画像形成装置に関するものである。
【背景技術】
【０００２】
従来より、画像形成エンジンを備える複写機等の画像形成装置では、コピーやプリントの画像形成処理を行う場合、ＨＤＤ（Hard Disk Drive）に記憶された画像データを画像形成エンジンに転送する場合がある。このＨＤＤなどのデバイスがＡＴＡ／ＡＴＡＰＩ規格に準拠している場合には、まず、データの書き込みや読み出しなどのコマンドをデバイスに対して転送し、その後、データの転送を行う。このデータ転送は、通常、画像形成装置に備わるＣＰＵ（Central Processing Unit）の負担を減らすため、ＤＭＡ（Direct Memory Access）方式によりＣＰＵを介さずにデータ転送を行うＤＭＡコントローラ(以下、データＤＭＡＣという)を用いて行っている。このデータＤＭＡＣは、例えば、画像形成装置に備わるＡＳＩＣ（Application Specific Integrated Circuit）に搭載されたＨＤＤコントローラ(以下、ＨＤＣという)に備えられる。また、コマンドの転送は、ＣＰＵが介在するＰＩＯ（Programmed I/O）転送により行っている。このコマンドの転送は、データ転送を１ブロック行うごとに発生する。このため、１ブロックの転送量が小さい場合には、コマンドのＰＩＯ転送が頻繁に発生し、ＣＰＵの負担がかなり大きくなる。このような問題を解決すべく、データＤＭＡＣに加えて、コマンドをＤＭＡ方式により転送するＤＭＡＣ（以下、コマンドＤＭＡＣという）を備える画像形成装置が開発されている（例えば、特許文献１参照）。特許文献１の画像形成装置によれば、コマンドＤＭＡＣを用いてコマンドの転送を行うことにより、ＣＰＵの負荷を軽減し、より高速なデータ転送を実現している。また、同じコマンドを連続して発行する場合には、データ転送のサイズに応じてパラメータを計算し、メモリ上のディスクリプタを読み出すことなくコマンドＤＭＡＣによりコマンドの発行を行うことにより、メモリ消費量を小さくすることを可能にしている。
【０００３】
【特許文献１】特開２００１−２８２７０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の画像形成装置においては、基本的に、コマンドＤＭＡＣにより転送されるコマンドとデータＤＭＡＣにより転送されるデータとは、１対１の関係には無い。データ転送の開始時にコマンドＤＭＡＣにおいて必要なパラメータを一旦設定すると、その後はデータＤＭＡＣにより転送されるデータサイズに応じて、コマンドのパラメータをＨＤＣが自動的に計算してレジスタにセットし、これに応じてコマンドＤＭＡＣがコマンドを発行するからである。このような場合、データ転送が正常に終了した場合は特に問題は無いが、仮にデータ転送中にエラーが発生した場合、データ転送がどこまで終了したかが判別できない恐れがある。このため、コマンドＤＭＡＣにおいてパラメータを再度設定して、データ転送を最初からやり直す必要がある。ＨＤＤでは、１０１４ビットの割合でエラーが発生する可能性がある(約１１分に１回の割合)。特にＩＤＥのＨＤＤに比べてＳＡＴＡのＨＤＤは、転送レートが高くなっており、また、シリアルでデータ転送を行うため、エラーが発生する割合が高く、データ転送のやり直しを行う頻度が多くなる。また、エラーが発生したときに転送中であったデータを特定できず、転送の必要のないデータの転送をやり直す恐れがあり、データ転送のやり直しに不必要に時間が掛かる恐れがある。このため、最悪の場合、データ転送が正常に終了せずに、コピーやプリントなどの処理でエラーが発生したり、出力する画像に異常が発生したりする恐れがある。
【０００５】
本発明は、上記に鑑みてなされたものであって、テータ転送時のエラーに伴う異常の発生を低減可能な画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、請求項１にかかる発明は、画像形成装置であって、装置全体を制御する制御手段と、データを記憶する記憶手段と、前記記憶手段に記憶されたデータをＤＭＡ（Direct Memory Access）方式により転送する第１転送手段と、前記第１転送手段が前記データを転送する際に前記記憶手段に対してコマンドを発行してこれをＤＭＡ方式により転送する第２転送手段と、前記第１転送手段が前記記憶手段から転送した前記データに対して画像処理を行う画像処理手段と、前記画像処理手段が画像処理を行った前記データを用いて画像を形成する画像形成手段と、前記第１転送手段が前記データを転送する際及び前記第２転送手段が前記コマンドを転送する際の少なくとも一方においてエラーが発生したときの前記データの転送箇所を特定する情報を記憶する記憶素子とを備え、前記制御手段は、前記第１転送手段が前記データを転送する際及び前記第２転送手段が前記コマンドを転送する際の少なくとも一方においてエラーが発生したとき、前記記憶素子に記憶された前記情報に基づいて、前記データの転送箇所を特定して、特定した転送箇所以降のデータの転送を前記第１転送手段に再開させると共に、前記コマンドの転送を前記第２転送手段に再開させることを特徴とする。
【０００７】
請求項２にかかる発明は、請求項１にかかる発明において、前記第１転送手段は、第１ディスクリプタと、当該第１ディスクリプタの先頭アドレスが設定された第１レジスタとを有し、前記制御手段は、前記データの転送を開始する際に、前記第１ディスクリプタに転送対象のデータの先頭アドレスを少なくとも設定し、前記第１レジスタに転送対象のデータのデータ量を示すサイズ情報を少なくとも設定し、前記第１転送手段を起動させることを特徴とする。
【０００８】
請求項３にかかる発明は、請求項２にかかる発明において、前記第２転送手段は、前記データのブロック毎に前記コマンドを前記記憶手段に対して発行しこれをＤＭＡ方式により転送し、前記エラーが発生したとき、前記記憶素子には、前記第１レジスタに設定された前記第１ディスクリプタの先頭アドレスと、前記エラーが発生したときの前記転送箇所を含む前記ブロックに含まれるデータであり且つ当該転送箇所以降のデータのデータ量を示すサイズ情報とが少なくとも設定され、前記制御手段は、前記エラーが発生したとき、前記記憶素子に設定された前記第１ディスクリプタの先頭アドレス及び前記サイズ情報を読み出すことにより前記データの転送箇所を特定し、前記第１ディスクリプタの先頭アドレスを前記第１ディスクリプタに再設定すると共に前記サイズ情報を前記第１レジスタに再設定して、前記データの転送を前記第１転送手段に再開させることを特徴とする。
【０００９】
請求項４にかかる発明は、請求項２又は請求項３にかかる発明において、前記第２転送手段は、前記データのブロック毎に前記コマンドを前記記憶手段に対して発行しこれをＤＭＡ方式により転送し、前記画像処理手段は、前記エラーが発生したとき、前記記憶素子に、前記第１レジスタに設定された前記第１ディスクリプタの先頭アドレスと、前記エラーが発生したときの前記転送箇所を含む前記ブロックに含まれるデータであり且つ当該転送箇所以降のデータのデータ量を示すサイズ情報とを少なくとも設定することを特徴とする。
【００１０】
請求項５にかかる発明は、請求項１乃至請求項４のいずれか一項にかかる発明において、前記第２転送手段は、第２ディスクリプタを有し、前記制御手段は、前記データの転送を開始する際に、前記第２ディスクリプタに、前記記憶手段に格納すべきコマンド情報を少なくとも設定し、前記第２転送手段を起動させることを特徴とする。
【００１１】
請求項６にかかる発明は、請求項５にかかる発明において、前記制御手段は、前記エラーが発生したとき、前記記憶素子に設定された前記コマンド情報を読み出して前記第２ディスクリプタに再設定して、前記コマンドの転送を前記第２転送手段に再開させることを特徴とする。
【００１２】
請求項７にかかる発明は、請求項５又は請求項６にかかる発明において、前記画像処理手段は、前記エラーが発生したとき、前記記憶素子に、前記第２ディスクリプタに設定された前記コマンド情報を少なくとも設定することを特徴とする。
【００１３】
請求項８にかかる発明は、請求項１乃至請求項７のいずれか一項にかかる発明において、前記記憶手段へのデータのアクセスを制御する記憶制御手段を更に備え、前記記憶制御手段が、前記第１転送手段、前記第２転送手段及び前記記憶素子のうち少なくとも１つを有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、データ転送時にエラーが発生したとき、データの転送箇所を特定して当該転送箇所以降のデータの転送を再開することにより、データの転送のやり直しに不必要に時間を掛けることがないため、テータ転送時のエラーに伴う異常の発生を低減することができる。
【発明を実施するための最良の形態】
【００１５】
以下に添付図面を参照して、この発明にかかる画像形成装置の最良な実施の形態を詳細に説明する。
【００１６】
（１）構成
図１は、本実施の形態に係る画像形成装置のハードウェア構成を例示するブロック図である。画像形成装置１は、コントローラ２とエンジン部（Engine）３とをＰＣＩ（Peripheral Component Interconnect）バス４で接続した構成となる。コントローラ２は、画像形成装置１全体を制御する。エンジン部３は、プリンタエンジン等であり、たとえば白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタ、スキャナまたはファックスユニット等である。なお、このエンジン部３には、プロッタ等のいわゆるエンジン部分に加えて、誤差拡散やガンマ変換等の画像処理部分が含まれる。
【００１７】
コントローラ２は、ＣＰＵ１０と、２つのＡＳＩＣ１１，１２とを有する。ＡＳＩＣ１１は、ＣＰＵ１０と、ＨＤＤ１４と、ローカルメモリ（ＭＥＭ）１５と接続される。ＡＳＩＣ１２には、操作部１９と、ＳＤ（Secure Digital Memory）１６と、ＲＯＭ（Read Only Memory）１７と、ＮＶＲＡＭ（Non Volatile Random Access Memory）１８とが接続される。更に、ＡＳＩＣ１２は、ＵＳＢ（Universal Serial Bus）３０とネットワーク３１とに接続される。ＡＳＩＣ１１，１２は、バス２１を介して接続される。スロット２０ａ〜２０ｅは、各種サブシステムを接続するためのものである。
【００１８】
ＣＰＵ１０は、ＲＯＭ１７やＨＤＤ１４に記憶された各種プログラムを実行することにより、画像形成装置１全体を制御する。
【００１９】
ＡＳＩＣ１１，１２は、ビデオ出力器（ＶＯＵＴ）や圧縮伸張器（ＣＥＰ）やＦＩＦＯバッファなどの画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Integrated Circuit）である。ＡＳＩＣ１１は、ＨＤＤ１４を制御するＨＤコントローラ(ＨＤＣ)１３を有する。ＨＤＣ１３は、コマンドＤＭＡＣ１３ａと、データＤＭＡＣ１３ｂと、リトライレジスタ１３ｃとを有する。データＤＭＡＣ１３ｂは、ＤＭＡ方式によりＨＤＤ１４からデータを読み出したりＨＤＤ１４に対してデータを転送したりする。コマンドＤＭＡＣ１３ａは、ＨＤＤ１４からのデータの転送時に当該データのブロック毎にＨＤＤ１４に対してコマンドを発行してこれをＤＭＡ方式により転送する。尚、ブロックの単位は、所定のデータ量によるものであっても良いし、データに挿入されたマーカなどによるものであっても良い。リトライレジスタ１３ｃは、データ転送時におけるエラーが発生した時のデータの転送箇所を特定するためのものである。これらの構成の詳細については後述する。ＨＤＤ１４は、画像データ、フォントデータ、フォームなどの各種データや各種プログラムを記憶する。ＭＥＭ１５は、バッファとして機能し、コピー処理時における画像データや、符号処理時における符号データなどを記憶する。
【００２０】
操作部１９は、ユーザからの操作入力を受け付ける。ＲＯＭ１７は、各種プログラムや各種データを記憶する読み出し専用のメモリである。ＮＶＲＡＭ１８は、各種プログラムや各種データを一時的に記憶したり、プリント処理時に描画された画像データを記憶したりする、書き込み及び読み出し可能なメモリである。
【００２１】
ここで、ＨＤＤ１４におけるレジスタの構成について説明する。図２は、ＨＤＤ１４におけるレジスタの構成を例示する図である。同図に示されるように、ＨＤＤ１４は、データレジスタ９１と、書き込み時にフィーチャレジスタとして機能し読み出し時にエラーレジスタとして機能するレジスタ９２と、セクタカウントレジスタ９３と、セクタナンバーレジスタ９４と、シリンダローレジスタ９５と、シリンダハイレジスタ９６と、デバイスヘッドレジスタ９７と、書き込み時にコマンドレジスタとして機能し読み出し時にステータスレジスタとして機能するレジスタ９８とを有する。
【００２２】
次に、コマンドＤＭＡＣ１３ａの構成について説明する。コマンドＤＭＡＣ１３ａは、ディスクリプタとレジスタ群とを有する。図３は、コマンドＤＭＡＣ１３ａの有するディスクリプタのデータ構成を例示する図である。同図に示されるディスクリプタ１００は、ネクストディスクリプタポインタ１０１と、デバイスヘッド１０２と、シリンダハイ１０３と、シリンダロー１０４と、セクタナンバー１０５と、セクタカウント１０６と、コマンド１０７と、拡張セクタカウント１０８と、拡張セクタナンバー１０９と、ｎカウンタ１１１と、ワーク（ＷＯＲＫ）１１２と、ＰＭＯＤＥ／ＣＩＮＴ１１３とを有する。ネクストディスクリプタポインタ１０１には、次に参照すべきディスクリプタの値が設定される。尚、その値が「０」のとき、次のディスクリプタが無いことを示す。デバイスヘッド１０２にはＨＤＤ１４のデバイスヘッドレジスタ９７に格納すべき情報が設定される。シリンダハイ１０３にはＨＤＤ１４のシリンダハイレジスタ９６に格納すべき情報が設定される。シリンダロー１０４にはＨＤＤ１４のシリンダローレジスタ９５に格納すべき情報が設定される。セクタナンバー１０５にはＨＤＤ１４のセクタナンバーレジスタ９４に格納すべき情報が設定される。セクタカウント１０６にはＨＤＤ１４のセクタカウント９３に格納すべき情報が設定される。コマンド１０７にはＨＤＤ１４のコマンドレジスタ９８に格納すべき情報が設定される。拡張セクタカウント１０８にはＨＤＤ１４のセクタカウント９３に格納すべき情報が設定される。拡張セクタナンバー１０９にはＨＤＤ１４のセクタナンバーレジスタ９４に格納すべき情報が設定される。ｎカウンタ１１１にはディスクリプタ１００が繰り返される回数が格納される。ＰＭＯＤＥ／ＣＩＮＴ１１３には、このディスクリプタ１００が終了したら一時停止することを示すフラグが設定され、ディスクリプタ１００が終了してチェーンする時に割り込みを発生することを示すフラグが設定される。
【００２３】
図４は、コマンドＤＭＡＣ１３ａの有するレジスタ群のデータ構成を例示する図である。同図に示されるレジスタ群２００は、ディスクリプタ１００の存在するアドレスが設定されるディスクリプタポインタレジスタ２０１とコントロールレジスタ２０２とを有する。コントロールレジスタ２０２には、要因関係と要因マスク関係及び実行関係のビットがある。要因のビットとしては完了を示すコンプリートビット２０３と一時停止を示すポーズビット２０４とエラーを示すエラービット２０５及びチェーンが起きたことを示すチェーンビット２０６を有する。また、それぞれに対応してマスクビットが存在し、マスクコンプリートビット２０７はコンプリート割り込みのマスク、マスクポーズビット２０８は一時停止割り込みのマスク、マスクエラービット２０９はエラー割り込みのマスク、マスクチェーンビット２１０はチェーン割り込みのマスクである。実行関係のビットとしては、一時停止を再開するための連続ビット２１１とコマンドＤＭＡＣ１３ａそのものの動作を開始する実行ビット２１２を有する。
【００２４】
次に、データＤＭＡＣ１３ｂの構成について説明する。データＤＭＡＣ１３ｂも、コマンドＤＭＡＣ１３ａと同様に、ディスクリプタとレジスタ群とを有する。図５は、データＤＭＡＣ１３ｂの有するディスクリプタのデータ構成を例示する図である。データＤＭＡＣ１３ｂの有するディスクリプタ３００は、ネクストディスクリプタポインタ３０１と、対象となるデータのスタートアドレスが設定されるスタートアドレス３０２と、ラインアップ３０３と、ライン数が設定されるライン３０４と、ｎカウンタ３０５と、ワーク（ＷＯＲＫ）３０６と、セル（ｓｅｌ）３０７と、イメージ（ｉｍｇ）３０８と、ＰＭＯＤＥ／ＣＩＮＴ３０９とを有する。
【００２５】
図６は、データＤＭＡＣ１３ｂの有するレジスタ群のデータ構成を例示する図である。同図に示されるレジスタ群４００は、ディスクリプタ３００の存在するアドレスが設定されるディスクリプタポインタレジスタ４０１と、メモリ幅が設定されるメモリウィズスレジスタ４０２と、画像幅が設定されるイメージウィズスレジスタ４０３と、コントロールレジスタ４０４とを有する。コントロールレジスタ４０４の構成は、コマンドＤＭＡＣ１３ａの有するコントロールレジスタ２０２の構成と略同様であるため、その説明を省略する。
【００２６】
尚、データＤＭＡＣ１３ｂの構成や、コマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂへ情報の設定方法については、従来技術と同様であり、例えば、特開２００１−２８２７０５号公報に示されるため、ここではその説明を省略する。
【００２７】
次に、リトライレジスタ１３ｃの構成について説明する。図７は、リトライレジスタ１３ｃのデータ構成を例示する図である。同図に示されるリトライレジスタ１３ｃは、ディスクリプタポインタレジスタ５００に加え、リトライデータＤＭＡＣディスクリプタポインタレジスタ５０１と、リトライパラムレジスタ５０２〜５０７と、コントロールレジスタ５０８とを有する。リトライデータＤＭＡＣディスクリプタポインタレジスタ５０１には、エラーが発生した時のデータＤＭＡＣ１３ｂのディスクリプタポインタが設定される。リトライパラムレジスタ５０２〜５０３には、エラーが発生した時のＨＤＤ１４に転送したコマンド群が設定される。具体的には、リトライパラムレジスタ５０２には、図３に示したデバイスヘッド１０２と、シリンダハイ１０３と、シリンダロー１０４と、セクタナンバー１０５とに設定された情報が、デバイスヘッド５０２ａと、シリンダハイ５０２ｂと、シリンダロー５０２ｃと、セクタナンバー５０２ｄとに設定される。リトライパラムレジスタ５０３には、図３に示したセクタカウント１０６と、コマンド１０７と、拡張セクタカウント１０８と、拡張セクタナンバー１０９とに設定された情報が、セクタカウント５０３ａと、コマンド５０３ｂと、拡張セクタカウント５０３ｃと、拡張セクタナンバー５０３ｄと設定される。リトライパラムレジスタ５０４には、エラーが発生したときの転送箇所以降に転送すべきデータのライン数が設定される。リトライパラムレジスタ５０５には、エラーが発生したときの転送箇所のスタートアドレスが設定される。リトライパラムレジスタ５０６には、エラーが発生したときの転送箇所を含むブロックに含まれるデータであり且つ当該転送箇所以降のデータについてその画像幅の値が設定される。リトライパラムレジスタ５０７には、エラーが発生したときの転送箇所を含むブロックに含まれるデータであり且つ当該転送箇所以降のデータについてそのメモリ幅の値が設定される。コントロールレジスタ５０８の構成は図４に示したコントロールレジスタ２０２の構成と同様である。
【００２８】
尚、ＨＤＣ１３におけるデータの転送中は、リトライレジスタ１３ｃの各値は不定である、もしくはリトライレジスタ１３ｃへのアクセスを禁止するように制御する。エラーが発生したときに初めてリトライレジスタ１３ｃの各値が反映されるものとする。
【００２９】
図８（ａ），（ｂ）は、ＨＤＤ１４にアクセスするために必要なロジカルブロックアドレス（ＬＢＡ）を各レジスタから求めるときの関係を示す図である。このＬＢＡの計算方法には、デフォルトＬＢＡモード(図８（ａ）)と、拡張ＬＢＡモード(図８（ｂ）)との２種類が存在する。これらの計算方法については周知技術であるため、ここではその詳細な説明を省略する。
【００３０】
ここで、操作部１９を介してコピー処理やプリント処理の指示入力を受け付け、ＨＤＤ１４に格納されたデータを用いて画像を印刷する処理の概略について説明する。図９は、ＨＤＤ１４に格納されたデータを用いて画像を印刷する処理の概略を示す図である。ＨＤＤ１４には、４色（Ｃ，Ｍ，Ｙ，Ｋ）の画像が圧縮された符号データが記憶されているものとする。操作部１９を介してコピー処理やプリント処理の指示入力が受け付けられると、ＡＳＩＣ１１は、ＨＤＤ１４に格納された各色の符号データをＨＤＣ１３を介して例えばＭＥＭ１５などのメモリに読み出し、読み出された符号データをＣＥＰ１１ｄで伸張しながらオンザフライでＶＯＵＴ１１ｅに備わるＦＩＦＯバッファ１１ｆに出力する。このようにしてＡＳＩＣ１１は、ＨＤＤ１４に格納されたデータに対して画像処理を行う。ＦＩＦＯバッファ１１ｆに出力されたデータはエンジン部３により読み出される。このようにしてＨＤＤ１４からエンジン部３にデータが転送される。そしてエンジン部３は、ＡＳＩＣ１１により画像処理が行われ転送されたデータを用いて画像を形成してこれを出力する。
【００３１】
以上のような画像処理において、操作部１９を介してコピー処理やプリント処理の指示入力を受け付け、ＨＤＤ１４に格納されたデータをエンジン部３に転送するとき、ＣＰＵ１０は、コマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂのディスクリプタ及びレジスタ群を各々設定してこれらを起動させる。そして、コマンドＤＭＡＣ１３ａは、ＨＤＤ１４へコマンドを発行し、データＤＭＡＣ１３ｂはＨＤＤ１４からデータ転送を行う。更に、データ転送時にエラーが発生したとき、ＡＳＩＣ１１は、コマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂに設定されている情報に基づいて、リトライレジスタ１３ｃに情報を設定し、ＣＰＵ１０は、当該リトライレジスタ１３ｃに設定された情報を読み出すことによりデータの転送箇所を特定し、当該読み出した情報に基づいて、コマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂのディスクリプタ及びレジスタ群を各々再設定する。このようにして、ＣＰＵ１０は、データ転送のリトライを行うためのコマンド及びデータの再設定を行う。尚、上述したＨＤＤ１４からＦＩＦＯバッファ１１ｆに対するデータとコマンドとがＯＰＥという単位で管理され、キュー構造により処理されてキューとして複数蓄積されうる。そして、ＣＰＵ１０は、再設定したデータ及びコマンドに係るキュー（リトライキュー）の優先順位を変更する処理を行った後、データ転送のリトライを行う。
【００３２】
尚、キューの優先順位を変更するのは以下の理由による。データ転送のリトライを行う場合、リトライキューの他に、実行すべきキューがＦＩＦＯバッファ１１ｆに既に存在する可能性が高い。ＦＩＦＯバッファ１１ｆにおける先入れ先出しのデータ処理方式によれば、リトライキューの優先順位が一番最後になる可能性が高い。このため、リトライキューの優先順位を変えて、一番最初に実行させる必要があるからである。以上のような理由により、ＣＰＵ１０は、リトライキューの優先順位が１番となるように、ＦＩＦＯバッファ１１ｆに存在する各キューの優先順位を変更する。
【００３３】
（２）動作
次に、画像形成装置１においてＨＤＤ１４からエンジン部３へデータ転送を行う場合の処理の手順について説明する。図１０は、ＨＤＤ１４からエンジン部３へデータ転送を行う場合の処理の手順を示す図である。ＣＰＵ１０は、画像形成装置１に接続されるＨＤＤ１４に関するステータスをＨＤＣ１３から読み出して(ステップＳ１)、当該ＨＤＤ１４についてｂｕｓｙ状態が全て解除されておりｒｅａｄｙ状態になっているかを判断する(ステップＳ２)。当該判断結果が肯定的である場合、ＣＰＵ１０は、ＨＤＣ１３のデータＤＭＡＣ１３ｂのレジスタ群４００のディスクリプタポインタレジスタ４０１にディスクリプタ３００の先頭アドレスを設定する等各種設定を行うと共に、ＨＤＣ１３のコマンドＤＭＡＣ１３ａのレジスタ群２００のディスクリプタポインタレジスタ２０１にディスクリプタ１００の先頭アドレスを設定する等各種設定を行う(ステップＳ３)。更に、ＣＰＵ１０が、データＤＭＡＣ１３ｂのコントロールレジスタ４０４の実行ビット（ＥＸＥＣ）に「１」を書き込むと、データＤＭＡＣ１３ｂが起動する(ステップＳ４)。また、ＣＰＵ１０が、コマンドＤＭＡＣ１３ａのコントロールレジスタ２０２の実行ビット（ＥＸＥＣ）２１２に「１」を書き込むと、コマンドＤＭＡＣ１３ａが起動する(ステップＳ５)。コマンドＤＭＡＣ１３ａは起動すると、レジスタ群２００のディスクリプタポインタレジスタ２０１に設定されているディスクリプタの先頭アドレスを参照してディスクリプタ１００を読み出し、当該ディスクリプタ１００に設定されている情報を用いて、ＨＤＤ１４にフィーチャレジスタ９２，セクタカウントレジスタ９３，セクタナンバーレジスタ９４，シリンダローレジスタ９５，シリンダハイレジスタ９６及びデバイスヘッドレジスタ９７の順番で書き込み、最後にコマンドレジスタ９８にコマンドを書き込む。コマンドレジスタ９８にコマンドを書き込むとＨＤＤ１４は動作を開始する。この状態で、データＤＭＡＣ１３ｂがコマンドで示された所定のセクタ数のデータの転送を行う(ステップＳ６)。このデータ転送中にエラーが発生せず、コマンドで示されたセクタ数のデータ転送が正常に終了した場合（ステップＳ７：ＮＯ）且つ全てのデータの転送が終了していない場合(ステップＳ８：ＮＯ)、ＨＤＣ１３はコマンドＤＭＡＣ１３ａに対して割り込みを発生させる。そして、ＨＤＣ１３は、データＤＭＡＣ１３ｂのディスクリプタ３００のライン３０４に設定されたライン数、データＤＭＡＣ１３ｂのレジスタ群４００のメモリウィズスレジスタ４０２に設定されたメモリ幅及びイメージウィズスレジスタ４０３に設定された画像幅から、データの転送サイズを計算し、これに基づいて、コマンドＤＭＡＣ１３ａの各レジスタに情報を再設定する。コマンドＤＭＡＣ１３ａはＨＤＤ１４からの割り込みが発生する度にディスクリプタ１００の内容を読み出してＨＤＤ１４へコマンドを発行する。その後、上述したステップＳ６に進み、データＤＭＡＣ１３ｂがコマンドで示された所定のセクタ数のデータの転送を行う。尚、データ転送中にエラーが発生した場合(ステップＳ７：ＹＥＳ)、ＣＰＵ１０は、リトライ処理を行う(ステップＳ１０）。
【００３４】
図１１は、リトライ処理の詳細な処理の手順を示すフローチャートである。ＣＰＵ１０は、エラーの発生を検出すると、エラーの発生しているＨＤＤ１４についてそのエラー要因をＨＤＣ１３から読み出し、当該エラー要因に基づいて、当該エラーに対処するためのエラー処理を行う(ステップＳ１００)。また、ＡＳＩＣ１１は、エラーが発生したときにコマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂに設定された情報を用いて、エラーが発生したときの転送箇所を含むブロックに含まれるデータであり且つ当該転送箇所以降のデータのデータ量を求め、これらの情報及びデータ量を用いて、リトライレジスタ１３ｃに、図７に示したような情報を各々設定する。そして、ＣＰＵ１０は、データＤＭＡＣ１３ｂのコントロールレジスタ４０４の実行ビット及びコマンドＤＭＡＣ１３ａのコントロールレジスタ２０２の実行ビット２１２に「０」を各々書き込み、データＤＭＡＣ１３ｂ及びコマンドＤＭＡＣ１３ａを停止させる(ステップＳ１０１)。次いで、ＣＰＵ１０は、リトライレジスタ１３ｃのリトライデータＤＭＡＣディスクリプタポインタ５０１及びリトライパラムレジスタ５０２〜５０７に設定された情報を読み出す(ステップＳ１０２)。そして、ＣＰＵ１０は、ステップＳ１０２で読み出した情報を用いて、コマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂに情報を再設定する(ステップＳ１０３)。このステップＳ１０３の処理の詳細については後述する。
【００３５】
その後、ＣＰＵ１０は、コマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂに情報を再設定した後、キューの優先順位を変更する(ステップＳ１０４)。即ち、ＣＰＵ１０は、情報を再設定したコマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂのキューの優先順位が１番となるように各キューの優先順位を変更する。次いで、ＣＰＵ１０は、ソフトスイッチに「１」を書き込んでソフトウェアをリセットし(ステップＳ１０５)、ハードスイッチに「１」を書き込んでハードウェアをリセットする(ステップＳ１０６)。その後、ＣＰＵ１０は、ハードスイッチに「１」を書き込んでハードウェアのリセットを解除し(ステップＳ１０７)、ソフトスイッチに「１」を書き込んでソフトウェアのリセットを解除する(ステップＳ１０８)。
【００３６】
その後、図１０に戻り、ＣＰＵ１０は、ステップＳ４以降の処理を行い、データ転送を行う処理を再開する。この結果、エラーが発生した時のデータの転送がリトライされる。以降、エラーが発生しなければ、所定のセクタ数毎のデータの転送が繰り返し行われる。そして、全てのデータの転送が終了すると(ステップＳ８：ＹＥＳ)、その旨（ＣＯＭＰＬＥＴＥ）を示す割り込みを発生させる。
【００３７】
次に、ステップＳ１０３で行うコマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂに情報を再設定する処理の詳細な手順について説明する。図１２は、コマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂに情報を再設定する処理の詳細な手順を示すフローチャートである。ＣＰＵ１０は、まず、再設定するコマンドＤＭＡＣ１３ａのディスクリプタ１００及びデータＤＭＡＣ１３ｂのディスクリプタ３００のためのメモリ領域を確保する（ステップＳ１０３０）。そして、ＣＰＵ１０は、図１１のステップＳ１０２で読み出したリトライレジスタ１３ｃのリトライパラムレジスタ５０２のデバイスヘッド５０２ａと、シリンダハイ５０２ｂと、シリンダロー５０２ｃと、セクタナンバー５０２ｄとに各々設定された情報を、コマンドＤＭＡＣ１３ａのディスクリプタ１００のデバイスヘッド１０２と、シリンダハイ１０３と、シリンダロー１０４と、セクタナンバー１０５とに各々書き込む（ステップＳ１０３１）。また、ＣＰＵ１０は、リトライレジスタ１３ｃのリトライパラムレジスタのセクタカウント５０３ａと、コマンド５０３ｂと、拡張セクタカウント５０３ｃと、拡張セクタナンバー５０３ｄと各々設定された情報を、コマンドＤＭＡＣ１３ａのディスクリプタ１００のセクタカウント１０６と、コマンド１０７と、拡張セクタカウント１０８と、拡張セクタナンバー１０９とに各々書き込む（ステップＳ１０３２）。また、ＣＰＵ１０は、リトライレジスタ１３ｃのリトライパラムレジスタ５０４を、データＤＭＡＣ１３ｂのディスクリプタ３００のライン３０４に書き込む（ステップＳ１０３３）。また、ＣＰＵ１０は、リトライレジスタ１３ｃのリトライパラムレジスタ５０５を、データＤＭＡＣ１３ｂのディスクリプタ３００のスタートアドレス３０２に書き込む（ステップＳ１０３４）。また、ＣＰＵ１０は、リトライレジスタ１３ｃのリトライパラムレジスタ５０６を、データＤＭＡＣ１３ｂのレジスタ群４００のメモリウィズスレジスタ４０２に書き込み、リトライレジスタ１３ｃのリトライパラムレジスタ５０７を、データＤＭＡＣ１３ｂのレジスタ群４００のイメージウィズスレジスタ４０３に書き込み、リトライレジスタ１３ｃのリトライデータＤＭＡＣディスクリプタポインタ５０１を、データＤＭＡＣ１３ｂのレジスタ群４００のディスクリプタポインタ４０１に書き込む（ステップＳ１０３５）。
【００３８】
以上のような構成によれば、データ転送中にエラーが発生したときに、データの転送箇所を特定して、特定した転送箇所を含むブロックに含まれるデータであり且つ当該転送箇所以降のデータの転送をリトライすることにより、リトライするデータを必要最小限にすることができる。また、以上のようにして、データ転送のエラーが発生したときに即座にデータ転送のリトライを行うことにより、エンジン部３にバッファを備えず、ＨＤＤ１４から転送されたデータをエンジン部３においてＶＯＵＴ１１ｅへ逐次出力する場合に、リトライによるデータ転送の遅延による影響を最小限に抑えることができる。例えば、上述した４色（Ｃ，Ｍ，Ｙ，Ｋ）全ての符号データの転送が完了する前に先行してＶＯＵＴ１１ｅへ出力する先出し方式において、データの転送時にエラーが発生した場合、従来では、エラー発生時におけるデータ転送箇所を特定できず、必要以上のデータの転送をリトライする可能性があった。例えば、一番初めに転送される色の次に転送される色の符号データの転送時にエラーが発生した場合、エラーの発生したタイミングやデータ量によっては、リトライによるデータ転送に必要以上に時間が掛かることになる。即ち、本来行われるべきデータ転送の遅延が大きい場合、その色を出力できない恐れがあり、出力される画像の異常が発生する恐れがあった。しかし、本実施の形態においては、リトライによるデータ転送の遅延時間を、コマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂを再設定する時間に略抑えることができるため、出力される画像の異常の発生を抑えることができる。
【００３９】
[変形例]
また、上述した各実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
【００４０】
＜変形例１＞
上述した実施の形態においては、画像形成装置１は、リトライレジスタ１３ｃをＡＳＩＣ１１の有するＨＤＣ１３内に備えるように構成した。しかし、画像形成装置１は、リトライレジスタ１３ｃをＡＳＩＣ１１とＨＤＤ１４との間に備えるように構成しても良い。
【００４１】
また、画像形成装置１がリトライレジスタ１３ｃを備えず、データＤＭＡＣ１３ｂとコマンドＤＭＡＣ１３ａとを相関させてソフトウェアのみによりエラー発生時のデータ転送箇所を特定するように構成しても良い。
【００４２】
従来技術においては、ブロック毎のデータとコマンドとの相関関係はあるものの、転送１回毎のデータとコマンドとが必ずしも相関付けされているわけではなく、コマンドには、１回に転送可能なデータ量以上のデータが相関付けされている。そして、基点となる最初の必要なパラメータ(LBA等)をコマンドＤＭＡＣ１３ａにより１回だけ設定し、データＤＭＡＣ１３ｂによりデータ転送を開始すると、コマンドに関する設定はＨＤＣ１３により自動的に行うため、コマンドＤＭＡＣ１３ａとデータＤＭＡＣ１３ｂとの相関がなくなり、データ転送中にエラーが発生した場合は、どこまでのデータの転送が終了したのかが判断できず、コマンドに対応するデータの最初からデータＤＭＡＣ１３ｂとコマンドＤＭＡＣ１３ａとを再設定し、データ転送をやり直さなければならない。このため、本変形例においては、１回に転送可能なデータ量の１つのデータに対して１つのコマンドを相関付けるように構成する。図１３は、コマンドＤＭＡＣ１３ａにおけるコマンドとデータＤＭＡＣ１３ｂにおけるデータとの相関関係を模式的に示した図であり、(a)は従来技術における相関関係を示し、(b)は本変形例における相関関係を示す。本変形例においては、具体的には、例えば、１回に転送するデータ量の最大量(例えば、非BigDriveでは256セクタ、BigDriveでは65536セクタ)以下のデータをデータＤＭＡＣ１３ｂに書き込む。
【００４３】
図１４は、本変形例の画像形成装置１においてＨＤＤ１４からエンジン部３へデータ転送を行う場合の処理の手順を示すフローチャートである。ＣＰＵ１０は、上述のステップＳ１〜Ｓ５の処理を行った後、データＤＭＡＣ１３ｂ及びコマンドＤＭＡＣ１３ａが起動すると、データＤＭＡＣ１３ｂが、上述のように設定されたデータ量のデータの転送を行う(ステップＳ６´)。ここでのデータ転送には、ＣＰＵ１０は関与せず、データＤＭＡＣ１３ｂが、１回のデータ転送で転送可能なデータ量のデータの転送を逐次行う。そして、全てのデータの転送が終了すると、その旨（ＣＯＭＰＬＥＴＥ）を示す割り込みを発生させる(ステップＳ１１)。
【００４４】
以上のような構成によれば、エラーが発生したときのデータの転送箇所の特定が容易であり、必要最低限のデータ転送のみのリトライが可能である。
【００４５】
＜変形例２＞
上述した実施の形態においては、画像形成装置１はＨＤＤを１つ備える構成としたが、ＨＤＤを複数備える構成であっても良い。
【００４６】
＜変形例３＞
上述した実施の形態においては、リトライレジスタ１３ｃに、エラーが発生したときの特定した転送箇所を含むブロックに含まれるデータであり且つ当該転送箇所以降のデータのデータ量を示すサイズ情報として、ライン数、メモリ幅及び画像幅を用いたが、本実施の形態においてはこれに限らない。
【産業上の利用可能性】
【００４７】
以上のように、本発明は、画像形成エンジンを備える画像形成装置に有用であり、特にＨＤＤに記憶されたデータを画像形成エンジンに転送する画像形成装置に用いて好適である。
【図面の簡単な説明】
【００４８】
【図１】本発明の一実施の形態に係る画像形成装置のハードウェア構成を例示するブロック図である。
【図２】同実施の形態に係るＨＤＤ１４におけるレジスタの構成を例示する図である。
【図３】同実施の形態に係るコマンドＤＭＡＣ１３ａの有するディスクリプタのデータ構成を例示する図である。
【図４】同実施の形態に係るコマンドＤＭＡＣ１３ａの有するレジスタ群のデータ構成を例示する図である。
【図５】同実施の形態に係るデータＤＭＡＣ１３ｂの有するディスクリプタのデータ構成を例示する図である。
【図６】同実施の形態に係るデータＤＭＡＣ１３ｂの有するレジスタ群のデータ構成を例示する図である。
【図７】同実施の形態に係るリトライレジスタ１３ｃのデータ構成を例示する図である。
【図８】同実施の形態に係るＨＤＤ１４にアクセスするために必要なロジカルブロックアドレス（ＬＢＡ）を各レジスタから求めるときの関係を示し、（ａ）は、デフォルトＬＢＡモードを示し、（ｂ）は、拡張ＬＢＡモードを示す図である。
【図９】同実施の形態に係るＨＤＤ１４に格納されたデータを用いて画像を印刷する処理の概略を示す図である。
【図１０】同実施の形態に係るＨＤＤ１４からエンジン部３へデータ転送を行う場合の処理の手順を示す図である。
【図１１】同実施の形態に係るリトライ処理の詳細な処理の手順を示すフローチャートである。
【図１２】同実施の形態に係るコマンドＤＭＡＣ１３ａ及びデータＤＭＡＣ１３ｂに情報を再設定する処理の詳細な手順を示すフローチャートである。
【図１３】本発明の変形例に係るコマンドＤＭＡＣ１３ａにおけるコマンドとデータＤＭＡＣ１３ｂにおけるデータとの相関関係を模式的に示した図であり、(a)は従来技術における相関関係を示し、(b)は本変形例における相関関係を示す。
【図１４】同変形例の画像形成装置１においてＨＤＤ１４からエンジン部３へデータ転送を行う場合の処理の手順を示すフローチャートである。
【符号の説明】
【００４９】
１  画像形成装置
２  コントローラ
３  エンジン部（画像形成手段）
４  ＰＣＩバス
１０  ＣＰＵ（制御手段）
１１  ＡＳＩＣ（画像処理手段）
１２  ＡＳＩＣ（画像処理手段）
１３  ＨＤＣ
１３ａ  コマンドＤＭＡＣ（第２転送手段）
１３ｂ  データＤＭＡＣ（第１転送手段）
１３ｃ  リトライレジスタ（記憶素子）
１４  ＨＤＤ
１５  ＭＥＭ
１６  ＳＤ
１７  ＲＯＭ
１８  ＮＶＲＡＭ
１９  操作部
２１  バス
３０  ＵＳＢ
３１  ネットワーク
【図１】
2008310547.tif 000003
【図２】
2008310547.tif 000004
【図３】
2008310547.tif 000005
【図４】
2008310547.tif 000006
【図５】
2008310547.tif 000007
【図６】
2008310547.tif 000008
【図７】
2008310547.tif 000009
【図８】
2008310547.tif 000010
【図９】
2008310547.tif 000011
【図１０】
2008310547.tif 000012
【図１１】
2008310547.tif 000013
【図１２】
2008310547.tif 000014
【図１３】
2008310547.tif 000015
【図１４】
2008310547.tif 000016