(57)【特許請求の範囲】
【請求項１】
メモリに対してアクセスを制御するメモリコントローラと、
前記メモリコントローラに対してコマンドを出力するホストと、
を備えるメモリアクセスシステムであって、
前記メモリコントローラは、
前記メモリに書き込まれる前の第１データについて、前記第１データに発生する第１誤りが訂正されるための第１シンドロームを生成する手段と、
前記メモリに書き込まれた後の第２データについて、前記第２データに発生する第２誤りが検出されるための第２シンドロームを生成する手段と、
前記メモリから読み出された第３データについて、前記第２シンドロームを用いて前記第２誤りを検出する誤り検出手段と、
前記第３データのうち前記第２誤りが検出されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する誤り訂正手段と、
前記第１誤りが訂正されたデータを前記メモリに書き込む手段と、
を備えることを特徴とするメモリアクセスシステム。
【請求項２】
メモリに対してアクセスを制御するメモリコントローラと、
前記メモリコントローラに対してコマンドを出力するホストと、
を備えるメモリアクセスシステムであって、
前記ホストは、
前記メモリに書き込まれる前の第１データについて、前記第１データに発生する第１誤りが訂正されるための第１シンドロームを生成する手段と、
前記メモリに書き込まれた後の第２データについて、前記第２データに発生する第２誤りが検出されるための第２シンドロームを生成する手段と、
を備え、
前記メモリコントローラは、
前記メモリから読み出された第３データについて、前記第２シンドロームを用いて前記第２誤りを検出する誤り検出手段と、
前記第３データのうち前記第２誤りが検出されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する誤り訂正手段と、
前記第１誤りが訂正されたデータを前記メモリに書き込む手段と、
を備えることを特徴とするメモリアクセスシステム。
【請求項３】
請求項１または請求項２に記載のメモリアクセスシステムにおいて、
前記メモリコントローラは、さらに、
前記ホストが処理するために前記メモリから読み出されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する手段、
を備えることを特徴とするメモリアクセスシステム。
【請求項４】
請求項１ないし請求項３のいずれかに記載のメモリアクセスシステムにおいて、
前記誤り検出手段および前記誤り訂正手段は、別個の回路により実現されることを特徴とするメモリアクセスシステム。
【請求項５】
請求項１ないし請求項３のいずれかに記載のメモリアクセスシステムにおいて、
前記誤り検出手段および前記誤り訂正手段は、単一の回路により実現されることを特徴とするメモリアクセスシステム。
【請求項６】
メモリに対してアクセスを制御するメモリコントローラと、
前記メモリコントローラに対してコマンドを出力するホストと、
を備えるメモリアクセスシステムであって、
前記メモリコントローラは、
前記メモリに書き込まれる前の第１データについて、前記第１データに発生する第１誤りが訂正されるための第１シンドロームを生成する手段と、
前記メモリに書き込まれた後の第２データについて、前記第２データに発生する第２誤りが訂正されるための第２シンドロームを生成する手段と、
前記メモリから読み出された第３データについて、前記第２シンドロームを用いて前記第２誤りを検出する手段と、
前記第３データのうち前記第２誤りが検出されたデータについて、前記第２シンドロームを用いて前記第２誤りを訂正する手段と、
前記第２誤りが訂正されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する手段と、
前記第１誤りが訂正されたデータを前記メモリに書き込む手段と、
を備えることを特徴とするメモリアクセスシステム。
【請求項７】
メモリに対してアクセスを制御するメモリコントローラと、
前記メモリコントローラに対してコマンドを出力するホストと、
を備えるメモリアクセスシステムであって、
前記ホストは、
前記メモリに書き込まれる前の第１データについて、前記第１データに発生する第１誤りが訂正されるための第１シンドロームを生成する手段と、
前記メモリに書き込まれた後の第２データについて、前記第２データに発生する第２誤りが訂正されるための第２シンドロームを生成する手段と、
を備え、
前記メモリコントローラは、
前記メモリから読み出された第３データについて、前記第２シンドロームを用いて前記第２誤りを検出する手段と、
前記第３データのうち前記第２誤りが検出されたデータについて、前記第２シンドロームを用いて前記第２誤りを訂正する手段と、
前記第２誤りが訂正されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する手段と、
前記第１誤りが訂正されたデータを前記メモリに書き込む手段と、
を備えることを特徴とするメモリアクセスシステム。
【請求項８】
請求項６または請求項７に記載のメモリアクセスシステムにおいて、
前記メモリコントローラは、さらに、
前記ホストが処理するために前記メモリから読み出されたデータについて、前記第２シンドロームを用いて前記第２誤りを訂正する手段と、
前記ホストが処理するために前記メモリから読み出されたデータのうち、前記第２誤りが訂正されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する手段と、
を備えることを特徴とするメモリアクセスシステム。
【請求項９】
請求項１ないし請求項８のいずれかに記載のメモリアクセスシステムにおいて、
前記第３データは、
前記メモリにアクセスが行なわれていないときに、所定アルゴリズムを用いて選択されたアドレスから読み出されたデータ、
を含むことを特徴とするメモリアクセスシステム。
【請求項１０】
請求項１ないし請求項８のいずれかに記載のメモリアクセスシステムにおいて、
前記第３データは、
前記ホストが処理するために前記メモリから読み出されたデータ、
を含むことを特徴とするメモリアクセスシステム。
【請求項１１】
請求項１ないし請求項１０のいずれかに記載のメモリアクセスシステムにおいて、
前記第２データは、
前記第１シンドローム、
を含むことを特徴とするメモリアクセスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリからデータが繰り返し読み出されることにより、データが意図せず書き換えられる可能性を回避または低減する技術に関する。
【背景技術】
【０００２】
不揮発性メモリの中でも、ＮＡＮＤフラッシュメモリは、単純な回路構成による高集積化および製造コスト減、ユーザによる書き込みの容易化を図ることができるため、ＳＤメモリカードなどに大量に採用されている。
【０００３】
最近では、ＮＡＮＤフラッシュメモリは、ゲーム機などにも採用されている。ＮＡＮＤフラッシュメモリがゲーム機などで使用される際には、書き込みは発生せず連続的な読み出しが発生する。すなわち、ＮＡＮＤフラッシュメモリがＲＯＭのように採用されることが多くなりつつある。
【０００４】
しかし、ゲーム機などでは、特定のプログラムが繰り返し読み出されることが多いため、プログラムが意図せず書き換えられる可能性が指摘され始めている。このような現象は“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象と呼ばれており、本現象が発生するメカニズムについて以下に簡単に説明する。
【０００５】
図１２は、ＮＡＮＤフラッシュメモリの模式図である。ＮＡＮＤフラッシュメモリは、格子状に配線されたビット線４１とワード線４２、４３、４４、メモリセル５２、５３、選択トランジスタ５４などから構成されている。
【０００６】
メモリセル５２が格納する２値データ（“０”または“１”）を読み出す場合を考える。この場合、メモリセル５２は選択セル５２、メモリセル５３は非選択セル５３と呼ばれている。まず、選択トランジスタ５４により、選択セル５２が属するビット線４１が指定される。次に、選択セル５２が属するワード線４２に対して、低ゲート電圧Ｖ（Ｌｏｗ）＝０Ｖが印加される。そして、非選択セル５３が属するワード線４３に対して、高ゲート電圧Ｖ（Ｈｉｇｈ）〜５Ｖが印加される。
【０００７】
このとき、非選択セル５３は微弱な書き込み状態にあるため、非選択セル５３のフローティングゲートに電子がトラップされ蓄積される。すなわち、選択セル５２が格納する２値データが繰り返し読み出されることにより、非選択セル５３の閾値電圧がシフトして、非選択セル５３が格納する２値データが“１”から“０”に意図せず書き換えられる可能性がある。
【０００８】
もっとも、非選択セル５３が格納する２値データが意図せず書き換えられたとしても、データが新たに書き込まれる前に一括して消去される際に、非選択セル５３の機能を回復させることができる。しかし、書き込みは発生せず連続的な読み出しが発生する場合には、非選択セル５３の機能を回復させることができない。
【０００９】
【特許文献１】米国特許出願公開第２００５／０２１０１８４号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１０】
特許文献１は、メモリセル内部の制御方法により、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避する手段を提供する。しかし、ここで開示されている方法は、特定のセル構造を有するメモリに対して適用可能な方法であり、他のセル構造に適用可能な方法ではない。つまり、メモリのセル構造に依存することなく、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避できる方策ではない。
【００１１】
そこで、本発明は前記問題点に鑑み、不揮発性メモリからデータが繰り返し読み出されることにより、データが意図せず書き換えられる可能性を回避または低減する技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、請求項１記載の発明は、メモリに対してアクセスを制御するメモリコントローラと、前記メモリコントローラに対してコマンドを出力するホストと、を備えるメモリアクセスシステムであって、前記メモリコントローラは、前記メモリに書き込まれる前の第１データについて、前記第１データに発生する第１誤りが訂正されるための第１シンドロームを生成する手段と、前記メモリに書き込まれた後の第２データについて、前記第２データに発生する第２誤りが検出されるための第２シンドロームを生成する手段と、前記メモリから読み出された第３データについて、前記第２シンドロームを用いて前記第２誤りを検出する誤り検出手段と、前記第３データのうち前記第２誤りが検出されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する誤り訂正手段と、前記第１誤りが訂正されたデータを前記メモリに書き込む手段と、を備えることを特徴とする。
【００１３】
請求項２記載の発明は、メモリに対してアクセスを制御するメモリコントローラと、前記メモリコントローラに対してコマンドを出力するホストと、を備えるメモリアクセスシステムであって、前記ホストは、前記メモリに書き込まれる前の第１データについて、前記第１データに発生する第１誤りが訂正されるための第１シンドロームを生成する手段と、前記メモリに書き込まれた後の第２データについて、前記第２データに発生する第２誤りが検出されるための第２シンドロームを生成する手段と、を備え、前記メモリコントローラは、前記メモリから読み出された第３データについて、前記第２シンドロームを用いて前記第２誤りを検出する誤り検出手段と、前記第３データのうち前記第２誤りが検出されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する誤り訂正手段と、前記第１誤りが訂正されたデータを前記メモリに書き込む手段と、を備えることを特徴とする。
【００１４】
請求項３記載の発明は、請求項１または請求項２に記載のメモリアクセスシステムにおいて、前記メモリコントローラは、さらに、前記ホストが処理するために前記メモリから読み出されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する手段、を備えることを特徴とする。
【００１５】
請求項４記載の発明は、請求項１ないし請求項３のいずれかに記載のメモリアクセスシステムにおいて、前記誤り検出手段および前記誤り訂正手段は、別個の回路により実現されることを特徴とする。
【００１６】
請求項５記載の発明は、請求項１ないし請求項３のいずれかに記載のメモリアクセスシステムにおいて、前記誤り検出手段および前記誤り訂正手段は、単一の回路により実現されることを特徴とする。
【００１７】
請求項６記載の発明は、メモリに対してアクセスを制御するメモリコントローラと、前記メモリコントローラに対してコマンドを出力するホストと、を備えるメモリアクセスシステムであって、前記メモリコントローラは、前記メモリに書き込まれる前の第１データについて、前記第１データに発生する第１誤りが訂正されるための第１シンドロームを生成する手段と、前記メモリに書き込まれた後の第２データについて、前記第２データに発生する第２誤りが訂正されるための第２シンドロームを生成する手段と、前記メモリから読み出された第３データについて、前記第２シンドロームを用いて前記第２誤りを検出する手段と、前記第３データのうち前記第２誤りが検出されたデータについて、前記第２シンドロームを用いて前記第２誤りを訂正する手段と、前記第２誤りが訂正されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する手段と、前記第１誤りが訂正されたデータを前記メモリに書き込む手段と、を備えることを特徴とする。
【００１８】
請求項７記載の発明は、メモリに対してアクセスを制御するメモリコントローラと、前記メモリコントローラに対してコマンドを出力するホストと、を備えるメモリアクセスシステムであって、前記ホストは、前記メモリに書き込まれる前の第１データについて、前記第１データに発生する第１誤りが訂正されるための第１シンドロームを生成する手段と、前記メモリに書き込まれた後の第２データについて、前記第２データに発生する第２誤りが訂正されるための第２シンドロームを生成する手段と、を備え、前記メモリコントローラは、前記メモリから読み出された第３データについて、前記第２シンドロームを用いて前記第２誤りを検出する手段と、前記第３データのうち前記第２誤りが検出されたデータについて、前記第２シンドロームを用いて前記第２誤りを訂正する手段と、前記第２誤りが訂正されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する手段と、前記第１誤りが訂正されたデータを前記メモリに書き込む手段と、を備えることを特徴とする。
【００１９】
請求項８記載の発明は、請求項６または請求項７に記載のメモリアクセスシステムにおいて、前記メモリコントローラは、さらに、前記ホストが処理するために前記メモリから読み出されたデータについて、前記第２シンドロームを用いて前記第２誤りを訂正する手段と、前記ホストが処理するために前記メモリから読み出されたデータのうち、前記第２誤りが訂正されたデータについて、前記第１シンドロームを用いて前記第１誤りを訂正する手段と、を備えることを特徴とする。
【００２０】
請求項９記載の発明は、請求項１ないし請求項８のいずれかに記載のメモリアクセスシステムにおいて、前記第３データは、前記メモリにアクセスが行なわれていないときに、所定アルゴリズムを用いて選択されたアドレスから読み出されたデータ、を含むことを特徴とする。
【００２１】
請求項１０記載の発明は、請求項１ないし請求項８のいずれかに記載のメモリアクセスシステムにおいて、前記第３データは、前記ホストが処理するために前記メモリから読み出されたデータ、を含むことを特徴とする。
【００２２】
請求項１１記載の発明は、請求項１ないし請求項１０のいずれかに記載のメモリアクセスシステムにおいて、前記第２データは、前記第１シンドローム、を含むことを特徴とする。
【発明の効果】
【００２３】
本発明に係るメモリアクセスシステムは、メモリに書き込む前のデータについて第１シンドロームを生成して、メモリに書き込んだ後のデータについて第２シンドロームを生成する。メモリアクセスシステムは、メモリにおいてスキャンしたデータについて、第２シンドロームを用いて、第２シンドロームが生成された後に発生した誤りを検出する。メモリアクセスシステムは、メモリにおいてスキャンしたデータのうち、第２シンドロームが生成された後に発生した誤りを検出したデータについて、第１シンドロームを用いて、第１シンドロームが生成された後に発生した誤りを訂正する。
【００２４】
本発明においては、メモリがＲＯＭのように使用されることを想定している。第２シンドロームが生成された後に発生した誤りは、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りである。第１シンドロームが生成された後に発生した誤りは、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りである。
【００２５】
メモリアクセスシステムは、読み出しアドレスにおいて格納されるデータのみならず、スキャンアドレスにおいて格納されるデータについても、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出する。そのため、メモリアクセスシステムは、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りが過度に蓄積する前に、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出できる。そして、メモリアクセスシステムは、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出したデータについて、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りを訂正できる。
【００２６】
これにより、メモリアクセスシステムは、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象に対処するときに、過剰な誤り訂正能力を持つ必要がなくなる。そのため、メモリアクセスシステムは、回路規模を大きくすることなく、また、誤り検出および誤り訂正に時間を要することなく、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避または低減できる。
【発明を実施するための最良の形態】
【００２７】
｛第１の実施の形態｝
以下、図面を参照しつつ、第１の実施の形態について説明する。まず、メモリアクセスシステムおよびメモリの構成要素について説明する。次に、メモリアクセスシステムの処理の流れについて、以下に示す順序で説明する：（１）書き込み処理の流れ、（２）書き込み後における確認読み出し処理の流れ、（３）通常読み出し処理の流れ、（４）誤り検出後におけるリフレッシュ処理の流れ。
【００２８】
＜メモリアクセスシステムおよびメモリの構成要素＞
図１、図３、図５は、メモリアクセスシステムおよびメモリの構成要素を示すブロック図である。図１は、書き込み処理の流れにおける情報のやり取りをも示している。図３は、確認読み出し処理の流れにおける情報のやり取りをも示している。図５は、通常読み出し処理の流れにおける情報のやり取りをも示している。
【００２９】
メモリアクセスシステムは、メモリ３にアクセスするシステムであり、ホスト１、メモリコントローラ２などから構成される。ホスト１は、メモリ３にデータを書き込むように、また、メモリ３からデータを読み出すように、メモリコントローラ２に要求する。また、ホスト１は、ホスト１に誤り検出結果を通知するように、また、メモリ３に誤り訂正を行なったデータを書き込むように、メモリコントローラ２に要求する。
【００３０】
メモリコントローラ２は、ホスト１から要求を受けることにより、メモリ３にデータを書き込み、また、メモリ３からデータを読み出す。また、メモリコントローラ２は、メモリ３をスキャンして誤り検出を行なう。そして、メモリコントローラ２は、ホスト１から要求を受けることにより、ホスト１に誤り検出結果を通知して、また、メモリ３に誤り訂正を行なったデータを書き込む。
【００３１】
メモリ３は、メモリコントローラ２から要求を受けることにより、メモリコントローラ２からデータを入力して、また、メモリコントローラ２にデータを出力する。また、メモリ３は、ホスト１が書き込みおよび読み出しを行なうデータのみならず、メモリコントローラ２が誤り検出および誤り訂正を行なうためのシンドロームをも格納する。
【００３２】
本実施の形態におけるメモリ３として、ＳＬＣ（Ｓｉｎｇｌｅ−Ｌｅｖｅｌ  Ｃｅｌｌ）方式、または、ＭＬＣ（Ｍｕｌｔｉ−Ｌｅｖｅｌ  Ｃｅｌｌ）方式のＮＡＮＤフラッシュメモリを使用することが可能である。より一般的には、読み出しアドレスにおいて格納されるデータが繰り返し読み出されるときに、非読み出しアドレスにおいて格納されるデータが意図せず書き換えられる可能性がある不揮発性メモリにおいて、本実施の形態を実施することが可能である。
【００３３】
メモリコントローラ２は、ホストインターフェース２１、制御部２２、メモリインターフェース２３、セレクタ２４、２５、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）回路２６、ＥＤＣ（Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ  Ｃｏｄｅ）回路２７などから構成される。
【００３４】
ホストインターフェース２１は、ホスト１およびメモリコントローラ２が、データ、コマンド、ＲＤＹ／ＢＳＹ信号、誤り検出結果などをやり取りするためのインターフェースである。
【００３５】
制御部２２は、メモリコントローラ２を制御するための機能部である。制御部２２は、ホスト１から書き込みコマンドおよび書き込みデータを入力したときには、メモリ３に書き込みコマンドおよび書き込みデータを出力する。制御部２２は、ホスト１から読み出しコマンドを入力したときには、メモリ３に読み出しコマンドを出力して、ホスト１に読み出しデータを出力する。
【００３６】
制御部２２は、ホスト１に読み出しデータを出力するときには、読み出しアドレスに限定せずに選択したスキャンアドレスにおいてメモリ３をスキャンして、誤り検出結果を格納する。制御部２２は、ホスト１からＳｔａｔｕｓコマンドを入力したときには、ホスト１に誤り検出結果を通知する。制御部２２は、ホスト１からＲｅｆｒｅｓｈコマンドを入力したときには、メモリ３に誤り訂正が行なわれたデータを書き込む。
【００３７】
メモリインターフェース２３は、メモリコントローラ２およびメモリ３が、データ、コマンド、制御信号、ＲＤＹ／ＢＳＹ信号などをやり取りするためのインターフェースである。
【００３８】
セレクタ２４は、制御部２２から２値信号“０”を入力するときには、入力した書き込みデータを出力する。セレクタ２４は、制御部２２から２値信号“１”を入力するときには、入力した後述の第１シンドロームを出力する。
【００３９】
セレクタ２５は、制御部２２から２値信号“０”を入力するときには、入力した書き込みデータまたは第１シンドロームを出力する。セレクタ２５は、制御部２２から２値信号“１”を入力するときには、入力した後述の第２シンドロームを出力する。
【００４０】
ＥＣＣ回路２６は、誤り検出および誤り訂正を行なう回路である。ＥＣＣ回路２６は、メモリ３に書き込まれる前のデータについて、第１シンドロームを生成する。そして、ＥＣＣ回路２６は、読み出しアドレスにおいて格納されるデータについて、第１シンドロームを用いて、誤り検出および誤り訂正を行なう。
【００４１】
ＥＤＣ回路２７は、誤り検出を行なう回路である。ＥＤＣ回路２７は、メモリ３に書き込まれた後のデータについて、第２シンドロームを生成する。そして、ＥＤＣ回路２７は、スキャンアドレスにおいて格納されるデータについて、第２シンドロームを用いて、誤り検出を行なう。
【００４２】
本実施の形態においては、メモリ３がＲＯＭのように使用されることを想定している。メモリ３に書き込まれる前のデータには、誤りが含まれていない。メモリ３に書き込まれた後のデータには、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象による誤りが含まれている可能性がある。読み出しアドレスおよびスキャンアドレスにおいて格納されるデータには、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象による誤りのみならず、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りが含まれている可能性がある。
【００４３】
ＥＣＣ回路２６が生成する第１シンドロームは、メモリ３に書き込まれる前のデータを基準として書き込み時に発生する、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りに対処する。ＥＤＣ回路２７が生成する第２シンドロームは、メモリ３に書き込まれた後のデータを基準として書き込み後に発生する、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りに対処する。
【００４４】
ＥＣＣ回路２６およびＥＤＣ回路２７は、それぞれ、第１シンドロームおよび第２シンドロームをそれぞれ生成する。メモリコントローラ２は、第２シンドロームを用いて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出できる。また、メモリコントローラ２は、第１シンドロームを用いて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出したデータについて、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りを検出および訂正できる。
【００４５】
＜書き込み処理の流れ＞
次に、図１および図２を用いて、書き込み処理の流れについて説明する。図２は、メモリコントローラ２における書き込み処理の流れを示すフローチャートである。書き込み処理の流れにおいては、ホスト１はメモリ３にデータを書き込む。また、制御部２２はメモリ３にＥＣＣ回路２６により生成された第１シンドロームを書き込むための制御を行なう。ここで、メモリアクセスシステムおよびメモリ３の製造段階において、大量生産に対応するデータ書き込み装置が、メモリ３にデータを書き込んでもよい。
【００４６】
制御部２２は、ホストインターフェース２１を介してホスト１から、書き込みコマンドおよび書き込みデータを入力する（ステップＳ１１）。制御部２２は、書き込みコマンドを入力したことを認識する。制御部２２は、ホストインターフェース２１を介してホスト１に、メモリ３のＢＵＳＹ状態を示すＲＤＹ／ＢＳＹ信号“０”を出力する。
【００４７】
制御部２２は、メモリインターフェース２３を介してメモリ３に、書き込みコマンドおよび書き込み制御信号を出力する（ステップＳ１２）。制御部２２は、セレクタ２４に２値信号“０”を、セレクタ２５に２値信号“０”を出力する。制御部２２は、セレクタ２４、２５、メモリインターフェース２３を介してメモリ３に、書き込みデータを出力する（ステップＳ１２）。
【００４８】
ＥＣＣ回路２６は、制御部２２がメモリ３に書き込みデータを出力しているときに、書き込みデータについて第１シンドロームを生成する（ステップＳ１３）。制御部２２は、メモリ３に書き込みデータを出力し終わったときに、セレクタ２４に２値信号“１”を、セレクタ２５に２値信号“０”を出力する。制御部２２は、セレクタ２４、２５、メモリインターフェース２３を介してメモリ３に、ＥＣＣ回路２６により生成された第１シンドロームを書き込むための制御を行なう（ステップＳ１４）。制御部２２は、ホストインターフェース２１を介してホスト１に、メモリ３のＲＥＡＤＹ状態を示すＲＤＹ／ＢＳＹ信号“１”を出力する。
【００４９】
ホスト１は、書き込み処理を完了していないならば、ホストインターフェース２１を介してメモリコントローラ２に、新たに書き込みコマンドおよび書き込みデータを出力する。そして、ステップＳ１１からステップＳ１４までの処理の流れが実行される。ホスト１は、書き込み処理を完了しているならば、図３および図４を用いて説明する確認読み出し処理を開始する。
【００５０】
書き込み処理が完了した段階では、データ３１１、３１２、３１３・・・、第１シンドローム３２１、３２２、３２３・・・が、メモリ３に書き込まれている。第１シンドローム３２１、３２２、３２３・・・は、それぞれ、メモリ３に書き込まれる前のデータ３１１、３１２、３１３・・・について、ＥＣＣ回路２６により生成されたシンドロームである。すなわち、第１シンドローム３２１、３２２、３２３・・・は、それぞれ、メモリ３に書き込まれる前のデータ３１１、３１２、３１３・・・を基準とした誤りに対処するシンドロームである。
【００５１】
＜書き込み後における確認読み出し処理の流れ＞
次に、図３および図４を用いて、書き込み後における確認読み出し処理の流れについて説明する。図４は、メモリコントローラ２における確認読み出し処理の流れを示すフローチャートである。確認読み出し処理の流れにおいては、ホスト１はメモリ３からデータを読み出す。そして、ホスト１はメモリ３に書き込んだデータとメモリ３から読み出したデータが一致するかどうかを確認する。また、制御部２２はメモリ３にＥＤＣ回路２７により生成された第２シンドロームを書き込むための制御を行なう。ここで、大量生産に対応するデータ書き込み装置が、メモリ３からデータを読み出してもよい。
【００５２】
制御部２２は、ホストインターフェース２１を介してホスト１から、読み出しコマンドを入力する（ステップＳ２１）。制御部２２は、読み出しコマンドを入力したことを認識する。制御部２２は、ホストインターフェース２１を介してホスト１に、メモリ３のＢＵＳＹ状態を示すＲＤＹ／ＢＳＹ信号“０”を出力する。
【００５３】
制御部２２は、メモリインターフェース２３を介してメモリ３に、読み出しコマンドおよび読み出し制御信号を出力する（ステップＳ２２）。ここで、制御部２２がメモリ３に出力する読み出しコマンドは、メモリ３からデータおよびそのデータについての第１シンドロームを読み出すためのコマンドである。
【００５４】
ＥＤＣ回路２７は、メモリインターフェース２３を介してメモリ３から、読み出しデータを入力する。ＥＤＣ回路２７は、読み出しデータについて第２シンドロームを生成する（ステップＳ２３）。ＥＣＣ回路２６は、メモリインターフェース２３を介してメモリ３から、読み出しデータおよびその読み出しデータについての第１シンドロームを入力する。ＥＣＣ回路２６は、第１シンドロームを用いて読み出しデータについて、誤り検出および誤り訂正を行なう（ステップＳ２４）。制御部２２は、セレクタ２５に２値信号“１”を出力する。制御部２２は、セレクタ２５、メモリインターフェース２３を介してメモリ３に、ＥＤＣ回路２７により生成された第２シンドロームを書き込むための制御を行なう（ステップＳ２５）。
【００５５】
制御部２２は、ホストインターフェース２１を介してホスト１に、メモリ３のＲＥＡＤＹ状態を示すＲＤＹ／ＢＳＹ信号“１”を出力する。ＥＣＣ回路２６は、ホストインターフェース２１を介してホスト１に、誤り訂正を行なった読み出しデータを出力する（ステップＳ２６）。ホスト１は、ステップＳ１１においてメモリ３に書き込んだデータ、および、ステップＳ２６においてメモリ３から読み出したデータを比較する。ホスト１が両データは一致すると確認したときには、メモリ３に書き込まれた後のデータが“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象による誤りを含むとしても、ホスト１が読み出しデータを処理するときに問題は生じない。
【００５６】
ホスト１は、確認読み出し処理を完了していないならば、ホストインターフェース２１を介してメモリコントローラ２に、新たに読み出しコマンドを出力する。そして、ステップＳ２１からステップＳ２６までの処理の流れが実行される。ホスト１は、確認読み出し処理を完了しているならば、図５および図６を用いて説明する通常読み出し処理を開始できる。
【００５７】
確認読み出し処理が完了した段階では、第２シンドローム３３１、３３２、３３３・・・が、さらにメモリ３に書き込まれている。第２シンドローム３３１、３３２、３３３・・・は、それぞれ、メモリ３に書き込まれた後のデータ３１１、３１２、３１３・・・について、ＥＤＣ回路２７により生成されたシンドロームである。すなわち、第２シンドローム３３１、３３２、３３３・・・は、それぞれ、メモリ３に書き込まれた後のデータ３１１、３１２、３１３・・・を基準とした誤りに対処するシンドロームである。
【００５８】
ここで、第２シンドローム３３１、３３２、３３３・・・は、それぞれ、メモリ３に書き込まれた後のデータ３１１、３１２、３１３・・・についてのみならず、メモリ３に書き込まれた後の第１シンドローム３２１、３２２、３２３・・・について、ＥＤＣ回路２７により生成されるシンドロームであってもよい。この場合には、第２シンドローム３３１、３３２、３３３・・・は、それぞれ、メモリ３に書き込まれた後のデータ３１１、３１２、３１３・・・を基準とした誤りのみならず、メモリ３に書き込まれた後の第１シンドローム３２１、３２２、３２３・・・を基準とした誤りにも対処できる。
【００５９】
＜通常読み出し処理の流れ＞
次に、図５および図６を用いて、通常読み出し処理の流れについて説明する。図６は、メモリコントローラ２における通常読み出し処理の流れを示すフローチャートである。通常読み出し処理の流れにおいては、ホスト１はメモリ３からデータを読み出す。また、制御部２２はメモリ３をスキャンする。そして、ＥＤＣ回路２７はスキャンデータについて誤り検出を行なう。
【００６０】
制御部２２は、ホストインターフェース２１を介してホスト１から、読み出しコマンドを入力する（ステップＳ３１）。制御部２２は、読み出しコマンドを入力したことを認識する。制御部２２は、ホストインターフェース２１を介してホスト１に、メモリ３のＢＵＳＹ状態を示すＲＤＹ／ＢＳＹ信号“０”を出力する。
【００６１】
制御部２２は、メモリインターフェース２３を介してメモリ３に、読み出しコマンドおよび読み出し制御信号を出力する（ステップＳ３２）。ここで、制御部２２がメモリ３に出力する読み出しコマンドは、メモリ３からデータおよびそのデータについての第１シンドロームを読み出すためのコマンドである。
【００６２】
ＥＣＣ回路２６は、メモリインターフェース２３を介してメモリ３から、読み出しデータおよびその読み出しデータについての第１シンドロームを入力する。ＥＣＣ回路２６は、第１シンドロームを用いて読み出しデータについて、誤り検出および誤り訂正を行なう（ステップＳ３３）。制御部２２は、ホストインターフェース２１を介してホスト１に、メモリ３のＲＥＡＤＹ状態を示すＲＤＹ／ＢＳＹ信号“１”を出力する。ＥＣＣ回路２６は、ホストインターフェース２１を介してホスト１に、誤り訂正を行なった読み出しデータを出力する（ステップＳ３４）。
【００６３】
制御部２２は、ＥＣＣ回路２６がホスト１に誤り訂正を行なった読み出しデータを出力しているときに、メモリ３をスキャンする（ステップＳ３４）。ここで、制御部２２がメモリ３に出力するスキャンアドレスは、スキャンデータが格納されるアドレスである。さらに、制御部２２は、そのスキャンデータについての第２シンドロームが格納されるアドレスを、メモリ３に出力する。また、メモリ３にアクセスが行なわれていないときに、制御部２２がメモリ３をスキャンしてもよい。たとえば、ホスト１の電源がオンまたはオフにされるときに、制御部２２がメモリ３をスキャンしてもよい。
【００６４】
制御部２２がメモリ３をスキャンする方法として、様々な方法が考えられる。たとえば、制御部２２は、乱数発生によりスキャン開始アドレスを選択する。また、制御部２２は、スキャン開始アドレスからアドレスインクリメントを行なうことにより、更なるスキャンアドレスを選択する。そして、制御部２２は、スキャン開始アドレスおよび更なるスキャンアドレスについて、メモリ３をスキャンしてもよい。この場合には、制御部２２は、読み出しアドレスに限定されない広範囲のスキャンアドレスについて、簡易にメモリ３をスキャンできる。
【００６５】
また、制御部２２は、重要データが格納されるアドレスを選択する。重要データとして、誤りを含むならばホスト１の処理に障害を発生させるデータなどがあげられる。ただし、制御部２２は、重要データが格納されるアドレスからアドレスインクリメントを行なわない。そして、制御部２２は、重要データが格納されるアドレスのみについて、メモリ３をスキャンしてもよい。この場合には、制御部２２は、重要データが格納されるアドレスのみについて、集中的にメモリ３をスキャンできる。
【００６６】
ＥＤＣ回路２７は、メモリインターフェース２３を介してメモリ３から、スキャンデータおよびそのスキャンデータについての第２シンドロームを入力する。ＥＤＣ回路２７は、第２シンドロームを用いてスキャンデータについて誤り検出を行なう（ステップＳ３５）。ＥＤＣ回路２７は、制御部２２に誤り検出結果を出力する。制御部２２は、誤り検出結果を格納する（ステップＳ３６）。
【００６７】
ホスト１は、通常読み出し処理を完了していないならば、ホストインターフェース２１を介してメモリコントローラ２に、新たに読み出しコマンドを出力する。そして、ステップＳ３１からステップＳ３６までの処理の流れが実行される。ホスト１は、通常読み出し処理を完了しているならば、図７を用いて説明するリフレッシュ処理を開始できる。
【００６８】
＜誤り検出後におけるリフレッシュ処理の流れ＞
次に、図７を用いて、誤り検出後におけるリフレッシュ処理の流れについて説明する。図７は、メモリコントローラ２におけるリフレッシュ処理の流れを示すフローチャートである。リフレッシュ処理の流れにおいては、ホスト１は、誤り検出結果を通知するように、メモリコントローラ２に要求する。そして、ホスト１は、誤り検出が行なわれたデータについて誤り訂正を行なうように、メモリコントローラ２に要求する。そして、ＥＣＣ回路２６は、誤り検出が行なわれたデータについて誤り訂正を行なう。
【００６９】
制御部２２は、ホストインターフェース２１を介してホスト１から、Ｓｔａｔｕｓコマンドを入力する（ステップＳ４１）。ホスト１がメモリコントローラ２にＳｔａｔｕｓコマンドを出力するタイミングとして、たとえば、ホスト１の電源がオンまたはオフにされるときがあげられる。また、ホスト１がメモリコントローラ２に読み出しコマンドを出力した回数が所定回数を超えたときがあげられる。制御部２２は、Ｓｔａｔｕｓコマンドを入力したことを認識する。制御部２２は、ホストインターフェース２１を介してホスト１に、誤り検出結果を出力する（ステップＳ４２）。
【００７０】
制御部２２は、ホストインターフェース２１を介してホスト１から、Ｒｅｆｒｅｓｈコマンドを入力する（ステップＳ４３）。制御部２２は、Ｒｅｆｒｅｓｈコマンドを入力したことを認識する。制御部２２は、ホストインターフェース２１を介してホスト１に、メモリ３のＢＵＳＹ状態を示すＲＤＹ／ＢＳＹ信号“０”を出力する。制御部２２は、メモリ３をリフレッシュする。ここで、制御部２２がメモリ３に出力するリフレッシュ対象アドレスは、リフレッシュ対象データが格納されるアドレスである。さらに、制御部２２は、そのリフレッシュ対象データについての第１シンドロームが格納されるアドレスを、メモリ３に出力する。
【００７１】
ＥＣＣ回路２６は、メモリインターフェース２３を介してメモリ３から、リフレッシュ対象データおよびそのリフレッシュ対象データについての第１シンドロームを入力する。ＥＣＣ回路２６は、第１シンドロームを用いてリフレッシュ対象データについて、誤り検出および誤り訂正を行なう（ステップＳ４４）。ＥＣＣ回路２６は、制御部２２に誤り訂正を行なったリフレッシュ対象データを出力する。制御部２２は、メモリインターフェース２３を介してメモリ３に、誤り訂正が行なわれたリフレッシュ対象データを出力する（ステップＳ４５）。制御部２２は、ホストインターフェース２１を介してホスト１に、メモリ３のＲＥＡＤＹ状態を示すＲＤＹ／ＢＳＹ信号“１”を出力する。
【００７２】
ホスト１は、リフレッシュ処理を完了していないならば、ホストインターフェース２１を介してメモリコントローラ２に、新たにＲｅｆｒｅｓｈコマンドを出力する。そして、ステップＳ４３からステップＳ４５までの処理の流れが実行される。ホスト１は、リフレッシュ処理を完了しているならば、図５および図６を用いて説明した通常読み出し処理を開始できる。また、ホスト１およびメモリコントローラ２は、図１から図４までを用いて説明したように、新たに第１シンドロームおよび第２シンドロームを生成できる。
【００７３】
＜第１の実施の形態についてのまとめ＞
次に、図８および図９を用いて、第１の実施の形態についてまとめる。図８は、シンドローム生成処理の流れを示す図である。「書き込みデータ」は、メモリ３に書き込まれる前のデータである。「確認読み出しデータ」は、メモリ３に書き込まれた後のデータである。「通常読み出しデータ」は、読み出しアドレスにおいて格納されるデータである。
【００７４】
書き込みデータを模式的に「１０１０１０」とする。ＥＣＣ回路２６は、書き込みデータについて、第１シンドロームを生成する（ステップＳ１３）。第１シンドロームは、その第１シンドロームが生成された後に、書き込みデータに蓄積された誤りに対処する。この誤りには、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りが含まれる。
【００７５】
確認読み出しデータを模式的に「１１１０１１」とする。確認読み出しデータおよび書き込みデータを比較すれば、一重線部分において“０”が“１”に意図せず書き換えられる“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象が発生している。ＥＤＣ回路２７は、確認読み出しデータについて、第２シンドロームを生成する（ステップＳ２３）。第２シンドロームは、その第２シンドロームが生成された後に、確認読み出しデータに蓄積された誤りに対処する。この誤りには、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りが含まれる。
【００７６】
通常読み出しデータを模式的に「１１００１１」とする。通常読み出しデータおよび確認読み出しデータを比較すれば、二重線部分において“１”が“０”に意図せず書き換えられる“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生している。
【００７７】
図９は、誤り検出処理および誤り訂正処理の流れを示す図である。本実施の形態においては、メモリ３がＲＯＭのように使用されることを想定している。すなわち、メモリ３への書き込みは基本的には１回のみ行なわれるが、メモリ３からの読み出しは繰り返し行なわれる。そのため、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象が発生する頻度は容易に保証できるが、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する頻度は容易に保証できない。
【００７８】
図９においては、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象が発生する頻度を、５１２Ｂｙｔｅのうち４ｂｉｔと保証する。ＥＤＣ回路２７は、５１２Ｂｙｔｅのうち２ｂｉｔの誤りを検出できる。ＥＣＣ回路２６は、５１２Ｂｙｔｅのうち５ｂｉｔの誤りを訂正できる。
【００７９】
制御部２２は、読み出しアドレスに限定されないスキャンアドレスについて、メモリ３をスキャンする（ステップＳ３４）。ＥＤＣ回路２７は、第２シンドロームを用いて、スキャンデータ「１１００１１」について、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出する（ステップＳ３５）。ＥＤＣ回路２７は、制御部２２に誤り検出結果を出力する（ステップＳ３６）。
【００８０】
スキャンデータ「１１００１１」に、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りが含まれているとしても、ＥＤＣ回路２７は“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを早期に検出できる。また、ＥＤＣ回路２７は“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出するだけである。そのため、ＥＤＣ回路２７は“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを高速に検出できる。
【００８１】
ＥＣＣ回路２６は、第１シンドロームを用いて、通常読み出しデータ（あるいはリフレッシュ対象データ）「１１００１１」について、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りを検出して訂正する（ステップＳ３３、ステップＳ４４）。ＥＣＣ回路２６は、制御部２２に誤り訂正を行なった通常読み出しデータ（あるいはリフレッシュ対象データ）「１０１０１０」を出力する。
【００８２】
通常読み出しデータ（あるいはリフレッシュ対象データ）「１１００１１」に、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りが含まれているとしても、多くは含まれていない。たとえば、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する頻度を、５１２Ｂｙｔｅのうち１ｂｉｔと保証できる。そのため、ＥＣＣ回路２６は“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りを検出して訂正するために、過剰な誤り訂正能力を持つ必要がなくなる。
【００８３】
すなわち、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象が発生する頻度（５１２Ｂｙｔｅのうち４ｂｉｔ）、および、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する頻度（５１２Ｂｙｔｅのうち１ｂｉｔ）を考慮して、ＥＣＣ回路２６の誤り訂正能力を５１２Ｂｙｔｅのうち５ｂｉｔに低く設定できる。また、メモリコントローラ２は、回路規模を大きくすることなく、誤り検出および誤り訂正に要する時間を短縮できる。
【００８４】
ＥＣＣ回路２６は、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出されたスキャンデータについて、誤り検出および誤り訂正を行なう。ＥＣＣ回路２６は、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象による誤りをも検出されたデータについて、誤り検出および誤り訂正を行なうわけではない。そのため、メモリコントローラ２は、誤り検出および誤り訂正に要する時間を短縮できる。また、メモリコントローラ２は、過剰なリフレッシュ処理によるメモリセルの劣化を防止できる。
【００８５】
｛第２の実施の形態｝
次に、図１０を用いて、第２の実施の形態について説明する。図１０は、第２の実施の形態に係る誤り検出処理および誤り訂正処理の流れを示す図である。第１および第２の実施の形態に係るメモリコントローラ２の相違点として、第２の実施の形態に係るメモリコントローラ２は、ＥＣＣ回路２６に代えてＥＣＣ回路２８を、ＥＤＣ回路２７に代えてＥＣＣ回路２９を備える。
【００８６】
第２の実施の形態においても、第１の実施の形態と同様に、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象が発生する頻度を、５１２Ｂｙｔｅのうち４ｂｉｔと保証する。ＥＣＣ回路２９は、５１２Ｂｙｔｅのうち１ｂｉｔの誤りを訂正できる。そのため、ＥＣＣ回路２９は、５１２Ｂｙｔｅのうち少なくとも２ｂｉｔの誤りを検出できる。ＥＣＣ回路２８は、５１２Ｂｙｔｅのうち４ｂｉｔの誤りを訂正できる。
【００８７】
第１および第２の実施の形態における処理の流れの相違点として、誤り訂正処理の流れが異なる（ステップＳ２４、ステップＳ３３、ステップＳ４４に相当）。まず、シンドローム生成処理の流れについて説明する。ＥＣＣ回路２８は、書き込みデータ「１０１０１０」について、第１シンドロームを生成する（ステップＳ１３に相当）。ＥＣＣ回路２９は、確認読み出しデータ「１１１０１１」について、第２シンドロームを生成する（ステップＳ２３に相当）。
【００８８】
次に、誤り検出処理の流れについて説明する。ＥＣＣ回路２９は、第２シンドロームを用いて、スキャンデータ「１１００１１」について、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出する（ステップＳ３５に相当）。ＥＣＣ回路２９は、制御部２２に誤り検出結果を出力する（ステップＳ３６に相当）。
【００８９】
次に、誤り訂正処理の流れについて説明する。ＥＣＣ回路２９は、第２シンドロームを用いて、通常読み出しデータ（あるいはリフレッシュ対象データ）「１１００１１」について、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出して訂正する。ＥＣＣ回路２９は、ＥＣＣ回路２８に、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを訂正した通常読み出しデータ（あるいはリフレッシュ対象データ）「１１１０１１」を出力する。
【００９０】
ＥＣＣ回路２８は、第１シンドロームを用いて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを訂正された通常読み出しデータ（あるいはリフレッシュ対象データ）「１１１０１１」について、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出して訂正する。ＥＣＣ回路２８は、制御部２２に、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りを訂正された通常読み出しデータ（あるいはリフレッシュ対象データ）「１０１０１０」を出力する。
【００９１】
第１の実施の形態においては、図９を用いて説明したように、ＥＣＣ回路２６は誤り訂正能力を備えるが、ＥＤＣ回路２７は誤り訂正能力を備えていない。しかし、第２の実施の形態においては、図１０を用いて説明したように、ＥＣＣ回路２８およびＥＣＣ回路２９はともに誤り訂正能力を備える。そのため、第２の実施の形態に係るメモリコントローラ２は、第１の実施の形態に係るメモリコントローラ２より、誤り検出および誤り訂正に時間を要するとしても、ＥＣＣ回路２８はＥＣＣ回路２６より誤り訂正能力を低くすることができる。
【００９２】
｛第３の実施の形態｝
次に、図１１を用いて、第３の実施の形態について説明する。図１１は、第３の実施の形態に係る誤り検出処理および誤り訂正処理の流れを示す図である。第１および第３の実施の形態に係るメモリコントローラ２の相違点として、第３の実施の形態に係るメモリコントローラ２は、ＥＣＣ回路２６およびＥＤＣ回路２７に代えてＥＣＣ回路３０を備える。
【００９３】
すなわち、第１の実施の形態においては、ＥＣＣ回路２６およびＥＤＣ回路２７は別個の回路ブロックで構成されて、第２の実施の形態においては、ＥＣＣ回路２８およびＥＣＣ回路２９は別個の回路ブロックで構成される。しかし、第３の実施の形態においては、ＥＣＣ回路３０は単一の回路ブロックで構成される。
【００９４】
第３の実施の形態においても、第１の実施の形態と同様に、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象が発生する頻度を、５１２Ｂｙｔｅのうち４ｂｉｔと保証する。ＥＣＣ回路３０は、５１２Ｂｙｔｅのうち５ｂｉｔの誤りを訂正できる。
【００９５】
第１および第３の実施の形態における処理の流れの相違点として、誤り訂正処理の流れが異なる（ステップＳ２４、ステップＳ３３、ステップＳ４４に相当）。まず、シンドローム生成処理の流れについて説明する。ＥＣＣ回路３０は、書き込みデータ「１０１０１０」について、第１シンドロームを生成する（ステップＳ１３に相当）。ＥＣＣ回路３０は、確認読み出しデータ「１１１００１」について、第２シンドロームを生成する（ステップＳ２３に相当）。
【００９６】
次に、誤り検出処理の流れについて説明する。ＥＣＣ回路３０は、第２シンドロームを用いて、スキャンデータ「１１００１１」について、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出する（ステップＳ３５に相当）。ＥＣＣ回路３０は、制御部２２に誤り検出結果を出力する（ステップＳ３６に相当）。
【００９７】
次に、誤り訂正処理の流れについて説明する。ＥＣＣ回路３０は、第１シンドロームを用いて、通常読み出しデータ（あるいはリフレッシュ対象データ）「１１００１１」について、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りを検出して訂正する（ステップＳ３３、ステップＳ４４に相当）。ＥＣＣ回路３０は、制御部２２に、“Ｐｒｏｇｒａｍ  Ｄｉｓｔｕｒｂ”現象および“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象による誤りを訂正した通常読み出しデータ（あるいはリフレッシュ対象データ）「１０１０１０」を出力する。
【００９８】
第１の実施の形態においては、図９を用いて説明したように、メモリコントローラ２は、誤り検出および誤り訂正を行なう回路を２個に分割している。しかし、第３の実施の形態においては、図１１を用いて説明したように、メモリコントローラ２は、誤り検出および誤り訂正を行なう回路を１個にまとめている。そのため、第３の実施の形態に係るメモリコントローラ２は、第１の実施の形態に係るメモリコントローラ２より、誤り検出および誤り訂正に時間を要するとしても、回路規模をより小さくできる。
【００９９】
｛変形例｝
＜通常読み出しデータについての誤り検出＞
第１の実施の形態においては、ＥＤＣ回路２７は、第２シンドロームを用いて、スキャンデータについて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出する。ここで、ＥＤＣ回路２７は、第２シンドロームを用いて、通常読み出しデータについて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出してもよい。
【０１００】
制御部２２は、メモリインターフェース２３を介してメモリ３に、読み出しコマンドおよび読み出し制御信号を出力する。ここで、制御部２２がメモリ３に出力する読み出しコマンドは、メモリ３からデータおよびそのデータについての第１シンドロームおよび第２シンドロームを読み出すためのコマンドである。
【０１０１】
ＥＣＣ回路２６は、メモリインターフェース２３を介してメモリ３から、読み出しデータおよびその読み出しデータについての第１シンドロームを入力する。ＥＤＣ回路２７は、メモリインターフェース２３を介してメモリ３から、読み出しデータおよびその読み出しデータについての第２シンドロームを入力する。
【０１０２】
ＥＣＣ回路２６は、第１シンドロームを用いて読み出しデータについて誤り検出および誤り訂正を行なう。ＥＣＣ回路２６は、ホストインターフェース２１を介してホスト１に、誤り訂正を行なった読み出しデータを出力する。ＥＤＣ回路２７は、第２シンドロームを用いて読み出しデータについて誤り検出を行なう。ＥＤＣ回路２７は、制御部２２に読み出しデータについての誤り検出結果を通知する。
【０１０３】
本変形例においても、第１の実施の形態と同様に、制御部２２は、ＥＣＣ回路２６がホスト１に誤り訂正を行なった読み出しデータを出力しているときに、メモリ３をスキャンしてもよい。この場合には、ＥＤＣ回路２７は、制御部２２に読み出しデータについての誤り検出結果のみならず、スキャンデータについての誤り検出結果をも通知できる。
【０１０４】
第２の実施の形態においても、ＥＣＣ回路２９は、第２シンドロームを用いて、通常読み出しデータについて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出してもよい。第３の実施の形態においても、ＥＣＣ回路３０は、第２シンドロームを用いて、通常読み出しデータについて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象のみによる誤りを検出してもよい。
【０１０５】
＜ホストによるシンドローム生成＞
第１から第３までの実施の形態においては、メモリコントローラ２が第１シンドロームおよび第２シンドロームを生成する。ここで、ホスト１が第１シンドロームおよび第２シンドロームを生成してもよい。
【０１０６】
まず、ホスト１は、メモリ３に書き込む前のデータについて、第１シンドロームを生成する。そして、ホスト１は、書き込みデータおよび第１シンドロームをメモリ３に書き込めばよい。
【０１０７】
次に、ホスト１は、メモリ３に書き込んだ後のデータを、ＥＣＣ回路２６、２８、３０を介さずにメモリ３から読み出す。そして、ホスト１は、メモリ３に書き込んだ後のデータについて、第２シンドロームを生成する。さらに、ホスト１は、第２シンドロームをメモリ３に書き込めばよい。
【図面の簡単な説明】
【０１０８】
【図１】メモリアクセスシステムおよびメモリの構成要素を示すブロック図である。
【図２】書き込み処理の流れを示すフローチャートである。
【図３】メモリアクセスシステムおよびメモリの構成要素を示すブロック図である。
【図４】確認読み出し処理の流れを示すフローチャートである。
【図５】メモリアクセスシステムおよびメモリの構成要素を示すブロック図である。
【図６】通常読み出し処理の流れを示すフローチャートである。
【図７】リフレッシュ処理の流れを示すフローチャートである。
【図８】シンドローム生成処理の流れを示す図である。
【図９】誤り検出処理および誤り訂正処理の流れを示す図である。
【図１０】誤り検出処理および誤り訂正処理の流れを示す図である。
【図１１】誤り検出処理および誤り訂正処理の流れを示す図である。
【図１２】ＮＡＮＤフラッシュメモリの模式図である。
【符号の説明】
【０１０９】
１  ホスト
２  メモリコントローラ
３  メモリ
２１  ホストインターフェース
２２  制御部
２３  メモリインターフェース
２４、２５  セレクタ
２６  ＥＣＣ回路
２７  ＥＤＣ回路
【図１】
0005162763.tif 000002
【図２】
0005162763.tif 000003
【図３】
0005162763.tif 000004
【図４】
0005162763.tif 000005
【図５】
0005162763.tif 000006
【図６】
0005162763.tif 000007
【図７】
0005162763.tif 000008
【図８】
0005162763.tif 000009
【図９】
0005162763.tif 000010
【図１０】
0005162763.tif 000011
【図１１】
0005162763.tif 000012
【図１２】
0005162763.tif 000013