(57)【特許請求の範囲】
【請求項１】
書き換え回数に制限のある不揮発メモリ、ディスク、及び前記不揮発メモリの論理アドレス（LBA：Logical Block Address）と物理アドレスとの対応関係を管理するメモリ管理テーブルを含み、前記不揮発メモリに交替領域がなく、前記不揮発メモリの論理アドレスに対応する前記ディスク上の領域に交替領域がある状態において、前記不揮発メモリにデータを書き込むべき第１のLBAに対応する物理アドレスの領域の不良発生に応答して、前記データを書き込むべき第１のLBAとはアドレスが異なる前記不揮発メモリの第２のLBAに対応する物理アドレスに前記データを書き込み、前記メモリ管理テーブルの前記データを書き込むべき第１のLBAに前記データを書き込んだ前記物理アドレスを対応付ける制御部を有することを特徴とするディスク装置。
【請求項２】
前記ディスクは前記不揮発メモリの論理アドレスに対応する領域に前記不揮発メモリの交替領域を有し、前記制御部は、前記データを書き込むべき領域に不良領域が発生した場合には、不良領域の発生領域の場所にかかわらず、ディスク上の論理アドレス空間にアドレスが連続する、前記不揮発メモリ上のLBAを選定し、前記選択したLBAの領域のデータを上記ディスク上の前記交替領域に書き込み（交替し）、さらに、前記ディスクの記憶領域のLBAにアドレスが連続するLBAを前記第２のLBAとし、該第２のLBAに対応する物理アドレスに、前記不良領域のデータを書き込み、前記データを書き込んだ領域の物理アドレスを、データを書き込むべき第１のLBAに対応付けることを特徴とする請求項１記載のディスク装置。
【請求項３】
前記メモリ管理テーブルは、前記不揮発メモリのLBAに対応して交替ビットを有し、前記制御部は、前記第２のLBAに対応する物理アドレスに格納されていたデータの書き込みに伴い、前記第２のLBAに対応する前記交替ビットを立て、該交替ビットを参照して前記第２のLBAへのアクセスをディスク上の交替領域へのアクセスに変換することを特徴とする請求項２記載のディスク装置。
【請求項４】
前記ディスクは、該ディスクに接続するホストシステムの起動プログラムを格納し、前記不揮発メモリは前記起動プログラムのコピーを予め格納し、前記メモリ管理テーブルは前記不揮発メモリのLBAに対応して前記不揮発メモリに格納されている前記起動プログラムへの、前記ホストシステムからのアクセス順序を有し、前記制御部は、前記不揮発メモリの前記第２のLBAとして、前記アクセス順序を参照して、前記不揮発メモリに格納されている前記起動プログラムのうちで最も遅いアクセス順序に対応するLBAを選定することを特徴とする請求項１記載のディスク装置。
【請求項５】
前記メモリ管理テーブルは、前記不揮発メモリのLBAに対応して無効ビットを有し、前記制御部は、前記選定されたLBAに対応する前記無効ビットを立て、該無効ビットを参照して前記選定されたLBAの前記不揮発メモリへのアクセスを前記ディスクへのアクセスに変換することを特徴とする請求項４記載のディスク装置。
【請求項６】
前記制御部は、前記不揮発メモリの前記第２のLBAとして、前記不揮発メモリの領域に予め設定された優先度を参照して、前記優先度の低い領域に含まれる領域に対応するLBAを選定することを特徴とする請求項１記載のディスク装置。
【請求項７】
前記優先度はホストまたはユーザにより設定されることを特徴とする請求項６記載のディスク装置。
【請求項８】
前記不揮発メモリに、前記ディスク上の領域の一部のデータを記憶するキャッシュ用領域とホストシステムからのライトデータを記憶するバッファ用領域とを設け、前記優先度は前記キャッシュ用領域を高、前記バッファ用領域を低とすることを特徴とする請求項６記載のディスク装置。
【請求項９】
前記不揮発メモリに、ホストシステムからの指示がないと無効にできないデータを格納する第１の領域と、前記ホストシステムからの指示がなくても無効にできるデータを格納する第２の領域とを設け、前記第１の領域と前記第２の領域とを区別する情報を、前記メモリ管理テーブルは前記不揮発メモリのLBAに対応して有し、前記制御部は、前記不揮発メモリの前記第２のLBAとして、前記メモリ管理テーブルを参照して、前記第２の領域に含まれる領域に対応するLBAを選定することを特徴とする請求項１記載のディスク装置。
【請求項１０】
書き換え回数に制限のある不揮発メモリ、ディスク、及び前記不揮発メモリの論理アドレス（LBA：Logical Block Address）と物理アドレスとの対応関係を管理するメモリ管理テーブルを有するディスク装置の制御方法であって、前記不揮発メモリに交替領域がなく、前記不揮発メモリの論理アドレスに対応する前記ディスク上の領域に交替領域がある状態において、前記不揮発メモリにデータを書き込むべき第１のLBAに対応する物理アドレスの領域の不良発生に応答して、前記データを書き込むべき第１のLBAとはアドレスが異なる前記不揮発メモリの第２のLBAに対応する物理アドレスに前記データを書き込み、前記メモリ管理テーブルの前記データを書き込むべき第１のLBAに前記データを書き込んだ前記物理アドレスを対応付けることを特徴とするディスク装置の制御方法。
【請求項１１】
前記ディスクは前記不揮発メモリの論理アドレスに対応する領域に前記不揮発メモリの交替領域を有し、前記データを書き込むべき領域に不良領域が発生した場合には、不良領域の発生領域の場所にかかわらず、ディスク上の論理アドレス空間にアドレスが連続する、前記不揮発メモリ上のLBAを選定し、前記選択したLBAの領域のデータを上記ディスク上の前記交替領域に書き込み（交替し）、前記ディスクの記憶領域のLBAにアドレスが連続するLBAを前記第２のLBAとし、該第２のLBAに対応する物理アドレスに、前記不良領域のデータを書き込み、前記データを書き込んだ領域の物理アドレスを、データを書き込むべき第１のLBAに対応付けることを特徴とする請求項１０記載のディスク装置の制御方法。
【請求項１２】
前記メモリ管理テーブルは、前記不揮発メモリのLBAに対応して交替ビットを有し、前記第２のLBAに対応する物理アドレスに格納されていたデータの書き込みに伴い、前記第２のLBAに対応する前記交替ビットを立て、該交替ビットを参照して前記不揮発メモリ上の第２のLBAへのアクセスをディスク上の交替領域へのアクセスに変換することを特徴とする請求項１１記載のディスク装置の制御方法。
【請求項１３】
前記ディスクは、該ディスクに接続するホストシステムの起動プログラムを格納し、前記不揮発メモリは前記起動プログラムのコピーを予め格納し、前記メモリ管理テーブルは前記不揮発メモリのLBAに対応して前記不揮発メモリに格納されている前記起動プログラムへの、前記ホストシステムからのアクセス順序を有し、前記不揮発メモリの前記第２のLBAとして、前記アクセス順序を参照して、前記不揮発メモリに格納されている前記起動プログラムのうちで最も遅いアクセス順序に対応するLBAを選定することを特徴とする請求項１０記載のディスク装置の制御方法。
【請求項１４】
前記メモリ管理テーブルは、前記不揮発メモリのLBAに対応して無効ビットを有し、前記選定されたLBAに対応する前記無効ビットを立て、該無効ビットを参照して前記選定されたLBAの前記不揮発メモリへのアクセスを前記ディスクへのアクセスに変換することを特徴とする請求項１３記載のディスク装置の制御方法。
【請求項１５】
前記不揮発メモリの前記第２のLBAとして、前記不揮発メモリの領域に予め設定された優先度を参照して、前記優先度の低い領域に含まれる領域に対応するLBAを選定することを特徴とする請求項１０記載のディスク装置の制御方法。
【請求項１６】
前記優先度はホストまたはユーザにより設定されることを特徴とする請求項１５記載のディスク装置の制御方法。
【請求項１７】
前記不揮発メモリに、前記ディスク上の領域の一部のデータを記憶するキャッシュ用領域とホストシステムからのライトデータを記憶するバッファ用領域とを設け、前記優先度は前記キャッシュ用領域を高、前記バッファ用領域を低とすることを特徴とする請求項１５記載のディスクディスク装置の制御方法。
【請求項１８】
前記不揮発メモリに、ホストシステムからの指示がないと無効にできないデータを格納する第１の領域と、前記ホストシステムからの指示がなくても無効にできるデータを格納する第２の領域とを設け、前記第１の領域と前記第２の領域とを区別する情報を、前記メモリ管理テーブルは前記不揮発メモリのLBAに対応して有し、前記不揮発メモリの前記第２のLBAとして、前記メモリ管理テーブルを参照して、前記第２の領域に含まれる領域に対応するLBAを選定することを特徴とする請求項１０記載のディスク装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスク装置及びその制御方法に係り、特に大容量の半導体不揮発メモリを実装したディスク装置に関する。
【背景技術】
【０００２】
データ転送速度が速くかつ低消費電力の半導体不揮発メモリ(以下、単に不揮発メモリと呼ぶ。)をディスク装置の中に実装し、ディスクと不揮発メモリのそれぞれの特性を生かしたデータ処理により、データ転送速度と省電力効果の向上を図るディスク装置の開発が進められている。
【０００３】
たとえば、オペレーティングシステムなどの計算機（ホスト）の起動プログラムや使用頻度の高いアプリケーションプログラムを不揮発メモリに記憶しておくことで、ホストへのデータ転送速度を向上させ、起動時間の短縮を図っている。また、ディスクへのアクセスがない時には、ディスクをスピンダウンし、スピンダウン中はライトデータを不揮発メモリにバッファリング、あるいはリードデータを不揮発メモリから転送することで省電力化を図っている。上記のようなディスク装置は、特許文献１に記載されている。
【０００４】
上記のようなディスク装置の不揮発メモリには主にビットコストの低いフラッシュメモリが使われている。フラッシュメモリは、ランダムアクセス性能が高くまた消費電力が少ないが、書き換え回数制限を持つため、データの書き換え頻度の高いアプリケーションでフラッシュメモリを使用すると、長期の使用に耐えられないという問題がある。そのため、フラッシュメモリでは、特定の物理ブロックに書き換えが集中しないよう制御したり、不良が生じたブロックを予備のブロックに置き換えるなどしたりして耐久性の強化を図っている。フラッシュメモリにおける書き換え均一化のための制御方法は、特許文献２、３、４に記載されている。
【０００５】
【特許文献１】US２００７０１６２６９３
【特許文献２】特開２００３−２０３０１６
【特許文献３】特開２００５−１２２５２９
【特許文献４】特開２００６−０１８８９３
【発明の開示】
【発明が解決しようとする課題】
【０００６】
フラッシュメモリでは、上記のように書き換え回数の均一化や、書き換え回数に達したブロックを予備のブロックに置き換えるなどの処理を行っているが、予備のブロックを使い果たして所定の容量が使用できなくなるとメモリ全体が使用できなくなるという問題がある。そのためフラッシュメモリを実装したディスク装置では、フラッシュメモリが使用できなくなることにより、データ転送速度や省電力効果が急激に低下する。
【０００７】
上記問題点を考慮して本発明が解決しようとする課題は、書き換え回数に制限のある不揮発メモリを含むディスク装置において、不揮発メモリの交替領域を使い果たしても、不揮発メモリを効率的に継続使用可能にすることである。
【課題を解決するための手段】
【０００８】
本発明のディスク装置及びその制御方法は、不揮発メモリに交替領域がない状態（交替領域を使い果たした状態）における、次のような構成である。書き換え回数に制限のある不揮発メモリ、ディスク、及び不揮発メモリの論理アドレス（LBA：Logical Block Address）と物理アドレスとの対応関係を管理するメモリ管理テーブルを含む制御部を有する。制御部は、不揮発メモリ上のデータを書き込むべきLBAに対応する物理アドレスの領域の不良発生に応答して、データを書き込むべきLBAとは異なる不揮発メモリのLBAに対応する物理アドレスにデータを書き込み、メモリ管理テーブルにおいて上記書き込むべきLBAと上記データを書き込んだ物理アドレスを対応付ける。
【０００９】
本発明の望ましい他の態様は、次のとおりである。ディスクは不揮発メモリの交替領域と不揮発メモリに割り当てられたLBAと連続するLBAの記憶領域とを有する。制御部は、ディスクの記憶領域のLBAに連続するLBAをデータを書き込むべきLBAとは異なる不揮発メモリのLBAに選定し、不揮発メモリにデータを書き込むべきLBAに対応する物理アドレスの領域の不良発生に応答して、上記選定したLBAに対応するディスクの物理アドレス（交替領域）に上記選定した、ディスクの記憶領域のLBAに連続するLBAに対応する不揮発メモリ上の物理アドレスに格納されていたデータを書き込み、上記ディスクの記憶領域のLBAに連続するLBAへのアクセスを上記交替領域のLBAへのアクセスに変換するとともに、上記ディスクの記憶領域のLBAに連続するLBAに対応する不揮発メモリ上の物理アドレスに不良領域に書き込もうとしていたデータを書き込み、メモリ管理テーブルにおいて、データを書き込むべきLBAとデータを書き込んだ上記物理アドレスを対応付ける。
【００１０】
本発明の望ましいさらに他の態様は、次のとおりである。ディスクは、該ディスクに接続するホストシステムの起動プログラムを格納し、不揮発メモリは起動プログラムのコピーを予め格納し、不揮発メモリに格納されている起動プログラムへの、ホストシステムからのアクセス順序を設定しておく。制御部は、データを書き込むべきLBAとは異なる不揮発メモリのLBAとして、アクセス順序を参照して、不揮発メモリの格納されている起動プログラムのうちで最も遅いアクセス順序に対応するLBAを選定する。
【００１１】
本発明の望ましいさらに他の態様は、次のとおりである。制御部は、データを書き込むべきLBAとは異なる不揮発メモリのLBAとして、不揮発メモリの領域に予め設定された優先度を参照して、優先度の低い領域に含まれる領域に対応するLBAを選定する。
【００１２】
本発明の望ましいさらに他の態様は、次のとおりである。不揮発メモリに、ホストシステムからの指示がないと無効にできないデータを格納する領域と、ホストシステムからの指示がなくても無効にできるデータを格納する領域とを設け、制御部は、データを書き込むべきLBAとは異なる不揮発メモリのLBAとして、ホストシステムからの指示がなくても無効にできるデータを格納する領域に含まれる領域に対応するLBAを選定する。
【発明の効果】
【００１３】
本発明によれば、書き換え回数に制限のある不揮発メモリを含むディスク装置において、不揮発メモリの交替領域を使い果たしても、不揮発メモリを効率的に使用継続できる。
【発明を実施するための最良の形態】
【００１４】
本発明の実施の形態は、書き換え回数に制限のある不揮発メモリとディスクを有するディスク装置とその制御方法である。不揮発メモリの論理アドレス（LBA：Logical Block Address）と物理アドレスとの対応関係を管理するメモリ管理テーブルを有する。不揮発メモリ内に交替領域がない状態（交替領域を使い果たした状態）において、データを書き込むべきLBAに対応する物理アドレスに不良領域が発生した場合に、ディスク装置は次のように動作する。データを書き込むべきLBAとは異なる不揮発メモリのLBAに対応する物理アドレスにデータを書き込む。このようにすることで、不良領域が発生したことにより無効となる領域が制御可能となり、不揮発メモリを効率よく使用可能となる。
【００１５】
ディスクと不揮発メモリで１つの連続した論理空間を構成し不揮発メモリの交替領域をディスク上に設ける場合において、ディスクの論理空間に連続するLBAから順に不揮発メモリの領域をディスク上の交替領域に交替する実施例１、ディスクの一部領域のコピーを不揮発メモリに格納し、上記格納したデータにアクセス順序がある場合は、アクセス順序の遅いデータから順にディスクへのアクセスに切り換える実施例２、不揮発メモリの領域に予め優先度が設定してある場合には、優先度の低い領域を優先して無効にする実施例３、及びホストからの指示が無ければデータを取り除けない領域と、指示が無くてもデータを取り除ける領域とを不揮発メモリに設けてある場合は、ホストからの指示が無くてもデータを取り除ける領域を優先して無効にする実施例４について以下説明する。
【実施例１】
【００１６】
図１は実施例１に係るディスク装置の構成例を示す図である。本実施例のディスク装置（１００）は、書き換え回数に制限のある不揮発メモリ（１０１）、及び不揮発メモリの交替領域を内部にもつディスク（１０２）を含む記憶部（１０３）と、不揮発メモリ（１０１）のデータを管理するメモリアドレス管理テーブル（１０４）、及び不揮発メモリ（１０１）とディスク（１０２）とのLBA(Logical  Block  Address)空間を管理するメモリ・ディスク論理アドレス空間管理テーブル（１０５）を含む制御部（１０６）を有する。
【００１７】
図２に、ディスク装置（１００）で構成される論理アドレス空間の例を示す。図２では、０から論理アドレス（N−１）までを不揮発メモリ（１０１）に割り当て、論理アドレスNから最大アドレス（ディスク容量によって決定される最大アドレス）までをディスク（１０２）に割り当てている。
【００１８】
図３に、本実施例におけるディスク装置（１００）の制御部（１０６）が実行する交替処理のフローを示す。図３の処理フローは、不揮発メモリ（１０１）内にあらかじめ設定されている交替領域を使い果たしてしまった後に、さらに不良領域が発生した場合の交替処理を示している。
【００１９】
制御部（１０６）は、不揮発メモリ（１０１）に不良領域が発生すると（ステップ３００）、ディスク（１０２）の論理アドレス空間に連続する不揮発メモリ上の論理アドレスを交替候補として選定する(ステップ３０５)。
【００２０】
図４に、交替処理時の動作例を示す。図４では、LBAが０から（N−1）を不揮発メモリ（１０１）のアドレス空間として、LBAのNから最大アドレスまでをディスク（１０２）上の論理空間として割り当てている。図４の例では、ディスク（１０２）上の論理アドレス０からNの空間を不揮発メモリ（１０１）の交替用領域（４０１）として確保している。なお、不揮発メモリ（１０１）では、領域ごとに論理アドレスと物理アドレスが対応付けられている。
【００２１】
図４の例では、不揮発メモリ（１０１）に不良領域が発生すると、本実施例の交替処理では、ディスク（１０２）の論理アドレス空間（Ｎ〜）に連続する不揮発メモリ（１０１）の論理アドレス（N−1）（４０２）を交替候補として選定する。
【００２２】
図３のフローに戻り、選定した交替候補（４０２）をディスク（１０２）上の交替領域に交替する（ステップ３１０）。
【００２３】
次に選定した交替候補の不揮発メモリ上の物理アドレスに不良の発生した領域に書き込もうとしていたデータを書き込む（ステップ３１３）。最後に、交替後の処理として、不良領域の論理アドレスと交替した上記領域の物理アドレスを対応付ける（ステップ３１５）。
【００２４】
図４の例では、不良の発生した領域は、論理アドレス１（４０３）である。ディスク上の論理空間に連続するメモリ上のアドレスである（N−1）（４０２）を交替領域の候補として選定し、この論理アドレス（N−1）（４０２）を、ディスク（１０２）上のアドレスNと連続する交替用領域の（N-1）（４０４）に交替する。すなわち、不揮発メモリ上の論理アドレスN-1に対応する物理アドレスにあるデータをディスク上の論理アドレスN-1に対応する物理アドレスに移動する。次に不良の発生した領域に書き込もうとしたデータを交替領域として選定した論理アドレスN-1対応する不揮発メモリ上の物理アドレスに書き込み、最後に、交替領域として選定した論理アドレスの（N−1）（４０２）に対応する不揮発メモリの上の物理アドレス（４０５）を不良が発生した領域の論理アドレス１（４０３）に対応付ける。結果として、不良の発生した領域のデータは不揮発メモリに継続して残り、ディスク上の論理空間に連続する領域のデータがディスク上の交替領域に交替される。
【００２５】
図３の処理フローに戻り、メモリアドレス管理テーブル（１０４）において、交替したアドレスの交替ビットを１に設定する（ステップ３２０）。図５に、メモリアドレス管理テーブル（１０４）の構成例を示す。メモリアドレス管理テーブル（１０４）は、不揮発メモリに記憶されたデータのLBA（５００）、物理アドレス（５０５）、交替処理発生の有無を示す交替ビット（５１０）より成る。
【００２６】
図３のフローに戻り、不揮発メモリ（１０１）とディスク（１０２）の領域の範囲とサイズを変更する（ステップ３３０）。
【００２７】
図６に不揮発メモリ（１０１）とディスク（１０２）の論理アドレス空間を管理する、メモリ・ディスク論理アドレス空間管理テーブル（１０５）の構成例を示す。メモリ・ディスク論理アドレス空間管理テーブル（１０５）は、不揮発メモリ（１０１）とディスク（１０２）の領域の開始アドレスと最終アドレスを記憶する領域範囲（６００）と、それぞれのメディアの論理空間のサイズを記憶する空間サイズ（６０５）より成る。本実施例のディスク装置（１００）は、図３に示した一連の交替処理を終了すると不揮発メモリ（１０１）、ディスク（１０２）それぞれの領域の範囲（開始アドレスと最終アドレス）、及びそれらの領域のサイズを修正する。
【実施例２】
【００２８】
書き換え回数に制限のある不揮発メモリを備えたディスク装置においては、内部の不揮発メモリには、ディスク装置への電源投入後すぐにアクセスできるが、スピンアップに時間がかかるためディスクにはしばらくの間（数秒程度）アクセスすることができない。また、不揮発メモリは、ランダムな読み出し速度が速いという特性がある。起動プログラムは比較的ランダムアクセスが発生しやすいため、ホストを短時間で起動するために、起動プログラムを不揮発メモリに格納しておくという不揮発メモリの使用方法がある。不揮発メモリの起動プログラムを格納した領域以外の領域は起動後、ホストによってリードアクセス頻度の高いデータの領域などとして使用される。なお、起動プログラムは、ホストのOS(オペレーティングシステム)に限らず、OSの立ち上げに引き続き実行するように設定してあるアプリケーションプログラムなどを含む。
【００２９】
図７は実施例２に係るディスク装置（７００）の構成例を示す図である。本実施例のディスク装置（７００）は、書き換え回数に制限のある不揮発メモリ（７０１）及びディスク（７０２）を含む記憶部（７０３）、不揮発メモリ（７０１）上のデータのアクセス順序を管理するアクセス順序管理テーブル（７０４）を備えた制御部（７０５）を有する。本実施例のディスク装置（７００）では、ディスク（７０２）上に記憶されたシステム(ホスト)の起動プログラムを不揮発メモリ（７０１）にコピーして記憶してある。したがって、不揮発メモリ（７０１）上のデータは起動プログラムであり、そのアクセス順序は、ホストが起動プログラムをロードする順序である。
【００３０】
図８に不揮発メモリ（７０１）上に記憶されたシステムの起動プログラムのアクセス順序を記憶したアクセス順序管理テーブル（７０４）の例を示す。アクセス順序管理テーブル（７０４）は、LBA（８０５）に対応して、不揮発メモリの物理アドレス（８１０）、領域のサイズ（８１５）、起動時のアクセス順序(８２０)、及び領域が無効であることを示す無効フラグ（８２５）の項目を有する。たとえば、アクセス順序管理テーブル（７０４）の最初のエントリーは、LBAが0ｘ10000001を先頭アドレスとし、その物理アドレスが0x01ffの128セクタの領域が、起動時に1番目にアクセスされることを示している。図８に示すアクセス順序管理テーブル（７０４）では、最後のエントリーに示すLBAが0ｘ34400224を先頭とする領域を起動時の最後に（１６２番目に）アクセスするものとする。
【００３１】
したがって、図８に示すアクセス順が１番目や２番目の物理領域が、不揮発メモリ（７０１）上に無い（ディスク（７０２）上にある）と、ディスク（７０２）のスピンアップが完了するまでアクセスを待たなければならず、起動時間が長くなり、起動プログラムを不揮発メモリ（７０１）に格納しておき、起動時間を短くする意図に反することになる。
【００３２】
図９に不揮発メモリ（７０１）にホスト起動時のプログラムを記憶する場合において、起動プログラムを書き込んでいる一部の領域に不良領域が発生した場合の制御部（７０５）の処理フローを示す。
【００３３】
不揮発メモリでは、書き換え耐性を高めるために、不揮発メモリの書き換え単位となるブロックごとの書き換え回数が均一化するようにデータの再配置を行っている。この制御をウエアレベリングという。起動プログラムは一般に更新されることはないが、不揮発メモリの一部をディスクからのデータをキャッシュするための領域やライトデータをバッファリングするための領域として使用している場合、ウエアレベリングの処理により、起動プログラムが書き換え頻度の高い他の領域に書き込まれる場合が生じる。その際、書き込み先の領域において不良領域が発生する場合が起こりうる。
【００３４】
なお、図９の処理フローは不揮発メモリ（７０１）内にあらかじめ設定されている交替領域を使い果たしてしまった後に不良領域が発生した場合の処理を示している。
【００３５】
本実施例のディスク装置（７００）は、不揮発メモリ（７０１）上で不良領域が発生すると(ステップ９００)、不揮発メモリ（７０１）に記憶されたシステム起動用のプログラムのうちで、起動時のアクセス順が最も遅い領域を選定する（ステップ９０５））。
【００３６】
図８のアクセス順序管理テーブル（７０４）では、LBAが0ｘ34400224を先頭とする領域を起動時の最後に（１６２番目に）アクセスするものとしているので、この領域を選定する。
【００３７】
選定した領域の物理アドレスに、不良領域に書き込もうとしていたデータを書き込み(ステップ９１０)、上記選定した領域の物理アドレスを不良領域の論理アドレスに対応付ける（ステップ９１５）。アクセス順序管理テーブル（７０４）において、選定した領域の無効フラグ(８２５)に１を設定する(ステップ９２０)。無効フラグに１が設定された領域が次にアクセスされるとき(次にホストを起動するとき)、不揮発メモリ（７０１）へのアクセスではなく、ディスク（７０２）へのアクセスに替えられる。
【００３８】
本実施例のディスク装置（７００）は、不揮発メモリ（７０１）に不良領域が発生すると、アクセス順序管理テーブル（７０４）の無効フラグ(８２５)が０の領域の中から起動時のアクセス順がもっとも遅い領域から順に、不良領域に替えて使用する。選定した領域のサイズが不良領域のサイズより大きい場合は、アクセス順序管理テーブル（７０４）に登録されているサイズから、不良領域のサイズを差し引き、残りのサイズを新たに該当領域のサイズとして登録する。その際、無効フラグに１を設定しない。たとえば、不良領域のサイズが32セクタであり、選定した領域をアクセス順序管理テーブル（７０４）の、LBAが0ｘ34400224を先頭とする領域とする。この場合、LBAが0ｘ34400224を先頭とする領域のサイズは256セクタであるので、アクセス順序管理テーブル（７０４）のサイズ（８１０）を224セクタに書換え、無効フラグを0のままにする。
【００３９】
また、選定した領域のサイズが不良領域のサイズより小さい場合は、選定した領域のサイズ分の不良領域を選定した領域に対応付け、選定した領域の無効フラグを１とする。さらに選定した領域の次に遅いアクセス順となる領域を新たに選定し、新たに選定した領域を対象に、不良領域の残りの領域を対応付ける。
【００４０】
本実施例によれば、不揮発メモリの予め決定されたアクセス順が遅い領域から順に、不良領域に替えて使用するので、予め決定されたアクセス順のアクセスへの影響を最小限に留めることができる。特に、予め決定されたアクセス順でアクセスされる起動プログラムによるホストの起動が、ディスクのスピンアップ時間に影響されることが少ない。
【実施例３】
【００４１】
図１０は、第３実施例に係るディスク装置の構成例を示す図である。本実施例に係るディスク装置（１０００）は、書き換え回数に制限のある不揮発メモリ（１００１）及びディスク（１００２）を含む記憶部（１００３）、不揮発メモリ（１００１）上のデータのアドレスを管理するメモリ領域管理テーブル（１００４）を備えた制御部（１００５）を有する。
【００４２】
本実施例のディスク装置（１０００）は、不揮発メモリ（１００１）にディスク（１００２）上のデータを記憶するキャッシュ用領域とホスト（１００６）より転送されたライトデータを記憶するバッファ用領域を持つ。図１１に不揮発メモリ上の領域を管理するメモリ領域管理テーブル（１００４）の例を示す。メモリ領域管理テーブル（１００４）は、領域の種類（１１１０）、領域の範囲（開始アドレスと最終アドレス）（１１１５）、領域のサイズ（１１２０）の項目を有する。図１１では、バッファ用領域及びキャッシュ用領域の各々が論理アドレスで表される連続した一つの領域（開始アドレスと最終アドレスの組が一つ）として示しているが、バッファ用領域及びキャッシュ用領域の各々は、分割された複数の領域に跨っても良い。本実施例のディスク装置（１０００）は不良領域に対する処理に応じて、処理した領域のサイズに合わせ、メモリ領域管理テーブル（１００４）のバッファ及びキャッシュ用領域の開始アドレス・終了アドレス（１１１５）及びサイズ（１１２０）を修正する。
【００４３】
図１２に、本実施例のディスク装置（１０００）の不揮発メモリ（１００１）をライトデータのバッファ用領域とディスク（１００２）上のデータのキャッシュ用領域として用いている状況で、不良領域が発生した場合の制御部（１００５）による処理フローを示す。また、図１２の処理フローは不揮発メモリ（１００１）内にあらかじめ設定されている交替領域を使い果たしてしまった後に不良領域が発生した場合を示している。なお、キャッシュ用領域には、例えば起動時のプログラムや、アクセス頻度の高いアプリケーションプログラムなどを記憶する。
【００４４】
本実施例のディスク装置（１０００）は不良領域が発生すると（ステップ１２００）、その不良領域に対処するためにライトデータのバッファ用領域を選定する(ステップ１２０５)。例えば、論理アドレスの大きい順にライトデータのバッファ用の領域を選定する。選定した領域の物理アドレスに不良領域に書き込もうとしていたデータを書き込む(ステップ１２１０)。ただし、ライトデータのバッファ用領域上の領域を選定する場合には、ディスク（１００２）に書き込まれていないライトデータ(デステージされていないライトデータ)が記憶されていない領域を選ぶ。ライトデータ用のバッファ領域が、デステージされていないライトデータでいっぱいの場合には、ライトデータをディスクに書き込んだ後、ディスクに書き込まれたライトデータが記憶されていた領域を選定する。
【００４５】
次に、選定した領域の物理アドレスを不良領域の論理アドレスに対応付ける(ステップ１２１５)。図１３に、本実施例のディスク装置（１０００）の不揮発メモリ（１００１）にライトデータのバッファ用領域（１３０１）とディスク(１００２)上のデータをコピーするキャッシュ用領域（１３０２）を設けた場合の動作例を示す。図１３の例では、不良領域（１３０６）がキャッシュ用の領域で発生している（１３０３）。そのため、ライト用のバッファ領域の領域を選定し（１３０４）、選定した領域の物理アドレス（１３０５）に、不良が生じた領域に書き込もうとしたデータを書き込み(ステップ１２１０)、その領域の物理アドレス（１３０５）と不良領域の論理アドレス（１３０３）を対応付ける（ステップ１２１５）。次に、ライトデータのバッファ用領域のアドレス範囲及びサイズを選定した領域のサイズに合わせて修正する(ステップ１２２０)。
【００４６】
ホストへのリードデータのデータ転送速度を優先してライト用のバッファ領域から不良発生に対処する領域を選定する場合について説明したが、省電力化を優先してキャッシュ用領域から不良発生に対処する領域を選定してもよい。データ転送速度と省電力の優先度は、あらかじめディスク装置に設定しておいてもよいし、ホストあるいはユーザによって決められるようにしてもよい。
【００４７】
図１４にデータ転送速度と省電力の優先度をユーザにより決定するためのユーザインタフェース画面の例を示す。各ユーザは、ホストのユーザインタフェースを使用して優先度を決定する。データ転送速度及び省電力のそれぞれに関して設定項目の優先度をプルダウンメニュー（１４０１、１４０２）により選択する。各設定事項の優先度を同じにした場合は、設定ミスの注意を促すポップアップウィンドウを表示する。
【００４８】
図１５に、図１４の設定画面によるユーザの設定を記憶するための優先度管理テーブルの構成例を示す。優先度管理テーブルは、領域の種類と、領域ごとの優先度を示す項目より成る。優先度管理テーブルには、図１４の優先度設定画面でユーザが設定した優先度を、キャッシュ用領域及びバッファ用領域の優先度に変換して記録する。図１４の例では、データ転送速度の優先度はキャッシュ領域の優先度に、また省電力の優先度はバッファ領域の優先度に変換して記憶している。
【００４９】
図１５のテーブルの値(優先度)は、ホスト（１００６）からディスク装置（１０００）にパラメータを設定するコマンドインタフェースを設け、そのイタンフェースを使ってディスク装置（１０００）に設定する。例えば、AT Attachment（アメリカ規格協会によって標準化されたIntegrated Drive Electronicsの正式な規格）のコマンドではディスク装置（１０００）のパラメータを設定するコマンドとして、Set Features Commandがある。例えば、このコマンドを拡張することにより、不揮発メモリ上の領域の優先度を設定する。
【００５０】
本実施例によれば、不揮発メモリにディスク上のデータを記憶するキャッシュ用領域とホストより転送されたライトデータを記憶するバッファ用領域を持ち、領域に対応して設定されている低い優先度の領域を、不良領域に替えて使用するので、優先度の高い領域への影響を最小限に留めることができる。
【実施例４】
【００５１】
図１６は本実施例に係るディスク装置の構成例を示す図である。ディスク装置（１６００）は、書き換え回数に制限のある不揮発メモリ（１６０１）及びディスク（１６０２）を含む記憶部（１６０３）、不揮発メモリ上のデータを管理するメモリデータ管理テーブル（１６０４）を備えた制御部（１６０５）を有する。本実施例のディスク装置(１６００)は、不揮発メモリ（１６０１）にディスク（１６０２）の一部領域のデータをコピーして記憶している。
【００５２】
図１８に不揮発メモリにホスト（１６０６）の指示がないと不揮発メモリ（１６０１）から取り除けないデータと、ホスト（１６０６）からの指示がなくても不揮発メモリ（１６０１）から取り除くことができるデータを管理するメモリデータ管理テーブル（１６０４）の構成例を示す。メモリアドレス管理テーブル（１６０４）は、LBA(１８１０)、不揮発メモリ上の物理アドレス(１８１５）、データのサイズ(１８２０)、ホスト（１６０６）以外からの指示によるデータの除去の可否を示すフラグ(１８２５)、領域が無効であることを示す無効フラグ(１８３０)の項目を有する。
【００５３】
図１９に、AT Attachment 8 - ATA/ATAPI Command Set（ATA8-ACS）における、フラッシュメモリ上にホストからの指示がないと取り除けないデータを書き込むためのコマンド、ADD LBA(S) TO NV CACHE PINNED SETの構成を示す。ATA8-ACSのコマンドは、Command(１９０５)、Device(１９１０)、LBA(１９１５)、Count(１９２０)、Feature（１９２５）より構成される。
【００５４】
ADD LBA(S) TO NV CACHE PINNED SETでは、Command（１９０５）にはフラッシュキャッシュコマンドを示すB6hを、Device（１９１０）には、デバイスの状態を示すビットを、LBA（１９１５）には、キャッシュに転送するデータがホストからのライトデータか、あるいは、ディスクから読み出したデータかを示すためのビットを、またCount（１９２０）にはキャッシュに転送するデータのセクタ数を、Feature（１９２５）にはNV Cache Commandsの種別を示すコードを設定する。
【００５５】
ATA8-ACSでは、上記のコマンドを用いてホストからの指示がないと取り除けないデータを不揮発メモリ上に転送することができる。
【００５６】
上記のように、ADD LBA(S) TO NV CACHE PINNED SETを用いて不揮発メモリ（１６０１）上にホスト（１６０６）からの指示がないと取り除けないデータを記憶することができるが、不揮発メモリ（１６０１）には、ディスク装置（１６００）内部だけで処理できるデータも記憶することができる。
【００５７】
図１９のコマンドを用いて不揮発メモリ（１６０１）にデータが書き込まれた場合には、図１８のメモリアドレス管理テーブル（１６０４）の、ホスト（１６０６）以外の除去の可否を示すフラグ（１８２５）を１にセットする。
【００５８】
図１７に不揮発メモリ（１６０１）にホスト（１６０６）の指示がないと不揮発メモリ（１６０１）から取り除けないデータと、ホスト（１６０６）からの指示がなくても不揮発メモリ（１６０１）から取り除くことができるデータを記憶し、不揮発メモリ（１６０１）に不良領域が発生した場合に、ホスト（１６０６）からの指示がなくてもメモリから取り除けるデータの領域を選定して、不良領域に対処する場合の処理フローを示す。図１７の処理フローは不揮発メモリ（１６０１）内にあらかじめ設定されている交替領域を使い果たしてしまった後に不良領域が発生した場合の処理を示している。
【００５９】
不良領域が発生すると(ステップ１７００）メモリデータ管理テーブル（１６０４）を用いて、無効となっていない領域（無効フラグ（１８３０）に1がセットされていない領域）でかつホスト（１６０６）からの指示がなくてもメモリからデータを取り除ける領域を選定する(ステップ１７０５)。選定した領域の物理アドレスに不良領域に書き込もうとしていたデータを書き込む(ステップ１７１０)。選定した領域の物理アドレスを不良領域の論理アドレスに対応付ける(ステップ１７１５)。メモリデータ管理テーブル（１６０４）の、選定した領域の無効ビット（１８３０）に１を設定する（ステップ１７２０）。
【００６０】
本実施例によれば、不揮発メモリに、ホストの指示がないと不揮発メモリから取り除けないデータと、ホストからの指示がなくても不揮発メモリから取り除くことができるデータが格納され、ホストからの指示がなくても不揮発メモリから取り除くことができるデータの格納領域を不良領域に替えて使用するので、ホストの指示がないと不揮発メモリから取り除けないデータへの影響がない。
【００６１】
実施例1〜実施例４によれば、書き換え回数に制限のある不揮発メモリを含むディスク装置において、不揮発メモリの交替領域を使い果たしても、不揮発メモリを効率的に継続使用可能となる。
【図面の簡単な説明】
【００６２】
【図１】実施例１のディスク装置の構成例である。
【図２】実施例１のディスク装置で構成される論理アドレス空間の例である。
【図３】実施例１のディスク装置における交替処理のフローである。
【図４】実施例１の交替処理時の動作例である
【図５】実施例１のメモリアドレス管理テーブルの構成例である。
【図６】実施例１のメモリ・ディスク論理アドレス空間管理テーブルの構成例である。
【図７】実施例２のディスク装置の構成例である。
【図８】実施例２のアクセス順序管理テーブルの構成例である。
【図９】実施例２のディスク装置における処理フローである。
【図１０】実施例３のディスク装置の構成例である。
【図１１】実施例３のメモリ領域管理テーブルの構成例である。
【図１２】実施例３のディスク装置における処理フローである。
【図１３】実施例３の動作例である。
【図１４】実施例３のユーザインタフェース画面例である。
【図１５】実施例３の優先度管理テーブルの構成例である。
【図１６】実施例４のディスク装置の構成例である。
【図１７】実施例４のディスク装置における処理フローである。
【図１８】実施例４のメモリデータ管理テーブルの構成例である。
【図１９】実施例４のコマンドの構成である。
【符号の説明】
【００６３】
１０１：  書き換え回数に制限のある不揮発メモリ、１０２：  ディスク、１０３：  記憶部、１０４：  メモリアドレス管理テーブル、１０５：  メモリ・ディスク論理アドレス空間管理テーブル、１０６：  制御部、７０４：  アクセス順序管理テーブル、１００４：  メモリ領域管理テーブル、１６０４：  メモリデータ管理テーブル。
【図１】
0005374075.tif 000002
【図２】
0005374075.tif 000003
【図３】
0005374075.tif 000004
【図４】
0005374075.tif 000005
【図５】
0005374075.tif 000006
【図６】
0005374075.tif 000007
【図７】
0005374075.tif 000008
【図８】
0005374075.tif 000009
【図９】
0005374075.tif 000010
【図１０】
0005374075.tif 000011
【図１１】
0005374075.tif 000012
【図１２】
0005374075.tif 000013
【図１３】
0005374075.tif 000014
【図１４】
0005374075.tif 000015
【図１５】
0005374075.tif 000016
【図１６】
0005374075.tif 000017
【図１７】
0005374075.tif 000018
【図１８】
0005374075.tif 000019
【図１９】
0005374075.tif 000020