(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-20
(54)【発明の名称】大きいコードワードのRAIN保護のための冗長メタデータ方式
(51)【国際特許分類】
G06F 11/10 20060101AFI20240912BHJP
【FI】
G06F11/10 660
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024516780
(86)(22)【出願日】2022-09-19
(85)【翻訳文提出日】2024-04-12
(86)【国際出願番号】 US2022044022
(87)【国際公開番号】W WO2023044125
(87)【国際公開日】2023-03-23
(32)【優先日】2021-09-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(72)【発明者】
【氏名】チェン チェンガン
(72)【発明者】
【氏名】パルタサラティ シヴァニャナム
(57)【要約】
メモリサブシステムの1つまたは複数のメモリページに複数のコードワードがプログラムされる。メモリサブシステムの各メモリページは、メモリサブシステムの複数の論理ユニットのうちの1つの論理ユニットと、メモリサブシステムの複数のプレーンのうちの1つのプレーンまたはメモリサブシステムの複数のブロックのうちの1つのブロックのうちの少なくとも1つとに関連づけられる。複数のコードワードの各コードワードはホストデータおよびベースパリティビットを含む。メモリサブシステムの1つまたは複数のメモリページに複数の追加のパリティビットがプログラムされ、複数の追加のパリティビットの各追加のパリティビットは複数の標準的なコードワードのうちの1つのコードワードに関連づけられる。追加のパリティビットの各々に対応する冗長メタデータの第1のセットが生成される。冗長メタデータの第1のセットは、追加のパリティビットを記憶するいずれのメモリページとも別個のメモリページにプログラムされる。
【特許請求の範囲】
【請求項1】
メモリサブシステムの1つまたは複数のメモリページに複数のコードワードをプログラムすることであって、前記メモリサブシステムの各メモリページが、前記メモリサブシステムの複数の論理ユニットのうちの1つの論理ユニットと、前記メモリサブシステムの複数のプレーンのうちの1つのプレーンまたは前記メモリサブシステムの複数のブロックのうちの1つのブロックのうちの少なくとも1つとに関連づけられ、前記複数のコードワードの各コードワードがホストデータおよびベースパリティビットを含む、プログラムすることと、
前記メモリサブシステムの前記1つまたは複数のメモリページに複数の追加のパリティビットをプログラムすることであって、前記複数の追加のパリティビットの各追加のパリティビットが前記複数のコードワードのそれぞれのコードワードに関連づけられる、プログラムすることと、
前記追加のパリティビットの各々に対応する冗長メタデータの第1のセットを生成することと、
前記複数の追加のパリティビットを記憶するいずれのメモリページとも別個の、前記メモリサブシステムのメモリページに冗長メタデータの前記第1のセットをプログラムすることと
を含む、方法。
【請求項2】
コードワードのセットに対応する冗長メタデータの第2のセットを生成することと、
冗長メタデータの前記第1のセットを記憶する前記メモリサブシステムの前記メモリページに冗長メタデータの前記第2のセットをプログラムすることと
をさらに含む、請求項1に記載の方法。
【請求項3】
冗長メタデータの前記第1のセットのための第2階層パリティメタデータを生成することと、
冗長メタデータの前記第1のセットを記憶する前記メモリサブシステムの前記メモリページに前記パリティメタデータをプログラムすることと
をさらに含む、請求項1に記載の方法。
【請求項4】
冗長メタデータの前記第1のセットを生成することが、前記追加のパリティビットに基づいて1つまたは複数の排他的論理和(XOR)演算を実行することを含む、請求項1に記載の方法。
【請求項5】
冗長メタデータの前記第2セットのためのパリティメタデータを生成することと、
冗長メタデータの前記第1のセットを記憶する前記メモリサブシステムの前記メモリページに前記パリティメタデータをプログラムすることと
をさらに含む、請求項2に記載の方法。
【請求項6】
前記メモリサブシステムのメモリページに記憶されたデータ項目の読み出し要求を受信したことに応答して、読み出しエラーが発生したと決定することと、
前記読み出しエラーを経験した前記メモリページが冗長メタデータの前記第1のセットを記憶していたと決定することと、
冗長メタデータの前記第1のセットを再生成することと、
前記メモリサブシステムの異なるメモリページに冗長メタデータの前記再生成されたセットを記憶することと
をさらに含む、請求項1に記載の方法。
【請求項7】
前記メモリサブシステムのメモリページに記憶されたデータ項目の読み出し要求を受信したことに応答して、読み出しエラーが発生したと決定することと、
前記読み出しエラーを経験した前記メモリページが冗長メタデータの前記第2のセットを記憶していたと決定することと、
冗長メタデータの前記第2のセットを再生成することと、
前記メモリサブシステムの異なるメモリページに冗長メタデータの前記再生成されたセットを記憶することと
をさらに含む、請求項2に記載の方法。
【請求項8】
各ブロックが1つまたは複数のメモリページを含む、複数のブロックであって、前記メモリページは、各ストライプが前記複数のプレーンまたは前記複数のブロックの各々の少なくとも1つのメモリページを含む、複数のストライプに編成される、複数のブロックと、
前記複数のプレーンまたは前記複数のブロックの各々に結合された処理デバイスと
を含むシステムであって、前記処理デバイスは、
データ項目のセットにアクセスすることに関連するエラーを検出することであって、データ項目の前記セットが、前記複数のストライプのうちの1つのストライプに関連づけられたそれぞれのメモリページにプログラムされる、検出することと、
データ項目の前記セットが、1つまたは複数のコードワード、追加のパリティメタデータ、独立した否定論理積(NAND)の冗長アレイ(RAIN)冗長メタデータ、または論理ユニット(LUN)冗長メタデータのうちの少なくとも1つを含むかどうかを決定することと、
データ項目の前記セットが1つまたは複数のコードワードを含むと決定したことに応答して、RAIN冗長メタデータに少なくとも部分的に基づいて前記1つまたは複数のコードワードの各々を復元するために第1のデータ復元プロセスを実行することと、
データ項目の前記セットが追加のパリティメタデータを含むと決定したことに応答して、LUN冗長メタデータに少なくとも部分的に基づいて前記追加のパリティメタデータを復元するために第2のデータ復元プロセスを実行することと、
データ項目の前記セットがRAIN冗長メタデータを含むと決定したことに応答して、前記複数のブロックの前記複数のプレーン上に記憶されたコードワードの1つまたは複数のセットに少なくとも部分的に基づいて、前記RAIN冗長メタデータを再生成するために第1のデータ再構成プロセスを実行することと、
データ項目の前記セットがLUN冗長メタデータを含むと決定したことに応答して、前記複数のブロックの前記複数のプレーン上に記憶された追加のパリティメタデータに少なくとも部分的に基づいて、前記LUN冗長メタデータを再生成するために第2のデータ再構成プロセスを実行することと
を含む動作を実行する、システム。
【請求項9】
前記RAIN冗長メタデータと前記LUN冗長メタデータとが同じメモリページ上に記憶される、請求項8に記載のシステム。
【請求項10】
前記LUN冗長メタデータと前記追加のパリティメタデータとが前記メモリサブシステムコントローラの異なるメモリページに記憶される、請求項8に記載のシステム。
【請求項11】
前記第2の復元プロセスを実行することが、前記メモリサブシステム上に記憶された前記LUN冗長メタデータと残りの追加のパリティメタデータとに基づいて1つまたは複数の排他的論理和(XOR)演算を実行することを含む、請求項8に記載のシステム。
【請求項12】
前記第2のデータ再構成プロセスを実行することが、前記メモリサブシステム上に記憶された前記追加のパリティメタデータに基づいて1つまたは複数の排他的論理和(XOR)演算を実行することを含む、請求項8に記載のシステム。
【請求項13】
前記LUN冗長メタデータが、パリティメタデータを使用して符号化される、請求項8に記載のシステム。
【請求項14】
処理デバイスによって実行されるとき、前記処理デバイスに、
メモリサブシステムの1つまたは複数のメモリページに複数のコードワードをプログラムすることであって、前記メモリサブシステムの各メモリページが、前記メモリサブシステムの複数の論理ユニットのうちの1つの論理ユニットと、前記メモリサブシステムの複数のプレーンのうちの1つのプレーンまたは前記メモリサブシステムの複数のブロックのうちの1つのブロックのうちの少なくとも1つとに関連づけられ、前記複数のコードワードの各コードワードがホストデータおよびベースパリティビットを含む、プログラムすることと、
前記メモリサブシステムの前記1つまたは複数のメモリページに複数の追加のパリティビットをプログラムすることであって、前記複数の追加のパリティビットの各追加のパリティビットが前記複数のコードワードのうちの1つのコードワードに関連づけられる、プログラムすることと、
前記追加のパリティビットの各々に対応する冗長メタデータの第1のセットを生成することと、
前記複数の追加のパリティビットを記憶するいずれのメモリページとも別個の、前記メモリサブシステムのメモリページに冗長メタデータの前記第1のセットをプログラムすることと
を含む動作を実施させる命令を含む、非一時的コンピュータ可読記憶媒体。
【請求項15】
前記動作が、
コードワードのセットに対応する冗長メタデータの第2のセットを生成することと、
冗長メタデータの前記第1のセットを記憶する前記メモリサブシステムの前記メモリページに冗長メタデータの前記第2のセットをプログラムすることと
をさらに含む、請求項14に記載の非一時的コンピュータ可読記憶媒体。
【請求項16】
前記動作が、
冗長メタデータの前記第1のセットのための第2階層パリティメタデータを生成することと、
冗長メタデータの前記第1のセットを記憶する前記メモリサブシステムの前記メモリページに前記パリティメタデータをプログラムすることと
をさらに含む、請求項14に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
冗長メタデータの前記第1のセットを生成することが、前記追加のパリティビットに基づいて1つまたは複数の排他的論理和(XOR)演算を実行することを含む、請求項14に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記動作が、
冗長メタデータの前記第2セットのためのパリティメタデータを生成することと、
冗長メタデータの前記第1のセットを記憶する前記メモリサブシステムの前記メモリページに前記パリティメタデータをプログラムすることと
をさらに含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
前記動作が、
前記メモリサブシステムのメモリページに記憶されたデータの読み出し要求を受信したことに応答して、読み出しエラーが発生したと決定することと、
前記読み出しエラーを経験した前記メモリページが冗長メタデータの前記第1のセットを記憶していたと決定することと、
冗長メタデータの前記第1のセットを再生成することと、
前記メモリサブシステムの異なるメモリページに冗長メタデータの前記再生成されたセットを記憶することと
をさらに含む、請求項14に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
前記動作が、
前記メモリサブシステムのメモリページに記憶されたデータ項目の読み出し要求を受信したことに応答して、読み出しエラーが発生したと決定することと、
前記読み出しエラーを経験した前記メモリページが冗長メタデータの前記第2のセットを記憶していたと決定することと、
冗長メタデータの前記第2のセットを再生成することと、
前記メモリサブシステムの異なるメモリページに冗長メタデータの前記再生成されたセットを記憶することと
をさらに含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、一般に、メモリサブシステムに関し、より詳細には、大きいコードワードのRAIN保護のための冗長メタデータ方式に関する。
【背景技術】
【0002】
メモリサブシステムは、データを格納する1つまたは複数のメモリデバイスを含み得る。メモリデバイスは、例えば、不揮発性メモリデバイスおよび揮発性メモリデバイスであり得る。一般に、ホストシステムは、メモリデバイスにデータを格納するため、およびメモリデバイスからデータを取得するために、メモリサブシステムを利用し得る。
【0003】
本開示は、以下に提供される詳細な説明から、および本開示の様々な実施形態の添付の図面からより完全に理解される。しかしながら、図面は、本開示を特定の実施形態に限定すると見なされるべきではなく、単に解説および理解のためのものである。
【図面の簡単な説明】
【0004】
【
図1】本開示のいくつかの実施形態によるメモリサブシステムを含む例示的なコンピューティングシステムを示す図である。
【
図2】本開示のいくつかの実施形態による、マルチプレーンLUNのセットのための冗長メタデータを生成するためのフロー図である。
【
図3】本開示のいくつかの実施形態による、LUNのセット中に冗長メタデータを格納するための例示的な構成の図である。
【
図4】本開示のいくつかの実施形態による、LUNのセット中に冗長メタデータを格納するための例示的な構成の別の図である。
【
図5】本開示のいくつかの実施形態による、冗長メタデータを使用してデータを復元するためのフロー図である。
【
図6】本開示の実施形態が動作し得る例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0005】
本開示の態様は、大きいコードワードのRAIN保護のための冗長メタデータ方式を対象とする。メモリサブシステムは、ストレージデバイス、メモリモジュール、またはストレージデバイスおよびメモリモジュールの組合せであり得る。ストレージデバイスおよびメモリモジュールの例は、
図1と併せて以下に説明される。一般に、ホストシステムは、データを格納するメモリデバイスなど、1つまたは複数のメモリコンポーネントを含むメモリサブシステムを利用し得る。ホストシステムは、メモリサブシステムに格納されるべきデータを提供し得、メモリサブシステムから取得されるべきデータを要求し得る。
【0006】
メモリサブシステムは、ホストシステムによって与えられたデータを格納するために、異なるタイプの不揮発性メモリデバイスおよび/または揮発性メモリデバイスの任意の組合せを含む、1つまたは複数のメモリデバイスを利用することができる。いくつかの実施形態では、不揮発性メモリデバイスは否定論理積(NAND)タイプフラッシュメモリデバイスによって与えることができる。不揮発性メモリデバイスの他の例について
図1とともに以下で説明する。不揮発性メモリデバイスは1つまたは複数のダイのパッケージである。各ダイは1つまたは複数のプレーンを含むことができる。プレーンは、複数のメモリセルを含むメモリデバイスの一部分である。いくつかのメモリデバイスは2つ以上のプレーンを含むことができる。いくつかのタイプの不揮発性メモリデバイス(例えばNANDデバイス)の場合、各プレーンは物理ブロックのセットを含む。各ブロックはページのセットを含む。「ブロック」は、本明細書では連続的または不連続的なメモリページのセットを指すものとする。「ブロック」の一例は、メモリの最小消去可能ユニットである「消去可能ブロック」であり、「ページ」はメモリの最小書き込み可能ユニットである。各ページはメモリセルのセットを含む。メモリセルは、情報を格納する電子回路である。
【0007】
上記で説明したように、ダイは1つまたは複数のプレーンを含むことがある。メモリサブシステムは、データ動作(例えば、書き込み、読み出し、消去など)を実行するときにデータの様々なセットをユニットとして処理するためにストライピング方式を使用することができる。ダイストライプは、データを書き込み、読み出し、または消去するときに1つのユニットとして処理されるプレーンの集合を指す。メモリデバイスのコントローラ(すなわち、メモリサブシステムコントローラ、メモリデバイスコントローラなど)は、ダイストライプの各プレーンにおいて並列に同じ演算を実行することができる。ブロックストライプは、1つのユニットとして処理される、ダイストライプの各プレーンからの少なくとも1つのブロックの集合である。ブロックストライプ中のブロックは、各それぞれのプレーンにある同じブロック識別子(例えばブロック番号)に関連づけることができる。ページストライプは、ブロックストライプにわたって同じページ識別子(例えば同じページ番号)を有するページのセットであり、1つのユニットとして処理される。
【0008】
ホストシステムは、メモリサブシステム上のメモリアクセス動作(例えば、プログラミングまたは書き込み動作、読み出し動作、消去動作など)を開始することができる。例えば、ホストシステムは、メモリサブシステムのメモリデバイスにデータをプログラムするために、および/またはメモリサブシステムのメモリデバイスからデータを読み出すために、メモリサブシステムコントローラに要求を送信することができる。そのようなデータを本明細書では「ホストデータ」と呼ぶ。メモリサブシステムコントローラは、要求に従ってホストデータにアクセスするために1つまたは複数の動作を実行することができる。ホストデータは、送信または格納中に発生し得るデータエラーを訂正するために誤り訂正符号(ECC)を使用して符号化することができる。特に、ホストデータは、コードワードを形成するために冗長メタデータ(例えば、1つまたは複数のパリティビットなどのパリティデータ)を使用して符号化することができる。パリティデータは、メモリサブシステムコントローラが、ホストデータ中のどこでも発生し得るいくつかのエラーを検出し、しばしば再送信なしにこれらのエラーを訂正することを可能にする。
【0009】
レート適応的ECCは、パリティデータの複数の階層を用いてホストデータを保護することができる誤り訂正符号である。各階層は符号化可能および復号可能であり、各階層は、異なるコードレートをもつECCとして機能する。第1階層ECCパリティは第2階層ECCパリティのサブセットであり、第1階層パリティおよび第2階層パリティは第3階層パリティのサブセットであり、以下同様である。例えば、第1階層ECCパリティは、ホストデータと第1のパリティ(以下「ベースパリティ」)とを含む標準コードワードと呼ばれることがあり、第2階層ECCパリティは、標準コードワードと第2のパリティ(以下「追加のパリティ」)とを含む大きいコードワードと呼ばれることがあり、以下同様である。階層数が増加するにつれて、パリティサイズは増加し、コードレートは減少し、ECC保護はより強くなる。第1階層パリティは、比較的小さい粒度の障害によるエラーを訂正するために使用することができ、第2階層パリティは、より大きい粒度の障害を訂正するために使用することができ、以下同様である。データ破損のいくつかの事例では、データを復元するために、より高い階層のECCのための追加のパリティを送信するだけでよく、それによりチャネル帯域幅が節約される。
【0010】
いくつかのシステムでは、大きいコードワード(第2階層ECCパリティ)を複数のページ間で分割することができる。特に、標準コードワードを1ページの1/4にプログラムすることができ、それにより4つの標準コードワードが単一のメモリページ中に収まる。例えば、4KBのコードワードおよび16KBのページの場合、メモリサブシステムコントローラはメモリページ当たり4つのコードワードを格納することができる。各大きいコードワードの追加のパリティを異なるページまたはプレーン中に格納することができる。追加のパリティは、ワークロード、システムパフォーマンス、および/または電力要件に応じて、標準的なECCが復号に失敗したときに、または標準コードワードが読み出されるのと同時に読み出すことができる。
【0011】
メモリデバイスのメモリセルにあるデータが繰り返しアクセスされると、メモリセルは劣化し、最終的に欠陥品になることがある。例えば、ホストシステムが、メモリデバイスに格納されたホストデータのためにあまりに多くのメモリアクセス動作を開始すると、ホストデータを格納するメモリセル、ならびにメモリデバイスにある隣接するメモリセルが破損することがある。いくつかの事例では、メモリデバイスのプレーンの1つまたは複数のメモリページにあるデータにアクセスするためにメモリサブシステムコントローラによって実行されるメモリアクセス動作(例えば読み出し動作など)が失敗することがある。そのような失敗を本明細書ではメモリアクセス障害と呼ぶ。
【0012】
メモリサブシステムは、メモリアクセス障害に対してホストデータを保護するために冗長機構をサポートし得る。例えば、NANDタイプフラッシュデバイスの場合、メモリサブシステムは、メモリサブシステム上に格納されたデータのための冗長を与えるために、独立したNANDの冗長アレイ(RAIN)動作を実行することができる。メモリサブシステムのメモリデバイスにプログラムされるべきホストデータ(または1つもしくは複数のコードワード)がホストシステムから受信されたとき、メモリサブシステムコントローラは、受信されたホストデータを用いた1つまたは複数の排他的論理和(XOR)演算に基づいて冗長メタデータを生成することができ、ホストデータを格納しているメモリデバイスの一部分の障害の場合に、ホストデータを再構成または再計算するために冗長メタデータを使用することができる。一例として、メモリサブシステムコントローラは、メモリサブシステムの1つまたは複数の論理ユニット(LUN)(例えば、ページ、ブロック)の特定の数のデータロケーションに格納されたホストデータに適用されたXOR演算に基づいて、1つまたは複数のRAIN標準コードワード(冗長メタデータ)を生成することができる。ホストデータを格納するメモリデバイスの一部分に障害が生じ、対応するデータが失われたかまたは破損した場合、メモリサブシステムコントローラは、残りのホストデータと冗長メタデータとの間のXOR演算に基づいて、失われた/破損したデータを再構成することができる。
【0013】
標準コードワードの場合、既存のRAIN方式は、メモリサブシステムがメモリアクセス障害に対してホストデータを保護することを可能にする。しかしながら、大きいコードワードは複数のプレーン間で分割され得る。現在のところ、追加のパリティを格納するページまたはプレーンが障害を受けた場合に、前記追加のパリティの復元を可能にする方式はない。
【0014】
本開示の態様は、大きいコードワードのRAIN保護のための冗長メタデータ方式を提供することによって上記および他の不備に対処する。特に、メモリサブシステムにあるメモリの他の部分に格納されたホストデータのために生成された異なるタイプの冗長メタデータを格納するために、メモリサブシステムにあるメモリの一部分を予約することができる。メモリの予約された部分は、メモリサブシステムの他のメモリデバイスに格納されたホストデータのために生成された冗長メタデータを格納するように構成された1つまたは複数の指定されたメモリデバイスに対応し得る。例えば、メモリサブシステムは、ホストデータを格納するように指定されたメモリサブシステムの複数のメモリデバイスにわたって複数のストライプを含み得る。メモリサブシステムのメモリデバイスのうちの1つまたは複数のメモリデバイスを、複数のメモリデバイスにわたって各ストライプに関連づけられたLUNに常駐するホストデータに関連づけられた異なるタイプの冗長メタデータを格納するように指定することができる。冗長メタデータは、追加のパリティデータと、RAIN冗長メタデータと、LUN冗長メタデータとを含み得る。LUN冗長メタデータは、メモリデバイス上に格納された各大きいコードワードの追加のパリティデータを復元するために使用することができる。メモリサブシステムコントローラは、追加のパリティデータを用いた1つまたは複数のXOR演算に基づいてLUN冗長メタデータを生成することができる。例えば、メモリサブシステムコントローラは、各LUN上に格納された追加のパリティビットの各々に1つまたは複数のXOR演算を適用することによって、LUNパリティコードワードを生成することができる。
【0015】
いくつかの事例では、特定のタイプの冗長メタデータを格納するために、メモリデバイスの別個の部分(例えばプレーン)を指定することができる。ホストデータがLUNにプログラムされると、メモリサブシステムコントローラは、それぞれのストライプのための追加のパリティデータを生成することができ、生成された追加のパリティデータを1つまたは複数のメモリデバイスの指定された部分に格納することができる。さらに、メモリサブシステムコントローラは、RAIN冗長メタデータおよびLUN冗長メタデータを生成し、それらの冗長メタデータを1つまたは複数のメモリデバイスの他の指定された部分に格納することができる。一実施形態では、追加のパリティデータとLUN冗長メタデータとを異なる指定された部分に格納することができる。メモリサブシステムの各ストライプに関連づけられた異なるタイプの冗長メタデータを1つまたは複数の指定されたメモリデバイスの別個の部分に格納することによって、メモリサブシステムコントローラは、複数のメモリデバイスのうちの1つまたは複数のメモリデバイスにおけるメモリアクセス障害の後に、メモリサブシステムの複数のストライプに関連づけられたそれぞれのLUNに常駐するホストデータを復元することができる。例えば、メモリサブシステムコントローラは、メモリサブシステムの一部分において(例えばメモリページにおいて)実行されたメモリアクセス動作中(例えば読み出し動作中など)に障害が発生したことを検出することができる。メモリアクセス動作障害を検出したことに応答して、メモリサブシステムコントローラは、メモリページが、1)ホストデータのみを含むかどうか、2)ホストデータと追加のパリティデータとを含むかどうか、3)ホストデータと追加のパリティデータとRAIN冗長メタデータ(例えばRAINパリティコードワード)とを含むかどうか、または、4)RAIN冗長メタデータとLUN冗長メタデータ(例えばパリティコードワード)とを含むかどうかを決定することができる。ホストデータは、ベースパリティデータを用いて符号化することができる。メモリページがホストデータのみを含むと決定したことに応答して、メモリサブシステムコントローラは、メモリデバイスの他の部分にプログラムされたRAINパリティメタデータと残りのホストデータとに対する一連のXOR演算を使用して、メモリページ上のホストデータを復元することができる。メモリページがホストデータと追加のパリティデータとを含むと決定したことに応答して、メモリサブシステムコントローラは、RAINパリティメタデータと残りのホストデータとに対する一連のXOR演算を使用してメモリページ上のホストデータを復元し、メモリデバイスの他の部分にプログラムされたLUNパリティデータと残りの追加のパリティデータとを使用して追加のパリティデータを復元することができる。代替的に、いくつかの実施形態では、メモリサブシステムコントローラがベースパリティデータを使用してホストデータを復元することに失敗したことに応答して、メモリサブシステムコントローラは、追加のパリティデータと一連のXOR演算とを使用してホストデータを復元するために、追加のパリティデータを使用することができる。メモリページがホストデータと追加のパリティデータとRAINパリティメタデータとを含むと決定したことに応答して、メモリサブシステムコントローラは、上記で説明した方法を使用してホストデータと追加のパリティメタデータとを復元し、ホストデータを使用してRAINパリティメタデータを再生成することができる。メモリページがRAINパリティデータとLUNパリティデータとを含むと決定したことに応答して、メモリサブシステムコントローラは、ホストデータと追加のパリティデータとを使用してRAINパリティメタデータとLUNパリティデータとを再生成することができる。異なるメモリデバイス上の特定のロケーションにRAINパリティデータとLUNパリティデータと追加のパリティデータとを格納することによって、メモリサブシステムコントローラは、メモリデバイスの任意の障害が生じた部分に関連づけられたデータ項目のためのデータ復元プロセスを実行することができる。データ項目は、メモリサブシステムのLUNに書き込まれた、および/またはメモリサブシステムのLUNから読み出されたデータの最小単位を指す。例えば、データ項目はデータブロックまたはキーバリュー(key-value)ペアに対応し得る。データ項目を復元したことに応答して、データ項目を同じまたは異なるメモリページにプログラムすることができる。いくつかの実施形態では、第2階層ECCパリティを使用してLUNパリティデータおよび/またはRAINパリティデータを符号化することができる。
【0016】
各LUNが6つのプレーン(例えば24個のメモリページ)にわたる、4つのLUNを含む一実施形態では、LUNパリティデータとRAINパリティデータとを5つのメモリページ上に格納することができる。したがって、本開示の利点は、限定されるものではないが、ホストデータを格納するために利用可能なメモリスペースの量を最大にしながら、第2階層ECCパリティメタデータを使用して符号化されたホストデータの復元を可能にする、ホストデータ復元方式を提供することを含む。第2階層ECCパリティを使用してホストデータを符号化することによって、メモリサブシステムコントローラは、ホストデータ中のエラーを検出し、訂正することができる。さらに、RAIN冗長メタデータおよびLUN冗長メタデータは、メモリアクセス障害の後に、メモリサブシステムの1つまたは複数のメモリデバイスのLUNにあるデータ項目を復元することができる。したがって、ホストデータを格納するためにメモリサブシステムのかなりの量のスペースが利用可能にされている間に、メモリデバイス障害の場合に大きいコードワードを保護することができる。結果として、かなりの量のシステムリソースが他のプロセスのために利用可能にされる間に、ホストデータのための強いECC保護が与えられ、それにより、全体的なシステム効率が向上し、全体的なシステムレイテンシが低減される。
【0017】
図1は、本開示のいくつかの実施形態によるメモリサブシステム110を含む例示的なコンピューティングシステム100を示す図である。メモリサブシステム110は、1つもしくは複数の揮発性メモリデバイス(例えば、メモリデバイス140)、1つもしくは複数の不揮発性メモリデバイス(例えば、メモリデバイス130)、またはそのようなものの組合せなどの媒体を含み得る。
【0018】
メモリサブシステム110は、ストレージデバイス、メモリモジュール、またはストレージデバイスおよびメモリモジュールの組合せであり得る。ストレージデバイスの例としては、ソリッドステートドライブ(SSD)、フラッシュドライブ、ユニバーサルシリアルバス(USB)フラッシュドライブ、埋め込み型マルチメディアコントローラ(eMMC)ドライブ、ユニバーサルフラッシュストレージ(UFS)ドライブ、セキュアデジタル(SD)カード、およびハードディスクドライブ(HDD)が挙げられる。メモリモジュールの例としては、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、および様々なタイプの不揮発性デュアルインラインメモリモジュール(NVDIMM)が挙げられる。
【0019】
コンピューティングシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイス、車両(例えば、航空機、ドローン、列車、自動車、または他の運輸機関)、モノのインターネット(IoT)が可能なデバイス、埋め込み型コンピュータ(例えば、車両、産業機器、またはネットワーク化された商用デバイスに含まれるもの)、またはメモリおよび処理デバイスを含むそのようなコンピューティングデバイスなどの、コンピューティングデバイスであり得る。
【0020】
コンピューティングシステム100は、1つまたは複数のメモリサブシステム110に結合されるホストシステム120を含み得る。いくつかの実施形態において、ホストシステム120は、異なるタイプの複数のメモリサブシステム110に結合される。
図1は、1つのメモリサブシステム110に結合されたホストシステム120の一例を示す。本明細書で使用される場合、「~に結合される」または「~と結合される」は、一般的に、コンポーネント間の接続を指し、これは、有線またはワイヤレスにしろ、電気、光学、磁気などの接続を含め、間接通信接続または直接通信接続(例えば、介在するコンポーネントなし)であり得る。
【0021】
ホストシステム120は、プロセッサチップセット、およびプロセッサチップセットによって実行されるソフトウェアスタックを含み得る。プロセッサチップセットは、1つまたは複数のコア、1つまたは複数のキャッシュ、メモリコントローラ(例えば、NVDIMMコントローラ)、およびストレージプロトコルコントローラ(例えば、PCIeコントローラ、SATAコントローラ)を含み得る。ホストシステム120は、例えば、メモリサブシステム110にデータを書き込み、メモリサブシステム110からデータを読み出すために、メモリサブシステム110を使用する。
【0022】
ホストシステム120は、物理的なホストインターフェースを介してメモリサブシステム110に結合され得る。物理的なホストインターフェースの例としては、限定されるものではないが、シリアルアドバンストテクノロジアタッチメント(SATA)インターフェース、PCIe(Peripheral Component Interconnect Express)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、ファイバチャネル、シリアルアタッチドSCSI(SAS)、ダブルデータレート(DDR)メモリバス、スモールコンピュータシステムインターフェース(SCSI)、デュアルインラインメモリモジュール(DIMM)インターフェース(例えば、ダブルデータレート(DDR)をサポートするDIMMソケットインターフェース)などが挙げられる。物理的なホストインターフェースは、ホストシステム120とメモリサブシステム110との間でデータを送信するために使用され得る。ホストシステム120はさらに、メモリサブシステム110が物理的なホストインターフェース(例えば、PCIeバス)によってホストシステム120と結合されるとき、コンポーネント(例えば、メモリデバイス130)にアクセスするためにNVM Express(NVMe)インターフェースを利用し得る。物理的なホストインターフェースは、メモリサブシステム110とホストシステム120との間で制御信号、アドレス信号、データ信号、および他の信号を渡すためのインターフェースを提供し得る。
図1は、例としてメモリサブシステム110を示す。一般に、ホストシステム120は、同じ通信接続、複数の別個の通信接続、および/または通信接続の組合せを介して、複数のメモリサブシステムにアクセスし得る。
【0023】
メモリデバイス130、140は、異なるタイプの不揮発性メモリデバイスおよび/または揮発性メモリデバイスの任意の組合せを含み得る。揮発性メモリデバイス(例えば、メモリデバイス140)は、限定されるものではないが、ダイナミックランダムアクセスメモリ(DRAM)およびシンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)であってもよい。
【0024】
不揮発性メモリデバイス(例えば、メモリデバイス130)のいくつかの例としては、否定論理積(NAND)タイプのフラッシュメモリ、および不揮発性メモリセルのクロスポイントアレイである3次元クロスポイント(「3Dクロスポイント」)メモリデバイスなど書き込みインプレイスメモリが挙げられる。不揮発性メモリセルのクロスポイントアレイは、積層可能なクロスグリッドデータアクセスアレイと併せて、バルク抵抗の変化に基づいてビット格納を実施し得る。加えて、多くのフラッシュベースのメモリと対照的に、クロスポイント不揮発性メモリは、書き込みインプレイス動作を実施することができ、ここでは、不揮発性メモリセルは、不揮発性メモリセルが先に消去されることなく、プログラムされ得る。NANDタイプのフラッシュメモリとしては、例えば、2次元NAND(2D NAND)、および3次元NAND(3D NAND)が挙げられる。
【0025】
メモリデバイス130の各々は、メモリセルの1つまたは複数のアレイを含み得る。メモリセルの1つのタイプ、例えば、単一レベルセル(SLC)は、セルあたり1ビットを格納することができる。多レベルセル(MLC)、3レベルセル(TLC)、4レベルセル(QLC)、および5レベルセル(PLC)などの他のタイプのメモリセルは、セルあたり複数ビットを格納することができる。いくつかの実施形態において、メモリデバイス130の各々は、SLC、MLC、TLC、QLC、PLCまたはそのようなものの任意の組合せなどのメモリセルの1つまたは複数のアレイを含み得る。いくつかの実施形態において、特定のメモリデバイスは、メモリセルのSLC部分、およびMLC部分、TLC部分、QLC部分、またはPLC部分を含み得る。メモリデバイス130のメモリセルは、データを格納するために使用されるメモリデバイスの論理ユニットを指し得るページとしてグループ化され得る。いくつかのタイプのメモリ(例えば、NAND)では、ページは、ブロックを形成するためにグループ化され得る。
【0026】
不揮発性メモリセルの3DクロスポイントアレイおよびNANDタイプのフラッシュメモリ(例えば、2D NAND、3D NAND)などの不揮発性メモリコンポーネントが説明されるが、メモリデバイス130は、リードオンリメモリ(ROM)、相変化メモリ(PCM)、自己選別メモリ、他のカルコゲナイドベースのメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、強誘電体ランダムアクセスメモリ(FeRAM)、磁気ランダムアクセスメモリ(MRAM)、スピントランスファトルク(STT)-MRAM、導電性ブリッジRAM(CBRAM)、抵抗ランダムアクセスメモリ(RRAM)、酸化物ベースのRRAM(OxRAM)、否定論理和(NOR)フラッシュメモリ、または電気的に消去可能なプログラマブルリードオンリメモリ(EEPROM)など、任意の他のタイプの不揮発性メモリに基づき得る。
【0027】
メモリサブシステムコントローラ115(または簡略のためコントローラ115)は、メモリデバイス130においてデータを読み出すこと、データを書き込むこと、またはデータを消去することなどの動作、および他のそのような動作を実施するために、メモリデバイス130と通信することができる。メモリサブシステムコントローラ115は、1つもしくは複数の集積回路および/もしくは個別コンポーネント、バッファメモリ、またはそれらの組合せなどのハードウェアを含み得る。ハードウェアは、本明細書に説明される動作を実施するために専用(すなわち、ハードコードされた)論理を有するデジタル回路を含み得る。メモリサブシステムコントローラ115は、マイクロコントローラ、専用論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、または他の好適なプロセッサであり得る。
【0028】
メモリサブシステムコントローラ115は、ローカルメモリ119に格納された命令を実行するように構成される1つまたは複数のプロセッサ(例えば、プロセッサ117)を含む、処理デバイスを含み得る。示された例において、メモリサブシステムコントローラ115のローカルメモリ119は、メモリサブシステム110とホストシステム120との間の通信を処理することを含む、メモリサブシステム110の動作を制御する様々なプロセス、動作、論理フロー、およびルーチンを実施するための命令を格納するように構成される埋め込み型メモリを含む。
【0029】
いくつかの実施形態において、ローカルメモリ119は、メモリポインタ、取り出したデータなどを格納するメモリレジスタを含み得る。ローカルメモリ119は、マイクロコードを格納するためのリードオンリメモリ(ROM)も含み得る。
図1の例示的なメモリサブシステム110は、メモリサブシステムコントローラ115を含んで示されているが、本開示の別の実施形態において、メモリサブシステム110は、メモリサブシステムコントローラ115を含まず、代わりに、外部制御(例えば、外部ホストによって、またはメモリサブシステムとは別個のプロセッサもしくはコントローラによって提供される)に依拠し得る。
【0030】
一般に、メモリサブシステムコントローラ115は、ホストシステム120からコマンドまたは動作を受信することができ、メモリデバイス130への所望のアクセスを達成するために、そのコマンドまたは動作を命令または適切なコマンドへと変換することができる。メモリサブシステムコントローラ115は、ウェアレベリング動作、ガベージコレクション動作、エラー検出および誤り訂正符号(ECC)動作、暗号化動作、キャッシング動作、ならびに、論理アドレス(例えば、論理ブロックアドレス(LBA)、名前空間)とメモリデバイス130と関連づけられる物理アドレス(例えば、物理ブロックアドレス)との間のアドレス変換など、他の動作を担当し得る。メモリサブシステムコントローラ115は、ホストインターフェース回路をさらに含み、この物理的なホストインターフェースを介してホストシステム120と通信し得る。ホストインターフェース回路は、ホストシステムから受信したコマンドを、メモリデバイス130にアクセスするためのコマンド命令へと変換し、ならびにメモリデバイス130と関連づけられた応答を、ホストシステム120のための情報へと変換し得る。
【0031】
メモリサブシステム110は、示されていない追加の回路またはコンポーネントも含み得る。いくつかの実施形態において、メモリサブシステム110は、キャッシュまたはバッファ(例えば、DRAM)、およびメモリサブシステムコントローラ115からアドレスを受信し、メモリデバイス130にアクセスするためにそのアドレスを復号することができるアドレス回路(例えば、行デコーダおよび列デコーダ)を含み得る。
【0032】
いくつかの実施形態において、メモリデバイス130は、メモリデバイス130の1つまたは複数のメモリセルに対して動作を実行するためにメモリサブシステムコントローラ115と併せて動作するローカルメディアコントローラ135を含む。外部コントローラ(例えば、メモリサブシステムコントローラ115)は、メモリデバイス130を外部から管理する(例えば、メモリデバイス130に対して媒体管理動作を実施する)ことができる。いくつかの実施形態において、メモリサブシステム110は、ダイ上の制御論理(例えば、ローカルコントローラ132)を有する生のメモリデバイスである、被管理メモリデバイス、および同じメモリデバイスパッケージ内の媒体管理のためのコントローラ(例えば、メモリサブシステムコントローラ115)である。被管理メモリデバイスの例は、被管理NAND(MNAND)デバイスである。
【0033】
メモリサブシステム110は、メモリデバイス130、140の1つまたは複数の部分に格納されたホストデータのために生成された冗長データを管理することができる、冗長メタデータマネージャコンポーネント113を含む。いくつかの実施形態では、メモリサブシステムコントローラ115は冗長メタデータマネージャコンポーネント113の少なくとも一部分を含む。例えば、メモリサブシステムコントローラ115は、本明細書で説明する動作を実行するためにローカルメモリ119に格納された命令を実行するように構成されたプロセッサ117(処理デバイス)を含み得る。いくつかの実施形態では、冗長メタデータマネージャコンポーネント113は、ホストシステム120、アプリケーション、またはオペレーティングシステムの一部である。
【0034】
冗長メタデータマネージャコンポーネント113は、ユーザデータのための、および/または2つ以上の論理メモリユニット(LUN)にあるメモリページのグループのための冗長メタデータを生成するように構成され得る。LUNは、複数のプレーン、ブロックおよび/またはダイにわたるメモリページのグループであり得る。LUNは、単一の動作において書き込まれるかまたは消去され得る、メモリデバイスの個々のセグメントを表し得る。冗長メタデータは、メモリデバイス130、140の一部分におけるメモリアクセス動作(例えば、書き込み動作、読み出し動作など)が失敗した後に、メモリデバイス130、140のその一部分にプログラムされたデータ項目を復元するためにメモリサブシステムコントローラ115によって使用され得る、そのデータ項目のために生成されたメタデータ(例えば、パリティデータ)を指す。いくつかの実施形態では、(本明細書ではコンポーネント113とも呼ばれる)冗長メタデータマネージャコンポーネント113は、障害が生じたデータ項目のための冗長メタデータと、メモリデバイス130、140(またはメモリサブシステム110の別のメモリデバイス130、140)に格納された1つまたは複数の他のデータ項目とに基づいて、データ復元動作(例えば、1つまたは複数の排他的論理和(XOR)演算)を実行することによって、障害が生じたデータ項目を計算または再構築することができる。
【0035】
コンポーネント113は、格納されたデータの事前決定されたロケーション(例えば、LUNの複数のプレーンにわたるホストデータのストライプ、各プレーンおよび/またはLUN中の各メモリページ内のデータのロケーション(メモリページの第1の1/4ページ、メモリページの第2の1/4ページ、以下同様)など)、または格納されたデータのタイプ(例えば、標準コードワード、追加のパリティデータなど)に基づいて、異なるタイプの冗長メタデータを生成することができる。いくつかの実施形態では、冗長メタデータは、第1階層ECCパリティデータ(例えば、ベースパリティデータ)と、第2階層ECCパリティデータ(例えば、追加のパリティデータ)と、RAINパリティメタデータと、LUN冗長メタデータとを含み得る。RAINパリティメタデータは、ホストデータ(例えば、標準コードワード)を復元するために使用することができる。LUN冗長メタデータは、格納されたホストデータのための追加のパリティデータを復元するために使用することができる。
【0036】
図2は、本開示のいくつかの実施形態による、マルチプレーンLUNのセットのための冗長メタデータを生成するための例示的な方法200のフロー図である。方法200は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイス上で実行される(runまたはexecuted)命令)、またはそれらの組合せを含み得る処理論理によって実施され得る。いくつかの実施形態では、方法200は
図1の冗長メタデータマネージャコンポーネント113によって実行される。他のまたは同様の実施形態では、方法200の1つまたは複数の動作は、メモリサブシステムコントローラ115の別のコンポーネントによって、またはローカルメディアコントローラ135のコンポーネントによって実行される。特定のシーケンスまたは順序で示されるが、別段の記載のない限り、プロセスの順序は修正され得る。したがって、示された実施形態は、単に例として理解されるべきであり、示されたプロセスは、異なる順序で実施され得、いくつかのプロセスが並行して実施され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において、省略され得る。したがって、全実施形態においてすべてのプロセスが必要とされるわけではない。他のプロセスフローが可能である。
【0037】
ブロック210において、処理論理は、1つまたは複数のメモリデバイス上にプログラムするために書き込みデータを受信する。いくつかの実施形態では、書き込みデータはホストシステム120から受信することができる。いくつかの実施形態では、書き込みデータは大きいコードワードのセットを含み得る。各大きいコードワードは、ホストデータおよびベースパリティ(第1階層ECCパリティ)を含む標準コードワードと、追加のパリティ(第2階層ECCパリティ)とから構成され得る。
【0038】
他の実施形態では、書き込みデータは、符号化されていないホストデータを含む。符号化されていないホストデータを受信したことに応答して、処理論理は、ホストデータとパリティデータとを使用して大きいコードワードを生成することができる。特に、処理論理は、最初に、受信されたホストデータを用いた1つまたは複数のXOR演算に基づいてベースパリティデータを生成することによって、標準コードワードを生成する。例示的な例として、各標準コードワードは、サイズが4KBであり、1ページの1/4のサイズにプログラム可能であり得る。しかしながら、本開示の実施形態は、任意のサイズのページとともに使用することができることに留意されたい。処理論理は、次いで、標準コードワードを用いた1つまたは複数のXOR演算に基づいて追加のパリティデータを生成することによって、大きいコードワードを生成する。ベースパリティデータは、ホストデータが破損した場合に、対応するホストデータを再構成または再計算するために使用することができる。追加のパリティデータは、ベースパリティデータと組み合わせて、より強い訂正能力をもつ標準コードワードを読み出すことに失敗した場合に、対応する標準コードワードを再構成または再計算するために使用することができる。
【0039】
いくつかの実施形態では、追加のパリティデータは、第2階層ECCパリティを使用して符号化することができる。例えば、追加のパリティデータに基づいて生成された各標準コードワードは、大きいコードワードを生成するために符号化することができる。各大きいコードワードのための追加のパリティデータは、
図3に関してより詳細に説明する指定されたセクションにプログラムすることができる。いくつかの実施形態では、特定の追加のパリティデータのみを第2階層ECCパリティを用いて符号化することができる。例えば、追加のパリティデータを格納するプレーンとは異なるプレーン上に格納されたホストデータベースの標準コードワードに対応する追加のパリティデータは、第2階層ECCパリティを使用して符号化することができるが、追加のパリティデータと同じプレーン上に格納されたホストデータベースの標準コードワードに対応する追加のパリティデータは同じプレーン中の第2階層ECCコードワードに相関する。異なるプレーンが対応する追加のパリティデータを格納する、標準コードワードを格納するプレーンの障害の場合、追加のパリティデータは、障害が生じた標準コードワードの復元を向上(例えば、スピードアップ)させ得る。しかしながら、標準コードワードならびに対応する追加のパリティデータを格納するプレーンの障害の場合、標準コードワードとそれの対応する追加のパリティデータとを復元するために他の復元方法が使用されるので、追加のパリティの第2階層ECCパリティは不要である。
【0040】
ブロック212において、処理論理は1つまたは複数のメモリデバイスの1つまたは複数のLUNに大きいコードワードをプログラムする。特に、各LUNは、メモリサブシステム110のメモリデバイス130、140にある複数のプレーン、ブロックおよび/またはダイにわたるメモリページのストライプに対応し得る。例示的な例として、複数のプレーンにわたるメモリページの複数のLUNについて以下で説明する。各LUNにおいて、特定タイプのデータ(例えば、ユーザデータ、符号化されたデータ、異なるタイプの冗長データ(追加のパリティデータ、RAINパリティメタデータ、LUNパリティメタデータなど))を格納するために、メモリページのいくつかのセクションを指定することができる。各大きいコードワードについて、標準コードワードのために指定されたLUNの利用可能なページに、対応する標準コードワードをプログラムすることができ、対応するLUNの指定されたセクション(例えば、指定された1/4ページ)に各強いコードワードの追加のパリティをプログラムすることができる。指定されるセクションについて
図3に関してより詳細に説明する。
【0041】
ブロック214において、処理論理は、LUN冗長メタデータを生成し、1つまたは複数のメモリデバイスにプログラムする。LUN冗長メタデータは、1つまたは複数の大きいコードワードの追加のパリティデータ(例えば、追加のパリティ)を復元するために使用することができる。いくつかの実施形態では、処理論理は、追加のパリティデータを用いた1つまたは複数のXOR演算に基づいてLUN冗長メタデータを生成することができる。例えば、処理論理は、各LUN上に格納された追加のパリティビットの各々に1つまたは複数のXOR演算を適用することができる。LUN冗長メタデータは、
図3に関してより詳細に説明する指定されたLUNの指定されたセクションにプログラムすることができる。追加のパリティデータを格納するメモリデバイスの一部分に障害が生じ、対応するデータが失われたかまたは破損した場合、処理論理は、残りの追加のパリティデータとLUN冗長メタデータとの間の1つまたは複数のXOR演算に基づいて、失われた/破損したデータを再構成することができる。
【0042】
ブロック216において、処理論理は、RAIN冗長メタデータを生成し、1つまたは複数のメモリデバイスにプログラムする。特に、処理論理は、各メモリページの特定のセクションに格納されたデータ項目(例えば、標準コードワード)に基づいて冗長メタデータ生成動作(例えば、排他的論理和(XOR)演算)を実行することによって、RAIN冗長メタデータの第1のセット(例えば、第1のRAINコードワード)を生成することができる。例えば、処理論理は、各メモリページの第1の1/4ページに格納された標準コードワードに基づいてXOR演算を実行することによって、第1のRAINコードワードを生成することができる。処理論理は、次いで、各メモリページの第2の1/4ページに格納された標準コードワードに基づいてXOR演算を実行することによって、第2のRAINコードワードを生成することができる。処理論理は、次いで、各メモリページの第3の1/4ページに格納された標準コードワードに基づいてXOR演算を実行することによって、第3のRAINコードワードを生成することができる。処理論理は、次いで、各メモリページの第4の1/4ページに格納された標準コードワードに基づいてXOR演算を実行することによって、第4のRAINコードワードを生成することができる。各RAINコードワードは、
図3に関してより詳細に説明する指定されたLUNの指定されたセクションにプログラムすることができる。
【0043】
いくつかの実施形態では、各RAINコードワードは、第2階層ECCパリティを使用してさらに符号化することができる。例えば、処理論理は、各RAINコードワードのための追加のパリティメタデータ(以下「追加のRAINパリティ」)を生成するようにRAINストライプを構成する、ホストデータの追加のパリティデータに対する1つまたは複数のXOR演算を実行することができる。追加のRAINパリティデータは、
図3に関してより詳細に説明する指定されたLUNの指定されたセクションにプログラムすることができる。
【0044】
図3は、本開示のいくつかの実施形態による、LUNのセット中に冗長メタデータを格納するための例示的な構成の図である。図示のように、LUN312A~Dは、
図1に関して説明した1つまたは複数のメモリデバイス130、140に対応し得るプレーン314A~Fにわたる。
図3は、(メモリサブシステムコントローラ115(図示せず)に接続され得る)6つのプレーンを示しているが、本開示の実施形態は、任意の数のメモリサブシステムコントローラ(例えば、1つのメモリサブシステムコントローラ115、2つのメモリサブシステムコントローラ115など)に接続された任意の数のプレーン、ブロックおよび/またはダイを対象とし得ることに留意されたい。
【0045】
図3に示されているように、各LUN312A~Dは、6つのプレーン(例えば、プレーン314A~F)にわたる6つのメモリページ(各メモリページは4つの1/4ページに分割される)のストライプを含む。各標準コードワードを1/4ページに格納することができる。図示のように、LUN312A~Cの場合、26個の1/4ページのうちの最初の25個が、標準コードワードを格納するように構成される。LUN312Dの場合、26個の1/4ページのうちの最初の20個が、標準コードワードを格納するように構成される。LUN312A~Cの各々の最後の1/4ページは、各それぞれのLUN中に格納された標準コードワードのための追加のパリティデータを格納するように構成される。例えば、1/4ページ322は、LUN312A上に格納された23個の標準コードワードのための追加のパリティメタデータを格納するように構成することができ、1/4ページ324は、LUN312B上に格納された23個の標準コードワードのための追加のパリティデータを格納するように構成することができ、1/4ページ326は、LUN312C上に格納された23個の標準コードワードのための追加のパリティデータを格納するように構成することができる。LUN312Dに関して、LUN312Dのプレーン314Eの第3の1/4ページ(例えば、1/4ページ328)は、LUN312D上に格納された18個の標準コードワードのための追加のパリティデータを格納するように構成することができる。
【0046】
RAINパリティコードワード332、334、336、338の各々をLUN312D上に格納することができる。特に、LUN312Dのプレーン314Fの第1の1/4ページは、各メモリページの第1の1/4ページに格納された標準コードワードのために生成されたRAINパリティコードワード332を格納するように構成することができ、LUN312Dのプレーン314Fの第2の1/4ページは、各メモリページの第2の1/4ページに格納された標準コードワードのために生成されたRAINパリティコードワード334を格納するように構成することができ、LUN312Dのプレーン314Fの第3の1/4ページは、各メモリページの第3の1/4ページに格納された標準コードワードのために生成されたRAINパリティコードワード336を格納するように構成することができ、LUN312Dのプレーン314Eの第4の1/4ページは、各メモリページの第4の1/4ページに格納された標準コードワードのために生成されたRAINパリティコードワード338を格納するように構成することができる。
【0047】
LUN冗長メタデータ342をLUN312Dのプレーン314F上に格納することができる。特に、LUN312Dの最後の1/4ページの一部分はLUN冗長メタデータ342を格納することができる。さらに、LUN312Dのプレーン314F上の最後の1/4ページの別の部分は、各RAINコードワード(例えば、追加のRAINパリティ)のために生成された第2階層ECCパリティデータ344を格納するように構成することができる。
図5に関して後でより詳細に説明するように、異なるタイプの冗長メタデータ(例えば、追加のパリティメタデータからの別個のメモリページ上のLUNパリティデータ)をプログラムすることによって、メモリサブシステムコントローラは、複数のメモリデバイスのうちの1つまたは複数のメモリデバイスにおけるメモリアクセス障害の後に、メモリサブシステムの複数のストライプに関連づけられたそれぞれのLUNに常駐するホストデータを復元することができる。
【0048】
図4は、本開示のいくつかの実施形態による、LUNのセット中に冗長メタデータを格納するための例示的な構成の別の図を示している。図示のように、
図1に関して説明した1つまたは複数のメモリデバイス130、140に対応し得るLUN412A~Dはプレーン414A~Fにわたる。
図4は、(メモリサブシステムコントローラ115(図示せず)に接続され得る)6つのプレーンを示しているが、本開示の実施形態は、任意の数のメモリサブシステムコントローラ(例えば、1つのメモリサブシステムコントローラ115、2つのメモリサブシステムコントローラ115など)に接続された任意の数のプレーン、ブロックおよび/またはダイを対象とし得ることに留意されたい。図示のように、冗長メタデータは、
図3に示されているように最後の2つのプレーンに格納されるのではなく、LUN412Dの最初の2つのプレーン(例えば、プレーン414A~B)に格納される。特に、1/4ページ422は、LUN412A上に格納された23個の標準コードワードのための追加のパリティメタデータを格納するように構成することができ、1/4ページ424は、LUN412B上に格納された23個の標準コードワードのための追加のパリティデータを格納するように構成することができ、1/4ページ426は、LUN412C上に格納された23個の標準コードワードのための追加のパリティデータを格納するように構成することができる。LUN412Dに関して、LUN412Dのプレーン414Bの第2の1/4ページ(例えば、1/4ページ428)は、LUN412D上に格納された18個の標準コードワードのための追加のパリティデータを格納するように構成することができる。RAINパリティコードワード432、434、436、438の各々をLUN412Dの最初の2つのプレーン(例えば、プレーン414A~B)上に格納することができる。各RAINコードワードのためのLUN冗長メタデータ442と第2階層ECCパリティデータ444とをLUN412Dのプレーン414A上に格納することができる。
図4は、異なる構成を使用して冗長メタデータを格納することができること、および、メモリページ、プレーン、またはブロックの障害の場合、いずれのデータ項目も残りのデータ項目を使用して復元することができることを立証している。特に、異なるメモリデバイス上の特定のロケーションにRAINパリティデータとLUNパリティデータと追加のパリティデータとを格納することによって、メモリサブシステムコントローラは、メモリデバイスの障害が生じた部分に関連づけられたデータ項目のためのデータ復元プロセスを実行することができる。
【0049】
図5は、本開示のいくつかの実施形態による、冗長メタデータを使用してデータを復元するための例示的な方法500のフロー図である。方法500は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラマブル論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイス上で実行される(runまたはexecuted)命令)、またはそれらの組合せを含み得る処理論理によって実施され得る。いくつかの実施形態では、方法500は
図1の冗長メタデータマネージャコンポーネント113によって実行される。他のまたは同様の実施形態では、方法200の1つまたは複数の動作は、メモリサブシステムコントローラ115の別のコンポーネントによって、またはローカルメディアコントローラ135のコンポーネントによって実行される。特定のシーケンスまたは順序で示されるが、別段の記載のない限り、プロセスの順序は修正され得る。したがって、示された実施形態は、単に例として理解されるべきであり、示されたプロセスは、異なる順序で実施され得、いくつかのプロセスが並行して実施され得る。加えて、1つまたは複数のプロセスは、様々な実施形態において、省略され得る。したがって、全実施形態においてすべてのプロセスが必要とされるわけではない。他のプロセスフローが可能である。
【0050】
動作510において、読み出し要求を処理したことに応答して、処理論理は、メモリアクセス障害が発生したと決定することができる。例えば、処理論理は、欠陥、エラー、データ破損などにより、要求されたデータを取り出すことが不可能になる。
【0051】
動作512において、処理論理は、ホストデータのみを格納するメモリデバイスのセクション(例えば、メモリページ)(例えば、LUN312A~Cのプレーン314A~314E、またはLUN312Dのプレーン314A~D)上でメモリアクセス障害が発生したかどうかを決定する。例えば、処理論理は、読み出し要求に関連づけられた物理アドレスが、ホストデータのみを格納するように構成されたメモリデバイスのメモリページに相関するかどうかを決定することができる。読み出し要求が、ホストデータのみを格納するメモリデバイスのメモリページに関連づけられていると決定したことに応答して、処理論理は動作514に進む。読み出し要求が、ホストデータのみを格納するメモリデバイスのメモリページに関連づけられていないと決定したことに応答して、処理論理は動作516に進む。
【0052】
動作514において、処理論理はホストデータのみのメモリページを復元する。例えば、メモリアクセス障害は、追加のパリティデータを格納するいかなるページ、ブロック、および/またはプレーンにも影響を及ぼさないので、処理論理は、追加のパリティデータを使用して対応するストライプ中のホストデータおよび/またはRAINパリティコードワードを訂正することができる。いくつかの実施形態では、処理論理は、LUN(例えば、LUN312A~D)上の残りのホストデータと、RAIN冗長メタデータとを使用してメモリページのホストデータを再構成する。例えば、処理論理は、障害が生じたメモリページのホストデータを再構成するために、RAINパリティデータと残りのホストデータベースのコードワード(標準コードワードまたは大きいコードワード)とに対してRAINアルゴリズム(例えば、一連のXOR演算)を使用することができる。特に、各メモリページの第1の1/4ページに格納された第1のRAINコードワードと残りの標準コードワードとを、障害が生じたメモリページの第1の1/4ページに格納されていた標準コードワードを再構成するために使用することができ、各メモリページの第2の1/4ページに格納された第2のRAINコードワードと残りの標準コードワードとを、障害が生じたメモリページの第2の1/4ページに格納されていた標準コードワードを再構成するために使用することができ、各メモリページの第3の1/4ページに格納された第3のRAINコードワードと残りの標準コードワードとを、障害が生じたメモリページの第3の1/4ページに格納されていた標準コードワードを再構成するために使用することができ、各メモリページの第4の1/4ページに格納された第4のRAINコードワードと残りの標準コードワードとを、障害が生じたメモリページの第4の1/4ページに格納されていた標準コードワードを再構成するために使用することができる。
【0053】
動作516において、処理論理は、ホストデータのための追加のパリティデータを格納する(例えば、読み出し要求が、LUN312A~Cのプレーン314FおよびLUN312Dのプレーン314Eなど、ホストデータのための追加のパリティデータを格納するメモリデバイスのメモリページに関連づけられた)セクション上でメモリアクセス障害が発生したかどうかを決定する。ホストデータのための追加のパリティデータを格納するメモリデバイスのセクション上でメモリアクセス障害が発生したと決定したことに応答して、処理論理は動作518に進む。ホストデータのための追加のパリティデータを格納するメモリデバイスのセクション上でメモリアクセス障害が発生しなかったと決定したことに応答して、処理論理は動作522に進む。
【0054】
動作518において、処理論理はメモリページのホストデータと追加のパリティデータとを復元する。特に、処理論理は、RAINパリティデータと残りのホストデータとに対する一連のXOR演算を使用してメモリページ上のホストデータを復元することができる。処理論理は、LUNに関連づけられた他のメモリページにプログラムされたLUNパリティデータと残りの追加のパリティデータとを使用して追加のパリティデータを復元することができる。
【0055】
動作520において、処理論理は、RAINパリティデータを格納するセクション(例えば、LUN312Dのプレーン314E)上でメモリアクセス障害が発生したかどうかを決定する。RAINパリティデータを格納するセクション上でメモリアクセス障害が発生したと決定したことに応答して、処理論理は動作522に進む。RAINパリティデータを格納するセクション上でメモリアクセス障害が発生しなかったと決定したことに応答して、処理論理は方法500を終了する。
【0056】
動作520において、処理論理は、ホストデータと追加のパリティデータとを使用してRAINパリティデータとLUNパリティデータとを再生成する。例えば、処理論理は、ホストデータ(例えば、標準コードワード)に対して1つまたは複数のXOR演算を適用することによってRAINパリティコードワードを再生成することができる。処理論理は、追加のパリティデータに対して1つまたは複数のXOR演算を適用することによってLUNパリティデータを再生成することができる。
【0057】
図6は、コンピュータシステム600の例示的なマシンを示し、このコンピュータシステム内で、本明細書内で論じられた方法論のうちの任意の1つまたは複数をマシンに実施させるための命令のセットが実行され得る。いくつかの実施形態において、コンピュータシステム600は、メモリサブシステム(例えば、
図1のメモリサブシステム110)を含むか、これに結合されるか、もしくはこれを利用するか、またはコントローラの動作を実施するために(例えば、
図1の冗長メタデータマネージャコンポーネント113に対応する動作を実施するためにオペレーティングシステムを実行するために)使用され得る、ホストシステム(例えば、
図1のホストシステム120)に対応し得る。代替の実施形態において、マシンは、LAN、イントラネット、エクストラネット、および/またはインターネット内の他のマシンに接続(例えば、ネットワーク化)され得る。マシンは、ピアツーピア(もしくは分散)ネットワーク環境内のピアマシンとして、またはクラウドコンピューティングインフラストラクチャもしくは環境内のサーバもしくはクライアントマシンとして、クライアント-サーバネットワーク環境内のサーバまたはクライアントマシンの能力内で動作することができる。
【0058】
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブ電化製品、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンによって取られるべきアクションを指定する命令のセットを実行することができる(順次またはその他の方法で)任意のマシンであってもよい。さらに、単一のマシンが示されるが、用語「マシン」はまた、本明細書で論じられる方法論のうちの任意の1つまたは複数を実施するために命令のセット(または複数のセット)を個々に、またはまとめて実行するマシンの任意の集合を含むと見なされるものとする。
【0059】
例示的なコンピュータシステム600は、バス630を介して互いと通信する、処理デバイス602、メインメモリ504(例えば、リードオンリメモリ(ROM)、フラッシュメモリ、シンクロナスDRAM(SDRAM)またはRDRAMなどのダイナミックランダムアクセスメモリ(DRAM)など)、スタティックメモリ606(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、およびデータストレージシステム618を含む。
【0060】
処理デバイス602は、マイクロプロセッサ、中央処理装置、または同様のものなどの1つまたは複数の汎用処理デバイスを表す。より詳細には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実装するプロセッサ、または命令セットの組合せを実装するプロセッサであり得る。処理デバイス602はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、または同様のものなど、1つまたは複数の専用処理デバイスであり得る。処理デバイス602は、本明細書内で論じられる動作およびステップを実施するための命令626を実行するように構成される。コンピュータシステム600は、ネットワーク620を通じて通信するためにネットワークインターフェースデバイス608をさらに含み得る。
【0061】
データストレージシステム518は、命令626の1つもしくは複数のセット、または本明細書内に説明される方法論もしくは機能のうちの任意の1つまたは複数を具現化するソフトウェアが格納されるマシン可読記憶媒体624(コンピュータ可読媒体としても知られる)を含み得る。命令626はまた、コンピュータシステム600によるその実行中、メインメモリ604内に、および/または処理デバイス602内に、完全に、または少なくとも部分的に常駐し得、メインメモリ604および処理デバイス602もまた、マシン可読記憶媒体を構成する。マシン可読記憶媒体624、データストレージシステム618、および/またはメインメモリ604は、
図1のメモリサブシステム110に対応し得る。
【0062】
1つの実施形態において、命令626は、電圧ビン境界コンポーネント(例えば、
図1の冗長メタデータマネージャコンポーネント113)に対応する機能性を実装するための命令を含む。マシン可読記憶媒体624は、単一の媒体であると例示的な実施形態においては示されるが、用語「マシン可読記憶媒体」は、命令の1つまたは複数のセットを格納する単一の媒体または複数の媒体を含むと見なされるものとする。用語「マシン可読記憶媒体」はまた、マシンによる実行のための命令のセットを格納または符号化することができる、および本開示の方法論のうちの任意の1つまたは複数をマシンに実施させる、任意の媒体を含むと見なされるものとする。用語「マシン可読記憶媒体」は、したがって、限定されるものではないが、ソリッドステートメモリ、光学媒体、および磁気媒体を含むと見なされるものとする。
【0063】
先行する詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する動作のアルゴリズムおよび記号的表現に関して提示されている。これらのアルゴリズムの説明および表現は、データ処理技術における当業者によりその仕事の内容を他の当業者に最も効果的に伝えるために使用される方法である。アルゴリズムは、ここでは、および一般的には、所望の結果をもたらす動作の自己無撞着シーケンスであると考えられる。動作は、物理量の物理的処理を必要とするものである。通常、必須ではないが、これらの量は、格納される、組み合わされる、比較される、および別途処理されることができる電気または磁気信号の形態をとる。主として共通使用の理由から、これらの信号をビット、値、要素、符号、文字、項、数字、または同様のものと呼ぶことが時には簡便であることが証明されている。
【0064】
しかしながら、これらのすべておよび同様の用語は、適切な物理量と関連づけられるべきであり、これらの量に適用される簡便なラベルにすぎないということに留意しておくべきである。本開示は、コンピュータシステムのレジスタおよびメモリ内の物理(電子)量として表されるデータを、操作して、コンピュータシステムメモリもしくはレジスタまたは他のそのような情報ストレージシステム内の物理量として同様に表される他のデータへと変換する、コンピュータシステム、または同様の電子コンピューティングデバイスのアクションおよびプロセスを指し得る。
【0065】
本開示はまた、本明細書内の動作を実施するための装置に関する。この装置は、意図した目的のために特別に構築され得るか、またはそれは、コンピュータに格納されるコンピュータプログラムによって選択的に起動または再構成される汎用コンピュータを含み得る。そのようなコンピュータプログラムは、限定されるものではないが、フロッピディスク、光学ディスク、CD-ROM、および光磁気ディスクを含む任意のタイプのディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光学カード、または電子命令を格納するのに好適な任意のタイプの媒体などのコンピュータ可読記憶媒体に格納され得、これらの各々がコンピュータシステムバスに結合される。
【0066】
本明細書内に提示されるアルゴリズムおよびディスプレイは、任意の特定のコンピュータまたは他の装置に本質的に関連するものではない。様々な汎用システムが、本明細書内の教示に従ってプログラムとともに使用され得るか、またはそれは、本方法を実施するためにより専門化された装置を構築するのに簡便であることを証明し得る。様々なこれらのシステムの構造は、以下の説明に明記されるように見える。加えて、本開示は、任意の特定のプログラミング言語に関連して説明されるものではない。様々なプログラミング言語が本明細書内に説明されるような本開示の教示を実装するために使用され得るということを理解されたい。
【0067】
本開示は、本開示に従ってプロセスを実施するようにコンピュータシステム(または他の電子デバイス)をプログラムするために使用され得る、命令が格納されているマシン可読媒体を含み得るコンピュータプログラム製品、またはソフトウェアとして提供され得る。マシン可読媒体は、マシン(例えば、コンピュータ)によって読むことが可能な形態で情報を格納するための任意の機序を含む。いくつかの実施形態において、マシン可読(例えば、コンピュータ可読)媒体は、リードオンリメモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリコンポーネントなど、マシン(例えば、コンピュータ)可読記憶媒体を含む。
【0068】
先述の明細書において、本開示の実施形態は、それらの特定の例示的な実施形態に関して説明されている。様々な修正が、それらに対して、以下の請求項に明記されるような本開示の実施形態の幅広い趣旨および範囲から逸脱することなくなされ得ることは明らかである。したがって、本明細書および図面は、制限的意味よりもむしろ例示的意味と考えられるべきである。
【国際調査報告】