本発明は、半導体記憶装置関し、特に、2以上の記憶状態を持ち、いずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置、書き換え処理方法方法およびプログラムに関する。
フラッシュメモリに代表される不揮発性メモリは、電源を切った後も記憶を保持し続けられる低消費電力なメモリとして、デジタルカメラ等のメモリカードや、パソコンのBIOSの記憶などに利用されている。
フラッシュメモリのメモリセルの記憶値は、例えば、フローティングゲートに所定量以上の電子が蓄積されているときは0であり、フローティングゲートに所定量未満の電子が蓄積されているときは1であるというように、フローティングゲートに蓄積されている電子量によって決められる。
上記のようにメモリセルの記憶値が決められたときに、一般に、メモリセルの記憶値を0にする書き換えは「書き込み」と呼ばれ、1にする書き換えは「消去」と呼ばれている。「書き込み」は、ゲート電圧をソース電圧およびドレイン電圧よりも十分高くすることによって行われ、この操作により、ソース領域からフローティングゲートに電子が注入される。一方、「消去」は、ソース電圧をゲート電圧よりも十分に高くすることによって行われ、この操作により、フローティングゲートに蓄積されている電子がソース領域に引き抜かれる。消去操作が行われると、フローティングゲート下の絶縁膜は損傷を受けるので、フラッシュメモリの寿命は消去回数によって決められる。
ところで、フラッシュメモリは、ソース電極またはドレイン電極を接地し続けたままでは記憶値を書き換えることができず、全ての電圧(ソース、ドレインおよびゲート電圧)を制御しなければ記憶値を書き換えることができない。しかしながら、メモリセル毎に3つの電圧を制御すると回路が煩雑になり、装置が大型化するので、一般に複数個のメモリセルでなるセクタ単位でゲート電圧の制御が行われている。
セクタ単位でゲート電圧が制御される場合には、「書き込み」はメモリセル単位で行われるが、「消去」はセクタ単位で行われる。具体的には、ある1つのメモリセルの記憶値を0から1へと書き換える場合に、まず、そのメモリセルを含むセクタの全メモリセルの記憶が消去され、次いで、メモリセルの記憶値が1になっていることを確認するベリファイ処理が行われ、その後、記憶値を1にする必要が無かったメモリセルに0が書き込まれる。これにより、最終的には、所望のメモリセルの記憶値のみが0から1に書き換えられたことになる。
セクタ単位で消去操作が行われると、記憶値を書き換える必要がないメモリセルの記憶も消去されるので、各メモリセルの消去回数が増え、メモリセルひいてはメモリ本体の性能が劣化する。
したがって、特許文献1に開示されているように、本来のセクタとは別に予備セクタを設けておき、消去回数が少ないセクタのメモリセルにデータを記憶していくことによって、セクタ毎の消去回数のばらつきを解消する半導体記憶装置が提案されている。セクタ毎の消去回数のばらつきが解消されると、不良セクタの発生が抑制されるので、メモリ本体をより長期にわたって使用することができる。
特開2002−366420号公報(第1−21ページ、第1図)
しかしながら、セクタを単位として消去操作を行う以上、本来ならば必要がないメモリセルに対しても消去操作を行うことになるので、メモリセルに余計な損傷を与えてしまうことは避けられない。よって、如何にして不揮発性メモリのメモリ本体を長期使用できるようにするかが課題になっている。
ところで、近年、メモリセルサイズの小型化やメモリの大容量化が進んでいるため、長期使用できるならば、必要なメモリセル数が多くなるという不利益はさほど考慮しなくともよいという場面が出てくることが考えられている。特に、長期にわたって使用できるだけでなく、消去を行う際の書き換え時間を短縮できるならば、必要となるメモリセル数の増加や回路の複雑化という不利益を上回る利益が得られる場合もある。
それ故に、本発明は、記憶の書き換えによって性能が劣化する半導体記憶装置において、メモリ本体をより長期にわたって使用できる半導体記憶装置を提供することを目的としている。また、これに加えて、書き換え時間をより短縮できる半導体記憶装置を提供することも目的としている。
本発明に係る半導体記憶装置は、2以上の記憶状態を持ち、いずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置であって、複数のメモリセルで構成されて全体で1ビット分の値を記憶するデータ格納部を複数備えてなるメモリ本体と、メモリセルの記憶値を読み出す処理と、メモリセルの記憶値を書き換える処理とを行う読み出し書き換え制御部と、データ格納部が備えるメモリセルの記憶値を用いた演算でデータ格納部の記憶値を求める演算部と、演算部が求めたデータ格納部の記憶値と外部から入力された値とを比較し、一致または不一致を示す信号を出力する比較部と、比較部が不一致を示す信号を出力したときに、データ格納部の記憶値を外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定する書き換えセル決定部とを備える。
演算部は、排他的論理回路を含んでいてもよい。その場合には、各データ格納部は、3以上の奇数ビット分のデータ容量を有していればよい。
データ格納部が備えるメモリセルの個数は、データ格納部によって異なっていてもよい。
読み出し書き換え制御部は、メモリセルの記憶値をメモリセル毎に書き換える個別書き換え処理と、メモリセルの記憶値を1個以上のデータ格納部を単位として書き換える一括書き換え処理と、のいずれかを行うことによって、データ格納部の記憶値を変更するようになっていてもよい。
メモリ本体はフラッシュメモリであってもよく、その場合には、個別書き換え処理は書き込み処理であり、一括書き換え処理は消去処理となる。
メモリセルの記憶値を、0または1のうち一方の値に書き換える第1の書き換えに要する時間が、他方の値に書き換える第2の書き換えに要する時間よりも短いときに、個別書き換え処理によって前記第1の書き換えが行われ、一括書き換え処理によって第2の書き換えが行われることを特徴とする。
記憶値を変更する必要がないデータ格納部に属する、第2の書き換えを行うことができる偶数ビット分のデータ容量を有するメモリセルを判断する特定書き換えセル判断部をさらに備え、読み出し書き換え制御部は、一括書き換え処理を行うときに、特定書き換えセル判断部において判断されたメモリセルの記憶を個別に書き換えることを特徴としていてもよい。
メモリセルは、1個で複数ビット分のデータ容量を有する多値メモリセルであってもよい。
本発明に係る半導体記憶装置の書き換え処理方法は、2以上の記憶状態を持ちいずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置の書き込み処理方法であって、複数のメモリセルで構成されて全体で1ビット分の値を記憶する複数のデータ格納部の中から、外部から入力された値を記憶するものを決定し、決定されたデータ格納部を構成するメモリセルの記憶値を用いた演算でデータ格納部の記憶値を求め、演算で求めたデータ格納部の記憶値と外部から入力された値とを比較して一致の有無を判断し、判断結果が不一致であったときに、データ格納部の記憶値を前記外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定し、記憶値を変更することが決定されたメモリセルの記憶値を書き換える。
また、本発明に係るプログラムは、2以上の記憶状態を持ちいずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置の書き換え処理を行うためのプログラムであって、複数のメモリセルで構成されて全体で1ビット分の値を記憶する複数のデータ格納部の中から、外部から入力された値を記憶するものを決定し、決定されたデータ格納部を構成するメモリセルの記憶値を用いた演算で当該データ格納部の記憶値を求め、演算で求めたデータ格納部の記憶値と外部から入力された値とを比較して一致の有無を判断し、判断結果が不一致であったときにデータ格納部の記憶値を外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定し、記憶値を変更することが決定されたメモリセルの記憶値を書き換えることをCPUに実行させる、プログラム。
本発明に係る半導体装置は、記憶する1ビット分のデータを、複数ビット分のデータで表し直して記憶するので、個々のメモリセルの書き換え回数が少なくなり、メモリ本体をより長期にわたって使用することができる。
また、データ格納部にすでに記憶されている記憶値とこれから記憶する記憶値とを比較して、不一致の場合のみ書き換えを行えば、必要のない書き換えを抑制できる。これにより消去回数を減らすことができ、メモリ本体をより長期にわたって使用することができ、また、書き換え時間を短縮することもできる。
また、書き換えが頻繁に行われるデータが分かっている場合、そのデータを、メモリセルの個数が多いデータ格納部に記憶すれば、消去回数を減らすことができ、より長期にわたってメモリ本体を使用することができる。
また、1個のデータ格納部が3以上の奇数ビット分のデータ容量を有していれば、一括書き換え処理前と一括書き換え処理後とで、データ格納部の記憶値が変化するため、一括書き換え後に個別書き換え処理を行う必要がない。よって、書き換え時間を短縮することができる。
また、書き換え処理時間が長い書き換えを個別に行って、書き換え処理時間が短い書き換えを一括して行うよりも、書き換え処理時間が長い書き換えを一括して行って、書き換え処理時間が短い書き換えを個別に行う方が書き換え時間を短縮することができる。
一括書き換え処理を行っている間に他の書き換えができない場合、一括書き換え処理を行うときに、同時に特定書き換えセル判断部で判断されたメモリセルの記憶も書き換えるようにすれば、異なるタイミングで行われる書き換え処理を減らすことができる。よって、次回に一括書き換えを行うまでの時間を稼ぐことができるため、書き換え時間を短縮することができる。このときに偶数ビット分のデータの記憶値を書き換えれば、データ格納部の記憶値は変化しない。
図1は、本発明の第1実施形態に係る半導体記憶装置のブロック図である。
図2は、制御演算部の詳細な構成を示すブロック図である。
図3は、制御演算部における処理を示すフローチャートである。
図4は、図3の続図である。
図5は、図4の続図である。
図6は、書き換えによるメモリセルMC[k]およびデータ格納部B[m]の記憶値の変化を示した図である。
図7は、従来の半導体記憶装置における書き換えによる記憶値の変化を示した図である。
図8は、本発明の第2の実施形態に係る半導体記憶装置のブロック図である。
図9は、データ格納部B[1]、B[9]およびB’[9]における記憶値の変化を時系列で示した図である。
図10は、本発明の第3の実施形態に係る半導体記憶装置のブロック図である。
図11は、書き換え処理を説明するための図である。
図12は、本発明の第4の実施形態に係るプログラムを実行する半導体装置のブロック図である。
図13は、図3の続図であって、プログラムの実行によって行われる処理を示すフローチャートである。
符号の説明
1 半導体記憶装置
2 半導体記憶装置
3 半導体記憶装置
10 制御演算部
10a 制御演算部
10b 制御演算部
11 読み出し制御部
12 比較部
13 書き換えセル決定部
14 書き換え制御部
15 消去セル決定部
16 論理演算部
20 メモリ本体
20a メモリ本体
20b メモリ本体
(第1の実施形態)
図1は、本発明の第1の実施形態に係る半導体記憶装置1のブロック図である。半導体記憶装置1は、制御演算部10と、メモリ本体20とを備えている。
メモリ本体20は、電源を切った後も記憶を保持し続けられる、1ビット記憶用の不揮発性のメモリセルMC[k](kは自然数)を複数備えている。本実施形態において、メモリセルMC[k]は、半導体基板上にソース電極、ドレイン電極、フローティングゲート、およびゲート電極を備えたフラッシュメモリセルであるとして説明する。そして、フローティングゲートの電子蓄積量が所定量以上であるときの記憶値を0とし、フローティングゲートの電子蓄積量が所定量未満であるときの記憶値を1とする。なお、図1には示していないが、メモリセルMC[k]は、メモリ本体20のメモリセル配置領域にマトリックス状に配置されている。
各データ格納部B[m](mは自然数)は、3個のメモリセルMC[k]を備えている。また、3個のデータ格納部B[m]で1個のセクタS[n](nは自然数)が構成されている。同じセクタS[n]内に存在するメモリセルMC[k]は、同じワード線(電圧供給線)に接続されている。
メモリセルMC[k]の記憶値を1から0に書き換える場合、フローティングゲートに所定量以上の電荷が蓄積されるように、ゲート電極に高電圧が印加される。この書き換えは、ソースおよびドレイン電圧が個別に制御されることにより、メモリセルMC[k]単位で行われる。以下、このような書き換えを「書き込み」という。
一方、メモリセルMC[k]の記憶値を0から1に書き換える場合、フローティングゲートに蓄積されている電荷をソース領域に引き抜くために、ソース電極に高電圧が印加される。この書き換えは、セクタS[n]単位で行われる。以下、この書き換えを「消去」という。
図2は、図1に示す半導体記憶装置1のうち、制御演算部10の構成を主に示したブロック図である。また、図3〜図5は、記憶するデータが入力されたときの制御演算部10における処理を示すフローチャートである。以下、図2〜図5を用いて、半導体記憶装置1の構成および動作について説明する。
図2に示すように、制御演算部10は、読み出し制御部11、比較部12、書き換えセル決定部13、書き換え制御部14、および、論理演算部16を備えている。初期状態において、全メモリセルMC[k]の記憶値は1になっており、メモリセルMC[k]の記憶値から求められるデータ格納部B[m]の記憶値も1になっている。
図2の制御演算部10に、メモリ本体20に記憶するデータが入力されると、読み出し制御部11は、入力された1ビットデータ毎に、そのデータを記憶するデータ格納部B[m]を決定する(図3のステップS11)。読み出し制御部11は、決定したデータ格納部B[m]に含まれる3個のメモリセルMC[k]の位置を示すアドレス信号AD(k)と、読み出し命令信号Rとをメモリ本体20に出力する。
3個のメモリセルMC[k]の記憶値は、書き換えセル決定部13と論理演算部16とに読み出される。論理演算部16は、入力された1の個数が奇数である場合は1を算出し、入力された1の個数が偶数である場合には0を算出する、図示していない排他的論理和(XOR)演算回路を備えている。論理演算部16は、データ格納部B[m]の記憶値として、入力された3個のメモリセルMC[k]の記憶値の排他的論理和を求める(ステップS12)。
比較部12には、これから記憶しようとする1ビットのバイナリデータ値と、論理演算部16の演算値とが入力される。比較部12は、入力された2つの値を比較して、一致している場合(ステップS13のYES)には、データ格納部B[m]の記憶値の書き換えが不要であることを示す一致信号Caを出力し(ステップS14)、不一致の場合(ステップS13のNO)には、データ格納部B[m]の記憶値の書き換えが必要であることを示す不一致信号Cbを出力する(ステップS15)。
書き換えセル決定部13には、一致信号Caまたは不一致信号Cb、および、データ格納部B[m]を構成するメモリセルMC[k]の記憶値が入力される。書き換えセル決定部13は、一致信号Caが入力された場合、書き換えを行わないことを決定する。
一方、書き換えセル決定部13は、不一致信号Cbが入力された場合には、kが最小値kminであるメモリセルMC[kmin]の記憶値が1であるかどうかを判断する(図4のステップS20およびS21)。メモリセルMC[kmin]の記憶値が1であれば(ステップS21のYES)、書き換えセル決定部13は、メモリセルMC[kmin]に書き込みを行うことを決定する(ステップS26)。そして、図2に示すように書き換えセル決定部13は、書き込みを指示する書き込み指示信号W’を書き換え制御部14に出力し、また、書き込みを行うメモリセルMC[k]のアドレスを示すアドレス信号AD(k)をメモリ本体20に出力する。
また、メモリセルMC[kmin]の記憶値が0であれば(ステップS21のNO)、書き換えセル決定部13は、kに1を加算して(ステップS22)、加算後のkの値(具体的にはkmin+1)が、kmax以下であるかどうかを判断する(ステップS23)。ここで、kmaxは、データの書き換えを行うデータ格納部B[m]を構成するメモリセルMC[k]の中の、最大のkの値である。
kの値がkmax以下である場合には(ステップS23のYES)、書き換えセル決定部13は、メモリセルMC[k]の記憶値が1であるかどうかを判断し、1であれば(ステップS21のYES)、メモリセルMC[k]に書き込みを行うことを決定する(ステップS26)。そして、書き換えセル決定部13は、書き込みを指示する書き込み指示信号W’を書き換え制御部14に出力し、また、書き込みを行うメモリセルMC[k]のアドレスを示すアドレス信号AD(k)をメモリ本体20に出力する。
kに1を加算していくことによって、kの値がkmaxよりも大きくなった場合には(ステップS23のNO)、これは、データ格納部B[m]を構成するメモリセルMC[k]の記憶値が全て0になっていることを示している。この場合、書き換えセル決定部13は、記憶値を書き換えるデータ格納部B[m]を含むセクタS[n]に対して消去操作を行うことを決定する(4の図ステップS24)。
書き換えセル決定部13は、消去操作を行うことを決定した場合には、消去が行われるセクタS[n]に属する他のデータ格納部B[m]のメモリセルMC[k]の記憶値を読み出し、図示していない排他的論理和演算回路で、各データ格納部B[m]の記憶値を演算する。そして、記憶値が0であるデータ格納部B[m]があれば、そのデータ格納部B[m]を構成するメモリセルMC[k]のうちkの値が最小のメモリセルMC[k]に、消去操作後に書き込みを行うことを決定する(ステップS25)。
そして、書き換えセル決定部13は、消去操作を行うことを指示する消去指示信号E’を書き換え制御部14に出力し、また、消去操作を行うメモリセルMC[k]のアドレスを示すアドレス信号AD(k)をメモリ本体20に出力する。次いで、書き換えセル決定部13は、消去操作後に書き込みを行うことを指示する書き込み指示信号W’を書き換え制御部14に出力し、また、書き込みを行うメモリセルMC[k]のアドレスを示すアドレス信号AD(k)を、メモリ本体20に出力する。
図2に示す書き換え制御部14には、書き込みのタイミングを示すストローブ信号である書き込みイネーブル信号We、消去のタイミングを示すストローブ信号である消去イネーブル信号Eeも入力される。また、書き換え制御部14には、強制書き込み信号Eoおよび強制消去信号Woも入力される。
書き換え制御部14は、書き込み指示信号W’が入力されたときに、値が1の書き込みイネーブル信号Weが入力されていて、メモリセルへの書き込みが可能な状態であれば(図5のステップS31のYES)、メモリ本体20に書き込み命令信号Wを出力する(ステップS32)。
一方、書き換え制御部14は、書き込み指示信号W’が入力されたときに、値が0の書き込みイネーブル信号Weが入力されていて、メモリセルへの書き込みが不可能な状態であれば(ステップS31のNO)、書き込みが可能な状態になるのを待って(ステップS31のYES)、メモリ本体20に書き込み命令信号Wを出力する(ステップS32)。
メモリ本体20は、書き込み命令信号Wが入力されると、アドレス信号AD(k)によって指定されたメモリセルMC[k]に対して0を書き込む(ステップS33)。これにより、データ格納部B[m]の記憶値が書き換えられる。
また、書き換え制御部14は、消去指示信号E’が入力されたときに、値が1の消去イネーブル信号Eeが入力されていて、消去可能な状態であれば(ステップS34のYES)、メモリ本体20に消去命令信号Eを出力する。
一方、書き換え制御部14は、消去指示信号E’が入力されたときに、値が0の消去イネーブル信号が入力されていて、消去が可能な状態でなければ(ステップS34のNO)、消去可能な状態になるのを待って(ステップS34のYES)、メモリ本体20に消去命令信号Eを出力する(ステップS35)。メモリ本体20は、消去命令信号Eが入力されると、アドレス信号AD(k)によって指定されたメモリセルMC[k]を含むセクタS[n]に対して消去操作を行う(ステップS36)。
消去操作によって、セクタS[n]に含まれる全メモリセルMC[k]の記憶値は1になるので、この後、書き換え制御部14は、書き込みが可能な状態になるのを待って(ステップS37)、書き込み命令信号Wを出力する(ステップS38)。これにより、書き換えセル決定部13において消去後に書き込みを行うことが決定されていたメモリセルMC[k]に書き込みが行われる(ステップS39)。以上により、所望のデータ格納部B[m]の記憶値が書き換えられる。
なお、書き換え制御部14に、強制書き込み信号Woや強制消去信号Eoが入力された場合も、書き換え制御部14は、書き込みまたは消去操作を行って、メモリ本体20の記憶値を書き換える。
また、メモリ本体20に記憶されているデータを読み出す場合には、読み出し制御部11からメモリ本体20に、記憶値を読み出したいデータ格納部B[m]の3個のメモリセルMC[k]の位置を示すアドレス信号AD(k)と、読み出し命令信号Rとが入力される。そして、メモリ本体20から論理演算部16に、3個のメモリセルMC[k]の値が読み出される。論理演算部16は、入力された3値の排他的論理和を求め、求められた値を、メモリ本体20に記憶されていた値として外部に出力する。
次に、図6および図7を用いて、本実施形態に係る半導体記憶装置1と、従来の半導体記憶装置との違いを説明する。図6において、(a)の部分は、セクタS[1]を構成するデータ格納部B[1]〜B[3]の記憶値の変化を示している。また、(b)の部分は、(a)の記憶値が得られるように変化させた、メモリセルMC[1]〜MC[3]の記憶値と、データ格納部B[1]の記憶値とを示している。また、(c)および(d)の部分は、(b)の部分と同様に、(a)の記憶値が得られるように変化させた、メモリセルMC[4]〜MC「6]およびMC[7]〜MC[9]の記憶値と、データ格納部B[2]およびB[3]の記憶値とを示している。
また、図7は、図6(a)と同じ値を記憶するときに、1ビットのバイナリデータを1ビット記憶用の1個のメモリセルMC’[k]で記憶する、従来の半導体記憶装置におけるメモリセルMC’[1]〜MC’[3]の記憶値の変化を示している。なお、メモリセルMC’[1]〜MC’[3]は、同一セクタ内のメモリセルである。図7において、(a)の部分は図6(a)の部分に相当し、(b)の部分は図6(b)、(c)および(d)の部分に相当する。
図6(a)の(1)および(2)に示すように、まず、メモリ本体20の記憶値を、初期値である(111)から(010)にするために、図6(b)に示すメモリセルMC[1]と、図6(d)に示すメモリセルMC[7]とに0が書き込まれる。これにより、メモリセルMC[1]〜[3]およびMC[7]〜MC[9]の記憶値が、いずれも(011)になり、データ格納部B[1]およびB[3]の記憶値が0になる。なお、データ格納部B[2]の記憶値は、記憶するデータ値と同じ1なので、メモリセルMC[1]〜MC[3]の記憶値は書き換えられない。
次に、図6(a)の(2)および(3)に示すように、データ格納部B[1]〜B[3]の記憶値を(010)から(000)にするために、図6(c)に示すメモリセルMC[4]に0が書き込まれる。これにより、データ格納部B[2]の記憶値が0になる。
次に、図6(a)の(3)および(4)に示すように、データ格納部B[1]〜B[3]の記憶値を(000)から(001)にするために、図6(d)に示すように、メモリセルMC[8]に0が書き込まれる。これにより、データ格納部B[3]の記憶値が1になる。
次に、図6(a)の(4)および(5)に示すように、データ格納部B[1]〜B[3]の記憶値を(001)から(100)にするために、図6(b)および(d)に示すように、メモリセルMC[2]および[9]に0が書き込まれる。これにより、データ格納部B[1]の記憶値が1になり、データ格納部B[3]の記憶値が0になる。
次に、図6(a)の(5)および(6)に示すように、データ格納部B[1]〜B[3]の記憶値を(100)から(110)にするために、図6(c)に示すように、メモリセルMC[5]に0が書き込まれる。これにより、データ格納部B[2]の記憶値が1になる。
次に、図6(a)の(6)および(7)に示すように、データ格納部B[1]〜B[3]の記憶値を(110)から(100)にするために、メモリセルMC[6]に0が書き込まれる。これにより、データ格納部B[2]の記憶値が0になる。
次に、図6(a)の(7)および(8)に示すように、データ格納部B[1]〜B[3]の記憶値を(100)から(110)にするために、セクタS[1]に対して消去操作が行われる。これにより、図6(b)〜(d)に示すように、メモリセルMC[1]〜[9]の記憶が消去されて、記憶値が全て1になる。この後、メモリセルMC[1]〜MC[9]の記憶値が1になっていることを確認するベリファイ処理が行われ、次いで、データ格納部B[3]の記憶値を0にするために、図6(c)に示すようにメモリセルMC[7]に0が書き込まれる。
次に、図7を用いて従来の半導体記憶装置における書き換えを説明する。まず、図7(a)の(1)および(2)に示すように、記憶値を(111)から(010)にするために、図7(b)に示すようにメモリセルMC’[3]に0が書き込まれる。
次に、図7(a)の(2)および(3)に示すように、記憶値を(010)から(000)にするために、図7(b)に示すようにメモリセルMC’[2]に0が書き込まれる。
次に、図7(a)の(3)および(4)に示すように、記憶値を(000)から(001)にするために、まず、図7(b)に示すように、メモリセルMC’[1]〜MC’[3]の記憶が消去される。そして、メモリセルMC’[1]〜MC’[3]の記憶値が全て1になったことを確認するベリファイ処理が行われ、記憶値を1にする必要がなかったメモリセルMC’[1]およびMC’[2]に0が書き込まれる。
次に、図7(a)の(4)および(5)に示すように、記憶値を(001)から(100)にするために、図7(b)に示すように、メモリセルMC’[1]〜MC’[3]の記憶が消去される。そして、メモリセルMC’[1]〜MC’[3]の記憶値が全て1になったことを確認するベリファイ処理が行われ、記憶値を1にする必要がなかったメモリセルMC’[2]およびMC’[3]に0が書き込まれる。
次に、図7(a)の(5)および(6)に示すように、記憶値を(100)から(110)にするために、図7(b)に示すようにメモリセルMC’[1]〜MC’[3]の記憶が消去される。そして、メモリセルMC’[1]〜MC’[3]の記憶値が全て1になったことを確認するベリファイ処理が行われ、記憶値を1にする必要がなかったメモリセルMC’[3]に0が書き込まれる。
次に、図7(a)の(6)および(7)に示すように、記憶値を(110)から(100)にするために、図7(b)に示すようにメモリセルMC’[2]に0が書き込まれる。
最後に、図7(a)の(7)および(8)に示すように、記憶値を(100)から(110)にするために、まず、図7(b)に示すようにメモリセルMC’[1]〜MC’[3]の記憶が消去される。そして、メモリセルMC’[1]〜MC’[3]の記憶値が全て1になったことを確認するベリファイ処理が行われ、記憶値を1にする必要がなかったメモリセルMC’[3]に0が書き込まれる。
以上に説明した書き換えにおいて、本実施形態に係る半導体記憶装置1では、消去操作が1回だけ行われたが、従来の半導体記憶装置では、消去操作が4回も行われた。フラッシュメモリの寿命は消去回数で決まるので、本実施形態に係る半導体記憶装置1のように、記憶する1ビット分のバイナリデータを複数ビット分のバイナリデータで表し直して記憶するようにすれば、個々のメモリセルMC[k]の書き換え回数が少なくなり、メモリ本体20をより長期にわたって使用することができる。
また、消去の場合、ベリファイ処理を行う必要があることなどから、書き込みよりもデータ書き換えに時間を要するが、本実施形態に係る半導体記憶装置1を用いれば、消去回数を減らすことができるので、書き換え時間を短縮できる。
また、本実施形態に係る半導体記憶装置1では、データ格納部B[m]の記憶値と入力されたデータ値とが不一致の場合にのみ書き換えを行うので、必要のない書き換えを抑制できる。これにより、消去回数を減じることができ、メモリ本体20をより長期にわたって使用することができる。また、書き換え時間を短縮することもできる。
また、書き換えセル決定部13は、データ格納部B[m]の記憶値を書き換えるときに、メモリセルMC[k]の寿命を縮めたり書き換え時間を要したりする「消去」よりも、「書き込み」を優先的に選択する。また、例えば、書き込みを行うメモリセルMC[k]の個数が1個であるときと3個であるときとで得られるデータ格納部B[m]の記憶値が同じになる場合のように、書き換え方法が複数ある場合、書き換えセル決定部13は、書き込みを行うメモリセルMC[k]の数ができるだけ少ない書き換え方法を選択する。このように、半導体記憶装置1では、メモリ本体20の劣化原因となる処理をできるだけ行わないようにしているので、メモリ本体20をより長期にわたって使用することができる。また、消去回数を減らすことによって、書き換え時間を短縮することもできる。
なお、1つのセクタS[n]を構成するデータ格納部B[m]の個数や、1つのデータ格納部B[m]を構成するメモリセルMC[k]の個数は、上記説明に用いた個数に限定されるわけではない。半導体記憶装置1において、消去回数は、1つのセクタS[n]を構成するデータ格納部B[m]の数が少ないほど少なくなり、また、データ格納部B[n]を構成するメモリセルMC[k]の数が多いほど少なくなる。
ただし、1つのデータ格納部B[m]を構成するメモリセルMC[k]の数が偶数の場合には、メモリセルMC[k]の記憶値が全て0であるとき(消去前)と、全て1であるとき(消去後)とでデータ格納部B[m]の記憶値が同じになる。よって、セクタ単位で消去が行われる場合、1つのデータ格納部を構成するメモリセルMC[k]の数を奇数にしておけば、消去前と消去後とでのデータ格納部B[m]の記憶値が変わるために、消去後にさらに書き込みを行ってデータ格納部B[m]の記憶値を変える必要がないため、書き換え時間を短縮することができる。
なお、本実施形態ではフラッシュメモリを例に説明したが、本発明は、特に、0から1または1から0の少なくともいずれか一方の書き込み回数を減じることによってより長期の使用が可能になったり、書き込み時間の短縮化などの効果が得られたりする半導体記憶装置に対して有効である。例えば強誘電体メモリ(FeRAM;Ferroelectric Random Access Memory)は、書き換え回数、すなわち分極反転回数によって寿命が決まるので、本発明の適用により長寿命化の効果が得られる。
なお、フラッシュメモリ以外のメモリの場合でも、書き換え処理時間が長い書き換えを一括して行って、書き換え処理時間が短い書き換えを個別に行うことができれば、書き換え処理時間が短い書き換えを一括して行って、書き換え処理時間が長い書き換えを個別に行うよりも、書き換え時間を短縮することができる。
また、本実施形態では、1ビット記憶用のメモリセルを用いて説明したが、本発明に係る半導体記憶装置には、1つのメモリセルで2ビット以上のバイナリデータを記憶する多値のフラッシュメモリセルを用いてもよい。例えば1つのメモリセルで2ビットのバイナリデータを記憶する多値メモリセルの場合、1番目のメモリにおける1ビット目の記憶がメモリセルMC[1]に相当し、2ビット目の記憶がメモリセルMC[2]に相当する。そして、2番目のメモリセルにおける1ビット目の記憶がメモリセルMC[3]に相当し、2ビット目の記憶がメモリセルMC[4]に相当するという具合になる。
多値メモリセルを用いれば、1ビット記憶用のメモリセルを用いるよりも、データ格納部を構成するメモリセルの数を減らすことができる。よって、多値メモリセルを用いれば、1ビット記憶用のメモリセルを用いる場合よりも半導体記憶装置を小型化できる場合もある。なお、上記効果が得られるメモリセルで有れば、フラッシュメモリ以外の多値メモリを採用してもよく、例えば、磁気メモリ(MRAM;Magnetoresistive Random Access Memory)や強誘電体メモリ(FeRAM)などを採用してもよい。
なお、本発明に係る半導体記憶装置は、システムLSI内蔵用の半導体記憶装置等として有用である。また、FPGA(Field Programmable Gate Array)やコンフギュラブルシステムLSI等の用途にも応用できる。
なお、本発明に係る半導体記憶装置1は、メモリ本体であるカードと、カードの記憶の読み出しおよび書き換えを行う装置というように、2以上の別な構成要素でなっていてもよい。
(第3の実施形態)
図8は、本発明の第2の実施形態に係る半導体記憶装置2のブロック図である。半導体記憶装置2は、制御演算部10と、メモリ本体20aとを備えている。
メモリ本体20aは、電源を切った後も記憶を保持し続けられる、1ビット記憶用の不揮発性のメモリセルMC[k](kは自然数)を複数備えている。本実施形態でも、第1の実施形態と同様に、メモリ本体20aは、フラッシュメモリであるとして説明する。そして、フローティングゲートの電子蓄積量が所定量以上であるときのメモリセルMC[k]の記憶値を0とし、フローティングゲートの電子蓄積量が所定量未満であるときのメモリセルMC[k]の記憶値を1とする。なお、図8には示していないが、メモリセルMC[k]は、メモリ本体20aのメモリセル配置領域にマトリックス状に配置されている。なお、本実施形態に係る半導体記憶装置2の制御演算部10の構造とその動作は、第1の実施形態で説明したものと同じであるため説明を省略する。
1つのデータ格納部B[m](mは自然数)は、3個または5個のメモリセルMC[k]を備えている。例えば、データ格納部B[1]は、3個のメモリセルMC[1]〜MC[3]を備えており、データ格納部B[9]は、5個のメモリセルMC[25]〜MC[29]を備えている。また、1つのデータ格納部B[m]で1つのセクタS[n](nは自然数)が構成されている。同じセクタS[n]内に存在するメモリセルMC[k]は、同じワード線(電圧供給線)に接続されている。
次に、図9を用いて、半導体記憶装置2におけるデータの書き換えを説明する。図9(a)は、データ格納部B[1]およびB[9]における記憶値の書き換えを示している。図9(a)に示す時刻t41〜t44は、データ格納部B[1]の記憶値が1、0、1、0の順に書き換えられる時刻を示している。また、図9(a)に示す時刻t11〜t17は、データ格納部B[9]の記憶値が、1、0、1、0、1、0、1の順に書き換えられる時刻を示している。
半導体記憶装置2では、データ格納部B[m]毎にセクタS[n]が構成されているので、図9(a)に示すように、半導体記憶装置2のデータ格納部B[m]の記憶値の書き換えは、データ格納部B[m]毎に独立して行われる。
記憶値の書き換えがデータ格納部B[m]毎に行われると、あるデータ格納部B[m]の記憶を消去するときに、他のデータ格納部B[m]の記憶が消去されることがない。よって、半導体記憶装置2を用いれば、従来の記憶装置を用いた場合よりも消去回数を減らすことができるので、より長期にわたってメモリ本体20bを使用することができる。
また、半導体記憶装置2は、さらに、より長期にわたってメモリを使用することができるように、頻繁に書き換えが行われる種のデータに対して、メモリセルMC[k]の数が多いデータ格納部B[m]が割り当てられている。例えば、図9(a)に示すように、データ格納部B[9]は、データ格納部B[1]よりも頻繁に記憶値が書き換えられるので、データ格納部B[9]には、データ格納部B[1]よりも多くのメモリセルMC[k]が割り当てられている。
図9(b)は、同じ書き換えを行う場合に、5個のメモリセルMC[k]を有するデータ格納部B[9]と、3個のメモリセルMC[k]を有するデータ格納部B’[9]とでの記憶値の書き換えタイミングの違いを示している。
図9(b)に示すt11〜t17は、データ格納部B[9]における書き換え時刻を示しており、また、t11’〜t17’は、データ格納部B’[9]における書き換え時刻を示している。図9(b)に示すように、メモリセルMC[k]の個数が多いデータ格納部B[9]は、メモリセルMC[k]の個数が少ないデータ格納部B’[9]よりも遅い書き換え段階で消去が行われる。
よって、データの書き換えを繰り返した場合、メモリセルMC[k]の数が多ければ、消去回数が少なくなるために、より長期にわたってメモリ本体20を使用できる。消去が行われた場合、消去後にベリファイ処理が必要になるので、データの書き換えに、書き込みよりも長い時間を要する。よって、書き換えが頻繁に行われるデータが分かっている場合、そのデータを、メモリセルMC[k]の個数が多いデータ格納部B[m]に記憶すれば、より長期にわたってメモリを使用することができ、また、書き換え時間を短縮することができる。
なお、本実施形態においてメモリセルは、1つで多ビットを記憶できる多値メモリのメモリセルであってもよい。
(第3の実施形態)
図10は、本発明の第3の実施形態に係る半導体記憶装置3のブロック図である。半導体記憶装置3は、制御演算部10bと、メモリ本体20bとを備えている。
メモリ本体20bは、電源を切った後も記憶を保持し続けられる、1ビット記憶用の不揮発性のメモリセルMC[k](kは自然数)を複数備えている。なお、本実施形態でも、第1および第2の実施形態と同様に、メモリ本体20bはフラッシュメモリであるとして説明する。図10には示していないが、メモリセルMC[k]は、メモリ本体20bのメモリセル配置領域にマトリックス状に配置されている。
データ格納部B[m](mは自然数)は、それぞれ5つのメモリセルMC[k]を備えている。本実施形態に係る半導体記憶装置3では、セクタ毎のゲート電圧制御は行われず、メモリセルMC[k]毎に消去が行われる。
制御演算部10bは、読み出し制御部11、比較部12、書き換えセル決定部13、書き換え制御部14、および、消去セル決定部15を備えている。本実施形態において、制御演算部10bで行われる処理については、本実施形態特有の構成要素である消去セル決定部15における処理を中心に説明し、それ以外の構成要素における処理は、第1の実施形態で説明した処理と同じであるため省略する。
図11を用いて、半導体記憶装置3におけるデータの書き換えを説明する。図11において、(a)は、データ格納部B[1]における書き換えを、(b)は、データ格納部B[2]における書き換えを、(c)は、データ格納部B[7]における書き換えを、(d)は、データ格納部B[13]における書き換えを時系列で示している。
図11(a)に示すように、期間Pの間に、データ格納部B[1]の記憶値は、0、1、0、1、0の順に書き換えられる。そして、この期間Pにおける最後の書き換え後のメモリセルMC[1]〜MC[5]の記憶値は全て0になっている。そして、時刻Teに行われる次の書き換えでは、メモリセルMC[1]〜MC[5]に対して消去操作が行われる。
メモリセルMC[1]〜MC[5]はセクタを構成していないので、各メモリセルMC[k]の記憶を一つずつ消去して行くことによって、データ格納部B[m]の記憶値を変えて行くことも可能である。しかしながら、消去操作が行われている間は他の処理を行うことができないので、半導体記憶装置3では、消去によってデータ格納部B[m]の記憶値を変える場合には、そのデータ格納部B[m]内の全てのメモリセルMC[k]に対して同時に消去操作が行われる。
ところで、期間Pの間に、データ格納部B[2]の記憶値は、図11(b)に示すように、1、0、1の順に書き換えられる。そして、期間Pにおける最後の書き換え後のメモリセルMC[6]〜MC[10]の記憶値は、(00001)になっている。
また、期間Pの間に、データ格納部B[7]の記憶値は、図11(c)に示すように、1、0の順に書き換えられる。そして、期間Pにおける最後の書き換え後のメモリセルMC[31]〜MC[35]の記憶値は、(00011)になっている。
また、図11(d)に示すように、期間Pの間においてデータ格納部B[13]の記憶値は1であり、メモリセルMC[61]〜MC[65]の記憶値は、(00111)になっている。
先に説明したとおり、消去処理が行われる間には、書き込みなどの他の処理は行えない。よって、半導体記憶装置3は、データ格納部B[m]の記憶値を書き換えるために消去操作を行う場合に、記憶値を書き換える必要がないデータ格納部B[m]の一部または全部のメモリセルMC[k]に対しても消去操作を行い、これにより、異なるタイミングで行われる消去操作の回数を減らしている。
具体的には、図11(b)に示すように、時刻Teのときに、つまりデータ格納部[1]に対して消去操作が行われるタイミングで、データ格納部B[2]の、記憶値が0である4個のメモリセルMC[6]〜MC[9]に対して消去操作が行われる。これにより、メモリセルMC[6]〜MC[10]の記憶値は、(11111)になる。なお、消去操作後のデータ格納部B[2]の記憶値は、消去操作前と同じ1である。このようにデータ格納部B[m]の記憶値を変化させずに行う書き換えを、以下ではデータ更新という。
データ更新は、データ格納部B[7]およびB[13]に対しても行われる。図11(c)に示すように、時刻Teのときに、データ格納部B[7]の、記憶値が0である2個のメモリセルMC[32]およびMC[33]に対して消去操作が行われる。
また、図11(d)に示すように、時刻Teのときに、データ格納部B[13]の、記憶値が0である2個のメモリセルMC[61]およびMC[62]に対して消去操作が行われる。
以上のように、あるデータ格納部B[m]に対して消去操作を行うときに、他のデータ格納部B[m]が備える、記憶値が0である偶数個のメモリセルMC[k]に対しても消去操作を行えば、次に消去操作が行われるまでの時間を稼ぐことができ、半導体記憶装置3における書き換え時間を短縮することができる。
記憶が消去されるメモリセルMC[k]は、図10に示す消去セル決定部15で決定される。具体的には、書き換えセル決定部13において、消去によってデータ格納部B[m]の記憶値が変えられるメモリセルM[k]が決定されたときに、書き換えセル決定部13は、消去セル決定部15に信号を出力する。
消去セル決定部15は、書き換えセル決定部13から信号を受けると、メモリ本体20bの記憶値を読み出して、同時に記憶を消去するメモリセルMC[k]を決定し、書き換え制御部に消去指示信号E’を出力し、また、消去するメモリMC[k]のアドレス信号をメモリ本体20bに出力する。
書き換え制御部14は、消去指示信号E’を受けると、消去可能なタイミングで、メモリ本体20bに消去命令信号Eを出力する。消去命令信号Eを受けたメモリ本体20では、指定されたアドレスのメモリセルMC[k]に対して、同時に消去操作が行われる。
半導体記憶装置3は、記憶値を変える必要がないデータ格納部に対して「データ更新」を行うことによって、異なるタイミングで行われる消去操作を減らすことができ、書き換え時間を短縮することができる。よって、半導体記憶装置3によれば、より高速な書き込みを実現することができる。なお、本実施形態に係る半導体記憶装置3のメモリ本体20bの寿命は、第1の実施形態に係るメモリ本体の寿命よりも若干短くなるおそれもあるが、1ビットデータ値を複数ビットデータ値で表し直して記憶しているので、従来のメモリ本体の寿命よりは長くなる。
なお、消去セル決定部15は、周期的な書き換えを伴う種のデータであるかどうかということや、次の書き換えまでの時間、書き換え頻度等を考慮して、記憶を消去する適当なメモリセルMC[k]を決定する。
なお、図11(c)では、データ格納部B[7]のメモリセルMC[31]〜MC[35]のうち、直前に0を書き込んだ2つのメモリセルMC[32]およびMC[33]に対して消去操作を行ったが、消去操作が行われるメモリセルは、どのメモリセルMC[31]〜MC「33」であってもよい。つまり、消去操作前(データ更新前)と消去操作後(データ更新後)とでデータ格納部B[m]の記憶値が同じになっていればよい。書き換え時間を短縮するためにデータ更新が行われる場合でも、特定のメモリセルMC[k]に対して集中して消去操作が行われなければ、各メモリセルにおける平均消去回数は極端に増加せず、メモリ本体20bを長期にわたって使用することができる。
なお、第1の実施形態では、書き換えセル決定部13は、同じセクタS[n]に属する、消去操作後に書き込みを行うメモリセルMC[k]を決定するために、メモリ本体20からメモリセルMC[k]の記憶値を読み出し、データ格納部B[m]の記憶値を演算した。しかしながら、本実施形態に係る半導体記憶装置3では、セクタS[n]が構成されていないので、書き換えセル決定部13は、消去後に書き込みを行う必要はない。
(第4の実施形態)
図12は、第1の実施形態で説明した半導体記憶装置の書き換え処理と同じ処理を実行するプログラム備えた半導体装置のブロック図である。この半導体装置は、CPU30、記憶部40およびメモリ本体20bを備えている。CPU30とメモリ本体20bとはハードウェアで結線されるか、または、FPGA(Field Programmable Gate Array)を介して接続の変更が可能になっている。メモリ本体20bは、第1の実施形態で説明したものと同じであり、その詳細な説明は省略する。メモリ本体20bが備える各メモリセルMC[k]には、アドレスAD(k)が付されている。
記憶部40はメモリ本体20bの記憶を書き換える際にCPU30が参照する制御演算プログラムや制御用データを格納した、書き換え対象ではないメモリである。ここで、制御演算プログラムは、通常の読み出しプログラムである読み出し制御プログラムP1、書き換えセルを決定する書き換えセル決定プログラムP2、メモリセルMC[k]の記憶書き換え制御を実行する書き換え制御プログラムP3、データ比較を行う比較プログラムP4、読み出しデータを計算する論理演算プログラムP5を含んでいる。読み出し制御プログラムP1、書き換えセル決定プログラムP2、書き換え制御プログラムP3、比較プログラムP4および論理演算プログラムP5は、それぞれ、第1の実施形態で説明し図2に示した読み出し制御部11、書き換えセル決定部13、書き換え制御部14、比較部12および論理演算部16が実行する処理と同じ処理を実行するためのプログラムである。また、制御用データは、制御演算プログラムの実行に必要なデータを含んでいる。
CPU30は、記憶するデータが入力された際に、記憶部40が保持するプログラムを読み出して、以下に説明する図3および図13のフローチャートに示した処理を実行する。CPU30が出力するアドレス信号の上位7ビットは、読み出し指示信号R、書き込み指示信号W、消去指示信号E、強制消去信号Eo、強制書き込み信号Wo、消去イネーブル信号Eeおよび書込イネーブル信号Weであり、残りの25ビットは記憶を書き換えるメモリセルMC[k]のアドレス信号AD(k)である。初期状態において、全メモリセルMC[k]の記憶値は1になっており、メモリセルMC[k]の記憶値から求められるデータ格納部B[m]の記憶値も1になっている。
メモリ本体20bに記憶するデータが半導体装置に入力されると、CPU30は読み出し制御プログラムP1を実行して、入力された1ビットデータ毎にそのデータを記憶するデータ格納部B[m]を決定する(図3のステップS11)。
次にCPU30は、決定したデータ格納部B[m]を構成するq個(qは奇数であって、図12ではq=3)のメモリセルMC[k]の記憶値を用いて論理演算プログラムP2を実行し、データ格納部B[m]の記憶値としてq個のメモリセルMC[m]の記憶値の排他的論理和(XOR)を求める(ステップS12)。より具体的には、「1」を記憶するメモリセルMC[k]の個数が奇数である場合には「1」が、偶数である場合には「0」がデータ格納部B[m]の記憶値として算出される。
データ格納部B[m]の記憶値が算出されると、CPU30は比較プログラムP4を実行して、これから記憶しようとする1ビットのバイナリデータ値と、求めた記憶値とを比較する。そして、一致している場合(ステップS13のYES)には、データ格納部B[m]の記憶値の書き換えが不要とであり(ステップS14)、この場合には書き換えは行わない。一方、不一致の場合には(ステップS13のNO)、データ格納部B[m]の記憶値の書き換えが必要であるとなる(ステップS15)。
書き換えが必要である場合には、CPU30は、書き換えセル決定プログラムP2を実行して、記憶値を書き換えるメモリセルMC[k]を決定する。具体的には、まず、kが最小値kminであるメモリセルMC[kmin]の記憶値が1であるかどうかを判断する(図13のステップS20およびS21)。メモリセルMC[kmin]の記憶値が1であれば(ステップS21のYES)、書き換えセル決定部13は、メモリセルMC[kmin]に書き込みを行うことを決定する(ステップS26)。
また、メモリセルMC[kmin]の記憶値が0であれば(ステップS21のNO)、kに1を加算して(ステップS22)、加算後のkの値(具体的にはkmin+1)が、kmax以下であるかどうかを判断する(ステップS23)。ここで、kmaxは、データの書き換えを行うデータ格納部B[m]を構成するメモリセルMC[k]の中の、最大のkの値である。
kの値がkmax以下である場合には(ステップS23のYES)、CPU30はメモリセルMC[k]の記憶値が1であるかどうかを判断し、1であれば(ステップS21のYES)、メモリセルMC[k]に書き込みを行うことを決定する(ステップS26)。
kに1を加算することによってkの値がkmaxよりも大きくなった場合には(ステップS23のNO)、データ格納部B[m]を構成するメモリセルMC[k]の記憶値が全て0になっていることになる。この場合には、書き換えセル決定部13は、記憶値を書き換えるデータ格納部B[m]を含むセクタS[n]に対して消去操作を行うことを決定する(4の図ステップS24)。
CPU30は、消去操作を行うことを決定した場合には、読み出し制御プログラムP1を実行して消去を行うセクタS[n]に属する他のデータ格納部B[m]からメモリセルMC[k]の記憶値を読み出す。そして、CPU30は、論理演算プログラムP5を実行して各データ格納部B[m]の記憶値を演算する。そして、記憶値が0であるデータ格納部B[m]があれば、そのデータ格納部B[m]を構成するメモリセルMC[k]のうちkの値が最小のメモリセルMC[k]に、消去操作後に書き込みを行うことを決定する(ステップS25)。
そして、CPU30は、決定した消去および/または書き込みを実行するための読み出し指示信号R、書き込み指示信号W、消去指示信号E、強制消去信号Eo、強制書き込み信号Wo、消去イネーブル信号Ee、書込イネーブル信号Weおよびアドレス信号AD(k)を出力する(ステップS27)。これにより、所望のデータ格納部B[m]の記憶値が書き換えられる。
また、メモリ本体20bに記憶されているデータを読み出す場合には、CPU30は、読み出しプログラムP1を実行して、記憶値を読み出したいデータ格納部B[m]からq個のメモリセルMC[k]の記憶値を読み出す。次に、CPU30は、論理演算プログラムP5を実行して、読み出したq個の値の排他的論理和を求め、求められた値を、メモリ本体20bに記憶されていた値として外部に出力する。
第1の実施形態で説明した半導体記憶装置と同様に、本実施形態に係るプログラムを実行することによって、メモリ本体20bをより長期にわたって使用でき、また、書き換え時間を短縮できるといった効果を得ることができる。
なお、第3の実施形態で説明した処理を行うためには、記憶部40が、図10に示した消去セル決定部15と同じ処理を実行するための消去セル決定プログラムP6を備えていればよい。そして、図13のステップS24で消去操作を行うことを決定した後に、消去セル決定プログラムP6を実行して、その他のメモリセルMC[m]の中から、同時に消去を行うことが望ましいメモリセルMC[m]を特定すればよい。ここで、同時に記憶の消去を行うことが望ましいメモリセルMC[m]かどうかは、周期的な書き換えを伴う種のデータであるかどうかということや、次の書き換えまでの時間、書き換え頻度等を考慮して判断されるようになっていればよい。
本発明に係る半導体記憶装置は、不揮発性記憶装置として有用であり、より具体的には、システムLSI内蔵用等の半導体記憶装置としても有用である。また、FPGAやコンフギュラブルシステムLSI等の用途にも応用できる。
本発明は、半導体記憶装置関し、特に、2以上の記憶状態を持ち、いずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置、書き換え処理方法方法およびプログラムに関する。
フラッシュメモリに代表される不揮発性メモリは、電源を切った後も記憶を保持し続けられる低消費電力なメモリとして、デジタルカメラ等のメモリカードや、パソコンのBIOSの記憶などに利用されている。
フラッシュメモリのメモリセルの記憶値は、例えば、フローティングゲートに所定量以上の電子が蓄積されているときは0であり、フローティングゲートに所定量未満の電子が蓄積されているときは1であるというように、フローティングゲートに蓄積されている電子量によって決められる。
上記のようにメモリセルの記憶値が決められたときに、一般に、メモリセルの記憶値を0にする書き換えは「書き込み」と呼ばれ、1にする書き換えは「消去」と呼ばれている。「書き込み」は、ゲート電圧をソース電圧およびドレイン電圧よりも十分高くすることによって行われ、この操作により、ソース領域からフローティングゲートに電子が注入される。一方、「消去」は、ソース電圧をゲート電圧よりも十分に高くすることによって行われ、この操作により、フローティングゲートに蓄積されている電子がソース領域に引き抜かれる。消去操作が行われると、フローティングゲート下の絶縁膜は損傷を受けるので、フラッシュメモリの寿命は消去回数によって決められる。
ところで、フラッシュメモリは、ソース電極またはドレイン電極を接地し続けたままでは記憶値を書き換えることができず、全ての電圧(ソース、ドレインおよびゲート電圧)を制御しなければ記憶値を書き換えることができない。しかしながら、メモリセル毎に3つの電圧を制御すると回路が煩雑になり、装置が大型化するので、一般に複数個のメモリセルでなるセクタ単位でゲート電圧の制御が行われている。
セクタ単位でゲート電圧が制御される場合には、「書き込み」はメモリセル単位で行われるが、「消去」はセクタ単位で行われる。具体的には、ある1つのメモリセルの記憶値を0から1へと書き換える場合に、まず、そのメモリセルを含むセクタの全メモリセルの記憶が消去され、次いで、メモリセルの記憶値が1になっていることを確認するベリファイ処理が行われ、その後、記憶値を1にする必要が無かったメモリセルに0が書き込まれる。これにより、最終的には、所望のメモリセルの記憶値のみが0から1に書き換えられたことになる。
セクタ単位で消去操作が行われると、記憶値を書き換える必要がないメモリセルの記憶も消去されるので、各メモリセルの消去回数が増え、メモリセルひいてはメモリ本体の性能が劣化する。
したがって、特許文献1に開示されているように、本来のセクタとは別に予備セクタを設けておき、消去回数が少ないセクタのメモリセルにデータを記憶していくことによって、セクタ毎の消去回数のばらつきを解消する半導体記憶装置が提案されている。セクタ毎の消去回数のばらつきが解消されると、不良セクタの発生が抑制されるので、メモリ本体をより長期にわたって使用することができる。
特開2002−366420号公報(第1−21ページ、第1図)
しかしながら、セクタを単位として消去操作を行う以上、本来ならば必要がないメモリセルに対しても消去操作を行うことになるので、メモリセルに余計な損傷を与えてしまうことは避けられない。よって、如何にして不揮発性メモリのメモリ本体を長期使用できるようにするかが課題になっている。
ところで、近年、メモリセルサイズの小型化やメモリの大容量化が進んでいるため、長期使用できるならば、必要なメモリセル数が多くなるという不利益はさほど考慮しなくともよいという場面が出てくることが考えられている。特に、長期にわたって使用できるだけでなく、消去を行う際の書き換え時間を短縮できるならば、必要となるメモリセル数の増加や回路の複雑化という不利益を上回る利益が得られる場合もある。
それ故に、本発明は、記憶の書き換えによって性能が劣化する半導体記憶装置において、メモリ本体をより長期にわたって使用できる半導体記憶装置を提供することを目的としている。また、これに加えて、書き換え時間をより短縮できる半導体記憶装置を提供することも目的としている。
本発明に係る半導体記憶装置は、2以上の記憶状態を持ち、いずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置であって、複数のメモリセルで構成されて全体で1ビット分の値を記憶するデータ格納部を複数備えてなるメモリ本体と、メモリセルの記憶値を読み出す処理と、メモリセルの記憶値を書き換える処理とを行う読み出し書き換え制御部と、データ格納部が備えるメモリセルの記憶値を用いた演算でデータ格納部の記憶値を求める演算部と、演算部が求めたデータ格納部の記憶値と外部から入力された値とを比較し、一致または不一致を示す信号を出力する比較部と、比較部が不一致を示す信号を出力したときに、データ格納部の記憶値を外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定する書き換えセル決定部とを備える。
演算部は、排他的論理回路を含んでいてもよい。その場合には、各データ格納部は、3以上の奇数ビット分のデータ容量を有していればよい。
データ格納部が備えるメモリセルの個数は、データ格納部によって異なっていてもよい。
読み出し書き換え制御部は、メモリセルの記憶値をメモリセル毎に書き換える個別書き換え処理と、メモリセルの記憶値を1個以上のデータ格納部を単位として書き換える一括書き換え処理と、のいずれかを行うことによって、データ格納部の記憶値を変更するようになっていてもよい。
メモリ本体はフラッシュメモリであってもよく、その場合には、個別書き換え処理は書き込み処理であり、一括書き換え処理は消去処理となる。
メモリセルの記憶値を、0または1のうち一方の値に書き換える第1の書き換えに要する時間が、他方の値に書き換える第2の書き換えに要する時間よりも短いときに、個別書き換え処理によって前記第1の書き換えが行われ、一括書き換え処理によって第2の書き換えが行われることを特徴とする。
記憶値を変更する必要がないデータ格納部に属する、第2の書き換えを行うことができる偶数ビット分のデータ容量を有するメモリセルを判断する特定書き換えセル判断部をさらに備え、読み出し書き換え制御部は、一括書き換え処理を行うときに、特定書き換えセル判断部において判断されたメモリセルの記憶を個別に書き換えることを特徴としていてもよい。
メモリセルは、1個で複数ビット分のデータ容量を有する多値メモリセルであってもよい。
本発明に係る半導体記憶装置の書き換え処理方法は、2以上の記憶状態を持ちいずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置の書き込み処理方法であって、複数のメモリセルで構成されて全体で1ビット分の値を記憶する複数のデータ格納部の中から、外部から入力された値を記憶するものを決定し、決定されたデータ格納部を構成するメモリセルの記憶値を用いた演算でデータ格納部の記憶値を求め、演算で求めたデータ格納部の記憶値と外部から入力された値とを比較して一致の有無を判断し、判断結果が不一致であったときに、データ格納部の記憶値を前記外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定し、記憶値を変更することが決定されたメモリセルの記憶値を書き換える。
また、本発明に係るプログラムは、2以上の記憶状態を持ちいずれの記憶状態に書き換えるかによって書き換え速度または書き換えによる劣化程度が異なるメモリセルを備えた半導体記憶装置の書き換え処理を行うためのプログラムであって、複数のメモリセルで構成されて全体で1ビット分の値を記憶する複数のデータ格納部の中から、外部から入力された値を記憶するものを決定し、決定されたデータ格納部を構成するメモリセルの記憶値を用いた演算で当該データ格納部の記憶値を求め、演算で求めたデータ格納部の記憶値と外部から入力された値とを比較して一致の有無を判断し、判断結果が不一致であったときにデータ格納部の記憶値を外部から入力された値と同じ値に変更するために記憶値を変更すべきメモリセルを決定し、記憶値を変更することが決定されたメモリセルの記憶値を書き換えることをCPUに実行させる。
本発明に係る半導体装置は、記憶する1ビット分のデータを、複数ビット分のデータで表し直して記憶するので、個々のメモリセルの書き換え回数が少なくなり、メモリ本体をより長期にわたって使用することができる。
また、データ格納部にすでに記憶されている記憶値とこれから記憶する記憶値とを比較して、不一致の場合のみ書き換えを行えば、必要のない書き換えを抑制できる。これにより消去回数を減らすことができ、メモリ本体をより長期にわたって使用することができ、また、書き換え時間を短縮することもできる。
また、書き換えが頻繁に行われるデータが分かっている場合、そのデータを、メモリセルの個数が多いデータ格納部に記憶すれば、消去回数を減らすことができ、より長期にわたってメモリ本体を使用することができる。
また、1個のデータ格納部が3以上の奇数ビット分のデータ容量を有していれば、一括書き換え処理前と一括書き換え処理後とで、データ格納部の記憶値が変化するため、一括書き換え後に個別書き換え処理を行う必要がない。よって、書き換え時間を短縮することができる。
また、書き換え処理時間が長い書き換えを個別に行って、書き換え処理時間が短い書き換えを一括して行うよりも、書き換え処理時間が長い書き換えを一括して行って、書き換え処理時間が短い書き換えを個別に行う方が書き換え時間を短縮することができる。
一括書き換え処理を行っている間に他の書き換えができない場合、一括書き換え処理を行うときに、同時に特定書き換えセル判断部で判断されたメモリセルの記憶も書き換えるようにすれば、異なるタイミングで行われる書き換え処理を減らすことができる。よって、次回に一括書き換えを行うまでの時間を稼ぐことができるため、書き換え時間を短縮することができる。このときに偶数ビット分のデータの記憶値を書き換えれば、データ格納部の記憶値は変化しない。
(第1の実施形態)
図1は、本発明の第1の実施形態に係る半導体記憶装置1のブロック図である。半導体記憶装置1は、制御演算部10と、メモリ本体20とを備えている。
メモリ本体20は、電源を切った後も記憶を保持し続けられる、1ビット記憶用の不揮発性のメモリセルMC[k](kは自然数)を複数備えている。本実施形態において、メモリセルMC[k]は、半導体基板上にソース電極、ドレイン電極、フローティングゲート、およびゲート電極を備えたフラッシュメモリセルであるとして説明する。そして、フローティングゲートの電子蓄積量が所定量以上であるときの記憶値を0とし、フローティングゲートの電子蓄積量が所定量未満であるときの記憶値を1とする。なお、図1には示していないが、メモリセルMC[k]は、メモリ本体20のメモリセル配置領域にマトリックス状に配置されている。
各データ格納部B[m](mは自然数)は、3個のメモリセルMC[k]を備えている。また、3個のデータ格納部B[m]で1個のセクタS[n](nは自然数)が構成されている。同じセクタS[n]内に存在するメモリセルMC[k]は、同じワード線(電圧供給線)に接続されている。
メモリセルMC[k]の記憶値を1から0に書き換える場合、フローティングゲートに所定量以上の電荷が蓄積されるように、ゲート電極に高電圧が印加される。この書き換えは、ソースおよびドレイン電圧が個別に制御されることにより、メモリセルMC[k]単位で行われる。以下、このような書き換えを「書き込み」という。
一方、メモリセルMC[k]の記憶値を0から1に書き換える場合、フローティングゲートに蓄積されている電荷をソース領域に引き抜くために、ソース電極に高電圧が印加される。この書き換えは、セクタS[n]単位で行われる。以下、この書き換えを「消去」という。
図2は、図1に示す半導体記憶装置1のうち、制御演算部10の構成を主に示したブロック図である。また、図3〜図5は、記憶するデータが入力されたときの制御演算部10における処理を示すフローチャートである。以下、図2〜図5を用いて、半導体記憶装置1の構成および動作について説明する。
図2に示すように、制御演算部10は、読み出し制御部11、比較部12、書き換えセル決定部13、書き換え制御部14、および、論理演算部16を備えている。初期状態において、全メモリセルMC[k]の記憶値は1になっており、メモリセルMC[k]の記憶値から求められるデータ格納部B[m]の記憶値も1になっている。
図2の制御演算部10に、メモリ本体20に記憶するデータが入力されると、読み出し制御部11は、入力された1ビットデータ毎に、そのデータを記憶するデータ格納部B[m]を決定する(図3のステップS11)。読み出し制御部11は、決定したデータ格納部B[m]に含まれる3個のメモリセルMC[k]の位置を示すアドレス信号AD(k)と、読み出し命令信号Rとをメモリ本体20に出力する。
3個のメモリセルMC[k]の記憶値は、書き換えセル決定部13と論理演算部16とに読み出される。論理演算部16は、入力された1の個数が奇数である場合は1を算出し、入力された1の個数が偶数である場合には0を算出する、図示していない排他的論理和(XOR)演算回路を備えている。論理演算部16は、データ格納部B[m]の記憶値として、入力された3個のメモリセルMC[k]の記憶値の排他的論理和を求める(ステップS12)。
比較部12には、これから記憶しようとする1ビットのバイナリデータ値と、論理演算部16の演算値とが入力される。比較部12は、入力された2つの値を比較して、一致している場合(ステップS13のYES)には、データ格納部B[m]の記憶値の書き換えが不要であることを示す一致信号Caを出力し(ステップS14)、不一致の場合(ステップS13のNO)には、データ格納部B[m]の記憶値の書き換えが必要であることを示す不一致信号Cbを出力する(ステップS15)。
書き換えセル決定部13には、一致信号Caまたは不一致信号Cb、および、データ格納部B[m]を構成するメモリセルMC[k]の記憶値が入力される。書き換えセル決定部13は、一致信号Caが入力された場合、書き換えを行わないことを決定する。
一方、書き換えセル決定部13は、不一致信号Cbが入力された場合には、kが最小値kminであるメモリセルMC[kmin]の記憶値が1であるかどうかを判断する(図4のステップS20およびS21)。メモリセルMC[kmin]の記憶値が1であれば(ステップS21のYES)、書き換えセル決定部13は、メモリセルMC[kmin]に書き込みを行うことを決定する(ステップS26)。そして、図2に示すように書き換えセル決定部13は、書き込みを指示する書き込み指示信号W’を書き換え制御部14に出力し、また、書き込みを行うメモリセルMC[k]のアドレスを示すアドレス信号AD(k)をメモリ本体20に出力する。
また、メモリセルMC[kmin]の記憶値が0であれば(ステップS21のNO)、書き換えセル決定部13は、kに1を加算して(ステップS22)、加算後のkの値(具体的にはkmin+1)が、kmax以下であるかどうかを判断する(ステップS23)。ここで、kmaxは、データの書き換えを行うデータ格納部B[m]を構成するメモリセルMC[k]の中の、最大のkの値である。
kの値がkmax以下である場合には(ステップS23のYES)、書き換えセル決定部13は、メモリセルMC[k]の記憶値が1であるかどうかを判断し、1であれば(ステップS21のYES)、メモリセルMC[k]に書き込みを行うことを決定する(ステップS26)。そして、書き換えセル決定部13は、書き込みを指示する書き込み指示信号W’を書き換え制御部14に出力し、また、書き込みを行うメモリセルMC[k]のアドレスを示すアドレス信号AD(k)をメモリ本体20に出力する。
kに1を加算していくことによって、kの値がkmaxよりも大きくなった場合には(ステップS23のNO)、これは、データ格納部B[m]を構成するメモリセルMC[k]の記憶値が全て0になっていることを示している。この場合、書き換えセル決定部13は、記憶値を書き換えるデータ格納部B[m]を含むセクタS[n]に対して消去操作を行うことを決定する(4の図ステップS24)。
書き換えセル決定部13は、消去操作を行うことを決定した場合には、消去が行われるセクタS[n]に属する他のデータ格納部B[m]のメモリセルMC[k]の記憶値を読み出し、図示していない排他的論理和演算回路で、各データ格納部B[m]の記憶値を演算する。そして、記憶値が0であるデータ格納部B[m]があれば、そのデータ格納部B[m]を構成するメモリセルMC[k]のうちkの値が最小のメモリセルMC[k]に、消去操作後に書き込みを行うことを決定する(ステップS25)。
そして、書き換えセル決定部13は、消去操作を行うことを指示する消去指示信号E’を書き換え制御部14に出力し、また、消去操作を行うメモリセルMC[k]のアドレスを示すアドレス信号AD(k)をメモリ本体20に出力する。次いで、書き換えセル決定部13は、消去操作後に書き込みを行うことを指示する書き込み指示信号W’を書き換え制御部14に出力し、また、書き込みを行うメモリセルMC[k]のアドレスを示すアドレス信号AD(k)を、メモリ本体20に出力する。
図2に示す書き換え制御部14には、書き込みのタイミングを示すストローブ信号である書き込みイネーブル信号We、消去のタイミングを示すストローブ信号である消去イネーブル信号Eeも入力される。また、書き換え制御部14には、強制書き込み信号Eoおよび強制消去信号Woも入力される。
書き換え制御部14は、書き込み指示信号W’が入力されたときに、値が1の書き込みイネーブル信号Weが入力されていて、メモリセルへの書き込みが可能な状態であれば(図5のステップS31のYES)、メモリ本体20に書き込み命令信号Wを出力する(ステップS32)。
一方、書き換え制御部14は、書き込み指示信号W’が入力されたときに、値が0の書き込みイネーブル信号Weが入力されていて、メモリセルへの書き込みが不可能な状態であれば(ステップS31のNO)、書き込みが可能な状態になるのを待って(ステップS31のYES)、メモリ本体20に書き込み命令信号Wを出力する(ステップS32)。
メモリ本体20は、書き込み命令信号Wが入力されると、アドレス信号AD(k)によって指定されたメモリセルMC[k]に対して0を書き込む(ステップS33)。これにより、データ格納部B[m]の記憶値が書き換えられる。
また、書き換え制御部14は、消去指示信号E’が入力されたときに、値が1の消去イネーブル信号Eeが入力されていて、消去可能な状態であれば(ステップS34のYES)、メモリ本体20に消去命令信号Eを出力する。
一方、書き換え制御部14は、消去指示信号E’が入力されたときに、値が0の消去イネーブル信号が入力されていて、消去が可能な状態でなければ(ステップS34のNO)、消去可能な状態になるのを待って(ステップS34のYES)、メモリ本体20に消去命令信号Eを出力する(ステップS35)。メモリ本体20は、消去命令信号Eが入力されると、アドレス信号AD(k)によって指定されたメモリセルMC[k]を含むセクタS[n]に対して消去操作を行う(ステップS36)。
消去操作によって、セクタS[n]に含まれる全メモリセルMC[k]の記憶値は1になるので、この後、書き換え制御部14は、書き込みが可能な状態になるのを待って(ステップS37)、書き込み命令信号Wを出力する(ステップS38)。これにより、書き換えセル決定部13において消去後に書き込みを行うことが決定されていたメモリセルMC[k]に書き込みが行われる(ステップS39)。以上により、所望のデータ格納部B[m]の記憶値が書き換えられる。
なお、書き換え制御部14に、強制書き込み信号Woや強制消去信号Eoが入力された場合も、書き換え制御部14は、書き込みまたは消去操作を行って、メモリ本体20の記憶値を書き換える。
また、メモリ本体20に記憶されているデータを読み出す場合には、読み出し制御部11からメモリ本体20に、記憶値を読み出したいデータ格納部B[m]の3個のメモリセルMC[k]の位置を示すアドレス信号AD(k)と、読み出し命令信号Rとが入力される。そして、メモリ本体20から論理演算部16に、3個のメモリセルMC[k]の値が読み出される。論理演算部16は、入力された3値の排他的論理和を求め、求められた値を、メモリ本体20に記憶されていた値として外部に出力する。
次に、図6および図7を用いて、本実施形態に係る半導体記憶装置1と、従来の半導体記憶装置との違いを説明する。図6において、(a)の部分は、セクタS[1]を構成するデータ格納部B[1]〜B[3]の記憶値の変化を示している。また、(b)の部分は、(a)の記憶値が得られるように変化させた、メモリセルMC[1]〜MC[3]の記憶値と、データ格納部B[1]の記憶値とを示している。また、(c)および(d)の部分は、(b)の部分と同様に、(a)の記憶値が得られるように変化させた、メモリセルMC[4]〜MC[6]およびMC[7]〜MC[9]の記憶値と、データ格納部B[2]およびB[3]の記憶値とを示している。
また、図7は、図6(a)と同じ値を記憶するときに、1ビットのバイナリデータを1ビット記憶用の1個のメモリセルMC’[k]で記憶する、従来の半導体記憶装置におけるメモリセルMC’[1]〜MC’[3]の記憶値の変化を示している。なお、メモリセルMC’[1]〜MC’[3]は、同一セクタ内のメモリセルである。図7において、(a)の部分は図6(a)の部分に相当し、(b)の部分は図6(b)、(c)および(d)の部分に相当する。
図6(a)の(1)および(2)に示すように、まず、メモリ本体20の記憶値を、初期値である(111)から(010)にするために、図6(b)に示すメモリセルMC[1]と、図6(d)に示すメモリセルMC[7]とに0が書き込まれる。これにより、メモリセルMC[1]〜[3]およびMC[7]〜MC[9]の記憶値が、いずれも(011)になり、データ格納部B[1]およびB[3]の記憶値が0になる。なお、データ格納部B[2]の記憶値は、記憶するデータ値と同じ1なので、メモリセルMC[1]〜MC[3]の記憶値は書き換えられない。
次に、図6(a)の(2)および(3)に示すように、データ格納部B[1]〜B[3]の記憶値を(010)から(000)にするために、図6(c)に示すメモリセルMC[4]に0が書き込まれる。これにより、データ格納部B[2]の記憶値が0になる。
次に、図6(a)の(3)および(4)に示すように、データ格納部B[1]〜B[3]の記憶値を(000)から(001)にするために、図6(d)に示すように、メモリセルMC[8]に0が書き込まれる。これにより、データ格納部B[3]の記憶値が1になる。
次に、図6(a)の(4)および(5)に示すように、データ格納部B[1]〜B[3]の記憶値を(001)から(100)にするために、図6(b)および(d)に示すように、メモリセルMC[2]および[9]に0が書き込まれる。これにより、データ格納部B[1]の記憶値が1になり、データ格納部B[3]の記憶値が0になる。
次に、図6(a)の(5)および(6)に示すように、データ格納部B[1]〜B[3]の記憶値を(100)から(110)にするために、図6(c)に示すように、メモリセルMC[5]に0が書き込まれる。これにより、データ格納部B[2]の記憶値が1になる。
次に、図6(a)の(6)および(7)に示すように、データ格納部B[1]〜B[3]の記憶値を(110)から(100)にするために、メモリセルMC[6]に0が書き込まれる。これにより、データ格納部B[2]の記憶値が0になる。
次に、図6(a)の(7)および(8)に示すように、データ格納部B[1]〜B[3]の記憶値を(100)から(110)にするために、セクタS[1]に対して消去操作が行われる。これにより、図6(b)〜(d)に示すように、メモリセルMC[1]〜[9]の記憶が消去されて、記憶値が全て1になる。この後、メモリセルMC[1]〜MC[9]の記憶値が1になっていることを確認するベリファイ処理が行われ、次いで、データ格納部B[3]の記憶値を0にするために、図6(c)に示すようにメモリセルMC[7]に0が書き込まれる。
次に、図7を用いて従来の半導体記憶装置における書き換えを説明する。まず、図7(a)の(1)および(2)に示すように、記憶値を(111)から(010)にするために、図7(b)に示すようにメモリセルMC’[3]に0が書き込まれる。
次に、図7(a)の(2)および(3)に示すように、記憶値を(010)から(000)にするために、図7(b)に示すようにメモリセルMC’[2]に0が書き込まれる。
次に、図7(a)の(3)および(4)に示すように、記憶値を(000)から(001)にするために、まず、図7(b)に示すように、メモリセルMC’[1]〜MC’[3]の記憶が消去される。そして、メモリセルMC’[1]〜MC’[3]の記憶値が全て1になったことを確認するベリファイ処理が行われ、記憶値を1にする必要がなかったメモリセルMC’[1]およびMC’[2]に0が書き込まれる。
次に、図7(a)の(4)および(5)に示すように、記憶値を(001)から(100)にするために、図7(b)に示すように、メモリセルMC’[1]〜MC’[3]の記憶が消去される。そして、メモリセルMC’[1]〜MC’[3]の記憶値が全て1になったことを確認するベリファイ処理が行われ、記憶値を1にする必要がなかったメモリセルMC’[2]およびMC’[3]に0が書き込まれる。
次に、図7(a)の(5)および(6)に示すように、記憶値を(100)から(110)にするために、図7(b)に示すようにメモリセルMC’[1]〜MC’[3]の記憶が消去される。そして、メモリセルMC’[1]〜MC’[3]の記憶値が全て1になったことを確認するベリファイ処理が行われ、記憶値を1にする必要がなかったメモリセルMC’[3]に0が書き込まれる。
次に、図7(a)の(6)および(7)に示すように、記憶値を(110)から(100)にするために、図7(b)に示すようにメモリセルMC’[2]に0が書き込まれる。
最後に、図7(a)の(7)および(8)に示すように、記憶値を(100)から(110)にするために、まず、図7(b)に示すようにメモリセルMC’[1]〜MC’[3]の記憶が消去される。そして、メモリセルMC’[1]〜MC’[3]の記憶値が全て1になったことを確認するベリファイ処理が行われ、記憶値を1にする必要がなかったメモリセルMC’[3]に0が書き込まれる。
以上に説明した書き換えにおいて、本実施形態に係る半導体記憶装置1では、消去操作が1回だけ行われたが、従来の半導体記憶装置では、消去操作が4回も行われた。フラッシュメモリの寿命は消去回数で決まるので、本実施形態に係る半導体記憶装置1のように、記憶する1ビット分のバイナリデータを複数ビット分のバイナリデータで表し直して記憶するようにすれば、個々のメモリセルMC[k]の書き換え回数が少なくなり、メモリ本体20をより長期にわたって使用することができる。
また、消去の場合、ベリファイ処理を行う必要があることなどから、書き込みよりもデータ書き換えに時間を要するが、本実施形態に係る半導体記憶装置1を用いれば、消去回数を減らすことができるので、書き換え時間を短縮できる。
また、本実施形態に係る半導体記憶装置1では、データ格納部B[m]の記憶値と入力されたデータ値とが不一致の場合にのみ書き換えを行うので、必要のない書き換えを抑制できる。これにより、消去回数を減じることができ、メモリ本体20をより長期にわたって使用することができる。また、書き換え時間を短縮することもできる。
また、書き換えセル決定部13は、データ格納部B[m]の記憶値を書き換えるときに、メモリセルMC[k]の寿命を縮めたり書き換え時間を要したりする「消去」よりも、「書き込み」を優先的に選択する。また、例えば、書き込みを行うメモリセルMC[k]の個数が1個であるときと3個であるときとで得られるデータ格納部B[m]の記憶値が同じになる場合のように、書き換え方法が複数ある場合、書き換えセル決定部13は、書き込みを行うメモリセルMC[k]の数ができるだけ少ない書き換え方法を選択する。このように、半導体記憶装置1では、メモリ本体20の劣化原因となる処理をできるだけ行わないようにしているので、メモリ本体20をより長期にわたって使用することができる。また、消去回数を減らすことによって、書き換え時間を短縮することもできる。
なお、1つのセクタS[n]を構成するデータ格納部B[m]の個数や、1つのデータ格納部B[m]を構成するメモリセルMC[k]の個数は、上記説明に用いた個数に限定されるわけではない。半導体記憶装置1において、消去回数は、1つのセクタS[n]を構成するデータ格納部B[m]の数が少ないほど少なくなり、また、データ格納部B[n]を構成するメモリセルMC[k]の数が多いほど少なくなる。
ただし、1つのデータ格納部B[m]を構成するメモリセルMC[k]の数が偶数の場合には、メモリセルMC[k]の記憶値が全て0であるとき(消去前)と、全て1であるとき(消去後)とでデータ格納部B[m]の記憶値が同じになる。よって、セクタ単位で消去が行われる場合、1つのデータ格納部を構成するメモリセルMC[k]の数を奇数にしておけば、消去前と消去後とでのデータ格納部B[m]の記憶値が変わるために、消去後にさらに書き込みを行ってデータ格納部B[m]の記憶値を変える必要がないため、書き換え時間を短縮することができる。
なお、本実施形態ではフラッシュメモリを例に説明したが、本発明は、特に、0から1または1から0の少なくともいずれか一方の書き込み回数を減じることによってより長期の使用が可能になったり、書き込み時間の短縮化などの効果が得られたりする半導体記憶装置に対して有効である。例えば強誘電体メモリ(FeRAM;Ferroelectric Random Access Memory)は、書き換え回数、すなわち分極反転回数によって寿命が決まるので、本発明の適用により長寿命化の効果が得られる。
なお、フラッシュメモリ以外のメモリの場合でも、書き換え処理時間が長い書き換えを一括して行って、書き換え処理時間が短い書き換えを個別に行うことができれば、書き換え処理時間が短い書き換えを一括して行って、書き換え処理時間が長い書き換えを個別に行うよりも、書き換え時間を短縮することができる。
また、本実施形態では、1ビット記憶用のメモリセルを用いて説明したが、本発明に係る半導体記憶装置には、1つのメモリセルで2ビット以上のバイナリデータを記憶する多値のフラッシュメモリセルを用いてもよい。例えば1つのメモリセルで2ビットのバイナリデータを記憶する多値メモリセルの場合、1番目のメモリにおける1ビット目の記憶がメモリセルMC[1]に相当し、2ビット目の記憶がメモリセルMC[2]に相当する。そして、2番目のメモリセルにおける1ビット目の記憶がメモリセルMC[3]に相当し、2ビット目の記憶がメモリセルMC[4]に相当するという具合になる。
多値メモリセルを用いれば、1ビット記憶用のメモリセルを用いるよりも、データ格納部を構成するメモリセルの数を減らすことができる。よって、多値メモリセルを用いれば、1ビット記憶用のメモリセルを用いる場合よりも半導体記憶装置を小型化できる場合もある。なお、上記効果が得られるメモリセルで有れば、フラッシュメモリ以外の多値メモリを採用してもよく、例えば、磁気メモリ(MRAM;Magnetoresistive Random Access Memory)や強誘電体メモリ(FeRAM)などを採用してもよい。
なお、本発明に係る半導体記憶装置は、システムLSI内蔵用の半導体記憶装置等として有用である。また、FPGA(Field Programmable Gate Array)やコンフギュラブルシステムLSI等の用途にも応用できる。
なお、本発明に係る半導体記憶装置1は、メモリ本体であるカードと、カードの記憶の読み出しおよび書き換えを行う装置というように、2以上の別な構成要素でなっていてもよい。
(第2の実施形態)
図8は、本発明の第2の実施形態に係る半導体記憶装置2のブロック図である。半導体記憶装置2は、制御演算部10と、メモリ本体20aとを備えている。
メモリ本体20aは、電源を切った後も記憶を保持し続けられる、1ビット記憶用の不揮発性のメモリセルMC[k](kは自然数)を複数備えている。本実施形態でも、第1の実施形態と同様に、メモリ本体20aは、フラッシュメモリであるとして説明する。そして、フローティングゲートの電子蓄積量が所定量以上であるときのメモリセルMC[k]の記憶値を0とし、フローティングゲートの電子蓄積量が所定量未満であるときのメモリセルMC[k]の記憶値を1とする。なお、図8には示していないが、メモリセルMC[k]は、メモリ本体20aのメモリセル配置領域にマトリックス状に配置されている。なお、本実施形態に係る半導体記憶装置2の制御演算部10の構造とその動作は、第1の実施形態で説明したものと同じであるため説明を省略する。
1つのデータ格納部B[m](mは自然数)は、3個または5個のメモリセルMC[k]を備えている。例えば、データ格納部B[1]は、3個のメモリセルMC[1]〜MC[3]を備えており、データ格納部B[9]は、5個のメモリセルMC[25]〜MC[29]を備えている。また、1つのデータ格納部B[m]で1つのセクタS[n](nは自然数)が構成されている。同じセクタS[n]内に存在するメモリセルMC[k]は、同じワード線(電圧供給線)に接続されている。
次に、図9を用いて、半導体記憶装置2におけるデータの書き換えを説明する。図9(a)は、データ格納部B[1]およびB[9]における記憶値の書き換えを示している。図9(a)に示す時刻t41〜t44は、データ格納部B[1]の記憶値が1、0、1、0の順に書き換えられる時刻を示している。また、図9(a)に示す時刻t11〜t17は、データ格納部B[9]の記憶値が、1、0、1、0、1、0、1の順に書き換えられる時刻を示している。
半導体記憶装置2では、データ格納部B[m]毎にセクタS[n]が構成されているので、図9(a)に示すように、半導体記憶装置2のデータ格納部B[m]の記憶値の書き換えは、データ格納部B[m]毎に独立して行われる。
記憶値の書き換えがデータ格納部B[m]毎に行われると、あるデータ格納部B[m]の記憶を消去するときに、他のデータ格納部B[m]の記憶が消去されることがない。よって、半導体記憶装置2を用いれば、従来の記憶装置を用いた場合よりも消去回数を減らすことができるので、より長期にわたってメモリ本体20bを使用することができる。
また、半導体記憶装置2は、さらに、より長期にわたってメモリを使用することができるように、頻繁に書き換えが行われる種のデータに対して、メモリセルMC[k]の数が多いデータ格納部B[m]が割り当てられている。例えば、図9(a)に示すように、データ格納部B[9]は、データ格納部B[1]よりも頻繁に記憶値が書き換えられるので、データ格納部B[9]には、データ格納部B[1]よりも多くのメモリセルMC[k]が割り当てられている。
図9(b)は、同じ書き換えを行う場合に、5個のメモリセルMC[k]を有するデータ格納部B[9]と、3個のメモリセルMC[k]を有するデータ格納部B’[9]とでの記憶値の書き換えタイミングの違いを示している。
図9(b)に示すt11〜t17は、データ格納部B[9]における書き換え時刻を示しており、また、t11’〜t17’は、データ格納部B’[9]における書き換え時刻を示している。図9(b)に示すように、メモリセルMC[k]の個数が多いデータ格納部B[9]は、メモリセルMC[k]の個数が少ないデータ格納部B’[9]よりも遅い書き換え段階で消去が行われる。
よって、データの書き換えを繰り返した場合、メモリセルMC[k]の数が多ければ、消去回数が少なくなるために、より長期にわたってメモリ本体20を使用できる。消去が行われた場合、消去後にベリファイ処理が必要になるので、データの書き換えに、書き込みよりも長い時間を要する。よって、書き換えが頻繁に行われるデータが分かっている場合、そのデータを、メモリセルMC[k]の個数が多いデータ格納部B[m]に記憶すれば、より長期にわたってメモリを使用することができ、また、書き換え時間を短縮することができる。
なお、本実施形態においてメモリセルは、1つで多ビットを記憶できる多値メモリのメモリセルであってもよい。
(第3の実施形態)
図10は、本発明の第3の実施形態に係る半導体記憶装置3のブロック図である。半導体記憶装置3は、制御演算部10bと、メモリ本体20bとを備えている。
メモリ本体20bは、電源を切った後も記憶を保持し続けられる、1ビット記憶用の不揮発性のメモリセルMC[k](kは自然数)を複数備えている。なお、本実施形態でも、第1および第2の実施形態と同様に、メモリ本体20bはフラッシュメモリであるとして説明する。図10には示していないが、メモリセルMC[k]は、メモリ本体20bのメモリセル配置領域にマトリックス状に配置されている。
データ格納部B[m](mは自然数)は、それぞれ5つのメモリセルMC[k]を備えている。本実施形態に係る半導体記憶装置3では、セクタ毎のゲート電圧制御は行われず、メモリセルMC[k]毎に消去が行われる。
制御演算部10bは、読み出し制御部11、比較部12、書き換えセル決定部13、書き換え制御部14、および、消去セル決定部15を備えている。本実施形態において、制御演算部10bで行われる処理については、本実施形態特有の構成要素である消去セル決定部15における処理を中心に説明し、それ以外の構成要素における処理は、第1の実施形態で説明した処理と同じであるため省略する。
図11を用いて、半導体記憶装置3におけるデータの書き換えを説明する。図11において、(a)は、データ格納部B[1]における書き換えを、(b)は、データ格納部B[2]における書き換えを、(c)は、データ格納部B[7]における書き換えを、(d)は、データ格納部B[13]における書き換えを時系列で示している。
図11(a)に示すように、期間Pの間に、データ格納部B[1]の記憶値は、0、1、0、1、0の順に書き換えられる。そして、この期間Pにおける最後の書き換え後のメモリセルMC[1]〜MC[5]の記憶値は全て0になっている。そして、時刻Teに行われる次の書き換えでは、メモリセルMC[1]〜MC[5]に対して消去操作が行われる。
メモリセルMC[1]〜MC[5]はセクタを構成していないので、各メモリセルMC[k]の記憶を一つずつ消去して行くことによって、データ格納部B[m]の記憶値を変えて行くことも可能である。しかしながら、消去操作が行われている間は他の処理を行うことができないので、半導体記憶装置3では、消去によってデータ格納部B[m]の記憶値を変える場合には、そのデータ格納部B[m]内の全てのメモリセルMC[k]に対して同時に消去操作が行われる。
ところで、期間Pの間に、データ格納部B[2]の記憶値は、図11(b)に示すように、1、0、1の順に書き換えられる。そして、期間Pにおける最後の書き換え後のメモリセルMC[6]〜MC[10]の記憶値は、(00001)になっている。
また、期間Pの間に、データ格納部B[7]の記憶値は、図11(c)に示すように、1、0の順に書き換えられる。そして、期間Pにおける最後の書き換え後のメモリセルMC[31]〜MC[35]の記憶値は、(00011)になっている。
また、図11(d)に示すように、期間Pの間においてデータ格納部B[13]の記憶値は1であり、メモリセルMC[61]〜MC[65]の記憶値は、(00111)になっている。
先に説明したとおり、消去処理が行われる間には、書き込みなどの他の処理は行えない。よって、半導体記憶装置3は、データ格納部B[m]の記憶値を書き換えるために消去操作を行う場合に、記憶値を書き換える必要がないデータ格納部B[m]の一部または全部のメモリセルMC[k]に対しても消去操作を行い、これにより、異なるタイミングで行われる消去操作の回数を減らしている。
具体的には、図11(b)に示すように、時刻Teのときに、つまりデータ格納部[1]に対して消去操作が行われるタイミングで、データ格納部B[2]の、記憶値が0である4個のメモリセルMC[6]〜MC[9]に対して消去操作が行われる。これにより、メモリセルMC[6]〜MC[10]の記憶値は、(11111)になる。なお、消去操作後のデータ格納部B[2]の記憶値は、消去操作前と同じ1である。このようにデータ格納部B[m]の記憶値を変化させずに行う書き換えを、以下ではデータ更新という。
データ更新は、データ格納部B[7]およびB[13]に対しても行われる。図11(c)に示すように、時刻Teのときに、データ格納部B[7]の、記憶値が0である2個のメモリセルMC[32]およびMC[33]に対して消去操作が行われる。
また、図11(d)に示すように、時刻Teのときに、データ格納部B[13]の、記憶値が0である2個のメモリセルMC[61]およびMC[62]に対して消去操作が行われる。
以上のように、あるデータ格納部B[m]に対して消去操作を行うときに、他のデータ格納部B[m]が備える、記憶値が0である偶数個のメモリセルMC[k]に対しても消去操作を行えば、次に消去操作が行われるまでの時間を稼ぐことができ、半導体記憶装置3における書き換え時間を短縮することができる。
記憶が消去されるメモリセルMC[k]は、図10に示す消去セル決定部15で決定される。具体的には、書き換えセル決定部13において、消去によってデータ格納部B[m]の記憶値が変えられるメモリセルM[k]が決定されたときに、書き換えセル決定部13は、消去セル決定部15に信号を出力する。
消去セル決定部15は、書き換えセル決定部13から信号を受けると、メモリ本体20bの記憶値を読み出して、同時に記憶を消去するメモリセルMC[k]を決定し、書き換え制御部に消去指示信号E’を出力し、また、消去するメモリMC[k]のアドレス信号をメモリ本体20bに出力する。
書き換え制御部14は、消去指示信号E’を受けると、消去可能なタイミングで、メモリ本体20bに消去命令信号Eを出力する。消去命令信号Eを受けたメモリ本体20では、指定されたアドレスのメモリセルMC[k]に対して、同時に消去操作が行われる。
半導体記憶装置3は、記憶値を変える必要がないデータ格納部に対して「データ更新」を行うことによって、異なるタイミングで行われる消去操作を減らすことができ、書き換え時間を短縮することができる。よって、半導体記憶装置3によれば、より高速な書き込みを実現することができる。なお、本実施形態に係る半導体記憶装置3のメモリ本体20bの寿命は、第1の実施形態に係るメモリ本体の寿命よりも若干短くなるおそれもあるが、1ビットデータ値を複数ビットデータ値で表し直して記憶しているので、従来のメモリ本体の寿命よりは長くなる。
なお、消去セル決定部15は、周期的な書き換えを伴う種のデータであるかどうかということや、次の書き換えまでの時間、書き換え頻度等を考慮して、記憶を消去する適当なメモリセルMC[k]を決定する。
なお、図11(c)では、データ格納部B[7]のメモリセルMC[31]〜MC[35]のうち、直前に0を書き込んだ2つのメモリセルMC[32]およびMC[33]に対して消去操作を行ったが、消去操作が行われるメモリセルは、どのメモリセルMC[31]〜MC「33」であってもよい。つまり、消去操作前(データ更新前)と消去操作後(データ更新後)とでデータ格納部B[m]の記憶値が同じになっていればよい。書き換え時間を短縮するためにデータ更新が行われる場合でも、特定のメモリセルMC[k]に対して集中して消去操作が行われなければ、各メモリセルにおける平均消去回数は極端に増加せず、メモリ本体20bを長期にわたって使用することができる。
なお、第1の実施形態では、書き換えセル決定部13は、同じセクタS[n]に属する、消去操作後に書き込みを行うメモリセルMC[k]を決定するために、メモリ本体20からメモリセルMC[k]の記憶値を読み出し、データ格納部B[m]の記憶値を演算した。しかしながら、本実施形態に係る半導体記憶装置3では、セクタS[n]が構成されていないので、書き換えセル決定部13は、消去後に書き込みを行う必要はない。
(第4の実施形態)
図12は、第1の実施形態で説明した半導体記憶装置の書き換え処理と同じ処理を実行するプログラム備えた半導体装置のブロック図である。この半導体装置は、CPU30、記憶部40およびメモリ本体20bを備えている。CPU30とメモリ本体20bとはハードウェアで結線されるか、または、FPGA(Field Programmable Gate Array)を介して接続の変更が可能になっている。メモリ本体20bは、第1の実施形態で説明したものと同じであり、その詳細な説明は省略する。メモリ本体20bが備える各メモリセルMC[k]には、アドレスAD(k)が付されている。
記憶部40はメモリ本体20bの記憶を書き換える際にCPU30が参照する制御演算プログラムや制御用データを格納した、書き換え対象ではないメモリである。ここで、制御演算プログラムは、通常の読み出しプログラムである読み出し制御プログラムP1、書き換えセルを決定する書き換えセル決定プログラムP2、メモリセルMC[k]の記憶書き換え制御を実行する書き換え制御プログラムP3、データ比較を行う比較プログラムP4、読み出しデータを計算する論理演算プログラムP5を含んでいる。読み出し制御プログラムP1、書き換えセル決定プログラムP2、書き換え制御プログラムP3、比較プログラムP4および論理演算プログラムP5は、それぞれ、第1の実施形態で説明し図2に示した読み出し制御部11、書き換えセル決定部13、書き換え制御部14、比較部12および論理演算部16が実行する処理と同じ処理を実行するためのプログラムである。また、制御用データは、制御演算プログラムの実行に必要なデータを含んでいる。
CPU30は、記憶するデータが入力された際に、記憶部40が保持するプログラムを読み出して、以下に説明する図3および図13のフローチャートに示した処理を実行する。CPU30が出力するアドレス信号の上位7ビットは、読み出し指示信号R、書き込み指示信号W、消去指示信号E、強制消去信号Eo、強制書き込み信号Wo、消去イネーブル信号Eeおよび書込イネーブル信号Weであり、残りの25ビットは記憶を書き換えるメモリセルMC[k]のアドレス信号AD(k)である。初期状態において、全メモリセルMC[k]の記憶値は1になっており、メモリセルMC[k]の記憶値から求められるデータ格納部B[m]の記憶値も1になっている。
メモリ本体20bに記憶するデータが半導体装置に入力されると、CPU30は読み出し制御プログラムP1を実行して、入力された1ビットデータ毎にそのデータを記憶するデータ格納部B[m]を決定する(図3のステップS11)。
次にCPU30は、決定したデータ格納部B[m]を構成するq個(qは奇数であって、図12ではq=3)のメモリセルMC[k]の記憶値を用いて論理演算プログラムP2を実行し、データ格納部B[m]の記憶値としてq個のメモリセルMC[m]の記憶値の排他的論理和(XOR)を求める(ステップS12)。より具体的には、「1」を記憶するメモリセルMC[k]の個数が奇数である場合には「1」が、偶数である場合には「0」がデータ格納部B[m]の記憶値として算出される。
データ格納部B[m]の記憶値が算出されると、CPU30は比較プログラムP4を実行して、これから記憶しようとする1ビットのバイナリデータ値と、求めた記憶値とを比較する。そして、一致している場合(ステップS13のYES)には、データ格納部B[m]の記憶値の書き換えが不要とであり(ステップS14)、この場合には書き換えは行わない。一方、不一致の場合には(ステップS13のNO)、データ格納部B[m]の記憶値の書き換えが必要であるとなる(ステップS15)。
書き換えが必要である場合には、CPU30は、書き換えセル決定プログラムP2を実行して、記憶値を書き換えるメモリセルMC[k]を決定する。具体的には、まず、kが最小値kminであるメモリセルMC[kmin]の記憶値が1であるかどうかを判断する(図13のステップS20およびS21)。メモリセルMC[kmin]の記憶値が1であれば(ステップS21のYES)、書き換えセル決定部13は、メモリセルMC[kmin]に書き込みを行うことを決定する(ステップS26)。
また、メモリセルMC[kmin]の記憶値が0であれば(ステップS21のNO)、kに1を加算して(ステップS22)、加算後のkの値(具体的にはkmin+1)が、kmax以下であるかどうかを判断する(ステップS23)。ここで、kmaxは、データの書き換えを行うデータ格納部B[m]を構成するメモリセルMC[k]の中の、最大のkの値である。
kの値がkmax以下である場合には(ステップS23のYES)、CPU30はメモリセルMC[k]の記憶値が1であるかどうかを判断し、1であれば(ステップS21のYES)、メモリセルMC[k]に書き込みを行うことを決定する(ステップS26)。
kに1を加算することによってkの値がkmaxよりも大きくなった場合には(ステップS23のNO)、データ格納部B[m]を構成するメモリセルMC[k]の記憶値が全て0になっていることになる。この場合には、書き換えセル決定部13は、記憶値を書き換えるデータ格納部B[m]を含むセクタS[n]に対して消去操作を行うことを決定する(4の図ステップS24)。
CPU30は、消去操作を行うことを決定した場合には、読み出し制御プログラムP1を実行して消去を行うセクタS[n]に属する他のデータ格納部B[m]からメモリセルMC[k]の記憶値を読み出す。そして、CPU30は、論理演算プログラムP5を実行して各データ格納部B[m]の記憶値を演算する。そして、記憶値が0であるデータ格納部B[m]があれば、そのデータ格納部B[m]を構成するメモリセルMC[k]のうちkの値が最小のメモリセルMC[k]に、消去操作後に書き込みを行うことを決定する(ステップS25)。
そして、CPU30は、決定した消去および/または書き込みを実行するための読み出し指示信号R、書き込み指示信号W、消去指示信号E、強制消去信号Eo、強制書き込み信号Wo、消去イネーブル信号Ee、書込イネーブル信号Weおよびアドレス信号AD(k)を出力する(ステップS27)。これにより、所望のデータ格納部B[m]の記憶値が書き換えられる。
また、メモリ本体20bに記憶されているデータを読み出す場合には、CPU30は、読み出しプログラムP1を実行して、記憶値を読み出したいデータ格納部B[m]からq個のメモリセルMC[k]の記憶値を読み出す。次に、CPU30は、論理演算プログラムP5を実行して、読み出したq個の値の排他的論理和を求め、求められた値を、メモリ本体20bに記憶されていた値として外部に出力する。
第1の実施形態で説明した半導体記憶装置と同様に、本実施形態に係るプログラムを実行することによって、メモリ本体20bをより長期にわたって使用でき、また、書き換え時間を短縮できるといった効果を得ることができる。
なお、第3の実施形態で説明した処理を行うためには、記憶部40が、図10に示した消去セル決定部15と同じ処理を実行するための消去セル決定プログラムP6を備えていればよい。そして、図13のステップS24で消去操作を行うことを決定した後に、消去セル決定プログラムP6を実行して、その他のメモリセルMC[m]の中から、同時に消去を行うことが望ましいメモリセルMC[m]を特定すればよい。ここで、同時に記憶の消去を行うことが望ましいメモリセルMC[m]かどうかは、周期的な書き換えを伴う種のデータであるかどうかということや、次の書き換えまでの時間、書き換え頻度等を考慮して判断されるようになっていればよい。
本発明に係る半導体記憶装置は、不揮発性記憶装置として有用であり、より具体的には、システムLSI内蔵用等の半導体記憶装置としても有用である。また、FPGAやコンフギュラブルシステムLSI等の用途にも応用できる。
本発明の第1実施形態に係る半導体記憶装置のブロック図
制御演算部の詳細な構成を示すブロック図
制御演算部における処理を示すフローチャート
図3の続図
図4の続図
書き換えによるメモリセルMC[k]およびデータ格納部B[m]の記憶値の変化を示した図
従来の半導体記憶装置における書き換えによる記憶値の変化を示した図
本発明の第2の実施形態に係る半導体記憶装置のブロック図
データ格納部B[1]、B[9]およびB’[9]における記憶値の変化を時系列で示した図
本発明の第3の実施形態に係る半導体記憶装置のブロック図
書き換え処理を説明するための図
本発明の第4の実施形態に係るプログラムを実行する半導体装置のブロック図
図3の続図であって、プログラムの実行によって行われる処理を示すフローチャート
符号の説明
1 半導体記憶装置
2 半導体記憶装置
3 半導体記憶装置
10 制御演算部
10a 制御演算部
10b 制御演算部
11 読み出し制御部
12 比較部
13 書き換えセル決定部
14 書き換え制御部
15 消去セル決定部
16 論理演算部
20 メモリ本体
20a メモリ本体
20b メモリ本体