(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024006323
(43)【公開日】2024-01-17
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G06F 12/00 20060101AFI20240110BHJP
G06F 12/02 20060101ALI20240110BHJP
G06F 11/10 20060101ALI20240110BHJP
G11C 11/56 20060101ALI20240110BHJP
G11C 16/04 20060101ALI20240110BHJP
【FI】
G06F12/00 550Z
G06F12/00 597U
G06F12/02 510A
G06F11/10 672
G11C11/56 210
G11C16/04 170
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2022107105
(22)【出願日】2022-07-01
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】浅見 征平
(72)【発明者】
【氏名】小島 慶久
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160NA02
5B160NA03
5B225BA01
5B225BA19
5B225CA28
5B225DB02
5B225DB08
5B225DB29
5B225DD06
5B225DE08
5B225EA05
5B225FA01
(57)【要約】
【課題】データの信頼性を向上できるメモリシステムを提供する。
【解決手段】一実施形態のメモリシステムは、半導体メモリと、コントローラと、第1回路とを備える。半導体メモリは不揮発性メモリセルを含む。コントローラは、半導体メモリに、第1書き込み動作と第2書き込み動作とを実行させるように構成される。第1書き込み動作は、第1ビットをメモリセルに書き込む。第2書き込み動作は、第1ビットと第2ビットとに基づく少なくとも2ビットを有する第1データを、メモリセルに書き込む。第1回路は、第1ビットにビット誤りがあるかどうかをチェックする。コントローラは、第2書き込み動作において、第1回路によるチェックの結果に基づいて、第1ビットにビット誤りがあると判定した場合、半導体メモリに、第1ビットのビット誤りを訂正した第3ビットと第2ビットとを含む第1データの書き込みを実行させるように構成される。
【選択図】
図20
【特許請求の範囲】
【請求項1】
少なくとも2ビットを有するデータを不揮発に記憶するように構成されたメモリセルを含む半導体メモリと、
第1ビットを前記メモリセルに書き込む第1書き込み動作と、
前記メモリセルから読み出された前記第1ビットと第2ビットとに基づく少なくとも2ビットを有する第1データを、前記メモリセルに書き込む第2書き込み動作と
を、前記半導体メモリに実行させるように構成されたコントローラと、
前記メモリセルから読み出された前記第1ビットにビット誤りがあるかどうかをチェックする第1回路と
を備え、
前記コントローラは、前記第2書き込み動作において、前記第1回路によるチェックの結果に基づいて、前記メモリセルから読み出された前記第1ビットに前記ビット誤りがあると判定した場合、前記半導体メモリに、前記第1ビットの前記ビット誤りを訂正した第3ビットと前記第2ビットとを含む前記第1データの書き込みを実行させるように構成される、
メモリシステム。
【請求項2】
前記半導体メモリは、前記メモリセルを複数有するセルユニットを含み、
前記第1回路による前記チェックは、誤り検出符号を用いて、前記セルユニットにおいて、前記第1ビットの前記ビット誤りの数を検出することを含む、
請求項1記載のメモリシステム。
【請求項3】
前記コントローラは、前記第2書き込み動作において、前記ビット誤りの数が第1閾値を超えている場合、前記半導体メモリに、前記第1ビットの前記ビット誤りを訂正した前記第3ビットと前記第2ビットとを含む前記第1データの書き込みを実行させるように構成される、
請求項2記載のメモリシステム。
【請求項4】
前記半導体メモリは、前記メモリセルを複数有するセルユニットを含み、
前記第1回路による前記チェックは、前記セルユニットにおいて、第1値を記憶する前記メモリセルの数をカウントすることを含む、
請求項1記載のメモリシステム。
【請求項5】
前記コントローラは、前記第2書き込み動作において、前記カウントされた前記数が第1閾値範囲に入っていない場合、前記半導体メモリに、前記第1ビットの前記ビット誤りを訂正した前記第3ビットと前記第2ビットとを含む前記第1データの書き込みを実行させるように構成される、
請求項4記載のメモリシステム。
【請求項6】
前記コントローラは、更に、前記第1書き込み動作が実行された前記メモリセルに前記第2書き込み動作を実行させるときに、前記第1回路による前記チェックを実行するか否かを判定するように構成される、
請求項1記載のメモリシステム。
【請求項7】
前記コントローラは、前記第1書き込み動作が実行されてからの経過時間に基づいて、前記第1回路による前記チェックを実行するか否かを判定するように構成される、
請求項6記載のメモリシステム。
【請求項8】
前記コントローラは、前記メモリセルへの書き込み回数または消去回数に基づいて、前記第1回路による前記チェックを実行するか否かを判定するように構成される、
請求項6記載のメモリシステム。
【請求項9】
前記コントローラは、前記メモリセルの過去のエラー検出回数に基づいて、前記第1回路による前記チェックを実行するか否かを判定するように構成される、
請求項6記載のメモリシステム。
【請求項10】
前記メモリセルは閾値電圧に応じて前記データを不揮発に記憶するように構成され、
前記第1ビットは第1閾値電圧に対応し、
前記第3ビットと前記第2ビットとを含む前記第1データは、前記第1閾値電圧よりも高い第2閾値電圧に対応する、
請求項1記載のメモリシステム。
【請求項11】
少なくとも2ビットを有するデータを不揮発に記憶するようにそれぞれが構成された第1メモリセルと第2メモリセルとを含む半導体メモリと、
第1ビットを前記第1メモリセルに書き込む第1書き込み動作と、
前記第1メモリセルから読み出された前記第1ビットと第2ビットとに基づく少なくとも2ビットを有する第1データを、前記第1メモリセルに書き込む第2書き込み動作と、
第3ビットを前記第2メモリセルに書き込む第3書き込み動作と、
前記第2メモリセルから読み出された前記第3ビットと第4ビットとに基づく少なくとも2ビットを有する第2データを、前記第2メモリセルに書き込む第4書き込み動作と
を、前記第1書き込み動作、前記第3書き込み動作、前記第2書き込み動作、前記第4書き込み動作の順で前記半導体メモリに実行させるように構成されたコントローラと
を備え、
前記コントローラは、前記第2書き込み動作において、前記第1書き込み動作が実行されてからの経過時間に基づいて、パディングデータである前記第2ビットを含む前記第1データの書き込みを前記半導体メモリに実行させるように構成される、
メモリシステム。
【請求項12】
前記コントローラは、前記第2書き込み動作において、前記経過時間が第2閾値を超えている場合、前記パディングデータである前記第2ビットを含む前記第1データの書き込みを前記半導体メモリに実行させるように構成される、
請求項11記載のメモリシステム。
【請求項13】
前記コントローラは、更に、前記第3書き込み動作において、前記経過時間が前記第2閾値を超えている場合、パディングデータである前記第3ビットの書き込みを前記半導体メモリに実行させるように構成される、
請求項12記載のメモリシステム。
【請求項14】
前記第1書き込み動作が実行された第1時刻を記憶する第1テーブル
を更に備え、
前記経過時間は、前記第1時刻と現在時刻との時間差である、
請求項11記載のメモリシステム。
【請求項15】
前記パディングデータである前記第2ビットは、ダミーデータである、
請求項11記載のメモリシステム。
【請求項16】
前記半導体メモリは、更に、第3メモリセルを含み、
前記パディングデータである前記第2ビットは、前記第3メモリセルのデータである、
請求項11記載のメモリシステム。
【請求項17】
少なくとも2ビットを有するデータを不揮発に記憶するように構成されたメモリセルを含む半導体メモリと、
第1ビットを前記メモリセルに書き込む第1書き込み動作と、
第2ビットを含む少なくとも2ビットを有する第1データを、前記メモリセルに書き込む第2書き込み動作と
を、前記半導体メモリに実行させるように構成されたコントローラと、
前記メモリセルから読み出された前記第1ビットにビット誤りがあるかどうかをチェックする第1回路と
を備え、
前記コントローラは、前記第2書き込み動作において、前記第1回路によるチェックの結果に基づいて、
前記メモリセルから読み出された前記第1ビットに前記ビット誤りがないと判定した場合、前記半導体メモリに、前記第1ビットと前記第2ビットとを含む前記第1データの書き込みを実行させ、
前記メモリセルから読み出された前記第1ビットに前記ビット誤りがあると判定した場合、前記半導体メモリに、パディングデータである第3ビットと前記第2ビットとを含む前記第1データの書き込みを実行させるように構成される、
メモリシステム。
【請求項18】
前記半導体メモリは、前記メモリセルを複数有するセルユニットを含み、
前記第1回路による前記チェックは、誤り検出符号を用いて、前記セルユニットにおいて、前記第1ビットの前記ビット誤りの数を検出することを含む、
請求項17記載のメモリシステム。
【請求項19】
前記コントローラは、前記第2書き込み動作において、前記ビット誤りの数が第3閾値を超えている場合、前記半導体メモリに、前記パディングデータである前記第3ビットと前記第2ビットとを含む前記第1データの書き込みを実行させるように構成される、
請求項18記載のメモリシステム。
【請求項20】
前記メモリセルは閾値電圧に応じて前記データを不揮発に記憶するように構成され、
前記第1ビットは第1閾値電圧に対応し、
前記パディングデータである前記第3ビットと前記第2ビットとを含む前記第1データは、前記第1閾値電圧よりも高い第2閾値電圧に対応する、
請求項17記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
半導体メモリと、半導体メモリを制御するメモリコントローラとを含むメモリシステムが知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2021/0295909号明細書
【特許文献2】米国特許出願公開第2021/0286554号明細書
【特許文献3】米国特許出願公開第2011/0149651号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
実施形態の1つは、データの信頼性を向上できるメモリシステムを提供する。
【課題を解決するための手段】
【0005】
実施形態に係るメモリシステムは、半導体メモリと、コントローラと、第1回路と、を備える。半導体メモリは、少なくとも2ビットを有するデータを不揮発に記憶するように構成されたメモリセルを含む。コントローラは、半導体メモリに、第1書き込み動作と第2書き込み動作とを実行させるように構成されている。第1書き込み動作は、第1ビットをメモリセルに書き込む。第2書き込み動作は、メモリセルから読み出された第1ビットと第2ビットとに基づく少なくとも2ビットを有する第1データを、メモリセルに書き込む。第1回路は、メモリセルから読み出された第1ビットにビット誤りがあるかどうかをチェックする。コントローラは、第2書き込み動作において、第1回路によるチェックの結果に基づいて、メモリセルから読み出された第1ビットにビット誤りがあると判定した場合、半導体メモリに、第1ビットのビット誤りを訂正した第3ビットと第2ビットとを含む第1データの書き込みを実行させるように構成される。
【図面の簡単な説明】
【0006】
【
図1】
図1は、第1実施形態に係るメモリシステムを含む情報処理システムの一例を示すブロック図である。
【
図2】
図2は、第1実施形態に係るメモリシステムに含まれる半導体メモリの構成の一例を示すブロック図である。
【
図3】
図3は、第1実施形態に係るメモリシステムに含まれる半導体メモリ内のメモリセルアレイの回路図である。
【
図4】
図4は、第1実施形態に係るメモリシステムに含まれるメモリセルトランジスタの閾値電圧分布と、メモリセルトランジスタが記憶するデータとの関係の一例を示す図である。
【
図5】
図5は、第1実施形態に係るメモリシステムの第1書き込み動作の一例を示すシーケンス図である。
【
図6】
図6は、第1実施形態に係るメモリシステムの第1書き込み動作によるメモリセルトランジスタの閾値電圧分布の変化を示す図である。
【
図7】
図7は、第1実施形態に係るメモリシステムの第2書き込み動作の一例を示すシーケンス図である。
【
図8】
図8は、第1実施形態に係るメモリシステムの第2書き込み動作によるメモリセルトランジスタの閾値電圧分布の変化を示す図である。
【
図9】
図9は、第1実施形態に係るメモリシステムの第1書き込み動作及び第2書き込み動作が実行される順序の一例を説明する図である。
【
図10】
図10は、第1実施形態に係るメモリシステムの書き込み管理テーブルの一例を示す概念図である。
【
図11】
図11は、第1実施形態に係るメモリシステムの書き込み履歴テーブルの一例を示す概念図である。
【
図12】
図12は、第1実施形態に係るメモリシステムの書き込み動作の一例を示すフローチャートである。
【
図13】
図13は、第1実施形態に係るメモリシステムのパディング判定動作の一例を示すフローチャートである。
【
図14】
図14は、第1実施形態に係るメモリシステムのパディング動作に用いられるデータのサイズの一例を説明する図である。
【
図15】
図15は、第1実施形態に係るメモリシステムのパディング動作に用いられるデータのサイズの別の一例を説明する図である。
【
図16】
図16は、第1実施形態に係るメモリシステムのパディング動作の一例を示すフローチャートである。
【
図17】
図17は、第2実施形態に係るメモリシステムを含む情報処理システムの一例を示すブロック図である。
【
図18】
図18は、第2実施形態に係るメモリシステムに含まれる半導体メモリの構成の一例を示すブロック図である。
【
図19】
図19は、第2実施形態に係るメモリシステムの書き込み動作の一例を示すフローチャートである。
【
図20】
図20は、第2実施形態に係るメモリシステムのリカバリ動作の一例を示すフローチャートである。
【
図21】
図21は、第2実施形態の第1変形例に係るメモリシステムのリカバリ動作の一例を示すフローチャートである。
【
図22】
図22は、第2実施形態の第2変形例に係るメモリシステムの書き込み動作の一例を示すフローチャートである。
【
図23】
図23は、第2実施形態の第3変形例に係るメモリシステムを含む情報処理システムの一例を示すブロック図である。
【
図24】
図24は、第2実施形態の第3変形例に係るメモリシステムの書き込み回数テーブルの一例を示す概念図である。
【
図25】
図25は、第2実施形態の第4変形例に係るメモリシステムを含む情報処理システムの一例を示すブロック図である。
【
図26】
図26は、第2実施形態の第4変形例に係るメモリシステムのエラー回数テーブルの一例を示す概念図である。
【
図27】
図27は、第3実施形態に係るメモリシステムの書き込み動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態について説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【0008】
各機能ブロックは、以下の例のように区別されていなくてもよい。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実現されてもよい。さらに、例示の機能ブロックがさらに細かい機能サブブロックに分割されていてもよい。機能がどの機能ブロックによって実現されるかによって実施形態は限定されない。
【0009】
また、各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両方の組み合わせとして実現することができる。
【0010】
[1]第1実施形態
第1実施形態に係るメモリシステムについて説明する。以下では、半導体メモリとしてNAND型フラッシュメモリを含むメモリシステムを例に挙げて説明する。
【0011】
[1-1]構成
[1-1-1]メモリシステムの構成
本実施形態に係るメモリシステムの構成について、
図1を用いて説明する。
図1は、本実施形態に係るメモリシステムを含む情報処理システムの一例を示すブロック図である。
【0012】
情報処理システムは、メモリシステム1及びホスト2を含む。
【0013】
メモリシステム1は、データを記憶するデバイスである。メモリシステム1は、例えば、SSD(solid state drive)、UFS(Universal Flash Storage)デバイス、USB(Universal Serial Bus)メモリ、MMC(Multi-Media Card)、またはSDTMカードである。メモリシステム1は、ホストバスを介してホスト2に接続可能である。メモリシステム1は、ホスト2から受信した要求信号または自発的な処理要求に基づく処理を行う。
【0014】
ホスト2は、メモリシステム1を制御するデバイスである。ホスト2は、例えば、パーソナルコンピュータ、サーバシステム、モバイルデバイス、車載デバイス、またはデジタルカメラである。
【0015】
次に、メモリシステム1の内部構成について説明する。
【0016】
メモリシステム1は、メモリコントローラ10及び半導体メモリ30を含む。半導体メモリ30は、例えばNAND型フラッシュメモリのような不揮発性メモリである。以下では、半導体メモリ30をNAND型フラッシュメモリ30と称する。
【0017】
メモリコントローラ10は、NAND型フラッシュメモリ30を制御するデバイスである。メモリコントローラ10は、例えば、SoC(System On a Chip)である。メモリコントローラ10は、ホストバスを介してホスト2と接続される。メモリコントローラ10は、ホスト2からホストバスを介して要求信号を受信する。ホストバスのタイプは、メモリシステム1に適用されるアプリケーションに依存する。メモリシステム1がSSDである場合、ホストバスとして、例えば、SAS(Serial Attached SCSI)、SATA(Serial ATA)、またはPCIeTM(Peripheral Component Interconnect Express)規格のインターフェースが用いられる。メモリシステム1がUFSデバイスである場合、ホストバスとしてM-PHY規格のインターフェースが用いられる。メモリシステム1がUSBメモリである場合、ホストバスとしてUSB規格のインターフェースが用いられる。メモリシステム1がMMCである場合、ホストバスとしてeMMC(Embedded Multi Media Card)規格のインターフェースが用いられる。メモリシステム1がSDTMカードである場合、ホストバスとしてSDTM規格のインターフェースが用いられる。
【0018】
メモリコントローラ10は、ホスト2から受信した要求信号または自発的な処理要求に基づいて、NANDバスを介してNAND型フラッシュメモリ30を制御する。NANDバスは、NANDインターフェースに従った信号の送受信を行う。
【0019】
NAND型フラッシュメモリ30は、データを記憶するデバイスである。NAND型フラッシュメモリ30は、複数のメモリセルトランジスタを含む。複数のメモリセルトランジスタのそれぞれは、閾値電圧に応じてデータを不揮発に記憶する。NAND型フラッシュメモリ30は、メモリコントローラ10から受信したデータを複数のメモリセルトランジスタに不揮発に記憶する。NAND型フラッシュメモリ30は、複数のメモリセルトランジスタから読み出したデータを、メモリコントローラ10に出力する。
【0020】
次に、メモリコントローラ10の内部構成について説明する。
【0021】
メモリコントローラ10は、ホストインターフェース(I/F)回路11、プロセッサ(CPU:Central Processing Unit)12、バッファメモリ13、ECC(Error Checking and Correcting)回路14、ROM(Read only memory)15、RAM(Random access memory)16、及びNANDインターフェース(I/F)回路17を含む。
【0022】
ホストインターフェース回路11は、メモリコントローラ10とホスト2との間の通信を司る回路である。ホストインターフェース回路11は、ホストバスを介してホスト2と接続される。
【0023】
プロセッサ12は、メモリコントローラ10の制御回路である。プロセッサ12は、ROM15に記憶されたプログラム(ファームウェア)を実行することによってメモリコントローラ10全体の動作を制御する。例えば、プロセッサ12は、ホスト2から書き込み要求を受信した際には、それに基づいて、書き込み動作を制御する。読み出し動作及び消去動作の際も同様である。
【0024】
バッファメモリ13は、データを一時的に記憶するメモリである。バッファメモリ13は、例えば、SRAM(Static random access memory)である。バッファメモリ13は、書き込みデータ及び読み出しデータ等を一時的に記憶する。書き込みデータは、NAND型フラッシュメモリ30に書き込まれるデータである。読み出しデータは、NAND型フラッシュメモリ30から読み出されたデータである。
【0025】
ECC回路14は、データのエラー訂正(ECC:Error Checking and Correcting)処理を行う回路である。具体的には、ECC回路14は、データの書き込み動作時に書き込みデータに基づいて誤り訂正符号を生成する。そして、ECC回路14は、データの読み出し動作時に、予め決められた単位で、誤り訂正符号に基づいてシンドロームを生成してエラーを検出し、検出したエラーを訂正する。
【0026】
ROM15は、不揮発性のメモリである。ROM15は、例えば、EEPROMTM(Electrically Erasable Programmable Read-Only Memory)である。ROM15は、ファームウェア等のプログラムを記憶する。
【0027】
RAM16は、揮発性のメモリである。RAM16は、例えば、SRAMである。RAM16は、プロセッサ12の作業領域として使用される。RAM16は、NAND型フラッシュメモリ30を管理するためのファームウェア、及び各種の管理情報を記憶する。RAM16は、例えば、書き込み管理テーブルTWM及び書き込み履歴テーブルT1Hを記憶する。書き込み管理テーブルTWM及び書き込み履歴テーブルT1Hの詳細については後述する。
【0028】
NANDインターフェース回路17は、メモリコントローラ10とNAND型フラッシュメモリ30との間の通信を司る回路である。NANDインターフェース回路17は、NANDバスを介してNAND型フラッシュメモリ30と接続される。例えば、NANDインターフェース回路17は、メモリコントローラ10とNAND型フラッシュメモリ30との間におけるデータ、コマンド、及びアドレス等の転送を制御する。
【0029】
[1-1-2]NAND型フラッシュメモリの構成
NAND型フラッシュメモリ30の構成について、
図2を用いて説明する。
図2は、NAND型フラッシュメモリ30の構成の一例を示すブロック図である。NAND型フラッシュメモリ30は、メモリセルアレイ31、入出力回路32、ロジック制御回路33、レディ/ビジー制御回路34、レジスタ35、シーケンサ36、ドライバモジュール37、ロウデコーダモジュール38、センスアンプモジュール39、及びデータラッチ41を含む。
【0030】
メモリセルアレイ31は、複数のブロックBLK0~BLKn(nは1以上の整数)を含む。ブロックBLKは、例えば、一括してデータを消去される複数のメモリセルトランジスタの集合である。例えば、ブロックBLKは、データの消去動作の単位として使用される。ブロックBLKは、複数のワード線を含む。メモリセルトランジスタは、データを不揮発に記憶することが可能である。メモリセルアレイ31には、複数のビット線及び複数のワード線が設けられる。各メモリセルトランジスタは、例えば、1本のビット線と1本のワード線とに関連付けられている。メモリセルアレイ31の詳細については後述する。
【0031】
入出力回路32は、メモリコントローラ10との間で、信号及び情報を送受信する回路である。入出力回路32は、メモリコントローラ10との間で、入出力信号DQ(例えば、8ビットの信号DQ0~DQ7)、並びにデータストローブ信号DQS及びDQSn(信号DQSの反転信号)を送受信する。信号DQは、NAND型フラッシュメモリ30とメモリコントローラ10との間で送受信されるデータの実体である。信号DQは、例えば、コマンドCMD、アドレスADD、ステータス情報STS、及びデータDATである。信号DQS及びDQSnは、信号DQの送受信のタイミングを制御するための信号である。例えば、データの書き込み時には、書き込みデータを含む信号DQと共に信号DQS及びDQSnが、メモリコントローラ10からNAND型フラッシュメモリ30に送信される。NAND型フラッシュメモリ30は、信号DQS及びDQSnに同期して書き込みデータを含む信号DQを受信する。また、データの読み出し時には、読み出しデータを含む信号DQと共に信号DQS及びDQSnが、NAND型フラッシュメモリ30からメモリコントローラ10に送信される。メモリコントローラ10は、信号DQS及びDQSnに同期して読み出しデータを含む信号DQを受信する。なお、入出力回路32は、ロジック制御回路33を介して、メモリコントローラ10から信号DQS及びDQSnを受信してもよい。
【0032】
また、入出力回路32は、信号DQ内のコマンドCMDをコマンドレジスタ35Aに送信する。入出力回路32は、信号DQ内のアドレスADDをアドレスレジスタ35Bに送信する。入出力回路32は、ステータス情報STSをステータスレジスタ35Cから受信する。入出力回路32は、センスアンプモジュール39との間で、信号DQ内のデータDATを送受信する。
【0033】
ロジック制御回路33は、制御信号に基づいて入出力回路32及びシーケンサ36を制御する回路である。ロジック制御回路33は、メモリコントローラ10から、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、及びリードイネーブル信号REnを受信する。信号CEnは、NAND型フラッシュメモリ30をイネーブルにするための信号である。信号CLEは、NAND型フラッシュメモリ30が受信した信号DQがコマンドCMDであることを示す信号である。信号ALEは、NAND型フラッシュメモリ30が受信した信号DQがアドレスADDであることを示す信号である。信号WEnは、信号DQの入力をNAND型フラッシュメモリ30に命令する信号である。信号REnは、信号DQの出力をNAND型フラッシュメモリ30に命令する信号である。NAND型フラッシュメモリ30は、信号REnに基づいて信号DQS及びDQSnを生成する。NAND型フラッシュメモリ30は、生成した信号DQS及びDQSnに基づいてメモリコントローラ10に信号DQを出力する。ロジック制御回路33は、受信した信号に基づいて、入出力回路32及びシーケンサ36を制御する。
【0034】
レディ/ビジー制御回路34は、シーケンサ36の動作状況をメモリコントローラ10に知らせる回路である。レディ/ビジー制御回路34は、シーケンサ36の動作状況に基づいて、レディ/ビジー信号RBnをメモリコントローラ10に送信する。信号RBnは、NAND型フラッシュメモリ30がレディ状態、ビジー状態のいずれであるかを示す信号である。信号RBnは、例えば、NAND型フラッシュメモリ30がレディ状態のときに“High”レベルとされる。レディ状態は、NAND型フラッシュメモリ30がメモリコントローラ10からコマンドを受け付け可能な状態である。信号RBnは、例えば、NAND型フラッシュメモリ30がビジー状態のときに“Low”レベルとされる。ビジー状態は、NAND型フラッシュメモリ30がメモリコントローラ10からコマンドを受け付け不可能な状態である。
【0035】
レジスタ35は、情報を一時的に記憶する回路である。レジスタ35は、コマンドレジスタ35A、アドレスレジスタ35B、及びステータスレジスタ35Cを含む。
【0036】
コマンドレジスタ35Aは、コマンドCMDを記憶する回路である。コマンドCMDは、例えば、シーケンサ36に読み出し動作、書き込み動作、及び消去動作を実行させる命令を含む。
【0037】
アドレスレジスタ35Bは、アドレスADDを記憶する回路である。アドレスADDは、例えば、ブロックアドレスBAd、ページアドレスPAd、及びカラムアドレスCAdを含む。ブロックアドレスBAd、ページアドレスPAd、及びカラムアドレスCAdは、例えば、それぞれブロックBLK、ワード線、及びビット線の選択に使用される。
【0038】
ステータスレジスタ35Cは、例えば、読み出し動作、書き込み動作、及び消去動作におけるステータス情報STSを一時的に記憶する回路である。ステータス情報STSは、動作が正常に終了したか否かをメモリコントローラ10に通知するために使用される。
【0039】
シーケンサ36は、予め定められたプログラムに従って、他の回路の動作を制御する回路である。シーケンサ36は、NAND型フラッシュメモリ30全体の動作を制御する。例えば、シーケンサ36は、コマンドレジスタ35Aに記憶されたコマンドCMDに基づいて、レディ/ビジー制御回路34、ドライバモジュール37、ロウデコーダモジュール38、及びセンスアンプモジュール39を制御する。例えば、シーケンサ36は、読み出し動作、書き込み動作、及び消去動作を実行する。
【0040】
ドライバモジュール37は、読み出し動作、書き込み動作、及び消去動作で使用される電圧を生成する回路である。ドライバモジュール37は、アドレスレジスタ35Bに記憶されたページアドレスPAdに基づいて、選択されたワード線に対応する信号線に、生成した電圧を印加する。
【0041】
ロウデコーダモジュール38は、アドレスレジスタ35Bに記憶されたブロックアドレスBAdに基づいて、メモリセルアレイ31内の1つのブロックBLKを選択する回路である。ロウデコーダモジュール38は、選択されたワード線に対応する信号線に印加された電圧を、選択されたブロックBLK内の選択されたワード線に転送する。
【0042】
センスアンプモジュール39は、書き込み動作において、入出力回路32からデータラッチ41を介して受信した書き込みデータDATに基づく電圧を、ビット線に印加する。また、センスアンプモジュール39は、読み出し動作において、ビット線の電圧に基づいてメモリセルトランジスタに記憶されたデータを判定する。センスアンプモジュール39は、判定結果を読み出しデータDATとしてデータラッチ41を介して入出力回路32に転送する。
【0043】
データラッチ41は、複数のラッチ回路(不図示)を含む。各ラッチ回路は、書き込みデータまたは読み出しデータを一時的に記憶する。例えば、データラッチ41は、書き込み動作において、入出力回路32から受信した書き込みデータを一時的に保持し、センスアンプモジュール39に送信する。また、データラッチ41は、読み出し動作において、センスアンプモジュール39から受信した読み出しデータを一時的に保持し、入出力回路32に送信する。
【0044】
[1-1-3]メモリセルアレイの回路構成
メモリセルアレイ31の回路構成について、
図3を用いて説明する。
図3は、メモリセルアレイ31の回路図である。
図3は、メモリセルアレイ31に含まれるブロックBLK0の回路構成を、メモリセルアレイ31の回路構成の一例として示している。他のブロックBLKも、
図3と同様の構成を有する。
【0045】
ブロックBLKは、例えば、5つのストリングユニットSU0~SU4を含む。各ストリングユニットSUは、例えば、書き込み動作または読み出し動作において一括して選択される複数のNANDストリングNSの集合である。各ストリングユニットSUは、ビット線BL0~BLm(mは1以上の整数)にそれぞれ関連付けられた複数のNANDストリングNSを含む。NANDストリングNSは、直列に接続された複数のメモリセルトランジスタの集合である。各NANDストリングNSは、例えば、メモリセルトランジスタMC0~MC181、並びに選択トランジスタST1及びST2を含む。メモリセルトランジスタMCは、データを不揮発に記憶する。メモリセルトランジスタMCは、制御ゲート及び電荷蓄積層を含む。選択トランジスタST1及びST2は、スイッチング素子である。選択トランジスタST1及びST2のそれぞれは、各種動作時においてストリングユニットSUの選択に使用される。
【0046】
各NANDストリングNSにおいて、メモリセルトランジスタMC0~MC181は、直列接続される。選択トランジスタST1のドレインは、関連付けられたビット線BLに接続される。選択トランジスタST1のソースは、直列接続されたメモリセルトランジスタMC0~MC181の一端に接続される。選択トランジスタST2のドレインは、直列接続されたメモリセルトランジスタMC0~MC181の他端に接続される。選択トランジスタST2のソースは、ソース線SLに接続される。
【0047】
同一のブロックBLKにおいて、メモリセルトランジスタMC0~MC181の制御ゲートは、それぞれワード線WL0~WL181に共通に接続される。ストリングユニットSU0~SU4内のそれぞれの選択トランジスタST1のゲートは、それぞれ選択ゲート線SGD0~SGD4に共通に接続される。同一のブロックBLKに含まれる選択トランジスタST2のゲートは、選択ゲート線SGSに共通に接続される。
【0048】
以上で説明したメモリセルアレイ31の回路構成において、ビット線BLは、例えば、各ストリングユニットSUで同一のカラムアドレスCAdが割り当てられたNANDストリングNSによって共有される。ソース線SLは、例えば、複数のブロックBLK間で共有される。
【0049】
1つのストリングユニットSU内で共通のワード線WLに接続された複数のメモリセルトランジスタMCの集合は、例えばセルユニットCUと称される。ブロックBLKは、複数のセルユニットCUを含む。以下、複数のワード線WLのうちの1本(ワード線WLi)と、複数のストリングユニットSUのうちの1個(ストリングユニットSUj)との組に対応するセルユニットCUを、セルユニットCU(i,j)と表記する(iは0以上181以下の整数、jは0以上4以下の整数)。セルユニットCU(i,j)を区別しない場合は、単にセルユニットCUと表記する。それぞれが閾値電圧に応じて1ビットデータを記憶する複数のメモリセルトランジスタMCを含むセルユニットCUに記憶されているデータが、1ページデータに相当する。セルユニットCUは、メモリセルトランジスタMCが記憶するデータのビット数に基づいて、2ページデータ以上のデータを記憶し得る。本実施形態では、1つのメモリセルトランジスタMCが4ビットデータを記憶することができる。すなわち、本実施形態におけるメモリセルトランジスタMCは、4ビットのデータを記憶するQLC(quad level cell)である。この場合、セルユニットCUに記憶されているデータは、4ページデータに相当する。
【0050】
なお、メモリセルトランジスタMCが記憶できるデータのビット数は4ビットに限定されず、複数ビット、すなわち2ビット以上であれば、本実施形態を適用できる。例えば、メモリセルトランジスタMCは、2ビットのデータを記憶するMLC(multi level cell)であってもよいし、3ビットのデータを記憶するTLC(triple level cell)であってもよいし、5ビットのデータを記憶するPLC(penta level cell)であってもよい。
【0051】
また、メモリセルアレイ31の回路構成は、以上で説明した構成に限定されない。例えば、各ブロックBLKに含まれるストリングユニットSUの個数や、各NANDストリングNSに含まれるメモリセルトランジスタMC並びに選択トランジスタST1及びST2の個数は、それぞれ任意の個数でもよい。以下、メモリセルトランジスタMCをメモリセルMCとも表記する。
【0052】
[1-1-4]メモリセルの閾値電圧分布
メモリセルMCの取り得る閾値電圧分布について、
図4を用いて説明する。
図4は、メモリセルMCの閾値電圧分布と、メモリセルMCが記憶するデータとの関係の一例を示す図である。
図4の横軸は、メモリセルMCの閾値電圧である。
図4の縦軸は、メモリセルMCの数である。
【0053】
図4に示すように、メモリセルMCが4ビットのデータを記憶する場合、その閾値電圧の分布は16個に分けられる。この16個の閾値分布を、閾値電圧が低いものから順に“S0”ステート~“S15”ステートと表記する。
【0054】
また、電圧V1~V15はそれぞれ、書き込み動作時における“S1”ステート~“S15”ステートの各々のベリファイに用いられる電圧(以下、「ベリファイ電圧」と表記する)である。電圧VREADは、読み出し動作時において非選択ワード線WLに印加される電圧である。メモリセルMCは、ゲートに電圧VREADが印加されると記憶するデータに依らずにオン状態になる。これらの電圧値の関係は、V1<V2<V3<V4<V5<V6<V7<V8<V9<V10<V11<V12<V13<V14<V15<VREADである。
【0055】
“S0”ステートは、メモリセルMCの消去状態に相当する。“S1”ステート~“S15”ステートは、メモリセルMCの電荷蓄積層に電荷が注入されてデータが書き込まれた状態に相当する。“S0”ステートに含まれるメモリセルMCの閾値電圧は、電圧V1未満である。“S1”ステートに含まれるメモリセルMCの閾値電圧は、電圧V1以上且つ電圧V2未満である。“S2”ステートに含まれるメモリセルMCの閾値電圧は、電圧V2以上且つ電圧V3未満である。“S3”ステートに含まれるメモリセルMCの閾値電圧は、電圧V3以上且つ電圧V4未満である。“S4”ステートに含まれるメモリセルMCの閾値電圧は、電圧V4以上且つ電圧V5未満である。“S5”ステートに含まれるメモリセルMCの閾値電圧は、電圧V5以上且つ電圧V6未満である。“S6”ステートに含まれるメモリセルMCの閾値電圧は、電圧V6以上且つ電圧V7未満である。“S7”ステートに含まれるメモリセルMCの閾値電圧は、電圧V7以上且つ電圧V8未満である。“S8”ステートに含まれるメモリセルMCの閾値電圧は、電圧V8以上且つ電圧V9未満である。“S9”ステートに含まれるメモリセルMCの閾値電圧は、電圧V9以上且つ電圧V10未満である。“S10”ステートに含まれるメモリセルMCの閾値電圧は、電圧V10以上且つ電圧V11未満である。“S11”ステートに含まれるメモリセルMCの閾値電圧は、電圧V11以上且つ電圧V12未満である。“S12”ステートに含まれるメモリセルMCの閾値電圧は、電圧V12以上且つ電圧V13未満である。“S13”ステートに含まれるメモリセルMCの閾値電圧は、電圧V13以上且つ電圧V14未満である。“S14”ステートに含まれるメモリセルMCの閾値電圧は、電圧V14以上且つ電圧V15未満である。“S15”ステートに含まれるメモリセルMCの閾値電圧は、電圧V15以上且つ電圧VREAD未満である。
【0056】
各ステートに対応するベリファイ電圧の設定値と読み出し電圧の設定値とは、同じであってもよく、異なっていてもよい。以下では、説明を簡略化するため、ベリファイ電圧と読み出し電圧とが同じ設定値である場合について説明する。
【0057】
以下、電圧V1~V15を用いた読み出し動作のことをそれぞれ、読み出し動作R1~R15と表記する。読み出し動作R1は、メモリセルMCの閾値電圧が電圧V1未満か否かを判定する。読み出し動作R2は、メモリセルMCの閾値電圧が電圧V2未満か否かを判定する。読み出し動作R3は、メモリセルMCの閾値電圧が電圧V3未満か否かを判定する。以下、同様である。
【0058】
以上のように、各メモリセルMCは、16個の閾値電圧分布のいずれかを有することで、16種類の状態を取ることができる。これらの状態を、2進数表記で“0000”~“1111”に割り当てることで、各メモリセルMCは4ビットのデータを記憶できる。以下、4ビットのデータを、下位ビットから順にLowerビット、Middleビット、Upperビット、及びTopビットと表記する。また、同一のセルユニットCUに含まれるメモリセルMCが記憶するLowerビットの集合をLowerページと表記し、Middleビットの集合をMiddleページと表記し、Upperビットの集合をUpperページと表記し、Topビットの集合をTopページと表記する。
【0059】
図4の例では、各ステートに含まれるメモリセルMCの“Lowerビット/Middleビット/Upperビット/Topビット”に対して、以下に示すようにデータが割り付けられる。
“S0”ステート:“1111”データ
“S1”ステート:“1110”データ
“S2”ステート:“1100”データ
“S3”ステート:“1101”データ
“S4”ステート:“1001”データ
“S5”ステート:“1011”データ
“S6”ステート:“0011”データ
“S7”ステート:“0010”データ
“S8”ステート:“1010”データ
“S9”ステート:“1000”データ
“S10”ステート:“0000”データ
“S11”ステート:“0001”データ
“S12”ステート:“0101”データ
“S13”ステート:“0111”データ
“S14”ステート:“0110”データ
“S15”ステート:“0100”データ
なお、各ステートに割り付けられるデータはこれに限定されない。
【0060】
このように割り付けられたデータを読み出す場合、Lowerビットは、読み出し動作R6、R8、及びR10によって確定する。Middleビットは、読み出し動作R4及びR12によって確定する。Upperビットは、読み出し動作R2、R5、R9、R13、及びR15によって確定する。Topビットは、読み出し動作R1、R3、R7、R11、及びR14によって確定する。
【0061】
[1-2]書き込み動作
次に、書き込み動作について説明する。以下では、まず、書き込み動作の概要について説明する。
【0062】
[1-2-1]書き込み動作の概要
書き込み動作は、プログラム動作とベリファイ動作とを含む。そして、プログラム動作とベリファイ動作との組み合わせを繰り返すことで、メモリセルMCの閾値電圧がターゲットレベルまで上昇される。
【0063】
プログラム動作は、電子を電荷蓄積層に注入することにより閾値電圧を上昇させる(または注入を禁止することで閾値電圧を維持させる)動作のことである。以下では、閾値電圧を上昇させる動作を「“0”プログラム」と呼ぶ。例えば、“S0”ステートに含まれるメモリセルMCの閾値電圧を、“S1”ステートに含まれるように上昇させることを、“0”プログラムと呼ぶ。“0”プログラム対象とされたビット線BLには、センスアンプモジュール39から“0”プログラムのための電圧(例えば、電圧VSS)が与えられる。他方で、閾値電圧を維持させる動作を「“1”プログラム」または「書き込み禁止」と呼ぶ。“1”プログラム対象とされたビット線BLには、センスアンプモジュール39から“1”プログラムのための電圧が与えられる。
【0064】
ベリファイ動作は、プログラム動作の後、データを読み出し、メモリセルMCの閾値電圧が目標とするターゲットレベルに達したか否かを判定する動作である。閾値電圧がターゲットレベルまで達したメモリセルMCは、その後、書き込み禁止とされる。
【0065】
本実施形態では、上述の書き込み動作が2回に分けて実行される。具体的には、あるセルユニットCUに対応する4ページデータの書き込み動作は、Lowerページ及びMiddleページを書き込む動作(以下、「第1書き込み動作」と表記する)と、Upperページ及びTopページを書き込む動作(以下、「第2書き込み動作」と表記する)との2回に分けて実行される。
【0066】
[1-2-2]第1書き込み動作
まず、第1書き込み動作について、
図5を用いて説明する。
図5は、第1書き込み動作の一例を示すシーケンス図である。なお、
図5では、ベリファイ動作は省略されている。
【0067】
図5に示すように、メモリコントローラ10は、シーケンサ36に、第1書き込み動作を実行させる。シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたLowerページデータ及びMiddleページデータに基づいて、第1書き込み動作を実行する。換言すると、第1書き込み動作は、Lowerページデータに含まれるLowerビット、及びMiddleページデータに含まれるMiddleビットを、セルユニットCU内の各メモリセルMCに書き込む動作である。
【0068】
第1書き込み動作が実行されると、書き込みデータに基づいてメモリセルMCの閾値電圧が上昇し、4つの閾値電圧分布が形成される。
図6は、第1書き込み動作によるメモリセルMCの閾値電圧分布の変化を示す図である。
図6に示すように、第1書き込み動作によって、“M0”ステート、“M1”ステート、“M2”ステート、及び“M3”ステートが形成される。
図6に示すように、第1書き込み動作では、例えば、“M0”ステートは、“11”データが書き込まれる複数のメモリセルMCによって形成される。ここで、“kh”データとの表記は、Lowerビットが“k”データであり、Middleビットが“h”データであることを指す。“M1”ステートは、“10”データが書き込まれる複数のメモリセルMCによって形成される。“M2”ステートは、“00”データが書き込まれる複数のメモリセルMCによって形成される。“M3”ステートは、“01”データが書き込まれる複数のメモリセルMCによって形成される。
【0069】
より具体的には、シーケンサ36は、電圧VM1、VM2、及びVM3をベリファイ電圧として使用する。電圧VM1は、“10”データを書き込む場合に使用されるベリファイ電圧であり、電圧V1以上且つ電圧V4未満である。電圧VM2は、“00”データを書き込む場合に使用されるベリファイ電圧であり、電圧V4以上且つ電圧V6未満である。電圧VM3は、“01”データを書き込む場合に使用されるベリファイ電圧であり、電圧V6以上且つ電圧V12未満である。
【0070】
“M0”ステートに含まれる閾値電圧は電圧V1未満である。“M1”ステートに含まれる閾値電圧は、電圧VM1以上且つ電圧V5未満である。“M2”ステートに含まれる閾値電圧は、電圧VM2以上且つ電圧V7未満である。“M3”ステートに含まれる閾値電圧は、電圧VM3以上且つ電圧V13未満である。
【0071】
[1-2-3]第2書き込み動作
次に、第2書き込み動作について、
図7を用いて説明する。
図7は、第2書き込み動作の一例を示すシーケンス図である。なお、
図7では、ベリファイ動作は省略されている。
【0072】
図7に示すように、メモリコントローラ10は、シーケンサ36に、第2書き込み動作を実行させる。シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータ、並びにメモリセルアレイ31からセンスアンプモジュール39に読み出され、データラッチ41に記憶されたLowerページデータ及びMiddleページデータに基づいて、第2書き込み動作を実行する。換言すると、第2書き込み動作は、セルユニットCUから読み出されたLowerページデータに含まれるLowerビット及びMiddleページデータに含まれるMiddleビット、並びにメモリコントローラ10から入力されたUpperページデータに含まれるUpperビット及びTopページデータに含まれるTopビットを、セルユニットCU内の各メモリセルMCに書き込む動作である。なお、Lowerページデータ及びMiddleページデータをメモリセルアレイ31からメモリコントローラ10に読み出してもよい。この場合、メモリセルアレイ31から受け取ったページデータを、メモリコントローラ10においてエラー訂正し、訂正されたページデータを、あらためてメモリコントローラ10からデータラッチ41にLowerページデータ及びMiddleページデータとして供給しなおしてもよい。
【0073】
第2書き込み動作が実行されると、書き込みデータに基づいてメモリセルMCの閾値電圧が上昇し、16個の閾値電圧分布が形成される。
図8は、第2書き込み動作によるメモリセルMCの閾値電圧分布の変化を示す図である。
図8に示すように、第2書き込み動作では、例えば、“M0”ステートの閾値電圧分布から“S0”ステート~“S3”ステートの閾値電圧分布が形成される。“M1”ステートの閾値電圧分布から“S4”ステート、“S5”ステート、“S8”ステート、及び“S9”ステートの閾値電圧分布が形成される。“M2”ステートの閾値電圧分布から“S6”ステート、“S7”ステート、“S10”ステート、及び“S11”ステートの閾値電圧分布が形成される。“M3”ステートの閾値電圧分布から“S12”ステート~“S15”ステートの閾値電圧分布が形成される。
【0074】
[1-2-4]書き込み動作の実行順序
次に、第1書き込み動作及び第2書き込み動作が実行される順序について、
図9を用いて説明する。
図9は、あるブロックBLKに第1書き込み動作及び第2書き込み動作が実行される順序の一例を説明する図である。
【0075】
図9は、ブロックBLK0に連続してデータが書き込まれる場合における、ワード線WL及びストリングユニットSUの選択順序の一例を示している。各ワード線WLと各ストリングユニットSUとの交点に対応する実線の四角枠は、1つのセルユニットCUを示している。破線で区切られた四角枠の上段は、第2書き込み動作(参照符号“WRT2”)を示している。破線で区切られた四角枠の下段は、第1書き込み動作(参照符号“WRT1”)を示している。すなわち、四角枠の上段及び下段の数値が、ブロックBLK0の各セルユニットCU内の複数のメモリセルMCへの第1書き込み動作及び第2書き込み動作の実行順番(以下、「書き込み順番」と表記する)を表している。
【0076】
図9に示すように、シーケンサ36は、第1~第5番目の動作として、ワード線WL0を選択し且つストリングユニットSU0~SU4を順に選択した、第1書き込み動作を実行する。
【0077】
次に、シーケンサ36は、第6番目の動作として、ストリングユニットSU0を選択して、ワード線WL1を選択した第1書き込み動作を実行する。シーケンサ36は、第7番目の動作として、ストリングユニットSU0を選択して、ワード線WL0を選択した第2書き込み動作を実行する。
【0078】
次に、シーケンサ36は、第8~第15番目の動作として、ストリングユニットSU1~SU4を順に選択して、第6及び第7番目の動作と同じ手順で、ワード線WL1を選択した第1書き込み動作と、ワード線WL0を選択した第2書き込み動作と、を交互に実行する。
【0079】
次に、シーケンサ36は、第16~第25番目の動作として、第6~第15番目の動作と同様に、ストリングユニットSU0~SU4を順に選択して、ワード線WL2を選択した第1書き込み動作と、ワード線WL1を選択した第2書き込み動作と、を交互に実行する。
【0080】
以下、同様にして、シーケンサ36は、第(26+10p)~第(35+10p)番目の動作として、ストリングユニットSU0~SU4を順に選択して、ワード線WL(3+p)を選択した第1書き込み動作と、ワード線WL(2+p)を選択した第2書き込み動作と、を交互に実行する(pは0以上178以下の整数)。
【0081】
次に、シーケンサ36は、第1816~第1820番目の動作として、ワード線WL181を選択し且つストリングユニットSU0~SU4を順に選択した、第2書き込み動作を実行する。
【0082】
[1-2-5]書き込み管理テーブル
書き込み管理テーブルTWMについて、
図10を用いて説明する。
図10は、書き込み管理テーブルTWMの一例を示す概念図である。
【0083】
書き込み管理テーブルTWMは、ブロックBLK毎に、どのセルユニットCUまで書き込み動作(第1書き込み動作または第2書き込み動作)が実行済みであるかを記憶する。
【0084】
図10に示すように、書き込み管理テーブルTWMの各エントリは、書き込み先ブロックBLKと、そのブロックBLKの書き込み対象のセルユニットCU(以下、「対象セルユニットCU」と表記する)と、対象セルユニットCU内の複数のメモリセルMCに対して実行された書き込み動作の区分(以下、「書き込み区分」と表記する)とを含む。書き込み先ブロックBLKとは、書き込み動作が進行中のブロックBLK、より詳しくは、ブロックBLK内のすべてのCUへの書き込みが完了しておらず、かつ、今後も書き込み動作が実行される可能性があるブロックBLKを意味する。書き込み区分には、例えば、第1書き込み動作が実行済みである場合、“1”が記憶され、第2書き込み動作が実行済みである場合、“2”が記憶される。
【0085】
図10の例では、書き込み先ブロックBLK0については、セルユニットCU(1,1)内の複数のメモリセルMCに対する第2書き込み動作まで実行済みである。書き込み先ブロックBLK1については、セルユニットCU(0,2)内の複数のメモリセルMCに対する第1書き込み動作まで実行済みである。
【0086】
エントリは、ブロックBLKのセルユニットCU(0,0)内の複数のメモリセルMCに第1書き込み動作が実行されたときに追加される。エントリは、そのブロックBLKのセルユニットCU(181,4)内の複数のメモリセルMCに第2書き込み動作が実行されたときに削除される。
【0087】
書き込み管理テーブルTWMは、例えば、NAND型フラッシュメモリ30のいずれかのブロックBLKに記憶される。そして、例えば、メモリシステム1への電源投入直後に、NAND型フラッシュメモリ30からRAM16にロードされる。また、メモリシステム1の電源が遮断される際には、RAM16に記憶される書き込み管理テーブルTWMはNAND型フラッシュメモリ30のいずれかのブロックBLKに書き込まれる。
【0088】
[1-2-6]書き込み履歴テーブル
書き込み履歴テーブルT1Hについて、
図11を用いて説明する。
図11は、書き込み履歴テーブルT1Hの一例を示す概念図である。
【0089】
書き込み履歴テーブルT1Hは、書き込み先ブロックBLKの対象セルユニットCU内の複数のメモリセルMCに第1書き込み動作が実行された時刻を記憶する。書き込み履歴テーブルT1Hは、書き込み先ブロックBLK毎に用意される。
【0090】
図11に示すように、書き込み履歴テーブルT1Hは、複数(
図11の例では6個)のエントリを有する。各エントリは、インデックスと、書き込み先ブロックBLKの対象セルユニットCUと、対象セルユニットCU内の複数のメモリセルMCに第1書き込み動作が実行された時刻(以下、「第1書き込み時刻」と表記する)とを含む。インデックスは、例えば、1~6である。第1書き込み時刻には、例えば、日付及び時刻情報が記憶される。
【0091】
図11の例では、セルユニットCU(1,0)内の複数のメモリセルMCに第1書き込み動作が実行された時刻は、2022年1月1日 00:00:00である。セルユニットCU(1,1)内の複数のメモリセルMCに第1書き込み動作が実行された時刻は、2022年1月1日 00:01:00である。セルユニットCU(1,2)内の複数のメモリセルMCに第1書き込み動作が実行された時刻は、2022年1月1日 00:03:00である。セルユニットCU(1,3)内の複数のメモリセルMCに第1書き込み動作が実行された時刻は、2022年1月1日 00:10:00である。セルユニットCU(1,4)内の複数のメモリセルMCに第1書き込み動作が実行された時刻は、2022年1月1日 00:10:30である。セルユニットCU(2,0)内の複数のメモリセルMCに第1書き込み動作が実行された時刻は、2022年1月1日 00:11:00である。
【0092】
エントリは、ブロックBLKに第1書き込み動作が実行されたときに追加される。書き込み履歴テーブルT1Hの6個のエントリ全てに対象セルユニットCU、及び第1書き込み時刻が記憶されているときに、そのブロックBLKに第1書き込み動作が実行された場合、最も古いエントリが更新される。
図11の例では、最も古いエントリは、インデックス1のエントリである。エントリは、そのブロックBLKの対象セルユニットCU内の複数のメモリセルMCに第2書き込み動作が実行されたときに削除される。
【0093】
書き込み履歴テーブルT1Hは、例えば、NAND型フラッシュメモリ30のいずれかのブロックBLKに記憶される。そして、例えば、メモリシステム1への電源投入直後に、NAND型フラッシュメモリ30からRAM16にロードされる。また、メモリシステム1の電源が遮断される際には、RAM16に記憶される書き込み履歴テーブルT1HはNAND型フラッシュメモリ30のいずれかのブロックBLKに書き込まれる。
【0094】
なお、書き込み履歴テーブルT1Hのエントリは、対象セルユニットCUを含んでいなくてもよい。この場合、現在の書き込み順番と書き込み管理テーブルTWMとに基づいて、書き込み履歴テーブルT1Hの各エントリの第1書き込み時刻に対応するセルユニットCUが判別される。
【0095】
[1-2-7]書き込み動作の詳細
次に、書き込み動作の詳細について、
図12を用いて説明する。
図12は、書き込み動作の一例を示すフローチャートである。
【0096】
メモリコントローラ10がホスト2からLowerページデータ及びMiddleページデータ、またはUpperページデータ及びTopページデータを受け取ると、上述の書き込み順序に従って、ステップS100~S105の処理が実行される。
【0097】
対象セルユニットCU(より詳しくは対象セルユニットCU内の複数のメモリセルMC)に第1書き込み動作を実行する場合(S100_Yes)、メモリコントローラ10は、対象セルユニットCU、及び第1書き込み時刻を書き込み履歴テーブルT1Hに設定する(S101)。メモリコントローラ10は、例えば、現在時刻を、第1書き込み時刻として設定する。
【0098】
書き込み履歴テーブルT1Hへの設定が終了すると、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたLowerページデータ及びMiddleページデータに基づいて、対象セルユニットCUに第1書き込み動作を実行する(S102)。
【0099】
対象セルユニットCUへの第1書き込み動作が終了すると、メモリコントローラ10は、対象セルユニットCU、及び書き込み区分を書き込み管理テーブルTWMに設定する(S105)。メモリコントローラ10は、例えば、“1”(第1書き込み動作)を書き込み区分として設定する。これにより、メモリコントローラ10は、対象セルユニットCUへの第1書き込み動作を終了する。
【0100】
他方で、対象セルユニットCU(より詳しくは対象セルユニットCU内の複数のメモリセルMC)に第1書き込み動作を実行しない、すなわち第2書き込み動作を実行する場合(S100_No)、メモリコントローラ10は、対象セルユニットCUのエントリを書き込み履歴テーブルT1Hから削除する(S103)。
【0101】
書き込み履歴テーブルT1Hから対象セルユニットCUのエントリを削除すると、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータ、並びにメモリセルアレイ31からセンスアンプモジュール39に読み出され、データラッチ41に記憶されたLowerページデータ及びMiddleページデータに基づいて、対象セルユニットCUに第2書き込み動作を実行する(S104)。
【0102】
対象セルユニットCUへの第2書き込み動作が終了すると、メモリコントローラ10は、対象セルユニットCU、及び書き込み区分を書き込み管理テーブルTWMに設定する(S105)。メモリコントローラ10は、例えば、“2”(第2書き込み動作)を書き込み区分として設定する。これにより、メモリコントローラ10は、対象セルユニットCUへの第2書き込み動作を終了する。
【0103】
[1-3]パディング動作
ホスト2からの書き込み要求はいつ来るか分からず、書き込み動作の途中で長時間書き込み要求が来なくなる可能性がある。メモリセルMCへの書き込み動作の途中で長時間経過すると、メモリセルMCに書き込まれたデータの信頼性が悪化する懸念がある。ホスト2からの書き込み要求に依存せずに書き込み動作を実施し、メモリセルMCへの書き込み動作を一定時間以内に完了することを保証するために、本実施形態では、パディング動作を行う。以下では、まず、パディング動作の概要について説明する。
【0104】
[1-3-1]パディング動作の概要
パディング動作は、第1書き込み動作が実行されていないセルユニットCU内の複数のメモリセルMC、及び第1書き込み動作は実行されたが第2書き込み動作が実行されていないセルユニットCU内の複数のメモリセルMCを、何らかのデータ(以下、「パディングデータ」と表記する)で埋める(書き込む)動作である。換言すると、パディング動作では、第1書き込み動作が実行されていないセルユニットCUに、パディングデータに基づいて第1書き込み動作が実行される。また、第1書き込み動作は実行されたが第2書き込み動作が実行されていないセルユニットCUに、パディングデータに基づいて第2書き込み動作が実行される。パディング動作は、パディング判定動作でパディング動作を実行すべきと判定された場合に実行される。
【0105】
[1-3-2]パディング判定動作
パディング判定動作について、
図13を用いて説明する。
図13は、パディング判定動作の一例を示すフローチャートである。
【0106】
メモリコントローラ10は、予め設定された一定時間間隔で、ステップS120~S123を実行する。
【0107】
まず、メモリコントローラ10は、書き込み履歴テーブルT1Hの最も古いエントリの第1書き込み時刻と現在時刻との時間差T1を計算する(S120)。すなわち、メモリコントローラ10は、最も古く第1書き込み動作が実行されたセルユニットCU内の複数のメモリセルMCに関する、第1書き込み動作が実行されてからの経過時間T1を計算する。
【0108】
時間差T1が閾値TVaを超えていない場合(S121_No)、メモリコントローラ10は、パディング判定動作を終了する。この場合、メモリコントローラ10は、パディング動作を実行しない。閾値TVaは、例えば、1時間、2時間等である。
【0109】
他方で、時間差T1が閾値TVaを超えている場合(S121_Yes)、メモリコントローラ10は、パディング動作を実行すべきと判定し、パディングデータを準備する(S122)。具体的には、メモリコントローラ10は、書き込み管理テーブルTWMと、書き込み履歴テーブルT1Hとに基づいて、現在の書き込み順番の次に実行されるべき書き込み動作から最も古いエントリの対象セルユニットCUへの第2書き込み動作までの、各書き込み動作に用いられるパディングデータを準備する。この場合、メモリコントローラ10は、準備したパディングデータに基づいて、パディング動作を実行する(S123)。パディング動作の詳細については後述する。
【0110】
[1-3-3]パディングデータ
準備するパディングデータのサイズについて説明する。
【0111】
まず、書き込み履歴テーブルT1Hの6個のエントリ全てに対象セルユニットCU、及び第1書き込み時刻が記憶されている場合について、
図14を用いて説明する。
図14は、パディング動作に用いられるパディングデータのサイズの一例を説明する図である。
【0112】
図14では、セルユニットCU(2,1)への第1書き込み動作(書き込み順番:18)まで書き込み動作が実行済みである場合を例に挙げて説明する。この場合、
図14に示すように、書き込み管理テーブルTWMには、対応する書き込み先ブロックBLKの対象セルユニットCUとして“CU(2,1)”が記憶され、書き込み区分として“1”が記憶されている。書き込み履歴テーブルT1Hのインデックス1~6には、インデックス1から順に、対象セルユニットCUとして“CU(2,1)”、“CU(1,1)”、“CU(1,2)”、“CU(1,3)”、“CU(1,4)”、及び“CU(2,0)”が記憶され、第1書き込み時刻として各セルユニットCUに第1書き込み動作が実行された時刻がそれぞれ記憶されている。書き込み履歴テーブルT1Hの最も古いエントリは、インデックス2のエントリである。
【0113】
セルユニットCU(2,1)への第1書き込み動作の次に実行される書き込み動作は、セルユニットCU(1,1)への第2書き込み動作(書き込み順番:19)である。また、書き込み履歴テーブルT1Hの最も古いエントリは、セルユニットCU(1,1)のエントリである。この場合、パディング動作が実行される対象セルユニットCUは、セルユニットCU(1,1)である。よって、書き込み履歴テーブルT1Hの6個のエントリ全てに対象セルユニットCU、及び第1書き込み時刻が記憶されている場合、メモリコントローラ10は、最も古いエントリの対象セルユニットCU(セルユニットCU(1,1))への第2書き込み動作に用いられるパディングデータ(Upperページデータ及びTopページデータ)を準備する。すなわち、この場合に準備するパディングデータのサイズは、2ページのデータである。
【0114】
次に、書き込み履歴テーブルT1Hに対象セルユニットCU、及び第1書き込み時刻が記憶されていないエントリがある場合について、
図15を用いて説明する。
図15は、パディング動作に用いられるパディングデータのサイズの一例を説明する図である。
【0115】
図15では、セルユニットCU(0,2)への第1書き込み動作(書き込み順番:3)まで書き込み動作が実行済みである場合を例に挙げて説明する。この場合、
図15に示すように、書き込み管理テーブルTWMには、対応する書き込み先ブロックBLKの対象セルユニットCUとして“CU(0,2)”が記憶され、書き込み区分として“1”が記憶されている。書き込み履歴テーブルT1Hのインデックス1~3には、インデックス1から順に、対象セルユニットCUとして“CU(0,0)”、“CU(0,1)”、及び“CU(0,2)”が記憶され、第1書き込み時刻として各セルユニットCUに第1書き込み動作が実行された時刻がそれぞれ記憶されている。インデックス4~6には、対象セルユニットCU、及び第1書き込み時刻が記憶されていない。書き込み履歴テーブルT1Hの最も古いエントリは、インデックス1のエントリである。
【0116】
セルユニットCU(0,2)への第1書き込み動作の次に実行される書き込み動作は、セルユニットCU(0,3)への第1書き込み動作(書き込み順番:4)である。また、書き込み履歴テーブルT1Hの最も古いエントリは、セルユニットCU(0,0)のエントリである。この場合、パディング動作が実行される対象セルユニットCUは、セルユニットCU(0,3)、セルユニットCU(0,4)、セルユニットCU(1,0)、及びセルユニットCU(0,0)である。よって、書き込み履歴テーブルT1Hに対象セルユニットCU、及び第1書き込み時刻が記憶されていないエントリがある場合、メモリコントローラ10は、セルユニットCU(0,3)、セルユニットCU(0,4)、及びセルユニットCU(1,0)への第1書き込み動作に用いられるパディングデータ(Lowerページデータ及びMiddleページデータ)を準備する。更に、メモリコントローラ10は、最も古いエントリの対象セルユニットCU(セルユニットCU(0,0))への第2書き込み動作に用いられるパディングデータ(Upperページデータ及びTopページデータ)を準備する。すなわち、この場合に準備するパディングデータのサイズは、2ページ×4セルユニットCU=8ページのデータである。
【0117】
次に、準備するパディングデータの内容について説明する。
【0118】
パディングデータは、例えば、ダミーデータである。ダミーデータは、例えば、準備するデータのビット数分の“0”データを、“0”データの数と“1”データの数に偏りが生じないようにランダマイズしたデータである。ランダマイズは、例えば、メモリコントローラ10によって実行される。なお、ダミーデータは、例えば、準備するデータのビット数分のランダムなデータであってもよい。
【0119】
また、パディングデータは、例えば、他ブロックBLKのデータであってもよい。他ブロックBLKのデータは、例えば、他ブロックBLKにおいて、ウェアレベリング、コンパクション、またはリフレッシュによって別のブロックに書き直す(コピーする)データである。
【0120】
ウェアレベリング、コンパクション、及びリフレッシュは、メモリコントローラ10によって実行される。
【0121】
ウェアレベリングは、例えば、消去回数が比較的多いブロックBLKに記憶されているデータと、消去回数が比較的少ないブロックBLKに記憶されているデータとを入れ替えることにより、NAND型フラッシュメモリ30の複数のブロックそれぞれの消去回数を平準化する処理である。
【0122】
コンパクションは、複数のブロックBLKから有効データを読み出して(集めて)、別のブロックBLKに書き直す処理である。コンパクションは、例えば、消去可能なブロックBLKの数が減少した場合に実行される。
【0123】
リフレッシュは、あるブロックBLKに記憶されているデータを、エラー訂正を施した上で別のブロックBLKまたは当該ブロックBLKに書き直す処理である。リフレッシュは、例えば、データのエラー訂正処理において訂正ビット数が増加したブロックBLKを検出したとき、またはブロックBLKに書き込み動作が実行されてから一定時間経過したときに実行される。
【0124】
[1-3-4]パディング動作の詳細
次に、パディング動作の詳細について、
図16を用いて説明する。
図16は、パディング動作の一例を示すフローチャートである。
【0125】
パディング動作は、最も古く第1書き込み動作が実行されたセルユニットCUへの第1書き込み動作が実行されてからの経過時間T1に基づいて実行される。経過時間T1が閾値TVaを超えている場合、すなわちメモリコントローラ10が上述した
図13のステップS122の処理によってパディングデータを準備すると、上述の書き込み順序に従って、ステップS130~S136の処理が実行される。換言すると、上述の書き込み順序に従って、パディング動作を実行する対象セルユニットCU内の複数のメモリセルMCに、パディングデータのうちの対応する2ページデータが書き込まれる。
【0126】
対象セルユニットCU(より詳しくは対象セルユニットCU内の複数のメモリセルMC)に第1書き込み動作を実行する場合(S130_Yes)、パディングデータがダミーデータである場合には(S131_Yes)、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたパディングデータ(対象セルユニットCUに対応するLowerページデータ及びMiddleページデータ)に基づいて、対象セルユニットCUに第1書き込み動作を実行する(S133)。換言すると、シーケンサ36は、対象セルユニットCUに、第1書き込み動作を実行することによって、パディングデータを書き込む。他方で、パディングデータがダミーデータではない場合には(S131_No)、メモリコントローラ10は、対象セルユニットCU、及び第1書き込み時刻を書き込み履歴テーブルT1Hに設定する(S132)。ダミーデータではないデータとは、例えば、ウェアレベリング、コンパクション、またはリフレッシュによって別のブロックから書き直されるデータである。書き込み履歴テーブルT1Hへの設定が終了すると、シーケンサ36は、ステップS133の処理を実行する。
【0127】
対象セルユニットCUへの第1書き込み動作が終了すると、メモリコントローラ10は、対象セルユニットCU、及び書き込み区分を書き込み管理テーブルTWMに設定する(S136)。メモリコントローラ10は、例えば、“1”(第1書き込み動作)を書き込み区分として設定する。
【0128】
他方で、対象セルユニットCU(より詳しくは対象セルユニットCU内の複数のメモリセルMC)に第2書き込み動作を実行する場合(S130_No)、メモリコントローラ10は、対象セルユニットCUのエントリを書き込み履歴テーブルT1Hから削除する(S134)。
【0129】
書き込み履歴テーブルT1Hから対象セルユニットCUのエントリが削除されると、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたパディングデータ(対象セルユニットCUに対応するUpperページデータ及びTopページデータ)に基づいて、対象セルユニットCUに第2書き込み動作を実行する(S135)。換言すると、シーケンサ36は、対象セルユニットCUに、第2書き込み動作を実行することによって、パディングデータを書き込む。
【0130】
対象セルユニットCUへの第2書き込み動作が終了すると、メモリコントローラ10は、対象セルユニットCU、及び書き込み区分を書き込み管理テーブルTWMに設定する(S136)。メモリコントローラ10は、例えば、“2”(第2書き込み動作)を書き込み区分として設定する。
【0131】
パディング動作により、現在の書き込み順番の次の書き込み順番から、最も古く第1書き込み動作が実行されたセルユニットCUへの第2書き込み動作の書き込み順番の1つ前の書き込み順番まで、パディングデータ(Lowerページデータ及びMiddleページデータ)を用いた、各書き込み順番に対応するセルユニットCUへの第1書き込み動作が実行される。換言すると、第1書き込み動作において、メモリコントローラ10は、シーケンサ36に、これらのセルユニットCUへのパディングデータ(Lowerページデータ及びMiddleページデータ)の書き込みを実行させる。また、パディングデータ(Upperページデータ及びTopページデータ)を用いた、最も古く第1書き込み動作が実行されたセルユニットCUへの第2書き込み動作が実行される。換言すると、第2書き込み動作において、メモリコントローラ10は、シーケンサ36に、最も古く第1書き込み動作が実行されたセルユニットCUへのパディングデータ(Upperページデータ及びTopページデータ)の書き込みを実行させる。これにより、現在の書き込み順番の次の書き込み順番から、最も古く第1書き込み動作が実行されたセルユニットCUへの第2書き込み動作の書き込み順番まで、各書き込み順番に対応するセルユニットCUにパディングデータが書き込まれる。
【0132】
なお、メモリシステム1の電源が遮断された場合には、再度電源が投入されたときに、メモリコントローラ10は、パディングデータを準備する。具体的には、例えば、メモリコントローラ10は、書き込み管理テーブルTWMと、書き込み履歴テーブルT1Hとに基づいて、現在の書き込み順番の次に実行されるべき書き込み動作から書き込み履歴テーブルT1Hの全エントリの対象セルユニットCUへの第2書き込み動作までの、各書き込み動作に用いられるパディングデータを準備する。そして、メモリコントローラ10は、準備したパディングデータに基づいて、パディング動作を実行する。
【0133】
[1-4]効果
第1実施形態によれば、メモリシステム1のデータの信頼性を向上できる。本効果について以下に説明する。
【0134】
ホスト2から受信した書き込み要求に基づいて、
図9に示す書き込み順序でブロックBLKにデータを書き込む場合、各対象セルユニットCUにおいて、第1書き込み動作及び第2書き込み動作は連続して実行されない。
図9の例では、第1書き込み動作が実行されてから第2書き込み動作が実行されるまでのステップ数は、ワード線WL0及びWL181のストリングユニットSU0~SU4では6ステップ~10ステップ、他のワード線WLのストリングユニットSU0~SU4では11ステップである。
【0135】
このため、対象セルユニットCUによっては、メモリセルMCに第1書き込み動作が実行されてからなかなか第2書き込み動作が実行されず、第1書き込み動作が実行された状態でメモリセルMCが比較的長い時間放置される場合がある。これは、例えば、ホスト2から受信する書き込み要求が間欠的である場合、またはホスト2から受信した書き込み要求に基づいて書き込み動作を実行している途中で電源が遮断されてしばらく電源が投入されない場合である。この場合、例えば、メモリセルMCの電荷蓄積層から電子が抜けて閾値電圧が変化し、ビット誤りが発生する可能性がある。
【0136】
本実施形態では、メモリコントローラ10が予め設定された一定時間間隔で、パディング判定動作を実行する。パディング判定動作において、書き込み履歴テーブルT1Hの最も古いエントリの対象セルユニットCUへの第1書き込み動作が実行されてからの経過時間が閾値を超えている場合、メモリコントローラ10は、書き込み管理テーブルTWMと、書き込み履歴テーブルT1Hとに基づいて、パディングデータを準備する。準備するパディングデータは、現在の書き込み順番の次に実行されるべき書き込み動作から最も古いエントリの対象セルユニットCUへの第2書き込み動作までの、各書き込み動作に用いられるデータである。パディングデータを準備すると、メモリコントローラ10は、準備したパディングデータに基づいて、パディング動作を実行する。これにより、現在の書き込み順番の次に実行されるべき書き込み動作の対象セルユニットCUから最も古いエントリの対象セルユニットCUまでの、各対象セルユニットCU内の複数のメモリセルMCにパディングデータが書き込まれる。
【0137】
このため、本実施形態に係る構成によれば、第1書き込み動作が実行された状態でメモリセルMCが比較的長い時間放置されるのを抑制できる。これにより、第1書き込み動作が実行された状態でビット誤りが発生する可能性を低減できる。よって、メモリシステム1のデータの信頼性を向上できる。
【0138】
[2]第2実施形態
第2実施形態について説明する。本実施形態に係るメモリシステム1は、書き込み履歴テーブルT1Hが廃される点で第1実施形態と異なる。また、本実施形態に係るメモリシステム1では、NAND型フラッシュメモリ30の構成が第1実施形態と異なる。更に、本実施形態に係るメモリシステム1では、書き込み動作が第1実施形態と異なる。以下では、第1実施形態と異なる点を中心に説明する。
【0139】
[2-1]メモリシステムの構成
メモリシステム1の構成について、
図17を用いて説明する。
図17は、メモリシステム1を含む情報処理システムの一例を示すブロック図である。
【0140】
メモリシステム1において、書き込み履歴テーブルT1Hは廃されている。メモリシステム1の他の構成は、
図1を参照して説明した第1実施形態と同様である。
【0141】
[2-2]NAND型フラッシュメモリの構成
NAND型フラッシュメモリ30の構成について、
図18を用いて説明する。
図18は、NAND型フラッシュメモリ30の構成の一例を示すブロック図である。
【0142】
NAND型フラッシュメモリ30は、データチェック回路40を更に含む。
【0143】
データチェック回路40は、第1書き込み動作が実行された状態のメモリセルMCに記憶されているLowerビット及びMiddleビットにビット誤りがあるかどうかをチェックする回路である。
【0144】
データチェック回路40は、例えば、誤り検出符号(EDC:Error Detection Code)を用いて、メモリセルMCに記憶されているデータのビット誤りを検出する。すなわち、データチェック回路40によるデータのチェックは、誤り検出符号を用いて、例えばセルユニットCU毎に、Lowerビット及びMiddleビットの誤りビットの数を検出することである。具体的には、シーケンサ36は、読み出し電圧VM1、VM2、及びVM3を用いて、第1書き込み動作が実行された状態のセルユニットCUのLowerページデータ及びMiddleページデータを読み出す。読み出し電圧VM1、VM2、及びVM3はそれぞれ、第2書き込み動作において、メモリセルアレイ31からLowerページデータ及びMiddleページデータを読み出すときに使用される電圧Vdtである。読み出されたデータは、データチェック回路40に供給される。データチェック回路40は、データを受け取ると、予め決められた単位で、誤り検出符号を用いて、読み出したデータの誤りビット数を検出する。誤り検出符号は、例えば、パリティ符号、チェックサム、及び巡回冗長符号(CRC:Cyclic Redundancy Code)等である。データのチェックが終わると、データチェック回路40は、チェックした結果(検出値)をメモリコントローラ10に送信する。
【0145】
NAND型フラッシュメモリ30の他の構成は、
図2を参照して説明した第1実施形態と同様である。
【0146】
なお、データチェック回路40は、メモリコントローラ10に設けられていてもよい。
【0147】
[2-3]書き込み動作
本実施形態では、書き込み動作はリカバリ動作を含む。リカバリ動作は、第1書き込み動作が実行された状態でビット誤りがあると判定されたメモリセルMCのデータを訂正する動作である。リカバリ動作は、データチェック回路40によるチェックの結果に基づいて実行される。リカバリ動作の詳細については後述する。
【0148】
書き込み動作について、
図19を用いて説明する。
図19は、書き込み動作の一例を示すフローチャートである。
【0149】
メモリコントローラ10がホスト2からLowerページデータ及びMiddleページデータ、またはUpperページデータ及びTopページデータを受け取ると、第1実施形態で述べた書き込み順序に従って、ステップS200~S206の処理が実行される。
【0150】
対象セルユニットCU(より詳しくは対象セルユニットCU内の複数のメモリセルMC)に第1書き込み動作を実行する場合(S200_No)、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたLowerページデータ及びMiddleページデータに基づいて、対象セルユニットCUに第1書き込み動作を実行する(S205)。
【0151】
対象セルユニットCUへの第1書き込み動作が終了すると、メモリコントローラ10は、対象セルユニットCU、及び書き込み区分を書き込み管理テーブルTWMに設定する(S206)。メモリコントローラ10は、例えば、“1”(第1書き込み動作)を書き込み区分として設定する。
【0152】
他方で、対象セルユニットCU(より詳しくは対象セルユニットCU内の複数のメモリセルMC)に第2書き込み動作を実行する場合(S200_Yes)、シーケンサ36は、読み出し電圧VM1、VM2、及びVM3を用いて、対象セルユニットCUのLowerページデータ及びMiddleページデータを読み出す。読み出されたデータは、データラッチ41によって記憶されるとともにデータチェック回路40に供給される。データチェック回路40は、対象セルユニットCUのLowerページデータ及びMiddleページデータをチェックする(S201)。データのチェックが終わると、データチェック回路40は、対象セルユニットCUに対するチェックの結果をメモリコントローラ10に送信する。
【0153】
データチェック回路40からチェックの結果を受信すると、メモリコントローラ10は、チェックの結果(すなわち、データチェック回路40によって検出された誤りビットの数)が閾値TVbを超えているか否かを判定する(S202)。閾値TVbは、例えば、1ビット以上、且つデータチェック回路40が検出可能な誤りビット数以下である。閾値TVbは、例えば、数ビット、または数十ビット等である。
【0154】
チェックの結果が閾値TVbを超えていない場合(S202_No)、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータ、並びにデータラッチ41に記憶されているLowerページデータ及びMiddleページデータに基づいて、対象セルユニットCUに第2書き込み動作を実行する(S204)。
【0155】
対象セルユニットCUへの第2書き込み動作が終了すると、メモリコントローラ10は、対象セルユニットCU、及び書き込み区分を書き込み管理テーブルTWMに設定する(S206)。メモリコントローラ10は、例えば、“2”(第2書き込み動作)を書き込み区分として設定する。
【0156】
他方で、チェックの結果が閾値TVbを超えている場合(S202_Yes)、すなわちLowerビットまたはMiddleビットに閾値TVbより多いビット誤りがあると判定した場合、メモリコントローラ10は、リカバリ動作を実行する(S203)。
【0157】
[2-4]リカバリ動作
リカバリ動作について、
図20を用いて説明する。
図20は、リカバリ動作の一例を示すフローチャートである。
【0158】
上述した
図19のステップS202の処理によって、チェックの結果が閾値TVbを超えているとメモリコントローラ10が判定すると、ステップS210~S220の処理が実行される。
【0159】
メモリコントローラ10は、ステップS201の処理でデータラッチ41に記憶された対象セルユニットCUのLowerページデータ及びMiddleページデータを出力することを指示する。そして、メモリコントローラ10は、受け取ったデータに対してECC処理を実行する(S210)。
【0160】
ステップS210の処理によって読み出したデータの訂正に成功した場合(S211_Yes)、ステップS210の処理で訂正されたLowerページデータ及びMiddleページデータがNAND型フラッシュメモリ30に供給される。NAND型フラッシュメモリ30がデータを受け取ると、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータ、並びにステップS210の処理で訂正されたLowerページデータ及びMiddleページデータに基づいて、対象セルユニットCUに第2書き込み動作を実行する(S214)。換言すると、第2書き込み動作において、メモリコントローラ10は、シーケンサ36に、ステップS210の処理で訂正されたLowerビット及びMiddleビット並びに、Upperビット及びTopビットの書き込みを実行させる。すなわち、第1書き込み動作により2ビット(訂正前のLowerビット及びMiddleビット)のデータを記憶していたあるメモリセルMCには、訂正されたLowerビット及びMiddleビット、並びにUpperビット及びTopビット、の合計4ビットのデータを記憶するように書き込みが実行される。
【0161】
対象セルユニットCUへの第2書き込み動作が終了すると、メモリコントローラ10は、対象セルユニットCU、及び書き込み区分を書き込み管理テーブルTWMに設定する(S215)。メモリコントローラ10は、例えば、“2”(第2書き込み動作)を書き込み区分として設定する。
【0162】
他方で、ステップS210の処理によって読み出したデータの訂正に成功しなかった場合(S211_No)、メモリコントローラ10は、電圧VM1、VM2、及びVM3のそれぞれをシフトさせた電圧VM1s、VM2s、及びVM3s(以下、「シフトされた電圧Vst」とも表記する)を用いて、対象セルユニットCUのLowerページデータ及びMiddleページデータを読み出す。そして、メモリコントローラ10は、読み出したデータに対してECC処理を実行する(S212)。電圧をシフトさせる量(以下、「シフト量ΔV」と表記する)は、読み出し電圧毎に異なっていてもよいし、これらの読み出し電圧の一部で同じ値であってもよいし、これらの読み出し電圧の全てで同じであってもよい。また、シフト量ΔVは、負の値であっても正の値であってもよい。シフト量ΔVは、例えば、メモリコントローラ10によって適宜、適切な値に設定される。
【0163】
ステップS212の処理によって読み出したデータの訂正に成功した場合(S213_Yes)、ステップS212の処理で訂正されたLowerページデータ及びMiddleページデータがNAND型フラッシュメモリ30に供給される。NAND型フラッシュメモリ30がデータを受け取ると、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータ、並びにステップS212の処理で訂正されたLowerページデータ及びMiddleページデータに基づいて、対象セルユニットCUに第2書き込み動作を実行する(S214)。
【0164】
ステップS212の処理によって読み出したデータの訂正に成功しなかった場合(S213_No)、対象セルユニットCUのデータの誤りビット数が比較的多いと考えられる。換言すると、対象セルユニットCU内の複数のメモリセルMCにおいて、“M0”ステートと“M1”ステート、“M1”ステートと“M2”ステート、または“M2”ステートと“M3”ステートの閾値電圧分布が重なっている可能性がある。2つの閾値電圧分布が重なっているとき、交点の位置は、誤りビット数が少ない位置を意味する。そこで、メモリコントローラ10は、例えば、トラッキングを実行する。トラッキングとは、メモリセルMCの2つの閾値電圧分布(すなわち、対象セルユニットCU内の複数のメモリセルMCの“M0”ステートと“M1”ステート、“M1”ステートと“M2”ステート、または“M2”ステートと“M3”の閾値電圧分布)が重なった交点(電圧)を探索することである。メモリコントローラ10は、トラッキングによって得られた電圧VM1t、VM2t、及びVM3tを用いて、対象セルユニットCUのLowerページデータ及びMiddleページデータを読み出す。そして、メモリコントローラ10は、読み出したデータに対してECC処理を実行する(S216)。
【0165】
ステップS216の処理によって読み出したデータが訂正されると、メモリコントローラ10は、第1実施形態と同様に、対象セルユニットCUへの第2書き込み動作に用いられるパディングデータ(Upperページデータ及びTopページデータ)を準備する(S217)。
【0166】
パディングデータが準備されると、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたパディングデータ(Upperページデータ及びTopページデータ)に基づいて、対象セルユニットCUに第2書き込み動作を実行する(S218)。すなわち、対象セルユニットCUのLowerページデータまたはMiddleページデータの誤りビット数が比較的多い(例えば、誤りビット数が100ビットより多い)場合、対象セルユニットCUには、書き込み対象のUpperページデータ及びTopページデータではなく、パディングデータが第2書き込み動作によって書き込まれる。
【0167】
ステップS216の処理で訂正されたLowerページデータ及びMiddleページデータは、NAND型フラッシュメモリ30に供給される。NAND型フラッシュメモリ30がデータを受け取ると、シーケンサ36は、ステップS216の処理で訂正されたLowerページデータ及びMiddleページデータを、対象セルユニットCUとは別のセルユニットCU(以下、「セルユニットCUa」と表記する)、より詳しくはセルユニットCUa内の複数のメモリセルMCに書き込む(S219)。
【0168】
シーケンサ36は、訂正されたLowerページデータ及びMiddleページデータを、セルユニットCUaに、Lowerページデータ及びMiddleページデータとして書き込んでもよい。
【0169】
セルユニットCUaは、現在の書き込み順番の次の書き込み順番に対応するセルユニットCUでもよい。例えば、対象セルユニットCUが
図14を参照して説明したセルユニットCU(1,1)、すなわち、書き込み順番が19のセルユニットCUである場合、シーケンサ36は、書き込み順番が20のセルユニットCU(2,2)をセルユニットCUaとして選択する。そして、シーケンサ36は、訂正されたLowerページデータ及びMiddleページデータを、セルユニットCU(2,2)にLowerページデータ及びMiddleページデータとして書き込む。
【0170】
セルユニットCUaは、書き込み順番が比較的先のセルユニットCUでもよい。例えば、対象セルユニットCUが
図14を参照して説明したセルユニットCU(1,1)、すなわち、書き込み順番が19のセルユニットCUである場合、シーケンサ36は、書き込み順番が24のセルユニットCU(2,4)をセルユニットCUaとして選択する。そして、シーケンサ36は、訂正されたLowerページデータ及びMiddleページデータを、セルユニットCU(2,4)にLowerページデータ及びMiddleページデータとして書き込む。
【0171】
あるいは、シーケンサ36は、訂正されたLowerページデータ及びMiddleページデータを、セルユニットCUaに、Upperページデータ及びTopページデータとして書き込んでもよい。この場合においても、セルユニットCUaは、現在の書き込み順番の次の書き込み順番に対応するセルユニットCUであってもよいし、書き込み順番が比較的先のセルユニットCUであってもよい。
【0172】
例えば、対象セルユニットCUが、
図14を参照して説明したセルユニットCU(1,1)、すなわち、書き込み順番が19のセルユニットCUである場合、シーケンサ36は、書き込み順番が21のセルユニットCU(1,2)をセルユニットCUaとして選択する。そして、シーケンサ36は、訂正されたLowerページデータ及びMiddleページデータを、セルユニットCU(1,2)にUpperページデータ及びTopページデータとして書き込む。あるいは、シーケンサ36は、書き込み順番が25のセルユニットCU(1,4)をセルユニットCUaとして選択する。そして、シーケンサ36は、訂正されたLowerページデータ及びMiddleページデータを、セルユニットCU(1,4)にUpperページデータ及びTopページデータとして書き込む。
【0173】
セルユニットCUaへの書き込みが終了すると、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータを、対象セルユニットCUとは別のセルユニットCU(以下、「セルユニットCUb」と表記する)、より詳しくはセルユニットCUb内の複数のメモリセルMCに書き込む(S220)。
【0174】
シーケンサ36は、書き込み対象のUpperページデータ及びTopページデータを、セルユニットCUbに、Upperページデータ及びTopページデータとして書き込んでもよい。
【0175】
セルユニットCUbは、現在の書き込み順番の次の書き込み順番に対応するセルユニットCUでもよい。例えば、対象セルユニットCUが
図14を参照して説明したセルユニットCU(1,1)、すなわち、書き込み順番が19のセルユニットCUである場合、シーケンサ36は、書き込み順番が21のセルユニットCU(1,2)をセルユニットCUbとして選択する。そして、シーケンサ36は、書き込み対象のUpperページデータ及びTopページデータを、セルユニットCU(1,2)にUpperページデータ及びTopページデータとして書き込む。
【0176】
セルユニットCUbは、書き込み順番が比較的先のセルユニットCUでもよい。例えば、対象セルユニットCUが
図14を参照して説明したセルユニットCU(1,1)、すなわち、書き込み順番が19のセルユニットCUである場合、シーケンサ36は、書き込み順番が25のセルユニットCU(1,4)をセルユニットCUbとして選択する。そして、シーケンサ36は、書き込み対象のUpperページデータ及びTopページデータを、セルユニットCU(1,4)にUpperページデータ及びTopページデータとして書き込む。
【0177】
あるいは、シーケンサ36は、書き込み対象のUpperページデータ及びTopページデータを、セルユニットCUbに、Lowerページデータ及びMiddleページデータとして書き込んでもよい。この場合においても、セルユニットCUbは、現在の書き込み順番の次の書き込み順番に対応するセルユニットCUであってもよいし、書き込み順番が比較的先のセルユニットCUであってもよい。
【0178】
例えば、対象セルユニットCUが、
図14を参照して説明したセルユニットCU(1,1)、すなわち、書き込み順番が19のセルユニットCUである場合、シーケンサ36は、書き込み順番が20のセルユニットCU(2,2)をセルユニットCUbとして選択する。そして、シーケンサ36は、書き込み対象のUpperページデータ及びTopページデータを、セルユニットCU(2,2)にLowerページデータ及びMiddleページデータとして書き込む。あるいは、シーケンサ36は、書き込み順番が24のセルユニットCU(2,4)をセルユニットCUbとして選択する。そして、シーケンサ36は、書き込み対象のUpperページデータ及びTopページデータを、セルユニットCU(2,4)にLowerページデータ及びMiddleページデータとして書き込む。
【0179】
なお、セルユニットCUbは、セルユニットCUaと同じであってもよいし、異なっていてもよい。
【0180】
[2-5]効果
第1実施形態で述べたように、第1書き込み動作が実行された状態でメモリセルMCが比較的長い時間放置されると、ビット誤りが発生する可能性がある。
【0181】
本実施形態では、第2書き込み動作の実行時に、データチェック回路40が、第1書き込み動作が実行された状態の対象セルユニットCUのLowerページデータ及びMiddleページデータのチェックを実行する。メモリコントローラ10は、チェックの結果が閾値TVbを超えていると判定した場合、リカバリ動作を実行する。
【0182】
リカバリ動作において、誤りビット数が比較的少ない場合、メモリコントローラ10は、対象セルユニットCUのLowerページデータ及びMiddleページデータを訂正する。誤りビット数が比較的少ない場合とは、例えば、複数のデフォルトの読み出し電圧Vdtを用いて読み出された対象セルユニットCUのLowerページデータ及びMiddleページデータが訂正された場合、または、複数のシフトされた電圧Vstを用いて読み出された対象セルユニットCUのLowerページデータ及びMiddleページデータが訂正された場合である。データが訂正されると、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータ、並びに訂正されたLowerページデータ及びMiddleページデータに基づいて、対象セルユニットCUに第2書き込み動作を実行する。
【0183】
リカバリ動作において、誤りビット数が比較的多い場合、メモリコントローラ10は、対象セルユニットCUのLowerページデータ及びMiddleページデータを訂正する。誤りビット数が比較的多い場合とは、例えば、トラッキングによって得られた複数の読み出し電圧を用いて読み出された対象セルユニットCUのLowerページデータ及びMiddleページデータが訂正された場合である。データが訂正されると、訂正されたLowerページデータ及びMiddleページデータは、対象セルユニットCUとは異なるセルユニットCUaに書き込まれる。また、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータも、対象セルユニットCUとは異なるセルユニットCUbに書き込まれる。ここで、セルユニットCUa及びCUbは、同じであってもよいし、異なっていてもよい。一方で、対象セルユニットCUには、パディングデータが書き込まれる。すなわち、対象セルユニットCUは、次の消去動作及び書き込み動作が実行されるまで、読み出し動作の対象とならない。
【0184】
これにより、ビット誤りが発生する可能性を低減できる。よって、本実施形態に係る構成によれば、メモリシステム1のデータの信頼性を向上できる。
【0185】
[2-6]第1変形例
第2実施形態の第1変形例に係るメモリシステムについて説明する。本変形例に係るメモリシステム1では、データチェック回路40の構成が第2実施形態と異なる。なお、本変形例では、1ページデータの“0”データの数と“1”データの数に偏りが生じないようにランダマイズされたデータがセルユニットCUに書き込まれていることを前提とする。以下では、第2実施形態と異なる点を中心に説明する。
【0186】
[2-6-1]データチェック回路
本変形例のデータチェック回路40は、例えば、第1書き込み動作によって形成された閾値電圧分布の4つのステート(“M0”ステート~“M3”ステート)それぞれに属するメモリセルMCの数をカウントする。すなわち、データチェック回路40は、セルユニットCUにおいて、Lowerビット及びMiddleビットの“0”データまたは“1”データのビット数をカウントする。具体的には、シーケンサ36は、読み出し電圧VM1、VM2、及びVM3のいずれか1つを用いて、第1書き込み動作が実行された状態のセルユニットCU内の複数のメモリセルMCの状態を取得する。取得された複数のメモリセルMCの状態は、データチェック回路40に供給される。データチェック回路40は、複数のメモリセルMCの状態を受け取ると、オンしたメモリセルMCの数をカウントする。換言すると、第1書き込み動作が実行された状態のセルユニットCU内の複数のメモリセルMCの状態が読み出し電圧VM1を用いて取得される場合、データチェック回路40は、電圧VM1以下の閾値電圧を有するメモリセルMCの数をカウントする。同様に、複数のメモリセルMCの状態が読み出し電圧VM2を用いて取得される場合、データチェック回路40は、電圧VM2以下の閾値電圧を有するメモリセルMCの数をカウントする。同様に、複数のメモリセルMCの状態が読み出し電圧VM3を用いて取得される場合、データチェック回路40は、電圧VM3以下の閾値電圧を有するメモリセルMCの数をカウントする。メモリセルMCの数のカウントが終わると、データチェック回路40は、チェックした結果(カウント値)をメモリコントローラ10に送信する。
【0187】
ステップS202の処理で用いられる閾値TVbについて説明する。
【0188】
ステップS202において、データチェック回路40からチェックの結果を受信すると、メモリコントローラ10は、チェックの結果(カウント値)が閾値TVbを超えているか否かを判定する。
【0189】
例えば、Lowerページデータ及びMiddleページデータを含む2ページデータのサイズが32KB(キロバイト)であり、すなわち、セルユニットCUに含まれるメモリセルMCの数が16K×8個であり、ランダマイズされたデータがセルユニットCUに書き込まれた場合、そのセルユニットCUに含まれる、“M0”ステート~“M3”ステートに対応する閾値電圧を有するメモリセルMCの個数の期待値はそれぞれ、4K×8である。換言すると、第1書き込み動作が実行された対象セルユニットCUに対して、電圧VM1を用いてデータを読み出した場合、“M0”ステートに対応する閾値電圧を有するメモリセルMCの個数の期待値は4K×8である。同様に、電圧VM2を用いてデータを読み出した場合、“M0”ステート及び“M1”ステートに対応する閾値電圧を有するメモリセルMCの個数の期待値は4K×8+4K×8=8K×8である。電圧VM3を用いてデータを読み出した場合、“M0”ステート、“M1”ステート、及び“M2”ステートに対応する閾値電圧を有するメモリセルMCの個数の期待値は、4K×8+4K×8+4K×8=12K×8である。
【0190】
閾値TVbは、ランダマイズの精度を考慮して、例えば、期待値よりも低い値から期待値よりも高い値までの範囲に設定される。閾値TVbは、例えば、期待値-100以上、且つ期待値+100以下の範囲である。この場合、ステップS202の処理では、メモリコントローラ10は、チェックの結果(データチェック回路40によってカウントされたメモリセルMCの個数)が期待値-100以上、且つ期待値+100以下の範囲に入っているか否かを判定する。チェックの結果がこの範囲に入っている場合(S202_No)は、メモリコントローラ10は、対象セルユニットCUに第2書き込み動作を実行する(S204)。他方で、チェックの結果がこの範囲に入っていない場合(S202_Yes)、メモリコントローラ10は、リカバリ動作を実行する(S203)。
【0191】
[2-6-2]リカバリ動作
リカバリ動作について、
図21を用いて説明する。
図21は、リカバリ動作の一例を示すフローチャートである。
【0192】
上述した
図19のステップS202の処理によって、メモリコントローラ10が、チェックの結果が閾値TVbを超えていると判定すると、ステップS230、及びS211~S220の処理が実行される。
【0193】
メモリコントローラ10は、読み出し電圧VM1、VM2、及びVM3を用いて、対象セルユニットCUのLowerページデータ及びMiddleページデータを読み出す。そして、メモリコントローラ10は、読み出したデータに対してECC処理を実行する(S230)。
【0194】
ステップS230以外のステップS211~S220の処理は、
図20を参照して説明した第2実施形態と同様である。
【0195】
[2-6-3]効果
本変形例によれば、第2実施形態と同様の効果を奏する。さらに本変形例のデータチェック回路40は、第2実施形態のデータチェック回路40に比べ、小規模な回路で実現され得る。
【0196】
[2-7]第2変形例
第2実施形態の第2変形例に係るメモリシステムについて説明する。本変形例に係るメモリシステム1では、書き込み動作が第2実施形態と異なる。以下では、第2実施形態と異なる点を中心に説明する。
【0197】
[2-7-1]書き込み動作
本変形例では、書き込み動作がデータチェック判定動作を含む。データチェック判定動作は、データチェック回路40による対象セルユニットCUのLowerページデータ及びMiddleページデータのチェックを実行すべきか否かを判定する動作である。
【0198】
書き込み動作について、
図22を用いて説明する。
図22は、書き込み動作の一例を示すフローチャートである。
【0199】
第1書き込み動作が実行された対象セルユニットCUに第2書き込み動作を実行する場合(S200_Yes)、メモリコントローラ10は、データチェック判定動作を実行する(S240)。データチェック判定動作については後述する。
【0200】
メモリコントローラ10が、対象セルユニットCUのLowerページデータ及びMiddleページデータのチェックを実行すべきと判定した場合(S240_Yes)、データチェック回路40は、対象セルユニットCUのLowerページデータ及びMiddleページデータをチェックする(S201)。
【0201】
他方で、メモリコントローラ10が、対象セルユニットCUのLowerページデータ及びMiddleページデータのチェックを実行する必要がないと判定した場合(S240_No)、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータ、並びにメモリセルアレイ31からセンスアンプモジュール39に読み出され、データラッチ41に記憶されたLowerページデータ及びMiddleページデータに基づいて、対象セルユニットCUに第2書き込み動作を実行する(S204)。
【0202】
ステップS240以外のステップS200~S206、及びステップS210~S220の処理は、
図19及び
図20を参照して説明した第2実施形態と同様である。
【0203】
[2-7-2]データチェック判定動作
メモリコントローラ10は、例えば、対象セルユニットCUへの第1書き込み動作が実行されてからの経過時間T2に基づいて、データチェック回路40によるデータチェックを実行すべきか否かを判定する。具体的には、メモリコントローラ10は、対象セルユニットCU内の複数のメモリセルMCへの第1書き込み動作が実行されてからの経過時間T2が、閾値TVcを超えているか否かを判定する。経過時間T2が閾値TVcを超えている場合、メモリコントローラ10は、データチェック回路40によるデータチェックを実行すべきと判定する。閾値TVcは、例えば、メモリコントローラ10によって適切な値(時間)に設定される。
【0204】
なお、経過時間T2を算出するために、第1実施形態で述べた書き込み履歴テーブルT1Hが用意されてもよい。
【0205】
[2-7-3]効果
本変形例によれば、第2実施形態と同様の効果を奏する。
【0206】
また、本変形例では、メモリコントローラ10は、第2書き込み動作の実行時に、対象セルユニットCUに第1書き込み動作が実行されてからの経過時間T2が閾値TVcを超えているか否かを判定する。経過時間T2が閾値TVcを超えている場合、データチェック回路40は、対象セルユニットCUのLowerページデータ及びMiddleページデータをチェックする。このため、データチェック回路40は、第2書き込み動作毎に対象セルユニットCUのデータをチェックしない。よって、本変形例に係る構成によれば、第2書き込み動作の処理性能の低下を抑制できる。
【0207】
[2-8]第3変形例
第2実施形態の第3変形例に係るメモリシステムについて説明する。本変形例に係るメモリシステム1は、書き込み回数テーブルTWNを含む点で第2実施形態と異なる。また、本変形例に係るメモリシステム1では、データチェック判定動作が第2実施形態の第2変形例と異なる。以下では、第2実施形態の第2変形例と異なる点を中心に説明する。
【0208】
[2-8-1]メモリシステムの構成
メモリシステム1の構成について、
図23を用いて説明する。
図23は、メモリシステム1を含む情報処理システムの一例を示すブロック図である。
【0209】
メモリシステム1は、書き込み回数テーブルTWNを更に含む。書き込み回数テーブルTWNは、例えば、RAM16に記憶される。書き込み回数テーブルTWNの詳細については後述する。メモリシステム1の他の構成は、
図17を参照して説明した第2実施形態と同様である。
【0210】
[2-8-2]書き込み回数テーブル
書き込み回数テーブルTWNについて、
図24を用いて説明する。
図24は、書き込み回数テーブルTWNの一例を示す概念図である。
【0211】
書き込み回数テーブルTWNは、ブロックBLK毎に、書き込み動作が実行された回数を記憶する。
【0212】
図24に示すように、書き込み回数テーブルTWNの各エントリは、ブロックBLKと、そのブロックBLKに対して実行された書き込み動作の回数(以下、「書き込み回数」と表記する)とを含む。
【0213】
図24の例では、ブロックBLK0及びBLK1に対して、書き込み動作がそれぞれ100回実行されている。
【0214】
あるブロックBLKが書き込み先ブロックBLKとして選択されたときに、そのブロックBLKの書き込み回数がカウントアップされ、カウントアップされた回数が、書き込み回数テーブルTWNにそのブロックBLKの書き込み回数として書き込まれる。
【0215】
書き込み回数テーブルTWNは、例えば、NAND型フラッシュメモリ30のいずれかのブロックBLKに記憶される。そして、例えば、メモリシステム1への電源投入直後に、NAND型フラッシュメモリ30からRAM16にロードされる。また、メモリシステム1の電源が遮断される際には、RAM16に記憶される書き込み回数テーブルTWNはNAND型フラッシュメモリ30のいずれかのブロックBLKに書き込まれる。
【0216】
[2-8-3]データチェック判定動作
メモリコントローラ10は、例えば、対象セルユニットCUを含む書き込み先ブロックBLKの書き込み回数または消去回数(例えば、書き込み回数テーブルTWNに記憶されている書き込み回数)に基づいて、データチェック回路40によるデータチェックを実行すべきか否かを判定する。具体的には、対象セルユニットCUを含む書き込み先ブロックBLKの書き込み回数または消去回数N1が、閾値TVdを超えているか否かを判定する。書き込み回数または消去回数N1が閾値TVdを超えている場合、メモリコントローラ10は、データチェックを実行すべきと判定する。閾値TVdは、例えば、メモリコントローラ10によって適切な値(回数)に設定される。
【0217】
なお、ウェアレベリングによって、メモリシステム1内のどのブロックBLKも書き込み回数または消去回数N1が略同じになっている場合がある。このような場合、例えば、メモリコントローラ10は、あるブロックBLKの書き込み回数または消去回数N1が閾値TVdを超えたことを検出した以降は、データチェック判定動作を省略して、データチェック回路40によるデータチェックを実行すべきと判定してもよい。あるいは、どのブロックBLKも消去回数N1が略同じになっている前提で、メモリコントローラ10は、ドライブ内の平均消去回数Ave_N1を閾値TVdとの比較に使用してもよい。この場合は、平均消去回数Ave_N1が閾値TVdを超えたことを検出した以降は、メモリコントローラ10は、全ブロックBLKでデータチェック判定動作を省略してデータチェックを実行する。
【0218】
[2-8-4]効果
本変形例によれば、第2実施形態の第2変形例と同様の効果を奏する。
【0219】
[2-9]第4変形例
第2実施形態の第4変形例に係るメモリシステムについて説明する。本変形例に係るメモリシステム1は、エラー回数テーブルTENを含む点で第2実施形態と異なる。また、本変形例に係るメモリシステム1では、データチェック判定動作が第2実施形態の第2変形例と異なる。以下では、第2実施形態の第2変形例と異なる点を中心に説明する。
【0220】
[2-9-1]メモリシステムの構成
メモリシステム1の構成について、
図25を用いて説明する。
図25は、メモリシステム1を含む情報処理システムの一例を示すブロック図である。
【0221】
メモリシステム1は、エラー回数テーブルTENを更に含む。エラー回数テーブルTENの詳細については後述する。エラー回数テーブルTENは、例えば、RAM16に記憶される。メモリシステム1の他の構成は、
図17を参照して説明した第2実施形態と同様である。
【0222】
[2-9-2]エラー回数テーブル
エラー回数テーブルTENについて、
図26を用いて説明する。
図26は、エラー回数テーブルTENの一例を示す概念図である。
【0223】
エラー回数テーブルTENは、ブロックBLK毎に、NAND型フラッシュメモリ30からメモリコントローラ10に読み出されたデータに誤りが検出された回数を記憶する。誤りは、例えば、ECC回路14によるECC処理において検出される。
【0224】
図26に示すように、エラー回数テーブルTENの各エントリは、ブロックBLKと、そのブロックBLKにおいて誤りが検出された回数(以下、「エラー検出回数」と表記する)とを含む。
【0225】
図26の例では、ブロックBLK0において、10回誤りが検出されている。ブロックBLK1において、20回誤りが検出されている。
【0226】
あるブロックBLKから読み出されたデータに誤りが検出されたときに、そのブロックBLKのエラー検出回数がカウントアップされ、カウントアップされた回数がエラー回数テーブルTENにそのブロックBLKのエラー検出回数として書き込まれる。
【0227】
エラー回数テーブルTENは、例えば、NAND型フラッシュメモリ30のいずれかのブロックBLKに記憶される。そして、例えば、メモリシステム1への電源投入直後に、NAND型フラッシュメモリ30からRAM16にロードされる。また、メモリシステム1の電源が遮断される際には、RAM16に記憶されるエラー回数テーブルTENはNAND型フラッシュメモリ30のいずれかのブロックBLKに書き込まれる。
【0228】
[2-9-3]データチェック判定動作
メモリコントローラ10は、例えば、対象セルユニットCUを含む書き込み先ブロックBLKの過去のエラー履歴(例えば、エラー回数テーブルTENに記憶されているエラー検出回数)に基づいて、データチェック回路40によるデータチェックを実行すべきか否かを判定する。具体的には、対象セルユニットCUを含む書き込み先ブロックBLKの過去のエラー検出回数N2が、閾値TVeを超えているか否かを判定する。エラー検出回数N2が閾値TVeを超えている場合、メモリコントローラ10は、データチェックを実行すべきと判定する。閾値TVeは、例えば、メモリコントローラ10によって適切な値(回数)に設定される。本変形例では、エラー回数テーブルTENがブロックBLK毎にエラー検出回数を記憶する方法を示したが、エラー回数テーブルTENはブロックBLK内のワード線WL毎にエラー検出回数を記憶してもよい。この場合、ブロックBLK内のワード線WL毎に過去のエラー履歴に基づいてデータチェック判定動作が実施される。
【0229】
なお、メモリコントローラ10は、例えば、ECC回路14の訂正能力に基づいて、データチェック回路40によるデータチェックを実行すべきか否かを判定してもよい。この場合、対象セルユニットCUのデータに対してECC処理を行うECC回路14の訂正能力を示す指標が閾値TVfを超えている場合、メモリコントローラ10は、データチェックを実行すべきと判定する。閾値TVfは、例えば、メモリコントローラ10によって適切な値に設定される。
【0230】
また、メモリコントローラ10は、過去のエラー履歴と、ECC回路14の訂正能力とを組み合わせて、データチェック回路40によるデータチェックを実行すべきと判定してもよい。
【0231】
[2-9-4]効果
本変形例によれば、第2実施形態の第2変形例と同様の効果を奏する。
【0232】
[3]第3実施形態
第3実施形態について説明する。本実施形態に係るメモリシステム1では、書き込み動作が第2実施形態と異なる。本実施形態では、第1書き込み動作が実行された状態のセルユニットCUのLowerページデータまたはMiddleページデータの誤りビット数が比較的多い場合の書き込み動作が示される。その一例として、本実施形態は、第1書き込み動作が実行された状態の対象セルユニットCUに対して、パディングデータに基づいて第2書き込み動作の前処理を行った後、Upperページデータ及びTopページデータに基づいて第2書き込み動作を行う。以下では、第2実施形態と異なる点を中心に説明する。
【0233】
[3-1]書き込み動作
書き込み動作について、
図27を用いて説明する。
図27は、書き込み動作の一例を示すフローチャートである。
【0234】
メモリコントローラ10がホスト2からLowerページデータ及びMiddleページデータ、またはUpperページデータ及びTopページデータを受け取ると、第1実施形態で述べた書き込み順序に従って、ステップS300~S308の処理が実行される。
【0235】
ステップS300、S301、S306、S307、及びS308は、第2実施形態の
図19のステップS200、S201、S204、S205、及びS206とそれぞれ同じである。
【0236】
データチェック回路40からステップS301の処理によるチェックの結果を受信すると、メモリコントローラ10は、チェックの結果(すなわち、データチェック回路40によって検出された誤りビットの数)が閾値TVfを超えているか否かを判定する(S302)。閾値TVfは、例えば、100ビットである。
【0237】
チェックの結果が閾値TVfを超えていない場合(S302_No)、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータ、並びにメモリセルアレイ31からセンスアンプモジュール39に読み出され、データラッチ41に記憶されたLowerページデータ及びMiddleページデータに基づいて、対象セルユニットCUに第2書き込み動作を実行する(S306)。
【0238】
他方で、チェックの結果が閾値TVfを超えている、すなわち誤りビット数が比較的多い場合(S302_Yes)、メモリコントローラ10は、対象セルユニットCUへの第2書き込み動作の前処理に用いられるパディングデータを準備する(S303)。
【0239】
パディングデータは、例えば、対象セルユニットCUのLowerページデータをオール“0”データとし、対象セルユニットCUのMiddleページデータをオール“1”データとしたデータである。ここで用いられるパディングデータは、ランダマイズされたデータではなく、対象セルユニットCUに書き込まれる際にそれぞれオール“0”またはオール“1”となっているデータである。換言すると、本実施形態では、対象セルユニットCUに書き込まれるLowerページデータ、Middleページデータ、Upperページデータ、及びTopページデータのうち、誤りビット数が比較的多いLowerページデータ及びMiddleページデータを、パディングデータに置き換える。
【0240】
パディングデータが準備されると、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたパディングデータ(Lowerページデータ及びMiddleページデータ)に基づいて、対象セルユニットCUに第2書き込み動作の前処理を実行する(S304)。第2書き込み動作の前処理とは、シーケンサ36が、対象セルユニットCU内の各メモリセルMCの閾値電圧を“M3”ステートに遷移させるように、書き込み動作を実行することである。第1書き込み動作後の、対象セルユニットCU内の各メモリセルMCの閾値電圧は、いずれも“M3”ステート以下である。従って、シーケンサ36は、第2書き込み動作の前処理によって、対象セルユニットCU内の各メモリセルMCの閾値電圧を“M3”ステートに遷移させることができる。なお、第2書き込み動作の前処理は、第1書き込み動作によって実現されてもよい。
【0241】
対象セルユニットCUへの第2書き込み動作の前処理が終了すると、シーケンサ36は、メモリコントローラ10からセンスアンプモジュール39に入力されたUpperページデータ及びTopページデータ、並びにパディングデータ(Lowerページデータ及びMiddleページデータ)に基づいて、対象セルユニットCUに第2書き込み動作を実行する(S305)。すなわち、シーケンサ36は、対象セルユニットCU内の各メモリセルMCの閾値電圧を“S12”ステート~“S15”ステートに遷移させるように、書き込み動作を実行する。
【0242】
なお、データチェック回路40でのチェックの結果、誤りビット数が予め決められた数を超えた場合、メモリコントローラ10は、当該書き込み先ブロックBLKをバッドブロック(書き込み不可のブロックBLK)としてもよい。
【0243】
また、メモリコントローラ10は、ステップS301の処理の前に、第2実施形態の第2変形例乃至第4変形例で述べたデータチェック判定動作を実行してもよい。
【0244】
[3-2]効果
第1実施形態で述べたように、第1書き込み動作が実行された状態でメモリセルMCが比較的長い時間放置されると、ビット誤りが発生する可能性がある。
【0245】
本実施形態では、第2書き込み動作の実行時に、データチェック回路40が、第1書き込み動作が実行された状態の対象セルユニットCUのLowerページデータ及びMiddleページデータのチェックを実行する。チェックの結果が閾値TVfを超えていると判定された場合、すなわち誤りビット数が比較的多い場合、シーケンサ36は、対象セルユニットCU内の各メモリセルMCの閾値電圧を“S12”ステート~“S15”ステートに遷移させるように、書き込み動作を実行する。これにより、対象セルユニットCUに有効データ(Upperページデータ及びTopページデータ)に基づく書き込み動作を実行できる。
【0246】
[4]変形例等
上記のように、実施形態に係るメモリシステム(1)は、半導体メモリ(30)と、コントローラ(10)と、第1回路(40)とを備える。半導体メモリ(30)は、少なくとも2ビットを有するデータを不揮発に記憶するように構成されたメモリセル(MC)を含む。コントローラ(10)は、半導体メモリ(30)に、第1書き込み動作と第2書き込み動作とを実行させるように構成されている。第1書き込み動作は、第1ビット(Lower/Middle)をメモリセル(MC)に書き込む。第2書き込み動作は、メモリセル(MC)から読み出された第1ビット(Lower/Middle)と第2ビット(Upper/Top)とに基づく少なくとも2ビットを有する第1データ(Lower/Middle/Upper/Top)を、メモリセル(MC)に書き込む。第1回路(40)は、メモリセル(MC)から読み出された第1ビット(Lower/Middle)にビット誤りがあるかどうかをチェックする。コントローラ(10)は、第2書き込み動作において、第1回路(40)によるチェックの結果に基づいて、メモリセルから読み出された第1ビット(Lower/Middle)にビット誤りがあると判定した場合、半導体メモリ(30)に、第1ビット(Lower/Middle)のビット誤りを訂正した第3ビット(Lower/Middle)と第2ビット(Upper/Top)とを含む第1データ(Lower/Middle/Upper/Top)の書き込みを実行させるように構成される。
【0247】
なお、実施形態は上記説明した形態に限定されるものではなく、種々の変形が可能である。
【0248】
上記実施形態で説明したフローチャートは、その処理の順序を可能な限り入れ替えることができる。
【0249】
また、第2実施形態の第2変形例乃至第4変形例、及び第3実施形態のデータチェック回路40は、第2実施形態の第1変形例で述べた回路であってもよい。
【0250】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0251】
1…メモリシステム、2…ホスト、10…メモリコントローラ、11…ホストインターフェース回路、12…プロセッサ、13…バッファメモリ、14…ECC回路、15…ROM、16…RAM、17…NANDインターフェース回路、30…NAND型フラッシュメモリ、31…メモリセルアレイ、32…入出力回路、33…ロジック制御回路、34…レディ/ビジー制御回路、35…レジスタ、35A…コマンドレジスタ、35B…アドレスレジスタ、35C…ステータスレジスタ、36…シーケンサ、37…ドライバモジュール、38…ロウデコーダモジュール、39…センスアンプモジュール、40…データチェック回路、41…データラッチ