(57)【要約】【課題】  書き換え効率を向上できる不揮発性の半導体メモリおよびメモリシステムを提供する。【解決手段】  半導体メモリは、所定数の不揮発性のメモリセルを有し、データが格納されるデータ領域と、データ領域へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域を有する複数の記憶領域と、番号が順次に割り当てられた所定数の記憶領域を含み、アドレスに応じて選択される複数の記憶ブロックと、フラグ選択信号に応答して、アドレスにより選択される記憶ブロックのフラグ領域に対してフラグデータを書き込みまたは読み出し、データ選択信号に応答して、アドレスにより選択される記憶ブロックのデータ領域のいずれかに対してデータを書き込みまたは読み出すデータ選択部とを備えている。【選択図】    図１
2011108001.tif 000002
【特許請求の範囲】
【請求項１】
半導体メモリと、前記半導体メモリのアクセスを制御するコントローラとを備えているメモリシステムであって、
前記半導体メモリは、
所定数の不揮発性のメモリセルを有し、データが格納されるデータ領域と、前記データ領域へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域を有する複数の記憶領域と、
番号が順次に割り当てられた所定数の前記記憶領域を含み、アドレスに応じて選択される複数の記憶ブロックと、
フラグ選択信号に応答して、アドレスにより選択される前記記憶ブロックのフラグ領域に対してフラグデータを書き込みまたは読み出し、データ選択信号に応答して、アドレスにより選択される前記記憶ブロックのデータ領域のいずれかに対してデータを書き込みまたは読み出すデータ選択部と
を備え、
前記コントローラは、書き込み動作において、前記フラグ選択信号を出力してアドレスにより選択される前記記憶ブロックのフラグ領域に保持されているフラグデータを読み出し、未書き込みを示すフラグデータが格納されたフラグ領域のうち最も番号の小さいフラグ領域に書き込み済を示すフラグデータを書き込むために前記フラグ選択信号を出力し、前記最も番号の小さいフラグ領域に対応するデータ領域に新たなデータを書き込むために前記データ選択信号を出力するデータ制御部を備えている
ことを特徴とするメモリシステム。
【請求項２】
前記コントローラは、書き込み動作において、前記フラグ領域から読み出したフラグデータに基づいて、書き込み済を示すフラグデータが格納されたフラグ領域のうち最も番号の大きいフラグ領域に対応するデータ領域からデータを読み出すために前記データ選択信号を出力し、読み出したデータと新たに書き込むデータとの論理積が新たに書き込むデータと同じときに、前記最も番号の小さいフラグ領域に対応するデータ領域ではなく、前記最も番号の大きいフラグ領域に対応するデータ領域に新たに書き込むデータを上書きするために前記データ選択信号を出力する
ことを特徴とする請求項１記載のメモリシステム。
【請求項３】
所定数の不揮発性のメモリセルを有し、データが格納されるデータ領域と、前記データ領域へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域を有する複数の記憶領域と、
番号が順次に割り当てられた所定数の前記記憶領域を含み、アドレスに応じてそれぞれ選択される複数の記憶ブロックと、
書き込み動作において、番号の小さい記憶領域内のデータ領域から順にデータを書き込み、データを書き込む記憶領域内のフラグ領域に書き込み済を示すフラグデータを書き込むデータ選択部と
を備えていることを特徴とする半導体メモリ。
【請求項４】
所定数の不揮発性のメモリセルを有し、データが格納されるデータ領域と、前記データ領域へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域を有する複数の記憶領域と、
番号が順次に割り当てられた所定数の前記記憶領域を含み、アドレスに応じてそれぞれ選択される複数の記憶ブロックと、
書き込み動作において、第１アドレスを受けたときに、番号の小さい記憶領域内のデータ領域から順にデータを書き込み、データを書き込む記憶領域内のフラグ領域に書き込み済を示すフラグデータを書き込み、第２アドレスを受けたときに、番号の大きい記憶領域内のデータ領域から順にデータを書き込み、データを書き込む記憶領域内のフラグ領域に書き込み済を示すフラグデータを書き込むデータ選択部と
を備えていることを特徴とする半導体メモリ。
【請求項５】
第１論理または第２論理をそれぞれ記憶する所定数の不揮発性のメモリセルを有する複数の記憶領域と、
前記各記憶領域において第１論理を記憶している前記メモリセルの数が偶数か奇数に応じて、前記各記憶領域に記憶されているデータの論理を判定する読み出し回路と、
前記読み出し回路により判定された論理と、新たに書き込むデータの論理とが異なるときに、第２論理を記憶しているメモリセルに第１論理を書き込む書き込み回路と
を備えていることを特徴とする半導体メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性の半導体メモリおよび半導体メモリが搭載されるメモリシステムに関する。
【背景技術】
【０００２】
フラッシュメモリ等の不揮発性の半導体メモリは、データを電気的に書き換えることができるが、メモリセルおよび制御回路が複雑なためチップサイズが大きくなり、チップコストの増加を招いている。一方、いわゆるワンタイムメモリは、各メモリセルにデータを１回しか書き込むことができないが、メモリセルおよび制御回路が簡単なため、チップサイズを比較的小さくできる。
【０００３】
例えば、ワンタイムメモリに複数の記憶領域を形成し、プログラムコードの修正が必要なときに、新たな記憶領域に修正されたプログラムコードを書き込むことで、プログラムコードの書き換えを可能にする技術が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−１９１８４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、書き換えをプログラムコード単位で行う場合、１回の書き換えを可能にするだけでも２倍の記憶領域が必要になる。これにより、チップサイズは大きくなり、システムコストは増加する。また、２倍の記憶領域を持ちながら書き換えを１回しか行うことができないため、書き換え効率は低い。
【０００６】
本発明の目的は、記憶容量の増加を最小限にして、書き換え効率を向上できる不揮発性の半導体メモリおよびメモリシステムを提供することである。
【課題を解決するための手段】
【０００７】
本発明のメモリシステムの一形態では、半導体メモリは、所定数の不揮発性のメモリセルを有し、データが格納されるデータ領域と、データ領域へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域を有する複数の記憶領域と、番号が順次に割り当てられた所定数の記憶領域を含み、アドレスに応じて選択される複数の記憶ブロックと、フラグ選択信号に応答して、アドレスにより選択される記憶ブロックのフラグ領域に対してフラグデータを書き込みまたは読み出し、データ選択信号に応答して、アドレスにより選択される記憶ブロックのデータ領域のいずれかに対してデータを書き込みまたは読み出すデータ選択部とを備えている。半導体メモリのアクセスを制御するコントローラは、書き込み動作において、フラグ選択信号を出力してアドレスにより選択される記憶ブロックのフラグ領域に保持されているフラグデータを読み出し、未書き込みを示すフラグデータが格納されたフラグ領域のうち最も番号の小さいフラグ領域に書き込み済を示すフラグデータを書き込むためにフラグ選択信号を出力し、最も番号の小さいフラグ領域に対応するデータ領域に新たなデータを書き込むためにデータ選択信号を出力するデータ制御部を備えている。
【発明の効果】
【０００８】
記憶ブロック毎にデータを書き換えでき、記憶容量の増加を最小限にして、書き換え効率を向上できる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態におけるメモリシステムの例を示している。
【図２】別の実施形態におけるメモリシステムの例を示している。
【図３】図２に示した半導体メモリの例を示している。
【図４】図３に示したメモリセルアレイの例を示している。
【図５】図４に示したデータ選択部の例を示している。
【図６】図５に示したデータ選択回路の例を示している。
【図７】図４に示したメモリセルの例を示している。
【図８】図４に示したメモリセルアレイに保持されているデータの例を示している。
【図９】図２に示したメモリシステムの書き込み動作の例を示している。
【図１０】図２に示したメモリシステムの読み出し動作の例を示している。
【図１１】図２に示したメモリシステムの動作の例を示している。
【図１２】図２に示したメモリシステムの動作の別の例を示している。
【図１３】別の実施形態のメモリシステムの書き込み動作の例を示している。
【図１４】図１３に示した書き込み動作を実行するメモリシステムの動作の例を示している。
【図１５】図１４に示した書き込み動作を実行するメモリシステムの動作の別の例を示している。
【図１６】別の実施形態におけるメモリシステムの例を示している。
【図１７】図１６に示した半導体メモリの例を示している。
【図１８】図１７に示したデータ選択部の例を示している。
【図１９】図１６に示したメモリシステムの動作の例を示している。
【図２０】図１６に示したメモリシステムの動作の別の例を示している。
【図２１】別の実施形態における半導体メモリの例を示している。
【図２２】別の実施形態におけるデータ選択部の例を示している。
【図２３】図２２に示したデータ選択回路の例を示している。
【図２４】別の実施形態における半導体メモリの例を示している。
【図２５】図２４に示したメモリセルアレイに保持されているデータの例を示している。
【図２６】図２４に示した半導体メモリが搭載されるメモリシステムの書き込み動作の例を示している。
【図２７】図２４に示した半導体メモリが搭載されるメモリシステムの書き込み動作の例を示している。
【図２８】図２４に示した半導体メモリが搭載されるメモリシステムの読み出し動作の例を示している。
【図２９】別の実施形態における半導体メモリの例を示している。
【図３０】図２９に示したデータ選択部の例を示している。
【図３１】別の実施形態におけるメモリセルアレイの例を示している。
【図３２】図３１に示したメモリセルアレイに保持されるデータの例を示している。
【図３３】図３１に示したデータ選択部の例を示している。
【図３４】フローティングゲートを有するメモリセルを用いてメモリセルアレイを形成する例を示している。
【発明を実施するための形態】
【００１０】
以下、実施形態を図面を用いて説明する。図中、太線で示した信号線は、複数本を有している。太線が接続されているブロックの一部は、複数の回路を有している。信号が伝達される信号線には、信号名と同じ符号を使用する。図中の二重の四角印は、外部端子を示している。外部端子は、例えば、半導体チップ上のパッド、あるいは半導体チップが収納されるパッケージのリードである。外部端子を介して供給される信号には、端子名と同じ符号を使用する。
【００１１】
図１は、一実施形態におけるメモリシステムＭＳＹＳの例を示している。例えば、メモリシステムＭＳＹＳは、携帯機器等のマイクロコンピュータシステムの少なくとも一部を構成する。メモリシステムＭＳＹＳは、半導体メモリＭＥＭと、半導体メモリＭＥＭの動作を制御するコントローラＣＮＴＬとを有している。コントローラＣＮＴＬは、プログラムを実行することで動作するＣＰＵ（Central Processing Unit）あるいはＡＳＩＣ（Application Specific IC）等のロジック回路である。コントローラＣＮＴＬは、半導体メモリＭＥＭにアドレス信号ＡＤ、リードイネーブル信号ＲＥ、ライトイネーブル信号ＷＥ、データ選択信号ＤＳＥＬ、フラグ選択信号ＦＳＥＬおよび書き込みデータ信号Ｉ／Ｏを出力し、半導体メモリＭＥＭから読み出しデータ信号Ｉ／Ｏを受ける。コントローラＣＮＴＬは、半導体メモリＭＥＭに書き込むデータを制御するデータ制御部ＤＣＮＴＵを有している。例えば、データ制御部ＤＣＮＴＵは、コントローラＣＮＴＬが実行するプログラムにより実現される。あるいは、データ制御部ＤＣＮＴＵは、論理回路等のハードウエアにより実現される。
【００１２】
半導体メモリＭＥＭは、データ選択部ＤＳＥＬＵおよびアドレス信号ＡＤに応じて選択される複数の記憶ブロックＭＢＬＫを含むメモリセルアレイＭＣＡを有している。各記憶ブロックＭＢＬＫは、書き込み動作時および読み出し動作時に同時に選択され、一方向（図の横方向）に沿って配置された複数の記憶領域ＭＡ（ＭＡ０、ＭＡ１、ＭＡ２、ＭＡ３、...）を有している。例えば、各記憶ブロックＭＢＬＫの記憶領域ＭＡは、一方向の一端から番号が順に割り当てられている。各記憶領域ＭＡは、所定数の不揮発性のメモリセルを有するデータ領域ＤＡ（ＤＡ０、ＤＡ１、ＤＡ２、ＤＡ３、...）およびフラグ領域ＦＡ（ＦＡ０、ＦＡ１、ＦＡ２、ＦＡ３、...）を有している。メモリセルの例は、図７に示す。
【００１３】
例えば、メモリセルは、初期状態において論理１を保持しており、書き込みにより論理０に書き換えられる。データ領域ＤＡには、データ端子Ｉ／Ｏを介して供給されるデータが書き込まれる。データは、メモリシステムＭＳＹＳあるいはさらに上位のシステムで使用される情報データまたはプログラムである。フラグ領域ＦＡには、データ領域ＤＡへのデータの書き込み済または未書き込みを示すフラグデータが格納される。全てのフラグ領域ＦＡは、初期状態において未書き込みを示すフラグデータを保持している。
【００１４】
例えば、各記憶ブロックＭＢＬＫでは、番号の小さい記憶領域ＭＡから順にデータがデータ領域ＤＡに書き込まれていき、対応するフラグ領域ＦＡに書き込み済を示すフラグデータが書き込まれていく。この例では、データが書き込まれる毎に、有効なデータを格納しているデータ領域ＤＡは、記憶ブロックＭＢＬＫの一端（例えば、図の左端）から１つずつずれていく。有効なデータを格納しているデータ領域ＤＡは、フラグ領域ＦＡのフラグデータを読むことで認識可能である。なお、各記憶ブロックＭＢＬＫの記憶領域ＭＡは、番号が順次に割り当てられていればよく、番号順に並んでいる必要はない。
【００１５】
データ選択部ＤＳＥＬＵは、リードイネーブル信号ＲＥおよびフラグ選択信号ＦＳＥＬに応答して、アドレス信号ＡＤにより選択される記憶ブロックＭＢＬＫの全てのフラグ領域ＦＡからフラグデータを読み出し、読み出したフラグデータをデータ線Ｉ／Ｏを介してコントローラＣＮＴＬに出力する。データ選択部ＤＳＥＬＵは、ライトイネーブル信号ＷＥおよびフラグ選択信号ＦＳＥＬに応答して、アドレス信号ＡＤにより選択される記憶ブロックＭＢＬＫの全てのフラグ領域ＦＡに、データ線Ｉ／Ｏを介して受けるフラグデータを書き込む。
【００１６】
また、データ選択部ＤＳＥＬＵは、リードイネーブル信号ＲＥおよびデータ選択信号ＤＳＥＬに応答して、アドレス信号ＡＤにより選択される記憶ブロックＭＢＬＫのデータ領域ＤＡのいずれかからデータを読み出し、読み出した値をデータ線Ｉ／Ｏを介してコントローラＣＮＴＬに出力する。データ選択部ＤＳＥＬＵは、ライトイネーブル信号ＷＥおよびデータ選択信号ＤＳＥＬに応答して、アドレス信号ＡＤにより選択される記憶ブロックＭＢＬＫのデータ領域ＤＡのいずれかに、データ線Ｉ／Ｏを介して受けるデータを書き込む。
【００１７】
コントローラＣＮＴＬのデータ制御部ＤＣＮＴＵは、書き込み動作において、アドレス信号ＡＤ、リードイネーブル信号ＲＥおよびフラグ選択信号ＦＳＥＬを出力し、アドレス信号ＡＤに応じて選択される記憶ブロックＭＢＬＫのフラグ領域ＦＡに保持されているフラグデータを読み出す。データ制御部ＤＣＮＴＵは、アドレス信号ＡＤ、ライトイネーブル信号ＷＥおよびフラグ選択信号ＦＳＥＬを出力し、未書き込みを示すフラグデータが格納されたフラグ領域ＦＡのうち番号が最も小さいフラグ領域ＦＡに書き込み済を示すフラグデータを書き込む。また、コントローラＣＮＴＬは、アドレス信号ＡＤ、ライトイネーブル信号ＷＥおよびデータ選択信号ＤＳＥＬを出力し、上記番号が最も小さいフラグ領域ＦＡに対応するデータ領域ＤＡに新たなデータを書き込む。
【００１８】
一方、データ制御部ＤＣＮＴＵは、読み出し動作において、アドレス信号ＡＤ、リードイネーブル信号ＲＥおよびフラグ選択信号ＦＳＥＬを出力し、アドレス信号ＡＤに応じて選択される記憶ブロックＭＢＬＫのフラグ領域ＦＡに保持されているフラグデータを読み出す。データ制御部ＤＣＮＴＵは、読み出したフラグデータに基づいて、書き込み済を示すフラグデータが格納されたフラグ領域ＦＡのうち番号が最も大きいフラグ領域ＦＡを求める。そして、データ制御部ＤＣＮＴＵは、アドレス信号ＡＤ、リードイネーブル信号ＲＥおよびデータ選択信号ＤＳＥＬを出力し、求めたフラグ領域ＦＡに対応するデータ領域からデータＩ／Ｏを読み出す。
【００１９】
以上、この実施形態では、アドレスＡＤにより選択される記憶ブロックＭＢＬＫ毎にデータを書き換えできる。書き換えが必要なデータのみを書き換えできるため、半導体メモリＭＥＭの記憶容量の増加を最小限にして、データの書き換え効率を向上できる。
【００２０】
図２は、別の実施形態におけるメモリシステムＭＳＹＳの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
【００２１】
メモリシステムＭＳＹＳは、例えば、携帯機器等のマイクロコンピュータシステムの少なくとも一部を構成する。メモリシステムＭＳＹＳは、シリコン基板上に複数のマクロが集積されたシステムオンチップＳｏＣを有している。あるいは、メモリシステムＭＳＹＳは、パッケージ基板上に複数のチップが積層されたマルチチップパッケージＭＣＰを有している。あるいは、メモリシステムＭＳＹＳは、リードフレーム等のパッケージ基板上に複数のチップが搭載されたシステムインパッケージＳｉＰを有している。さらに、メモリシステムＭＳＹＳは、チップオンチップＣｏＣあるいはパッケージオンパッケージＰｏＰの形態でもよい。
【００２２】
メモリシステムＭＳＹＳは、半導体メモリＭＥＭと、半導体メモリＭＥＭの動作を制御するＣＰＵ等のコントローラＣＮＴＬとを有している。半導体メモリＭＥＭおよびコントローラＣＮＴＬのアドレス端子ＡＤおよびデータ端子Ｉ／Ｏは、アドレスバスＡＤＢおよびデータバスＤＢを介して互いに接続されている。コントローラＣＮＴＬは、半導体メモリＭＥＭにアドレス信号ＡＤ、書き込みデータ信号Ｉ／Ｏ、リードイネーブル信号ＲＥ、ライトイネーブル信号ＷＥ、データ選択信号ＤＳＥＬ２−０およびフラグ選択信号ＦＳＥＬを出力し、半導体メモリＭＥＭから読み出しデータ信号Ｉ／Ｏを受ける。なお、コントローラＣＮＴＬは、プログラムを実行することで動作するＣＰＵに限定されず、ＡＳＩＣ等のロジック回路により形成されてもよい。また、半導体メモリＭＥＭがクロックに同期して動作するとき、クロック信号が半導体メモリＭＥＭに供給される。
【００２３】
図３は、図２に示した半導体メモリＭＥＭの例を示している。例えば、半導体メモリＭＥＭは、各メモリセルにデータを１回のみ書き込み可能な不揮発性のメモリである。半導体メモリＭＥＭは、アドレス入力部１０、ワード線デコーダ１２、動作制御部１４、データ入出力部１６、メモリセルアレイ１８、アンプ部２０およびデータ選択部２２を有している。
【００２４】
アドレス入力部１０は、動作制御部１４からの制御信号に応答してアドレス信号ＡＤを受け、受けたアドレス信号ＡＤを内部アドレス信号ＩＡＤとして出力する。ワード線デコーダ１２は、動作制御部１４からの制御信号に応答して内部アドレス信号ＩＡＤをデコードし、ワード線信号ＷＬを生成する。
【００２５】
動作制御部１４は、リードイネーブル信号ＲＥ、ライトイネーブル信号ＷＥ、データ選択信号ＤＳＥＬ（ＤＳＥＬ０−２）およびフラグ選択信号ＦＳＥＬの少なくともいずれかに基づいて、アドレス入力部１０、ワード線デコーダ１２、データ入出力部１６、メモリセルアレイ１８、アンプ部２０およびデータ選択部２２の動作を制御する制御信号（タイミング信号）を生成する。動作制御部１４は、リードイネーブル信号ＲＥに応答してリード制御信号ＲＤＣＮＴを生成し、ライトイネーブル信号ＷＥに応答してライト制御信号ＷＲＣＮＴを生成する。また、動作制御部１４は、データ選択信号ＤＳＥＬ２−０およびフラグ選択信号ＦＳＥＬを制御信号としてデータ選択部２２に出力する。
【００２６】
データ入出力部１６は、読み出し動作時に、メモリセルアレイ１８から読み出される読み出しデータを、データ線ＤＯＵＴを介して受け、受けた読み出しデータをデータ端子Ｉ／Ｏに出力する。データ入出力部１６は、書き込み動作時に、データ端子Ｉ／Ｏで受ける書き込みデータを、データ線ＤＩＮを介してメモリセルアレイ１８に出力する。特に限定されないが、データ端子Ｉ／Ｏ、データ線ＤＯＵＴ、ＤＩＮは、それぞれ８ビットである。
【００２７】
メモリセルアレイ１８は、互いに同じ構造を有するレギュラーアレイＡＲＹ０と７つのシャドウアレイＡＲＹ１−７を有している。メモリセルアレイ１８の例は、図４に示す。アンプ部２０は、レギュラーアレイＡＲＹ０およびシャドウアレイＡＲＹ１−７から読み出される読み出しデータの信号量を増幅するセンスアンプＳＡを有している。また、アンプ部２０は、レギュラーアレイＡＲＹ０およびシャドウアレイＡＲＹ１−７に書き込まれる書き込みデータの信号量を増幅するライトアンプＷＡを有している。
【００２８】
データ選択部２２は、データ選択信号ＤＳＥＬ２−０およびフラグ選択信号ＦＳＥＬに応じて、アレイＡＲＹ（ＡＲＹ０−７）のいずれかを選択する。そして、データ選択部２２は、リード制御信号ＲＤＣＮＴまたはライト制御信号ＷＲＣＮＴに応じて、選択したアレイＡＲＹからデータを読み出し、あるいは選択したアレイＡＲＹにデータを書き込む。３ビットのデータ選択信号ＤＳＥＬ２−０が示す８つの値は、８つのアレイＡＲＹ０−７にそれぞれ対応する。すなわち、データ選択信号ＤＳＥＬ２−０の値に対応するアレイＡＲＹ（ＡＲＹ０−７のいずれか）が選択される。フラグ選択信号ＦＳＥＬは、アレイＡＲＹ０−７内のフラグ領域にアクセスするときに有効レベル（例えば、高レベル）に設定される。データ選択部２２の例は、図５に示す。
【００２９】
図４は、図３に示したメモリセルアレイ１８の例を示している。レギュラーアレイＡＲＹ０およびシャドウアレイＡＲＹ１−７は、マトリックス状に配置された複数の不揮発性のメモリセルＭＣを有している。レギュラーアレイＡＲＹ０およびシャドウアレイＡＲＹ１−７の配列方向（図の横方向）に並ぶメモリセルＭＣは、共通のワード線ＷＬに接続されている。共通のワード線ＷＬに接続されたメモリセルＭＣは記憶ブロックを形成している。記憶ブロックは、アドレス信号ＡＤに応じて選択され、各記憶ブロックのメモリセルＭＣは、書き込み動作および読み出し動作において同時にアクセスされる。図の縦方向に並ぶメモリセルＭＣは、ビット線ＢＬに接続されている。なお、ビット線ＢＬは、各アレイＡＲＹ０−７内を通って図の縦方向に配線されている。
【００３０】
レギュラーアレイＡＲＹ０は、各ワード線ＷＬに接続された９個のメモリセルＭＣ（データ領域Ｄ７−０とフラグ領域ＦＬＧ０）を含む記憶領域を有している。同様に、各シャドウアレイＡＲＹ１−７は、各ワード線ＷＬに接続された９個のメモリセルＭＣ（データ領域Ｄ７−０とフラグ領域ＦＬＧ１−７のいずれか）を含む記憶領域を有している。すなわち、レギュラーアレイＡＲＹ０およびシャドウアレイＡＲＹ１−７のデータ幅は、各々９ビットである。各データ領域Ｄ７−０には、データ（情報データまたはプログラム）が書き込まれる。各フラグ領域ＦＬＧ０−７には、対応するデータ領域Ｄ７−０へのデータの書き込み済または未書き込みを示すフラグデータが格納される。特に限定されないが、この実施形態では、８個のアレイＡＲＹ０−７の７２本のビット線ＢＬに対応して、７２個のセンスアンプＳＡと、７２個のライトアンプＷＡが設けられている。
【００３１】
読み出し動作および書き込み動作では、アドレス信号ＡＤに応じて選択されたワード線ＷＬに接続されたメモリセルＭＣ（記憶ブロック）が、対応するビット線ＢＬに接続される。読み出し動作では、全てのセンスアンプＳＡは、選択されたワード線ＷＬに接続されたメモリセルＭＣからビット線に読み出されるデータ信号を増幅する。書き込み動作では、有効レベルの選択信号ＳＥＬ０−７を受けているライトアンプＷＡが動作し、データ信号を対応するビット線ＢＬに出力する。
【００３２】
データ選択部２２は、３ビットのデータ選択信号ＤＳＥＬ２−０をデコードし、選択信号ＳＥＬ０−７のいずれかを有効レベル（例えば、高レベル）に設定するデコーダＤＥＣを有している。
【００３３】
読み出し動作において、例えば、フラグ選択信号ＦＳＥＬが無効レベルで、選択信号ＳＥＬ０が有効レベルのとき、データ選択部２２は、レギュラーアレイＡＲＹ０から読み出されるデータＤ７−０を選択し、データ線ＤＯＵＴに出力する。読み出し動作において、フラグ選択信号ＦＳＥＬが無効レベルで、選択信号ＳＥＬ１が有効レベルのとき、データ選択部２２は、シャドウアレイＡＲＹ１から読み出されるデータＤ７−０を選択し、データ線ＤＯＵＴに出力する。フラグ選択信号ＦＳＥＬが無効レベルで、他の選択信号ＳＥＬ２−７のいずれかが有効レベルのとき、対応するシャドウアレイＡＲＹ２−７のいずれかから読み出されるデータＤ７−０が選択される。さらに、読み出し動作において、フラグ選択信号ＦＳＥＬが有効レベルのとき、データ選択部２２は、レギュラーアレイＡＲＹ０およびシャドウアレイＡＲＹ１−７からそれぞれ読み出されるフラグデータＦＬＧ０−７を選択し、データ線ＤＯＵＴに出力する。
【００３４】
一方、書き込み動作において、例えば、フラグ選択信号ＦＳＥＬが無効レベルで、選択信号ＳＥＬ０が有効レベルのとき、データ選択部２２は、データ線ＤＩＮから供給されるデータを、ライトアンプＷＡを介してレギュラーアレイＡＲＹ０に出力する。このとき、レギュラーアレイＡＲＹ０のデータＤ７−０に対応するライトアンプＷＡのみが選択信号ＳＥＬ０に応答して動作する。書き込み動作において、フラグ選択信号ＦＳＥＬが無効レベルで、選択信号ＳＥＬ１が有効レベルのとき、データ選択部２２は、データ線ＤＩＮから供給されるデータを、ライトアンプＷＡを介してシャドウアレイＡＲＹ１に出力する。このとき、シャドウアレイＡＲＹ１のデータＤ７−０に対応するライトアンプＷＡのみが選択信号ＳＥＬ１に応答して動作する。
【００３５】
フラグ選択信号ＦＳＥＬが無効レベルで、他の選択信号ＳＥＬ２−７のいずれかが有効レベルのとき、データ線ＤＩＮから供給されるデータは、対応するシャドウアレイＡＲＹ２−７のいずれかに出力される。このとき、シャドウアレイＡＲＹ２−７のデータＤ７−０に対応するライトアンプＷＡのみがそれぞれ選択信号ＳＥＬ２−７に応答して動作する。さらに、書き込み動作において、フラグ選択信号ＦＳＥＬが有効レベルのとき、データ選択部２２は、データ線ＤＩＮから供給されるデータを、レギュラーアレイＡＲＹ０およびシャドウアレイＡＲＹ１−７にフラグデータＦＬＧ０−７としてそれぞれ出力する。フラグ選択信号ＦＳＥＬが有効レベルのとき、デコーダＤＥＣは、全ての選択信号ＳＥＬ０−７を無効レベル（例えば、低レベル）に設定する。全ての選択信号ＳＥＬ０−７が無効レベルのとき、アレイＡＲＹ０−７のフラグデータＦＬＧ０−７に対応するライトアンプＷＡのみが動作する。
【００３６】
図５は、図４に示したデータ選択部２２の例を示している。データ選択部２２は、データ選択回路ＤＳＥＬＣ、フラグ選択回路ＦＳＥＬＣ、デコーダＤＥＣおよびアンド回路ＡＮＤ１−４を有している。アンド回路ＡＮＤ１は、リード制御信号ＲＤＣＮＴが高レベル（有効レベル）でフラグ選択信号ＦＳＥＬが低レベル（無効レベル）のとき、データリードイネーブル信号ＤＲＥＮを高レベル（有効レベル）に設定する。アンド回路ＡＮＤ２は、ライト制御信号ＷＲＣＮＴが高レベル（有効レベル）でフラグ選択信号ＦＳＥＬが低レベルのとき、データライトイネーブル信号ＤＷＥＮを高レベル（有効レベル）に設定する。
【００３７】
アンド回路ＡＮＤ３は、リード制御信号ＲＤＣＮＴが高レベルでフラグ選択信号ＦＳＥＬが高レベル（有効レベル）のとき、フラグリードイネーブル信号ＦＲＥＮを高レベル（有効レベル）に設定する。アンド回路ＡＮＤ４は、ライト制御信号ＷＲＣＮＴが高レベルでフラグ選択信号ＦＳＥＬが高レベルのとき、フラグライトイネーブル信号ＦＷＥＮを高レベル（有効レベル）に設定する。
【００３８】
上述したように、デコーダＤＥＣは、データ選択信号ＤＳＥＬ２−０をデコードし、選択信号ＳＥＬ０−７のいずれかを有効レベルに設定する。但し、デコーダＤＥＣは、フラグ選択信号ＦＳＥＬが有効レベルのとき、全ての選択信号ＳＥＬ０−７を無効レベルに設定する。
【００３９】
データ選択回路ＤＳＥＬＣは、高レベルのデータリードイネーブル信号ＤＲＥＮを受けているときに、有効レベルの選択信号ＳＥＬ（ＳＥＬ０−７のいずれか）に対応するアレイ（ＡＲＹ０−７のいずれか）からの読み出しデータＤ７−０を選択し、データ線ＤＯＵＴに出力する。データ選択回路ＤＳＥＬＣは、高レベルのデータライトイネーブル信号ＤＷＥＮを受けているときに、データ線ＤＩＮ上のデータを有効レベルの選択信号ＳＥＬ（ＳＥＬ０−７のいずれか）に対応するアレイ（ＡＲＹ０−７のいずれか）に出力する。
【００４０】
フラグ選択回路ＦＳＥＬＣは、高レベルのフラグリードイネーブル信号ＦＲＥＮを受けているときに、アレイＡＲＹ０−７からのフラグデータＦＬＧ０−７をデータ線ＤＯＵＴに出力する。フラグ選択回路ＦＳＥＬＣは、高レベルのフラグライトイネーブル信号ＦＷＥＮを受けているときに、データ線ＤＩＮ上のデータをアレイＡＲＹ０−７にフラグデータＦＬＧ０−７としてそれぞれ出力する。
【００４１】
図６は、図５に示したデータ選択回路ＤＳＥＬＣの例を示している。図６は、データ選択回路ＤＳＥＬＣのうち、データＤ７−０の読み出しに必要な回路を示している。データ選択回路ＤＳＥＬＣは、アレイＡＲＹ０−７にそれぞれ対応するデータセレクタＤＳ０−７およびオア回路ＯＲを有している。データセレクタＤＳ０−７は、互いに同じ回路であるため、データセレクタＤＳ０のみ説明する。
【００４２】
データセレクタＤＳ０は、高レベルの選択信号ＳＥＬ０を受けている間、アレイＡＲＹ０から読み出されるデータＤ７−０をオア回路ＯＲに出力する。選択信号ＳＥＬ０−７は、いずれか１つのみが高レベルに設定される。このため、オア回路ＯＲは、アレイＡＲＹ０−７から出力される８組のデータＤ７−０のいずれかを信号線ＤＯＵＴに出力する。
【００４３】
図７は、図４に示したメモリセルＭＣの例を示している。各メモリセルＭＣは、転送トランジスタＴ１およびヒューズＦＳを有している。転送トランジスタＴ１は、ゲートをワード線ＷＬに接続し、ソース・ドレインの一方をビット線ＢＬに接続し、ソース・ドレインの他方をヒューズＦＳを介して低電圧線（例えば、接地線）に接続している。例えば、ヒューズＦＳは、メタル配線ＭＷの一部にくびれを設けることで形成される。くびれ部分は、高抵抗として作用し、大電流が流れることで溶断される。
【００４４】
メモリセルＭＣは、データが書き込まれていない消去状態のとき、すなわち、ヒューズＦＳがカットされていないときに、例えば論理１を保持する。半導体メモリＭＥＭが製造されたとき、全てのヒューズＦＳはカットされていない。このため、全てのメモリセルＭＣは、論理１を保持している。メモリセルＭＣに論理０を書き込む書き込み動作では、ワード線ＷＬの１つがアドレス信号ＡＤに応じて選択され、高レベルに設定される。高レベルのワード線ＷＬにより転送トランジスタＴ１がオンし、メモリセルＭＣのヒューズＦＳはビット線ＢＬにそれぞれ接続される。論理０を書き込むメモリセルＭＣに接続されたビット線ＢＬは、高レベル（高電圧）に設定される。これにより、ヒューズＦＳに大きな電流が流れ、ヒューズＦＳのくびれ部分に電流が集中し、ヒューズＦＳは断線する。一方、論理０を書き込まないメモリセルＭＣに接続されたビット線ＢＬは、ヒューズＦＳに電流が流れることを防止するために低レベル（例えば、接地電圧）に設定される。
【００４５】
メモリセルＭＣに書き込まれている論理を検出する読み出し動作では、ワード線ＷＬの１つがアドレス信号ＡＤに応じて選択され、高レベルに設定される。各ビット線ＢＬは、読み出し動作の開始時に、例えば１Ｖ程度の弱い高レベルにプリチャージされる。ヒューズＦＳがカットされていないメモリセルＭＣ（論理１を保持）では、ビット線ＢＬは、ヒューズＦＳのくびれ部分の高抵抗を介して接地線に接続される。このため、プリチャージされたビット線ＢＬの電荷は接地線に流れ、ビット線ＢＬの電圧は０Ｖまで低下する。
【００４６】
一方、ヒューズＦＳがカットされたメモリセルＭＣ（論理０を保持）では、ビット線ＢＬは接地線に接続されない。このため、プリチャージされたビット線ＢＬの電荷はそのまま保持され、ビット線ＢＬの電圧は弱い高レベルに保持される。そして、ビット線ＢＬの電圧をセンスアンプＳＡにより増幅することで、メモリセルＭＣに保持されている論理が読み出される。例えば、センスアンプＳＡは、ゲートがビット線に接続されたトランジスタを有する。なお、ビット線ＢＬの電圧を参照電圧と比較することで、メモリセルＭＣに保持されている論理を読み出してもよい。
【００４７】
メモリセルＭＣは、ヒューズＦＳをカットすることにより論理１から論理０にプログラムされる。一方、論理０から論理１に書き換えることはできない。このため、各メモリセルＭＣは、いわゆるワンタイムメモリとして機能する。メタル配線層を利用したヒューズＦＳを用いてメモリセルＭＣを形成することで、メモリセルＭＣのサイズを小さくでき、メモリセルＭＣにデータを書き込むための制御回路を簡易にできる。これにより、半導体メモリＭＥＭのチップサイズを小さくできる。
【００４８】
図８は、メモリセルアレイ１８に保持されているデータの例を示している。末尾に”ｈ”が付く数値は、１６進数を示している。各アドレスＡＤに対応する図の横方向に並ぶアレイＡＲＹ０−７のデータ領域Ｄ７−０およびフラグ領域ＦＬＧ０−７のメモリセルＭＣは、図４に示したように、共通にワード線ＷＬに接続されている。論理０のフラグデータＦＬＧ（ＦＬＧ０−７）は、対応するデータ領域Ｄ７−０にデータが書き込み済であることを示す。論理１のフラグデータＦＬＧは、対応するデータ領域Ｄ７−０にデータが未書き込みであることを示す。各アドレスＡＤにおいて、太枠で示したデータが有効なデータである。すなわち、有効なデータは、論理０のフラグデータＦＬＧのうち、最も番号の大きいフラグデータＦＬＧに対応するアレイ（ＡＲＹ０−７のいずれか）に保持されている。もし、論理０のフラグデータＦＬＧを持つアレイが無い場合には、レギュラーアレイＡＲＹ０が有効なデータを保持している。網掛けのデータは、新たなデータの書き込みにより無効になったことを示す。図２に示したコントローラＣＮＴＬは、フラグＦＬＧ０−７からデータを読み出す読み出し動作およびフラグＦＬＧ０−７にデータを書き込む書き込み動作において、高レベルのフラグ選択信号ＦＳＥＬを半導体メモリＭＥＭに供給する。
【００４９】
例えば、アドレスＡＤが００ｈのとき、ＥＦｈ（＝０１１１１１１１）のフラグデータＦＬＧ０−７が半導体メモリＭＥＭから読み出される。このとき、コントローラＣＮＴＬは、フラグデータＦＬＧ０に対応するレギュラーアレイＡＲＹ０に有効なデータが保持されていると判断する。そして、コントローラＣＮＴＬは、レギュラーアレイＡＲＹ０からデータＤ７−０を読み出すためにデータ選択信号ＤＳＥＬ２−０を”０００（２進数）”に設定し、アドレスＡＤ＝００ｈの読み出し要求（ＲＥ＝高レベル）を半導体メモリＭＥＭに出力する。あるいは、コントローラＣＮＴＬは、シャドウアレイＡＲＹ１に新たなデータＤ７−０を書き込むために、データ選択信号ＤＳＥＬ２−０を”００１（２進数）”に設定し、アドレスＡＤ＝００ｈの書き込み要求（ＷＥ＝高レベル）を半導体メモリＭＥＭに出力する。書き込み動作では、シャドウアレイＡＲＹ１のフラグＦＬＧ１にも論理０が書き込まれる。
【００５０】
一方、アドレスＡＤが０４ｈのとき、１Ｆｈ（＝０００１１１１１）のフラグデータＦＬＧ０−７が半導体メモリＭＥＭから読み出される。このとき、コントローラＣＮＴＬは、フラグデータＦＬＧ２に対応するシャドウアレイＡＲＹ２に有効なデータが保持されていると判断する。そして、コントローラＣＮＴＬは、シャドウアレイＡＲＹ２からデータＤ７−０を読み出すためにデータ選択信号ＤＳＥＬ２−０を”０１０（２進数）”に設定し、アドレスＡＤ＝０４ｈの読み出し要求（ＲＥ＝高レベル）を半導体メモリＭＥＭに出力する。あるいは、コントローラＣＮＴＬは、シャドウアレイＡＲＹ３に新たなデータＤ７−０を書き込むために、データ選択信号ＤＳＥＬ２−０を”０１１（２進数）”に設定し、アドレスＡＤ＝０４ｈの書き込み要求（ＷＥ＝高レベル）を半導体メモリＭＥＭに出力する。書き込み動作では、シャドウアレイＡＲＹ３のフラグＦＬＧ３にも論理０が書き込まれる。
【００５１】
図９は、図２に示したメモリシステムＭＳＹＳの書き込み動作の例を示している。例えば、図９のフローは、コントローラＣＮＴＬが実行するプログラムにより実現される。なお、図９のフローは、コントローラＣＮＴＬ内に設けられるメモリコントローラ等のハードウエアロジックにより実行されてもよい。
【００５２】
まず、ステップＳ１００からＳ１０６において、データＤ７−０を書き込む記憶領域が検索される。ステップＳ１００において、コントローラＣＮＴＬは、アドレス信号ＡＤ（ＡＤ１）、高レベル（Ｈ）のリードイネーブル信号ＲＥ、低レベル（Ｌ）のライトイネーブル信号ＷＥおよび高レベル（Ｈ）のフラグ選択信号ＦＳＥＬを半導体メモリＭＥＭに出力する。高レベルのリードイネーブル信号ＲＥおよび低レベルのライトイネーブル信号ＷＥは、読み出しコマンドを示す。半導体メモリＭＥＭは、読み出しコマンドおよび高レベルのフラグ選択信号ＦＳＥＬを受け、アドレスＡＤ１が示すワード線ＷＬに接続されたメモリセルＭＣからフラグデータＦＬＧ０−７を読み出し、データ線Ｉ／Ｏに出力する。
【００５３】
ステップＳ１０２において、コントローラＣＮＴＬは、半導体メモリＭＥＭから出力されるフラグデータＦＬＧ０−７を読み出す。次に、ステップＳ１０４において、カウンタ値Ｉが”０”にクリアされる。次に、ステップＳ１０６において、カウンタ値Ｉが示すフラグデータＦＬＧＩ（例えば、ＦＬＧ０）の値がチェックされる。フラグデータＦＬＧＩが”１”のとき、対応するアレイ（ＡＲＹ０−７のいずれか）にデータＤ７−０が書き込まれていないと判断し、処理はステップＳ１１４に移行する。フラグデータＦＬＧＩが”０”のとき、対応するアレイ（ＡＲＹ０−７のいずれか）に何らかのデータＤ７−０が保持されていると判断し、処理はステップＳ１０８に移行する。なお、書き込み動作では、保持されているデータＤ７−０が有効か無効かは判断しなくてよい。
【００５４】
ステップＳ１０８では、カウンタ値Ｉが”１”増加される。次に、ステップＳ１１０では、カウンタ値Ｉが最大値ｍａｘを超えたか否かが判定される。この例では、最大値ｍａｘは”７”であり、シャドウアレイＡＲＹ１−７の個数に等しい。カウンタ値Ｉが最大値ｍａｘ以下のとき、処理はステップＳ１０６に戻り、データＤ７−０を書き込み可能なアレイＡＲＹ０−７が検索される。カウンタ値Ｉが最大値ｍａｘを超えたとき、全てのフラグＦＬＧ０−７が”０”に設定されている。このとき、全てのアレイＡＲＹ０−７におけるアドレスＡＤ１が示す記憶領域にすでにデータＤ７−０が書き込まれていると判断される。すなわち、アドレスＡＤ１が示す記憶領域にデータＤ７−０を書き込み可能な領域が存在しないと判断され（書き込みエラー）、処理はステップＳ１１２に移行する。
【００５５】
一方、ステップＳ１１４の開始時に、カウンタ値Ｉは、データＤ７−０を書き込み可能なアレイ（ＡＲＹ０−７のいずれか）の番号を示している。ステップＳ１１４では、データＤ７−０を書き込むアレイＡＲＹを示すデータ選択信号ＤＳＥＬ２−０が値Ｉに設定される。次に、ステップＳ１１６において、コントローラＣＮＴＬは、アドレス信号ＡＤ（ＡＤ１）、低レベル（Ｌ）のリードイネーブル信号ＲＥ、高レベル（Ｈ）のライトイネーブル信号ＷＥ、高レベルのフラグ選択信号ＦＳＥＬおよび低レベル（＝０）のフラグデータＦＬＧＩ（例えば、ＦＬＧ０）を半導体メモリＭＥＭに出力する。フラグデータＦＬＧＩ以外のフラグデータＦＬＧ（例えば、ＦＬＧ１−７）は高レベルに設定される。半導体メモリＭＥＭは、書き込みコマンドおよび高レベルのフラグ選択信号ＦＳＥＬを受け、アドレスＡＤ１が示すワード線ＷＬに接続されたメモリセルＭＣ（ＦＬＧＩ）に論理０を書き込む。
【００５６】
書き込むフラグデータＦＬＧ０−７は、ステップＳ１０２で読み出したフラグデータＦＬＧ０−７より、”１”の数が１つだけ少ない。例えば、ステップＳ１０２で読み出したフラグデータＦＬＧ０−７が”１１１１１１１１”のとき（図８のアドレスＡＤ０＝００ｈ、ＦＬＧＩ＝１；Ｉ＝０）、書き込むフラグデータＦＬＧ０−７は、”０１１１１１１１”（ＦＬＧＩ＝０；Ｉ＝０））である。ステップＳ１０２で読み出したフラグデータＦＬＧ０−７が”００１１１１１１”のとき（図８のアドレスＡＤ０＝０４ｈ；ＦＬＧＩ＝１；Ｉ＝２）、書き込むフラグデータＦＬＧ０−７は、”１１０１１１１１”（ＦＬＧＩ＝０：Ｉ＝２）である。このとき、書き込まれたフラグＦＧＬ０−７の値は、”０００１１１１１”になる。なお、書き込むフラグデータＦＬＧ０−７は”１１０１１１１１”でなく、”０００１１１１１”でもよい。このように、書き込み動作が実行される毎に、フラグデータＦＬＧ（ＦＬＧ０−７のいずれか）が番号の小さい側から順次に”０”に設定される。これにより、書き込み動作毎に、常に新たな記憶領域にデータＤ７−０が書き込まれる。
【００５７】
次に、ステップＳ１１８において、コントローラＣＮＴＬは、アドレス信号ＡＤ（ＡＤ１）、低レベル（Ｌ）のリードイネーブル信号ＲＥ、高レベル（Ｈ）のライトイネーブル信号ＷＥ、低レベルのフラグ選択信号ＦＳＥＬおよび書き込みデータＤ７−０を半導体メモリＭＥＭに出力する。半導体メモリＭＥＭは、書き込みコマンドおよび低レベルのフラグ選択信号ＦＳＥＬを受け、アドレスＡＤ１が示すワード線ＷＬに接続されたメモリセルＭＣのうち、データ選択信号ＤＳＥＬ２−０が示すアレイ（ＡＲＹ０−７のいずれか）にデータＤ７−０を書き込む。そして、書き込み動作は完了する。
【００５８】
一方、ステップＳ１１２では、エラー処理が実施される。例えば、コントローラＣＮＴＬは、書き込みエラーが発生したアドレスＡＤ１をエラーアドレスとして記憶し、アドレスＡＤ１に割り当てられた記憶ブロックの書き込み動作を禁止する。あるいは、コントローラＣＮＴＬは、上位のシステムにアドレスＡＤ１のアクセスで書き込みエラーが発生したことを通知する。なお、この実施形態では、書き込みエラーは、データの書き込みが同じアドレスＡＤに対して９回以上実施されたときに発生する。
【００５９】
図１０は、図２に示したメモリシステムＭＳＹＳの読み出し動作の例を示している。例えば、図１０のフローは、コントローラＣＮＴＬが実行するプログラムにより実現される。なお、図１０のフローは、コントローラＣＮＴＬ内に設けられるメモリコントローラ等のハードウエアロジックにより実行されてもよい。ステップＳ２００からＳ２１２の処理は、図９に示したステップＳ１００からＳ１１２と同じである。なお、図９に示したステップＳ１１２においてエラー処理があらかじめ行われるため、ステップＳ２１２のエラー処理は実施されることはない。すなわち、読み出し動作時にエラー処理は発生しないため、ステップＳ２１０、Ｓ２１２は省略し、ステップＳ２０８を実施後、常にステップＳ２０６に戻ってもよい。
【００６０】
ステップＳ２００からＳ２１０により、データＤ７−０が書き込まれていないアレイ（ＡＲＹ０−７のいずれか）が、フラグデータＦＬＧＩに基づいて検索される。換言すれば、カウンタ値Ｉから”１”を引いた値に等しい番号のアレイ（ＡＲＹ０−７のいずれか）に有効なデータＤ７−０が保持されていることが分かる。
【００６１】
この後、ステップＳ２１４において、カウンタ値Ｉから”１”が引かれる。但し、記憶ブロックのデータ領域にデータＤ７−０が１回も書き込まれていないとき（例えば、図８のアドレス０１ｈ）、読み出すべき有効なデータＤ７−０は存在せず、カウンタ値Ｉは”０”である。この場合、アレイＡＲＹ０のデータＦＦｈを有効なデータとして読み出すために、ステップＳ２１４の処理はスキップされる。次に、ステップＳ２１６において、有効なデータＤ７−０が書き込まれているアレイ（ＡＲＹ０−７のいずれか）を示すデータ選択信号ＤＳＥＬ２−０の値がカウンタ値Ｉに設定される。次に、ステップＳ２１８では、コントローラＣＮＴＬは、アドレス信号ＡＤ（ＡＤ１）、高レベルのリードイネーブル信号ＲＥ、低レベルのライトイネーブル信号ＷＥおよび低レベルのフラグ選択信号ＦＳＥＬを半導体メモリＭＥＭに出力する。
【００６２】
半導体メモリＭＥＭは、読み出しコマンドおよび低レベルのフラグ選択信号ＦＳＥＬを受け、アドレスＡＤ１が示すワード線ＷＬに接続されたメモリセルＭＣのうち、データ選択信号ＤＳＥＬ２−０が示すアレイ（ＡＲＹ０−７のいずれか）からデータＤ７−０を読み出し、データ線Ｉ／Ｏに出力する。そして、ステップＳ２２０において、コントローラＣＮＴＬは、半導体メモリＭＥＭから有効なデータＤ７−０を読み出し、読み出し動作は完了する。
【００６３】
図１１は、図２に示したメモリシステムＭＳＹＳの動作の例を示している。この例では、図８に示したアドレスＡＤ＝００ｈに対する読み出し動作ＲＤが実行され、次に、アドレスＡＤ＝０４ｈに対する書き込み動作ＷＲが実行される。例えば、読み出し動作ＲＤは２サイクルＣ１−Ｃ２で実行され、書き込み動作ＷＲは３サイクルＣ３−Ｃ５で実行される。図１１の動作は、クロックに同期して動作する半導体メモリＭＥＭまたはクロックに非同期で動作する半導体メモリＭＥＭを用いて実施される。
【００６４】
まず、コントローラＣＮＴＬは、サイクルＣ１において、アドレスＡＤ＝００ｈのフラグデータＦＬＧ０−７を読み出すために、読み出しコマンドを半導体メモリＭＥＭに出力する（図１１（ａ））。半導体メモリＭＥＭは、アドレスＡＤに応じたワード線ＷＬを高レベルに活性化し、ワード線ＷＬに接続された全てのメモリセルＭＣからデータを読み出す。半導体メモリＭＥＭは、読み出しコマンドとともに供給される高レベルのフラグ選択信号ＦＳＥＬに応答してフラグリードイネーブル信号ＦＲＥＮを高レベルに活性化する（図１１（ｂ、ｃ））。フラグリードイネーブル信号ＦＲＥＮの活性化に応答して図５に示したフラグ選択回路ＦＳＥＬＣが動作し、フラグデータＦＬＧ０−７（ＥＦｈ）がデータ線ＤＯＵＴを介してデータ端子Ｉ／Ｏに出力される（図１１（ｄ、ｅ））。
【００６５】
コントローラＣＮＴＬは、読み出したフラグデータＦＬＧ０−７の値に基づいて、有効なデータが保持されているアレイ（ＡＲＹ０−７のいずれか）を検出する。この例では、図８のアドレスＡＤ＝００ｈの領域に示したように、論理０を保持する最も番号の大きいフラグＦＬＧに対応するアレイは、アレイＡＲＹ０である。このため、コントローラＣＮＴＬは、サイクルＣ２において、アレイＡＲＹ０内のアドレスＡＤ＝００ｈのデータＤ７−０を読み出すために、アレイＡＲＹ０を示すデータ選択信号ＤＳＥＬ２−０＝”０００”とともに読み出しコマンドを半導体メモリＭＥＭに出力する（図１１（ｆ、ｇ））。半導体メモリＭＥＭは、アドレスＡＤに応じた全てのメモリセルＭＣからデータを読み出す。
【００６６】
半導体メモリＭＥＭは、読み出しコマンドとともに供給される低レベルのフラグ選択信号ＦＳＥＬに応答してデータリードイネーブル信号ＤＲＥＮを高レベルに活性化する（図１１（ｈ、ｉ））。図５に示したデコーダＤＥＣは、データ選択信号ＤＳＥＬ２−０＝”０００”に応じて、アレイＡＲＹ０を選択するために選択信号ＳＥＬ０を活性化する。図５に示したデータ選択回路ＤＳＥＬＣは、データリードイネーブル信号ＤＲＥＮおよび選択信号ＳＥＬ０の活性化に応答して動作する。読み出しデータＤ７−０（１２ｈ）はデータ線ＤＯＵＴを介してデータ端子Ｉ／Ｏに出力される（図１１（ｊ、ｋ））。そして、半導体メモリＭＥＭから出力されるデータＤ７−０がコントローラＣＮＴＬにより受信され、読み出し動作ＲＤは完了する。
【００６７】
次に、コントローラＣＮＴＬは、サイクルＣ３において、サイクルＣ１と同様に、読み出しコマンドを半導体メモリＭＥＭに出力し（図１１（ｌ））、アドレスＡＤ＝０４ｈのフラグデータＦＬＧ０−７（１Ｆｈ＝”０００１１１１１”）を半導体メモリＭＥＭから読み出す（図１１（ｍ））。コントローラＣＮＴＬは、読み出したフラグデータＦＬＧ０−７の値に基づいて、論理０を保持する最も番号の大きいフラグＦＬＧに対応するアレイＡＲＹ２に有効なデータが保持されていることを検出する。
【００６８】
次に、コントローラＣＮＴＬは、サイクルＣ４において、アレイＡＲＹ２内のアドレスＡＤ＝０４ｈのフラグＦＬＧ３に”０”を書き込むために、高レベルのフラグ選択信号ＦＳＥＬ、データ信号Ｉ／Ｏ（０Ｆｈ＝”００００１１１１”）とともに書き込みコマンドを半導体メモリＭＥＭに出力する（図１１（ｎ、ｏ、ｐ））。半導体メモリＭＥＭは、書き込みコマンドとともに供給される高レベルのフラグ選択信号ＦＳＥＬに応答してフラグライトイネーブル信号ＦＷＥＮを高レベルに活性化する（図１１（ｑ））。フラグライトイネーブル信号ＦＷＥＮの活性化に応答して図５に示したフラグ選択回路ＦＳＥＬＣが動作する。フラグデータＦＬＧ０−７（０Ｆｈ）は、データ線ＤＯＵＴを介してフラグＦＬＧ０−７（メモリセルＭＣ）に書き込まれる（図１１（ｒ））。サイクルＣ４の動作により、図５に示したアレイＡＲＹ２内のアドレスＡＤ＝０４ｈに保持されているデータＡ２ｈは、無効のデータになる。
【００６９】
次に、コントローラＣＮＴＬは、サイクルＣ５において、アレイＡＲＹ３内のアドレスＡＤ＝０４ｈに新たなデータを書き込むために、データ選択信号ＤＳＥＬ２−０＝”０１１”およびデータ信号Ｉ／Ｏ（例えば、６Ａｈ）とともに書き込みコマンドを半導体メモリＭＥＭに出力する（図１１（ｓ、ｔ、ｕ））。半導体メモリＭＥＭは、書き込みコマンドとともに供給される低レベルのフラグ選択信号ＦＳＥＬに応答してデータライトイネーブル信号ＤＷＥＮを高レベルに活性化する（図１１（ｖ、ｗ））。図５に示したデコーダＤＥＣは、データ選択信号ＤＳＥＬ２−０＝”０１１”に応じて、アレイＡＲＹ３を選択するために選択信号ＳＥＬ３を活性化する。図５に示したデータ選択回路ＤＳＥＬＣは、データライトイネーブル信号ＤＷＥＮおよび選択信号ＳＥＬ３の活性化に応答して動作し、データ線ＤＯＵＴを介して供給されるデータＤ７−０（６Ａｈ）をアレイＡＲＹ３内のメモリセルＭＣに書き込む（図１１（ｘ））。そして、書き込み動作ＷＲは完了する。
【００７０】
図１２は、図２に示したメモリシステムＭＳＹＳの動作の別の例を示している。図１２の動作は、クロックに非同期で動作する半導体メモリＭＥＭを用いて実施される。アクセスされるアドレスＡＤおよびアクセス順は、図１１と同じである。すなわち、図７に示したアドレスＡＤ＝００ｈに対する読み出し動作ＲＤが実行され、次に、アドレスＡＤ＝０４ｈに対する書き込み動作ＷＲが実行される。
【００７１】
この例では、リードイネーブル信号ＲＥは、読み出し動作ＲＤの間と書き込み動作の最初の所定期間に高レベルに活性化される（図１２（ａ、ｂ））。ライトイネーブル信号ＷＥは、書き込み動作の後半の所定期間に高レベルに活性化される（図１２（ｃ））。アドレス信号ＡＤの値は、読み出し動作ＲＤの間および書き込み動作ＷＲの間、それぞれ維持される（図１２（ｄ、ｅ））。他の信号の状態は、図１１と同じである。この例では、読み出し動作ＲＤにおいて、リードイネーブル信号ＲＥは、フラグデータＦＬＧ０−７および読み出しデータＤ７−０を読み出す間、高レベルに維持される。これにより、半導体メモリＭＥＭは、読み出し動作ＲＤにおいてデータを２回読み出す間、ワード線ＷＬを活性化し続けることができる。同様に、書き込み動作ＷＲにおいて、ライトイネーブル信号ＷＥは、フラグデータＦＬＧ０−７および書き込みデータＤ７−０を書き込む間、高レベルに維持される。これにより半導体メモリＭＥＭは、書き込み動作ＷＲにおいてデータを２回書き込む間、ワード線ＷＬを活性化し続けることができる。これにより、ワード線ＷＬの活性化、非活性化の回数を少なくでき、読み出し動作ＲＤの時間および書き込み動作ＷＲの時間を短縮できる。以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
【００７２】
図１３は、別の実施形態のメモリシステムＭＳＹＳの書き込み動作の例を示している。この実施形態では、半導体メモリＭＥＭの書き込み動作時にコントローラＣＮＴＬにより実行されるプログラムが上述した実施形態（図９のフロー）と相違している。メモリシステムＭＳＹＳのその他の構成および動作は、図２から図１１に示した実施形態と同じである。
【００７３】
半導体メモリＭＥＭのメモリセルＭＣは、図７に示したように、ヒューズＦＳを用いて形成されている。メモリセルＭＣは、論理１から論理０にのみ書き換えできる。例えば、アレイＡＲＹ０−７のいずれかに保持されているデータＤ７−０のうち論理１のビットは、論理０に書き換え可能である。換言すれば、書き込みデータＤ７−０（ＷＤＴ）とメモリセルＭＣに保持されているデータＤ７−０（ＲＤＴ）の論理積が、書き込みデータＤ７−０（ＷＤＴ）に等しいとき、データＤ７−０が書き込まれているアレイＡＲＹ（ＡＲＹ０−７のいずれか）に新たなデータＤ７−０を上書きできる。
【００７４】
図１３において、ステップＳ１００からＳ１１２は、図９と同じである。ステップＳ１３０では、有効なデータＤ７−０を読み出すために、データ選択信号ＤＳＥＬ２−０がカウンタ値Ｉより”１”小さい値に設定される。もし、その結果、値が負になる場合には、データ選択信号ＤＳＥＬ２−０は”０”に設定される。次に、ステップＳ１３２において、コントローラＣＮＴＬは読み出しコマンドを半導体メモリＭＥＭに供給する。ステップＳ１３４において、コントローラＣＮＴＬは、半導体メモリＭＥＭから有効なデータＤ７−０（ＲＤＴ）を読み出す。
【００７５】
次に、ステップＳ１３６において、コントローラＣＮＴＬは、書き込みデータＷＤＴと半導体メモリＭＥＭから読み出された有効な読み出しデータＲＤＴとの論理積を求める。論理積が書き込みデータＷＤＴに等しいとき、現在のカウンタ値Ｉが示すアレイＡＲＹにデータＤ７−０を上書き可能なため、処理はステップＳ１４２に移行する。論理積が書き込みデータＷＤＴと異なるとき、新たなアレイＡＲＹに書き込みデータＷＤＴを書き込むために、処理はステップＳ１３８に移行する。
【００７６】
ステップＳ１３８において、コントローラＣＮＴＬは、図９のステップＳ１１６と同様に、書き込み済を示す低レベル（＝０）のフラグデータＦＬＧＩとともに書き込みコマンドを半導体メモリＭＥＭに出力する。これにより、フラグＦＬＧ０−７の値が更新され、カウンタ値Ｉが示すアレイＡＲＹは、未書き込みのデータ領域から有効なデータ領域に変更される。次に、ステップＳ１４０において、コントローラＣＮＴＬは、カウンタ値Ｉが示すアレイＡＲＹにデータＤ７−０を書き込むために、データ選択信号ＤＳＥＬ２−０をカウンタ値Ｉに設定する。そして、ステップＳ１４２において、図９のステップＳ１１８と同様に、書き込みコマンドが半導体メモリＭＥＭに供給され、書き込み動作が実行される。
【００７７】
図１４は、図１３に示した書き込み動作を実行するメモリシステムＭＳＹＳの動作の例を示している。この実施形態の書き込み動作では、サイクルＣ３、Ｃ４の間に、図１３のステップＳ１３２に示したようにデータＤ７−０のリードサイクルＣ３−１が挿入される（図１４（ａ））。サイクルＣ１−Ｃ５の動作は、図１１と同じである。
【００７８】
サイクルＣ３−１では、データＤ７−０は、サイクルＣ３で読み出したフラグデータＦＬＧ０−７の値（１Ｆｈ）に応じてアレイＡＲＹ２から読み出される。すなわち、図８のアドレス０４ｈにおいて、データＤ７−０は、書き込み済を示すフラグＦＬＧ０−２のうち、番号が最も大きいフラグＦＬＧ２に対応するアレイＡＲＹ２のデータ領域Ｄ７−０から読み出される。このため、データ選択信号ＤＳＥＬ２−０は、”０１０”に設定される（図１４（ｂ））。コントローラＣＮＴＬは、読み出したデータＡ２ｈと書き込みデータ６Ａｈとの論理積（２２ｈ）を書き込みデータ６Ａｈと比較する。論理積２２ｈと書き込みデータ６Ａｈが異なるため、コントローラＣＮＴＬは、新たなアレイＡＲＹ３にデータ６Ａｈを書き込むために、０ＦｈのフラグデータＦＬＧ０−７を半導体メモリＭＥＭに書き込む（図１４（ｃ））。すなわち、論理積と書き込みデータとが異なるとき、図１１と同様に、未書き込みを示すフラグＦＬＧ３−７のうち、番号が最も小さいフラグＦＬＧ３に対応するアレイＡＲＹ３のデータ領域Ｄ７−０に書き込まれる。
【００７９】
図１５は、図１４に示した書き込み動作を実行するメモリシステムＭＳＹＳの動作の別の例を示している。図１４と同じ動作については、詳細な説明は省略する。この例では、図１４からサイクルＣ４が削除される。また、サイクルＣ５が図１４と異なる。書き込みデータの値は２０ｈである（図１５（ａ））。サイクルＣ３−１で読み出されるデータＡ２ｈと書き込みデータ２０ｈとの論理積（２０ｈ）は、書き込みデータ２０ｈと同じである。このため、コントローラＣＮＴＬは、現在有効なアレイＡＲＹ２を有効状態に維持する。すなわち、論理積と書き込みデータとが同じとき、書き込みデータは、書き込み済を示すフラグＦＬＧ０−２のうち、番号が最も大きいフラグＦＬＧ２に対応するアレイＡＲＹ２のデータ領域Ｄ７−０に書き込まれる。アドレス０４ｈのフラグＦＬＧ０−７の値（１Ｆｈ）は書き換える必要がなく、図１４に示したサイクルＣ４は不要である。そして、サイクルＣ５において、コントローラＣＮＴＬは、データ選択信号ＤＳＥＬ２−０を”０１１”に設定し、アレイＡＲＹ２に保持されているデータＡ２ｈをデータ２０ｈに書き換える（図１４（ｂ））。
【００８０】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、書き込み動作において、有効なデータＤ７−０が保持されているアレイＡＲＹに新たなデータＤ７−０を上書き可能なときに、上書きを実行することにより、半導体メモリＭＥＭの各記憶ブロックへのデータＤ７−０の書き込み回数を増加させることができる。この結果、記憶容量の増加を最小限にして、書き換え効率を向上できる。また、半導体メモリＭＥＭの書き込み動作に対する寿命を延ばすことができ、メモリシステムＭＳＹＳのコストを削減できる。
【００８１】
図１６は、別の実施形態におけるメモリシステムＭＳＹＳの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態では、コントローラＣＮＴＬは、半導体メモリＭＥＭにアドレス信号ＡＤ、書き込みデータ信号Ｉ／Ｏ、リードイネーブル信号ＲＥおよびライトイネーブル信号ＷＥを出力し、半導体メモリＭＥＭから読み出しデータ信号Ｉ／Ｏを受ける。コントローラＣＮＴＬは、図２に示したデータ選択信号ＤＳＥＬ２−０およびフラグ選択信号ＦＳＥＬを出力しない。メモリシステムＭＳＹＳのその他の構成は、半導体メモリＭＥＭが異なることを除き、図２と同じである。
【００８２】
図１７は、図１６に示した半導体メモリＭＥＭの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。半導体メモリＭＥＭは、図３に示した半導体メモリＭＥＭの動作制御部１４およびデータ選択部２２の代わりに、動作制御部１４Ａおよびデータ選択部２２Ａを有している。動作制御部１４Ａは、図３に示した動作制御部１４からデータ選択信号ＤＳＥＬ２−０およびフラグ選択信号ＦＳＥＬを受ける機能と、受けた信号を出力する機能とを削除している。
【００８３】
データ選択部２２Ａは、図３に示したデータ選択部２２に、データＤ７−０を入力または出力するアレイＡＲＹ０−７を決める機能を追加している。例えば、データ選択部２２Ａは、書き込み動作において、番号の小さいデータ領域Ｄ７−０から順にデータを書き込み、対応するフラグ領域ＦＬＧ（ＦＬＧ０−７）に書き込み済を示すフラグデータを書き込む。
【００８４】
また、データ選択部２２Ａは、読み出し動作において、書き込み済を示すフラグデータが格納されたフラグ領域ＦＬＧのうち最も番号の大きいフラグ領域ＦＬＧに対応するデータ領域Ｄ７−０に格納されたデータを有効なデータとして読み出す。すなわち、半導体メモリＭＥＭは、図１０および図１３に示したコントローラＣＮＴＬの動作フローの一部を自動的に実行する機能を有している。半導体メモリＭＥＭのその他の構成は、図３と同じである。すなわち、半導体メモリＭＥＭは、各メモリセルＭＣにデータを１回のみ書き込み可能な不揮発性のメモリである。メモリセルアレイ１８は、図４および図７と同じであり、共通のワード線ＷＬに接続されたメモリセルＭＣを含む記憶ブロックを有している。各記憶ブロックは、データが格納されるデータ領域Ｄ７−０と、データ領域Ｄ７−０へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域ＦＬＧ０−７を有する複数の記憶領域を有している。メモリセルアレイ１８に保持されているデータは、例えば、図８と同じであるとする。
【００８５】
図１８は、図１７に示したデータ選択部２２Ａの例を示している。データ選択部２２Ａは、読み書き制御回路ＲＷＣＮＴ、データ選択回路ＤＳＥＬＣ、フラグ選択回路ＦＳＥＬＣ、データ比較回路ＤＣＭＰ、フラグ演算回路ＦＬＧＯＰ、エンコーダＥＮＣおよび選択信号生成回路ＳＥＬＧＥＮを有している。データ選択回路ＤＳＥＬＣは、図５と同じである。
【００８６】
読み書き制御回路ＲＷＣＮＴは、リード制御信号ＲＤＣＮＴに応答して、フラグリードイネーブル信号ＦＲＥＮおよびデータリードイネーブル信号ＤＲＥＮを所定の期間出力する。また、読み書き制御回路ＲＷＣＮＴは、ライト制御信号ＷＲＣＮＴに応答して、フラグリードイネーブル信号ＦＲＥＮおよびデータリードイネーブル信号ＤＲＥＮを所定の期間出力し、この後、データライトイネーブル信号ＤＷＥＮおよびフラグライトイネーブル信号ＦＷＥＮを順次に出力する。
【００８７】
フラグ選択回路ＦＳＥＬＣは、フラグセレクタＦＬＧＳＥＬおよびフラグスイッチＦＬＧＳＷを有している。フラグセレクタＦＬＧＳＥＬは、フラグリードイネーブル信号ＦＲＥＮに応答してメモリセルアレイ１８からのフラグデータＦＬＧ０−７を内部フラグデータＩＦＬＧ０−７として出力する。フラグセレクタＦＬＧＳＥＬは、フラグライトイネーブル信号ＦＷＥＮに応答して書き込みフラグデータＷＦＬＧ０−７を内部フラグデータＩＦＬＧ０−７として出力する。フラグスイッチＦＬＧＳＷは、フラグライトイネーブル信号ＦＷＥＮに応答して、書き込みフラグデータＷＦＬＧ０−７をフラグデータＦＬＧ０−７としてメモリセルアレイ１８に出力する。
【００８８】
選択信号生成回路ＳＥＬＧＥＮは、読み出し動作時および書き込み動作時に動作し、フラグ選択回路ＦＳＥＬＣから出力される内部フラグデータＩＦＬＧ０−７に応じて、選択信号ＳＥＬ０−７のいずれかを有効レベル（例えば、高レベル）に設定する。例えば、内部フラグデータＩＦＬＧ０−７が２進数で”０１１１１１１１”または”１１１１１１１１”のとき、選択信号ＳＥＬ０のみが有効レベルに設定される。内部フラグデータＩＦＬＧ０−７が２進数で”００１１１１１１”のとき、選択信号ＳＥＬ１のみが有効レベルに設定される。内部フラグデータＩＦＬＧ０−７が２進数で”００００１１１１”のとき、選択信号ＳＥＬ３のみが有効レベルに設定される。すなわち、選択信号生成回路ＳＥＬＧＥＮは、値が”０”の内部フラグデータＩＦＬＧ０−７のうち、最も大きい番号に対応する選択信号ＳＥＬ（ＳＥＬ０−７のいずれか）を有効レベルに設定する。
【００８９】
データ比較回路ＤＣＭＰは、書き込み動作時に動作し、選択信号ＳＥＬ０−７に応じてアレイＡＲＹ０−７のいずれかから読み出された有効なデータＤＯＵＴ（Ｄ７−０）と新たな書き込みデータＤＩＮ（Ｄ７−０）とを比較する。データ比較回路ＤＣＭＰは、データＤＯＵＴと書き込みデータＤＩＮとの論理積が書き込みデータＤＩＮに等しいときに、フラグ増加信号ＦＩＮＣを無効レベル（例えば、低レベル）に設定する。データ比較回路ＤＣＭＰは、データＤＯＵＴと書き込みデータＤＩＮとの論理積が書き込みデータＤＩＮと異なるときに、フラグ増加信号ＦＩＮＣを有効レベル（例えば、高レベル）に設定する。すなわち、データ比較回路ＤＣＭＰは、図１９および図２０に示すように、書き込みデータＤＩＮが有効なデータＤＯＵＴを格納しているデータ領域Ｄ７−０に上書き可能か否かを判定する。具体的には、データ比較回路ＤＣＭＰは、書き込みデータＤＩＮと有効なデータＤＯＵＴとの論理積が書き込みデータＤＩＮと同じときに、上書き可能を判定する。
【００９０】
フラグ演算回路ＦＬＧＯＰは、書き込み動作時に動作する。フラグ演算回路ＦＬＧＯＰは、フラグ増加信号ＦＩＮＣが無効レベルの時に、選択信号ＳＥＬ０−７を書き込み選択信号ＷＳＥＬ０−７として出力する。フラグ演算回路ＦＬＧＯＰは、フラグ増加信号ＦＩＮＣが有効レベルの時に、選択信号ＳＥＬ０−７のうち有効レベル（例えば、高レベル）のビットを番号の大きい側に１つシフトし、書き込み選択信号ＷＳＥＬ０−７として出力する。例えば、選択信号ＳＥＬ２が高レベルで、フラグ増加信号ＦＩＮＣが高レベルの時、書き込み選択信号ＷＳＥＬ３が高レベルに設定され、書き込み選択信号ＷＳＥＬ０−２、３−７は低レベルに設定される。
【００９１】
エンコーダＥＮＣは、高レベルの書き込み選択信号ＷＳＥＬ（ＷＳＥＬ０−７のいずれか）に対応する値の書き込みフラグデータＷＦＬＧ０−７を出力する。例えば、書き込み選択信号ＷＳＥＬ２が高レベルの時、エンコーダＥＮＣは、書き込みフラグデータＷＦＬＧ０−７を２進数で”０００１１１１１”に設定する。書き込み選択信号ＷＳＥＬ３が高レベルの時、エンコーダＥＮＣは、書き込みフラグデータＷＦＬＧ０−７を２進数で”００００１１１１”に設定する。このように、エンコーダＥＮＣは、選択信号生成回路ＳＥＬＧＥＮと逆の動作をする。
【００９２】
例えば、フラグ演算回路ＦＬＧＯＰ、エンコーダＥＮＣ、フラグ選択回路ＦＳＥＬＣおよび選択信号生成回路ＳＥＬＧＥＮは、新たなデータＤ７−０の上書き可能なときに、新たなデータＤ７−０を有効なデータを格納しているデータ領域に上書きする書き込み制御回路として動作する。なお、データ選択部２２Ａからデータ比較回路ＤＣＭＰを削除し、フラグ増加信号ＦＩＮＣを有効レベル（例えば、高レベル）に固定することで、図２から図１２に示したメモリシステムＭＳＹＳと同様に、書き込み動作毎に、データを常に新たなデータ領域Ｄ７−０に書き込むことができる。
【００９３】
図１９は、図１６に示したメモリシステムＭＳＹＳの動作の例を示している。この例では、図８に示したアドレスＡＤ＝００ｈに対する読み出し動作ＲＤが実行され、次に、アドレスＡＤ＝０４ｈに対する書き込み動作ＷＲが実行される。図１９の動作は、クロックに同期して動作する半導体メモリＭＥＭまたはクロックに非同期で動作する半導体メモリＭＥＭを用いて実施される。
【００９４】
まず、コントローラＣＮＴＬは、読み出し動作ＲＤを実行するために、高レベルのリードイネーブル信号ＲＥおよびアドレス信号ＡＤ（００ｈ）を半導体メモリＭＥＭに出力する（図１９（ａ、ｂ））。半導体メモリＭＥＭは、図１７に示した動作制御部１４Ａは、リードイネーブル信号ＲＥに応答してリード制御信号ＲＤＣＮＴを出力する。半導体メモリＭＥＭは、リード制御信号ＲＤＣＮＴに応答してアドレスＡＤに応じたワード線ＷＬを高レベルに活性化し、ワード線ＷＬに接続された全てのメモリセルＭＣからデータを読み出す。
【００９５】
図１８に示した読み書き制御回路ＲＷＣＮＴは、リード制御信号ＲＤＣＮＴに応答して、データリードイネーブル信号ＤＲＥＮおよびフラグリードイネーブル信号ＦＲＥＮを活性化する（図１９（ｃ、ｄ））。フラグセレクタＦＬＧＳＥＮは、メモリセルアレイ１８から読み出されるフラグデータＦＬＧ０−７を内部フラグデータＩＦＬＧ０−７（ＥＦｈ）として出力する（図１９（ｅ））。選択信号生成回路ＳＥＬＧＥＮは、内部フラグデータＩＦＬＧ０−７に基づいて選択信号ＳＥＬ０を活性化する（図１９（ｆ））。
【００９６】
データ選択回路ＤＳＥＬＣは、データリードイネーブル信号ＤＲＥＮの活性化中に、高レベルの選択信号ＳＥＬ０に応じて、アレイＡＲＹ０から読み出されたデータＤ７−０をデータ線ＤＯＵＴに出力する（図１９（ｇ））。図１６に示したデータ入出力部１６は、データ線ＤＯＵＴ上のデータＤ７−０を読み出しデータとしてデータ端子Ｉ／Ｏに出力する（図１９（ｈ））。そして、半導体メモリＭＥＭから出力されるデータＤ７−０がコントローラＣＮＴＬにより受信され、読み出し動作ＲＤは完了する。なお、特に限定されないが、コントローラＣＮＴＬによる制御を簡単にするために、読み出し動作時間ＲＤは、書き込み動作時間ＷＲと等しく設計されている。このため、読み出し動作時間ＲＤは、比較的余裕がある。
【００９７】
次に、コントローラＣＮＴＬは、書き込み動作ＷＲを実行するために、高レベルのライトイネーブル信号ＷＥ、アドレス信号ＡＤ（０４ｈ）および書き込みデータ信号Ｉ／Ｏ（６Ａｈ）を半導体メモリＭＥＭに出力する（図１９（ｉ、ｊ、ｋ））。書き込みデータ６Ａｈは、データ入出力部１６を介してデータ線ＤＩＮに伝達される（図１９（ｌ））。読み書き制御回路ＲＷＣＮＴは、読み出し動作ＲＤと同様に、ライト制御信号ＷＲＣＮＴに応答して、データリードイネーブル信号ＤＲＥＮおよびフラグリードイネーブル信号ＦＲＥＮを活性化する（図１９（ｍ、ｎ））。そして、読み出し動作ＲＤと同様に、フラグセレクタＦＬＧＳＥＮおよび選択信号生成回路ＳＥＬＧＥＮが動作し、内部フラグデータＩＦＬＧ０−７（１Ｆｈ）に基づいて選択信号ＳＥＬ２が活性化される（図１９（ｏ））。
【００９８】
データ選択回路ＤＳＥＬＣは、データリードイネーブル信号ＤＲＥＮの活性化中に、高レベルの選択信号ＳＥＬ２に応じて、アレイＡＲＹ２から読み出されたデータＤ７−０（Ａ２ｈ）をデータ線ＤＯＵＴに出力する（図１９（ｐ））。データ比較回路ＤＣＭＰは、読み出しデータＡ２ｈと書き込みデータ６Ａｈの論理積（２２ｈ）が書き込みデータ６Ａｈと異なるため、フラグ増加信号ＦＩＮＣを活性化する（図１９（ｑ））。フラグ演算回路ＦＬＧＯＰは、フラグ増加信号ＦＩＮＣが低レベルの期間、選択信号ＳＥＬ０−７を書き込み選択信号ＷＳＥＬ０−７として出力する（図１９（ｒ））。すなわち、書き込み選択信号ＷＳＥＬ２が活性化される。フラグ演算回路ＦＬＧＯＰは、高レベルのフラグ増加信号ＦＩＮＣに基づいて、活性化させるビットを１ビット番号の大きい側にシフトして、書き込み選択信号ＷＳＥＬ３を活性化する（図１９（ｓ））。例えば、書き込み選択信号ＷＳＥＬ３は、フラグライトイネーブル信号ＦＷＥＮに応答して活性化される。
【００９９】
エンコーダＥＮＣは、書き込み選択信号ＷＳＥＬ０−７をエンコードし、書き込みフラグデータＷＦＬＧ０−７（０Ｆｈ）を生成する（図１９（ｔ））。そして、フラグスイッチＦＬＧＳＷは、フラグライトイネーブル信号ＦＷＥＮの活性化中にオンし、書き込みフラグデータＷＦＬＧ０−７をフラグデータＦＬＧ０−７（０Ｆｈ）としてアレイＡＲＹ０−７に書き込む（図１９（ｕ））。
【０１００】
フラグセレクタＦＬＧＳＥＮは、フラグライトイネーブル信号ＦＷＥＮの活性化中に書き込みフラグデータＷＦＬＧ０−７を内部フラグデータＩＦＬＧ０−７（０Ｆｈ）として出力する（図１９（ｖ））。選択信号生成回路ＳＥＬＧＥＮは、内部フラグデータＩＦＬＧ０−７に基づいて選択信号ＳＥＬ３を活性化する（図１９（ｗ））。データ選択回路ＤＳＥＬＣは、データライトイネーブル信号ＤＷＥＮの活性化中に、高レベルの選択信号ＳＥＬ３に応じて、ライトデータＤＩＮ（６Ａｈ）をアレイＡＲＹ３に書き込む（図１９（ｘ））。そして、書き込み動作が完了する。
【０１０１】
図２０は、図１６に示したメモリシステムＭＳＹＳの動作の別の例を示している。この例では、図１９と同様に、図８に示したアドレスＡＤ＝００ｈに対する読み出し動作ＲＤが実行され、次に、アドレスＡＤ＝０４ｈに対する書き込み動作ＷＲが実行される。但し、書き込みデータＤ７−０は、”２０ｈ”である（図２０（ａ))。読み出しデータＡ２ｈと書き込みデータ２０ｈの論理積は、書き込みデータ２０ｈと同じである。読み出し動作ＲＤは、図１９と同じである。図２０の動作は、クロックに同期して動作する半導体メモリＭＥＭまたはクロックに非同期で動作する半導体メモリＭＥＭを用いて実施される。
【０１０２】
この例では、データ比較回路ＤＣＭＰで求められる論理積が書き込みデータ２０ｈと同じため、フラグ増加信号ＦＩＮＣは低レベルに維持される（図２０（ｂ））。このため、フラグ演算回路ＦＬＧＯＰは、選択信号ＳＥＬ０−７をライト選択信号ＷＳＥＬ０−７として出力する。すなわち、ライト選択信号ＷＳＥＬ２が活性化される（図２０（ｃ））。エンコーダＥＮＣは、書き込み選択信号ＷＳＥＬ０−７をエンコードし、書き込みフラグデータＷＦＬＧ０−７（１Ｆｈ）を生成する（図２０（ｄ））。
【０１０３】
そして、フラグライトイネーブル信号ＦＷＥＮの活性化中に、書き込みフラグデータＷＦＬＧ０−７がフラグデータＦＬＧ０−７（１Ｆｈ）としてアレイＡＲＹ０−７に書き込まれる（図２０（ｅ））。フラグセレクタＦＬＧＳＥＮは、フラグライトイネーブル信号ＦＷＥＮの活性化中に書き込みフラグデータＷＦＬＧ０−７を内部フラグデータＩＦＬＧ０−７（１Ｆｈ）として出力する（図２０（ｆ））。内部フラグデータＩＦＬＧ０−７（１Ｆｈ）の値が変わらないため、選択信号生成回路ＳＥＬＧＥＮは、選択信号ＳＥＬ２を活性化し続ける（図２０（ｇ））。データ選択回路ＤＳＥＬＣは、データライトイネーブル信号ＤＷＥＮの活性化中に、高レベルの選択信号ＳＥＬ２に応じて、ライトデータＤＩＮ（２０ｈ）をアレイＡＲＹ３に書き込む（図２０（ｈ））。そして、書き込み動作が完了する。
【０１０４】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、半導体メモリＭＥＭ内で、データを読み書きするアレイＡＲＹを自動的に検索し、アクセスできる。これにより、コントローラＣＮＴＬからデータ選択信号ＤＳＥＬおよびフラグ選択信号ＦＳＥＬ等の制御信号を出力することを不要にでき、汎用のコントローラＣＮＴＬを利用することが可能になる。この結果、メモリシステムＭＳＹＳのコストを削減できる。
【０１０５】
図２１は、別の実施形態における半導体メモリＭＥＭの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。半導体メモリＭＥＭは、図１７に示した半導体メモリＭＥＭの動作制御部１４Ａおよびデータ選択部２２Ａの代わりに動作制御部１４Ｂおよびデータ選択部２２Ｂを有している。また、半導体メモリＭＥＭは、データ選択部２２Ｂから出力されるエラー信号ＥＲＲを出力する外部端子を有している。
【０１０６】
半導体メモリＭＥＭのその他の構成は、図３および図１７と同じである。すなわち、半導体メモリＭＥＭは、各メモリセルＭＣにデータを１回のみ書き込み可能な不揮発性のメモリである。メモリセルアレイ１８の構成は、図４および図７と同じである。半導体メモリＭＥＭが搭載されるメモリシステムＭＳＹＳは、半導体メモリＭＥＭからコントローラＣＮＴＬに出力されるエラー信号ＥＲＲを伝達するエラー信号線ＥＲＲを、図１６に追加している。
【０１０７】
エラー信号ＥＲＲは、図１８に示したフラグ演算回路ＦＬＧＯＰが出力する。データ選択部２２Ｂは、フラグ演算回路ＦＬＧＯＰがエラー信号ＥＲＲを出力する機能を有することを除き、図１８に示したデータ選択部２２Ａと同じである。
【０１０８】
フラグ演算回路ＦＬＧＯＰは、選択信号ＳＥＬ７の活性化中にフラグ増加信号ＦＩＮＣの活性化を受けたときにエラー信号ＥＲＲを有効レベル（例えば、高レベル）に設定する。動作制御部１４Ｂは、高レベルのエラー信号ＥＲＲを受けたとき、ライト制御信号ＷＲＣＮＴを非活性化し、フラグデータＦＬＧ０−７および書き込みデータＤ７−０のメモリセルアレイ１８への書き込みを禁止する。エラー信号ＥＲＲに応答して書き込み動作ＷＲを停止することで、半導体メモリＭＥＭの誤動作を防止できる。
【０１０９】
書き込み動作において、選択信号ＳＥＬ７が活性化されているとき、全てのフラグ領域ＦＬＧ０−７は、書き込み済を示す論理０が格納されており、全ての出た領域Ｄ７−０にデータが書き込まれている。このため、フラグ増加信号ＦＩＮＣが出力されたとき、新たなデータを書き込むアレイＡＲＹはこれ以上存在しない。この場合に、半導体メモリＭＥＭは、エラー信号ＥＲＲを出力することで、新たな書き込みデータを半導体メモリＭＥＭに書き込みできなかったことをコントローラＣＮＴＬに通知する。コントローラＣＮＴＬは、エラー信号ＥＲＲを受けた後、エラーが発生したアドレスＡＤにデータを書き込むことを禁止する。そして、例えば、コントローラＣＮＴＬは、データが書き込まれていない別のアドレスＡＤのアレイＡＲＹ０に、データＤ７−０を書き込む。これにより、あるアドレスＡＤの全てのアレイＡＲＹ０−７にデータＤ７−０が書き込まれた場合にも、メモリシステムＭＳＹＳが誤動作することを防止できる。
【０１１０】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、新たな書き込みデータをメモリセルアレイ１８に書き込みできないときに、書き込み動作を停止することで、半導体メモリＭＥＭが誤動作することを防止できる。さらに、エラー信号ＥＲＲをコントローラＣＮＴＬに出力することで、メモリシステムＭＳＹＳの誤動作を防止できる。
【０１１１】
図２２は、別の実施形態におけるデータ選択部２２Ｃの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。半導体メモリＭＥＭは、図１７に示した半導体メモリＭＥＭのデータ選択部２２Ａの代わりにデータ選択部２２Ｃを有している。半導体メモリＭＥＭのその他の構成は、図３および図１７と同じである。すなわち、半導体メモリＭＥＭは、各メモリセルＭＣにデータを１回のみ書き込み可能な不揮発性のメモリである。メモリセルアレイ１８の構成は、図４および図７と同じである。半導体メモリＭＥＭが搭載されるメモリシステムＭＳＹＳは、図１６と同じである。
【０１１２】
データ選択部２２Ｃでは、データ選択回路ＤＳＥＬＣは、選択信号ＳＥＬ０−７の代わりに内部フラグデータＩＦＬＧ０−７を受ける。データ選択部２２Ｃのその他の構成は、図１８のデータ選択部２２Ａと同じである。なお、図２１と同様に、データ選択部２２Ｃのフラグ演算回路ＦＬＧＯＰからエラー信号ＥＲＲを出力してもよい。
【０１１３】
図２３は、図２２に示したデータ選択回路ＤＳＥＬＣの例を示している。図２３は、データＤ７−０の読み出し動作に関連する回路を記載している。データ選択回路ＤＳＥＬＣは、アレイＡＲＹ０−７からの読み出しデータＤ７−０をそれぞれ受けるアンド回路ＡＮＤ０−７と、オア回路ＯＲを有している。
【０１１４】
アンド回路ＡＮＤ０は、対応するデータＤ７−０、対応するフラグデータＦＬＧ０の反転論理およびフラグデータＦＬＧ１−７を受ける。アンド回路ＡＮＤ１は、対応するデータＤ７−０、対応するフラグデータＦＬＧ１の反転論理およびフラグデータＦＬＧ２−７を受ける。アンド回路ＡＮＤ２は、対応するデータＤ７−０、対応するフラグデータＦＬＧ２の反転論理およびフラグデータＦＬＧ３−７を受ける。同様に、アンド回路ＡＮＤ３−７は、対応するデータＤ７−０、対応するフラグデータＦＬＧ（ＦＬＧ３−７のいずれか）の反転論理および自身より番号の大きいフラグデータＦＬＧ（ＦＬＧ４−７等）を受ける。
【０１１５】
オア回路ＯＲは、アンド回路ＡＮＤ０−７の出力のオア演算し、読み出しデータＤＯＵＴとして出力する。アンド回路ＡＮＤ０−７により、論理０のフラグデータＦＬＧのうち、最も番号が大きいフラグデータＦＬＧに対応するアレイＡＲＹからのデータＤ７−０がオア回路ＯＲに伝達され、データ線ＤＯＵＴに出力される。例えば、図８に示したように、アドレスＡＤ（００ｈ）では、アレイＡＲＹ０に保持されているデータＤ７−０（１２ｈ）がデータ線ＤＯＵＴに出力される。アドレスＡＤ（０４ｈ）では、アレイＡＲＹ２に保持されているデータＤ７−０（Ａ２ｈ）がデータ線ＤＯＵＴに出力される。
【０１１６】
なお、図８のアドレスＡＤ（０１ｈ）に示すように、全てのフラグデータＦＬＧ０−７が論理１のとき、全てのアンド回路ＡＮＤ０−７は、論理０を出力する。このとき、オア回路ＯＲは、論理０をデータ線ＤＯＵＴに出力するため、データ端子Ｉ／Ｏから論理０のデータが出力される。なお、全てのアンド回路ＡＮＤ０−７が論理０を出力するときに、オア回路ＯＲが論理１をデータ線ＤＯＵＴに出力してもよい。以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
【０１１７】
図２４は、別の実施形態における半導体メモリＭＥＭの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。半導体メモリＭＥＭは、図３に示した半導体メモリＭＥＭのメモリセルアレイ１８の代わりにメモリセルアレイ１８Ｄを有している。半導体メモリＭＥＭのその他の構成は、図３と同じである。すなわち、半導体メモリＭＥＭは、各メモリセルＭＣにデータを１回のみ書き込み可能な不揮発性のメモリである。半導体メモリＭＥＭが搭載されるメモリシステムＭＳＹＳは、コントローラＣＮＴＬが実施する処理を除き図２と同じである。
【０１１８】
メモリセルアレイ１８Ｄの構成は、レギュラーアレイＡＲＹ０の代わりにレギュラーアレイＡＲＹ０Ｌが配置され、シャドウアレイＡＲＹ７の代わりにレギュラーアレイＡＲＹ０Ｈが配置されることを除き、図４および図７と同じである。レギュラーアレイＡＲＹ０Ｌ、０Ｈは、図４に示したアレイＡＲＹ０、７と同じ構成を有している。但し、レギュラーアレイＡＲＹ０Ｌは、アドレス信号ＡＤｍａｘが低レベルＬのときにアクセスされるように割り当てられている。レギュラーアレイＡＲＹ０Ｈは、アドレス信号ＡＤｍａｘが高レベルＨのときにアクセスされるように割り当てられている。
【０１１９】
図２５は、図２４に示したメモリセルアレイ１８Ｄに保持されているデータの例を示している。図８と同じ符号およびパターンについては、詳細な説明は省略する。メモリセルアレイ１８Ｄは、共通のワード線ＷＬに接続されたメモリセルＭＣを有し、アドレスＡＤに応じて選択される複数の記憶ブロックを有する。各記憶ブロックは、データが格納されるデータ領域Ｄ７−０と、データ領域Ｄ７−０へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域ＦＬＧ０−７を有している。
【０１２０】
この実施形態では、各アドレスＡＤにおいて、レギュラーアレイＡＲＹ０Ｌに対応する有効なデータは、書き込み済を示す論理０のフラグ領域ＦＬＧ（ＦＬＧ０−６）のうち、番号が最も大きいフラグ領域ＦＬＧに対応するアレイＡＲＹ（ＡＲＹ０Ｌ、ＡＲＹ１−６のいずれか）に保持されている。一方、各アドレスＡＤにおいて、レギュラーアレイＡＲＹ０Ｈに対応する有効なデータは、書き込み済を示す論理０のフラグ領域ＦＬＧ（ＦＬＧ１−７）のうち、番号が最も小さいフラグ領域に対応するアレイＡＲＹ（ＡＲＹ０Ｈ、ＡＲＹ６−１のいずれか）に保持されている。
【０１２１】
例えば、アドレスＡＤ（０７ｈ）では、フラグ領域ＦＬＧ１−４が論理１に設定されている。この状態で、アドレスＡＤｍａｘ＝Ｌの書き込み動作は、未書き込みを示す論理１のフラグデータが格納されたフラグ領域ＦＬＧ１−４のうち番号が最も小さいフラグ領域ＦＬＧ１に対応するデータ領域Ｄ７−０（ＡＲＹ１）に対して行われる。但し、アレイＡＲＹ０Ｌのデータ領域から読み出されるデータＢ８ｈと書き込みデータとの論理積が書き込みデータと同じとき、書き込みデータは、アレイＡＲＹ０Ｌのデータ領域に上書きされる。ここで、アレイＡＲＹ０Ｌのデータ領域は、書き込み済を示す論理０のフラグデータが格納された番号が小さい側のフラグ領域ＦＬＧ０のうち、番号が最も大きいフラグ領域ＦＬＧ０に対応しており、アドレスＡＤｍａｘ＝Ｌに対応する有効なデータを保持している。したがって、アドレス０７ｈ、ＡＤｍａｘ＝Ｌの読み出し動作では、アレイＡＲＹ０ＬのデータＢ８ｈが読み出される。
【０１２２】
また、アドレスＡＤ（０７ｈ）、ＡＤｍａｘ＝Ｈの書き込み動作は、未書き込みを示す論理１のフラグデータが格納されたフラグ領域ＦＬＧ１−４のうち番号が最も大きいフラグ領域ＦＬＧ４に対応するデータ領域Ｄ７−０（ＡＲＹ４）に対して行われる。但し、アレイＡＲＹ５のデータ領域から読み出されるデータ５３ｈと書き込みデータとの論理積が書き込みデータと同じとき、書き込みデータは、アレイＡＲＹ５のデータ領域に上書きされる。ここで、アレイＡＲＹ５のデータ領域は、書き込み済を示す論理０のフラグデータが格納された番号が大きい側のフラグ領域ＦＬＧ５−７のうち、番号が最も小さいフラグ領域ＦＬＧ５に対応しており、アドレスＡＤｍａｘ＝Ｈに対応する有効なデータを保持している。したがって、アドレス０７ｈ、ＡＤｍａｘ＝Ｈの読み出し動作では、アレイＡＲＹ０Ｌのデータ５３ｈが読み出される。
【０１２３】
一方、アドレスＡＤ（０４ｈ）では、フラグＦＬＧ３のみが論理１であり、他のフラグＦＬＧ０−２、４−７は論理０である。この状態で、レギュラーアレイＡＲＹ０Ｌ、０Ｈのいずれかに対する書き込み動作が実行されると、シャドウアレイＡＲＹ３にデータが書き込まれ、フラグＦＬＧ３は論理０に変更される。全てのフラグＦＬＧが論理０に設定されると、有効なデータの位置が不明になる。これを防止するために、フラグＦＬＧ０−７のうち１つのフラグのみが論理１であり、書き込み動作によりフラグが論理０に書き換えられることが分かったとき、コントローラＣＮＴＬは、書き込み動作を禁止する。
【０１２４】
図２６は、図２４に示した半導体メモリＭＥＭが搭載されるメモリシステムＭＳＹＳの書き込み動作の例を示している。図２６は、アドレスＡＤｍａｘ＝Ｌが割り当てられたレギュラーアレイＡＲＹ０Ｌに対応するデータを書き込むときのフローを示している。例えば、図２６のフローは、コントローラＣＮＴＬが実行するプログラムにより実現される。なお、図２６のフローは、コントローラＣＮＴＬ内に設けられるメモリコントローラ等のハードウエアロジックにより実行されてもよい。
【０１２５】
図２６のフローは、図１３のフローにステップＳ１３７を追加している。ステップＳ１３７では、新たなデータを書き込むアレイＡＲＹのフラグＦＬＧＩのみ高レベルＨのとき、有効なデータの位置が不明になることを防止するために、エラー処理（Ｓ１１２）に移行する。また、この実施形態では、ステップＳ１１０の最大値ｍａｘは、アレイＡＲＹ０Ｈに隣接するアレイＡＲＹ６の番号に対応する”６”である。
【０１２６】
図２７は、図２４に示した半導体メモリＭＥＭが搭載されるメモリシステムＭＳＹＳの書き込み動作の例を示している。図２７は、アドレスＡＤｍａｘ＝Ｈが割り当てられたレギュラーアレイＡＲＹ０Ｈに対応するデータを書き込むときのフローを示している。末尾にＡを付加したステップＳ１０４Ａ、Ｓ１０８Ａ、Ｓ１１０Ａ、Ｓ１３０Ａの処理が、図２６と相違している。これ等処理は、図２５に示したメモリセルアレイ１８Ｄ内の有効なデータを、図の右側から検索するために必要である。他のステップの処理は、図１３および図２６と同じである。例えば、図２７のフローは、コントローラＣＮＴＬが実行するプログラムにより実現される。なお、図２７のフローは、コントローラＣＮＴＬ内に設けられるメモリコントローラ等のハードウエアロジックにより実行されてもよい。
【０１２７】
ステップＳ１０４Ａでは、検索を開始するフラグ領域ＦＬＧＩは、図２５の番号が最も大きいフラグ領域ＦＬＧ７に設定される。ステップＳ１０８Ａでは、フラグＦＬＧＩが論理１のときに、対象のアレイＡＲＹを図２５の１つ左側にシフトするために、カウンタ値Ｉが１つ減らされる。ステップＳ１１０Ａでは、カウンタ値Ｉが最小値ｍｉｎより小さいとき、エラー処理（Ｓ１１２）が実施される。この実施形態では、最小値ｍｉｎは、アレイＡＲＹ０Ｌに隣接するアレイＡＲＹ１の番号に対応する”１”である。ステップＳ１３０Ａでは、有効なデータＤ７−０を読み出すために、データ選択信号ＤＳＥＬ２−０がカウンタ値Ｉより”１”大きい値に設定される。もし、その結果、値が最大値を超える場合には、データ選択信号ＤＳＥＬ２−０は最大値に設定される。
【０１２８】
図２８は、図２４に示した半導体メモリＭＥＭが搭載されるメモリシステムＭＳＹＳの読み出し動作の例を示している。図２８は、レギュラーアレイＡＲＹ０Ｈに対応するデータを読み出すときのフローを示している。レギュラーアレイＡＲＹ０ＨＬに対応するデータを読み出すときのフローは、図１０と同じである。末尾にＡを付加したステップＳ２０４Ａ、Ｓ２０８Ａ、Ｓ２１０Ａ、Ｓ２１４Ａの処理が、図１０と相違している。これ等処理は、図２５に示したメモリセルアレイ１８Ｄ内の有効なデータを、図の右側から検索するために必要である。他のステップの処理は、図１０と同じである。例えば、図２８のフローは、コントローラＣＮＴＬが実行するプログラムにより実現される。なお、図２８のフローは、コントローラＣＮＴＬ内に設けられるメモリコントローラ等のハードウエアロジックにより実行されてもよい。
【０１２９】
ステップＳ２０４Ａでは、検索を開始するフラグＦＬＧＩが図２５の番号が最も大きいフラグ領域ＦＬＧ７に設定される。ステップＳ２０８Ａでは、フラグＦＬＧＩが論理１のときに、対象のアレイＡＲＹを図２５の１つ左側にシフトするために、カウンタ値Ｉが１つ減らされる。ステップＳ２１０Ａでは、カウンタ値Ｉが最小値ｍｉｎより小さいとき、エラー処理（Ｓ２１２）が実施される。この実施形態では、最小値ｍｉｎは、アレイＡＲＹ０Ｌに隣接するアレイＡＲＹ１の番号に対応する”１”である。ステップＳ２１４Ａでは、有効なデータＤ７−０を読み出すために、データ選択信号ＤＳＥＬ２−０がカウンタ値Ｉより”１”大きい値に設定される。
【０１３０】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、アレイＡＲＹ１−６を複数のアドレス（ＡＤｍａｘ＝Ｌと、ＡＤｍａｘ＝Ｈ）のいずれかに割り当て可能にすることで、半導体メモリＭＥＭの記憶容量の増加を最小限にして、データの書き換え効率をさらに向上できる。
【０１３１】
図２９は、別の実施形態における半導体メモリＭＥＭの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。半導体メモリＭＥＭは、図２１に示した半導体メモリＭＥＭのアドレス入力部１０、メモリセルアレイ１８およびデータ選択部２２Ｂの代わりにアドレス入力部１０Ｅ、メモリセルアレイ１８Ｄおよびデータ選択部２２Ｅを有している。メモリセルアレイ１８Ｄは、図２５と同じである。半導体メモリＭＥＭのその他の構成は、図２１と同じである。すなわち、半導体メモリＭＥＭは、各メモリセルＭＣにデータを１回のみ書き込み可能な不揮発性のメモリである。半導体メモリＭＥＭが搭載されるメモリシステムＭＳＹＳは、半導体メモリＭＥＭからコントローラＣＮＴＬに出力されるエラー信号ＥＲＲを伝達するエラー信号線ＥＲＲと、コントローラＣＮＴＬから半導体メモリＭＥＭに出力されるアドレス信号線ＡＤｍａｘを、図１６に追加している。
【０１３２】
アドレス入力部１０Ｄは、アドレス信号ＡＤとともにアドレス信号ＡＤｍａｘを受ける。アドレス信号ＡＤｍａｘは、レギュラーアレイＡＲＹ０Ｌ、０Ｈを識別するためにアドレス端子に供給される。アドレス信号ＡＤｍａｘは、データ選択部２２Ｄに供給される。この実施形態では、書き込み動作において、レギュラーアレイＡＲＹ０Ｌを示す低レベルのアドレス信号ＡＤｍａｘが半導体メモリＭＥＭに供給されると、実際にデータが書き込まれる領域は、アレイＡＲＹ０Ｌ、ＡＲＹ１、ＡＲＹ２、ＡＲＹ３、ＡＲＹ４、...に順次に更新される。一方、書き込み動作において、レギュラーアレイＡＲＹ０Ｈを示す高レベルのアドレス信号ＡＤｍａｘが半導体メモリＭＥＭに供給されると、実際にデータが書き込まれる領域は、アレイＡＲＹ０Ｈ、ＡＲＹ６、ＡＲＹ５、ＡＲＹ４、ＡＲＹ３...に順次に更新される。すなわち、シャドウアレイＡＲＹ１−６は、異なるアドレスＡＤｍａｘが割り当てられた２つのレギュラーアレイＡＲＹ０Ｌ、０Ｈの代わりに共通に使用される。
【０１３３】
図３０は、図２９に示したデータ選択部２２Ｅの例を示している。データ選択部２２Ｅは、選択信号生成回路ＳＥＬＧＥＮ、データ比較回路ＤＣＭＰおよびフラグ演算回路ＦＬＧＯＰが図１８と相違している。データ選択部２２Ｅのその他の構成は、アレイＡＲＹ０Ｌ、０Ｈの名称が異なることを除き、図１８と同じである。
【０１３４】
データ選択部２２Ｅは、書き込み動作において、低レベルのアドレス信号ＡＤｍａｘを受けたときに、番号の小さいフラグ領域ＦＬＧに対応するデータ領域Ｄ７−０から順にデータを書き込む。また、データ選択部２２Ｅは、データを書き込むデータ領域Ｄ７−０に対応するフラグ領域ＦＬＧ（ＦＬＧ０−７のいずれか）に書き込み済を示すフラグデータを書き込む。データ選択部２２Ｅは、書き込み動作において、高レベルのアドレス信号ＡＤｍａｘを受けたときに、番号の大きいフラグ領域ＦＬＧに対応するデータ領域Ｄ７−０から順にデータを書き込む。また、データ選択部２２Ｅは、データを書き込むデータ領域Ｄ７−０に対応するフラグ領域ＦＬＧ（ＦＬＧ０−７のいずれか）に書き込み済を示すフラグデータを書き込む。
【０１３５】
データ選択部２２Ｅは、読み出し動作において、低レベルのアドレス信号ＡＤｍａｘを受けたときに、書き込み済を示すフラグデータが格納された番号が小さい側のフラグ領域ＦＬＧのうち番号が最も大きいフラグ領域ＦＬＧに対応するデータ領域Ｄ７−０に格納されたデータを有効なデータとして読み出す。データ選択部２２Ｅは、読み出し動作において、高レベルのアドレス信号ＡＤｍａｘを受けたときに、書き込み済を示すフラグデータが格納された番号が大きい側のフラグ領域ＦＬＧのうち番号が最も小さいフラグ領域ＦＬＧに対応するデータ領域Ｄ７−０に格納されたデータを有効なデータとして読み出す。
【０１３６】
選択信号生成回路ＳＥＬＧＥＮは、読み出し動作および書き込み動作において、アドレス信号ＡＤｍａｘが低レベルのとき、論理０の内部フラグデータＩＦＬＧ（ＩＦＬＧ０−７の少なくともいずれか）のうち下位側で最も番号が大きい内部フラグデータＩＦＬＧに対応する選択信号ＳＥＬ（ＳＥＬ０−６のいずれか）を活性化する。例えば、図２５のアドレス００ｈでは、アレイＡＲＹ０Ｌに対応する選択信号ＳＥＬ０が活性化される。アドレス０４ｈでは、アレイＡＲＹ２に対応する選択信号ＳＥＬ２が活性化される。
【０１３７】
一方、選択信号生成回路ＳＥＬＧＥＮは、読み出し動作および書き込み動作において、アドレス信号ＡＤｍａｘが高レベルのとき、論理０の内部フラグデータＩＦＬＧ（ＩＦＬＧ０−７の少なくともいずれか）のうち上位側で最も番号が小さい内部フラグデータＩＦＬＧに対応する選択信号ＳＥＬ（ＳＥＬ１−７のいずれか）を活性化する。例えば、図２５のアドレス０６ｈでは、アレイＡＲＹ０Ｈに対応する選択信号ＳＥＬ７が活性化される。アドレス０４ｈでは、アレイＡＲＹ４に対応する選択信号ＳＥＬ４が活性化される。
【０１３８】
なお、読み出し動作において、全ての内部フラグデータＩＦＬＧ０−７が論理１のとき、選択信号生成回路ＳＥＬＧＥＮは選択信号ＳＥＬ０を活性化する。書き込み動作において、全ての内部フラグデータＩＦＬＧ０−７が論理１のとき、選択信号生成回路ＳＥＬＧＥＮは、アドレス信号ＡＤｍａｘが低レベルのときに選択信号ＳＥＬ０を活性化し、アドレス信号ＡＤｍａｘが高レベルのときに選択信号ＳＥＬ７を活性化する。
【０１３９】
データ比較回路ＤＣＭＰは、書き込み動作時に動作する。データ比較回路ＤＣＭＰは、書き込みデータＷＤＴと読み出しデータＲＤＴの論理積が、書き込みデータＷＤＴに等しいとき、フラグ増加信号ＦＩＮＣおよびフラグ減少信号ＦＤＥＣを非活性化する。データ比較回路ＤＣＭＰは、論理積が書き込みデータＷＤＴと異なり、かつアドレス信号ＡＤｍａｘが低レベルのとき、フラグ増加信号ＦＩＮＣを活性化する。データ比較回路ＤＣＭＰは、論理積が書き込みデータＷＤＴと異なり、かつアドレス信号ＡＤｍａｘが高レベルのとき、フラグ減少信号ＦＤＥＣを活性化する。
【０１４０】
フラグ演算回路ＦＬＧＯＰは、書き込み動作時に動作する。フラグ演算回路ＦＬＧＯＰは、フラグ増加信号ＦＩＮＣおよびフラグ減少信号ＦＤＥＣが非活性化されているとき、選択信号ＳＥＬ０−７をライト選択信号ＷＳＥＬ０−７として出力する。フラグ演算回路ＦＬＧＯＰは、フラグ増加信号ＦＩＮＣが活性化されているとき、選択信号ＳＥＬ０−７のうち有効レベルのビットを番号の大きい側に１つシフトし、書き込み選択信号ＷＳＥＬ０−７として出力する。例えば、選択信号ＳＥＬ２が高レベルで、フラグ増加信号ＦＩＮＣが活性化されているとき、書き込み選択信号ＷＳＥＬ３が有効レベルに設定され、書き込み選択信号ＷＳＥＬ０−２、３−７は無効レベルに設定される。
【０１４１】
一方、フラグ演算回路ＦＬＧＯＰは、フラグ減少信号ＦＤＥＣが活性化されているとき、選択信号ＳＥＬ０−７のうち有効レベルのビットを番号の小さい側に１つシフトし、書き込み選択信号ＷＳＥＬ０−７として出力する。例えば、選択信号ＳＥＬ６が高レベルで、フラグ減少信号ＦＤＥＣが活性化されているとき、書き込み選択信号ＷＳＥＬ５が有効レベルに設定され、書き込み選択信号ＷＳＥＬ０−４、６−７は無効レベルに設定される。但し、フラグ演算回路ＦＬＧＯＰは、内部フラグデータＩＦＬＧ０−７により、フラグＦＬＧ０−７の１つのみが論理１であることを検出したとき、フラグ増加信号ＦＩＮＣおよびフラグ減少信号ＦＤＥＣに応答して、エラー信号ＥＲＲを活性化する。これにより、全てのフラグＦＬＧ０−７が論理０に設定されることを防止でき、有効なデータを保持しているアレイＡＲＹ０−７が不明になることを防止できる。
【０１４２】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、アレイＡＲＹ１−６を複数のアドレス（ＡＤｍａｘ＝Ｌと、ＡＤｍａｘ＝Ｈ）のいずれかに割り当て可能な半導体メモリＭＥＭにおいて、データを読み書きするアレイＡＲＹを自動的に検索し、アクセスできる。
【０１４３】
図３１は、別の実施形態におけるメモリセルアレイ１８Ｆの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。半導体メモリＭＥＭは、図１７に示した半導体メモリＭＥＭのメモリセルアレイ１８およびデータ選択部２２Ａの代わりにメモリセルアレイ１８Ｆおよびデータ選択部２２Ｆを有している。メモリセルアレイ１８Ｆの構成は、メモリセルＭＣの数およびビット線の数が異なることを除き、図７と同じである。すなわち、メモリセルＭＣは、論理１から論理０のみにデータの書き込みが可能である。半導体メモリＭＥＭのその他の構成は、図１７と同じである。すなわち、半導体メモリＭＥＭは、各メモリセルＭＣにデータを１回のみ書き込み可能な不揮発性のメモリである。半導体メモリＭＥＭが搭載されるメモリシステムＭＳＹＳは、図１６と同じである。
【０１４４】
この実施形態では、アレイＡＲＹ（ＡＲＹ０−７）は、データ端子Ｉ／Ｏ０−７にそれぞれ対応して設けられている。各アレイＡＲＹ０−７は、アドレスＡＤ（ワード線ＷＬ）毎に８ビットのデータＤ０−７を記憶する。データＤ０−７は、データ端子Ｉ／Ｏに供給される１ビットのデータを記憶する。データＤ０−７は、図７に示したメモリセルＭＣにそれぞれ記憶される。すなわち、データ端子Ｉ／Ｏに供給される１ビットのデータは、８つのメモリセルＭＣを用いて記憶される。ビット線ＢＬの数は、アレイＡＲＹ０−７毎に８本であり、総数は６４本である。アンプ部２０は、６４本のビット線ＢＬに対応して、６４個のセンスアンプＳＡと６４個のライトアンプＷＡとを有している。
【０１４５】
データ選択部２２Ｆは、読み出し動作において、データ端子Ｉ／Ｏ０−７毎に、８ビットのデータＤ７−０を用いて、各アレイＡＲＹのアドレスＡＤで指定された領域に記憶されているデータを１ビットずつ生成し、生成したデータを８ビットの読み出しデータＤＯＵＴ０−７としてデータ線ＤＯＵＴに出力する。データ選択部２２Ｆは、書き込み動作において、データ端子Ｉ／Ｏ０−７毎に、アレイＡＲＹからの読み出しデータＤＯＵＴと書き込みデータＤＩＮとを比較し、メモリセルＭＣに書き込むデータの論理を生成する。データ選択部２２Ｆの詳細は、図３３に示す。
【０１４６】
図３２は、図３１に示したメモリセルアレイ１８Ｆに保持されるデータの例を示している。この実施形態では、各アドレスＡＤに対応する記憶領域は、各データ端子Ｉ／Ｏ０−７毎に、１つの論理値を８ビットのデータＤ０−７として記憶する。具体的には、論理０のデータＤ０−７の数が偶数のとき、論理１が記憶されている。論理０のデータＤ０−７の数が奇数のとき、論理０が記憶されている。
【０１４７】
例えば、１ビットのデータは、１つのメモリセルに記憶される。メモリセルアレイ１８Ｆの全てのメモリセルは、初期状態において論理１を保持している。
【０１４８】
図３３は、図３１に示したデータ選択部２２Ｆの例を示している。データ選択部２２Ｆは、データ端子Ｉ／Ｏ０−７毎にデータ生成回路ＤＴＧＥＮを有している。８つのデータ生成回路ＤＴＧＥＮは互いに同じ回路であるため、ここではデータ端子Ｉ／Ｏ０に対応するデータ生成回路ＤＴＧＥＮについて説明する。データ生成回路ＤＴＧＥＮは、否定排他的論理和回路ＸＮＯＲ、排他的論理和回路ＸＯＲ、セレクタＳＥＬおよび論理１検出回路Ｌ１ＤＥＴを有している。例えば、否定排他的論理和回路ＸＮＯＲは、各アレイＡＲＹ０−７において論理０を記憶しているメモリセルの数が偶数か奇数に応じてデータの論理を判定する読み出し回路として動作する。排他的論理和回路ＸＯＲ、セレクタＳＥＬおよび論理１検出回路Ｌ１ＤＥＴは、否定排他的論理和回路ＸＮＯＲにより判定された論理と、新たに書き込むデータの論理とが異なるときに、論理１を記憶しているメモリセルのいずれかに論理０を書き込む書き込み回路として動作する。
【０１４９】
否定排他的論理和回路ＸＮＯＲは、読み出し動作時および書き込み動作時に動作する。否定排他的論理和回路ＸＮＯＲは、アレイＡＲＹ０から読み出されるデータＤ０−７の論理演算を行い、演算結果をデータＤＯＵＴ０として出力する。例えば、論理０のデータＤ０−７の数が偶数のとき、高レベル（論理１）のデータＤＯＵＴ０が出力される。論理０のデータＤ０−７の数が奇数のとき、低レベル(論理０）のデータＤ０−７が出力される。読み出し動作では、否定排他的論理和回路ＸＮＯＲにより生成されたデータＤＯＵＴ０−７が、読み出しデータとしてデータ端子Ｉ／Ｏ０−７に出力される。書き込み動作では、生成されたデータＤ０−７は、排他的論理和回路ＸＯＲに供給される。
【０１５０】
排他的論理和回路ＸＯＲは、書き込み動作時に動作する。排他的論理和回路ＸＯＲは、生成された読み出しデータＤＯＵＴ０と、データ端子Ｉ／Ｏ０で受ける書き込みデータＤＩＮ０との論理演算を行う。排他的論理和回路ＸＯＲは、読み出しデータＤＯＵＴ０の論理と書き込みデータＤＩＮ０の論理が同じとき、書き込み信号ＷＲ０を無効レベル（例えば、低レベル）に維持する。排他的論理和回路ＸＯＲは、読み出しデータＤＯＵＴ０の論理と書き込みデータＤＩＮ０の論理が異なるとき、書き込み信号ＷＲ０を有効レベル（例えば、高レベル）に設定する。
【０１５１】
論理１検出回路Ｌ１ＤＥＴは、アレイＡＲＹ０から読み出される論理１を保持するデータ（Ｄ０−７の少なくともいずれか）のうち、番号が最も小さいデータを示す選択信号ＳＳＥＬ（ＳＳＥＬ０−７のいずれか）のみを有効レベルに設定する。セレクタＳＥＬは、書き込み動作時に動作する。セレクタＳＥＬは、書き込み信号ＷＲ０が有効レベルのとき、有効レベルの選択信号ＳＥＬに対応するデータ線（Ｄ０−７のいずれか）に低レベル（論理０）を出力する。これにより、メモリセルアレイＡＲＹ０に現在と異なる論理を書き込むとき、データＤ０−７の１つが論理１から論理０に変更される。
【０１５２】
例えば、図３２のＩ／Ｏ０のアドレス００ｈにおいて、論理０が書き込まれるとき、排他的論理和回路ＸＯＲは、論理１の読み出しデータＤＯＵＴ０と論理０の書き込みデータＤＩＮ００に応じて、書き込み信号ＷＲ０を有効レベルに設定する。論理１検出回路Ｌ１ＤＥＴは、データＤ０を示す選択信号ＳＳＥＬ０のみを有効レベルに設定する。そして、選択信号ＳＳＥＬ０に応じてデータ線Ｄ０に低レベルが出力されることで、データ線Ｄ０が論理１から論理０に変更され、対応するメモリセルＭＣに論理０が書き込まれる。これにより、論理０のデータＤ０−７の数が奇数になり、８つのメモリセルＭＣにより論理０が記憶される。
【０１５３】
図３２のＩ／Ｏ０のアドレス０６ｈにおいて、論理１が書き込まれるとき、排他的論理和回路ＸＯＲは、論理１の読み出しデータＤＯＵＴ０と論理１の書き込みデータＤＩＮ００に応じて、書き込み信号ＷＲ０を無効レベルに設定する。論理１検出回路Ｌ１ＤＥＴは、データＤ２を示す選択信号ＳＳＥＬ２のみを有効レベルに設定する。しかし、書き込み信号ＷＲ０が無効レベルのため、データ線Ｄ０−７の論理レベルはメモリセルＭＣから読み出されたレベルに維持される。これにより、データ線Ｄ０−７の論理レベルは書き換えられることなくメモリセルＭＣに保持される。
【０１５４】
図３２のＩ／Ｏ１のアドレス０５ｈにおいて、論理１が書き込まれるとき、排他的論理和回路ＸＯＲは、論理０の読み出しデータＤＯＵＴ１と論理１の書き込みデータＤＩＮ０１に応じて、書き込み信号ＷＲ０を有効レベルに設定する。論理１検出回路Ｌ１ＤＥＴは、データＤ３を示す選択信号ＳＳＥＬ３のみを有効レベルに設定する。そして、選択信号ＳＳＥＬ３に応じてデータ線Ｄ３に低レベルが出力されることで、データ線Ｄ３が論理１から論理０に変更され、対応するメモリセルＭＣに論理０が書き込まれる。これにより、論理０のデータＤ０−７の数が偶数になり、８つのメモリセルＭＣにより論理１が記憶される。
【０１５５】
なお、書き込み動作において、アレイＡＲＹ０から読み出されたデータＤ０−７が全て論理０のとき（８つのメモリセルＭＣにより論理１を記憶）、論理０の書き込みはできない。このため、排他的論理和回路ＸＯＲは、データＤ０−７が全て論理０で、書き込みデータＤＩＮ０が論理０のとき、書き込み信号ＷＲ０の代わりにエラー信号ＥＲＲを出力してもよい。この場合、エラー信号ＥＲＲは、半導体メモリＭＥＭの外部端子を介してコントローラＣＮＴＬに伝達される。コントローラＣＮＴＬは、上述したように、エラー信号ＥＲＲを受けた後、エラーが発生したアドレスＡＤにデータを書き込むことを禁止する。そして、例えば、コントローラＣＮＴＬは、データが書き込まれていない別のアドレスＡＤのアレイＡＲＹ０に、データＤ７−０を書き込む。これにより、あるアドレスＡＤの全てのアレイＡＲＹ０−７にデータＤ７−０が書き込まれた場合にも、メモリシステムＭＳＹＳが誤動作することを防止できる。
【０１５６】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、論理０のデータＤ０−７の数が偶数か奇数かに応じてデータの論理を記憶する半導体メモリＭＥＭにおいても、半導体メモリＭＥＭの記憶容量の増加を最小限にして、データの書き換え効率を向上できる。
【０１５７】
なお、上述した実施形態では、図７に示したように、ヒューズＦＳを有するメモリセルＭＣを用いてメモリセルアレイを形成する例について述べた。しかし、例えば、フラッシュメモリ、強誘電体メモリ、ＥＰＲＯＭ等の他の不揮発性メモリのメモリセルを用いてメモリセルアレイを形成してもよい。
【０１５８】
図３４は、フローティングゲートを有するメモリセルＭＣを用いてメモリセルアレイ１８Ｇを形成する例を示している。メモリセルアレイ１８Ｇは、メモリセルＭＣが図７と相違している。各メモリセルＭＣは、フローティングゲートＦＧを有するメモリトランジスタＭＴを有している。メモリトランジスタＭＴは、コントロールゲートＣＧをワード線ＷＬに接続し、ソース・ドレインの一方をビット線ＢＬに接続し、ソース・ドレインの他方をヒューズＦＳを介して低電圧線（例えば、接地線）に接続している。
【０１５９】
メモリセルＭＣは、初期状態（消去状態）において、論理１を保持している。例えば、メモリセルＭＣへの論理０の書き込みは、制御ゲートＣＧおよびビット線ＢＬに高電圧を印加し、チャネル領域からフローティングゲートＦＧにホットエレクトロンを注入し、メモリトランジスタＭＴの閾値電圧を上げることで行われる。
【０１６０】
上述した実施形態では、書き込み動作時に選択信号ＳＥＬ０−７に応じてライトアンプＷＡを動作させる例について述べた。しかし、例えば、書き込み動作時に全てのライトアンプＷＡを動作させてもよい。この場合、論理０のデータを書き込むライトアンプＷＡ以外のライトアンプＷＡは論理０を出力する。これにより、全てのライトアンプＷＡを動作させても、メモリセルＭＣに誤ったデータが書き込まれることを防止できる。
【０１６１】
上述した実施形態では、例えば、メモリセルアレイ１８を８個のアレイＡＲＹ０−７により形成し、各アレイＡＲＹ０−７がアドレスＡＤ毎に９個のメモリセルＭＣ（Ｄ７−０）を有する例について述べた。しかし、アレイＡＲＹの数および各アレイＡＲＹに形成されるメモリセルＭＣの数は、上記に限定されるものではない。
【０１６２】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
半導体メモリと、前記半導体メモリのアクセスを制御するコントローラとを備えているメモリシステムであって、
前記半導体メモリは、
所定数の不揮発性のメモリセルを有し、データが格納されるデータ領域と、前記データ領域へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域を有する複数の記憶領域と、
番号が順次に割り当てられた所定数の前記記憶領域を含み、アドレスに応じて選択される複数の記憶ブロックと、
フラグ選択信号に応答して、アドレスにより選択される前記記憶ブロックのフラグ領域に対してフラグデータを書き込みまたは読み出し、データ選択信号に応答して、アドレスにより選択される前記記憶ブロックのデータ領域のいずれかに対してデータを書き込みまたは読み出すデータ選択部と
を備え、
前記コントローラは、書き込み動作において、前記フラグ選択信号を出力してアドレスにより選択される前記記憶ブロックのフラグ領域に保持されているフラグデータを読み出し、未書き込みを示すフラグデータが格納されたフラグ領域のうち最も番号の小さいフラグ領域に書き込み済を示すフラグデータを書き込むために前記フラグ選択信号を出力し、前記最も番号の小さいフラグ領域に対応するデータ領域に新たなデータを書き込むために前記データ選択信号を出力するデータ制御部を備えている
ことを特徴とするメモリシステム。
（付記２）
前記コントローラは、書き込み動作において、前記フラグ領域から読み出したフラグデータに基づいて、書き込み済を示すフラグデータが格納されたフラグ領域のうち最も番号の大きいフラグ領域に対応するデータ領域からデータを読み出すために前記データ選択信号を出力し、読み出したデータと新たに書き込むデータとの論理積が新たに書き込むデータと同じときに、前記最も番号の小さいフラグ領域に対応するデータ領域ではなく、前記最も番号の大きいフラグ領域に対応するデータ領域に新たに書き込むデータを上書きするために前記データ選択信号を出力する
ことを特徴とする付記１記載のメモリシステム。
（付記３）
前記コントローラは、書き込み動作において、前記記憶ブロックのフラグ領域から読み出した全てのフラグデータが書き込み済を示すとき、書き込み動作を停止し、その後、この記憶ブロックへの書き込み動作を禁止すること
を特徴とする付記１または付記２記載のメモリシステム。
（付記４）
読み出し動作において、前記フラグ選択信号を出力してアドレスにより選択される前記記憶ブロックのフラグ領域に保持されているフラグデータを読み出し、書き込み済を示すフラグデータが格納されたフラグ領域のうち最も番号の大きいフラグ領域を求め、このフラグ領域に対応するデータ領域からデータを読み出すために前記データ選択信号を出力すること
を特徴とする付記１ないし付記３のいずれか１項記載のメモリシステム。
（付記５）
所定数の不揮発性のメモリセルを有し、データが格納されるデータ領域と、前記データ領域へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域を有する複数の記憶領域と、
番号が順次に割り当てられた所定数の前記記憶領域を含み、アドレスに応じてそれぞれ選択される複数の記憶ブロックと、
書き込み動作において、番号の小さい記憶領域内のデータ領域から順にデータを書き込み、データを書き込む記憶領域内のフラグ領域に書き込み済を示すフラグデータを書き込むデータ選択部と
を備えていることを特徴とする半導体メモリ。
（付記６）
読み出し動作において、書き込み済を示すフラグデータが格納されたフラグ領域のうち最も番号の大きいフラグ領域に対応するデータ領域に格納されたデータを有効なデータとして読み出すこと
を特徴とする付記５記載の半導体メモリ。
（付記７）
前記データ選択部は、前記記憶ブロックの全てのフラグ領域に書き込み済を示すフラグデータが格納されているときで、データを新たなデータ領域に書き込むことが必要なとき、エラー信号を出力すること
を特徴とする付記６記載の半導体メモリ。
（付記８）
所定数の不揮発性のメモリセルを有し、データが格納されるデータ領域と、前記データ領域へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域を有する複数の記憶領域と、
番号が順次に割り当てられた所定数の前記記憶領域を含み、アドレスに応じてそれぞれ選択される複数の記憶ブロックと、
書き込み動作において、第１アドレスを受けたときに、番号の小さい記憶領域内のデータ領域から順にデータを書き込み、データを書き込む記憶領域内のフラグ領域に書き込み済を示すフラグデータを書き込み、第２アドレスを受けたときに、番号の大きい記憶領域内のデータ領域から順にデータを書き込み、データを書き込む記憶領域内のフラグ領域に書き込み済を示すフラグデータを書き込むデータ選択部と
を備えていることを特徴とする半導体メモリ。
（付記９）
前記データ選択部は、読み出し動作において、前記第１アドレスを受けたときに、書き込み済を示すフラグデータが格納された番号が小さい側のフラグ領域のうち番号が最も大きいフラグ領域に対応するデータ領域に格納されたデータを有効なデータとして読み出し、前記第２アドレスを受けたときに、書き込み済を示すフラグデータが格納された番号が大きい側のフラグ領域のうち番号が最も小さいフラグ領域に対応するデータ領域に格納されたデータを有効なデータとして読み出すこと
を特徴とする付記８記載の半導体メモリ。
（付記１０）
前記データ選択部は、前記記憶ブロックの１つのフラグ領域のみに未書き込みを示すフラグデータが格納されているときで、データを新たなデータ領域に書き込むことが必要なとき、エラー信号を出力すること
を特徴とする付記８または付記９記載の半導体メモリ。
（付記１１）
前記データ選択部は、
書き込み動作時に、前記データ領域に書き込む新たなデータと前記データ領域から読み出される有効なデータとを比較し、新たなデータが有効なデータを格納しているデータ領域に上書き可能か否かを判定するデータ比較回路と、
上書き可能なときに、新たなデータを有効なデータを格納しているデータ領域に上書きする書き込み制御回路と
を備えていることを特徴とする付記８ないし付記１０のいずれか１項記載の半導体メモリ。
（付記１２）
前記各メモリセルは、初期状態において第１論理を保持し、書き込み動作により第１論理から第２論理にのみ書き換えられ、
前記データ比較回路は、新たなデータと有効なデータとの論理積が新たなデータと同じときに、上書き可能を判定すること
を特徴とする付記１１記載の半導体メモリ。
（付記１３）
第１論理または第２論理をそれぞれ記憶する所定数の不揮発性のメモリセルを有する複数の記憶領域と、
前記各記憶領域において第１論理を記憶している前記メモリセルの数が偶数か奇数に応じて、前記各記憶領域に記憶されているデータの論理を判定する読み出し回路と、
前記読み出し回路により判定された論理と、新たに書き込むデータの論理とが異なるときに、第２論理を記憶しているメモリセルに第１論理を書き込む書き込み回路と
を備えていることを特徴とする半導体メモリ。
（付記１４）
前記各メモリセルは、初期状態において第２論理を保持し、書き込み動作により第２論理から第１論理にのみ書き換えられること
を特徴とする付記１３記載の半導体メモリ。
（付記１５）
所定数の不揮発性のメモリセルを有し、データが格納されるデータ領域と、前記データ領域へのデータの書き込み済／未書き込みを示すフラグデータが格納されるフラグ領域を有する複数の記憶領域と、
番号が順次に割り当てられた所定数の前記記憶領域を含み、アドレスに応じてそれぞれ選択される複数の記憶ブロックと、
フラグ選択信号に応答して、アドレスにより選択される記憶ブロックのフラグ領域に対してフラグデータを書き込みまたは読み出し、データ選択信号に応答して、アドレスにより選択される記憶ブロックのデータ領域のいずれかに対してデータを書き込みまたは読み出すデータ選択部と
を備えていることを特徴とする半導体メモリ。
（付記１６）
付記５ないし付記１５のいずれか１項記載の半導体メモリと、
前記半導体メモリのアクセスを制御するコントローラと
を備えていることを特徴とするメモリシステム。
【０１６３】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１６４】
１０、１０Ｅ‥アドレス入力部；１２‥ワード線デコーダ；１４、１４Ａ、１４Ｂ‥動作制御部；１６‥データ入出力部；１８、１８Ｄ、１８Ｆ‥メモリセルアレイ；２０‥アンプ部；２２、２２Ａ、２２Ｂ、２２Ｃ、２２Ｅ‥データ選択部；ＡＮＤ１−４‥アンド回路；ＡＲＹ、ＡＲＹ０Ｌ、ＡＲＹ０Ｈ‥アレイ；ＣＮＴＬ‥コントローラ；Ｄ７−０‥データ領域；ＤＣＭＰ‥データ比較回路；ＤＣＮＴＵ‥データ制御部；ＤＥＣ‥デコーダ；ＤＳＥＬ‥データ選択信号；ＤＳＥＬＣ‥データ選択回路；ＤＳＥＬＵ‥データ選択部；ＤＴＧＥＮ‥データ生成回路；ＥＮＣ‥エンコーダ；ＥＲＲ‥エラー信号；ＦＡ‥フラグ領域；ＦＬＧ０−７‥フラグ領域；ＦＬＧＯＰ‥フラグ演算回路；ＦＳＥＬ‥フラグ選択信号；ＦＳＥＬＣ‥フラグ選択回路；Ｌ１ＤＥＴ‥論理１検出回路；ＭＡ‥記憶領域；ＭＢＬＫ‥記憶ブロック；ＭＣ‥メモリセル；ＭＣＡ‥メモリセルアレイ；ＭＥＭ‥半導体メモリ；ＭＳＹＳ‥メモリシステム；ＲＷＣＮＴ‥読み書き制御回路；ＳＥＬ‥セレクタ；ＳＥＬＧＥＮ‥選択信号生成回路；ＸＮＯＲ‥否定排他的論理和回路；ＸＯＲ‥排他的論理和回路
【図１】
2011108001.tif 000003
【図２】
2011108001.tif 000004
【図３】
2011108001.tif 000005
【図４】
2011108001.tif 000006
【図５】
2011108001.tif 000007
【図６】
2011108001.tif 000008
【図７】
2011108001.tif 000009
【図８】
2011108001.tif 000010
【図９】
2011108001.tif 000011
【図１０】
2011108001.tif 000012
【図１１】
2011108001.tif 000013
【図１２】
2011108001.tif 000014
【図１３】
2011108001.tif 000015
【図１４】
2011108001.tif 000016
【図１５】
2011108001.tif 000017
【図１６】
2011108001.tif 000018
【図１７】
2011108001.tif 000019
【図１８】
2011108001.tif 000020
【図１９】
2011108001.tif 000021
【図２０】
2011108001.tif 000022
【図２１】
2011108001.tif 000023
【図２２】
2011108001.tif 000024
【図２３】
2011108001.tif 000025
【図２４】
2011108001.tif 000026
【図２５】
2011108001.tif 000027
【図２６】
2011108001.tif 000028
【図２７】
2011108001.tif 000029
【図２８】
2011108001.tif 000030
【図２９】
2011108001.tif 000031
【図３０】
2011108001.tif 000032
【図３１】
2011108001.tif 000033
【図３２】
2011108001.tif 000034
【図３３】
2011108001.tif 000035
【図３４】
2011108001.tif 000036