(57)【要約】【課題】ランダムライトにおけるバンド単位での書き込みのシーク時間を短くする。【解決手段】システムコントローラ１３は、ＮＡＮＤメモリ１６にデータがキャッシュされるごとにダーティカウンタ１３Ａのカウント値を監視し、ダーティカウンタ１３Ａのカウント値が基準値を超えたバンドＢ１〜ＢＭがある場合、そのバンドＢ１〜ＢＭを書き込みバンドとして選択し、ＮＡＮＤメモリ１６にキャッシュされた書き込みバンドに対応するデータ量が当該データの書き込み先となる書き込みバンドの容量に満たない場合、書き込み指令で指定されない書き込みバンドの領域に書き込まれているデータをＮＡＮＤメモリ１６の書き換え回数が所定値以上の領域に退避させ、ＮＡＮＤメモリ１６にキャッシュされたデータと退避されたデータとをＮＡＮＤメモリ１６から読み出して磁気ディスク２、３の書き込みバンドに書き込む。【選択図】図１
2014225311.tif 000002
【特許請求の範囲】
【請求項１】
隣接する複数のトラックをまとめたバンド単位で書き込みが行われる磁気ディスクと、
前記磁気ディスクに前記バンド単位で書き込みを行う磁気記録制御部と
前記磁気ディスクに書き込まれるデータをキャッシュするＮＡＮＤメモリと、
前記ＮＡＮＤメモリにキャッシュされるデータを前記バンドの容量よりも少ない容量を単位として管理して前記ＮＡＮＤメモリに対する制御を行うＮＡＮＤコントローラと、
前記磁気ディスクと前記ＮＡＮＤメモリとの間のデータのやり取りを制御するシステムコントローラとを備え、
前記システムコントローラは、
書き込み指令に含まれるロジカルブロックアドレスから抽出されたハッシュ値に基づいて、前記バンドに書き込まれるデータの数を前記バンドごとにカウントするダーティカウンタと、
前記ダーティカウンタのカウント値に基づいて、前記磁気ディスクの書き込みバンドを選択する書き込み選択部と、
前記選択された書き込みバンドの前記書き込み指令で指定されないロジカルブロックアドレスに書き込まれているデータを、前記選択された書き込みバンドから前記ＮＡＮＤメモリに退避させる退避部と、
前記キャッシュされたデータと前記退避されたデータとを前記ＮＡＮＤメモリから読み出して前記磁気ディスクの書き込みバンドに書き込む書き込み部とを備えるデータ記憶装置。
【請求項２】
隣接する複数のトラックをまとめたバンド単位で書き込みが行われる磁気ディスクと、
前記磁気ディスクに書き込まれるデータをキャッシュする半導体メモリと、
前記半導体メモリにキャッシュされるデータを前記バンドの容量よりも少ない容量を単位として管理するコントローラとを備えるデータ記憶装置。
【請求項３】
前記コントローラは、書き込み指令に基づいて前記半導体メモリにキャッシュされたデータの量が、当該データの書き込み先となる書き込みバンドの容量に満たない場合、前記書き込み指令で指定されない前記書き込みバンドの領域に書き込まれているデータを前記半導体メモリの書き換え回数が所定値以上の領域に退避させ、前記キャッシュされたデータと前記退避されたデータとを前記半導体メモリから読み出して前記書き込みバンドに書き込む請求項２に記載のデータ記憶装置。
【請求項４】
前記コントローラは、書き込み指令に基づいて前記半導体メモリにキャッシュされた１つのバンド分のデータ量が前記バンドの容量より小さな設定量を超えたバンドが複数ある場合、前記書き込み指令で指定されない領域に書き込まれているデータを前記複数のバンドから前記半導体メモリの書き換え回数が所定値以上の領域に退避させ、前記キャッシュされたデータと前記退避されたデータとを前記半導体メモリから読み出して前記複数のバンドに書き込む請求項３に記載のデータ記憶装置。
【請求項５】
前記コントローラは、前記半導体メモリにキャッシュされた１つのバンド分のデータ量が前記バンドの容量より小さな設定量を超えた時に前記データを前記半導体メモリから前記磁気ディスクの前記バンドに書き込む請求項２に記載のデータ記憶装置。
【請求項６】
前記キャッシュされたデータと前記退避されたデータとを書き込むバンドは、前記退避されたデータが読み出されたバンドとは異なるバンドである請求項１、３または４に記載のデータ記憶装置。
【請求項７】
隣接する複数のトラックをまとめたバンド単位で書き込みが行われる磁気ディスクと、前記磁気ディスクに書き込まれるデータをキャッシュする半導体メモリとを備えるデータ記憶装置のデータ記憶制御方法であって、
書き込み指令に基づいて前記半導体メモリにキャッシュされたデータの数が、当該データの書き込み先となる書き込みバンドの容量に満たない場合、前記書き込み指令で指定されない前記書き込みバンドの領域に書き込まれているデータを前記半導体メモリの書き換え回数が所定値以上の領域に退避させ、前記キャッシュされたデータと前記退避されたデータとを前記半導体メモリから読み出して前記書き込みバンドに書き込むデータ記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ記憶装置およびデータ記憶制御方法に関する。
【背景技術】
【０００２】
磁気ディスク装置では、記憶容量を増大させるため、隣接トラックの一部を重ねて記録する方法がある。この方法は瓦記録（シングル記録）と呼ばれることがある。このシングル記録では、後続するトラックに、その一部を重ね書きされたトラックのデータの一部が消失する。瓦記録では、隣接する複数のトラックをまとめたバンドと称する単位で書き込みが行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２５３５７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、瓦記録を用いたランダムライトにおける書き込み時間をより短くすることが可能なデータ記憶装置およびデータ記憶制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、磁気ディスクと、半導体メモリと、コントローラとが設けられている。磁気ディスクは、隣接する複数のトラックをまとめたバンド単位で書き込みが行われる。半導体メモリは、前記磁気ディスクに書き込まれるデータをキャッシュする。コントローラは、前記半導体メモリにキャッシュされるデータを前記バンドの容量よりも少ない容量を単位として管理する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係るデータ記憶装置の概略構成を示す断面図である。
【図２】図２（ａ）は、図１の磁気ディスクのバンドの構成例を示す平面図、図２（ｂ）は、図２（ａ）のバンド内のトラックの配置例を示す図である。
【図３】図３（ａ）は、図２（ａ）の磁気ディスクのランダムライト時の書き込み位置の一例を示す平面図、図３（ｂ）は、図３（ａ）の磁気ディスクに書き込みされるデータのキャッシュ状態を示す図、図３（ｃ）は、図３（ｂ）のキャッシュ状態に対応したキャッシュ管理表の内容を示す図、図３（ｄ）は、図３（ａ）の書き込み位置に対応したダーティカウンタの内容を示す図、図３（ｅ）は、ロジカルブロックアドレスにおけるハッシュ値の割り当て方法を示す図である。
【図４】図４（ａ）は、図２（ａ）の磁気ディスクのランダムライト時の書き込み位置の一例を示す平面図、図４（ｂ）は、図４（ａ）の磁気ディスクに書き込みされるデータのキャッシュ状態を示す図、図４（ｃ）は、図４（ｂ）のキャッシュ状態に対応したキャッシュ管理表の内容を示す図、図４（ｄ）は、図４（ａ）の書き込み位置に対応したダーティカウンタの内容を示す図、図４（ｅ）は、図４（ｂ）のキャッシュデータを磁気ディスクに書き込んだ後に更新されたキャッシュ管理表の内容を示す図、図４（ｆ）は、図４（ｂ）のキャッシュデータを磁気ディスクに書き込んだ後に更新されたダーティカウンタの内容を示す図である。
【図５】図５は、図１のデータ記憶装置のデータの書き込み時の処理を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態に係るデータ記憶装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１実施形態）
図１は、第１実施形態に係るデータ記憶装置の概略構成を示すブロック図である。
図１において、データ記憶装置には、複数の磁気ディスク２、３が設けられ、磁気ディスク２の両面にはディスク面Ｍ０、Ｍ１がそれぞれ設けられ、磁気ディスク３の両面にはディスク面Ｍ２、Ｍ３がそれぞれ設けられている。そして、磁気ディスク２、３はスピンドル１１を介して一体的に支持されている。ここで、磁気ディスク２、３は、隣接する複数のトラックをまとめたバンドと呼ばれる単位で書き込みが行われる。バンド単位で書き込みを行う場合、シングル記録を行うことができる。すなわち、シングル記録では、隣接トラックの一部が重ねて記録される。このため、後続するトラックに、その一部を重ね書きされたトラックのデータの一部が消失する。このような消失が発生するため、あるトラクにデータを記録する場合においても、バンド内の全てのトラックについて記録が行われる。
【０００９】
図２（ａ）は、図１の磁気ディスクのバンドの構成例を示す平面図、図２（ｂ）は、図２（ａ）のバンド内のトラックの配置例を示す図である。
図２（ａ）において、例えば、磁気ディスク２のディスク面Ｍ０には、円周方向に沿ってトラックＴが設けられている。ディスク面Ｍ０は、複数のトラックＴをまとめたバンドＢ１〜ＢＭ（Ｍは２以上の整数）に分割されている。ここで、各バンドＢ１〜ＢＭ内において、隣接トラックＴ間では、図２（ｂ）に示すように、各トラックＴ１〜ＴＮ（Ｎは２以上の整数）の一部が重ねて記録される。各バンドＢ１〜ＢＭは互いに重複しないように設けることができる。また、各バンドＢ１〜ＢＭ内には、連続した論理ブロックアドレスを割り当てることができる。
【００１０】
また、図１において、データ記憶装置には、ディスク面Ｍ０〜Ｍ３ごとに磁気ヘッドＨ０〜Ｈ３が設けられ、磁気ヘッドＨ０〜Ｈ３は、ディスク面Ｍ０〜Ｍ３にそれぞれ対向するように配置されている。ここで、磁気ヘッドＨ０〜Ｈ３はアームＡ０〜Ａ３をそれぞれ介してディスク面Ｍ０〜Ｍ３上にそれぞれ保持されている。アームＡ０〜Ａ３は、磁気ヘッドＨ０〜Ｈ３を水平面内でそれぞれスライドさせることができる。
【００１１】
また、データ記憶装置には、アームＡ０〜Ａ３を駆動するボイスコイルモータ４が設けられるとともに、スピンドル１１を介して磁気ディスク２、３を回転させるスピンドルモータ１０が設けられている。そして、磁気ディスク２、３、磁気ヘッドＨ０〜Ｈ３、アームＡ０〜Ａ３、ボイスコイルモータ４、スピンドルモータ１０およびスピンドル１１は、ケース１に収容されている。
【００１２】
また、データ記憶装置には磁気記録制御部５が設けられ、磁気記録制御部５には、ヘッド制御部６、パワー制御部７、リードライトチャネル８およびハードディスク制御部９が設けられている。ヘッド制御部６には、ライト電流制御部６Ａおよび再生信号検出部６Ｂが設けられている。パワー制御部７には、スピンドルモータ制御部７Ａおよびボイスコイルモータ制御部７Ｂが設けられている。
【００１３】
ヘッド制御部６は、記録再生時における信号を増幅する。ライト電流制御部６Ａは、磁気ヘッドＨ０〜Ｈ３に流れるライト電流を制御する。再生信号検出部６Ｂは、磁気ヘッドＨ０〜Ｈ３にて読み出された信号を検出する。パワー制御部７は、ボイスコイルモータ４およびスピンドルモータ１０を駆動する。スピンドルモータ制御部７Ａは、スピンドルモータ１０の回転を制御する。ボイスコイルモータ制御部７Ｂは、ボイスコイルモータ４の駆動を制御する。リードライトチャネル８は、磁気ヘッドＨ０〜Ｈ３にて再生される信号をホスト１７で扱われるデータ形式に変換したり、ホスト１７から出力されるデータを磁気ヘッドＨ０〜Ｈ３にて記録される信号形式に変換したりする。このような形式変換としては、ＤＡ変換や符号化を挙げることができる。また、リードライトチャネル８は、磁気ヘッドＨ０〜Ｈ３にて再生された信号のデコード処理を行ったり、ホスト１７から出力されるデータをコード変調したりする。ハードディスク制御部９は、システムコントローラ１３からの指令に基づいて記録再生制御を行ったり、システムコントローラ１３とリードライトチャネル８との間でデータの受け渡しを行ったりすることができる。
【００１４】
また、データ記憶装置には、ホストインタフェース部１２、システムコントローラ１３、ＤＲＡＭ１４、ＮＡＮＤコントローラ１５およびＮＡＮＤメモリ１６が設けられている。ホストインタフェース部１２は、書き込み指令及び読み込み指令をホスト１７から受け付けたり、磁気ディスク２、３またはＮＡＮＤメモリ１６から読み出されたリードデータをホスト１７に出力したりすることができる。このホストインタフェース部１２はホスト１７に接続されている。なお、ホスト１７としては、書き込み指令や読み出し指令を磁気ディスク装置に行うパーソナルコンピュータであってもよいし、外部インタフェースであってもよい。
【００１５】
ＮＡＮＤメモリ１６は、磁気ディスク２、３に書き込まれるデータをキャッシュする。ＮＡＮＤコントローラ１５はＮＡＮＤメモリ１６の制御を行うことができる。なお、ＮＡＮＤメモリ１６の制御としては、例えば、ＮＡＮＤメモリ１６の読み書き制御、ブロック選択、誤り訂正などを挙げることができる。ＮＡＮＤコントローラ１５には、書き換え回数管理部１５Ａおよび記憶単位設定部１５Ｂが設けられている。記憶単位設定部１５Ｂは、ＮＡＮＤメモリ１６にキャッシュされるデータの記憶単位の容量が、各バンドＢ１〜ＢＭの容量よりも少ない容量となるように設定する。例えば、各バンドＢ１〜ＢＭの容量が１００ＭＢであった場合、記憶単位設定部１５Ｂの記憶単位の容量を４ｋＢに設定することができる。書き換え回数管理部１５Ａは、記憶単位設定部１５Ｂで設定される記憶単位ごとにＮＡＮＤメモリ１６の書き換え回数を管理する。ＤＲＡＭ１４は、ＮＡＮＤメモリ１６から読み出されたリードデータをホスト１７に転送したり、ＮＡＮＤメモリ１６に書き込まれるライトデータをホスト１７から受け取ったりするためのバッファとして用いることができる。
【００１６】
システムコントローラ１３は、磁気ディスク２、３にデータを読み書きさせるための指令をハードディスク制御部９に送ったり、ＮＡＮＤメモリ１６にデータを読み書きさせるための指令をＮＡＮＤコントローラ１５に送ったりすることができる。なお、システムコントローラ１３、ホストインタフェース部１２、リードライトチャネル８、ＮＡＮＤコントローラ１５および不図示のＣＰＵは、例えば、ＳｏＣ（システムオンチップ）にて構成することができ、システムコントローラ１３の処理は、不図示のＣＰＵで実行されるファームウェアにより実現することができる。システムコントローラ１３には、ダーティカウンタ１３Ａ、キャッシュ管理表１３Ｂ、書き込みバンド選択部１３Ｃ、書き込みデータ退避部１３Ｄおよびデータ書き込み部１３Ｅが設けられている。ダーティカウンタ１３Ａは、書き込み指令に含まれるロジカルブロックアドレスから抽出されたハッシュ値に基づいて、各バンドＢ１〜ＢＭに記録されるデータの数をバンドＢ１〜ＢＭごとにカウントし保持する。キャッシュ管理表１３Ｂは、書き込み指令に含まれるロジカルブロックアドレスＬＢＡと、ＮＡＮＤメモリ１６のキャッシュ領域ＦＰＢとの対応関係を管理する。書き込みバンド選択部１３Ｃは、各バンドＢ１〜ＢＭのカウント値に基づいて、磁気ディスク２、３の書き込みバンドを選択する。書き込みデータ退避部１３Ｄは、ＮＡＮＤメモリ１６にキャッシュされたデータ量が書き込みバンドの容量に満たない場合、書き込み指令で指定されない領域に書き込まれているデータを書き込みバンドからＮＡＮＤメモリ１６の書き換え回数が所定値以上の領域に退避させる。データ書き込み部１３Ｅは、キャッシュされたデータと退避されたデータとをＮＡＮＤメモリ１６から読み出して磁気ディスク２、３の書き込みバンドに書き込む。
【００１７】
そして、磁気ディスク２、３に読み書きが行われる場合、スピンドルモータ１０により磁気ディスク２、３が回転されながら、磁気ヘッドＨ０〜Ｈ３それぞれを介してディスク面Ｍ０〜Ｍ３から信号が読み出され、再生信号検出部６Ｂにて検出される。再生信号検出部６Ｂにて検出された信号は、リードライトチャネル８にてデータ変換された後、ハードディスク制御部９に送られる。そして、ハードディスク制御部９において、再生信号検出部６Ｂにて検出された信号に含まれるバーストパターンに基づいて磁気ヘッドＨ０〜Ｈ３のトラッキング制御が行われる。また、再生信号検出部６Ｂにて検出された信号に含まれるセクタ／シリンダ情報に基づいて磁気ヘッドＨ０〜Ｈ３の現在位置が算出され、磁気ヘッドＨ０〜Ｈ３が目標位置に近づくようにシーク制御が行われる。
【００１８】
一方、ＮＡＮＤメモリ１６をライトキャッシュとして使用して書き込みを行う場合、システムコントローラ１３は、ホスト１７から供給されたライトデータをＤＲＡＭ１４に一旦格納する。そして、ＮＡＮＤコントローラ１５は、ＤＲＡＭ１４に格納されたライトデータをＮＡＮＤメモリ１６に転送し、ＮＡＮＤメモリ１６にライトデータを書き込む。なお、ライトキャッシュとしてのＮＡＮＤメモリ１６に書き込みを行う場合、システムコントローラ１３は、ホスト１７から供給されたライトデータをＤＲＡＭ１４に一旦格納することなくＮＡＮＤコントローラ１５に受け渡し、ＮＡＮＤコントローラ１５は、そのライトデータをＮＡＮＤメモリ１６に書き込むようにしてもよい。
【００１９】
また、リードキャッシュ時にＮＡＮＤメモリ１６をリードキャッシュとして使用して読み出しを行う場合、ＮＡＮＤコントローラ１５は、ＮＡＮＤメモリ１６からリードデータを読み出し、ＤＲＡＭ１４に一旦格納する。そして、システムコントローラ１３は、ＤＲＡＭ１４に格納されたリードデータをホスト１７に転送する。なお、リードキャッシュとしてのＮＡＮＤメモリ１６から読み出しを行う場合、ＮＡＮＤコントローラ１５は、ＮＡＮＤメモリ１６から読み出したリードデータをＤＲＡＭ１４に一旦格納することなくシステムコントローラ１３に受け渡し、システムコントローラ１３は、そのリードデータをホスト１７に転送するようにしてもよい。
【００２０】
ここで、システムコントローラ１３は、ホスト１７から書き込み指令を受け取った場合、書き込み指令で与えられるライトデータをＮＡＮＤメモリ１６にキャッシュするかどうかを判断する。そして、ＮＡＮＤメモリ１６にキャッシュする場合には、そのライトデータをＮＡＮＤメモリ１６に記録させるようにＮＡＮＤコントローラ１５に指示する。一方、ＮＡＮＤメモリ１６にキャッシュしない場合には、そのライトデータを磁気ディスク２、３に記録させるようにハードディスク制御部９に指示する。
【００２１】
ライトデータをＮＡＮＤメモリ１６にキャッシュする場合、システムコントローラ１３は、書き込み指令に含まれる二進数で表記されたロジカルブロックアドレスからハッシュ値を抽出する。ハッシュ値の抽出は、予め定めた１以上のビットを抽出する、ロジカルブロックアドレスを予め定めた値で除した余りの値を算出するなどの、ロジカルブックアドレスを一定の規則でロジカルブロックアドレスよりも小さな値に変換する方法を適用することで実現できる。そして、ダーティカウンタ１３Ａは、そのハッシュ値に基づいて、各バンドＢ１〜ＢＭに記録されたデータの数をバンドＢ１〜ＢＭごとにカウントし保持する。また、システムコントローラ１３は、書き込み指令に含まれるロジカルブロックアドレスと、ＮＡＮＤメモリ１６にキャッシュされる領域との対応関係をキャッシュ管理表１３Ｂに記録する。ここで、ＮＡＮＤコントローラ１５は、各バンドＢ１〜ＢＭの容量よりも少ない記憶単位でデータを管理するとともに、その記憶単位ごとにＮＡＮＤメモリ１６の書き換え回数を管理する。さらに、システムコントローラ１３は、ＮＡＮＤメモリ１６にデータがキャッシュ（記憶）されるごとに各バンドＢ１〜ＢＭのカウント値を監視し、基準値を超えたバンドＢ１〜ＢＭがある場合、そのバンドＢ１〜ＢＭを書き込みバンドとして選択する。
【００２２】
システムコントローラ１３は、選択された書き込みバンドに対応しＮＡＮＤメモリ１６にキャッシュされたデータ量がその書き込みバンドの容量に満たない場合、書き込み指令で指定されずに書き込みバンドの領域に書き込まれているデータをＮＡＮＤメモリ１６の書き換え回数が所定値以上の領域に退避させる。そして、ＮＡＮＤメモリ１６にキャッシュされたデータと退避されたデータとをＮＡＮＤメモリ１６から読み出して磁気ディスク２、３の書き込みバンドに書き込む。なお、書き込みバンドは、退避したデータが記録されていたバンドでなく他のバンドへの書き替えられる構成であってもよい。
【００２３】
ここで、ＮＡＮＤメモリ１６にキャッシュされたデータと退避されたデータとを選択された書き込みバンドに書き込む場合、それらのデータが書き込みバンドにシーケンシャルに書き込まれるように、ＮＡＮＤメモリ１６からデータをランダムに読み出すことができる。これは、磁気ディスク２、３の書き込みよりもＮＡＮＤメモリ１６の読み出しのデータの転送レートが速いためである。具体的には、磁気ディスク２、３の書き込み速度は数〜数十ｍｓｅｃ、ＮＡＮＤメモリ１６の読み出し速度は数〜数十μｓｅｃであるので、ＮＡＮＤメモリ１６からランダムにデータを読み出しながら磁気ディスク２、３に書き込むことができる。
【００２４】
また、ＮＡＮＤメモリ１６にキャッシュされるデータを各バンドＢ１〜ＢＭの容量よりも少ない記憶単位で管理することにより、磁気ディスク２、３にデータを書き戻すためのバッファ容量の増大を抑制しつつ、ランダムライトにおけるバンド単位での書き込みのシーク時間を短くすることができる。
【００２５】
さらに、カウント値が基準値を超えたバンドＢ１〜ＢＭに対して、ＮＡＮＤメモリ１６にキャッシュされたデータを書き込むことにより、各バンドＢ１〜ＢＭに書き込まれるデータのうちの新規データの量を向上させることができ、結果としてリオーダリング効率を向上させることになり、シーク時間の合計を短くすることができる。
【００２６】
また、ＮＡＮＤメモリ１６にキャッシュされたデータを磁気ディスク２、３に書き込む時に、書き込み指令で指定されない領域に書き込まれているデータを書き込みバンドからＮＡＮＤメモリ１６に退避させることにより、ＮＡＮＤメモリ１６から磁気ディスク２、３にバンド単位で書き込みを行うことができ、シングル記録に好適に対応させることができる。
【００２７】
さらに、書き込みバンドからＮＡＮＤメモリ１６にデータを退避させる時に、書き換え回数が所定値以上の領域を選択することにより、ライトキャッシュとして使用できないような信頼性の低い領域を有効活用することができ、ＮＡＮＤメモリ１６の大容量化を抑制することができる。ここで、書き込みバンドからＮＡＮＤメモリ１６の信頼性の低い領域にデータを退避させた時に、その領域からデータが読み出せない場合においても、そのデータは書き込みバンドに残っているので、そのデータの信頼性を確保することができる。
【００２８】
図３（ａ）は、図２（ａ）の磁気ディスクのランダムライト時の書き込み位置の一例を示す平面図、図３（ｂ）は、図３（ａ）の磁気ディスクに書き込みされるデータのキャッシュ状態を示す図、図３（ｃ）は、図３（ｂ）のキャッシュ状態に対応したキャッシュ管理表の内容を示す図、図３（ｄ）は、図３（ａ）の書き込み位置に対応したダーティカウンタの内容を示す図、図３（ｅ）は、ロジカルブロックアドレスにおけるハッシュ値の割り当て方法を示す図である。
【００２９】
図３（ａ）〜図３（ｄ）において、ホスト１７からの書き込み指令Ｋ１において、ロジカルブロックアドレスＬ１で指定されるバンドＢ１内の領域Ｒ１にライトデータＤ１を書き込むように指定されたものとする。この時、ライトデータＤ１がＮＡＮＤメモリ１６のキャッシュ領域Ｐ１にキャッシュされ、ロジカルブロックアドレスＬ１とキャッシュ領域Ｐ１との対応関係がキャッシュ管理表１３Ｂに記録される。
【００３０】
また、図３（ｅ）に示すように、ロジカルブロックアドレスＬＢＡの何れかのビットにはハッシュ値ＨＧが割り当てられている。例えば、バンドＢ１〜ＢＭの個数Ｍが８個であるものとすると、ハッシュ値ＨＧｎとして３ビット分をロジカルブロックアドレスＬＢＡの所定の位置に割り当てることができる。
【００３１】
そして、ロジカルブロックアドレスＬ１からハッシュ値ＨＧ１が抽出され、そのハッシュ値ＨＧ１がバンドＢ１に対応しているものとすると、ダーティカウンタ１３ＡのバンドＢ１に対応したカウント値が１だけインクリメントされる。
【００３２】
同様に、ホスト１７からの書き込み指令Ｋ１において、ロジカルブロックアドレスＬ２で指定されるバンドＢ４内の領域Ｒ２にライトデータＤ２を書き込むように指定されたものとする。この時、ライトデータＤ２がＮＡＮＤメモリ１６のキャッシュ領域Ｐ２にキャッシュされ、ロジカルブロックアドレスＬ２とキャッシュ領域Ｐ２との対応関係がキャッシュ管理表１３Ｂに記録される。また、ロジカルブロックアドレスＬ２からハッシュ値ＨＧ２が抽出され、そのハッシュ値ＨＧ２がバンドＢ４に対応しているものとすると、ダーティカウンタ１３ＡのバンドＢ４に対応したカウント値が１だけインクリメントされる。
【００３３】
同様に、ホスト１７からの書き込み指令Ｋ１において、ロジカルブロックアドレスＬ３で指定されるバンドＢＭ−１内の領域Ｒ３にライトデータＤ３を書き込むように指定されたものとする。この時、ライトデータＤ３がＮＡＮＤメモリ１６のキャッシュ領域Ｐ３にキャッシュされ、ロジカルブロックアドレスＬ３とキャッシュ領域Ｐ３との対応関係がキャッシュ管理表１３Ｂに記録される。また、ロジカルブロックアドレスＬ３からハッシュ値ＨＧ３が抽出され、そのハッシュ値ＨＧ３がバンドＢＭ−１に対応しているものとすると、ダーティカウンタ１３ＡのバンドＢＭ−１に対応したカウント値が１だけインクリメントされる。
【００３４】
図４（ａ）は、図２（ａ）の磁気ディスクのランダムライト時の書き込み位置の一例を示す平面図、図４（ｂ）は、図４（ａ）の磁気ディスクに書き込みされるデータのキャッシュ状態を示す図、図４（ｃ）は、図４（ｂ）のキャッシュ状態に対応したキャッシュ管理表の内容を示す図、図４（ｄ）は、図４（ａ）の書き込み位置に対応したダーティカウンタの内容を示す図、図４（ｅ）は、図４（ｂ）のキャッシュデータを磁気ディスクに書き込んだ後に更新されたキャッシュ管理表の内容を示す図、図４（ｆ）は、図４（ｂ）のキャッシュデータを磁気ディスクに書き込んだ後に更新されたダーティカウンタの内容を示す図である。
【００３５】
図４（ａ）〜図４（ｄ）において、ホスト１７からの書き込み指令Ｋ１´において、ロジカルブロックアドレスＬ４〜Ｌ９でそれぞれ指定される領域Ｒ４〜Ｒ９にライトデータＤ４〜Ｄ９をそれぞれ書き込むように指定されたものとする。この時、ライトデータＤ４〜Ｄ９がＮＡＮＤメモリ１６のキャッシュ領域Ｐ４〜Ｐ９にそれぞれキャッシュされ、ロジカルブロックアドレスＬ４〜Ｌ９とキャッシュ領域Ｐ４〜Ｐ９との各対応関係がキャッシュ管理表１３Ｂに記録される。また、ロジカルブロックアドレスＬ４〜Ｌ９からハッシュ値ＨＧ４〜ＨＧ９がそれぞれ抽出され、それらのハッシュ値ＨＧ４〜ＨＧ９がバンドＢ４、ＢＭ−１、Ｂ４、Ｂ４、Ｂ４、Ｂ２にそれぞれ対応しているものとすると、ダーティカウンタ１３ＡのバンドＢ４、ＢＭ−１、Ｂ４、Ｂ４、Ｂ４、Ｂ２にそれぞれ対応したカウント値が１づつインクリメントされる。
【００３６】
ここで、カウンタ値の基準値が５に設定されているものとすると、バンドＢ４では、カウント値が５に達したので、バンドＢ４が書き込みバンドとして選択される。また、ＮＡＮＤメモリ１６は、その記憶単位ごとに書き換え回数が管理され、その書き換え回数が所定値以上の退避領域ＫＲが検索される。そして、書き込み指令Ｋ１、Ｋ１´で指定されないバンドＢ４の領域ＮＲに書き込まれているデータがバンドＢ４からＮＡＮＤメモリ１６の退避領域ＫＲに退避される（Ｋ２）。そして、ＮＡＮＤメモリ１６にキャッシュされたバンドＢ４のライトデータＤ２、Ｄ４、Ｄ６〜Ｄ８と退避領域ＫＲに退避されたデータとがＮＡＮＤメモリ１６から読み出されながら磁気ディスク２のバンドＢＭにシングル記録方式にて書き込まれる（Ｋ３）。なお、この時のバンドＢＭは、バンドＢ１〜ＢＭのうちデータが記録されていない任意のバンドを選択することができる。
【００３７】
そして、図４（ｅ）に示すように、バンドＢ４に書き込まれたデータＤ２、Ｄ４、Ｄ６〜Ｄ９に対応するロジカルブロックアドレスＬ２、Ｌ４、Ｌ６〜Ｌ８とキャッシュ領域Ｐ２、Ｐ４、Ｐ６〜Ｐ８との対応関係がキャッシュ管理表１３Ｂから削除されるようにキャッシュ管理表１３Ｂが更新される（Ｋ４）。また、図４（ｆ）に示すように、ダーティカウンタ１３ＡのバンドＢ４に対応するカウント値が０にクリアされる（Ｋ５）。
【００３８】
図５は、図１のデータ記憶装置のデータの書き込み時の処理を示すフローチャートである。
図５において、システムコントローラ１３は、書き込み指令に含まれるロジカルブロックアドレスからハッシュ値を計算する（Ｓ１）。そして、そのハッシュ値で特定されるバンドに対応するダーティカウンタ１３Ａのカウント値を増加させる（Ｓ２）。
【００３９】
次に、ダーティカウンタ１３Ａのカウント値が基準値以上かどうかを判断する（Ｓ３）。なお、ダーティカウンタ１３Ａのカウント値は、ＮＡＮＤメモリ１６にキャッシュされた１つのバンド分のデータ量がそのバンドの容量より小さな設定量を超えたかどうかの判断に用いることができる。カウント値が基準値以上でない場合は、書き込み指令で指定されるデータをキャッシュに書き込み（Ｓ４）、キャッシュエントリを更新する（Ｓ５）。なお、このキャッシュは、図１のＮＡＮＤメモリ１６を用いることができる。また、キャッシュエントリは、図１のキャッシュ管理表１３ＢのロジカルブロックアドレスＬＢＡとキャッシュ領域ＦＰＢとの対応関係を表すことができる。
【００４０】
一方、Ｓ３において、ダーティカウンタ１３Ａのカウント値が基準値以上の場合は、フラッシュするバンドを選択する（Ｓ６）。また、選択されたバンド内の非ダーティデータを磁気ディスク２、３からバッファに取り込む（Ｓ７）。なお、このバッファは、図１のＮＡＮＤメモリ１６を用いることができる。
【００４１】
次に、選択されたバンド内のデータをキャッシュとバッファから磁気ディスク２、３に書き込む（Ｓ８）。そして、その書き込みに対応してキャッシュエントリを削除するとともに、選択されたバンドに対応するダーティカウンタ１３Ａのカウント値をクリアする（Ｓ９）。
【００４２】
このように、上述した第１実施形態によれば、ＮＡＮＤメモリ１６にキャッシュされるデータを各バンドＢ１〜ＢＭの容量よりも少ない記憶単位で管理することにより、磁気ディスク２、３にデータを書き戻すためのバッファ容量の増大を抑制しつつ、ランダムライトにおけるバンド単位での書き込みのシーク時間を短くすることができる。
【００４３】
なお、上述した第１実施形態では、データをキャッシュさせるバッファとしてＮＡＮＤメモリ１６を用いる方法について説明したが、ＳＲＡＭまたはＤＲＡＭなどのその他の半導体メモリを用いるようにしてもよい。
【００４４】
（第２実施形態）
上述した第１実施形態では、選択されたバンド内の非ダーティデータを磁気ディスク２、３からバッファに取り込む際に（ライトバックキャッシュ）、そのバッファとして図１のＮＡＮＤメモリ１６を用いる方法について説明したが、ライトバックキャッシュを行うためのＤＲＡＭを別途設けるようにしてもよい。この時、ＮＡＮＤメモリ１６とＤＲＡＭとの容量の総和が、各バンドＢ１〜ＢＭの容量以上になるように設定することができる。
また、上述した第１実施形態では、選択されたバンド内のデータをキャッシュから磁気ディスク２、３に書き込む際に、選択されたバンド内の非ダーティデータのライトバックキャッシュを行う方法について説明したが、選択されたバンドの容量に相当するそのバンドのデータがキャッシュされている場合（すなわち、選択されたバンドの更新データがキャッシュされている場合）には、ライトバックキャッシュを行うことなく、選択されたバンド内のデータをキャッシュから磁気ディスク２、３に書き込むようにしてもよい。
【００４５】
このように、上述した第２実施形態によれば、選択されたバンドの容量に相当するそのバンドのデータがキャッシュされている場合には、ライトバックキャッシュを行う必要がなくなり、磁気ディスク２、３にデータを書き戻すためのバッファ容量の増大を抑制しつつ、ランダムライトにおけるバンド単位での書き込みのシーク時間を短くすることができる。
【００４６】
（第３実施形態）
上述した第１実施形態では、ダーティカウンタ１３Ａのカウント値が基準値以上になったバンドが１つある時に、そのバンドに対するデータをキャッシュとバッファから磁気ディスク２、３に書き込む方法について説明したが、ダーティカウンタ１３Ａのカウント値が基準値以上になったバンドが複数ある時に、それらのバンドに対するデータをキャッシュとバッファから磁気ディスク２、３に書き込むようにしてもよい。
【００４７】
このように、上述した第３実施形態によれば、複数のバンドに対するデータをキャッシュとバッファから磁気ディスク２、３に書き込むことができ、ランダムライトにおけるバンド単位での書き込みのシーク時間を短くすることができる。
【００４８】
（第４実施形態）
上述した第１実施形態では、フラッシュするバンドを選択した時に、選択されたバンド内の非ダーティデータをそのバンドからバッファに取り込む方法について説明したが、選択されたバンド内の非ダーティデータがＮＡＮＤメモリ１６にリードキャッシュされている場合には、選択されたバンド内の非ダーティデータをそのバンドからバッファに取り込むことなく、選択されたバンド内のデータをキャッシュから磁気ディスク２、３に書き込むようにしてもよい。
【００４９】
このように、上述した第４実施形態によれば、選択されたバンド内の非ダーティデータがＮＡＮＤメモリ１６にリードキャッシュされている場合には、選択されたバンド内の非ダーティデータをそのバンドからバッファに取り込む必要がなくなり、ランダムライトにおけるバンド単位での書き込みのシーク時間を短くすることができる。
【００５０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５１】
１  ケース、２、３  磁気ディスク、Ｍ０〜Ｍ３  ディスク面、Ｈ０〜Ｈ３  磁気ヘッド、Ａ０〜Ａ３  アーム、４  ボイスコイルモータ、５  磁気記録制御部、６  ヘッド制御部、６Ａ  ライト電流制御部、６Ｂ  再生信号検出部、７  パワー制御部、７Ａ  スピンドルモータ制御部、７Ｂ  ボイスコイルモータ制御部、８  リードライトチャネル、９  ハードディスク制御部、１０  スピンドルモータ、１１  スピンドル、１２  ホストインタフェース部、１３  システムコントローラ、１４  ＤＲＡＭ、１５  ＮＡＮＤコントローラ、１６  ＮＡＮＤメモリ、１７  ホスト、１３Ａ、ダーティカウンタ、１３Ｂ  キャッシュ管理表、１３Ｃ  書き込みバンド選択部、１３Ｄ  書き込みデータ退避部、１３Ｅ  データ書き込み部、１５Ａ  書き換え回数管理部、１５Ｂ  記憶単位設定部
【図１】
2014225311.tif 000003
【図２】
2014225311.tif 000004
【図３】
2014225311.tif 000005
【図４】
2014225311.tif 000006
【図５】
2014225311.tif 000007