(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-19
(45)【発行日】2024-04-30
(54)【発明の名称】不揮発性メモリ及びメモリシステム
(51)【国際特許分類】
G06F 11/10 20060101AFI20240422BHJP
【FI】
G06F11/10 668
G06F11/10 662
(21)【出願番号】P 2020049649
(22)【出願日】2020-03-19
【審査請求日】2022-09-20
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】鈴木 智哉
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2009-211742(JP,A)
【文献】特開2016-143085(JP,A)
【文献】米国特許出願公開第2016/0224419(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
第1ワード線に共通接続された複数の第1メモリセルトランジスタと、
制御回路と、
を備え、
前記制御回路は、第1動作において、
前記複数の第1メモリセルトランジスタから、少なくとも1つの第1部分データ列を含む第1データ列を読み出し、
前記第1部分データ列が誤りを含むか否かを判定し、
前記第1部分データ列が誤りを含むと判定され
かつ前記第1部分データ列の誤りを訂正する第1訂正処理に失敗した場合、又は前記第1部分データ列が誤りを含むと判定されかつ前記第1訂正処理を実行しない場合、前記第1データ列をメモリコントローラに出力し、
前記第1部分データ列が誤りを含まないと判定された場合、
又は前記第1部分データ列が誤りを含むと判定されかつ前記第1訂正処理に成功した場合、前記第1部分データ列が
厳密条件を満たすか否かを更に判定し、
前記第1部分データ列が前記
厳密条件を満たすと判定された場合、前記第1部分データ列を前記メモリコントローラに選択的に出力し、
前記第1部分データ列が前記
厳密条件を満たさないと判定された場合、前記メモリコントローラに前記第1部分データ列を出力しない
ように構成された、
不揮発性メモリ。
【請求項2】
前記制御回路は、前記第1動作において、
前記第1部分データ列が誤りを含まないと判定された場合、
又は前記第1部分データ列が誤りを含むと判定されかつ前記第1訂正処理に成功した場合、前記第1部分データ列が、第2部分データ列に対して前記
厳密条件を満たすか否かを判定する
ように構成された、
請求項1記載の不揮発性メモリ。
【請求項3】
前記第1データ列は、2つ以上の第1部分データ列を含み、
前記制御回路は、前記第1動作において、
前記2つ以上の第1部分データ列の少なくとも1つが前記
厳密条件を満たすと判定された場合、前記第1データ列を前記メモリコントローラに出力し、
前記2つ以上の第1部分データ列の全てが前記
厳密条件を満たさないと判定された場合、前記メモリコントローラにデータ列を出力しない
ように構成された、
請求項1記載の不揮発性メモリ。
【請求項4】
前記第1データ列は、2つ以上の第1部分データ列を含み、
前記制御回路は、前記第1動作において、
前記2つ以上の第1部分データ列のうちの1つが前記
厳密条件を満たすと判定された場合、前記
厳密条件を満たすと判定された第1部分データ列を前記メモリコントローラに選択的に出力し、
前記2つ以上の第1部分データ列のうちの1つが前記
厳密条件を満たさないと判定された場合、前記
厳密条件を満たさないと判定された第1部分データ列を前記メモリコントローラに出力しない
ように構成された、
請求項1記載の不揮発性メモリ。
【請求項5】
前記2つ以上の第1部分データのうちの少なくとも2つは、互いに異なるデータ長を有する、
請求項
3又は請求項
4記載の不揮発性メモリ。
【請求項6】
前記制御回路は、前記第1訂正処理に硬判定復号処理を適用するように構成された、
請求項
1記載の不揮発性メモリ。
【請求項7】
前記制御回路は、前記メモリコントローラから前記
厳密条件及び前記第2部分データ列を含む第1コマンドを受けると、前記第1動作を実行するように構成された、
請求項
2記載の不揮発性メモリ。
【請求項8】
前記
厳密条件は、前記第1部分データ列が、前記第2部分データ列と一致することである、
請求項
2記載の不揮発性メモリ。
【請求項9】
前記メモリコントローラとの間の通信は、SDR(Single data rate)インタフェース、トグルDDR(Double data rate)インタフェース、又はONFI(Open NAND flash interface)に準拠する、
請求項1記載の不揮発性メモリ。
【請求項10】
第1ワード線に共通接続された複数の第1メモリセルトランジスタと、制御回路と、を備えた不揮発性メモリと、
前記不揮発性メモリに第1コマンドを発行可能に構成されたメモリコントローラと、
を備え、
前記制御回路は、前記第1コマンドを受けると、
前記複数の第1メモリセルトランジスタから、少なくとも1つの第1部分データ列を含む第1データ列を読み出し、
前記第1部分データ列が誤りを含むか否かを判定し、
前記第1部分データ列が誤りを含むと判定され
かつ前記第1部分データ列の誤りを訂正する第1訂正処理に失敗した場合、又は前記第1部分データ列が誤りを含むと判定されかつ前記第1訂正処理を実行しない場合、前記第1データ列を前記メモリコントローラに出力し、
前記第1部分データ列が誤りを含まないと判定された場合、
又は前記第1部分データ列が誤りを含むと判定されかつ前記第1訂正処理に成功した場合、前記第1部分データ列が
厳密条件を満たすか否かを更に判定し、
前記第1部分データ列が前記
厳密条件を満たすと判定された場合、前記第1部分データ列を前記メモリコントローラに選択的に出力し、
前記第1部分データ列が前記
厳密条件を満たさないと判定された場合、前記メモリコントローラにデータ列を出力しない
ように構成され、
前記メモリコントローラは、前記制御回路から出力された第1部分データ列をホスト機器へ出力するように構成された、
メモリシステム。
【請求項11】
前記制御回路は、前記第1部分データ列が誤りを含まないと判定された場合、
又は前記第1部分データ列が誤りを含むと判定されかつ前記第1訂正処理に成功した場合、前記第1部分データ列が、第2部分データ列に対して前記
厳密条件を満たすか否かを判定するように構成され、
前記第1コマンドは、前記
厳密条件及び前記第2部分データ列を含む、
請求項
10記載のメモリシステム。
【請求項12】
前記
厳密条件は、前記第1部分データ列が、前記第2部分データ列と一致することである、
請求項
11記載のメモリシステム。
【請求項13】
前記メモリコントローラは、前記第1コマンドに応じて前記不揮発性メモリから出力された第1データ列の誤りを訂正する第2訂正処理を実行するように構成された、
請求項
10記載のメモリシステム。
【請求項14】
前記メモリコントローラは、前記第1コマンドに応じて前記不揮発性メモリから出力された第1データ列の誤りを訂正する第2訂正処理を実行するように構成され、
前記メモリコントローラによる前記第2訂正処理は、前記制御回路による前記第1訂正処理より誤り訂正能力が高い、
請求項
10記載のメモリシステム。
【請求項15】
前記メモリコントローラは、前記第2訂正処理に軟判定復号処理を適用するように構成された、
請求項
13記載のメモリシステム。
【請求項16】
前記メモリコントローラは、前記第1コマンドに応じて前記不揮発性メモリから出力された第1データ列の誤りを訂正する第2訂正処理を実行するように構成され、
前記第1部分データ列は、前記制御回路において誤りを含むか否かを判定するデータ列の単位であり、
前記第1データ列は、前記メモリコントローラにおいて前記第2訂正処理を実行するデータ列の単位である、
請求項
10記載のメモリシステム。
【請求項17】
前記第1部分データ列は、前記第1データ列よりも小さいデータサイズを有する、
請求項
16記載のメモリシステム。
【請求項18】
前記不揮発性メモリは、1又は複数のチップで構成された、
請求項
10記載のメモリシステム。
【請求項19】
前記不揮発性メモリは、第2ワード線に共通接続された複数の第2メモリセルトランジスタを更に備え、
前記メモリコントローラは、前記第1コマンドに応じて前記不揮発性メモリから出力された第1部分データ列に基づき、
前記複数の第2メモリセルトランジスタから第2データ列を読み出し、
前記第2データ列のうち、前記第1部分データ列に対応する第3部分データ列を出力させる
ように構成され、
前記複数の第1メモリセルトランジスタの各々に記憶されるデータのビット数は、前記複数の第2メモリセルトランジスタの各々に記憶されるデータのビット数より少ない、
請求項
10記載のメモリシステム。
【請求項20】
前記複数の第1メモリセルトランジスタの各々は、2ビット以上のデータを記憶可能に構成され、
前記メモリコントローラは、前記第1コマンドに応じて前記不揮発性メモリから出力された第1部分データ列に基づき、
前記複数の第1メモリセルトランジスタから前記第1データ列と異なる第3データ列を読み出し、
前記第3データ列のうち、前記第1部分データ列に対応する第4部分データ列を出力させる
ように構成された、
請求項
10記載のメモリシステム。
【請求項21】
前記不揮発性メモリと前記メモリコントローラとの間の通信は、SDR(Single data rate)インタフェース、トグルDDR(Double data rate)インタフェース、又はONFI(Open NAND flash interface)に準拠する、
請求項
10記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、不揮発性メモリ及びメモリシステムに関する。
【背景技術】
【0002】
不揮発性メモリとしてのNANDフラッシュメモリと、当該NANDフラッシュメモリを制御するメモリコントローラと、を備えるメモリシステムが知られている。
【先行技術文献】
【特許文献】
【0003】
【非特許文献】
【0004】
【文献】Boncheol Gu, 外12名, “Biscuit: A framework for Near-Data Processing of Big Data Workloads”, 2016 ACM/IEEE 43rd International Symposium on Computer Architecture, [令和2年2月20日検索], インターネット<https://www.cs.virginia.edu/~smk9u/CS6501F16/p153-gu.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0005】
不揮発性メモリからメモリコントローラへの通信量の増加を抑制する。
【課題を解決するための手段】
【0006】
実施形態の不揮発性メモリは、第1ワード線に共通接続された複数の第1メモリセルトランジスタと、制御回路と、を備える。上記制御回路は、第1動作において、上記複数の第1メモリセルトランジスタから少なくとも1つの第1部分データ列を含む第1データ列を読み出し、上記第1部分データ列が誤りを含むか否かを判定し、上記第1部分データ列が誤りを含むと判定されかつ前記第1部分データ列の誤りを訂正する第1訂正処理に失敗した場合、又は前記第1部分データ列が誤りを含むと判定されかつ前記第1訂正処理を実行しない場合、上記第1データ列をメモリコントローラに出力し、上記第1部分データ列が誤りを含まないと判定された場合、又は前記第1部分データ列が誤りを含むと判定されかつ前記第1訂正処理に成功した場合、上記第1部分データ列が厳密条件を満たすか否かを更に判定し、上記第1部分データ列が上記厳密条件を満たすと判定された場合、上記第1部分データ列を上記メモリコントローラに選択的に出力し、上記第1部分データ列が上記厳密条件を満たさないと判定された場合、上記メモリコントローラに上記第1部分データ列を出力しないように構成される。
【図面の簡単な説明】
【0007】
【
図1】第1実施形態に係るメモリシステムの構成を説明するためのブロック図。
【
図2】第1実施形態に係るNANDコントローラ及びNANDフラッシュメモリの構成を説明するためのブロック図。
【
図3】第1実施形態に係るメモリセルアレイの構成を説明するための回路図。
【
図4】第1実施形態に係るページデータの構成を説明するための模式図。
【
図5】第1実施形態に係るメモリシステムにおけるスキャン処理を説明するためのフローチャート。
【
図6】第1実施形態の第1変形例に係るメモリシステムにおけるスキャン処理を説明するためのフローチャート。
【
図7】第1実施形態の第2変形例に係るメモリシステムにおけるスキャン処理を説明するためのフローチャート。
【
図8】第2実施形態に係るページデータの構成を説明するための模式図。
【
図9】第2実施形態に係るメモリシステムにおけるパトロール処理を説明するためのフローチャート。
【
図10】第2実施形態に係るメモリシステムにおけるスキャン処理を説明するためのフローチャート。
【
図11】第2実施形態の第1変形例に係るページデータの構成を説明するための模式図。
【
図12】第2実施形態の第1変形例に係るメモリシステムにおけるスキャン処理を説明するためのフローチャート。
【
図13】第2実施形態の第2変形例に係るメモリシステムにおけるパトロール処理を説明するためのフローチャート。
【
図14】第3実施形態に係るページデータの構成を説明するための模式図。
【
図15】第3実施形態に係るメモリシステムにおけるスキャン処理を説明するためのフローチャート。
【
図16】第3実施形態の第1変形例に係るメモリセルトランジスタの閾値電圧分布を説明するための模式図。
【
図17】第3実施形態の第1変形例に係るページデータの構成を説明するための模式図。
【
図18】第3実施形態の第2変形例に係るメモリセルトランジスタの閾値電圧分布を説明するための模式図。
【
図19】第3実施形態の第2変形例に係るページデータの構成を説明するための模式図。
【
図20】第4実施形態に係るページデータの構成を説明するための模式図。
【
図21】第4実施形態に係るメモリシステムにおけるスキャン処理を説明するためのフローチャート。
【
図22】その他の変形例に係るメモリシステムにおけるスキャン処理を説明するためのフローチャート。
【発明を実施するための形態】
【0008】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字を付して区別する。なお、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
【0009】
1.第1実施形態
第1実施形態に係るメモリシステムについて説明する。以下では、不揮発性メモリとしてのNANDフラッシュメモリと、当該NANDフラッシュメモリを備えたメモリシステムを例に挙げて説明する。
【0010】
1.1 構成
第1実施形態に係るメモリシステムの構成について説明する。
【0011】
1.1.1 メモリシステム
まず、第1実施形態に係るメモリシステムを含む構成の概要について、
図1を用いて説明する。
【0012】
図1に示すように、メモリシステム1は、複数のNANDフラッシュメモリ(
図1では、「NAND」と記載)100(100a-1、100a-2、100a-3、100a-4、100b-1、100b-2、100b-3、100b-4、100c-1、100c-2、100c-3、100c-4、100d-1、100d-2、100d-3、及び100d-4)と、メモリコントローラ200と、を備えている。複数のNANDフラッシュメモリ100とメモリコントローラ200とは、例えばそれらの組み合わせにより一つの半導体装置を構成しても良く、その例としてはSD
TMカードのようなメモリカードや、SSD(solid state drive)等が挙げられる。また、メモリシステム1は、複数のNANDフラッシュメモリ100を記憶媒体として用いるデータベース又はビッグデータ処理システムにも適用され得る。以下の説明では、複数のNANDフラッシュメモリ100のうちの任意の1つを、「NANDフラッシュメモリ100」とも称する。
【0013】
NANDフラッシュメモリ100は、複数のメモリセルを備え、データを不揮発に記憶する不揮発性メモリである。メモリコントローラ200は、NANDバスによってNANDフラッシュメモリ100に接続され、ホストバスによってホスト機器300に接続される。そしてメモリコントローラ200は、NANDフラッシュメモリ100を制御し、またホスト機器300から受信した命令に応答して、NANDフラッシュメモリ100にアクセスする。
【0014】
ホスト機器300は、例えばデジタルカメラやパーソナルコンピュータ等であり、ホストバスは、例えばSDTMインタフェース、SAS(Serial attached SCSI(small computer system interface))、SATA(Serial ATA(advanced technology attachment))、又はPCIe(Peripheral component interconnect express)に従ったバスである。
【0015】
NANDバスは、例えば、SDR(Single data rate)インタフェース、トグルDDR(Double data rate)インタフェース、又はONFI(Open NAND flash interface)等に準拠したバスである。
【0016】
1.1.2 メモリコントローラ
引き続き
図1を用いて、メモリコントローラ200の構成の詳細について説明する。
【0017】
メモリコントローラ200は、例えば、SoC(System on a chip)であり、ホストインタフェース回路210、RAM(Random access memory)220、CPU(Central processing unit)230、バッファメモリ240、及びNANDインタフェース回路250を備える。なお、以下に説明されるメモリコントローラ200の各部210-250の機能は、ハードウェア構成、又はハードウェア資源とファームウェアとの組合せ構成のいずれでも実現可能である。
【0018】
ホストインタフェース回路210は、ホストバスを介してホスト機器300と接続され、ホスト機器300から受信した命令及びデータを、それぞれCPU230及びバッファメモリ240に転送する。またCPU230の命令に応答して、バッファメモリ240内のデータをホスト機器300へ転送する。
【0019】
RAM220は、例えばDRAM等の半導体メモリであり、CPU230の作業領域として使用される。そしてRAM220は、NANDフラッシュメモリ100を管理するためのファームウェアや、各種の管理テーブル等を保持する。
【0020】
CPU230は、メモリコントローラ200全体の動作を制御する。例えば、CPU230は、ホスト機器300から書き込み命令を受信した際には、それに応答して、NANDインタフェース回路250に対して書き込み命令を発行する。読出し処理及び消去処理の際も同様である。またCPU230は、NANDフラッシュメモリ100を管理するための様々な処理を実行する。
【0021】
バッファメモリ240は、書込みデータや読出しデータを一時的に保持する。
【0022】
NANDインタフェース回路250は、NANDバスを介してNANDフラッシュメモリ100と接続され、NANDフラッシュメモリ100との通信を司る。そして、CPU230から受信した命令に基づき、各種信号をNANDフラッシュメモリ100へ出力する。また書込み処理時には、CPU230で発行された書込みコマンド、及びバッファメモリ240内の書込みデータを、入力信号としてNANDフラッシュメモリ100へ転送する。更に読出し処理時には、CPU230で発行された読出しコマンドを、入力信号としてNANDフラッシュメモリ100へ転送し、更にNANDフラッシュメモリ100から読み出されたデータを出力信号として受信し、これをバッファメモリ240へ転送する。
【0023】
より具体的には、NANDインタフェース回路250は、複数のNANDコントローラ(
図1では、「CNT」と記載)250a、250b、250c、及び250dを含む。複数のNANDコントローラ250a、250b、250c、及び250dの各々は、複数のNANDフラッシュメモリ100のうちのいくつかを含むNANDフラッシュメモリ100の組と対応づけられ、当該対応づけられたNANDフラッシュメモリ100の組とのデータの送受信を担う。
図1の例では、NANDコントローラ250aは、複数のNANDフラッシュメモリ100a-1、100a-2、100a-3、及び100a-4と接続される。NANDコントローラ250bは、複数のNANDフラッシュメモリ100b-1、100b-2、100b-3、及び100b-4と接続される。NANDコントローラ250cは、複数のNANDフラッシュメモリ100c-1、100c-2、100c-3、及び100c-4と接続される。NANDコントローラ250dは、複数のNANDフラッシュメモリ100d-1、100d-2、100d-3、及び100d-4と接続される。
【0024】
続いて、NANDコントローラ250aの構成の詳細を、
図2を参照して説明する。
【0025】
図2は、第1実施形態に係るNANDコントローラとNANDフラッシュメモリの組との接続構成を説明するためのブロック図である。
図2では、NANDコントローラ250aと、当該NANDコントローラ250aに接続されるNANDフラッシュメモリ100のうちの1つ(100a-1)の構成、並びにこれらの間の接続の一例が示される。なお、
図2では、NANDコントローラ250aの構成が一例として示されるが、その他のNANDコントローラ250b~250dについても、NANDコントローラ250aと同等の構成を有する。
【0026】
図2に示すように、NANDコントローラ250aは、高訂正能力ECC回路251と、外部比較回路252と、を備える。なお、高訂正能力ECC回路251及び外部比較回路252は、NANDコントローラ250a~250dの各々に設けられなくてもよく、メモリコントローラ200内に少なくとも1つ設けられていればよい。
【0027】
高訂正能力ECC回路251は、NANDフラッシュメモリ100に記憶されるデータに関する誤り検出及び誤り訂正処理を行う。すなわち高訂正能力ECC回路251は、データの書き込み時には誤り訂正符号を生成して、これを書込みデータに付与し、データの読出し処理時にはこれを復号し、誤りビットの有無を検出する。そして誤りビットが検出された際には、その誤りビットの位置を特定し、誤りを訂正する。誤り訂正の方法は、例えば、硬判定復号(Hard bit decoding)処理及び軟判定復号(Soft bit decoding)処理を含む。硬判定復号処理に用いられる硬判定復号符号としては、例えば、BCH(Bose - Chaudhuri - Hocquenghem)符号やRS(Reed- Solomon)符号等を用いることができ、軟判定復号処理に用いられる軟判定復号符号としては、例えば、LDPC(Low Density Parity Check)符号等を用いることができる。
【0028】
外部比較回路252は、NANDフラッシュメモリ100の外部に設けられた比較回路であり、NANDフラッシュメモリ100から読み出されたデータが所定の比較条件を満たすか否かを判定し、当該比較結果をCPU230に送出する。外部比較回路252は、例えば、後述するスキャン処理における所定の比較条件として、読出しデータが真のデータと完全一致するか否かを判定する完全一致条件(厳密条件)を設定し得る。
【0029】
以上のように構成されたNANDコントローラ250aは、上述したように、NANDフラッシュメモリ100a-1~100a-4にNANDバスを介して接続される。
【0030】
NANDインタフェースの信号は、例えば、チップイネーブル信号CEn、アドレスラッチイネーブル信号ALE、コマンドラッチイネーブル信号CLE、ライトイネーブル信号WEn、リードイネーブル信号REn、レディ・ビジー信号RBn、及び入出力信号I/Oを含む。
【0031】
信号CEnは、NANDフラッシュメモリ100をイネーブルにするための信号であり、“L(Low)”レベルでアサートされる。信号CLE及びALEは、NANDフラッシュメモリ100への入力信号I/Oがそれぞれコマンド及びアドレスであることをNANDフラッシュメモリ100に通知する信号である。信号WEnは“L”レベルでアサートされ、入力信号I/OをNANDフラッシュメモリ100に取り込ませるための信号である。信号REnも“L”レベルでアサートされ、NANDフラッシュメモリ100から出力信号I/Oを読み出すための信号である。レディ・ビジー信号RBnは、NANDフラッシュメモリ100がレディ状態(メモリコントローラ200からの命令を受信出来る状態)であるか、それともビジー状態(メモリコントローラ200からの命令を受信出来ない状態)であるかを示す信号であり、“L”レベルがビジー状態を示す。入出力信号I/Oは、例えば8ビットの信号である。そして入出力信号I/Oは、NANDフラッシュメモリ100とメモリコントローラ200との間で送受信されるデータの実体であり、コマンドCMD、アドレスADD、並びに書込みデータ及び読出しデータ等のデータDATである。
【0032】
NANDコントローラ250aは、上述した各種信号のうち信号CEn及びRBnを、NANDフラッシュメモリ100a-1~100a-4の各々と個別に通信する。また、NANDコントローラ250aは、上述した各種信号のうち信号CLE、ALE、WEn、REn、I/Oの各々を、NANDフラッシュメモリ100a-1~100a-4に対して共通の信号線を用いて通信する。
【0033】
1.1.3 NANDフラッシュメモリ
次に、NANDフラッシュメモリ100の構成について、引き続き
図2を参照して説明する。なお、
図2では、NANDフラッシュメモリ100a-1の構成が一例として示されるが、その他のNANDフラッシュメモリ100a-2~100a-4、100b-1~100b-4、100c-1~100c-4、及び100d-1~100d-4についても、NANDフラッシュメモリ100a-1と同等の構成を有する。
【0034】
図2に示すように、NANDフラッシュメモリ100は、1又は複数のチップで構成され、メモリセルアレイ110、入出力回路120、ロジック制御回路130、アドレスレジスタ140、コマンドレジスタ150、ドライバ160、ロウデコーダ170、センスアンプ180、出力データ選定回路190、及びシーケンサ195を備える。
【0035】
メモリセルアレイ110は、各々がビット線及びワード線に関連付けられた複数の不揮発性のメモリセルトランジスタの集合である複数のブロックBLKを含む。ブロックBLKは、例えば、データの消去単位となる。
図2では一例として4つのブロックBLK0~BLK3が図示されている。
【0036】
入出力回路120は、メモリコントローラ200と信号I/Oを送受信する。入出力回路120は、信号I/O内のアドレスADD及びコマンドCMDをそれぞれアドレスレジスタ140及びコマンドレジスタ150に転送する。入出力回路120は、書込みデータ及び読出しデータDATをセンスアンプ180と送受信する。
【0037】
ロジック制御回路130は、メモリコントローラ200から信号CEn、CLE、ALE、WEn、及びREnを受信する。また、ロジック制御回路130は、信号RBnをメモリコントローラ200に転送してNANDフラッシュメモリ100の状態を外部に通知する。
【0038】
アドレスレジスタ140は、入出力回路120を介してメモリコントローラ200から受信したアドレスADDを保持する。このアドレスADDには、ブロックアドレスBAとページアドレスPAとが含まれる。コマンドレジスタ150は、入出力回路120を介してメモリコントローラ200から受信したコマンドCMDを保持する。
【0039】
ドライバ160は、アドレスレジスタ140内のページアドレスPAに基づいて、選択されたブロックBLKに対して、ロウデコーダ170を介して電圧を供給する。
【0040】
ロウデコーダ170は、アドレスレジスタ140内のブロックアドレスBAに基づいてブロックBLK0~BLK3のいずれかを選択し、更に選択したブロックBLKにおいてワード線を選択する。
【0041】
センスアンプ180は、データの書込み処理において、メモリコントローラ200から受信した書込みデータDATを、メモリセルアレイ110に転送する。また、センスアンプ180は、データの読出し処理において、メモリセルアレイ110内のメモリセルトランジスタの閾値電圧をセンスし、当該センス結果に基づく読出しデータDATをセンスアンプ180内の図示せぬラッチ回路を介してメモリコントローラ200に出力する。また、センスアンプ180は、読出しデータDATのうち、出力データ選定回路190によって選定された読出しデータDATの一部を選択的に出力し得る。なお、センスアンプ180は、図示せぬページバッファを備えていてもよく、当該ページバッファに読出しデータDATを一時的に記憶し、当該ページバッファを介して出力データ選定回路190との間の通信を行ってもよい。
【0042】
出力データ選定回路190は、センスアンプ180から読出しデータDATを受け、当該読出しデータDATのうち、メモリコントローラ200に出力すべきデータを選定する。具体的には、出力データ選定回路190は、部分データ抽出回路191と、高スループットECC回路192と、内部比較回路193と、を含む。
【0043】
部分データ抽出回路191は、読出しデータDATから、高スループットECC回路192で処理可能な最小単位のデータ(部分データ)を抽出する。
【0044】
高スループットECC回路192は、上述した高訂正能力ECC回路251によって符号化されたデータを復号する機能を有する。高スループットECC回路192は、当該復号処理において、高訂正能力ECC251よりも高いスループットで動作可能に構成されたECC回路である。なお、高スループットECC回路192の訂正能力は、高訂正能力ECC回路251よりも低くてもよい。例えば、高スループットECC回路192は、硬判定復号処理を実行可能な構成を含み、かつ軟判定復号処理を実行可能な構成は含まなくてもよい。このように、高スループットECC回路192は、高訂正能力ECC回路251よりも訂正に失敗する場合が許容される分、高速に動作し得る。
【0045】
内部比較回路193は、NANDフラッシュメモリ100の内部に設けられる比較回路であり、例えば、外部比較回路252と同等の機能を有し得る。内部比較回路193は、高スループットECC回路192によって誤り訂正された部分データが、所定の比較条件を満たすか否かを判定し、当該比較結果をセンスアンプ180に送出する。なお、内部比較回路193は、上述の内部比較処理に使用される比較条件を、メモリコントローラ200からの指示に応じて設定可能に構成される。
【0046】
シーケンサ195は、コマンドレジスタ150に保持されたコマンドCMDに基づき、NANDフラッシュメモリ100全体の動作を制御する。
【0047】
1.1.4 メモリセルアレイ
図3は、第1実施形態に係るメモリセルアレイの構成を説明するための回路図である。
図3では、メモリセルアレイ110に含まれる複数のブロックBLKのうち1つのブロックBLKが示される。
【0048】
図3に示すように、ブロックBLKは、例えば4つのストリングユニットSU(SU0~SU3)を含む。各ストリングユニットSUは、ビット線BL0~BLm(mは1以上の整数)にそれぞれ関連付けられた複数のNANDストリングNSを含む。各NANDストリングNSは、例えば8個のメモリセルトランジスタMT0~MT7、並びに選択トランジスタST1及びST2を含む。メモリセルトランジスタMTは、制御ゲート及び電荷蓄積層を含み、データに対応する電荷(電子)を不揮発に記憶する。選択トランジスタST1及びST2のそれぞれは、各種動作時におけるストリングユニットSUの選択に使用される。
【0049】
各NANDストリングNSにおいて、メモリセルトランジスタMT0~MT7は、直列接続される。選択トランジスタST1のドレインは、関連付けられたビット線BLに接続され、選択トランジスタST1のソースは、直列接続されたメモリセルトランジスタMT0~MT7の一端に接続される。選択トランジスタST2のドレインは、直列接続されたメモリセルトランジスタMT0~MT7の他端に接続される。選択トランジスタST2のソースは、ソース線SLに接続される。
【0050】
同一のブロックBLKにおいて、メモリセルトランジスタMT0~MT7の制御ゲートは、それぞれワード線WL0~WL7に共通接続される。ストリングユニットSU0~SU3内の選択トランジスタST1のゲートは、それぞれ選択ゲート線SGD0~SGD3に共通接続される。選択トランジスタST2のゲートは、選択ゲート線SGSに共通接続される。
【0051】
つまり、ブロックBLKは、同一のワード線WL0~WL7を共有する複数のストリングユニットSUの集合体である。ブロックBLKは、例えばデータの消去単位である。すなわち、同一ブロックBLK内に含まれるメモリセルトランジスタMTに保持されるデータは、一括して消去される。
【0052】
ストリングユニットSUは、各々が異なるビット線BLに接続され且つ同一のセレクトゲート線SGDに接続された、複数のNANDストリングNSの集合体である。ストリングユニットSUのうち、同一のワード線WLに共通接続されたメモリセルトランジスタMTの集合体を、セルユニットCUとも呼ぶ。例えば、セルユニットCU内の複数のメモリセルトランジスタMT内に記憶された同位ビットの集合が、「1ページ」として定義される。セルユニットCUは、メモリセルトランジスタMTが記憶するデータのビット数に応じて2ページデータ以上の記憶容量を有し得る。
【0053】
なお、以上で説明したメモリセルアレイ110の回路構成は、以上で説明した構成に限定されない。例えば、各NANDストリングNSが含むメモリセルトランジスタMT並びに選択トランジスタST1及びST2の個数は、それぞれ任意の個数に設計され得る。各ブロックBLKが含むストリングユニットSUの個数は、任意の個数に設計され得る。
【0054】
1.1.5 ページデータ
次に、セルユニットCU内に記憶される1ページ分のデータの詳細について
図4に示す模式図を参照して説明する。
【0055】
図4に示すように、1ページデータは、複数の部分データD(D1、D2、…)を含む。部分データDは、例えば、高スループットECC回路192及び高訂正能力ECC回路251における誤り検出及び誤り訂正処理が実行される最小単位である。複数の部分データDの各々には、同一のデータ長が割り当てられる。
【0056】
図4の例では、部分データD1は、例えば、3つのデータセットDs1、Ds2、及びDs3と、パリティp1と、を含む。部分データD2は、例えば、3つのデータセットDs4、Ds5、及びDs6と、パリティp2と、を含む。データセットDsは、互いに関連づけられたキーk及びバリューvの組を含む。
【0057】
キーkには、例えば、バリューvの属性を識別する値が記憶される。互いに対応づけられたキーk及びバリューvによって構成されるデータセットDsをメモリセルアレイ110内に記憶する手法は、KVS(key-value store)とも称される。
【0058】
全てのキーkには、同一のデータ長Lkが割り当てられ、全てのバリューvには、同一のデータ長Lvが割り当てられる。すなわち、
図4の例では、隣り合う2つのキーkの間のデータ長Lsは、Ls=Lk+Lvとなる。データ長Lkは「キー長Lk」とも称され、データ長Lsは、「ストライド長Ls」とも称される。
【0059】
パリティpは、例えば、メモリコントローラ200によって生成され、チェックサムやCRC(Cyclic redundancy check)符号等の誤り検出符号、又は硬判定復号符号や軟判定復号符号等の誤り訂正符号を含む。
【0060】
1.2 動作
次に、第1実施形態に係るメモリシステムの動作について説明する。
【0061】
1.2.1 スキャン処理
次に、第1実施形態に係るメモリシステムにおけるスキャン処理について、
図5に示すフローチャートを参照して説明する。
【0062】
図5に示すように、ステップST31において、メモリコントローラ200は、スキャンコマンドを発行し、NANDフラッシュメモリ100に送出する。スキャンコマンドには、キー長Lk、ストライド長Ls、真キーk0、厳密条件、及びスキャン範囲が含まれる。
【0063】
より具体的には、例えば、まず、メモリコントローラ200は、コマンドXXh及び数サイクルにわたるデータDATを送出する。コマンドXXhは、スキャン処理の実行を指示するコマンドである。当該コマンドXXhに後続するデータDATには、キー長Lk、ストライド長Ls、真キーk0、及び厳密条件が含まれ得る。厳密条件には、例えば、比較対象が真キーk0と完全一致することを示す情報が含まれ得る。また、厳密条件には、例えば、真キーk0との完全一致比較に限らず、真キーk0の部分との完全一致比較、真キーk0との不等号比較、及びこれらの組み合わせを含む。
【0064】
続いて、メモリコントローラ200は、コマンド00h、数サイクルにわたるアドレスADD、及びコマンド30hを送出する。コマンド00hは、読出し処理の実行を指示するコマンドであり、コマンド00hに後続するアドレスADDには、スキャン範囲が含まれ得る。コマンド30hは、直前に送信されたアドレスADDに基づいてデータの読出し処理を実行させるためのコマンドである。以上のようなシーケンスを含むスキャンコマンドによって、NANDフラッシュメモリ100は、スキャン処理の実行を開始する。
【0065】
まず、スキャンコマンドが発行された後の、NANDフラッシュメモリ100の処理(ステップST32~ST39)について説明する。
【0066】
ステップST32において、NANDフラッシュメモリ100は、スキャン範囲内のページデータの読出し処理を実行する。センスアンプ180は、メモリセルアレイ110からページデータを読み出し、センスアンプ180内のラッチ回路に記憶する。
【0067】
ステップST33において、部分データ抽出回路191は、ステップST32において読み出されたページデータから、判定対象キーkを含む部分データDを抽出する。
【0068】
ステップST34において、高スループットECC回路192は、ステップST33において抽出された部分データD内のパリティpに基づき、誤り検出及び誤り訂正処理を実行する。部分データDの訂正に成功した場合(ステップST34;yes)、NANDフラッシュメモリ100の処理はステップST35に進み、訂正に失敗した場合(ステップST34;no)、NANDフラッシュメモリ100の処理はステップST35を省略し、ステップST36に進む。
【0069】
ステップST35において、内部比較回路193は、スキャンコマンド内に含まれる厳密条件を満たす訂正後の判定対象キーk’が部分データD内にあるか否かを判定する。具体的には、内部比較回路193は、キー長Lk及びストライド長Lsに基づいて、部分データD内から訂正後の判定対象キーk’を全て取り出し、例えば、当該誤り訂正後の判定対象キーk’が真キーk0と完全に一致するか否かを判定する。厳密条件を満たす判定対象キーk’がある場合(ステップST35;yes)、NANDフラッシュメモリ100の処理はステップST36に進み、判定対象キーk’が厳密条件を満たさない場合(ステップST35;no)、NANDフラッシュメモリ100の処理はステップST36を省略し、ステップST37に進む。なお、ステップST35では、部分データD内の厳密条件を満たす判定対象キーk’に対応するデータセットDsは全て、後述するステップST36のおける出力データとして選定される。
【0070】
以上のステップST33~ST35によって、出力データ選定回路190による1つの部分データDに対する出力データの選定(スキャン)が終了する。
【0071】
ステップST36において、NANDフラッシュメモリ100は、ステップST32においてラッチ回路内に記憶したページデータのうち、出力対象となる読出しデータをメモリコントローラ200に出力する。
【0072】
具体的には、ステップST34において誤り検出及び誤り訂正処理に失敗した場合(ステップST34;no)、NANDフラッシュメモリ100は、当該誤り検出及び誤り訂正処理に失敗した部分データD、及び当該誤り検出及び誤り訂正処理に基づく誤り情報をメモリコントローラ200に送出する。誤り情報には、同時に送出された部分データDに誤りがあるか否か、を示す情報が含まれる。
【0073】
また、ステップST35において厳密条件を満たすと判定された場合(ステップST35;yes)、NANDフラッシュメモリ100は、当該厳密条件を満たす訂正後の判定対象キーk’を含む全てのデータセットDsを選択的にメモリコントローラ200に送出する。
【0074】
ステップST37において、NANDフラッシュメモリ100は、ステップST32において読み出されたページデータ内の全ての部分データDがスキャン済みであるか否かを判定する。スキャン済みでない部分データDが存在する場合(ステップST37;no)、NANDフラッシュメモリ100の処理はステップST33に戻る。これにより、ページデータ内の全ての部分データDに対するスキャンが終了するまで、ステップST33~ST36が繰り返される。全ての部分データDがスキャン済みの場合(ステップST37;yes)、NANDフラッシュメモリ100の処理はステップST38に進む。
【0075】
なお、1つのページデータ内に、厳密条件を満たすキーkを含むデータセットDsが複数存在する場合、NANDフラッシュメモリ100は、当該複数のデータセットDsを、ステップST36において個別にメモリコントローラ200に出力してもよいし、まとめて出力してもよい。
【0076】
ステップST38において、NANDフラッシュメモリ100は、スキャンコマンド内で指定されたスキャン範囲内の全てのページがスキャン済みであるか否かを判定する。スキャン済みでないページが存在する場合(ステップST38;no)、NANDフラッシュメモリ100の処理はステップST32に戻る。これにより、スキャン範囲内の全てのページデータに対するスキャンが終了するまで、ステップST32~ST37が繰り返される。全てのページデータがスキャン済みの場合(ステップST38;yes)、NANDフラッシュメモリ100の処理はステップST39に進む。
【0077】
ステップST39において、NANDフラッシュメモリ100は、スキャン範囲内の全てのページデータについてスキャン処理が完了した旨を通知する完了応答をメモリコントローラ200に送出する。これにより、NANDフラッシュメモリ100におけるスキャン処理が終了する。
【0078】
次に、スキャンコマンドが発行された後の、メモリコントローラ200の処理(ステップST40~ST44)について説明する。
【0079】
ステップST36において部分データD又はデータセットDsを受けると、メモリコントローラ200の処理は、ステップST40に進む。
【0080】
ステップST40において、メモリコントローラ200は、ステップST36において誤り情報を受信したか否かに基づき、NANDフラッシュメモリ100から受信した読出しデータに誤りがあるか否かを判定する。誤りがある場合(ステップST40;yes)、メモリコントローラ200の処理はステップST41に進み、誤りが無い場合(ステップST40;no)、メモリコントローラ200の処理はステップST43に進む。
【0081】
ステップST41において、高訂正能力ECC回路251は、ステップST36において受信した部分データD内のパリティpに基づき、誤り検出及び誤り訂正処理を実行する。部分データDの訂正に成功した場合(ステップST41;yes)、メモリコントローラ200の処理はステップST42に進み、訂正に失敗した場合(ステップST41;no)、メモリコントローラ200は、ECCフェイルと判定してステップST44に進む。なお、ECCフェイルの場合、ホスト機器300にECCフェイルを通知する等してもよい。
【0082】
なお、上述の通り、高訂正能力ECC回路251による誤り検出及び誤り訂正処理は、軟判定復号処理等の、より誤り訂正能力の高い方式に基づく処理を含む。このため、処理がステップST42に進む段階において、メモリコントローラ200は、誤りを含み得る部分データDと、当該部分データDの誤りが完全に訂正された部分データ^Dと、を記憶する。
【0083】
ステップST42において、メモリコントローラ200内の外部比較回路252は、誤り訂正後の判定対象キーk”が、真キーk0に対して厳密条件を満たすか否かを判定する。具体的には、外部比較回路252は、真キーk0と、誤り訂正後の判定対象キーk”とが完全に一致するか否かを判定する。厳密条件を満たす場合(ステップST42;yes)、メモリコントローラ200の処理はステップST43に進み、厳密条件を満たさない場合(ステップST42;no)、メモリコントローラ200の処理はステップST43を省略し、ステップST44に進む。
【0084】
ステップST43において、メモリコントローラ200は、ステップST42において厳密条件を満たすと判定された判定対象キーk”を含むデータセットDs、又はステップST35において厳密条件を満たすと判定された判定対象キーk’を含むデータセットDsを、ホスト機器300に出力する。
【0085】
ステップST44において、メモリコントローラ200は、NANDフラッシュメモリ100からスキャン処理の応答完了を受信済みであるか否かを判定する。応答完了を受信済みでない場合(ステップST44;no)、処理はステップST40に戻る。これにより、メモリコントローラ200は、応答完了を受信するまで、ステップST40~ST43の処理を繰り返す。応答完了を受信済みである場合(ステップST44;yes)、メモリコントローラ200は、スキャン範囲内において真キーk0に一致するキーkを含む全てのデータセットDsをホスト機器300に出力したと判定し、スキャン処理を終了する。
【0086】
1.3 本実施形態に係る効果
第1実施形態によれば、NANDフラッシュメモリ100は、メモリコントローラ200からスキャンコマンドを受けると、ページデータを読み出す。部分データ抽出回路191は、当該ページデータから判定対象キーkを含む部分データDを抽出する。高スループットECC回路192は、抽出された部分データDを誤り訂正する。内部比較回路193は、誤り訂正された判定対象キーk’が真キーk0に対して厳密条件を満たすか否かを判定する。そして、NANDフラッシュメモリ100は、厳密条件を満たす判定対象キーk’を含むデータセットDsと、誤り訂正処理に失敗した判定対象キーkを含む部分データDと、をメモリコントローラ200に出力する。これにより、メモリコントローラ200がホスト機器300に最終的に出力すべきデータを選定するための処理の一部分を、NANDフラッシュメモリ100が担うことができる。具体的には、NANDフラッシュメモリ100は、誤り訂正処理に成功した部分データDのうち、厳密条件を満たす判定対象キーk’を含まない部分データDをメモリコントローラ200への出力対象から除外することができる。このため、メモリセルアレイ110からメモリコントローラ200に出力すべきデータを、当該選定処理によって絞り込むことができる。したがって、NANDフラッシュメモリ100とメモリコントローラ200との間のデータ通信量の増加を抑制することができ、ひいてはNANDフラッシュメモリ100とメモリコントローラ200との間のデータ通信に要する消費電力の増加を抑制できる。
【0087】
具体的には、高スループットECC回路192は、メモリコントローラ200内の高訂正能力ECC回路251ほど高い訂正能力を有さないものの、高訂正能力ECC回路251よりも高いスループットを有する。これにより、NANDフラッシュメモリ100内でのスキャン処理に要する時間的負荷を増加させることなく誤り訂正処理を実行することができる。
【0088】
また、内部比較回路193は、判定対象キーk’が真キーk0に対して、完全に一致するか否かを判定する。これにより、判定対象キーk’に誤りが含まれないことを前提に、真キーk0と一致しない判定対象キーk’を出力対象から外しつつ、一致する判定対象キーk’を出力データとして選定することができる。
【0089】
また、メモリコントローラ200は、NANDフラッシュメモリ100に、キー長Lk、ストライド長Ls、真キーk0、厳密条件、及びスキャン範囲を含むコマンドセットを送出する。これにより、部分データ抽出回路191は、ページデータ内における判定対象キーkのアドレスを正確に把握することができる。また、内部比較回路193は、メモリコントローラ200から指定された厳密条件に応じて、メモリコントローラ200に出力する部分データDを判定することができる。
【0090】
また、メモリコントローラ200内の高訂正能力ECC回路251は、NANDフラッシュメモリ100から出力された厳密条件を満たす部分データDに対して、高スループットECC回路192よりも訂正能力の高い誤り訂正処理を実行する。これにより、外部比較回路252は、判定対象キーk”が真キーk0と完全に一致するか否かを判定することができ、最終的にホスト機器300に出力すべきデータを決定することができる。
【0091】
1.4 第1実施形態の変形例
第1実施形態は、上述の例に限られず、種々の変形が適用可能である。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
【0092】
1.4.1 第1実施形態の第1変形例
例えば、上述した第1実施形態では、高スループットECC回路192が誤り訂正処理を実行する場合について説明したが、これに限られない。例えば、高スループットECC回路192は、誤り訂正処理は実行せずに、誤り検出処理を実行することによって、内部比較回路193による内部比較処理を実行する判定対象キーkを選定してもよい。
【0093】
図6は、第1実施形態の第1変形例に係るメモリシステムにおけるスキャン処理を説明するためのフローチャートである。
図6は、第1実施形態における
図5に対応し、
図5に示されたステップST34及びST35に代えて、ステップST34A及びST35Aが実行される場合が示される。
【0094】
図6に示すように、ステップST31~ST33は、第1実施形態の場合と同等であるため、説明を省略する。
【0095】
ステップST34Aにおいて、高スループットECC回路192は、部分データDに対して誤り訂正処理を実行することなく誤り検出処理を実行し、当該部分データDから誤りが検出されたか否かを判定する。誤り検出処理は、例えば、CRCやチェックサム計算を含む。判定の結果、部分データDから誤りが検出されなかった場合(ステップST34A;no)、処理はステップST35Aに進み、誤りが検出された場合(ステップST34A;yes)、処理はステップST35Aを省略してステップST36に進む。
【0096】
ステップST35Aにおいて、内部比較回路193は、厳密条件を満たす判定対象キーkが部分データD内にあるか否かを判定する。判定の結果、厳密条件を満たす判定対象キーkが部分データD内にある場合(ステップST35A;yes)、処理はステップST36に進み、部分データD内の全ての判定対象キーkが厳密条件を満たさない場合(ステップST35A;no)、処理はステップST37に進む。なお、ステップST35Aでは、部分データD内の厳密条件を満たす判定対象キーk’に対応するデータセットDsは全て、後述するステップST36のおける出力データとして選定される。
【0097】
ステップST36以降の処理については、第1実施形態と同等であるため、説明を省略する。
【0098】
以上のように動作することにより、NANDフラッシュメモリ100内でのスキャン処理を高速化することができる。
【0099】
1.4.2 第1実施形態の第2変形例
上述した第1実施形態では、メモリコントローラ200内の外部比較回路252によってホスト機器300に最終的に出力されるデータを判定する場合について説明したが、これに限られない。
【0100】
図7は、第1実施形態の第2変形例に係るメモリシステムにおけるスキャン処理を説明するためのフローチャートである。
図7は、第1実施形態における
図5に対応し、
図5に示されたステップST40~ST42が省略されると共に、ステップST43に代えて、ステップST43Bが実行される場合が示される。
【0101】
図7に示すように、ステップST31~ST39は、第1実施形態の場合と同等であるため、説明を省略する。
【0102】
ステップST43Bにおいて、メモリコントローラ200は、NANDフラッシュメモリ100から部分データD及びデータセットDsを受けると、当該部分データDに対して誤り訂正処理や厳密条件判定処理を実行することなく、当該部分データD及びデータセットDsをホスト機器300に出力する。
【0103】
以上のように動作することにより、メモリコントローラ200は、自らがホスト機器300に出力するデータを選定することなく、誤り訂正処理に失敗した全ての部分データD及び厳密条件を満たす全てのデータセットDsをホスト機器300に出力する。これにより、ホスト機器300が内部で誤り訂正処理及び厳密条件判定処理を実行可能に構成される場合においても、NANDフラッシュメモリ100とメモリコントローラ200との間の通信量の増加を抑制できる。
【0104】
2. 第2実施形態
次に、第2実施形態に係るメモリシステムについて説明する。第1実施形態では、高訂正能力ECC回路251と高スループットECC回路192との間で誤り検出及び誤り訂正処理されるデータサイズが一致する場合について説明した。第2実施形態では、高訂正能力ECC回路251と高スループットECC回路192との間で誤り検出及び誤り訂正処理されるデータサイズが異なる。以下では、第1実施形態と同等の構成及び動作についてはその説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
【0105】
2.1 ページデータ
図8は、第2実施形態に係るメモリセルアレイ内に記憶されるページデータを説明するための模式図であり、第1実施形態における
図4に対応する。
【0106】
図8に示すように、部分データD1は部分データD1’及びバリューv1の組と、部分データD2’及びバリューv2の組と、部分データD3’及びバリューv3の組と、を含む。部分データD’は、例えば、高スループットECC回路192における誤り検出及び誤り訂正処理が実行される最小単位である。具体的には、部分データD1’~D3’はそれぞれ、キーk1及びパリティpk1の組、キーk2及びパリティpk2の組、キーk3及びパリティpk3の組を含む。すなわち、高スループットECC回路192は、バリューvについては誤り検出及び誤り訂正処理をスキップし、キーkについては対応するパリティpkによって誤り検出及び誤り訂正処理を行うことができる。なお、パリティpkは、例えば、パリティpと同様、メモリコントローラ200によって生成されてもよいし、ホスト機器300等のメモリコントローラ200より上位の機器内、又はNANDフラッシュメモリ100等のメモリコントローラ200より下位の機器内で生成されてもよい。
【0107】
以上のように構成されることにより、スキャン処理において、高スループットECC回路192は、部分データDより小さいデータサイズの部分データD’に対して選択的に誤り検出及び誤り訂正処理を実行することができる。
【0108】
2.2 動作
次に、第2実施形態に係るメモリシステムにおける動作について説明する。
【0109】
2.2.1 パトロール処理
第2実施形態では、通常のパトロール処理に加え、キーkを対象とするパトロール処理が実行される。パトロール処理は、NANDフラッシュメモリ100内に記憶されたデータを正しく読み出すことができるか否かをメモリコントローラ200が定期的に確認する処理である。パトロール処理は、例えば、メモリコントローラ200がNANDフラッシュメモリ100に対して指示する読出し処理と、当該読出し処理によってデータが正しく読み出せない場合にデータの書き直しを指示する書込み処理と、を含む。パトロール処理は、例えば、ホスト機器300からの指示を受けることなく、メモリコントローラ200によって定期的に実行され得る。本実施形態では、メモリシステム1は、キーkを対象とするパトロール処理において、キーkに含まれる誤りビット数が所定の閾値未満となるように維持する。以下の説明では、説明の便宜上、キーkに対応するパトロール処理を、単に「パトロール処理」と称する。
【0110】
第2実施形態に係るメモリシステムにおけるパトロール処理について、
図9に示すフローチャートを参照して説明する。
【0111】
図9に示すように、ステップST11において、メモリコントローラ200は、読出しコマンドを発行し、NANDフラッシュメモリ100に送出する。読出しコマンドには、データを読み出す読出し元のアドレス情報が含まれる。なお、上述の通り、パトロール処理は、メモリコントローラ200によって定期的に実行されるため、メモリコントローラ200は、ホスト機器300からの指示に依らず、読出しコマンドを発行する。
【0112】
ステップST12において、NANDフラッシュメモリ100は、読出しコマンドを受けると、読出し処理を実行する。NANDフラッシュメモリ100は、読出しコマンド内のアドレス情報に対応する読出しデータをメモリセルアレイ110から読み出し、当該読出しデータをメモリコントローラ200に出力する。
【0113】
ステップST13において、メモリコントローラ200内の高訂正能力ECC回路251は、読出しデータの誤り検出及び誤り訂正処理を実行する。誤り訂正処理に成功した場合(ステップST13;yes)、処理はステップST14に進み、失敗した場合(ステップST13;no)、メモリコントローラ200は、ECCフェイルと判定して、当該情報をホスト機器300に通知し、パトロール処理を終了する。
【0114】
なお、上述の通り、高訂正能力ECC回路251による誤り検出及び誤り訂正処理は、軟判定復号処理等の、硬判定復号処理より誤り訂正能力の高い方式に基づく処理を含む。このため、処理がステップST14に進む段階において、メモリコントローラ200は、誤りを含み得る読出しデータと、当該読出しデータの誤りが完全に訂正された読出しデータと、を記憶する。
【0115】
ステップST14において、メモリコントローラ200は、訂正前の読出しデータから外部比較回路252による外部比較処理の対象となるキー(判定対象キー)kを抽出する。また、メモリコントローラ200は、訂正後の読出しデータからも同様に、当該判定対象キーkに対応する判定対象キーk”を抽出する。
【0116】
ステップST15において、メモリコントローラ200内の外部比較回路252は、訂正後の判定対象キーk”に対する訂正前の判定対象キーkの誤りビット数が閾値以上であるか否かを判定する。誤りビット数が閾値未満である場合(ステップST15;yes)、パトロール処理は終了し、誤りビット数が閾値以上である場合(ステップST15;no)、処理はステップST16に進む。
【0117】
なお、所定の閾値は、例えば、高スループットECC回路192で誤り訂正可能なビット数の上限値以下の値であり得る。
【0118】
ステップST16において、メモリコントローラ200は、書込みコマンドを発行し、NANDフラッシュメモリ100に送出する。書込みコマンドには、ステップST13において訂正された訂正後の読出しデータ、及び書込み先のアドレス情報が含まれる。
【0119】
ステップST17において、NANDフラッシュメモリ100は、書込みコマンドを受けると、書込み処理を実行する。なお、書込みコマンドにおいて指定される書込み先のアドレスは、ステップST11においてデータの読出し元として指定されたアドレスと同一でもよいし、異なっていてもよい。ただし、読出し元のアドレスと書込み先のアドレスとが同一の場合、当該メモリ領域を含むブロックBLKに記憶されたデータが消去された後に、書込み処理が実行される。
【0120】
以上のように動作することにより、読出しデータ内の判定対象キーkが高スループットECC回路192で訂正できない程度に誤りを多く含む場合、当該読出しデータが、高訂正能力ECC回路251で誤り訂正されたデータによってNANDフラッシュメモリ100内に書き直される。これにより、NANDフラッシュメモリ100内のキーkが、高スループットECC回路192で訂正可能な状態を維持することができる。
【0121】
2.2.2 スキャン処理
図10は、第2実施形態に係るメモリシステムにおけるスキャン処理を説明するためのフローチャートである。
図10は、第1実施形態における
図5に対応し、
図5に示されたステップST33~ST37に代えて、ステップST33C~ST37Cが実行され、ステップST40が省略される場合が示される。
【0122】
図10に示すように、ステップST31及びST32は、第1実施形態の場合と同等であるため、説明を省略する。
【0123】
ステップST33Cにおいて、部分データ抽出回路191は、ステップST32において読み出されたページデータから部分データDを抽出し、当該部分データDから判定対象キーkを含む部分データD’を抽出する。例えば、部分データ抽出回路191は、キー長Lk及びストライド長Lsに基づいて部分データD’を抽出し、部分データD’内のキーk(例えば、
図10における部分データD’1内のキーk1)を判定対象とみなす。
【0124】
ステップST34Cにおいて、ステップST33Cにおいて抽出された部分データD’内のパリティpkに基づき、誤り検出及び誤り訂正処理を実行する。部分データD’の訂正に成功した場合(ステップST34C;yes)、NANDフラッシュメモリ100の処理はステップST35に進み、訂正に失敗した場合(ステップST34C;no)、NANDフラッシュメモリ100の処理はステップST35を省略し、ステップST36に進む。
【0125】
ステップST35Cにおいて、内部比較回路193は、厳密条件を満たす訂正後の判定対象キーk’が部分データD内に少なくとも1つあるか否かを判定する。厳密条件を満たす判定対象キーk’が部分データD内に少なくとも1つある場合(ステップST35C;yes)、NANDフラッシュメモリ100の処理はステップST36Cに進み、部分データD内の全ての判定対象キーk’が厳密条件を満たさない場合(ステップST35C;no)、NANDフラッシュメモリ100の処理はステップST37Cに進む。
【0126】
ステップST36Cにおいて、NANDフラッシュメモリ100は、出力対象となる読出しデータをメモリコントローラ200に出力する。
【0127】
具体的には、ステップST34Cにおいて誤り検出及び誤り訂正処理に失敗した場合(ステップST34C;no)、NANDフラッシュメモリ100は、当該誤り訂正処理に失敗した部分データD’を含む部分データDをメモリコントローラ200に送出する。
【0128】
また、ステップST35Cにおいて厳密条件を満たすと判定された判定対象キーk’が部分データD内に少なくとも1つある場合(ステップST35C;yes)、NANDフラッシュメモリ100は、当該厳密条件を満たす訂正後の判定対象キーk’を含む部分データDをメモリコントローラ200に送出する。
【0129】
ステップST37Cにおいて、NANDフラッシュメモリ100は、ステップST32において読み出されたページデータ内の全ての部分データD’がスキャン済みであるか否かを判定する。スキャン済みでない部分データD’が存在する場合(ステップST37C;no)、NANDフラッシュメモリ100の処理はステップST33に戻る。これにより、ページデータ内の全ての部分データD’に対するスキャンが終了するまで、ステップST33C~ST36Cが繰り返される。全ての部分データD’がスキャン済みの場合(ステップST37C;yes)、NANDフラッシュメモリ100の処理はステップST38に進む。
【0130】
ステップST38以降の処理については、ステップST40が実施されることなくステップST41が実施される点を除いて第1実施形態と同等であるため、説明を省略する。
【0131】
2.3 本実施形態に係る効果
第2実施形態によれば、メモリコントローラ200は、ページデータ内に、高訂正能力ECC251に適用されるパリティpと、高スループットECC回路192に適用されるパリティpkと、を付与する。1つのパリティpkを含む部分データD’のデータサイズは、1つのパリティpを含む部分データDのデータサイズより小さい。これにより、高訂正能力ECC251による誤り検出及び誤り訂正処理に要する負荷を低減することができる。このため、NANDフラッシュメモリ100によるスキャン処理を高速化することができる。
【0132】
また、パトロール処理を実行することにより、ページデータ内に高スループットECC回路192で誤り訂正できない程度に誤りビットが存在する可能性がある場合には、メモリセルアレイ110に正しいページデータを書き込むことができる。このため、スキャン処理の際に、高スループットECC回路192が誤り訂正処理に成功できる可能性を高めることができる。
【0133】
2.4 第2実施形態の変形例
第2実施形態は、上述の例に限られず、種々の変形が適用可能である。以下の説明では、第2実施形態と同等の構成及び動作については説明を省略し、第2実施形態と異なる構成及び動作について主に説明する。
【0134】
2.4.1 第2実施形態の第1変形例
例えば、上述した第2実施形態では、パリティpkが、キーkの全データに対して割り当てられる場合について説明したが、これに限られない。例えば、パリティpkは、キーkの一部のデータに対して割り当てられてもよい。
【0135】
図11は、第2実施形態の第1変形例に係るメモリセルアレイ内に記憶されるページデータを説明するための模式図であり、第2実施形態における
図8に対応する。
【0136】
図11に示すように、部分データD1’~D3’はそれぞれ、キーk1の一部及びパリティpk1の組、キーk2の一部及びパリティpk2の組、キーk3の一部及びパリティpk3の組を含む。すなわち、高スループットECC回路192は、バリューv及びキーkのうちパリティpkが割り当てられない部分については誤り検出及び誤り訂正処理をスキップし、キーkのうちパリティpkが割り当てられている部分については対応する誤り検出及び誤り訂正処理を行うことができる。
【0137】
図12は、第2実施形態の第1変形例に係るメモリシステムにおけるスキャン処理を説明するためのフローチャートである。
図12は、第2実施形態における
図10に対応し、
図10に示されたステップST35Cに代えて、ステップST35C’が実行される場合が示される。
【0138】
図12に示すように、ステップST35C’において、内部比較回路193は、厳密条件を満たす訂正後の判定対象キーk’の部分(すなわち、ステップST34Cにおいて誤り訂正処理が実行された部分)が、部分データD内に少なくとも1つあるか否かを判定する。具体的には、内部比較回路193は、真キーk0の部分と、誤り訂正後の判定対象キーk’の部分とが完全に一致するか否かを判定する。厳密条件を満たす訂正後の判定対象キーk’の部分が部分データD内に少なくとも1つある場合(ステップST35C’;yes)、NANDフラッシュメモリ100の処理はステップST36Cに進み、部分データD内における全ての訂正後の判定対象キーk’の部分が厳密条件を満たさない場合(ステップST35C’;no)、NANDフラッシュメモリ100の処理はステップST36Cを省略し、ステップST37Cに進む。
【0139】
なお、上述のステップST35C’における内部比較回路193の処理は、言い換えれば、真キーk0の全部と誤り訂正後の判定対象キーk’の全部とが部分的に一致するか否かを判定する処理ともみなすことができる。以上のように動作することにより、誤り訂正処理の範囲を適切に絞り込むことにより、高スループットECC回路192のスループットを更に向上させることができ、スキャン処理を高速に実行することができる。
【0140】
2.4.2 第2実施形態の第2変形例
上述した第2実施形態では、パトロール処理において、メモリコントローラ200は、高スループットECC回路192で誤り訂正されることなく出力された判定対象キーkを、高訂正能力ECC回路251で誤り訂正された判定対象キーk”と比較する場合について説明したが、これに限られない。例えば、パトロール処理において、メモリコントローラ200は、高スループットECC回路192で誤り訂正が試みられた判定対象キーkを、高訂正能力ECC回路251で誤り訂正された判定対象キーk”と比較してもよい。
【0141】
図13は、第2実施形態の第2変形例に係るメモリシステムにおけるパトロール処理を説明するためのフローチャートである。
図13は、第2実施形態における
図9に対応し、ステップST12_1、ST12_2、ST12_3、及びST13_1が更に実行されると共に、
図9に示されたステップST15に代えて、ステップST15Dが実行される場合が示される。
【0142】
図13に示すように、ステップST12において、NANDフラッシュメモリ100は、読出しコマンドを受けると、読出し処理を実行する。NANDフラッシュメモリ100は、読出しコマンド内のアドレス情報に対応する読出しデータをメモリセルアレイ110から読み出す。
【0143】
ステップST12_1において、NANDフラッシュメモリ100内の高スループットECC回路192は、読出しデータの誤り検出及び誤り訂正処理を実行する。誤り訂正処理に失敗した場合(ステップST12_1;no)、NANDフラッシュメモリ100の処理はステップST12_2に進み、誤り訂正処理に成功した場合(ステップST12_1;yes)、NANDフラッシュメモリ100の処理はステップST12_3に進む。
【0144】
ステップST12_2において、NANDフラッシュメモリ100は、ステップST12_1において誤り訂正処理に失敗した読出しデータを、メモリコントローラ200に出力する。
【0145】
ステップST12_3において、NANDフラッシュメモリ100は、ステップST12_1において誤り訂正処理に成功した読出しデータを、メモリコントローラ200に出力する。
【0146】
ステップST13において、メモリコントローラ200内の高訂正能力ECC回路251は、読出しデータの誤り検出及び誤り訂正処理を実行する。誤り訂正処理に成功した場合(ステップST13;yes)、処理はステップST13_1に進み、失敗した場合(ステップST13;no)、メモリコントローラ200は、ECCフェイルと判定して、当該情報をホスト機器300に通知し、パトロール処理を終了する。
【0147】
ステップST13_1において、メモリコントローラ200は、NANDフラッシュメモリ100から受信した読出しデータについて、NANDフラッシュメモリ100の高スループットECC回路192による誤り訂正処理が成功したか否かを判定する。NANDフラッシュメモリ100による誤り訂正処理が成功していた場合(ステップST13_1;yes)、メモリコントローラ200の処理はステップST14に進み、失敗していた場合(ステップST13_1;no)、メモリコントローラ200の処理はステップST16に進む。
【0148】
メモリコントローラ200の処理のうち、ステップST14は、第2実施形態と同等であるため、説明を省略する。
【0149】
ステップST15Dにおいて、メモリコントローラ200は、高訂正能力ECC回路291による訂正前の判定対象キーkと、訂正後の判定対象キーk”とが異なるか否かを判定する。両者が一致する場合(ステップST15D;yes)、パトロール処理は終了し、異なる場合(ステップST15D;no)、処理はステップST16に進む。
【0150】
以降のステップST16及びST17は、第2実施形態と同等であるため、説明を省略する。
【0151】
以上のように動作することにより、パトロール処理によって、高スループットECC回路192によって誤り訂正できない程度に誤りビット数が増加した場合には、メモリセルアレイ110に正しいページデータを書き込むことができる。このため、スキャン処理の際に、高スループットECC回路192が誤り訂正処理に成功できる可能性を高めることができる。
【0152】
3. 第3実施形態
次に、第3実施形態に係るメモリシステムについて説明する。第1実施形態及び第2実施形態では、キーk及び当該キーkに対応するバリューvの組が同一のページデータ内に記憶される場合について説明した。第3実施形態では、キーkと当該キーkに対応するバリューvとが互いに異なるページデータ内に記憶される点において、第1実施形態及び第2実施形態と異なる。以下では、第1実施形態と同等の構成及び動作についてはその説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
【0153】
3.1 ページデータ
図14は、第3実施形態に係るメモリセルアレイ内に記憶されるページデータを説明するための模式図であり、第1実施形態における
図4に対応する。
【0154】
図14に示すように、1ページデータは、複数の部分データD(D1、D2、…)を含む。
図14の例では、部分データD1は、例えば、11個のキーk1~k11と、パリティp1と、を含む。部分データD2は、例えば、11個のキーk12~k22と、パリティp2と、を含む。
【0155】
キーkに対応づけられるバリューvは、
図14に図示しない他のページデータに別途記憶される。すなわち、第3実施形態では、1つのデータセットDs内のキーkとバリューvとは、互いに異なる2つのページデータ内にそれぞれ分けて記憶される。この場合、ストライド長Lsは、キー長Lkと一致する。
【0156】
なお、キーkとバリューvとの対応関係は、メモリコントローラ200内で予め管理される。
【0157】
3.2 スキャン処理
次に、第3実施形態に係るメモリシステムにおけるスキャン処理について、
図15に示すフローチャートを用いて説明する。
図15は、第1実施形態における
図7に対応し、ステップST42_1及びST42_2が実行される。なお、
図15では、説明の便宜上、スキャンコマンドの発行の後のNANDフラッシュメモリ100の処理の一部(ステップST32~ST35及びST37~ST39)、並びにメモリコントローラ200の処理の一部(ステップST44)の図示が省略されている。
【0158】
図15に示すように、ステップST31におけるスキャンコマンドでは、上述の通り、キー長Lkと同一の値のストライド長Lsが含まれる。これにより、NANDフラッシュメモリ100は、スキャン範囲におけるページデータ内に、複数のキーkが集中的に記憶されていることを認識することができる。
【0159】
ステップST32~ST35については、第1実施形態と同等であるため、説明を省略する。
【0160】
ステップST36において、NANDフラッシュメモリ100は、ステップST32において読み出されたページデータのうち、ステップST34において誤り検出及び誤り訂正処理に失敗した部分データD及び誤り情報、又はステップST35において厳密条件を満たすと判定された訂正後の判定対象キーk’(出力対象キーk)を選択的にメモリコントローラ200に送出する。また、NANDフラッシュメモリ100は、出力対象キーを送出する場合、当該出力対象キーkのアドレス情報についても、メモリコントローラ200に送出する。なお、出力対象キーkが以降の処理に不要であれば(すなわち、以降の処理でバリューvのみが得られればよければ)、出力対象キーk’については送出せず、アドレス情報のみ送出してもよい。
【0161】
ステップST40において、メモリコントローラ200は、ステップST36でNANDフラッシュメモリ100から出力されたデータに誤りがあるか否かを判定する。誤りがあると判定された場合(すなわち、ステップST45において誤り検出及び誤り訂正処理に失敗した部分データDが出力された場合)、メモリコントローラ200の処理はステップST41に進む。誤りが無いと判定された場合(すなわち、ステップST45において厳密条件を満たす出力対象キーkのデータ及びアドレスが出力された場合)、メモリコントローラ200の処理はステップST42_1に進む。
【0162】
ステップST41において、高訂正能力ECC回路251は、誤り検出及び誤り訂正処理を実行する。部分データDの訂正に成功した場合(ステップST41;yes)、メモリコントローラ200の処理はステップST42に進み、訂正に失敗した場合(ステップST41;no)、メモリコントローラ200は、ECCフェイルと判定してステップST42、ST42_1、及びST43を省略する。なお、ECCフェイルの場合、ホスト機器300にECCフェイルを通知する等してもよい。
【0163】
ステップST42において、メモリコントローラ200内の外部比較回路252は、誤り訂正後の判定対象キーk”が、真キーk0に対して厳密条件を満たすか否かを判定する。厳密条件を満たす場合(ステップST42;yes)、メモリコントローラ200の処理はステップST42_1に進み、厳密条件を満たさない場合(ステップST42;no)、メモリコントローラ200の処理はステップST42_1及びST43を省略する。
【0164】
これにより、メモリコントローラ200は、NANDフラッシュメモリ100から出力されたデータから、出力対象キーkに対応するバリューvを特定することができる。
【0165】
ステップST42_1において、メモリコントローラ200は、読出しコマンドを発行し、NANDフラッシュメモリ100に送出する。読出しコマンドには、出力対象キーkに対応するバリューvのアドレス情報が含まれる。
【0166】
ステップST42_2において、NANDフラッシュメモリ100は、読出しコマンドを受けると、読出しコマンド内のアドレス情報に対応するページデータをセンスアンプ180内のラッチ回路に読み出す。そして、NANDフラッシュメモリ100は、当該ページデータのうち、読出しコマンドにて指定されたバリューvを含む部分データDを選択的にメモリコントローラ200に出力する。
【0167】
ステップST43において、厳密条件を満たすデータセットDs(すなわち、出力対象キーk及び当該出力対象キーkに対応するバリューv)をホスト機器300に出力する。
【0168】
なお、
図15の例では、ステップST42_1及び42_2によるバリューvの読出し処理がスキャン処理の中で実行される場合について説明したが、これに限られない。例えば、ステップST42_1及び42_2は、スキャン処理の後に実行されてもよい。
【0169】
3.3 本実施形態に係る効果
第3実施形態によれば、メモリコントローラ200は、キー長Lkと一致するストライド長Lsを含むスキャンコマンドを発行する。これにより、NANDフラッシュメモリ100は、互いに異なるページデータ内にキーkとバリューvとが記憶されていることを認識することができる。
【0170】
また、NANDフラッシュメモリ100は、キーkを含む部分データDに対して誤り検出及び誤り訂正処理、並びに厳密条件に基づく内部比較処理を実行する。NANDフラッシュメモリ100は、誤り訂正に失敗した部分データD及び誤り情報、又は厳密条件を満たす訂正後のキーk’とそのアドレス情報をメモリコントローラ200に出力する。これにより、メモリコントローラ200は、出力対象キーkに対応するバリューvを特定することができ、当該バリューvを読み出す旨の読出しコマンドを発行することができる。
【0171】
なお、NANDフラッシュメモリ100は、バリューvの出力に際し、当該バリューvを含むページデータの部分データDを出力する。これにより、NANDフラッシュメモリ100とメモリコントローラ200間の通信量を低減することができる。
【0172】
3.4 第3実施形態の変形例
第3実施形態は、上述の例に限られず、種々の変形が適用可能である。以下の説明では、第3実施形態と同等の構成及び動作については説明を省略し、第3実施形態と異なる構成及び動作について主に説明する。
【0173】
3.4.1 第3実施形態の第1変形例
例えば、メモリシステム1は、いくつかの書込みモードを使用することが出来る。具体的には、メモリシステム1は、SLC(Single-Level Cell)モード、MLC(Multi-Level Cell)モード、及びTLC(Triple-Level Cell)モード等の異なる書込みモードを併用して使用可能である。SLCモード、MLCモード、及びTLCモードは、1つのメモリセルトランジスタMTに対して、それぞれ1ビットデータ、2ビットデータ、及び3ビットデータを記憶させる書込みモードである。
【0174】
図16は、第3実施形態の第1変形例に係るメモリシステムにおけるメモリセルトランジスタMTの閾値電圧の分布の一例であり、SLCモード、MLCモード、及びTLCモードがそれぞれ使用された場合における3種類の閾値電圧分布及び読出し電圧のグループを示している。
図16に示すように、複数のメモリセルトランジスタMTは、適用される書込みモード、すなわち記憶するデータのビット数に応じて複数の閾値電圧分布を形成する。
【0175】
図16に示すように、SLCモード(1bit/cell)が使用された場合、複数のメモリセルトランジスタMTの閾値電圧は2個の閾値電圧分布を形成する。この2個の閾値電圧分布は、例えば閾値電圧の低い方から順に、それぞれ“ER”状態、“A”状態と称される。SLCモードにおいて、“ER”状態、及び“A”状態のそれぞれの閾値電圧分布には、それぞれ互いに異なる1ビットデータが割り当てられる。
【0176】
MLCモード(2bit/cell)が使用された場合、複数のメモリセルトランジスタMTの閾値電圧は4個の閾値電圧分布を形成する。この4個の閾値電圧分布は、例えば閾値電圧の低い方から順に、それぞれ“ER”状態、“A”状態、“B”状態、“C”状態と称される。MLCモードにおいて、“ER”状態~“C”状態のそれぞれの閾値電圧分布には、それぞれ互いに異なる2ビットデータが割り当てられる。
【0177】
TLCモード(3bit/cell)が使用された場合、複数のメモリセルトランジスタMTの閾値電圧は8個の閾値電圧分布を形成する。この8個の閾値電圧分布は、例えば閾値電圧の低い方から順に、それぞれ“ER”状態、“A”状態、“B”状態、“C”状態、“D”状態、“E”状態、“F”状態、“G”状態と称される。TLC方式において、“ER”状態~“G”状態のそれぞれの閾値電圧分布には、それぞれ互いに異なる3ビットデータが割り当てられる。
【0178】
各書込みモードにおいて、隣り合う閾値電圧分布の間にそれぞれ読出し電圧が設定される。具体的には、“ER”状態における最大の閾値電圧と“A”状態における最小の閾値電圧との間に、読出し電圧VAが設定される。同様に、“A”状態及び“B”状態間に読出し電圧VBが設定され、“B”状態及び“C”状態間に読出し電圧VCが設定され、“C”状態及び“D”状態間に読出し電圧VDが設定され、“D”状態及び“E”状態間に読出し電圧VEが設定され、“E”状態及び“F”状態間に読出し電圧VFが設定され、“F”状態及び“G”状態間に読出し電圧VGが設定される。
【0179】
各書込みモードにおいて、最も高い閾値電圧分布における最大の閾値電圧よりも高い電圧に、読出しパス電圧VREADが設定される。読出しパス電圧VREADがゲートに印加されたメモリセルトランジスタMTは、記憶するデータに依らずにオン状態になる。なお、読出し電圧及び読出しパス電圧の各々は、各書込みモードで同じ電圧値に設定されても良いし、異なる電圧値に設定されても良い。
【0180】
なお、
図16では、メモリセルトランジスタMTに1ビットデータ~3ビットデータが記憶される場合について説明したが、これに限られない。例えば、メモリセルトランジスタMTには、4ビットデータ以上のデータが記憶されても良く、これに対応する書込みモードが設定されてもよい。
【0181】
MLCモード及びTLCモードのように、メモリセルトランジスタMTに複数ビットデータを書込み可能なモードを使用すると、SLCモードよりも多くのデータを記憶することができる。しかしながら、読出しパス電圧VREAD及びメモリセルトランジスタMTに設定可能な閾値電圧には上限があるため、MLCモード及びTLCにおける状態間の閾値電圧のマージンは、SLCモードよりも小さくなる。このため、記憶されるデータの信頼性の観点では、SLCモードの方が、MLCモード及びTLCモードよりも有利になり得る。
【0182】
図17は、第3実施形態の第1変形例に係るメモリセルアレイ内に記憶されるページデータを説明するための模式図である。
図17では、キーkとバリューvとがそれぞれ、SLCモードが適用されたセルユニットCUにおける1ページ分のデータ領域と、TLCモードが適用されたセルユニットCUにおける3ページ分のデータ領域(上位ページ、中位ページ、及び下位ページ)と、に分けて記憶される場合の例が示される。
【0183】
図17に示すように、本変形例では、SLCモードが適用されたセルユニットCUにおける1ページ分のデータ領域に、複数のキーk1~k22が選択的に記憶される。また、TLCモードが適用されたセルユニットCUにおける3ページ分のデータ領域に、複数のバリューv_u1~v_u6、v_m1~v_m6、及びv_l1~v_l6が選択的に記憶される。これにより、スキャン処理の対象であるキーkの信頼性をSLCモードによって高めることができ、スキャン処理の実効性を高めることができる。
【0184】
また、キーkに対してサイズが大きくなりやすいバリューvは、データ密度が高いTLCモードによって記憶されるため、データ容量に対する負荷の増加を抑制することができる。
【0185】
3.4.2 第3実施形態の第2変形例
上述した第3実施形態の第1変形例では、互いに異なる書込みモードを使用した2つのセルユニットCUにキーkとバリューvとを分けて記憶する場合について説明したが、これに限られない。
【0186】
図18は、TLCモードを使用した場合にセルユニットCUに書き込まれる3ページ分のデータと、メモリセルトランジスタMTの閾値電圧との関係について示したダイアグラムである。
【0187】
図18に示すように、閾値電圧分布は、上述の下位ビット、中位ビット及び上位ビットからなる3ビット(3ページ)データを書き込むことで実現される。すなわち、上記“Er”状態から“G”状態と、下位ビット、中位ビット、及び上位ビットとの関係は、次の通りである。
“Er”状態:“111”(“上位/中位/下位”の順で表記)
“A”状態:“110”
“B”状態:“100”
“C”状態:“000”
“D”状態:“010”
“E”状態:“011”
“F”状態:“001”
“G”状態:“101”
このように、閾値電圧分布において隣り合う2つの状態に対応するデータ間では、3ビットのうちの1ビットのみが変化する。
【0188】
従って、下位ビットを読み出す際には、下位ビットの値(“0”or“1”)が変化する境界に相当する電圧を用いれば良く、このことは中位ビット及び上位ビットでも同様である。
【0189】
すなわち、
図18の例で示されるようなコーディングでは、下位ページ読出しは、“Er”状態と“A”状態とを区別する電圧VA、及び“D”状態と“E”状態とを区別する電圧VEを読出しレベルとして用いる。電圧VA及びVEを用いた読出し動作を、それぞれ読出し動作AR及びERと呼ぶ。
【0190】
読出し動作ARは、メモリセルトランジスタMTの閾値電圧が電圧VA未満か否かを判定する。つまり、読出し動作ARにより、消去状態のメモリセルトランジスタMTが特定される。読出し動作ERは、メモリセルトランジスタMTの閾値電圧が電圧VE未満か否かを判定する。
【0191】
中位ページ読出しは、“A”状態と“B”状態とを区別する電圧VB、“C”状態と“D”状態とを区別する電圧VD、及び“E”状態と“F”状態とを区別する電圧VFを読出しレベルとして用いる。電圧VB、VD、及びVFを用いた読出し動作を、それぞれ読出し動作BR、DR、及びFRと呼ぶ。
【0192】
読出し動作BRは、メモリセルトランジスタMTの閾値電圧が電圧VB未満か否かを判定する。読出し動作DRは、メモリセルトランジスタMTの閾値電圧が電圧VD未満か否かを判定する。読出し動作FRは、メモリセルトランジスタMTの閾値電圧が電圧VF未満か否かを判定する。
【0193】
上位ページ読出しは、“B”状態と“C”状態とを区別する電圧VC、及び“F”状態と“G”状態とを区別する電圧VGを読出しレベルとして用いる。電圧VC及びVGを用いた読出し動作を、それぞれ読出し動作CR及びGRと呼ぶ。
【0194】
読出し動作CRは、メモリセルトランジスタMTの閾値電圧が電圧VC未満か否かを判定する。読出し動作GRは、メモリセルトランジスタMTの閾値電圧が電圧VG未満か否かを判定する。
【0195】
このように、TLCモードにおいて、上位ページ、中位ページ、及び下位ページは、使用される読出し電圧の高さ、及び数が異なる。このため、ページによって、記憶されるデータの信頼性に差が生じ得る。
【0196】
具体的には、例えば、TLCモードにおける8つの状態のうち、“Er”状態に属するメモリセルトランジスタMTの閾値電圧は、他の状態よりも上昇しやすい。これにより、“Er”状態の閾値電圧分布と“A”状態の閾値電圧分布とは比較的重なりが生じやすい。このため、電圧VAを使用してデータを確定させる下位ページデータは、他のページデータよりも信頼性が低くなり得る。
【0197】
また、例えば、“G”状態に属するメモリセルトランジスタMTの閾値電圧は、他の状態よりも低下しやすい。これにより、“F”状態の閾値電圧分布と“G”状態の閾値電圧分布とは比較的重なりが生じやすい。このため、電圧VGを使用してデータを確定させる上位ページデータは、他のページデータよりも信頼性が低くなり得る。
【0198】
したがって、TLCモードを使用して記憶された3ビットデータのうち、中位ページデータは、上位ページデータ及び下位ページデータよりも相対的に高い信頼性を有する場合がある。
【0199】
図19は、第3実施形態の第2変形例に係るメモリセルアレイ内に記憶されるページデータを説明するための模式図である。
図19では、TLCモードが適用されたセルユニットCUにおける3ページ分のデータ領域(上位ページ、中位ページ、及び下位ページ)に、キーkとバリューvとが分けて記憶される場合の例が示される。
【0200】
図19に示すように、本変形例では、中位ページに、複数のキーk1~k22が選択的に記憶される。また、下位ページ及び上位ページに、それぞれ複数のバリューv_u1~v_u6、及びv_l1~v_l6が選択的に記憶される。これにより、キーkを下位ページ又は上位ページに記憶した場合よりも、スキャン処理の対象であるキーkの信頼性を高めることができ、スキャン処理の実効性を高めることができる。
【0201】
また、データ密度が高いTLCモードによって、キーk及びバリューvを記憶することにより、データ容量に対する負荷の増加を抑制することができる。
【0202】
4. 第4実施形態
上述した第1実施形態乃至第3実施形態では、キー長Lk及びストライド長Lsが固定長である場合について説明したが、これに限られない。例えば、キー長Lk及びストライド長Lsは、可変長であってもよい。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
【0203】
4.1 ページデータ
図20は、第4実施形態に係るメモリセルアレイ内に記憶されるページデータの一部を説明するための模式図であり、第1実施形態における
図4に対応する。
【0204】
図20に示すように、部分データD1はキーk1、データ長さ情報s1、及びバリューv1の組と、キーk2、データ長さ情報s2、及びバリューv2の組と、パリティp1と、を含む。
図20の例では、キーk1のキー長Lk1と、キーk2のキー長Lk2とが互いに異なり、ストライド長Ls1とストライド長Ls2とが互いに異なる場合が示される。
【0205】
データ長さ情報s1には、例えば、キー長Lk1及びストライド長Ls1を示す情報が記憶される。データ長さ情報s2には、例えば、キー長Lk2及びストライド長Ls2を示す情報が記憶される。
【0206】
以上のように構成されることにより、部分データDに誤りが無ければ、NANDフラッシュメモリ100は、データ長さ情報s1及びs2を参照することにより、キーk1及びk2の位置を特定することができる。
【0207】
4.2 スキャン処理
図21は、第4実施形態に係るメモリシステムにおけるスキャン処理を説明するためのフローチャートである。
図21は、第1実施形態における
図5に対応し、ステップST34_1が追加されると共に、ステップST31に代えて、ステップST31Eが実行される場合が示される。
【0208】
図21に示すように、ステップST31Eにおいて、メモリコントローラ200は、真キーk0、厳密条件、及びスキャン範囲を含むスキャンコマンドを発行し、NANDフラッシュメモリ100に送出する。すなわち、第4実施形態では、キー長Lk及びストライド長Lsが可変長であるため、スキャンコマンド内に当該情報が含まれない。
【0209】
ステップST32において、NANDフラッシュメモリ100は、スキャン範囲内のページデータの読出し処理を実行する。センスアンプ180は、メモリセルアレイ110からページデータを読み出し、センスアンプ180内のラッチ回路に記憶する。
【0210】
ステップST33において、部分データ抽出回路191は、ステップST32において読み出されたページデータから、判定対象キーkを含む部分データDを抽出する。なお、この時点では、部分データD内におけるキーk及びバリューvの位置は特定されない。
【0211】
ステップST34において、高スループットECC回路192は、ステップST33において抽出された部分データD内のパリティpに基づき、誤り検出及び誤り訂正処理を実行する。部分データDの訂正に成功した場合(ステップST34;yes)、NANDフラッシュメモリ100の処理はステップST34_1に進み、訂正に失敗した場合(ステップST34;no)、NANDフラッシュメモリ100の処理はステップST34_1及びST35を省略し、ステップST36に進む。
【0212】
ステップST34_1において、部分データ抽出回路191は、誤り訂正後の部分データDからデータ長情報sを抽出する。そして、部分データ抽出回路191は、当該データ長情報s内のキー長Lk及びストライド長Lsに基づいて、部分データD内の判定対象キーkを特定する。
【0213】
ステップST35以降の動作は、第1実施形態と同等であるため、説明を省略する。
【0214】
以上により、スキャン処理が終了する。
【0215】
4.3 本実施形態に係る効果
第4実施形態によれば、ページデータには、キーk及びバリューvに加え、データ長情報sが含まれる。キー長Lk及びストライド長Lsを含まないスキャンコマンドを受けると、高スループットECC回路192は、誤り訂正処理を実行する。これにより、NANDフラッシュメモリ100は、誤り訂正処理に成功した場合、可変長データのどこにキーkがあるかを、データ長情報sに基づいて特定することができる。これにより、内部比較回路193は、真キーk0と一致しない判定対象キーkをメモリコントローラ200への出力対象から除外することができる。このため、キーk及びバリューvが可変長の場合においても、NANDフラッシュメモリ100とメモリコントローラ200との間のデータの通信量の増加を抑制できる。
【0216】
5.その他
上述した第1実施形態乃至第3実施形態では、内部比較回路193が厳密条件に基づく内部比較処理を実行する場合について説明したが、これに限られない。例えば、内部比較回路193は、緩和条件に基づく内部比較処理を実行してもよい。
【0217】
すなわち、内部比較回路193は、厳密条件を内包し、かつ当該厳密条件よりも緩和された条件(緩和条件)を設定し得る。緩和条件には、例えば、読出しデータが真のデータに対して所定のハミング距離内であるか否かを判定する部分一致比較条件、読出しデータが真のデータ以上(又は以下)であるか否かを判定する大小比較条件、及び上述の部分一致比較条件と大小比較条件との組み合わせた条件が含まれる。
【0218】
図22は、その他の変形例に係るメモリシステムにおけるスキャン処理を説明するためのフローチャートである。
図22は、第1実施形態における
図5に対応し、
図5に示されたステップST34及びST40が省略されると共に、ステップST31、ST35、及びST36に代えて、ステップST31F、ST35F、及びST36Fが実行される場合が示される。
【0219】
図22に示すように、ステップST31Fにおいて、メモリコントローラ200は、キー長Lk、ストライド長Ls、真キーk0、緩和条件、及びスキャン範囲を含むスキャンコマンドを発行し、NANDフラッシュメモリ100に送出する。緩和条件は、例えば、判定対象キーkと真キーk0との間で許容されるハミング距離を示す情報を含む。
【0220】
ステップST32及びST33の処理は、第1実施形態と同等であるため、説明を省略する。
【0221】
ステップST33が終了すると、NANDフラッシュメモリ100の処理はステップST35Fに進む。すなわち、NANDフラッシュメモリ100は、スキャン処理において、高スループットECC回路192の処理をスキップする。
【0222】
ステップST35Fにおいて、内部比較回路193は、判定対象キーkが、真キーk0に対して、緩和条件を満たすか否かを判定する。具体的には、内部比較回路193は、真キーk0と、判定対象キーkとの間のハミング距離が、スキャンコマンド内に含まれる緩和条件を満たすか否かを判定する。緩和条件を満たす場合(ステップST35F;yes)、NANDフラッシュメモリ100の処理はステップST36に進み、緩和条件を満たさない場合(ステップST35F;no)、NANDフラッシュメモリ100の処理はステップST36を省略し、ステップST37に進む。
【0223】
ステップST36Fにおいて、NANDフラッシュメモリ100は、ステップST35Fにおいて緩和条件を満たすと判定された判定対象キーkを少なくとも1つ含む部分データDを、メモリコントローラ200に出力する。この際、NANDフラッシュメモリ100では高スループットECC回路192による誤り検出及び誤り訂正処理が実行されないため、誤り情報は出力されない。
【0224】
ステップST37以降の処理は、ステップST40が省略されることを除き、第1実施形態と同等であるため、説明を省略する。
【0225】
以上のように動作することにより、NANDフラッシュメモリ100は、誤り検出及び誤り訂正処理を実行することなく、部分的な誤りを許容した内部比較処理を実行することができる。これにより、誤り検出及び誤り訂正処理を実行することなく、メモリコントローラ200に出力するデータを選定することができる。
【0226】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0227】
1…メモリシステム、100…NANDフラッシュメモリ、110…メモリセルアレイ、120…入出力回路、130…ロジック制御回路、140…アドレスレジスタ、150…コマンドレジスタ、160…ドライバ、170…ロウデコーダ、180…センスアンプ、190…出力データ選定回路、191…部分データ抽出回路、192…高スループットECC回路、193…内部比較回路、195…シーケンサ、200…メモリコントローラ、210…ホストインタフェース回路、220…RAM、230…CPU、240…バッファメモリ、250…NANDインタフェース回路、250a,250b,250c,250d…NANDコントローラ、251…高訂正能力ECC回路、252…外部比較回路、300…ホスト機器。