(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-12
(45)【発行日】2024-04-22
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G06F 11/10 20060101AFI20240415BHJP
G11C 29/42 20060101ALI20240415BHJP
G11C 29/50 20060101ALI20240415BHJP
G11C 16/04 20060101ALI20240415BHJP
G11C 16/34 20060101ALI20240415BHJP
G06F 12/00 20060101ALI20240415BHJP
【FI】
G06F11/10 662
G11C29/42
G11C29/50 100
G11C16/04 170
G11C16/34 120
G06F12/00 550Z
(21)【出願番号】P 2020049667
(22)【出願日】2020-03-19
【審査請求日】2022-09-20
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】浅見 征平
(72)【発明者】
【氏名】天木 健彦
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2013-131095(JP,A)
【文献】特開平05-189837(JP,A)
【文献】特開2014-164792(JP,A)
【文献】特表2019-511802(JP,A)
【文献】特開2018-055748(JP,A)
【文献】特開2013-080450(JP,A)
【文献】特開2017-162068(JP,A)
【文献】特開2013-174977(JP,A)
【文献】特開2018-110043(JP,A)
【文献】再公表特許第2017/081756(JP,A1)
【文献】特許第6495550(JP,B1)
【文献】米国特許出願公開第2020/0319953(US,A1)
【文献】米国特許第10509720(US,B2)
【文献】米国特許出願公開第2020/0051649(US,A1)
【文献】米国特許出願公開第2021/0257037(US,A1)
【文献】米国特許出願公開第2013/159785(US,A1)
【文献】米国特許出願公開第2008/055990(US,A1)
【文献】米国特許出願公開第2016/350178(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
G11C 29/42
G11C 29/50
G11C 16/04
G11C 16/34
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
直列に接続された複数の第1メモリセルを有する第1メモリストリングを含む第1メモリブロックと、前記複数の第1メモリセルの各々のゲートに接続された複数の第1ワード線とを含むメモリチップと、
外部機器と接続され、前記メモリチップを制御し、前記メモリチップから読み出したデータのECC(error checking and correcting)処理を実行可能なメモリコントローラと
、
を備え、
前記メモリコントローラは、前記外部機器から書き込み命令を受信すると、前記複数の第1メモリセルの1つである第2メモリセルに対する書き込み動作において、前記第2メモリセルに対して前記書き込み動作を実行し、
前記第2メモリセルに対して前記書き込み動作を実行したことに応じて、前記複数の第1メモリセルの1つであ
り、前記第2メモリセルとは異なる第3メモリセルに対して、読み出し処理と前記ECC処理とを含むリードベリファイ動作を実行するように構成されている、
メモリシステム。
【請求項2】
前記第3メモリセルは、前記第2メモリセルに対する前記書き込み動作が実行される前にデータを保持している、
請求項1に記載のメモリシステム。
【請求項3】
前記リードベリファイ動作は、読み出し電圧を探索するトラッキング動作を更に含み、
前記メモリコントローラは、前記ECC処理がフェイルしたと判定した場合、前記トラッキング動作を実行するように構成されている、
請求項1
または2に記載のメモリシステム。
【請求項4】
前記メモリチップは、直列に接続された複数の第4メモリセルを有する第2メモリストリングを含む第2メモリブロックと、前記複数の第4メモリセルの各々のゲートに接続された複数の第2ワード線とを更に含み、
前記メモリコントローラは、前記第1メモリブロックにおける前記リードベリファイ動作の判定結果に基づいて、前記第1メモリブロックに含まれる有効データを前記第2メモリブロックに書き込むリフレッシュ動作を実行するように構成されている、
請求項1
または2に記載のメモリシステム。
【請求項5】
前記リードベリファイ動作は、読み出し電圧を探索するトラッキング動作を更に含み、
前記メモリコントローラは、前記ECC処理がフェイルしたと判定した場合、前記トラッキング動作を実行し、前記トラッキング動作の結果、前記読み出し電圧のシフト値が予め設定された値の範囲外であれば、前記リフレッシュ動作を実行するように構成されている、
請求項
4に記載のメモリシステム。
【請求項6】
前記メモリコントローラは、前記第1メモリブロックにおいて、前記書き込み動作と消去動作との繰り返し回数が予め設定された回数以内に、前記リフレッシュ動作を複数回実行した場合、前記第1メモリブロックを無効状態とするバッドブロック化処理を実行するように構成されている、
請求項
4または
5に記載のメモリシステム。
【請求項7】
前記メモリコントローラは、前記リードベリファイ動作の判定結果に基づいて、前記第1メモリブロックを無効状態とするバッドブロック化処理を実行するように構成されている、
請求項1
または2に記載のメモリシステム。
【請求項8】
前記リードベリファイ動作は、読み出し電圧を探索するトラッキング動作を更に含み、
前記メモリコントローラは、前記ECC処理がフェイルしたと判定した場合、前記トラッキング動作を実行し、前記トラッキング動作の結果、前記読み出し電圧のシフト値が予め設定された値の範囲外であれば、前記バッドブロック化処理を実行するように構成されている、
請求項
7に記載のメモリシステム。
【請求項9】
直列に接続された複数の第1メモリセルを有する第1メモリストリングを含む第1メモリブロックと、前記複数の第1メモリセルの各々のゲートに接続された複数の第1ワード線とを、それぞれが含む複数
のメモリチップと、
外部機器と接続され、前記メモリチップを制御し、前記メモリチップから読み出したデータのECC(error checking and correcting)処理を実行可能なメモリコントローラと、
を備え、
前記メモリコントローラは、前記外部機器から書き込み命令を受信すると、前記複数の第1メモリセルの1つである第2メモリセルに対する書き込み動作において、前記第2メモリセルに対して前記書き込み動作を実行し、且つ前記複数の第1メモリセルの1つである第3メモリセルに対して、読み出し処理と前記ECC処理とを含むリードベリファイ動作を実行するように構成され、
前記複数のメモリチップの各々は、直列に接続された複数の第4メモリセルを有する第2メモリストリングを含む第2メモリブロックと、前記複数の第4メモリセルの各々に接続された複数の第2ワード線とを更に含み、
前記メモリコントローラは、1つまたは複数のユーザデータと当該ユーザデータに付与される誤り訂正符号とを含む第1データを生成し、生成した前記第1データを前記複数のメモリチップに分散して書き込むように構成され、
前記第1メモリブロックには、前記第1データを分割した第1符号化率を有する第2データの1つが書き込まれ、前記第2メモリブロックには、前記第1データを分割した前記第1符号化率よりも符号化率が低い第2符号化率を有する第3データの1つが書き込まれる場合、前記メモリコントローラは、前記第1メモリブロックへの前記書き込み動作後に前記リードベリファイ動作を実行し、前記第2メモリブロックへの前記書き込み動作後に前記リードベリファイ動作を実行しないように構成されている、
メモリシステム。
【請求項10】
直列に接続された複数の第1メモリセルを有する第1メモリストリングを含む第1メモリブロックと、前記複数の第1メモリセルの各々のゲートに接続された複数の第1ワード線とを含むメモリチップと、
外部機器と接続され、前記メモリチップを制御し、前記メモリチップから読み出したデータのECC(error checking and correcting)処理を実行可能なメモリコントローラと、
を備え、
前記メモリコントローラは、前記外部機器から書き込み命令を受信すると、前記複数の第1メモリセルの1つである第2メモリセルに対する書き込み動作において、前記第2メモリセルに対して前記書き込み動作を実行し、且つ前記複数の第1メモリセルの1つである第3メモリセルに対して、読み出し処理と前記ECC処理とを含むリードベリファイ動作を実行するように構成され、
前記第1メモリストリングは、
一端が直列に接続された前記複数の第1メモリセルの一端に接続され、他端がソース線に接続された第1選択トランジスタと、
直列に接続され、一端が前記複数の第1メモリセルの他端に接続された複数の第5メモリセルと、
一端が直列に接続された前記複数の第5メモリセルの他端に接続され、他端がビット線に接続された第2選択トランジスタと、
を更に含み、
前記メモリチップは、
前記第1選択トランジスタのゲートに接続された第1選択ゲート線と、前記複数の第5メモリセルの各々のゲートに接続された複数の第3ワード線と、
前記第2選択トランジスタのゲートに接続された第2選択ゲート線と、
前記複数の第1メモリセル及び前記第1選択トランジスタを含む第1メモリピラーと、
前記複数の第5メモリセル及び前記第2選択トランジスタを含む第2メモリピラーと
を更に含み、
前記第1メモリピラーは、前記複数の第1ワード線及び前記第1選択ゲート線を通過し、一端が前記ソース線に接続され、
前記第2メモリピラーは、前記第2選択ゲート線及び前記複数の第3ワード線を通過し、一端が前記第1メモリピラーに接続され、他端が前記ビット線に接続され、
前記複数の第1ワード線は、前記第1選択ゲート線と隣り合う第4ワード線と、前記第4ワード線と異なる第5ワード線とを含み、
前記複数の第3ワード線は、前記複数の第3ワード線のうち前記複数の第1ワード線に最も近い位置に配置された第6ワード線と、前記第6ワード線と異なる第7ワード線とを含み、
前記複数の第1メモリセルは、前記第4ワード線に接続された第6メモリセルと、前記第5ワード線に接続された第7メモリセルとを含み、
前記複数の第5メモリセルは、前記第6ワード線に接続された第8メモリセルと、前記第7ワード線に接続された第9メモリセルとを含み、
前記メモリコントローラは、前記第6メモリセル及び前記第8メモリセルの少なくとも1つには前記リードベリファイ動作を実行し、前記第7メモリセル及び前記第9メモリセルの少なくとも1つには前記リードベリファイ動作を実行しないように構成されている、
メモリシステム。
【請求項11】
前記メモリコントローラは、
前記第3メモリセルに対する書き込み動作を実行し、前記第3メモリセルに対する前記書き込み動作を実行した後、
前記第2メモリセルに対する前記書き込み動作を実行し、前記第2メモリセルに対する前記書き込み動作を実行したことに応じ、前記第3メモリセルに対する前記リードベリファイ動作を実行するように構成されている、
請求項1乃至3のいずれか一項に記載のメモリシステム。
【請求項12】
前記第1メモリストリングに含まれる直列に接続された前記複数の第1メモリセルは、さらに、第4メモリセルと第5メモリセルとを含み、
前記メモリコントローラは、
前記第4メモリセルに対する書き込み動作を実行し、前記第4メモリセルに対する前記書き込み動作を実行した後、
前記第3メモリセルに対する前記書き込み動作を実行し、前記第3メモリセルに対する前記書き込み動作を実行した後、
前記第5メモリセルに対する書き込み動作を実行し、前記第5メモリセルに対する前記書き込み動作を実行した後、
前記第2メモリセルに対する前記書き込み動作を実行し、前記第2メモリセルに対する前記書き込み動作を実行したことに応じ、前記第3メモリセルに対する前記リードベリファイ動作を実行するように構成されている、
請求項11に記載のメモリシステム。
【請求項13】
直列に接続された複数の第1メモリセルと、
一端が直列に接続された前記複数の第1メモリセルの一端に接続され、他端がソース線に接続された第1選択トランジスタと、
一端が直列に接続された前記複数の第1メモリセルの他端に接続され、他端がビット線に接続された第2選択トランジスタと、
を有する第1メモリストリングを含む第1メモリブロックと、前記複数の第1メモリセルの各々のゲートに接続された複数の第1ワード線とを含むメモリチップと、
外部機器と接続され、前記メモリチップを制御し、前記メモリチップから読み出したデータのECC(error checking and correcting)処理を実行可能なメモリコントローラと、
を備え、
前記メモリコントローラは、前記外部機器から書き込み命令を受信すると、前記複数の第1メモリセルの1つである第2メモリセルに対する書き込み動作において、前記第2メモリセルに対して前記書き込み動作を実行し、且つ前記複数の第1メモリセルの1つである第3メモリセルに対して、読み出し処理と前記ECC処理とを含むリードベリファイ動作を実行するように構成され、
前記第1メモリブロックは、
それぞれが前記第1メモリストリングを含む複数のストリングユニットと、
前記複数のストリングユニットのうちの第1ストリングユニットに含まれる前記第2選択トランジスタのゲートに接続される第1選択ゲート線と、
前記複数のストリングユニットのうちの第2ストリングユニットに含まれる前記第2選択トランジスタのゲートに接続される第2選択ゲート線と、
前記複数のストリングユニットのうちの第3ストリングユニットに含まれる前記第2選択トランジスタのゲートに接続される第3選択ゲート線と、
前記複数のストリングユニットのうちの第4ストリングユニットに含まれる前記第2選択トランジスタのゲートに接続される第4選択ゲート線と、
前記複数のストリングユニットのそれぞれに含まれる前記第1選択トランジスタのゲートに共通して接続される第5選択ゲート線と、を含み、
前記メモリコントローラは、
前記第1ストリングユニットに含まれる前記第2メモリセルに対して前記書き込み動作を実行したことに応じ、前記第1ストリングユニットに含まれる前記第3メモリセルに対して前記リードベリファイ動作を実行せず、
前記第2ストリングユニットに含まれる前記第2メモリセルに対して前記書き込み動作を実行したことに応じ、前記第2ストリングユニットに含まれる前記第3メモリセルに対して前記リードベリファイ動作を実行し、
前記第3ストリングユニットに含まれる前記第2メモリセルに対して前記書き込み動作を実行したことに応じ、前記第3ストリングユニットに含まれる前記第3メモリセルに対して前記リードベリファイ動作を実行せず、
前記第4ストリングユニットに含まれる前記第2メモリセルに対して前記書き込み動作を実行したことに応じ、前記第4ストリングユニットに含まれる前記第3メモリセルに対して前記リードベリファイ動作を実行するように構成されている、
メモリシステム。
【請求項14】
直列に接続された複数の第1メモリセルを有する第1メモリストリングを含む第1メモリブロックと、前記複数の第1メモリセルの各々のゲートに接続された複数の第1ワード線とを含むメモリチップと、
外部機器と接続され、前記メモリチップを制御し、前記メモリチップから読み出したデータのECC(error checking and correcting)処理を実行可能なメモリコントローラと、
を備え、
前記メモリコントローラは、前記外部機器から書き込み命令を受信すると、前記複数の第1メモリセルの1つである第2メモリセルに対する書き込み動作において、前記第2メモリセルに対して前記書き込み動作を実行し、且つ前記複数の第1メモリセルの1つである第3メモリセルに対して、読み出し処理と前記ECC処理とを含むリードベリファイ動作を実行するように構成され、
前記第1メモリブロックは、
複数の前記第1メモリストリングと、
前記複数の第1メモリストリングのそれぞれに含まれる前記第2メモリセルに共通して接続される第2ワード線と、
前記複数の第1メモリストリングのそれぞれに含まれる前記第3メモリセルに共通して接続される第3ワード線と、を含み、
前記メモリコントローラは、
前記複数の第1メモリストリングのうちの第2メモリストリング及び第3メモリストリングの各々に含まれる前記第2メモリセルに対して前記書き込み動作を実行したことに応じ、前記第2メモリストリングに含まれる前記第3メモリセルに対して前記リードベリファイ動作を実行し、前記第3メモリストリングに含まれる前記第3メモリセルに対して前記リードベリファイ動作を実行しないように構成されている、
メモリシステム。
【請求項15】
直列に接続された複数の第1メモリセルを有する第1メモリストリングを含む第1メモリブロックと、前記複数の第1メモリセルの各々のゲートに接続された複数の第1ワード線とを含むメモリチップと、
外部機器と接続され、前記メモリチップを制御し、前記メモリチップから読み出したデータのECC(error checking and correcting)処理を実行可能なメモリコントローラと、
を備え、
前記メモリコントローラは、前記外部機器から書き込み命令を受信すると、前記複数の第1メモリセルの1つである第2メモリセルに対する書き込み動作において、前記第2メモリセルに対して前記書き込み動作を実行し、且つ前記複数の第1メモリセルの1つである第3メモリセルに対して、読み出し処理と前記ECC処理とを含むリードベリファイ動作を実行するように構成され、
前記複数の第1メモリセルの各々は、複数ビットのデータを記憶可能に構成され、
前記メモリコントローラは、
前記第2メモリセルに対して前記書き込み動作を実行し、前記複数ビットのうちの第1ビットを前記第2メモリセルに書き込んだことに応じ、前記第3メモリセルに対して前記リードベリファイ動作を実行し、
前記第2メモリセルに対して前記書き込み動作を実行し、前記複数ビットのうちの第2ビットを前記第2メモリセルに書き込んだことに応じ、前記第3メモリセルに対して前記リードベリファイ動作を実行しないように構成されている、
メモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
メモリチップとしてNAND型フラッシュメモリを用いたメモリシステムが知られている。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第5740296号公報
【文献】特許第4791912号公報
【文献】米国特許第9836349号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
信頼性を向上できるメモリシステムを提供する。
【課題を解決するための手段】
【0005】
実施形態に係るメモリシステムは、直列に接続された複数の第1メモリセルを有する第1メモリストリングを含む第1メモリブロックと複数の第1メモリセルの各々のゲートに接続された複数の第1ワード線と含むメモリチップと、外部機器と接続され、メモリチップを制御し、メモリチップから読み出したデータのECC(error checking and correcting)処理が可能なメモリコントローラとを含む。メモリコントローラは、外部機器から書き込み命令を受信すると、複数の第1メモリセルの1つである第2メモリセルに対する書き込み動作において、第2メモリセルに対して書き込み動作を実行し、第2メモリセルに対して書き込み動作を実行したことに応じ、複数の第1メモリセルの1つであり、第2メモリセルとは異なる第3メモリセルに対して、読み出し処理とECC処理とを含むリードベリファイ動作を実行するように構成されている。
【図面の簡単な説明】
【0006】
【
図1】
図1は、第1実施形態に係るメモリシステムのブロック図である。
【
図2】
図2は、第1実施形態に係るメモリシステムの備えるメモリチップのブロック図である。
【
図3】
図3は、第1実施形態に係るメモリシステムの備えるメモリチップにおけるメモリセルアレイの回路図である。
【
図4】
図4は、第1実施形態に係るメモリシステムの備えるメモリチップにおけるメモリセルアレイの断面図である。
【
図5】
図5は、第1実施形態に係るメモリシステムの備えるメモリチップにおけるメモリセルトランジスタの閾値電圧分布図である。
【
図6】
図6は、第1実施形態に係るメモリシステムの備えるメモリチップにおける読み出し電圧値を示す図である。
【
図7】
図7は、第1実施形態に係るメモリシステムにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図8】
図8は、第1実施形態に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図9】
図9は、第1実施形態に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図10】
図10は、第1実施形態に係るメモリシステムにおけるバッドブロック化処理の判定条件の一例を示す図である。
【
図11】
図11は、第2実施形態に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図12】
図12は、チャネル間パリティの符号化率とRAIDの救済能力との関係を示す図である。
【
図13】
図13は、第3実施形態の第1例に係るメモリシステムの備えるメモリチップにおけるリードベリファイ動作の対象の一例を示す図である。
【
図14】
図14は、第3実施形態の第1例に係るメモリシステムにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図15】
図15は、第3実施形態の第2例に係るメモリシステムの備えるメモリチップにおけるリードベリファイ動作の対象の一例を示す図である。
【
図16】
図16は、第3実施形態の第2例に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図17】
図17は、第3実施形態の第2例に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図18】
図18は、第3実施形態の第3例に係るメモリシステムの備えるメモリチップにおけるリードベリファイ動作の対象の一例を示す図である。
【
図19】
図19は、第3実施形態の第4例に係るメモリシステムの備えるメモリチップにおけるリードベリファイ動作の対象の一例を示す図である。
【
図20】
図20は、第3実施形態の第5例に係るメモリシステムの備えるメモリチップにおけるリードベリファイ動作の対象の一例を示す図である。
【
図21】
図21は、第4実施形態の第1例に係るメモリシステムにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図22】
図22は、第4実施形態の第1例に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図23】
図23は、第4実施形態の第1例に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図24】
図24は、第4実施形態の第2例に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図25】
図25は、第4実施形態の第3例に係るメモリシステムにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図26】
図26は、第4実施形態の第3例に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図27】
図27は、第4実施形態の第3例に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図28】
図28は、第4実施形態の第4例に係るメモリシステムの備えるメモリチップにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【
図29】
図29は、第5実施形態に係るメモリシステムにおける書き込み動作及びリードベリファイ動作を示すフローチャートである。
【発明を実施するための形態】
【0007】
以下に、実施形態について図面を参照して説明する。図面は模式的なものである。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付す。参照符号を構成する文字の後の数字は、同じ文字を含んだ参照符号によって参照され、且つ同様の構成を有する要素同士を区別するために用いられている。同じ文字を含んだ参照符号で示される要素を相互に区別する必要がない場合、これらの要素は同じ文字のみを含んだ参照符号により参照される。
【0008】
1.第1実施形態
以下に、第1実施形態に係るメモリシステムについて説明する。なお、以下の説明では、メモリシステムがSSD(solid state drive)である場合を例に説明する。
【0009】
1.1 構成
1.1.1 メモリシステムの構成
まず、メモリシステム1の全体構成の一例について、
図1を用いて説明する。
図1は、メモリシステム1の全体構成を示すブロック図である。
【0010】
メモリシステム1は、複数のメモリチップ100及びメモリコントローラ200を含む。図示せぬホストデバイスに接続される。
【0011】
メモリチップ100は、データを不揮発に記憶することが可能な不揮発性メモリである。複数のメモリチップ100は、それぞれが独立して動作することができる。なお、メモリシステム1が備えるメモリチップ100の個数は任意である。メモリチップ100の個数は、1個以上あればよい。以下では、メモリチップ100が、三次元積層型NAND型フラッシュメモリである場合について説明する。なお、メモリチップ100は、平面型NAND型フラッシュメモリであってもよく、他の不揮発性メモリであってもよい。
【0012】
メモリコントローラ200は、例えば、SoC(system on a chip)である。なお、メモリコントローラ200の各機能は専用回路で実現されてもよい。また、メモリコントローラ200の各機能はプロセッサがファームウェアを実行することにより実現されてもよい。メモリコントローラ200は、メモリチップ100に対してデータの読み出し動作、書き込み動作、及び消去動作等を命令する。メモリコントローラ200は、複数のメモリチップ100を仮想的な1つのメモリチップ100として運用することができる。以下、このような運用をチャネル間RAID(Redundant Arrays of Inexpensive disks)と呼ぶ。
【0013】
例えば、チャネル間RAIDを実行する場合、メモリコントローラ200は、1つまたは複数の書き込みデータ(ユーザデータ)を予め設定されたデータサイズに結合及び/または分解する。メモリコントローラ200は、予め設定されたデータサイズのユーザデータに対して、誤り訂正のための誤り訂正符号を付与する。以下、チャネル間RAIDに対応した誤り訂正符号を「チャネル間パリティ」と表記する。また、予め設定されたデータサイズに結合及び/または分割されたユーザデータとこれに付与されたチャネル間パリティとを含むデータを「チャネル間ECCフレーム」と表記する。すなわち、メモリコントローラ200は、1つまたは複数のユーザデータを結合し、これにチャネル間パリティを付与して1つのチャネル間ECCフレームを生成する。メモリコントローラ200は、1つのチャネル間ECCフレームを複数のメモリチップ100に分散して書き込むことができる。換言すれば、メモリコントローラ200は、ユーザデータ及びチャネル間パリティを書き込み対象となるメモリチップ100の個数(選択されるチャネルCHの個数)に応じて分割する。そして、メモリコントローラ200は、各メモリチップ100に、分割したユーザデータとチャネル間パリティとを書き込むことができる。
【0014】
メモリコントローラ200は、ホストインターフェイス回路210、内蔵メモリ(RAM)220、プロセッサ(CPU;central processing unit)230、バッファメモリ240、NANDインターフェイス回路250、及びECC回路260を含む。
【0015】
ホストインターフェイス回路210は、ホストバスによってホストデバイスと接続され、メモリコントローラ200とホストデバイスとの通信を司る。例えば、ホストインターフェイス回路210は、ホストデバイスから受信した命令及びデータをそれぞれ、CPU230及びバッファメモリ240に転送する。また、ホストインターフェイス回路210は、CPU230の命令に基づいて、バッファメモリ240内のデータ等をホストデバイスに転送する。
【0016】
RAM220は、例えば、DRAM等の半導体メモリである。RAM220は、ファームウェアや、各種の管理テーブル等を記憶する。また、RAM220は、CPU230の作業領域として使用される。
【0017】
CPU230は、メモリコントローラ200全体の動作を制御する。より具体的には、CPU230は、ホストインターフェイス回路210、RAM220、バッファメモリ240、NANDインターフェイス回路250、及びECC回路260を制御する。例えば、CPU230は、受信した書き込み命令に基づいて書き込みコマンドを発行し、発行した書き込みコマンドをNANDインターフェイス回路250に送信する。この動作は、読み出し命令及び消去命令の場合についても同様である。また、CPU230は、ウェアレベリング等、メモリチップ100のメモリ空間を管理するための様々な処理を実行する。
【0018】
バッファメモリ240は、受信した読み出しデータや、受信した書き込みデータ等を一時的に記憶する。
【0019】
NANDインターフェイス回路250は、NANDバスによってメモリチップ100と接続される。NANDインターフェイス回路250は、メモリコントローラ200とメモリチップ100との通信を司る。NANDインターフェイス回路250は、複数のチャネルCH(CH0、CH1、…)を有している。そして、各チャネルCHに複数のメモリチップ100が接続されている。例えば、チャネル間RAIDでは、複数のチャネルCHにそれぞれ接続された1つメモリチップ100が選択される。すなわち、異なるチャネルCHにそれぞれ接続された複数のメモリチップ100が選択される。
【0020】
例えば、NANDインターフェイス回路250は、CPU230から受信した命令に基づく各種制御信号をメモリチップ100に送信する。NANDインターフェイス回路250は、メモリチップ100から受信したレディビジー信号をCPU230に送信する。また、NANDインターフェイス回路250は、信号DQをメモリチップ100との間で送受信する。レディビジー信号は、メモリコントローラ200に、メモリチップ100がメモリコントローラ200からの命令を受信可能な状態であるか否かを通知する信号である。例えば、レディビジー信号は、メモリチップ100がメモリコントローラ200からの命令を受信可能な状態(レディ状態)にある場合にHigh(“H”)レベルとされ、受信不可能な状態(ビジー状態)にある場合にLow(“L”)レベルとされる。信号DQは、例えば8ビットの信号である。信号DQは、コマンド、アドレス、及びデータ等を含む。より具体的には、例えば、書き込み動作時において、メモリチップ100に転送される信号DQは、CPU230が発行した書き込みコマンド、アドレス、及びバッファメモリ240内の書き込みデータを含む。また、読み出し動作時において、メモリコントローラ200からメモリチップ100に転送される信号DQは、CPU230が発行した読み出しコマンド及びアドレスを含む。メモリチップ100からメモリコントローラ200に転送される信号DQは、読み出しデータを含む。
【0021】
ECC回路260は、データの符号化及び復号化のための誤り訂正(ECC:error checking and correcting)処理を行う。以下、データを符号化するためのECC処理を、「符号化のECC処理」とも表記する。また、データを復号化するためのECC処理を「復号化のECC処理」とも表記する。符号化または復号化のいずれかを限定しない場合は、「ECC処理」と表記する。
【0022】
ECC回路260が実行するECC処理には、チャネル間RAIDに対応したECC処理(以下、「チャネル間ECC処理」と表記する)と、メモリチップ毎のデータに対して実行されるECC処理(以下、「チャネル内ECC処理」と表記する)とがある。
【0023】
例えば、チャネル間ECC処理を実行する場合、ECC回路260は、データの書き込み時に、符号化のチャネル間ECC処理として、予め設定されたデータサイズの書き込みデータ(ユーザデータ)に基づいてチャネル間パリティを生成する。ECC回路260は、例えば、符号化方式としてRS(Reed Solomon)符号のチャネル間パリティを生成する。ECC回路260は、ユーザデータにチャネル間パリティを付与してチャネル間ECCフレームを生成する。生成されたチャネル間ECCフレームは、複数のチャネルCHを介して複数のメモリチップ100に分散して書き込まれる。また、ECC回路260は、データの読み出し時に、復号化のチャネル間ECC処理として、複数のメモリチップ100から読み出されたチャネル間ECCフレームのチャネル間パリティに基づいて読み出しデータの誤り訂正を行う。例えば、チャネル間RAIDの場合、ECC回路260は、いくつかのメモリチップ100からユーザデータ(分割されたチャネル間ECCフレーム)を読み出せなくなっても、すなわち、いくつかのユーザデータが欠損しても、それが予め設定された数以下であれば、他のメモリチップ100から読み出したユーザデータ及びチャネル間パリティに基づいて復号化のチャネル間ECC処理を実行できる。これにより、欠損したデータが復元できる。
【0024】
また、例えば、チャネル内ECC処理を実行する場合、ECC回路260は、符号化のチャネル内ECC処理として、メモリチップ100に書き込むデータに対して誤り訂正符号(以下、「チャネル内パリティ」と表記する)を生成する。すなわち、チャネル内パリティは、メモリチップ毎に生成される。ECC回路260は、例えば、符号化方式としてBCH(Bose-Chaudhuri-Hocquenghem)符号またはLDPC(Low density parity check)符号のチャネル内パリティを生成する。ECC回路260は、メモリチップ100への書き込みデータにチャネル内パリティを付与する。以下、メモリチップ100への書き込みデータとこれに付与されたチャネル内パリティとを含むデータを「チャネル内ECCフレーム」と表記する。また、ECC回路260は、データの読み出し時に、復号化のチャネル内ECC処理として、メモリチップ100の読み出しデータ(チャネル内ECCフレーム)に含まれるチャネル内パリティから読み出しデータ(ユーザデータ)の誤り訂正を行う。
【0025】
チャネル間RAIDにおいて、各メモリチップ100にデータを書き込む場合、ECC回路260は、まず、符号化のチャネル間ECC処理として、予め設定されたデータサイズの書き込みデータ(ユーザデータ)にチャネル間パリティを付与して、チャネル間ECCフレームを生成する。次に、ECC回路260は、符号化のチャネル内ECC処理として、分割されたチャネル間ECCフレーム毎に、チャネル内パリティを付与してチャネル内ECCフレームを生成する。従って、各メモリチップ100に書き込まれるデータ(チャネル内ECCフレーム)には、分割されたチャネル間ECCフレーム(分割されたユーザデータ及び/または分割されたチャネル間パリティ)及びチャネル内パリティが含まれる。
【0026】
チャネル間RAIDにおいて、各メモリチップ100からデータを読み出す場合、ECC回路260は、まず、各メモリチップ100のデータに対して、復号化のチャネル内ECC処理を実行する。より具体的には、ECC回路260は、チャネル内ECCフレーム、すなわち分割されたチャネル間ECCフレームの誤り訂正を行う。復号化のチャネル内ECC処理で誤り訂正ができなかった場合、ECC回路260は、分割されたチャネル間ECCフレームを集めて、復号化のチャネル間ECC処理を実行する。より具体的には、ECC回路260は、チャネル間ECCフレームの誤り訂正を行う。
【0027】
1.1.2 メモリチップの構成
次に、メモリチップ100の詳細な構成の一例について、
図2を用いて説明する。
図2は、メモリチップ100の詳細な構成を示すブロック図である。なお、
図2の例では、各ブロックの接続の一部を矢印線により示しているが、各ブロック間の接続はこれに限定されない。
【0028】
メモリチップ100は、入出力回路10、ロジック制御回路11、ステータスレジスタ12、アドレスレジスタ13、コマンドレジスタ14、シーケンサ15、レディ/ビジー回路16、電圧発生回路17、メモリセルアレイ18、ロウデコーダ19、センスアンプ20、データレジスタ21、及びカラムデコーダ22を含む。
【0029】
入出力回路10は、端子DQ0~DQ7を通じて、メモリチップ100とメモリコントローラ200との信号DQの双方向通信を行う。また、入出力回路10は、メモリコントローラ200から受信したデータDATをデータレジスタ21に送信し、アドレスADDをアドレスレジスタ13に送信し、コマンドCMDをコマンドレジスタ14に送信する。また、入出力回路10は、ステータスレジスタ12から受信したステータス情報STS、データレジスタ21から受信したデータDAT、及びアドレスレジスタ13から受信したアドレスADD等を、メモリコントローラ200に送信する。
【0030】
ロジック制御回路11は、端子CEn、CLE、ALE、WEn、及びREnを通じて、メモリコントローラ200から制御信号を受信する。そして、ロジック制御回路11は、受信した制御信号に基づいて、入出力回路10及びシーケンサ15を制御する。制御信号とは、例えば、チップイネーブル信号、コマンドラッチイネーブル信号、アドレスラッチイネーブル信号、ライトイネーブル信号、及びリードイネーブル信号である。ロジック制御回路11は、端子CEnからチップイネーブル信号を受信する。チップイネーブル信号は、メモリチップ100をイネーブルにするための信号である。チップイネーブル信号は、例えば“L”レベルでアサートされる。ロジック制御回路11は、端子CLEからコマンドラッチイネーブル信号を受信する。コマンドラッチイネーブル信号は、信号DQがコマンドであることを示す信号である。コマンドラッチイネーブル信号は、例えば“H”レベルでアサートされる。ロジック制御回路11は、端子ALEからアドレスラッチイネーブル信号を受信する。アドレスラッチイネーブル信号は、信号DQがアドレスであることを示す信号である。アドレスラッチイネーブル信号は、例えば“H”レベルでアサートされる。ロジック制御回路11は、端子WEnからライトイネーブル信号を受信する。ライトイネーブル信号は、受信した信号をメモリチップ100内へ取り込むための信号である。ライトイネーブル信号は、メモリコントローラ200から信号DQを受信する度に、例えば“L”レベルでアサートされる。よって、ライトイネーブル信号がトグルされる度に、信号DQがメモリチップ100に取り込まれる。ロジック制御回路11は、端子REnからリードイネーブル信号を受信する。リードイネーブル信号は、メモリコントローラ200が、メモリチップ100からデータを読み出すための信号である。リードイネーブル信号は、例えば“L”レベルでアサートされる。よって、メモリチップ100は、トグルされるリードイネーブル信号に基づいて、メモリコントローラ200に信号DQを出力する。
【0031】
ステータスレジスタ12は、例えば、書き込み動作、読み出し動作、及び消去動作におけるステータス情報STSを一時的に記憶する。ステータスレジスタ12は、メモリコントローラ200に動作が正常に終了したか否かを通知する。
【0032】
アドレスレジスタ13は、受信したアドレスADDを一時的に記憶する。アドレスレジスタ13は、ロウアドレスRAをロウデコーダ19へ転送する。アドレスレジスタ13は、カラムアドレスCAをカラムデコーダ22に転送する。
【0033】
コマンドレジスタ14は、受信したコマンドCMDを一時的に記憶する。コマンドレジスタ14は、記憶したコマンドCMDをシーケンサ15に転送する。
【0034】
シーケンサ15は、受信したコマンドCMDに基づいて、メモリチップ100全体の動作を制御する。より具体的には、シーケンサ15は、受信したコマンドCMDに基づいて、例えば、ステータスレジスタ12、レディ/ビジー回路16、電圧発生回路17、ロウデコーダ19、センスアンプ20、データレジスタ21、及びカラムデコーダ22等を制御する。
【0035】
レディ/ビジー回路16は、シーケンサ15の動作状況に基づいて、端子RBnを通じて、レディビジー信号をメモリコントローラ200に送信する。
【0036】
電圧発生回路17は、書き込み動作、読み出し動作、及び消去動作に必要な電圧を発生させ、発生させた電圧を例えばメモリセルアレイ18、ロウデコーダ19、センスアンプ20、データレジスタ21、及びカラムデコーダ22等に供給する。
【0037】
メモリセルアレイ18は、複数のブロックBLK(BLK0、BLK1、BLK2、…)を備えている。メモリセルアレイ18内のブロックBLKの個数は任意である。ブロックBLKは、ロウ及びカラムに対応付けられた複数の不揮発性のメモリセルトランジスタ(以下、「メモリセル」とも表記する)を含む。メモリセルアレイ18の詳細については、後述する。
【0038】
ロウデコーダ19は、メモリコントローラ200から受信したロウアドレスRAをデコードする。そして、ロウデコーダ19は、デコードの結果に基づいてメモリセルアレイ18のロウを選択する。より具体的には、ロウデコーダ19は、ワード線及び選択ゲート線に電圧を与えることでロウを選択する。
【0039】
センスアンプ20は、読み出し動作時には、メモリセルアレイ18から読み出された電圧をデータとして取り扱いが可能なレベルまで増幅する。そして、センスアンプ20は、読み出したデータをデータレジスタ21に送信する。また、センスアンプ20は、書き込み動作時には、書き込みデータに応じた電圧をメモリセルアレイ18に与える。
【0040】
データレジスタ21は、複数のラッチ回路(不図示)を備える。ラッチ回路は、書き込みデータまたは読み出しデータを一時的に記憶する。
【0041】
カラムデコーダ22は、例えば書き込み動作、読み出し動作、及び消去動作の際、カラムアドレスCAをデコードする。カラムデコーダ22は、デコードの結果に基づいてデータレジスタ21のラッチ回路を選択する。
【0042】
1.1.3 メモリセルアレイの構成
次に、メモリセルアレイ18の回路構成の一例について、
図3を用いて説明する。なお、
図3の例は、ブロックBLK0の回路構成を示しているが、他のブロックBLKの構成も同様である。
【0043】
ブロックBLKは、例えば4つのストリングユニットSU0~SU3を含んでいる。各ストリングユニットSUは、ビット線BL0~BL(k-1)(kは2以上の整数)にそれぞれ関連付けられた複数のNANDストリングNS(以下、「メモリストリング」とも表記する)を含んでいる。
【0044】
各NANDストリングNSは、複数のメモリセルトランジスタMC(MC0~MC11)、並びに選択トランジスタST1及びST2を含んでいる。メモリセルトランジスタMCは、制御ゲート及び電荷蓄積層を含み、データを不揮発に保持する。メモリセルトランジスタMCは、電荷蓄積層に絶縁層を用いたMONOS型であってもよいし、電荷蓄積層に導電体層を用いたFG型であってもよい。選択トランジスタST1及びST2のそれぞれは、各種動作時におけるストリングユニットSUの選択に使用される。
以下、メモリセルトランジスタMCがMONOS型である例として説明する。
【0045】
各NANDストリングNSにおいて、選択トランジスタST2、メモリセルトランジスタMC0~MC11、及び選択トランジスタST1は、直列接続される。そして、選択トランジスタST1のドレインは、関連付けられたビット線BLに接続される。選択トランジスタST2のソースは、ソース線SLに接続される。
【0046】
同一のブロックBLKにおいて、メモリセルトランジスタMC0~MC11の制御ゲートは、それぞれワード線WL0~WL11に共通接続される。ストリングユニットSU内の複数の選択トランジスタST1のゲートは、対応する選択ゲート線SGDに共通に接続される。より具体的には、ストリングユニットSU0内の複数の選択トランジスタST1のゲートは、選択ゲート線SGD0に共通に接続される。ストリングユニットSU1~SU3も同様に、選択トランジスタST1のゲートは、対応する選択ゲート線SGD1~SGD3のいずれかに接続される。複数の選択トランジスタST2のゲートは、選択ゲート線SGSに共通接続される。
【0047】
以上で説明したメモリセルアレイ18の回路構成において、ワード線WL0~WL5は、後述する下位メモリピラーLMPに対応し、ワード線WL6~WL11は、後述する上位メモリピラーUMPに対応している。ビット線BLは、各ストリングユニットSUで同一のカラムアドレスが割り当てられたNANDストリングNSによって共有される。ソース線SLは、例えば複数のブロックBLK間で共有される。
【0048】
1つのストリングユニットSU内で共通のワード線WLに接続された複数のメモリセルトランジスタMCの集合は、例えば、「セルユニットCU」と表記される。例えば、それぞれが1ビットデータを記憶するメモリセルトランジスタMCを含むセルユニットCUの記憶容量は、「1ページデータ」として定義される。セルユニットCUは、メモリセルトランジスタMCが記憶するデータのビット数に基づいて、2ページデータ以上の記憶容量を有し得る。
【0049】
なお、メモリセルアレイ18の回路構成は、上記構成に限定されない。例えば、各NANDストリングNSが含むメモリセルトランジスタMC並びに選択トランジスタST1及びST2の個数は、それぞれ任意の個数に設計され得る。各ブロックBLKが含むストリングユニットSUの個数は、任意の個数に設計され得る。
【0050】
また、ワード線WL5及びWL6間には、1本以上のダミーワード線が設けられてもよい。ダミーワード線が設けられる場合、各NANDストリングNSのメモリセルトランジスタMC5及びMC6間には、ダミーワード線の本数に対応してダミートランジスタが設けられる。ダミートランジスタは、メモリセルトランジスタMCと同様の構造を有し、データの記憶に使用されないトランジスタである。
【0051】
1.1.4 メモリセルアレイの断面構成
次に、メモリセルアレイ18の断面構成の一例について、
図4を用いて説明する。
図4は、メモリセルアレイ18の断面図である。
【0052】
半導体基板1000の表面近傍には、p型ウェル領域30が、設けられている。p型ウェル領域30は、ソース線SLとして機能する。p型ウェル領域30の表面近傍には、n+型拡散層領域31が、設けられている。n+型拡散層領域31は、n型不純物の拡散領域である。n+型拡散層領域31には、例えばリンがドープされている。
【0053】
p型ウェル領域30及びn+型拡散層領域31上には、絶縁層32が設けられる。絶縁層32上には、3層の導電体層33と2層の絶縁層40とが交互に積層されている。導電体層33は、例えば、XY平面に沿って広がった板状に形成される。積層された複数の導電体層33は、選択ゲート線SGSとして機能する。なお、導電体層33の層数は任意である。導電体層33は、1層以上あればよい。
【0054】
最上層の導電体層33上には、絶縁層41が設けられている。絶縁層41上には、6層の導電体層34と5層の絶縁層42とが交互に積層されている。導電体層34は、例えば、XY平面に沿って広がった板状に形成される。積層された複数の導電体層34は、p型ウェル領域30側から順に、それぞれワード線WL0~WL5として機能する。例えば、ワード線WL0として機能する最下層の導電体層34は、Z方向において、絶縁層41を介在させて最上層の導電体層33と隣り合う。
【0055】
最上層の導電体層34上には、絶縁層43が設けられている。絶縁層43上には、6層の導電体層35と5層の絶縁層44とが交互に積層されている。導電体層35は、例えば、XY平面に沿って広がった板状に形成される。積層された複数の導電体層35は、p型ウェル領域30側から順に、すなわち最下層から順に、それぞれワード線WL6~WL11として機能する。例えば、複数の導電体層35のうち、ワード線WL6として機能する最下層の導電体層35は、Z方向において、導電体層34に最も近い位置に配置されている。
【0056】
最上層の導電体層35上には、絶縁層45が設けられている。絶縁層45上には、3層の導電体層36と2層の絶縁層46とが交互に積層されている。導電体層36は、例えば、XY平面に沿って広がった板状に形成される。積層された複数の導電体層36は、選択ゲート線SGDとして機能する。例えば、ワード線WL11として機能する最上層の導電体層35は、Z方向において、絶縁層45を介在させて最下層の導電体層36と隣り合う。なお、導電体層36の層数は任意である。導電体層36は、1層以上あればよい。
【0057】
最上層の導電体層36上には、絶縁層47が設けられている。絶縁層47上には、導電体層37が設けられている。導電体層37は、例えば、Y方向に延伸したライン状に形成され、ビット線BLとして機能する。複数の導電体層37は、図示せぬ領域において、X方向に沿って配列されている。
【0058】
導電体層33~37は、導電材料により構成される。例えば、導電体層33~36は、タングステン(W)を含んでいる。また、例えば、導電体層37は、銅(Cu)を含んでいる。絶縁層32及び40~47には、例えば、酸化シリコン(SiO2)が用いられる。
【0059】
メモリピラーMPは、Z方向に沿って延伸して設けられ、導電体層33~36を貫通(通過)している。1つのメモリピラーMPが1つのNANDストリングNSに対応する。
【0060】
メモリピラーMPの各々は、底面がp型ウェル領域30に接し、導電体層33及び34を貫通するホールLMH内に形成される下位メモリピラーLMPと、下位メモリピラーLMP上に設けられ、導電体層35及び36を貫通するホールUMH内に形成される上位メモリピラーUMPとを有している。下位メモリピラーLMPと上位メモリピラーUMPとの境界部分は、接合部JTとも呼ばれる。例えば、下位メモリピラーLMP及び上位メモリピラーUMPはテーパー形状を有している。このため、メモリピラーMPは、接合部JTにおいて、下位メモリピラーLMPの上端の外径が、上位メモリピラーUMPの下端の外径よりも大きい構造を有し得る。
【0061】
メモリピラーMPの各々は、ブロック絶縁膜50、電荷蓄積層51、トンネル絶縁膜52、半導体層53、コア層54、及びキャップ層55を含む。ブロック絶縁膜50、電荷蓄積層51、トンネル絶縁膜52、半導体層53、及びコア層54は、下位メモリピラーLMPと上位メモリピラーUMPとの間で連続的に設けられている。
【0062】
より具体的には、ホールLMH及びUMHの側面にはブロック絶縁膜50、電荷蓄積層51、及びトンネル絶縁膜52が順次積層されている。そして、側面がトンネル絶縁膜52に接し、底面がp型ウェル領域30に接するように半導体層53が形成されている。半導体層53は、メモリセルトランジスタMC並びに選択トランジスタST1及びST2のチャネルが形成される領域である。よって、半導体層53は、選択トランジスタST2、メモリセルトランジスタMC0~MC11、及び選択トランジスタST1の電流経路を接続する信号線として機能する。半導体層53内にはコア層54が設けられている。そして半導体層53及びコア層54上には、側面がトンネル絶縁膜52に接するキャップ層55が形成されている。
【0063】
ブロック絶縁膜50、トンネル絶縁膜52、及びコア層54には、例えば、SiO2が用いられる。電荷蓄積層51には、例えば、窒化シリコン(SiN)が用いられる。半導体層53及びキャップ層55には、例えば、ポリシリコンが用いられる。
【0064】
以上で説明したメモリピラーMPの構造では、下位メモリピラーLMPと導電体層33とが交差した部分が、選択トランジスタST2として機能する。下位メモリピラーLMPと導電体層34とが交差部分がメモリセルトランジスタMC0~MC5として機能する。上位メモリピラーUMPと導電体層35とが交差した部分が、メモリセルトランジスタMC6~MC11として機能する。上位メモリピラーUMPと導電体層36とが交差した部分が、選択トランジスタST1として機能する。
【0065】
メモリピラーMP内のキャップ層55上には、柱状のコンタクトプラグCVが設けられる。コンタクトプラグCVの上面には、1つの導電体層37、すなわち1本のビット線BLが接触している。コンタクトプラグCVには、例えば、タングステンが含まれる。
【0066】
導電体層33~36を、例えば、ブロック毎にY方向に分離するように、X方向に延伸するスリットSLTが設けられている。
【0067】
例えば、絶縁層32、導電体層33~36、及び絶縁層40~46をY方向に分離するようにX方向に延伸するSLTが設けられている。スリットSLTの上端は、最上層の導電体層36と導電体層37との間の層に含まれている。スリットSLTの下端は、p型ウェル領域30内のn+型拡散層領域31に接触している。また、スリットSLTは、例えばコンタクトLI及びスペーサSPを含んでいる。
【0068】
コンタクトLIは、少なくとも一部がXZ平面に沿って広がった板状に形成される。コンタクトLIの底部は、n+型拡散層領域31と電気的に接続されている。コンタクトLIは、ソース線SLとして使用される。コンタクトLIは、導電材料により構成され、半導体であってもよいし、金属であってもよい。スペーサSPは、コンタクトLIの側面を覆っている。コンタクトLIと、導電体層33~36並びに絶縁層40~46のそれぞれとの間は、スペーサSPによって離隔されている。つまり、コンタクトLIとスリットSLTに隣接した複数の導電体層との間は、スペーサSPによって絶縁される。スペーサSPとしては、SiO2やSiN等の絶縁体が使用される。
【0069】
1.2 メモリセルトランジスタの閾値電圧分布
次に、本実施形態に係るメモリセルトランジスタMCの取り得る閾値電圧分布について、
図5を用いて説明する。
図5は、メモリセルトランジスタMCの閾値電圧分布とデータの割り付けの関係を示す図である。以下、本実施形態では、メモリセルトランジスタMCが8値(3ビット)のデータを保持可能な場合について説明するが、保持可能なデータは8値に限定されない。本実施形態においては、メモリセルトランジスタMCが1ビット以上のデータを保持可能であればよい。
【0070】
各々のメモリセルトランジスタMCの閾値電圧は、離散的な例えば8個の分布のいずれかに含まれる値を取る。以下、8個の分布を閾値電圧の低い順にそれぞれ、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、及び“G”ステートと呼ぶ。
【0071】
“Er”ステートは、例えば、データの消去状態に相当する。そして“A”~“G”ステートは、電荷蓄積層に電荷が注入されてデータが書き込まれた状態に相当する。書き込み動作において、各閾値電圧分布に対応するベリファイ電圧をV1~V7とする。すると、これらの電圧値は、V1<V2<V3<V4<V5<V6<V7<VREADの関係にある。電圧VREADは、読み出し動作時において非選択ワード線に印加される電圧である。メモリセルトランジスタMCは、ゲートに電圧VREADが印加されると保持するデータによらずにオン状態とされる。
【0072】
より具体的には、“Er”ステートに含まれる閾値電圧は、電圧V1未満である。“A”ステートに含まれる閾値電圧は、電圧V1以上であり、且つ電圧V2未満である。“B”ステートに含まれる閾値電圧は、電圧V2以上であり、且つ電圧V3未満である。“C”ステートに含まれる閾値電圧は、電圧V3以上であり、且つ電圧V4未満である。“D”ステートに含まれる閾値電圧は、電圧V4以上であり、且つ電圧V5未満である。“E”ステートに含まれる閾値電圧は、電圧V5以上であり、且つ電圧V6未満である。“F”ステートに含まれる閾値電圧は、電圧V6以上であり、且つ電圧V7未満である。そして、“G”ステートに含まれる閾値電圧は、電圧V7以上であり、且つ電圧VREAD未満である。
【0073】
例えば、読み出し電圧は、隣り合う閾値電圧分布の間にそれぞれ設定される。“A”~“G”ステートの読み出し動作に対応する読み出し電圧をそれぞれVA~VGとする。すると、これらの電圧は、VA<VB<VC<VD<VE<VF<VG<VREADの関係にある。
【0074】
より具体的には、例えば、あるメモリセルトランジスタMCが“Er”ステートの閾値電圧を有するか“A”ステート以上の閾値電圧を有するかを判定するための読み出し電圧VAは、“Er”ステートにおける最大の閾値電圧と“A”ステートにおける最小の閾値電圧との間に設定される。あるメモリセルトランジスタMCが“A”ステート以下の閾値電圧を有するか“B”ステート以上の閾値電圧を有するかを判定するための読み出し電圧VBは、“A”ステートにおける最大の閾値電圧と“B”ステートにおける最小の閾値電圧との間に設定される。その他の読み出し電圧VC、VD、VE、VF、及びVGも、読み出し電圧VA及びVBと同様に設定される。
【0075】
以下、“A”~“G”ステートに対応する読み出し動作のことをそれぞれ、読み出し動作AR、BR、CR、DR、ER、FR、及びGRと表記する。読み出し動作ARは、メモリセルトランジスタMCの閾値電圧が電圧VA未満か否かを判定する。読み出し動作BRは、メモリセルトランジスタMCの閾値電圧が電圧VB未満か否かを判定する。読み出し動作CRは、メモリセルトランジスタMCの閾値電圧が電圧VC未満か否かを判定する。以下、同様である。
【0076】
なお、各ステートに対応するベリファイ電圧の設定値と読み出し電圧の設定値とは、同じであってもよく、異なっていてもよい。リードディスターブ、データリテンション、あるいは隣接するワード線WLに接続されたメモリセルトランジスタMCへの書き込み動作の有無等により、メモリセルトランジスタMCの閾値電圧は変動する。本実施形態では、上述のような予め想定される閾値電圧の変動に対して、読み出し電圧を予め設定された電圧値だけシフトさせて読み出し動作を実行できる。
【0077】
以上のように、各メモリセルトランジスタMCは、8個の閾値電圧分布のいずれかを有することで、8種類の状態を取ることができる。これらの状態を、2進数表記で“000”~“111”に割り当てることで、各メモリセルトランジスタMCは3ビットのデータを保持できる。以下、3ビットのデータをそれぞれ、Lowerビット、Middleビット、及びUpperビットと表記する。また、セルユニットCUに一括して書き込まれる(または読み出される)Lowerビットの集合をLowerページ、Middleビットの集合をMiddleページ、Upperビットの集合をUpperページと呼ぶ。
【0078】
図5の例では、各閾値電圧分布に含まれるメモリセルトランジスタMCに対して、“Upperビット/Middleビット/Lowerビット”に以下に示すようにデータを割り付ける。
“Er”ステート:“111”データ
“A”ステート:“110”データ
“B”ステート:“100”データ
“C”ステート:“000”データ
“D”ステート:“010”データ
“E”ステート:“011”データ
“F”ステート:“001”データ
“G”ステート:“101”データ
【0079】
このように割り付けられたデータを読み出す場合、Lowerビットは、読み出し動作AR及びERによって確定する。Middleビットは、読み出し動作BR、DR、及びFRによって確定する。Upperビットは、読み出し動作CR及びGRによって確定する。つまりLowerビット、Middleビット、及びUpperビットの値はそれぞれ、2回、3回、及び2回の読み出し動作によって確定する。以下では、このデータの割り付けのことを「2-3-2コード」と表記する。なお、“Er”~“G”ステートへのデータの割り付けは、2-3-2コードに限定されない。
【0080】
1.3 読み出し動作
次に、読み出し動作について、
図6を用いて説明する。
図6は、読み出し電圧のシフト及び、トラッキングの一例を示す図である。なお、
図6の例では、説明を簡略化するため、“Er”ステートの閾値電圧分布と“A”ステートの閾値電圧分布とを示す。
【0081】
まず、読み出し動作時における読み出し電圧のシフトについて説明する。
本実施形態では、予め想定される閾値電圧分布のシフトに対して、シーケンサ15は、読み出し電圧を予め設定された電圧値だけシフトさせて読み出し動作を実行できる。例えば、実線で示す閾値電圧分布の場合、読み出し電圧としてVA2が設定される。これに対し、一点鎖線で示すように、閾値電圧分布がマイナス側にシフトしている場合、読み出し電圧VA1(<VA2)が設定される。また、破線で示すように、閾値電圧分布がプラス側にシフトしている場合、読み出し電圧VA3(>VA2)が設定される。読み出し電圧をシフトさせることにより、メモリコントローラ200において復号化のチャネル内ECC処理による読み出しデータの復号化を実行する際に、フェイルビット数を低減できる。
【0082】
次に、読み出し電圧のトラッキング動作について説明する。
例えば、データの書き込み直後の閾値電圧分布が破線で示す通りであったとする。しかし、書き込み動作後のデータリテンション、あるいは読み出し動作時のリードディスターブ等の影響により、閾値電圧分布の分布幅が拡がる場合がある。このような場合、電圧VAで読み出し動作を行うと、斜線部分の領域に相当するメモリセルトランジスタMCがフェイルビットとなる。発生したフェイルビット数が、ECC回路260が誤り訂正可能なビット数を超えていれば、データを正しく読み出すことが困難となる。例えば、フェイルビット数が増加し、復号化のチャネル内ECC処理がフェイルした場合、メモリチップ100は、トラッキング動作を実行する。トラッキング動作は、隣り合う閾値電圧分布が互いに重なる場合に、2つの閾値電圧分布の谷となる場所、すなわち、2つの閾値電圧分布の交点を求め、得られた交点から適切な読み出し電圧VA’、すなわち読み出し電圧VAのシフト値を探索(または算出)する動作である。または、トラッキング動作は、読み出し電圧VAを変化させていった際に、復号化のチャネル内ECC処理におけるフェイルビット数が最小となる電圧、または復号化のチャネル内ECC処理による誤り訂正が可能となる電圧を探索する動作である。
【0083】
トラッキング動作において、メモリチップ100は、読み出し電圧をシフトさせながら複数回の読み出し動作を実行する(以下、「トラッキングリード」と表記する)。例えば、メモリコントローラ200は、復号化のチャネル内ECC処理によりトラッキングリードを実行してもよい。この場合、メモリコントローラ200は、復号化のチャネル内ECC処理の結果から、フェイルビット数が最小となる読み出し電圧のシフト値を算出する。あるいは、例えば、メモリチップ100は、トラッキングリードの各読み出し電圧におけるオンセル数(オン状態となるメモリセルトランジスタMCの個数)をカウントしてもよい。この場合、メモリコントローラ200は、オンセル数の結果から、読み出し電圧のシフト値を算出する。以下では、メモリコントローラ200が、復号化のチャネル内ECC処理の結果から読み出し電圧のシフト値を算出する場合について説明する。
【0084】
1.4 書き込み動作
次に、書き込み動作について説明する。書き込み動作は、大まかにはプログラム動作とプログラムベリファイ動作とを含む。そして、プログラム動作とプログラムベリファイ動作との組み合わせ(以下、「プログラムループ」と表記する)を繰り返すことで、メモリセルトランジスタMCの閾値電圧がターゲットレベルまで上昇される。
【0085】
プログラム動作は、電子を電荷蓄積層に注入することによりメモリセルトランジスタMCの閾値電圧を上昇させる(または注入を禁止することで閾値電圧を維持させる)動作のことである。
【0086】
プログラムベリファイ動作は、プログラム動作の後、データを読み出し、メモリセルトランジスタMCの閾値電圧が目標とするターゲットレベルに達したか否かをメモリチップ100内で判定する動作である。プログラムベリファイ動作で読み出したデータは、メモリコントローラ200には送信されない。
【0087】
本実施形態では、1つのブロックBLKにおいて、書き込み動作を実行する場合、ワード線WL0、WL1、WL2、…の順に選択される。すなわち、
図4で説明した最下層に位置するワード線WL0から順に選択され、最上層に位置するワード線WL11が最後に選択される。より具体的には、例えば、まず、ワード線WL0に接続されたストリングユニットSU0、SU1、SU2、SU3のセルユニットCUにデータが順に書き込まれる。次に、ワード線WL1に接続されたストリングユニットSU0、SU1、SU2、SU3のセルユニットCUにデータが順に書き込まれる。次に、ワード線WL2に接続されたストリングユニットSU0、SU1、SU2、SU3のセルユニットCUにデータが順に書き込まれる。同様に、ワード線WL3~WL11の順に書き込み動作が実行される。なお、書き込み動作の際に選択されるワード線WL(セルユニットCU)の順序は任意に設計可能である。
【0088】
1.5 リードベリファイ動作
次に、リードベリファイ動作について説明する。本実施形態では、メモリコントローラ200は、書き込み動作の後、メモリチップ100の任意のメモリ領域における物理故障の有無を確認するために、リードベリファイ動作を実行する。より具体的には、メモリコントローラ200は、書き込み対象のブロックBLKにおいて、任意のワード線WL(セルユニットCU)のデータをメモリコントローラ200に読み出し(以下、「読み出し処理」と表記する)、ECC回路260による復号化のチャネル内ECC処理を行うことにより、バースト故障(物理故障)が発生していないか確認する。なお、リードベリファイ動作における読み出し処理は、通常の読み出し動作と同様である。そして、メモリコントローラ200は、バースト故障が発生していると判定した場合は、トラッキング動作により求めたシフト値に基づいて、リフレッシュ動作またはバッドブロック化処理を実行する。リフレッシュ動作は、対象となるメモリ領域内の有効データを他のメモリ領域に移動させる動作である。また、バッドブロック化処理は、対象となるメモリ領域を無効化し使用不可とする処理である。
【0089】
本実施形態では、書き込み動作の対象となる選択ワード線WLを、変数n(nは0以上の整数)を用いてWLnと表記する。また、リードベリファイ動作時の読み出し処理の対象となる選択ワード線WLを、変数m(mは、m≦nとなる任意の整数)を用いてWLmと表記する。本実施形態では、メモリコントローラ200がリードベリファイ動作を実行する場合、m=n-2の関係にあるワード線WLmを選択する場合について説明する。すなわち、書き込み動作の対象となるワード線WLに対して2層下に配置されたワード線WLがリードベリファイ動作の読み出し処理の対象とされる。例えば、リードベリファイ動作を実行する場合、ワード線WLmに隣接するワード線WL(m-1)及びWL(m+1)に接続されたメモリセルトランジスタMCは、データ書き込み済みの状態にある。従って、隣接メモリセルトランジスタMCへのデータの書き込み有無による閾値電圧の変動によって生じるフェイルビットの増加を抑制できる。
【0090】
より具体的には、例えば、書き込み動作時に変数nが2以上(n≧2)となるワード線WLが選択された場合、メモリシステム1は、リードベリファイ動作を実行し、読み出し処理にワード線WLmを選択する。これに対し、例えば、書き込み動作時に変数nが2未満(n<2)、すなわち、ワード線WL0またはWL1が選択された場合、変数mが0未満(m<0)となるため、メモリシステム1は、リードベリファイ動作を実行しない。
【0091】
なお、変数nと変数mとは、m=n-2の関係に限定されない。例えば、変数nと変数mとは、例えば、m=n-1の関係であってもよいし、m=nの関係であってもよい。例えば、m=n-1の関係にある場合、メモリシステム1は、変数nが1未満、すなわち、ワード線WL0が書き込み先として選択されると、選択されているステップではリードベリファイ動作を実行しない。本実施形態では、ワード線WLmに接続されたメモリセルトランジスタMCは、ワード線WLnに対応するメモリセルトランジスタMCに書き込み動作を実行する前に、データ書き込み済み(データを保持している状態)であればよい。
【0092】
1.5.1 リードベリファイ動作の全体の流れ
まず、リードベリファイ動作の全体の流れについて、
図7を用いて説明する。
図7は、リードベリファイ動作の全体の流れを示すフローチャートである。本実施形態のリードベリファイ動作は、読み出し処理、復号化のチャネル内ECC処理、トラッキング処理、リフレッシュ処理、及びバッドブロック化処理を含む。
【0093】
まず、ホストデバイスは、メモリシステム1に書き込み命令(論理アドレス及び書き込みデータを含む)を送信する(S10)。
【0094】
メモリコントローラ200は、ホストデバイスから書き込み命令を受信すると、書き込み対象のワード線WLnを選択する。より具体的には、例えば、チャネル間RAIDの場合、ECC回路260は、符号化処理として、ホストデバイスから受信したユーザデータにチャネル間パリティを付与して、チャネル間ECCフレームを生成する。更に、ECC回路260は、符号化処理として、分割されたチャネル間ECCフレームの各々に、チャネル内パリティを付与して、複数のチャネル内ECCフレームを生成する。CPU230は、チャネル内ECCフレームに、いずれかのチャネルCHのいずれかのメモリチップ100の物理アドレス(ブロックBLK、ワード線WL、及びストリングユニットSU)を割り当てる。次に、メモリコントローラ200は、割り当てられたメモリチップ100に、書き込み動作のコマンドセットを送信する(S11)。書き込み動作のコマンドセットには、書き込みコマンド、アドレス、及びチャネル内ECCフレーム(書き込みデータ)が含まれる。チャネル間RAIDの場合、メモリコントローラ200は、NANDインターフェイス回路250の複数のチャネルCHを介して、複数のメモリチップ100に書き込み動作のコマンドセットを送信する。
【0095】
メモリチップ100は、書き込み動作のコマンドセットを受信すると書き込み動作を実行する(S12)。
【0096】
書き込み動作終了後、選択したワード線WLnがリードベリファイ実施条件を満たしている場合(S13_Yes)、メモリコントローラ200は、リードベリファイ動作を開始する(S14)。他方で、選択したワード線WLnがリードベリファイ実施条件を満たしていない場合(S13_No)、メモリコントローラ200は、リードベリファイ動作を実行しない。より具体的には、メモリコントローラ200は、n≧2の場合、リードベリファイ実施条件を満たしていると判断し、n<2の場合、リードベリファイ実施条件を満たしていないと判断する。
【0097】
メモリコントローラ200は、リードベリファイ動作を開始すると、ワード線WLmを選択し、メモリチップ100に読み出し処理のコマンドセットを送信する(S15)。読み出し処理のコマンドセットには、通常の読み出し動作と同じであり、読み出しコマンド及びアドレスが含まれる。
【0098】
メモリチップ100は、読み出し処理のコマンドセットを受信すると、読み出し処理を実行する(S16)。読み出しデータは、メモリコントローラ200に送信される。
【0099】
メモリコントローラ200は、読み出しデータを受信すると、ECC回路260において、読み出したデータの復号化のチャネル内ECC処理を実行する(S17)。そして、復号化のチャネル内ECC処理がフェイルした場合(S18_Yes)、すなわち、フェイルビット数が予め設定された数を超えた場合、メモリコントローラ200は、メモリチップ100と協働して、トラッキング動作を実行する(S19)。より具体的には、メモリコントローラ200は、メモリチップ100にトラッキングリードを実行させる。メモリチップ100は、トラッキングリードで読み出したデータをメモリコントローラ200に送信する。メモリコントローラ200は、受信した読み出しデータの復号化のチャネル内ECC処理を実行し、フェイルビット数をカウントする。この結果から、メモリコントローラ200は、読み出し電圧のシフト値を決定する。メモリチップ100は、シフト値に基づいて、当該ワード線WLにおける読み出し電圧を変更してもよい。
【0100】
他方で、復号化のチャネル内ECC処理がフェイルしなかった場合(S18_No)、メモリコントローラ200は、リードベリファイ動作を終了する(S23)。
【0101】
読み出し電圧のシフト値の絶対値が予め設定された規定値以上ではない場合(S20_No)、メモリコントローラ200が主導してリフレッシュ動作を実行する(S21)。リフレッシュ動作において、メモリコントローラ200は、メモリチップ100を制御して、ワード線WLn及びWLmに対応する(すなわち、リフレッシュ動作の対象となる)ブロックBLK内の有効データを、他のブロックBLKに書き写す。より具体的には、メモリコントローラ200は、メモリチップ100に、読み出し動作のコマンドセットを送信する。メモリチップ100は、リフレッシュ動作の対象となるブロックBLKから有効データを読み出す。なお、リフレッシュ動作の対象となったブロックBLKは、復号化のチャネル内ECC処理がフェイルしているため、正常にはデータを読み出せない場合がある。このような場合、例えばチャネル間RAIDによる救済で欠損データを修復することによりデータを読み出してもよい。また、リフレッシュ動作の対象となったブロックBLKがコンパクションにおける書き込み先のブロックBLKであれば、コンパクション元のブロックBLKから当該有効データを読み出してもよい。コンパクションとは、対象となるブロックBLKの有効データを集めて、他のブロックBLKに移動させる動作である。また、例えば、メモリコントローラ200は、リードベリファイ動作終了まで、書き込みデータをバッファメモリ240に記憶しておき、復号化のチャネル内ECC処理でフェイルしたデータをバッファメモリ240から読み出すことで、書き込みデータを取得して、リフレッシュ動作を行ってもよい。次に、メモリコントローラ200は、メモリチップ100に、書き込み動作のコマンドセットを送信する。メモリチップ100は、有効データを他のブロックBLKに書き込む。リフレッシュ動作が実行されたブロックBLKでは、後続のワード線WL(すなわち、ワード線WL(n+1)、…)を選択した書き込み動作は実行されない。当該ブロックBLKは、消去対象のブロックBLKとして扱われる。リフレッシュ動作が終了すると、メモリコントローラ200は、リードベリファイ動作を終了させる(S23)。
【0102】
他方で、読み出し電圧のシフト値の絶対値が予め設定された規定値以上である場合(S20_Yes)、メモリコントローラ200は、ワード線WLn及びWLmに対応するブロックBLKのバッドブロック化処理を実行する(S22)。より具体的には、メモリコントローラ200は、バッドブロック化の対象となるブロックBLK内の有効データを他のブロックBLKに書き写した後に、当該ブロックBLKを無効状態として、使用できないようにする。バッドブロック化処理が終了すると、メモリコントローラ200は、リードベリファイ動作を終了させる(S23)。
【0103】
1.5.2 1つのブロックにおけるリードベリファイ動作の流れ
次に、1つのブロックBLKに着目して、リードベリファイ動作の流れを、
図8及び
図9を用いて説明する。
図8及び
図9は、1つのブロックBLKにおけるリードベリファイ動作の流れを示すフローチャートである。なお、以下の説明では、説明を簡略化するため、ストリングユニットSUについての説明を省略する。
【0104】
まず、メモリコントローラ200のCPU230は、n=0、m=-2を設定する(S101)。次に、CPU230は、ワード線WLnに対応する書き込み動作のコマンドセットをメモリチップ100に送信する。
【0105】
メモリチップ100のシーケンサ15は、書き込み動作のコマンドセットを受信すると、ワード線WLnに対応する書き込み動作を実行する(S102)。
【0106】
n≧2ではない場合(S103_No)、すなわち、書き込み動作の対象となるワード線WLnがワード線WL0またはWL1である場合、CPU230は、書き込み動作終了後に変数n及び変数mをカウントアップし、n=n+1及びm=m+1とする(S104)。そして、S102に戻り、CPU230は、ワード線WLnに対応する書き込み動作のコマンドセットをメモリチップ100に送信する。シーケンサ15は、ワード線WLnに対応する書き込み動作を実行する。
【0107】
n≧2である場合(S104_Yes)、CPU230は、書き込み動作終了後にワード線WLmに対応するリードベリファイ動作を開始し、ワード線WLmに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。
【0108】
シーケンサ15は、ワード線WLmに対応する読み出し処理のコマンドセットを受信すると、ワード線WLmに対応する読み出し処理を実行する(S105)。読み出しデータは、メモリコントローラ200に送信される。次に、ECC回路260において、読み出しデータの復号化のチャネル内ECC処理が実行される(S106)。
【0109】
復号化のチャネル内ECC処理がフェイルしていない場合(S107_No)、CPU230は、変数nが“(ワード線WLの総数)-1”と同じであるか確認する(S108)。すなわち、CPU230は、当該ブロックBLKにおいて、最後に選択されたワード線WLであるか確認する。より具体的には、CPU230は、例えば、ワード線WLが最上層のワード線WLであるか確認する。
図4の例では、ワード線WLの総数は12本である。従って、最上層のワード線WLである場合、変数nは、n=12-1=11となる。
【0110】
変数nが“(ワード線WLの総数)-1”と同じではない場合(S108_No)、すなわち、当該ブロックBLKにおいて、最後に選択されたワード線WLではない場合、S104に進み、CPU230は、変数n及び変数mのカウントアップを行う。
【0111】
変数nが“(ワード線WLの総数)-1”と同じである場合(S108_Yes)、すなわち、当該ブロックBLKにおいて、最後に選択されたワード線WLである場合、CPU230は、変数mをカウントアップし、m=m+1とする(S109)。変数mの値は、“(ワード線WLの総数)-2”と同じである。換言すれば、ワード線WLmは、当該ブロックBLKにおいて、最後から1つ前に選択されたワード線WL(
図4の例では、ワード線WL10)である。このとき、変数nはカウントアップされない。そして、CPU230は、ワード線WLmに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。
【0112】
シーケンサ15は、ワード線WLmに対応する読み出し処理のコマンドセットを受信すると、ワード線WLmに対応する読み出し処理を実行する(S110)。読み出しデータは、メモリコントローラ200に送信される。次に、ECC回路260において、読み出しデータの復号化のチャネル内ECC処理が実行される(S111)。
【0113】
復号化のチャネル内ECC処理がフェイルしていない場合(S112_No)、CPU230は、変数mをカウントアップし、m=m+1とする(S113)。変数mの値は、“(ワード線WLの総数)-1”と同じである。換言すれば、ワード線WLmは、当該ブロックBLKにおいて、最後に選択されたワード線WL(
図4の例では、ワード線WL11)である。このとき、変数nはカウントアップされない。そして、CPU230は、ワード線WLmに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。
【0114】
シーケンサ15は、ワード線WLmに対応する読み出し処理のコマンドセットを受信すると、ワード線WLmに対応する読み出し処理を実行する(S114)。読み出しデータは、メモリコントローラ200に送信される。次に、ECC回路260において、読み出しデータの復号化のチャネル内ECC処理が実行される(S115)。
【0115】
復号化のチャネル内ECC処理がフェイルしていない場合(S116_No)、当該ブロックBLKにおける書き込み動作及びリードベリファイ動作が終了する。
【0116】
S107、S112、またはS116において、復号化のチャネル内ECC処理がフェイルした場合(S107_Yes、S112_Yes、またはS116_Yes)、メモリコントローラ200は、メモリチップ100と協働して、トラッキング動作を実行する(S117)。
【0117】
トラッキング動作の結果、シフト値の絶対値が規定値以上ではない場合(S118_No)、メモリコントローラ200が主導して、リフレッシュ動作を実行する(S119)。他方で、シフト値が規定値以上である場合(S118_Yes)、CPU230は、バッドブロック化処理を実行する(S120)。
【0118】
1.5.3 シフト値の判定の具体例
次に、シフト値の判定の具体例について、
図10を用いて説明する。
図10は、Upperページに対応する読み出し動作CR及びGRにおいて、トラッキング動作から求めたシフト値と、シフト値の判定結果の関係を示すグラフである。
【0119】
読み出し動作CRのシフト値または、読み出し動作GRのシフト値の少なくとも1つが規定値を超えた場合、判定条件1に該当し、バッドブロック化処理の対象と判定される。または、読み出し動作CRのシフト値と読み出し動作GRのシフト値とは、両方とも判定条件1に該当していないが、読み出し動作CRのシフト値と読み出し動作GRのシフト値とが、プラス側とマイナス側とで大きく値が異なる場合、判定条件2に該当し、バッドブロック化処理の対象と判定される。
【0120】
1.6 本実施形態に係る効果
本実施形態に係る構成であれば、メモリシステムの信頼性を向上できる。以下、本効果につき、詳述する。
【0121】
メモリチップ100のバースト故障(物理故障)は、消去動作時または書き込み動作時に発生することが多いが、読み出し動作時に発生する場合もある。このような場合、フェイルビット数が復号化のチャネル内ECC処理による誤り訂正可能なビット数以下であれば、データを訂正できる。但し、訂正能力の多くを物理故障の救済に費やすため、設計時の想定に対してデータリテンション等によるソフトエラー(偶発故障)に対する訂正能力が低下する。また、書き込み動作から読み出し動作までの経過時間が長くなると偶発故障が増える傾向になるため、復号化のチャネル内ECC処理がフェイルした原因が、物理故障に起因するものか、偶発故障に起因するものか判別が困難となる。
【0122】
これに対し、本実施形態に係る構成であれば、書き込み動作直後にリードベリファイ動作を実行し、読み出し動作時に発生する物理故障を検出できる。更に、書き込み動作直後にリードベリファイ動作を実施することにより、データリテンション等による偶発故障の発生頻度が低い状態で読み出し動作を実行できるため、物理故障をより高精度に検出できる。よって、物理故障によるデータの読み出し不良を低減できるため、メモリシステムの信頼性を向上できる。
【0123】
2.第2実施形態
次に、第2実施形態について説明する。第2実施形態では、変数nと変数mが同じ場合、すなわち、書き込み対象のワード線WLとリードベリファイ対象のワード線WLが同じ場合について説明する。以下、第1実施形態と異なる点を中心に説明する。
【0124】
2.1 1つのブロックにおけるリードベリファイ動作の流れ
1つのブロックBLKに着目して、リードベリファイ動作の流れを、
図11を用いて説明する。
図11は、1つのブロックBLKにおけるリードベリファイ動作の流れを示すフローチャートである。なお、本実施形態では、書き込み動作の対象となる選択ワード線WLに対応するセルユニットCU(メモリセルトランジスタMC)と、リードベリファイ動作時の読み出し処理の対象となる選択ワード線WLに対応するセルユニットCU(メモリセルトランジスタMC)とが同じである。書き込み動作及び読み出し処理の選択ワード線WLを、変数n(nは0以上の整数)を用いてWLnと表記する。
【0125】
まず、メモリコントローラ200のCPU230は、n=0を設定する(S130)。次に、CPU230は、ワード線WLnに対応する書き込み動作のコマンドセットをメモリチップ100に送信する。
【0126】
メモリチップ100のシーケンサ15は、書き込み動作のコマンドセットを受信すると、ワード線WLnに対応する書き込み動作を実行する(S102)。
【0127】
書き込み動作終了後、CPU230は、リードベリファイ動作を開始し、ワード線WLnに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。
【0128】
シーケンサ15は、読み出し処理のコマンドセットを受信すると、ワード線WLnに対応する読み出し処理を実行する(S131)。読み出しデータは、メモリコントローラ200に送信される。次に、ECC回路260において、読み出しデータの復号化のチャネル内ECC処理が実行される(S106)。
【0129】
復号化のチャネル内ECC処理がフェイルしていない場合(S107_No)、CPU230は、変数nが“(ワード線WLの総数)-1”と同じであるか確認する(S108)。すなわち、CPU230は、当該ブロックBLKにおいて、最後に選択されたワード線WLであるか確認する。
【0130】
変数nが“(ワード線WLの総数)-1”と同じではない場合(S108_No)、すなわち、当該ブロックBLKにおいて、最後に選択されたワード線WLではない場合、第1実施形態の
図8と同様にS104に進み、CPU230は、変数nのカウントアップを行う。
【0131】
変数nが“(ワード線WLの総数)-1”と同じである場合(S108_Yes)、すなわち、当該ブロックBLKにおいて、最後に選択されたワード線WLである場合、CPU230は、リードベリファイ動作を終了する。
【0132】
復号化のチャネル内ECC処理がフェイルした場合(S107_Yes)、トラッキング動作が実行される(S117)。以降の動作は、第1実施形態の
図9と同様である。
【0133】
2.2 本実施形態に係る効果
本実施形態に係る構成であれば、第1実施形態と同様の効果が得られる。
【0134】
更に本実施形態に係る構成であれば、書き込み動作時の選択ワード線WLに対してリードベリファイ動作を実行できる。例えば、メモリコントローラ200は、リードベリファイ動作終了まで書き込みデータをバッファメモリ240に記憶する。書き込み動作の対象となるワード線WLとリードベリファイ動作の対象となるワード線WLとが異なる場合、バッファメモリ240は、書き込み動作が実行され且つリードベリファイ動作が実行されていない複数のワード線WLに対応する書き込みデータを記憶する。これに対し、書き込み動作の対象となるワード線WLとリードベリファイ動作の対象となるワード線WLとが同じである場合、バッファメモリ240は、1つのワード線WLに対応する書き込みデータを記憶できればよい。従って、本実施形態に係る構成であれば、書き込みデータを記憶するバッファメモリ240のメモリ容量を削減できる。
【0135】
3.第3実施形態
次に、第3実施形態について説明する。第3実施形態では、メモリチップ100においてメモリ領域の一部を選択してリードベリファイ動作を実行する場合について、2つの例を示す。以下、第1及び第2実施形態と異なる点を中心に説明する。
【0136】
3.1 第1例
第1例では、リードベリファイ動作を実行するブロックBLKを選択する場合について説明する。本例では、ブロックBLK毎にチャネル間パリティの符号化率が異なるメモリチップ100において、リードベリファイ動作を実行するブロックBLKを選択する場合について説明する。
【0137】
3.1.1 チャネル間パリティの符号化率と救済能力の関係
チャネル間パリティの符号化率と救済能力の関係の一例について、
図12を用いて説明する。
図12は、2つの異なるチャネル間RAIDの適用条件(以下、「RAID条件」と表記する)に対してチャネル間パリティの符号化率とチャネル間RAIDにおける救済能力との関係を示す図である。
【0138】
例えば、メモリコントローラ200は、1つまたは複数のユーザデータに対して1つのチャネル間ECCフレームを生成する。メモリコントローラ200は、生成したチャネル間ECCフレームを4つのメモリチップ100に分散して書き込む。このとき、1個のメモリチップ100の読み出しデータが欠損してもチャネル間RAIDによる救済(チャネル間ECC処理)によりユーザデータが救済可能となるように、分割されたチャネル間ECCフレームの各々にチャネル間パリティが付与される場合をRAID条件1とする。また、例えば、メモリコントローラ200は、1つのチャネル間ECCフレームを8つのメモリチップ100に分散して書き込む。このとき、1個のメモリチップ100の読み出しデータが欠損してもチャネル間RAIDによる救済(チャネル間ECC処理)によりユーザデータが救済可能となるように、分割されたチャネル間ECCフレームの各々にチャネル間パリティが付与される場合をRAID条件2とする。
【0139】
RAID条件1及びRAID条件2のように、救済可能となるメモリチップ100の個数が一定である場合、チャネル間RAIDの対象となるメモリチップ数の増加に応じてチャネル間パリティの符号化率は高くなる。従って、RAID条件1のチャネル間パリティの符号化率は、RAID条件2のチャネル間パリティの符号化率よりも低い。チャネル間パリティは、物理故障によるフェイルビットの救済にも用いられる。チャネル間RAIDの対象となるメモリチップ数が少ない方が、物理故障以外の不良(偶発故障)がフェイルビットに混在する確率は低くなり、致命不良(チャネル間ECC処理で救済できない不良)となりにくい。従って、チャネル間RAIDにおけるチャネル間ECC処理による救済能力(以下、「RAID救済能力」とも表記する)を比較すると、RAID条件1における救済能力は、RAID条件2における救済能力よりも高い。すなわち、チャネル間RAIDを適用した場合、チャネル間パリティの符号化率が低い方が、RAID救済能力は高くなる。本例では、例えば、RAID救済能力が高いRAID条件1で書き込まれたメモリ領域に対しては、リードベリファイ動作を実行せず、RAID救済能力が低いRAID条件2で書き込まれたメモリ領域に対しては、リードベリファイ動作を実行する。
【0140】
なお、RAID条件における対象チップ数及び救済可能なチップ数は任意である。また、RAID条件は3つ以上であってもよい。この場合、予め設定された規定値以上のRAID救済能力を有するメモリ領域は、リードベリファイ非対象とし、規定値未満のRAID救済能力を有するメモリ領域は、リードベリファイ対象としてもよい。
【0141】
3.1.2 リードベリファイ対象の具体例
次に、リードベリファイ対象の具体例について、
図13を用いて説明する。
図13は、ブロック毎に異なるRAID条件を適用した場合における、ブロックBLKとリードベリファイ対象との関係を示す図である。
【0142】
例えば、ブロックBLK0及びBLK2にRAID条件1を適用し、ブロックBLK1及びBLK3にRAID条件2を適用する。この場合、
図12で説明したように、ブロックBLK0及びBLK2は、リードベリファイ非対象とされ、ブロックBLK1及びBLK3は、リードベリファイ対象とされる。
【0143】
3.1.3 リードベリファイ動作の全体の流れ
次に、リードベリファイ動作の全体の流れについて、
図14を用いて説明する。
図14は、リードベリファイ動作の全体の流れを示すフローチャートである。本例では、第1実施形態の
図7と異なり、書き込み動作(S12)終了後、メモリコントローラ200は、書き込み動作で選択したブロックBLKがリードベリファイ対象か確認する(S30)。選択ブロックBLKがリードベリファイ対象ではない場合(S30_No)、リードベリファイ動作は実行されない。
【0144】
他方で、選択ブロックBLKがリードベリファイ対象である場合(S30_Yes)、メモリコントローラ200は、第1実施形態の
図7で説明したS13以降の処理を実行する。
【0145】
3.2 第2例
第2例では、リードベリファイ動作を実行するワード線WLを選択する場合について説明する。本例では、例えば、メモリセルアレイの構造に起因して、物理故障が比較的発生しやすいワード線WLに対してリードベリファイ動作を実行する場合について説明する。
【0146】
3.2.1 リードベリファイ対象の具体例
まず、リードベリファイ対象の具体例について、
図15を用いて説明する。
図15は、ワード線WLとリードベリファイ対象との関係を示す図である。
【0147】
例えば、下位メモリピラーLMP及び上位メモリピラーUMPがテーパー形状を有している。すなわち、各ピラーの下端部の外径は、上端部の外径よりも小さい。例えば、下位メモリピラーLMPの上端部の外径は、上位メモリピラーUMPの下端部の外径よりも大きい。このような場合、ホールの加工あるいはピラー内への材料の埋め込みは、ピラーの下側領域でより難しくなり、製造不良に起因した物理故障が発生しやすくなる。また、接合部JTでは、下位メモリピラーLMPと上位メモリピラーUMPとによる段差、あるいは、位置合わせ不良等により、製造不良に起因した物理故障が発生しやすくなる。従って、
図15の例では、物理故障が発生する可能性が比較的高い各ピラーの最下層に位置するワード線WL、すなわちワード線WL0及びWL6をリードベリファイ対象とし、他のワード線WLは、リードベリファイ非対象としている。なお、リードベリファイ動作の対象となるワード線WLの選択は任意に設計し得る。
【0148】
3.2.2 1つのブロックにおけるリードベリファイ動作の流れ
次に、1つのブロックBLKに着目して、リードベリファイ動作の流れを、
図16及び
図17を用いて説明する。
図16及び
図17は、1つのブロックBLKにおけるリードベリファイ動作の流れを示すフローチャートである。なお、本例と第2実施形態とを組み合わせてもよい。以下の説明では、説明を簡略化するため、ストリングユニットSUについての説明を省略する。
【0149】
S101とS102における処理は、第1実施形態の
図8と同じである。第1実施形態の
図8とは異なり、n≧2である場合(S103_Yes)、CPU230は、変数mが設定値(例えば、m=0またはm=6)であるか確認する(S140)。
【0150】
変数mが設定値ではない場合(S140_No)、すなわち、ワード線WLmがリードベリファイ対象ではない場合、CPU230は、書き込み動作終了後に変数n及び変数mをカウントアップし、n=n+1及びm=m+1とする(S104)。
【0151】
他方で、変数mが設定値である場合(S140_Yes)、すなわち、ワード線WLmがリードベリファイ対象である場合、書き込み動作終了後にリードベリファイ動作を開始し、ワード線WLmに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。S105~S108の動作は、第1実施形態の
図8及び
図9と同様である。
【0152】
変数nが“(ワード線WLの総数)-1”と同じである場合(S108_Yes)、CPU230は、変数mをカウントアップし、m=m+1とする(S109)。変数mの値は、“(ワード線WLの総数)-2”と同じである。換言すれば、ワード線WLmは、当該ブロックBLKにおいて、最後から1つ前に選択されたワード線WLである。このとき、変数nはカウントアップされない。
【0153】
CPU230は、変数mが設定値(例えば、m=0またはm=6)であるか確認する(S141)。変数mが設定値ではない場合(S141_No)、すなわち、ワード線WLmがリードベリファイ対象ではない場合、CPU230は、ワード線WLmに対応する読み出し処理を実行しない。
【0154】
他方で、変数mが設定値である場合(S141_Yes)、すなわち、ワード線WLmがリードベリファイ対象である場合、CPU230は、ワード線WLmに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。
【0155】
シーケンサ15は、ワード線WLmに対応する読み出し処理のコマンドセットを受信すると、ワード線WLmに対応する読み出し処理を実行する(S110)。読み出しデータは、メモリコントローラ200に送信される。次に、ECC回路260において、読み出しデータの復号化のチャネル内ECC処理が実行される(S111)。
【0156】
復号化のチャネル内ECC処理がフェイルしていない場合(S112_No)、CPU230は、変数mをカウントアップし、m=m+1とする(S113)。変数mの値は、“(ワード線WLの総数)-1”と同じである。換言すれば、ワード線WLmは、当該ブロックBLKにおいて、最後に選択されたワード線WLである。このとき、変数nはカウントアップされない。
【0157】
CPU230は、変数mが設定値(例えば、m=0またはm=6)であるか確認する(S142)。変数mが設定値ではない場合(S142_No)、すなわち、ワード線WLmがリードベリファイ対象ではない場合、CPU230は、ワード線WLmに対応する読み出し処理を実行しない。
【0158】
他方で、変数mが設定値である場合(S142_Yes)、すなわち、ワード線WLmがリードベリファイ対象である場合、CPU230は、ワード線WLmに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。
【0159】
シーケンサ15は、ワード線WLmに対応する読み出し処理のコマンドセットを受信すると、ワード線WLmに対応する読み出し処理を実行する(S114)。読み出しデータは、メモリコントローラ200に送信される。次に、ECC回路260において、読み出しデータの復号化のチャネル内ECC処理が実行される(S115)。
【0160】
復号化のチャネル内ECC処理がフェイルしていない場合(S116_No)、当該ブロックBLKにおける書き込み動作及びリードベリファイ動作が終了する。
【0161】
S107、S112、またはS116において、復号化のチャネル内ECC処理がフェイルした場合(S107_Yes、S112_Yes、またはS116_Yes)、トラッキング動作が実行される(S117)。
【0162】
トラッキング動作の結果、シフト値の絶対値が規定値以上ではない場合(S118_No)、メモリコントローラ200が主導して、リフレッシュ動作を実行する(S119)。他方で、シフト値が規定値以上である場合(S118_Yes)、CPU230は、バッドブロック化処理を実行する(S120)。
【0163】
3.3 第3例
第3例では、リードベリファイ動作を実行するストリングユニットSUを選択する場合について、
図18を用いて説明する。
図18は、1つのブロックBLKにおいて、奇数ストリングユニットSUをリードベリファイ対象として選択する場合の一例を示す図である。
【0164】
図18に示すように、例えば、1つのブロックBLKに4つのストリングユニットSU0~SU3が設けられている場合、奇数ストリングユニットSU1及びSU3をリードベリファイ対象とする。なお、偶数ストリングユニットSU0及びSU2をリードベリファイ対象としてもよい。物理故障が発生した場合、隣接ストリングユニットSUにも影響が出る場合があるので、偶数または奇数のいずれかのストリングユニットSUをリードベリファイ対象とすることにより、物理故障を検出することが可能となる。
【0165】
3.4 第4例
第4例では、1ページのデータ長において、一部のデータ(メモリセルトランジスタMC)をリードベリファイ対象として選択する場合について、
図19を用いて説明する。
図19は、1ページのデータ長において、一部のデータをリードベリファイ対象として選択する場合の一例を示す図である。
【0166】
例えば、1ページのデータ長が16kBである場合に、そのうち4kBをリードベリファイ対象とし、残りの12kBをリードベリファイ非対象とする。なお、リードベリファイ対象となるデータ長及び選択されるメモリ領域は任意に設計できる。リードベリファイ対象(復号化のチャネル内ECC処理対象)となるデータ(メモリ領域)を選択(削減)することにより、メモリチップ100からメモリコントローラ200へのデータ転送時間及び復号化のチャネル内ECC処理時間が短縮される。なお、リードベリファイ対象となるメモリ領域を選択する場合、特定のメモリ領域に物理故障が集中しても故障を検知できるように、リードベリファイ対象(復号化のチャネル内ECC処理対象)データは、ページ内の広範囲に渡って選択される方が好ましい。また、本例においては、データの読み出し処理は、1ページ全体が対象とされる。そのうち、リードベリファイ対象となるデータが、メモリコントローラ200に送信される。
【0167】
3.5 第5例
第5例では、セルユニットCUが2ページ以上のデータを保持可能な場合、すなわちメモリセルトランジスタMCが2ビット以上のデータを保持可能な場合に、いずれかのページをリードベリファイ対象とする場合について、
図20を用いて説明する。
図20は、1つのセルユニットCUにおいて、一部のページデータをリードベリファイ対象として選択する場合の一例を示す図である。
【0168】
例えば、セルユニットCUが第1実施形態の
図5で説明したように3ページデータを保持可能な場合、Lowerページをリードベリファイ対象とし、Middleページ及びUpperページをリードベリファイ非対象とする。なお、リードベリファイ対象となるページは、任意に設計可能である。リードベリファイ対象として、1つまたは複数のページが選択されてもよい。
【0169】
ページを抽出してリードベリファイ動作を実行する場合、全ページのリードベリファイ動作を実行する場合と比較して、メモリチップ100からメモリコントローラ200へのデータ転送時間及び復号化のチャネル内ECC処理時間が短縮される。
【0170】
3.6 本実施形態に係る効果
本実施形態に係る構成あれば、第1及び第2実施形態と同様の効果が得られる。
【0171】
更に、本実施形態に係る構成であれば、比較的物理故障が発生しやすいメモリ領域にリードベリファイ動作を集中させることにより、メモリチップ100からメモリコントローラ200へのデータ転送時間及び復号化のチャネル内ECC処理時間を短縮してリードベリファイ動作による処理時間の遅延を抑制できる。従って、メモリシステム1の処理能力の低下を抑制できる。
【0172】
4.第4実施形態
次に、第4実施形態について説明する。第4実施形態では、第1~第3実施形態と、リフレッシュ動作及びバッドブロック化処理の判定基準が異なる場合について4つの例を説明する。以下、第1~第3実施形態と異なる点を中心に説明する。
【0173】
4.1 第1例
まず、第1例について説明する。第1例では、変数nと変数mとは、例えば、第1実施形態と同様に、m=n-2の関係にある。リフレッシュ動作の有無は、トラッキング動作の結果(シフト値)に基づいて判定される。バッドブロック化処理は、同一ブロックBLKにおいて、予め設定された書き込み/消去サイクル数(以下、「規定サイクル数」と表記する)以内に、リードベリファイ起因のリフレッシュ動作が複数回実行された場合に実行される。
【0174】
以下の説明において、規定サイクル数をD(Dは0以上の整数)とし、前回リフレッシュ動作を行ってから規定サイクル数Dに達するまでのサイクル残数を変数d(d≦Dである整数)とする。
【0175】
4.1.1 リードベリファイ動作の全体の流れ
まず、リードベリファイ動作の全体の流れについて、
図21を用いて説明する。
図21は、リードベリファイ動作の全体の流れを示すフローチャートである。本例のリードベリファイ動作は、読み出し処理、復号化のチャネル内ECC処理、トラッキング処理、リフレッシュ処理、及びバッドブロック化処理を含む。
【0176】
S10~S19までの処理は、第1実施形態の
図7と同じである。
【0177】
読み出し電圧のシフト値の絶対値が予め設定された規定値以上ではない場合(S20_No)、メモリコントローラ200が主導して、リードベリファイ動作を終了する(S23)。
【0178】
他方で、読み出し電圧のシフト値の絶対値が予め設定された規定値以上である場合(S20_Yes)、メモリコントローラ200が主導して、リフレッシュ動作を実行する(S21)。
【0179】
リフレッシュ動作実行後、メモリコントローラ200は、実行したリフレッシュ動作が、前回リフレッシュ動作を実行してから規定サイクル数D以内に実行されたか確認する(S40)。
【0180】
リフレッシュ動作が、規定サイクル数D以内に実行されていない場合(S40_No)、より具体的には、当該ブロックBLKにおいて、以前にリードベリファイ起因のリフレッシュ動作が実行されていない場合、または、前回リードベリファイ起因のリフレッシュ動作が実行されてから規定サイクル数D以上経過している場合、メモリコントローラ200は、リードベリファイ動作を終了させる(S23)。
【0181】
リフレッシュ動作が、規定サイクル数D以内に実行されている場合(S40_Yes)、メモリコントローラ200は、当該ブロックBLKのバッドブロック化処理を実行する(S22)。バッドブロック化処理が終了すると、メモリコントローラ200は、リードベリファイ動作を終了させる(S23)。
【0182】
4.1.2 1つのブロックにおけるリードベリファイ動作の流れ
次に、1つのブロックBLKに着目して、1回の書き込み/消去サイクルにおけるリードベリファイ動作の流れを、
図22及び
図23を用いて説明する。
図22及び
図23は、1つのブロックBLKにおけるリードベリファイ動作の流れを示すフローチャートである。なお、以下の説明では、説明を簡略化するため、ストリングユニットSUについての説明を省略する。
【0183】
まず、CPU230は、書き込み動作の対象となる選択ブロックBLKの消去動作を実行する(S150)。次のS101からS106までの処理は、第1実施形態の
図8と同様である。
【0184】
リードベリファイ動作において、復号化のチャネル内ECC処理がフェイルしている場合(S107_Yes)、メモリコントローラ200は、メモリチップ100と協働して、トラッキング動作を実行する(S151)。
【0185】
復号化のチャネル内ECC処理がフェイルしていない場合(S107_No)、または、トラッキング動作の結果、シフト値の絶対値が規定値以上ではない場合(S152_No)、CPU230は、変数nが“(ワード線WLの総数)-1”と同じであるか確認する(S108)。
【0186】
変数nが“(ワード線WLの総数)-1”と同じではない場合(S108_No)、すなわち、当該ブロックBLKにおいて、最後に選択されたワード線WLではない場合、S104に進み、CPU230は、変数n及び変数mのカウントアップを行う。
【0187】
変数nが“(ワード線WLの総数)-1”と同じである場合(S108_Yes)、すなわち、当該ブロックBLKにおいて、最後に選択されたワード線WLである場合、CPU230は、変数mをカウントアップし、m=m+1とする(S109)。すなわち、変数mは、“(ワード線WLの総数)-2”と同じである。換言すれば、ワード線WLmは、当該ブロックBLKにおいて、最後から1つ前に選択されたワード線WLである。このとき、変数nはカウントアップされない。そして、CPU230は、ワード線WLmに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。
【0188】
シーケンサ15は、読み出し処理のコマンドセットを受信すると、ワード線WLmに対応する読み出し処理を実行する(S110)。読み出しデータは、メモリコントローラ200に送信される。次に、ECC回路260において、読み出しデータの復号化のチャネル内ECC処理が実行される(S111)。
【0189】
復号化のチャネル内ECC処理がフェイルしている場合(S112_Yes)、メモリコントローラ200は、メモリチップ100と協働して、トラッキング動作を実行する(S153)。
【0190】
復号化のチャネル内ECC処理がフェイルしていない場合(S112_No)、または、トラッキング動作の結果、シフト値の絶対値が規定値以上ではない場合(S154_No)、CPU230は、変数mをカウントアップし、m=m+1とする(S113)。変数mの値は、“(ワード線WLの総数)-1”と同じである。換言すれば、ワード線WLmは、当該ブロックBLKにおいて、最後に選択されたワード線WLである。このとき、変数nはカウントアップされない。そして、CPU230は、ワード線WLmに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。
【0191】
シーケンサ15は、読み出し処理のコマンドセットを受信すると、ワード線WLmに対応する読み出し処理を実行する(S114)。読み出しデータは、メモリコントローラ200に送信される。次に、ECC回路260において、読み出しデータの復号化のチャネル内ECC処理が実行される(S115)。
【0192】
復号化のチャネル内ECC処理がフェイルしている場合(S116_Yes)、メモリコントローラ200は、メモリチップ100と協働して、トラッキング動作を実行する(S155)。
【0193】
復号化のチャネル内ECC処理がフェイルしていない場合(S116_No)、または、トラッキング動作の結果、シフト値の絶対値が規定値以上ではない場合(S156_No)、CPU230は、リフレッシュフラッグに“1”が設定されているか確認する(S157)。リフレッシュフラッグは、規定サイクル数D以内にリフレッシュ動作が実行されたか否かを示すフラッグである。リフレッシュフラッグは、バッドブロック化処理の判定に用いられる。例えば、規定サイクル数D以内にリフレッシュ動作が実行されている場合に“1”が設定され、リフレッシュ動作が実行されていない場合には、“0”が設定される。
【0194】
リフレッシュフラッグが“1”ではない場合(S157_No)、CPU230は、当該ブロックBLKにおける書き込み動作及びリードベリファイ動作を終了する。
【0195】
リフレッシュフラッグが“1”である場合(S157_Yes)、CPU230は、サイクル残数dのカウントダウンを行い、d=d-1を設定する(S158)。
【0196】
次に、CPU230は、d=0であるか確認する(S159)。すなわち、リフレッシュフラッグをリセットするか否か判定する。
【0197】
d=0ではない場合(S159_No)、すなわち、前回リフレッシュ動作を実行してから、規定サイクル数D以内である場合、CPU230は、当該ブロックBLKにおける書き込み動作及びリードベリファイ動作を終了する。
【0198】
d=0である場合(S159_Yes)、すなわち、前回リフレッシュ動作を実行してから、予め設定された書き込み/消去サイクルの回数を超えた場合、CPU230は、リフレッシュフラッグをリセットし、“0”を設定する。そして、CPU230は、当該ブロックBLKにおける書き込み動作及びリードベリファイ動作を終了する。
【0199】
S152、S154、またはS156において、シフト値の絶対値が規定値以上である場合(S152_Yes、S154_Yes、またはS156_Yes)、CPU230は、リフレッシュフラッグに“1”が設定されているか確認する(S161)。
【0200】
リフレッシュフラッグが“1”ではない場合(S161_No)、メモリコントローラ200は、メモリチップ100と協働して、リフレッシュ動作を実行する(S119)。リフレッシュ動作実行後、CPU230は、リフレッシュフラッグに“1”を設定し、サイクル残数としてd=Dを設定する(S162)。そして、CPU230は、当該ブロックBLKにおける書き込み動作及びリードベリファイ動作を終了する。
【0201】
リフレッシュフラッグが“1”である場合(S161_Yes)、バッドブロック化処理が実行される(S120)。そして、CPU230は、当該ブロックBLKにおける書き込み動作及びリードベリファイ動作を終了する。
【0202】
4.2 第2例
次に、第2例について説明する。第2例では、第2実施形態と同様に、書き込み動作の選択ワード線WLとリードベリファイ動作の選択ワード線WLとが同じである。リフレッシュ動作及びバッドブロック化処理の判定は、第4実施形態の第1例と同様である。
【0203】
4.2.1 1つのブロックにおけるリードベリファイ動作の流れ
1つのブロックBLKに着目して、1回の書き込み/消去サイクルにおけるリードベリファイ動作の流れを、
図24を用いて説明する。
図24は、1つのブロックBLKにおけるリードベリファイ動作の流れを示すフローチャートである。なお、以下の説明では、説明を簡略化するため、ストリングユニットSUについての説明を省略する。
【0204】
まず、CPU230は、書き込み動作の対象となる選択ブロックBLKの消去動作を実行する(S150)
次のS130、S102、S131、及びS106の処理は、第2実施形態の
図11と同様である。
【0205】
復号化のチャネル内ECC処理がフェイルしている場合(S107_Yes)、メモリコントローラ200は、メモリチップ100と協働して、トラッキング動作を実行する(S151)。
【0206】
復号化のチャネル内ECC処理がフェイルしていない場合(S105_No)、または、トラッキング動作の結果、シフト値の絶対値が規定値以上ではない場合(S152_No)、CPU230は、変数nが“(ワード線WLの総数)-1”と同じであるか確認する(S108)。
【0207】
変数nが“(ワード線WLの総数)-1”と同じではない場合(S108_No)、すなわち、当該ブロックBLKにおいて、最後に選択されたワード線WLではない場合、S104に進み、CPU230は、変数nのカウントアップを行う。
【0208】
変数nが“(ワード線WLの総数)-1”と同じである場合(S108_Yes)、すなわち、当該ブロックBLKにおいて、最後に選択されたワード線WLである場合、第4実施形態の第1例と同様に、S157~S160の処理が実行される。
【0209】
S152において、シフト値の絶対値が規定値以上である場合(S152_Yes)、第4実施形態の第1例と同様に、S161、S119、S162、及びS120の処理が実行される。
【0210】
4.3 第3例
次に、第3例について説明する。第3例では、変数nと変数mとは、第1実施形態と同様に、m=n-2の関係にある。リフレッシュ動作の有無は、復号化のチャネル内ECC処理の結果に基づいて判定される。また、バッドブロック化処理の有無は、規定サイクル数Dに基づいて判定される。本例では、トラッキング動作は実行されない。
【0211】
4.3.1 リードベリファイ動作の全体の流れ
まず、リードベリファイ動作の全体の流れについて、
図25を用いて説明する。
図25は、リードベリファイ動作の全体の流れを示すフローチャートである。本例のリードベリファイ動作は、読み出し処理、復号化のチャネル内ECC処理、リフレッシュ処理、及びバッドブロック化処理を含む。
【0212】
S10~S17までの処理は、第1実施形態の
図7と同じである。
【0213】
復号化のチャネル内ECC処理がフェイルしなかった場合(S18_No)、メモリコントローラ200は、リードベリファイ動作を終了する(S23)。他方で、復号化のチャネル内ECC処理がフェイルした場合(S18_Yes)、リフレッシュ動作が実行される(S21)。
【0214】
リフレッシュ動作実行後、メモリコントローラ200は、実行したリフレッシュ動作が、前回リフレッシュ動作を実行してから規定サイクル数D以内に実行されたか確認する(S40)。
【0215】
リフレッシュ動作が、規定サイクル数D以内に実行されていない場合(S40_No)、より具体的には、当該ブロックBLKにおいて、以前にリフレッシュ動作が実行されていない場合、または、前回リフレッシュ動作が実行されてから規定サイクル数D以上経過している場合、メモリコントローラ200は、リードベリファイ動作を終了させる(S23)。
【0216】
リフレッシュ動作が、規定サイクル数D以内に実行されている場合(S40_Yes)、メモリコントローラ200は、当該ブロックBLKのバッドブロック化処理を実行する(S22)。バッドブロック化処理が終了すると、メモリコントローラ200は、リードベリファイ動作を終了させる(S23)。
【0217】
4.3.2 1つのブロックにおけるリードベリファイ動作の流れ
次に、1つのブロックBLKに着目して、1回の書き込み/消去サイクルにおけるリードベリファイ動作の流れを、
図26及び
図27を用いて説明する。
図26及び
図27は、1つのブロックBLKにおけるリードベリファイ動作の流れを示すフローチャートである。なお、以下の説明では、説明を簡略化するため、ストリングユニットSUについての説明を省略する。
【0218】
S150及びS101からS106までの処理は、第4実施形態の第1例の
図22と同様である。
【0219】
復号化のチャネル内ECC処理がフェイルしていない場合(S107_No)、CPU230は、変数nが“(ワード線WLの総数)-1”と同じであるか確認する(S108)。
【0220】
変数nが“(ワード線WLの総数)-1”と同じではない場合(S108_No)、S104に進み、CPU230は、変数n及び変数mのカウントアップを行う。
【0221】
変数nが“(ワード線WLの総数)-1”と同じである場合(S107_Yes)、CPU230は、変数mをカウントアップし、m=m+1とする(S109)。変数mの値は、“(ワード線WLの総数)-2”と同じである。換言すれば、ワード線WLmは、当該ブロックBLKにおいて、最後から1つ前に選択されたワード線WLである。このとき、変数nはカウントアップされない。そして、CPU230は、ワード線WLmに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。
【0222】
シーケンサ15は、読み出し処理のコマンドセットを受信すると、ワード線WLmに対応する読み出し処理を実行する(S110)。読み出しデータは、メモリコントローラ200に送信される。次に、ECC回路260において、読み出しデータの復号化のチャネル内ECC処理が実行される(S111)。
【0223】
復号化のチャネル内ECC処理がフェイルしていない場合(S112_No)、CPU230は、変数mをカウントアップし、m=m+1とする(S113)。変数mの値は、“(ワード線WLの総数)-1”と同じである。換言すれば、ワード線WLmは、当該ブロックBLKにおいて、最後に選択されたワード線WLである。このとき、変数nはカウントアップされない。そして、CPU230は、ワード線WLmに対応する読み出し処理のコマンドセットをメモリチップ100に送信する。
【0224】
シーケンサ15は、読み出し処理のコマンドセットを受信すると、ワード線WLmに対応する読み出し処理を実行する(S114)。読み出しデータは、メモリコントローラ200に送信される。次に、ECC回路260において、読み出しデータの復号化のチャネル内ECC処理が実行される(S115)。
【0225】
復号化のチャネル内ECC処理がフェイルしていない場合(S116_No)、第4実施形態の第1例と同様に、S157~S160の処理が実行される。
【0226】
S107、S112、またはS116において、復号化のチャネル内ECC処理がフェイルしている場合(S107_Yes、S112_Yes、またはS116_Yes)、第4実施形態の第1例と同様に、S161、S119、S162、及びS120の処理が実行される。
【0227】
4.4 第4例
次に、第4例について説明する。第4例では、第2実施形態と同様に、書き込み動作の選択ワード線WLとリードベリファイ動作の選択ワード線WLとが同じである。リフレッシュ動作及びバッドブロック化処理の判定は、第4実施形態の第3例と同様である。
【0228】
4.4.1 1つのブロックにおけるリードベリファイ動作の流れ
1つのブロックBLKに着目して、1回の書き込み/消去サイクルにおけるリードベリファイ動作の流れを、
図28を用いて説明する。
図28は、1つのブロックBLKにおけるリードベリファイ動作の流れを示すフローチャートである。なお、以下の説明では、説明を簡略化するため、ストリングユニットSUについての説明を省略する。
【0229】
第4実施形態の第2例の
図24と異なり、S107において復号化のチャネル内ECC処理がフェイルした場合(S107_Yes)、CPU230は、トラッキング処理は実行せずに、リフレッシュフラッグに“1”が設定されているか確認する(S161)。他の処理は、第4実施形態の第2例の
図24と同じである。
【0230】
5.第5実施形態
次に、第5実施形態について説明する。第5実施形態では、リードベリファイ動作中にメモリシステム1の電源が遮断され、リードベリファイ動作が完了できなかった場合について説明する。
【0231】
5.1 リードベリファイ動作の全体の流れ
リードベリファイ動作の全体の流れについて、
図29を用いて説明する。
図29は、リードベリファイ動作の全体の流れを示すフローチャートである。本実施形態のリードベリファイ動作は、読み出し処理、復号化のチャネル内ECC処理、及びリフレッシュ処理を含む。
【0232】
S10~S12までの処理は、第1実施形態の
図7と同じである。
【0233】
書き込み動作終了後、選択したワード線WLnがリードベリファイ対象である場合、メモリコントローラ200は、リードベリファイ動作を開始する(S50)。
【0234】
例えば、リードベリファイ動作中に電源が遮断される場合がある(S51)。この場合、メモリコントローラ200またはメモリチップ100内にリードベリファイ動作の途中であることを示すステータス情報が保持される。
【0235】
電源復帰後(S52)、メモリコントローラ200は、リードベリファイ動作の途中であることを示すステータス情報を確認し、リードベリファイ動作を再開する(S53)。より具体的には、例えば、メモリコントローラ200は、メモリチップ100に読み出し処理のコマンドセットを送信する(S15)。
【0236】
メモリチップ100は、読み出し処理のコマンドセットを受信すると、読み出し処理を実行する(S16)。読み出しデータは、メモリコントローラ200に送信される。
【0237】
メモリコントローラ200は、読み出しデータを受信すると、ECC回路260において、復号化のチャネル内ECC処理を実行する(S17)。
【0238】
復号化のチャネル内ECC処理がフェイルした場合(S18_Yes)、メモリコントローラ200が主導してリフレッシュ動作を実行する(S21)。
【0239】
他方で、復号化のチャネル内ECC処理がフェイルしなかった場合(S17_No)、あるいは、S21においてリフレッシュ動作終了後、メモリコントローラ200は、リードベリファイ動作を終了する(S23)。
【0240】
リードベリファイ動作中に、電源が遮断された場合、電源復帰後のリードベリファイ動作では、データリテンション(偶発故障)の影響により復号化のチャネル内ECC処理がフェイルする可能性が高い。このため、復号化のチャネル内ECC処理をフェイルしても、物理故障ではない可能性が高いため、メモリコントローラ200は、リフレッシュ動作の実施有無を判断し、バッドブロック化処理に関する判断をしない。
【0241】
5.2 本実施形態に係る効果
本実施形態に係る構成であれば、第1乃至第4実施形態と同様の効果が得られる。
【0242】
更に、本実施形態に係る構成であれば、電源復帰後に、リードベリファイ動作を再開できる。更に、本実施形態に係る構成であれば、電源復帰後に第1乃至第4実施形態と同様の処理を実施することによって発生し得るバッドブロック多発のリスクを回避することができる。
【0243】
6.変形例
上記実施形態に係るメモリシステムは、直列に接続された複数の第1メモリセル(MC)を有する第1メモリストリング(NS)を含む第1メモリブロック(BLK)と複数の第1メモリセルの各々のゲートに接続された複数の第1ワード線(WL)とを含むメモリチップ(100)と、外部機器と接続され、メモリチップを制御し、メモリチップから読み出したデータのECC(error checking and correcting)処理が可能なメモリコントローラ(200)とを含む。メモリコントローラは、外部機器から書き込み命令を受信すると、複数の第1メモリセルの1つである第2メモリセルに対する書き込み動作において、第2メモリセルに対して書き込み動作を実行し、且つ複数の第1メモリセルの1つである第3メモリセルに対して、読み出し処理とECC処理とを含むリードベリファイ動作を実行するように構成されている。
【0244】
上記実施形態により、信頼性を向上できるメモリシステムを提供できる。
【0245】
なお、実施形態は上記で説明した形態に限られず、種々の変形が可能である。例えば、第1乃至第5実施形態は、可能な限り組み合わせることができる。
【0246】
更に、上記実施形態における「接続」とは、間に例えばトランジスタあるいは抵抗等、他の何かを介在させて間接的に接続されている状態も含む。
【0247】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0248】
1…メモリシステム
10…入出力回路
11…ロジック制御回路
12…ステータスレジスタ
13…アドレスレジスタ
14…コマンドレジスタ
15…シーケンサ
16…レディ/ビジー回路
17…電圧発生回路
18…メモリセルアレイ
19…ロウデコーダ
20…センスアンプ
21…データレジスタ
22…カラムデコーダ
30…p型ウェル領域
31…n+型拡散層領域
32、40~47…絶縁層
33~37…導電体層
50…ブロック絶縁膜
51…電荷蓄積層
52…トンネル絶縁膜
53…半導体層
54…コア層
55…キャップ層
100…メモリチップ
200…メモリコントローラ
210…ホストインターフェイス回路
220…RAM
230…CPU
240…バッファメモリ
250…NANDインターフェイス回路
260…ECC回路
1000…半導体基板
BL…ビット線
BLK…ブロック
CU…セルユニット
MC…メモリセルトランジスタ
SGD、SGS…選択ゲート線
ST1、ST2…選択トランジスタ
SU…ストリングユニット
WL…ワード線