(57)【要約】【課題】応答速度を向上させる。【解決手段】実施形態の記憶装置は、不揮発性メモリと、磁気媒体と、ヘッドと、記憶部と、コントローラと、を備える。ヘッドは、磁気媒体からデータを読み出すための構成とする。記憶部は、不揮発性メモリに格納されたデータの位置及びサイズの情報と、当該データを読み出す際にシーケンシャルリードであるか否かを示す情報と、を対応付けて記憶する。コントローラは、読み出し要求されたデータの位置と、当該読み出し位置がシーケンシャルリードである旨を示す情報と、が記憶部に記憶されている場合に、不揮発性メモリからデータを読み出す間に、ヘッドを、不揮発性メモリから読み出されているデータの続きとなるデータが格納されている位置まで移動させる制御を行う。【選択図】図１
2016021271.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
磁気媒体と、
前記磁気媒体からデータを読み出すためのヘッドと、
前記不揮発性メモリに格納されたデータの位置及びサイズの情報と、当該データを読み出す際にシーケンシャルリードであるか否かを示す情報と、を対応付けて記憶する記憶部と、
前記読み出し要求されたデータの位置と、当該読み出し位置がシーケンシャルリードである旨を示す情報と、が前記記憶部に記憶されている場合に、前記不揮発性メモリからデータを読み出す間に、前記ヘッドを、前記不揮発性メモリから読み出されているデータの続きとなるデータが格納されている位置まで移動させる制御を行うコントローラと、
を備える記憶装置。
【請求項２】
前記コントローラは、さらに、前記ヘッドを、前記不揮発性メモリから読み出されているデータの続きとなるデータが格納されている位置まで移動させた後、前記磁気媒体から、データを読み込む制御を行う、
請求項１に記載の記憶装置。
【請求項３】
データの読み出し要求を受信する通信部、をさらに備え、
前記通信部で受信されたデータの読み出し要求の履歴を、読み出し要求された位置と、当該読み出し要求がシーケンシャルリードであるか否かを特定可能な情報と、を記憶する履歴記憶部を、さらに備え、
前記コントローラは、前記履歴記憶部に記憶された情報に基づいて、前記磁気媒体に格納されているデータを前記不揮発性メモリに書き込み、当該データの読み出し位置及びサイズと、前記シーケンシャルリードであるか否かを示す情報と、を対応付けて前記記憶部に登録する、
請求項１又は２に記載の記憶装置。
【請求項４】
前記コントローラは、読み出し要求が行われたときの前記磁気媒体又は前記ヘッドの動作状態に応じて、前記不揮発性メモリに書き込むデータの長さを異ならせる、
請求項１乃至３のいずれか一つに記載の記憶装置。
【請求項５】
前記記憶部は、不揮発性である、
請求項１乃至４のいずれか一つに記載の記憶装置。
【請求項６】
不揮発性メモリと、磁気媒体と、前記磁気媒体からデータを読み出すためのヘッドと、を備える記憶装置の制御方法であって、
前記不揮発性メモリに格納されたデータの位置及びサイズの情報と、当該データを読み出す際にシーケンシャルリードであるか否かを示す情報と、を対応付けて記憶部に記憶し、
前記読み出し要求されたデータの位置と、当該読み出し位置がシーケンシャルリードである旨を示す情報と、が前記記憶部に記憶されている場合に、前記不揮発性メモリからデータを読み出す間に、前記ヘッドを、前記不揮発性メモリから読み出されているデータの続きとなるデータが格納されている位置まで移動させる制御を行うこと、
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置、及び制御方法に関する。
【背景技術】
【０００２】
従来、大容量化とデータアクセスの高速化を両立させるため、磁気ディスクなどのストレージデバイスのキャッシュとして、ＮＡＮＤ型フラッシュメモリなどの半導体記憶媒体を使用したハイブリッドドライブがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２０９１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、ホストからのリード要求に対する応答速度を向上させる記憶装置、及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態の記憶装置は、不揮発性メモリと、磁気媒体と、ヘッドと、記憶部と、コントローラと、を備える。ヘッドは、磁気媒体からデータを読み出すための構成とする。記憶部は、不揮発性メモリに格納されたデータの位置及びサイズの情報と、当該データを読み出す際にシーケンシャルリードであるか否かを示す情報と、を対応付けて記憶する。コントローラは、読み出し要求されたデータの位置と、当該読み出し位置がシーケンシャルリードである旨を示す情報と、が記憶部に記憶されている場合に、不揮発性メモリからデータを読み出す間に、ヘッドを、不揮発性メモリから読み出されているデータの続きとなるデータが格納されている位置まで移動させる制御を行う。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態のデータ記憶装置の構成例を示すブロック図である。
【図２】図２は、第１の実施形態のキャッシュ情報記憶部のテーブル構造を例示した図である。
【図３】図３は、第１の実施形態のキャッシュ属性記憶部のテーブル構造を例示した図である。
【図４】図４は、第１の実施形態のＣＰＵが制御プログラムを実行した際に実現される各構成を例示した図である。
【図５】図５は、第１の実施形態のデータ記憶装置におけるＮＡＮＤメモリにキャッシュする処理の手順を例示したフローチャートである。
【図６】図６は、第１の実施形態のデータ記憶装置におけるデータの読み出し処理の手順を例示したフローチャートである。
【図７】図７は、第２の実施形態のキャッシュ情報記憶部のテーブル構造を例示した図である。
【図８】図８は、第２の実施形態の磁気媒体の状態に対応する、ヘッドのシークが可能になるまでに必要な動作を例示した図である。
【図９】図９は、第２の実施形態のデータ記憶装置における、磁気媒体の状態に応じた、データを読み出すまでの時間を例示した図である。
【発明を実施するための形態】
【０００７】
（第１の実施形態）
図１は、第１の実施形態のデータ記憶装置の構成例を示すブロック図である。図１の例に示されるように、データ記憶装置１００は、ホストＩ／Ｆ１０１と、バッファ１０２と、第１の信号処理部１０３と、ＮＡＮＤメモリ１０４と、第２の信号処理部１０５と、ヘッド１０６と、磁気記録媒体１０７と、リードライトチャネル１０８と、ＶＣＭ１０９と、スピンドルモータ１１０と、ドライバＩＣ１１１と、メインコントローラ１１２と、フラッシュメモリ１１３と、を備えている。
【０００８】
なお、ＮＡＮＤメモリ１０４は、磁気記録媒体１０７と比べて、データの読み出しが速く開始される。例えば、磁気記録媒体１０７が定常回転で回転中だったとしても、データを読み出すまでに、シーク（ヘッド１０６の移動時間）、及び回転待ち時間が必要となる。これに対して、ＮＡＮＤメモリ１０４は、シーク、及び回転待ち時間が不要なため、即座にデータの読み出しを開始できる。
【０００９】
ホストＩ／Ｆ１０１は、ホスト（不図示）との間のインタフェース規格に従った処理を実施する。例えば、ホストＩ／Ｆ１０１は、ホストから受信した命令、データなどをＨＤＣ１２１に出力する。また、ホストＩ／Ｆ１０１は、ＮＡＮＤメモリ１０４又は磁気記録媒体１０７から読み出されたデータ、ＨＤＣ１２１やＣＰＵ１２２からの応答などをホストへ送信する。
【００１０】
バッファ１０２は、ＮＡＮＤコントローラ１４２がホストから受信したデータをＮＡＮＤメモリ１０４へ記憶するまでに一時的に格納する。また、バッファ１０２は、ＮＡＮＤメモリ１０４から読み出したデータをホストに送信するまでに一時的に格納する。さらに、バッファ１０２は、磁気記録媒体１０７から読み出したデータをホストに送信又はＮＡＮＤメモリ１０４に格納するまでに一時的に格納する。バッファ１０２は、例えば、ＳＲＡＭ（Static  Random  Access  Memory）やＤＲＡＭ（Dynamic  Random  Access  Memory）などの汎用メモリで構成される。
【００１１】
第１の信号処理部１０３は、バッファ１０２からＮＡＮＤメモリ１０４に書き込まれるデータに対して、変換処理を施す。変換処理としては、例えばＤ／Ａ変換や符号化処理等がある。さらに、第１の信号処理部１０３は、ＮＡＮＤメモリ１０４から読み出された信号に対して、変換処理を施す。施す変換処理としては、例えばＡ／Ｄ変換や復号化処理等がある。
【００１２】
第２の信号処理部１０５は、磁気記録媒体１０７に書き込まれるデータに対して、変換処理を施す。変換処理としては、例えばＤ／Ａ変換や符号化処理等がある。さらに、第２の信号処理部１０５は、磁気記録媒体１０７から読み出された信号に対して、変換処理を施す。施す変換処理としては、例えばＡ／Ｄ変換や復号化処理等がある。さらに、第２の信号処理部１０５は、ヘッド１０６で読み出された信号の検出や、増幅を行っても良い。
【００１３】
ヘッド１０６は、磁気記録媒体１０７に対してデータを書き込むための構成である。また、ヘッド１０６は、磁気記録媒体１０７からデータを読み込むための構成である。
【００１４】
ＶＣＭ（ボイスコイルモータ）１０９は、磁気記録媒体１０７に対するヘッド１０６の位置決め制御に用いられる構成である。
【００１５】
磁気記録媒体１０７は、データの読み書き可能な磁気ディスクであり、複数設けられている。スピンドルモータ１１０は、磁気記録媒体１０７として設けられた複数の磁気ディスクを回転させる。
【００１６】
ドライバＩＣ１１１は、ＣＰＵ１１１の制御に従って、ＶＣＭ１０９の駆動を制御する。また、ドライバＩＣ１１１は、ＣＰＵ１１１の制御に従って、スピンドルモータ１１０の回転を制御する。
【００１７】
リードライトチャネル１０８は、ヘッド１０６とＨＤＣ１２１との間でデータの受け渡しを行う。例えば、リードライトチャネル１０８は、ＨＤＣ１２１から供給される、磁気記録媒体１０７に書き込むためのデータをコード変調し、第２の信号処理部１０５に供給する。また、リードライトチャネル１０８は、ヘッド１０６により磁気記録媒体１０７から読み取られ、第２の信号処理部１０５で変換されたデータをコード復調し、デジタルデータとしてＨＤＣ１２１に出力する。
【００１８】
ＮＡＮＤメモリ１０４は、データ領域と、管理領域と、に分けて構成されている。データ領域は、ホストまたは磁気記録媒体１０７からのデータをキャッシュする領域であって、高速にデータの読み出しを可能とする。管理領域は、ＮＡＮＤメモリ１０４のデータ領域を管理するための情報を記憶し、例えば、キャッシュ情報記憶部１３１と、キャッシュ属性記憶部１３２と、を備えている。すなわち、キャッシュ情報記憶部１３１およびキャッシュ属性記憶部１３２は、不揮発な記憶部に格納されている。
【００１９】
キャッシュ情報記憶部１３１は、ＮＡＮＤメモリ１０４に格納したデータに関する情報を記憶する。図２は、本実施形態のキャッシュ情報記憶部１３１に記憶された情報の構造を例示した図である。図２に示されるように、キャッシュ情報記憶部１３１は、ＬＢＡ（論理アドレス）と、ブロック（データのサイズ）と、属性と、を対応付けて記憶している。
【００２０】
ＬＢＡ（論理アドレス）は、ＮＡＮＤメモリ１０４に格納されたデータの、ホストで管理される論理アドレスにおけるデータの開始位置を示している。ブロックは、ＮＡＮＤメモリ１０４に格納されたデータのサイズを示している。属性は、当該データにアクセスする際にホストから受け取った命令の属性を示している。
【００２１】
例えば、キャッシュ情報記憶部１３１が、ＬＢＡ“1000h”、ブロック“2000h“、属性“シーケンシャルリード”を記憶している場合、開始アドレス（ＬＢＡ）“1000h”から、ブロック“2000h“分のデータがＮＡＮＤメモリ１０４に格納されていることを示している。
【００２２】
ところで、ランダムリードは、読み出すデータの位置が変更される毎に、シーク（ヘッド１０６の移動時間）、及び回転待ち時間が必要になる。これに対して、シーケンシャルリードは、一度シークし、回転待ちした後は、継続的にデータを読み取ることができる。このため、シーケンシャルリードは、回転待ちの後、データを比較的高速に読み出すことができる。
【００２３】
そこで、本実施形態では、シーケンシャルリードの場合、シーク、及び回転待ちに要する時間にホストへ転送可能な量のデータを、ＮＡＮＤメモリ１０４に格納することとした。つまり、ＣＰＵ１２２が、ドライバＩＣ１１１を介してヘッド１０６のシーク及び回転待ちをさせている間、ＮＡＮＤコントローラ１４２が、ＮＡＮＤメモリ１０４からデータを読み出す。そして、シーク、及び回転待ちが終了する際に、ＨＤＣ１２１が、ＣＰＵ１２２からの命令に従って、記憶媒体１０７から、ＮＡＮＤメモリ１０４から読み出したデータの続きを読み出す。これにより、シーケンシャルリードのデータの読み出しを高速にすると共に、ＮＡＮＤメモリ１０４に格納するデータ量を削減できるため、ＮＡＮＤメモリ１０４を有効に利用できる。
【００２４】
このため、キャッシュ情報記憶部１３１においては、ＮＡＮＤメモリ１０４に格納されたデータと、属性と、が対応付けられている。属性には、受け取った命令の属性として、少なくともシーケンシャルリードであるか否かを示す情報が設定されている。
【００２５】
図１に戻り、キャッシュ属性記憶部１３２は、ＮＡＮＤメモリ１０４に格納したデータに対して、実行するアクションを記憶する。図３は、キャッシュ属性記憶部１３２に記憶された情報の構造を例示した図である。図３に示されるように、キャッシュ属性記憶部１３２は、属性と、アクションと、を対応付けて記憶している。例えば、属性は、キャッシュ情報記憶部１３１の属性と同じものとする。つまり、ＮＡＮＤメモリ１０４からデータの読み出しが行われた際に、ＣＰＵ１２２は、当該データとキャッシュ情報記憶部１３１で対応付けられた属性を検索キーとして、キャッシュ属性記憶部１３２を検索する。検索後、ＣＰＵ１２２は、当該属性とキャッシュ属性記憶部１３２で対応付けられていたアクションを実行する。
【００２６】
ＳＯＣ１１２は、ＨＤＣ１２１と、ＣＰＵ１２２と、ＳＲＡＭ１２３と、を備えている。
【００２７】
ＨＤＣ１２１は、ＮＡＮＤコントローラ１４２を備え、ＣＰＵ１２２からの命令に従って、ホストＩ／Ｆ１０１を介してホストとの間で、データの送受信を制御する。また、ＨＤＣ１２１は、ＣＰＵ１２２からの命令に従って、リードライトチャネル１０８を用いた、記憶媒体１０７に対するデータの書き込み又は読み出し制御を行う。さらには、ＨＤＣ１２１は、バッファ１０２の制御、及び第２の信号処理部１０５を用いてデータの誤り訂正処理などを行う。
【００２８】
フラッシュメモリ１１３は、ＣＰＵ１２２が実行するためのプログラム等を格納する。例えば、フラッシュメモリ１１３は、制御プログラム１５１を格納している。
【００２９】
ＳＲＡＭ１２３は、コマンド履歴記憶部１４１を備えている。本実施形態では、コマンド履歴記憶部１４１をＳＲＡＭ１２３に格納する例について説明するが、コマンド履歴記憶部１４１の格納先をＳＲＡＭ１２３に制限するものではなく、例えばＤＲＡＭ等でも良い。
【００３０】
コマンド履歴記憶部１４１は、ホストＩ／Ｆ１０１が受信した命令（例えば読み出し要求、又は書き込み要求）の履歴を、当該命令のアクセス先の位置（データの開始位置）とともに記憶する。本実施形態のコマンド履歴記憶部１４１は、ホストから受信した命令（例えば、リード要求、ライト要求）と、アクセスするデータの開始位置（ＬＢＡ）と、読み出し又は書き込みされたブロック数と、命令を受信した時間と、を少なくとも対応付けて記憶している。
【００３１】
本実施形態では、ホストＩ／Ｆ１０１がホストから命令を受信する毎に、ＣＰＵ１２２が、コマンド履歴記憶部１４１に対して受信した命令に関する情報を登録する。コマンド履歴記憶部１４１は、命令毎に、命令を受信した時刻等が対応付けられているため、シーケンシャルにデータを読み出す要求か否かを判定できる。つまり、コマンド履歴記憶部１４１には、読み出し要求がなされたデータの開始位置と、当該読み出し要求がシーケンシャルリードであるか否かを特定可能な情報と、が記憶されている。
【００３２】
ＣＰＵ１２２は、データ記憶装置１００全体の制御を行う。例えば、ＣＰＵ１２２は、ドライバＩＣ１１１を介して、スピンドルモータ１１０を回転させる制御を行う。他の例としては、フラッシュメモリ１１３に記憶されている制御プログラム１５１を実行する。
【００３３】
図４は、ＣＰＵ１２２が制御プログラム１５１を実行した際に実現される各構成を例示した図である。図４に示されるように、ＣＰＵ１２２には、判定部４０１と、特定部４０２と、ＮＡＮＤメモリ指示部４０３と、磁気ディスク指示部４０４と、が構成される。
【００３４】
判定部４０１は、コマンド履歴記憶部１４１に格納された情報に基づいて、磁気記録媒体１０７に格納されたデータを、ＮＡＮＤメモリ１０４に格納（キャッシュ）するか否かを判別する。格納（キャッシュ）するか否かの基準は、周知を問わずどのような基準でも良いが、例えば、同一データに対して所定回数以上リード要求があった場合等とする。
【００３５】
特定部４０２は、キャッシュするデータにおける開始位置及びブロックを特定する。例えば、シーケンシャルリードが行われたデータをＮＡＮＤメモリ１０４にキャッシュする場合、特定部４０２は、シーケンシャルリードが行われるデータのうち、ヘッド１０６が磁気記録媒体１０７から読み出し開始できるまでの時間（例えば、シーク及び回転待ちに要する時間）に基づいて、ＮＡＮＤメモリ１０４から読み出すデータのブロックを特定する。また、特定部４０２は、シーケンシャルリードが行われるデータの開始位置を、キャッシュするデータの開始位置として特定する。
【００３６】
磁気ディスク指示部４０４は、ＨＤＣ１２１に対して、データの読み出し又は書き込みを指示する。例えば、磁気ディスク指示部４０４は、特定部４０２により特定されたデータの開始位置からブロック数分のデータを読み出すように指示する。
【００３７】
ＮＡＮＤメモリ指示部４０３は、ＮＡＮＤコントローラ１４２に対して、データの読み出し又は書き込みを指示する。例えば、ＮＡＮＤメモリ指示部４０３は、磁気ディスク指示部４０４の指示に従ってＨＤＣ１２１が読み出したデータを、ＮＡＮＤメモリ１０４に書き込むように、ＮＡＮＤコントローラ１４２に指示する。その際に、ＮＡＮＤメモリ指示部４０３は、ＮＡＮＤメモリ１０４に書き込んだデータに関する情報を、キャッシュ情報記憶部１３１に登録するように、ＮＡＮＤコントローラ１４２に指示する。
【００３８】
つまり、本実施形態のＣＰＵ１２２は、コマンド履歴記憶部１４１に基づいて、磁気記録媒体１０７に格納されているデータを、ＮＡＮＤメモリ１０４に書き込む。その際に、ＣＰＵ１２２は、キャッシュ情報記憶部１３１に、データの読み出し位置と、少なくともシーケンシャルリードであるか否かを示された属性と、を対応付けて登録する。
【００３９】
これにより、本実施形態は、シーケンシャルリードされるデータをＮＡＮＤメモリ１０４にキャッシュする場合、先頭の一部のデータのみをキャッシュすることができる。そして、ホストＩ／Ｆ１０１が、ホストからリード要求を受信した場合に、以下に示す処理を行う。
【００４０】
判定部４０１は、ホストＩ／Ｆ１０１で受信したリード要求に従って、読み出されるデータが、ＮＡＮＤメモリ１０４に格納されているか否かを判定する。本実施形態の判定部４０１は、キャッシュ情報記憶部１３１を参照して、読み出されるデータが、ＮＡＮＤメモリ１０４に格納されているか否かを判定する。さらに、判定部４０１は、キャッシュ情報記憶部１３１を参照して、リード要求がシーケンシャルリードの可能性が高いか否かを判定する。本実施形態では、読み出されるデータが、キャッシュ情報記憶部１３１で属性“シーケンシャルリード”と対応付けられている場合に、シーケンシャルリードの可能性が高いと判定する。
【００４１】
特定部４０２は、シーケンシャルリードの可能性が高いと判定された場合に、ＮＡＮＤメモリ１０４から読み出されたデータの続きとなるデータが格納された、磁気記録媒体１０７上のデータ開始位置（ＬＢＡ）を特定する。
【００４２】
ＮＡＮＤメモリ指示部４０３は、リード要求で読み出されるデータが、ＮＡＮＤメモリ１０４に格納されていると判断された場合に、当該データをＮＡＮＤメモリ１０４から読み出すように、ＮＡＮＤコントローラ１４２に指示する。
【００４３】
磁気ディスク指示部４０４は、リード要求で読み出されるデータが、ＮＡＮＤメモリ１０４に格納されていないと判断された場合に、当該データを磁気記録媒体１０７から読み出すように、ＨＤＣ１２１に指示する。
【００４４】
また、磁気ディスク指示部４０４は、リード要求で読み出されるデータが、ＮＡＮＤメモリ１０４に格納され、且つシーケンシャルリードの可能性が高いと判定された場合に、ＮＡＮＤメモリ１０４から読み出されたデータの続きを、磁気記録媒体１０７から読み出すように、ＨＤＣ１２１及びドライバＩＣ１１１を制御する。
【００４５】
よってＣＰＵ１２２が、ＮＡＮＤメモリ１０４からデータを読み出す処理の間に、ドライバＩＣ１１１を介して、ＮＡＮＤメモリ１０４から読み出されているデータの続きとなるデータの格納位置までヘッド１０６を移動させる制御を行う。移動制御の後、ＣＰＵ１２２は、ＨＤＣ１２１を介して、磁気記録媒体１０７からデータを読み込む制御を行う。本実施形態では、読み出し要求されたデータの読み出し位置が、キャッシュ情報記憶部１３１に記憶され、当該読み出し位置がキャッシュ情報記憶部１３１で“シーケンシャルリード”と対応付けられている場合に、当該移動制御及び読み込む制御が行われる。
【００４６】
次に、本実施形態のデータ記憶装置１００におけるＮＡＮＤメモリ１０４にキャッシュする処理について説明する。図５は、本実施形態のデータ記憶装置１００における上述した処理の手順を例示したフローチャートである。
【００４７】
まず、ＣＰＵ１２２の判定部４０１が、コマンド履歴記憶部１４１に記憶されたリード要求の履歴を解析する（処理Ｓ５０１）。次に、判定部４０１は、ＮＡＮＤメモリ１０４に保存すべきリード要求の履歴があるか否かを判定する（処理Ｓ５０２）。履歴がない場合（処理Ｓ５０２：Ｎｏ）、処理Ｓ５０８に遷移する。
【００４８】
一方、履歴があると判定した場合（処理Ｓ５０２：Ｙｅｓ）、ＣＰＵ１２２の特定部４０２が、シーク、及び回転待ちに要する時間を取得する（処理Ｓ５０３）。なお、本実施形態は、磁気記録媒体１０７からデータを読み出す際の平均シーク時間、及び平均回転待ち時間の合計を、シーク、及び回転待ちに要する時間に用いる例とする。なお、本実施形態は、シーク、及び回転待ちに要する時間を、平均シーク時間、及び平均回転待ち時間の合計に制限するものではなく、例えば、最大シーク時間、及び最大回転待ち時間の合計でもよい。
【００４９】
そして、特定部４０２が、取得したシーク、及び回転待ちに要する時間で、ＮＡＮＤメモリ１０４から読み出させるデータのブロック数を特定する（処理Ｓ５０４）。
【００５０】
次に、ＣＰＵ１２２の磁気ディスク指示部４０４が、磁気記録媒体１０７から、特定されたブロック数分のデータを、リード要求の開始位置から読み出すよう、ＨＤＣ１２１に指示する（処理Ｓ５０５）。
【００５１】
そして、ＣＰＵ１２２のＮＡＮＤメモリ指示部４０３が、読み出したデータをＮＡＮＤメモリ１０４に保存するよう、ＮＡＮＤコントローラ１４２に指示する（処理Ｓ５０６）。
【００５２】
ＣＰＵ１２２のＮＡＮＤメモリ指示部４０３が、保存したデータに関する情報を、キャッシュ情報記憶部１３１に保存するよう、ＮＡＮＤコントローラ１４２に指示する（処理Ｓ５０７）。ＮＡＮＤメモリ指示部４０３は、保存したデータの磁気記録媒体１０７上の読み出し開始位置（ＬＢＡ）と、保存したデータのブロック（長）と、当該データの読み出しを行った命令の属性と、を対応付けて、キャッシュ情報記憶部１３１に記憶する。なお、属性としては、例えば、当該命令がシーケンシャルリードであったか否かを示す情報が少なくとも含まれる。
【００５３】
その後、判定部４０１は、コマンド履歴記憶部１４１に記憶された全ての履歴の解析が終了したか否かを判定する（処理Ｓ５０８）。全ての履歴の解析が終了していないと判定した場合（処理Ｓ５０８：Ｎｏ）、処理Ｓ５０１から再び行う。判定部４０１が、全ての履歴の解析が終了したと判定した場合（処理Ｓ５０８：Ｙｅｓ）、処理を終了する。
【００５４】
次に、本実施形態のデータ記憶装置１００におけるデータの読み出し処理について説明する。図６は、本実施形態のデータ記憶装置１００における上述した処理の手順を例示したフローチャートである。
【００５５】
まず、ホストＩ／Ｆ１０１が、ホストから、データの読み出し要求を受信する（処理Ｓ６０１）。次に、ＣＰＵ１２２のＮＡＮＤメモリ指示部４０３が、キャッシュ情報記憶部１３１に対する、読み出し要求されたデータの検索を、ＮＡＮＤコントローラ１４２に要求する（処理Ｓ６０２）。そして、判定部４０１が、検索結果に基づいて、ＮＡＮＤメモリ１０４に読み出し要求されたデータがあるか否かを判定する（処理Ｓ６０３）。
【００５６】
読み出し要求されたデータがＮＡＮＤメモリ１０４にないと判定した場合（処理Ｓ６０３：Ｎｏ）、特定部４０２が、磁気記録媒体１０７上のデータの読み出し開始位置（ＬＢＡ）を特定する（処理Ｓ６０４）。そして、ドライバＩＣ１１１が、ＣＰＵ１２２からの要求に従って、読み出すための準備を開始する。
【００５７】
ドライバＩＣ１１１は、スピンドルモータ１１０が停止中か否かを判定する（処理Ｓ６０５）。停止中ではないと判定した場合（処理Ｓ６０５：Ｎｏ）、処理Ｓ６０７に遷移する。一方、停止中と判定した場合（処理Ｓ６０５：Ｙｅｓ）、ドライバＩＣ１１１は、スピンドルモータ１１０の起動制御を行う（処理Ｓ６０６）。
【００５８】
次に、ドライバＩＣ１１１は、ヘッド１０６がアンロードされているか否かを判定する（処理Ｓ６０７）。アンロードされていないと判定した場合（処理Ｓ６０７：Ｎｏ）、処理Ｓ６０９に遷移する。一方、アンロードされていると判定された場合（処理Ｓ６０７：Ｙｅｓ）、ドライバＩＣ１１１は、ヘッド１０６をロードする（処理Ｓ６０８）。
【００５９】
その後、ドライバＩＣ１１１は、特定された読み出し開始位置（ＬＢＡ）までヘッド１０６のシークを行う（処理Ｓ６０９）。そして、ＨＤＣ１２１が、ＣＰＵ１２２に従って、読み出し要求されたデータを、磁気記録媒体１０７から読み出す（処理Ｓ６１０）。
【００６０】
一方、読み出し要求されたデータがＮＡＮＤメモリ１０４にあると判定した場合（処理Ｓ６０３：Ｙｅｓ）、ＮＡＮＤメモリ指示部４０３が、ＮＡＮＤメモリ１０４からデータの読み出しを開始するように、ＮＡＮＤコントローラ１４２に指示する（処理Ｓ６１１）。
【００６１】
次に、判定部４０１が、読み出しが開始されたデータと対応付けられた属性がシーケンシャルリードであるか否かを判定する（処理Ｓ６１２）。シーケンシャルリードではないと判定した場合（処理Ｓ６１２：Ｎｏ）、処理を終了する。
【００６２】
一方、判定部４０１が、シーケンシャルリードであると判定した場合（処理Ｓ６１２：Ｙｅｓ）、特定部４０２は、ＮＡＮＤメモリ１０４から読み出しているデータの続きとなる、磁気記録媒体１０７上のデータの読み出し開始位置を特定する（処理Ｓ６１３）。特定手法としては、例えば、キャッシュ情報記憶部１３１に記憶されたデータの読み出し開始位置と、対応付けられたブロック分だけ後のアドレスを、データ開始位置として特定する。そして、ドライバＩＣ１１１が、ＣＰＵ１２２からの要求に従って、読み出すための準備を開始する。そして、処理Ｓ６０５〜処理Ｓ６１０と同様の処理手順で、データの読み出しが行われる（処理Ｓ６１４〜Ｓ６１９）。
【００６３】
本実施形態のデータ記憶装置１００においては、リード要求のうち、シーケンシャルリードを学習する。例えば、ＮＡＮＤメモリ１０４にキャッシュする時は、先頭の一部のみをキャッシュする。その際に、ＮＡＮＤメモリ指示部４０３は、キャッシュ情報記憶部１３１に対して、キャッシュしたデータに、シーケンシャルリードである（シーケンシャルリードが継続する）旨を示した属性を対応付けて登録する。キャッシュされたデータを読み出す際、当該データに属性“シーケンシャルリード”が対応付けて登録されている場合、ＮＡＮＤメモリ１０４からリードしている間に、ＮＡＮＤメモリ１０４にキャッシュされたデータが無くなる位置に、ヘッド１０６を移動させる。
【００６４】
なお、本実施形態のデータ記憶装置１００においては、磁気記録媒体１０７のデータをＮＡＮＤメモリ１０４にキャッシュするタイミングを制限するものではなく、例えば、データ記憶装置１００がアイドル時間中に行うなどが考えられる。
【００６５】
（第２の実施形態）
第１の実施形態では、ＮＡＮＤメモリ１０４にデータをキャッシュする際に、少なくともシーケンシャルリードであるか否かを含む属性を対応付ける例について説明した。しかしながら、読み出すデータと対応付ける情報を、属性に制限するものではなく、他の条件に基づいてＮＡＮＤメモリ１０４に格納するデータの長さを決めても良い。
【００６６】
そこで、第２の実施形態では、キャッシュ情報記憶部１３１において、読み出すデータと、ＨＤＤの状態を対応付けた例について説明する。
【００６７】
本実施形態は、ＮＡＮＤメモリ１０４に格納されたキャッシュ情報記憶部１３１の構成と、コマンド履歴記憶部１４１の構成と、を除いて、第１の実施形態と同様の構成を備えているものとして、各構成の説明を省略する。
【００６８】
図７は、本実施形態のキャッシュ情報記憶部１３１のテーブル構造を例示した図である。図７に示されるように、本実施形態のキャッシュ情報記憶部１３１は、ＬＢＡと、ブロックと、属性と、ＨＤＤの状態と、を対応付けて記憶している。本実施形態のキャッシュ情報記憶部１３１は、第１の実施形態のキャッシュ情報記憶部１３１と比べて、ＨＤＤの状態が対応付けられている。
【００６９】
ＨＤＤの状態は、対応付けられたデータの読み出し要求を受信した際の磁気記録媒体１０７の状態とする。つまり、本実施形態では、ホストＩ／Ｆ１０１が命令を受信した際、ＣＰＵ１２２が、コマンド履歴として、命令を受信した際の磁気記録媒体１０７の状態を、当該命令に関する情報と対応付けて、コマンド履歴記憶部１４１に記憶する。
【００７０】
そして、コマンド履歴記憶部１４１に基づいてデータをＮＡＮＤメモリ１０４にキャッシュする際に、ＮＡＮＤコントローラ１４２は、ＨＤＤの状態を、キャッシュするデータと対応付けてキャッシュ情報記憶部１３１に記憶しておく。
【００７１】
ところで、磁気記録媒体１０７（ＨＤＤ）の状態に応じて、データの読み出しが開始できるまでに必要な動作が異なる。図８は、磁気記録媒体１０７（ＨＤＤ）の状態に対応する、ヘッド１０６のシークが可能になるまでに必要な動作を例示した図である。図８に示されるように、磁気記録媒体１０７（ＨＤＤ）及びヘッド１０６のいずれかの動作状態としては、“スピンドルモータの停止”、“ヘッドが待避エリア”、及び“定常回転”がある。
【００７２】
“スピンドルモータの停止”とは、磁気記録媒体１０７に含まれる磁気ディスクの回転が停止し、ヘッド１０６がランプと呼ばれる退避エリアにある動作状態である。図８に示されるように、スピンドルモータ１１０が停止の場合、スピンドルモータ１１０を起動し、定常回転させる。その後、ヘッド１０６を磁気記録媒体１０７の磁気ディスク上に移動（浮上）させる動作（ヘッドロード）を行う必要がある。
【００７３】
“ヘッドが待避エリア”とは、スピンドルモータ１１０は回転し、ヘッド１０６が退避エリアにある動作状態である。図８に示されるように、ヘッド１０６が待避エリアの場合、ヘッドロードを行う必要がある。
【００７４】
“定常回転”は、スピンドルモータ１１０は回転し、磁気ヘッドは磁気媒体上にある動作状態である。図８に示されるように、定常回転の場合、即座にヘッド１０６のシーク、及び回転待ちに移行できる。
【００７５】
図９は、本実施形態のデータ記憶装置１００における、磁気記録媒体１０７の状態に応じた、データを読み出すまでの時間を例示した図である。図９の（Ａ）に示されるように、“スピンドルモータ１１０の停止”の時には、データを読み出すまで、1600ms(スピンドルモータ起動)＋600ms(ヘッドロード)＋15ms(シーク)＋5ms（回転待ち）＝2220msの時間を要する。このため、ＣＰＵ１２２は、ＮＡＮＤメモリ１０４に、2220msで読み出し可能なデータを格納しておく。このように、特定部４０２は、スピンドルモータ１１０が停止している時、スピンドルモータ１１０の起動時間、及びヘッド１０６が磁気記録媒体１０７に移動するまでの時間を見積もって、ＮＡＮＤメモリ１０４にキャッシュする量を特定する。
【００７６】
図９の（Ｂ）に示されるように、“アンロード”の時には、データを読み出すまで、600ms(ヘッドロード)＋15ms(シーク)＋5ms（回転待ち）＝620msの時間を要する。このため、ＣＰＵ１２２は、ＮＡＮＤメモリ１０４に、620msで読み出し可能なデータを格納しておく。このように、特定部４０２は、ヘッド１０６が退避エリアにある時、ヘッド１０６が磁気記録媒体１０７に移動するまでの時間を見積もって、ＮＡＮＤメモリ１０４にキャッシュする量を特定する。
【００７７】
図９の（Ｃ）に示されるように、“定常回転”の時には、データを読み出すまで、15ms(シーク)＋5ms（回転待ち）＝20msの時間を要する。このため、ＣＰＵ１２２は、ＮＡＮＤメモリ１０４に、20msで読み出し可能なデータを格納しておく。
【００７８】
このように、本実施形態のＣＰＵ１２２は、リードコマンドを受信した際の磁気記録媒体１０７及びヘッド１０６の状態（換言すればコマンド履歴記憶部１４１に記憶されたコマンド受信時の磁気記録媒体１０７及びヘッド１０６の状態）に応じて、ＮＡＮＤメモリ１０４に書き込むデータの長さを異ならせる。
【００７９】
例えば、“スピンドルモータ１１０の停止”、及び“ヘッド１０６が待避エリア”では、“定常回転”と比べて、ＮＡＮＤメモリ１０４にキャッシュとして記録するデータ量が多くなる。
【００８０】
このように、本実施形態のＮＡＮＤメモリ１０４は、データをキャッシュする際、当該データの読み出し要求がきた際に、当該読み出し要求に関する属性と共に、磁気記録媒体１０７等の状態も対応付けて、キャッシュ情報記憶部１３１に記憶する。なお、データの読み出し時に行う処理は、第１の実施形態と同様として説明を省略する。
【００８１】
上述した実施形態では、キャッシュ情報記憶部が、データの読み出し位置及びサイズと、シーケンシャルリードであるか否かを示す情報と、を対応付けて記憶している。これにより、ホストＩ／Ｆ１０１がデータの読み出し要求を受信した際に、当該データがシーケンシャルリードである可能性が高いか否かを判定できる。従って、ホストＩ／Ｆ１０１がデータの読み出し要求を受信した際に、シーケンシャルリードの可能性が高いと判定した場合に、ＣＰＵ１２２が、ＮＡＮＤメモリ１０４からデータを読み込んでいる間に、ヘッド１０６を読み込まれているデータの続きの位置まで移動させることが可能となる。これにより、シーケンシャルリードの場合に応答速度の向上を図ることができる。
【００８２】
上述した実施形態のデータ記憶装置１００においては、コマンド履歴の中から今後リード要求がありそうなデータをディスクから読出し、ＮＡＮＤメモリ１０４に保存している。また、シーケンシャルリードする場合に、ヘッド１０６がデータを読み出すまでの時間に対応したデータ量を、ＮＡＮＤメモリ１０４に格納している。これにより、ＮＡＮＤメモリ１０４を書き込み回数の削減と、ＮＡＮＤメモリ１０４の容量を有効に利用することができる。これにより、ＮＡＮＤメモリ１０４の劣化を抑止すると共に、ヒット率の向上を実現できる。また、シーケンシャルリードが行われる際に、即座にデータの読み出しが可能なため、応答速度の向上を図ることができる。
【００８３】
つまり、上述した実施形態では、シーケンシャルリード時には、ＮＡＮＤメモリ１０４からデータを読み込んだ後に、継続して磁気記録媒体１０７のデータの読み込みにつなげることができるため、読み出しが途切れることのないシーケンシャルリードを実現できる。従って、ＮＡＮＤメモリ１０４の記憶容量を抑えつつ、性能の維持、向上を図ることができる。
【００８４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８５】
１００…データ記憶装置、１０１…ホストＩ／Ｆ、１０２…バッファ、１０３…第１の信号処理部、１０４…ＮＡＮＤメモリ、１０５…第２の信号処理部、１０６…ヘッド、１０７…磁気記録媒体、１０８…リードライトチャネル、１０９…ＶＣＭ、１１０…スピンドルモータ、１１１…ドライバＩＣ、１１２…ＳＯＣ、１１３…フラッシュメモリ、１２１…ＨＤＣ、１２２…ＣＰＵ、１２３…ＳＲＡＭ、１３１…キャッシュ情報記憶部、１３２…キャッシュ属性記憶部、１４１…コマンド履歴記憶部、１４２…ＮＡＮＤコントローラ、１５１…制御プログラム、４０１…判定部、４０２…特定部、４０３…ＮＡＮＤメモリ指示部、４０４…磁気ディスク指示部。
【図１】
2016021271.tif 000003
【図２】
2016021271.tif 000004
【図３】
2016021271.tif 000005
【図４】
2016021271.tif 000006
【図５】
2016021271.tif 000007
【図６】
2016021271.tif 000008
【図７】
2016021271.tif 000009
【図８】
2016021271.tif 000010
【図９】
2016021271.tif 000011