(57)【要約】【課題】読み出し目標であるセクタが読み出されるまでにエラーが検出された場合でも、オントラックした直後のセクタから読み出し目標であるセクタまでに読み出されたデータを有効活用すること。【解決手段】ディスクキャッシュ装置１０は、プレリードするセクタ数を管理するカウンタであるプレリードカウンタ１７ａと、プレリードに成功したセクタ数を管理するカウンタであるプレリード成功カウンタ１７ｂと、ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータの読み出しをおこなう際に、セクタごとの読み出しエラーを検出するエラー検出部１８ｃと、読み出しエラーが検出されなかったセクタのデータのみをキャッシュするように制御するキャッシュ制御部１８ｄとを備える。【選択図】      図１
2004295189.tif 000002
【特許請求の範囲】
【請求項１】
ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータを読み出し、該読み出したデータをキャッシュするディスクキャッシュ装置であって、
前記読み出しをおこなう際に、前記セクタごとの読み出しエラーを検出するエラー検出手段と、
前記エラー検出手段によって検出された前記読み出しエラーに応じてキャッシュすべきか否かを取捨選択して前記セクタごとにデータをキャッシュするように制御するキャッシュ制御手段と、
を備えたことを特徴とするディスクキャッシュ装置。
【請求項２】
前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出されなかったセクタのデータのみをキャッシュするように制御することを特徴とする請求項１に記載のディスクキャッシュ装置。
【請求項３】
前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタ数がキャッシュすべき基準であるセクタ数より多い場合に、前記読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタのデータをキャッシュするように制御することを特徴とする請求項１または２に記載のディスクキャッシュ装置。
【請求項４】
前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出された場合に、再読み出しをおこなわないように制御することを特徴とする請求項１、２または３に記載のディスクキャッシュ装置。
【請求項５】
前記セクタは、トラック内で論理的に連続した識別番号で管理されるものであって、
前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出された場合に前記識別番号のインデックスであるセクタがオントラックした直後のセクタから読み出し目標であるセクタの間にあれば、前記インデックスより前に存在するセクタのデータをキャッシュしないように制御することを特徴とする請求項１〜４のいずれか一つに記載のディスクキャッシュ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータを読み出し、該読み出したデータをキャッシュするディスクキャッシュ装置に関し、特に、読み出し目標であるセクタが読み出されるまでにエラーが検出された場合でも、オントラックした直後のセクタから読み出し目標であるセクタまでに読み出されたデータを有効活用することができるディスクキャッシュ装置に関する。
【０００２】
【従来の技術】
従来より、ディスク装置は、外部からの読み出し要求（リードコマンド）に係る処理をおこなう場合に、目標セクタのあるトラックにオントラックした後、目標セクタに到達するまで読み出し処理を待機していた。
【０００３】
そこで、かかる「待機時間」を有効活用するという観点からディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータを読み出し、該読み出したデータをキャッシュするディスクキャッシュ装置が提案されている（例えば、特許文献１参照。）。
【０００４】
【特許文献１】
特開２００１−１０１７６７号公報（第３−５頁、第４図）
【０００５】
【発明が解決しようとする課題】
しかしながら、上記の従来技術は、読み出し目標であるセクタが読み出されるまでに１つでもエラーが検出された場合に、該エラーが検出されるまでに読み出されたデータを破棄し、読み出し目標であるセクタまで読み出し処理を待機するので、オントラックした直後のセクタから読み出し目標であるセクタまでに読み出されたデータを有効活用することができないという問題点があった。
【０００６】
そこで、本発明は、上述した従来技術による問題点を解消するためになされたものであり、読み出し目標であるセクタが読み出されるまでにエラーが検出された場合でも、オントラックした直後のセクタから読み出し目標であるセクタまでに読み出されたデータを有効活用することができるディスクキャッシュ装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、本発明は、ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータを読み出し、該読み出したデータをキャッシュするディスクキャッシュ装置であって、前記読み出しをおこなう際に、前記セクタごとの読み出しエラーを検出するエラー検出手段と、前記エラー検出手段によって検出された前記読み出しエラーに応じてキャッシュすべきか否かを取捨選択して前記セクタごとにデータをキャッシュするように制御するキャッシュ制御手段と、を備えたことを特徴とする。
【０００８】
したがって、本発明によれば、読み出しをおこなう際に、セクタごとの読み出しエラーを検出し、読み出しエラーに応じてキャッシュすべきか否かを取捨選択してセクタごとにデータをキャッシュするように制御することとしたので、読み出し目標であるセクタが読み出されるまでにエラーが検出された場合でも、オントラックした直後のセクタから読み出し目標であるセクタまでに読み出されたデータを有効活用することが可能になる。
【０００９】
また、本発明では、前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出されなかったセクタのデータのみをキャッシュするように制御することを特徴とする。
【００１０】
したがって、本発明によれば、読み出しエラーが検出されなかったセクタのデータのみをキャッシュするように制御することとしたので、読み出し目標であるセクタが読み出されるまでにエラーが検出された場合でも、正常に読み出されたデータのみを有効活用することが可能になる。
【００１１】
また、本発明では、前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタ数がキャッシュすべき基準であるセクタ数より多い場合に、前記読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタのデータをキャッシュするように制御することを特徴とする。
【００１２】
したがって、本発明によれば、読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタ数がキャッシュすべき基準であるセクタ数より多い場合に、読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタのデータをキャッシュするように制御することとしたので、キャッシング効率が低下しない程度のセクタ数を持つ場合にのみキャッシュをおこなうことができ、いたずらにキャッシュ処理をおこなうことに伴うキャッシュ管理領域の増加に起因する性能低下を防ぐことが可能になる。
【００１３】
また、本発明では、前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出された場合に、再読み出しをおこなわないように制御することを特徴とする。
【００１４】
したがって、本発明によれば、読み出しエラーが検出された場合に、再読み出しをおこなわないように制御することとしたので、プレリード中でのオーバーヘッドを最小限にすることが可能になる。
【００１５】
また、本発明では、前記セクタは、トラック内で論理的に連続した識別番号で管理されるものであって、前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出された場合に前記識別番号のインデックスであるセクタがオントラックした直後のセクタから読み出し目標であるセクタの間にあれば、前記インデックスより前に存在するセクタのデータをキャッシュしないように制御することを特徴とする。
【００１６】
したがって、本発明によれば、読み出しエラーが検出された場合に識別番号のインデックスであるセクタがオントラックした直後のセクタから読み出し目標であるセクタの間にあれば、インデックスより前に存在するセクタのデータをキャッシュしないように制御することとしたので、プレリード中にインデックスを跨ぐ場合でも、論理的に矛盾することなくキャッシュすることが可能になる。
【００１７】
【発明の実施の形態】
以下に添付図面を参照して、この発明に係るディスクキャッシュ装置の好適な実施の形態を詳細に説明する。なお、以下では、本実施の形態に係るディスクキャッシュ装置の概要および特徴を説明した後に、このディスクキャッシュ装置の構成および処理手順を説明し、最後に、他の実施の形態として種々の変形例を説明することとする。
【００１８】
（ディスクキャッシュ装置の概要および特徴）
まず最初に、本実施の形態に係るディスクキャッシュ装置の概要および特徴を説明する。図１は、本実施の形態に係るディスクキャッシュ装置の構成を示すブロック図である。同図に示すように、このディスクキャッシュ装置は、概略的には、外部からの読み出し要求（リードコマンド）に係る処理をおこなう場合に、ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータを読み出し、該読み出したデータをキャッシュするものである。
【００１９】
ここで、このディスクキャッシュ装置１０は、読み出しをおこなう際に、セクタごとの読み出しエラーを検出し、読み出しエラーに応じてキャッシュすべきか否かを取捨選択してセクタごとにデータをキャッシュするように制御するディスクキャッシュ処理に主たる特徴があり、かかるディスクキャッシュ処理によって、読み出し目標であるセクタが読み出されるまでにエラーが検出された場合でも、オントラックした直後のセクタから読み出し目標であるセクタまでに読み出されたデータを有効活用することができるようにしている。
【００２０】
この主たる特徴を具体的に説明すると、このディスクキャッシュ装置１０は、外部（ホスト１）からのリードコマンド（読み出し要求）を受領して、プレリード（すなわち、ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータの読み出し）する際に、セクタごとの読み出しエラーを検出し、該読み出しエラーに応じてキャッシュすべきか否かを取捨選択してセクタごとにデータをキャッシュするように制御する。
【００２１】
したがって、上記した従来技術の例で言えば、読み出し目標であるセクタが読み出されるまでにエラーが検出された場合に、該エラーが検出されるまでに読み出されたデータを破棄し、読み出し目標であるセクタまで読み出し処理を待機するのではなく、読み出しエラーに応じてキャッシュすべきか否かを取捨選択してセクタごとにデータをキャッシュするように制御するので、読み出し目標であるセクタが読み出されるまでにエラーが検出された場合でも、オントラックした直後のセクタから読み出し目標であるセクタまでに読み出されたデータを有効活用することが可能になる。
【００２２】
また、本実施の形態に係るディスクキャッシュ装置は、上記の主たる特徴に関連して以下に列挙するような特徴も付加的に有するものである。つまり、本実施の形態では、エラー検出部１８ｃによって読み出しエラーが検出された場合に、再読み出しをおこなわないように制御することとしたので、プレリード中でのオーバーヘッドを最小限にすることができるようにしている。
【００２３】
また、本実施の形態に係るディスクキャッシュ装置は、エラー検出部１８ｃによって読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタ数がキャッシュすべき基準であるセクタ数より多い場合に、読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタのデータをキャッシュするように制御することとしたので、キャッシング効率が低下しない程度のセクタ数を持つ場合にのみキャッシュをおこなうことができ、いたずらにキャッシュ処理をおこなうことに伴うキャッシュ管理領域の増加に起因する性能低下を防ぐことができるようにしている。
【００２４】
（ディスクキャッシュ装置の構成）
次に、本実施の形態に係るディスクキャッシュ装置の構成を説明する。このディスクキャッシュ装置１０は、図１に示すように、ホスト転送処理部１１と、コマンド処理部１２と、ディスク１３と、バッファメモリ１４と、キャッシュ管理テーブル１５と、プレリードセクタポインタ１６ａと、プレリードエラーセクタポインタ１６ｂと、プレリードカウンタ１７ａと、プレリード成功カウンタ１７ｂと、ディスク制御部１８とから構成される。
【００２５】
このうち、ホスト転送処理部１１は、ホスト１とコマンドやデータの送受信をおこなう処理部であり、具体的には、ディスク制御部１８とのデータの授受をバッファメモリ１４を介しておこなう。
【００２６】
コマンド処理部１２は、ホスト１より受信したコマンドを解析し、ホスト転送処理部１１およびディスク制御部１８に処理を指示することでコマンドを実行させる処理部である。また、コマンドを解析する際に、直ちに実行しない（できない）と解析されたコマンドを一時的に保持（キューイング）するコマンドキュー１２ａを備え、キューイングすることによってコマンドの実行順序を変えることができる。
【００２７】
ディスク１３は、アプリケーションやデータを記憶する磁気ディスクであり、バッファメモリ１４は、ホスト１と送受信するデータを一時的に記憶する処理部であり、キャッシュ管理テーブル１５は、図４（ｂ）に示すように、セグメント（ディスク制御部１８における読出制御部１８ｂによって読み出されたデータは、キャッシュ制御部１８ｄによってセグメントごとにキャッシュされる）とセクタ（キャッシュされたデータが格納されているセクタ）とを対応付けて記憶する処理部である。
【００２８】
プレリードセクタポインタ１６ａは、オントラックセクタ位置を示すポインタであり、プレリードエラーセクタポインタ１６ｂは、プレリード範囲においてエラーセクタ位置を示すポインタであり、目標リードセクタポインタ１６ｃは、受領コマンドの読み出し処理をおこなう先頭セクタを示すポインタである（図２（ａ）参照）。なお、本実施の形態では、ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータの読み出しを「プレリード」と呼ぶこととする。
【００２９】
プレリードカウンタ１７ａは、プレリードするセクタ数を管理するカウンタであり、具体的には、図２（ｂ）に示すように、予めセットされた値（９）を１セクタ処理するごとに１つずつデクリメントしていくハードのレジスタである。
【００３０】
プレリード成功カウンタ１７ｂは、プレリードに成功したセクタ数を管理するカウンタであり、具体的には、図２（ｂ）に示すように、プレリード中にエラーすることなく読み出されたセクタがあるごとに１つずつインクリメントしていくハードのレジスタである。
【００３１】
ディスク制御部１８は、基本的には、コマンド処理部１２によって指示された読み出し処理または書き込み処理をディスク１３におこなう処理部であり、機能概念的に、書込制御部１８ａと、読出制御部１８ｂと、エラー検出部１８ｃと、キャッシュ制御部１８ｄとから構成される。
【００３２】
このうち、書込制御部１８ａは、ホスト転送処理部１１によってバッファメモリ１４に一時的に記憶されたデータをディスク１３に書き込むように制御する処理部であり、読出制御部１８ｂは、ディスク１３から読み出したデータをバッファメモリ１４に一時的に記憶する。なお、本実施の形態では、プレリード中でのオーバーヘッドを最小限にするために、エラーリトライを無効化する機能を付加する。
【００３３】
エラー検出部１８ｃは、ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータの読み出し（プレリード）をおこなう際に、セクタごとの読み出しエラーを検出する処理部である。具体的には、読み出しエラーが検出されたセクタをプレリードエラーセクタに格納する。
【００３４】
キャッシュ制御部１８ｄは、エラー検出部１８ｃによって読み出しエラーが検出されなかったセクタのデータのみをキャッシュするように制御する処理部である。具体的には、図３（ｃ）に示すように、エラー検出部１８ｃによって読み出しエラーが検出されたセクタ（セクタ７）より前に存在する正常に読み出されたセクタ数（プレリード成功カウンタ１７ｂによってカウントされたセクタ１〜６の６つ）がプレリード最小キャッシングセクタ（すなわち、キャッシング効率が最も良くなるセクタ数であり、本実施の形態では、５つとする。）より多い場合に、読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタ（セクタ１〜６）のデータをキャッシュするように制御する。
【００３５】
つまり、図４（ａ）に示す「セクタ７」のように、エラーセクタの間に正常に読み出されたセクタが１つだけ存在するような読み出し状況が多数存在した場合に、いたずらにすべてのセクタ１つずつに１つのセグメントを設けるのでは性能低下を引き起こすことが懸念されるため、上記した「プレリード最小キャッシングセクタ」は、キャッシング効率が低下しない程度のセクタ数を持つ場合にのみキャッシュをおこない、いたずらにキャッシュ処理をおこなうことに伴うキャッシュ管理領域の増加に起因する性能低下を防ぐことを目的として設定されている。
【００３６】
（ディスクキャッシュ装置の処理手順）
次に、本実施の形態に係るディスクキャッシュ装置の処理手順を説明する。図５は、本実施の形態に係るディスクキャッシュ処理の手順を示すフローチャートである。同図に示すように、ホスト転送処理部１１は、ホスト１からリードコマンド（読み出し要求）を受信する（ステップＳ５０１）。
【００３７】
続いて、読出制御部１８ｂは、リードコマンドの開始セクタを「目標リードセクタ」に格納し、オントラックしたセクタ位置を「プレリードセクタ」に格納する（ステップＳ５０２）。また、プレリードセクタから目標リードセクタまでのセクタ数をプレリードカウンタ１７ａにセットし、プレリード成功カウンタ１７ｂの値を０に初期化しておく。
【００３８】
そして、「目標リードセクタ」と「プレリードセクタ」の位置が同一である場合（ステップＳ５０３肯定）には、ホスト１から受信したリードコマンドを実行する。また、「目標リードセクタ」と「プレリードセクタ」の位置が相違する場合（ステップＳ５０３否定）には、プレリード中でのオーバーヘッドを最小限にするために、エラーリトライを禁止する（ステップＳ５０４）。
【００３９】
続いて、読出制御部１８ｂは、プレリード（ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータの読み出し）を開始し（ステップＳ５０５）、読み出しが成功した場合（ステップＳ５０６否定）には、プレリード成功カウンタの値をインクリメントし（ステップＳ５０７）、プレリードカウンタ１７ａの値をデクリメントする（ステップＳ５１１）。
【００４０】
また、エラー検出部１８ｃによってプレリード中にエラーセクタが検出された場合（ステップＳ５０６肯定）には、キャッシュ制御部１８ｄは、プレリード成功カウンタ１７ｂとプレリード最小キャッシングセクタの値を比較する（ステップＳ５０８）。
【００４１】
そして、キャッシュ制御部１８ｄは、図３（ａ）に示すように、エラーセクタが検出されたセクタ（セクタ４）より前に存在する正常に読み出されたセクタ数（プレリード成功カウンタ１７ｂによってカウントされたセクタ１〜３の３つ）がプレリード最小キャッシングセクタ（すなわち、キャッシング効率が最も良くなるセクタ数であり、本実施の形態では、５つとする。）より少ない場合（ステップＳ５０８否定）、キャッシュをおこなわず、プレリード成功カウンタを０に戻す（ステップＳ５１０）。
【００４２】
また、キャッシュ制御部１８ｄは、図３（ｂ）に示すように、エラーセクタが検出されたセクタ（セクタ７）より前に存在する正常に読み出されたセクタ数（プレリード成功カウンタ１７ｂによってカウントされたセクタ１〜６の６つ）がプレリード最小キャッシングセクタ（５つ）より多い場合（ステップＳ５０８肯定）、読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタ（セクタ１〜６）のデータをキャッシュするように制御する（ステップＳ５０９）。すなわち、キャッシュ制御部１８ｄは、図４（ｂ）に示すように、１つのセグメント（セグメント０）で動作させていたものをプレリード中にエラーセクタを検出し、それ以前のセクタをキャッシングする場合は、キャッシュ管理テーブル１５におけるセグメント０の最終をエラーセクタの１つ前のセクタの終わりに張り替え（セクタ６に張り替え）、セグメント１の先頭をエラーセクタの次のセクタに張り替える（セクタ８に張り替える）。
【００４３】
続いて、プレリード成功カウンタを０に戻す（ステップＳ５１０）とともに、プレリードカウンタ１７ａの値をデクリメント（３から２へデクリメント）する（ステップＳ５１１）。
【００４４】
そして、プレリードカウンタ１７ａの値に残数がある場合（ステップＳ５１２否定）には、次のセクタ（セクタ８）からプレリードを再開し、上記したステップＳ５０５〜Ｓ５１１の処理を実行する。
【００４５】
また、プレリードカウンタ１７ａの値が０になった場合（ステップＳ５１２肯定）には、キャッシュ制御部１８ｄは、プレリード成功カウンタ１７ｂにカウントされているセクタをキャッシュするように制御し、プレリードを終了する。例えば、図３（ｂ）の場合には、セクタ８および９をキャッシュし、目標リードセクタからはコマンド指定の条件でリードコマンドを実行する。
【００４６】
上述してきたように、本実施の形態に係るディスクキャッシュ装置によれば、読み出し目標であるセクタが読み出されるまでにエラーが検出された場合でも、オントラックした直後のセクタから読み出し目標であるセクタまでに読み出されたデータを有効活用することが可能になる。さらに、これに関連して、キャッシュに登録されるデータが増えることによってキャッシュ処理のヒット率を向上させることができるので、ディスクキャッシュ装置の性能を向上させることが可能になる。
【００４７】
また、本実施の形態に係るディスクキャッシュ装置によれば、エラー検出部１８ｃによって読み出しエラーが検出された場合に、再読み出しをおこなわないように制御することとしたので、プレリード中でのオーバーヘッドを最小限にすることが可能になる。
【００４８】
また、本実施の形態に係るディスクキャッシュ装置によれば、エラー検出部１８ｃによって読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタ数がキャッシュすべき基準であるセクタ数より多い場合に、読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタのデータをキャッシュするように制御することとしたので、キャッシング効率が低下しない程度のセクタ数を持つ場合にのみキャッシュをおこなうことができ、いたずらにキャッシュ処理をおこなうことに伴うキャッシュ管理領域の増加に起因する性能低下を防ぐことが可能になる。
【００４９】
（他の実施の形態）
さて、これまで本発明の実施の形態について説明したが、本発明は上述した実施の形態以外にも、上記特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施の形態にて実施されてもよいものである。
【００５０】
例えば、本発明では、読み出しエラーが検出された場合に識別番号のインデックスであるセクタがオントラックした直後のセクタから読み出し目標であるセクタの間にあれば、インデックスより前に存在するセクタのデータをキャッシュしないように制御することとしたので、プレリード中にインデックスを跨ぐ場合でも、論理的に矛盾することなくキャッシュすることが可能になる。
【００５１】
これを具体的に説明すると、ＬＢＡ（セクタに通し番号を振って、該通し番号によってセクタを指定する方式）においては、図６（ａ）に示すように、セグメントの最終ＬＢＡとセグメントの先頭ＬＢＡが論理的に連続になるようにしないとキャッシュ管理ができないため、１トラック分の大きさのセグメントで管理（セグメント０、ＬＢＡ０〜ＬＢＡ９９）されている。そこで、図６（ｂ）に示すように、そのトラック内で読み出しエラーが検出された場合には、エラーセクタの１つ前のセクタをキャッシュ管理の最終ＬＢＡにセットすることによって先頭ＬＢＡから最終ＬＢＡまでをキャッシュセーブすることができるようにしている。なお、この場合においてもインデックスを跨ぐ前のセクタ（セクタ９４〜９９）と「プレリード最小キャッシングセクタ」を比較して「プレリード最小キャッシングセクタ」よりも大きい場合は、上述した本実施の形態と同様にセグメントの張り替えを実施してキャッシュすることが可能になる。
【００５２】
また、本発明では、セクタの欠陥に起因するスペアセクタに対しての読み出し態様が検出された場合に、読み出しエラーと同様であると認識し、読み出しエラーおよびスペアセクタに対しての読み出し態様が検出されなかったセクタのデータのみをキャッシュするように制御することとしたので、プレリード中に２次側にあるスペアセクタに対する読み出しを防ぐことができ、性能低下を防ぐことが可能になる（図６（ｃ）参照）。
【００５３】
また、本発明では、セクタごとの読み出しエラーを一時的に記憶し、セクタごとの読み出しエラーに応じてキャッシュすべきか否かを取捨選択してセクタごとにデータをキャッシュするように制御することとしたので、読み出しエラーを検出するごとにキャッシュ処理をおこなうだけでなく、プレリードが終了した後、一括してキャッシュ処理をおこなうことが可能になる。
【００５４】
また、本発明では、ハードのエラーを検出し、ハードのエラーが検出された場合に、読み出しに係るセクタのデータをキャッシュしないように制御する。つまり、プレリード中にハードエラーが検出された場合に、ハードのレジスタとしてフラグを立つように制御しておき、該フラグが立つとともにエラー報告をして読み出し動作を中止することとしたので、ハードエラーに起因する二次災害に迅速に対処することが可能になる。なお、この場合には、ハードエラーを検出した前のセクタもキャッシングしない（図６（ｄ）参照）。
【００５５】
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報（プレリード最小キャッシングセクタ）については、特記する場合を除いて任意に変更することができる。
【００５６】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００５７】
（付記１）ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータを読み出し、該読み出したデータをキャッシュするディスクキャッシュ装置であって、
前記読み出しをおこなう際に、前記セクタごとの読み出しエラーを検出するエラー検出手段と、
前記エラー検出手段によって検出された前記読み出しエラーに応じてキャッシュすべきか否かを取捨選択して前記セクタごとにデータをキャッシュするように制御するキャッシュ制御手段と、
を備えたことを特徴とするディスクキャッシュ装置。
【００５８】
（付記２）前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出されなかったセクタのデータのみをキャッシュするように制御することを特徴とする付記１に記載のディスクキャッシュ装置。
【００５９】
（付記３）前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタ数がキャッシュすべき基準であるセクタ数より多い場合に、前記読み出しエラーが検出されたセクタより前に存在する正常に読み出されたセクタのデータをキャッシュするように制御することを特徴とする付記１または２に記載のディスクキャッシュ装置。
【００６０】
（付記４）前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出された場合に、再読み出しをおこなわないように制御することを特徴とする付記１、２または３に記載のディスクキャッシュ装置。
【００６１】
（付記５）前記セクタは、トラック内で論理的に連続した識別番号で管理されるものであって、
前記キャッシュ制御手段は、前記エラー検出手段によって前記読み出しエラーが検出された場合に前記識別番号のインデックスであるセクタがオントラックした直後のセクタから読み出し目標であるセクタの間にあれば、前記インデックスより前に存在するセクタのデータをキャッシュしないように制御することを特徴とする付記１〜４のいずれか一つに記載のディスクキャッシュ装置。
【００６２】
（付記６）前記エラー検出手段は、前記セクタの欠陥に起因するスペアセクタに対しての読み出し態様を検出するものであって、
前記キャッシュ制御手段は、前記エラー検出手段によって前記スペアセクタに対しての読み出し態様が検出された場合に、前記読み出しエラーと同様であると認識し、前記読み出しエラーおよび前記スペアセクタに対しての読み出し態様が検出されなかったセクタのデータのみをキャッシュするように制御することを特徴とする付記１〜５のいずれか一つに記載のディスクキャッシュ装置。
【００６３】
（付記７）前記エラー検出手段によって検出された前記セクタごとの読み出しエラーを一時的に記憶するテーブルをさらに備え、
前記キャッシュ制御手段は、前記テーブルに記憶された前記セクタごとの読み出しエラーに応じてキャッシュすべきか否かを取捨選択して前記セクタごとにデータをキャッシュするように制御することを特徴とする付記１〜６のいずれか一つに記載のディスクキャッシュ装置。
【００６４】
（付記８）前記エラー検出手段を構成するハードのエラーを検出するハードエラー検出手段をさらに備え、
前記キャッシュ制御手段は、前記ハードエラー検出手段によってハードのエラーが検出された場合に、前記読み出しに係るセクタのデータをキャッシュしないように制御することを特徴とする付記７に記載のディスクキャッシュ装置。
【００６５】
（付記９）ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータを読み出し、該読み出したデータをキャッシュするディスクキャッシュ方法であって、
前記読み出しをおこなう際に、前記セクタごとの読み出しエラーを検出するエラー検出工程と、
前記エラー検出工程によって検出された前記読み出しエラーに応じてキャッシュすべきか否かを取捨選択して前記セクタごとにデータをキャッシュするように制御するキャッシュ制御工程と、
を含んだことを特徴とするディスクキャッシュ方法。
【００６６】
（付記１０）ディスクにオントラックした直後のセクタから読み出し目標であるセクタまでのデータを読み出し、該読み出したデータをキャッシュする方法をコンピュータに実行させるディスクキャッシュプログラムであって、
前記読み出しをおこなう際に、前記セクタごとの読み出しエラーを検出するエラー検出工程と、
前記エラー検出工程によって検出された前記読み出しエラーに応じてキャッシュすべきか否かを取捨選択して前記セクタごとにデータをキャッシュするように制御するキャッシュ制御工程と、
をコンピュータに実行させることを特徴とするディスクキャッシュプログラム。
【００６７】
【発明の効果】
以上説明したように、本発明によれば、読み出し目標であるセクタが読み出されるまでにエラーが検出された場合でも、オントラックした直後のセクタから読み出し目標であるセクタまでに読み出されたデータを有効活用することが可能なディスクキャッシュ装置が得られるという効果を奏する。さらに、これに関連して、キャッシュに登録されるデータが増えることによってキャッシュ処理のヒット率を向上させることができるので、ディスクキャッシュ装置の性能を向上させることが可能になる。
【００６８】
また、本発明によれば、読み出し目標であるセクタが読み出されるまでにエラーが検出された場合でも、正常に読み出されたデータのみを有効活用することが可能なディスクキャッシュ装置が得られるという効果を奏する。
【００６９】
また、本発明によれば、キャッシング効率が低下しない程度のセクタ数を持つ場合にのみキャッシュをおこなうことができ、いたずらにキャッシュ処理をおこなうことに伴うキャッシュ管理領域の増加に起因する性能低下を防ぐことが可能なディスクキャッシュ装置が得られるという効果を奏する。
【００７０】
また、本発明によれば、プレリード中でのオーバーヘッドを最小限にすることが可能なディスクキャッシュ装置が得られるという効果を奏する。
【００７１】
また、本発明によれば、プレリード中にインデックスを跨ぐ場合でも、論理的に矛盾することなくキャッシュすることが可能なディスクキャッシュ装置が得られるという効果を奏する。
【図面の簡単な説明】
【図１】本実施の形態に係るディスクキャッシュ装置の構成を示すブロック図である。
【図２】プレリード処理を説明するための図である。
【図３】ディスクキャッシュ処理を説明するための図である。
【図４】ディスクキャッシュ処理を説明するための図である。
【図５】本実施の形態に係るディスクキャッシュ処理の手順を示すフローチャートである。
【図６】変形例を説明するための図である。
【符号の説明】
１  ホスト
１０  ディスクキャッシュ装置
１１  ホスト転送処理部
１２  コマンド処理部
１２ａ  コマンドキュー
１３  ディスク
１４  バッファメモリ
１５  キャッシュ管理テーブル
１６ａ  プレリードセクタポインタ
１６ｂ  プレリードエラーセクタポインタ
１６ｃ  目標リードセクタポインタ
１７ａ  プレリードカウンタ
１７ｂ  プレリード成功カウンタ
１８  ディスク制御部
１８ａ  書込制御部
１８ｂ  読出制御部
１８ｃ  エラー検出部
１８ｄ  キャッシュ制御部
【図１】
2004295189.tif 000003
【図２】
2004295189.tif 000004
【図３】
2004295189.tif 000005
【図４】
2004295189.tif 000006
【図５】
2004295189.tif 000007
【図６】
2004295189.tif 000008