(57)【特許請求の範囲】
【請求項１】
複数のメモリセルからなるメモリセルアレイ、並びに、当該メモリセルアレイに対して書込データの書込動作を実行する書込回路を有するデータ記憶部と、
情報データから前記書込データを生成した上で前記書込回路に前記メモリセルアレイに対する当該書込データの書込動作を実行させるエンコーダと、
規定回数内の前記書込動作によって前記メモリセルアレイに対する前記書込データの書き込みの成功又は失敗を判定し、失敗の場合、前記書込データを反転させた新たな書込データを生成した上で前記書込回路に前記メモリセルアレイに対して当該新たな書込データの書込動作を実行させる書込判定回路と、
前記書込判定回路による判定が失敗であった場合、前記メモリセルから読み出された読出データを反転させた新たな読出データを生成するスイッチ回路と、
前記メモリセルアレイから読み出された前記読出データを前記スイッチ回路を介して入力した上で当該読出データから前記情報データを復元するデコーダと
を備えることを特徴とする不揮発性半導体メモリ。
【請求項２】
一の前記書込データの長さは、前記書込動作の際に、所定ビット数のエラーが一定程度現れるビット長に基づいて予め設定される
ことを特徴とする請求項１記載の不揮発性半導体メモリ。
【請求項３】
前記書込判定回路の判定結果は、前記データ記憶部に記録される
ことを特徴とする請求項１又は２記載の不揮発性半導体メモリ。
【請求項４】
前記書込判定回路の判定結果は、当該判定結果に基づいて生成されたパリティ情報が付加された上で記録される
ことを特徴とする請求項１〜３のいずれか１項記載の不揮発性半導体メモリ。
【請求項５】
前記メモリセルが１つ以上の抵抗可変膜を具備しており、前記抵抗可変膜の抵抗状態変化において、低抵抗状態から高抵抗状態、若しくは、高抵抗状態から低抵抗状態のどちらか一方の変化が、他方に比べて困難である
ことを特徴とする請求項１〜４のいずれか１項記載の不揮発性半導体メモリ。
【請求項６】
前記抵抗可変膜が、カーボンナノチューブ、フラーレン、その他の立体構造を有する炭素材料である炭素系ナノマテリアルからなる
ことを特徴とする請求項５記載の不揮発性半導体メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、不揮発性半導体メモリに関する。
【背景技術】
【０００２】
近年、フラッシュメモリの後継となる不揮発性半導体メモリの候補として、電圧パルスを印加することで抵抗が変化する抵抗可変膜をメモリセルに用い、メモリセルの抵抗状態（不揮発性）を‘０’／‘１’のデータに対応させることで、メモリ動作を行うＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）が注目されている。
【０００３】
このＲｅＲＡＭは、抵抗可変膜に電圧パルスを印加することで、メモリセルの抵抗状態を変化させるという簡単な動作のため、１つの抵抗可変膜と１つの電流整流素子（１つの抵抗可変膜を選択するために必要）とを組み合わせたメモリセルを、碁盤目状に配置した上部、下部の配線のクロスポイント部に配置するクロスポイント型のメモリセルアレイを、形成することが可能である。このようなクロスポイント型のメモリセルアレイは、１メモリセルあたりの占有面積を小さくできるため、より大容量のメモリセルの高集積化を図れるものとして期待されている。
【０００４】
しかし、ＲｅＲＡＭへの適用が検討されている抵抗変化膜の中には、その特性上、低抵抗状態から高抵抗状態への変化、或いは、高抵抗状態から低抵抗状態への変化のどちらかが困難であるものも存在する。抵抗可変膜をメモリセルに用いたＲｅＲＡＭにおいては、抵抗可変膜の抵抗が、低抵抗状態から高抵抗状態へ、或いは、高抵抗状態から低抵抗状態へ変化することは、メモリセルへのデータの書き込み、或いは、消去に相当する。このため、低抵抗状態から高抵抗状態への変化、或いは、高抵抗状態から低抵抗状態への変化のどちらかが困難である抵抗変化膜を用いる場合、高抵抗状態、或いは、低抵抗状態を不揮発に保持することに加えて、データの書き込み、消去の観点からも、メモリ動作の信頼性を十分に確保する工夫が必要である。
【０００５】
例えば、データの書き込み、或いは、消去が規定回数以内に成功しなかった場合、そのメモリセルへのデータの書き込み、或いは、消去を諦め、データの読み出し（デコード）時に、従来用いられているＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）により、データを訂正する方法も考えられる。しかし、書き込んだ、或いは、消去したデータを保持している際に、データが反転してしまうエラーの訂正に加えて、データ書き込み、或いは、消去時に発生するエラーの訂正をも可能とするには、従来以上に高いエラー訂正能力を有したECCが必要となる。一般に、ＥＣＣのエラー訂正能力は、本来記憶したいデータとは別に、エラー訂正を可能とするようパリティデータをより多く記憶することで高められる。しかしながら、パリティデータの増大は、本来記憶したいデータを記憶するための実効的な記憶容量を減少させるため、好ましくない。
【０００６】
そのため、低抵抗状態から高抵抗状態への変化、或いは、高抵抗状態から低抵抗状態への変化のどちらかが困難である抵抗可変膜をメモリセルに用いたＲｅＲＡＭにおいては、データ書き込み、或いは、消去時に発生するエラーの訂正をも可能とするような、従来よりも高いエラー訂正能力を実現しつつも、如何に、パリティデータの増大を抑制するかが問題となる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−２３０７９６号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
抵抗可変膜をメモリセルに用いたＲｅＲＡＭにおいて、抵抗可変膜が特性上、低抵抗状態から高抵抗状態への変化、或いは、高抵抗状態から低抵抗状態への変化のどちらかが困難である場合に、データ書き込み、或いは、消去時に発生するエラーの訂正をも可能とするような、従来よりも高いエラー訂正能力を実現しつつ、パリティデータの増大を抑制することを目的とする。
【課題を解決するための手段】
【０００９】
実施形態に係る不揮発性半導体メモリは、複数のメモリセルからなるメモリセルアレイ、並びに、当該メモリセルアレイに対して書込データの書込動作を実行する書込回路を有するデータ記憶部と、情報データから前記書込データを生成した上で前記書込回路に前記メモリセルアレイに対する当該書込データの書込動作を実行させるエンコーダと、規定回数内の前記書込動作によって前記メモリセルアレイに対する前記書込データの書き込みの成功又は失敗を判定し、失敗の場合、前記書込データを反転させた新たな書込データを生成した上で前記書込回路に前記メモリセルアレイに対して当該新たな書込データの書込動作を実行させる書込判定回路と、前記書込判定回路による判定が失敗であった場合、前記メモリセルから読み出された読出データを反転させた新たな読出データを生成するスイッチ回路と、前記メモリセルアレイから読み出された前記読出データを前記スイッチ回路を介して入力した上で当該読出データから前記情報データを復元するデコーダとを備える。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るメモリセルアレイの等価回路とメモリセルの構造を説明する図である。
【図２】実施形態に係る半導体記憶装置のブロック図である。
【図３】実施形態に係る半導体記憶装置のエンコーダのブロック図である。
【図４】実施形態に係る半導体記憶装置のデコーダのブロック図である。
【図５】実施形態に係る半導体記憶装置のデータ書き込み時のフローチャートである。
【図６】実施形態に係る半導体記憶装置のデータ読み出し時のフローチャートである。
【図７】実施形態及び比較例に係る半導体記憶装置における書込データ長とパリティデータ長との関係を示すグラフである。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら実施形態に係る半導体記憶装置について説明する。
【００１２】
実施形態に係る半導体記憶装置は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を用いた符号誤り訂正機能を有している。
先ず、実施形態に係る半導体記憶装置のメモリセルアレイの一例を説明しておく。
【００１３】
図１中Ａは、実施形態に係るメモリセルアレイＭＡの一部を示す等価回路図であり、図１中Ｂは、図１中Ａに示すメモリセルＭＣの一部を示す構造図である。
【００１４】
メモリセルアレイＭＡは、図１中Ａに示すように、複数のワード線ＷＬ、これら複数のワード線ＷＬに交差する複数のビット線ＢＬ、並びに、これら複数のワード線ＷＬ及びビット線ＢＬの各交差部に設けられた複数のメモリセルＭＣを備える。
【００１５】
メモリセルＭＣは、直列接続された可変抵抗素子ＶＲ、及び、電流整流素子１００からなる。このメモリセルＭＣは、可変抵抗素子ＶＲの抵抗値の違いによってデータを記憶する。すなわち、例えば、可変抵抗素子ＶＲの抵抗値の大きさによって、‘０’／‘１’のデータを規定する。また、可変抵抗素子ＶＲの抵抗値は、可変抵抗素子ＶＲに対して所定の電圧を所定の時間印加することで変化させることができる。
【００１６】
以下において、可変抵抗素子ＶＲの抵抗値が低抵抗である状態を「セット状態」、高抵抗である状態を「リセット状態」と呼ぶこともある。また、高抵抗状態の可変抵抗素子ＶＲを低抵抗状態に遷移させる動作を「セット動作」、低抵抗状態の可変抵抗素子ＶＲを高抵抗状態に遷移させる動作を「リセット動作」と呼ぶこともある。更に、セット動作及びリセット動作させることを「書込動作」と呼ぶこともある。
【００１７】
可変抵抗素子ＶＲは、図１中Ｂに示すように、下部電極、上部電極、並びに、これら上部電極及び下部電極に挟まれた抵抗可変膜を備える。
抵抗可変膜としては、まず広く研究、開発されている、ニッケル酸化物（ＮｉＯ）を始めとした二元系金属酸化物や、ストロンチウムジルコニウム酸化物（ＳｒＺｒＯ３）を始めとして多元系金属酸化物が挙げられる。しかし、金属酸化物は組成や結晶構造を制御して作製することが難しく、組成や結晶構造の制御性の低さに起因すると考えられる抵抗変化膜の電気特性不安定性やばらつきが大きく、再現性良く所望の電気特性を得ることが困難という欠点もある。
炭素系材料もまた抵抗変化層の候補として材料探索や作製方法の検討がなされている。炭素系材料は、単一の炭素で構成されるため、組成の制御は比較的容易でプロセス条件の依存性が少なく、制御しやすいメリットがある。
しかし、炭素膜は高温高圧で作製しない限り、黒鉛、所謂、グラファイト構造が容易に形成されるため、電気抵抗率は低い。電気抵抗率が低すぎると、電気抵抗状態を変化させる際にメモリセルに流れる電流が大きくなり、消費電力も大きくなる。また抵抗状態の変化は、膜の炭素の結合状態（ｓｐ３結合とｓｐ２結合）の違いに起因するとも考えられており、結合状態を変えるためには大電流が必要であることが予想され、抵抗変化に必要な電流の低減が困難である可能性がある。
一方、同じ炭素系膜の中でも炭素系ナノマテリアルもまた、抵抗変化メモリ素子の一候補である。炭素系ナノマテリアルとは、カーボンナノチューブ、フラーレン、その他の立体構造を有する炭素材料の総称である。この炭素系ナノマテリアルを積層した層では、均質膜として形成されるバルク膜と異なり、微細チューブが積み上げられた間隙の多い立体構造であるが故に、電流パスが空間的に制限される。従って、炭素系ナノマテリアル自体が導電体であっても、炭素系ナノマテリアル層を流れる電流は少なく、炭素系ナノマテリアル層の電気抵抗状態を変化させる際に必要な電流を下げることが可能である。
詳細な炭素系ナノマテリアル層の抵抗変化のメカニズムは明らかではないが、上述のような炭素系ナノマテリアル特有の電流制限機構により、炭素系ナノマテリアルを使った抵抗変化型メモリは、電気抵抗状態を変化させる際に必要な電流を低減できる可能性があるため、注目を集めている。
上述のような理由から、抵抗可変膜として、炭素系ナノマテリアルを使うことが望ましい。
また、下部電極、上部電極に関しては、熱に強く、且つ、抵抗値の低い材料が望ましく、例えばタングステン（Ｗ）、チタン（Ｔｉ）、窒化タングステン（ＷＮ）、窒化チタン（ＴｉＮ）、タングステンシリサイド（ＷＳｉ）、ニッケルシリサイド（ＮｉＳｉ）、コバルトシリサイド（ＣｏＳｉ）等を用いることができる。
【００１８】
電流整流素子１００は、電圧・電流特性において所定の電流整流特性を有すれば、材質、構造等は、特に限定されない。電流整流素子１００としては、例えば、ポリシリコン（Ｐｏｌｙ−Ｓｉ）で作製したダイオードが挙げられる。ダイオードの一例としては、不純物を含有するｐ型層及びｎ型層を備えるＰＮ接合ダイオードが用いられる。また他にも、ダイオードとして、ＰＮ接合ダイオードのほかに、ショットキーダイオードや、ｐ型層及びｎ型層の間に不純物を含有しないｉ層を挿入したＰＩＮダイオード等の各種ダイオード、パンチスルーダイオード等を用いることもできる。また、選択されたメモリセルＭＣの可変抵抗素子ＶＲに所望の電圧、電流が供給できるような電流整流特性を得られるように、電流整流素子１００に用いられる材料として、シリコン（Ｓｉ）以外に、シリコンゲルマニウム（ＳｉＧｅ）、ゲルマニウム（Ｇｅ）等の半導体、半導体と金属の混晶、酸化物等の絶縁体を用いることも可能である。
【００１９】
可変抵抗素子ＶＲの抵抗可変膜として炭素系ナノマテリアルを用いた場合、発明者等の独自の研究開発に結果によると、可変抵抗素子ＶＲは、リセット動作は容易に起こるものの、セット動作が困難であるという特徴を持つ。そのため、可変抵抗素子ＶＲをセット動作させるには、書込動作を繰り返し実行する必要がある。但し、書込動作を繰り返し実行することは、当然、データ書き込みの処理時間の増大を招くことになる。
【００２０】
そこで、可変抵抗素子ＶＲがセット動作しにくいことに起因するデータ書き込み処理時間の増大を回避するため、予め定めた規定回数の書込動作を繰り返しても可変抵抗素子ＶＲがセット動作しなかった場合、書込動作を中止するという手法を採ることがある。そうすることで、データ書き込みの処理時間を抑制することができる。また、搭載したＥＣＣによる符号誤り訂正能力の範囲であれば、データ読み出し（デコード）時に、本来書き込まれるべき正しいデータを復元することができるため、メモリ動作の信頼性は確保される。
【００２１】
しかし、上述のように、書き込み動作を規定回数繰り返しても可変抵抗膜ＶＲがセット動作しなかった場合、書込動作を中止し、データ読み出し（デコード）時に、ＥＣＣにより正しいデータを復元するという手法においては、元々必要としていた、書き込んだデータを不揮発に保持するデータ保持特性を保証するためのパリティデータに加えて、セット動作が困難な可変抵抗素子ＶＲに対する書込動作時に発生する書き込みエラーを保証するためのパリティデータも必要となる。この場合、本来記憶したい情報データに対するパリティデータの割合が増大してしまい、半導体記憶装置の実効的な記憶容量が損なわれることになる。
【００２２】
ところで、従来のＥＣＣを用いた符号誤り訂正では、エンコードによりデータを符号化してから、データの読み出し（デコード）により、情報データを復元するまでの、どの箇所でデータが反転するようなエラーが発生したかを明らかにすることなく、ＥＣＣの符号誤り訂正により、情報データを復号処理していた。つまり、従来のＥＣＣを用いた符号誤り訂正では、データ反転エラーが発生する箇所が考慮されていないと言える。
【００２３】
以下では、データ反転エラーが発生する箇所を考慮した手法によって効率の良い符号誤り訂正を実現する。特に断りがない限り、炭素系ナノマテリアルからなる可変抵抗素子ＶＲを用いた半導体記憶装置のように、書込動作時にエラーが生じ易い半導体記憶装置において有効である。
【００２４】
以下では、特に断りがない限り、炭素系ナノマテリアルからなる可変抵抗素子ＶＲを用いた半導体記憶装置において、１ビットのエラー訂正が可能なハミング符号を用いた場合を例に説明する。
【００２５】
また、メモリセルアレイＭＡに書き込むデータを「書込データ」、メモリセルアレイＭＡが記憶するデータを「記憶データ」、メモリセルＭＡから読み出したデータを「読出データ」と呼ぶことにする。したがって、メモリセルアレイＭＡに対する書込動作実行からメモリセルアレイＭＡに対する読出動作実行までの間にエラーが生じなかった場合、書込データ、記憶データ及び読出データは、同じになる。
【００２６】
図２は、実施形態に係る半導体記憶装置のブロック図である。
この半導体記憶装置は、データを記憶するデータ記憶部１０、外部入力された情報データから書込データを生成するエンコーダ２０、並びに、データ記憶部１０に対して書込データが書き込まれたかを判定する書込判定回路であるセット判定回路３０を備える。
【００２７】
データ記憶部１０は、図１に示すメモリセルアレイＭＡの他、データ記憶部１０外から入力された書込データをメモリセルアレイＭＡに書き込む書込回路ＷＲＣ、並びに、メモリセルアレイＭＡが記憶する記憶データを読み出し、読出データとしてデータ記憶部１０外に出力する読出回路ＲＤＣを備える。
【００２８】
エンコーダ２０は、外部から入力された情報データを1ビットのエラー訂正が可能なハミング符号に符号化する回路である。
【００２９】
図３は、エンコーダ２０のブロック図の例であり、４ビットの情報データから３ビットのパリティデータを含む書込データを生成する回路である。
【００３０】
このエンコーダ２０は、例えば１クロック毎に、第１入力に情報データが入力されるＸＯＲゲートＧ１、フィードバックされたＸＯＲゲートＧ１の出力を保持する遅延フリップフロップＤ１、第１入力に遅延フリップフロッップＤ１の出力が入力され、第２入力にＸＯＲゲートＧ１の出力が入力されるＸＯＲゲートＧ２、ＸＯＲゲートＧ２の出力を保持する遅延フリップフロップＤ２、遅延フリップフロップＤ２の出力を保持する遅延フリップフロップＤ３を備える。この遅延フリップフロップＤ３の出力は、ＸＯＲゲートＧ２の第２入力に入力される。また、ＸＯＲゲートＧ１の出力がエンコーダ２０の出力となる。なお、上記遅延フリップフロップは、１クロック毎に、保持しているデータを出力し、新しく入力されるデータを保持する機能を有する。
【００３１】
以上の構成によるエンコーダ２０は、生成多項式をＧ（ｘ）＝ｘ３＋ｘ＋１とするハミング符号の符号化回路となっている。
【００３２】
このエンコーダ２０に入力される４ビットの情報データは、そのまま書込データの１〜４ビット目として出力されると同時に、ＸＯＲゲートＧ１、Ｇ２及び遅延フリップフロップＤ１〜Ｄ４からなるシフトレジスタに入力される。シフトレジスタでは、生成多項式Ｇ（ｘ）による情報データの割り算がなされ、その剰余がパリティデータとして遅延フリップフロップＤ１〜Ｄ３に保持される。そして、この遅延フリップフロップＤ１〜Ｄ３に保持されたパリティデータは、書込データの５〜７ビット目として順次出力される。
【００３３】
なお、上記では例として、４ビットの情報データの場合について説明したが、１つの書込データの長さは、1つの書込データにおいて、書込動作時、及び、データ保持期間中において、それぞれ高々1ビットのビット反転誤りが発生する程度の長さに予め設定しておく。
【００３４】
このエンコーダ２０から出力された書込データは、データ記憶部１の書込回路ＷＲＣに入力され、書込回路ＷＲＣによってメモリセルアレイＭＡに書き込まれる。
【００３５】
セット判定回路３０は、書込データに基づいてセット動作すべき可変抵抗素子ＶＲが正常にセット動作したか（以下、「成功」ともいう）を確認する回路である。また、予め定められた規定回数の書込動作によっても可変抵抗素子ＶＲがセット動作しなかった場合（以下、「失敗」ともいう）、エンコーダ２０で生成された書込データの‘０’／‘１’を反転させた上で、新たな書込データとして書込回路ＷＲＣに送信する。そして、可変抵抗素子ＶＲが正常にセット動作したか否かを示す書込エラー情報をデータ記憶部１０（例えば、図２中点線で示すメモリセルアレイＭＡの特定領域）に記憶させる。
【００３６】
この書込エラー情報は、書込データとは別に、例えば、メモリセルアレイＭＡの所定のアドレス領域に記憶される。この書込エラー情報は、メモリセルＭＣが正常にセット動作したか否かを示すだけなので、‘０’／‘１’の１ビットデータで足りる。
【００３７】
なお、この書込エラー情報自身の信頼性を確保するためには、例えば、書込エラー情報にパリティデータを付加したハミング符号として保存しておくことが好ましい。この場合、書込エラー情報は、‘１１１’（‘１’の場合）又は‘０００’（‘０’の場合）の３ビットのデータとなる。
【００３８】
また、図２では、書込判定回路としてセット判定回路３０を用いたが、リセット動作困難なメモリセルＭＣを用いた半導体記憶装置の場合には、このセット判定回路３０に替えて、メモリセルＭＣが正常にリセット動作したことを確認するリセット判定回路を用いても良い。
【００３９】
更に、本実施形態に係る半導体記憶装置は、書込エラーの有無を判定する書込エラー有無判定回路４０、書込エラーが有った場合に読出データを反転させるスイッチ部５０、並びに、読出データから情報データを復元するデコーダ６０を備える。
【００４０】
書込エラー有無判定回路４０は、データ記憶部１０に記憶されている書込エラー情報を取得し、書込エラーの有無を判定し、その判定結果である書込エラー有無情報をスイッチ部５０に送信する。
【００４１】
スイッチ部５０は、図４に示すように、書込エラー有無判定回路４０から入力された書込エラー有無情報によって制御されるスイッチＳＷ１と読出データを反転させるインバータＩＶ１を備える。書込エラーが有った場合、読出回路ＲＤＣから出力された読出データは、インバータＩＶ１を介してビット毎に反転された上でデコーダ６０に送信される。一方、書込エラーが無かった場合、読出回路ＲＤＣから出力された読出データがそのままデコーダ６０に送信される。
【００４２】
デコーダ６０は、スイッチ部５０から出力された読出データの符号誤り訂正を行い、正しい情報データを復元させる回路であり、図４に示すブロック図は、その一例である。
【００４３】
このデコーダ６０は、第１入力にスイッチ部５０から出力された読出データが入力されるＸＯＲゲートＧ１、ＸＯＲゲートＧ１の出力を保持する遅延フリップフロップＤ１、第１入力に遅延フリップフロップＤ１の出力が入力されるＸＯＲゲートＧ２、ＸＯＲゲートＧ２の出力を保持する遅延フリップフロップＤ２、遅延フリップフロップＤ２の出力を保持する遅延フリップフロップＤ３を備える。この遅延フリップフロップＤ３の出力は、ＸＯＲゲートＧ１の第２入力及びＸＯＲゲートＧ２の第２入力にそれぞれフィードバックされる。
【００４４】
また、デコーダ６０は、スイッチ部５０から出力された読出データが入力される７単位時間遅延回路Ｄ４、７単位時間遅延回路Ｄ４の出力を保持する遅延フリップフロップＤ５、正論理の第１入力、負論理の第２入力及び負論理の第３入力にそれぞれ遅延フリップフロップＤ１、Ｄ２及びＤ３の出力が入力される３入力のＡＮＤゲートＧ３、並びに、第１入力に遅延フリップフロップＤ５の出力が入力され、第２入力にＡＮＤゲートＧ３の出力が入力されるＸＯＲゲートＧ４を備える。なお、７単位時間遅延回路Ｄ４は、７個の遅延フリップフロップを直列接続した回路である。また、ＸＯＲゲートＧ４の出力がデコーダ６０の出力となる。なお、上記遅延フリップフロップは、１クロック毎に、保持しているデータを出力し、新しく入力されるデータを保持する機能を有する。
【００４５】
以上の構成によるデコーダ６０は、生成多項式をＧ（ｘ）＝ｘ３＋ｘ＋１とするハミング符号の復号化回路となっている。
【００４６】
次に、上記構成によるデータの書き込みを図５に示すフローを用いて説明する。
始めに、ステップＳ１１では、エンコーダ２０が、外部から入力された情報データＤｉからパリティデータを含む書込データＤｗを生成する。この書込データＤｗは、エンコーダ２０からデータ記憶部１０の書込回路ＷＲＣに送信される。
【００４７】
続いて、ステップＳ１２では、書込回路ＷＲＣが、メモリセルアレイＭＡに対して書込データＤｗの書込動作を実行する。
【００４８】
続いて、ステップＳ１３では、セット判定回路３０が、書込回路ＷＲＣによる書込動作によってメモリセルＭＣが正常にセット動作したかを確認する。その結果、正常にセット動作した場合、以下のステップＳ１７に処理を移す。一方、正常にセット動作しなかった場合、予め決められた規定回数を限度として、ステップＳ１２の書込動作を繰り返し実行する（ステップＳ１４）。書込動作の繰り返し回数が規定回数以内で、書込データＤｗの書込動作を実行できた場合には、ステップS17に移行する。
【００４９】
一方、ステップＳ１４では、書込動作の繰り返し回数が規定回数に達しても書込動作が完了しない場合、ステップＳ１５において、セット判定回路３０が、書込データＤｗを反転させた新たな書込データ／Ｄｗを生成し、書込回路ＷＲＣに送信する。このように書込データＤｗを反転させることで、セット動作困難な可変抵抗素子ＶＲをセット動作する必要がなくなる。
【００５０】
続いて、ステップＳ１６では、書込回路ＷＲＣが、メモリセルアレイＭＡに対して書込データ／Ｄｗの書込動作を実行する。この書込動作は書込データ／Ｄｗが正常に書き込まれるまで繰り返し実行しても良い。
【００５１】
最後に、ステップＳ１７において、セット判定回路３０が、書込データＤｗの書込動作の結果に基づいて、書込データＤｗを書き込んだが、反転させた新たな書込データ／Ｄｗを書き込んだかの情報を生成し、データ記憶部１０に記憶しておく。
以上によって、メモリセルアレイＭＡへのデータ書き込みが完了する。
【００５２】
次に、データの読み出しを図６に示すフローを用いて説明する。
始めに、ステップＳ２１では、データ記憶部１０の読出回路ＲＤＣが、メモリセルアレイＭＡが保持する記憶データを読み出し、読出データＤｒとしてスイッチ部５０に送信する。
【００５３】
続いて、ステップＳ２２において、データ記憶部１０の読出回路ＲＤＣが、例えばメモリセルアレイＭＡの特定領域に記憶された書込エラー情報を読み出し、書込エラー有無判定回路４０に送信する。
【００５４】
続いて、ステップＳ２３において、書込エラー有無判定回路４０が、書込エラー情報から、書込データＤｗを書き込んだが、反転させた新たな書込データ／Ｄｗを書き込んだかを判定し、その判定の結果を書込エラー有無情報としてスイッチ部５０に送信する。
【００５５】
続いて、スイッチ部５０が、書込エラー有無情報に基づいて、読出データＤｒを処理する。ここで、書込エラーが無かった場合、読出回路ＲＤＣから入力された読出データＤｒはそのままデコーダ６０に送信される。一方、書込エラーが有った場合、ステップＳ２４において、スイッチ部５０で読出データＤｒを反転させた読出データ／Ｄｒが生成されデコーダ６０に送信される。
【００５６】
最後に、ステップＳ２５において、デコーダ６０が、読出データＤｒ或いは／Ｄｒから情報データＤｉを復元する。
【００５７】
以上によって、メモリセルアレイＭＡからのデータ読み出しが完了する。
【００５８】
次に、本実施形態に係る半導体記憶装置の符号誤り訂正の効率を、比較例の符号誤り訂正の効率と比較しながら説明する。
【００５９】
図７は、実施形態（図中の“Ｅｍｂｏｄｉｍｅｎｔ”）及び比較例（図中の“Ｃｏｍｐａｒｉｓｏｎ  ｅｘａｍｐｌｅ”）における、書込データ長とパリティデータ長との関係を示すグラフである。書き込みデータ長が同じであれば、パリティデータ長が短い方が、より多くのメモリ容量を本来記憶したい情報データの記憶にあてがえるため、好ましい。なお、このグラフは、符号反転エラー発生頻度が、所定の書込データ長のデータ書き込み、及び、読み出みをする場合において、書込動作時、及び、データ保持期間中に、それぞれ高々１ビットのビット反転誤りが発生する程度であることを条件としてプロットされている。
【００６０】
なお、本実施形態では、書込データを符号化する際、１ビットの符号誤り訂正が可能なハミング符号を利用する場合を想定している。一方、比較例では、ＥＣＣとして現在良く用いられている２ビットの符号誤り訂正が可能なＢＣＨ符号を利用した場合を想定している。
【００６１】
図７から、本実施形態によれば、如何なる書込データ長（図７中の“Ｌｅｎｇｔｈ  ｏｆ  Ｃｏｄｅ  Ｗｏｒｄｓ”）であっても、比較例と比べて、パリティデータ長（図７中の“Ｎｕｍｂｅｒ  ｏｆ  Ｐａｒｉｔｙ  Ｂｉｔｓ”）が短いことが分かる。
【００６２】
例えば、書込データ長を２０４７ビットとした場合を見てみると、比較例では、情報データが２０２５ビットに対し、バリティデータが２２ビット必要となる。
【００６３】
これに対し、本実施形態では、情報データが２０３６ビットに対し、パリティデータが１１ビットしか必要ない。ハミング符号化された書込エラー情報の３ビットを考慮しても、パリティデータは１４ビットに留まる。
【００６４】
以上、本実施形態によれば、書込エラーを他のエラーと別途取り扱うことで、比較例の符号誤り訂正と比べて、パリティデータの低減を図ることができる。したがって、より高効率な符号誤り訂正を実現した半導体記憶装置を提供することができる。
【００６５】
［その他］
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６６】
１０・・・データ記憶部、２０・・・エンコーダ、３０・・・セット判定回路（書込判定回路）、４０・・・書込エラー有無判定回路、５０・・・スイッチ回路、６０・・・デコーダ、１００・・・電流整流素子。
【図１】
0005458064.tif 000002
【図２】
0005458064.tif 000003
【図３】
0005458064.tif 000004
【図４】
0005458064.tif 000005
【図５】
0005458064.tif 000006
【図６】
0005458064.tif 000007
【図７】
0005458064.tif 000008