(57)【特許請求の範囲】
【請求項１】
複数のメモリセルがそれらのソース、ドレインを隣接するメモリセル同士で共有する形で直列接続され、前記直列接続の一端がソース線、もう一端がビット線に接続された、複数の記憶領域を有するＮＡＮＤセルを備える不揮発性半導体メモリを使用した不揮発性半導体メモリ装置において、
前記複数の記憶領域におけるデータ書き換え情報を管理して前記複数の記憶領域のうち一定期間データ書き込みがない第１の記憶領域を特定し、該第１の記憶領域に格納されたデータを、前記複数の記憶領域に含まれる第２の記憶領域に移動することを特徴とする不揮発性半導体メモリ装置。
【請求項２】
前記複数の記憶領域が、前記ＮＡＮＤセルが独立に消去可能な単位となる容量で区切られた領域であることを特徴とする請求項１に記載の不揮発性半導体メモリ装置。
【請求項３】
前記第１の記憶領域が、前記データ書き換え情報の初期化以降にデータ書き換えが行われていない記憶領域であることを特徴とする請求項１又は２に記載の不揮発性半導体メモリ装置。
【請求項４】
複数のメモリセルがそれらのソース、ドレインを隣接するメモリセル同士で共有する形で直列接続され、前記直列接続の一端がソース線、もう一端がビット線に接続された、複数の記憶領域を有するＮＡＮＤセルを備える不揮発性半導体メモリの制御方法であって、
前記複数の記憶領域におけるデータ書き換え情報を管理して前記複数の記憶領域のうち一定期間データ書き込みがない第１の記憶領域を特定し、該第１の記憶領域に格納されたデータを、前記複数の記憶領域に含まれる第２の記憶領域に移動することを特徴とする不揮発性半導体メモリの制御方法。
【請求項５】
前記複数の記憶領域が、前記ＮＡＮＤセルが独立に消去可能な単位となる容量で区切られた領域であることを特徴とする請求項４に記載の不揮発性半導体メモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリに係り、特に電気的に書き換え可能な不揮発性半導体メモリ素子（ＥＥＰＲＯＭ）のうちのＮＡＮＤ型ＥＥＰＲＯＭを用いた不揮発性半導体メモリ装置システム及びその制御方法に関する。
【背景技術】
【０００２】
コンピュータの２次記憶装置には、現在磁気ディスク装置が広く用いられているが、近年、電気的に書き換え可能な不揮発性半導体メモリ（ＥＥＰＲＯＭ）が、その機械的強度に対する信頼性、低消費電力、可搬性の良さ、高速アクセスといった特徴を生かして、磁気ディスクを置き換えるような用途に使われだした。
【０００３】
しかし、磁気ディスク装置とＥＥＰＲＯＭには機能的な相違点があるため、従来の磁気ディスク装置をそのまま置き換えるためには、これを埋めるための制御が必要となる。
【０００４】
ＥＥＰＲＯＭの一つとして、高集積化が可能なＮＡＮＤ型ＥＥＰＲＯＭが知られている。これは、複数のメモリセルをそれらのソース、ドレインを隣接するもの同士で共有する形で直列接続して一単位とし、ビット線に接続するものである。メモリセルは通常、電荷蓄積層と制御ゲートが積層されたＦＥＴＭＯＳ構造を有する。メモリセルアレイは、ｐ型基板、又はｎ型基板に形成されたｐ型ウェル内に集積形成される。ＮＡＮＤセルのドレイン側は選択ゲートを介してビット線に接続され、ソース側はやはり選択ゲートを介して、ソース線（基準電位配線に接続される（図２１））。メモリセルの制御ゲートは、行方向に連続的に接続されてワード線となる。通常同一ワード線につながるメモリセルの集合を１ページと呼び、一組のドレイン側及びソース側の選択ゲートに挟まれたページの集合を１ＮＡＮＤブロック又は単に１ブロックと呼ぶ（図２２）。通常１ブロックは独立に消去可能な最小単位となる。
【０００５】
ＮＡＮＤ型ＥＥＰＲＯＭの動作は次の通りである。データの消去は１ＮＡＮＤブロック内のメモリセルに対して同時に行われる。即ち選択されたＮＡＮＤブロックの全ての制御ゲートを基準電位ＶＳＳとし、ｐ型ウェル及びｎ型基板に高電圧ＶＰＰ（例えば２０Ｖ）を印加する。これにより、全てのメモリセルにおいて浮遊ゲートから基板に電子が放出され、しきい値は負の方向にシフトする。通常この状態を”１”状態と定義する。またチップ消去は全ＮＡＮＤブロックを選択状態にすることによりなされる。
【０００６】
データの書き込み動作は、ビット線から最も離れた位置のメモリセルから順に行われる。ＮＡＮＤブロック内の選択された制御ゲートには高電圧ＶＰＰ（例えば２０Ｖ）を印加し、他の非選択ゲートには中間電位ＶＭ（例えば１０Ｖ）を与える。またビット線にはデータに応じて、ＶＳＳ又はＶＭを与える。ビット線にＶＳＳが与えられたとき（”０”書き込み）、その電位は選択メモリセルに伝達され、浮遊ゲートに電子注入が生ずる。これによりその選択メモリセルのしきい値は正方向にシフトする。通常この状態を”０”状態と定義する。ビット線にＶＭが与えられた（”１”書き込み）メモリセルには電子注入は起らず、従ってしきい値は変化せず負に留まる。データの読み出し動作はＮＡＮＤブロック内の選択されたメモリセルの制御ゲートをＶＳＳとして、それ以外の制御ゲート及び選択ゲートをＶＣＣとし選択メモリセルで電流が流れるか否かを検出することにより行われる。
【０００７】
ＮＡＮＤ型ＥＥＰＲＯＭではデータの書き込みはソース線に近いページからドレイン側のページに順に行なわれる必要がある。その必要性を図２３を参照して以下に説明する。”１”書き込みは中間電位ＶＭ（１０Ｖ程度）を選択メモリセルのドレインに転送し、電子の注入を起こさせず消去状態（即ち負のしきい値）を保つ。図２３は制御ゲート１が選択状態（ＶＰＰ）のときを示している。よって制御ゲート２は非選択でＶＭが与えられている。またドレインにもＶＭ（”１”書き込み）が与えられている。図２３（ａ）はソース側から書き込みを行なったときの図、図２３（ｂ）はドレイン側から書き込みを行なった場合のものである。図２３（ａ）の場合ドレイン側のセルＭａ２のしきい値は負であるので、ドレインの電位ＶＭは確実にソース側セルＭａ１に転送される。しかしながら、図２３（ｂ）の場合ドレイン側セルＭｂ２にすでに”０”書き込み動作がなされ、正のしきい値（たとえば３．５Ｖ）を持っていたとすると、ソース側セルＭｂ１に”１”を書き込む際、セルＭｂ１にはＶＭからセルＭｂ２のしきい値電圧分差し引いた電圧しか転送されてこない。よってセルＭｂ１では制御ゲートと基板間の電位差が大きくなって誤書き込みが起こる可能性がある。以上のようにソース側から順に書き込む手段は誤書き込みを防ぐ意味で重要である。
【０００８】
従来の磁気ディスク装置では、データの読み出しや書き込みといったアクセスは、セクタを単位として行われている。磁気記録媒体上に同心円状に形成される記憶領域の１本１本はトラックと呼ばれているが、このトラックがさらに数十個の領域に分割されてセクタと呼ばれる記憶単位が形成されている。パーソナルユースの携帯型コンピュータに使用されている典型的磁気ディスク装置の１セクタの容量は５１２バイトである。
【０００９】
また、コンピュータが磁気ディスク装置にデータを記憶させる場合の一塊のデータをファイルと呼んでいるが、このファイルが記憶装置上のどの場所に記憶されているのかを管理するのが、オペレーティングシステム（以下ＯＳ）の重要な機能の一つである。
【００１０】
図２４は、パーソナルユースの携帯型コンピュータに使用されている典型的なＯＳの一つであるＭＳ−ＤＯＳがファイル管理をするために磁気ディスク装置の記憶領域をどの様に使用しているかを示す図である。６１のブート領域はコンピュータが起動するときに必要な情報が納められている領域で、ユーザファイルの管理には関わらない領域である。６４のルートディレクトリ領域には、ファイルの名前とそれに付随する情報を記録したファイル管理用テーブルが納められている。ルートディレクトリにより他のデータファイルと同様な扱いで管理されるが、その内容はルートディレクトリと同一の、サブディレクトリと呼ばれるものがデータ領域に階層的に存在し得る。これらは、存在する領域と階層中での順位を除いて機能的には同じものであるので総称して単にディレクトリと呼ばれる。ディレクトリ中の１つのファイルに関する情報は３２バイトの領域を占めていてその内容は図２５に示すようになっている。磁気ディスク装置のデータ記録がセクタを単位としていることは先に述べたが、ファイルに対してディスク上の領域を割り当てるにはクラスタという論理的単位を用いる。１クラスタは、２のべき乗倍個のセクタで構成されるようにディスクの種類によって決められている。図２５の６６のスタートクラスタ番号とはファイルの先頭に割り当てられたクラスタの番号である。図２４の６２のＦＡＴ領域には、６５のデータ領域中のクラスタがどの様な順につながって、１つのファイルを構成しているのかを表すデータ領域へのファイル割当情報が納められている。６３はＦＡＴ領域６２のバックアップである。以上のように、ＭＳ−ＤＯＳのファイル管理は、ＦＡＴ領域とルートディレクトリ領域の情報をもとに行われるが、これらの領域の位置と大きさは、ディスクの種類ごとに決められていて固定である。
【００１１】
ＮＡＮＤ型ＥＥＰＲＯＭのアクセスの単位は前述の通りページである。４ＭビットのＮＡＮＤ型ＥＥＰＲＯＭを例に取ると、１ページは５１２バイトで、１ブロックは８ページで構成されている。よって、磁気ディスク装置をＮＡＮＤ型ＥＥＰＲＯＭで置き換えるような応用においては、ディスクの１セクタをＮＡＮＤ型ＥＥＰＲＯＭの１ページに対応させると変換が容易である。しかしながら磁気ディスク装置をＥＥＰＲＯＭで置き換えようとする場合に問題となる大きな相違点の一つに、データの書き換え可能回数がある。磁気ディスク装置の場合、媒体上に記録されるデータの書き換え回数には制限がなく、その寿命はヘッドと磁気記録媒体が接触することによる損傷といった機械的な要因に支配されている。一方ＥＥＰＲＯＭの場合は、データの書き換え可能回数が現状の技術では１０4 ないし１０5 回程度しかない。
【００１２】
また、前述のように、磁気ディスク装置の１セクタに記録される”データ”量は５１２バイトであるが、このデータ量とはユーザが記録再生する情報の量で、セクタ内にはこの他にも、記録再生制御に必要な情報が追加して書き込まれてある。そういった情報の一つに誤り訂正コード（以下ＥＣＣコード）がある。これは、媒体の欠陥やノイズの影響等で、ユーザのデータが正しく読み取れなかった場合に、読み取りデータに誤りがあることを検出したり、さらにその誤りを訂正したりするための情報で、セクタにデータを書き込むときに、ＥＣＣ発生回路が記録されるデータをもとに計算し、データとともに媒体上に書き込まれる。
【００１３】
ＮＡＮＤ型ＥＥＰＲＯＭのアクセス単位はページであり、多少の相違はあるものの、これを磁気ディスク装置のセクタに相当するものと見なすことができる。
【００１４】
信頼性を向上させるため、磁気ディスク装置のように、１ページの物理的な容量をユーザデータが記録再生される情報量より多くして、その冗長分をＥＣＣに割り当てることは有効な施策の一つである。
【００１５】
従来の磁気ディスク装置では、これを記憶装置として使用するために、フォーマットと呼ばれる初期化が必要とされる。フォーマットにより、磁気記録媒体上には一連の複数セクタが円周上に並んだトラックが形成され、さらにこのトラックが同心円状に複数（通常数百〜千数百）本形成される。このとき、各セクタは、ユーザデータ領域に特定の初期化パターンが書き込まれるとともに、記録再生制御に必要な情報が書き込まれる。ＥＣＣも初期化パターンから計算されたものが書き込まれる。一方、ＮＡＮＤ型ＥＥＰＲＯＭは、先の説明からわかるように、一度書き込みを行ったページに対しては、磁気ディスク装置で行われるような重ね書きをすることは出来ない。例え１ページでもデータを書き換えるためには、複数のページからなるブロックを単位として消去を行う必要があるから、消去されるブロックの他のページは、必要によって待避させて消去後に書き戻すこともしなければならない。よって、消去後のページは、有効なユーザデータを書き込むときまで消去状態に保っていた方が好都合の場合が多い。
【００１６】
磁気ディスク装置の場合、装置に保証された寿命時間を２００００動作時間、この内の数分の１がデータの書き換えに費やされる時間であるとすると、ファイル管理領域等の特定の記憶領域に対して最悪で１０9 回程度の書き換えが行われると見積もることができる。これに対してＮＡＮＤ型ＥＥＰＲＯＭは、前述の通り、書き換え可能回数は１０5 回程度であるから、磁気ディスク装置と同様の使い方をすると、１ブロックのみに書き込みが集中するという最悪の場合に、１万分の１の回数しか書き込みを行うことが出来ない。実際のデータの書き込み位置は記憶領域内に分散するので、その分、見かけの書換回数はこれよりは増加する。ところが、１度書き込まれた後に長期間消去されないデータが存在すると、書き込み可能領域が狭くなったのと等価であるから、それだけ書き換えできる回数が減少する。
【００１７】
また、ＯＳによるファイル管理のように、一般に、ファイルはデータ領域の空いた領域であればどこに記録されてもよく、その場所はディレクトリとＦＡＴのようなテーブルで管理されている。よって、書き換え可能回数に制限があるＥＥＰＲＯＭにこのようなファイル管理を適用しても、ファイルに関しては、同一場所への書き換えが集中しないように書き込み位置を分散させるのは容易である。
【００１８】
ところが、ファイルを書き込んだり書き換えたりした場合には必ずファイル管理テーブルの内容の書き換えが発生するので、これらのテーブルデータが書き換えられる頻度は、個々のデータファイルが書き込まれる頻度に比べてかなり多い。
【００１９】
しかも、このテーブルはファイルの記録場所を検索するおおもとの情報であるから、いつも決まった位置に記録されている必要がある。よって、ＥＥＰＲＯＭをファイル記憶装置に応用した場合、この管理テーブル領域に集中した書き換えによって、短時間で寿命に至ってしまうおそれがあるという問題があった。
【００２０】
さらに、前述の説明から分るように、磁気ディスク装置では、有効なユーザデータが書き込まれる前のセクタも、ユーザデータの書き込まれたセクタと同様にＥＣＣによるチェックを行って何等差し支えない。これに対して、消去後のページが有効なユーザデータを書き込むときまで消去状態に保たれるように制御されたＮＡＮＤ型ＥＥＰＲＯＭでは、有効なユーザデータが書き込まれる前のページを読み出すと、ＥＣＣを含めたページ内の情報は全て”１”になっているから、ＥＣＣ検査回路は誤りがあるという判定を下してしまう。
【００２１】
通常、ホストコンピュータのオペレーティングシステムは、有効なデータの書かれていないページのみを読み出そうとすることはないが、複数のページをファイル管理の単位としている場合に、既に有効なデータの書かれたページと一緒に読み込もうとすることは有り得る。また、ページの書き換えにともなってブロック消去をするときに、消去されるブロック内の他のページに、既に書き込みがされているのか否かを、データの待避を制御する手段が知り得ないような制御装置の場合には、消去状態のページもバッファに読み込まなくてはならない。こうした場合に、消去状態のページのデータに対してＥＣＣ検査回路が働いてしまうと、上述のように、本来は正常なページであるにもかかわらず、誤りが発生したと誤認され、エラー処理に制御が移ってしまい、処理を正常に進めることが出来なくなってしまう。
【発明の開示】
【発明が解決しようとする課題】
【００２２】
本発明は、磁気ディスク装置と同等の寿命を実現することができ、また高信頼性を確保することができる不揮発性半導体メモリ装置システム及びその制御方法を提供する。
【課題を解決するための手段】
【００２３】
本発明の一態様によれば、複数のメモリセルがそれらのソース、ドレインを隣接するメモリセル同士で共有する形で直列接続され、直列接続の一端がソース線、もう一端がビット線に接続された、複数の記憶領域を有するＮＡＮＤセルを備える不揮発性半導体メモリを使用した不揮発性半導体メモリ装置において、複数の記憶領域におけるデータ書き換え情報を管理して複数の記憶領域のうち一定期間データ書き込みがない第１の記憶領域を特定し、その第１の記憶領域に格納されたデータを、複数の記憶領域に含まれる第２の記憶領域に移動する不揮発性半導体メモリ装置が提供される。
【００２４】
本発明の他の態様によれば、複数のメモリセルがそれらのソース、ドレインを隣接するメモリセル同士で共有する形で直列接続され、直列接続の一端がソース線、もう一端がビット線に接続された、複数の記憶領域を有するＮＡＮＤセルを備える不揮発性半導体メモリの制御方法であって、複数の記憶領域におけるデータ書き換え情報を管理して複数の記憶領域のうち一定期間データ書き込みがない第１の記憶領域を特定し、その第１の記憶領域に格納されたデータを、複数の記憶領域に含まれる第２の記憶領域に移動する不揮発性半導体メモリの制御方法が提供される。
【発明の効果】
【００２５】
本発明によれば、磁気ディスク装置と同等の寿命を実現することができ、また高信頼性を確保することができる不揮発性半導体メモリ装置システム及びその制御方法を提供できる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態を図面を参照して説明する。本発明の実施の形態は、ＮＡＮＤ型ＥＥＰＲＯＭを用いた不揮発性半導体メモリ装置及びその制御方法、不揮発性半導体メモリ装置システム及びその制御方法に適用されている。
【００２７】
（第１の実施の形態）
図１ないし図９は、本発明の第１の実施の形態を示す図である。まず、図２は、メモリ手段であるＥＥＰＲＯＭにおける記憶領域の構成を示している。同図の３１〜３６は、管理の単位となる容量で区切られた複数の記憶領域であり、消去単位と同一或いはその整数倍とすると扱いが簡単になるが、それに限定されるものではない。また、第１の実施の形態では以下この単位記憶領域を単にブロックと称するが、これはＮＡＮＤ型ＥＥＰＲＯＭの消去単位であるブロックと解釈しても構わないがそれに限定されるものでもない。各ブロックに付けられた番号は、各ブロックを順位付けするためのもので、物理的なアドレス順とするのが分りやすいが、特定の規則に従った論理的な順位であっても構わない。以後簡単のために、ここで説明に使用するメモリ手段は６個のブロックで構成されていることにする。
【００２８】
図１は、上記ブロック３１〜３６への書き込みを管理するためのテーブルである。１１〜１６の各項目は、ブロック３１〜３６の状態を示すもので、２１〜２３に図示されるように３つのフラグで構成されている。即ち、ブロックに有意なデータが記録されているか否かを管理する第３の管理手段としてのフラグ（以下、有効フラグ又はＶフラグ）２３と、有効フラグとともに参照することで、データの書き込みをブロックの順位にしたがって１方向に向かって、かつ循環して使用されるように管理するための第１の管理手段としてのフラグ（以下、消去フラグ又はＥフラグ）２１と、ブロックに記録されたデータが或る時点から後に変更されたか否かを管理する第２の管理手段としてのフラグ（以下、変更フラグ又はＣフラグ）２２である。
【００２９】
次に、図面とフローチャートを使用して、第１の実施の形態の書き込み方式を説明する。なお、書き込まれたデータを読み出すためには、書き込んだデータのタグ（例えばファイル名）と書き込んだ位置の対応を管理する手段が必要であるが、これは通常のファイルシステム（ＯＳ）で行われている方法を適用可能なので第１の実施の形態では説明を省略する。
【００３０】
図３及び図４はデータ書き込みの手順を示すフローチャート、図５はデータ消去の手順を示すフローチャート、図６はデータの書き換え手順を示すフローチャート、図７は書き込み手順中で使用されるサブルーチンのフローチャートである。図８及び図９はデータの書き込みによって、図２で示した記憶領域と図１で示したそれを管理するテーブルの状態の変化を同時に説明するための図である。図８及び図９の記憶領域を示す図中の斜線のブロックは有効なデータが書き込まれている領域を示すものとする。
【００３１】
まずメモリ装置が使用される前には、図８（ａ）に示されるように全てのフラグが”０”に初期化されるものとする。この状態で第１ブロックの書き込みを行うことを考える。図３のステップ２０１で必要な容量が空いていることをチェックする。次に、この方式では有意なデータが記録されているか否かを管理するＶフラグと一方向に向っての循環使用を管理するＥフラグの両方が”０”のブロックにしか書き込みを行わないので、この条件に合うブロック検索を行う（図３ステップ２０２，２０３、図７ステップ３０１〜３０４）。条件に合うことが確認された後、第１ブロックにデータを書き込んで（図３ステップ２０４〜２０６）、ＣフラグとＶフラグを”１”にする（図３ステップ２０７、図８（ｂ））。今書き込んだデータを即書き換えると、図５の手順に従って、第１ブロックのＶフラグ”０”に、Ｅフラグを”１”に変更し、初回の書き込みと同じ手順で検索される第２ブロックにデータを書き込む（図８（ｃ））。これで第１ブロックは論理的な消去状態になるが、電気的な消去は別に行わなければならない。バックグラウンドで行われるのが処理速度の面で好ましいが、その方法は第１の実施の形態の本質から外れるので説明は省略する。以下の説明ではデータが書き込まれる前にこれらのブロックに電気的な消去は何らかの方法で済んでいることと仮定する。
【００３２】
こうした書き込み処理が続くと、データは、ブロック番号順にメモリ全体に一様に書き込まれ、例えば図８（ｄ）に示すような状態になる。ここで例えば１ブロック分のデータの書き込みをしようとすると、空き領域はあるが、図３のステップ２０３の検索で失敗する。検索に失敗したという状態は、ブロックの空き領域に対する一様な書き込みが一巡したことを示している。よって、次の一巡の単一方向書き込みを制御するために全てのブロックに対するＥフラグを”０”にクリアする（図３ステップ２０９、図８（ｅ））。
【００３３】
単一方向循環による一様書き込みとともに第１の実施の形態を特徴づけるのは長期間同じ場所に留まるデータを移動させる点である。これを実現するためには、移動を行うのに適当な、書き込み回数に関連したタイミングが必要となるが、その一つとしてＥフラグが全てクリアされる時点を利用する。図３では、この時点におけるステップ２１０〜２１３の処理でＣフラグを検査することにより、移動対象のデータを選択している。図８（ｅ）では、全てのブロックのＣフラグが”１”になっているが、これは、Ｃフラグが初期化された時点から図８（ｅ）の状態になるまでに、全てのブロックが最低１回は書き換えられていることを示している。
【００３４】
この場合は、どのデータがより長く同じブロックを占有しているのか判断できないのでステップ２１４で初期化し直す（図８（ｆ））。その後、この一連の処理を起動させた第１ブロックのデータ書き込みを行う（図４ステップ２２４〜２２８，２０６、図９（ａ））。
【００３５】
さらに、第５ブロックのデータが消去されて図９（ｂ）の状態になり、第２ブロックの書き込みと第１ブロックの消去があって図９（ｃ）の状態になったとする。書き込みパターンの最後として、この時点で第１ブロックの書き込みを行う場合を考える。書き換えはもう一巡したので書き込み可能領域の検索には失敗し、Ｅフラグが全てクリアされる（図９（ｄ））。続いてＣフラグの検査が行われるが、今度は、第２ブロックのＣフラグが”０”であるので、このブロックのデータは比較的長期間書き換えが行われていないと判断し移動の対象にする。移動先の書き込み可能ブロックは、図３のステップ２１５〜２２０の手順に従って、移動対象データの入ったブロックを起点に書き込みが進行する方向へ循環して検索される。この例では、第４ブロックが該当するので、第２ブロックはここにデータがコピーされた後消去される（図４ステップ２２１〜２２３、図９（ｅ））。これにより、図８（ｃ）の時点からずっと第２ブロックを占有していたデータが移動され、このブロックが書き換え可能になる。
【００３６】
あとは図９（ｃ）の時点で要求された１ブロック分のデータを空きブロックに書き込めばよいのであるが、通常の書き込みと同様に書き込み可能ブロックを検索しても失敗してしまう場合が有り得る。即ち図９（ｃ）の時点で空きブロックが丁度１個しかなかった場合で、このときは、この空きブロックに移動対象データが入り、移動対象データが元々入っていたブロックのＥフラグが”１”となっているので検索に引っかからない。よって図４のステップ２２７で示したようにＥフラグをクリアする処理が必要である。移動対象のデータが元々入っていたブロックのＥフラグを”０”のままにしておくような制御を行えばこの様なことはなくなるが、そのかわりに、他に空きブロックが有るにもかかわらず、移動直後のブロックが書き換え可能ブロックとして検索され、バックグラウンドの電気的消去が間に合わないという様なことが起り得る。
【００３７】
（第２の実施の形態）
図１０ないし図１４には、本発明の第２の実施の形態を示す。第２の実施の形態では、不揮発性半導体メモリとして４ＭビットＮＡＮＤ型ＥＥＰＲＯＭを用いることを仮定する。また、実施の形態の要点を簡略に説明するため、ＭＳ−ＤＯＳのクラスタに相当する記憶領域の論理的な管理の単位をＮＡＮＤ型ＥＥＰＲＯＭの消去単位であるブロックと一致させるものとする。また、第２の実施の形態ではユーザファイル、ファイルの記録位置を管理するテーブル及びそのテーブルへの階層化されたポインタのうちその位置が固定されないものは、記憶領域中の特定の領域に記録される必要がないので、出来得る限り書き込みが記憶領域全体に分散されるように制御されるべきである。しかしながら、第２の実施の形態は、ファイルの位置を管理するテーブルが記憶領域中の特定の領域に固定されずに済む手法を説明するためのものなので、分散書き込み制御がされることを前提とするが、その詳細については触れない。
【００３８】
図１１は、ファイルの記録された位置を管理するためのテーブルの一つを構成するブロックの１例であり、ここでは仮にルート管理テーブルと呼ぶことにする。図１１の３８はＭＳ−ＤＯＳのＦＡＴと同様な構成で記憶領域全体のブロック割当状況を管理するためのテーブルであるが、第２の実施の形態では、ユーザーファイルのみならず、ファイル管理テーブル自身やそのポインタといった管理情報の記録されたブロックの位置も動くので、それらの割当も併せて管理されるものとする。図１１の３９はブロックの割当情報がこのブロック内に納まらなかった場合に使用される追加ブロックの位置や、ＭＳ−ＤＯＳのディレクトリに相当するファイル名とそれに付随する情報に関する管理テーブル等の位置を示すポインタであるとする。即ち、図１１に示す管理テーブルをアクセスできれば、ファイル管理に関する情報は全てアクセス可能になるものとする。
【００３９】
図１２は、ルート管理テーブルの記録された位置を示すために、記録された位置を階層的に示すように構成されたポインタが記録されるブロックの１例である。図１２（ａ）の４１〜４８はＮＡＮＤ型ＥＥＰＲＯＭのページを表していて、４８がソース側、４１がドレイン側である。ポインタは１ページに納まる情報量とし、ＮＡＮＤ型ＥＥＰＲＯＭの書き込みルールに従ってソース側から順に書き込まれてゆくものとする。図１２（ａ）の４６〜４８の斜線のページは、更新されたポインタが書き込まれていたことを示し、４１〜４４の”ＮＵＬＬ”は消去されたままのページであることを示す。同図（ａ）の第１のポインタを納めたブロックは、４５のページの情報がルート管理テーブルの位置を示している。同図（ｂ）の第ｍのポインタを納めたブロックは、同様の構成で、第（ｍ−１）のポインタの位置を示すものとする。ポインタの数（階層数）をｎとした場合、第１〜第（ｎ−１）のポインタは、記憶可能な領域のどこに記録されてもよく、複数階のポインタを順に手繰ることでアクセスされる。第ｎのポインタ（以下、ルートポインタ）だけは、記憶領域の固定の位置に記録される。図１０は、この複数階に設定されたポインタのつながりを示している。
【００４０】
図１３は、第２の実施の形態に係るファイル管理方式に必要なルート管理テーブルの更新に伴なって発生する処理の手順を示したフローチャートである。ルート管理テーブルの内容は、予めＲＡＭに読み込まれて展開されており、更新はＲＡＭ上で行われた後に書き戻されるものとする。まず、ファイルの書き込み等でブロック割当に変更が生じると、変更されたルート管理テーブルを書き戻すブロックの位置を自身のブロック割当テーブルを参照して決定する（ステップ４０１）。次に、この位置をポインタに設定し、割当テーブルを更新してから書き込みを行う（ステップ４０２〜４０５）。図１４のフローチャートのステップ５０１〜５１０は、階層化されたポインタにブロック位置を設定する手順を示している。この手順は、階層化されたポインタの設定を変更するために再帰的に呼び出される。
【００４１】
次に、ポインタの階層数ｎの大きさの決め方を具体的に説明する。ファイルの書き込みによりブロックの割当に変更が起きると、その都度、ルート管理テーブルの内容が更新される。書き込みが特定ブロックに集中しないように、更新されたテーブル自体も別のブロックに書き込まれる。ルート管理テーブルの位置が変わったので第１のポインタの記録位置も更新される。ポインタの更新は同一ブロック内で８回（８ページ分）可能であるから、第１ポインタを納めたブロックは、ファイルの書き込みによるブロックの変更８回で一通りの書き込みが行われ、９回目の更新で位置が変わる。第２のポインタを納めたブロックは同様に、ファイルの書き込み６４回に１回の割で書き換えが起きると見積もることが出来る。ここで仮に、不揮発性半導体メモリ装置の総容量を２０Ｍバイトとすると、総ブロック数は１ブロックの容量が４ｋバイトであるから５１２０ブロックになる。
【００４２】
ＥＥＰＲＯＭの書き換え可能回数をＣ回とし、これらのブロックに均一に書き込みが行われたとすると、延べ５１２０×Ｃブロックの書き換えが発生し得る。ファイル１ブロック分の書き換えに対して管理テーブル１ブロックの書き換えが発生するとすると、１回に付き２ブロックの書き換えが起きるからブロック割当の変更の発生回数は最高で５１２０×Ｃ÷２＝２５６０×Ｃ回である。
【００４３】
第ｎポインタを記録した固定ブロックの書き換えは、ブロック割当の変更８n回に１回の割合で起きる。また、このブロックも最高Ｃ回の書き換えが可能であるから、８n ×Ｃ＝２3n×Ｃ回までのブロック割当の変更なら、この固定ブロックの書き換え回数が他のブロックより先に限界に達することはない。よって、必要な階層数ｎは、２3n×Ｃ＝２５６０×Ｃｎ＝ｌｏｇ2 ２５６０÷３ ≒４となる。
【００４４】
（第３の実施の形態）
図１５ないし図２０には、本発明の第３の実施の形態を示す。図１５は第３の実施の形態に係る不揮発性半導体メモリ装置の全体構成を示すブロック図である。同図において１１５はメモリ手段としてのＮＡＮＤ型ＥＥＰＲＯＭモジュールであり、複数個のページからなるブロックに分割されたメモリセルアレイで構成されている。ＥＥＰＲＯＭモジュール１１５はデータ線で結ばれたホストインターフェイス１０１を介して図示省略のホストシステムに接続されている。データ線上には、マルチプレクサ１１３及びデータバッファ１０７が設けられている。また、ホストインターフェイス１０１内には、データレジスタ１０２、アドレスレジスタ１０３、カウントレジスタ１０４、コマンドレジスタ１０５、ステータレジスタ１０６及びエラーレジスタ１１６が設けられている。１０８はコントロールロジック、１０９は誤り制御ロジック、１１４はアドレスジェネレータ、１１０は制御手段としての機能を有するＣＰＵ、１１１は作業用ＲＡＭ、１１２は制御プログラムＲＯＭである。制御プログラムＲＯＭ１１２には、データ書き込み等のための一連の制御プログラムが格納されている。
【００４５】
図１６は、誤り制御ロジック１０９の内部構成を示す図である。誤り検出手段としてのＥＣＣ検査回路１５０、誤り検出／訂正コード発生手段としてのＥＣＣ発生回路１５１及び消去検出手段としての消去検出回路１５２が備えられている。
【００４６】
第３の実施の形態のメモリ装置は、不揮発性メモリ領域であるＥＥＰＲＯＭモジュール１１５に記録されるデータに関し、必要に応じてメモリ領域の使用状況を管理するテーブルを使用する。このテーブルは、他のユーザ・データとともにＥＥＰＲＯＭモジュール１１５に記録されるが、この装置が起動するときに自動的に作業用ＲＡＭ１１１に読み込まれる。また、このテーブルは、更新される都度、或いは装置の使用が終了する時点でＥＥＰＲＯＭモジュール１１５に書き戻されることとする。
【００４７】
次に、この装置の動作をフローチャートを用いて説明する。ホストシステムは、図１５のホストインターフェイス１０１内のアドレスレジスタ１０３にアクセス開始アドレスを、カウントレジスタ１０４にアクセスしたいデータのセクタ長をセットし、最後にコマンドレジスタ１０５に読み出し／書き込み等の命令をセットする。ホストインターフェイス１０１のコマンドレジスタ１０５にアクセス命令が書き込まれると、コントローラ内のＣＰＵ１１０は、コマンドレジスタ１０５内の命令を読み込み、制御プログラムＲＯＭ１１２に納められたコマンド実行のための一連の制御プログラムを実行する。
【００４８】
図１７は、ＥＥＰＲＯＭモジュール１１５からデータを読み出す手順を示すフローチャートである。まず、図１５のＣＰＵ１１０は、ホストインターフェイス１０１にセットされた開始アドレスから、読み出しを行うべきＥＥＰＲＯＭモジュール１１５の物理的なアドレスを決定する（ステップ６０１）。次に、ＥＥＰＲＯＭモジュール１１５からデータバッファ１０７にデータを読み出す（ステップ６０２）。次いで、エラー処理及びデータバッファ１０７からホストシステムへのデータ転送等を実行する（ステップ６０３〜６０５）。
【００４９】
図１８及び図１９は、ＥＥＰＲＯＭモジュール１１５からデータバッファ１０７にデータを読み出す手順を示すフローチャートである。ＣＰＵ１１０は、ＥＥＰＲＯＭモジュール１１５をマルチプレクサ１１３を通してアクセスし読み出しモードに設定し、データバッファ１０７を読み出しモードに設定する（ステップ７０１，７０２）。アドレスジェネレータ１１４には、読み出しを行うべきＥＥＰＲＯＭモジュール１１５の物理的なアドレスを設定する（ステップ７０３）。
【００５０】
そして、データバッファ１０７に、読み出したデータを蓄えるべき領域を決定してその先頭番地をデータバッファ１０７への書き込みアドレスとして設定する（ステップ７０４）。その後、コントロールロジック１０８に対してデータ読み出しのための定められたシーケンスを実行するように指令を送る。
【００５１】
コントロールロジック１０８は、マルチプレクサ１１３をＥＥＰＲＯＭモジュール１１５からの読み出しデータがデータバッファ１０７に流れるように設定し、アドレスジェネレータ１１４の内容をインクリメントしながら、１セクタ分のデータを読み出す（ステップ７０５）。また、図１６のＥＣＣ検査回路１５０をこれらのデータ及びこれに付随して読み出されるＥＣＣコードを使って誤りを検出するように制御すると同時に、読み出されたデータが消去状態であるかどうかを検出するように消去検出回路１５２を制御する。消去検出回路１５２は、１セクタ分のデータ及びＥＣＣコードが全て消去後の状態である”１”であった場合に、ＣＰＵ１１０からアクセス可能なレジスタに、消去状態を検出したことを示すコードをセットする。１セクタ分のデータが読み出されると、ＣＰＵ１１０は、ＥＣＣ検査回路１５０をチェックしデータの誤りを検査する（ステップ７０６）。誤りが検出されなかった場合は、データバッファからホストシステムにデータを転送する。誤りが検出されると、ＣＰＵ１１０は次に消去検出回路１５２をアクセスし、消去状態が検出されていたならば、ＥＣＣ検査回路１５０の結果を誤検出とみなしバッファ内のデータをホストシステムに転送する。ＥＣＣ検査回路１５０が誤りを検出し、消去検出回路１５２も消去状態を検出しなかった場合で、検出された誤りが訂正可能な場合は、データバッファ１０７をアクセスして誤ったデータを訂正してからホストシステムにデータを転送する。
【００５２】
もし、訂正不可能な誤りが検出された場合には、ホストシステムに対するデータ転送は行わずに、ＣＰＵ１１０は、ホストインターフェイス１０１内のステータスレジスタ１０６にエラーが起きたことを示すコードを、エラーレジスタ１１６にエラーの内容を示すコードを設定し、ホストシステムに命令の実行が異常終了したことを通知して処理を終了する（ステップ７０７〜７１２）。
【００５３】
図２０は、データバッファからホストシステムにデータを転送する手順を示すフローチャートである。ＣＰＵ１１０は、データバッファ１０７に読み出したデータが蓄えられた領域の先頭番地を同バッファからの読み出しアドレスとして設定し（ステップ８０１，８０２）、コントロールロジック１０８に対して、ホストシステムに１セクタ分のデータの転送を行うように指令する。コントロールロジック１０８は、データバッファ１０７とホストインターフェイス１０１を制御してホストシステムに対して１セクタ分のデータを転送し（ステップ８０３）、これが終了するとアドレスレジスタ１０３を１セクタ分進め、カウントレジスタ１０４から１を減じ、ＣＰＵ１０８に転送が終了したことを通知する。ホストシステムに転送すべきデータが残っている限り、ＣＰＵ１１０はこの制御を繰り返す。読み出しデータが全て転送されたら、ＣＰＵ１１０は、ホストインターフェイス１０１内のステータスレジスタ１０６にエラーの無かったことを示すコードを設定し、ホストシステムに命令の実行が終了したことを通知して処理を終了する。
【００５４】
以上説明したように、本発明に係る不揮発性半導体メモリ装置による効果は、第１に、データの書き込みを複数の記憶領域に対して単一方向に循環して行うようにしたため、特定の記憶領域に集中することなく、書き込みを複数の記憶領域全体に均一に行うことができる。また、書き込まれた後、長期間変更を受けることなく同じ場所に留まっているデータは複数の記憶領域全体と比較した書きかえ回数に不均衡が生じないように移動させるようにしたため、見かけの書き込み領域が狭まって寿命を縮めてしまうことを防止することができる。したがって同一記憶場所の書き換え回数に制限があるにもかかわらず、磁気ディスク装置と同等の寿命を実現することができて用途を拡大することができる。
【００５５】
第２に、書き込まれたデータが変更されていない記憶領域の選択を、書き込みの１循環周期を以って行うようにしたため、見かけの書き込み領域を狭めてしまうことを一層適切に防止することができる。
【００５６】
第３に、書き換え頻度の高い管理テーブルの記憶領域上での配置は固定されず、またこの管理テーブルの位置を示すポインタは複数階に階層化して記録するようにしたため、検索のため固定した位置に記録されなければならないポインタの書き換え回数が他の領域と同等に抑えられて特定の記憶領域に書き込みが集中して短時間で寿命に至ってしまうことを防ぐことができる。したがって、上記第１の発明と同様に、同一記憶場所の書き換え回数に制限があるにもかかわらず、磁気ディスク装置と同等の寿命を実現することができる。
【００５７】
第４に、読み出されたデータからその記憶領域であるページ等が消去状態であるか否かを検出し、読み出しデータに誤りが検出された場合でも同時に消去状態が検出されたときには、その読み出しデータには誤りが無いものとして処理するようにしたため、消去状態のページ等がデータの書き込まれたページ等と区別無く読み出されるような制御が行われる場合にも、読み出しデータの正確な誤り検出を行うことができて高い信頼性を確保することができる。
【図面の簡単な説明】
【００５８】
【図１】本発明に係る不揮発性半導体メモリ装置の第１の実施の形態においてブロックへの書き込みを管理するためのテーブルの構成を示す図である。
【図２】第１の実施の形態においてＥＥＰＲＯＭにおける記憶領域の構成を示す図である。
【図３】第１の実施の形態において記憶領域へのデータの書き込みの手順を示すフローチャートである。
【図４】第１の実施の形態において記憶領域へのデータの書き込みの手順を示すフローチャートである。
【図５】第１の実施の形態においてデータ消去の手順を示すフローチャートである。
【図６】第１の実施の形態においてデータの書き換えの手順を示すフローチャートである。
【図７】図４のデータの書き込みの手順中で使用されるサブルーチンのフローチャートである。
【図８】第１の実施の形態においてデータの書き込みによる記憶領域及びこれを管理するテーブルの状態の変化を説明するための図である。
【図９】第１の実施の形態においてデータの書き込みによる記憶領域及びこれを管理するテーブルの状態の変化を説明するための図である。
【図１０】本発明の第２の実施の形態においてポインタとルート管理テーブルのつながり関係を示す図である。
【図１１】第２の実施の形態におけるルート管理テーブルの構成を示す図である。
【図１２】第２の実施の形態においてポインタが記録されたブロックを示す図である。
【図１３】第２の実施の形態においてルート管理テーブルの更新に伴なって発生する処理の手順を示すフローチャートである。
【図１４】第２の実施の形態においてポインタにブロック位置を設定する手順を示すフローチャートである。
【図１５】本発明の第３の実施の形態に係る不揮発性半導体メモリ装置の構成を示すブロック図である。
【図１６】図１５における誤り制御ロジックの内部構成を示す図である。
【図１７】第３の実施の形態においてＥＥＰＲＯＭモジュールからデータの読み出しの手順を示すフローチャートである。
【図１８】第３の実施の形態においてＥＥＰＲＯＭモジュールからデータバッファにデータを読み出す手順を示すフローチャートである。
【図１９】第３の実施の形態においてＥＥＰＲＯＭモジュールからデータバッファにデータを読み出す手順を示すフローチャートである。
【図２０】図１７におけるデータバッファからホストシステムに読み出したデータを転送する手順を示すフローチャートである。
【図２１】ＥＥＰＲＯＭの一つのＮＡＮＤセルを示す等価回路図である。
【図２２】ＥＥＰＲＯＭのメモリセルアレイを示す等価回路図である。
【図２３】ＮＡＮＤ型ＥＥＰＲＯＭの書き込み動作を説明するための図である。
【図２４】オペレーティングシステムの一つであるＭＳ−ＤＯＳのファイル管理方法を説明するための図である。
【図２５】ディレクトリの構成例を説明するための図である。
【符号の説明】
【００５９】
２１…第１の管理手段となるもので、有効フラグとともに参照しデータの書き込みをブロックの順位にしたがって１方向に向かって、かつ循環して使用されるように制御するためのフラグ
２２…第２の管理手段となるもので、ブロックに記録されたデータが或る時点から後に変更されたか否かを管理するフラグ
２３…ブロックに有意なデータが記録されているか否かを管理するフラグ
３１〜３６…管理単位となる容量で区切られた複数の記憶領域
３８…ブロックの割当を管理するテーブル
４１〜４８，５１〜５８ ポインタ情報が記録されるページ
１０９…誤り制御ロジック
１１０…ＣＰＵ（制御手段）
１１５…ＥＥＰＲＯＭモジュール（メモリ手段）
１５０…ＥＣＣ検査回路（誤り検出手段）
１５１…ＥＣＣ発生回路
１５２…消去検出回路（消去検出手段）
【図１】
0003974149.tif 000002
【図２】
0003974149.tif 000003
【図３】
0003974149.tif 000004
【図４】
0003974149.tif 000005
【図５】
0003974149.tif 000006
【図６】
0003974149.tif 000007
【図７】
0003974149.tif 000008
【図８】
0003974149.tif 000009
【図９】
0003974149.tif 000010
【図１０】
0003974149.tif 000011
【図１１】
0003974149.tif 000012
【図１２】
0003974149.tif 000013
【図１３】
0003974149.tif 000014
【図１４】
0003974149.tif 000015
【図１５】
0003974149.tif 000016
【図１６】
0003974149.tif 000017
【図１７】
0003974149.tif 000018
【図１８】
0003974149.tif 000019
【図１９】
0003974149.tif 000020
【図２０】
0003974149.tif 000021
【図２１】
0003974149.tif 000022
【図２２】
0003974149.tif 000023
【図２３】
0003974149.tif 000024
【図２４】
0003974149.tif 000025
【図２５】
0003974149.tif 000026