本発明の一実施形態について図1ないし図16に基づいて説明すると以下の通りである。すなわち、本実施形態に係るキャッシュメモリユニットは、例えば、ディスク装置などに好適に用いられ、記録装置の信頼性向上と、しかも、見かけ上のアクセス速度向上との双方を実現できる。
以下では、キャッシュメモリユニットの詳細な動作について説明する前に、当該キャッシュメモリユニットがディスク装置に使用されている場合を例にして、ディスク装置を含むシステムの全体構成および動作を簡単に説明する。図1に示すように、本実施形態に係るシステム1は、データを読み書き可能なディスク装置2と、当該ディスク装置2へデータの読み書きを指示する上位装置3とを備えている。
当該ディスク装置2には、記録媒体としてのディスク11と、当該ディスク11に対してデータの読み書きを行う書き込み/読み出し回路12と、当該書き込み/読み出し回路12がディスク11に読み書きするデータを蓄えるキャッシュメモリユニット13と、キャッシュメモリユニット13および上位装置3の間のデータ転送を行う入出力回路14とが設けられている。なお、上記キャッシュメモリユニット13は、ライトスルーキャッシュであってもよいが、以下では、見かけ上のアクセス速度をさらに向上できる構成として、キャッシュメモリユニット13がライトバックキャッシュである場合を例にして説明する。
上記ディスク11は、論理的には、セクタ単位での記録再生が可能であるが、物理的には、セクタの集合体であるクラスタ単位で記録再生されるものであって、上記書き込み/読み出し回路12は、クラスタ途中のセクタ位置からデータを書き込む場合、RMW動作を行うことができる。より詳細には、書き込み/読み出し回路12は、クラスタ途中のセクタ位置からデータを書き込む場合、一度、該当クラスタのデータ(クラスタデータ)の読み出しを行い、当該クラスタデータへライトすべきセクタのデータを合成した後、ディスク11へ、合成後のクラスタデータをクラスタ単位で書き戻すことができる。
本実施形態に係る各クラスタ(例えば、クラスタCn)は、例えば、図2に示すように、それぞれ32個のセクタSc0〜Sc31から構成されているが、当然ながら、1クラスタを構成するセクタ数は、任意の数に設定できる。
本実施形態では、ディスク11の各クラスタには、一意なIDとしてクラスタ番号が付されており、各クラスタをクラスタ番号によって特定できる。同様に、クラスタ内の各セクタには、少なくとも、そのクラスタ内で一意なIDとしてセクタ番号が付されており、各セクタをセクタ番号によって特定できる。
ここで、ディスク11は、例えば、製造時の不具合、経時劣化や汚れなど、種々の原因によって、記憶領域の一部にアクセスできなかったり、アクセスできなくなることがある。これに備えて、上記ディスク11は、あるクラスタに欠陥が発生した場合、他のクラスタで代替できるように構成されている。
具体的には、ディスク11の記憶領域には、欠陥管理エリアが設けられており、欠陥管理エリアには、欠陥が発生したクラスタと、それを現在代替しているクラスタ(最新の代替クラスタ)との対を示す欠陥情報が記憶されている。これにより、ディスク11へアクセスするディスク装置(例えば、ディスク装置2)は、ディスク11の欠陥情報を参照することによって、アクセスしようとしているクラスタに欠陥があるか否かを判定し、欠陥がある場合は、そのクラスタを代替したクラスタにアクセスできる。この結果、ディスク11の一部領域に欠陥が発生した場合であっても、上位装置3は、欠陥の発生したクラスタの代替処理を行う必要がなくなり、上位装置3の負担を軽減できる。なお、本実施形態では、上記欠陥情報は、代替元クラスタ番号と代替後のクラスタ番号の対として実現されている。
また、本実施形態に係るディスク11は、あるクラスタを他のクラスタで代替した場合、代替後のクラスタに関連付けて、代替前のクラスタの情報(代替前クラスタ情報)と、代替クラスタ混在情報とが記憶されている。当該代替クラスタ混在情報は、代替前クラスタにデータが残存しているか否かを示すものであって、当該代替後のクラスタの各セクタのうち、いずれのセクタを正常に代替でき、いずれのセクタは正常に代替できなかったかを示している。本実施形態では、一例として、各セクタに対応して設けられ、それぞれのセクタが正常に代替できたか否かを示すフラグによって、上記代替クラスタ混在情報が構成されている。
より具体的には、本実施形態に係る代替クラスタ混在情報では、一例として、後述する図8などに示すように、セクタSc0〜Sc31に対応するフラグが、最上位ビットから最下位ビットへの順番で並べられており、各フラグ(ビット)は、正常に代替できなかった場合は、”1”、正常に代替できた場合は、”0”に設定されている。また、本実施形態に係る代替前クラスタ情報には、代替なしを示す特別な値(例えば、0)が用意されている。一方、ディスク11へアクセスするディスク装置は、当該代替前クラスタ情報が当該特別な値であるか否かによって、代替前クラスタがあるか否かを判定できると共に、上記フラグが全て正常に代替できたことを示しているか否かによって、代替前のクラスタにデータが残存していないか否かを判定できる。
例えば、ある欠陥クラスタを読み出そうとした場合、一部セクタの読み出しに成功し、残余のセクタの読み出しに失敗した場合、読み出しに成功したセクタについては、そのデータを代替クラスタに書き込むことによって、当該セクタのデータを正常に代替できるが、読み出しに失敗したセクタについては、そのセクタに、どのようなデータが書き込まれていたが不明であるため、そのセクタのデータを代替クラスタに書き込むことができない。したがって、代替セクタは、当該セクタを正常に代替することができず、代替クラスタのデータのうち、読み出しに失敗したセクタのデータは、代替前クラスタに残存している。したがって、この場合は、各セクタの読み出しに成功したか否かを示す情報が上記代替クラスタ混在情報として記憶される。
一方、あるセクタの書き込み時に、当該セクタを含むクラスタを読み出そうとして、欠陥が判明し、代替クラスタを割り当てた場合、当該セクタのデータ(書き込み指示されたデータ)は、代替前のセクタの読み出しに成功したか否かに拘わらず、代替クラスタに正常に書き込むことができる。したがって、この場合、書き込み指示されたセクタについては、読み出しの成否に拘わらず、正常に代替できたことを示す情報が記憶される。
また、本実施形態に係るディスク11では、ある代替クラスタ(代替後クラスタ)に関する上記代替前クラスタ情報および代替クラスタ混在情報は、当該代替クラスタのアドレスフィールド(アドレス情報)の拡張データとして記憶されており、ディスク11へアクセスするディスク装置は、当該代替後クラスタのアドレス情報をデコードすることによって、アドレス情報に含まれる、代替前クラスタ情報および代替混在情報を取得できる。また、当該ディスク装置は、これらの情報に基づいて、代替前クラスタにデータが残存しているか否かと、データが残存している場合、そのデータが残存している代替前クラスタを特定できる。
ここで、あるクラスタに欠陥が発生して、当該クラスタの一部セクタのデータを読み出せなかった場合でも、他のセクタのデータは読み出せる場合がある。さらに、ある時点では、データを読み出せなかったセクタであっても、別の時点でリードリトライを行えば、読み出しに成功する場合がある。
したがって、上記のように、ディスク11に代替前クラスタ情報および代替クラスタ混在情報を記憶すると共に、代替前のクラスタにデータが残存してしまった場合、当該ディスク11にアクセスするディスク装置が、当該情報に基づいて代替前のクラスタへアクセスし、当該データの復旧を試みることによって、ディスク11の信頼性を向上できる。
一方、図1に示すように、上記ディスク装置2に設けられたキャッシュメモリユニット13は、上記ディスク11に読み書きするデータを蓄えるキャッシュメモリ21と、キャッシュメモリ21に蓄えられたデータを管理するための管理情報を記憶する管理情報メモリ22と、管理情報メモリ22の管理データを参照して、キャッシュメモリ21のデータを管理する制御回路23とを備えている。
一例として、本実施形態では、上記管理情報メモリ22および制御回路23は、揮発性メモリを内蔵したマイクロコンピュータによって実現されており、当該揮発性メモリの少なくとも一部が上記管理情報メモリ22として使用されている。また、上記キャッシュメモリ21と上記書き込み/読み出し回路12、あるいは、入出力回路14との間で、データの転送を実行するダイレクトメモリアクセスデバイスを備えていてもよい。
なお、図1では、一例として、制御回路23が、キャッシュメモリ21と書き込み/読み出し回路12および入出力回路14との間のデータ伝送経路上に配されている構成を例示したが、上記両回路12・14とキャッシュメモリ21との間にデータ伝送経路を形成できれば、例えば、上記各回路12・14が制御回路23から指示されたアドレスへアクセスしたり、キャッシュメモリ21が制御回路23から指示されたアドレスへのアクセスを受け付けたりして、上記各回路12・14が直接キャッシュメモリ21にアクセスしてもよい。
上記キャッシュメモリ21の記憶領域は、図3に示すように、セグメントと呼ばれる単位に分割されている。各セグメントには、それぞれを一意に識別可能なIDとして、セグメント番号(図3の例では、Se1…)が付されており、後述するように、各セグメントは、セグメント番号で管理されている。また、本実施形態では、1つのクラスタデータを、1つのセグメントに、そのまま記憶し、管理も容易にできるように、1つのセグメントのサイズは、上記クラスタのサイズと等しい値に設定されている。
また、管理情報メモリ22に記憶されている管理情報には、図4に示すように、ディスク11上での記録位置(クラスタ)とキャッシュメモリ21上での記録位置(セグメント)との対応関係を示す対応付情報が含まれている。
一方、上記制御回路23は、当該管理情報を参照して、あるクラスタのデータがキャッシュメモリ21にキャッシュされているか否かを判定できる。また、上記制御回路23は、例えば、データの読み出し、あるいは、RMWの際など、あるクラスタのデータをキャッシュメモリ21に新たに格納する場合、当該クラスタ用のセグメントとして、キャッシュメモリ21のセグメントのうち、空いているセグメントを割り当て、当該セグメントに当該クラスタのデータを記憶すると共に、当該セグメントと当該クラスタとの対応関係を示す対応付け情報を含む管理情報を生成し、管理情報メモリ22に格納できる。
本実施形態では、上記のように、クラスタのサイズとセグメントのサイズとが等しく、1つのクラスタのデータが1つのセグメントに格納されており、上記対応付情報は、セグメント番号情報とクラスタ番号情報との組み合わせとして実現されている。
さらに、上記管理情報には、上記代替クラスタに関する代替クラスタ情報も含まれている。より詳細には、各セグメントの管理情報MDには、上記代替クラスタ混在情報と、上記代替前クラスタ情報とが含まれており、制御回路23は、管理情報MD中の当該代替クラスタ混在情報および代替前クラスタ情報を参照することによって、「あるセグメントにキャッシュされているクラスタのデータ中に代替前クラスタのデータが残存しているか否か」を判定したり、および、「残存している場合は、その代替前クラスタ」を特定したりする度にディスク11にアクセスしなくても、これらの判定および特定処理を行うことができる。
この結果、上記判定処理および特定処理が必要になる度に、以下の処理を行う構成、すなわち、ディスク11にアクセスして、クラスタのアドレス情報を取得すると共に、当該アドレス情報をデコードし、代替クラスタ混在情報および代替前クラスタ情報を取得して、上記判定および特定処理を行う構成と比較して、これらの判定および特定処理をより高速に実施でき、上位装置3から見たときのディスク装置2のアクセス速度を大幅に向上させることができる。
また、上記管理情報MDには、通し番号としてのキャッシュリスト番号を示すキャッシュリスト番号情報が含まれており、制御回路23は、キャッシュリスト番号によって、各管理データMDを個別に識別できる。
さらに、本実施形態に係る管理情報MDには、代替前クラスタがキャッシュメモリ21にキャッシュされている場合に、代替前クラスタのデータが格納されたセグメントを管理する管理情報MDを示す代替前クラスタリスト番号の情報(代替前クラスタリスト番号情報)も含まれている。また、制御回路23は、あるクラスタの代替前クラスタのデータがキャッシュメモリ21に格納された場合、代替後のクラスタの管理情報MDの代替前クラスタリスト番号として、代替前のクラスタのデータが格納されたセグメントの管理情報MDを示す値を設定できる。
また、上記代替前クラスタリスト番号には、代替前クラスタがキャッシュされていないことを示す特別な値(例えば、FFFFFFFFh)が用意されており、制御回路23は、代替前クラスタがキャッシュされていない場合、あるいは、代替前クラスタのデータを格納したセグメントが解放され、当該データがキャッシュメモリ21から削除された場合には、上記管理情報MDの代替前クラスタリスト番号情報として、当該特別な値を設定できる。
これにより、代替前クラスタ情報に基づいて管理情報メモリ22を検索して、代替前クラスタがキャッシュされているか否かを判定したり、代替前クラスタがキャッシュされたセグメントの管理情報MDを特定したりする構成と比較して、制御回路23は、管理情報MDの代替前クラスタリスト番号情報を参照することによって、代替前クラスタがキャッシュされているか否かの判定処理と、代替前クラスタがキャッシュされている場合、代替前クラスタがキャッシュされたセグメントの管理情報MDの特定処理とを、より高速に実施できる。
さらに、本実施形態に係る管理情報MDには、その管理情報MDのセグメントにデータが格納されているクラスタが代替クラスタではなく、しかも、他のクラスタによって代替されている場合、そのクラスタを現在代替しているクラスタ(最新の代替クラスタ)を示す情報(最新代替クラスタ情報)が記憶されている。
なお、上記最新代替クラスタ情報には、そのクラスタが他のクラスタで代替されていないことを示す特別な値(例えば、FFFFFFFFh)が用意されており、制御回路23は、いずれのクラスタでも代替されていないクラスタをキャッシュする場合、当該クラスタの管理情報MDの最新代替クラスタ情報として、当該特別な値を設定できる。
本実施形態では、上記最新代替クラスタ情報は、最新の代替クラスタが格納されたセグメントの管理情報MDを示す情報(例えば、その管理情報MDの代替クラスタリスト番号)であり、当該情報を記憶する領域MAは、代替前クラスタリスト番号情報を記憶する領域MAと共用されている。また、制御回路23は、代替前クラスタ情報が代替なしを示している場合(例えば、0)、当該領域MAには、最新代替クラスタ情報が格納されていると判断し、代替前クラスタ情報が代替ありを示している場合(例えば、0以外の数値)、当該領域MAには、代替前クラスタリスト番号情報が記憶されていると判断する。
例えば、あるクラスタNが、いずれのクラスタによっても代替されていない場合(クラスタNに欠陥が発生していない場合など)、図5中、ハッチングで示すように、当該クラスタNの全セクタは、アクセスすべきデータ(有効なデータ)である。
この場合、当該クラスタNがキャッシュされた場合の管理情報MD(n)は、例えば、図6に示すようになる。具体的には、管理情報MD(n)のキャッシュリスト番号情報には、他の管理情報MDとは異なる値(例えば、X)が設定され、対応情報としてのクラスタ番号情報には、クラスタNを示す値(N)が設定されている。なお、図6、および、それ以降の図面では、対応情報のうち、セグメント番号情報の図示を省略している。
また、管理情報MD(n)の代替前クラスタ情報は、代替なしを示す値(例えば、0)に設定され、代替クラスタ混在情報は、代替前クラスタにデータが残存していないことを示す値(例えば、00000000h)に設定されている。さらに、管理情報MD(n)には、最新代替クラスタ情報として、代替なしを示す値(例えば、FFFFFFFFh)に設定されている。
一方、例えば、図7に示すように、上記クラスタNに欠陥が発生し、当該クラスタNの代替クラスタとして、クラスタMが割り当てられた場合、制御回路23は、両クラスタN・Mの管理情報MD(n)・MD(m)を、図8に示すように更新する。
具体的には、図7は、一例として、セクタSc14〜Sc31へのデータの書き込み、あるいは、クラスタNの各セクタSc14〜SC31からのデータ読み出しの成功によって、代替後のクラスタMのうち、セクタSc14〜Sc31は、代替に成功し、これらのセクタSc14〜Sc31にアクセスすべきデータ(有効なデータ)が格納される一方で、残余のセクタSc0〜Sc13の代替は失敗し、代替前のクラスタNのセクタSc0〜Sc13に、アクセスすべきデータが残存している場合を示している。
この場合、図8に示すように、クラスタMの管理情報MD(m)のキャッシュリスト番号情報には、他の管理情報MDとは異なる値(例えば、Y)が設定され、対応情報としてのクラスタ番号情報には、クラスタMを示す値(M)が設定されている。
また、クラスタMがクラスタNを代替しているので、管理情報MD(m)の代替前クラスタ情報は、クラスタNを示す値(N)に設定され、代替前クラスタリスト番号情報は、管理情報MD(n)を示す値(X)に設定されている。さらに、クラスタMは、セクタSc0〜Sc13の代替に失敗し、他のクラスタ(この場合は、N)にアクセスすべきデータが残存しているので、管理情報MD(m)の代替クラスタ混在情報には、セクタSc0〜Sc13の代替に失敗し、残余のセクタSc14〜Sc31の代替に成功したことを示す値(例えば、FFFC0000h)に設定されている。
一方、図7に示す状態の場合、管理情報MD(n)の最新代替クラスタ情報は、クラスタMの管理情報MD(m)を示す値(Y)に設定される。なお、残余の情報は、図6の場合と同一である。
なお、制御回路23は、例えば、セグメントのデータをディスク11へ書き戻す時点など、予め定められた時点で、例えば、書き込み/読み出し回路12へ指示するなどして、上記更新後の代替前クラスタ情報および代替クラスタ混在情報に応じて、ディスク11のクラスタのアドレス情報を更新させる。また、制御回路23は、例えば、セグメントのデータをディスク11へ書き戻す時点など、予め定められた時点で、例えば、書き込み/読み出し回路12へ指示するなどして、代替元クラスタの情報(この場合は、クラスタN)と、最新代替クラスタ情報の示す代替クラスタの情報(この場合は、クラスタM)とに応じて、ディスク11の欠陥情報領域の欠陥情報を更新させる。なお、本実施形態では、最新代替クラスタ情報が、最新の代替クラスタの管理情報を示しているので、制御回路23は、当該最新代替クラスタ情報の示す管理情報の対応情報を読み出すことによって、最新代替クラスタ情報の示す代替クラスタを特定できる。
また、さらに他の状況の例を図9〜図12を参照しながら説明する。すなわち、図7に示すように、クラスタNをクラスタMで代替した状態において、クラスタNに残存していたデータが書き込み指示によって上書きされ、そのデータが代替後のクラスタMに書き込まれたり、あるいは、クラスタNのリードリトライ動作によって、クラスタNに残存していたデータをクラスタMに正常に代替できたりして、図9に示すように、クラスタNに残存していたデータがなくなると、制御回路23は、図10に示すように、管理情報MD(n)およびMD(m)を更新する。
具体的には、管理情報MD(m)の代替クラスタ混在情報が代替前クラスタにデータが残存していないことを示す値(例えば、00000000h)に設定され、代替前クラスタ情報が、代替なしを示す値(0)に設定されると共に、最新代替クラスタ情報は、他のクラスタで代替されていないことを示す特別な値(例えば、FFFFFFFFh)に設定される。
また、制御回路23は、上記と同様、予め定められた時点で、上記更新後の代替前クラスタ情報および代替クラスタ混在情報に応じて、ディスク11のクラスタのアドレス情報を更新する。
この状態で、例えば、クラスタNに対してRMW動作を行う場合など、クラスタNの読み出しが必要になると、ディスク装置2は、当該クラスタNの代替クラスタであるクラスタMからデータを読み出そうとする。
ここで、この読み出しに失敗すると、ディスク装置2は、図11に示すように、クラスタMの代替クラスタとして、新たな代替クラスタKを割り当てる。図11では、一例として、セクタSc18〜Sc31へのデータの書き込み、あるいは、クラスタMの各セクタSc18〜SC31からのデータ読み出しの成功によって、代替後のクラスタKのうち、セクタSc18〜Sc31は、代替に成功し、これらのセクタSc18〜Sc31にアクセスすべきデータ(有効なデータ)が格納される一方で、残余のセクタSc0〜Sc17の代替は失敗し、代替前のクラスタMのセクタSc0〜Sc17に、アクセスすべきデータが残存している場合を示している。
この場合は、図12に示すように、クラスタKの管理情報MD(k)のキャッシュリスト番号情報には、他の管理情報MDとは異なる値(例えば、Z)が設定され、対応情報としてのクラスタ番号情報には、クラスタKを示す値(K)が設定されている。
また、クラスタKがクラスタMを代替しているので、管理情報MD(k)の代替前クラスタ情報は、クラスタMを示す値(M)に設定され、代替前クラスタリスト番号情報は、管理情報MD(m)を示す値(Y)に設定されている。さらに、クラスタKは、セクタSc0〜Sc17の代替に失敗し、他のクラスタ(この場合は、M)にアクセスすべきデータが残存しているので、管理情報MD(k)の代替クラスタ混在情報には、セクタSc0〜Sc17の代替に失敗し、残余のセクタSc18〜Sc31の代替に成功したことを示す値(例えば、FFC00000h)に設定されている。
一方、図11に示す状態の場合、管理情報MD(n)の最新代替クラスタ情報は、クラスタKの管理情報MD(k)を示す値(Z)に設定される。なお、残余の情報は、図10の場合と同一である。
また、制御回路23は、上記と同様、予め定められた時点で、上記更新後の代替前クラスタ情報および代替クラスタ混在情報に応じて、ディスク11のクラスタのアドレス情報を更新させると共に、代替元クラスタの情報(この場合は、クラスタN)と最新代替クラスタ情報の示す代替クラスタの情報(この場合は、クラスタK)とに応じて、ディスク11の欠陥情報領域の欠陥情報を更新させる。このように、欠陥情報がディスク11に書き込まれるので、アクセスが指示されたクラスタのデータがキャッシュされなくなっても、欠陥情報を参照することによって、何ら支障なく、最新の代替クラスタを特定できる。
ここで、キャッシュメモリ21の各セグメントに格納されたクラスタデータをディスク11に書き戻して、当該セグメントを開放する際、当該セグメントに対応するクラスタが他のクラスタで代替されているか否かに拘わらず、各セグメントを個別に開放するか否かを決定し、それに合わせて、他のセグメントの管理情報を更新してもよいが、本実施形態に係る制御回路23は、あるセグメントを開放する際、当該セグメントに対応するクラスタを直接的/間接的に代替しているクラスタ群を一括して開放している。これにより、他のクラスタで代替されているか否かに拘わらず、各セグメントを個別に開放するか否かを決定する構成よりも、ディスク11へのアクセス回数を削減できる。これにより、ディスク装置2の見かけ上のアクセス速度を向上できると共に、消費電力を低減できる。
上記構成において、データ読み出し時におけるディスク装置2の動作を、図13を参照しながら説明すると、以下の通りである。すなわち、ディスク装置2は、上位装置3からデータの読み出し指示を受け付けると、指示されたセクタを含むクラスタ(読み出し指示されたクラスタ)のそれぞれについて、図13の処理を実行する。
具体的には、ステップ1(以下では、S1のように略称する)において、ディスク装置2の制御回路23は、当該クラスタがキャッシュメモリ21に既にキャッシュされているか否かを判定する。より詳細には、制御回路23は、例えば、管理情報メモリ22に格納されている管理データMDを検索して、対応情報(クラスタ番号情報など)が、上記読み出し指示されたクラスタを示している管理情報MDを見い出すか否かを判定するなどして、キャッシュされているか否か(キャッシュヒットしているか否か)を判定する。
キャッシュされていない場合(上記S1にてNOの場合)、制御回路23は、S2にて、例えば、書き込み/読み出し回路12へディスク11の欠陥管理エリアからの読み出しを指示し、欠陥管理エリアに格納された欠陥情報を検索して、上記欠陥の発生したクラスタとして、上記読み出し指示されたクラスタが登録されているか否かを判定するなどして、当該クラスタに代替クラスタが割り当てられているか否かを判定する。
代替クラスタがない場合(S2にて、NOの場合)、S3において、書き込み/読み出し回路12は、制御回路23の指示に応じて、ディスク11へアクセスし、上記読み出し指示されたクラスタのデータを読み出す。さらに、制御回路23は、新たなセグメントを割り当てて、当該セグメントに、上記クラスタのデータを格納すると共に、当該セグメントを管理するための新たな管理情報MDを生成し、管理情報メモリ22に格納する。
より詳細には、制御回路23は、当該管理データMDを生成する際、図6に示すように、新たなキャッシュリスト番号を当該管理データMDに割り当てると共に、上記セグメントおよびクラスタの対応関係を示す対応情報を、当該管理情報MDに設定する。なお、この場合は、代替されていないので、アドレス情報をデコードして、代替前クラスタ情報および代替クラスタ混在情報を取得することなく、制御回路23は、管理情報MDの代替前クラスタ情報、代替クラスタ混在情報、および、最新代替クラスタ情報として、代替なし、代替前クラスタに残存するデータなし、および、代替なしを示す値を設定する。
さらに、上記制御回路23は、上記ディスク11から読み出されたデータのうち、上位装置3から読み出しが指示されたセクタのデータを、上記入出力回路14の転送バッファに格納し、S4において、ディスク装置2の入出力回路14は、例えば、制御回路23からの出力指示に応じるなどして、転送バッファに格納されたデータを上位装置3へ出力する。
これとは逆に、代替クラスタがある場合(上記S2にてYES の場合)、制御回路23は、S5において、上記読み出し指示されたクラスタのためにセグメントを割り当てると共に、当該セグメントを管理するための新たな管理情報MDを生成し、管理情報メモリ22に格納する。なお、当該クラスタのデータなどを取得するために、現時点でディスク11の当該クラスタにアクセスしてもよいが、以下では、後で必要になった場合にアクセスする構成を例にして説明する。
より詳細には、制御回路23は、当該管理データMDを生成する際、新たなキャッシュリスト番号を当該管理データMDに割り当てると共に、上記セグメントおよびクラスタの対応関係を示す対応情報を、当該管理情報MDに設定する。また、制御回路23は、管理情報MDの代替前クラスタ情報および代替クラスタ混在情報として、代替なし、および、代替前クラスタに残存するデータなしを示す値を設定する。なお、この時点では、最新代替クラスタの管理情報MDが生成されていないので、上記S5にて生成される管理情報MDの最新代替クラスタ情報は設定されていない。
さらに、S6において、書き込み/読み出し回路12は、ディスク11の代替クラスタ(この場合は、最新の代替クラスタ)へアクセスして、当該クラスタのデータを読み出す。さらに、制御回路23は、新たなセグメントを割り当てて、当該セグメントに、上記クラスタのデータを格納すると共に、当該セグメントを管理するための新たな管理情報MDを生成し、管理情報メモリ22に格納する。
より詳細には、制御回路23は、上記S6において、当該管理データMDを生成する際、新たなキャッシュリスト番号を当該管理データMDに割り当てると共に、上記セグメントおよびクラスタの対応関係を示す対応情報を、当該管理情報MDに設定する。また、制御回路23は、書き込み/読み出し回路12に指示して、上記クラスタのアドレス情報をデコードさせると共に、デコードされた代替前クラスタ情報および代替クラスタ混在情報を、管理情報MDに設定する。なお、この時点では、代替前クラスタの管理情報MDが生成されていないので、代替前クラスタ情報が代替ありを示している場合であっても、上記S6にて生成される管理情報MDの代替前クラスタリスト番号情報は設定されていない。
さらに、上記S6において、上記制御回路23は、上記ディスク11から読み出されたクラスタデータのうち、上位装置3から読み出しが指示されたセクタであって、上記代替クラスタ混在情報において、正常に代替できたことを示しているセクタ(代替前クラスタに残存していないセクタ)のデータを、上記転送バッファに格納する。
また、制御回路23は、S7において、1つ前に生成した管理情報MD(この場合は、上記S5にて生成された、上記読み込み指示対象のクラスタの管理データMD)、すなわち、直前の管理情報MDを更新して、当該管理データMDの最新代替クラスタ情報が、上記S6にて生成された管理データMDを示すように設定する。
これにより、読み込み指示対象のクラスタの管理情報MDは、当該管理データMDの最新代替クラスタ情報によって、最新の代替クラスタの管理情報MDにリンクされ、読み込み指示対象のクラスタの管理情報MDから、代替クラスタの管理情報MDを検索できるようになる。
さらに、制御回路23は、S8において、上位装置3から読み出しが指示されたクラスタの全セクタについて、アクセスすべきクラスタの特定処理が行われたか否かを判定する。例えば、制御回路23は、現在処理対象としている管理情報MD(この場合は、上記S6にて生成した管理情報MD)の代替クラスタ混在情報が、それよりも前の代替クラスタにデータが残っていないことを示す値(例えば、00000000h)になったか否かを判定したり、あるいは、既に処理されたクラスタの代替クラスタ混在情報に基づいて、正常に代替できていることを示すセクタの情報を累積して、それが全セクタになっているか否かを判定したりすることによって、全セクタの処理が終了したか否かを判定できる。
未だ処理されていないセクタが残っている場合(上記S8にてNOの場合)、制御回路23は、S9において、上記S6にてデコードされた代替前クラスタ情報に基づいて、代替前クラスタを特定し、その後は、上記最新の代替クラスタに代えて、当該代替前クラスタを対象として、上記S6以降の処理を繰り返す。
なお、繰り返し時には、上記S7にて更新される、直前の管理情報MDは、その代替クラスタを代替したクラスタになる。また、上記S6にて、例えば、読み込み対象とするクラスタを代替したクラスタの管理情報MDを生成する場合など、代替前クラスタの管理情報MDが既に生成されている場合、制御回路23は、上記S6にて、当該代替前クラスタの管理情報MDを示す代替前クラスタリスト番号情報を設定する。
これにより、代替後のクラスタの管理情報MDは、当該管理データMDの代替前クラスタリスト番号情報によって、代替前の代替クラスタの管理情報MDにリンクされ、代替後のクラスタの管理情報MDから、代替前のクラスタの管理情報MDを検索できるようになる。
上記S6以降の処理が繰り返され、上記全セクタの処理が終了すると(上記S8にてYES の場合)、上記S4において、ディスク装置2の入出力回路14は、転送バッファに格納されたデータを上位装置3へ出力する。
一方、キャッシュされている場合(上記S1にてYES の場合)、制御回路23は、S11にて、そのクラスタの管理情報MDを解析し、S12において、当該解析結果に基づき、代替クラスタがあるか否かを判定する。
本実施形態では、上述したように、クラスタが上位装置3からのアクセス指示の対象となる場合(代替クラスタではない場合)であり、しかも、他のクラスタで代替されている場合、アクセス指示の対象となるクラスタの管理情報MDに最新代替クラスタ情報が含まれている。したがって、制御回路23は、ディスク11へアクセスして、欠陥情報を読み出すことなく、当該最新代替クラスタ情報が代替なしを示す値であるか否かによって、代替クラスタがないか否かを判定できる。
代替クラスタがない場合(上記S12にてNOの場合)、制御回路23は、S13において、キャッシュメモリ21の各セグメントのうち、上記管理情報MDの対応情報の示すセグメントにアクセスして、上位装置3から読み出しが指示されたセクタのデータを読み出し、入出力回路14の図示しない転送バッファに格納し、上記S4において、ディスク装置2の入出力回路14は、当該転送バッファに格納されたデータを、上位装置3へ出力する。
これとは逆に、代替クラスタがある場合(上記S12にてYES の場合)、S14において、制御回路23は、管理情報MDを解析して、最新の代替クラスタの管理情報を読み出す。具体的には、制御回路23は、管理情報MDの最新代替クラスタ情報の示す管理情報MDを取得する。
さらに、制御回路23は、S15において、当該管理データMDの対応情報の示すセグメントへアクセスして、上位装置3から読み出しが指示されたセクタであって、しかも、当該管理情報MDにおいて、正常に代替できたことを示しているセクタ(代替前クラスタに残存していないセクタ)のデータを読み出し、上記転送バッファに格納する。
また、制御回路23は、S16において、上位装置3から読み出しが指示されたセクタの全てのデータを上記転送バッファに格納したか否かを判定する。例えば、制御回路23は、図示しない作業用のメモリに上位装置3から読み出しが指示されたセクタ(未だ処理していないセクタ)を記憶し、セクタのデータを上記転送バッファに格納する度に、そのセクタの記憶を消去すると共に、当該記憶を参照して、全てのセクタの記憶が消去されているか否かを判定するなどして、上記全セクタのデータを転送バッファに格納したか否かを判定できる。
読み出すべきセクタが残っている場合(上記S16にてNOの場合)、制御回路23は、S17において、管理情報MDを解析し、その管理情報MDの代替前クラスタリスト番号情報に基づいて、そのクラスタの代替前クラスタの管理情報MDを特定し、その後は、上記最新の代替クラスタに代えて、当該代替前クラスタを対象として、上記S15以降の処理を繰り返す。
ここで、上述したように、制御回路23は、クラスタのデータがセグメントに格納する際、その管理情報に、当該クラスタの代替前クラスタ情報および代替クラスタ混在情報を設定しているので、あるクラスタのデータがキャッシュされていれば、管理情報メモリ22に、当該クラスタの代替前クラスタ情報および代替クラスタ混在情報が記憶されている。したがって、ディスク装置2は、ディスク11へのアクセス動作、より詳細には、ディスク11にアクセスして、当該クラスタのアドレスデコード処理を行った後に、アドレス情報に含まれる代替混在フラグを検査し、代替前クラスタにデータが存在するのであれば、アドレス情報に含まれる代替前クラスタアドレスを決定する動作を行うことなく、必要セクタが処理されたか否かを判定し、および、未だ処理が終了していないセクタがある場合は、代替前クラスタを特定できる。
特に、本実施形態では、上述したように、あるセグメントを開放する際、当該セグメントに対応するクラスタを直接的/間接的に代替しているクラスタ群が一括して開放されている。したがって、ディスク装置2は、ディスク11へアクセスすることなく、上記S15以降の処理を繰り返すことができる。
上記S15以降の処理が繰り返され、上記読出指示されたセクタの全てのデータが上記転送バッファに格納されると(上記S16にてYES の場合)、上記S4において、ディスク装置2の入出力回路14は、上記転送バッファに格納されたデータを上位装置3へ出力する。
続いて、データ書き込み時におけるディスク装置2の動作を、図14および図15を参照しながら説明する。すなわち、ディスク装置2は、上位装置3からデータの書き込み指示を受け付けると、指示されたセクタを含むクラスタ(書き込み指示されたクラスタ)のそれぞれについて、上述した図13のS1と同様に、キャッシュメモリ21にキャッシュされているか否かを判定し、キャッシュされていない場合は、当該クラスタについて、図14の処理を行う。
具体的には、ディスク装置2の制御回路23は、S21において、図13の上記S2と同様にして、当該クラスタに代替クラスタが割り当てられているか否かを判定する。さらに、代替クラスタが割り当てられていない場合(上記S21にてNOの場合)、制御回路23は、書き込み指示が当該クラスタ全体への書き込みを指示しているか、あるいは、当該クラスタの一部への書き込みを指示しているかを判定して、RMW動作が必要であるか否かを判定する(S22)。より詳細には、例えば、制御回路23は、上記書き込み指示として受信した入力要求の開始アドレスと終了アドレスとが、クラスタ境界となっているかどうかを判定するなどして、RMW動作が必要かどうかが判定できる。
RMW動作が不要な場合(上記S22にてNOの場合)、制御回路23は、S23において、当該クラスタのために、セグメントを割り当てると共に、当該セグメント、および、書き込み/読み出し回路12に設けられた図示しない記録用バッファに、上記書き込み指示されたデータを書き込む。また、制御回路23は、図13のS3と同様にして、当該セグメントを管理するための新たな管理情報MDを生成し、管理情報メモリ22に格納する。
さらに、制御回路23は、S24において、ライトバック動作を開始し、例えば、書き込み/読み出し回路12へ上記記録用バッファのデータのディスク11への書き込みを指示するなどして、記録用バッファに格納された各クラスタのデータをディスク11へ書き込ませる。また、書き込み/読み出し回路12は、制御回路23の指示に応じて、管理情報MDの代替前クラスタ情報と代替クラスタ混在情報とを、各クラスタのアドレス情報として、ディスク11に格納する。なお、制御回路23は、ライトバック動作を開始する時点(上位装置3から受け取ったデータが全て記録用バッファあるいはキャッシュメモリ21に格納された時点)で、入出力回路14を介して、上位装置3へ、ライト動作が終了したと報告してもよい。
これとは逆に、RMW動作が必要な場合(上記S22にてYES の場合)、書き込み/読み出し回路12は、S25において、図13のS3と略同様に、制御回路23の指示に応じて、ディスク11へアクセスし、上記読み出し指示されたクラスタのデータを読み出す。さらに、制御回路23は、新たなセグメントを割り当てて、当該セグメントに、上記クラスタのデータを格納すると共に、当該セグメントを管理するための新たな管理情報MDを生成し、管理情報メモリ22に格納する。
ただし、この場合は、書き込む前にクラスタデータの一部変更が必要なので、制御回路23は、上記S25において、当該セグメントの内容のうち、上記書き込み指示されたセクタのデータを、上記書き込み指示に応じて変更し、変更後のセグメントのデータ(クラスタのデータ)を、上記記録用バッファに格納する。その後、制御回路23は、上記S24の処理を行って、記録用バッファのデータがディスク11に書き込まれる。
一方、代替クラスタが割り当てられている場合(上記S21にてYES の場合)、S31において、制御回路23は、図13のS5と同様に、上記書き込み指示されたクラスタのためにセグメントを割り当てると共に、当該セグメントを管理するための新たな管理情報MDを生成し、管理情報メモリ22に格納する。さらに、制御回路23は、S32において、上記S22と同様にRMW動作が必要であるか否かを判定する。
RMW動作が不要な場合(上記S32にてNOの場合)、制御回路23は、S33において、上記S31にて割り当てられたセグメントおよび上記記録用バッファに、上記書き込み指示されたデータを書き込む。その後、上記S24の処理が行われ、記録用バッファのデータがディスク11に書き込まれる。
ここで、この場合は、代替前クラスタの有無に拘わらず、上記書き込み指示されたデータを、最新の代替クラスタに書き込めばよい。したがって、上記S33において、制御回路23は、当該クラスタの管理情報MDの代替クラスタ混在情報に、代替前クラスタにデータが残存していないことを示す値を設定する。また、本実施形態では、代替前クラスタにデータが残存していない場合、制御回路23は、図10に示すように、代替前クラスタ情報を、代替なしを示す値に設定し、最新代替クラスタ情報は、他のクラスタで代替されていないことを示す特別な値に設定される。
これとは逆に、RMW動作が必要な場合(上記S32にてYES の場合)、書き込み/読み出し回路12は、S34において、図13のS6と略同様に、制御回路23の指示に応じて、ディスク11の代替クラスタ(この場合は、最新の代替クラスタ)へアクセスして、当該クラスタのデータを読み出す。さらに、制御回路23は、新たなセグメントを割り当てて、当該セグメントに、上記クラスタのデータを格納すると共に、当該セグメントを管理するための新たな管理情報MDを生成し、管理情報メモリ22に格納する。
また、この場合は、書き込む前にクラスタデータの一部変更が必要なので、制御回路23は、上記S34において、当該セグメントの内容のうち、上記書き込み指示されたセクタのデータを、上記書き込み指示に応じて変更すると共に、当該セクタを正常に代替できたことを示すように、管理情報MDの代替クラスタ混在情報を更新する。
さらに、上記S34において、制御回路23は、上記S6と同様に、上記変更後のクラスタデータのうち、上記代替クラスタ混在情報において、正常に代替できたことを示しているセクタ(代替前クラスタに残存していないセクタ)のデータを、上記記録用バッファに格納する。
また、制御回路23は、S35において、図13のS7と同様に、1つ前に生成した管理情報MD(この場合は、上記S31にて生成された、上記書き込み指示対象のクラスタの管理データMD)、すなわち、直前の管理情報MDを更新して、当該管理データMDの最新代替クラスタ情報が、上記S34にて生成された管理データMDを示すように設定する。
さらに、制御回路23は、S36において、図13のS8と同様に、上位装置3から書き込みが指示されたクラスタの全セクタについて、アクセスすべきクラスタの特定処理が行われたか否かを判定する。
また、未だ処理されていないセクタが残っている場合(上記S8にてNOの場合)、制御回路23は、S37において、直前にデコードされた代替前クラスタ情報(この場合は、上記S34にてデコードされた代替前クラスタ情報)に基づいて、代替前クラスタを特定する。
さらに、S38において、書き込み/読み出し回路12および制御回路23は、上記S37にて特定された代替前クラスタを処理の対象として、図13のS6と略同様の処理を行う。これにより、当該クラスタのデータが、ディスク11の代替クラスタから読み出され、新たに割り当てられたセグメントに格納されると共に、当該セグメントを管理するための新たな管理情報MDが生成され、上記読み出されたデータのうち、当該クラスタの代替クラスタ混在情報において、正常に代替できたことを示しているセクタ(代替前クラスタに残存していないセクタ)のデータが上記記録用バッファに格納される。
上記S35〜S38の処理は、全てのセクタが処理されるまで繰り返され、全てのセクタが処理された場合(上記S36にてYES の場合)、制御回路23は、上記S24の処理を行って、記録用バッファのデータがディスク11に書き込まれる。
なお、繰り返し時には、上記S35にて更新される、直前の管理情報MDは、その代替クラスタを代替したクラスタになる。また、上記S34またはS38にて、例えば、書き込み対象とするクラスタを代替したクラスタの管理情報MDを生成する場合など、代替前クラスタの管理情報MDが既に生成されている場合、制御回路23は、当該代替前クラスタの管理情報MDを示す代替前クラスタリスト番号情報を設定する。
一方、書き込み指示されたセクタを含むクラスタ(書き込み指示されたクラスタ)がキャッシュされていた場合は、当該クラスタについて、図15の処理を行う。なお、キャッシュヒットした場合であっても、今回書き込みが要求されたクラスタのデータ(記録要求アドレスのデータ)が、ディスク11へライトバックしている最中であれば、制御回路23は、ライトバックが終了するまで待機し、その後、ディスク装置2は、図15の処理を行う。
すなわち、ディスク装置2の制御回路23は、S41において、図13のS11と同様に、そのクラスタの管理情報MDを解析し、S42において、当該解析結果に基づき、代替クラスタがあるか否かを判定する。
さらに、代替クラスタが割り当てられていない場合(上記S42にてNOの場合)、制御回路23は、上記S22と同様にRMW動作が必要であるか否かを判定し(S43)、RMW動作が不要な場合(上記S43にてNOの場合)、書き込み/読み出し回路12および制御回路23は、S43〜S45において、上記S22〜S24と略同様の処理を行う。ただし、この場合は、クラスタがキャッシュされているので、上記S23に対応するS44では、セグメントの割り当て処理、および、管理情報MDの生成処理は行われず、制御回路23は、既に割り当てられているセグメント、および、上記記録用バッファに、書き込み指示されたクラスタのデータを書き込む。
これとは逆に、RMW動作が不要な場合(上記S43にてYES の場合)、制御回路23は、S46において、書き込み指示されたクラスタのデータをキャッシュしているセグメントのうち、上記書き込み指示されたセクタのデータを、上記書き込み指示にて指定された内容に更新すると共に、更新後のセグメントのデータを、上記記録用バッファに格納する。その後は、上記S45の処理が行われ、記録用バッファのデータがディスク11に書き込まれる。
一方、代替クラスタが割り当てられている場合(上記S42にてYES )の場合、制御回路23は、S51において、上記S14と同様に最新の代替クラスタの管理情報MDを読み出す。
さらに、制御回路23は、S52において、上記S22と同様にRMW動作の要否を判定し、RMW動作が不要な場合(上記S52にてNOの場合)、S53において、当該代替クラスタのセグメントの内容を、上記書き込み指示された内容に更新すると共に、上記記録用バッファに当該内容を書き込む。さらに、制御回路23は、当該クラスタの管理情報MDを更新して、その代替クラスタ混在情報、代替前クラスタ情報および最新代替クラスタ情報を、図14に示す上記S33と同様の値に設定する。その後は、上記S45の処理が行われ、記録用バッファのデータがディスク11に書き込まれる。
また、RMW動作が必要な場合(上記S52にてYES の場合)、S54において、上記代替クラスタのセグメントのうち、書き込み指示されたセクタの内容を、上記書き込み指示された内容に更新すると共に、書き込み指示されたセクタが正常に代替できたことを示すように、当該代替クラスタの管理情報MDの代替クラスタ混在情報を更新する。さらに、制御回路23は、上記セグメントのデータのうち、更新後の代替クラスタ混在情報が正常に代替できたことを示しているセクタのデータを、上記記録用バッファに書き込む。
さらに、制御回路23は、S55において、上位装置3から書き込みが指示されたクラスタの全セクタについて、図13に示すS8と同様に、アクセスすべきクラスタの特定処理が行われたか否かを判定する。
未だ処理されていないセクタが残っている場合(上記S55にてNOの場合)、制御回路23は、S56において、管理情報MDを解析し、その管理情報MDの代替前クラスタリスト番号情報に基づいて、そのクラスタの代替前クラスタの管理情報MDを特定する。これにより、新たに処理対象とするクラスタとして、当該代替前クラスタが設定される。
さらに、制御回路23は、S57において、当該管理データMDの対応情報の示すセグメントへアクセスして、上位装置3から読み出しが指示されたセクタであって、しかも、当該管理情報MDにおいて、正常に代替できたことを示しているセクタ(代替前クラスタに残存していないセクタ)のデータを読み出し、上記記録用バッファに格納する。その後は、全てのセクタが処理されるまでの間、上記S55以降の処理が繰り返され、全てのセクタが処理された場合(上記S55にてYES の場合)、上記S45の処理が行われ、記録用バッファのデータがディスク11に書き込まれる。
このように、本実施形態に係るディスク装置2は、ディスク11を制御するディスク制御回路としての書き込み/読み出し回路12と、データを一時的に保持するキャッシュメモリ21と、書き込み要求あるいは読み込み要求に対して、クラスタ毎にキャッシュメモリ21を管理可能なキャッシュメモリ21の管理情報(管理用データ)を備えたディスクシステムにおいて、欠陥により代替クラスタが割り当てたられた際には、代替クラスタデータをキャッシュメモリ21に格納し、代替クラスタの情報をキャッシュメモリ21の管理情報MDで管理している。さらに、ディスク装置2は、当該ディスク11を制御可能なクラスタ単位にて記録再生可能であり、ディスク11には、代替後クラスタデータの一部が代替前クラスタデータ内に残ってしまう場合は、代替後クラスタのアドレス情報に代替前クラスタのアドレス情報と、代替前クラスタにデータが残存していることが示す情報とが含まれている。また、ディスク装置2は、代替クラスタに関連する代替情報として、代替後クラスタのアドレス情報に含まれる代替前クラスタのアドレス情報(代替前クラスタ情報)と、代替前クラスタにデータが残存していることを示す情報(代替クラスタ混在情報)とを含むデータ構造の管理データMDを記憶している。
したがって、代替クラスタの一部が代替前クラスタ内に残るために信頼性を向上可能なディスクシステムにおいても、保持されたキャッシュ情報と代替情報とにより、高速にアクセス可能なディスクシステムを提供できる。また、物理的にディスク11にアクセスする回数を低減できるので、ディスク装置2の消費電力も低減できる。
このように、本実施形態に係る管理情報MDには、最新代替クラスタ情報が含まれているので、クラスタのデータがキャッシュされていれば、最新代替クラスタ情報が管理情報MDに格納されている。したがって、制御回路23は、ディスク11へアクセスして、ディスク11の欠陥情報を読み出さなくても、アクセスが指示されたクラスタの管理情報MDの最新代替クラスタ情報を見るだけで、最新の代替クラスタの管理情報MDを特定できる。
また、以上のように、本実施形態に係る管理情報MDには、代替前クラスタ情報および代替前クラスタリスト番号情報の少なくとも一方が含まれている。したがって、ディスク装置2は、あるクラスタを他のクラスタで代替した場合、代替後のクラスタの管理情報MDに含まれる、代替前クラスタ情報または代替前クラスタリスト番号情報を参照することによって、ディスク11にアクセスすることなく、代替前のクラスタ、および、その管理情報MDを特定できる。また、各管理情報MDには、代替クラスタ混在情報が含まれており、ディスク装置2は、それを参照することで、代替前クラスタにデータが残存しているか否かを識別できる。
このように、本実施形態に係るディスク装置2では、代替後クラスタのアドレス情報に含まれる代替前クラスタのアドレス情報と代替前クラスタにデータが残存していることを示す情報とが、代替前クラスタの管理情報MDから一意に検索可能な構造となるように、上記管理情報MDが構成されている。
したがって、効率的に代替情報や代替クラスタの検索を行うことができるので、クラスタが代替されている場合であっても、ディスク装置2の見かけ上のアクセス速度を向上でき、ディスク装置2のシステム性能を向上させることができる。
また、本実施形態に係る管理情報MDには、代替前クラスタ情報および代替前クラスタリスト番号情報の少なくとも一方が含まれているので、あるクラスタを代替したクラスタがさらに代替されている場合のように、最新の代替クラスタが複数のクラスタを代替している場合(多重に代替している場合)であっても、それらの管理情報MDが管理情報メモリ22内に格納されていれば、代替前クラスタ情報の示すクラスタの管理情報MD、または、代替前クラスタリスト番号情報の示す管理情報MDを辿っていくことによって、ディスク11にアクセスすることなく、最新の代替クラスタが代替しているクラスタ群を特定できる。さらに、各管理情報MDには、代替クラスタ混在情報が含まれており、代替元のクラスタ(アクセス対象となるクラスタ)の管理情報MDには、最新代替クラスタ情報が含まれている。
このように、欠陥発生によって代替後クラスタに対して代替クラスタ(最終的な代替後クラスタ;最新代替クラスタ)が割り当てられた場合でも、代替前クラスタの管理情報MDから最終的な代替後クラスタのアドレスを一意に検索可能な構造となるように、上記管理情報MDが構成されている。
したがって、効率的に代替情報や代替クラスタの検索を行うことができるので、クラスタが多重に代替されている場合であっても、ディスク装置2の見かけ上のアクセス速度を向上でき、ディスク装置2のシステム性能を向上させることができる。
なお、上記では、上記一意に検索可能なデータ構造の一例として、代替情報や代替クラスタを効率的に検索するためのデータ構造として、代替前クラスタ情報および代替前クラスタリスト番号情報の少なくとも一方と、最新代替クラスタ情報とによって、連結リスト構造をとる構成を例にして説明したが、これに限るものではない。例えば、単方向連結リストや連続リスト、テーブルあるいはグラフ構造(木構造など)であって同様の効果が得られる。
ところで、上記管理情報MDを記憶する管理データメモリ22が揮発性の記憶媒体である場合、ディスク装置2の電源が遮断されると、管理情報MDが失われてしまう。したがって、ディスク装置2は、電源が再投入された後、これらのクラスタの代替前クラスタ情報や代替クラスタ混在情報、あるいは、最新代替クラスタ情報を取得するために、ディスク11に再度アクセスする必要がある。
これに対して、図17に示すディスク装置2aには、図1の構成に加えて、例えば、フラッシュメモリやバッテリバックアップされたメモリなど、不揮発性のメモリ15が設けられており、制御回路23は、例えば、電源遮断指示を受け付けた時点など、予め定められた時点で、管理情報メモリ22の管理情報MDを不揮発性のメモリ15に格納(退避)している。さらに、制御回路23は、電源が投入された場合、不揮発性のメモリ15に格納されている管理情報MDを管理情報メモリ22に格納する。
当該構成では、不揮発性のメモリ15に上記管理情報メモリ22に記憶された管理情報MDが格納され、電源の投入後に、不揮発性のメモリ15から管理情報MDが取得される。このように、一度生成された管理データMDを再利用できるので、ディスク11にアクセスせずに、管理情報MDが生成されていたクラスタに関する、代替前クラスタ情報、代替クラスタ混在情報、あるいは、最新代替クラスタ情報を取得できる。この結果、より高速で効率的なディスク装置2aを実現できる。
さらに、当該構成の場合、不所望に電源が遮断された場合を想定して、制御回路23は、不揮発性のメモリ15に正常に退避できたことを示すフラグを設定することが好ましい。当該構成では、制御回路23が、電源起動時に、本フラグを予め定められた値(例えば、0)とし、電源終了時に、不揮発性のメモリ15に退避が正常に終了できた場合に、当該値とは異なる値(例えば、1)とすることにより、不所望に電源が遮断されたことを検知できる。したがって、次回の電源起動時に、制御回路23が、当該フラグに基づいて、不所望に電源が遮断されたか否かを判断すると共に、不所望に電源が遮断された場合は、不揮発性のメモリ15の管理情報MD(退避データ)を使用せず、ディスク11にアクセスすることによって、誤った管理情報MDの使用に起因する誤動作を防止でき、ディスク装置2aの信頼性を、さらに向上できる。
また、ディスク装置2aのディスク11が交換可能な場合、制御回路23は、ディスク11毎に割り当てられている固有のシリアル番号を不揮発性のメモリ15に記憶しておく方が望ましい。この場合、制御回路23は、電源起動時に、ディスク11内のシリアル番号と、不揮発性のメモリ15に保存されていたシリアル番号とを比較し、不一致の場合は、不揮発性のメモリ15の管理情報MDを使用せず、一致した場合は、不揮発性のメモリ15の管理情報MDを管理情報メモリ22に復帰させることができる。したがって、ディスク11が交換された場合に、交換前の管理情報MDを誤って使用してしまうことを防止でき、ディスク装置2aの信頼性を、さらに向上できる。
なお、上記では、例えば、電源遮断指示を受け付けた時点など、予め定められた時点で、管理情報メモリ22の管理情報MDを退避させる構成について説明したが、これに限るものではない。例えば、管理情報MDが生成される度に不揮発性のメモリ15に管理情報MDを退避させたり、管理情報MDが更新される度に、不揮発性のメモリ15の管理情報MDを更新してもよい。この場合であっても、ディスク11にアクセスせずに、管理情報MDが生成されていたクラスタに関する、代替前クラスタ情報、代替クラスタ混在情報、あるいは、最新代替クラスタ情報を取得できる。ただし、この場合は、管理情報MDの生成/更新の度に、不揮発性のメモリ15へのアクセスが必要になるので、アクセス速度が低下する虞れがある。
これに対して、本変形例に係るディスク装置2aのように、例えば、電源遮断指示を受け付けた時点など、予め定められた時点で管理情報MDを退避させることによって、複数の管理情報MDを一括して退避させている。この結果、管理情報MDの生成/更新の度に、不揮発性のメモリ15へのアクセスする構成よりも、ディスク装置2aのアクセス速度を向上できる。
なお、上記では、ディスク装置2aに不揮発性のメモリ15を設ける構成について説明したが、不揮発性のメモリ15を省略すると共に、制御回路23が、不揮発性のメモリ15に管理情報MDを読み書きする代わりに、ディスク11の予め定められた領域(例えば、ワークエリアなど)に読み書きしてもよい。
当該構成でも、電源の投入後に、ディスク11にアクセスせずに、管理情報MDが生成されていたクラスタに関する、代替前クラスタ情報、代替クラスタ混在情報、あるいは、最新代替クラスタ情報を取得できる。この結果、より高速で効率的なディスク装置を実現できる。
なお、ディスク装置(2・2a)の各ブロック、特に、制御回路23は、ハードウェアロジックによって構成してもよいし、次のように、CPUを用いてソフトウェアによって実現してもよい。
すなわち、上記ディスク装置は、各機能を実現する制御プログラムの命令を実行するCPU(central processing unit)、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである上記ディスク装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、ディスク装置に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM(フラッシュメモリ)等の半導体メモリ系などを用いることができる。
また、ディスク装置を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、802.11無線、HDR、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
なお、上述の説明では、ディスク11を記録媒体とするディスク装置(2・2a)を例にして説明したが、これに限るものではない。記録媒体として、例えば、フラッシュメモリやテープデバイスなどを使用する記録装置であってもよい。いずれの場合であっても、上記記録媒体には、書き込み単位毎に、その書き込み単位のデータを記憶するデータ記憶領域と、その書き込み単位のアドレスを示すアドレス情報を記憶するアドレス情報記憶領域と設けられており、ある書き込み単位が他の書き込み単位で代替されている場合、代替した書き込み単位のアドレス情報は、当該書き込み単位のアドレスだけではなく、代替前の書き込み単位と代替前の書き込み単位にデータが残存しているか否かも示していると共に、記録装置が、書き込み単位よりも小さなアクセス単位での書き込み指示を受け付けた場合、書き込み単位のデータ全体のうち、指示された部分のデータを変更した後、変更後の書き込み単位のデータ全体を、記録媒体の書き込み単位のデータ記憶領域に書き込む構成であれば、同様の効果が得られる。