JP2014170523A - データ記憶装置における読み出し期間中にデータをフェッチするためのシステムおよび方法 - Google Patents
データ記憶装置における読み出し期間中にデータをフェッチするためのシステムおよび方法 Download PDFInfo
- Publication number
- JP2014170523A JP2014170523A JP2013259266A JP2013259266A JP2014170523A JP 2014170523 A JP2014170523 A JP 2014170523A JP 2013259266 A JP2013259266 A JP 2013259266A JP 2013259266 A JP2013259266 A JP 2013259266A JP 2014170523 A JP2014170523 A JP 2014170523A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- read
- storage device
- read command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】ホストから受け取られた読み出しコマンドに応じて、読み出し動作を更にスピードアップするデータフェッチング技術を提供すること。
【解決手段】実施形態によれば、第1のメモリと第2のメモリとを含むデータ記憶装置におけるデータをフェッチする方法であって、前記第2のメモリは前記第1のメモリよりも少ないメモリ容量を有しており、データ記憶装置の外部から読み出しコマンドを受け取ることと(なお、前記読み出しコマンドは前記データ記憶装置から読み出されるデータのアドレスを含んでいる)、追加データのフェッチのための条件が満足されたことを決定することと、前記読み出しコマンドによって要求された前記データ、および前記第1のメモリからの前記追加データをフェッチし、前記第2のメモリの中に少なくとも前記追加データを保存することと、を備える。
【選択図】 図4
【解決手段】実施形態によれば、第1のメモリと第2のメモリとを含むデータ記憶装置におけるデータをフェッチする方法であって、前記第2のメモリは前記第1のメモリよりも少ないメモリ容量を有しており、データ記憶装置の外部から読み出しコマンドを受け取ることと(なお、前記読み出しコマンドは前記データ記憶装置から読み出されるデータのアドレスを含んでいる)、追加データのフェッチのための条件が満足されたことを決定することと、前記読み出しコマンドによって要求された前記データ、および前記第1のメモリからの前記追加データをフェッチし、前記第2のメモリの中に少なくとも前記追加データを保存することと、を備える。
【選択図】 図4
Description
本発明の実施形態はデータをフェッチするためのシステムおよび方法に関する。
ソリッドステートドライブ(SSDs)は、接続されたホストコンピュータのデータを永続的に保存するための不揮発性ソリッドステート(例えばフラッシュ)メモリを含んでおり、回転磁気ディスクに依存する従来のハードディスクドライブ(HDDs)よりも高いパフォーマンスを提供する。ギガバイト当りの大きなコスト差異が、SSDsとハードディスクドライブの間にまだ存在しており、したがって、ハイブリッドドライブがよりポピュラーになってきている。ハイブリッドドライブは、SSDsにおいて典型的に見られるよりも、より小さいサイズの不揮発性ソリッドステートメモリと組み合わされた1つまたは複数の回転磁気ディスクを含んでいる。一般に、ハイブリッドドライブは、従来のHDDの容量と、SSDと同じくらい速くデータをアクセスする能力との両方を提供する。この理由のために、ハイブリッドドライブは、例えばラップトップコンピュータなどのポータブルコンピューティングデバイスにおいて、より一層一般的になると予想されている。
揮発性ソリッドステートメモリ、例えば、ダイナミックランダムアクセスメモリ(DRAM)は、すべてのタイプのデータ記憶装置、例えば、HDDs、SSD、ハイブリッドドライブにおいて、)において、読み出しおよび書き込みをスピードアップするためにキャッシュとして、一般に構成されている。読み出しの期間に、ホストが読み出しコマンドを発行するとき、ドライブのコントローラは磁気ディスクあるいはフラッシュメモリからデータを読み出し、ホストにそれを戻す。コントローラは、また、DRAMの中に、戻されたデータのコピーを保存することができるので、その後の読み出しコマンドが同じデータを要求する場合、それは、読み出し動作をスピードアップするために、磁気ディスクあるいはフラッシュメモリの代わりにDRAMから、要求されたデータを戻すことができる。
従来のデータフェッチシステムにおいては読み出し動作を高速化したい要望があった。
本発明の目的は、ホストから受け取られた読み出しコマンドに応じて、読み出し動作を更にスピードアップするデータフェッチング技術を提供することである。
実施形態によれば、データ記憶装置のためのコントローラは、読み出しコマンドに応じて、読み出しコマンドにおいて要求された、より多くのデータをフラッシュメモリからフェッチし、後の読み出しをスピードアップするためにキャッシュメモリにおけるフェッチされたデータのうちのいくつか、またはすべてを保存する。追加データが条件付きでフェッチされ、そして、N(但し、Nは2以上)の最も最近の読み出し命令(most recent read commands)のシーケンスが、連続的に増加しているアドレスからデータを要求している、ということが決定されるとき、追加データのフェッチのための条件は満足される。
不揮発性ソリッドステートメモリ、および不揮発性ソリッドステートメモリより小さいサイズを有するキャッシュメモリを含んでいるデータ記憶装置におけるデータをフェッチする方法は、一実施形態によれば、不揮発性ソリッドステートメモリからのデータをフェッチするための読み出しコマンドを受け取ることと、追加データのフェッチのための条件が満足されたことを決定することと、読み出しコマンドによって要求されたデータ、および不揮発性ソリッドステートメモリからの追加データをフェッチし、キャッシュメモリの中に、少なくとも追加データを保存することと、を含んでいる。
一実施形態によるデータ記憶装置は、不揮発性ソリッドステートメモリと、揮発性ソリッドステートメモリより小さいサイズを有するキャッシュメモリと、不揮発性ソリッドステートメモリからデータをフェッチするための読み出しコマンドを受け取り、追加データのフェッチのための条件が満足されたことを決定し、読み出しコマンドによって要求されたデータ、および不揮発性ソリッドステートメモリからの追加データをフェッチし、キャッシュメモリの中に少なくとも追加データを保存する、ように構成されたコントローラと、を含んでいる。
別の実施形態によるデータ記憶装置は、第1の不揮発性ソリッドステートメモリと、第2の揮発性ソリッドステートメモリと、第1のメモリについてのマッピングデータ構造、および第1のメモリのサイズよりも小さい桁のサイズ(a size which is orders of magnitude smaller)を有する第2のメモリの一部分についてのキャッシュデータ構造、を維持するように構成されたコントローラと、を含んでいる。該コントローラは、読み出しコマンドに応じて第1のメモリからデータをフェッチし、読み出しコマンドに応じて第1のメモリから追加データを条件付きでフェッチし、次に、第2のメモリの前記部分の中に少なくとも追加データを保存する、ように構成されている。
上記に列挙された実施形態の特徴が詳細に理解されることができる方法で、上記に簡潔に要約された実施形態のより具体的な説明が、添付された図面を参照することにより、されることができる。しかしながら、他の同等に有効な実施形態があり得るため、添付された図面は典型的な実施形態のみを示しており、したがって、それらは特許請求の範囲を制限するものと見なされるべきでない、ということに留意されるべきである。
図1は、実施形態による典型的なハイブリッドドライブの略図である。明確にするために、ハイブリッドドライブ100は上部カバー無しで図示されている。ハイブリッドドライブ100は、少なくとも1枚のストレージディスク110を含んでおり、ストレージディスク110は、スピンドルモータ114によって回転し、複数の同心データストレージトラックを含んでいる。スピンドルモータ114は、ベースプレート116上にマウントされている。アクチュエータアームアセンブリ120もまた、ベースプレート116上にマウントされ、データをデータストレージトラックから読み出し、データストレージトラックへ書き込むリード/ライトヘッド127を備えて、屈曲アーム122にマウントされたスライダ121有する。屈曲アーム122は、ベアリングアセンブリ126を中心に回転するアクチュエータアーム124に付けられている。ボイスコイルモータ128は、ストレージディスク110に対してスライダ121を動かし、それによって、ストレージディスク110の表面112に配置された所望の同心データストレージトラック上にリード/ライトヘッド127を位置づける。スピンドルモータ114、リード/ライトヘッド127、およびボイスコイルモータ128は、プリント基板132にマウントされている電子回路130に結合されている。電子回路130は、リードチャネル137、マイクロプロセッサをベースにしているコントローラ(microprocessor-based controller)133、ランダムアクセスメモリ(RAM)134(それはダイナミックRAMであってもよく、データバッファとして使用される)、および/または、フラッシュメモリデバイス135およびフラッシュマネージャデバイス136を含む。いくつかの実施形態では、リードチャネル137およびマイクロプロセッサをベースにしているコントローラ133は、例えばシステムオンチップ131のような、シングルチップに含まれている。いくつかの実施形態では、ハイブリッドドライブ100は、スピンドルモータ114およびボイスコイルモータ128を駆動するためのモータドライバチップを、さらに含むことができる。さらに、他の不揮発性ソリッドステートメモリが、フラッシュメモリデバイス135の代わりに使用されることができる。
明確にするために、ハイブリッドドライブ100は、単一のストレージディスク110および単一のアクチュエータアームアセンブリ120を用いて図示されている。ハイブリッドドライブ100は、また、多数のストレージディスクおよび多数のアクチュエータアームアセンブリを含んでいてもよい。さらに、ストレージディスク110の各サイドは、屈曲アームに結合された関連のリード/ライトヘッドを有することができる。
ハイブリッドドライブ100の通常動作では、データは、ストレージディスク110および/またはフラッシュメモリデバイス135に保存され、ストレージディスク110および/またはフラッシュメモリデバイス135から検索されることができる。ハイブリッドドライブ100において、例えばフラッシュメモリデバイス135のような不揮発性のメモリは、低電力消費のみならず、高速の起動、ハイバネーション、レジューム、および他のデータリード−ライトオペレーションを提供するように、高速回転ストレージディスク110を補完する。このようなハイブリッドドライブ構成は、例えばモバイルコンピュータあるいは他のモバイルコンピューティングデバイスのような、バッテリで動作するコンピュータシステムには特に利点がある。好ましい実施形態では、フラッシュメモリデバイスは、例えば、電気的に消去され再プログラムされることができるNANDフラッシュチップのような、不揮発性ソリッドステートストレージメディアであり、不揮発性記憶媒体としてハイブリッドドライブ100におけるストレージディスク110を補完する大きさに作られる。例えば、いくつかの実施形態では、フラッシュメモリデバイス135は、RAM134よりも大きい桁の(that is orders of magnitude larger than)データ記憶容量、例えば、ギガバイト(GB)対メガバイト(MB)、を有している。
実施形態は、永続的記憶のための不揮発性ソリッドステートストレージメディアと、キャッシュの目的のための、例えばDRAMなどのような、より小さいソリッドステートストレージメディアとを使用する、任意のデータ記憶装置において実行されることができる、ということが認識されるべきである。したがって、実施形態はまた、SSDsに適用可能である。
図2は、実施形態によって構成された電子回路130のエレメントを備えたハイブリッドドライブ100のブロック図である。示されるように、ハイブリッドドライブ100は、RAM134、フラッシュメモリデバイス135、フラッシュマネージャデバイス138、システムオンチップ131、および高速データパス138を含んでいる。ハイブリッドドライブ100は、例えばシリアルATA(SATA)バスのような、ホストインターフェース20を経由して、例えばホストコンピュータのような、ホスト10に接続されている。
図2において図示された実施形態では、フラッシュマネージャデバイス136は、高速データパス138とフラッシュメモリデバイス135とのインターフェースを制御し、NANDインターフェースバス139経由でフラッシュメモリデバイス135に接続されている。システムオンチップ131は、ハイブリッドドライブ100の動作を制御するために、マイクロプロセッサをベースにしているコントローラ133および他のハードウェア(リードチャネルを含む)を含んでおり、高速データパス138を経由してRAM134およびフラッシュマネージャデバイス136に接続されている。マイクロプロセッサをベースにしているコントローラ133は、例えばARMマイクロプロセッサなどのような、マイクロコントローラ、ハイブリッドドライブコントローラ、およびハイブリッドドライブ100内の任意のコントロール回路を含むことができる、コントロールユニットである。高速データパス138は、例えば、ダブルデータレート(DDR)バス、DDR2バス、DDR3バス、あるいは同等のものであるような、本技術において知られている高速バスである。
コントローラ133は、読み出しおよび書き込みをスピードアップするために、キャッシュとしてRAM134の一部分を使用する。ホスト10が読み出しコマンド(例えばコマンド256)を発行するとき、コントローラ133は、ストレージディスク110から(例えば、ストレージディスクコンテンツ254の中から)、あるいはフラッシュメモリデバイス135から(例えばフラッシュメモリデバイスコンテンツ252の中から)、あるいはRAM134からデータを読み出し、ホスト10にそれを戻す。もし、コントローラ133が、RAM134において準備されたキャッシュからデータを得なかったならば、それは、また、戻されたデータのコピーをRAM134において準備されたキャッシュの中に保存もできるので、その後の読み出しコマンドが同じデータを要求する場合に、読み出し動作をスピードアップするために、それは、ストレージディスク110あるいはフラッシュメモリデバイス135の代わりに、キャッシュから要求されたデータを戻すことができる。ホスト10が書き込みコマンド(例えばコマンド256)を発行するとき、コントローラ133は、ストレージディスク110の中に(例えばストレージディスクコンテンツ254の一部になるように)あるいはフラッシュメモリデバイス135の中に(例えばフラッシュメモリデバイスコンテンツ252の一部になるように)書き込みデータのコピーを保存することに加えて、キャッシュの中に書き込みデータのコピーを保存することが出来るので、その後の読み出しコマンドが同じデータを要求する場合に、読み出し動作をスピードアップするために、それは、ストレージディスク110あるいはフラッシュメモリデバイスの代わりにキャッシュから要求されたデータを戻すことができる。
図3Aおよび3Bは、コマンドキュー310を備えて構成された、および備えず構成されたコントローラ133を示す概略図である。一般に、コマンドキューは、読み出しコマンドのためのキューおよび書き込みコマンドのためのキューを含んでもよく、あるいは、読み出しおよび書き込みコマンドの両方を含む単一のキューであってもよいが、本説明の目的のために、コマンドキュー310は、読み出しコマンドのためのキューであると仮定される。
図3Aでは、コントローラ133はコマンドキュー310なしで構成されており、したがって、ホスト10からの読み出しコマンド301は、ホスト10から受け取った順に、コントローラ133のデータフェッチモジュール320へと直接に流れる。データフェッチモジュール320は、その後、読み出しコマンド301を、図4および5と共に下記に説明される方法でそれらが受け取られる順に、処理する。
対照的に、図3Bでは、コントローラ133はコマンドキュー310を備えて構成される。この構成で、ホスト10からの読み出しコマンド301は、コマンドキュー310へと最初に流れ、コマンドキュー310は、それらがコントローラ133のデータフェッチモジュール320に達する前に、それらを(順序づけられた読み出しコマンド302に)順序づける。データフェッチモジュール320は、その後、順序づけられた読み出しコマンド302を、図4および5と共に下記に説明される方法でそれらが受け取られる順に、処理する。
コマンドキュー310によって実行される並び替えは、読み出しコマンドに対応するLBAsに関する。3Aおよび3Bにおいて示される例では、読み出しコマンド、RO、R1、R2、R3、R4、およびR5は、この順でホスト10から受け取られ、これらの読み出しコマンドに対応するLBAsは、101−102(2つのデータブロックのアドレスを表わす)、103−105(3つのデータブロックのアドレスを表わす)、106、110、107−108、および109として、それぞれ示されている。読み出しコマンドRO、R1、およびR2に対応するLBAsが既に順序づけられているので、コマンドキュー310は、読み出しコマンドRO、R1、およびR2を、それらがホスト10から受け取られる順で発行する。しかしながら、読み出しコマンドR3は順が狂っており(out of order)、したがって、コマンドキュー310は、読み出しコマンドR4およびR5を発行した後に読み出しコマンドR3を発行する。
実施形態は、コマンドキュー310無しで、あるいはコマンドキュー310を備えてキューなしで実行されることができる。さらに、上記に説明された方法で並び替えを実行する限り、コマンドキュー310をインプリメントする実施形態は、コマンドキュー310のなんらかの特定の構成あるいはサイズに制限されない。
図4は、実施形態による読み出し動作の実行中に行なわれる方法ステップのフローチャートである。ここに説明された実施形態では、コントローラ133のデータフェッチモジュール320がこれらのステップを行なっている。
この方法は、処理のための読み出しコマンドをデータフェッチモジュール320が受け取るステップ402で始まる。読み出しコマンドは、図3Aにおいて示されるようにホスト10から直接に受け取られることができ、あるいは図3Bにおいて示されるようにコマンドキュー310から、受け取られることができる。ステップ404において、データフェッチモジュール320は、読み出しコマンドによって対象とされた読み出しデータがキャッシュに入れられている(is cached)(すなわち、RAM134において準備されたキャッシュに保存されている)のかどうかを、判断する。読み出しデータがキャッシュに入れられている場合、それはステップ406でキャッシュから読み出され、ステップ416でホスト10に戻される。方法はその後終了する。
一方、読み出しコマンドによって対象とされた読み出しデータがキャッシュに入れられていないことを、データフェッチモジュール320がステップ404で決定する場合は、それは、読み出されたデータのフェッチングが正常に実行されているかどうかを決定するために決定ブロック408を実行する。正常であれば、データフェッチモジュール320は、ステップ410において、読み出しコマンドにおいて特定された1つ以上のLBAsからデータをフェッチし、ステップ416において、フェッチされたデータをホストに戻す。ここに説明された実施形態では、正常なデータフェッチングは、次の条件のうちのいずれかの下で発生するであろう:(1)データがフラッシュメモリデバイス135に保存されていない;(2)読み出しコマンドが、最も最近の処理された読み出しコマンドに関して順が狂っている;そして、(3)要求された読み出しデータのサイズが大きすぎ、最も最近の読み出しコマンドが処理されて以来、十分な時間が経過していない。いくつかの実施形態では、ステップ410においてフェッチされたデータのコピーは、(破線の矢によって示されるように)ステップ414において、キャッシュの中に保存されることができる。
データフェッチングが正常に行なわれていないことを、データフェッチモジュール320が決定ブロック408において決定する場合は、ステップ412が実行される。ステップ412において、データフェッチモジュール320は、ステップ410で読み出しコマンドにおいて特定された1つ以上のLBAsからデータをフェッチし、読み出しコマンドにおいて特定されたLBAsに続くMの追加のLBAsからもさらにデータをフェッチする。Mは、1以上の、典型的には約128の、設定可能な値である。その後、ステップ412でフェッチされたデータのうちのいくつかあるいはすべてが、ステップ414において、キャッシュの中に保存され、ステップ416において、ホスト10に戻される。1つの実施形態では、Mの追加のLBAaからフェッチされたデータのみが、ステップ414においてキャッシュの中に保存される。他の実施形態では、読み出しコマンドにおいて特定された1つ以上のLBAsからフェッチされたデータ、およびMの追加のLBAからフェッチされたデータの両方が、ステップ414においてキャッシュの中に保存される。追加データのフェッチングのための条件は次のとおりである:(1)読み出しコマンドの連続するストリームが、フラッシュメモリデバイス135の連続するLBAs(あるいはいくつかの実施形態においては増加するLBAs)から(例えば、3.5KBよりも大きくない)小さいデータの塊を要求する場合;あるいは、(2)読み出しコマンドの連続するストリームが、フラッシュメモリデバイス135の連続するLBAs(あるいはいくつかの実施形態においては増加するLBAs)から(例えば、3.5KBから64KBまでの)大きいデータの塊を要求し、読み出しコマンド間に十分な時間が経過した(例えば3ミリセカンド)場合。フラッシュメモリデバイス135からの頻繁な読み出しは、RAM134に準備されたキャッシュからの読み出しよりも、はるかに遅いので、条件(1)の下では、より速い読み出しが達成される。連続する読み出しコマンド間の時間は、(例えば、3.5KBから64KBまでの)大きいデータの塊を、RAM134に準備されたキャッシュの中にフェッチする機会を、パフォーマンスに不利な条件を課すことなく、データフェッチモジュール320に与え、一度キャッシュの中にフェッチされれば、データは、フラッシュメモリデバイス135からよりも早く、キャッシュから読み出されることができるので、条件(2)の下では、より速い読み出しが達成される。コマンド間の時間がさらに長い場合(例えば12ミリセカンド)は、例えば、データの塊のサイズに関し、より高い制限(例えば256KB)を有する更なる状況に対しても、条件(2)は適用されることが出来るであろう。
図5は、図4のステップ408を詳述するフローチャートであり、それは、追加データのフェッチが読み出し動作中に実行されるべきかどうかを決定するために、コントローラ133のデータフェッチモジュール320によって実行される。始めに、データフェッチモジュール320がステップ502において、要求された読み出しデータがフラッシュメモリデバイス135の中に保存されているかどうかを判断する。もし保存されていないのであれば、連続する読み出しの数をカウントするように構成された可変カウントは、ステップ518においてゼロにリセットされ、正常なデータフェッチについてのフラグは、ステップ520において、TRUEにセットされる。ステップ520の後に、フローは、図4の方法に戻る。
他の条件は、ステップ518および520の実行をもたらす。例えば、要求された読み出しデータのサイズが大きすぎる(例えば64KBよりも大きい)(ステップ503)、要求された読み出しデータのサイズが大きい(例えば3.5KBから64KB)(ステップ504)、また、最も最近発行された読み出しコマンド以来経過した時間量が、予め決定されたしきい値時間よりも少ない(例えば3ミリセカンド未満)(ステップ506)である場合は、データフェッチモジュール320は、ステップ518および520を実行する。さらに、現在の読み出しLBAが、最も最近発行された読み出しLBAに関して連続しない場合(ステップ508)は、データフェッチモジュール320はステップ518および520を実行する。いくつかの実施形態では、読み出しLBAが最も最近発行された読み出しLBAに関して連続するかどうかをチェックする代わりに、ステップ508におけるチェックは、最も最近発行された読み出しLBAに関して順序付けされている(すなわち、現在の読み出しLBA>最も最近発行された読み出しLBA〉のかどうかであってもよい。
一方、正常なデータフェッチのための条件のどれも満たされない場合は、ステップ510が実行され、可変カウントが、1インクリメントされる、あるいはいくつかの実施形態では、コマンドによってアドレス指定された論理ブロックの数に比例した値だけインクリメントされる。データフェッチモジュール320が、ステップ512において、可変カウントがN(但し、Nは1以上の設定可能なパラメータである)より大きいと決定する場合、そのとき、追加データフェッチのための条件は満足されたと見なされることができ、ステップ514および516が実行される。ステップ514において、可変カウントは、ゼロにリセットされ、また、ステップ516において、正常なデータフェッチについてのフラグがFALSEにセットされる。このフラグをFALSEにセットすることによって、フローが図4の方法に戻るとき、データフェッチモジュール320は、ステップ412の追加データのフェッチを実行する。
ステップ512に戻って、データフェッチモジュール320が、ステップ512において、可変カウントがN以下であると決定する場合、このとき、追加データのフェッチのための条件は満たされていないと見なされ、したがって、正常なデータフェッチのためのフラグをTRUEにセットするために、ステップ520が実行される。
しかしながら、この条件は次の読み出しコマンドで満たされてもよいので、可変カウントは、ゼロにリセットされない(言いかえれば、現在のカウント値は保持される)。
上記に説明されたデータフェッチング技術を用いて、最も最近の先の読み出しコマンドのLBAに順々に次のフラッシュメモリ135におけるLBAを対象とする後の読み出しコマンドが発行されるとき、読み出しデータは、RAM134において準備されたキャッシュから検索されることができる。キャッシュ検索テーブルにおけるエントリの数が、フラッシュ検索テーブルにおけるエントリの数よりも桁違いに(2から3桁)すくない(several (two or more) orders of magnitude less than)(典型的に、何百 対 何百万あるいはそれ以上)ので、キャッシュにおけるデータ検索に関連したオーバヘッドは、フラッシュメモリデバイス135におけるデータ検索よりもるかに低い。この理由のため、後の読み出しコマンドは、従来よりも速く処理されることができる。
上記は実施形態を対象としているが、他の、およびさらなる実施形態が、その基礎的な範囲を逸脱することなく考えだされることができ、その範囲は、添付の特許請求の範囲によって決定される。
100…ハイブリッドドライブ、110…ストレージディスク、114…スピンドルモータ、120…アクチュエータアームアセンブリ、121…スライダ、122…屈曲アーム、124…アクチュエータアーム、127…リード/ライトヘッド、128…ボイスコイルモータ、130…電子回路、132…プリント基板、133…コントローラ、134…ランダムアクセスメモリ、135…フラッシュメモリデバイス、136…フラッシュマネージャデバイス、137…リードチャネル
Claims (20)
- 第1のメモリと第2のメモリとを含むデータ記憶装置におけるデータをフェッチする方法であって、前記第2のメモリは、前記第1のメモリよりも少ないメモリ容量を有しており、
前記データ記憶装置の外部から読み出しコマンドを受け取ることであって、前記読み出しコマンドが前記データ記憶装置から読み出されるデータのアドレスを含んでいる読み出しコマンドを受け取ることと、
追加データのフェッチのための条件が満足されたことを決定することと、
前記読み出しコマンドによって要求された前記データ、および前記第1のメモリからの前記追加データをフェッチし、前記第2のメモリの中に少なくとも前記追加データを保存することと、
を備える、データをフェッチする方法。 - 前記保存の間に、前記読み出しコマンドによって要求された前記データもまた、前記第2のメモリに保存される、請求項1に記載の方法。
- 前記読み出しコマンドによって要求された前記データの前記アドレス、および前記追加データのアドレスは連続している、請求項1に記載の方法。
- 次の読み出しコマンドを受け取ることと、
前記第2メモリからの、前記次の読み出しコマンドによって要求された前記データをフェッチすることと、
を更に備える、請求項1に記載の方法。 - N(但し、Nは2以上)の読み出しコマンドのシーケンスが連続しているアドレスを含む、ということを決定するとき、前記条件は満たされる、請求項1に記載の方法。
- 前記データ記憶から受け取られる読み出しコマンドを、コマンドキューに保存することと、
前記コマンドキューから発行される連続する読み出しコマンドが連続するアドレスを含んでいる方法で、前記コマンドキューから前記読み出しコマンドを発行することと、
を更に備える、請求項1に記載の方法。 - 追加データのフェッチのための前記条件は、最も最近の読み出しコマンドの各々において要求されたデータのサイズを示す、請求項1に記載の方法。
- 追加データのフェッチのための前記条件は、最も最近の読み出しコマンドの各々において要求されたデータのサイズ、および、最も最近の読み出しコマンド間の時間間隔を示す、請求項1に記載の方法。
- 前記データ記憶装置は磁気記憶装置をさらに含んでいる、請求項1に記載の方法。
- 前記第1のメモリは不揮発性メモリである、請求項1に記載の方法。
- データ記憶装置であって、
第1のメモリと、
前記第1のメモリより小さい記憶容量を有する第2のメモリと、
前記データ記憶装置から読み出されるデータのアドレスを含んでいる読み出しコマンドを、前記データ記憶装置の外部から受け取り、追加データのフェッチのための条件が満足されたことを決定し、前記読み出しコマンドによって要求された前記データ、および前記第1のメモリからの前記追加データをフェッチし、前記第2のメモリの中に少なくとも前記追加データを保存する、ように構成されたコントローラと、
を備えるデータ記憶装置。 - 前記コントローラは、前記読み出しコマンドによって要求された前記データを前記第2のメモリに保存するように構成されている、請求項11に記載のデータ記憶装置。
- 前記読み出しコマンドによって要求された前記データの前記アドレス、および前記追加データのアドレスは連続している、請求項11に記載のデータ記憶装置。
- N(但し、Nは2以上)の読み出しコマンドのシーケンスが連続しているアドレスを含む、ということを決定するとき、前記条件は満たされる、請求項11に記載のデータ記憶装置。
- 追加データのフェッチのための前記条件は、最も最近の読み出しコマンドの各々において要求されたデータのサイズ、および、最も最近の読み出しコマンド間の時間間隔を示す、請求項12に記載のデータ記憶装置。
- 磁気記憶装置をさらに備え、前記コントローラは、前記磁気記憶装置への読み出しおよび書き込みを制御するように構成されている、請求項12に記載のデータ記憶装置。
- 第1の、不揮発性ソリッドステートメモリと、
第2の、揮発性ソリッドステートメモリと、
前記第1のメモリについてのマッピングデータ構造、および前記第1のメモリのサイズよりも小さい桁のサイズを有する前記第2のメモリの一部分についてのキャッシュデータ構造、を維持するように構成されたコントローラと、
を備え、
前記コントローラは、読み出しコマンドに応じて前記第1のメモリからデータをフェッチし、前記読み出しコマンドに応じて前記第1のメモリから追加データを条件付きでフェッチし、次に、前記第2のメモリの前記部分の中に少なくとも前記追加データを保存するように構成されている、
データ記憶装置。 - 磁気記憶装置をさらに備え、前記コントローラは、前記磁気記憶装置への読み出しおよび書き込みを制御するように構成されている、請求項17に記載のデータ記憶装置。
- 前記マッピングデータ構造におけるエントリの数は、前記キャッシュデータ構造におけるエントリの数よりも、2桁以上大きい、請求項17に記載のデータ記憶装置。
- N(但し、Nは2以上)の最も最近の読み出しコマンドのシーケンスが、連続して増える連続したアドレス範囲からのデータを要求している、ということを決定するとき、追加データのフェッチのための前記条件は満たされる、請求項17に記載のデータ記憶装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/784,432 US20140250272A1 (en) | 2013-03-04 | 2013-03-04 | System and method for fetching data during reads in a data storage device |
US13/784,432 | 2013-03-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014170523A true JP2014170523A (ja) | 2014-09-18 |
Family
ID=51421619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013259266A Abandoned JP2014170523A (ja) | 2013-03-04 | 2013-12-16 | データ記憶装置における読み出し期間中にデータをフェッチするためのシステムおよび方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20140250272A1 (ja) |
JP (1) | JP2014170523A (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9785545B2 (en) * | 2013-07-15 | 2017-10-10 | Cnex Labs, Inc. | Method and apparatus for providing dual memory access to non-volatile memory |
KR102308777B1 (ko) * | 2014-06-02 | 2021-10-05 | 삼성전자주식회사 | 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법 |
US9720860B2 (en) * | 2014-06-06 | 2017-08-01 | Toshiba Corporation | System and method for efficient processing of queued read commands in a memory system |
KR101918806B1 (ko) * | 2015-06-30 | 2018-11-14 | 전자부품연구원 | 분산 파일 시스템의 읽기 성능 극대화를 위한 캐시 관리 방법 |
US11726704B2 (en) | 2020-03-31 | 2023-08-15 | Kioxia Corporation | Buffer optimization for solid-state drives |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6499090B1 (en) * | 1999-12-28 | 2002-12-24 | Intel Corporation | Prioritized bus request scheduling mechanism for processing devices |
US7613876B2 (en) * | 2006-06-08 | 2009-11-03 | Bitmicro Networks, Inc. | Hybrid multi-tiered caching storage system |
KR100921787B1 (ko) * | 2007-11-01 | 2009-10-15 | 주식회사 이스트후 | 낸드 플래시 메모리 제어장치 |
US8195878B2 (en) * | 2009-02-19 | 2012-06-05 | Pmc-Sierra, Inc. | Hard disk drive with attached solid state drive cache |
-
2013
- 2013-03-04 US US13/784,432 patent/US20140250272A1/en not_active Abandoned
- 2013-12-16 JP JP2013259266A patent/JP2014170523A/ja not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20140250272A1 (en) | 2014-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10761777B2 (en) | Tiered storage using storage class memory | |
Deng | What is the future of disk drives, death or rebirth? | |
US9747043B2 (en) | Write reordering in a hybrid disk drive | |
US20150113212A1 (en) | Information device equipped with cache memories, apparatus and program using the same device | |
US9703699B2 (en) | Hybrid-HDD policy for what host-R/W data goes into NAND | |
US9923562B1 (en) | Data storage device state detection on power loss | |
US9146688B2 (en) | Advanced groomer for storage array | |
US20140237164A1 (en) | Hybrid drive that implements a deferred trim list | |
US20100325352A1 (en) | Hierarchically structured mass storage device and method | |
US9348520B2 (en) | Lifetime extension of non-volatile semiconductor memory for data storage device | |
US10761737B2 (en) | Method and apparatus for caching data in an solid state disk (SSD) of a hybrid drive that includes the SSD and a hard disk drive (HDD) | |
US10423339B2 (en) | Logical block address mapping for hard disk drives | |
US20150277764A1 (en) | Multi-mode nand-caching policy for hybrid-hdd | |
US10802739B1 (en) | Data storage device configuration for accessing data in physical realms | |
JP2014170523A (ja) | データ記憶装置における読み出し期間中にデータをフェッチするためのシステムおよび方法 | |
KR20130024271A (ko) | 하드 디스크 드라이브와 불휘발성 메모리를 포함하는 스토리지 시스템 | |
US20140258591A1 (en) | Data storage and retrieval in a hybrid drive | |
US9459802B1 (en) | Hybrid-HDD that limits dirty data in NAND | |
US10031689B2 (en) | Stream management for storage devices | |
US8917471B1 (en) | Power management for data storage device | |
WO2015066234A1 (en) | Data storage device startup | |
JP5594647B2 (ja) | ストレージ装置及びその制御方法 | |
US9588898B1 (en) | Fullness control for media-based cache operating in a steady state | |
US9785563B1 (en) | Read command processing for data storage system based on previous writes | |
US10268386B2 (en) | Data storage device including temporary storage locations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160106 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20160215 |