JP5922740B2 - メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法 - Google Patents

メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法 Download PDF

Info

Publication number
JP5922740B2
JP5922740B2 JP2014219123A JP2014219123A JP5922740B2 JP 5922740 B2 JP5922740 B2 JP 5922740B2 JP 2014219123 A JP2014219123 A JP 2014219123A JP 2014219123 A JP2014219123 A JP 2014219123A JP 5922740 B2 JP5922740 B2 JP 5922740B2
Authority
JP
Japan
Prior art keywords
command
data access
access command
memory
data
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.)
Active
Application number
JP2014219123A
Other languages
English (en)
Other versions
JP2015130150A (ja
Inventor
スタントン・マクドノー・キーラー
マーゴット・アン・ラパンセ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of JP2015130150A publication Critical patent/JP2015130150A/ja
Application granted granted Critical
Publication of JP5922740B2 publication Critical patent/JP5922740B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本開示はデータ記憶デバイス(DSD)に関連し、特に、ソリッドステートメモリを用いるDSDに関連する。
ある実施形態において、装置は、不揮発性ソリッドステートメモリおよびディスクメモリを含むデバイスで第1のデータアクセスコマンドを受信し、前記第1のデータアクセスコマンドが前記不揮発性ソリッドステートメモリに向けられているとき、前記第1のデータアクセスコマンドを、前記不揮発性ソリッドステートメモリのための第1のコマンド待ち行列に記憶するように構成されたコントローラを備えてもよい。
別の実施形態において、メモリデバイスは、プロセッサに方法を行わせる命令を記憶してもよく、前記方法は、キャッシュメモリを含むデータ記憶デバイスで第1のデータアクセスコマンドを受信することと、前記第1のデータアクセスコマンドが前記キャッシュメモリに向けられているとき、前記第1のデータアクセスコマンドを、前記キャッシュメモリのための第1のコマンド待ち行列に記憶することと、を含む。
別の実施形態において、方法は、データ記憶装置で第1のデータアクセスコマンドを受信することと、前記第1のデータアクセスコマンドを第1のコマンド待ち行列に記憶することと、前記データアクセスコマンドがフラッシュメモリに向けられているか、またはディスクメモリに向けられているかを判定することと、前記第1のデータアクセスコマンドが前記フラッシュメモリに向けられているとき、前記第1のデータアクセスコマンドを第2のコマンド待ち行列に記憶することと、を含んでもよい。
ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を含むシステムの例示的な実施形態の図である。 ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を含むシステムの別の例示的な実施形態の図である。 ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を含むシステムの別の例示的な実施形態の図である。 ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を用いるプロセスの例示的な実施形態の図である。 ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を用いる方法の例示的な実施形態のフローチャートである。 ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を用いるプロセスの例示的な実施形態の図である。 ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を用いる方法の例示的な実施形態のフローチャートである。
実施形態の以下の詳細な説明において、この説明の一部をなし、特定の実施形態を例示するために示される添付の図面を参照する。本開示の範囲を逸脱しない範囲で他の実施形態が利用されてもよく、かつ、構造的変化がなされてもよいことを理解すべきである。また、本開示の範囲を逸脱しない範囲で種々の実施形態の特徴が組み合わされ、分離され、交換され、または取り除かれ得ることも理解すべきである。
図1は、概して100と称される、ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を含むシステムのある実施形態を示す。システム100は、ホスト102およびデータ記憶デバイス(DSD)104を含んでもよい。ホスト102はまた、ホストシステムまたはホストコンピュータと称されてもよい。ホスト102は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、タブレット端末、電話機、音楽プレーヤ、別の電子デバイス、またはそれらのいずれかの組み合わせであり得る。同様に、DSD104は、上記のデバイスのいずれか、またはデータを記憶または検索するために使用されてもよいいずれかの他のデバイスであってもよい。ホスト102およびDSD104は、有線または無線接続を経由して、あるいはローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)により接続されてもよい。いくつかの実施形態において、DSD104はホスト102に接続されていない独立型デバイスであり得るか、またはホスト102およびDSD104の両方が単一のユニットの一部であってもよい。
DSD104は、不揮発性メモリ106およびソリッドステートメモリ108を含んでもよい。不揮発性メモリ106は、ディスクドライブなどの磁気記憶媒体、不揮発性ソリッドステートメモリ、または他のタイプのメモリ、またはそれらの組み合わせを備えてもよい。ソリッドステートメモリ108は、NANDまたは他のタイプのフラッシュメモリなどの別の不揮発性メモリ、いずれかの他のタイプの不揮発性メモリ、またはそれらの組み合わせを備えてもよい。ソリッドステートメモリ108は、例えば、不揮発性メモリ106から頻繁にまたは最近、アクセスされたデータを記憶するために、不揮発性メモリ106のキャッシュとして使用されてもよい。例えば、DSD104は、ディスク不揮発性メモリ106およびソリッドステートフラッシュキャッシュメモリ108を有するハイブリッドドライブを備えてもよい。例えば、不揮発性メモリ106は、ディスクメモリ、シングルレベルまたはマルチレベルフラッシュなどのソリッドステートメモリ、別の種類の不揮発性メモリ、またはそれらのいずれかの組み合わせであってもよい。いくつかの実施形態において、不揮発性メモリ106およびソリッドステートメモリ108は、データを記憶または検索するために、異なるアクセス方法を用いてもよい。
いくつかの実施形態において、ソリッドステートメモリ108は、不揮発性メモリ106より早い読み取りまたは書き込みアクセス時間を有してもよい。ソリッドステートメモリ108は、不揮発性メモリ106に対するアクセス速度より早いアクセスのデータを記憶するためのキャッシュとして使用されてもよい。例えば、DSD104は、ホスト102からのデータ読み取り要求を受信してもよく、かつ、DSDは、まず要求されたデータを保持するかどうかを判定するために、キャッシュメモリ108を確認してもよい。もしそうであるなら、DSD104はデータを迅速に検索することが可能であってもよく、一方、もしそうでなければ、DSDは、より遅い不揮発性メモリ106からデータを検索する必要があってもよいし、未来の読み取り要求の場合は、データをキャッシュ108に装填してもよい。別の例において、DSD104は、データ書き込みコマンドを受信してもよい。DSD104はデータをキャッシュメモリ108に書き込んでもよく、その書き込みは不揮発性メモリ106への書き込みより早くてもよい。このようにして、もしデータが頻繁に更新されつつあれば、データはより早いキャッシュ108に書き込まれてもよいし、間隔を置いて、またはしばらく経って、不揮発性メモリ106にコピーされるだけでもよい。ソリッドステートメモリ108によって提供された減少した待ち時間は、DSD104の全体的な性能および応答時間を改善し得る。
図2は、概して200と指定される、ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を含むシステムのある実施形態の図を示す。システム200は、図1に示されるホスト102などのホストデバイス202を含んでもよい。ホスト202は、有線または無線接続を介して、図1に示されるDSD104などのソリッドステートハイブリッドドライブデータ記憶デバイス(DSD)204に接続されてもよい。DSD204は、ハードディスクドライブ206などの不揮発性メモリや、NANDフラッシュメモリ208などの不揮発性ソリッドステートメモリを含んでもよい。DSD204は、DSD204の他の動作およびプロセスだけでなくメモリに対するアクセス動作を制御するために、HDDコントローラ210およびフラッシュコントローラ212をさらに含んでもよい。いくつかの実施形態において、HDDコントローラ210およびフラッシュコントローラ212は1つ以上の回路デバイスを含んでもよいし、複数の動作を行うように構成された単一のユニットに組み込まれてもよい。さらに、DSD204は、一次待ち行列214およびフラッシュ待ち行列216を有してもよいし、保留のDSD204のアクセス動作を記憶するために使用されてもよい。一次待ち行列214およびフラッシュ待ち行列216は、ダイナミックランダムアクセスメモリ(DRAM)またはスタティックRAM(SRAM)ユニットなどの1つ以上のメモリに記憶されてもよい。
ある例示的な実施形態において、ホスト202は、SATAインターフェースなどの有線または無線インターフェースを通じて、コマンドをDSD204に送信してもよい。インターフェースを通じてDSD204により受信されるコマンドは、一次待ち行列214内に入れられてもよい。例えば、単一のコマンドを受信するよりはむしろ、コマンドを実行し、その後、第2のコマンドを受信する前に「動作完了」応答をホストに戻し、DSDはその代わりに複数のコマンドを受信して、それらを待ち行列に記憶してもよく、それぞれの後に、コマンドの受信が成功して、新コマンドが送信されてもよいという表示をホストに戻す。これは新コマンドが受信されるようにするが、その一方、先のコマンドは以前として実行されつつある。これは、SATAインターフェースコマンドなどのためのコマンドオーバーヘッドによる遅延を減少させることに役立つことも可能である。
DSD204は、例えば、最も古く受信されたコマンドを一次待ち行列214から検索することによって、所与のコマンドをHDDコントローラ210で受信してもよい。読み取りまたは書き込み動作などのデータアクセス動作について、HDDコントローラ210は、動作がHDD206またはフラッシュメモリ208に向けられるべきかどうかを判定してもよい。データ動作がHDD206に向けられた場合、HDDコントローラ210はHDD206にアクセスすることができ、その後、必要に応じてホスト202に結果を戻す。
本開示のある実施形態によると、フラッシュメモリ208に向けられた動作は、例えば、フラッシュに基づく動作を実行するためのプログラム可能な状態機械(PSM)を含んでもよいフラッシュコントローラ212に送信されてもよい。フラッシュ待ち行列216なしのシステムにおいて、コマンドは、動作を完了するためにフラッシュメモリ208にアクセスするフラッシュコントローラ212に送信されてもよい。フラッシュコントローラ212はその後、HDDコントローラが一次待ち行列214から次の動作に進むことが可能となる前に、結果をHDDコントローラ210に送り返してもよい。しかしながら、本例におけるようなフラッシュ待ち行列212を有するシステムにおいて、実行またはフラッシュコントローラ212に到達する前に、コマンドはフラッシュ待ち行列216に記憶されてもよい。
複数のコマンド状況において、これは、コマンドの受信および実行の性能を改善してもよく、バスを介して送信されつつある複数のコマンドによる待ち時間の量を減少させることによって、NANDフラッシュからのデータをHDDコントローラに転送する。フラッシュキャッシュを使用するバッファリングコマンドは、図4に示されるように、連続送信を許可する。
図3は、概して、300と指定される、ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を含むシステムのある実施形態の別の図を示す。具体的には、図3は、例示的なソリッドステートハイブリッドディスクドライブデータ記憶デバイス(DSD)300の機能的なブロック図を提供する。DSD300は、図1に示されるようなデバイス104などのデータ記憶デバイスであってもよい。DSD300は、DSD300をホスト302から物理的に取り除かれるようにさせるコネクタ(図示せず)を含んでもよい、ハードウェアまたはファームウェアに基づくインターフェース回路304を介して、(図1に示されるホストシステム102などの)ホストデバイス302と通信可能である。いくつかの実施形態において、DSD300は、DSDの構成要素を収納するケーシング340を有してもよい。いくつかの実施形態において、DSD300は、有線または無線通信を通じてインターフェース304を介して、302と通信してもよい。バッファ312は、読み取りおよび書き込み動作中、一時的にデータを記憶することができ、保留の動作が一時的に記憶された保留の実行になり得るコマンド待ち行列(CQ)313を含み得る。CQ313は、図2に示された一次待ち行列214に対応してもよい。インターフェース304を通じて到着するコマンドは、CQ313で自動的に受信されるかまたは、HDDコントローラ306、インターフェース304、あるいは別の構成要素によって、そこに記憶されてもよい。NANDフラッシュメモリなどのソリッドステートメモリ330が含まれることが可能であり、これは、例えば、最近または頻繁に、読み出された、または書き込まれたデータを記憶するために、キャッシュとして使用され得る。ディスク309およびフラッシュ330などの複数のタイプの不揮発性記憶媒体を含むDSD300は、ハイブリッド記憶デバイスであってもよい。
DSD300は、関連するメモリ308およびプロセッサ310を有する(図2のHDDコントローラ210などの)プログラム可能なコントローラ306を含み得る。さらに、図3は、DSD300が読み書き(R/W)チャネル317を含み得ることを示し、このチャネルは、書き込み動作中にデータを符号化することができ、かつ、読み取り動作中に、ディスク(複数を含む)309から検索されたユーザデータを再構成することができる。プリアンプ回路(プリアンプ)318は、書き込み電流をヘッド(複数を含む)319に印加することができ、かつ、リードバック信号の前置増幅を提供する。サーボ制御回路320はサーボデータを使用して、ヘッド(複数を含む)319の位置を合わせるために、コイル324に適切な電流を供給してもよい。コントローラ306は、コマンド待ち行列313における種々の保留のコマンドの実行中、ディスク(複数を含む)309上の所望の場所にヘッド(複数を含む)319を移動するために、プロセッサ322と通信することができる。いくつかの実施形態において、フラッシュ330は、ディスクから読み出されキャッシュに装填されたデータなどの、すでにディスク309上に記憶されたデータのコピーを記憶してもよい。またあるときは、フラッシュ330は、ディスク309にまだ記録されていない書き込みデータなどの、ディスク309上にはないデータを含んでもよい。
ある例示的な実施形態において、コマンドは、インターフェース304を通じてホスト302からDSD300で受信される。インターフェース304は、有線あるいは無線の、とりわけ、USB、IEEE1394、コンパクトフラッシュ(登録商標)、SATA、eSATA、PATA、SCSI、SAS、PCIe、ファイバーチャネル、イーサネット(登録商標)、またはサンダーボルトなどの、ホスト302とDSD300間で通信を許可するいずれかのインターフェースを備えてもよい。DSD300は、コマンドの性質を決定して、それに応じて動くように構成されてもよい。例えば、読み取りコマンドは、DSD300が、例えば、HDDコントローラ306を使用して、データがキャッシュ330内にあるか、またはディスク309の上にあるだけか、また、データがキャッシュ内になかった場合、データをキャッシュから検索するかそれともディスクをスピンアップするかを判定するという結果になってもよい。別の例では、書き込みコマンドは、DSD300が、データをキャッシュ330に書き込み、キャッシュ内に依然として存在している同一データのいずれかの古いコピーを無効化し、後で、書き込みデータをディスク309に転送するという結果になってもよい。
いくつかの実施形態において、DSD300は、フラッシュ待ち行列326とフラッシュコントローラ328をさらに含んでもよい。所定の実施形態において、フラッシュ待ち行列326は、フラッシュメモリ330から物理的に分離されたメモリ要素になり得る。フラッシュ待ち行列326は、コマンド待ち行列313を有するDRAMバッファ312に類似した、揮発性または不揮発性メモリを含んでもよく、かつ、保留の動作をフラッシュメモリ330に記憶するために使用されてもよい。いくつかの実施形態において、フラッシュ待ち行列は、CQ313に加えて、DRAMバッファ312に記憶されることが可能である。フラッシュ待ち行列などは、DSD300に、フラッシュメモリ330の複数の動作を行列待ちさせてもよく、その一方、他の動作が実行しつつあり、それによって、待ち時間を改善し、フラッシュメモリ330のアイドル時間を減少させる。
フラッシュコントローラ328は、データを記憶するまたは検索するなどのフラッシュメモリ330の動作を制御するために、プログラム可能な状態機械(PSM)などの回路を含んでもよい。いくつかの実施形態において、HDDコントローラ306およびフラッシュコントローラ328は、コマンドがディスクに向けられるべきか、あるいはフラッシュに向けられるべきかを判定するためのソフトウェア、ディスクメモリ309の動作を制御するためのソフトウェア、およびフラッシュメモリ330の動作を制御するためのソフトウェアなどの異なる機能を行うためのソフトウェアを起動する単一の回路の一部であってもよい。いくつかの実施形態において、HDDコントローラ306は、すべてのフラッシュコマンドをフラッシュ待ち行列326に送信するように構成されてもよく、フラッシュコントローラ328は、待ち行列326を通してコマンドを受信する。いくつかの実施形態において、コマンドはHDDコントローラ306からフラッシュコントローラ328に送信されてもよく、フラッシュコントローラは、動作を迅速に開始するように、またはフラッシュメモリがビジーな場合、コマンド(複数を含む)をフラッシュ待ち行列326内に設置するように構成されてもよい。コマンドが受信され実行されるか、またはフラッシュ待ち行列326への記憶が成功である場合、コマンドの受信が成功であったというインジケータが戻されてもよい。フラッシュ待ち行列326がフルの場合、フラッシュメモリがビジーであるというインジケータが戻されてもよい。フラッシュメモリ330、フラッシュコントローラ328、およびフラッシュ待ち行列326間の他の実施および動作もまた可能である。
図4に戻ると、ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を用いるプロセスの例示的な実施形態の図が示されている。第1の例400では、フラッシュメモリの待ち行列なしのシステムの図が示されている。例400では、第1のコマンド402がフラッシュメモリで受信され、その後、処理されて、状態は404に戻る。第1のコマンドが処理を終了した後にのみ、フラッシュメモリは第2のコマンド406を受信することが可能であり、第2のコマンドを処理した後などに、第3のコマンドは受信されることのみが可能である。各コマンドを完了した後、フラッシュメモリ自身は遊んでいてもよい一方で、次のコマンドが受信され、その結果、全体的に無効力となる。
図4の第2の例420において、フラッシュメモリのためのコマンド待ち行列を用いるシステムが示される。この例420では、第1のコマンド422はフラッシュメモリで受信されてもよく、処理が開始可能となる。第1のコマンド422の処理が完了する前に、フラッシュは、行列待ちさせることができる第2のコマンド424を受信してもよく、フラッシュコントローラは、第1のコマンドが完了する前でさえも、第2のコマンドの実行を開始できる。第3のコマンド426はまた、第1のコマンド422が完了する前に、受信され、行列待ちさせられてもよい。第1のコマンド422が処理を終了して、状態が戻る前に、第2のコマンド424は、フラッシュメモリのアイドル時間がほぼなしで、または全くなしで、処理を開始することができる。フラッシュコントローラは、各コマンドが受信されて、かつ先のコマンドが完了する前に、各コマンドの一部として受信された論理ブロックアドレス(LBA)に対応するフラッシュメモリにおいて物理的な場所を決定すること、フラッシュからデータを検索することと、コマンドの結果を戻すことなどの動作を各コマンド上で行うことが可能であってもよい。このように、フラッシュコントローラは、複数のコマンドを同時に処理することが可能であってもよく、処理の有効性が利用可能となると、コマンドをフラッシュコマンド待ち行列から検索する。コマンドを、バッファおよび連続送信動作に記憶することによって、3つのコマンドのための合計待ち時間の重要な減少430は、フラッシュ待ち行列なしの例402と比較されて達成され得る。
いくつかの実施形態において、フラッシュ待ち行列は、先入れ先出し(FIFO)待ち行列として機能してもよく、コマンドは、それらが受信される順番で実行される。他の実施形態において、行列待ちコマンドは、順序に従わず行われてもよい。例えば、図6および図7に関連してより詳細に説明されるように、コマンドは組み合わされてもよく、その結果、所定のコマンドが、それらが受信される順番とは異なる順番で完了されることになる。いくつかの実施形態において、DSDは、行列待ちコマンドの重要性または優先度に基づいて動作の性能を編成することが可能であってもよい。例えば、コマンドは優先度値を割り当てられてもよく、ユーザアプリケーションから生じるコマンドは、システムアプリケーションからのコマンドに対して優先度を与えられてもよい。
図5は、概して、500と指定される、ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を用いる方法の例示的な実施形態のフローチャートを示す。本方法は、502で、ホストからのコマンドをデータ記憶デバイス(DSD)で受信することを含んでもよい。例えば、ホストは、有線または無線接続を通じて、データを読み取るまたは書き込むためのコマンドをデータ記憶デバイスに送信してもよい。コマンドは、コントローラまたはプロセッサで受信されてもよく、コントローラまたはプロセッサは、その後、コマンドを、他のメモリコントローラ、またはコントローラまたはプロセッサの他のソフトウェアモジュールに向けてもよい。
本方法はその後、504で、例えば、DSDのコントローラで、コマンドがディスクメモリなどの第1のメモリに、またはソリッドステートNANDフラッシュメモリなどの第2のメモリに向けられるかどうかを判定することを含んでもよい。例えば、書き込みコマンドは、関連データを記憶用のフラッシュメモリに送信することを含んでもよく、このデータはその後、ディスクメモリに記憶されてもよい。いくつかの状況において、書き込みデータは、記憶用のディスクメモリに直接、送信されてもよい。読み取りコマンドは、読み取りコマンド内で識別された論理ブロックアドレス(LBA)がフラッシュメモリ内に記憶されているかどうかを、またはそれらがディスクメモリから検索されるべきかどうかを判定することを含んでもよい。
504で、コマンドをディスクメモリに向けるために判定が行われるとき、本方法は、506で、コマンドを行うためにディスクメモリにアクセスすることを含んでもよい。例えば、ディスクはスピンアップされてもよく、データはディスクに書き込まれる、またはディスクから読み取られてもよく、結果(例えば、書き込み完了表示または読み取りデータ)が戻される。コマンドを行った後、またはいくつかの実施形態ではコマンドの受信が成功し、目標メモリを識別後、DSDは、502で、コマンドをホストから受信することに戻ってもよい。例えば、DSDは、先のコマンドを完了する前に、付加的コマンドを受信することが可能であってもよい。
504で、ホストから受信したコマンドをフラッシュメモリに向けるために判定が行われるとき、本方法は、508で、コマンドをフラッシュコマンド待ち行列に付加することを含んでもよい。いくつかの実施形態において、コマンドは、例えば、フラッシュメモリが遊んでいて、コマンドの処理を迅速に開始できる場合、フラッシュ待ち行列に設置されることなく迅速に、実行用のフラッシュコントローラに送信されてもよい。他の実施形態において、いずれかの他のコマンドがフラッシュメモリで処理されつつあるかどうかにかかわらず、コマンドはフラッシュ待ち行列に設置されてもよい。
508で、いったんコマンドがフラッシュ待ち行列内に設置されてしまうと、本方法は、510で、コマンドの実行を開始することを含んでもよい。例えば、フラッシュメモリがすでにビジーでない場合、コマンドは迅速に実行されてもよいし、またはフラッシュメモリがもはやビジーでなくなるまでは、コマンドは待ち行列で保留のままであってもよい。いくつかの実施形態において、先のフラッシュメモリ動作がまだ完了していない場合でさえも、フラッシュコントローラはコマンドを実行する準備をしてもよい。いったんコマンドが実行されてしまうと、本方法は、例えば、DSDコントローラまたはホストデバイスに、動作の結果を戻すことを含んでもよい。
508で、コマンドをフラッシュ待ち行列内に設定した後、本方法はまた、514で、フラッシュメモリがコマンドを受信したことを表示しているコマンド受信済み応答を送信することを含んでもよく、コマンド受信済み応答は、DSDコントローラまたはホストに対して、付加的コマンドがフラッシュに送信され得ることを表示してもよい。同時に、または510でコマンドの実行を開始する前に、コマンド受信済み応答が送信されてもよいし、また、付加的コマンドが受信されてもよい。例えば、508で、コマンドはフラッシュ待ち行列内に設置されてもよく、514で、「コマンド受信済み」応答は送信されてもよく、またコマンドは待ち行列で保留のままであってもよい一方、他の動作がフラッシュメモリ上で完了し、かつ、付加的コマンドが受信されて、これもまたフラッシュ待ち行列内に設置されてもよい。
図6に戻ると、ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を用いるプロセスの例示的な実施形態の図が示される。図4に示されるように、第1の例600は、フラッシュメモリのための待ち行列なしのシステムの図を示す。例600において、先の動作が完了し、状態が戻った後にのみ、各コマンドはフラッシュメモリに送信される。この結果、フラッシュメモリが遊んでいるかもしれない一方でコマンドが転送されつつあるため、非効率になるかもしれない。
待ち行列なしのフラッシュメモリを用いるいくつかのシステムには、付加的な非効率性がある場合がある。いくつかの実施形態において、フラッシュメモリの「ページ」の大きさに基いてデータがフラッシュメモリから徐々に読み取られてもよい。例えば、フラッシュページは、8キロバイト、16キロバイト、またはなんらかの他の量のデータを含んでもよい。いくつかのシステム構築において、DSDは、複数のページにまとめて縞模様をつけるように構成されてもよく、その結果、2ページ以上がともに読み取られ、16キロバイト、32キロバイトの有効な読み取りサイズ、またはいくつかの他の複数のフラッシュページのサイズとなる。しかしながら、ホストは、データがフラッシュ読み取り要素より小さい大きさになってもよいことを要求する。例えば、ホストは、DSDから読み取りコマンドごとにわずか4キロバイトのデータを要求してもよいが、DSDは同時に8または16キロバイトを読むように構成されていてもよい。このような実施形態において、フラッシュコントローラは、わずか4キロバイトのデータをHDDまたはDSDコントローラに送信してもよく、ホストに続いて、要求された4キロバイト以外のすべての読み取りデータを破棄する。ホストはその後、読み取られただけで破棄された同一のフラッシュ要素に位置していた別の4キロバイトのデータの別の読み取り要求を送信してもよい。同一のフラッシュページが短時間に複数回読み取られる必要があるかもしれないため、これはDSDにおける動作の非効率性につながり得る。
図6の第2の例620は、フラッシュ待ち行列を含むシステムを示し、このシステムは、単一の動作でホストコマンドによって要求されるよりも大きなデータ要素をフラッシュメモリから読み取るように構成されていてもよい。例620において、第1のコマンド622はフラッシュメモリで受信されてもよく、それはその後、630で、コマンドの処理を開始してもよい。第1のコマンド622が処理されている間、第2のコマンド624および第3のコマンド626が受信されてフラッシュ待ち行列に設置されてもよい。フラッシュコントローラは、第2のコマンド624および第3のコマンド626が両方ともに、単一のフラッシュデータ要素に含まれるデータの読み取り要求であるかどうかを判定してもよい。例えば、両方のコマンドが、16キロバイトの同一のフラッシュページ上に記憶された4キロバイトのデータのための読み取りコマンドであってもよい。第2のコマンド624および第3のコマンド626が合体できると判定された後、フラッシュコントローラは第2のコマンド624および第3のコマンド626の両方のデータを含むフラッシュページ上で単一の読み取り動作632を行って、その両方のデータを戻してもよい。2つのコマンドの2つの読み取り動作を実行するよりはむしろ、単一の動作が行われてもよい。これは、他のコマンドが完了する一方で待ち行列コマンドの利点を結合させることによって、またコマンドをフラッシュメモリ上のより少ない動作に結合させることによって、受信された動作の応答時間で著しい減少634を作成することができる。
いくつかの実施形態において、DSDは、コマンドを結合する利点を最大限にするために、設定された数のコマンドを動作開始前に行列待ちさせるように構成されてもよい。例えば、DSDは、コマンドを実行する前に、8つのコマンドがフラッシュメモリのために行列待ちさせられるまで待機してもよく、その結果、関連コマンドがより少ない動作に結合されることが可能になる。関連コマンドは、連続して受信される必要はない。例えば、6つのコマンドがフラッシュ待ち行列内にある場合、フラッシュコントローラは、第1および第5のコマンドが、同一のフラッシュ読み取り可能データ要素のための読み取り要求であることを識別してもよい。両方のコマンドが同一の動作で完了されることが可能であり、第1および第5のコマンドの両方をフラッシュ待ち行列から取り除く。いくつかの実施形態において、DSDは、付加的な動作が受信されるかどうかを判定するためには短時間、待つだけでよく、その結果、コマンドは、フラッシュ待ち行列で長時間、保留のままにはならない。
いくつかの実施形態において、複数の書き込みコマンドはまた、複数の書き込み動作よりはむしろ1つの動作で、フラッシュメモリに書き込まれるように結合されてもよい。いくつかの実施形態において、フラッシュが使用されて、最近のデータを読み書きから記憶してもよく、また、書き込みコマンドは単一の書き込み動作に結合されてもよい。書き込みは、同一のLBA範囲に限定される必要はない。明確なLBA範囲すべてにおける複数の書き込みコマンドは、単一の動作でフラッシュに書き込まれ得る。いくつかの実施形態において、個々の書き込みをフラッシュページ境界に合わせることから生じるような、フラッシュの無駄な空間がないように、一組の書き込みはともにグループ分けされることが可能である。書き込み速度がより早くなるかもしれないため、これは性能だけでなくフラッシュ利用効率も改善できる。
図7は、ハイブリッド素子におけるソリッドステートメモリコマンド待ち行列を用いる方法700の例示的な実施形態のフローチャートを示す。方法700は、702で、第1のユニットのデータのための読み取りコマンドを受信することを含んでもよい。1つ以上の論理ブロックアドレス(LBA)に関連する4kByteユニットのデータなどの特定のチャンクデータを検索するために、例えば、これは、ハイブリッドデータ記憶デバイスで、ホストから読み取りコマンドを受信することを含んでもよい。
本方法は、その後、704で、要求されたデータがフラッシュメモリ内(例えば、NANDフラッシュメモリのソリッドステートキャッシュ内)にあるかどうか、またはデータがディスクメモリ上にあるのみであるかどうかを判定することを含んでもよい。704で、データがディスクから検索されることになっていれば、本方法は、706で、ディスクからデータを読み取ることを含んでもよい。DSDは、702で、読み取りデータのコピーをフラッシュメモリに記憶し、要求されたデータをホストデバイスに戻し、さらなるコマンドを待ってもよい。704で、要求されたデータがフラッシュ内にすでに位置している場合、本方法は、708で、読み取りコマンドをフラッシュ待ち行列内に設置することを含んでもよい。
方法700は、710で、要求された第1のユニットのデータが、別の行列待ち読み取りコマンドに関連するデータと同一の読み取り可能フラッシュ要素上に位置しているかどうかを判定することを含んでもよい。例えば、フラッシュコントローラは、第1のユニットのデータが、他の要求されたデータと同一のフラッシュページ上にあるかどうか、または複数のフラッシュページが同時に読み取られる実施形態において、第1のデータが、他の要求されたデータと同一の組の縞模様がつけられたページ上にあるかどうかを判定してもよい。第1のユニットのデータが、他の要求されたデータと同一のフラッシュ読み取り要素上にない場合、本方法は、712で、第1のデータを含むページを読み取り、それをホストに戻すことを含んでもよい。フラッシュ待ち行列内の先の保留の動作がまず完了した後に、これは起きてもよい。
第1のユニットのデータが他の要求されたデータと同一のフラッシュ要素上にあると判定された場合、本方法は、714で、第1のデータおよび別の行列待ちコマンドと関連付けられた他のデータの両方を含むフラッシュページまたは要素を読み取って、両方の組のデータをホストに戻すことを含んでもよい。関連コマンドに対する710の判定は、各々の新コマンドが受信されるときに行われてもよく、その結果、所与のコマンドは待ち行列内の先のコマンドと組み合わされてもよいし、または後に受信されたコマンドと組み合わされてもよい。例えば、コマンドが先に行列待ちされたコマンドと組み合わされた場合、「順番を無視して」、コマンドが実行されてもよく、それより早く検索されたデータは、いつそれが待ち行列に設置されたかによって、今度は各コマンドが実行されたかどうかになるであろう。
図5および図7の方法は例示的な実施形態であり、本開示の範囲を逸脱しない範囲で変更がなされてもよい。例えば、図6に関して説明された書き込みコマンドなどの、読み取りコマンド以外のコマンドが組み合わされてもよい。ディスクメモリおよびフラッシュメモリ以外の他のタイプのメモリが使用されてもよい。他の変更も可能である。
種々の実施形態によれば、本願に記載された方法は、コンピュータプロセッサまたはコントローラデバイス上で起動している1つ以上のソフトウェアプログラムとして実施されてもよい。別の実施形態によれば、本願に記載された方法は、ディスクドライブなどのデータ記憶デバイスを使用するパーソナルコンピュータなどのコンピュータデバイス上で起動している、1つ以上のソフトウェアプログラムとして実施されてもよい。アプリケーション特有の集積回路、プログラム可能な論理アレイ、および他のハードウェアデバイスを含むがそれらに限定されない専用ハードウェア実装は、同様に本願に記載された方法を実施するように構成され得る。さらに、本願に記載された方法は、命令が実行されたときにプロセッサにその方法を行わせるハードウェア要素命令などのコンピュータ読み取り可能記憶媒体またはデバイスとして実施されてもよい。本願に記載された方法を行う命令はまた、コンピュータ読み取り可能送信媒体を使用する実行用のデバイスに広められてもよい。
本願に記載された実施形態の図示には、種々の実施形態の構造の一般的な理解を提供する意図がある。図示は、本願に記載された構造または方法を利用する装置およびシステムの要素および特徴のすべての完璧な説明として役立つことを意図してはいない。他の多くの実施形態は、本開示を検討するにあたり、当業者にとって自明であってもよい。本開示から他の実施形態が利用されて派生してもよく、その結果、構造的および論理的な代替および変化が、本開示の範囲から逸脱しない範囲でなされてもよい。さらに、特定の実施形態が本願に例示され記載されているものの、同一のまたは同様の目的を達成するために設計されたいずれかの二次的構成が、図示された具体的な実施形態によって代替できてもよいことが理解されるべきである。
この開示は、種々の実施形態のいずれかのかつすべての二次的適合または変更を網羅する意図がある。本願に特に記載されてはいない上述の実施形態の組み合わせ、および他の実施形態は、記載を検討するにあたり、当業者にとって自明であろう。さらに、図示は単に、代表的なものであり、縮尺通りに描かれていなくてもよい。図示における所定の比率は誇張されていてもよく、一方、他の比率は縮小されていてもよい。したがって、開示および図面は、例示的なものとみなされ、限定的なものではない。

Claims (11)

  1. コントローラであって、
    第1の不揮発性ソリッドステートメモリと、前記第1の不揮発性ソリッドステートメモリより遅いアクセス速度を有する第2の不揮発性メモリとを含むデバイスで第1のデータアクセスコマンドを受信し、かつ
    前記第1のデータアクセスコマンドが、前記第1の不揮発性ソリッドステートメモリに向けられているとき、前記第1のデータアクセスコマンドを、前記第1の不揮発性ソリッドステートメモリのための第1のコマンド待ち行列に記憶するように構成された、コントローラを備え、
    前記コントローラが、
    前記第1のデータアクセスコマンドの実行を開始し、
    前記第1のデータアクセスコマンドの実行が完了する前に、前記第1の不揮発性ソリッドステートメモリに向けられた第2のデータアクセスコマンドを受信し、かつ
    前記第2のデータアクセスコマンドを前記第1のコマンド待ち行列に記憶し、
    第3のデータアクセスコマンドを前記第1のコマンド待ち行列に記憶し、
    前記第2のデータアクセスコマンドおよび前記第3のデータアクセスコマンドの両方が単一のデータアクセスにより行われ得るかどうかを判定し、かつ
    前記判定に基づき前記単一のデータアクセスを行うようにさらに構成され、
    前記第1のコマンド待ち行列は、2以上の所定数のデータアクセスコマンドを動作開始前に行列待ちさせるように構成される、装置。
  2. 前記第1の不揮発性ソリッドステートメモリと、
    前記第2の不揮発性メモリと、
    前記第1のコマンド待ち行列と、をさらに備える、請求項1に記載の装置。
  3. 第2のコマンド待ち行列をさらに備え、
    前記コントローラが、
    前記第1のデータアクセスコマンドが前記デバイスで受信されるとき、前記第1のデータアクセスコマンドを前記第2のコマンド待ち行列に記憶し、かつ
    前記第1のデータアクセスコマンドが、前記第1の不揮発性ソリッドステートメモリと前記第2の不揮発性メモリとのうちのどちらに向けられているかを判定するようにさらに構成された、請求項2に記載の装置。
  4. 前記コントローラが、
    前記第1のデータアクセスコマンドを前記第1のコマンド待ち行列に記憶した後、前記第1のデータアクセスコマンドが受信されて、付加的コマンドが前記コントローラに送信されてもよいという表示を送信するようにさらに構成されることをさらに含む、請求項1に記載の装置。
  5. ホストデバイスからコマンドを受信するように構成されたインターフェースをさらに備え、
    前記コントローラが、前記インターフェースを通じてコマンドの結果を前記ホストデバイスに戻すようにさらに構成された、請求項1から請求項のいずれか1項に記載の装置。
  6. 前記第1の不揮発性ソリッドステートメモリがNANDフラッシュメモリであり、
    前記第2の不揮発性メモリがディスクメモリであることをさらに含む、請求項1から請求項のいずれか1項に記載の装置。
  7. データアクセスコマンドは、前記データアクセスコマンドが前記第1の不揮発性ソリッドステートメモリ内に記憶されたデータを要求するとき、または前記データアクセスコマンドが前記第1の不揮発性ソリッドステートメモリに書き込まれるデータを含むとき、前記第1の不揮発性ソリッドステートメモリに向けられていることをさらに含む、請求項1に記載の装置。
  8. プロセッサに方法を行わせる命令を記憶するメモリデバイスであって、前記方法が、
    キャッシュメモリを含むデータ記憶デバイスで第1のデータアクセスコマンドを受信することと、
    前記第1のデータアクセスコマンドが前記キャッシュメモリに向けられているとき、前記第1のデータアクセスコマンドを、前記キャッシュメモリのための第1のコマンド待ち行列に記憶することと
    前記第1のデータアクセスコマンドが前記データ記憶デバイスで受信されるとき、前記第1のデータアクセスコマンドを第2のコマンド待ち行列に記憶することと、
    前記第1のデータアクセスコマンドが前記キャッシュメモリに向けられているか、または第1の不揮発性メモリに向けられているかを判定することと、
    前記第1のデータアクセスコマンドの実行を開始することと、
    前記第1のデータアクセスコマンドの実行が完了する前に、前記キャッシュメモリに向けられた第2のデータアクセスコマンドを受信することと、
    前記第2のデータアクセスコマンドを前記第1のコマンド待ち行列に記憶することと、
    第3のデータアクセスコマンドを前記第1のコマンド待ち行列に記憶することと、
    前記第2のデータアクセスコマンドおよび前記第3のデータアクセスコマンドの両方が、前記キャッシュメモリの同一データ要素であって、単一のアクセス動作中にアクセスされるある量の記憶空間である、データ要素にアクセスすることを必要とするかどうかを判定することと、
    前記第2のデータアクセスコマンドおよび前記第3のデータアクセスコマンドの両方が前記同一のデータ要素へのアクセスを必要とするとき、前記第2のデータアクセスコマンドおよび前記第3のデータアクセスコマンドの両方に単一のアクセス動作を行うことと、をさらに含み、
    前記第1のコマンド待ち行列は、2以上の所定数のデータアクセスコマンドを動作開始前に行列待ちさせる、メモリデバイス。
  9. 前記方法が、
    前記第1のデータアクセスコマンドを前記第1のコマンド待ち行列に記憶した後、前記第1のデータアクセスコマンドが受信されて、付加的コマンドが前記データ記憶デバイスのコントローラに送信されてもよいという表示を送信することをさらに含む、請求項に記載のメモリデバイス。
  10. 前記方法が、
    インターフェースを通じてホストデバイスから前記第1のデータアクセスコマンドを受信することと、
    前記インターフェースを通じてコマンドの結果を前記ホストデバイスに戻すことと、をさらに含む、請求項に記載のメモリデバイス。
  11. データ記憶デバイスで、第1のデータアクセスコマンドを受信することと、
    前記第1のデータアクセスコマンドを第1のコマンド待ち行列に記憶することと、
    前記データアクセスコマンドがフラッシュメモリに向けられているか、または前記フラッシュメモリより遅いアクセス時間を有する第1の不揮発性メモリに向けられているかを判定することと、
    前記第1のデータアクセスコマンドが前記フラッシュメモリに向けられているとき、前記第1のデータアクセスコマンドを第2のコマンド待ち行列に記憶することと、
    前記第1のデータアクセスコマンドを前記第2のコマンド待ち行列に記憶した後、前記第1のデータアクセスコマンドの受信が成功したという表示を送信することと、
    前記フラッシュメモリに対する前記第1のデータアクセスコマンドの実行を開始することと、
    前記第1のデータアクセスコマンドの実行が終了する前に、第2のデータアクセスコマンドを受信して、それを前記第2のコマンド待ち行列に記憶することと、
    第3のデータアクセスコマンドを前記第2のコマンド待ち行列に記憶することと、
    前記第2のデータアクセスコマンドおよび前記第3のデータアクセスコマンドが、前記フラッシュメモリに対する単一のデータアクセス動作で完了され得るかどうかを判定することと、
    前記第2のデータアクセスコマンドおよび前記第3のデータアクセスコマンドの両方が前記単一のデータアクセス動作で完了され得るとき、前記単一のデータアクセス動作を行って、前記第2のデータアクセスコマンドおよび前記第3のデータアクセスコマンドを解決することと、を含み、
    前記第1のコマンド待ち行列は、2以上の所定数のデータアクセスコマンドを動作開始前に行列待ちさせる、方法。
JP2014219123A 2013-10-29 2014-10-28 メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法 Active JP5922740B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/066,266 US9348747B2 (en) 2013-10-29 2013-10-29 Solid state memory command queue in hybrid device
US14/066,266 2013-10-29

Publications (2)

Publication Number Publication Date
JP2015130150A JP2015130150A (ja) 2015-07-16
JP5922740B2 true JP5922740B2 (ja) 2016-05-24

Family

ID=53388254

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014219123A Active JP5922740B2 (ja) 2013-10-29 2014-10-28 メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法

Country Status (3)

Country Link
US (1) US9348747B2 (ja)
JP (1) JP5922740B2 (ja)
KR (1) KR101663066B1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6255893B2 (ja) * 2013-10-24 2018-01-10 富士通株式会社 ストレージ制御装置、およびストレージ制御プログラム
US20160188510A1 (en) * 2014-12-26 2016-06-30 Samsung Electronics Co., Ltd. METHOD FETCHING/PROCESSING NVMe COMMANDS IN MULTI-PORT, SR-IOV OR MR-IOV SUPPORTED PCIe BASED STORAGE DEVICES
KR20160118836A (ko) * 2015-04-03 2016-10-12 에스케이하이닉스 주식회사 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법
JP6721821B2 (ja) 2015-11-19 2020-07-15 富士通株式会社 ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
US9460791B1 (en) * 2015-12-08 2016-10-04 Inphi Corporation Data clock synchronization in hybrid memory modules
KR102547795B1 (ko) 2016-05-04 2023-06-27 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US10025510B1 (en) * 2016-06-30 2018-07-17 EMC IP Holding Company LLC Technique for copying unallocated logical regions of thin logical units
US10409739B2 (en) * 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US11182102B2 (en) * 2018-12-28 2021-11-23 Micron Technology, Inc. Host inquiry response generation in a memory device
US11288185B2 (en) * 2019-01-03 2022-03-29 Silicon Motion, Inc. Method and computer program product for performing data writes into a flash memory
CN111399750B (zh) * 2019-01-03 2023-05-26 慧荣科技股份有限公司 闪存数据写入方法及计算机可读取存储介质
CN113253939B (zh) * 2021-06-11 2023-05-16 锐掣(杭州)科技有限公司 数据处理方法、装置、电子设备及存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5420998A (en) * 1992-04-10 1995-05-30 Fujitsu Limited Dual memory disk drive
JPH09258907A (ja) * 1996-03-25 1997-10-03 Mitsubishi Electric Corp 複数の記憶ディスク部を有した高可用性の外部記憶装置
US6704835B1 (en) 2000-09-26 2004-03-09 Intel Corporation Posted write-through cache for flash memory
US8176238B2 (en) 2003-12-02 2012-05-08 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US7136973B2 (en) * 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US8489817B2 (en) * 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
JP4234753B2 (ja) * 2006-12-15 2009-03-04 株式会社東芝 ハードディスクドライブおよびコマンド実行方法
JP2008217855A (ja) * 2007-02-28 2008-09-18 Fujitsu Ltd 記憶装置用制御装置、記憶装置およびそのデータ記憶制御方法
US7886110B2 (en) * 2007-12-27 2011-02-08 Intel Corporation Dynamically adjusting cache policy based on device load in a mass storage system
JP2010044814A (ja) * 2008-08-11 2010-02-25 Toshiba Storage Device Corp 記憶装置の制御方法及び記憶装置
US8756369B2 (en) * 2008-09-26 2014-06-17 Netapp, Inc. Priority command queues for low latency solid state drives
US8078848B2 (en) * 2009-01-09 2011-12-13 Micron Technology, Inc. Memory controller having front end and back end channels for modifying commands
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US20120204008A1 (en) 2011-02-04 2012-08-09 Qualcomm Incorporated Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
US20130054880A1 (en) 2011-08-26 2013-02-28 Stec, Inc. Systems and methods for reducing a number of close operations in a flash memory
US9009396B2 (en) * 2011-09-23 2015-04-14 Avalanche Technology, Inc. Physically addressed solid state disk employing magnetic random access memory (MRAM)
US20130326113A1 (en) * 2012-05-29 2013-12-05 Apple Inc. Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory
JP6101170B2 (ja) * 2013-07-26 2017-03-22 株式会社日立製作所 計算機システム、キャッシュ管理方法、及び計算機

Also Published As

Publication number Publication date
KR101663066B1 (ko) 2016-10-06
US20160011966A1 (en) 2016-01-14
US9348747B2 (en) 2016-05-24
JP2015130150A (ja) 2015-07-16
KR20150050457A (ko) 2015-05-08

Similar Documents

Publication Publication Date Title
JP5922740B2 (ja) メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法
US20200233585A1 (en) Data relocation in hybrid memory
US10649969B2 (en) Memory efficient persistent key-value store for non-volatile memories
JP6224253B2 (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
US10782915B2 (en) Device controller that schedules memory access to a host memory, and storage device including the same
US9772802B2 (en) Solid-state device management
US10860494B2 (en) Flushing pages from solid-state storage device
US11037627B2 (en) Cell block allocation for hybrid dual write
TWI731916B (zh) 用於減少儲存資料的複製之技術
US10180792B1 (en) Cache management in data storage systems
US10445252B2 (en) Storage device and operating method performed by the same
US20150149741A1 (en) Storage System and Control Method Thereof
US20160011965A1 (en) Pass through storage devices
CN110515861B (zh) 处理刷写命令的存储设备及其方法
US11662949B2 (en) Storage server, a method of operating the same storage server and a data center including the same storage server
KR101569049B1 (ko) 패스 스루 스토리지 디바이스들
US12105990B2 (en) Parallel fragmented SGL fetching for hiding host turnaround time
US11842076B2 (en) Storage system and operating method for same
WO2024145165A1 (en) Systems, methods, and media for improving read command processing times in solid-state drives

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160229

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160315

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160414

R150 Certificate of patent or registration of utility model

Ref document number: 5922740

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250