(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023092425
(43)【公開日】2023-07-03
(54)【発明の名称】ストレージフラグメンテーションを定量化し性能低下を予測するための記憶システム及び方法
(51)【国際特許分類】
G06F 12/02 20060101AFI20230626BHJP
G06F 12/00 20060101ALI20230626BHJP
【FI】
G06F12/02 510A
G06F12/00 597U
G06F12/02 530C
【審査請求】有
【請求項の数】11
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022083519
(22)【出願日】2022-05-23
(11)【特許番号】
(45)【特許公報発行日】2023-06-19
(31)【優先権主張番号】17/558,014
(32)【優先日】2021-12-21
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FRAM
(71)【出願人】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】100207837
【弁理士】
【氏名又は名称】小松原 寿美
(72)【発明者】
【氏名】ジルベルシュタイン・エイナブ
(72)【発明者】
【氏名】オシンスキー・ハダス
(72)【発明者】
【氏名】スリマン・マーヤン
(72)【発明者】
【氏名】インバー・カリン
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA08
5B160AA14
5B160AA16
5B160AB26
(57)【要約】 (修正有)
【課題】ストレージフラグメンテーションを定量化し性能低下を予測するための記憶システム及び方法を提供する。
【解決手段】記憶システムは、複数の論理ブロックアドレス範囲のそれぞれについてのメモリフラグメンテーションレベルを決定する。所与の論理ブロックアドレス範囲についてのメモリフラグメンテーションレベルは、メモリのフラグメンテーションの現在の状態において当該論理ブロックアドレス範囲を読み出すのに必要とされるメモリセンスの数と、フラグメンテーションがないと想定して当該論理ブロックアドレス範囲を読み出すのに必要とされるメモリセンスの数とに従って、決定される。メモリフラグメンテーションレベルは、メモリフラグメンテーションレベルの増加が逐次読み出し性能の減少をもたらすということにおいて、当該論理ブロックアドレス範囲についての逐次読み出し性能と相関する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
メモリと、
前記メモリに結合されたコントローラと
を備える記憶システムであって、前記コントローラは、
前記メモリの複数の論理ブロックアドレス範囲のそれぞれについてのメモリフラグメンテーションレベルを、(i)前記メモリのフラグメンテーションの現在の状態において当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスと、(ii)フラグメンテーションがないと想定して当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスとに従って、決定し、
前記決定されたメモリフラグメンテーションレベルと相関する逐次読み出し性能の減少を予測するように構成されている、記憶システム。
【請求項2】
前記コントローラは、論理から物理アドレスマップを使用して、前記メモリフラグメンテーションレベルを決定するように更に構成されている、請求項1に記載の記憶システム。
【請求項3】
逐次読み出し性能の前記予測された減少は、学習システム、警告機構、又はシステム回復動作のうちの1つ以上において使用される、請求項1に記載の記憶システム。
【請求項4】
前記論理ブロックアドレス範囲のそれぞれは、前記メモリ内の非逐次物理ブロックアドレスにマッピングする逐次論理ブロックアドレスを含む、請求項1に記載の記憶システム。
【請求項5】
前記コントローラは、読み出しコマンドをホストから受信することから独立して、前記メモリフラグメンテーションレベルを決定するように更に構成されている、請求項1に記載の記憶システム。
【請求項6】
前記コントローラは、前記優先順位付けに基づいてデフラグメンテーション動作を実行するように更に構成されている、請求項1に記載の記憶システム。
【請求項7】
前記デフラグメンテーション動作は、前記デフラグメンテーション動作を実行するために命令をホストから受信することなく実行される、請求項6に記載の記憶システム。
【請求項8】
前記複数の論理ブロックアドレス範囲は、複数のファイルに対応する、請求項1に記載の記憶システム。
【請求項9】
前記コントローラは、前記複数の論理ブロックアドレス範囲を識別するように更に構成されている、請求項1に記載の記憶システム。
【請求項10】
前記複数の論理ブロックアドレス範囲は、ホストによって識別される、請求項1に記載の記憶システム。
【請求項11】
前記コントローラは、前記決定されたメモリフラグメンテーションレベルに基づいて、前記複数の論理ブロックアドレス範囲をデフラグメンテーションのために優先順位付けするように更に構成されており、比較的より高いメモリフラグメンテーションレベルを有する論理ブロックアドレス範囲は、比較的より低いメモリフラグメンテーションレベルを有する論理ブロックアドレス範囲よりも優先される、請求項1に記載の記憶システム。
【請求項12】
前記メモリは、三次元メモリを含む、請求項1に記載の記憶システム。
【請求項13】
メモリを備える記憶システムにおいて、
前記メモリの複数の論理ブロックアドレス範囲のそれぞれについてのメモリフラグメンテーションレベルを、(i)前記メモリのフラグメンテーションの現在の状態において当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスと、(ii)フラグメンテーションがないと想定して当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスとから、計算することと、
前記計算されたメモリフラグメンテーションレベルと相関する逐次読み出し性能の減少を予測することと
を含む方法。
【請求項14】
前記複数の論理ブロックアドレス範囲におけるデフラグメンテーション動作を、メモリフラグメンテーションレベルが減少する順序で実行することを更に含む、請求項13に記載の方法。
【請求項15】
前記デフラグメンテーション動作は、読み出しコマンドをホストから受信することから独立して実行される、請求項14に記載の方法。
【請求項16】
前記デフラグメンテーション動作は、前記デフラグメンテーション動作を実行するためにコマンドをホストから受信することなく実行される、請求項14に記載の方法。
【請求項17】
前記複数の論理ブロックアドレス範囲は、複数のファイルに対応する、請求項13に記載の方法。
【請求項18】
メモリと、
複数の論理ブロックアドレス範囲のそれぞれについてのメモリフラグメンテーションレベルを決定するための手段と、
前記メモリフラグメンテーションレベルに基づいて、逐次読み出し性能の減少を予測するための手段と
を備える記憶システム。
【請求項19】
前記複数の論理ブロックアドレス範囲におけるデフラグメンテーション動作を、メモリフラグメンテーションレベルが減少する順序で実行するための手段を更に備える、請求項18に記載の記憶システム。
【請求項20】
読み出しコマンドをホストから受信することから独立して、デフラグメンテーション動作を実行するための手段を更に備える、請求項18に記載の記憶システム。
【発明の詳細な説明】
【背景技術】
【0001】
記憶システムのメモリのフラグメンテーションは、記憶システムの性能を低減し得る。このようなフラグメンテーションは、ホストが更新をメモリ内に以前に記憶されたファイルに書き込むときに起こり得る。経時的に、フラグメンテーションのレベルが増加し得、性能の劣化の増加をもたらす。記憶システムの性能を増加させるために、パーソナルコンピュータなどの電子デバイスは、ファイルの論理アドレスが断片化された場合、ファイルシステムデフラグメンテーション動作を実行することができる。
【図面の簡単な説明】
【0002】
【
図1A】一実施形態の不揮発性記憶システムのブロック図である。
【0003】
【
図1B】一実施形態の記憶モジュールを示すブロック図である。
【0004】
【
図1C】一実施形態の階層記憶システムを示すブロック図である。
【0005】
【
図2A】一実施形態による、
図1Aに示す不揮発性記憶システムのコントローラの構成要素を示すブロック図である。
【0006】
【
図2B】一実施形態による、
図1Aに示す不揮発性記憶システムの構成要素を示すブロック図である。
【0007】
【
図3】一実施形態のホスト及び記憶システムのブロック図である。
【0008】
【
図4】一実施形態のホスト、コントローラ、及びメモリダイのブロック図である。
【0009】
【
図5】メモリセンスのパーセンテージの増加につれての逐次読み出し低下を示す一実施形態のグラフである。
【0010】
【
図6】逐次読み出し低下とフラグメンテーションレベルとの間の相関関係を示す一実施形態のグラフである。
【0011】
【
図7】ストレージフラグメンテーションを定量化し性能低下を予測するための一実施形態の方法のフローチャートである。
【発明を実施するための形態】
【0012】
以下の実施形態は、概して、ストレージフラグメンテーションを定量化し性能低下を予測するための記憶システム及び方法に関する。一実施形態では、メモリとコントローラとを備える記憶システムが提示されている。コントローラは、メモリの複数の論理ブロックアドレス範囲のそれぞれについてのメモリフラグメンテーションレベルを、(i)メモリのフラグメンテーションの現在の状態において当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスと、(ii)フラグメンテーションがないと想定して当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスとに従って、決定し、決定されたメモリフラグメンテーションレベルと相関する逐次読み出し性能の減少を予測するように構成されている。
【0013】
別の実施形態において、メモリの複数の論理ブロックアドレス範囲のそれぞれについてメモリフラグメンテーションレベルを、(i)メモリのフラグメンテーションの現在の状態において当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスと、(ii)フラグメンテーションがないと想定して当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスとから、計算することと、計算されたメモリフラグメンテーションレベルと相関する逐次読み出し性能の減少を予測することを含む方法が提供されている。更に別の実施形態では、メモリと、複数の論理ブロックアドレス範囲のそれぞれについてメモリフラグメンテーションレベルを決定するための手段と、メモリフラグメンテーションレベルに基づいて、逐次読み出し性能の減少を予測するための手段とを備える記憶システムが提供されている。他の実施形態が提供されており、単独で又は組み合わせて使用されてもよい。
【0014】
ここで図面を参照すると、これらの実施形態の態様の実装において使用するのに好適な記憶システムが、
図1A~
図1Cに示されている。
図1Aは、本明細書に記載の主題の一実施形態による(本明細書では記憶デバイス又は単にデバイスと称されることがある)不揮発性記憶システム100を示すブロック図である。
図1Aを参照すると、不揮発性記憶システム100は、コントローラ102と、1つ以上の不揮発性メモリダイ104から構成され得る不揮発性メモリとを含む。本明細書で使用される際、ダイという用語は、単一の半導体基板上に形成されている、不揮発性メモリセルと、これらの不揮発性メモリセルの物理的動作を管理するための関連付けられた回路との集合体を指す。コントローラ102は、ホストシステムとインターフェースし、不揮発性メモリダイ104への読み出し、プログラム、及び消去動作のためのコマンドシーケンスを送信する。
【0015】
コントローラ102(コントローラ102は、不揮発性メモリコントローラ(例えば、フラッシュ、抵抗性ランダムアクセスメモリ(Resistive Random-Access Memory、ReRAM)、相変化メモリ(Phase-Change Memory、PCM)、又は磁気抵抗性ランダムアクセスメモリ(Magneto-Resistive Random-Access Memory、MRAM)コントローラ)であってもよい)は、処理回路、マイクロプロセッサ又はプロセッサ、及びコンピュータ可読媒体の形態をとることができ、コンピュータ可読媒体は、例えば、(マイクロ)プロセッサ、ロジックゲート、スイッチ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、プログラム可能ロジックコントローラ、及び埋め込みマイクロコントローラによって実行可能なコンピュータ可読プログラムコード(例えば、ファームウェア)を記憶する。コントローラ102は、以下に記載しフロー図に示す様々な機能を実行するためのハードウェア及び/又はファームウェアで構成され得る。また、コントローラの内部にあるとして図に示す構成要素のうちのいくつかはまた、コントローラの外部に記憶されてもよく、他の構成要素が使用されてもよい。追加的に、「と動作可能に通信する」という語句は、と直接通信する、又はと1つ以上の構成要素を介して間接的に(有線又は無線)通信することを意味し得、これは、本明細書において図示及び記載されていることがあり、又は図示及び記載されていないことがある。
【0016】
本明細書で使用される際、不揮発性メモリコントローラは、不揮発性メモリに記憶されたデータを管理しコンピュータ又は電子デバイスなどのホストと通信するデバイスである。不揮発性メモリコントローラは、本明細書に記載の特定の機能に加えて、様々な機能を有することができる。例えば、不揮発性メモリコントローラは、不揮発性メモリが適切に動作していることを確実にし、不良の不揮発性メモリセルをマッピングし出し(map out)、将来の故障セルと置換される予備セルを割り当てるために、メモリをフォーマットすることができる。予備セルのうちのある部分は、不揮発性メモリコントローラを動作させ他の特徴を実装するためのファームウェアを保持するために使用され得る。動作において、ホストがデータを不揮発性メモリから読み出す又はデータを不揮発性メモリに書き込む必要があるときに、ホストは不揮発性メモリコントローラと通信することができる。ホストが、データがそれに読み出される/書き込まれる論理アドレスを提供する場合、不揮発性メモリコントローラは、ホストから受信された論理アドレスを不揮発性メモリ内の物理アドレスに変換することができる。(代替的に、ホストが、物理アドレスを提供することができる。)不揮発性メモリコントローラはまた、(そうでなければ繰り返しそれに書き込まれる特定のメモリセルブロックのウェアを回避するために書き込みを分散させる)ウェアレベリング及び(ブロックが満杯になった後、有効なデータページのみを新たなブロックに移動させ、このため、フルブロックが消去及び再使用され得る)ガーベッジコレクションなどを含むがこれらに限定されない様々なメモリ管理機能を実行することができる。また、特許請求の範囲に記載の「手段」のための構造は、例えば、コントローラに、記載されている機能を実行するために動作させるように必要に応じてプログラム又は製造される、本明細書に記載のコントローラの構造のうちのいくつか又は全てを含むことができる。
【0017】
不揮発性メモリダイ104は、ReRAM、MRAM、PCM、NANDフラッシュメモリセル及び/又はNORフラッシュメモリセルを含む任意の好適な不揮発性記憶媒体を含み得る。メモリセルは、固体(例えば、フラッシュ)メモリセルの形態をとることができ、1回プログラム可能、複数回プログラム可能、又は多数回プログラム可能であり得る。メモリセルはまた、シングルレベルセル(Single-Level Cell、SLC)、マルチレベルセル(Multiple-Level Cell、MLC)、トリプルレベルセル(Triple-Level Cell、TLC)、クワッドレベルセル(Quad-Level Cell、QLC)であり得、又は現在既知である若しくは今後開発される他のメモリセルレベル技術を使用し得る。また、メモリセルは、二次元的に又は三次元的に作製され得る。
【0018】
コントローラ102と不揮発性メモリダイ104との間のインターフェースは、トグルモード200、400、又は800などの任意の好適なフラッシュインターフェースであってもよい。一実施形態では、記憶システム100は、セキュアデジタル(Secure Digital、SD)又はマイクロセキュアデジタル(Micro Secure Digital、マイクロSD)カード(又はUSB、SSDなど)などのカードベースシステムであってもよい。代替の実施形態では、記憶システム100は、埋め込み記憶システムの一部分であってもよい。
【0019】
図1Aに示す例では、(本明細書では記憶モジュールと称されることがある)不揮発性記憶システム100は、コントローラ102と不揮発性メモリダイ104との間に単一のチャネルを含み、本明細書に記載の主題は、単一のメモリチャネルを有することに限定されない。例えば、(
図1B及び
図1Cに示すものなど)いくつかの記憶システムアーキテクチャでは、2つ、4つ、8つ、又はこれ以上のメモリチャネルが、コントローラの能力に依存して、コントローラとメモリデバイスとの間に存在し得る。本明細書に記載の実施形態のうちのいずれでは、単一のチャネルが図に示されている場合でも、単一より多いチャネルが、コントローラとメモリダイとの間に存在し得る。
【0020】
図1Bは、複数の不揮発性記憶システム100を含む記憶モジュール200を示す。したがって、記憶モジュール200は、記憶コントローラ202を含み得、記憶コントローラ202は、ホスト及び記憶システム204とインターフェースし、記憶システム204は、複数の不揮発性記憶システム100を含む。記憶コントローラ202と不揮発性記憶システム100との間のインターフェースは、シリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)、周辺構成要素相互接続エクスプレス(Peripheral Component Interconnect express、PCIe)インターフェース、又はダブルデータレート(Double-Data-Rate、DDR)インターフェースなどのバスインターフェースであってもよい。一実施形態では、記憶モジュール200は、ラップトップコンピュータ及びタブレットコンピュータなどのサーバPC又はポータブルコンピューティングデバイスにおいて見出されるような、ソリッドステートドライブ(Solid State Drive、SSD)、又は不揮発性デュアルインラインメモリモジュール(Non-Volatile Dual In-line Memory Module、NVDIMM)であってもよい。
【0021】
図1Cは、階層記憶システムを示すブロック図である。階層記憶システム250は、複数の記憶コントローラ202を含み、複数の記憶コントローラ202のそれぞれは、個々の記憶システム204を制御する。ホストシステム252は、記憶システム内のメモリにバスインターフェースを介してアクセスし得る。一実施形態では、バスインターフェースは、不揮発性メモリエクスプレス(Non-Volatile Memory express、NVMe)又はファイバチャネルオーバイーサネット(Fiber Channel over Ethernet、FCoE)インターフェースであってもよい。一実施形態では、
図1Cに示すシステムは、データセンタ又は大容量記憶装置が必要とされる他の場所において見出されるような、複数のホストコンピュータによってアクセス可能であるラックマウント可能な大容量記憶システムであってもよい。
【0022】
図2Aは、コントローラ102の構成要素をより詳細に示すブロック図である。コントローラ102は、ホストとインターフェースするフロントエンドモジュール108と、1つ以上の不揮発性メモリダイ104とインターフェースするバックエンドモジュール110と、ここで詳細に説明する機能を実行する様々な他のモジュールとを含む。モジュールは、例えば、他の構成要素との使用のために設計されたパッケージ化された機能ハードウェアユニット、関連する機能の特定の機能を通常実行する(マイクロ)プロセッサ若しくは処理回路によって実行可能なプログラムコード(例えば、ソフトウェア又はファームウェア)の一部分、又はより大きいシステムとインターフェースする自己完結型のハードウェア若しくはソフトウェア構成要素の形態をとり得る。コントローラ102は、本明細書では、NANDコントローラ又はフラッシュコントローラと称され得ることがあるが、コントローラ102は、任意の好適なメモリ技術とともに使用され得ることを理解されたく、このうちのいくつかの例が、以下に提供されている。
【0023】
コントローラ102のモジュールを再び参照すると、バッファマネージャ/バスコントローラ114は、ランダムアクセスメモリ(Random Access Memory、RAM)116内のバッファを管理し、コントローラ102の内部バス調停を制御する。読み出し専用メモリ(Read Only Memory、ROM)118は、システム起動コードを記憶する。コントローラ102から分離して位置するとして
図2Aに示すが、他の実施形態では、RAM 116及びROM 118の一方又は両方がコントローラ内に位置してもよい。更に他の実施形態では、RAM及びROMの一部分が、コントローラ102内及びコントローラ外の両方に位置し得る。
【0024】
フロントエンドモジュール108は、ホストインターフェース120及び物理層インターフェース(Physical Layer Interface、PHY)122を含み、ホストインターフェース120及びPHY 122は、ホスト又は次のレベルの記憶コントローラとの電気的インターフェースを提供する。ホストインターフェース120のタイプの選択は、使用されているメモリのタイプに依存し得る。ホストインターフェース120の例としては、SATA、SATAエクスプレス、シリアルアタッチドスモールコンピュータシステムインターフェース(Serially Attached Small Computer System Interface、SAS)、ファイバチャネル、ユニバーサルシリアルバス(Universal Serial Bus、USB)、PCIe、及びNVMeが挙げられるが、これらに限定されない。ホストインターフェース120は、典型的には、データ、制御信号、及びタイミング信号についての転送を容易にする。
【0025】
バックエンドモジュール110は、エラー訂正コード(Error Correction Code、ECC)エンジン124を含み、ECCエンジン124は、ホストから受信されたデータバイトをコード化し、不揮発性メモリから読み出されたデータバイトを復号及びエラー訂正をする。コマンドシーケンサ126は、不揮発性メモリダイ104に送信されるプログラムコマンドシーケンス及び消去コマンドシーケンスなどのコマンドシーケンスを生成する。独立ドライブの冗長配列(Redundant Array of Independent Drive、RAID)モジュール128は、RAIDパリティの生成及び失敗したデータの回復を管理する。RAIDパリティは、メモリデバイス104内に書き込まれているデータのための完全性保護の追加のレベルとして使用され得る。いくつかのケースでは、RAIDモジュール128は、ECCエンジン124の一部分であってもよい。メモリインターフェース130は、コマンドシーケンスを不揮発性メモリダイ104に提供し、状態情報を不揮発性メモリダイ104から受信する。一実施形態では、メモリインターフェース130は、トグルモード200、400、又は800インターフェースなどのダブルデータレート(DDR)インターフェースであり得る。フラッシュ制御層132は、バックエンドモジュール110の全体的な動作を制御する。
【0026】
記憶システム100はまた、外部電気的インターフェース、外部RAM、抵抗器、コンデンサ、又はコントローラ102とインターフェースし得る他の構成要素などの他の分離した構成要素140を含む。代替の実施形態では、物理層インターフェース122、RAIDモジュール128、メディア管理層138、及びバッファ管理/バスコントローラ114のうちの1つ以上は、コントローラ102内で必要でない任意選択の構成要素である。
【0027】
図2Bは、不揮発性メモリダイ104の構成要素をより詳細に示すブロック図である。不揮発性メモリダイ104は、周辺回路141及び不揮発性メモリ配列142を含む。不揮発性メモリ配列142は、データを記憶するために使用される不揮発性メモリセルを含む。不揮発性メモリセルは、ReRAM、MRAM、PCM、NANDフラッシュメモリセル、並びに/又は二次元及び/若しくは三次元構成におけるNORフラッシュメモリセルを含む任意の好適な不揮発性メモリセルであってもよい。不揮発性メモリダイ104は、データをキャッシュするデータキャッシュ156を更に含む。周辺回路141は、状態情報をコントローラ102に提供する状態マシン152を含む。
【0028】
再び
図2Aを参照すると、(本明細書ではフラッシュ変換層(Flash Translation Layer、FTL)と称される、又はより一般に、メモリがフラッシュでないことがある場合、「メディア管理層」と称される)フラッシュ制御層132は、フラッシュエラーを処理し、ホストとインターフェースする。特に、ファームウェア内のアルゴリズムであり得るFTLは、メモリ管理の内部に関与し、ホストからの書き込みをメモリ104内への書き込みに変換する。メモリ104は、制限された耐久性を有することがあり、複数のページ内にのみ書き込まれ得、及び/又は、メモリ104がメモリセルのブロックとして消去されない限り、書き込まれないことがあるため、FTLが、必要とされることがある。FTLは、ホストに可視でない可能性がある、メモリ104のこれらの潜在的制限を理解する。したがって、FTLは、ホストからの書き込みをメモリ104内への書き込みに変換することを試みる。
【0029】
FTLは、(本明細書では、テーブル又はデータ構造と称されることがある)論理から物理アドレス(Logical-to-Physical address、L2P)マップ及び割り当てられたキャッシュメモリを含んでもよい。このようにして、FTLは、ホストからの論理ブロックアドレス(Logical Block Address、「LBA」)をメモリ104内の物理アドレスに変換する。FTLは、電力オフ回復(このため、FTLのデータ構造は、急な電力損失の事象において回復され得る)、及びウェアレベリング(このため、メモリブロックにわたるウェアは、故障のより大きい機会をもたらし得るあるブロックの過剰ウェアを防止するように一様である)などを含むがこれらに限定されない他の特徴を含むことができる。
【0030】
再び図面を参照すると、
図3は、一実施形態のホスト300及び(本明細書では、デバイスと称されることがある)記憶システム100のブロック図である。ホスト300は、コンピュータ、携帯電話、デジタルカメラ、タブレット、ウェアラブルデバイス、デジタルビデオレコーダ、監視システムなどを含むがこれらに限定されない任意の好適な形態をとることができる。ホスト300は、プロセッサ330を備え、プロセッサ330は、記憶システムのメモリ104(例えば、不揮発性メモリダイ)内に記憶するために、(例えば、ホストのメモリ340(例えば、DRAM)内に最初に記憶された)データを記憶システム100に送信するように構成されている。ホスト300及び記憶システム100は、
図3では別個のボックスとして示されているが、記憶システム100は、ホスト300内に統合されてもよく、記憶システム100は、ホスト300に取り外し可能に接続されてもよく、記憶システム100及びホスト300は、ネットワークを介して通信することができることに留意されたい。また、メモリ104は、記憶システム100内に統合されてもよく、又は記憶システム100に取り外し可能に接続されてもよいことに留意されたい。
【0031】
上記のように、記憶システムのメモリのフラグメンテーションは、記憶システムの性能を減少させることがある。ホスト(例えば、電話又はラップトップ)が古くなるにつれて(例えば、実地において1年を超える動作後)ストレージを一貫した高性能に保つことは、携帯端末産業及び消費財産業にとって大きな課題及び痛点であり、多くの相手先商標製造会社(Original Equipment Manufacturer、OEM)及び記憶システムベンダーが、この課題を解決しようとしている。記憶デバイスにおいて経時的に観察される性能の劣化の主な理由の1つは、記憶媒体(メモリ)におけるNAND物理フラグメンテーションに関係し、NAND物理フラグメンテーションは、ホスト論理ブロックアドレス(LBA)範囲内のホストファイルシステムレイアウトに整合しない。これは、ホストLBA範囲上に逐次的に存在するファイル又はファイルの一部分が、物理NANDレベルで断片化され得ることを意味する。この状況は、NANDメモリがランダムにアクセスされないという基本的なNAND属性に起因して、記憶システムにおいて非常に頻繁に起こり得る。結果として、ホストファイルシステムによって書き込まれるファイルへの全ての「その場更新(update in place)」(すなわち、既に書き込まれたLBAの再書き込み)は、NANDに順次書き込まれる必要があり、これは、以前に書き込まれたNANDブロックにおいて無効化(「ホール(hole)」を作成する。ファイルが依然としてホストLBA範囲上に逐次的に存在しつつ、ファイルシステムのこの基本的な動作は、記憶物理媒体におけるフラグメンテーションレベルを徐々に増加させる。ホストが、断片化されたファイル又は断片化されたファイルの一部分の逐次読み出しを実行したときに、経験される性能は、断片化されたファイルを読み取るのに必要とされるNANDデータセンス動作の数の増加に起因して、著しく低下し得る。
【0032】
この状況は、ファイルシステムの挙動がNANDの物理的制限と整合しないことに起因して、記憶システムにおいて非常に頻繁に起こり得るため、記憶システム100が多くの(例えば、数十の)断片化されたファイルで終了する状況があり得る。任意の所与のファイルのデフラグメンテーション(「デフラグ」)プロセスは、追加の書き込みを作成し、記憶システム100の書き込み増幅率(Write Amplification Factor、WAF)、耐久性、及び待機時間に影響を与え得るため、このプロセスは、コストのかかるプロセスである。このため、ホスト300又は記憶システム100は、断片化されたファイルの間で優先順位付けし、デフラグメンテーションプロセスによって最も利益を得るファイルを選択する必要があり得る。
【0033】
いくつかのホストファイルシステムは、ファイルフラグメンテーションレベルを計算及び定量化するための機構を有する。例えば、FS_IOC_FIEMAPは、ファイルエクステントマッピングを得て論理フラグメンテーションレベルを理解するためにF2FSファイルシステムによって使用される入出力制御(Input-Output Control、IOCTL)である。しかしながら、この機構は、ファイルシステムに可視であるファイルLBAマッピングのみに基づく。ファイルは、上記のように、ホストLBA範囲上で逐次的存在するが、この機構は、メモリ104内のフラグメンテーションの実際のレベルを定量化せず、これは、記憶システム100内の内部アルゴリズム及び分析によって行われ得る。
【0034】
別の手法では、記憶システム100は、物理ファイルフラグメンテーション条件を徐々に改善し逐次読み出し性能の経時的な劣化を防止するために、コントローラ102によって内部的に(例えば、ファームウェアにおいて)実行される自動デフラグメンテーション解決策を提供するように構成され得る。例えば、コントローラ102は、コントローラ102がNAND読み出しページサイズよりも大きいホスト読み出しのそれぞれについて実行するデータセンスの数を監視するように構成され得る。この方法は、断片化されたNANDページの全てのホスト読み出しにおいて実行され得る。
【0035】
一実施形態では、コントローラ102は、デフラグ動作のためのLBA範囲間の優先順位付けを可能にするために、(ファイルに対応してもよく又はファイルに対応しなくてもよい)LBA範囲ごとに全体的なデフラグメンテーション尺度を計算するように構成されている。コントローラ102はまた、学習システム、警告機構、又は任意の他のシステム回復実施の一部分として使用され得るファイル読み出し性能低下を予測するように構成され得る。より具体的には、コントローラ102は、(コントローラ102又はホスト300によって作成され得る)LBA範囲マップを参照してストレージ物理フラグメンテーションレベルを定量化し、LBA範囲のそれぞれについての物理フラグメンテーションのレベルを定量化し、LBA範囲のそれぞれについての予想される性能低下のレベルを評価し、デフラグメンテーションのための最も重大なケース(例えば、最も大きい逐次読み出し性能低下が予想されるケース)を識別及び優先順位付けし、システム学習、警告、又は回復方法の一部分として性能低下予測を統合するように構成され得る。
【0036】
以下の段落は、例示的な実施形態の詳細を提供する。これらは単に例であり、他の実装が使用され得ることを理解されたい。したがって、これらの例の詳細は、例において明示的に記載されていない限り、特許請求の範囲と解釈されるべきではない。
【0037】
再び図面を参照すると、
図4は、一実施形態のホスト100及び記憶システム構成要素(コントローラ102及びメモリダイ104)のブロック図である。
図4に示すように、この実施形態でのコントローラ102は、LBAマッピングモジュール400及びフラグメンテーションレベルモジュール410を備える。LBAマッピングモジュール400は、特定のファイルに関係してもよく又は特定のファイルに関係しなくてもよいLBA範囲のマップを作成するように構成されている。上記のように、代替の実施形態では、LBA範囲のマップは、ホスト300又は別のエンティティによって作成される。フラグメンテーションレベルモジュール410は、以下に記載するスキャン及び式の計算を実行するように構成されている。これらの2つのモジュールは、別個のモジュールとして
図4に示されているが、これらのモジュールは、組み合わされてもよいことを理解されたい。また、一方又は両方のモジュールは、本明細書に記載されており図面に示す機能を提供するために、ソフトウェア/ファームウェア及び/又はハードウェアで実装されてもよい。
【0038】
これらの実施形態は、相関関係が、NANDセンスの数の増加と、ファイルをメモリ104から読み出す間に観察される性能低下との間にあることを認識する。この相関関係は、メモリ104に逐次的に書き込まれた1つのGBファイルについて
図5のグラフに示されている。
図5に示すように、NANDセンスの数が増加するにつれて、逐次読み出しの性能が減少する。より具体的には、グラフの左端は、ファイルの最大逐次読み出し性能を示す。ファイルのランダム書き込み及び逐次読み出しの繰り返しサイクルが実行されるにつれて、ランダム書き込みペイロードはサイクルごとに徐々に増加する。モデル分析の結果は、逐次読み出し性能が、NANDセンスの数が増加するにつれて徐々の劣化を経験することを示す。
【0039】
一実施形態では、コントローラ102は、NANDセンス動作の数に基づいて、所与のファイル又はLBAマッピングのストレージフラグメンテーションレベル及び予想される性能低下を定義する。これを行うために、コントローラ102は、(例えば、
図5に示すように)NANDセンス増加比と予想される性能低下との間の相関関係に基づく式を使用することができる。最初に、コントローラ102は、LBAマッピングの論理から物理マッピングテーブルをスキャンすることができる。このスキャンに基づいて、コントローラ102は、LBA範囲を読み出すのに必要とされるNANDセンスの数を決定することができる。これは、「actualNANDSenses」として定義される。加えて、コントローラ102は、物理フラグメンテーションが全くない場合、LBA範囲を読み出すのに必要とされたNANDセンスの数として「bestNANDSenses」を計算することができる。次いで、「bestNANDSenses」及び「actualNANDSenses」に基づいて、コントローラ102は、以下の式を使用して物理フラグメンテーションレベルを定量化することができる。
【0040】
【0041】
図6は、逐次読み出し低下とフラグメンテーションレベルとの間の相関関係を示すグラフである。
図6は、フラグメンテーションレベル式が、所与のLBA範囲についての予想される性能低下を+/-10%の分解能で予測することができることを示す。この予測は、記憶システム100又はホスト300内のタスクの優先順位付けのために使用され得る。この予測はまた、予想される性能レベル低下が、ある予め構成された閾値を下回るときにフラグを立てるために、記憶システム100又はホスト300のための警告通知又は機構として使用され得、これは、デフラグメンテーション/回復アクションが実行されるべきであることを示すことができる。
【0042】
図7は、ストレージフラグメンテーションを定量化し性能低下を予測するための一実施形態の方法のフローチャート700である。
図7に示すように、物理フラグメンテーションレベル尺度に基づいて記憶システムをデフラグするための方法が提供されている(動作(act)710)。ここで、コントローラ102は、相関LBA範囲マップを作成する(動作720)。上記のように、LBA範囲は、ファイルに関係してもよく、又はファイルに関係しなくてもよく、LBA範囲マップは、記憶システム100の代わりに、ホスト300又は別のエンティティによって作成されてもよい。次いで、コントローラ102は、上記の式に基づいて、LBA範囲のそれぞれについての物理フラグメンテーションのレベルを定量化する(動作730)。次いで、コントローラ102は、LBA範囲のそれぞれについての予想される性能低下のレベルを評価する(動作740)。その後、コントローラ102は、デフラグメンテーションのための最も重大なケース(すなわち、最も大きい逐次読み出し性能低下が予想されるケース)を識別及び優先順位付けする(動作750)。コントローラ102は、性能予測方法を、学習システム、警告機構、又は任意の他のシステム回復実施の一部分として使用することができる(動作760)。
【0043】
これらの実施形態に関連付けられたいくつかの利点がある。例えば、これらの実施形態は、メモリ104が物理的に断片化されているがLBA範囲が逐次であるときに、記憶システム100又はホスト300が、コストのかかるデフラグメンテーション動作を優先させることを可能にする。これは、全体的なシステム性能及びユーザエクスペリエンスと、このようなデフラグメンテーションプロセスが記憶システム100に課す書き込み増幅率、耐久性、及び待機時間ヒットとの間のより良好なトレードオフをもたらす。これらの実施形態はまた、ある閾値が超えられたときに警告又は回復推奨が提案/トリガされる、予測ベースの学習システム/機構/人工知能(Artificial Intelligence、AI)アルゴリズムのために使用され得る。
【0044】
最後に、上記のように、任意の好適なタイプのメモリが使用され得る。半導体メモリデバイスは、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、「DRAM」)、スタティックランダムアクセスメモリ(Static Random Access Memory、「SRAM」)デバイスなどの揮発性メモリデバイス、ReRAM、電気的消去可能プログラム可能読み出し専用メモリ(Electrically Erasable Programmable Read Only Memory、「EEPROM」)、(EEPROMのサブセットとも考えられる)フラッシュメモリ、強誘電性ランダムアクセスメモリ(Ferroelectric Random Access Memory、「FRAM」)、及びMRAMなどの不揮発性メモリデバイス、並びに情報を記憶することが可能である他の半導体素子を含む。これらのタイプのメモリデバイスのそれぞれは、異なる構成を有してもよい。例えば、フラッシュメモリデバイスは、NAND又はNOR構成で構成され得る。
【0045】
メモリデバイスは、受動素子及び/又は能動素子から、任意の組み合わせで形成されてもよい。非限定的な例として、受動半導体メモリ素子は、ReRAMデバイス素子を含み、これらは、いくつかの実施形態では、抗ヒューズ、相変化材料などの抵抗スイッチング記憶素子、及び任意選択で、ダイオードなどのステアリング素子(steering element)を含む。更に非限定的な例として、能動半導体メモリ素子は、EEPROM及びフラッシュメモリデバイス素子を含み、これらは、いくつかの実施形態では、浮遊ゲート、導電性ナノ粒子、又は電荷蓄積誘電材料などの電荷蓄積領域を含む素子を含む。
【0046】
複数のメモリ素子は、複数のメモリ素子が直列に接続されているように、又は複数のメモリ素子のそれぞれが個々にアクセス可能であるように構成され得る。非限定的な例として、NAND構成(NANDメモリ)内のフラッシュメモリデバイスは、典型的には、直列に接続されたメモリ素子を含む。NANDメモリ配列は、配列がストリングが複数のメモリストリングから構成されているように構成され得、複数のメモリストリングにおいて、ストリングは、単一のビット線を共有しグループとしてアクセスされる複数のメモリ素子から構成されている。代替的に、メモリ素子は、素子のそれぞれが個々にアクセス可能であるように構成され得、例えば、NORメモリ配列であるように構成され得る。NAND及びNORメモリ構成は、例であり、メモリ素子は、別法で構成されてもよい。
【0047】
基板内及び/又は基板の上に位置する半導体メモリ素子は、二次元(two Dimensional、2D)メモリ構造、三次元(three Dimensional、3D)メモリ構造などのように、二次元又は三次元で配置され得る。
【0048】
2Dメモリ構造では、半導体メモリ素子は、単一の平面又は単一のメモリデバイスレベルに配置されている。典型的には、2Dメモリ構造では、メモリ素子は、メモリ素子を支持する基板の主表面に実質的に平行に延びる平面(例えば、xz方向平面)に配置されている。基板は、ウェハであってもよく、ウェハの上又はウェハ内に、メモリ素子の層が形成されており、又は基板は、メモリ素子が形成された後にメモリ素子に取り付けられるキャリア基板であってもよい。非限定的な例として、基板は、シリコンなどの半導体を含み得る。
【0049】
メモリ素子は、複数の行及び/又は列などの整列した配列において単一のメモリデバイスレベルに配置され得る。しかしながら、メモリ素子は非規則的又は非直交構成で配列され得る。メモリ素子はそれぞれ、2つ以上の電極、又はビット線及びワード線などの接触線を有し得る。
【0050】
3Dメモリ配列は、メモリ素子が複数の平面又は複数のメモリデバイスレベルを占有するように配置されており、これによって、三次元(すなわち、x、y、及びz方向であり、y方向は、基板の主表面に実質的に垂直であり、x及びz方向は、基板の主表面に実質的に平行である)の構造を形成する。
【0051】
非限定的な例として、3Dメモリ構造は、複数の2Dメモリデバイスレベルのスタックとして垂直に配置され得る。別の非限定的な例として、3Dメモリ配列は、列のそれぞれが複数のメモリ素子を列のそれぞれにおいて有する複数の垂直列(例えば、基板の主表面に実質的に垂直に、すなわちy方向に延びる列)として配置され得る。列は、2D構成、例えば、xz平面に配置されてもよく、素子が複数の垂直にスタックされたメモリ平面上にあるメモリ素子の3D配置をもたらす。三次元のメモリ素子の他の構成がまた、3Dメモリ配列を構築することができる。
【0052】
非限定的な例として、3D NANDメモリ配列では、メモリ素子は、NANDストリングを単一の水平(例えば、xz)メモリデバイスレベル内に形成するように一緒に結合され得る。代替的に、メモリ素子は、複数の水平メモリデバイスレベルにわたって横断する垂直なNANDストリングを形成するように一緒に結合され得る。他の3D構成が、企図され得、他の3D構成では、いくつかのNANDストリングは、メモリ素子を単一のメモリレベルで含み、他のストリングは、複数のメモリレベルにわたるメモリ素子を含む。3Dメモリ配列はまた、NOR構成及びReRAM構成で設計されてもよい。
【0053】
典型的には、モノリシック3Dメモリ配列では、1つ以上のメモリデバイスレベルは、単一の基板の上に形成されている。任意選択で、モノリシック3Dメモリ配列はまた、1つ以上のメモリ層を少なくとも部分的に単一の基板内に有し得る。非限定的な例として、基板は、シリコンなどの半導体を含み得る。モノリシック3D配列では、配列のメモリデバイスレベルのそれぞれを構築する層は、典型的には、配列の下にあるメモリデバイスレベルの層上に形成されている。しかしながら、モノリシック3Dメモリ配列の隣接するメモリデバイスレベルの層は、共有されてもよく、又はメモリデバイスレベル間に介在する層を有してもよい。
【0054】
次いで、同様に、二次元配列は、別個に形成されてもよく、次いで、一緒にパッケージ化されて、複数のメモリ層を有する非モノリシックメモリデバイスを形成してもよい。例えば、非モノリシックスタックメモリは、メモリレベルを別個の基板上に形成することと、次いで、メモリレベルを互いの上にスタックすることとによって構築され得る。基板は、薄くてもよく、又はスタックの前にメモリデバイスレベルから除去されてもよいが、メモリデバイスレベルは、最初に、別個の基板の上に形成されるため、結果として得られるメモリ配列は、モノリシック3Dメモリ配列ではない。更に、複数の2Dメモリ配列又は3Dメモリ配列(モノリシック又は非モノリシック)は、別個のチップ上に形成されてもよく、次いで、一緒にパッケージ化されてスタックチップメモリデバイスを形成してもよい。
【0055】
関連付けられた回路は、典型的には、メモリ素子の動作及びメモリ素子との通信のために必要とされる。非限定的な例として、メモリデバイスは、プログラミング及び読み出しなどの機能を達成するためにメモリ素子を制御及び駆動するために使用される回路を有し得る。これの関連付けられた回路は、メモリ素子と同じ基板上及び/又は別個の基板上にあってもよい。例えば、メモリ読み出し書き込み動作のためのコントローラは、別個のコントローラチップ上及び/又はメモリ素子と同じ基板上に位置し得る。
【0056】
本発明は、記載されている2D及び3Dの構造に限定されず、本明細書で説明されているように及び当業者によって理解されるように、本発明の精神及び範囲内の全ての関連するメモリ構造を網羅することが、当業者には理解されよう。
【0057】
前述の詳細な説明は、本発明がとり得る選択された形態の例示として理解され、本発明の定義として理解されないことが意図されている。全ての均等物を含む以下の特許請求の範囲のみが、特許請求されている発明の範囲を定義することが意図されている。最後に、本明細書に記載の実施形態のうちのいずれかの任意の態様は、単独で又は互いと組み合わせて使用され得ることに留意されたい。
【手続補正書】
【提出日】2023-04-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
メモリと、
前記メモリに結合されたコントローラと
を備える記憶システムであって、前記コントローラは、
前記メモリの複数の論理ブロックアドレス範囲のそれぞれについてのメモリフラグメンテーションレベルを、(i)前記メモリのフラグメンテーションの現在の状態において当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスと、(ii)フラグメンテーションがないと想定して当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスとに従って、決定し、
前記決定されたメモリフラグメンテーションレベルと相関する逐次読み出し性能の減少を予測するように構成されている、記憶システム。
【請求項2】
前記コントローラは、論理から物理アドレスマップを使用して、前記メモリフラグメンテーションレベルを決定するように更に構成され、
前記論理から物理アドレスマップは、ホストからの論理ブロックアドレスを前記メモリ内の物理アドレスに変換するマップである、請求項1に記載の記憶システム。
【請求項3】
逐次読み出し性能の前記予測された減少は、学習システム、警告機構、又はシステム回復動作のうちの1つ以上において使用される、請求項1に記載の記憶システム。
【請求項4】
前記論理ブロックアドレス範囲のそれぞれは、前記メモリ内の非逐次物理ブロックアドレスにマッピングする逐次論理ブロックアドレスを含む、請求項1に記載の記憶システム。
【請求項5】
前記コントローラは、更に、逐次読み出し性能の前記予測された減少に基づき、デフラグメンテーション動作に対して前記複数の論理ブロックアドレス範囲の間で優先順位付けすることが可能に構成されている、請求項1に記載の記憶システム。
【請求項6】
前記複数の論理ブロックアドレス範囲は、複数のファイルに対応する、請求項1に記載の記憶システム。
【請求項7】
前記コントローラは、前記複数の論理ブロックアドレス範囲を識別するように更に構成されている、請求項1に記載の記憶システム。
【請求項8】
前記複数の論理ブロックアドレス範囲は、ホストによって識別される、請求項1に記載の記憶システム。
【請求項9】
前記メモリは、三次元メモリを含む、請求項1に記載の記憶システム。
【請求項10】
メモリを備える記憶システムにおいて、
前記メモリの複数の論理ブロックアドレス範囲のそれぞれについてのメモリフラグメンテーションレベルを、(i)前記メモリのフラグメンテーションの現在の状態において当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスと、(ii)フラグメンテーションがないと想定して当該論理ブロックアドレス範囲を読み出すのに必要とされるいくつかのメモリセンスとから、計算することと、
前記計算されたメモリフラグメンテーションレベルと相関する逐次読み出し性能の減少を予測することと
を含む方法。
【請求項11】
前記複数の論理ブロックアドレス範囲は、複数のファイルに対応する、請求項10に記載の方法。
【外国語明細書】