コンピュータの2次記憶装置には、現在磁気ディスク装置が広く用いられているが、近年、電気的に書き換え可能な不揮発性半導体メモリ(EEPROM)が、その機械的強度に対する信頼性、低消費電力、可搬性の良さ、高速アクセスといった特徴を生かして、磁気ディスクを置き換えるような用途に使われだした。
しかし、磁気ディスク装置とEEPROMには機能的な相違点があるため、従来の磁気ディスク装置をそのまま置き換えるためには、これを埋めるための制御が必要となる。
EEPROMの一つとして、高集積化が可能なNAND型EEPROMが知られている。これは、複数のメモリセルをそれらのソース、ドレインを隣接するもの同士で共有する形で直列接続して一単位とし、ビット線に接続するものである。メモリセルは通常、電荷蓄積層と制御ゲートが積層されたFETMOS構造を有する。メモリセルアレイは、p型基板、又はn型基板に形成されたp型ウェル内に集積形成される。NANDセルのドレイン側は選択ゲートを介してビット線に接続され、ソース側はやはり選択ゲートを介して、ソース線(基準電位配線に接続される(図21))。メモリセルの制御ゲートは、行方向に連続的に接続されてワード線となる。通常同一ワード線につながるメモリセルの集合を1ページと呼び、一組のドレイン側及びソース側の選択ゲートに挟まれたページの集合を1NANDブロック又は単に1ブロックと呼ぶ(図22)。通常1ブロックは独立に消去可能な最小単位となる。
NAND型EEPROMの動作は次の通りである。データの消去は1NANDブロック内のメモリセルに対して同時に行われる。即ち選択されたNANDブロックの全ての制御ゲートを基準電位VSSとし、p型ウェル及びn型基板に高電圧VPP(例えば20V)を印加する。これにより、全てのメモリセルにおいて浮遊ゲートから基板に電子が放出され、しきい値は負の方向にシフトする。通常この状態を”1”状態と定義する。またチップ消去は全NANDブロックを選択状態にすることによりなされる。
データの書き込み動作は、ビット線から最も離れた位置のメモリセルから順に行われる。NANDブロック内の選択された制御ゲートには高電圧VPP(例えば20V)を印加し、他の非選択ゲートには中間電位VM(例えば10V)を与える。またビット線にはデータに応じて、VSS又はVMを与える。ビット線にVSSが与えられたとき(”0”書き込み)、その電位は選択メモリセルに伝達され、浮遊ゲートに電子注入が生ずる。これによりその選択メモリセルのしきい値は正方向にシフトする。通常この状態を”0”状態と定義する。ビット線にVMが与えられた(”1”書き込み)メモリセルには電子注入は起らず、従ってしきい値は変化せず負に留まる。データの読み出し動作はNANDブロック内の選択されたメモリセルの制御ゲートをVSSとして、それ以外の制御ゲート及び選択ゲートをVCCとし選択メモリセルで電流が流れるか否かを検出することにより行われる。
NAND型EEPROMではデータの書き込みはソース線に近いページからドレイン側のページに順に行なわれる必要がある。その必要性を図23を参照して以下に説明する。”1”書き込みは中間電位VM(10V程度)を選択メモリセルのドレインに転送し、電子の注入を起こさせず消去状態(即ち負のしきい値)を保つ。図23は制御ゲート1が選択状態(VPP)のときを示している。よって制御ゲート2は非選択でVMが与えられている。またドレインにもVM(”1”書き込み)が与えられている。図23(a)はソース側から書き込みを行なったときの図、図23(b)はドレイン側から書き込みを行なった場合のものである。図23(a)の場合ドレイン側のセルMa2のしきい値は負であるので、ドレインの電位VMは確実にソース側セルMa1に転送される。しかしながら、図23(b)の場合ドレイン側セルMb2にすでに”0”書き込み動作がなされ、正のしきい値(たとえば3.5V)を持っていたとすると、ソース側セルMb1に”1”を書き込む際、セルMb1にはVMからセルMb2のしきい値電圧分差し引いた電圧しか転送されてこない。よってセルMb1では制御ゲートと基板間の電位差が大きくなって誤書き込みが起こる可能性がある。以上のようにソース側から順に書き込む手段は誤書き込みを防ぐ意味で重要である。
従来の磁気ディスク装置では、データの読み出しや書き込みといったアクセスは、セクタを単位として行われている。磁気記録媒体上に同心円状に形成される記憶領域の1本1本はトラックと呼ばれているが、このトラックがさらに数十個の領域に分割されてセクタと呼ばれる記憶単位が形成されている。パーソナルユースの携帯型コンピュータに使用されている典型的磁気ディスク装置の1セクタの容量は512バイトである。
また、コンピュータが磁気ディスク装置にデータを記憶させる場合の一塊のデータをファイルと呼んでいるが、このファイルが記憶装置上のどの場所に記憶されているのかを管理するのが、オペレーティングシステム(以下OS)の重要な機能の一つである。
図24は、パーソナルユースの携帯型コンピュータに使用されている典型的なOSの一つであるMS−DOSがファイル管理をするために磁気ディスク装置の記憶領域をどの様に使用しているかを示す図である。61のブート領域はコンピュータが起動するときに必要な情報が納められている領域で、ユーザファイルの管理には関わらない領域である。64のルートディレクトリ領域には、ファイルの名前とそれに付随する情報を記録したファイル管理用テーブルが納められている。ルートディレクトリにより他のデータファイルと同様な扱いで管理されるが、その内容はルートディレクトリと同一の、サブディレクトリと呼ばれるものがデータ領域に階層的に存在し得る。これらは、存在する領域と階層中での順位を除いて機能的には同じものであるので総称して単にディレクトリと呼ばれる。ディレクトリ中の1つのファイルに関する情報は32バイトの領域を占めていてその内容は図25に示すようになっている。磁気ディスク装置のデータ記録がセクタを単位としていることは先に述べたが、ファイルに対してディスク上の領域を割り当てるにはクラスタという論理的単位を用いる。1クラスタは、2のべき乗倍個のセクタで構成されるようにディスクの種類によって決められている。図25の66のスタートクラスタ番号とはファイルの先頭に割り当てられたクラスタの番号である。図24の62のFAT領域には、65のデータ領域中のクラスタがどの様な順につながって、1つのファイルを構成しているのかを表すデータ領域へのファイル割当情報が納められている。63はFAT領域62のバックアップである。以上のように、MS−DOSのファイル管理は、FAT領域とルートディレクトリ領域の情報をもとに行われるが、これらの領域の位置と大きさは、ディスクの種類ごとに決められていて固定である。
NAND型EEPROMのアクセスの単位は前述の通りページである。4MビットのNAND型EEPROMを例に取ると、1ページは512バイトで、1ブロックは8ページで構成されている。よって、磁気ディスク装置をNAND型EEPROMで置き換えるような応用においては、ディスクの1セクタをNAND型EEPROMの1ページに対応させると変換が容易である。しかしながら磁気ディスク装置をEEPROMで置き換えようとする場合に問題となる大きな相違点の一つに、データの書き換え可能回数がある。磁気ディスク装置の場合、媒体上に記録されるデータの書き換え回数には制限がなく、その寿命はヘッドと磁気記録媒体が接触することによる損傷といった機械的な要因に支配されている。一方EEPROMの場合は、データの書き換え可能回数が現状の技術では104 ないし105 回程度しかない。
また、前述のように、磁気ディスク装置の1セクタに記録される”データ”量は512バイトであるが、このデータ量とはユーザが記録再生する情報の量で、セクタ内にはこの他にも、記録再生制御に必要な情報が追加して書き込まれてある。そういった情報の一つに誤り訂正コード(以下ECCコード)がある。これは、媒体の欠陥やノイズの影響等で、ユーザのデータが正しく読み取れなかった場合に、読み取りデータに誤りがあることを検出したり、さらにその誤りを訂正したりするための情報で、セクタにデータを書き込むときに、ECC発生回路が記録されるデータをもとに計算し、データとともに媒体上に書き込まれる。
NAND型EEPROMのアクセス単位はページであり、多少の相違はあるものの、これを磁気ディスク装置のセクタに相当するものと見なすことができる。
信頼性を向上させるため、磁気ディスク装置のように、1ページの物理的な容量をユーザデータが記録再生される情報量より多くして、その冗長分をECCに割り当てることは有効な施策の一つである。
従来の磁気ディスク装置では、これを記憶装置として使用するために、フォーマットと呼ばれる初期化が必要とされる。フォーマットにより、磁気記録媒体上には一連の複数セクタが円周上に並んだトラックが形成され、さらにこのトラックが同心円状に複数(通常数百〜千数百)本形成される。このとき、各セクタは、ユーザデータ領域に特定の初期化パターンが書き込まれるとともに、記録再生制御に必要な情報が書き込まれる。ECCも初期化パターンから計算されたものが書き込まれる。一方、NAND型EEPROMは、先の説明からわかるように、一度書き込みを行ったページに対しては、磁気ディスク装置で行われるような重ね書きをすることは出来ない。例え1ページでもデータを書き換えるためには、複数のページからなるブロックを単位として消去を行う必要があるから、消去されるブロックの他のページは、必要によって待避させて消去後に書き戻すこともしなければならない。よって、消去後のページは、有効なユーザデータを書き込むときまで消去状態に保っていた方が好都合の場合が多い。
磁気ディスク装置の場合、装置に保証された寿命時間を20000動作時間、この内の数分の1がデータの書き換えに費やされる時間であるとすると、ファイル管理領域等の特定の記憶領域に対して最悪で109 回程度の書き換えが行われると見積もることができる。これに対してNAND型EEPROMは、前述の通り、書き換え可能回数は105 回程度であるから、磁気ディスク装置と同様の使い方をすると、1ブロックのみに書き込みが集中するという最悪の場合に、1万分の1の回数しか書き込みを行うことが出来ない。実際のデータの書き込み位置は記憶領域内に分散するので、その分、見かけの書換回数はこれよりは増加する。ところが、1度書き込まれた後に長期間消去されないデータが存在すると、書き込み可能領域が狭くなったのと等価であるから、それだけ書き換えできる回数が減少する。
また、OSによるファイル管理のように、一般に、ファイルはデータ領域の空いた領域であればどこに記録されてもよく、その場所はディレクトリとFATのようなテーブルで管理されている。よって、書き換え可能回数に制限があるEEPROMにこのようなファイル管理を適用しても、ファイルに関しては、同一場所への書き換えが集中しないように書き込み位置を分散させるのは容易である。
ところが、ファイルを書き込んだり書き換えたりした場合には必ずファイル管理テーブルの内容の書き換えが発生するので、これらのテーブルデータが書き換えられる頻度は、個々のデータファイルが書き込まれる頻度に比べてかなり多い。
しかも、このテーブルはファイルの記録場所を検索するおおもとの情報であるから、いつも決まった位置に記録されている必要がある。よって、EEPROMをファイル記憶装置に応用した場合、この管理テーブル領域に集中した書き換えによって、短時間で寿命に至ってしまうおそれがあるという問題があった。
さらに、前述の説明から分るように、磁気ディスク装置では、有効なユーザデータが書き込まれる前のセクタも、ユーザデータの書き込まれたセクタと同様にECCによるチェックを行って何等差し支えない。これに対して、消去後のページが有効なユーザデータを書き込むときまで消去状態に保たれるように制御されたNAND型EEPROMでは、有効なユーザデータが書き込まれる前のページを読み出すと、ECCを含めたページ内の情報は全て”1”になっているから、ECC検査回路は誤りがあるという判定を下してしまう。
通常、ホストコンピュータのオペレーティングシステムは、有効なデータの書かれていないページのみを読み出そうとすることはないが、複数のページをファイル管理の単位としている場合に、既に有効なデータの書かれたページと一緒に読み込もうとすることは有り得る。また、ページの書き換えにともなってブロック消去をするときに、消去されるブロック内の他のページに、既に書き込みがされているのか否かを、データの待避を制御する手段が知り得ないような制御装置の場合には、消去状態のページもバッファに読み込まなくてはならない。こうした場合に、消去状態のページのデータに対してECC検査回路が働いてしまうと、上述のように、本来は正常なページであるにもかかわらず、誤りが発生したと誤認され、エラー処理に制御が移ってしまい、処理を正常に進めることが出来なくなってしまう。
以下、本発明の実施の形態を図面を参照して説明する。本発明の実施の形態は、NAND型EEPROMを用いた不揮発性半導体メモリ装置及びその制御方法、不揮発性半導体メモリ装置システム及びその制御方法に適用されている。
(第1の実施の形態)
図1ないし図9は、本発明の第1の実施の形態を示す図である。まず、図2は、メモリ手段であるEEPROMにおける記憶領域の構成を示している。同図の31〜36は、管理の単位となる容量で区切られた複数の記憶領域であり、消去単位と同一或いはその整数倍とすると扱いが簡単になるが、それに限定されるものではない。また、第1の実施の形態では以下この単位記憶領域を単にブロックと称するが、これはNAND型EEPROMの消去単位であるブロックと解釈しても構わないがそれに限定されるものでもない。各ブロックに付けられた番号は、各ブロックを順位付けするためのもので、物理的なアドレス順とするのが分りやすいが、特定の規則に従った論理的な順位であっても構わない。以後簡単のために、ここで説明に使用するメモリ手段は6個のブロックで構成されていることにする。
図1は、上記ブロック31〜36への書き込みを管理するためのテーブルである。11〜16の各項目は、ブロック31〜36の状態を示すもので、21〜23に図示されるように3つのフラグで構成されている。即ち、ブロックに有意なデータが記録されているか否かを管理する第3の管理手段としてのフラグ(以下、有効フラグ又はVフラグ)23と、有効フラグとともに参照することで、データの書き込みをブロックの順位にしたがって1方向に向かって、かつ循環して使用されるように管理するための第1の管理手段としてのフラグ(以下、消去フラグ又はEフラグ)21と、ブロックに記録されたデータが或る時点から後に変更されたか否かを管理する第2の管理手段としてのフラグ(以下、変更フラグ又はCフラグ)22である。
次に、図面とフローチャートを使用して、第1の実施の形態の書き込み方式を説明する。なお、書き込まれたデータを読み出すためには、書き込んだデータのタグ(例えばファイル名)と書き込んだ位置の対応を管理する手段が必要であるが、これは通常のファイルシステム(OS)で行われている方法を適用可能なので第1の実施の形態では説明を省略する。
図3及び図4はデータ書き込みの手順を示すフローチャート、図5はデータ消去の手順を示すフローチャート、図6はデータの書き換え手順を示すフローチャート、図7は書き込み手順中で使用されるサブルーチンのフローチャートである。図8及び図9はデータの書き込みによって、図2で示した記憶領域と図1で示したそれを管理するテーブルの状態の変化を同時に説明するための図である。図8及び図9の記憶領域を示す図中の斜線のブロックは有効なデータが書き込まれている領域を示すものとする。
まずメモリ装置が使用される前には、図8(a)に示されるように全てのフラグが”0”に初期化されるものとする。この状態で第1ブロックの書き込みを行うことを考える。図3のステップ201で必要な容量が空いていることをチェックする。次に、この方式では有意なデータが記録されているか否かを管理するVフラグと一方向に向っての循環使用を管理するEフラグの両方が”0”のブロックにしか書き込みを行わないので、この条件に合うブロック検索を行う(図3ステップ202,203、図7ステップ301〜304)。条件に合うことが確認された後、第1ブロックにデータを書き込んで(図3ステップ204〜206)、CフラグとVフラグを”1”にする(図3ステップ207、図8(b))。今書き込んだデータを即書き換えると、図5の手順に従って、第1ブロックのVフラグ”0”に、Eフラグを”1”に変更し、初回の書き込みと同じ手順で検索される第2ブロックにデータを書き込む(図8(c))。これで第1ブロックは論理的な消去状態になるが、電気的な消去は別に行わなければならない。バックグラウンドで行われるのが処理速度の面で好ましいが、その方法は第1の実施の形態の本質から外れるので説明は省略する。以下の説明ではデータが書き込まれる前にこれらのブロックに電気的な消去は何らかの方法で済んでいることと仮定する。
こうした書き込み処理が続くと、データは、ブロック番号順にメモリ全体に一様に書き込まれ、例えば図8(d)に示すような状態になる。ここで例えば1ブロック分のデータの書き込みをしようとすると、空き領域はあるが、図3のステップ203の検索で失敗する。検索に失敗したという状態は、ブロックの空き領域に対する一様な書き込みが一巡したことを示している。よって、次の一巡の単一方向書き込みを制御するために全てのブロックに対するEフラグを”0”にクリアする(図3ステップ209、図8(e))。
単一方向循環による一様書き込みとともに第1の実施の形態を特徴づけるのは長期間同じ場所に留まるデータを移動させる点である。これを実現するためには、移動を行うのに適当な、書き込み回数に関連したタイミングが必要となるが、その一つとしてEフラグが全てクリアされる時点を利用する。図3では、この時点におけるステップ210〜213の処理でCフラグを検査することにより、移動対象のデータを選択している。図8(e)では、全てのブロックのCフラグが”1”になっているが、これは、Cフラグが初期化された時点から図8(e)の状態になるまでに、全てのブロックが最低1回は書き換えられていることを示している。
この場合は、どのデータがより長く同じブロックを占有しているのか判断できないのでステップ214で初期化し直す(図8(f))。その後、この一連の処理を起動させた第1ブロックのデータ書き込みを行う(図4ステップ224〜228,206、図9(a))。
さらに、第5ブロックのデータが消去されて図9(b)の状態になり、第2ブロックの書き込みと第1ブロックの消去があって図9(c)の状態になったとする。書き込みパターンの最後として、この時点で第1ブロックの書き込みを行う場合を考える。書き換えはもう一巡したので書き込み可能領域の検索には失敗し、Eフラグが全てクリアされる(図9(d))。続いてCフラグの検査が行われるが、今度は、第2ブロックのCフラグが”0”であるので、このブロックのデータは比較的長期間書き換えが行われていないと判断し移動の対象にする。移動先の書き込み可能ブロックは、図3のステップ215〜220の手順に従って、移動対象データの入ったブロックを起点に書き込みが進行する方向へ循環して検索される。この例では、第4ブロックが該当するので、第2ブロックはここにデータがコピーされた後消去される(図4ステップ221〜223、図9(e))。これにより、図8(c)の時点からずっと第2ブロックを占有していたデータが移動され、このブロックが書き換え可能になる。
あとは図9(c)の時点で要求された1ブロック分のデータを空きブロックに書き込めばよいのであるが、通常の書き込みと同様に書き込み可能ブロックを検索しても失敗してしまう場合が有り得る。即ち図9(c)の時点で空きブロックが丁度1個しかなかった場合で、このときは、この空きブロックに移動対象データが入り、移動対象データが元々入っていたブロックのEフラグが”1”となっているので検索に引っかからない。よって図4のステップ227で示したようにEフラグをクリアする処理が必要である。移動対象のデータが元々入っていたブロックのEフラグを”0”のままにしておくような制御を行えばこの様なことはなくなるが、そのかわりに、他に空きブロックが有るにもかかわらず、移動直後のブロックが書き換え可能ブロックとして検索され、バックグラウンドの電気的消去が間に合わないという様なことが起り得る。
(第2の実施の形態)
図10ないし図14には、本発明の第2の実施の形態を示す。第2の実施の形態では、不揮発性半導体メモリとして4MビットNAND型EEPROMを用いることを仮定する。また、実施の形態の要点を簡略に説明するため、MS−DOSのクラスタに相当する記憶領域の論理的な管理の単位をNAND型EEPROMの消去単位であるブロックと一致させるものとする。また、第2の実施の形態ではユーザファイル、ファイルの記録位置を管理するテーブル及びそのテーブルへの階層化されたポインタのうちその位置が固定されないものは、記憶領域中の特定の領域に記録される必要がないので、出来得る限り書き込みが記憶領域全体に分散されるように制御されるべきである。しかしながら、第2の実施の形態は、ファイルの位置を管理するテーブルが記憶領域中の特定の領域に固定されずに済む手法を説明するためのものなので、分散書き込み制御がされることを前提とするが、その詳細については触れない。
図11は、ファイルの記録された位置を管理するためのテーブルの一つを構成するブロックの1例であり、ここでは仮にルート管理テーブルと呼ぶことにする。図11の38はMS−DOSのFATと同様な構成で記憶領域全体のブロック割当状況を管理するためのテーブルであるが、第2の実施の形態では、ユーザーファイルのみならず、ファイル管理テーブル自身やそのポインタといった管理情報の記録されたブロックの位置も動くので、それらの割当も併せて管理されるものとする。図11の39はブロックの割当情報がこのブロック内に納まらなかった場合に使用される追加ブロックの位置や、MS−DOSのディレクトリに相当するファイル名とそれに付随する情報に関する管理テーブル等の位置を示すポインタであるとする。即ち、図11に示す管理テーブルをアクセスできれば、ファイル管理に関する情報は全てアクセス可能になるものとする。
図12は、ルート管理テーブルの記録された位置を示すために、記録された位置を階層的に示すように構成されたポインタが記録されるブロックの1例である。図12(a)の41〜48はNAND型EEPROMのページを表していて、48がソース側、41がドレイン側である。ポインタは1ページに納まる情報量とし、NAND型EEPROMの書き込みルールに従ってソース側から順に書き込まれてゆくものとする。図12(a)の46〜48の斜線のページは、更新されたポインタが書き込まれていたことを示し、41〜44の”NULL”は消去されたままのページであることを示す。同図(a)の第1のポインタを納めたブロックは、45のページの情報がルート管理テーブルの位置を示している。同図(b)の第mのポインタを納めたブロックは、同様の構成で、第(m−1)のポインタの位置を示すものとする。ポインタの数(階層数)をnとした場合、第1〜第(n−1)のポインタは、記憶可能な領域のどこに記録されてもよく、複数階のポインタを順に手繰ることでアクセスされる。第nのポインタ(以下、ルートポインタ)だけは、記憶領域の固定の位置に記録される。図10は、この複数階に設定されたポインタのつながりを示している。
図13は、第2の実施の形態に係るファイル管理方式に必要なルート管理テーブルの更新に伴なって発生する処理の手順を示したフローチャートである。ルート管理テーブルの内容は、予めRAMに読み込まれて展開されており、更新はRAM上で行われた後に書き戻されるものとする。まず、ファイルの書き込み等でブロック割当に変更が生じると、変更されたルート管理テーブルを書き戻すブロックの位置を自身のブロック割当テーブルを参照して決定する(ステップ401)。次に、この位置をポインタに設定し、割当テーブルを更新してから書き込みを行う(ステップ402〜405)。図14のフローチャートのステップ501〜510は、階層化されたポインタにブロック位置を設定する手順を示している。この手順は、階層化されたポインタの設定を変更するために再帰的に呼び出される。
次に、ポインタの階層数nの大きさの決め方を具体的に説明する。ファイルの書き込みによりブロックの割当に変更が起きると、その都度、ルート管理テーブルの内容が更新される。書き込みが特定ブロックに集中しないように、更新されたテーブル自体も別のブロックに書き込まれる。ルート管理テーブルの位置が変わったので第1のポインタの記録位置も更新される。ポインタの更新は同一ブロック内で8回(8ページ分)可能であるから、第1ポインタを納めたブロックは、ファイルの書き込みによるブロックの変更8回で一通りの書き込みが行われ、9回目の更新で位置が変わる。第2のポインタを納めたブロックは同様に、ファイルの書き込み64回に1回の割で書き換えが起きると見積もることが出来る。ここで仮に、不揮発性半導体メモリ装置の総容量を20Mバイトとすると、総ブロック数は1ブロックの容量が4kバイトであるから5120ブロックになる。
EEPROMの書き換え可能回数をC回とし、これらのブロックに均一に書き込みが行われたとすると、延べ5120×Cブロックの書き換えが発生し得る。ファイル1ブロック分の書き換えに対して管理テーブル1ブロックの書き換えが発生するとすると、1回に付き2ブロックの書き換えが起きるからブロック割当の変更の発生回数は最高で5120×C÷2=2560×C回である。
第nポインタを記録した固定ブロックの書き換えは、ブロック割当の変更8n回に1回の割合で起きる。また、このブロックも最高C回の書き換えが可能であるから、8n ×C=23n×C回までのブロック割当の変更なら、この固定ブロックの書き換え回数が他のブロックより先に限界に達することはない。よって、必要な階層数nは、23n×C=2560×Cn=log2 2560÷3 ≒4となる。
(第3の実施の形態)
図15ないし図20には、本発明の第3の実施の形態を示す。図15は第3の実施の形態に係る不揮発性半導体メモリ装置の全体構成を示すブロック図である。同図において115はメモリ手段としてのNAND型EEPROMモジュールであり、複数個のページからなるブロックに分割されたメモリセルアレイで構成されている。EEPROMモジュール115はデータ線で結ばれたホストインターフェイス101を介して図示省略のホストシステムに接続されている。データ線上には、マルチプレクサ113及びデータバッファ107が設けられている。また、ホストインターフェイス101内には、データレジスタ102、アドレスレジスタ103、カウントレジスタ104、コマンドレジスタ105、ステータレジスタ106及びエラーレジスタ116が設けられている。108はコントロールロジック、109は誤り制御ロジック、114はアドレスジェネレータ、110は制御手段としての機能を有するCPU、111は作業用RAM、112は制御プログラムROMである。制御プログラムROM112には、データ書き込み等のための一連の制御プログラムが格納されている。
図16は、誤り制御ロジック109の内部構成を示す図である。誤り検出手段としてのECC検査回路150、誤り検出/訂正コード発生手段としてのECC発生回路151及び消去検出手段としての消去検出回路152が備えられている。
第3の実施の形態のメモリ装置は、不揮発性メモリ領域であるEEPROMモジュール115に記録されるデータに関し、必要に応じてメモリ領域の使用状況を管理するテーブルを使用する。このテーブルは、他のユーザ・データとともにEEPROMモジュール115に記録されるが、この装置が起動するときに自動的に作業用RAM111に読み込まれる。また、このテーブルは、更新される都度、或いは装置の使用が終了する時点でEEPROMモジュール115に書き戻されることとする。
次に、この装置の動作をフローチャートを用いて説明する。ホストシステムは、図15のホストインターフェイス101内のアドレスレジスタ103にアクセス開始アドレスを、カウントレジスタ104にアクセスしたいデータのセクタ長をセットし、最後にコマンドレジスタ105に読み出し/書き込み等の命令をセットする。ホストインターフェイス101のコマンドレジスタ105にアクセス命令が書き込まれると、コントローラ内のCPU110は、コマンドレジスタ105内の命令を読み込み、制御プログラムROM112に納められたコマンド実行のための一連の制御プログラムを実行する。
図17は、EEPROMモジュール115からデータを読み出す手順を示すフローチャートである。まず、図15のCPU110は、ホストインターフェイス101にセットされた開始アドレスから、読み出しを行うべきEEPROMモジュール115の物理的なアドレスを決定する(ステップ601)。次に、EEPROMモジュール115からデータバッファ107にデータを読み出す(ステップ602)。次いで、エラー処理及びデータバッファ107からホストシステムへのデータ転送等を実行する(ステップ603〜605)。
図18及び図19は、EEPROMモジュール115からデータバッファ107にデータを読み出す手順を示すフローチャートである。CPU110は、EEPROMモジュール115をマルチプレクサ113を通してアクセスし読み出しモードに設定し、データバッファ107を読み出しモードに設定する(ステップ701,702)。アドレスジェネレータ114には、読み出しを行うべきEEPROMモジュール115の物理的なアドレスを設定する(ステップ703)。
そして、データバッファ107に、読み出したデータを蓄えるべき領域を決定してその先頭番地をデータバッファ107への書き込みアドレスとして設定する(ステップ704)。その後、コントロールロジック108に対してデータ読み出しのための定められたシーケンスを実行するように指令を送る。
コントロールロジック108は、マルチプレクサ113をEEPROMモジュール115からの読み出しデータがデータバッファ107に流れるように設定し、アドレスジェネレータ114の内容をインクリメントしながら、1セクタ分のデータを読み出す(ステップ705)。また、図16のECC検査回路150をこれらのデータ及びこれに付随して読み出されるECCコードを使って誤りを検出するように制御すると同時に、読み出されたデータが消去状態であるかどうかを検出するように消去検出回路152を制御する。消去検出回路152は、1セクタ分のデータ及びECCコードが全て消去後の状態である”1”であった場合に、CPU110からアクセス可能なレジスタに、消去状態を検出したことを示すコードをセットする。1セクタ分のデータが読み出されると、CPU110は、ECC検査回路150をチェックしデータの誤りを検査する(ステップ706)。誤りが検出されなかった場合は、データバッファからホストシステムにデータを転送する。誤りが検出されると、CPU110は次に消去検出回路152をアクセスし、消去状態が検出されていたならば、ECC検査回路150の結果を誤検出とみなしバッファ内のデータをホストシステムに転送する。ECC検査回路150が誤りを検出し、消去検出回路152も消去状態を検出しなかった場合で、検出された誤りが訂正可能な場合は、データバッファ107をアクセスして誤ったデータを訂正してからホストシステムにデータを転送する。
もし、訂正不可能な誤りが検出された場合には、ホストシステムに対するデータ転送は行わずに、CPU110は、ホストインターフェイス101内のステータスレジスタ106にエラーが起きたことを示すコードを、エラーレジスタ116にエラーの内容を示すコードを設定し、ホストシステムに命令の実行が異常終了したことを通知して処理を終了する(ステップ707〜712)。
図20は、データバッファからホストシステムにデータを転送する手順を示すフローチャートである。CPU110は、データバッファ107に読み出したデータが蓄えられた領域の先頭番地を同バッファからの読み出しアドレスとして設定し(ステップ801,802)、コントロールロジック108に対して、ホストシステムに1セクタ分のデータの転送を行うように指令する。コントロールロジック108は、データバッファ107とホストインターフェイス101を制御してホストシステムに対して1セクタ分のデータを転送し(ステップ803)、これが終了するとアドレスレジスタ103を1セクタ分進め、カウントレジスタ104から1を減じ、CPU108に転送が終了したことを通知する。ホストシステムに転送すべきデータが残っている限り、CPU110はこの制御を繰り返す。読み出しデータが全て転送されたら、CPU110は、ホストインターフェイス101内のステータスレジスタ106にエラーの無かったことを示すコードを設定し、ホストシステムに命令の実行が終了したことを通知して処理を終了する。
以上説明したように、本発明に係る不揮発性半導体メモリ装置による効果は、第1に、データの書き込みを複数の記憶領域に対して単一方向に循環して行うようにしたため、特定の記憶領域に集中することなく、書き込みを複数の記憶領域全体に均一に行うことができる。また、書き込まれた後、長期間変更を受けることなく同じ場所に留まっているデータは複数の記憶領域全体と比較した書きかえ回数に不均衡が生じないように移動させるようにしたため、見かけの書き込み領域が狭まって寿命を縮めてしまうことを防止することができる。したがって同一記憶場所の書き換え回数に制限があるにもかかわらず、磁気ディスク装置と同等の寿命を実現することができて用途を拡大することができる。
第2に、書き込まれたデータが変更されていない記憶領域の選択を、書き込みの1循環周期を以って行うようにしたため、見かけの書き込み領域を狭めてしまうことを一層適切に防止することができる。
第3に、書き換え頻度の高い管理テーブルの記憶領域上での配置は固定されず、またこの管理テーブルの位置を示すポインタは複数階に階層化して記録するようにしたため、検索のため固定した位置に記録されなければならないポインタの書き換え回数が他の領域と同等に抑えられて特定の記憶領域に書き込みが集中して短時間で寿命に至ってしまうことを防ぐことができる。したがって、上記第1の発明と同様に、同一記憶場所の書き換え回数に制限があるにもかかわらず、磁気ディスク装置と同等の寿命を実現することができる。
第4に、読み出されたデータからその記憶領域であるページ等が消去状態であるか否かを検出し、読み出しデータに誤りが検出された場合でも同時に消去状態が検出されたときには、その読み出しデータには誤りが無いものとして処理するようにしたため、消去状態のページ等がデータの書き込まれたページ等と区別無く読み出されるような制御が行われる場合にも、読み出しデータの正確な誤り検出を行うことができて高い信頼性を確保することができる。
21…第1の管理手段となるもので、有効フラグとともに参照しデータの書き込みをブロックの順位にしたがって1方向に向かって、かつ循環して使用されるように制御するためのフラグ
22…第2の管理手段となるもので、ブロックに記録されたデータが或る時点から後に変更されたか否かを管理するフラグ
23…ブロックに有意なデータが記録されているか否かを管理するフラグ
31〜36…管理単位となる容量で区切られた複数の記憶領域
38…ブロックの割当を管理するテーブル
41〜48,51〜58 ポインタ情報が記録されるページ
109…誤り制御ロジック
110…CPU(制御手段)
115…EEPROMモジュール(メモリ手段)
150…ECC検査回路(誤り検出手段)
151…ECC発生回路
152…消去検出回路(消去検出手段)