(57)【要約】【課題】リード・ディスターブによる性能の劣化を低減すること。【解決手段】実施形態によれば、メモリコントローラ２０は、複数のメモリセルを備えたＮＡＮＤメモリ１０に接続され、同一のワード線ＷＬに接続されたメモリセルで構成されるページ単位でデータの書込みおよび読出しを実行するとともに、複数のページで構成されたブロック単位でデータの消去を実行するメモリＩ／Ｆ２５と、ＮＡＮＤメモリ１０内のブロック毎またはページ毎の累積読出し回数に基づいて、複数のメモリセルのうち、リード・ディスターブの影響を受けているワード線ＷＬに接続された第１メモリセルを特定するとともに、第１メモリセルへの第１ビット数のデータの書込みと、第１メモリセルからの第１ビット数よりも少ない第２ビット数のデータの読出しとを、メモリＩ／Ｆ２５に指示するＣＰＵ２３とを備える。【選択図】図１
2018160056.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリセルを備えた不揮発性メモリに接続され、同一のワード線に接続された複数のメモリセルで構成されるページ単位で前記不揮発性メモリに対するデータの書込みおよび読出しを実行するとともに、複数のページで構成されたブロック単位で前記不揮発性メモリに対するデータの消去を実行するメモリインタフェースと、
前記不揮発性メモリ内のブロック毎またはページ毎の累積読出し回数に基づいて、前記複数のメモリセルのうち、リード・ディスターブの影響を受けているワード線に接続された第１メモリセルを特定するとともに、前記第１メモリセルへの第１ビット数のデータの書込みと、前記第１メモリセルからの前記第１ビット数よりも少ない第２ビット数のデータの読出しとを、前記メモリインタフェースに指示する制御部と、
を備えるメモリコントローラ。
【請求項２】
前記制御部は、前記第１メモリセルへの書込みが予定された前記第２ビット数のデータを前記第１ビット数のデータに変換する
請求項１に記載のメモリコントローラ。
【請求項３】
前記ブロック毎または前記ページ毎の前記累積読出し回数を管理する管理テーブルを記憶する記憶部をさらに備え、
前記制御部は、前記管理テーブルで管理された前記ブロック毎または前記ページ毎の前記累積読出し回数に基づいて、前記第１メモリセルを特定する
請求項１に記載のメモリコントローラ。
【請求項４】
前記制御部は、前記第２ビット数のデータにビットを挿入することで、前記第２ビット数のデータを前記第１ビット数のデータに変換する請求項２に記載のメモリコントローラ。
【請求項５】
前記第１ビット数のデータは、上位ビットと下位ビットとを含む２ビットのデータであり、
前記制御部は、前記上位ビットと前記下位ビットとのうちのいずれか一方に前記第２ビット数のデータを入力し、他方に固定された値の前記ビットを挿入することで、前記第２ビット数のデータを前記第１ビット数のデータに変換する
請求項４に記載のメモリコントローラ。
【請求項６】
前記制御部は、前記第１ビット数のデータを書き込むことで前記メモリセルが取り得る３つ以上の書込み状態のうち、互いに隣接しない書込み状態が使用されるように、前記第２ビット数のデータを前記第１ビット数のデータに変換する請求項２に記載のメモリコントローラ。
【請求項７】
前記第２ビット数のデータは、１ビットのデータであり、
前記制御部は、前記３つ以上の書込み状態のうち、非書込み状態と、最も電荷が書き込まれた状態とが使用されるように、前記第２ビット数のデータを前記第１ビット数のデータに変換する請求項６に記載のメモリコントローラ。
【請求項８】
前記制御部は、ページ単位またはブロック単位で前記第１メモリセルを特定する請求項２に記載のメモリコントローラ。
【請求項９】
前記第２ビット数のデータを符号化する符号化器をさらに備え、
前記制御部は、前記符号化器により符号化された前記第２ビット数のデータを前記第１ビット数のデータに変換する
請求項２に記載のメモリコントローラ。
【請求項１０】
前記第１メモリセルから読み出した前記第２ビット数のデータを復号する復号する復号器をさらに備える請求項９に記載のメモリコントローラ。
【請求項１１】
複数のメモリセルを備えた不揮発性メモリと、
請求項１に記載のメモリコントローラと、
を備えるメモリシステム。
【請求項１２】
複数のメモリセルを備えた不揮発性メモリに対して同一のワード線に接続された複数のメモリセルで構成されるページ単位でデータの書込みおよび読出しを実行するとともに、複数のページで構成されたブロック単位で前記不揮発性メモリに対するデータの消去を実行する書込み／読出しを実行するメモリコントローラの制御方法であって、
前記不揮発性メモリ内のブロック毎またはページ毎の累積読出し回数に基づいて、前記複数のメモリセルのうち、リード・ディスターブの影響を受けているワード線に接続された第１メモリセルを特定し、
前記第１メモリセルへの第１ビット数のデータの書込みを実行し、
前記第１メモリセルからの前記第１ビット数よりも少ない第２ビット数のデータの読出しを実行する
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、一般的に、メモリコントローラ、メモリシステムおよび制御方法に関する。
【背景技術】
【０００２】
従来、データ値に応じた量の電荷を保持するメモリセルを備える半導体記憶装置が広く知られている。このような半導体記憶装置では、メモリセルに保持された電荷の量に応じたしきい値電圧と予め設定された読み出し電圧との大小関係に基づいて、そのメモリセルが記憶するデータ値が判定される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１５／０３３３７７４号明細書
【特許文献２】国際特許出願公開第２００６／１３２３３１号
【特許文献３】特開２００９−２２５３２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、リード・ディスターブ（read disturb）による性能の劣化を低減することが可能なメモリコントローラ、メモリシステムおよび制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、メモリコントローラは、複数のメモリセルを備えた不揮発性メモリに接続され、同一のワード線に接続された複数のメモリセルで構成されるページ単位で前記不揮発性メモリに対するデータの書込みおよび読出しを実行するとともに、複数のページで構成されたブロック単位で前記不揮発性メモリに対するデータの消去を実行するメモリインタフェースと、前記不揮発性メモリ内のブロック毎またはページ毎の累積読出し回数に基づいて、前記複数のメモリセルのうち、リード・ディスターブの影響を受けているワード線に接続された第１メモリセルを特定するとともに、前記第１メモリセルへの第１ビット数のデータの書込みと、前記第１メモリセルからの前記第１ビット数よりも少ない第２ビット数のデータの読出しとを、前記メモリインタフェースに指示する制御部とを備える。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態にかかるメモリシステム（半導体記憶装置）のブロック図である。
【図２】図２は、本実施形態における書込み状態／非書込み状態にあるメモリセルの閾値電圧分布と各メモリセルが保持するデータ値との対応関係の一例を示す図である。
【図３】図３は、リード・ディスターブの影響を受けた未エントリのワード線に接続されたメモリセルの閾値電圧分布の一例を示す図である。
【図４】図４は、リード・ディスターブの影響によって未エントリのワード線に接続されたメモリセルの閾値電圧が別の閾値電圧分布（たとえばＡ分布）にまで達するように変形していた場合の一例を示す図である。
【図５】図５は、リード・ディスターブの影響によって発生し得るハードエラーの一例を説明するための図である。
【図６】図６は、本実施形態で使用するメモリセルの閾値電圧分布の例を説明するための図である。
【図７】図７は、本実施形態においてリード・ディスターブの影響を受けたメモリセルの閾値電圧分布の例を説明するための図である。
【図８】図８は、本実施形態にかかるモード管理テーブルの一例を示す図である。
【図９】図９は、本実施形態にかかるメモリシステムの書込み動作の一例を示すフローチャートである。
【図１０】図１０は、本実施形態にかかるデータの変換処理で使用する対応テーブルの一例を示す図である。
【図１１】図１１は、本実施形態にかかるデータの変換処理の他の一例を説明するための図である。
【図１２】図１２は、本実施形態におけるメモリセルの書込み状態の例を示す図である。
【図１３】図１３は、本実施形態にかかるメモリシステムの読出し動作の一例を示すフローチャートである。
【図１４】図１４は、本実施形態の変形例を説明するための図である。
【図１５】図１５は、本実施形態にかかるモード管理テーブルの変形例を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリコントローラ、メモリシステムおよび制御方法を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００８】
ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという）は、電荷保持型の不揮発性メモリである。一般的に、電荷保持型の不揮発性メモリでは、データの読出し時にワード線に対して高電圧が与えられるが、同一のブロックに対して繰り返し高電圧を印加すると、このブロック内のワード線に意図しない電荷が蓄積されてしまう。このような意図せずにワード線に蓄積された電荷は、リード・ディスターブ（read disturb）と呼ばれる読出し不良を発生させる要因となり得る。また、意図しない電荷が蓄積されたワード線に隣接するワード線であって、未だ書込み制御がなされていない消去済み（以下、未エントリという）のページに対応するワード線に対して書込みを行った場合には、書込み直後であってもハードエラーが発生する可能性が存在する。
【０００９】
そこで以下の実施形態では、リード・ディスターブに起因した性能の低下を抑制することが可能なメモリコントローラ、メモリシステムおよび制御方法ついて、その具体例を挙げて説明する。
【００１０】
図１は、本実施形態にかかるメモリシステム（半導体記憶装置）のブロック図である。メモリシステム１は、ＮＡＮＤ型フラッシュメモリ（ＮＡＮＤメモリ）１０とメモリコントローラ２０とを備えている。ＮＡＮＤメモリ１０とメモリコントローラ２０とは、例えばそれらの組み合わせにより一つのメモリシステムを構成してもよい。メモリシステムの例としては、ＳＤカード（登録商標）のようなメモリカード、ＳＳＤ（Solid State Drive）等が挙げられる。
【００１１】
ＮＡＮＤメモリ１０は、上下に離間して交差する複数のワード線および複数のビット線の交差部分それぞれにメモリセルが設けられた構造を備える不揮発性メモリである。メモリコントローラ２０は、ＮＡＮＤバス２８によってＮＡＮＤメモリ１０に接続され、ホストバス２９によってホスト機器３０に接続される。メモリコントローラ２０はＮＡＮＤメモリ１０を制御する。また、メモリコントローラ２０は、ホスト機器３０から受信した命令に応答して、ＮＡＮＤメモリ１０にアクセスする。ホスト機器３０は、コンピュータの構成を備えている。コンピュータとは、例えば、パーソナルコンピュータ、サーバ装置、ポータブルな情報機器、デジタルスチルカメラ等であってよい。ホストバス２９の準拠する規格としては、任意の規格が採用可能である。
【００１２】
ＮＡＮＤバス２８は、メモリインタフェースに従った信号の送受信を行う。この信号の具体例としては、チップイネーブル信号CEn、アドレスラッチイネーブル信号ALE、コマンドラッチイネーブル信号CLE、ライトイネーブル信号WEn、リードイネーブル信号REn、レディ・ビジー信号RBn、入出力信号I/Oなどを挙げることができる。
【００１３】
メモリコントローラ２０は、ホストインタフェース回路（ホストＩ／Ｆ）２１、ＲＡＭ（random access memory）２２、ＣＰＵ（central processing unit）２３、バッファメモリ２４、メモリインタフェース回路（メモリＩ／Ｆ）２５、及びＥＣＣ部（ＥＣＣ）２６を備えている。ホストＩ／Ｆ２１、ＲＡＭ２２、ＣＰＵ２３、バッファメモリ２４、メモリＩ／Ｆ２５、及びＥＣＣ部２６は、内部バス２７によって相互に接続されている。
【００１４】
ホストＩ／Ｆ２１は、ホストバス２９を介してホスト機器３０と接続され、ホスト機器３０から受信した命令及びデータを、それぞれＣＰＵ２３及びバッファメモリ２４に転送する。また、ホストＩ／Ｆ２１は、ＣＰＵ２３からの命令に応答して、バッファメモリ２４内のデータをホスト機器３０へ転送する。
【００１５】
ＣＰＵ２３は、メモリコントローラ２０全体の動作を制御する制御部である。例えば、ＣＰＵ２３は、ホスト機器３０から書込み命令を受信した際には、それに応答して、メモリＩ／Ｆ２５に対して書込み命令を発行するとともに、必要に応じて、バッファメモリ２４内のユーザデータを符号化する符号化命令をＥＣＣ部２６へ発行する。読出し及び消去の際も同様に、ホスト機器３０から読出し命令を受信した際には、それに応答して、メモリＩ／Ｆ２５に対して読出し命令を発行するとともに、必要に応じて、読み出された符号語（受信語）を復号する復号命令をＥＣＣ部２６へ発行する。また、ＣＰＵ２３は、ウエアレベリングやガベージコレクション等、ＮＡＮＤメモリ１０を管理するための様々な処理も実行する。
【００１６】
メモリＩ／Ｆ２５は、ＮＡＮＤバス２８を介してＮＡＮＤメモリ１０と接続され、ＮＡＮＤメモリ１０との通信を制御する。メモリＩ／Ｆ２５は、ＣＰＵ２３から受信した命令に基づき、信号ALE、信号CLE、信号WEn、及び信号REnをＮＡＮＤメモリ１０へ出力する。また、書込み時には、メモリＩ／Ｆ２５は、ＣＰＵ２３で発行された書込み命令およびバッファメモリ２４内の書込み対象データ（以下、書込みデータという）を、入出力信号I/OとしてＮＡＮＤメモリ１０へ転送する。一方、読出し時には、メモリＩ／Ｆ２５は、ＣＰＵ２３で発行された読出し命令を、入出力信号I/OとしてＮＡＮＤメモリ１０へ転送する。さらに、メモリＩ／Ｆ２５は、ＮＡＮＤメモリ１０から読み出されたデータ（以下、読出しデータという）を入出力信号I/Oとして受信し、これをバッファメモリ２４へ転送する。
【００１７】
バッファメモリ２４は、ユーザデータ、書込みデータ、読出しデータ等を一時的に保持するメモリ領域として機能する。バッファメモリ２４は、ＤＲＡＭ（Dynamic Random Access Memory（Synchronous DRAMを含む））やＳＲＡＭ（Static Random Access Memory）等によって構成され得る。
【００１８】
ＲＡＭ２２は、例えばＤＲＡＭ等の半導体メモリである。ＲＡＭ２２は、ＣＰＵ２３の作業領域として使用される。ＲＡＭ２２には、ＮＡＮＤメモリ１０を管理するためのファームウェアや各種管理テーブル等がロードされる。
【００１９】
ＥＣＣ部２６は、読出しデータにおけるエラー検出及びエラー訂正のために、データの符号化および復号を行う。具体的には、ＥＣＣ部２６は、ＮＡＮＤメモリ１０に書き込まれるデータを符号化する。また、ＥＣＣ部２６は、ＮＡＮＤメモリ１０から読み出されたデータを復号する。復号時には、読出しデータに対するエラー検出およびエラー訂正がＥＣＣ部２６によって実行される。ＥＣＣ部２６は、エラー訂正に失敗した場合には、エラー訂正の失敗をＣＰＵ２３に通知する。一方、復号によって正しいデータが復元された場合には、ＥＣＣ部２６は、復元されたデータをバッファメモリ２４に格納する。ＥＣＣ部２６による符号化および復号のアルゴリズムとしては、任意のアルゴリズムが採用可能である。
【００２０】
以上のような構成を備えるメモリシステム１では、たとえばページと呼ばれるデータ単位で、ＮＡＮＤメモリ１０に対する書込みおよび読出しが実行され、また、ブロックと呼ばれるデータ単位で消去が実行される。本実施形態では、同一のワード線に接続された複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがＳＬＣ（single level cell）である場合、１つのメモリセルグループが１ページに対応する。メモリセルがＭＬＣ（multiple level cell）である場合、１つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続されるとともにビット線にも接続される。したがって、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとを用いて個別に特定することが可能である。
【００２１】
つづいて、本実施形態における各メモリセルの書込み状態について、図面を用いて詳細に説明する。なお、以下の説明では、簡略化のため、メモリセルを２ビット（４値）のＭＬＣとし、このメモリセルに対して硬判定読出し（ハードビットリードともいう）を行なう場合を例に挙げる。
【００２２】
図２は、本実施形態における書込み状態／非書込み状態にあるメモリセルの閾値電圧の分布（以下、閾値電圧分布という）と各メモリセルが保持するデータ値との対応関係の一例を示す図である。図２において、横軸はメモリセルの閾値電圧を示し、縦軸はメモリセルの出現頻度（出現確率でもよい）を示している。したがって、図２において‘Ｅｒ’〜‘Ｃ’で示されるガウス分布は、書込み状態／非書込み状態にあるメモリセルの閾値電圧の分布（閾値電圧分布）を模式的に表している。
【００２３】
４値のＭＬＣでは、通常、書込み状態／非書込み状態にあるメモリセルの閾値電圧が、Ｅｒ分布、Ａ分布、Ｂ分布およびＣ分布のいずれかに含まれるように、各メモリセルへの書込みおよび消去が実行される。これら４つの分布は、それぞれ２ビットのデータ値に対応する。たとえばＥｒ分布は‘１１’のデータ値に対応し、Ａ分布は‘０１’のデータ値に対応し、Ｂ分布は‘００’のデータ値に対応し、Ｃ分布は‘１０’のデータ値に対応している。
【００２４】
このようなＭＬＣのメモリセルに対する硬判定読出しでは、メモリセルの閾値電圧がＥｒ分布〜Ｃ分布のいずれに属するかが、それぞれの分布の境界付近に設定された読出し電圧ＡＲ〜ＣＲ（以下、ＡＲレベル〜ＣＲレベルという）を用いて特定される。たとえばＡＲレベルは、メモリセルの閾値電圧がＥｒ分布に属するかもしくはＡ分布〜Ｃ分布に属するかを特定するために使用される。ＢＲレベルは、閾値電圧がＥｒ分布またはＡ分布に属するかもしくはＢ分布またはＣ分布に属するかを特定するために使用される。ＣＲレベルは、閾値電圧がＥｒ分布〜Ｂ分布に属するかもしくはＣ分布に属するかを特定するために使用される。したがって、それぞれの読出し電圧（リードレベルともいう）を用いた読出し結果に基づくことで、メモリセルに書き込まれた閾値電圧がＥｒ分布〜Ｃ分布のいずれに属するかを特定することが可能となる。そして、特定した分布から、メモリセルに書き込まれたデータ値を特定することができる。
【００２５】
ただし、上述したように、あるワード線に意図しない電荷が蓄積されている場合、このワード線に隣接する未エントリのワード線に接続されたメモリセルの閾値電圧が、本来あるべき閾値電圧分布に属していない場合が発生する。これを、図３に示す例を用いて説明する。なお、図３では、未エントリのワード線に接続されたメモリセルの本来あるべき閾値電圧がＥｒ分布である場合を例示する。図３に示すように、メモリセルに接続するワード線が隣接するワード線からのリード・ディスターブの影響を受けていなければ、このメモリセルの閾値電圧はＥｒ分布に属している。しかしながら、隣接ワード線からのリード・ディスターブの影響を受けていた場合、メモリセルの閾値電圧は、図３に例示するように、たとえばＡＲレベルを跨ぐような分布形状を有するＥｒ１分布に属することとなる。
【００２６】
また、図４に示すように、リード・ディスターブの影響によって未エントリのワード線に接続されたメモリセルの閾値電圧が別の閾値電圧分布（たとえばＡ分布）にまで達するように変形していた場合、このメモリセルに対する書込み動作において、このメモリセルには既にＬｏｗｅｒデータ（Ｌｏｗｅｒビット）が書き込まれているとの誤認が生じる可能性が存在する。そのような場合、誤認された状態でＵｐｐｅｒデータ（Ｕｐｐｅｒビット）の書込みが実行されるため、図５に示すように、書込み後のメモリセルの閾値電圧が目的のデータ値とは対応しない閾値電圧分布に属することとなり、それにより、ハードエラーを発生させてしまう可能性が存在する。
【００２７】
そこで本実施形態では、リード・ディスターブの影響を受けている、もしくはその可能性があるメモリセルに関しては、そのメモリセルに書き込むビット数を減少させる動作モードで運用する。たとえばリード・ディスターブの影響を受けていない状態で２ビット（４値）のＭＬＣとして設計または使用していたメモリセルに関しては、そのメモリセルがリード・ディスターブの影響を受けているもしくはその可能性がある場合、２ビット（４値）よりも少ない１ビット（２値）のＳＬＣとして使用する。また、たとえばリード・ディスターブの影響を受けていない状態で３ビット（８値）のＴＬＣ（triple level cell）として設計または使用していたメモリセルに関しては、そのメモリセルがリード・ディスターブの影響を受けているもしくはその可能性がある場合、２ビット（４値）のＭＬＣまたは１ビット（２値）のＳＬＣとして使用する。
【００２８】
加えて、本実施形態では、ビット数を落として使用するメモリセルに関しては、各データ値に対応する閾値電圧分布のピーク間距離を、ビット数を落とさない場合の閾値電圧分布のピーク間距離よりも広くする。たとえばメモリセルを２ビット（４値）のＭＬＣとした場合、図６に示すように、非書込み状態（Ｅｒ分布に相当）と、最も電荷が書き込まれた状態（Ｃ分布に相当）との２つの状態を使用して、１ビット（２値）のデータを格納する。これにより、たとえば図７に例示するように、閾値電圧分布が変形した場合でも、２つの状態を示す閾値電圧分布同士が重なり合うことを回避または低減することが可能となる。その結果、リード・ディスターブの影響を受けたメモリセルであっても、性能を落とさずに信頼性を確保することが可能となる。また、リード・ディスターブの影響を受けたワード線に対して書き込むことで発生するハードエラーを大幅に低減することも可能となる。なお、図６および図７に示す例では、Ｃ分布に代えて、Ｂ分布を使用することも可能である。
【００２９】
なお、以下の説明では、ビット数を落とさずに通常の書込み／読出しを実行する動作モード（多値モードに相当）を高ビットモードと称し、閾値電圧分布のピーク間距離を広げるようにビット数を落として書込み／読出しを実行する動作モードを低ビットモードと称する。
【００３０】
高ビットモードから低ビットモードへの切替え条件としては、たとえば各ブロックに対して実行された読出し動作の累積回数（以下、累積読出し回数という）を用いることができる。すなわり、あるブロック（またはページ）に対する累積読出し回数が予め設定しておいた閾値以上となった場合には、このブロック（またはページ）に対する動作モードを高ビットモードから低ビットモードへ切り替えるように構成することができる。なお、切り替える条件となる閾値は、たとえばデバイス特性の統計結果から累積読出し回数に応じたリード・ディスターブの影響を推定し、この推定より予測されるエラービットの発生確率が無視できない程度もしくは誤り訂正によって解消しきれない程度となる累積読出し回数に基づいて決定するなどの手法により適宜設定することができる。
【００３１】
また、累積読出し回数に基づいて動作モードを高ビットモードから低ビットモードへ切り替える構成の他にも、たとえば各ブロック（またはページ）に現に発生しているリード・ディスターブの影響を随時または定期的に計測し、計測された値より予測されるエラービットの発生確率が無視できない程度もしくは誤り訂正によって解消しきれない程度である場合には、当該ブロック（またはページ）の動作モードを高ビットモードから低ビットモードへ切り替えるなどの構成も採用することが可能である。なお、現に発生しているリード・ディスターブの影響の測定方法としては、たとえば実際にブロック（またはページ）に対して予め用意しておいたテストパターンを書き込んだ状態で各メモリセルの閾値電圧を測定し、これにより得られる閾値電圧分布から現に発生しているリード・ディスターブの影響を求める方法など、種々の方法を用いることが可能である。
【００３２】
なお、以下の説明では、高ビットモードから低ビットモードへの切替え条件として、各ブロックの累積読出し回数を採用した場合を例示する。
【００３３】
ＮＡＮＤメモリ１０におけるいずれのブロック（またはページ）が高ビットモードで運用され、いずれのブロック（またはページ）が低ビットモードで運用されているかについては、たとえば図８に例示するようなモード管理テーブルを用いて管理することができる。モード管理テーブルでは、たとえばＮＡＮＤメモリ１０のメモリ領域における物理的な位置を指定する物理アドレスと、当該物理アドレスによって特定されるページを識別するためのページＩＤと、物理アドレスまたはページＩＤによって特定されるページの動作モードと、各ページを含むブロックを識別するためのブロックＩＤと、各ブロックに対して過去に実行された読出しの累積回数を示す累積読出し回数とが対応付けられている。したがって、たとえばＣＰＵ２３は、ホスト機器３０からの書込み命令または読出し命令によって指定された論理アドレスから特定される物理アドレスを用いてモード管理テーブルを参照することで、該当ページまたはブロックの動作モードや累積読出し回数を特定することができる。なお、このモード管理テーブルは、たとえばアドレス変換テーブル等と同様に、起動時にＲＡＭ２２へ読み出され、必要に応じてＣＰＵ２３に参照される。
【００３４】
つづいて、本実施形態にかかるメモリシステムの動作について、図面を用いて詳細に説明する。図９〜図１２は、本実施形態にかかるメモリシステムの書込み動作を説明するための図である。図１３は、本実施形態にかかるメモリシステムの読出し動作を説明するための図である。
【００３５】
まず、メモリシステム１の書込み動作について説明する。図９は、本実施形態にかかるメモリシステムの書込み動作の一例を示すフローチャートである。なお、以下の説明では、ＣＰＵ２３の動作に着目する。また、図９に示す動作に先だって、ＣＰＵ２３にはホスト機器３０からの書込み命令が入力されるとともに、バッファメモリ２４にはホスト機器３０から転送された書込み対象のユーザデータが蓄積されているものとする。
【００３６】
図９に示すように、ホストインタフェース回路２１を介してホスト機器３０から書込み命令が入力されたＣＰＵ２３は、まず、書込み命令を解析し（ステップＳ１０１）、この解析により得られた論理アドレスに基づいてアドレス変換テーブルを参照することで、書込み対象のユーザデータの格納先となる１つ以上のページを指し示す物理アドレスを特定する（ステップＳ１０２）。
【００３７】
つぎにＣＰＵ２３は、モード管理テーブル（図８参照）を参照することで、特定した物理アドレスが指し示すページの動作モードを確認する（ステップＳ１０３）。つづいてＣＰＵ２３は、確認した動作モードが低ビットモードであるか否かを判定し（ステップＳ１０４）、低ビットモードである場合（ステップＳ１０４；ＹＥＳ）、モード管理テーブルにおいて管理されている該当ページ（またはブロック）の動作モードを低ビットモードに更新し（ステップＳ１０９）、ステップＳ１１０へ進む。
【００３８】
一方、該当ページの動作モードが低ビットモードでない場合、すなわち高ビットモードである場合（ステップＳ１０４；ＮＯ）、つぎにＣＰＵ２３は、モード管理テーブルを参照することで、ステップＳ１０２で特定した物理アドレスが指し示すページを含むブロックの累積読出し回数を確認する（ステップＳ１０５）。つづいてＣＰＵ２３は、累積読出し回数が予め定めておいた閾値以上であるか否かを判定し（ステップＳ１０６）、閾値以上である場合（ステップＳ１０６；ＹＥＳ）、ステップＳ１１０へ進む。
【００３９】
一方、ブロックの累積読出し回数が閾値未満である場合（ステップＳ１０６；ＮＯ）、ＣＰＵ２３は、高ビットモード、すなわち多値モードでの符号化命令をＥＣＣ部２６へ発行し（ステップＳ１０７）、ステップＳ１０８へ進む。これに対し、ＥＣＣ部２６は、入力された符号化命令に従い、バッファメモリ２４に格納されている書込み対象のユーザデータを符号化することで多値データの符号語（以下、高ビットの符号語という）を生成し、この符号語（書込み対象データ）をバッファメモリ２４に格納する。
【００４０】
ステップＳ１１０では、ＣＰＵ２３は、低ビットモード、たとえば２値モードでの符号化命令をＥＣＣ部２６へ発行する。これに対し、ＥＣＣ部２６は、入力された符号化命令に従い、バッファメモリ２４に格納されている書込み対象のユーザデータを符号化することで低ビットの符号語を生成し、この符号語（書込み対象データ）をバッファメモリ２４に格納する。つづいてＣＰＵ２３は、バッファメモリ２４に格納されている低ビットの符号語を高ビットの符号語に変換する変換処理を実行し（ステップＳ１１１）、ステップＳ１０８へ進む。ステップＳ１１１の変換処理の詳細については、後述において説明する。ステップＳ１１１で高ビットに変換された符号語（書込み対象データ）は、たとえばバッファメモリ２４に一時的に格納される。
【００４１】
ステップＳ１０８では、ＣＰＵ２３は、メモリＩ／Ｆ２５に対し、バッファメモリ２４に格納されている書込み対象データを高ビットモードでＮＡＮＤメモリ１０へ書き込む書込み命令を発行し、その後、本動作を終了する。これに対し、メモリＩ／Ｆ２５は、バッファメモリ２４に格納されている書込み対象データを高ビットモード（多値モードまたは通常モード）でＮＡＮＤメモリ１０に書き込む書き込み制御を実行する。このように、本実施形態では、高ビットモードの符号化により生成された符号語と、低ビットモードの符号化により生成された符号語を変換することで得られた高ビットの符号語との両方に対し、同じ高ビットモード（多値モードまたは通常モード）での書き込みが実行される。
【００４２】
なお、高ビットモードの符号化と低ビットモードの符号化とでは、たとえば符号化の単位とするデータ長が異なる。これは、上述のステップＳ１１１で説明したように、低ビットモードの符号化で生成された符号語が高ビットモードの符号化で生成された符号語と同じビット数（データ長）のデータに変換されるためである。そこで本実施形態では、たとえば高ビットモードが２ビット（４値）であり、低ビットモードが１ビット（２値）である場合、低ビットモードの符号化における符号化単位を高ビットモードの符号化における符号化単位の半分のデータ長とし、また、低ビットモードの符号化により生成される冗長データ（パリティ等）も高ビットモードの符号化により生成される冗長データ（パリティ等）の半分のデータ長とする。
【００４３】
つづいて、図９のステップＳ１１１に示す変換処理の詳細について説明する。なお、以下の説明では、低ビットモードの符号化により生成された符号語、すなわち低ビットの符号語が、‘１０１１０１０１’であるとする。また、ＮＡＮＤメモリ１０のメモリセルには、２ビット（４値）のＭＬＣが用いられているとする。その場合、低ビットモードのビット数は１ビットとなり、高ビットモードのビット数は２ビットとなる。
【００４４】
上述したように、２ビット（４値）のＭＬＣには、Ｅｒ分布〜Ｃ分布の４つの閾値電圧分布のうちのいずれかに属するように、データ値の書込みまたは消去が実行される。すなわち、２ビット（４値）のＭＬＣは、４つの閾値電圧分布を用いて２ビットのデータ値を格納する。一方で、１ビットのデータ値を格納するためには、２つの閾値電圧分布を使用する必要がある。そこで本実施形態では、低ビットモードの場合、ＭＬＣの４つの閾値電圧分布のうちの隣接しない２つの閾値電圧分布を使用することで、１つのメモリセルが実質的に１ビットのデータ値を格納するように構成する。
【００４５】
上述した構成を実現するために、図９のステップＳ１１１に示す変換処理では、４つの閾値電圧分布のうち隣接しない２つの閾値電圧分布が使用されるように、低ビットモードのビット数（本例では１ビット）の符号語が高ビットモードと同じビット数（本例では２ビット）のデータ（書込みデータ）に変換される。
【００４６】
これを図２に示した例を用いて説明すると、Ｅｒ分布が‘１１’のデータ値に対応し、Ａ分布が‘０１’のデータ値に対応し、Ｂ分布が‘００’のデータ値に対応し、Ｃ分布が‘１０’のデータ値に対応し、これらの分布のうち隣接しないＥｒ分布とＣ分布とを用いて１ビットを格納する場合では、低ビットモードでのデータ値‘１’がたとえば高ビットモードでのデータ値‘１１’（Ｅｒ分布に対応）に変換され、低ビットモードでのデータ値‘０’がたとえば高ビットモードでのデータ値‘１０’（Ｃ分布に相当）に変換される。その結果、低ビットモードで生成された符号語‘１０１１０１０１’は、データ‘１１  １０  １１  １１  １０  １１  １０  １１’に変換される。
【００４７】
低ビットモードの符号語から高ビットモードのデータへの変換処理では、たとえば図１０に例示するような、低ビットモードでのデータ値と高ビットモードでのデータ値との対応関係を保持する対応テーブルを用いることが可能である。ただし、上述した例のように、低ビットモードでのデータ値‘１’を高ビットモードでのデータ値‘１１’に変換し、低ビットモードでのデータ値‘０’を高ビットモードでのデータ値‘１０’に変換する場合、固定ビットの挿入により容易に低ビットモードのデータを高ビットモードのデータに変換することが可能である。
【００４８】
これを、具体例を挙げて説明する。図１１は、固定ビットの挿入により低ビットモードの符号語を高ビットモードのデータに変換する変換処理を説明するための図である。なお、本説明では、２ビットのデータ値のうち、左側のビットを“上位ビット”とし、右側のビットを“下位ビット”としている。図１１に示すように、低ビットモードでのデータ値‘１’を高ビットモードでのデータ値‘１１’に変換し、低ビットモードでのデータ値‘０’を高ビットモードでのデータ値‘１０’に変換する場合、高ビットモードでのデータ値における上位ビットはともに‘１’である。すなわち、変換後の各データ値における上位ビットは、値が‘１’に固定されたビットである。
【００４９】
そこで本例では、低ビットモードで生成された符号語‘１０１１０１０１’の各ビットを下位ビットとし、それぞれの下位ビットに対して値が固定された上位ビット‘１’をダミーデータとして挿入するように構成する。これにより、容易に低ビットモードの符号語を高ビットモードのデータに変換することが可能となる。
【００５０】
以上のようにして低ビットモードから高ビットモードに変換されたデータをメモリセルに書き込んだ場合、図１２に示すように、各メモリセルの閾値電圧は、そのピーク電圧が互いに大きく離間したＥｒ分布とＣ分布とのうちのいずれかに属することとなる。それにより、リード・ディスターブの影響を受けたメモリセルであっても、性能を落とさずに信頼性を確保することが可能となる。また、リード・ディスターブの影響を受けたワード線に対して書き込むことで発生するハードエラーを大幅に低減することも可能となる。
【００５１】
なお、図１１を用いて説明した変換処理において、固定ビットは上位ビットに限定されず、下位ビットであってもよい。また、高ビットモードでのデータ値が３ビット以上である場合には、上位ビットと下位ビットで挟まれたビット（これを中間ビットという）のうちの１つを１つ以上の固定ビットのうちの１つとすることも可能である。
【００５２】
また、固定ビットであるダミーデータは、バッファメモリ２４に格納された符号語に対してＣＰＵ２３が挿入してもよいし、バッファメモリ２４内の符号語をＮＡＮＤメモリ１０へ転送する際にメモリＩ／Ｆ２５が挿入してもよい。もしくは、ＮＡＮＤメモリ１０内において各メモリセルに実際にデータが書き込まれる際に、上位ビットが挿入されるような構成であってもよい。
【００５３】
つぎに、メモリシステム１の読出し動作について説明する。図１３は、本実施形態にかかるメモリシステムの読出し動作の一例を示すフローチャートである。なお、以下の説明では、図９を用いた説明と同様に、ＣＰＵ２３の動作に着目する。
【００５４】
図１３に示すように、ホストインタフェース回路２１を介してホスト機器３０から読出し命令が入力されたＣＰＵ２３は、まず、読出し命令を解析し（ステップＳ１２１）、この解析により得られた論理アドレスに基づいてアドレス変換テーブルを参照することで、読出し対象のユーザデータが格納された１つ以上のページを指し示す物理アドレスを特定する（ステップＳ１２２）。
【００５５】
つぎにＣＰＵ２３は、モード管理テーブル（図８参照）を参照することで、特定した物理アドレスが指し示すページの動作モードを確認し（ステップＳ１２３）、つづいて、確認した動作モードが高ビットモードであるか否かを判定する（ステップＳ１２４）。
【００５６】
動作モードが高ビットモードである場合（ステップＳ１２４；ＹＥＳ）、ＣＰＵ２３は、高ビットモード、すなわち多値モードでＮＡＮＤメモリ１０からデータを読み出す読出し命令をメモリＩ／Ｆ２５へ発行する（ステップＳ１２５）。これに対し、メモリＩ／Ｆ２５は、ＮＡＮＤメモリ１０に対し、特定された物理アドレスに対する高ビットモード（多値モード）での読出し動作を実行し、これにより読み出されたデータ（符号語）をバッファメモリ２４に格納する。また、ＣＰＵ２３は、バッファメモリ２４に格納されたデータ（符号語）を復号する復号命令をＥＣＣ部２６へ発行し（ステップＳ１２６）、ステップＳ１２９へ進む。これに対し、ＥＣＣ部２６は、バッファメモリ２４に格納されたデータを読み出して復号を実行し、これにより得られた復号結果をＣＰＵ２３へ返す。なお、復号に成功していた場合、ＥＣＣ部２６は、復元されたユーザデータをバッファメモリ２４に格納する。
【００５７】
一方、ステップＳ１２３で確認された動作モードが低ビットモードである場合（ステップＳ１２４；ＮＯ）、ＣＰＵ２３は、低ビットモードでＮＡＮＤメモリ１０からデータを読み出す読出し命令をメモリＩ／Ｆ２５へ発行する（ステップＳ１２７）。これに対し、メモリＩ／Ｆ２５は、ＮＡＮＤメモリ１０に対し、特定された物理アドレスに対する低ビットモードでの読出し動作を実行し、これにより読み出されたデータ（符号語）をバッファメモリ２４に格納する。また、ＣＰＵ２３は、バッファメモリ２４に格納されたデータ（符号語）を復号する復号命令をＥＣＣ部２６へ発行し（ステップＳ１２８）、ステップＳ１２９へ進む。これに対し、ＥＣＣ部２６は、バッファメモリ２４に格納されたデータを読み出して復号を実行し、これにより得られた復号結果をＣＰＵ２３へ返す。なお、復号に成功していた場合、ＥＣＣ部２６は、復元されたユーザデータをバッファメモリ２４に格納する。
【００５８】
ステップＳ１２９では、ＣＰＵ２３は、ステップＳ１２６またはＳ１２８の復号命令に応じてＥＣＣ部２６が実行した復号に成功したか否かを判定し、復号に成功していた場合（ステップＳ１２９；ＹＥＳ）、バッファメモリ２４に格納されているユーザデータをホスト機器３０へ送信し（ステップＳ１３０）、本動作を終了する。一方、復号に失敗していた場合（ステップＳ１２９；ＮＯ）、ＣＰＵ２３は、読出しエラーをホスト機器３０へ返し（ステップＳ１３１）、本動作を終了する。
【００５９】
なお、ステップＳ１２７の読出し命令に対してメモリＩ／Ｆ２５が実行する読出し動作、すなわち低ビットモードでの読出し動作では、１つのリードレベルが使用される。たとえば上述した例のように、ＭＬＣの４つの閾値電圧分布のうちの隣接しない２つの閾値電圧分布を使用して実質的に１ビットのデータ値を格納する構成では、１つのリードレベルを用いた読出し動作により、各メモリセルに格納されているデータ値を特定することが可能である。これを図１２に示す例を用いて説明すると、低ビットモードでの読出し動作では、たとえばＣＲレベルを使用することで、メモリセルの閾値電圧がＥｒ分布とＣ分布とのいずれに属するかを特定することができる。ただし、ＣＲレベルに限定されず、ＡＲレベル、ＢＲレベル、または、ＡＲレベル〜ＣＲレベルの間に位置するリードレベルを用いることも可能である。
【００６０】
また、以上のように、低ビットモードの読出し動作で使用するリードレベルを１つとした場合、読み出された受信語（読出しデータ）にはダミーデータが含まれていない。そのため、ダミーデータを削除する動作やビット値を変換する動作を必要とせずに、読み出された受信語に対して直接的に誤り訂正処理を実行することが可能となる。それにより、読出し時の動作速度の低減を抑制することが可能となる。
【００６１】
以上で説明したように、本実施形態によれば、リード・ディスターブの影響を受けている、もしくはその可能性があるメモリセルに関しては、そのメモリセルに書き込むビット数を減少させる低ビットモードでの書込みおよび読出しが実行される。加えて、本実施形態では、ビット数を落として使用するメモリセルに関しては、各データ値に対応する閾値電圧分布のピーク間距離を、ビット数を落とさない場合の閾値電圧分布のピーク間距離よりも広くする。それにより、閾値電圧分布が変形した場合でも、２つの状態を示す閾値電圧分布同士が重なり合うことを回避または低減することが可能となる。その結果、リード・ディスターブの影響を受けたメモリセルであっても、性能を落とさずに信頼性を確保することが可能となる。また、リード・ディスターブの影響を受けたワード線に対して書き込むことで発生するハードエラーを大幅に低減することも可能となる。
【００６２】
なお、上述の説明では、低ビットモードで使用する閾値電圧分布（たとえばＥｒ分布とＣ分布）が高ビットモードの閾値電圧分布（たとえばＥｒ分布〜Ｃ分布）のなかから選択される場合について例示したが、このような構成に限定されるものではない。たとえば図１４に例示するように、それぞれのデータ値の書き込み状態に対応する閾値電圧分布のピーク間距離が高ビットモードでのピーク間距離よりも広がるように、各データ値を書き込む際の書込み電圧を制御してもよい。その場合、低ビットモードの書込みデータを高ビットモードの書込みデータと同じビット数のデータに変換する必要がないため、書込み時の処理を軽減することが可能となる。
【００６３】
また、上述の説明では、たとえば累積読出し回数をブロック単位で管理し（図８参照）、これに基づくことで、高ビットモードと低ビットモードとがブロック単位で切り替わる場合を例示したが、このような構成に限定されるものではない。すなわち、たとえばページ単位で高ビットモードと低ビットモードとが切り替わる構成など、種々変形することが可能である。そのような構成とすることで、同一ブロック内に高ビットモードと低ビットモードとが混在する場合でも、当該ブロック全体を低ビットモードに切り替える必要や、複数のブロックに分散した低ビットモードのページをまとめて別のブロックに書き直すなどの必要がないため、ＮＡＮＤメモリ１０の利用効率が向上するとともに、ＧＣ（garbage collection）などの発生頻度が低減するため、高速な動作を実現することが可能となる。
【００６４】
なお、たとえばページ単位で高ビットモードと低ビットモードとが切り替わる構成とする場合には、たとえば図８に示すモード管理テーブルに代えて、図１５に例示するような、ページ単位で累積読出し回数が管理されるモード管理テーブルが用いられてもよい。
【００６５】
また、上述した実施形態では、低ビットモードの場合に、低ビットのデータを高ビットのデータに変換してメモリセルに書き込む場合を例示したが、このような構成に限定されない。すなわち、低ビットのデータ（たとえば１ビットのデータ）を高ビットのデータ（たとえば２ビットのデータ）に変換する構成に代えて、各メモリセルに書き込む複数のページのうちの特定のページを選択的に書き込む構成、言い換えれば、各メモリセルに書き込む複数のページのうちの特定のページを選択的に書き込まない構成とすることも可能である。その場合、たとえば高ビットのデータを２ビットデータとすると、２ビットデータのうちのアッパーページ（上位ビットに相当）またはロワーページ（下位ビットに相当））がメモリセルに書き込まれ、他のページ（ロワーページまたはアッパーページ）は書き込まれない。このような構成によっても、上述した実施形態と同様に、各データ値に対応する閾値電圧分布のピーク間距離を、ビット数を落とさない場合の閾値電圧分布のピーク間距離よりも広くすることが可能となるため、性能を落とさずに信頼性を確保することが可能になるとともに、リード・ディスターブの影響を受けたワード線に対して書き込むことで発生するハードエラーを大幅に低減することも可能になる。
【００６６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６７】
１…メモリシステム、１０…ＮＡＮＤメモリ、２０…メモリコントローラ、２１…ホストＩ／Ｆ、２２…ＲＡＭ、２３…ＣＰＵ、２４…バッファメモリ、２５…メモリＩ／Ｆ、２６…ＥＣＣ部、２７…内部バス、２８…ＮＡＮＤバス、２９…ホストバス、３０…ホスト機器
【図１】
2018160056.tif 000003
【図２】
2018160056.tif 000004
【図３】
2018160056.tif 000005
【図４】
2018160056.tif 000006
【図５】
2018160056.tif 000007
【図６】
2018160056.tif 000008
【図７】
2018160056.tif 000009
【図８】
2018160056.tif 000010
【図９】
2018160056.tif 000011
【図１０】
2018160056.tif 000012
【図１１】
2018160056.tif 000013
【図１２】
2018160056.tif 000014
【図１３】
2018160056.tif 000015
【図１４】
2018160056.tif 000016
【図１５】
2018160056.tif 000017