(57)【要約】【課題】ホストから受け取られた読み出しコマンドに応じて、読み出し動作を更にスピードアップするデータフェッチング技術を提供すること。【解決手段】実施形態によれば、第１のメモリと第２のメモリとを含むデータ記憶装置におけるデータをフェッチする方法であって、前記第２のメモリは前記第１のメモリよりも少ないメモリ容量を有しており、データ記憶装置の外部から読み出しコマンドを受け取ることと（なお、前記読み出しコマンドは前記データ記憶装置から読み出されるデータのアドレスを含んでいる）、追加データのフェッチのための条件が満足されたことを決定することと、前記読み出しコマンドによって要求された前記データ、および前記第１のメモリからの前記追加データをフェッチし、前記第２のメモリの中に少なくとも前記追加データを保存することと、を備える。【選択図】  図４
2014170523.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリと第２のメモリとを含むデータ記憶装置におけるデータをフェッチする方法であって、前記第２のメモリは、前記第１のメモリよりも少ないメモリ容量を有しており、
前記データ記憶装置の外部から読み出しコマンドを受け取ることであって、前記読み出しコマンドが前記データ記憶装置から読み出されるデータのアドレスを含んでいる読み出しコマンドを受け取ることと、
追加データのフェッチのための条件が満足されたことを決定することと、
前記読み出しコマンドによって要求された前記データ、および前記第１のメモリからの前記追加データをフェッチし、前記第２のメモリの中に少なくとも前記追加データを保存することと、
を備える、データをフェッチする方法。
【請求項２】
前記保存の間に、前記読み出しコマンドによって要求された前記データもまた、前記第２のメモリに保存される、請求項１に記載の方法。
【請求項３】
前記読み出しコマンドによって要求された前記データの前記アドレス、および前記追加データのアドレスは連続している、請求項１に記載の方法。
【請求項４】
次の読み出しコマンドを受け取ることと、
前記第２メモリからの、前記次の読み出しコマンドによって要求された前記データをフェッチすることと、
を更に備える、請求項１に記載の方法。
【請求項５】
Ｎ（但し、Ｎは２以上）の読み出しコマンドのシーケンスが連続しているアドレスを含む、ということを決定するとき、前記条件は満たされる、請求項１に記載の方法。
【請求項６】
前記データ記憶から受け取られる読み出しコマンドを、コマンドキューに保存することと、
前記コマンドキューから発行される連続する読み出しコマンドが連続するアドレスを含んでいる方法で、前記コマンドキューから前記読み出しコマンドを発行することと、
を更に備える、請求項１に記載の方法。
【請求項７】
追加データのフェッチのための前記条件は、最も最近の読み出しコマンドの各々において要求されたデータのサイズを示す、請求項１に記載の方法。
【請求項８】
追加データのフェッチのための前記条件は、最も最近の読み出しコマンドの各々において要求されたデータのサイズ、および、最も最近の読み出しコマンド間の時間間隔を示す、請求項１に記載の方法。
【請求項９】
前記データ記憶装置は磁気記憶装置をさらに含んでいる、請求項１に記載の方法。
【請求項１０】
前記第１のメモリは不揮発性メモリである、請求項１に記載の方法。
【請求項１１】
データ記憶装置であって、
第１のメモリと、
前記第１のメモリより小さい記憶容量を有する第２のメモリと、
前記データ記憶装置から読み出されるデータのアドレスを含んでいる読み出しコマンドを、前記データ記憶装置の外部から受け取り、追加データのフェッチのための条件が満足されたことを決定し、前記読み出しコマンドによって要求された前記データ、および前記第１のメモリからの前記追加データをフェッチし、前記第２のメモリの中に少なくとも前記追加データを保存する、ように構成されたコントローラと、
を備えるデータ記憶装置。
【請求項１２】
前記コントローラは、前記読み出しコマンドによって要求された前記データを前記第２のメモリに保存するように構成されている、請求項１１に記載のデータ記憶装置。
【請求項１３】
前記読み出しコマンドによって要求された前記データの前記アドレス、および前記追加データのアドレスは連続している、請求項１１に記載のデータ記憶装置。
【請求項１４】
Ｎ（但し、Ｎは２以上）の読み出しコマンドのシーケンスが連続しているアドレスを含む、ということを決定するとき、前記条件は満たされる、請求項１１に記載のデータ記憶装置。
【請求項１５】
追加データのフェッチのための前記条件は、最も最近の読み出しコマンドの各々において要求されたデータのサイズ、および、最も最近の読み出しコマンド間の時間間隔を示す、請求項１２に記載のデータ記憶装置。
【請求項１６】
磁気記憶装置をさらに備え、前記コントローラは、前記磁気記憶装置への読み出しおよび書き込みを制御するように構成されている、請求項１２に記載のデータ記憶装置。
【請求項１７】
第１の、不揮発性ソリッドステートメモリと、
第２の、揮発性ソリッドステートメモリと、
前記第１のメモリについてのマッピングデータ構造、および前記第１のメモリのサイズよりも小さい桁のサイズを有する前記第２のメモリの一部分についてのキャッシュデータ構造、を維持するように構成されたコントローラと、
を備え、
前記コントローラは、読み出しコマンドに応じて前記第１のメモリからデータをフェッチし、前記読み出しコマンドに応じて前記第１のメモリから追加データを条件付きでフェッチし、次に、前記第２のメモリの前記部分の中に少なくとも前記追加データを保存するように構成されている、
データ記憶装置。
【請求項１８】
磁気記憶装置をさらに備え、前記コントローラは、前記磁気記憶装置への読み出しおよび書き込みを制御するように構成されている、請求項１７に記載のデータ記憶装置。
【請求項１９】
前記マッピングデータ構造におけるエントリの数は、前記キャッシュデータ構造におけるエントリの数よりも、２桁以上大きい、請求項１７に記載のデータ記憶装置。
【請求項２０】
Ｎ（但し、Ｎは２以上）の最も最近の読み出しコマンドのシーケンスが、連続して増える連続したアドレス範囲からのデータを要求している、ということを決定するとき、追加データのフェッチのための前記条件は満たされる、請求項１７に記載のデータ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はデータをフェッチするためのシステムおよび方法に関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤs）は、接続されたホストコンピュータのデータを永続的に保存するための不揮発性ソリッドステート（例えばフラッシュ）メモリを含んでおり、回転磁気ディスクに依存する従来のハードディスクドライブ（ＨＤＤs）よりも高いパフォーマンスを提供する。ギガバイト当りの大きなコスト差異が、ＳＳＤｓとハードディスクドライブの間にまだ存在しており、したがって、ハイブリッドドライブがよりポピュラーになってきている。ハイブリッドドライブは、ＳＳＤｓにおいて典型的に見られるよりも、より小さいサイズの不揮発性ソリッドステートメモリと組み合わされた１つまたは複数の回転磁気ディスクを含んでいる。一般に、ハイブリッドドライブは、従来のＨＤＤの容量と、ＳＳＤと同じくらい速くデータをアクセスする能力との両方を提供する。この理由のために、ハイブリッドドライブは、例えばラップトップコンピュータなどのポータブルコンピューティングデバイスにおいて、より一層一般的になると予想されている。
【０００３】
揮発性ソリッドステートメモリ、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）は、すべてのタイプのデータ記憶装置、例えば、ＨＤＤｓ、ＳＳＤ、ハイブリッドドライブにおいて、）において、読み出しおよび書き込みをスピードアップするためにキャッシュとして、一般に構成されている。読み出しの期間に、ホストが読み出しコマンドを発行するとき、ドライブのコントローラは磁気ディスクあるいはフラッシュメモリからデータを読み出し、ホストにそれを戻す。コントローラは、また、ＤＲＡＭの中に、戻されたデータのコピーを保存することができるので、その後の読み出しコマンドが同じデータを要求する場合、それは、読み出し動作をスピードアップするために、磁気ディスクあるいはフラッシュメモリの代わりにＤＲＡＭから、要求されたデータを戻すことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７９７９６３１号明細書
【特許文献２】米国特許第８１９５８７８号明細書
【特許文献３】米国特許第８２９６４９６号明細書
【特許文献４】米国特許出願公開第２００９／００８９５０１号明細書
【特許文献５】米国特許出願公開第２０１０／０２１１７３１号明細書
【特許文献６】米国特許出願公開第２０１１／００６６７９０号明細書
【特許文献７】米国特許出願公開第２０１２／０２１００５８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のデータフェッチシステムにおいては読み出し動作を高速化したい要望があった。
【０００６】
本発明の目的は、ホストから受け取られた読み出しコマンドに応じて、読み出し動作を更にスピードアップするデータフェッチング技術を提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、データ記憶装置のためのコントローラは、読み出しコマンドに応じて、読み出しコマンドにおいて要求された、より多くのデータをフラッシュメモリからフェッチし、後の読み出しをスピードアップするためにキャッシュメモリにおけるフェッチされたデータのうちのいくつか、またはすべてを保存する。追加データが条件付きでフェッチされ、そして、Ｎ（但し、Ｎは２以上）の最も最近の読み出し命令(most recent read commands)のシーケンスが、連続的に増加しているアドレスからデータを要求している、ということが決定されるとき、追加データのフェッチのための条件は満足される。
【０００８】
不揮発性ソリッドステートメモリ、および不揮発性ソリッドステートメモリより小さいサイズを有するキャッシュメモリを含んでいるデータ記憶装置におけるデータをフェッチする方法は、一実施形態によれば、不揮発性ソリッドステートメモリからのデータをフェッチするための読み出しコマンドを受け取ることと、追加データのフェッチのための条件が満足されたことを決定することと、読み出しコマンドによって要求されたデータ、および不揮発性ソリッドステートメモリからの追加データをフェッチし、キャッシュメモリの中に、少なくとも追加データを保存することと、を含んでいる。
【０００９】
一実施形態によるデータ記憶装置は、不揮発性ソリッドステートメモリと、揮発性ソリッドステートメモリより小さいサイズを有するキャッシュメモリと、不揮発性ソリッドステートメモリからデータをフェッチするための読み出しコマンドを受け取り、追加データのフェッチのための条件が満足されたことを決定し、読み出しコマンドによって要求されたデータ、および不揮発性ソリッドステートメモリからの追加データをフェッチし、キャッシュメモリの中に少なくとも追加データを保存する、ように構成されたコントローラと、を含んでいる。
【００１０】
別の実施形態によるデータ記憶装置は、第１の不揮発性ソリッドステートメモリと、第２の揮発性ソリッドステートメモリと、第１のメモリについてのマッピングデータ構造、および第１のメモリのサイズよりも小さい桁のサイズ(a size which is orders of magnitude smaller)を有する第２のメモリの一部分についてのキャッシュデータ構造、を維持するように構成されたコントローラと、を含んでいる。該コントローラは、読み出しコマンドに応じて第１のメモリからデータをフェッチし、読み出しコマンドに応じて第１のメモリから追加データを条件付きでフェッチし、次に、第２のメモリの前記部分の中に少なくとも追加データを保存する、ように構成されている。
【図面の簡単な説明】
【００１１】
【図１】図１は、一実施形態によるハイブリッドドライブの略図である。
【図２】図２は、該実施形態により構成された電子回路エレメントを備えた図１のハイブリッドドライブのブロック図である。
【図３Ａ】図３Ａは、コマンドキュー無しで構成された図１のハイブリッドドライブのコントローラのオペレーションの例を示す概略図である。
【図３Ｂ】図３Ｂは、コマンドキューを備えて構成された図１のハイブリッドドライブのコントローラのオペレーションの例を示す概略図である。
【図４】図４は、読み出し動作の実行中に行なわれる方法ステップのフローチャートである。
【図５】図５は、読み出し動作の間に、追加データのフェッチが行なわれるべきかどうかを決定するための方法を詳述するフローチャートである。
【発明を実施するための形態】
【００１２】
上記に列挙された実施形態の特徴が詳細に理解されることができる方法で、上記に簡潔に要約された実施形態のより具体的な説明が、添付された図面を参照することにより、されることができる。しかしながら、他の同等に有効な実施形態があり得るため、添付された図面は典型的な実施形態のみを示しており、したがって、それらは特許請求の範囲を制限するものと見なされるべきでない、ということに留意されるべきである。
【００１３】
図１は、実施形態による典型的なハイブリッドドライブの略図である。明確にするために、ハイブリッドドライブ１００は上部カバー無しで図示されている。ハイブリッドドライブ１００は、少なくとも１枚のストレージディスク１１０を含んでおり、ストレージディスク１１０は、スピンドルモータ１１４によって回転し、複数の同心データストレージトラックを含んでいる。スピンドルモータ１１４は、ベースプレート１１６上にマウントされている。アクチュエータアームアセンブリ１２０もまた、ベースプレート１１６上にマウントされ、データをデータストレージトラックから読み出し、データストレージトラックへ書き込むリード／ライトヘッド１２７を備えて、屈曲アーム１２２にマウントされたスライダ１２１有する。屈曲アーム１２２は、ベアリングアセンブリ１２６を中心に回転するアクチュエータアーム１２４に付けられている。ボイスコイルモータ１２８は、ストレージディスク１１０に対してスライダ１２１を動かし、それによって、ストレージディスク１１０の表面１１２に配置された所望の同心データストレージトラック上にリード／ライトヘッド１２７を位置づける。スピンドルモータ１１４、リード／ライトヘッド１２７、およびボイスコイルモータ１２８は、プリント基板１３２にマウントされている電子回路１３０に結合されている。電子回路１３０は、リードチャネル１３７、マイクロプロセッサをベースにしているコントローラ(microprocessor-based controller)１３３、ランダムアクセスメモリ（ＲＡＭ）１３４（それはダイナミックＲＡＭであってもよく、データバッファとして使用される）、および／または、フラッシュメモリデバイス１３５およびフラッシュマネージャデバイス１３６を含む。いくつかの実施形態では、リードチャネル１３７およびマイクロプロセッサをベースにしているコントローラ１３３は、例えばシステムオンチップ１３１のような、シングルチップに含まれている。いくつかの実施形態では、ハイブリッドドライブ１００は、スピンドルモータ１１４およびボイスコイルモータ１２８を駆動するためのモータドライバチップを、さらに含むことができる。さらに、他の不揮発性ソリッドステートメモリが、フラッシュメモリデバイス１３５の代わりに使用されることができる。
【００１４】
明確にするために、ハイブリッドドライブ１００は、単一のストレージディスク１１０および単一のアクチュエータアームアセンブリ１２０を用いて図示されている。ハイブリッドドライブ１００は、また、多数のストレージディスクおよび多数のアクチュエータアームアセンブリを含んでいてもよい。さらに、ストレージディスク１１０の各サイドは、屈曲アームに結合された関連のリード／ライトヘッドを有することができる。
【００１５】
ハイブリッドドライブ１００の通常動作では、データは、ストレージディスク１１０および／またはフラッシュメモリデバイス１３５に保存され、ストレージディスク１１０および／またはフラッシュメモリデバイス１３５から検索されることができる。ハイブリッドドライブ１００において、例えばフラッシュメモリデバイス１３５のような不揮発性のメモリは、低電力消費のみならず、高速の起動、ハイバネーション、レジューム、および他のデータリード−ライトオペレーションを提供するように、高速回転ストレージディスク１１０を補完する。このようなハイブリッドドライブ構成は、例えばモバイルコンピュータあるいは他のモバイルコンピューティングデバイスのような、バッテリで動作するコンピュータシステムには特に利点がある。好ましい実施形態では、フラッシュメモリデバイスは、例えば、電気的に消去され再プログラムされることができるＮＡＮＤフラッシュチップのような、不揮発性ソリッドステートストレージメディアであり、不揮発性記憶媒体としてハイブリッドドライブ１００におけるストレージディスク１１０を補完する大きさに作られる。例えば、いくつかの実施形態では、フラッシュメモリデバイス１３５は、ＲＡＭ１３４よりも大きい桁の(that is orders of magnitude larger than)データ記憶容量、例えば、ギガバイト（ＧＢ）対メガバイト（ＭＢ）、を有している。
【００１６】
実施形態は、永続的記憶のための不揮発性ソリッドステートストレージメディアと、キャッシュの目的のための、例えばＤＲＡＭなどのような、より小さいソリッドステートストレージメディアとを使用する、任意のデータ記憶装置において実行されることができる、ということが認識されるべきである。したがって、実施形態はまた、ＳＳＤｓに適用可能である。
【００１７】
図２は、実施形態によって構成された電子回路１３０のエレメントを備えたハイブリッドドライブ１００のブロック図である。示されるように、ハイブリッドドライブ１００は、ＲＡＭ１３４、フラッシュメモリデバイス１３５、フラッシュマネージャデバイス１３８、システムオンチップ１３１、および高速データパス１３８を含んでいる。ハイブリッドドライブ１００は、例えばシリアルＡＴＡ（ＳＡＴＡ）バスのような、ホストインターフェース２０を経由して、例えばホストコンピュータのような、ホスト１０に接続されている。
【００１８】
図２において図示された実施形態では、フラッシュマネージャデバイス１３６は、高速データパス１３８とフラッシュメモリデバイス１３５とのインターフェースを制御し、ＮＡＮＤインターフェースバス１３９経由でフラッシュメモリデバイス１３５に接続されている。システムオンチップ１３１は、ハイブリッドドライブ１００の動作を制御するために、マイクロプロセッサをベースにしているコントローラ１３３および他のハードウェア（リードチャネルを含む）を含んでおり、高速データパス１３８を経由してＲＡＭ１３４およびフラッシュマネージャデバイス１３６に接続されている。マイクロプロセッサをベースにしているコントローラ１３３は、例えばＡＲＭマイクロプロセッサなどのような、マイクロコントローラ、ハイブリッドドライブコントローラ、およびハイブリッドドライブ１００内の任意のコントロール回路を含むことができる、コントロールユニットである。高速データパス１３８は、例えば、ダブルデータレート（ＤＤＲ）バス、ＤＤＲ２バス、ＤＤＲ３バス、あるいは同等のものであるような、本技術において知られている高速バスである。
【００１９】
コントローラ１３３は、読み出しおよび書き込みをスピードアップするために、キャッシュとしてＲＡＭ１３４の一部分を使用する。ホスト１０が読み出しコマンド（例えばコマンド２５６）を発行するとき、コントローラ１３３は、ストレージディスク１１０から（例えば、ストレージディスクコンテンツ２５４の中から）、あるいはフラッシュメモリデバイス１３５から（例えばフラッシュメモリデバイスコンテンツ２５２の中から）、あるいはＲＡＭ１３４からデータを読み出し、ホスト１０にそれを戻す。もし、コントローラ１３３が、ＲＡＭ１３４において準備されたキャッシュからデータを得なかったならば、それは、また、戻されたデータのコピーをＲＡＭ１３４において準備されたキャッシュの中に保存もできるので、その後の読み出しコマンドが同じデータを要求する場合に、読み出し動作をスピードアップするために、それは、ストレージディスク１１０あるいはフラッシュメモリデバイス１３５の代わりに、キャッシュから要求されたデータを戻すことができる。ホスト１０が書き込みコマンド（例えばコマンド２５６）を発行するとき、コントローラ１３３は、ストレージディスク１１０の中に（例えばストレージディスクコンテンツ２５４の一部になるように）あるいはフラッシュメモリデバイス１３５の中に（例えばフラッシュメモリデバイスコンテンツ２５２の一部になるように）書き込みデータのコピーを保存することに加えて、キャッシュの中に書き込みデータのコピーを保存することが出来るので、その後の読み出しコマンドが同じデータを要求する場合に、読み出し動作をスピードアップするために、それは、ストレージディスク１１０あるいはフラッシュメモリデバイスの代わりにキャッシュから要求されたデータを戻すことができる。
【００２０】
図３Ａおよび３Ｂは、コマンドキュー３１０を備えて構成された、および備えず構成されたコントローラ１３３を示す概略図である。一般に、コマンドキューは、読み出しコマンドのためのキューおよび書き込みコマンドのためのキューを含んでもよく、あるいは、読み出しおよび書き込みコマンドの両方を含む単一のキューであってもよいが、本説明の目的のために、コマンドキュー３１０は、読み出しコマンドのためのキューであると仮定される。
【００２１】
図３Ａでは、コントローラ１３３はコマンドキュー３１０なしで構成されており、したがって、ホスト１０からの読み出しコマンド３０１は、ホスト１０から受け取った順に、コントローラ１３３のデータフェッチモジュール３２０へと直接に流れる。データフェッチモジュール３２０は、その後、読み出しコマンド３０１を、図４および５と共に下記に説明される方法でそれらが受け取られる順に、処理する。
【００２２】
対照的に、図３Ｂでは、コントローラ１３３はコマンドキュー３１０を備えて構成される。この構成で、ホスト１０からの読み出しコマンド３０１は、コマンドキュー３１０へと最初に流れ、コマンドキュー３１０は、それらがコントローラ１３３のデータフェッチモジュール３２０に達する前に、それらを（順序づけられた読み出しコマンド３０２に）順序づける。データフェッチモジュール３２０は、その後、順序づけられた読み出しコマンド３０２を、図４および５と共に下記に説明される方法でそれらが受け取られる順に、処理する。
【００２３】
コマンドキュー３１０によって実行される並び替えは、読み出しコマンドに対応するＬＢＡｓに関する。３Ａおよび３Ｂにおいて示される例では、読み出しコマンド、ＲＯ、Ｒ１、Ｒ２、Ｒ３、Ｒ４、およびＲ５は、この順でホスト１０から受け取られ、これらの読み出しコマンドに対応するＬＢＡｓは、１０１−１０２（２つのデータブロックのアドレスを表わす）、１０３−１０５（３つのデータブロックのアドレスを表わす）、１０６、１１０、１０７−１０８、および１０９として、それぞれ示されている。読み出しコマンドＲＯ、Ｒ１、およびＲ２に対応するＬＢＡｓが既に順序づけられているので、コマンドキュー３１０は、読み出しコマンドＲＯ、Ｒ１、およびＲ２を、それらがホスト１０から受け取られる順で発行する。しかしながら、読み出しコマンドＲ３は順が狂っており(out of order)、したがって、コマンドキュー３１０は、読み出しコマンドＲ４およびＲ５を発行した後に読み出しコマンドＲ３を発行する。
【００２４】
実施形態は、コマンドキュー３１０無しで、あるいはコマンドキュー３１０を備えてキューなしで実行されることができる。さらに、上記に説明された方法で並び替えを実行する限り、コマンドキュー３１０をインプリメントする実施形態は、コマンドキュー３１０のなんらかの特定の構成あるいはサイズに制限されない。
【００２５】
図４は、実施形態による読み出し動作の実行中に行なわれる方法ステップのフローチャートである。ここに説明された実施形態では、コントローラ１３３のデータフェッチモジュール３２０がこれらのステップを行なっている。
【００２６】
この方法は、処理のための読み出しコマンドをデータフェッチモジュール３２０が受け取るステップ４０２で始まる。読み出しコマンドは、図３Ａにおいて示されるようにホスト１０から直接に受け取られることができ、あるいは図３Ｂにおいて示されるようにコマンドキュー３１０から、受け取られることができる。ステップ４０４において、データフェッチモジュール３２０は、読み出しコマンドによって対象とされた読み出しデータがキャッシュに入れられている(is cached)（すなわち、ＲＡＭ１３４において準備されたキャッシュに保存されている）のかどうかを、判断する。読み出しデータがキャッシュに入れられている場合、それはステップ４０６でキャッシュから読み出され、ステップ４１６でホスト１０に戻される。方法はその後終了する。
【００２７】
一方、読み出しコマンドによって対象とされた読み出しデータがキャッシュに入れられていないことを、データフェッチモジュール３２０がステップ４０４で決定する場合は、それは、読み出されたデータのフェッチングが正常に実行されているかどうかを決定するために決定ブロック４０８を実行する。正常であれば、データフェッチモジュール３２０は、ステップ４１０において、読み出しコマンドにおいて特定された１つ以上のＬＢＡｓからデータをフェッチし、ステップ４１６において、フェッチされたデータをホストに戻す。ここに説明された実施形態では、正常なデータフェッチングは、次の条件のうちのいずれかの下で発生するであろう：（１）データがフラッシュメモリデバイス１３５に保存されていない；（２）読み出しコマンドが、最も最近の処理された読み出しコマンドに関して順が狂っている；そして、（３）要求された読み出しデータのサイズが大きすぎ、最も最近の読み出しコマンドが処理されて以来、十分な時間が経過していない。いくつかの実施形態では、ステップ４１０においてフェッチされたデータのコピーは、（破線の矢によって示されるように）ステップ４１４において、キャッシュの中に保存されることができる。
【００２８】
データフェッチングが正常に行なわれていないことを、データフェッチモジュール３２０が決定ブロック４０８において決定する場合は、ステップ４１２が実行される。ステップ４１２において、データフェッチモジュール３２０は、ステップ４１０で読み出しコマンドにおいて特定された１つ以上のＬＢＡｓからデータをフェッチし、読み出しコマンドにおいて特定されたＬＢＡｓに続くＭの追加のＬＢＡｓからもさらにデータをフェッチする。Ｍは、１以上の、典型的には約１２８の、設定可能な値である。その後、ステップ４１２でフェッチされたデータのうちのいくつかあるいはすべてが、ステップ４１４において、キャッシュの中に保存され、ステップ４１６において、ホスト１０に戻される。１つの実施形態では、Ｍの追加のＬＢＡａからフェッチされたデータのみが、ステップ４１４においてキャッシュの中に保存される。他の実施形態では、読み出しコマンドにおいて特定された１つ以上のＬＢＡｓからフェッチされたデータ、およびＭの追加のＬＢＡからフェッチされたデータの両方が、ステップ４１４においてキャッシュの中に保存される。追加データのフェッチングのための条件は次のとおりである：（１）読み出しコマンドの連続するストリームが、フラッシュメモリデバイス１３５の連続するＬＢＡｓ（あるいはいくつかの実施形態においては増加するＬＢＡｓ）から（例えば、３．５ＫＢよりも大きくない）小さいデータの塊を要求する場合；あるいは、（２）読み出しコマンドの連続するストリームが、フラッシュメモリデバイス１３５の連続するＬＢＡｓ（あるいはいくつかの実施形態においては増加するＬＢＡｓ）から（例えば、３．５ＫＢから６４ＫＢまでの）大きいデータの塊を要求し、読み出しコマンド間に十分な時間が経過した（例えば３ミリセカンド）場合。フラッシュメモリデバイス１３５からの頻繁な読み出しは、ＲＡＭ１３４に準備されたキャッシュからの読み出しよりも、はるかに遅いので、条件（１）の下では、より速い読み出しが達成される。連続する読み出しコマンド間の時間は、（例えば、３．５ＫＢから６４ＫＢまでの）大きいデータの塊を、ＲＡＭ１３４に準備されたキャッシュの中にフェッチする機会を、パフォーマンスに不利な条件を課すことなく、データフェッチモジュール３２０に与え、一度キャッシュの中にフェッチされれば、データは、フラッシュメモリデバイス１３５からよりも早く、キャッシュから読み出されることができるので、条件（２）の下では、より速い読み出しが達成される。コマンド間の時間がさらに長い場合（例えば１２ミリセカンド）は、例えば、データの塊のサイズに関し、より高い制限（例えば２５６ＫＢ）を有する更なる状況に対しても、条件（２）は適用されることが出来るであろう。
【００２９】
図５は、図４のステップ４０８を詳述するフローチャートであり、それは、追加データのフェッチが読み出し動作中に実行されるべきかどうかを決定するために、コントローラ１３３のデータフェッチモジュール３２０によって実行される。始めに、データフェッチモジュール３２０がステップ５０２において、要求された読み出しデータがフラッシュメモリデバイス１３５の中に保存されているかどうかを判断する。もし保存されていないのであれば、連続する読み出しの数をカウントするように構成された可変カウントは、ステップ５１８においてゼロにリセットされ、正常なデータフェッチについてのフラグは、ステップ５２０において、ＴＲＵＥにセットされる。ステップ５２０の後に、フローは、図４の方法に戻る。
【００３０】
他の条件は、ステップ５１８および５２０の実行をもたらす。例えば、要求された読み出しデータのサイズが大きすぎる（例えば６４ＫＢよりも大きい）（ステップ５０３）、要求された読み出しデータのサイズが大きい（例えば３．５ＫＢから６４ＫＢ）（ステップ５０４）、また、最も最近発行された読み出しコマンド以来経過した時間量が、予め決定されたしきい値時間よりも少ない（例えば３ミリセカンド未満）（ステップ５０６）である場合は、データフェッチモジュール３２０は、ステップ５１８および５２０を実行する。さらに、現在の読み出しＬＢＡが、最も最近発行された読み出しＬＢＡに関して連続しない場合（ステップ５０８）は、データフェッチモジュール３２０はステップ５１８および５２０を実行する。いくつかの実施形態では、読み出しＬＢＡが最も最近発行された読み出しＬＢＡに関して連続するかどうかをチェックする代わりに、ステップ５０８におけるチェックは、最も最近発行された読み出しＬＢＡに関して順序付けされている（すなわち、現在の読み出しＬＢＡ＞最も最近発行された読み出しＬＢＡ〉のかどうかであってもよい。
【００３１】
一方、正常なデータフェッチのための条件のどれも満たされない場合は、ステップ５１０が実行され、可変カウントが、１インクリメントされる、あるいはいくつかの実施形態では、コマンドによってアドレス指定された論理ブロックの数に比例した値だけインクリメントされる。データフェッチモジュール３２０が、ステップ５１２において、可変カウントがＮ（但し、Ｎは１以上の設定可能なパラメータである）より大きいと決定する場合、そのとき、追加データフェッチのための条件は満足されたと見なされることができ、ステップ５１４および５１６が実行される。ステップ５１４において、可変カウントは、ゼロにリセットされ、また、ステップ５１６において、正常なデータフェッチについてのフラグがＦＡＬＳＥにセットされる。このフラグをＦＡＬＳＥにセットすることによって、フローが図４の方法に戻るとき、データフェッチモジュール３２０は、ステップ４１２の追加データのフェッチを実行する。
【００３２】
ステップ５１２に戻って、データフェッチモジュール３２０が、ステップ５１２において、可変カウントがＮ以下であると決定する場合、このとき、追加データのフェッチのための条件は満たされていないと見なされ、したがって、正常なデータフェッチのためのフラグをＴＲＵＥにセットするために、ステップ５２０が実行される。
【００３３】
しかしながら、この条件は次の読み出しコマンドで満たされてもよいので、可変カウントは、ゼロにリセットされない（言いかえれば、現在のカウント値は保持される）。
【００３４】
上記に説明されたデータフェッチング技術を用いて、最も最近の先の読み出しコマンドのＬＢＡに順々に次のフラッシュメモリ１３５におけるＬＢＡを対象とする後の読み出しコマンドが発行されるとき、読み出しデータは、ＲＡＭ１３４において準備されたキャッシュから検索されることができる。キャッシュ検索テーブルにおけるエントリの数が、フラッシュ検索テーブルにおけるエントリの数よりも桁違いに（２から３桁）すくない(several (two or more) orders of magnitude less than)（典型的に、何百  対  何百万あるいはそれ以上）ので、キャッシュにおけるデータ検索に関連したオーバヘッドは、フラッシュメモリデバイス１３５におけるデータ検索よりもるかに低い。この理由のため、後の読み出しコマンドは、従来よりも速く処理されることができる。
【００３５】
上記は実施形態を対象としているが、他の、およびさらなる実施形態が、その基礎的な範囲を逸脱することなく考えだされることができ、その範囲は、添付の特許請求の範囲によって決定される。
【符号の説明】
【００３６】
１００…ハイブリッドドライブ、１１０…ストレージディスク、１１４…スピンドルモータ、１２０…アクチュエータアームアセンブリ、１２１…スライダ、１２２…屈曲アーム、１２４…アクチュエータアーム、１２７…リード／ライトヘッド、１２８…ボイスコイルモータ、１３０…電子回路、１３２…プリント基板、１３３…コントローラ、１３４…ランダムアクセスメモリ、１３５…フラッシュメモリデバイス、１３６…フラッシュマネージャデバイス、１３７…リードチャネル
【図１】
2014170523.tif 000003
【図２】
2014170523.tif 000004
【図３Ａ】
2014170523.tif 000005
【図３Ｂ】
2014170523.tif 000006
【図４】
2014170523.tif 000007
【図５】
2014170523.tif 000008