(57)【要約】【課題】ＡＶ用ディスク装置において、ディスク上にデータ領域と交替領域を交互に配置する。データ領域から交替領域へのスリップ処理を実行する際に、移動対象となる領域を一時退避用のメモリに記憶する必要がある。そのメモリについて使用量を減らす手段を提供する。【解決手段】本発明のディスク装置は、読み出し範囲の前半に不良セクタを検出した場合に、データの先頭から不良セクタまでのブロックについて、一時退避用メモリを経由して、データ領域前方の交替領域に移動する。この際に、不良セクタの発生位置に応じて、スリップする方向を動的に変更する制御方法を用いることで、後方の交替領域のみを使用する従来方式にくらべて、一時退避用メモリの使用量を減らすことができる。【選択図】図５
2004185709.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置に接続されたディスク装置の交替処理方法であって、
前記ホスト装置からの読み出し範囲に対応する記録領域を所定の領域に区分けし、該区分けした領域の前半部に不良セクタを検出した場合には、前記記録領域の前方に接する交替領域に空き領域があるか否かを確認し、
空き領域がある場合には、読み出しデータの先頭セクタから当該不良セクタまでのブロックを前記記録領域の前方に接する交替領域に配置することを特徴とする交替処理方法。
【請求項２】
請求項１記載の交替処理方法であって、
前記記録領域の前方に接する交替領域に空き領域があるか否かを確認し、
空き領域がない場合には、読み出しデータの先頭セクタから当該不良セクタまでのブロックを前記記録領域の後方に接する交替領域に配置することを特徴とする交替処理方法。
【請求項３】
請求項１記載の交替処理方法であって、
前記該区分けした領域の後半部に不良セクタを検出した場合には、前記記録領域の後方に接する交替領域に空き領域があるか否かを確認し、
空き領域がある場合には、読み出しデータの先頭セクタから当該不良セクタまでのブロックを前記記録領域の後方に接する交替領域に配置することを特徴とする交替処理方法。
【請求項４】
請求項１記載の交替処理方法であって、
前記ホスト装置からの読み出し範囲に対応する記録領域の前半部に複数の不良セクタを検出した場合に、前記記録領域の前方に接する交替領域に空き領域があるか否かを確認し、
空き領域がある場合には、当該読み出しデータの先頭から前記複数の不良セクタのうちの最後の不良セクタまでのブロックを、記録領域の前方に接する交替領域に配置することを特徴とする交替処理方法。
【請求項５】
ディスクと、当該ディスクに接続されるディスクインタフェースと、当該ディスクインタフェースに接続されスタックとキューと不良検出手段とを有するディスク制御手段と、当該ディスク制御手段とホスト装置とを接続するホストインタフェースと、当該ホストインタフェースと前記ディスク制御手段とを接続するバッファと、前記ディスク制御手段に接続された不揮発性メモリを有するディスク装置の交替処理方法であって、
前記ホスト装置からの読み出し範囲に対応する記録領域を所定の領域に区分けし、
該区分けした領域の前半部は前記ディスク制御手段の前記スタックに入力され、該区分けした領域の後半部は前記ディスク制御手段のを前記キューに入力され、
前記不良検出手段は、前記スタック及び前記キューに格納されたデータの不良セクタを検出して前期不良セクタに対応するアドレスを記憶して前記バッファへ出力し、
前記バッファに格納したデータのうちで、前記アドレスに対応する不良セクタから転送データの最後のデータまでのブロックを前記不揮発性メモリに記録することを特徴とする交替処理方法。
【請求項６】
ディスクと、
当該ディスクに接続されるディスクインタフェースと、
当該ディスクインタフェースに接続されるディスク制御手段と、
当該ディスク制御手段とホスト装置とを接続するホストインタフェースと、
当該ホストインタフェースと前記ディスク制御手段とを接続するバッファと、
前記ディスク制御手段に接続され、交替処理用データを記録するキャッシュメモリを有し、
前記ディスク制御手段は、前記ホスト装置からの読み出し範囲に対応する記録領域を所定の領域に区分けし、当該区分けした前半部のブロックを記憶するスタックと、後半部のブロックを記憶するキューと、スタックとキューの出力を合成する合成手段と、スタックとバッファならびにキューとバッファの間に配置され読み出しデータのうちの不良セクタを検出する不良検出手段とを有することを特徴とするディスク装置。
【請求項７】
請求項６記載のディスク装置であって、
前記交替処理用データを記憶するキャッシュは、不揮発性メモリであることを特徴とする請求項６記載のディスク装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスク装置の交替処理方法に関する。
【０００２】
【従来の技術】
ディスク装置において、データの読み出しや書き込みができないセクタについて、エラー回復処理を実施した後に、ディスク上の別領域（交替領域と記す）に再配置する修復処理を、スキップ処理と呼ぶ。スキップ処理は、ディスクの不良セクタの存在を隠蔽し、ホスト装置におけるアドレス管理のコストを減らすという点で、有用である。しかし、その一方で、該当データへのアクセス要求があった際に、通常時のコマンド処理時間の外に、データ領域と交替領域の往復によるシーク動作や回転待ちの時間を新たに必要とする。このようなスキップ処理にともなうオーバヘッドは、ディスク装置の実効データ転送速度の低下を引き起こす要因となる。特に、コマンド処理の実行期限があるビデオ再生やテレビ録画などのＡＶ用途に、ディスク装置を用いる場合には望ましくない。
【０００３】
そこで、ＡＶ用ディスク装置では、データ領域に隣接する交替領域を用意し、▲１▼読み出したデータ領域の先頭から末尾へ向かって不良セクタを検出し、▲２▼不良セクタからデータ領域の末尾までのブロックを一時退避用のメモリに複写し、▲３▼そのブロックを、▲１▼で検出した不良セクタの直後からデータ領域後方の交替領域にずらしこんで、再配置するという手順を実施する。このように、不良セクタを含んだ正常セクタをブロックとして一括移動する修復処理を、前述のスキップ処理と区別し、スリップ処理と呼ぶ（例えば、特許文献１参照）。
【０００４】
スリップ処理のより望ましい形態では、▲２▼の一時退避用のメモリについて、不揮発性メモリを用いる方法がある（例えば、特許文献２参照）。これにより、再配置中での電源切断によるデータ紛失を防止する。また、対象ブロックを長期間保持できるので、ホストのコマンド発行を妨げない、ディスク装置の空き時間（例えば、起動時など）において、メモリからディスクへの再移動が容易となる。
【０００５】
【特許文献１】
特開平５−２８６４６号公報
【特許文献２】
特開２０００−５７６９８号公報
【０００６】
【発明が解決しようとする課題】
上記従来技術によるスリップ処理では、データ領域の先頭付近に不良セクタが発生する場合に、領域全体に匹敵する（例えば、１メガバイト）ブロックを一時退避用メモリに記憶する必要がある。しかし、不揮発性メモリ（例えば、ＥＥＰＲＯＭ）は、揮発性メモリ（例えば、ＤＲＡＭ）にくらべて高価であり、ディスクの交替処理に用いる際に、その記憶容量（例えば、数十メガバイトから数百メガバイト）を無制限に大きくすることは難しい。
【０００７】
【課題を解決するための手段】
本発明のスリップ処理方法では、後方の交替領域のみを使用する従来方式と比較し、一時退避用メモリの使用量を減らすスリップ処理方法を実現する。さらに、複数の不良セクタが発生する場合に対応できる汎用的なスリップ処理方法およびディスク制御装置を提供する。
【０００８】
本発明のディスク装置の交替処理方法は、読み出し範囲内における不良セクタの発生位置にしたがって、不良セクタを含んだブロックについて、スリップ方向を変更する。つまり、読み出し範囲の前半に不良セクタを検出した場合に、読み出しデータの先頭セクタから不良セクタまでのブロックについて、記録領域の前方に接する交替領域にスリップする。また、読み出し範囲の前半部に不良セクタが複数発生する場合には、読み出しデータの先頭から最後の不良セクタまでのブロックを記録領域の前方に接する交替領域にスリップする。
【０００９】
本発明のディスク装置は、読み出しデータの前半部のブロックを記憶するスタックと、読み出しデータの後半部のブロックを記憶するキューと、スタックとキューの出力を合成し、ホスト装置への転送データを記録するバッファとを有する。特に、ディスク装置の制御装置は、スタックとバッファ、ならびに、キューとバッファの間にエラー検出手段を、スタックとキャッシュ、ならびに、キューとキャッシュの間にメモリ間転送手段を備える。キャッシュは、不揮発性メモリを用いて実現する。
【００１０】
このディスク装置の交替処理方法では、読み出しデータを、スタックからバッファへブロック単位で転送する間に不良セクタを検出し、不良検出以降の転送データの末尾のブロックまでを、スリップ処理の対象としてキャッシュに記録する。
【００１１】
【発明の実施の形態】
本発明の実施形態の詳細な説明に先立って、各図面を用いて本発明の概略を示す。
【００１２】
図１は、本発明のディスク制御装置の構成を説明するブロック図である。
ホストシステム１０１に対するディスク装置は、ＡＶデータ等を記憶する媒体であるディスク１０３と、ディスク装置全体を制御するディスク制御装置（プロセッサ）１０５とに有する。ディスク１０３とプロセッサ１０５は、ディスクからデータを読み出す、あるいは、書き込むディスクインタフェース１０４を介して結合する。また、プロセッサ１０５とホストシステム１０１とは、ホストシステムが発行するコマンドを解釈し、データ転送など規定の処理を実行し応答するホストインタフェース１０２で結合する。ディスクインタフェース１０４とホストインタフェース１０２との間には、データ転送速度の差を吸収する一時記憶用のメモリとしてバッファ１１３がある。その他に、ディスク上の不良セクタを別領域に交替する際の一時記憶用のメモリとしてキャッシュ１１４がある。
【００１３】
ホストシステム１０１の読み出し要求にしたがって、ディスク１０３から、ディスクインタフェース１０４を介して、バッファ１１３へデータを転送する。さらに、バッファ１１３から、ホストインタフェース１０２を介して、ホストシステム１０１へデータを転送する。以上のデータ転送処理を制御するプログラム１２０がプロセッサ１０５において動作する。
【００１４】
また、読み出しエラー発生時に、ディスク１０３からバッファ１１３を介してキャッシュ１１４へ間接に、あるいはディスクからキャッシュ１１４へ直接に、エラーを含んだデータを転送する。ホストシステムによる再読み出し要求、上書き要求、あるいはディスク制御装置による修復処理に従って、エラーを修復する。さらに、キャッシュ１１４からディスクインタフェース１０４を介して、ディスク１０３へ修復したデータを書き込む。以上の交替処理を制御するプログラム１３０がプロセッサ１０５において動作する。
【００１５】
図２は、本発明のスリップ処理の概念を説明するディスク上のセクタ配置図である。ディスク装置は、ディスク上でデータ領域と交替領域とが交互に配置する。図２（４）において、任意のデータ領域２１０は、前方の交替領域２１１および後方の交替領域２１４に挟まれる。本発明では、セクタ配置上でデータ領域２１０を前半部２１２と後半部２１３とに区別する。図中のａからｊまでの記号は、少なくとも１つ以上のセクタの集まりのブロック（以下、クラスタと呼ぶ）であり、ホスト装置によるディスクアクセスの基本単位を示す。
【００１６】
図２（１）（２）（３）では、図２（４）で示したデータ領域について、クラスタｂ、ｄあるいはｈが不良となった場合のスリップ処理の対象を示す。図２（１）の２１５および図２（２）の２２１は、交替領域２１１を使用する、前方へのスリップ対象となるブロック（以下、クラスタ群と呼ぶ）である。他方、図２（２）の２２３および図２（３）の２３２は、交替領域２１４を使用する後方へのスリップ対象となるクラスタ群である。また、図２（１）の２１６、図２（２）の２２２、図２（３）の２３１は、スリップしないクラスタ群である。
【００１７】
図４は、キューのみを用いた、スリップ対象となるクラスタ群の抽出方法を説明するフローチャートである。
【００１８】
本発明の別のディスク装置では、キューのみで構成する（図１（２）参照）。従来技術のバッファ制御方式の手順では、読み出しキューからバッファへデータを転送する（４１１）際に、不良を検出すると、該当アドレスを記憶（４１２）し、転送用バッファから該当アドレスからデータの末尾までをデータ転送用バッファから代替処理用キャッシュへ複写する（４１４）。これに対して、本発明のバッファ制御方式では、読み出し範囲の前半について、不良を検出すると、該当アドレスを記憶し、前方向へスリップ処理する手順（４２１〜４２５）を追加している（＝図中では破線で囲んでいる）。
【００１９】
なお、図４の抽出方法（及び図１（２））のディスク装置では、データの先頭から末尾まで、あるいは、データの前半部に関して、読み出しデータの全てを参照しないと前方向へのスリップ対象となるクラスタ群を決定できない、という問題がある。この問題を解決する、より望ましい実施形態を図３（及び図１（１）のディスク装置）を用いて説明する。
【００２０】
図３は、キューとスタックを用いてスリップ対象となるセクタの抽出方法を説明するフローチャートである。
【００２１】
本発明のディスク装置では、読み出し範囲の前半部について、キューではなくて、スタックに記憶する（図１（１）参照）。そのため、データ前半部の終わりからデータの先頭へ向けて探索でき、さらに、検出以降のデータをスリップ対象のクラスタ群と決定する手順（３１０〜３１５）を追加している（＝図中では破線で囲んでいる）。
【００２２】
図５は、前方向の交替領域を用いたスリップ処理の概要を説明するフローチャートである。従来の交替処理方式の手順では、読み出しデータについて不良セクタを検出（５１０）した場合に、検出以降のクラスタ群をデータ領域の後方に接する交替領域にスリップする処理（５１１〜５１３）を提供する。これに対して、本発明の交替処理方式では、従来方式に加えて、データ領域の前方に接する交替領域にスリップする手順（５２１〜５２３）を追加している（＝図中では破線で囲んでいる）。
各図面を参照して、本発明の第一の実施形態について説明する。
【００２３】
この実施形態は、アクセスしたデータ領域について複数の不良セクタが同時発生した場合に、データ領域を（ａ）不良セクタを含んだ領域、（ｂ）正常セクタのみで構成する領域、（ｃ）不良セクタを含んだ領域に３分割し、さらに、（ａ）を前方の交替領域へ、（ｃ）を後方の交替領域へスリップすることを特徴とする。一方、従来方式では、（ｄ）正常セクタのみで構成する領域、（ｅ）不良セクタを含んだ領域に２分割し、さらに、（ｅ）を後方の交替領域へスリップする。従来方式に比べて、本発明は、スリップ処理の対象となるクラスタ数を減らすことを目的とする。
【００２４】
図２（４）では、ｎ個のクラスタ群（図２ではｎ＝１０）がディスク上の連続領域に記憶されている様子を示す。ディスク装置の機能仕様やホスト装置の読み出し要求のサイズをもとにして、前半部のクラスタ群２１２（図２では、ａ〜ｅの５個）と、後半部のクラスタ群２１３（図２では、ｆ〜ｊの５個）とに分割する。
【００２５】
まず、このデータ領域（読み出し範囲）２１０の前半部と後半部にそれぞれ１個ずつ不良（図中ではクラスタｂとｈ）が発生した例をもとに、従来方式（図２（３））と本発明の方式（図２（２））との相違点を述べる。いずれの場合も、不良クラスタと正常クラスタとが混在したクラスタ群を移動する。しかし、図２（３）では後方の交替領域２１４のみを使用するのに対し、図２（２）では交替領域２１１と２１４の両方を使用するのが大きな違いである。
【００２６】
まず、読み出し範囲に複数個の不良が同時発生する場合について、図２と図５を交えて、交替処理の手順を説明する。
【００２７】
図２（３）では、データ領域の先頭から読み出し、クラスタａは正常であるが、クラスタｂにおいて不良を検出し（５１０）、さらに、クラスタｈでも不良を検出した（５１２）。このときに、ディスク制御装置は、後方の交替領域２１４の空きがあることを確認（５１１）し、クラスタ群２３２（ｂ〜ｊ）についてスリップ処理を実施する（５１２）。空きがない場合には、スリップ処理を中止し、ホスト装置にエラーなどでその由を通知する（５１３）。この例では、２個のクラスタの不良発生に対し、９個のクラスタがスリップ対象となる。
【００２８】
図２（２）では、同じくデータ領域の先頭から読み出し、不良を検出（５１０）したクラスタｂでは、読み出し範囲の前半であることを確認（５２１）し、ディスク制御装置は、前方の交替領域２１１の空きがあることを確認（５２２）し、クラスタ群２２１（ａ、ｂ）についてスリップ処理を実行する（５２３）。なお、空きがない場合には、前方向ではなくて、上述の図２（３）の手順と同様に、後方の交替領域２１４の空きがあることを確認し、クラスタ群２３２（ｂ〜ｊ）についてスリップ処理を実行する（５１２）。
つぎに、不良を検出（５１０）したクラスタｈについて、読み出し範囲の後半であることを確認（５２２）し、クラスタ群２１３（ｈ〜ｊ）についてスリップ処理を実施する（５１２）。この例では、２個のクラスタの不良発生に対し、５個のクラスタがスリップ対象となる。
【００２９】
このように、図２（２）では、（データ領域の先頭から順に）、（ａ）前方向のスリップ対象、（ｂ）スリップ対象外、（ｃ）後方向のスリップ対象と三分割するので、図２（３）における二分割の場合に比べて、スリップ対象となるクラスタ数が少なくて済む可能性が高く、その場合に、一時退避用の不揮発性メモリの使用量が減ることが期待できる。本発明は、特に、データ領域の先頭付近（データ先頭からｎ／４までの範囲）において不良が発生する場合に、従来方式に比べて効果的である。
【００３０】
本発明では、データ領域を前半部と後半部とに分けるステップ（５２１）を必要とする。たとえば、不良発生が２個以内であれば、データ領域の先頭から最初の不良発生までのブロックを前方の交替領域に、つぎの不良発生からデータ領域の末尾までを後方の交替領域に振り分けられる別方式が考えられる。図２（２）のようにデータ領域の前半部と後半部とに不良が分散する場合には、二つの方式のいずれであっても、再配置の結果は、同じとなる。しかし、前半部（図２（１））もしくは後半部（図面省略）に集中する場合には、異なる。スリップ対象となるクラスタの個数にも差が生まれる。たとえば、クラスタｂとクラスタｄが不良の場合、クラスタ群ａ〜ｄをスリップする本発明の方式と、クラスタ群ａ〜ｂおよびクラスタ群ｄ〜ｊをスリップする別の方式となる。前者は、前方へ４個のクラスタをスリップし、後者は９個のスリップ（前方２、後方７）を必要とする。
【００３１】
図面を参照して、本発明の第二の実施形態について説明する。
【００３２】
この実施形態は、アクセスしたデータ領域について複数の不良セクタが連続して発生した場合に、スリップする方向を変更することを特徴とする。前方もしくは後方の交替領域について偏りなく使用することが望ましい。そのため、以下の手順をとる。１回目の不良発生では、不良セクタの発生位置がデータ領域の先頭と末尾の何れか近い交替領域を用いてスリップ処理を行い、２回目の不良発生では、１回目とは逆方向にスリップ処理を行う。それ以降ｉ回目の不良発生では、（ｉ−１）番目とは逆方向にスリップ処理を行う。
【００３３】
スリップ処理を２回繰返す例において、方向変更の手順の有用性を詳細に説明する。なお、図面は、図２（２）および（３）を用いる。
【００３４】
最初にクラスタｈに不良が発生し、スリップ処理を実施した後に、つぎにクラスタｂに不良が発生する場合に、スリップ処理の対象となりキャッシュに移動する、クラスタの総数を試算する。図２（２）では、５個のクラスタ（一回目の３個：クラスタ群ｈ〜ｊ、二回目の２個：クラスタ群ａ〜ｂ）である。一方、図２（３）では、１２個のクラスタ（一回目の３個：クラスタ群ｈ〜ｊ、二回目の９個：クラスタ群ｂ〜ｊ）である。
【００３５】
同様に、最初にクラスタｂに不良が発生し、スリップ処理を実施した後に、つぎにクラスタｈ（ただし、図２（３）ではクラスタｇがスキップした位置が相当）に不良が発生する場合のクラスタ数も試算する。図２（２）では、５個のクラスタ（一回目の２個：クラスタ群ａ〜ｂ、二回目の３個：クラスタ群ｈ〜ｊ）である。一方、図２（３）では、１３個のクラスタ（一回目の９個：クラスタ群ｂ〜ｊ、二回目の４個：クラスタ群ｇ〜ｊ）である。
【００３６】
本発明の有用性について、スリップ処理の対象となるクラスタの総数の最大値をもとに評価する。従来方式では、データ領域の先頭に不良が連続的に発生する場合である。最大値ｎ個が２回繰返すことになる。したがって、累計ではｎ  ＋  ｎ  ＝  ２ｎ個となる。一方、本発明のスリップ処理では、一回目の最大値は、データ領域の中央で発生する場合のｎ／２個であり、二回目の最大値は、データ領域の先頭もしくは後尾で発生する場合のｎ個である。したがって、累計では、ｎ／２  ＋  ｎ  ＝  ３ｎ／２個となる。したがって、ｎが十分大きいときに、本発明の方式は、交替処理用バッファのメモリサイズが、従来方式の３／４のサイズで済むことが期待できる。
【００３７】
以上では、読み出し範囲における不良セクタの発生位置にしたがって、不良セクタを含んだブロックについて、スリップ方向を変更する、本発明のディスク装置の交替処理方法の概要とその有用性について述べた。その形態は、ホスト装置の読み出し範囲の前半に不良セクタを検出した場合に、読み出しデータの先頭セクタから不良セクタまでのクラスタについて、記録領域の前方に接する交替領域にスリップすることである。その結果、スリップ対象となるクラスタの最大数が減ることを説明した。特に、同じデータ領域に、不良セクタが継続して発生し、そのつど、スリップ処理を繰返す場合に、本発明の方式は有用である。
【００３８】
図面を参照して、本発明の第三の実施形態について説明する。
【００３９】
不良セクタが複数発生する場合を想定し、読み出し範囲の前半部をスタックに記憶することで、スリップ対象となるセクタを高速に抽出できる本発明を実現するディスク制御装置の構成と手順について説明する。
【００４０】
図１（２）と図４を用いて、本発明の実施の形態を説明する。図４の手順では、前方向のスリップ処理を決定するのに、データ領域の前半部について、先頭からその末尾までを参照する。
【００４１】
まず、図１（２）、図２（２）、図４を用いて、本発明の形態を説明する。図１（２）において、読み出し用のキュー１１２と書き込み用のキュー１１５を備え、それぞれバッファ１１３とキャッシュ１１４とデータのやりとりを行う。転送回路１２４がキューに記憶したデータをバッファ１１３にクラスタ単位を転送する間に、その回路の前段にある不良検出回路１２１で不良を検出した場合には、その由を転送回路１２３に伝える。転送回路１２３は、各コマンド処理の後処理、バッファ１２３の空き容量がなくなる、ホストシステム１０１からの代替処理の実行指示などのイベントにしたがって、代替処理用の該当クラスタをバッファ１１３からキャッシュ１１４へ転送する。その後、交替制御手段１３０がディスク制御部１０５を通じて、転送回路１３１を用いて、スリップ処理（書き込み処理相当）を実行する。該当データをキャッシュ１１４からキュー１１５へ転送する。
【００４２】
図４において、本発明のバッファ制御手段１２０はディスク制御装置１０５を通じて、以下の手順を実施する。なお、以下、図２（１）の例をもとに手順を説明する。
【００４３】
ホストシステム１０１の要求にあわせて、ディスクインタフェース１０４を経由してディスク１０３より読み出したデータａ〜ｊを（３１０）をキュー１１２に記憶する（４１０）。
【００４４】
まず、読み出し範囲の前半部ａ〜ｅを転送した場合を述べる。データ転送回路１２４は、キュー１１２からバッファ１１３へデータをクラスタ単位で転送する（４１１）。キュー１１２上の各クラスタについて、誤り訂正符号などの既存技術を用いて修復できない場合に不良とみなす。データ転送回路１２４の前段にある不良検出回路１２１が、不良を検出できない場合（４２１）は、データの前半部の末尾までをクラスタ単位で転送を繰り返す（４２３）。特に、不良検出回路１２１が、転送データ中の不良セクタを検出した場合は、不良発生のアドレス１として記憶する（４２２）。読み出し範囲の前半部について不良が複数個存在する場合には、アドレス１は更新されることになる。図２（１）の例では、不良発生のアドレス１は一旦クラスタｂのアドレスを記録した後に、クラスタｄのアドレスを記憶する。さらにクラスタｅまで転送して初めて、アドレス１は、クラスタｄで確定できる。
【００４５】
引き続き、読み出し範囲の後半部ｆ〜ｊを転送した場合を述べる。図２（１）の例では、不良セクタがないので、不良発生のアドレス２を記憶しないで、転送を続ける（４２３）。なお、図２（２）の例では、不良セクタｈを検出してそのアドレスを記憶することになる（４１３）。
【００４６】
すべてのデータをキュー１１１からバッファ１１３へ転送した後に、アドレス１が記憶されている（４２４）場合には、データの先頭からアドレス１までのクラスタをバッファ１１３からキャッシュ１１４へ複写する（４２５）。同様に、アドレス２が記憶されていれる場合（４１４）には、アドレス２からデータの末尾までのクラスタをバッファからキャッシュ１１４へ複写する（４２５）。
【００４７】
図１（２）と図３を用いて、本発明のより望ましい実施の形態を説明する。図４の手順では、複数個の不良発生の場合を想定し、検出した不良が最もデータ領域の中央よりの不良であるかを確認するステップ（４２３）を含む手順をとる必要があった。また、スリップ処理対象となるクラスタ群は、最終の不良以前のクラスタであるので、キューからバッファへのデータ転送処理が完了した後に（ホストのコマンド発行の間隔やディスク装置での処理状況によっては、さらに、バッファからホストインタフェースへ転送した後に）はじめて、バッファから交替処理用のキャッシュへ複写可能となる。
【００４８】
まず、図１（１）、図２（１）、図３を用いて、本発明のより望ましい実施の形態を説明する。図１（１）では、図１（２）にスタック１１１を新設し、データ領域の前半部をスタック１１１に入力しデータ領域の後半部をキュー１１２に入力し、その結果を合成器１２２で読み出しデータを合成する部分が追加されている。ここで、キューの代わりにスタックを用いるのは、データの前半部の末尾から転送する手順を実施するためである。このように、逆方向の読み出しを実施することで、スリップ処理の対象となるクラスタ群の抽出が容易となる。
【００４９】
図３において、本発明のバッファ制御手段１２０はディスク制御装置１０５を通じて、以下の手順を実施する。なお、以下、図２（１）の例をもとに手順を説明する。
【００５０】
ホストシステム１０１の要求にあわせて、ディスクインタフェース１０４を経由してディスク１０３より読み出したデータａ〜ｊを分割し（３１０）、読み出し範囲の前半部であるクラスタ群ａ〜ｅについてスタック１１１に記憶（３１１）し、後半部であるクラスタ群ｆ〜ｊについてキュー１１２に記憶する（３２１）。
【００５１】
データ転送回路（兼データ合成回路）１２２は、スタック１１１からバッファ１１３へデータをクラスタ単位で転送する（３１２）。ここで、スタックの特徴を利用して、入力順ａ、ｂ、ｃ、ｄ、ｅの逆順である、ｅ、ｄ、ｃ、ｂ、ａで出力する。スタック１１１上の各クラスタについて、誤り訂正符号などの既存技術を用いて修復できない場合に不良とみなす。データ転送回路１２２の前段にある不良検出回路１２１が、不良を検出できない場合は、データの前半部の末尾までをクラスタ単位で転送を繰り返す（３１５）。特に、不良検出回路１２１が、転送データ中の不良セクタを検出した場合は、それ以降の転送するクラスタ群について、バッファ１１３の他に、キャッシュ１１４に対し、転送するようにデータ転送回路１２３を動作させる（３１４）。
【００５２】
データ転送回路（兼データ合成回路）１２２は、キュー１１２からバッファ１１３へデータをクラスタ単位で転送する（３２１）。ここで、キューの特徴を利用して、入力順ｆ、ｇ、ｈ、ｉ、ｊの順序のままに出力する。キュー１１２上の各クラスタについて、誤り訂正符号などの既存技術を用いて修復できない場合に不良とみなす。データ転送回路１２２の前段にある不良検出回路１２１が、不良を検出できない場合は、データの前半部の末尾までをクラスタ単位で転送を繰り返す（３２５）。特に、不良検出回路１２１が、転送データ中の不良セクタを検出した場合は、それ以降の転送するクラスタ群について、バッファ１１３の他に、キャッシュ１１４に対し、転送するようにデータ転送回路１２３を動作させる（３２４）。
【００５３】
バッファ制御装置では、読み出し範囲の前半と後半との両方が末尾まで転送できたときに、バッファ１１３上で、ホスト装置からの読み出し要求にあわせた形式（ａ、ｂ、ｃ、…、ｊ）を合成する（３３０）。
【００５４】
上述のように、スタック１１１からバッファ１１３までと、キュー１１２からバッファ１１３までと、双対な処理手順および制御回路で実現する。転送処理の並列化が計れるとともに、さらに、同じ構成の不良検出回路１２１や転送回路１２２を共通使用できるので回路規模が増加しないという利点がある。さらに、不良セクタ検出後に、バッファへのデータ転送と、並行して、キャッシュへのデータ転送を開始できるなどの利点がある。
【００５５】
キャッシュ１１４からディスク１０３へのスリップ対象の書き込みは前述した手順と同じなので省略する。
【００５６】
【発明の効果】
読み出し範囲の前半に不良セクタを検出した場合に、データの先頭から不良セクタまでのブロックについて、データ領域前方の交替領域にスリップすることで、後方の交替領域のみを使用する従来のスリップ処理方式にくらべて、スリップ処理用の不揮発性メモリの使用量を減らすことができる。
【００５７】
また、不良セクタが複数発生する場合を想定し、読み出し範囲の前半部をスタックに記憶することで、スリップ対象となるセクタを高速に抽出できる。
【図面の簡単な説明】
【図１】本発明のディスク制御装置の構成を説明するブロック図
【図２】本発明のスリップ処理の概念を説明するディスク上のセクタ配置図
【図３】キューとスタックを用いた、スリップ対象となるセクタの抽出方法を説明するフローチャート。
【図４】キューを用いた、スリップ対象となるセクタの抽出方法を説明するフローチャート。
【図５】前方向の交替領域を用いた、本発明のスリップ処理の概要を説明するフローチャート。
【符号の説明】
１０５…ディスク制御装置、１１１…スタック、１１２…キュー、１１３…バッファ、１１４…キャッシュ、１２１…不良検出手段、１２３…転送手段
【図１】
2004185709.tif 000003
【図２】
2004185709.tif 000004
【図３】
2004185709.tif 000005
【図４】
2004185709.tif 000006
【図５】
2004185709.tif 000007