(57)【特許請求の範囲】
【請求項１】
２以上の記憶状態を持ち、いずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置であって、
複数の前記メモリセルで構成されて全体で１ビット分の値を記憶するデータ格納部を複数備えてなるメモリ本体と、
前記メモリセルの記憶値を読み出す処理と、前記メモリセルの記憶値を書き換える処理とを行う読み出し書き換え制御部と、
前記データ格納部が備えるメモリセルの記憶値を用いた演算で当該データ格納部の記憶値を求める演算部と、
前記演算部が求めたデータ格納部の記憶値と外部から入力された値とを比較し、一致または不一致を示す信号を出力する比較部と、
前記比較部が不一致を示す信号を出力したときに、前記データ格納部の記憶値を前記外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定する書き換えセル決定部とを備えた半導体記憶装置。
【請求項２】
前記演算部は、排他的論理回路を含む、請求項１に記載の半導体記憶装置。
【請求項３】
前記各データ格納部は、３以上の奇数ビット分のデータ容量を有することを特徴とする、請求項２に記載の半導体記憶装置。
【請求項４】
前記データ格納部が備えるメモリセルの個数は、前記データ格納部によって異なることを特徴とする、請求項１に記載の半導体記憶装置。
【請求項５】
前記読み出し書き換え制御部は、
前記メモリセルの記憶値をメモリセル毎に書き換える個別書き換え処理と、
前記メモリセルの記憶値を１個以上の前記データ格納部を単位として書き換える一括書き換え処理と、のいずれかを行うことによって、前記データ格納部の記憶値を変更することを特徴とする、請求項１に記載の半導体記憶装置。
【請求項６】
前記メモリ本体はフラッシュメモリであって、
前記個別書き換え処理は書き込み処理であり、
前記一括書き換え処理は消去処理であることを特徴とする、請求項５に記載の半導体記憶装置。
【請求項７】
メモリセルの記憶値を、０または１のうち一方の値に書き換える第１の書き換えに要する時間が、他方の値に書き換える第２の書き換えに要する時間よりも短いときに、
前記個別書き換え処理によって前記第１の書き換えが行われ、
前記一括書き換え処理によって前記第２の書き換えが行われることを特徴とする、請求項５に記載の半導体記憶装置。
【請求項８】
記憶値を変更する必要がないデータ格納部に属する、前記第２の書き換えを行うことができる偶数ビット分のデータ容量を有するメモリセルを判断する特定書き換えセル判断部をさらに備え、
前記読み出し書き換え制御部は、前記一括書き換え処理を行うときに、前記特定書き換えセル判断部において判断されたメモリセルの記憶を個別に書き換えることを特徴とする、請求項７に記載の半導体記憶装置。
【請求項９】
前記メモリセルは、１個で複数ビット分のデータ容量を有する多値メモリセルであることを特徴とする、請求項１に記載の半導体記憶装置。
【請求項１０】
２以上の記憶状態を持ち、いずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置の書き換え処理方法であって、
複数の前記メモリセルで構成されて全体で１ビット分の値を記憶する複数のデータ格納部の中から、外部から入力された値を記憶するものを決定し、
前記決定されたデータ格納部を構成するメモリセルの記憶値を用いた演算で、当該データ格納部の記憶値を求め、
前記演算で求めたデータ格納部の記憶値と、前記外部から入力された値とを比較して一致の有無を判断し、
前記判断結果が不一致であったときに、前記データ格納部の記憶値を前記外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定し、
前記記憶値を変更することが決定されたメモリセルの記憶値を書き換える、半導体記憶装置の書き換え処理方法。
【請求項１１】
２以上の記憶状態を持ち、いずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置の書き換え処理を行うためのプログラムであって、
複数の前記メモリセルで構成されて全体で１ビット分の値を記憶する複数のデータ格納部の中から、外部から入力された値を記憶するものを決定し、前記決定されたデータ格納部を構成するメモリセルの記憶値を用いた演算で当該データ格納部の記憶値を求め、前記演算で求めたデータ格納部の記憶値と前記外部から入力された値とを比較して一致の有無を判断し、前記判断結果が不一致であったときに前記データ格納部の記憶値を前記外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定し、前記記憶値を変更することが決定されたメモリセルの記憶値を書き換えることをＣＰＵに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置関し、特に、２以上の記憶状態を持ち、いずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置、書き換え処理方法方法およびプログラムに関する。
【背景技術】
【０００２】
フラッシュメモリに代表される不揮発性メモリは、電源を切った後も記憶を保持し続けられる低消費電力なメモリとして、デジタルカメラ等のメモリカードや、パソコンのＢＩＯＳの記憶などに利用されている。
【０００３】
フラッシュメモリのメモリセルの記憶値は、例えば、フローティングゲートに所定量以上の電子が蓄積されているときは０であり、フローティングゲートに所定量未満の電子が蓄積されているときは１であるというように、フローティングゲートに蓄積されている電子量によって決められる。
【０００４】
上記のようにメモリセルの記憶値が決められたときに、一般に、メモリセルの記憶値を０にする書き換えは「書き込み」と呼ばれ、１にする書き換えは「消去」と呼ばれている。「書き込み」は、ゲート電圧をソース電圧およびドレイン電圧よりも十分高くすることによって行われ、この操作により、ソース領域からフローティングゲートに電子が注入される。一方、「消去」は、ソース電圧をゲート電圧よりも十分に高くすることによって行われ、この操作により、フローティングゲートに蓄積されている電子がソース領域に引き抜かれる。消去操作が行われると、フローティングゲート下の絶縁膜は損傷を受けるので、フラッシュメモリの寿命は消去回数によって決められる。
【０００５】
ところで、フラッシュメモリは、ソース電極またはドレイン電極を接地し続けたままでは記憶値を書き換えることができず、全ての電圧（ソース、ドレインおよびゲート電圧）を制御しなければ記憶値を書き換えることができない。しかしながら、メモリセル毎に３つの電圧を制御すると回路が煩雑になり、装置が大型化するので、一般に複数個のメモリセルでなるセクタ単位でゲート電圧の制御が行われている。
【０００６】
セクタ単位でゲート電圧が制御される場合には、「書き込み」はメモリセル単位で行われるが、「消去」はセクタ単位で行われる。具体的には、ある１つのメモリセルの記憶値を０から１へと書き換える場合に、まず、そのメモリセルを含むセクタの全メモリセルの記憶が消去され、次いで、メモリセルの記憶値が１になっていることを確認するベリファイ処理が行われ、その後、記憶値を１にする必要が無かったメモリセルに０が書き込まれる。これにより、最終的には、所望のメモリセルの記憶値のみが０から１に書き換えられたことになる。
【０００７】
セクタ単位で消去操作が行われると、記憶値を書き換える必要がないメモリセルの記憶も消去されるので、各メモリセルの消去回数が増え、メモリセルひいてはメモリ本体の性能が劣化する。
【０００８】
したがって、特許文献１に開示されているように、本来のセクタとは別に予備セクタを設けておき、消去回数が少ないセクタのメモリセルにデータを記憶していくことによって、セクタ毎の消去回数のばらつきを解消する半導体記憶装置が提案されている。セクタ毎の消去回数のばらつきが解消されると、不良セクタの発生が抑制されるので、メモリ本体をより長期にわたって使用することができる。
【特許文献１】特開２００２−３６６４２０号公報（第１−２１ページ、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、セクタを単位として消去操作を行う以上、本来ならば必要がないメモリセルに対しても消去操作を行うことになるので、メモリセルに余計な損傷を与えてしまうことは避けられない。よって、如何にして不揮発性メモリのメモリ本体を長期使用できるようにするかが課題になっている。
【００１０】
ところで、近年、メモリセルサイズの小型化やメモリの大容量化が進んでいるため、長期使用できるならば、必要なメモリセル数が多くなるという不利益はさほど考慮しなくともよいという場面が出てくることが考えられている。特に、長期にわたって使用できるだけでなく、消去を行う際の書き換え時間を短縮できるならば、必要となるメモリセル数の増加や回路の複雑化という不利益を上回る利益が得られる場合もある。
【００１１】
それ故に、本発明は、記憶の書き換えによって性能が劣化する半導体記憶装置において、メモリ本体をより長期にわたって使用できる半導体記憶装置を提供することを目的としている。また、これに加えて、書き換え時間をより短縮できる半導体記憶装置を提供することも目的としている。
【課題を解決するための手段】
【００１２】
本発明に係る半導体記憶装置は、２以上の記憶状態を持ち、いずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置であって、複数のメモリセルで構成されて全体で１ビット分の値を記憶するデータ格納部を複数備えてなるメモリ本体と、メモリセルの記憶値を読み出す処理と、メモリセルの記憶値を書き換える処理とを行う読み出し書き換え制御部と、データ格納部が備えるメモリセルの記憶値を用いた演算でデータ格納部の記憶値を求める演算部と、演算部が求めたデータ格納部の記憶値と外部から入力された値とを比較し、一致または不一致を示す信号を出力する比較部と、比較部が不一致を示す信号を出力したときに、データ格納部の記憶値を外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定する書き換えセル決定部とを備える。
【００１３】
演算部は、排他的論理回路を含んでいてもよい。その場合には、各データ格納部は、３以上の奇数ビット分のデータ容量を有していればよい。
【００１４】
データ格納部が備えるメモリセルの個数は、データ格納部によって異なっていてもよい。
【００１５】
読み出し書き換え制御部は、メモリセルの記憶値をメモリセル毎に書き換える個別書き換え処理と、メモリセルの記憶値を１個以上のデータ格納部を単位として書き換える一括書き換え処理と、のいずれかを行うことによって、データ格納部の記憶値を変更するようになっていてもよい。
【００１６】
メモリ本体はフラッシュメモリであってもよく、その場合には、個別書き換え処理は書き込み処理であり、一括書き換え処理は消去処理となる。
【００１７】
メモリセルの記憶値を、０または１のうち一方の値に書き換える第１の書き換えに要する時間が、他方の値に書き換える第２の書き換えに要する時間よりも短いときに、個別書き換え処理によって前記第１の書き換えが行われ、一括書き換え処理によって第２の書き換えが行われることを特徴とする。
【００１８】
記憶値を変更する必要がないデータ格納部に属する、第２の書き換えを行うことができる偶数ビット分のデータ容量を有するメモリセルを判断する特定書き換えセル判断部をさらに備え、読み出し書き換え制御部は、一括書き換え処理を行うときに、特定書き換えセル判断部において判断されたメモリセルの記憶を個別に書き換えることを特徴としていてもよい。
【００１９】
メモリセルは、１個で複数ビット分のデータ容量を有する多値メモリセルであってもよい。
【００２０】
本発明に係る半導体記憶装置の書き換え処理方法は、２以上の記憶状態を持ちいずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置の書き込み処理方法であって、複数のメモリセルで構成されて全体で１ビット分の値を記憶する複数のデータ格納部の中から、外部から入力された値を記憶するものを決定し、決定されたデータ格納部を構成するメモリセルの記憶値を用いた演算でデータ格納部の記憶値を求め、演算で求めたデータ格納部の記憶値と外部から入力された値とを比較して一致の有無を判断し、判断結果が不一致であったときに、データ格納部の記憶値を前記外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定し、記憶値を変更することが決定されたメモリセルの記憶値を書き換える。
【００２１】
また、本発明に係るプログラムは、２以上の記憶状態を持ちいずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置の書き換え処理を行うためのプログラムであって、複数のメモリセルで構成されて全体で１ビット分の値を記憶する複数のデータ格納部の中から、外部から入力された値を記憶するものを決定し、決定されたデータ格納部を構成するメモリセルの記憶値を用いた演算で当該データ格納部の記憶値を求め、演算で求めたデータ格納部の記憶値と外部から入力された値とを比較して一致の有無を判断し、判断結果が不一致であったときにデータ格納部の記憶値を外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定し、記憶値を変更することが決定されたメモリセルの記憶値を書き換えることをＣＰＵに実行させる。
【発明の効果】
【００２２】
本発明に係る半導体装置は、記憶する１ビット分のデータを、複数ビット分のデータで表し直して記憶するので、個々のメモリセルの書き換え回数が少なくなり、メモリ本体をより長期にわたって使用することができる。
【００２３】
また、データ格納部にすでに記憶されている記憶値とこれから記憶する記憶値とを比較して、不一致の場合のみ書き換えを行えば、必要のない書き換えを抑制できる。これにより消去回数を減らすことができ、メモリ本体をより長期にわたって使用することができ、また、書き換え時間を短縮することもできる。
【００２４】
また、書き換えが頻繁に行われるデータが分かっている場合、そのデータを、メモリセルの個数が多いデータ格納部に記憶すれば、消去回数を減らすことができ、より長期にわたってメモリ本体を使用することができる。
【００２５】
また、１個のデータ格納部が３以上の奇数ビット分のデータ容量を有していれば、一括書き換え処理前と一括書き換え処理後とで、データ格納部の記憶値が変化するため、一括書き換え後に個別書き換え処理を行う必要がない。よって、書き換え時間を短縮することができる。
【００２６】
また、書き換え処理時間が長い書き換えを個別に行って、書き換え処理時間が短い書き換えを一括して行うよりも、書き換え処理時間が長い書き換えを一括して行って、書き換え処理時間が短い書き換えを個別に行う方が書き換え時間を短縮することができる。
【００２７】
一括書き換え処理を行っている間に他の書き換えができない場合、一括書き換え処理を行うときに、同時に特定書き換えセル判断部で判断されたメモリセルの記憶も書き換えるようにすれば、異なるタイミングで行われる書き換え処理を減らすことができる。よって、次回に一括書き換えを行うまでの時間を稼ぐことができるため、書き換え時間を短縮することができる。このときに偶数ビット分のデータの記憶値を書き換えれば、データ格納部の記憶値は変化しない。
【発明を実施するための最良の形態】
【００２８】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る半導体記憶装置１のブロック図である。半導体記憶装置１は、制御演算部１０と、メモリ本体２０とを備えている。
【００２９】
メモリ本体２０は、電源を切った後も記憶を保持し続けられる、１ビット記憶用の不揮発性のメモリセルＭＣ［ｋ］（ｋは自然数）を複数備えている。本実施形態において、メモリセルＭＣ［ｋ］は、半導体基板上にソース電極、ドレイン電極、フローティングゲート、およびゲート電極を備えたフラッシュメモリセルであるとして説明する。そして、フローティングゲートの電子蓄積量が所定量以上であるときの記憶値を０とし、フローティングゲートの電子蓄積量が所定量未満であるときの記憶値を１とする。なお、図１には示していないが、メモリセルＭＣ［ｋ］は、メモリ本体２０のメモリセル配置領域にマトリックス状に配置されている。
【００３０】
各データ格納部Ｂ［ｍ］（ｍは自然数）は、３個のメモリセルＭＣ［ｋ］を備えている。また、３個のデータ格納部Ｂ［ｍ］で１個のセクタＳ［ｎ］（ｎは自然数）が構成されている。同じセクタＳ［ｎ］内に存在するメモリセルＭＣ［ｋ］は、同じワード線（電圧供給線）に接続されている。
【００３１】
メモリセルＭＣ［ｋ］の記憶値を１から０に書き換える場合、フローティングゲートに所定量以上の電荷が蓄積されるように、ゲート電極に高電圧が印加される。この書き換えは、ソースおよびドレイン電圧が個別に制御されることにより、メモリセルＭＣ［ｋ］単位で行われる。以下、このような書き換えを「書き込み」という。
【００３２】
一方、メモリセルＭＣ［ｋ］の記憶値を０から１に書き換える場合、フローティングゲートに蓄積されている電荷をソース領域に引き抜くために、ソース電極に高電圧が印加される。この書き換えは、セクタＳ［ｎ］単位で行われる。以下、この書き換えを「消去」という。
【００３３】
図２は、図１に示す半導体記憶装置１のうち、制御演算部１０の構成を主に示したブロック図である。また、図３〜図５は、記憶するデータが入力されたときの制御演算部１０における処理を示すフローチャートである。以下、図２〜図５を用いて、半導体記憶装置１の構成および動作について説明する。
【００３４】
図２に示すように、制御演算部１０は、読み出し制御部１１、比較部１２、書き換えセル決定部１３、書き換え制御部１４、および、論理演算部１６を備えている。初期状態において、全メモリセルＭＣ［ｋ］の記憶値は１になっており、メモリセルＭＣ［ｋ］の記憶値から求められるデータ格納部Ｂ［ｍ］の記憶値も１になっている。
【００３５】
図２の制御演算部１０に、メモリ本体２０に記憶するデータが入力されると、読み出し制御部１１は、入力された１ビットデータ毎に、そのデータを記憶するデータ格納部Ｂ［ｍ］を決定する（図３のステップＳ１１）。読み出し制御部１１は、決定したデータ格納部Ｂ［ｍ］に含まれる３個のメモリセルＭＣ［ｋ］の位置を示すアドレス信号ＡＤ（ｋ）と、読み出し命令信号Ｒとをメモリ本体２０に出力する。
【００３６】
３個のメモリセルＭＣ［ｋ］の記憶値は、書き換えセル決定部１３と論理演算部１６とに読み出される。論理演算部１６は、入力された１の個数が奇数である場合は１を算出し、入力された１の個数が偶数である場合には０を算出する、図示していない排他的論理和（ＸＯＲ）演算回路を備えている。論理演算部１６は、データ格納部Ｂ［ｍ］の記憶値として、入力された３個のメモリセルＭＣ［ｋ］の記憶値の排他的論理和を求める（ステップＳ１２）。
【００３７】
比較部１２には、これから記憶しようとする１ビットのバイナリデータ値と、論理演算部１６の演算値とが入力される。比較部１２は、入力された２つの値を比較して、一致している場合（ステップＳ１３のＹＥＳ）には、データ格納部Ｂ［ｍ］の記憶値の書き換えが不要であることを示す一致信号Ｃａを出力し（ステップＳ１４）、不一致の場合（ステップＳ１３のＮＯ）には、データ格納部Ｂ［ｍ］の記憶値の書き換えが必要であることを示す不一致信号Ｃｂを出力する（ステップＳ１５）。
【００３８】
書き換えセル決定部１３には、一致信号Ｃａまたは不一致信号Ｃｂ、および、データ格納部Ｂ［ｍ］を構成するメモリセルＭＣ［ｋ］の記憶値が入力される。書き換えセル決定部１３は、一致信号Ｃａが入力された場合、書き換えを行わないことを決定する。
【００３９】
一方、書き換えセル決定部１３は、不一致信号Ｃｂが入力された場合には、ｋが最小値kminであるメモリセルＭＣ［ｋmin］の記憶値が１であるかどうかを判断する（図４のステップＳ２０およびＳ２１）。メモリセルＭＣ［kmin］の記憶値が１であれば（ステップＳ２１のＹＥＳ）、書き換えセル決定部１３は、メモリセルＭＣ［ｋmin］に書き込みを行うことを決定する（ステップＳ２６）。そして、図２に示すように書き換えセル決定部１３は、書き込みを指示する書き込み指示信号Ｗ’を書き換え制御部１４に出力し、また、書き込みを行うメモリセルＭＣ［ｋ］のアドレスを示すアドレス信号ＡＤ（ｋ）をメモリ本体２０に出力する。
【００４０】
また、メモリセルＭＣ［ｋmin］の記憶値が０であれば（ステップＳ２１のＮＯ）、書き換えセル決定部１３は、ｋに１を加算して（ステップＳ２２）、加算後のｋの値（具体的にはkmin＋１）が、ｋmax以下であるかどうかを判断する（ステップＳ２３）。ここで、ｋmaxは、データの書き換えを行うデータ格納部Ｂ［ｍ］を構成するメモリセルＭＣ［ｋ］の中の、最大のｋの値である。
【００４１】
ｋの値がｋmax以下である場合には（ステップＳ２３のＹＥＳ）、書き換えセル決定部１３は、メモリセルＭＣ［ｋ］の記憶値が１であるかどうかを判断し、１であれば（ステップＳ２１のＹＥＳ）、メモリセルＭＣ［ｋ］に書き込みを行うことを決定する（ステップＳ２６）。そして、書き換えセル決定部１３は、書き込みを指示する書き込み指示信号Ｗ’を書き換え制御部１４に出力し、また、書き込みを行うメモリセルＭＣ［ｋ］のアドレスを示すアドレス信号ＡＤ（ｋ）をメモリ本体２０に出力する。
【００４２】
ｋに１を加算していくことによって、ｋの値がkmaxよりも大きくなった場合には（ステップＳ２３のＮＯ）、これは、データ格納部Ｂ［ｍ］を構成するメモリセルＭＣ［ｋ］の記憶値が全て０になっていることを示している。この場合、書き換えセル決定部１３は、記憶値を書き換えるデータ格納部Ｂ［ｍ］を含むセクタＳ［ｎ］に対して消去操作を行うことを決定する（４の図ステップＳ２４）。
【００４３】
書き換えセル決定部１３は、消去操作を行うことを決定した場合には、消去が行われるセクタＳ［ｎ］に属する他のデータ格納部Ｂ［ｍ］のメモリセルＭＣ［ｋ］の記憶値を読み出し、図示していない排他的論理和演算回路で、各データ格納部Ｂ［ｍ］の記憶値を演算する。そして、記憶値が０であるデータ格納部Ｂ［ｍ］があれば、そのデータ格納部Ｂ［ｍ］を構成するメモリセルＭＣ［ｋ］のうちｋの値が最小のメモリセルＭＣ［ｋ］に、消去操作後に書き込みを行うことを決定する（ステップＳ２５）。
【００４４】
そして、書き換えセル決定部１３は、消去操作を行うことを指示する消去指示信号Ｅ’を書き換え制御部１４に出力し、また、消去操作を行うメモリセルＭＣ［ｋ］のアドレスを示すアドレス信号ＡＤ（ｋ）をメモリ本体２０に出力する。次いで、書き換えセル決定部１３は、消去操作後に書き込みを行うことを指示する書き込み指示信号Ｗ’を書き換え制御部１４に出力し、また、書き込みを行うメモリセルＭＣ［ｋ］のアドレスを示すアドレス信号ＡＤ（ｋ）を、メモリ本体２０に出力する。
【００４５】
図２に示す書き換え制御部１４には、書き込みのタイミングを示すストローブ信号である書き込みイネーブル信号Ｗｅ、消去のタイミングを示すストローブ信号である消去イネーブル信号Ｅｅも入力される。また、書き換え制御部１４には、強制書き込み信号Ｅｏおよび強制消去信号Ｗｏも入力される。
【００４６】
書き換え制御部１４は、書き込み指示信号Ｗ’が入力されたときに、値が１の書き込みイネーブル信号Ｗｅが入力されていて、メモリセルへの書き込みが可能な状態であれば（図５のステップＳ３１のＹＥＳ）、メモリ本体２０に書き込み命令信号Ｗを出力する（ステップＳ３２）。
【００４７】
一方、書き換え制御部１４は、書き込み指示信号Ｗ’が入力されたときに、値が０の書き込みイネーブル信号Ｗｅが入力されていて、メモリセルへの書き込みが不可能な状態であれば（ステップＳ３１のＮＯ）、書き込みが可能な状態になるのを待って（ステップＳ３１のＹＥＳ）、メモリ本体２０に書き込み命令信号Ｗを出力する（ステップＳ３２）。
【００４８】
メモリ本体２０は、書き込み命令信号Ｗが入力されると、アドレス信号ＡＤ（ｋ）によって指定されたメモリセルＭＣ［ｋ］に対して０を書き込む（ステップＳ３３）。これにより、データ格納部Ｂ［ｍ］の記憶値が書き換えられる。
【００４９】
また、書き換え制御部１４は、消去指示信号Ｅ’が入力されたときに、値が１の消去イネーブル信号Ｅｅが入力されていて、消去可能な状態であれば（ステップＳ３４のＹＥＳ）、メモリ本体２０に消去命令信号Ｅを出力する。
【００５０】
一方、書き換え制御部１４は、消去指示信号Ｅ’が入力されたときに、値が０の消去イネーブル信号が入力されていて、消去が可能な状態でなければ（ステップＳ３４のＮＯ）、消去可能な状態になるのを待って（ステップＳ３４のＹＥＳ）、メモリ本体２０に消去命令信号Ｅを出力する（ステップＳ３５）。メモリ本体２０は、消去命令信号Ｅが入力されると、アドレス信号ＡＤ（ｋ）によって指定されたメモリセルＭＣ［ｋ］を含むセクタＳ［ｎ］に対して消去操作を行う（ステップＳ３６）。
【００５１】
消去操作によって、セクタＳ［ｎ］に含まれる全メモリセルＭＣ［ｋ］の記憶値は１になるので、この後、書き換え制御部１４は、書き込みが可能な状態になるのを待って（ステップＳ３７）、書き込み命令信号Ｗを出力する（ステップＳ３８）。これにより、書き換えセル決定部１３において消去後に書き込みを行うことが決定されていたメモリセルＭＣ［ｋ］に書き込みが行われる（ステップＳ３９）。以上により、所望のデータ格納部Ｂ［ｍ］の記憶値が書き換えられる。
【００５２】
なお、書き換え制御部１４に、強制書き込み信号Ｗｏや強制消去信号Ｅｏが入力された場合も、書き換え制御部１４は、書き込みまたは消去操作を行って、メモリ本体２０の記憶値を書き換える。
【００５３】
また、メモリ本体２０に記憶されているデータを読み出す場合には、読み出し制御部１１からメモリ本体２０に、記憶値を読み出したいデータ格納部Ｂ［ｍ］の３個のメモリセルＭＣ［ｋ］の位置を示すアドレス信号ＡＤ（ｋ）と、読み出し命令信号Ｒとが入力される。そして、メモリ本体２０から論理演算部１６に、３個のメモリセルＭＣ［ｋ］の値が読み出される。論理演算部１６は、入力された３値の排他的論理和を求め、求められた値を、メモリ本体２０に記憶されていた値として外部に出力する。
【００５４】
次に、図６および図７を用いて、本実施形態に係る半導体記憶装置１と、従来の半導体記憶装置との違いを説明する。図６において、（ａ）の部分は、セクタＳ［１］を構成するデータ格納部Ｂ［１］〜Ｂ［３］の記憶値の変化を示している。また、（ｂ）の部分は、（ａ）の記憶値が得られるように変化させた、メモリセルＭＣ［１］〜ＭＣ［３］の記憶値と、データ格納部Ｂ［１］の記憶値とを示している。また、（ｃ）および（ｄ）の部分は、（ｂ）の部分と同様に、（ａ）の記憶値が得られるように変化させた、メモリセルＭＣ［４］〜ＭＣ［６］およびＭＣ［７］〜ＭＣ［９］の記憶値と、データ格納部Ｂ［２］およびＢ［３］の記憶値とを示している。
【００５５】
また、図７は、図６（ａ）と同じ値を記憶するときに、１ビットのバイナリデータを１ビット記憶用の１個のメモリセルＭＣ’［ｋ］で記憶する、従来の半導体記憶装置におけるメモリセルＭＣ’［１］〜ＭＣ’［３］の記憶値の変化を示している。なお、メモリセルＭＣ’［１］〜ＭＣ’［３］は、同一セクタ内のメモリセルである。図７において、（ａ）の部分は図６（ａ）の部分に相当し、（ｂ）の部分は図６（ｂ）、（ｃ）および（ｄ）の部分に相当する。
【００５６】
図６（ａ）の（１）および（２）に示すように、まず、メモリ本体２０の記憶値を、初期値である（１１１）から（０１０）にするために、図６（ｂ）に示すメモリセルＭＣ［１］と、図６（ｄ）に示すメモリセルＭＣ［７］とに０が書き込まれる。これにより、メモリセルＭＣ［１］〜［３］およびＭＣ［７］〜ＭＣ［９］の記憶値が、いずれも（０１１）になり、データ格納部Ｂ［１］およびＢ［３］の記憶値が０になる。なお、データ格納部Ｂ［２］の記憶値は、記憶するデータ値と同じ１なので、メモリセルＭＣ［１］〜ＭＣ［３］の記憶値は書き換えられない。
【００５７】
次に、図６（ａ）の（２）および（３）に示すように、データ格納部Ｂ［１］〜Ｂ［３］の記憶値を（０１０）から（０００）にするために、図６（ｃ）に示すメモリセルＭＣ［４］に０が書き込まれる。これにより、データ格納部Ｂ［２］の記憶値が０になる。
【００５８】
次に、図６（ａ）の（３）および（４）に示すように、データ格納部Ｂ［１］〜Ｂ［３］の記憶値を（０００）から（００１）にするために、図６（ｄ）に示すように、メモリセルＭＣ［８］に０が書き込まれる。これにより、データ格納部Ｂ［３］の記憶値が１になる。
【００５９】
次に、図６（ａ）の（４）および（５）に示すように、データ格納部Ｂ［１］〜Ｂ［３］の記憶値を（００１）から（１００）にするために、図６（ｂ）および（ｄ）に示すように、メモリセルＭＣ［２］および［９］に０が書き込まれる。これにより、データ格納部Ｂ［１］の記憶値が１になり、データ格納部Ｂ［３］の記憶値が０になる。
【００６０】
次に、図６（ａ）の（５）および（６）に示すように、データ格納部Ｂ［１］〜Ｂ［３］の記憶値を（１００）から（１１０）にするために、図６（ｃ）に示すように、メモリセルＭＣ［５］に０が書き込まれる。これにより、データ格納部Ｂ［２］の記憶値が１になる。
【００６１】
次に、図６（ａ）の（６）および（７）に示すように、データ格納部Ｂ［１］〜Ｂ［３］の記憶値を（１１０）から（１００）にするために、メモリセルＭＣ［６］に０が書き込まれる。これにより、データ格納部Ｂ［２］の記憶値が０になる。
【００６２】
次に、図６（ａ）の（７）および（８）に示すように、データ格納部Ｂ［１］〜Ｂ［３］の記憶値を（１００）から（１１０）にするために、セクタＳ［１］に対して消去操作が行われる。これにより、図６（ｂ）〜（ｄ）に示すように、メモリセルＭＣ［１］〜［９］の記憶が消去されて、記憶値が全て１になる。この後、メモリセルＭＣ［１］〜ＭＣ［９］の記憶値が１になっていることを確認するベリファイ処理が行われ、次いで、データ格納部Ｂ［３］の記憶値を０にするために、図６（ｃ）に示すようにメモリセルＭＣ［７］に０が書き込まれる。
【００６３】
次に、図７を用いて従来の半導体記憶装置における書き換えを説明する。まず、図７（ａ）の（１）および（２）に示すように、記憶値を（１１１）から（０１０）にするために、図７（ｂ）に示すようにメモリセルＭＣ’［３］に０が書き込まれる。
【００６４】
次に、図７（ａ）の（２）および（３）に示すように、記憶値を（０１０）から（０００）にするために、図７（ｂ）に示すようにメモリセルＭＣ’［２］に０が書き込まれる。
【００６５】
次に、図７（ａ）の（３）および（４）に示すように、記憶値を（０００）から（００１）にするために、まず、図７（ｂ）に示すように、メモリセルＭＣ’［１］〜ＭＣ’［３］の記憶が消去される。そして、メモリセルＭＣ’［１］〜ＭＣ’［３］の記憶値が全て１になったことを確認するベリファイ処理が行われ、記憶値を１にする必要がなかったメモリセルＭＣ’［１］およびＭＣ’［２］に０が書き込まれる。
【００６６】
次に、図７（ａ）の（４）および（５）に示すように、記憶値を（００１）から（１００）にするために、図７（ｂ）に示すように、メモリセルＭＣ’［１］〜ＭＣ’［３］の記憶が消去される。そして、メモリセルＭＣ’［１］〜ＭＣ’［３］の記憶値が全て１になったことを確認するベリファイ処理が行われ、記憶値を１にする必要がなかったメモリセルＭＣ’［２］およびＭＣ’［３］に０が書き込まれる。
【００６７】
次に、図７（ａ）の（５）および（６）に示すように、記憶値を（１００）から（１１０）にするために、図７（ｂ）に示すようにメモリセルＭＣ’［１］〜ＭＣ’［３］の記憶が消去される。そして、メモリセルＭＣ’［１］〜ＭＣ’［３］の記憶値が全て１になったことを確認するベリファイ処理が行われ、記憶値を１にする必要がなかったメモリセルＭＣ’［３］に０が書き込まれる。
【００６８】
次に、図７（ａ）の（６）および（７）に示すように、記憶値を（１１０）から（１００）にするために、図７（ｂ）に示すようにメモリセルＭＣ’［２］に０が書き込まれる。
【００６９】
最後に、図７（ａ）の（７）および（８）に示すように、記憶値を（１００）から（１１０）にするために、まず、図７（ｂ）に示すようにメモリセルＭＣ’［１］〜ＭＣ’［３］の記憶が消去される。そして、メモリセルＭＣ’［１］〜ＭＣ’［３］の記憶値が全て１になったことを確認するベリファイ処理が行われ、記憶値を１にする必要がなかったメモリセルＭＣ’［３］に０が書き込まれる。
【００７０】
以上に説明した書き換えにおいて、本実施形態に係る半導体記憶装置１では、消去操作が１回だけ行われたが、従来の半導体記憶装置では、消去操作が４回も行われた。フラッシュメモリの寿命は消去回数で決まるので、本実施形態に係る半導体記憶装置１のように、記憶する１ビット分のバイナリデータを複数ビット分のバイナリデータで表し直して記憶するようにすれば、個々のメモリセルＭＣ［ｋ］の書き換え回数が少なくなり、メモリ本体２０をより長期にわたって使用することができる。
【００７１】
また、消去の場合、ベリファイ処理を行う必要があることなどから、書き込みよりもデータ書き換えに時間を要するが、本実施形態に係る半導体記憶装置１を用いれば、消去回数を減らすことができるので、書き換え時間を短縮できる。
【００７２】
また、本実施形態に係る半導体記憶装置１では、データ格納部Ｂ［ｍ］の記憶値と入力されたデータ値とが不一致の場合にのみ書き換えを行うので、必要のない書き換えを抑制できる。これにより、消去回数を減じることができ、メモリ本体２０をより長期にわたって使用することができる。また、書き換え時間を短縮することもできる。
【００７３】
また、書き換えセル決定部１３は、データ格納部Ｂ［ｍ］の記憶値を書き換えるときに、メモリセルＭＣ［ｋ］の寿命を縮めたり書き換え時間を要したりする「消去」よりも、「書き込み」を優先的に選択する。また、例えば、書き込みを行うメモリセルＭＣ［ｋ］の個数が１個であるときと３個であるときとで得られるデータ格納部Ｂ［ｍ］の記憶値が同じになる場合のように、書き換え方法が複数ある場合、書き換えセル決定部１３は、書き込みを行うメモリセルＭＣ［ｋ］の数ができるだけ少ない書き換え方法を選択する。このように、半導体記憶装置１では、メモリ本体２０の劣化原因となる処理をできるだけ行わないようにしているので、メモリ本体２０をより長期にわたって使用することができる。また、消去回数を減らすことによって、書き換え時間を短縮することもできる。
【００７４】
なお、１つのセクタＳ［ｎ］を構成するデータ格納部Ｂ［ｍ］の個数や、１つのデータ格納部Ｂ［ｍ］を構成するメモリセルＭＣ［ｋ］の個数は、上記説明に用いた個数に限定されるわけではない。半導体記憶装置１において、消去回数は、１つのセクタＳ［ｎ］を構成するデータ格納部Ｂ［ｍ］の数が少ないほど少なくなり、また、データ格納部Ｂ［ｎ］を構成するメモリセルＭＣ［ｋ］の数が多いほど少なくなる。
【００７５】
ただし、１つのデータ格納部Ｂ［ｍ］を構成するメモリセルＭＣ［ｋ］の数が偶数の場合には、メモリセルＭＣ［ｋ］の記憶値が全て０であるとき（消去前）と、全て１であるとき（消去後）とでデータ格納部Ｂ［ｍ］の記憶値が同じになる。よって、セクタ単位で消去が行われる場合、１つのデータ格納部を構成するメモリセルＭＣ［ｋ］の数を奇数にしておけば、消去前と消去後とでのデータ格納部Ｂ［ｍ］の記憶値が変わるために、消去後にさらに書き込みを行ってデータ格納部Ｂ［ｍ］の記憶値を変える必要がないため、書き換え時間を短縮することができる。
【００７６】
なお、本実施形態ではフラッシュメモリを例に説明したが、本発明は、特に、０から１または１から０の少なくともいずれか一方の書き込み回数を減じることによってより長期の使用が可能になったり、書き込み時間の短縮化などの効果が得られたりする半導体記憶装置に対して有効である。例えば強誘電体メモリ（FeRAM；Ferroelectric Random Access Memory）は、書き換え回数、すなわち分極反転回数によって寿命が決まるので、本発明の適用により長寿命化の効果が得られる。
【００７７】
なお、フラッシュメモリ以外のメモリの場合でも、書き換え処理時間が長い書き換えを一括して行って、書き換え処理時間が短い書き換えを個別に行うことができれば、書き換え処理時間が短い書き換えを一括して行って、書き換え処理時間が長い書き換えを個別に行うよりも、書き換え時間を短縮することができる。
【００７８】
また、本実施形態では、１ビット記憶用のメモリセルを用いて説明したが、本発明に係る半導体記憶装置には、１つのメモリセルで２ビット以上のバイナリデータを記憶する多値のフラッシュメモリセルを用いてもよい。例えば１つのメモリセルで２ビットのバイナリデータを記憶する多値メモリセルの場合、１番目のメモリにおける１ビット目の記憶がメモリセルＭＣ［１］に相当し、２ビット目の記憶がメモリセルＭＣ［２］に相当する。そして、２番目のメモリセルにおける１ビット目の記憶がメモリセルＭＣ［３］に相当し、２ビット目の記憶がメモリセルＭＣ［４］に相当するという具合になる。
【００７９】
多値メモリセルを用いれば、１ビット記憶用のメモリセルを用いるよりも、データ格納部を構成するメモリセルの数を減らすことができる。よって、多値メモリセルを用いれば、１ビット記憶用のメモリセルを用いる場合よりも半導体記憶装置を小型化できる場合もある。なお、上記効果が得られるメモリセルで有れば、フラッシュメモリ以外の多値メモリを採用してもよく、例えば、磁気メモリ（ＭＲＡＭ；Magnetoresistive Random Access Memory）や強誘電体メモリ（ＦｅＲＡＭ）などを採用してもよい。
【００８０】
なお、本発明に係る半導体記憶装置は、システムＬＳＩ内蔵用の半導体記憶装置等として有用である。また、ＦＰＧＡ（Field Programmable Gate Array）やコンフギュラブルシステムＬＳＩ等の用途にも応用できる。
【００８１】
なお、本発明に係る半導体記憶装置１は、メモリ本体であるカードと、カードの記憶の読み出しおよび書き換えを行う装置というように、２以上の別な構成要素でなっていてもよい。
【００８２】
（第２の実施形態）
図８は、本発明の第２の実施形態に係る半導体記憶装置２のブロック図である。半導体記憶装置２は、制御演算部１０と、メモリ本体２０ａとを備えている。
【００８３】
メモリ本体２０ａは、電源を切った後も記憶を保持し続けられる、１ビット記憶用の不揮発性のメモリセルＭＣ［ｋ］（ｋは自然数）を複数備えている。本実施形態でも、第１の実施形態と同様に、メモリ本体２０ａは、フラッシュメモリであるとして説明する。そして、フローティングゲートの電子蓄積量が所定量以上であるときのメモリセルＭＣ［ｋ］の記憶値を０とし、フローティングゲートの電子蓄積量が所定量未満であるときのメモリセルＭＣ［ｋ］の記憶値を１とする。なお、図８には示していないが、メモリセルＭＣ［ｋ］は、メモリ本体２０ａのメモリセル配置領域にマトリックス状に配置されている。なお、本実施形態に係る半導体記憶装置２の制御演算部１０の構造とその動作は、第１の実施形態で説明したものと同じであるため説明を省略する。
【００８４】
１つのデータ格納部Ｂ［ｍ］（ｍは自然数）は、３個または５個のメモリセルＭＣ［ｋ］を備えている。例えば、データ格納部Ｂ［１］は、３個のメモリセルＭＣ［１］〜ＭＣ［３］を備えており、データ格納部Ｂ［９］は、５個のメモリセルＭＣ［２５］〜ＭＣ［２９］を備えている。また、１つのデータ格納部Ｂ［ｍ］で１つのセクタＳ［ｎ］（ｎは自然数）が構成されている。同じセクタＳ［ｎ］内に存在するメモリセルＭＣ［ｋ］は、同じワード線（電圧供給線）に接続されている。
【００８５】
次に、図９を用いて、半導体記憶装置２におけるデータの書き換えを説明する。図９（ａ）は、データ格納部Ｂ［１］およびＢ［９］における記憶値の書き換えを示している。図９（ａ）に示す時刻ｔ４１〜ｔ４４は、データ格納部Ｂ［１］の記憶値が１、０、１、０の順に書き換えられる時刻を示している。また、図９（ａ）に示す時刻ｔ１１〜ｔ１７は、データ格納部Ｂ［９］の記憶値が、１、０、１、０、１、０、１の順に書き換えられる時刻を示している。
【００８６】
半導体記憶装置２では、データ格納部Ｂ［ｍ］毎にセクタＳ［ｎ］が構成されているので、図９（ａ）に示すように、半導体記憶装置２のデータ格納部Ｂ［ｍ］の記憶値の書き換えは、データ格納部Ｂ［ｍ］毎に独立して行われる。
【００８７】
記憶値の書き換えがデータ格納部Ｂ［ｍ］毎に行われると、あるデータ格納部Ｂ［ｍ］の記憶を消去するときに、他のデータ格納部Ｂ［ｍ］の記憶が消去されることがない。よって、半導体記憶装置２を用いれば、従来の記憶装置を用いた場合よりも消去回数を減らすことができるので、より長期にわたってメモリ本体２０ｂを使用することができる。
【００８８】
また、半導体記憶装置２は、さらに、より長期にわたってメモリを使用することができるように、頻繁に書き換えが行われる種のデータに対して、メモリセルＭＣ［ｋ］の数が多いデータ格納部Ｂ［ｍ］が割り当てられている。例えば、図９（ａ）に示すように、データ格納部Ｂ［９］は、データ格納部Ｂ［１］よりも頻繁に記憶値が書き換えられるので、データ格納部Ｂ［９］には、データ格納部Ｂ［１］よりも多くのメモリセルＭＣ［ｋ］が割り当てられている。
【００８９】
図９（ｂ）は、同じ書き換えを行う場合に、５個のメモリセルＭＣ［ｋ］を有するデータ格納部Ｂ［９］と、３個のメモリセルＭＣ［ｋ］を有するデータ格納部Ｂ’［９］とでの記憶値の書き換えタイミングの違いを示している。
【００９０】
図９（ｂ）に示すｔ１１〜ｔ１７は、データ格納部Ｂ［９］における書き換え時刻を示しており、また、ｔ１１’〜ｔ１７’は、データ格納部Ｂ’［９］における書き換え時刻を示している。図９（ｂ）に示すように、メモリセルＭＣ［ｋ］の個数が多いデータ格納部Ｂ［９］は、メモリセルＭＣ［ｋ］の個数が少ないデータ格納部Ｂ’［９］よりも遅い書き換え段階で消去が行われる。
【００９１】
よって、データの書き換えを繰り返した場合、メモリセルＭＣ［ｋ］の数が多ければ、消去回数が少なくなるために、より長期にわたってメモリ本体２０を使用できる。消去が行われた場合、消去後にベリファイ処理が必要になるので、データの書き換えに、書き込みよりも長い時間を要する。よって、書き換えが頻繁に行われるデータが分かっている場合、そのデータを、メモリセルＭＣ［ｋ］の個数が多いデータ格納部Ｂ［ｍ］に記憶すれば、より長期にわたってメモリを使用することができ、また、書き換え時間を短縮することができる。
【００９２】
なお、本実施形態においてメモリセルは、１つで多ビットを記憶できる多値メモリのメモリセルであってもよい。
【００９３】
（第３の実施形態）
図１０は、本発明の第３の実施形態に係る半導体記憶装置３のブロック図である。半導体記憶装置３は、制御演算部１０ｂと、メモリ本体２０ｂとを備えている。
【００９４】
メモリ本体２０ｂは、電源を切った後も記憶を保持し続けられる、１ビット記憶用の不揮発性のメモリセルＭＣ［ｋ］（ｋは自然数）を複数備えている。なお、本実施形態でも、第１および第２の実施形態と同様に、メモリ本体２０ｂはフラッシュメモリであるとして説明する。図１０には示していないが、メモリセルＭＣ［ｋ］は、メモリ本体２０ｂのメモリセル配置領域にマトリックス状に配置されている。
【００９５】
データ格納部Ｂ［ｍ］（ｍは自然数）は、それぞれ５つのメモリセルＭＣ［ｋ］を備えている。本実施形態に係る半導体記憶装置３では、セクタ毎のゲート電圧制御は行われず、メモリセルＭＣ［ｋ］毎に消去が行われる。
【００９６】
制御演算部１０ｂは、読み出し制御部１１、比較部１２、書き換えセル決定部１３、書き換え制御部１４、および、消去セル決定部１５を備えている。本実施形態において、制御演算部１０ｂで行われる処理については、本実施形態特有の構成要素である消去セル決定部１５における処理を中心に説明し、それ以外の構成要素における処理は、第１の実施形態で説明した処理と同じであるため省略する。
【００９７】
図１１を用いて、半導体記憶装置３におけるデータの書き換えを説明する。図１１において、（ａ）は、データ格納部Ｂ［１］における書き換えを、（ｂ）は、データ格納部Ｂ［２］における書き換えを、（ｃ）は、データ格納部Ｂ［７］における書き換えを、（ｄ）は、データ格納部Ｂ［１３］における書き換えを時系列で示している。
【００９８】
図１１（ａ）に示すように、期間Ｐの間に、データ格納部Ｂ［１］の記憶値は、０、１、０、１、０の順に書き換えられる。そして、この期間Ｐにおける最後の書き換え後のメモリセルＭＣ［１］〜ＭＣ［５］の記憶値は全て０になっている。そして、時刻Ｔｅに行われる次の書き換えでは、メモリセルＭＣ［１］〜ＭＣ［５］に対して消去操作が行われる。
【００９９】
メモリセルＭＣ［１］〜ＭＣ［５］はセクタを構成していないので、各メモリセルＭＣ［ｋ］の記憶を一つずつ消去して行くことによって、データ格納部Ｂ［ｍ］の記憶値を変えて行くことも可能である。しかしながら、消去操作が行われている間は他の処理を行うことができないので、半導体記憶装置３では、消去によってデータ格納部Ｂ［ｍ］の記憶値を変える場合には、そのデータ格納部Ｂ［ｍ］内の全てのメモリセルＭＣ［ｋ］に対して同時に消去操作が行われる。
【０１００】
ところで、期間Ｐの間に、データ格納部Ｂ［２］の記憶値は、図１１（ｂ）に示すように、１、０、１の順に書き換えられる。そして、期間Ｐにおける最後の書き換え後のメモリセルＭＣ［６］〜ＭＣ［１０］の記憶値は、（００００１）になっている。
【０１０１】
また、期間Ｐの間に、データ格納部Ｂ［７］の記憶値は、図１１（ｃ）に示すように、１、０の順に書き換えられる。そして、期間Ｐにおける最後の書き換え後のメモリセルＭＣ［３１］〜ＭＣ［３５］の記憶値は、（０００１１）になっている。
【０１０２】
また、図１１（ｄ）に示すように、期間Ｐの間においてデータ格納部Ｂ［１３］の記憶値は１であり、メモリセルＭＣ［６１］〜ＭＣ［６５］の記憶値は、（００１１１）になっている。
【０１０３】
先に説明したとおり、消去処理が行われる間には、書き込みなどの他の処理は行えない。よって、半導体記憶装置３は、データ格納部Ｂ［ｍ］の記憶値を書き換えるために消去操作を行う場合に、記憶値を書き換える必要がないデータ格納部Ｂ［ｍ］の一部または全部のメモリセルＭＣ［ｋ］に対しても消去操作を行い、これにより、異なるタイミングで行われる消去操作の回数を減らしている。
【０１０４】
具体的には、図１１（ｂ）に示すように、時刻Ｔｅのときに、つまりデータ格納部［１］に対して消去操作が行われるタイミングで、データ格納部Ｂ［２］の、記憶値が０である４個のメモリセルＭＣ［６］〜ＭＣ［９］に対して消去操作が行われる。これにより、メモリセルＭＣ［６］〜ＭＣ［１０］の記憶値は、（１１１１１）になる。なお、消去操作後のデータ格納部Ｂ［２］の記憶値は、消去操作前と同じ１である。このようにデータ格納部Ｂ［ｍ］の記憶値を変化させずに行う書き換えを、以下ではデータ更新という。
【０１０５】
データ更新は、データ格納部Ｂ［７］およびＢ［１３］に対しても行われる。図１１（ｃ）に示すように、時刻Ｔｅのときに、データ格納部Ｂ［７］の、記憶値が０である２個のメモリセルＭＣ［３２］およびＭＣ［３３］に対して消去操作が行われる。
【０１０６】
また、図１１（ｄ）に示すように、時刻Ｔｅのときに、データ格納部Ｂ［１３］の、記憶値が０である２個のメモリセルＭＣ［６１］およびＭＣ［６２］に対して消去操作が行われる。
【０１０７】
以上のように、あるデータ格納部Ｂ［ｍ］に対して消去操作を行うときに、他のデータ格納部Ｂ［ｍ］が備える、記憶値が０である偶数個のメモリセルＭＣ［ｋ］に対しても消去操作を行えば、次に消去操作が行われるまでの時間を稼ぐことができ、半導体記憶装置３における書き換え時間を短縮することができる。
【０１０８】
記憶が消去されるメモリセルＭＣ［ｋ］は、図１０に示す消去セル決定部１５で決定される。具体的には、書き換えセル決定部１３において、消去によってデータ格納部Ｂ［ｍ］の記憶値が変えられるメモリセルＭ［ｋ］が決定されたときに、書き換えセル決定部１３は、消去セル決定部１５に信号を出力する。
【０１０９】
消去セル決定部１５は、書き換えセル決定部１３から信号を受けると、メモリ本体２０ｂの記憶値を読み出して、同時に記憶を消去するメモリセルＭＣ［ｋ］を決定し、書き換え制御部に消去指示信号Ｅ’を出力し、また、消去するメモリＭＣ［ｋ］のアドレス信号をメモリ本体２０ｂに出力する。
【０１１０】
書き換え制御部１４は、消去指示信号Ｅ’を受けると、消去可能なタイミングで、メモリ本体２０ｂに消去命令信号Ｅを出力する。消去命令信号Ｅを受けたメモリ本体２０では、指定されたアドレスのメモリセルＭＣ［ｋ］に対して、同時に消去操作が行われる。
【０１１１】
半導体記憶装置３は、記憶値を変える必要がないデータ格納部に対して「データ更新」を行うことによって、異なるタイミングで行われる消去操作を減らすことができ、書き換え時間を短縮することができる。よって、半導体記憶装置３によれば、より高速な書き込みを実現することができる。なお、本実施形態に係る半導体記憶装置３のメモリ本体２０ｂの寿命は、第１の実施形態に係るメモリ本体の寿命よりも若干短くなるおそれもあるが、１ビットデータ値を複数ビットデータ値で表し直して記憶しているので、従来のメモリ本体の寿命よりは長くなる。
【０１１２】
なお、消去セル決定部１５は、周期的な書き換えを伴う種のデータであるかどうかということや、次の書き換えまでの時間、書き換え頻度等を考慮して、記憶を消去する適当なメモリセルＭＣ［ｋ］を決定する。
【０１１３】
なお、図１１（ｃ）では、データ格納部Ｂ［７］のメモリセルＭＣ［３１］〜ＭＣ［３５］のうち、直前に０を書き込んだ２つのメモリセルＭＣ［３２］およびＭＣ［３３］に対して消去操作を行ったが、消去操作が行われるメモリセルは、どのメモリセルＭＣ［３１］〜ＭＣ「３３」であってもよい。つまり、消去操作前（データ更新前）と消去操作後（データ更新後）とでデータ格納部Ｂ［ｍ］の記憶値が同じになっていればよい。書き換え時間を短縮するためにデータ更新が行われる場合でも、特定のメモリセルＭＣ［ｋ］に対して集中して消去操作が行われなければ、各メモリセルにおける平均消去回数は極端に増加せず、メモリ本体２０ｂを長期にわたって使用することができる。
【０１１４】
なお、第１の実施形態では、書き換えセル決定部１３は、同じセクタＳ［ｎ］に属する、消去操作後に書き込みを行うメモリセルＭＣ［ｋ］を決定するために、メモリ本体２０からメモリセルＭＣ［ｋ］の記憶値を読み出し、データ格納部Ｂ［ｍ］の記憶値を演算した。しかしながら、本実施形態に係る半導体記憶装置３では、セクタＳ［ｎ］が構成されていないので、書き換えセル決定部１３は、消去後に書き込みを行う必要はない。
【０１１５】
（第４の実施形態）
図１２は、第１の実施形態で説明した半導体記憶装置の書き換え処理と同じ処理を実行するプログラム備えた半導体装置のブロック図である。この半導体装置は、ＣＰＵ３０、記憶部４０およびメモリ本体２０ｂを備えている。ＣＰＵ３０とメモリ本体２０ｂとはハードウェアで結線されるか、または、ＦＰＧＡ（Field Programmable Gate Array）を介して接続の変更が可能になっている。メモリ本体２０ｂは、第１の実施形態で説明したものと同じであり、その詳細な説明は省略する。メモリ本体２０ｂが備える各メモリセルＭＣ［ｋ］には、アドレスＡＤ（ｋ）が付されている。
【０１１６】
記憶部４０はメモリ本体２０ｂの記憶を書き換える際にＣＰＵ３０が参照する制御演算プログラムや制御用データを格納した、書き換え対象ではないメモリである。ここで、制御演算プログラムは、通常の読み出しプログラムである読み出し制御プログラムＰ１、書き換えセルを決定する書き換えセル決定プログラムＰ２、メモリセルＭＣ［ｋ］の記憶書き換え制御を実行する書き換え制御プログラムＰ３、データ比較を行う比較プログラムＰ４、読み出しデータを計算する論理演算プログラムＰ５を含んでいる。読み出し制御プログラムＰ１、書き換えセル決定プログラムＰ２、書き換え制御プログラムＰ３、比較プログラムＰ４および論理演算プログラムＰ５は、それぞれ、第１の実施形態で説明し図２に示した読み出し制御部１１、書き換えセル決定部１３、書き換え制御部１４、比較部１２および論理演算部１６が実行する処理と同じ処理を実行するためのプログラムである。また、制御用データは、制御演算プログラムの実行に必要なデータを含んでいる。
【０１１７】
ＣＰＵ３０は、記憶するデータが入力された際に、記憶部４０が保持するプログラムを読み出して、以下に説明する図３および図１３のフローチャートに示した処理を実行する。ＣＰＵ３０が出力するアドレス信号の上位７ビットは、読み出し指示信号Ｒ、書き込み指示信号Ｗ、消去指示信号Ｅ、強制消去信号Ｅｏ、強制書き込み信号Ｗｏ、消去イネーブル信号Ｅｅおよび書込イネーブル信号Ｗｅであり、残りの２５ビットは記憶を書き換えるメモリセルＭＣ［ｋ］のアドレス信号ＡＤ（ｋ）である。初期状態において、全メモリセルＭＣ［ｋ］の記憶値は１になっており、メモリセルＭＣ［ｋ］の記憶値から求められるデータ格納部Ｂ［ｍ］の記憶値も１になっている。
【０１１８】
メモリ本体２０ｂに記憶するデータが半導体装置に入力されると、ＣＰＵ３０は読み出し制御プログラムＰ１を実行して、入力された１ビットデータ毎にそのデータを記憶するデータ格納部Ｂ［ｍ］を決定する（図３のステップＳ１１）。
【０１１９】
次にＣＰＵ３０は、決定したデータ格納部Ｂ［ｍ］を構成するｑ個（ｑは奇数であって、図１２ではｑ＝３）のメモリセルＭＣ［ｋ］の記憶値を用いて論理演算プログラムＰ２を実行し、データ格納部Ｂ［ｍ］の記憶値としてｑ個のメモリセルＭＣ［ｍ］の記憶値の排他的論理和（ＸＯＲ）を求める（ステップＳ１２）。より具体的には、「１」を記憶するメモリセルＭＣ［ｋ］の個数が奇数である場合には「１」が、偶数である場合には「０」がデータ格納部Ｂ［ｍ］の記憶値として算出される。
【０１２０】
データ格納部Ｂ［ｍ］の記憶値が算出されると、ＣＰＵ３０は比較プログラムＰ４を実行して、これから記憶しようとする１ビットのバイナリデータ値と、求めた記憶値とを比較する。そして、一致している場合（ステップＳ１３のＹＥＳ）には、データ格納部Ｂ［ｍ］の記憶値の書き換えが不要とであり（ステップＳ１４）、この場合には書き換えは行わない。一方、不一致の場合には（ステップＳ１３のＮＯ）、データ格納部Ｂ［ｍ］の記憶値の書き換えが必要であるとなる（ステップＳ１５）。
【０１２１】
書き換えが必要である場合には、ＣＰＵ３０は、書き換えセル決定プログラムＰ２を実行して、記憶値を書き換えるメモリセルＭＣ［ｋ］を決定する。具体的には、まず、ｋが最小値kminであるメモリセルＭＣ［ｋmin］の記憶値が１であるかどうかを判断する（図１３のステップＳ２０およびＳ２１）。メモリセルＭＣ［kmin］の記憶値が１であれば（ステップＳ２１のＹＥＳ）、書き換えセル決定部１３は、メモリセルＭＣ［ｋmin］に書き込みを行うことを決定する（ステップＳ２６）。
【０１２２】
また、メモリセルＭＣ［ｋmin］の記憶値が０であれば（ステップＳ２１のＮＯ）、ｋに１を加算して（ステップＳ２２）、加算後のｋの値（具体的にはkmin＋１）が、ｋmax以下であるかどうかを判断する（ステップＳ２３）。ここで、ｋmaxは、データの書き換えを行うデータ格納部Ｂ［ｍ］を構成するメモリセルＭＣ［ｋ］の中の、最大のｋの値である。
【０１２３】
ｋの値がｋmax以下である場合には（ステップＳ２３のＹＥＳ）、ＣＰＵ３０はメモリセルＭＣ［ｋ］の記憶値が１であるかどうかを判断し、１であれば（ステップＳ２１のＹＥＳ）、メモリセルＭＣ［ｋ］に書き込みを行うことを決定する（ステップＳ２６）。
【０１２４】
ｋに１を加算することによってｋの値がkmaxよりも大きくなった場合には（ステップＳ２３のＮＯ）、データ格納部Ｂ［ｍ］を構成するメモリセルＭＣ［ｋ］の記憶値が全て０になっていることになる。この場合には、書き換えセル決定部１３は、記憶値を書き換えるデータ格納部Ｂ［ｍ］を含むセクタＳ［ｎ］に対して消去操作を行うことを決定する（４の図ステップＳ２４）。
【０１２５】
ＣＰＵ３０は、消去操作を行うことを決定した場合には、読み出し制御プログラムＰ１を実行して消去を行うセクタＳ［ｎ］に属する他のデータ格納部Ｂ［ｍ］からメモリセルＭＣ［ｋ］の記憶値を読み出す。そして、ＣＰＵ３０は、論理演算プログラムＰ５を実行して各データ格納部Ｂ［ｍ］の記憶値を演算する。そして、記憶値が０であるデータ格納部Ｂ［ｍ］があれば、そのデータ格納部Ｂ［ｍ］を構成するメモリセルＭＣ［ｋ］のうちｋの値が最小のメモリセルＭＣ［ｋ］に、消去操作後に書き込みを行うことを決定する（ステップＳ２５）。
【０１２６】
そして、ＣＰＵ３０は、決定した消去および／または書き込みを実行するための読み出し指示信号Ｒ、書き込み指示信号Ｗ、消去指示信号Ｅ、強制消去信号Ｅｏ、強制書き込み信号Ｗｏ、消去イネーブル信号Ｅｅ、書込イネーブル信号Ｗｅおよびアドレス信号ＡＤ（ｋ）を出力する（ステップＳ２７）。これにより、所望のデータ格納部Ｂ［ｍ］の記憶値が書き換えられる。
【０１２７】
また、メモリ本体２０ｂに記憶されているデータを読み出す場合には、ＣＰＵ３０は、読み出しプログラムＰ１を実行して、記憶値を読み出したいデータ格納部Ｂ［ｍ］からｑ個のメモリセルＭＣ［ｋ］の記憶値を読み出す。次に、ＣＰＵ３０は、論理演算プログラムＰ５を実行して、読み出したｑ個の値の排他的論理和を求め、求められた値を、メモリ本体２０ｂに記憶されていた値として外部に出力する。
【０１２８】
第１の実施形態で説明した半導体記憶装置と同様に、本実施形態に係るプログラムを実行することによって、メモリ本体２０ｂをより長期にわたって使用でき、また、書き換え時間を短縮できるといった効果を得ることができる。
【０１２９】
なお、第３の実施形態で説明した処理を行うためには、記憶部４０が、図１０に示した消去セル決定部１５と同じ処理を実行するための消去セル決定プログラムＰ６を備えていればよい。そして、図１３のステップＳ２４で消去操作を行うことを決定した後に、消去セル決定プログラムＰ６を実行して、その他のメモリセルＭＣ［ｍ］の中から、同時に消去を行うことが望ましいメモリセルＭＣ［ｍ］を特定すればよい。ここで、同時に記憶の消去を行うことが望ましいメモリセルＭＣ［ｍ］かどうかは、周期的な書き換えを伴う種のデータであるかどうかということや、次の書き換えまでの時間、書き換え頻度等を考慮して判断されるようになっていればよい。
【産業上の利用可能性】
【０１３０】
本発明に係る半導体記憶装置は、不揮発性記憶装置として有用であり、より具体的には、システムＬＳＩ内蔵用等の半導体記憶装置としても有用である。また、ＦＰＧＡやコンフギュラブルシステムＬＳＩ等の用途にも応用できる。
【図面の簡単な説明】
【０１３１】
【図１】本発明の第１実施形態に係る半導体記憶装置のブロック図
【図２】制御演算部の詳細な構成を示すブロック図
【図３】制御演算部における処理を示すフローチャート
【図４】図３の続図
【図５】図４の続図
【図６】書き換えによるメモリセルＭＣ［ｋ］およびデータ格納部Ｂ［ｍ］の記憶値の変化を示した図
【図７】従来の半導体記憶装置における書き換えによる記憶値の変化を示した図
【図８】本発明の第２の実施形態に係る半導体記憶装置のブロック図
【図９】データ格納部Ｂ［１］、Ｂ［９］およびＢ’［９］における記憶値の変化を時系列で示した図
【図１０】本発明の第３の実施形態に係る半導体記憶装置のブロック図
【図１１】書き換え処理を説明するための図
【図１２】本発明の第４の実施形態に係るプログラムを実行する半導体装置のブロック図
【図１３】図３の続図であって、プログラムの実行によって行われる処理を示すフローチャート
【符号の説明】
【０１３２】
１  半導体記憶装置
２  半導体記憶装置
３  半導体記憶装置
１０  制御演算部
１０ａ  制御演算部
１０ｂ  制御演算部
１１  読み出し制御部
１２  比較部
１３  書き換えセル決定部
１４  書き換え制御部
１５  消去セル決定部
１６  論理演算部
２０  メモリ本体
２０ａ  メモリ本体
２０ｂ  メモリ本体
【図１】
0004679521.tif 000002
【図２】
0004679521.tif 000003
【図３】
0004679521.tif 000004
【図４】
0004679521.tif 000005
【図５】
0004679521.tif 000006
【図６】
0004679521.tif 000007
【図７】
0004679521.tif 000008
【図８】
0004679521.tif 000009
【図９】
0004679521.tif 000010
【図１０】
0004679521.tif 000011
【図１１】
0004679521.tif 000012
【図１２】
0004679521.tif 000013
【図１３】
0004679521.tif 000014