(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-30
(54)【発明の名称】不揮発性メモリのコントローラの書き込みキャッシュ内へのデータのミラーリング
(51)【国際特許分類】
G06F 12/00 20060101AFI20240723BHJP
G06F 12/02 20060101ALI20240723BHJP
G06F 12/0868 20160101ALI20240723BHJP
G06F 12/0804 20160101ALI20240723BHJP
G06F 3/06 20060101ALI20240723BHJP
【FI】
G06F12/00 560B
G06F12/00 597U
G06F12/02 570A
G06F12/0868 100
G06F12/0804 105
G06F12/02 530E
G06F3/06 301R
G06F3/06 302A
G06F3/06 304E
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023570399
(86)(22)【出願日】2022-05-24
(85)【翻訳文提出日】2023-11-14
(86)【国際出願番号】 IB2022054831
(87)【国際公開番号】W WO2023275632
(87)【国際公開日】2023-01-05
(32)【優先日】2021-06-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】プレトカ、ローマン
(72)【発明者】
【氏名】フィッシャー、ティモシー
(72)【発明者】
【氏名】ヤーネス、アダルベルト
(72)【発明者】
【氏名】パパンドレウ、ニコラス
(72)【発明者】
【氏名】ストイカ、ラドゥ
(72)【発明者】
【氏名】ポーツィディス、キャララムポス
(72)【発明者】
【氏名】イオアンノウ、ニコラス
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160AA10
5B160AB26
5B160CB01
5B160CD01
5B205MM11
(57)【要約】
データ記憶システムが大容量不揮発性メモリ内の永続記憶を提供する。データ記憶システムのコントローラがホスト書き込みコマンドを受信し、関連ホスト書き込みデータを不揮発性メモリ内の第1の書き込みキャッシュおよび揮発性メモリ内のミラーリングされた第2の書き込みキャッシュの両方内にバッファリングする。コントローラはホスト書き込みデータを、第1の書き込みキャッシュでなく、第2の書き込みキャッシュから大容量不揮発性メモリへデステージする。コントローラは、第2の書き込みキャッシュを参照して大容量不揮発性メモリ内のデータ再配置を要求する再配置書き込みコマンドに応答する。再配置書き込みコマンドに応答することは、再配置書き込みデータを、第1の書き込みキャッシュでなく、第2の書き込みキャッシュ内にバッファリングすること、および再配置書き込みデータを第2の書き込みキャッシュから大容量不揮発性メモリへデステージすること、を含む。
【特許請求の範囲】
【請求項1】
大容量不揮発性メモリ内への記憶を提供するデータ記憶システムにおける方法であって、
前記データ記憶システムのコントローラがホスト書き込みコマンドを受信し、関連するホスト書き込みデータを不揮発性メモリ内の第1の書き込みキャッシュおよび揮発性メモリ内のミラーリングされた第2の書き込みキャッシュの両方内にバッファリングすることと、
前記コントローラが前記ホスト書き込みデータを、前記第1の書き込みキャッシュでなく、前記第2の書き込みキャッシュから前記大容量不揮発性メモリへデステージすることと、
前記コントローラが、前記第2の書き込みキャッシュを参照して前記大容量不揮発性メモリ内のデータ再配置を要求する再配置書き込みコマンドに応答することであって、再配置書き込みコマンドに関連付けられた再配置書き込みデータを、前記第1の書き込みキャッシュでなく、前記第2の書き込みキャッシュ内にバッファリングすること、および前記再配置書き込みデータを前記第2の書き込みキャッシュから前記大容量不揮発性メモリへデステージすること、を含む、前記応答することと、
を含む、方法。
【請求項2】
前記大容量不揮発性メモリへの前記ホスト書き込みデータの前記デステージの完了前に、前記コントローラが、前記ホスト書き込みデータが前記第1の書き込みキャッシュ内にバッファリングされたことに基づいて前記ホスト書き込みコマンドの肯定応答をホストへ送信することをさらに含む、請求項1に記載の方法。
【請求項3】
前記大容量不揮発性メモリがフラッシュ・メモリを含み、
前記方法が、前記コントローラが、前記フラッシュ・メモリ内のガーベッジ・コレクションの間に複数の前記再配置書き込みコマンドのうちの少なくともいくつかを生成することを含む、
請求項1に記載の方法。
【請求項4】
前記コントローラが、前記第1の書き込みキャッシュ内で、前記大容量不揮発性メモリへの前記ホスト書き込みデータのデステージの完了に基づいて前記ホスト書き込みコマンドの前記ホスト書き込みデータを解放すること
をさらに含む、請求項1に記載の方法。
【請求項5】
前記コントローラが、前記第1の書き込みキャッシュ内のホスト書き込みデータの少なくとも第1の場所を論理-物理変換データ構造のエントリ内に記録することと、
前記コントローラが、前記大容量不揮発性メモリへの前記ホスト書き込みデータのデステージに基づいて、前記エントリを、前記大容量不揮発性メモリ内の異なる第2の場所を指示するように更新することと、
をさらに含む、請求項1に記載の方法。
【請求項6】
前記エントリ内に記録することが、前記第2の書き込みキャッシュ内のホスト書き込みデータの第3の場所を前記エントリ内に記録することを含む、請求項5に記載の方法。
【請求項7】
前記大容量不揮発性メモリが前記第1の書き込みキャッシュを含む、請求項1に記載の方法。
【請求項8】
前記コントローラが、複数の異なる書き込み熱のうちのそれぞれのものに各々対応する複数のバッファを前記第1の書き込みキャッシュ内および前記第2の書き込みキャッシュ内に維持すること
をさらに含む、請求項1に記載の方法。
【請求項9】
データ記憶システムであって、
大容量不揮発性メモリのコントローラを備え、前記コントローラが、
ホスト書き込みコマンドを受信し、関連するホスト書き込みデータを不揮発性メモリ内の第1の書き込みキャッシュおよび揮発性メモリ内のミラーリングされた第2の書き込みキャッシュの両方内にバッファリングすることと、
前記ホスト書き込みデータを、前記第1の書き込みキャッシュでなく、前記第2の書き込みキャッシュから前記大容量不揮発性メモリへデステージすることと、
前記第2の書き込みキャッシュを参照して前記大容量不揮発性メモリ内のデータ再配置を要求する再配置書き込みコマンドに応答することであって、再配置書き込みコマンドに関連付けられた再配置書き込みデータを、前記第1の書き込みキャッシュでなく、前記第2の書き込みキャッシュ内にバッファリングすること、および前記再配置書き込みデータを前記第2の書き込みキャッシュから前記大容量不揮発性メモリへデステージすること、を含む、前記応答することと、
を遂行するように構成されている、データ記憶システム。
【請求項10】
前記コントローラが、
前記大容量不揮発性メモリへの前記ホスト書き込みデータの前記デステージの完了前に、前記ホスト書き込みデータが前記第1の書き込みキャッシュ内にバッファリングされたことに基づいて前記ホスト書き込みコマンドの肯定応答をホストへ送信すること
を遂行するようにさらに構成されている、請求項9に記載のデータ記憶システム。
【請求項11】
前記大容量不揮発性メモリがフラッシュ・メモリを含み、
前記コントローラが、前記フラッシュ・メモリ内のガーベッジ・コレクションの間に複数の前記再配置書き込みコマンドのうちの少なくともいくつかを生成することを遂行するようにさらに構成されている、
請求項9に記載のデータ記憶システム。
【請求項12】
前記コントローラが、
前記第1の書き込みキャッシュ内で、前記大容量不揮発性メモリへの前記ホスト書き込みデータのデステージの完了に基づいて前記ホスト書き込みコマンドの前記ホスト書き込みデータを解放すること
を遂行するようにさらに構成されている、請求項9に記載のデータ記憶システム。
【請求項13】
前記コントローラが、
前記第1の書き込みキャッシュ内のホスト書き込みデータの少なくとも第1の場所を論理-物理変換データ構造のエントリ内に記録することと、
前記大容量不揮発性メモリへの前記ホスト書き込みデータのデステージに基づいて、前記エントリを、前記大容量不揮発性メモリ内の異なる第2の場所を指示するように更新することと、
を遂行するようにさらに構成されている、請求項9に記載のデータ記憶システム。
【請求項14】
前記エントリ内に記録することが、前記第2の書き込みキャッシュ内のホスト書き込みデータの第3の場所を前記エントリ内に記録することを含む、請求項13に記載のデータ記憶システム。
【請求項15】
前記大容量不揮発性メモリをさらに備え、前記大容量不揮発性メモリが前記第1の書き込みキャッシュを含む、請求項9に記載のデータ記憶システム。
【請求項16】
前記コントローラが、
複数の異なる書き込み熱のうちのそれぞれのものに各々対応する複数のバッファを前記第1の書き込みキャッシュ内および前記第2の書き込みキャッシュ内に維持すること
を遂行するようにさらに構成されている、請求項9に記載のデータ記憶システム。
【請求項17】
プログラム製品であって、
記憶デバイスと、
前記記憶デバイス内に記憶されたプログラム・コードと、を備え、前記プログラム・コードが、大容量不揮発性メモリのコントローラによって、前記コントローラに、
ホスト書き込みコマンドを受信し、関連するホスト書き込みデータを不揮発性メモリ内の第1の書き込みキャッシュおよび揮発性メモリ内のミラーリングされた第2の書き込みキャッシュの両方内にバッファリングすることと、
前記ホスト書き込みデータを、前記第1の書き込みキャッシュでなく、前記第2の書き込みキャッシュから前記大容量不揮発性メモリへデステージすることと、
前記第2の書き込みキャッシュを参照して前記大容量不揮発性メモリ内のデータ再配置を要求する再配置書き込みコマンドに応答することであって、再配置書き込みコマンドに関連付けられた再配置書き込みデータを、前記第1の書き込みキャッシュでなく、前記第2の書き込みキャッシュ内にバッファリングすること、および前記再配置書き込みデータを前記第2の書き込みキャッシュから前記大容量不揮発性メモリへデステージすること、を含む、前記応答することと、
を遂行させるように実行可能である、プログラム製品。
【請求項18】
前記プログラム・コードが、前記コントローラに、
前記大容量不揮発性メモリへの前記ホスト書き込みデータの前記デステージの完了前に、前記ホスト書き込みデータが前記第1の書き込みキャッシュ内にバッファリングされたことに基づいて前記ホスト書き込みコマンドの肯定応答をホストへ送信すること
を遂行させる、請求項17に記載のプログラム製品。
【請求項19】
前記大容量不揮発性メモリがフラッシュ・メモリを含み、
前記プログラム・コードが、前記コントローラに、前記フラッシュ・メモリ内のガーベッジ・コレクションの間に複数の前記再配置書き込みコマンドのうちの少なくともいくつかを生成することを遂行させる、
請求項17に記載のプログラム製品。
【請求項20】
前記プログラム・コードが、前記コントローラに、
前記第1の書き込みキャッシュ内で、前記大容量不揮発性メモリへの前記ホスト書き込みデータのデステージの完了に基づいて前記ホスト書き込みコマンドの前記ホスト書き込みデータを解放すること
を遂行させる、請求項17に記載のプログラム製品。
【請求項21】
前記プログラム・コードが、前記コントローラに、
前記第1の書き込みキャッシュ内のホスト書き込みデータの少なくとも第1の場所を論理-物理変換データ構造のエントリ内に記録することと、
前記大容量不揮発性メモリへの前記ホスト書き込みデータのデステージに基づいて、前記エントリを、前記大容量不揮発性メモリ内の異なる第2の場所を指示するように更新することと、
を遂行させる、請求項17に記載のプログラム製品。
【請求項22】
前記エントリ内に記録することが、前記第2の書き込みキャッシュ内のホスト書き込みデータの第3の場所を前記エントリ内に記録することを含む、請求項21に記載のプログラム製品。
【請求項23】
前記大容量不揮発性メモリが前記第1の書き込みキャッシュを含む、請求項17に記載のプログラム製品。
【請求項24】
前記プログラム・コードが、前記コントローラに、
複数の異なる書き込み熱のうちのそれぞれのものに各々対応する複数のバッファを前記第1の書き込みキャッシュ内および前記第2の書き込みキャッシュ内に維持すること
を遂行させる、請求項17に記載のプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、データ記憶に関し、より詳細には、不揮発性メモリ・システムに関する。さらにより詳細には、本開示は、ホスト書き込みデータを揮発性および不揮発性メモリの両方内にバッファリングするミラーリング書き込みキャッシュを含む不揮発性メモリ・システムに関する。
【背景技術】
【0002】
NANDフラッシュ・メモリは、メモリ・セルごとに1つまたは複数のデータ・ビットをトランジスタの浮遊ゲート、または同様の電荷トラップ構造上の電荷として記憶する電気的プログラム可能および消去可能不揮発性メモリ技術である。典型的な実装形態では、NANDフラッシュ・メモリ・アレイはメモリの物理ブロック(「消去ブロック」とも称される)で編成され、ブロックの各々は、各々が今度は多数のメモリ・セルを包含する複数の物理ページを含む。メモリ・セルにアクセスするために利用されるワードおよびビット線の配置のおかげで、フラッシュ・メモリ・アレイは、概して、ページ単位でプログラムされ得るが、ブロック単位で消去される。
【0003】
当技術分野において周知であるように、NANDフラッシュ・メモリのブロックは、新たなデータをプログラムされる前に消去されなければならない。NANDフラッシュ・メモリ・セルのブロックは、高い正の消去電圧パルスを、選択されたブロックのpウェル大容量区域に印加することによって、および消去されるべきメモリ・セルのワード線の全てを大地(ground)にバイアスすることによって、消去される。消去パルスの印加は、大地にバイアスされたメモリ・セルの浮遊ゲートからの電子のトンネリングを促進し、それらに正味の正の電荷を与え、それゆえ、メモリ・セルの電圧閾値を消去状態に向けて移行させる。各消去パルスの後に、一般的に、消去ブロックを読み出し、例えば、消去に成功しなかった消去ブロック内のメモリ・セルが閾値数未満であることを確認することによって、消去動作が成功したかどうかを決定する消去確認動作が行われる。概して、消去パルスは、消去確認動作が成功するまで、または所定数の消去パルスが使用されるまで(すなわち、消去パルス・バジェットが使い果たされるまで)消去ブロックに印加され続ける。
【0004】
NANDフラッシュ・メモリ・セルは、正の高いプログラム電圧を、プログラムされるべきメモリ・セルのワード線に印加することによって、および中間のパス電圧を、プログラミングが禁止されるべきである同じストリング内のメモリ・セルに印加することによって、プログラムすることができる。プログラム電圧の印加は浮遊ゲート上への電子のトンネリングを生じさせ、その状態を初期消去状態から、正味の負の電荷を有するプログラム状態へ変化させる。プログラミング後に、プログラムされたページは、典型的には、例えば、ビット誤りを包含するプログラムされたページ内のメモリ・セルが閾値数未満であることを確認することによって、プログラム動作が成功したことを確実にするための読み出し確認動作において読み出される。概して、プログラムおよび読み出し確認動作は、読み出し確認動作が成功するまで、または所定数のプログラミング・パルスが使用されるまで(すなわち、プログラム・パルス・バジェットが使い果たされるまで)ページに適用される。
【0005】
データは、例えば、4kBまたは16kBのデータを各々含む、論理ページの形でNANDフラッシュ・メモリに書き込まれる。メモリの所与の物理ページはデータの1つまたは複数の論理ページを記憶し得る。データが更新されるのに従って、古いデータを記憶した論理ページは無効になり、物理ブロックに、有効データおよび無効データを包含する物理ページの混合を残す。最終的には、NANDフラッシュ・メモリのコントローラが、ガーベッジ・コレクションと呼ばれるプロセスを通じて無効データを保持する物理ページによって消費された記憶容量を回復する。ガーベッジ・コレクションにおいて、依然として有効なデータは第1の物理ブロックから1つまたは複数の以前に消去された物理ブロック内へ再書き込みされる。その後、第1の物理ブロックは再プログラミングに備えて消去され得る。
【0006】
企業クラスのNANDフラッシュ・ベースの記憶システムでは、例えば、電源障害の場合の、データ損失を防止することが極めて重要である。したがって、このようなデータ記憶システムでは、フラッシュ・コントローラは、ホスト書き込みコマンドに関連付けられたホスト書き込みデータが不揮発性ストレージ内で永続的にされた後にのみ、ホスト書き込みコマンドに肯定応答することができる。第1の従来技術の設計では、フラッシュ・コントローラは、最初に、入来するホスト書き込みデータを、ダイナミック・ランダム・アクセス・メモリ(DRAM:dynamic random access memory)などの、低コストの揮発性メモリ技術で実装された書き込みキャッシュ内にバッファリングする。次に、フラッシュ・コントローラはホスト書き込みデータをDRAM書き込みキャッシュからNANDフラッシュ・メモリ内へデステージする。ホスト書き込みコマンドに関連付けられた全ての書き込みデータがNANDフラッシュ・メモリ内で永続的になると(およびそれゆえ、電源喪失が発生したときのデータ損失から保護されると)、フラッシュ・コントローラは肯定応答をホストへ送信し、ホスト書き込みコマンドの完了を追跡するために割り当てられたホスト内のリソースを解放する。NANDフラッシュ・メモリ内のガーベッジ・コレクションと併せて行われた再配置書き込み(relocation write)は、NANDフラッシュ・メモリに再びデステージされる前にDRAM書き込みキャッシュ内に同様にバッファリングされる。この第1のアーキテクチャは、設計が単純で比較的低コストであるという利点を有するが、ホスト書き込みデータがNANDフラッシュ・メモリ内で永続的にされるまで、ホストへの肯定応答が遅延させられるという点で、書き込み性能が比較的低いという不利点を有する。
【0007】
この第1の従来技術の設計と比べて改善された書き込み性能をもたらすために、第2の従来技術の設計は、例えば、バッテリー・バックアップ付きDRAM、磁気抵抗RAM(MRAM:magnetoresistive RAM)、フェロレジスティブRAM(FRAM:ferroresistive RAM)、相変化メモリ(PCM:phase change memory)、または他の不揮発性メモリ技術の形で、不揮発性書き込みキャッシュを実装する。この設計を用いると、関連ホスト書き込みデータが書き込みキャッシュ内に書き込まれるとすぐに、およびそれゆえ、ホスト書き込みデータが不揮発性書き込みキャッシュからNANDフラッシュ・メモリへ完全にデステージされる前に、フラッシュ・コントローラがホスト書き込みコマンドの肯定応答をホストへ送信することができるため、書き込み性能は著しく改善される。ガーベッジ・コレクションと併せて行われた再配置書き込みは、同様に、NANDフラッシュ・メモリへデステージされる前に、まず、不揮発性書き込みキャッシュ内に書き込まれる。この第2の従来技術のアーキテクチャは、第1の従来技術のアーキテクチャよりも著しく優れた書き込み性能をもたらすが、揮発性メモリ(例えば、DRAM)での書き込みキャッシュの実装対不揮発性メモリ(例えば、MRAM)での実装の間の価格差に起因する、より高い複雑性とより高いコストとのトレードオフを伴って、これを行う。
【0008】
従来技術に鑑みて、本出願は、関連ホスト書き込みデータをNANDフラッシュ・メモリへデステージする前にホスト書き込みコマンドの肯定応答を可能にする不揮発性書き込みキャッシュを実装し、その一方で、所与の書き込み性能レベルのために不揮発性書き込みキャッシュを実装するために利用されるメモリのコストも低減する、改善されたデータ記憶システムを提供することが有用であり、望ましかろうと認識する。
【発明の概要】
【0009】
少なくとも1つの実施形態では、大容量不揮発性メモリ内の永続記憶を提供するデータ記憶システムを管理する方法が提供される。データ記憶システムのコントローラがホスト書き込みコマンドを受信し、関連ホスト書き込みデータを不揮発性メモリ内の第1の書き込みキャッシュおよび揮発性メモリ内のミラーリングされた第2の書き込みキャッシュの両方内にバッファリングする。コントローラはホスト書き込みデータを、第1の書き込みキャッシュでなく、第2の書き込みキャッシュから大容量不揮発性メモリへデステージする。コントローラは、第2の書き込みキャッシュを参照して大容量不揮発性メモリ内のデータ再配置を要求する再配置書き込みコマンドに応答する(service)。再配置書き込みコマンドに応答することは、再配置書き込みデータを、第1の書き込みキャッシュでなく、第2の書き込みキャッシュ内にバッファリングすること、および再配置書き込みデータを第2の書き込みキャッシュから大容量不揮発性メモリへデステージすること、を含む。
【0010】
少なくとも1つの実施形態では、データ記憶システムが大容量不揮発性メモリのコントローラを含む。コントローラは、ホスト書き込みコマンドを受信し、関連ホスト書き込みデータを不揮発性メモリ内の第1の書き込みキャッシュおよび揮発性メモリ内のミラーリングされた第2の書き込みキャッシュの両方内にバッファリングするように構成されている。コントローラはホスト書き込みデータを、第1の書き込みキャッシュでなく、第2の書き込みキャッシュから大容量不揮発性メモリへデステージする。コントローラは、第2の書き込みキャッシュを参照して大容量不揮発性メモリ内のデータ再配置を要求する再配置書き込みコマンドに応答する。再配置書き込みコマンドに応答することは、再配置書き込みデータを、第1の書き込みキャッシュでなく、第2の書き込みキャッシュ内にバッファリングすること、および再配置書き込みデータを第2の書き込みキャッシュから大容量不揮発性メモリへデステージすること、を含む。
【0011】
少なくとも1つの実施形態では、プログラム製品が、記憶デバイスと、大容量不揮発性メモリのコントローラによって実行可能である記憶デバイス内に記憶されたプログラム・コードと、を含む。実行されたとき、プログラム・コードは、コントローラに、ホスト書き込みコマンドを受信させ、関連ホスト書き込みデータを不揮発性メモリ内の第1の書き込みキャッシュおよび揮発性メモリ内のミラーリングされた第2の書き込みキャッシュの両方内にバッファリングさせる。コントローラはホスト書き込みデータを、第1の書き込みキャッシュでなく、第2の書き込みキャッシュから大容量不揮発性メモリへデステージする。コントローラは、第2の書き込みキャッシュを参照して大容量不揮発性メモリ内のデータ再配置を要求する再配置書き込みコマンドに応答する。再配置書き込みコマンドに応答することは、再配置書き込みデータを、第1の書き込みキャッシュでなく、第2の書き込みキャッシュ内にバッファリングすること、および再配置書き込みデータを第2の書き込みキャッシュから大容量不揮発性メモリへデステージすること、を含む。
【0012】
少なくとも1つの実施形態では、大容量不揮発性メモリへのホスト書き込みデータのデステージの完了前に、コントローラは、ホスト書き込みデータが第1の書き込みキャッシュ内にバッファリングされたことに基づいてホスト書き込みコマンドの肯定応答をホストへ送信する。
【0013】
少なくとも1つの実施形態では、大容量不揮発性メモリはフラッシュ・メモリを含み、コントローラはフラッシュ・メモリ内のガーベッジ・コレクションの間に再配置書き込みコマンドのうちの少なくとも一部を生成する。
【0014】
少なくとも1つの実施形態では、コントローラは、第1の書き込みキャッシュ内で、大容量不揮発性メモリへのホスト書き込みデータのデステージの完了に基づいてホスト書き込みコマンドのホスト書き込みデータを解放する。
【0015】
少なくとも1つの実施形態では、コントローラは、第1の書き込みキャッシュ内のホスト書き込みデータの少なくとも第1の場所を論理-物理変換データ構造のエントリ内に記録する。大容量不揮発性メモリへのホスト書き込みデータのデステージに基づいて、コントローラは、エントリを、大容量不揮発性メモリ内の異なる第2の場所を指示するように更新する。
【0016】
少なくとも1つの実施形態では、コントローラは、第2の書き込みキャッシュ内のホスト書き込みデータの第3の場所を論理-物理変換データ構造のエントリ内に追加的に記録する。
【0017】
少なくとも1つの実施形態では、大容量不揮発性メモリは第1の書き込みキャッシュを含む。
【0018】
少なくとも1つの実施形態では、コントローラは、複数の異なる書き込み熱のうちのそれぞれのものに各々対応する複数のバッファを第1の書き込みキャッシュ内および第2の書き込みキャッシュ内に維持する。
【図面の簡単な説明】
【0019】
【
図1A】一実施形態に係るデータ処理環境の高レベル・ブロック図である。
【
図1B】第1の実施形態に係る
図1Aのデータ記憶システムの例示的なフラッシュ・カードのより詳細なブロック図である。
【
図2】本開示に係るNANDフラッシュ・メモリ・システム内の物理メモリの例示的な配置を示す図である。
【
図3】本開示に係るNANDフラッシュ・メモリ・システム内の物理メモリの例示的な配置を示す図である。
【
図4】本開示に係るNANDフラッシュ・メモリ・システム内の物理メモリの例示的な配置を示す図である。
【
図5】本開示に係るNANDフラッシュ・メモリ・システム内の物理メモリの例示的な配置を示す図である。
【
図6A】本開示に係るブロック・ストライプの例示的な実装形態を示す図である。
【
図6B】本開示に係るページ・ストライプの例示的な実装形態を示す図である。
【
図7】一実施形態に係るフラッシュ・コントローラによって採用されたフラッシュ管理機能およびデータ構造の高レベル・データ・フロー図である。
【
図8】一実施形態に係る、不揮発性メモリ・システムにおける、コントローラがホスト書き込みコマンドに応答する例示的な方法の高レベル論理フローチャートである。
【
図9】一実施形態に係る、コントローラが、ホスト書き込みデータおよび再割り当て書き込みデータの、異なる書き込みストリームへの分離、ならびに書き込みストリーム内の読み出し熱の分離の両方をサポートする例示的なデータ構造を示す図である。
【
図10】一実施形態に係る、不揮発性メモリ・システムにおける、コントローラが再配置書き込みコマンドに応答する例示的な方法の高レベル論理フローチャートである。
【
図11】第2の実施形態に係る
図1Aのデータ記憶システムの例示的なフラッシュ・カードのブロック図である。
【発明を実施するための形態】
【0020】
図を参照すると、および特に
図1Aを参照すると、本明細書においてさらに説明されるとおりのミラーリング書き込みキャッシュを有するデータ記憶システム120を含む例示的なデータ処理環境100の高レベルブロック図が示されている。図示のように、データ処理環境100は、命令およびデータを処理する1つまたは複数のプロセッサ104を有するプロセッサ・システム102などの、1つまたは複数のホストを含む。プロセッサ・システム102は、プログラム・コード、オペランド、またはプロセッサ104によって遂行された処理の実行結果、あるいはその組合せを記憶し得る、ローカル・ストレージ106(例えば、DRAMまたはディスク)をさらに含み得る。様々な実施形態では、プロセッサ・システム102は、例えば、モバイル・コンピューティング・デバイス(スマートフォンもしくはタブレットなど)、ラップトップもしくはデスクトップ・パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム(インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なPOWER(R)シリーズのうちの1つなど)、またはメインフレーム・コンピュータ・システムであることができる。プロセッサ・システム102はまた、メモリ・キャッシュ、メモリ・コントローラ、ローカル・ストレージ、I/Oバス・ハブ等と組み合わせられた、ARM(R)、POWER(R)、Intel x86、または任意の他のプロセッサなどの様々なプロセッサを用いた組み込みプロセッサ・システムであることができる。
【0021】
各プロセッサ・システム102は、I/Oチャネル110を介してデータ記憶システム120に直接(すなわち、介在デバイスを全く伴わずに)または間接的に(すなわち、少なくとも1つの中間デバイスを通じて)結合された入力/出力(I/O:input/output)アダプタ108をさらに含む。様々な実施形態では、I/Oチャネル110は、例えば、ファイバ・チャネル(FC:Fibre Channel)、FC over Ethernet(FCoE)、Internet Small Computer System Interface(iSCSI)、InfiniBand(R)、Transport Control Protocol/Internet Protocol(TCP/IP)、Peripheral Component Interconnect Express(R)(PCIe(R))、Non-volatile Memory Express(R)(NVMe(R))、NVMe over Fabrics(R)(NVMe-oF(R))等を含む、周知の、または将来開発される通信プロトコルのうちの任意の1つまたは組合せを採用し得る。I/Oチャネル110を介して通信されるI/Oコマンドは、プロセッサ・システム102がデータ記憶システム120にデータを要求するホスト読み出しコマンド、およびプロセッサ・システム102がデータ記憶システム120内へのデータの記憶を要求するホスト書き込みコマンドを含む。
【0022】
図示の実施形態では、データ記憶システム120は、データ記憶システム120がI/Oチャネル110を介してI/Oコマンドを受信し、それに応答する複数のインターフェース・ノード122を含む。各インターフェース・ノード122は、フォールト・トレランスおよびロード・バランシングを促進するために、複数のリダンダント・アレイ・オブ・インエクスペンシブ・ディスクス(RAID:Redundant Array of Inexpensive Disks)コントローラ124の各々に結合されている。RAIDコントローラ124の各々は今度は、本例では、NANDフラッシュ記憶媒体を含む、複数のフラッシュ・カード126の各々に(例えば、PCIeバスによって)結合されている。他の実施形態では、他の損失性記憶媒体を採用することもできる。
【0023】
図1Bは、第1の実施形態に係る
図1Aのデータ記憶システム120のフラッシュ・カード126のより詳細なブロック図を示す。本実施形態では、フラッシュ・カード126は、フラッシュ・カード126とRAIDコントローラ124との間のインターフェースの役割を果たすゲートウェイ130を含む。ゲートウェイ130は、ゲートウェイ130によって受信されたI/Oコマンドの前処理、フラッシュ・カード126によるI/Oコマンドの応答をスケジューリングすること、または他の管理機能を遂行すること、あるいはその組合せなどの、様々な管理機能を遂行するように(例えば、プログラム・コードによって)構成され得る、汎用プロセッサ(GPP:general-purpose processor)132に結合されている。GPP132は、その処理の過程でGPP132によって作成され、参照され、または変更され、あるいはそれらの組合せを行われたデータを好都合にバッファリングすることができるGPPメモリ134(例えば、DRAM)に結合されている。
【0024】
ゲートウェイ130は、NANDフラッシュ・メモリ・システム150などの、大容量不揮発性メモリ・システムを制御する、少なくとも1つのフラッシュ・コントローラ140にさらに結合されている。フラッシュ・コントローラ(FC:Flash controller)140は、例えば、以下においてさらに説明されるように、NANDフラッシュ・メモリ・システム150にアクセスし、要求されたデータをNANDフラッシュ・メモリ・システム150から読み出す、またはその中へ書き込むことによって、I/Oコマンドに応答する。様々な実施形態では、フラッシュ・コントローラ140は、例えば、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)またはフィールド・プログラマブル・ゲート・アレイ(FPGA:Field Programmable Gate Array)によって実施され得る。フラッシュ・コントローラ140がFPGAを用いて実施される実施形態では、GPP132はデータ記憶システム120の起動の間にフラッシュ・コントローラ140をプログラムし、構成し得る。
【0025】
フラッシュ・コントローラ140は、本実施形態では、フラッシュ・コントローラ不揮発性メモリ142およびフラッシュ・コントローラ揮発性メモリ144の両方を含む、フラッシュ・コントローラ・メモリに結合されている。フラッシュ・コントローラ不揮発性メモリ142は、例えば、MRAM、FRAM、PCM、バッテリー・バックアップ付きDRAM、または他の不揮発性メモリ技術を用いて実装されてもよく、フラッシュ・コントローラ揮発性メモリ144は、DRAMなどの、比較的安価な揮発性メモリ技術を用いて実装されてもよい。
図1Bにおいてさらに指示されるように、フラッシュ・コントローラ不揮発性メモリ142は、プロセッサ・システム102などの、ホストから受信されたホスト書き込みコマンドに関連付けられたホスト書き込みデータをバッファリングするための第1のホスト書き込みキャッシュ146aを含む。ホスト書き込みキャッシュ146aの内容は、フラッシュ・コントローラ140によって、フラッシュ・コントローラ揮発性メモリ144内に実装された第2のホスト書き込みキャッシュ146b内にミラーリングされる。ホスト書き込みキャッシュ146aおよび146bは、さらに、本説明を読むことで当業者によって理解されるであろうように、単一のコマンドを用いて、ミラーリングされたデータが2つの書き込みキャッシュ146a、146b内に書き込まれることを可能にするために、同じメモリ・バスに取り付けられていてもよい。
【0026】
フラッシュ・コントローラ140は、NANDフラッシュ・メモリ・システム150内の特定の記憶場所へのアクセスを可能にするための論理-物理アドレス変換を提供するフラッシュ変換層(FTL:Flash Translation Layer)を実装する。概して、プロセッサ・システム102などの、ホスト・デバイスからフラッシュ・コントローラ140によって受信されたI/Oコマンドは、データがアクセスされることになる(読み出されることになる、もしくは書き込まれることになる)論理ブロック・アドレス(LBA:logical block address)、ならびに、ホスト書き込みコマンドの場合には、データ記憶システム120に書き込まれるべきホスト書き込みデータを包含する。I/Oコマンドはまた、アクセスされるべきデータの量(またはサイズ)を指定してもよい。また、データ記憶システム120によってサポートされているプロトコルおよび特徴に応じて他の情報が通信されてもよい。当業者に周知であるように、NANDフラッシュ・メモリの実装形態によっては、ホスト読み出しまたはホスト書き込みコマンドによってアクセスされ得る最小粒のデータは、単一の物理ページのサイズ、例えば、16キロバイト(kB)に固定される。ホスト・デバイスによって提供されるLBAは、例えば、4kBまたは16kBのサイズを有し得る、論理アドレス空間内の論理ページに対応する。この論理ページは、各物理ページが1つまたは複数の論理ページを記憶することができるよう、フラッシュ・コントローラ140によってさらに圧縮され得る。FTLは、NANDフラッシュ・メモリ・システム150内の対応する物理的場所に割り振られたLBAを物理アドレスに変換する。フラッシュ・コントローラ140は、論理アドレスと物理アドレスとの間の対応付けを、フラッシュ・コントローラ揮発性メモリ144内に好都合に記憶され得る、論理-物理変換(LPT:logical-to-physical translation)表152などの、論理-物理変換データ構造内に記憶し得る。
【0027】
図1Bにさらに示されるように、図示の実施形態では、フラッシュ・コントローラ揮発性メモリ144は、NANDフラッシュ・メモリ・システム150内に再配置されることになるガーベッジ・コレクション・プロセスによって収集されたデータをバッファリングするための再配置書き込みバッファ148をさらに含む。加えて、フラッシュ・コントローラ揮発性メモリ144は、ホスト読み出しコマンドによって、最近、または頻繁に、あるいはその両方の様態で要求されたNANDフラッシュ・メモリ・システム150からのデータをバッファリングするための読み出しキャッシュ156を任意選択的に含み得る。フラッシュ・コントローラ140はまた、NANDフラッシュ・メモリ・システム150の様々な部分セット(例えば、ページ・グループ)の読み出し閾値電圧を校正するために利用される閾値電圧(Vth)シフト・データ154、ならびにビット誤り率(BER:bit error rate)および他の統計などの管理データを記憶する他の管理データ構造158、プログラム/消去(P/E:program/erase)サイクル・カウンタ、ジャーナリング情報等をフラッシュ・コントローラ揮発性メモリ144内に記憶し得る。
【0028】
NANDフラッシュ・メモリ・システム150は様々な実施形態において多くの形態を取り得る。次に
図2~
図5を参照すると、一実施形態に係るNANDフラッシュ・メモリ・システム150内の物理メモリの例示的な配置が示されている。
【0029】
図2に示されるように、NANDフラッシュ・メモリ・システム150は40個の個々にアドレス指定可能なNANDフラッシュ・メモリ記憶デバイスから形成され得る。図示の例では、フラッシュ・メモリ記憶デバイスM0a~M19bの各々は、セルごとに2つ以上のビットを記憶する能力を有する基板実装型フラッシュ・メモリ・モジュールの形態を取る。1つの特定の実施形態では、メモリ・モジュールは、クアッド・レベル・セル(QLC:Quad Level Cell)モードで動作する物理ブロックの第1のプール、およびシングル・レベル・セル(SLC:single level cell)モードで動作する物理ブロックの第2のプールを含むハイブリッド階層配置で動作するように構成された、QLC NANDフラッシュ・メモリを用いて実装される。40個のNANDフラッシュ・メモリ・モジュールは、2つずつの20個のグループ、(M0a、M0b)~(M19a、M19b)の形で配置されている。物理アドレス指定スキームの目的のために、2つのモジュールの各グループは、時として「チャネル」とも称される、「レーン」を形成し、これにより、NANDフラッシュ・メモリ・システム150は20個のチャネルまたはレーン(Lane0~Lane19)を含む。
【0030】
好ましい実施形態では、個々のレーンの各々は、それを関連フラッシュ・コントローラ140に結合するそれぞれの関連バスを有する。それゆえ、その通信を特定の通信バスのうちの1つに仕向けることによって、フラッシュ・コントローラ140はその通信をメモリ・モジュールのレーンのうちの1つに仕向けることができる。所与のレーンのための各通信バスは他のレーンのための通信バスから独立しているため、フラッシュ・コントローラ140は様々な通信バスを通じてコマンドを同時に発行し、データを送信または受信することができ、フラッシュ・コントローラ140が、個々のレーンに対応するフラッシュ・メモリ・モジュールに同時に、またはほぼ同時にアクセスすることを可能にする。
【0031】
次に
図3を参照すると、
図2のフラッシュ・メモリ・モジュールM0a~M19bのうちの任意のものを実装するために利用され得るフラッシュ・メモリ・モジュール300の例示的な実施形態が示されている。
図3に示されるように、フラッシュ・メモリ・モジュール300によって提供される物理的記憶場所は、チップ・イネーブル(CE:Chip Enable)を通じてアドレス指定されるか、または識別されるか、あるいはその両方が行われ得る物理的場所にさらに細分されている。
図3の例では、各フラッシュ・メモリ・チップ300の物理メモリは、対応するCE内の物理的記憶場所への、またはそれからのアクセスを可能にするためにフラッシュ・コントローラ140によってアサートされるそれぞれのCE線を各々有する、4つのチップ・イネーブル(CE0、CE1、CE2、およびCE3)に分割されている。各CEは、今度は、2つまたは4つのプレーン(例えば、Plane0およびPlane1)を各々有する複数のダイ(例えば、Die0およびDie1)に細分されている。各プレーンは、フラッシュ・メモリ・チップの物理的レイアウトのゆえに、互いに物理的に関連付けられており、読み出しおよび書き込み動作などの、様々な動作の遂行のために共通回路(例えば、I/Oバッファ)を利用する物理ブロックの集合を表現する。
【0032】
図4~
図5にさらに示されるように、
図3のフラッシュ・メモリ・モジュール300内のプレーンのうちの任意のものを実装するために利用することができる、例示的なプレーン400は、例えば、物理メモリの512個、2048個、または4096個のブロックを含む。一部のブロックは製造欠陥のゆえに早期に故障し得るため、一部の製造業者はこの公称ブロック数への追加のブロックを含む。概して、ブロックは、典型的には物理的な仕方で、互いに関連付けられた物理ページの集合である。この関連付けは、ブロックが、NANDフラッシュ・メモリ・システム150内で消去され得る最小粒度の物理的記憶場所になるように規定されるというふうになっている。
図5の実施形態では、各ブロック500は数百または数千個のページ、例えば、512個、1024個、または4096個の物理ページを含む。ここで、物理ページは、読み出しおよび書き込みアクセスのための最小の個々にアドレス指定可能なデータ単位になるように規定される。例示的なシステムでは、データの各物理ページは、データ記憶に加えてページ・メタデータのための追加の記憶のための共通容量(例えば、16kB)を有する。それゆえ、データは、典型的には、ページ単位でNANDフラッシュ・メモリ・システム150内に書き込まれるか、またはそれから読み出されるが、ブロック単位で消去される。
【0033】
データ記憶システム120によって実装されたFTLは、ホスト・デバイスが利用可能にされた論理アドレス空間をNANDフラッシュ・メモリ・システム150内の物理メモリから切り離すため、NANDフラッシュ・メモリ・システム150のサイズは、ホスト・デバイスに与えられる論理アドレス空間のサイズと等しくなくてもよい。大抵の実施形態では、全利用可能物理メモリよりもサイズが小さい論理アドレス空間を与えることが有益である(すなわち、NANDフラッシュ・メモリ・システム150をオーバー・プロビジョニングすることが有益である)。このようにオーバー・プロビジョニングすることは、たとえ、上述されたとおりの特定の量の無効データの存在を所与としても、論理アドレス空間が完全に利用されるときに物理メモリ・リソースが利用可能であることを確実にする。まだ再生利用されて(reclaim)いない無効データに加えて、オーバー・プロビジョニングされた空間は、たとえ、メモリの故障の存在、ならびに誤り訂正符号(ECC:Error Correcting Code)、巡回冗長検査(CRC:Cyclic Redundancy Check)、およびパリティなどの、データ保護スキームの使用に伴うメモリ・オーバヘッドを所与としても、十分な論理空間が存在することを確実にするために用いることができる。
【0034】
実施形態によっては、データは1度に1つの物理ページずつNANDフラッシュ・メモリ・システム150に書き込まれる。より堅牢な誤り回復が望まれる他の実施形態では、データは、本明細書において「ページ・ストライプ」と称されるNANDフラッシュ・メモリ・システム150の関連物理ページのグループに書き込まれる。一実施形態では、ページ・ストライプの全てのページは、高い書き込み帯域幅を達成するために、異なるレーンに関連付けられる。多くの実装形態では、最小消去単位がブロックであるため、
図6Aに示されるように、複数のページ・ストライプをブロック・ストライプにグループ化することができ、この場合、ブロック・ストライプ内の各ブロックは異なるレーンに関連付けられている。ブロック・ストライプが構築されるときには、レーンの任意の自由ブロックを選定することができるが、好ましくは、同じブロック・ストライプ内の全てのブロックは、同じ、または同様の健全度を有する。ブロックの選択は、同じプレーン、ダイ、またはチップ・イネーブル、あるいはその組合せからのものであるようにさらに限定され得ることに留意されたい。ブロック・ストライプの長さは変化することができるが、NANDフラッシュ・メモリ・システム150が20個のレーンを含む一実施形態では、各ブロック・ストライプは、各ブロックが異なるレーンに由来する、2個~20個のブロックを含む。
【0035】
各レーンからのブロックが選択され、ブロック・ストライプが形成されると、ページ・ストライプは、好ましくは、ブロック・ストライプ内の全てのブロックからの同じページ番号を有する物理ページから形成される。NANDフラッシュ・メモリ・システム150内に記憶された様々なページ・ストライプの長さは変化することができるが、一実施形態では、各ページ・ストライプは、(典型的には、ホスト・デバイスによって提供される)書き込みデータの1個~20個のデータ・ページを含む。別の実施形態では、ページ・ストライプは、書き込みデータの1個~19個のデータ・ページ、および書き込みデータのためのデータ保護情報を記憶するために用いられる1つの追加のページ(「データ保護ページ」)を含む。例えば、
図6Bは、N個のデータ・ページ(すなわち、Dpage00~DpageN-1)および1つのデータ保護ページ(すなわち、PpageN)を含む例示的なページ・ストライプ610を示す。データ保護ページは、非リタイア・ページ(non-retired page)を包含するページ・ストライプの任意のレーン上に配置することができるが、典型的には、メタデータ情報を最小限に抑えるために、同じブロック・ストライプの全てのページ・ストライプのための同じレーン上にある。図示のとおりのデータ保護ページの追加は、ガーベッジ・コレクションが同じブロック・ストライプの全てのページ・ストライプのために同時に遂行されることを必要とする。ブロック・ストライプのガーベッジ・コレクションが完了した後に、ブロック・ストライプは解散させる(dissolve)ことができ、各ブロックは、以下において説明されるとおりの関連使用準備済み(RTU:ready-to-use)キュー内に配置することができる。
【0036】
データ記憶システム120の例示的な実施形態の全体的な物理的構造および動作を説明したので、次に、
図7を参照して、データ記憶システム120の特定の動作態様が説明される。
図7は、一実施形態に係る、GPP132またはフラッシュ・コントローラ140あるいはその両方によって採用されたフラッシュ管理機能およびデータ構造を示す高レベル・データ・フロー図である。
【0037】
上述されたように、データ記憶システム120は、一般的に、外部デバイス(例えば、ホスト)がNANDフラッシュ・メモリ・システム150内の物理的記憶場所を直接アドレス指定すること、またはそれらにアクセスすること、あるいはその両方を行うことを可能にしない。その代わりに、データ記憶システム120は、一般的に、連続した論理アドレス空間を各々有する1つまたは複数の論理ボリュームをホスト・デバイスに提示するように構成されており、それゆえ、ホスト・デバイスがデータを論理アドレス空間内の論理ブロック・アドレス(LBA)から読み出すこと、およびそれに書き込むことを可能にし、その一方で、様々なレベルのコントローラ(例えば、RAIDコントローラ124、フラッシュ・コントローラ140、およびGPP132)のうちの1つまたは複数が、様々なLBAに関連付けられたデータが、NANDフラッシュ・メモリ・システム150を構成する物理的記憶場所内のどこに実際に存在するのかを制御することを可能にする。このように、NANDフラッシュ・メモリ・システム150の性能および寿命をインテリジェントに管理し、最適化することができる。図示の実施形態では、各フラッシュ・コントローラ140は、関連付けられたフラッシュ・コントローラ揮発性メモリ144内に記憶され得る、論理-物理変換(LPT)表152などの、論理-物理アドレス変換データ構造を用いてLBAの関連セットのための論理-物理アドレス変換を遂行する。データ記憶システム120内の様々な構成要素は外部デバイスとフラッシュ・コントローラ140との間のアドレス変換動作を遂行し得るため、フラッシュ・コントローラ140に供給される論理アドレスは、データ記憶システム120に元々供給された論理アドレスとは異なってもよいことに留意されたい。
【0038】
理解されるであろうように、フラッシュ・コントローラ揮発性メモリ144内におけるミラーリングされたホスト書き込みキャッシュ146bの実装は、LPT152などの、他のメタデータのためのフラッシュ・コントローラ揮発性メモリ144内の利用可能容量を低減する。少なくとも一部の実施形態では、フラッシュ・コントローラ140がページング機構を実装することによって、フラッシュ・コントローラ揮発性メモリ144内のLPT152のフットプリントを低減することができる。このような実施形態では、LPTエントリのバッキング・ストアがNANDフラッシュ・メモリ・システム150内に維持され、フラッシュ・コントローラ140は必要に応じてLPTエントリをバッキング・ストアに、およびそれからページングする。
【0039】
GPP132上で実行するフラッシュ管理コードは、例えば、GPPメモリ134内に記憶され得る、使用準備済み(RTU)キュー700内で使用される準備ができたNANDフラッシュ・メモリ・システム150の消去済みブロックを追跡する。図示の実施形態では、GPP132上で実行するフラッシュ管理コードは、好ましくは、プレーンまたはチャネルごとに1つまたは複数のRTUキュー700を維持し、再使用されることになる各消去済みブロックの識別子が、そのチャネルに対応するRTUキュー700のうちの1つに入れられる。例えば、一実施形態では、RTUキュー700は、チャネルごとに、複数のブロック健全度の各々のためのそれぞれのRTUキュー700を含む。様々な実装形態では、プレーンごとに2つ~8つのRTUキュー700(および対応する数のブロック健全度)で十分であることが見出された。
【0040】
(例えば、GPP132上で実行するフラッシュ管理コードによって遂行される)ブロック・ストライプ構築機能(build block stripes function)702が、RTUキュー700に入れられた消去済みブロックから新たなブロック・ストライプを構築する。以上において
図6Aを参照して説明されたように、ブロック・ストライプは、好ましくは、異なるチャネル内に存在する、同じ、または同様の健全性(すなわち、予想残存有効寿命)のブロックで形成される。つまり、ブロック・ストライプは、ブロック・ストライプ構築機能702によって、異なるプレーンまたはチャネルの対応するRTUキュー700から新たなブロック・ストライプの各ブロックを引き出すことによって好都合に構築され得る。次に、新たなブロック・ストライプはデータ配置機能704によるデータ配置のためにフラッシュ・コントローラ140にキューイングされる。
【0041】
データ配置機能704は、ブロック・ストライプ構築機能702によって構築されたブロック・ストライプ内の完全にプログラムされていないブロックの識別子を追跡する、オープン・ブロック・キュー706を含む。
図7にさらに示されるように、データ配置機能704は、ホスト書き込みデータを、ミラーリングされたホスト書き込みキャッシュ146a、146b内に書き込むための、および再配置書き込みデータを再配置書き込みバッファ148内に書き込むためのキャッシング・エンジン714をさらに含む。データ配置機能704はまた、ホスト書き込みキャッシュ146bおよび再配置書き込みバッファ148からのデータを、オープン・ブロック・キュー706内で識別されたNANDフラッシュ・メモリ・システム150のオープン・ブロック内に書き込むためのデステージング・エンジン716を含む。
【0042】
プロセッサ・システム102などのホストから受信されたホスト書き込みコマンドに応じて、フラッシュ・コントローラ140のデータ配置機能704は、LPT表152を参照して、ホスト書き込みコマンド内で指示されたターゲットLBAはNANDフラッシュ・メモリ・システム150内の物理ページに現在対応付けられているかどうかを決定し、そうである場合には、ターゲットLBAに現在関連付けられている各データ・ページのステータスを、それはもはや有効でないことを指示するように変更する。キャッシング・エンジン714は、好ましくは、単一の動作を用いて並列に(例えば、ホスト書き込みデータは1度だけメモリ・バスを横断する)、ホスト書き込みコマンドのホスト書き込みデータを両方のホスト書き込みキャッシュ146a、146b内に追加的に書き込む。ホスト書き込みキャッシュ146aの更新が完了すると、キャッシング・エンジン714はI/Oチャネル110を介して肯定応答メッセージ(「Ack」)を発行ホストに即座に提供することができる。キャッシング・エンジン714はまた、ホスト書き込みコマンドによって指示されたLBAのためのLPT704内のエントリを、ホスト書き込みキャッシュ146aまたはホスト書き込みキャッシュ146bあるいはその両方内のホスト書き込みデータの場所を指し示すように更新する。
【0043】
ホスト書き込みコマンドに応答するために、データ配置機能702は、必要ならば、ホスト書き込みコマンドの書き込みデータ、および存在する場合、ホスト書き込みコマンドによってターゲットとされた既存のページ・ストライプからの任意の未更新データ(すなわち、書き込み要求が論理ページよりも小さい場合には、読み出し-変更-書き込みの仕方で処理されることを必要とする依然として有効なデータが存在する)を記憶するために、ページ・ストライプを追加的に割り当てるか、またはホスト書き込みコマンドの書き込みデータ、および存在する場合、ホスト書き込みコマンドによってターゲットとされた既存のページ・ストライプからの任意の未更新(すなわち、依然として有効な)データを、残された自由空間を有する、すでに割り当てられたページ・ストライプに記憶するか、あるいはその両方を行う。ページ・ストライプは、データを保持するためにすでに割り当てられたブロック・ストライプから、または新たなブロック・ストライプから割り当てられ得る。好ましい実施形態では、ページ・ストライプの割り当ては、割り当てのために利用可能なブロックの健全性、および書き込みデータのLBAの「熱」(すなわち、推定もしくは測定された書き込みアクセス頻度)に基づくことができる。次に、データ配置機能704のデステージング・エンジン716は、ホスト書き込みキャッシュ146bからの符号語ごとのホスト書き込みデータおよび関連メタデータ(例えば、CRCおよびECC値)を、オープン・ブロック・キュー706内で識別された割り当てられたページ・ストライプのページ内に書き込み、追加的に、必要とされる場合には、パリティ情報を、割り当てられたページ・ストライプのデータ保護ページ内に書き込む。デステージング・エンジン716はまた、LPT表152を、ホスト書き込みデータのLBAを、書き込みデータを記憶するために利用されるNANDフラッシュ・メモリ150内の物理ページのアドレスに関連付けるように更新する。その後、フラッシュ・コントローラ140は、LPT表152を参照してNANDフラッシュ・メモリ150からのデータにアクセスし、ホスト読み出しコマンドに応答することができる。
【0044】
ブロック・ストライプ内の全てのページが書き込まれたか、またはブロック・ストライプが他の様態で閉鎖されると、フラッシュ・コントローラ140はブロック・ストライプの識別子を、占有ブロック・キュー708のうちの1つの上に配置し、GPP132上で実行するフラッシュ管理コードはそれを利用してブロックをガーベッジ・コレクションおよび他の管理機能のために追跡する。上述されたように、書き込みプロセスを通じて、ページは無効にされ、したがって、NANDフラッシュ・メモリ・システム150の部分は未使用状態になる。関連フラッシュ・コントローラ140(またはGPP132あるいはその両方)は、最終的に、ガーベッジ・コレクタ720によって遂行されるガーベッジ・コレクションを通じてこの空間を再生利用することを必要とする。ガーベッジ・コレクタ720は、例えば、ブロック・ストライプ内の物理ブロックの健全性、物理ブロック内のデータのうちのどれほどが無効であるかを含む多数の因子に基づいて、特定のブロック・ストライプをガーベッジ・コレクションのために選択する。少なくとも1つの実施形態では、ガーベッジ・コレクションはブロック・ストライプ全体に対して遂行され、ガーベッジ・コレクタ720は、ガーベッジ・コレクションされたブロック・ストライプ内の依然として有効なデータを別のブロック・ストライプに再配置するための再配置書き込みコマンドをデータ配置機能704のキャッシング・エンジン714へ発行する。より高い記憶密度モード(例えば、QLCモード)で動作する物理ブロックの第1のプール、およびより低い記憶密度モード(例えば、SLCモード)で動作する物理ブロックの第2のプールを含むハイブリッド階層配置を実装するNANDフラッシュ・メモリ・システム150では、ガーベッジ・コレクションされたデータが、どちらかのモードで動作する古いブロックから、どちらかのモードで動作する新たなブロックに書き込まれることを可能にすることが望ましい。それゆえ、ガーベッジ・コレクタ720によって発行された再配置書き込みコマンドは、例えば、QLC-QLC、SLC-QLC、SLC-SLC、またはQLC-SLCガーベッジ・コレクションをサポートするために、ターゲット・ブロック・ストライプの所望の動作モードを指定し得る。
【0045】
図7においてさらに指示されるように、GPP132またはフラッシュ・コントローラ140あるいはその両方によって遂行されるフラッシュ管理機能は、ブロックにわたる損耗を均等化するための占有ブロック・キュー708内のブロック・ストライプ内に保持されるデータの再配置を要求する損耗平準化器(wear leveler)722、ならびに構成ブロックの一部または全てが、異なる動作モード(例えば、QLCまたはSLC)で動作するように再構成されることを可能にするための特定のブロック・ストライプ内に保持されるデータの再配置を要求するプール・バランサ724をさらに含む。
【0046】
ガーベッジ・コレクタ720、損耗平準化器722、およびプール・バランサ724から受信された再配置書き込みコマンドに基づいて、キャッシング・エンジン714は古いブロック・ストライプからの再配置書き込みデータをフラッシュ・コントローラ揮発性メモリ144内の再配置書き込みバッファ148内に記憶する。加えて、キャッシング・エンジン714は、LPT表152を、再配置書き込みバッファ148内の場所を追加的に指し示すように更新し得る。全ての依然として有効なデータが古いブロック・ストライプから移動され、オープン・ブロック・キュー706内で識別された割り当てられたページ・ストライプの新たなページに書き込まれると、デステージング・エンジン716は、データの論理アドレスと物理アドレスとの間の現在の関連付けを除去するように、および、再配置されたデータのLBAを、再配置されたデータを記憶するために利用されるNANDフラッシュ・メモリ150内の物理ページのアドレスに関連付けるように、LPT表152を更新する。次に、古いブロック・ストライプを解散し、それゆえ、ブロックの関連付けを解除し、ブロックの識別子を、チャネルごとに1つの消去キュー710を含み得る、消去キュー710内に入れる。次に、フラッシュ・コントローラ140のブロック消去機能712が、解散させられたブロック・ストライプを以前形成していたブロックの各々を消去し、管理データ構造158内のブロックのための関連プログラム/消去(P/E)サイクル数を増加させる。各消去済みブロックの健全性メトリックに基づいて、各消去済みブロックはリタイアさせられるか(すなわち、ユーザ・データを記憶するためにもはや使用されない)、またはその代わりに、ブロックの識別子を関連GPPメモリ134内の適切な使用準備済み(RTU)キュー700上に配置することによって再使用のために準備される。
【0047】
次に
図8を参照すると、一実施形態に係る、不揮発性メモリ・システムにおける、コントローラがホスト書き込みコマンドに応答する例示的な方法の高レベル論理フローチャートが示されている。図示のプロセスは、例えば、データ記憶システム120の動作中にハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せの形でコントローラ(例えば、GPP132またはフラッシュ・コントローラ140あるいはその両方)によって遂行され得る。別途特に断りのない限り、動作は、厳密に時系列的な順序ではなく、論理的な順序で提示されており、実施形態によっては、動作は、提示されているのとは異なる順序で、または同時に遂行され得る。
【0048】
図8のプロセスはブロック800において開始し、次に、ブロック802へ進む。ブロック802は、コントローラが、プロセッサ・システム102などの、ホストからのホスト書き込みコマンドの受信について監視することを示す。ホスト書き込みコマンドは、書き込まれるべきLBA、およびホスト書き込みデータを含むか、またはそれらを当該コマンドに関連付けさせている。ホスト書き込みコマンドの検出に応じて、コントローラは、存在する場合、LPT152内のLBAのためのエントリを無効にする。プロセスは、好ましくは並列に、ブロック804からブロック806および808へ進む。ブロック806は、コントローラがホスト書き込みのホスト書き込みデータをフラッシュ・コントローラ不揮発性メモリ142内のホスト書き込みキャッシュ146a内にバッファリングすることを示す。ブロック808は、コントローラがホスト書き込みのホスト書き込みデータをフラッシュ・コントローラ揮発性メモリ144内のホスト書き込みキャッシュ146b内に追加的にミラーリングすることを示す。
【0049】
ホスト書き込みデータをバッファリングするために必要とされるホスト書き込みキャッシュ146a、146bの最小サイズは、サポートされた書き込みストリームの内部並列性および数、ならびにサポートされた書き込み帯域幅および平均書き込みレイテンシと共に増大する。所与の書き込み帯域幅およびレイテンシ特性を有するコントローラについて、最小サイズは、物理ページ・サイズ、レーンおよびプレーンの数、未処理のページ・ストライプの最大数、ならびにサポートされた書き込みストリームおよびビンの数の関数として計算することができる。例えば、16kBのページ、ストライプにグループ化された4つのプレーンを有する20個のレーン、および4つの未処理のワード線(すなわち、16個のページ・ストライプ)を実装するNANDフラッシュ・メモリ・システム150について、ホスト書き込みキャッシュ146a、146bの最小サイズは、ストリーム/ビン当たり16kB×20×4×16=20MBであるように決定することができる。
【0050】
図9を参照すると、一実施形態に係る、コントローラが、ホスト書き込みデータおよび再割り当て書き込みデータの、異なる書き込みストリームへの分離、ならびに書き込みストリーム内の読み出し熱の分離の両方をサポートする例示的なデータ構造を示す図が示されている。この例示的な実施形態では、フラッシュ・コントローラ140はホスト書き込みデータの1つの書き込みストリームおよび再配置書き込みデータの2つの書き込みストリームを実装する。各書き込みストリームは、SLCデータのための1つの書き込みビンおよびQLCデータのための4つの書き込みビンを含む、5つの書き込みビンを含む。QLCデータのための4つの書き込みビンは、各QLCページ種、すなわち、下位ページ(LP)、上位ページ(UP)、特別ページ(XP)、および最上位ページ(TP)のためのそれぞれのビンを含む。フラッシュ・コントローラ140は相対的な読み出し熱に基づいてデータを様々なQLC書き込みビンに仕向ける。例えば、最も低温のQLC書き込みデータはQLC TPバッファ内にバッファリングされ、次により高温のQLC書き込みデータはQLC XPバッファ内にバッファリングされ、次により高温のQLC書き込みデータはQLC UPバッファ内にバッファリングされ、最も高温のQLC書き込みデータはQLC LPバッファ内にバッファリングされる。様々な熱ビンの実装はホスト書き込みキャッシュ146a、146bの最小サイズを増大させるが、ホスト書き込みキャッシュ146a、146bのフットプリントを低減するために書き込みストリームまたは熱ビンあるいはその両方の数を低減することは、全体的な書き込みの増幅が増大するか、または読み出し熱の分離効率が著しく落ちるであろうから、好ましくない。
【0051】
図8のブロック806に戻ると、ホスト書き込みコマンドのホスト書き込みデータがホスト書き込みキャッシュ146a内にバッファリングされたことに基づいて、コントローラはI/Oチャネル110を介してホスト書き込みコマンドの肯定応答を開始ホストへ送信する(ブロック810)。上述されたように、肯定応答メッセージはホスト書き込みデータの永続記憶を意味し、それゆえ、ホスト書き込みコマンドに割り当てられたリソースを再使用のために解放することができることをホストに知らせる。
図8のプロセスはブロック810および808から進み、ブロック812において再合流する。ブロック812は、コントローラが、ホスト書き込みコマンドのLBAのためのLPT152内のエントリを、書き込みキャッシュ146a、146bの一方または両方内のホスト書き込みデータの場所を指し示すように更新することを示す。その結果、少なくとも一部の実施形態では、コントローラは、書き込みキャッシュ146bからのホスト書き込みデータを要求するホスト読み出しコマンドに応答することを開始することができる。
【0052】
ブロック814において、コントローラは、ホスト書き込みキャッシュ146b内のバッファへのデータの割り振りに従って、(書き込みキャッシュ146aからでなく)書き込みキャッシュ146bからNANDフラッシュ・メモリ・システム150内へのホスト書き込みデータのデステージを開始する。書き込みキャッシュ146aからホスト書き込みデータをデステージすることを避けることによって、フラッシュ・コントローラ不揮発性メモリ142へのアクセスは、通常の場合、ホスト書き込みコマンドごとに単一の書き込みに抑制される。好ましい実施形態では、ホスト書き込みデータのデステージは、コントローラが、他のホストI/Oコマンドに応答するか、または他の管理機能を遂行することでビジー状態でない間に、「バックグラウンド」で遂行される。コントローラは、書き込みキャッシュ146bからNANDフラッシュ・メモリ・システム150へのホスト書き込みデータのデステージの完了について監視する(ブロック816)。ホスト書き込みデータのデステージが完了したことの検出に応じて、コントローラは、ホスト書き込みデータがNANDフラッシュ・メモリ・システム150内に永続的に記憶されたので、ホスト書き込みキャッシュ146a内に存在するホスト書き込みデータのコピーを解放する(無効にする)ことができる(ブロック818)。ホスト書き込みデータのコピーは、データの将来のホスト読み出しに応えるためにホスト書き込みキャッシュ146b内に保持され得ることに留意されたい。これは、例えば、ホスト書き込みキャッシュ146bのサイズがホスト書き込みキャッシュ146aのものよりも大きいときに有益である。代替的に、ホスト書き込みキャッシュ146b内のホスト書き込みデータはホスト書き込みキャッシュ146a内のコピーと同時に解放することもできるであろう。ホスト書き込みキャッシュ146b内のホスト書き込みデータを解放または保持する決定は、例えば、実施されたキャッシング・ポリシー、ホスト書き込みデータが将来において読み出されることになる可能性、またはホスト書き込みキャッシュ146bの利用可能サイズ、あるいはその組合せに依存し得る。その後、
図8のプロセスはブロック820において終了する。
【0053】
図8には明示的に示されていないが、当業者は、ホスト書き込みコマンドが応答されている間にフラッシュ・カード126またはデータ記憶システム120への電力損失が発生した場合、データ損失が回避されることになることを理解するであろう。その場合には、ホスト書き込みデータは、ホストによってホスト・キューから、またはコントローラによって、書き込みキャッシュ146a内にバッファリングされた永続的コピーから回復され得る。しかし、電力損失がない通常動作の場合には、本開示のプロセスはフラッシュ・カード126内における以下の4回の内部データ移動を含む:
1. 不揮発性書き込みキャッシュ146a内への1回の書き込み、
2. ミラーリングされた揮発性書き込みキャッシュ146b内への1回の書き込み、
3. ミラーリングされた揮発性書き込みキャッシュ146bからの1回の読み出し、および
4. NANDフラッシュ・メモリ・システム150内への1回の書き込み。
理解されるであろうように、不揮発性書き込みキャッシュ146aへのアクセスをホスト書き込みコマンドごとに1回の書き込みアクセスに制限することは、従来技術のソリューションと比べて、不揮発性書き込みキャッシュ146aへの要求帯域幅を大きく低減し、それゆえ、不揮発性書き込みキャッシュ146aの最小必要サイズ(およびコスト)を下げる。代替的に、不揮発性書き込みキャッシュ内の節約された空間を、書き込みストリームの数を増大させ、それゆえ、熱の分離を改善するために用いることもできるであろう。
【0054】
次に
図10を参照すると、一実施形態に係る、不揮発性メモリ・システムにおける、コントローラが再配置書き込みコマンドに応答する例示的な方法の高レベル論理フローチャートが示されている。図示のプロセスは、例えば、データ記憶システム120の動作中にハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せの形でコントローラ(例えば、GPP132またはフラッシュ・コントローラ140あるいはその両方)によって遂行され得る。この場合も先と同様に、動作は、厳密に時系列的な順序ではなく、論理的な順序で提示されており、実施形態によっては、動作は、提示されているのとは異なる順序で、または同時に遂行され得る。
【0055】
図10のプロセスはブロック1000において開始し、次に、ブロック1002へ進む。ブロック1002は、コントローラが、例えば、ガーベッジ・コレクタ720、損耗平準化器722、またはプール・バランサ724からの再配置書き込みコマンドの受信について監視することを示す。再配置書き込みコマンドは、再配置書き込みデータが再配置されることになるNANDフラッシュ・メモリ150内の1つまたは複数の物理ブロック(例えば、ブロック・ストライプ)を指定する。再配置書き込みコマンドの検出に応じて、コントローラは、ブロック1004において、物理ブロックからの1つまたは複数の依然として有効なデータ・ページ(本明細書において「再配置書き込みデータ」と称される)をNANDフラッシュ・メモリ150からフラッシュ・コントローラ揮発性メモリ144内の再配置書き込みバッファ148内へ読み出す(ブロック1004)。コントローラは、再配置書き込みデータのうちの任意のものをフラッシュ・コントローラ不揮発性メモリ142内にバッファリングすることを避けることに留意されたい。
【0056】
ブロック1006において、コントローラは、再配置書き込みバッファ148から、オープン・ブロック・キュー706内で識別されたNANDフラッシュ・メモリ・システム150内のブロック・ストライプ内への再配置書き込みデータのデステージを開始する。好ましい実施形態では、再配置書き込みデータのデステージは、コントローラが、他のホストI/Oコマンドに応答するか、または他の管理機能を遂行することでビジー状態でない間に、「バックグラウンド」で遂行される。コントローラは、再配置書き込みバッファ148からNANDフラッシュ・メモリ・システム150への再配置書き込みデータのデステージの完了について監視する(ブロック1008)。再配置書き込みデータのデステージが完了したことの検出に応じて、コントローラは、全ての依然として有効なページが、再配置されているブロックまたはブロック・ストライプから再配置されたかどうかをチェックする(ブロック1010)。再配置されるべきさらなるページが存在する場合には、コントローラはブロック1004へ戻り、上述されたように次の1つまたは複数の依然として有効なページを読み出す。残りの依然として有効なページが存在しないとき、コントローラは、再配置書き込みデータが読み出されたソース・ブロックの識別子を消去キュー710内に入れ、再配置書き込みバッファ148内に存在する再配置書き込みデータのコピーを解放する(無効にする)ことができる(ブロック1012)。ブロック1012において、コントローラは、追加的に、LPT152内の関連エントリを、NANDフラッシュ・メモリ150内の新たな記憶場所を指し示すように更新する。その後、
図10のプロセスはブロック1014において終了する。
【0057】
通常動作の場合には(すなわち、電力損失がない場合には)、再配置書き込みコマンドを処理するための本開示のプロセスはフラッシュ・カード126内における以下の4回の内部データ移動を含む:
1. NANDフラッシュ・メモリ・システム150からの1回の読み出し、
2. フラッシュ・コントローラ揮発性メモリ148内の再配置書き込みバッファ148内への1回の書き込み、
3. 再配置書き込みバッファ148からの1回の読み出し、および
4. NANDフラッシュ・メモリ・システム150内への1回の書き込み。
理解されるであろうように、再配置書き込みコマンドに応答する間の不揮発性書き込みキャッシュ146aへのあらゆるアクセスを無くすことは、従来技術のソリューションと比べて、不揮発性書き込みキャッシュ146aへの要求帯域幅を大きく低減し、それゆえ、不揮発性書き込みキャッシュ146aの最小必要サイズ(およびコスト)を下げる。代替的に、不揮発性書き込みキャッシュ内の節約された空間を、書き込みストリームの数を増大させ、それゆえ、熱の分離を改善するために用いることもできるであろう。
【0058】
次に
図11を参照すると、第2の実施形態に係る
図1Aのデータ記憶システムの例示的なフラッシュ・カードのブロック図が示されている。同様の参照符号によって指示されるように、図示のフラッシュ・カード126’は、以前に
図8および
図10を参照して説明されたように採用された、ミラーリングされたホスト書き込みキャッシュ146a、146bを含む。しかし、フラッシュ・カード126’は別個のフラッシュ・コントローラ不揮発性メモリ142を省略しており、その代わりに、NANDフラッシュ・メモリ・システム150内の大容量不揮発性メモリ内にホスト書き込みキャッシュ146aを実装する。この第2の実施形態は、フラッシュ・コントローラ不揮発性メモリの省略のゆえに、より低いコストで提供することができるが、典型的には、NANDフラッシュ・メモリ・システム150への書き込みのより長いレイテンシのゆえに、より低い書き込み性能を呈する。このより長い書き込みレイテンシは、ホスト書き込みキャッシュ146aを、より高速のSLC記憶層内(すなわち、SLCモードで動作するように構成されたQLCブロック、または専用SLCフラッシュ・メモリ内のどちらか)にもっぱら実装することによって、部分的に改善され得る。
【0059】
上述されたように、少なくとも1つの実施形態では、データ記憶システムが大容量不揮発性メモリ内の永続記憶を提供する。データ記憶システムのコントローラがホスト書き込みコマンドを受信し、関連ホスト書き込みデータを不揮発性メモリ内の第1の書き込みキャッシュおよび揮発性メモリ内のミラーリングされた第2の書き込みキャッシュの両方内にバッファリングする。コントローラはホスト書き込みデータを、第1の書き込みキャッシュでなく、第2の書き込みキャッシュから大容量不揮発性メモリへデステージする。コントローラは、第2の書き込みキャッシュを参照して大容量不揮発性メモリ内のデータ再配置を要求する再配置書き込みコマンドに応答する。再配置書き込みコマンドに応答することは、再配置書き込みデータを、第1の書き込みキャッシュでなく、第2の書き込みキャッシュ内にバッファリングすること、および再配置書き込みデータを第2の書き込みキャッシュから大容量不揮発性メモリへデステージすること、を含む。
【0060】
少なくとも1つの実施形態では、大容量不揮発性メモリへのホスト書き込みデータのデステージの完了前に、コントローラは、ホスト書き込みデータが第1の書き込みキャッシュ内にバッファリングされたことに基づいてホスト書き込みコマンドの肯定応答をホストへ送信する。
【0061】
少なくとも1つの実施形態では、大容量不揮発性メモリはフラッシュ・メモリを含み、コントローラはフラッシュ・メモリ内のガーベッジ・コレクションの間に再配置書き込みコマンドのうちの少なくとも一部を生成する。
【0062】
少なくとも1つの実施形態では、コントローラは、第1の書き込みキャッシュ内で、大容量不揮発性メモリへのホスト書き込みデータのデステージの完了に基づいてホスト書き込みコマンドのホスト書き込みデータを解放する。
【0063】
少なくとも1つの実施形態では、コントローラは、第1の書き込みキャッシュ内のホスト書き込みデータの少なくとも第1の場所を論理-物理変換データ構造のエントリ内に記録する。大容量不揮発性メモリへのホスト書き込みデータのデステージに基づいて、コントローラは、エントリを、大容量不揮発性メモリ内の異なる第2の場所を指示するように更新する。
【0064】
少なくとも1つの実施形態では、コントローラは、第2の書き込みキャッシュ内のホスト書き込みデータの第3の場所を論理-物理変換データ構造のエントリ内に追加的に記録する。
【0065】
少なくとも1つの実施形態では、大容量不揮発性メモリは第1の書き込みキャッシュを含む。
【0066】
少なくとも1つの実施形態では、コントローラは、複数の異なる書き込み熱のうちのそれぞれのものに各々対応する複数のバッファを第1の書き込みキャッシュ内および第2の書き込みキャッシュ内に維持する。
【0067】
通常の場合において、不揮発性書き込みキャッシュの帯域幅需要をホスト書き込みコマンドごとに単一の書き込みに低減することによって、本開示の実施形態は、フラッシュ・コントローラ不揮発性メモリのサイズとデータ記憶システムのコストへのその寄与との間の設計トレードオフを改善する。具体的には、実施形態によっては、本開示の実施形態は、不揮発性書き込みキャッシュのサイズ(ひいてはコスト)を低減しつつ、所与の数の書き込みストリームおよび十分な書き込み帯域幅が維持されることを可能にする。代替的に、他の実施形態では、所与のサイズの不揮発性書き込みキャッシュを利用して、同じコストで、より優れた性能をもたらす追加の書き込みストリームを実装することができる。さらに他の実施形態では、より多数の書き込みストリームを同じ全体的書き込み帯域幅で実装しつつ、いくらかのコスト低減を達成することができる。
【0068】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または媒体群)を含み得る。
【0069】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、限定するものではないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上述のものの任意の好適な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、以下のもの:ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、リード・オンリー・メモリ(ROM:read-only memory)、消去可能プログラマブル・リード・オンリー・メモリ(EPROM(erasable programmable read-only memory)もしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録された穿孔カードまたは溝内の隆起構造などの機械的に符号化されたデバイス、ならびに上述のものの任意の好適な組合せを含む。コンピュータ可読記憶媒体は、本明細書で使用するとき、電波または他の自由伝搬する電磁波、導波路または他の伝送媒体を通って伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいは電線を通して伝送される電気信号などの、一過性信号自体であると解釈されるべきでない。
【0070】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを経由して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースがネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体における記憶のために転送する。
【0071】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalk(R)、C++、もしくは同様のものなどの、オブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの、従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードまたはオブジェクト・コードのいずれかであり得る。コンピュータ可読プログラム命令は完全にユーザのコンピュータ上で実行するか、一部をユーザのコンピュータ上で実行するか、独立型ソフトウェア・パッケージとして実行するか、一部をユーザのコンピュータ上で、かつ一部をリモート・コンピュータ上で実行するか、または完全にリモート・コンピュータもしくはサーバ上で実行し得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)またはワイド・エリア・ネットワーク(WAN:wide area network)を含む、任意の種類のネットワークを通じてユーザのコンピュータに接続され得るか、あるいは外部コンピュータへの接続が(例えば、インターネット・サービス・プロバイダを利用してインターネットを通じて)行われ得る。実施形態によっては、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA:programmable logic array)を含む電子回路が、本発明の態様を遂行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0072】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明されている。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方内のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されるであろう。
【0073】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
【0074】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能な装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを作り出すべく、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0075】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表し得る。いくつかの代替的実装形態では、ブロック内に記された機能は、図面に記された順序に従わずに生じてもよい。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行されてもよく、またはブロックは、時として、含まれる機能性に依存して、逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を遂行するか、あるいは専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実施され得ることにも留意されたい。
【0076】
本発明は、1つまたは複数の好ましい実施形態を参照して説明したように具体的に示されたが、それらにおいては、形態および細部の様々な変更が添付の特許請求の範囲の趣旨および範囲から逸脱することなく行われ得ることは当業者によって理解されるであろう。例えば、諸態様は、特定の機能を指示するフラッシュ・コントローラを含むデータ記憶システムに関して説明されたが、本発明は、代替的に、プロセッサによって、このような機能を遂行するか、またはこのような機能を遂行させるように処理され得るプログラム・コードを記憶した記憶デバイスを含むプログラム製品として実施され得ることを理解されたい。本明細書で使用するとき、「記憶デバイス」は、法定の製造品のみを含み、伝送媒体自体、一過性の伝搬信号自体、およびエネルギー自体の形態を除外するように具体的に定義される。
【0077】
加えて、NANDフラッシュ・メモリの使用を含む実施形態が説明されたが、本発明の実施形態はまた、例えば、相変化メモリ(PCM)およびそれらの組合せを含む、他の種類の不揮発性ランダム・アクセス・メモリ(NVRAM:non-volatile random access memory)と共に用いられ得ることを理解されたい。
【0078】
上述された図、ならびに以下の特定の構造および機能の書面による説明は、出願人が発明したものの範囲、または添付の特許請求の範囲を限定するために提示されるわけではない。むしろ、図、および書面による説明は、特許保護が求められる本発明を作製して用いることを任意の当業者に教示するために提供される。当業者は、明瞭性および理解のために、本発明の商業的実施形態の全ての特徴が説明または図示されてはいないことを理解するであろう。また、本技術分野における当業者は、本発明の態様を組み込んだ実際の商業的実施形態の開発は、商業的実施形態のための開発者の最終的な目標を達成するために数多くの実装形態固有の決定を必要とすることになることも理解するであろう。このような実装形態固有の決定は、特定の実装形態、場所によって、および時々変化し得る、システム関連、ビジネス関連、政府関連、および他の制約の順守を含み得、おそらくはそれに限定されない。開発者の努力は、絶対的な意味で、複雑になり、かつ時間がかかり得るが、それにもかかわらず、このような努力は、本開示の利益を有する本技術分野における当業者にとっては、通常の作業であろう。本明細書において開示され、教示された本発明は数多くの様々な変更および代替形態を受け入れる余地があることが理解されなければならない。最後に、限定するものではないが、「a」などの、単数形の用語の使用は、項目の数の限定として意図されていない。
【手続補正書】
【提出日】2024-03-26
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
大容量不揮発性メモリ内への記憶を提供するデータ記憶システムにおける方法であって、
前記データ記憶システムのコントローラがホスト書き込みコマンドを受信し、関連するホスト書き込みデータを不揮発性メモリ内の第1の書き込みキャッシュおよび揮発性メモリ内のミラーリングされた第2の書き込みキャッシュの両方内にバッファリングすることと、
前記コントローラが前記ホスト書き込みデータを、前記第1の書き込みキャッシュでなく、前記第2の書き込みキャッシュから前記大容量不揮発性メモリへデステージすることと、
前記コントローラが、前記第2の書き込みキャッシュを参照して前記大容量不揮発性メモリ内のデータ再配置を要求する再配置書き込みコマンドに応答することであって、再配置書き込みコマンドに関連付けられた再配置書き込みデータを、前記第1の書き込みキャッシュでなく、前記第2の書き込みキャッシュ内にバッファリングすること、および前記再配置書き込みデータを前記第2の書き込みキャッシュから前記大容量不揮発性メモリへデステージすること、を含む、前記応答することと、
を含む、方法。
【請求項2】
前記大容量不揮発性メモリへの前記ホスト書き込みデータの前記デステージの完了前に、前記コントローラが、前記ホスト書き込みデータが前記第1の書き込みキャッシュ内にバッファリングされたことに基づいて前記ホスト書き込みコマンドの肯定応答をホストへ送信することをさらに含む、請求項1に記載の方法。
【請求項3】
前記大容量不揮発性メモリがフラッシュ・メモリを含み、
前記方法が、前記コントローラが、前記フラッシュ・メモリ内のガーベッジ・コレクションの間に複数の前記再配置書き込みコマンドのうちの少なくともいくつかを生成することを含む、
請求項1に記載の方法。
【請求項4】
前記コントローラが、前記第1の書き込みキャッシュ内で、前記大容量不揮発性メモリへの前記ホスト書き込みデータのデステージの完了に基づいて前記ホスト書き込みコマンドの前記ホスト書き込みデータを解放すること
をさらに含む、請求項1に記載の方法。
【請求項5】
前記コントローラが、前記第1の書き込みキャッシュ内のホスト書き込みデータの少なくとも第1の場所を論理-物理変換データ構造のエントリ内に記録することと、
前記コントローラが、前記大容量不揮発性メモリへの前記ホスト書き込みデータのデステージに基づいて、前記エントリを、前記大容量不揮発性メモリ内の異なる第2の場所を指示するように更新することと、
をさらに含む、請求項1に記載の方法。
【請求項6】
前記エントリ内に記録することが、前記第2の書き込みキャッシュ内のホスト書き込みデータの第3の場所を前記エントリ内に記録することを含む、請求項5に記載の方法。
【請求項7】
前記大容量不揮発性メモリが前記第1の書き込みキャッシュを含む、請求項1に記載の方法。
【請求項8】
前記コントローラが、複数の異なる書き込み熱のうちのそれぞれのものに各々対応する複数のバッファを前記第1の書き込みキャッシュ内および前記第2の書き込みキャッシュ内に維持すること
をさらに含む、請求項1に記載の方法。
【請求項9】
データ記憶システムであって、
大容量不揮発性メモリのコントローラを備え、前記コントローラが、
ホスト書き込みコマンドを受信し、関連するホスト書き込みデータを不揮発性メモリ内の第1の書き込みキャッシュおよび揮発性メモリ内のミラーリングされた第2の書き込みキャッシュの両方内にバッファリングすることと、
前記ホスト書き込みデータを、前記第1の書き込みキャッシュでなく、前記第2の書き込みキャッシュから前記大容量不揮発性メモリへデステージすることと、
前記第2の書き込みキャッシュを参照して前記大容量不揮発性メモリ内のデータ再配置を要求する再配置書き込みコマンドに応答することであって、再配置書き込みコマンドに関連付けられた再配置書き込みデータを、前記第1の書き込みキャッシュでなく、前記第2の書き込みキャッシュ内にバッファリングすること、および前記再配置書き込みデータを前記第2の書き込みキャッシュから前記大容量不揮発性メモリへデステージすること、を含む、前記応答することと、
を遂行するように構成されている、データ記憶システム。
【請求項10】
前記コントローラが、
前記大容量不揮発性メモリへの前記ホスト書き込みデータの前記デステージの完了前に、前記ホスト書き込みデータが前記第1の書き込みキャッシュ内にバッファリングされたことに基づいて前記ホスト書き込みコマンドの肯定応答をホストへ送信すること
を遂行するようにさらに構成されている、請求項9に記載のデータ記憶システム。
【請求項11】
前記大容量不揮発性メモリがフラッシュ・メモリを含み、
前記コントローラが、前記フラッシュ・メモリ内のガーベッジ・コレクションの間に複数の前記再配置書き込みコマンドのうちの少なくともいくつかを生成することを遂行するようにさらに構成されている、
請求項9に記載のデータ記憶システム。
【請求項12】
前記コントローラが、
前記第1の書き込みキャッシュ内で、前記大容量不揮発性メモリへの前記ホスト書き込みデータのデステージの完了に基づいて前記ホスト書き込みコマンドの前記ホスト書き込みデータを解放すること
を遂行するようにさらに構成されている、請求項9に記載のデータ記憶システム。
【請求項13】
前記コントローラが、
前記第1の書き込みキャッシュ内のホスト書き込みデータの少なくとも第1の場所を論理-物理変換データ構造のエントリ内に記録することと、
前記大容量不揮発性メモリへの前記ホスト書き込みデータのデステージに基づいて、前記エントリを、前記大容量不揮発性メモリ内の異なる第2の場所を指示するように更新することと、
を遂行するようにさらに構成されている、請求項9に記載のデータ記憶システム。
【請求項14】
前記エントリ内に記録することが、前記第2の書き込みキャッシュ内のホスト書き込みデータの第3の場所を前記エントリ内に記録することを含む、請求項13に記載のデータ記憶システム。
【請求項15】
前記大容量不揮発性メモリをさらに備え、前記大容量不揮発性メモリが前記第1の書き込みキャッシュを含む、請求項9に記載のデータ記憶システム。
【請求項16】
前記コントローラが、
複数の異なる書き込み熱のうちのそれぞれのものに各々対応する複数のバッファを前記第1の書き込みキャッシュ内および前記第2の書き込みキャッシュ内に維持すること
を遂行するようにさらに構成されている、請求項9に記載のデータ記憶システム。
【請求項17】
請求項1ないし8いずれか一項に記載の方法を前記コントローラに実行させる、プログラム。
【国際調査報告】