(57)【要約】【課題】不揮発性半導体メモリに対する繰り返し読み出しにより、意図せずしてデータが書き変わる現象に対して、正しいデータを出力可能とする技術を提供することを課題とする。【解決手段】メモリの各ページのデータには、初期段階で、第１ＥＣＣ５１が付加されている。メモリコントローラがデータを読み出すと、第１ＥＣＣ５１を利用してエラー検出が行われる。エラーが検出された場合、第１のエラー訂正アルゴリズムを利用してエラー訂正を行い、訂正したデータをホストシステムに出力する。その後、メモリコントローラは、第１のエラー訂正アルゴリズムよりも訂正能力の高い第２のエラー訂正アルゴリズムを利用し、訂正したデータに対する第２ＥＣＣ５２を生成する。そして、第１ＥＣＣ５１に代えて第２ＥＣＣ５２をメモリに格納する。【選択図】図５
2008192054.tif 000002
【特許請求の範囲】
【請求項１】
第１のエラー訂正コードあるいは第１のエラー訂正コードより訂正能力の高い第２のエラー訂正コードが付加されたデータが格納される再書き込み可能な不揮発性半導体メモリと、
前記不揮発性半導体メモリに対するアクセスを制御するメモリコントローラと、
を備え、
前記メモリコントローラは、第１のエラー訂正コードおよび第２のエラー訂正コードを利用した誤り訂正処理を実行することが可能であり、
前記メモリコントローラは、
前記不揮発性半導体メモリから読み出したデータに対して、第１のエラー訂正コードあるいは第２のエラー訂正コードを利用して誤り訂正処理を実行する手段、
を備えることを特徴とする半導体メモリシステム。
【請求項２】
データが格納される再書き込み可能な不揮発性半導体メモリと、
前記不揮発性半導体メモリに格納されたデータを訂正するための第１のエラー訂正コードあるいは第１のエラー訂正コードより訂正能力の高い第２のエラー訂正コードが格納される訂正コード記憶手段と、
前記不揮発性半導体メモリに対するアクセスを制御するメモリコントローラと、
を備え、
前記メモリコントローラは、第１のエラー訂正コードおよび第２のエラー訂正コードを利用した誤り訂正処理を実行することが可能であり、
前記メモリコントローラは、
前記不揮発性半導体メモリから読み出したデータに対して、第１のエラー訂正コードあるいは第２のエラー訂正コードを利用して誤り訂正処理を実行する手段、
を備えることを特徴とする半導体メモリシステム。
【請求項３】
請求項１に記載の半導体メモリシステムにおいて、
前記メモリコントローラは、さらに、
データに対して第１のエラー訂正コードを利用して誤り訂正を行った後、読み出しデータに係る第２のエラー訂正コードを生成し、前記不揮発性半導体メモリに、生成した第２のエラー訂正コードを格納するエラー訂正コード格納手段、
を備えることを特徴とする半導体メモリシステム。
【請求項４】
請求項２に記載の半導体メモリシステムにおいて、
前記メモリコントローラは、さらに、
データに対して第１のエラー訂正コードを利用して誤り訂正を行った後、読み出しデータに係る第２のエラー訂正コードを生成し、前記訂正コード記憶手段に、生成した第２のエラー訂正コードを格納するエラー訂正コード格納手段、
を備えることを特徴とする半導体メモリシステム。
【請求項５】
請求項３または請求項４に記載の半導体メモリシステムにおいて、
前記訂正コード格納手段は、読み出しデータに関してエラーが発生したとき、エラービットの数が所定の閾値を超えている場合に、第２のエラー訂正コードを格納することを特徴とする半導体メモリシステム。
【請求項６】
請求項３または請求項４に記載の半導体メモリシステムにおいて、
前記訂正コード格納手段は、読み出しデータに関してエラーが発生したとき、エラービットの数に関わらず、第２のエラー訂正コードを格納することを特徴とする半導体メモリシステム。
【請求項７】
請求項１に記載の半導体メモリシステムにおいて、
前記メモリコントローラは、さらに、
前記不揮発性半導体メモリからからデータを読み出したとき、その領域の読み出し回数が、所定の回数を超えていた場合は、読み出しデータに係る第２のエラー訂正コードを生成し、前記不揮発性半導体メモリに、生成した第２のエラー訂正コードを格納するエラー訂正コード格納手段、
を備えることを特徴とする半導体メモリシステム。
【請求項８】
請求項２に記載の半導体メモリシステムにおいて、
前記メモリコントローラは、さらに、
前記不揮発性半導体メモリからからデータを読み出したとき、その領域の読み出し回数が、所定の回数を超えていた場合は、読み出しデータに係る第２のエラー訂正コードを生成し、前記訂正コード記憶手段に、生成した第２のエラー訂正コードを格納するエラー訂正コード格納手段、
を備えることを特徴とする半導体メモリシステム。
【請求項９】
請求項１に記載の半導体メモリシステムにおいて、
前記不揮発性半導体メモリには、各記憶領域のデータについて第１のエラー訂正コードを使用するのか、第２のエラー訂正コードを使用するのかを指定する指定情報が記憶されていることを特徴とする半導体メモリシステム。
【請求項１０】
請求項２に記載の半導体メモリシステムにおいて、
前記訂正コード記憶手段には、各記憶領域のデータについて第１のエラー訂正コードを使用するのか、第２のエラー訂正コードを使用するのかを指定する指定情報が記憶されていることを特徴とする半導体メモリシステム。
【請求項１１】
請求項９または請求項１０に記載の半導体メモリシステムにおいて、
前記訂正コード格納手段は、第２のエラー訂正コードを格納した後、前記指定情報についても、第２のエラー訂正コードを指定する情報に書き換えることを特徴とする半導体メモリシステム。
【請求項１２】
第１のエラー訂正コードおよび第１のエラー訂正コードより訂正能力の高い第２のエラー訂正コードが付加されたデータが格納される再書き込み可能な前記不揮発性半導体メモリと、
前記不揮発性半導体メモリに対するアクセスを制御するメモリコントローラと、
を備え、
前記不揮発性半導体メモリには、各記憶領域のデータについて第１のエラー訂正コードが適用されているのか、第２のエラー訂正コードが適用されているのかを指定する指定情報が記憶されており、
前記メモリコントローラは、第１のエラー訂正コードおよび第２のエラー訂正コードを利用した誤り訂正処理を実行することが可能であり、
前記メモリコントローラは、
前記不揮発性半導体メモリから読み出したデータに対して、前記指定情報で指定されている第１のエラー訂正コードあるいは第２のエラー訂正コードを利用して誤り訂正処理を実行する手段、
を備えることを特徴とする半導体メモリシステム。
【請求項１３】
データが格納される再書き込み可能な不揮発性半導体メモリと、
前記不揮発性半導体メモリに格納されたデータを訂正するための第１のエラー訂正コードおよび第１のエラー訂正コードより訂正能力の高い第２のエラー訂正コードが格納される訂正コード記憶手段と、
前記不揮発性半導体メモリに対するアクセスを制御するメモリコントローラと、
を備え、
前記訂正コード記憶手段には、各記憶領域のデータについて第１のエラー訂正コードが適用されているのか、第２のエラー訂正コードが適用されているのかを指定する指定情報が記憶されており、
前記メモリコントローラは、第１のエラー訂正コードおよび第２のエラー訂正コードを利用した誤り訂正処理を実行することが可能であり、
前記メモリコントローラは、
前記不揮発性半導体メモリから読み出したデータに対して、前記指定情報で指定されている第１のエラー訂正コードあるいは第２のエラー訂正コードを利用して誤り訂正処理を実行する手段、
を備えることを特徴とする半導体メモリシステム。
【請求項１４】
請求項１２または請求項１３に記載の半導体メモリシステムにおいて、さらに、
読み出しデータに対して第１のエラー訂正コードを利用して誤り訂正を行った後、当該読み出しデータに関して第２のエラー訂正コードが適用されるよう前記指定情報を書き換える指定情報変更手段、
を備えることを特徴とする半導体メモリシステム。
【請求項１５】
請求項１４に記載の半導体メモリシステムにおいて、
前記指定情報変更手段は、読み出しデータに関してエラーが発生した場合であって、エラービットの数が所定の閾値を超えている場合に、前記指定情報を書き換えることを特徴とする半導体メモリシステム。
【請求項１６】
請求項１４に記載の半導体メモリシステムにおいて、
前記指定情報変更手段は、読み出しデータに関してエラーが発生した場合、エラービットの数に関わらず、前記指定情報を書き換えることを特徴とする半導体メモリシステム。
【請求項１７】
請求項１２または請求項１３に記載の半導体メモリシステムにおいて、
前記メモリコントローラは、さらに、
前記不揮発性半導体メモリからデータを読み出したとき、その領域の読み出し回数が、所定の回数を超えていた場合は、当該読み出しデータに関して第２のエラー訂正コードが適用されるよう前記指定情報を書き換える指定情報変更手段、
を備えることを特徴とする半導体メモリシステム。
【請求項１８】
請求項１、請求項２、請求項１２および請求項１３のいずれかに記載の半導体メモリシステムにおいて、
前記不揮発性半導体メモリに記憶されるデータの中で、読み出しアクセスが多数発生すると想定されたデータに関しては、第２のエラー訂正コードが使用されることを特徴とする半導体メモリシステム。
【請求項１９】
請求項１、請求項２、請求項１２および請求項１３のいずれかに記載の半導体メモリシステムにおいて、
前記不揮発性半導体メモリの記憶領域の中で、読み出しエラーが発生すると想定された記憶領域に格納されるデータに関しては、第２のエラー訂正コードが使用されることを特徴とする半導体メモリシステム。
【請求項２０】
請求項１、請求項２、請求項１２および請求項１３のいずれかに記載の半導体メモリシステムにおいて、
前記不揮発性半導体メモリに記憶されるデータの中で、重要度の高いデータに関しては、第２のエラー訂正コードが使用されることを特徴とする半導体メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリなどの再書き込み可能な不揮発性半導体メモリから正しいデータを取得するための技術に関する。詳しくは、フラッシュメモリからデータが繰り返し読み出されることにより、データが意図せず書き換えられる現象に対しても、正しくデータを供給する技術に関する。
【背景技術】
【０００２】
不揮発性メモリの中でも、ＮＡＮＤフラッシュメモリは、単純な回路構成による高集積化や製造コスト減、ユーザによる書き込みの容易化を図ることを可能とするため、ＳＤメモリカードなどに大量に採用されている。
【０００３】
最近では、ＮＡＮＤフラッシュメモリは、ゲーム機などにも採用されている。ＮＡＮＤフラッシュメモリがゲーム機などで使用される際には、書き込みは発生せず、連続的な読み出しが発生する。すなわち、ＮＡＮＤフラッシュメモリがＲＯＭとして採用されることが多くなりつつある。
【０００４】
しかし、ゲーム機などでは、特定のプログラムが繰り返し読み出されることが多いため、プログラムが意図せず書き換えられる可能性が指摘され始めている。このような現象は“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象と呼ばれており、本現象が発生するメカニズムについて、以下に簡単に説明する。
【０００５】
図１１は、ＮＡＮＤフラッシュメモリの模式図である。ＮＡＮＤフラッシュメモリは、格子状に配線されたビット線４１とワード線４２、４３、４４、メモリセル５２、５３、選択トランジスタ５４などから構成されている。
【０００６】
メモリセル５２が格納する二値データ（“０”または“１”）を読み出す場合を考える。この場合、メモリセル５２は選択セル５２、メモリセル５３は非選択セル５３と呼ばれている。まず、選択トランジスタ５４により、選択セル５２が属するビット線４１が指定される。次に、選択セル５２が属するワード線４２に対して、低ゲート電圧Ｖ（Ｌｏｗ）＝０Ｖが印加される。そして、非選択セル５３が属するワード線４３に対して、高ゲート電圧Ｖ（Ｈｉｇｈ）〜５Ｖが印加される。このとき、非選択セル５３は微弱な書き込み状態にあるため、非選択セル５３のフローティングゲートに電子がトラップされ、蓄積される。すなわち、選択セル５２が格納する二値データが繰り返し読み出されると、非選択セル５３の閾値電圧がシフトして、非選択セル５３が格納している二値データが、“１”から“０”に意図せず書き換えられる可能性がある。
【０００７】
もっとも、非選択セル５３が格納している二値データが意図せず書き換えられたとしても、データが新たに書き込まれる前に一括して消去される際に、非選択セル５３の機能を回復させることができる。しかし、書き込みは発生せず、連続的な読み出しが発生する場合には、非選択セル５３の機能を回復させることができなくなる。
【０００８】
以上に説明した“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避する手段を提供する文献として、以下の特許文献が挙げられる。
【０００９】
【特許文献１】米国特許出願公開第２００５／０２１０１８４号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述の特許文献は、メモリセル内部の制御方法により、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避する手段を提供するものである。しかし、ここで開示されている方法は、特定のセル構造を有するメモリに対して適用可能な方法であり、他のセル構造に適用可能なものではない。つまり、メモリのセル構造に依存することなく、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避できる方策ではない。
【００１１】
そこで、本発明は前記問題点に鑑み、メモリのセル構造に制約を受けることなく、様々なタイプの不揮発性メモリにおいても、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象の発生する可能性のあるメモリから正しいデータを読み出すための技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、請求項１記載の発明は、第１のエラー訂正コードあるいは第１のエラー訂正コードより訂正能力の高い第２のエラー訂正コードが付加されたデータが格納される再書き込み可能な不揮発性半導体メモリと、前記不揮発性半導体メモリに対するアクセスを制御するメモリコントローラと、を備え、前記メモリコントローラは、第１のエラー訂正コードおよび第２のエラー訂正コードを利用した誤り訂正処理を実行することが可能であり、前記メモリコントローラは、前記不揮発性半導体メモリから読み出したデータに対して、第１のエラー訂正コードあるいは第２のエラー訂正コードを利用して誤り訂正処理を実行する手段、を備えることを特徴とする。
【００１３】
請求項２記載の発明は、データが格納される再書き込み可能な不揮発性半導体メモリと、前記不揮発性半導体メモリに格納されたデータを訂正するための第１のエラー訂正コードあるいは第１のエラー訂正コードより訂正能力の高い第２のエラー訂正コードが格納される訂正コード記憶手段と、前記不揮発性半導体メモリに対するアクセスを制御するメモリコントローラと、を備え、前記メモリコントローラは、第１のエラー訂正コードおよび第２のエラー訂正コードを利用した誤り訂正処理を実行することが可能であり、前記メモリコントローラは、前記不揮発性半導体メモリから読み出したデータに対して、第１のエラー訂正コードあるいは第２のエラー訂正コードを利用して誤り訂正処理を実行する手段、を備えることを特徴とする。
【００１４】
請求項３記載の発明は、請求項１に記載の半導体メモリシステムにおいて、前記メモリコントローラは、さらに、データに対して第１のエラー訂正コードを利用して誤り訂正を行った後、読み出しデータに係る第２のエラー訂正コードを生成し、前記不揮発性半導体メモリに、生成した第２のエラー訂正コードを格納するエラー訂正コード格納手段、を備えることを特徴とする。
【００１５】
請求項４記載の発明は、請求項２に記載の半導体メモリシステムにおいて、前記メモリコントローラは、さらに、データに対して第１のエラー訂正コードを利用して誤り訂正を行った後、読み出しデータに係る第２のエラー訂正コードを生成し、前記訂正コード記憶手段に、生成した第２のエラー訂正コードを格納するエラー訂正コード格納手段、を備えることを特徴とする。
【００１６】
請求項５記載の発明は、請求項３または請求項４に記載の半導体メモリシステムにおいて、前記訂正コード格納手段は、読み出しデータに関してエラーが発生したとき、エラービットの数が所定の閾値を超えている場合に、第２のエラー訂正コードを格納することを特徴とする。
【００１７】
請求項６記載の発明は、請求項３または請求項４に記載の半導体メモリシステムにおいて、前記訂正コード格納手段は、読み出しデータに関してエラーが発生したとき、エラービットの数に関わらず、第２のエラー訂正コードを格納することを特徴とする。
【００１８】
請求項７記載の発明は、請求項１に記載の半導体メモリシステムにおいて、前記メモリコントローラは、さらに、前記不揮発性半導体メモリからからデータを読み出したとき、その領域の読み出し回数が、所定の回数を超えていた場合は、読み出しデータに係る第２のエラー訂正コードを生成し、前記不揮発性半導体メモリに、生成した第２のエラー訂正コードを格納するエラー訂正コード格納手段、を備えることを特徴とする。
【００１９】
請求項８記載の発明は、請求項２に記載の半導体メモリシステムにおいて、前記メモリコントローラは、さらに、前記不揮発性半導体メモリからからデータを読み出したとき、その領域の読み出し回数が、所定の回数を超えていた場合は、読み出しデータに係る第２のエラー訂正コードを生成し、前記訂正コード記憶手段に、生成した第２のエラー訂正コードを格納するエラー訂正コード格納手段、を備えることを特徴とする。
【００２０】
請求項９記載の発明は、請求項１に記載の半導体メモリシステムにおいて、前記不揮発性半導体メモリには、各記憶領域のデータについて第１のエラー訂正コードを使用するのか、第２のエラー訂正コードを使用するのかを指定する指定情報が記憶されていることを特徴とする。
【００２１】
請求項１０記載の発明は、請求項２に記載の半導体メモリシステムにおいて、前記訂正コード記憶手段には、各記憶領域のデータについて第１のエラー訂正コードを使用するのか、第２のエラー訂正コードを使用するのかを指定する指定情報が記憶されていることを特徴とする。
【００２２】
請求項１１記載の発明は、請求項９または請求項１０に記載の半導体メモリシステムにおいて、前記訂正コード格納手段は、第２のエラー訂正コードを格納した後、前記指定情報についても、第２のエラー訂正コードを指定する情報に書き換えることを特徴とする。
【００２３】
請求項１２記載の発明は、第１のエラー訂正コードおよび第１のエラー訂正コードより訂正能力の高い第２のエラー訂正コードが付加されたデータが格納される再書き込み可能な前記不揮発性半導体メモリと、前記不揮発性半導体メモリに対するアクセスを制御するメモリコントローラと、を備え、前記不揮発性半導体メモリには、各記憶領域のデータについて第１のエラー訂正コードが適用されているのか、第２のエラー訂正コードが適用されているのかを指定する指定情報が記憶されており、前記メモリコントローラは、第１のエラー訂正コードおよび第２のエラー訂正コードを利用した誤り訂正処理を実行することが可能であり、前記メモリコントローラは、前記不揮発性半導体メモリから読み出したデータに対して、前記指定情報で指定されている第１のエラー訂正コードあるいは第２のエラー訂正コードを利用して誤り訂正処理を実行する手段、を備えることを特徴とする。
【００２４】
請求項１３記載の発明は、データが格納される再書き込み可能な不揮発性半導体メモリと、前記不揮発性半導体メモリに格納されたデータを訂正するための第１のエラー訂正コードおよび第１のエラー訂正コードより訂正能力の高い第２のエラー訂正コードが格納される訂正コード記憶手段と、前記不揮発性半導体メモリに対するアクセスを制御するメモリコントローラと、を備え、前記訂正コード記憶手段には、各記憶領域のデータについて第１のエラー訂正コードが適用されているのか、第２のエラー訂正コードが適用されているのかを指定する指定情報が記憶されており、前記メモリコントローラは、第１のエラー訂正コードおよび第２のエラー訂正コードを利用した誤り訂正処理を実行することが可能であり、前記メモリコントローラは、前記不揮発性半導体メモリから読み出したデータに対して、前記指定情報で指定されている第１のエラー訂正コードあるいは第２のエラー訂正コードを利用して誤り訂正処理を実行する手段、を備えることを特徴とする。
【００２５】
請求項１４記載の発明は、請求項１２または請求項１３に記載の半導体メモリシステムにおいて、さらに、読み出しデータに対して第１のエラー訂正コードを利用して誤り訂正を行った後、当該読み出しデータに関して第２のエラー訂正コードが適用されるよう前記指定情報を書き換える指定情報変更手段、を備えることを特徴とする。
【００２６】
請求項１５記載の発明は、請求項１４に記載の半導体メモリシステムにおいて、前記指定情報変更手段は、読み出しデータに関してエラーが発生した場合であって、エラービットの数が所定の閾値を超えている場合に、前記指定情報を書き換えることを特徴とする。
【００２７】
請求項１６記載の発明は、請求項１４に記載の半導体メモリシステムにおいて、前記指定情報変更手段は、読み出しデータに関してエラーが発生した場合、エラービットの数に関わらず、前記指定情報を書き換えることを特徴とする。
【００２８】
請求項１７記載の発明は、請求項１２または請求項１３に記載の半導体メモリシステムにおいて、前記メモリコントローラは、さらに、前記不揮発性半導体メモリからデータを読み出したとき、その領域の読み出し回数が、所定の回数を超えていた場合は、当該読み出しデータに関して第２のエラー訂正コードが適用されるよう前記指定情報を書き換える指定情報変更手段、を備えることを特徴とする。
【００２９】
請求項１８記載の発明は、請求項１、請求項２、請求項１２および請求項１３のいずれかに記載の半導体メモリシステムにおいて、前記不揮発性半導体メモリに記憶されるデータの中で、読み出しアクセスが多数発生すると想定されたデータに関しては、第２のエラー訂正コードが使用されることを特徴とする。
【００３０】
請求項１９記載の発明は、請求項１、請求項２、請求項１２および請求項１３のいずれかに記載の半導体メモリシステムにおいて、前記不揮発性半導体メモリの記憶領域の中で、読み出しエラーが発生すると想定された記憶領域に格納されるデータに関しては、第２のエラー訂正コードが使用されることを特徴とする。
【００３１】
請求項２０記載の発明は、請求項１、請求項２、請求項１２および請求項１３のいずれかに記載の半導体メモリシステムにおいて、前記不揮発性半導体メモリに記憶されるデータの中で、重要度の高いデータに関しては、第２のエラー訂正コードが使用されることを特徴とする。
【発明の効果】
【００３２】
本発明のメモリシステムは、再書き込み可能な不揮発性半導体メモリを備える。そして、不揮発性半導体メモリに記憶されるデータには、第１のエラー訂正コードあるいは第１のエラー訂正コードより訂正能力の高い第２のエラー訂正コードが付加されている。これにより、条件に応じて、処理能力が低いが処理負荷の低いエラー訂正と、訂正能力が高いが処理負荷が大きいエラー訂正を使い分けることが可能である。
【００３３】
また、本発明によれば、第１のエラー訂正コードによりエラー訂正を行った後、第２のエラー訂正コードを格納する。これにより、初期段階では処理負荷の小さいエラー訂正を行って高速な読み出しを行い、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生した場合には、より訂正能力の高い第２のエラー訂正コードにより、正しいデータに訂正して出力可能である。
【００３４】
また、不揮発性半導体メモリに記憶されるデータには、第１のエラー訂正コードおよび第１のエラー訂正コードより訂正能力の高い第２のエラー訂正コードが付加されている。これにより、条件に応じて、処理負荷の低いエラー訂正と、訂正能力の高いエラー訂正を使い分けることが可能である。
【発明を実施するための最良の形態】
【００３５】
｛第１の実施の形態｝
以下、図面を参照しつつ本発明の実施の形態について説明する。図１は、本実施の形態に係る情報処理システムの機能ブロック図である。この情報処理システムは、ホストシステム１とメモリモジュール（メモリシステム）２とを備えて構成される。メモリモジュール２は、メモリコントローラ３とメモリ４とを備えている。
【００３６】
本実施の形態において、メモリ４は、再書き込み可能な不揮発性半導体メモリであるＮＡＮＤフラッシュメモリを採用している。メモリコントローラ３は、メモリ４に対するデータの読み出しや書き込みを制御する。例えば、この情報処理システムは、ゲーム装置として機能する。この場合、ホストシステム１は、ゲーム装置本体を構成し、メモリモジュール２がゲームカートリッジを構成する。メモリモジュール２は、ホストシステム１に対して着脱自在なタイプであってもよいし、ホストシステム１を構成する装置に内蔵されるタイプであってもよい。
【００３７】
図に示すように、メモリコントローラ３は、インタフェース３１、アドレスデコーダ部３２、エラー訂正部３３を備えている。インタフェース３１は、ホストシステム１から出力された読み出しや書き込みのコマンドを入力する入力インタフェースとして、また、メモリ４から出力された読み出しデータをホストシステム１に対して出力する出力インタフェースとして機能する。あるいは、インタフェース３１は、ホストシステム１から出力された書き込みデータを入力する入力インタフェースとして機能する。
【００３８】
アドレスデコーダ部３２は、インタフェース３１を介して入力した読み出しコマンドや書き込みコマンドから、読み出しアドレスや書き込みアドレスを取得する。メモリ４に対して読み出しアドレスが出力されると、メモリ４からは、その読み出しアドレスに対応する記憶データが読み出されるのである。また、メモリ４に対して書き込みアドレスとデータが与えられると、メモリ４に対するデータの書き込み処理が実行される。
【００３９】
ここで、本実施の形態におけるメモリモジュール２は、書き込み可能なＮＡＮＤフラッシュメモリを採用しているが、上述したように、ゲームカートリッジなど、読み出しを主な目的とするメモリとして利用される。つまり、ホストシステム１から次々に出力される読み出しコマンドに応答して、指定された読み出しアドレスのデータを読み出す処理が繰り返し実行されるのである。ホストシステム１は、メモリ４から読み出されたデータを入力し、様々な処理を実行する。
【００４０】
このように、本実施の形態においては、メモリ４に記憶されたデータの読み出し処理が繰り返し多数行われる可能性がある。そして、このようなケースにおいて、上述したように、意図せずして記憶データが書き換わる現象、つまり、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する可能性がある。そして、本実施の形態のメモリモジュール２は、この“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生した場合でも、エラー訂正によって、正しいデータをホストシステム１に供給可能とするための機能を備えている。
【００４１】
図２は、メモリ４の記憶領域を示す図である。メモリ４は、図に示すように、複数のページによって管理されている。本実施の形態において、メモリ４の各ページは、ＮＡＮＤフラッシュメモリにおける読み出しおよび書き込み単位に対応している。つまり、メモリ４は、ページ単位でデータの読み出しおよび書き込みを可能としている。これに対して、メモリ４に対しては、複数のページからなるブロック単位で消去が可能となっている。
【００４２】
そして、図に示すように、メモリ４の各ページは、実体的なデータが格納されるデータ領域４１と、実体的なデータに付随した情報が格納される冗長領域４２とを備えて構成されている。データ領域４１には、たとえば、ゲームプログラムが格納される。
【００４３】
図３および図４は、冗長領域４２に格納されている情報の一部を示す図である。冗長領域４２には、エラー訂正コード（ＥＣＣ：Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）に関する情報が記録されている。本実施の形態において、各ページに記憶されるデータには、第１ＥＣＣ５１あるいは第２ＥＣＣ５２のいずれかのエラー訂正コードが付加されるのである。メモリモジュール２が供給される初期段階においては、各ページに記憶されるデータには、第１ＥＣＣ５１が付加されている。そして、後で説明する条件、処理によって、第１ＥＣＣ５１が第２ＥＣＣ５２に書き換えられるのである。
【００４４】
第２ＥＣＣ５２は、第１ＥＣＣ５１よりも誤り訂正能力の高い符号である。言い換えると、第２ＥＣＣ５２を利用するエラー訂正アルゴリズム（第２エラー訂正アルゴリズムとする。）は、第１ＥＣＣ５１を利用するエラー訂正アルゴリズム（第１エラー訂正アルゴリズムとする。）よりも誤り訂正能力の高いアルゴリズムである。たとえば、第１ＥＣＣ５１を利用するエラー訂正アルゴリズムは、４ビットまでのエラーを検出可能であり、且つ、２ビットまでのエラーを訂正可能なエラー訂正アルゴリズムである。これに対して、第２ＥＣＣ５２を利用するエラー訂正アルゴリズムは、たとえば、８ビットまでのエラーを検出可能であり、且つ、６ビットまでのエラーを訂正可能なアルゴリズムである。このため、一般には、第２ＥＣＣ５２のビット長は、第１ＥＣＣ５１のビット長より大きい。また、第１エラー訂正アルゴリズムは、第２エラー訂正アルゴリズムと比べて処理負荷の小さいアルゴリズムである。
【００４５】
ＥＣＣ指定情報５０は、冗長領域４２に格納されているエラー訂正コードの種別を指定する情報である。つまり、冗長領域４２に、第１ＥＣＣ５１が格納されているのか、あるいは、第２ＥＣＣ５２が格納されているのかを指定する情報である。図３は、データ領域４１に格納されたデータに対して第１ＥＣＣ５１が付加されている場合の冗長領域４２を示している。この場合、ＥＣＣ指定情報５０には、冗長領域４２に第１ＥＣＣ５１が格納されていることを示す情報が記録されている。図４は、データ領域４１に格納されたデータに対して第２ＥＣＣ５２が付加されている場合の冗長領域４２を示している。この場合、ＥＣＣ指定情報５０には、冗長領域４２に第２ＥＣＣ５２が格納されていることを示す情報が記録されている。
【００４６】
なお、本実施の形態においては、エラー訂正コードおよびＥＣＣ指定情報５０が、冗長領域４２に格納されているが、これらのデータが、データ領域４１内に格納されていてもよい。あるいは、エラー訂正コードおよびＥＣＣ指定情報５０が、メモリ４以外の記憶手段に格納されていてもよい。
【００４７】
エラー訂正部３３は、各ページに格納されているデータを読み出し、誤り検出を行う。そして、データエラーを検出した場合には、誤り訂正を行う。具体的には、エラー訂正部３３は、ＥＣＣ指定情報５０において、第１ＥＣＣ５１が指定されている場合には、冗長領域４２から第１ＥＣＣ５１を読み出し、第１エラー訂正アルゴリズムを利用して、データの誤り検出を行う。そして、データエラーを検出した場合には、第１エラー訂正アルゴリズムを利用して、データの誤り訂正を行うのである。また、エラー訂正部３３は、ＥＣＣ指定情報５０において、第２ＥＣＣ５２が指定されている場合には、冗長領域４２から第２ＥＣＣ５２を読み出し、第２エラー訂正アルゴリズムを利用して、データの誤り検出を行う。そして、データエラーを検出した場合には、第２エラー訂正アルゴリズムを利用して、データの誤り訂正を行うのである。そして、第１あるいは第２のエラー訂正アルゴリズムによって訂正されたデータは、インタフェース３１を介してホストシステム１に出力されるのである。
【００４８】
以上の構成に基づいて実行される本実施の形態における誤り訂正処理の内容について、図５のフローチャートを参照しながら説明する。
【００４９】
まず、メモリコントローラ３が、メモリ４の指定したページのデータを読み出す（ステップＳ１１）。このとき、データ領域４１に格納されたデータと合わせて、冗長領域４２に格納されているＥＣＣ指定情報５０やエラー訂正コード（第１ＥＣＣ５１あるいは第２ＥＣＣ５２）も読み出される。
【００５０】
誤り訂正部３３は、ＥＣＣ指定情報５０を参照する（ステップＳ１２）。そして、ＥＣＣ指定情報５０において、第１ＥＣＣ５１が指定されている場合には、第１エラー訂正アルゴリズムに従い、読み出した第１ＥＣＣ５１を用いて、読み出しデータのエラーを検出し、エラーを検出した場合には、エラー訂正を行う（ステップＳ１３）。そして、エラー訂正後のデータをホストシステム１に出力する。なお、第１エラー訂正アルゴリズムによって、エラーを検出しなかった場合には、そのまま読み出しデータをホストシステム１に出力するが、その処理についてはフローチャートにおいて省略している。
【００５１】
次に、エラー訂正部３３は、エラービット数が閾値を超えているかどうかを判定する（ステップＳ１４）。エラー訂正部３３は、図示せぬ記憶部に、エラービット数の閾値データを格納している。たとえば、第１エラー訂正アルゴリズムが、２ビットまでのエラーを訂正可能である場合、閾値を１ビット等と設定する例が考えられる。
【００５２】
そして、検出したエラービット数が閾値を超えている場合（たとえば、閾値を１ビットと設定している場合であって、エラービット数が２ビットである場合など）には、エラー訂正部３３は、第２エラー訂正アルゴリズムを用いて、訂正したデータに対する第２ＥＣＣ５２を生成する（ステップＳ１５）。次に、生成した第２ＥＣＣ５２を、読み出したデータの冗長領域４２に記録する（ステップＳ１６）。このとき、既に格納されていた第１ＥＣＣ５１は消去されて、新たに生成した第２ＥＣＣ５２が格納される。さらに、エラー訂正部３３は、ＥＣＣ指定情報５０の書き換えを行う（ステップＳ１７）。つまり、ＥＣＣ指定情報５０で指定されるＥＣＣ種別が第２ＥＣＣ５２となるように、当該情報を更新するのである。このようにして、図３で示す状態の冗長領域４２が、図４で示す状態の冗長領域４２に書き換えられるのである。
【００５３】
なお、本実施の形態においては、第１ＥＣＣ５１を第２ＥＣＣ５２に置き換える場合を説明したが、第１ＥＣＣ５１は、そのまま格納しておき、第２ＥＣＣ５２を冗長領域４２内の別の領域（エラー訂正コードがデータ領域４１や別の記憶手段に格納されている場合にあっては、それら記憶手段内の別の領域）に格納するようにしてもよい。そして、この場合であって、第２ＥＣＣ５２が指定されるようＥＣＣ指定情報５０の書き換えを行うことにより、どちらのエラー訂正コードが適用されるかが特定されるのである。
【００５４】
また、ステップＳ１４において、エラービット数が閾値を超えていないと判定された場合には、そのまま処理を終了する。つまり、読み出しデータに対するエラー訂正アルゴリズムは、そのまま第１エラー訂正アルゴリズムが利用されるのである。
【００５５】
一方、ステップＳ１２において、第２ＥＣＣ５２が指定されていると判定された場合、第２エラー訂正アルゴリズムに従い、読み出した第２ＥＣＣ５２を用いて、読み出しデータのエラーを検出し、エラーを検出した場合には、エラー訂正を行う（ステップＳ１８）。そして、エラー訂正後のデータをホストシステム１に出力する。なお、第２エラー訂正アルゴリズムによって、エラーを検出しなかった場合には、そのまま読み出しデータをホストシステム１に出力するが、その処理についてはフローチャートにおいて省略している。
【００５６】
このように、本実施の形態によれば、メモリ４の冗長領域４２には、第１ＥＣＣ５１と第２ＥＣＣ５２のいずれかが格納されている。そして、初期段階においては、各ページのデータに対して第１ＥＣＣ５１が格納されている。そして、検出したエラービット数が所定の閾値を超えていた場合には、第１ＥＣＣ５１よりもエラー訂正能力の高い第２ＥＣＣを生成し、第１ＥＣＣ５１に代えて第２ＥＣＣ５２を冗長領域４２に格納するのである。
【００５７】
これにより、初期段階は、処理負荷の小さい第１エラー訂正アルゴリズムを利用し、エラーが所定の閾値を超えた時点から、エラー訂正能力の高い第２エラー訂正アルゴリズムを利用することが可能である。したがって、初期段階においては、処理負荷の小さいエラー訂正により高速な読み出しを行い、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生し、読み出しデータにエラーが発生した場合にも、よりエラー訂正能力の高いエラー訂正アルゴリズムを利用し、正しく訂正されたデータをホストシステムに供給可能である。
【００５８】
なお、本実施の形態においては、２種類の訂正能力の異なるエラー訂正アルゴリズムを利用することとしたが、３種類以上の訂正能力の異なるエラー訂正アルゴリズムを利用するようにしてもよい。そして、エラービット数と閾値とを比較し、閾値を超えた時点で、次々に、より高い訂正能力のエラー訂正アルゴリズムに切り替えていくようにすることが可能である。
【００５９】
｛第２の実施の形態｝
次に、本発明の第２の実施の形態について説明する。図６は、第２の実施の形態に係るエラー訂正処理のフローチャートである。なお、第２の実施の形態における情報処理システムの構成は、図１で示したものと同様である。また、冗長領域４２に格納される情報も、図３および図４で示したものと同様である。
【００６０】
ステップＳ２１〜ステップＳ２３は、第１の実施の形態におけるステップＳ１１〜ステップＳ１３と同様である。つまり、読み出したデータについて、エラーが検出された場合には、第１エラー訂正アルゴリズムを用いてエラー訂正処理を行う。第１エラー訂正アルゴリズムによって、エラーを検出しなかった場合には、そのまま読み出しデータをホストシステム１に出力するが、その処理についてはフローチャートにおいて省略している。
【００６１】
第１の実施の形態においては、ステップＳ１４において、エラービット数と閾値との比較を行った。これに対して、第２の実施の形態においては、閾値との比較を行うことなく、第２エラー訂正アルゴリズムへの移行処理を行う。つまり、第１エラー訂正アルゴリズムが設定されている状態で、１ビットでもエラーが発生した場合には、第２エラー訂正アルゴリズムへの移行を行うのである。
【００６２】
ステップＳ２４〜ステップＳ２６は、第１の実施の形態におけるステップＳ１５〜ステップＳ１７と同様である。第２エラー訂正アルゴリズムに基づいて第２ＥＣＣ５２を生成し、冗長領域４２内に、第１ＥＣＣ５１に代えて第２ＥＣＣ５２を格納するのである。また、ＥＣＣ指定情報５０によって第２ＥＣＣ５２が指定されるように、当該情報を書き換えるのである。
【００６３】
第１の実施の形態と同様、第１ＥＣＣ５１は、そのまま格納しておき、第２ＥＣＣ５２を冗長領域４２内の別の領域（エラー訂正コードがデータ領域４１や別の記憶手段に格納されている場合にあっては、それら記憶手段内の別の領域）に格納するようにしてもよい。そして、この場合であって、第２ＥＣＣ５２が指定されるようＥＣＣ指定情報５０の書き換えを行うことにより、どちらのエラー訂正コードが適用されるかが特定されるのである。
【００６４】
第２エラー訂正アルゴリズムに移行した後のステップＳ２７も、第１の実施の形態におけるステップＳ１８と同様である。つまり、エラーが発生した場合には、エラー訂正能力の高い第２エラー訂正アルゴリズムを利用してエラー訂正が行われる。第２エラー訂正アルゴリズムによって、エラーを検出しなかった場合には、そのまま読み出しデータをホストシステム１に出力するが、その処理についてはフローチャートにおいて省略している。
【００６５】
これにより、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生し、読み出しデータにエラーが発生した場合にも、よりエラー訂正能力の高いエラー訂正アルゴリズムを利用し、正しく訂正されたデータをホストシステムに供給可能である。
【００６６】
なお、この実施の形態においても、エラー訂正コードおよびＥＣＣ指定情報５０が、データ領域４１内に格納されていてもよい。あるいは、エラー訂正コードおよびＥＣＣ指定情報５０が、メモリ４以外の記憶手段に格納されていてもよい。
【００６７】
｛第３の実施の形態｝
次に、本発明の第３の実施の形態について説明する。図７は、第３の実施の形態に係るメモリ４における冗長領域４２を示す図である。図８は、第３の実施の形態に係るエラー訂正処理のフローチャートである。なお、情報処理システムの構成は、図１で示したものと同様である。
【００６８】
図７に示すように、冗長領域４２には、第１ＥＣＣ５１と第２ＥＣＣ５２の両方が格納されている。つまり、初期段階から、各ページのデータには、第１ＥＣＣ５１と第２ＥＣＣ５２とが用意され、いずれのＥＣＣについても、冗長領域４２に格納するようにしているのである。ただし、ＥＣＣ指定情報５０において、初期段階では、第１ＥＣＣ５１が指定されている。そして、後で説明する条件、処理によって、ＥＣＣ指定情報５０が書き換えられ、ＥＣＣ指定情報５０により第２ＥＣＣ５２が指定されることになる。
【００６９】
したがって、エラー訂正部３３は、ＥＣＣ指定情報５０を参照し、第１ＥＣＣ５１が指定されている場合には、冗長領域４２から読み出した第１ＥＣＣ５１を利用してエラー訂正を行い、ＥＣＣ指定情報５０により第２ＥＣＣ５２が指定されている場合には、冗長領域４２から読み出した第２ＥＣＣ５２を利用してエラー訂正を行うのである。
【００７０】
なお、この実施の形態においても、エラー訂正コードおよびＥＣＣ指定情報５０が、冗長領域４２に格納されているが、これらのデータが、データ領域４１内に格納されていてもよい。あるいは、エラー訂正コードおよびＥＣＣ指定情報５０が、メモリ４以外の記憶手段に格納されていてもよい。
【００７１】
図８を参照する。まず、メモリコントローラ３が、メモリ４の指定したページのデータを読み出す（ステップＳ３１）。このとき、データ領域４１に格納されたデータと合わせて、冗長領域４２に格納されているＥＣＣ指定情報５０やエラー訂正コード（第１ＥＣＣ５１および第２ＥＣＣ５２）も読み出される。なお、ＥＣＣ指定情報５０に指定された情報に基づいて、第１ＥＣＣ５１および第２ＥＣＣ５２のうち、必要な情報のみを読み出すようにしてもよい。
【００７２】
次に、エラー訂正部３３は、ＥＣＣ指定情報５０を参照する（ステップＳ３２）。そして、ＥＣＣ指定情報５０において、第１ＥＣＣ５１が指定されている場合には、第１エラー訂正アルゴリズムに従い、読み出した第１ＥＣＣ５１を用いて、読み出しデータのエラーを検出し、エラーを検出した場合には、エラー訂正を行う（ステップＳ３３）。そして、エラー訂正後のデータをホストシステム１に出力する。なお、第１エラー訂正アルゴリズムによって、エラーを検出しなかった場合には、そのまま読み出しデータをホストシステム１に出力するが、その処理についてはフローチャートにおいて省略している。
【００７３】
次に、エラー訂正部３３は、エラービット数が閾値を超えているかどうかを判定する（ステップＳ３４）。エラー訂正部３３は、図示せぬ記憶部に、エラービット数の閾値データを格納している。第１の実施の形態で例示した場合と同様、たとえば、第１エラー訂正アルゴリズムが、２ビットまでのエラーを訂正可能である場合、閾値を１ビットと設定する例が考えられる。
【００７４】
そして、検出したエラービット数が閾値を超えている場合には、エラー訂正部３３は、ＥＣＣ指定情報５０の書き換えを行う（ステップＳ３５）。つまり、ＥＣＣ指定情報５０によって第２ＥＣＣ５２が指定されるように、当該情報を更新するのである。
【００７５】
また、ステップＳ３４において、エラービット数が閾値を超えていないと判定された場合には、そのまま処理を終了する。つまり、読み出しデータに対するエラー訂正アルゴリズムは、そのまま第１エラー訂正アルゴリズムが利用されるのである。
【００７６】
一方、ステップＳ３２において、第２ＥＣＣ５２が指定されていると判定された場合、第２エラー訂正アルゴリズムに従い、読み出した第２ＥＣＣ５２を用いて、読み出しデータのエラーを検出し、エラーを検出した場合には、エラー訂正を行う（ステップＳ３６）。そして、エラー訂正後のデータをホストシステム１に出力する。なお、第２エラー訂正アルゴリズムによって、エラーを検出しなかった場合には、そのまま読み出しデータをホストシステム１に出力するが、その処理についてはフローチャートにおいて省略している。
【００７７】
このように、本実施の形態によれば、メモリ４の冗長領域４２には、第１ＥＣＣ５１および第２ＥＣＣ５２の両方の情報が格納されている。そして、初期段階においては、各ページのデータに対して第１ＥＣＣ５１が利用されるように、ＥＣＣ指定情報５０が設定されている。そして、検出したエラービット数が所定の閾値を超えていた場合には、第１ＥＣＣ５１よりもエラー訂正能力の高い第２ＥＣＣ５２を利用するように、ＥＣＣ指定情報５０を書き換えるのである。
【００７８】
これにより、初期段階は、処理負荷の小さい第１エラー訂正アルゴリズムを利用し、エラーが所定の閾値を超えた時点から、エラー訂正能力の高い第２エラー訂正アルゴリズムを利用することが可能である。したがって、初期段階においては、処理負荷の小さいエラー訂正により高速な読み出しを行い、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生し、読み出しデータにエラーが発生した場合にも、よりエラー訂正能力の高いエラー訂正アルゴリズムを利用し、正しく訂正されたデータをホストシステム１に供給可能である。また、この実施の形態においては、あらかじめ、第１ＥＣＣ５１と第２ＥＣＣ５２が生成されてメモリ４内に格納されているので、第２エラー訂正アルゴリズムに移行する場合にも、第２ＥＣＣ５２を生成する処理を行う必要がない。
【００７９】
なお、本実施の形態においては、２種類の訂正能力の異なるエラー訂正アルゴリズムを利用することとしたが、３種類以上の訂正能力の異なるエラー訂正アルゴリズムを利用するようにしてもよい。そして、エラービット数と閾値とを比較し、閾値を超えた時点で、次々に、より高い訂正能力のエラー訂正アルゴリズムに切り替えていくようにすることができる。
【００８０】
｛第４の実施の形態｝
次に、本発明の第４の実施の形態について説明する。図９は、第４の実施の形態に係るエラー訂正処理のフローチャートである。なお、第４の実施の形態における情報処理システムの構成は、図１で示したものと同様である。また、冗長領域４２に格納される情報については、第３の実施の形態における図７で示したものと同様である。
【００８１】
ステップＳ４１〜ステップＳ４３は、第３の実施の形態におけるステップＳ３１〜ステップＳ３３と同様である。つまり、読み出したデータについて、エラーが検出された場合には、第１エラー訂正アルゴリズムを用いてエラー訂正処理を行う。第１エラー訂正アルゴリズムによって、エラーを検出しなかった場合には、そのまま読み出しデータをホストシステム１に出力するが、その処理についてはフローチャートにおいて省略している。
【００８２】
第３の実施の形態においては、ステップＳ３４において、エラービット数と閾値との比較を行った。これに対して、第４の実施の形態においては、閾値との比較を行うことなく、第２エラー訂正アルゴリズムへの移行処理を行う。つまり、第１エラー訂正アルゴリズムが設定されている状態で、１ビットでもエラーが発生した場合には、第２エラー訂正アルゴリズムへの移行を行うのである。
【００８３】
ステップＳ４４は、第３の実施の形態におけるステップＳ３５と同様である。エラー訂正部３３は、ＥＣＣ指定情報５０が第２ＥＣＣ５２を指定するよう情報を書き換えるのである。
【００８４】
第２エラー訂正アルゴリズムに移行した後のステップＳ４５も、第３の実施の形態におけるステップＳ３６と同様である。つまり、エラーが発生した場合には、エラー訂正能力の高い第２エラー訂正アルゴリズムを利用してエラー訂正が行われる。第２エラー訂正アルゴリズムによって、エラーを検出しなかった場合には、そのまま読み出しデータをホストシステム１に出力するが、その処理についてはフローチャートにおいて省略している。
【００８５】
これにより、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生し、読み出しデータにエラーが発生した場合にも、よりエラー訂正能力の高いエラー訂正アルゴリズムを利用し、正しく訂正されたデータをホストシステム１に供給可能である。
【００８６】
なお、この実施の形態においても、エラー訂正コードおよびＥＣＣ指定情報５０が、データ領域４１内に格納されていてもよい。あるいは、エラー訂正コードおよびＥＣＣ指定情報５０が、メモリ４以外の記憶手段に格納されていてもよい。
【００８７】
｛第５の実施の形態｝
第１〜第４の実施の形態においては、初期段階においては、第１エラー訂正アルゴリズムを利用し、エラーが発生した後に、より訂正能力の高い第２エラー訂正アルゴリズムを利用しようというものであった。
【００８８】
これに対して、第５の実施の形態においては、固定的に、特定のデータあるいは特定の領域について、訂正能力の高い第２エラー訂正アルゴリズムを利用するものである。
【００８９】
図１０は、第５の実施の形態に係るメモリ４を示す図である。冗長領域４２は、第１の実施の形態における図３および図４と同様、第１ＥＣＣ５１あるいは第２ＥＣＣ５２が格納されることになる。図１０においては、冗長領域４２にいずれのＥＣＣが格納されているかを示している。
【００９０】
この図の例では、ページ０、ページ１、ページ２などの領域については、冗長領域４２に第１ＥＣＣ５１が格納されている。そして、ページ５０およびページ５１については、冗長領域４２に、第２ＥＣＣ５２が格納されている。そして、ページ０、ページ１、ページ２などについては、初期段階から固定的に、第１エラー訂正アルゴリズムが利用され、ページ５０、ページ５１については、初期段階から固定的に、第２エラー訂正アルゴリズムが利用されるのである。
【００９１】
たとえば、プログラムやデータの特性上、予め繰り返し読み出される可能性が高いと想定されるデータに関しては、第２ＥＣＣ５２を付加するようにすれば、効果的である。あるいは、メモリ４の物理的構造上、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生し易いと想定されるページ領域については、第２ＥＣＣ５２を冗長領域４２に格納すれば効果的である。
【００９２】
また、重要度の高いデータに関しては、第２ＥＣＣを付加するようにすれば、効果的である。重要度の高いデータとは、エラーが発生した場合に、アプリケーションなどの実行を妨げるデータである。あるいは、重要度の高いデータとは、エラーが発生した場合に、アプリケーションの実行に大きな影響を及ぼすデータである。たとえば、プログラム本体などが該当する。たとえば、アプリケーションプログラムによっては、画像データや音声データにエラーが発生しても、アプリケーションの実行には大きな影響を与えないが、プログラム本体にエラーが発生すると、実行が不可能になる。このような場合に、プログラム本体を重要度の高いデータとして扱うのである。
【００９３】
このように、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生しやすい領域、あるいは重要度の高いデータが格納される領域を特定し、当該領域のみについて、エラー訂正能力の高いＥＣＣを利用することで、冗長符号の無駄をなくすことができる。また、その他の領域については、処理負荷の小さいエラー訂正アルゴリズムを固定的に利用するので、高速な読み出しを行うことが可能である。
【００９４】
あるいは、冗長領域４２に、第１ＥＣＣ５１と第２ＥＣＣ５２の両方が格納されていてもよい。この場合にも、たとえば、プログラムやデータの特性上、予め繰り返し読み出される可能性が高いと想定されるデータに関しては、ＥＣＣ指定情報５０により、第２ＥＣＣ５２が指定されるように設定するのである。あるいは、メモリ４の物理的構造上、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生し易いと想定されるページ領域については、ＥＣＣ指定情報５０により、第２ＥＣＣ５２が指定されるように設定するのである。同様に、重要度の高いデータに関しては、ＥＣＣ指定情報５０により、第２ＥＣＣ５２が指定されるように設定するのである。
【００９５】
この実施の形態においても、エラー訂正コードおよびＥＣＣ指定情報５０が、冗長領域４２に格納されているが、これらのデータが、データ領域４１内に格納されていてもよい。あるいは、エラー訂正コードおよびＥＣＣ指定情報５０が、メモリ４以外の記憶手段に格納されていてもよい。
【００９６】
また、上記の各実施の形態で説明したエラー訂正方法を複合的に利用するようにしてもよい。たとえば、第１の実施の形態と第５の実施の形態を複合的に利用する方法が考えられる。具体的には、特定の領域については、初期段階から第２ＥＣＣ５２を格納する第５の実施の形態を適用させ、その他の領域については、エラーの発生に応じて第１ＥＣＣ５１から第２ＥＣＣ５２への書き換えを行う第１の実施の形態を適用させるのである。
【００９７】
｛第６の実施の形態｝
第１の実施の形態および第２の実施の形態においては、エラービット数が所定の閾値を超えたとき、あるいはエラーが発生したときに、第２ＥＣＣ５２を生成して、冗長領域４２等に格納するようにした。この他の実施の形態として、読み出し回数に応じて第２ＥＣＣ５２を生成するようにしてもよい。
【００９８】
つまり、メモリコントローラ３は、メモリ４の各記憶領域（例えばページ単位）の読み出し回数をカウントするのである。そして、読み出し回数が所定の閾値を超えた領域に格納されているデータについては、第２ＥＣＣ５２を生成して、冗長領域４２等に格納するのである。そして、ＥＣＣ指定情報５０を書き換えて、第２ＥＣＣ５２が適用されるようにするのである。
【００９９】
｛第７の実施の形態｝
第３の実施の形態および第４の実施の形態においては、エラービット数が所定の閾値を超えたとき、あるいはエラーが発生したときに、第２ＥＣＣ５２を指定するよう、ＥＣＣ指定情報５０を書き換えるようにした。この他の実施の形態として、読み出し回数に応じてＥＣＣ指定情報５０を書き換えるようにしてもよい。
【０１００】
つまり、メモリコントローラ３は、メモリ４の各記憶領域（例えばページ単位）の読み出し回数をカウントするのである。そして、読み出し回数が所定の閾値を超えた領域に格納されているデータについては、第２ＥＣＣ５２を指定するようＥＣＣ指定情報５０を書き換えるのである。
【０１０１】
｛変形例｝
上記第１、第２、第６の実施の形態においては、第２ＥＣＣ５２を生成して格納したときに、ＥＣＣ指定情報５０を書き換えるようにした。しかし、第２ＥＣＣ５２を生成した直後に、ＥＣＣ指定情報５０を書き換える以外に、別のタイミングで書き換えるようにしてもよい。
【０１０２】
たとえば、アプリケーションの実行中にはＥＣＣ指定情報５０を書き換えることは行わず、電源ＯＦＦ時のアプリケーションに関するバックアップ中に書き換えを行う。あるいは、一定周期、アイドル中（アプリケーションによるメモリアクセスがないタイミング）、スリープ中、充電中、電源ＯＮ時などに書き換えを行うようにしてもよい。
【０１０３】
ただし、電源ＯＮ時や、充電中にＥＣＣ指定情報５０を書き換える場合は、一度電源がＯＦＦされるので、書き換えるＥＣＣ指定情報５０に関する情報を、一旦、別の不揮発性メモリに記憶しておくようにすればよい。
【０１０４】
また、上記第３、第４、第７の実施の形態においては、エラービット数が閾値を超えているとき、エラーが発生したとき、または、読み出し回数が所定の閾値を超えているときに、ＥＣＣ指定情報５０を書き換えるようにした。しかし、これら条件に適合すると判定された直後ではなく、別のタイミングでＥＣＣ指定情報５０を書き換えるようにしてもよい。
【０１０５】
たとえば、電源ＯＦＦ時のアプリケーションに関するバックアップ中、一定周期、アイドル中、スリープ中、充電中、電源ＯＮ時などに書き換えを行うようにしてもよい。
【０１０６】
ただし、電源ＯＮ時や、充電中にＥＣＣ指定情報５０を書き換える場合は、一度電源がＯＦＦされるので、書き換えるＥＣＣ指定情報５０に関する情報を、一旦、別の不揮発性メモリに記憶しておくようにすればよい。
【図面の簡単な説明】
【０１０７】
【図１】実施の形態に係る情報処理システムのブロック図である。
【図２】メモリの記憶領域を示す図である。
【図３】冗長領域を示す図である。
【図４】冗長領域を示す図である。
【図５】第１の実施の形態に係るエラー訂正処理のフローチャートである。
【図６】第２の実施の形態に係るエラー訂正処理のフローチャートである。
【図７】冗長領域を示す図である。
【図８】第３の実施の形態に係るエラー訂正処理のフローチャートである。
【図９】第４の実施の形態に係るエラー訂正処理のフローチャートである。
【図１０】第５の実施の形態に係るメモリに格納されたＥＣＣを示す図である。
【図１１】“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象の発生動作を示す図である。
【符号の説明】
【０１０８】
１    ホストシステム
２    メモリモジュール
３    メモリコントローラ
４    メモリ
４１  データ領域
４２  冗長領域
５０  ＥＣＣ指定情報
５１  第１ＥＣＣ
５２  第２ＥＣＣ
【図１】
2008192054.tif 000003
【図２】
2008192054.tif 000004
【図３】
2008192054.tif 000005
【図４】
2008192054.tif 000006
【図５】
2008192054.tif 000007
【図６】
2008192054.tif 000008
【図７】
2008192054.tif 000009
【図８】
2008192054.tif 000010
【図９】
2008192054.tif 000011
【図１０】
2008192054.tif 000012
【図１１】
2008192054.tif 000013