"複数の第1配線、前記第1配線に交差する複数の第2配線、並びに、前記複数の第1配線及び第2配線の交差部に設けられた複数のメモリセルからなるメモリセル層を有するメモリセルアレイと、前記メモリセルにデータを書き込み、前記メモリセルからデータを読み出すアクセス回路とを備え、前記メモリセルは、積層された複数のセルユニットを有し、前記セルユニットの異なる抵抗状態によってデータを記憶し、前記セルユニットは、第1極性の電圧が印加されると前記抵抗状態が高抵抗状態から低抵抗状態に遷移し、前記第1極性と異なる第2極性の電圧が印加されると前記抵抗状態が抵抵抗状態から高抵抗状態に遷移し、前記第1極性における電圧-電流特性と前記第2極性における電圧-電流特性とが非対象であり、前記メモリセルは、前記セルユニットである第1セルユニット及び第2セルユニットを積層させた構造を持ち、前記第1セルユニット及び前記第2セルユニットが共に低抵抗状態である第1状態、前記第1セルユニット及び第2セルユニットの一方が低抵抗状態であり他方が高抵抗状態である第2状態、並びに、前記第1セルユニット及び第2セルユニットが共に高抵抗状態である第3状態を有し、前記アクセス回路は、前記メモリセルへのデータの書き込みの際、前記メモリセルを前記第1状態に遷移させる初期状態設定を実行し、前記メモリセルに前記第2状態又は前記第3状態を設定する場合、前記初期状態設定の実行後、更に、前記メモリセルを前記第2状態に遷移させる第2状態設定を実行し、前記メモリセルに前記第3状態を設定する場合、前記第2状態設定の実行後、更に、前記メモリセルを前記第3状態に遷移させる第3状態設定を実行し、前記アクセス回路は、前記メモリセルからのデータの読み出しの際、前記メモリセルが前記第1状態か否かを判定する第1状態判定を実行し、前記メモリセルが前記第1状態ではない場合、前記第1状態判定の実行後、第2状態の前記メモリセルを第1状態に遷移させる破壊読み出しによって当該メモリセルが前記第2状態か否かを判定する第2状態判定を実行し、前記破壊読み出しによって前記メモリセルが前記第2状態から前記第1状態に遷移した場合、前記第2状態判定の実行後、前記メモリセルを前記第2状態に遷移させる第2状態再設定を実行し、前記メモリセルである第1メモリセル及び第2メモリセルによってペアセルを構成し、前記ペアセルは、前記第1メモリセル及び第2メモリセルの前記第1状態乃至前記第3状態からなる9通りの組み合わせに剰余体Zppは素数7の各要素を対応付けてデータを記憶し、6組の前記ペアセル単位で、エラー訂正可能なコードを記憶し、前記ペアセルは、前記第1メモリセル及び第2メモリセルの前記第2状態及前記第3状態からなる4通りの組み合わせに、剰余体Zppは素数7の隣り合う2つの要素を重複させて対応付けることを特徴とする半導体記憶装置。複数の第1配線、前記第1配線に交差する複数の第2配線、並びに、前記複数の第1配線及び第2配線の交差部に設けられた複数のメモリセルからなるメモリセル層を有するメモリセルアレイを備え、前記メモリセルは、積層された複数のセルユニットを有し、前記セルユニットの異なる抵抗状態によってデータを記憶し、前記セルユニットは、第1極性の電圧が印加されると前記抵抗状態が高抵抗状態から低抵抗状態に遷移し、前記第1極性と異なる第2極性の電圧が印加されると前記抵抗状態が抵抵抗状態から高抵抗状態に遷移し、前記第1極性における電圧-電流特性と前記第2極性における電圧-電流特性とが非対象であることを特徴とする半導体記憶装置。前記メモリセルは、前記セルユニットである第1セルユニット及び第2セルユニットを積層させた構造を持ち、前記第1セルユニット及び前記第2セルユニットが共に低抵抗状態である第1状態、前記第1セルユニット及び第2セルユニットの一方が低抵抗状態であり他方が高抵抗状態である第2状態、並びに、前記第1セルユニット及び第2セルユニットが共に高抵抗状態である第3状態を有することを特徴とする請求項2記載の半導体記憶装置。前記メモリセルにデータを書き込むアクセス回路を備え、前記アクセス回路は、前記メモリセルを前記第1状態に遷移させる初期状態設定を実行し、前記メモリセルに前記第2状態又は前記第3状態を設定する場合、前記初期状態設定の実行後、更に、前記メモリセルを前記第2状態に遷移させる第2状態設定を実行し、前記メモリセルに前記第3状態を設定する場合、前記第2状態設定の実行後、更に、前記メモリセルを前記第3状態に遷移させる第3状態設定を実行することを特徴とする請求項3記載の半導体記憶装置。前記メモリセルにデータを書き込むアクセス回路を備え、前記アクセス回路は、前記メモリセルを前記第2状態に遷移させる初期状態設定を実行し、前記メモリセルに前記第1状態を設定する場合、前記初期状態設定の実行後、更に、前記メモリセルを前記第1状態に遷移させる第1状態設定を実行し、前記メモリセルに前記第3状態を設定する場合、前記初期状態設定の実行後、更に、前記メモリセルを前記第3状態に遷移させる第3状態設定を実行することを特徴とする請求項3記載の半導体記憶装置。前記メモリセルからデータを読み出すアクセス回路を備え、前記アクセス回路は、前記メモリセルが前記第1状態か否かを判定する第1状態判定を実行し、前記メモリセルが前記第1状態ではない場合、前記第1状態判定の実行後、第2状態の前記メモリセルを第1状態に遷移させる破壊読み出しによって当該メモリセルが前記第2状態か否かを判定する第2状態判定を実行し、前記破壊読み出しによって前記メモリセルが前記第2状態から前記第1状態に遷移した場合、前記第2状態判定の実行後、前記メモリセルを前記第2状態に遷移させる第2状態再設定を実行することを特徴とする請求項3~5のいずれか1項記載の半導体記憶装置。前記メモリセルである第1メモリセル及び第2メモリセルによってペアセルを構成し、前記ペアセルは、前記第1メモリセル及び第2メモリセルの前記第1状態乃至前記第3状態からなる9通りの組み合わせに剰余体Zppは素数7の各要素を対応付けてデータを記憶することを特徴とする請求項3~5のいずれか1項記載の半導体記憶装置。6組の前記ペアセル単位で、エラー訂正可能なコードを記憶することを特徴とする請求項7記載の半導体記憶装置。前記ペアセルは、前記第1メモリセル及び第2メモリセルの前記第2状態及前記第3状態からなる4通りの組み合わせに、剰余体Zppは素数7の隣り合う2つの要素を重複させて対応付けることを特徴とする請求項8記載の半導体記憶装置。不良率が低いメモリセルを用いた半導体記憶装置を提供することを目的とする。実施形態に係る半導体記憶装置は、複数の第1配線、前記第1配線に交差する複数の第2配線、並びに、前記複数の第1配線及び第2配線の交差部に設けられた複数のメモリセルからなるメモリセル層を有するメモリセルアレイを備え、前記メモリセルは、積層された複数のセルユニットを有し、前記セルユニットの異なる抵抗状態によってデータを記憶し、前記セルユニットは、第1極性の電圧が印加されると前記抵抗状態が高抵抗状態から低抵抗状態に遷移し、前記第1極性と異なる第2極性の電圧が印加されると前記抵抗状態が抵抵抗状態から高抵抗状態に遷移し、前記第1極性における電圧-電流特性と前記第2極性における電圧-電流特性とが非対象であることを特徴とする。以下、図面を参照しながら実施形態に係る半導体記憶装置について説明する。[半導体記憶装置の概要]図1は、実施形態に係る半導体記憶装置の構成図である。この半導体記憶装置は、メモリセルアレイ1を備える。メモリセルアレイ1は、複数積層されたメモリセルマットMMメモリセル層を有する。各メモリセルマットMMは、複数のビット線BL第1配線及び複数のワード線WL第2配線と、これらワード線WL及びビット線BLで選択されるメモリセルMCを有する。メモリセルマットMMのビット線BLには、ビット線BLを制御し、メモリセルMCのデータ消去、メモリセルMCへのデータ書き込み及びメモリセルMCからのデータ読み出しをするカラム制御回路2が電気的に接続されている以下において、メモリセルMCのデータ消去及びメモリセルMCへのデータ書き込みをまとめて書き込み動作と呼び、メモリセルMCからのデータ読み出しを読み出し動作と呼ぶ。また、書き込み動作及び読み出し動作をまとめてアクセス動作と呼ぶ。カラム制御回路2には、アクセス動作に必要な電圧をビット線BLに供給するビット線ドライバ2 ́と、読み出し動作時にメモリセルMCに流れる電流を検知増幅してメモリセルMCが記憶するデータを判定するセンスアンプSAを有する。一方、メモリセルマットMMのワード線WLには、アクセス動作時にワード線WLを選択するロウ制御回路3が電気的に接続されている。ロウ制御回路3は、アクセス動作に必要な電圧をワード線WLに供給するワード線ドライバ3 ́を有する。なお、このロウ制御回路3は、カラム制御回路2と共にアクセス回路に含まれる。図2は、メモリセルアレイ1の一部を示す斜視図である。メモリセルアレイ1は、クロスポイント型のメモリセルアレイである。メモリセルアレイ1のメモリセルマットMMは、平行に配設された複数のビット線BLと、これらビット線BLと交差する方向に平行に配設された複数のワード線WLを有する。ビット線BL及びワード線WLの各交差部には、両配線に挟まれるようにメモリセルMCが設けられている。メモリセルアレイ1は、前述の通り、このような複数のメモリセルマットMMが多層に積層されており、上下に隣接するメモリセルマットMM同士は、ワード線WL或いはビット線BLを共有している。図2の場合、メモリセルアレイ1の最下層のメモリセルマットMM0と、このメモリセルマットMM0の上に隣接するメモリセルマットMM1は、ビット線BL00~BL02を共有している。なお、以下において、例えば、ビット線BL00、BL10及びBL20のように、各メモリセルマットMMにおける同じ位置に配設されたビット線BLのまとまりをビット線グループと呼ぶ。同様に、ワード線WL00及びWL10のように、各メモリセルマットMMにおける同じ位置に配設されたワード線WLのまとまりをワード線グループと呼ぶ。また、1つのビット線グループ及び1つのワード線グループの交差部に配置されたメモリセルMCのまとまりをメモリセルグループと呼ぶ。以上説明したクロスポイント型のメモリセルアレイ1の場合、ビット線ドライバ2 ́、センスアンプSA、ワード線ドライバ3 ́、バスBUS等の周辺回路は、図3に示すように、メモリセルアレイ1の直下のシリコン基板に形成可能であり、これによって、この半導体記憶装置のチップ面積は、ほぼメモリセルアレイ1の面積に等しくすることができる。[セルユニットの特性]ここでは、実施形態に係るメモリセルMCを構成するセルユニットについて説明する。図4中Aは、セルユニットCUの回路記号を示す図であり、図4中Bは、セルユニットCUの電圧-電流特性を示す図である。以下では、図4中Aに示すノードNaをアノード、ノードNcをカソードと呼ぶことにする。また、図4中Aの矢印で示されたアノードNaからカソードNcに向かう方向を順方向、その逆の方向を逆方向と呼ぶ。したがって、アノードNaよりもカソードNcの電圧が小さいバイアスが順方向バイアス第1極性となり、アノードNaよりもカソードNcの電圧が大きいバイアスが逆方向バイアス第2極性となる。セルユニットCUは、可変抵抗素子からなり、この可変抵抗素子の異なる抵抗状態によってデータを記憶する。以下では、可変抵抗素子が高抵抗状態であるセルユニットCUの状態をリセット状態、可変抵抗素子が低抵抗状態であるセルユニットCUの状態をセット状態と呼ぶ。また、リセット状態のセルユニットCUをセット状態に遷移させる動作をセット動作、セット状態のセルユニットCUをリセット状態に遷移させる動作をリセット動作と呼ぶ。したがって、書き込み動作は、セット動作及びリセット動作を含むものである。このセルユニットCUは、個体電解質の性質を有する。これは、図4中Bに示すように、バイアスの方向印加電圧の極性によって電圧-電流特性が非対称となる性質である。図4中Bから分かるように、セルユニットCUの電圧-電流特性は、印加電圧V=0の近傍を除いて、セル電流は、I~AexpαVA、αは定数で近似することができる。リセット状態のセルユニットCUに順方向バイアスをかけた場合、リセット状態のセルユニットCUに逆方向バイアスをかけた場合及びセット状態のセルユニットCUに逆方向バイアスをかけた場合の係数αは同程度となる。これに対して、セット状態のセルユニットCUに順方向バイアスをかけた場合の係数αは格段に大きくなる。なお、印加電圧V=0の近傍では、lnIは、±∞になる。リセット状態のセルユニットCUに順方向バイアスをかけた場合、印加電圧Vが0V近傍からセット電圧Vsetまでの範囲では、セルユニットCUはリセット状態のままであり、セルユニットCUに流れるセル電流Iは印加電圧Vの変化に応じて可逆的に変化する矢印a0。そして、印加電圧Vがセット電圧Vset以上になると、セルユニットCUの状態は、リセット状態からセット状態に非可逆的に遷移するセット動作矢印a1。一方、セット状態のセルユニットCUに順方向バイアスをかけた場合、セルユニットCUに流れるセル電流Iは印加電圧Vの変化に応じて可逆的に変化する矢印a2。しかし、セット状態のセルユニットCUは、順方向バイアスをかけている限り、印加電圧Vを大きくしていってもリセット状態に遷移しない。リセット状態のセルユニットCUに逆方向バイアスをかけた場合、セルユニットCUに流れるセル電流Iは印加電圧Vの変化に応じて可逆的に変化する矢印a3。しかし、リセット状態のセルユニットCUは、逆方向バイアスをかけている限り、印加電圧Vを大きくしていってもセット状態に遷移しない。一方、セット状態のセルユニットCUに逆方向バイアスをかけた場合、印加電圧が0Vからこの逆方向バイアスが0Vから電圧-Vreset以下では、Vresetを、リセット電圧と呼ぶまでの範囲では、セルユニットCUはセット状態のままであり、セルユニットCUに流れるセル電流Iは印加電圧Vの変化に応じて可逆的に変化する矢印a3。そして、印加電圧Vが電圧-Vreset以下になると、セルユニットCUの状態は、セット状態からリセット状態に非可逆的に遷移するリセット動作。[比較例に係る半導体記憶装置のアクセス動作]ここでは、実施形態に対する比較例となる半導体記憶装置のアクセス動作について説明する。この比較例に係る半導体記憶装置のメモリセルMC ́は、図4を用いて説明したセルユニットCUを1個で構成する。図5は、比較例のメモリセルアレイの一部であり、メモリセルグループMGの等価回路図である。比較例に係るメモリセルMC ́を用いて三次元構造を有するクロスポイント型のメモリセルアレイを構成する場合、図5に示すように、メモリセルMCの上下が1層毎に反転するように、メモリセルマットMMを積層させる。例えば、メモリセルマットMM0のメモリセルMC ́020と、メモリセルマットMM0の上に隣接するメモリセルマットMM1のメモリセルMC ́120は、メモリセルマットMM0及びMM1が共有するビット線BL00を挟んで上下が反転して配置されている。これは、上下に隣接するメモリセルマットMMで、ビット線BL或いはワード線WLを共有させる場合でも、全てのメモリセルマットMMにおいて、ビット線BLからワード線WLに向かう方向が順方向となるようにメモリセルMC ́を設けるためである。以上、セルユニットCUの特性と、このセルユニットCUが1個で構成された比較例に係るメモリセルMC ́を用いた場合のメモリセルアレイの構造について説明した。しかし、セルユニットCU比較例の場合、メモリセルMC ́自体は、セット電圧Vsetの過印加等があった場合、逆方向の電圧-電流特性以下、リバース特性と呼ぶが、図4中Bの一点鎖線で示すように、順方向の電圧-電流特性以下、フォワード特性と呼ぶとほぼ同じ状態になることがある。このようなリバース特性になったセルユニットCUは、セルユニットCUのアノードNaに対するカソードNcの電圧が正の場合と負に場合で、同じ電流立ち上がりを示す。このように変化したセルユニットCUの特性は、そのグラフの形状がチョウのハネの様な形状となる。そこで、以下では、このようにセルユニットCUの特性が変化することをバタフライ化と呼ぶ。バタフライ化したセルユニットCUの特性は、逆方向バイアスを掛けた場合の電流特性の係数をαrev、セット動作時の電流特性の係数をαsetとすると、αrev~αsetで表わすことができる。つまり、バタフライ化したセルユニットCUは、本来持つべき非対称性の電圧-電流特性が損なわれた状態となる。このように、セルユニットCU比較例の場合、メモリセルMC ́自体がバタフライ化した場合、アクセス動作時において問題が生じてしまう。そこで、次は、この問題を説明する前提として、比較例に係るアクセス動作について説明する。比較例に係るアクセス動作では、メモリセルマットMMの所定のメモリセルMC ́を選択する際、この選択メモリセルMC ́に接続されたビット線BL及びワード線WLにアクセス動作に必要な電圧を印加すると共に、他のビット線BL及びワード線WLをフローティング状態にする。ここで、フローティング状態とは、外部から一定電圧を印加していない状態をいう。したがって、アクセスしないメモリセルMC ́に接続されたビット線BL及びワード線WLのいずれか一方がをフローティング状態となる。以下では、選択メモリセルに接続されたビット線を選択ビット線、選択メモリセルに接続されたワード線を選択ワード線、選択メモリセルに接続されていないビット線を非選択ビット線、選択メモリセルに接続されていないワード線を非選択ワード線、非選択ビット線及び非選択ワード線の少なくとも一方に接続されたメモリセルを非選択メモリセルと呼ぶこともある。始めに、この方法によって、選択メモリセルMC ́にアクセスできる根拠について説明する。なお、メモリセルMC ́セルユニットCUのアノード側にはビット線BL、カソード側にはワード線WLが接続されているものとする。したがって、ビット線BLに高電圧、ワード線WLに低電圧を印加すると、メモリセルMC ́に順方向バイアスがかかる。比較例の場合、ビット線BL及びワード線WLは、上下に隣接するメモリセルマットMMで共有されている。所定のメモリセルマットMMのメモリセルMC ́を1つ選択する場合、この選択メモリセルMC ́をクロスポイントに持つ選択ビット線BL、選択ワード線WLをビット線ドライバ2 ́、ワード線ドライバ3 ́でドライブさせるが、この時にメモリセルアレイ1に生じる電流パスは次のようになる。つまり、選択ビット線BL及び選択ワード線WLの交差部のメモリセルMC ́が選択されると、ビット線BL及びワード線WLが上下に隣接するセルアレイマットMMで上下逆に使用されていることから、選択ビット線BLから選択ワード線WLに向かう電流パスは、選択メモリセルMC ́を通る電流パスを除き、最低3つの非選択メモリセルMC ́を通る以下では、非選択メモリセルMC ́を3つだけ通る最短の電流パスを最短電流パスと呼ぶこともある。この場合、最短電流パスが2番目に通る非選択メモリセルMC ́には逆方向バイアスがかかる。例えば、図6に示すメモリセルアレイ1の場合、ビット線BL21及びワード線WL11の交差部にあるメモリセルMC ́211を選択メモリセルとする場合について考える。選択ビット線BL21を電位Us、選択ワード線WL11を電位Usよりも低い電位Wsに設定する。ここで、電圧Us-Wsは、メモリセルMC ́のアクセス動作に必要な電圧である。この時、選択ビット線BL21から選択ワード線WL11に向けて、いくつかの電流パスができる。電流パスP0は、選択メモリセルMC ́211を介して選択ビット線BL21から選択ワード線WL11に向かう電流パスである。この電流パスP0によって、選択メモリセルMC ́211には、電圧Us-Ws程度の順方向バイアスがかかる。電流パスP1は、非選択メモリセルMC ́221、MC ́121及びMC ́111を介して選択ビット線BL21から選択ワード線WL11に向かう最短電流パスである。この電流パスP1によって、メモリセルMC ́121には、逆方向バイアスがかかる。そのため、メモリセルMC ́221及びMC ́111には、電圧Us-Wsよりも小さい電圧しか印加されない。また、電流パスP2は、メモリセルMC ́321、MC ́322及びMC ́212を介して選択ビット線BL21から選択ワード線WL11に向かう最短電流パスである。この電流パスP2によって、メモリセルMC ́322には、逆方向バイアスが加わる。そのため、メモリセルMC ́321及びMC ́212には、電圧Us-Wsよりも小さい電圧しか印加されない。つまり、全ての非選択メモリセルMC ́には、選択メモリセルMC ́に印加される電圧よりも小さい電圧しか印加されないことが保証される。非選択メモリセルMC ́に印加される電圧は、ビット線ドライバ2 ́及びワード線ドライバ3 ́から選択ビット線BL及び選択ワード線WL間に印加された電圧が複数の非選択メモリセルMC ́によって分圧された電圧であり、セルアレイマットMMの場所毎に自己整合的に決まる。従来のクロスポイント型のメモリセルアレイの場合、非選択メモリセルに対して一定のバイアスをかけることで、非選択メモリセルへの誤ったアクセス動作を回避していた。この場合、最短電流パスの中間点が固定電圧となる。そのため、メモリセルマット内で配置された場所によっては、非選択メモリセルにかなり大きなバイアスがかかる。その結果、自己整合的な状況が破壊され、非選択メモリセルには、強制的にセル電流が流されることになる。その点、比較例の場合、非選択ビット線BL及び非選択ワード線WLをフローティング状態にする。これによって、選択ビット線BL及び選択ワード線WLに設定される電位のみ固定され、この状況において、メモリセルアレイ1は、非選択メモリセルMC ́に流れる総セル電流が最低になるような電圧分布に自己整合的に落ち着く。その結果、アクセス動作時のメモリセルアレイ1の消費電流を従来の半導体記憶装置に比べて小さくすることができる。以下では、このようなアクセス動作の方式をフローティングアクセス方式と呼ぶ。次に、フローティングアクセス方式によるメモリセルMC ́へのアクセス手順について説明する。ここでは、簡単な例として、3×3のメモリセルマットMMを積層させたメモリセルアレイ1を対象とし、メモリセルマットMM2のビット線BL21及びワード線WL11の交差部に設けられたメモリセルMC ́211にアクセスする場合について説明する。比較例に係る半導体記憶装置の動作には、前述のアクセス動作の他、メモリセルMC ́のデータを維持するホールド動作がある。図7は、ホールド動作時のメモリセルアレイ1のバイアス状態を示す図である。ホールド動作では、全てのビット線BL及びワード線WLを接地電位程度の電位Vsに設定する。その結果、いずれのメモリセルMC ́にもバイアスは掛からず、メモリセルMC ́の抵抗状態は維持される。続いて、アクセス動作について説明する。アクセス動作には、前述の通り、書き込み動作と読み出し動作があり、更に書き込み動作には、セット動作及びリセット動作がある。比較例に係るアクセス動作は、アクティブスタンバイフェーズ及びアクセスフェーズからなるアクセスシーケンスによって実現される。図8は、アクセス動作のアクティブスタンバイフェーズ時のメモリセルアレイ1のバイアス状態を示す図である。アクティブスタンバイフェーズでは、メモリセルアレイ1の全てのビット線BL及びワード線WLを所定の電位Vに設定する。この電位Vは、書き込み動作セット動作及びリセット動作及び読み出し動作で異なる値を取る。書き込み動作の場合、電位Vは、セット電位Vset、リセット電位Vreset、或いはそれらに近い電位Vdの半分程度にあたる電位~Vset/2、~Vreset/2、或いは~Vd/2となる。一方、読み出し動作の場合、電位Vは、アクセス電位Vaccと同程度の電位となる。なお、アクセス電位Vaccは、読み出し動作時に選択ビット線BLに設定する電位であり、セット電位Vset及びリセット電位Vresetよりも小さく、メモリセルMCの状態が遷移しない程度の電位である。このアクティブスタンバイ状態でも、ホールド状態と同様、いずれのメモリセルMC ́にもバイアスは掛からない。図9は、読み出し動作のアクセスフェーズ時のメモリセルアレイ1のバイアス状態を示す図である。読み出し動作のアクセスフェーズでは、選択ビット線BL21をクセス電位Vacc、選択ワード線WL11を電位Vsに設定する一方、非選択ビット線BL及び非選択ワード線WLをフローティング状態にする。図9では、フローティング状態のビット線BL及びワード線WLの電位をV~で表わしている。なお、アクセス電位Vaccは、セット電位Vsetやリセット電位Vresetよりも小さく、メモリセルMCの状態が遷移しない程度のレベルである。アクティブスタンバイフェーズにおいて全てのビット線BL及びワード線WLは、予め電位V=Vaccに設定されている。そのため、選択ビット線BL21からフローティング状態の非選択ビット線BL及び非選択ワード線WLに対して充電されることはない。その結果、選択ビット線BL21には、選択メモリセルMC ́211のデータに応じたセル電流が素早く現れる。この選択ビット線BL21に流れるセル電流をセンスアンプSAで検知することで選択メモリセルMC ́211の状態セット状態又はリセット状態を判定することができる。メモリセルMC ́のセット状態、リセット状態は、それぞれ‘0’、‘1’に対応しているため、メモリセルMC ́の状態を判定すれば選択メモリセルMC ́211の記憶データを読み出すことができる。フローティング状態電位V~のビット線BL及びワード線WLの電位は、メモリセルアレイ1におけるメモリセルMCの配置場所に応じて自己整合的に所定の値に落ち着くが、その過程において、非選択メモリセルMCにも電流が流れる。この非選択メモリセルMCに流れる電流は、大別して間接順方向電流、間接逆方向電流に分類することができる。最短電流パスを流れる電流が途中の非選択メモリセルを順方向に通過する場合、この非選択メモリセルを間接順方向電流が流れるメモリセルと言い、最短電流パスを流れる電流が途中の非選択メモリセルを逆方向に通過する場合、この非選択メモリセルを間接逆方向電流が流れるメモリセルと言う。図9では、選択メモリセルMCの流れるセル電流を白抜き矢印、間接順方向電流が流れる非選択メモリセルMCを実線矢印、間接逆方向電流が流れる非選択メモリセルMCを点線矢印でそれぞれ示している。白抜き矢印、実線矢印及び点線矢印は、いずれも電流が流れる向きも示している。例えば、非選択メモリセルMC ́201、MC ́202及びMC ́212を介して選択ビット線BL21から選択ワード線WL11に向かう最短電流パスP0について見ると、非選択メモリセルMC ́201及びMC ́212に間接順方向電流が流れ、非選択メモリセルMC ́202に間接逆方向電流が流れることになる。つまり、選択ビット線BL21又は選択ワード線WL11に接続された非選択メモリセルMC ́に間接順方向電流が流れ、これら間接順方向電流が流れるメモリセルMC ́と同じ非選択ビット線BL又は非選択ワード線WLに接続された非選択メモリセルMC ́に間接逆方向電流が流れることが分かる。また、間接順方向電流又は間接逆方向電流が流れる非選択メモリセルMC ́は、選択メモリセルMC ́211が属するメモリセルマットMM2並びに、このメモリセルマットMM2の上下に隣接するメモリセルマットMM1及びMM3の範囲にのみ存在し、メモリセルマットMM2に隣接しないメモリセルマットMM0には存在しないことが分かる。図10は、セット動作のアクセスフェーズ時のメモリセルアレイ1のバイアス状態を示す図である。セット動作のアクセスフェーズでは、選択ビット線BL21をセット電位Vset、選択ワード線WL11を電位Vsに設定する一方、非選択ビット線BL及び非選択ワード線WLはフローティング状態とする。アクティブスタンバイフェーズにおいて全てのビット線BL及びワード線WLは、予め電位V=~Vset/2に設定されている。そのため、放電電流が選択ワード線WL11に集中せず、充電電流として選択ビット線BL21にも供給される。また、ビット線ドライバ2 ́から遠く、ワード線ドライバ3 ́に近い場所の非選択メモリセルMC ́に対して、過渡的にでもセット電圧Vsetに近い電圧が印加されるのを防ぐことができる。フローティング状態電位V~のビット線BL及びワード線WLは、メモリセルアレイ1におけるメモリセルMC ́の位置によって自己整合的に所定の電圧に落ち着くが、その過程において、非選択メモリセルMC ́にも電流が流れる点については、読み出し動作のアクセスフェーズと同じである。但し、電位Vの値が異なるため、メモリセルアレイ1のバイアス状態と電流の過渡的な変化は異なる。図11は、リセット動作のアクセスフェーズ時のメモリセルアレイ1のバイアス状態を示す図である。リセット動作のアクセスフェーズでは、選択ビット線BL21を電位Vs、選択ワード線WL11をリセット電位Vresetに設定する。これは、セット動作時と逆のバイアス状態である。一方、非選択ビット線BL及び非選択ワード線WLはフローティング状態とする。アクティブスタンバイフェーズにおいて全てのビット線BL及びワード線WLは、予め電位V=~Vreset/2に設定されている。そのため、放電電流が選択ビット線BL21に集中せず、充電電流として選択ワード線WL11にも供給される。また、ワード線ドライバ3 ́から遠く、ビット線ドライバ2 ́に近い場所の非選択メモリセルMC ́に対して、過渡的にでもリセット電圧Vresetに近い電圧が印加されるのを防ぐことができる。フローティング状態電位V~のビット線BL及びワード線WLは、メモリセルアレイ1におけるメモリセルMC ́の位置によって自己整合的に所定の電圧に落ち着くが、その過程において、非選択メモリセルMCにも電流が流れる点については、読み出し動作及びセット動作のアクセス状態と同じである。但し、選択メモリセルMC ́211を逆方向バイアスの状態にするため、間接順方向電流が流れる非選択メモリセルMC ́と間接逆方電流が流れる非選択メモリセルMC ́が、読み出し動作やセット動作時のアクセスフェーズと全く逆になる。次に、メモリセルアレイ1にバタフライ化したメモリセルMCが存在した場合のアクセス動作時の影響を説明する。ここでは、バタフライ化の影響が大きい読み出し動作と、セット動作について説明する。図12は、比較例に係る半導体記憶装置のフローティングアクセス方式による読み出し動作におけるバタフライ化したメモリセルの影響を説明する図であり、図13は、比較例に係る半導体記憶装置のフローティングアクセス方式によるセット動作におけるバタフライ化したメモリセルの影響を説明する図である。図12及び図13は、メモリセルMC ́120がバタフライ化した場合のアクセスフェーズ時のメモリセルアレイのバイアス状態を示している。バタフライ化したメモリセルMC ́120は、逆方向バイアスが掛かってもセット状態と同様の電流を流してしまう図12及び図13の電流パスP0。読み出し動作の場合、アクセス動作のアクティブスタンバイフェーズ時に、全てのビット線BL及びワード線WLをアクセス電位Vaccに設定する。そして、続くアクセスフェーズ時に非選択ビット線BL及び非選択ワード線WLをフローティング状態電位V~にすると共に、選択ビット線BL21をアクセス電位Vacc、選択ワード線WL11を接地電位Vssに設定する。このとき、選択ビット線BL21から選択ワード線WL11に向かう最短経路パスP0のうち、唯一の逆方向バイアスが掛かる非選択メモリセルMC ́120はセット状態であり、実質、順方向バイアスが掛かっているものと同じである。つまり、最短経路パスP0は、低抵抗の電流パスとなる。その結果、選択ビット線BL21と選択ワード線WL11間に所望の電圧が印加されず、正常な読み出し動作ができなくなる。このように、選択メモリセルMC ́のあるメモリマットMMの上下に隣接するメモリマットMMは、最短経路パスが形成される領域となるため、これら領域にバタフライ化したメモリセルMC ́が存在すると、所望の読み出し動作ができなくなる。これは、図13に示すセット動作時においても同様である。換言すれば、バタフライ化したメモリセルMC ́が存在するメモリマットMMの上下に隣接するメモリマットMMに属するメモリセルMMのアクセス動作に影響を及ぼすことを意味する。そのため、3次元のメモリセルアレイの有効領域を大きく制限することになる。[実施形態に係るメモリセル]そこで、実施形態では、バタフライ化するメモリセルMCが一定の割合で生じることを前提として、この影響をできる限り小さくする方法について説明する。実施形態では、比較例に係るメモリセルMC ́に替えて、セルユニットCUを2つ積層させた構造を持つ新たなメモリセルMCを用いる。そして、この新たなメモリセルMCに3値のバイナリデータをコード化した情報を記憶させる。図14中Aは、実施形態に係るメモリセルMCの構造を示す図であり、図14中Bは、当該メモリセルMCの記号を示す図である。実施形態の場合、セルユニットCUを2個積層させることで、メモリセルMC ́よりも全体としてバタフライ化する確率を下げることができる。即ち、メモリセルMC ́のバタフライ化確率をbとすれば、実施形態のメモリセルMCのバタフライ化率をb2にまで低減させることができる。また、メモリセルMCにコード化されたデータを記憶させることで、エラー訂正が容易なシステムを構築できる。そのため、メモリセルMCのセルユニットCUにバタフライ化が生じても致命的な不良とはならずにメモリセルアレイ1を有効に利用できるようになる。実施形態に係るメモリセルMCは、2個のセルユニットCU1第1セルユニット、CU2第2セルユニットを積層させることで、容易に3値の記憶が容易となる。即ち、2つのセルユニットCU1、CU2が共にセット状態の場合を‘0’状態第1状態、一方がセット状態、他方がリセット状態の場合を‘1’状態第2状態、共にリセット状態の場合を‘2’状態第3状態とする3つの抵抗状態を作ることができる。なお、これら状態のうち‘1’状態と‘2’状態は、メモリセルMCの抵抗の絶対値が非常に高いために電流センスなどによる区別が困難である。そのため、実施形態の場合、メモリセルMCからのデータの読み出しには、後述するような破壊読み出しを用いることになる。メモリセルMCが‘2’状態の場合、メモリセルMCのセルユニットCU1及びCU2間の中間ノードNmは、高抵抗の接続点となるため、ビット線BLの電位Uやワード線WLの電位Wが直接反映されなくなる。そのため、中間ノードNmの電位Vmは、図14中Aに示したような浮遊容量によるカップリング分割で決まり、微少な電流による長時間放置によって変化することになる。実施形態では、この特性を、後述のように、メモリセルMCのアクセスに利用する。また、実施形態に係るメモリセルMCは3つの状態を記憶できるため、メモリセルMCをペアで用いることで合計9つの状態を記憶することができる。そして、このことを利用することで、p進数pは、素数7の剰余体Zpを用いたリーメトリックコードLeemetriccodeをメモリセルMCに記憶させることができる。以下において、ペアで用いるメモリセルMCを、ペアセルと呼ぶこともある。図15は、Zpの要素とペアセルPCの状態の対応付けを示す図である。ペアセルPCは、図15中Aに示すように、メモリセルMC0第1メモリセル及びメモリセルMC1第2メモリセルによって構成されている。図15中Bに示すように、Zpの要素とペアセルPCの状態を対応付けすることで、メモリセルMC0或いはMC1の‘1’状態及び‘2’状態間の変化は、Zpにおいて±1の変化であり、リーメトリックコードにおいて1の変化に収まる。この場合、エラー訂正のシステムが簡単に構築できる。したがって、Zpの要素とペアセルPCの状態を対応付ける際には、セルユニットCUがバタフライ化しても、エラーの範囲が‘1’状態及び‘2’状態間の変化だけに限定されるようにアクセスすることが重要である。図15中Bは、Zpの要素とペアセルPCの状態の対応付けとして最も単純な例となる。しかし、図15中Bに示した例に限らず、Zpの要素が、2つのメモリセルMCの‘1’状態と‘2’状態の組み合わせのいかなる場合でも、リーメトリックコードにおいて1の変化に収まるような対応付けであれば良い。図16は、Zpの要素とペアセルMCの状態の対応付けの他の例を説明する図である。図16中Aの各列のドットで示す行、右斜め線で示す行、左斜め線で示す行は、それぞれ図16中Bのドットで示すマス、右斜め線で示すマス、左斜め線で示すマスに対応している。Zpの要素は、その変化が巡回的であるため、図16中Aのa列~g列に示すように7通りの対応付けが可能である。図16中Bに示す例は、図16中Aのa列の対応付けを示したものであるが、他の列についても、図16中Aのドットで示したZpの要素同士は互いにZpの隣接要素となっている。そのため、これらZpの要素をペアセルPCの‘1’状態と‘2’状態の任意の組み合わせに対応させることで、Zpの要素の変化を±1に収めることができる。[実施形態に係るアクセス動作]<アクセス動作の概要>ここでは、前述の多値記憶のメモリセルMCを用いた実施形態に係る半導体記憶装置におけるフローティングアクセス方式によるアクセス動作について説明する。ここで扱うメモリセルアレイ1は、複数のメモリセルマットMMを積層させた構造を持つ。また、積層方向に隣接する2つのメモリセルマットMMは、ビット線BL或いはワード線WLを共有しているものとする。したがって、1つのメモリセルグループMGは、図17のようになる。先ず、実施形態の説明で用いる用語、記号などを説明しておく。アクセス対象となるメモリセルを選択メモリセル、その他のメモリセルを非選択メモリセルと呼ぶ。選択メモリセルに接続されたビット線を選択ビット線、その他のビット線を非選択ビット線、選択メモリセルに接続されたワード線を非選択ワード線、その他のワード線を非選択ワード線と呼ぶ。ビット線の電位をU、選択ビット線の電位をUs、非選択ビット線の電位をUu、ワード線の電位をW、選択ワード線の電位をWs、非選択ワード線の電位をWuで表わす。最終的に‘n’状態n=0、1、2に設定されるべきメモリセル或いは、本来的に‘n’状態であるべきメモリセルをMC‘n’と表わす。メモリセルMC‘n’に接続されたビット線をBL‘n’で表わし、その電位をU‘n’、Us‘n’或いはUu‘n’で表わす。メモリセルの中間ノード電位をVmで表わす。セット電圧Vsetとリセット電圧Vresetのいずれか大きい方、つまりmaxVset,VresetをVmaxで表わし、小さい方、つまり、minVset,VresetをVminで表わす。セルユニットの状態を遷移させない電圧マージンをΔで表わす。例えば、リセット状態のセルユニットに掛かる順方向バイアスがVset-Δ以下の場合、セルユニットはセット状態に遷移しないことになる。電位vのビット線或いはワード線をフローティング状態にした後のビット線或いはワード線の電位をv~で表わす。例えば、電位U=Vmax3Δのビット線をフローティング状態にした後のビット線の電位はU~或いはVmax3Δ~で表わす。ここで説明するアクセス動作は、メモリセルMCに順方向バイアスが掛からない限り、ビット線BL或いはワード線WLをフローティング状態にしてもメモリセルMCには無視できる程度の逆リーク電流しか流れない事を前提としている。これは、実施形態のメモリセルMCがセルユニットCUを2つ積層させた構造を持つためである。この前提によって、ビット線BL及びワード線WLの電位U及びWを固定する設定をフローティングと併用することができる。そのため、比較例のアクセス動作に比べて電位設定を簡素化することができる。なお、メモリセルMCに流れる逆リーク電流が無視できない場合には、隣接するビット線BL間或いはワード線WL間の容量性カップリングに対する動作マージンを考慮したフローティング状態の設定をすれば良い。実施形態のアクセス動作は、書き込み動作、読み出し動作の2つに大別することができる。書き込み動作は、メモリセルMCの状態を初期化データを消去する初期状態設定、選択メモリセルMCを‘2’状態に設定する‘2’状態設定第3状態設定、メモリセルMCを‘1’状態に設定する‘1’状態設定第2状態設定及びメモリセルMCを‘0’状態に設定する‘0’状態設定第1状態設定の組み合わせからなる書き込みシーケンスによって実現される。なお、初期状態設定によってメモリセルMCを‘1’状態或いは‘0’状態に遷移させるため、書き込みシーケンスには、‘1’状態設定或いは‘0’状態設定が含まれないこともある。読み出し動作は、メモリセルMCが‘0’状態かを判定する‘0’状態判定第1状態判定、メモリセルMCが‘1’状態かを判定する‘1’状態判定第2状態判定及びメモリセルMC‘1’を‘1’状態に再設定する‘1’状態再設定第2状態再設定からなる読み出しシーケンスによって実現される。初期状態設定、‘2’状態設定、‘1’状態設定、‘0’状態設定、‘0’状態判定、‘1’状態判定、‘1’状態再設定は、おおよそイニシャルスタンバイフェーズ、アクティブスタンバイフェーズ及びアクセスフェーズの3つのフェーズからなる。<ホールド動作>ここでは、アクセス動作を説明する前提として、アクセス動作に入る前のホールド動作について説明する。ホールド動作は、メモリセルMCのセルユニットCUの状態を保持させる動作である。図18は、ホールド動作時のメモリセルアレイ1のバイアス状態を示す図である。ホールド動作では、全てのビット線BL及びワード線WLの電位をU=W=Vssに設定する。これによって、全てのメモリセルMCにはバイアスが掛からない。また、メモリセルMC‘2’も含めた全てのメモリセルMCの中間ノード電位Vmは、ほぼ接地電位Vssに放電されている。<初期状態設定>図19は、アクセス動作のイニシャルスタンバイフェーズ時のメモリセルアレイ1のバイアス状態を示す図である、図20は、アクセス動作のアクティブスタンバイフェーズ時のメモリセルアレイ1のバイアス状態を示す図である。図21~図24は、アクセス動作のアクセスフェーズ時のメモリセルアレイ1のバイアス状態を示す図である。なお、図20~図24は、ビット線BL21及びワード線WL11に接続されたメモリセルMC211を選択メモリセルとするバイアス状態である。イニシャルスタンバイフェーズは、メモリセルMCの中間ノード電位Vmを設定する過程である。アクティブスタンバイフェーズは、ビット線BL或いはワード線WLをフローティング状態にする際の電位設定をする過程である。ここでは、初期状態設定における各フェーズについて説明する。‘2’状態のメモリセルMCの中間ノード電位Vmは、自在に制御することが困難である。また、‘2’状態の選択メモリセルMCを他の状態へ遷移させるようなメモリセルアレイ1のバイアス状態を作ると、選択ビット線BL或いは選択ワード線WLに接続された非選択メモリセルMCの状態を破壊しかねず、データの保証ができなくなる。そこで、メモリセルMCを新たな状態に遷移させる際には、一旦、メモリセルMCを‘0’状態或いは‘1’状態に遷移させた上で、最後に‘2’状態へ遷移させる方法を特に検討する。初期状態設定は、全てのメモリセルMCを‘0’状態或いは‘1’状態に遷移させる過程である。したがって、初期状態設定後は、メモリセルアレイ1に‘2’状態のメモリセルMCは存在しない。なお、初期状態設定後のメモリセルアレイ1内のメモリセルMCの状態は統一されていることが望ましい。そこで、以下の手順により、全てのメモリセルMCを‘0’状態或いは‘1’状態のいずれかに統一する。イニシャルスタンバイフェーズ前は、図18に示すように、ホールド動作によって、全てのビット線BL及びワード線WLの電位はU=W=Vssに設定されており、全てのメモリセルMCの中間ノード電位Vmは接地電位Vss近くまで放電されている。始めに、イニシャルスタンバイフェーズでは、図19に示すように、全てのビット線BL及びワード線WLの電位をU=W=Vmax3Δに設定する。この電位設定によって、‘2’状態のメモリセルMCのセルユニットCU1にはセット電圧Vset以上の順方向バイアスが掛かり、セルユニットCU2にはリセット電圧Vreset以上の逆方向バイアスが掛かる。その結果、‘2’状態のメモリセルMCは、‘1’状態に遷移する。なお、‘0’状態及び‘1’状態のメモリセルMCは、中間ノード電位Vmがビット線BLの電位U或いはワード線WLの電位Wに連動して推移するため、状態は遷移しない。続いて、アクティブスタンバイフェーズでは、図20に示すように、電位U=Vmax3Δで設定されている全てのビット線BLをフローティング状態にすると共に、W=Vmax3Δで設定されている全てのワード線WLの電位をWs=Wu=Vssに設定し、この状態を暫くの間保持する。これによって、‘0’状態のメモリセルMCのセルユニットCU2はセット状態であるため、‘0’状態のメモリセルMCの中間ノード電位Vmは、接地電位Vssまで低下する。また、0’状態のメモリセルMCのセルユニットCU1もセット状態であるため、ビット線BLの電位Uも接地電位Vssに向けて放電していく。しかし、‘0’状態のメモリセルMCのセルユニットCU1及びCU2の抵抗状態はバイアスが低いほど高くなる非線形な特性を有するため、ビット線BLの電位Uは、接地電位Vssまで放電せず、接地電位Vssよりも電圧マージンΔほど高い電位でほぼ飽和する。つまり、全てのビット線BLの電位は、U=VsVs≧VssΔとなる。以上の手順によって、全てのメモリセルMCは‘0’状態に遷移する。メモリセルMCの初期状態を‘0’状態とする場合、ここまでの手順で初期状態設定が完了となる。一方、メモリセルMCの初期状態を‘1’状態とする場合、以下の手順を続ける。全てのメモリセルMCを‘0’状態に遷移させた後、全てのワード線WLの電位を再びWs=Wu=Vmax3Δに設定する。これによって、‘0’状態のメモリセルMCのセルユニットCU2には、リセット電圧Vreset以上の逆方向バイアスが掛かるため、セルユニットCU2はリセット状態に遷移する。その結果、全てのメモリセルMCが‘1’状態に遷移する。<‘2’状態設定>‘2’状態設定は、非選択メモリセルMCの状態に影響を与えず、‘1’状態の選択メモリセルMCを‘2’状態に遷移させる過程である。したがって、初期状態設定によってメモリセルMCが‘0’状態に設定された場合、後述の‘1’状態設定後に行う必要がある点に留意されたい。つまり、‘2’状態設定は、セルユニットCU1、CU2がそれぞれセット状態、リセット状態のメモリセルMCを対象とする過程となる。始めのイニシャルスタンバイフェーズでは、セルユニットCU1に逆方向バイアスが掛かっても状態遷移しないような電位設定をメモリセルMCの中間ノードNmに対して行う。つまり、イニシャルスタンバイステップでは、図19に示すように、全てのビット線BL及びワード線WLの電位をU=W=Vmin-Δに設定する。これによって、選択メモリセルMCについては、セット状態のセルユニットCU1に順方向バイアスが掛かるため、セルユニットCU1の状態は遷移しない。既に‘2’状態に設定されたメモリセルMC‘2’については、リセット状態のセルユニットCU1に順方向バイアスが掛かるが、この順方向バイアスはVset-Δ以下の大きさしかないため、セルユニットCU1の状態は遷移しない。また、選択ビット線BLに接続された非選択メモリセルMC‘0’或いはMC‘1’については、セルユニットCU2がバタフライ化している場合であっても、セルユニットCU1にVreset-Δ以下の逆方向バイアスしか掛からないため、セルユニットCU1の状態は遷移しない。なお、このイニシャルスタンバイフェーズにおける電位設定は、ある程度の時間維持させる必要がある。これは、続くアクティブスタンバイフェーズにおいて、既に‘2’状態に設定された非選択メモリセルMC‘2’のセルユニットCU1が、セット状態に遷移してしまうことを防止するためである。アクティブスタンバイフェーズでは、非選択ビット線BLの電位をUu=Vreset-Δに設定するが、イニシャルスタンバイフェーズにおける電位設定をある程度の時間維持させることで、非選択メモリセルMC‘2’の中間ノード電位Vmが上昇するため、セット電圧Vsetに対する電圧マージンを確保することができる。続いて、アクティブスタンバイフェーズでは、図20に示すように、選択ビット線BLの電位をUs=Vmin-Δに設定する。これは、続くアクセスフェーズにおいて、選択ビット線BLに接続された非選択メモリセルMC‘0’或いはMC‘1’のセルユニットCU1をリセット状態に遷移させないためである。また、非選択ビット線BL及び全てのワード線WLの電位をUu=Ws=Wu=Vreset-Δに設定する。これは、続くアクセスフェーズにおいて、選択ワード線WLに接続された非選択メモリセルMC‘0’のセルユニットCU2をリセット状態に遷移させないためである。続いて、アクセスフェーズでは、図21に示すように、選択ビット線BLの電位をUs=Vss、選択ワード線WLの電位をWs=2Vreset-2Δ、非選択ビット線BL及び非選択ワード線WLの電位をUu=Wu=Vreset-Δに設定する。この電位設定をある程度維持することで、‘1’状態の選択メモリセルMCの中間ノード電位Vmは、セルユニットCU2に流れる逆リーク電流によってVmin-Δからリセット電圧Vresetへと上昇する。その結果、選択メモリセルMCのセルユニットCU1は、リセット状態に遷移する。一方、非選択メモリセルMCのセルユニットCU1及びCU2には、状態が遷移しない程度のバイアスしか掛からない。なお、この電位設定をある程度維持させないと、選択メモリセルMCが‘2’状態に遷移せず、‘1’状態のままとなる場合がある点に留意されたい。また、このアクセスフェーズ終了後は、選択ワード線WLの電位Wsをいきなり接地電位Vssに設定せず、アクセスフェーズの時間と同程度の時間だけWs=Vreset-Δに戻してメモリセルMCの中間ノード電位Vmを放電させる必要がある。これは、選択メモリセルMC‘2’のセルユニットCU2が、セット状態に遷移するのを防ぐためである。<‘1’状態設定>‘1’状態設定では、非選択メモリセルMCの状態には影響を与えず、‘0’状態の選択メモリセルMCを‘1’状態に遷移させる。始めに、イニシャルスタンバイフェーズでは、図19に示すように、全てのビット線BL及びワード線WLの電位をU=W=Vssに設定する。これは、メモリセルMCのセルユニットCU1に逆方向バイアスが掛かり、セルユニットCU1の状態が遷移しないように、メモリセルMCの中間ノード電位をVm=Vssに設定するためである。続いて、アクティブスタンバイステップでは、図20に示すように、選択ビット線BLの電位をUs=Vss、非選択ビット線BL及び全てのワード線WLの電位をUu=Ws=Wu=Vmin-Δに設定する。非選択ビット線BL及び非選択ワード線WLの電位をUu=Wu=Vmin-Δに設定するのは、既に状態の設定が完了したメモリセルMC或いはバタフライ化したセルユニットCUを持つメモリセルMCの状態が遷移するのを防止するためである。なお、そのためには、非選択ビット線BLの電位をUu=Vset-Δ、非選択ワード線WLの電位をWu=Vreset-Δにすれば良いとも考えられるが、電位Uuを電位Wu以下にしないと、メモリセルMCに順方向バイアイスが掛かり、メモリセルMCに大電流が流れる恐れがある。そのため、非選択ビット線BL及びワード腺WLの電位をUu=Ws=Wu=Vmin-Δに設定する必要がある。続いて、アクセスフェーズでは、図22に示すように、選択ワード線WLの電位をWs=VresetΔに設定する。全てのビット線BL及び非選択ワード線WLの電位は、アクティブスタンバイフェーズにおける電位設定を維持させる。これによって、選択メモリセルMCのセルユニットCU2にはリセット電圧Vreset以上の逆方向バイアスが掛かる一方、セルユニットCU1にはリセット電圧Vreset以下の逆方向バイアスしか掛からないため、選択メモリセルMCは、‘1’状態に遷移する。なお、非選択メモリセルMCは、セルユニットCU1及びCU2に状態が遷移しない程度のバイアスしか掛からないため、状態は遷移しない。<‘0’状態設定>‘0’状態設定では、非選択メモリセルMCの状態に影響を与えず、‘1’状態の選択メモリセルMCを‘0’状態に遷移させる。ここでは、選択メモリセルMCに順方向バイアスを掛けるため、非選択ビット線BL及び非選択ワード線WLをフローティング状態にする。これによって、隣接ビット線BL間、隣接ワード線WL間の容量性カップリングが100であったとしても、非選択メモリセルMCの状態は破壊されない。始めに、イニシャルスタンバイフェーズでは、図19に示すように、ビット線BL及びワード線WLの電位をU=W=Vmin-Δに設定する。この電位設定をある程度維持することで、既に‘2’状態に設定された非選択メモリセルMC‘2’の中間ノード電位Vmが上昇するため、セルユニットCU1及びCU2の状態が遷移することを防止できる。続いて、アクティブスタンバイフェーズでは、図20に示すように、選択ビット線BLの電位を、イニシャルスタンバイフェーズに引き続き、Us=Vmin-Δに設定する。非選択ビット線BLの電位をU=Vmin-Δに設定する。これは、隣接ビット線BLとの容量性カップリングに対する電圧マージンを確保するためである。選択ワード線WLの電位を、イニシャルスタンバイフェーズに引き続き、Ws=Vmin-Δに設定する。非選択ワード線WLの電位をWu=Vminに設定する。これは、隣接ワード線WLとの容量性カップリングに対する電圧マージンを確保するためである。これら電位設定をある程度維持させることで、メモリセルMC‘2’の中間ノード電位Vmを上昇させるめの時間を稼ぐことができる。続いて、アクセスフェーズでは、図23に示すように、選択ビット線BLの電位をWs=Vset、選択ワード線WLの電位をWu=Vssに設定し、非選択ビット線BL及び非選択ワード線WLをフローティング状態にする。この設定によって、選択メモリセルMCのセルユニットCU2には、セット電圧Vset以上の順方向バイアスが掛かるため、セルユニットCU2をセット状態に遷移する。また、選択ビット線BLの電位変化によって、隣接ビット線BLの電位は、最大でΔだけ変化してUu=Vmin-Δとなる。選択ワード線WLの電位変化によって、隣接ワード線WLの電位は、最大でVmin-Δだけ変化してWu≧Δとなる。そのため、非選択メモリセルMCには、最大でもVmin-Δのバイアスしか掛からないため、非選択メモリセルMCのセルユニットCU1及びCU2の状態は遷移しない。なお、‘0’状態に設定された選択メモリセルMC‘0’に流れるセル電流の増加を抑制するために選択ビット線BLをビット線ドライバ2 ́から遮断する場合、選択ビット線BLの電位Usは、選択ワード線WLの電位Wsに引かれて接地電位Vssに向けて低下するが、‘0’状態のメモリセルMCのセルユニットCU1及びCU2の抵抗状態は、バイアスが低いほど高くなる非線形な特性を有するため、接地電位Vssよりも電圧マージンΔほど高い電位でほぼ飽和する。そのため、選択ビット線BLに接続されたセット状態のセルユニットCU1を持つ非選択メモリセルMCの中間ノード電位がVm=Vsetの場合であっても、セルユニットCU1にはVset-Δ程度の逆方向バイアスしか掛からない。その結果、このセルユニットCU1は、VsetとVresetが同程度である場合、状態は遷移しない。<‘0’状態判定>‘0’状態判定では、選択メモリセルMCが低抵抗か高抵抗かを判別する。即ち、‘0’状態か、或いは‘1’状態又は‘2’状態かを判別する。なお、‘1’状態と‘2’状態との判別は後述の‘1’状態判定で行う。始めに、イニシャルスタンバイフェーズでは、図19に示すように、全てのビット線BL及びワード線WLの電位をメモリセルMCの状態に影響を与えない程度の電位であるU=W=Vaccに設定する。続いて、アクティブスタンバイフェーズでは、図20に示すように、イニシャルスタンバイフェーズにおける電位設定を維持させる。つまり、‘0’状態判定においては、イニシャルスタンバイフェーズとアクティブスタンバイフェーズの区別はない。続いて、アクセスフェーズでは、図24に示すように、選択ビット線BLの電位をUs=Vacc、選択ワード線WLの電位をWs=Vssに設定し、非選択ビット線BL及び非選択ワード線WLをフローティング状態にする。この設定によって選択ビット線BLに流れる電流から、選択メモリセルMCの‘0’状態と‘1’状態又は‘2’状態とを判別することができる。<初期状態設定時の正常なメモリセルの状態遷移>ここでは、実施形態のアクセス動作の過程において、バタフライ化したセルユニットCUの影響がどのように現れるかについて説明する。実施形態のアクセス動作を用いた場合のメモリセルMCの状態遷移を、異なる4つの状態のメモリセルMCについて説明する。ここで、4つの状態とは、セルユニットCU1、セルユニットCU2の状態の組み合わせをセルユニットCU1の状態、セルユニットCU2の状態で表わし、セット状態をS、リセット状態をRで表わすと、S,S、S,R、R,S、R,Rのことを言う。図25は、初期状態設定時の正常なメモリセルMCの状態遷移を示す図である。図25中の白抜き矢印はイニシャルスタンバイフェーズにおける遷移、墨付き矢印はアクティブスタンバイフェーズにおける遷移を示す。イニシャルスタンバイフェーズでは、ビット線BL及びワード線WLの電位は、U=W=Vmax3Δで設定される。そのため、S,S、S,R及びR,RのメモリセルMCについては、セルユニットCU1に順方向バイアスが掛かるため、セルユニットCU1は、セット状態に遷移する。その結果、‘2’状態のメモリセルMCがなくなる。一方、R,SのメモリセルMCについては、セルユニットCU1が先にセット状態に遷移するか図中p1、セルユニットCU2が先にリセット状態に遷移するか図中p2で状態遷移の過程が異なってくる。遷移過程p1の場合、イニシャルスタンバイフェーズでは、R,SのメモリセルMCはS,Sに遷移する。一方、遷移過程p2の場合、セルユニットCU2がリセット状態に遷移した後、中間ノード電位Vmが接地電位VssのままであるためセルユニットCU1もセット状態に遷移する。その結果、R,SのメモリセルMCは、S,Rに遷移する。いずれの遷移経路p1及びp2であっても、メモリセルMCのセルユニットCU1は、セット状態に遷移する。アクティブスタンバイフェーズでは、全てのビット線BLがフローティング状態にされ、全てのワード線WLの電位は、Ws=Wu=Vssに設定される。この時点で、リセット状態のセルユニットCU2にはセット電圧Vset以上の順方向バイアスが掛かるため、セルユニットCU2はセット状態に遷移する。また、フローティング状態のビット線BLの電位もU~=Vsになる。ここまでの過程で、全てのメモリセルMCが‘0’状態に遷移する。全てのメモリセルMCを‘1’状態に遷移させる場合、更に、全てのワード線WLの電位は、再びWs=Wu=Vmax3Δに設定される。そのため、メモリセルMCの中間ノード電位がVm=Vssになり、セルユニットCU2にはリセット電圧Vreset以上の逆方向バイアスが掛かる。その結果、セルユニットCU2がリセット状態に遷移し、全てのメモリセルMCがS,Rに遷移する。<初期状態設定時のバタフライ化したセルユニットCU1を持つメモリセルの状態遷移>ここでは、初期状態設定時のバタフライ化したセルユニットCUを持つメモリセルMCの状態遷移について説明する。なお、以下では、セルユニットCU1及びCU2の一方がバタフライ化したメモリセルMCについてのみ説明する。これは、セルユニットCU1及びCU2が共にバタフライ化してしまう可能性は低い上、このようなメモリセルMCはECC等の対象外となるためである。図26は、初期状態設定時のバタフライ化したセルユニットCU1を持つメモリセルMCの状態遷移を示す図である。図26中の白抜き矢印はイニシャルスタンバイフェーズにおける遷移、墨付き矢印はアクティブスタンバイフェーズにおける遷移を示す。また、墨付きで示したセルユニットCUは、バタフライ化したセルユニットを表わしている。なお、リバース特性が低抵抗になるバタフライ化は、セット状態のセルユニットCU、リセット状態のセルユニットCUの双方であり得るため、ここでも、S,S、S,R、R,S及びR,Rの全ての状態のメモリセルMCの状態遷移について説明する。イニシャルスタンバイフェーズでは、ビット線BL及びワード線WLの電位は、U=W=Vmax3Δで設定される。そのため、S,S、S,R及びR,RのメモリセルMCについては、セルユニットCU1に順方向バイアスが掛かるため、セルユニットCU1は、セット状態に遷移する。その結果、‘2’状態のメモリセルMCがなくなる。一方、R,SのメモリセルMCについては、セルユニットCU1が先にセット状態に遷移するか図中p1、セルユニットCU2が先にリセット状態に遷移するか図中p2で状態遷移の過程が異なってくる。遷移過程p1の場合、イニシャルスタンバイフェーズでは、R,SのメモリセルMCはS,Sに遷移する。一方、遷移過程p2の場合、セルユニットCU2がリセット状態に遷移した後、中間ノード電位Vmが接地電位VssのままであるためセルユニットCU1もセット状態に遷移する。その結果、R、SのメモリセルMCは、S,Rに遷移する。いずれの遷移経路p1及びp2であっても、メモリセルMCのセルユニットCU1は、セット状態となる。アクティブスタンバイフェーズでは、全てのビット線BLがフローティング状態にされ、全てのワード線WLの電位は、Ws=Wu=Vssに設定される。この時点で、リセット状態のセルユニットCU2にはセット電圧Vset以上の順方向バイアスが掛かるため、セルユニットCU2はセット状態に遷移する。また、フローティング状態のビット線BLの電位もU~=Vsになる。ここまでの過程で、全てのメモリセルMCが‘0’状態に遷移する。全てのメモリセルMCを‘1’状態に遷移させる場合、更に、全てのワード線WLの電位が、再びWs=Wu=Vmax3Δに設定される。そのため、メモリセルMCの中間ノード電位がVm=Vssになり、セルユニットCU2にはリセット電圧Vreset以上の逆方向バイアスが掛かる。その結果、セルユニットCU2がリセット状態に遷移し、全てのメモリセルMCがS,Rに遷移する。つまり、初期状態設定の過程では逆方向バイアスが利用されないため、セルユニットCU1がバタフライ化したとしても、メモリセルMCの状態遷移に影響はない。<初期状態設定時のバタフライ化したセルユニットCU2を持つメモリセルの状態遷移>ここでは、初期状態設定時のバタフライ化したセルユニットCU2を持つメモリセルMCの状態遷移について図27を用いて説明する。図27中の表記については、図26と同様である。イニシャルスタンバイフェーズでは、ビット線BL及びワード線WLの電位は、U=W=Vmax3Δで設定される。しかし、いずれのセルユニットCU2にも逆方向バイアス特性がないため、メモリセルMCの状態は遷移しない。アクティブスタンバイフェーズでは、全てのビット線BLがフローティング状態にされ、全てのワード線WLの電位がWs=Wu=Vssに設定される。この時点で、リセット状態のセルユニットCU1にはセット電圧Vset以上の順方向バイアスが掛かるため、セルユニットCU1はセット状態に遷移する。また、フローティング状態のビット線BLの電位もU~=Vsになる。ここまでの過程で、全てのメモリセルMCが‘0’状態に遷移する。全てのメモリセルMCを‘1’状態に遷移させる場合、更に、全てのワード線WLの電位が、再びWs=Wu=Vmax3Δに設定される。この場合、セルユニットCU2に逆方向バイアス特性がないため、メモリセルMCの中間ノード電位がVm=Vmax3Δになる。そのため、セルユニットCU1にはリセット電圧Vreset以上の逆方向バイアスが掛かる。その結果、セルユニットCU1がリセット状態に遷移し、全てのメモリセルMCがR,Sに遷移する。つまり、初期状態設定の過程では、セルユニットCU2がバタフライ化したことで、メモリセルMCは、正常なメモ入りセルMCの場合とは異なる‘1’状態に遷移することになる。<‘2’状態設定時の正常なメモリセルの状態遷移>ここでは、選択メモリセルMCに対して‘2’状態設定した場合の正常なメモリセルMCの状態遷移について図28を用いて説明する。選択メモリセルMCについては、図28に示すように、選択ビット線BLの電位がUs=Vmin-Δに設定されることで、選択メモリセルMCの中間ノード電位がVmin-Δに設定される。その後、選択ビット線BLの電位がUs=Vss、選択ワード線WLの電位がWs=2Vreset-2Δに設定される。これによって、選択メモリセルMCのセルユニットCU1は、リセット状態に遷移する。これら選択ビット線BL及び選択ワード線WLへの電位設定は、ある程度の時間数μsオーダー維持されないとセルユニットCU1がリセット状態に遷移しないため、選択メモリセルMCは‘2’状態に遷移しない。即ち、この電位設定の期間によっては、‘2’状態で設定されるべきメモリセルMCに‘1’状態のメモリセルMCが混入することになる。一方、非選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCについては、非選択ビット線BL及び非選択ワード線WLの電位がUu=Wu=Vreset-Δに設定されるため、バイアスは掛からず状態は遷移しない。これに対し、選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCについては、図28に示すように、選択ビット線BLの電位がUs=Vss、非選択ワード線WLの電位がWu=Vreset-Δに設定される。そのため、非選択メモリセルMC‘1’は、セット状態のセルユニットCU1を介して中間ノード電位がVm=Vmin-Δに設定される。その結果、セルユニットCU2にはVmin-Vresetの順方向バイアスしか掛からず、状態は遷移しない。なお、セット電圧Vsetとリセット電圧Vresetは、同程度の電圧である。非選択メモリセルMC‘0’も、中間ノード電位がVm=Vmin-Δに設定されるため、状態は遷移しない。非選択メモリセルMC‘2’は、やはりセルユニットCU1及びCU2共に状態が遷移するようなバイアスが掛からないため、状態が遷移しない。また、非選択ビット線BL及び選択ワード線WL間の非選択メモリセルMCの場合、図28に示すように、非選択メモリセルMC‘0’及びMC‘1’については、セット状態のセルユニットCU1を介して中間ノード電位がVm=Vreset-Δに設定され、選択ワード線WLの電位がWs=2Vreset-2Δに設定されるため、セルユニットCU2にはWs-Vm=Vreset-Δの逆方向バイアスしか掛からない。その結果、非選択メモリセルMC‘0’及び‘1’は、状態が遷移しない。非選択メモリセルMC‘2’については、イニシャルスタンバイフェーズにおいて中間ノード電位Vmがある程度上昇するため、セルユニットCU1にはVreset-Δよりも低い順方向バイアスしか掛からない。そのため、セット電圧Vsetとリセット電圧Vresetに極端な差がない限り、非選択メモリセルMC‘2’は、状態が遷移しない。<‘2’状態設定時のバタフライ化したセルユニットCU1又はCU2を持つメモリセルの状態遷移>ここでは、‘2’状態設定時のバタフライ化したセルユニットCU1又はCU2を持つメモリセルMCの状態遷移について図29を用いて説明する。図29中、‘/‘の前に示した値はセルユニットCU1がバタフライ化した場合の値、‘/’の後に示した値はセルユニットCU2がバタフライ化した場合の値を示している。その他の表記については、図26と同様である。図29には、‘1’状態設定によって‘0’状態のメモリセルMCが‘1’状態に遷移した場合と、初期状態設定によってメモリセルMCが‘1’状態に遷移した場合について、メモリセルMCの状態遷移の全てのパターンが示されている。なお、初期状態設定では、リセット状態のバタフライ化したセルユニットCUはなくなるため、バタフライ化したセルユニットCUを持つ‘2’状態のメモリセルMCはない。セルユニットCU1がバタフライ化したS,Rの選択メモリセルMCについては、図29に示すように、中間ノード電位Vmが最低電位である選択ビット線BLの電位Usと同じ接地電位Vssに設定されるため、セルユニットCU2はリセット状態で安定する。その結果、S,Rの選択メモリセルMCは、‘2’状態に遷移しない。セルユニットCU2がバタフライ化したR,Sの選択メモリセルMCについては、中間ノード電位Vmが選択ワード線WLの電位Wsである2Vreset-2Δに設定されるため、セルユニットCU1はリセット状態で安定する。その結果、セルユニットCU1がバタフライ化したS,Rの選択メモリセルMCと同様、R,Sの選択メモリセルMCは、‘2’状態に遷移しない。つまり、‘1’状態の選択メモリセルMCのセルユニットCUがバタフライ化した場合、選択メモリセルMCに対して‘2’状態設定しても、選択メモリセルMCは‘1’状態のままとなる。一方、非選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCについては、非選択ビット線BL及び非選択ワード線WLの電位がUu=Ws=Vreset-Δに設定されるため、バイアスは掛からず状態は遷移しない。これに対し、選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMC並びに非選択ビット線BL及び選択ワード線WL間の非選択メモリセルMCについては、図29に示すように、選択ワード線WLの電位がWs=2Vreset-2Δに設定される場合もあるが、セルユニットCU1及びCU2には、Vreset-Δ以上の逆方向バイアスが掛かることはないため、状態は遷移しない。以上から、バタフライ化したセルユニットCU1又はCU2を持つメモリセルMCについては、‘1’状態から‘2’状態に遷移させることができず、‘1’状態及び‘2’状態間の誤遷移が生じる結果となる。<‘1’状態設定時の正常なメモリセルの状態遷移>ここでは、‘0’状態の選択メモリセルMCに対して‘1’状態設定した場合の正常なメモリセルMCの状態遷移について図30を用いて説明する。‘1’状態設定におけるイニシャルスタンバイフェーズでは、ビット線BL及びワード線WLの電位をU=W=Vssに設定し、選択メモリセルMCの中間ノード電位をVm=Vssに設定する。続いて、アクティブスタンバイフェーズでは、選択ビット線BLの電位をUs=Vssに維持しつつ、非選択ビット線BL及び全てのワード線WLの電位をUu=Ws=Wu=Vmin-Δに設定する。そして、アクセスフェーズにおいて、選択ビット線BLの電位をUs=Vssに維持しつつ、選択ワード線WLの電位をWs=VresetΔに設定する。これによって、選択メモリセルMCについては、中間ノード電位Vmが接地電位Vssから少し上昇するが、選択メモリセルMCのカソードNc側のセルユニットCU2にはリセット電圧Vreset以上の逆方向バイアスが掛かため、セルユニットCU2は、常にリセット状態に遷移する。また、選択メモリセルMCのアノードNa側のセルユニットCU1にはほとんどバイアスが掛からないため、セルユニットCU1は、セット状態を維持する。つまり、‘0’状態の選択メモリセルMCは、‘1’状態に遷移する。一方、非選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCについては、非選択ビット線BL及び非選択ワード線WLの電位がUu=Wu=Vmin-Δに設定されるため、バイアスは掛からず状態は遷移しない。これに対し、選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCについては、選択ビット線BLの電位がUs=Vss、非選択ワード線WLの電位がWu=Vmin-Δに設定される。そのため、非選択メモリセルMCにはリセット電圧Vreset以下の逆方向バイアスしか掛からないため、非選択メモリセルMCの状態は遷移しない。非選択ビット線BL及び選択ワード線WL間の非選択メモリセルMCについては、選択ワード線WLの電位がWs=VresetΔ、非選択ビット線BLの電位がUu=Vmin-Δに設定される。そのため、非選択メモリセルMCのセルユニットCU2には、VresetΔ-Vmin-Δ=Vreset-Vmin2Δ以下の逆方向バイアスしか掛からない。また、セット電圧Vsetとリセット電圧Vresetは、同程度の値である。したがって、いずれの状態であっても、非選択メモリセルMCの状態は遷移しない。<‘1’状態設定時のバタフライ化したセルユニットCU1又はCU2を持つメモリセルの状態遷移>ここでは、‘1’状態設定時のバタフライ化したセルユニットCU1又はCU2を持つメモリセルMCの状態遷移について図31を用いて説明する。図31中の表記については、図29と同様である。セルユニットCU1がバタフライ化した選択メモリセルMCについては、図31に示すように、イニシャルスタンバイフェーズにおいてビット線BL及びワード線WLの電位がU=W=Vssに設定されるため、中間ノード電位はVm=Vssになる。その後、アクセスフェーズにおいて、選択ワード線WLの電位がWs=VresetΔに設定されるため、セルユニットCU2にはリセット電圧Vreset以上の逆方向バイアスが掛かる。その結果、セルユニットCU2がリセット状態に遷移し、選択メモリセルMCは‘1’状態に遷移する。セルユニットCU2がバタフライ化した選択メモリセルMCについては、選択ワード線WLの電位がWs=VresetΔに設定されるので、バタフライ化したセルユニットCU2を介して中間ノード電位はVm=VresetΔになる。そのため、セルユニットCU1がリセット状態に遷移する。その結果、セルユニットCU2がバタフライ化した場合、選択メモリセルMCは、正常な場合とは異なる構成の‘1’状態に遷移する。これに対し、選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMC並びに非選択ビット線BL及び選択ワード線WL間の非選択メモリセルMCについては、バタフライ化したセルユニットCU1或いはCU2が存在したとしても、セルユニットCU1及びCU2にはVmin-Δか、Vreset-Vmin2Δ以下のバイアスしか掛からないため、非選択メモリセルMCは誤遷移することはない。<‘0’状態設定時の正常なメモリセルの状態遷移>ここでは、選択メモリセルMCに対して‘0’状態設定した場合の正常なメモリセルMCの状態遷移について図32を用いて説明する。‘0’状態設定では、始めに、イニシャルスタンバイフェーズにおいて、ビット線BL及びワード線WLの電位がU=W=Vmin-Δに設定され、この設定を数μs間維持される。続いて、アクティブスタンバイフェーズにおいて、選択ビット線BL及び選択ワード線WLの電位がUs=Ws=Vmin-Δ、非選択ビット線BLの電位がUu=Vmin-2Δ、非選択ワード線WLの電位がWu=Vminに設定される。その後、アクセスフェーズにおいて、選択ビット線BLの電位がUs=Vset、選択ワード線WLの電位がWs=Vssに設定され、非選択ビット線BL及び非選択ワード線WLがフローティング状態になる。このように、非選択ビット線BL及び非選択ワード線WLがフローティング状態になることで、容量性カップリングによる隣接ビット線BL或いは隣接ワード線WLへの影響を抑制できる。選択メモリセルMCについては、アクティブスタンバイフェーズにおける電位設定によって、選択メモリセルMCのカソードNc側のセルユニットCU2は常にセット状態に遷移する。また、アノードNa側のセルユニットCU1には順方向バイアスが掛かり、セルユニットCU1はセット状態を維持する。その結果、選択メモリセルMCは、‘0’状態に遷移する。一方、非選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCについては、選択メモリセルMCに対する‘0’状態設定によってディスターブが生じないかが問題となる。始めに、イニシャルスタンバイフェーズにおける電位設定を維持し、メモリセルMC‘2’の中間ノード電位Vmを十分に上げておく。ここで、フローティング状態のビット線BL及びワード線WLには、隣接ビット線BL或いは隣接ワード線WLから100の容量性カップリングの影響を受けるものとそうでないものが存在する。そして、アクティブスタンバイフェーズにおける電位設定による選択ビット線BLの電位変化はVset-VminΔであり、選択ワード線WLの電位変化はVmin-Δになる。したがって、非選択メモリセルMCの両端には、フローティング状態の非選択ビット線BLの電位の範囲Vmin-2Δ≦Uu≦Vset-Δとフローティング状態の非選択ワード線WLの電位の範囲Δ≦Wu≦Vminで電位差が生じる。このとき、非選択ビット線BLの電位Uuが‘0’状態のメモリセルMCを介して電位Ws=Vssの選択ワード線WLへ放電されたとしても、非選択ビット線BLの電位の範囲は、Vs≦Uu≦Vset-Δになる。また、非選択ワード線WLに対して‘0’状態のメモリセルMCを介した電位Us=Vsetの選択ビット線BLからの充電があったとしても、非選択ワード線WLの電位の範囲は、Δ≦Wu≦Vminになる。その結果、非選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCには状態を遷移させるようなバイアスは掛からないため、選択メモリセルMCの状態は遷移しない。また、選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCについては、選択ビット線BLの電位がUs=Vsetに設定され、非選択ワード線WLの電位が容量性カップリングの影響によってΔ≦Wu<Vminの範囲となる。そのため、セルユニットCU1がセット状態の場合、セルユニットCU2にはセット電位Vset以下の順方向バイアスしか掛からず、非選択メモリセルMCの状態は遷移しない。一方、セルユニットCU1がリセット状態の場合、イニシャルスタンバイフェーズ時においてビット線BL及びワード線WLの電位が数μs間Vmin-Δに維持され、中間ノード電位Vmが上昇する。そのため、セルユニットCU1にはセット電圧Vset以下の順方向バイアスしか掛からず、非選択メモリセルMCの状態は遷移しない。イニシャルスタンバイフェーズにおける電位設定の持続時間が短く、非選択メモリセルMCの中間ノード電位Vmが十分に上昇しない場合、‘2’状態のセルユニットCU1にはセット電圧Vset近い順方向バイアスが掛かることになり、セルユニットCU1はセット状態に遷移する可能性が少ないながらもある。また、選択メモリセルMCが‘0’状態に遷移しこの選択メモリセルMCに電流が流れると、選択ビット線BLはビット線ドライバ2 ́から遮断される。そのため、選択ビット線BLの電位Usは、電位Ws=Vssの選択ワード線WLに引っ張られ接地電位Vssに向かって低下する。しかし、‘0’状態のメモリセルMCは、順方向バイアスが低い程、実効的な抵抗値が高くなるため、非選択ビット線BLの電位は、Uu=VssΔ程度で飽和してしまう。その結果、セルユニットCU1には大きな逆方向バイアスが掛らないため、選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCの状態は遷移しない。非選択ビット線BL及び選択ワード線WL間の非選択メモリセルMCについては、選択ワード線WLの電位がWs=Vssに設定されている。また、非選択ビット線BLには、隣接ビット線BLから100の容量性カップリングの影響を受けるものとそうでないものが存在するため、非選択ビット線BLの電位の範囲はVmin-2Δ≦Uu≦Vset-Δとなる。その結果、非選択ビット線BL及び選択ワード線WL間の非選択メモリセルMCには状態を遷移させるようなバイアスが掛からず、状態は遷移しない。<‘0’状態設定時のバタフライ化したセルユニットCU1又はCU2を持つメモリセルの状態遷移>ここでは、セルユニットCU1又はCU2がバタフライ化したメモリセルMCに対する‘0’状態設定について図33を用いて説明する。図33中の表記については、図26と同様である。バタフライ化したセット状態のセルユニットCUには逆方向バイアスが掛からないため、このセルユニットCUの両端には電位差が生じないと考えられる。この場合、選択メモリセルMCのリセット状態のセルユニットCUには、常にセット電圧Vsetの順方向バイアスが掛かるため、セット状態に遷移する。一方、非選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCについては、正常なメモリセルMCの場合と同様、非選択メモリセルMCには状態遷移するようなバイアスが掛からず、状態は遷移しない。これに対し、選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMC並びに非選択ビット線BL及び選択ワード線WL間の非選択メモリセルMCについては、バタフライ化したセット状態のセルユニットCUにバイアスが掛からない事と、非選択メモリセルMCに順方向バイアスしか掛からないことから、セルユニットCUにはセット電圧Vset以上のバイアスが掛からない。その結果、非選択メモリセルMCが誤遷移することはない。<望ましい書き込みシーケンス>以上、セルユニットCUのバタフライ化を考慮し、選択メモリセルMCに対する状態設定毎に、メモリセルMCの状態遷移を説明した。そして、バタフライ化したセルユニットCUを持つ選択メモリセルMCは、‘1’状態から‘2’状態に遷移できないことが分かった。また、選択メモリセルMCに対する‘0’状態設定において、‘2’状態の非選択メモリセルMCが‘1’状態に誤遷移し得ることも分かった。即ち、これは、メモリセルMC‘2’には、エラーとして‘1’状態のメモリセルMCが混入し得るということである。しかし、このエラーは、ペアセルPCにZpの要素を記憶させる実施形態に係る半導体記憶装置の場合、Zpの要素の±1の変化に収まり、これは、リーメトリックコードの1の変化に相当する。つまり、このエラーは、ε=1のECCシステムで対応可能であり、ε=2のECCシステムに至っては余裕を持って対応することができる。図34は、実施形態の書き込みシーケンスの一例である。書き込みシーケンスとしては、初期状態設定消去によって、全てのメモリセルMCを‘1’状態にした後で他の状態を上書きする方法と、図34に示すように、初期状態設定消去によって全てのメモリセルMCを‘0’状態にした後で他の状態を上書きする方法を説明した。このうち、前者の方法は、‘2’状態設定の際に‘1’状態に遷移させる必要がないため、その点においては後者の方法よりも単純であると考えられる。しかし、その一方、後者の方法は、電位設定とその電位設定の持続時間の設定が面倒な‘0’状態設定を無くすことができるため、書き込みシーケンスの全体の処理時間や手順の少なさ、処理の複雑さににおいて、後者の方法の方が優れており望ましい方法と言える。ここで改めて後者の方法によるの望ましい書き込みシーケンスをまとめると次のようになる。つまり、図34に示すように、始めに、全てのメモリセルMC‘2’、MC‘1’及びMC‘0’を対象にして初期状態設定を実行する。これによって、メモリセルMC‘0’を含めた全てのメモリセルMCが‘0’状態に遷移する。続いて、‘0’状態設定を実行することなく、選択メモリセルMC‘2’及びMC‘1’を対象にして‘1’状態設定を実行する。これによって、メモリセルMC‘1’に対するデータの書き込みが完了する。最後に、選択メモリセルMC‘2’を対象にして‘2’状態設定を実行する。これによってメモリセル‘2’に対するデータの書き込みが完了する。<‘1’状態判定>ここからは、読み出しシーケンスにおける‘1’状態判定について説明する。なお、ここでは、1本の選択ワード線WLに共通に接続された複数のメモリセルMCを同時にアクセスする場合を前提に説明する。‘1’状態判定は、前述の‘0’状態判定後に実行されるもので、前‘1’状態判定ステップと‘1’状態判定ステップに大別することができる。‘0’状態判定ステップ後、メモリセルアレイ1のバイアス状態は、図35のようになる。つまり、‘0’状態判定ステップでは、非選択ワード線WLは、電位がWu=Vaccに設定された後、フローティング状態Wu~になる。一方、選択ワード線WLは、電位がWs=Vssに設定される。また、例えば、‘0’状態判定の基準となる参照ビット線RBL‘0’との比較で‘0’状態と判定された選択メモリセルMC‘0’に接続された選択ビット線BL‘0’は、ビット線ドライバ2 ́から遮断される。そのため、これら選択ビット線BL‘0’の電位は接地電位Vssに向かい低下し、最終的にUs=Vsで安定する。電位Vsは、VssΔ程度の電位である。これは、選択ビット線BL‘0’からは2個のセルユニットCU1及びCU2を介して放電するが、セット状態のセルユニットCU1又はCU2は、バイアスが低い程、実効的な抵抗値が高くなるためである。一方、‘0’状態と判定されなかった選択メモリセルMCに接続された選択ビット線BLと参照ビット線RBL‘0’の電位はUs=Vaccで維持される。非選択ビット線BL図35の場合、非選択BLは、電位がUu=Vaccに設定された後、フローティング状態Uu~となる。このメモリセルアレイ1の状態において、ビット線ドライバ2 ́から遮断されずに残っている選択ビット線BLに接続されている選択メモリセルMCが、‘1’状態又は‘2’状態のメモリセルMCとなる。そして、以下で説明する前‘1’状態判定ステップ及び‘1’状態判定ステップによって、これら選択メモリセルMCが‘1’状態か‘2’状態かを判定する。なお、‘1’状態判定は、選択メモリセルMC‘1’を‘0’状態に遷移させる破壊読み出しであり、前述の‘0’状態設定と同様の過程を用いる。次に、前‘1’状態判定ステップについて、図36を用いて説明する。前‘1’状態判定ステップでは、選択メモリセルMC‘0’に接続されており、ビット線ドライバ2 ́から遮断された選択ビット線BL‘0’、非選択ビット線BL及び参照ビット線RBL‘0’の電位をUs‘0’=Uu=Ur=Vmin-2ΔUrは、参照ビット線の電位である。、非選択ワード線WLの電位をWu=Vmin、選択ビット線BL及び選択ワード線WLの電位をUs=Ws=Vmin-Δに設定し、これを数μsの間維持する。この電位設定を数μsの間維持するのは、非選択ビット線BL等に接続された非選択メモリセルMC‘2’の中間ノード電位Vmが上昇する時間をできるだけ確保し、中間ノード電位Vmが低いことによって生じる非選択メモリセルMC‘2’のセルユニットCU1及びCU2の誤遷移を防止するためである。前‘1’状態判定ステップにおける電位は、容量性カップリングに対するディスターブマージンを確保でき、初期段階においてメモリセルMC‘2’の中間ノード電位Vmが接地電位Vss近くであっても、当該メモリセルMC‘2’のセルユニットCUが誤遷移しないような値となっている。次に、‘1’状態判定ステップについて、図37を用いて説明する。‘1’状態判定ステップでは、‘1’状態の破壊読み出しを行う。選択ビット線BL‘0’、非選択ビット線BL及び非選択ワード線WLをフローティング状態にすると共に、選択メモリセルMC‘1’のみが‘0’状態に遷移する電位設定を行い、この状態遷移時の選択ビット線BLの電流変化によって選択メモリセルMCの状態を判定する。選択ビット線BLの電位をUs=Vset、選択ワード線WLの電位をWs=Vss、必要に応じて参照ビット線RBL‘0’の電位をUr‘0’=Vaccに設定する。そして、参照ビット線RBL‘0’との電流比較などで、電流が大きくなった選択ビット線BLを遮断する。ここで、この新たに遮断された選択ビット線BLに接続された選択メモリセルMCが‘1’状態であり、遮断されない選択ビット線BLに接続された選択メモリセルMCが‘2’状態であると判定できる。‘0’状態へ遷移したメモリセルMC‘1’の電位Us‘0’や、非選択メモリセルMC‘0’を介して選択ワード線WL‘0’に接続される非選択ビット線BLの電位Uuは、電位Vsに向けて変化する。この‘1’状態判定ステップは、前述の‘0’状態設定と同様の過程となる。以上説明した‘1’状態判定によって、選択メモリセルMCの状態が‘0’状態、‘1’状態或いは‘2’状態かを判定することができる。しかし、メモリセルMC‘1’は、その状態が破壊されて‘0’状態に遷移してしまっているので、これを回復するための後述の‘1’状態再設定が必要となる。<‘1’状態判定時の選択メモリセルの状態遷移>書き込みシーケンスでは、初期状態設定によってメモリセルMCを‘1’状態に遷移させた上で他の状態を上書きしていたのに対し、読み出しシーケンスでは、メモリセルMCの状態が‘1’状態であるとは限らない。そこで、ここでは、‘1’状態判定時の各ステップにおけるメモリセルMCの状態遷移について説明する。‘1’状態判定では、センスアンプSAによって、選択メモリセルMC‘0’、MC‘1’及びMC‘2’の状態を区別して検知するが、その過程において非選択メモリセルMCを誤遷移させるようなことがあってはならない。この点について、図38を用いて確認する。図38は、‘1’状態判定時の選択ビット線BL及び選択ワード線WL間の選択メモリセルの状態遷移を示す図である。始めに、‘0’状態判定ステップで、全てのビット線BL及びワード線WLの電位がU=W=Vaccに設定される。その後、非選択ビット線BL及び非選択ワード線WLがフローティング状態になり、選択ビット線BLの電位がUs=Vaccに維持され、選択ワード線WLの電位がWs=Vssに設定される。その上で、選択メモリセルMCが‘0’状態かその他の状態かを判別する。そして、‘0’状態と判定された選択メモリセルMC‘0’に接続された選択ビット線BL‘0’は電流が遮断される。その結果、選択ビット線BL‘0’の電位は、Us‘0’=Vs≧VssΔとなる。選択メモリセルMCの中間ノード電位Vmについては、図38を参照されたい。続いて、前‘1’状態判定ステップでは、選択メモリセルMC‘0’に接続された選択ビット線BL‘0’の電位がUs0=Vmin-2Δ、その他の選択ビット線BLの電位がUs=Vmin-Δ、選択ワード線WLの電位がWs=Vmin-Δに設定される。その結果、セット状態のセルユニットCU1を持つ選択メモリセルMC‘0’及びMC‘1’については、中間ノード電位Vmが選択ビット線BLの電位に設定される。この前‘1’状態判定ステップでは、どのセルユニットCUにも状態遷移するようなバイアスは掛らない。この電位設定がしばらく維持されることで、メモリセルMC‘2’の中間ノード電位VmがΔ以上に上昇しメモリセルMC‘2’のセルユニットCU1がセット状態に誤遷移することを防止する。この電位設定が短いと、続く‘1’状態判定ステップで、メモリセルMC‘2’が‘1’状態に誤遷移する可能性が出てくることになる。最後に、‘1’状態判定ステップでは、選択ビット線BLの電位がUs=Vset、選択ワード線WLの電位がWs=Vssに設定され、選択メモリセルMC‘1’のみが‘0’状態に遷移する。そして、この選択メモリセルMC‘1’にセル電流が多く流れ始めたら選択ビット線BL‘1’は、ビット線ドライバ2 ́から遮断され、フローティング状態になる。これよって、選択ビット線BL‘1’の電位Usは、電位Vsで安定する。一方、メモリセルMC‘0’に接続された選択ビット線BL‘0’は、始めからフローティング状態であるため、容量性カップリングの影響によって、その電位Us0は、Vmin-2Δ≦Us0≦Vset-Δの範囲から電位Vsに向けて放電される。このように、‘1’状態判定ステップでは、新たに‘0’状態に遷移したメモリセルMC‘1’を検知することで、メモリセルMC‘1’の状態を判定することができる。なお、選択メモリセルMCについては、セルユニットCUがバタフライ化していても、前述の‘0’状態設定の場合と同様、ディスターブの問題は生じない。<‘1’状態読み出し時の選択ビット線に接続された非選択メモリセルの状態遷移>次に、‘1’状態判定時の選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCの状態遷移について図39を用いて説明する。始めに、‘0’状態判定ステップで、選択ビット線BLの電位がUs=Vacc、非選択ワード線WLの電位がWu=Vaccに設定される。その後、非選択ワード線WLがフローティング状態になる。選択ビット線BLに接続された選択メモリセルMCの中間ノード電位Vmについては、図39を参照されたい。続いて、前‘1’状態判定ステップでは、選択メモリセルMC‘0’に接続された選択ビット線BL‘0’の電位がUs‘0’=Vmin-2Δ、その他の選択ビット線BLの電位がUs=Vmin-Δ、非選択ワード線の電位がWu=Vminに設定される。なお、選択ビット線BLの電位は、選択メモリセルMCの状態によって、Us‘0’又はUsにも該当するため、図39では電位Us‘0’を内で示している。セット状態のセルユニットCU1を持つ‘0’状態及び‘1’状態のメモリセルMCの中間ノード電位Vmは、選択ビット線BLの電位Usに設定される。この前‘1’状態判定ステップでは、どのセルユニットCUにも状態遷移を起こすようなバイアスは掛らない。この電位状態をしばらく維持してメモリセルMC‘2’の中間ノード電位VmをΔ以上に上昇させてメモリセルMC‘2’のセルユニットCU1がセット状態に誤遷移しないようにする。この電位設定が短いと、続く‘1’状態判定ステップで、メモリセルMC‘2’が‘1’状態に誤遷移する可能性が出てくることになる。最後に、‘1’状態判定ステップでは、選択ビット線BLの電位がUs=Vset、選択ワード線WLの電位がWs=Vssに設定され、選択メモリセルMC‘1’のみが‘0’状態に遷移する。非選択ワード線WLは、この時フローティング状態であるので、容量性カップリングによって、電位がΔ≦Wu≦Vminの範囲で分布する。非選択メモリセルMC‘0’は、選択ビット線BLの電位Us=Vsetがフローティング状態の非選択ワード線WLに伝わり、非選択ワード線WLの電位はWu=Vset-Δ程度になる。選択ビット線BLの電位は、その後Us=Vsetのままか、ビット線ドライバ2 ́から遮断されたフローティング状態Vsとなる。この場合であっても、セット電圧Vsetとリセット電圧Vresetが同程度であれば、メモリセルMCの状態に拘わらず、セルユニットCU1がリセット状態に遷移するだけのバイアスは掛らないため、メモリセルMCの状態は遷移せず、ディスターブは生じない。なお、セルユニットCUがバタフライ化していても、前述の‘0’状態設定と同様、ディスターブの問題は生じない。<‘1’状態読み出し時の選択ワード線に接続された非選択メモリセルの状態遷移>次に、‘1’状態判定時の非選択ビット線BL及び選択ワード線WL間の非選択メモリセルMCの状態遷移について図40を用いて説明する。始めに、‘0’状態判定ステップでは、電位Vaccで設定されたビット線BL及びワード線WLのうち、選択ビット線BLの電位がUs=Vacc、選択ワード線WLの電位がWs=Vssに設定され、非選択ビット線BLがフローティング状態となっている。メモリセルMC‘0’に接続されたフローティング状態の非選択ビット線BL‘0’の電位Uuは、電位Vsへと放電される。非選択ビット線BL及び選択ワード線WL間の非選択メモリセルMCの中間ノード電位Vmについては、図40を参照されたい。続いて、前‘1’状態判定ステップでは、非選択ビット線BLの電位がUu=Vmin-2Δ、選択ワード線WLの電位がWs=Vmin-Δに設定される。セット状態のセルユニットCU1を持つメモリセルMC‘0’及びMC‘1’の中間ノード電位Vmは、非選択ビット線BLの電位Uuに設定される。前‘1’状態判定ステップでは、どのセルユニットCUに対しても、状態遷移が起こるようなバイアスは掛らない。この電位設定をしばらく維持してメモリセルMC‘2’の中間ノード電位Vmを上昇させることで、メモリセルMC‘2’のセルユニットCU1のセット状態への誤遷移を回避するためのマージンを稼ぐ。最後に、‘1’状態判定ステップでは、選択ビット線BLの電位がUs=Vset、選択ワード線WLの電位がWs=Vssに設定され、メモリセルMC‘1’のみが‘0’状態に遷移する。非選択ビット線BLは、容量性カップリングによって、電位がVmin-2Δ≦Uu≦Vset-Δの範囲で分布する。非選択メモリセルMC‘0’に接続されたフローティング状態の非選択ビット線BL‘0’の電位Uuは、選択ワード線WLに放電され電位Vs程度になる。そのため、非選択メモリセルMC‘0’の中間ノード電位Vmは、接地電位Vss程度になる。メモリセルMCの状態に拘わらず、セルユニットCUには状態遷移するだけのバイアスは掛からないため、メモリセルMCの状態は遷移しない。なお、セルユニットCUがバタフライ化していても、前述の‘0’状態設定と同様、ディスターブの問題は生じない。<‘1’状態読み出し時の非選択ビット線及び非選択ワード線に接続された非選択メモリセルの状態遷移>次に、‘1’状態判定時の非選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCの状態遷移について図41を用いて説明する。始めに、‘0’状態判定ステップでは、電位Vaccで設定されたビット線BL及びワード線WLのうち、選択ビット線BLの電位がUs=Vacc、選択ワード線WLの電位がWs=Vssで設定され、非選択ビット線BLはフローティング状態になっている。メモリセルMC‘0’に接続されたフローティング状態の非選択ビット線BL‘0’の電位Uuは、電位Vsへと放電される。非選択ビット線BL及び非選択ワード線WL間の非選択メモリセルMCの中間ノード電位Vmについては、図41を参照されたい。続いて、前‘1’状態判定ステップでは、非選択ビット線BLの電位がUu=Vmin-2Δ、非選択ワード線WLの電位がWu=Vminに設定される。セット状態のセルユニットCU1を持つ非選択メモリセルMC‘0’及び‘1’の中間ノード電位Vmは、非選択ビット線BLの電位Uuに設定される。この前‘1’状態判定ステップでは、どのセルユニットCUに対しても、状態遷移が起こるようなバイアスは掛らない。最後に、‘1’状態判定ステップでは、選択ビット線BLの電位がUs=Vset、選択ワード線WLの電位がWs=Vssに設定され、メモリセルMC‘1’のみが‘0’状態に遷移する。そのため、フローティング状態の非選択ビット線BLは、当該非選択ビット線BL及び選択ワード線WL間の非選択メモリセルMCが‘0’状態である場合、電位Vsに放電する。そうでない場合には、容量性カップリングによって、電位がVmin-2Δ≦Uu≦Vset-Δの範囲で分布し、結局、電位は、Vs≦Uu≦Vset-Δの範囲となる。非選択ワード線WLは、容量性カップリングによって、電位がΔ≦Wu≦Vminの範囲となる。メモリセルMCの状態に拘わらず、セルユニットCUには状態遷移するだけのバイアスは掛からないため、メモリセルMCの状態は遷移しない。なお、セルユニットCUがバタフライ化していても、前述の‘0’状態設定と同様、ディスターブの問題は生じない。以上、選択メモリセルMCに対する‘1’状態判定時のメモリセルMCの状態遷移を説明したが、いずれのメモリセルMCは遷移しないことが分かる。<‘1’状態再設定>ここでは、破壊読み出しによって破壊された‘1’状態のメモリセルMCの状態を、‘0’状態に復帰させる‘1’状態再設定について説明する。図42は、実施形態に係る半導体記憶装置のフローティングアクセス方式による読み出し動作の‘1’状態判定ステップ後のメモリセルアレイ1のバイアス状態を示す図である。選択メモリセルMCの状態の判別が終了した後、即ち‘1’状態判定後では、参照ビット線RBL‘0’と選択メモリセルMC‘2’が接続された選択ビット線BL‘2’及び選択ワード線WL以外のビット線BL及びワード線WLはフローティング状態になっている。そのため、特に、選択ビット線BLのうちメモリセルMC‘0’及びMC‘1’に接続された選択ビット線BL‘0’及びBL‘1’の電位Usと非選択ビット線BLのうち選択ワード線WLとの間でメモリセルMC‘0’を持つ非選択ビット線BLの電位Uuは、接地電位Vssに向かって電位Vsに放電される。このバイアス状態から‘1’状態再設定を行う。‘1’状態再設定の過程は、前‘1’状態再設定ステップと‘1’状態再設定ステップに大別することができる。これら前‘1’状態再設定ステップと‘1’状態設定ステップは、前述の‘1’状態設定のアクティブスタンバイフェーズと同様である。図43は、実施形態に係る半導体記憶装置のフローティングアクセス方式による読み出し動作の前‘1’状態再設定ステップ時のメモリセルアレイ1のバイアス状態を示す図である。前‘1’状態再設定ステップでは、‘1’状態が判別された選択ビット線BLの電位Us‘1’を接地電位Vssに設定すると、当該選択ビット線BLに接続されたメモリセルMCが‘1’状態再設定の対象となる。他のビット線BL及びワード線WLは、電位Us=Uu=Ws=Wu=Vmin-Δに設定する。これは前述の‘1’状態設定のアクティブスタンバイフェーズにおける選択ビット線BLが選択ビット線BL‘1’であった場合に相当する。図44は、実施形態に係る半導体記憶装置のフローティングアクセス方式による読み出し動作の‘1’状態再設定ステップ時のメモリセルアレイ1のバイアス状態を示す図である。‘1’状態再設定ステップでは、選択ワード線WLの電位をWs=VresetΔとして、‘1’状態に遷移してしまったメモリセルMC‘0’を‘1’状態に復帰させる。なお、非選択メモリセルMCへのディスターブや、セルユニットCUがバタフライ化した場合のメモリセルMCの状態遷移については‘1’状態設定と同様であるため説明は省略する。<メモリセルアレイのアクセス禁止領域>ここでは、実施形態のメモリセルを用いた場合のアクセス禁止領域について説明する。図45は、実施形態に係る半導体記憶装置のメモリセルアレイにおける欠陥発生時の処理方法を説明する図である。実施形態のように2つのセルユニットCU1及びCU2を積層して多値化したメモリセルMCを用いることで、フローティングアクセス方式の特徴であるメモリセルアレイ1に欠陥が発生した場合でも、従来の半導体記憶装置と比較して、メモリセルの有効範囲の縮小を抑えることができる。前述のように、セルユニットCUがバタフライ化して逆方向バイアスに対する抵抗値が低くなったメモリセルMCが発生した場合、当該メモリセルMCが属するメモリセルマットMMの全てのメモリセルMMの電位の設定ができなくなり、メモリセルMCとして有効でなくなってしまう。バタフライ化するセルユニットCUの確率をbとすると、2つのセルユニットCUを積層してなるメモリセルMC全体がバタフライ化する確率はb2となり、かなり低減される。そのため、セルユニットCUがバタフライ化したとしても、メモリセルMCの状態をECCによって訂正できるだけでなく、メモリセルMC全体のリバース特性も保たれるため、メモリセルマットMM内の他のメモリセルMCの利用に影響は及ばない。また、フローティングアクセス方式の場合、非選択ビット線BL及び非選択ワード線WLがフローティング状態になるため、他のメモリセルマットMMに与える影響もない。つまり、メモリセルMCのセルユニットCU1及びCU2のいずれか一方に欠陥が生じても、図45に示すように、メモリセルアレイ1の欠陥発生部位を選択するビット線及びワード線の同時アクセスドライブ禁止領域が、ECC訂正不可能領域に一致するため、メモリセルマットMM全体に及ぶことはない。そのため、ハードディスクと同様のアドレ管理によって、メモリセルアレイ1の一部に欠陥が発生した際の処理が非常に容易となる。以上のように、実施形態に係るメモリセルMCを用いたメモリセルアレイ1に対してフローティングアクセス方式によるアクセス動作をすることで、ECCのエラー訂正能力を超える欠陥が発生した場合であっても、その欠陥発生部位のアドレスへのアクセスを禁止するだけで、メモリセルアレイ1の他の正常な領域を最大限利用することができる。<ペアセルに対するアクセス>実施形態では、前述のように、Zpp=7の要素をペアセルPCの9つの状態に対応付けてデータを記憶する。そのため、これらペアセルPCを同時に選択できれば、高速なアクセスに資する。実施形態のメモリセルMCの場合、ワード線に共通に接続されたメモリセルMCの場合、同時にアクセスが可能である。そこで、ここでは、ペアセルPCの構成方法について説明する。図46~図48は、実施形態に係る半導体記憶装置におけるペアセルの構成例を説明する図である。図46は、同一のメモリセルマットMM1内の2つのメモリセルMCでペアセルPCを構成する例である。具体的には、メモリセルマットMM2のうち、ビット線BL20及びワード線WL10間のメモリセルMC200と、ビット線BL21及びワード線WL10間のメモリセルMC201によってペアセルPCが構成されている。実施形態に係る半導体記憶装置の場合、1本のワード線WLに対して複数ビット線BLを選択することで、データの転送効率を上げることが前提となっているため、この例のように同一のメモリセルマットMM内でペアセルPCを構成するの容易である。特に、メモリセルマットMM内でセンスアンプ系SAなどを共有化できるため、レイアウトの観点からも望ましい例と言える。図47及び図48は、異なるメモリセルマットMMの2つのメモリセルMC0、MC1でペアセルPCを構成する例である。これら構成例の場合、メモリセルMC0及びMC1に同時にアクセスするには、少なくともワード線WLを共有する2つのメモリセルマットMMの選択が必要となる。図47は、メモリセルマットMM1内のビット線BL10及びワード線WL10間のメモリセルMC100と、メモリセルマットMM1とワード線WLを共有するメモリセルマットMM2内のビット線BL21及びワード線WL10間のメモリセルMC201によってペアセルPCが構成されている。この場合、ビット線BL00とビット線BL21が異なるビット線グループに属しているため、センスアンプ系SAのメモリセルマットMMの選択回路が少々複雑になる。図48は、メモリセルマットMM1内のビット線BL00及びワード線WL10間のメモリセルMC100と、メモリセルマットMM1とワード線WLを共有するメモリセルマットMM2内のビット線BL20及びワード線WL10間のメモリセルMC200によってペアセルPCが構成されている。この場合、ビット線BL00とビット線BL20が同一のビット線グループに属しているため、メモリセルマットMM1とメモリセルマットMM2では、異なるセンスアンプ系SAが必要となる。以上の点から、図47及び図48に示すペアセルPCの構成例は、半導体記憶装置の仕様やレイアウトについて制約が多い場合など、採用される用途は限定的である。なお、図46~図48に示したペアセルPCの構成例は、いずれも選択ワード線WL上では参照電流を供給する参照セルRCを選択する参照ビット線RBLも同時に選択される。なお、参照セルRCは‘0’状態に設定されたメモリセルMCであり、ここに流れるセル電流をカレントミラーで小さくすることで、メモリセルMCに流れるセル電流と比較するための参照電流が作られる。<複数のメモリセルに対する並列アクセス>ペアセルPCで構成される多値記憶の半導体記憶装置は、メモリセルMCの書き込み動作は複雑であったり、読み出し動作も破壊読出しでリカバリーのためのデータの再設定を伴ったりするため、アクセスに必要なサイクル時間は、10μs程度と長くなってしまう。そこで、データ転送の効率を向上させるには、メモリセルアレイ1内の同時選択できるビット線BLを全て駆動しておき、多くのデータの転送を同時に行う並列アクセスが必須となる。以下に複数のメモリセルMCに対する並列アクセスする方法について図49を用いて説明する。書き込み動作、読み出し動作に拘わらず、そのシーケンスの中の選択ワード線WLに電位を設定して選択メモリセルMCにアクセスをするまでは、メモリセルマットMM内の電位状況は、場所に応じて自己整合的にほぼ一定になっている。そのため、ビット線BLとワード線WLの交差部のメモリセルMCを選択する過程を選択ワード線WL毎に一から繰り返さなくても、一組のメモリセルMCに対するアクセスができる。アクセスシーケンスのどのフェーズ/ステップから繰り返すかは、4種類のアクセスシーケンス初期状態設定、‘2’状態設定、‘1’状態設定、‘0’状態設定及び読み出し動作毎に異なるが、アクセスシーケンスの全過程を繰り返す必要はないため、短いサイクルで高速なアクセスを実現することができる。したがって、選択ビット線BLのスキャンを行わずに同じビット線BLを選択し続け、ワード線WLは切り替える度に、アクセスシーケンス毎に途中のフェーズ/ステップから処理を続ける。一組のワード線WL群に対して、同じアクセスシーケンスを、選択ワード線を順次切り替えながら、繰返しの先頭フェーズ/ステップの電位設定をして、一連のフェーズ/ステップを実行すれば、そのワード線WLに関するアクセスが完了する。ここで、一組のワード線WL群をワード線セットと呼ぶことにする。メモリセルマットMMは、このワード線セットが複数備わっている。図49の場合、メモリセルアレイ1上の斜線で表した部分がワード線セット1つ分となる。ここで説明した並列アクセスの場合、ある状態設定の書き込みシーケンスをワード線セット全体に対して実行するため、ワード線セットを構成するメモリセルMC分の情報を一時的に保持しておくバッファが必要となる。データの転送効率について具体例で説明する。Zpp=7の要素を記憶するε=1のリーメトリックコードのECCを考えると、1コードは、6つのペアセルPCで記憶され、1コードには、9ビットの訂正可能情報を構成することができる。8Kワード線×4Kビット線を有するメモリセルマットMMの場合、全てのビット線BLから同時にデータ転送を行うことができるとして、ワード線WL毎のデータアクセスに必要な1サイクルの時間を20μsとし、4K×1/2のペアセルPCを選択する。この場合、これは4K×1/2×1/6コードになり、これは3Kビットの訂正可能情報となるため、訂正可能情報の転送効率は、3K/20μs=150Mbpsとなる。図49中Bに示すように、N個のメモリセルマットMMに同時にアクセスすれば、N倍の転送可能情報の転送効率、即ちN倍のバンド幅を得ることもできる。但し、各ワード線セットに対応するバッファのサイズも大きくする必要がある。バッファのサイズを変えず、ワード線セットのサイズを1/Nにしても良いが、この場合、ワード線WLのスキャン本数は、当然1/Nになる。[半導体記憶装置の具体的構成]<全体構成>前述の実施形態のメモリセルMCを用いた半導体記憶装置の構成例の概要について、図50に示すブロック図を用いて説明する。メモリセルMCには、例えば、銀イオンなどの固体電解質中での析出を利用した所謂イオンメモリを用いる場合を前提とする。図50に示す半導体記憶装置は、大別して、メモリデバイス100と、このメモリデバイス100を制御するメモリコントローラ200からなる。メモリデバイス100には、メモリセルアレイ1と、メモリコントローラ200及びメモリセルアレイ1間のデータ送受をするためのバッファレジスタが含まれる。メモリセルアレイ1は、メモリセルMCであるイオンメモリをマトリックス状に配列してなるメモリセルマットMMによって複数に分割されている。更に、各メモリセルマットMMは、複数のワード線セットによって構成されている。これらワード線セットは、前述の通り、アクセスの高速化を図るための領域であり、データの転送効率を向上させるために、複数のメモリセルマットMMそれぞれのワード線セットは、同時にアクセスされる。バッファレジスタは、これら同時にアクセスされるワード線セット内のメモリセルMCに読み書きするデータを保持する。メモリコントローラ200は、外部から入力されたデータのメモリデバイス100への書き込み、メモリデバイス100のメモリセルアレイ1が記憶するデータのECCの処理などに必要な制御を行う。<コントローラによるデータの処理>ここでは、コントローラのデータ処理について、多値記憶のメモリセルを用いた実施形態に特徴的な部分を中心に説明する。実施形態に半導体記憶装置は、9つの状態を記憶可能なペアセルPCの各状態にZpp=7の各要素を対応付けるものであり、エラーは、リーメトリックコードにおいて1の範囲で収まるため、搭載すべきECCシステムのエラー訂正能力がε=1で良い。但し、ここでは、ε=2の場合についても少し言及しておく。図51は、エラー訂正能力をε=1とした場合の実施形態に係る半導体記憶装置のメモリコントローラ200の機能ブロック図である。データの書き込みは、始めに、M=9ビットずつのまとまりでバイナリのデータDがメモリコントローラ200に入力される。このデータDは、7進数変換部201に入力される。7進数変換部201では、バイナリ表現のデータDを、各桁がZpp=7の要素となる7進数表現に変換してデータAを生成する。このデータAは、エンコード部202に入力される。エンコード部202は、データAをリーメトリックコードCに変換する。このコードCは、メモリデバイス100に転送され、9値の記憶が可能なペアセルPCイオンメモリにプログラムされる。データの読み出しは、始めに、メモリデバイス100からコードYを読み出す。このコードYは、多値レベルの誤認識のエラーを含んだリーメトリックコードである。以降、このコードYからエラーのないリーメトリックコードCを復元する。コードYは、シンドローム生成部203に入力される。シンドローム生成部203では、コードYからシンドロームをS=YHtHはシンドローム行列であり、Htはその転置行列であるによって求める。Sの成分が値を持つ場合S≠0、この演算で得られたS0のリーメトリック|S0|≠1であれば、エラー訂正ができないためNG信号を出力して処理を中止する。この場合、コードYのエラーをそのままエラー無しのデータとして外部に出力させる。S=0の場合、この場合はデータYにエラーがない場合であるため、やはりコードYをそのまま外部に出力させる。その他のシンドロームSの場合、シンドロームSは解探索多項式生成部204に入力される。解探索多項式生成部204では、シンドロームS=S0,S1からψ1=S1として、多項式Ψx=1Ψ1xとΨx=1-ψ1xを生成する。これら多項式Ψx及びΨxは、エラー探索部205及び206で順次処理される。エラー探索部205及び206では、S0=1の場合、多項式λx=Ψxとνx=1とし、或いは、S0=-1の場合、多項式λx=1とνx=Ψxとするとキー条件を満足し、エラー成分の位置t=r-1=S0S1及びエラー量et=S0を求める。このエラー量etは、コード復元部207に入力される。コード復元部207では、エラー量からct=yt-etとして、コードCを復元する。このコードCは、デコード部208に入力される。デコード部208では、コードCのp進数の各桁をZpp=7の要素に変換しデータAを復元する。このデータAは、23進数変換部209に入力される。23変換部209では、p進数表現のデータAをバイナリ表現のデータDに変換し、メモリコントローラ200の外部に出力する。図51は、エラー訂正能力をε=1とした場合の最も簡単なリーメトリックコードを用いたECCシステムを搭載したメモリコントローラ200の処理について説明した。しかし、より強いエラー訂正能力が欲しい場合もある。そこで、次に、エラー訂正能力をε=2とした場合のリーメトリックコードを用いたECCシステムを搭載したメモリコントローラ200について説明する。ここでは、図51の例と同様、p=7とした場合について説明する。図52は、エラー訂正能力をε=2とした場合の実施形態に係る半導体記憶装置のメモリコントローラ200の機能ブロック図である。データの書き込みは、始めに、M=6ビットずつのまとまりでバイナリのデータDがメモリコントローラ200に入力される。このデータDは、7進数変換部201に入力される。7進数変換部201では、バイナリ表現のデータDを、各桁がZpp=7の要素となる7進数表現に変換してデータAを生成する。このデータAは、エンコーダ部202に入力される。エンコーダ部202では、データAをリーメトリックコードCに変換する。このコードCは、メモリデバイス100に転送され、9値の記憶が可能なペアセルPCイオンメモリにプログラムされる。データの読み出しは、始めに、メモリデバイス100からコードYを読み出す。このコードYは、多値レベルの誤認識のエラーを含んだリーメトリックコードである。以降、このコードYからエラーのないリーメトリックコードCを復元する。コードYは、シンドローム生成部203に入力される。シンドローム生成部203では、コードYからシンドロームをS=YHtによって求める。Sの成分が値を持つ場合S≠0、この演算で得られたS0のリーメトリック|S0|>2であれば、個々のエラーコード成分の和は必ず3以上になるため、エラー訂正ができないためNG信号を出力して処理を中止する。この場合、コードYのエラーをそのままエラー無しのデータとして外部に出力させる。S=0の場合、この場合はコードYにエラーがない場合であるため、やはりコードYをそのまま外部に出力させる。その他のシンドロームSの場合、シンドロームSは、解探索多項式生成部204に入力される。解探索多項式生成部204では、シンドロームS=S0,S1,S2からψ0=1、ψ1=-S1、ψ2=-ψ1S1ψ0S2/2として、多項式Ψxを生成する。この多項式Ψxは、ユークリッド反復法処理部251に入力される。ユークリッド反復法処理部251では、多項式Ψxとx3からユークリッド反復法で多項式λx=fnとνx=pn-1を求める。ここで、多項式λx及びνxを求めることができない場合、NG信号を出力して処理を中止する。この場合、コードYのエラーをそのままエラー無しのデータとしてして外部に出力させる。これら多項式λx及びνxは、エラー探索部252及び253で順次処理される。エラー探索部252及び253では、多項式λx及びνxの根と多重度からエラー成分の位置tとエラー量etを求める。即ち、多項式λx及びνxが2次以下の多項式であるので、λr=0から根r及び多重度nを求め、エラー成分の位置t=r-1及びエラー量et=nを求める。同様に、νr=0から根r及び多重度nを求め、エラー成分の位置t=r-1及び位置t=7-nを求める。このエラー量etは、コード復元部207に入力される。コード復元部207では、エラー量etからct=yt-etとして、コードCを復元する。このコードCは、デコード部208に入力される。デコード部208では、コードCのp進数の各桁をZpp=7の要素に変換しデータAを復元する。このデータAは、23進数変換部254に入力される。23進数変換部254では、p進数表現のデータAをバイナリ表現のデータDに変換し、メモリコントローラ200の外部に出力する。なお、以下において、メモリデバイス100などバイナリでデータを取り扱う環境をbinaryworldと呼ぶことにする。これに対し、データをZpの数で取り扱うメモリコントローラ200などの環境をp-adicZpworldと呼ぶことにする。この場合binaryworldは、p-adicZ2worldと呼ぶこともできる。<7進数変換部>ここからは、メモリコントローラ200におけるデータ処理で用いる各機能ブロックについて説明する。先ず、メモリコントローラ200の入口と出口において必要となるバイナリとp進数7進数の変換回路について説明する。図53は、p=7とした場合のbinaryworldのδ桁の2h進数のデータDd0,d1,,dδ-1をp-adicZpworldのδ1桁のp進数のデータAa0,a1,,aδ-1,aδに変換する変換回路の構成を模式的に示した図である。図53中のハッチングで示す部分は、処理が終了したデータを示している。なお、図53に示す3resと示した四角は、入力されたバイナリデータを7で割り、商と剰余を求める演算回路である。この演算回路の入力は3ビットのバイナリデータであり、出力はこのバイナリデータを7で割った剰余となる。また、入力されたバイナリデータが7より大きい場合、商をキャリーCとして出力する。以下、この演算回路素子を3res回路ブロックと呼ぶ。始めに、第0ステップ図53中S0では、3桁の23進数のデータDd0,d1,d2に対して最右側のd2側から7の数え上げを行う。ここでは、d2に対して、3res回路ブロックに入力された4ビットのバイナリデータの最上位ビットに0を入れてd2を7で割った剰余と共に商であるキャリーC16を直接生成する。続いて、1~3ビット目が先の3res回路ブロックの出力3ビットで表現された剰余、0ビット最下位ビット目がd1の最上位ビットD12=D8である4ビットのバイナリデータを入力とする次の3res回路ブロックによって、入力されたバイナリデータを7で割った剰余と共に商であるキャリーC15を作る。以降、3res回路ブロックに入力される4ビットのバイナリデータのうちの0ビット目がd0の最下位ビットD00=D0になるまで、7個の3res回路ブロックを用いてキャリーC10~C16を生成する。これら生成されたキャリーC10~C16によって表現されるバイナリデータは、データDに含まれる7の個数になっている。そして、d0を入力とする3res回路ブロックの出力が、4桁の7進数のデータAa0,a1,a2,a3のうち、a0のバイナリ表示になる。続いて、第1ステップ図53中S1では、第0ステップで得られたデータDに含まれる7の個数に対して、更に7がいくつ含まれるかを計算して72の個数を求め、7進数のデータAの重み71の桁の係数a1のバイナリを求める。第1ステップでは、キャリーC10~C16に対して最右側のC16側から7の数え上げを行う。キャリーC14~C16に対する7の数え上げに際しては、4ビットの入力バイナリデータの最上位ビットに0を入れて入力バイナリデータを7で割った剰余と共にキャリーC24を直接生成する。続いて、1~3ビット目が先の3res回路ブロックの出力3ビットで表現された剰余、0ビット最下位ビット目がC13である4ビットのバイナリデータを入力とする次の3res回路ブロックによって、入力されたバイナリデータを7で割った剰余と共に商であるキャリーC23を生成する。以降、3res回路ブロックに入力される4ビットのバイナリデータのうちの0ビット目がC1iの最下位ビットC10になるまで、5個の3res回路ブロックを用いてキャリーC20~C24を生成する。これら生成されたキャリーC20~C24によって表現されるバイナリデータは、データDに含まれる素数72の個数になっている。そして、C10を入力とする3res回路ブロックの出力が、4桁の7進数のデータAa0,a1,a2,a3のうち、a1のバイナリになる。続く第2ステップ図53中S2では、第1ステップで得られたデータDに含まれる72の個数に対して、更に素数7がいくつ含まれるかを計算して73の個数を求め、7進数のデータAの重み72の桁の係数a2のバイナリを求める。以降、同様に7進数の重み73の桁の係数a3のバイナリ表示を求める第3ステップ図53中S3まで行う。なお、第3ステップのキャリーC40は計算には使用しない。次に、4bitmod7回路ブロックを用いた7進数変換部201の構成について考える。ここで、4bitmod7回路ブロックとは、4ビットのバイナリデータである入力Aと、素数7を比較し、Aが7以上の場合にPF0=‘1’を出力すると共に、Aの素数7による剰余Qを出力する回路である。詳細については後述する。図54中Aは、7進数変換部201の第kステップの回路を、4bitmod7回路ブロックを用いて構成したものである。ここでは、データを3桁の23進数表現にした場合の第j桁目をdjとする。この場合、djは3ビットのバイナリで表示できるが、この表示の係数Dを他のdの係数Dと共通に表現するために、数1に示すようにサブインデックスを用いる。[数1]また、第kステップの演算の入力である前ステップ第k-1ステップのキャリーはCk0~Ck33-kk-1であり、各々のCkjはサブインデックスjを2の累乗の指数とする2進数としての係数となっていて、この2進数によって表現される数ΣCkj2jがデータに含まれる7kの個数となる。第kステップでは、図54中Aに示すように、入力は33-kk個のバイナリキャリーCk0~Ck33-kk-1であり、これを33-k1k1個の4bitmod7回路ブロックで受ける。1つ目の4bitmod7回路ブロック<1>は、入力バイナリA0~A2、A3に、それぞれCk33-kk-3~Ck33-kk-1、0を入力し、出力Q0~Q3、キャリーPF0から、それぞれR33-k1k0~R33-k1k2、Ck133-k1kを出力する。図示しない2つ目の4bitmod13回路ブロック<2>は、入力バイナリA0、及びA1~A3にそれぞれキャリーCk33-k1k-1、及び1つ目の4bitmod7回路ブロック<1>の出力R33-k1k0~R33-k1k2を入力し、出力Q0~Q2、及びキャリーPF0から、それぞれR33-k1k-10~R33-k1k-12、及びCk133-k1k-1を出力する。以降、図54中Aに示すように、同様の入出力を持つ4bitmod7回路ブロックが、合計33-k1k1個並び、各4bitmod7回路ブロックから出力されるキャリーCk10~Ck133-k1kが、次のステップである第k1ステップの入力となる。このように、バイナリから7進数への変換は、図54中Bに示す模式図のように、キャリーCの最上位ビット側から順次実行される。図54中Aは、第kステップに関係する回路構成であるが、各ステップを時分割で処理することで、図54中Aに示す回路構成を各ステップで使い回すことができる。この場合、各4bitmod7回路ブロックの入出力を単純なオン/オフによって制御可能にするために、4bitmod7回路ブロックの必要数が最大となる第0ステップの回路構成に、更に、6個の4bitmod7回路ブロックが付加される。この様に構成された13個の4bitmod7回路ブロックからなる回路を図55に示す。以下において、この回路をXtop回路ブロックと呼ぶ。図56に示すように、このXtop回路ブロックの入力は、C00~C014の合計15個となっている。また、出力は、3個おきの4bitmod7回路ブロックから出力される4個の3ビットのバイナリR00~R02、R30~R32、R60~R62、R90~R92と、次のステップの入力となる13個のキャリーC10~C112となる。次に、図53に示した3res回路ブロックである4bitmod7回路ブロックについて具体的に説明する。図57は、4bitmod7回路ブロックの回路記号を示す図である。4bitmod7回路ブロックは、4ビットのバイナリA0~A3を入力し、3ビットのバイナリQ0~Q2及びキャリーPF0を出力する。4bitmod7回路ブロックは、入力バイナリAの素数7による剰余Qを出力すると共に、入力バイナリAが7以上の場合にPF0から‘1’、7未満の場合にPF0から‘0’を出力する。ここで、h=3、p=7の場合、バイナリA、バイナリQ、素数pの間には、数2に示す関係が成立する。[数2]図58は、4bitmod7回路ブロックのブロック図である。4bitmod7回路ブロックは、PF0生成部U1及び3個の半加算器HalfadderHA1~HA3を有する。PF0生成部U1は、所定の電圧が供給されるVcc端子と、接地電圧が供給されるVss端子との間に、直列に接続されたPMOSトランジスタQP1及び、QP2及びNMOSトランジスタQN1~QN3を有する。これらトランジスタQP1、QP2、QN1、QN2、及びQN3は、それぞれA3、A0、A0、A0、及びA1で制御される。また、PF0生成部U1は、その他に、2個のPMOSトランジスタQP2、QP3、NMOSトランジスタQN4、及びインバータIV1を有する。トランジスタQP3、QP4は、それぞれ、トランジスタQP2のソース及びドレイン間に並列に接続されている。トランジスタQN4は、トランジスタQN1のソース及びトランジスタQN3のドレインVss端子間に並列に接続されている。これらトランジスタQP3、QP4及びQN4は、それぞれA1、A2及びA3で制御される。インバータIV1は、入力がトランジスタQN1及びQN4のソースに接続されている。このインバータIV1の出力がキャリーPF0になる。半加算器HA1は、入力がA0及びPF0、出力がQ0、桁上げ出力がC0となっている。半加算器HA2は、入力がC1及びA1、出力がQ1、桁上げ出力がC1となっている。半加算器HA3は、入力がC1及びA2、出力がQ2となっている。以上の構成によって、PF0生成部U1は、4bitmod7回路ブロックに入力されるバイナリAが7以上か否かを判断し、その結果をPF0から出力する。バイナリAが7以上の場合、7をバイナリAから引くために、半加算器HA1~HA3によって、4ビットバイナリの7の補数である1をバイナリAに加えている。次に、7進数変換部201のコア部分となるp-adic回路ブロックについて説明する。図59は、p-adic回路ブロックの回路記号を示す図である。p-adic回路ブロックは、図59に示すように、B0~B5、I0~I15を入力し、r0~r15を出力する。図60は、p-adic回路ブロックのブロック図である。p-adic回路ブロックは、1ステップの回路構成をXtop回路ブロックとして、これにXtop回路ブロックの入出力を制御する制御スイッチSWが付加された構成となっている。具体的には、入力I0~I2、I3~I5、、I12~I14は、それぞれ、制御スイッチSW1を介してC00~C02、C03~C05、C012~C014としてXtop回路ブロックに入力される。これら制御スイッチSW1は、それぞれ入力B1~B5によって制御される。C00~C014が入力されたXtop回路ブロックは、前述の通り、R00~R92、C10~C112を出力する。Xtop回路ブロックから出力されたC10~C112は、制御スイッチSW2を介してp-adic回路ブロックの出力であるr3~r15となる。これら制御スイッチSW2は、入力B1~B5によって制御される。したがって、これら制御スイッチSW2は、B=‘0’の場合、C10~C112をそのままr3~r15として出力する。また、Xtop回路ブロックから出力されたR00~R92は、制御スイッチSW3を介して、p-adic回路ブロックの出力であるr0~r11となる。これら制御スイッチSW3は、それぞれB0∧/B1~B3∧/B4で制御される。これによって、例えば、R00及びr0間にある制御スイッチSW3は、B0=‘1’、B1=‘0’の場合のみ、R00をそのままr0として出力する。制御スイッチSWを制御するB0~B5は、タイミング信号であり、順次立ち上がる信号である。これに合わせて入力Iのパスが下位ビット側から3ビットずつ開通し、出力rのパスが出力Rのパスと切り替わる。7進数の各桁の係数Aに相当するRは、次のステップの計算過程に入るまでに、そのステップの結果を出力するため、隣接するタイミング信号Bと論理演算した信号によってオン/オフ制御される制御スイッチSW3を介して後述する外部のD-rレジスタに出力される。次に、以上説明した回路をまとめて構成された7進数変換部201について説明する。図61は、7進数変換部201のブロック図である。7進数変換回路部201は、p-adic回路ブロックにD-rレジスタが結合されて構成される。D-rレジスタは、図61に示すように、タイミング信号B及びクロックclkで制御されるレジスタで、入力r0~r15、D0~D15、出力I0~I15を持つ。図62は、D-rレジスタの回路図である。D-rレジスタは、ビット毎に2つのインバータからなるフリップフロップFFを有している。このフリップフロップFFには、制御スイッチSW1を介してDjj=0~15が入力され、制御スイッチSW2を介してrjが入力される。一方、フリップフロップFFの出力側には、制御スイッチSW3を介してインバータIV1が接続されている。このインバータIV1の出力がIjとなる。制御スイッチSW1~SW3は、タイミング信号B0及びクロックclkによって制御される。具体的には、制御スイッチSW1は/clk∧/B0=‘1’の場合、制御スイッチSW2は/clk∧B0=‘1’の場合、制御スイッチSW3はclk=‘1’の場合にそれぞれオンする。なお、D-rレジスタのデータ入力にないD10~D15は‘0’とする。D-rレジスタの初期状態は、バイナリD0~D15が設定され、残りは‘0’で埋められた状態となっている。以後、B0が立ち上がるとclkの立ち下がりに同期してデータrjを取り込み、clkの立ち上がりに同期して取り込んだrjをIjとして出力する。このD-rレジスタは、p-adic回路ブロックと結合してタイミング信号Bj毎に計算のステップを進める。各クロックの変化の様子は図63に示す。タイミング信号Biは、図63に示すように、クロックclkの立ち上がりの度に、B0、B1、B2、と順番に‘L’から‘H’に立ち上がっていく信号である。各計算ステップで7進数の各桁Ajが下位側から出力rとして得られ、これをタイミング信号Bjの後半のIjの取り込みと同じタイミングで保持していく。全計算ステップが終了するとD-rレジスタには、7進数のデータDの各桁の係数aをバイナリに変換した場合の各桁の係数Ajmが保持されている。なお、p=7の場合、計算ステップの数は6、p-adic回路ブロックに含まれる4bitmod7回路ブロックの数は13となる。<23進数変換部>図64は、p-adicZpworldの4桁の7進数Aa0,a1,a2,a3をbinaryworldの3桁の23進数Dd0,d1,d2,d3に変換する変換回路の構成を模式的に示した図である。なお、図64中3add7と示した四角は、入力された3ビットのデータに対して、入力されたキャリーCに応じて7を加え、4ビットのバイナリを出力する演算回路である。以下、この回路を3add7回路ブロックと呼ぶ。始めに、第0ステップ図64中S0では、7進数の2次の桁のバイナリ表示に対して3次の桁のバイナリ表示をキャリーすなわち73の個数のバイナリ表現として前述の計算を行う。これによって、72の個数としてキャリーC10~C15の6ビットを得る。このキャリーC10~C15が次の第1ステップの入力図64中S1となる。続いて、第1ステップでは、7進数の1次の桁のバイナリ表示に対して、第0ステップで得られたキャリーC10~C15を72の個数のバイナリ表現として前述の計算を行う。これによって、71の個数としてキャリーC20~C28の9ビットを得る。このキャリーC20~C28が次の第2ステップ図64中S2の入力となる。続いて、第2ステップでは、7進数の0次の桁のバイナリ表示に対して、第1ステップで得られたキャリーC20~C28を71の個数のバイナリ表現として前述の計算を行う。これによって、70の個数としてキャリーC30~C311の12ビットを得る。但し、上位の3ビットはDの7進数と23進数との設定からゼロとなる。これらのキャリーを3ビット毎にまとめるとDのバイナリ表現Dd0,d1,d2,d3を得ることができる。次に、23進数変換部209の構成について説明する。図65は、23進数変換部209の第kステップの回路構成を、4bitadd7回路ブロックを用いて構成したものである。ここで、4bitadd7回路ブロックは、3ビットのバイナリデータである入力Bに素数7を加えてその結果をバイナリデータQとして出力する回路である。詳細については後述する。7進数表現のj次の桁の係数ajは、3ビットのバイナリで表現できるが、このバイナリ表現の係数Aを他の桁の係数aと共通の表現とするめに、数3に示すようなサブインデックスを用いる。[数3]また、第kステップの演算の入力である前ステップ第k-1ステップのキャリーはCk0~Ck3k1-1であり、サブインデックスが2の累乗の指数の2進数としての係数となっていて、この2進数が表現する数がデータに含まれる73-kの個数となる。第kステップでは、図65中Aに示すように、3k1個の4bitadd7回路ブロックで処理される。各4bitadd7回路ブロックには、1個のキャリーcarryと、7進数表現の1桁分の係数を表示する3個のバイナリが入力される。1つ目の4bitadd7回路ブロック<1>は、carry、入力B0~B2に、それぞれCk0、Q-10~Q-12が入力され、Q0、Q1~Q3からそれぞれCk10、Q00~Q02を出力する。図示しない2つ目の4bitadd7回路ブロック<2>は、carry、入力B0~B2に、それぞれCk1、Q00~Q02が入力され、Q0、Q1~Q3からそれぞれCk11、Q10~Q12を出力する。以降、図65中Aに示すように、同様の入出力を持つ4bitadd7回路ブロックが、合計3k1個並び、各4bitadd7回路ブロックから出力されるキャリーCk10~Ck13k2-1=Ck13k12が、次にステップである第k1ステップの入力となる。このように、7進数からバイナリへの変換は、図65中Bに示す模式図のように、キャリーCの最下位ビット側から順次実行される。図65中Aは、上記の通り、第kステップに関係する回路構成であるが、各ステップを時分割で処理することで、図65中Aに示す回路構成を各ステップで使い回すことができる。この場合、各4bitadd7回路ブロックの入出力を単純なオン/オフによって制御可能にするために、図66に示すように、k=0とした場合の3個の4bitadd7回路ブロックを最小構成の回路ブロックとする。この様に構成された3個の4bitadd7回路ブロックからなる回路をatoX回路ブロックと呼ぶ。図67に示すように、このatoX回路ブロックの入力は、Q-10~Q-12とC00~C02の6個となり、出力はQ20~Q22とC10~C12の6個となる。次に、図64に示した3add7回路ブロックである4bitadd7回路ブロックについて具体的に説明する。図68は、4bitadd7回路ブロックの回路記号である。4bitadd7回路ブロックは、3ビットのバイナリB0~B2と1ビットのキャリーcarryを入力し、4ビットのバイナリQ0~Q3を出力する。この4bitadd7回路ブロックは、入力Bに対し、carryが‘1’なら素数7を加え、その結果をQとして出力する。ここで、h=3、p=7の場合、バイナリB、バイナリQの間には、数4に示す関係が成立する。[数4]図69は、4bitadd7回路ブロックのブロック図である。4bitadd7回路ブロックは、半加算器HA1、2個の全加算器FA1及びFA2を有する。半加算器HA1は、入力がB0及びcarry、出力がQ0、桁上げ出力がC0となっている。全加算器FA1は、入力がB1及びcarry、桁上げ入力がC0、出力がC1、桁上げ出力がQ1となっている。全加算器FA2は、入力がB2及びcarry、桁上げ入力がC1、出力がQ3、桁上げ出力がQ2となっている。以上の構成によって、4bitadd7回路ブロックは、carry=‘1’なら、入力バイナリBに素数7を加える。次に、前述のatoX回路ブロックを用いて、7進数の次数を1つ下げるための1ステップ分の回路を構成する。以下では、この回路をptoX回路ブロックと呼ぶ。このptoX回路ブロックは、全計算ステップに共通に使用することができる。図70は、ptoX回路ブロックの回路記号を示す図である。ptoX回路ブロックはタイミング信号B1及びB2で制御され、入力であるQ-10~Q52、C20~C28から、C30~C311を出力する。図71は、ptoX回路ブロックのブロック図である。ptoX回路ブロックは、3個のatoX回路ブロックからなる。1個目のatoX回路ブロック<1>は、ptoX回路ブロックの入力の一部であるQ-10~Q-12、及びC20~C22を入力し、Q ́20~Q ́22、及びptoX回路ブロックの出力の一部であるC30~C32を出力する。2個目のatoX回路ブロック<2>は、Q20~Q22、及びptoX回路ブロックの入力の一部であるC23~C25を入力し、Q ́50~Q ́52、及びptoX回路ブロックの出力の一部であるC33~C35を出力する。入力のうち、Q20~Q22は、1個目のatoX回路ブロック<1>の出力Q ́20~Q ́22がタイミング信号B2で制御される制御スイッチSW1を介して入力される信号である。3個目のatoX回路ブロック<3>は、Q50~Q52、及びptoX回路ブロックの入力の一部であるC26~C28を入力し、C39~C311、及びptoX回路ブロックの出力の一部であるC36~C38を出力する。入力のうち、Q50~Q52は、2個目のatoX回路ブロック<2>の出力Q ́50~Q ́52がタイミング信号B1で制御される制御スイッチSW2を介して入力される信号である。このように、atoX回路ブロックの入出力間を制御スイッチSWで接続するのは、計算ステップ毎に入力の接続が外部入力と内部入力で切り替わるためであり、外部入力の場合に内部回路の出力が干渉しないようにするためである。図71の回路構成の場合、タイミング信号B0だけが‘1’のタイミングにおいて、全ての制御スイッチSWがオフされ、図72中右から1番目のatoX回路ブロック<3>だけが活性化する。これが第0ステップに相当する。続いて、タイミング信号B1も‘1’になると、図72中右から2番目のatoX回路ブロック<2>までが活性化する。これが第1ステップに相当する。最後に、タイミング信号B2も‘1’になると、図72中右から3番目のatoX回路ブロック<1>までが活性化する。これが第2ステップに相当する。このように、図71に示す構成の場合、タイミング信号Bで各ステップに必要なptoX回路ブロックの構成を作ることができる。次に、23進数変換部209のコア部分となるbinary回路ブロックについて説明する。図72は、binary回路ブロックの回路記号である。binary回路ブロックは、図72に示すように、B0~B3、I0~I11を入力し、r0~r11を出力する。図73は、binary回路ブロックのブロック図である。binary回路ブロックは、1ステップの回路構成をptoX回路ブロックとして、これにptoX回路ブロックの入出力を制御する制御スイッチSWが付加された構成となっている。具体的には、入力I3~I11は、それぞれ、制御スイッチSW1を介してC20~C28としてptoX回路ブロックに入力される。これら制御スイッチSW1は、それぞれタイミング信号B2~B0によって制御される。したがって、制御スイッチSW1は、B=‘1’の場合、I3~I11がそのままC20~C28として出力され、B=‘0’の場合、入力に依らず出力は‘0’となる。また、入力I0~I8は、それぞれ、制御スイッチSW2を介してQ-10~Q52としてptoX回路ブロックに入力される。これら制御スイッチSW2は、それぞれ/B3∧B2~/B1∧B0によって制御される。したがって、例えば、I0及びQ-10間にある制御スイッチSW2は、B3=‘0’、B2=‘1’の場合のみ、I0をそのままQ-10として出力する。ptoX回路ブロックから出力されたC30~C311は、制御スイッチSW3を介して、binary回路ブロックの出力であるr0~r11となる。これら制御スイッチSW3は、タイミング信号B2~B0によって制御される。したがって、制御スイッチSW3は、B=‘1’の場合、C30~C311をそのままr0~r11として出力する。以上の回路構成によって、ptoX回路ブロックは、入力と出力のビット幅を3ビットずつ順次増やしながら各計算ステップに対応する。各計算ステップで7進数の桁の数Aを順次上位桁から取り込み、全ての計算ステップが終了したときに得られるのがデータのバイナリ表現となる。前述のように、タイミング信号B0~B2は、順次立ち上がる信号である。これに合わせて入力Iと出力rへのパスが上位ビット側から3ビットずつ導通していく。7進数の各桁の数Aは、後述する外部のA-rレジスタに初期設定されて、次の計算ステップに入るまでに、選択的にパスが切り替わるように、隣接するタイミング信号Bでオン/オフ制御される制御スイッチSW3を介してA-rレジスタに出力される。次に、以上説明した回路をまとめて構成された23進数変換部209について説明する。図74は、23進数変換部209のブロック図である。23進数変換部209は、binary回路ブロックにA-rレジスタが結合されて構成される。A-rレジスタは、図74に示すように、タイミング信号B0及びクロックclkで制御されるレジスタで、入力r0~r11、A0~A11、出力I0~I11を持つ。図75は、A-rレジスタの回路図である。A-rレジスタは、ビット毎に2つのインバータからなるフリップフロップFFを有している。このフリップフロップFFには、制御スイッチSW1を介してAjj=0~11が入力され、制御スイッチSW2を介してrjが入力される。一方、フリップフロップFFの出力側には、制御スイッチSW3を介してインバータIV1が接続されている。このインバータIV1の出力がIjとなる。制御スイッチSW1~SW3はタイミング信号B0及びクロックclkによって制御される。具体的には、制御スイッチSW1は/clk∧/B0=‘1’の場合、制御スイッチSW2は/clk∧B0=‘1’の場合、制御スイッチSW3はclk=‘1’の場合にそれぞれオンする。A-rレジスタの初期状態は、7進数の桁A0~A11となっている。以後、タイミング信号B0が立ち上がるとクロックclkの立ち下がりに同期して取り込んだrjを、クロックclkの立ち上がりに同期してIjとして出力する。このA-rレジスタはbinary回路ブロックと結合してタイミング信号Bj毎に計算ステップを進める。各クロックの変化の様子は、図63と同様である。クロックclkからckが作られ、更にタイミング信号Bjが作られる。全計算ステップが終了するとA-rレジスタには、入力である7進数Aのバイナリ表現Djが保持される。以上の構成による23進数変換部209によれば、計算ステップの数は4で、binary回路ブロックに含まれる4bitadd7回路ブロックの数は9となる。<ECCシステムの概要>実施形態のメモリコントローラ200は、既存のメモリデバイス100が記憶するデータの信頼性を確保するためにリーメトリックコードを用いたECCシステムを搭載している。このECCシステムは、エラー検出訂正に必要な計算をより簡便するため、リーメトリックコードを用いている。そこで、ここではリーメトリックコードについて簡単に説明する。コードを表すシンボルcは、数5に示す整数となる。[数5]これら整数の計量をリーメトリックとして|cj|で表わし、全てのリーメトリック|cj|はp/2以下の整数で表されて、リーメトリック|cj|の定義は数6のようになる。[数6]コードCは、n=p-1個のシンボルcjの並びと考えられるため、C=c1,c2,...,cnで表すことができる。コードCの計量wCは、数9のように各シンボルcjのリーメトリック|cj|の和として定義される。[数7]また、コード間の距離はコードに対応する各シンボルの差のリーメトリックの和で定義される。ここで2つのシンボルcとyの差リー距離dLc,yは数8のようになる。[数8]さらに、コードCの最小リー距離は、数9に示すようにコードCの計量wCの最小の計量で定義される。[数9]このとき、リーメトリックコードは、数12に示す生成行列G及びシンドローム行列Hを持ったコード間の最小距離が2γであり、且つ、γ-1以下のリーメトリックのエラー訂正が可能なコードである。[数10]ここで、コードCの語長をn、データの語長をkとすると、γ=n-kであり、γはコードCに含まれる冗長語長を表している。この様に構成されるリーメトリックコードを生成するために入力変換されたデータをk桁のp進数で表す。このp進数の各桁の数はZpの要素であるから、これをリーメトリックコードのデータ語Xとして、生成行列Gから演算C=XGとしてコード表現が得られる。得られたコード語をメモリに記憶する。記憶したZpの数に生じたエラーの情報は、メモリから読み出したリーメトリックコードのデータ語Yとして、演算S=YHtHtはHの転置行列からシンドロームを得て、エラーの位置と量が計算できエラーが訂正できる。次に、実施形態で扱うp=7、γ=ε1、ε=1,2の場合のECCシステムで用いる一般的な関係式などをまとめて説明しておく。メモリデバイス100に記録されたコードCのバイナリデータは、3ビットからなるコード語シンボルが6個集まったものであり、ビット毎に様々な擾乱を受けて変化を起こす。そこで、コードYからコードCを復元するのがデコードである。このデコードに先立ち、始めにシンドロームを求める。シンドロームSはシンドローム行列Hを利用したS=YHtの演算をして数11に示す要素S0、S1、S2として求まる。[数11]ここで、HtはHの転置行列である。生成行列Gとシンドローム行列Hの構成がGHt=0mod7となるように構成されていることにより、Y=CEとおくとS=EHtとなる。またE=e1,e2,,e6とすると、シンドロームS0は各コード語シンボルのエラーの総和になっていることが分かる。これらのシンドロームSが唯一のエラーの情報であり、これらシンドロームSを基にして以下のように、正しいコードCの復元を行う。続いて、デコードの原理を説明する。n=p-1=6個のエラーのシンボルを二つの組JとJ-に、数12のように分類する。[数12]すなわち、シンボルのエラー量がej<7/2の場合、コードシンボルcjの位置jの集まりであるJと、シンボルのエラー量がej>7/2の場合のコードシンボルcjの位置jの集まりであるJ-とに分類される。ガロア体GF7上の多項式Λx、Vxをこれらの組を基に数13のように構成する。[数13]このように、多項式ΛxはJのエラーコード語シンボルの位置jの逆数を根として持ち、そのコード語シンボルのリーメトリックejを根の多重度として持つ多項式となる。一方、多項式VxはJ-のエラーコード語シンボルの位置jの逆数を根として持ち、そのコード語シンボルのリーメトリック7-ejを根の多重度として持つ多項式となる。デコードは、最終的にこれらの多項式をシンドロームSlの情報のみから構成して解くことによってエラーの情報を得る過程となる。つまり、これら多項式Λx、VxとシンドロームSlとの関係を求める必要がある。続いて、数14に示すように各シンドロームSlをその次数の係数に持つ級数多項式で構成すると、シンボルのエラー量ej、位置jとその値を持つ有理多項式で表される。[数14]数14から、多項式Λx、Vx、シンドロームSxの間には数15に示す関係式が成立する。[数15]続いて、数15に示す関係式を利用して、シンドロームSxから多項式Λx、Vxを求める。シンドロームSxから、数16に示す次数がγ-1以下の多項式Ψxを求める。[数16]多項式Ψxの展開式において、数16に示す式の両辺の同次次数の係数の比較から、係数ψjは、シンドロームSiと既に求まっている係数ψj-1とを用いて求めることができる。この多項式Ψxは、Λx/Vxに等価な多項式である。[数17]ε=1の場合、シンドロームS=S0、S1から多項式Ψxの係数ψ0及びψ1を求めると数18のようになる。[数18]そして、数18から多項式Ψx=1ψ1xとΨx=1-ψ1xを作り、S0=1の場合には多項式をλx=Ψxとνx=1とし、S0=-1の場合には多項式をλx=1とνx=Ψxとする。これによって数17に示すキー条件を満たすことができる。ε=2の場合、x3とΨxに対してユークリッド反復法で定数倍を除いて求めることができる。その際、シンドロームS=S0,S1,S2から多項式Ψxの係数ψ0~ψ2を求めると数19のようになる。[数19]そして、ユークリッド反復法の停止条件にS0を用いると、数19からΛxとVxが求まる。即ち、S0,Ψxのユークリッドの反復法で求めることができる。以上の通り、ε=1の場合には、エラー探索多項式が1次であり、その解はシンドロームS1から直接求めることができた。しかし、ε=2の場合、ユークリッドの反復法で得られるエラー探索多項式の次数は最大でも2次であるため、その解を、根と根の多重度を求めるハッセHasse微分多項式から求める。エラー探索多項式をφxで表して、多項式φxをハッセ微分多項式の表現と係数の関係を式で示すと数20のようになる。[数20]ユークリッドの反復法で得られたエラー探索多項式であるλxとνxにこの関係を適用する。探索する解の範囲はZpp=7であり、探索するのは1~6についてである。したがって、mod7を考えると、数21のような6つのφ1及びφ2間の関係式として簡単に得られる。[数21]得られたエラー探索多項式の係数φ1及びφ2を代入する。そして、φ2≠0の場合、2根でφ1~φ6で0になるものがZpの根となり、根が1つしかなければ、それは重根と言うことになる。一方、φ2=0の場合、エラーは一つでφ1-1が根となる。このように、Zpの要素における探索は、数21で示した6つの式について、0に等しいか否かで判断すれば良い。次に、図76及び図77を用いてメモリコントローラ200におけるデータ処理の手順について詳細に説明する。以下では、p-adicZpworldでのECCの演算について、Zpデータとしてメモリシステム100に入力されたデータをエンコードする手順と、メモリシステム100から読み出されたコードYをデコードし、データAを得るまでの手順についてまとめる。エンコードの手順は以下のようになる。始めに、入力されたデータDを、7進数変換部201によって数22に示す7進数表現の4桁のデータ語Dhに変換する図76中S1。[数22]続いて、このデータDに生成行列Gを乗じてコードCの6個のコード語成分c1~c6を得る図76中S2。各コード語成分の値は数23に示す通りである。[数23]最後に、コードCのコード語成分cjをメモリデバイス100のメモリセルMCに記憶する図76中S3。ここで、リーメトリックコードCは、メモリデバイス100に記憶されて、エラーを含むコードYとなったとする。データの読み出しは、始めに、メモリシステム100からコードYを読み出す図77中S4。コードYは数24に示す構成となっている。ここで、ejは、コードYの位置jにあるコード語シンボルのエラーのリーメトリックを示す。[数24]メモリコントローラ200は、コードYに対して、ECCによるエラー訂正を施した上でバイナリデータを生成し外部に出力する。これらデータ読み出しの際のデータ処理の手順は以下の通りである。なお、ここで用いるECCシステムは、エラー訂正能力をε=1とするものである。手順1コードYから数25に示す計算式に基づいてシンドロームS=S0,S1を計算する図77中S5。[数25]S0=Σejとなるため、|S0|>1の場合、エラーのリーメトリック総量が2以上となることから、コードYのエラー訂正が不可能と判断し、解無しとしてエラー探索を中止する図77中S6、S7。一方、|S0|≦1の場合、手順2に処理を進める図77中S8。手順2訂正可能なコード語成分の数の上限であるε=1に対して、まず手順1で求めたシンドロームS0及びS1から数26に示す計算式に基づいて解探索多項式Ψxの係数ψ0及びψ1を計算する図77中S8。[数26]続いて、Ψx=1-S1x、Ψx=1S1xとおく。この場合、キー条件を満たす候補は、S0=1の場合、λx=Ψx、νx=1となり、S0=-1の場合、λx=1、νx=Ψxとなる図77中S9。手順3手順2で求めた多項式λx又はνxから、その根などを求める。得られた多項式λx及びνxは1次の式であるため、解は、S0=1の場合、r=S1-1、t=S1、et=1となり、S0=-1の場合、r=-S1-1、t=-S1、et=-1となる図77中S10。手順4手順3で得られた根からエラー成分のエラー量を求める。エラーのあるコード語成分の番号は、t=r-1=S0S1、et=S0であり、ct=yt-etから正しいコードCを得ることができる図77中S11。手順5コードC及びコードAと生成行列Gの関係AG=Cなる多元連立一次方程式を介して、4個のZpの要素a0~a3を求める。得られた要素a0~a3から4桁の7進数A=a0,a1,a2,a3を求める図77中S12。以上で、メモリコントローラ200におけるp-adicZpworld内でのデータ処理は終了したため、続いてp-adicZpworldの出口においてデータAをバイナリデータに戻す変換を行う。データAを4桁の7進数表現から3桁の23進数表現に変換し、3桁として各桁の数字をバイナリ表示する。これがメモリシステムに入力されたバイナリデータDとなる。以上でデータの復元が完了する。<デコード部>ここらからは、上記手順を実現する具体的な回路の例について説明する。先ず、Zpの積を求める計算回路について説明する。以下においてこの計算回路をXZp回路ブロックと呼ぶ。図78は、XZp回路ブロックの回路記号を示す図、図79中Aは、XZp回路ブロックのブロック図、図79中B及びCはXZp回路ブロックによる演算処理を模式的に示した図である。XZp回路ブロックは、大別して、前半の計算ステップ群を処理する回路と、後半の計算ステップ群を処理する回路とからなる。前半の計算ステップ群を処理する回路は、ANDゲートG1と2個の3bitADmod7回路ブロック<1>及び<2>で構成される。ANDゲートG1は、掛けられる数aの第ii=0~2ビットと、掛ける数bの第jj=0~2ビットとの論理積を取り、これをMijとして出力する。ここで、数a及びbは、数27のように表わす。[数27]3bitADmod7回路ブロックは、2つのZpの数に対して7を法とする和を求める回路である。3bitADmod7回路ブロックは、A0~A2及びB0~B2を入力し、Q0~Q2を出力する。この3bitADmod7回路ブロックの具体的構成については、後述する。1つ目の3bitADmod7回路ブロック<1>は、A0、A1、A2及びB0~B3に、それぞれM10、M20、‘0’及びM01~M21を入力し、Q0~Q2からQ00~Q02を出力する。2つ目の3bitADmod7回路ブロック<2>は、A0、A1、A2及びB0~B2に、それぞれ3bitADmod7回路ブロック<1>の出力であるQ01、Q02、‘0’及びM02~M22を入力し、Q0~Q2からQ10~Q12を出力する。以上のように、前半の計算ステップ群を処理する回路は、3bitADmod7回路ブロック<1>及び<2>の出力と入力とを順次接続して構成されている。後半の計算ステップ群を処理する回路は、2個の4bitmod7回路ブロック<1>及び<2>で構成されている。この4bitmod7回路ブロック<1>及び<2>は、図57及び図59に示す回路である。1つ目の4bitmod7回路ブロック<1>は、A0及びA1~A3に、それぞれQ00及びQ10~Q12を入力し、Q0~Q2からQ20~Q22を出力する。2つ目の4bitmod7回路ブロック<2>は、A0及びA1~A3に、それぞれM00及び4bitmod7回路ブロック<1>の出力であるQ20~Q22を入力し、Q0~Q2からQ30~Q32を出力する。以上のように、後半の計算ステップ群を処理する回路は、4bitmod7回路ブロック<1>及び<2>の出力と入力とを順次接続して構成されている。全ての回路はクロック非同期で動作し、入力Mijを与えることによって出力Qが確定する。以上のように、XZp回路ブロックを構成する回路ブロック数は4個となる。次に、図79に示す3bitADmod7回路ブロックについて説明する。図80は、3bitADmod7回路ブロックの回路記号を示す図である。3bitADmod7回路ブロックは、A及びBから入力される数a及びbの和を求めて、得られた和の素数7による剰余をQから出力する。なお、入力の和をZpの数として扱わないで3ビットのバイナリ数として扱う場合が必要となるので、ブロック内の信号の変更で実現できる3bitAD8mod7回路ブロックとしても回路記号を図80に示した。h=3、p=7の場合、数a、b、剰余のバイナリ表示Qの間には、数28に示す関係が成立する。[数28]図81は、3bitADmod7回路ブロック及び3bitAD8mod7回路ブロックのブロック図である。3bitADmod7及び3bitAD8mod7回路ブロックは、PF0生成部U1、4個の半加算器HA1~HA4、2個の全加算器FA1及びFA2を有する。PF0生成部U1は、所定の電圧が供給されるVcc端子と、Vss端子との間に、直列に接続されたPMOSトランジスタQP0、QP1及びNMOSトランジスタQN1~QN3を有する。これらトランジスタQP0、QP1、QN1、QN2及びQN3は、それぞれC2、S0、S0、S1並びにS2で制御される。また、PF0生成部U1は、その他に、2個のPMOSトランジスタQP0、QP3、NMOSトランジスタQN3及びインバータIV1を有する。トランジスタQP2及びQP3は、それぞれトランジスタQP1のソース及びドレイン間に並列に接続されている。トランジスタQN3は、トランジスタQN0のソース及びトランジスタQN2のドレイン間に並列に接続されている。これらトランジスタQP2、QP3及びQN3は、それぞれS1、S2及びC2で制御される。また、インバータIV1は、入力がトランジスタQN1及びQN3のソースに接続されている。このインバータIV1の出力がキャリーPF0になる。以上でC2に替わりVssが入力される場合が3bitAD8mod7回路ブロックとなる。半加算器HA1は、入力がA0及びB0、出力がS0、桁上げ出力がC0 ́となっている。全加算器FA1は、入力がA1及びB1、桁上げ入力がC0 ́、出力がS1、桁上げ出力がC1 ́となっている。全加算器FA2は、入力がA2及びB2、桁上げ入力がC1 ́、出力がS2、桁上げ出力がC2 ́となっている。半加算器HA2は、入力がS0及びPF0、出力がQ0、桁上げ出力がC0となっている。半加算器HA3は、入力がC0及びS1、出力がQ1、桁上げ出力がC1となっている。半加算器HA4は、入力がC1及びS2、出力がQ2となっている。以上の構成によって、PF0生成部U1は、3bitADmod7回路ブロックに入力されるバイナリA及びBの和が13以上か否かの検出を行う。なお、C2をVssに替えることで、8を法としたA及びBの和に対して7以上の検出をすることができる。このオプションの回路構成は、Zpの要素の減算を補数の加算で行うときに必要となる演算回路であり、後に3bitAD8mod7回路ブロックとして使用する。<Zpの要素間の対応を求めるデコーダ>素数p=7とした場合、Zpの要素の数は少ないため、特殊な演算を計算回路で求めるよりも、予め作成した要素の対応表を用いてデコーダを生成した方が良い場合もある。そこで、Zpの要素の対応表の一例を示しておく。図82は、Zpの要素の累乗を求める対応表となる。Zpの要素の累乗はしばしば求める必要があるため、その対応表を用意しておくと有用である。p=7の場合、Zpの要素jj=2~6に対してi乗i=2~5の演算結果を用意すれば良いため、対応表に記録すべき値は20個となる。図82に示す対応表を用いた場合、ロジック回路によって3ビットのバイナリ表示のデコーダを用意するだけで、Zpの要素の累乗を得ることができる。図83は、Zpの要素の逆元を求める対応表となる。Zpの要素jから逆元j-1を求めるには、jj-1≡1mod7の関係から求めた要素j及びその逆元j-1の対応表を用意すれば良い。図83に示す対応表を用いた場合、ロジック回路によって3ビットのバイナリ表示の変換デコーダを用意するだけで、Zpの要素の逆元を得ることができる。<エンコーダ部>次に、エンコード部202の回路構成例を説明する。図84中Aは、Zpのコード語AをリーメトリックコードCに変換する回路のブロック図であり、図84中Bは、図84中Aに示す回路を制御する2重のクロックck及びclを示す図である。図84中Bに示すように、クロックclは、ckの立ち上がりに遅れて立ち上がるパルスであり、クロックck毎にcl0~cl3の合計4個のクロックclが順次立ち上がる。そして、cl3が立ち上がると、これに遅れて次のクロックckが立ち上がる。同様の波形がck1からck7まで繰り返される。これらクロックck、clのうち、ckはjiregister回路ブロック及びRi1~6レジスタ部を制御し、clは、jiregister回路ブロック及びRo0~8レジスタ部を制御する。Ri1~6レジスタ部は、コード語Cの成分cjを記憶するレジスタで、合計6個の数を記憶することができる。このRi1~6レジスタ部は、ckの立ち上がりのタイミングに合わせて順次個々のレジスタに数を記憶していく。即ちckj1の立ち上がりのタイミングで要素cjとなるデータをレジスタに取り込む。ck7の立ち上がりによって、レジスタに6個の要素cjが取り込まれる。つまり、コード語Cを記憶することができる。jiregister回路ブロックは、Zpの要素jとjiを対応付けるデコーダ回路である。具体的には、jiregister回路ブロックは、ckjj=1~6及びclj1i=0~3が入力されるとji1を出力する。Ro0~3レジスタ部は、4個の数を記憶できるレジスタであり、初期状態では、コードAの4個の成分a0~a3を記憶している。Ro0~3レジスタ部には、クロックclが入力されており、このクロックclが立ち上がる度にコードAの成分a0~a3を順次出力する。即ち、cliを受けてaiを出力する。XZp回路ブロックは、入力の掛け算をZpで行なう回路である。XZp回路ブロックには、クロックcli毎にXk-times回路ブロックの出力ji1とRo0~3レジスタ部の出力aiが入力され、ji1aiを出力する。この出力された数ji1aiを加算していくのが、3bitADmod7回路ブロック及びRgstrレジスタの組み合わせである。3bitADmod7回路ブロックは、2つの入力の数の和を7を法として求める回路である。一方、Rgstrレジスタは、初期状態が‘0’でクロックclの入力毎に、3bitADmod7回路ブロックからの入力を遮断し、自身が保持する内容を3bitADmod7回路ブロックに出力するレジスタである。図84に示すような、3bitADmod7回路ブロック及びRgstrレジスタの接続によって、クロックclの入力毎に前回出力した数に新たなXZp回路ブロックから出力される数を加算していく。即ち、クロックcl0~cl3が立ち上がると、コードAをリーメトリックコードに変換した後のCの成分cjが、クロックckjのサイクルで出力される。これが次のckj1のサイクルの頭でRi1~6レジスタ部に保持される。これによって、コードAから変換されたコードCを得ることができる。図85中Aは、シンドローム成分要素生成回路のブロック図であり、図85中Bは、シンドローム成分要素生成回路を制御するクロックckii=0~1、cljj=1~6のタイミングチャートである。シンドローム成分要素生成回路は、図85中Aに示すように、Ro1~6レジスタ部、jiregister回路ブロック、XZp回路ブロック、3bitADmod13回路ブロック、Rgstrレジスタ、及びRi0~1レジスタ部を有する。メモリデバイス100から読み出されたコードYはRo1~6レジスタ部に初期設定として格納される。jiregister回路ブロックからはjiを発生させる。これらRo1~6レジスタ及びjiregister回路ブロックは、クロックcljによって同期され、Yの成分yjが出力されると同時にjiが出力されるように制御される。これらの積jiyjをXZp回路ブロックで生成し、クロックcljj=1~6と同期して、3bitADmod7回路ブロック及びRgstrレジスタのループによって加算していき、シンドローム成分Siを作る。得られたSiをクロックcki1でRi0~1レジスタの第i番目のレジスタに格納する。この過程をクロックckiのi=0~2について処理し、全てのシンドローム成分を得てRi0~1レジスタ部に格納する。コードYのエラーの探索の可否の判定には、シンドロームベクタの成分S0のリーメトリック|S0|を求める必要がある。<デコード部>ここでは、デコード部208について説明する。エラー探索を終了し、エラーコードEによって訂正されたリーメトリックコードCが得られたら、これをZpのデータコードAに戻す必要がある。この演算はGを生成行列として、C=AGの逆演算を行うことに相当するが、行列の逆を得るのは規模の大きな演算となる。そのため、Aの要素を逐次的にCの要素から求めて行く。計算の過程を数29に示す。[数29]数29に示したように、cj=Σji1aiの関係を順次変形して、a0からa1、続いてa1からa2、と逐次的にamを求めて行くことが計算の原理となる。両辺にjの累乗の逆元を掛けてjのZpの全ての元についての項として足し合わせる。このときZpの全ての元の和はゼロとなることを利用して変形している。各データコードAの成分シンボルcを求める式は、数29の各シンボルa0からa3の計算式で示したように、始めに、リーメトリックコードCの成分c1~c6の変形を行う部分と、この結果を使ってデータAの成分a0~a3を求める部分からなる。数29に示すように、逐次計算の式は4つと少ない。以下では、これら演算を並列処理する具体的な演算回路について説明する。次に、数29に基づいてリーメトリックコードCの成分の変換を都度行う回路について説明する。以下において、この回路をcm-1j回路ブロックと呼ぶ。図86は、cm-1j回路ブロックの回路記号を示す図であり、図87は、cm-1j回路ブロックのブロック図である。cm-1j回路ブロックは、クロックclj、/cljに同期して動作する回路であり、jm、am-1、及びコード成分c1~c6を入力し、cm-1jを出力する。cm-1j回路ブロックは、XZp回路ブロック、3bitAD8mod7回路ブロック、3bitADmod7回路ブロック及びインバータIV1を有する。XZp回路ブロックでは、jmとam-1との積を生成しインバータIV1を介して3bitAD8mod7回路ブロックに出力する。3bitAD8mod7回路ブロックでは、インバータIV1を介して出力された出力jmam-1の補数を求め、-jmam-1を生成し、3bitADmod7回路ブロックに出力する。3bitADmod7回路ブロックは、-jmam-1とcj=cm-2jとの和を生成する。この生成された和がcm-1j回路ブロックの出力であるcm-1jとなる。続いて、数29に基づいてamを生成する回路について説明する。以下において、この回路をam回路ブロックと呼ぶ。図88は、am回路ブロックの回路記号を示す図であり、図89は、am回路ブロックのブロック図である。am回路ブロックは、クロックcljに同期して動作する回路であり、jm1、及びcm-1jを入力し、amを出力する。am回路ブロックは、j-1dec回路ブロック、2つのXZp回路ブロック<1>、<2>、3bitADmod7回路ブロック、及びRgstrレジスタを有する。j-1dec回路ブロックでは、jm1を、その逆元j-m1に変換し、XZp回路ブロック<1>に出力する。XZp回路ブロック<1>は、j-1dec回路ブロックから入力されたj-m1と、cm-1j回路ブロックから出力されるcj=cm-1jとの積演算をし、3bitADmod7回路ブロックに出力する。3bitADmod7回路ブロックから出力された積は、初期値が‘0’のRgstrレジスタと3bitADmod7回路ブロックからなるループによって加算されて行く。この結果は、3bitADmod7回路ブロックからXZp回路ブロック<2>に出力される。XZp回路ブロック<2>では、3bitADmod7回路ブロックから出力された和と6-1=6との積を演算し、am回路ブロックの出力であるamを得る。次に、図86~図89を用いて説明したCm-1j回路ブロック及びam回路ブロックを用いたデータコードAを求める計算回路について説明する。以下において、この回路をc/am回路ブロックと呼ぶ。図90は、c/am回路ブロックの回路記号を示す図であり、図91は、c/am回路ブロックのブロック図である。c/am回路ブロックは、クロックck及びclで制御される。ここで、クロックclは、クロックckが立ち上がる間に6回立ち上がるパルスである。c/am回路ブロックは、クロックckmに同期し、Zpの要素のm1乗である1m1~6m1と先のクロックckm-1のタイミングで計算されたリーメトリックコードCの変形成分cm-11~cm-16を入力として、新たなリーメトリックコードCの変形成分cm1からcm6とデータコードAの成分の一つamを出力する。c/am回路ブロックは、R1~6レジスタ部、MX回路ブロック、am回路ブロック及び6つのcm-1j回路ブロック<1>~<6>を有する。R1~6レジスタ部は、クロックckmの立ち上がりで、リーメトリックコードCの変形成分cm-11~cm-16を取り込んでラッチする。MX回路ブロックは、クロックcljに同期して、R1~6レジスタ部の出力とZpの要素のm1乗である1m1~6m1を入力し、jm1とcm-1jを取り出しam回路ブロックに渡すマルチプレクサ回路である。am回路ブロックは、クロックcljを6回受けて、データコード成分amを計算する。6個のcm-1j回路ブロック<1>~<6>は、これらa1~a6と入力1m1~6m1から、新たなリーメトリックコードCの変形成分cm1~cm6を同時に計算する。次に、前述のc/am回路ブロックを用いたデータコードAを得る計算回路について説明する。以下では、この計算回路を逆変換回路と呼ぶ。図92中Aは、逆変換回路のブロック図であり、図92中Bは、この逆変換回路を制御するクロックck及びclのタイミングチャートである。図92中Bに示すように、クロックck及びclは、所定のクロックckの立ち上がりから次のクロックckの立ち上がりまでの間に、クロックclが6回立ち上がる関係となっている。逆変換回路は、jiregister回路ブロック、c/am回路ブロック及びLi0~3レジスタ部を有する。jiregister回路ブロックは、クロックckmm=0~3に同期して、1m1~6m1図92のjm1を並列に出力する。これら1m1~6m1はc/am回路ブロックに入力される。c/am回路ブロックは、出力cm1~cm6と入力cm-11~cm-16を直結する。クロックck0のときの初期値c-11~c-16は、リーメトリックコードCの成分c1~c6を設定しておく。c/am回路ブロックは、クロックclの1サイクルが終わる度に、数29に示したamを算出する。amは、次のクロックclの1サイクルの始まりであるクロックckm1によって、Li0~3レジスタ部の第mレジスタに格納される。全てのクロックのサイクルが終了すると、Li0~3レジスタ部には、コードデータAが格納されることになる。<リーメトリックの演算回路>ECCによるデータ処理では、エラー訂正の可否などを判断する際にシンドロームS0のリーメトリック|S0|を用いる。そこで、次は、Zpp=7の要素のリーメトリックを計算する演算回路素子について説明する。以下において、この演算回路素子を3bitLM7回路ブロックと呼ぶ。3ビットのバイナリ表示のZpの要素aについて、そのリーメトリックQ=|a|は、Q=/PF0×aPF0×7-aと表現できる。ここでPF0は、a≧4の場合に‘1’、a<4の場合に‘0’になる。したがって、aのリーメトリックを求めるには、a≧4の場合、7からaを引く、即ち、7にaの補数を加えれば良い。h=3、p=7の場合のAとQの関係は数30のようになる。[数30]図93は、3bitLM7回路ブロックの回路記号を示す図であり、図94は、3bitLM7回路ブロックのブロック図である。3bitLM7回路ブロックは、3ビットのバイナリA0~A2を入力し、3ビットのバイナリQ0~Q3を出力する。3bitLM7回路ブロックは、XORゲートG1及び3個の半加算器HA1~HA3を有する。XORゲートG1は、Ajj=0~2及びPF0を入力し、Bjを出力する。全加算器FA1は、入力がB0及びPF0、桁上げ入力がPF0、出力がQ0、桁上げ出力がC0となっている。全加算器FA2は、入力がB1及びPF0、桁上げ入力がC0、出力がQ1、桁上げ出力がC1となっている。全加算器FA3は、入力がB2及びPF0、桁上げ入力がC1、出力がQ2となっている。入力が4以上になったらaの補数を7に加えている。aの補数は、PF0=1の場合、XORゲートG1でaの各ビット表示Ajを反転してBjとし、これに1を加えて生成されている。p=7は、7=1112であるので、これをPF0で表し、更に、1としてPF0を使い、これらとバイナリの和としてBjと加えている。3bitLM7回路は、クロックに非同期で動作し、入力を入れると計算されたリーメトリックを出力する。[まとめ]以上、実施形態に係る半導体記憶装置の場合、フローティングアクセス方式のアクセス動作を採用することで、アクセス動作時の消費電力が小さくすることができる。また、メモリセルの不良発生に対応するための回路が不要となる。更に、三次元構造の抵抗変化メモリであるため大容量ファイルメモリの実現が容易である。[その他]以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"