IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 長江存儲科技有限責任公司の特許一覧

特表2023-532237プログラミング障害に対する独立ディスクの冗長アレイのストライピングのための方法およびその装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-07-27
(54)【発明の名称】プログラミング障害に対する独立ディスクの冗長アレイのストライピングのための方法およびその装置
(51)【国際特許分類】
   G06F 11/10 20060101AFI20230720BHJP
【FI】
G06F11/10 676
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022579007
(86)(22)【出願日】2021-03-05
(85)【翻訳文提出日】2022-12-21
(86)【国際出願番号】 CN2021079221
(87)【国際公開番号】W WO2022183465
(87)【国際公開日】2022-09-09
(81)【指定国・地域】
(71)【出願人】
【識別番号】519237948
【氏名又は名称】長江存儲科技有限責任公司
【氏名又は名称原語表記】Yangtze Memory Technologies Co.,Ltd.
【住所又は居所原語表記】No.88 Weilai 3rd Road,East Lake High-tech Development Zone,Wuhan,Hubei,China
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ウェイジェン・コン
(72)【発明者】
【氏名】ジアン・カオ
(72)【発明者】
【氏名】ウェイ・タオ
(72)【発明者】
【氏名】リン・ドゥ
(72)【発明者】
【氏名】ユアン・タオ
(57)【要約】
本開示の実装形態は、N個のダイ内に、メモリデータが記憶された複数のメモリセルを含むメモリ装置を提供する。N個のダイの各々は、M個のプレーンを含む。M個のプレーンの各々は、メモリブロックを含む。装置は、M個のプレーンの各々およびN個のダイの各々におけるメモリブロック内のJ個の層を決定するように構成されたコントローラも含み、J個の層の各々は、一対の隣接するゲート導電層を備える。コントローラは、ストライプのM個のセットを決定するようにも構成される。ストライプのM個のセットの各々は、M個のプレーンのそれぞれ1つにおいて記憶された複数のデータ部分を備える。コントローラはさらに、パリティデータ部分のM個のセットを決定するように構成される。コントローラはさらに、パリティデータ部分のM個のセットを記憶するように一時記憶ユニットを制御するように構成される。
【特許請求の範囲】
【請求項1】
N個のダイ内の、メモリデータが記憶された複数のメモリセルであって、前記N個のダイの各々が、M個のプレーンを備え、前記M個のプレーンの各々が、メモリブロックを備え、NおよびMが、各々正の整数である、複数のメモリセルと、
前記複数のメモリセルに動作可能に結合されたコントローラであって、前記コントローラが、
前記M個のプレーンの各々および前記N個のダイの各々における前記メモリブロック内のJ個の層を決定する動作であって、前記J個の層の各々が、一対の隣接するゲート導電層を備え、Jが、正の整数である、動作と、
ストライプのM個のセットを決定する動作であって、前記ストライプのM個のセットの各々が、前記M個のプレーンのそれぞれ1つにおいて記憶された複数のデータ部分を備える、動作と、
パリティデータ部分のM個のセットを決定する動作であって、前記パリティデータ部分のM個のセットの各々が、前記M個のストライプのそれぞれ1つに対応する、動作と、
前記パリティデータ部分のM個のセットを記憶するように一時記憶ユニットを制御する動作と
を行うように構成された、コントローラと
を備えるメモリ装置。
【請求項2】
前記コントローラが、
M個のストライプを備えるように前記ストライプのM個のセットを決定する動作であって、前記ストライプのM個のセットの各々が、前記M個のプレーンのそれぞれ1つにおいて記憶されたJ×N個のデータ部分を備える単一のストライプを備え、前記J×N個のデータ部分の各々が、前記J個の層のそれぞれの部分において記憶される、動作と、
M個のパリティデータ部分を備えるように前記パリティデータ部分のM個のセットを決定する動作であって、前記パリティデータ部分のM個のセットの各々が、それぞれのプレーンに対応する単一のパリティデータ部分を備える、動作と
を行うように構成された、
請求項1に記載のメモリ装置。
【請求項3】
前記コントローラが、
前記ストライプのM個のセットうちの1つにおけるプログラミング障害を検出したことに応答して、前記プログラミング障害を、
前記プログラミング障害が発生したデータ部分およびそれぞれのストライプを位置特定し、
前記それぞれのストライプの前記パリティデータ部分と前記それぞれのストライプの前記データ部分の残りとを使用して、前記データ部分のための代替データ部分を生成する
ことによって回復するようにさらに構成された、
請求項1に記載のメモリ装置。
【請求項4】
前記コントローラが、前記代替データ部分を生成するために、前記データ部分の前記残りと前記それぞれのストライプの前記パリティデータ部分との間で排他的論理和(XOR)演算を実行するように構成された、請求項3に記載のメモリ装置。
【請求項5】
前記コントローラが、前記M個のストライプを並行してプログラムするようにさらに構成され、前記プログラミング障害が、前記M個のプレーンの各々における同じ位置のデータ部分において発生するマルチプレーン障害を含む、請求項3または4に記載のメモリ装置。
【請求項6】
前記コントローラが、
前記M個のストライプ内のJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、前記M個のパリティデータ部分の間で排他的論理和(XOR)を実行し、
前記複数のメモリセル内の永久記憶ユニット内に前記パリティデータセットを記憶する
ようにさらに構成された、
請求項2から5のいずれか一項に記載のメモリ装置。
【請求項7】
前記コントローラが、それぞれの前記パリティデータ部分を生成するために、前記M個のストライプの各々の前記J×N個のデータ部分の間で排他的論理和(XOR)演算を実行するようにさらに構成された、請求項2から6のいずれか一項に記載のメモリ装置。
【請求項8】
前記コントローラが、
J×M個のストライプを備えるように前記ストライプのM個のセットを決定する動作であって、前記ストライプのM個のセットの各々が、J個のストライプを備える、動作と、
J×N個のデータ部分を備えるように前記J個のストライプを決定する動作であって、前記J個のストライプの各々が、それぞれの前記プレーンのそれぞれの層内のそれぞれの部分において各々が記憶されたN個のデータ部分を備える、動作と、
J×M個のパリティデータ部分を備えるように前記パリティデータ部分のM個のセットを決定する動作であって、前記パリティデータ部分のM個のセットの各々が、それぞれのプレーン内の前記J個のストライプのうちのそれぞれ1つに各々が対応するJ個のパリティデータ部分を備える、動作と
を行うように構成された、
請求項1に記載のメモリ装置。
【請求項9】
前記コントローラが、それぞれの単一の前記プレーンの単一の層内に記憶された前記N個のデータ部分を決定するようにさらに構成された、請求項8に記載のメモリ装置。
【請求項10】
前記コントローラが、
前記ストライプのM個のセットのうちの1つにおいてプログラミング障害を検出したことに応答して、前記プログラミング障害を、
前記プログラミング障害が発生したデータ部分およびそれぞれのストライプを位置特定し、
前記それぞれのストライプの前記パリティデータ部分と前記それぞれのストライプの前記データ部分の残りとを使用して、前記データ部分のための代替データ部分を生成する
ことによって回復するようにさらに構成された、
請求項8または9に記載のメモリ装置。
【請求項11】
前記コントローラが、前記代替データ部分を生成するために、前記データ部分の前記残りと前記それぞれのストライプの前記パリティデータ部分との間で排他的論理和(XOR)演算を実行するように構成された、請求項10に記載のメモリ装置。
【請求項12】
前記コントローラが、前記M個のセットのストライプを並行してプログラムするようにさらに構成され、
前記プログラミング障害が、ソース選択ゲート(SSG)リーク障害またはマルチプレーン障害のうちの少なくとも1つを含む、
請求項10または11に記載のメモリ装置。
【請求項13】
前記コントローラが、前記J×M個のストライプの各々について、前記それぞれのパリティデータ部分を生成するために、前記N個のデータ部分の間で排他的論理和(XOR)演算を実行するようにさらに構成された、請求項8から12のいずれか一項に記載のメモリ装置。
【請求項14】
前記コントローラが、前記M個のプレーンの各々について、nが正の整数であり、
n=2の場合、第(n-1)の一時パリティデータ部分を生成するために、第nのパリティデータ部分と第(n-1)のパリティデータ部分との間で排他的論理和(XOR)演算を実行し、
前記第(n-1)の一時パリティデータ部分を第2の一時記憶ユニットに記憶し、
n>2の場合、第(n-1)の一時パリティデータ部分を生成するために、第nのパリティデータ部分と第(n-2)の一時パリティデータ部分との間でXOR演算を実行する
ようにさらに構成された、
請求項8から13のいずれか一項に記載のメモリ装置。
【請求項15】
前記コントローラが、前記M個のプレーンの各々について、
前記第(n-2)の一時パリティデータ部分を置き換えるために、前記第(n-1)の一時パリティデータ部分を前記第2の一時記憶ユニットに記憶する
ようにさらに構成された、
請求項14に記載のメモリ装置。
【請求項16】
前記コントローラが、
n=Lに応答して、前記M個のプレーンおよびN個のダイにおけるJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、前記M個のプレーンの各々に対応する第(n-1)の一時パリティデータ部分の間でXOR演算を実行し、
前記複数のメモリセル内の永久記憶ユニット内に前記一時パリティデータセットを記憶する
ようにさらに構成された、
請求項14または15に記載のメモリ装置。
【請求項17】
前記コントローラが、前記それぞれのパリティデータ部分を生成するために、前記J×M個のストライプの各々の前記N個のデータ部分の間で排他的論理和(XOR)演算を実行するようにさらに構成された、請求項8から16のいずれか一項に記載のメモリ装置。
【請求項18】
前記コントローラが、
前記ストライプのM個のセットにおいてプログラミング障害が検出されないこと、または
すべてのプログラミング障害が回復されたこと
のうちの少なくとも1つに応答して、前記一時記憶ユニットから前記パリティデータ部分のM個のセットを削除するようにさらに構成された、
請求項1から17のいずれか一項に記載のメモリ装置。
【請求項19】
前記一時記憶ユニットが、前記複数のメモリセルの外側にある、請求項1から18のいずれか一項に記載のメモリ装置。
【請求項20】
Jが、8に等しい、請求項1から19のいずれか一項に記載のメモリ装置。
【請求項21】
前記複数のメモリセルが、NANDメモリセルを備え、前記コントローラが、フラッシュコントローラを備える、請求項1から20のいずれか一項に記載のメモリ装置。
【請求項22】
前記装置が、ランダムアクセスメモリ(RAM)をさらに備え、前記一時記憶ユニットが、前記RAM内に配置される、請求項1から21のいずれか一項に記載のメモリ装置。
【請求項23】
Mが、4以上である、請求項1に記載のメモリ装置。
【請求項24】
N個のダイ内の、メモリデータが記憶された複数のメモリセルであって、前記N個のダイの各々が、M個のプレーンを備え、前記M個のプレーンの各々が、メモリブロックを備え、NおよびMが、各々正の整数である、複数のメモリセルと、
前記複数のメモリセルに動作可能に結合されたコントローラであって、前記コントローラが、
前記M個のプレーンの各々および前記N個のダイの各々における前記メモリブロック内のJ個の層を決定する動作であって、前記J個の層の各々が、一対の隣接するゲート導電層を備え、Jが、少なくとも2の正の整数である、動作と、
各々が前記M個のプレーン内の同じレベルのM個の層に対応し、M×N個のデータ部分を備えるJ個のストライプを決定する動作であって、前記M×N個のデータ部分の各々が、それぞれの前記M個の層のそれぞれの部分内に記憶される、動作と、
各々がそれぞれのストライプに対応するJ個のパリティデータ部分を決定する動作と、
前記J個のパリティデータ部分を記憶するように一時記憶ユニットを制御する動作と
を行うように構成された、コントローラと
を備えるメモリ装置。
【請求項25】
前記コントローラが、前記M個のプレーン内の同じレベルの単一の層内に記憶された前記M×N個のデータ部分を決定するように構成された、請求項24に記載のメモリ装置。
【請求項26】
前記コントローラが、
前記J個のストライプのうちの1つにおけるプログラミング障害を検出したことに応答して、前記プログラミング障害を、
前記プログラミング障害が発生したデータ部分を位置特定し、
前記それぞれのストライプの前記パリティデータ部分と前記それぞれのストライプの前記データ部分の残りとを使用して、前記データ部分のための代替データ部分を生成する
ことによって回復するようにさらに構成された、
請求項24または25に記載のメモリ装置。
【請求項27】
前記コントローラが、前記代替データ部分を生成するために、前記データ部分の前記残りと前記それぞれのストライプの前記パリティデータ部分との間で排他的論理和(XOR)演算を実行するように構成された、請求項26に記載のメモリ装置。
【請求項28】
前記プログラミング障害が、ソース選択ゲート(SSG)リーク障害を含む、請求項26または27に記載のメモリ装置。
【請求項29】
前記コントローラが、前記それぞれのパリティデータ部分を生成するために、前記J個のストライプの各々の前記M×N個のデータ部分の間で排他的論理和(XOR)演算を実行するようにさらに構成された、請求項24から28のいずれか一項に記載のメモリ装置。
【請求項30】
前記コントローラが、
前記M個のストライプ内のJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、前記J個のパリティデータ部分の間で排他的論理和(XOR)演算を実行し、
前記複数のメモリセル内の永久記憶ユニット内に前記パリティデータセットを記憶する
ようにさらに構成された、
請求項24から29のいずれか一項に記載のメモリ装置。
【請求項31】
前記一時記憶ユニットが、前記複数のメモリセルの外側にある、請求項24から30のいずれか一項に記載のメモリ装置。
【請求項32】
前記コントローラが、
前記J個のストライプにおいてプログラミング障害が検出されないこと、または
すべてのプログラミング障害が回復されたこと
のうちの少なくとも1つに応答して、前記一時記憶ユニットから前記J個のパリティデータ部分を削除するようにさらに構成された、
請求項24から31のいずれか一項に記載のメモリ装置。
【請求項33】
Jが、8に等しい、請求項24から32のいずれか一項に記載のメモリ装置。
【請求項34】
前記複数のメモリセルが、NANDメモリセルを備え、前記コントローラが、フラッシュコントローラを備える、請求項24から33のいずれか一項に記載のメモリ装置。
【請求項35】
前記装置が、ランダムアクセスメモリ(RAM)をさらに備え、前記一時記憶ユニットが、前記RAM内に配置される、請求項24から34のいずれか一項に記載のメモリ装置。
【請求項36】
Mが、4以上である、請求項24に記載のメモリ装置。
【請求項37】
独立ディスクの冗長アレイ(RAID)ストライピングを使用してメモリ装置を動作させるための方法であって、前記装置が、N個のダイ内の、メモリデータが記憶された複数のメモリセルを備え、前記N個のダイの各々が、M個のプレーンを備え、前記M個のプレーンの各々が、メモリブロックを備え、NおよびMが、各々正の整数であり、前記方法が、
前記M個のプレーンの各々および前記N個のダイの各々における前記メモリブロック内のJ個の層を決定するステップであって、前記J個の層の各々が、一対の隣接するゲート導電層を備え、Jが、正の整数である、ステップと、
ストライプのM個のセットを決定するステップであって、前記ストライプのM個のセットの各々が、前記M個のプレーンのそれぞれ1つにおいて記憶された複数のデータ部分を備える、ステップと、
パリティデータ部分のM個のセットを決定するステップであって、前記パリティデータ部分のM個のセットの各々が、前記M個のストライプのそれぞれ1つに対応する、ステップと、
前記パリティデータ部分のM個のセットを記憶するように一時記憶ユニットを制御するステップと
を含む、
方法。
【請求項38】
前記ストライプのM個のセットが、M個のストライプを備え、前記ストライプのM個のセットの各々が、前記M個のプレーンのそれぞれ1つにおいて記憶されたJ×N個のデータ部分を備え、前記J×N個のデータ部分の各々が、前記J個の層のそれぞれの部分において記憶され、
前記パリティデータ部分のM個のセットが、M個のパリティデータ部分を備え、前記パリティデータ部分のM個のセットの各々が、それぞれのプレーンに対応する単一のパリティデータ部分を備える、
請求項37に記載の方法。
【請求項39】
前記ストライプのM個のセットうちの1つにおけるプログラミング障害を検出したことに応答して、前記プログラミング障害を、
前記プログラミング障害が発生したデータ部分およびそれぞれのストライプを位置特定し、
前記それぞれのストライプの前記パリティデータ部分と前記それぞれのストライプの前記データ部分の残りとを使用して、前記データ部分のための代替データ部分を生成する
ことによって回復するステップをさらに含む、
請求項38に記載の方法。
【請求項40】
前記代替データ部分を生成することが、前記データ部分の前記残りと前記それぞれのストライプの前記パリティデータ部分との間で排他的論理和(XOR)演算を実行することを含む、請求項39に記載の方法。
【請求項41】
前記M個のストライプを並行してプログラムするステップをさらに含み、前記プログラミング障害が、前記M個のプレーンの各々における同じ位置のデータ部分において発生するマルチプレーン障害を含む、請求項39または40に記載の方法。
【請求項42】
前記M個のストライプ内のJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、前記M個のパリティデータ部分の間で排他的論理和(XOR)を実行するステップと、
前記複数のメモリセル内の永久記憶ユニット内に前記パリティデータセットを記憶するステップと
をさらに含む、
請求項38から41のいずれか一項に記載の方法。
【請求項43】
前記それぞれのパリティデータ部分を生成するために、前記M個のストライプの各々の前記J×N個のデータ部分の間で排他的論理和(XOR)演算を実行するステップをさらに含む、請求項38から42のいずれか一項に記載の方法。
【請求項44】
前記ストライプのM個のセットが、J×M個のストライプを備え、前記ストライプのM個のセットの各々が、J個のストライプを備え、
前記J個のストライプが、J×N個のデータ部分を備え、前記J個のストライプの各々が、前記それぞれのプレーンのそれぞれの層内のそれぞれの部分において各々が記憶されたN個のデータ部分を備え、
前記パリティデータ部分のM個のセットが、J×M個のパリティデータ部分を備え、前記パリティデータ部分のM個のセットの各々が、それぞれのストライプ内の前記J個のストライプのうちのそれぞれ1つに各々が対応するJ個のパリティデータ部分を備える、
請求項37に記載の方法。
【請求項45】
前記N個のデータ部分が、前記それぞれの単一のプレーンの単一の層内に記憶される、請求項44に記載の方法。
【請求項46】
前記ストライプのM個のセットのうちの1つにおいてプログラミング障害を検出したことに応答して、前記プログラミング障害を、
前記プログラミング障害が発生したデータ部分およびそれぞれのストライプを位置特定し、
前記それぞれのストライプの前記パリティデータ部分と前記それぞれのストライプの前記データ部分の残りとを使用して、前記データ部分のための代替データ部分を生成する
ことによって回復するステップをさらに含む、
請求項44または45に記載の方法。
【請求項47】
独立ディスクの冗長アレイ(RAID)ストライピングを使用してメモリ装置を動作させるための方法であって、前記装置が、N個のダイ内に、メモリデータが記憶された複数のメモリセルを含み、前記N個のダイの各々が、M個のプレーンを含み、前記M個のプレーンの各々が、メモリブロックを含み、NおよびMは、各々正の整数であり、前記方法が、
前記M個のプレーンの各々および前記N個のダイの各々における前記メモリブロック内のJ個の層を決定するステップであって、前記J個の層の各々が、一対の隣接するゲート導電層を備え、Jが、少なくとも2の正の整数である、ステップと、
各々が前記M個のプレーン内の同じレベルのM個の層に対応し、M×N個のデータ部分を備えるJ個のストライプを決定するステップであって、前記M×N個のデータ部分の各々が、前記それぞれのM個の層のそれぞれの部分内に記憶される、ステップと、
各々がそれぞれのストライプに対応するJ個のパリティデータ部分を決定するステップと、
前記J個のパリティデータ部分を記憶するように一時記憶ユニットを制御するステップと
を含む、
方法。
【請求項48】
前記M×N個のデータ部分が、前記M個のプレーン内の同じレベルの単一の層内に記憶され、前記方法が、
前記J個のストライプのうちの1つにおいてプログラミング障害を検出したことに応答して、前記プログラミング障害を、
前記プログラミング障害が発生したデータ部分を位置特定し、
前記それぞれのストライプの前記パリティデータ部分と前記それぞれのストライプの前記データ部分の残りとを使用して、前記データ部分のための代替データ部分を生成する
ことによって回復するステップをさらに含む、
請求項47に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ記憶方法および装置に関する。
【背景技術】
【0002】
インターネットおよび様々なミッションクリティカルなアプリケーションの急速な成長に伴い、データの完全性を維持すること、および重要な情報への継続したアクセスを保証することの重要性は、どれだけ誇張してもし過ぎることはない。信頼性の高いデータを保存すること、およびそのデータにアクセスすることにおけるニーズを満たすために、NANDメモリデバイスにおけるパフォーマンス、信頼性、消費電力、およびスケーラビリティを改善するために、独立ディスクの冗長アレイ(RAID(redundant array of independent disks))アルゴリズムが使用されてきた。RAIDアルゴリズムは、複数の記憶ユニットから信頼性の高い大規模なデータストアを作成するために、ストライピング、ミラーリング、および/またはパリティの技法を用いる。
【0003】
様々なレベルのRAIDのなかで、レベル5のRAID、別名RAID5は、NANDメモリデバイスにおけるデータの完全性を維持することにおいて一般的に使用される。RAID5は、分散パリティ(例えば、冗長情報)と共にブロックレベルストライピングを用いる。パリティ情報は、ドライブ間で分散される。単一のドライブの障害時、障害の発生したドライブ内のデータは、メモリデータが失われないように、分散パリティおよび残りのドライブから取り出され得る。
【発明の概要】
【課題を解決するための手段】
【0004】
一例において、メモリ装置が提供される。装置は、N個のダイ内に、メモリデータが記憶された複数のメモリセルを含む。N個のダイの各々は、M個のプレーンを含む。M個のプレーンの各々は、メモリブロックを含む。NおよびMは、各々正の整数である。装置は、複数のメモリセルに動作可能に結合されたコントローラも含む。コントローラは、M個のプレーンの各々およびN個のダイの各々におけるメモリブロック内のJ個の層を決定するように構成され、J個の層の各々は、一対の隣接するゲート導電層を備える。Jは、正の整数である。コントローラは、ストライプのM個のセットを決定するようにも構成される。ストライプのM個のセットの各々は、M個のプレーンのそれぞれ1つにおいて記憶された複数のデータ部分を備える。コントローラはさらに、パリティデータ部分のM個のセットを決定するように構成される。パリティデータ部分のM個のセットの各々は、M個のストライプのそれぞれ1つに対応する。コントローラはさらに、パリティデータ部分のM個のセットを記憶するように一時記憶ユニットを制御するように構成される。
【0005】
別の例において、メモリ装置が提供される。装置は、N個のダイ内に、メモリデータが記憶された複数のメモリセルを含む。N個のダイの各々は、M個のプレーンを含む。M個のプレーンの各々は、メモリブロックを含む。NおよびMは、各々正の整数である。装置は、複数のメモリセルに動作可能に結合されたコントローラを含む。コントローラは、M個のプレーンの各々およびN個のダイの各々におけるメモリブロック内のJ個の層を決定するように構成される。J個の層の各々は、一対の隣接するゲート導電層を含む。Jは、少なくとも2の正の整数である。コントローラは、各々がM個のプレーン内の同じレベルのM個の層に対応し、M×N個のデータ部分を備えるJ個のストライプを決定するようにも構成される。M×N個のデータ部分の各々は、それぞれのM個の層のそれぞれの部分内に記憶される。コントローラはさらに、各々がそれぞれのストライプに対応するJ個のパリティデータ部分を決定するように構成される。コントローラはさらに、J個のパリティデータ部分を記憶するように一時記憶ユニットを制御するように構成される。
【0006】
別の例において、RAIDストライピングを使用してメモリ装置を動作させるための方法が提供される。装置は、N個のダイ内に、メモリデータが記憶された複数のメモリセルを含む。N個のダイの各々は、M個のプレーンを含む。M個のプレーンの各々は、メモリブロックを含む。NおよびMは、各々正の整数である。方法は、M個のプレーンの各々およびN個のダイの各々におけるメモリブロック内のJ個の層を決定するステップを含む。J個の層の各々は、一対の隣接するゲート導電層を含む。Jは、正の整数である。方法は、ストライプのM個のセットを決定するステップも含み、ストライプのM個のセットの各々は、M個のプレーンのそれぞれ1つにおいて記憶された複数のデータ部分を備える。方法は、パリティデータ部分のM個のセットを決定するステップも含む。パリティデータ部分のM個のセットの各々は、M個のストライプのそれぞれ1つに対応する。方法はさらに、パリティデータ部分のM個のセットを記憶するように一時記憶ユニットを制御するステップを含む。
【0007】
さらに別の例において、RAIDストライピングを使用してメモリ装置を動作させるための方法が提供される。装置は、N個のダイ内に、メモリデータが記憶された複数のメモリセルを含む。N個のダイの各々は、M個のプレーンを含む。M個のプレーンの各々は、メモリブロックを含む。NおよびMは、各々正の整数である。方法は、M個のプレーンの各々およびN個のダイの各々におけるメモリブロック内のJ個の層を決定するステップを含む。J個の層の各々は、一対の隣接するゲート導電層を含む。Jは、少なくとも2の正の整数である。方法は、各々がM個のプレーン内の同じレベルのM個の層に対応し、M×N個のデータ部分を備えるJ個のストライプを決定するステップも含む。M×N個のデータ部分の各々は、それぞれのM個の層のそれぞれの部分内に記憶される。方法はさらに、各々がそれぞれのストライプに対応するJ個のパリティデータ部分を決定するステップを含む。方法はさらに、J個のパリティデータ部分を記憶するように一時記憶ユニットを制御するステップを含む。
【0008】
本明細書に組み込まれ、本明細書の一部を形成する添付図面は、本開示の実装形態を示し、説明と共に、本開示の原理を説明し、当業者が本開示を作成および使用することを可能にするためにさらに役立つ。
【図面の簡単な説明】
【0009】
図1A】本開示のいくつかの態様による、ホストプロセッサと、フラッシュメモリコントローラと、ランダムアクセスメモリ(RAM)と、NANDメモリとを含む装置の概略図である。
図1B】本開示のいくつかの態様によるフラッシュメモリコントローラの概略図である。
図2】本開示のいくつかの態様による、NANDメモリにおけるRAIDアルゴリズムのための例示的なストライピング構成の概略図である。
図3A】本開示のいくつかの態様による、NANDメモリにおけるRAIDアルゴリズムのための別の例示的なストライピング構成の概略図である。
図3B】本開示のいくつかの態様による、NANDメモリにおけるRAIDアルゴリズムのための別の例示的なストライピング構成の概略図である。
図4A】本開示のいくつかの態様による、NANDメモリにおけるRAIDアルゴリズムのための別の例示的なストライピング構成の概略図である。
図4B】本開示のいくつかの態様による、NANDメモリにおけるRAIDアルゴリズムのための別の例示的なストライピング構成の概略図である。
図4C】本開示のいくつかの態様による、NANDメモリにおけるRAIDアルゴリズムのための別の例示的なストライピング構成の概略図である。
図5A】本開示のいくつかの態様による、図2における方法において生成された例示的なパリティデータストレージを示す図である。
図5B】本開示のいくつかの態様による、図3Aおよび図3Bにおける方法において生成された例示的なパリティデータストレージを示す図である。
図5C】本開示のいくつかの態様による、図4A図4Cにおける方法において生成された例示的なパリティデータストレージを示す図である。
図5D】本開示のいくつかの態様による、図4A図4Cにおける方法において生成された別の例示的なパリティデータストレージを示す図である。
図6A】本開示のいくつかの態様による、図2におけるNANDメモリを動作させるための方法のフローチャートである。
図6B】本開示のいくつかの態様による、図3Aおよび図3BにおけるNANDメモリを動作させるための方法のフローチャートである。
図6C】本開示のいくつかの態様による、図4A図4CにおけるNANDメモリを動作させるための方法のフローチャートである。
図7】本開示のいくつかの態様によるNANDメモリの特定の構成要素を示す概略図である。
【発明を実施するための形態】
【0010】
本開示の態様について、添付図面を参照して説明する。
【0011】
特定の構成および配置が論じられているが、これは。例示的な目的のみのために行われていることが理解されるべきである。したがって、本開示の範囲から逸脱することなしに、他の構成および配置が使用され得る。また、本開示は、様々な他の用途においても用いられ得る。本開示において説明される機能的および構造的特徴は、これらの組合せ、調整、および変更が本開示の範囲内にあるように、互いに、および図面において具体的に示されていない方法において、組み合わされ、調整され、変更され得る。
【0012】
一般に、専門用語は、文脈における用法から少なくとも部分的に理解され得る。例えば、本明細書において使用される「1つまたは複数の」という用語は、少なくとも部分的に文脈に応じて、単数形の意味における任意の特徴、構造、もしくは特質を説明するために使用される場合があり、または複数形の意味における特徴、構造、もしくは特質の組合せを説明するために使用される場合がある。同様に、「1つの(a)」、「1つの(an)」、または「その(the)」などの用語は、再び、少なくとも部分的に文脈に応じて、単数形の用法を伝えるように理解される場合があり、または複数形の用法を伝えるように理解される場合がある。それに加えて、「に基づく」という用語は、必ずしも排他的な要因のセットを伝えることを意図したものとして理解されない場合があり、代わりに、少なくとも部分的に文脈に応じて、必ずしも明示的に説明されていない追加の要因の存在を許容する場合がある。
【0013】
本明細書で使用される場合、「メモリストリング」という用語は、メモリセルトランジスタのストリングが基板に対して垂直方向に延在するように、横方向に配向された基板上の直列に接続されたメモリセルトランジスタの垂直に配向されたストリングを指す。本明細書で使用される場合、「垂直の/垂直に」という用語は、基板の側面に対して垂直であることを意味する。
【0014】
記憶容量を増加させるために、NANDフラッシュメモリは、しばしば、各々が複数のプレーンを有する複数のダイを横方向に含む。各プレーンは、各々が横方向に延在する複数のゲート導電層を含む1つまたは複数のメモリブロックに横方向に分割される。1つのメモリブロックは、いくつかのレベルにおいて垂直方向に配置されたいくつかのゲート導電層を含み、各ゲート導電層は、メモリブロック内で横方向に分散された複数のページ内のメモリセルに結合される。NANDフラッシュメモリの記憶容量を増加させるために、ゲート導電層の数が垂直方向に増加し続けるにつれて、隣接するゲート導電層間の空間は、より小さくなる。隣接するゲート導電層間の干渉が顕著になる。メモリセルの完全性と可読性とを改善するために、NANDフラッシュメモリにおいてRAID5が広く使用されている。典型的には、RAID5は、メモリブロック内のメモリデータを複数のデータ部分に分割するためにメモリブロックにおいてストライピングを用い、それぞれのパリティデータを生成するためにストライプ内のデータ部分間で排他的論理和(XOR)演算を実行し、パリティデータをメモリセル内に記憶する。1つのデータ部分は、1つのページ内のメモリデータを表すことができる。1つのストライプは、しばしば、2次元において、例えば、異なるダイおよび異なるプレーンにわたる異なるメモリブロックにおいて横方向に、ならびに同じメモリブロックにおいて異なるレベルにおいて垂直方向に配置されたデータ部分を含む。例えば、4プレーンおよび4ダイにおけるメモリブロックについて、ストライプは、横方向(例えば、すべてのプレーンおよびダイにおいて)および垂直方向(例えば、2つ以上のレベルにおいて)に分散された128個のデータ部分を含むことができる。横方向では、ストライプは、異なるプレーン内の同じ位置においてデータ部分を含むことができる。垂直方向では、ストライプは、異なるレベル内の同じ位置においてデータ部分を含むことができる。最後のデータ部分は、しばしば、ストライプのパリティデータを含む。ストライプの1つのデータ部分におけるプログラミング障害の場合、侵害されたデータ部分は、例えば、ストライプのパリティデータと、ストライプ内の残りのデータ部分とを使用してXOR演算を実行することによって回復され得る。例えば、128個のデータ部分を有するストライプについて、127個のデータ部分が、メモリデータを記憶するために使用され、1個のデータ部分が、ストライプのパリティデータを記憶するために使用され、したがって、そのようなストライピング構成を使用するRAID5のエラー訂正能力は、(127+1)と記述され得る。
【0015】
しかしながら、RAID5は、ストライプ内の1つの侵害されたデータ部分のみを回復するために使用され得る。ストライプ内の2つ以上の侵害されたデータ部分を引き起こすシナリオの場合、上記で説明したストライピング構成を有するRAID5は、2つ以上の侵害されたデータ部分を回復することができない。例えば、1つのストライプ内で2つ以上の侵害されたデータ部分を引き起こす可能性がある1つのシナリオは、複数のプレーンが並行してプログラムされているときにプログラミングエラーによって引き起こされる可能性がある「マルチプレーン障害」である。異なるプレーン内の同じ位置にある、同じストライプ内のデータ部分が、侵害される可能性がある。1つのストライプ内で2つ以上の侵害されたデータ部分を引き起こす可能性がある別のシナリオは、SSGの電流リークによって引き起こされる「ソース選択ゲート(SSG)リーク障害」である。SSGリーク障害は、例えば、複数のレベルにおいて同じ位置にある、SSGに結合されたデータ部分の侵害を引き起こす可能性がある。現在のストライピング構成は、シナリオのうちの一方または両方が発生した場合、単一のストライプ内に2つ以上の侵害されたデータ部分を有しやすい。結果として、これらの侵害されたデータ部分内のメモリデータが、失われる可能性がある。RAID5のストライピング構成は、改善される必要がある。
【0016】
1つまたは複数の前述の問題に対処するために、本開示は、2つ以上の侵害されたデータ部分を横方向または垂直方向に回復するためにRAID技術(例えば、RAID5)が使用され得る解決策を導入する。これらの実装形態において、2つの隣接するゲート導電層が1つの層として定義され、各メモリブロックは、垂直方向において複数の層を含む。ストライプがプレーンおよびダイにわたるメモリブロックにおいて横方向および垂直方向に分散されたデータ部分を有するRAID5と比較して、提供される方法は、より短いストライプを用いる。それぞれのストライプごとに一時的なパリティデータが生成される。一時的なパリティデータは、一時記憶ユニット内に記憶され、それぞれのストライプ内の侵害されたデータ部分を回復するために使用され得る。一時的なパリティデータは、すべてのプレーンおよびダイにおけるストライプのためのパリティデータセットを生成するために使用され得る。一時的なパリティデータがもはや必要なくなった場合、例えば、プログラミング障害が検出されない場合、またはすべてのプログラミング障害が回復された場合、一時的なパリティデータは、一時記憶ユニットから削除され得る。NANDメモリ内に一時的なパリティデータ部分のための追加の記憶空間は必要ない。RAID5のエラー訂正能力は、アルゴリズムに複雑さを追加することなく改善され得る。一例において、4個のプレーンおよび4個のダイにおける1つのメモリブロックについて、RAID5のエラー訂正能力は、(127+X)として記述され得、ここで、127は、メモリデータと共に記憶されたデータ部分の数を表し、Xは、プログラミング障害が発生したデータ部分の数を表し、Xは、1よりも大きい正の整数である。すなわち、装置内の同じ数のメモリセルに対して、より多くの侵害されたメモリデータが回復され得る。装置のデータ信頼性は、改善され得る。
【0017】
エラー訂正能力を改善するために、様々なストライピング構成が提案されている。これらのストライピング構成は、マルチプレーン障害、SSGリーク障害、またはその両方によって引き起こされる侵害されたデータ部分が回復され得るように、RAIDアルゴリズムにおいて使用される。いくつかの実装形態において、ストライプは、それぞれのプレーン内およびすべてのダイ内のメモリブロック内の複数の層において分散されたデータ部分を含み、プレーン一時パリティデータ部分がストライプごとに決定される。ストライプは、他のプレーン内のデータ部分を含まない。例えば、マルチプレーン障害によりプログラミング障害が検出された場合、それぞれのストライプのプレーンパリティ部分は、侵害されたデータ部分の位置を特定し、回復するために使用され得る。いくつかの実装形態において、ストライプは、すべてのプレーン内およびすべてのダイ内のメモリブロック内の単一の層において分散されたデータ部分を含み、層パリティデータ部分がストライプごとに決定される。ストライプは、他の層内のデータ部分を含まない。ストライプは、メモリブロック内の各単一の層において形成され得る。例えば、SSGリーク障害によりプログラミング障害が検出された場合、それぞれのストライプの層パリティ部分は、侵害されたデータ部分の位置を特定し、回復するために使用され得る。いくつかの実装形態において、ストライプは、単一のプレーン内およびすべてのダイ内のメモリブロック内の単一の層において分散されたデータ部分を含み、パリティデータ部分がストライプごとに決定される。例えば、SSGリーク障害および/またはマルチプレーン障害によりプログラミング障害が検出された場合、それぞれのストライプのパリティ部分は、侵害されたデータ部分の位置を特定し、回復するために使用され得る。
【0018】
図1Aは、本開示のいくつかの態様による、提供された方法が動作される装置100の概略図を示す。図1Aに示すように、装置100は、プリント回路基板(PCB)102上に、ホストプロセッサ104と、フラッシュメモリコントローラ106と、ランダムアクセスメモリ(RAM)110と、NANDメモリ108とを含む。ホストプロセッサ104、フラッシュメモリコントローラ106、NANDメモリ108、およびRAM110の各々は、それ自体のパッケージングを有する個別のチップであり、PCB102上に取り付けられる。ホストプロセッサ104は、NANDメモリ108のデータ処理を実行するための専用プロセッサである。例えば、ホストプロセッサ104は、アプリケーションプロセッサなどの、中央処理装置(CPU)および/またはシステムオンチップ(SoC)を含み得る。データは、ホストプロセッサ104とフラッシュメモリコントローラ106との間、およびホストプロセッサ104とRAM110との間で、プロセッサバスなどのそれぞれのインターリンクを介して伝送される。したがって、ホストプロセッサ104は、RAM110およびフラッシュメモリコントローラ106の動作を制御し得る。NANDメモリ108は、RAIDにおいて構成されたメモリセルのアレイを含み得る。NANDメモリ108は、別のインターリンクを介してフラッシュメモリコントローラ106とデータを転送する3D NANDメモリまたは2D NANDメモリである。RAM110は、任意の適切なスタティックランダムアクセスメモリ(SRAM)および/またはダイナミックランダムアクセスメモリ(DRAM)を含み得る。
【0019】
フラッシュメモリコントローラ106は、フラッシュメモリ(NANDフラッシュメモリまたはNORフラッシュメモリのいずれか)内に記憶されたデータを管理し、ホストプロセッサ104と通信することができる。いくつかの実装形態において、フラッシュメモリコントローラ106は、セキュアデジタル(SD)カード、コンパクトフラッシュ(登録商標)(CF)カード、USBフラッシュドライブ、またはパーソナルコンピュータ、デジタルカメラ、携帯電話などの電子デバイスにおいて使用するための他の媒体などの、低デューティサイクル環境において動作するように設計される。いくつかの実装形態において、フラッシュメモリコントローラ106は、スマートフォン、タブレット、ラップトップコンピュータなどのモバイルデバイス、およびエンタープライズストレージアレイのためのデータストレージとして使用されるソリッドステートドライブ(SSD)または組み込み用マルチメディアカード(eMMC)のような高デューティサイクル環境において動作するように設計される。フラッシュメモリコントローラ106は、読み込み動作、書き込み動作、消去動作、およびプログラム動作などの、NANDメモリ108の動作を制御するように構成され得る。フラッシュメモリコントローラ106はまた、限定はしないが、不良ブロック管理、ガベージコレクション、論理-物理アドレス変換、ウェアレベリングなどを含む、NANDメモリ108内に記憶されたまたは記憶されるべきデータに関する様々な機能を管理するように構成され得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、NANDメモリ108から読み出されたデータ、またはNANDメモリ108に書き込まれたデータに関してエラー訂正コード(ECC)を処理するようにさらに構成される。例えば、フラッシュメモリをフォーマットする、任意の他の適切な機能が、フラッシュメモリコントローラ106によって同様に実行され得る。
【0020】
図1Bは、いくつかの実装形態による、フラッシュメモリコントローラ106の例示的な実装形態を示す。フラッシュメモリコントローラ106は、NANDメモリ108内のメモリデータのストライピング、計算、および記憶を制御するための制御信号を生成することによって、NANDメモリ108の動作を制御し得る。本開示と一貫して、フラッシュメモリコントローラ106は、NANDメモリ108の動作のためにホストプロセッサ104から信号を受信し得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、プロセッサ105と、メモリ109と、ストレージ107とを含み得る。いくつかの実施形態において、フラッシュメモリコントローラ106は、(例えば、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)として実装された)集積回路(IC)チップなどの様々なモジュールを単一のデバイス内に有し得るか、または専用機能を有する個別のデバイスを有し得る。いくつかの実施形態において、フラッシュメモリコントローラ106の構成要素は、統合されたデバイス内にあるか、または異なる場所に分散されているが、ネットワークを介して互いに通信し得る。
【0021】
プロセッサ105は、任意の適切なタイプの汎用または専用マイクロプロセッサ、デジタル信号プロセッサ、またはマイクロコントローラを含み得る。プロセッサ105は、信号(例えば、ホストプロセッサ104からの信号)を分析すること、および/またはスキャン方式を制御すること専用のスタンドアロンプロセッサモジュールとして構成され得る。代替的に、プロセッサ105は、信号分析/スキャン方式制御に関係のない他の機能を実行するための共有プロセッサモジュールとして構成され得る。図1Bには示されていないが、プロセッサ105は、ソフトウェア、ハードウェア、ミドルウェア、ファームウェア、またはそれらの任意の組合せを使用して実装され得る複数の機能ユニットまたはモジュールを含み得る。複数の機能ユニットは、ホストプロセッサ104からの信号または任意の事前記憶された制御データに基づいて、本開示のパリティデータのストレージをストライピングすること、計算すること、および制御することを実行し得る。
【0022】
ストレージ107およびメモリ109は、プロセッサが演算することを必要とする場合がある任意のタイプの情報を記憶するために設けられる任意の適切なタイプの大容量ストレージを含み得る。メモリ109および/またはストレージ107は、限定はしないが、ROM、フラッシュメモリ、ダイナミックRAM、スタティックRAM、ハードディスク、SSD、光ディスクなどを含む、揮発性もしくは不揮発性、磁気、半導体ベース、テープベース。光学、リムーバブル、非リムーバブル、または他のタイプの記憶デバイスもしくは有形の(すなわち、非一時的)コンピュータ可読媒体であり得る。ストレージ107および/またはメモリ109は、本明細書で開示される機能を実行するためにプロセッサ105によって実行され得る1つまたは複数のコンピュータプログラムを記憶するように構成され得る。例えば、メモリ109および/またはストレージ107は、RAIDストライプを形成し、パリティデータを計算し、パリティデータの記憶を制御するためにプロセッサ105によって実行され得るプログラムを記憶するように構成され得る。いくつかの実装形態において、ストレージ107およびメモリ109は、プロセッサ105によって受信および/または使用される情報およびデータを記憶/キャッシュするようにも構成され得る。例えば、ストレージ107およびメモリ109は、ホストプロセッサ104から受信したデータ、および/またはRAID動作中に生成されたデータ(例えば、一時的パリティデータ)を記憶/キャッシュし得る。
【0023】
再び図1Aを参照すると、フラッシュメモリコントローラ106は、例えば、プロセッサバスを介してホストプロセッサ104に動作可能に結合され、ホストプロセッサ104から命令を受信するように構成されたホストインターフェース(I/F)を含むことができる。ホストI/Fは、いくつか名前を挙げると、シリアル接続SCSI(SAS)、パラレルSCSI、PCIエクスプレス(PCIe)、NVMエクスプレス(NVMe)、進化型ホストコントローラインターフェース(AHCI)を含むことができる。フラッシュメモリコントローラ106は、管理モジュールとNANDメモリインターフェース(I/F)とを含むこともできる。いくつかの実装形態において、管理モジュールは、ホストI/FおよびNANDメモリI/Fに動作可能に結合され、ホストプロセッサ104から受信した命令に基づいて、NANDメモリ108の動作(例えば、読み取り動作、書き込み動作、消去動作、およびプログラム動作)を制御するために1つまたは複数の制御信号を生成し、制御信号をNANDメモリI/Fに送信するように構成される。例えば、管理モジュールは、NANDメモリ108内のストライプを決定し、一時パリティデータを決定してストライプ内のメモリデータを回復するための計算を実行する。管理モジュールは、任意の適切な制御および状態マシンであり得る。いくつかの実装形態において、NANDメモリI/Fは、制御信号をNANDメモリ108に送信し、NANDメモリ108からステータス信号を受信するように構成される。ステータス信号は、フィードバックとして管理モジュールに送り返され得る、NANDメモリ108によって実行される各動作のステータス(例えば、失敗、成功、遅延など)を示すことができる。NANDメモリI/Fは、いくつか名前を挙げると、シングルデータレート(SDR)NANDフラッシュインターフェース、オープンNANDフラッシュインターフェース(ONFI)、トグルダブルデータレート(DDR)インターフェースを含むことができる。
【0024】
NANDメモリ108は、3D NANDメモリセルのアレイの形態におけるNANDメモリセルのアレイを有するNANDフラッシュメモリであり得る。いくつかの実装形態において、NANDメモリセルのアレイは、各々がメモリスタックを通って基板の上に垂直に延在する、ワードラインおよびメモリストリングの交差によって形成された3D NANDメモリセルのアレイである。3D NAND技術(例えば、メモリスタック内の層/階層の数)に応じて、メモリストリングは、典型的には、各々がフローティングゲートトランジスタまたは電荷トラップトランジスタを含む32から256個のNANDメモリセルを含む。
【0025】
NANDメモリセルは、ページに編成され得、ページは、次いで、メモリブロックに編成され、そこで、各NANDメモリセルは、ビットライン(BL)と呼ばれる別個のラインに電気的に接続される。NANDメモリセル内の同じ位置を有するすべてのセルは、制御ゲートを介して、ワードライン(WL)、すなわち導電ゲート層によって電気的に接続され得る。各ワードラインは、複数のページ内のメモリセルの制御ゲートと電気的に結合され得る。いくつかの実装形態において、プレーンは、同じビットラインを介して電気的に接続された特定の数のメモリブロックを含む。図7は、いくつかの実装形態による、横方向におけるメモリブロック内のNANDメモリ108の断面図の概略図を示す。図7に示すように、複数のゲート導電層、すなわちGCL1、GCL2、...が、メモリブロック内で垂直方向において配置される。ゲート導電層の各々は、横方向に延在する。単一のゲート導電層によって形成されたメモリセルおよびメモリストリングがページを形成する。1つのメモリブロック内の各ゲート導電層は、複数のページのメモリセルに結合され得る。すなわち、1つのメモリブロックは、単一のレベルにおいて複数のページを含むことができる。2つの隣接するゲート導電層は、本開示において定義される層を形成する。例えば、GCL1およびGCL2は、層1を形成し、GCL3およびGCL4は、層2を形成するなどである。SSGは、各々、垂直方向において複数のゲート導電層(例えば、複数のメモリセル)に電気的に結合され得る。いくつかの実装形態において、NANDメモリ108は、各々が少なくとも1つのプレーンを有する複数のダイを含む。NANDメモリ108の例は、図2図3Aおよび図3B、および図4A図4C、ならびに関連する説明において示されている。
【0026】
ホストプロセッサ104は、フラッシュメモリコントローラ106から送信されたデータおよび/または信号に基づいて、装置100内の様々なモジュール/部分における動作を調整し得る。ホストプロセッサ104は、フラッシュメモリコントローラ106から送信されたデータおよび/または信号に基づいて、RAM110の動作を制御し得る。例えば、ホストプロセッサ104は、フラッシュメモリコントローラ106から一時パリティデータを受信し、計算および/または参照のために一時パリティデータをRAM110内に記憶する。ホストプロセッサ104はまた、一時パリティデータがもはや必要なくなった場合、RAM110から一時パリティデータを削除し得る。
【0027】
別の例(図示せず)において、フラッシュメモリコントローラ106およびNANDメモリ108のチップは、ユニバーサルフラッシュストレージ(UFS)パッケージまたはeMMCパッケージなどの同じパッケージ内に含まれ、ワイヤボンディングを介して電気的に接続され得る。次いで、フラッシュメモリコントローラ106は、UFSドライバソフトウェアまたはMMCドライバソフトウェアなどのソフトウェアドライバによって駆動されるプロセッサバスなどのインターリンクを介して、ホストプロセッサ104とデータを転送し得る。
【0028】
いくつかの実装形態において、装置100は、NANDメモリ108の動作を容易にするために使用される任意の適切なデジタル、アナログ、および/または混合信号回路を含む周辺回路(図示せず、制御および感知回路としても知られる)も含む。例えば、周辺回路は、ページバッファ、デコーダ(例えば、行デコーダおよび列デコーダ)、センスアンプ、ドライバ(例えば、ワードラインドライバ)、チャージポンプ、電流もしくは電圧基準、または回路の任意のアクティブもしくはパッシブ構成要素(例えば、トランジスタ、ダイオード、抵抗器、またはキャパシタ)を含むことができる。
【0029】
RAIDアルゴリズムは、データ冗長性をもたらすために、複数のストライプに構成されたNANDメモリ108のメモリデータに対して実行され得る。ストライプは、NANDメモリ108の所望の物理的位置(例えば、ページ、メモリブロックなど)において分散された複数のデータ部分を含み得る。それぞれのストライプの侵害されたメモリデータを検出および/または回復するために、一時パリティデータが生成され得る。オプションで、一時パリティデータは、保持または削除され得る。すべてのストライプ内のメモリデータについて、全体的なパリティデータが生成され得る。図2図3Aおよび図3B、ならびに図4A図4Cは、いくつかの実装形態による、それぞれのNANDメモリおよび対応するRAIDアルゴリズムにおける3つの異なるストライピング構成を示す。図5A図5Dは、本開示のいくつかの態様による、それぞれのRAIDアルゴリズムのための一時パリティデータストレージを示す。図6A図6Cは、各々、本開示のいくつかの態様による、それぞれのストライピング構成におけるRAIDアルゴリズムを使用してストライピングし、データ回復を実行するための方法のフローチャートを示す。方法600、620、および640において示されている動作は、網羅的ではなく、図示された動作のいずれかの前、後、または間に他の動作が同様に実行され得ることが理解される。さらに、動作のうちのいくつかは、同時に、または図6A図6Cに示す順序とは異なる順序で実行され得る。
【0030】
図2図3Aおよび図3B、ならびに図4A図4CにおけるNANDメモリ200、300、および400は、各々、図1AにおけるNANDメモリ108の例である。NANDメモリ200、300、および400における動作は、フラッシュメモリコントローラ、例えば、フラッシュメモリコントローラ106によって制御され得る。例示を容易にするために、NANDメモリ200、300、および400は、各々、N個のダイ(例えば、DIE1、DIE2、...、DIEN)を含み得、ここで、Nは、少なくとも1の正の整数である。各ダイは、横方向にM個のプレーン(例えば、PLN1、PLN2、...、PLNM)に分割され得、Mは、少なくとも1の正の整数である。いくつかの実装形態において、Mは、2以上である。いくつかの実装形態において、Mは、6または8など、4以上である。各プレーンは、横方向にX個のメモリブロック(B1、B2、...、BX)に分割され、Xは、少なくとも1の正の整数である。各メモリブロックは、(例えば、横方向に延在する)いくつかのゲート導電層と(例えば、垂直方向に延在する)複数のメモリストリングとの交差によって形成された複数のメモリセルを含み得る。各メモリブロック内で垂直方向に配置されたゲート導電層の数は、2以上であり得る。いくつかの実装形態において、隣接するメモリブロック内の同じレベルのゲート導電層は、互いに接触し得る。各メモリブロックは、横方向に複数のページに分割され得る。メモリデータは、メモリセルにおいて、ページ、メモリブロック、プレーン、およびダイにおいて記憶され得る。いくつかの実装形態において、Mは、4に等しい。いくつかの実装形態において、Nは、4に等しい。いくつかの実装形態において、メモリブロック内のゲート導電層の数は、16以上である。
【0031】
図2は、NANDメモリ200において用いられるRAIDアルゴリズムのストライピング構成を示し、図5Aは、本開示のいくつかの態様による、RAIDアルゴリズムに従って生成された一時パリティデータを記憶するために用いられる一時記憶ユニット210を示す。RAIDアルゴリズムは、RAID5であり得る。いくつかの実装形態において、NANDメモリ200におけるストライピングは、マルチプレーン障害においてメモリデータを回復するために使用され得る。図2図5A、および図6Aについて、まとめて説明する。
【0032】
図6Aを参照すると、方法600は、動作602において開始し、ここで、M個のプレーンおよびN個ダイにおける各メモリブロックにおいてJ個の層が決定され、ここで、Jは、少なくとも2の正の整数である。各層は、一対の隣接するゲート導電層を含む。図2は、方法600のための対応する構成を示す。
【0033】
図2に示すように、各プレーン(例えば、PLN1、PLN2、...、PLNM)のメモリブロックB1において、J個の層L1、L2、...、LJが、各ダイDIE1、DIE2、...、DIENにおいて決定され得る。各層は、一対の隣接するゲート導電層を含む。いくつかの実装形態において、メモリブロックB1は、少なくとも16個のゲート導電層を含み、Jは、8以上である。フラッシュメモリコントローラ106は、この動作を実行し得る。
【0034】
再び図6Aを参照すると、方法600は、動作604に進み、ここで、M個のストライプが決定され、各ストライプは、それぞれのプレーンにおいて構成される。
【0035】
図2に示すように、M個のストライプ201-1、201-2、...、201-(M-1)、および201-Mが決定され得る。M個のストライプの各々は、それぞれのプレーンに対応し得、N個のダイすべてにおけるそれぞれのプレーン内のJ個の層内に記憶されるJ×N個のデータ部分を含み得る。各データ部分は、それぞれのメモリブロック内のそれぞれの層(すなわち、一対の隣接するゲート導電層)とメモリブロック内のメモリストリングとの交差によって形成されたメモリセル内に記憶されたメモリデータを含み得る。例えば、ストライプ201-1は、プレーンPLN1に対応し得、N個のダイ(すなわち、DIE1~DIEN)内のメモリブロックB1内のJ個の層内に記憶されたJ×N個のデータ部分を含み得、ストライプ201-Mは、プレーンPLNMに対応し得、N個のダイ(すなわち、DIE1~DIEN)内のメモリブロックB1内のJ個の層内に記憶されたJ×N個のデータ部分を含み得る。ストライプ201-1内の各データ部分は、層L1内の2つのゲート導電層とPLN1内のそれぞれのメモリブロックB1内のメモリストリングとによって形成されたメモリセル内に記憶されたメモリデータを含む。言い換えれば、ダイDIE1内のプレーンPLN1のメモリブロックB1内の層L1内に記憶されたメモリデータは、ストライプ201-1の第1のデータ部分を形成し得、ダイDIE2内のプレーンPLN1のメモリブロックB1内の層L1内に記憶されたメモリデータは、ストライプ201-1の第2のデータ部分を形成し得、...、ダイDIE1内のプレーンPLN1のメモリブロックB1内の層LJ内に記憶されたメモリデータは、ストライプ201-1の第(J×N-(N-1))のデータ部分を形成し得、...、およびダイDIEN内のプレーンPLN1のメモリブロックB1内の層LJ内に記憶されたメモリデータは、ストライプ201-1の第(J×N)のデータ部分を形成し得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、この動作を実行し得る。
【0036】
図2に示すように、M個のストライプ201-1。201-2、,,,、201-(M-1)、および201-Mは、各々、それぞれのプレーンにおいて構成され、別のプレーン内のデータ部分を含まない。すなわち、各ストライプのデータ部分は、それぞれのプレーンにおいてのみ構成され、別のプレーンにはなく、例えば、「プレーンをまたがる」ことはない。ストライピング構成は、複数のプレーンの並列プログラミングにおいて発生するプログラミング障害が単一のストライプ内の2つ以上のデータ部分に影響を与えないことを保証し得る。すなわち、マルチプレーン障害は、単一のストライプ内で最大1つの侵害されたデータ部分を結果として生じる可能性がある。したがって、ストライプ内の2つ以上の侵害されたデータ部分がマルチプレーン障害によって引き起こされることが防止され得る。したがって、侵害されたデータ部分は、ストライプの一時パリティデータを使用して回復され得る。詳細は、以下に提供されている。
【0037】
再び図6Aを参照すると、方法600は、動作606に進み、ここで、M個のストライプについてM個のプレーンデータ部分が決定される。
【0038】
図2に示すように、M個のストライプについてM個のプレーンパリティデータ部分202-1、202-2、...、202-(M-1)、202-Mが決定され得る。プレーンパリティデータの各々は、それぞれのストライプのデータ部分に基づいて生成され得る。いくつかの実装形態において、それぞれのプレーンパリティデータ部分を生成するために、各ストライプのJ×N個のデータ部分の間で排他的論理和(XOR)演算が実行される。例えば、プレーンパリティデータ部分202-1は、ストライプ201-1内のすべてのJ×N個のデータ部分に対するXOR演算の結果であり得、プレーンパリティデータ部分202-2は、ストライプ201-2内のすべてのJ×N個のデータ部分に対するXOR演算の結果であり得、...、プレーンパリティデータ部分202-(M-1)は、ストライプ201-(M-1)内のすべてのJ×N個のデータ部分に対するXOR演算の結果であり得、プレーンパリティデータ部分202-Mは、ストライプ201-M内のすべてのJ×N個のデータ部分に対するXOR演算の結果であり得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、この動作を実行し得る。
【0039】
再び図6Aを参照すると、方法600は、動作608に進み、ここで、M個のプレーンパリティデータ部分を記憶するように一時記憶ユニットが制御される。
【0040】
図2に示すように、一時記憶ユニット210は、M個のプレーンパリティデータ部分202-1、202-2、...、202-(M-1)、202-Mの各々を記憶するように制御され得る。図5Aは、M個のプレーンパリティデータ部分が記憶される一時記憶ユニット210の図を示す。一時記憶ユニット210は、M個のプレーンパリティデータ部分が所望の時間の間記憶されることを可能にする任意の適切な媒体内の記憶空間であり得る。様々な実装形態において、一時記憶ユニット210は、RAM110内のパーティション、および/またはNANDメモリ108内の専用記憶空間であり得る。いくつかの実装形態において、一時記憶ユニット210は、メモリ109および/またはストレージ107内にあり得る。いくつかの実装形態において、一時記憶ユニット210は、装置100に結合された外部記憶空間であり得る。いくつかの実装形態において、一時記憶ユニット210は、RAM110内に配置される。いくつかの実装形態において、M個のプレーンパリティデータ部分が記憶される持続時間は、フラッシュメモリコントローラ106が任意のプログラミング障害を識別し、侵害されたデータ部分の位置を特定し、侵害されたデータ部分を回復するためにそれぞれのプレーンパリティデータ部分を使用するのに十分な長さである。いくつかの実装形態において、M個のプレーンパリティデータ部分は、回復動作が完了するか、またはプログラミング障害が検出されなかった後に削除される。いくつかの他の実装形態において、M個のプレーンパリティデータ部分は、保持される。いくつかの実装形態において、フラッシュメモリコントローラ106は、この動作を実行し得る。
【0041】
再び図6Aを参照すると、方法600は、動作610に進み、ここで、マルチプレーン障害によるプログラミング障害が検出されている。プログラミング障害が検出された場合、方法600は、動作612に進み、ここで、マルチプレーン障害が発生した侵害されたデータ部分内に記憶されたメモリデータは、それぞれのプレーンパリティデータ部分を使用して回復される。侵害されたデータ部分の回復後、方法600は、動作614に進み、ここで、M個のプレーンパリティデータ部分からパリティデータセットが生成される。プログラミング障害が検出されない場合、方法600は、動作614に進む。
【0042】
フラッシュメモリコントローラ106は、プレーンPLN1~PLNNの並列プログラミング中に任意のマルチプレーン障害が発生したかどうかを判断し得る。先に説明したように、複数のプレーンの並列プログラミングによるマルチプレーン障害は、これらのプレーンの同じ位置におけるメモリセル内のメモリデータを侵害させる場合がある。結果として、1つまたは複数のストライプの同じ位置におけるデータ部分(すなわち、202-1、...、202-M)が侵害される可能性がある。いくつかの実装形態において、フラッシュメモリコントローラ106は、それぞれのストライプ内のデータ部分において任意のマルチプレーン障害が発生したかどうかを判断するために、各ストライプのプレーンパリティデータ部分を使用し得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、侵害されたデータ部分を検出および識別するために、それぞれのストライプのデータ部分とそれぞれのストライプのプレーンパリティデータ部分との間でXOR演算を実行し得る。(もしあれば)各ストライプ内の侵害されたデータ部分の位置は、決定され得る。
【0043】
侵害されたデータ部分がストライプ内で検出された場合、フラッシュメモリコントローラ106は、代替データ部分を生成するために、ストライプ内のデータ部分の残り(例えば、侵害されていないデータ部分)と、ストライプのプレーンパリティデータ部分とに基づいて、代替データ部分を生成し得る。いくつかの実装形態において、代替データ部分の生成は、ストライプ内のデータ部分の残りと、ストライプのプレーンパリティデータ部分との間でXOR演算を実行することを含む。フラッシュメモリコントローラ106は、侵害されたデータ部分内のメモリデータが保持され得るように、侵害されたデータ部分を代替データ部分で回復し得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、例えば、侵害されたデータ部分を識別および位置特定するため、ならびに/または代替データ部分を生成するために、計算が必要な場合、一時記憶ユニット210からのプレーンパリティデータ部分にアクセスし得る。
【0044】
M個のプレーンおよびN個のダイにおけるメモリブロックB1内のJ個の層のパリティ/冗長データ、例えばJ×N×M個のデータ部分を表すパリティデータセット212が、M個のプレーンパリティデータ部分から生成され得る。いくつかの実装形態において、パリティデータセット212は、M個のプレーンパリティデータ部分の間でXOR演算を実行することによって取得される。パリティデータセット212は、NANDメモリ200内の永久記憶ユニット(例えば、複数のメモリセル)内に記憶され得る。いくつかの実装形態において、パリティデータセット212は、ストライプ201-M内のデータ部分内に記憶され得る。フラッシュメモリコントローラ106は、この動作を実行することができる。
【0045】
いくつかの実装形態において、フラッシュメモリコントローラ106は、M個のプレーンおよびN個のダイにおけるメモリブロックB1内の残りの層に対して動作602~616を実行し続け得る。例えば、メモリブロックB1の層L(J+1)~LKに対応するプレーンパリティデータ部分204-1、...、204-Mが、図5Aに示すように、計算および/または参照のために一時記憶ユニット210内に記憶され得る。同じ動作は、M個のプレーンおよびN個のダイにおける他のメモリブロックに対しても実行され得る。
【0046】
再び図6Aを参照すると、方法600は、動作616に進み、ここで、M個のプレーンパリティデータ部分は、一時記憶ユニットから削除される。
【0047】
いくつかの実装形態において、侵害されたデータ部分の回復後、フラッシュメモリコントローラ106は、一時記憶ユニット210からM個のプレーンパリティデータ部分を削除し得る。いくつかの実装形態において、プログラミング障害が検出されない場合、フラッシュメモリコントローラ106は、一時記憶ユニット210からM個のプレーンパリティデータ部分を削除する。それぞれのプレーンパリティデータ部分を使用して異なるプレーン内の侵害されたデータ部分を回復することによって、マルチプレーン障害によって引き起こされた異なるプレーン内の同じ位置における2つ以上の侵害されたデータ部分が回復され得る。1つのストライプがプレーンにわたるデータ部分を含むRAID方法と比較して、これらのプレーン内で回復/保護され得るデータ部分の数は、例えば、2つ以上に増加される。
【0048】
図3Aおよび図3Bは、NANDメモリ300において用いられるRAIDアルゴリズムのためのストライピング構成を示し、図5Bは、本開示のいくつかの態様による、RAIDアルゴリズムに従って生成された一時パリティデータを記憶するために用いられる一時記憶ユニット310を示す。RAIDアルゴリズムは、RAID5であり得る。いくつかの実装形態において、NANDメモリ300におけるストライピングは、SSGリーク障害においてメモリデータを回復するために使用され得る。図3A図3B図5B、および図6Bについて、まとめて説明する。
【0049】
図6Bを参照すると、方法620は、動作622において開始し、ここで、M個のプレーンおよびN個のダイにおけるメモリブロックにおいてJ個の層が決定され、Jは、少なくとも2の正の整数である。各層は、一対の隣接するゲート導電層を含む。図3Aおよび図3Bは、方法620のための対応する構成を示す。フラッシュメモリコントローラ106は、この動作を実行し得る。この動作は、動作602と同様または同じであり得、詳細な説明は、ここでは繰り返されない。
【0050】
再び図6Bを参照すると、方法620は、動作624に進み、ここで、J個のストライプが決定され、各ストライプは、M個のプレーンおよびN個のダイにおける単一の層において構成される。
【0051】
図3Aおよび図3Bに示すように、J個のストライプ301-1、301-2、...、301-(J-1)、および301-Jが決定され得る。J個のストライプの各々は、J個の層のそれぞれ1つに対応し得る。J個のストライプの各々は、すべてのプレーンおよびすべてのダイにおけるそれぞれの単一の層内に記憶されたM×N個のデータ部分を含み得る。各データ部分は、それぞれのメモリブロック内のそれぞれの層(すなわち、一対の隣接するゲート導電層)とメモリブロック内のメモリストリングとの交差によって形成されたメモリセル内に記憶されたメモリデータを含み得る。例えば、ストライプ301-1は、層L1に対応し得、M個のプレーン(すなわち、PLN1~PLNM)およびN個のダイ(すなわち、DIE1~DIEN)内のメモリブロックB1内の層L1内に記憶されたM×N個のデータ部分を含み得、ストライプ301-Jは、層LJに対応し得、M個のプレーンおよびN個のダイ内のメモリブロックB1内の層LJ内に記憶されたM×N個のデータ部分を含み得る。ストライプ301-1内の各データ部分は、2つのゲート導電層と、M個のプレーンおよびN個のダイ内のそれぞれのメモリブロックB1内のメモリストリングとによって形成されたメモリセル内に記憶されたメモリデータを含む。言い換えれば、ダイDIE1内のプレーンPLN1のメモリブロックB1内の層L1内に記憶されたメモリデータは、ストライプ301-1の第1のデータ部分を形成し得、ダイDIE1内のプレーンPLN2のメモリブロックB1内の層L1内に記憶されたメモリデータは、ストライプ301-1の第(N+1)のデータ部分を形成し得、...、ダイDIE1内のプレーンPLNMのメモリブロックB1内の層L1内に記憶されたメモリデータは、ストライプ301-1の第(M×N-(N-1))のデータ部分を形成し得、...、およびダイDIEN内のプレーンPLNMのメモリブロックB1内の層L1内に記憶されたメモリデータは、ストライプ301-1の第(M×N)のデータ部分を形成し得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、この動作を実行し得る。
【0052】
図3Aおよび図3Bに示すように、J個のストライプ301-1、301-2、...、301-(J-1)、および301-Jは、各々、それぞれの層において構成され、別の層において構成されない。すなわち、J個のストライプの各々は、メモリブロック内の単一の層内にのみデータ部分を含み、別の層内にデータ部分を含まず、例えば、「層をまたがる」ことはない。ストライピング構成は、SSGリーク障害が単一のストライプ内に2つ以上の侵害されたデータ部分を引き起こさないことを保証し得る。SSGリーク障害は、せいぜい各々が異なるストライプ内の異なる層において侵害されたデータ部分を引き起こす可能性がある。したがって、単一のストライプ内の2つ以上の侵害されたデータ部分がSSGリーク障害によって引き起こされることが防止され得る。侵害されたデータ部分は、ストライプのパリティデータを使用して各々回復され得る。詳細は、以下に提供されている。
【0053】
再び図6Bを参照すると、方法620は、動作626に進み、ここで、J個のストライプについてJ個の層パリティデータ部分が決定される。
【0054】
図3Aおよび図3Bに示すように、J個のストライプについてJ個の層パリティデータ部分302-1、302-2、...、302-(J-1)、302-Jが決定される。層パリティデータ部分の各々は、それぞれのストライプのデータ部分に基づいて生成され得る。いくつかの実装形態において、それぞれの層パリティデータ部分を生成するために、各ストライプのM×N個のデータ部分の間で排他的論理和(XOR)演算が実行される。例えば、層パリティデータ部分302-1は、ストライプ301-1のすべてのM×N個のデータ部分に対するXOR演算の結果であり得、層パリティデータ部分302-2は、ストライプ301-2のすべてのM×N個のデータ部分に対するXOR演算の結果であり得、...、層パリティデータ部分302-(J-1)は、ストライプ301-(J-1)のすべてのM×N個のデータ部分に対するXOR演算の結果であり得、層パリティデータ部分302-Jは、ストライプ301-JのすべてのM×N個のデータ部分に対するXOR演算の結果であり得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、この動作を実行し得る。
【0055】
再び図6Bを参照すると、方法620は、動作628に進み、ここで、J個の層パリティデータ部分を記憶するように一時記憶ユニットが制御される。
【0056】
図3Aおよび図3Bに示すように、一時記憶ユニット310は、J個の層パリティデータ部分302-1、302-2、...、302-(J-1)、302-Jの各々を記憶するように制御され得る。図5Bは、J個の層パリティデータ部分が記憶される一時記憶ユニット310の図を示す。一時記憶ユニット310は、J個の層パリティデータ部分が所望の時間の間記憶されることを可能にする任意の適切な媒体内の記憶空間であり得る。様々な実装形態において、一時記憶ユニット310は、RAM110内のパーティション、および/またはNANDメモリ108内の専用記憶空間であり得る。いくつかの実装形態において、一時記憶ユニット310は、装置100に結合された外部記憶空間であり得る。いくつかの実装形態において、一時記憶ユニット310は、RAM110内に配置される。いくつかの実装形態において、J個の層パリティデータ部分が記憶される持続時間は、フラッシュメモリコントローラ106がプログラミング障害を識別し、侵害されたデータ部分の位置を特定し、侵害されたデータ部分を回復するためにそれぞれの層パリティデータ部分を使用するのに十分な長さである。いくつかの実装形態において、J個の層パリティデータ部分は、回復動作が完了するか、またはプログラミング障害が検出されなかった後に削除される。いくつかの他の実装形態において、J個の層パリティデータ部分は、保持される。いくつかの実装形態において、フラッシュメモリコントローラ106は、この動作を実行し得る。
【0057】
再び図6Bを参照すると、方法620は、動作630に進み、ここで、例えば、SSGリーク障害によるプログラミング障害が検出されている。プログラミング障害が検出された場合、方法620は、動作632に進み、ここで、プログラミング障害が発生した侵害されたデータ部分内に記憶されたメモリデータは、それぞれの層パリティデータ部分を使用して回復される。侵害されたデータ部分の回復後、方法620は、動作634に進み、ここで、J個の層パリティデータ部分からパリティデータセットが生成される。プログラミング障害が検出されない場合、方法620は、動作634に進む。
【0058】
フラッシュメモリコントローラ106は、SSGリーク障害による任意のプログラミング障害が発生したかどうかを判断し得る。先に説明したように、SSGリーク障害によるプログラミング障害は、異なるレベルの同じ位置におけるメモリセル内のメモリデータを侵害させる場合がある。しかしながら、図3Aおよび図3Bに示すストライピングは、もしあれば、ストライピング内の単一のデータ部分のみがSSGリーク障害によって侵害される可能性があることを保証することができる。SSGリーク障害は、せいぜい異なるストライプ内のデータ部分の侵害を引き起こす可能性がある。いくつかの実装形態において、フラッシュメモリコントローラ106は、それぞれのストライプ内のデータ部分において任意のプログラミング障害が発生したかどうかを判断するために、各ストライプの層パリティデータ部分を使用し得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、侵害されたデータ部分を検出および識別するために、それぞれのストライプのデータ部分とそれぞれのストライプの層パリティデータ部分との間でXOR演算を実行し得る。(もしあれば)各ストライプ内の侵害されたデータ部分の位置は、決定され得る。
【0059】
侵害されたデータ部分がストライプ内で検出された場合、フラッシュメモリコントローラ106は、代替データ部分を生成するために、ストライプ内のデータ部分の残り(例えば、侵害されていないデータ部分)と、ストライプの層パリティデータ部分とに基づいて、代替データ部分を生成し得る。いくつかの実装形態において、代替データ部分の生成は、ストライプ内のデータ部分の残りと、ストライプの層パリティデータ部分との間でXOR演算を実行することを含む。フラッシュメモリコントローラ106は、侵害されたデータ部分内のメモリデータが保持され得るように、侵害されたデータ部分を代替データ部分で回復し得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、例えば、侵害されたデータ部分を識別および位置特定するため、ならびに/または代替データ部分を生成するために、計算が必要な場合、一時記憶ユニット310から層パリティデータ部分を取得し得る。
【0060】
M個のプレーンおよびN個のダイにおけるメモリブロックB1内のJ個の層のパリティ/冗長データ、例えばJ×N×M個のデータ部分を表すパリティデータセット312が、J個の層パリティデータ部分から生成され得る。いくつかの実装形態において、パリティデータセット312は、J個の層パリティデータ部分の間でXOR演算を実行することによって取得される。パリティデータセット312は、NANDメモリ300内の永久記憶ユニット(例えば、複数のメモリセル)内に記憶され得る。フラッシュメモリコントローラ106は、この動作を実行することができる。
【0061】
いくつかの実装形態において、フラッシュメモリコントローラ106は、M個のプレーンおよびN個のダイにおけるメモリブロックB1内の残りの層に対して動作622~636を実行し続け得る。例えば、メモリブロックB1の層L(J+1)~LKに対応する層パリティデータ部分302-(J+1)、...、302-(K-1)、302-Kが、計算および/または参照のために一時記憶ユニット210内に記憶され得る。同じ動作は、M個のプレーンおよびN個のダイにおける他のメモリブロックに対しても実行され得る。
【0062】
再び図6Bを参照すると、方法620は、動作636に進み、ここで、J個の層パリティデータ部分は、一時記憶ユニットから削除される。
【0063】
いくつかの実装形態において、侵害されたデータ部分の回復およびパリティデータセットの生成後、フラッシュメモリコントローラ106は、一時記憶ユニット310からJ個の層パリティデータ部分を削除し得る。いくつかの実装形態において、プログラミング障害が検出されない場合、フラッシュメモリコントローラ106は、一時記憶ユニット310からJ個の層パリティデータ部分を削除する。それぞれの層パリティデータ部分を使用して異なる層内の侵害されたデータ部分を回復することによって、2つ以上の層内の同じ位置においてSSGリーク障害によるプログラミング障害によって引き起こされた2つ以上の侵害されたデータ部分が回復され得る。1つのストライプが層にわたるデータ部分を含むRAID方法と比較して、これらの層内で回復/保護され得るデータ部分の数は、例えば、2つ以上に増加される。
【0064】
図4A図4Cは、NANDメモリ400において用いられるRAIDアルゴリズムのためのストライピング構成を示し、図5Cは、本開示のいくつかの態様による、RAIDアルゴリズムに従って生成された一時パリティデータを記憶するために用いられる一時記憶ユニット410を示し、図5Dは、いくつかの実装形態による、RAIDアルゴリズムに従って生成された一時パリティデータを記憶するために用いられる第2の一時記憶ユニット420を示す。RAIDアルゴリズムは、RAID5であり得る。いくつかの実装形態において、NANDメモリ400におけるストライピング構成は、SSGリーク障害、マルチプレーン障害、またはその両方によって損なわれたメモリデータを回復するために使用され得る。図4A図4C図5C図5D、および図6Cについて、まとめて説明する。
【0065】
図6Cを参照すると、方法640は、動作642において開始し、ここで、M個のプレーンおよびN個のダイにおける各メモリブロックにおいてJ個の層が決定され、Jは、少なくとも2の正の整数である。各層は、一対の隣接するゲート導電層を含む。図4A図4Cは、方法640のための対応する構成を示す。フラッシュメモリコントローラ106は、この動作を実行し得る。この動作は、動作602と同様または同じであり得、詳細な説明は、ここでは繰り返されない。
【0066】
再び図6Cを参照すると、方法640は、動作644に進み、ここで、ストライプのM個のセットが決定され、各セットは、J個のストライプを有する。M個のセットの各々は、M個のプレーンのそれぞれ1つに対応する。J個のストライプの各々は、N個のダイにおけるそれぞれのプレーン内の単一の層において構成される。
【0067】
図4A図4Cに示すように、各々がJ個のストライプ(すなわち、ストライプ1、ストライプ2、...、ストライプJ)を有するストライプのM個のセット(すなわち、セット401、...、セット40M)において構成されたJ×M個のストライプが決定され得る。M個のセットの各々は、M個のプレーンのそれぞれ1つに対応する。J個のストライプの各々は、それぞれのプレーン内のJ個の層のそれぞれ1つに対応し得る。J個のストライプの各々は、N個のダイにおけるそれぞれの単一の層内に記憶されたN個のデータ部分を含み得る。各データ部分は、それぞれのメモリブロック内のそれぞれの層(すなわち、一対の隣接するゲート導電層)とメモリブロック内のメモリストリングとの交差によって形成されたメモリセル内に記憶されたメモリデータを含み得る。例えば、セット401のストライプ1は、プレーンPLN1内のメモリブロックB1内の層L1に対応し得、プレーンPLN1およびN個のダイ(すなわち、DIE1~DIEN)におけるメモリブロックB1内の層L1内に記憶されたN個のデータ部分を含み得、セット40MのストライプJは、プレーンPLNM内のメモリブロックB1内の層LJに対応し得、プレーンPLNMおよびN個のダイにおけるメモリブロックB1内の層LJ内に記憶されたN個のデータ部分を含み得る。ストライプ内の各データ部分は、2つのゲート導電層と、それぞれのプレーンおよびN個のダイ内のそれぞれのメモリブロックB1内のメモリストリングとによって形成されたメモリセル内に記憶されたメモリデータを含む。言い換えれば、ストライプのM個のセットの各々について、ダイDIE1内のメモリブロックB1内の層L1内に記憶されたメモリデータは、ストライプ1の第1のデータ部分を形成し得、ダイDIEN内のメモリブロックB1内の層L1内に記憶されたメモリデータは、ストライプ1の第Nのデータ部分を形成し得、...、ダイDIE1内のメモリブロックB1内の層LJ内に記憶されたメモリデータは、ストライプJの第1のデータ部分を形成し得、およびダイDIEN内のメモリブロックB1内の層LJ内に記憶されたメモリデータは、ストライプJの第Nのデータ部分を形成し得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、この動作を実行し得る。
【0068】
図4A図4Cに示すように、ストライプのM個のセットは、各々、それぞれのプレーン内に構成され、各セット内のJ個のストライプは、各々、単一のそれぞれの層内に構成される。すなわち、各ストライプは、単一のプレーンおよび単一の層において構成される。したがって、各ストライプのデータ部分は、単一の層および単一のプレーンにおいてのみ構成され、別の層または別のプレーンにはなく、例えば、「プレーンをまたがる」または「層をまたがる」ことはない。ストライピングは、プログラミング障害、例えば、マルチプレーン障害および/またはSSGリーク障害がストライプ内の単一のデータ部分のみを侵害する可能性があることを保証し得る。マルチプレーン障害および/またはSSGリーク障害は、せいぜい異なるストライプ内のメモリデータを侵害する可能性がある。したがって、ストライプ内の2つ以上の侵害されたデータ部分がSSGリーク障害および/またはマルチプレーン障害などのプログラミング障害によって引き起こされることが回避され得、侵害されたデータ部分は、ストライプのそれぞれのパリティデータを使用して回復され得る。詳細は、以下に提供されている。
【0069】
再び図6Cを参照すると、方法640は、動作646に進み、ここで、ストライプのM個のセットについて、各セットがJ個のパリティデータ部分を有するデータパリティ部分のM個のセットが決定される。
【0070】
図4A図4Cに示すように、各セットがJ個のパリティデータ部分を有するパリティデータ部分のM個のセットが決定され得る。パリティデータ部分の各セットは、ストライプのそれぞれのセットに対応し得、セット内のJ個のパリティ部分の各々は、それぞれのセット内のそれぞれのストライプに対応し得る。図4A図4Cに示すように、パリティデータ部分の第1のセットは、パリティデータ部分401-1、401-2、...、401-Jを含み得、パリティデータ部分の第(M-1)のセットは、パリティデータ部分40(M-1)-1、40(M-1)-2、...、40(M-1)-(J-1)、40(M-1)-Jを含み得、パリティデータ部分の第Mのセットは、パリティデータ部分40M-1、40M-2、...、40M-(J-1)、40M-Jを含み得る。パリティデータ部分の各々は、それぞれのストライプのデータ部分に基づいて生成され得る。いくつかの実装形態において、それぞれのパリティデータ部分を生成するために、各ストライプのN個のデータ部分の間で排他的論理和(XOR)演算が実行される。例えば、パリティデータ部分401-1は、ストライプのセット401内のストライプ1のすべてのN個のデータ部分に対するXOR演算の結果であり得、パリティデータ部分401-2は、ストライプのセット401のストライプ2のすべてのN個のデータ部分に対するXOR演算の結果であり得、...、パリティデータ部分40M-1は、ストライプのセット40Mのストライプ1のすべてのN個のデータ部分に対するXOR演算の結果であり得、パリティデータ部分40M-Jは、ストライプのセット40MのストライプJのすべてのN個のデータ部分に対するXOR演算の結果であり得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、この動作を実行し得る。
【0071】
再び図6Cを参照すると、方法640は、動作648に進み、ここで、パリティデータ部分のM個のセットを記憶するように一時記憶ユニットが制御される。
【0072】
図4A図4Cに示すように、一時記憶ユニット410は、パリティデータ部分のM個のセットの各々を記憶するように制御され得る。図5Cは、パリティデータ部分のM個のセットが記憶される一時記憶ユニット410の図を示す。一時記憶ユニット410は、パリティデータ部分が所望の時間の間記憶されることを可能にする任意の適切な媒体内の記憶空間であり得る。様々な実装形態において、一時記憶ユニット410は、RAM110内のパーティション、および/またはNANDメモリ108内の専用記憶空間であり得る。いくつかの実装形態において、一時記憶ユニット410は、RAM110内に配置される。いくつかの実装形態において、パリティデータ部分のM個のセットが記憶される持続時間は、フラッシュメモリコントローラ106がプログラミング障害を識別し、侵害されたデータ部分の位置を特定し、侵害されたデータ部分を回復するためにそれぞれの層パリティデータ部分を使用するのに十分な長さである。いくつかの実装形態において、パリティデータ部分のM個のセットは、回復動作が完了するか、またはプログラミング障害が検出されなかった後に削除される。いくつかの他の実装形態において、パリティデータ部分のM個のセットは、保持される。いくつかの実装形態において、フラッシュメモリコントローラ106は、この動作を実行し得る。
【0073】
いくつかの実装形態において、パリティデータ部分の各セットについて、フラッシュメモリコントローラ106は、一時パリティデータ部分を計算し得る。M個の一時パリティデータ部分が決定され得る。いくつかの実装形態において、ストライプの各セットについて、フラッシュメモリコントローラ106は、パリティデータ部分のM個のセットを取得するために、例えば、ストライプ1のパリティデータ部分からストライプJのパリティデータ部分まで、パリティデータ部分を順次計算する。パリティデータ部分の各セットについて、フラッシュメモリコントローラ106は、一時パリティ部分を生成するために、(例えば、ストライプ2の)第2のパリティデータ部分と(例えば、ストライプ1の)第1のパリティデータ部分との間でXOR演算を実行し得、新しい一時パリティデータ部分を生成するために、(例えば、ストライプ3の)第3のパリティデータ部分と一時パリティデータ部分との間でXOR演算を実行し得る。フラッシュメモリコントローラ106は、一時パリティデータ部分を第2の一時記憶ユニット(図示せず)内に記憶し、それを新しい一時パリティデータ部分と置き換え得る。第2の一時記憶ユニットは、RAM110内のパーティション、および/またはNANDメモリ108内の専用記憶空間であり得る。いくつかの実装形態において、第2の一時記憶ユニットは、装置100に結合された外部記憶空間であり得る。いくつかの実装形態において、第2の一時記憶ユニットは、RAM110内に配置される。いくつかの実装形態において、第2の一時記憶ユニットは、一時記憶ユニット410と同じ媒体内にある。フラッシュメモリコントローラ106は、J個のストライプの残りの各々のパリティデータ部分を計算し続け、J個のストライプの残りの各々について新しい一時パリティデータ部分を生成し得る。フラッシュメモリコントローラ106は、各セットのJ個のパリティデータ部分を一時記憶ユニット410内に記憶し、これらのストライプの各々について、第2の一時記憶ユニットにおいて、前の一時パリティデータ部分を新しい一時パリティデータ部分で更新し得る。
【0074】
例えば、図4A図4Cに示すように、ストライプのM個のセットの各々について、フラッシュメモリコントローラ106は、第1のパリティデータ部分401-1、...、40(M-1)-1、40M-1を計算し得る。次いで、フラッシュメモリコントローラ106は、第2のパリティデータ部分401-2、...、40(M-1)-2、40M-2を計算し得る。次いで、フラッシュメモリコントローラ106は、第2のパリティデータ部分と第1のパリティデータ部分との間でXOR演算を実行することによって、各セットの一時パリティデータ部分(例えば、411-1、412-1...、41(M-1)-1、41M-1)を計算し得る。例えば、フラッシュメモリコントローラ106は、411-1=401-1×401-2、412-1=402-1×402-2、...、41(M-1)-1=40(M-1)-1×40(M-1)-2、41M-1=40M-1×40M-2と決定し得る。一時パリティデータ部分411-1、412-1...、41(M-1)-1、41M-1は、第2の一時記憶ユニット内に記憶され得る。次いで、フラッシュメモリコントローラ106は、第3のパリティデータ部分401-3、402-3...、40(M-1)-3、40M-3と、ストライプの各セットに対応する新しい一時パリティデータ部分とを計算し得る。例えば、フラッシュメモリコントローラ106は、411-2=411-1×401-3、412-2=412-1×402-3、...、41(M-1)-2=41(M-1)-1×40(M-1)-3、41M-2=41M-1×40M-3と決定し得る。フラッシュメモリコントローラ106は、第2の一時記憶ユニット内の一時パリティデータ部分を、それぞれの新しい一時パリティデータ部分に置き換え得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、各セットの最後のストライプまで上記の動作を繰り返し得る。図4Cに示すように、フラッシュメモリコントローラ106は、411-(J-1)=411-(J-2)×401-J、412-(J-1)=412-(J-1)×402-J、...、41(M-1)-(J-1)=41(M-1)-(J-2)×40(M-1)-J、41M-(J-1)=41M-(J-2)×40M-Jと決定し得る。次いで、M個の一時パリティデータ部分が取得され、計算および/または参照のために第2の一時記憶ユニット内に記憶され得る。
【0075】
いくつかの実装形態において、n=2、nが正の整数を表す場合、フラッシュメモリコントローラ106は、ストライプの各セットにおいて、第(n-1)の一時パリティデータ部分を生成するために、第nのパリティデータ部分と第(n-1)のパリティデータ部分との間でXOR演算を実行し得る。次いで、フラッシュメモリコントローラ106は、第(n-1)の一時パリティデータ部分を第2の一時記憶ユニットに記憶し得る。n>2、nが正の整数を表す場合、フラッシュメモリコントローラ106は、ストライプの各セットにおいて、第(n-1)の一時パリティデータ部分を生成するために、第nのパリティデータ部分のうちのパリティデータ部分と第(n-2)の一時パリティデータ部分との間でXOR演算を実行し得る。フラッシュメモリコントローラ106は、第(n-1)の一時パリティデータ部分を第2の一時記憶ユニットに記憶し、記憶された第(n-2)の一時パリティデータ部分を第(n-1)の一時パリティデータ部分に置き換え得る。nがLに等しい場合、フラッシュメモリコントローラ106は、各々がそれぞれのプレーン(またはストライプのセット)に対応するM個の一時パリティデータ部分を生成し得る。M個の一時パリティデータ部分は、411-(J-1)、412-(J-1)、...、41(M-1)-(J-1)、41M-(J-1)であり得、図5Dに示すように、第2の一時記憶ユニット420内に記憶され得る。フラッシュメモリコントローラ106は、M個のプレーンおよびN個のダイにおけるJ×N×M個のデータに対応するパリティデータセットを生成するために、M個の一時パリティデータ部分411-(J-1)、412-(J-1)、...、41(M-1)-(J-1)、41M-(J-1)の間でXOR演算を実行し得る。次いで、フラッシュメモリコントローラ106は、NANDメモリ400のメモリセル内の永久記憶ユニット内にパリティデータセットを記憶し得る。
【0076】
再び図6Cを参照すると、方法640は、動作650に進み、ここで、例えば、SSGリーク障害および/またはマルチプレーン障害による任意のプログラミング障害が検出されている。プログラミング障害が検出された場合、方法640は、動作652に進み、ここで、プログラミング障害が発生した侵害されたデータ部分内に記憶されたメモリデータは、それぞれのパリティデータ部分を使用して回復される。侵害されたデータ部分の回復後、方法640は、動作654に進み、ここで、パリティデータ部分のM個のセットからパリティデータセットが生成される。プログラミング障害が検出されない場合、方法640は、動作654に進む。
【0077】
フラッシュメモリコントローラ106は、例えば、SSGリーク障害および/またはマルチプレーン障害による任意のプログラミング障害が発生したかどうかを判断し得る。先に説明したように、SSGリーク障害は、異なるレベルの同じ位置におけるメモリセル内のメモリデータを侵害させる場合があり、マルチプレーン障害は、異なるプレーンの同じ位置におけるメモリセル内のメモリデータを侵害させる場合がある。しかしながら、図4A図4Cに示すストライピング構成は、もしあれば、ストライピング内の単一のデータ部分のみがSSGリーク障害および/またはマルチプレーン障害によって侵害される可能性があることを保証することができる。いくつかの実装形態において、フラッシュメモリコントローラ106は、それぞれのストライプ内のデータ部分において任意のプログラミング障害が発生したかどうかを判断するために、各ストライプのパリティデータ部分を使用し得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、侵害されたデータ部分を検出および識別するために、それぞれのストライプのデータ部分とそれぞれのストライプのパリティデータ部分との間でXOR演算を実行し得る。(もしあれば)各ストライプ内の侵害されたデータ部分の位置は、決定され得る。
【0078】
侵害されたデータ部分がストライプ内で検出された場合、フラッシュメモリコントローラ106は、代替データ部分を生成するために、ストライプ内のデータ部分の残り(例えば、侵害されていないデータ部分)と、ストライプのパリティデータ部分とに基づいて、代替データ部分を生成し得る。いくつかの実装形態において、代替データ部分の生成は、ストライプ内のデータ部分の残りと、ストライプのパリティデータ部分との間でXOR演算を実行することを含む。フラッシュメモリコントローラ106は、侵害されたデータ部分内のメモリデータが保持され得るように、侵害されたデータ部分を代替データ部分で回復し得る。いくつかの実装形態において、フラッシュメモリコントローラ106は、例えば、侵害されたデータ部分を識別および位置特定するため、ならびに/または代替データ部分を生成するために、計算が必要な場合、一時記憶ユニット410からのパリティデータ部分にアクセスし得る。
【0079】
M個のプレーンおよびN個のダイにおけるメモリブロックB1内のJ個の層のパリティ/冗長データ、例えばJ×N×M個のデータ部分を表すパリティデータセット412が、M個の一時パリティデータ部分から生成され得る。いくつかの実装形態において、パリティデータセット412は、M個の一時パリティデータ部分の間でXOR演算を実行することによって取得される。パリティデータセット412は、NANDメモリ400内の永久記憶ユニット(例えば、複数のメモリセル)内に記憶され得る。フラッシュメモリコントローラ106は、第2の一時記憶ユニットにアクセスし、この動作を実行し得る。
【0080】
いくつかの実装形態において、フラッシュメモリコントローラ106は、M個のプレーンおよびN個のダイにおけるメモリブロックB1内の残りの層に対して動作642~656を実行し続け得る。パリティデータ部分および一時パリティデータ部分は、それぞれ、計算および/または参照のために一時記憶ユニット410および第2の一時記憶ユニット内に記憶され得る。同じ動作は、M個のプレーンおよびN個のダイにおける他のメモリブロックに対しても実行され得る。
【0081】
再び図6Cを参照すると、方法640は、動作656に進み、ここで、パリティデータ部分のM個のセットは、一時記憶ユニットから削除され、M個の一時パリティデータ部分は、第2の一時記憶ユニットから削除される。
【0082】
いくつかの実装形態において、侵害されたデータ部分の回復およびパリティデータセットの生成後、フラッシュメモリコントローラ106は、J×M×N個のパリティデータ部分とM個の一時パリティ部分とを削除し得る。いくつかの実装形態において、プログラミング障害が検出されない場合、フラッシュメモリコントローラ106は、J×M×N個のパリティデータ部分とM個の一時パリティ部分とを削除し得る。それぞれのパリティデータ部分を使用して異なるプレーンおよび異なる層内の侵害されたデータ部分を回復することによって、M個のプレーンおよびN個のダイにおけるメモリブロックB1内のJ個の層内のプログラミング障害によって引き起こされた2つ以上の侵害されたデータ部分が回復され得る。1つのストライプがプレーンおよび層にわたるデータ部分を含むRAID方法と比較して、これらのプレーンおよび層内で回復/保護され得るデータ部分の数は、例えば、2つ以上に増加される。
【0083】
本開示の一態様は、メモリ装置を提供する。装置は、N個のダイ内に、メモリデータが記憶された複数のメモリセルを含む。N個のダイの各々は、M個のプレーンを含む。M個のプレーンの各々は、メモリブロックを含む、NおよびMは、各々正の整数である。装置は、複数のメモリセルに動作可能に結合されたコントローラも含む。コントローラは、M個のプレーンの各々およびN個のダイの各々におけるメモリブロック内のJ個の層を決定するように構成され、J個の層の各々は、一対の隣接するゲート導電層を含む。Jは、正の整数である。コントローラは、ストライプのM個のセットを決定するようにも構成される。ストライプのM個のセットの各々は、M個のプレーンのそれぞれ1つにおいて記憶された複数のデータ部分を含む。コントローラは、パリティデータ部分のM個のセットを決定するようにさらに構成される。パリティデータ部分のM個のセットの各々は、M個のストライプのそれぞれ1つに対応する。コントローラは、パリティデータ部分のM個のセットを記憶するように一時記憶ユニットを制御するようにさらに構成される。
【0084】
いくつかの実装形態において、コントローラは、M個のストライプを含むようにストライプのM個のセットを決定するように構成される。ストライプのM個のセットの各々は、M個のプレーンのそれぞれ1つにおいて記憶されたJ×N個のデータ部分を含む単一のストライプを含む。J×N個のデータ部分の各々は、J個の層のそれぞれの部分内に記憶される。コントローラは、M個のパリティデータ部分を含むようにパリティデータ部分のM個のセットを決定するようにも構成される。パリティデータ部分のM個のセットの各々は、それぞれのプレーンに対応する単一のパリティデータ部分を含む。
【0085】
いくつかの実装形態において、コントローラは、ストライプのM個のセットのうちの1つにおけるプログラミング障害を検出したことに応答して、プログラミング障害が発生したデータ部分およびそれぞれのストライプを位置特定し、それぞれのストライプのパリティデータ部分とそれぞれのストライプのデータ部分の残りとを使用してデータ部分のための代替データ部分を生成することによって、プログラミング障害を回復する。
【0086】
いくつかの実装形態において、コントローラは、代替データ部分を生成するために、データ部分の残りとそれぞれのストライプのパリティデータ部分との間でXOR演算を実行するように構成される。
【0087】
いくつかの実装形態において、コントローラは、M個のストライプを並行してプログラムするようにさらに構成される。プログラミング障害は、M個のプレーンの各々における同じ位置のデータ部分において発生するマルチプレーン障害を含む。
【0088】
いくつかの実装形態において、コントローラは、M個のストライプ内のJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、M個のパリティデータ部分の間でXOR演算を実行し、複数のメモリセル内の永久記憶ユニット内にパリティデータセットを記憶するようにさらに構成される。
【0089】
いくつかの実装形態において、コントローラは、それぞれのパリティデータ部分を生成するために、M個のストライプの各々のJ×N個のデータ部分の間でXOR演算を実行するようにさらに構成される。
【0090】
いくつかの実装形態において、コントローラは、J×M個のストライプを含むようにストライプのM個のセットを決定するように構成される。ストライプのM個のセットの各々は、J個のストライプを含む。いくつかの実装形態において、コントローラは、J×N個のデータ部分を含むようにJ個のストライプを決定するように構成される。J個のストライプの各々は、各々がそれぞれのプレーンのそれぞれの層内のそれぞれの部分において記憶されているN個のデータ部分を含む。いくつかの実装形態において、コントローラは、J×M個のパリティデータ部分を含むようにパリティデータ部分のM個のセットを決定するように構成される。パリティデータ部分のM個のセットの各々は、それぞれのプレーン内のJ個のストライプのうちのそれぞれ1つに各々が対応するJ個のパリティデータ部分を含む。
【0091】
いくつかの実装形態において、コントローラは、それぞれの単一のプレーンの単一の層内に記憶されたN個のデータ部分を決定するようにさらに構成される。
【0092】
いくつかの実装形態において、コントローラは、ストライプのM個のセットのうちの1つにおいてプログラミング障害を検出したことに応答して、プログラミング障害が発生したデータ部分およびそれぞれのストライプを位置特定し、それぞれのストライプのパリティデータ部分とそれぞれのストライプのデータ部分の残りとを使用してデータ部分のための代替データ部分を生成することによって、プログラミング障害を回復するようにさらに構成される。
【0093】
いくつかの実装形態において、コントローラは、代替データ部分を生成するために、データ部分の残りとそれぞれのストライプのパリティデータ部分との間でXOR演算を実行するように構成される。
【0094】
いくつかの実装形態において、コントローラは、M個のセットのストライプを並行してプログラムするようにさらに構成される。いくつかの実装形態において、プログラミング障害は、SSGリーク障害またはマルチプレーン障害のうちの少なくとも1つを含む。
【0095】
いくつかの実装形態において、コントローラは、J×M個のストライプの各々について、それぞれのパリティデータ部分を生成するために、N個のデータ部分の間でXOR演算を実行するようにさらに構成される。
【0096】
いくつかの実装形態において、コントローラは、M個のプレーンの各々について、n=2の場合、第(n-1)の一時パリティデータ部分を生成するために、第nのパリティデータ部分と第(n-1)のパリティデータ部分との間でXOR演算を実行するようにさらに構成される。いくつかの実装形態において、コントローラは、第(n-1)の一時パリティデータ部分を第2の一時記憶ユニットに記憶するようにも構成される。いくつかの実装形態において、コントローラは、n>2の場合、第(n-1)の一時パリティデータ部分を生成するために、第nのパリティデータ部分と第(n-2)の一時パリティデータ部分との間でXOR演算を実行するようにさらに構成される。いくつかの実装形態において、nは、正の整数である。
【0097】
いくつかの実装形態において、コントローラは、M個のプレーンの各々について、第(n-2)の一時パリティデータ部分を置き換えるように、第(n-1)の一時パリティデータ部分を第2の一時記憶ユニットに記憶するようにさらに構成される。
【0098】
いくつかの実装形態において、コントローラは、n=Lに応答して、M個のプレーンおよびN個のダイにおけるJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、M個のプレーンの各々に対応する第(n-1)の一時パリティデータ部分の間でXOR演算を実行するようにさらに構成される。いくつかの実装形態において、コントローラは、複数のメモリセル内の永久記憶ユニット内にパリティデータセットを記憶するようにも構成される。
【0099】
いくつかの実装形態において、コントローラは、それぞれのパリティデータ部分を生成するために、J×M個のストライプのうちの各々のN個のデータ部分の間でXOR演算を実行するようにさらに構成される。
【0100】
いくつかの実装形態において、コントローラは、ストライプのM個のセットにおいてプログラミング障害が検出されないこと、またはすべてのプログラミング障害が回復されたことのうちの少なくとも1つに応答して、一時記憶ユニットからパリティデータ部分のM個のセットを削除するようにさらに構成される。
【0101】
いくつかの実装形態において、一時記憶ユニットは、複数のメモリセルの外側にある。
【0102】
いくつかの実装形態において、Jは、8に等しい。
【0103】
いくつかの実装形態において、複数のメモリセルは、NANDメモリセルを含み、コントローラは、フラッシュコントローラを含む。
【0104】
いくつかの実装形態において、装置は、RAMをさらに含み、一時記憶ユニットは、RAM内に配置される。
【0105】
いくつかの実装形態において、Mは、4以上である。
【0106】
本開示の別の態様は、メモリ装置を提供する。装置は、N個のダイ内に、メモリデータが記憶された複数のメモリセルを含む。N個のダイの各々は、M個のプレーンを含む。M個のプレーンの各々は、メモリブロックを含む。NおよびMは、各々正の整数である。装置は、複数のメモリセルに動作可能に結合されたコントローラを含む。コントローラは、M個のプレーンの各々およびN個のダイの各々におけるメモリブロック内のJ個の層を決定するように構成される。J個の層の各々は、一対の隣接するゲート導電層を含む。Jは、少なくとも2の正の整数である。コントローラは、各々がM個のプレーン内の同じレベルのM個の層に対応し、M×N個のデータ部分を含むJ個のストライプを決定するようにも構成される。M×N個のデータ部分の各々は、それぞれのM個の層のそれぞれの部分内に記憶される。コントローラは、各々がそれぞれのストライプに対応するJ個のパリティデータ部分を決定するようにさらに構成される。コントローラは、J個のパリティデータ部分を記憶するように一時記憶ユニットを制御するようにさらに構成される。
【0107】
いくつかの実装形態において、コントローラは、M個のプレーン内の同じレベルの単一の層内に記憶されたM×N個のデータ部分を決定するように構成される。
【0108】
いくつかの実装形態において、コントローラは、J個のストライプのうちの1つにおいてプログラミング障害を検出したことに応答して、プログラミング障害が発生したデータ部分を位置特定し、それぞれのストライプのパリティデータ部分とそれぞれのストライプのデータ部分の残りとを使用してデータ部分のための代替データ部分を生成することによって、プログラミング障害を回復するようにさらに構成される。
【0109】
いくつかの実装形態において、コントローラは、代替データ部分を生成するために、データ部分の残りとそれぞれのストライプのパリティデータ部分との間でXOR演算を実行するように構成される。
【0110】
いくつかの実装形態において、プログラミング障害は、SSGリーク障害を含む。
【0111】
いくつかの実装形態において、コントローラは、それぞれのパリティデータ部分を生成するために、J個のストライプの各々のM×N個のデータ部分の間でXOR演算を実行するようにさらに構成される。
【0112】
いくつかの実装形態において、コントローラは、M個のストライプ内のJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、J個のパリティデータデータ部分の間でXORを実行し、複数のメモリセル内の永久記憶ユニット内にパリティデータセットを記憶するようにさらに構成される。
【0113】
いくつかの実装形態において、一時記憶ユニットは、複数のメモリセルの外側にある。
【0114】
いくつかの実装形態において、コントローラは、J個のストライプにおいてプログラミング障害が検出されないこと、またはすべてのプログラミング障害が回復されたことのうちの少なくとも1つに応答して、一時記憶ユニットからJ個のパリティデータ部分を削除するようにさらに構成される。
【0115】
いくつかの実装形態において、Jは、8に等しい。
【0116】
いくつかの実装形態において、複数のメモリセルは、NANDメモリセルを含み、コントローラは、フラッシュコントローラを含む。
【0117】
いくつかの実装形態において、装置は、RAMをさらに含み、一時記憶ユニットは、RAM内に配置される。
【0118】
いくつかの実装形態において、Mは、4以上である。
【0119】
本開示の別の態様は、RAIDストライピングを使用してメモリ装置を動作させるための方法を提供する。装置は、N個のダイ内に、メモリデータが記憶された複数のメモリセルを含む。N個のダイの各々は、M個のプレーンを含む。M個のプレーンの各々は、メモリブロックを含む。NおよびMは、各々正の整数である。方法は、M個のプレーンの各々およびN個のダイの各々におけるメモリブロック内のJ個の層を決定するステップを含む。J個の層の各々は、一対の隣接するゲート導電層を含む。Jは、正の整数である。方法は、ストライプのM個のセットを決定するステップも含み、ストライプのM個のセットの各々は、M個のプレーンの各々1つにおいて記憶された複数のデータ部分を含む。方法は、パリティデータ部分のM個のセットを決定するステップも含む。パリティデータ部分のM個のセットの各々は、M個のストライプのそれぞれ1つに対応する。方法は、パリティデータ部分のM個のセットを記憶するように一時記憶ユニットを制御するステップをさらに含む。
【0120】
いくつかの実装形態において、ストライプのM個のセットは、M個のストライプを含む。ストライプのM個のセットの各々は、M個のプレーンのそれぞれ1つにおいて記憶されたJ×N個のデータ部分を含む単一のストライプを含む。J×N個のデータ部分の各々は、J個の層のそれぞれの部分内に記憶される。パリティデータ部分のM個のセットは、M個のパリティデータ部分を含む。パリティデータ部分のM個のセットの各々は、それぞれのプレーンに対応する単一のパリティデータ部分を含む。
【0121】
いくつかの実装形態において、方法は、ストライプのM個のセットのうちの1つにおいてプログラミング障害を検出したことに応答して、プログラミング障害が発生したデータ部分およびそれぞれのストライプを位置特定し、それぞれのストライプのパリティデータ部分とそれぞれのストライプのデータ部分の残りとを使用してデータ部分のための代替データ部分を生成することによって、プログラミング障害を回復するステップをさらに含む。
【0122】
いくつかの実装形態において、代替データ部分を生成するステップは、データ部分の残りとそれぞれのストライプのパリティデータ部分との間でXOR演算を実行するステップを含む。
【0123】
いくつかの実装形態において、方法は、M個のストライプを並行してプログラミングするステップをさらに含む。プログラミング障害は、M個のプレーンの各々における同じ位置のデータ部分において発生するマルチプレーン障害を含む。
【0124】
いくつかの実装形態において、方法は、M個のストライプ内のJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、M個のパリティデータ部分の間でXOR演算を実行するステップと、複数のメモリセル内の永久記憶ユニット内にパリティデータセットを記憶するステップとをさらに含む。
【0125】
いくつかの実装形態において、方法は、それぞれのパリティデータ部分を生成するために、M個のストライプの各々のJ×N個のデータ部分の間でXOR演算を実行するステップをさらに含む。
【0126】
いくつかの実装形態において、ストライプのM個のセットは、J×M個のストライプを含む。ストライプのM個のセットの各々は、J個のストライプを含む。いくつかの実装形態において、J個のストライプは、J×N個のデータ部分を含む。J個のストライプの各々は、各々がそれぞれのプレーンのそれぞれの層内のそれぞれの部分内に記憶されたN個のデータ部分を含む。いくつかの実装形態において、パリティデータ部分のM個のセットは、J×M個のパリティデータ部分を含む。パリティデータ部分のM個のセットの各々は、各々がそれぞれのストライプ内のJ個のストライプのうちのそれぞれ1つに対応するJ個のパリティデータ部分を含む。
【0127】
いくつかの実装形態において、N個のデータ部分は、それぞれの単一のプレーンの単一の層内に記憶される。
【0128】
いくつかの実装形態において、方法は、ストライプのM個のセットのうちの1つにおいてプログラミング障害を検出したことに応答して、プログラミング障害が発生したデータ部分およびそれぞれのストライプを位置特定し、それぞれのストライプのパリティデータ部分とそれぞれのストライプのデータ部分の残りとを使用してデータ部分のための代替データ部分を生成することによって、プログラミング障害を回復するステップをさらに含む。
【0129】
いくつかの実装形態において、代替データ部分を生成するステップは、データ部分の残りとそれぞれのストライプのパリティデータ部分との間でXOR演算を実行するステップを含む。
【0130】
いくつかの実装形態において、方法は、M個のセットのストライプを並行してプログラミングするステップをさらに含む。プログラミング障害は、SSGリーク障害またはマルチプレーン障害のうちの少なくとも1つを含む。
【0131】
いくつかの実装形態において、方法は、J×M個のストライプの各々について、それぞれのパリティデータ部分を生成するために、N個のデータ部分の間でXOR演算を実行するステップをさらに含む。
【0132】
いくつかの実装形態において、方法は、M個のプレーンの各々について、n=2の場合、第(n-1)の一時パリティデータ部分を生成するために、第nのパリティデータ部分と第(n-1)のパリティデータ部分との間でXOR演算を実行するステップと、第(n-1)の一時パリティデータを第2の一時記憶ユニットに記憶するステップとをさらに含む。方法は、n>2の場合、第(n-1)の一時パリティデータ部分を生成するために、第nのパリティデータ部分と第(n-2)のパリティデータ部分との間でXOR演算を実行するステップも含む。いくつかの実装形態において、nは、正の整数である。
【0133】
いくつかの実装形態において、方法は、M個のプレーンの各々について、第(n-2)の一時パリティデータ部分を置き換えるために、第(n-1)の一時パリティデータ部分を第2の一時記憶ユニットに記憶するステップをさらに含む。
【0134】
いくつかの実装形態において、方法は、n=Lに応答して、M個のプレーンおよびN個のダイにおけるJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、M個のプレーンの各々に対応する第(n-1)の一時パリティデータ部分の間でXOR演算を実行するステップと、複数のメモリセル内の永久記憶ユニット内にパリティデータセットを記憶するステップとをさらに含む。
【0135】
いくつかの実装形態において、方法は、それぞれのパリティデータ部分を生成するために、J×M個のストライプのうちの各々のN個のデータ部分の間でXOR演算を実行するステップをさらに含む。
【0136】
いくつかの実装形態において、方法は、ストライプのM個のセットにおいてプログラミング障害が検出されないこと、またはすべてのプログラミング障害が回復されたことのうちの少なくとも1つに応答して、一時記憶ユニットからパリティデータ部分のM個のセットを削除するステップをさらに含む。
【0137】
本開示の別の態様は、RAIDストライピングを使用してメモリ装置を動作させるための方法をさらに提供する。装置は、N個のダイ内に、メモリデータが記憶された複数のメモリセルを含む。N個のダイの各々は、M個のプレーンを含む。M個のプレーンの各々は、メモリブロックを含む。NおよびMは、各々正の整数である。方法は、M個のプレーンの各々およびN個のダイの各々におけるメモリブロック内のJ個の層を決定するステップを含む。J個の層の各々は、一対の隣接するゲート導電層を含む。Jは、少なくとも2の正の整数である。方法は、各々がM個のプレーン内の同じレベルのM個の層に対応し、M×N個のデータ部分を含むJ個のストライプを決定するステップも含む。M×N個のデータ部分の各々は、それぞれのM個の層のそれぞれの部分内に記憶される。方法は、各々がそれぞれのストライプに対応するJ個のパリティデータ部分を決定するステップをさらに含む。方法は、J個のパリティデータ部分を記憶するように一時記憶ユニットを制御するステップをさらに含む。
【0138】
いくつかの実装形態において、M×N個のデータ部分は、M個のプレーン内の同じレベルの単一の層内に記憶される。
【0139】
いくつかの実装形態において、方法は、J個のストライプのうちの1つにおいてプログラミング障害を検出したことに応答して、プログラミング障害が発生したデータ部分を位置特定し、それぞれのストライプのパリティデータ部分とそれぞれのストライプのデータ部分の残りとを使用してデータ部分のための代替データ部分を生成することによって、プログラミング障害を回復するステップをさらに含む。
【0140】
いくつかの実装形態において、代替データ部分を生成するステップは、データ部分の残りとそれぞれのストライプのパリティデータ部分との間でXOR演算を実行するステップを含む。
【0141】
いくつかの実装形態において、プログラミング障害は、SSGリーク障害を含む。
【0142】
いくつかの実装形態において、方法は、それぞれのパリティデータ部分を生成するために、J個のストライプの各々のM×N個のデータ部分の間でXOR演算を実行するステップをさらに含む。
【0143】
いくつかの実装形態において、方法は、M個のストライプ内のJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、J個のパリティデータ部分の間でXORを実行するステップと、複数のメモリセル内の永久記憶ユニット内にパリティデータセットを記憶するステップとをさらに含む。
【0144】
いくつかの実装形態において、一時記憶ユニットは、複数のメモリセルの外側にある。
【0145】
いくつかの実装形態において、方法は、J個のストライプにおいてプログラミング障害が検出されないこと、またはすべてのプログラミング障害が回復されたことのうちの少なくとも1つに応答して、一時記憶ユニットからJ個のパリティデータ部分を削除するステップをさらに含む。
【0146】
特定の実装形態の前述の説明は、様々な用途に対して容易に修正および/または適合され得る。したがって、そのような適合および修正は、本明細書において提示される教示および指導に基づいて、開示された実装形態の等価物の意味および範囲内にあることが意図される。本開示の広さおよび範囲は、上記で説明した例示的な実装形態のいずれによっても限定されるべきではなく、以下の特許請求の範囲およびその均等物に従ってのみ定義されるべきである。
【符号の説明】
【0147】
100 装置
102 プリント回路基板(PCB)、PCB
104 ホストプロセッサ
105 プロセッサ
106 フラッシュメモリコントローラ
107 ストレージ
108 NANDメモリ
109 メモリ
110 ランダムアクセスメモリ(RAM)、RAM
200 NANDメモリ
201-1~201-M ストライプ
202-1~202-M プレーンパリティデータ、プレーンパリティデータ部分
204-1~204-M プレーンパリティデータ部分
210 一時記憶ユニット
212 パリティデータセット
300 NANDメモリ
301-1~301-J ストライプ
302-1~302-K 層パリティデータ部分
310 一時記憶ユニット
312 パリティデータセット
400 NANDメモリ
401~40M セット
401-1~40M-J パリティデータ部分
410 一時記憶ユニット
411-1~41M-(J-1) 一時パリティデータ部分
412 パリティデータセット
420 第2の一時記憶ユニット
図1A
図1B
図2
図3A
図3B
図4A
図4B
図4C
図5A
図5B
図5C
図5D
図6A
図6B
図6C
図7
【手続補正書】
【提出日】2022-12-21
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
N個のダイ内の、メモリデータが記憶された複数のメモリセルであって、前記N個のダイの各々が、M個のプレーンを備え、前記M個のプレーンの各々が、メモリブロックを備え、NおよびMが、各々正の整数である、複数のメモリセルと、
前記複数のメモリセルに動作可能に結合されたコントローラであって、前記コントローラが、
前記M個のプレーンの各々および前記N個のダイの各々における前記メモリブロック内のJ個の層を決定する動作であって、前記J個の層の各々が、一対の隣接するゲート導電層を備え、Jが、正の整数である、動作と、
ストライプのM個のセットを決定する動作であって、前記ストライプのM個のセットの各々が、前記M個のプレーンのそれぞれ1つにおいて記憶された複数のデータ部分を備える、動作と、
パリティデータ部分のM個のセットを決定する動作であって、前記パリティデータ部分のM個のセットの各々が、前記M個のストライプのそれぞれ1つに対応する、動作と、
前記パリティデータ部分のM個のセットを記憶するように一時記憶ユニットを制御する動作と
を行うように構成された、コントローラと
を備えるメモリ装置。
【請求項2】
前記コントローラが、
M個のストライプを備えるように前記ストライプのM個のセットを決定する動作であって、前記ストライプのM個のセットの各々が、前記M個のプレーンのそれぞれ1つにおいて記憶されたJ×N個のデータ部分を備える単一のストライプを備え、前記J×N個のデータ部分の各々が、前記J個の層のそれぞれの部分において記憶される、動作と、
M個のパリティデータ部分を備えるように前記パリティデータ部分のM個のセットを決定する動作であって、前記パリティデータ部分のM個のセットの各々が、それぞれのプレーンに対応する単一のパリティデータ部分を備える、動作と
を行うように構成された、
請求項1に記載のメモリ装置。
【請求項3】
前記コントローラが、
前記ストライプのM個のセットうちの1つにおけるプログラミング障害を検出したことに応答して、前記プログラミング障害を、
前記プログラミング障害が発生したデータ部分およびそれぞれのストライプを位置特定し、
前記それぞれのストライプの前記パリティデータ部分と前記それぞれのストライプの前記データ部分の残りとを使用して、前記データ部分のための代替データ部分を生成する
ことによって回復するようにさらに構成された、
請求項1に記載のメモリ装置。
【請求項4】
前記コントローラが、前記代替データ部分を生成するために、前記データ部分の前記残りと前記それぞれのストライプの前記パリティデータ部分との間で排他的論理和(XOR)演算を実行するように構成された、請求項3に記載のメモリ装置。
【請求項5】
前記コントローラが、前記M個のストライプを並行してプログラムするようにさらに構成され、前記プログラミング障害が、前記M個のプレーンの各々における同じ位置のデータ部分において発生するマルチプレーン障害を含む、請求項3に記載のメモリ装置。
【請求項6】
前記コントローラが、
前記M個のストライプ内のJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、前記M個のパリティデータ部分の間で排他的論理和(XOR)を実行し、
前記複数のメモリセル内の永久記憶ユニット内に前記パリティデータセットを記憶する
ようにさらに構成された、
請求項2に記載のメモリ装置。
【請求項7】
前記コントローラが、それぞれの前記パリティデータ部分を生成するために、前記M個のストライプの各々の前記J×N個のデータ部分の間で排他的論理和(XOR)演算を実行するようにさらに構成された、請求項2に記載のメモリ装置。
【請求項8】
前記コントローラが、
J×M個のストライプを備えるように前記ストライプのM個のセットを決定する動作であって、前記ストライプのM個のセットの各々が、J個のストライプを備える、動作と、
J×N個のデータ部分を備えるように前記J個のストライプを決定する動作であって、前記J個のストライプの各々が、それぞれの前記プレーンのそれぞれの層内のそれぞれの部分において各々が記憶されたN個のデータ部分を備える、動作と、
J×M個のパリティデータ部分を備えるように前記パリティデータ部分のM個のセットを決定する動作であって、前記パリティデータ部分のM個のセットの各々が、それぞれのプレーン内の前記J個のストライプのうちのそれぞれ1つに各々が対応するJ個のパリティデータ部分を備える、動作と
を行うように構成された、
請求項1に記載のメモリ装置。
【請求項9】
前記コントローラが、それぞれの単一の前記プレーンの単一の層内に記憶された前記N個のデータ部分を決定するようにさらに構成された、請求項8に記載のメモリ装置。
【請求項10】
前記コントローラが、
前記ストライプのM個のセットのうちの1つにおいてプログラミング障害を検出したことに応答して、前記プログラミング障害を、
前記プログラミング障害が発生したデータ部分およびそれぞれのストライプを位置特定し、
前記それぞれのストライプの前記パリティデータ部分と前記それぞれのストライプの前記データ部分の残りとを使用して、前記データ部分のための代替データ部分を生成する
ことによって回復するようにさらに構成された、
請求項8に記載のメモリ装置。
【請求項11】
前記コントローラが、前記代替データ部分を生成するために、前記データ部分の前記残りと前記それぞれのストライプの前記パリティデータ部分との間で排他的論理和(XOR)演算を実行するように構成された、請求項10に記載のメモリ装置。
【請求項12】
前記コントローラが、前記M個のセットのストライプを並行してプログラムするようにさらに構成され、
前記プログラミング障害が、ソース選択ゲート(SSG)リーク障害またはマルチプレーン障害のうちの少なくとも1つを含む、
請求項10に記載のメモリ装置。
【請求項13】
前記コントローラが、前記J×M個のストライプの各々について、それぞれの前記パリティデータ部分を生成するために、前記N個のデータ部分の間で排他的論理和(XOR)演算を実行するようにさらに構成された、請求項8に記載のメモリ装置。
【請求項14】
前記コントローラが、前記M個のプレーンの各々について、nが正の整数であり、
n=2の場合、第(n-1)の一時パリティデータ部分を生成するために、第nのパリティデータ部分と第(n-1)のパリティデータ部分との間で排他的論理和(XOR)演算を実行し、
前記第(n-1)の一時パリティデータ部分を第2の一時記憶ユニットに記憶し、
n>2の場合、第(n-1)の一時パリティデータ部分を生成するために、第nのパリティデータ部分と第(n-2)の一時パリティデータ部分との間でXOR演算を実行する
ようにさらに構成された、
請求項8に記載のメモリ装置。
【請求項15】
前記コントローラが、
前記M個のプレーンの各々について、前記第(n-2)の一時パリティデータ部分を置き換えるために、前記第(n-1)の一時パリティデータ部分を前記第2の一時記憶ユニットに記憶し、
n=Lに応答して、前記M個のプレーンおよびN個のダイにおけるJ×N×M個のデータ部分に対応するパリティデータセットを生成するために、前記M個のプレーンの各々に対応する第(n-1)の一時パリティデータ部分の間でXOR演算を実行し、
前記複数のメモリセル内の永久記憶ユニット内に前記一時パリティデータセットを記憶する
ようにさらに構成された、
請求項14に記載のメモリ装置。
【請求項16】
N個のダイ内の、メモリデータが記憶された複数のメモリセルであって、前記N個のダイの各々が、M個のプレーンを備え、前記M個のプレーンの各々が、メモリブロックを備え、NおよびMが、各々正の整数である、複数のメモリセルと、
前記複数のメモリセルに動作可能に結合されたコントローラであって、前記コントローラが、
前記M個のプレーンの各々および前記N個のダイの各々における前記メモリブロック内のJ個の層を決定する動作であって、前記J個の層の各々が、一対の隣接するゲート導電層を備え、Jが、少なくとも2の正の整数である、動作と、
各々が前記M個のプレーン内の同じレベルのM個の層に対応し、M×N個のデータ部分を備えるJ個のストライプを決定する動作であって、前記M×N個のデータ部分の各々が、それぞれの前記M個の層のそれぞれの部分内に記憶される、動作と、
各々がそれぞれのストライプに対応するJ個のパリティデータ部分を決定する動作と、
前記J個のパリティデータ部分を記憶するように一時記憶ユニットを制御する動作と
を行うように構成された、コントローラと
を備えるメモリ装置。
【請求項17】
前記コントローラが、前記M個のプレーン内の同じレベルの単一の層内に記憶された前記M×N個のデータ部分を決定するように構成された、請求項16に記載のメモリ装置。
【請求項18】
前記コントローラが、
前記J個のストライプのうちの1つにおけるプログラミング障害を検出したことに応答して、前記プログラミング障害を、
前記プログラミング障害が発生したデータ部分を位置特定し、
前記それぞれのストライプの前記パリティデータ部分と前記それぞれのストライプの前記データ部分の残りとを使用して、前記データ部分のための代替データ部分を生成する
ことによって回復するようにさらに構成され、
前記プログラミング障害が、ソース選択ゲート(SSG)リーク障害を含む、
請求項16に記載のメモリ装置。
【請求項19】
前記コントローラが、前記代替データ部分を生成するために、前記それぞれのストライプの前記パリティデータ部分と前記データ部分の残りの間で排他的論理和(XOR)演算を実行するように構成された、請求項18に記載のメモリ装置。
【請求項20】
独立ディスクの冗長アレイ(RAID)ストライピングを使用してメモリ装置を動作させるための方法であって、前記メモリ装置が、N個のダイ内の、メモリデータが記憶された複数のメモリセルを備え、前記N個のダイの各々が、M個のプレーンを備え、前記M個のプレーンの各々が、メモリブロックを備え、NおよびMが、各々正の整数であり、前記方法が、
前記M個のプレーンの各々および前記N個のダイの各々における前記メモリブロック内のJ個の層を決定するステップであって、前記J個の層の各々が、一対の隣接するゲート導電層を備え、Jが、正の整数である、ステップと、
ストライプのM個のセットを決定するステップであって、前記ストライプのM個のセットの各々が、前記M個のプレーンのそれぞれ1つにおいて記憶された複数のデータ部分を備える、ステップと、
パリティデータ部分のM個のセットを決定するステップであって、前記パリティデータ部分のM個のセットの各々が、前記M個のストライプのそれぞれ1つに対応する、ステップと、
前記パリティデータ部分のM個のセットを記憶するように一時記憶ユニットを制御するステップと
を含む、
方法。
【国際調査報告】