(57)【要約】【課題】  信頼性の高いメモリシステムを提供すること。【解決手段】  実施形態によれば、メモリシステムは、複数のブロックからなり、前記複数のブロックのそれぞれは１以上のサブブロックからなり、前記１以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリと、前記メモリに電気的に接続されるコントローラからなる。前記コントローラは、サブブロック毎のリード頻度を求めるカウント手段と、サブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが１つのブロックに書き込まれるように、前記１以上のサブブロックに書き込まれているデータの移動を実行する制御手段と、を具備する。【選択図】図４
2019168937.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックからなり、前記複数のブロックのそれぞれは１以上のサブブロックからなり、前記１以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリと、前記メモリに電気的に接続されるコントローラからなるメモリシステムであって、
前記コントローラは、
サブブロック毎のリード頻度を求めるカウント手段と、
サブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが１つのブロックに書き込まれるように、前記１以上のサブブロックに書き込まれているデータの移動を実行する制御手段と、
を具備するメモリシステム。
【請求項２】
前記カウント手段は、ブロック毎のリード頻度をさらに求め、
前記制御手段は、
前記複数のブロックの中の第１ブロックのリード頻度が第１頻度を超える場合、前記第１ブロックに含まれる１以上のサブブロック毎にサブブロックに書き込まれているデータの誤り率を検出し、
前記誤り率が第１率を超えるサブブロックが１つでも存在する場合、前記第１ブロックに含まれる１以上のサブブロックに含まれるデータに関するデータの移動を実行し、
前記誤り率が第１率を超えるサブブロックが１つも存在しない場合、前記第１ブロックに含まれる１以上のサブブロックに含まれるデータに関するデータの移動を実行しない請求項１記載のメモリシステム。
【請求項３】
前記制御手段は、
前記第１ブロックに含まれる第1サブブロックのリード頻度が前記第１頻度を超える場合、前記第１サブブロックに書き込まれているデータを第２ブロックに書き込み、
前記第１ブロックに含まれる第２サブブロックのリード頻度が前記第１頻度を超えない場合、前記第２サブブロックに書き込まれているデータを第３ブロックに書き込む請求項２記載のメモリシステム。
【請求項４】
前記制御手段は、
前記第１サブブロックに書き込まれているデータを前記第２ブロックに第１方式で書き込み、
前記第２サブブロックに書き込まれているデータを前記第３ブロックに第２方式で書き込み、
前記第1方式でデータが書き込まれた１つの不揮発性メモリセルが保持するデータのビット数は前記第２方式でデータが書き込まれた１つの不揮発性メモリセルが保持するデータのビット数より少ない請求項３記載のメモリシステム。
【請求項５】
前記制御手段は、
前記第１サブブロックに書き込まれているデータを前記第２ブロックに第１能力を超える誤り訂正能力の誤り訂正符号化を用いて書き込み、
前記第２サブブロックに書き込まれているデータを前記第３ブロックに第１能力を超えない誤り訂正能力の誤り訂正符号化を用いて書き込む請求項３記載のメモリシステム。
【請求項６】
前記制御手段は、
前記第１サブブロックに書き込まれているデータを複数の不揮発性メモリセルの閾値電圧分布が第１のばらつきを持つように前記第２ブロックに書き込み、
前記第２サブブロックに書き込まれているデータを複数の不揮発性メモリセルの閾値電圧分布が第２のばらつきを持つように前記第３ブロックに書き込み、
前記第1のばらつきは前記第２のばらつきより小さい請求項３記載のメモリシステム。
【請求項７】
前記制御手段は、
前記第１サブブロックに書き込まれているデータを前記第２ブロックに第1方式で書き込み、
前記第２サブブロックに書き込まれているデータを前記第３ブロックに第２方式で書き込み、
前記第1方式で書き込まれたデータの各値に対応する不揮発性メモリセルの閾値電圧分布は前記第２方式で書き込まれたデータの各値に対応する不揮発性メモリセルの閾値電圧分布より高い電圧側である請求項３記載のメモリシステム。
【請求項８】
ガベージコレクションを実行するガベージコレクション手段をさらに具備し、
前記制御手段は、
前記ガベージコレクションによって前記データの移動を実行する請求項１記載のメモリシステム。
【請求項９】
前記複数のサブブロックのそれぞれは、１つのワード線に接続されるメモリセル群、複数のワード線に接続されるメモリセル群、又は論理アドレス範囲で指定されるデータを格納するメモリセル群を含む請求項１記載のメモリシステム。
【請求項１０】
複数のブロックからなり、前記複数のブロックのそれぞれは１以上のサブブロックからなり、前記１以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリと、前記メモリに電気的に接続されるコントローラからなるメモリシステムの制御方法であって、
前記コントローラはサブブロック毎のリード頻度を求め、
前記コントローラはサブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが１つのブロックに書き込まれるように、前記１以上のサブブロックに書き込まれているデータの移動を実行する制御方法。
【請求項１１】
前記コントローラは、ブロック毎のリード頻度をさらに求め、
前記コントローラは、前記複数のブロックの中の第１ブロックのリード頻度が第１頻度を超える場合、前記第１ブロックに含まれる１以上のサブブロック毎にサブブロックに書き込まれているデータの誤り率をさらに検出し、
前記コントローラは、
前記誤り率が第１率を超えるサブブロックが１つでも存在する場合、前記第１ブロックに含まれる１以上のサブブロックに含まれるデータに関するデータの移動を実行し、
前記誤り率が第１率を超えるサブブロックが１つも存在しない場合、前記第１ブロックに含まれる１以上のサブブロックに含まれるデータに関するデータの移動を実行しない請求項１０記載の制御方法。
【請求項１２】
前記コントローラは、
前記第１ブロックに含まれる第1サブブロックのリード頻度が前記第１頻度を超える場合、前記第１サブブロックに書き込まれているデータを第２ブロックに書き込み、
前記第１ブロックに含まれる第２サブブロックのリード頻度が前記第１頻度を超えない場合、前記第２サブブロックに書き込まれているデータを第３ブロックに書き込む請求項１１記載の制御方法。
【請求項１３】
前記コントローラは、
前記第１サブブロックに書き込まれているデータを前記第２ブロックに第１方式で書き込み、
前記第２サブブロックに書き込まれているデータを前記第３ブロックに第２方式で書き込み、
前記第1方式でデータが書き込まれた１つの不揮発性メモリセルが保持するデータのビット数は前記第２方式でデータが書き込まれた１つの不揮発性メモリセルが保持するデータのビット数より少ない請求項１２記載の制御方法。
【請求項１４】
前記コントローラは、
前記第１サブブロックに書き込まれているデータを前記第２ブロックに第１能力を超える誤り訂正能力の誤り訂正符号化を用いて書き込み、
前記第２サブブロックに書き込まれているデータを前記第３ブロックに第１能力を超えない誤り訂正能力の誤り訂正符号化を用いて書き込む請求項１２記載の制御方法。
【請求項１５】
前記コントローラは、
前記第１サブブロックに書き込まれているデータを複数の不揮発性メモリセルの閾値電圧分布が第１のばらつきを持つように前記第２ブロックに書き込み、
前記第２サブブロックに書き込まれているデータを複数の不揮発性メモリセルの閾値電圧分布が第２のばらつきを持つように前記第３ブロックに書き込み、
前記第1のばらつきは前記第２のばらつきより小さい請求項１２記載の制御方法。
【請求項１６】
前記コントローラは、
前記第１サブブロックに書き込まれているデータを前記第２ブロックに第1方式で書き込み、
前記第２サブブロックに書き込まれているデータを前記第３ブロックに第２方式で書き込み、
前記第1方式で書き込まれたデータの各値に対応する不揮発性メモリセルの閾値電圧分布は前記第２方式で書き込まれたデータの各値に対応する不揮発性メモリセルの閾値電圧分布より高い電圧側である請求項１２記載の制御方法。
【請求項１７】
前記コントローラは、ガベージコレクションをさらに実行し、
前記コントローラは、前記ガベージコレクションによって前記データの移動を実行する請求項１０記載の制御方法。
【請求項１８】
前記複数のサブブロックのそれぞれは、１つのワード線に接続されるメモリセル群、複数のワード線に接続されるメモリセル群、又は論理アドレス範囲で指定されるデータを格納するメモリセル群を含む請求項１０記載の制御方法。
【請求項１９】
複数のブロックからなり、前記複数のブロックのそれぞれは１以上のサブブロックからなり、前記１以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリに電気的に接続されるコントローラであって、
サブブロック毎のリード頻度を求めるカウント手段と、
サブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが１つのブロックに書き込まれるように、前記１以上のサブブロックに書き込まれているデータの移動を実行する制御手段と、
を具備するコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はメモリシステム、制御方法及びコントローラに関する。
【背景技術】
【０００２】
ＳＳＤ（Solid State Drive）と呼ばれる、不揮発性半導体メモリを用いたメモリシステムが開発されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第5629391号公報
【特許文献２】特表2014-505941号公報
【特許文献３】米国特許第9129699号明細書
【特許文献４】特許第4377950号公報
【特許文献５】特開2009-223876号公報
【特許文献６】米国特許出願公開第2009/0172267号明細書
【特許文献７】米国特許第9141534号明細書
【特許文献８】米国特許出願公開第2014/0173180号明細書
【特許文献９】特許第5349256号公報
【特許文献１０】特開2011-100519号公報
【特許文献１１】米国特許第8929140号明細書
【特許文献１２】特開2008-287404号公報
【特許文献１３】米国特許第8281220号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
不揮発性半導体メモリを用いるメモリシステムにおいては、メモリセルサイズの微細化が望まれているが、微細化によりメモリセルが記憶しているデータの信頼性が低下することがある。
【０００５】
本発明の目的は信頼性の高いメモリシステム、制御方法及びコントローラを提供することである。
【課題を解決するための手段】
【０００６】
実施形態によれば、メモリシステムは、複数のブロックからなり、前記複数のブロックのそれぞれは１以上のサブブロックからなり、前記１以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリと、前記メモリに電気的に接続されるコントローラからなる。前記コントローラは、サブブロック毎のリード頻度を求めるカウント手段と、サブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが１つのブロックに書き込まれるように、前記１以上のサブブロックに書き込まれているデータの移動を実行する制御手段と、を具備する。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態に係るメモリシステムの一例のブロック図である。
【図２】第１のリードディスターブストレス対策の一例を説明する図である。
【図３】第２のリードディスターブストレス対策の一例を説明する図である。
【図４】第３のリードディスターブストレス対策の一例を説明する図である。
【図５】１ブロックの構成の一例を説明する図である。
【図６】第３のリードディスターブストレス対策におけるワード線に関するデータの移動の一例を説明する図である。
【図７】第３のリードディスターブストレス対策におけるリード回数テーブルの一例を説明する図である。
【図８】第３のリードディスターブストレス対策におけるページに関するデータの移動の一例を説明する図である。
【図９】第３のリードディスターブストレス対策におけるＬＢＡ範囲に関するデータの移動の一例を説明する図である。
【図１０】第３のリードディスターブストレス対策の処理の一例を示すフローチャートである。
【図１１】監視対象ブロックの指定方法の一例を説明する図である。
【図１２】監視対象ブロックの指定方法の他の例を説明する図である。
【図１３】第３のリードディスターブストレス対策におけるリード頻度の異なるデータをブロックに纏める処理の例を説明するフローチャートである。
【図１４】図１３のステップＳ１５２の実行後のデータのページ毎のリード頻度を示す図である。
【図１５】ブロック＃０のリード頻度が高い４ページのデータがブロック＃１００に移動され、ブロック＃０のリード頻度が低い６ページのデータがブロック＃１０１に移動された後のページ毎のリード頻度を示す図である。
【図１６】ブロック＃４のリード頻度が高い３ページのデータがブロック＃１００に移動され、ブロック＃４のリード頻度が低い７ページのデータがブロック＃１０１、＃１０２に移動された後のページ毎のリード頻度を示す図である。
【図１７】ブロック＃１のリード頻度が高い２ページのデータがブロック＃１００に移動され、ブロック＃１のリード頻度が低い８ページのデータがブロック＃１０２、＃１０３に移動された後のページ毎のリード頻度を示す図である。
【図１８】ブロック＃３のリード頻度が高い２ページのデータが高頻度用の移動先ブロック＃１００と低頻度用の移動先ブロック＃１０３に移動され、ブロック＃３のリード頻度が低い８ページのデータが低頻度用の移動先ブロック＃１０３に移動された後のページ毎のリード頻度を示す図である。
【図１９】第３のリードディスターブストレス対策におけるデータ移動の他の例を説明する図である。
【図２０】第３のリードディスターブストレス対策におけるデータ移動の他の例を説明する図である。
【図２１】比較例におけるＴＬＣフラッシュメモリのメモリセルトランジスタの閾値分布の一例を示す図である。
【図２２】第４のリードディスターブストレス対策におけるデータの信頼性の高い書き込み方法におけるメモリセルトランジスタの閾値電圧分布の一例を示す図である。
【図２３】第４のリードディスターブストレス対策におけるデータの信頼性の高い書き込み方法の一例を示す図である。
【図２４】第４のリードディスターブストレス対策におけるデータの信頼性の高い書き込み方法におけるメモリセルトランジスタの閾値電圧分布の一例を示す図である。
【図２５】第４のリードディスターブストレス対策における書き込み方法の選択の一例を示す図である。
【図２６】第４のリードディスターブストレス対策における書き込み方法の選択の他の例を示す図である。
【図２７】第５のリードディスターブストレス対策の一例を示す図である。
【図２８】第５のリードディスターブストレス対策における書き込み方法の選択の一例を示す図である。
【図２９】第５のリードディスターブストレス対策における書き込み方法の選択の他の例を示す図である。
【発明を実施するための形態】
【０００８】
以下、実施の形態について図面を参照して説明する。なお、開示はあくまで一例にすぎず、以下の実施形態に記載した内容により発明が限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各部分のサイズ、形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、対応する要素には同じ参照数字を付して、詳細な説明を省略する場合もある。
【０００９】
［第１実施形態］  
第１実施形態に係るメモリシステムについて説明する。第１実施形態では、不揮発性半導体メモリとしてＮＡＮＤ型フラッシュメモリを用いるが、他の不揮発性半導体メモリを用いてもよい。
【００１０】
図１を参照して、実施形態に係るメモリシステムを含む情報処理システム１の構成を説明する。
【００１１】
情報処理システム１は、ホストデバイス（以下、ホストと称する）２と、メモリシステム３とを含む。メモリシステム３は、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。メモリシステム３は、不揮発性半導体メモリ、例えばＮＡＮＤ型フラッシュメモリを備えたソリッドステートドライブ（ＳＳＤ）として実現されている。以下、メモリシステム３をＳＳＤ３と称する。
【００１２】
ホスト２は、ＳＳＤ３にアクセスする情報処理装置（コンピューティングデバイスとも称する）である。ホスト２は、大量且つ多様なデータをＳＳＤ３に保存するサーバ（ストレージサーバとも称する）であってもよいし、パーソナルコンピュータであってもよい。
【００１３】
ＳＳＤ３は、ホスト２として機能する情報処理装置のメインストレージとして使用され得る。ＳＳＤ３は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００１４】
ホスト２とＳＳＤ３とを電気的に相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）（登録商標）、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）等が使用され得る。
【００１５】
ＳＳＤ３は、コントローラ４およびＮＡＮＤ型フラッシュメモリ５を備える。コントローラ４は、Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ（ＳｏＣ）のような回路によって実現され得る。ＳＳＤ３は、揮発性メモリであるランダムアクセスメモリ、例えばＤＲＡＭ６を備えていてもよい。ＤＲＡＭ６は、コントローラ４の外部に設けられていてもよい。あるいは、ＳＲＡＭのようなランダムアクセスメモリがコントローラ４に内蔵されていてもよい。
【００１６】
ＤＲＡＭ６等のランダムアクセスメモリには、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータを一時的に格納するためのバッファ領域であるライトバッファ６１と、システム管理情報６３の格納領域が設けられてもよい。システム管理情報６３は、アドレス変換テーブル（論理アドレス／物理アドレス変換テーブルとも称する）として機能するルックアップテーブル（ＬＵＴと称する）６２のキャッシュ領域と、ＳＳＤ３の処理中に用いられる各種の値や各種のテーブル（例えばリード回数テーブル６６等）の格納領域が設けられてもよい。
【００１７】
ＬＵＴ６２は、メモリシステムの論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間のマッピングを管理する。
【００１８】
リード回数テーブル６６はブロック毎又はブロックより細かい単位、例えばページ毎等のメモリセルのリード回数を記憶する。リード回数はブロックからデータが消去されると、０に戻る。なお、リード回数とリード頻度は等価であるので、リード回数の代わりにリード頻度を用いてもよい。
【００１９】
ＮＡＮＤ型フラッシュメモリ５は、複数のＮＡＮＤ型フラッシュメモリチップ（すなわち、複数のＮＡＮＤ型フラッシュメモリダイ）を含んでいてもよい。各チップは、メモリセル当たりに１ビット又は複数ビットを格納可能に構成されたフラッシュメモリとして実現されている。
【００２０】
メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリの例には、メモリセル当たりに２ビットのデータを格納可能なマルチレベルセル（Multi-Level Cell(ＭＬＣ)、あるいはFour-Level Cell(４ＬＣと称する)）フラッシュメモリ、メモリセル当たりに３ビットのデータを格納可能なトリプルレベルセル（Triple-Level Cell(ＴＬＣと称する)、あるいはEight-Level Cell(８ＬＣと称する)）フラッシュメモリ、メモリセル当たりに４ビットのデータを格納可能なクワッドレベルセル（Quad-Level Cell(ＱＬＣと称する)、あるいはSixteen-Level Cell(１６ＬＣと称する)）フラッシュメモリ、等が含まれる。メモリセル当たりに１ビットを格納するように構成されたフラッシュメモリは、シングルレベルセル（Single-Level Cell(ＳＬＣ又は２ＬＣと称する)）フラッシュメモリと称される。
【００２１】
ＮＡＮＤ型フラッシュメモリ５は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。このＮＡＮＤ型フラッシュメモリ５は、二次元構造のＮＡＮＤ型フラッシュメモリであってもよいし、三次元構造のＮＡＮＤ型フラッシュメモリであってもよい。
【００２２】
ＮＡＮＤ型フラッシュメモリ５のメモリセルアレイは、複数のブロック（ＢＬとも称する）＃０〜＃（ｍ−１）を含む。ブロック＃０〜＃（ｍ−１）のそれぞれは複数のページ（ここではページ＃０〜＃（ｎ−１））を含む。ブロック＃０〜＃（ｍ−１）のそれぞれは、最小の消去単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページ＃０〜＃（ｎ−１）のそれぞれは、同一ワード線に接続された複数のメモリセルを含む。ページ＃０〜＃（ｎ−１）は、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
【００２３】
ブロック＃０〜＃（ｍ−１）のそれぞれに対して許容できるプログラム／消去サイクル（Ｐ／Ｅサイクルと称する）の最大数は限られている。あるブロックの１回のＰ／Ｅサイクルは、このブロック内の全てのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作（プログラム動作とも称する）とを含む。
【００２４】
ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに１ビットのデータが格納されるＳＬＣモード、メモリセル当たりに２ビットのデータが格納されるＭＬＣモード、メモリセル当たりに３ビットのデータが格納されるＴＬＣモード、メモリセル当たりに４ビットのデータ格納されるＱＬＣモードのいずれかで、書き込み動作を実行することができる。
【００２５】
ＮＡＮＤ型フラッシュメモリ５に含まれる複数のブロックは、例えば、ＳＬＣ専用ブロックグループとＴＬＣ／ＱＬＣ共用ブロックグループのいずれかに属するブロックとして構成してもよい。ＳＬＣ専用ブロックグループに属するブロックには、データがＳＬＣモードで書き込まれる。ＴＬＣ／ＱＬＣ共用ブロックグループに属するブロックには、データがＴＬＣモードまたはＱＬＣモードで書き込まれる。複数のブロックのそれぞれについて、どのモードで書き込み動作が実行されるかは、固定されているのではなく、動的に変更されてもよい。例えば、あるときはＳＬＣモードで書き込まれ、他のときは他のモード、例えばＭＬＣモードで書き込まれてもよい。書き込みモードの変更は、ＳＬＣモードとＭＬＣモードの間に限らず、ＳＬＣモード、ＭＬＣモード、ＴＬＣモード、ＱＬＣモードの全ての間の変更も含まれる。
【００２６】
ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに２ビットを格納可能なＭＬＣフラッシュメモリあるいは４ＬＣフラッシュメモリとして実現されていてもよい。
【００２７】
この場合、２ページ分のデータ（下位ページデータおよび上位ページデータ）が、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに２ビットを書き込むことができる。このＭＬＣフラッシュメモリ内の任意の領域（例えば１つ以上の任意のブロック）は、メモリセル当たりに１ビットのみを格納可能な領域、すなわちＳＬＣ領域として使用することができる。
【００２８】
このＳＬＣ領域にデータを書き込む書き込み動作においては、１ページ分のデータ（すなわち、下位ページデータ）のみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、ＳＬＣ領域として使用される各ブロックにおいては、ＳＬＣフラッシュメモリ内の各ブロック（すなわち、ＳＬＣブロック）と同様に、メモリセル当たりに１ビットのみを書き込むことができる。この結果、ＳＬＣ領域として使用される各ブロックは、擬似的なＳＬＣブロックとして機能する。
【００２９】
あるいは、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに３ビットを格納可能なＴＬＣフラッシュメモリあるいは８ＬＣフラッシュメモリ）であってもよい。
【００３０】
この場合、３ページ分のデータ（すなわち、下位ページデータ、ミドルページデータ、および上位ページデータ）が、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに３ビットを書き込むことができる。このＴＬＣフラッシュメモリ内の任意の領域（例えば１つ以上の任意のブロック）は、上述のＳＬＣ領域として使用されてもよいし、メモリセル当たりに２ビットを格納可能なＭＬＣ領域として使用されてもよい。ＭＬＣ領域においては、２ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、ＭＬＣ領域においては、メモリセル当たりに２ビットのみを書き込むことができる。なお、ＳＬＣ領域／ＭＬＣ領域は、ブロックよりも小さい単位（例えばワード線の単位、ブロック内の複数のワード線の集合の単位）で設定されてもよい。
【００３１】
あるいは、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに４ビットを格納可能なＱＬＣフラッシュメモリあるいは１６ＬＣフラッシュメモリであってもよい。
【００３２】
この場合、４ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに４ビットを書き込むことができる。このＱＬＣフラッシュメモリ内の任意の領域（例えば１つ以上の任意のブロック）は、上述のＳＬＣ領域として使用されてもよいし、上述のＭＬＣ領域として使用されてもよいし、あるいは、メモリセル当たりに３ビットを格納可能なＴＬＣ領域として使用されてもよい。ＴＬＣ領域においては、３ページ分のデータのみが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、ＴＬＣ領域においては、メモリセル当たりに３ビットを書き込むことができる。なお、ＳＬＣ領域／ＭＬＣ領域／ＴＬＣ領域は、ブロックよりも小さい単位（例えばワード線の単位、ブロック内の複数のワード線の集合の単位）で設定されてもよい。
【００３３】
各書き込みモードにおけるメモリセル当たりのデータ密度は、ＳＬＣモードでは２値であり、ＭＬＣモードでは４値であり、ＴＬＣモードでは８値であり、ＱＬＣモードでは１６値である。１本のワードラインに接続されるメモリセルにＳＬＣモードで１ページのデータが格納されるとすると、ＭＬＣモードでは２ページ、ＴＬＣモードでは３ページ、ＱＬＣモードでは４ページのデータが格納可能である。ＮＡＮＤ型フラッシュメモリ５に対するデータの読み出し速度および書き込み速度は、データ密度が高いほど遅く、データ密度が低いほど速い。したがって、これら４つのモードでは、ＱＬＣモードにおけるデータの読み出しおよび書き込みが最も遅く、ＳＬＣモードにおける読み出しおよび書き込みが最も速い。
【００３４】
ＮＡＮＤ型フラッシュメモリ５の寿命（例えば許容されるＰ／Ｅサイクル数）は、常に同じデータ密度（ここでは、セル毎のビット数とする）で使い続けるとすると、データ密度が高いほど短く、データ密度が低いほど長い。なお、許容されるＰ／Ｅサイクル数はＳＬＣモードが一番多く、ＭＬＣモード、ＴＬＣモード、ＱＬＣモードになるにつれて少なくなる。つまり、メモリセルの閾値電圧分布に着目すると、データ密度が低いほど、隣りあう状態に対応する閾値電圧分布間のマージンを広くとれ、データ密度が高いほど、閾値電圧分布間のマージンは狭くなる。マージンが広いと、たとえメモリセルに加わるストレスによってこのメモリセルセルの閾値電圧が変動しても、このメモリセルのデータが誤ったデータとして読み出されてしまう確率の上昇を抑えることを可能にする。
【００３５】
なお、ＮＡＮＤ型フラッシュメモリ５は、メモリセル当たりに５ビット以上を格納可能に構成されていてもよい。この場合においても、ＮＡＮＤ型フラッシュメモリ５内の任意の領域は、メモリセル当たりに４ビット以下のデータのみが書き込まれる領域として使用され得る。
【００３６】
各書き込みモードに応じたＳＳＤ３の記憶容量の例を説明する。ＮＡＮＤ型フラッシュメモリ５に含まれる複数のＮＡＮＤ型フラッシュメモリチップが、メモリセル当たりに４ビットを格納可能に構成されたＱＬＣフラッシュメモリとして実現されているとする。ＮＡＮＤ型フラッシュメモリ５にＱＬＣモードでデータが書き込まれる場合、ＳＳＤ３の記憶容量は例えば５１２ＧＢである。バッドブロック等が無い最適な条件下では、ＮＡＮＤ型フラッシュメモリ５にＴＬＣモードでデータが書き込まれる場合のＳＳＤ３の記憶容量は３８４ＧＢであり、ＭＬＣモードでデータが書き込まれる場合のＳＳＤ３の記憶容量は２５６ＧＢであり、ＳＬＣモードでデータが書き込まれる場合のＳＳＤ３の記憶容量は１２８ＧＢである。このように、データがいずれの書き込みモードで書き込まれるかによって、ＮＡＮＤ型フラッシュメモリ５の記憶容量、ひいてはＳＳＤ３の記憶容量は異なる。
【００３７】
コントローラ４は、Ｔｏｇｇｌｅ  ＤＤＲ、Ｏｐｅｎ  ＮＡＮＤ  Ｆｌａｓｈ  Ｉｎｔｅｒｆａｃｅ（ＯＮＦＩ）のようなＮＡＮＤインタフェース１３を介して、ＮＡＮＤ型フラッシュメモリ５に電気的に接続されている。ＮＡＮＤインタフェース１３は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたＮＡＮＤ制御回路として機能する。ＮＡＮＤインタフェース１３は、複数のチャンネルを介して、ＮＡＮＤ型フラッシュメモリ５内の複数のチップにそれぞれ電気的に接続されていてもよい。
【００３８】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたメモリコントローラとして機能する。
【００３９】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能してもよい。このＦＴＬによって実行されるデータ管理には、（１）メモリシステムの論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、（２）ワード線単位のリード／ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、ＳＳＤ３をアドレス指定するためにホスト２によって使用されるアドレスである。この論理アドレスとしては論理ブロックアドレス（ＬＢＡ）を使用してもよい。
【００４０】
論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブルとして機能するルックアップテーブル６２を用いて実行される。コントローラ４は、ルックアップテーブル６２を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータがライトされたＮＡＮＤ型フラッシュメモリ５内の物理記憶位置を示す。ルックアップテーブル６２は、ＳＳＤ３の電源オン時にＮＡＮＤ型フラッシュメモリ５からＤＲＡＭ６にロードされてもよい。
【００４１】
１つのワード線へのデータ書き込みは、１回のＰ／Ｅサイクル当たり１回のみ可能である。このため、コントローラ４は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ４は、ルックアップテーブル６２を更新して、この論理アドレスをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。以下では、ルックアップテーブル６２から参照されているデータ（すなわち論理アドレスと紐付けられているデータ）を有効データと称する。また、どの論理アドレスとも紐付けられていないデータを無効データと称する。有効データは、後にホスト２からリードされる可能性があるデータである。無効データは、もはやホスト２からリードされる可能性が無いデータである。
【００４２】
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション、等が含まれる。
【００４３】
コントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４等を含んでもよい。これらホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４は、バス１０を介して相互接続されていてもよい。
【００４４】
ホストインタフェース１１は、ホスト２から様々なコマンド、例えばＩ／Ｏコマンド、各種制御コマンド、等を受信する回路として機能する。Ｉ／Ｏコマンドには、ライトコマンド、リードコマンド等が含まれ得る。
【００４５】
ＤＲＡＭインタフェース１４は、ＤＲＡＭ６の電気的なアクセスを制御するように構成されたＤＲＡＭコントローラとして機能する。ＤＲＡＭ６の記憶領域は、ライトバッファ６１、ルックアップテーブル６２、システム管理情報６３等を格納するために利用される。
【００４６】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、およびＤＲＡＭインタフェース１４を制御するように構成されたプロセッサである。ＣＰＵ１２は、図示しないＲＯＭ等に格納されている制御プログラム（ファームウェア）を実行することによって様々な処理を行う。このＣＰＵ１２は、上述のＦＴＬ処理に加え、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行することができる。ＣＰＵ１２の動作は、ＣＰＵ１２によって実行される上述のファームウェアによって制御される。なお、ＦＴＬ処理およびコマンド処理の一部または全部は、コントローラ４内の専用ハードウェアによって実行してもよい。
【００４７】
ＣＰＵ１２は、モード切替部１２１、リード制御部１２２、ライト制御部１２３、ガベージコレクション（ＧＣ）制御部（ＧＣ制御部と称する）１２４、リフレッシュ制御部１２５として機能することができる。なお、モード切替部１２１、リード制御部１２２、ライト制御部１２３、ＧＣ制御部１２４、リフレッシュ制御部１２５の一部または全部も、コントローラ４内の専用ハードウェアによって実現してもよい。
【００４８】
モード切替部１２１は、ホスト２から受信されるデータ（書き込みデータ）をＮＡＮＤ型フラッシュメモリ５に書き込むための書き込みモードを、リード回数テーブル６６が記憶するリード回数に応じて制御することができる。この書き込みモードの制御は、ガベージコレクション動作によりＮＡＮＤ型フラッシュメモリ５にデータを書き込む際にも実行される。書き込み方法は、リードディスターブストレスの影響を低減できる第１方法と、それ以外の第２方法を含む。第１方法、第２方法の詳細は後述する。
【００４９】
ライト制御部１２３は、書き込みデータを誤り訂正符号化し、符号化データをＮＡＮＤ型フラッシュメモリ５に書き込む。
【００５０】
リード制御部１２２は、ＮＡＮＤ型フラッシュメモリ５から読み出したデータに誤り訂正復号し、読み出したデータの誤りを訂正できる。
【００５１】
誤り訂正符号化及び誤り訂正復号はコントローラ４内の専用ハードウェアによって実現してもよい。
【００５２】
ＧＣ制御部１２４は適宜なタイミングでガベージコレクション（コンパクションとも称する）を実行する。
【００５３】
リフレッシュ制御部１２５は、ＮＡＮＤ型フラッシュメモリ５の各ブロック＃０〜＃ｍ−１のリフレッシュ動作を、リード回数テーブル６６が記憶する回数に応じて制御することができる。リフレッシュ動作の詳細は後述する。
【００５４】
［リードディスターブストレス］  
ＮＡＮＤ型フラッシュメモリ５のメモリセルが記憶しているデータの信頼性がメモリセルサイズの微細化により低下することを説明する。微細化により、１つのメモリセルに記憶される電子の数が減少すると、隣接メモリセル間の干渉ノイズの影響が相対的に増大する。そのため、一つのメモリセルからデータを読み出す際にその周辺のメモリセルにストレスがかかり、記録したデータが失われていく可能性がある。データリードはワード線とビット線により選択されたメモリセルに対して行われるが、選択されたメモリセルだけではなく非選択のメモリセルの一部（選択セルの周辺のメモリセル）にも閾値を超える電圧が印加される。そのため、選択セルの周辺のメモリセルでも弱い書き込み状態となり、浮遊ゲート内の電子の数が増加し、閾値電圧が高くなるように変化するリードディスターブという現象が生じる。特定のメモリセルに対するデータリードが繰り返されると、周辺のメモリセルがリードディスターブストレスを受け、その閾値電圧が変化し、周辺のメモリセルからデータを正常に読み出せなくなる。リードディスターブ現象により、フラッシュメモリのビットエラー率（ＢＥＲと称する）が増加するので、メモリシステムの信頼性が低下する。
【００５５】
リード対象のワード線に接続されるメモリセルはリードディスターブストレスを殆ど受けず、リード対象のワード線に隣接する２本のワード線に接続されるメモリセルがリードディスターブストレスを最も多く受けることがある。これらの３本以外のワード線は一様にリードディスターブストレスを受ける。なお、リードディスターブストレスは１つのブロック内に限定され、他のブロックのメモリセルには及ばない。このように、リードディスターブストレスの影響は、リード対象のワード線に接続されているメモリセルと、リード対象のワード線に隣接する２本のワード線に接続されているメモリセルと、これら以外のワード線に接続されているメモリセルとで異なる場合、何らかの対策が必要である。
【００５６】
例えば、ｎ番目のワード線に接続されるメモリセルについてのみリードが１０ｋ回行われた（他のワード線に接続されるメモリセルについてのリードは行われなかった）とする。ｋは１０００を示す。あるブロック内のあるメモリセルについてのリードによりそのブロック内の全てのメモリセルがリードディスターブストレスを受ける。しかし、ｎ番目のワード線に接続されるメモリセルは、リードディスターブストレスを最も弱く受ける。（ｎ−１）番目、（ｎ＋１）番目のワード線に接続されるメモリセルは、リードディスターブストレスを最も強く受ける。この結果、リード対象のｎ番目のワード線に接続されるメモリセルのＢＥＲが最も低く、リード対象のｎ番目のワード線に隣接する（ｎ−１）番目、（ｎ＋１）番目の２本のワード線に接続されるメモリセルのＢＥＲが最も高く、これら以外のワード線に接続されるメモリセルのＢＥＲはリード対象のワード線に接続されるメモリセルのＢＥＲよりやや高くなる。
【００５７】
［第１のリードディスターブストレス対策］  
このようにリードディスターブストレスはリード回数に応じているので、リード回数に基づいてリードディスターブストレスの影響を判断できる。あるブロックが受けたリードディスターブストレスの影響は、当該ブロックをリフレッシュすることによりリセットすることができる。リフレッシュ制御部１２５によるリフレッシュ動作を説明する。
【００５８】
リフレッシュ制御部１２５は、リードディスターブストレスの影響を受けたブロックのデータを他のブロックにコピーした後、リードディスターブストレスの影響を受けたブロックのデータを消去する。このコピーと消去を併せて移動と称する。ただし、消去は実際に物理的に消去されることに限らず、当該ブロック内のデータが論理的に無効化されることでもよい。例えば、ユーザデータについては、アドレス変換テーブルを更新することによって、リフレッシュ対象ブロック内のデータがアドレス変換テーブルから参照されなくなった時に移動完了とみなすことができる。当該ブロック内のデータの消去（すなわち、当該ブロックに対するイレーズ処理）はその後の任意のタイミングで実施すればよい。データのコピー先の他のブロックが無い場合、リフレッシュ制御部１２５は、ＮＡＮＤ型フラッシュメモリ５内のブロックの中から有効データを含まないフリーブロックを探す。もしも、フリーブロックが無い場合は、ＧＣ制御部１２４はガベージコレクションを実行し、フリーブロックを生成させる。フリーブロック内のデータが消去されて書き込み先ブロックとして割り当てられ、書き込み先ブロックがデータのコピー先のブロックとされる。
【００５９】
第１の対策では、ＤＲＡＭ６のシステム管理情報６３内のリード回数テーブル６６が利用される。リード制御部１２２はメモリセルのリード回数をブロック毎に集計したブロック毎のリード回数をリード回数テーブル６６に記憶させる。リード回数テーブル６６の一例を図２（ａ）に示す。
【００６０】
リフレッシュ制御部１２５の処理の一例を図２（ｂ）に示したフローチャートを参照して説明する。リフレッシュ制御部１２５はリード回数テーブル６６を適時参照し（ステップＳ１０２）、ステップＳ１０４でブロックのリード回数が基準回数を超えたブロックがあるか否かを判定する。リード回数の増加によりリードディスターブストレスの影響を受けた記憶データの信頼性が低下するので、基準回数は記憶データの信頼性が許容レベル以下まで低下する直前のリード回数である。このようなブロックが存在しないと判定される場合、処理はステップＳ１０２に戻る。基準回数は１００ｋ等でもよい。ブロック＃１のリード回数は１００ｋなので、ブロック＃１内のいずれかのメモリセルについて次回のリードが行われると、ブロック＃１のリード回数は１００ｋ＋１となり、ステップＳ１０４の判定基準回数（１００ｋ）を超える。
【００６１】
ステップＳ１０４でブロックのリード回数が判定基準回数（１００ｋ）を超えるブロックが存在すると判定する場合、リフレッシュ制御部１２５はステップＳ１０６でそのようなブロックをリフレッシュする。
【００６２】
上述したように、いずれかのブロック、例えばブロック＃１のリード回数が基準回数を超える場合、ブロック＃１のデータは他のブロックに移動され、ブロック＃１のデータは消去される。このように、リードディスターブストレスを受けたブロックは、リードディスターブストレスの影響により信頼性が許容レベル以下まで低下する前にリフレッシュされるので、リードディスターブストレスの影響がリセットされる。ブロック＃１のデータの移動先である書き込み先ブロックはデータが消去済みのブロックであるので、リード回数は０であり、データは移動先のブロックで信頼性良く保持される。
【００６３】
第１の対策によれば、リフレッシュによりリードディスターブストレスの影響が取り除かれるので、記憶データの信頼性が低下することが防止される。
【００６４】
［第２のリードディスターブストレス対策］
第２のリードディスターブストレス対策のリフレッシュ制御部１２５の処理の一例を図３に示したフローチャートを参照して説明する。
【００６５】
図２（ｂ）に示した第１の対策と同様に、リフレッシュ制御部１２５はリード回数テーブル６６を適時参照し（ステップＳ１０２）、ステップＳ１０４でブロックのリード回数が基準回数を超えたブロックがあるか否かを判定する。このようなブロックが存在しないと判定される場合、処理はステップＳ１０２に戻る。
【００６６】
このようなブロックが存在すると判定する場合、第１の対策とは異なり、リフレッシュ制御部１２５はリフレッシュを直ぐには開始せず、ＮＡＮＤ型フラッシュメモリ５の記憶データがどの程度誤っているかを示す指標、例えばビットエラー率（ＢＥＲ）を調べる。そのため、ステップＳ１２２で、リフレッシュ制御部１２５は当該ブロックの全ページをスキャンリードする。スキャンリードとは、ページ毎にデータをリードし、ページ毎の誤りビット数を求めるものである。リードの際、誤り検出と訂正が行われるので、ページ毎の誤りビット数が求められる。ページ毎の誤りビット数とＢＥＲとは関係があるので、誤りビット数を閾値と比較することにより、ＢＥＲが閾値を超えたか否かが判定できる。スキャンリード中に誤りビット数が基準値を超えるページが存在することが分かると、スキャンリードは打ち切られ、リフレッシュが実行される。実際の誤りビット数のカウントは誤り訂正符号化により保護されているデータサイズになり、ページ単位のカウントに限定されない。
【００６７】
リフレッシュ制御部１２５はステップＳ１２４で、各ページの誤りビット数を基準数と比較し、誤りビット数が基準数を超えたページがあるか否かを判定する。全てのページの誤りビット数が基準数を超えないと判定される場合、処理はステップＳ１０２に戻る。ことき、当該ブロックに対してステップＳ１０４で用いられる基準回数を変更（例えば、元の基準回数よりは大きく、元の基準回数の２倍よりは小さい値に変更）してもよい。これは、そのブロックが受けたリードディスターブストレスの影響は少ないと考えられるからである。
【００６８】
リフレッシュ制御部１２５は誤りビット数が基準数を超えていることを検出すると、当該ブロックはリードディスターブストレスを受けて記憶データの信頼性が低下したと判断できるので、リフレッシュを開始する。誤りビット数が基準数を超えたページが１つでもあると判定する場合、リフレッシュ制御部１２５はステップＳ１０６で当該ブロックをリフレッシュする。
【００６９】
第１の対策では、あるブロックのリード回数が基準回数を超えると、当該ブロックがリフレッシュされるが、第２のリードディスターブストレス対策では、あるブロックのリード回数が基準回数を超えても、ブロック内の少なくとも１ページの誤りビット数が基準数を超えない場合、当該ブロックはリフレッシュされない。すなわち、第２のリードディスターブストレス対策の方がリフレッシュの実行頻度は低い。リフレッシュ又はスキャンリードの実行中はホスト２がＳＳＤ３にアクセスできないので、これらの動作はＳＳＤ３の性能（スループットやQuality of Service（ＱｏＳ））を低下させる。
【００７０】
また、リフレッシュはデータの消去を伴うので、リフレッシュが頻繁に行われると、Ｐ／Ｅサイクル数が増加する。そのため、ＮＡＮＤ型フラッシュメモリ５のＰ／Ｅサイクル数がＮＡＮＤ型フラッシュメモリ５で保証されているＰ／Ｅサイクルの最大数を超えてしまう恐れがある。これはメモリシステムの寿命を短くすることにつながる。
【００７１】
第２のリードディスターブストレス対策はリフレッシュの実行頻度が低いので、第１の対策に比べてＳＳＤ３の性能が低下せず、かつ寿命が短縮せずに、信頼性を維持することができる。
【００７２】
［第３のリードディスターブストレス対策］
上述したようにリードディスターブ対策としてのリフレッシュ又はリフレッシュの実施の判断のためのスキャンリードはＳＳＤ３の性能を低下させる、又はＳＳＤ３の寿命を短くすることになる。次に、リフレッシュやスキャンリードの頻度を抑える他の例を説明する。リードディスターブストレスは、特定のワード線に接続されるメモリセルについてのリードが集中的になされることが原因であり、リード回数が少ないメモリセルの周辺のメモリセルはリードディスターブストレスの影響を受けにくい。しかし、一部のメモリセルがリードディスターブストレスを受けても、第１、第２の対策では、ブロック全体がリフレッシュされる。そのため、リードが多数回行われるメモリセルが多数のブロックに分散している場合、多数のブロックがリフレッシュされる。
【００７３】
第３の対策では、リード頻度が同程度のメモリセルに書かれていたデータが同じブロックに纏められるようにデータが移動される。これにより、一部のメモリセルのみがリードディスターブストレスを受けることによるブロック全体のリフレッシュが防止される。リフレッシュによる書き換え回数の増加を抑制することができ、リードディスターブストレスが起因のリフレッシュによる寿命低下を抑制することができ、信頼性の低下を抑制することができる。また、リフレッシュの頻度が低下するので、ホスト２によるＳＳＤ３へのアクセスがリフレッシュにより妨げられる頻度が低下し、性能の低下率を下げることができる。
【００７４】
図４は第３の対策の原理を示す図である。ＮＡＮＤ型フラッシュメモリ５は５個のブロック＃０〜＃４からなり、各ブロックはそれより細かい単位、例えば５個のページ＃０〜＃４からなるとする。ここでは、リード回数テーブル６６はメモリセルのリード回数をブロック毎、ページ毎に集計したリード回数を記憶する。
【００７５】
図４（ａ）に示すように、５個のブロック＃０〜＃４のそれぞれはリード回数が異なるページを含み、リード回数が多いページが５個のブロック＃０〜＃４に均等に分散しているとする。ブロック＃０ではページ＃１のリード回数が１００ｋで、残りのページのリード回数が０ｋである。同様に、ブロック＃１ではページ＃０のリード回数が１００ｋで、ブロック＃２ではページ＃３のリード回数が１００ｋで、ブロック＃３ではページ＃０のリード回数が１００ｋで、ブロック＃４ではページ＃４のリード回数が１００ｋで、残りのページのリード回数が０ｋである。
【００７６】
この状況で第２のリードディスターブストレス対策が実施されるとする。図３のステップＳ１０４の基準回数は１００ｋであるとする。図３のステップＳ１２４の誤りビット数の基準数は、１ワード線が隣接ワード線の１００ｋ回のリードによるリードディスターブストレスを受けた時の誤りビット数とする。ＮＡＮＤ型フラッシュメモリ５がＳＬＣフラッシュメモリの場合は、１本のワード線に接続されたメモリセルに１ページ分のデータが書き込まれ、ＮＡＮＤ型フラッシュメモリ５がＳＬＣフラッシュメモリ以外の場合は、１本のワード線に接続されたメモリセルに複数のページ分のデータが書き込まれる。ここでは、ＮＡＮＤ型フラッシュメモリ５がＳＬＣフラッシュメモリであるとする。そのため、図３のステップＳ１２４の判定基準は、ページの誤りビット数がリード回数が１００ｋ回に達した時に相当する値にまで悪化することである。
【００７７】
図４（ａ）に示すように、５個のブロックのリード回数の累計が５００ｋに達したＮＡＮＤ型フラッシュメモリ５では、この後数回のリードが実行されると、５個のブロック＃０〜＃４のいずれかのページのリード回数が１００ｋ＋１となり、ステップＳ１０４の判定がイエスとなり、ステップＳ１２２でスキャンリードが実行される。ページのリード回数が１００ｋ＋１であるので、ステップＳ１２４の判定もイエスとなり、リフレッシュも実行される。数回のリードにより、５個のブロック＃０〜＃４全てがリフレッシュされる。すなわち、第２のリードディスターブストレス対策が実施されたＮＡＮＤ型フラッシュメモリ５は５００ｋ＋数回のリードの間に５回リフレッシュされる。
【００７８】
図４（ｂ）は、図４（ａ）に示す状態のＮＡＮＤ型フラッシュメモリ５について第３の対策を実施する場合のページ毎のリード回数を示す。図４（ａ）では、リード回数が１００ｋであるページが５個あるので、リード回数の多い５個のページのデータが１つのブロックに移動され、リード回数が１００ｋであるデータが１つのブロックに纏められる。すなわち、ブロック＃０のページ＃１のデータと、ブロック＃１のページ＃０のデータと、ブロック＃２のページ＃３のデータと、ブロック＃３のページ＃０のデータと、ブロック＃４のページ＃４のデータがブロック＃２に移動される。これにより、ブロック＃２の５個のページに記憶されているデータのリード回数は全て１００ｋとなる。この例では、他のブロック＃０、＃１、＃３、＃４の５個のページに記憶されているデータのリード回数は全て０ｋとなる。
【００７９】
図４（ｂ）に示すように、５個のブロックのリード回数の累計が５００ｋに達したＮＡＮＤ型フラッシュメモリ５では、この後数回のリードが実行されると、ブロック＃２のいずれかのページのリード回数が１００ｋ＋１となり、ステップＳ１０４の判定がイエスとなり、ステップＳ１２２でスキャンリードが実行される。ページのリード回数が１００ｋ＋１であるので、ステップＳ１２４の判定もイエスとなり、リフレッシュも実行される。しかし、ブロック＃２以外のブロックでは数回のリードが実行されても、スキャンリードとリフレッシュが実行されない。ブロック＃２以外のブロックではこの後１００ｋ回のリードが実行されると、スキャンリードとリフレッシュが実行される。すなわち、第３の対策が実施されたＮＡＮＤ型フラッシュメモリ５は５００ｋ＋数回のリードの間にスキャンリードとリフレッシュが１回しか実行されない。
【００８０】
あるブロックに纏められるデータの単位はページに限らず、より大きい単位又はより小さい単位でもよい。ＮＡＮＤ型フラッシュメモリ５がＳＬＣフラッシュメモリ以外の場合、１本のワード線に接続されたメモリセルに複数ページ分のデータが書き込まれる。図５に示すように、１ブロックは多数のワード線（ＷＬ）＃０、…を含み、１ワード線は多数のページ（Ｐａｇｅ）＃０、…を含み、１ページは複数のクラスタを含む。各クラスタは１個（以下）の論理アドレス範囲に関連づけられたデータを含む。
【００８１】
図６は、第３の対策において、リード回数が同程度のワード線に関するデータを同一ブロックに纏める一例を示す。各ブロックは４８本のワード線からなるとする。この場合は、システム管理情報６３内のリード回数テーブル６６の代わりにメモリセルのリード回数をブロック毎、ワード線毎に集計した図７に示すようなブロック／ワード線／リード回数テーブル６６Ａが用いられる。
【００８２】
リードディスターブストレスの影響は、リードされたワード線＃ｎの隣接ワード線＃（ｎ−１）、＃（ｎ＋１）で最も強く、ワード線＃ｎで最も弱く、その他のワード線では一様である。ここでは、隣接ワード線によるリードディスターブを１００ｋ回受けたときに、スキャンリードが必要になるとする。たとえば、リード回数を管理する管理単位がブロック単位の場合と管理単位がワード線単位の場合とを考える。１ブロックが５ワード線からなり、アクセスパターンはブロック内の５つのワード線が２０ｋ回リードされると想定する。管理単位がブロック単位の場合、スキャンリードを開始するためのリード回数の基準回数は１００ｋ回として設定する。このとき、ブロック内のどのワード線がアクセスされてもリードカウンタが増加するため、５×２０ｋ回でリード回数は１００ｋ回となり、スキャンリードが開始される。一方、管理単位がワード線単位の場合、スキャンリードを開始するリード回数の基準回数は５０ｋ回とする。このとき、ワード線毎にリードカウンタが増加するため、ワード線毎のリード回数は２０ｋ回であり、スキャンリードは開始しない。なお、管理単位がワード線単位の場合、スキャンリードを開始するリード回数の基準回数を５０ｋ回としているのは、あるワード線＃ｋについて、隣接するワード線＃（ｋ−１）で５０ｋ回、ひとつの隣接するワード線＃（ｋ＋１）で５０ｋ回のリードが行われたときに、ワード線＃ｋで１００ｋ回分のリードディスターブを受けることがあるからである
しかし、ワード線単位でリード回数を管理すると、カウンタのためのメモリ量が増えるので、メモリ量削減のためには、ブロック単位でリード回数を観測・管理してもよい。その場合、ブロック単位のリード回数に基づいてリード回数が多いワード線が存在しそうな疑わしいブロックを抽出する。これらの疑わしいブロックについては、ブロック内のワード線単位でリード回数を観測・管理する。さらに、ワード線単位のリード回数に基づいてリード回数が多いページが存在しそうな疑わしいワード線を抽出し、これらの疑わしいワード線については、ワード線内のページ単位でリード回数を観測・管理してもよい。さらに、ページ単位のリード回数に基づいてリード回数が多いクラスタが存在しそうな疑わしいページを抽出し、これらの疑わしいページについては、ページ内のクラスタ単位でリード回数を観測・管理してもよい。なお、１ページより細かい物理アドレス空間上の概念であるクラスタに対応する論理アドレス空間上の概念として論理アドレス（ＬＢＡ）範囲がある。ページ単位のリード回数に基づいてリード回数が多いクラスタが存在しそうな疑わしいブロックを抽出し、これらの疑わしいブロックについては、当該ブロックに含まれるクラスタそれぞれに関連付けられたＬＢＡ範囲の単位でリード回数を観測・管理してもよい。なお、リード回数を観測・管理するＬＢＡ範囲は、クラスタ相当のサイズ（例えば、４ＫＢ）でなくともよい。
【００８３】
図８は、第３の対策において、リード回数が同程度のページに関するデータを同一ブロックに纏める一例を示す。各ブロックは５６４個のページからなるとする。システム管理情報６３内のリード回数テーブル６６の代わりにメモリセルのリード回数をブロック毎、ページ毎に集計したブロック／ページ／リード回数テーブル（図示せず）が用いられる。
【００８４】
図９は、第３の対策において、リード回数が同程度のクラスタに関するデータを同一ブロックに纏める一例を示す。上述したようにクラスタは１ページより細かい物理アドレス空間上の概念である。論理アドレス（ＬＢＡ）範囲は論理アドレス空間上の概念である。１クラスタに対応付けられるＬＢＡ範囲があり、１ＬＢＡ範囲は例えば４ＫＢのデータを格納する。各ブロックは２２５６個のクラスタあるいはＬＢＡ範囲からなるとする。システム管理情報６３内のリード回数テーブル６６の代わりにメモリセルのリード回数をブロック毎、クラスタあるいはＬＢＡ範囲毎に集計したブロック／クラスタ／ＬＢＡ範囲／リード回数テーブル（図示せず）が用いられる。
【００８５】
図６、図８、又は図９に示すような第３の対策を実行するリフレッシュ制御部１２５の処理の一例を、図１０に示すフローチャートを参照して説明する。リード頻度が同程度のメモリセルに書かれていたデータを同じブロックに纏めるためのデータ移動のタイミングは任意に決められるが、ここではガベージコレクションの際にデータ移動が行われるとする。
【００８６】
第１、第２の対策と同様に、リフレッシュ制御部１２５はリード回数テーブル６６を適時参照し（ステップＳ１０２）、ステップＳ１０４でブロックのリード回数が基準回数を超えたブロックがあるか否かを判定する。このようなブロックが存在しないと判定される場合、処理はステップＳ１０２に戻る。
【００８７】
このようなブロックが存在すると判定する場合、リフレッシュ制御部１２５はステップＳ１３２で当該ブロックを監視対象ブロックとする。監視対象ブロックについてのリード回数の管理単位は、非監視対象ブロックについての管理単位より小さくてもよい。例えば、非監視対象ブロックでは、リード回数テーブル６６において、ブロック単位でリード回数を観測し、監視対象ブロックでは、リード回数テーブル６６において、ブロック単位よりも小さい単位（例えばサブブロック単位）でリード回数を観測する。これにより、当該ブロックに含まれる全データのうち、どのサブブロックに含まれるデータのリード回数が、ほかのサブブロックに含まれるデータのリード回数よりも多いか判断する。複数のブロックが監視対象ブロックとされ得る。監視対象ブロックがフリーブロックになるとき、監視対象ブロックは非監視対象ブロックへと遷移する。ＧＣ制御部１２４はステップＳ１３４でガベージコレクションの開始タイミングであるか否か判定する。ＧＣ制御部１２４はフリーブロック数が閾値未満である場合にガベージコレクションの開始タイミングであると判別してもよい。
【００８８】
ＧＣ制御部１２４は、ガベージコレクションの開始タイミングであると判定する場合、ステップＳ１３８で、ＧＣ制御部１２４は、ガベージコレクションの実行中に、監視対象ブロックの中のリード頻度（リード頻度は、例えばリード回数から判断される、あるいはＬＢＡ範囲毎にホストから通知される）が同程度のワード線（又はページ又はクラスタ又はＬＢＡ範囲）のデータを１つの書き込み先ブロックに移動する。その後、リフレッシュ制御部１２５は、ステップＳ１０４に戻り、ブロックのリード回数の判定を再度行う。図４に示したように、リード回数が同定度のデータを同一のブロックに纏めることにより、スキャンリードとリフレッシュの実行頻度が低下する。
【００８９】
ＧＣ制御部１２４は、ステップＳ１３４でガベージコレクションの開始タイミングでないと判定する場合、リフレッシュ制御部１２５は、ステップＳ１４２で全ての監視対象ブロックの全ページをスキャンリードし、ページ毎の誤りビット数を調べる。リフレッシュ制御部１２５は、ステップＳ１４４で誤りビット数が基準数を超えたページを含むブロックがあるか否かを判定する。そのようなブロックがないと判定される場合、処理はステップＳ１０２に戻る。リフレッシュ制御部１２５は、そのようなブロックがあると判定し場合、ステップＳ１０６で当該ブロックをリフレッシュする。
【００９０】
次に、ガベージコレクション以外の時のデータ移動を説明する。データ移動のためには、ブロックがどの程度リードディスターブストレスの影響を受けているかを調べ、リードディスターブストレスの影響を受けていそうなブロックを監視対象ブロックに指定しておく必要がある。図１１、図１２を参照して、監視対象ブロックの指定方法の２つの例を説明する。図１１、図１２の処理は適宜なタイミングで繰り返し実行されている。
【００９１】
図１１の例では、リフレッシュ制御部１２５は、ステップＳ２０２で、リード回数テーブル６６を適時参照し、ステップＳ２０４で、非監視対象ブロックの中でリード回数が基準回数Ｘを超えたブロックがあるか否かを判定する。非監視対象ブロックとは監視対象ブロック以外のブロックであってデータを保持している全てのブロックである。このようなブロックが存在しないと判定される場合、処理はステップＳ２０２に戻る。基準回数Ｘはスキャンリードを開始する条件であり、ブロック、サブブロック（ワード線、ページ、クラスタ等）等の管理単位により異なる値を用いてもよい。例えば、管理単位がワード線の場合は基準回数Ｘａ、管理単位がページの場合は基準回数Ｘｂとされる。
【００９２】
このようなブロックが存在すると判定する場合、リフレッシュ制御部１２５は、ステップＳ２０６で、そのブロックの全ページをスキャンリードし、ページ毎の誤りビット数を求める。リフレッシュ制御部１２５は、ステップＳ２０８で、各ページの誤りビット数を基準数と比較し、誤りビット数が基準数を超えたページがあるか否かを判定する。全てのページの誤りビット数が基準数を超えないと判定される場合、リフレッシュ制御部１２５は、ステップＳ２１０で、当該ブロックを監視対象ブロックに指定する。この後、処理はステップＳ２０２に戻る。このとき、当該ブロックに対してステップＳ２０４で用いられる基準回数Ｘを変更（例えば、元のＸよりは大きく、元のＸの２倍よりは小さい値に変更）してもよい。
【００９３】
誤りビット数が基準数を超えたページがあると判定される場合、リフレッシュ制御部１２５は、ステップＳ２１２で、当該ブロックをリフレッシュする。すなわち、当該ブロックのデータを書き込み先ブロックに移動する。リフレッシュ制御部１２５は、ステップＳ２１４で、リフレッシュによる当該ブロックのデータの書き込み先ブロックを監視対象ブロックに指定する。この後、処理はステップＳ２０２に戻る。
【００９４】
図１１に示す判断基準を満たすブロック以外に図１２に示す判断基準を満たすブロックも監視対象ブロックとして指定される。図１２の例では、リフレッシュ制御部１２５は、ステップＳ３０２で、リード回数テーブル６６を参照し、ステップＳ３０４で、監視対象ブロックの中でリード回数が基準回数Ｙを超えたブロックがあるか否かを判定する。このようなブロックが存在しないと判定される場合、処理はステップＳ３０２に戻る。なお、非監視対象ブロックについてもブロック未満の単位でリード回数を観測する場合は、非監視対象ブロックについてもステップＳ３０４およびその後のステップの処理の対象としてもよい。
【００９５】
このようなブロックが存在すると判定する場合、リフレッシュ制御部１２５は、ステップＳ３０６で、そのブロックの全ページをスキャンリードし、ページ毎の誤りビット数を求める。リフレッシュ制御部１２５は、ステップＳ３０８で、各ページの誤りビット数を基準数と比較し、誤りビット数が基準数を超えたページがあるか否かを判定する。全てのページの誤りビット数が基準数を超えないと判定される場合、処理はステップＳ３０２に戻る。このとき、当該ブロックに対してステップＳ３０４で用いられる基準回数Ｙを変更（例えば、元のＹよりは大きく、元のＹの２倍よりは小さい値に変更）してもよい。
【００９６】
誤りビット数が基準数を超えたページがあると判定される場合、リフレッシュ制御部１２５は、ステップＳ３１０で、当該ブロック(リフレッシュ対象ブロック)を移動元ブロックとして選定し、移動元ブロックに含まれる各サブブロックのデータを、各サブブロックのリード頻度に応じて選択した移動先ブロックに移動させる。移動元ブロックには、リフレッシュ対象ブロックのほか、さらに、監視対象ブロックのうち、後述する条件（たとえば、リード頻度が高いページを最も多く含む）を満たすようなブロックが含まれる。リフレッシュ制御部１２５は、ステップＳ３１２で、リード頻度が高いサブブロックのデータの移動先ブロックを監視対象ブロックに指定する。
【００９７】
図１３〜図１８を参照してリード頻度が異なるデータをリード頻度毎に１つのブロックに纏める処理の例を説明する。図１４〜図１８はデータ移動の際の移動元ブロック（移動対象ブロックと称することもある）と移動先ブロックを説明するための図であり、図１３はデータ移動処理を示すフローチャートである。図１３ではデータ移動のタイミングは、ガベージコレクション時ではなく、スキャンリードの結果、誤りビット数が基準数を超えたページが存在するリフレッシュ対象ブロックが検出された時である。図１４のブロック＃０がリフレッシュ対象ブロックとして検出されたとする。ここでは、移動するデータの単位はページとする。そのため、リード回数テーブル６６はブロック／ページ／リード回数テーブルとされる。データの移動先である書き込み先ブロックはリード頻度が高いページのデータの移動先ブロックと、それ以外のデータの移動先ブロックに分かれている。
【００９８】
図１３に示すように、第１、第２の対策と同様に、リフレッシュ制御部１２５はリード回数テーブル６６を適時参照し（ステップＳ１０２）、ステップＳ１０４でブロックのリード回数が基準回数を超えたブロックがあるか否かを判定する。このようなブロックが存在しないと判定される場合、処理はステップＳ１０２に戻る。
【００９９】
このようなブロックが存在すると判定する場合、リフレッシュ制御部１２５はステップＳ１５２でブロック／ページ／リード回数テーブルを参照して全監視対象ブロックの中の全ページのリード回数からリード頻度を調べ、リフレッシュ対象ブロックとリード頻度の高いページを多く含む監視対象ブロックを移動元ブロックとして選定する。図１１、図１２の処理により、図１４に示すブロック＃０〜＃４が移動元ブロックとして選定されたとする。ステップＳ１５２の実行後、ブロックの各ページのリード頻度は図１４に示すような状態になっているとする。リード頻度はいくつか、例えば高頻度とそれ以外に分類される。リード頻度が高いページの数は、ブロック＃０では４、ブロック＃１では２、ブロック＃２では１、ブロック＃３では２、ブロック＃４では３である。
【０１００】
リフレッシュ制御部１２５はステップＳ１５４でリフレッシュ対象ブロック（ここでは、＃０）を最初に処理する移動元ブロックとして、移動元ブロックの全ページのデータを各ページのリード頻度に応じた移動先ブロックへ移動する。図１４の状態では、ブロック＃０のリード頻度が高い４ページのデータがブロック＃１００に移動され、ブロック＃０のリード頻度が低い６ページのデータがブロック＃１０１に移動される。移動後の状態を図１５に示す。
【０１０１】
リフレッシュ制御部１２５はステップＳ１５６で移動元ブロックにデータが残っているか否かを判定する。図１５の状態では、ブロック＃１〜＃４にデータが残っている。リフレッシュ制御部１２５は移動元ブロックにデータが残っていると判定する場合、ステップＳ１５８で移動先ブロック＃１００、＃１０１、＃１０２、＃１０３はデータが書かれていない消去済みページを含むか否かを判定する。リフレッシュ制御部１２５は移動先ブロックが消去済みページを含まないと判定する場合、ステップＳ１６２を実行する。
【０１０２】
リフレッシュ制御部１２５は、移動先ブロックが消去済みページを含むと判定する場合、ステップＳ１５４を再度実行し、監視対象ブロックの中から選択された移動元ブロックのデータを移動先ブロックに移動する。図１５の状態では、ブロック＃４が移動元ブロックとされる。移動元ブロック＃４のリード頻度が高い３ページのデータがブロック＃１００に移動され、ブロック＃４のリード頻度が低い７ページのデータがブロック＃１０１、＃１０２に移動される。移動後の状態を図１６に示す。なお、ステップＳ１５４の実行時に必ずしも全てのページのデータを移動する必要はない。例えば、リード頻度が高くないデータは移動しなくてもよい。また、ステップＳ１５４の２回目以降の実行時にリード頻度が高くないページのデータは移動しなくてもよい。
【０１０３】
リフレッシュ制御部１２５はステップＳ１５６で移動元ブロックにデータが残っているか否かを判定する。図１６の状態では、ブロック＃１〜＃３にデータが残っており、移動先ブロックは消去済みページを含むので、リフレッシュ制御部１２５はステップＳ１５４を再度実行し、移動元ブロックのデータを移動先ブロックに移動する。図１６の状態では、ブロック＃１が移動元ブロックとされる。移動元ブロック＃１のリード頻度が高い２ページのデータがブロック＃１００に移動され、ブロック＃１のリード頻度が低い８ページのデータがブロック＃１０２、＃１０３に移動される。移動後の状態を図１７に示す。
【０１０４】
リフレッシュ制御部１２５はステップＳ１５６で移動元ブロックにデータが残っているか否かを判定する。図１７の状態では、ブロック＃２、＃３にデータが残っており、移動先ブロックは消去済みページを含むので、リフレッシュ制御部１２５はステップＳ１５４を再度実行し、移動元ブロックのデータを移動先ブロックに移動する。図１７の状態では、ブロック＃３が移動元ブロックとされる。頻度が高いデータ用の移動先ブロック＃１００の残りページ数は１なので、ブロック＃３のリード頻度が高い２ページのデータが高頻度用の移動先ブロック＃１００と低頻度用の移動先ブロック＃１０３に移動され、ブロック＃３のリード頻度が低い８ページのデータが低頻度用の移動先ブロック＃１０３に移動される。移動後の状態を図１８に示す。
【０１０５】
図１８の状態では、移動元ブロック＃２にデータが残っているが、移動先ブロック（ここでは、移動先ブロックとして１ブロックが用意されていると想定する）の全ページにはデータが書かれているので、ステップＳ１５８の判定がノーとなり、リフレッシュ制御部１２５はステップＳ１５４を実行せず、ステップＳ１６２を実行する。すなわち、ブロック＃２に関するデータ移動は終了する。
【０１０６】
リフレッシュ制御部１２５はステップＳ１６２でリード回数が基準回数を超えたブロックがあるか否かを判定する。このようなブロックが存在しないと判定される場合、処理はステップＳ１０２に戻る。
【０１０７】
このようなブロックが存在すると判定する場合、リフレッシュ制御部１２５はステップＳ１６４で、当該ブロックの全ページをスキャンリードする。リフレッシュ制御部１２５はステップＳ１６６で、各ページの誤りビット数を基準数と比較し、誤りビット数が基準数を超えたページがあるか否かを判定する。全てのページの誤りビット数が基準数を超えないと判定される場合、処理はステップＳ１０２に戻る。
【０１０８】
誤りビット数が基準数を超えたページが１つでもあると判定する場合、リフレッシュ制御部１２５はステップＳ１６８で当該ブロックをリフレッシュする。
【０１０９】
このようなデータ移動により、ステップＳ１６８のリフレッシュの実行頻度が低下し、寿命が短くなることなく、かつ性能が低下することなく、データの信頼性を保つことができる。
【０１１０】
図１４〜図１８の説明では、リフレッシュ対象ブロック以外ではリード頻度が高いページが最も多いブロックを移動対象ブロックとしているが、この変形例を図１９、図２０を参照して説明する。図１７ではブロック＃２、＃３のうちリード頻度が高いページが最も多いブロック＃３を移動対象ブロックとしているが、高頻度用の移動先ブロック＃１００のページの書き込み状況を考慮して移動対象ブロックを決めてもよい。図１９は図１７と同じブロックの書き込み状態を示すが、高頻度用の移動先ブロック＃１００で消去済みページは1ページしか残っていないので、リード頻度が高いページを２ページ含むブロック＃３ではなくリード頻度が高いページを１ページしか含まないブロック＃２が移動対象ブロックとされる。ブロック＃２のリード頻度が高い１ページのデータがブロック＃１００に移動される。移動後の状態を図２０に示す。
【０１１１】
以上説明したように、第３の対策によれば、ブロック内の一部のデータが集中してリードされるのではなくブロック内の全部のデータが略均等にリードされるので、リフレッシュの頻度が減少する。また、複数のブロックのリード回数が略均等に増加するのではなく一部のブロックのみのリード回数が増加するので、スキャンリードの実行頻度も減少する。
【０１１２】
［第４のリードディスターブストレス対策］
第２、第３のリードディスターブストレス対策では、ブロックのリード回数と基準回数との比較による判定に加えて、ＮＡＮＤ型フラッシュメモリ５の記憶データがどの程度誤っているかを示す指標と基準値との比較による判定に基づいてリフレッシュを実行するか否かが決定される。すなわち、ＮＡＮＤ型フラッシュメモリ５の記憶データの信頼性が高ければ、リフレッシュは実行されない可能性が高い。そのため、ＮＡＮＤ型フラッシュメモリ５にデータを書き込む際、記憶データの信頼性が高い、リードディスターブストレスの影響を低減できる書き込み方法を用いることにより、リフレッシュの実行頻度を低下させることができる。記憶データの信頼性が高い書き込み方法を全てのデータに用いても良いが、このような書き込み方法は時間が掛かる等の問題があるので、リード頻度が高いデータについて記憶データの信頼性が高い書き込み方法を用い、他のデータについては通常の書き込み方法を用いてもよい。
【０１１３】
記憶データの信頼性が高い書き込み方法の例を説明する。
【０１１４】
図２１は比較例としてのＴＬＣフラッシュメモリにおけるメモリセルトランジスタの閾値電圧分布を示すグラフである。メモリセルトランジスタは閾値電圧に応じて３ビットのデータを保持出来る。３ビットで表現されるデータを、閾値電圧の低いものから順に“Ｅｒ”ステート、“Ａ”ステート、“Ｂ”ステート、“Ｃ”ステート、“Ｄ”ステート、“Ｅ”ステート、“Ｆ”ステート、“Ｇ”ステートと呼ぶ。“Ｅｒ”ステート、“Ａ”ステート、“Ｂ”ステート、“Ｃ”ステート、“Ｄ”ステート、“Ｅ”ステート、“Ｆ”ステート、“Ｇ”ステートはそれぞれ３ビットのデータ“１１１”，“１１０”，“１００”，“０００”，“０１０”，“０１１”，“００１”，“１０１”に対応する。各ビットのデータが各ページに記憶される。図２１（ａ）はリードディスターブストレスを受けていない状態の閾値電圧分布を示す。各ステートの閾値電圧分布の波形はほぼ左右対称である。なお、隣り合う２つの波形は接続している必要はなく、離れていて２つの波形の間に空白部が存在してもよい。リードディスターブストレスを受けると、メモリセルの閾値電圧は高くなるので、図２１（ｂ）に破線で示すように、閾値電圧分布の上裾部分（高い閾値電圧部分）が高電圧側に伸び、閾値電圧分布はほぼ左右対称の波形から高い電圧部分の波形が隣接する波形に重なるような左右非対称の波形に変化する。波形の変化はステート毎に異なり、中心電圧が低いステートほど大きく変化し、中心電圧が低いステートの波形は隣接するステートの波形により多く重なる。閾値分布の波形が重なる部分ではデータを正しくリードすることができず、データの信頼性が低下する。そのため、閾値電圧分布の中心電圧が低いステート程、データの信頼性が低下する。
【０１１５】
このようにリードディスターブストレスによりデータの信頼性が低下する原因は、閾値電圧分布の波形がずれて隣接する閾値電圧分布の波形と重なるからである。そのため、図２２（ａ）に示すように、閾値電圧分布の波形が細くなるようにデータを書き込むと、図２２（ｂ）に示すように、リードディスターブストレスを受けてメモリセルの閾値が変化し、閾値電圧分布の波形がずれても、隣接する波形と殆ど重ならず、記憶データの信頼性が低下することがない。図２２（ａ）の破線は、図２１（ａ）に示す通常の閾値電圧分布を示す。
【０１１６】
ＮＡＮＤ型フラッシュメモリセルへのデータの書き込みでは、メモリセルにプログラム電圧が印加されることで、メモリセルの閾値電圧が上昇する。目標ステート内の閾値電圧分布の下裾（最も低い閾値電圧）がプログラムベリファイ基準電圧を超えるか否かが判定される。超えない場合、プログラム電圧が少し増加される。閾値電圧分布の下裾がプログラムベリファイ基準電圧を超えるまでプログラム電圧が少しずつ増加される。
【０１１７】
ここで、プログラム電圧の増加ステップを小さくすると、閾値電圧分布の下裾がプログラムベリファイ基準電圧を超えるまでのプログラム電圧の印加回数が増加する。このような書き込み方法によれば、書き込み時間は増えるが、閾値電圧分布の波形を細くすることができる。データの書き込みにおいては、プログラム電圧の初期値initial VPGMがメモリセルに印加され、最初にある程度大きな電荷が浮遊ゲートに与えられ、閾値電圧がある程度高い電圧まで上昇する。その後、プログラム電圧が小さい電圧delta VPGMだけ増加した状態でメモリセルに印加され、徐々に電荷が与えられ、閾値電圧が目的の電圧まで上昇される。図２３は図２１（ａ）に示す閾値電圧分布を実現する通常書き込みと、図２２（ａ）に示す閾値電圧分布を実現する高信頼書き込みのプログラム電圧の違いを示す。高信頼書き込みにおけるプログラム電圧の初期値initial VPGM2は通常書き込みにおけるプログラム電圧の初期値initial VPGM1より低い。高信頼書き込みにおけるプログラム電圧の増加分delta VPGM2は通常書き込みにおけるプログラム電圧の増加分delta VPGM1より小さい。このようにプログラム電圧の初期値initial VPGM2、プログラム電圧の増加分delta VPGM2を通常書き込みにおけるそれらよりも小さくして少しずつ電荷を注入すると、注入回数は増える(プログラム時間は増加する)が、メモリセル間の電荷注入量のばらつきを小さく、すなわち閾値電圧分布の波形を細くすることができ、信頼性を向上することができる。なお、プログラム電圧の初期値initial VPGM2とプログラム電圧の増加分delta VPGM2の両方を通常書き込みにおけるそれらよりも小さくすることに限らず、プログラム電圧の初期値initial VPGM2、プログラム電圧の増加分delta VPGM2の一方のみを通常書き込みにおけるそれらよりも小さくしてもよい。
【０１１８】
リード頻度が高いデータを図２２（ａ）に示した書き込み方法により書き込み、それ以外のデータを図２１に示した書き込み方法により書き込んでもよい。
【０１１９】
図２４（ａ）の破線は、図２１（ａ）に示す通常の閾値電圧分布を示す。図２１（ｂ）に示すように、リードディスターブストレスを受けて閾値分布波形の上裾が変化する程度は、中心電圧が低いステートの波形ほど大きく変化し、中心電圧が低いステートの波形は隣接するステートの波形により多く重なる。そのため、中心電圧が低いステートの波形ほどずらし量を多くすると、リードディスターブストレスを受ける場合の閾値分布波形の重なり量が少なくなり、高信頼書き込みが実現される。プログラムベリファイ基準電圧をステート毎について適切な位置に設定することにより、図２４（ａ）の実線に示すように、低電位のステート間ほどマージンが広くなるよう、隣接するステート間のプログラムベリファイ基準電圧の差が大きくなるようにデータを書き込む。例えば、図２４（ａ）の実線に示す高信頼書き込みにおける“Ｅｒ”ステートと“Ａ”ステートの間のプログラムベリファイ基準電圧ＡＶ２と“Ａ”ステートと“Ｂ”ステートの間のプログラムベリファイ基準電圧ＢＶ２の差は、図２４（ａ）の破線に示す通常書き込みにおける“Ｅｒ”ステートと“Ａ”ステートの間のプログラムベリファイ基準電圧ＡＶ１と“Ａ”ステートと“Ｂ”ステートの間のプログラムベリファイ基準電圧ＢＶ１の差より大きい。
【０１２０】
このようなプログラムベリファイ基準電圧を用いてデータを書き込むと、図２４（ｂ）に示すように、リードディスターブストレスを受けてメモリセルの閾値が変化し、ステート毎の閾値電圧分布の波形がずれても、隣接する波形との重なりが図２１（ｂ）に比べて少なくなる。例えば、図２４（ｂ）において“Ｅｒ”ステート波形と“Ａ”ステート波形の交点は図２１（ｂ）に比べて頻度方向において下がっている。従って、図２４（ｂ）の誤りビット数は図２１（ｂ）に比べて少なくなる。なお、“Ｅ”ステート波形、“Ｆ”ステート波形、“Ｇ”ステート波形の交点に関しては、図２４（ｂ）の方が図２１（ｂ）に比べて頻度方向において上がっている。しかし、リフレッシュ開始の条件を決定するのは、誤りビット数が多いブロックであるので、全ステートの閾値分布を平均化することにより、リフレッシュ頻度を下げることができる。これにより、ステート毎の誤りビット数の偏りが緩和される。
【０１２１】
リード頻度が高いデータを図２４（ａ）に実線で示したプログラムベリファイ基準電圧を用いた高信頼書き込み方法により書き込み、それ以外のデータを図２４（ａ）に破線で示したプログラムベリファイ基準電圧を用いた通常書き込み方法により書き込んでもよい。
【０１２２】
図２２と図２４の書き込み方法を併用してもよい。すなわち、閾値電圧分布の波形を細くするとともに、分布自体を高電圧側にシフトするようにデータを書き込んでもよい。
【０１２３】
図示しないが、記憶データの信頼性が高い書き込み方法の他の例は１つの不揮発性メモリセルが保持するデータのビット数を少なくすることがある。例えば、モード切替部１２１はＮＡＮＤ型フラッシュメモリ５がＭＬＣ／ＴＬＣ／ＱＬＣフラッシュメモリである場合、書き込みモードをＳＬＣモードとＭＬＣ／ＴＬＣ／ＱＬＣモードとに切替えることができる。モード切替部１２１はＮＡＮＤ型フラッシュメモリ５がＴＬＣ／ＱＬＣフラッシュメモリである場合、書き込みモードをＳＬＣモードとＭＬＣモードとＴＬＣ／ＱＬＣモードとに切替えることができる。モード切替部１２１はＮＡＮＤ型フラッシュメモリ５がＱＬＣフラッシュメモリである場合、書き込みモードをＳＬＣモードとＭＬＣモードとＴＬＣモードとＱＬＣモードとに切替えることができる。
【０１２４】
リード頻度が高いデータを１つの不揮発性メモリセルが保持するデータのビット数が少ないモードにより書き込み、それ以外のデータを１つの不揮発性メモリセルが保持するデータのビット数が多いモードにより書き込んでもよい。例えば、リード頻度が高いデータをＭＬＣモードあるいはＴＬＣモードで書き込み、それ以外のデータをＴＬＣ／ＱＬＣモードあるいはＱＬＣモードで書き込んでもよい。
【０１２５】
図示しないが、記憶データの信頼性が高い書き込み方法の他の例は訂正能力が高いＥＣＣ（Error Correction Code）を用いて書き込む方法である。リード制御部１２２とライト制御部１２３が備えるＥＣＣは訂正能力を可変とすることができる。リード頻度が高いデータを訂正能力の高いＥＣＣを使って書き込み、それ以外のデータを訂正能力がより低いＥＣＣを使って書き込んでもよい。
【０１２６】
図２５、図２６を参照してリード頻度に応じたデータの書き込み法の選択の例を示す。図２５、図２６はブロックの状態遷移を表す。消去済みブロックにデータが書き込まれると、書き込み済みブロックとなる。図２５では、リード頻度が高いと判断されたデータが書き込まれる消去済みブロックとそれ以外のデータが書き込まれる消去済みブロックは別々、かつ固定されている。図２６では、１つの消去済みブロックをリード頻度が高いデータを書き込むための書き込み先ブロック又はそれ以外のデータを書き込むための書き込み先ブロックとして使用することが可能な例を示す。
【０１２７】
書き込みにはホスト２からのデータを書き込むホスト書き込みと、ガベージコレクションによる書き込みがある。ホスト書き込みの場合は、ライトコマンド発行時にホストからデータとともにリード頻度に関する情報がコントローラ４に供給されてもよい。ガベージコレクション書き込みの場合は、ワード線、ページ、クラスタ、ＬＢＡ範囲毎のリード回数からデータのリード頻度を求めることができる。なお、リード頻度に関する情報は、ライトコマンド発行時以外に、ＬＢＡ範囲と紐付ける形でホストからコントローラ４に予め通知してもよい。このとき、ホストから通知されるＬＢＡ範囲は、クラスタ単位（４ＫＢ）のサイズでなくてもよい。
【０１２８】
リード頻度が高いと判断されたデータは、記憶データの信頼性が高い書き込み方法により書き込まれ、それ以外のデータはその他の書き込み方法により書き込まれてもよい。リード頻度が高いと判断されたデータの書き込み方法は、１つの不揮発性メモリセルが保持するデータのビット数が少ない書き込みモード（例えばＳＬＣモード）、誤り訂正能力の高いＥＣＣを用いる書き込み方法、図２２（ａ）の実線に示すように、ステート毎の閾値電圧分布の波形が通常より細い書き込み方法、図２４（ａ）の実線に示すように、ステート毎の閾値電圧分布の波形において低電位のステート間ほど通常よりマージンが広くなるよう、隣接するステート間のプログラムベリファイ基準電圧の差が大きくなるように書き込む方法の全て、あるいはいずれか１つ又は２つとしてもよく、それ以外のデータの書き込み方法は１つの不揮発性メモリセルが保持するデータのビット数が多い書き込みモード（例えばＭＬＣ／ＴＬＣ／ＱＬＣモード）、誤り訂正能力の低いＥＣＣを用いる書き込み方法としてもよい。
【０１２９】
第４の対策（誤り訂正能力の高いＥＣＣを用いる以外の対策）によれば、ＮＡＮＤ型フラッシュメモリ５のデータのＢＥＲの悪化（誤りビット数の増加）が抑えられる、または特定ページのみＢＥＲが高くなることが防止され、その結果、スキャンリードの結果リフレッシュを行うと判断される可能性が低くなり、リフレッシュの実行頻度を低下させることができる。誤り訂正能力の高いＥＣＣを用いる場合は通常の誤り訂正能力のＥＣＣを用いる場合に比べて高いＢＥＲ（多くの誤りビット数）まで訂正することができるため、通常の誤り訂正能力のＥＣＣを用いる場合に比べてスキャンリードを開始するためのリード回数の基準回数を大きく設定することができ、また、スキャンリードの結果リフレッシュが必要であると判断する基準が緩和されるため、スキャンリードの頻度やリフレッシュの頻度が低下する。すなわち、誤り訂正能力の高いＥＣＣを用いる場合は、訂正失敗確率の悪化が防止され、スキャンリードの結果リフレッシュを行うと判断される可能性が低くなり、リフレッシュの実行頻度を低下させることができる。
【０１３０】
［第５のリードディスターブストレス対策］
第５の対策として第３、第４の対策の組み合わせを説明する。すなわち、リード頻度が同じ程度のデータを１つの書き込み先一ブロックに移動する際、リード頻度に応じて書き込み方法を選択してもよい。第４の対策を行っても、リードディスターブストレスの影響によるＢＥＲの悪化(誤りビット数の増加)は発生する。第４の対策によって、リードディスターブストレスによるＢＥＲの増加量が抑えられる、または特定ページのみＢＥＲが高くなることが防止され、その結果、リフレッシュ頻度が低下される。
【０１３１】
図２７は第５の対策の原理を示す図である。ＮＡＮＤ型フラッシュメモリ５は５個のブロック＃０〜＃４からなり、各ブロックは５個のページ＃０〜＃４からなるとする。ここでは、リード回数テーブル６６はメモリセルのリード回数をブロック毎、ページ毎に集計したリード回数を記憶する。
【０１３２】
図２７（ａ）に示すように、５個のブロック＃０〜＃４のそれぞれはリード回数が異なるページを含み、リード回数が多いページが５個のブロック＃０〜＃４に均等に分散しているとする。ブロック＃０ではページ＃１のリード回数が９８ｋで、残りのページのリード回数は０．５ｋ以下である。同様に、ブロック＃１ではページ＃０のリード回数が８０ｋで、残りのページのリード回数は５ｋ以下である。ブロック＃２ではページ＃３のリード回数が８３．５ｋで、残りのページのリード回数は１０ｋ以下である。ブロック＃３ではページ＃０のリード回数が７４ｋで、残りのページのリード回数は１ｋ以下である。ブロック＃４ではページ＃４のリード回数が６０ｋで、残りのページのリード回数は１０ｋ以下である。
【０１３３】
図２７（ｂ）は、図２７（ａ）に示す状態のＮＡＮＤ型フラッシュメモリ５について第５の対策を実施する場合のページ毎のリード回数を示す。図２７（ａ）に示す各ブロックに含まれていたリード回数が最も多いページのデータがブロック＃２に纏められ、リード回数が次に多いページのデータがブロック＃４に纏められ、以下同様に、同程度のリード回数のページのデータが同じブロック＃０、＃１、＃３に纏められる。
【０１３４】
リード回数が最も多いページのデータがブロック＃２に書き込まれる際は、データの信頼性の高い３つの書き込み方法が併用され、リード回数が次に多いページのデータがブロック＃４に書き込まれる際は、データの信頼性の高い２つの書き込み方法が併用され、リード回数が３番目に多いページのデータがブロック＃１に書き込まれる際は、データの信頼性の高い１つの書き込み方法が用いられてもよい。それ以外のブロックに書き込まれる際は、データの信頼性の高い書き込み方法以外の通常の書き込み方法が用いられてもよい。
【０１３５】
図２８、図２７を参照してリード頻度が同じ程度のデータをリード頻度に応じた書き込み方法により１つの書き込み先ブロックに移動する第５の対策の一例を示す。図２８では、リード頻度が高いと判断されたデータが書き込まれる消去済みブロックと、リード頻度が低いと判断されたデータが書き込まれる消去済みブロックと、リード頻度が中程度と判断されたデータが書き込まれる消去済みブロックは別々、かつ固定されている。図２７では、１つの消去済みブロックを、リード頻度が高いと判断されたデータを書き込むための書き込み先ブロック、リード頻度が低いと判断されたデータを書き込むための書き込み先ブロック又はリード頻度が中程度と判断されたデータを書き込むための書き込み先ブロックとして使用することが可能な例を示す。
【０１３６】
書き込みにはホスト２からのデータを書き込むホスト書き込みと、ガベージコレクションによる書き込みがある。ホスト書き込みの場合は、ライトコマンド発行時にホストからデータとともにリード頻度に関する情報がコントローラ４に供給されてもよい。ガベージコレクション書き込みの場合は、ワード線、ページ、クラスタ、ＬＢＡ範囲毎のリード回数からデータのリード頻度を求めることができる。なお、リード頻度に関する情報は、ライトコマンド発行時以外に、ＬＢＡ範囲と紐付ける形でホストからコントローラ４に予め通知してもよい。このとき、ホストから通知されるＬＢＡ範囲は、クラスタ単位（４ＫＢ）のサイズでなくてもよい。
【０１３７】
リード頻度が高いと判断されたデータは、記憶データの信頼性が高い書き込み方法により書き込まれ、リード頻度が中程度と判断されたデータは、記憶データの信頼性がやや高い書き込み方法により書き込まれ、リード頻度が低いと判断されたデータは、その他の書き込み方法により書き込まれてもよい。リード頻度が高いと判断されたデータの書き込み方法は、ＳＬＣ書き込みモード、誤り訂正能力の高いＥＣＣを用いる書き込み方法及び閾値電圧分布が細い書き込み方法としてもよく、リード頻度が中程度と判断されたデータの書き込み方法は、ＭＬＣ書き込みモード及び誤り訂正能力の中程度のＥＣＣを用いる書き込み方法としてもよく、リード頻度が低いと判断されたデータの書き込み方法は、ＴＬＣ書き込みモードとしてもよい。
【０１３８】
第５の対策によれば、リード頻度が同じ程度のデータを１つの書き込み先ブロックに移動することにより、全部のブロックがリード回数の多いブロックとリード回数の少ないブロックに大別される。このため、リード回数の少ないブロックはスキャンリードの実行頻度が低下する。また、各ブロック内のデータが略均等にリードされるため、リフレッシュの実行頻度も低下する。
【０１３９】
データ移動の際リード頻度が高いメモリセルのデータをデータの信頼性の高い書き込み方法を用いて書き込むことにより、スキャンリードとリフレッシュの実行開始のための判断基準を適切に設定することができ、スキャンリードとリフレッシュの実行頻度を低下することができる。そのため、スキャンリードとリフレッシュによる性能低下と、リフレッシュによる寿命の低下を防止することができる。
【０１４０】
訂正能力の高いＥＣＣを用いると、リフレッシュ開始の条件である誤りビット数を大きい数とすることにより、リフレッシュの実行頻度を下げることができる。
【０１４１】
本実施形態の処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【０１４２】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１４３】
４…コントローラ、５…ＮＡＮＤ型フラッシュメモリ、６…ＤＲＡＭ、６６…リード回数テーブル、１２５…リフレッシュ制御部。
【図１】
2019168937.tif 000003
【図２】
2019168937.tif 000004
【図３】
2019168937.tif 000005
【図４】
2019168937.tif 000006
【図５】
2019168937.tif 000007
【図６】
2019168937.tif 000008
【図７】
2019168937.tif 000009
【図８】
2019168937.tif 000010
【図９】
2019168937.tif 000011
【図１０】
2019168937.tif 000012
【図１１】
2019168937.tif 000013
【図１２】
2019168937.tif 000014
【図１３】
2019168937.tif 000015
【図１４】
2019168937.tif 000016
【図１５】
2019168937.tif 000017
【図１６】
2019168937.tif 000018
【図１７】
2019168937.tif 000019
【図１８】
2019168937.tif 000020
【図１９】
2019168937.tif 000021
【図２０】
2019168937.tif 000022
【図２１】
2019168937.tif 000023
【図２２】
2019168937.tif 000024
【図２３】
2019168937.tif 000025
【図２４】
2019168937.tif 000026
【図２５】
2019168937.tif 000027
【図２６】
2019168937.tif 000028
【図２７】
2019168937.tif 000029
【図２８】
2019168937.tif 000030
【図２９】
2019168937.tif 000031