特許第6730215号(P6730215)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 東芝メモリ株式会社の特許一覧

特許6730215メモリコントローラ、メモリシステムおよび制御方法
<>
  • 特許6730215-メモリコントローラ、メモリシステムおよび制御方法 図000003
  • 特許6730215-メモリコントローラ、メモリシステムおよび制御方法 図000004
  • 特許6730215-メモリコントローラ、メモリシステムおよび制御方法 図000005
  • 特許6730215-メモリコントローラ、メモリシステムおよび制御方法 図000006
  • 特許6730215-メモリコントローラ、メモリシステムおよび制御方法 図000007
  • 特許6730215-メモリコントローラ、メモリシステムおよび制御方法 図000008
  • 特許6730215-メモリコントローラ、メモリシステムおよび制御方法 図000009
  • 特許6730215-メモリコントローラ、メモリシステムおよび制御方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6730215
(24)【登録日】2020年7月6日
(45)【発行日】2020年7月29日
(54)【発明の名称】メモリコントローラ、メモリシステムおよび制御方法
(51)【国際特許分類】
   G06F 11/10 20060101AFI20200716BHJP
   H03M 13/45 20060101ALI20200716BHJP
【FI】
   G06F11/10 680
   G06F11/10 648
   H03M13/45
【請求項の数】10
【全頁数】14
(21)【出願番号】特願2017-56572(P2017-56572)
(22)【出願日】2017年3月22日
(65)【公開番号】特開2018-160064(P2018-160064A)
(43)【公開日】2018年10月11日
【審査請求日】2019年3月8日
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】高山 篤史
【審査官】 漆原 孝治
(56)【参考文献】
【文献】 特開2012−181909(JP,A)
【文献】 米国特許出願公開第2012/0221775(US,A1)
【文献】 米国特許出願公開第2016/0328287(US,A1)
【文献】 特開2011−081858(JP,A)
【文献】 米国特許出願公開第2011/0083060(US,A1)
【文献】 特開2012−216154(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
H03M 13/45
(57)【特許請求の範囲】
【請求項1】
ユーザデータを符号化してパリティを生成するエンコーダと、
乱数を発生する第1の乱数発生器と、
前記ユーザデータを格納する情報部と前記パリティを格納するパリティ部とよりなる符号語を前記第1の乱数発生器が発生した前記乱数を用いてランダマイズするランダマイザと、
前記ランダマイズされた符号語を不揮発性メモリに書き込むプログラムインタフェースと、
前記不揮発性メモリより前記ランダマイズされた符号語を受信語として読み出すリードインタフェースと、
前記受信語の各シンボルの値と前記乱数の各乱数値との組み合わせに基づいて、前記受信語を対数尤度比の列に変換する変換部と、
前記変換部で前記対数尤度比の列に変換された受信語を復号するデコーダと、
を備えるメモリコントローラ。
【請求項2】
前記変換部は、
シンボルの値と乱数値との組み合わせに対して対数尤度比を対応付ける変換テーブルを備え、
前記受信語の各シンボルの値と前記乱数の各乱数値との組み合わせに基づいて前記変換テーブルを参照することで、前記受信語を前記対数尤度比の列に変換する
請求項1に記載のメモリコントローラ。
【請求項3】
前記乱数を生成する第2の乱数発生器をさらに備え、
前記乱数は、擬似乱数であり、
前記第1および第2の乱数発生器は、入力されたシード値に応じて固定的に求まる擬似乱数を発生する疑似乱数発生器であり、
前記第2の乱数発生器には、前記符号語をランダマイズする際に前記第1の乱数発生器に与えたシード値と同一のシード値が与えられ、
前記変換部は、前記第2の乱数発生器が発生した前記乱数の各乱数値と、前記受信語の各シンボルの値との組み合わせに基づいて、前記受信語を前記対数尤度比の列に変換する
請求項1に記載のメモリコントローラ。
【請求項4】
前記ランダマイザは、
前記第1の乱数発生器が発生した前記乱数を用いて前記情報部をランダマイズする第1のランダマイザと、
前記第1の乱数発生器が発生した前記乱数を用いて前記パリティ部をランダマイズする第2のランダマイザと、
を含み、
前記プログラムインタフェースは、前記第1のランダマイザによりランダマイズされた前記情報部と、前記第2のランダマイザによりランダマイズされた前記パリティ部とを連接して前記ランダマイズされた符号語として前記不揮発性メモリに書き込む
請求項1に記載のメモリコントローラ。
【請求項5】
前記変換部は、
シンボルの値と乱数値との組み合わせに対して異なる対数尤度比がそれぞれ対応付けられた複数の前記変換テーブルを備え、
前記複数の変換テーブルのうちから使用する変換テーブルを選択し、前記受信語の各シンボルの値と前記乱数の各乱数値との組み合わせに基づいて前記選択した変換テーブルを参照することで、前記受信語を前記対数尤度比の列に変換する
請求項2に記載のメモリコントローラ。
【請求項6】
前記符号語は、LDPC(Low-Density Parity-Check)符号である請求項1に記載のメモリコントローラ。
【請求項7】
前記第1の乱数発生器は、線形帰還シフトレジスタを含む請求項1に記載のメモリコントローラ。
【請求項8】
前記ランダマイザは、前記符号語の各データ値と前記乱数の各乱数値との排他的論理和を求める排他的論理和回路である請求項1に記載のメモリコントローラ。
【請求項9】
不揮発性メモリと、
請求項1に記載のメモリコントローラと、
を備えるメモリシステム。
【請求項10】
不揮発性メモリに対するデータの書込み/読出しを制御するメモリコントローラの制御方法であって、
ユーザデータを符号化してパリティを生成し、
乱数を発生し、
前記ユーザデータを格納する情報部と前記パリティを格納するパリティ部とよりなる符号語を前記乱数を用いてランダマイズし、
前記ランダマイズされた符号語を不揮発性メモリに書き込み、
前記不揮発性メモリより前記ランダマイズされた符号語を受信語として読み出し、
前記受信語の各シンボルの値と前記乱数の各乱数値との組み合わせに基づいて、前記受信語を対数尤度比の列に変換し、
記対数尤度比の列に変換された受信語を復号する
制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
以下の実施形態は、一般的に、メモリコントローラ、メモリシステムおよび制御方法に関する。
【背景技術】
【0002】
従来、データ値に応じた量の電荷を保持するメモリセルを備える半導体記憶装置が広く知られている。このような半導体記憶装置では、メモリセルに保持された電荷の量に応じたしきい値電圧と予め設定された読み出し電圧との大小関係に基づいて、そのメモリセルが記憶するデータ値が判定される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2013−21461号公報
【特許文献2】特開2009−157836号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の一つの実施形態は、信頼性をより向上することが可能なメモリコントローラ、メモリシステムおよび制御方法を提供することを目的とする。
【課題を解決するための手段】
【0005】
実施形態によれば、メモリコントローラは、ユーザデータを符号化してパリティを生成するエンコーダと、乱数を発生する第1の乱数発生器と、前記ユーザデータを格納する情報部と前記パリティを格納するパリティ部とよりなる符号語を前記第1の乱数発生器が発生した前記乱数を用いてランダマイズするランダマイザと、前記ランダマイズされた符号語を不揮発性メモリに書き込むプログラムインタフェースと、前記不揮発性メモリより前記ランダマイズされた符号語を受信語として読み出すリードインタフェースと、前記受信語の各シンボルの値と前記乱数の各乱数値との組み合わせに基づいて、前記受信語を対数尤度比の列に変換する変換部と、前記変換部で前記対数尤度比の列に変換された受信語を復号するデコーダと、を備える。
【図面の簡単な説明】
【0006】
図1図1は、第1の実施形態にかかるメモリシステムの概略構成例を示すブロック図である。
図2図2は、第1の実施形態にかかるECCフレームの一例を示す図である。
図3図3は、第1の実施形態にかかるメモリシステムにおけるECC部およびその周辺のより詳細な構成例を示すブロック図である。
図4図4は、第1の実施形態にかかる符号化処理の一例を示すフローチャートである。
図5図5は、第1の実施形態にかかる復号処理の一例を示すフローチャートである。
図6図6は、第1の実施形態にかかるLLR変換器に設けられたLLR変換テーブルの一例を示す図である。
図7図7は、第2の実施形態にかかるハードビットリードとソフトビットリードとを説明するための図である。
図8図8に、第2の実施形態にかかるLLR変換テーブルの一例を示す図である。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態にかかるメモリコントローラ、メモリシステムおよび制御方法を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【0008】
一般にNANDセル型フラッシュメモリ(以下、NANDメモリという)では、メモリセルを構成する酸化膜などの素子デバイスが使用により経年劣化するため、読出し時にビットエラーが生じる。そこで通常では、NANDセル型フラッシュメモリに対する信頼性を高めるために、誤り訂正符号が用いられる。
【0009】
誤り訂正符号の訂正処理(以後、訂正処理を復号と呼ぶ)は、復号時に使用する情報によって大きく2つに分類される。本説明では、その1つを硬判定復号と呼び、他の1つを軟判定復号と呼ぶ。硬判定復号では復号器への入力データがバイナリデータであるのに対し、軟判定復号ではビットの“0”らしさと“1”らしさとの比を表す尤度値が復号器に入力される。
【0010】
尤度値としては、一般に次式(1)で示される対数尤度比(Log Likelihood Ratio:LLR)が用いられる。式(1)において、xはi番目の書込みビットを表し、yはi番目の読出しビットを表す。また、Lはi番目のビットに対する対数尤度比である。P(x|y)は条件付き確率であり、たとえばNANDセル型フラッシュメモリの閾値電圧分布や誤り率によって計算することができる値である。
【数1】
【0011】
このようなNANDメモリの制御システムでは、NANDフラッシュメモリの信頼性を高めることを目的として、書込み時に書込み対象のデータ(以下、ライトデータという)のランダマイズを行なう場合がある。ライトデータのランダマイズでは、たとえば線形帰還シフトレジスタ(Linear Feedback Shift Register:LFSR)などの擬似乱数発生器から出力されたランダムデータとライトデータとの排他的論理和(EXOR)が実行される。読出し時には、ライトデータに対して施されたランダマイズが書込み時と同じランダムデータを使用して解除される。
【0012】
ただし、LDPC(Low-Density Parity-Check:LDPC)符号などの軟判定方式の誤り訂正機能を搭載するシステムに対しては、ライトデータ全体をランダマイズする構成を組み込むことが困難であった。これは、ランダマイズされたデータを誤り訂正するには誤り訂正前にランダマイズを解除する必要があるが、ランダマイズを解除することによって、NANDメモリ内でのデータの配列とランダマイズが解除された状態のデータの配列とが一致しないこととなり、その結果、軟判定方式の誤り訂正において意図した誤り訂正が行なわれない可能性が存在するためである。
【0013】
このような課題に対しては、たとえばライトデータを構成する情報部とパリティ部とのうち、パリティ部をランダマイズの対象外として情報部のみをランダマイズした状態でNANDメモリに書き込む方法が考えられる。この方法では、読み出したデータ(以下、リードデータという)の誤り訂正後に情報部のランダマイズを解除すればよい。ただし、このような方法では、パリティ部がランダマイズの対象外とされているため、理想的なランダマイズ性能を得ることができず、それにより、信頼性が低下してしまう可能性が存在する。
【0014】
そこで以下の実施形態では、情報部に加えてパリティ部もランダマイズの対象とすることで、信頼性をより向上することが可能なメモリコントローラ、メモリシステムおよび制御方法について、その具体例を挙げて説明する。
【0015】
(第1の実施形態)
図1は、第1の実施形態にかかるメモリシステムの概略構成例を示すブロック図である。図1に示すように、本実施形態にかかるメモリシステム1は、メモリコントローラ2と不揮発性メモリ3を備える。メモリシステム1は、ホスト4と接続可能であり、図1ではホスト4と接続された状態が示されている。ホスト4は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
【0016】
不揮発性メモリ3は、データを不揮発に記憶する不揮発性メモリである。本実施形態では、不揮発性メモリ3としてNANDメモリを例示する。ただし、NANDメモリに限られず、種々の不揮発性メモリを採用することが可能である。不揮発性メモリ3への書込み(プログラム)および読出しは、ページと呼ばれるデータ単位で実施される。また、不揮発性メモリ3に対する消去は、複数のページを1つの単位としたブロック単位で実施される。不揮発性メモリ3は、互いに離間して交差する複数のワード線および複数のビット線と、ワード線とビット線との各交差部分に設けられた複数のメモリセルとを備える。
【0017】
本説明では、1つのワード線に接続された複数のメモリセルをメモリセルグループと定義する。各メモリセルがシングルレベルセル(SLC)である場合は、メモリセルグループは1ページに対応する。各メモリセルがマルチレベルセル(MLC)である場合は、メモリセルグループは複数ページに対応する。例えば、それぞれが2ビットの情報を記憶できるMLCを用いる場合、メモリセルグループは2ページに対応する。また、それぞれが3ビットのデータを記憶できるMLC(これをトリプルレベルセル(TLC)ともいう)を用いる場合、メモリセルグループは3ページに対応する。
【0018】
メモリコントローラ2は、ホスト4からの書込み要求に従って不揮発性メモリ3への書込みを制御する。また、メモリコントローラ2は、ホスト4からの読出し要求に従って不揮発性メモリ3からの読出しを制御する。メモリコントローラ2は、ホストインタフェース(I/F)21、メモリインタフェース(I/F)25、制御部23およびECC(Error Check and Correct)部(符号処理部)26およびバッファメモリ22を備える。ホストI/F21、メモリI/F25、制御部23、RAM24、バッファメモリ22およびECC部26は、内部バス20を介して相互に接続される。
【0019】
ホストI/F21は、ホスト4から受信した書込み要求および読出し要求やユーザデータなどを内部バス20に出力する。また、ホストI/F21は、不揮発性メモリ3から読み出されて復元されたユーザデータや制御部23からの応答などをホスト4へ送信する。
【0020】
メモリI/F25は、制御部23の指示に基づいて、データ等を不揮発性メモリ3へ書き込む書込み処理および不揮発性メモリ3からデータ等を読み出す読出し処理を実行する。
【0021】
ECC部26は、ユーザデータを符号化することで誤り訂正用のパリティを生成するとともに、符号化されたユーザデータ(以下、情報部という)と符号化されたパリティ(以下、パリティ部という)とよりなる符号語を生成する。ここで、本実施形態においてECC部26が生成する符号語は、乱数または擬似乱数を用いてランダマイズされている。また、ECC部26は、不揮発性メモリ3から読み出された符号語(受信語)を復号してユーザデータを復元する。
【0022】
本説明では、符号語を構成する所定サイズのデータをECC(Error Correcting Codes)フレームとよぶ。図2は、本実施形態にかかるECCフレームの一例を示す図である。図2に示すように、ECCフレーム30は、ユーザデータの一部または全部を格納する情報部31と、この情報部31内のデータを誤り訂正するためのパリティを格納するパリティ部32とから構成される。なお、上述したように、本実施形態における符号語がランダマイズされていることから、情報部31に格納されているデータおよびパリティ部32に格納されているパリティもそれぞれランダマイズされている。
【0023】
1つのECCフレーム30は、不揮発性メモリ3の1ページまたは複数ページに格納される。本実施形態において、ECC部26の符号化方式には、たとえばLDPC符号化方式が採用される。ただし、符号化方式は、LDPC符号化方式に限定されず、LDPC符号のような、尤度情報を用いて復号を行うことが可能な方式であれば、種々の符号化方式を採用することができる。
【0024】
制御部23は、メモリシステム1を統括的に制御する。制御部23は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等で構成される。制御部23は、ホスト4からホストI/F21経由でコマンドが入力されると、そのコマンドに従った制御を行う。例えば、制御部23は、ホスト4からの書込み要求が入力された場合、書込み対象のユーザデータの符号化を符号化部27(図3参照)へ指示するとともに、符号化部27により生成された符号語の不揮発性メモリ3への書き込みをメモリI/F25へ指示する。一方、制御部23は、ホスト4からの読出し要求が入力された場合、不揮発性メモリ3からの符号語の読み出しをメモリI/F25へ指示するとともに、不揮発性メモリ3から読み出された符号語の復号を復号部28(図3参照)へ指示する。制御部23は、ホスト4からの書込み/読出しの対象とされたユーザデータ(符号語)の不揮発性メモリ3上の格納領域(不揮発性メモリ3上の物理アドレス)を、たとえばアドレス変換テーブル等を用いて管理する。
【0025】
RAM(Random Access Memory)24は、例えばDRAM(Dynamic RAM)等の半導体メモリであり、CPU23が処理を実行する際のワーキングメモリとして使用される。RAM24には、NANDメモリ10を管理するためのファームウェアやアドレス変換テーブルなどの各種管理テーブル等が必要に応じてロードされる。
【0026】
バッファメモリ22は、ユーザデータ、ライトデータ、リードデータ等を一時的に保持するメモリ領域として機能する。このバッファメモリ22は、たとえばDRAM(SDRAM(Synchronous DRAM)を含む)やSRAM(Static Random Access Memory)等によって構成することができる。
【0027】
なお、図1では、メモリコントローラ2がECC部26とメモリI/F25を別々に備える構成を例示したが、この構成に限定されるものではない。たとえば、ECC部26がメモリI/F25に内蔵されていてもよい。その場合、ECC部26とメモリI/F25に対する符号化および書込みの指示/読出しおよび復号の指示は、単一の指示(たとえば書込み指示/読出し指示)にまとめられてもよい。
【0028】
つづいて、図1に示すECC部26のより詳細な構成および動作について、図面を用いて説明する。図3は、本実施形態にかかるメモリシステムにおけるECC部およびその周辺のより詳細な構成例を示すブロック図である。また、図4は、本実施形態にかかる符号化処理の一例を示すフローチャートであり、図5は、本実施形態にかかる復号処理の一例を示すフローチャートである。
【0029】
図3に示すように、ECC部26は、符号化部27と、復号部28とを備える。符号化部27は、エンコーダ271と、乱数発生器272と、2つのランダマイザ273および274とを備える。エンコーダ271は、入力されたユーザデータを符号化することで、誤り訂正用のパリティを生成する。乱数発生器272は、たとえばLFSRなどで構成された擬似乱数生成器であり、入力されたシード値に応じた擬似乱数列を出力する。ランダマイザ273および274は、それぞれ排他的論理和を求めるEXOR回路よりなり、それぞれ入力された2つの値の排他的論理和をとり、その結果を出力する。
【0030】
一方、復号部28は、LLR変換器281と、乱数発生器282と、デコーダ283とを備える。乱数発生器282は、符号化部27の乱数発生器272と同様に、たとえばLFSRなどで構成された擬似乱数生成器であり、入力されたシード値に応じた擬似乱数列を出力する。なお、復号部28内の乱数発生器282の代わりに、符号化部27内の乱数発生器272が用いられてもよい。LLR変換器281は、不揮発性メモリ3から読み出されたリードデータの個々のデータ値(シンボル値)と乱数発生器282から入力された擬似乱数列の個々の乱数値との組合せに基づいて、符号語であるECCフレーム30の各シンボルのLLRを求める。デコーダ283は、LLR変換器281でLLR列に変換された符号語を復号する。デコーダ283による復号手法には、限界距離復号や制限繰り返し復号など、種々の復号手法を用いることが可能である。
【0031】
なお、本説明において、シード値とは、擬似乱数列を生成する乱数発生器272/282の初期状態を設定するための値である。乱数発生器272/282は、同一のシードが与えられることで同じ擬似乱数を出力することが可能である。また、シードテーブルとは、乱数発生器272/282に与えるシード値と、シードを特定するためのインデックスとを対応付けるテーブルである。このシードテーブルは、たとえばメモリシステム1の起動時にRAM24またはバッファメモリ22にロードされ、必要に応じて制御部23に参照される。
【0032】
つぎに、符号化部27が実行する符号化処理を、図3および図4を用いて詳細に説明する。なお、図4では、制御部23の動作に着目する。
【0033】
図4に示すように、本実施形態にかかる符号化処理では、まず、制御部23は、ホスト4から受信した書込み要求を解析し、この要求に含まれる論理アドレスに対応付けられた物理アドレスをたとえばアドレス変換テーブルから特定する(ステップ101)。この物理アドレスは、たとえば書込み対象のユーザデータの不揮発性メモリ3における格納先となるページの先頭アドレス等であってよい。
【0034】
つぎに制御部23は、不図示のシードテーブルから擬似乱数の生成に使用するシード値を1つ選択する(ステップS102)。つづいて制御部23は、同一のユーザデータに対する書込みおよび読出しにおいて、書込み時のランダマイズに使用した擬似乱数列と同じ擬似乱数列が読出し時のランダマイズ用に生成されるように、書込み時に使用したシード値を特定するためのインデックスを、たとえば書込み要求に含まれる論理アドレスまたはステップS101で特定した物理アドレスと対応付けてRAM24またはバッファメモリ22内の所定の領域に保持しておく(ステップS103)。
【0035】
つぎに制御部23は、ECC部26にユーザデータの符号化を指示するとともに、この符号化により生成されたECCフレーム30の不揮発性メモリ3への書込みをメモリI/F25に指示し(ステップS104)、その後、本動作を終了する。なお、ステップS104では、制御部23は、バッファメモリ22に格納されている書込み対象のユーザデータの一部または全部を符号化部27に転送するとともに、ステップS102で選択したシード値を符号化部27に入力する。
【0036】
符号化部27に転送されたユーザデータは、図3に示すように、エンコーダ271とランダマイザ273とにそれぞれ入力され、また、符号化部27に入力されたシード値は、乱数発生器272に入力される。エンコーダ271は、入力されたユーザデータを符号化することでパリティを生成し、生成したパリティを別のランダマイザ274に入力する。一方、乱数発生器272は、入力されたシード値に基づいてこのシード値から固定的に求められる擬似乱数列を生成し、生成した擬似乱数列を2つのランダマイザ273および274それぞれに入力する。
【0037】
ユーザデータおよび擬似乱数列が入力されたランダマイザ273は、ユーザデータの個々のビット値(以下、単にデータという)と擬似乱数列の個々の乱数値との排他的論理和を順次演算する。これにより、ユーザデータがランダマイズされる。また、ランダマイザ273は、排他的論理和の結果として得られたデータをECCフレーム30の情報部31として出力する。
【0038】
一方、パリティおよび擬似乱数が入力されたランダマイザ274は、パリティの個々のビット値と擬似乱数列の個々の乱数値との排他的論理和を順次演算することで、パリティをランダマイズする。また、ランダマイザ274は、排他的論理和の結果として得られたデータをECCフレーム30のパリティ部32として出力する。
【0039】
ランダマイザ273および274から出力された情報部31とパリティ部32とは、メモリI/F25におけるプログラムインタフェース(I/F)251に入力される。プログラムI/F251は、入力された情報部31とパリティ部32とを連接し、これにより得られたECCフレーム30(図2参照)を不揮発性メモリ3の指定された格納領域(物理アドレスにより指定されるページ)に書き込む。
【0040】
つづいて、復号部28による復号処理を、図5図6および図3を用いて詳細に説明する。なお、図5では、制御部23の動作に着目する。
【0041】
図5に示すように、本実施形態にかかる復号処理では、まず、制御部23は、ホスト4から受信した読出し要求を解析し、この要求に含まれる論理アドレスに対応付けられた物理アドレスをたとえばアドレス変換テーブルから特定する(ステップS111)。
【0042】
つぎに制御部23は、たとえばRAM24またはバッファメモリ22内の所定の領域に物理アドレス(または論理アドレス)と対応付けて保持されたインデックスを特定し(ステップS112)、この特定したインデックスに対応付けられたシード値をシードテーブルから取得する(ステップS113)。
【0043】
つぎに制御部23は、メモリI/F25に目的のユーザデータ(ECCフレーム30)の読出しを指示するとともに、読み出されたECCフレーム30の復号をECC部26に指示する(ステップS114)。その際、制御部23は、ステップS113で取得したシード値をECC部26に入力する。
【0044】
ここで図3に示すように、図5のステップS113で取得されたシード値は、復号部28における乱数発生器282に入力される。このシード値は、図5のステップS112に示す動作からも明らかなように、読出し対象のユーザデータをランダマイズする際に使用したシード値と同じシード値である。そのため、乱数発生器282からは、読出し対象のユーザデータのランダマイズに使用した擬似乱数列と同じ擬似乱数列が出力される。
【0045】
乱数発生器282によって生成された擬似乱数列は、LLR変換器281に入力される。LLR変換器281には、メモリI/F25のリードI/F252によって不揮発性メモリ3から読み出されたECCフレーム30も入力される。ここで、図6に示すように、LLR変換器281には、ECCフレーム30の各データ値(シンボル値)と擬似乱数列の各乱数値との組合せに対してLLRを対応付けるLLR変換テーブル284が設けられている。LLR変換器281は、入力されたECCフレーム30の個々のデータ値と擬似乱数列の個々の乱数値との組合せに対応付けられたLLRをLLR変換テーブル284から特定し、特定したLLRを順次出力することで、ECCフレーム30をLLR列の符号語に変換する。なお、ECCフレーム30に対して施されたランダマイズは、このLLR変換によって解除される。
【0046】
LLR変換器281によってLLR列に変換された符号語は、デコーダ283に入力される。デコーダ283は、入力されたLLR列の符号語に対して軟判定復号を実行し、その結果を制御部23に返す。たとえば、デコーダ283による復号に成功した場合、復号に成功した旨が制御部23に通知されるとともに、この復号により復元されたユーザデータがバッファメモリ22内に格納される。一方、復号に失敗した場合、復号に失敗した旨が制御部23に通知される。
【0047】
このように、ECCフレーム30の個々のデータ値と擬似乱数列の個々の乱数値との組合せからLLRを求める構成とすることで、ECCフレーム30のLLR変換と、ECCフレーム30に施されたランダマイズの解除とが同時に行なわれるため、デコーダ283による誤り訂正を意図した誤り訂正とすることが可能となる。
【0048】
図5に戻り説明する。制御部23は、ECC部26から通知された復号結果に基づいて、復号に成功したか否かを判定し(ステップS115)、復号に成功していた場合(ステップS115;YES)、バッファメモリ22に格納されている復元されたユーザデータをホスト4へ出力し(ステップS116)、その後、本動作を終了する。一方、復号に失敗していた場合(ステップS115;NO)、制御部23は、リードエラーをホスト4へ返し(ステップS117)、その後、本動作を終了する。
【0049】
以上で説明したように、本実施形態によれば、情報部31に加えてパリティ部32もランダマイズの対象とすることが可能となるため、信頼性がより向上されたメモリコントローラ、メモリシステムおよび制御方法を実現することが可能となる。
【0050】
なお、上述した実施形態では、不揮発性メモリ3から読み出されたECCフレーム30の各データ値と擬似乱数列の各乱数値との組合せに対してLLRを対応付ける構成を例示したが、このような構成に限定されない。たとえばECCフレーム30の各データ値に対応するLLRの絶対値を予め決めておき、乱数値をそのLLRの正負を決定する情報として用いるように構成することも可能である。具体例を挙げると、データ値“1”に対してはLLRの絶対値として“3”を、データ値“0”に対してはLLRの絶対値として“1”をそれぞれ対応付けておき、乱数値が“0”である場合には書込み時にデータ値が反転されていないとしてLLRの絶対値に正(+)の符号を与え、乱数値が“1”である場合には書込み時にデータ値が反転されているとしてLLRの絶対値に負(−)の符号を与えるように構成することも可能である。
【0051】
このような構成によっても、ECCフレーム30のLLR変換と、ECCフレーム30に施されたランダマイズの解除とが同時に行なわれるため、デコーダ283による誤り訂正を意図した誤り訂正とすることが可能となる。
【0052】
また、本実施形態において、LLR変換器281が備えるLLR変換テーブル284の個数は1つに限定されない。すなわち、本実施形態におけるLLR変換器281は、データ値と乱数値との組み合わせに対して異なるLLRが対応付けられた複数のLLR変換テーブルを備えていてもよい。その場合、デコーダ283による復号失敗の頻度や不揮発性メモリ3の各ブロックに対する累積読出し回数等に応じて、LLR変換器281が適宜、使用するLLR変換テーブルを変更できるように構成されるとよい。
【0053】
さらに、図3に示す構成では、情報部31をランダマイズするためのランダマイザ273と、パリティ部32をランダマイズするためのランダマイザ274とを別々に設けた場合を例示したが、それぞれのランダマイザ273および274を共通の1つのランダマイザに置き換えることも可能である。その場合、ランダマイザへの入力を情報部31とパリティ部32とのいずれかから選択するセレクタを設ければよい。このような構成により、回路規模を削減することが可能となる。
【0054】
さらにまた、上述した実施形態では、書込み時と読出し時とで同一のシード値を用いることで同一の擬似乱数を生成したが、このような構成に限定されるものではない。たとえば、書込み時に制御部23または符号化部27内の乱数発生器272で生成した乱数または擬似乱数をRAM24やバッファメモリ22等に保持しておき、読出し時にこの保持しておいた乱数または擬似乱数を用いるように構成することも可能である。これにより、少なくとも復号部28内の乱数発生器282を省略することができるため、回路規模を削減することが可能となる。
【0055】
(第2の実施形態)
上述した実施形態では、不揮発性メモリ3内のECCフレーム30を硬判定読出し(ハードビットリードともいう)により読み出す場合を例示したが、これに限定されるものではない。そこで第2の実施形態では、不揮発性メモリ3から軟判定読出し(ソフトビットリードともいう)によりECCフレーム30が読み出される場合について、例を挙げて説明する。
【0056】
まず、ハードビットリードとソフトビットリードとについて、それぞれの読出し動作で使用される電圧レベル(以下、リードレベルという)に触れつつ説明する。図7は、実施形態にかかるハードビットリードとソフトビットリードとを説明するための図である。なお、図7では、説明の簡略化のため、メモリセルがSLCである場合を例示するが、MLCやTLC等に対しても同様に適用することが可能である。
【0057】
図7に示すように、1つのメモリセルに1ビットのデータを書き込むモード(以下、SLCモードという)では、各メモリセルの閾値電圧が低電圧側の分布(これをEr分布という)と高電圧側の分布(これをA分布という)とのいずれかに属することとなる。Er分布とA分布とは、それぞれ閾値電圧の出現頻度(確率)を表すガウス分布であり得る。Er分布はたとえばビット値“1”に対応し、A分布はたとえばビット値“0”に対応している。
【0058】
この2つの分布からできるだけ低いビットエラー率で“1”と“0”とを読み分けるためには、たとえばこの2つの分布の裾が重なることで形成される谷の最底点に相当する電圧にリードレベルを設定する必要がある。そこで図7に示すように、各メモリセルから1ページ分のデータ(1ビット)を読み出すハードビットリードでは、この最底点に相当する電圧付近にリードレベルVth_HBが設定される。
【0059】
一方、各メモリセルから複数ページ分のデータ(複数ビット)を読み出すソフトビットリードでは、ハードビットリードで用いるリードレベルVth_HBを基準とし、これよりも高い電圧側および/または低い電圧側に1つ以上のリードレベルが設定される。図7に示す例では、リードレベルVth_HBを基準とし、これよりも低い電圧側に所定の刻み幅ΔRで3つのリードレベルVth_SB1、Vth_SB3およびVth_SB4が設定され、高い電圧側に所定の刻み幅ΔRで3つのリードレベルVth_SB2、Vth_SB5およびVth_SB6が設定されている。
【0060】
ソフトビットリードでは、まず、リードレベルVth_HBを用いたハードビットリードが実行された後、低い電圧側のリードレベルVth_SB1を用いた読出し(以下、単一のリードレベルを用いた読出しをシングルレベルリードともいう)と、高い電圧側のリードレベルVth_SB2を用いたシングルレベルリードとが順次実行され(1回目のソフトビットリード)、その後、さらにリードレベルVth_SB3〜Vth_SB6をそれぞれ用いたシングルレベルリードが順次実行される(2回目のソフトビットリード)。
【0061】
1回目のソフトビットリードと2回目のソフトビットリードとでは、それぞれのシングルレベルリード(ハードビットリードも含む)で得られたビット値が論理和演算または論理積演算される。それにより、図7に示す例では、ハードビットに加えて、2ページ分(2ビット)のソフトビット(ソフトビット1(SB1)およびソフトビット2(SB2))が取得される。
【0062】
つづいて、本実施形態にかかるメモリシステムについて説明する。本実施形態にかかるメモリシステムは、たとえば第1の実施形態で例示したメモリシステム1(図1図6参照)と同様の構成であってよい。ただし、本実施形態では、リードI/F252によって不揮発性メモリ3から読み出されるECCフレーム30がソフトビットを含んでいる。すなわち、ECCフレーム30の個々のシンボル値(データ値)が2ビット以上のデータである。そのため、本実施形態では、LLR変換器281が備えるLLR変換テーブル284が、ECCフレーム30の個々のデータ値(シンボル値)のビット数に対応したテーブル構造のLLR変換テーブルに置き換えられる。
【0063】
図8に、本実施形態にかかるLLR変換テーブルの一例を示す。なお、図8には、ECCフレーム30の個々のデータ値のビット数が3ビットである場合のLLR変換テーブルの一例が示されている。
【0064】
図8に示すように、本実施形態にかかるLLR変換テーブルは、3ビットのデータ値それぞれに対して乱数値が組み合わされ、また、3ビットのデータ値と乱数値との組合せそれぞれに対してLLRが対応付けられている。LLR変換器281は、入力されたECCフレーム30の個々の3ビットのデータ値と擬似乱数列の個々の乱数値との組合せに対応付けられたLLRを図8に例示するLLR変換テーブルから特定し、特定したLLRを順次出力することで、ECCフレーム30をLLR列の符号語に変換する。
【0065】
以上のような構成によっても、上述した第1の実施形態と同様に、情報部31に加えてパリティ部32もランダマイズの対象とすることが可能となるため、信頼性をより向上することが可能となる。また、不揮発性メモリ3に対してソフトビットリードを実行することで、ECCフレーム30の各シンボルに関する情報量を増加することが可能となるため、より信頼性の高いメモリシステムを実現することが可能となる。
【0066】
その他の構成、動作および効果は、上述した第1の実施形態と同様であるため、ここでは詳細な説明を省略する。
【0067】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0068】
1…メモリシステム、2…メモリコントローラ、3…不揮発性メモリ、4…ホスト、21…ホストI/F、22…バッファメモリ、23…制御部、24…RAM、25…メモリI/F、251…プログラムI/F、252…リードI/F、26…ECC部、27…符号化部、271…エンコーダ、272…乱数発生器、273,274…ランダマイザ、28…復号部、281…LLR変換器、282…乱数発生器、283…デコーダ、284…LLR変換テーブル、30…ECCフレーム、31…情報部、32…パリティ部
図1
図2
図3
図4
図5
図6
図7
図8