(57)【要約】【課題】容量とアクセス速度とを両立できるデータストレージ装置を提供すること。【解決手段】実施形態によれば、データストレージ装置は、磁気記憶装置と、不揮発性ソリッドステートデバイスと、第１モードと第２モードで動作可能なコントローラとを具備する。不揮発性ソリッドステートデバイスは、データストレージ装置のためのキャッシュを含む。コントローラは、キャッシュヒット率が所定のしきい値未満であることが検知される場合、第１モードから第２モードに動作を切り替えるように構成されている。【選択図】図４
2015191654.tif 000002
【特許請求の範囲】
【請求項１】
磁気記憶装置と、
不揮発性ソリッドステートデバイスと、
第１モードと第２モードで動作可能なコントローラと、
を具備するデータストレージ装置であって、
前記不揮発性ソリッドステートデバイスは、前記データストレージ装置のためのキャッシュを含み、
前記コントローラは、キャッシュヒット率が所定のしきい値未満であることが検知される場合、第１モードから第２モードに動作を切り替えるデータストレージ装置。
【請求項２】
前記コントローラは、前記不揮発性ソリッドステートデバイスに関連する磨耗の測定値が所定の磨耗レベルを超えると、前記所定のしきい値を増加する請求項１記載のデータストレージ装置。
【請求項３】
前記コントローラは、ホストから受信し、キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総数の一部に基づいて前記キャッシュヒット率を計算する請求項１記載のデータストレージ装置。
【請求項４】
前記コントローラは、ホストから受信し、キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総量の一部に基づいて前記キャッシュヒット率を計算する請求項１記載のデータストレージ装置。
【請求項５】
前記第１モードは、ホストから受信したライトデータの実質的に全てをキャッシュに書き込むことと、ホストにより要求され、前記磁気記憶装置から読み出されたリードデータの本質的に全てをコピーすることとを具備する請求項１記載のデータストレージ装置。
【請求項６】
前記第２モードは、ホストからシーケンシャルライトストリームを受信した場合、該シーケンシャルライトストリームの所定の第１のサイズを有する最初の部分をキャッシュに書き込むことと、ホストからシーケンシャルリードストリームを受信した場合、該シーケンシャルリードストリームの所定の第２のサイズを有する最初の部分をキャッシュに書き込むことと、を具備する請求項１記載のデータストレージ装置。
【請求項７】
前記第１のサイズは前記第２のサイズ未満である請求項６記載のデータストレージ装置。
【請求項８】
前記コントローラは、前記第２モードで動作する場合、
ホストから受信するリードコマンドとライトコマンドの仮想キャッシュであって、キャッシュと実質的に等しいサイズであり、ホストから受信した最近のリードコマンドとライトコマンドに関連するメタデータを格納する仮想キャッシュを維持することと、
仮想キャッシュに対するキャッシュヒットに基づいて仮想キャッシュヒット率を計算することと、
仮想キャッシュヒット率が所定のしきい値以上であると検知された場合、前記第２モードから前記第１モードへ動作を切替えることと、
を具備する請求項６記載のデータストレージ装置。
【請求項９】
前記コントローラは、ホストから受信し、仮想キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総数の一部分に基づいて前記仮想キャッシュヒット率を計算する請求項８記載のデータストレージ装置。
【請求項１０】
前記コントローラは、ホストから受信し、仮想キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総量の一部分に基づいて前記仮想キャッシュヒット率を計算する請求項８記載のデータストレージ装置。
【請求項１１】
磁気記憶装置と、不揮発性ソリッドステートデバイスとを含むストレージデバイスを２つの動作モードのうちの少なくとも１つで動作させるための方法であって、
前記不揮発性ソリッドステートデバイスは前記ストレージデバイスのキャッシュを含み、
前記ストレージデバイスにアクセスするためのコマンドをホストから受信することと、
セットされた動作モードに応じてコマンドを実行することと、
を具備し、
キャッシュヒット率が所定の第１のしきい値未満であると検知された場合、第１モードがセットされ、キャッシュヒット率が所定の第２のしきい値以上であると検知された場合、第２モードがセットされる方法。
【請求項１２】
前記第１のしきい値は前記第２のしきい値未満である請求項１１記載の方法。
【請求項１３】
前記不揮発性ソリッドステートデバイスに関連する磨耗の測定値が所定の磨耗レベルを超えると、前記第１および第２のしきい値を増加することをさらに具備する請求項１１記載の方法。
【請求項１４】
前記ホストから受信し、キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総数の一部に基づいて前記キャッシュヒット率を計算することをさらに具備する請求項１１記載の方法。
【請求項１５】
前記ホストから受信し、キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総量の一部に基づいて前記キャッシュヒット率を計算することをさらに具備する請求項１１記載の方法。
【請求項１６】
前記第１モードは、ホストから受信したライトデータの実質的に全てをキャッシュに書き込むことと、ホストにより要求され、前記磁気記憶装置から読み出されたリードデータの本質的に全てをコピーする請求項１１の方法。
【請求項１７】
前記第２モードは、ホストからシーケンシャルライトストリームを受信した場合、該シーケンシャルライトストリームの所定の第１のサイズを有する最初の部分をキャッシュに書き込むことと、ホストからシーケンシャルリードストリームを受信した場合、該シーケンシャルリードストリームの所定の第２のサイズを有する最初の部分をキャッシュに書き込むことと、を具備する請求項１１の方法。
【請求項１８】
前記第２モードで動作する場合、
ホストから受信するリードコマンドとライトコマンドの仮想キャッシュであって、キャッシュと実質的に等しいサイズであり、ホストから受信した最近のリードコマンドとライトコマンドに関連するメタデータを格納する仮想キャッシュを維持することと、
仮想キャッシュに対するキャッシュヒットに基づいて仮想キャッシュヒット率を計算することと、
仮想キャッシュヒット率が所定のしきい値以上であると検知された場合、前記第２モードから前記第１モードへ動作を切替えることと、
を具備する請求項１１記載の方法。
【請求項１９】
ホストから受信し、仮想キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総数の一部分に基づいて仮想キャッシュヒット率を計算することをさらに具備する請求項１１記載の方法。
【請求項２０】
ホストから受信し、仮想キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総量の一部分に基づいて仮想キャッシュヒット率を計算することをさらに具備する請求項１１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データストレージ装置及び方法に関する。
【背景技術】
【０００２】
ハイブリッドハードディスクドライブ（ＨＤＤ）は、不揮発性ソリッドステートメモリ（例えばフラッシュメモリ）と組み合わされる１枚または複数枚の回転する磁気ディスクを含んでいる。一般に、ハイブリッドＨＤＤは、従来のＨＤＤの容量、およびソリッドステートドライブと同じくらい速くデータにアクセスする能力の両方を持っている。この理由で、ハイブリッドドライブはラップトップコンピュータで使用するために良く適する。例えば、ハイブリッドドライブ中の不揮発性ソリッドステートメモリはハイブリッドドライブのための非常に大きいキャッシュとして使用されてもよい。その結果、最も頻繁にアクセスされる、及び／または、最も最近にアクセスされるハイブリッドドライブ中のデータは、磁気ディスクへのアクセスに関連するレイテンシィ無くドライブから検索されることができる。ハイブリッドドライブ中の不揮発性ソリッドステートメモリをキャッシュとして応用するための種々のキャッシングポリシーが知られている。各々のキャッシングポリシーは利点と欠点を有する。
【０００３】
ハイブリッドドライブ用の１つのキャッシングポリシーは、ホストから送信されたライトデータの殆ど全てをドライブの不揮発性ソリッドステートメモリに書き込むことと、磁気記憶装置から読み出されたデータの殆ど全てをドライブの不揮発性ソリッドステートメモリにコピーすることを含む。したがって、ある方法でホストによって最近アクセスされた本質的に全てのデータはドライブの不揮発性ソリッドステートメモリ中にキャッシュされる。ユーザによってアクセスされたデータの全てあるいは殆どの範囲がドライブの不揮発性ソリッドステートメモリに格納され得る場合、すなわち、ユーザが小さいフットプリントを持っている場合、そのようなキャッシングポリシーはハイブリッドドライブに関して典型的に高機能となる。
【０００４】
ハイブリッドドライブ用の別のキャッシングポリシーは、ホストから受信したシーケンシャルライトストリームあるいはシーケンシャルリードストリームの最初の部分だけをキャッシュに格納することを含んでいる。例えば、ホストから受信した各シーケンシャルライトストリームの最初の１ＭＢ、あるいは各シーケンシャルリードストリームの最初の２ＭＢが、ドライブの不揮発性ソリッドステートメモリに格納されてもよい。一方、シーケンシャルリードあるいはライトストリームの残りの部分は、ドライブの磁気ディスク上に格納される。ユーザが前に記述した「全てをキャッシュする」キャッシングポリシーに比べて小さいフットプリントを持っている場合、そのようなキャッシングポリシーは典型的により低いパフォーマンスとなる。ホストにより最近アクセスされたデータの一部分のみがドライブの不揮発性ソリッドステートメモリに格納されることは、磁気ディスクへのより頻繁なアクセスとなる。しかしながら、そのようなキャッシングポリシーは、ユーザによって頻繁にアクセスされるデータの範囲がドライブの不揮発性ソリッドステートメモリの容量を著しく超える場合、「全てをキャッシュする」キャッシングポリシーに比べて一般的にパフォーマンスを改善する。これは、ユーザがキャッシュサイズに比べて大きいフットプリントを有する場合、ホストからのリードストリームあるいはライトストリームの全てを格納する試みは、キャッシュヒットを満足するために使用される前に、キャッシュの内容が最も最近にアクセスされたデータに置き換えられる、所謂チャーン（ｃｈｕｒｎ）となるからである。キャッシュをチャーンすることは、ドライブの性能を著しく改善することなく、ドライブの不揮発性ソリッドステートメモリの磨耗に著しく寄与する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１１／０１３８１０６号明細書
【特許文献２】米国特許出願公開第２０１３／０１６６８１６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のデータストレージ装置は、容量とアクセス速度の両立が困難であるという課題がある。
【０００７】
本発明の目的は、容量とアクセス速度とを両立できるデータストレージ装置及び方法を提供することである。
【課題を解決するための手段】
【０００８】
１または複数の実施形態が、磁気記憶媒体および不揮発性ソリッドステートデバイスを含んでいるハイブリッドドライブ中のマルチモード・キャッシングポリシーについてのシステムと方法を供給する。ハイブリッドドライブはマルチモードで動作可能であり、ホストからのデータアクセスの履歴に依存して、多数のモード間の動作を切り替えるように構成される。
【０００９】
実施形態によれば、データストレージ装置は、磁気記憶媒体と、不揮発性ソリッドステートデバイスと、コントローラとを含む。１つの実施形態では、コントローラは第１モードおよび第２モードで動作可能で、キャッシュヒット率が所定のしきい値未満であることが検出される場合に、動作を第１モードから第２モードに切り替えるように構成される。
【００１０】
さらなる実施形態は、磁気記憶装置と、不揮発性ソリッドステートデバイスとを具備するストレージ装置であって、不揮発性ソリッドステートデバイスはデータストレージ装置のためのキャッシュを含んでいるストレージ装置を２つの動作モードの少なくとも１つの動作モードで動作する方法を提供する。方法は、ストレージデバイスにアクセスするためのコマンドをホストから受信するステップと、セットされた動作モードに従ってコマンドを実行するステップとを含む。
【００１１】
キャッシュヒット率が所定の第１のしきい値未満であることを検知される場合、第１の動作モードはセットされる。キャッシュヒット率が所定の第２のしきい値以上であることを検知される場合、第２の動作モードがセットされる。
【図面の簡単な説明】
【００１２】
【図１】１つの実施形態に従う典型的なディスクドライブの概略図である。
【図２】図２は、実施形態に従って示された電子回路の要素を備えたハイブリッドドライブの動作図を示す。
【図３】図３は、実施形態に従って図１のハイブリッドドライブのフラッシュメモリデバイスに含まれたキャッシュに関連したデータ構造の概略図である。
【図４】図４は、１または複数の実施形態に従って、磁気ドライブおよび不揮発性のソリッドステートドライブを含んでいるデータストレージ装置のリード動作を行なうための方法ステップを示すフローチャートである。
【図５】図５は、１または複数の実施形態に従って、磁気ドライブおよび不揮発性のソリッドステートドライブを含んでいるデータストレージ装置のライト動作を行なうための方法ステップを示すフローチャートである。
【図６】図６は、１または複数の実施形態に従って、磁気記憶装置と、不揮発性ソリッドステートデバイスとを具備するストレージ装置であって、不揮発性ソリッドステートデバイスはデータストレージ装置のためのキャッシュを含んでいるストレージ装置を２つの動作モードの少なくとも１つの動作モードで動作する方法ステップを示すフローチャートである。
【発明を実施するための形態】
【００１３】
図１は１つの実施形態に従う典型的なディスクドライブについての概略図である。明瞭さのため、ハイブリッドドライブ１００はトップカバー無しで例証される。ハイブリッドドライブ１００は、スピンドルモータ１１４によって回転し、複数の同心のデータストレージトラックを含んでいる少なくとも１つの記憶ディスク１１０を含んでいる。スピンドルモータ１１４はベースプレート１１６にマウントされる。アクチュエーターアームアッセンブリ１２０もベースプレート１１６にマウントされる。アクチュエーターアームアッセンブリ１２０は、データストレージトラックに対してデータをリード／ライトするリード／ライトヘッド１２７を伴い湾曲アーム１２２にマウントされたスライダー１２１を有する。湾曲アーム１２２は、ベアリングアッセンブリ１２６の周りを回転するアクチュエータアーム１２４に付けられている。
【００１４】
ボイスコイルモータ１２８は、記憶ディスク１１０に関してスライダー１２１を移動させて、それによって、記憶ディスク１１０の表面１１２に配置された所望の同心のデータストレージトラックの上にリード／ライトヘッド１２７を位置決めする。スピンドルモータ１１４、リード／ライトヘッド１２７およびボイスコイルモータ１２８は、電子回路１３０に接続される。
【００１５】
電子回路１３０はプリント回路板１３２にマウントされる。電子回路１３０はリード／ライトチャネル１３７、マイクロプロセサに基づいたコントローラ１３３、ランダムアクセスメモリ（ＲＡＭ）１３４（それらはダイナミックＲＡＭであってもよく、データバッファとして使用される）および／またはフラッシュメモリデバイス１３５およびフラッシュマネージャデバイス１３６を含んでいる。
【００１６】
いくつかの実施形態では、フラッシュマネージャデバイス１３６、リード／ライトチャネル１３７および／またはマイクロプロセサに基づいたコントローラ１３３は、システム・オン・チップ１３１のようなシングルチップに含まれている。
【００１７】
いくつかの実施形態では、ハイブリッドドライブ１００は、モータドライバチップ１２５を含んでいてもよい。モータドライバチップ１２５は、マイクロプロセサに基づいたコントローラ１３３からコマンドを受信し、スピンドルモータ１１４およびボイスコイルモータ１２８の両方を駆動する。
【００１８】
明瞭さのため、ハイブリッドドライブ１００は、単一の記憶ディスク１１０および単一のアクチュエーターアームアッセンブリ１２０で例証される。ハイブリッドドライブ１００はさらに多数の記憶ディスクおよび多数のアクチュエータアームアセンブリを含んでいてもよい。さらに、記憶ディスク１１０の各面は湾曲アームに接続されるリード／ライトヘッドに関連してもよい。
【００１９】
データが記憶ディスク１１０に、あるいは記憶ディスク１１０から転送される場合、アクチュエーターアームアッセンブリ１２０は記憶ディスク１１０の外径（ＯＤ）と内径（ＩＤ）との間の弧を動く。アクチュエーターアームアッセンブリ１２０は、電流がボイスコイルモータ１２８の１つのボイスコイルを通して１つの方向に流れると、１つの角度方向に加速し、電流が反転すると、反対の角度方向に加速し、よって、記憶ディスク１１０に関するアクチュエーターアームアッセンブリ１２０と、取り付けられているリード／ライトヘッド１２７の位置制御を許可する。
【００２０】
ボイスコイルモータ１２８は、特定のデータストレージトラックの上にリード／ライトヘッド１２７の位置を決定するために、リード／ライトヘッド１２７によって記憶ディスク１１０のサーボウェッジから読まれたポジショニングデータを使用する周知のサーボシステムと接続される。サーボシステムは、ボイスコイルモータ１２８のボイスコイルを通して駆動するために適切な電流を決定し、および電流ドライバおよび関連する回路類を使用して、上記電流を駆動する。
【００２１】
ハイブリッドドライブ１００はハイブリッドドライブとして構成され、通常の動作では、データは記憶ディスク１１０および／またはフラッシュメモリデバイス１３５に格納し、ディスクおよび／またはデバイスから検索することができる。ハイブリッドドライブでは、フラッシュメモリデバイス１３５のような不揮発性のメモリは、電力消費量を低下するとともに、より速いブート、ハイバーネーション、リジューム、その他のデータリード・ライト動作を提供するために、回転する記憶ディスク１１０を補う。
【００２２】
その目的のために、フラッシュメモリデバイス１３５の大部分は、ハイブリッドドライブ１００のためのキャッシュとして構成されてもよい。キャッシュは、ホストにより最も頻繁におよび／または最も最近にアクセスされたデータを、たとえそのようなデータが記憶ディスク１１０に格納されていたとしても、格納する。そのようなハイブリッドドライブ構成は、モバイルコンピュータあるいは他のモバイルコンピューティング装置のようなバッテリ駆動のコンピュータシステムには特に有利である。
【００２３】
実施形態では、フラッシュメモリデバイスは、電気的に消去され再プログラムすることができ、そして、不揮発性のストレージ媒体としてハイブリッドドライブ１００中の記憶ディスク１１０を補うサイズを有するＮＡＮＤフラッシュチップのような不揮発性のソリッドステートストレージ媒体である。例えば、いくつかの実施形態では、フラッシュメモリデバイス１３５にはＲＡＭ１３４より大きいデータ記憶容量がある（例えば、ギガバイト（ＧＢ）対メガバイト（ＭＢ））。
【００２４】
図２は、実施形態に従って示された電子回路１３０の要素を備えたハイブリッドドライブ１００の動作図を示す。示されるように、ハイブリッドドライブ１００はＲＡＭ１３４、フラッシュメモリデバイス１３５、フラッシュマネージャデバイス１３６、システム・オン・チップ１３１および高速データパス１３８を含んでいる。ハイブリッドドライブ１００は、シリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）バスのようなホストインターフェース２０経由でホストコンピュータのようなホスト１０に接続される。
【００２５】
図２に例証された実施形態では、フラッシュマネージャデバイス１３６は高速データパス１３８とフラッシュメモリデバイス１３５とのインターフェースを制御し、ＮＡＮＤインターフェースバス１３９を介してフラッシュメモリデバイス１３５に接続される。システム・オン・チップ１３１はハイブリッドドライブ１００の動作制御のためにマイクロプロセサに基づいたコントローラ１３３および他のハードウェア（リード／ライトチャネル１３７を含む）を含んでおり、高速データパス１３８を介してＲＡＭ１３４およびフラッシュマネージャデバイス１３６に接続される。他の実施形態では、フラッシュマネージャデバイス１３５はシステム・オン・チップ１３１の一部として形成されてもよい。
【００２６】
マイクロプロセサに基づいたコントローラ１３３は、ＡＲＭマイクロプロセッサ、ハイブリッドドライブコントローラおよびハイブリッドドライブ１００内の任意のコントロール回路類のようなマイクロコントローラを含んでいてもよい制御ユニットである。高速データパス１３８は、ダブル・データ・レート（ＤＤＲ）バス、ＤＤＲ２バス、ＤＤＲ３バスなどの既知の高速バスである。
【００２７】
上述したように、フラッシュメモリデバイス１３５のうちのいくらかあるいは大部分は、ホスト１０によって最も頻繁におよび／または最も最近にアクセスされ、ハイブリッドドライブ１００内のデータを格納するハイブリッドドライブ１００のためのキャッシュとして構成されてもよい。そのようなデータは一般にホスト１０によって再び要求される可能性が大きいデータであり、フラッシュメモリデバイス１３５に格納されると、記憶ディスク１１０から検索されるデータよりも、より速く、より少ないエネルギー消費でホスト１０に提供することができる。
【００２８】
フラッシュメモリデバイス１３５がハイブリッドドライブ１００のためのキャッシュとして構成される場合、ハイブリッドドライブ１００は、フラッシュメモリデバイス１３５に格納される論理ブロックアドレス（ＬＢＡ）（つまり、ホスト１０によって最も頻繁に、最も最近にアクセスされたＬＢＡ）をフラッシュメモリデバイス１３５内の物理的な位置（メモリブロック）にマッピングするデータ構造１３５Ａを含んでいる。
【００２９】
図２に例証された実施形態では、データ構造１３５Ａはフラッシュマネージャデバイス１３６に含まれている。しかし、他の実施形態では、データ構造１３５Ａは、コントローラ１３３あるいはフラッシュメモリデバイス１３５自身のように、ハイブリッドドライブ１００の異なるコンポーネントの一部として構成されてもよい。
【００３０】
データ構造１３５Ａの１つの実施形態は図３に例証される。図３は、実施形態に従ってフラッシュメモリデバイス１３５に含まれたキャッシュに関連したデータ構造１３５Ａの図である。データ構造１３５Ａは、フラッシュメモリデバイス１３５に格納された各々のキャッシュ・エントリー３０１を、キャッシュ・エントリーが格納されるフラッシュメモリデバイス１３５中の特別の物理的な位置３０２へマッピングする関連アレイか関連マップのようなデータ構造である。各々のキャッシュ・エントリー３０１は、記憶ディスク１１０へのアクセスを減少するかあるいは省くためにキャッシュとしてフラッシュメモリデバイス１３５に格納される１つ以上のＬＢＡを含んでおり、それによって、パフォーマンスを改善し、ハイブリッドドライブ１００のエネルギー消費を減少する。
【００３１】
図３に例証された実施形態では、キャッシュ・エントリー（それは５１２バイトの単一セクターに対応してもよい）はそれぞれ、物理的な位置３０２へマッピングされる。
【００３２】
他の実施形態では、一つのキャッシュ・エントリー３０１は、６４の５１２バイトのセクタ（つまり３２ｋＢスペース）のようなはるかに大きいスペースに対応してもよい。そのような実施形態では、キャッシュ・エントリー３０１はそれぞれ、４ｋＢの解像度を持ち、したがって、８つの４ｋＢブロックのステータスを説明することができる。したがって、キャッシュ・エントリー３０１はそれぞれ開始アドレス（４ｋＢブロック単位）と８つの４ｋＢブロックの各々の「有効な」ビットを含んでいてもよい。開示の範囲を超えない範囲で、データ構造１３５Ａの他の構成が使用されてもよい。
【００３３】
いくつかの実施形態では、削除（eviction）スキームは、データ構造１３５Ａの動作と協力するマイクロプロセサに基づいたコントローラ１３３あるいはフラッシュマネージャデバイス１３６によって使用される。
【００３４】
削除スキームは、フラッシュメモリデバイス１３５からのデータの系統的な除去を促進する。その結果、最も過去に使用された（ＬＲＵ）データ、最も使用頻度が少ない（ＬＦＵ）データ、あるいは両方のコンビネーションのデータは、データ構造１３５Ａから追い出され、関連するデータは、フラッシュメモリデバイス１３５から取り除かれる。
【００３５】
このように、ホスト１０によって再びアクセスされる可能性が高く、ホスト１０によって以前にアクセスされた、ハイブリッドドライブ１００中のデータは、キャッシュにある。また、ホスト１０によって再びアクセスされる可能性の低いデータはキャッシュから取り除かれる。そのような実施形態では、付加的なデータ構造１３５Ｂが、マイクロプロセサに基づいたコントローラ１３３、フラッシュマネージャデバイス１３６あるいはフラッシュメモリデバイス１３５のいずれかに含まれていてもよい。
【００３６】
付加的なデータ構造１３５Ｂは、キャッシュ・エントリー３０１の使用頻度、キャッシュ・エントリー３０１の使用の最近性、および／または両方のコンビネーションを追跡するように構成される。例えば、付加的なデータ構造１３５Ｂは、各々のキャッシュ・エントリー３０１の相対的な最近性を追跡するためのダブルリンクリスト、および各々のキャッシュ・エントリー３０１の相対的な使用頻度を追跡するためのダブルリンクリストを含んでいてもよい。
【００３７】
いくつかの実施形態では、データ構造１３５Ａおよび付加的な構造１３５Ｂは単一のデータ構造として組み合わせられる。
【００３８】
いくつかの実施形態では、ゴースト・データ構造１３５Ｃは、マイクロプロセサに基づいたコントローラ１３３、フラッシュマネージャデバイス１３６あるいはフラッシュメモリデバイス１３５のいずれかに含まれていてもよい。
【００３９】
ハイブリッドドライブ１００が大きいフットプリントモードで動作している間に、ゴースト・データ構造１３５Ｃは、図６と共に下記に述べられた手続きによって仮想キャッシュ・エントリーの頻度および／または最近性を追跡するように構成される。
【００４０】
従って、ゴースト・データ構造１３５Ｃはデータ構造１３５Ａと同じサイズおよび構成を本質的に持っている。
【００４１】
しかしながら、フラッシュメモリデバイス１３５に格納されたＬＢＡ（および関連するデータ）をフラッシュメモリデバイス１３５中の物理的な位置へマッピングするのではなく、ゴースト・データ構造１３５ＣはＬＢＡをフラッシュメモリデバイス１３５中の仮想位置へマッピングする。そのようなマッピングは、もしハイブリッドドライブ１００が小さいフットプリントモードで動作していれば、どの物理的な位置がマップされたＬＢＡに関連したデータによって占められていたであろうことに基づいてもよい。
【００４２】
したがって、リード、ライトコマンドがホスト１０から受信されるので、リードコマンド、ライトコマンドに関連するＬＢＡは、ゴースト・データ構造１３５Ｃのキャッシュ・エントリとして入力され、付加的なキャッシュエントリを許可するためにゴースト・データ構造１３５Ｃに付加的なスペースが必要な場合、適切な削除スキームに従って除去される。
【００４３】
いくつかの実施形態によれば、マイクロプロセッサ・コントローラ１３３は多数のモードで動作可能で、ホスト１０からのデータ・アクセスの履歴に依存して、多数のモード間のオペレーションを切り替えるように構成される。例えば、ホスト１０によってアクセスされたデータの全てまたはほとんどの範囲をフラッシュメモリデバイス１３５中のキャッシュに格納することができる場合、マイクロプロセッサ・コントローラ１３３は、フラッシュメモリデバイス１３５中のキャッシュに関してホストが小さいフットプリントを持っていることを決定し、第１モードで動作するように構成される。
【００４４】
反対に、ホスト１０によって高頻度、最近にアクセスされたデータの範囲がフラッシュメモリデバイス１３５のキャッシュのサイズをかなり超える場合、マイクロプロセッサ・コントローラ１３３は、フラッシュメモリデバイス１３５中のキャッシュに関してホストが大きいフットプリントを持っていることを決定し、第２モードで動作するように構成される。
【００４５】
したがって、マイクロプロセッサ・コントローラ１３３は、フラッシュメモリデバイス１３５中のキャッシュのサイズに関するホストのフットプリントのサイズに依存して異なるモードで動作する。
【００４６】
いくつかの実施形態では、小さいフットプリントがあるホストに関連した動作モードは、ホスト１０からのライトコマンドに含まれるＬＢＡに関連する実質的に全てのデータをキャッシュ（フラッシュメモリデバイス１３５）に格納することともに、そのようなＬＡＢをデータ構造１３５および／または付加的なデータ構造１３５Ｂ中にエンターすることを含んでいてもよい。
【００４７】
さらに、この動作モードは、ホスト１０からのリードコマンドに応答して記憶ディスク１１０から読み出された実質的に全てのデータをキャッシュに格納することを含んでいてもよい。
【００４８】
ホスト１０によってアクセスされたデータの殆ど、あるいは実質的に全てがキャッシュに格納することができる場合、そのような動作モードは一般に高機能を促進する。
【００４９】
ホスト１０の小さいフットプリントモードの別の例では、より大きいストリーム限界ＮおよびＭ（大きいフットプリントモードのために下記に述べられた）は大きいフットプリントモードのストリーム限界ＮおよびＭに関連して定義される。
【００５０】
いくつかの実施形態では、大きいフットプリントに関連した動作モードは、ホスト１０から受信した個々のシーケンシャルライトストリームの最初の部分をキャッシュに書き込むことを含んでいてもよい。例えば、個々のシーケンシャルライトストリームの最初の“Ｍ”ＭＢ（例えば１ＭＢ、５ＭＢなど）はキャッシュに書き込まれ、ライトストリームの残りはディスクに書き込まれてもよい。
【００５１】
さらに、この動作モードは、ホスト１０から受信した個々のシーケンシャルリードストリームの最初の部分に関連するデータをキャッシュに書き込むことを含んでいてもよい。
【００５２】
例えば、個々のシーケンシャルリードストリームのＬＢＡに関連したデータの最初の“Ｎ  Ｍ”Ｂ（例えば５ＭＢ、１０ＭＢなど）は、キャッシュ（つまりフラッシュメモリデバイス１３５）に既に格納されているＬＢＡに関連するデータを除いて、キャッシュに書き込まれてもよい。
【００５３】
ホスト１０がキャッシュに比べて大きいフットプリントを含む場合、そのような動作モードは、他の動作モードに比べて改善されたパフォーマンスを一般的に促進する。
【００５４】
他の実施形態では、ハイブリッドドライブ１００用の他の技術的に実現可能な動作モードも、ホスト１０の大きいフットプリントに関係しているかもしれない。例えば、大きいフットプリントモードで動作する間に、ハイブリッドドライブ１００は、ホスト１０から受信し、それに関連するデータはフラッシュメモリデバイス１３５に既に格納されているＬＢＡとオーバラップするＬＢＡと関連するライトコマンド内のライトデータを、フラッシュメモリデバイス１３５に格納するように構成されてもよい。
【００５５】
いくつかの実施形態中で、Ｎ＝Ｍである場合、その結果、キャッシュに書き込まれた個々のシーケンシャルリードストリームの最初の部分は、キャッシュに書き込まれた個々のシーケンシャルライトストリームの最初の部分と本質的に等しい。
【００５６】
他の実施形態中で、Ｎ＞Ｍである場合、その結果、個々のシーケンシャルライトストリームの部分よりも大きい個々のシーケンシャルリードストリームの部分はキャッシュに書き込まれる。記憶ディスク１１０へのアクセスがハイブリッドドライブ１００中のそのようなキャッシュ・ミスに一般に起因するので、リード動作中のキャッシュ・ミスが性能に著しく影響を与えることが注目される。従って、Ｎ＞Ｍの実施形態は、リードストリームの格納のために使用されるキャッシュの部分を増加させる傾向がある、それは、一般に将来のリード動作中のキャッシュ・ミスの可能性を減少させる。
【００５７】
いくつかの実施形態では、マイクロプロセッサ・コントローラ１３３は、上に記述された小さいフットプリントの動作モードおよび大きいフットプリントの動作モードよりも追加の動作モードにおいて動作可能かもしれない。
【００５８】
例えば、マイクロプロセッサ・コントローラ１３３は、上記モードの異なるコンビネーションである１または複数の中間のモードで動作可能かもしれない。中間のモードは、推定されたホストのフットプリントサイズに基づいて選択される。そのような実施形態のいくつかでは、ＭとＮの値は固定しなくてもよい。例えば、ホスト１０が小さいフットプリントを持つと決定された場合、ハイブリッドドライブ１００は、個々のシーケンシャルライトストリームの最初の部分がキャッシュに書き込まれ、個々のシーケンシャルリードストリームの最初の部分がキャッシュに書き込まれる動作モードに設定されてもよい。そこでは、ＭとＮの値は、ホスト１０のフットプリントのサイズの関数として変化してもよい。
【００５９】
図４は、１または複数の実施形態に従って、磁気ドライブと不揮発性ソリッドステートドライブとを含むハイブリッドドライブ１００のようなデータストレージ装置のリード動作を行なうための方法ステップのフローチャートを示す。方法ステップは図１〜図３のハイブリッドドライブ１００と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ１３３によって行なわれると下に記述するが、方法ステップの制御アルゴリズムは、マイクロプロセサに基づいたコントローラ１３３、フラッシュマネージャデバイス１３６あるいはハイブリッドドライブ１００に関連した他の適切な制御回路かシステムによって行なわれてもよい。
【００６０】
方法４００はステップ４０１で始まる。ステップ４０１では、マイクロプロセサに基づいたコントローラ１３３はホスト１０からリードコマンドを受信する。受信したリードコマンドは、シーケンシャルリードストリーム（つまりリードストリームを構築するリードコマンドがシーケンシャルＬＢＡのグループを形成するリードストリーム）の始まり、あるいはシーケンシャルリードストリームの後の部分かもしれない。いくつかの実施形態では、マイクロプロセサに基づいたコントローラ１３３はＲＡＭ１３４へリードコマンドを受信する。
【００６１】
ステップ４０２で、マイクロプロセサに基づいたコントローラ１３３は、ハイブリッドドライブ１００がどのモードで現在動作しているかチェックする。ハイブリッドドライブ１００が小さいフットプリントモードで現在動作していることをマイクロプロセサに基づいたコントローラ１３３が決定する場合、方法４００はステップ４０３に移る。ハイブリッドドライブ１００が大きいフットプリントモードで現在動作していることをマイクロプロセサに基づいたコントローラ１３３が決定する場合、方法４００はステップ４１１に移る。
【００６２】
いくつかの実施形態では、ステップ４０２の決定は、キャッシュヒット率に基づいてなされる。キャッシュヒット率は、キャッシュのキャッシュヒットに対応する、ホスト１０から受信したリードコマンドとライトコマンドの総数の一部分に基づく。キャッシュヒット率が例えば９５％未満に下がる場合、ハイブリッドドライブ１００は大きいフットプリント動作に切り替えられる。
【００６３】
いくつかの実施形態では、キャッシュヒット率は「キャッシュミスとなる、ホスト１０から受信したリードおよび／またはライトコマンドの割合を１から減算」して計算されてもよい（リードおよび／またはライトコマンドに関するデータの少なくともいくつかがフラッシュメモリデバイス１３５に格納されていない場合、記憶ディスク１１０へのアクセスとなる）。そのような実施形態中で、リードおよび／またはライトコマンドの比は、所定時間に亘ってホスト１０から受信されたリードおよび／またはライトコマンドに基づいてもよい。
【００６４】
他の実施形態では、キャッシュヒット率は、キャッシュ内のキャッシュヒットに対応する、ホスト１０から受信したリードコマンドとライトコマンドに関係するデータの総量の一部分に基づいてもよい。例えば、いくつかの実施形態では、キャッシュヒット率は、「キャッシュミスに対応する、ホスト１０から受信したリードおよび／またはライトコマンドの総量の割合を１から減算」して計算されてもよい。
【００６５】
上に記述されるようなキャッシュヒット率が使用される実施形態では、キャッシュヒット率が所定のしきい値以上である場合に、ホスト１０は小さいフットプリントを持つと決定されてもよい。反対に、キャッシュヒット率が所定のしきい値未満である場合に、ホスト１０は大きいフットプリントを持つと決定されてもよい。
【００６６】
更に、いくつかの実施形態では、所定のしきい値は、フラッシュメモリデバイス１３５によって著しい磨耗（wear）が経験された場合等のある状況の下で変更されてもよい。そのような実施形態では、所定のしきい値は増加され、その結果、ホスト１０は、ホスト１０によってアクセスされたデータの全て、あるいは実質的に全てがフラッシュメモリデバイスに格納することができる場合、小さいフットプリントを持つと考えられてもよい。
【００６７】
このように、大きいフットプリントモードが使用される動作条件を拡大することにより、磨耗はフラッシュメモリデバイス１３５上で遅延することができる。一般に、ホスト１０がハイブリッドドライブ１００に関してどのフットプリントサイズを現在持っているかという決定は、方法４００に先立って典型的に行なわれる。
【００６８】
図４に例証された実施形態では、ハイブリッドドライブ１００は小さいフットプリントモードと大きいフットプリントモードの２つのモードのうちの１つで作動するように構成される。小さいフットプリントモードでは、所定にわたってホスト１０によってアクセスされた全てあるいはほとんどのデータの範囲は、キャッシュのために取っておかれたフラッシュメモリデバイス１３５の部分より小さい。大きいフットプリントモードでは、所定期間にわたってホスト１０によってアクセスされた全てあるいはほとんどのデータの範囲は、キャッシュのために取っておかれたフラッシュメモリデバイス１３５の部分より大きい。
【００６９】
他の実施形態では、ハイブリッドドライブ１００は小さいフットプリントモードと大きいフットプリントモードの間の中間のモードのような追加の動作モードで作動するように構成されてもよい。
【００７０】
ステップ４０３で、マイクロプロセサに基づいたコントローラ１３３は、ステップ４０１で受信したリードコマンドに含まれているＬＢＡに関連したデータをリードさせ、ホスト１０にこのデータを供給する。このデータは、ＲＡＭ１３４（これらのＬＢＡがホスト１０によって最近アクセスされた場合のように）、フラッシュメモリデバイス１３５のキャッシュ、および／または記憶ディスク１１０に位置されてもよい。
【００７１】
いくつかの実施形態では、マイクロプロセサに基づいたコントローラ１３３は、リードコマンドに含まれたＬＢＡのために最初にＲＡＭ１３４をチェックし、次にフラッシュメモリデバイス１３５（例えばデータ構造１３５Ａにより）、最後に記憶ディスク１１０をチェックしてもよい。
【００７２】
いくつかの実施形態では、マイクロプロセサに基づいたコントローラ１３３は、ホスト１０による変更された最近のアクセスおよび／または頻度の高いアクセスをリードコマンドに含まれたＬＢＡへ反映するために付加的なデータ構造１３５Ｂを更新する。
【００７３】
ステップ４０４で、マイクロプロセサに基づいたコントローラ１３３は、ステップ４０３で読まれたＬＢＡをフラッシュメモリデバイス１３５に配置されたキャッシュへ書き込ませる。
【００７４】
いくつかの実施形態では、ステップ４０３でフラッシュメモリデバイス１３５から読み込まれたＬＢＡはフラッシュメモリデバイス１３５に既に格納されているので、ステップ４０４でキャッシュに書き込まれない。
【００７５】
ステップ４１１で、マイクロプロセサに基づいたコントローラ１３３は、ステップ４０１で受信したリードコマンドの最初のＬＢＡがシーケンシャルリードストリームに関連したデータの最初の部分内にあるデータに対応するかどうか判断する。ここで、シーケンシャルリードストリームに関連したデータの最初の部分は、所定のサイズを有する。例えば、シーケンシャルリードストリームに関連したデータの最初の部分は、所定のサイズＮを有してもよい、ここで、Ｎ＝１ＭＢ、５ＭＢ、１０ＭＢ等である。したがって、ステップ４０１で受信したリードコマンドの最初のＬＢＡが、ホスト１０から現在受信しているシーケンシャルリードストリームに関連したデータの最初の“Ｎ”ＭＢの内にあるデータを含んでいる場合、方法４００はステップ４０３に移る。
【００７６】
ステップ４０１で受信したリードコマンドの最初のＬＢＡがホスト１０から現在受信しているシーケンシャルリードストリームに関連したデータの最初の“Ｎ”ＭＢの内にあるデータに関係していないことをマイクロプロセサに基づいたコントローラ１３３が決めると、方法４００はステップ４１２に移る。
【００７７】
他の実施形態では、ステップ４１１で、マイクロプロセサに基づいたコントローラ１３３は、ステップ４０１で受信したリードコマンドの他の特定のＬＢＡ、例えば最後のＬＢＡ、中央のＬＢＡあるいはリードコマンドに含まれた他のＬＢＡが、シーケンシャルリードストリームの最初の部分内にあるデータに関係しているかどうか判断してもよい。
【００７８】
さらに別の実施形態では、ステップ４１１で、マイクロプロセサに基づいたコントローラ１３３は、ステップ４０１で受信したリードコマンドの全てのＬＢＡが、シーケンシャルリードストリームの最初の部分内にあるデータに関係しているかどうか判断してもよい。
【００７９】
ステップ４１２で、マイクロプロセサに基づいたコントローラ１３３は、ステップ４０１で受信したリードコマンドに含まれたＬＢＡに関連したデータを読み込ませ、ホスト１０にこのデータを供給する。ステップ４０３に記述されたものと類似の実施形態はステップ４１２で実行されてもよい。
【００８０】
図５は、１または複数の実施形態に従って、磁気ドライブと不揮発性ソリッドステートドライブとを含むハイブリッドドライブ１００のようなデータストレージ装置でライト動作を実行するための方法ステップのフローチャートを示す。方法ステップは図１〜図３のハイブリッドドライブ１００と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ１３３によって行なわれると下に記述するが、方法ステップの制御アルゴリズムは、マイクロプロセサに基づいたコントローラ１３３、フラッシュマネージャデバイス１３６あるいはハイブリッドドライブ１００に関連した他の適切な制御回路かシステムによって行なわれてもよい。
【００８１】
方法５００はステップ５０１で始まる。ステップ５０１では、マイクロプロセサに基づいたコントローラ１３３はホスト１０からライトコマンドを受信する。ライトコマンドは、ＬＢＡと、ＬＡＢに対応しハイブリッドドライブ１００に格納されるべきデータとを含む。このように受信したライトコマンドは、シーケンシャルライトストリーム（つまりライトストリームを構築するライトコマンドが連続する（シーケンシャル）ＬＢＡのグループを形成するライトストリーム）の始まり、あるいはシーケンシャルライトストリームの後の部分かもしれない。
【００８２】
いくつかの実施形態では、マイクロプロセサに基づいたコントローラ１３３はＲＡＭ１３４へ受信したライトコマンドを書き込む。
【００８３】
ステップ５０２で、マイクロプロセサに基づいたコントローラ１３３は、ハイブリッドドライブ１００がどのモードで現在作動しているかチェックする。ハイブリッドドライブ１００が小さいフットプリントモードで現在作動していることをマイクロプロセサに基づいたコントローラ１３３が決める場合、方法５００はステップ５０３に移る。
【００８４】
ハイブリッドドライブ１００が大きいフットプリントモードで現在作動していることをマイクロプロセサに基づいたコントローラ１３３が決める場合、方法５００はステップ５１１に移る。
【００８５】
方法４００のステップ４０２に記述されたものに類似している実施形態は、ホスト１００がハイブリッドドライブ１００に関してどのフットプリントサイズを現在有するかを決める方法５００に先立って実行されてもよい。
【００８６】
図５に例証された実施形態では、ハイブリッドドライブ１００は小さいフットプリントモードと大きいフットプリントモードの２つのモードのうちの１つで動作するように構成される。
【００８７】
他の実施形態では、ハイブリッドドライブ１００は小さいフットプリントモードと大きいフットプリントモードの間の中間のモードのような追加の動作モードで動作するように構成されてもよい。
【００８８】
ステップ５０３で、マイクロプロセサに基づいたコントローラ１３３は、ステップ５０１で受信したライトコマンドに含まれるＬＢＡをフラッシュメモリデバイス１３５に書き込ませる。
【００８９】
いくつかの実施形態では、マイクロプロセサに基づいたコントローラ１３３は、ホスト１０による変更された最近のアクセスおよび／または頻度の高いアクセスをライトコマンドに含まれるＬＢＡへ反映するために付加的なデータ構造１３５Ｂを更新する。
【００９０】
いくつかの実施形態では、ステップ５０１で受信したライトコマンドに含まれたＬＢＡをフラッシュメモリデバイス１３５へ書き込む前に削除および／またはガーベジコレクション手続きがフラッシュメモリデバイス１３５で行なわれてもよい。
【００９１】
ステップ５１１で、マイクロプロセサに基づいたコントローラ１３３は、ステップ５０１で受信したライトコマンドの最初のＬＢＡ、あるいはいくつかの実施形態では全てのＬＢＡが、ホスト１０から現在受信しているシーケンシャルライトストリームの最初の部分内にあり、受信したライトコマンドを含んでいるデータに対応するか否か決定する。ここで、シーケンシャルライトストリームの最初の部分は所定のサイズを有する。例えば、シーケンシャルライトストリームの最初の部分は、所定のサイズ“Ｍ”を有していてもよい。ここで、Ｍ＝０．５ＭＢ、１ＭＢ、２ＭＢ等である。
【００９２】
したがって、ステップ５０１で受信したライトコマンドの最初のＬＢＡが、ホスト１０から現在受信しているシーケンシャルライトストリームの最初の“Ｍ”ＭＢの内にあるデータを含んでいる場合、方法５００はステップ５０３に移る。
【００９３】
ステップ５０１で受信したライトコマンドの最初のＬＢＡがホスト１０から現在受信しているシーケンシャルライトストリームの最初の“Ｍ”ＭＢの内にあるデータに関係していないことをマイクロプロセサに基づいたコントローラ１３３が決めると、方法５００はステップ５１２に移る。
【００９４】
他の実施形態では、ステップ５１１で、マイクロプロセサに基づいたコントローラ１３３は、ステップ５０１で受信したライトコマンドの他の特定のＬＢＡ（最後のＬＢＡ、中央のＬＢＡあるいはライトコマンドの他のＬＢＡ等）が、シーケンシャルライトストリームの最初の部分内にあるデータに対応するかどうか判断してもよい。
【００９５】
ステップ５１２で、マイクロプロセサに基づいたコントローラ１３３は、ステップ５０１で受信したライトコマンドに含まれるＬＢＡに関連したデータを記憶ディスク１１０に書き込ませる。
【００９６】
図６は、１または複数の実施形態に従って、磁気記憶装置と不揮発性ソリッドステートデバイスとを含むストレージデバイスであって、不揮発性ソリッドステートデバイスはストレージデバイスのキャッシュを含むストレージデバイスで２つの動作モードの少なくとも１つで動作するための方法ステップのフローチャートを示す。方法ステップは図１〜図３のハイブリッドドライブ１００と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ１３３によって行なわれると下に記述するが、方法ステップの制御アルゴリズムは、マイクロプロセサに基づいたコントローラ１３３、フラッシュマネージャデバイス１３６あるいはハイブリッドドライブ１００に関連した他の適切な制御回路かシステムによって行なわれてもよい。
【００９７】
図示のように、方法６００はステップ６０１で始まる。ステップ６０１では、マイクロプロセサに基づいたコントローラ１３３は、ハイブリッドドライブ１００の現在の動作モードに基づいて、フラッシュメモリデバイス１３５のためのキャッシュヒット率あるいは仮想キャッシュヒット率のいずれかを決定する。
【００９８】
特に、ハイブリッドドライブ１００が小さいフットプリントモードである場合、ステップ６０１でキャッシュヒット率が決定される。また、ハイブリッドドライブ１００が大きいフットプリントモードである場合、ステップ６０１で仮想キャッシュヒット率が決定される。
【００９９】
いくつかの実施形態では、キャッシュ内のキャッシュヒットに対応する、ホスト１０から受信したリードコマンドとライトコマンドの総数の一部分に基づいて決定されてもよい。例えば、ホスト１０から受信し、フラッシュメモリデバイス１３５に現在格納されるデータに関連したＬＢＡ（つまりデータ構造１３５Ａの中の現在のエントリーであるＬＢＡ）だけを含んでいるリードコマンドあるいはライトコマンドはキャッシュヒット率をインクリメントする。反対に、フラッシュメモリデバイス１３５に格納されていないデータに関連した少なくとも１つのＬＢＡ（つまりデータ構造１３５Ａの中の現在のエントリーではないＬＢＡ）を含んでいるリードコマンドあるいはライトコマンドはキャッシュヒット率をディクリメントする。
【０１００】
他の実施形態では、キャッシュヒット率は、ホスト１０から受信し、キャッシュ内のキャッシュヒットに対応するリードコマンドあるいはライトコマンドに関連するデータの総量の一部分に基づいてもよい。
【０１０１】
いくつかの実施形態では、仮想キャッシュヒット率は、上に記述されて、キャッシュヒット率を決定するために使用される手続きに類似する手続きを使用して決定されてもよい。しかしながら、キャッシュヒット率と異なり、ハイブリッドドライブ１００が大きいフットプリントモードで動作する場合のみ、仮想キャッシュヒット率は一般に決定される。
【０１０２】
更に、キャッシュヒット率は、どのＬＢＡおよび関連するデータがフラッシュメモリデバイス１３５に実際に格納されるかに基づいて（例えば、データ構造１３５Ａを使用して）決定されるが、仮想キャッシュヒット率は、もしハイブリッドドライブ１００が小さいフットプリントモードで動作していれば、どのＬＢＡおよび関連するデータがフラッシュメモリデバイス１３５に格納されるかに基づいて（例えば、ゴースト・データ構造１３５Ｃを使用して）決定される。
【０１０３】
したがって、いくつかの実施形態では、ゴースト・データ構造１３５Ｃは、リードコマンドあるいはライトコマンドに含まれるどのＬＢＡが仮想キャッシュヒットあるいは仮想キャッシュミスを構成するかを決定するために使用されてもよい。
【０１０４】
ステップ６０２で、マイクロプロセサに基づいたコントローラ１３３は、ステップ６０１で計算されたキャッシュヒット率（あるいは仮想のキャッシュヒット率）が所定のしきい値（例えば９０％、９５％など）より高いかどうか判断する。ハイブリッドドライブ１００が小さいフットプリントモードである場合、マイクロプロセサに基づいたコントローラ１３３はステップ６０２でキャッシュヒット率を決定する。ハイブリッドドライブ１００が大きいフットプリントモードである場合、マイクロプロセサに基づいたコントローラ１３３はステップ６０２で仮想キャッシュヒット率を決定する。
【０１０５】
キャッシュヒット率（あるいは仮想のキャッシュヒット率）が所定のしきい値を越える場合、方法６００はステップ６０３に移る。キャッシュヒット率（あるいは仮想のキャッシュヒット率）が所定のしきい値未満である場合、方法６００はステップ６０４に移る。
【０１０６】
いくつかの実施形態では、ステップ６０２で第１、第２の所定のしきい値が使用されてもよい。具体的には、キャッシュヒット率が第１の所定のしきい値以上であることが検知される場合、第１の動作モード（例えば小さいフットプリントモード）がセットされる。また、キャッシュヒット率が第２の所定のしきい値未満であることが検知される場合、第２の動作モード（例えば大きいフットプリントモード）がセットされる。そのような実施形態では、第１の所定のしきい値は第２の所定のしきい値より大きい。その結果、ホスト１０が小さいフットプリント動作および大きいフットプリント動作の間のスイッチオーバー・ポイントに近いフットプリントを有する場合、ハイブリッドドライブ１００は２つの動作モードの間で繰り返し切り替えることをしない。
【０１０７】
ステップ６０３で、マイクロプロセサに基づいたコントローラ１３３はハイブリッドドライブ１００を小さいフットプリントモードで動作させる。
【０１０８】
ステップ６０４で、マイクロプロセサに基づいたコントローラ１３３はハイブリッドドライブ１００を大きいフットプリントモードで動作させる。
【０１０９】
ステップ６１１で、マイクロプロセサに基づいたコントローラ１３３はホスト１０からハイブリッドドライブ１００にアクセスするためにコマンドを受信する。そのリクエストはリードコマンドあるいはライトコマンドかもしれない。
【０１１０】
ステップ６１２で、マイクロプロセサに基づいたコントローラ１３３は、現在セットされているオペレーションモード（例えば小さいフットプリントモード、大きいフットプリントモード）に従ってコマンドを実行する。
【０１１１】
要するに、ここに記述された実施形態は、磁気記憶装置と不揮発性ソリッドステートデバイスを含むストレージデバイスであって、不揮発性ソリッドステートデバイスはストレージデバイスのためのキャッシュを含むストレージデバイスを２つの動作モードの少なくとも１つで動作するためのシステムと方法を提供する。ストレージデバイスは、ホストからのデータ・アクセスの履歴に依存して、多数の動作モード間の動作を切り替えるように構成される。好都合に、ホストが不揮発性ソリッドステートデバイスのサイズに比べて小さいフットプリントあるいは大きいフットプリントを有するかに係わらず、ストレージデバイスは良い性能を有する。
【０１１２】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１１３】
１００…ハイブリッドドライブ、１１０…記憶ディスク、１１４…スピンドルモータ、１２０…アクチュエーターアームアッセンブリ、１２４…アクチュエータアーム、１２７…リード／ライトヘッド、１２８…ボイスコイルモータ、１３０…電子回路、１３１…システム・オン・チップ、１３３…マイクロプロセサ、１３４…ランダムアクセスメモリ、１３５…フラッシュメモリデバイス、１３６…フラッシュマネージャデバイス、１３７…リード／ライトチャネル。
【図１】
2015191654.tif 000003
【図２】
2015191654.tif 000004
【図３】
2015191654.tif 000005
【図４】
2015191654.tif 000006
【図５】
2015191654.tif 000007
【図６】
2015191654.tif 000008