JP2015191654A - データストレージ装置及び方法 - Google Patents
データストレージ装置及び方法 Download PDFInfo
- Publication number
- JP2015191654A JP2015191654A JP2014186120A JP2014186120A JP2015191654A JP 2015191654 A JP2015191654 A JP 2015191654A JP 2014186120 A JP2014186120 A JP 2014186120A JP 2014186120 A JP2014186120 A JP 2014186120A JP 2015191654 A JP2015191654 A JP 2015191654A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- host
- read
- mode
- storage 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
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more 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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】容量とアクセス速度とを両立できるデータストレージ装置を提供すること。
【解決手段】実施形態によれば、データストレージ装置は、磁気記憶装置と、不揮発性ソリッドステートデバイスと、第1モードと第2モードで動作可能なコントローラとを具備する。不揮発性ソリッドステートデバイスは、データストレージ装置のためのキャッシュを含む。コントローラは、キャッシュヒット率が所定のしきい値未満であることが検知される場合、第1モードから第2モードに動作を切り替えるように構成されている。
【選択図】図4
【解決手段】実施形態によれば、データストレージ装置は、磁気記憶装置と、不揮発性ソリッドステートデバイスと、第1モードと第2モードで動作可能なコントローラとを具備する。不揮発性ソリッドステートデバイスは、データストレージ装置のためのキャッシュを含む。コントローラは、キャッシュヒット率が所定のしきい値未満であることが検知される場合、第1モードから第2モードに動作を切り替えるように構成されている。
【選択図】図4
Description
本発明の実施形態は、データストレージ装置及び方法に関する。
ハイブリッドハードディスクドライブ(HDD)は、不揮発性ソリッドステートメモリ(例えばフラッシュメモリ)と組み合わされる1枚または複数枚の回転する磁気ディスクを含んでいる。一般に、ハイブリッドHDDは、従来のHDDの容量、およびソリッドステートドライブと同じくらい速くデータにアクセスする能力の両方を持っている。この理由で、ハイブリッドドライブはラップトップコンピュータで使用するために良く適する。例えば、ハイブリッドドライブ中の不揮発性ソリッドステートメモリはハイブリッドドライブのための非常に大きいキャッシュとして使用されてもよい。その結果、最も頻繁にアクセスされる、及び/または、最も最近にアクセスされるハイブリッドドライブ中のデータは、磁気ディスクへのアクセスに関連するレイテンシィ無くドライブから検索されることができる。ハイブリッドドライブ中の不揮発性ソリッドステートメモリをキャッシュとして応用するための種々のキャッシングポリシーが知られている。各々のキャッシングポリシーは利点と欠点を有する。
ハイブリッドドライブ用の1つのキャッシングポリシーは、ホストから送信されたライトデータの殆ど全てをドライブの不揮発性ソリッドステートメモリに書き込むことと、磁気記憶装置から読み出されたデータの殆ど全てをドライブの不揮発性ソリッドステートメモリにコピーすることを含む。したがって、ある方法でホストによって最近アクセスされた本質的に全てのデータはドライブの不揮発性ソリッドステートメモリ中にキャッシュされる。ユーザによってアクセスされたデータの全てあるいは殆どの範囲がドライブの不揮発性ソリッドステートメモリに格納され得る場合、すなわち、ユーザが小さいフットプリントを持っている場合、そのようなキャッシングポリシーはハイブリッドドライブに関して典型的に高機能となる。
ハイブリッドドライブ用の別のキャッシングポリシーは、ホストから受信したシーケンシャルライトストリームあるいはシーケンシャルリードストリームの最初の部分だけをキャッシュに格納することを含んでいる。例えば、ホストから受信した各シーケンシャルライトストリームの最初の1MB、あるいは各シーケンシャルリードストリームの最初の2MBが、ドライブの不揮発性ソリッドステートメモリに格納されてもよい。一方、シーケンシャルリードあるいはライトストリームの残りの部分は、ドライブの磁気ディスク上に格納される。ユーザが前に記述した「全てをキャッシュする」キャッシングポリシーに比べて小さいフットプリントを持っている場合、そのようなキャッシングポリシーは典型的により低いパフォーマンスとなる。ホストにより最近アクセスされたデータの一部分のみがドライブの不揮発性ソリッドステートメモリに格納されることは、磁気ディスクへのより頻繁なアクセスとなる。しかしながら、そのようなキャッシングポリシーは、ユーザによって頻繁にアクセスされるデータの範囲がドライブの不揮発性ソリッドステートメモリの容量を著しく超える場合、「全てをキャッシュする」キャッシングポリシーに比べて一般的にパフォーマンスを改善する。これは、ユーザがキャッシュサイズに比べて大きいフットプリントを有する場合、ホストからのリードストリームあるいはライトストリームの全てを格納する試みは、キャッシュヒットを満足するために使用される前に、キャッシュの内容が最も最近にアクセスされたデータに置き換えられる、所謂チャーン(churn)となるからである。キャッシュをチャーンすることは、ドライブの性能を著しく改善することなく、ドライブの不揮発性ソリッドステートメモリの磨耗に著しく寄与する。
従来のデータストレージ装置は、容量とアクセス速度の両立が困難であるという課題がある。
本発明の目的は、容量とアクセス速度とを両立できるデータストレージ装置及び方法を提供することである。
1または複数の実施形態が、磁気記憶媒体および不揮発性ソリッドステートデバイスを含んでいるハイブリッドドライブ中のマルチモード・キャッシングポリシーについてのシステムと方法を供給する。ハイブリッドドライブはマルチモードで動作可能であり、ホストからのデータアクセスの履歴に依存して、多数のモード間の動作を切り替えるように構成される。
実施形態によれば、データストレージ装置は、磁気記憶媒体と、不揮発性ソリッドステートデバイスと、コントローラとを含む。1つの実施形態では、コントローラは第1モードおよび第2モードで動作可能で、キャッシュヒット率が所定のしきい値未満であることが検出される場合に、動作を第1モードから第2モードに切り替えるように構成される。
さらなる実施形態は、磁気記憶装置と、不揮発性ソリッドステートデバイスとを具備するストレージ装置であって、不揮発性ソリッドステートデバイスはデータストレージ装置のためのキャッシュを含んでいるストレージ装置を2つの動作モードの少なくとも1つの動作モードで動作する方法を提供する。方法は、ストレージデバイスにアクセスするためのコマンドをホストから受信するステップと、セットされた動作モードに従ってコマンドを実行するステップとを含む。
キャッシュヒット率が所定の第1のしきい値未満であることを検知される場合、第1の動作モードはセットされる。キャッシュヒット率が所定の第2のしきい値以上であることを検知される場合、第2の動作モードがセットされる。
図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およびフラッシュマネージャデバイス136を含んでいる。
いくつかの実施形態では、フラッシュマネージャデバイス136、リード/ライトチャネル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に格納されていたとしても、格納する。そのようなハイブリッドドライブ構成は、モバイルコンピュータあるいは他のモバイルコンピューティング装置のようなバッテリ駆動のコンピュータシステムには特に有利である。
実施形態では、フラッシュメモリデバイスは、電気的に消去され再プログラムすることができ、そして、不揮発性のストレージ媒体としてハイブリッドドライブ100中の記憶ディスク110を補うサイズを有するNANDフラッシュチップのような不揮発性のソリッドステートストレージ媒体である。例えば、いくつかの実施形態では、フラッシュメモリデバイス135にはRAM134より大きいデータ記憶容量がある(例えば、ギガバイト(GB)対メガバイト(MB))。
図2は、実施形態に従って示された電子回路130の要素を備えたハイブリッドドライブ100の動作図を示す。示されるように、ハイブリッドドライブ100はRAM134、フラッシュメモリデバイス135、フラッシュマネージャデバイス136、システム・オン・チップ131および高速データパス138を含んでいる。ハイブリッドドライブ100は、シリアル・アドバンスト・テクノロジ・アタッチメント(SATA)バスのようなホストインターフェース20経由でホストコンピュータのようなホスト10に接続される。
図2に例証された実施形態では、フラッシュマネージャデバイス136は高速データパス138とフラッシュメモリデバイス135とのインターフェースを制御し、NANDインターフェースバス139を介してフラッシュメモリデバイス135に接続される。システム・オン・チップ131はハイブリッドドライブ100の動作制御のためにマイクロプロセサに基づいたコントローラ133および他のハードウェア(リード/ライトチャネル137を含む)を含んでおり、高速データパス138を介してRAM134およびフラッシュマネージャデバイス136に接続される。他の実施形態では、フラッシュマネージャデバイス135はシステム・オン・チップ131の一部として形成されてもよい。
マイクロプロセサに基づいたコントローラ133は、ARMマイクロプロセッサ、ハイブリッドドライブコントローラおよびハイブリッドドライブ100内の任意のコントロール回路類のようなマイクロコントローラを含んでいてもよい制御ユニットである。高速データパス138は、ダブル・データ・レート(DDR)バス、DDR2バス、DDR3バスなどの既知の高速バスである。
上述したように、フラッシュメモリデバイス135のうちのいくらかあるいは大部分は、ホスト10によって最も頻繁におよび/または最も最近にアクセスされ、ハイブリッドドライブ100内のデータを格納するハイブリッドドライブ100のためのキャッシュとして構成されてもよい。そのようなデータは一般にホスト10によって再び要求される可能性が大きいデータであり、フラッシュメモリデバイス135に格納されると、記憶ディスク110から検索されるデータよりも、より速く、より少ないエネルギー消費でホスト10に提供することができる。
フラッシュメモリデバイス135がハイブリッドドライブ100のためのキャッシュとして構成される場合、ハイブリッドドライブ100は、フラッシュメモリデバイス135に格納される論理ブロックアドレス(LBA)(つまり、ホスト10によって最も頻繁に、最も最近にアクセスされたLBA)をフラッシュメモリデバイス135内の物理的な位置(メモリブロック)にマッピングするデータ構造135Aを含んでいる。
図2に例証された実施形態では、データ構造135Aはフラッシュマネージャデバイス136に含まれている。しかし、他の実施形態では、データ構造135Aは、コントローラ133あるいはフラッシュメモリデバイス135自身のように、ハイブリッドドライブ100の異なるコンポーネントの一部として構成されてもよい。
データ構造135Aの1つの実施形態は図3に例証される。図3は、実施形態に従ってフラッシュメモリデバイス135に含まれたキャッシュに関連したデータ構造135Aの図である。データ構造135Aは、フラッシュメモリデバイス135に格納された各々のキャッシュ・エントリー301を、キャッシュ・エントリーが格納されるフラッシュメモリデバイス135中の特別の物理的な位置302へマッピングする関連アレイか関連マップのようなデータ構造である。各々のキャッシュ・エントリー301は、記憶ディスク110へのアクセスを減少するかあるいは省くためにキャッシュとしてフラッシュメモリデバイス135に格納される1つ以上のLBAを含んでおり、それによって、パフォーマンスを改善し、ハイブリッドドライブ100のエネルギー消費を減少する。
図3に例証された実施形態では、キャッシュ・エントリー(それは512バイトの単一セクターに対応してもよい)はそれぞれ、物理的な位置302へマッピングされる。
他の実施形態では、一つのキャッシュ・エントリー301は、64の512バイトのセクタ(つまり32kBスペース)のようなはるかに大きいスペースに対応してもよい。そのような実施形態では、キャッシュ・エントリー301はそれぞれ、4kBの解像度を持ち、したがって、8つの4kBブロックのステータスを説明することができる。したがって、キャッシュ・エントリー301はそれぞれ開始アドレス(4kBブロック単位)と8つの4kBブロックの各々の「有効な」ビットを含んでいてもよい。開示の範囲を超えない範囲で、データ構造135Aの他の構成が使用されてもよい。
いくつかの実施形態では、削除(eviction)スキームは、データ構造135Aの動作と協力するマイクロプロセサに基づいたコントローラ133あるいはフラッシュマネージャデバイス136によって使用される。
削除スキームは、フラッシュメモリデバイス135からのデータの系統的な除去を促進する。その結果、最も過去に使用された(LRU)データ、最も使用頻度が少ない(LFU)データ、あるいは両方のコンビネーションのデータは、データ構造135Aから追い出され、関連するデータは、フラッシュメモリデバイス135から取り除かれる。
このように、ホスト10によって再びアクセスされる可能性が高く、ホスト10によって以前にアクセスされた、ハイブリッドドライブ100中のデータは、キャッシュにある。また、ホスト10によって再びアクセスされる可能性の低いデータはキャッシュから取り除かれる。そのような実施形態では、付加的なデータ構造135Bが、マイクロプロセサに基づいたコントローラ133、フラッシュマネージャデバイス136あるいはフラッシュメモリデバイス135のいずれかに含まれていてもよい。
付加的なデータ構造135Bは、キャッシュ・エントリー301の使用頻度、キャッシュ・エントリー301の使用の最近性、および/または両方のコンビネーションを追跡するように構成される。例えば、付加的なデータ構造135Bは、各々のキャッシュ・エントリー301の相対的な最近性を追跡するためのダブルリンクリスト、および各々のキャッシュ・エントリー301の相対的な使用頻度を追跡するためのダブルリンクリストを含んでいてもよい。
いくつかの実施形態では、データ構造135Aおよび付加的な構造135Bは単一のデータ構造として組み合わせられる。
いくつかの実施形態では、ゴースト・データ構造135Cは、マイクロプロセサに基づいたコントローラ133、フラッシュマネージャデバイス136あるいはフラッシュメモリデバイス135のいずれかに含まれていてもよい。
ハイブリッドドライブ100が大きいフットプリントモードで動作している間に、ゴースト・データ構造135Cは、図6と共に下記に述べられた手続きによって仮想キャッシュ・エントリーの頻度および/または最近性を追跡するように構成される。
従って、ゴースト・データ構造135Cはデータ構造135Aと同じサイズおよび構成を本質的に持っている。
しかしながら、フラッシュメモリデバイス135に格納されたLBA(および関連するデータ)をフラッシュメモリデバイス135中の物理的な位置へマッピングするのではなく、ゴースト・データ構造135CはLBAをフラッシュメモリデバイス135中の仮想位置へマッピングする。そのようなマッピングは、もしハイブリッドドライブ100が小さいフットプリントモードで動作していれば、どの物理的な位置がマップされたLBAに関連したデータによって占められていたであろうことに基づいてもよい。
したがって、リード、ライトコマンドがホスト10から受信されるので、リードコマンド、ライトコマンドに関連するLBAは、ゴースト・データ構造135Cのキャッシュ・エントリとして入力され、付加的なキャッシュエントリを許可するためにゴースト・データ構造135Cに付加的なスペースが必要な場合、適切な削除スキームに従って除去される。
いくつかの実施形態によれば、マイクロプロセッサ・コントローラ133は多数のモードで動作可能で、ホスト10からのデータ・アクセスの履歴に依存して、多数のモード間のオペレーションを切り替えるように構成される。例えば、ホスト10によってアクセスされたデータの全てまたはほとんどの範囲をフラッシュメモリデバイス135中のキャッシュに格納することができる場合、マイクロプロセッサ・コントローラ133は、フラッシュメモリデバイス135中のキャッシュに関してホストが小さいフットプリントを持っていることを決定し、第1モードで動作するように構成される。
反対に、ホスト10によって高頻度、最近にアクセスされたデータの範囲がフラッシュメモリデバイス135のキャッシュのサイズをかなり超える場合、マイクロプロセッサ・コントローラ133は、フラッシュメモリデバイス135中のキャッシュに関してホストが大きいフットプリントを持っていることを決定し、第2モードで動作するように構成される。
したがって、マイクロプロセッサ・コントローラ133は、フラッシュメモリデバイス135中のキャッシュのサイズに関するホストのフットプリントのサイズに依存して異なるモードで動作する。
いくつかの実施形態では、小さいフットプリントがあるホストに関連した動作モードは、ホスト10からのライトコマンドに含まれるLBAに関連する実質的に全てのデータをキャッシュ(フラッシュメモリデバイス135)に格納することともに、そのようなLABをデータ構造135および/または付加的なデータ構造135B中にエンターすることを含んでいてもよい。
さらに、この動作モードは、ホスト10からのリードコマンドに応答して記憶ディスク110から読み出された実質的に全てのデータをキャッシュに格納することを含んでいてもよい。
ホスト10によってアクセスされたデータの殆ど、あるいは実質的に全てがキャッシュに格納することができる場合、そのような動作モードは一般に高機能を促進する。
ホスト10の小さいフットプリントモードの別の例では、より大きいストリーム限界NおよびM(大きいフットプリントモードのために下記に述べられた)は大きいフットプリントモードのストリーム限界NおよびMに関連して定義される。
いくつかの実施形態では、大きいフットプリントに関連した動作モードは、ホスト10から受信した個々のシーケンシャルライトストリームの最初の部分をキャッシュに書き込むことを含んでいてもよい。例えば、個々のシーケンシャルライトストリームの最初の“M”MB(例えば1MB、5MBなど)はキャッシュに書き込まれ、ライトストリームの残りはディスクに書き込まれてもよい。
さらに、この動作モードは、ホスト10から受信した個々のシーケンシャルリードストリームの最初の部分に関連するデータをキャッシュに書き込むことを含んでいてもよい。
例えば、個々のシーケンシャルリードストリームのLBAに関連したデータの最初の“N M”B(例えば5MB、10MBなど)は、キャッシュ(つまりフラッシュメモリデバイス135)に既に格納されているLBAに関連するデータを除いて、キャッシュに書き込まれてもよい。
ホスト10がキャッシュに比べて大きいフットプリントを含む場合、そのような動作モードは、他の動作モードに比べて改善されたパフォーマンスを一般的に促進する。
他の実施形態では、ハイブリッドドライブ100用の他の技術的に実現可能な動作モードも、ホスト10の大きいフットプリントに関係しているかもしれない。例えば、大きいフットプリントモードで動作する間に、ハイブリッドドライブ100は、ホスト10から受信し、それに関連するデータはフラッシュメモリデバイス135に既に格納されているLBAとオーバラップするLBAと関連するライトコマンド内のライトデータを、フラッシュメモリデバイス135に格納するように構成されてもよい。
いくつかの実施形態中で、N=Mである場合、その結果、キャッシュに書き込まれた個々のシーケンシャルリードストリームの最初の部分は、キャッシュに書き込まれた個々のシーケンシャルライトストリームの最初の部分と本質的に等しい。
他の実施形態中で、N>Mである場合、その結果、個々のシーケンシャルライトストリームの部分よりも大きい個々のシーケンシャルリードストリームの部分はキャッシュに書き込まれる。記憶ディスク110へのアクセスがハイブリッドドライブ100中のそのようなキャッシュ・ミスに一般に起因するので、リード動作中のキャッシュ・ミスが性能に著しく影響を与えることが注目される。従って、N>Mの実施形態は、リードストリームの格納のために使用されるキャッシュの部分を増加させる傾向がある、それは、一般に将来のリード動作中のキャッシュ・ミスの可能性を減少させる。
いくつかの実施形態では、マイクロプロセッサ・コントローラ133は、上に記述された小さいフットプリントの動作モードおよび大きいフットプリントの動作モードよりも追加の動作モードにおいて動作可能かもしれない。
例えば、マイクロプロセッサ・コントローラ133は、上記モードの異なるコンビネーションである1または複数の中間のモードで動作可能かもしれない。中間のモードは、推定されたホストのフットプリントサイズに基づいて選択される。そのような実施形態のいくつかでは、MとNの値は固定しなくてもよい。例えば、ホスト10が小さいフットプリントを持つと決定された場合、ハイブリッドドライブ100は、個々のシーケンシャルライトストリームの最初の部分がキャッシュに書き込まれ、個々のシーケンシャルリードストリームの最初の部分がキャッシュに書き込まれる動作モードに設定されてもよい。そこでは、MとNの値は、ホスト10のフットプリントのサイズの関数として変化してもよい。
図4は、1または複数の実施形態に従って、磁気ドライブと不揮発性ソリッドステートドライブとを含むハイブリッドドライブ100のようなデータストレージ装置のリード動作を行なうための方法ステップのフローチャートを示す。方法ステップは図1〜図3のハイブリッドドライブ100と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ133によって行なわれると下に記述するが、方法ステップの制御アルゴリズムは、マイクロプロセサに基づいたコントローラ133、フラッシュマネージャデバイス136あるいはハイブリッドドライブ100に関連した他の適切な制御回路かシステムによって行なわれてもよい。
方法400はステップ401で始まる。ステップ401では、マイクロプロセサに基づいたコントローラ133はホスト10からリードコマンドを受信する。受信したリードコマンドは、シーケンシャルリードストリーム(つまりリードストリームを構築するリードコマンドがシーケンシャルLBAのグループを形成するリードストリーム)の始まり、あるいはシーケンシャルリードストリームの後の部分かもしれない。いくつかの実施形態では、マイクロプロセサに基づいたコントローラ133はRAM134へリードコマンドを受信する。
ステップ402で、マイクロプロセサに基づいたコントローラ133は、ハイブリッドドライブ100がどのモードで現在動作しているかチェックする。ハイブリッドドライブ100が小さいフットプリントモードで現在動作していることをマイクロプロセサに基づいたコントローラ133が決定する場合、方法400はステップ403に移る。ハイブリッドドライブ100が大きいフットプリントモードで現在動作していることをマイクロプロセサに基づいたコントローラ133が決定する場合、方法400はステップ411に移る。
いくつかの実施形態では、ステップ402の決定は、キャッシュヒット率に基づいてなされる。キャッシュヒット率は、キャッシュのキャッシュヒットに対応する、ホスト10から受信したリードコマンドとライトコマンドの総数の一部分に基づく。キャッシュヒット率が例えば95%未満に下がる場合、ハイブリッドドライブ100は大きいフットプリント動作に切り替えられる。
いくつかの実施形態では、キャッシュヒット率は「キャッシュミスとなる、ホスト10から受信したリードおよび/またはライトコマンドの割合を1から減算」して計算されてもよい(リードおよび/またはライトコマンドに関するデータの少なくともいくつかがフラッシュメモリデバイス135に格納されていない場合、記憶ディスク110へのアクセスとなる)。そのような実施形態中で、リードおよび/またはライトコマンドの比は、所定時間に亘ってホスト10から受信されたリードおよび/またはライトコマンドに基づいてもよい。
他の実施形態では、キャッシュヒット率は、キャッシュ内のキャッシュヒットに対応する、ホスト10から受信したリードコマンドとライトコマンドに関係するデータの総量の一部分に基づいてもよい。例えば、いくつかの実施形態では、キャッシュヒット率は、「キャッシュミスに対応する、ホスト10から受信したリードおよび/またはライトコマンドの総量の割合を1から減算」して計算されてもよい。
上に記述されるようなキャッシュヒット率が使用される実施形態では、キャッシュヒット率が所定のしきい値以上である場合に、ホスト10は小さいフットプリントを持つと決定されてもよい。反対に、キャッシュヒット率が所定のしきい値未満である場合に、ホスト10は大きいフットプリントを持つと決定されてもよい。
更に、いくつかの実施形態では、所定のしきい値は、フラッシュメモリデバイス135によって著しい磨耗(wear)が経験された場合等のある状況の下で変更されてもよい。そのような実施形態では、所定のしきい値は増加され、その結果、ホスト10は、ホスト10によってアクセスされたデータの全て、あるいは実質的に全てがフラッシュメモリデバイスに格納することができる場合、小さいフットプリントを持つと考えられてもよい。
このように、大きいフットプリントモードが使用される動作条件を拡大することにより、磨耗はフラッシュメモリデバイス135上で遅延することができる。一般に、ホスト10がハイブリッドドライブ100に関してどのフットプリントサイズを現在持っているかという決定は、方法400に先立って典型的に行なわれる。
図4に例証された実施形態では、ハイブリッドドライブ100は小さいフットプリントモードと大きいフットプリントモードの2つのモードのうちの1つで作動するように構成される。小さいフットプリントモードでは、所定にわたってホスト10によってアクセスされた全てあるいはほとんどのデータの範囲は、キャッシュのために取っておかれたフラッシュメモリデバイス135の部分より小さい。大きいフットプリントモードでは、所定期間にわたってホスト10によってアクセスされた全てあるいはほとんどのデータの範囲は、キャッシュのために取っておかれたフラッシュメモリデバイス135の部分より大きい。
他の実施形態では、ハイブリッドドライブ100は小さいフットプリントモードと大きいフットプリントモードの間の中間のモードのような追加の動作モードで作動するように構成されてもよい。
ステップ403で、マイクロプロセサに基づいたコントローラ133は、ステップ401で受信したリードコマンドに含まれているLBAに関連したデータをリードさせ、ホスト10にこのデータを供給する。このデータは、RAM134(これらのLBAがホスト10によって最近アクセスされた場合のように)、フラッシュメモリデバイス135のキャッシュ、および/または記憶ディスク110に位置されてもよい。
いくつかの実施形態では、マイクロプロセサに基づいたコントローラ133は、リードコマンドに含まれたLBAのために最初にRAM134をチェックし、次にフラッシュメモリデバイス135(例えばデータ構造135Aにより)、最後に記憶ディスク110をチェックしてもよい。
いくつかの実施形態では、マイクロプロセサに基づいたコントローラ133は、ホスト10による変更された最近のアクセスおよび/または頻度の高いアクセスをリードコマンドに含まれたLBAへ反映するために付加的なデータ構造135Bを更新する。
ステップ404で、マイクロプロセサに基づいたコントローラ133は、ステップ403で読まれたLBAをフラッシュメモリデバイス135に配置されたキャッシュへ書き込ませる。
いくつかの実施形態では、ステップ403でフラッシュメモリデバイス135から読み込まれたLBAはフラッシュメモリデバイス135に既に格納されているので、ステップ404でキャッシュに書き込まれない。
ステップ411で、マイクロプロセサに基づいたコントローラ133は、ステップ401で受信したリードコマンドの最初のLBAがシーケンシャルリードストリームに関連したデータの最初の部分内にあるデータに対応するかどうか判断する。ここで、シーケンシャルリードストリームに関連したデータの最初の部分は、所定のサイズを有する。例えば、シーケンシャルリードストリームに関連したデータの最初の部分は、所定のサイズNを有してもよい、ここで、N=1MB、5MB、10MB等である。したがって、ステップ401で受信したリードコマンドの最初のLBAが、ホスト10から現在受信しているシーケンシャルリードストリームに関連したデータの最初の“N”MBの内にあるデータを含んでいる場合、方法400はステップ403に移る。
ステップ401で受信したリードコマンドの最初のLBAがホスト10から現在受信しているシーケンシャルリードストリームに関連したデータの最初の“N”MBの内にあるデータに関係していないことをマイクロプロセサに基づいたコントローラ133が決めると、方法400はステップ412に移る。
他の実施形態では、ステップ411で、マイクロプロセサに基づいたコントローラ133は、ステップ401で受信したリードコマンドの他の特定のLBA、例えば最後のLBA、中央のLBAあるいはリードコマンドに含まれた他のLBAが、シーケンシャルリードストリームの最初の部分内にあるデータに関係しているかどうか判断してもよい。
さらに別の実施形態では、ステップ411で、マイクロプロセサに基づいたコントローラ133は、ステップ401で受信したリードコマンドの全てのLBAが、シーケンシャルリードストリームの最初の部分内にあるデータに関係しているかどうか判断してもよい。
ステップ412で、マイクロプロセサに基づいたコントローラ133は、ステップ401で受信したリードコマンドに含まれたLBAに関連したデータを読み込ませ、ホスト10にこのデータを供給する。ステップ403に記述されたものと類似の実施形態はステップ412で実行されてもよい。
図5は、1または複数の実施形態に従って、磁気ドライブと不揮発性ソリッドステートドライブとを含むハイブリッドドライブ100のようなデータストレージ装置でライト動作を実行するための方法ステップのフローチャートを示す。方法ステップは図1〜図3のハイブリッドドライブ100と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ133によって行なわれると下に記述するが、方法ステップの制御アルゴリズムは、マイクロプロセサに基づいたコントローラ133、フラッシュマネージャデバイス136あるいはハイブリッドドライブ100に関連した他の適切な制御回路かシステムによって行なわれてもよい。
方法500はステップ501で始まる。ステップ501では、マイクロプロセサに基づいたコントローラ133はホスト10からライトコマンドを受信する。ライトコマンドは、LBAと、LABに対応しハイブリッドドライブ100に格納されるべきデータとを含む。このように受信したライトコマンドは、シーケンシャルライトストリーム(つまりライトストリームを構築するライトコマンドが連続する(シーケンシャル)LBAのグループを形成するライトストリーム)の始まり、あるいはシーケンシャルライトストリームの後の部分かもしれない。
いくつかの実施形態では、マイクロプロセサに基づいたコントローラ133はRAM134へ受信したライトコマンドを書き込む。
ステップ502で、マイクロプロセサに基づいたコントローラ133は、ハイブリッドドライブ100がどのモードで現在作動しているかチェックする。ハイブリッドドライブ100が小さいフットプリントモードで現在作動していることをマイクロプロセサに基づいたコントローラ133が決める場合、方法500はステップ503に移る。
ハイブリッドドライブ100が大きいフットプリントモードで現在作動していることをマイクロプロセサに基づいたコントローラ133が決める場合、方法500はステップ511に移る。
方法400のステップ402に記述されたものに類似している実施形態は、ホスト100がハイブリッドドライブ100に関してどのフットプリントサイズを現在有するかを決める方法500に先立って実行されてもよい。
図5に例証された実施形態では、ハイブリッドドライブ100は小さいフットプリントモードと大きいフットプリントモードの2つのモードのうちの1つで動作するように構成される。
他の実施形態では、ハイブリッドドライブ100は小さいフットプリントモードと大きいフットプリントモードの間の中間のモードのような追加の動作モードで動作するように構成されてもよい。
ステップ503で、マイクロプロセサに基づいたコントローラ133は、ステップ501で受信したライトコマンドに含まれるLBAをフラッシュメモリデバイス135に書き込ませる。
いくつかの実施形態では、マイクロプロセサに基づいたコントローラ133は、ホスト10による変更された最近のアクセスおよび/または頻度の高いアクセスをライトコマンドに含まれるLBAへ反映するために付加的なデータ構造135Bを更新する。
いくつかの実施形態では、ステップ501で受信したライトコマンドに含まれたLBAをフラッシュメモリデバイス135へ書き込む前に削除および/またはガーベジコレクション手続きがフラッシュメモリデバイス135で行なわれてもよい。
ステップ511で、マイクロプロセサに基づいたコントローラ133は、ステップ501で受信したライトコマンドの最初のLBA、あるいはいくつかの実施形態では全てのLBAが、ホスト10から現在受信しているシーケンシャルライトストリームの最初の部分内にあり、受信したライトコマンドを含んでいるデータに対応するか否か決定する。ここで、シーケンシャルライトストリームの最初の部分は所定のサイズを有する。例えば、シーケンシャルライトストリームの最初の部分は、所定のサイズ“M”を有していてもよい。ここで、M=0.5MB、1MB、2MB等である。
したがって、ステップ501で受信したライトコマンドの最初のLBAが、ホスト10から現在受信しているシーケンシャルライトストリームの最初の“M”MBの内にあるデータを含んでいる場合、方法500はステップ503に移る。
ステップ501で受信したライトコマンドの最初のLBAがホスト10から現在受信しているシーケンシャルライトストリームの最初の“M”MBの内にあるデータに関係していないことをマイクロプロセサに基づいたコントローラ133が決めると、方法500はステップ512に移る。
他の実施形態では、ステップ511で、マイクロプロセサに基づいたコントローラ133は、ステップ501で受信したライトコマンドの他の特定のLBA(最後のLBA、中央のLBAあるいはライトコマンドの他のLBA等)が、シーケンシャルライトストリームの最初の部分内にあるデータに対応するかどうか判断してもよい。
ステップ512で、マイクロプロセサに基づいたコントローラ133は、ステップ501で受信したライトコマンドに含まれるLBAに関連したデータを記憶ディスク110に書き込ませる。
図6は、1または複数の実施形態に従って、磁気記憶装置と不揮発性ソリッドステートデバイスとを含むストレージデバイスであって、不揮発性ソリッドステートデバイスはストレージデバイスのキャッシュを含むストレージデバイスで2つの動作モードの少なくとも1つで動作するための方法ステップのフローチャートを示す。方法ステップは図1〜図3のハイブリッドドライブ100と共に記述されるが、当業者は方法ステップが他のタイプのシステムで行なわれてもよいことを理解するだろう。マイクロプロセサに基づいたコントローラ133によって行なわれると下に記述するが、方法ステップの制御アルゴリズムは、マイクロプロセサに基づいたコントローラ133、フラッシュマネージャデバイス136あるいはハイブリッドドライブ100に関連した他の適切な制御回路かシステムによって行なわれてもよい。
図示のように、方法600はステップ601で始まる。ステップ601では、マイクロプロセサに基づいたコントローラ133は、ハイブリッドドライブ100の現在の動作モードに基づいて、フラッシュメモリデバイス135のためのキャッシュヒット率あるいは仮想キャッシュヒット率のいずれかを決定する。
特に、ハイブリッドドライブ100が小さいフットプリントモードである場合、ステップ601でキャッシュヒット率が決定される。また、ハイブリッドドライブ100が大きいフットプリントモードである場合、ステップ601で仮想キャッシュヒット率が決定される。
いくつかの実施形態では、キャッシュ内のキャッシュヒットに対応する、ホスト10から受信したリードコマンドとライトコマンドの総数の一部分に基づいて決定されてもよい。例えば、ホスト10から受信し、フラッシュメモリデバイス135に現在格納されるデータに関連したLBA(つまりデータ構造135Aの中の現在のエントリーであるLBA)だけを含んでいるリードコマンドあるいはライトコマンドはキャッシュヒット率をインクリメントする。反対に、フラッシュメモリデバイス135に格納されていないデータに関連した少なくとも1つのLBA(つまりデータ構造135Aの中の現在のエントリーではないLBA)を含んでいるリードコマンドあるいはライトコマンドはキャッシュヒット率をディクリメントする。
他の実施形態では、キャッシュヒット率は、ホスト10から受信し、キャッシュ内のキャッシュヒットに対応するリードコマンドあるいはライトコマンドに関連するデータの総量の一部分に基づいてもよい。
いくつかの実施形態では、仮想キャッシュヒット率は、上に記述されて、キャッシュヒット率を決定するために使用される手続きに類似する手続きを使用して決定されてもよい。しかしながら、キャッシュヒット率と異なり、ハイブリッドドライブ100が大きいフットプリントモードで動作する場合のみ、仮想キャッシュヒット率は一般に決定される。
更に、キャッシュヒット率は、どのLBAおよび関連するデータがフラッシュメモリデバイス135に実際に格納されるかに基づいて(例えば、データ構造135Aを使用して)決定されるが、仮想キャッシュヒット率は、もしハイブリッドドライブ100が小さいフットプリントモードで動作していれば、どのLBAおよび関連するデータがフラッシュメモリデバイス135に格納されるかに基づいて(例えば、ゴースト・データ構造135Cを使用して)決定される。
したがって、いくつかの実施形態では、ゴースト・データ構造135Cは、リードコマンドあるいはライトコマンドに含まれるどのLBAが仮想キャッシュヒットあるいは仮想キャッシュミスを構成するかを決定するために使用されてもよい。
ステップ602で、マイクロプロセサに基づいたコントローラ133は、ステップ601で計算されたキャッシュヒット率(あるいは仮想のキャッシュヒット率)が所定のしきい値(例えば90%、95%など)より高いかどうか判断する。ハイブリッドドライブ100が小さいフットプリントモードである場合、マイクロプロセサに基づいたコントローラ133はステップ602でキャッシュヒット率を決定する。ハイブリッドドライブ100が大きいフットプリントモードである場合、マイクロプロセサに基づいたコントローラ133はステップ602で仮想キャッシュヒット率を決定する。
キャッシュヒット率(あるいは仮想のキャッシュヒット率)が所定のしきい値を越える場合、方法600はステップ603に移る。キャッシュヒット率(あるいは仮想のキャッシュヒット率)が所定のしきい値未満である場合、方法600はステップ604に移る。
いくつかの実施形態では、ステップ602で第1、第2の所定のしきい値が使用されてもよい。具体的には、キャッシュヒット率が第1の所定のしきい値以上であることが検知される場合、第1の動作モード(例えば小さいフットプリントモード)がセットされる。また、キャッシュヒット率が第2の所定のしきい値未満であることが検知される場合、第2の動作モード(例えば大きいフットプリントモード)がセットされる。そのような実施形態では、第1の所定のしきい値は第2の所定のしきい値より大きい。その結果、ホスト10が小さいフットプリント動作および大きいフットプリント動作の間のスイッチオーバー・ポイントに近いフットプリントを有する場合、ハイブリッドドライブ100は2つの動作モードの間で繰り返し切り替えることをしない。
ステップ603で、マイクロプロセサに基づいたコントローラ133はハイブリッドドライブ100を小さいフットプリントモードで動作させる。
ステップ604で、マイクロプロセサに基づいたコントローラ133はハイブリッドドライブ100を大きいフットプリントモードで動作させる。
ステップ611で、マイクロプロセサに基づいたコントローラ133はホスト10からハイブリッドドライブ100にアクセスするためにコマンドを受信する。そのリクエストはリードコマンドあるいはライトコマンドかもしれない。
ステップ612で、マイクロプロセサに基づいたコントローラ133は、現在セットされているオペレーションモード(例えば小さいフットプリントモード、大きいフットプリントモード)に従ってコマンドを実行する。
要するに、ここに記述された実施形態は、磁気記憶装置と不揮発性ソリッドステートデバイスを含むストレージデバイスであって、不揮発性ソリッドステートデバイスはストレージデバイスのためのキャッシュを含むストレージデバイスを2つの動作モードの少なくとも1つで動作するためのシステムと方法を提供する。ストレージデバイスは、ホストからのデータ・アクセスの履歴に依存して、多数の動作モード間の動作を切り替えるように構成される。好都合に、ホストが不揮発性ソリッドステートデバイスのサイズに比べて小さいフットプリントあるいは大きいフットプリントを有するかに係わらず、ストレージデバイスは良い性能を有する。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
100…ハイブリッドドライブ、110…記憶ディスク、114…スピンドルモータ、120…アクチュエーターアームアッセンブリ、124…アクチュエータアーム、127…リード/ライトヘッド、128…ボイスコイルモータ、130…電子回路、131…システム・オン・チップ、133…マイクロプロセサ、134…ランダムアクセスメモリ、135…フラッシュメモリデバイス、136…フラッシュマネージャデバイス、137…リード/ライトチャネル。
Claims (20)
- 磁気記憶装置と、
不揮発性ソリッドステートデバイスと、
第1モードと第2モードで動作可能なコントローラと、
を具備するデータストレージ装置であって、
前記不揮発性ソリッドステートデバイスは、前記データストレージ装置のためのキャッシュを含み、
前記コントローラは、キャッシュヒット率が所定のしきい値未満であることが検知される場合、第1モードから第2モードに動作を切り替えるデータストレージ装置。 - 前記コントローラは、前記不揮発性ソリッドステートデバイスに関連する磨耗の測定値が所定の磨耗レベルを超えると、前記所定のしきい値を増加する請求項1記載のデータストレージ装置。
- 前記コントローラは、ホストから受信し、キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総数の一部に基づいて前記キャッシュヒット率を計算する請求項1記載のデータストレージ装置。
- 前記コントローラは、ホストから受信し、キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総量の一部に基づいて前記キャッシュヒット率を計算する請求項1記載のデータストレージ装置。
- 前記第1モードは、ホストから受信したライトデータの実質的に全てをキャッシュに書き込むことと、ホストにより要求され、前記磁気記憶装置から読み出されたリードデータの本質的に全てをコピーすることとを具備する請求項1記載のデータストレージ装置。
- 前記第2モードは、ホストからシーケンシャルライトストリームを受信した場合、該シーケンシャルライトストリームの所定の第1のサイズを有する最初の部分をキャッシュに書き込むことと、ホストからシーケンシャルリードストリームを受信した場合、該シーケンシャルリードストリームの所定の第2のサイズを有する最初の部分をキャッシュに書き込むことと、を具備する請求項1記載のデータストレージ装置。
- 前記第1のサイズは前記第2のサイズ未満である請求項6記載のデータストレージ装置。
- 前記コントローラは、前記第2モードで動作する場合、
ホストから受信するリードコマンドとライトコマンドの仮想キャッシュであって、キャッシュと実質的に等しいサイズであり、ホストから受信した最近のリードコマンドとライトコマンドに関連するメタデータを格納する仮想キャッシュを維持することと、
仮想キャッシュに対するキャッシュヒットに基づいて仮想キャッシュヒット率を計算することと、
仮想キャッシュヒット率が所定のしきい値以上であると検知された場合、前記第2モードから前記第1モードへ動作を切替えることと、
を具備する請求項6記載のデータストレージ装置。 - 前記コントローラは、ホストから受信し、仮想キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総数の一部分に基づいて前記仮想キャッシュヒット率を計算する請求項8記載のデータストレージ装置。
- 前記コントローラは、ホストから受信し、仮想キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総量の一部分に基づいて前記仮想キャッシュヒット率を計算する請求項8記載のデータストレージ装置。
- 磁気記憶装置と、不揮発性ソリッドステートデバイスとを含むストレージデバイスを2つの動作モードのうちの少なくとも1つで動作させるための方法であって、
前記不揮発性ソリッドステートデバイスは前記ストレージデバイスのキャッシュを含み、
前記ストレージデバイスにアクセスするためのコマンドをホストから受信することと、
セットされた動作モードに応じてコマンドを実行することと、
を具備し、
キャッシュヒット率が所定の第1のしきい値未満であると検知された場合、第1モードがセットされ、キャッシュヒット率が所定の第2のしきい値以上であると検知された場合、第2モードがセットされる方法。 - 前記第1のしきい値は前記第2のしきい値未満である請求項11記載の方法。
- 前記不揮発性ソリッドステートデバイスに関連する磨耗の測定値が所定の磨耗レベルを超えると、前記第1および第2のしきい値を増加することをさらに具備する請求項11記載の方法。
- 前記ホストから受信し、キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総数の一部に基づいて前記キャッシュヒット率を計算することをさらに具備する請求項11記載の方法。
- 前記ホストから受信し、キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総量の一部に基づいて前記キャッシュヒット率を計算することをさらに具備する請求項11記載の方法。
- 前記第1モードは、ホストから受信したライトデータの実質的に全てをキャッシュに書き込むことと、ホストにより要求され、前記磁気記憶装置から読み出されたリードデータの本質的に全てをコピーする請求項11の方法。
- 前記第2モードは、ホストからシーケンシャルライトストリームを受信した場合、該シーケンシャルライトストリームの所定の第1のサイズを有する最初の部分をキャッシュに書き込むことと、ホストからシーケンシャルリードストリームを受信した場合、該シーケンシャルリードストリームの所定の第2のサイズを有する最初の部分をキャッシュに書き込むことと、を具備する請求項11の方法。
- 前記第2モードで動作する場合、
ホストから受信するリードコマンドとライトコマンドの仮想キャッシュであって、キャッシュと実質的に等しいサイズであり、ホストから受信した最近のリードコマンドとライトコマンドに関連するメタデータを格納する仮想キャッシュを維持することと、
仮想キャッシュに対するキャッシュヒットに基づいて仮想キャッシュヒット率を計算することと、
仮想キャッシュヒット率が所定のしきい値以上であると検知された場合、前記第2モードから前記第1モードへ動作を切替えることと、
を具備する請求項11記載の方法。 - ホストから受信し、仮想キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総数の一部分に基づいて仮想キャッシュヒット率を計算することをさらに具備する請求項11記載の方法。
- ホストから受信し、仮想キャッシュ内のキャッシュヒットに対応するリードコマンドとライトコマンドの総量の一部分に基づいて仮想キャッシュヒット率を計算することをさらに具備する請求項11記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/229,660 US20150277764A1 (en) | 2014-03-28 | 2014-03-28 | Multi-mode nand-caching policy for hybrid-hdd |
US14/229,660 | 2014-03-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015191654A true JP2015191654A (ja) | 2015-11-02 |
Family
ID=54190391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014186120A Pending JP2015191654A (ja) | 2014-03-28 | 2014-09-12 | データストレージ装置及び方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150277764A1 (ja) |
JP (1) | JP2015191654A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11023381B2 (en) | 2017-05-16 | 2021-06-01 | Sony Semiconductor Solutions Corporation | System and method for a hit-based ratio write cache operation mode in a storage controller |
JP2021524078A (ja) * | 2018-05-18 | 2021-09-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | キャッシュからトラックを削除するのに用いる複数のキャッシュ削除アルゴリズムの1つを選択 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10055144B1 (en) * | 2016-03-30 | 2018-08-21 | Amazon Technologies, Inc. | Configurable storage drive |
US10152268B1 (en) * | 2016-03-30 | 2018-12-11 | EMC IP Holding Company LLC | System and methods for replication resource management in asymmetric secure multi-tenancy deployments in protection storage |
US10552053B2 (en) * | 2016-09-28 | 2020-02-04 | Seagate Technology Llc | Hybrid data storage device with performance mode data path |
US10565115B2 (en) | 2017-03-30 | 2020-02-18 | Western Digital Technologies, Inc. | Calculating the optimal number of LBNS to prefetch per CPU |
US10474588B1 (en) * | 2017-04-05 | 2019-11-12 | EMC IP Holding Company LLC | Method and system for memory-based data caching |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7284093B2 (en) * | 2004-01-16 | 2007-10-16 | International Business Machines Corporation | Self-tuning cache |
US8145932B2 (en) * | 2008-06-30 | 2012-03-27 | Dell Products L.P. | Systems, methods and media for reducing power consumption in multiple controller information handling systems |
CN102591799B (zh) * | 2011-12-30 | 2015-04-15 | 华为技术有限公司 | 一种存放数据的方法和装置 |
-
2014
- 2014-03-28 US US14/229,660 patent/US20150277764A1/en not_active Abandoned
- 2014-09-12 JP JP2014186120A patent/JP2015191654A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11023381B2 (en) | 2017-05-16 | 2021-06-01 | Sony Semiconductor Solutions Corporation | System and method for a hit-based ratio write cache operation mode in a storage controller |
JP2021524078A (ja) * | 2018-05-18 | 2021-09-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | キャッシュからトラックを削除するのに用いる複数のキャッシュ削除アルゴリズムの1つを選択 |
JP7216741B2 (ja) | 2018-05-18 | 2023-02-01 | インターナショナル・ビジネス・マシーンズ・コーポレーション | キャッシュからトラックを削除するのに用いる複数のキャッシュ削除アルゴリズムの1つを選択 |
Also Published As
Publication number | Publication date |
---|---|
US20150277764A1 (en) | 2015-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9747043B2 (en) | Write reordering in a hybrid disk drive | |
US9804784B2 (en) | Low-overhead storage of a hibernation file in a hybrid disk drive | |
JP2015191654A (ja) | データストレージ装置及び方法 | |
US7568068B2 (en) | Disk drive with cache having volatile and nonvolatile memory | |
US10776153B2 (en) | Information processing device and system capable of preventing loss of user data | |
US9176874B1 (en) | Direct mapping of data in a storage system with a flash cache | |
US9703699B2 (en) | Hybrid-HDD policy for what host-R/W data goes into NAND | |
US20100325352A1 (en) | Hierarchically structured mass storage device and method | |
US8341339B1 (en) | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk | |
US8706985B1 (en) | System and method for optimizing garbage collection in data storage | |
JP2014160450A (ja) | データストレージデバイスおよび書き込み方法 | |
US20100293337A1 (en) | Systems and methods of tiered caching | |
US9208101B2 (en) | Virtual NAND capacity extension in a hybrid drive | |
US9104578B2 (en) | Defining address ranges used to cache speculative read data | |
US20140258591A1 (en) | Data storage and retrieval in a hybrid drive | |
KR20200140534A (ko) | 비휘발성 랜덤 액세스 메모리를 이용한 세그먼트 클리닝 방법 및 이를 구현하기 위한 메모리 관리 장치 | |
US9459802B1 (en) | Hybrid-HDD that limits dirty data in NAND | |
JP2014170523A (ja) | データ記憶装置における読み出し期間中にデータをフェッチするためのシステムおよび方法 | |
US9323467B2 (en) | Data storage device startup | |
US9588898B1 (en) | Fullness control for media-based cache operating in a steady state | |
WO2015173889A1 (ja) | ストレージ装置 | |
JP2010176305A (ja) | 情報処理装置およびデータ記憶装置 | |
US9785563B1 (en) | Read command processing for data storage system based on previous writes | |
KR101831126B1 (ko) | 스토리지 내의 데이터 처리 장치의 제어 방법 | |
JP2014164792A (ja) | データストレージデバイス及び方法 |