(57)【要約】【課題】  システムの主たるメイン処理の処理効率を劣化させることなく、バックグラウンド処理も最短時間で完了する。【解決手段】複数のハードディスクを備え、当該ハードディスクのアクセスを制御するメモリコントローラを備える。そして、メモリコントローラはメインコントローラから要求される記憶手段に対するメイン処理の状態に基づいて、複数の記憶手段の状態に基づくバックグラウンド処理の処理単位を可変する。その際、メモリコントローラは、メインコントローラからメイン処理が要求される状態を監視して、バックグラウンド処理の処理単位を、第１の処理単位または前記第１の処理単位よりも小さい第２の処理単位に可変する。【選択図】  図７
2014089757.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶手段を制御するメモリ制御装置であって、
メイン装置から要求される前記記憶手段に対するメイン処理の状態に基づいて、前記複数の記憶手段の状態に基づくバックグラウンド処理の処理単位を可変する制御手段を備え、
前記制御手段は、前記メイン装置から前記メイン処理が要求される状態を監視して、前記バックグラウンド処理の処理単位を、第１の処理単位または前記第１の処理単位よりも小さい第２の処理単位に可変することを特徴とするメモリ制御装置。
【請求項２】
前記制御手段は、前記メイン処理と前記バックグラウンド処理とのタイミングを調停しながら前記メイン処理と前記バックグラウンド処理とを並列して実行することを特徴とする請求項１記載のメモリ制御装置。
【請求項３】
前記制御手段は、前記メイン装置からメイン処理が要求される前は、前記バックグラウンド処理の処理単位を第１の処理単位で実行し、前記バックグラウンド処理を終了する前に、前記メイン処理が要求された場合、前記バックグラウンド処理の処理単位を第１の処理単位から第２の処理単位に変更し、当該第２の処理単位に変更した後、前記メイン処理が終了している場合、前記バックグラウンド処理の処理単位を第２の処理単位から第１の処理単位に変更することを特徴とする請求項１又は２記載のメモリ制御装置。
【請求項４】
前記バックグラウンド処理の処理単位を第１の処理単位から第２の処理単位に変更してから所定時間が経過する毎に、前記メイン処理が終了しているかどうかを判定する判定手段を備え、
前記制御手段は、前記メイン処理が終了していると前記判定手段が判定した場合、前記バックグラウンド処理の処理単位を第２の処理単位から第１の処理単位に変更することを特徴とする請求項３記載のメモリ制御装置。
【請求項５】
前記処理単位は、１コマンド処理単位であることを特徴とする請求項１乃至４のいずれか１項に記載のメモリ制御装置。
【請求項６】
複数の記憶手段を制御するメモリ制御装置におけるメモリ制御方法であって、
メイン装置から要求される前記記憶手段に対するメイン処理の状態に基づいて、前記複数の記憶手段の状態に基づくバックグラウンド処理の処理単位を可変する制御工程を備え、
前記制御工程は、前記メイン装置から前記メイン処理が要求される状態を監視して、前記バックグラウンド処理の処理単位を、第１の処理単位または前記第１の処理単位よりも小さい第２の処理単位に可変することを特徴とするメモリ制御方法。
【請求項７】
前記制御工程は、前記メイン処理と前記バックグラウンド処理とのタイミングを調停しながら前記メイン処理と前記バックグラウンド処理とを並列して実行することを特徴とする請求項６記載のメモリ制御方法。
【請求項８】
前記制御工程は、前記メイン装置からメイン処理が要求される前は、前記バックグラウンド処理の処理単位を第１の処理単位で実行し、前記バックグラウンド処理を終了する前に、前記メイン処理が要求された場合、前記バックグラウンド処理の処理単位を第１の処理単位から第２の処理単位に変更し、当該第２の処理単位に変更した後、前記メイン処理が終了している場合、前記バックグラウンド処理の処理単位を第２の処理単位から第１の処理単位に変更することを特徴とする請求項６又は７記載のメモリ制御方法。
【請求項９】
前記バックグラウンド処理の処理単位を第１の処理単位から第２の処理単位に変更してから所定時間が経過する毎に、前記メイン処理が終了しているかどうかを判定する判定工程を備え、
前記制御工程は、前記メイン処理が終了していると前記判定工程が判定した場合、前記バックグラウンド処理の処理単位を第２の処理単位から第１の処理単位に変更することを特徴とする請求項８記載のメモリ制御方法。
【請求項１０】
前記処理単位は、１コマンド処理単位であることを特徴とする請求項６乃至９のいずれか１項に記載のメモリ制御方法。
【請求項１１】
請求項６乃至１０のいずれか１項に記載のメモリ制御方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の記憶装置を制御するメモリ制御装置に関する。
【背景技術】
【０００２】
従来、複数の記憶装置を備えて、一方の記憶装置の障害等に備えて、データを相互に共有するディスクアレイシステムが提案されている。また、このようなディスクアレイシステムを用いたデータ処理装置、画像処理装置等も提案されている。
このようなディスクアレイシステムを利用する装置が、例えば印刷装置である場合、印刷処理とそれ以外の目的でのバックグラウンド処理とが共通の記憶装置で処理される場合、メイン処理に影響を及ぼさない範囲内か、固定的な処理の割合でバックグラウンド処理を行っていた。
【０００３】
しかしながら、バックグラウンド処理の内容によっては、メイン処理より優先的に処理を行う場合や、メイン処理の効率を劣化させない範囲においてバックグラウンド処理を最短時間で完了させなければならない場合がある。
ここで、ディスクアレイシステムがデータ保護を目的としたミラーリング（ＲＡＩＤ１）システムにおいて、片方のハードディスク装置に故障が発生する場合がある。この場合、故障したハードディスク装置を新しいものに交換して、正常なハードディスク装置の内容を交換したハードディスク装置にコピー処理を行う。このようなコピー処理は、通常バックグラウンドで処理される。
【０００４】
このようなバックグラウンド処理中に、正常なハードディスク装置が故障するとデータ保護機能が働かず、ハードディスク上に記憶されたデータを再現することができなくなる。この例のように、異常状態から正常状態への復帰に対するバックグラウンド処理には、一刻も早く処理を完了させる必要がある。
このような事態に備えて、メイン処理とバックグラウンド処理との優先度テーブルを作成すること、作成した優先度テーブルを用いてメイン処理とバックグラウンド処理との優先順位を決定することが特許文献１に記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２７８７０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１に記載される処理では、バックグラウンド処理の数がさほど多くない場合にも優先度テーブルを作成し、記憶装置側に登録する煩雑な処理が必要となる。
さらに、優先度テーブルを記憶装置側に登録して優先度を制御することは、複数発行されたアクセス要求のどれを先に処理されたのかについて要求元で判断するための複雑な処理が必要となる。
【０００７】
このような課題は、記憶装置がハードディスクに限るものではなく、メモリ装置、アレイ接続可能なメモリ装置であれば同様に発生し得るものである。
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、比較的簡単な制御構成でシステムの主たるメイン処理の処理効率を劣化させることなく、バックグラウンド処理も最短時間で完了できる仕組みを提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成する本発明のメモリ制御装置は以下に示す構成を備える。
複数の記憶手段を制御するメモリ制御装置であって、メイン装置から要求される前記記憶手段に対するメイン処理の状態に基づいて、前記複数の記憶手段の状態に基づくバックグラウンド処理の処理単位を可変する制御手段を備え、前記制御手段は、前記メイン装置から前記メイン処理が要求される状態を監視して、前記バックグラウンド処理の処理単位を、第１の処理単位または前記第１の処理単位よりも小さい第２の処理単位に可変することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、比較的簡単な制御構成でシステムの主たるメイン処理の処理効率を劣化させることなく、バックグラウンド処理も最短時間で完了することが可能となり、システムの全体として処理最適化を行える。
【図面の簡単な説明】
【００１０】
【図１】画像形成装置の構成を説明するブロック図である。
【図２】ＨＤＤコントローラの内部構成を示すブロック図である。
【図３】ディスクアレイシステムの構成を説明する図である。
【図４】メモリ制御装置のシーケンスを示すタイミングチャートである。
【図５】画像形成装置のデータ処理手順を示すフローチャートである。
【図６】メモリ制御装置の処理手順を示すフローチャートである。
【図７】メモリ制御装置の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
次に本発明を実施するための最良の形態について図面を参照して説明する。
＜システム構成の説明＞
〔第１実施形態〕
図１は、本実施形態を示すメモリ制御装置を適用可能な画像形成装置の構成を説明するブロック図である。本実施形態では、画像形成装置として、MFP（Multi Function Peripheral）の例を示すが、SFP（Single Function Peripheral：単一機能周辺機器）に適用してもよい。なお、本例は、複数のハードディスクをアレイ接続可能とするためのＨＤＤコントローラが画像形成装置を制御するＣＰＵとがシステムバス２２０を介して接続される。また、本実施形態では、メモリ装置をハードディスクとする例を説明するが、メモリ装置は、ハードディスクに限定されるものではなく、他の適用例については後述する。
【００１２】
図１において、２００は画像形成装置全体を制御するメインコントローラで、システムバス２２０を介して接続される機器を制御するためのＣＰＵ２０１、ＲＯＭ２０３、ＲＡＭ２０４を備える。
【００１３】
ここで、ＣＰＵ（中央処理演算器）２０１は、システム制御や演算処理を行う。メモリ制御部２０２は、各種メモリデバイスへの入出力制御やＤＭＡ（ダイレクト・メモリ・アクセス）制御を行う。ＲＯＭ（リード・オンリー・メモリ）２０３は、不揮発性メモリで、起動プログラムやフォント等の変更しないデータを格納する。なお、Ｆｌａｓｈ−ＲＯＭを用いれば書き換えも可能である。
【００１４】
ＲＡＭ（ランダム・リード・メモリ）２０４は、ＳＤＲＡＭやＤＤＲに代表される揮発性メモリである。プログラムの作業領域や印刷データの格納領域等の書き換えが必要な用途に用いられる。
ＬＡＮ−ＩＦ部２０５は、印刷装置に接続されるローカル・エリア・ネットワーク２０６とのインタフェースを行う。一般的にはＴＣＰ／ＩＰのプロトコルに対応する。本コントローラは、ネットワークケーブルを介して、外部ＨＯＳＴ２０７などのネットワーク対応機器と接続され、ネットワーク経由でのプリントを行うことができる。
Ｒｅａｄｅｒ−ＩＦ部２０８は、スキャナ装置２０９との通信制御を行う。なお、画像形成装置は、スキャナ装置２０９によってスキャンした画像データを入力することでコピー機能を実現する。
【００１５】
ＦＡＸ−ＩＦ部２１０は、ＦＡＸ装置２１１との通信制御を行う。ＦＡＸ−ＩＦ部２１０は、電話回線に接続された前記ＦＡＸ装置２１１に対して、ＦＡＸデータの送受信処理を実行する。
画像処理部２１２は、前記ＬＡＮ−ＩＦ部２０５、Ｒｅａｄｅｒ−ＩＦ部２０８、ＦＡＸ−ＩＦ部２１０を介して取り込んだ画像データに対して、各種画像処理を行う。
パネル−ＩＦ部２１３は、パネル装置２１４との通信制御を行う。ユーザは、パネル装置２１４上の液晶表示やボタン等を操作して、画像形成装置の各種設定操作及び状態の確認などを行う。パネル装置２１４の液晶表示部には、図示しないＵＩ（ユーザインタフェース）が表示される。
ＨＤＤ−ＩＦ部２１５は、ＨＤＤ（ハードディスク装置）メインコントローラ２１６に対するデータの入出力制御を行う。ＨＤＤコントローラ２１６には、ハードディスクを複数接続することが可能である。なお、ハードディスクは、例えばＡＴＡ（AT Attachment）規格として、Parallel-ATAやSerial-ATAなどがあり、これらの規格に準拠してデータの入出力制御が実行される。
【００１６】
また、複数のハードディスクを接続してミラーリング処理などのＲＡＩＤ（Redundant Arrays of Inexpensive Disks）制御を行うことが可能である。ＨＤＤ（ハードディスク）２１７は不揮発性の大容量記憶装置であり、ファイルの保存や印刷データの一時格納場所として使用する。
ビデオ制御部２１８は、印刷部２１９とのコマンド／ステータスの通信、メモリ上に生成された印刷データの転送を行う。印刷部２１９は、印刷装置本体であり、主に前記ビデオ制御部２１８からのコマンド情報に従い、印刷データを紙に印刷する。
【００１７】
システムバス２２０は、制御バス及びデータバスと任意ブロック間のローカルなバス及び信号線を便宜的にまとめて表現したものである。
本実施形態は、ＨＤＤコントローラ２１６に接続されるハードディスクに対するバックグラウンド処理を例として説明する。
なお、本実施形態では、メインコントローラ２００の外部にＨＤＤコントローラが別チップ又はボードとして接続される場合を想定して説明を行うが、当然ながら、１チップやオンボードとしてメインコントローラと一体化した構成でも構わない。また、本実施形態では、ＨＤＤコントローラ２１６からみて、メインコントローラ２００はメイン装置とみなして、以下のメモリ制御を説明する。
【００１８】
図２は、図１に示したＨＤＤコントローラ２１６の内部構成を示すブロック図である。
図２において、ＣＰＵ３０１は、システム制御、ＲＡＩＤ制御、演算処理及びＡＴＡ規格のコマンド処理などを行う。メモリ制御部３０２は、各種メモリデバイスへの入出力制御やＤＭＡ（ダイレクト・メモリ・アクセス）制御を行う。ＲＯＭ（リード・オンリー・メモリ）３０３は、不揮発性メモリで、起動プログラムや各種モード設定値等の頻繁に変更しないデータを格納する。なお、ＲＯＭ３０３に替えて、Ｆｌａｓｈ−ＲＯＭを用いれば、上記各情報の書き換えも可能である。
【００１９】
ＲＡＭ（ランダム・リード・メモリ）３０４は、ＳＲＡＭやＤＤＲに代表される揮発性メモリである。プログラムの作業領域や一時的なデータの格納領域等の書き換えが必要な用途に用いられる。ＨＤＤ−ＩＦ３０７は、メインコントローラ２００に接続されるＨＤＤコントローラ２１６に対する入出力部を表している。
Ｄｅｖｉｃｅ−ＩＦ部３０５は、ＡＴＡ規格のデバイス側コマンド及びデータの入出力制御を行う。Ｈｏｓｔ−ＩＦ部３０８は、ＡＴＡ規格のホスト側コマンド及びデータの入出力制御を行い、１つ以上のハードディスク装置と接続される。
なお、ＲＡＩＤシステムを構築する場合には必要個数のハードディスク装置が接続（例えばミラーリング処理用に２個接続など）され、必要個数分のＨｏｓｔ制御回路が前記Ｈｏｓｔ−ＩＦ部３０８に含まれていてもよい。
割り込み制御部３０６は、各種割り込み信号のマスク及び出力制御を行う。システムバス３０９は、制御バス及びデータバスと任意ブロック間のローカルなバス及び信号線を便宜的にまとめて表現したものである。
【００２０】
図３は、本実施形態を示すディスクアレイシステムの構成を説明する図である。本例は、ハードディスク（ＨＤＤ）を２個用いたミラーリング処理（ＲＡＩＤ１）を行う構成例である。
ここで、ミラーリング処理とは、マスタＨＤＤの内容を常にバックアップＨＤＤにミラー（コピー）しておくことでマスタＨＤＤ故障時のデータ保証を確保する方法である。また、マスタＨＤＤ故障時には、バックアップＨＤＤがマスタＨＤＤに切り替わる事でシステムとしての機能が停止することはない。
図３において、ＨＤＤコントローラ４０２は、１つのＤｅｖｉｃｅ−ＩＦと２つのＨｏｓｔ−ＩＦを搭載している。ここで、Ｄｅｖｉｃｅ側にＳＡＴＡケーブル４０５を介してメインコントローラ４０１が、Ｈｏｓｔ側にＳＡＴＡケーブル４０６，４０７を介して２個のＨＤＤ４０３及びＨＤＤ４０４を接続することでミラーリングシステムを構成している。
【００２１】
メインコントローラ４０１からＨＤＤコントローラ４０２をみると１個のＨＤＤとして認識され、通常アクセス時に、メインコントローラ４０１がミラーリング処理を意識することはない。
今、マスタとして機能するＨＤＤ４０３が故障した場合、バックアップであるＨＤＤ４０４がマスタに切り替わり、システム処理は正常動作として継続される場合を想定する。
【００２２】
このような状態に遷移した場合には、ミラーリング処理の正規シーケンスが崩れ、現在のマスタであるＨＤＤ４０４のみの片肺状態でディスクアクセス処理を継続している状態となる。この状態をデグレード状態と呼ぶ。
次に、故障したＨＤＤ４０３を新しいＨＤＤ４０８に交換することで、現在マスタであるＨＤＤ４０４の内容を新しいＨＤＤ４０８にコピー処理を行い、ミラーリングシステムとして正常状態に復旧する処理を行う。以下、この状態をリビルド状態と呼ぶ。このリビルド状態の期間中もミラーリングシステムとしては、まだ片肺状態（異常状態）である。
ここで、リビルド処理は、メインコントローラ４０１の意識しないバックグラウンド処理であって、マスタＨＤＤ４０４からリードしたデータをバックアップＨＤＤ４０８へライトするコピー処理４１０（破線矢印）を実行している。
【００２３】
従って、リビルド処理中は、メインコントローラ４０１からのメイン（通常）処理４０９（実線矢印）とリビルド処理のリードアクセス（破線矢印のコピー処理４１０に対応する）がマスタＨＤＤ４０４に対して競合する場合がある。この場合、システムとして、競合するそれぞれのアクセス処理を最適化しないと、メイン処理（印刷処理）のパフォーマンスが低下することを意味する。
本実施形態では、画像形成装置が要求するメイン処理のパフォーマンスを満たし、且つバックグラウンド処理のパフォーマンスも考慮し、システム全体として処理の最適化を可能とする処理を説明する。
【００２４】
図４は、本実施形態を示すメモリ制御装置のシーケンスを説明するタイミングチャートである。本例は、図３に示したＨＤＤコントローラ４０２によるバックグラウンドで実行されるリビルト処理と、メイン処理との振り分ける一例を示している。なお、図４において、バックグラウンド処理をバック処理と略記している。また、本実施形態は、ＨＤＤコントローラ４０２がメイン処理と、バックグラウンド処理とに基づくＨＤＤメモリアクセス要求を調停しながら、並列的にメモリアクセスを制御する例である。
【００２５】
また、黒矩形１０１はメイン処理の単位、斜線矩形１０２はバックグラウンド処理の単位を示す。本実施形態では、ＨＤＤに対するバックグランド処理を例としているため、各処理単位は１コマンド処理単位１１７となる。なお、ハードディスクの規格がＳＡＴＡであれば、１コマンドの最大サイズは３２ＭＢとなる。
当然ながら、本発明において、処理単位とは、ＨＤＤの絡むシステムのみに限定するものではなく、処理一般における処理単位を含む。
【００２６】
図４の（ａ）に示すパターンＰ１は、バックグラウンド処理中にメイン処理が発生した状況で、且つ、バックグラウンド処理単位が最大効率で処理可能な値で実行しているパターンを示している。
すなわち、この場合メイン処理のパフォーマンスの事は考慮していない。従って、メイン処理がバックグラウンド処理にぶつかる箇所で妨害されて、斑点矩形１０８で示すロスタイムが発生してしまう。
ここで、バックグラウンド処理が最大効率で処理可能な単位を最速値単位と呼ぶ。
【００２７】
図４の（ｂ）に示すパターンＰ２では、バックグラウンド処理がメイン処理を妨害するロスタイムを低減し、メイン処理の要求するパフォーマンスを満たすバックグラウンド処理の単位で実行しているパターンを示している。この場合の処理単位を最適値単位１０３と呼ぶ。この場合には、メイン処理の開始点Ｔ１で若干のロスタイムが発生しているが、バックグラウンド処理とぶつかっても短い時間でメイン処理にアクセス権が渡されるため、パターンＰ１と比較するとメイン処理は効率良く処理される。
【００２８】
一方、バックグラウンド処理は、最適値単位での処理であるため、１回の処理が細切れとなりなかなか処理が終わらない状況である事がわかる。すなわち、バックグラウンド処理の開始点Ｔ０とすると、図４の（ａ）に示すパターンＰ１では、タイミングＴ２で処理を完了しているが、図４の（ｂ）パターンＰ２では、さらに時間を要していることを示している。
【００２９】
前述したようにリビルド処理の期間は、正常状態への修復処理中であり、まだ異常状態であることに変わりはない。すなわち、もしもこの期間にマスタＨＤＤ４０４が故障した場合には、もはや修復不能となる危険ゾーンでもある。
従って、リビルド処理はなるべく最短で処理を完了することが望ましい。最近のＨＤＤサイズは１ＴＢ級である場合もあり、最適値単位（サイズ）が小さい値であると、リビルド処理完了までにかなりの時間を要する事になる。
【００３０】
さらに、図４の（ｃ）に示すパターンＰ３では、バックスラウンド処理を最適値単位で処理を行い、メイン処理のアクセス間隔が開いた場合の例である。図４の（ｂ）に示すパターンＰ２と比較して、メインコントローラ４０１からのアクセス間隔によっては、バックグラウンド処理とぶつかる箇所が増えてパフォーマンスが低下していることが分かる。
実際の処理では、メインコントローラ４０１側での処理の都合により、パターンＰ２やパターンＰ３のように規則的なアクセス間隔で来る事は稀で、ある程度のかたまりでのアクセス発生ではあるが、その間隔は不規則である事が一般的である。
以上の事を考慮して、本発明の特徴を示すのが図４の（ｄ）に示すパターンＰ４である。
【００３１】
図４の（ｄ）に示すパターンＰ４では、メイン処理を開始するタイミングＴ１からみると、先頭の部分でバックグラウンド処理との衝突があるだけで、後は最速で処理が完了している事が分かる。つまり、ＨＤＤコントローラ４０２は、メイン処理の状態を監視して処理単位を第１の処理単位と第２の処理単位に可変設定している。なお、メイン処理のアクセス間隔は、図４の（ｃ）に示すパターンＰ３と同じにしている。
【００３２】
先頭のメイン処理アクセス１０９完了後、予め設定されているＷａｉｔ期間１１０だけバックグラウンド処理を遅延させる。その期間に再びメイン処理が来た場合には、Ｗａｉｔカウントをクリアして現在のメイン処理を行う。
以下同様に、図４の（ｄ）に示すパターンＰ４ではメイン処理単位１１１の直前までＷａｉｔ期間内に次のメイン処理アクセスが発生しているため、バックグラウンド処理が割り込めない。
メインコントローラ４０１側での１つの処理区切りがメイン処理アクセス１０９〜１１１をアクセス群とする時、最後のメイン処理アクセス１１１の完了直後からのＷａｉｔ期間は、予め設定された所定の時間までカウントされる事になる。その後、遅延させられていたバックグラウンド処理が再開される。
ここで、再開されたバックグラウンド処理は、まず最適値単位１１２で処理が開始される。以後、予め設定されている最適値単位１１２での処理をＮ回カウントし、その後の処理は最速値単位１１４で処理を継続する。本実施形態では、最適値単位１１２を第１の処理単位とし、最速値単位１１４を第２の処理単位として説明を行う。
バックグラウンド処理の開始点のタイミングをＴ０とした場合、図４の（ｄ）に示すパターンＰ４では、終了点のタイミングＴ３でバックグラウンド処理が完了しているが、図４の（ｃ）に示すパターンＰ３では常に最適値単位での処理であるため、処理完了までにかなりの時間を要する。なお、開始点のタイミングＴ０のバックグラウンド処理は最適値単位１１２で処理を開始し、Ｎ回カウント１１６した後に最速値単位１１４で処理を継続するシーケンスとなる。
【００３３】
ここでは図示しないが、最適値単位１１２でのバックグラウンド処理カウント中にメイン処理が割り込んだ場合には、現在のバックグラウンド処理単位が完了した時点でメイン処理を開始し、再び前述のシーケンス（Ｗａｉｔ→Ｎ回）を繰り返す事になる。
また、メイン処理単位のアクセス間隔がＷａｉｔ期間より長い場合には、最適値単位１１２及び最速値単位１１４でのバックグラウンド処理が割り込むケースも有りえる。
上述したように、メインコントローラ４０１からＨＤＤコントローラ４０２は、ハードディスク装置としかみえず、逆にＨＤＤコントローラ４０２側からはメインコントローラ４０１側の処理の都合、すなわち、処理の区切りを知ることはできない。
従って、ＨＤＤコントローラ４０２は、メイン処理のアクセス群が何時のタイミングで、且つどのような間隔でアクセスされるのかを予想することもできない。
本実施形態では、メイン処理のアクセス間に働くＷａｉｔ期間１１０によって、メインコントローラ４０１からのメイン処理アクセス群の妨げを最小限に抑え、アクセス群である各メイン処理アクセス間の間隔が広く空く場合（Ｗａｉｔ期間以上）には、その間にバックグラウンド処理をＮ回の最適値単位１１２から最速値単位１１４の処理として挿入できる構成とすることで、メインコントローラ４０１の処理効率（要求されるパフォーマンス）を低下させることなく、且つバックグラウンド処理効率も最適化する事が可能となる。
【００３４】
ここで、Ｗａｉｔ期間及び最適値単位１１２のカウント値Ｎにおいて、制御の必要がない場合には、Ｗａｉｔ＝０及びＮ＝０の値を設定する事でシーケンスを一部省略又は削除することも可能である。
つまり、（Ｗａｉｔ、Ｎ）＝（０、０）と設定した場合には、図４の（ａ）に示すパターンＰ１に、（０、Ｎ）と設定した場合には、図４の（ｂ）に示すパターンＰ２又は図４の（ｃ）に示すパターンＰ３となる。なお、後者では、最適値単位１１２をＮ回カウントする間にメイン処理アクセスがない場合には、それ以後を最速値単位１１４で処理を継続することになる。
【００３５】
図５は、本実施形態を示すメイン装置におけるパラメータ設定手順の一例を示すフローチャートである。本例は、バックグラウンド処理に対する最適値、最速値、Ｗａｉｔ期間、最適値のカウント値ＮのパラメータをＨＤＤコントローラ２１６に設定する処理例である。なお、Ｓ７０１〜Ｓ７０５は各ステップを示し、各ステップは、ＣＰＵ２０１がＲＯＭ２０３からロードする制御プログラムを実行することで実現される。
【００３６】
Ｓ７０１で、ＣＰＵ２０１は、ＲＡＭ２０４上にディスク制御に必要なパラメータを準備したら、Ｓ７０２へ進む。ここで、パラメータとは、バックグラウンド処理に対する最適値、最速値、Ｗａｉｔ期間、最適値のカウント値Ｎが含まれる。
そして、Ｓ７０２で、ＣＰＵ２０１はＨＤＤコントローラ４０２のＣＰＵ３０１に初期設定コマンドを発行する。ここで、ＨＤＤコントローラ４０２側のＣＰＵ３０１は発行された初期設定コマンドに従いＲＡＭ３０４で管理される各パラメータに初期値を設定する。
【００３７】
次に、Ｓ７０３で、ＣＰＵ２０１は各パラメータのステータスを確認して、Ｓ７０４で、ＣＰＵ２０１は各パラメータに設定された内容でＯＫかどうかを判断する。ここで、ＣＰＵ２０１が設定値の確認の結果、期待値と異なると判断した場合は、Ｓ７０５へ進む。そして、Ｓ７０５で、リトライなど所定のエラー処理を実行して、本処理を終了する。
一方、Ｓ７０４で、各パラメータに対する設定値に問題がないとＣＰＵ２０１が判断した場合には、本処理を終了して、スタンバイ状態に移行してシステムの処理を開始する。
なお、各パラメータの設定は、バックグラウンド処理実行中以外は任意のタイミングで変更しても構わない。
【００３８】
以下、図６及び図７を用いて、本実施形態におけるメモリ制御処理を説明する。
図６は、本実施形態を示すメモリ制御装置における処理手順の一例を示すフローチャートである。本例は、ＨＤＤコントローラ２１６が実行するリビルド処理に代表されるバックグラウンド処理例であって、メインコントローラ２００からのメイン処理アクセスがない状態での処理例である。なお、Ｓ８０１〜Ｓ８０７は各ステップを示し、各ステップはＣＰＵ３０１がＲＯＭ３０３に記憶された制御プログラムをＲＡＭ３０４にロードして実行することで実現される。なお、以下の説明において、バックグラウンド処理を図中では、Ｂａｃｋ処理と記し、メイン処理をＭａｉｎ処理と記す場合がある。
【００３９】
まず、Ｓ８０１で、ＣＰＵ３０１はＲＡＭ３０４で管理する最適値単位１１２での処理をカウントするためのカウンタｎをｎ＝０に初期化する。その後、Ｓ８０２において、ＣＰＵ３０１は最適値単位１１２でバックグラウンド処理を開始する。
次に、Ｓ８０３で、ＣＰＵ３０１はバックグラウンド処理の処理単位が完了する毎に、初期設定された処理回数値Ｎとカウンタｎとを比較し、ｎ＝Ｎ回に達しているかどうかを判断する。ここで、ｎ＝Ｎ回に達していないとＣＰＵ３０１が判断した場合は、Ｓ８０４で、ＣＰＵ３０１はカウンタｎをｎ＋１にカウントアップして、Ｓ８０３へ戻る。
【００４０】
一方、Ｓ８０３で、比較結果、ｎ＝Ｎ回に達しているとＣＰＵ３０１が判断した場合には、Ｓ８０５で、ＣＰＵ３０１は処理単位を最適値単位１１２から最速値単位１１４に切り替え、Ｓ８０６で、バックグラウンドの処理を継続する。
そして、Ｓ８０７で、ＣＰＵ３０１は最速値単位１１４でバックグラウンド処理を完了したら、本処理を終了する。なお、Ｓ８０６の（＊）は、図７のメイン処理アクセスが発生するケースへと接続されることを示している。
【００４１】
図７は、本実施形態を示すメモリ制御装置における処理手順の一例を示すフローチャートである。本例は、ＨＤＤコントローラ２１６が実行するリビルド処理に代表されるバックグラウンド処理例であって、メインコントローラ２００からのメイン処理アクセスが発生した状態での処理例である。なお、Ｓ９０１〜Ｓ９１９は各ステップを示し、各ステップはＣＰＵ３０１がＲＯＭ３０３に記憶された制御プログラムをＲＡＭ３０４にロードして実行することで実現される。
【００４２】
Ｓ９０１で、図６に示したバックグラウンド処理中に、Ｓ９０２で、メイン処理アクセスが発生した場合、Ｓ９０３で、ＣＰＵ３０１は、現在実行中のバックグラウンド処理単位が完了するのを待ち、バックグラウンド処理単位が完了した後に、Ｓ９０４へ進む。そして、Ｓ９０４で、ＣＰＵ３０１は、メインコントローラ２００のＣＰＵ２０１から要求されるメイン処理を開始する。
【００４３】
そして、Ｓ９０５で、メイン処理単位が完了したとＣＰＵ３０１が判断した後、Ｓ９０６で、ＣＰＵ３０１はＷａｉｔ時間をｔ＝０に初期化し、Ｓ９０７へ進む。そして、Ｓ９０７で、ＣＰＵ３０１は予め設定されているＷａｉｔ時間Ｔまでの時間計測を図示しないカウンタにより開始する。
そして、Ｓ９０８で、Ｗａｉｔ時間ｔ＝Ｔ（所定時間）の計測を完了したとＣＰＵ３０１が判断した場合、Ｓ９１０へ進み、Ｗａｉｔ時間ｔ＝Ｔの計測を完了していないとＣＰＵ３０１が判断した場合は、Ｓ９０９へ進む。
【００４４】
そして、Ｓ９０９で、次のメイン処理アクセスが発生したかどうかをＣＰＵ３０１が判断する。ここで、次のメイン処理アクセスが発生したとＣＰＵ３０１が判断した場合は、Ｓ９０４へ戻り、Ｓ９０４〜Ｓ９０８までの一連のメイン処理を繰り返す。つまり、ＣＰＵ３０１は、所定時間の経過を判定しながら、メイン処理を継続するか、バックグラウンド処理を再開するかを制御している。
一方、Ｓ９０９で、次のメイン処理アクセスが発生していないとＣＰＵ３０１が判断した場合は、Ｓ９０８へ戻る。
【００４５】
Ｓ９０８で、Ｗａｉｔ時間ｔ＝Ｔまで測定を完了しているとＣＰＵ３０１が判断した場合は、Ｓ９１０へ進む。
そして、Ｓ９１０で、ＣＰＵ３０１はバックグラウンド処理の最適値単位１１２の処理回数カウンタｎを０に初期化し、Ｓ９１１で、ＣＰＵ３０１は予め設定されている最適値単位１１２でバックグラウンド処理を継続する。継続されたバンクグラウンド処理は、Ｓ９１２で、バックグラウンド処理単位がＮ回完了したとＣＰＵ３０１が判断するまで、Ｓ９１３で、ＣＰＵ３０１が最適値単位１１２毎に処理回数カウンタｎがｎ＋１に加算される。
【００４６】
そして、Ｓ９１４で、ＣＰＵ３０１が予め設定している上限回数Ｎと比較して、カウンタｎがＮ回未満の期間にメイン処理アクセスが発生しているかどうかを判断する。ここで、カウンタｎがＮ回未満の期間にメイン処理アクセスが発生したとＣＰＵ３０１が判断した場合は、Ｓ９０４へ戻り、メイン処理を開始する。
一方、Ｓ９１４で、カウンタｎがＮ回未満の期間にメイン処理アクセスが発生していないとＣＰＵ３０１が判断した場合は、Ｓ９１２へ戻る。
また、Ｓ９１２で、カウンタｎがＮ回に達したとＣＰＵ３０１が判断した場合には、Ｓ９１５へ進み、予め設定されている最速値単位１１４に切り換えて、Ｓ９１６で、ＣＰＵ３０１は残りのバックグラウンド処理を継続する。
【００４７】
以後、Ｓ９１７で、ＣＰＵ３０１はメイン処理アクセスが発生しているかどうかを判断する。ここで、メイン処理アクセスが発生しているとＣＰＵ３０１が判断した場合は、Ｓ９０４へ戻り、メイン処理を開始する。
一方、Ｓ９１７で、メイン処理アクセスが発生していないとＣＰＵ３０１が判断した場合は、ＣＰＵ３０１はバックグラウンド処理を最速値単位１１４で実行する。そして、Ｓ９１８で、最速値単位１１４でバックグラウンド処理を完了しているとＣＰＵ３０１が判断した場合は、Ｓ９１９へ進む。
そして、Ｓ９１９で、全バックグラウンド処理が完了しているかどうかをＣＰＵ３０１が判断する。ここで、全バックグラウンド処理が完了していないと判断した場合は、Ｓ９１７へ戻り、バックグランド処理が完了するまでの期間は、その処理単位毎にメイン処理アクセスの発生を監視する。そして、メイン処理アクセスが発生したとＣＰＵ３０１が判断した場合には、再び、Ｓ９０４に戻り、今までの処理シーケンスを繰り返す。
【００４８】
一方、Ｓ９１９で、全てのバックグラウンド処理が完了したとＣＰＵ３０１が判断した場合は、本処理を終了する。
以上、ハードディスク装置を備えるシステムについて本発明の最良の実施形態を説明したが、記憶装置としてハードディスクに限定するものではない。ハードディスク以外の他の記憶装置を備えたシステムにおいて、主たるメイン処理とバックグラウンド処理を行う任意のシステムにも本発明を適応するこが可能である。ここで、ハードディスク以外の記憶装置の適用例としては、Solid State Drive（ＳＳＤ）が含まれる。
本発明の各工程は、ネットワーク又は各種記憶媒体を介して取得したソフトウエア（プログラム）をパソコン（コンピュータ）等の処理装置（ＣＰＵ、プロセッサ）にて実行することでも実現できる。
【００４９】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。
【符号の説明】
【００５０】
１、２  画像処理装置
【図１】
2014089757.tif 000003
【図２】
2014089757.tif 000004
【図３】
2014089757.tif 000005
【図４】
2014089757.tif 000006
【図５】
2014089757.tif 000007
【図６】
2014089757.tif 000008
【図７】
2014089757.tif 000009