(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-04
(45)【発行日】2024-04-12
(54)【発明の名称】キャッシュ内のデータブロックの書き込みモードの変更に基づくメディア管理動作の実施
(51)【国際特許分類】
G06F 12/02 20060101AFI20240405BHJP
G06F 12/00 20060101ALI20240405BHJP
【FI】
G06F12/02 530E
G06F12/00 560B
G06F12/00 597U
(21)【出願番号】P 2022541912
(86)(22)【出願日】2021-01-08
(86)【国際出願番号】 US2021012782
(87)【国際公開番号】W WO2021142325
(87)【国際公開日】2021-07-15
【審査請求日】2022-09-05
(32)【優先日】2020-01-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】ラットナム サムパス ケー.
(72)【発明者】
【氏名】ムチェラ キショール クマール
(72)【発明者】
【氏名】フィーリー ピーター
(72)【発明者】
【氏名】マルシェ アシュトシュ
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2011-186555(JP,A)
【文献】国際公開第2019/046037(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/02
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
メモリサブシステムの1つ以上のデータブロック上でガベージコレクション動作を実施することであって、
第1のデータが、第1の書き込みモードを使用して前記1つ以上のデータブロックに蓄積されることと、
前記ガベージコレクション動作
と関連付けられたライトアンプリフィケーション値がパフォーマンス条件を満たすか否かを判定することと、
前記
ライトアンプリフィケーション値が前記パフォーマンス条件を満たすと判定することに応答して、前記メモリサブシステムのキャッシュ領域の
キャッシュデータブロックが耐久性条件を満たすか否かを判定することであって、
第2のデータが、第2の書き込みモードを使用して前記
キャッシュデータブロックに蓄積されることと、
前記
キャッシュデータブロックが前記耐久性条件を満たすと判定することに応答して、処理デバイスによって、前記
キャッシュデータブロックに対する書き込みモードを前記第2の書き込みモードから前記第1の書き込みモードに変更することと、
前記ガベージコレクション動作で前記
キャッシュデータブロックを使用すること
を含む、方法。
【請求項2】
前記第1の書き込みモードは、前記
キャッシュデータブロックのメモリセルあたり第1の数のビットで前記
第1のデータを蓄積し、前記第2の書き込みモードは、メモリセルあたり
、前記第1の数のビットよりも少ない第2の数のビットで前記
第2のデータを蓄積
する、請求項1に記載の方法。
【請求項3】
前記
ライトアンプリフィケーション値は、一定量のデータを1つ以上の新たなデータブロックに書き込むために前記ガベージコレクション動作で使用される書き込み動作の数に
基づいて特定される、請求項1に記載の方法。
【請求項4】
前記耐久性条件は、前記
キャッシュデータブロック上で実行されている前記第1の書き込みモードを使用する書き込み動作の閾値数に対応する、請求項1に記載の方法。
【請求項5】
前記第1の書き込みモードは、マルチレベルセル(MLC)モード、トリプルレベルセル(TLC)モード、及びクアッドレベルセル(QLC)モードの内の少なくとも1つを含み、前記第2の書き込みモードは、シングルレベルセル(SLC)モードを含む、請求項1に記載の方法。
【請求項6】
前記
キャッシュデータブロックが前記耐久性条件を満たすか否かを判定することは、
前記キャッシュ領域に対する平均耐久性値が前記耐久性条件を満たすか否かを判定することと、
前記キャッシュ領域に対する前記平均耐久性値が前記耐久性条件を満たすと判定することに応答して、前記キャッシュ領域と関連付けられた複数の
追加のデータブロックから前記
キャッシュデータブロックを選択すること
を更に含む、請求項1に記載の方法。
【請求項7】
前記平均耐久性値は、
前記複数の追加のデータブロック
のそれぞれの追加のデータブロック上で実施されている前記第1の書き込みモードを使用する書き込み動作の平均数に対応する、請求項6に記載の方法。
【請求項8】
メモリコンポーネントと、
前記メモリコンポーネントと関連付けられたキャッシュ領域のキャッシュデータブロックの第2の書き込みモードを起動することであって、前記キャッシュデータブロックは、前記メモリコンポーネントと関連付けられた複数のデータブロック上のガベージコレクション動作
で使用され、前記第2の書き込みモードは、前記キャッシュデータブロックの
メモリセルあたり第2の数のビットを蓄積することと、
前記ガベージコレクション動作
と関連付けられたライトアンプリフィケーション値がパフォーマンス要件を満たしていると判定することと、
前記
ライトアンプリフィケーション値が前記パフォーマンス要件を満たしていると判定することに応答して、前記
キャッシュデータブロック
の書き込みモードを、前記第2の
書き込みモードから
、前記キャッシュデータブロックのメモリセルあたり、前記第2の数のビットよりも少ない第1の数のビットを蓄積する第1の書き込みモードに変更することによって、後続のデータをキャッシュデータとして前記
キャッシュデータブロックに蓄積すること
を行う、前記メモリコンポーネントと動作可能に結合された処理デバイスと
を含む、システム。
【請求項9】
前記第1の書き込みモードは、シングルレベルセル(SLC)モードを含み、前記第2の書き込みモードは、マルチレベルセル(MLC)モード、トリプルレベルセル(TLC)モード、及びクアッドレベルセル(QLC)モードの内の少なくとも1つを含む、請求項
8に記載のシステム。
【請求項10】
前記
ライトアンプリフィケーション値は、1つ以上の新たなデータブロックに一定量のデータを書き込むために前記ガベージコレクション動作で使用される書き込み動作の数に
基づいて特定される、請求項8に記載のシステム。
【請求項11】
前記
ライトアンプリフィケーション値が
前記パフォーマンス要件を満たしていると判定するために、前記処理デバイスは、
前記一定量のデータを書き込むために前記ガベージコレクション動作で使用される書き込み動作の前記数が、高い閾値を下回ると判定すること
を更に行う、請求項
10に記載のシステム。
【請求項12】
メモリサブシステムの1つ以上のデータブロック上でガベージコレクション動作を実施することであって、
第1のデータが、第1の書き込みモードを使用して前記1つ以上のデータブロックに蓄積されることと、
前記ガベージコレクション動作
と関連付けられたライトアンプリフィケーション値がパフォーマンス条件を満たすか否かを判定することと、
前記
ライトアンプリフィケーション値が前記パフォーマンス条件を満たすと判定することに応答して、前記メモリサブシステムのキャッシュ領域の
キャッシュデータブロックが耐久性条件を満たすか否かを判定することであって、
第2のデータが、第2の書き込みモードを使用して前記
キャッシュデータブロックに蓄積されることと、
前記
キャッシュデータブロックが前記耐久性条件を満たすと判定することに応答して、前記
キャッシュデータブロックに対する書き込みモードを前記第2の書き込みモードから前記第1の書き込みモードに変更することと、
前記ガベージコレクション動作で前記
キャッシュデータブロックを使用すること
を含む動作を、プロセッサデバイスにより実行される場合に、前記プロセッサデバイスに実施させる命令を含む、非一時的コンピュータ可読媒体。
【請求項13】
前記第1の書き込みモードは、前記
キャッシュデータブロックのメモリセルあたり第1の数のビットで前記
第1のデータを蓄積し、前記第2の書き込みモードは、メモリセルあたり
、前記第1の数のビットよりも少ない第2の数のビットで前記
第2のデータを蓄積
する、請求項
12に記載の非一時的コンピュータ可読媒体。
【請求項14】
前記
ライトアンプリフィケーション値は、1つ以上の新たなデータブロックに一定量のデータを書き込むために前記ガベージコレクション動作で使用される書き込み動作の数に
基づいて特定される、請求項
12に記載の非一時的コンピュータ可読媒体。
【請求項15】
前記耐久性条件は、前記
キャッシュデータブロック上で実施されている前記第1の書き込みモードを使用する書き込み動作の閾値数に対応する、請求項
12に記載の非一時的コンピュータ可読媒体。
【請求項16】
前記第1の書き込みモードは、マルチレベルセル(MLC)モード、トリプルレベルセル(TLC)モード、及びクアッドレベルセル(QLC)モードの内の少なくとも1つを含み、前記第2の書き込みモードは、シングルレベルセル(SLC)モードを含む、請求項
12に記載の非一時的コンピュータ可読媒体。
【請求項17】
前記
キャッシュデータブロックが前記耐久性条件を満たすか否かを判定するために、前記動作は、
前記キャッシュ領域に対する平均耐久性値が前記耐久性条件を満たすか否かを判定することと、
前記キャッシュ領域に対する前記平均耐久性値が前記耐久性条件を満たすと判定することに応答して、前記キャッシュ領域と関連付けられた複数の
追加のデータブロックから前記
キャッシュデータブロックを選択すること
を更に含む、請求項
12に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記平均耐久性値は、
前記複数の追加のデータブロック
のそれぞれの追加のデータブロック上で実施されている前記第1の書き込みモードを使用する書き込み動作の平均数に対応する、請求項
17に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般的に、メモリサブシステムに関し、より具体的には、メモリサブシステムに対するキャッシュ内のデータブロックの書き込みモードを変更することに基づいてメディア管理動作を実施することに関する。
【背景技術】
【0002】
メモリサブシステムは、データを蓄積する1つ以上のメモリデバイスを含み得る。メモリデバイスは、例えば、不揮発性メモリデバイス及び揮発性メモリデバイスであり得る。一般的に、ホストシステムは、メモリサブシステムにデータを蓄積するため、及びメモリデバイスからデータを取得ためにメモリサブシステムを利用し得る。
【0003】
本開示は、以下に与えられる詳細な説明から、及び開示の様々な実装の添付の図面からより完全に理解されるであろう。
【図面の簡単な説明】
【0004】
【
図1】開示の幾つかの実施形態に従ったメモリサブシステムを含む例示的なコンピューティングシステムを説明する。
【
図2】メモリサブシステムに対するキャッシュ内のデータブロックの書き込みモードを変更することに基づいてガベージコレクション動作を実施するための例示的な方法のフロー図である。
【
図3】A~Bは、本開示の幾つかの実施形態に従ったキャッシュ内のデータブロックの書き込みモードを変更することに基づいてガベージコレクション動作を実施している間のメモリサブシステムのデータ構成の例を説明する。
【
図4】メモリサブシステムに対する書き込みモードを変更することに基づいてガベージコレクション動作を実行した後にキャッシュデータブロックの書き込みモードを復元するための例示的な方法のフロー図である。
【
図5】開示の実装が動作し得る例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0005】
本開示の態様は、メモリサブシステムに対するキャッシュ内のデータブロックの書き込みモードを変更することに基づいてメディア管理動作を実施することに向けられている。メモリサブシステムは、ストレージデバイス、メモリモジュール、又はストレージデバイスとメモリモジュールとのハイブリッドであり得る。ストレージデバイス及びメモリモジュールの例は、
図1に関連して以下に説明される。一般的に、ホストシステムは、データを蓄積するメモリデバイス等の1つ以上のコンポーネントを含むメモリサブシステムを利用し得る。ホストシステムは、メモリサブシステムに蓄積されるデータを提供し得、メモリサブシステムから取得されるデータをリクエストし得る。
【0006】
メモリデバイスは不揮発性メモリデバイスであり得る。不揮発性メモリデバイスは、1つ以上のダイのパッケージである。各ダイは、1つ以上のプレーンで構成し得る。幾つかのタイプの不揮発性メモリデバイス(例えば、ネガティブand(NAND)デバイス)では、各プレーンは、物理ブロックのセットで構成される。各ブロックはページのセットで構成される。各ページは、データのビットを蓄積するメモリセルのセットで構成される。NANDデバイス等の幾つかのメモリデバイスでは、ブロックは消去され得る最小の領域であり、ブロック内のページは個々に消去できない。こうしたデバイスでは、消去動作は一度に1ブロックずつ実施される。
【0007】
ブロックのページは、有効なデータ、無効なデータ、又はデータなしを含み得る。無効なデータは、新たなバージョンのデータがメモリデバイス上に蓄積されるために古くなったとマーキングされたデータである。無効なデータは、以前に書き込まれたが、物理から論理(P2L)へのマッピングテーブルにおいてホストシステムにより参照される論理アドレス等、有効な論理アドレスともはや関連付けられなくなったデータを含む。有効なデータは、メモリデバイス上に蓄積されている最新のバージョンのそうしたデータである。メモリサブシステムは、例えば、オペレーティングシステムから受信した情報に基づいて、データを無効としてマーキングし得る。データを含まないページは、以前に消去され、まだ書き込まれていないページを含む。
【0008】
メモリサブシステムコントローラは、ウェアレベリング、リフレッシュ、ガベージコレクション、スクラブ等のメディア管理アルゴリズムに対する動作を実施し得る。ブロックは、有効なデータを含む幾つかのページと無効なデータを含む幾つかのページを有し得る。ブロックを消去して再利用するためにブロック内の全てのページが無効なデータを有するのを待機することを回避するために、“ガベージコレクション”と以下で称するアルゴリズムが、後続の書き込み動作のためにブロックを消去して空きブロックとして解放するために呼び出され得る。ガベージコレクションは、例えば、有効なデータと無効なデータとを含むブロックを選択すること、有効なデータを含むブロック内のページを選択すること、新たな位置(例えば、別のブロックの空きページ)に有効なデータをコピーすること、以前に選択されたページ内のデータを無効としてマーキングすること、及び選択されたブロックを消去することを含むメディア管理動作のセットである。
【0009】
以下、“ガベージコレクション”は、ブロックを選択し、選択されたブロックから別のブロックに有効なデータを再書き込みし、選択されたブロックに蓄積された全ての無効なデータ及び有効なデータを消去することを指す。選択された複数のブロックからの有効なデータは、少数の他のブロックにコピーにされ得、選択されたブロックはその後消去され得る。その結果、消去されたブロックの数は、ホストシステムからの後続のデータを蓄積するためにより多くのブロックが利用可能であるように増加し得る。
【0010】
メモリサブシステムは、データを蓄積するためのホストアプリケーションへの空きデータブロックの継続的な供給を維持又は生成するために、ガベージコレクション動作を実装し得る。ガベージコレクションは、有効なデータをあるデータブロックから別のデータブロックにコピーするための動作である。ソースデータブロック(例えば、そこから有効なデータがコピーされるデータブロック)はその後消去され得、後続のホスト書き込みのための空きブロックとして解放され得る。ガベージコレクション動作中におけるデータブロック内の有効なデータのこの追加の再書き込みは、ライトアンプリフィケーションをもたらす。ライトアンプリフィケーションは、動作寿命を縮め得、メモリサブシステムのパフォーマンスに影響を与え得る。メモリサブシステムは、ユーザー空間として公開されるメモリデバイスの論理サイズを超える幾らかの量の追加のブロックを含み得る。この追加の空間は、通常、オーバープロビジョニング又はOPと称される。ガベージコレクション動作の効率は、しばしば、メモリサブシステムに対するOPの関数であり得る。ガベージコレクション中に、OPからの追加の空間は、ライトアンプリフィケーションを減らすのに役立つ。より多くの量のOPは、データブロックを解放するするためにガベージコレクションがメモリサブシステム内の有効なデータを再書き込みする回数を減らすことによって、ライトアンプリフィケーションを減らし得る。例えば、128ギガバイト(Gb)のユーザー空間のサイズを公開するメモリデバイスでは、物理サイズが140Gbである場合、OPは12Gbである。OP空間が小さいほど、不要なデータのデータブロックをクリアする場合にライトアンプリフィケーションの影響を減らすためにガベージコレクション中に使用され得る追加の空間が少なくなるので、こうした実例では、ガベージコレクション動作は、同じユーザー空間のサイズを有するが、より大きなOPサイズを有するデバイスよりも効率が低下し得る。
【0011】
メモリデバイスは、シングルレベルセル(SLC)メモリ、マルチレベルセル(MLC)メモリ、トリプルレベルセル(TLC)メモリ、又はクアッドレベルセル(QLC)メモリ等のメモリセルの1つ以上のアレイを含み得る。各タイプは、異なるデータ密度を有し得、これは、メモリデバイスのメモリセルごとに蓄積され得るデータの量(例えば、データのビット)に対応する。フラッシュベースのメモリの例を使用すると、トリプルレベルセル(TLC)は3ビットのデータを蓄積し得る一方、シングルレベルセル(SLC)は1ビットのデータを蓄積し得る。したがって、TLCメモリセルを含むメモリデバイスは、SLCメモリセルを含むメモリデバイスよりも高いデータ密度を有するであろう。また、各タイプのメモリセルは、データを蓄積するための異なる耐久性を有し得る。メモリデバイスの耐久性は、データがメモリセルにもはや確実に蓄積されなくなり得る前に、メモリデバイスのメモリセル上で実施される書き込み動作の数又はプログラミング/消去動作の数である。例えば、より低いデータ密度を有するSLCメモリセルは、より高いデータ密度を有するTLCメモリセルよりも高い耐久性閾値を有し得る。幾つかの実例では、SLCメモリセルは、TLCメモリセルの3~40倍の範囲の耐久性閾値を有し得る。したがって、SLCメモリセルは、より少ない合計データを蓄積し得るが、より長い期間使用され得る一方、TLCメモリセルは、より多くの合計データを蓄積し得るが、より短い期間使用され得る。
【0012】
従来のメモリサブシステムは、OP空間の一部分が他の目的のためにリザーブされ得るようにメモリデバイスを更に構成し得る。例えば、OPの幾らかの部分は、ファームウェア関連の情報を蓄積するためにリザーブされ得る。同様に、OP空間の一部分は、I/O動作に対する改善されたパフォーマンスを提供するために、静的キャッシュとしてプロビジョニングされ得る。リザーブ領域が割り当てられた後のOPの残部は、通常、オペレーティングOPと称される。したがって、キャッシュ領域のサイズを増加させることは、オペレーティングOPを減少させ得る。静的キャッシュ領域のためにリザーブされたブロックは、ユーザーデータをメモリデバイスに書き込むためにより高い耐久性閾値を提供するために、低いデータ密度のメモリセルで構成され得る。例えば、QLCとして構成可能なブロックは、SLC、MLC、又はTLC等のより低いデータ密度のメモリセルで構成され得る。同様に、TLCとして構成可能なブロックは、SLC又はMLC等のより低いデータ密度のメモリセルで構成され得る。一旦構成されると、静的キャッシュに対してリザーブされたブロックは、通常、デバイスの寿命中にこのように構成され、より高いデータ密度を有するメモリセルとして後で再構成されない。
【0013】
このように構成された従来のメモリサブシステムは、より低いデータ密度に起因してより高い耐久性を有するメモリセルでキャッシュを割り当てることに起因して、ホストI/O動作に長期的なパフォーマンス上の利点を提供し得る。これらの構成は、しかしながら、ガベージコレクション動作中に利用可能なオペレーティングOPが減少することに起因して、ライトインテンシブワークロードに対してより低いランダム書き込みパフォーマンスを有し得る。ライトインテンシブワークロードのこうした期間中に、メモリデバイスのユーザー空間全体とオペレーティングOPがいっぱいになり得、このことは、空きブロックバランスを維持するためのガベージコレクションをトリガーすることをもたらし得る。この状態は通常、“定常状態”条件と称され、ガベージコレクションがフォアグラウンドで、又はホストデータの書き込みと同時に発生する。従来のメモリサブシステムは、ガベージコレクション動作のための静的キャッシュ領域へのアクセスを提供しない。その結果、減少したオペレーティングOPは、ライトアンプリフィケーションのレベルが大幅に増加し、定常状態条件下でのライトインテンシブワークロードに対するランダム書き込みパフォーマンスの低下をもたらす。
【0014】
本開示の態様は、メモリサブシステムに対するキャッシュ内のデータブロックの書き込みモードを変更することに基づいてガベージコレクション動作を実施することによって、上記及びその他の欠陥に対処する。キャッシュマネージャーは、ワークロードアクティビティ(例えば、観測されたライトアンプリフィケーション)を監視し得、定常状態条件期間中は、定常状態条件が治まるまで静的キャッシュ領域がオペレーティングOPを補足することを可能にし得る。例えば、ガベージコレクション動作が実行されている定常状態条件中、メモリデバイスに対する現在のワークロード条件は、ライトアンプリフィケーションの観点から評価され得る。定常状態のワークロード中に、測定されたライトアンプリフィケーションが閾値パフォーマンス条件を満たすのに十分なレベルまで上昇した場合、キャッシュマネージャーは、オペレーティングOPを補足するために静的キャッシュ領域を使用するか否かを判定し得る。また、幾つかの実装では、キャッシュマネージャーは、オペレーティングOPを補足するために静的キャッシュ領域を使用するか否かを判定するために、状態キャッシュ内のデータブロックの耐久性を評価し得る。そうした実例では、より高いデータ密度モードからより低いデータ密度モードへのセル劣化の比率の関数である静的キャッシュの耐久性閾値が使用され得る。幾つかの実装では、キャッシュマネージャーは、キャッシュ領域内のデータブロックの書き込みモードをSLCから、より高いデータ密度を提供するモード(例えば、MLC、TLC、QLC等)に一時的に変更し得、キャッシュ領域を定常状態条件中にガベージコレクション動作に利用可能なキャッシュ領域を作り得る。定常状態条件が落ち着いた場合(例えば、ライトアンプリフィケーションが低下した場合)、及び/又は静的キャッシュ領域内のデータブロックが耐久性条件を満たさない場合、キャッシュマネージャーは、キャッシュ領域の書き込みモードをSLCに戻し得、ガベージコレクション動作が通常のワークロード下でキャッシュ領域を利用することを妨げる制約に回復し得る。
【0015】
本開示の利点は、書き込みパフォーマンスの向上、並びにライトインテンシブワークロードの期間中のフォアグラウンドガベージコレクションの効率の向上を含むが、これらに限定されない。キャッシュ内のデータブロックの書き込みモードをより高いデータ密度を有するモードに切り替えることは、ライトインテンシブワークロード期間中のガベージコレクションに対するOPの増加を提供し得、それらの期間中のライトアンプリフィケーションを低減し得る。また、静的キャッシュをガベージコレクションでインテリジェントに使用可能にするためにワークロードの下でライトアンプリフィケーションを監視することによって、パフォーマンスが最も低下するそれらの期間にモード切り替えを制約することにより、キャッシュ領域のブロックに対するいずれの追加の耐久性の影響も最小限にし得る。更に、オペレーティングOPを補足するためにキャッシュ領域を利用することによって、キャッシュに対して意図的に割り当てられるブロックの数はメモリサブシステムの寿命中に増加し得る。したがって、キャッシュサイズを大きくすることの利点は、メモリサブシステムの早期の寿命中のライトインテンシブワークロードに対するより大きなオペレーティングOPの利点を達成しながら、メモリサブシステムの寿命全体に渡って実現され得る(例えば、通常のワークロード条件中の書き込みパフォーマンスを向上させ得る)。
【0016】
図1は、本開示の幾つかの実施形態に従ったメモリサブシステム110を含む例示的なコンピューティングシステム100を説明する。メモリサブシステム110は、1つ以上の揮発性メモリデバイス(例えば、メモリデバイス140)、1つ以上の不揮発性メモリデバイス(例えば、メモリデバイス130)、又はそれらの組み合わせ等の媒体を含み得る。
【0017】
メモリサブシステム110は、ストレージデバイス、メモリモジュール、又はストレージデバイスとメモリモジュールとのハイブリッドであり得る。ストレージデバイスの例は、ソリッドステートドライブ(SSD)、フラッシュドライブ、ユニバーサルシリアルバス(USB)フラッシュドライブ、組み込みマルチメディアコントローラ(eMMC)ドライブ、ユニバーサルフラッシュストレージ(UFS)ドライブ、セキュアデジタル(SD)カード、及びハードディスクドライブ(HDD)を含む。メモリモジュールの例は、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、及び様々なタイプの不揮発性デュアルインラインメモリモジュール(NVDIMM)を含む。
【0018】
コンピューティングシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイス、車両(例えば、航空機、ドローン、列車、自動車、若しくはその他の輸送手段)、モノのインターネット(IoT)対応デバイス、組み込みコンピュータ(例えば、車両、産業用機器、若しくはネットワーク化された商用デバイス内に含まれるもの)等のコンピューティングデバイス、又はメモリ及び処理デバイスを含むそうしたコンピューティングデバイスであり得る。
【0019】
コンピューティングシステム100は、1つ以上のメモリサブシステム110に結合されたホストシステム120を含み得る。幾つかの実施形態では、ホストシステム120は、異なるタイプのメモリサブシステム110に結合される。
図1は、1つのメモリサブシステム110に結合されたホストシステム120の一例を説明する。本明細書で使用するとき、“に結合される”又は“と結合される”は、一般的に、電気的、光学的、及び磁気的等の接続を含む有線又は無線の間接的通信接続又は(例えば、介在するコンポーネント若しくはデバイスのない)直接的通信接続であり得るコンポーネント間の接続を指す。
【0020】
ホストシステム120は、プロセッサチップセットと、プロセッサチップセットにより実行されるソフトウェアスタックとを含み得る。プロセッサチップセットは、1つ以上のコア、1つ以上のキャッシュ、メモリコントローラ(例えば、NVDIMMコントローラ)、及びストレージプロトコルコントローラ(例えば、PCIeコントローラ、SATAコントローラ)を含み得る。ホストシステム120は、例えば、メモリサブシステム110にデータを書き込み、メモリサブシステム110からデータを読み出すために、メモリサブシステム110を使用する。
【0021】
ホストシステム120は、物理ホストインターフェースを介してメモリサブシステム110に結合され得る。物理ホストインターフェースの例は、シリアルアドバンスドテクノロジーアタッチメント(SATA)インターフェース、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、ファイバーチャネル、シリアルアタッチドSCSI(SAS)、スモールコンピュータシステムインターフェース(SCSI)、ダブルデータレート(DDR)メモリバス、デュアルインラインメモリモジュール(DIMM)インターフェース(例えば、ダブルデータレート(DDR)をサポートするDIMMソケットインターフェース)、オープンNANDフラッシュインターフェース(ONFI)、ダブルデータレート(DDR)、低電力ダブルデータレート(LPDDR)、又はその他の任意のインターフェースを含むが、これらに限定されない。物理ホストインターフェースは、ホストシステム120とメモリサブシステム110との間でデータを送信するために使用され得る。ホストシステム120は、メモリサブシステム110がPCIeインターフェースによりホストシステム120と結合された場合にコンポーネント(例えば、メモリデバイス130)にアクセスするために、NVM Express(NVMe)インターフェースを更に利用し得る。物理ホストインターフェースは、メモリサブシステム110とホストシステム120との間で制御、アドレス、データ、及びその他の信号を渡すためのインターフェースを提供し得る。
図1は、例としてメモリサブシステム110を説明している。一般的に、ホストシステム120は、同じ通信接続、複数の別個の通信接続、及び/又は通信接続の組み合わせを介して複数のメモリサブシステムにアクセスし得る。
【0022】
メモリデバイス130、140は、異なるタイプの不揮発性メモリデバイス及び/又は揮発性メモリデバイスの任意の組み合わせを含み得る。揮発性メモリデバイス(例えば、メモリデバイス140)は、ダイナミックランダムアクセスメモリ(DRAM)及び同期型ダイナミックランダムアクセスメモリ(SDRAM)等のランダムアクセスメモリ(RAM)であり得るが、これらに限定されない。
【0023】
不揮発性メモリデバイス(例えば、メモリデバイス130)の幾つかの例は、不揮発性メモリセルのクロスポイントアレイである3次元クロスポイント(“3Dクロスポイント”)等のネガティブand(NAND)タイプのフラッシュメモリ及びライトインプレースメモリを含む。不揮発性メモリのクロスポイントアレイは、積み重ね可能なクロスグリッドデータアクセスアレイと組み合わせて、バルク抵抗の変化に基づいてビットストレージを実施し得る。また、多くのフラッシュベースのメモリとは対照的に、クロスポイント不揮発性メモリは、不揮発性メモリセルを事前に消去せずに不揮発性メモリセルがプログラミングされ得るライトインプレース動作を実施し得る。NANDタイプのフラッシュメモリは、例えば、2次元NAND(2D NAND)及び3次元NAND(3D NAND)を含む。
【0024】
メモリデバイス130の各々は、メモリセルの1つ以上のアレイを含み得る。一タイプのメモリセル、例えば、シングルレベルセル(SLC)は、セルごとに1ビットを蓄積し得る。マルチレベルセル(MLC)、トリプルレベルセル(TLC)、及びクアッドレベルセル(QLC)等の他のタイプのメモリセルは、セルごとに複数のビットを蓄積し得る。幾つかの実施形態では、メモリデバイス130の各々は、SLC、MLC、TLC、QLC、又はそれらの任意の組み合わせ等のメモリセルの1つ以上のアレイを含み得る。幾つかの実施形態では、特定のメモリデバイスは、メモリセルのSLC部分、及びMLC部分、TLC部分、又はQLC部分を含み得る。メモリデバイス130のメモリセルは、データを蓄積するために使用されるメモリデバイスの論理ユニットを指し得るページとしてグループ化され得る。幾つかのタイプのメモリ(例えば、NAND)では、ページは、ブロックを形成するようにグループ化され得る。
【0025】
NANDタイプのメモリ(例えば、2D NAND、3D NAND)及び不揮発性メモリセルの3Dクロスポイントアレイ等の不揮発性メモリデバイスが説明されているが、メモリデバイス130は、リードオンリーメモリ(ROM)、相変化メモリ(PCM)、自己選択メモリ、その他のカルコゲナイドベースのメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、磁気ランダムアクセスメモリ(MRAM)、スピン転送トルク(STT)-MRAM、導電性ブリッジRAM(CBRAM)、抵抗変化型ランダムアクセスメモリ(RRAM)、酸化物ベースRRAM(OxRAM)、ネガティブor(NOR)フラッシュメモリ、及び電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)等の任意のその他のタイプの不揮発性メモリに基づき得る。
【0026】
メモリサブシステムコントローラ115(又は簡単にするためにコントローラ115)は、メモリデバイス130でのデータの読み出し、データの書き込み、又はデータの消去等の動作及び(例えば、コントローラ116によりコマンドバス上でスケジュールリングされたコマンドに応答した)その他のそうした動作を実施するために、メモリデバイス130と通信し得る。メモリサブシステムコントローラ115は、1つ以上の集積回路及び/若しくはディスクリートコンポーネント、バッファメモリ、又はそれらの組み合わせ等のハードウェアを含み得る。ハードウェアは、本明細書に説明する動作を実施するための専用の(すなわち、ハードコードされた)ロジックを備えたデジタル回路を含み得る。メモリサブシステムコントローラ115は、マイクロコントローラ、特殊目的ロジック回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等)、又はその他の適切なプロセッサであり得る。
【0027】
メモリサブシステムコントローラ115は、ローカルメモリ119内に蓄積された命令を実行するように構成された処理デバイス117(プロセッサ)を含み得る。説明する例では、メモリサブシステムコントローラ115のローカルメモリ119は、メモリサブシステム110とホストシステム120との間の通信の処理を含む、メモリサブシステム110の動作を制御する様々なプロセス、動作、論理フロー、及びルーチンを実施するための命令を蓄積するように構成された組み込みメモリを含む。
【0028】
幾つかの実施形態では、ローカルメモリ119は、メモリポインタ、フェッチされたデータ等を蓄積するメモリレジスタを含み得る。ローカルメモリ119は、マイクロコードを蓄積するためのリードオンリーメモリ(ROM)をも含み得る。
図1の例示的なメモリサブシステム110は、メモリサブシステムコントローラ115を含むものとして説明されているが、本開示の別の実施形態では、メモリサブシステム110は、メモリサブシステムコントローラ115を含まず、代わりに、(例えば、外部ホストによって、又はメモリサブシステムとは別のプロセッサ若しくはコントローラによって提供される)外部制御に依存し得る。
【0029】
一般的に、メモリサブシステムコントローラ115は、ホストシステム120からコマンド又は動作を受信し得、コマンド又は動作を、メモリデバイス130及び/又はメモリデバイス140への所望のアクセスを達成するための命令又は適切なコマンドに変換し得る。メモリサブシステムコントローラ115は、ウェアレベリング動作、ガベージコレクション動作、誤り検出及び誤り訂正コード(ECC)動作、暗号化動作、キャッシング動作、及びメモリデバイス130と関連付けられた論理アドレス(例えば、論理ブロックアドレス(LBA)、名前空間)と物理アドレス(例えば、物理ブロックアドレス)との間のアドレス変換等のその他の動作を担当し得る。メモリサブシステムコントローラ115は、物理ホストインターフェースを介してホストシステム120と通信するためのホストインターフェース回路を更に含み得る。ホストインターフェース回路は、ホストシステムから受信したコマンドを、メモリデバイス130及び/又はメモリデバイス140にアクセスするためのコマンド命令に変換し得ると共に、メモリデバイス130及び/又はメモリデバイス140と関連付けられた応答を、ホストシステム120に対する情報に変換し得る。
【0030】
幾つかの実装では、メモリサブシステム110は、ストライピングスキームを使用し得、それに従えば、ペイロードがダイのサブセットを通じて分散される一方、残りの1つ以上のダイが誤り訂正情報(パリティビット等)を蓄積するために使用されるように、あらゆるデータペイロード(例えば、ユーザデータ)は、メモリデバイス130(例えば、NANDタイプのフラッシュメモリデバイス)の複数のダイを利用する。したがって、ストライピングスキームを使用してメモリデバイスのダイのセットに渡って分散されたブロックのセットは、本明細書では“スーパーブロック”と称される。
【0031】
メモリサブシステム110はまた、説明されていない追加の回路又はコンポーネントを含み得る。幾つかの実施形態では、メモリサブシステム110は、キャッシュ又はバッファ(例えば、DRAM)と、メモリサブシステムコントローラ115からアドレスを受信し得、メモリデバイス130にアクセスするためにアドレスをデコードし得るアドレス回路(例えば、行デコーダ及び列デコーダ)とを含み得る。
【0032】
幾つかの実施形態では、メモリデバイス130は、メモリデバイス130の1つ以上のメモリセル上で動作を実行するためにメモリサブシステムコントローラ115と連動して動作するローカルメディアコントローラ135を含む。外部コントローラ(例えば、メモリサブシステムコントローラ115)は、メモリデバイス130を外部で管理し得る(例えば、メモリデバイス130上でメディア管理動作を実施し得る)。幾つかの実施形態では、メモリデバイス130はマネージドメモリデバイスであり、これは、同じメモリデバイスパッケージ内のメディア管理のためにローカルコントローラ(例えば、ローカルコントローラ135)と組み合わされたローメモリデバイスである。マネージドメモリデバイスの例は、マネージドNAND(MNAND)デバイスである。
【0033】
メモリサブシステム110は、メモリデバイス130に蓄積されたデータブロックに対するキャッシュ内のデータブロックの書き込みモードを変更することに基づいてメディア管理動作、例えば、ガベージコレクション動作を実施するために使用され得るキャッシュマネージャーコンポーネント113を含む。幾つかの実施形態では、コントローラ115は、キャッシュマネージャーコンポーネント113の少なくとも一部分を含む。例えば、コントローラ115は、本明細書に説明する動作を実施するためのローカルメモリ119内に蓄積された命令を実行するように構成されたプロセッサ117(処理デバイス)を含み得る。幾つかの実施形態では、キャッシュマネージャーコンポーネント113は、ホストシステム120、アプリケーション、又はオペレーティングシステムの一部である。
【0034】
キャッシュマネージャーコンポーネント113は、メモリサブシステム110のワークロード条件(例えば、観測されたライトアンプリフィケーション)を監視し得、ガベージコレクション動作のパフォーマンスがパフォーマンス条件を満たす場合(例えば、メモリサブシステム110が定常状態条件下で動作していることを、観測されたライトアンプリフィケーションが指し示す場合)、キャッシュマネージャーコンポーネント113は、メモリデバイス130のキャッシュ領域内のブロックが耐久性条件を満たすか否かを判定し得る。両方の条件が満たされる場合、キャッシュマネージャーコンポーネント113は、キャッシュ領域内のデータブロックに対する書き込みモードを、低データ密度モード(例えば、SLC)からより高いデータ密度(例えば、MLC、TLC、QLC等。以下、XLCと総称する)を有する書き込みモードに変更し得、該データブロックをガベージコレクション動作で使用し得る。また、定常状態のパフォーマンス条件がもはや存在しないことをワークロード条件が一旦指し示すと、キャッシュマネージャーコンポーネント113は、キャッシュ領域内の後続のデータブロックに対する書き込みモードを、それらの元のデータ密度に戻し得る(例えば、SLCに戻し得る)。キャッシュマネージャーコンポーネント113の動作に関する更なる詳細は、以下に説明される。
【0035】
図2は、メモリサブシステムに対するキャッシュ内のデータブロックの書き込みモードを変更することに基づいてガベージコレクション動作を実施するための例示的な方法200のフロー図である。方法200は、ハードウェア(例えば、処理デバイス、回路、専用ロジック、プログラミング可能ロジック、マイクロコード、デバイスのハードウェア、集積回路等)、ソフトウェア(例えば、処理デバイス上で実行する又は実行される命令)、又はそれらの組み合わせを含み得る処理ロジックによって実施され得る。幾つかの実施形態では、方法200は、
図1のキャッシュマネージャーコンポーネント113によって実施される。特定のシーケンス又は順序で示されているが、特に明記しない限り、プロセスの順序は修正され得る。したがって、説明する実施形態は例としてのみ理解すべきであり、説明するプロセスは異なる順序で実施され得、幾つかのプロセスは並行して実施され得る。また、様々な実施形態では、1つ以上のプロセスが省略され得る。したがって、あらゆる実施形態において全てのプロセスが必要とされるわけではない。その他のプロセスフローも可能である。
【0036】
図2に示すように、動作205において、処理ロジックは、メモリサブシステムの1つ以上のデータブロック上でガベージコレクション動作を実施する。データは、データブロックのメモリセルごとに特定の数のビットを使用してデータを蓄積する書き込みモードを使用して、メモリサブシステムの1つ以上のブロックに蓄積され得る。幾つかの実装では、データは、メモリサブシステムのキャッシュ領域内に蓄積されるブロックよりも高いデータ密度を有する書き込みモードを使用して蓄積され得る。説明する一例では、データは、QLCメモリセルで構成されたブロックに蓄積され得る一方、キャッシュ領域内に蓄積されるブロックは、(各々がQLCメモリセルよりも低いデータ密度を有するので)SLC、MLC、又はTLCメモリセルで構成され得る。説明する別の例では、データは、TLCメモリセルで構成されたブロックに蓄積され得る一方、キャッシュ領域内に蓄積されるブロックは、(各々がTLCメモリセルよりも低いデータ密度を有するので)SLC又はMLCメモリセルで構成され得る。
【0037】
動作210において、処理ロジックは、ガベージコレクション動作がパフォーマンス条件を満たすか否かを判定する。幾つかの実施形態では、パフォーマンス条件は、一定量のデータを1つ以上の新たなデータブロックに書き込むためにガベージコレクション動作で使用される書き込み動作の数(例えば、ガベージコレクション中に観測されるライトアンプリフィケーション)に基づき得る。言い換えれば、パフォーマンス条件は、有効なデータをあるブロックから別のブロックにコピーするためにガベージコレクション中に発生した追加の書き込みの数に基づき得る。処理ロジックは、観測されたライトアンプリフィケーションに基づいて定常状態条件が存在するか否かを判定するために、メモリサブシステムのワークロード条件を監視し得る。上記のように、メモリサブシステムは、不要なデータのデータブロックをクリアするために新たなホストデータを書き込むことと並行してガベージコレクション動作が必要になった場合に、データ書き込み量が多い期間に定常状態にあり得る。例えば、ガベージコレクション動作時に観測されたライトアンプリフィケーションの測定値が閾値を満たす場合、パフォーマンス条件が満たされ得る。動作210において、パフォーマンス条件が満たされていると処理ロジックが判定した場合、処理は動作215に続く。そうでない場合、処理は動作230に進む。
【0038】
動作215において、処理ロジックは、メモリサブシステムのキャッシュ領域のデータブロックが耐久性条件を満たすか否かを判定する。上記のように、幾つかの実装では、ガベージコレクション動作によりアクセスされるデータブロックのデータ密度よりも低いデータ密度を有する第2の書き込みモードを使用して、キャッシュ領域のデータブロックにデータが蓄積され得る。言い換えれば、第2の書き込みモードは、動作205において指定された第1の書き込みモード書き込みを使用して書き込まれたブロックに対するビットの数よりも少ないデータブロックのメモリセルあたりのビットの数を使用してデータを蓄積し得る。例えば、第1の書き込みモードがQLCである場合、第2の書き込みモードは、各々がQLCよりも低いデータ密度を有するのでSLC、MLC、又はTLCであり得る。動作215において、処理ロジックは、メモリサブシステムのキャッシュ領域に割り当てられたデータブロックが、より高いデータ密度の書き込みモードの内の1つと関連付けられた閾値を満たす耐久性値を有するか否かを判定し得る。例えば、キャッシュデータブロックの耐久性をTLCメモリセルに対する高い閾値耐久性値と処理ロジックが比較し得る場合である。キャッシュデータブロックの観測された耐久性がTLC耐久性閾値よりも小さい場合、処理ロジックは、キャッシュデータブロックが耐久性条件を満たし、TLCモードで使用され得ると判定し得る。データブロックが耐久性条件を満たすと処理ロジックが判定した場合、処理は動作220に続く。それ以外の場合、処理は動作230に進む。
【0039】
動作220において、処理ロジックは、キャッシュ領域のデータブロックに対する書き込みモードを第2の書き込みモードから第1の書き込みモードに変更する。例えば、動作215において、キャッシュ領域のデータブロックが、より高いデータ密度の書き込みモードと関連付けられた最大耐久性閾値よりも低い観測された耐久性を有すると処理ロジックが判定した場合、処理ロジックは、その現在の書き込みモード(例えば、SLC)からより高いデータ密度を有する書き込みモード(例えば、MLC、TLC等)にキャッシュ領域のデータブロックの書き込みモードを変更し得る。動作225において、処理ロジックは、ガベージコレクション動作でキャッシュ領域のデータブロックを使用する。言い換えると、処理ロジックは、新たなより高いデータ密度の書き込みモード(例えば、XLCモードの内の1つ)を使用して、ガベージコレクション動作中にキャッシュ領域のデータブロックにデータをここで書き込み得る。
【0040】
動作210において、ガベージコレクション動作がパフォーマンス条件を満たさない(例えば、メモリサブシステムが定常状態のワークロード条件を経験していない)と処理ロジックが判定した場合、処理は、ガベージコレクション動作がキャッシュ領域の外部からのデータブロックを使用する(例えば、ガベージコレクション動作がキャッシュ領域からのデータブロックを使用しない)ブロック230に進む。同様に、動作215において、キャッシュ領域内のどのデータブロックも耐久性条件を満たさない(例えば、キャッシュ内のデータブロックの各々が、メモリサブシステムにより使用されるより高いデータ密度の書き込みモードと関連付けられた閾値を超える観測された耐久性値を有する)と処理ロジックが判定した場合、処理は、ガベージコレクション動作がキャッシュ領域の外部からのデータブロックを使用するブロック230に進む。
【0041】
上記の動作に関する更なる詳細は、
図3A及び
図3Bに関連して以下に説明される。
【0042】
図3A~
図3Bは、本開示の幾つかの実施形態に従ったキャッシュ内のデータブロックの書き込みモードを変更することに基づいてガベージコレクション動作を実施している間のメモリサブシステムのデータ構成の例を説明する。幾つかの実施形態では、ガベージコレクション動作は、
図2に関して上で説明し、
図4に関して以下で説明するように、
図1のキャッシュマネージャーコンポーネント113によって実施され得る。
【0043】
図3Aに示すように、データ構成300は、ユーザデータブロック301、ファームウェアリザーブデータブロック302、キャッシュデータブロック303、及びオペレーティングOPデータブロック304を含み得る。幾つかの実装では、データ構成300のOP領域全体は。ファームウェアリザーブデータブロック302、キャッシュデータブロック303、及びオペレーティングOPデータブロック304(例えば、ユーザデータブロック301に割り当てられないデータブロック)を含み得る。上記のように、ファームウェアリザーブデータブロック302及びキャッシュデータブロック303は、データ構成300のOP領域全体から割り当てられ得、それによって、オペレーティングOPデータブロック304のみ含むようにオペレーティングOP領域305を縮小する。また、上記のように、キャッシュデータブロック303に割り当てられたデータブロック(例えば、データブロック306)は、低密度の書き込みモード(例えば、SLC)を使用して書き込まれるように構成され得る。
【0044】
上記のように、ホストデータは、書き込まれるメモリサブシステムによって受信されるので、最初にキャッシュデータブロック303をキャッシュするように書き込まれ得、その後、ユーザデータブロック310内のデータブロックに移動させられ得る。データがメモリサブシステムに書き込み続けられると、キャッシュデータブロック303がいっぱいになり始め得、その後受信されたホストデータがユーザデータブロック301に直接書き込まれるようになる。書き込みが処理され続けられると、利用可能な空間が減少し、不要なデータのデータブロックをクリアするためにガベージコレクション動作が必要になる。上記のように、書き込み量が多い期間中、メモリサブシステムは、新たなデータの書き込みと同時にガベージコレクションが発生する定常状態条件を経験し得る。
【0045】
図2に関して上に説明したように、ガベージコレクション動作中、メモリサブシステムのワークロードパフォーマンス(例えば、観測されたライトアンプリフィケーション)は、定常状態条件が存在するか否か(例えば、それがパフォーマンス条件を満たすか否か)を評価するために監視される。ガベージコレクション動作時のデータブロックのライトアンプリフィケーションが閾値以上の場合、ガベージコレクション動作はパフォーマンス条件を満たし得る。ライトアンプリフィケーションは、上に説明したように、1つ以上の新たなデータブロックに一定量のデータを書き込むためにガベージコレクション動作で使用される書き込み動作の数に基づく。例えば、1Gbのホストデータをメモリサブシステムに書き込むために、ガベージコレクションは、1Gbのホストデータよりも遥かに多くの書き込みをもたらす複数の書き込み又は再書き込み動作を含む場合があり得る。したがって、ガベージコレクション中に1Gbのホストデータを処理するために合計2Gbのデータを効果的に書き込むことは、2のライトアンプリフィケーション値をもたらし得る。定常状態条件中、書き込み動作の数は、書き込まれるホストデータの量の大きな乗数であり得る。
【0046】
ガベージコレクション動作がパフォーマンス条件を満たす場合(例えば、ガベージコレクションのライトアンプリフィケーションに基づいて定常状態条件が観測される場合)、キャッシュデータブロック303は、オペレーティングOP領域305を補足するために使用され得るものがあるか否かを判定するために分析され得る。キャッシュマネージャーは、該データブロックがXLC書き込みモードに対する耐久性条件を満たすか否かを判定するために、キャッシュデータブロック303からデータブロック306をその後選択し得る。幾つかの実装では、耐久性条件は、データブロック306上で実施されているXLC書き込みモードを使用する書き込み動作の閾値数に対応する。言い換えれば、耐久性条件は、データブロックのメモリセルが信頼できなくなる前にXLC書き込みモードに対して使用され得るプログラミング/消去サイクルの最大数を表し得る。
【0047】
例えば、ユーザデータブロック301及びオペレーティングOPデータブロック304がTLC書き込みモードを使用するように構成されている場合、キャッシュマネージャーは、データブロック306に対する観測された耐久性値をTLC書き込みモードに対する耐久性閾値と比較し得る。同様に、その他のより高いデータ密度の書き込みモード(例えば、MLC、QLC等)がメモリサブシステムにより使用されている場合、キャッシュマネージャーは、使用されている書き込みモードに対する耐久性閾値を使用し得る。耐久性条件は、それ故、キャッシュ内のデータブロックが、該書き込みモードに切り替わる前に、より高密度の書き込みモードに適することを保証し得る。
【0048】
幾つかの実装では、キャッシュマネージャーは、キャッシュデータブロック303内の全てのデータブロックに対する平均耐久値が耐久条件を満たすか否かを最初に判定することによって、データブロック306が耐久条件を満たすか否かを判定し得る。キャッシュデータブロック303全体に対する平均耐久性が耐久性条件を満たす場合、キャッシュマネージャーは、データブロック306をその後選択し得る。平均耐久性値が耐久性条件を満たさない場合、このことは、XLC書き込みモードをサポートし得るキャッシュデータブロック303内にデータブロックがないことを指し示し得る。そうした実例では、キャッシュデータブロック303は、キャッシュ動作に対してのみ使用され得、その後の任意のガベージコレクション動作に対する何れの書き込みモードの切り替えも無効化され得、又はバイパスされ得る。
【0049】
ガベージコレクション動作がパフォーマンス条件を満たし(例えば、ライトアンプリフィケーションが定常状態のガベージコレクション中に閾値以上であり)、キャッシュデータブロック303内の少なくとも1つのデータブロックが耐久性条件を満たす(例えば、データブロック306がXLC書き込みモードをサポートし得る)ことをキャッシュマネージャーが判定した場合、キャッシュマネージャーは、データブロック306の書き込みモードを変更する(例えば、XLC書き込みモードをサポートするようにデータブロック306に対するデータ密度を増加させる)ために変更書き込みモード340を実施し得る。
【0050】
変更書き込みモード340は、
図3Bのデータ構成350をもたらすようにデータ構成300をその後修正し得る。
図3Bに示すように、データ構成350は、ユーザデータブロック351、ファームウェアリザーブデータブロック352、キャッシュデータブロック353、及びオペレーティングOPデータブロック354を含み得る。データ構成300と同様に、データ構成350のOP領域全体は、ファームウェアリザーブデータブロック352、キャッシュデータブロック353、及びオペレーティングOPデータブロック354(例えば、ユーザデータブロック351に割り当てられないデータブロック)を含む。しかしながら、変更書き込みモード340を実施することは、(例えば、一時オペレーティングOP領域355により説明されるように)キャッシュデータブロック353の内の幾つか又は全てを含むようにオペレーティングOP領域を増加させ得る。また、変更書き込みモード340を実施した結果、キャッシュデータブロック353に割り当てられたデータブロック(例えば、データブロック356)は、より高密度の書き込みモード(例えば、XLC)を使用して書き込まれるように構成され得る。幾つかの実装では、キャッシュデータブロック353内のデータブロックの内の幾つかは、耐久性条件を満たさないことがある(例えば、幾つかのブロックは、XLC閾値を超える耐久性値を有し得る)。こうした実例では、これらのブロックは、ガベージコレクションに対するXLCモードでの使用を制限され得る。
【0051】
ガベージコレクション動作が継続すると共に、キャッシュマネージャーは、定常状態がいつ終了したかを判定するために、メモリサブシステムの進行中のワークロード条件(例えば、観測されたライトアンプリフィケーション)を監視し続け得る。後続のガベージコレクション動作が確立されたパフォーマンス条件を満たさない(例えば、観測されたライトアンプリフィケーションが定常状態のガベージコレクション中に閾値を下回った)とキャッシュマネージャーが判定した場合、キャッシュデータブロック353内のデータブロックに対する書き込みモードを以前の状態に戻す(例えば、書き込みモードの構成をSLCモードに復元する)ために、復元書き込みモード360が実施され得る。したがって、キャッシュ内のデータブロックは、定常状態条件の間はXLCモードで使用され得るが、それらの条件が終了した場合にはSLCモードに復元され得る。キャッシュデータブロックの書き込みモードをそれらの元の構成に復元することは、
図4を参照して以下で詳細に説明される。
【0052】
例示の目的で、
図3A~
図3Bは、キャッシュデータブロック306の書き込みモードをSLCからXLC書き込みモードに切り替えることを描写し、本開示の様々な実装の態様では、その他の書き込みモードを使用するように実装され得ることに留意されたい。例えば、幾つかの実装では、キャッシュデータブロック306は、最初にMLCメモリセルで構成され得、その後、TLC又はQLCメモリセルに切り替えられ得る。
【0053】
図4は、本開示の幾つかの実施形態に従ったメモリサブシステムに対する書き込みモードを変更することに基づいてガベージコレクション動作を実施した後にキャッシュデータブロックの書き込みモードを復元するための例示的な方法400のフロー図である。方法400は、ハードウェア(例えば、処理デバイス、回路、専用ロジック、プログラミング可能なロジック、マイクロコード、デバイスのハードウェア、集積回路等)、ソフトウェア(例えば、処理デバイス上で実行する又は実行される命令)、又はそれらの組み合わせを含み得る処理ロジックによって実施され得る。幾つかの実施形態では、方法400は、
図1のキャッシュマネージャーコンポーネント113によって実施される。特定のシーケンス又は順序で示されているが、特に明記しない限り、プロセスの順序は修正され得る。したがって、説明する実施形態は例としてのみ理解すべきであり、説明するプロセスは異なる順序で実施され得、幾つかのプロセスは並行して実施され得る。また、様々な実施形態では、1つ以上のプロセスが省略され得る。したがって、あらゆる実施形態で全てのプロセスが必要とされるわけではない。その他のプロセスフローも可能である。
【0054】
図4に示すように、動作405において、処理ロジックは、データブロックに蓄積されるビットの数を第1の数から第2の数に変更することによって、メモリデバイスと関連付けられたデータブロックのグループ上でのガベージコレクション動作が、メモリデバイスと関連付けられたキャッシュ領域のデータブロックを使用していると判定し、第1の数は第2の数よりも小さい。
図2及び
図3A~3Bに関して上記したように、幾つかの実装では、ガベージコレクション動作は、データブロックの書き込みモードをデータブロックに僅かなビットが蓄積される低データ密度モードから、データブロックにより多くのビットが蓄積されるより高いデータ密度モードに切り替えることによって、キャッシュ領域のデータブロックを使用し得る。例えば、SLCメモリセルで構成されたデータブロックの書き込みモードは、XLC書き込みモードの内の1つに切り替えられ得る。同様に、MLCメモリセルで構成されたデータブロックの書き込みモードは、TLC又はQLC書き込みモードに切り替えられ得る。
【0055】
動作410において、処理ロジックは、ガベージコレクション動作がパフォーマンス要件を満たしていると判定する。幾つかの実装では、パフォーマンス要件は、一定量のデータを1つ以上の新たなデータブロックに書き込むためにガベージコレクション動作で使用される書き込み動作の数(例えば、ガベージコレクション中に観測されるライトアンプリフィケーション)に基づき得る。処理ロジックは、観測されたライトアンプリフィケーションに基づいて、定常状態条件がもはや存在しなくなった時期を判定するために、メモリサブシステムのワークロード条件を監視し得る。例えば、ガベージコレクション動作時に観測されたライトアンプリフィケーションの測定値が高い閾値を下回った場合、パフォーマンス要件は満たされ得る。
【0056】
動作415において、ガベージコレクション動作がパフォーマンス要件を満たしていると判定することに応答して、処理ロジックは、データブロックに蓄積されたビットの数を第2の数(例えば、より高いデータ密度の書き込みモードに対するビットの数)から第1の数(より低いデータ密度の書き込みモードに対するビットの数)に変更することによって、後続のデータをキャッシュデータとしてデータブロックに蓄積する。上に説明したように、処理ロジックは、データブロックの書き込みモードを、定常状態のワークロード条件に遭遇する前に存在していたその元の書き込みモードに復元し得る。例えば、キャッシュ領域内のデータブロックが最初にSLCメモリセルで構成され、その後XLC書き込みモードに切り替えられた場合、処理ロジックは、メモリサブシステムのキャッシュ領域内のデータブロックに対する書き込みモードをXLC書き込みモードからそれらの元々構成されたSLC書き込みモードに戻し得る。
【0057】
図5は、本明細書で論じる方法論の内の何れか1つ以上をマシンに実施させるための命令のセットがその中で実行され得るコンピュータシステム500の例示的なマシンを説明する。幾つかの実施形態では、コンピュータシステム500は、メモリサブシステム(例えば、
図1のメモリサブシステム110)を含み、結合され、又は利用するホストシステム(例えば、
図1のホストシステム120)に対応し得、又はコントローラの動作を実施するために(例えば、
図1のキャッシュマネージャーコンポーネント113に対応する動作を実施するためにオペレーティングシステムを実行するために)使用され得る。代替の実施形態では、マシンは、LAN、イントラネット、エクストラネット、及び/又はインターネット内の他のマシンに接続(例えば、ネットワーク化)され得る。マシンは、クライアントサーバーネットワーク環境ではサーバー若しくはクライアントマシンの能力で、ピアツーピア(若しくは分散)ネットワーク環境ではピアマシンとして、又はクラウドコンピューティングインフラストラクチャ若しくは環境ではサーバー若しくはクライアントマシンとして動作し得る。
【0058】
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブアプライアンス、サーバー、ネットワークルータ、スイッチ若しくはブリッジ、デジタル若しくは非デジタル回路、又は該マシンによって実行されるアクションを指定する命令のセット(シーケンシャル又はその他)を実行可能な任意のマシンであり得る。更に、単一のマシンが説明されているが、用語“マシン”はまた、本明細書で論じる方法論の内の何れか1つ以上を実施するための命令のセット(又は複数のセット)を個々に又は共同で実行するマシンの任意の集合を含むと解釈されるであろう。
【0059】
例示的なコンピュータシステム500は、処理デバイス502、メインメモリ504(例えば、リードオンリーメモリ(ROM)、フラッシュメモリ、同期型DRAM(SDRAM)又はランバスDRAM(RDRAM)等のダイナミックランダムアクセスメモリ(DRAM)等)、静的メモリ506(例えば、フラッシュメモリ、静的ランダムアクセスメモリ(SRAM)等)、及びデータストレージシステム518を含み、それらは、バス530を介して相互に通信する。
【0060】
処理デバイス502は、マイクロプロセッサ又は中央処理装置等の1つ以上の汎用処理デバイスを表す。より具体的には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長期命令語(VLIW)マイクロプロセッサ、若しくはその他の命令セットを実装するプロセッサ、又は命令セットの組み合わせを実装するプロセッサであり得る。処理デバイス502はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、又はネットワークプロセッサ等の1つ以上の専用処理デバイスであり得る。処理デバイス602は、本明細書で論じる動作及びステップを実施するための命令526を実行するように構成される。コンピュータシステム500は、ネットワーク520を介して通信するためのネットワークインターフェースデバイス508を更に含み得る。
【0061】
データストレージシステム518は、本明細書に説明する方法論又は機能の内の何れか1つ以上を具体化する命令526又はソフトウェアの1つ以上のセットがその上に蓄積されるマシン可読ストレージ媒体524(コンピュータ可読媒体としても知られている)を含み得る。命令526はまた、コンピュータシステム500によるその実行中にメインメモリ504内及び/又は処理デバイス502内に完全に又は少なくとも部分的に常駐し得、メインメモリ504及び処理デバイス502はまた、マシン可読ストレージ媒体を構成する。マシン可読ストレージ媒体524、データストレージシステム518、及び/又はメインメモリ504は、
図1のメモリサブシステム110に対応し得る。
【0062】
一実施形態では、命令526は、キャッシュマネージャーコンポーネント(例えば、
図1のキャッシュマネージャーコンポーネント113)に対応する機能を実装するための命令を含む。マシン可読ストレージ媒体524は、例示的な実施形態では単一の媒体であることが示されているが、用語“マシン可読ストレージ媒体”は、命令の1つ以上のセットを蓄積する単一の媒体又は複数の媒体を含むと解釈されるべきである。用語“マシン可読ストレージ媒体”はまた、マシンによる実行のための命令のセットを蓄積又は符号化可能であり、本開示の方法論の内の何れか1つ以上をマシンに実施させる任意の媒体を含むと解釈されるであろう。用語“マシン可読ストレージ媒体”は、非限定的に、固体メモリ、光学媒体、及び磁気媒体を含むと解釈されるであろう。
【0063】
前述の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに対する動作のアルゴリズム及び記号表現に関して提示されている。これらのアルゴリズムの説明及び表現は、データ処理技術の当業者が、当技術分野の他の者にそれらの作業の内容を最も効果的に伝えるために使用される方法である。アルゴリズムはここにあり、一般的に、望ましい結果につながる自己矛盾のない一連の動作であると考えられる。動作は、物理量の物理的な操作を必要とする動作である。通常、必ずしもそうとは限らないが、これらの量は、蓄積、結合、比較、及びその他の方法で操作可能な電気又は磁気信号の形式をとる。主に一般的な使用法の理由から、これらの信号をビット、値、要素、記号、文字、用語、又は数値等と称すると便利な場合がある。
【0064】
しかしながら、これらの及び類似の用語の全ては、適切な物理量と関連付けられるべきであり、これらの量に適用される単なる便利なラベルであることに留意すべきである。本開示は、コンピュータシステムのレジスタ及びメモリ内の物理的(電子的)量として表されるデータを操作し、コンピュータシステムのメモリ若しくはレジスタ又はその他のそうした情報ストレージシステム内の物理量として同様に表される他のデータに変換するコンピュータシステム又は同様の電子コンピューティングデバイスのアクション及びプロセスを指し得る。
【0065】
本開示はまた、本明細書の動作を実施するための装置に関する。この装置は、意図する目的のために特別に構築され得、又はコンピュータ内に蓄積されたコンピュータプログラムにより選択的に起動又は再構成される汎用コンピュータを含み得る。こうしたコンピュータプログラムは、非限定的に、コンピュータシステムバスに各々結合される、フロッピーディスク、光ディスク、CD-ROM、及び磁気光学ディスクを含む任意のタイプのディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光カード、又は電子命令の蓄積に適した任意のタイプの媒体等のコンピュータ可読ストレージ媒体内に蓄積され得る。
【0066】
本明細書に提示されるアルゴリズム及び表示は、特定のコンピュータ又はその他の装置に本質的に関連しない。本明細書の教示に従ったプログラムで様々な汎用システムが使用され得、又は方法を実施するためのより特殊な装置を構築することが便利であることが証明され得る。様々なこれらのシステムの構造は、以下の説明に記載されるように解されるであろう。また、本開示は、何れの特定のプログラミング言語に言及して説明されていない。本明細書に説明するように、開示の教示を実装するために様々なプログラミング言語が使用され得ることは理解されるであろう。
【0067】
本開示は、本開示に従ったプロセスを実施するようにコンピュータシステム(又はその他の電子デバイス)をプログラミングするために使用され得る、命令をその上に蓄積したマシン可読媒体を含み得るコンピュータプログラム製品又はソフトウェアとして提供され得る。マシン可読媒体は、マシン(例えば、コンピュータ)によって可読な形式で情報を蓄積するための任意のメカニズムを含む。幾つかの実施形態では、マシン可読(例えば、コンピュータ可読)媒体は、リードオンリーメモリ(“ROM”)、ランダムアクセスメモリ(“RAM”)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリコンポーネント等のマシン(例えば、コンピュータ)可読ストレージ媒体を含む。
【0068】
前述の明細書において、開示の実施形態は、それらの具体的で例示的な実施形態に言及して説明されている。以下の特許請求の範囲に記載されるように、開示の実施形態のより広い精神及び範囲から逸脱することなく、それらに様々な修正がなされ得ることは明らかであろう。明細書及び図面は、したがって、限定的な意味ではなく、例示的な意味で考慮されるべきである。