メモリコントローラ
【課題】データ管理および運用を複雑化させることなく、経時的にエラー発生率の変化する半導体メモリの信頼性を向上させることを課題とする。
【解決手段】ECC回路34は、メモリ4に格納されたデータに対して訂正能力の異なる複数のエラー訂正モードで動作可能である。ECC回路34は、制御部30において設定されたエラー訂正モードに従い、情報データ55に対するシンドロームを算出し、算出されたシンドロームにダミービットを付加した固定長のシンドローム53を情報データ55に付加する。ECC回路34は、符号データ50が読み出されたとき、符号データ50に含まれるシンドローム53を利用して符号データ50の訂正処理を実行する。
【解決手段】ECC回路34は、メモリ4に格納されたデータに対して訂正能力の異なる複数のエラー訂正モードで動作可能である。ECC回路34は、制御部30において設定されたエラー訂正モードに従い、情報データ55に対するシンドロームを算出し、算出されたシンドロームにダミービットを付加した固定長のシンドローム53を情報データ55に付加する。ECC回路34は、符号データ50が読み出されたとき、符号データ50に含まれるシンドローム53を利用して符号データ50の訂正処理を実行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体メモリに格納されたデータに対するエラー訂正技術に関する。
【背景技術】
【0002】
各種データの記憶媒体として、NANDフラッシュメモリ等の不揮発性半導体メモリが広く利用されている。プロセス技術の微細化等により、不揮発性半導体メモリの高集積化がますます進んでいる。
【0003】
不揮発性半導体メモリにデータを書き込んだとき、書き込まれたデータにエラーが発生する場合がある。いわゆるプログラムディスターブと呼ばれる現象である。あるいは不揮発性半導体メモリから繰り返しデータが読み出されることにより、格納されたデータにエラーが発生する場合がある。いわゆるリードディスターブと呼ばれる現象である。したがって、NANDフラッシュメモリを含め、不揮発性半導体メモリを利用するためには、エラー訂正機能の装備が不可欠である。
【0004】
エラー訂正機能を実現する回路として、ECC(Error Check And Correction)回路が利用されている。ECC回路は、メモリアレイに格納する情報データからシンドロームを算出する。メモリアレイには、情報データにシンドロームが付加された符号データが格納される。ECC回路は、メモリアレイから読み出された符号データに対して、シンドロームを利用してエラー訂正処理を実行する。
【0005】
一般的に、ECC回路におけるエラー訂正能力の高低は、シンドローム長に比例する。エラー訂正能力を向上させると、シンドローム長も大きくなり符号化率は低下する。符号化率の低下は、結果的にメモリに対する情報データの格納効率の低下を招くことになる。したがって、エラー発生率と情報データの格納効率の両方を考慮して、エラー訂正能力を決定する必要がある。ここで符号化率とは、符号データのデータ長に対する情報データのデータ長の割合で、誤り訂正能力と密接な関係にある。
【0006】
不揮発性半導体メモリにおいて、プロセス技術の微細化によりセルの経時的劣化が顕著になっている。不揮発性半導体メモリを使用し続けると、セルの劣化に伴いエラー発生率が上昇する。使用開始の状態で設定したエラー訂正能力は、時間の経過とともに不十分になる可能性がある。また、経時的に劣化することを想定し、使用開始時からエラー訂正能力を高く設定した場合、符号化率の低下により情報データの格納効率を不必要に低下させることになる。
【0007】
下記特許文献1には、ビットエラー率の変化に応じて、符号化率を変更し、エラー訂正能力を可変させる技術が開示されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特表2010−518523号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
特許文献1では、ビットエラー率の変化に応じて、符号化率を変更することで、メモリの経時的変化に対応している。しかし、符号化率を変更するため、データの管理および運用が煩雑となる。つまり、符号データのデータ長が変化するため、データ構成の再編成などが必要であり、処理が複雑となる。
【0010】
本発明は、データ管理および運用を複雑化させることなく、経時的にエラー発生率の変化する半導体メモリの信頼性を向上させることを課題とする。
【課題を解決するための手段】
【0011】
上記課題を解決するため、請求項1記載の発明は、半導体メモリに対するアクセスを制御するメモリコントローラであって、前記半導体メモリに格納されたデータに対して訂正能力の異なる複数のエラー訂正モードでエラー訂正処理を実行可能なエラー訂正部と、前記半導体メモリに情報データを格納するとき、情報データに対して適用すべきエラー訂正モードを設定する制御部と、前記半導体メモリに対する情報データの読み出しおよび書き込みを行うインタフェースと、を備え、前記エラー訂正部は、前記制御部において設定されたエラー訂正モードに従い、情報データに対するシンドロームを算出するシンドローム算出部と、複数のエラー訂正モードに対して共通の固定符号長が設定されており、情報データ、算出されたシンドロームおよび必要に応じて付加されるダミーデータを含む固定長の符号データを生成する符号データ生成部と、を含み、前記インタフェースは、符号データを前記半導体メモリへ書き込み、前記エラー訂正部は、前記インタフェースによって符号データが読み出されたとき、符号データに含まれるシンドロームを利用して符号データの訂正処理を実行する訂正処理部、を含む。
【0012】
請求項2記載の発明は、請求項1に記載のメモリコントローラであって、前記エラー訂正部は、符号データに含まれるエラービット数を検出する検出部、を含み、前記制御部は、前記検出部により検出されたエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較し、検出されたエラービット数が前記閾値を超えているとき、現在のエラー訂正モードを、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更するモード変更部、を含み、前記シンドローム算出部は、変更されたエラー訂正モードに従い、情報データに対するシンドロームを再度算出し、前記インタフェースは、変更されたシンドロームを前記半導体メモリに格納する。
【0013】
請求項3記載の発明は、請求項2に記載のメモリコントローラであって、前記符号データ生成部は、情報データ、再計算されたシンドロームおよび必要に応じて付加されるダミーデータを含む前記固定符号長の符号データを再度生成し、前記インタフェースは、再計算された符号データにより、前記半導体メモリに格納されている符号データを書き換える。
【0014】
請求項4記載の発明は、請求項2に記載のメモリコントローラであって、前記インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再計算されたシンドロームを格納する。
【0015】
請求項5記載の発明は、請求項1ないし請求項4のいずれかに記載のメモリコントローラであって、前記制御部は、前記半導体メモリに格納されているデータに対する読み出し要求が発生したとき、最初、エラー訂正モードとして、最も訂正能力の低いエラー訂正モードを設定し、前記エラー訂正部は、前記制御部より設定された最も訂正能力の低いエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を実行する。
【0016】
請求項6記載の発明は、請求項5に記載のメモリコントローラであって、前記制御部は、現在設定されているエラー訂正モードに従ったエラー訂正処理が実行された後、エラー訂正処理の正当性を判定し、正当性が否定されたとき、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更し、前記エラー訂正部は、前記制御部より変更されたエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を再度実行する。
【0017】
請求項7記載の発明は、請求項6に記載のメモリコントローラであって、前記エラー訂正部は、3段階以上のエラー訂正モードで動作可能であり、エラー訂正処理の正当性が肯定されるまで、順次、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更する。
【0018】
請求項8記載の発明は、請求項6または請求項7に記載のメモリコントローラであって、前記制御部は、前記半導体メモリに格納する実体データからエラー検出用データを生成する生成部、を含み、前記シンドローム算出部は、実体データにエラー検出用データが付加された情報データに対してシンドロームを算出し、前記制御部は、前記エラー訂正部においてエラー訂正処理が実行された後、エラー検出用データを用いて情報データに含まれるエラーの有無をチェックすることで、前記エラー訂正部におけるエラー訂正処理の正当性を判定する。
【0019】
請求項9記載の発明は、請求項1または請求項2に記載のメモリコントローラであって、前記制御部は、符号データに現在適用させているエラー訂正モードを特定する訂正モード情報を、符号データ内に格納する。
【0020】
請求項10記載の発明は、請求項9に記載のメモリコントローラであって、前記制御部は、重複して複数の訂正モード情報を符号データ内に格納し、符号データを読み出したとき、複数の訂正モード情報から符号データに適用すべきエラー訂正モードを特定する。
【0021】
請求項11記載の発明は、請求項1または請求項2に記載のメモリコントローラであって、前記制御部は、各ページに現在適用させているエラー訂正モードを記録した情報を保持する。
【0022】
請求項12記載の発明は、請求項1または請求項2に記載のメモリコントローラであって、前記制御部は、全ページに現在適用させているエラー訂正モードを記録した情報を保持し、前記エラー訂正部に前記半導体メモリの各ページに共通のエラー訂正モードを適応させる。
【0023】
請求項13記載の発明は、請求項1ないし請求項12に記載のメモリコントローラであって、前記固定符号長は、最もエラー訂正能力の高いエラー訂正モードにおけるシンドローム長を情報データに付加したときの符号長であるメモリコントローラ。
【0024】
請求項14記載の発明は、半導体メモリに対するアクセスを制御するメモリコントローラであって、前記半導体メモリに格納されたデータに対して適用させるエラー訂正処理のモードを設定する制御部と、外部装置から前記半導体メモリに格納された第1データに対する読み出し要求を受けたとき、前記半導体メモリから第1データを読み出す第1インタフェースと、前記第1インタフェースにより読み出された第1データに対して、前記制御部において設定されているエラー訂正モードを用いてエラー訂正処理を実行するエラー訂正部と、前記エラー訂正部において訂正された第1データを格納する訂正データ用バッファと、前記エラー訂正部において訂正された第1データを解析し、前記エラー訂正部におけるエラー訂正処理の正当性を判定する判定部と、前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記訂正データ用バッファに格納された訂正された第1データを前記外部装置に与える第2インタフェースと、を備え、前記制御部は、前記判定部において前記エラー訂正部における訂正処理の正当性が否定されたとき、エラー訂正モードを、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更し、前記エラー訂正部は、第1データに対して、変更されたエラー訂正モードを用いてエラー訂正処理を再度実行し、前記訂正データ用バッファは、変更後のエラー訂正モードで訂正された第1データを格納し、前記判定部は、変更後のエラー訂正モードで訂正された第1データを解析し、前記エラー訂正部における訂正処理の正当性を判定する。
【0025】
請求項15記載の発明は、請求項14に記載のメモリコントローラであって、さらに、前記第1インタフェースにより読み出された第1データを格納する読み出しデータ用バッファ、を備え、前記エラー訂正部は、エラー訂正処理の再処理を行うとき、前記読み出しデータ用バッファに格納されている第1データを利用する。
【0026】
請求項16記載の発明は、請求項14または請求項15に記載のメモリコントローラであって、さらに、前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記エラー訂正部において検出された第1データのエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較する比較部、を備え、前記エラー訂正部は、前記比較部において、第1データに発生したエラービット数が閾値を超えていると判定されたとき、前記訂正データ用バッファに格納されている訂正された第1データから、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに対応したシンドロームを生成し、前記第1インタフェースは、変更されたシンドロームを前記半導体メモリに格納する。
【0027】
請求項17記載の発明は、請求項16に記載のメモリコントローラであって、複数のエラー訂正モードに対して共通の固定符号長が設定されており、第1データは、情報データ、シンドロームおよび必要に応じて付加されるダミーデータを含む前記固定符号長のデータであり、前記エラー訂正部は、情報データ、再計算されたシンドロームおよび必要に応じて付加されるダミーデータを含む固定符号長の符号データを生成し、前記第1インタフェースは、生成された符号データにより、前記半導体メモリに格納されている第1データを書き換える。
【0028】
請求項18記載の発明は、請求項16に記載のメモリコントローラであって、前記第1インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再計算されたシンドロームを格納する。
【発明の効果】
【0029】
本発明のメモリコントローラは、訂正能力の異なる複数のエラー訂正モードを利用する。訂正能力の違いによりシンドローム長は異なるが、必要に応じてダミーデータを利用することで、情報データ、シンドロームおよびダミーデータを含む固定長の符号データを扱う。これにより、データの管理、運用を煩雑にすることなく複数のエラー訂正モードを利用することができる。
【0030】
本発明のメモリコントローラは、訂正能力の異なる複数のエラー訂正モードを利用する。メモリコントローラは、エラー訂正処理後のデータを解析し、エラー訂正処理の正当性を判定することで、各データに適用されているエラー訂正モードを特定する。これにより、各データに適用されているエラー訂正モードに関する情報を保持することなく、各データに対するエラー訂正処理を実行可能である。
【図面の簡単な説明】
【0031】
【図1】本発明の実施の形態に係る情報処理システムの構成を示す機能ブロック図である。
【図2】メモリ4の構成を示す図である。
【図3】エラー訂正モードに応じて設定される第1の実施の形態に係る符号データ50の構成を示す図である。
【図4】メモリコントローラ3の動作を示すフローチャートである。
【図5】メモリコントローラ3の動作を示すフローチャートである。
【図6】メモリコントローラ3の動作を示すフローチャートである。
【図7】メモリ4の各ページに格納されるデータの構造を示す図である。
【図8】エラー訂正モードに応じて設定される第2の実施の形態に係る符号データ50の構成を示す図である。
【図9】エラー訂正モードに応じて設定される第3の実施の形態に係る符号データ50の構成を示す図である。
【図10】エラー訂正モードに応じて設定される第4の実施の形態に係る符号データ50の構成を示す図である。
【図11】第5の実施の形態に係る符号データ50のデータ構成を示す図である。
【図12】第6の実施の形態に係る制御部に格納されたマップ304を示す図である。
【図13】第7の実施の形態に係る制御部に格納されたフラグ305を示す図である。
【発明を実施するための形態】
【0032】
<第1の実施の形態>
以下、図面を参照しつつ、本発明の第1の実施の形態について説明する。
【0033】
{1.全体構成}
図1は、第1の実施の形態に係る情報処理システム100の機能ブロック図である。情報処理システム100は、ホスト装置1と、メモリシステム2とを備える。
【0034】
ホスト装置1は、たとえば、PC(Personal Computer)又は携帯型の端末などである。メモリシステム2は、ホスト装置1に着脱可能なUSB(Universal Serial Bus)メモリや、メモリカードなどである。
【0035】
メモリシステム2は、メモリコントローラ3と、メモリ4とを備える。メモリコントローラ3は、ホスト装置1の要求に応じて、メモリ4に対するデータの書き込み、メモリ4からのデータの読み出しを行う。つまり、メモリコントローラ3は、メモリ4に対するアクセスを制御する。
【0036】
メモリ4は、再書き込み可能な不揮発性の半導体メモリである。本実施の形態において、メモリ4は、NANDフラッシュメモリである。
【0037】
{2.メモリコントローラ3の構成}
以下、メモリコントローラ3の構成について説明する。メモリコントローラ3は、制御部30と、ホストインタフェース31と、メモリインタフェース32と、アドレス変換部33と、ECC(Error Check and Correct)回路34と、第1バッファ35と、第2バッファ36と、判定部37とを備える。
【0038】
制御部30は、メモリコントローラ3の各機能部を制御する。制御部30は、訂正モード設定部301と、比較部302と、出力制御部303とを備えている。訂正モード設定部301は、ECC回路34の動作モードを設定する。比較部302は、ECC回路34におけるエラー訂正処理の正当性を判定する。出力制御部303は、メモリ4から読み出されたデータの出力を制御する。
【0039】
ホストインタフェース31は、ホスト装置1とメモリコントローラ3との間で、コマンドまたはデータの入出力を行うインタフェースである。つまり、ホストインタフェース31は、ホスト装置1から、読み出しコマンドや書き込みコマンドなどを入力する。ホストインタフェース31は、ホスト装置1に対して、メモリ4から読み出したデータなどを出力する。
【0040】
メモリインタフェース32は、メモリコントローラ3とメモリ4との間で、コマンドまたはデータの入出力を行うインタフェースである。つまり、メモリインタフェース32は、メモリ4に対して、コマンド及び書き込み用のデータなどを出力する。メモリインタフェース32は、メモリコントローラ3に対して、メモリ4から読み出したデータなどを出力する。
【0041】
アドレス変換部33は、ホスト装置1からコマンドとともに入力された論理アドレスを、メモリ4の物理アドレスに変換する。アドレス変換部33は、論理アドレスと物理アドレスとの対応を示す変換テーブルを保持し、変換テーブルを用いてアドレスを変換する。
【0042】
ECC回路34は、メモリ4から読み出されたデータのエラーを検出するとともに、検出したエラーを訂正する回路である。本実施の形態のECC回路34は、訂正能力の異なる複数のエラー訂正モードで動作可能である。本実施の形態においては、ECC回路34は、第1〜第3の3つのレベルのエラー訂正モードで動作可能である。第1のエラー訂正モードは、最も訂正能力が低い。第2のエラー訂正モードは、第1のエラー訂正モードよりも訂正能力が高い。第3のエラー訂正モードは、第2のエラー訂正モードよりも訂正能力が高い。第1の実施の形態においては、メモリ4のページごとに個別のエラー訂正モードが設定可能となっている。本実施の形態においては、3段階のエラー訂正モードが用意されているが、4段階以上のモードを用意してもよい。
【0043】
第1バッファ35は、メモリ4から読み出されたデータを一時的に格納する。第2バッファ36は、ECC回路34によりエラー訂正されたデータを格納する。判定部37は、ECC回路34におけるエラー訂正処理の正当性を判定する。具体的には、判定部37は、ハッシュ関数を用いて、ECC回路34におけるエラー訂正処理の正当性を判定する。
【0044】
{3.メモリ4の構成}
図2は、メモリ4の構成を示す図である。具体的には、メモリ4は、1枚のダイで構成される。ダイは、複数のブロックを含む。図2に示す例では、ダイは、J個のブロックを含む。ブロックは、複数のページを含む。図2に示す例では、ブロックは、Z個のページを含む。
【0045】
ページは、メモリ4におけるデータの読み出し単位及び書き込み単位である。メモリコントローラ3は、メモリ4に記録されているデータをページ単位で読み出し、書き込みを指示されたデータをページ単位でメモリ4に書き込むことができる。ブロックは、メモリ4におけるデータの消去単位である。
【0046】
{4.メモリコントローラ3の動作の概略}
以下、メモリコントローラ3の動作の概略を説明する。メモリコントローラ3は、ホスト装置1から読み出しコマンドを入力したとき、メモリ4に対してデータの読み出し処理を実行する。メモリコントローラ3は、読み出しコマンドで指定されたアドレスに基づいて、読み出し対象のページを特定する。
【0047】
メモリ4から読み出されたデータは、ECC回路34および第1バッファ35に与えられる。ECC回路34は、訂正モード設定部301において設定されたエラー訂正モードに従い、読み出しデータに対するエラー訂正処理を実行する。
【0048】
判定部37は、ECC回路34におけるエラー訂正処理の正当性を判定する。エラー訂正処理の正当性が肯定された場合、出力制御部303は、第2バッファ36に格納されているデータをホスト装置1へ出力する。
【0049】
エラー訂正処理の正当性が否定された場合、訂正モード設定部301は、エラー訂正モードを現在よりも訂正能力の高いモードに変更する。ECC回路34は、変更されたエラー訂正モードに従い、第1バッファ35に格納されている読み出しデータに対して再びエラー訂正処理を実行する。
【0050】
変更されたエラー訂正モードによって読み出しデータが訂正されると、再び、エラー訂正後のデータが第2バッファ36に格納される。また、エラー訂正後のデータが判定部37に出力され、判定部37において、ECC回路34におけるエラー訂正処理の正当性が判定される。エラー訂正処理の正当性が肯定された場合、出力制御部303は、第2バッファ36に格納されたデータをホスト装置1へ出力する。エラー訂正処理の正当性が否定された場合、メモリコントローラ3は、さらにエラー訂正モードの訂正能力を向上させる。このように、メモリコントローラ3は、訂正能力の異なる複数のエラー訂正モードで動作可能である。メモリコントローラ3は、エラー訂正処理の正当性が確認されるまで、訂正能力を向上させてエラー訂正処理を繰り返し実行する。
【0051】
{5.符号データ50のデータ構造}
上述したように、本実施の形態においては、ECC回路34は、訂正能力の異なる複数のエラー訂正モードで動作可能である。図3は、本実施の形態における第1〜第3のエラー訂正モードにおける符号データ50のデータ構造を示す図である。
【0052】
第1のエラー訂正モードは、2048Byteの情報データ55に対して12bitのエラー訂正が可能である。第1のエラー訂正モードでは、2048Byteの情報データ55に対して、180bitのシンドローム(S10)が利用される。ただし、180bitのシンドローム(S10)に180bitの“0”のダミーデータを付加し、全体として360bitのシンドローム53としてメモリ4に格納される。
【0053】
図3の下段には、2048Byteの情報データ55(D10)に、180bitのダミーデータ“0”と180bitのシンドローム(S10)が付加された符号データ50のデータ構造が示されている。情報データ55(D10)には、実体データ51とハッシュ値52が含まれる。図中、ハッシュ値52は網掛け表示している。
【0054】
第2のエラー訂正モードは、2048Byteの情報データ55に対して16bitのエラー訂正が可能である。第2のエラー訂正モードでは、2048Byteの情報データ55に対して、240bitのシンドローム(S20)が利用される。ただし、240bitのシンドローム(S20)に120bitの“0”のダミーデータを付加し、全体として360bitのシンドローム53としてメモリ4に格納される。
【0055】
図3の中段には、2048Byteの情報データ55(D10)に、120bitのダミーデータ“0”と240bitのシンドローム(S20)が付加された符号データ50のデータ構造が示されている。
【0056】
第3のエラー訂正モードは、2048Byteの情報データ55に対して24bitのエラー訂正が可能である。第3のエラー訂正モードでは、2048Byteの情報データ55に対して、360bitのシンドローム(S30)が利用される。360bitのシンドローム(S30)は、そのままシンドローム53としてメモリ4に格納される。
【0057】
図3の上段には、2048Byteの情報データ55(D10)に、360bitのシンドローム(S30)が付加された符号データ50のデータ構造が示されている。
【0058】
このように、第1〜第3のエラー訂正モードにおいて、必要となるシンドローム(S10)〜(S30)のビット長は異なる。しかし、本実施の形態においては、ダミーデータを付加することにより、第1〜第3のエラー訂正モードにおいては、共通の固定長のシンドローム53を情報データ55に付加する。これにより、情報データ55とシンドローム53とを含む符号データ50は、エラー訂正モードの種別に関わらず、16744bit(2048Byte+360bit)の固定長のデータとなる。本実施の形態においては、符号データの固定長は、エラー訂正能力が最大である第3のエラー訂正モードのシンドローム長に合わせて設定されている。つまり、第3のエラー訂正モードについては符号データ50にダミーデータは含まれていない。
【0059】
また、図3に示すように、第1〜第3のエラー訂正モードには、それぞれ閾値が設定されている。第1のエラー訂正モードの閾値は10bitである。つまり、ECC回路34が第1のエラー訂正モードで動作中に10bitを超えるビットエラーが検出された場合には、エラー訂正モードを第1から第2に変更する必要性があると判断される。第2のエラー訂正モードの閾値は14bitである。つまり、ECC回路34が第2のエラー訂正モードで動作中に14bitを超えるビットエラーが検出された場合には、エラー訂正モードを第2から第3に変更する必要性があると判断される。これにより、エラー訂正能力を超えるエラーが発生する前に、訂正能力を向上させ、データの信頼性を確保するようにしている。第3のエラー訂正モードの閾値は22bitである。ECC回路34が第3のエラー訂正モードで動作中に22bitを超えるビットエラーが検出された場合には、例えば、メモリコントローラ3は、ホスト装置1に最大エラー閾値を超えたことを通知すればよい。ホスト装置1において、最大エラー発生後の処理方法が判断されればよい。
【0060】
{6.メモリコントローラ3の動作}
以下、メモリコントローラ3が実行する読み出し処理およびエラー訂正モードの変更処理について詳しく説明する。
【0061】
{6.1.読み出し処理}
図4〜図6は、読み出し処理を実行するメモリコントローラ3の動作を示すフローチャートである。メモリコントローラ3は、ホスト装置1により生成されたメモリ4に対するデータ読み出しの要求コマンドを入力する。これにより、図4に示す処理が開始される。読み出しコマンドは、読み出し対象のページの論理アドレスを含む。
【0062】
制御部30が、ホストインタフェース31を介して読み出しコマンドを入力すると、訂正モード設定部301は、まず、エラー訂正モードを第1のエラー訂正モードに設定する(ステップS101)。訂正モード設定部301は、エラー訂正モードが第1のエラー訂正モードに設定されていることを示すモードフラグ91をECC回路34に通知する。これにより、ECC回路34は、第1のエラー訂正モードで動作する状態となる。
【0063】
続いて、メモリコントローラ3は、メモリ4から読み出しコマンドで指定されたページのデータを読み出す。具体的には、アドレス変換部33は、読み出しコマンドで指定されたページの論理アドレスを物理アドレスに変換する(ステップS102)。メモリインタフェース32は、変換された物理アドレスに対する読み出しコマンドをメモリ4に出力する。これにより、メモリ4から読み出しコマンドで指定されたページのデータが読み出される(ステップS103)。
【0064】
メモリインタフェース32は、読み出したデータをECC回路34および第1バッファ35へ出力する(ステップS104)。ECC回路34は、訂正モード設定部301により設定されたエラー訂正モードに基づいて、読み出しデータに対するエラー検出処理を実行する。ECC回路34は、読み出しデータに対して検出したエラーを訂正する処理を実行する(ステップS105)。たとえば、訂正モード設定部301により設定されているエラー訂正モードが第1のエラー訂正モードであれば、符号データ50に含まれる180bitのシンドローム(S10)を利用してエラー訂正処理を実行する。
【0065】
図7は、符号データ50のフォーマットを示す図である。実体データ51は、ホスト装置1により処理されるデータの実体である。ハッシュ値52は、実体データ51のハッシュ値であり、実体データ51に付加されるエラー検出用のデータである。ハッシュ値52は、メモリ4に書き込まれる前に、制御部30においてエラーのない実体データ51から算出される。あるいは、ハッシュ値52は、予め書き込みデータに格納されている。つまり、実体データ51およびハッシュ値52を含む情報データ55が外部から与えられてもよい。シンドローム53は、図3を用いて説明したようにビットエラーの検出および訂正のために用いられるデータである。上述したように、シンドローム53には、実質的なシンドローム(S10)等の他に、ダミーデータが含まれている。メモリ4は、図7に示すフォーマットのデータを各ページに格納する。
【0066】
符号データ50のビットエラーは、メモリ4に符号データ50を書き込む時に発生する場合がある。このエラーは、プログラムディスターブと呼ばれる現象である。または、符号データ50のビットエラーは、メモリ4における符号データ50の周辺領域が繰り返し読み出されることにより発生する場合がある。このエラーは、リードディスターブと呼ばれる現象である。ECC回路34は、符号データ50が有するシンドローム53を用いて、符号データ50のビットエラーの検出及び訂正を行う。エラー訂正された符号データ50は、符号データ60として第2バッファ36および判定部37に出力される(ステップS106)。
【0067】
判定部37は、符号データ60を解析し、ECC回路34におけるエラー訂正処理の正当性を判定する。(ステップS107,S108)。具体的には、判定部37は、予め設定されたハッシュ関数を用いて、符号データ60が有する実体データ61のハッシュ値を計算する(ステップS107)。図7において、符号データ60が有するハッシュ値62は、実体データ61から生成されたデータでなく、ハッシュ値52がエラー訂正されることにより生成されたデータである。
【0068】
判定部37は、ハッシュ値62と、実体データ61から算出したハッシュ値とが一致するか否かを確認することにより(ステップS108)、ECC回路34のエラー訂正処理の正当性を判定する。
【0069】
ECC回路34に適用されたエラー訂正モードが、実際に符号データ50に適用されているエラー訂正モードと一致している場合、ECC回路34は、符号データ50のビットエラーを訂正することができる。この場合、ハッシュ値62と、実体データ61から算出されたハッシュ値とが一致するため(ステップS108においてYes)、判定部37は、実体データ61をホスト装置1に出力することができると判断する。判定部37は、ECC回路34におけるエラー訂正処理の正当性を肯定する正当性フラグ92を制御部30に通知する(図5のステップS201)。
【0070】
ECC回路34は、符号データ50に対するエラー訂正処理を実行した後、符号データ50に発生していたエラービット数の情報93を制御部30に通知する。制御部30は、エラービット数の情報93を入力すると、符号データ50に発生しているエラービット数と、現在のエラー訂正モードにおける閾値とを比較する(ステップS202)。図3に示したように、第1のエラー訂正モードにおける閾値は、10bitであり、第2のエラー訂正モードにおける閾値は14bitである。
【0071】
符号データ50に発生しているエラービット数が、閾値以下の場合(ステップS202でYES)、出力制御部303は、第2バッファ36から実体データ61を取得する。出力制御部303は、ホストインタフェース31を介して、取得した実体データ61をホスト装置1に出力する(ステップS203)。
【0072】
再び、図4のステップS108を参照する。ECC回路34に適用されているエラー訂正モードが、実際に符号データ50に適用されているエラー訂正モードと一致していない場合、ECC回路34は、符号データ50のビットエラーを訂正することができない。
【0073】
この場合、ハッシュ値62と、実体データ61から算出されたハッシュ値とは一致しない(ステップS108においてNo)。判定部37は、実体データ61のエラーが訂正されたことが保証されていないため、実体データ61をホスト装置に出力することができないと判断する。判定部37は、ECC回路34におけるエラー訂正処理の正当性を否定する正当性フラグ92を制御部30に通知する(ステップS109)。
【0074】
制御部30にエラー訂正処理の正当性を否定する正当性フラグ92が入力されると、訂正モード設定部301が、エラー訂正モードの変更を行う(ステップS110)。訂正モード設定部301は、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードにモードを変更する。たとえば、第1のエラー訂正モードで動作しているときには、モードを第2のエラー訂正モードに変更する。第2のエラー訂正モードで動作しているときには、モードを第3のエラー訂正モードに変更する。
【0075】
ここでは、モードが第1から第2のエラー訂正モードに変更された場合を例に説明する。訂正モード設定部301は、エラー訂正モードが第2のエラー訂正モードに設定されていることを示すモードフラグ91をECC回路34に通知する。これにより、ECC回路34は、第2のエラー訂正モードで動作する状態となる。
【0076】
次に、ECC回路34は、第1バッファ35から符号データ50を読み出す(ステップS111)。この符号データ50は、ステップS104において第1バッファ35に書き込まれたデータである。あるいは、メモリインタフェース3が、再度、メモリ4から符号データ50を読み出し、ECC回路34に符号データ50を出力してもよい。この場合であれば、第1バッファ35を不要とすることができる。ECC回路34は、訂正モード設定部301により設定されたエラー訂正モードに基づいて、再び、符号データ50に対するエラーを検出する。ECC回路34は、符号データ50に対して検出したエラーを訂正する処理を実行する(ステップS112)。つまり、変更されたエラー訂正モードに従い、再びエラー訂正処理を実行する。たとえば、訂正モード設定部301により設定されているエラー訂正モードが第2のエラー訂正モードであれば、符号データ50に含まれる240bitのシンドローム(S20)を利用してエラー訂正処理を実行する。
【0077】
エラー訂正処理が終了すると、ステップS106に戻り、ステップS106〜ステップS108の処理を繰り返す。そして、ステップS108においてハッシュ値が一致しなかった場合には、再度ステップS109〜S112の処理を実行し、さらに訂正能力の高いエラー訂正モードを設定し、エラー訂正処理を実行する。
【0078】
このように、本実施の形態においては、最初、エラー訂正能力の最も小さい第1のエラー訂正モードに従いエラー訂正処理を実行した後、エラー訂正処理の正当性が否定された場合には、段階的に、訂正能力の高いエラー訂正モードにモード変更した上でエラー訂正処理を実行する。これにより、各符号データ、つまり各ページに対してそれぞれ異なるエラー訂正モードを適用させているものの、各ページに適応させるエラー訂正モードの情報を保持することなく、各ページのデータを訂正することが可能である。
【0079】
再び、図5のステップS202を参照する。符号データ50に発生しているエラービット数が、閾値を超えている場合(ステップS202でNO)、訂正モード設定部301は、読み出した符号データ50に対応するエラー訂正モードの変更を行う(ステップS301)。訂正モード設定部301は、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードにモード変更する。たとえば、第1から第2へ、あるいは、第2から第3へ、段階的にエラー訂正モードの訂正能力を向上させるようにモード変更を行う。
【0080】
前述したステップS110におけるエラー訂正モードの変更は、読み出されたデータに適用されている正しいエラー訂正モードをサーチするための変更である。これに対して、ステップS301におけるエラー訂正モードの変更は、読み出されたデータに閾値を超えるエラーが検出されたため、読み出されたデータに適用させるエラー訂正モードを変更するための処理である。
【0081】
訂正モード設定部301は、変更されたエラー訂正モードを示すモードフラグ91をECC回路34に通知する。これにより、ECC回路34は、変更されたエラー訂正モードで動作する状態となる。
【0082】
制御部30は、第2バッファ36に格納されているエラー訂正後の情報データ65を読み出す。制御部30は、読み出したエラー訂正後の情報データ65をECC回路34に転送する(ステップS302)。つまり、制御部30は、第2バッファ36に格納されている実体データ61とハッシュ値62とを含む情報データ65を読み出す。第2バッファ36に格納されている実体データ61とハッシュ値62とはステップS108において正当性が認められたデータである。
【0083】
ECC回路34は、第2バッファ36から読み出した実体データ61とハッシュ値62とを含む情報データ65に対して、変更されたエラー訂正モードに従ってシンドロームを算出する(ステップS303)。ECC回路34は、実体データ61、ハッシュ値62および新しく算出されたシンドローム(上述したように、必要に応じてダミーデータが付加された固定長のシンドローム)を含む符号データ60をメモリインタフェース32に与える。制御部30は、符号データ60の書き込みコマンドをアドレス変換部に出力する。アドレス変換部33は、書き込みコマンドで指定された論理アドレスを物理アドレスに変換し、メモリインタフェース32に与える。メモリインタフェース32は、与えられた物理アドレスに対する書き込みコマンドをメモリ4に出力する。これにより、書き込みコマンドで指定されたページに符号データ60が書き込まれる(ステップS304)。ここで、第2のエラー訂正モードにおいては、240bitのシンドローム(S20)に120bitのダミーデータが付加される。
【0084】
最後に、出力制御部303は、第2バッファ36から実体データ61を取得する。出力制御部303は、ホストインタフェース31を介して、取得した実体データ61をホスト装置1に出力する(ステップS305)。
【0085】
このように、本実施の形態においては、ECC回路34は、訂正能力の異なる複数のエラー訂正モードで動作可能である。それぞれのエラー訂正モードで利用されるシンドローム(S10)〜(S30)のデータ長は異なる。つまり、エラー訂正能力が高くなるにつれてシンドローム(S10)〜(S30)のデータ長は大きくなる。しかし、本実施の形態においては、実体的なシンドロームにダミーデータを付加することで、シンドロームとダミーデータを含む固定長のシンドロームを利用している。このため、エラー訂正モードが変更された場合にも、メモリ4に格納される符号データのデータ長が固定長となり、メモリ4の管理および運用が煩雑となることはない。
【0086】
<第2の実施の形態>
図8を参照しながら、本発明の第2の実施の形態について説明する。第2の実施の形態における情報処理システム100の構成およびメモリコントローラ3の動作は、基本的には第1の実施の形態におけるメモリコントローラ3の動作と同様である。ただし、第2の実施の形態の符号データ50のデータ構造は第1の実施の形態とは異なる。図8は、第2の実施の形態における第1〜第3のエラー訂正モードにおける符号データ50のデータ構造を示す図である。
【0087】
第1のエラー訂正モードは、2048Byteの情報データに対して24bitのエラー訂正が可能である。第1のエラー訂正モードでは、2048Byteの情報データ55に対して、360bitのシンドローム(S11)が利用される。ただし、360bitのシンドローム(S11)に1080bitの“0”のダミーデータを付加し、全体として1440bitのシンドローム53がメモリ4に格納される。
【0088】
図8の下段には、2048Byteの情報データ(D11)に、1080bitのダミーデータ“0”と360bitのシンドローム(S11)が付加された符号データ50のデータ構造が示されている。情報データ(D11)は、実体データ51とハッシュ値52とを含む。図中、ハッシュ値52は網掛け表示している。
【0089】
第2のエラー訂正モードは、2048(=1024×2)Byteの情報データ55に対して24×2bitのエラー訂正が可能である。第2のエラー訂正モードでは、1024Byteの情報データ(D21)および(D22)に対して、それぞれ360bitのシンドローム(S21)および(S22)が利用される。つまり、1024Byteの情報データ(D21)および(D22)に対して、それぞれ24bitのエラー訂正が可能である。ただし、720(=360×2)bitのシンドローム(S21)および(S22)に720bitの“0”のダミーデータを付加し、全体として1440bitのシンドローム53としてメモリ4に格納される。
【0090】
図8の中段には、1024Byteの情報データ(D21)および(D22)に、720bitのダミーデータ“0”と、360bitのシンドローム(S21)および(S22)が付加された符号データ50のデータ構造が示されている。情報データ(D21)および(D22)のそれぞれにハッシュ値52が含まれている。
【0091】
第3のエラー訂正モードは、2048(=512×4)Byteの情報データ55に対して24×4bitのエラー訂正が可能である。第3のエラー訂正モードでは、512Byteの情報データ(D31)、(D32)、(D33)および(D34)に対して、それぞれ360bitのシンドローム(S21)、(S22)、(S23)および(S24)が利用される。つまり、第3のエラー訂正モードでは、512Byteの情報データ(D31)、(D32)、(D33)および(D34)に対して、それぞれ24bitのエラー訂正が可能である。
【0092】
図8の上段には、512Byteの情報データ(D31)、(D32)、(D33)および(D34)に、360bitのシンドローム(S31)、(S32)、(S33)および(S34)が付加された符号データ50のデータ構造が示されている。
【0093】
このように、第1〜第3のエラー訂正モードにおいて、必要となるシンドロームのビット長は異なる。しかし、本実施の形態においては、ダミーデータを付加することにより、第1〜第3のエラー訂正モードにおいては、共通の固定長のシンドローム53を情報データ55に付加する。これにより、情報データ55とシンドローム53とを含む符号データ50は、エラー訂正モードの種別に関わらず、17824bit(2048Byte+1440bit)の固定長のデータとなる。
【0094】
また、図8に示すように、第1〜第3のエラー訂正モードには、それぞれ閾値が設定されている。第1のエラー訂正モードの閾値が22bitである。つまり、ECC回路34が第1のエラー訂正モードで動作中に情報データ(D11)に22bitを超えるビットエラーが検出された場合には、エラー訂正モードを第1から第2に変更する必要性があると判断される。第2のエラー訂正モードの閾値が22bitである。つまり、ECC回路34が第2のエラー訂正モードで動作中に情報データ(D21)あるいは(D22)に22bitを超えるビットエラーが検出された場合には、エラー訂正モードを第2から第3に変更する必要性があると判断される。
【0095】
このように第2の実施の形態においては、第1〜第3のエラー訂正モードで同一の閾値を用いている。しかし、シンドロームを割り当てる情報データの単位が異なるため、第1に比べて第2のエラー訂正モードの方がエラー訂正能力は高くなっている。同様に、第2に比べて第3のエラー訂正モードの方がエラー訂正能力は高くなっている。
【0096】
<第3の実施の形態>
図9を参照しながら、本発明の第3の実施の形態について説明する。第3の実施の形態における情報処理システム100の構成およびメモリコントローラ3の動作は、基本的には第1〜第2の実施の形態におけるメモリコントローラ3の動作と同様である。ただし、第3の実施の形態の符号データ50のデータ構造は第1の実施の形態とは異なる。図9は、第3の実施の形態における第1〜第3のエラー訂正モードにおける符号データ50のデータ構造を示す図である。
【0097】
図9と図3を比較すれば分かるように、第1〜第3のエラー訂正モードにおける訂正能力、閾値およびシンドローム(S10)〜(S30)のデータサイズは、第1の実施の形態と同じである。ただし、シンドローム(S10)〜(S30)の格納アドレスが第1の実施の形態とは異なる。
【0098】
図9に示すように、第1のエラー訂正モードにおいては、180bitのシンドローム(S10)が格納される。第2のエラー訂正モードにおいては、240bitのシンドローム(S20)が格納される。第3のエラー訂正モードにおいては、360bitのシンドローム(S30)が格納される。また、シンドローム(S10)、(S20)および(S30)は、それぞれ異なるアドレスに格納されている。
【0099】
第1のエラー訂正モードにおいて、シンドローム(S10)は、780bitのシンドローム53の格納エリアの中で先頭アドレス位置に格納されている。それより後の残りのアドレスにはダミーデータ“1”が格納される。
【0100】
第1から第2にエラー訂正モードが変更されたとき、メモリコントローラ3は、シンドローム(S10)を削除する必要はない。メモリコントローラ3は、シンドローム(S10)に隣接するアドレス位置にシンドローム(S20)を格納する。そして、シンドローム(S20)の格納位置よりも後のアドレス位置にはダミーデータ“1”が格納される。第2のエラー訂正モードにおいて、シンドローム(S10)は格納されたままであるが、無効データとして利用されない。
【0101】
第2から第3にエラー訂正モードが変更されたとき、メモリコントローラ3は、シンドローム(S10)および(S20)を削除する必要はない。メモリコントローラ3は、シンドローム(S20)に隣接するアドレス位置にシンドローム(S30)を格納する。第3のエラー訂正モードにおいて、シンドローム(S10)および(S20)は格納されたままであるが、無効データとして利用されない。
【0102】
このように、第3の実施の形態においては、エラー訂正モードが変更されたとき、変更後のシンドローム(S20)あるいは(S30)を追記していくことができる。つまり、変更対象のシンドロームを含むブロックの消去処理を行わなくてよいため、処理速度の向上と消費電力の低減を図ることができる。
【0103】
<第4の実施の形態>
図10を参照しながら、本発明の第4の実施の形態について説明する。第4の実施の形態における情報処理システム100の構成およびメモリコントローラ3の動作は、基本的には第1〜第3の実施の形態におけるメモリコントローラ3の動作と同様である。ただし、第4の実施の形態の符号データ50のデータ構造は第1の実施の形態とは異なる。図10は、第4の実施の形態における第1〜第3のエラー訂正モードにおける符号データ50のデータ構造を示す図である。
【0104】
図10と図8を比較すれば分かるように、第1〜第3のエラー訂正モードにおける訂正能力、閾値およびシンドローム(S11)、(S21)・・・のデータサイズは、第2の実施の形態と同じである。また、シンドローム(S11)、(S21)・・・を付与する情報データ55の分割単位も第2の実施の形態と同じである。ただし、シンドローム(S11)、(S21)・・・の格納アドレスが第2の実施の形態とは異なる。
【0105】
図10に示すように、第1のエラー訂正モードにおいては、360bitのシンドローム(S11)が格納される。第2のエラー訂正モードにおいては、それぞれ360bitのシンドローム(S21)および(S22)が格納される。第3のエラー訂正モードにおいては、それぞれ360bitのシンドローム(S31)、(S32)、(S33)および(S34)が格納される。また、シンドローム(S11)、(S21)、(S22)、(S31)、(S32)、(S33)および(S34)は、それぞれ異なるアドレスに格納されている。
【0106】
第1のエラー訂正モードにおいて、シンドローム(S11)は、2520bitのシンドローム53の格納エリアの中で先頭アドレス位置に格納されている。それより後の残りのアドレスにはダミーデータ“1”が格納される。
【0107】
第1から第2にエラー訂正モードが変更されたとき、メモリコントローラ3は、シンドローム(S11)を削除する必要はない。メモリコントローラ3は、シンドローム(S11)に隣接するアドレス位置にシンドローム(S21)および(S22)を格納する。そして、シンドローム(S21)の格納位置よりも後のアドレス位置にはダミーデータ“1”が格納される。第2のエラー訂正モードにおいて、シンドローム(S11)は格納されたままであるが、無効データとして利用されない。
【0108】
第2から第3にエラー訂正モードが変更されたとき、メモリコントローラ3は、シンドローム(S11)、(S21)および(S22)を削除する必要はない。メモリコントローラ3は、シンドローム(S21)に隣接するアドレス位置にシンドローム(S31)、(S32)、(S33)および(S34)を格納する。第3のエラー訂正モードにおいて、シンドローム(S11)、(S21)および(S22)は格納されたままであるが、無効データとして利用されない。
【0109】
このように、第4の実施の形態においては、エラー訂正モードが変更されたとき、変更後のシンドロームを追記していくことができる。つまり、変更対象のシンドロームを含むブロックの消去処理を行わなくてよいため、処理速度の向上と消費電力の低減を図ることができる。
【0110】
<第5の実施の形態>
本発明の第5の実施の形態について説明する。第1〜第4の実施の形態においては、メモリコントローラ3は、第1のエラー訂正モードから順番にエラー訂正モードを実行した。そして、エラー訂正処理の正当性を確認することによって、各符号データ、つまりは各ページに適用されているエラー訂正モードを特定することができた。
【0111】
これに対して、第5の実施の形態においては、図11に示すように、符号データ50に訂正モードフラグ56を格納する。メモリコントローラ3は、読み出した符号データ50に含まれる訂正モードフラグ56を参照することで、各符号データ、つまりは各ページに適用されているエラー訂正モードを特定することができる。
【0112】
訂正モードフラグ56自体にエラーが発生している場合、誤ってエラー訂正モードを判定する可能性がある。そこで、本実施の形態においては、符号データに、複数(この例では3つ)の重複した訂正モードフラグ56を格納するようにしている。つまり、同じ値を持つ訂正モードフラグ56を3つ重複させて格納するのである。メモリコントローラ3は、読み出した符号データ50から3つの訂正モードフラグ56を取得する。つまり、訂正モードフラグ56は、訂正処理が行われる前の符号データ50から取得される。メモリコントローラ3は、3つの訂正モードフラグ56が示しているエラー訂正モードを多数決により決定する。たとえば、2つの訂正モードフラグ56が第1のエラー訂正モードを示していれば、残りの1つの訂正モードフラグ56が第2のエラー訂正モードを示していても、適用すべきエラー訂正モードは第1のエラー訂正モードであると判定することができる。
【0113】
<第6の実施の形態>
本発明の第6の実施の形態について説明する。第1〜第4の実施の形態においては、メモリコントローラ3は、第1のエラー訂正モードから順番にエラー訂正モードを実行した。そして、エラー訂正処理の正当性を確認することによって、各符号データ、つまりは各ページに適用されているエラー訂正モードを特定することができた。
【0114】
これに対して、第6の実施の形態においては、図12に示すように、制御部30は、メモリ4の各ページに適用されているエラー訂正モードのマップ304を保持している。制御部30は、エラー訂正モードが変更されたときは、マップ304を更新する。メモリコントローラ3は、マップ304を参照することで、各符号データ、つまり各ページに適用すべきエラー訂正モードを特定することができる。
【0115】
<第7の実施の形態>
本発明の第7の実施の形態について説明する。第1〜第6の実施の形態においては、メモリ4に格納される符号データごとに、つまり、ページごとにエラー訂正モードを設定した。第7の実施の形態においては、全ページに対して共通のエラー訂正モードを適用させる。
【0116】
図13に示すように、制御部30は、メモリ4の全ページに適用されている共通のエラー訂正モードのフラグ305を保持している。制御部30は、エラー訂正モードが変更されたときは、フラグ305を更新する。メモリコントローラ3は、フラグ305を参照することで、現在全符号データ、つまり全ページに適用すべきエラー訂正モードを特定することができる。
【符号の説明】
【0117】
1 ホスト装置
2 メモリシステム
3 メモリコントローラ
4 メモリ
30 制御部
31 ホストインタフェース
32 メモリインタフェース
33 アドレス変換部
34 ECC回路
35 第1バッファ
36 第2バッファ
37 判定部
301 訂正モード設定部
302 比較部
303 出力制御部
【技術分野】
【0001】
本発明は、半導体メモリに格納されたデータに対するエラー訂正技術に関する。
【背景技術】
【0002】
各種データの記憶媒体として、NANDフラッシュメモリ等の不揮発性半導体メモリが広く利用されている。プロセス技術の微細化等により、不揮発性半導体メモリの高集積化がますます進んでいる。
【0003】
不揮発性半導体メモリにデータを書き込んだとき、書き込まれたデータにエラーが発生する場合がある。いわゆるプログラムディスターブと呼ばれる現象である。あるいは不揮発性半導体メモリから繰り返しデータが読み出されることにより、格納されたデータにエラーが発生する場合がある。いわゆるリードディスターブと呼ばれる現象である。したがって、NANDフラッシュメモリを含め、不揮発性半導体メモリを利用するためには、エラー訂正機能の装備が不可欠である。
【0004】
エラー訂正機能を実現する回路として、ECC(Error Check And Correction)回路が利用されている。ECC回路は、メモリアレイに格納する情報データからシンドロームを算出する。メモリアレイには、情報データにシンドロームが付加された符号データが格納される。ECC回路は、メモリアレイから読み出された符号データに対して、シンドロームを利用してエラー訂正処理を実行する。
【0005】
一般的に、ECC回路におけるエラー訂正能力の高低は、シンドローム長に比例する。エラー訂正能力を向上させると、シンドローム長も大きくなり符号化率は低下する。符号化率の低下は、結果的にメモリに対する情報データの格納効率の低下を招くことになる。したがって、エラー発生率と情報データの格納効率の両方を考慮して、エラー訂正能力を決定する必要がある。ここで符号化率とは、符号データのデータ長に対する情報データのデータ長の割合で、誤り訂正能力と密接な関係にある。
【0006】
不揮発性半導体メモリにおいて、プロセス技術の微細化によりセルの経時的劣化が顕著になっている。不揮発性半導体メモリを使用し続けると、セルの劣化に伴いエラー発生率が上昇する。使用開始の状態で設定したエラー訂正能力は、時間の経過とともに不十分になる可能性がある。また、経時的に劣化することを想定し、使用開始時からエラー訂正能力を高く設定した場合、符号化率の低下により情報データの格納効率を不必要に低下させることになる。
【0007】
下記特許文献1には、ビットエラー率の変化に応じて、符号化率を変更し、エラー訂正能力を可変させる技術が開示されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特表2010−518523号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
特許文献1では、ビットエラー率の変化に応じて、符号化率を変更することで、メモリの経時的変化に対応している。しかし、符号化率を変更するため、データの管理および運用が煩雑となる。つまり、符号データのデータ長が変化するため、データ構成の再編成などが必要であり、処理が複雑となる。
【0010】
本発明は、データ管理および運用を複雑化させることなく、経時的にエラー発生率の変化する半導体メモリの信頼性を向上させることを課題とする。
【課題を解決するための手段】
【0011】
上記課題を解決するため、請求項1記載の発明は、半導体メモリに対するアクセスを制御するメモリコントローラであって、前記半導体メモリに格納されたデータに対して訂正能力の異なる複数のエラー訂正モードでエラー訂正処理を実行可能なエラー訂正部と、前記半導体メモリに情報データを格納するとき、情報データに対して適用すべきエラー訂正モードを設定する制御部と、前記半導体メモリに対する情報データの読み出しおよび書き込みを行うインタフェースと、を備え、前記エラー訂正部は、前記制御部において設定されたエラー訂正モードに従い、情報データに対するシンドロームを算出するシンドローム算出部と、複数のエラー訂正モードに対して共通の固定符号長が設定されており、情報データ、算出されたシンドロームおよび必要に応じて付加されるダミーデータを含む固定長の符号データを生成する符号データ生成部と、を含み、前記インタフェースは、符号データを前記半導体メモリへ書き込み、前記エラー訂正部は、前記インタフェースによって符号データが読み出されたとき、符号データに含まれるシンドロームを利用して符号データの訂正処理を実行する訂正処理部、を含む。
【0012】
請求項2記載の発明は、請求項1に記載のメモリコントローラであって、前記エラー訂正部は、符号データに含まれるエラービット数を検出する検出部、を含み、前記制御部は、前記検出部により検出されたエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較し、検出されたエラービット数が前記閾値を超えているとき、現在のエラー訂正モードを、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更するモード変更部、を含み、前記シンドローム算出部は、変更されたエラー訂正モードに従い、情報データに対するシンドロームを再度算出し、前記インタフェースは、変更されたシンドロームを前記半導体メモリに格納する。
【0013】
請求項3記載の発明は、請求項2に記載のメモリコントローラであって、前記符号データ生成部は、情報データ、再計算されたシンドロームおよび必要に応じて付加されるダミーデータを含む前記固定符号長の符号データを再度生成し、前記インタフェースは、再計算された符号データにより、前記半導体メモリに格納されている符号データを書き換える。
【0014】
請求項4記載の発明は、請求項2に記載のメモリコントローラであって、前記インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再計算されたシンドロームを格納する。
【0015】
請求項5記載の発明は、請求項1ないし請求項4のいずれかに記載のメモリコントローラであって、前記制御部は、前記半導体メモリに格納されているデータに対する読み出し要求が発生したとき、最初、エラー訂正モードとして、最も訂正能力の低いエラー訂正モードを設定し、前記エラー訂正部は、前記制御部より設定された最も訂正能力の低いエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を実行する。
【0016】
請求項6記載の発明は、請求項5に記載のメモリコントローラであって、前記制御部は、現在設定されているエラー訂正モードに従ったエラー訂正処理が実行された後、エラー訂正処理の正当性を判定し、正当性が否定されたとき、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更し、前記エラー訂正部は、前記制御部より変更されたエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を再度実行する。
【0017】
請求項7記載の発明は、請求項6に記載のメモリコントローラであって、前記エラー訂正部は、3段階以上のエラー訂正モードで動作可能であり、エラー訂正処理の正当性が肯定されるまで、順次、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更する。
【0018】
請求項8記載の発明は、請求項6または請求項7に記載のメモリコントローラであって、前記制御部は、前記半導体メモリに格納する実体データからエラー検出用データを生成する生成部、を含み、前記シンドローム算出部は、実体データにエラー検出用データが付加された情報データに対してシンドロームを算出し、前記制御部は、前記エラー訂正部においてエラー訂正処理が実行された後、エラー検出用データを用いて情報データに含まれるエラーの有無をチェックすることで、前記エラー訂正部におけるエラー訂正処理の正当性を判定する。
【0019】
請求項9記載の発明は、請求項1または請求項2に記載のメモリコントローラであって、前記制御部は、符号データに現在適用させているエラー訂正モードを特定する訂正モード情報を、符号データ内に格納する。
【0020】
請求項10記載の発明は、請求項9に記載のメモリコントローラであって、前記制御部は、重複して複数の訂正モード情報を符号データ内に格納し、符号データを読み出したとき、複数の訂正モード情報から符号データに適用すべきエラー訂正モードを特定する。
【0021】
請求項11記載の発明は、請求項1または請求項2に記載のメモリコントローラであって、前記制御部は、各ページに現在適用させているエラー訂正モードを記録した情報を保持する。
【0022】
請求項12記載の発明は、請求項1または請求項2に記載のメモリコントローラであって、前記制御部は、全ページに現在適用させているエラー訂正モードを記録した情報を保持し、前記エラー訂正部に前記半導体メモリの各ページに共通のエラー訂正モードを適応させる。
【0023】
請求項13記載の発明は、請求項1ないし請求項12に記載のメモリコントローラであって、前記固定符号長は、最もエラー訂正能力の高いエラー訂正モードにおけるシンドローム長を情報データに付加したときの符号長であるメモリコントローラ。
【0024】
請求項14記載の発明は、半導体メモリに対するアクセスを制御するメモリコントローラであって、前記半導体メモリに格納されたデータに対して適用させるエラー訂正処理のモードを設定する制御部と、外部装置から前記半導体メモリに格納された第1データに対する読み出し要求を受けたとき、前記半導体メモリから第1データを読み出す第1インタフェースと、前記第1インタフェースにより読み出された第1データに対して、前記制御部において設定されているエラー訂正モードを用いてエラー訂正処理を実行するエラー訂正部と、前記エラー訂正部において訂正された第1データを格納する訂正データ用バッファと、前記エラー訂正部において訂正された第1データを解析し、前記エラー訂正部におけるエラー訂正処理の正当性を判定する判定部と、前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記訂正データ用バッファに格納された訂正された第1データを前記外部装置に与える第2インタフェースと、を備え、前記制御部は、前記判定部において前記エラー訂正部における訂正処理の正当性が否定されたとき、エラー訂正モードを、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更し、前記エラー訂正部は、第1データに対して、変更されたエラー訂正モードを用いてエラー訂正処理を再度実行し、前記訂正データ用バッファは、変更後のエラー訂正モードで訂正された第1データを格納し、前記判定部は、変更後のエラー訂正モードで訂正された第1データを解析し、前記エラー訂正部における訂正処理の正当性を判定する。
【0025】
請求項15記載の発明は、請求項14に記載のメモリコントローラであって、さらに、前記第1インタフェースにより読み出された第1データを格納する読み出しデータ用バッファ、を備え、前記エラー訂正部は、エラー訂正処理の再処理を行うとき、前記読み出しデータ用バッファに格納されている第1データを利用する。
【0026】
請求項16記載の発明は、請求項14または請求項15に記載のメモリコントローラであって、さらに、前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記エラー訂正部において検出された第1データのエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較する比較部、を備え、前記エラー訂正部は、前記比較部において、第1データに発生したエラービット数が閾値を超えていると判定されたとき、前記訂正データ用バッファに格納されている訂正された第1データから、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに対応したシンドロームを生成し、前記第1インタフェースは、変更されたシンドロームを前記半導体メモリに格納する。
【0027】
請求項17記載の発明は、請求項16に記載のメモリコントローラであって、複数のエラー訂正モードに対して共通の固定符号長が設定されており、第1データは、情報データ、シンドロームおよび必要に応じて付加されるダミーデータを含む前記固定符号長のデータであり、前記エラー訂正部は、情報データ、再計算されたシンドロームおよび必要に応じて付加されるダミーデータを含む固定符号長の符号データを生成し、前記第1インタフェースは、生成された符号データにより、前記半導体メモリに格納されている第1データを書き換える。
【0028】
請求項18記載の発明は、請求項16に記載のメモリコントローラであって、前記第1インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再計算されたシンドロームを格納する。
【発明の効果】
【0029】
本発明のメモリコントローラは、訂正能力の異なる複数のエラー訂正モードを利用する。訂正能力の違いによりシンドローム長は異なるが、必要に応じてダミーデータを利用することで、情報データ、シンドロームおよびダミーデータを含む固定長の符号データを扱う。これにより、データの管理、運用を煩雑にすることなく複数のエラー訂正モードを利用することができる。
【0030】
本発明のメモリコントローラは、訂正能力の異なる複数のエラー訂正モードを利用する。メモリコントローラは、エラー訂正処理後のデータを解析し、エラー訂正処理の正当性を判定することで、各データに適用されているエラー訂正モードを特定する。これにより、各データに適用されているエラー訂正モードに関する情報を保持することなく、各データに対するエラー訂正処理を実行可能である。
【図面の簡単な説明】
【0031】
【図1】本発明の実施の形態に係る情報処理システムの構成を示す機能ブロック図である。
【図2】メモリ4の構成を示す図である。
【図3】エラー訂正モードに応じて設定される第1の実施の形態に係る符号データ50の構成を示す図である。
【図4】メモリコントローラ3の動作を示すフローチャートである。
【図5】メモリコントローラ3の動作を示すフローチャートである。
【図6】メモリコントローラ3の動作を示すフローチャートである。
【図7】メモリ4の各ページに格納されるデータの構造を示す図である。
【図8】エラー訂正モードに応じて設定される第2の実施の形態に係る符号データ50の構成を示す図である。
【図9】エラー訂正モードに応じて設定される第3の実施の形態に係る符号データ50の構成を示す図である。
【図10】エラー訂正モードに応じて設定される第4の実施の形態に係る符号データ50の構成を示す図である。
【図11】第5の実施の形態に係る符号データ50のデータ構成を示す図である。
【図12】第6の実施の形態に係る制御部に格納されたマップ304を示す図である。
【図13】第7の実施の形態に係る制御部に格納されたフラグ305を示す図である。
【発明を実施するための形態】
【0032】
<第1の実施の形態>
以下、図面を参照しつつ、本発明の第1の実施の形態について説明する。
【0033】
{1.全体構成}
図1は、第1の実施の形態に係る情報処理システム100の機能ブロック図である。情報処理システム100は、ホスト装置1と、メモリシステム2とを備える。
【0034】
ホスト装置1は、たとえば、PC(Personal Computer)又は携帯型の端末などである。メモリシステム2は、ホスト装置1に着脱可能なUSB(Universal Serial Bus)メモリや、メモリカードなどである。
【0035】
メモリシステム2は、メモリコントローラ3と、メモリ4とを備える。メモリコントローラ3は、ホスト装置1の要求に応じて、メモリ4に対するデータの書き込み、メモリ4からのデータの読み出しを行う。つまり、メモリコントローラ3は、メモリ4に対するアクセスを制御する。
【0036】
メモリ4は、再書き込み可能な不揮発性の半導体メモリである。本実施の形態において、メモリ4は、NANDフラッシュメモリである。
【0037】
{2.メモリコントローラ3の構成}
以下、メモリコントローラ3の構成について説明する。メモリコントローラ3は、制御部30と、ホストインタフェース31と、メモリインタフェース32と、アドレス変換部33と、ECC(Error Check and Correct)回路34と、第1バッファ35と、第2バッファ36と、判定部37とを備える。
【0038】
制御部30は、メモリコントローラ3の各機能部を制御する。制御部30は、訂正モード設定部301と、比較部302と、出力制御部303とを備えている。訂正モード設定部301は、ECC回路34の動作モードを設定する。比較部302は、ECC回路34におけるエラー訂正処理の正当性を判定する。出力制御部303は、メモリ4から読み出されたデータの出力を制御する。
【0039】
ホストインタフェース31は、ホスト装置1とメモリコントローラ3との間で、コマンドまたはデータの入出力を行うインタフェースである。つまり、ホストインタフェース31は、ホスト装置1から、読み出しコマンドや書き込みコマンドなどを入力する。ホストインタフェース31は、ホスト装置1に対して、メモリ4から読み出したデータなどを出力する。
【0040】
メモリインタフェース32は、メモリコントローラ3とメモリ4との間で、コマンドまたはデータの入出力を行うインタフェースである。つまり、メモリインタフェース32は、メモリ4に対して、コマンド及び書き込み用のデータなどを出力する。メモリインタフェース32は、メモリコントローラ3に対して、メモリ4から読み出したデータなどを出力する。
【0041】
アドレス変換部33は、ホスト装置1からコマンドとともに入力された論理アドレスを、メモリ4の物理アドレスに変換する。アドレス変換部33は、論理アドレスと物理アドレスとの対応を示す変換テーブルを保持し、変換テーブルを用いてアドレスを変換する。
【0042】
ECC回路34は、メモリ4から読み出されたデータのエラーを検出するとともに、検出したエラーを訂正する回路である。本実施の形態のECC回路34は、訂正能力の異なる複数のエラー訂正モードで動作可能である。本実施の形態においては、ECC回路34は、第1〜第3の3つのレベルのエラー訂正モードで動作可能である。第1のエラー訂正モードは、最も訂正能力が低い。第2のエラー訂正モードは、第1のエラー訂正モードよりも訂正能力が高い。第3のエラー訂正モードは、第2のエラー訂正モードよりも訂正能力が高い。第1の実施の形態においては、メモリ4のページごとに個別のエラー訂正モードが設定可能となっている。本実施の形態においては、3段階のエラー訂正モードが用意されているが、4段階以上のモードを用意してもよい。
【0043】
第1バッファ35は、メモリ4から読み出されたデータを一時的に格納する。第2バッファ36は、ECC回路34によりエラー訂正されたデータを格納する。判定部37は、ECC回路34におけるエラー訂正処理の正当性を判定する。具体的には、判定部37は、ハッシュ関数を用いて、ECC回路34におけるエラー訂正処理の正当性を判定する。
【0044】
{3.メモリ4の構成}
図2は、メモリ4の構成を示す図である。具体的には、メモリ4は、1枚のダイで構成される。ダイは、複数のブロックを含む。図2に示す例では、ダイは、J個のブロックを含む。ブロックは、複数のページを含む。図2に示す例では、ブロックは、Z個のページを含む。
【0045】
ページは、メモリ4におけるデータの読み出し単位及び書き込み単位である。メモリコントローラ3は、メモリ4に記録されているデータをページ単位で読み出し、書き込みを指示されたデータをページ単位でメモリ4に書き込むことができる。ブロックは、メモリ4におけるデータの消去単位である。
【0046】
{4.メモリコントローラ3の動作の概略}
以下、メモリコントローラ3の動作の概略を説明する。メモリコントローラ3は、ホスト装置1から読み出しコマンドを入力したとき、メモリ4に対してデータの読み出し処理を実行する。メモリコントローラ3は、読み出しコマンドで指定されたアドレスに基づいて、読み出し対象のページを特定する。
【0047】
メモリ4から読み出されたデータは、ECC回路34および第1バッファ35に与えられる。ECC回路34は、訂正モード設定部301において設定されたエラー訂正モードに従い、読み出しデータに対するエラー訂正処理を実行する。
【0048】
判定部37は、ECC回路34におけるエラー訂正処理の正当性を判定する。エラー訂正処理の正当性が肯定された場合、出力制御部303は、第2バッファ36に格納されているデータをホスト装置1へ出力する。
【0049】
エラー訂正処理の正当性が否定された場合、訂正モード設定部301は、エラー訂正モードを現在よりも訂正能力の高いモードに変更する。ECC回路34は、変更されたエラー訂正モードに従い、第1バッファ35に格納されている読み出しデータに対して再びエラー訂正処理を実行する。
【0050】
変更されたエラー訂正モードによって読み出しデータが訂正されると、再び、エラー訂正後のデータが第2バッファ36に格納される。また、エラー訂正後のデータが判定部37に出力され、判定部37において、ECC回路34におけるエラー訂正処理の正当性が判定される。エラー訂正処理の正当性が肯定された場合、出力制御部303は、第2バッファ36に格納されたデータをホスト装置1へ出力する。エラー訂正処理の正当性が否定された場合、メモリコントローラ3は、さらにエラー訂正モードの訂正能力を向上させる。このように、メモリコントローラ3は、訂正能力の異なる複数のエラー訂正モードで動作可能である。メモリコントローラ3は、エラー訂正処理の正当性が確認されるまで、訂正能力を向上させてエラー訂正処理を繰り返し実行する。
【0051】
{5.符号データ50のデータ構造}
上述したように、本実施の形態においては、ECC回路34は、訂正能力の異なる複数のエラー訂正モードで動作可能である。図3は、本実施の形態における第1〜第3のエラー訂正モードにおける符号データ50のデータ構造を示す図である。
【0052】
第1のエラー訂正モードは、2048Byteの情報データ55に対して12bitのエラー訂正が可能である。第1のエラー訂正モードでは、2048Byteの情報データ55に対して、180bitのシンドローム(S10)が利用される。ただし、180bitのシンドローム(S10)に180bitの“0”のダミーデータを付加し、全体として360bitのシンドローム53としてメモリ4に格納される。
【0053】
図3の下段には、2048Byteの情報データ55(D10)に、180bitのダミーデータ“0”と180bitのシンドローム(S10)が付加された符号データ50のデータ構造が示されている。情報データ55(D10)には、実体データ51とハッシュ値52が含まれる。図中、ハッシュ値52は網掛け表示している。
【0054】
第2のエラー訂正モードは、2048Byteの情報データ55に対して16bitのエラー訂正が可能である。第2のエラー訂正モードでは、2048Byteの情報データ55に対して、240bitのシンドローム(S20)が利用される。ただし、240bitのシンドローム(S20)に120bitの“0”のダミーデータを付加し、全体として360bitのシンドローム53としてメモリ4に格納される。
【0055】
図3の中段には、2048Byteの情報データ55(D10)に、120bitのダミーデータ“0”と240bitのシンドローム(S20)が付加された符号データ50のデータ構造が示されている。
【0056】
第3のエラー訂正モードは、2048Byteの情報データ55に対して24bitのエラー訂正が可能である。第3のエラー訂正モードでは、2048Byteの情報データ55に対して、360bitのシンドローム(S30)が利用される。360bitのシンドローム(S30)は、そのままシンドローム53としてメモリ4に格納される。
【0057】
図3の上段には、2048Byteの情報データ55(D10)に、360bitのシンドローム(S30)が付加された符号データ50のデータ構造が示されている。
【0058】
このように、第1〜第3のエラー訂正モードにおいて、必要となるシンドローム(S10)〜(S30)のビット長は異なる。しかし、本実施の形態においては、ダミーデータを付加することにより、第1〜第3のエラー訂正モードにおいては、共通の固定長のシンドローム53を情報データ55に付加する。これにより、情報データ55とシンドローム53とを含む符号データ50は、エラー訂正モードの種別に関わらず、16744bit(2048Byte+360bit)の固定長のデータとなる。本実施の形態においては、符号データの固定長は、エラー訂正能力が最大である第3のエラー訂正モードのシンドローム長に合わせて設定されている。つまり、第3のエラー訂正モードについては符号データ50にダミーデータは含まれていない。
【0059】
また、図3に示すように、第1〜第3のエラー訂正モードには、それぞれ閾値が設定されている。第1のエラー訂正モードの閾値は10bitである。つまり、ECC回路34が第1のエラー訂正モードで動作中に10bitを超えるビットエラーが検出された場合には、エラー訂正モードを第1から第2に変更する必要性があると判断される。第2のエラー訂正モードの閾値は14bitである。つまり、ECC回路34が第2のエラー訂正モードで動作中に14bitを超えるビットエラーが検出された場合には、エラー訂正モードを第2から第3に変更する必要性があると判断される。これにより、エラー訂正能力を超えるエラーが発生する前に、訂正能力を向上させ、データの信頼性を確保するようにしている。第3のエラー訂正モードの閾値は22bitである。ECC回路34が第3のエラー訂正モードで動作中に22bitを超えるビットエラーが検出された場合には、例えば、メモリコントローラ3は、ホスト装置1に最大エラー閾値を超えたことを通知すればよい。ホスト装置1において、最大エラー発生後の処理方法が判断されればよい。
【0060】
{6.メモリコントローラ3の動作}
以下、メモリコントローラ3が実行する読み出し処理およびエラー訂正モードの変更処理について詳しく説明する。
【0061】
{6.1.読み出し処理}
図4〜図6は、読み出し処理を実行するメモリコントローラ3の動作を示すフローチャートである。メモリコントローラ3は、ホスト装置1により生成されたメモリ4に対するデータ読み出しの要求コマンドを入力する。これにより、図4に示す処理が開始される。読み出しコマンドは、読み出し対象のページの論理アドレスを含む。
【0062】
制御部30が、ホストインタフェース31を介して読み出しコマンドを入力すると、訂正モード設定部301は、まず、エラー訂正モードを第1のエラー訂正モードに設定する(ステップS101)。訂正モード設定部301は、エラー訂正モードが第1のエラー訂正モードに設定されていることを示すモードフラグ91をECC回路34に通知する。これにより、ECC回路34は、第1のエラー訂正モードで動作する状態となる。
【0063】
続いて、メモリコントローラ3は、メモリ4から読み出しコマンドで指定されたページのデータを読み出す。具体的には、アドレス変換部33は、読み出しコマンドで指定されたページの論理アドレスを物理アドレスに変換する(ステップS102)。メモリインタフェース32は、変換された物理アドレスに対する読み出しコマンドをメモリ4に出力する。これにより、メモリ4から読み出しコマンドで指定されたページのデータが読み出される(ステップS103)。
【0064】
メモリインタフェース32は、読み出したデータをECC回路34および第1バッファ35へ出力する(ステップS104)。ECC回路34は、訂正モード設定部301により設定されたエラー訂正モードに基づいて、読み出しデータに対するエラー検出処理を実行する。ECC回路34は、読み出しデータに対して検出したエラーを訂正する処理を実行する(ステップS105)。たとえば、訂正モード設定部301により設定されているエラー訂正モードが第1のエラー訂正モードであれば、符号データ50に含まれる180bitのシンドローム(S10)を利用してエラー訂正処理を実行する。
【0065】
図7は、符号データ50のフォーマットを示す図である。実体データ51は、ホスト装置1により処理されるデータの実体である。ハッシュ値52は、実体データ51のハッシュ値であり、実体データ51に付加されるエラー検出用のデータである。ハッシュ値52は、メモリ4に書き込まれる前に、制御部30においてエラーのない実体データ51から算出される。あるいは、ハッシュ値52は、予め書き込みデータに格納されている。つまり、実体データ51およびハッシュ値52を含む情報データ55が外部から与えられてもよい。シンドローム53は、図3を用いて説明したようにビットエラーの検出および訂正のために用いられるデータである。上述したように、シンドローム53には、実質的なシンドローム(S10)等の他に、ダミーデータが含まれている。メモリ4は、図7に示すフォーマットのデータを各ページに格納する。
【0066】
符号データ50のビットエラーは、メモリ4に符号データ50を書き込む時に発生する場合がある。このエラーは、プログラムディスターブと呼ばれる現象である。または、符号データ50のビットエラーは、メモリ4における符号データ50の周辺領域が繰り返し読み出されることにより発生する場合がある。このエラーは、リードディスターブと呼ばれる現象である。ECC回路34は、符号データ50が有するシンドローム53を用いて、符号データ50のビットエラーの検出及び訂正を行う。エラー訂正された符号データ50は、符号データ60として第2バッファ36および判定部37に出力される(ステップS106)。
【0067】
判定部37は、符号データ60を解析し、ECC回路34におけるエラー訂正処理の正当性を判定する。(ステップS107,S108)。具体的には、判定部37は、予め設定されたハッシュ関数を用いて、符号データ60が有する実体データ61のハッシュ値を計算する(ステップS107)。図7において、符号データ60が有するハッシュ値62は、実体データ61から生成されたデータでなく、ハッシュ値52がエラー訂正されることにより生成されたデータである。
【0068】
判定部37は、ハッシュ値62と、実体データ61から算出したハッシュ値とが一致するか否かを確認することにより(ステップS108)、ECC回路34のエラー訂正処理の正当性を判定する。
【0069】
ECC回路34に適用されたエラー訂正モードが、実際に符号データ50に適用されているエラー訂正モードと一致している場合、ECC回路34は、符号データ50のビットエラーを訂正することができる。この場合、ハッシュ値62と、実体データ61から算出されたハッシュ値とが一致するため(ステップS108においてYes)、判定部37は、実体データ61をホスト装置1に出力することができると判断する。判定部37は、ECC回路34におけるエラー訂正処理の正当性を肯定する正当性フラグ92を制御部30に通知する(図5のステップS201)。
【0070】
ECC回路34は、符号データ50に対するエラー訂正処理を実行した後、符号データ50に発生していたエラービット数の情報93を制御部30に通知する。制御部30は、エラービット数の情報93を入力すると、符号データ50に発生しているエラービット数と、現在のエラー訂正モードにおける閾値とを比較する(ステップS202)。図3に示したように、第1のエラー訂正モードにおける閾値は、10bitであり、第2のエラー訂正モードにおける閾値は14bitである。
【0071】
符号データ50に発生しているエラービット数が、閾値以下の場合(ステップS202でYES)、出力制御部303は、第2バッファ36から実体データ61を取得する。出力制御部303は、ホストインタフェース31を介して、取得した実体データ61をホスト装置1に出力する(ステップS203)。
【0072】
再び、図4のステップS108を参照する。ECC回路34に適用されているエラー訂正モードが、実際に符号データ50に適用されているエラー訂正モードと一致していない場合、ECC回路34は、符号データ50のビットエラーを訂正することができない。
【0073】
この場合、ハッシュ値62と、実体データ61から算出されたハッシュ値とは一致しない(ステップS108においてNo)。判定部37は、実体データ61のエラーが訂正されたことが保証されていないため、実体データ61をホスト装置に出力することができないと判断する。判定部37は、ECC回路34におけるエラー訂正処理の正当性を否定する正当性フラグ92を制御部30に通知する(ステップS109)。
【0074】
制御部30にエラー訂正処理の正当性を否定する正当性フラグ92が入力されると、訂正モード設定部301が、エラー訂正モードの変更を行う(ステップS110)。訂正モード設定部301は、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードにモードを変更する。たとえば、第1のエラー訂正モードで動作しているときには、モードを第2のエラー訂正モードに変更する。第2のエラー訂正モードで動作しているときには、モードを第3のエラー訂正モードに変更する。
【0075】
ここでは、モードが第1から第2のエラー訂正モードに変更された場合を例に説明する。訂正モード設定部301は、エラー訂正モードが第2のエラー訂正モードに設定されていることを示すモードフラグ91をECC回路34に通知する。これにより、ECC回路34は、第2のエラー訂正モードで動作する状態となる。
【0076】
次に、ECC回路34は、第1バッファ35から符号データ50を読み出す(ステップS111)。この符号データ50は、ステップS104において第1バッファ35に書き込まれたデータである。あるいは、メモリインタフェース3が、再度、メモリ4から符号データ50を読み出し、ECC回路34に符号データ50を出力してもよい。この場合であれば、第1バッファ35を不要とすることができる。ECC回路34は、訂正モード設定部301により設定されたエラー訂正モードに基づいて、再び、符号データ50に対するエラーを検出する。ECC回路34は、符号データ50に対して検出したエラーを訂正する処理を実行する(ステップS112)。つまり、変更されたエラー訂正モードに従い、再びエラー訂正処理を実行する。たとえば、訂正モード設定部301により設定されているエラー訂正モードが第2のエラー訂正モードであれば、符号データ50に含まれる240bitのシンドローム(S20)を利用してエラー訂正処理を実行する。
【0077】
エラー訂正処理が終了すると、ステップS106に戻り、ステップS106〜ステップS108の処理を繰り返す。そして、ステップS108においてハッシュ値が一致しなかった場合には、再度ステップS109〜S112の処理を実行し、さらに訂正能力の高いエラー訂正モードを設定し、エラー訂正処理を実行する。
【0078】
このように、本実施の形態においては、最初、エラー訂正能力の最も小さい第1のエラー訂正モードに従いエラー訂正処理を実行した後、エラー訂正処理の正当性が否定された場合には、段階的に、訂正能力の高いエラー訂正モードにモード変更した上でエラー訂正処理を実行する。これにより、各符号データ、つまり各ページに対してそれぞれ異なるエラー訂正モードを適用させているものの、各ページに適応させるエラー訂正モードの情報を保持することなく、各ページのデータを訂正することが可能である。
【0079】
再び、図5のステップS202を参照する。符号データ50に発生しているエラービット数が、閾値を超えている場合(ステップS202でNO)、訂正モード設定部301は、読み出した符号データ50に対応するエラー訂正モードの変更を行う(ステップS301)。訂正モード設定部301は、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードにモード変更する。たとえば、第1から第2へ、あるいは、第2から第3へ、段階的にエラー訂正モードの訂正能力を向上させるようにモード変更を行う。
【0080】
前述したステップS110におけるエラー訂正モードの変更は、読み出されたデータに適用されている正しいエラー訂正モードをサーチするための変更である。これに対して、ステップS301におけるエラー訂正モードの変更は、読み出されたデータに閾値を超えるエラーが検出されたため、読み出されたデータに適用させるエラー訂正モードを変更するための処理である。
【0081】
訂正モード設定部301は、変更されたエラー訂正モードを示すモードフラグ91をECC回路34に通知する。これにより、ECC回路34は、変更されたエラー訂正モードで動作する状態となる。
【0082】
制御部30は、第2バッファ36に格納されているエラー訂正後の情報データ65を読み出す。制御部30は、読み出したエラー訂正後の情報データ65をECC回路34に転送する(ステップS302)。つまり、制御部30は、第2バッファ36に格納されている実体データ61とハッシュ値62とを含む情報データ65を読み出す。第2バッファ36に格納されている実体データ61とハッシュ値62とはステップS108において正当性が認められたデータである。
【0083】
ECC回路34は、第2バッファ36から読み出した実体データ61とハッシュ値62とを含む情報データ65に対して、変更されたエラー訂正モードに従ってシンドロームを算出する(ステップS303)。ECC回路34は、実体データ61、ハッシュ値62および新しく算出されたシンドローム(上述したように、必要に応じてダミーデータが付加された固定長のシンドローム)を含む符号データ60をメモリインタフェース32に与える。制御部30は、符号データ60の書き込みコマンドをアドレス変換部に出力する。アドレス変換部33は、書き込みコマンドで指定された論理アドレスを物理アドレスに変換し、メモリインタフェース32に与える。メモリインタフェース32は、与えられた物理アドレスに対する書き込みコマンドをメモリ4に出力する。これにより、書き込みコマンドで指定されたページに符号データ60が書き込まれる(ステップS304)。ここで、第2のエラー訂正モードにおいては、240bitのシンドローム(S20)に120bitのダミーデータが付加される。
【0084】
最後に、出力制御部303は、第2バッファ36から実体データ61を取得する。出力制御部303は、ホストインタフェース31を介して、取得した実体データ61をホスト装置1に出力する(ステップS305)。
【0085】
このように、本実施の形態においては、ECC回路34は、訂正能力の異なる複数のエラー訂正モードで動作可能である。それぞれのエラー訂正モードで利用されるシンドローム(S10)〜(S30)のデータ長は異なる。つまり、エラー訂正能力が高くなるにつれてシンドローム(S10)〜(S30)のデータ長は大きくなる。しかし、本実施の形態においては、実体的なシンドロームにダミーデータを付加することで、シンドロームとダミーデータを含む固定長のシンドロームを利用している。このため、エラー訂正モードが変更された場合にも、メモリ4に格納される符号データのデータ長が固定長となり、メモリ4の管理および運用が煩雑となることはない。
【0086】
<第2の実施の形態>
図8を参照しながら、本発明の第2の実施の形態について説明する。第2の実施の形態における情報処理システム100の構成およびメモリコントローラ3の動作は、基本的には第1の実施の形態におけるメモリコントローラ3の動作と同様である。ただし、第2の実施の形態の符号データ50のデータ構造は第1の実施の形態とは異なる。図8は、第2の実施の形態における第1〜第3のエラー訂正モードにおける符号データ50のデータ構造を示す図である。
【0087】
第1のエラー訂正モードは、2048Byteの情報データに対して24bitのエラー訂正が可能である。第1のエラー訂正モードでは、2048Byteの情報データ55に対して、360bitのシンドローム(S11)が利用される。ただし、360bitのシンドローム(S11)に1080bitの“0”のダミーデータを付加し、全体として1440bitのシンドローム53がメモリ4に格納される。
【0088】
図8の下段には、2048Byteの情報データ(D11)に、1080bitのダミーデータ“0”と360bitのシンドローム(S11)が付加された符号データ50のデータ構造が示されている。情報データ(D11)は、実体データ51とハッシュ値52とを含む。図中、ハッシュ値52は網掛け表示している。
【0089】
第2のエラー訂正モードは、2048(=1024×2)Byteの情報データ55に対して24×2bitのエラー訂正が可能である。第2のエラー訂正モードでは、1024Byteの情報データ(D21)および(D22)に対して、それぞれ360bitのシンドローム(S21)および(S22)が利用される。つまり、1024Byteの情報データ(D21)および(D22)に対して、それぞれ24bitのエラー訂正が可能である。ただし、720(=360×2)bitのシンドローム(S21)および(S22)に720bitの“0”のダミーデータを付加し、全体として1440bitのシンドローム53としてメモリ4に格納される。
【0090】
図8の中段には、1024Byteの情報データ(D21)および(D22)に、720bitのダミーデータ“0”と、360bitのシンドローム(S21)および(S22)が付加された符号データ50のデータ構造が示されている。情報データ(D21)および(D22)のそれぞれにハッシュ値52が含まれている。
【0091】
第3のエラー訂正モードは、2048(=512×4)Byteの情報データ55に対して24×4bitのエラー訂正が可能である。第3のエラー訂正モードでは、512Byteの情報データ(D31)、(D32)、(D33)および(D34)に対して、それぞれ360bitのシンドローム(S21)、(S22)、(S23)および(S24)が利用される。つまり、第3のエラー訂正モードでは、512Byteの情報データ(D31)、(D32)、(D33)および(D34)に対して、それぞれ24bitのエラー訂正が可能である。
【0092】
図8の上段には、512Byteの情報データ(D31)、(D32)、(D33)および(D34)に、360bitのシンドローム(S31)、(S32)、(S33)および(S34)が付加された符号データ50のデータ構造が示されている。
【0093】
このように、第1〜第3のエラー訂正モードにおいて、必要となるシンドロームのビット長は異なる。しかし、本実施の形態においては、ダミーデータを付加することにより、第1〜第3のエラー訂正モードにおいては、共通の固定長のシンドローム53を情報データ55に付加する。これにより、情報データ55とシンドローム53とを含む符号データ50は、エラー訂正モードの種別に関わらず、17824bit(2048Byte+1440bit)の固定長のデータとなる。
【0094】
また、図8に示すように、第1〜第3のエラー訂正モードには、それぞれ閾値が設定されている。第1のエラー訂正モードの閾値が22bitである。つまり、ECC回路34が第1のエラー訂正モードで動作中に情報データ(D11)に22bitを超えるビットエラーが検出された場合には、エラー訂正モードを第1から第2に変更する必要性があると判断される。第2のエラー訂正モードの閾値が22bitである。つまり、ECC回路34が第2のエラー訂正モードで動作中に情報データ(D21)あるいは(D22)に22bitを超えるビットエラーが検出された場合には、エラー訂正モードを第2から第3に変更する必要性があると判断される。
【0095】
このように第2の実施の形態においては、第1〜第3のエラー訂正モードで同一の閾値を用いている。しかし、シンドロームを割り当てる情報データの単位が異なるため、第1に比べて第2のエラー訂正モードの方がエラー訂正能力は高くなっている。同様に、第2に比べて第3のエラー訂正モードの方がエラー訂正能力は高くなっている。
【0096】
<第3の実施の形態>
図9を参照しながら、本発明の第3の実施の形態について説明する。第3の実施の形態における情報処理システム100の構成およびメモリコントローラ3の動作は、基本的には第1〜第2の実施の形態におけるメモリコントローラ3の動作と同様である。ただし、第3の実施の形態の符号データ50のデータ構造は第1の実施の形態とは異なる。図9は、第3の実施の形態における第1〜第3のエラー訂正モードにおける符号データ50のデータ構造を示す図である。
【0097】
図9と図3を比較すれば分かるように、第1〜第3のエラー訂正モードにおける訂正能力、閾値およびシンドローム(S10)〜(S30)のデータサイズは、第1の実施の形態と同じである。ただし、シンドローム(S10)〜(S30)の格納アドレスが第1の実施の形態とは異なる。
【0098】
図9に示すように、第1のエラー訂正モードにおいては、180bitのシンドローム(S10)が格納される。第2のエラー訂正モードにおいては、240bitのシンドローム(S20)が格納される。第3のエラー訂正モードにおいては、360bitのシンドローム(S30)が格納される。また、シンドローム(S10)、(S20)および(S30)は、それぞれ異なるアドレスに格納されている。
【0099】
第1のエラー訂正モードにおいて、シンドローム(S10)は、780bitのシンドローム53の格納エリアの中で先頭アドレス位置に格納されている。それより後の残りのアドレスにはダミーデータ“1”が格納される。
【0100】
第1から第2にエラー訂正モードが変更されたとき、メモリコントローラ3は、シンドローム(S10)を削除する必要はない。メモリコントローラ3は、シンドローム(S10)に隣接するアドレス位置にシンドローム(S20)を格納する。そして、シンドローム(S20)の格納位置よりも後のアドレス位置にはダミーデータ“1”が格納される。第2のエラー訂正モードにおいて、シンドローム(S10)は格納されたままであるが、無効データとして利用されない。
【0101】
第2から第3にエラー訂正モードが変更されたとき、メモリコントローラ3は、シンドローム(S10)および(S20)を削除する必要はない。メモリコントローラ3は、シンドローム(S20)に隣接するアドレス位置にシンドローム(S30)を格納する。第3のエラー訂正モードにおいて、シンドローム(S10)および(S20)は格納されたままであるが、無効データとして利用されない。
【0102】
このように、第3の実施の形態においては、エラー訂正モードが変更されたとき、変更後のシンドローム(S20)あるいは(S30)を追記していくことができる。つまり、変更対象のシンドロームを含むブロックの消去処理を行わなくてよいため、処理速度の向上と消費電力の低減を図ることができる。
【0103】
<第4の実施の形態>
図10を参照しながら、本発明の第4の実施の形態について説明する。第4の実施の形態における情報処理システム100の構成およびメモリコントローラ3の動作は、基本的には第1〜第3の実施の形態におけるメモリコントローラ3の動作と同様である。ただし、第4の実施の形態の符号データ50のデータ構造は第1の実施の形態とは異なる。図10は、第4の実施の形態における第1〜第3のエラー訂正モードにおける符号データ50のデータ構造を示す図である。
【0104】
図10と図8を比較すれば分かるように、第1〜第3のエラー訂正モードにおける訂正能力、閾値およびシンドローム(S11)、(S21)・・・のデータサイズは、第2の実施の形態と同じである。また、シンドローム(S11)、(S21)・・・を付与する情報データ55の分割単位も第2の実施の形態と同じである。ただし、シンドローム(S11)、(S21)・・・の格納アドレスが第2の実施の形態とは異なる。
【0105】
図10に示すように、第1のエラー訂正モードにおいては、360bitのシンドローム(S11)が格納される。第2のエラー訂正モードにおいては、それぞれ360bitのシンドローム(S21)および(S22)が格納される。第3のエラー訂正モードにおいては、それぞれ360bitのシンドローム(S31)、(S32)、(S33)および(S34)が格納される。また、シンドローム(S11)、(S21)、(S22)、(S31)、(S32)、(S33)および(S34)は、それぞれ異なるアドレスに格納されている。
【0106】
第1のエラー訂正モードにおいて、シンドローム(S11)は、2520bitのシンドローム53の格納エリアの中で先頭アドレス位置に格納されている。それより後の残りのアドレスにはダミーデータ“1”が格納される。
【0107】
第1から第2にエラー訂正モードが変更されたとき、メモリコントローラ3は、シンドローム(S11)を削除する必要はない。メモリコントローラ3は、シンドローム(S11)に隣接するアドレス位置にシンドローム(S21)および(S22)を格納する。そして、シンドローム(S21)の格納位置よりも後のアドレス位置にはダミーデータ“1”が格納される。第2のエラー訂正モードにおいて、シンドローム(S11)は格納されたままであるが、無効データとして利用されない。
【0108】
第2から第3にエラー訂正モードが変更されたとき、メモリコントローラ3は、シンドローム(S11)、(S21)および(S22)を削除する必要はない。メモリコントローラ3は、シンドローム(S21)に隣接するアドレス位置にシンドローム(S31)、(S32)、(S33)および(S34)を格納する。第3のエラー訂正モードにおいて、シンドローム(S11)、(S21)および(S22)は格納されたままであるが、無効データとして利用されない。
【0109】
このように、第4の実施の形態においては、エラー訂正モードが変更されたとき、変更後のシンドロームを追記していくことができる。つまり、変更対象のシンドロームを含むブロックの消去処理を行わなくてよいため、処理速度の向上と消費電力の低減を図ることができる。
【0110】
<第5の実施の形態>
本発明の第5の実施の形態について説明する。第1〜第4の実施の形態においては、メモリコントローラ3は、第1のエラー訂正モードから順番にエラー訂正モードを実行した。そして、エラー訂正処理の正当性を確認することによって、各符号データ、つまりは各ページに適用されているエラー訂正モードを特定することができた。
【0111】
これに対して、第5の実施の形態においては、図11に示すように、符号データ50に訂正モードフラグ56を格納する。メモリコントローラ3は、読み出した符号データ50に含まれる訂正モードフラグ56を参照することで、各符号データ、つまりは各ページに適用されているエラー訂正モードを特定することができる。
【0112】
訂正モードフラグ56自体にエラーが発生している場合、誤ってエラー訂正モードを判定する可能性がある。そこで、本実施の形態においては、符号データに、複数(この例では3つ)の重複した訂正モードフラグ56を格納するようにしている。つまり、同じ値を持つ訂正モードフラグ56を3つ重複させて格納するのである。メモリコントローラ3は、読み出した符号データ50から3つの訂正モードフラグ56を取得する。つまり、訂正モードフラグ56は、訂正処理が行われる前の符号データ50から取得される。メモリコントローラ3は、3つの訂正モードフラグ56が示しているエラー訂正モードを多数決により決定する。たとえば、2つの訂正モードフラグ56が第1のエラー訂正モードを示していれば、残りの1つの訂正モードフラグ56が第2のエラー訂正モードを示していても、適用すべきエラー訂正モードは第1のエラー訂正モードであると判定することができる。
【0113】
<第6の実施の形態>
本発明の第6の実施の形態について説明する。第1〜第4の実施の形態においては、メモリコントローラ3は、第1のエラー訂正モードから順番にエラー訂正モードを実行した。そして、エラー訂正処理の正当性を確認することによって、各符号データ、つまりは各ページに適用されているエラー訂正モードを特定することができた。
【0114】
これに対して、第6の実施の形態においては、図12に示すように、制御部30は、メモリ4の各ページに適用されているエラー訂正モードのマップ304を保持している。制御部30は、エラー訂正モードが変更されたときは、マップ304を更新する。メモリコントローラ3は、マップ304を参照することで、各符号データ、つまり各ページに適用すべきエラー訂正モードを特定することができる。
【0115】
<第7の実施の形態>
本発明の第7の実施の形態について説明する。第1〜第6の実施の形態においては、メモリ4に格納される符号データごとに、つまり、ページごとにエラー訂正モードを設定した。第7の実施の形態においては、全ページに対して共通のエラー訂正モードを適用させる。
【0116】
図13に示すように、制御部30は、メモリ4の全ページに適用されている共通のエラー訂正モードのフラグ305を保持している。制御部30は、エラー訂正モードが変更されたときは、フラグ305を更新する。メモリコントローラ3は、フラグ305を参照することで、現在全符号データ、つまり全ページに適用すべきエラー訂正モードを特定することができる。
【符号の説明】
【0117】
1 ホスト装置
2 メモリシステム
3 メモリコントローラ
4 メモリ
30 制御部
31 ホストインタフェース
32 メモリインタフェース
33 アドレス変換部
34 ECC回路
35 第1バッファ
36 第2バッファ
37 判定部
301 訂正モード設定部
302 比較部
303 出力制御部
【特許請求の範囲】
【請求項1】
半導体メモリに対するアクセスを制御するメモリコントローラであって、
前記半導体メモリに格納されたデータに対して訂正能力の異なる複数のエラー訂正モードでエラー訂正処理を実行可能なエラー訂正部と、
前記半導体メモリに情報データを格納するとき、情報データに対して適用すべきエラー訂正モードを設定する制御部と、
前記半導体メモリに対する情報データの読み出しおよび書き込みを行うインタフェースと、
を備え、
前記エラー訂正部は、
前記制御部において設定されたエラー訂正モードに従い、情報データに対するシンドロームを算出するシンドローム算出部と、
複数のエラー訂正モードに対して共通の固定符号長が設定されており、情報データ、算出されたシンドロームおよび必要に応じて付加されるダミーデータを含む固定長の符号データを生成する符号データ生成部と、
を含み、
前記インタフェースは、符号データを前記半導体メモリへ書き込み、
前記エラー訂正部は、
前記インタフェースによって符号データが読み出されたとき、符号データに含まれるシンドロームを利用して符号データの訂正処理を実行する訂正処理部、
を含むメモリコントローラ。
【請求項2】
請求項1に記載のメモリコントローラであって、
前記エラー訂正部は、
符号データに含まれるエラービット数を検出する検出部、
を含み、
前記制御部は、
前記検出部により検出されたエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較し、検出されたエラービット数が前記閾値を超えているとき、現在のエラー訂正モードを、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更するモード変更部、
を含み、
前記シンドローム算出部は、変更されたエラー訂正モードに従い、情報データに対するシンドロームを再度算出し、
前記インタフェースは、変更されたシンドロームを前記半導体メモリに格納するメモリコントローラ。
【請求項3】
請求項2に記載のメモリコントローラであって、
前記符号データ生成部は、情報データ、再計算されたシンドロームおよび必要に応じて付加されるダミーデータを含む前記固定符号長の符号データを再度生成し、
前記インタフェースは、再計算された符号データにより、前記半導体メモリに格納されている符号データを書き換えるメモリコントローラ。
【請求項4】
請求項2に記載のメモリコントローラであって、
前記インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再計算されたシンドロームを格納するメモリコントローラ。
【請求項5】
請求項1ないし請求項4のいずれかに記載のメモリコントローラであって、
前記制御部は、前記半導体メモリに格納されているデータに対する読み出し要求が発生したとき、最初、エラー訂正モードとして、最も訂正能力の低いエラー訂正モードを設定し、前記エラー訂正部は、前記制御部より設定された最も訂正能力の低いエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を実行するメモリコントローラ。
【請求項6】
請求項5に記載のメモリコントローラであって、
前記制御部は、現在設定されているエラー訂正モードに従ったエラー訂正処理が実行された後、エラー訂正処理の正当性を判定し、正当性が否定されたとき、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更し、前記エラー訂正部は、前記制御部より変更されたエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を再度実行するメモリコントローラ。
【請求項7】
請求項6に記載のメモリコントローラであって、
前記エラー訂正部は、3段階以上のエラー訂正モードで動作可能であり、エラー訂正処理の正当性が肯定されるまで、順次、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更するメモリコントローラ。
【請求項8】
請求項6または請求項7に記載のメモリコントローラであって、
前記制御部は、
前記半導体メモリに格納する実体データからエラー検出用データを生成する生成部、
を含み、
前記シンドローム算出部は、実体データにエラー検出用データが付加された情報データに対してシンドロームを算出し、
前記制御部は、前記エラー訂正部においてエラー訂正処理が実行された後、エラー検出用データを用いて情報データに含まれるエラーの有無をチェックすることで、前記エラー訂正部におけるエラー訂正処理の正当性を判定するメモリコントローラ。
【請求項9】
請求項1または請求項2に記載のメモリコントローラであって、
前記制御部は、符号データに現在適用させているエラー訂正モードを特定する訂正モード情報を、符号データ内に格納するメモリコントローラ。
【請求項10】
請求項9に記載のメモリコントローラであって、
前記制御部は、重複して複数の訂正モード情報を符号データ内に格納し、符号データを読み出したとき、複数の訂正モード情報から符号データに適用すべきエラー訂正モードを特定するメモリコントローラ。
【請求項11】
請求項1または請求項2に記載のメモリコントローラであって、
前記制御部は、各ページに現在適用させているエラー訂正モードを記録した情報を保持するメモリコントローラ。
【請求項12】
請求項1または請求項2に記載のメモリコントローラであって、
前記制御部は、全ページに現在適用させているエラー訂正モードを記録した情報を保持し、前記エラー訂正部に前記半導体メモリの各ページに共通のエラー訂正モードを適応させるメモリコントローラ。
【請求項13】
請求項1ないし請求項12に記載のメモリコントローラであって、
前記固定符号長は、最もエラー訂正能力の高いエラー訂正モードにおけるシンドローム長を情報データに付加したときの符号長であるメモリコントローラ。
【請求項14】
半導体メモリに対するアクセスを制御するメモリコントローラであって、
前記半導体メモリに格納されたデータに対して適用させるエラー訂正処理のモードを設定する制御部と、
外部装置から前記半導体メモリに格納された第1データに対する読み出し要求を受けたとき、前記半導体メモリから第1データを読み出す第1インタフェースと、
前記第1インタフェースにより読み出された第1データに対して、前記制御部において設定されているエラー訂正モードを用いてエラー訂正処理を実行するエラー訂正部と、
前記エラー訂正部において訂正された第1データを格納する訂正データ用バッファと、
前記エラー訂正部において訂正された第1データを解析し、前記エラー訂正部におけるエラー訂正処理の正当性を判定する判定部と、
前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記訂正データ用バッファに格納された訂正された第1データを前記外部装置に与える第2インタフェースと、
を備え、
前記制御部は、前記判定部において前記エラー訂正部における訂正処理の正当性が否定されたとき、エラー訂正モードを、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更し、
前記エラー訂正部は、第1データに対して、変更されたエラー訂正モードを用いてエラー訂正処理を再度実行し、
前記訂正データ用バッファは、変更後のエラー訂正モードで訂正された第1データを格納し、
前記判定部は、変更後のエラー訂正モードで訂正された第1データを解析し、前記エラー訂正部における訂正処理の正当性を判定するメモリコントローラ。
【請求項15】
請求項14に記載のメモリコントローラであって、さらに、
前記第1インタフェースにより読み出された第1データを格納する読み出しデータ用バッファ、
を備え、
前記エラー訂正部は、エラー訂正処理の再処理を行うとき、前記読み出しデータ用バッファに格納されている第1データを利用するメモリコントローラ。
【請求項16】
請求項14または請求項15に記載のメモリコントローラであって、さらに、
前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記エラー訂正部において検出された第1データのエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較する比較部、
を備え、
前記エラー訂正部は、前記比較部において、第1データに発生したエラービット数が閾値を超えていると判定されたとき、前記訂正データ用バッファに格納されている訂正された第1データから、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに対応したシンドロームを生成し、
前記第1インタフェースは、変更されたシンドロームを前記半導体メモリに格納するメモリコントローラ。
【請求項17】
請求項16に記載のメモリコントローラであって、
複数のエラー訂正モードに対して共通の固定符号長が設定されており、第1データは、情報データ、シンドロームおよび必要に応じて付加されるダミーデータを含む前記固定符号長のデータであり、
前記エラー訂正部は、
情報データ、再計算されたシンドロームおよび必要に応じて付加されるダミーデータを含む固定符号長の符号データを生成し、
前記第1インタフェースは、生成された符号データにより、前記半導体メモリに格納されている第1データを書き換えるメモリコントローラ。
【請求項18】
請求項16に記載のメモリコントローラであって、
前記第1インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再計算されたシンドロームを格納するメモリコントローラ。
【請求項1】
半導体メモリに対するアクセスを制御するメモリコントローラであって、
前記半導体メモリに格納されたデータに対して訂正能力の異なる複数のエラー訂正モードでエラー訂正処理を実行可能なエラー訂正部と、
前記半導体メモリに情報データを格納するとき、情報データに対して適用すべきエラー訂正モードを設定する制御部と、
前記半導体メモリに対する情報データの読み出しおよび書き込みを行うインタフェースと、
を備え、
前記エラー訂正部は、
前記制御部において設定されたエラー訂正モードに従い、情報データに対するシンドロームを算出するシンドローム算出部と、
複数のエラー訂正モードに対して共通の固定符号長が設定されており、情報データ、算出されたシンドロームおよび必要に応じて付加されるダミーデータを含む固定長の符号データを生成する符号データ生成部と、
を含み、
前記インタフェースは、符号データを前記半導体メモリへ書き込み、
前記エラー訂正部は、
前記インタフェースによって符号データが読み出されたとき、符号データに含まれるシンドロームを利用して符号データの訂正処理を実行する訂正処理部、
を含むメモリコントローラ。
【請求項2】
請求項1に記載のメモリコントローラであって、
前記エラー訂正部は、
符号データに含まれるエラービット数を検出する検出部、
を含み、
前記制御部は、
前記検出部により検出されたエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較し、検出されたエラービット数が前記閾値を超えているとき、現在のエラー訂正モードを、現在のエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更するモード変更部、
を含み、
前記シンドローム算出部は、変更されたエラー訂正モードに従い、情報データに対するシンドロームを再度算出し、
前記インタフェースは、変更されたシンドロームを前記半導体メモリに格納するメモリコントローラ。
【請求項3】
請求項2に記載のメモリコントローラであって、
前記符号データ生成部は、情報データ、再計算されたシンドロームおよび必要に応じて付加されるダミーデータを含む前記固定符号長の符号データを再度生成し、
前記インタフェースは、再計算された符号データにより、前記半導体メモリに格納されている符号データを書き換えるメモリコントローラ。
【請求項4】
請求項2に記載のメモリコントローラであって、
前記インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再計算されたシンドロームを格納するメモリコントローラ。
【請求項5】
請求項1ないし請求項4のいずれかに記載のメモリコントローラであって、
前記制御部は、前記半導体メモリに格納されているデータに対する読み出し要求が発生したとき、最初、エラー訂正モードとして、最も訂正能力の低いエラー訂正モードを設定し、前記エラー訂正部は、前記制御部より設定された最も訂正能力の低いエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を実行するメモリコントローラ。
【請求項6】
請求項5に記載のメモリコントローラであって、
前記制御部は、現在設定されているエラー訂正モードに従ったエラー訂正処理が実行された後、エラー訂正処理の正当性を判定し、正当性が否定されたとき、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更し、前記エラー訂正部は、前記制御部より変更されたエラー訂正モードに従って、読み出しデータに対するエラー訂正処理を再度実行するメモリコントローラ。
【請求項7】
請求項6に記載のメモリコントローラであって、
前記エラー訂正部は、3段階以上のエラー訂正モードで動作可能であり、エラー訂正処理の正当性が肯定されるまで、順次、エラー訂正モードを、現在よりも訂正能力の高いエラー訂正モードに変更するメモリコントローラ。
【請求項8】
請求項6または請求項7に記載のメモリコントローラであって、
前記制御部は、
前記半導体メモリに格納する実体データからエラー検出用データを生成する生成部、
を含み、
前記シンドローム算出部は、実体データにエラー検出用データが付加された情報データに対してシンドロームを算出し、
前記制御部は、前記エラー訂正部においてエラー訂正処理が実行された後、エラー検出用データを用いて情報データに含まれるエラーの有無をチェックすることで、前記エラー訂正部におけるエラー訂正処理の正当性を判定するメモリコントローラ。
【請求項9】
請求項1または請求項2に記載のメモリコントローラであって、
前記制御部は、符号データに現在適用させているエラー訂正モードを特定する訂正モード情報を、符号データ内に格納するメモリコントローラ。
【請求項10】
請求項9に記載のメモリコントローラであって、
前記制御部は、重複して複数の訂正モード情報を符号データ内に格納し、符号データを読み出したとき、複数の訂正モード情報から符号データに適用すべきエラー訂正モードを特定するメモリコントローラ。
【請求項11】
請求項1または請求項2に記載のメモリコントローラであって、
前記制御部は、各ページに現在適用させているエラー訂正モードを記録した情報を保持するメモリコントローラ。
【請求項12】
請求項1または請求項2に記載のメモリコントローラであって、
前記制御部は、全ページに現在適用させているエラー訂正モードを記録した情報を保持し、前記エラー訂正部に前記半導体メモリの各ページに共通のエラー訂正モードを適応させるメモリコントローラ。
【請求項13】
請求項1ないし請求項12に記載のメモリコントローラであって、
前記固定符号長は、最もエラー訂正能力の高いエラー訂正モードにおけるシンドローム長を情報データに付加したときの符号長であるメモリコントローラ。
【請求項14】
半導体メモリに対するアクセスを制御するメモリコントローラであって、
前記半導体メモリに格納されたデータに対して適用させるエラー訂正処理のモードを設定する制御部と、
外部装置から前記半導体メモリに格納された第1データに対する読み出し要求を受けたとき、前記半導体メモリから第1データを読み出す第1インタフェースと、
前記第1インタフェースにより読み出された第1データに対して、前記制御部において設定されているエラー訂正モードを用いてエラー訂正処理を実行するエラー訂正部と、
前記エラー訂正部において訂正された第1データを格納する訂正データ用バッファと、
前記エラー訂正部において訂正された第1データを解析し、前記エラー訂正部におけるエラー訂正処理の正当性を判定する判定部と、
前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記訂正データ用バッファに格納された訂正された第1データを前記外部装置に与える第2インタフェースと、
を備え、
前記制御部は、前記判定部において前記エラー訂正部における訂正処理の正当性が否定されたとき、エラー訂正モードを、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに変更し、
前記エラー訂正部は、第1データに対して、変更されたエラー訂正モードを用いてエラー訂正処理を再度実行し、
前記訂正データ用バッファは、変更後のエラー訂正モードで訂正された第1データを格納し、
前記判定部は、変更後のエラー訂正モードで訂正された第1データを解析し、前記エラー訂正部における訂正処理の正当性を判定するメモリコントローラ。
【請求項15】
請求項14に記載のメモリコントローラであって、さらに、
前記第1インタフェースにより読み出された第1データを格納する読み出しデータ用バッファ、
を備え、
前記エラー訂正部は、エラー訂正処理の再処理を行うとき、前記読み出しデータ用バッファに格納されている第1データを利用するメモリコントローラ。
【請求項16】
請求項14または請求項15に記載のメモリコントローラであって、さらに、
前記判定部において前記エラー訂正部における訂正処理の正当性が肯定されたとき、前記エラー訂正部において検出された第1データのエラービット数と、現在のエラー訂正モードに対して予め設定されているエラービット数の閾値とを比較する比較部、
を備え、
前記エラー訂正部は、前記比較部において、第1データに発生したエラービット数が閾値を超えていると判定されたとき、前記訂正データ用バッファに格納されている訂正された第1データから、現在設定されているエラー訂正モードよりも訂正能力の高いエラー訂正モードに対応したシンドロームを生成し、
前記第1インタフェースは、変更されたシンドロームを前記半導体メモリに格納するメモリコントローラ。
【請求項17】
請求項16に記載のメモリコントローラであって、
複数のエラー訂正モードに対して共通の固定符号長が設定されており、第1データは、情報データ、シンドロームおよび必要に応じて付加されるダミーデータを含む前記固定符号長のデータであり、
前記エラー訂正部は、
情報データ、再計算されたシンドロームおよび必要に応じて付加されるダミーデータを含む固定符号長の符号データを生成し、
前記第1インタフェースは、生成された符号データにより、前記半導体メモリに格納されている第1データを書き換えるメモリコントローラ。
【請求項18】
請求項16に記載のメモリコントローラであって、
前記第1インタフェースは、既に格納されているシンドロームと同じページ内の別のアドレスに、再計算されたシンドロームを格納するメモリコントローラ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2013−3656(P2013−3656A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−131246(P2011−131246)
【出願日】平成23年6月13日(2011.6.13)
【出願人】(591128453)株式会社メガチップス (322)
【Fターム(参考)】
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願日】平成23年6月13日(2011.6.13)
【出願人】(591128453)株式会社メガチップス (322)
【Fターム(参考)】
[ Back to top ]