(57)【特許請求の範囲】
【請求項１】
半導体メモリに対するアクセスを制御するメモリコントローラであって、
前記半導体メモリに格納されたデータに対して訂正能力の異なる複数のエラー訂正モードでエラー訂正処理を実行可能なエラー訂正部と、
前記半導体メモリに情報データを格納するとき、情報データに対して適用すべきエラー訂正モードを設定する制御部と、
前記半導体メモリに対する情報データの読み出しおよび書き込みを行うインタフェースと、
を備え、
前記エラー訂正部は、
前記制御部において設定されたエラー訂正モードに従い、固定長の情報データに対するシンドロームを算出し、算出したシンドロームに対して前記設定されたエラー訂正モードに応じた符号長のダミーデータを付加することにより、複数のエラー訂正モードに共通の固定長のシンドロームを生成するシンドローム算出部と、
前記固定長の情報データと、前記固定長のシンドロームとを含む固定長の符号データを生成する符号データ生成部と、
を含み、
前記インタフェースは、符号データを前記半導体メモリへ書き込み、
前記エラー訂正部は、
前記インタフェースによって符号データが読み出されたとき、符号データに含まれるシンドロームを利用して符号データの訂正処理を実行する訂正処理部、
を含むメモリコントローラ。
【請求項２】
請求項１に記載のメモリコントローラであって、
前記エラー訂正部は、
符号データに含まれるエラービット数を検出する検出部、
を含み、
前記制御部は、
前記検出部により検出されたエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較し、検出されたエラービット数が前記閾値を超えているとき、現在のエラー訂正モードを、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更するモード変更部、
を含み、
前記シンドローム算出部は、変更されたエラー訂正モードに従い、情報データに対するシンドロームを再度生成し、
前記インタフェースは、変更されたシンドロームを前記半導体メモリに格納するメモリコントローラ。
【請求項３】
請求項２に記載のメモリコントローラであって、
前記符号データ生成部は、情報データ、前記シンドローム算出部により再生成されたシンドロームを含む前記固定長の符号データを再度生成し、
前記インタフェースは、再計算された符号データにより、前記半導体メモリに格納されている符号データを書き換えるメモリコントローラ。
【請求項４】
請求項２に記載のメモリコントローラであって、
前記インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再生成されたシンドロームを格納するメモリコントローラ。
【請求項５】
請求項１ないし請求項４のいずれかに記載のメモリコントローラであって、
前記制御部は、前記半導体メモリに格納されているデータに対する読み出し要求が発生したとき、最初、エラー訂正モードとして、最も訂正能力の低いエラー訂正モードを設定し、前記エラー訂正部は、前記制御部より設定された最も訂正能力の低いエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を実行するメモリコントローラ。
【請求項６】
請求項５に記載のメモリコントローラであって、
前記制御部は、現在設定されているエラー訂正モードに従ったエラー訂正処理が実行された後、エラー訂正処理の正当性を判定し、正当性が否定されたとき、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更し、前記エラー訂正部は、前記制御部より変更されたエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を再度実行するメモリコントローラ。
【請求項７】
請求項６に記載のメモリコントローラであって、
前記エラー訂正部は、３段階以上のエラー訂正モードで動作可能であり、エラー訂正処理の正当性が肯定されるまで、順次、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更するメモリコントローラ。
【請求項８】
請求項６または請求項７に記載のメモリコントローラであって、
前記制御部は、
前記半導体メモリに格納する実体データからエラー検出用データを生成する生成部、
を含み、
前記シンドローム算出部は、実体データにエラー検出用データが付加された情報データに対してシンドロームを算出し、
前記制御部は、前記エラー訂正部においてエラー訂正処理が実行された後、エラー検出用データを用いて情報データに含まれるエラーの有無をチェックすることで、前記エラー訂正部におけるエラー訂正処理の正当性を判定するメモリコントローラ。
【請求項９】
請求項１または請求項２に記載のメモリコントローラであって、
前記制御部は、符号データに現在適用させているエラー訂正モードを特定する訂正モード情報を、符号データ内に格納するメモリコントローラ。
【請求項１０】
請求項９に記載のメモリコントローラであって、
前記制御部は、重複して複数の訂正モード情報を符号データ内に格納し、符号データを読み出したとき、複数の訂正モード情報から符号データに適用すべきエラー訂正モードを特定するメモリコントローラ。
【請求項１１】
請求項１または請求項２に記載のメモリコントローラであって、
前記制御部は、各ページに現在適用させているエラー訂正モードを記録した情報を保持するメモリコントローラ。
【請求項１２】
請求項１または請求項２に記載のメモリコントローラであって、
前記制御部は、符号データを書き込むことができる全てのページに共通して適用しているエラー訂正モードを記録した情報を保持し、前記エラー訂正部に前記半導体メモリの各ページに共通のエラー訂正モードを適応させるメモリコントローラ。
【請求項１３】
請求項１ないし請求項１２に記載のメモリコントローラであって、
前記符号データの固定長は、最もエラー訂正能力の高いエラー訂正モードにおけるシンドローム長を情報データに付加したときの符号長であるメモリコントローラ。
【請求項１４】
半導体メモリに対するアクセスを制御するメモリコントローラであって、
前記半導体メモリに格納されたデータに対して適用させるエラー訂正処理のモードを設定する制御部と、
外部装置から前記半導体メモリに格納された第１データに対する読み出し要求を受けたとき、前記半導体メモリから第１データを読み出す第１インタフェースと、
前記第１インタフェースにより読み出された第１データに対して、前記制御部において設定されているエラー訂正モードを用いてエラー訂正処理を実行するエラー訂正部と、
前記エラー訂正部において訂正された第１データを格納する訂正データ用バッファと、
前記エラー訂正部において訂正された第１データを解析し、前記エラー訂正部におけるエラー訂正処理の正当性を判定する判定部と、
前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記訂正データ用バッファに格納された訂正された第１データを前記外部装置に与える第２インタフェースと、
を備え、
前記制御部は、前記判定部において前記エラー訂正部における訂正処理の正当性が否定されたとき、エラー訂正モードを、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更し、
前記エラー訂正部は、第１データに対して、変更されたエラー訂正モードを用いてエラー訂正処理を再度実行し、
前記訂正データ用バッファは、変更後のエラー訂正モードで訂正された第１データを格納し、
前記判定部は、変更後のエラー訂正モードで訂正された第１データを解析し、前記エラー訂正部における訂正処理の正当性を判定するメモリコントローラ。
【請求項１５】
請求項１４に記載のメモリコントローラであって、さらに、
前記第１インタフェースにより読み出された第１データを格納する読み出しデータ用バッファ、
を備え、
前記エラー訂正部は、エラー訂正処理の再処理を行うとき、前記読み出しデータ用バッファに格納されている第１データを利用するメモリコントローラ。
【請求項１６】
請求項１４または請求項１５に記載のメモリコントローラであって、さらに、
前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記エラー訂正部において検出された第１データのエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較する比較部、
を備え、
前記エラー訂正部は、前記比較部において、第１データに発生したエラービット数が閾値を超えていると判定されたとき、前記訂正データ用バッファに格納されている訂正された第１データから、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに対応したシンドロームを生成し、
前記第１インタフェースは、変更されたシンドロームを前記半導体メモリに格納するメモリコントローラ。
【請求項１７】
請求項１６に記載のメモリコントローラであって、
複数のエラー訂正モードに対して共通の固定符号長が設定されており、第１データは、情報データ、シンドロームおよび必要に応じて付加されるダミーデータを含む前記固定符号長のデータであり、
前記エラー訂正部は、
情報データ、再計算されたシンドロームおよび必要に応じて付加されるダミーデータを含む固定符号長の符号データを生成し、
前記第１インタフェースは、生成された符号データにより、前記半導体メモリに格納されている第１データを書き換えるメモリコントローラ。
【請求項１８】
請求項１６に記載のメモリコントローラであって、
前記第１インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再計算されたシンドロームを格納するメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体メモリに格納されたデータに対するエラー訂正技術に関する。
【背景技術】
【０００２】
各種データの記憶媒体として、ＮＡＮＤフラッシュメモリ等の不揮発性半導体メモリが広く利用されている。プロセス技術の微細化等により、不揮発性半導体メモリの高集積化がますます進んでいる。
【０００３】
不揮発性半導体メモリにデータを書き込んだとき、書き込まれたデータにエラーが発生する場合がある。いわゆるプログラムディスターブと呼ばれる現象である。あるいは不揮発性半導体メモリから繰り返しデータが読み出されることにより、格納されたデータにエラーが発生する場合がある。いわゆるリードディスターブと呼ばれる現象である。したがって、ＮＡＮＤフラッシュメモリを含め、不揮発性半導体メモリを利用するためには、エラー訂正機能の装備が不可欠である。
【０００４】
エラー訂正機能を実現する回路として、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  Ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）回路が利用されている。ＥＣＣ回路は、メモリアレイに格納する情報データからシンドロームを算出する。メモリアレイには、情報データにシンドロームが付加された符号データが格納される。ＥＣＣ回路は、メモリアレイから読み出された符号データに対して、シンドロームを利用してエラー訂正処理を実行する。
【０００５】
一般的に、ＥＣＣ回路におけるエラー訂正能力の高低は、シンドローム長に比例する。エラー訂正能力を向上させると、シンドローム長も大きくなり符号化率は低下する。符号化率の低下は、結果的にメモリに対する情報データの格納効率の低下を招くことになる。したがって、エラー発生率と情報データの格納効率の両方を考慮して、エラー訂正能力を決定する必要がある。ここで符号化率とは、符号データのデータ長に対する情報データのデータ長の割合で、誤り訂正能力と密接な関係にある。
【０００６】
不揮発性半導体メモリにおいて、プロセス技術の微細化によりセルの経時的劣化が顕著になっている。不揮発性半導体メモリを使用し続けると、セルの劣化に伴いエラー発生率が上昇する。使用開始の状態で設定したエラー訂正能力は、時間の経過とともに不十分になる可能性がある。また、経時的に劣化することを想定し、使用開始時からエラー訂正能力を高く設定した場合、符号化率の低下により情報データの格納効率を不必要に低下させることになる。
【０００７】
下記特許文献１には、ビットエラー率の変化に応じて、符号化率を変更し、エラー訂正能力を可変させる技術が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２０１０−５１８５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１では、ビットエラー率の変化に応じて、符号化率を変更することで、メモリの経時的変化に対応している。しかし、符号化率を変更するため、データの管理および運用が煩雑となる。つまり、符号データのデータ長が変化するため、データ構成の再編成などが必要であり、処理が複雑となる。
【００１０】
本発明は、データ管理および運用を複雑化させることなく、経時的にエラー発生率の変化する半導体メモリの信頼性を向上させることを課題とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、請求項１記載の発明は、半導体メモリに対するアクセスを制御するメモリコントローラであって、前記半導体メモリに格納されたデータに対して訂正能力の異なる複数のエラー訂正モードでエラー訂正処理を実行可能なエラー訂正部と、前記半導体メモリに情報データを格納するとき、情報データに対して適用すべきエラー訂正モードを設定する制御部と、前記半導体メモリに対する情報データの読み出しおよび書き込みを行うインタフェースと、を備え、前記エラー訂正部は、前記制御部において設定されたエラー訂正モードに従い、固定長の情報データに対するシンドロームを算出し、算出したシンドロームに対して前記設定されたエラー訂正モードに応じた符号長のダミーデータを付加することにより、複数のエラー訂正モードに共通の固定長のシンドロームを生成するシンドローム算出部と、前記固定長の情報データと、前記固定長のシンドロームとを含む固定長の符号データを生成する符号データ生成部と、を含み、前記インタフェースは、符号データを前記半導体メモリへ書き込み、前記エラー訂正部は、前記インタフェースによって符号データが読み出されたとき、符号データに含まれるシンドロームを利用して符号データの訂正処理を実行する訂正処理部、を含む。
【００１２】
請求項２記載の発明は、請求項１に記載のメモリコントローラであって、前記エラー訂正部は、符号データに含まれるエラービット数を検出する検出部、を含み、前記制御部は、前記検出部により検出されたエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較し、検出されたエラービット数が前記閾値を超えているとき、現在のエラー訂正モードを、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更するモード変更部、を含み、前記シンドローム算出部は、変更されたエラー訂正モードに従い、情報データに対するシンドロームを再度生成し、前記インタフェースは、変更されたシンドロームを前記半導体メモリに格納する。
【００１３】
請求項３記載の発明は、請求項２に記載のメモリコントローラであって、前記符号データ生成部は、情報データ、前記シンドローム算出部により再生成されたシンドロームを含む前記固定長の符号データを再度生成し、前記インタフェースは、再計算された符号データにより、前記半導体メモリに格納されている符号データを書き換える。
【００１４】
請求項４記載の発明は、請求項２に記載のメモリコントローラであって、前記インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再生成されたシンドロームを格納する。
【００１５】
請求項５記載の発明は、請求項１ないし請求項４のいずれかに記載のメモリコントローラであって、前記制御部は、前記半導体メモリに格納されているデータに対する読み出し要求が発生したとき、最初、エラー訂正モードとして、最も訂正能力の低いエラー訂正モードを設定し、前記エラー訂正部は、前記制御部より設定された最も訂正能力の低いエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を実行する。
【００１６】
請求項６記載の発明は、請求項５に記載のメモリコントローラであって、前記制御部は、現在設定されているエラー訂正モードに従ったエラー訂正処理が実行された後、エラー訂正処理の正当性を判定し、正当性が否定されたとき、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更し、前記エラー訂正部は、前記制御部より変更されたエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を再度実行する。
【００１７】
請求項７記載の発明は、請求項６に記載のメモリコントローラであって、前記エラー訂正部は、３段階以上のエラー訂正モードで動作可能であり、エラー訂正処理の正当性が肯定されるまで、順次、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更する。
【００１８】
請求項８記載の発明は、請求項６または請求項７に記載のメモリコントローラであって、前記制御部は、前記半導体メモリに格納する実体データからエラー検出用データを生成する生成部、を含み、前記シンドローム算出部は、実体データにエラー検出用データが付加された情報データに対してシンドロームを算出し、前記制御部は、前記エラー訂正部においてエラー訂正処理が実行された後、エラー検出用データを用いて情報データに含まれるエラーの有無をチェックすることで、前記エラー訂正部におけるエラー訂正処理の正当性を判定する。
【００１９】
請求項９記載の発明は、請求項１または請求項２に記載のメモリコントローラであって、前記制御部は、符号データに現在適用させているエラー訂正モードを特定する訂正モード情報を、符号データ内に格納する。
【００２０】
請求項１０記載の発明は、請求項９に記載のメモリコントローラであって、前記制御部は、重複して複数の訂正モード情報を符号データ内に格納し、符号データを読み出したとき、複数の訂正モード情報から符号データに適用すべきエラー訂正モードを特定する。
【００２１】
請求項１１記載の発明は、請求項１または請求項２に記載のメモリコントローラであって、前記制御部は、各ページに現在適用させているエラー訂正モードを記録した情報を保持する。
【００２２】
請求項１２記載の発明は、請求項１または請求項２に記載のメモリコントローラであって、前記制御部は、符号データを書き込むことができる全てのページに共通して適用しているエラー訂正モードを記録した情報を保持し、前記エラー訂正部に前記半導体メモリの各ページに共通のエラー訂正モードを適応させる。
【００２３】
請求項１３記載の発明は、請求項１ないし請求項１２に記載のメモリコントローラであって、前記符号データの固定長は、最もエラー訂正能力の高いエラー訂正モードにおけるシンドローム長を情報データに付加したときの符号長である。
【００２４】
請求項１４記載の発明は、半導体メモリに対するアクセスを制御するメモリコントローラであって、前記半導体メモリに格納されたデータに対して適用させるエラー訂正処理のモードを設定する制御部と、外部装置から前記半導体メモリに格納された第１データに対する読み出し要求を受けたとき、前記半導体メモリから第１データを読み出す第１インタフェースと、前記第１インタフェースにより読み出された第１データに対して、前記制御部において設定されているエラー訂正モードを用いてエラー訂正処理を実行するエラー訂正部と、前記エラー訂正部において訂正された第１データを格納する訂正データ用バッファと、前記エラー訂正部において訂正された第１データを解析し、前記エラー訂正部におけるエラー訂正処理の正当性を判定する判定部と、前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記訂正データ用バッファに格納された訂正された第１データを前記外部装置に与える第２インタフェースと、を備え、前記制御部は、前記判定部において前記エラー訂正部における訂正処理の正当性が否定されたとき、エラー訂正モードを、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更し、前記エラー訂正部は、第１データに対して、変更されたエラー訂正モードを用いてエラー訂正処理を再度実行し、前記訂正データ用バッファは、変更後のエラー訂正モードで訂正された第１データを格納し、前記判定部は、変更後のエラー訂正モードで訂正された第１データを解析し、前記エラー訂正部における訂正処理の正当性を判定する。
【００２５】
請求項１５記載の発明は、請求項１４に記載のメモリコントローラであって、さらに、前記第１インタフェースにより読み出された第１データを格納する読み出しデータ用バッファ、を備え、前記エラー訂正部は、エラー訂正処理の再処理を行うとき、前記読み出しデータ用バッファに格納されている第１データを利用する。
【００２６】
請求項１６記載の発明は、請求項１４または請求項１５に記載のメモリコントローラであって、さらに、前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記エラー訂正部において検出された第１データのエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較する比較部、を備え、前記エラー訂正部は、前記比較部において、第１データに発生したエラービット数が閾値を超えていると判定されたとき、前記訂正データ用バッファに格納されている訂正された第１データから、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに対応したシンドロームを生成し、前記第１インタフェースは、変更されたシンドロームを前記半導体メモリに格納する。
【００２７】
請求項１７記載の発明は、請求項１６に記載のメモリコントローラであって、複数のエラー訂正モードに対して共通の固定符号長が設定されており、第１データは、情報データ、シンドロームおよび必要に応じて付加されるダミーデータを含む前記固定符号長のデータであり、前記エラー訂正部は、情報データ、再計算されたシンドロームおよび必要に応じて付加されるダミーデータを含む固定符号長の符号データを生成し、前記第１インタフェースは、生成された符号データにより、前記半導体メモリに格納されている第１データを書き換える。
【００２８】
請求項１８記載の発明は、請求項１６に記載のメモリコントローラであって、前記第１インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再計算されたシンドロームを格納する。
【発明の効果】
【００２９】
本発明のメモリコントローラは、訂正能力の異なる複数のエラー訂正モードを利用する。訂正能力の違いによりシンドローム長は異なるが、必要に応じてダミーデータを利用することで、情報データ、シンドロームおよびダミーデータを含む固定長の符号データを扱う。これにより、データの管理、運用を煩雑にすることなく複数のエラー訂正モードを利用することができる。
【００３０】
本発明のメモリコントローラは、訂正能力の異なる複数のエラー訂正モードを利用する。メモリコントローラは、エラー訂正処理後のデータを解析し、エラー訂正処理の正当性を判定することで、各データに適用されているエラー訂正モードを特定する。これにより、各データに適用されているエラー訂正モードに関する情報を保持することなく、各データに対するエラー訂正処理を実行可能である。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施の形態に係る情報処理システムの構成を示す機能ブロック図である。
【図２】メモリ４の構成を示す図である。
【図３】エラー訂正モードに応じて設定される第１の実施の形態に係る符号データ５０の構成を示す図である。
【図４】メモリコントローラ３の動作を示すフローチャートである。
【図５】メモリコントローラ３の動作を示すフローチャートである。
【図６】メモリコントローラ３の動作を示すフローチャートである。
【図７】メモリ４の各ページに格納されるデータの構造を示す図である。
【図８】エラー訂正モードに応じて設定される第２の実施の形態に係る符号データ５０の構成を示す図である。
【図９】エラー訂正モードに応じて設定される第３の実施の形態に係る符号データ５０の構成を示す図である。
【図１０】エラー訂正モードに応じて設定される第４の実施の形態に係る符号データ５０の構成を示す図である。
【図１１】第５の実施の形態に係る符号データ５０のデータ構成を示す図である。
【図１２】第６の実施の形態に係る制御部に格納されたマップ３０４を示す図である。
【図１３】第７の実施の形態に係る制御部に格納されたフラグ３０５を示す図である。
【発明を実施するための形態】
【００３２】
＜第１の実施の形態＞
以下、図面を参照しつつ、本発明の第１の実施の形態について説明する。
【００３３】
｛１．全体構成｝
図１は、第１の実施の形態に係る情報処理システム１００の機能ブロック図である。情報処理システム１００は、ホスト装置１と、メモリシステム２とを備える。
【００３４】
ホスト装置１は、たとえば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）又は携帯型の端末などである。メモリシステム２は、ホスト装置１に着脱可能なＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリや、メモリカードなどである。
【００３５】
メモリシステム２は、メモリコントローラ３と、メモリ４とを備える。メモリコントローラ３は、ホスト装置１の要求に応じて、メモリ４に対するデータの書き込み、メモリ４からのデータの読み出しを行う。つまり、メモリコントローラ３は、メモリ４に対するアクセスを制御する。
【００３６】
メモリ４は、再書き込み可能な不揮発性の半導体メモリである。本実施の形態において、メモリ４は、ＮＡＮＤフラッシュメモリである。
【００３７】
｛２．メモリコントローラ３の構成｝
以下、メモリコントローラ３の構成について説明する。メモリコントローラ３は、制御部３０と、ホストインタフェース３１と、メモリインタフェース３２と、アドレス変換部３３と、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）回路３４と、第１バッファ３５と、第２バッファ３６と、判定部３７とを備える。
【００３８】
制御部３０は、メモリコントローラ３の各機能部を制御する。制御部３０は、訂正モード設定部３０１と、比較部３０２と、出力制御部３０３とを備えている。訂正モード設定部３０１は、ＥＣＣ回路３４の動作モードを設定する。比較部３０２は、ＥＣＣ回路３４におけるエラー訂正処理の正当性を判定する。出力制御部３０３は、メモリ４から読み出されたデータの出力を制御する。
【００３９】
ホストインタフェース３１は、ホスト装置１とメモリコントローラ３との間で、コマンドまたはデータの入出力を行うインタフェースである。つまり、ホストインタフェース３１は、ホスト装置１から、読み出しコマンドや書き込みコマンドなどを入力する。ホストインタフェース３１は、ホスト装置１に対して、メモリ４から読み出したデータなどを出力する。
【００４０】
メモリインタフェース３２は、メモリコントローラ３とメモリ４との間で、コマンドまたはデータの入出力を行うインタフェースである。つまり、メモリインタフェース３２は、メモリ４に対して、コマンド及び書き込み用のデータなどを出力する。メモリインタフェース３２は、メモリコントローラ３に対して、メモリ４から読み出したデータなどを出力する。
【００４１】
アドレス変換部３３は、ホスト装置１からコマンドとともに入力された論理アドレスを、メモリ４の物理アドレスに変換する。アドレス変換部３３は、論理アドレスと物理アドレスとの対応を示す変換テーブルを保持し、変換テーブルを用いてアドレスを変換する。
【００４２】
ＥＣＣ回路３４は、メモリ４から読み出されたデータのエラーを検出するとともに、検出したエラーを訂正する回路である。本実施の形態のＥＣＣ回路３４は、訂正能力の異なる複数のエラー訂正モードで動作可能である。本実施の形態においては、ＥＣＣ回路３４は、第１〜第３の３つのレベルのエラー訂正モードで動作可能である。第１のエラー訂正モードは、最も訂正能力が低い。第２のエラー訂正モードは、第１のエラー訂正モードよりも訂正能力が高い。第３のエラー訂正モードは、第２のエラー訂正モードよりも訂正能力が高い。第１の実施の形態においては、メモリ４のページごとに個別のエラー訂正モードが設定可能となっている。本実施の形態においては、３段階のエラー訂正モードが用意されているが、４段階以上のモードを用意してもよい。
【００４３】
第１バッファ３５は、メモリ４から読み出されたデータを一時的に格納する。第２バッファ３６は、ＥＣＣ回路３４によりエラー訂正されたデータを格納する。判定部３７は、ＥＣＣ回路３４におけるエラー訂正処理の正当性を判定する。具体的には、判定部３７は、ハッシュ関数を用いて、ＥＣＣ回路３４におけるエラー訂正処理の正当性を判定する。
【００４４】
｛３．メモリ４の構成｝
図２は、メモリ４の構成を示す図である。具体的には、メモリ４は、１枚のダイで構成される。ダイは、複数のブロックを含む。図２に示す例では、ダイは、Ｊ個のブロックを含む。ブロックは、複数のページを含む。図２に示す例では、ブロックは、Ｚ個のページを含む。
【００４５】
ページは、メモリ４におけるデータの読み出し単位及び書き込み単位である。メモリコントローラ３は、メモリ４に記録されているデータをページ単位で読み出し、書き込みを指示されたデータをページ単位でメモリ４に書き込むことができる。ブロックは、メモリ４におけるデータの消去単位である。
【００４６】
｛４．メモリコントローラ３の動作の概略｝
以下、メモリコントローラ３の動作の概略を説明する。メモリコントローラ３は、ホスト装置１から読み出しコマンドを入力したとき、メモリ４に対してデータの読み出し処理を実行する。メモリコントローラ３は、読み出しコマンドで指定されたアドレスに基づいて、読み出し対象のページを特定する。
【００４７】
メモリ４から読み出されたデータは、ＥＣＣ回路３４および第１バッファ３５に与えられる。ＥＣＣ回路３４は、訂正モード設定部３０１において設定されたエラー訂正モードに従い、読み出しデータに対するエラー訂正処理を実行する。
【００４８】
判定部３７は、ＥＣＣ回路３４におけるエラー訂正処理の正当性を判定する。エラー訂正処理の正当性が肯定された場合、出力制御部３０３は、第２バッファ３６に格納されているデータをホスト装置１へ出力する。
【００４９】
エラー訂正処理の正当性が否定された場合、訂正モード設定部３０１は、エラー訂正モードを現在よりも訂正能力の高いモードに変更する。ＥＣＣ回路３４は、変更されたエラー訂正モードに従い、第１バッファ３５に格納されている読み出しデータに対して再びエラー訂正処理を実行する。
【００５０】
変更されたエラー訂正モードによって読み出しデータが訂正されると、再び、エラー訂正後のデータが第２バッファ３６に格納される。また、エラー訂正後のデータが判定部３７に出力され、判定部３７において、ＥＣＣ回路３４におけるエラー訂正処理の正当性が判定される。エラー訂正処理の正当性が肯定された場合、出力制御部３０３は、第２バッファ３６に格納されたデータをホスト装置１へ出力する。エラー訂正処理の正当性が否定された場合、メモリコントローラ３は、さらにエラー訂正モードの訂正能力を向上させる。このように、メモリコントローラ３は、訂正能力の異なる複数のエラー訂正モードで動作可能である。メモリコントローラ３は、エラー訂正処理の正当性が確認されるまで、訂正能力を向上させてエラー訂正処理を繰り返し実行する。
【００５１】
｛５．符号データ５０のデータ構造｝
上述したように、本実施の形態においては、ＥＣＣ回路３４は、訂正能力の異なる複数のエラー訂正モードで動作可能である。図３は、本実施の形態における第１〜第３のエラー訂正モードにおける符号データ５０のデータ構造を示す図である。
【００５２】
第１のエラー訂正モードは、２０４８Ｂｙｔｅの情報データ５５に対して１２ｂｉｔのエラー訂正が可能である。第１のエラー訂正モードでは、２０４８Ｂｙｔｅの情報データ５５に対して、１８０ｂｉｔのシンドローム（Ｓ１０）が利用される。ただし、１８０ｂｉｔのシンドローム（Ｓ１０）に１８０ｂｉｔの“０”のダミーデータを付加し、全体として３６０ｂｉｔのシンドローム５３としてメモリ４に格納される。
【００５３】
図３の下段には、２０４８Ｂｙｔｅの情報データ５５（Ｄ１０）に、１８０ｂｉｔのダミーデータ“０”と１８０ｂｉｔのシンドローム（Ｓ１０）が付加された符号データ５０のデータ構造が示されている。情報データ５５（Ｄ１０）には、実体データ５１とハッシュ値５２が含まれる。図中、ハッシュ値５２は網掛け表示している。
【００５４】
第２のエラー訂正モードは、２０４８Ｂｙｔｅの情報データ５５に対して１６ｂｉｔのエラー訂正が可能である。第２のエラー訂正モードでは、２０４８Ｂｙｔｅの情報データ５５に対して、２４０ｂｉｔのシンドローム（Ｓ２０）が利用される。ただし、２４０ｂｉｔのシンドローム（Ｓ２０）に１２０ｂｉｔの“０”のダミーデータを付加し、全体として３６０ｂｉｔのシンドローム５３としてメモリ４に格納される。
【００５５】
図３の中段には、２０４８Ｂｙｔｅの情報データ５５（Ｄ１０）に、１２０ｂｉｔのダミーデータ“０”と２４０ｂｉｔのシンドローム（Ｓ２０）が付加された符号データ５０のデータ構造が示されている。
【００５６】
第３のエラー訂正モードは、２０４８Ｂｙｔｅの情報データ５５に対して２４ｂｉｔのエラー訂正が可能である。第３のエラー訂正モードでは、２０４８Ｂｙｔｅの情報データ５５に対して、３６０ｂｉｔのシンドローム（Ｓ３０）が利用される。３６０ｂｉｔのシンドローム（Ｓ３０）は、そのままシンドローム５３としてメモリ４に格納される。
【００５７】
図３の上段には、２０４８Ｂｙｔｅの情報データ５５（Ｄ１０）に、３６０ｂｉｔのシンドローム（Ｓ３０）が付加された符号データ５０のデータ構造が示されている。
【００５８】
このように、第１〜第３のエラー訂正モードにおいて、必要となるシンドローム（Ｓ１０）〜（Ｓ３０）のビット長は異なる。しかし、本実施の形態においては、ダミーデータを付加することにより、第１〜第３のエラー訂正モードにおいては、共通の固定長のシンドローム５３を情報データ５５に付加する。これにより、情報データ５５とシンドローム５３とを含む符号データ５０は、エラー訂正モードの種別に関わらず、１６７４４ｂｉｔ（２０４８Ｂｙｔｅ＋３６０ｂｉｔ）の固定長のデータとなる。本実施の形態においては、符号データの固定長は、エラー訂正能力が最大である第３のエラー訂正モードのシンドローム長に合わせて設定されている。つまり、第３のエラー訂正モードについては符号データ５０にダミーデータは含まれていない。
【００５９】
また、図３に示すように、第１〜第３のエラー訂正モードには、それぞれ閾値が設定されている。第１のエラー訂正モードの閾値は１０ｂｉｔである。つまり、ＥＣＣ回路３４が第１のエラー訂正モードで動作中に１０ｂｉｔを超えるビットエラーが検出された場合には、エラー訂正モードを第１から第２に変更する必要性があると判断される。第２のエラー訂正モードの閾値は１４ｂｉｔである。つまり、ＥＣＣ回路３４が第２のエラー訂正モードで動作中に１４ｂｉｔを超えるビットエラーが検出された場合には、エラー訂正モードを第２から第３に変更する必要性があると判断される。これにより、エラー訂正能力を超えるエラーが発生する前に、訂正能力を向上させ、データの信頼性を確保するようにしている。第３のエラー訂正モードの閾値は２２ｂｉｔである。ＥＣＣ回路３４が第３のエラー訂正モードで動作中に２２ｂｉｔを超えるビットエラーが検出された場合には、例えば、メモリコントローラ３は、ホスト装置１に最大エラー閾値を超えたことを通知すればよい。ホスト装置１において、最大エラー発生後の処理方法が判断されればよい。
【００６０】
｛６．メモリコントローラ３の動作｝
以下、メモリコントローラ３が実行する読み出し処理およびエラー訂正モードの変更処理について詳しく説明する。
【００６１】
｛６．１．読み出し処理｝
図４〜図６は、読み出し処理を実行するメモリコントローラ３の動作を示すフローチャートである。メモリコントローラ３は、ホスト装置１により生成されたメモリ４に対するデータ読み出しの要求コマンドを入力する。これにより、図４に示す処理が開始される。読み出しコマンドは、読み出し対象のページの論理アドレスを含む。
【００６２】
制御部３０が、ホストインタフェース３１を介して読み出しコマンドを入力すると、訂正モード設定部３０１は、まず、エラー訂正モードを第１のエラー訂正モードに設定する（ステップＳ１０１）。訂正モード設定部３０１は、エラー訂正モードが第１のエラー訂正モードに設定されていることを示すモードフラグ９１をＥＣＣ回路３４に通知する。これにより、ＥＣＣ回路３４は、第１のエラー訂正モードで動作する状態となる。
【００６３】
続いて、メモリコントローラ３は、メモリ４から読み出しコマンドで指定されたページのデータを読み出す。具体的には、アドレス変換部３３は、読み出しコマンドで指定されたページの論理アドレスを物理アドレスに変換する（ステップＳ１０２）。メモリインタフェース３２は、変換された物理アドレスに対する読み出しコマンドをメモリ４に出力する。これにより、メモリ４から読み出しコマンドで指定されたページのデータが読み出される（ステップＳ１０３）。
【００６４】
メモリインタフェース３２は、読み出したデータをＥＣＣ回路３４および第１バッファ３５へ出力する（ステップＳ１０４）。ＥＣＣ回路３４は、訂正モード設定部３０１により設定されたエラー訂正モードに基づいて、読み出しデータに対するエラー検出処理を実行する。ＥＣＣ回路３４は、読み出しデータに対して検出したエラーを訂正する処理を実行する（ステップＳ１０５）。たとえば、訂正モード設定部３０１により設定されているエラー訂正モードが第１のエラー訂正モードであれば、符号データ５０に含まれる１８０ｂｉｔのシンドローム（Ｓ１０）を利用してエラー訂正処理を実行する。
【００６５】
図７は、符号データ５０のフォーマットを示す図である。実体データ５１は、ホスト装置１により処理されるデータの実体である。ハッシュ値５２は、実体データ５１のハッシュ値であり、実体データ５１に付加されるエラー検出用のデータである。ハッシュ値５２は、メモリ４に書き込まれる前に、制御部３０においてエラーのない実体データ５１から算出される。あるいは、ハッシュ値５２は、予め書き込みデータに格納されている。つまり、実体データ５１およびハッシュ値５２を含む情報データ５５が外部から与えられてもよい。シンドローム５３は、図３を用いて説明したようにビットエラーの検出および訂正のために用いられるデータである。上述したように、シンドローム５３には、実質的なシンドローム（Ｓ１０）等の他に、ダミーデータが含まれている。メモリ４は、図７に示すフォーマットのデータを各ページに格納する。
【００６６】
符号データ５０のビットエラーは、メモリ４に符号データ５０を書き込む時に発生する場合がある。このエラーは、プログラムディスターブと呼ばれる現象である。または、符号データ５０のビットエラーは、メモリ４における符号データ５０の周辺領域が繰り返し読み出されることにより発生する場合がある。このエラーは、リードディスターブと呼ばれる現象である。ＥＣＣ回路３４は、符号データ５０が有するシンドローム５３を用いて、符号データ５０のビットエラーの検出及び訂正を行う。エラー訂正された符号データ５０は、符号データ６０として第２バッファ３６および判定部３７に出力される（ステップＳ１０６）。
【００６７】
判定部３７は、符号データ６０を解析し、ＥＣＣ回路３４におけるエラー訂正処理の正当性を判定する。（ステップＳ１０７，Ｓ１０８）。具体的には、判定部３７は、予め設定されたハッシュ関数を用いて、符号データ６０が有する実体データ６１のハッシュ値を計算する（ステップＳ１０７）。図７において、符号データ６０が有するハッシュ値６２は、実体データ６１から生成されたデータでなく、ハッシュ値５２がエラー訂正されることにより生成されたデータである。
【００６８】
判定部３７は、ハッシュ値６２と、実体データ６１から算出したハッシュ値とが一致するか否かを確認することにより（ステップＳ１０８）、ＥＣＣ回路３４のエラー訂正処理の正当性を判定する。
【００６９】
ＥＣＣ回路３４に適用されたエラー訂正モードが、実際に符号データ５０に適用されているエラー訂正モードと一致している場合、ＥＣＣ回路３４は、符号データ５０のビットエラーを訂正することができる。この場合、ハッシュ値６２と、実体データ６１から算出されたハッシュ値とが一致するため（ステップＳ１０８においてＹｅｓ）、判定部３７は、実体データ６１をホスト装置１に出力することができると判断する。判定部３７は、ＥＣＣ回路３４におけるエラー訂正処理の正当性を肯定する正当性フラグ９２を制御部３０に通知する（図５のステップＳ２０１）。
【００７０】
ＥＣＣ回路３４は、符号データ５０に対するエラー訂正処理を実行した後、符号データ５０に発生していたエラービット数の情報９３を制御部３０に通知する。制御部３０は、エラービット数の情報９３を入力すると、符号データ５０に発生しているエラービット数と、現在のエラー訂正モードにおける閾値とを比較する（ステップＳ２０２）。図３に示したように、第１のエラー訂正モードにおける閾値は、１０ｂｉｔであり、第２のエラー訂正モードにおける閾値は１４ｂｉｔである。
【００７１】
符号データ５０に発生しているエラービット数が、閾値以下の場合（ステップＳ２０２でＹＥＳ）、出力制御部３０３は、第２バッファ３６から実体データ６１を取得する。出力制御部３０３は、ホストインタフェース３１を介して、取得した実体データ６１をホスト装置１に出力する（ステップＳ２０３）。
【００７２】
再び、図４のステップＳ１０８を参照する。ＥＣＣ回路３４に適用されているエラー訂正モードが、実際に符号データ５０に適用されているエラー訂正モードと一致していない場合、ＥＣＣ回路３４は、符号データ５０のビットエラーを訂正することができない。
【００７３】
この場合、ハッシュ値６２と、実体データ６１から算出されたハッシュ値とは一致しない（ステップＳ１０８においてＮｏ）。判定部３７は、実体データ６１のエラーが訂正されたことが保証されていないため、実体データ６１をホスト装置に出力することができないと判断する。判定部３７は、ＥＣＣ回路３４におけるエラー訂正処理の正当性を否定する正当性フラグ９２を制御部３０に通知する（ステップＳ１０９）。
【００７４】
制御部３０にエラー訂正処理の正当性を否定する正当性フラグ９２が入力されると、訂正モード設定部３０１が、エラー訂正モードの変更を行う（ステップＳ１１０）。訂正モード設定部３０１は、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードにモードを変更する。たとえば、第１のエラー訂正モードで動作しているときには、モードを第２のエラー訂正モードに変更する。第２のエラー訂正モードで動作しているときには、モードを第３のエラー訂正モードに変更する。
【００７５】
ここでは、モードが第１から第２のエラー訂正モードに変更された場合を例に説明する。訂正モード設定部３０１は、エラー訂正モードが第２のエラー訂正モードに設定されていることを示すモードフラグ９１をＥＣＣ回路３４に通知する。これにより、ＥＣＣ回路３４は、第２のエラー訂正モードで動作する状態となる。
【００７６】
次に、ＥＣＣ回路３４は、第１バッファ３５から符号データ５０を読み出す（ステップＳ１１１）。この符号データ５０は、ステップＳ１０４において第１バッファ３５に書き込まれたデータである。あるいは、メモリインタフェース３が、再度、メモリ４から符号データ５０を読み出し、ＥＣＣ回路３４に符号データ５０を出力してもよい。この場合であれば、第１バッファ３５を不要とすることができる。ＥＣＣ回路３４は、訂正モード設定部３０１により設定されたエラー訂正モードに基づいて、再び、符号データ５０に対するエラーを検出する。ＥＣＣ回路３４は、符号データ５０に対して検出したエラーを訂正する処理を実行する（ステップＳ１１２）。つまり、変更されたエラー訂正モードに従い、再びエラー訂正処理を実行する。たとえば、訂正モード設定部３０１により設定されているエラー訂正モードが第２のエラー訂正モードであれば、符号データ５０に含まれる２４０ｂｉｔのシンドローム（Ｓ２０）を利用してエラー訂正処理を実行する。
【００７７】
エラー訂正処理が終了すると、ステップＳ１０６に戻り、ステップＳ１０６〜ステップＳ１０８の処理を繰り返す。そして、ステップＳ１０８においてハッシュ値が一致しなかった場合には、再度ステップＳ１０９〜Ｓ１１２の処理を実行し、さらに訂正能力の高いエラー訂正モードを設定し、エラー訂正処理を実行する。
【００７８】
このように、本実施の形態においては、最初、エラー訂正能力の最も小さい第１のエラー訂正モードに従いエラー訂正処理を実行した後、エラー訂正処理の正当性が否定された場合には、段階的に、訂正能力の高いエラー訂正モードにモード変更した上でエラー訂正処理を実行する。これにより、各符号データ、つまり各ページに対してそれぞれ異なるエラー訂正モードを適用させているものの、各ページに適応させるエラー訂正モードの情報を保持することなく、各ページのデータを訂正することが可能である。
【００７９】
再び、図５のステップＳ２０２を参照する。符号データ５０に発生しているエラービット数が、閾値を超えている場合（ステップＳ２０２でＮＯ）、訂正モード設定部３０１は、読み出した符号データ５０に対応するエラー訂正モードの変更を行う（ステップＳ３０１）。訂正モード設定部３０１は、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードにモード変更する。たとえば、第１から第２へ、あるいは、第２から第３へ、段階的にエラー訂正モードの訂正能力を向上させるようにモード変更を行う。
【００８０】
前述したステップＳ１１０におけるエラー訂正モードの変更は、読み出されたデータに適用されている正しいエラー訂正モードをサーチするための変更である。これに対して、ステップＳ３０１におけるエラー訂正モードの変更は、読み出されたデータに閾値を超えるエラーが検出されたため、読み出されたデータに適用させるエラー訂正モードを変更するための処理である。
【００８１】
訂正モード設定部３０１は、変更されたエラー訂正モードを示すモードフラグ９１をＥＣＣ回路３４に通知する。これにより、ＥＣＣ回路３４は、変更されたエラー訂正モードで動作する状態となる。
【００８２】
制御部３０は、第２バッファ３６に格納されているエラー訂正後の情報データ６５を読み出す。制御部３０は、読み出したエラー訂正後の情報データ６５をＥＣＣ回路３４に転送する（ステップＳ３０２）。つまり、制御部３０は、第２バッファ３６に格納されている実体データ６１とハッシュ値６２とを含む情報データ６５を読み出す。第２バッファ３６に格納されている実体データ６１とハッシュ値６２とはステップＳ１０８において正当性が認められたデータである。
【００８３】
ＥＣＣ回路３４は、第２バッファ３６から読み出した実体データ６１とハッシュ値６２とを含む情報データ６５に対して、変更されたエラー訂正モードに従ってシンドロームを算出する（ステップＳ３０３）。ＥＣＣ回路３４は、実体データ６１、ハッシュ値６２および新しく算出されたシンドローム（上述したように、必要に応じてダミーデータが付加された固定長のシンドローム）を含む符号データ６０をメモリインタフェース３２に与える。制御部３０は、符号データ６０の書き込みコマンドをアドレス変換部に出力する。アドレス変換部３３は、書き込みコマンドで指定された論理アドレスを物理アドレスに変換し、メモリインタフェース３２に与える。メモリインタフェース３２は、与えられた物理アドレスに対する書き込みコマンドをメモリ４に出力する。これにより、書き込みコマンドで指定されたページに符号データ６０が書き込まれる（ステップＳ３０４）。ここで、第２のエラー訂正モードにおいては、２４０ｂｉｔのシンドローム（Ｓ２０）に１２０ｂｉｔのダミーデータが付加される。
【００８４】
最後に、出力制御部３０３は、第２バッファ３６から実体データ６１を取得する。出力制御部３０３は、ホストインタフェース３１を介して、取得した実体データ６１をホスト装置１に出力する（ステップＳ３０５）。
【００８５】
このように、本実施の形態においては、ＥＣＣ回路３４は、訂正能力の異なる複数のエラー訂正モードで動作可能である。それぞれのエラー訂正モードで利用されるシンドローム（Ｓ１０）〜（Ｓ３０）のデータ長は異なる。つまり、エラー訂正能力が高くなるにつれてシンドローム（Ｓ１０）〜（Ｓ３０）のデータ長は大きくなる。しかし、本実施の形態においては、実体的なシンドロームにダミーデータを付加することで、シンドロームとダミーデータを含む固定長のシンドロームを利用している。このため、エラー訂正モードが変更された場合にも、メモリ４に格納される符号データのデータ長が固定長となり、メモリ４の管理および運用が煩雑となることはない。
【００８６】
＜第２の実施の形態＞
図８を参照しながら、本発明の第２の実施の形態について説明する。第２の実施の形態における情報処理システム１００の構成およびメモリコントローラ３の動作は、基本的には第１の実施の形態におけるメモリコントローラ３の動作と同様である。ただし、第２の実施の形態の符号データ５０のデータ構造は第１の実施の形態とは異なる。図８は、第２の実施の形態における第１〜第３のエラー訂正モードにおける符号データ５０のデータ構造を示す図である。
【００８７】
第１のエラー訂正モードは、２０４８Ｂｙｔｅの情報データに対して２４ｂｉｔのエラー訂正が可能である。第１のエラー訂正モードでは、２０４８Ｂｙｔｅの情報データ５５に対して、３６０ｂｉｔのシンドローム（Ｓ１１）が利用される。ただし、３６０ｂｉｔのシンドローム（Ｓ１１）に１０８０ｂｉｔの“０”のダミーデータを付加し、全体として１４４０ｂｉｔのシンドローム５３がメモリ４に格納される。
【００８８】
図８の下段には、２０４８Ｂｙｔｅの情報データ（Ｄ１１）に、１０８０ｂｉｔのダミーデータ“０”と３６０ｂｉｔのシンドローム（Ｓ１１）が付加された符号データ５０のデータ構造が示されている。情報データ（Ｄ１１）は、実体データ５１とハッシュ値５２とを含む。図中、ハッシュ値５２は網掛け表示している。
【００８９】
第２のエラー訂正モードは、２０４８（＝１０２４×２）Ｂｙｔｅの情報データ５５に対して２４×２ｂｉｔのエラー訂正が可能である。第２のエラー訂正モードでは、１０２４Ｂｙｔｅの情報データ（Ｄ２１）および（Ｄ２２）に対して、それぞれ３６０ｂｉｔのシンドローム（Ｓ２１）および（Ｓ２２）が利用される。つまり、１０２４Ｂｙｔｅの情報データ（Ｄ２１）および（Ｄ２２）に対して、それぞれ２４ｂｉｔのエラー訂正が可能である。ただし、７２０（＝３６０×２）ｂｉｔのシンドローム（Ｓ２１）および（Ｓ２２）に７２０ｂｉｔの“０”のダミーデータを付加し、全体として１４４０ｂｉｔのシンドローム５３としてメモリ４に格納される。
【００９０】
図８の中段には、１０２４Ｂｙｔｅの情報データ（Ｄ２１）および（Ｄ２２）に、７２０ｂｉｔのダミーデータ“０”と、３６０ｂｉｔのシンドローム（Ｓ２１）および（Ｓ２２）が付加された符号データ５０のデータ構造が示されている。情報データ（Ｄ２１）および（Ｄ２２）のそれぞれにハッシュ値５２が含まれている。
【００９１】
第３のエラー訂正モードは、２０４８（＝５１２×４）Ｂｙｔｅの情報データ５５に対して２４×４ｂｉｔのエラー訂正が可能である。第３のエラー訂正モードでは、５１２Ｂｙｔｅの情報データ（Ｄ３１）、（Ｄ３２）、（Ｄ３３）および（Ｄ３４）に対して、それぞれ３６０ｂｉｔのシンドローム（Ｓ２１）、（Ｓ２２）、（Ｓ２３）および（Ｓ２４）が利用される。つまり、第３のエラー訂正モードでは、５１２Ｂｙｔｅの情報データ（Ｄ３１）、（Ｄ３２）、（Ｄ３３）および（Ｄ３４）に対して、それぞれ２４ｂｉｔのエラー訂正が可能である。
【００９２】
図８の上段には、５１２Ｂｙｔｅの情報データ（Ｄ３１）、（Ｄ３２）、（Ｄ３３）および（Ｄ３４）に、３６０ｂｉｔのシンドローム（Ｓ３１）、（Ｓ３２）、（Ｓ３３）および（Ｓ３４）が付加された符号データ５０のデータ構造が示されている。
【００９３】
このように、第１〜第３のエラー訂正モードにおいて、必要となるシンドロームのビット長は異なる。しかし、本実施の形態においては、ダミーデータを付加することにより、第１〜第３のエラー訂正モードにおいては、共通の固定長のシンドローム５３を情報データ５５に付加する。これにより、情報データ５５とシンドローム５３とを含む符号データ５０は、エラー訂正モードの種別に関わらず、１７８２４ｂｉｔ（２０４８Ｂｙｔｅ＋１４４０ｂｉｔ）の固定長のデータとなる。
【００９４】
また、図８に示すように、第１〜第３のエラー訂正モードには、それぞれ閾値が設定されている。第１のエラー訂正モードの閾値が２２ｂｉｔである。つまり、ＥＣＣ回路３４が第１のエラー訂正モードで動作中に情報データ（Ｄ１１）に２２ｂｉｔを超えるビットエラーが検出された場合には、エラー訂正モードを第１から第２に変更する必要性があると判断される。第２のエラー訂正モードの閾値が２２ｂｉｔである。つまり、ＥＣＣ回路３４が第２のエラー訂正モードで動作中に情報データ（Ｄ２１）あるいは（Ｄ２２）に２２ｂｉｔを超えるビットエラーが検出された場合には、エラー訂正モードを第２から第３に変更する必要性があると判断される。
【００９５】
このように第２の実施の形態においては、第１〜第３のエラー訂正モードで同一の閾値を用いている。しかし、シンドロームを割り当てる情報データの単位が異なるため、第１に比べて第２のエラー訂正モードの方がエラー訂正能力は高くなっている。同様に、第２に比べて第３のエラー訂正モードの方がエラー訂正能力は高くなっている。
【００９６】
＜第３の実施の形態＞
図９を参照しながら、本発明の第３の実施の形態について説明する。第３の実施の形態における情報処理システム１００の構成およびメモリコントローラ３の動作は、基本的には第１〜第２の実施の形態におけるメモリコントローラ３の動作と同様である。ただし、第３の実施の形態の符号データ５０のデータ構造は第１の実施の形態とは異なる。図９は、第３の実施の形態における第１〜第３のエラー訂正モードにおける符号データ５０のデータ構造を示す図である。
【００９７】
図９と図３を比較すれば分かるように、第１〜第３のエラー訂正モードにおける訂正能力、閾値およびシンドローム（Ｓ１０）〜（Ｓ３０）のデータサイズは、第１の実施の形態と同じである。ただし、シンドローム（Ｓ１０）〜（Ｓ３０）の格納アドレスが第１の実施の形態とは異なる。
【００９８】
図９に示すように、第１のエラー訂正モードにおいては、１８０ｂｉｔのシンドローム（Ｓ１０）が格納される。第２のエラー訂正モードにおいては、２４０ｂｉｔのシンドローム（Ｓ２０）が格納される。第３のエラー訂正モードにおいては、３６０ｂｉｔのシンドローム（Ｓ３０）が格納される。また、シンドローム（Ｓ１０）、（Ｓ２０）および（Ｓ３０）は、それぞれ異なるアドレスに格納されている。
【００９９】
第１のエラー訂正モードにおいて、シンドローム（Ｓ１０）は、７８０ｂｉｔのシンドローム５３の格納エリアの中で先頭アドレス位置に格納されている。それより後の残りのアドレスにはダミーデータ“１”が格納される。
【０１００】
第１から第２にエラー訂正モードが変更されたとき、メモリコントローラ３は、シンドローム（Ｓ１０）を削除する必要はない。メモリコントローラ３は、シンドローム（Ｓ１０）に隣接するアドレス位置にシンドローム（Ｓ２０）を格納する。そして、シンドローム（Ｓ２０）の格納位置よりも後のアドレス位置にはダミーデータ“１”が格納される。第２のエラー訂正モードにおいて、シンドローム（Ｓ１０）は格納されたままであるが、無効データとして利用されない。
【０１０１】
第２から第３にエラー訂正モードが変更されたとき、メモリコントローラ３は、シンドローム（Ｓ１０）および（Ｓ２０）を削除する必要はない。メモリコントローラ３は、シンドローム（Ｓ２０）に隣接するアドレス位置にシンドローム（Ｓ３０）を格納する。第３のエラー訂正モードにおいて、シンドローム（Ｓ１０）および（Ｓ２０）は格納されたままであるが、無効データとして利用されない。
【０１０２】
このように、第３の実施の形態においては、エラー訂正モードが変更されたとき、変更後のシンドローム（Ｓ２０）あるいは（Ｓ３０）を追記していくことができる。つまり、変更対象のシンドロームを含むブロックの消去処理を行わなくてよいため、処理速度の向上と消費電力の低減を図ることができる。
【０１０３】
＜第４の実施の形態＞
図１０を参照しながら、本発明の第４の実施の形態について説明する。第４の実施の形態における情報処理システム１００の構成およびメモリコントローラ３の動作は、基本的には第１〜第３の実施の形態におけるメモリコントローラ３の動作と同様である。ただし、第４の実施の形態の符号データ５０のデータ構造は第１の実施の形態とは異なる。図１０は、第４の実施の形態における第１〜第３のエラー訂正モードにおける符号データ５０のデータ構造を示す図である。
【０１０４】
図１０と図８を比較すれば分かるように、第１〜第３のエラー訂正モードにおける訂正能力、閾値およびシンドローム（Ｓ１１）、（Ｓ２１）・・・のデータサイズは、第２の実施の形態と同じである。また、シンドローム（Ｓ１１）、（Ｓ２１）・・・を付与する情報データ５５の分割単位も第２の実施の形態と同じである。ただし、シンドローム（Ｓ１１）、（Ｓ２１）・・・の格納アドレスが第２の実施の形態とは異なる。
【０１０５】
図１０に示すように、第１のエラー訂正モードにおいては、３６０ｂｉｔのシンドローム（Ｓ１１）が格納される。第２のエラー訂正モードにおいては、それぞれ３６０ｂｉｔのシンドローム（Ｓ２１）および（Ｓ２２）が格納される。第３のエラー訂正モードにおいては、それぞれ３６０ｂｉｔのシンドローム（Ｓ３１）、（Ｓ３２）、（Ｓ３３）および（Ｓ３４）が格納される。また、シンドローム（Ｓ１１）、（Ｓ２１）、（Ｓ２２）、（Ｓ３１）、（Ｓ３２）、（Ｓ３３）および（Ｓ３４）は、それぞれ異なるアドレスに格納されている。
【０１０６】
第１のエラー訂正モードにおいて、シンドローム（Ｓ１１）は、２５２０ｂｉｔのシンドローム５３の格納エリアの中で先頭アドレス位置に格納されている。それより後の残りのアドレスにはダミーデータ“１”が格納される。
【０１０７】
第１から第２にエラー訂正モードが変更されたとき、メモリコントローラ３は、シンドローム（Ｓ１１）を削除する必要はない。メモリコントローラ３は、シンドローム（Ｓ１１）に隣接するアドレス位置にシンドローム（Ｓ２１）および（Ｓ２２）を格納する。そして、シンドローム（Ｓ２１）の格納位置よりも後のアドレス位置にはダミーデータ“１”が格納される。第２のエラー訂正モードにおいて、シンドローム（Ｓ１１）は格納されたままであるが、無効データとして利用されない。
【０１０８】
第２から第３にエラー訂正モードが変更されたとき、メモリコントローラ３は、シンドローム（Ｓ１１）、（Ｓ２１）および（Ｓ２２）を削除する必要はない。メモリコントローラ３は、シンドローム（Ｓ２１）に隣接するアドレス位置にシンドローム（Ｓ３１）、（Ｓ３２）、（Ｓ３３）および（Ｓ３４）を格納する。第３のエラー訂正モードにおいて、シンドローム（Ｓ１１）、（Ｓ２１）および（Ｓ２２）は格納されたままであるが、無効データとして利用されない。
【０１０９】
このように、第４の実施の形態においては、エラー訂正モードが変更されたとき、変更後のシンドロームを追記していくことができる。つまり、変更対象のシンドロームを含むブロックの消去処理を行わなくてよいため、処理速度の向上と消費電力の低減を図ることができる。
【０１１０】
＜第５の実施の形態＞
本発明の第５の実施の形態について説明する。第１〜第４の実施の形態においては、メモリコントローラ３は、第１のエラー訂正モードから順番にエラー訂正モードを実行した。そして、エラー訂正処理の正当性を確認することによって、各符号データ、つまりは各ページに適用されているエラー訂正モードを特定することができた。
【０１１１】
これに対して、第５の実施の形態においては、図１１に示すように、符号データ５０に訂正モードフラグ５６を格納する。メモリコントローラ３は、読み出した符号データ５０に含まれる訂正モードフラグ５６を参照することで、各符号データ、つまりは各ページに適用されているエラー訂正モードを特定することができる。
【０１１２】
訂正モードフラグ５６自体にエラーが発生している場合、誤ってエラー訂正モードを判定する可能性がある。そこで、本実施の形態においては、符号データに、複数（この例では３つ）の重複した訂正モードフラグ５６を格納するようにしている。つまり、同じ値を持つ訂正モードフラグ５６を３つ重複させて格納するのである。メモリコントローラ３は、読み出した符号データ５０から３つの訂正モードフラグ５６を取得する。つまり、訂正モードフラグ５６は、訂正処理が行われる前の符号データ５０から取得される。メモリコントローラ３は、３つの訂正モードフラグ５６が示しているエラー訂正モードを多数決により決定する。たとえば、２つの訂正モードフラグ５６が第１のエラー訂正モードを示していれば、残りの１つの訂正モードフラグ５６が第２のエラー訂正モードを示していても、適用すべきエラー訂正モードは第１のエラー訂正モードであると判定することができる。
【０１１３】
＜第６の実施の形態＞
本発明の第６の実施の形態について説明する。第１〜第４の実施の形態においては、メモリコントローラ３は、第１のエラー訂正モードから順番にエラー訂正モードを実行した。そして、エラー訂正処理の正当性を確認することによって、各符号データ、つまりは各ページに適用されているエラー訂正モードを特定することができた。
【０１１４】
これに対して、第６の実施の形態においては、図１２に示すように、制御部３０は、メモリ４の各ページに適用されているエラー訂正モードのマップ３０４を保持している。制御部３０は、エラー訂正モードが変更されたときは、マップ３０４を更新する。メモリコントローラ３は、マップ３０４を参照することで、各符号データ、つまり各ページに適用すべきエラー訂正モードを特定することができる。
【０１１５】
＜第７の実施の形態＞
本発明の第７の実施の形態について説明する。第１〜第６の実施の形態においては、メモリ４に格納される符号データごとに、つまり、ページごとにエラー訂正モードを設定した。第７の実施の形態においては、全ページに対して共通のエラー訂正モードを適用させる。
【０１１６】
図１３に示すように、制御部３０は、メモリ４の全ページに適用されている共通のエラー訂正モードのフラグ３０５を保持している。制御部３０は、エラー訂正モードが変更されたときは、フラグ３０５を更新する。メモリコントローラ３は、フラグ３０５を参照することで、現在全符号データ、つまり全ページに適用すべきエラー訂正モードを特定することができる。
【符号の説明】
【０１１７】
１  ホスト装置
２  メモリシステム
３  メモリコントローラ
４  メモリ
３０  制御部
３１  ホストインタフェース
３２  メモリインタフェース
３３  アドレス変換部
３４  ＥＣＣ回路
３５  第１バッファ
３６  第２バッファ
３７  判定部
３０１  訂正モード設定部
３０２  比較部
３０３    出力制御部
【図１】
0005764392.tif 000002
【図２】
0005764392.tif 000003
【図３】
0005764392.tif 000004
【図４】
0005764392.tif 000005
【図５】
0005764392.tif 000006
【図６】
0005764392.tif 000007
【図７】
0005764392.tif 000008
【図８】
0005764392.tif 000009
【図９】
0005764392.tif 000010
【図１０】
0005764392.tif 000011
【図１１】
0005764392.tif 000012
【図１２】
0005764392.tif 000013
【図１３】
0005764392.tif 000014