(57)【要約】【課題】  本発明は、簡便な方法で、消去回数の記憶容量を低減可能なメモリシステムを提供する。【解決手段】  データの消去の単位であるブロックにデータを記憶可能な記憶部と、前記記憶部に記憶されるデータが消去されるたびに保存される消去演算回数を記憶するカウンタ記憶部３３と、前記記憶部に記憶される前記データが消去されるとき、乱数を取得する乱数取得部３０と、前記乱数が、所定の条件を満たすか否かを判定する条件判定部３１と、前記条件判定部３１により前記乱数が所定の条件を満たすと判定されたとき、前記消去演算回数を歩進させる消去回数歩進部３２と、前記記憶部に記憶された消去演算回数が所定の回数を超えたときに、前記所定の条件を変更する変更部３４とを備えたことを特徴とするメモリシステム。【選択図】図５
2011138364.tif 000002
【特許請求の範囲】
【請求項１】
データの消去の単位であるブロックにデータを記憶可能な記憶部と、
前記記憶部に記憶されるデータが消去されるたびに保存される消去演算回数を記憶するカウンタ記憶部と、
前記記憶部に記憶される前記データが消去されるとき、乱数を取得する乱数取得部と、
前記乱数が、所定の条件を満たすか否かを判定する条件判定部と、
前記条件判定部により前記乱数が所定の条件を満たすと判定されたとき、前記消去演算回数を歩進させる消去回数歩進部と、
前記記憶部に記憶された消去演算回数が所定の回数を超えたときに、前記所定の条件を変更する変更部と
を備えたことを特徴とするメモリシステム。
【請求項２】
前記変更部が、
前記記憶部に記憶される消去演算回数が所定の回数を超えたときに、前記所定の条件を
前記乱数が前記所定の条件よりも満たす確率が高い条件に変更する
ことを特徴とする請求項１記載のメモリシステム。
【請求項３】
前記乱数取得部が、
順序付けされた前記乱数が保存されている乱数記憶部と、
前記記憶部に記憶される前記データが消去されるとき、前記消去回数に対応する順番の前記乱数を取得することを特徴とする請求項１又は請求項２記載のメモリシステム。
【請求項４】
前記記憶部内の前記ブロックが複数設けられており、
前記乱数記憶部内の順序付けされた前記乱数が、素数個設けられており、
前記消去演算回数を歩進させるかを同時に判断する歩進判断範囲を前記素数よりも小さな個数の前記ブロックごとにすることを特徴とする請求項３記載のメモリシステム。
【請求項５】
前記所定の条件を前記乱数が満たす確率を小さくするように前記所定の条件を設定することを特徴とする請求項１乃至請求項４のいずれか１項に記載のメモリシステム。
【請求項６】
前記所定の条件を前記乱数が満たす確率を大きくするように前記所定の条件を設定することを特徴とする請求項１乃至請求項４のいずれか１項に記載のメモリシステム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、読み出し回数に制限を有するフラッシュメモリを用いたメモリシステムに関する。
【背景技術】
【０００２】
不揮発性半導体メモリ、例えば、フラッシュメモリは、様々な電子機器に搭載されてい
る。不揮発性半導体メモリには、例えばＮＡＮＤ型フラッシュメモリのように、データを
消去する場合にはブロック単位で行い、データの書き込み／読み出しの場合には、ページ単位で行うように、消去／書き込み／読み出しにおける管理単位が異なるものがある。
【０００３】
パーソナルコンピュータなどのホスト機器を用いて、不揮発性半導体メモリにデータの書き込みをするとき、不揮発性半導体メモリのアドレス領域を指定し書き込みを行う。
【０００４】
このような不揮発性半導体メモリはデータの上書きができないため、不揮発性半導体メモリのデータの書き換えをする際において、書き換え前のデータが保存された元ブロック内でホスト機器から書き換え要求がないデータを、書き換え後のデータの書き込み先である新ブロックに移し、この新ブロックにホスト機器から書き換え要求されたデータを書き込んだ後に、元ブロックに保存されたデータを消去する必要がある。つまり、外部から指定されたアドレスにデータの書き換えをしていくと、特定の領域に短時間に書き換え、すなわち消去の処理が集中し、特定の領域における消去回数の偏りが大きくなる。
【０００５】
そのため、不揮発性半導体メモリでは、データの書き換え箇所を均等に分散させるウェアレベリングと呼ばれる処理が行われる。このウェアレベリングの処理を行うために、不揮発性半導体メモリのブロックの消去回数をメモリ内に保存する必要がある。
【０００６】
近年の不揮発性半導体メモリの大容量化に伴い、不揮発性半導体メモリのブロック数が増大し、消去回数を保存する記憶容量も増大するという問題が生じる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第３４０１７４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、簡便な方法で、消去回数の記憶容量を低減可能なメモリシステムを提供する。
【課題を解決するための手段】
【０００９】
本発明の一態様に係るメモリシステムは、データの消去の単位であるブロックにデータを記憶可能な記憶部と、前記記憶部に記憶されるデータが消去されるたびに保存される消去演算回数を記憶するカウンタ記憶部と、前記記憶部に記憶される前記データが消去されるとき、乱数を取得する乱数取得部と、前記乱数が、所定の条件を満たすか否かを判定する条件判定部と、前記条件判定部により前記乱数が所定の条件を満たすと判定されたとき、前記消去演算回数を歩進させる消去回数歩進部と、前記記憶部に記憶された消去演算回数が所定の回数を超えたときに、前記所定の条件を変更する変更部とを備えたことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、簡便な方法で、消去回数の記憶容量を低減可能なメモリシステムを提供できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施形態におけるメモリシステムの一態様であるＮＡＮＤ型フラッシュメモリを備えたメモリシステムの構成を示すブロック図。
【図２】本発明の第１の実施形態におけるメモリシステムの一態様であるＮＡＮＤ型フラッシュメモリセルアレイの構成を示す回路図。
【図３】本発明の第１の実施形態におけるＮＡＮＤコントローラの機能の概略を示すブロック図。
【図４】本発明の第１の実施形態におけるＮＡＮＤコントローラによるカウント動作を示すフローチャート図。
【図５】本発明の第１の実施形態の変形例３におけるＮＡＮＤコントローラの機能の概略を示すブロック図。
【図６】本発明の第２の実施形態におけるメモリシステムの乱数テーブル表を示す概念図。
【図７】本発明の第２の実施形態におけるメモリシステムのデータの消去回数又は読み出し回数のカウント動作を示すフローチャート図。
【発明を実施するための形態】
【００１２】
（第１の実施形態）
まず、本発明の第１の実施形態にかかるメモリシステムの構成について、図１及び図２を参照して説明する。図１は、本発明の第１の実施形態におけるメモリシステムの一態様であるＮＡＮＤ型フラッシュメモリを備えたメモリシステムの構成を示すブロック図である。また、図２は、本発明の第１の実施形態におけるメモリシステムの一態様であるＮＡＮＤ型フラッシュメモリセルアレイの構成を示す回路図である。
【００１３】
［メモリシステムの構成］
図１に示すように、メモリシステムは、ＮＡＮＤ型フラッシュメモリ１０とＮＡＮＤコントローラ１１で構成される。
【００１４】
＜ＮＡＮＤ型フラッシュメモリ＞
ＮＡＮＤ型フラッシュメモリ１０は、複数のメモリセルが直列に接続され、その両端に選択ゲートトランジスタが接続されたＮＡＮＤストリングが複数メモリセルアレイ内に形成され、データの消去の単位であるブロックを複数有する。
【００１５】
より具体的には、図２に示すように、メモリセルアレイ内に形成された複数のＮＡＮＤストリング２０は、直列に接続された電気的書き換え可能な複数個の不揮発性メモリセルＭ１乃至Ｍｎとその両端部にビット線ＢＬに接続するための第１の選択ゲートトランジスタＴ１及びソース線に接続するための第２の選択ゲートトランジスタＴ２を有する。このＮＡＮＤストリング２０内における各不揮発性メモリセルの制御ゲートは、それぞれ異なるワード線に接続される。
【００１６】
１つのワード線は、複数のＮＡＮＤストリング２０内のそれぞれ対応する不揮発性メモリセルで共有されている。第１及び第２の選択ゲートトランジスタＴ１，Ｔ２の制御ゲートはそれぞれ、ワード線と平行な第１及び第２の選択ゲート線ＳＧＤ，ＳＧＳに接続される。１つのワード線を共有する不揮発性メモリセルＭの集合は、データの読み出し又は書き込みの単位となるページを構成する。複数のページの集合は、データ消去の単位となるブロックを構成する。なお、理解を容易にするため、複数のブロックを説明する場合において、各ブロックには順序付けがなされているものとする。
【００１７】
＜ＮＡＮＤコントローラ＞
次に、ＮＡＮＤコントローラ１１について図１を用いて、説明する。ＮＡＮＤコントローラ１１は、ホストインターフェース回路（図１ではホストＩ／Ｆ）１２、演算処理装置（以下、ＭＰＵという：Micro processing unit）１３、ＲＯＭ（Read-only memory）１４、ＲＡＭ（Random access memory）１５、及びＮＡＮＤインターフェース回路（図１ではＮＡＮＤＩ／Ｆ）１６を備えている。
【００１８】
ホストインターフェース回路１２は、ＮＡＮＤコントローラ１１とホスト装置との間における情報（コマンドＣＭＤ、アドレスＡＤＤ、データＤＡＴ）の入出力の制御を行うためのものである。
【００１９】
ＭＰＵ１３は、ＮＡＮＤコントローラ１１全体の動作を制御するためのものである。ＭＰＵ１３は、例えば、メモリシステムが電源供給を受けて、ＲＯＭ１４に格納されているファームウェア（制御プログラム）をＲＡＭ１５上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ１５上に作成する。
【００２０】
ＲＯＭ１４は、ＭＰＵ１３により制御される制御プログラム等を格納する。
【００２１】
ＲＡＭ１５は、ＭＰＵ１３の作業エリアとして使用され、ＲＯＭ１４から読み出された制御プログラムや各種のテーブルを記憶する。このＲＡＭ１５には、ブロックカウンタテーブル１７ａ、ページカウンタテーブル１７ｂが設けられている。このブロックカウンタテーブル１７ａにはメモリセルアレイ内の各ブロックにおけるデータの消去演算回数が保存されており、ページカウンタテーブル１７ｂには各ページにおけるデータの読出演算回数が保存されている。
【００２２】
ＮＡＮＤインターフェース回路１６は、ＮＡＮＤコントローラ１１とＮＡＮＤ型フラッシュメモリ１０との間における情報の入出力の制御を行う。
【００２３】
次に、上記第１の実施形態におけるＮＡＮＤコントローラ１１の機能うちカウンタ機能の概略について図３のブロック図を用いて、説明する。
【００２４】
図３に示すように、ＮＡＮＤコントローラ１１のうちカウンタ機能を司る部分は、乱数取得部３０と、条件判定部３１と、消去回数歩進部３２と、カウンタ記憶部３３とを有する。乱数取得部３０は、ホスト機器の要求によりあるブロックにおけるデータが消去されると、又はホスト機器の要求によりあるページにおけるデータが読み出されると、ＭＰＵ１３を用いて、ＲＯＭ１４上に格納されている乱数発生プログラムを読み出し、この乱数発生プログラムによって発生された乱数をＲＡＭ１５上に保存する。
【００２５】
条件判定部３１は、上記の乱数発生プログラムにより発生する乱数が、所定の条件を満たすか否かを判定するためのものである。具体的には、ＲＯＭ１４上に格納されている条件判定プログラムを用いて、ＲＡＭ１５上に保存された乱数が後述する所定の条件を満たすか判断し、後述する消去回数歩進部３２に歩進させるか否かの判断データを転送する。
【００２６】
ここで、条件判定部３１により、乱数が所定の条件を満たすか判断し判断データを消去回数歩進部３２に転送するとは、例えば乱数発生プログラムによって発生する乱数が０又は１の場合において、乱数が１のときのみ消去回数歩進部３２に歩進させる判断データを転送することを意味する。
【００２７】
なお、所定の条件は、例えば（１）一定範囲内（例えば、０から２５５までの整数の範囲内）で乱数発生プログラムによって発生した乱数が予めＲＡＭ１５に記憶されている閾値（例えば、１２７）よりも大きいか又は小さいか、（２）一定範囲内（例えば、０から２５５までの整数の範囲内）で乱数発生プログラムによって発生した乱数がある特定の値（例えば、１２７）に該当するか、あるいは（３）上記の一定範囲内のある特定の範囲（例えば、１２７から２５５）に発生した乱数が属するかなどの設定とすることができる。
【００２８】
消去回数歩進部３２は、条件判定部３１から転送された判断データに基づいて、消去演算回数又は読出演算回数を歩進するためのものである。
【００２９】
ある特定のブロックに保存されているデータが消去され、判断データを消去回数歩進部３２が受信したとき、消去回数歩進部３２は、ＲＡＭ１５内に設けられたブロックカウンタテーブル１７ａのうちある特定のブロックにおけるデータの消去演算回数をＲＡＭ１５上に読み出す。発生された乱数が前述した所定の条件を満たす判断データを受信した場合には、消去回数歩進部３２は、上記のブロックカウンタテーブル１７ａ内のある特定のブロックにおけるデータの消去演算回数を歩進させ、再度ブロックカウンタテーブル１７ａに保存する。
【００３０】
なお、ある特定のページに保存されているデータが読み出された場合には、消去回数歩進部３２は、ページカウンタテーブル１７ｂ内のある特定のページにおけるデータの読出演算回数を読み出し、読出演算回数を歩進させる場合には、ページカウンタテーブル１７ｂに再度保存する。
【００３１】
カウンタ記憶部３３は、ＮＡＮＤフラッシュメモリ１０内の各ブロックの消去演算回数が保存されているブロックカウンタテーブル１７ａと、各ページの読出演算回数が保存されているページカウンタテーブル１７ｂで構成される。
【００３２】
［消去の回数又は読み出し回数のカウント動作］
次に、本実施形態におけるＮＡＮＤコントローラ１１による消去回数又は読み出し回数のカウント動作について図１及び図４を用いて説明する。図４は、本発明の第１の実施形態におけるＮＡＮＤコントローラ１１によるカウント動作を示すフローチャート図である。
【００３３】
なお、説明を簡単にするため、メモリセルアレイに形成されたブロックが２つ（第１ブロック、第２ブロックとする）の場合を考える。
【００３４】
まず、ステップＳ１で、ホスト機器により、例えば第１ブロックのデータの消去要求がなされ、ＭＰＵ１３により第１ブロックにおけるデータが消去される。
【００３５】
次に、ステップＳ２で、第１ブロックのデータが消去されると、ＲＯＭ１４に格納されている乱数発生プログラムをＭＰＵ１３によりＲＡＭ１５上に読み出し、乱数を発生させる。この発生させる乱数は、一定範囲（例えば、０から６３まで）内の乱数とする。この乱数をＲＡＭ１５上に一時保存する。
【００３６】
そして、ステップＳ３で、ＭＰＵ１３を用いて、ＲＡＭ１５上に条件判定プログラムを読み出し、乱数が所定の条件を満たすか否かを判定する。ここでは、例えば所定の条件を乱数が「０」か否かという条件とする。ステップＳ２で発生される乱数が「０」の場合（ステップＳ３でＹｅｓの場合）には、ＭＰＵ１３を用いて、ＲＡＭ１５上に記憶されているブロックカウンタテーブル１７ａのうち第１ブロックの消去演算回数をＲＡＭ１５に読み出して、一時保存する。その後、ＭＰＵ１３を用いて、消去回数歩進プログラムにより第１ブロックの消去演算回数を歩進する（ステップＳ４）。この歩進された消去演算回数を第１ブロックの消去演算回数としてブロックカウンタテーブル１７ａに再度保存する（ステップＳ５）。
【００３７】
一方で、ステップＳ２で発生される乱数が「０」以外の場合（ステップＳ３でＮｏの場合）には、ＭＰＵ１３を用いて、ＲＡＭ１５上に記憶されているブロックカウンタテーブル１７ａのうち第１ブロックの消去演算回数をそのまま保存する（ステップＳ５）。
【００３８】
そして、ステップＳ５で消去演算回数を保存後に、終了する（ステップＳ６）。
【００３９】
上記のステップＳ１からＳ５を第１ブロックにおけるデータの消去時だけでなく、第２ブロックにおけるデータの消去時も同様に行う。
【００４０】
以上より、簡便な方法で、消去回数の記憶容量を低減可能なメモリシステムを提供できる。
【００４１】
本実施形態におけるメモリシステムでは、ブロックのデータが消去されるごとにブロックカウンタテーブル１７ａ内の消去演算回数を歩進させるわけではなく、ブロックのデータが消去されても、ブロックカウンタテーブル１７ａ内の消去演算回数を歩進させない場合もある。
【００４２】
このため、消去回数よりも歩進される消去演算回数の方が少なくなる。その結果、ブロックカウンタテーブル１７ａ内の消去演算回数を、実際の消去回数よりも小さくすることができ、ブロックカウンタテーブル１７ａに保存される記憶容量を低減することができる。
【００４３】
なお、本実施形態では、所定の条件を乱数が「０」か否かとする例を示したが、所定の条件としては、消去の回数又は読み出しの回数を確率的に歩進させる構成であればよく、上記条件に制約される必要はない。例えば、所定の条件を発生された乱数が一定の範囲内に属しているか否かという条件でもよく、所定の条件を発生された乱数がメモリシステムに予め保存されたある閾値よりも大きいか小さいかを判断する条件としてもよい。
【００４４】
また、読み出し回数のカウント動作については、ステップＳ３まで同様の動作を行い、発生された乱数が所定の条件を満たす場合には、ページカウンタテーブル１７ｂ内の読み出しカウンタを歩進させる。一方で、発生された乱数が所定の条件を満たさない場合には、ページカウンタテーブル１７ｂ内の読み出しカウンタを歩進せず、そのまま保存する。
【００４５】
［第１の実施形態の変形例１］
本発明の第１の実施形態では、例えば第１ブロックにおけるデータを消去するときに、乱数発生プログラムを読み出し、１つの乱数を発生させているが、第１の実施形態の変形例として、乱数発生プログラムを読み出し発生させる乱数を複数としてもよい。
【００４６】
具体的には、一定の範囲内にある乱数を複数個（例えば２個とし、ここでは、以下第１の乱数、第２の乱数という）発生させる。そして、この複数個の乱数に順序をつけてテーブルとしてＲＡＭ１５に一時保存する（例えば、第１の乱数が１番目で第２の乱数が２番目とする）。始めに、第１ブロックにおけるデータを消去したときに１番目の乱数（第１の乱数）を用いて上記のステップＳ１からステップＳ４を行い、次の第２ブロックにおけるデータを消去したときに２番目の乱数（第２の乱数）を用いて上記ステップＳ１からステップＳ４を行う。
【００４７】
これにより、ＭＰＵ１３によりデータが消去されるごとに乱数発生プログラムを読み出す必要がない。このため、乱数発生にかかる時間を短くすることができる。
【００４８】
［第１の実施形態の変形例２］
本発明の第１の実施形態におけるメモリシステムは、ホスト機器に接続する記憶装置を対象としているが、本発明の第１の実施形態の変形例として、メモリシステムが記憶装置をホスト機器に接続したシステム全体を含めてもよい。このとき、本実施形態における乱数発生プログラム、条件判定プログラム、及び消去回数歩進プログラムはホスト機器に記憶されており、ホスト機器の中央演算処理装置を用いて、上記の消去演算回数又は読出演算回数の歩進を行い、ＲＡＭ１５上のブロックカウンタテーブル１７ａ又はページカウンタテーブル１７ｂに保存してもよい。
【００４９】
［第１の実施形態の変形例３］
本発明の第１の実施形態におけるメモリシステム内の乱数発生プログラムと条件判定プログラムの変形例について説明する。説明を簡単にするため、条件判定プログラムの所定の条件を、発生された乱数が「０」か否かという条件とする。
【００５０】
本発明の第１の実施形態で発生する乱数は、一定範囲（例えば、「０から６３まで」）における乱数である。第１の実施形態の変形例３では、この乱数の一定範囲を広く設定する。例えば、「０から２５５まで」の一定範囲内における乱数を発生させるように設定する。これにより、発生した乱数が「０」となる確率が第１の実施形態の場合に比べて、低くなる。
【００５１】
従って、あるブロックのデータが消去されて又はあるページからデータが読み出され、消去回数歩進部２３によりブロックカウンタテーブル１７ａ内にあるブロックの消去演算回数又はページカウンタテーブル１７ｂ内にあるページの読出演算回数が歩進される確率も低くなる。その結果、ブロックカウンタテーブル１７ａに保存される消去演算回数、読出演算回数の記憶容量を低減することができる。
【００５２】
一方で、第１の実施形態の変形例３における乱数の一定範囲を第１の実施形態に対して狭く設定してもよい。例えば、「０から１６まで」の一定範囲内における乱数を発生させるように設定する。これにより、発生した乱数が「０」となる確率が第１の実施形態の場合に比べて、高くなる。
【００５３】
その結果、あるブロックのデータが消去される回数又はあるページのデータが読み出される回数を、ブロックカウンタテーブル１７ａ又はページカウンタテーブル１７ｂが第１の実施形態に比べて、正確に示すことができる。
【００５４】
なお、図５に示すように、各ブロックにおける消去演算回数が、所定の回数を超えたときに、上記の一定範囲を変更する変更部３４を、さらに、メモリシステム内に設けてもよい。図５は、本発明の第１の実施形態の変形例３におけるＮＡＮＤコントローラの機能の概略を示すブロック図である。
【００５５】
メモリセルにはデータの消去回数の上限が決まっている。データの消去回数がこの上限に近い数を超えたときに、発生する乱数の一定範囲を狭めるように、上記の所定の回数が設定された変更部３４を用いて変更してもよい。例えば、所定の回数をメモリセルの消去回数の上限に近い数に消去演算回数が歩進される確率をかけた数とし、あるブロックの消去演算回数がこの所定の回数を超えたときに、変更部３４を用いて変更する。
【００５６】
これによって、この一定範囲が狭まるように変更されるとデータの消去回数又はデータの読み出し回数を正確に示すことができる。
【００５７】
つまり、ブロックカウンタテーブル１７ａ又はページカウンタテーブル１７ｂに保存される消去演算回数又は読出演算回数の記憶容量を低減することができるとともに、データの消去回数又はデータの読み出し回数をより正確に示すこともできる。その結果、各メモリセルに対してデータの消去回数又はデータの読み出し回数の平準化を行うことができる。メモリセルの寿命を長くすることができる。
【００５８】
（第２の実施形態）
次に、本発明の第２の実施形態にかかるメモリシステムの構成については、図１及び図６を参照して説明する。図６は本発明の第２の実施形態におけるメモリシステムの乱数テーブル表を示す概念図である。
【００５９】
なお、第２の実施形態におけるメモリシステムは、第１の実施形態のメモリシステムに対して、メモリシステムに予め順序付けされた乱数が保存されている乱数テーブル（乱数記憶部）が格納されており、データの消去をするごとに順序に沿って乱数が読み出され、例えばブロックカウンタテーブル１７ａの消去演算回数を歩進させるか否かを判断する点が異なり、その他の構成部分については、同一構成を有している。従って、以下の説明において、第１の実施形態と同様の構成部分については、詳細説明を省略し、異なる構成部分について説明する。
【００６０】
［メモリシステムの構成］
本発明の第２の実施形態におけるメモリシステムでは、第１の実施形態のメモリシステムと異なり、乱数発生プログラムが設けられていない。本実施形態のメモリシステムには、順序付けされた乱数が保存されている乱数テーブルが例えばＲＡＭ１５に保存されている。
【００６１】
例えば、図６に示すように、０又は１の乱数が複数保存されており、それぞれの乱数はポインタの番号により順序付けされている。ポインタの番号に沿って、保存されている乱数が読み出される。この保存されている乱数の個数は素数個（図６では、６７個）、ポインタの番号も同数の素数個（図６では、６７個）あり、乱数テーブルを構成している。
【００６２】
［消去の回数又は読み出し回数のカウント動作］
次に、上記の乱数テーブルを用いて、メモリシステムのデータの消去回数又はデータの読み出し回数のカウント動作について図７を用いて、説明する。図７は、本発明の第２の実施形態におけるメモリシステムのデータの消去回数又は読み出し回数のカウント動作を示すフローチャート図である。
【００６３】
なお、消去演算回数又は読出演算回数を歩進させるかを同時に判断するブロックの範囲（以下、歩進判断範囲という）をｎ個（ｎは自然数）のブロックとする。歩進判断範囲内のブロックの個数は、ホスト機器からの消去要求に応じて変化する。
【００６４】
まず、ステップＳ１で、ＭＰＵ１３を用いて、初期状態における乱数テーブル内に設定されているポインタｉを読み出す。ステップＳ２で、ホスト機器により、例えば歩進判断領域内のｎ個のブロックの消去要求がなされ、ＭＰＵ１３により歩進判断領域内のｎ個のブロックにおけるデータが消去される。このとき、ＭＰＵ１３により歩進判断領域内のｎ個のブロックに対応するポインタが、ポインタｉを始点として歩進判断領域内のブロックの個数と同数設定される（ブロックの昇降順に対応するｎ個のポインタをポインタｉ乃至ポインタｉ＋ｎ−１として設定される）。
【００６５】
なお、以下の説明を簡単にするために、メモリセルアレイに形成されるブロックを２個（第１ブロック、第２ブロックとする）とし、上記の乱数テーブル内に保存されている乱数の個数より小さな数である２個のブロックが常に歩進判断領域である場合を仮定する。
【００６６】
この場合、ステップＳ２では、例えばホスト機器の要求により第１ブロック及び第２ブロックのデータが消去されると、第１ブロックにはポインタ１、第２ブロックにはポインタ２が設定される。
【００６７】
次に、ステップＳ２後に、ＭＰＵ１３によりＲＡＭ１５に保存されている乱数テーブルが読み込まれ、この乱数テーブルのうち、ステップＳ２でＭＰＵ１３により設定されたそれぞれのポインタに対応する乱数がＲＡＭ１５上に読み出される。上記の例の場合には、第１ブロックに設定されたポインタ１に対応する「０」が、第２ブロックに設定されたポインタ２に対応する「０」が読み出される（ステップＳ３）。
【００６８】
そして、ステップＳ４で、ＭＰＵ１３を用いて、ＲＡＭ１５上に条件判定プログラムを読み出し、読み出されたそれぞれの乱数が所定の条件を満たすか否かを判定する。例えば、所定の条件を乱数が「０」か否かという条件とする。ステップＳ３で発生される乱数が「０」の場合（ステップＳ４でＹｅｓの場合）には、ＭＰＵ１３を用いて、ＲＡＭ１５上に記憶されているブロックカウンタテーブル１７ａのうち各ブロックの消去演算回数をＲＡＭ１５に読み出し、一時保存する。その後、ＭＰＵ１３により消去回数歩進プログラムを用いて、各ブロックの消去演算回数を歩進する（ステップＳ５）。上記の例では、第１ブロックに対応する乱数が「０」であるため、第１ブロックの消去演算回数に１を加えた回数を第１ブロックの消去演算回数として歩進される（ステップＳ５）。同様に、第２ブロックに対応する乱数も「０」であるため、第２ブロックの消去演算回数も１加算される（ステップＳ５）。
【００６９】
この第１ブロックの歩進された消去演算回数、第２ブロックの歩進された消去演算回数をブロックカウンタテーブル１７ａに再度保存する（ステップＳ６）。
【００７０】
一方で、ステップＳ２で発生される乱数が「０」以外の場合（ステップＳ４でＮｏの場合）には、ＭＰＵ１３を用いて、ＲＡＭ１５上に記憶されているブロックカウンタテーブル１７ａのうち各ブロックの消去演算回数をそのまま保存する（ステップＳ６）。
【００７１】
ブロックカウンタテーブル１７ａ内のブロックの消去演算回数を保存した後に、上記ステップＳ１〜Ｓ６内で使用したポインタのうち、ポインタの番号が最大なポインタに１加算して、乱数テーブル内に設定することで終了する（ステップＳ７）。上記の例の場合には、ポインタの番号が最大なポインタはポインタ２であるため、ポインタ３に歩進させて、乱数テーブル内に設定することで終了する。
【００７２】
ステップＳ７後に、例えば再度第１ブロック及び第２ブロックにおけるデータの消去要求がホスト機器によりなされると、ＭＰＵ１３を用いて、乱数テーブル内に設定されているポインタ３を読み出す。上記のステップＳ２同様に、ＭＰＵ１３により第１ブロック及び第２ブロックのデータが消去されると、ＭＰＵ１３を用いてＲＡＭ１５に保存されている乱数テーブルを読み出し、乱数テーブルのうちＭＰＵ１３により設定されたポインタ３，４に対応する乱数をＲＡＭ１５上に読み出す。
【００７３】
このように、例えばホスト機器により歩進判断領域内の２個のブロックにおけるデータの消去要求がなされる度に、２個のポインタそれぞれを順序に沿って２個ずらし、ずらした後のポインタそれぞれに対応する乱数を取得する。それぞれの乱数を用いて、条件判定プログラムを適用する。ただし、ポインタ６５とポインタ６６に対応する乱数を用いて条件判定プログラムを適用した後に、第１ブロック及び第２ブロックのデータが再度消去された場合には、ポインタ６７に設定されている。ポインタ６７の次のポインタについては、乱数テーブル内のポインタ１に戻して、条件判定プログラムを適用する。つまり、乱数テーブル内のポインタをひととおり使用した後には、ポインタをポインタ１にずらし、条件判定プログラムを適用する。
【００７４】
以上より、取得した乱数に対して、条件判定プログラムを適用することで、簡便な方法で、消去回数の記憶容量を低減可能なメモリシステムを提供できる。
【００７５】
本実施形態では、メモリシステムに予め順序付けされた乱数が保存されている乱数テーブルを保存されている。このため、あるブロックにおけるデータの消去されるたびに乱数を発生させる必要がない。そのため、第１の実施形態に比べて、消去回数又は読み出し回数のカウント動作の処理を迅速にすることができる。
【００７６】
また、本実施形態では、乱数テーブル内に保存されている乱数を素数個にしている。また、ブロックのデータを消去する際に、乱数テーブル内のポインタをひととおり使用した後には再度ポインタがポインタ１に戻るため、ポインタが複数回使用される場合がある。このため、あるポインタを１回目に使用するブロックと、あるポインタを複数回目（例えば２回目）に使用するブロックとは異なる場合がある。上記の例であれば、ポインタ１を１回目に使用するのは第１ブロックであり、２回目に使用するのは第２ブロックとなる。
【００７７】
その結果、ブロックカウンタテーブル１７ａの各ブロックに対する消去演算回数の歩進に偏りが生じにくくなる。その結果、メモリセルの消去回数の平準化を行うことができ、メモリセルの寿命を長くすることができる。
【００７８】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【符号の説明】
【００７９】
１０…ＮＡＮＤ型フラッシュメモリ
１１…ＮＡＮＤコントローラ
１２…ホストインターフェース回路
１３…ＭＰＵ
１４…ＲＯＭ
１５…ＲＡＭ
１６…ＮＡＮＤインターフェース回路
１７ａ…ブロックカウンタテーブル
１７ｂ…ページカウンタテーブル
３０…乱数取得部
３１…条件判定部
３２…消去回数歩進部
３３…カウンタ記憶部
３４…変更部 
【図１】
2011138364.tif 000003
【図２】
2011138364.tif 000004
【図３】
2011138364.tif 000005
【図４】
2011138364.tif 000006
【図５】
2011138364.tif 000007
【図６】
2011138364.tif 000008
【図７】
2011138364.tif 000009