(57)【特許請求の範囲】
【請求項１】
データを保存するデータ領域と、標準エラー訂正コード（ＥＣＣ）を保存するための標準ＥＣＣ領域と、拡張ＥＣＣを保存する拡張ＥＣＣ領域とを含む不揮発性メモリ部と、
標準ＥＣＣを生成し、上記データ領域のアクセス単位毎に誤り訂正処理を行う標準ＥＣＣ処理部と、
拡張ＥＣＣを生成し、上記データ領域のアクセス単位の整数倍のデータ毎に誤り訂正処理を行う拡張ＥＣＣ処理部と、
上記不揮発性メモリ部へのアクセス、並びに上記標準ＥＣＣ処理部および上記拡張ＥＣＣ処理部の処理を制御する制御部と、を有し、
上記制御部は、
書込み指示を受けて、受信したデータから上記標準ＥＣＣ処理部によりアクセス単位ごとに標準ＥＣＣを生成し、データを上記不揮発性メモリ部のデータ領域に書込み、生成した標準ＥＣＣを標準ＥＣＣ領域に書込む機能と、
読出し指示を受けて、上記不揮発性メモリ部のデータ領域からデータと、標準ＥＣＣ領域から標準ＥＣＣを読出し、上記標準ＥＣＣ処理部によりデータのアクセス単位ごとに誤り検出および訂正を行い、訂正後のデータを外部に送信する読出し機能と、
外部からの指示を受けて、上記不揮発性メモリ部のデータ領域から、指示されたアドレスを先頭とするアクセス単位の整数倍のデータを読出して、上記拡張ＥＣＣ処理部により拡張ＥＣＣを生成し、上記拡張ＥＣＣ領域に書込む機能と、
外部からの指示を受けて、上記不揮発性メモリ部のデータ領域から、指示されたアドレスを先頭とするアクセス単位の整数倍のデータと、拡張ＥＣＣ領域から拡張ＥＣＣを読出し、上記拡張ＥＣＣ処理部によりデータの誤り検出及び訂正を行い、訂正後のデータを外部に送信する機能と、
を含む不揮発性メモリ装置。
【請求項２】
上記制御部は、
外部からの指示を受けて、上記不揮発性メモリ部の拡張ＥＣＣ領域に保存された拡張ＥＣＣを削除する機能を有する
請求項１記載の不揮発性メモリ装置。
【請求項３】
上記制御部は、
外部からの指示を受けて、上記不揮発性メモリ部のデータ領域へ、指示されたアドレスアクセス単位の整数倍のデータを書き込む際に、上記拡張ＥＣＣ処理部により拡張ＥＣＣを生成し、生成した拡張ＥＣＣを上記拡張ＥＣＣ領域に書込む
請求項１から２のいずれか一に記載の不揮発性メモリ装置。
【請求項４】
上記制御部は、
上記拡張ＥＣＣを上記拡張ＥＣＣ領域に書込むと同時に、上記拡張ＥＣＣから生成した標準ＥＣＣを上記標準ＥＣＣ領域に書込む、
請求項１から３のいずれか一に記載の不揮発性メモリ装置。
【請求項５】
上記制御部は、
外部からの指示を受けて、上記不揮発性メモリ部のデータ領域から、指示されたアドレスを先頭とするアクセス単位の整数倍のデータと、拡張ＥＣＣ領域から拡張ＥＣＣを読出し、上記拡張ＥＣＣ処理部によりデータの誤り検出及び訂正を行ったデータを、上記不揮発性メモリ部のデータ領域に書込む機能を含む
請求項１から４のいずれか一に記載の不揮発性メモリ装置。
【請求項６】
上記制御部は、
拡張ＥＣＣ領域に保存された値が所定の固定値と一致した場合、当該値が保存された領域は未使用であると判断する
請求項１から５のいずれか一に記載の不揮発性メモリ装置。
【請求項７】
前記固定値は、保存領域の特定のビットを未使用であることを示すフラグにより形成される
請求項６記載の不揮発性メモリ装置。
【請求項８】
データを保存するデータ領域と、標準エラー訂正コード（ＥＣＣ）を保存するための標準ＥＣＣ領域と、拡張ＥＣＣを保存する拡張ＥＣＣ領域とを含む不揮発性メモリ部に対するアクセスを制御する制御部と、
標準ＥＣＣを生成し、上記データ領域のアクセス単位毎に誤り訂正処理を行う標準ＥＣＣ処理部と、
拡張ＥＣＣを生成し、上記データ領域のアクセス単位の整数倍のデータ毎に誤り訂正処理を行う拡張ＥＣＣ処理部と、を有し、
上記制御部は、
書込み指示を受けて、受信したデータから上記標準ＥＣＣ処理部によりアクセス単位ごとに標準ＥＣＣを生成し、データを上記不揮発性メモリ部のデータ領域に書込み、生成した標準ＥＣＣを標準ＥＣＣ領域に書込む機能と、
読出し指示を受けて、上記不揮発性メモリ部のデータ領域からデータと、標準ＥＣＣ領域から標準ＥＣＣを読出し、上記標準ＥＣＣ処理部によりアクセス単位ごとにデータの誤り検出および訂正を行い、訂正後のデータを外部に送信する機能と、
外部からの指示を受けて、上記不揮発性メモリ部のデータ領域から、指示されたアドレスを先頭とするアクセス単位の整数倍のデータを読出して、上記拡張ＥＣＣ処理部により拡張ＥＣＣを生成し、上記拡張ＥＣＣ領域に書込む機能と、
外部からの指示を受けて、上記不揮発性メモリ部のデータ領域から、指示されたアドレスを先頭とするアクセス単位の整数倍のデータと、拡張ＥＣＣ領域から拡張ＥＣＣを読出し、上記拡張ＥＣＣ処理部によりデータの誤り検出及び訂正を行い、訂正後のデータを外部に送信する機能と、を含む
メモリコントローラ。
【請求項９】
上記制御部は、
上記拡張ＥＣＣを上記拡張ＥＣＣ領域に書込むと同時に、上記拡張ＥＣＣから生成した標準ＥＣＣを上記標準ＥＣＣ領域に書込む、
請求項８に記載のメモリコントローラ。
【請求項１０】
データを保存するデータ領域と、標準エラー訂正コード（ＥＣＣ）を保存するための標準ＥＣＣ領域と、拡張ＥＣＣを保存する拡張ＥＣＣ領域と、標準ＥＣＣを生成し、上記データ領域のアクセス単位毎に誤り訂正処理を行う標準ＥＣＣ処理部と、
を含む不揮発性メモリ部に対するアクセスを制御する制御部と、
拡張ＥＣＣを生成し、上記データ領域のアクセス単位の整数倍のデータ毎に誤り訂正処理を行う拡張ＥＣＣ処理部と、を有し、
上記制御部は、
書込み指示を受けて、受信したデータを上記不揮発性メモリ部のデータ領域に書込む機能と、
読出し指示を受けて、上記不揮発性メモリ部のデータ領域から標準ＥＣＣで誤り訂正後のデータを読出し、外部に送信する機能と、
外部からの指示を受けて、上記不揮発性メモリ部のデータ領域から、指示されたアドレスを先頭とするアクセス単位の整数倍のデータを読出して、上記拡張ＥＣＣ処理部により拡張ＥＣＣを生成し、上記拡張ＥＣＣ領域に書込む機能と、
外部からの指示を受けて、上記不揮発性メモリ部のデータ領域から、指示されたアドレスを先頭とするアクセス単位の整数倍のデータと、拡張ＥＣＣ領域から拡張ＥＣＣを読出し、上記拡張ＥＣＣ処理部によりデータの誤り検出及び訂正を行い、訂正後のデータを外部に送信する機能と、を含む
メモリコントローラ。
【請求項１１】
データを保存するデータ領域と、標準エラー訂正コード（ＥＣＣ）を保存するための標準ＥＣＣ領域と、拡張ＥＣＣを保存する拡張ＥＣＣ領域とを含む不揮発性メモリ部と、
標準ＥＣＣを生成し、上記不揮発性メモリ部のアクセス単位毎に誤り訂正処理を行う標準ＥＣＣ処理部と、
拡張ＥＣＣを生成し、上記アクセス単位の整数倍のデータ毎に誤り訂正処理を行う拡張ＥＣＣ処理部と、
上記不揮発性メモリ部へのアクセス、並びに上記標準ＥＣＣ処理部および上記拡張ＥＣＣ処理部の処理を制御するメモリコントローラと、
上記メモリコントローラに対して、少なくとも書込みを指示する機能および読み出しを指示する機能を含むホスト装置と、を有し、
上記メモリコントローラは、
上記ホスト装置からの書込み指示を受けて、受信したデータから上記標準ＥＣＣ処理部によりアクセス単位ごとに標準ＥＣＣを生成し、データを上記不揮発性メモリ部のデータ領域に書込み、生成した標準ＥＣＣを標準ＥＣＣ領域に書込む機能と、
上記ホスト装置からの読出し指示を受けて、上記不揮発性メモリ部のデータ領域からデータと標準ＥＣＣ領域から標準ＥＣＣを読出し、上記標準ＥＣＣ処理部によりアクセス単位ごとにデータの誤り検出および訂正を行い、訂正後のデータを外部に送信する読出し機能、を含む
メモリシステム。
さらに上記メモリコントローラは、
上記ホスト装置からの指示を受けて、上記不揮発性メモリ部のデータ領域から、指示されたアドレスを先頭とするアクセス単位の整数倍のデータを読出して、上記拡張ＥＣＣ処理部により拡張ＥＣＣを生成し、上記拡張ＥＣＣ領域に書込む機能と、
上記ホスト装置からの指示を受けて、上記不揮発性メモリ部のデータ領域から、指示されたアドレスを先頭とするアクセス単位の整数倍のデータと、拡張ＥＣＣ領域から拡張ＥＣＣを読出し、上記拡張ＥＣＣ処理部によりデータの誤り検出及び訂正を行い、訂正後のデータを外部に送信する機能と、を含む
メモリシステム。
【請求項１２】
上記ホスト装置は、
拡張ＥＣＣを追加するデータのアドレスをメモリコントローラに指定する機能と、追加した拡張ＥＣＣを削除するデータのアドレスを指定する機能とを含み、
上記メモリコントローラは、
上記ホスト装置の指定に従って拡張ＥＣＣの追加または削除制御を行う
請求項１１に記載のメモリシステム。
【請求項１３】
上記ホスト装置は、
上記不揮発性メモリ部のデータ領域に保存したデータの中で、長期間の保存に備え保護が必要なデータに対し、拡張ＥＣＣの追加を上記メモリコントローラに指示し、
上記メモリコントローラは、
上記ホスト装置からの指示を受けて、上記不揮発性メモリ部のデータ領域から、指示されたアドレスを先頭とするアクセス単位の整数倍のデータを読出して、上記拡張ＥＣＣ処理部により拡張ＥＣＣを生成し、生成した拡張ＥＣＣを上記拡張ＥＣＣ領域に書込む
請求項１１から１２のいずれか一に記載のメモリシステム。
【請求項１４】
上記メモリコントローラは、
拡張ＥＣＣが設定されたデータを読出す場合には、
まず上記標準ＥＣＣを使用しアクセス単位ごとにデータの確認および訂正を行い、
標準ＥＣＣで訂正が不可能であった場合には、拡張ＥＣＣを使用し、拡張ＥＣＣで訂正されるデータの誤り検出および訂正を行う
請求項１１から１３のいずれか一に記載のメモリシステム。
【請求項１５】
上記ホスト装置は、
上記メモリコントローラに、標準ＥＣＣおよび拡張ＥＣＣで訂正が発生した場合に、訂正後のデータで、訂正が発生した元のデータを書換えることを指示可能であり、
上記メモリコントローラは、
上記ホスト装置の指示を受けて、訂正後のデータで元のデータの書換えのための制御を行う
請求項１１から１４のいずれか一に記載のメモリシステム。
【請求項１６】
上記メモリコントローラは、
拡張ＥＣＣ領域に保存された値が所定の固定値と一致した場合、当該値が保存された領域は未使用であると判断する
請求項１１から１５のいずれか一に記載のメモリシステム。
【請求項１７】
上記固定値は、保存領域の特定のビットを未使用であることを示すフラグにより形成される
請求項１６記載のメモリシステム。
【請求項１８】
上記標準ＥＣＣ処理部および上記拡張ＥＣＣ処理部は、
上記メモリコントローラ、上記不揮発性メモリ部、および上記ホスト装置のいずれかに配置される
請求項１１から１７のいずれか一に記載のメモリシステム。
【請求項１９】
上記ホスト装置が、
上記メモリコントローラの機能を含む、
請求項１１から１８のいずれか一に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り訂正機能を有する不揮発性メモリ装置、メモリコントローラ、およびメモリシステムに関するものである。
【背景技術】
【０００２】
不揮発性メモリ（ＮＶＭ）は、ページと呼ぶ複数のバイト数またはワード数からなるデータを単位としてアクセス可能であり電源を切った後もデータ保持可能であることから、セクタ単位にアクセスを行うストレージシステムに広く使われている。このようなＮＶＭの代表として、ＮＡＮＤフラッシュがある。
近年、揮発性ランダムアクセスメモリ（ＲＡＭ）であるＳＲＡＭやＤＲＡＭのように、単一のバイト、ワードを単位としてランダムアクセス可能でありながら、電源を切った後もデータ保持可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）の開発、製品化が進んでいる。
このＮＶＲＡＭとして、ＦｅＲＡＭ、ＰＣＲＡＭやＲｅＲＡＭがあげられる。
【０００３】
ＮＶＭでは、データの信頼性をあげるために誤り訂正符号(エラー訂正コード：ＥＣＣ)が使われている。アクセス速度への影響を小さくするためには、ＥＣＣも高速な方式が必要となる。このような方式のＥＣＣとして、たとえば、１ビット誤り訂正・２ビット誤り検出が可能な拡張ハミング符号などがあげられる。
ＮＶＲＡＭでは、バイト単位またはワード単位の小さな単位で、ＤＲＡＭ並みの高速なランダムアクセス性能が求められるために、ＥＣＣも小さなアクセス単位毎に非常に高速な訂正処理が可能な方式であることが重要となる。
一方で一般的には、誤り訂正能力の高いＥＣＣであるほど、検出・訂正にかかる処理時間が長く、さらに符号サイズも大きくなる。ＥＣＣをデータとともにＮＶＭやＮＶＲＡＭに保存するためには、データの保存用の領域の他に冗長ビット領域が必要であり、高い訂正能力を持ったＥＣＣを使用するためには、それだけ冗長ビット領域の容量も大きくする必要がある。
【０００４】
特許文献１には誤り訂正機能を備えたメモリシステムが開示されている。
特許文献１に開示された半導体メモリシステムは、第１エラー訂正コードと、それよりも訂正能力の高い第２エラー訂正コードを利用する。そして、この半導体メモリシステムは、読み出しデータに第１エラー訂正コードで訂正可能なエラーが発生した場合に、それ以降、第２エラー訂正コードを用いて、誤り訂正処理を行うことで、データの信頼性を高めている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１９２０５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、より誤り検出、訂正能力の高いエラー訂正方式では、符号サイズが大きく、検出・訂正処理にかかる時間も大きくなるため、アクセス性能の低下が発生する。
【０００７】
また、アクセス性能を維持するために、訂正能力は変えずに保護するデータの単位サイズを小さくすることでも、誤り訂正能力を高くできる。しかし、その分データ領域に対する冗長ビット領域の容量が大きくなり、不揮発性メモリ装置として同じ容量があったとしても、実際にデータを記録できる領域が少なくなってしまう。
【０００８】
一方、不揮発性メモリに記録されたデータは保存期間が長くなるほど劣化し、ビット化けが発生する確率が増大していく。劣化の傾向はその不揮発性メモリの記憶方式によってさまざまであるが、例えばＮＡＮＤフラッシュでは、書換え回数が多いメモリセルほどデータの保持特性が悪い傾向がある。さらにＮＡＮＤフラッシュでは、メモリセルは電荷を蓄積してデータを記憶するため、製造プロセスが微細化されるに従って蓄積される電荷量が減少していることもデータの保持特性を悪くする大きな要因となっている。
【０００９】
特許文献１に開示された技術は、高い頻度で読み出されるデータでは、第１エラー訂正コードによってビット化けを早期に検出し、第２エラー訂正コードによって訂正能力を強化しデータエラーを防ぐことができる。しかし長期間アクセスされないデータでは、第１エラー訂正コードでのビット化けの発見が遅れることによって、ビット化けが進行し、第２エラー訂正コードに切換える前に、第１エラー訂正コードで訂正不可能エラーになったデータは、以降正しいデータとして読み出すことができない。また、第１エラー訂正コードと第２エラー訂正コードで同じ単位サイズのデータに対してエラー訂正するため、訂正コードを保存に必要な冗長ビット領域の容量が大きくなる欠点がある。
【課題を解決するための手段】
【００１０】
本発明の第１の観点の不揮発性メモリ装置は、データを保存するデータ領域と、標準エラー訂正コード（ＥＣＣ）を保存する標準ＥＣＣ領域と、拡張ＥＣＣを保存する拡張ＥＣＣ領域とを含む不揮発性メモリ部と、標準ＥＣＣの生成処理と誤り検出・訂正処理を行う標準ＥＣＣ処理部と、拡張ＥＣＣの生成処理と誤り検出・訂正処理を行う拡張ＥＣＣ処理部と、上記不揮発性メモリ部へのアクセス並びに上記標準ＥＣＣ処理部および上記拡張ＥＣＣ処理部を制御する制御部と、を有し、上記制御部は、
書込み指示を受けて、受信データを上記データ領域に書込み、上記標準ＥＣＣ処理部によって前記受信データからアクセス単位毎に生成した標準ＥＣＣを標準ＥＣＣ領域へ書込む機能と、
読み込み指示を受けて、上記標準ＥＣＣ領域から標準ＥＣＣを読込み、上記標準ＥＣＣ処理部によって、上記データ領域から読み込んだデータをアクセス単位ごとに誤り検出・訂正処理し、訂正後のデータを外部に送信する機能と、
拡張ＥＣＣ設定指示を受けて、上記拡張ＥＣＣ処理部によって、上記データ領域から読出したアクセス単位の整数倍から成る拡張ＥＣＣブロックのデータから生成した拡張ＥＣＣを上記拡張ＥＣＣ領域に書込む機能と、
標準ＥＣＣで訂正不可能なエラーが発生した場合に、上記拡張ＥＣＣ領域から拡張ＥＣＣを読込み、上記拡張ＥＣＣ処理部によって、上記データ領域から読み出した上記拡張ＥＣＣブロックのデータの誤り訂正処理を行う機能と、を含む。
【００１１】
本発明の第２の観点のメモリコントローラは、データ領域、標準ＥＣＣ領域、拡張ＥＣＣ領域を含む不揮発性メモリ部に対するアクセスを制御する制御部と、標準ＥＣＣの生成処理と、誤り検出・訂正処理を行う標準ＥＣＣ処理部と、拡張ＥＣＣの生成処理と、誤り検出・訂正処理を行う拡張ＥＣＣ処理部と、を有し、上記メモリコントローラは、
書込み指示を受けて、受信データを上記データ領域に書込み、上記標準ＥＣＣ処理部によって前記受信データからアクセス単位毎に生成した標準ＥＣＣを標準ＥＣＣ領域へ書込む機能と、
読み込み指示を受けて、上記標準ＥＣＣ領域から標準ＥＣＣを読込み、上記標準ＥＣＣ処理部によって、上記データ領域から読み込んだデータをアクセス単位ごとに誤り検出・訂正処理し、訂正後のデータを外部に送信する機能と、
拡張ＥＣＣ設定指示を受けて、上記拡張ＥＣＣ処理部によって、上記データ領域から読出したアクセス単位の整数倍から成る拡張ＥＣＣブロックのデータから生成した拡張ＥＣＣを上記拡張ＥＣＣ領域に書込む機能と、
標準ＥＣＣで訂正不可能なエラーが発生した場合に、上記拡張ＥＣＣ領域から拡張ＥＣＣを読込み、上記拡張ＥＣＣ処理部によって、上記データ領域から読み出した上記拡張ＥＣＣブロックのデータの誤り訂正処理を行う機能と、を含む。
【００１２】
本発明の第３の観点のメモリシステムは、データ領域、標準ＥＣＣ領域、拡張ＥＣＣ領域を含む不揮発性メモリ部と、
標準ＥＣＣの生成処理と、誤り検出・訂正処理を行う標準ＥＣＣ処理部と、拡張ＥＣＣの生成処理と、誤り検出・訂正処理を行う拡張ＥＣＣ処理部と、上記不揮発性メモリ部へのアクセス並びに上記標準ＥＣＣ処理部および上記拡張ＥＣＣ処理部を制御するメモリコントローラと、
上記メモリコントローラに対して、少なくとも書込みを指示する機能と、読み出しを指示する機能と、拡張ＥＣＣ設定を指示する機能を含むホスト装置と、を有し、上記メモリコントローラは、
ホスト装置から書込み指示を受けて、受信データを上記データ領域に書込み、上記標準ＥＣＣ処理部によって前記受信データからアクセス単位毎に生成した標準ＥＣＣを標準ＥＣＣ領域へ書込む機能と、
ホスト装置から読み込み指示を受けて、上記標準ＥＣＣ領域から標準ＥＣＣを読込み、上記標準ＥＣＣ処理部によって、上記データ領域から読み込んだデータをアクセス単位ごとに誤り検出・訂正処理し、訂正後のデータをホスト装置に送信する機能と、
ホスト装置から拡張ＥＣＣ設定指示を受けて、上記拡張ＥＣＣ処理部によって、上記データ領域から読出したアクセス単位の整数倍から成る拡張ＥＣＣブロックのデータから生成した拡張ＥＣＣを上記拡張ＥＣＣ領域に書込む機能と、
標準ＥＣＣで訂正不可能なエラーが発生した場合に、上記拡張ＥＣＣ領域から拡張ＥＣＣを読込み、上記拡張ＥＣＣ処理部によって、上記データ領域から読み出した上記拡張ＥＣＣブロックのデータの誤り訂正処理を行う機能と、を含む。
【発明の効果】
【００１３】
本発明によれば、拡張ＥＣＣによって、標準のＥＣＣでは訂正できない誤りを訂正することで長期保存データに対する訂正の能力を向上させつつ、通常は標準ＥＣＣによってＮＶＭ並びにＮＶＲＡＭの読出し、書込みアクセス性能の低下を抑え、さらに、長期保存が必要なデータを指定する手段を持つことと拡張ＥＣＣを複数のアクセス単位から成るデータ単位に適用することによって拡張ＥＣＣ訂正コード保存する冗長ビット領域の増大を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【図２】本実施形態に係る標準ＥＣＣと拡張ＥＣＣを説明するための図である。
【図３】本実施形態に係る標準・拡張ＥＣＣ生成部の第１の構成例を示す図である。
【図４】本実施形態に係る標準・拡張ＥＣＣ生成部の第２の構成例を示す図である。
【図５】本実施形態に係る標準・拡張ＥＣＣ検出訂正部の構成例を示す図である。
【図６】本第１の実施形態に係る、書込みコマンドＳＹＳ＿ＷＲＩＴＥ受信時のメモリコントローラの動作を説明するためのフローチャートである。
【図７】本第１の実施形態に係る、拡張ＥＣＣ設定コマンドＥＥＣＣ＿ＳＥＴ受信時のメモリコントローラの動作を説明するためのフローチャートである。
【図８】本第１の実施形態に係る、書込みコマンドＳＹＳ＿ＷＲＩＴＥ受信時に拡張ＥＣＣを設定するオプションＯＰＴ＿ＥＳＥＴを設定した場合のメモリコントローラの動作を説明するためのフローチャートである。
【図９】拡張ＥＣＣ領域に保存する拡張ＥＣＣのフォーマットの一例を示す図である。
【図１０】本第１の実施形態に係る、読出しコマンドＳＹＳ＿ＲＥＡＤ受信時のメモリコントローラの動作を説明するためのフローチャートである。
【図１１】拡張ＥＣＣとして積符号を使用した場合に誤り訂正能力がどのように強化されるかを説明するための図である。
【図１２】拡張ＥＣＣとして多重誤り訂正符号を使用した場合に誤り訂正能力がどのように強化されるかを説明するための図である。
【図１３】本第１の実施形態に係る、拡張ＥＣＣ消去コマンドＥＥＣＣ＿ＣＬＲ受信時のメモリコントローラの動作を説明するためのフローチャートである。
【図１４】本発明の第２の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【図１５】本第２の実施形態に係る、読出しコマンドＳＹＳ＿ＲＥＡＤ受信時のメモリコントローラの動作を説明するためのフローチャートである。
【図１６】本発明の第３の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【図１７】本第３の実施形態に係る、拡張ＥＣＣ設定コマンドＥＥＣＣ＿ＳＥＴの送信側であるホスト装置と、受信側であるメモリコントローラの動作を説明するためのフローチャートである。
【図１８】本第３の実施形態に係るホスト装置のデータ読出し時の動作を説明するためのフローチャートである。
【図１９】本発明の第４の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【図２０】本発明の第５の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【図２１】本発明の第６の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【図２２】本発明の第７の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を図面に関連付けて説明する。
なお、説明は以下の順序で行う。
１．第１の実施形態（メモリシステムの第１の構成例）
２．第２の実施形態（メモリシステムの第２の構成例）
３．第３の実施形態（メモリシステムの第３の構成例）
４．第４の実施形態（メモリシステムの第４の構成例）
５．第５の実施形態（メモリシステムの第５の構成例）
６．第６の実施形態（メモリシステムの第６の構成例）
７．第７の実施形態（メモリシステムの第７の構成例）
【００１６】
＜１．第１の実施形態＞
図１は、本発明の第１の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
本第１の実施形態に係るメモリシステムを構成する不揮発性メモリ装置の例として、ＮＡＮＤフラッシュメモリで代表される数百〜数Ｋバイトのページ単位でしかアクセスできない不揮発性メモリ（ＮＶＭ）と、バイト単位またはワード単位でアクセス可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）が存在し、ここではＮＶＲＡＭでかつ、消去処理の指示をせずにデータの書き換えが可能なメモリを適用した例について説明する。
【００１７】
本メモリシステム１０は、ホスト装置１００、メモリコントローラ２００、不揮発性メモリ３００を含んで構成される。
不揮発性メモリ３００は、不揮発性メモリ部に相当する。
【００１８】
本実施形態に係るメモリシステム１０は、ＮＶＲＡＭに合わせてバイト、ワード単位の小さなアクセス単位毎に標準ＥＣＣを付加する機能と、ホスト装置１００が選択したデータに対しては、アクセス単位の整数倍のデータ毎に拡張ＥＣＣを設定する機能を有する。
そして、本メモリシステム１０は、データ読出し時に標準ＥＣＣで誤り訂正ができない場合に、拡張ＥＣＣを使用して、誤り訂正を行う機能を有する。
本第１の実施形態のメモリシステム１０では、標準ＥＣＣ処理と拡張ＥＣＣ処理はメモリコントローラ２００内で処理される。
【００１９】
ホスト装置１００、メモリコントローラ２００、および不揮発性メモリ３００の構成要素について説明する。
【００２０】
ホスト装置１００は、ＣＰＵ１０１およびホストインタフェース部１０２を含んで構成される。
【００２１】
ＣＰＵ１０１は、メモリコントローラ２００に対して、次の各種コマンドを発行する機能を有する。
ＣＰＵ１０１は、データの書込みコマンドＳＹＳ＿ＷＲＩＴＥを発行し、ホストインタフェース部１０２を介して、コマンドと書込みデータを送信する。ＳＹＳ＿ＷＲＩＴＥの追加動作モードとして、書込み中のデータに対して拡張ＥＣＣの設定を指示するオプションであるＯＰＴ＿ＥＳＥＴを含む。
ＣＰＵ１０１は、データの読出しコマンドＳＹＳ＿ＲＥＡＤを発行し、ホストインタフェース部１０２を介して、コマンドを送信し、読出しデータを受信する。受信したデータは標準ＥＣＣによって訂正済みである。ＳＹＳ＿ＲＥＡＤの追加動作モードとして、ＥＣＣによる訂正済みデータの書き戻しを指示するオプションであるＯＰＴ＿ＯＷＲＴＢを含む。
ＣＰＵ１０１は、拡張ＥＣＣを生成・保存する拡張ＥＣＣ設定コマンドＥＥＣＣ＿ＳＥＴを発行し、ホストインタフェース部１０２を介して、コマンドとデータの先頭アドレスを送信する。拡張ＥＣＣを設定されたデータは、ＳＹＳ＿ＲＥＡＤによるデータ読出し時に標準ＥＣＣでは訂正不可能な誤りも拡張ＥＣＣを使って訂正処理される。
ＣＰＵ１０１は、拡張ＥＣＣ読出しコマンドＥＥＣＣ＿ＧＥＴを発行し、ホストインタフェース部１０２を介して、コマンドとデータの先頭アドレスを送信し、設定済みの拡張ＥＣＣ情報を受信する。
ＣＰＵ１０１は、拡張ＥＣＣ消去コマンドＥＥＣＣ＿ＣＬＲを発行し、ホストインタフェース部１０２を介して、コマンドと拡張ＥＣＣを消去するデータの先頭アドレスを送信する。
上記データの先頭アドレスによって拡張ＥＣＣブロック２３０が指定される。
【００２２】
メモリコントローラ２００は、ホストインタフェース部２０１、不揮発性メモリ制御部２０２、データバッファ部２０３、およびメモリインタフェース部２０４を有する。
不揮発性メモリ制御部２０２は、制御部２０５および標準・拡張ＥＣＣ処理部２０６を含んで構成される。
標準・拡張ＥＣＣ処理部２０６は、標準ＥＣＣ処理部と拡張ＥＣＣ処理部の機能を併せ持つ。
【００２３】
ホストインタフェース部２０１は、ホスト装置１００からのコマンドを受信し、不揮発性メモリ制御部２０２に通知する。
【００２４】
不揮発性メモリ制御部２０２の制御部２０５は、ホスト装置１００からのコマンドをデコードして処理を実行する。その際、メモリインタフェース部２０４を介して以下のコマンドを不揮発性メモリ３００に対して発行する。
制御部２０５は、書込みコマンドＭＥＭ＿ＷＲＩＴＥを発行し、メモリインタフェース部２０４を介してコマンドと不揮発性メモリ３００への書込みデータを送信する。
制御部２０５は、データの読出しコマンドＭＥＭ＿ＲＥＡＤを発行し、メモリインタフェース部２０４を介してコマンドを送信し、不揮発性メモリ３００からの読出しデータを受信する。
制御部２０５は、拡張ＥＣＣ書込みコマンドＥＥＣＣ＿ＷＲＩＴＥを発行し、メモリインタフェース部２０４を介して、コマンドと不揮発性メモリ３００の拡張ＥＣＣ領域への書込みデータを送信する。
制御部２０５は、拡張ＥＣＣ読出しコマンドＥＥＣＣ＿ＲＥＡＤを発行し、メモリインタフェース部２０４を介して、コマンドを送信し、不揮発性メモリ３００の拡張ＥＣＣ領域からの読出しデータを受信する。
制御部２０５は、ホスト装置１００から受信したＳＹＳ＿ＲＥＡＤの訂正済みデータ書き戻しオプションＯＰＴ＿ＯＷＲＴＢが設定されていた場合、ＭＥＭ＿ＲＥＡＤ後、標準ＥＣＣあるいは拡張ＥＣＣで訂正済みデータを、ＭＥＭ＿ＷＲＩＴＥ、ＥＥＣＣ＿ＷＲＩＴＥを使って不揮発性メモリ３００に書き戻す処理を行う。
【００２５】
データバッファ部２０３は、ホストインタフェース部２０１を介してホスト装置１００から受信した書込みデータを一時保存し、また制御部２０５がメモリインタフェース部２０４を介して不揮発性メモリ３００から読出したデータを一時保存する。
【００２６】
図２は、本実施形態に係る標準ＥＣＣと拡張ＥＣＣを説明するための図である。
標準・拡張ＥＣＣ処理部２０６の基本的な機能について図２に関連付けて説明する。
なお、図２ではシステムからＮＶＭへのアクセス単位をページと呼んでいる。ページはＮＶＲＡＭの場合、単一のバイト、ワードサイズであり、ＮＡＮＤフラッシュの場合は、書込み単位であるページに一致する。アクセス単位＋標準ＥＣＣがページ２１０＋標準ＥＣＣ２１５に書き込まれ、アクセス単位のｎ倍からなるブロックを拡張ＥＣＣブロック２３０として、その最終ページ２２０を拡張ＥＣＣ領域として拡張ＥＣＣ２２０とそれを保護する標準ＥＣＣ２２５が書き込まれる。例えばＮＡＮＤフラッシュの場合は拡張ＥＣＣブロック２３０が消去ブロックに一致する。
【００２７】
標準・拡張ＥＣＣ処理部２０６は、書込みデータに、たとえば図２に示すように、ページＰＧ0〜ＰＧn-2のページデータ２１０ごとに生成した標準ＥＣＣを付加し、ページ単位に不揮発性メモリ（ＮＶＭ）３００に出力し書き込む。
標準・拡張ＥＣＣ処理部２０６は、拡張ＥＣＣを生成する場合には、不揮発性メモリ３００から拡張ＥＣＣブロック２３０の拡張ＥＣＣ用のページ２２０を除く（n-1）ページ分のページデータ２１０および標準ＥＣＣ２１５を読出す。
標準・拡張ＥＣＣ処理部２０６は、上記読み出したデータを標準ＥＣＣ処理部で誤り検出・訂正処理後、標準ＥＣＣを除いた（n-1）ページ分のページデータ２１０を拡張ＥＣＣ処理部に入力し、生成した拡張ＥＣＣを、再度標準ＥＣＣ処理部に入力し標準ＥＣＣデータを付加した後、不揮発性メモリ３００に出力し、拡張ＥＣＣブロック２３０の最終ページ２２０＋標準ＥＣＣ２２５として書き込む。
さらに標準ＥＣＣと拡張ＥＣＣを同時に生成する場合には、標準・拡張ＥＣＣ処理部２０６は、（n-1）ページ分の書込みデータに対して、１ページ毎にページデータ２１０に標準ＥＣＣ２１５を付加して不揮発性メモリ３００に出力し書き込む。
並行して標準・拡張ＥＣＣ処理部２０６は、前記（n-1）ページ分のページデータ入力中に並行して拡張ＥＣＣ２２０を生成し、ＰＧn-2のページデータ２１０と標準ＥＣＣ２１５を不揮発性メモリ３００に書込み後、拡張ＥＣＣ２２０に標準ＥＣＣデータ２２５を付加して１ページ分のデータとして不揮発性メモリ３００に出力し、拡張ＥＣＣブロック２３０の最終ページ２２０として書き込む。
【００２８】
標準・拡張ＥＣＣ処理部２０６は、標準ＥＣＣと拡張ＥＣＣの生成、誤り検出・訂正処理を実行し、誤りを検出した場合には、データバッファ部２０３上でデータ訂正を行い、ホスト装置１００にデータを出力する。
【００２９】
ここで、標準・拡張ＥＣＣ処理部２０６における標準・拡張ＥＣＣ生成部および標準・拡張ＥＣＣ検出訂正部の構成例について、図３〜図５に関連付けて説明する。
【００３０】
図３は、本実施形態に係る標準・拡張ＥＣＣ生成部の第１の構成例を示す図である。
【００３１】
図３の標準・拡張ＥＣＣ生成部２４０は、標準ＥＣＣ生成部２４１、標準ＥＣＣ検出訂正部２４２、拡張ＥＣＣ生成部２４３、およびセレクタ（ＳＥＬ）２４４を有する。
【００３２】
標準・拡張ＥＣＣ生成部２４０において、書込みデータはセレクタ２４４を通して標準ＥＣＣ生成部２４１に入力され、ページデータ２１０に標準ＥＣＣ２１５を付加して１ページとして不揮発性メモリ（ＮＶＭ）３００に出力し書き込む。
標準・拡張ＥＥＣ生成部２４０において、拡張ＥＣＣ設定時は、不揮発性メモリ（ＮＶＭ）３００から拡張ＥＣＣブロック２３０の全ページデータ２１０および標準ＥＣＣ２１５を読出す。
そして、標準ＥＣＣ検出・訂正部２４２で誤り検出・訂正処理後、拡張ＥＣＣ生成部２４３に標準ＥＣＣ２１５を除いた（n-1）ページ分のページデータ２１０を入力し、拡張ＥＣＣ生成部２４３で生成した拡張ＥＣＣ２２０はセレクタ２４４を通して標準ＥＣＣ生成部２４１に入力される。
標準ＥＣＣ生成部２４１は、拡張ＥＣＣ２２０に標準ＥＣＣデータ２２５を付加して不揮発性メモリ（ＮＶＭ）３００に出力し、拡張ＥＣＣブロック２３０の最終ページとして書き込む。
【００３３】
図４は、本実施形態に係る標準・拡張ＥＣＣ生成部の第２の構成例を示す図である。
【００３４】
図４の標準・拡張ＥＣＣ生成部２４０Ａは、図３の標準・拡張ＥＣＣ生成部２４０の構成に加えてデータ入力ラインと標準ＥＣＣ検出訂正部２４２の出力のいずれかを選択して拡張ＥＣＣ生成部２４３に入力するセレクタ（ＳＥＬ）２４５を有する。
【００３５】
標準・拡張ＥＣＣ生成部２４０Ａにおいて、書込みデータはセレクタ２４４を通して標準ＥＣＣ生成部に２４１入力され、ページデータ２１０に標準ＥＣＣ２１５を付加して１ページとして不揮発性メモリ（ＮＶＭ）３００に出力し書き込む。
標準・拡張ＥＣＣ生成部２４０Ａにおいて、拡張ＥＣＣ設定時は、不揮発性メモリ（ＮＶＭ）３００から拡張ＥＣＣブロックの全ページデータ２１０および標準ＥＣＣ２１５を読出す。
標準ＥＣＣ検出訂正部２４２で誤り検出・訂正処理後、拡張ＥＣＣ生成部２４３に標準ＥＣＣ２１５を除いた（n-1）ページ分のページデータ２１０を、セレクタ２４５を通して入力し、拡張ＥＣＣ生成部２４３で生成した拡張ＥＣＣ２２０はセレクタ２４４を通して標準ＥＣＣ生成部２４１に入力される。
標準ＥＣＣ生成部２４１は、拡張ＥＣＣ２２０に標準ＥＣＣデータ２２５を付加して不揮発性メモリ（ＮＶＭ）３００に出力し、拡張ＥＣＣブロック２３０の最終ページとして書き込む。
ページデータ２１０と標準ＥＣＣ２１５と拡張ＥＣＣ２２０を同時に設定する場合には、（n-1）ページ分の書込みデータはセレクタ２４４を通して標準ＥＣＣ生成部に２４１入力され、ページデータ２１０に標準ＥＣＣ２１５を付加して１ページとして不揮発性メモリ（ＮＶＭ）３００に出力し書き込む。
これと並行して、（n-1）ページ分のページデータ２１０はセレクタ２４５を通して拡張ＥＣＣ生成部２４４にも入力される。
拡張ＥＣＣ生成部２４４で生成した拡張ＥＣＣ２２０を、セレクタ２４４を通して標準ＥＣＣ生成部２４１に入力する。
そして、拡張ＥＣＣ２２０に標準ＥＣＣデータ２２５を付加して拡張ＥＣＣブロック２３０の１ページ分のデータとして不揮発性メモリ（ＮＶＭ）３００に出力し、拡張ＥＣＣブロック２３０の最終ページとして書き込む。
【００３６】
図５は、本実施形態に係るＥＣＣ検出・訂正部の構成例を示す図である。
【００３７】
図５のＥＣＣ検出訂正部２５０は、標準ＥＣＣ検出・訂正部２５１、拡張ＥＣＣ検出・訂正部２５２、およびセレクタ（ＳＥＬ）２５３を有する。
【００３８】
ＥＣＣ検出・訂正部２５０において、不揮発性メモリ（ＮＶＭ）３００から読み出されたページデータ２１０および標準ＥＣＣ２１５は標準ＥＣＣ検出・訂正部２５１に入力される。そして、標準ＥＣＣ検出・訂正部２５１でデータの誤りを検出して訂正後、セレクタ２５３を通してホスト装置１００に出力される。
不揮発性メモリ（ＮＶＭ）３００から読み出された拡張ＥＣＣブロック２３０の全ページデータ２１０および標準ＥＣＣ２１５は、拡張ＥＣＣ設定時においては、標準ＥＣＣ検出・訂正部２５２に入力され、標準ＥＣＣ２１５を除いた(n-1)ページ分の誤り訂正後のページデータ２１０が拡張ＥＣＣ検出・訂正部２５２に入力される。
そして、拡張ＥＣＣ検出・訂正部２５２でデータの誤りを検出して訂正後、ページＰＧ0からＰＧn-2のページデータは、セレクタ２５３を通してホスト装置１００に出力される。
なお、標準ＥＣＣ検出・訂正部２５１において誤りが検出されなかったページデータ２１０および誤りが訂正できたページデータ２１０は、拡張ＥＣＣ２２０によるデータ誤りの検出結果を待たずにホスト装置１００に出力してもよい。
【００３９】
メモリコントローラ２００のメモリインタフェース部２０４は、不揮発性メモリ制御部２０２からのコマンドをメモリインタフェースのプロトコルに変換し、不揮発性メモリ３００に送信する。
【００４０】
メモリコントローラ２００は、拡張ＥＣＣブロック２３０のページ0〜ページn-2のデータ２１０が存在するデータ領域３０３と、ページ0〜ページn-1の標準ＥＣＣ２１５、２２５が存在する標準ＥＣＣ領域３０４と、最終ページn-1の拡張ＥＣＣ２２０が存在する拡張ＥＣＣ領域３０５を管理する。拡張ＥＣＣブロック２３０の最終ページ２２０は図９の例に示すようなフォーマットであり、メモリコントローラ２００は、拡張ＥＣＣ有効フラグＦＬＥＥＶ４０２の値によって、最終ページn-1の拡張ＥＣＣ２２０が設定されているかを判断する。
【００４１】
不揮発性メモリ３００は、メモリインタフェース部３０１、メモリセルアレイ３０２、データ領域３０３、標準ＥＣＣ領域３０４、拡張ＥＣＣ領域３０５、および制御部３０６により構成される。
なお、不揮発性メモリ部としてのメモリセルアレイ３０２は、データ領域３０３、標準ＥＣＣ領域３０４、拡張ＥＣＣ領域３０５を含んで構成される。
不揮発性メモリ部はメモリインタフェース部３０１を介して、拡張ＥＣＣブロック空間２３０を複数持つアドレス空間としてアクセスされる。
【００４２】
メモリインタフェース部３０１は、メモリコントローラ２００からのアクセス要求を受信し、制御部３０６に通知する。
制御部３０６は、受信したアクセス要求に従って、メモリセルアレイ３０２を制御して、データの書込み、読出しを行う。
【００４３】
次に、ホスト装置１００、メモリコントローラ２００、および不揮発性メモリ３００の動作について説明する。
【００４４】
まず、不揮発性メモリ３００へのデータの書込み処理について説明する。
図６は、本第１の実施形態に係る書込みコマンドＳＹＳ＿ＷＲＩＴＥ受信時のメモリコントローラのフローチャートである。
【００４５】
メモリコントローラ２００は、ホストインタフェース部２０１を介して、ＳＹＳ＿ＷＲＩＴＥと、書込みデータを受信し、不揮発性メモリ制御部２０２の制御部２０５に通知する。
制御部２０５は、受信したコマンドをデコードし、ＳＹＳ＿ＷＲＩＴＥを受信したことを判別し、書込みデータを受信する。（ＳＴ１）そして、標準・拡張ＥＣＣ処理部２０６でアクセス単位のデータ２１０毎に付加する標準ＥＣＣ２１５を生成する（ＳＴ２）。
【００４６】
次に、制御部２０５は、データを書込むアドレスのデータに対して、拡張ＥＣＣ２２０が有効か否かを拡張ＥＣＣ有効フラグＦＬＥＥＶ４０２で確認し（ＳＴ３）、拡張ＥＣＣ２２０が有効な場合には、ＥＥＣＣ＿ＷＲＩＴＥを不揮発性メモリへ送信し、ＦＬＥＥＶ４０２をクリアする（ＳＴ４）。
その後、制御部２０５は、書込みコマンドＭＥＭ＿ＷＲＩＴＥと一緒にデータバッファ部２０３にあるページデータ２１０と標準ＥＣＣ２１５をメモリインタフェース部２０４を介して不揮発性メモリ３００へ送信する（ＳＴ５）。
【００４７】
次に、不揮発性メモリ３００への拡張ＥＣＣ設定処理について説明する。
図７は、本第１の実施形態に係る拡張ＥＣＣ設定コマンドＥＥＣＣ＿ＳＥＴ受信時のメモリコントローラのフローチャートである。
【００４８】
ホスト装置１００は、例えば不揮発性メモリ３００上に長期保存するデータに対して、拡張ＥＣＣの設定を行い、データの保持特性を改善する。
ホスト装置１００は、不揮発性メモリ３００のデータの中から拡張ＥＣＣを設定する拡張ＥＣＣブロック２３０を選択して、その先頭アドレスを拡張ＥＣＣ設定コマンドＥＥＣＣ＿ＳＥＴの引数として、メモリコントローラ２００に送信する。
【００４９】
メモリコントローラ２００はホストインタフェース部２０１を介して、拡張ＥＣＣ設定コマンドＥＥＣＣ＿ＳＥＴを受信し、不揮発性メモリ制御部２０２の制御部２０５に通知する。
制御部２０５は、受信したコマンドをデコードし、ＥＥＣＣ＿ＳＥＴを受信したことを判別する。制御部２０５は、ＭＥＭ＿ＲＥＡＤを使って、拡張ＥＣＣで保護する拡張ＥＣＣブロック２３０のデータ２１０と標準ＥＣＣ２１５を不揮発性メモリ３００からデータバッファ部２０３に順次読出す（ＳＴ１１）。その際、標準ＥＣＣによる誤り検出・訂正処理が行われる（ＳＴ１２）。
データバッファ部２０３のデータから、標準・拡張ＥＣＣ処理部２０６で拡張ＥＣＣ２２０を生成する。
制御部２０５は、拡張ＥＣＣ有効フラグＦＬＥＥＶ４０２を拡張ＥＣＣ２２０にセットし（ＳＴ１３）、標準・拡張ＥＣＣ処理部２０６では、拡張ＥＣＣ２２０に対して標準ＥＣＣ２２５を生成する（ＳＴ１４）。制御部２０５は、拡張ＥＣＣ書込みコマンドＥＥＣＣ＿ＷＲＩＴＥと拡張ＥＣＣ２２０、標準ＥＣＣ２２５をメモリインタフェース部２０４を介して、不揮発性メモリ３００に出力する（ＳＴ１５）。
【００５０】
次に、不揮発性メモリ３００へのデータ書込み時に同時に拡張ＥＣＣを設定する場合の動作について説明する。
図８は、本第１の実施形態に係る拡張ＥＣＣ同時設定オプションであるＯＰＴ_ＥＳＥＴが付加された書込みコマンドＳＹＳ＿ＷＲＩＴＥ受信時のメモリコントローラ２００の動作フローチャートである。
【００５１】
ホスト装置１００は、ＯＰＴ_ＥＳＥＴを設定した、データの書込みコマンドＳＹＳ＿ＷＲＩＴＥと書込みデータをメモリコントローラ２００に送信する。
メモリコントローラ２００において、ホストインタフェース部２０１がＳＹＳ＿ＷＲＩＴＥと書込みデータをデータバッファ部２０３に受信すると、不揮発性メモリ制御部２０２の制御部２０５に通知する。
制御部２０５は、ＳＹＳ＿ＷＲＩＴＥを受信したことを判別し（ＳＴ２１）、標準・拡張ＥＣＣ処理部２０６がアクセス単位毎に付加する標準ＥＣＣを生成し、並行して拡張ＥＣＣを生成する（ＳＴ２２）。
制御部２０５は、書込みコマンドＭＥＭ＿ＷＲＩＴＥと一緒にデータバッファ部２０３にあるデータ２１０と標準ＥＣＣ２１５をメモリインタフェース部２０４を介して不揮発性メモリ３００に出力する（ＳＴ２３）。
【００５２】
制御部２０５は、以上の処理を拡張ＥＣＣブロック２３０のページn-2まで行うと（ＳＴ２４）、生成した拡張ＥＣＣ２２０にＦＬＥＥＶ４０２を設定し（ＳＴ２５）、さらに標準・拡張ＥＣＣ処理部２０６で拡張ＥＣＣ２２０に対する標準ＥＣＣ２２５を生成する（ＳＴ２６）。
その後、制御部２０５は、書込みコマンドＥＥＣＣ＿ＷＲＩＴＥと一緒にデータバッファ部２０３にある拡張ＥＣＣ２２０と標準ＥＣＣ２２５をメモリインタフェース部２０４を介して、不揮発性メモリ３００に出力する（ＳＴ２７）。
【００５３】
図９は、拡張ＥＣＣ領域に保存する拡張ＥＣＣのフォーマットの一例を示す図である。
【００５４】
図９の拡張ＥＣＣ４００は、拡張ＥＣＣで保護される拡張ＥＣＣブロック２３０を示す物理アドレスフィールド４０１、拡張ＥＣＣ有効フラグフィールドＦＬＥＥＶ４０２、および拡張ＥＣＣフィールド４０３により構成される。
【００５５】
次に、不揮発性メモリ３００からのデータの読出し動作について説明する。
図１０は、本第１の実施形態に係る読出しコマンドＳＹＳ_ＲＥＡＤ受信時のメモリコントローラの動作フローチャートである。
【００５６】
ホスト装置１００は、データの読出しコマンドＳＹＳ＿ＲＥＡＤをメモリコントローラ２００に送信する。
メモリコントローラ２００は、ホストインタフェース部２０１は、ホスト装置１００からの読出しコマンドＳＹＳ＿ＲＥＡＤを受信すると、不揮発性メモリ制御部２０２の制御部２０５に通知する。
制御部２０５は受信したコマンドをデコードし、読出しコマンドＳＹＳ＿ＲＥＡＤを受信したことを判別し、読出しコマンドＭＥＭ＿ＲＥＡＤをメモリインタフェース部２０４を介して不揮発性メモリ３００に送信する（ＳＴ３１）。
【００５７】
制御部２０５は、メモリインタフェース部２０４を介して、データ２１０と標準ＥＣＣ２１５をデータバッファ部２０３に受信し、標準・拡張ＥＣＣ処理部２０６は標準ＥＣＣを使って誤り検出処理を行い、データバッファ部２０３上のデータの訂正処理を行う（ＳＴ３３）。
ステップＳＴ３３において、誤りがなく、もしくは標準ＥＣＣで訂正可能であった場合には、制御部２０５はデータバッファ部２０３上のデータ２１０をホストインタフェース部２０１を介してホスト装置に送信する（ＳＴ３４）。
【００５８】
ステップＳＴ３３において、標準ＥＣＣで訂正不可能であった場合には、拡張ＥＣＣ有効フラグＦＬＥＥＶ４０２の値を調べる（ＳＴ３５）。
ステップＳＴ３５において、ＦＬＥＥＶ４０２がクリア状態の場合には拡張ＥＣＣは設定されていないため、制御部２０５は、エラー処理をして終了する（ＳＴ４２）。
ステップＳＴ３５において、ＦＬＥＥＶ４０２がセット状態の場合には、ＭＥＭ＿ＲＥＡＤを使って、不揮発性メモリ３００より拡張ＥＣＣブロック２３０の全ページをデータバッファ部２０３に受信する（ＳＴ３６）。この際、標準ＥＣＣで誤り訂正処理され、訂正不可能なデータはそのままデータバッファ部２０３に受信する（ＳＴ３７）。
制御部２０５はＥＥＣＣ＿ＲＥＡＤを使って、拡張ＥＣＣ２２０と標準ＥＣＣ２２５を読出し（ＳＴ３８）、標準・拡張ＥＣＣ処理部２０６によって、標準ＥＣＣ２２５で拡張ＥＣＣの誤り訂正処理を行い（ＳＴ３９）、拡張ＥＣＣ２２０を使用してデータバッファ部２０３上のデータの誤り検出・訂正処理を行う（ＳＴ４０）。ここで上記標準ＥＣＣで訂正不可能であったデータが拡張ＥＣＣによって訂正される。
【００５９】
ステップＳＴ４１において、拡張ＥＣＣで訂正不可能エラーがなかった場合には、制御部２０５はデータバッファ部２０３上の訂正済みデータをホストインタフェース部２０１を介してホスト装置１００へ送信する（ＳＴ３４）。
ステップＳＴ４１において、拡張ＥＣＣでも訂正不可能エラーがあると判別した場合には、エラー処理を行い（ＳＴ４２）、処理を終了する。
また、ステップＳＴ３４の処理後、制御部２０５は、ホスト装置１００からの読出しコマンドＳＹＳ＿ＲＥＡＤに訂正済みデータ書き戻しオプションＯＷＥＴＢが設定されているか否かの判別を行い（ＳＴ４３）、設定されていた場合には、制御部２０５はＭＥＭ＿ＷＲＩＴＥとＥＥＣＣ＿ＷＲＩＴＥを使って、データバッファ部２０３上の訂正済みデータを不揮発性メモリ３００に書き戻す（ＳＴ４４）。
【００６０】
ここで、拡張ＥＣＣの具体例として、積符号と多重誤り訂正符号を使用した場合に、実際に標準ＥＣＣで訂正できなかったデータを拡張ＥＣＣで訂正する例について説明する。
図１１は、拡張ＥＣＣとして積符号を使用した場合の誤り検出・訂正処理を説明するための図である。
図１２は、拡張ＥＣＣとして多重誤り訂正符号を使用した場合を誤り検出・訂正処理を説明するための図である。
【００６１】
まず、拡張ＥＣＣが積符号の場合を図１１に関連付けて説明する。
積符号は列方向と行方向に並べられたデータのブロックに対して、列方向と行方向にそれぞれＥＣＣを計算し、行方向と列方向の訂正を繰り返すことで誤り訂正をする。
図１１は、行方向と列方向がそれぞれ１誤り訂正可能な場合を例示している。行方向のＥＣＣが標準ＥＣＣ領域に保存され、列方向のＥＣＣが拡張ＥＣＣ領域に保存される。通常のアクセスでは標準ＥＣＣに相当する行方向のＥＣＣのみ使用される。拡張ＥＣＣは列方向と行方向のＥＣＣの両方を組み合わせたものであり、行方向のＥＣＣの値は標準ＥＣＣと重複することから、拡張ＥＣＣ領域に保存する必要はない。
【００６２】
行Ｒ０を読み出す場合には、行Ｒ０は誤りＥ０と誤りＥ１の２重誤りが発生しているため、この行に対応する標準ＥＣＣでは誤り訂正ができない（状態ＳＴＳ０）。
そこで、列Ｃ０から列Ｃｎまで列方向の拡張ＥＣＣで誤り訂正が実施され、列方向ＥＣＣで誤りＥ０が訂正されるが、列Ｃn-1では２重誤りがあるために訂正ができない(状態ＳＴＳ１)。
もう一度行方向の行Ｒ０の読出しに戻ると、誤りはＥ１のみなので、今度は行方向のＥＣＣで訂正が行われ、行Ｒ０の誤りは全て訂正され（状態ＳＴＳ２）、行Ｒ０のデータが正しく読出される。
このように最初の状態（状態ＳＴＳ０）では誤り訂正不可能な場合でも、行・列の誤り訂正を繰り返すことで、誤り訂正をできることが積符号の特徴である。
本実施形態では、行方向のＥＣＣは標準ＥＣＣで処理され、列方向のＥＣＣは拡張ＥＣＣで処理される。行方向と列方向で同じ誤り訂正方法を使用しても、訂正能力を高めることができ、標準ＥＣＣと拡張ＥＣＣの生成、訂正処理は一つの回路で実行できるといったメリットもある。
【００６３】
次に、拡張ＥＣＣが多重誤り訂正符号の場合を図１２に関連付けて説明する。
図１２は、たとえば、標準ＥＣＣに１誤り訂正が可能なハミング符号を使い、拡張ＥＣＣには４重誤り訂正が可能なＢＣＨ符号を使用した場合を例示している。
【００６４】
行Ｒ０を読み出す場合、３重誤りがあるために標準ＥＣＣでは誤りが訂正できない（状態ＳＴＳ１０）。そこで、拡張ＥＣＣで保護されるデータを読み出す。
行Ｒ０以外はすべて１誤りなので、標準ＥＣＣで誤り訂正が実行される(状態ＳＴＳ１１)。
次に、拡張ＥＣＣで保護されるデータには３重誤りがあり、拡張ＥＣＣは４重誤りまで訂正可能なので、３重誤りは訂正される（状態ＳＴＳ１２）。
【００６５】
このように、拡張ＥＣＣブロック２３０単位に拡張ＥＣＣ２２０を付加することによって、標準ＥＣＣ２１５だけでは訂正できない誤りであっても、訂正することができる。
【００６６】
次に、ホスト装置１００が設定した拡張ＥＣＣを削除する動作について説明する。
図１３は、本第１の実施形態に係る拡張ＥＣＣ削除コマンドＥＥＣＣ＿ＣＬＲ受信時のメモリコントローラ２００の動作フローチャートである。
【００６７】
ホスト装置１００は、拡張ＥＣＣ消去コマンドＥＥＣＣ＿ＣＬＲをメモリコントローラ２００に送信する。
メモリコントローラ２００のホストインタフェース部２０１は、コマンドを受信すると、不揮発性メモリ制御部２０２の制御部２０５に通知する。制御部２０５は、受信したコマンドをデコードし、拡張ＥＣＣ消去コマンドＥＥＣＣ＿ＣＬＲを受信したことを判別する。
制御部２０５は、拡張ＥＣＣ有効フラグＦＬＥＥＶ４０２をクリアしたデータを用意する（ＳＴ５１）。
制御部２０５は、メモリインタフェース部２０４を介して、不揮発性メモリ３００に拡張ＥＣＣ書込みコマンドＥＥＣＣ＿ＷＲＩＴＥを送信し、指定した拡張ＥＣＣ領域３０５の拡張ＥＣＣブロックの拡張ＥＣＣ２２０をクリアする（ＳＴ５２）。
【００６８】
＜２．第２の実施形態＞
図１４は、本発明の第２の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【００６９】
本第２の実施形態に係るメモリシステム１０Ａが第１の実施形態に係るメモリシステム１０と異なる点は次の通りである。
第１の実施形態に係るメモリシステム１０においては、標準ＥＣＣ処理および拡張ＥＣＣ処理をメモリコントローラ２００で処理される。
これに対して、本第２の実施形態に係るメモリシステム１０Ａにおいては、標準ＥＣＣ処理は不揮発性メモリ３００Ａで処理される。
これに対応して、メモリシステム１０Ａにおいて、メモリコントローラ２００Ａの不揮発性メモリ制御部２０２Ａに、標準・拡張ＥＣＣ処理部に代わり拡張ＥＣＣ処理部２０７が配置されている。
そして、不揮発性メモリ３００Ａに、データバッファ部３０７、および標準ＥＣＣ処理部３０８が配置されており、制御部３０６によって制御される。
【００７０】
第２の実施形態において、ホスト装置１００は第１の実施形態と同様、ＳＹＳ_ＷＲＩＴＥ、ＳＹＳ＿ＲＥＡＤ、ＥＥＣＣ＿ＳＥＴ、ＥＥＣＣ＿ＧＥＴ、ＥＥＣＣ＿ＣＬＲのコマンドをメモリーコントローラに発行する。
【００７１】
第２の実施形態において、不揮発性メモリ３００Ａは、標準ＥＣＣを生成する機能、標準ＥＣＣの誤り検出・訂正を行う機能、標準ＥＣＣでの訂正不可能エラーをメモリコントローラ２００Ａに通知する機能を有する。
メモリコントローラ２００Ａは不揮発性メモリ３００Ａに対して、ＭＥＭ＿ＷＲＩＴＥ，ＭＥＭ＿ＲＥＡＤとＥＥＣＣ＿ＲＥＡＤ、ＥＥＣＣ＿ＷＲＩＴＥを発行するが、データ転送時に標準ＥＣＣが付加されないことが、第１の実施形態と異なる。具体的には、
ＭＥＭ＿ＷＲＩＴＥによる書込み時、受信データには標準ＥＣＣは含まれず、不揮発性メモリ３００Ａ内部で標準ＥＣＣを付加して保存する。
ＭＥＭ＿ＲＥＡＤによる読出し時、標準ＥＣＣで訂正後のデータをメモリコントローラ２００Ａに送信する。
ＥＥＣＣ＿ＷＲＩＴＥによる拡張ＥＣＣ保存時、受信する拡張ＥＣＣ情報には標準ＥＣＣは含まれず、不揮発性メモリ３００Ａ内部で標準ＥＣＣを付加して保存する。
ＥＥＣＣ＿ＲＥＡＤによる拡張ＥＣＣ読出し時、標準ＥＣＣで訂正後の拡張ＥＣＣをメモリコントローラ２００Ａ送信する。
次に、不揮発性メモリ３００Ａでの、ＭＥＭ＿ＷＲＩＴＥによるデータ書込み時の標準ＥＣＣの生成と、ＭＥＭ＿ＲＥＡＤによるデータ読出し時の誤り検出・訂正の動作について説明する。
【００７２】
ＭＥＭ＿ＷＲＩＴＥによる不揮発性メモリ３００Ａへのデータ書込み時は、不揮発性メモリ３００Ａはメモリインタフェース部３０１でコマンドを受信すると制御部３０６に通知し、書き込みデータをデータバッファ部３０７に受信する。
制御部３０６は、コマンドをデコードし、ＭＥＭ＿ＷＲＩＴＥであることを判別し、データバッファ部３０７の書込みデータから標準ＥＣＣを生成し、データをデータ領域３０３へ書込み、標準ＥＣＣを標準ＥＣＣ領域３０４に書き込む。
【００７３】
ＭＥＭ＿ＲＥＡＤによる不揮発性メモリ３００Ａからのデータ読出し時は、不揮発性メモリ３００Ａはメモリインタフェース部３０１でコマンドを受信すると制御部３０６に通知する。
制御部３０６は、コマンドをデコードし、ＭＥＭ＿ＲＥＡＤであることを判別し、データ領域３０３と標準ＥＣＣ領域３０４からデータバッファ部３０７へ読み込み、標準ＥＣＣ処理部によってデータの誤り検出・訂正処理を行った後に、メモリインタフェース部３０１を介してメモリコントローラ２００Ａへデータを送信する。もし訂正不可能エラーが発生した場合には、メモリコントローラ２００Ａへ通知し、訂正処理前のデータをメモリインタフェース部３０１を介してメモリコントローラ２００Ａへ送信する。
【００７４】
次に、ＳＹＳ＿ＲＥＡＤによるメモリコントローラ２００Ａからのデータ読出し時の動作について説明する。
図１５は、本第２の実施形態に係るＳＹＳ＿ＲＥＡＤ実行時のメモリコントローラ２００Ａの動作フローチャートである。
第１の実施形態である図１０と比べると、ステップＳＴ３２Ａ、ＳＴ３３Ａ、ＳＴ３７Ａ、ＳＴ３９Ａの処理が異なる。その他の処理は第１の実施形態と同じである。
【００７５】
第２の実施形態では、ステップＳＴ３２Ａ、ＳＴ３７Ａ、ＳＴ３９Ａで標準ＥＣＣ訂正後のデータを受信する。
ステップＳＴ３３Ａで、メモリコントローラ２００Ａは標準ＥＣＣの訂正不可能エラーの発生の有無を不揮発性メモリ３００Ａから受信し、拡張ＥＣＣの処理を実施するかを決める。
不揮発性メモリ３００Ａ内の標準ＥＣＣ処理部で訂正不可能エラーが発生したデータは、訂正前のデータをメモリコントローラ２００Ａへ出力する。
【００７６】
＜３．第３の実施形態＞
図１６は、本発明の第３の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【００７７】
本第３の実施形態に係るメモリシステム１０Ｂが第１の実施形態に係るメモリシステム１０と異なる点は次の通りである。
第１の実施形態に係るメモリシステム１０においては、標準ＥＣＣ処理および拡張ＥＣＣ処理をメモリコントローラ２００で行っている。
これに対して、本第３の実施形態に係るメモリシステム１０Ｂにおいては、標準ＥＣＣ処理はメモリコントローラ２００Ｂで処理され、拡張ＥＣＣ処理はホスト装置１００Ｂで処理される。
これに対応して、メモリシステム１０Ｂにおいて、メモリコントローラ２００Ｂの不揮発性メモリ制御部２０２Ｂに、標準・拡張ＥＣＣ処理部に代わり標準ＥＣＣ処理部２０８が配置され、ホスト装置１００Ｂに、拡張ＥＣＣ処理部１０３が配置され、ＣＰＵ１０１によって制御される。
ホスト装置１００Ｂの拡張ＥＣＣ処理部１０３は、その実現手段としてハードウェアでも、ソフトウェアでもよい。
【００７８】
第３の実施形態において、ホスト装置１００Ｂは、拡張ＥＣＣを生成する機能、拡張ＥＣＣの誤り検出・訂正処理を行う機能を有する。
ホスト装置１００Ｂはメモリコントローラ２００Ｂに対して、ＳＹＳ＿ＷＲＩＴＥ、ＳＹＳ＿ＲＥＡＤとＥＥＣＣ＿ＳＥＴ、ＥＥＣＣ＿ＧＥＴ、ＥＥＣＣ＿ＣＬＲを発行するが、データアクセスだけでなく、拡張ＥＣＣ処理のためにこれらのコマンドを発行することが、第１の実施形態と異なる。
ＳＹＳ＿ＷＲＩＴＥによる書込みは、第１の実施形態と動作は変わらない。
ＳＹＳ＿ＲＥＡＤによる読出しは、メモリコントローラ２００Ｂが標準ＥＣＣによる訂正不可能エラーが発生したことを通知する機能を持つことが、第１の実施形態と異なる。ホスト装置１００Ｂはメモリコントローラ２００Ｂから標準ＥＣＣ訂正不可能エラーを受信した場合に、拡張ＥＣＣブロック２３０のページデータ２１０をＳＹＳ_ＲＥＡＤを使って読出し、拡張ＥＣＣによる訂正処理を行う。
ＥＥＣＣ＿ＳＥＴによる拡張ＥＣＣ設定は、ホスト装置１００Ｂがコマンドとともに図９にあるようなフォーマットの拡張ＥＣＣを加えて、メモリコントローラ２００Ｂに送信することが、第１の実施形態と異なる。
ＥＥＣＣ＿ＧＥＴによる拡張ＥＣＣ読出しは、第１の実施形態と動作は変わらない。
ＥＥＣＣ＿ＣＬＲによる拡張ＥＣＣ削除は、第１の実施形態と動作は変わらない。
【００７９】
メモリコントローラ２００Ｂは不揮発性メモリ３００に対して、ＭＥＭ＿ＷＲＩＴＥ、ＭＥＭ＿ＲＥＡＤ、ＥＥＣＣ＿ＷＲＩＴＥ、ＥＥＣＣ＿ＲＥＡＤを発行するが、これらの動作は第１の実施形態と同じである。
【００８０】
次に第３の実施形態で特徴的なＥＥＣＣ＿ＳＥＴ時と、ＳＹＳ＿ＲＥＡＤ時の動作ついて説明する。
図１７（Ａ）および（Ｂ）は、本第３の実施形態に係るＥＥＣＣ＿ＳＥＴ処理時の、ホスト装置１００Ｂおよびメモリコントローラ２００Ｂの動作フローチャートである。
図１７（Ａ）はホスト装置１００Ｂの動作を、図１７（Ｂ）はメモリコントローラ２００Ｂの動作を示している。
【００８１】
図１７（Ａ）で、ホスト装置１００Ｂは、メモリコントローラ２００ＢにＳＹＳ＿ＲＥＡＤを送信し、拡張ＥＣＣで保護する拡張ＥＣＣブロック２３０のページデータ２１０を読出す（ＳＴ６１）。
読出したデータから拡張ＥＣＣを生成し、さらに拡張ＥＣＣ有効フラグＦＬＥＥＶ４０２を設定し（ＳＴ６２）、ＥＥＣＣ＿ＳＥＴと共にメモリコントローラ２００Ｂに送信する（ＳＴ６３）。
【００８２】
図１７（Ｂ）で、メモリコントローラ２００Ｂのホストインタフェース部２０１は、ＥＥＣＣ＿ＳＥＴを受信すると、不揮発性メモリ制御部２０２Ｂの制御部２０５に通知し、拡張ＥＣＣ４０３と拡張ＥＣＣ有効フラグＦＬＥＥＶ４０２をデータバッファ部２０３に書き込む。
制御部２０５は、受信したコマンドをデコードし、ＥＥＣＣ＿ＳＥＴを受信したことを判別する。そして、制御部２０５は、受信した拡張ＥＣＣ４０３とＦＬＥＥＶ４０２を図９にあるフォーマットに整え（ＳＴ７１）、標準ＥＣＣを計算し、不揮発性メモリ３００にＥＥＣＣ＿ＷＲＩＴＥと共に送信する（ＳＴ７２）。
【００８３】
次に、本第３の実施形態に係るホスト装置１００Ｂによるデータ読出し時の拡張ＥＣＣ訂正処理について説明する。図１８は、ホスト装置１００Ｂのデータ読出し時の動作フローチャートである。
【００８４】
図１８のフローチャートと、第１の実施形態のフローチャート図１０との違いは、第１の実施形態は拡張ＥＣＣ、標準ＥＣＣをメモリコントローラが処理するのに対して、第３の実施形態は拡張ＥＣＣをホスト装置、標準ＥＣＣを不揮発性メモリが処理することである。
ホスト装置１００ＢはステップＳＴ３１Ｂ、ＳＴ３２Ｂで、ＳＹＳ＿ＲＥＡＤを使ってデータを読み込む。ＳＴ３３Ｂでメモリコントローラ２００Ｂより標準ＥＣＣ訂正不可能エラーの発生の通知を受けた場合、拡張ＥＣＣによる訂正処理（ＳＴ３６Ｂ〜ＳＴ４０）を試みる。
拡張ＥＣＣブロック２３０のページデータ２１０は、ＳＹＳ＿ＲＥＡＤを使用して読み込まれる。（ＳＴ３６Ｂ）その際受信データ２１０は標準ＥＣＣ２１５で訂正済みであり、訂正不可能だった場合には訂正前のデータ２１０を受信する（ＳＴ３７Ｂ）。次に拡張ＥＣＣ２２０を読み込む為のＥＥＣＣ＿ＧＥＴがメモリコントローラ２００Ｂに送信され（ＳＴ３８Ｂ），標準ＥＣＣで訂正済みの拡張ＥＣＣ２２０を受信する。（ＳＴ３９Ｂ）以降のステップＳＴ４０、ＳＴ４１はホスト装置１００Ｂが処理を実行すること以外は第１の実施形態と同じである。
【００８５】
＜４．第４の実施形態＞
図１９は、本発明の第４の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【００８６】
本第４の実施形態に係るメモリシステム１０Ｃが第１の実施形態に係るメモリシステム１０と異なる点は次の通りである。
すなわち、第１の実施形態に係るメモリシステム１０においては、標準ＥＣＣ処理および拡張ＥＣＣ処理をメモリコントローラ２００で行っている。
これに対して、本第４の実施形態に係るメモリシステム１０Ｃにおいては、標準ＥＣＣ処理および拡張ＥＣＣ処理は不揮発性メモリ３００Ｃで処理される。
これに対応して、メモリシステム１０Ｃにおいて、メモリコントローラ２００Ｃの不揮発性メモリ制御部２０２Ｃに、標準・拡張ＥＣＣ処理部は配置されていない。
そして、不揮発性メモリ３００Ｃに、データバッファ部３０７、および標準・拡張ＥＣＣ処理部３０９が配置されている。
【００８７】
このように、本第４の実施形態においては、標準ＥＣＣおよび拡張ＥＣＣの処理が不揮発性メモリ３００Ｃで行われ、第１の実施形態でメモリコントローラが行っていた処理が不揮発性メモリ３００Ｃで実施される。
【００８８】
＜５．第５の実施形態＞
図２０は、本発明の第５の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【００８９】
本第５の実施形態に係るメモリシステム１０Ｄが第１の実施形態に係るメモリシステム１０と異なる点は次の通りである。
すなわち、第１の実施形態に係るメモリシステム１０においては、標準ＥＣＣ処理および拡張ＥＣＣ処理をメモリコントローラ２００で行っている。
これに対して、本第５の実施形態に係るメモリシステム１０Ｄにおいては、標準ＥＣＣ処理は不揮発性メモリ３００Ｄで処理され、拡張ＥＣＣ処理はホスト装置１００Ｄで処理される。
これに対応して、メモリシステム１０Ｄにおいて、メモリコントローラ２００Ｄの不揮発性メモリ制御部２０２Ｄに、標準・拡張ＥＣＣ処理部は配置されていない。
そして、不揮発性メモリ３００Ｄに、データバッファ部３０７、および標準ＥＣＣ処理部３０８が配置され、ホスト装置１００Ｄに拡張ＥＣＣ処理部１０３が配置されている。
【００９０】
このように、本第５の実施形態においては、標準ＥＣＣの処理が不揮発性メモリ３００Ｄで実行され、拡張ＥＣＣの処理がホスト装置１００Ｄで実行される。
標準ＥＣＣの処理は第２の実施形態と同じで、メモリコントローラ２００Ｄは拡張ＥＣＣの処理機能がなく、不揮発性メモリ３００Ｄから出力される標準ＥＣＣ訂正不可能エラーをホスト装置１００Ｄに通知する機能を有する。
拡張ＥＣＣの処理は第３の実施形態と同じである。
【００９１】
＜６．第６の実施形態＞
図２１は、本発明の第６の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【００９２】
本第６の実施形態に係るメモリシステム１０Ｅが第１の実施形態に係るメモリシステム１０と異なる点は次の通りである。
すなわち、第１の実施形態に係るメモリシステム１０においては、標準ＥＣＣ処理および拡張ＥＣＣ処理をメモリコントローラ２００で行っている。
これに対して、本第６の実施形態に係るメモリシステム１０Ｄにおいては、標準ＥＣＣ処理および拡張ＥＣＣ処理はホスト装置１００Ｅで処理される。
これに対応して、メモリシステム１０Ｅにおいて、メモリコントローラ２００Ｅの不揮発性メモリ制御部２０２Ｅに、標準・拡張ＥＣＣ処理部は配置されていない。
そして、ホスト装置１００Ｅに、拡張ＥＣＣ処理部１０３および標準ＥＣＣ処理部１０４が配置されている。また、ホスト装置１００Ｅの拡張ＥＣＣ処理部は標準ＥＣＣ処理部で訂正不可能エラーが発生した場合に必要となる処理であるため、ソフトウェアで実現されていてもよい。
【００９３】
このように、本第６の実施形態においては、標準ＥＣＣと拡張ＥＣＣがホスト装置１００で実行され、第１の実施形態でメモリコントローラ２００が行っていた処理がホスト装置１００Ｅで実行される。
【００９４】
＜７．第７の実施形態＞
図２２は、本発明の第７の実施形態に係る不揮発性メモリ装置を搭載したメモリシステムの構成を示す図である。
【００９５】
本第７の実施形態に係るメモリシステム１０Ｆが第１の実施形態に係るメモリシステム１０と異なる点は次の通りである。
すなわち、第１の実施形態に係るメモリシステム１０においては、ホスト装置１００とメモリコントローラ２００が別々に形成されている。
これに対して、本第７の実施形態に係るメモリシステム１０Ｆにおいては、メモリコントローラ２００Ｆがホスト装置１００Ｆに含まれるように形成されている。
これに対応して、本第７の実施形態に係るメモリシステム１０Ｆにおいては、ホストインタフェース部１０２，２０１が不要となっている。
その他の構成、機能は第１の実施形態と同様である。
【符号の説明】
【００９６】
１０，１０Ａ〜１０Ｆ・・・メモリシステム、１００，１００Ｂ〜１００Ｆ・・・ホスト装置、１０１・・・ＣＰＵ、１０２・・・ホストインタフェース部、１０３・・・拡張ＥＣＣ処理部、２００，２００Ａ，２００Ｂ〜２００Ｆ・・・メモリコントローラ、２０１・・・ホストインタフェース部、２０２，２０２Ａ〜２０２Ｆ・・・不揮発性メモリ制御部、２０３・・・データバッファ部、２０４・・・メモリインタフェース部、２０５・・・制御部、２０６・・・標準・拡張ＥＣＣ処理部、２０７・・・拡張ＥＣＣ処理部、２０８・・・標準ＥＣＣ処理部、３００，３００Ｃ，３００Ｄ・・・不揮発性メモリ、３０１・・・メモリインタフェース部、３０２・・・メモリセルアレイ、３０３・・・データ領域、３０４・・・標準ＥＣＣ領域、３０５・・・拡張ＥＣＣ領域、３０６・・・制御部、３０７・・・データバッファ部、３０８・・・標準ＥＣＣ処理部、３０９・・・標準・拡張ＥＣＣ処理部。
【図１】
0005540969.tif 000002
【図２】
0005540969.tif 000003
【図３】
0005540969.tif 000004
【図４】
0005540969.tif 000005
【図５】
0005540969.tif 000006
【図６】
0005540969.tif 000007
【図７】
0005540969.tif 000008
【図８】
0005540969.tif 000009
【図９】
0005540969.tif 000010
【図１０】
0005540969.tif 000011
【図１１】
0005540969.tif 000012
【図１２】
0005540969.tif 000013
【図１３】
0005540969.tif 000014
【図１４】
0005540969.tif 000015
【図１５】
0005540969.tif 000016
【図１６】
0005540969.tif 000017
【図１７】
0005540969.tif 000018
【図１８】
0005540969.tif 000019
【図１９】
0005540969.tif 000020
【図２０】
0005540969.tif 000021
【図２１】
0005540969.tif 000022
【図２２】
0005540969.tif 000023