JP2016062585A - データストレージ装置及び方法 - Google Patents
データストレージ装置及び方法 Download PDFInfo
- Publication number
- JP2016062585A JP2016062585A JP2015050929A JP2015050929A JP2016062585A JP 2016062585 A JP2016062585 A JP 2016062585A JP 2015050929 A JP2015050929 A JP 2015050929A JP 2015050929 A JP2015050929 A JP 2015050929A JP 2016062585 A JP2016062585 A JP 2016062585A
- Authority
- JP
- Japan
- Prior art keywords
- data
- solid state
- write
- stored
- state device
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2206/00—Indexing scheme related to dedicated interfaces for computers
- G06F2206/10—Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
- G06F2206/1014—One time programmable [OTP] memory, e.g. PROM, WORM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- 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/0613—Improving I/O performance in relation to throughput
-
- 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
-
- 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
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)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】改良されたデータストレージ装置及び方法を提供すること。
【解決手段】実施形態によれば、データストレージ装置は、磁気ディスクと、不揮発性ソリッドステートデバイスと、コントローラと、を具備する。コントローラは、論理ブロックアドレスを含むライトコマンドと論理ブロックアドレスに関連するライトデータとを受信し、論理ブロックアドレスに関連し以前に書き込まれたデータが不揮発性ソリッドステートデバイスに格納されていることを判定し、論理ブロックアドレスに関連し以前に書かれたライトデータが不揮発性ソリッドステートデバイスに格納されている判定に応じてライトデータを不揮発性ソリッドステートデバイスに格納する。
【選択図】図5
【解決手段】実施形態によれば、データストレージ装置は、磁気ディスクと、不揮発性ソリッドステートデバイスと、コントローラと、を具備する。コントローラは、論理ブロックアドレスを含むライトコマンドと論理ブロックアドレスに関連するライトデータとを受信し、論理ブロックアドレスに関連し以前に書き込まれたデータが不揮発性ソリッドステートデバイスに格納されていることを判定し、論理ブロックアドレスに関連し以前に書かれたライトデータが不揮発性ソリッドステートデバイスに格納されている判定に応じてライトデータを不揮発性ソリッドステートデバイスに格納する。
【選択図】図5
Description
本発明の実施形態はデータストレージ装置及び方法に関する。
ハイブリッドハードディスクドライブ(HDD)は、不揮発性ソリッドステート(例えばフラッシュ)メモリと組み合わされた、1枚以上の回転する磁気ディスクを含む。一般に、ハイブリッドHDDは、従来のHDDの記憶容量およびソリッドステートドライブと同じくらい速くデータにアクセスする能力の両方を持っている。この理由で、ハイブリッドドライブはラップトップコンピュータで使用するには良く適する。例えば、ハイブリッドドライブ中の不揮発性ソリッドステートメモリはハイブリッドドライブのための非常に大きなキャッシュとして使用されてもよい。ホストによって再びアクセスされる可能性が高い、ハイブリッドドライブ中のデータが、そのようなキャッシュに格納される。典型的に、ホストにより、最も頻繁におよび/または最も最近アクセスされる論理ブロックアドレス(LBA)に関連するデータは、ハイブリッドドライブのキャッシュ中で保持される。このように、ホストによってアクセスされたLBAの大部分は、典型的に、磁気ディスクからの読み出し、書き込みに関連する待ち時間無しでアクセスされる。
ハイブリッドドライブの1つまたは複数の磁気ディスクは、ドライブの不揮発性ソリッドステートメモリの容量よりさらに多くの記憶容量を一般的に有するので、磁気ディスク上で格納されたデータの一部分だけが不揮発性ソリッドステートメモリ中でキャッシュできる。したがって、ドライブの不揮発性ソリッドステート部分にあるキャッシュ中でどのLBAが保持されるかを正確に決めるのに様々なキャッシュポリシーが、使用され得る。
残念ながら、ハイブリッドドライブの性能を改善することを意図したキャッシュポリシーが逆効果を持つことがある場合がある。例えば、長いライトストリームがハイブリッドドライブの磁気ディスクに書かれている場合、不揮発性ソリッドステートメモリに格納され、ライトストリームによりオーバーラップされるどのLBAも、不揮発性ソリッドステートメモリから一般に削除(trim)される(不揮発性ソリッドステートメモリにはもはや格納されていないというフラグがたてられる)。したがって、たとえこれらのLBAがホストによって再びアクセスされると考えられ、したがって、キャッシュ中で保持されたとしても、そのようなLBAに関連するデータの中で最も最近のバージョンを磁気ディスクに格納する行為は、そのLBAがキャッシュから取り除かれることになる。このように、最も最近のアクセスで取り除かれたLBAがドライブへ包含されるにもかかわらず、ホストによって再びアクセスされるLBAはキャッシュから取り除かれる。
従来のデータストレージ装置は、ホストによって再びアクセスされる論理ブロックアドレスがキャッシュから取り除かれるという課題があった。
本発明の目的は改良されたデータストレージ装置及び方法を提供することである。
実施形態によれば、データストレージ装置は、磁気ディスクと、不揮発性ソリッドステートデバイスと、コントローラとを具備する。コントローラは、論理ブロックアドレスを含むライトコマンドと、論理ブロックアドレスに関連するライトデータとを受信し、論理ブロックアドレスに関連し以前に書き込まれたデータが不揮発性ソリッドステートデバイスに格納されていることを判定し、論理ブロックアドレスに関連し以前に書かれたライトデータが不揮発性ソリッドステートデバイスに格納されている判定に応じてライトデータを不揮発性ソリッドステートデバイスに格納する。
図1は1つの実施形態に従う典型的なディスクドライブについての概略図である。明瞭さのため、ディスク装置100はトップカバー無しで例証される。ディスク装置100は、スピンドルモータ114によって回転し、複数の同心のデータ格納トラックを含む少なくとも1つの磁気ディスク110を含む。スピンドルモータ114はベースプレート116にマウントされる。アクチュエーターアームアッセンブリ120もベースプレート116にマウントされる。アクチュエーターアームアッセンブリ120は、データ格納トラックに対してデータをリード/ライトするリード/ライトヘッド127を伴い湾曲アーム122上にマウントされたスライダー121を有する。湾曲アーム122は、ベアリングアッセンブリ126の周りを回転するアクチュエータアーム124に取り付けられている。
ボイスコイルモータ128は、磁気ディスク110に関してスライダー121を移動させて、それによって、磁気ディスク110の表面112に配置された所望の同心のデータ格納トラックの上にリード/ライトヘッド127を位置決めする。スピンドルモータ114、リード/ライトヘッド127およびボイスコイルモータ128は、電子回路130に接続される。電子回路130はプリント回路板132にマウントされる。
電子回路130はリード/ライトチャネル137、マイクロプロセサに基づいたコントローラ133、ランダムアクセスメモリ(RAM)134(それらはダイナミックRAMであってもよく、データバッファとして使用される)および/またはフラッシュメモリデバイス135およびフラッシュマネージャデバイス(以下、FMGRと称する)136を含む。
いくつかの実施形態では、FMGR136、リード/ライトチャネル137および/またはマイクロプロセサに基づいたコントローラ133は、システム・オン・チップ131のようなシングルチップに含まれている。
いくつかの実施形態では、ディスク装置100は、モータドライバ125を含んでいてもよい。モータドライバ125は、マイクロプロセサに基づいたコントローラ133からコマンドを受信し、スピンドルモータ114およびボイスコイルモータ128の両方を駆動する。
明瞭さのため、ディスク装置100は、単一の磁気ディスク110および単一のアクチュエーターアームアッセンブリ120で例証される。ディスク装置100はさらに多数の記憶ディスクおよび多数のアクチュエータアームアセンブリを含んでいてもよい。さらに、磁気ディスク110の各面は湾曲アームに接続される関連するリード/ライトヘッドを有していてもよい。
データが磁気ディスク110に、あるいは磁気ディスク110から転送される場合、アクチュエーターアームアッセンブリ120は磁気ディスク110の外径(OD)と内径(ID)との間に弧を描く。アクチュエーターアームアッセンブリ120は、電流がボイスコイルモータ128の1つのボイスコイルを通して1つの方向に流れると、1つの角度方向に加速し、電流が反転すると、反対の角度方向に加速し、よって、磁気ディスク110に関するアクチュエーターアームアッセンブリ120と、取り付けられているリード/ライトヘッド127との位置制御を許可する。
ボイスコイルモータ128は、特定のデータ格納トラックの上にリード/ライトヘッド127の位置を決定するために、リード/ライトヘッド127によって磁気ディスク110のサーボウェッジから読まれたポジショニングデータを使用する周知のサーボシステムと接続される。サーボシステムは、ボイスコイルモータ128のボイスコイルを通して駆動するために適切な電流を決定しおよび電流ドライバおよび関連する回路類を使用して、上記電流を駆動する。
ディスク装置100はハイブリッドドライブとして構成され、通常の動作では、データは磁気ディスク110および/またはフラッシュメモリデバイス135に格納し、ディスクおよび/またはデバイスから検索することができる。ハイブリッドドライブでは、フラッシュメモリデバイス135のような不揮発性メモリは、電力消費量を低下するとともに、より速いブート、ハイバーネーション、リジューム、その他のデータリード・ライト動作を提供するために、回転する磁気ディスク110を補う。
その目的のために、フラッシュメモリデバイス135の大部分は、ディスク装置100のためのキャッシュとして構成されてもよい。キャッシュは、ホストにより最も頻繁におよび/または最も最近にアクセスされたデータを、たとえそのようなデータが磁気ディスク110に格納されていたとしても、格納する。そのようなハイブリッドドライブ構成は、モバイルコンピュータあるいは他のモバイルコンピューティング装置のようなバッテリ駆動のコンピュータシステムには特に有利である。
実施形態では、フラッシュメモリデバイス135は、電気的に消去、再プログラムすることができ、そして、不揮発性の記憶媒体として、ディスク装置100中の磁気ディスク110を補うサイズを有するNANDフラッシュチップのような不揮発性のソリッドステート記憶媒体である。例えば、いくつかの実施形態では、フラッシュメモリデバイス135はRAM134より大きいデータ記憶容量を有する(例えば、ギガバイト(GB)対メガバイト(MB))。
図2は、実施形態に従うディスク装置100の動作図を示す。示されるように、ディスク装置100はRAM134、フラッシュメモリデバイス135、FMGR136、システム・オン・チップ131および高速データパス138を含む。ディスク装置100は、シリアル・アドバンスト・テクノロジ・アタッチメント(SATA)バスのようなホストインターフェース20経由でホストコンピュータのようなホスト10に接続される。
図2に例証された実施形態では、FMGR136は高速データパス138とフラッシュメモリデバイス135とのインターフェースを制御し、NANDインターフェースバス139を介してフラッシュメモリデバイス135に接続される。システム・オン・チップ131はディスク装置100の動作制御のためにマイクロプロセサに基づいたコントローラ133および他のハードウェア(リード/ライトチャネル137を含む)を含んでおり、高速データパス138を介してRAM134およびFMGR136に接続される。他の実施形態では、フラッシュマネージャデバイス135はシステム・オン・チップ131の一部として形成されてもよい。そのような実施形態では、フラッシュマネージャデバイス135は自身のデータパス(図2では例証せず)を持ち、RAM134とデータパスを共有しなくてもよい。
マイクロプロセサに基づいたコントローラ133は、ARMマイクロプロセッサ、ハイブリッドドライブコントローラおよびディスク装置100内の任意のコントロール回路類のような1つまたは複数のマイクロコントローラを含んでいてもよい制御ユニットである。高速データパス138は、ダブル・データ・レート(DDR)バス、DDR2バス、DDR3バスなどの既知の高速バスである。
上述したように、フラッシュメモリデバイス135のうちのいくらかあるいは大部分は、ホスト10によって最も頻繁におよび/または最も最近にアクセスされたディスク装置100内のデータを格納する、ディスク装置100のためのキャッシュとして構成されてもよい。そのようなデータは一般にホスト10によって再び要求される可能性が大きいデータであり、フラッシュメモリデバイス135に格納されると、磁気ディスク110から検索されるデータよりも、より速く、より少ない消費エネルギーでホスト10に提供することができる。フラッシュメモリデバイス135内に位置するキャッシュにどの論理ブロックアドレス(LBA)が保持されるかを正確に決めるのに様々なキャッシュポリシーが、使用され得る。
ディスク装置100用の1つのキャッシュポリシーは、ホストから受信したシーケンシャルライトストリーム(連続する複数のLBAからなるグループを構成する一連のライトコマンド)あるいはシーケンシャルリードストリーム(連続する複数のLBAからなるグループを構成する一連の読み出しコマンド)の先頭部分だけをキャッシュに格納することを含む。
そのようなポリシーに従うと、シーケンシャルリードストリームあるいはライトストリームの一部として受信したデータは、リードストリームあるいはライトストリームからの格納されたデータの量が所定の閾値を超えるまで、フラッシュメモリデバイス135内に格納される。シーケンシャルリードストリームあるいはシーケンシャルライトストリームの一部として受信した残りのデータは、磁気ディスク110に格納される。例えば、ホスト10から受信した各シーケンシャルライトストリームの最初の1MBと、各シーケンシャルリードストリームの最初の2MBが、ドライブの不揮発性ソリッドステートメモリに格納され得る。一方、各シーケンシャルリードあるいは各シーケンシャルライトストリームの残りの部分は、磁気ディスク110に格納される。
ホスト10がキャッシュサイズに比べて大きい「フットプリント(footprint)」を有している場合、すなわち、ホスト10によって頻繁にアクセスされるデータの範囲がフラッシュメモリデバイス135の記憶容量を著しく超える場合、そのようなキャッシュポリシーは他のキャッシュポリシーに比べて一般的に性能を改善する。これは、ホスト10が大きい「フットプリント」を有する場合、ホストからのリードストリームあるいはライトストリームの全てを格納する試みは、キャッシュヒットを満足するために使用される前に、キャッシュの内容が最も最近にアクセスされたデータに置き換えられる、所謂チャーン(churn)となるからである。キャッシュをチャーンすることは、ディスク装置100の性能を著しく改善することなく、フラッシュメモリデバイス135の磨耗に著しく寄与する。
上記のキャッシュポリシーの1つの欠点は、いくつかの状況では、ホスト10によってアクセスされる可能性が高いデータが、キャッシュ中に格納するに有利な候補であるにもかかわらず、フラッシュメモリデバイス135中のキャッシュから取り除かれるということである。具体的には、ホスト10によって複数回最近アクセスされており、したがって、ホスト10によって再びアクセスされる可能性が高いデータは削除(trim)され、無効とされ、さもなければ、ある状況の下、例えばライトコマンドにより、フラッシュメモリデバイス135に現在格納されたLBAとオーバーラップするデータが磁気ディスク110に書き込まれる状況の下、キャッシュにもはや格納されていないというフラグがたてられてもよい。そのような1つのシナリオは図3(a)〜(c)で例証される。
図3(a)〜(c)は、関連するデータがフラッシュメモリデバイスおよび磁気ディスクを含むハイブリッドドライブに格納されるLBAの範囲を概念的に例証する。LBA0〜2399の各々は、ハイブリッドドライブに格納される512バイトのブロックあるいは他のサイズのデータブロックのようなデータブロックに関連する。さらに詳細に下に議論されるように、LBA0〜2399の各々に関連するデータの中で最も最近のバージョンは、ハイブリッドドライブ用のキャッシュ(すなわち、フラッシュメモリデバイス)におよび/または磁気ディスクに格納されてもよい。
図3(a)はホスト10から受信した3つの初期ライトコマンドが実行され、データがLBA0〜399、1000〜1399および2100〜2399に書かれた後のLBA0〜2399を例証する。示されるように、これらのライトコマンドの各々がLBAの比較的狭い範囲に亘っているので、これらのLBAに関連するデータはキャッシュにのみ格納され、フラッシュメモリデバイスへの書き込みから磁気ディスクへの書き込みに切り替わる所定のしきい値を越えない。したがって、LBAのこれらの3つのグループに関連し以前に書かれたデータ301、302および303は、キャッシュに格納される。
図3(b)は、LBA0〜799に関連するデータがキャッシュに書き込まれ、LBA800〜1999に関連するデータが磁気ディスクに書き込まれるライト動作が実行された後のLBA0〜2399を例証する。例えば、LBA0〜1999は、フラッシュメモリデバイスへの書き込みから磁気ディスクへの書き込みに切り替わる所定のしきい値を超えるサイズを有し、ライトコマンドに含まれるデータに関連するかもしれない。図3(b)で例証された例において、しきい値は800LBAに関連するデータの量に対応する。したがって、LBA0〜799に関連するデータはキャッシュに書き込まれ、LBA800〜1999に関連するデータは磁気ディスクに書き込まれる。
したがって、キャッシュに格納されている以前に書かれたデータ301は、ライトコマンドが実行される時上書きされたLBAに関連し、同じくキャッシュに格納されている以前に書かれたデータ302は、ディスクライト動作に含まれるLBA(すなわち、LBA1000〜1399)により重畳されるLBAに関連する。以前に書かれたデータ302の最新のバージョンは、磁気ディスクに存在するので、オーバーラップするLBAに関連し以前に書かれたデータは削除(trim)され、無効とされ、さもなければ、キャッシュにもはや格納されていないというフラグがたてられてもよい。
以前に書かれたデータ302が削除(trim)され、無効とされ、さもなければ、キャッシュにもはや格納されていないというフラグがたてられた後のLBA0〜2399を図3(c)が例証する。特に、LBA1000〜1399に関連する有効データのみが磁気ディスクに格納され、LBA1000〜1399に関連するデータはキャッシュに格納されない。そのように、最初のライトコマンドでアクセスされることにより、キャッシュにこれらのLBAが最近格納され、後のディスクライト動作と共同して再びアクセスされるという事実にもかかわらず、これらのLBAに関連する有効データのみが磁気ディスクにある。言いかえれば、LBA1000〜1399はLBA2100〜2399より最近にアクセスされ、LBA400〜999および1400〜1999より頻繁にアクセスされてもよいが、LBA1000〜1399に関連するデータは磁気ディスクのみに格納される。キャッシュは理想的には最も最近、または最も頻繁に使用されたデータを格納するので、オーバーラップしたLBAに関連するデータをこのように削除(trim)する、あるいは無効とすることは、一般に不適当である。
1つまたは複数の実施形態によれば、ディスクライト動作の結果、フラッシュメモリデバイス135中のデータが削除(trim)され、無効とされ、さもなければ、使用されていないというフラグがたてられる場合、そのようなオーバーラップしたLBAに関連するデータの最も最近のバージョンもフラッシュメモリデバイス135に書き込まれる。このように、後のディスクライト動作によってオーバーラップされたLBAは、それに関連する有効なデータをまだキャッシュ中に有し、ホスト10によって迅速にアクセスすることができる。そのような1つの実施形態は図4(a)〜(c)と共に記述される。
図4(a)〜(c)は、関連するデータが実施形態によるハイブリッドドライブに格納されるLBAの範囲を概念的に例証する。LBA0〜2399の各々は、ディスク装置100に格納される512バイトのブロックあるいは他のサイズのデータブロックのようなデータのホストセクタに関連する。さらに詳細に以下で議論されるように、各々のLBA0〜2399に関連するデータの中で最も最近のバージョンは、ディスク装置100用のキャッシュ(すなわち、フラッシュメモリデバイス135)および/または磁気ディスク110に格納されてもよい。
3つの最初のライトコマンドが実行された結果、データがLBA0〜399、1000〜1399および2100〜2399に書かれた後のLBA0〜2399を図4(a)は例証する。示されるように、これらのLBAに関連し以前に書かれたデータ401、402および403は、キャッシュのみに格納される。最初のライトコマンドはホスト10から受け取られてもよいし、LBA0〜399、1000〜1399および2100〜2399に関連するデータがホスト10によって要求される1つまたは複数のリードコマンドに応じて実行されてもよい。
LBA0〜799に関連するデータがキャッシュに書かれ、LBA800〜1999に関連するデータが磁気ディスク110に書かれるディスクライト動作が行なわれた後のLBA0〜2399を図4(b)は例証する。例えば、LBA0〜1999は、データがフラッシュメモリデバイス135への書き込みから磁気ディスク110への書き込みへ切り替わるための所定のしきい値を超えるライトコマンドに含まれるデータに関連するかもしれない。したがって、LBA0〜799に関連するデータはキャッシュに書かれる。また、LBA800〜1999に関連するデータは磁気ディスク110に書かれる。
したがって、以前に書き込まれキャッシュに格納されるデータ401は、ライトコマンドが実行されるとき上書きされるLBAに関連し、以前に書き込まれ同じくキャッシュに格納されるデータ402は、ディスクライト動作に含まれるLBA(すなわち、1000〜1399)によってオーバーラップされるLBAに関連する。以前に書かれたデータ402のより新しいバージョンは、現在、磁気ディスク110に存在し、以前に書き込まれオーバーラップしたLBAに関連するデータ402は、削除(trim)され、無効とされ、さもなければ、もはやフラッシュメモリデバイス135に格納されていないというフラグがたてられる。
図4(c)は、オーバーラップしたLBA(LBA1000〜1399)に関連する最も最近のデータがディスク装置100用のキャッシュ(すなわち、フラッシュメモリデバイス135)に書き込まれた後のLBA0〜2399を例証する。概念的に、図4(c)では、オーバーラップしたLBAに関連する最も最近のデータ404が磁気ディスク110からキャッシュにコピーされることが示される。実際上、以前に書かれたデータ402が削除(trim)され、さもなければ無効とされる場合、最も最近のデータ404は、ディスク装置100のRAM134の中に典型的にまだ存在している。
したがって、オーバーラップしたLBAに関連するデータの中で最も最近のバージョンは、一般的に、最も最近のデータ404としてRAM134からのフラッシュメモリデバイス135内の物理的な場所に直接書き込まれることができる。
オーバーラップしたLBA1000〜1399に関連する最も最近のデータが、磁気ディスク110に加えてキャッシュに格納されるので、ホスト10によるこれらのLBAへのアクセス(すなわち、これらのLBAから読むか、これらのLBAに書く)が、磁気ディスク110から検索されるデータより少ないエネルギー消費で非常に速く完了することができる。例えば、リード/ライトヘッド127(図1に示される)が退避される場合、磁気ディスク110からLBA1000〜1399をアクセスするのに必要な時間は300msあるいはそれ以上である。何故ならば、リード/ライトヘッド127がロードされ、LBA1000〜1399に対応する磁気ディスク110上の場所を探し、これらの場所からデータを読むあるいはこれらの場所にデータを書くからである。
対照的に、LBA1000〜1399に対応するフラッシュメモリデバイス135中の物理メモリ場所から読むかあるいは書くのに必要な時間は、1ms未満とすることができる。さらに、LBA1000〜1399が、ディスク装置100に格納される他のデータより最近に、および/または高い頻度でアクセスされたので、これらのLBAはホスト10によって続いてアクセスされる可能性が、一般的に高い。
図4(b)、(c)に示されるように、以前に書かれたデータ402および最も最近のデータ404は同じLBA(LBA1000〜1399)に関連する。しかしながら、フラッシュメモリデバイス135がNAND型フラッシュメモリを含む場合、そこに格納されたデータは、単一のマシン語(あるいはバイト)よりはるかに大きいブロックあるいはページで一般に書かれるあるいは読まれることは注目される。
NAND型フラッシュメモリの入力/出力インターフェースがランダムアクセスの外部アドレスバスを提供しないので、フラッシュメモリデバイス135中の各物理メモリー場所とディスク装置100の各LBAは固定的に1対1で対応することはない。したがって、以前に書かれたデータ402のフラッシュメモリデバイス135中の物理メモリー場所は、最も最近のデータ404のフラッシュメモリデバイス135中の物理メモリー場所と一般に異なる。したがって、以前に書かれたデータ402および最も最近のデータ404はフラッシュメモリデバイス135の同じ物理メモリー場所ではなく、同じLBAスペースに関連する。
図5は、実施形態によるハイブリッドドライブのライト動作を行なうための方法ステップのフローチャートを示す。方法ステップは図1、図2の中のディスク装置100と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ133によって行なわれるとして以下に説明するが、方法ステップの制御アルゴリズムが、任意の他の適切な制御回路、システム、あるいはディスク装置100に関連するソフトウェアあるいはファームウェアに常駐しおよび/またはこれらにより実行されてもよい。
示されるように、方法500はステップ501で始まる。ステップ501で、マイクロプロセサに基づいたコントローラ133がLBAを含むライトコマンドと、LBAに関連するライトデータとをホスト10から受信する。そのように受信されたライトコマンドは、シーケンシャルライトストリームの先頭(すなわち、ライトストリームを構築するライトコマンドがシーケンシャルLBAのグループを形成するライトストリーム)、あるいはシーケンシャルライトストリームの後の部分かもしれない。いくつかの実施形態では、マイクロプロセサに基づいたコントローラ133はRAM134へライトコマンドを受信する。
ステップ502で、マイクロプロセサに基づいたコントローラ133は、ステップ501で受信したライトコマンドに含まれるライトデータのために十分な格納スペースがフラッシュメモリデバイス135において利用可能であるかどうかを判定する。不十分な格納スペースしかフラッシュメモリデバイス135において利用できない場合、方法500はステップ503に移る。十分な格納スペースが利用可能な場合、方法500はステップ504に移る。ステップ502はステップ501、あるいは方法500のステップ513の後に行なわれてもよい。ステップ513の後に行なわれた時、マイクロプロセサに基づいたコントローラ133は、ライトコマンドに含まれる全てのライトデータではなく、ライトコマンドに含まれる未書き込みの残りのライトデータを格納するために十分な格納スペースがフラッシュメモリデバイス135において利用可能であるかどうかを判定する。
ステップ503で、マイクロプロセサに基づいたコントローラ133は、ライトコマンドに関連するライトデータのうちのいくつかあるいはすべてを磁気ディスク110に書かせる。ライトコマンドに含まれたライトデータの一部がフラッシュメモリデバイス135に書かれた状況で、ライトデータの残りの部分だけが、ステップ503で磁気ディスク110に書かれる。
ステップ504で、マイクロプロセサに基づいたコントローラ133は、ステップ501で受信したライトコマンドの最初の未書き込みのLBAを選択する。
ステップ505で、マイクロプロセサに基づいたコントローラ133は、(1)ライトコマンドを含むシーケンシャルライトストリームに関連し、(2)フラッシュメモリデバイス135に書かれたデータの量が所定のしきい値(例えば、5MB、10MBのデータ)未満であるかどうかを判定する。上述したように、所定のしきい値は、シーケンシャルリードストリームあるいはシーケンシャルライトストリームの中のデータがフラッシュメモリ135あるいは磁気ディスク110に何時格納されるかを示すために、キャッシュポリシーで使用することができる。したがって、条件(1)および(2)を満たすデータの量が所定のしきい値未満であると判定される場合、方法500はステップ511(キャッシュへのデータライト)に移る。反対に、条件(1)および(2)を満たすデータの量が所定のしきい値以上であると判定される場合、方法500はステップ506(ディスクへのデータライト)に移る。条件(2)が満たされることを決めるためのカウンターはステップ512に記述される。
ステップ506で、マイクロプロセサに基づいたコントローラ133は、ステップ504で選択されたLBAに関連し以前に書かれたデータがフラッシュフラッシュメモリデバイス135に格納されているかどうかを判定する。例えば、マイクロプロセサに基づいたコントローラ133は、LBAに関連するデータを格納する場所を記憶するためにBツリーあるいはLBAをマッピングするための他のデータ構造を使用してもよい。ステップ504で選択されたLBAに関連しフラッシュメモリデバイス135に格納された以前に書かれたデータがある場合、方法500はステップ511に移る。LBAに関連しフラッシュメモリ135に格納されたデータがない場合、方法500はステップ507に移る。
ステップ507で、マイクロプロセサに基づいたコントローラ133は、ステップ504で選択されたLBAに関連するデータを磁気ディスク110に書かせる。2つの条件が満足する場合、そのようなライトデータは磁気ディスク110に書かれることは注目すべきである。条件1:ステップ504で選択されたLBAに関連し以前に書かれたデータがフラッシュメモリデバイス135に格納されていない。条件2:フラッシュメモリデバイス135に書かれたデータ(現在のシーケンシャルライトストリームからのデータ)の合計量は、上記の所定のしきい値以上である。
ステップ511で、マイクロプロセサに基づいたコントローラ133は、ステップ504で選択されたLBAに関連するデータをフラッシュメモリデバイス135に書かせる。いくつかの実施形態では、ライトデータは、フラッシュメモリデバイス135の物理的な場所に直ちに書かれる。
他の実施形態では、1回の動作中にコンプリートな物理メモリーブロックにフラッシュメモリデバイス135中のコンプリートな物理メモリーブロックへの書き込みを促進するために、十分な量のライトデータ(例えば8KB、32KBなど)が蓄積されるまで、上記データはバッファされる。
いくつかの実施形態では、ライトデータのための格納スペースをフラッシュメモリデバイス135内に提供するためのステップ511の前、最中および/または後に、エビクション(eviction)および/またはガーベジコレクション(garbage collection)スキームが、フラッシュ・マネージャー装置136によって実行されてもよい。
ステップ512で、マイクロプロセサに基づいたコントローラ133は、フラッシュメモリデバイス135に書かれたデータ(現在のシーケンシャルライトストリームからのデータ)の合計量にステップ511で書かれたライトデータの量を加える。データのこの合計量は、続いて選択されたLBAに関連するデータがフラッシュメモリデバイス135あるいは磁気ディスク110に書かれているかどうかを判定するステップ505で使用される。
ステップ513で、マイクロプロセサに基づいたコントローラ133は、ステップ501で受信したライトコマンドに関連するデータの残りの未書き込み部分があるかどうかを判定する。ライトコマンドに関連する残りのデータがない場合、方法500はステップ520に移り終了する。ライトコマンドに関連する残りのデータがある場合、方法500はステップ502に進む。
上述したように、ハイブリッドドライブ中で一般に使用されるキャッシュポリシーは、ホストから受信したシーケンシャルリードストリームあるいはシーケンシャルライトストリームの先頭部分のみをキャッシュに格納し、両ストリームの残りの部分をディスクに格納することを含む。そのようなポリシーの1つの短所は、いくつかの状況で、ライトコマンドの最後のわずかのLBAに関連するデータが磁気ディスクの物理ディスクセクタと位置が揃わない可能性があることである。言いかえれば、ライトコマンドの最後のLBAは、例えば物理ディスクセクタの全ての4KBではなく、物理ディスクセクタの一部を占めてもよい。したがって、同じLBAへの後のライトコマンドは、ライトコマンドが完了する前にディスクから読むことを含んでいてもよい。それによって、ライトコマンドの完了にかなりの遅延が生じる。そのような1つのシナリオは図6、図7で例証される。
図6、図7は、関連するデータがディスク装置100、あるいはフラッシュメモリデバイスおよび磁気ディスクを含む他のハイブリッドドライブに格納されるLBAの範囲を概念的に示す。LBA0〜31の各々は、関連し、512バイトのホストセクタあるいは他のサイズのデータブロックのようなディスク装置100に格納されるデータブロックのためのアドレスとして機能する。示されるように、ディスク装置100の特定のLBAに関連するデータは、3つの場所:RAM134(DRAMと表記される)、フラッシュメモリデバイス135(キャッシュと表記される)および/または磁気ディスク110(ディスクと表記される)に格納することができる。
ホスト10からシーケンシャルライトコマンドが受信され、LBA0〜25に関連するデータがDRAMに格納された後のLBA0〜31を図6(a)に例証する。ライトコマンドは先頭部分601(LBA0〜7)、中間部分602(LBA8〜23)および後部部分603(LBA24〜25)を含み、磁気ディスク110上の4つの物理ディスクセクタ611〜614に亘っている。
したがって、図6、図7に示す例では、物理ディスクセクタ611〜614の各々は、8つの512バイトの論理セクタ、すなわち、合計4KBのサイズに亘っている。先頭部分601、すなわち、ホスト10から受信したシーケンシャルライトコマンドの先頭部分は、フラッシュメモリデバイス135に格納されるデータを含む。中間部分602は、磁気ディスク110に格納されるデータを含む。後部部分603は、シーケンシャルライトコマンドが及ぶ最後の物理ディスクセクタ(すなわち、物理ディスクセクタ614)に対応するLBAに関連し、磁気ディスク110に格納されるデータを含む。
LBA0〜31に関連し以前のデータ605は、既にディスクに格納されているが、ライトコマンドが受信され、それに関連するデータがフラッシュメモリデバイス135および/または磁気ディスク110に格納されると、LBA0〜25に関連し、磁気ディスク110に格納されていたデータは、もはやこれらのLBAに関連するデータの最も最近のバージョンではない。ライトコマンドに含まれるLBAによってオーバーラップされ、フラッシュメモリデバイス135に送信されないLBAに関連するデータはフラッシュメモリデバイス135中で無効と見なされ、磁気ディスク110に上書きされる。
先頭部分601に含まれるデータの量は、1あるいは2MBのデータのような所定値であり得る。明瞭さのため、図6、図7で例証された例において、シーケンシャルライトコマンド全体を見ることができるように、この所定値は4KBとして例証される。いくつかの実施形態では、先頭部分601に含まれるデータの量は可変でもよい。その結果、先頭部分601は、物理セクタ境界(例えば物理ディスクセクタ611と物理ディスクセクタ612の間の境界)で終了する。このように、中間部分602は物理セクタ境界で始まる。その結果、中間部分602の最初のLBAは物理ディスクセクタ境界と位置が揃い、中間部分602のLBAに関連するデータは、部分的な物理ディスクセクタにではなく、1つまたは複数のコンプリートな物理ディスクセクタに書くことができる。
ライトコマンドの一部が実行された後のLBA0〜31を図6(b)に例証する。示されるように、ライトコマンドの先頭部分601(LBA0〜7)に関連するデータは、フラッシュメモリデバイス135に書かれる。ライトコマンドの中間部分602(LBA8〜23)に関連するデータは、磁気ディスク110に書かれる。しかしながら、後部部分603に関連するLBAは、物理ディスクセクタ614のLBAの一部分にしか対応せず、物理ディスクセクタ614の残りの部分614AのLBAには対応しないので、ライトコマンドの後部部分(LBA24〜25)に関連するデータは、まだ書かれていない。
データが、コンプリートな物理ディスクセクタより小さく無い単位で磁気ディスク110に一般に書かれるので、物理ディスクセクタ614の全てのLBAに関連するデータはRAM134に最初に読まれ、次に、物理ディスクセクタ614に書かれる。具体的には、ライトコマンドがディスク装置100によって受信される場合、LBA24〜25に関連するデータは、RAM134に受け入れられる。LBA26〜31に関連するデータは、フラッシュメモリデバイス135(もしそこに格納されていれば)あるいは磁気ディスク110からLBA26〜31を読むことにより、RAM134に読み込まれる。
図6、図7で描かれたシナリオでは、LBA26〜31に関連するデータの中で最も最近の(唯一の)バージョンが、磁気ディスク110に格納される。したがって、物理ディスクセクタ614にライトコマンドの後部部分603を書くために、(図7(a)で例証されるように)磁気ディスク110上のLBA26〜31からのデータは磁気ディスク110からRAM134に読み込まれる。磁気ディスク110は回転を終える。次に、(図7(b)で例証されるように)LBA24〜25およびLBA26〜31のためのデータは、RAM134から物理ディスクセクタ614に書かれる。したがって、後部部分603が物理ディスクセクタ614の境界と位置が揃っていない場合、ライトコマンドの後部部分603を書くことに対してかなりの遅延(例えば、数10ミリ秒の単位)が生じる。
いくつかの実施形態では、キャッシュポリシーは、磁気ディスク装置110の物理ディスクセクタと位置が揃っていないライトコマンドの後部部分をフラッシュメモリデバイス135に格納するディスク装置100で実行されてもよい。
そのような実施形態では、物理ディスクセクタと位置が揃っていない後部部分を含む後のライトコマンドは、図6、図7と共に上述したディスクからの読み取りが遅延することなく実行することができる。そのような1つのシナリオは図8、図9で例証される。
図8、図9は、関連するデータが、ディスク装置100、あるいはフラッシュメモリデバイスおよび磁気ディスクを含む他のハイブリッドドライブに格納されるLBAの範囲を概念的に示す。図6、図7と共に上述したように、ディスク装置100の特定のLBAに関連するデータは、3つの場所:RAM134、フラッシュメモリデバイス135および/または磁気ディスク110に格納することができる。
ホスト10からシーケンシャルライトコマンドが受信され、LBA0〜25に関連するデータがDRAMに格納された後のLBA0〜1を図8(a)に例証する。ライトコマンドは先頭部分601(LBA0〜7)、中間部分602(LBA8〜23)および後部部分603(LBA24〜25)を含み、磁気ディスク110上の4つの物理ディスクセクタ611〜614に亘っている。LBA0〜31に関連し以前のデータ605は、既にディスクに格納されているが、ライトコマンドが受信され、フラッシュメモリデバイス135および/または磁気ディスク110に書かれると、LBA0〜25に関連する以前のデータは、もはやこれらに関連するデータの最も最近のバージョンではなく、無効と見なされ、あるいは上書きされる。
ライトコマンドの一部が実行され、ライトコマンドの先頭部分601に関連するデータがフラッシュメモリデバイス135に格納され、ライトコマンドの中間部分602に関連するデータが磁気ディスク110に格納された後のLBA0〜31を図8(b)に例証する。ライトコマンドの後部部分603に関連するデータはまだ書かれていない。LBA26〜31に関連するデータが磁気ディスク110から読まれ、RAM134に書かれた後のLBA0〜31を図9(a)に例証する。ライトコマンドの完了、すなわち、LBA24〜31に関連するデータが、物理ディスクセクタ614に対応するLBAにマッピングされたフラッシュメモリ135の物理メモリ場所に書かれた後のLBA0〜31を図9(b)に例証する。
したがって、後のライトコマンドが、後部部分603のLBAに関連するが、残りの部分614AのLABには関連しない改訂されたデータを含む場合、後のライトコマンドは、磁気ディスク110からの読み出し無しで完了することができる。代わりに、後のライトコマンドは、後部部分603に関連するライトデータと残りの部分614Aに関連するデータの中で最も最近のバージョンと磁気ディスク110からのデータ読み出し無しで既に利用可能であるので、中間部分602が磁気ディスク110に書かれるのと同じ回転で完了することができる。これは、後部部分603に関連するライトデータがライトコマンドの一部分としてRAM134に受け入れられ、残りの部分614Aに関連するデータの中で最も最近のバージョンがRAM134および/またはフラッシュメモリデバイス135に既に格納されているからである。
いくつかの実施形態では、ライトコマンドデータが物理ディスクセクタ613に書かれた直後に、後部部分603に関連するライトデータも磁気ディスク110の物理ディスクセクタ614に書かれる。残りの部分614Aに関連するデータの中で最も最近のバージョンがフラッシュメモリデバイス135に格納されており、書き込みのために既に利用可能であるので、後部部分603に関連する新しいデータは、物理ディスクセクタ614の残り部分614Aからの読み取りデータに関連する時間遅れ無く物理ディスクセクタ614に書くことができる。
図10は、実施形態によるハイブリッドドライブのライト動作を行なうための方法ステップのフローチャートを示す。方法ステップは図1、図2の中のディスク装置100と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ133によって行なわれるとして以下に説明するが、方法ステップのアルゴリズムが、任意の他の適切な制御回路、システム、あるいはディスク装置100に関連するソフトウェアあるいはファームウェアに常駐しおよび/またはこれらにより実行されてもよい。
示されるように、方法800はステップ801で始まる。ステップ801で、マイクロプロセサに基づいたコントローラ133が、ライトコマンドと(先頭、中間、後部)部分をホスト10から受信する。このように受信したライトコマンドはシーケンシャルライトストリーム(すなわち、ライトストリームを構築するライトコマンドがシーケンシャルLBAのグループを形成するライトストリーム)であるかもしれない。いくつかの実施形態では、マイクロプロセサに基づいたコントローラ133はライトコマンドをRAM134に受信する。
ステップ802で、マイクロプロセサに基づいたコントローラ133は、図6(a)および図9(a)で例証されるように、後部部分が物理ディスクセクタの終端と位置が揃わないLBAを含むかどうかを判定する。ステップ803で、マイクロプロセサに基づいたコントローラ133は、先頭部分601、中間部分602および後部部分603のLBAを決定する。
ステップ804で、マイクロプロセサに基づいたコントローラ133は、ライトコマンド中の最初の未書き込みバッファされていないLBAを選択する。ステップ805で、マイクロプロセサに基づいたコントローラ133は、選択されたLBAが中間部分602のLBAかどうかを判定する。イエスの場合、方法800はステップ806に移り、ノーの場合、方法800はステップ807に移る。
ステップ806で、マイクロプロセサに基づいたコントローラ133は、選択されたLBAに関連するデータを磁気ディスク110へ書く。単一のLBAに関連するデータは一般的には磁気ディスク110に書くことができないので、中間部分602からの十分なデータがバッファされるまで、ステップ804および805は一般に繰り返される。その結果、ステップ806で単一の物理ディスクセクタを満たすに十分なデータが磁気ディスク110に格納される。(1トラックあるいはそれ以下に亘るデータを書くために多数回回転することを避けるために)データをディスクに書く前に、中間部分の全てをRAM134にバッファすることも有利かもしれない。
ステップ807で、マイクロプロセサに基づいたコントローラ133は、選択されたLBAが先頭部分601のLBAかどうかを判定する。イエスであれば、方法800はステップ808に移る、ノーの場合、方法800はステップ811に移る。ステップ808で、マイクロプロセサに基づいたコントローラ133は、フラッシュメモリデバイス135へ選択されたLBAに関連するデータを書く。単一のLBAに関連するデータを一般にフラッシュメモリデバイス135に書くことができないので、中間部分602からの十分なデータがバッファされ、一つの物理ディスクセクタを満たすのに十分なデータが磁気ディスク110で格納可能となるまで、ステップ804および807が一般に繰り返される。
ステップ811で、マイクロプロセサに基づいたコントローラ133は、選択されたLBAがステップ801で受信したライトコマンドの最後のLBAかどうかを判定する。イエスの場合、方法800はステップ813に移る。ノーの場合、方法800はステップ812に移る。ステップ812で、マイクロプロセサに基づいたコントローラ133は、選択されたLBAに関連するライトデータをRAM134にバッファし、方法800はステップ804に戻る。ステップ813で、マイクロプロセサに基づいたコントローラ133は、マイクロプロセサに基づいたコントローラ133が選択されたLBAに関連するライトデータをRAM134にバッファすることを決定し、方法800はステップ814に移る。
ステップ814で、マイクロプロセサに基づいたコントローラ133は、最終セクタの残り部分(すなわち、残り部分614A)中のLBAに対応するデータを読み、バッファする。これらのデータは、ステップ801で受信したライトコマンドに関係しておらず、したがって、ディスク装置100中のいくつかの格納場所のうちの1つから読まれる。一般に、そこに格納された時、残り部分614Aの中のLBAに対応するデータはフラッシュメモリデバイス135から読まれる。
いくつかの実施形態では、マイクロプロセサに基づいたコントローラ133は、残り部分614Aの中のLBAに対応するデータの中で最も最近のバージョンがRAM134に格納されるかどうかを先ず決定するように構成される。いくつかの実施形態によれば、図8、図9と共に上述したように、残り部分614Aに関連するデータは以前のライトコマンドに応じてフラッシュメモリデバイス135に格納される。しかしながら、データがRAM134あるいはフラッシュメモリデバイス135に格納されていない場合、マイクロプロセサに基づいたコントローラ133は、残り部分614Aの中のLBAに対応するデータを磁気ディスク110から読ませる。
ステップ815で、マイクロプロセサに基づいたコントローラ133は、ステップ812、813および814でバッファされたデータをフラッシュメモリ135へ書く。したがって、残り部分614Aに関連するデータがステップ801で受信したライトコマンドに関連しないにも関わらず、後部部分603および残り部分614Aに関連するデータは両方ともフラッシュメモリデバイス135に格納される。
図11は、実施形態による、フラッシュキャッシュコマンドに応答するためのハイブリッドドライブの方法ステップのフローチャートを示す。方法ステップは図1、図2の中のディスク装置100と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ133によって行なわれるとして以下に説明するが、方法ステップの制御アルゴリズムが、任意の他の適切な制御回路、システム、あるいはディスク装置100に関連するソフトウェアあるいはファームウェアに常駐しおよび/またはこれらにより実行されてもよい。
示されるように、方法900はステップ901で始まる。ステップ901では、マイクロプロセサに基づいたコントローラ133は、フラッシュキャッシュコマンドを、例えばホスト10から受信する。一般に、ホスト10は、一般に、その時点までにホスト10から受信した全てのデータがパーシステントな状態で格納される、すなわちディスクおよび/またはフラッシュメモリに格納されるように、記憶装置へフラッシュキャッシュコマンドを発行する。典型的に、記憶装置は、ホスト10から受信した全てのデータがこのように格納されるまでは、他のオペレーションを本質的に行なわない。その結果、フラッシュキャッシュコマンドに対するレスポンスがより速く完了する場合、記憶装置の性能が改善される。
ステップ902で、マイクロプロセサに基づいたコントローラ133は、RAM134に現在格納されている非パーシステントなデータ(すなわち、パーシステントな状態のどこか他のところに格納されないデータ)の量を決定する。例えば、非パーシステントなデータは、磁気ディスク110あるいはフラッシュメモリデバイス135にまだ格納されていない、以前の受信ライトデータを含んでいてもよい。
ステップ903で、マイクロプロセサに基づいたコントローラ133は、RAM134に現在格納された非パーシステントなデータの量がコンプリートなアドレス可能なデータブロックだけを形成するのに十分かどうかを判定する。例えば、磁気ディスク110が、8つの512バイトのホストセクタ(図6(a)の物理ディスクセクタ611〜614のようなセクタ)を含むことができる4KBの物理ディスクセクタへ組織される場合、マイクロプロセサに基づいたコントローラ133は、RAM134に現在格納されている非パーシステントなデータがフラッシュメモリデバイス135中の記憶用のコンプリートな4KBデータブロックへ組織されることができるかどうかを判定する。これは、このシナリオでは4KBデータブロックがディスク装置100で最も小さな書き込み可能でアドレス可能なデータブロックであるからである。4KBの物理ディスクセクタが単なる1つの例であることが注目される。
他の実施形態では、マイクロプロセサに基づいたコントローラ133は、その代りに、RAM134に現在格納されている非パーシステントなデータが大きいデータブロック(例えば、8KB物理ディスクセクタ)へ組織されることができるかどうかを、もしもそのようなブロックがディスク装置100で最も小さな書き込み可能でアドレス可能なデータブロックとして定義されている場合、判定する。
ステップ904で、マイクロプロセサに基づいたコントローラ133は、RAM134に格納された非パーシステントなデータを物理ディスクセクタのようなコンプリートなアドレス可能なデータユニットでフラッシュメモリデバイス135に書く。ステップ905で、マイクロプロセサに基づいたコントローラ133は、フラッシュキャッシュ動作が完了したというアクノリッジメッセージをホスト10へ送る。
ステップ911で、マイクロプロセサに基づいたコントローラ133は、RAM134に格納された非パーシステントなデータの先頭部分を、コンプリートなアドレス可能なデータのユニットで、フラッシュメモリデバイス135へ書く。
ステップ912Aでは、マイクロプロセサに基づいたコントローラ133は、RAM134に格納された非パーシステントなデータの残り部分をフラッシュメモリデバイス135中のアドレス可能な格納ユニットのような所定のブロック中のホストセクタの第1グループに書く。1つの実施形態では、アドレス可能な格納ユニットはフラッシュメモリデバイス135の4KBの部分である。したがって、そのような実施形態では、ステップ912Aでは、RAM134に格納された非パーシステントなデータの残り部分は4KB未満のデータの量である。例えば、ホスト10が512バイトのデータに対応するホストセクタを使用する場合、アドレス可能な格納ユニットの各々は8つのそのようなホストセクタを含み、ステップ912Aでは、マイクロプロセサに基づいたコントローラ133は、1つ〜7つのホストセクタのデータをアドレス可能な格納ユニットに書く。
1つのそのような実施形態は図12(a)で例証される。図12(a)は、ステップ912Aの終了後のフラッシュメモリデバイス135のアドレス可能な格納ユニット1000を例証する。示されるように、アドレス可能な格納ユニット1000は8つのホストセクタ1001〜1008を含む。ホストセクタ1001〜1004は、ステップ912Aでそこに書かれたデータを含む。
ステップ912Bでは、図12(b)で例証されるように、マイクロプロセサに基づいたコントローラ133は、アドレス可能な格納ユニット1000中のホストセクタの第2のグループにダミーデータ1010を書く。図12(b)は、ステップ912Bの終了後のフラッシュメモリデバイス135のアドレス可能な格納ユニット1000を例証する。示されるように、マイクロプロセサに基づいたコントローラ133は、ホストセクタ1005〜1008にダミーデータ1010を書いており、それによって、アドレス可能な格納ユニット1000を満たす。
図12(b)、12(c)に例証されるデータは、簡単のために「全て0」パターンを示すが、マイクロプロセサに基づいたコントローラ133は、フラッシュメモリデバイスに繰り返しパターンを書くことを避けるために、(当業者に周知のような)データスクランブル技術を使用してもよい。ステップ912Aおよび912Bは別個の2ステップとして概念的に述べられているが、実際上、アドレス可能な格納ユニットはディスク装置100で最も小さなアドレス可能で書き込み可能なユニットであり、データは、アドレス可能な格納ユニットに含まれた全てのホストセクタ(すなわち、ホストセクタ1001〜1008)に、単一のオペレーションで書かれる。したがって、ステップ912Aおよび912Bが、マイクロプロセサに基づいたコントローラ133による単一のライト動作として同時に生じる。
ステップ913で、マイクロプロセサに基づいたコントローラ133は、フラッシュメモリデバイス135にメタデータを格納する。このメタデータは、アドレス可能な格納ユニット1000のどのホストセクタ1001〜1008がRAM134に格納された非パーシステントなデータの残り部分を格納するか、また、どのホストセクタ1001〜1008がダミーデータを格納するかを示す。例えば、1つの実施形態では、ビットはホストセクタ1001〜1008の各々に関連されており、ステップ913で格納されたメタデータは、アドレス可能な格納ユニット1000に対するこれらのビットの値を含む。
そのような1つの実施形態は、図12(c)で例証される。図12(c)は、ステップ913の終了後のフラッシュメモリデバイス135のアドレス可能な格納ユニット1000を例証する。ここで、メタデータ1020は、RAMに格納された非パーシステントなデータおよびダミーデータ1010とともに格納される。いくつかの実施形態では、メタデータ1020は、RAM134からの非パーシステントなデータを含む、アドレス可能な格納ユニット100の個々のホストセクタに関連するアドレス情報(例えばLBA番号)を含んでもよい。
メタデータ1020は、方法900がフラッシュキャッシュコマンドに応じて行なわれた後、アドレス可能な格納ユニット1000からデータが読まれることを可能にする。したがって、RAM134に格納された非パーシステントなデータの量がコンプリートなアドレス可能なデータブロックだけを形成するのには十分でない場合、マイクロプロセサに基づいたコントローラ133は、コンプリートなアドレス可能なデータブロックがフラッシュキャッシュコマンドに応じて格納されるように、データを得るための磁気ディスク110からの読み取りを行なわない。代わりに、コンプリートなアドレス可能なデータブロックを形成するのに不十分な非パーシステントなデータは、方法900を用いてフラッシュメモリデバイス135の特別の部分に格納され、それによって、磁気ディスク100にアクセスせずに、フラッシュキャッシュコマンドを実行する。
バックグランドプロセスでのように方法900の実行に続いて、マイクロプロセサに基づいたコントローラ133は、格納されたデータで満たされ、ダミーデータ1010を含まず、フラッシュメモリデバイス135中で通常アクセスすることができる従来のアドレス可能な格納ユニットを形成するために、アドレス可能な格納ユニット1000に格納されたデータをフラッシュメモリデバイス135に格納されるべき他のデータと統合することができる。
いくつかの実施形態では、アドレス可能な格納ユニット1000は、方法900中に使用するために特別に構成されるフラッシュメモリデバイス135の一部である。そのような実施形態では、フラッシュメモリデバイス135は多数のアドレス可能な格納ユニット1000を含んでいてもよい。さらに、フラッシュメモリデバイス135は、多数のアドレス可能な格納ユニット1000の各々に関連するメタデータ1020を格納するためのレジスタあるいは他のメモリ素子を含んでいてもよい。
いくつかの実施形態では、ディスク装置100がホスト10からライトコマンドを受信し、しかしまた一方ではライトコマンドの完了前にホスト10からフラッシュキャッシュコマンドを受信する場合、方法900は行なわれてもよい。そのような状況で、たとえライトコマンドが不揃いのデータで終わったとしても、部分的に完了したライトコマンドに関連する非パーシステントなデータは、フラッシュメモリデバイス135に速く格納することができる。典型的に、図6、図7で例証されるように、ライトコマンドが不揃いのデータで終わる場合、磁気ディスクからの読み取りは物理ディスクセクタのようなアドレス可能な格納ユニットを完全には満たさない非パーシステントなデータをRAM134に格納するために実行される。方法900は、磁気ディスク110からの比較的時間を要する読み取りの必要無く、フラッシュキャッシュコマンドに応じてフラッシュメモリデバイス135に非パーシステントなデータが直接格納されることを可能にする。
要するに、ここに記述された実施形態は、データストレージ装置のためのキャッシュを含む不揮発性ソリッドステートデバイスと磁気ディスクを含むハイブリッドドライブのキャッシュポリシーのためのシステムと方法を供給する。システムは、LBAが以前に書かれたデータに関係し、後のディスクライト動作によってオーバーラップされる時、LBAに関連するデータの中で最も最近のバージョンを不揮発性ソリッドステートデバイスへ書くように構成される。好適に、オーバーラップしたLBAが後のディスクライト動作によってキャッシュから削除(trim)され、さもなければ無効とされたとしても、オーバーラップしたLBAに関連するデータの中で最も最近のバージョンがキャッシュに格納されている。したがって、オーバーラップしたLBAに関連するデータは、磁気ディスクのみに書かれたデータより速くアクセスすることができる、
上述のものが本発明の実施形態に向けられているが、発明の他の実施形態およびさらなる実施形態は発明の基礎的な範囲から外れずに、考案されてもよい。また、それの範囲は、続く請求項によって決定される。
上述のものが本発明の実施形態に向けられているが、発明の他の実施形態およびさらなる実施形態は発明の基礎的な範囲から外れずに、考案されてもよい。また、それの範囲は、続く請求項によって決定される。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
100…ディスク装置、110…磁気ディスク、127…リード/ライトヘッド、130…電子回路、133…コントローラ、134…RAM、135…フラッシュメモリデバイス、136…FMGR。
Claims (20)
- 磁気ディスクと、
不揮発性ソリッドステートデバイスと、
コントローラと、
を具備するデータストレージ装置であって、
前記コントローラは
論理ブロックアドレスを含むライトコマンドと前記論理ブロックアドレスに関連するライトデータとを受信し、
前記論理ブロックアドレスに関連し以前に書き込まれたデータが前記不揮発性ソリッドステートデバイスに格納されていることを判定し、
前記論理ブロックアドレスに関連し以前に書かれたライトデータが前記不揮発性ソリッドステートデバイスに格納されている判定に応じて、前記ライトデータを前記不揮発性ソリッドステートデバイスに格納するデータストレージ装置。 - 前記コントローラは前記ライトデータを前記不揮発性ソリッドステートデバイスに書き込むことに応答して前記論理ブロックアドレスに関連し以前に書かれたデータを無効とする請求項1記載のデータストレージ装置。
- 前記ライトコマンドは付加的な論理ブロックアドレスと前記付加的な論理ブロックアドレスに関連するライトデータとを含み、
前記コントローラは
前記付加的な論理ブロックアドレスに関連し以前に書かれたデータが前記不揮発性ソリッドステートデバイスに格納されていないことを判定し、
前記付加的な論理ブロックアドレスに関連するデータを前記磁気ディスクに格納する請求項1記載のデータストレージ装置。 - 前記コントローラは前記論理ブロックアドレスがシーケンシャルライトストリームの一部であることを判定する請求項1記載のデータストレージ装置。
- 前記コントローラは
前記シーケンシャルライトストリームの一部として受信したデータが所定のしきい値を超えることを判定し、
超える場合、前記所定のしきい値を超えるデータの少なくとも一部分を前記磁気ディスクに格納する請求項4記載のデータストレージ装置。 - 前記不揮発性ソリッドステートデバイスは前記データストレージ装置のためのキャッシュを含む請求項1記載のデータストレージ装置。
- 磁気ディスクと不揮発性ソリッドステートデバイスとを含むストレージ装置の方法であって、
論理ブロックアドレスを含むライトコマンドと前記論理ブロックアドレスに関連するライトデータを受信し、
前記論理ブロックアドレスに関連し以前に書き込まれたデータが前記不揮発性ソリッドステートデバイスに格納されていることを判定し、
前記論理ブロックアドレスに関連し以前に書かれたライトデータが不揮発性ソリッドステートデバイスに格納されている判定に応じてライトデータを前記不揮発性ソリッドステートデバイスに格納する方法。 - 前記不揮発性ソリッドステートデバイスへのライトデータの格納に応じて以前に書かれたデータを無効にすることをさらに含む請求項7記載の方法。
- 前記ライトコマンドは付加的な論理ブロックアドレスおよび前記付加的な論理ブロックアドレスに関連するライトデータを含み、
前記付加的な論理ブロックアドレスに関連し以前に書かれたデータが前記不揮発性ソリッドステートデバイスに格納されないことを判定し、
前記付加的な論理ブロックアドレスに関連するデータを磁気ディスクに格納することを具備する請求項7記載の方法。 - 前記論理ブロックアドレスがシーケンシャルライトストリームの一部であることを判定することをさらに具備する請求項7記載の方法。
- シーケンシャルライトストリームの一部として受信したデータが所定のしきい値を超えることを判定し、
超える場合、前記所定のしきい値を超えるデータの少なくとも一部分を磁気ディスクに格納する請求項10記載の方法。 - 不揮発性ソリッドステートデバイスは方法のためのキャッシュを含む請求項7記載の方法。
- 磁気ディスクと、
不揮発性ソリッドステートデバイスと、
コントローラと、
を具備するデータストレージ装置であって、
前記コントローラは、
先頭部分、中間部分および後部部分を含み、書かれるデータをホストセクタ単位で受信し、
前記データの先頭部分を不揮発性ソリッドステートデバイスへ、前記データの中間部分を磁気ディスクへ、前記データの後部部分を前記不揮発性ソリッドステートデバイスに書くデータストレージ装置。 - 前記コントローラは前記データをディスクセクタ単位で前記磁気ディスクへ書くように構成され、1ディスクセクタはNホストセクタを含み、Nは1以上の整数であり、前記後部部分はN未満のホストセクタを含む請求項13記載のデータストレージ装置。
- 前記コントローラは
前記データの後部部分に対応するディスクセクタの残りホストセクタに関連するデータを読み、
前記データの後部部分と、前記残りホストセクタに関連するデータを前記不揮発性ソリッドステートデバイスへ書くことにより、
前記データの後部部分を前記不揮発性ソリッドステートデバイスへ書くように構成され、前記後部部分と前記残りホストセクタに含まれるホストセクタ数はNである請求項14記載のデータストレージ装置。 - 前記コントローラは、前記データの後部部分に対応するディスクセクタ、前記不揮発性ソリッドステートデバイス、あるいは前記データストレージ装置に関連する揮発性ソリッドステートデバイスのうちの1つから前記残りホストセクタに関連するデータを読む請求項15記載のデータストレージ装置。
- 前記コントローラは前記データの後部部分に対応しない、ディスクセクタの残りホストセクタに関連するデータを読み、
前記データの後部部分と、前記ディスクセクタへ前記残りホストセクタに関連するデータを前記ディスクセクタに書くことにより、
前記磁気ディスクのディスクセクタに前記データの後部部分を書く請求項13記載のデータストレージ装置。 - 前記コントローラはデータストレージ装置に関連する揮発性ソリッドステートデバイス、不揮発性ソリッドステートデバイス、あるいはディスクセクタのうちの1つから前記残りホストセクタに関連するデータを読む請求項17記載のデータストレージ装置。
- 前記コントローラは、前記データのデータ後部部分を受け取った後で前記不揮発性ソリッドステートデバイスに前記データの後部部分を書く前に
フラッシュキャッシュコマンドを受信すると、前記データの後部部分を前記不揮発性ソリッドステートデバイスの所定部分に書き、
前記所定部分はNホストセクタを格納するように構成され、
前記所定部分のNホストセクタのどのセクタが前記データの後部部分を含み、どのセクタが有効なデータを含まないかを示すメタデータを前記不揮発性ソリッドステートデバイスに書く請求項14記載のデータストレージ装置。 - 前記コントローラは前記所定部分に前記データの後部部分を書く前に、
前記データの後部部分に対応する前記ディスクセクタの残りホストセクタに関連するデータを読むためと、前記データの後部部分と前記残りホストセクタに関連するデータとを不揮発性ソリッドステートデバイスへ書くための推定時間が所定のしきい値を超えることを判定し、
前記推定時間が前記しきい値を超えることを判定すると、前記データの後部部分を前記不揮発性ソリッドステートデバイスの前記所定部分へ書く請求項19記載のデータストレージ装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/489,365 | 2014-09-17 | ||
US14/489,365 US9703699B2 (en) | 2014-09-17 | 2014-09-17 | Hybrid-HDD policy for what host-R/W data goes into NAND |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016062585A true JP2016062585A (ja) | 2016-04-25 |
Family
ID=55454885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015050929A Pending JP2016062585A (ja) | 2014-09-17 | 2015-03-13 | データストレージ装置及び方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9703699B2 (ja) |
JP (1) | JP2016062585A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210079738A (ko) * | 2019-12-20 | 2021-06-30 | 엘에스일렉트릭(주) | 플래시 메모리의 특성을 이용한 인버터용 파일시스템 관리방법 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170051563A (ko) * | 2015-10-29 | 2017-05-12 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN108255414B (zh) | 2017-04-14 | 2020-04-03 | 新华三信息技术有限公司 | 固态硬盘访问方法及装置 |
KR102319189B1 (ko) * | 2017-06-21 | 2021-10-28 | 삼성전자주식회사 | 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법 |
KR102281966B1 (ko) * | 2017-11-01 | 2021-07-26 | 삼성전자주식회사 | 데이터 스토리지 장치 및 그 동작 방법 |
TWI744445B (zh) | 2017-12-22 | 2021-11-01 | 揚明光學股份有限公司 | 光路調整機構及其製造方法 |
TWI721365B (zh) * | 2018-09-17 | 2021-03-11 | 慧榮科技股份有限公司 | 高效能垃圾收集方法以及資料儲存裝置及其控制器 |
CN114528226A (zh) | 2018-09-17 | 2022-05-24 | 慧荣科技股份有限公司 | 高效能垃圾收集方法以及数据存储装置及其控制器 |
US10884954B2 (en) | 2018-09-17 | 2021-01-05 | Silicon Motion, Inc. | Method for performing adaptive locking range management, associated data storage device and controller thereof |
US11074014B1 (en) * | 2019-08-22 | 2021-07-27 | Seagate Technology Llc | Managing adjacent track interference in a data storage device |
US11294824B2 (en) * | 2020-01-03 | 2022-04-05 | Western Digital Technologies, Inc. | System and method for reduced latency of read-modify-write operations |
US11513736B2 (en) * | 2021-03-08 | 2022-11-29 | Western Digital Technologies, Inc. | Revised host command generation for unaligned access |
JP2023045988A (ja) * | 2021-09-22 | 2023-04-03 | 株式会社東芝 | 磁気ディスク装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239645B1 (en) | 2007-09-28 | 2012-08-07 | Emc Corporation | Managing mirroring in data storage system having fast write device and slow write device |
JP2010211888A (ja) * | 2009-03-12 | 2010-09-24 | Toshiba Storage Device Corp | ディスク記憶装置 |
WO2012116369A2 (en) | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
US9223698B2 (en) * | 2013-01-15 | 2015-12-29 | Kaminario Technologies Ltd. | SSD-block aligned writes |
US9454474B2 (en) * | 2013-03-05 | 2016-09-27 | Western Digital Technologies, Inc. | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive |
US9070379B2 (en) * | 2013-08-28 | 2015-06-30 | Western Digital Technologies, Inc. | Data migration for data storage device |
US9703816B2 (en) * | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
-
2014
- 2014-09-17 US US14/489,365 patent/US9703699B2/en active Active
-
2015
- 2015-03-13 JP JP2015050929A patent/JP2016062585A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210079738A (ko) * | 2019-12-20 | 2021-06-30 | 엘에스일렉트릭(주) | 플래시 메모리의 특성을 이용한 인버터용 파일시스템 관리방법 |
KR102672649B1 (ko) * | 2019-12-20 | 2024-06-04 | 엘에스일렉트릭(주) | 플래시 메모리의 특성을 이용한 인버터용 파일시스템 관리방법 |
Also Published As
Publication number | Publication date |
---|---|
US9703699B2 (en) | 2017-07-11 |
US20160077962A1 (en) | 2016-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2016062585A (ja) | データストレージ装置及び方法 | |
US8341339B1 (en) | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk | |
US9804784B2 (en) | Low-overhead storage of a hibernation file in a hybrid disk drive | |
US9448919B1 (en) | Data storage device accessing garbage collected memory segments | |
US10776153B2 (en) | Information processing device and system capable of preventing loss of user data | |
US8572308B2 (en) | Supporting variable sector sizes in flash storage devices | |
US8443167B1 (en) | Data storage device employing a run-length mapping table and a single address mapping table | |
US9342260B2 (en) | Methods for writing data to non-volatile memory-based mass storage devices | |
US9514055B2 (en) | Distributed media cache for data storage systems | |
US8959281B1 (en) | Data management for a storage device | |
US9923562B1 (en) | Data storage device state detection on power loss | |
US20100325352A1 (en) | Hierarchically structured mass storage device and method | |
JP2014160450A (ja) | データストレージデバイスおよび書き込み方法 | |
US9804786B2 (en) | Sector translation layer for hard disk drives | |
US9563397B1 (en) | Disk drive using non-volatile cache when garbage collecting log structured writes | |
US20100070733A1 (en) | System and method of allocating memory locations | |
JP2013196755A (ja) | ハイブリッドディスクドライブ中の書込み再配列方法 | |
US10223277B2 (en) | SMR drive with multi-level write-cache for high random-write performance | |
US20150277764A1 (en) | Multi-mode nand-caching policy for hybrid-hdd | |
US20140258591A1 (en) | Data storage and retrieval in a hybrid drive | |
US9146875B1 (en) | Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining | |
KR101515621B1 (ko) | 반도체 디스크 장치 및 그것의 랜덤 데이터 처리 방법 | |
JP2014170523A (ja) | データ記憶装置における読み出し期間中にデータをフェッチするためのシステムおよび方法 | |
US9323467B2 (en) | Data storage device startup | |
US8959284B1 (en) | Disk drive steering write data to write cache based on workload |