(57)【要約】【課題】改良されたデータストレージ装置及び方法を提供すること。【解決手段】実施形態によれば、データストレージ装置は、磁気ディスクと、不揮発性ソリッドステートデバイスと、コントローラと、を具備する。コントローラは、論理ブロックアドレスを含むライトコマンドと論理ブロックアドレスに関連するライトデータとを受信し、論理ブロックアドレスに関連し以前に書き込まれたデータが不揮発性ソリッドステートデバイスに格納されていることを判定し、論理ブロックアドレスに関連し以前に書かれたライトデータが不揮発性ソリッドステートデバイスに格納されている判定に応じてライトデータを不揮発性ソリッドステートデバイスに格納する。【選択図】図５
2016062585.tif 000002
【特許請求の範囲】
【請求項１】
磁気ディスクと、
不揮発性ソリッドステートデバイスと、
コントローラと、
を具備するデータストレージ装置であって、
前記コントローラは
論理ブロックアドレスを含むライトコマンドと前記論理ブロックアドレスに関連するライトデータとを受信し、
前記論理ブロックアドレスに関連し以前に書き込まれたデータが前記不揮発性ソリッドステートデバイスに格納されていることを判定し、
前記論理ブロックアドレスに関連し以前に書かれたライトデータが前記不揮発性ソリッドステートデバイスに格納されている判定に応じて、前記ライトデータを前記不揮発性ソリッドステートデバイスに格納するデータストレージ装置。
【請求項２】
前記コントローラは前記ライトデータを前記不揮発性ソリッドステートデバイスに書き込むことに応答して前記論理ブロックアドレスに関連し以前に書かれたデータを無効とする請求項１記載のデータストレージ装置。
【請求項３】
前記ライトコマンドは付加的な論理ブロックアドレスと前記付加的な論理ブロックアドレスに関連するライトデータとを含み、
前記コントローラは
前記付加的な論理ブロックアドレスに関連し以前に書かれたデータが前記不揮発性ソリッドステートデバイスに格納されていないことを判定し、
前記付加的な論理ブロックアドレスに関連するデータを前記磁気ディスクに格納する請求項１記載のデータストレージ装置。
【請求項４】
前記コントローラは前記論理ブロックアドレスがシーケンシャルライトストリームの一部であることを判定する請求項１記載のデータストレージ装置。
【請求項５】
前記コントローラは
前記シーケンシャルライトストリームの一部として受信したデータが所定のしきい値を超えることを判定し、
超える場合、前記所定のしきい値を超えるデータの少なくとも一部分を前記磁気ディスクに格納する請求項４記載のデータストレージ装置。
【請求項６】
前記不揮発性ソリッドステートデバイスは前記データストレージ装置のためのキャッシュを含む請求項１記載のデータストレージ装置。
【請求項７】
磁気ディスクと不揮発性ソリッドステートデバイスとを含むストレージ装置の方法であって、
論理ブロックアドレスを含むライトコマンドと前記論理ブロックアドレスに関連するライトデータを受信し、
前記論理ブロックアドレスに関連し以前に書き込まれたデータが前記不揮発性ソリッドステートデバイスに格納されていることを判定し、
前記論理ブロックアドレスに関連し以前に書かれたライトデータが不揮発性ソリッドステートデバイスに格納されている判定に応じてライトデータを前記不揮発性ソリッドステートデバイスに格納する方法。
【請求項８】
前記不揮発性ソリッドステートデバイスへのライトデータの格納に応じて以前に書かれたデータを無効にすることをさらに含む請求項７記載の方法。
【請求項９】
前記ライトコマンドは付加的な論理ブロックアドレスおよび前記付加的な論理ブロックアドレスに関連するライトデータを含み、
前記付加的な論理ブロックアドレスに関連し以前に書かれたデータが前記不揮発性ソリッドステートデバイスに格納されないことを判定し、
前記付加的な論理ブロックアドレスに関連するデータを磁気ディスクに格納することを具備する請求項７記載の方法。
【請求項１０】
前記論理ブロックアドレスがシーケンシャルライトストリームの一部であることを判定することをさらに具備する請求項７記載の方法。
【請求項１１】
シーケンシャルライトストリームの一部として受信したデータが所定のしきい値を超えることを判定し、
超える場合、前記所定のしきい値を超えるデータの少なくとも一部分を磁気ディスクに格納する請求項１０記載の方法。
【請求項１２】
不揮発性ソリッドステートデバイスは方法のためのキャッシュを含む請求項７記載の方法。
【請求項１３】
磁気ディスクと、
不揮発性ソリッドステートデバイスと、
コントローラと、
を具備するデータストレージ装置であって、
前記コントローラは、
先頭部分、中間部分および後部部分を含み、書かれるデータをホストセクタ単位で受信し、
前記データの先頭部分を不揮発性ソリッドステートデバイスへ、前記データの中間部分を磁気ディスクへ、前記データの後部部分を前記不揮発性ソリッドステートデバイスに書くデータストレージ装置。
【請求項１４】
前記コントローラは前記データをディスクセクタ単位で前記磁気ディスクへ書くように構成され、１ディスクセクタはNホストセクタを含み、Ｎは１以上の整数であり、前記後部部分はN未満のホストセクタを含む請求項１３記載のデータストレージ装置。
【請求項１５】
前記コントローラは
前記データの後部部分に対応するディスクセクタの残りホストセクタに関連するデータを読み、
前記データの後部部分と、前記残りホストセクタに関連するデータを前記不揮発性ソリッドステートデバイスへ書くことにより、
前記データの後部部分を前記不揮発性ソリッドステートデバイスへ書くように構成され、前記後部部分と前記残りホストセクタに含まれるホストセクタ数はNである請求項１４記載のデータストレージ装置。
【請求項１６】
前記コントローラは、前記データの後部部分に対応するディスクセクタ、前記不揮発性ソリッドステートデバイス、あるいは前記データストレージ装置に関連する揮発性ソリッドステートデバイスのうちの１つから前記残りホストセクタに関連するデータを読む請求項１５記載のデータストレージ装置。
【請求項１７】
前記コントローラは前記データの後部部分に対応しない、ディスクセクタの残りホストセクタに関連するデータを読み、
前記データの後部部分と、前記ディスクセクタへ前記残りホストセクタに関連するデータを前記ディスクセクタに書くことにより、
前記磁気ディスクのディスクセクタに前記データの後部部分を書く請求項１３記載のデータストレージ装置。
【請求項１８】
前記コントローラはデータストレージ装置に関連する揮発性ソリッドステートデバイス、不揮発性ソリッドステートデバイス、あるいはディスクセクタのうちの１つから前記残りホストセクタに関連するデータを読む請求項１７記載のデータストレージ装置。
【請求項１９】
前記コントローラは、前記データのデータ後部部分を受け取った後で前記不揮発性ソリッドステートデバイスに前記データの後部部分を書く前に
フラッシュキャッシュコマンドを受信すると、前記データの後部部分を前記不揮発性ソリッドステートデバイスの所定部分に書き、
前記所定部分はＮホストセクタを格納するように構成され、
前記所定部分のＮホストセクタのどのセクタが前記データの後部部分を含み、どのセクタが有効なデータを含まないかを示すメタデータを前記不揮発性ソリッドステートデバイスに書く請求項１４記載のデータストレージ装置。
【請求項２０】
前記コントローラは前記所定部分に前記データの後部部分を書く前に、
前記データの後部部分に対応する前記ディスクセクタの残りホストセクタに関連するデータを読むためと、前記データの後部部分と前記残りホストセクタに関連するデータとを不揮発性ソリッドステートデバイスへ書くための推定時間が所定のしきい値を超えることを判定し、
前記推定時間が前記しきい値を超えることを判定すると、前記データの後部部分を前記不揮発性ソリッドステートデバイスの前記所定部分へ書く請求項１９記載のデータストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はデータストレージ装置及び方法に関する。
【背景技術】
【０００２】
ハイブリッドハードディスクドライブ（ＨＤＤ）は、不揮発性ソリッドステート（例えばフラッシュ）メモリと組み合わされた、１枚以上の回転する磁気ディスクを含む。一般に、ハイブリッドＨＤＤは、従来のＨＤＤの記憶容量およびソリッドステートドライブと同じくらい速くデータにアクセスする能力の両方を持っている。この理由で、ハイブリッドドライブはラップトップコンピュータで使用するには良く適する。例えば、ハイブリッドドライブ中の不揮発性ソリッドステートメモリはハイブリッドドライブのための非常に大きなキャッシュとして使用されてもよい。ホストによって再びアクセスされる可能性が高い、ハイブリッドドライブ中のデータが、そのようなキャッシュに格納される。典型的に、ホストにより、最も頻繁におよび／または最も最近アクセスされる論理ブロックアドレス（ＬＢＡ）に関連するデータは、ハイブリッドドライブのキャッシュ中で保持される。このように、ホストによってアクセスされたＬＢＡの大部分は、典型的に、磁気ディスクからの読み出し、書き込みに関連する待ち時間無しでアクセスされる。
【０００３】
ハイブリッドドライブの１つまたは複数の磁気ディスクは、ドライブの不揮発性ソリッドステートメモリの容量よりさらに多くの記憶容量を一般的に有するので、磁気ディスク上で格納されたデータの一部分だけが不揮発性ソリッドステートメモリ中でキャッシュできる。したがって、ドライブの不揮発性ソリッドステート部分にあるキャッシュ中でどのＬＢＡが保持されるかを正確に決めるのに様々なキャッシュポリシーが、使用され得る。
【０００４】
残念ながら、ハイブリッドドライブの性能を改善することを意図したキャッシュポリシーが逆効果を持つことがある場合がある。例えば、長いライトストリームがハイブリッドドライブの磁気ディスクに書かれている場合、不揮発性ソリッドステートメモリに格納され、ライトストリームによりオーバーラップされるどのＬＢＡも、不揮発性ソリッドステートメモリから一般に削除（trim）される（不揮発性ソリッドステートメモリにはもはや格納されていないというフラグがたてられる）。したがって、たとえこれらのＬＢＡがホストによって再びアクセスされると考えられ、したがって、キャッシュ中で保持されたとしても、そのようなＬＢＡに関連するデータの中で最も最近のバージョンを磁気ディスクに格納する行為は、そのＬＢＡがキャッシュから取り除かれることになる。このように、最も最近のアクセスで取り除かれたＬＢＡがドライブへ包含されるにもかかわらず、ホストによって再びアクセスされるＬＢＡはキャッシュから取り除かれる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第８２３９６４５号明細書
【特許文献２】米国特許出願公開第２０１３／０１６６８１６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のデータストレージ装置は、ホストによって再びアクセスされる論理ブロックアドレスがキャッシュから取り除かれるという課題があった。
【０００７】
本発明の目的は改良されたデータストレージ装置及び方法を提供することである。
【課題を解決するための手段】
【０００８】
実施形態によれば、データストレージ装置は、磁気ディスクと、不揮発性ソリッドステートデバイスと、コントローラとを具備する。コントローラは、論理ブロックアドレスを含むライトコマンドと、論理ブロックアドレスに関連するライトデータとを受信し、論理ブロックアドレスに関連し以前に書き込まれたデータが不揮発性ソリッドステートデバイスに格納されていることを判定し、論理ブロックアドレスに関連し以前に書かれたライトデータが不揮発性ソリッドステートデバイスに格納されている判定に応じてライトデータを不揮発性ソリッドステートデバイスに格納する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態によるハイブリッドドライブの概略図である。
【図２】図２は、実施形態によるハイブリッドドライブのブロック図である。
【図３】図３は、関連するデータが関連技術のハイブリッドドライブに格納されるＬＢＡの範囲を概念的に示す図である。
【図４】図４は、関連するデータが実施形態によるハイブリッドドライブに格納されるＬＢＡの範囲を概念的に示す図である。
【図５】図５は、実施形態によるハイブリッドドライブのライト動作を行なうための方法ステップのフローチャートを示す。
【図６】図６は、関連するデータが、フラッシュメモリデバイスと磁気ディスクを含むハイブリッドドライブに格納されるＬＢＡの範囲を概念的に示す図である。
【図７】図７は、関連するデータが、フラッシュメモリデバイスと磁気ディスクを含むハイブリッドドライブに格納されるＬＢＡの範囲を概念的に示す図である。
【図８】図８は、関連するデータが、フラッシュメモリデバイスと磁気ディスクを含むハイブリッドドライブに格納されるＬＢＡの範囲を概念的に示す図である。
【図９】図９は、関連するデータが、フラッシュメモリデバイスと磁気ディスクを含むハイブリッドドライブに格納されるＬＢＡの範囲を概念的に示す図である。
【図１０】図１０は、実施形態によるハイブリッドドライブのライト動作を行なうための方法ステップのフローチャートである。
【図１１】図１１は、キャッシュフラッシュコマンドに応答するための実施形態によるハイブリッドドライブの方法ステップのフローチャートである。
【図１２】図１２は、図１１に例証する様々な方法ステップの完了後のフラッシュメモリデバイスのアドレス可能なストレージユニットを例証する図である。
【発明を実施するための形態】
【００１０】
図１は１つの実施形態に従う典型的なディスクドライブについての概略図である。明瞭さのため、ディスク装置１００はトップカバー無しで例証される。ディスク装置１００は、スピンドルモータ１１４によって回転し、複数の同心のデータ格納トラックを含む少なくとも１つの磁気ディスク１１０を含む。スピンドルモータ１１４はベースプレート１１６にマウントされる。アクチュエーターアームアッセンブリ１２０もベースプレート１１６にマウントされる。アクチュエーターアームアッセンブリ１２０は、データ格納トラックに対してデータをリード／ライトするリード／ライトヘッド１２７を伴い湾曲アーム１２２上にマウントされたスライダー１２１を有する。湾曲アーム１２２は、ベアリングアッセンブリ１２６の周りを回転するアクチュエータアーム１２４に取り付けられている。
【００１１】
ボイスコイルモータ１２８は、磁気ディスク１１０に関してスライダー１２１を移動させて、それによって、磁気ディスク１１０の表面１１２に配置された所望の同心のデータ格納トラックの上にリード／ライトヘッド１２７を位置決めする。スピンドルモータ１１４、リード／ライトヘッド１２７およびボイスコイルモータ１２８は、電子回路１３０に接続される。電子回路１３０はプリント回路板１３２にマウントされる。
【００１２】
電子回路１３０はリード／ライトチャネル１３７、マイクロプロセサに基づいたコントローラ１３３、ランダムアクセスメモリ（ＲＡＭ）１３４（それらはダイナミックＲＡＭであってもよく、データバッファとして使用される）および／またはフラッシュメモリデバイス１３５およびフラッシュマネージャデバイス(以下、ＦＭＧＲと称する)１３６を含む。
【００１３】
いくつかの実施形態では、ＦＭＧＲ１３６、リード／ライトチャネル１３７および／またはマイクロプロセサに基づいたコントローラ１３３は、システム・オン・チップ１３１のようなシングルチップに含まれている。
【００１４】
いくつかの実施形態では、ディスク装置１００は、モータドライバ１２５を含んでいてもよい。モータドライバ１２５は、マイクロプロセサに基づいたコントローラ１３３からコマンドを受信し、スピンドルモータ１１４およびボイスコイルモータ１２８の両方を駆動する。
【００１５】
明瞭さのため、ディスク装置１００は、単一の磁気ディスク１１０および単一のアクチュエーターアームアッセンブリ１２０で例証される。ディスク装置１００はさらに多数の記憶ディスクおよび多数のアクチュエータアームアセンブリを含んでいてもよい。さらに、磁気ディスク１１０の各面は湾曲アームに接続される関連するリード／ライトヘッドを有していてもよい。
【００１６】
データが磁気ディスク１１０に、あるいは磁気ディスク１１０から転送される場合、アクチュエーターアームアッセンブリ１２０は磁気ディスク１１０の外径（ＯＤ）と内径（ＩＤ）との間に弧を描く。アクチュエーターアームアッセンブリ１２０は、電流がボイスコイルモータ１２８の１つのボイスコイルを通して１つの方向に流れると、１つの角度方向に加速し、電流が反転すると、反対の角度方向に加速し、よって、磁気ディスク１１０に関するアクチュエーターアームアッセンブリ１２０と、取り付けられているリード／ライトヘッド１２７との位置制御を許可する。
【００１７】
ボイスコイルモータ１２８は、特定のデータ格納トラックの上にリード／ライトヘッド１２７の位置を決定するために、リード／ライトヘッド１２７によって磁気ディスク１１０のサーボウェッジから読まれたポジショニングデータを使用する周知のサーボシステムと接続される。サーボシステムは、ボイスコイルモータ１２８のボイスコイルを通して駆動するために適切な電流を決定しおよび電流ドライバおよび関連する回路類を使用して、上記電流を駆動する。
【００１８】
ディスク装置１００はハイブリッドドライブとして構成され、通常の動作では、データは磁気ディスク１１０および／またはフラッシュメモリデバイス１３５に格納し、ディスクおよび／またはデバイスから検索することができる。ハイブリッドドライブでは、フラッシュメモリデバイス１３５のような不揮発性メモリは、電力消費量を低下するとともに、より速いブート、ハイバーネーション、リジューム、その他のデータリード・ライト動作を提供するために、回転する磁気ディスク１１０を補う。
【００１９】
その目的のために、フラッシュメモリデバイス１３５の大部分は、ディスク装置１００のためのキャッシュとして構成されてもよい。キャッシュは、ホストにより最も頻繁におよび／または最も最近にアクセスされたデータを、たとえそのようなデータが磁気ディスク１１０に格納されていたとしても、格納する。そのようなハイブリッドドライブ構成は、モバイルコンピュータあるいは他のモバイルコンピューティング装置のようなバッテリ駆動のコンピュータシステムには特に有利である。
【００２０】
実施形態では、フラッシュメモリデバイス１３５は、電気的に消去、再プログラムすることができ、そして、不揮発性の記憶媒体として、ディスク装置１００中の磁気ディスク１１０を補うサイズを有するＮＡＮＤフラッシュチップのような不揮発性のソリッドステート記憶媒体である。例えば、いくつかの実施形態では、フラッシュメモリデバイス１３５はＲＡＭ１３４より大きいデータ記憶容量を有する（例えば、ギガバイト（ＧＢ）対メガバイト（ＭＢ））。
【００２１】
図２は、実施形態に従うディスク装置１００の動作図を示す。示されるように、ディスク装置１００はＲＡＭ１３４、フラッシュメモリデバイス１３５、ＦＭＧＲ１３６、システム・オン・チップ１３１および高速データパス１３８を含む。ディスク装置１００は、シリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）バスのようなホストインターフェース２０経由でホストコンピュータのようなホスト１０に接続される。
【００２２】
図２に例証された実施形態では、ＦＭＧＲ１３６は高速データパス１３８とフラッシュメモリデバイス１３５とのインターフェースを制御し、ＮＡＮＤインターフェースバス１３９を介してフラッシュメモリデバイス１３５に接続される。システム・オン・チップ１３１はディスク装置１００の動作制御のためにマイクロプロセサに基づいたコントローラ１３３および他のハードウェア（リード／ライトチャネル１３７を含む）を含んでおり、高速データパス１３８を介してＲＡＭ１３４およびＦＭＧＲ１３６に接続される。他の実施形態では、フラッシュマネージャデバイス１３５はシステム・オン・チップ１３１の一部として形成されてもよい。そのような実施形態では、フラッシュマネージャデバイス１３５は自身のデータパス（図２では例証せず）を持ち、ＲＡＭ１３４とデータパスを共有しなくてもよい。
【００２３】
マイクロプロセサに基づいたコントローラ１３３は、ＡＲＭマイクロプロセッサ、ハイブリッドドライブコントローラおよびディスク装置１００内の任意のコントロール回路類のような１つまたは複数のマイクロコントローラを含んでいてもよい制御ユニットである。高速データパス１３８は、ダブル・データ・レート（ＤＤＲ）バス、ＤＤＲ２バス、ＤＤＲ３バスなどの既知の高速バスである。
【００２４】
上述したように、フラッシュメモリデバイス１３５のうちのいくらかあるいは大部分は、ホスト１０によって最も頻繁におよび／または最も最近にアクセスされたディスク装置１００内のデータを格納する、ディスク装置１００のためのキャッシュとして構成されてもよい。そのようなデータは一般にホスト１０によって再び要求される可能性が大きいデータであり、フラッシュメモリデバイス１３５に格納されると、磁気ディスク１１０から検索されるデータよりも、より速く、より少ない消費エネルギーでホスト１０に提供することができる。フラッシュメモリデバイス１３５内に位置するキャッシュにどの論理ブロックアドレス（ＬＢＡ）が保持されるかを正確に決めるのに様々なキャッシュポリシーが、使用され得る。
【００２５】
ディスク装置１００用の１つのキャッシュポリシーは、ホストから受信したシーケンシャルライトストリーム（連続する複数のＬＢＡからなるグループを構成する一連のライトコマンド）あるいはシーケンシャルリードストリーム（連続する複数のＬＢＡからなるグループを構成する一連の読み出しコマンド）の先頭部分だけをキャッシュに格納することを含む。
【００２６】
そのようなポリシーに従うと、シーケンシャルリードストリームあるいはライトストリームの一部として受信したデータは、リードストリームあるいはライトストリームからの格納されたデータの量が所定の閾値を超えるまで、フラッシュメモリデバイス１３５内に格納される。シーケンシャルリードストリームあるいはシーケンシャルライトストリームの一部として受信した残りのデータは、磁気ディスク１１０に格納される。例えば、ホスト１０から受信した各シーケンシャルライトストリームの最初の１ＭＢと、各シーケンシャルリードストリームの最初の２ＭＢが、ドライブの不揮発性ソリッドステートメモリに格納され得る。一方、各シーケンシャルリードあるいは各シーケンシャルライトストリームの残りの部分は、磁気ディスク１１０に格納される。
【００２７】
ホスト１０がキャッシュサイズに比べて大きい「フットプリント（footprint）」を有している場合、すなわち、ホスト１０によって頻繁にアクセスされるデータの範囲がフラッシュメモリデバイス１３５の記憶容量を著しく超える場合、そのようなキャッシュポリシーは他のキャッシュポリシーに比べて一般的に性能を改善する。これは、ホスト１０が大きい「フットプリント」を有する場合、ホストからのリードストリームあるいはライトストリームの全てを格納する試みは、キャッシュヒットを満足するために使用される前に、キャッシュの内容が最も最近にアクセスされたデータに置き換えられる、所謂チャーン（ｃｈｕｒｎ）となるからである。キャッシュをチャーンすることは、ディスク装置１００の性能を著しく改善することなく、フラッシュメモリデバイス１３５の磨耗に著しく寄与する。
【００２８】
上記のキャッシュポリシーの１つの欠点は、いくつかの状況では、ホスト１０によってアクセスされる可能性が高いデータが、キャッシュ中に格納するに有利な候補であるにもかかわらず、フラッシュメモリデバイス１３５中のキャッシュから取り除かれるということである。具体的には、ホスト１０によって複数回最近アクセスされており、したがって、ホスト１０によって再びアクセスされる可能性が高いデータは削除（trim）され、無効とされ、さもなければ、ある状況の下、例えばライトコマンドにより、フラッシュメモリデバイス１３５に現在格納されたＬＢＡとオーバーラップするデータが磁気ディスク１１０に書き込まれる状況の下、キャッシュにもはや格納されていないというフラグがたてられてもよい。そのような１つのシナリオは図３（ａ）〜（ｃ）で例証される。
【００２９】
図３（ａ）〜（ｃ）は、関連するデータがフラッシュメモリデバイスおよび磁気ディスクを含むハイブリッドドライブに格納されるＬＢＡの範囲を概念的に例証する。ＬＢＡ０〜２３９９の各々は、ハイブリッドドライブに格納される５１２バイトのブロックあるいは他のサイズのデータブロックのようなデータブロックに関連する。さらに詳細に下に議論されるように、ＬＢＡ０〜２３９９の各々に関連するデータの中で最も最近のバージョンは、ハイブリッドドライブ用のキャッシュ（すなわち、フラッシュメモリデバイス）におよび／または磁気ディスクに格納されてもよい。
【００３０】
図３（ａ）はホスト１０から受信した３つの初期ライトコマンドが実行され、データがＬＢＡ０〜３９９、１０００〜１３９９および２１００〜２３９９に書かれた後のＬＢＡ０〜２３９９を例証する。示されるように、これらのライトコマンドの各々がＬＢＡの比較的狭い範囲に亘っているので、これらのＬＢＡに関連するデータはキャッシュにのみ格納され、フラッシュメモリデバイスへの書き込みから磁気ディスクへの書き込みに切り替わる所定のしきい値を越えない。したがって、ＬＢＡのこれらの３つのグループに関連し以前に書かれたデータ３０１、３０２および３０３は、キャッシュに格納される。
【００３１】
図３（ｂ）は、ＬＢＡ０〜７９９に関連するデータがキャッシュに書き込まれ、ＬＢＡ８００〜１９９９に関連するデータが磁気ディスクに書き込まれるライト動作が実行された後のＬＢＡ０〜２３９９を例証する。例えば、ＬＢＡ０〜１９９９は、フラッシュメモリデバイスへの書き込みから磁気ディスクへの書き込みに切り替わる所定のしきい値を超えるサイズを有し、ライトコマンドに含まれるデータに関連するかもしれない。図３（ｂ）で例証された例において、しきい値は８００ＬＢＡに関連するデータの量に対応する。したがって、ＬＢＡ０〜７９９に関連するデータはキャッシュに書き込まれ、ＬＢＡ８００〜１９９９に関連するデータは磁気ディスクに書き込まれる。
【００３２】
したがって、キャッシュに格納されている以前に書かれたデータ３０１は、ライトコマンドが実行される時上書きされたＬＢＡに関連し、同じくキャッシュに格納されている以前に書かれたデータ３０２は、ディスクライト動作に含まれるＬＢＡ（すなわち、ＬＢＡ１０００〜１３９９）により重畳されるＬＢＡに関連する。以前に書かれたデータ３０２の最新のバージョンは、磁気ディスクに存在するので、オーバーラップするＬＢＡに関連し以前に書かれたデータは削除（trim）され、無効とされ、さもなければ、キャッシュにもはや格納されていないというフラグがたてられてもよい。
【００３３】
以前に書かれたデータ３０２が削除（trim）され、無効とされ、さもなければ、キャッシュにもはや格納されていないというフラグがたてられた後のＬＢＡ０〜２３９９を図３（ｃ）が例証する。特に、ＬＢＡ１０００〜１３９９に関連する有効データのみが磁気ディスクに格納され、ＬＢＡ１０００〜１３９９に関連するデータはキャッシュに格納されない。そのように、最初のライトコマンドでアクセスされることにより、キャッシュにこれらのＬＢＡが最近格納され、後のディスクライト動作と共同して再びアクセスされるという事実にもかかわらず、これらのＬＢＡに関連する有効データのみが磁気ディスクにある。言いかえれば、ＬＢＡ１０００〜１３９９はＬＢＡ２１００〜２３９９より最近にアクセスされ、ＬＢＡ４００〜９９９および１４００〜１９９９より頻繁にアクセスされてもよいが、ＬＢＡ１０００〜１３９９に関連するデータは磁気ディスクのみに格納される。キャッシュは理想的には最も最近、または最も頻繁に使用されたデータを格納するので、オーバーラップしたＬＢＡに関連するデータをこのように削除（trim）する、あるいは無効とすることは、一般に不適当である。
【００３４】
１つまたは複数の実施形態によれば、ディスクライト動作の結果、フラッシュメモリデバイス１３５中のデータが削除（trim）され、無効とされ、さもなければ、使用されていないというフラグがたてられる場合、そのようなオーバーラップしたＬＢＡに関連するデータの最も最近のバージョンもフラッシュメモリデバイス１３５に書き込まれる。このように、後のディスクライト動作によってオーバーラップされたＬＢＡは、それに関連する有効なデータをまだキャッシュ中に有し、ホスト１０によって迅速にアクセスすることができる。そのような１つの実施形態は図４（ａ）〜（ｃ）と共に記述される。
【００３５】
図４（ａ）〜（ｃ）は、関連するデータが実施形態によるハイブリッドドライブに格納されるＬＢＡの範囲を概念的に例証する。ＬＢＡ０〜２３９９の各々は、ディスク装置１００に格納される５１２バイトのブロックあるいは他のサイズのデータブロックのようなデータのホストセクタに関連する。さらに詳細に以下で議論されるように、各々のＬＢＡ０〜２３９９に関連するデータの中で最も最近のバージョンは、ディスク装置１００用のキャッシュ（すなわち、フラッシュメモリデバイス１３５）および／または磁気ディスク１１０に格納されてもよい。
【００３６】
３つの最初のライトコマンドが実行された結果、データがＬＢＡ０〜３９９、１０００〜１３９９および２１００〜２３９９に書かれた後のＬＢＡ０〜２３９９を図４（ａ）は例証する。示されるように、これらのＬＢＡに関連し以前に書かれたデータ４０１、４０２および４０３は、キャッシュのみに格納される。最初のライトコマンドはホスト１０から受け取られてもよいし、ＬＢＡ０〜３９９、１０００〜１３９９および２１００〜２３９９に関連するデータがホスト１０によって要求される１つまたは複数のリードコマンドに応じて実行されてもよい。
【００３７】
ＬＢＡ０〜７９９に関連するデータがキャッシュに書かれ、ＬＢＡ８００〜１９９９に関連するデータが磁気ディスク１１０に書かれるディスクライト動作が行なわれた後のＬＢＡ０〜２３９９を図４（ｂ）は例証する。例えば、ＬＢＡ０〜１９９９は、データがフラッシュメモリデバイス１３５への書き込みから磁気ディスク１１０への書き込みへ切り替わるための所定のしきい値を超えるライトコマンドに含まれるデータに関連するかもしれない。したがって、ＬＢＡ０〜７９９に関連するデータはキャッシュに書かれる。また、ＬＢＡ８００〜１９９９に関連するデータは磁気ディスク１１０に書かれる。
【００３８】
したがって、以前に書き込まれキャッシュに格納されるデータ４０１は、ライトコマンドが実行されるとき上書きされるＬＢＡに関連し、以前に書き込まれ同じくキャッシュに格納されるデータ４０２は、ディスクライト動作に含まれるＬＢＡ（すなわち、１０００〜１３９９）によってオーバーラップされるＬＢＡに関連する。以前に書かれたデータ４０２のより新しいバージョンは、現在、磁気ディスク１１０に存在し、以前に書き込まれオーバーラップしたＬＢＡに関連するデータ４０２は、削除（trim）され、無効とされ、さもなければ、もはやフラッシュメモリデバイス１３５に格納されていないというフラグがたてられる。
【００３９】
図４（ｃ）は、オーバーラップしたＬＢＡ（ＬＢＡ１０００〜１３９９）に関連する最も最近のデータがディスク装置１００用のキャッシュ（すなわち、フラッシュメモリデバイス１３５）に書き込まれた後のＬＢＡ０〜２３９９を例証する。概念的に、図４（ｃ）では、オーバーラップしたＬＢＡに関連する最も最近のデータ４０４が磁気ディスク１１０からキャッシュにコピーされることが示される。実際上、以前に書かれたデータ４０２が削除（trim）され、さもなければ無効とされる場合、最も最近のデータ４０４は、ディスク装置１００のＲＡＭ１３４の中に典型的にまだ存在している。
【００４０】
したがって、オーバーラップしたＬＢＡに関連するデータの中で最も最近のバージョンは、一般的に、最も最近のデータ４０４としてＲＡＭ１３４からのフラッシュメモリデバイス１３５内の物理的な場所に直接書き込まれることができる。
【００４１】
オーバーラップしたＬＢＡ１０００〜１３９９に関連する最も最近のデータが、磁気ディスク１１０に加えてキャッシュに格納されるので、ホスト１０によるこれらのＬＢＡへのアクセス（すなわち、これらのＬＢＡから読むか、これらのＬＢＡに書く）が、磁気ディスク１１０から検索されるデータより少ないエネルギー消費で非常に速く完了することができる。例えば、リード／ライトヘッド１２７（図１に示される）が退避される場合、磁気ディスク１１０からＬＢＡ１０００〜１３９９をアクセスするのに必要な時間は３００ｍｓあるいはそれ以上である。何故ならば、リード／ライトヘッド１２７がロードされ、ＬＢＡ１０００〜１３９９に対応する磁気ディスク１１０上の場所を探し、これらの場所からデータを読むあるいはこれらの場所にデータを書くからである。
【００４２】
対照的に、ＬＢＡ１０００〜１３９９に対応するフラッシュメモリデバイス１３５中の物理メモリ場所から読むかあるいは書くのに必要な時間は、１ｍｓ未満とすることができる。さらに、ＬＢＡ１０００〜１３９９が、ディスク装置１００に格納される他のデータより最近に、および／または高い頻度でアクセスされたので、これらのＬＢＡはホスト１０によって続いてアクセスされる可能性が、一般的に高い。
【００４３】
図４（ｂ）、（ｃ）に示されるように、以前に書かれたデータ４０２および最も最近のデータ４０４は同じＬＢＡ（ＬＢＡ１０００〜１３９９）に関連する。しかしながら、フラッシュメモリデバイス１３５がＮＡＮＤ型フラッシュメモリを含む場合、そこに格納されたデータは、単一のマシン語（あるいはバイト）よりはるかに大きいブロックあるいはページで一般に書かれるあるいは読まれることは注目される。
【００４４】
ＮＡＮＤ型フラッシュメモリの入力／出力インターフェースがランダムアクセスの外部アドレスバスを提供しないので、フラッシュメモリデバイス１３５中の各物理メモリー場所とディスク装置１００の各ＬＢＡは固定的に１対１で対応することはない。したがって、以前に書かれたデータ４０２のフラッシュメモリデバイス１３５中の物理メモリー場所は、最も最近のデータ４０４のフラッシュメモリデバイス１３５中の物理メモリー場所と一般に異なる。したがって、以前に書かれたデータ４０２および最も最近のデータ４０４はフラッシュメモリデバイス１３５の同じ物理メモリー場所ではなく、同じＬＢＡスペースに関連する。
【００４５】
図５は、実施形態によるハイブリッドドライブのライト動作を行なうための方法ステップのフローチャートを示す。方法ステップは図１、図２の中のディスク装置１００と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ１３３によって行なわれるとして以下に説明するが、方法ステップの制御アルゴリズムが、任意の他の適切な制御回路、システム、あるいはディスク装置１００に関連するソフトウェアあるいはファームウェアに常駐しおよび／またはこれらにより実行されてもよい。
【００４６】
示されるように、方法５００はステップ５０１で始まる。ステップ５０１で、マイクロプロセサに基づいたコントローラ１３３がＬＢＡを含むライトコマンドと、ＬＢＡに関連するライトデータとをホスト１０から受信する。そのように受信されたライトコマンドは、シーケンシャルライトストリームの先頭（すなわち、ライトストリームを構築するライトコマンドがシーケンシャルＬＢＡのグループを形成するライトストリーム）、あるいはシーケンシャルライトストリームの後の部分かもしれない。いくつかの実施形態では、マイクロプロセサに基づいたコントローラ１３３はＲＡＭ１３４へライトコマンドを受信する。
【００４７】
ステップ５０２で、マイクロプロセサに基づいたコントローラ１３３は、ステップ５０１で受信したライトコマンドに含まれるライトデータのために十分な格納スペースがフラッシュメモリデバイス１３５において利用可能であるかどうかを判定する。不十分な格納スペースしかフラッシュメモリデバイス１３５において利用できない場合、方法５００はステップ５０３に移る。十分な格納スペースが利用可能な場合、方法５００はステップ５０４に移る。ステップ５０２はステップ５０１、あるいは方法５００のステップ５１３の後に行なわれてもよい。ステップ５１３の後に行なわれた時、マイクロプロセサに基づいたコントローラ１３３は、ライトコマンドに含まれる全てのライトデータではなく、ライトコマンドに含まれる未書き込みの残りのライトデータを格納するために十分な格納スペースがフラッシュメモリデバイス１３５において利用可能であるかどうかを判定する。
【００４８】
ステップ５０３で、マイクロプロセサに基づいたコントローラ１３３は、ライトコマンドに関連するライトデータのうちのいくつかあるいはすべてを磁気ディスク１１０に書かせる。ライトコマンドに含まれたライトデータの一部がフラッシュメモリデバイス１３５に書かれた状況で、ライトデータの残りの部分だけが、ステップ５０３で磁気ディスク１１０に書かれる。
【００４９】
ステップ５０４で、マイクロプロセサに基づいたコントローラ１３３は、ステップ５０１で受信したライトコマンドの最初の未書き込みのＬＢＡを選択する。
【００５０】
ステップ５０５で、マイクロプロセサに基づいたコントローラ１３３は、（１）ライトコマンドを含むシーケンシャルライトストリームに関連し、（２）フラッシュメモリデバイス１３５に書かれたデータの量が所定のしきい値（例えば、５ＭＢ、１０ＭＢのデータ）未満であるかどうかを判定する。上述したように、所定のしきい値は、シーケンシャルリードストリームあるいはシーケンシャルライトストリームの中のデータがフラッシュメモリ１３５あるいは磁気ディスク１１０に何時格納されるかを示すために、キャッシュポリシーで使用することができる。したがって、条件（１）および（２）を満たすデータの量が所定のしきい値未満であると判定される場合、方法５００はステップ５１１（キャッシュへのデータライト）に移る。反対に、条件（１）および（２）を満たすデータの量が所定のしきい値以上であると判定される場合、方法５００はステップ５０６（ディスクへのデータライト）に移る。条件（２）が満たされることを決めるためのカウンターはステップ５１２に記述される。
【００５１】
ステップ５０６で、マイクロプロセサに基づいたコントローラ１３３は、ステップ５０４で選択されたＬＢＡに関連し以前に書かれたデータがフラッシュフラッシュメモリデバイス１３５に格納されているかどうかを判定する。例えば、マイクロプロセサに基づいたコントローラ１３３は、ＬＢＡに関連するデータを格納する場所を記憶するためにＢツリーあるいはＬＢＡをマッピングするための他のデータ構造を使用してもよい。ステップ５０４で選択されたＬＢＡに関連しフラッシュメモリデバイス１３５に格納された以前に書かれたデータがある場合、方法５００はステップ５１１に移る。ＬＢＡに関連しフラッシュメモリ１３５に格納されたデータがない場合、方法５００はステップ５０７に移る。
【００５２】
ステップ５０７で、マイクロプロセサに基づいたコントローラ１３３は、ステップ５０４で選択されたＬＢＡに関連するデータを磁気ディスク１１０に書かせる。２つの条件が満足する場合、そのようなライトデータは磁気ディスク１１０に書かれることは注目すべきである。条件１：ステップ５０４で選択されたＬＢＡに関連し以前に書かれたデータがフラッシュメモリデバイス１３５に格納されていない。条件２：フラッシュメモリデバイス１３５に書かれたデータ（現在のシーケンシャルライトストリームからのデータ）の合計量は、上記の所定のしきい値以上である。
【００５３】
ステップ５１１で、マイクロプロセサに基づいたコントローラ１３３は、ステップ５０４で選択されたＬＢＡに関連するデータをフラッシュメモリデバイス１３５に書かせる。いくつかの実施形態では、ライトデータは、フラッシュメモリデバイス１３５の物理的な場所に直ちに書かれる。
【００５４】
他の実施形態では、１回の動作中にコンプリートな物理メモリーブロックにフラッシュメモリデバイス１３５中のコンプリートな物理メモリーブロックへの書き込みを促進するために、十分な量のライトデータ（例えば８ＫＢ、３２ＫＢなど）が蓄積されるまで、上記データはバッファされる。
【００５５】
いくつかの実施形態では、ライトデータのための格納スペースをフラッシュメモリデバイス１３５内に提供するためのステップ５１１の前、最中および／または後に、エビクション(eviction)および／またはガーベジコレクション(garbage collection)スキームが、フラッシュ・マネージャー装置１３６によって実行されてもよい。
【００５６】
ステップ５１２で、マイクロプロセサに基づいたコントローラ１３３は、フラッシュメモリデバイス１３５に書かれたデータ（現在のシーケンシャルライトストリームからのデータ）の合計量にステップ５１１で書かれたライトデータの量を加える。データのこの合計量は、続いて選択されたＬＢＡに関連するデータがフラッシュメモリデバイス１３５あるいは磁気ディスク１１０に書かれているかどうかを判定するステップ５０５で使用される。
【００５７】
ステップ５１３で、マイクロプロセサに基づいたコントローラ１３３は、ステップ５０１で受信したライトコマンドに関連するデータの残りの未書き込み部分があるかどうかを判定する。ライトコマンドに関連する残りのデータがない場合、方法５００はステップ５２０に移り終了する。ライトコマンドに関連する残りのデータがある場合、方法５００はステップ５０２に進む。
【００５８】
上述したように、ハイブリッドドライブ中で一般に使用されるキャッシュポリシーは、ホストから受信したシーケンシャルリードストリームあるいはシーケンシャルライトストリームの先頭部分のみをキャッシュに格納し、両ストリームの残りの部分をディスクに格納することを含む。そのようなポリシーの１つの短所は、いくつかの状況で、ライトコマンドの最後のわずかのＬＢＡに関連するデータが磁気ディスクの物理ディスクセクタと位置が揃わない可能性があることである。言いかえれば、ライトコマンドの最後のＬＢＡは、例えば物理ディスクセクタの全ての４ＫＢではなく、物理ディスクセクタの一部を占めてもよい。したがって、同じＬＢＡへの後のライトコマンドは、ライトコマンドが完了する前にディスクから読むことを含んでいてもよい。それによって、ライトコマンドの完了にかなりの遅延が生じる。そのような１つのシナリオは図６、図７で例証される。
【００５９】
図６、図７は、関連するデータがディスク装置１００、あるいはフラッシュメモリデバイスおよび磁気ディスクを含む他のハイブリッドドライブに格納されるＬＢＡの範囲を概念的に示す。ＬＢＡ０〜３１の各々は、関連し、５１２バイトのホストセクタあるいは他のサイズのデータブロックのようなディスク装置１００に格納されるデータブロックのためのアドレスとして機能する。示されるように、ディスク装置１００の特定のＬＢＡに関連するデータは、３つの場所：ＲＡＭ１３４（ＤＲＡＭと表記される）、フラッシュメモリデバイス１３５（キャッシュと表記される）および／または磁気ディスク１１０（ディスクと表記される）に格納することができる。
【００６０】
ホスト１０からシーケンシャルライトコマンドが受信され、ＬＢＡ０〜２５に関連するデータがＤＲＡＭに格納された後のＬＢＡ０〜３１を図６（ａ）に例証する。ライトコマンドは先頭部分６０１（ＬＢＡ０〜７）、中間部分６０２（ＬＢＡ８〜２３）および後部部分６０３（ＬＢＡ２４〜２５）を含み、磁気ディスク１１０上の４つの物理ディスクセクタ６１１〜６１４に亘っている。
【００６１】
したがって、図６、図７に示す例では、物理ディスクセクタ６１１〜６１４の各々は、８つの５１２バイトの論理セクタ、すなわち、合計４ＫＢのサイズに亘っている。先頭部分６０１、すなわち、ホスト１０から受信したシーケンシャルライトコマンドの先頭部分は、フラッシュメモリデバイス１３５に格納されるデータを含む。中間部分６０２は、磁気ディスク１１０に格納されるデータを含む。後部部分６０３は、シーケンシャルライトコマンドが及ぶ最後の物理ディスクセクタ（すなわち、物理ディスクセクタ６１４）に対応するＬＢＡに関連し、磁気ディスク１１０に格納されるデータを含む。
【００６２】
ＬＢＡ０〜３１に関連し以前のデータ６０５は、既にディスクに格納されているが、ライトコマンドが受信され、それに関連するデータがフラッシュメモリデバイス１３５および／または磁気ディスク１１０に格納されると、ＬＢＡ０〜２５に関連し、磁気ディスク１１０に格納されていたデータは、もはやこれらのＬＢＡに関連するデータの最も最近のバージョンではない。ライトコマンドに含まれるＬＢＡによってオーバーラップされ、フラッシュメモリデバイス１３５に送信されないＬＢＡに関連するデータはフラッシュメモリデバイス１３５中で無効と見なされ、磁気ディスク１１０に上書きされる。
【００６３】
先頭部分６０１に含まれるデータの量は、１あるいは２ＭＢのデータのような所定値であり得る。明瞭さのため、図６、図７で例証された例において、シーケンシャルライトコマンド全体を見ることができるように、この所定値は４ＫＢとして例証される。いくつかの実施形態では、先頭部分６０１に含まれるデータの量は可変でもよい。その結果、先頭部分６０１は、物理セクタ境界（例えば物理ディスクセクタ６１１と物理ディスクセクタ６１２の間の境界）で終了する。このように、中間部分６０２は物理セクタ境界で始まる。その結果、中間部分６０２の最初のＬＢＡは物理ディスクセクタ境界と位置が揃い、中間部分６０２のＬＢＡに関連するデータは、部分的な物理ディスクセクタにではなく、１つまたは複数のコンプリートな物理ディスクセクタに書くことができる。
【００６４】
ライトコマンドの一部が実行された後のＬＢＡ０〜３１を図６（ｂ）に例証する。示されるように、ライトコマンドの先頭部分６０１（ＬＢＡ０〜７）に関連するデータは、フラッシュメモリデバイス１３５に書かれる。ライトコマンドの中間部分６０２（ＬＢＡ８〜２３）に関連するデータは、磁気ディスク１１０に書かれる。しかしながら、後部部分６０３に関連するＬＢＡは、物理ディスクセクタ６１４のＬＢＡの一部分にしか対応せず、物理ディスクセクタ６１４の残りの部分６１４ＡのＬＢＡには対応しないので、ライトコマンドの後部部分（ＬＢＡ２４〜２５）に関連するデータは、まだ書かれていない。
【００６５】
データが、コンプリートな物理ディスクセクタより小さく無い単位で磁気ディスク１１０に一般に書かれるので、物理ディスクセクタ６１４の全てのＬＢＡに関連するデータはＲＡＭ１３４に最初に読まれ、次に、物理ディスクセクタ６１４に書かれる。具体的には、ライトコマンドがディスク装置１００によって受信される場合、ＬＢＡ２４〜２５に関連するデータは、ＲＡＭ１３４に受け入れられる。ＬＢＡ２６〜３１に関連するデータは、フラッシュメモリデバイス１３５（もしそこに格納されていれば）あるいは磁気ディスク１１０からＬＢＡ２６〜３１を読むことにより、ＲＡＭ１３４に読み込まれる。
【００６６】
図６、図７で描かれたシナリオでは、ＬＢＡ２６〜３１に関連するデータの中で最も最近の（唯一の）バージョンが、磁気ディスク１１０に格納される。したがって、物理ディスクセクタ６１４にライトコマンドの後部部分６０３を書くために、（図７（ａ）で例証されるように）磁気ディスク１１０上のＬＢＡ２６〜３１からのデータは磁気ディスク１１０からＲＡＭ１３４に読み込まれる。磁気ディスク１１０は回転を終える。次に、（図７（ｂ）で例証されるように）ＬＢＡ２４〜２５およびＬＢＡ２６〜３１のためのデータは、ＲＡＭ１３４から物理ディスクセクタ６１４に書かれる。したがって、後部部分６０３が物理ディスクセクタ６１４の境界と位置が揃っていない場合、ライトコマンドの後部部分６０３を書くことに対してかなりの遅延（例えば、数１０ミリ秒の単位）が生じる。
【００６７】
いくつかの実施形態では、キャッシュポリシーは、磁気ディスク装置１１０の物理ディスクセクタと位置が揃っていないライトコマンドの後部部分をフラッシュメモリデバイス１３５に格納するディスク装置１００で実行されてもよい。
【００６８】
そのような実施形態では、物理ディスクセクタと位置が揃っていない後部部分を含む後のライトコマンドは、図６、図７と共に上述したディスクからの読み取りが遅延することなく実行することができる。そのような１つのシナリオは図８、図９で例証される。
【００６９】
図８、図９は、関連するデータが、ディスク装置１００、あるいはフラッシュメモリデバイスおよび磁気ディスクを含む他のハイブリッドドライブに格納されるＬＢＡの範囲を概念的に示す。図６、図７と共に上述したように、ディスク装置１００の特定のＬＢＡに関連するデータは、３つの場所：ＲＡＭ１３４、フラッシュメモリデバイス１３５および／または磁気ディスク１１０に格納することができる。
【００７０】
ホスト１０からシーケンシャルライトコマンドが受信され、ＬＢＡ０〜２５に関連するデータがＤＲＡＭに格納された後のＬＢＡ０〜１を図８（ａ）に例証する。ライトコマンドは先頭部分６０１（ＬＢＡ０〜７）、中間部分６０２（ＬＢＡ８〜２３）および後部部分６０３（ＬＢＡ２４〜２５）を含み、磁気ディスク１１０上の４つの物理ディスクセクタ６１１〜６１４に亘っている。ＬＢＡ０〜３１に関連し以前のデータ６０５は、既にディスクに格納されているが、ライトコマンドが受信され、フラッシュメモリデバイス１３５および／または磁気ディスク１１０に書かれると、ＬＢＡ０〜２５に関連する以前のデータは、もはやこれらに関連するデータの最も最近のバージョンではなく、無効と見なされ、あるいは上書きされる。
【００７１】
ライトコマンドの一部が実行され、ライトコマンドの先頭部分６０１に関連するデータがフラッシュメモリデバイス１３５に格納され、ライトコマンドの中間部分６０２に関連するデータが磁気ディスク１１０に格納された後のＬＢＡ０〜３１を図８（ｂ）に例証する。ライトコマンドの後部部分６０３に関連するデータはまだ書かれていない。ＬＢＡ２６〜３１に関連するデータが磁気ディスク１１０から読まれ、ＲＡＭ１３４に書かれた後のＬＢＡ０〜３１を図９（ａ）に例証する。ライトコマンドの完了、すなわち、ＬＢＡ２４〜３１に関連するデータが、物理ディスクセクタ６１４に対応するＬＢＡにマッピングされたフラッシュメモリ１３５の物理メモリ場所に書かれた後のＬＢＡ０〜３１を図９（ｂ）に例証する。
【００７２】
したがって、後のライトコマンドが、後部部分６０３のＬＢＡに関連するが、残りの部分６１４ＡのＬＡＢには関連しない改訂されたデータを含む場合、後のライトコマンドは、磁気ディスク１１０からの読み出し無しで完了することができる。代わりに、後のライトコマンドは、後部部分６０３に関連するライトデータと残りの部分６１４Ａに関連するデータの中で最も最近のバージョンと磁気ディスク１１０からのデータ読み出し無しで既に利用可能であるので、中間部分６０２が磁気ディスク１１０に書かれるのと同じ回転で完了することができる。これは、後部部分６０３に関連するライトデータがライトコマンドの一部分としてＲＡＭ１３４に受け入れられ、残りの部分６１４Ａに関連するデータの中で最も最近のバージョンがＲＡＭ１３４および／またはフラッシュメモリデバイス１３５に既に格納されているからである。
【００７３】
いくつかの実施形態では、ライトコマンドデータが物理ディスクセクタ６１３に書かれた直後に、後部部分６０３に関連するライトデータも磁気ディスク１１０の物理ディスクセクタ６１４に書かれる。残りの部分６１４Ａに関連するデータの中で最も最近のバージョンがフラッシュメモリデバイス１３５に格納されており、書き込みのために既に利用可能であるので、後部部分６０３に関連する新しいデータは、物理ディスクセクタ６１４の残り部分６１４Ａからの読み取りデータに関連する時間遅れ無く物理ディスクセクタ６１４に書くことができる。
【００７４】
図１０は、実施形態によるハイブリッドドライブのライト動作を行なうための方法ステップのフローチャートを示す。方法ステップは図１、図２の中のディスク装置１００と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ１３３によって行なわれるとして以下に説明するが、方法ステップのアルゴリズムが、任意の他の適切な制御回路、システム、あるいはディスク装置１００に関連するソフトウェアあるいはファームウェアに常駐しおよび／またはこれらにより実行されてもよい。
【００７５】
示されるように、方法８００はステップ８０１で始まる。ステップ８０１で、マイクロプロセサに基づいたコントローラ１３３が、ライトコマンドと（先頭、中間、後部）部分をホスト１０から受信する。このように受信したライトコマンドはシーケンシャルライトストリーム（すなわち、ライトストリームを構築するライトコマンドがシーケンシャルＬＢＡのグループを形成するライトストリーム）であるかもしれない。いくつかの実施形態では、マイクロプロセサに基づいたコントローラ１３３はライトコマンドをＲＡＭ１３４に受信する。
【００７６】
ステップ８０２で、マイクロプロセサに基づいたコントローラ１３３は、図６（ａ）および図９（ａ）で例証されるように、後部部分が物理ディスクセクタの終端と位置が揃わないＬＢＡを含むかどうかを判定する。ステップ８０３で、マイクロプロセサに基づいたコントローラ１３３は、先頭部分６０１、中間部分６０２および後部部分６０３のＬＢＡを決定する。
【００７７】
ステップ８０４で、マイクロプロセサに基づいたコントローラ１３３は、ライトコマンド中の最初の未書き込みバッファされていないＬＢＡを選択する。ステップ８０５で、マイクロプロセサに基づいたコントローラ１３３は、選択されたＬＢＡが中間部分６０２のＬＢＡかどうかを判定する。イエスの場合、方法８００はステップ８０６に移り、ノーの場合、方法８００はステップ８０７に移る。
【００７８】
ステップ８０６で、マイクロプロセサに基づいたコントローラ１３３は、選択されたＬＢＡに関連するデータを磁気ディスク１１０へ書く。単一のＬＢＡに関連するデータは一般的には磁気ディスク１１０に書くことができないので、中間部分６０２からの十分なデータがバッファされるまで、ステップ８０４および８０５は一般に繰り返される。その結果、ステップ８０６で単一の物理ディスクセクタを満たすに十分なデータが磁気ディスク１１０に格納される。（１トラックあるいはそれ以下に亘るデータを書くために多数回回転することを避けるために）データをディスクに書く前に、中間部分の全てをＲＡＭ１３４にバッファすることも有利かもしれない。
【００７９】
ステップ８０７で、マイクロプロセサに基づいたコントローラ１３３は、選択されたＬＢＡが先頭部分６０１のＬＢＡかどうかを判定する。イエスであれば、方法８００はステップ８０８に移る、ノーの場合、方法８００はステップ８１１に移る。ステップ８０８で、マイクロプロセサに基づいたコントローラ１３３は、フラッシュメモリデバイス１３５へ選択されたＬＢＡに関連するデータを書く。単一のＬＢＡに関連するデータを一般にフラッシュメモリデバイス１３５に書くことができないので、中間部分６０２からの十分なデータがバッファされ、一つの物理ディスクセクタを満たすのに十分なデータが磁気ディスク１１０で格納可能となるまで、ステップ８０４および８０７が一般に繰り返される。
【００８０】
ステップ８１１で、マイクロプロセサに基づいたコントローラ１３３は、選択されたＬＢＡがステップ８０１で受信したライトコマンドの最後のＬＢＡかどうかを判定する。イエスの場合、方法８００はステップ８１３に移る。ノーの場合、方法８００はステップ８１２に移る。ステップ８１２で、マイクロプロセサに基づいたコントローラ１３３は、選択されたＬＢＡに関連するライトデータをＲＡＭ１３４にバッファし、方法８００はステップ８０４に戻る。ステップ８１３で、マイクロプロセサに基づいたコントローラ１３３は、マイクロプロセサに基づいたコントローラ１３３が選択されたＬＢＡに関連するライトデータをＲＡＭ１３４にバッファすることを決定し、方法８００はステップ８１４に移る。
【００８１】
ステップ８１４で、マイクロプロセサに基づいたコントローラ１３３は、最終セクタの残り部分（すなわち、残り部分６１４Ａ）中のＬＢＡに対応するデータを読み、バッファする。これらのデータは、ステップ８０１で受信したライトコマンドに関係しておらず、したがって、ディスク装置１００中のいくつかの格納場所のうちの１つから読まれる。一般に、そこに格納された時、残り部分６１４Ａの中のＬＢＡに対応するデータはフラッシュメモリデバイス１３５から読まれる。
【００８２】
いくつかの実施形態では、マイクロプロセサに基づいたコントローラ１３３は、残り部分６１４Ａの中のＬＢＡに対応するデータの中で最も最近のバージョンがＲＡＭ１３４に格納されるかどうかを先ず決定するように構成される。いくつかの実施形態によれば、図８、図９と共に上述したように、残り部分６１４Ａに関連するデータは以前のライトコマンドに応じてフラッシュメモリデバイス１３５に格納される。しかしながら、データがＲＡＭ１３４あるいはフラッシュメモリデバイス１３５に格納されていない場合、マイクロプロセサに基づいたコントローラ１３３は、残り部分６１４Ａの中のＬＢＡに対応するデータを磁気ディスク１１０から読ませる。
【００８３】
ステップ８１５で、マイクロプロセサに基づいたコントローラ１３３は、ステップ８１２、８１３および８１４でバッファされたデータをフラッシュメモリ１３５へ書く。したがって、残り部分６１４Ａに関連するデータがステップ８０１で受信したライトコマンドに関連しないにも関わらず、後部部分６０３および残り部分６１４Ａに関連するデータは両方ともフラッシュメモリデバイス１３５に格納される。
【００８４】
図１１は、実施形態による、フラッシュキャッシュコマンドに応答するためのハイブリッドドライブの方法ステップのフローチャートを示す。方法ステップは図１、図２の中のディスク装置１００と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ１３３によって行なわれるとして以下に説明するが、方法ステップの制御アルゴリズムが、任意の他の適切な制御回路、システム、あるいはディスク装置１００に関連するソフトウェアあるいはファームウェアに常駐しおよび／またはこれらにより実行されてもよい。
【００８５】
示されるように、方法９００はステップ９０１で始まる。ステップ９０１では、マイクロプロセサに基づいたコントローラ１３３は、フラッシュキャッシュコマンドを、例えばホスト１０から受信する。一般に、ホスト１０は、一般に、その時点までにホスト１０から受信した全てのデータがパーシステントな状態で格納される、すなわちディスクおよび／またはフラッシュメモリに格納されるように、記憶装置へフラッシュキャッシュコマンドを発行する。典型的に、記憶装置は、ホスト１０から受信した全てのデータがこのように格納されるまでは、他のオペレーションを本質的に行なわない。その結果、フラッシュキャッシュコマンドに対するレスポンスがより速く完了する場合、記憶装置の性能が改善される。
【００８６】
ステップ９０２で、マイクロプロセサに基づいたコントローラ１３３は、ＲＡＭ１３４に現在格納されている非パーシステントなデータ（すなわち、パーシステントな状態のどこか他のところに格納されないデータ）の量を決定する。例えば、非パーシステントなデータは、磁気ディスク１１０あるいはフラッシュメモリデバイス１３５にまだ格納されていない、以前の受信ライトデータを含んでいてもよい。
【００８７】
ステップ９０３で、マイクロプロセサに基づいたコントローラ１３３は、ＲＡＭ１３４に現在格納された非パーシステントなデータの量がコンプリートなアドレス可能なデータブロックだけを形成するのに十分かどうかを判定する。例えば、磁気ディスク１１０が、８つの５１２バイトのホストセクタ（図６（ａ）の物理ディスクセクタ６１１〜６１４のようなセクタ）を含むことができる４ＫＢの物理ディスクセクタへ組織される場合、マイクロプロセサに基づいたコントローラ１３３は、ＲＡＭ１３４に現在格納されている非パーシステントなデータがフラッシュメモリデバイス１３５中の記憶用のコンプリートな４ＫＢデータブロックへ組織されることができるかどうかを判定する。これは、このシナリオでは４ＫＢデータブロックがディスク装置１００で最も小さな書き込み可能でアドレス可能なデータブロックであるからである。４ＫＢの物理ディスクセクタが単なる１つの例であることが注目される。
【００８８】
他の実施形態では、マイクロプロセサに基づいたコントローラ１３３は、その代りに、ＲＡＭ１３４に現在格納されている非パーシステントなデータが大きいデータブロック（例えば、８ＫＢ物理ディスクセクタ）へ組織されることができるかどうかを、もしもそのようなブロックがディスク装置１００で最も小さな書き込み可能でアドレス可能なデータブロックとして定義されている場合、判定する。
【００８９】
ステップ９０４で、マイクロプロセサに基づいたコントローラ１３３は、ＲＡＭ１３４に格納された非パーシステントなデータを物理ディスクセクタのようなコンプリートなアドレス可能なデータユニットでフラッシュメモリデバイス１３５に書く。ステップ９０５で、マイクロプロセサに基づいたコントローラ１３３は、フラッシュキャッシュ動作が完了したというアクノリッジメッセージをホスト１０へ送る。
【００９０】
ステップ９１１で、マイクロプロセサに基づいたコントローラ１３３は、ＲＡＭ１３４に格納された非パーシステントなデータの先頭部分を、コンプリートなアドレス可能なデータのユニットで、フラッシュメモリデバイス１３５へ書く。
【００９１】
ステップ９１２Ａでは、マイクロプロセサに基づいたコントローラ１３３は、ＲＡＭ１３４に格納された非パーシステントなデータの残り部分をフラッシュメモリデバイス１３５中のアドレス可能な格納ユニットのような所定のブロック中のホストセクタの第１グループに書く。１つの実施形態では、アドレス可能な格納ユニットはフラッシュメモリデバイス１３５の４ＫＢの部分である。したがって、そのような実施形態では、ステップ９１２Ａでは、ＲＡＭ１３４に格納された非パーシステントなデータの残り部分は４ＫＢ未満のデータの量である。例えば、ホスト１０が５１２バイトのデータに対応するホストセクタを使用する場合、アドレス可能な格納ユニットの各々は８つのそのようなホストセクタを含み、ステップ９１２Ａでは、マイクロプロセサに基づいたコントローラ１３３は、１つ〜７つのホストセクタのデータをアドレス可能な格納ユニットに書く。
【００９２】
１つのそのような実施形態は図１２（ａ）で例証される。図１２（ａ）は、ステップ９１２Ａの終了後のフラッシュメモリデバイス１３５のアドレス可能な格納ユニット１０００を例証する。示されるように、アドレス可能な格納ユニット１０００は８つのホストセクタ１００１〜１００８を含む。ホストセクタ１００１〜１００４は、ステップ９１２Ａでそこに書かれたデータを含む。
【００９３】
ステップ９１２Ｂでは、図１２（ｂ）で例証されるように、マイクロプロセサに基づいたコントローラ１３３は、アドレス可能な格納ユニット１０００中のホストセクタの第２のグループにダミーデータ１０１０を書く。図１２（ｂ）は、ステップ９１２Ｂの終了後のフラッシュメモリデバイス１３５のアドレス可能な格納ユニット１０００を例証する。示されるように、マイクロプロセサに基づいたコントローラ１３３は、ホストセクタ１００５〜１００８にダミーデータ１０１０を書いており、それによって、アドレス可能な格納ユニット１０００を満たす。
【００９４】
図１２（ｂ）、１２（ｃ）に例証されるデータは、簡単のために「全て０」パターンを示すが、マイクロプロセサに基づいたコントローラ１３３は、フラッシュメモリデバイスに繰り返しパターンを書くことを避けるために、（当業者に周知のような）データスクランブル技術を使用してもよい。ステップ９１２Ａおよび９１２Ｂは別個の２ステップとして概念的に述べられているが、実際上、アドレス可能な格納ユニットはディスク装置１００で最も小さなアドレス可能で書き込み可能なユニットであり、データは、アドレス可能な格納ユニットに含まれた全てのホストセクタ（すなわち、ホストセクタ１００１〜１００８）に、単一のオペレーションで書かれる。したがって、ステップ９１２Ａおよび９１２Ｂが、マイクロプロセサに基づいたコントローラ１３３による単一のライト動作として同時に生じる。
【００９５】
ステップ９１３で、マイクロプロセサに基づいたコントローラ１３３は、フラッシュメモリデバイス１３５にメタデータを格納する。このメタデータは、アドレス可能な格納ユニット１０００のどのホストセクタ１００１〜１００８がＲＡＭ１３４に格納された非パーシステントなデータの残り部分を格納するか、また、どのホストセクタ１００１〜１００８がダミーデータを格納するかを示す。例えば、１つの実施形態では、ビットはホストセクタ１００１〜１００８の各々に関連されており、ステップ９１３で格納されたメタデータは、アドレス可能な格納ユニット１０００に対するこれらのビットの値を含む。
【００９６】
そのような１つの実施形態は、図１２（ｃ）で例証される。図１２（ｃ）は、ステップ９１３の終了後のフラッシュメモリデバイス１３５のアドレス可能な格納ユニット１０００を例証する。ここで、メタデータ１０２０は、ＲＡＭに格納された非パーシステントなデータおよびダミーデータ１０１０とともに格納される。いくつかの実施形態では、メタデータ１０２０は、ＲＡＭ１３４からの非パーシステントなデータを含む、アドレス可能な格納ユニット１００の個々のホストセクタに関連するアドレス情報（例えばＬＢＡ番号）を含んでもよい。
【００９７】
メタデータ１０２０は、方法９００がフラッシュキャッシュコマンドに応じて行なわれた後、アドレス可能な格納ユニット１０００からデータが読まれることを可能にする。したがって、ＲＡＭ１３４に格納された非パーシステントなデータの量がコンプリートなアドレス可能なデータブロックだけを形成するのには十分でない場合、マイクロプロセサに基づいたコントローラ１３３は、コンプリートなアドレス可能なデータブロックがフラッシュキャッシュコマンドに応じて格納されるように、データを得るための磁気ディスク１１０からの読み取りを行なわない。代わりに、コンプリートなアドレス可能なデータブロックを形成するのに不十分な非パーシステントなデータは、方法９００を用いてフラッシュメモリデバイス１３５の特別の部分に格納され、それによって、磁気ディスク１００にアクセスせずに、フラッシュキャッシュコマンドを実行する。
【００９８】
バックグランドプロセスでのように方法９００の実行に続いて、マイクロプロセサに基づいたコントローラ１３３は、格納されたデータで満たされ、ダミーデータ１０１０を含まず、フラッシュメモリデバイス１３５中で通常アクセスすることができる従来のアドレス可能な格納ユニットを形成するために、アドレス可能な格納ユニット１０００に格納されたデータをフラッシュメモリデバイス１３５に格納されるべき他のデータと統合することができる。
【００９９】
いくつかの実施形態では、アドレス可能な格納ユニット１０００は、方法９００中に使用するために特別に構成されるフラッシュメモリデバイス１３５の一部である。そのような実施形態では、フラッシュメモリデバイス１３５は多数のアドレス可能な格納ユニット１０００を含んでいてもよい。さらに、フラッシュメモリデバイス１３５は、多数のアドレス可能な格納ユニット１０００の各々に関連するメタデータ１０２０を格納するためのレジスタあるいは他のメモリ素子を含んでいてもよい。
【０１００】
いくつかの実施形態では、ディスク装置１００がホスト１０からライトコマンドを受信し、しかしまた一方ではライトコマンドの完了前にホスト１０からフラッシュキャッシュコマンドを受信する場合、方法９００は行なわれてもよい。そのような状況で、たとえライトコマンドが不揃いのデータで終わったとしても、部分的に完了したライトコマンドに関連する非パーシステントなデータは、フラッシュメモリデバイス１３５に速く格納することができる。典型的に、図６、図７で例証されるように、ライトコマンドが不揃いのデータで終わる場合、磁気ディスクからの読み取りは物理ディスクセクタのようなアドレス可能な格納ユニットを完全には満たさない非パーシステントなデータをＲＡＭ１３４に格納するために実行される。方法９００は、磁気ディスク１１０からの比較的時間を要する読み取りの必要無く、フラッシュキャッシュコマンドに応じてフラッシュメモリデバイス１３５に非パーシステントなデータが直接格納されることを可能にする。
【０１０１】
要するに、ここに記述された実施形態は、データストレージ装置のためのキャッシュを含む不揮発性ソリッドステートデバイスと磁気ディスクを含むハイブリッドドライブのキャッシュポリシーのためのシステムと方法を供給する。システムは、ＬＢＡが以前に書かれたデータに関係し、後のディスクライト動作によってオーバーラップされる時、ＬＢＡに関連するデータの中で最も最近のバージョンを不揮発性ソリッドステートデバイスへ書くように構成される。好適に、オーバーラップしたＬＢＡが後のディスクライト動作によってキャッシュから削除（trim）され、さもなければ無効とされたとしても、オーバーラップしたＬＢＡに関連するデータの中で最も最近のバージョンがキャッシュに格納されている。したがって、オーバーラップしたＬＢＡに関連するデータは、磁気ディスクのみに書かれたデータより速くアクセスすることができる、
上述のものが本発明の実施形態に向けられているが、発明の他の実施形態およびさらなる実施形態は発明の基礎的な範囲から外れずに、考案されてもよい。また、それの範囲は、続く請求項によって決定される。
【０１０２】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１０３】
１００…ディスク装置、１１０…磁気ディスク、１２７…リード／ライトヘッド、１３０…電子回路、１３３…コントローラ、１３４…ＲＡＭ、１３５…フラッシュメモリデバイス、１３６…ＦＭＧＲ。
【図１】
2016062585.tif 000003
【図２】
2016062585.tif 000004
【図３】
2016062585.tif 000005
【図４】
2016062585.tif 000006
【図５】
2016062585.tif 000007
【図６】
2016062585.tif 000008
【図７】
2016062585.tif 000009
【図８】
2016062585.tif 000010
【図９】
2016062585.tif 000011
【図１０】
2016062585.tif 000012
【図１１】
2016062585.tif 000013
【図１２】
2016062585.tif 000014