(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-16
(45)【発行日】2024-02-27
(54)【発明の名称】メモリシステムおよび方法
(51)【国際特許分類】
G06F 11/10 20060101AFI20240219BHJP
【FI】
G06F11/10 648
G06F11/10 668
(21)【出願番号】P 2020104680
(22)【出願日】2020-06-17
【審査請求日】2023-03-13
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】熊谷 幸恵
(72)【発明者】
【氏名】山崎 創
(72)【発明者】
【氏名】長谷 晃裕
(72)【発明者】
【氏名】森 悠
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2009-80651(JP,A)
【文献】特開2019-53415(JP,A)
【文献】特開2012-203925(JP,A)
【文献】国際公開第2016/203631(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
G11B 20/18
(57)【特許請求の範囲】
【請求項1】
複数の第1データ単位を記憶する不揮発性メモリと、前記複数の第1データ単位は、第1処理が実行された複数の第2データ単位であり、前記第1処理は、前記複数の第2データ単位に基づいて第1パリティデータを生成する第1符号化と、前記第1符号化の後の第1変換と、を含み、前記複数の第2データ単位の各々は第1情報を含み、
第1動作を実行し、前記第1動作は、前記複数の第1データ単位を前記不揮発性メモリから読み出して、前記読み出された複数の第1データ単位である複数の第3データ単位に対し第2処理を実行する動作であり、前記第2処理は、前記第1変換の逆変換である第2変換と、前記第1パリティデータおよび前記第2変換の後の前記複数の第3データ単位を用いた第1復号と、を含み、前記第1動作の後の前記複数の第3データ単位である複数の第4データ単位のうちの1つである第5データ単位から前記第5データ単位の第1情報である第2情報を取得し、前記第2情報の期待値である第3情報と前記第5データ単位から取得された前記第2情報とを比較し、前記第3情報と前記第2情報とが等価でない場合、前記第1動作を再び実行する、コントローラと、
を備えるメモリシステム。
【請求項2】
前記第1処理は、前記複数の第2データ単位の各々について第2パリティデータを生成する第2符号化を前記第1変換の後にさらに含み、
前記第2処理は、前記第2パリティデータを用いた第2復号を前記第2変換の前にさらに含む、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、前記複数の第1データ単位のうちの前記第5データ単位に対応する第6データ単位を前記不揮発性メモリから読み出して、前記読み出された第6データ単位に対して前記第2復号を実行し、前記第2復号に失敗した場合、前記第1動作を実行する、
請求項2に記載のメモリシステム。
【請求項4】
前記第1変換は、前記第2データ単位毎に疑似乱数列を生成し、前記第1符号化の後の前記複数の第2データ単位の各々を対応する疑似乱数列を用いてスクランブルする処理であり、
前記第2変換は、前記第3データ単位毎に疑似乱数列を生成し、前記第2変換の後の前記複数の第3データ単位の各々のスクランブルを対応する疑似乱数列を用いて解除する処理である、
請求項1から3の何れか一項に記載のメモリシステム。
【請求項5】
前記メモリシステムはホストに接続され、
前記第1情報は、前記ホストから指定される位置情報である、
請求項1から4の何れか一項に記載のメモリシステム。
【請求項6】
複数の第1データ単位を記憶する不揮発性メモリと、前記複数の第1データ単位は、第1符号化が実行された複数の第2データ単位であり、前記第1符号化は、前記複数の第2データ単位に基づいて第1パリティデータを生成する処理であり、前記複数の第2データ単位の各々は第1情報を含み、
第1動作を実行し、前記第1動作は、前記複数の第1データ単位を前記不揮発性メモリから読み出して、前記読み出された複数の第1データ単位である複数の第3データ単位に対し第1復号を実行する動作であり、前記第1復号は、前記第1パリティデータおよび前記複数の第3データ単位を用いて誤り訂正を行う処理であり、前記第1動作の後の前記複数の第3データ単位である複数の第4データ単位のうちの1つである第5データ単位から前記第5データ単位の第1情報である第2情報を取得し、前記第2情報の期待値である第3情報と前記第5データ単位から取得された前記第2情報とを比較し、前記第3情報と前記第2情報とが等価でない場合、前記第1動作を再び実行する、コントローラと、
を備えるメモリシステム。
【請求項7】
不揮発性メモリから複数の第1データ単位を読み出すことと、前記複数の第1データ単位は、第1処理が実行された複数の第2データ単位であり、前記第1処理は、前記複数の第2データ単位に基づいて第1パリティデータを生成する第1符号化と、前記第1符号化の後の第1変換と、を含み、前記複数の第2データ単位の各々は第1情報を含み、
前記読み出された複数の第1データ単位である複数の第3データ単位に対し、前記第1変換の逆変換である第2変換を実行することと、
前記第1パリティデータおよび前記第2変換の後の前記複数の第3データ単位を用いた復号を実行することと、
前記復号の後の前記複数の第3データ単位である複数の第4データ単位のうちの1つである第5データ単位から前記第5データ単位の第1情報である第2情報を取得することと、
前記第2情報の期待値である第3情報と前記第5データ単位から取得された前記第2情報とを比較することと、
前記第3情報と前記第2情報とが等価でない場合、前記複数の第1データ単位を読み出すことと、前記第2変換を実行することと、前記復号を実行することと、を再び実行することと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステムおよび方法に関する。
【背景技術】
【0002】
従来、NAND型のフラッシュメモリなどの不揮発性メモリを搭載したメモリシステムが知られている。このようなメモリシステムでは、不揮発性メモリに書き込まれる際に、複数のデータ単位に跨った誤り訂正のための符号化が実行されることがある。当該符号化に対応した復号の際には、当該複数のデータ単位が不揮発性メモリから読み出されて使用される。しかしながら、このような符号化に対応した復号では、誤り訂正の対象のデータを元の状態に復元できない場合があった。
【先行技術文献】
【特許文献】
【0003】
【文献】特開昭63-298777号公報
【文献】特開平7-261943号公報
【文献】特開2013-214212号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
一つの実施形態は、データを復元する能力を向上させるメモリシステムおよび方法を提供することを目的とする。
【課題を解決するための手段】
【0005】
一つの実施形態によれば、不揮発性メモリと、コントローラとを備える。不揮発性メモリは、複数の第1データ単位を記憶する。複数の第1データ単位は、第1処理が実行された複数の第2データ単位である。第1処理は、複数の第2データ単位に基づいて第1パリティデータを生成する第1符号化と、第1符号化の後の第1変換と、を含む。複数の第2データ単位の各々は第1情報を含む。コントローラは、第1動作を実行する。第1動作は、複数の第1データ単位を不揮発性メモリから読み出して、読み出された複数の第1データ単位である複数の第3データ単位に対し第2処理を実行する動作である。第2処理は、第1変換の逆変換である第2変換と、第1パリティデータおよび第2変換の後の複数の第3データ単位を用いた第1復号と、を含む。コントローラは、第1動作の後の複数の第3データ単位である複数の第4データ単位のうちの1つである第5データ単位から第5データ単位の第1情報である第2情報を取得する。コントローラは、第2情報の期待値である第3情報と第5データ単位から取得された第2情報とを比較し、第3情報と第2情報とが等価でない場合、第1動作を再び実行する。
【図面の簡単な説明】
【0006】
【
図1】
図1は、実施形態にかかるメモリシステムの構成の一例を示す模式的な図である。
【
図2】
図2は、実施形態にかかるメモリチップの構成例を示す模式的な図である。
【
図3】
図3は、実施形態にかかるブロックの回路構成を示す模式的な図である。
【
図4】
図4は、実施形態にかかる積符号フレームの構成の一例を示す模式的な図である。
【
図5】
図5は、実施形態にかかるRS符号フレームの格納方法の一例を示す模式的な図である。
【
図6】
図6は、実施形態にかかる第1ECC回路による処理を示す図である。
【
図7】
図7は、実施形態にかかるR/D回路および第2ECC回路による処理を示す図である。
【
図8】
図8は、実施形態においてNANDメモリから読み出された後にユーザデータに対して実行される処理を説明するための模式的な図である。
【
図9】
図9は、実施形態にかかる第1ECC回路によって実行される処理を説明するための概念図である。
【
図10】
図10は、実施形態にかかるデータ単位の構成の一例を示す模式的な図である。
【
図11】
図11は、パリティデータを生成する処理に関する実施形態にかかるコントローラの動作の一例を示すフローチャートである。
【
図12】
図12は、NANDメモリにデータを書き込む処理に関する実施形態にかかるコントローラの動作の一例を示すフローチャートである。
【
図13】
図13は、実施形態にかかるデータの読み出し動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0008】
(実施形態)
図1は、実施形態にかかるメモリシステムの構成の一例を示す模式的な図である。メモリシステム1は、ホスト2と通信インタフェース3で接続される。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、サーバ、またはこれらに搭載されるプロセッサである。ホスト2は、メモリシステム1を外部の記憶装置として利用する。通信インタフェース3は、例えば、SATA、SAS、又はPCIe(登録商標)の規格に準拠する。
【0009】
メモリシステム1は、ホスト2からアクセスコマンド(例えば、ライトコマンドまたはリードコマンド)を受信する。メモリシステム1は、ライトコマンドに応じて、ライトが要求されたユーザデータを記憶する。メモリシステム1は、リードコマンドに応じて、リードが要求されたユーザデータをホストに送信する。
【0010】
なお、アクセスコマンドは、論理アドレスを含み得る。メモリシステム1は、ホスト2に論理的なアドレス空間を提供する。論理アドレスは、当該アドレス空間における位置を示す。ホスト2は、論理アドレスを用いることによって、ユーザデータをライトする位置またはユーザデータの読み出しを行う位置を指定する。つまり、論理アドレスは、ホスト2から指定される位置情報である。
【0011】
メモリシステム1は、コントローラ100とNANDメモリ200とを備える。コントローラ100はメモリバス300によってNANDメモリ200に接続されている。コントローラ100は、ホスト2とNANDメモリ200との間のデータ転送などを制御する。NANDメモリ200は、ユーザデータ等を不揮発に記憶できる。
【0012】
NANDメモリ200は、1以上のメモリチップ201によって構成される。ここでは一例として、NANDメモリ200は、4つのメモリチップ201-0,201-1,201-2,201-3によって構成されている。
【0013】
図2は、実施形態にかかるメモリチップ201の構成例を示す模式的な図である。メモリチップ201は、周辺回路210およびメモリセルアレイ211を備える。
【0014】
メモリセルアレイ211は、各々が複数の不揮発性メモリセルトランジスタの集合である複数のブロックBLK(BLK0、BLK1、BLK2、…)を備える。各ブロックBLKは、各々がワード線およびビット線に関連付けられたメモリセルトランジスタの集合である複数のストリングユニットSU(SU0、SU1、SU2、…)を備える。ストリングユニットSUの各々は、複数のメモリセルトランジスタが直列接続された複数のNANDストリング212を備える。なお、ストリングユニットSU内のNANDストリング212の数は任意である。
【0015】
周辺回路210は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。周辺回路210は、コントローラ100からの指示に応じて、メモリセルアレイ211に対し、当該指示に対応した動作を実行する。コントローラ100からの指示は、ライト、リード、およびイレースを含む。
【0016】
図3は、実施形態にかかるブロックBLKの回路構成を示す模式的な図である。なお、各ブロックBLKは、同一の構成を有している。ブロックBLKは、例えば4つのストリングユニットSU0~SU3を有する。各ストリングユニットSUは、複数のNANDストリング212を含む。
【0017】
NANDストリング212の各々は、例えば64個のメモリセルトランジスタMT(MT0~MT63)および選択トランジスタST1、ST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そして64個のメモリセルトランジスタMT(MT0~MT63)は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。なお、メモリセルトランジスタMTは、電荷蓄積層に絶縁膜を用いたMONOS型であってもよいし、電荷蓄積層に導電膜を用いたFG型であってもよい。さらに、NANDストリング212内のメモリセルトランジスタMTの個数は64個に限定されない。
【0018】
ストリングユニットSU0~SU3の各々における選択トランジスタST1のゲートは、各々の選択ゲート線SGD0~SGD3に接続される。これに対してストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、例えば選択ゲート線SGSに共通接続される。ストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、ストリングユニットSU毎に異なる選択ゲート線SGS0~SGS3(不図示)に接続されてもよい。同一のブロックBLK内にある各メモリセルトランジスタMT0~MT63の制御ゲートは、各々のワード線WL0~WL63に共通接続される。
【0019】
ストリングユニットSU内にある各NANDストリング212の選択トランジスタST1のドレインは、各々異なるビット線BL(BL0~BL(L-1)、但しLは2以上の自然数)に接続される。また、ビット線BLは、複数のブロックBLK間で各ストリングユニットSU内にある1つのNANDストリング212を共通に接続する。更に、各選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
【0020】
つまりストリングユニットSUは、各々が異なるビット線BLに接続され、且つ同一の選択ゲート線SGDに接続された複数のNANDストリング212の集合である。またブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合である。そしてメモリセルアレイ211は、少なくとも1のビット線BLを共通にする複数のブロックBLKの集合である。
【0021】
周辺回路210によるライトおよびリードは、1つのストリングユニットSUにおける1つのワード線WLに接続されたメモリセルトランジスタMTに対して、一括して実行され得る。ライトおよびリードの際に、一括して選択されるメモリセルトランジスタMTの群をメモリセルグループMCGと表記する。そして、1つのメモリセルグループMCGにライトされる、あるいはリードされる1ビットのデータの集まりの単位をページと表記する。
【0022】
周辺回路210によるイレースは、ブロックBLK単位で実行される。即ち、1つのブロックBLKに格納された全てのデータは、一括にイレースされる。
【0023】
なお、
図2および
図3に示された構成は一例である。メモリセルアレイ211の構成は、上述された構成に制限されない。例えば、メモリセルアレイ211は、NANDストリング212が2次元的に又は3次元的に配列された構成を有していてもよい。
【0024】
メモリセルアレイ211に対するライトにおいては、周辺回路210は、ライトするページを構成する各メモリセルトランジスタMTの電荷蓄積層に、データに対応した量の電荷を注入する。そして、メモリセルアレイ211からのリードにおいては、周辺回路210は、リードするページを構成する各メモリセルトランジスタMTから、電荷蓄積層に蓄積された電荷量に応じたデータを読み出す。
【0025】
しかしながら、電荷蓄積層の電荷量がライトの際に所望の量に達しなかったり、電荷蓄積層の電荷量がライトの後に意図せずに変動したりする場合がある。そのような場合には、メモリセルトランジスタMTから読み出されたデータには誤りが含まれる。
【0026】
メモリセルトランジスタMTから読み出されたデータに誤りが含まれていたとしても、当該誤りを訂正することができるように、コントローラ100は、NANDメモリ200に送られるデータを予め誤り訂正符号によって保護する。そして、コントローラ100は、NANDメモリ200から読み出されたデータに対し、誤り訂正符号による誤り訂正を行う。
【0027】
実施形態では、2つの誤り訂正符号を組み合わせた積符号が使用される。
図4は、実施形態にかかる積符号フレームの構成の一例を示す模式的な図である。
【0028】
ユーザデータは、符号化の単位のサイズで区切られた1以上のデータ単位DUとしてNANDメモリ200に格納される。そして、n個のデータ単位DUが積符号によって保護される。ただし、nは2以上の整数である。
【0029】
図4では、1つのデータ単位DUを構成するビットが配列される方向をX方向、X方向と直交しデータ単位DUが配列される方向をY方向、と各々表記する。1つのデータ単位DUを構成するビットが配列される方向、つまり
図4におけるX方向は、インライン方向とも称される。n個のデータ単位DUは、Y方向に配列されて描画されている。Y方向において上から(i+1)番目に描画されたデータ単位DUを、データ単位DUiと表記する。ただしiは0から(n-1)までの整数である。
【0030】
n個のデータ単位DU0~DB(n-1)に対し、まず、第1の誤り訂正符号による符号化が施される。n個のデータ単位DU0~DB(n-1)は、第1の誤り訂正符号によって、データ単位DUを横断する方向(つまりY方向)に符号化される。
【0031】
第1の誤り訂正符号は、ここでは一例として、リードソロモン(Reed-Solomon:RS)符号であることとする。なお、第1の誤り訂正符号は、RS符号に限定されない。第1の誤り訂正符号として、任意の組織符号が採用され得る。
【0032】
第1の誤り訂正符号による符号化によって、パリティデータRSPが生成される。パリティデータRSPは、一例として、各々のデータ単位DUと同じサイズを有する2個のパリティデータRSP0、RSP1を含んで構成される。
【0033】
以降、データ単位DU0~DB(n-1)の各々およびパリティデータRSP0、RSP1の各々を、RS符号フレームRSFとも表記する。
【0034】
第1の誤り訂正符号による符号化の後、各RS符号フレームRSFは、第2の誤り訂正符号によって個別に符号化される。つまり、各RS符号フレームRSFは、第2の誤り訂正符号によってインライン方向に符号化される。
【0035】
第2の誤り訂正符号は、ここでは一例として、BCH(Bose-Chaudhuri-Hocquenghem)符号とする。なお、第2の誤り訂正符号は、BCH符号に限定されない。第2の誤り訂正符号として、任意の組織符号が採用され得る。第2の誤り訂正符号は、複数の符号の組み合わせであってもよい。第2の誤り訂正符号としての複数の符号の組み合わせは、例えばCRC(Cyclic Redundancy Check)符号などの誤り検出符号を含んでいてもよい。
【0036】
第2の誤り訂正符号による符号化によってパリティデータIEPが生成される。パリティデータIEPは、生成の元となったRS符号フレームRSFにインライン方向に連接される。そして、各々はパリティデータIEPが連接された(n+2)個のRS符号フレームRSFによって、1つの積符号フレームPFが構成される。なお、連接されるは、追加される、または付加される、と換言することができる。
【0037】
1つの積符号フレームPFを構成する各RS符号フレームRSFは、NANDメモリ200の各々異なるページに格納される。
図5は、実施形態にかかるRS符号フレームRSFの格納方法の一例を示す模式的な図である。
【0038】
図5に示される例では、(n+2)個のページを含む群に4個の積符号フレームPF0~PF3が格納される。(n+2)個のページの各々には、各々異なる積符号フレームPFに属する4個のRS符号フレームRSFと、各々は当該4個のRS符号フレームRSFの何れかに対応する4個のパリティデータIEPとが、ともに格納される。なお、(n+2)個のページの各々は、0から(n+1)までのページ番号によって識別されることとし、ページ番号がjのページを、ページ#jと表記する。ただしjは0から(n+1)までの整数である。
【0039】
1つの積符号フレームPFを構成する(n+2)個のRS符号フレームRSFのうちのn個のデータ単位DUは、ページ#0からページ#(n-1)までのn個のページに分散して格納されている。そして、(n+2)個のRS符号フレームRSFのうち、パリティデータRSP0は、ページ#nに格納され、パリティデータRSP1は、ページ#(n+1)に格納されている。
【0040】
なお、RS符号フレームRSFの格納方法は
図5に示された例に限定されない。例えば、各ページに格納されるRS符号フレームRSFの数は4個に限定されない。
【0041】
また、1つの積符号フレームPFを構成する(n+2)個のRS符号フレームRSFの格納先の(n+2)個のページの選択方法は、特定の選択方法に限定されない。例えば、1つの積符号フレームPFを構成する(n+2)個のRS符号フレームRSFの格納先の(n+2)個のページは、1つのブロックBLKから選択されてもよいし、複数のブロックBLKから選択されてもよい。1つの積符号フレームPFを構成する(n+2)個のRS符号フレームRSFの格納先の(n+2)個のページは、各々異なるブロックBLKから選択されてもよい。1つの積符号フレームPFを構成する(n+2)個のRS符号フレームRSFの格納先の(n+2)個のページは、各々異なるメモリチップ201から選択されてもよい。
【0042】
NANDメモリ200に送られる各RS符号フレームRSFに対しては、誤りの発生率を低減するために、ランダマイズが実施される。ランダマイズによってブロックBLK内のデータの値が周期性を持たないようにされることで、メモリセルトランジスタMT間の干渉を低減し、これによって誤りの発生率が抑制される。ランダマイズの詳細については後述される。
【0043】
なお、NANDメモリ200は、不揮発性メモリに相当する。また、NANDメモリ200に格納された状態のデータ単位DUは、第1データ単位に相当する。つまり、NANDメモリ200は、複数の第1データ単位を記憶する。また、NANDメモリ200に送られる前のデータ単位DUは、第2データ単位に相当する。
【0044】
また、第1の誤り訂正符号(ここでは例えばRS符号)による符号化は、第1符号化に相当する。また、パリティデータRSPは、第1パリティデータに相当する。また、第2の誤り訂正符号(ここでは例えばBCH符号)による符号化は、第2符号化に相当する。また、パリティデータIEPは、第2パリティデータに相当する。また、ランダマイズは、第1変換に相当する。
【0045】
【0046】
コントローラ100は、プロセッサ101、ホストインタフェース(ホストI/F)102、RAM(Random Access Memory)103、バッファメモリ104、第1ECC(Error Check and Correction)回路105、ランダマイズアンドデランダマイズ(R/D)回路106、第2ECC回路107、メモリインタフェース(メモリI/F)108、および内部バス109を備える。プロセッサ101、ホストI/F102、RAM103、バッファメモリ104、第1ECC回路105、R/D回路106、第2ECC回路107、およびメモリI/F108は、内部バス109に電気的に接続されている。
【0047】
なお、コントローラ100は、SoC(System-On-a-Chip)として構成され得る。コントローラ100は、複数のチップによって構成されてもよい。また、RAM103またはバッファメモリ104は、コントローラ100の外部に配されていてもよい。
【0048】
ホストI/F102は、ホスト2から受信したアクセスコマンドおよびユーザデータなどを内部バス109に出力する。ユーザデータは、内部バス109を介してバッファメモリ104に送られる。
【0049】
また、ホストI/F102は、NANDメモリ200から読み出されたユーザデータおよびプロセッサ101からの応答などをホスト2へ送信する。
【0050】
バッファメモリ104は、ホストI/F102から内部バス109を介して受信したユーザデータを一時的に記憶する。また、バッファメモリ104は、NANDメモリ200から読み出されたユーザデータを一時的に記憶する。ホストI/F102は、NANDメモリ200から読み出され、バッファメモリ104に記憶されたユーザデータを、ホスト2へ送信する。
【0051】
なお、バッファメモリ104には、例えばSRAM(Static Random Access Memory)またはSDRAM(Syncronous Dynamic Random Access Memory)などの揮発性メモリが採用され得る。なお、バッファメモリ104として採用されるメモリの種類はこれらに限定されない。
【0052】
メモリI/F108は、プロセッサ101からの指示に基づいて、ユーザデータ等をNANDメモリ200に書き込む処理およびNANDメモリ200から読み出す処理を制御する。
【0053】
第1ECC回路105は、ライトデータ等に対して第1の誤り訂正符号(ここでは例えばRS符号)による符号化を実行することができる。また、第1ECC回路105は、リードデータ等に対して第1の誤り訂正符号(ここでは例えばRS符号)による復号を実行することができる。
【0054】
第2ECC回路107は、リードデータ等に対して第2の誤り訂正符号(ここでは例えばBCH符号)による符号化を実行することができる。また、第2ECC回路107は、リードデータ等に対して第2の誤り訂正符号(ここでは例えばBCH符号)による復号を実行することができる。
【0055】
R/D回路106は、ランダマイズおよびデランダマイズを実行することができる。
【0056】
プロセッサ101は、コンピュータプログラムを実行することができる。プロセッサ101は、例えばCPU(Central Processing Unit)である。プロセッサ101は、RAM103をワーキングメモリとして用いながらファームウェアプログラムを実行することで、メモリシステム1の各構成要素を統括的に制御する。
【0057】
例えば、プロセッサ101は、ホスト2からホストI/F102経由でアクセスコマンドを受けた場合に、そのアクセスコマンドに従った制御を行う。具体的には、プロセッサ101は、ホスト2からのライトコマンドに従って、NANDメモリ200への書き込みをメモリI/F108へ指示する。また、プロセッサ101は、ホスト2からのリードコマンドに従って、NANDメモリ200からの読み出しをメモリI/F108へ指示する。
【0058】
プロセッサ101は、ホスト2からライトコマンドを受けた場合、当該ライトコマンドに対応したユーザデータに対して、NANDメモリ200における格納領域(格納位置)を決定する。ユーザデータの論理アドレスと当該ユーザデータの格納領域を示す物理アドレスとの対応は、論物変換情報に記録される。プロセッサ101は、ユーザデータの格納領域を決定した後、当該ユーザデータのNANDメモリ200への書き込みのタイミングに対応した所定のタイミングで論物変換情報を更新する。
【0059】
また、プロセッサ101は、ホスト2からリードコマンドを受けた場合、リードコマンドにより指定された論理アドレスを上述の論物変換情報を用いて物理アドレスに変換し、当該物理アドレスが示す格納領域からの読み出しをメモリI/F108へ指示する。
【0060】
プロセッサ101は、ユーザデータがNANDメモリ200に書き込まれる前には、符号化を含む当該ユーザデータに対する各種処理を制御する。また、プロセッサ101は、ユーザデータがNANDメモリ200から読み出された後には、誤り訂正を含む当該ユーザデータに対する各種処理を制御する。
【0061】
図6および
図7を参照して、ユーザデータがNANDメモリ200に書き込まれる前に当該ユーザデータに対して実行される各種処理を説明する。
図6は、実施形態にかかる第1ECC回路105による処理を示す図であり、
図7は、実施形態にかかるR/D回路106および第2ECC回路107による処理を示す図である。
【0062】
ユーザデータに対しては、データ単位DUの単位で各種処理が実行される。まず、ユーザデータからデータ単位DUが生成される。例えば、ユーザデータがデータ単位DUのサイズに分割され、サイズが不足していれば無効データでパディングされることで、1以上のデータ単位DUが生成される。
【0063】
図6に示されるように、生成されたデータ単位DUは、第1ECC回路105に入力され、RS符号の生成に使用される。第1ECC回路105は、RS符号を生成する演算をデータ単位DUを用いて行い、演算結果を記憶する。そして、第1ECC回路105は、新たにデータ単位DUが入力されたとき、記憶している演算結果と、新たに入力されたデータ単位DUと、に基づいてRS符号を生成する演算をさらに進める。第1ECC回路105は、所定数のデータ単位DUについて演算をすることでRS符号を生成し、生成したRS符号を出力することができる。なお、第1ECC回路105は、所定数のデータ単位DUが揃ってからRS符号を生成する演算を行ってもよい。
【0064】
第1ECC回路105に入力されたデータ単位DUは、そのまま第1ECC回路105から出力される。そして、出力されたデータ単位DUは、
図7に示されるように、R/D回路106に入力され、R/D回路106によってランダマイズされる。なお、第1ECC回路105から出力されたデータ単位DUでなく、第1ECC回路105に入力されたデータ単位DUが、並列的にR/D回路106に入力されてもよい。データ単位DUのランダマイズの際、R/D回路106には、ランダマイズキーがプロセッサ101などから入力される。R/D回路106は、入力されたランダマイズキーをシードとして用いて疑似乱数列を生成し、当該疑似乱数列を用いてデータ単位DUをスクランブルする。例えば、R/D回路106は、データ単位DUと疑似乱数列との排他的論理和を演算し、演算結果をランダマイズ後のデータ単位DUとして出力する。なお、スクランブルの演算は排他的論理和に限定されない。
【0065】
ランダマイズ後のデータ単位DUは、第2ECC回路107に入力される。第2ECC回路107は、ランダマイズ後のデータ単位DUに対してBCH符号による符号化を実行することでパリティデータIEPを生成する。そして、第2ECC回路107は、ランダマイズ後のデータ単位DUと、生成したパリティデータIEPと、を連接して出力する。
【0066】
第2ECC回路107から出力されたデータは、メモリI/F108によってNANDメモリ200のうちの何れかのメモリチップ201に送られる。
【0067】
ユーザデータから生成されたデータ単位DUがNANDメモリ200に書き込まれる前に当該ユーザデータに対して実行される上述した各種処理は、第1処理に相当する。具体的には、第1の誤り訂正符号(ここでは例えばRS符号)による符号化および第1変換(ここでは例えばランダマイズ)は、第1処理に相当する。または、第1の誤り訂正符号(ここでは例えばRS符号)による符号化、第1変換(ここでは例えばランダマイズ)、および第2の誤り訂正符号(ここでは例えばBCH符号)による符号化は、第1処理に相当する。
【0068】
図8は、ユーザデータがNANDメモリ200から読み出された後に当該ユーザデータに対して実行される各種処理を説明するための模式的な図である。
【0069】
コントローラ100は、読み出し対象のユーザデータを、パリティデータIEPが連接された状態の読み出し対象のデータ単位DUとしてメモリチップ201から受信する。パリティデータIEPが連接された状態のデータ単位DUは、まず、第2ECC回路107に入力される。第2ECC回路107は、入力された読み出し対象のデータ単位DUに対して、BCH符号による復号、つまりパリティデータIEPを用いた誤り訂正を実行する。
【0070】
第2ECC回路107による誤り訂正の後、読み出し対象のデータ単位DUは、R/D回路106によってデランダマイズされる。読み出し対象のデータ単位DUのデランダマイズの際、R/D回路106には、ランダマイズキーがプロセッサ101などから入力される。R/D回路106は、入力されたランダマイズキーをシードとして用いて疑似乱数列を生成し、当該疑似乱数列を用いてスクランブルを解除する。例えば、R/D回路106は、読み出し対象のデータ単位DUと疑似乱数列との排他的論理和を演算し、演算結果をスクランブルが解除されたデータ単位DUとして出力する。なお、スクランブルを解除する演算は、スクランブルの演算に対応する限り、排他的論理和に限定されない。
【0071】
デランダマイズが行われた後の読み出し対象のデータ単位DUは、バッファメモリ104に送られる。
【0072】
ここまでに説明されたデータフローは、第2ECC回路107が誤り訂正に成功した場合のデータフローである。第2ECC回路107が誤り訂正に失敗した場合、第1ECC回路105による誤り訂正が実行される。
【0073】
具体的には、読み出し対象のデータ単位DUが属する積符号フレームPFが例えばプロセッサ101によって特定され、特定された積符号フレームPFを構成する全てのRS符号フレームRSFがメモリチップ201から読み出される。メモリチップ201から読み出された各RS符号フレームRSFに対しては、読み出し対象のデータ単位DUと同様に、第2ECC回路107による誤り訂正と、R/D回路106によるデランダマイズと、がこの順番で実行される。その後、各RS符号フレームRSFは、パリティデータIEPが連接された状態で第1ECC回路105に入力される。そして、第1ECC回路105は、積符号フレームPFを構成する全てのRS符号フレームRSFを用いた復号によって誤り訂正を試みる。
【0074】
積符号フレームPFを構成する全てのRS符号フレームRSFのうち、第2ECC回路107での誤り訂正に失敗したRS符号フレームRSFの数が所定数以下であれば、第1ECC回路105は、パリティデータRSPを用いた消失訂正によって、読み出し対象のデータ単位DUの誤りを訂正することができる。
【0075】
積符号フレームPFを構成する全てのRS符号フレームRSFのうち、第2ECC回路107での誤り訂正に失敗したRS符号フレームRSFの数が所定数を越えている場合には、第1ECC回路105は、パリティデータRSPを用いた復号による誤り訂正と、パリティデータIEPを用いた復号による誤り訂正と、を誤りの数が所定数以下になるまで繰り返し実行する。そして、第1ECC回路105は、パリティデータRSPおよびパリティデータIEPを用いた消失訂正によって、読み出し対象のデータ単位DUの誤りを訂正することができる。
【0076】
なお、第1ECC回路105によって実行される、パリティデータRSPを用いた消失訂正、および、パリティデータRSPおよびパリティデータIEPを用いた消失訂正は、第1復号に相当する。第2ECC回路107によって実行される、第2パリティデータ(ここでは例えばパリティデータIEP)を用いた復号は、第2復号に相当する。デランダマイズは、第1変換(ここでは例えばランダマイズ)の逆変換である第2変換に相当する。
【0077】
また、ユーザデータがNANDメモリ200から読み出された後に当該ユーザデータに対して実行される上述された各種処理は、第2処理に相当する。具体的には、第2変換および第1復号は、第2処理に相当する。または、第2復号、第2変換、および第1復号は、第2処理に相当する。
【0078】
図9は、実施形態にかかる第1ECC回路105によって実行される処理を説明するための概念図である。本図に示される例では、データ単位DU2が本来の読み出し対象のデータ単位DUであり、当該データ単位DU2に含まれる誤りは第2ECC回路107では訂正できなかった(uncorrectable)こととしている。
【0079】
前述されたように、データ単位DU2が属する積符号フレームPFを構成する全てのRS符号フレームRSFは、第2ECC回路107による復号と、R/D回路106によるデランダマイズと、を経て第1ECC回路105に入力される。第1ECC回路105は、入力されたRS符号フレームRSFのセットに基づいてシンドロームRSSを生成する。そして、第1ECC回路105は、シンドロームRSSを用いてデータ単位DU2に対する誤り訂正を実行する。なお、シンドロームは、受信系列にパリティ検査行列を乗じたものである。
【0080】
なお、RS符号フレームRSFのセットの読み出しから第1ECC回路105による誤り訂正までの処理は、第1動作に相当する。
【0081】
ここで、第1ECC回路105に入力されるRS符号フレームRSFのセットに不正(incorrect)なデータ単位DUが含まれる可能性がある。不正なデータ単位DUは、期待されたデータ単位DUと異なるデータ単位DUをいう。
【0082】
第1ECC回路105に不正なデータ単位DUが入力される原因としては、種々の原因が考えられる。以下に、第1ECC回路105に不正なデータ単位DUが入力されることを引き起こす3つの事象を説明する。
【0083】
第1の事象として、デランダマイズの失敗が考えられる。デランダマイズを正しく実行するためには、データ単位DUの書き込みの際に使用されたランダマイズキーと同じランダマイズキーをデランダマイズに使用する必要がある。しかしながら、データ単位DUの書き込みの際と、当該データ単位DUの読み出しの際と、で異なるランダマイズキーが使用されることがある。そのようなケースは、例えばランダマイズキーがユーザデータのアドレス情報(論理アドレスまたは物理アドレス)と対応付けて管理されている場合に起こり得る。
【0084】
前述したように、ユーザデータの論理アドレスと、当該ユーザデータの格納領域の位置を示す物理アドレスと、の関係は論物変換情報を用いて管理される。しかしながら、実装の都合上、NANDメモリ200へのユーザデータの書き込みのタイミングと論物変換情報の更新のタイミングとを厳密に一致させることは困難である。したがって、論物変換情報の内容が論理アドレスと物理アドレスとの最新の関係に対応していない期間が生じ得る。
【0085】
そのような期間においてRS符号フレームRSFのセットの読み出しが行われた場合、書き込みの際に使用されたランダマイズキーと異なるランダマイズキーが選択され得る。書き込みの際に使用されたランダマイズキーと異なるランダマイズキーが選択された場合、RS符号フレームRSFの1つとして読み出されたデータ単位DUは、不適切なデランダマイズによって、ランダマイズの前の状態とは異なるビット列に変化する。つまり、不正なデータ単位DUが得られる。
【0086】
デランダマイズは、第2ECC回路107による誤り訂正の後に実行される。つまり、RS符号フレームRSFとして読み出されたデータ単位DUは、第2ECC回路107によって誤りが無い状態とされた後に、不適切なデランダマイズによって元のデータ単位DUと異なる状態に変化する。つまり、RS符号フレームRSFとして読み出されたデータ単位DUは、不正なデータ単位DUとなる。第1ECC回路105は、第2ECC回路107を通過した後に当該不正なデータ単位が入力されるため、当該不正なデータ単位DUを、誤りが無い状態のデータ単位DUとして扱うことになる。
【0087】
第2の事象として、ソフトエラーまたはバスエラーが挙げられる。データ単位DUが第2ECC回路107による誤り訂正を経てから第1ECC回路105に入力されるまでの間に、当該データ単位DUにソフトエラーまたはバスエラーによって新たな誤りが生じた場合、この誤りを含む当該データ単位DUが第1ECC回路105に入力される。つまり、RS符号フレームRSFとして読み出されたデータ単位DUは、第2ECC回路107を通過した後、期待されたデータ単位DUと異なる不正なデータ単位DUとなって、第1ECC回路105に入力されることになる。
【0088】
第3の事象として、メモリチップ201によるデータ単位DUの読み出しミスが挙げられる。メモリチップ201が、周辺回路210の動作エラーにより、RS符号フレームRSFの読み出し先として指示されたページと異なるページからデータ単位DUを読み出してしまう場合がある。つまり、メモリチップ201は、間違った(wrong)データ単位DUを読み出す場合がある。第2ECC回路107およびR/D回路106は、入力されたデータ単位DUが間違っていることを検出できない。よって、メモリチップ201の読み出しミスによって間違ったデータ単位DUが読み出された場合、そのデータ単位DUは、不正なデータ単位DUとして第1ECC回路105に入力されることになる。
【0089】
第1ECC回路105に入力されたRS符号フレームRSFのセットに不正なデータ単位DUが含まれている場合、当該セットを用いた復号によって生成されるシンドロームRSSは不正である。そして、第1ECC回路105は、不正なシンドロームRSSを用いてデータ単位DU2に対する誤り訂正を実行することになる。不正なシンドロームRSSが使用された場合、たとえ第1ECC回路105が当該誤り訂正を完了したとしても、誤り訂正の後の読み出し対象のデータ単位DUは、元のデータ単位DUと等価とならない。つまり、読み出し対象のデータ単位DUを元の状態に復元することができない。
【0090】
そこで、コントローラ100は、第1ECC回路105による誤り訂正の後、読み出し対象のデータ単位DUが元の状態に復元されたか否かを判定する。読み出し対象のデータ単位DUが元の状態に復元されていないと判定された場合、コントローラ100は、第1動作(即ちRS符号フレームRSFのセットの読み出しから第1ECC回路105による誤り訂正までの処理)を再実行する。
【0091】
前述された第1の事象は、NANDメモリ200へのユーザデータの書き込みのタイミングと論物変換情報の更新のタイミングとのラグに起因するため、短期間に解消し得る。また、第2の事象および第3の事象は、ともに、偶発的に生じるものである。第1動作によって第1~第3の事象のうちの何れかの事象に起因して不正なデータ単位DUが第1ECC回路105に入力されたとしても、第1動作の再実行時にその事象が生じなければ、読み出し対象のデータ単位DUを元の状態に復元することができる。読み出し対象のデータ単位DUを元の状態に復元できなかった場合に第1動作が再実行されるようにコントローラ100が構成されることで、読み出し対象のデータ単位DUを元の状態に復元できる可能性を向上させることができる。
【0092】
読み出し対象のデータ単位DUが元の状態に復元されたか否かの判定には、読み出し対象のデータ単位DUに予め埋め込められたパラメータが使用される。
【0093】
図10は、実施形態にかかるデータ単位DUの構成の一例を示す模式的な図である。
図9に示されるように、データ単位DUは、ユーザデータにヘッダを付した構成を備えている。ヘッダはパラメータを含む。パラメータには、既知の値がセットされる。
【0094】
プロセッサ101は、読み出し対象のデータ単位DUに対して第1動作が実行された後、当該読み出し対象のデータ単位DUからパラメータの値を取得する。そして、プロセッサ101は、読み出し対象のデータ単位DUから取得された値が期待値と等価であるか否かを判定する。両者の値が互いに等価である場合、プロセッサ101は、読み出し対象のデータ単位DUは元の状態に復元されたと判定する。両者の値が互いに等価でない場合、プロセッサ101は、読み出し対象のデータ単位DUは元の状態に復元されていないと判定する。
【0095】
パラメータには、既知の値であれば任意の値をセットすることができる。ここでは一例として、データ単位DUに含まれるユーザデータの論理アドレスがパラメータにセットされることとする。論理アドレスは、論物変換情報によって管理される、既知の情報である。プロセッサ101は、読み出し対象のデータ単位DUが元の状態に復元されたか否かの判定の際に、論物変換情報を参照することによって、パラメータの期待値を取得することができる。
【0096】
なお、パラメータの値は、第1情報に相当する。なお、
図10の例では、パラメータはヘッダに埋め込まれているとされた。パラメータが埋め込まれる位置はヘッダに限定されない。例えば、データ単位DUはフッタを有し、パラメータはフッタに埋め込まれていてもよい。以降では、一例として、パラメータはヘッダに埋め込まれていることとして説明する。
【0097】
続いて、実施形態にかかるメモリシステム1の動作を説明する。
【0098】
図11は、パリティデータRSPを生成する処理に関する実施形態にかかるコントローラ100の動作の一例を示すフローチャートである。
【0099】
プロセッサ101は、バッファメモリ104に蓄積されているユーザデータのうち書き込みの対象のユーザデータを選択し、選択された書き込み対象のユーザデータの論理アドレスをパラメータにセットしたヘッダを生成する(S101)。
【0100】
続いて、プロセッサ101は、書き込み対象のユーザデータにヘッダを付加することによって、書き込み対象のデータ単位DUを生成する(S102)。プロセッサ101は、書き込み対象のデータ単位DUのサイズが所定値となるように、書き込み対象のユーザデータを分割したりパディングしたりすることができる。S102では、書き込み対象のユーザデータから2以上の書き込み対象のデータ単位DUが生成されてもよい。
【0101】
続いて、第1ECC回路105は、書き込み対象のデータ単位DUの符号化の演算を進める(S103)。そして、第1ECC回路105は、書き込み対象のデータ単位DUを出力する(S104)。なお、前述したように、第1ECC回路105に入力されたデータ単位DUが、並列的にR/D回路106に入力されてもよい。その場合には、S104の処理は省略され得る。
【0102】
なお、パリティデータRSPを生成するためには、積符号フレームPFを構成する全てのデータ単位DUの入力が必要である。つまり、書き込み対象のデータ単位DUによって、入力されたデータ単位DUの数が、積符号フレームPFを構成するデータ単位DUの数に達した場合、パリティデータRSPが完成する。パリティデータRSPが完成した場合(S105:Yes)、第1ECC回路105は、パリティデータRSPを出力し(S106)、パリティデータRSPを生成する処理が終了する。パリティデータRSPが完成していない場合(S105:No)、制御がS101に遷移し、新たな書き込み対象のユーザデータに対してS101以降の処理が実行される。
【0103】
図12は、NANDメモリ200にデータを書き込む処理に関する実施形態にかかるコントローラ100の動作の一例を示すフローチャートである。
【0104】
プロセッサ101は、データ単位DU(例えば
図11のS103の処理によって出力されたデータ単位DU)を、R/D回路106に入力する(S201)。そして、プロセッサ101は、R/D回路106にランダマイズキーを入力し(S202)、R/D回路106は、当該ランダマイズキーを用いたランダマイズを実行する(S203)。
【0105】
続いて、第2ECC回路107は、ランダマイズ後の書き込み対象のデータ単位DUの符号化を実行する(S204)。第2ECC回路107は、符号化によって生成されたパリティデータIEPをランダマイズ後の書き込み対象のデータ単位DUに連接する。
【0106】
続いて、メモリI/F108は、パリティデータIEPが連接されたランダマイズ後の書き込み対象のデータ単位DUをNANDメモリ200に送信する(S205)。S205によって、NANDメモリ200にデータ単位DUを書き込む処理が完了する。
【0107】
なお、第1ECC回路105によって積符号フレームPFを構成する全てのデータ単位DUの符号化が完了すると、パリティデータRSPが完成する(
図11のS105,S106参照)。パリティデータRSPは、S201~S205と同様の手順に従ってNANDメモリ200に送られる。S205によって、NANDメモリ200にパリティデータRSPを書き込む処理が完了する。パリティデータRSPに対するランダマイズの際に使用されるランダマイズキーの決定方法は、特定の方法に限定されない。
【0108】
図13は、NANDメモリ200からデータ単位DUを読み出す処理に関する実施形態にかかるコントローラ100の動作の一例を示すフローチャートである。
【0109】
まず、メモリI/F108は、NANDメモリ200から読み出し対象のデータ単位DUを読み出す(S301)。なお、読み出し対象のデータ単位DUは、パリティデータIEPが連接された状態で読み出される。
【0110】
続いて、第2ECC回路107は、パリティデータIEPを用いた復号によって、読み出し対象のデータ単位DUに対し、誤り訂正を実行する(S302)。
【0111】
続いて、S302において誤り訂正が成功した場合(S303:Yes)、プロセッサ101は、R/D回路106にランダマイズキーを入力し(S304)、R/D回路106は、当該ランダマイズキーを用いたデランダマイズを実行する(S305)。そして、S315に制御が遷移する。なお、S315の処理については後述される。
【0112】
S302において誤り訂正が失敗した場合(S303:No)、第1動作が開始される。ここでの誤り訂正の失敗は、第2ECC回路107により、読み出されたデータ単位DUの誤りを訂正できずに復元に失敗したことを示す。
【0113】
第1動作では、プロセッサ101はまず、読み出し対象のデータ単位DUが属する積符号フレームPFを構成するRS符号フレームRSFのセットを特定する(S306)。
【0114】
この後、S308からS312までの処理が、各RS符号フレームRSFに対して実行される。そのために、プロセッサ101はまず、RS符号フレームRSFのセットから、S308からS312までの処理の対象とされるRS符号フレームRSFを1つ選択する(S307)。そして、S308において、メモリI/F108は、選択されたRS符号フレームRSFをNANDメモリ200から読み出す(S308)。選択されたRS符号フレームRSFは、パリティデータIEPが連接された状態で読み出される。
【0115】
そして、第2ECC回路107は、パリティデータIEPを用いた復号によって、RS符号フレームRSFに対し、誤り訂正を実行する(S309)。そして、プロセッサ101は、R/D回路106にランダマイズキーを入力し(S310)、R/D回路106は、RS符号フレームRSFに対し、当該ランダマイズキーを用いたデランダマイズを実行する(S311)。
【0116】
なお、S309では、プロセッサ101は、RS符号フレームRSFがランダマイズされた際に使用されたランダマイズキーを特定し、特定されたランダマイズキーをR/D回路106に入力する。ランダマイズキーがユーザデータのアドレス情報(論理アドレスまたは物理アドレス)と対応付けて管理されており、かつRS符号フレームRSFがデータ単位DUに該当する場合、プロセッサ101は、当該データ単位DUに含まれるユーザデータのアドレス情報に基づいてランダマイズキーを特定することができる。なお、ランダマイズキーの特定方法はこれに限定されない。RS符号フレームRSFがパリティデータRSPの場合、任意の方法でランダマイズキーが特定され得る。
【0117】
S311の後、プロセッサ101は、デランダマイズされた後のRS符号フレームRSFをRAM103に格納し(S312)、未選択のRS符号フレームRSFが残っているか否かを判定する(S313)。
【0118】
未選択のRS符号フレームRSFが残っている場合(S313:Yes)、制御がS307に遷移して、未選択のRS符号フレームRSFのうちから新たなRS符号フレームRSFが1つ、選択される。
【0119】
未選択のRS符号フレームRSFが残っていない場合(S313:No)、第1ECC回路105は、デランダマイズされた状態でRAM103に格納されたRS符号フレームRSFのセットを用いた復号によって、第2ECC回路107による誤り訂正が失敗した読み出し対象のデータ単位DUに対する誤り訂正を実行する(S314)。なお、S314では、第1ECC回路105は、消失訂正を行ってもよいし、パリティデータRSPを用いた復号とパリティデータIEPを用いた復号との繰り返しを実行してもよい。
【0120】
続いて、プロセッサ101は、第1ECC回路105によって誤り訂正が実行された後の読み出し対象のデータ単位DUから、ヘッダに含まれるパラメータの値を取得する(S315)。そして、プロセッサ101は、取得されたパラメータの値が読み出し対象のデータ単位DUに含まれるユーザデータの論理アドレス、つまりパラメータの期待値、と等価であるか否かを判定する(S316)。
【0121】
取得されたパラメータの値が期待値と等価である場合(S316:Yes)、第1ECC回路105により誤り訂正された読み出し対象のデータ単位DUからユーザデータが取り出されて、NANDメモリ200からデータ単位DUを読み出す処理に関する動作が完了する。
【0122】
取得されたパラメータの値が期待値と等価でない場合(S316:No)、読み出し対象のデータ単位DUは元の状態に復元されていないと推定される。よって、S306に制御が移行して、第1動作が再実行される。
【0123】
なお、
図13の説明では、第1動作はS316の判定においてYesと判定されるまで繰り返し実行される。第1動作の実行回数は、所定回数に制限されていてもよい。
【0124】
また、S305の処理を経由し、その後S316の処理においてNoと判定された場合、S3314の処理を経由してS316の処理が実行され、S316においてNoと判定された場合と異なる処理が実行されてもよい。S305の処理を経由し、その後S316の処理においてNoと判定された場合、例えば、メモリセルトランジスタMTからデータを読み出す際にゲート電極に印加される判定電圧をシフトさせて再びS301の処理が実行されてもよい。判定電圧をシフトさせてS301を行うことは、リトライリードとも称される。リトライリードで用いられる判定電圧の決定方法は、特定の方法に限定されない。例えば、予め設定された複数の候補から判定電圧が選択されてもよい。または、判定電圧としてそれぞれ異なる電圧値を用いて複数回のリードが実行されることで、読み出されるデータ単位DUに含まれるエラーの数をできるだけ少なくすることができる電圧値が求められ、求められた電圧がリトライリードで用いられる判定電圧として設定されてもよい。
【0125】
このように、実施形態によれば、NANDメモリ200は、第1処理が実行された複数のデータ単位DUを記憶する。当該複数のデータ単位DUの各々は、パラメータを含み、このパラメータには、後に比較可能な値(第1情報の一例)が設定されている。第1処理は、当該複数のデータ単位DUに基づいてパリティデータRSP(第1パリティデータの一例)を生成するRS符号による符号化(第1符号化の一例)と、RS符号による符号化の後に実行されるランダマイズ(第1変換の一例)と、を含む。コントローラ100は、第1動作を実行する。第1動作は、NANDメモリ200から当該複数のデータ単位DUを読み出すことと、読み出された当該複数のデータ単位DUに対して第2処理を実行することを含む。第2処理は、デランダマイズ(第2変換の一例)と、パリティデータRSPおよびデランダマイズの後の当該複数のデータ単位DUを用いた復号(第1復号の一例)と、を含む。コントローラ100は、第1動作の後の当該複数のデータ単位DUのうちの読み出し対象のデータ単位DUからパラメータの値を取得する。コントローラ100は、取得された値とパラメータの期待値とを比較し、両者が互いに等価でない場合、第1動作を再び実行する。
【0126】
よって、コントローラ100は、第1動作による読み出し対象のデータ単位DUの復元の失敗を検出できる。また、コントローラ100は、第1動作による読み出し対象のデータ単位DUの復元に失敗した場合、第1動作を再実行することができる。当該失敗をもたらす原因となった事象が第1動作の再実行時に再び生じなければ、コントローラ100は、第1動作の再実行の際には、読み出し対象のデータ単位DUを正しく復元することができる。つまり、実施形態によれば、NANDメモリ200から読み出されたデータを復元する能力が向上する。
【0127】
また、実施形態によれば、第1処理は、複数のデータ単位DUの各々についてパリティデータIEPを生成する符号化(第2符号化の一例)をランダマイズの後にさらに含む。また、第2処理は、パリティデータIEPを用いた復号(第2復号)をデランダマイズの前にさらに含む。
【0128】
複数のデータ単位DUのうちの1つに対するデランダマイズが失敗した場合、不正なデータ単位DUが生成される。デランダマイズの失敗によって生成された不正なデータ単位DUは、RS符号による誤り訂正に使用されて、読み出し対象のデータ単位DUの復元の失敗を引き起こす。実施形態によれば、メモリシステム1は、このような事象によって起こる復元の失敗を検出できる。また、第1動作の再実行の際にデランダマイズに成功すれば、メモリシステム1は、第1動作の再実行の際には、読み出し対象のデータ単位DUを正しく復元することができる。
【0129】
また、実施形態によれば、コントローラ100は、読み出し対象のデータ単位DUをNANDメモリ200から読み出して、当該読み出し対象のデータ単位DUに対してパリティデータIEPを用いた復号を実行する。コントローラ100は、パリティデータIEPを用いた復号に失敗した場合、第1動作を実行する。
【0130】
また、実施形態によれば、第1変換の一例としてランダマイズ、第2変換の一例としてデランダマイズを挙げた。ランダマイズは、具体的には、データ単位DU毎に疑似乱数列を生成し、データ単位DUを、対応する疑似乱数列を用いてスクランブルする処理である。また、デランダマイズは、具体的には、データ単位DU毎に疑似乱数列を生成し、データ単位DUのスクランブルを、対応する疑似乱数列を用いて解除する処理である。
【0131】
なお、第1変換および第2変換は、これらに限定されない。第1変換としては、ランダマイズに加えて、またはランダマイズに替えて、任意の変換処理が採用され得る。また、第2変換としては、デランダマイズに加えて、またはデランダマイズに替えて、任意の変換処理が採用され得る。
【0132】
ランダマイズに加えて、またはランダマイズに替えて、第1変換として採用され得る処理としては、例えば、誤り抑制符号化(EMC:Error Mitigation Coding)が挙げられる。デランダマイズに加えて、またはデランダマイズに替えて、第2変換として採用され得る処理としては、誤り抑制符号の復号が挙げられる。
【0133】
また、実施形態によれば、パラメータに設定される第1情報として論理アドレスが採用された。第1情報は論理アドレスに限定されない。第1情報としては、既知の情報であれば、任意の情報が採用され得る。
【0134】
また、以上では、第2符号化、第2復号、第1変換、および第2変換が実施される例について説明された。第2符号化、第2復号、第1変換、および第2変換の一部または全部は必ずしも実施されなくてもよい。
【0135】
例えば、複数のデータ単位DUは、第1符号化されている限り、ランダマイズなどの変換処理および第2符号化は実行されていなくてもよい。そのような場合には、コントローラ100は、第1動作では、第1復号によって誤り訂正を行うことで、データ単位DUを復元する。そして、そのような場合でも、コントローラ100は、第1動作による読み出し対象のデータ単位DUの復元の失敗を検出することができる。また、コントローラ100は、第1動作による読み出し対象のデータ単位DUの復元に失敗した場合、第1動作を再実行することができる。当該失敗をもたらす原因となった事象が第1動作の再実行時に再び生じなければ、コントローラ100は、第1動作の再実行の際には、読み出し対象のデータ単位DUを正しく復元することができる。つまり、NANDメモリ200から読み出されたデータを復元する能力が向上する。
【0136】
また、以上の説明では、第1の誤り訂正符号による符号化および対応する復号は、第1ECC回路105によって実行され、第2の誤り訂正符号による符号化および対応する復号は、第2ECC回路107によって実行された。これらの符号化およびこれらの復号のうちの一部または全部は、プロセッサ101によって実行されてもよい。
【0137】
また、プロセッサ101が実行するとして説明された処理の一部または全部は、ハードウェア回路によって実行されてもよい。プロセッサ101が実行するとして説明された処理の一部または全部は、FPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)によって実行されてもよい。
【0138】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0139】
1 メモリシステム、2 ホスト、3 通信インタフェース、100 コントローラ、101 プロセッサ、102 ホストI/F、103 RAM、104 バッファメモリ、105 第1ECC回路、106 R/D回路、107 第2ECC回路、108 メモリI/F、109 内部バス、200 NANDメモリ、201 メモリチップ、210 周辺回路、211 メモリセルアレイ、212 NANDストリング、300 メモリバス。