(57)【要約】  制御部８が、コマンドが実行されて最初にディスク装置３にアクセスする初回アクセスにあたり、ディスク装置３へのアクセスが完了する時間を設定した第１のタイムアウト値が計数されるまでディスク装置３からのアクセス応答待ちを行い、初回アクセス以降のリトライアクセスにおいては、第１のタイムアウト値より大きい、アクセスエラー原因の特定に必要な時間を設定した第２のタイムアウト値が計数されるまでディスク装置３からのアクセス応答待ちを行う。
2010044224.tif 000002
【特許請求の範囲】
【請求項１】
実行されたプログラムのコマンド内容に応じて記憶媒体に対してアクセスし、前記記憶媒体からのアクセス応答を待つ間にアクセスエラーが発生すると、前記エラーの復旧処理を実行した後にリトライアクセスを行う制御部を備えた情報記憶装置において、
前記制御部は、
コマンドが実行されて最初に前記記憶媒体にアクセスする初回アクセスにあたり、前記記憶媒体へのアクセスが完了する時間を設定した第１のタイムアウト値が計数されるまで前記記憶媒体からのアクセス応答待ちを行い、
前記初回アクセス以降のリトライアクセスにおいては、前記第１のタイムアウト値より大きい、アクセスエラー原因の特定に必要な時間を設定した第２のタイムアウト値が計数されるまで前記記憶媒体からのアクセス応答待ちを行うことを特徴とする情報記憶装置。
【請求項２】
記憶媒体を制御し、第１のタイムアウト値が計数されるまでの間及び第２のタイムアウト値が計数されるまでの間に制御部による記憶媒体へのアクセスにエラーが発生した場合、そのエラー原因を特定する処理を行う記憶媒体制御部を備え、
前記制御部は、前記記憶媒体制御部で特定されたエラー原因に応じた復旧処理を実行することを特徴とする請求項１記載の情報記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記録媒体に対する情報の読み書きが可能な情報記憶装置に関するものである。
【背景技術】
【０００２】
従来の情報記憶装置、例えばハードディスク装置（以下、ＨＤＤと称す）においては、アクセスエラー原因を特定するために十分な時間（データ読み出し又はデータ書き込みの場合、１０秒程度）をアクセスにおけるタイムアウト値として使用する。これにより、ＨＤＤアクセスの際にエラーが発生すると、タイムアウトされるまでにエラー原因が特定され、このエラー原因に応じた復旧処理が実行される。【０００３】
なお、上記タイムアウト値はＨＤＤが実行するコマンドによって異なる場合もあるが、ＨＤＤがコマンド（Ｒｅｓｅｔ命令／Ｒｅａｄ命令／Ｗｒｉｔｅ命令など）を実行して、ＣＰＵが最初にＨＤＤにアクセスする初回アクセスと、初回アクセスで発生したエラーの復旧後に実行されるリトライアクセスとでは、同じコマンドによるアクセスであるため、一般的にタイムアウト値も同じ値が使用されている。なお、ＨＤＤ側で実行されるコマンド内容に応じてＨＤＤに対するアクセスの種類が決定され、アクセスの種類に応じてタイムアウト値が異なる。【０００４】
また、特許文献１には、ディスクアレイの状態に応じて互いに異なるタイムアウト値を利用するディスクアレイの制御装置が開示されている。この制御装置では、ディスクアレイが正常に動作している場合、ディスクアレイへのアクセスに第１のタイムアウト値を使用し、ディスクアレイのうちの１台が故障している縮退時には第１のタイムアウト値より小さい第２のタイムアウト値、すなわち正常時よりも短い時間でアクセスをタイムアウトする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３２８４９６３号公報
【発明の概要】
【０００６】
従来の情報記憶装置は、初回アクセス時とリトライアクセス時とで同じタイムアウト時間が使用されていたので、タイムアウトを伴うアクセスエラーからの復旧に長時間を要し、当該情報記憶装置を使用する情報処理システム全体の応答速度を低下させる可能性があるという課題があった。
【０００７】
上記課題を具体的に説明する。
図４は、従来のＨＤＤアクセス処理の流れを示すフローチャートであり、ＨＤＤに対するデータ読み出し又はデータ書き込みの場合を示している。ここで、アクセスにおけるタイムアウト値は、エラー原因を特定するために十分な時間である１０秒と仮定する。また、エラーが発生せずにアクセスが成功した場合の所要時間を０．１秒とし、復旧処理の所要時間を０．５秒と仮定する。
【０００８】
先ず、ＨＤＤがコマンドを実行してＣＰＵがＨＤＤに対してアクセスすると（ステップＳＴ１００）、上記タイムアウト値の計数が開始され、ＨＤＤからの応答を待ってアクセス結果が判断される（ステップＳＴ１０１）。このとき、アクセスエラーが発生すると、ＨＤＤのディスク制御部が、タイムアウト（エラー原因特定の所要時間に相当）されるまでにそのエラー原因の特定処理を実行する。これによって特定されたエラー原因は、エラー原因レポートとしてディスク制御部からＣＰＵ側へ通知される。
【０００９】
ＣＰＵは、エラー原因レポートで特定されたＨＤＤアクセスのエラー原因や、これまでのリトライ回数等を考慮してＨＤＤアクセスをリトライすべきか否かを判定する（ステップＳＴ１０２）。リトライする場合、ＣＰＵは、エラー原因に応じた復旧処理を実行（ステップＳＴ１０３）した後、ステップＳＴ１００に戻って復旧後のアクセスを実行する。
【００１０】
一方、ステップＳＴ１０１において、エラーが発生せずにＨＤＤから応答があり、アクセスに成功した場合（ステップＳＴ１０４）、その所要時間は０．１秒となる。また、エラーが発生してからエラー原因が特定され、このエラーの復旧処理後に再びステップＳＴ１０１に移行して、エラーが発生せずにＨＤＤへのアクセスが成功した場合、この所要時間は１０．６秒となる。
【００１１】
ステップＳＴ１０２でリトライ不要とした場合、ＣＰＵは、アクセスエラーとして処理を終了する（ステップＳＴ１０５）。なお、この結果が得られるまでの所要時間は、エラー原因の特定に要した１０秒である。また、１回のリトライアクセスが実行され、復旧処理後にステップＳＴ１０１でエラーが発生し、このエラー原因の特定処理を行った後、再びステップＳＴ１０２でリトライ不要になると、所要時間は２０．５秒となる。
【００１２】
このようにタイムアウトを伴うアクセスエラーからの復旧が最低でも１０秒を要し、リトライアクセスにおいてもタイムアウトが発生すると、２０秒以上応答ができない。また、タイムアウト時間を短く設定すると復旧処理や応答は速くなるが、エラー原因が特定できなくなる。
【００１３】
また、特許文献１では、ディスクアレイの状態（正常状態又は縮退状態）に応じて、第１のタイムアウト値又は第２のタイムアウト値に固定されるため、上述と同様の不具合が生じる。
【００１４】
この発明は、上記のような課題を解決するためになされたもので、タイムアウトを伴うアクセスエラーからの復旧に要する時間を短縮化でき、エラー発生時にエラー原因を特定することができる情報記憶装置を得ることを目的とする。
【００１５】
この発明に係る情報記憶装置は、実行されたプログラムのコマンド内容に応じて記憶媒体に対してアクセスし、前記記憶媒体からのアクセス応答を待つ間にアクセスエラーが発生すると、前記エラーの復旧処理を実行した後にリトライアクセスを行う制御部を備えた情報記憶装置において、前記制御部は、コマンドが実行されて最初に前記記憶媒体にアクセスする初回アクセスにあたり、前記記憶媒体へのアクセスが完了する時間を設定した第１のタイムアウト値が計数されるまで前記記憶媒体からのアクセス応答待ちを行い、前記初回アクセス以降のリトライアクセスにおいては、前記第１のタイムアウト値より大きい、アクセスエラー原因の特定に必要な時間を設定した第２のタイムアウト値が計数されるまで前記記憶媒体からのアクセス応答待ちを行うことを特徴とするものである。
【００１６】
この発明によれば、制御部が、コマンドが実行されて最初に記憶媒体に対してアクセスする初回アクセスにあたり、記憶媒体へのアクセスが完了する時間を設定した第１のタイムアウト値が計数されるまで記憶媒体からのアクセス応答待ちを行い、初回アクセス以降のリトライアクセスにおいては、第１のタイムアウト値より大きい、アクセスエラー原因の特定に必要な時間を設定した第２のタイムアウト値が計数されるまで記憶媒体からのアクセス応答待ちを行うので、初回アクセスとそれ以降のリトライアクセスの双方において同じタイムアウト時間が設定される場合と比較して、タイムアウトを伴うアクセスエラーからの復旧に要する時間を短縮化でき、エラー発生時にエラー原因を特定することができるという効果がある。
【図面の簡単な説明】
【００１７】
【図１】この発明の実施の形態１による情報記憶装置の構成を示すブロック図である。
【図２】図１中のＣＰＵ及びメモリで実現される機能ブロックを示す図である。
【図３】実施の形態１の情報記憶装置による動作の流れを示すフローチャートである。
【図４】従来のＨＤＤアクセス処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態１．
この発明による情報記憶装置は、情報処理に伴って記録媒体に情報の読み書きを行う機能を有する装置であれば適用可能であり、例えば車載情報機器、ナビゲーション装置、パーソナルコンピュータ、携帯電話端末、ＰＤＡ（Personal Digital Assistants）、デジタルカメラ、データ記録再生装置、ゲーム機器等に適用することができる。また、記録媒体としては、ハードディスク、ＤＶＤ、ＣＤ、メモリカード等が考えられる。
【００１９】
図１は、この発明の実施の形態１による情報記憶装置の構成を示すブロック図であり、ハードディスクなどのディスク装置に情報の読み書きを行う装置を例に示している。図１において、実施の形態１による情報記憶装置１は、入力されたコマンドを実行してディスク装置３にアクセスするＣＰＵ２、ディスク装置（記憶媒体）３、ＣＰＵ２とディスク装置３との間のインタフェースであるＩ／Ｏ（Input/Output）部４、及び、ＣＰＵ２が実行するプログラムや情報処理で生じたデータを保持するＲＯＭやＲＡＭなどのメモリ５を備える。
【００２０】
また、ディスク装置３は、記憶媒体となるディスク６、ディスク６を制御するディスク制御部（記憶媒体制御部）７を備える。ディスク制御部７が、ディスク６におけるアクセスエラーエラーの原因特定処理を実行する。アクセスエラーエラー原因としては、例えばディスクのセクタ不良、パスワードロック、チェックコードのミスマッチなどが挙げられる。
【００２１】
図２は、図１中のＣＰＵ及びメモリで実現される機能ブロックを示す図である。図２において、制御部８は、プログラム中のコマンド実行によりディスク装置３にアクセスするとともに、ディスク装置３側からのエラー原因レポートでエラー内容を特定したり、エラー原因に応じた復旧処理を実行する。
【００２２】
タイマ手段９は、制御部８によるディスク装置３へのアクセスにおいて、タイムアウト値テーブル１０に登録されたタイムアウト値のうち、制御部８から指示されたタイムアウト値を計数する。
【００２３】
タイムアウト値テーブル１０は、メモリ５に格納されるテーブルデータであり、ディスク装置３がコマンド（Ｒｅｓｅｔ命令／Ｒｅａｄ命令／Ｗｒｉｔｅ命令など）を実行し、ＣＰＵ２が最初にディスク装置３にアクセスする初回アクセスで使用される第１のタイムアウト値と、初回アクセスで発生したエラーの復旧後に実行されるリトライアクセスで使用される第２のタイムアウト値が登録される。
【００２４】
第１のタイムアウト値としては、第２のタイムアウト値よりも短い時間を設定するが、少なくとも制御部８によるディスク装置３へのアクセスが完了する時間（アクセス指令を出力してからアクセス応答があり、アクセス内容の処理が完了するまでの時間）とする。また、第２のタイムアウト値はアクセスエラー原因を特定するために十分な時間であればよく、ディスク制御部７がアクセスエラー原因を特定するのに必要な時間が設定される。
【００２５】
なお、制御部８及びタイマ手段９は、例えばディスク装置３へのアクセス処理に関するプログラムモジュールをＣＰＵ２が実行することにより、ソフトウエアとハードウエアとが協働した具体的な手段として実現される。
【００２６】
次に動作について説明する。
図３は、実施の形態１の情報記憶装置による動作の流れを示すフローチャートである。
ここでは、初回アクセスにおける第１のタイムアウト値を１秒とし、リトライアクセスでは、アクセスエラーが発生して、ディスク装置３のディスク制御部７がそのエラー原因を特定するために十分な時間である１０秒を第２のタイムアウト値として使用する。また、エラーが発生せずにアクセスが成功した場合の所要時間を０．１秒とし、ディスク装置３側で特定されたエラー原因に応じた復旧処理の所要時間を０．５秒と仮定する。
【００２７】
先ず、制御部８が、コマンド内容に応じてディスク装置３に初回アクセスするためにアクセス指令をディスク装置３へ出力する（ステップＳＴ１）。タイマ手段９は、制御部８から初回アクセスにおける第１のタイムアウト値（１秒）が指示され、タイムアウト値テーブル１０に登録される第１のタイムアウト値の計数を開始する。
【００２８】
第１のタイムアウト値が経過するまでの間にディスク装置３からの応答を待ってアクセス結果が判断される（ステップＳＴ２）。このとき、アクセスエラーが発生すると、ディスク装置３内のディスク制御部７が、タイムアウトされるまでエラー原因の特定処理を実行し、特定したエラー原因をＣＰＵ２側へレポートする。
【００２９】
ＣＰＵ２の制御部８は、ディスク装置３からのエラー原因レポートに基づいて特定されたエラー内容からアクセスエラーが復旧可能か否かを判定する（ステップＳＴ３）。例えば、エラー原因がパスワードロックである場合、パスワード解除試行してからのリトライアクセスで復旧が可能である。また、エラー原因がチェックコードの不一致や転送エラーである場合、動作モードを再設定してからのリトライアクセスで復旧できる。なお、パラメータ指定ミスの場合は、復旧不可である。
【００３０】
ステップＳＴ４において、制御部８は、ステップＳＴ２でエラー原因が特定されずに第１のタイムアウト値が経過した場合、予め設定された内容の復旧処理を実行し、ステップＳＴ３でエラー原因が特定されて復旧可能と判断した場合は、当該エラー原因に応じた復旧処理を実行する。なお、予め設定された内容の復旧処理としては、上述した復旧可能なエラー原因に対する処理などが考えられる。
【００３１】
復旧処理後、制御部８は、リトライアクセスを実行するためにアクセス指令（アクセス要求）をディスク装置３へ出力する（ステップＳＴ５）。タイマ手段９は、制御部８からリトライアクセスにおける第２のタイムアウト値（１０秒）が指示され、タイムアウト値テーブル１０に登録される第２のタイムアウト値の計数を開始する。
【００３２】
第２のタイムアウト値が経過するまでの間にディスク装置３からの応答を待ってアクセス結果が判断される（ステップＳＴ６）。このとき、さらにアクセスエラーが発生した場合、ディスク装置３内のディスク制御部７が、タイムアウトされるまでエラー原因の特定処理を実行し、特定したエラー原因をＣＰＵ２側へレポートする。
【００３３】
制御部８は、リトライアクセスにおいて、ディスク装置３側からエラー原因レポートを受けると、当該エラー原因レポートによって特定されたエラーでアクセスが失敗したことを通知して処理を終了する（ステップＳＴ７）。この結果が得られるまでの所要時間は、リトライアクセスにおけるタイムアウト値（１０秒）が経過した場合、これに初回アクセス時のタイムアウト時間（１秒）及び復旧処理の所要時間（０．５秒）を合わせた１１．５秒である。なお、ステップＳＴ３で復旧不可能と判定された場合は、第１のタイムアウト時間（１秒）でエラーを応答することができる。
【００３４】
一方、ステップＳＴ６において、第２のタイムアウト値が経過してしまった場合、制御部８は、アクセスのタイムアウトが発生したものと判断して処理を終了する（ステップＳＴ８）。この場合の所要時間は、第１のタイムアウト時間（１秒）、復旧処理の所要時間（０．５秒）及び第２のタイムアウト時間（１０秒）を合わせた１１．５秒である。
【００３５】
また、ステップＳＴ６においてエラーが発生せずにアクセスに成功した場合、制御部８は、当該アクセスに応じて出力されたデータ等を用いた処理を実行する（ステップＳＴ９）。この場合の所要時間は、第１のタイムアウト時間（１秒）、復旧処理の所要時間（０．５秒）及びアクセス完了までの時間（０．１秒）を合わせた１．６秒である。また、ステップＳＴ２において、初回アクセス時にエラーが発生せず、アクセスに成功すれば、０．１秒で処理が完了する。
【００３６】
このように、初回アクセスにおける第１のタイムアウト値を極端に小さく設定しているため、ディスク装置３へのアクセスにエラーが発生しても、従来よりも短時間で復旧処理が実行されてリトライアクセスに移行でき、総所要時間を短縮することができる。例えば、初回アクセスがタイムアウトして復旧処理後のリトライアクセスが成功した場合、図３の場合は１．６秒で処理を終えることができるが、従来では初回アクセスのタイムアウトが１０秒となるため、リトライアクセスに成功しても１０．６秒かかってしまう。
【００３７】
なお、第１のタイムアウト時間が極端に短いので、ディスク制御部７がエラー原因を特定するために十分な時間がなく、エラー原因を特定できない場合がある。しかしながら、リトライアクセスにおける第２のタイムアウト値としてエラー原因特定に十分な時間を設定しているので、最終的にはエラー原因を特定することができる。
【００３８】
以上のように、この実施の形態１によれば、実行されたプログラムのコマンド内容に応じてディスク装置３に対してアクセスし、ディスク装置３からのアクセス応答を待つ間にアクセスエラーが発生すると、このエラーの復旧処理を実行した後にリトライアクセスを行う制御部８を備えた情報記憶装置において、制御部８が、コマンドが実行されて最初にディスク装置３にアクセスする初回アクセスにあたり、ディスク装置３へのアクセスが完了する時間を設定した第１のタイムアウト値が計数されるまでディスク装置３からのアクセス応答待ちを行い、初回アクセス以降のリトライアクセスにおいては、第１のタイムアウト値より大きい、アクセスエラー原因の特定に必要な時間を設定した第２のタイムアウト値が計数されるまでディスク装置３からのアクセス応答待ちを行う。このようにすることにより、初回アクセスとそれ以降のリトライアクセスの双方において同じタイムアウト時間が設定される場合と比較して、タイムアウトを伴うアクセスエラーを短時間で検出し復旧することができ、かつエラー発生時にエラー原因を特定することができる。
【００３９】
また、この実施の形態１によれば、ディスク装置３を制御し、第１のタイムアウト値が計数されるまでの間及び第２のタイムアウト値が計数されるまでの間に制御部８によるディスク装置３へのアクセスにエラーが発生した場合、そのエラー原因を特定する処理を行うディスク制御部７を備え、制御部８が、ディスク制御部７で特定されたエラー原因に応じた復旧処理を実行するので、タイムアウトを伴うアクセスエラーを短時間で検出し確実に復旧することができる。
【００４０】
また、上記実施の形態１では、初回アクセスにおけるタイムアウト値を、リトライアクセスにおけるタイムアウト値より極端に短く設定する例を示したが、初回アクセスにおけるタイムアウト値が以降のリトライアクセスよりも短ければよい。例えば、以降のリトライアクセスが複数回行われる場合、初回アクセスにおけるタイムアウト値よりも大きな値（長い時間）であれば、各リトライアクセスでのタイムアウト値が互いに異なる値であっても、同一の値であっても構わない。
【産業上の利用可能性】
【００４１】
この発明に係る情報記憶装置は、制御部が、コマンドが実行されて最初に記憶媒体に対してアクセスする初回アクセスにあたり、初回アクセスとそれ以降のリトライアクセスの双方において同じタイムアウト時間が設定される場合と比較して、タイムアウトを伴うアクセスエラーからの復旧に要する時間を短縮化でき、エラー発生時にエラー原因を特定することができる。そのため、記録媒体に対する情報の読み書きが可能な情報記憶装置等に用いるのに適している。
【図１】
2010044224.tif 000003
【図２】
2010044224.tif 000004
【図３】
2010044224.tif 000005
【図４】
2010044224.tif 000006
【手続補正書】
【提出日】平成22年11月25日(2010.11.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記録媒体に対する情報の読み書きが可能な情報記憶装置に関するものである。
【背景技術】
【０００２】
従来の情報記憶装置、例えばハードディスク装置（以下、ＨＤＤと称す）においては、アクセスエラー原因を特定するために十分な時間（データ読み出し又はデータ書き込みの場合、１０秒程度）をアクセスにおけるタイムアウト値として使用する。これにより、ＨＤＤアクセスの際にエラーが発生すると、タイムアウトされるまでにエラー原因が特定され、このエラー原因に応じた復旧処理が実行される。
【０００３】
なお、上記タイムアウト値はＨＤＤが実行するコマンドによって異なる場合もあるが、ＨＤＤがコマンド（Ｒｅｓｅｔ命令／Ｒｅａｄ命令／Ｗｒｉｔｅ命令など）を実行して、ＣＰＵが最初にＨＤＤにアクセスする初回アクセスと、初回アクセスで発生したエラーの復旧後に実行されるリトライアクセスとでは、同じコマンドによるアクセスであるため、一般的にタイムアウト値も同じ値が使用されている。なお、ＨＤＤ側で実行されるコマンド内容に応じてＨＤＤに対するアクセスの種類が決定され、アクセスの種類に応じてタイムアウト値が異なる。
【０００４】
また、特許文献１には、ディスクアレイの状態に応じて互いに異なるタイムアウト値を利用するディスクアレイの制御装置が開示されている。この制御装置では、ディスクアレイが正常に動作している場合、ディスクアレイへのアクセスに第１のタイムアウト値を使用し、ディスクアレイのうちの１台が故障している縮退時には第１のタイムアウト値より小さい第２のタイムアウト値、すなわち正常時よりも短い時間でアクセスをタイムアウトする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３２８４９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の情報記憶装置は、初回アクセス時とリトライアクセス時とで同じタイムアウト時間が使用されていたので、タイムアウトを伴うアクセスエラーからの復旧に長時間を要し、当該情報記憶装置を使用する情報処理システム全体の応答速度を低下させる可能性があるという課題があった。
【０００７】
上記課題を具体的に説明する。
図４は、従来のＨＤＤアクセス処理の流れを示すフローチャートであり、ＨＤＤに対するデータ読み出し又はデータ書き込みの場合を示している。ここで、アクセスにおけるタイムアウト値は、エラー原因を特定するために十分な時間である１０秒と仮定する。また、エラーが発生せずにアクセスが成功した場合の所要時間を０．１秒とし、復旧処理の所要時間を０．５秒と仮定する。
【０００８】
先ず、ＨＤＤがコマンドを実行してＣＰＵがＨＤＤに対してアクセスすると（ステップＳＴ１００）、上記タイムアウト値の計数が開始され、ＨＤＤからの応答を待ってアクセス結果が判断される（ステップＳＴ１０１）。このとき、アクセスエラーが発生すると、ＨＤＤのディスク制御部が、タイムアウト（エラー原因特定の所要時間に相当）されるまでにそのエラー原因の特定処理を実行する。これによって特定されたエラー原因は、エラー原因レポートとしてディスク制御部からＣＰＵ側へ通知される。
【０００９】
ＣＰＵは、エラー原因レポートで特定されたＨＤＤアクセスのエラー原因や、これまでのリトライ回数等を考慮してＨＤＤアクセスをリトライすべきか否かを判定する（ステップＳＴ１０２）。リトライする場合、ＣＰＵは、エラー原因に応じた復旧処理を実行（ステップＳＴ１０３）した後、ステップＳＴ１００に戻って復旧後のアクセスを実行する。
【００１０】
一方、ステップＳＴ１０１において、エラーが発生せずにＨＤＤから応答があり、アクセスに成功した場合（ステップＳＴ１０４）、その所要時間は０．１秒となる。また、エラーが発生してからエラー原因が特定され、このエラーの復旧処理後に再びステップＳＴ１０１に移行して、エラーが発生せずにＨＤＤへのアクセスが成功した場合、この所要時間は１０．６秒となる。
【００１１】
ステップＳＴ１０２でリトライ不要とした場合、ＣＰＵは、アクセスエラーとして処理を終了する（ステップＳＴ１０５）。なお、この結果が得られるまでの所要時間は、エラー原因の特定に要した１０秒である。また、１回のリトライアクセスが実行され、復旧処理後にステップＳＴ１０１でエラーが発生し、このエラー原因の特定処理を行った後、再びステップＳＴ１０２でリトライ不要になると、所要時間は２０．５秒となる。
【００１２】
このようにタイムアウトを伴うアクセスエラーからの復旧が最低でも１０秒を要し、リトライアクセスにおいてもタイムアウトが発生すると、２０秒以上応答ができない。また、タイムアウト時間を短く設定すると復旧処理や応答は速くなるが、エラー原因が特定できなくなる。
【００１３】
また、特許文献１では、ディスクアレイの状態（正常状態又は縮退状態）に応じて、第１のタイムアウト値又は第２のタイムアウト値に固定されるため、上述と同様の不具合が生じる。
【００１４】
この発明は、上記のような課題を解決するためになされたもので、タイムアウトを伴うアクセスエラーからの復旧に要する時間を短縮化でき、エラー発生時にエラー原因を特定することができる情報記憶装置を得ることを目的とする。
【課題を解決するための手段】
【００１５】
この発明に係る情報記憶装置は、実行されたプログラムのコマンド内容に応じて記憶媒体に対してアクセスし、前記記憶媒体からのアクセス応答を待つ間にアクセスエラーが発生すると、前記エラーの復旧処理を実行した後にリトライアクセスを行う制御部と、前記記憶媒体を制御し、第１のタイムアウト値が計数されるまでの間及び第２のタイムアウト値が計数されるまでの間に前記制御部による前記記憶媒体へのアクセスにエラーが発生した場合、そのエラー原因を特定する処理を行う記憶媒体制御部とを備えた情報記憶装置において、前記第１のタイムアウト値は、コマンドが実行されて前記記憶媒体にアクセスする際に、前記アクセスが完了するのに必要な時間、かつ、エラーが発生した場合には前記記憶媒体制御部がエラー原因を特定するために十分でない時間に設定され、前記第２のタイムアウト値は、前記第１のタイムアウト値よりも大きく、かつ、前記記憶媒体制御部がエラー原因を特定するために十分な時間に設定され、前記制御部は、コマンドが実行されて最初に前記記憶媒体にアクセスする初回アクセスにあたり、前記第１のタイムアウト値が計数されるまで前記記憶媒体からのアクセス応答待ちを行い、その間にエラーが発生し、かつ、前記第１のタイムアウト値が計数されるまでの間に、前記記憶媒体制御部でエラー原因が特定されない場合、予め設定された内容の復旧処理を実行し、該エラー原因が特定され復旧可能と判断した場合、該エラー原因に応じた復旧処理を実行し、前記初回アクセス以降のリトライアクセスにおいては、前記第２のタイムアウト値が計数されるまで前記記憶媒体からのアクセス応答待ちを行い、その間にさらにエラーが発生し、かつ、前記第１のタイムアウト値が計数されるまでの間にエラー原因が特定されていなかった場合、前記第２のタイムアウト値が計数されるまでエラー原因の特定処理を実行することを特徴とするものである。
【発明の効果】
【００１６】
この発明によれば、制御部が、コマンドが実行されて最初に記憶媒体に対してアクセスする初回アクセスにあたり、記憶媒体へのアクセスが完了する時間を設定した第１のタイムアウト値が計数されるまで記憶媒体からのアクセス応答待ちを行い、初回アクセス以降のリトライアクセスにおいては、第１のタイムアウト値より大きい、アクセスエラー原因の特定に必要な時間を設定した第２のタイムアウト値が計数されるまで記憶媒体からのアクセス応答待ちを行うので、初回アクセスとそれ以降のリトライアクセスの双方において同じタイムアウト時間が設定される場合と比較して、タイムアウトを伴うアクセスエラーからの復旧に要する時間を短縮化でき、エラー発生時にエラー原因を特定することができるという効果がある。
【図面の簡単な説明】
【００１７】
【図１】この発明の実施の形態１による情報記憶装置の構成を示すブロック図である。
【図２】図１中のＣＰＵ及びメモリで実現される機能ブロックを示す図である。
【図３】実施の形態１の情報記憶装置による動作の流れを示すフローチャートである。
【図４】従来のＨＤＤアクセス処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態１．
この発明による情報記憶装置は、情報処理に伴って記録媒体に情報の読み書きを行う機能を有する装置であれば適用可能であり、例えば車載情報機器、ナビゲーション装置、パーソナルコンピュータ、携帯電話端末、ＰＤＡ（Personal Digital Assistants）、デジタルカメラ、データ記録再生装置、ゲーム機器等に適用することができる。また、記録媒体としては、ハードディスク、ＤＶＤ、ＣＤ、メモリカード等が考えられる。
【００１９】
図１は、この発明の実施の形態１による情報記憶装置の構成を示すブロック図であり、ハードディスクなどのディスク装置に情報の読み書きを行う装置を例に示している。図１において、実施の形態１による情報記憶装置１は、入力されたコマンドを実行してディスク装置３にアクセスするＣＰＵ２、ディスク装置（記憶媒体）３、ＣＰＵ２とディスク装置３との間のインタフェースであるＩ／Ｏ（Input/Output）部４、及び、ＣＰＵ２が実行するプログラムや情報処理で生じたデータを保持するＲＯＭやＲＡＭなどのメモリ５を備える。
【００２０】
また、ディスク装置３は、記憶媒体となるディスク６、ディスク６を制御するディスク制御部（記憶媒体制御部）７を備える。ディスク制御部７が、ディスク６におけるアクセスエラーの原因特定処理を実行する。アクセスエラー原因としては、例えばディスクのセクタ不良、パスワードロック、チェックコードのミスマッチなどが挙げられる。
【００２１】
図２は、図１中のＣＰＵ及びメモリで実現される機能ブロックを示す図である。図２において、制御部８は、プログラム中のコマンド実行によりディスク装置３にアクセスするとともに、ディスク装置３側からのエラー原因レポートでエラー内容を特定したり、エラー原因に応じた復旧処理を実行する。
【００２２】
タイマ手段９は、制御部８によるディスク装置３へのアクセスにおいて、タイムアウト値テーブル１０に登録されたタイムアウト値のうち、制御部８から指示されたタイムアウト値を計数する。
【００２３】
タイムアウト値テーブル１０は、メモリ５に格納されるテーブルデータであり、ディスク装置３がコマンド（Ｒｅｓｅｔ命令／Ｒｅａｄ命令／Ｗｒｉｔｅ命令など）を実行し、ＣＰＵ２が最初にディスク装置３にアクセスする初回アクセスで使用される第１のタイムアウト値と、初回アクセスで発生したエラーの復旧後に実行されるリトライアクセスで使用される第２のタイムアウト値が登録される。
【００２４】
第１のタイムアウト値としては、第２のタイムアウト値よりも短い時間を設定するが、少なくとも制御部８によるディスク装置３へのアクセスが完了する時間（アクセス指令を出力してからアクセス応答があり、アクセス内容の処理が完了するまでの時間）とする。また、第２のタイムアウト値はアクセスエラー原因を特定するために十分な時間であればよく、ディスク制御部７がアクセスエラー原因を特定するのに必要な時間が設定される。
【００２５】
なお、制御部８及びタイマ手段９は、例えばディスク装置３へのアクセス処理に関するプログラムモジュールをＣＰＵ２が実行することにより、ソフトウエアとハードウエアとが協働した具体的な手段として実現される。
【００２６】
次に動作について説明する。
図３は、実施の形態１の情報記憶装置による動作の流れを示すフローチャートである。
ここでは、初回アクセスにおける第１のタイムアウト値を１秒とし、リトライアクセスでは、アクセスエラーが発生して、ディスク装置３のディスク制御部７がそのエラー原因を特定するために十分な時間である１０秒を第２のタイムアウト値として使用する。また、エラーが発生せずにアクセスが成功した場合の所要時間を０．１秒とし、ディスク装置３側で特定されたエラー原因に応じた復旧処理の所要時間を０．５秒と仮定する。
【００２７】
先ず、制御部８が、コマンド内容に応じてディスク装置３に初回アクセスするためにアクセス指令をディスク装置３へ出力する（ステップＳＴ１）。タイマ手段９は、制御部８から初回アクセスにおける第１のタイムアウト値（１秒）が指示され、タイムアウト値テーブル１０に登録される第１のタイムアウト値の計数を開始する。
【００２８】
第１のタイムアウト値が経過するまでの間にディスク装置３からの応答を待ってアクセス結果が判断される（ステップＳＴ２）。このとき、アクセスエラーが発生すると、ディスク装置３内のディスク制御部７が、タイムアウトされるまでエラー原因の特定処理を実行し、特定したエラー原因をＣＰＵ２側へレポートする。
【００２９】
ＣＰＵ２の制御部８は、ディスク装置３からのエラー原因レポートに基づいて特定されたエラー内容からアクセスエラーが復旧可能か否かを判定する（ステップＳＴ３）。例えば、エラー原因がパスワードロックである場合、パスワード解除試行してからのリトライアクセスで復旧が可能である。また、エラー原因がチェックコードの不一致や転送エラーである場合、動作モードを再設定してからのリトライアクセスで復旧できる。なお、パラメータ指定ミスの場合は、復旧不可である。
【００３０】
ステップＳＴ４において、制御部８は、ステップＳＴ２でエラー原因が特定されずに第１のタイムアウト値が経過した場合、予め設定された内容の復旧処理を実行し、ステップＳＴ３でエラー原因が特定されて復旧可能と判断した場合は、当該エラー原因に応じた復旧処理を実行する。なお、予め設定された内容の復旧処理としては、上述した復旧可能なエラー原因に対する処理などが考えられる。
【００３１】
復旧処理後、制御部８は、リトライアクセスを実行するためにアクセス指令（アクセス要求）をディスク装置３へ出力する（ステップＳＴ５）。タイマ手段９は、制御部８からリトライアクセスにおける第２のタイムアウト値（１０秒）が指示され、タイムアウト値テーブル１０に登録される第２のタイムアウト値の計数を開始する。
【００３２】
第２のタイムアウト値が経過するまでの間にディスク装置３からの応答を待ってアクセス結果が判断される（ステップＳＴ６）。このとき、さらにアクセスエラーが発生した場合、ディスク装置３内のディスク制御部７が、タイムアウトされるまでエラー原因の特定処理を実行し、特定したエラー原因をＣＰＵ２側へレポートする。
【００３３】
制御部８は、リトライアクセスにおいて、ディスク装置３側からエラー原因レポートを受けると、当該エラー原因レポートによって特定されたエラーでアクセスが失敗したことを通知して処理を終了する（ステップＳＴ７）。この結果が得られるまでの所要時間は、リトライアクセスにおけるタイムアウト値（１０秒）が経過した場合、これに初回アクセス時のタイムアウト時間（１秒）及び復旧処理の所要時間（０．５秒）を合わせた１１．５秒である。なお、ステップＳＴ３で復旧不可能と判定された場合は、第１のタイムアウト時間（１秒）でエラーを応答することができる。
【００３４】
一方、ステップＳＴ６において、第２のタイムアウト値が経過してしまった場合、制御部８は、アクセスのタイムアウトが発生したものと判断して処理を終了する（ステップＳＴ８）。この場合の所要時間は、第１のタイムアウト時間（１秒）、復旧処理の所要時間（０．５秒）及び第２のタイムアウト時間（１０秒）を合わせた１１．５秒である。
【００３５】
また、ステップＳＴ６においてエラーが発生せずにアクセスに成功した場合、制御部８は、当該アクセスに応じて出力されたデータ等を用いた処理を実行する（ステップＳＴ９）。この場合の所要時間は、第１のタイムアウト時間（１秒）、復旧処理の所要時間（０．５秒）及びアクセス完了までの時間（０．１秒）を合わせた１．６秒である。また、ステップＳＴ２において、初回アクセス時にエラーが発生せず、アクセスに成功すれば、０．１秒で処理が完了する。
【００３６】
このように、初回アクセスにおける第１のタイムアウト値を極端に小さく設定しているため、ディスク装置３へのアクセスにエラーが発生しても、従来よりも短時間で復旧処理が実行されてリトライアクセスに移行でき、総所要時間を短縮することができる。例えば、初回アクセスがタイムアウトして復旧処理後のリトライアクセスが成功した場合、図３の場合は１．６秒で処理を終えることができるが、従来では初回アクセスのタイムアウトが１０秒となるため、リトライアクセスに成功しても１０．６秒かかってしまう。
【００３７】
なお、第１のタイムアウト時間が極端に短いので、ディスク制御部７がエラー原因を特定するために十分な時間がなく、エラー原因を特定できない場合がある。しかしながら、リトライアクセスにおける第２のタイムアウト値としてエラー原因特定に十分な時間を設定しているので、最終的にはエラー原因を特定することができる。
【００３８】
以上のように、この実施の形態１によれば、実行されたプログラムのコマンド内容に応じてディスク装置３に対してアクセスし、ディスク装置３からのアクセス応答を待つ間にアクセスエラーが発生すると、このエラーの復旧処理を実行した後にリトライアクセスを行う制御部８を備えた情報記憶装置において、制御部８が、コマンドが実行されて最初にディスク装置３にアクセスする初回アクセスにあたり、ディスク装置３へのアクセスが完了する時間を設定した第１のタイムアウト値が計数されるまでディスク装置３からのアクセス応答待ちを行い、初回アクセス以降のリトライアクセスにおいては、第１のタイムアウト値より大きい、アクセスエラー原因の特定に必要な時間を設定した第２のタイムアウト値が計数されるまでディスク装置３からのアクセス応答待ちを行う。このようにすることにより、初回アクセスとそれ以降のリトライアクセスの双方において同じタイムアウト時間が設定される場合と比較して、タイムアウトを伴うアクセスエラーを短時間で検出し復旧することができ、かつエラー発生時にエラー原因を特定することができる。
【００３９】
また、この実施の形態１によれば、ディスク装置３を制御し、第１のタイムアウト値が計数されるまでの間及び第２のタイムアウト値が計数されるまでの間に制御部８によるディスク装置３へのアクセスにエラーが発生した場合、そのエラー原因を特定する処理を行うディスク制御部７を備え、制御部８が、ディスク制御部７で特定されたエラー原因に応じた復旧処理を実行するので、タイムアウトを伴うアクセスエラーを短時間で検出し確実に復旧することができる。
【００４０】
また、上記実施の形態１では、初回アクセスにおけるタイムアウト値を、リトライアクセスにおけるタイムアウト値より極端に短く設定する例を示したが、初回アクセスにおけるタイムアウト値が以降のリトライアクセスよりも短ければよい。例えば、以降のリトライアクセスが複数回行われる場合、初回アクセスにおけるタイムアウト値よりも大きな値（長い時間）であれば、各リトライアクセスでのタイムアウト値が互いに異なる値であっても、同一の値であっても構わない。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
実行されたプログラムのコマンド内容に応じて記憶媒体に対してアクセスし、前記記憶媒体からのアクセス応答を待つ間にアクセスエラーが発生すると、前記エラーの復旧処理を実行した後にリトライアクセスを行う制御部と、
前記記憶媒体を制御し、第１のタイムアウト値が計数されるまでの間及び第２のタイムアウト値が計数されるまでの間に前記制御部による前記記憶媒体へのアクセスにエラーが発生した場合、そのエラー原因を特定する処理を行う記憶媒体制御部と
を備えた情報記憶装置において、
前記第１のタイムアウト値は、コマンドが実行されて前記記憶媒体にアクセスする際に、前記アクセスが完了するのに必要な時間、かつ、エラーが発生した場合には前記記憶媒体制御部がエラー原因を特定するために十分でない時間に設定され、
前記第２のタイムアウト値は、前記第１のタイムアウト値よりも大きく、かつ、前記記憶媒体制御部がエラー原因を特定するために十分な時間に設定され、
前記制御部は、
コマンドが実行されて最初に前記記憶媒体にアクセスする初回アクセスにあたり、前記第１のタイムアウト値が計数されるまで前記記憶媒体からのアクセス応答待ちを行い、
その間にエラーが発生し、かつ、前記第１のタイムアウト値が計数されるまでの間に、前記記憶媒体制御部でエラー原因が特定されない場合、予め設定された内容の復旧処理を実行し、該エラー原因が特定され復旧可能と判断した場合、該エラー原因に応じた復旧処理を実行し、
前記初回アクセス以降のリトライアクセスにおいては、前記第２のタイムアウト値が計数されるまで前記記憶媒体からのアクセス応答待ちを行い、
その間にさらにエラーが発生し、かつ、前記第１のタイムアウト値が計数されるまでの間にエラー原因が特定されていなかった場合、前記第２のタイムアウト値が計数されるまでエラー原因の特定処理を実行する
ことを特徴とする情報記憶装置。
【請求項２】
前記制御部は、前記予め設定された内容の復旧処理として、複数の復旧可能なエラー原因に対する処理をすることを特徴とする請求項１記載の情報記憶装置。
【国際調査報告】
2010044224.tif 000007
2010044224.tif 000008
2010044224.tif 000009
2010044224.tif 000010