(57)【要約】【課題】ホストからのアクセス要求に対する応答速度を向上させることが可能なデータ記憶装置を提供する。【解決手段】データ記憶装置２１には、磁気記憶部２１Ａおよび半導体記憶部２１Ｂが設けられ、磁気記憶部２１Ａに対応してキュー１４Ａが設けられ、半導体記憶部２１Ｂに対応してキュー１４Ｂが設けられ、分配部１３Ｂは、キュー１４Ａ、１４Ｂのうち現在登録されているライトコマンドの個数の少ない方にホスト１７から今回受けたライトコマンドを分配する。【選択図】図１
2014235677.tif 000002
【特許請求の範囲】
【請求項１】
磁気ディスクが設けられた磁気記憶部と、
ＮＡＮＤメモリが設けられた半導体記憶部と、
前記磁気記億部に対応した第１キューと、
前記半導体記億部に対応した第２キューと、
前記第１キューおよび前記第２キューのうち現在登録されているライトコマンドの個数の少ない方にホストから今回受けたライトコマンドを分配する分配部と、
前記半導体記億部に記憶されることなく前記磁気記億部に記憶されたデータへのホストからのリードコマンドに応じたアクセス回数を計測するキャッシュ管理部と、
前記計測されたアクセス回数が所定値以上となった後に前記磁気記億部に記憶された前記データを前記半導体記億部にライトする制御部と、
を備えるデータ記憶装置。
【請求項２】
第１記億部と、
前記第１記億部のキャッシュとして使用され、前記第１記億部よりもライト転送レートが遅くかつ応答時間が速い第２記億部と、
前記第１記億部に対応した第１キューと、
前記第２記億部に対応した第２キューと、
前記第１キューおよび前記第２キューのうち現在登録されているライトコマンドの個数の少ない方にホストから今回受けたライトコマンドを分配する分配部とを備えるデータ記憶装置。
【請求項３】
前記分配部は、データの長さが長いライトコマンドよりもデータの長さが短いライトコマンドを優先して前記第２キューに分配する請求項２に記載のデータ記憶装置。
【請求項４】
前記ライトコマンドで指定されるデータへのアクセスの期待値が高いと前記ホストから通知された場合、前記分配部は、前記ライトコマンドを優先して前記第２キューに分配する請求項２または３に記載のデータ記憶装置。
【請求項５】
第１記億部と、
前記第１記億部のキャッシュとして使用され、前記第１記億部よりもライト転送レートが遅くかつ応答時間が速い第２記億部と、
前記第２記億部に記憶されることなく前記第１記億部に記憶されたデータへのホストからのリードコマンドに応じたアクセス回数を計測し、前記計測したアクセス回数に基づいて、前記第１記億部に記憶された前記データを前記第２記億部にライトする制御部と、
を備えるデータ記憶装置。
【請求項６】
前記制御部は、前記アクセス回数が２以上の時に前記第１記億部に記憶された前記データを前記第２記億部にライトする請求項５に記載のデータ記憶装置。
【請求項７】
前記制御部は、前記ホストからの前記リードコマンドを受けた時に、前記リードコマンドで指定されるデータの長さが所定値以下の時は前記第１記億部に記憶された前記データを前記第２記億部にライトするとともに前記ホストに送り、前記リードコマンドで指定されるデータの長さが前記所定値を超える時は前記第１記億部に記憶された前記データを前記第２記億部にライトすることなく前記ホストに送る請求項５または６に記載のデータ記憶装置。
【請求項８】
前記制御部は、前記ホストからのアクセスが規定時間以上なくかつ前記アクセス回数が所定値以上の時に前記第１記億部に記憶された前記データを前記第２記億部にライトする請求項５から７のいずれか１項に記載のデータ記憶装置。
【請求項９】
前記制御部は、前記ホストからのライトコマンドに応じて前記アクセス回数をリセットする請求項５から８のいずれか１項に記載のデータ記憶装置。
【請求項１０】
第１記億部と、前記第１記億部のキャッシュとして使用され、前記第１記億部よりもライト転送レートが遅くかつ応答時間が速い第２記億部と、前記第１記億部に対応した第１キューと、前記第２記億部に対応した第２キューとを備えるデータ記憶装置のデータ記憶制御方法であって、
前記第１キューおよび前記第２キューのうち現在登録されているライトコマンドの個数の少ない方に今回ホストから受けたライトコマンドを分配するデータ記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ記憶装置およびデータ記憶制御方法に関する。
【背景技術】
【０００２】
大容量化とデータアクセスの高速化を両立させるため、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などのストレージのキャッシュとして、ＮＡＮＤ型フラッシュメモリなどの半導体記憶媒体を使用したハイブリッドドライブがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１７６３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、ホストからのアクセス要求に対する応答速度を向上させることが可能なデータ記憶装置およびデータ記憶制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、第１記億部と、第２記億部と、第１キューと、２キューと、分配部とが設けられている。第２記億部は、前記第１記億部のキャッシュとして使用され、前記第１記億部よりもライト転送レートが遅くかつ応答時間が速い。第１キューは、前記第１記億部に対応している。第２キューは、前記第２記億部に対応している。分配部は、前記第１キューおよび前記第２キューのうち現在登録されているライトコマンドの個数の少ない方にホストから今回受けたライトコマンドを分配する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係るデータ記憶装置の概略構成を示すブロック図である。
【図２】図２（ａ）〜図２（ｇ）は、第１実施形態に係るデータ記憶装置のキューイング方法を示すブロック図である。
【図３】図３は、第１実施形態に係るデータ記憶装置のキューイング方法を示すフローチャートである。
【図４】図４（ａ）は、第２実施形態に係るデータ記憶装置におけるライトコマンドで指定される管理情報およびデータの関係を示す図、図４（ｂ）は、図４（ａ）の管理情報およびデータのＬＢＡで指定される格納位置を示す図である。
【図５】図５は、第２実施形態に係るデータ記憶装置のキューイング方法を示すフローチャートである。
【図６】図６は、第３実施形態に係るデータ記憶装置におけるキャッシュ管理テーブルの更新方法を示す図である。
【図７】図７は、第４実施形態に係るデータ記憶装置におけるキャッシュ管理テーブルの更新方法を示す図である。
【図８】図８（ａ）および図８（ｃ）は、第５実施形態に係るデータ記憶装置における磁気記憶部からのリードデータの転送方法を示す図、図８（ｂ）および図８（ｄ）は、図８（ａ）および図８（ｃ）の処理にそれぞれ応じたキャッシュ管理テーブルの更新方法を示す図である。
【図９】図９（ａ）は、第６実施形態に係るデータ記憶装置における磁気記憶部に記憶されたデータの半導体記憶部へのライト方法を示す図、図９（ｂ）は、図９（ａ）の処理に応じたキャッシュ管理テーブルの更新方法を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態に係るデータ記憶装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１実施形態）
図１は、第１実施形態に係るデータ記憶装置の概略構成を示すブロック図である。
図１において、データ記憶装置２１には、磁気記憶部２１Ａ、半導体記憶部２１Ｂ、ホストインタフェース部１２、システムコントローラ１３およびバッファ１４が設けられている。なお、半導体記憶部２１Ｂは磁気記憶部２１Ａよりもライト転送レートが遅くかつ応答時間が速い。例えば、磁気記憶部２１Ａのライト転送レートは１００ＭＢ／ｓｅｃ、応答時間（シーク時間）は２ｍｓｅｃ〜３０ｍｓｅｃに設定することができる。半導体記憶部２１Ｂのライト転送レートは４０ＭＢ／ｓｅｃ、応答時間は３００μｓｅｃ〜５００μｓｅｃに設定することができる。
【０００９】
磁気記憶部２１Ａには、複数の磁気ディスク２、３が設けられ、磁気ディスク２の両面にはディスク面Ｍ０、Ｍ１がそれぞれ設けられ、磁気ディスク３の両面にはディスク面Ｍ２、Ｍ３がそれぞれ設けられている。そして、磁気ディスク２、３はスピンドル１１を介して一体的に支持されている。
【００１０】
また、磁気記憶部２１Ａには、ディスク面Ｍ０〜Ｍ３ごとに磁気ヘッドＨ０〜Ｈ３が設けられ、磁気ヘッドＨ０〜Ｈ３は、ディスク面Ｍ０〜Ｍ３にそれぞれ対向するように配置されている。ここで、磁気ヘッドＨ０〜Ｈ３はアームＡ０〜Ａ３をそれぞれ介してディスク面Ｍ０〜Ｍ３上にそれぞれ保持されている。アームＡ０〜Ａ３は、磁気ヘッドＨ０〜Ｈ３を水平面内でそれぞれスライドさせることができる。
【００１１】
また、磁気記憶部２１Ａには、アームＡ０〜Ａ３を駆動するボイスコイルモータ４が設けられるとともに、スピンドル１１を介して磁気ディスク２、３を回転させるスピンドルモータ１０が設けられている。そして、磁気ディスク２、３、磁気ヘッドＨ０〜Ｈ３、アームＡ０〜Ａ３、ボイスコイルモータ４、スピンドルモータ１０およびスピンドル１１は、ケース１に収容されている。
【００１２】
また、磁気記憶部２１Ａには磁気記録制御部５が設けられ、磁気記録制御部５には、ヘッド制御部６、パワー制御部７、リードライトチャネル８およびハードディスク制御部９が設けられている。ヘッド制御部６には、ライト電流制御部６Ａおよび再生信号検出部６Ｂが設けられている。パワー制御部７には、スピンドルモータ制御部７Ａおよびボイスコイルモータ制御部７Ｂが設けられている。
【００１３】
ヘッド制御部６は、記録再生時における信号を増幅する。ライト電流制御部６Ａは、磁気ヘッドＨ０〜Ｈ３に流れるライト電流を制御する。再生信号検出部６Ｂは、磁気ヘッドＨ０〜Ｈ３にて読み出された信号を検出する。パワー制御部７は、ボイスコイルモータ４およびスピンドルモータ１０を駆動する。スピンドルモータ制御部７Ａは、スピンドルモータ１０の回転を制御する。ボイスコイルモータ制御部７Ｂは、ボイスコイルモータ４の駆動を制御する。リードライトチャネル８は、磁気ヘッドＨ０〜Ｈ３にて再生される信号をホスト１７で扱われるデータ形式に変換したり、ホスト１７から出力されるデータを磁気ヘッドＨ０〜Ｈ３にて記録される信号形式に変換したりする。このような形式変換としては、ＤＡ変換や符号化を挙げることができる。また、リードライトチャネル８は、磁気ヘッドＨ０〜Ｈ３にて再生された信号のデコード処理を行ったり、ホスト１７から出力されるデータをコード変調したりする。ハードディスク制御部９は、システムコントローラ１３からの指令に基づいて記録再生制御を行ったり、システムコントローラ１３とリードライトチャネル８との間でデータの受け渡しを行ったりすることができる。
【００１４】
半導体記憶部２１Ｂには、ＮＡＮＤコントローラ１５およびＮＡＮＤメモリ１６が設けられている。ＮＡＮＤメモリ１６は、磁気ディスク２、３に書き込まれるデータをキャッシュする。ＮＡＮＤコントローラ１５はＮＡＮＤメモリ１６の制御を行うことができる。なお、ＮＡＮＤメモリ１６の制御としては、例えば、ＮＡＮＤメモリ１６の読み書き制御、ブロック選択、誤り訂正などを挙げることができる。
【００１５】
ホストインタフェース部１２は、ライトコマンドおよびリードコマンドをホスト１７から受け付けたり、磁気ディスク２、３またはＮＡＮＤメモリ１６から読み出されたリードデータをホスト１７に出力したりすることができる。このホストインタフェース部１２はホスト１７に接続されている。なお、ホスト１７としては、ライトコマンドおよびリードコマンドをデータ記憶装置２１に出力するパーソナルコンピュータであってもよいし、外部インタフェースであってもよい。
【００１６】
システムコントローラ１３は、磁気ディスク２、３にデータを読み書きさせるための指令をハードディスク制御部９に送ったり、ＮＡＮＤメモリ１６にデータを読み書きさせるための指令をＮＡＮＤコントローラ１５に送ったりすることができる。なお、システムコントローラ１３、ホストインタフェース部１２、リードライトチャネル８、ＮＡＮＤコントローラ１５および不図示のＣＰＵは、例えば、ＳｏＣ（システムオンチップ）にて構成することができる。システムコントローラ１３の処理の制御は、不図示のＣＰＵで実行されるファームウェアにより実現することができる。システムコントローラ１３には、キャッシュ管理部１３Ａおよび分配部１３Ｂを設けることができる。キャッシュ管理部１３Ａは、キャッシュ管理テーブル１４Ｃを管理することができる。分配部１３Ｂは、ホスト１７から受けたライトコマンドをキュー１４Ａまたはキュー１４Ｂに分配することができる。
【００１７】
バッファ１４は、ＮＡＮＤメモリ１６から読み出されたリードデータをシステムコントローラ１３に転送したり、ＮＡＮＤメモリ１６に書き込まれるライトデータをシステムコントローラ１３から受け取ったりすることができる。バッファ１４は、ＤＲＡＭであってもよいし、ＳＲＡＭであってもよい。バッファ１４には、キュー１４Ａ、１４Ｂおよびキャッシュ管理テーブル１４Ｃを設けることができる。キュー１４Ａは、磁気記憶部２１Ａに対応して設けられ、磁気記憶部２１Ａに対するジョブを保持することができる。キュー１４Ｂは、半導体記憶部２１Ｂに対応して設けられ、半導体記憶部２１Ｂに対するジョブを保持することができる。このジョブとして、ホスト１７から受けたライトコマンドを保持することができる。キャッシュ管理テーブル１４Ｃは、磁気記憶部２１Ａまたは半導体記憶部２１Ｂに記憶されたデータの論理ブロックアドレスＬＢＡと半導体記憶部２１Ｂの記憶アドレスＦＰＢとの対応関係を登録したり、ダーティフラグおよびアクセス回数をＬＢＡごとに登録したりすることができる。
【００１８】
そして、磁気ディスク２、３に読み書きが行われる場合、スピンドルモータ１０により磁気ディスク２、３が回転されながら、磁気ヘッドＨ０〜Ｈ３それぞれを介してディスク面Ｍ０〜Ｍ３から信号が読み出され、再生信号検出部６Ｂにて検出される。再生信号検出部６Ｂにて検出された信号は、リードライトチャネル８にてデータ変換された後、ハードディスク制御部９に送られる。そして、ハードディスク制御部９において、再生信号検出部６Ｂにて検出された信号に含まれるバーストパターンに基づいて磁気ヘッドＨ０〜Ｈ３のトラッキング制御が行われる。また、再生信号検出部６Ｂにて検出された信号に含まれるセクタ／シリンダ情報に基づいて磁気ヘッドＨ０〜Ｈ３の現在位置が算出され、磁気ヘッドＨ０〜Ｈ３が目標位置に近づくようにシーク制御が行われる。
【００１９】
一方、ＮＡＮＤメモリ１６をライトキャッシュとして使用して書き込みを行う場合、システムコントローラ１３は、ホスト１７から供給されたライトデータをバッファ１４に一旦格納する。そして、ＮＡＮＤコントローラ１５は、バッファ１４に格納されたライトデータをＮＡＮＤメモリ１６に転送し、ＮＡＮＤメモリ１６にライトデータを書き込む。なお、ライトキャッシュとしてのＮＡＮＤメモリ１６に書き込みを行う場合、システムコントローラ１３は、ホスト１７から供給されたライトデータをバッファ１４に一旦格納することなくＮＡＮＤコントローラ１５に受け渡し、ＮＡＮＤコントローラ１５は、そのライトデータをＮＡＮＤメモリ１６に書き込むようにしてもよい。
【００２０】
また、ＮＡＮＤメモリ１６をリードキャッシュとして使用して読み出しを行う場合、ＮＡＮＤコントローラ１５は、ＮＡＮＤメモリ１６からリードデータを読み出し、バッファ１４に一旦格納する。そして、システムコントローラ１３は、バッファ１４に格納されたリードデータをホスト１７に転送する。なお、リードキャッシュとしてのＮＡＮＤメモリ１６から読み出しを行う場合、ＮＡＮＤコントローラ１５は、ＮＡＮＤメモリ１６から読み出したリードデータをバッファ１４に一旦格納することなくシステムコントローラ１３に受け渡し、システムコントローラ１３は、そのリードデータをホスト１７に転送するようにしてもよい。
【００２１】
ここで、システムコントローラ１３は、ホスト１７からライトコマンドを受け取った場合、ライトコマンドで指定されるライトデータをＮＡＮＤメモリ１６にキャッシュするかどうかを判断する。そして、ＮＡＮＤメモリ１６にキャッシュする場合には、そのライトデータをＮＡＮＤメモリ１６に記録させるようにＮＡＮＤコントローラ１５に指示する。一方、ＮＡＮＤメモリ１６にキャッシュしない場合には、そのライトデータを磁気ディスク２、３に記録させるようにハードディスク制御部９に指示する。
【００２２】
一方、システムコントローラ１３は、ホスト１７からリードコマンドを受け取った場合、リードコマンドで指定されるリードデータがＮＡＮＤメモリ１６にキャッシュされているかどうかを判断する。そして、ＮＡＮＤメモリ１６にキャッシュされている場合には、そのリードデータをＮＡＮＤメモリ１６から読み出すようにＮＡＮＤコントローラ１５に指示する。一方、ＮＡＮＤメモリ１６にキャッシュされていない場合には、そのリードデータを磁気ディスク２、３から読み出すようにハードディスク制御部９に指示する。
【００２３】
ここで、分配部１３Ｂは、キュー１４Ａ、１４Ｂのうち現在登録されているライトコマンドの個数の少ない方にホスト１７から今回受けたライトコマンドを分配することができる。
【００２４】
図２（ａ）〜図２（ｇ）は、第１実施形態に係るデータ記憶装置のキューイング方法を示すブロック図である。
図２（ａ）において、ホスト１７からライトコマンドＷＭ１がデータ記憶装置２１に送られたものとする。なお、ライトコマンドＷＭ１には、ＬＢＡとしてＸ１、ライトコマンドＷＭ１で特定されるデータの長さとしてＬ１が含まれるものとする。この時、キュー１４Ａ、１４Ｂが空であるものとすると、分配部１３Ｂは、ライトコマンドＷＭ１をキュー１４Ａに分配する。
次に、図２（ｂ）において、ホスト１７からライトコマンドＷＭ２がデータ記憶装置２１に送られたものとする。なお、ライトコマンドＷＭ２には、ＬＢＡとしてＸ２、ライトコマンドＷＭ２で特定されるデータの長さとしてＬ２が含まれるものとする。この時、キュー１４ＡにライトコマンドＷＭ１が登録されている。このため、キュー１４Ｂの方がキュー１４Ａよりも現在登録されているライトコマンドの個数が少ないので、分配部１３Ｂは、ライトコマンドＷＭ２をキュー１４Ｂに分配する。
次に、図２（ｃ）において、ホスト１７からライトコマンドＷＭ３がデータ記憶装置２１に送られたものとする。なお、ライトコマンドＷＭ３には、ＬＢＡとしてＸ３、ライトコマンドＷＭ３で特定されるデータの長さとしてＬ３が含まれるものとする。この時、キュー１４ＡにライトコマンドＷＭ１が登録され、キュー１４ＢにライトコマンドＷＭ２が登録されているので、分配部１３Ｂは、ライトコマンドＷＭ３をキュー１４Ａに分配する。
次に、図２（ｄ）において、ホスト１７からライトコマンドＷＭ４がデータ記憶装置２１に送られたものとする。なお、ライトコマンドＷＭ４には、ＬＢＡとしてＸ４、ライトコマンドＷＭ４で特定されるデータの長さとしてＬ４が含まれるものとする。この時、キュー１４ＡにライトコマンドＷＭ１、ＷＭ３が登録され、キュー１４ＢにライトコマンドＷＭ２が登録されている。このため、キュー１４Ｂの方がキュー１４Ａよりも現在登録されているライトコマンドの個数が少ないので、分配部１３Ｂは、ライトコマンドＷＭ４をキュー１４Ｂに分配する。
次に、図２（ｅ）において、データ記憶装置２１がライトコマンドＷＭ２で指定されたデータＷＣ２をホスト１７に要求すると、ホスト１７からデータＷＣ２がデータ記憶装置２１に送られる。そして、図２（ｆ）に示すように、データＷＣ２が半導体記憶部２１Ｂに記憶されるとともに、ライトコマンドＷＭ２がキュー１４Ｂから削除される。
次に、図２（ｇ）において、ホスト１７からライトコマンドＷＭ５がデータ記憶装置２１に送られたものとする。なお、ライトコマンドＷＭ５には、ＬＢＡとしてＸ５、ライトコマンドＷＭ５で特定されるデータの長さとしてＬ５が含まれるものとする。この時、キュー１４ＡにライトコマンドＷＭ１、ＷＭ３が登録され、キュー１４ＢにライトコマンドＷＭ４が登録されている。このため、キュー１４Ｂの方がキュー１４Ａよりも現在登録されているライトコマンドの個数が少ないので、分配部１３Ｂは、ライトコマンドＷＭ５をキュー１４Ｂに分配する。
【００２５】
図３は、第１実施形態に係るデータ記憶装置のキューイング方法を示すフローチャートである。
図３において、ホスト１７からライトコマンドが送られた時に、分配部１３Ｂは、磁気記憶部２１Ａのキュー１４Ａに積まれているジョブの個数が半導体記憶部２１Ｂのキュー１４Ｂに積まれているジョブの個数以下かどうかを判断する（Ｓ１）。そして、分配部１３Ｂは、磁気記憶部２１Ａのキュー１４Ａに積まれているジョブの個数が半導体記憶部２１Ｂのキュー１４Ｂに積まれているジョブの個数以下の場合（Ｓ１のＹｅｓ）、磁気記憶部２１Ａのキュー１４Ａにジョブを分配する（Ｓ２）。一方、分配部１３Ｂは、磁気記憶部２１Ａのキュー１４Ａに積まれているジョブの個数が半導体記憶部２１Ｂのキュー１４Ｂに積まれているジョブの個数を超える場合（Ｓ１のＮｏ）、半導体記憶部２１Ｂのキュー１４Ｂにジョブを分配する（Ｓ３）。
【００２６】
ここで、キュー１４Ａ、１４Ｂのうち現在登録されているライトコマンドの個数の少ない方にホスト１７から今回受けたライトコマンドを分配することにより、半導体記憶部２１Ｂにライトキャッシュするための待ち時間を減らすことができる。このため、半導体記憶部２１Ｂにライトキャッシュしてから磁気記憶部２１Ａにライトする方法に比べて、ホスト１７からのアクセス要求に対する応答速度を向上させることができる。例えば、磁気記憶部２１Ａのライト転送レートが１００ＭＢ／ｓｅｃ、半導体記憶部２１Ｂのライト転送レートが４０ＭＢ／ｓｅｃの場合、半導体記憶部２１Ｂにライトキャッシュしてから磁気記憶部２１Ａにライトする方法では、ホスト１７からのアクセス要求に対する応答速度は４０ＭＢ／ｓｅｃである。すなわち、この応答速度は、半導体記憶部２１Ｂのライト転送レートに相当する。これに対して、キュー１４Ａ、１４Ｂのうち現在登録されているライトコマンドの個数の少ない方にホスト１７から今回受けたライトコマンドを分配する方法では、ホスト１７からのアクセス要求に対する応答速度を１４０ＭＢ／ｓｅｃにすることができる。すなわち、この応答速度は、磁気記憶部２１Ａのライト転送レートと半導体記憶部２１Ｂのライト転送レートとの和に相当する。
本第１実施形態によれば、半導体記憶部２１Ｂにライトキャッシュするための待ち時間を減らすことができ、半導体記憶部２１Ｂにライトキャッシュしてから磁気記憶部２１Ａにライトする方法に比べて、ホスト１７からのアクセス要求に対する応答速度を向上させることができる。
【００２７】
（第２実施形態）
図１において、分配部１３Ｂは、データの長さが長いライトコマンドよりもデータの長さが短いライトコマンドを優先して半導体記憶部２１Ｂのキュー１４Ｂに分配するようにしてもよい。例えば、データの長さが所定値以下のライトコマンドをキュー１４Ｂに分配し、データの長さが所定値を超えるライトコマンドをキュー１４Ａに分配することができる。
これにより、磁気記憶部２１Ａではシーケンシャルライトの効率を向上させることができ、シーク時間を減らすことが可能となることから、ホスト１７からのアクセス要求に対する応答速度を向上させることが可能となる。一方、半導体記憶部２１Ｂでは、大容量のデータが記憶されるのを防止することができ、半導体記憶部２１Ｂの大容量化を防止することができる。
【００２８】
図４（ａ）は、第２実施形態に係るデータ記憶装置におけるライトコマンドで指定される管理情報およびデータの関係を示す図、図４（ｂ）は、図４（ａ）の管理情報およびデータのＬＢＡで指定される格納位置を示す図である。
図４（ａ）において、ライトコマンドでは、管理情報Ｊ１またはデータ本体Ｊ２を指定することができる。ここで、管理情報Ｊ１には、データ本体Ｊ２の格納場所が含まれる。また、管理情報Ｊ１は、データ本体Ｊ２よりもデータの長さが短いことが多い。
一方、図４（ｂ）において、磁気ディスク２にはＬＢＡとして０〜５０００が割り当てられているものとする。ここで、例えば、磁気ディスク２では、ＬＢＡが２４００〜２６００の位置に管理情報Ｊ１が記憶され、ＬＢＡが０〜２３９９および２６０１〜５０００の位置にデータ本体Ｊ２が記憶されるものとする。
【００２９】
そして、データの長さが長いライトコマンドよりもデータの長さが短いライトコマンドを優先して半導体記憶部２１Ｂのキュー１４Ｂに分配することにより、管理情報Ｊ１が半導体記憶部２１Ｂに記憶される頻度を向上させつつ、データ本体Ｊ２が磁気記憶部２１Ａに記憶される頻度を向上させることができる。このため、半導体記憶部２１Ｂから管理情報Ｊ１を効率よくリードすることができ、磁気記憶部２１Ａがデータ本体Ｊ２にのみアクセスする頻度を増大させることが可能となることから、磁気記憶部２１Ａが管理情報Ｊ１およびデータ本体Ｊ２に交互にアクセスする頻度を減らすことができる。この結果、磁気記憶部２１Ａでのシーク時間を減らすことができ、データ本体Ｊ２を磁気記憶部２１Ａに効率よくライトすることが可能となることから、ホスト１７からのアクセス要求に対する応答速度を向上させることができる。
【００３０】
図５は、第２実施形態に係るデータ記憶装置のキューイング方法を示すフローチャートである。
図５において、ホスト１７からライトコマンドを受けた場合、半導体記憶部２１Ｂのキュー１４Ｂに積まれているジョブの個数がＸ（Ｘは正の整数）以上かどうかを判断する（Ｓ１１）。Ｓ１１において、半導体記憶部２１Ｂのキュー１４Ｂに積まれているジョブの個数がＸ以上の場合（Ｓ１１のＹｅｓ）、磁気記憶部２１Ａのキュー１４Ａに積まれているジョブの個数がＹ（Ｙは正の整数）以上かどうかを判断する（Ｓ１２）。Ｓ１２において、磁気記憶部２１Ａのキュー１４Ａに積まれているジョブの個数がＹ以上の場合（Ｓ１２のＹｅｓ）、Ｓ１１に戻る。一方、Ｓ１２において、磁気記憶部２１Ａのキュー１４Ａに積まれているジョブの個数がＹ以上でない場合（Ｓ１２のＮｏ）、磁気記憶部２１Ａのキュー１４Ａにジョブを分配する（Ｓ１３）。
【００３１】
一方、Ｓ１１において、半導体記憶部２１Ｂのキュー１４Ｂに積まれているジョブの個数がＸ以上でない場合（Ｓ１１のＮｏ）、磁気記憶部２１Ａのキュー１４Ａに積まれているジョブの個数がＹ以上かどうかを判断する（Ｓ１４）。Ｓ１４において、磁気記憶部２１Ａのキュー１４Ａに積まれているジョブの個数がＹ以上の場合（Ｓ１４のＹｅｓ）、半導体記憶部２１Ｂのキュー１４Ｂにジョブを分配する。
【００３２】
一方、Ｓ１４において、磁気記憶部２１Ａのキュー１４Ａに積まれているジョブの個数がＹ以上でない場合（Ｓ１４のＮｏ）、ライトコマンドで指定されるデータの長さがＺ（Ｚは正の整数）以下かどうかを判断する（Ｓ１５）。Ｓ１５において、ライトコマンドで指定されるデータの長さがＺ以下の場合（Ｓ１５のＹｅｓ）、半導体記憶部２１Ｂのキュー１４Ｂにジョブを分配する（Ｓ１６）。一方、Ｓ１５において、ライトコマンドで指定されるデータの長さがＺ以下でない場合（Ｓ１５のＮｏ）、磁気記憶部２１Ａのキュー１４Ａにジョブを分配する（Ｓ１３）。
【００３３】
本第２実施形態によれば、磁気記憶部２１Ａでのシーク時間を減らすことができ、データ本体Ｊ２を磁気記憶部２１Ａに効率よくライトすることが可能となることから、ホスト１７からのアクセス要求に対する応答速度を向上させることができる。
【００３４】
（第３実施形態）
図１において、キャッシュ管理部１３Ａは、半導体記憶部２１Ｂに記憶されることなく磁気記憶部２１Ａに記憶されたデータへのホスト１７からのアクセス回数を計測し、キャッシュ管理テーブル１４Ｃに登録することができる。そして、データ記憶装置２１は、キャッシュ管理テーブル１４Ｃに登録されたアクセス回数に基づいて、磁気記憶部２１Ａに記憶されたデータを半導体記憶部２１Ｂにライトするようにしてもよい。例えば、そのアクセス回数が２以上の時に磁気記憶部２１Ａに記憶されたデータを半導体記憶部２１Ｂにライトすることができる。
【００３５】
図６は、第３実施形態に係るデータ記憶装置におけるキャッシュ管理テーブルの更新方法を示す図である。
図６において、図１のホスト１７からのＬＢＡがＸ１を含むライトコマンドＷＭ１に基づいて磁気記憶部２１Ａにライトされたものとする。この時、キャッシュ管理テーブル１４Ｃでは、ＬＢＡにＸ１が登録され、ＦＰＢは指定されない。また、キャッシュ管理テーブル１４Ｃにおいて、ダーティフラグに０が立てられ、アクセス回数に０が登録される。なお、ダーティフラグが０は、半導体記憶部２１Ｂにライトされたかどうかにかかわりなく、磁気記憶部２１Ａにライトされたことを示す。
【００３６】
次に、ホスト１７からのＬＢＡがＸ１を含むリードコマンドに基づいて磁気記憶部２１Ａから２回だけリードされたものとする。この時、キャッシュ管理テーブル１４Ｃでは、アクセス回数が２だけインクリメントされる。そして、磁気記憶部２１Ａから２回リードされると、そのリードされたデータが半導体記憶部２１Ｂにライトされる。この時、Ｘ１というＬＢＡに対応してＹ１というＦＰＢが割り当てられたものとすると、キャッシュ管理テーブル１４Ｃでは、Ｘ１というＬＢＡに対応してＹ１というＦＰＢが登録される。
【００３７】
本第３実施形態によれば、半導体記憶部２１Ｂに記憶されることなく磁気記憶部２１Ａに記憶されたデータがホスト１７からリードされた場合、そのデータを半導体記憶部２１Ｂにライトすることにより、そのデータについてホスト１７からのリードコマンドに対する応答速度を向上させることができる。
【００３８】
（第４実施形態）
図１において、キャッシュ管理部１３Ａは、半導体記憶部２１Ｂに記憶されたデータへのホスト１７からのリードコマンドに応じたアクセス回数を計測し、ホスト１７からのライトコマンドに応じてそのデータに対するアクセス回数をリセットするようにしてもよい。
【００３９】
図７は、第４実施形態に係るデータ記憶装置におけるキャッシュ管理テーブルの更新方法を示す図である。
図７において、図１のホスト１７からのＬＢＡがＸ２を含むライトコマンドＷＭ２に基づいて半導体記憶部２１Ｂにライトされたものとする。この時、Ｘ２というＬＢＡに対応してＹ２というＦＰＢが割り当てられたものとすると、キャッシュ管理テーブル１４Ｃでは、ＬＢＡにＸ２が登録され、ＦＰＢにＹ２が登録される。また、キャッシュ管理テーブル１４Ｃにおいて、ダーティフラグに１が立てられ、アクセス回数に０が登録される。なお、ダーティフラグが１は、磁気記憶部２１Ａにライトされることなく、半導体記憶部２１Ｂにライトされたことを示す。
【００４０】
次に、ホスト１７からのリードコマンドに基づいて半導体記憶部２１ＢからＬＢＡがＸ２を含むデータが５回だけリードされたものとする。この時、キャッシュ管理テーブル１４Ｃでは、アクセス回数が５だけインクリメントされる。なお、キャッシュ管理テーブル１４Ｃ上で半導体記憶部２１Ｂのアクセス回数を登録することにより、アクセス回数の多いデータを優先的に半導体記憶部２１Ｂに残すことができ、ホスト１７からのアクセス要求に対する応答速度を向上させることが可能となる。
【００４１】
次に、ホスト１７からＬＢＡがＸ２を含むライトコマンドが発行され、そのライトコマンドでＬＢＡとしてＸ２が指定されていたものとする。この時、キャッシュ管理テーブル１４Ｃでは、Ｘ２というＬＢＡにおいてアクセス回数を０にリセットするとともに、ＦＰＢは新たに割り当てられたアドレスに更新する。
【００４２】
ＮＡＮＤフラッシュは書き換えにともない疲弊する性質がある。本第４実施形態によれば、キャッシュ管理テーブル１４Ｃで示されるアクセス回数が多いほどキャッシュとして利用されるＮＡＮＤフラッシュの疲弊の進行に対してヒットが多く有効に作用したという指標となる。このため、ホスト１７から発行されたライトコマンドに含まれるＸ２というＬＢＡに対してアクセス回数を０にリセットしつつ、アクセス回数が多いデータを優先してキャッシュに記録することにより、ＮＡＮＤフラッシュを利用したキャッシュの耐用期間を延命しつつ、ヒット率を改善することができる。
【００４３】
（第５実施形態）
図１において、データ記憶装置２１は、ホスト１７からのリードコマンドを受けた時に、そのリードコマンドで指定されるデータの長さが所定値以下の時は磁気記憶部２１Ａに記憶されたデータを半導体記憶部２１Ｂにライトするとともにホスト１７に送るようにしてもよい。また、データ記憶装置２１は、ホスト１７からのリードコマンドで指定されるデータの長さが所定値を超える時は磁気記憶部２１Ａに記憶されたデータを半導体記憶部２１Ｂにライトすることなくホスト１７に送るようにしてもよい。
【００４４】
図８（ａ）および図８（ｃ）は、第５実施形態に係るデータ記憶装置における磁気記憶部からのリードデータの転送方法を示す図、図８（ｂ）および図８（ｄ）は、図８（ａ）および図８（ｃ）の処理にそれぞれ応じたキャッシュ管理テーブルの更新方法を示す図である。
図８（ａ）および図８（ｂ）において、長さが所定値を超えるデータＤＡが半導体記憶部２１Ｂに記憶されることなく、磁気記憶部２１Ａに記憶されているものとする。この時、データＤＡのＬＢＡがＸ６であるものとすると、キャッシュ管理テーブル１４Ｃでは、ＬＢＡにＸ６が登録され、ＦＰＢは指定されない。また、キャッシュ管理テーブル１４Ｃにおいて、ダーティフラグに０が立てられ、アクセス回数に０が登録される。
【００４５】
そして、ホスト１７からリードコマンドを受けた時に、そのリードコマンドでＬＢＡとしてＸ６が指定されているものとすると、磁気記憶部２１Ａに記憶されたデータＤＡが半導体記憶部２１Ｂにライトされることなくホスト１７に送られる。この時、キャッシュ管理テーブル１４Ｃでは、アクセス回数が１だけインクリメントされる。
【００４６】
一方、図８（ｃ）および図８（ｄ）において、長さが所定値以下のデータＤＢが半導体記憶部２１Ｂに記憶されることなく、磁気記憶部２１Ａに記憶されているものとする。この時、データＤＢのＬＢＡがＸ７であるものとすると、キャッシュ管理テーブル１４Ｃでは、ＬＢＡにＸ７が登録され、ＦＰＢは指定されない。また、キャッシュ管理テーブル１４Ｃにおいて、ダーティフラグに０が立てられ、アクセス回数に０が登録される。
【００４７】
そして、ホスト１７からリードコマンドを受けた時に、そのリードコマンドでＬＢＡとしてＸ７が指定されているものとすると、磁気記憶部２１Ａに記憶されたデータＤＢが半導体記憶部２１ＢのＦＰＢがＹ７を含む領域にライトされるとともにホスト１７に送られる。この時、キャッシュ管理テーブル１４Ｃでは、アクセス回数が１だけインクリメントされる。また、Ｘ７というＬＢＡに対応してＹ７というＦＰＢが割り当てられたものとすると、キャッシュ管理テーブル１４Ｃには、Ｘ７というＬＢＡに対応してＹ７というＦＰＢが登録される。
【００４８】
本第５実施形態によれば、ホスト１７からのリードコマンドを受けた時に、データの長さが所定値以下の時は半導体記憶部２１Ｂにライトし、データの長さが所定値を超える時は半導体記憶部２１Ｂにライトしないようにすることにより、長さの長いデータが磁気記憶部２１Ａからリードされ、長さの短いデータが半導体記憶部２１Ｂからリードされる頻度を向上させることができる。このため、磁気記憶部２１Ａのシーク時間を低減しつつ、半導体記憶部２１Ｂよりも高い磁気記憶部２１Ａのライト転送レートを有効活用することができ、ホスト１７からのアクセス要求に対する応答速度を向上させることができる。
【００４９】
（第６実施形態）
図１において、データ記憶装置２１は、ホスト１７からのアクセスが規定時間以上なくかつアクセス回数が所定値以上の時に磁気記憶部２１Ａに記憶されたデータを半導体記憶部２１Ｂにライトするようにしてもよい。
【００５０】
図９（ａ）は、第６実施形態に係るデータ記憶装置における磁気記憶部に記憶されたデータの半導体記憶部へのライト方法を示す図、図９（ｂ）は、図９（ａ）の処理に応じたキャッシュ管理テーブルの更新方法を示す図である。
図９（ａ）および図９（ｂ）において、データＤＣが半導体記憶部２１Ｂに記憶されることなく、磁気記憶部２１Ａに記憶されているものとする。この時、データＤＣのＬＢＡがＸ８であるものとすると、キャッシュ管理テーブル１４Ｃでは、ＬＢＡにＸ８が登録され、ＦＰＢは指定されない。また、キャッシュ管理テーブル１４Ｃにおいて、ダーティフラグに０が立てられる。そして、ホスト１７からリードコマンドに基づいてデータＤＣが５回だけリードされたものとすると、キャッシュ管理テーブル１４Ｃのアクセス回数が５だけインクリメントされる。
【００５１】
その後、ホスト１７からのアクセスが規定時間以上なくかつアクセス回数が所定値（例えば、５）以上の時、磁気記憶部２１Ａに記憶されたデータＤＣが半導体記憶部２１Ｂにライトされる。この時、Ｘ８というＬＢＡに対応してＹ８というＦＰＢが割り当てられたものとすると、キャッシュ管理テーブル１４Ｃには、Ｘ８というＬＢＡに対応してＹ８というＦＰＢが登録される。
【００５２】
本第６実施形態によれば、ホスト１７からのアクセスが規定時間以上なくかつアクセス回数が所定値以上の時、磁気記憶部２１Ａに記憶されたデータＤＣを半導体記憶部２１Ｂにライトすることにより、データ記憶装置２１の空き時間を有効活用しつつ、ホスト１７からのアクセス要求に対する応答速度を向上させることができる。
【００５３】
（第７実施形態）
図１において、ライトコマンドで指定されるデータへのアクセスの期待値（優先度）が高いとホスト１７から通知された場合、分配部１３Ｂは、そのライトコマンドを優先して半導体記憶部２１Ｂのキュー１４Ｂに分配するようにしてもよい。
これにより、本第７実施形態によれば、アクセスの期待値が高いデータを半導体記憶部２１Ｂに効率よくキャッシュさせることができ、ホスト１７からのアクセス要求に対する応答速度を向上させることができる。
【００５４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５５】
１  ケース、２、３  磁気ディスク、Ｍ０〜Ｍ３  ディスク面、Ｈ０〜Ｈ３  磁気ヘッド、Ａ０〜Ａ３  アーム、４  ボイスコイルモータ、５  磁気記録制御部、６  ヘッド制御部、６Ａ  ライト電流制御部、６Ｂ  再生信号検出部、７  パワー制御部、７Ａ  スピンドルモータ制御部、７Ｂ  ボイスコイルモータ制御部、８  リードライトチャネル、９  ハードディスク制御部、１０  スピンドルモータ、１１  スピンドル、１２  ホストインタフェース部、１３  システムコントローラ、１３Ａ  キャッシュ管理部、１３Ｂ  分配部、１４  バッファ、１４Ａ、１４Ｂ  キュー、１４Ｃ  キャッシュ管理テーブル、１５  ＮＡＮＤコントローラ、１６  ＮＡＮＤメモリ、１７  ホスト、２１  データ記憶装置、２１Ａ  磁気記憶部、２１Ｂ  半導体記憶部
【図１】
2014235677.tif 000003
【図２】
2014235677.tif 000004
【図３】
2014235677.tif 000005
【図４】
2014235677.tif 000006
【図５】
2014235677.tif 000007
【図６】
2014235677.tif 000008
【図７】
2014235677.tif 000009
【図８】
2014235677.tif 000010
【図９】
2014235677.tif 000011