(57)【要約】    【課題】ディスク媒体の特徴を活かしてキャッシュ領域として使用する不揮発メモリの書換えの制限回数を増大させる。    【解決手段】ユーザデータは磁気ディスク２２−１，２２−２と不揮発メモリ４２に格納される。メモリ配置管理部５４は不揮発メモリ４２におけるライトキャッシュ領域５８の配置位置を示す領域先頭アドレスを登録したメモリ管理情報５６をディスク媒体に格納して管理する。メモリ配置管理部５２は、不揮発メモリ４２に配置したライトキャッシュ領域５８のライトキャッシュデータを全てディスク媒体に書き込んで空にする毎に、不揮発メモリ５８の消去単位より小さい所定のアドレスサイズ単位、例えばセクタサイズ単位またはワード単位ずつライトキャッシュ領域５８を巡回させるようにメモリ管理情報５６を変更する。リードキャッシュ領域６０についても、同様に、セクタサイズ単位またはワード単位ずつドキャッシュ領域６０を巡回させるようにメモリ管理情報５６を変更する。    【選択図】      図１
2009104687.tif 000002
【特許請求の範囲】
【請求項１】
ヘッドによりデータを記録して再生するディスク媒体と、
ライトキャッシュ領域が配置される不揮発メモリと、
上位装置のライト要求により前記ディスク媒体に記録するライトデータを前記ライトキャッシュ領域に一時的に格納するキャッシュ制御部と、
前記不揮発メモリにおける前記ライトキャッシュ領域の配置位置を示すメモリ管理情報を前記ディスク媒体に格納して管理するメモリ配置管理部と、
前記不揮発メモリに配置したライトキャッシュ領域のライトキャッシュデータを全て前記ディスク媒体に書き込んで空にする毎に、前記不揮発メモリの消去単位より小さい所定のアドレスサイズ単位ずつ前記ライトキャッシュ領域を巡回させるように前記メモリ管理情報を変更するメモリ配置変更部と、
を備えたことを特徴とする記憶装置。
【請求項２】
請求項１記載の記憶装置に於いて、
前記メモリ配置管理部は前記メモリ管理情報に前記ライトキャッシュ領域の領域先頭アドレスを登録して管理し、
前記メモリ配置変更部は、前記メモリ管理情報に登録している前記領域先頭アドレスを前記所定のアドレス単位だけずらすことを特徴とする記憶装置。
【請求項３】
ヘッドによりデータを記録して再生するディスク媒体と、
リードキャッシュ領域が配置される不揮発メモリと、
上位装置のリード要求により前記ディスク媒体から再生したリードデータを前記リードキャッシュ領域に一時的に格納するキャッシュ制御部と、
前記不揮発メモリにおける前記リードキャッシュ領域の配置位置を示すメモリ管理情報を前記ディスク媒体に格納して管理するメモリ配置管理部と、
前記不揮発メモリに配置したリードキャッシュ領域のリードキャッシュデータの一部または全て無効化して空にする毎に、前記不揮発メモリの消去単位より小さい所定のアドレスサイズ単位だけ前記リードキャッシュ領域を巡回させるように前記メモリ管理情報を変更するメモリ配置変更部と、
を備えたことを特徴とする記憶装置。
【請求項４】
請求項３記載の記憶装置に於いて、
前記メモリ配置管理部は前記メモリ管理情報に前記リードキャッシュ領域の領域先頭アドレスを登録して管理し、
前記メモリ配置変更部は、前記メモリ管理情報に登録している前記領域先頭アドレスを前記所定のアドレス単位だけずらすことを特徴とするディスク装置。
【請求項５】
ヘッドによりデータを記録して再生するディスク媒体と、ライトキャッシュ領域及びリードキャッシュ領域が配置される不揮発メモリとを備えた記憶装置の制御回路に於いて、
上位装置のライト要求により前記ディスク媒体に記録するライトデータを前記ライトキャッシュ領域に一時的に格納すると共に、上位装置のリード要求により前記ディスク媒体から再生したリードデータを前記リードキャッシュ領域に一時的に格納するキャッシュ制御部と、
前記不揮発メモリにおける前記ライトキャッシュ領域及びリードキャッシュ領域の配置位置を示すメモリ管理情報を前記ディスク媒体に格納して管理するメモリ配置管理部と、
前記不揮発メモリに配置したライトキャッシュ領域のライトキャッシュデータを全て前記ディスク媒体に書き込んで空にする毎に、前記不揮発メモリの消去単位より小さい所定のアドレスサイズ単位だけ前記ライトキャッシュ領域を巡回させるように前記メモリ管理情報を変更する第１メモリ配置変更部と、
前記不揮発メモリに配置したリードキャッシュ領域のリードキャッシュデータを全て無効化して空にする毎に、前記不揮発メモリの消去単位より小さい所定のアドレスサイズ単位だけ前記リードキャッシュ領域を巡回させるように前記メモリ管理情報を変更する第２メモリ配置変更部と、
を備えたことを特徴とする制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶媒体としてディスク媒体と不揮発メモリを使用するハイブリッド型の記憶装置及び制御回路に関し、特に、キャッシュ領域としてフラッシュメモリなどの書き換え回数に制限を持つ不揮発メモリを使用する記憶装置及び制御回路に関する。
【背景技術】
【０００２】
従来、磁気ディスク装置にあっては、記憶媒体としてヘッドによりデータを記録して再生する磁気ディスクを使用しているが、これに加え不揮発メモリであるフラッシュメモリを組み合わせたハイブリッド型の磁気ディスク装置が実用化されている。
【０００３】
バイブリッド型の磁気ディスク装置は、例えばホストからのライトコマンドにより受領したライトデータをフラッシュメモリに一時的に保存し、フラッシュメモリにライトデータが保持しきれなくなったときに、ディスク媒体上にデータを書き込むようにするライトキャッシュ機能を持つようにしている。
【０００４】
また、ホストからリードコマンドを受領した時は、その対象データがフラッシュメモリ内に存在する場合には、フラッシュメモリからデータを読出してホストに対して転送するリードキャッシュ機能を持つようにしている。
【０００５】
このようにフラッシュメモリに対しデータを書き込んだり読み出したりしている間、磁気ディスクを回転させるスピンドルモータを停止させておくことが可能であり、これにより磁気ディスク装置の消費電力を抑えることができ、主にモバイル型のパーソナルコンピュータなどで有効となる。
【０００６】
一方、ハイブリッド型の磁気ディスク装置に不揮発メモリとして使用しているフラッシュメモリは、書き換え動作より素子劣化が進行する特徴があり、書き換えおよび消去回数に制限がある。現状では、約十万回程度までの書き換えが可能とされている。
【０００７】
このような状況において、フラッシュメモリをメモリ全域に渡って、均等に満遍なく使用するようにすれば、その結果、それぞれのセルあたりの使用頻度としては下がるため、フラッシュメモリの書き換え寿命は結果的に数十倍以上に延びると言われている。
【０００８】
この手法は、一般的にウエアレベリングと呼ばれており、フラッシュメモリなどの書き換え回数に制限を持つ不揮発メモリを用いた装置では、フラッシュメモリ上で特定のメモリエリアに偏らずに均等に書き込みアクセスが生じるように工夫を施すようにしている。
【０００９】
例えばソリッドステートドライブ（ＳＳＤ）と呼ばれる記憶媒体に、不揮発メモリのみを使用したディスク媒体を使用していないメモリディスク装置では、不揮発メモリ内のデータの配置を変更し、均等に使用するためのウエアレベリングの手法として、フラッシュメモリを１６キロバイト、３２キロバイト或いは６４キロバイトといった消去サイズ毎に区分し、使用頻度のもっとも少ない区分から使用するようにしている。さらに、不揮発メモリのデータ領域の割り当てを示すメモリ管理情報も不揮発メモリ内に配置しておく必要があり、メモリ管理情報自身の更新回数も考慮して均等に使用する必要がある。
【００１０】
しかしながら、メモリ管理情報の位置を変更することは難しい。なぜなら、不揮発メモリ内の情報の配置を示すメモリ管理情報そのものが移動してしまっては、その情報を取得することができなくなってしまうからである。
【００１１】
そのため、メモリ管理情報の持ち方については、さまざまな工夫が行われている。例えば、メモリ管理情報の領域を多重に用意して、ある程度の使用回数に達すると、使用領域を切り替えるといった手法である。これにより、メモリ管理情報の位置を把握できるようにすることができる。
【００１２】
このようなウエアレベリングの手法はハイブリッド型の磁気ディスク装置に組み込むことも可能であるが、磁気ディスク装置は機械的な動作を伴うために、フラッシュメモリの書き換え寿命と磁気ディスク装置の寿命はほぼ同等といわれており、現在のところウエアレベリングについては重要視されていない。
【００１３】
しかし、磁気ディスク装置にあっても、機械的な改良に伴って年々寿命が延びる傾向にあり、フラッシュメモリの書き換え寿命を越える場合には、フラッシュメモリの書換え寿命により制約されることとなり、ハイブリッド型の磁気ディスク装置についても、フラッシュメモリに対するウエアレベリングの手法が重要になる。
【特許文献１】特開平１１−０８６４１８号公報
【特許文献２】特表２００５−５２８６９６号公報
【特許文献３】特開平０９−２９７６５９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、従来のハイブリッド型の磁気ディスク装置に搭載しているフラッシュメモリにウエアレベリングの手法を適用した場合には次の問題がある。
【００１５】
不揮発メモリにキャッシュ領域を配置して使用する場合、一般に、キャッシュデータは、一定のサイズ毎に区分してキャッシュ領域に保管される。例えば、ホストから受け取るライトデータは、３２セクタあるいは１６セクタ毎に区分されたページと名付けられたキャッシュ領域に格納される。
【００１６】
このようなページ区分は、キャッシュデータの取り扱いによるＣＰＵの時間的なオーバヘッド削減を考慮したものである。即ち、キャッシュデータの取り扱いのアルゴリズム上、キャッシュ領域を一定のサイズ毎に区分して取り扱うようにすると、アルゴリズム構成を比較的簡易に出来るため、アルゴリズム処理時間のオーバヘッド削減分がホストに対する応答の性能向上として見込めるからである。
【００１７】
しかしながら、ページ区分したキャッシュデータの取扱いは、フラッシュメモリの使用回数の平均化の観点から考えると、ページ内で使用回数を平均化ができない箇所を生じさせている。
【００１８】
例えば、キャッシュ領域のページサイズが１６セクタであり、ライトコマンドによるライトデータが１セクタサイズ程度であり、このサイズのライトデータがいくつも続けて発行された場合、キャッシュ領域のページ区分内では、先頭の１セクタ分の領域しか使用されないことになる。これは残りの１５セクタ分が使用されないことを意味する。
【００１９】
このようにキャッシュ領域としてフラッシュメモリを使用した場合には、キャッシュのページ区分内で書換えが頻繁に発生する箇所とそうではない箇所の書き換え頻度に大きな差が生じている。
【００２０】
しかし、キャッシュ領域における書き換え頻度のばらつきは、従来から行われているようなウエアレベリングでは解決できない。即ち、従来のウエアレベリングの手法は、フラッシュメモリの消去単位、例えば１６セクタのページサイズ（１セクタ＝１０２４バイト）に一致する１６キロバイトの消去単位ずつ、使用割り当てのアドレスを巡回するようにずらしていく。
【００２１】
このようなウエアレベリングの場合、キャッシュデータのページサイズと、ウエアレベリングのずらしのサイズが同期してしまい、キャッシュ領域として使用する際のページ区分内の使用されていない後方セクタ部分が、いつまでたっても後方セクタのままになるからである。
【００２２】
このように、フラッシュメモリの消去サイズ単位でキャッシュ領域を巡回するようにずらす方法は、 キャッシュのページ区分内部でのよく使われる箇所とあまり使われない箇所の平均化には基本的には役立たないという問題がある。
【００２３】
本発明は、ディスク媒体の特徴を活かしてキャッシュ領域として使用する不揮発メモリの書き換えの制限回数を増大させる記憶装置及び制御回路を提供することを目的とする。
【課題を解決するための手段】
【００２４】
（ライトキャッシュ機能を持つ記憶装置）
本発明はライトキャッシュ機能をもつ記憶装置を提供する。本発明の記憶装置は、
ヘッドによりデータを記録して再生するディスク媒体と、
ライトキャッシュ領域が配置される不揮発メモリと、
上位装置のライト要求によりディスク媒体に記録するライトデータをライトキャッシュ領域に一時的に格納するキャッシュ制御部と、
不揮発メモリにおけるライトキャッシュ領域の配置位置を示すメモリ管理情報をディスク媒体に格納して管理するメモリ配置管理部と、
不揮発メモリに配置したライトキャッシュ領域のライトキャッシュデータを全てディスク媒体に書き込んで空にする毎に、不揮発メモリの消去単位より小さい所定のアドレスサイズ単位ずつライトキャッシュ領域を巡回させるようにメモリ管理情報を変更するメモリ配置変更部と、
を備えたことを特徴とする。
【００２５】
ここで、メモリ配置管理部は、メモリ管理情報にライトキャッシュ領域の領域先頭アドレスを登録して管理し、メモリ配置変更部は、メモリ管理情報に登録している領域先頭アドレスを所定のアドレス単位だけずらす。
【００２６】
メモリ配置管理部は、電源投入時にメモリ管理情報をディスク媒体上から読み出して揮発メモリに配置する。
【００２７】
メモリ配置管理部は、揮発メモリ上でメモリ管理情報を変更した時、変更したメモリ管理情報をディスク媒体に書込み、ディスク媒体への書込み成功を条件に、変更後のメモリ管理情報を使用して管理する。
【００２８】
メモリ配置変更部は、メモリ管理情報をディスク媒体の１セクタサイズ単位ずつ巡回させるように変更する。
【００２９】
メモリ配置変更部は、メモリ管理情報をディスク媒体の１ワード単位ずつ巡回させる。
【００３０】
キャッシュ制御部は、上位装置から所定のコマンドの受信時、及び、ライトキャッシュ領域がライトキャッシュデータで一杯となった時または空き容量が所定値以下となった時、ライトキャッシュ領域の全てのライトキャッシュデータをディスク媒体に書き込んで空とすることを特徴とする記憶装置。
【００３１】
メモリ配置変更部は、不揮発メモリに配置したライトキャッシュ領域のライトキャッシュデータが所定時間を経過しても空にならない時、及び所定のライト要求発行回数に達しても空にならない時、強制的に、ライトキャッシュ領域の全てのライトキャッシュデータをディスク媒体に書き込んで空とする。
（リードキャッシュ機能を持つ記憶装置）
本発明はリードキャッシュ機能を持つ記憶装置を提供する。本発明の記憶装置は、
ヘッドによりデータを記録して再生するディスク媒体と、
リードキャッシュ領域が配置される不揮発メモリと、
上位装置のリード要求によりディスク媒体から再生したリードデータをリードキャッシュ領域に一時的に格納するキャッシュ制御部と、
不揮発メモリにおけるリードキャッシュ領域の配置位置を示すメモリ管理情報をディスク媒体に格納して管理するメモリ配置管理部と、
不揮発メモリに配置したリードキャッシュ領域のリードキャッシュデータの一部または全て無効化して空にする毎に、不揮発メモリの消去単位より小さい所定のアドレスサイズ単位だけリードキャッシュ領域を巡回させるようにメモリ管理情報を変更するメモリ配置変更部と、
を備えたことを特徴とする。
【００３２】
ここで、メモリ配置管理部は、メモリ管理情報にリードキャッシュ領域の領域先頭アドレスを登録して管理し、メモリ配置変更部は、メモリ管理情報に登録している前記領域先頭アドレスを所定のアドレス単位だけずらす。
【００３３】
メモリ配置管理部は、電源投入時にメモリ管理情報をディスク媒体上から読み出して揮発メモリに配置する。
【００３４】
メモリ配置管理部は、揮発メモリ上でメモリ管理情報を変更した時、変更したメモリ管理情報をディスク媒体に書込み、ディスク媒体への書込み成功を条件に、変更後のメモリ管理情報を使用して管理する。
【００３５】
メモリ配置変更部は、メモリ管理情報を前記ディスク媒体の１セクタサイズ単位ずつ巡回させるように変更する。メモリ配置変更部は、メモリ管理情報をディスク媒体の１ワード単位ずつ巡回させるように変更する。
【００３６】
キャッシュ制御部は、上位装置から所定のコマンドの受信時、リードキャッシュ領域の全てのリードキャッシュデータを無効化して空にする。
（記憶装置の制御回路）
本発明は記憶装置の制御回路を提供する。本発明は、ヘッドによりデータを記録して再生するディスク媒体と、ライトキャッシュ領域及びリードキャッシュ領域が配置される不揮発メモリとを備えた記憶装置の制御回路に於いて、
上位装置のライト要求によりディスク媒体に記録するライトデータをライトキャッシュ領域に一時的に格納すると共に、上位装置のリード要求によりディスク媒体から再生したリードデータをリードキャッシュ領域に一時的に格納するキャッシュ制御部と、
不揮発メモリにおけるライトキャッシュ領域及びリードキャッシュ領域の配置位置を示すメモリ管理情報をディスク媒体に格納して管理するメモリ配置管理部と、
不揮発メモリに配置したライトキャッシュ領域のライトキャッシュデータを全てディスク媒体に書き込んで空にする毎に、不揮発メモリの消去単位より小さい所定のアドレスサイズ単位だけライトキャッシュ領域を巡回させるようにメモリ管理情報を変更する第１メモリ配置変更部と、
不揮発メモリに配置したリードキャッシュ領域のリードキャッシュデータを全て無効化して空にする毎に、不揮発メモリの消去単位より小さい所定のアドレスサイズ単位だけリードキャッシュ領域を巡回させるようにメモリ管理情報を変更する第２メモリ配置変更部と、
を備えたことを特徴とする。
【発明の効果】
【００３７】
本発明によれば、不揮発メモリ上のキャッシュ領域の配置位置を示すメモリ管理情報を不揮発メモリではなくディスク媒体に保持し、これによって不揮発メモリ上のキャッシュ領域を空にしたタイミングで、不揮発メモリ上のキャッシュ領域全体を、不揮発メモリの消去単位より小さな例えばセクタサイズ単位或いはワード単位といった最小の単位で領域全体の配置を巡回するようにずらすことができ、キャッシュのページ区分内部によく使われる箇所とあまり使われない箇所があっても効率よく平均化することができ、書換え回数に制限のあるフラッシュメモリなどの不揮発メモリを使用した場合の書換え回数を延ばすことができる。
【００３８】
また、不揮発メモリ上のキャッシュ領域の配置位置を示すメモリ管理情報がディスク媒体上に記録されているため、不揮発メモリ上にメモリ管理情報を配置して管理する際のメモリ管理情報自身の書換え回数を考慮したウエアレベリングの難しさが解消され、簡便で効率的なウエアレベリングの手法を実現することができる。
【発明を実施するための最良の形態】
【００３９】
図１は本発明による記憶装置の一実施形態として磁気ディスクに加えて不揮発メモリを持たせたハイブリッド型の磁気ディスク装置を示したブロック図である。
【００４０】
図１において、ハードディスクドライブ（ＨＤＤ）として知られた磁気ディスク装置１０は、ディスクエンクロージャ１２と制御ボード１４で構成される。ディスクエンクロージャ１２にはスピンドルモータ（ＳＰＭ）１６が設けられ、その回転軸に磁気ディスク２２−１，２２−２を装着し、例えば４２００ｒｐｍの一定速度で回転している。
【００４１】
またディスクエンクロージャ１２にはボイスコイルモータ（ＶＣＭ）１８が設けられ、ボイスコイルモータ１８は先端にヘッド２４−１〜２４−４を搭載したロータリアクチュエータ２０を駆動して、磁気ディスク２２−１〜２２−２の記録面に対するヘッド位置決めを行う。
【００４２】
ヘッド２４−１〜２４−４は記録素子と読出素子が一体化された複合型のヘッドである。記録素子には面内磁気記録型の記録素子または垂直磁気記録型の記録素子が使用される。垂直磁気記録型の記録素子の場合、磁気ディスク２２−１，２２−２には記録層と軟磁性体裏磁層を備えた垂直記憶媒体を使用する。読出素子にはＧＭＲ素子やＴＭＲ素子を使用する。
【００４３】
ヘッド２４−１〜２４−４はヘッドＩＣ２６に対し信号線接続されており、ヘッドＩＣ２６は上位装置となるホスト１１からのライトコマンドまたはリードコマンドに基づくヘッドセレクト信号で１つのヘッドを選択し、書込みまたは読出しを行う。またヘッドＩＣ２６には、ライト系についてはライトドライバが設けられ、リード系についてはプリアンプが設けられている。
【００４４】
制御ボード１４にはＭＰＵ２８が設けられ、ＭＰＵ２８のバス３０に対し、ＲＡＭを用いた制御プログラム及び制御データを含むファームウェアをロードする揮発メモリ３２、フラッシュＲＯＭとＲＡＭなどを用いたファームウェア及び制御に必要なパラメータを格納するプログラムメモリ３４が設けられる。
【００４５】
またＭＰＵ２８のバス３０には、モータ駆動制御部３６、ホストインタフェース制御部３８、バッファメモリ４０、フラッシュメモリを用いた不揮発メモリ４２、バッファメモリ４０及び不揮発メモリ４２を制御するバッファ制御部４４、ハードディスクコントローラとして機能するフォーマット制御部４６、ライト変調部、リード変調部として機能するリードチャネル４８が設けられている。
【００４６】
ここで、制御ボード１４に設けたＭＰＵ２８、揮発メモリ３２、プログラムメモリ３４、ホストインタフェース制御部３８、バッファ制御部４４、フォーマット制御部４６及びリードチャネル４８は、１つのＬＳＩに実装された記憶制御回路として実現される。
【００４７】
なお記憶制御回路は、これらの回路部を１つのＬＳＩにした実施形態以外に、フォーマット制御部４６やリードチャネル４８などを別のＬＳＩとしてもよく、このため制御ユニットとしては、ＭＰＵ２８などのコントローラを含む制御回路部で構成するようにしてもよい。
【００４８】
磁気ディスク装置１０は、ホスト１１からのコマンドに基づき書込処理及び読出処理を行う。ここで磁気ディスク装置１０におけるキャッシュ制御を伴わない通常の動作を説明すると次のようになる。
【００４９】
ホスト１１からのライトコマンドとライトデータをホストインタフェース制御部３８で受信すると、ライトコマンドをＭＰＵ２８で解読し、受信したライトデータを必要に応じてバッファメモリ４０に格納した後、フォーマット制御部４６で所定のデータ形式に変換すると共に、ＥＣＣ符号化処理によりＥＣＣ符号を付加し、リードチャネル４８におけるライト変調系で、スクランブルＲＬＬ符号変換、更に書込補償を行った後、ライトアンプからヘッドＩＣ２６を介して、選択した例えばヘッド２４−１の記録素子から磁気ディスク２２−１の記録面に書き込む。
【００５０】
このときＭＰＵ２８からモータ駆動制御部３６に対しヘッド位置決め信号が与えられており、ボイスコイルモータ（ＶＣＭ）１８によりヘッドをコマンドで指示された目標ドライブにシークした後、オントラックして、トラック通常制御を行っている。
【００５１】
一方、ホスト１１からのリードコマンドをホストインタフェース制御部３８で受信すると、リードコマンドをＭＰＵ２８で解読し、ヘッドＩＣ２６のヘッドセレクトで選択したヘッドの読出素子から読み出された読出信号をプリアンプで増幅した後、リードチャネル４８のリード復調系に入力し、自動利得増幅、ローパスフィルタによるノイズカット、ＡＤ変換、ＦＩＲフィルタによる自動等化を行った後、パーシャルレスポンス最尤検出（ＰＲＭＬ）などによりリードデータを復調し、ＲＬＬ符号逆変換及びデスクランブルを行ってフォーマット制御部４６に出力し、フォーマット制御部４６でＥＣＣ復号処理を行ってエラー訂正をした後、バッファメモリ４０にバッファリングし、ホストインタフェース制御部３８からリードデータをホスト１１に転送する。
ＭＰＵ２８にはファームウェアの実行により実現される機能としてキャッシュ制御部５０、メモリ配置管理部５２及びメモリ配置変更部５４が設けられている。また揮発メモリ３２にはメモリ管理情報５６が配置され、フラッシュメモリを使用した不揮発メモリ４２にはライトキャッシュ領域５８とリードキャッシュ領域６０が割当配置されている。
【００５２】
キャッシュ制御部５０はホスト１１からのライトコマンドを受けたときに磁気ディスク側に記録するライトデータを不揮発メモリ４２のライトキャッシュ領域５８に格納する。
【００５３】
即ち、キャッシュ制御部５０はホスト１１からのライトコマンドを受信するとライトデータをホストインタフェース制御部３８及びバッファ制御部４４を介してバッファメモリ４０に格納したあと、ライトキャッシュ領域５８に該当するキャッシュデータが存在するか否かチェックし、存在してキャッシュヒットとなった場合には、存在したライトキャッシュデータにライトデータを書き込み、存在せずにミスヒットとなった場合にはライトキャッシュ領域５８に新たなページと呼ばれる領域を確保してライトデータを格納する。
【００５４】
またキャッシュ制御部５０はホスト１１からリードコマンドを受けた際には、磁気ディスク側から該当するリードデータを読み出してリードキャッシュ領域６０に一次的に格納する。
【００５５】
即ち、キャッシュ制御部５０は、ホスト１１からのリードコマンドを受けると、まず不揮発メモリ４２のリードキャッシュ領域６０に該当するリードデータが存在するか否か調べ、リードキャッシュ領域６０に該当するリードデータが存在してキャッシュヒットとなれば、リードキャッシュ領域６０からリードデータを読み出して、バッファメモリ４０に格納した後、ホスト１１に応答する。
【００５６】
リードキャッシュ領域６０に該当するリードデータが存在しないミスヒットとなった場合には、磁気ディスク側から該当するリードデータを読出し、リードチャネル４８、フォーマット制御部４６を介して復調した後、バッファ制御部４４からバッファメモリ４０に格納し、格納後にホストインタフェース制御部３８からホスト１１にリードデータを応答する。
【００５７】
リードデータのホスト１１に対する応答が済むと、リードキャッシュ領域６０に新たなページと呼ばれる領域を確保し、バッファメモリ４０から不揮発メモリ４２のリードキャッシュ領域６０にリードデータを格納する。
【００５８】
ＭＰＵ２８に設けたメモリ配置管理部５２は不揮発メモリ４２上のライトキャッシュ領域５８及びリードキャッシュ領域６０の配置位置を示すメモリ管理情報５６を管理する。
【００５９】
揮発メモリ３２に読出し配置されているメモリ管理情報５６は、例えば磁気ディスク２２−１における一方の記録面のシステム領域に保存されている。このため磁気ディスク装置１０の電源を投入した初期化処理の際に、磁気ディスク２２−１のシステム領域から例えばヘッド２４−１によりメモリ管理情報が読み出され、揮発メモリ３２にメモリ管理情報５６として配置され、このメモリ管理情報５６をメモリ配置管理部５２が参照し、不揮発メモリ４２にライトキャッシュ領域５８とリードキャッシュ領域６０を配置する。
【００６０】
図２は図１の揮発メモリ３２に展開されているメモリ管理情報５６を示した説明図である。図２において、メモリ管理情報５６にはライトキャッシュ領域先頭アドレスとリードキャッシュ領域先頭アドレスが格納されている。
【００６１】
このようにライトキャッシュ領域５８とリードキャッシュ領域６０の先頭アドレスが決まると、ホスト１１からのライトコマンドまたはリードコマンドに伴うライトデータ及びリードデータの記憶の際には、予め定めた例えば１６セクタのページと呼ばれるキャッシュデータ格納領域を確保しながら、ページ区分内にライトデータ又はリードデータをキャッシュデータとして格納する。
【００６２】
図１のＭＰＵ２８に設けたメモリ配置変更部５４は、不揮発メモリ４２に配置しているライトキャッシュ領域５８のライトキャッシュデータを全て磁気ディスク側に書き込んで空にするタイミング毎に、フラッシュメモリを用いた不揮発メモリ４２のセクタ単位より小さい所定のアドレスサイズ単位、具体的には本実施形態にあっては磁気ディスクの１セクタサイズ単位または磁気ディスクの１ワード単位（１ワードは例えば８バイト）ずつライトキャッシュ領域５８を巡回させるようにメモリ管理情報５６を変更する。即ちメモリ管理情報に登録している図２に示すライトキャッシュ領域先頭アドレスを変更する。
【００６３】
メモリ配置管理部５２の処理はリードキャッシュ領域６０についても基本的に同様であり、不揮発メモリ４２に配置したリードキャッシュ領域６０のリードキャッシュデータを全て無効化して空にするタイミング毎に、フラッシュメモリを用いた不揮発メモリ４２の消去単位より小さい所定のアドレスサイズ単位、例えば１セクタサイズ単位または１ワード単位ずつリードキャッシュ領域６０を巡回させるようにメモリ管理情報５６を変更する。即ち、メモリ管理情報に登録している図２に示すリードキャッシュ領域先頭アドレスを変更する。
【００６４】
ここでＭＰＵ２８に設けたメモリ配置変更部５４において、ライトキャッシュ領域５８を巡回させるようにメモリ管理情報を変更するタイミングは、ライトキャッシュ領域５８のライトキャッシュデータを全て磁気ディスク側に書き込んだタイミングとなるが、このタイミングとしては次のものがある。
（１）ホスト１１からフラッシュキャッシュコマンドを受信してライトキャッシュ領域５８のライトキャッシュデータを磁気ディスクに書き込んだタイミング。
（２）ライトキャッシュ領域５８が一杯となって全てのライトキャッシュデータを磁気ディスク側に書き込んだタイミング。
（３）予め定めた一定時間経過時に前記（１）あるいは（２）によりライトキャッシュ領域５８を一度も空にすることがなかった時に、強制的にライトキャッシュ領域の全てのライトキャッシュデータを磁気ディスク側に書き込んで空とするタイミング。
（４）所定のライトコマンド発行回数に達しても一度もライトキャッシュ領域５８を空にすることがなかった時に、強制的にライトキャッシュ領域５８の全てのライトキャッシュデータを磁気ディスク側に書き込んで空としたタイミング。
【００６５】
このような（１）〜（４）に示すタイミングが発生する毎に、メモリ配置変更部５４はライトキャッシュ領域５８のメモリ管理情報５６に登録している領域先頭アドレスを１セクタサイズ単位または１ワード単位にずらすことによって、ライトキャッシュ領域５８を巡回させるように変更して再配置する処理を繰り返す。
【００６６】
メモリ配置変更部５４によるリードキャッシュ領域６０を巡回させるようにメモリ管理情報５６を変更するタイミングは、本実施形態にあっては、ホスト１１からリードキャッシュ入れ替えコマンドを受けたタイミングとする。
【００６７】
しかし、リードキャッシュ入れ替えコマンドを受けたタイミングで、リードキャッシュ領域６０の場合には、リードキャッシュ領域６０を空にするためにリードキャッシュ領域６０に格納しているリードデータを磁気ディスク側に書き込む必要ななく、リードキャッシュ領域６０に格納している全リードデータを無効化するだけでよい。リードデータの無効化は図示しないキャッシュ管理情報における有効データを示す有効フラグをリセットして無効化すればよい。
【００６８】
図３は本実施形態におけるライトキャッシュ領域のページ区分と不揮発メモリ消去単位のウエアレベリングを示した説明図である。
【００６９】
図３（Ａ）においてライトキャッシュ領域５８はページＰ１〜Ｐｎという区分に分割されており、ページＰ１〜Ｐｎのページサイズ６６は例えば磁気ディスクの１６セクタサイズである。ここで磁気ディスクの１セクタを１０２４バイトとすると、ページサイズ６６の１６セクタは１６ＫＢに相当する。
【００７０】
一方、ライトキャッシュ領域５８が配置された本実施形態で不揮発メモリ４２として使用するフラッシュメモリは、例えばページサイズ６６に一致した１６ＫＢを消去単位として動作する。即ちライトキャッシュ領域５８はページＰ１〜Ｐｎ単位に書き換えることができる。
【００７１】
このようなフラッシュメモリの消去単位に一致するページサイズ６６を持つライトキャッシュ領域５８の構成について、従来は消去単位に一致するページサイズ６６単位にライトキャッシュデータを巡回させるようにずらすウエアレベリングを行っている。
【００７２】
図３（Ｂ）は図３（Ａ）のライトキャッシュ領域５８につきキャッシュデータを消去単位である１ページサイズだけずらした状態の説明図である。図３（Ｂ）において、ずらす前の図３（Ａ）のページＰ１のライトキャッシュデータが次のページＰ２に移動し、以下残りのページＰ３〜Ｐｎについてもひとつ後ろのページそのままライトキャッシュデータが移動している。
【００７３】
このためページＰ１〜Ｐｎの区分内をみると、各ページの先頭側のセクタについてキャッシュデータが書き込まれ、ページ区分の後半の空き領域はウエアレベリングを行ってもそのまま空き領域となっている。その結果、ページ区分内において書き込み回数の多い部分と書き込み回数の少ない部分がそのまま残存し、ページ区分内で書き込み回数が均一化するためのウエアレベリングの処理効果はほとんど期待できない。
【００７４】
このような問題に対し本実施形態にあっては、図４に示すような不揮発メモリの消去単位より小さい単位ずつライトキャッシュ領域を巡回させることで、ページ区分内における書き込み回数の多い部分と少ない部分を均一化する効率的なウエアレベリングを実現することができる。
【００７５】
図４（Ａ）はウエアレベリング前のライトキャッシュ領域５８である。これは図３（Ａ）と同じである。ページＰ１〜Ｐｎのサイズは不揮発メモリ４２で使用するフラッシュメモリの消去単位と同じ１６ＫＢとなっている。
【００７６】
ここで、例えば図４（Ａ）のライトキャッシュ領域５８におけるメモリ管理情報５６に登録されているライトキャッシュ領域先頭アドレスがページＰ１の先頭を示す領域先頭アドレス７２−１であったとする。
【００７７】
この状態で本実施形態の磁気ディスクの１セクタサイズ単位だけ領域先頭アドレス７２−１を後方にずらすメモリ管理情報５６の変更を行うと、変更後のメモリ管理情報５６に基づき、図４（Ｂ）のように、最後のページＰｎの後ろ側に領域先頭アドレス７２−２が設定され、領域先頭アドレス７２−２を起点に図４（Ａ）と同じライトデータがもし格納されたとすると、図示のように１セクタサイズ単位ずつずれてページ区分内に格納する。
【００７８】
更に図４（Ｃ）のように１セクタサイズずれて領域先頭アドレス７２−３となると各ページ内で更に１セクタサイズ分ライトキャッシュデータが後方側にずれることになる。
【００７９】
このようなページ区分に分割されたライトキャッシュ領域５８につき、図３（Ｂ）に示したようなフラッシュメモリのページサイズに位置する消去単位でずらす場合に比べ、消去単位より小さなセクタサイズ単位もしくは更に小さな１ワード単位ずつキャッシュ領域先頭アドレスを巡回するようにずらすことで、ページ内をライトキャッシュデータが１セクタサイズ単位ずつまたは１ワード単位ずつ移動しながら巡回的に格納されることになり、ページ区分内における書き込み回数の多い部分と書き込み回数の少ない部分は効率的に均一化され、ウエアレベリングによる十分な効果が得られ、その結果、ライトキャッシュ領域５８を配置している不揮発メモリ４２の書替え処理を大幅にのばすことができる。
【００８０】
このような図４に示す１セクタサイズ単位もしくは１ワード単位に巡回的に領域先頭アドレスをずらすようにメモリ管理情報を変更する処理は、図１のリードキャッシュ領域６０についても同様である。
【００８１】
図５は本実施形態の不揮発メモリ４２における消去単位のデータの書き込み処理を示して説明図である。
【００８２】
図５（Ａ）において、不揮発メモリ４２は消去単位となる領域７０−１〜７０−ｎに分割されている。消去単位となる７０−１〜７０−ｎは、図３に示したようにページサイズ６６と同じ１６ＫＢである。
【００８３】
ここで領域７０−２に含まれるデータを書き変える場合には、領域７０−２をバッファメモリ４０に読み出して領域７０−２１として配置する。この状態で領域７０−２１の中に例えばライトコマンドに基づいて受信したライトデータ７４を書き込む。
【００８４】
バッファメモリ４０におけるライトデータ７４の書込みが済むと、書き込みの済んだ領域７０−２１のデータを不揮発メモリ４２の領域７０−２に書き込み、これによってライトデータ７４がライトデータ７４−１として不揮発メモリ４２に書き込まれることになる。
【００８５】
図６は本実施形態によるライトキャッシュ領域に対するウエアレベリング処理の手順を詳細に示した説明図である。図６（Ａ）は図３または図４に示したライトキャッシュ領域５８を直線的に並べたひとつの領域として示しており、上側に示す数値０〜ｎ−１がページ番号である。
【００８６】
このライトキャッシュ領域５８−１にはライトキャッシュデータ６２−１〜６２−４が格納されており、白地の部分が空き領域６４−１〜６４−３となっている。
【００８７】
この状態でメモリ管理情報５６−１の同期内容はライトキャッシュ領域５８−１の先頭位置を示す領域先頭アドレス６６−１となっている。
【００８８】
図６（Ａ）のようなライトキャッシュデータのライトキャッシュ領域５８−１に対する格納領域で、全てのキャッシュデータ６２−１〜６２−４は例えばホストからのフラッシュコマンドを受領した際に、全て磁気ディスク２２に書き込まれ、図６（Ｂ）のライトキャッシュ領域５８−２に示すように空になる。
【００８９】
このようにライトキャッシュ領域５８−２が空となったタイミングで、図１のＭＰＵ２８に設けたメモリ配置変更部５４がメモリ管理情報５６−１の領域先頭アドレス６６−１を例えば１セクタサイズ単位だけ後方にずらす管理情報更新処理６２を実行する。
【００９０】
メモリ管理情報５６−１の更新が行われたならば、この情報はメモリ構成を示す重要な情報であるため、磁気ディスク２２にメモリ管理情報５６−０２として書き込みを行い、磁気ディスク２２に対する書込みが成功した後に、図６（Ｃ）に示すように不揮発メモリに展開しているメモリ管理情報５６−１を管理情報更新処理６４によって変更した新たなメモリ管理情報５６−２に書き換える。
【００９１】
このメモリ管理情報５６−２への書替により、図６（Ｃ）のライトキャッシュ領域５８−３に示すように、それまで０ページの先頭にセットされていた領域先頭アドレス６２−１が、ライトキャッシュ領域５８−４に示すように、１セクタサイズ単位だけ後方にずれた領域先頭アドレス６２−２となり、ここを起点にページ番号０〜ｎ−１で示すページ区分が行われる。
【００９２】
即ち、ライトキャッシュ領域５８−３の状態からライトキャッシュデータはライトキャッシュ領域５８−４に示すように１セクタサイズ単位後方にずれた配置となる。
【００９３】
続いて図６（Ｄ）に示すように、変更後のメモリ管理情報５６−２に基づくライトキャッシュ領域５８−５に配置について、図６（Ａ）に示すと同じライトキャッシュデータ６２−１〜６２−４の格納が仮に行われたとすると、図６（Ａ）の先頭ページとなる０ページ側のライトキャッシュデータ６２−１は、図６（Ｄ）の変更後にあっては、後方側のライトキャッシュデータ６２−３１と前方側のライトキャッシュデータ６２−３２に分かれ、またその間のライトキャッシュデータについては後方に１セクタサイズ単位ずれた位置にライトキャッシュデータ６２−１〜６２−４として格納されている。
【００９４】
このようにして本発明はライトキャッシュ領域のライトキャッシュデータが全て磁気ディスク装置に格納されて空となるタイミング毎に、例えば１セクタサイズ後方に領域先頭アドレスを巡回的にずらすメモリ管理情報の変更が行われ、ライトキャッシュ領域に格納されているライトキャッシュデータはもしライトキャッシュデータに変更がなければ、順次キャッシュ領域をセクタサイズずつずれながら巡回することになり、領域内にランダムに空き領域を生じていても１セクタサイズ単位の巡回を繰り返すことで、書き込み回数の多い部分と少ない部分が均一化され、不揮発メモリ４２として使用しているフラッシュメモリの寿命を延ばすことができる。
【００９５】
図７及び図８はウエアレベリングを含む本実施形態のハードウェア型磁気装置の制御処理を示したフローチャートである。図７において、ホスト１１の起動に伴って磁気ディスク装置１０に電源が投入されるとステップＳ１で初期化起動処理が行われる。
【００９６】
初期化自動処理は不揮発メモリ３４のフラッシュＲＯＭなどに格納されているブートプログラムの実行によりＯＳとして機能するファームウエアを例えば磁気ディスク２２−１、２２−２側の記録面のシステム領域から揮発メモリ３２に読出し配置し、ＭＰＵ２８により実行する。
【００９７】
続いてステップＳ２で磁気ディスクの例えばシステム領域に格納しているメモリ管理情報を読出し、揮発メモリ３２に図１に示すようにメモリ管理情報５６として配置する。
【００９８】
続いてステップＳ３でホスト１１からのコマンド受信を判別すると、ステップＳ４でライトコマンドか否か判別する。ライトコマンドであった場合にはホスト１１側から転送されたライトデータはホストインタフェース制御部３８、バッファ制御部４４を介して、一端バッファメモリ４０に保持する。
【００９９】
この状態でキャッシュ制御部５０は不揮発メモリ４２のライトキャッシュ領域５８に該当するデータが存在するか否かのライトキャッシュヒットの有無をチェックする。ライトキャッシュヒットとなった場合には、ステップＳ６でライトキャッシュ領域５８のデータを更新し、磁気ディスク側にライトキャッシュデータを書き込むことなくホスト１１に対しライトコマンドの正常終了を応答する。
【０１００】
ステップＳ５でライトキャッシュがミスヒットとなった場合には、ステップＳ７でライトキャッシュ領域に新たにページを確保し、このページ内にライトデータを格納し、この場合にも磁気ディスク側にライトデータを書き込むことなくホスト１１に対しライトコマンドの正常終了を応答する。
【０１０１】
一方、ステップＳ８でリードコマンドであることが判別されると、ステップＳ９で不揮発メモリ４２のリードキャッシュ領域６０を調べ、該当するリードデータが存在するか否かのリードキャッシュヒットの有無を判別する。
【０１０２】
リードキャッシュヒットとなった場合にはステップＳ１０でリードキャッシュ領域６０から該当するデータをバッファメモリ４０に読出した後にホスト１１にリードデータを転送する。
【０１０３】
ステップＳ９でリードキャッシュがミスヒットとなった場合には、ステップＳ１１で磁気ディスク側からヘッドＩＣ２６、リードチャネル４８、フォーマット制御部４６を介してデータを読出し、バッファ制御部４４でバッファメモリ４０に格納した後、ホストインタフェース制御部３８を介してリードデータをホスト１１に転送する。続いてステップＳ１２でバッファメモリ４０に格納しているリードデータをリードキャッシュ領域６０に格納する。
【０１０４】
次に図８のステップＳ１３でホスト１１からのフラッシュキャッシュコマンドの受信の有無をチェックしており、フラッシュキャッシュコマンドを判別するとステップＳ１４に進み、不揮発メモリ４２上のライトキャッシュ領域５８の全てのキャッシュデータを磁気ディスク側に書き込んで空にする。
【０１０５】
続いてステップＳ１５でホスト１１からのリードキャッシュ入れ替えコマンドの受信の有無をチェックしており、リードキャッシュ入れ替えコマンドの受信を判別するとステップＳ１６に進み、不揮発メモリ４２上のリードキャッシュ領域６０の全てのリードキャッシュデータを無効化して空にする。
【０１０６】
次にステップＳ１７に進み、ライトキャッシュ領域５８が空か否か判別し、空であった場合にはステップＳ１８に進み、ライトキャッシュのウエアレベリングを実行する。
【０１０７】
続いてステップＳ１９でリードキャッシュ領域６０が空であることが判別されるとステップＳ２０に進み、リードキャッシュ領域６０のウエアレベリングを実行する。
【０１０８】
続いてステップＳ２１で停止指示の有無をチェックしており、停止指示があるまでステップＳ１３からの指示を繰り返し、停止指示を判別するとステップＳ２２で揮発メモリ３２上のメモリ管理情報５６を磁気ディスク側に格納した後に処理を終了する。
【０１０９】
一方、図７のステップＳ３でホスト１１からのコマンド受信のないアイドル状態にあってはステップＳ２３においてアイドルでのウエアレベリングを実行する。
【０１１０】
図９は図８のステップＳ１８に示したライトキャッシュウエアレベリングの詳細を示したフローチャートである。図９において、ライトキャッシュウエアレベリングは、ステップＳ１で揮発メモリ３２上のメモリ管理情報５６における図２に示したライトキャッシュ先頭アドレスを例えば磁気ディスクの１セクタサイズ分だけ減少させることにより、磁気ディスク装置上におけるライトキャッシュ領域を１セクタサイズだけずらした新配置に更新する。
【０１１１】
続いてステップＳ２で更新済みメモリ管理情報５６を磁気ディスク装置側のシステム領域に書き込む。即ちメモリ管理情報は不揮発メモリ４２におけるメモリ構成を示す重要な情報であるため、揮発メモリ３２上で更新したメモリ管理情報５６を一端磁気ディスク側に書き込んで保存し、障害などによる磁気ディスク装置の電源遮断などにより揮発メモリ３２上の更新済みのメモリ管理情報５６が失われないようにしている。
【０１１２】
続いてステップＳ３で更新済みメモリ管理情報の磁気ディスク側の書き込みの成功を判別するとステップＳ４に進み、新配置となる更新済みメモリ管理情報を有効化し、更新済みメモリ管理情報を使用して現在空となっているライトキャッシュ領域５８に対するライトコマンドに伴うライトデータの書き込みを開始することになる。
【０１１３】
一方、ステップＳ３で磁気ディスク側の書込みが不成功であった場合には、ステップＳ５でメモリ管理情報の更新を無効化し、更新前メモリ管理情報によるライトキャッシュ領域５８の配置を維持する。
【０１１４】
図１０は図８のステップＳ２０に示したリードキャッシュウエアレベリングの詳細を示したフローチャートである。図１０において、リードキャッシュウエアレベリングはステップＳ１でリードキャッシュ領域６０が空となっていることが条件に揮発メモリ３２上のメモリ管理情報５６における図２に示したリードキャッシュ先頭アドレスを例えば磁気ディスクの１セクタサイズだけ減少させることによりずらし、これにより不揮発メモリ４２上のリードキャッシュ領域６０を新配置に更新する。
【０１１５】
続いてステップＳ２で更新済みメモリ管理情報５６を揮発メモリ３２から磁気ディスクのシステム領域に書き込んで保存し、ステップＳ３で磁気ディスク側の書き込み成功が判別されるとステップＳ４で新配置となった更新済みメモリ管理情報を有効化する。
【０１１６】
これにより不揮発メモリ４２上のリードキャッシュ領域６０はウエアレベリング前に対し１セクタサイズだけアドレスを減少する方向にずれた位置を領域先頭位置として配置されてホストからのリードコマンドに伴うリードデータを格納する。
【０１１７】
またステップＳ３で磁気ディスクに対する書込みが不成功であった場合にはステップＳ５でメモリ管理情報の更新を無効化し、ウエアレベリング前のメモリ管理情報を維持する。
【０１１８】
図１１は図７のステップＳ２３に示したアイドルウエアレベリング処理の詳細を示したフローチャートである。図１１において、アイドルウエアレベリング処理は、ステップＳ１で不揮発メモリ４２上のライトキャッシュ領域５６が一杯か否か判別し、一杯であればステップＳ４に進み、全ライトキャッシュデータを磁気ディスク側に書き込んでライトキャッシュ領域５８をウエアレベリングのために空にする。
【０１１９】
ステップＳ１でライトキャッシュが一杯でなかった場合にはステップＳ２に進み、前回のライトキャッシュデータが空となってウエアレベリングした時から一定時間経過したか否かチェックする。一定時間を経過した場合にはステップＳ３に進み、ライトキャッシュ領域が一回でも空になったことがあるか否かチェックし、空になったことがなければステップＳ５でライトキャッシュ領域５８の全ライトキャッシュデータを磁気ディスク装置に強制的に書き込んで空にする。
【０１２０】
ステップＳ１で一定時間を経過していない場合にはステップＳ４に進み、前回のライトキャッシュ領域を空にしてウエアレベリングした時から現在までのライトコマンド発行数を取得し、ライトコマンド発行数が閾値に達成したか否か判別する。
【０１２１】
ライトコマンド発行数が閾値に達成していた場合にはステップＳ３に進み、ライトキャッシュ領域が一回でも空になったことがあるか否か判別し、空になったことがなければステップＳ５でライトキャッシュ領域５８の全ライトキャッシュデータを磁気ディスク側に強制的に書き込んで空にする。
【０１２２】
続いてステップＳ６でライトキャッシュ領域５８が空であるか否かチェックし、空であった場合にはステップＳ７でライトキャッシュのウエアレベリングを実行する。このステップＳ７のライトキャッシュのウエアレベリングは図９のフローチャートに示した内容と同じになる。
【０１２３】
またステップＳ８でリードキャッシュ領域６０が空であることが判別されると図９に進み、図１０に示したと同じリードキャッシュ領域のウエアレベリングを実行する。
【０１２４】
このように本実施形態の磁気ディスクにおける不揮発メモリ４２上に配置したライトキャッシュ領域５８とリードキャッシュ領域６０の場所による書き込み回数を平均化するウエアレベリングは、図７のステップＳ１３、Ｓ１５に示したホスト１１からのフラッシュキャッシュコマンドやリードキャッシュ入れ替えコマンドに基づくライトキャッシュ領域５８を空としたタイミングで行う以外に、図１１のアイドルウエアレベリングに示したように、ホスト１１からのコマンドに依存せず、磁気ディスク装置１０側における装置自身の処理として例えばライトキャッシュについてはライトキャッシュ領域５８が一杯になったとき、前回のウエアレベリングから一定時間を経過した後に一回もライトキャッシュが空にならなかったとき、あるいはライトコマンド発行数が閾値に達した時に同じくライトキャッシュが一回も空にならなかったとき、強制的にライトキャッシュ領域５８の全ライトキャッシュデータを磁気ディスク側に書きこんで空として、このタイミングでライトキャッシュ領域のウエアレベリングを行えるようにしている。
【０１２５】
また本発明は図１の磁気ディスク１０に設けたＭＰＵ２８により実行するプログラムを提供するものであり、このプログラムは図７〜図１１のフローチャートに示した内容を持つ。
【０１２６】
尚、上記の実施形態にあってはホストからフラッシュキャッシュコマンドを受けた際に、ライトキャッシュ領域５８の全てのライトキャッシュデータを磁気ディスク側に書き込んで空にするようにしているが、ライトキャッシュ領域５８を複数領域に分割し、フラッシュキャッシュコマンドを受ける事に順次分割したライトキャッシュ領域のライトキャッシュデータを磁気ディスク装置に書き込んで空とし、分割したライトキャッシュ領域ごとにウエアレベリングを実行するようにしてもよい。
【０１２７】
この点はリードキャッシュ領域６０についても同様であり、リードキャッシュ領域６０を複数領域に分割してホストからのリードキャッシュ入れ替えコマンドを受けた際に順次分割したリードキャッシュ領域を無効化して空にすることで、リードキャッシュのウエアレベリングを実行するようにしてもよい。
【０１２８】
このようにライトキャッシュ領域５８及びリードキャッシュ領域６０を複数領域に分割してキャッシュ領域を空にした状態でウエアレベリングを行うことで、ウエアレベリングの際にも対象外となる領域のキャッシュデータを残すことができ、全てのキャッシュデータを除いて空にした場合と比べ、キャッシュデータが一部残ることでホスト１１に対するキャッシュ利用による入出力性能の低下を最小限に抑えることができる。
【０１２９】
また上記の実施形態にあっては図３（Ａ）のように、ページサイズ６６とフラッシュメモリの消去単位を同じとした場合を例にとっているが、フラッシュメモリの消去単位としてはそれ以外にページサイズの整数倍となる３２ＫＢ、６４ＫＢなど適宜の消去単位をもつフラッシュメモリが使用できる。
【０１３０】
また、不揮発メモリの書き換えにおいて、消去処理が不要となった場合であっても、書き換え回数に制限がある限り，本方式は有効である。なぜなら、キャッシュの管理をページ単位でおこなうことによる使用頻度の偏りを解消する必要があるからである。
【０１３１】
また本発明はその目的と利点を損なうことのない適宜の変形を含み、また上記の実施形態に示した数値による限定は受けない。
【０１３２】
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
（付記）
（付記１）（装置：ライトキャッシュ）
ヘッドによりデータを記録して再生するディスク媒体と、
ライトキャッシュ領域が配置される不揮発メモリと、
上位装置のライト要求により前記ディスク媒体に記録するライトデータを前記ライトキャッシュ領域に一時的に格納するキャッシュ制御部と、
前記不揮発メモリにおける前記ライトキャッシュ領域の配置位置を示すメモリ管理情報を前記ディスク媒体に格納して管理するメモリ配置管理部と、
前記不揮発メモリに配置したライトキャッシュ領域のライトキャッシュデータを全て前記ディスク媒体に書き込んで空にする毎に、前記不揮発メモリの消去単位より小さい所定のアドレスサイズ単位ずつ前記ライトキャッシュ領域を巡回させるように前記メモリ管理情報を変更するメモリ配置変更部と、
を備えたことを特徴とする記憶装置。（１）
（付記２）（追加：先頭アドレス）
付記１記載の記憶装置に於いて、
前記メモリ配置管理部は前記メモリ管理情報に前記ライトキャッシュ領域の領域先頭アドレスを登録して管理し、
前記メモリ配置変更部は、前記メモリ管理情報に登録している前記領域先頭アドレスを前記所定のアドレス単位だけずらすことを特徴とする記憶装置。（２）
（付記３）（オリジナル２：電源投入時の読出配置）
付記１記載の記憶装置に於いて、前記メモリ配置管理部は、電源投入時に前記メモリ管理情報を前記ディスク媒体上から読み出して揮発メモリに配置することを特徴とする記憶装置。
【０１３３】
（付記４）（追加：メモリ管理情報の媒体書込）
付記３記載の記憶装置に於いて、前記メモリ配置管理部は、前記揮発メモリ上で前記メモリ管理情報を変更した時、変更したメモリ管理情報を前記ディスク媒体に書込み、前記ディスク媒体への書込み成功を条件に、変更後のメモリ管理情報を使用して管理することを特徴とする記憶装置。
【０１３４】
（付記５）（オリジナル３：１セクタ巡回）
付記１記載の記憶装置に於いて、前記メモリ配置変更部は、前記メモリ管理情報を前記ディスク媒体の１セクタサイズ単位ずつ巡回させるように変更することを特徴とする記憶装置。
【０１３５】
（付記６）（オリジナル４：１ワード巡回）
付記１記載の記憶装置に於いて、前記メモリ配置変更部は、前記メモリ管理情報を前記ディスク媒体の１ワード単位ずつ巡回させるように変更することを特徴とする記憶装置。
【０１３６】
（付記７）（追加：コマンド等による書込み）
付記１記載の記憶装置に於いて、前記キャッシュ制御部は、前記上位装置から所定のコマンドを受信した時、及び、前記ライトキャッシュ領域がライトキャッシュデータで一杯となった時または空き容量が所定値以下となった時に、前記ライトキャッシュ領域の全てのライトキャッシュデータを前記ディスク媒体に書き込んで空とすることを特徴とする記憶装置。
【０１３７】
（付記８）（オリジナル５、６：強制書込み）
付記１記載の記憶装置に於いて、前記メモリ配置変更部は、前記不揮発メモリに配置したライトキャッシュ領域のライトキャッシュデータが所定時間を経過しても空にならない時、及び所定のライト要求発行回数に達しても空にならない時、強制的に、前記ライトキャッシュ領域の全てのライトキャッシュデータを前記ディスク媒体に書き込んで空にすることを特徴とする記憶装置。
【０１３８】
（付記９）（装置：リードキャッシュ）
ヘッドによりデータを記録して再生するディスク媒体と、
リードキャッシュ領域が配置される不揮発メモリと、
上位装置のリード要求により前記ディスク媒体から再生したリードデータを前記リードキャッシュ領域に一時的に格納するキャッシュ制御部と、
前記不揮発メモリにおける前記リードキャッシュ領域の配置位置を示すメモリ管理情報を前記ディスク媒体に格納して管理するメモリ配置管理部と、
前記不揮発メモリに配置したリードキャッシュ領域のリードキャッシュデータの一部または全て無効化して空にする毎に、前記不揮発メモリの消去単位より小さい所定のアドレスサイズ単位だけ前記リードキャッシュ領域を巡回させるように前記メモリ管理情報を変更するメモリ配置変更部と、
を備えたことを特徴とする記憶装置。（３）
（付記１０）（追加：先頭アドレス）
付記９記載の記憶装置に於いて、
前記メモリ配置管理部は前記メモリ管理情報に前記リードキャッシュ領域の領域先頭アドレスを登録して管理し、
前記メモリ配置変更部は、前記メモリ管理情報に登録している前記領域先頭アドレスを前記所定のアドレス単位だけずらすことを特徴とするディスク装置。（４）
（付記１１）（オリジナル２：電源投入時の読出配置）
付記９記載の記憶装置に於いて、前記メモリ配置管理部は、電源投入時に前記メモリ管理情報を前記ディスク媒体上から読み出して揮発メモリに配置することを特徴とするディスク装置。
【０１３９】
（付記１２）（追加：メモリ管理情報の媒体書込）
付記１１記載の記憶装置に於いて、前記メモリ配置管理部は、前記揮発メモリ上で前記メモリ管理情報を変更した時、変更したメモリ管理情報を前記ディスク媒体に書込み、前記ディスク媒体への書込み成功を条件に、変更後のメモリ管理情報を使用して管理することを特徴とするディスク装置。
【０１４０】
（付記１３）（オリジナル３：１セクタ巡回）
付記９記載の記憶装置に於いて、前記メモリ配置変更部は、前記メモリ管理情報を前記ディスク媒体の１セクタサイズ単位ずつ巡回させるように変更することを特徴とする記憶装置。
【０１４１】
（付記１４）（オリジナル４：１ワード巡回）
付記９記載の記憶装置に於いて、前記メモリ配置変更部は、前記メモリ管理情報を前記ディスク媒体の１ワード単位ずつ巡回させるように変更することを特徴とする記憶装置。
【０１４２】
（付記１５）（追加：コマンド等による書込み）
付記９記載の記憶装置に於いて、前記キャッシュ制御部は、前記上位装置から所定のコマンドの受信時、前記リードキャッシュ領域の全てのリードキャッシュデータを無効化して空にすることを特徴とする記憶装置。
【０１４３】
（付記１６）（制御回路：ライト及びリードキャッシュ）
ヘッドによりデータを記録して再生するディスク媒体と、ライトキャッシュ領域及びリードトキャッシュ領域が配置される不揮発メモリとを備えた記憶装置の制御回路に於いて、
上位装置のライト要求により前記ディスク媒体に記録するライトデータを前記ライトキャッシュ領域に一時的に格納すると共に、上位装置のリード要求により前記ディスク媒体から再生したリードデータを前記リードキャッシュ領域に一時的に格納するキャッシュ制御部と、
前記不揮発メモリにおける前記ライトキャッシュ領域及びリードキャッシュ領域の配置位置を示すメモリ管理情報を前記ディスク媒体に格納して管理するメモリ配置管理部と、
前記不揮発メモリに配置したライトキャッシュ領域のライトキャッシュデータを全て前記ディスク媒体に書き込んで空にする毎に、前記不揮発メモリの消去単位より小さい所定のアドレスサイズ単位だけ前記ライトキャッシュ領域を巡回させるように前記メモリ管理情報を変更する第１メモリ配置変更部と、
前記不揮発メモリに配置したリードキャッシュ領域のリードキャッシュデータを全て無効化して空にする毎に、前記不揮発メモリの消去単位より小さい所定のアドレスサイズ単位だけ前記リードキャッシュ領域を巡回させるように前記メモリ管理情報を変更する第２メモリ配置変更部と、
を備えたことを特徴とする制御回路。（５）
（付記１７）（追加：先頭アドレス）
付記１６記載の制御回路に於いて、
前記メモリ配置管理部は前記メモリ管理情報に前記ライトキャッシュ領域及びリードキャッシュ領域の領域先頭アドレスを登録して管理し、
前記メモリ配置変更部は、前記メモリ管理情報に登録して前記領域先頭アドレスを前記所定のアドレス単位だけずらすことを特徴とする制御回路。（４）
（付記１８）（オリジナル２：電源投入時の読出配置）
付記１６記載の制御回路に於いて、前記メモリ配置管理部は、電源投入時に前記メモリ管理情報を前記ディスク媒体上から読み出して揮発メモリに配置することを特徴とする制御回路。
【０１４４】
（付記１９）（追加：メモリ管理情報の媒体書込）
付記１８記載の制御回路に於いて、前記メモリ配置管理部は、前記揮発メモリ上で前記メモリ管理情報を変更した時、変更したメモリ管理情報を前記ディスク媒体に書込み、前記ディスク媒体への書込み成功を条件に、変更後のメモリ管理情報を使用して管理することを特徴とする制御回路。
【０１４５】
（付記２０）（オリジナル３：１セクタ巡回又は１ワード巡回）
付記１６記載の制御回路に於いて、前記第１メモリ配置変更部及び第２メモリ歯位置変更部は、前記メモリ管理情報を前記ディスク媒体の１セクタサイズ単位または１ワード単位ずつ巡回させるように変更することを特徴とする制御回路。
【図面の簡単な説明】
【０１４６】
【図１】本発明による記憶装置の一実施形態としてハイブリッド型の磁気ディスク装置を示したブロック図
【図２】図１のメモリ管理情報を示した説明図
【図３】本実施形態によるライトキャッシュ領域に対するウエアレベリング処理を示した説明図
【図４】本実施形態によるライトキャッシュ領域のページ区分と消去単位のウエアレベリングを示した説明図
【図５】本実施形態の不揮発メモリにおける消去単位のデータの書き込み処理を示して説明図
【図６】本実施形態における消去単位に行う不揮発メモリの書換え処理を示した説明図
【図７】ウエアレベリングを含む本実施形態の制御処理を示したフローチャート
【図８】図７に続く本実施形態の制御処理を示したフローチャート
【図９】図８のステップＳ１８におけるライトキャッシュウエアレベリングの詳細を示したフローチャート
【図１０】図８のステップＳ２０におけるリードキャッシュウエアレベリングの詳細を示したフローチャート
【図１１】図７のステップＳ２３におけるアイドルでのウエアレベリング処理の詳細を示したフローチャート
【符号の説明】
【０１４７】
１０：磁気ディスク装置
１１：ホスト
１２：ディスクエンクロージャ
１４：制御ボード
１６：スピンドルモータ
１８：ボイスコイルモータ
２０：ロータリアクチュエータ
２２−１，２２−２：磁気ディスク
２４，２４−１〜２４−４：ヘッド
２６：ヘッドＩＣ
２８：ＭＰＵ
３０：バス
３２：揮発メモリ
３４：プログラムメモリ
３６：モータ駆動制御部
３８：ホストインタフェース制御部
４０：バッファメモリ
４２：不揮発メモリ
４４：バッファ制御部
４６：フォーマット制御部
４８：リードチャネル
５０：キャッシュ制御部
５２：メモリ配置管理部
５４：メモリ配置変更部
５６：メモリ管理情報
５８，５８−１〜５８−５：ライトキャッシュ領域
６０：リードキャッシュ領域
６６：ページサイズ
６８−１〜６８−ｍ：消去単位
７０−１〜７０−ｎ：領域
７２−１〜７２−３：領域先頭アドレス
【図１】
2009104687.tif 000003
【図２】
2009104687.tif 000004
【図３】
2009104687.tif 000005
【図４】
2009104687.tif 000006
【図５】
2009104687.tif 000007
【図６】
2009104687.tif 000008
【図７】
2009104687.tif 000009
【図８】
2009104687.tif 000010
【図９】
2009104687.tif 000011
【図１０】
2009104687.tif 000012
【図１１】
2009104687.tif 000013