JP2012003569A - メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents
メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDFInfo
- Publication number
- JP2012003569A JP2012003569A JP2010138927A JP2010138927A JP2012003569A JP 2012003569 A JP2012003569 A JP 2012003569A JP 2010138927 A JP2010138927 A JP 2010138927A JP 2010138927 A JP2010138927 A JP 2010138927A JP 2012003569 A JP2012003569 A JP 2012003569A
- Authority
- JP
- Japan
- Prior art keywords
- data
- code
- cyclic redundancy
- redundancy check
- error
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】バーストエラーが発生したために、読み出されたデータに含まれる全てのビットの論理値が、“1”又は“0”になったときに、そのバーストエラーの発生を高い確率で検出すること。
【解決手段】ビットエラーを訂正するためのECCに符号化されたデータと共に、論理値0のビットと論理値1のビットの双方を複数ビットずつ含む整合性符号をフラッシュメモリ内のページに書き込む。そして、そのデータをフラッシュメモリから読み出したときに、そのデータ及びそのデータと共に書き込まれた整合性符号に含まれる全てのビットが論理値0のビットであるとき、又は、その全てのビットが論理値1のビットであるとき、ECCに基づいて訂正不能エラーの発生が検出されなかった場合でも、訂正不能エラーが発生したと判断し、ホストシステムにその旨を通知する。
【選択図】図5
【解決手段】ビットエラーを訂正するためのECCに符号化されたデータと共に、論理値0のビットと論理値1のビットの双方を複数ビットずつ含む整合性符号をフラッシュメモリ内のページに書き込む。そして、そのデータをフラッシュメモリから読み出したときに、そのデータ及びそのデータと共に書き込まれた整合性符号に含まれる全てのビットが論理値0のビットであるとき、又は、その全てのビットが論理値1のビットであるとき、ECCに基づいて訂正不能エラーの発生が検出されなかった場合でも、訂正不能エラーが発生したと判断し、ホストシステムにその旨を通知する。
【選択図】図5
Description
本発明は、フラッシュメモリに書き込まれるデータに生じるビットエラーを訂正する機能と、当該訂正における誤訂正を検出する機能を有するメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
フラッシュメモリに格納されるデータに生じるビットエラーを訂正する方法として、リードソロモン符号、BCH符号等の誤り訂正符号(ECC : Error Correcting Code)に基づいた訂正方法が知られている。この誤り訂正符号に基づいた訂正方法においては、符号化の際に付加される冗長ビットのビット数に応じて訂正可能なビットエラーのビット数(以下、訂正能力と言う。)が決まる。従って、訂正能力を超えるビット数のビットエラーが生じた場合には、そのビットエラーを訂正することができない。このような場合に、この誤り訂正符号に基づいた訂正方法により正常に処理できる範囲であれば、訂正能力を超えるビット数のビットエラーが生じたことが検出され、ビットエラーの訂正処理は行われない。しかしながら、正常に処理できる範囲を超える多数のビットエラーが生じたときには、訂正能力を超えるビット数のビットエラーが生じたことが検出されずに、ビットエラーの訂正処理が行われてしまうことがある。このような場合、訂正能力を超えるビット数のビットエラーが生じたことが看過されてしまうだけでなく、正常にビットエラーが訂正されていないデータが、正常にビットエラーが訂正されたデータとして取り扱われてしまう。
このような問題を解決するため、特許文献1では、誤り訂正符号に基づいた訂正処理が行われた後に、再度、符号化の際に付加される冗長ビットを生成し、その冗長ビットに基づいて、その訂正処理が正常に行われたか否かを判断している。つまり、その訂正処理後のデータに基づいて、再度、符号化の際に付加される冗長ビットを生成し、その冗長ビットと元の冗長ビットを比較して、その訂正処理が正常に行われたか否かを判断している。
また、特許文献2では、誤り訂正符号に基づいた訂正処理が行われた後に、巡回冗長検査(CRC : Cyclic Redundancy Check)符号に基づいたビットエラーの検出処理を行うことにより、その訂正処理が正常に行われたか否かを判断している。
プロセスの微細化、メモリセルの多値化により、フラッシュメモリは高密度化されたが、フラッシュメモリの記憶素子としての信頼性は低下している。つまり、フラッシュメモリからの読み出しデータに生じるランダムエラーの発生頻度が増加し、バーストエラーが発生することも珍しくなくなっている。
バーストエラーが発生したページでは、そのページ内の全てのビットの論理値が、“1”になってしまうことや、“0”になってしまうことがある。このような場合、BCH符号等の誤り訂正符号に基づいた訂正処理では、訂正能力を超えるビット数のビットエラーが生じたことが検出されない。更に、訂正処理後に再度生成された冗長ビットに基づいたビットエラーの検出処理や、巡回冗長検査符号に基づいたビットエラーの検出処理でも、誤り訂正符号に基づいた訂正処理が正常に行われなかったことを検出することができない。このようなことは、ページ内の全てのビットの論理値が、“1”又は“0”にならなくても、訂正処理の単位データ(復号化の単位データ)及び巡回冗長検査符号に含まれる全てのビットの論理値が、“1”又は“0”になれば起こりうる。
そこで、本発明は、バーストエラーが発生したために、読み出されたデータに含まれる全てのビットの論理値が、“1”又は“0”になったときに、そのバーストエラーの発生を検出しうるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することを目的とする。
本発明の第1の側面に従う、メモリコントローラは、
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化する手段であって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化手段と、
論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を出力するデータパターン符号出力手段と、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページに書き込む書き込み手段と、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページから読み出す読み出し手段と、
前記読み出し手段により読み出された前記第1の符号化データを復号化する手段であって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化手段と、
前記読み出し手段により読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出手段と、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知手段とを備え、
前記訂正不能エラー通知手段は、前記第1の復号化手段が訂正不能エラーを検出しなかった場合でも、前記第1の検出手段又は前記第2の検出手段がエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する。
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化する手段であって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化手段と、
論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を出力するデータパターン符号出力手段と、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページに書き込む書き込み手段と、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページから読み出す読み出し手段と、
前記読み出し手段により読み出された前記第1の符号化データを復号化する手段であって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化手段と、
前記読み出し手段により読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出手段と、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知手段とを備え、
前記訂正不能エラー通知手段は、前記第1の復号化手段が訂正不能エラーを検出しなかった場合でも、前記第1の検出手段又は前記第2の検出手段がエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する。
本発明の第2の側面に従う、メモリコントローラは、
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化する手段であって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化手段と、
前記所定データ長のデータ毎に、当該データの巡回冗長検査符号である第1の巡回冗長検査符号を生成する第1の巡回冗長検査符号生成手段と、
前記第1の巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成する反転符号生成手段と、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページに書き込む書き込み手段と、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページから読み出す読み出し手段と、
前記読み出し手段により読み出された前記第1の符号化データを復号化する手段であって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化手段と、
前記第1の復号化手段により復号化されたデータの巡回冗長検査符号である第2の巡回冗長検査符号を生成する第2の巡回冗長検査符号生成手段と、
前記読み出し手段により読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出手段と、
前記読み出し手段により読み出された前記第1の巡回冗長検査符号と前記第2の巡回冗長検査符号生成手段により生成された前記第2の巡回冗長検査符号を比較し、両者が不一致のときにエラー検出信号を出力する第3の検出手段と、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知手段とを備え、
前記訂正不能エラー通知手段は、前記第1の復号化手段が訂正不能エラーを検出しなかった場合でも、前記第1の検出手段、前記第2の検出手段及び前記第3の検出手段のうち、少なくとも1つがエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する。
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化する手段であって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化手段と、
前記所定データ長のデータ毎に、当該データの巡回冗長検査符号である第1の巡回冗長検査符号を生成する第1の巡回冗長検査符号生成手段と、
前記第1の巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成する反転符号生成手段と、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページに書き込む書き込み手段と、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページから読み出す読み出し手段と、
前記読み出し手段により読み出された前記第1の符号化データを復号化する手段であって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化手段と、
前記第1の復号化手段により復号化されたデータの巡回冗長検査符号である第2の巡回冗長検査符号を生成する第2の巡回冗長検査符号生成手段と、
前記読み出し手段により読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出手段と、
前記読み出し手段により読み出された前記第1の巡回冗長検査符号と前記第2の巡回冗長検査符号生成手段により生成された前記第2の巡回冗長検査符号を比較し、両者が不一致のときにエラー検出信号を出力する第3の検出手段と、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知手段とを備え、
前記訂正不能エラー通知手段は、前記第1の復号化手段が訂正不能エラーを検出しなかった場合でも、前記第1の検出手段、前記第2の検出手段及び前記第3の検出手段のうち、少なくとも1つがエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する。
本発明の第2の側面に従う、メモリコントローラは、
前記第1の巡回冗長検査符号及び前記反転符号に生じるビットエラーを訂正するため、これらの符号を符号化する手段であって、この符号化により、これらの符号に冗長ビットが付加された第2の符号化データを出力する第2の符号化手段と、
前記第2の符号化データを復号化する手段であって、この復号化により、当該第2の符号化データに含まれる前記第1の巡回冗長検査符号及び前記反転符号に生じたビットエラーを訂正する第2の復号化手段とを更に備え、
前記書き込み手段は、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページに書き込み、
前記読み出し手段は、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページから読み出すようにしてもよい。
前記第1の巡回冗長検査符号及び前記反転符号に生じるビットエラーを訂正するため、これらの符号を符号化する手段であって、この符号化により、これらの符号に冗長ビットが付加された第2の符号化データを出力する第2の符号化手段と、
前記第2の符号化データを復号化する手段であって、この復号化により、当該第2の符号化データに含まれる前記第1の巡回冗長検査符号及び前記反転符号に生じたビットエラーを訂正する第2の復号化手段とを更に備え、
前記書き込み手段は、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページに書き込み、
前記読み出し手段は、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページから読み出すようにしてもよい。
本発明の第3の側面に従う、メモリコントローラは、
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、
所定データ長のデータ毎に、当該データに論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を付加するデータパターン符号付加手段と、
前記所定データ長のデータ毎に、当該データ及びこのデータに付加される前記データパターン符号に生じるビットエラーを訂正するため、当該データ及び当該データパターン符号を併せて符号化する手段であって、この符号化により、当該データ及び当該データパターン符号に冗長ビットが付加された第1の符号化データを出力する第1の符号化手段と、
前記第1の符号化データをフラッシュメモリ内のページに書き込む書き込み手段と、
前記第1の符号化データをフラッシュメモリ内のページから読み出す読み出し手段と、
前記読み出し手段により読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データを復号化する手段であって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化手段と、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知手段とを備え、
前記データパターン符号は、前記第1の復号化手段の訂正能力を超えるビット数の論理値0のビットと論理値1のビットをそれぞれ含み、
前記訂正不能エラー通知手段は、前記第1の検出手段又は前記第2の検出手段がエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する。
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、
所定データ長のデータ毎に、当該データに論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を付加するデータパターン符号付加手段と、
前記所定データ長のデータ毎に、当該データ及びこのデータに付加される前記データパターン符号に生じるビットエラーを訂正するため、当該データ及び当該データパターン符号を併せて符号化する手段であって、この符号化により、当該データ及び当該データパターン符号に冗長ビットが付加された第1の符号化データを出力する第1の符号化手段と、
前記第1の符号化データをフラッシュメモリ内のページに書き込む書き込み手段と、
前記第1の符号化データをフラッシュメモリ内のページから読み出す読み出し手段と、
前記読み出し手段により読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データを復号化する手段であって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化手段と、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知手段とを備え、
前記データパターン符号は、前記第1の復号化手段の訂正能力を超えるビット数の論理値0のビットと論理値1のビットをそれぞれ含み、
前記訂正不能エラー通知手段は、前記第1の検出手段又は前記第2の検出手段がエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する。
本発明の第3の側面に従う、メモリコントローラは、
前記データパターン符号付加手段が、前記所定データ長のデータ毎に、当該データの巡回冗長検査符号とこの巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成し、当該巡回冗長検査符号及び当該反転符号を前記データパターン符号として前記所定データ長のデータに付加するようにしてもよい。
前記データパターン符号付加手段が、前記所定データ長のデータ毎に、当該データの巡回冗長検査符号とこの巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成し、当該巡回冗長検査符号及び当該反転符号を前記データパターン符号として前記所定データ長のデータに付加するようにしてもよい。
本発明の第4の側面に従う、フラッシュメモリシステムは、
前記第1又は第2の側面に従うメモリコントローラと、
このメモリコントローラにより制御されるフラッシュメモリを備える。
前記第1又は第2の側面に従うメモリコントローラと、
このメモリコントローラにより制御されるフラッシュメモリを備える。
本発明の第5の側面に従う、フラッシュメモリの制御方法は、
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化するステップであって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化ステップと、
論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を出力するデータパターン符号出力ステップと、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページに書き込む書き込みステップと、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページから読み出す読み出しステップと、
前記読み出しステップにより読み出された前記第1の符号化データを復号化するステップであって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出ステップと、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知ステップとを備え、
前記訂正不能エラー通知ステップでは、前記第1の復号化ステップにおいて訂正不能エラーが検出されなかった場合でも、前記第1の検出ステップ又は前記第2の検出ステップにおいてエラー検出信号が出力されたときに、ホストシステムに訂正不能エラーが発生したことを通知する。
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化するステップであって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化ステップと、
論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を出力するデータパターン符号出力ステップと、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページに書き込む書き込みステップと、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページから読み出す読み出しステップと、
前記読み出しステップにより読み出された前記第1の符号化データを復号化するステップであって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出ステップと、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知ステップとを備え、
前記訂正不能エラー通知ステップでは、前記第1の復号化ステップにおいて訂正不能エラーが検出されなかった場合でも、前記第1の検出ステップ又は前記第2の検出ステップにおいてエラー検出信号が出力されたときに、ホストシステムに訂正不能エラーが発生したことを通知する。
本発明の第6の側面に従う、フラッシュメモリの制御方法は、
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化するステップであって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化ステップと、
前記所定データ長のデータ毎に、当該データの巡回冗長検査符号である第1の巡回冗長検査符号を生成する第1の巡回冗長検査符号生成ステップと、
前記第1の巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成する反転符号生成ステップと、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページに書き込む書き込みステップと、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページから読み出す読み出しステップと、
前記読み出しステップにより読み出された前記第1の符号化データを復号化するステップであって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化ステップと、
前記第1の復号化ステップにより復号化されたデータの巡回冗長検査符号である第2の巡回冗長検査符号を生成する第2の巡回冗長検査符号生成ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出ステップと、
前記読み出しステップにより読み出された前記第1の巡回冗長検査符号と前記第2の巡回冗長検査符号生成手段により生成された前記第2の巡回冗長検査符号を比較し、両者が不一致のときにエラー検出信号を出力する第3の検出ステップと、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知ステップとを備え、
前記訂正不能エラー通知ステップでは、前記第1の復号化ステップにおいて訂正不能エラーが検出されなかった場合でも、前記第1の検出ステップ、前記第2の検出ステップ及び前記第3の検出ステップのうち、少なくとも1つのステップにおいてエラー検出信号が出力されたときに、ホストシステムに訂正不能エラーが発生したことを通知する。
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化するステップであって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化ステップと、
前記所定データ長のデータ毎に、当該データの巡回冗長検査符号である第1の巡回冗長検査符号を生成する第1の巡回冗長検査符号生成ステップと、
前記第1の巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成する反転符号生成ステップと、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページに書き込む書き込みステップと、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページから読み出す読み出しステップと、
前記読み出しステップにより読み出された前記第1の符号化データを復号化するステップであって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化ステップと、
前記第1の復号化ステップにより復号化されたデータの巡回冗長検査符号である第2の巡回冗長検査符号を生成する第2の巡回冗長検査符号生成ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出ステップと、
前記読み出しステップにより読み出された前記第1の巡回冗長検査符号と前記第2の巡回冗長検査符号生成手段により生成された前記第2の巡回冗長検査符号を比較し、両者が不一致のときにエラー検出信号を出力する第3の検出ステップと、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知ステップとを備え、
前記訂正不能エラー通知ステップでは、前記第1の復号化ステップにおいて訂正不能エラーが検出されなかった場合でも、前記第1の検出ステップ、前記第2の検出ステップ及び前記第3の検出ステップのうち、少なくとも1つのステップにおいてエラー検出信号が出力されたときに、ホストシステムに訂正不能エラーが発生したことを通知する。
本発明の第6の側面に従う、フラッシュメモリの制御方法は、
前記第1の巡回冗長検査符号及び前記反転符号に生じるビットエラーを訂正するため、これらの符号を符号化するステップであって、この符号化により、これらの符号に冗長ビットが付加された第2の符号化データを出力する第2の符号化ステップと、
前記第2の符号化データを復号化するステップであって、この復号化により、当該第2の符号化データに含まれる前記第1の巡回冗長検査符号及び前記反転符号に生じたビットエラーを訂正する第2の復号化ステップとを更に備え、
前記書き込みステップでは、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページに書き込み、
前記読み出しステップでは、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページから読み出すようにしてもよい。
前記第1の巡回冗長検査符号及び前記反転符号に生じるビットエラーを訂正するため、これらの符号を符号化するステップであって、この符号化により、これらの符号に冗長ビットが付加された第2の符号化データを出力する第2の符号化ステップと、
前記第2の符号化データを復号化するステップであって、この復号化により、当該第2の符号化データに含まれる前記第1の巡回冗長検査符号及び前記反転符号に生じたビットエラーを訂正する第2の復号化ステップとを更に備え、
前記書き込みステップでは、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページに書き込み、
前記読み出しステップでは、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページから読み出すようにしてもよい。
本発明の第7の側面に従う、フラッシュメモリの制御方法は、
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
所定データ長のデータ毎に、当該データに論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を付加するデータパターン符号付加ステップと、
前記所定データ長のデータ毎に、当該データ及びこのデータに付加される前記データパターン符号に生じるビットエラーを訂正するため、当該データ及び当該データパターン符号を併せて符号化するステップであって、この符号化により、当該データ及び当該データパターン符号に冗長ビットが付加された第1の符号化データを出力する第1の符号化ステップと、
前記第1の符号化データをフラッシュメモリ内のページに書き込む書き込みステップと、
前記第1の符号化データをフラッシュメモリ内のページから読み出す読み出しステップと、
前記読み出しステップにより読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データを復号化するステップであって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化ステップと、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知ステップとを備え、
前記データパターン符号は、前記第1の復号化ステップにおける訂正能力を超えるビット数の論理値0のビットと論理値1のビットをそれぞれ含み、
前記訂正不能エラー通知ステップでは、前記第1の検出ステップ又は前記第2の検出ステップにおいてエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する。
ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
所定データ長のデータ毎に、当該データに論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を付加するデータパターン符号付加ステップと、
前記所定データ長のデータ毎に、当該データ及びこのデータに付加される前記データパターン符号に生じるビットエラーを訂正するため、当該データ及び当該データパターン符号を併せて符号化するステップであって、この符号化により、当該データ及び当該データパターン符号に冗長ビットが付加された第1の符号化データを出力する第1の符号化ステップと、
前記第1の符号化データをフラッシュメモリ内のページに書き込む書き込みステップと、
前記第1の符号化データをフラッシュメモリ内のページから読み出す読み出しステップと、
前記読み出しステップにより読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データを復号化するステップであって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化ステップと、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知ステップとを備え、
前記データパターン符号は、前記第1の復号化ステップにおける訂正能力を超えるビット数の論理値0のビットと論理値1のビットをそれぞれ含み、
前記訂正不能エラー通知ステップでは、前記第1の検出ステップ又は前記第2の検出ステップにおいてエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する。
本発明の第7の側面に従う、フラッシュメモリの制御方法は、
前記データパターン符号付加ステップにおいて、前記所定データ長のデータ毎に、当該データの巡回冗長検査符号とこの巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成し、当該巡回冗長検査符号及び当該反転符号を前記データパターン符号として前記所定データ長のデータに付加するようにしてもよい。
前記データパターン符号付加ステップにおいて、前記所定データ長のデータ毎に、当該データの巡回冗長検査符号とこの巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成し、当該巡回冗長検査符号及び当該反転符号を前記データパターン符号として前記所定データ長のデータに付加するようにしてもよい。
本発明によれば、バーストエラーが発生したために、読み出されたデータに含まれる全てのビットの論理値が“1”又は“0”になったとき、そのバーストエラーの発生が整合性符号に基づいて検出される。従って、誤り訂正符号に基づいた訂正処理で看過された訂正不能エラーを高い確率で検出することができる。
図1に示されているように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3とで構成されている。メモリコントローラ3は、内部バス14を介してフラッシュメモリ2と接続されている。
フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
メモリコントローラ3は、図1に示されているように、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAM8と、バッファメモリ9と、フラッシュメモリインターフェースブロック10と、誤り訂正ブロック11と、ROM(Read Only Memory)12とから構成される。これら機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
ホストインターフェースブロック7は、ホストシステム4との間で行われるデータ、アドレス情報、ステータス情報、外部コマンド等の送受信を制御する。つまり、フラッシュメモリシステム1は、ホストインターフェースブロック7を介して、ホストシステム4から供給されるデータ等を取り込む。また、フラッシュメモリシステム1は、ホストインターフェースブロック7を介して、データ等をホストシステム4に供給する。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。
ホストインターフェースブロック7は、コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3を備えている。コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3には、ホストシステム4から与えられる情報が書き込まれる。コマンドレジスタR1には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタR2には、書き込むデータ又は読み出すデータのセクタ数が書き込まれる。LBAレジスタR3には、書き込み又は読み出しを開始する論理セクタに対応するLBA(Logical Block Address)が書き込まれる。LBAは、512バイトの容量を持った論理セクタに割り当てられたアドレスである。
SRAM(Static
Random Access Memory)8は、フラッシュメモリ2の制御に必要な情報を一時的に格納する揮発性メモリである。フラッシュメモリ2にアクセスするために必要な各種のテーブルは、SRAM8に保持され、SRAM8上で更新される。フラッシュメモリ2にアクセスするために必要なテーブルが、SRAM8に保持されていない場合は、そのテーブルはSRAM8上で作成される。但し、そのテーブルが、フラッシュメモリ2に格納されている場合は、格納されているテーブルがフラッシュメモリ2から読み出され、SRAM8に保持される。上記各種テーブルには、アドレス変換テーブル、検索テーブル、不良ブロックテーブル等が含まれる。アドレス変換テーブルは、論理ブロックと物理ブロックの対応関係を管理するためのテーブルである。検索テーブルは、空きブロックを検索するためのテーブルである。不良ブロックテーブルは不良ブロックを管理するためのテーブルである。
Random Access Memory)8は、フラッシュメモリ2の制御に必要な情報を一時的に格納する揮発性メモリである。フラッシュメモリ2にアクセスするために必要な各種のテーブルは、SRAM8に保持され、SRAM8上で更新される。フラッシュメモリ2にアクセスするために必要なテーブルが、SRAM8に保持されていない場合は、そのテーブルはSRAM8上で作成される。但し、そのテーブルが、フラッシュメモリ2に格納されている場合は、格納されているテーブルがフラッシュメモリ2から読み出され、SRAM8に保持される。上記各種テーブルには、アドレス変換テーブル、検索テーブル、不良ブロックテーブル等が含まれる。アドレス変換テーブルは、論理ブロックと物理ブロックの対応関係を管理するためのテーブルである。検索テーブルは、空きブロックを検索するためのテーブルである。不良ブロックテーブルは不良ブロックを管理するためのテーブルである。
バッファメモリ9は、フラッシュメモリ2から読み出したデータ、又はフラッシュメモリ2に書き込むデータを、一時的に保持する揮発性メモリである。
フラッシュメモリインターフェースブロック10は、フラッシュメモリ2との間で行われるデータ、アドレス情報、ステータス情報、内部コマンド等の送受信を制御する。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。
誤り訂正ブロック11は、フラッシュメモリ2にデータを書き込むときに、そのデータをBCH符号の誤り訂正符号(ECC:Error Correcting Code)に符号化し、フラッシュメモリ2から符号化されたデータを読み出したときに、その符号化されたデータを復号化する。つまり、フラッシュメモリ2に書き込まれるデータは、冗長ビットが付加されたBCH符号に符号化されてフラッシュメモリ2に書き込まれ、その符号化されたデータ(冗長ビットが付加されたデータ)は、読み出されたときに復号化される。この復号化では、符号化の際に付加される冗長ビットのビット数に応じて、所定のビット数までのビットエラーが訂正される。更に、誤り訂正ブロック11は、このBCH符号に基づいた訂正機能に加えて、当該訂正機能の訂正能力を超えるビット数のビットエラーが発生したことを検出する検出機能を備えている。
ROM12は、フラッシュメモリ2を制御するために必要なファームウェアを格納するための不揮発性の記憶素子である。尚、フラッシュメモリシステム1を起動させるために必要な最小限のファームウェアだけをROM12に格納し、その他のファームウェアをフラッシュメモリ2に格納するようにしてもよい。
マイクロプロセッサ6は、ROM12又はフラッシュメモリ2から、ファームウェアを読み込み、ファームウェアに従って動作する。メモリコントローラ3に含まれる機能ブロックは、マイクロプロセッサ6により制御される。
フラッシュメモリ2は、NAND型フラッシュメモリであり、レジスタと、複数のメモリセルが2次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。尚、フラッシュメモリには、SLC(Single Level Cell)タイプのメモリセルで構成されたものと、MLC(Multi
Level Cell)タイプのメモリセルで構成されたものがある。
Level Cell)タイプのメモリセルで構成されたものがある。
NAND型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック(物理ブロック)単位で行われる。それぞれの物理ブロックは、複数のページ(物理ページ)で構成され、それぞれの物理ページは、ユーザ領域と冗長領域で構成されている。例えば、1個の物理ページは、4セクタ(2048バイト)のユーザ領域と、64バイトの冗長領域とで構成され、1個の物理ブロックは、64個の物理ページで構成されている。ユーザ領域は、ホストシステム4から与えられるデータを主に格納するための領域であり、冗長領域は、論理アドレス情報、ブロックステータス(フラグ)等の付加データを主に格納するための領域である。
論理アドレス情報は、当該情報に係る物理ブロックと対応する論理ブロックを特定するための情報である。ブロックステータス(フラグ)は、当該情報に係る物理ブロックが、不良ブロック(正常にデータの書き込み等を行うことができない物理ブロック)であるか否かを示すフラグである。尚、不良ブロックには、初期不良の不良ブロックと後発不良の不良ブロックがある。初期不良の不良ブロックは、出荷前に検出された不良ブロックである。後発不良の不良ブロックは、使用中に生じた不良ブロックである。初期不良の物理ブロックについては、不良ブロックであることを示すブロックステータス(フラグ)が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス(フラグ)を、ユーザ領域に書き込んでいる製造メーカもある。不良ブロックか否かの判断基準は、設計の際に決められる。
次に、誤り訂正ブロック11の構成及び誤り訂正ブロック11において行われる処理について説明する。
図2に示されているように、バッファメモリ9に保持されているデータがフラッシュメモリ2に書き込まれるとき、その書き込みデータは、第1の符号化ブロック21により符号化される。この符号化では、1セクタ(512バイト)単位で、BCH符号に符号化される。本実施の形態では、最大15ビットのビットエラーを訂正することができるように設計したため、つまり、訂正能力を15ビットに設定したため、第1の符号化ブロック21に入力された1セクタの書き込みデータは、その書き込みデータに195ビットの冗長ビットが付加された第1の符号化データに符号化される。この第1の符号化データは、フラッシュメモリインターフェースブロック10を介してフラッシュメモリ2に書き込まれる。この符号化では、図3に示されているように、第1の冗長ビット生成ブロック31で生成された195ビットの冗長ビットが、1セクタの書き込みデータに付加される。
更に、本実施の形態では、このBCH符号に基づいたビットエラーの訂正処理で、その訂正能力を超えるビットエラーが発生したことを検出するため、つまり、15ビットを超えるビットエラーが発生したことを検出するため、書き込みデータに基づいて生成された巡回冗長検査(CRC : Cyclic Redundancy Check)符号と整合性符号をフラッシュメモリに書き込んでいる。本実施の形態では、この巡回冗長検査符号と整合性符号をBCH符号に符号化してフラッシュメモリ2に書き込んでいる。
尚、整合性符号については、BCH符号に符号化しなくもよい。
第2の符号化ブロック22には書き込みデータが入力される。そして、第2の符号化ブロック22は、1セクタの書き込みデータ毎に、12ビットの巡回冗長検査符号と8ビットの整合性符号をBCH符号に符号化した第2の符号化データを出力する。第2の符号化データは最大4ビットのビットエラーを訂正することができるように設定したため、第2の符号化ブロック22は、巡回冗長検査符号と整合性符号に24ビットの冗長ビットを付加したものを第2の符号化データとして出力する。第2の符号化ブロック22は、図3に示されているように、第1のCRC生成ブロック32、整合性符号ブロック33及び第2の冗長ビット生成ブロック34で構成されている。第1のCRC生成ブロック32は、入力された1セクタの書き込みデータに基づいて、12ビットの巡回冗長検査符号を生成する。整合性符号ブロック33は、論理値“0”のビットと論理値“1”のビットをそれぞれ4ビットずつ含む8ビットの整合性符号を出力する。12ビットの巡回冗長検査符号と8ビットの整合性符号を一緒に符号化する場合は、この巡回冗長検査符号及び整合性符号が第2の冗長ビット生成ブロック34に入力される。そして、第2の冗長ビット生成ブロック34で生成された24ビットの冗長ビットが、巡回冗長検査符号及び整合性符号に付加される。尚、整合性符号ブロック33は、第1のCRC生成ブロック32で生成された巡回冗長検査符号の各ビットの論理値を反転させた符号(以下、反転符号と言う。)を出力するように構成されてもよい。この場合、巡回冗長検査符号にその反転符号を付加したものが整合性符号として取り扱われる。また、整合性符号は、1セクタの書き込みデータ毎でなく、各物理ページに1つ書き込むようにしてもよい。つまり、1つの整合性符号が、その整合性符号が書き込まれている物理ページ内に格納されたデータに共通の符号として使用されてもよい。
尚、整合性符号については、BCH符号に符号化しなくもよい。
第2の符号化ブロック22には書き込みデータが入力される。そして、第2の符号化ブロック22は、1セクタの書き込みデータ毎に、12ビットの巡回冗長検査符号と8ビットの整合性符号をBCH符号に符号化した第2の符号化データを出力する。第2の符号化データは最大4ビットのビットエラーを訂正することができるように設定したため、第2の符号化ブロック22は、巡回冗長検査符号と整合性符号に24ビットの冗長ビットを付加したものを第2の符号化データとして出力する。第2の符号化ブロック22は、図3に示されているように、第1のCRC生成ブロック32、整合性符号ブロック33及び第2の冗長ビット生成ブロック34で構成されている。第1のCRC生成ブロック32は、入力された1セクタの書き込みデータに基づいて、12ビットの巡回冗長検査符号を生成する。整合性符号ブロック33は、論理値“0”のビットと論理値“1”のビットをそれぞれ4ビットずつ含む8ビットの整合性符号を出力する。12ビットの巡回冗長検査符号と8ビットの整合性符号を一緒に符号化する場合は、この巡回冗長検査符号及び整合性符号が第2の冗長ビット生成ブロック34に入力される。そして、第2の冗長ビット生成ブロック34で生成された24ビットの冗長ビットが、巡回冗長検査符号及び整合性符号に付加される。尚、整合性符号ブロック33は、第1のCRC生成ブロック32で生成された巡回冗長検査符号の各ビットの論理値を反転させた符号(以下、反転符号と言う。)を出力するように構成されてもよい。この場合、巡回冗長検査符号にその反転符号を付加したものが整合性符号として取り扱われる。また、整合性符号は、1セクタの書き込みデータ毎でなく、各物理ページに1つ書き込むようにしてもよい。つまり、1つの整合性符号が、その整合性符号が書き込まれている物理ページ内に格納されたデータに共通の符号として使用されてもよい。
図4を参照して、第1のCRC生成ブロック32が生成する巡回冗長検査符号、整合性符号ブロック33が出力する整合性符号及び第2の符号化データについて説明する。符号1の場合は、第1のCRC生成ブロック32で生成された巡回冗長検査符号と整合性符号ブロック33から出力された整合性符号が連結され、この連結された符号がBCH符号に符号化される。第2の冗長ビット生成ブロック34は、巡回冗長検査符号と整合性符号が連結された符号に基づいて冗長ビットを生成する。そして、この冗長ビットが、巡回冗長検査符号と整合性符号が連結された符号に付加される。従って、第2の符号化データは、付加巡回冗長検査符号、整合性符号及び冗長ビットで構成される。
符号2の場合は、第1のCRC生成ブロック32で生成された巡回冗長検査符号だけがBCH符号に符号化される。第2の冗長ビット生成ブロック34は、巡回冗長検査符号に基づいて冗長ビットを生成する。そして、この冗長ビットが、巡回冗長検査符号に付加される。従って、第2の符号化データは、付加巡回冗長検査符号及び冗長ビットで構成される。整合性符号は、第2の符号化データに含まれないため、整合性符号と第2の符号化データが別々にフラッシュメモリ2に書き込まれる。この符号の構成は、1つ整合性符号を、同一ページ格納される複数セクタのデータで共用する場合に適している。
符号3の場合は、整合性符号ブロック33が第1のCRC生成ブロック32で生成された巡回冗長検査符号の反転符号を出力するように設定される。この反転符号は、第1のCRC生成ブロック32で生成された巡回冗長検査符号に連結され、巡回冗長検査符号とその反転符号が整合性符号として取り扱われる。反転符号は巡回冗長検査符号の各ビットの論理値を反転させた符号なので、巡回冗長検査符号と反転符号の相互に対応するビットの論理値の関係は、巡回冗長検査符号に含まれるビットの論理値が“0”であれば反転符号に含まれるビットの論理値が“1”になり、巡回冗長検査符号に含まれるビットの論理値が“1”であれば反転符号に含まれるビットの論理値が“0”になる。従って、巡回冗長検査符号とその反転符号を連結したものを整合性符号とした場合、この整合性符号には、論理値“0”のビットと論理値“1”のビットが同数含まれている。巡回冗長検査符号とその反転符号を連結したものは、BCH符号に符号化される。第2の冗長ビット生成ブロック34は、巡回冗長検査符号及びその反転符号に基づいて冗長ビットを生成する。そして、この冗長ビットが、巡回冗長検査符号とその反転符号を連結したものに付加される。従って、第2の符号化データは、巡回冗長検査符号、反転符号及び冗長ビットで構成される。
符号4は、符号3と同じ符号であるが、第2の符号化データ全体が整合性符号として取り扱われる。つまり、第2の符号化データに含まれる全てのビットが整合性符号として取り扱われる。
図2に示されているように、フラッシュメモリ2からバッファメモリ9にデータを読み出すとき、フラッシュメモリ2から読み出された第1の符号化データは、第1の復号化ブロック23に入力される。第1の復号化ブロック23に入力された第1の符号化データは復号化され、その復号化データがバッファメモリ9に保持される。また、第1の復号化ブロック23は、訂正能力を超えるビットエラー(15ビットを超えるビットエラー)である訂正不能エラーの発生を検出したとき、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。第1の復号化ブロック23が訂正不能エラーの発生を検出したときは、訂正処理が施されていないデータがバッファメモリ9に保持される。
フラッシュメモリ2から読み出された第2の符号化データは、第2の復号化ブロック25に入力される。第2の復号化ブロック25で復号化された巡回冗長検査符号及び整合性符号は、訂正不能エラー検出ブロック24に入力される。更に、フラッシュメモリ2から読み出された第1の符号化データは、訂正不能エラー検出ブロック24にも入力される。尚、書き込みのときに、整合性符号がBCH符号に符号化されなかった場合は、フラッシュメモリ2から読み出された整合性符号は、第2の復号化ブロック25を介さずに訂正不能エラー検出ブロック24に入力される。第2の符号化データ全体が整合性符号として取り扱われる場合、第2の符号化データは、第2の復号化ブロック25及び訂正不能エラー検出ブロック24に入力される。また、第1の復号化ブロック23で復号化された復号化データは、訂正不能エラー検出ブロック24に読み込まれる。
次に、第1の復号化ブロック23及び訂正不能エラー検出ブロック24の構成及び動作を、図5を参照して詳細に説明する。第1の復号化ブロック23は、誤り検出ブロック41と誤り訂正ブロック42で構成されている。誤り検出ブロック41は、入力された第1の復号化データに基づいてシンドロームを生成する。このシンドロームは、誤り訂正ブロック42に入力される。誤り訂正ブロック42は、入力されたシンドロームに基づいてエラービット(ビットエラーが生じたビット)を特定し、そのビットの論理値を訂正する。尚、全てのシンドロームの値が“0”の場合は、ビットエラーが発生していないと判断され、誤り訂正ブロック42によるビットエラーの訂正は行われない。誤り訂正ブロック42は、入力されたシンドロームに基づいて正常にエラービットを特定できなかった場合は、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
訂正不能エラー検出ブロック24は、第1のデータパターン検出回路43、第2のデータパターン検出回路44、整合性符号判断ブロック45、AND回路46、AND回路47、CRCレジスタ48、第2のCRC生成ブロック49、比較回路50及びOR回路51で構成されている。
第1のデータパターン検出回路43には、第1の符号化データが入力される。第1のデータパターン検出回路43は、入力された第1の符号化データに含まれる全てのビットの論理値が“0”のときに、それを検出したことを示す第1の信号(ハイレベルの信号)を出力する。
第2のデータパターン検出回路44には、第1の符号化データが入力される。第2のデータパターン検出回路44は、入力された第1の符号化データに含まれる全てのビットの論理値が“1”のときに、それを検出したことを示す第2の信号(ハイレベルの信号)を出力する。
整合性符号判断ブロック45には、整合性符号が入力される。整合性符号判断ブロック45は、入力された整合性符号に含まれる全てのビットの論理値が“0”のときに、それを検出したことを示す第3の信号を出力し、入力された整合性符号に含まれる全てのビットの論理値が“1”のときに、それを検出したことを示す第4の信号を出力する。
AND回路46には、第1の信号及び第3の信号が入力される。AND回路46は、第1の信号及び第3の信号に基づいて、第1の符号化データに含まれる全てのビットの論理値が“0”であり、かつ整合性符号に含まれる全てのビットの論理値が“0”であることを検出する。そして、第1の符号化データに含まれる全てのビットの論理値が“0”であり、かつ整合性符号に含まれる全てのビットの論理値が“0”であることを検出したときに、それを検出したことを示す第5の信号を出力する。
AND回路47には、第2の信号及び第4の信号が入力される。AND回路46は、第2の信号及び第4の信号に基づいて、第1の符号化データに含まれる全てのビットの論理値が“1”であり、かつ整合性符号に含まれる全てのビットの論理値が“1”であることを検出する。そして、第1の符号化データに含まれる全てのビットの論理値が“1”であり、かつ整合性符号に含まれる全てのビットの論理値が“1”であることを検出したときに、それを検出したことを示す第6の信号を出力する。
CRCレジスタ48は、フラッシュメモリ2から読み出された巡回冗長検査符号、つまり、書き込みのときに第1のCRC生成ブロック32で生成された巡回冗長検査符号を保持する。
第2のCRC生成ブロック49は、誤り訂正ブロック42により訂正処理が施されたデータであるバッファメモリデータに基づいて巡回冗長検査符号を生成する。
比較回路50は、CRCレジスタ48に保持された巡回冗長検査符号と第2のCRC生成ブロック49により生成された巡回冗長検査符号を比較し、両方の符号が一致しなかったときに、それを検出したことを示す第7の信号を出力する。
OR回路51には、第5の信号、第6の信号及び第7の信号が入力される。OR回路51は、第5の信号、第6の信号及び第7の信号のうち、少なくとも1つの信号に基づいて、訂正不能エラーが発生したことを検知したときに、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
まず、OR回路51は、第5の信号に基づいて、第1の符号化データに含まれる全てのビットの論理値が“0”であり、かつ整合性符号に含まれる全てのビットの論理値が“0”であることを検知することができる。整合性符号には、論理値が“1”のビットが複数個含まれているため、ランダムエラーにより、第1の符号化データ及び整合性符号に含まれる全てのビットの論理値が“0”なる可能性は非常に低い。従って、OR回路51は、第1の符号化データ及び整合性符号に含まれる全てのビットの論理値が“0”
を検知したときに、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
を検知したときに、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
更に、OR回路51は、第6の信号に基づいて、第1の符号化データに含まれる全てのビットの論理値が“1”であり、かつ整合性符号に含まれる全てのビットの論理値が“1”であることを検知することができる。整合性符号には、論理値が“0”のビットが複数個含まれているため、ランダムエラーにより、第1の符号化データ及び整合性符号に含まれる全てのビットの論理値が“1”なる可能性は非常に低い。従って、OR回路51は、第1の符号化データ及び整合性符号に含まれる全てのビットの論理値が“1”
を検知したときに、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
を検知したときに、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
又、OR回路51は、第7の信号に基づいて、フラッシュメモリ2から読み出された巡回冗長検査符号である第1の巡回冗長検査符号と復号化データに基づいて生成された巡回冗長検査符号である第2の巡回冗長検査符号が一致していないことを検知することができる。バッファメモリ9からフラッシュメモリ2に書き込まれた書き込みデータとその読み出しデータである復号化データが一致していれば、第1の巡回冗長検査符号と第2の巡回冗長検査符号は一致する。従って、OR回路51は、第1の巡回冗長検査符号と第2の巡回冗長検査符号が一致していないことを検知したときに、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
尚、OR回路51は、第5の信号に基づいて、第1の符号化データ及び整合性符号に含まれる全てのビットの論理値が“0”
を検知し、更に、第7の信号に基づいて、第1の巡回冗長検査符号と第2の巡回冗長検査符号が一致していないことを検知することがある。この場合も、OR回路51は、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
を検知し、更に、第7の信号に基づいて、第1の巡回冗長検査符号と第2の巡回冗長検査符号が一致していないことを検知することがある。この場合も、OR回路51は、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
また、OR回路51は、第6の信号に基づいて、第1の符号化データ及び整合性符号に含まれる全てのビットの論理値が“1”
を検知し、更に、第7の信号に基づいて、第1の巡回冗長検査符号と第2の巡回冗長検査符号が一致していないことを検知することがある。この場合も、OR回路51は、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
を検知し、更に、第7の信号に基づいて、第1の巡回冗長検査符号と第2の巡回冗長検査符号が一致していないことを検知することがある。この場合も、OR回路51は、訂正不能エラーが発生したことをマイクロプロセッサ6に通知する。
次に、図6を参照して、メモリコントローラ3がホストシステム4に訂正不能エラーが発生したことを通知する場合と通知しない場合について説明する。
ケース#1は、第1の復号化ブロック23により、訂正不能エラーの発生が検出された場合である。つまり、BCH符号に基づいたビットエラーの訂正処理で、訂正不能エラーの発生が検出された場合である。この場合、巡回冗長検査符号に基づいた訂正不能エラー検出処理や整合性符号に基づいた訂正不能エラー検出処理の結果に関わらず、訂正不能エラーの発生がマイクロプロセッサ6に通知される。
ケース#2は、第1の復号化ブロック23によりビットエラーの訂正処理が行われたが、比較回路50により訂正不能エラーの発生が検出された場合である。つまり、巡回冗長検査符号に基づいた訂正不能エラー検出処理で、訂正不能エラーの発生が検出された場合である。この場合、訂正不能エラー検出処理の結果に関わらず、訂正不能エラーの発生がマイクロプロセッサ6に通知される。
ケース#3及びケース#4は、BCH符号に基づいたビットエラーの訂正処理及び巡回冗長検査符号に基づいた訂正不能エラー検出処理で訂正不能エラーの発生が看過され、整合性符号に基づいた訂正不能エラー検出処理で訂正不能エラーの発生が検出された場合である。ケース#3の場合、第1の符号化データ及び整合性符号に含まれる全てのビットの論理値が“0”であることに基づいて訂正不能エラーの発生が検出される。ケース#4の場合、第1の符号化データ及び整合性符号に含まれる全てのビットの論理値が“1”であることに基づいて訂正不能エラーの発生が検出される。つまり、ケース#3及びケース#4は、整合性符号に基づいた訂正不能エラー検出処理を行うことによりマイクロプロセッサ6に通知されるようになった訂正不能エラーの発生である。
ケース#5、ケース#6、及びケース#7は、BCH符号に基づいたビットエラーの訂正処理、巡回冗長検査符号に基づいた訂正不能エラー検出処理及び整合性符号に基づいた訂正不能エラー検出処理で訂正不能エラーの発生が検出されなかった場合であり、これらの場合には訂正不能エラーの発生がマイクロプロセッサ6に通知されない。
尚、書き込みデータに整合性符号を付加し、その整合性符号が付加された書き込みデータを、BCH符号に符号化し、その符号化されたデータをフラッシュメモリに書き込むようにしてもよい。つまり、この符号化されたデータに、書き込みデータ、整合性符号及びこれらに基づいて生成された冗長ビットが含まれるようにしてもよい。このように整合性符号が付加された書き込みデータをBCH符号に符号化する場合は、整合性符号に含まれる論理値“0”のビットの個数及び論理値“1”のビットの個数の双方を、訂正能力を超える個数、つまり、15個を超える個数にすることが好ましい。このように整合性符号に訂正能力を超える個数の論理値“0”のビット及び論理値“1”のビットが含まれていれば、読み出されたデータのうち、整合性符号に対応する全てのビットが論理値“0”のビットになっていた場合、又は、整合性符号に対応する全てのビットが論理値“1”のビットになっていた場合、訂正能力を超えるビットエラーが発生したと判断することができる。
この訂正能力エラーの検出では、この符号化されたデータを読み出したときに、そのデータのうち、整合性符号に対応する全てのビットが論理値“0”のビットであるか、又は、整合性符号に対応する全てのビットが論理値“1”のビットであるかが検査される。この検査で、整合性符号に対応する全てのビットが論理値“0”のビットであること、又は、整合性符号に対応する全てのビットが論理値“1”のビットであることが検出されたときは、この符号化されたデータの復号化は行われず、訂正不能エラーの発生がマイクロプロセッサ6に通知される。このように処理されるのは、整合性符号に対応する全てのビットが論理値“0”のビットである場合、又は、整合性符号に対応する全てのビットが論理値“1”のビットである場合、必ず訂正能力を超えるビットエラーが発生しているからである。
又、整合性符号は、書き込みデータに基づいて生成された巡回冗長検査符号とその反転符号を連結したものであってもよい。この場合、巡回冗長検査符号のビット数を、BCH符号に基づいた訂正の訂正能力を超えるビット数に設定する。このように設定すれば、巡回冗長検査符号とその反転符号を連結したものには、BCH符号に基づいた訂正の訂正能力を超える個数の論理値“0”のビット及び論理値“1”のビットが含まれる。従った、上記の整合性符号と同様に、訂正能力エラーの検出を行うことができる。
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々の変更を加え得ることは勿論である。
例えば、ビットエラーの訂正処理における符号化の種類は、BCH符号以外の符号に基づいた符号化であってもよい。また、ビットエラーの訂正処理における訂正能力は、適宜変更することができる。 巡回冗長検査符号に基づいた訂正不能エラー検出処理及びその巡回冗長検査符号のビット数も適宜変更することができる。符号化及び復号化の処理単位は、1セクタ(512バイト)単位に限定されず、例えば、2セクタ(1024バイト)単位や4セクタ(2048バイト)単位であってもよい。
第1の符号化データ及び整合性符号に含まれる全てのビットの論理値が“0” であることを検出する過程や第1の符号化データ及び整合性符号に含まれる全てのビットの論理値が“1”
であることを検出する過程は、適宜変更することができる。また、整合性符号は、必ず論理値“0”のビットと論理値“1”のビットの双方を複数ビットずつ含むものであれば、どんな符号(データパターン)であってもよい。
であることを検出する過程は、適宜変更することができる。また、整合性符号は、必ず論理値“0”のビットと論理値“1”のビットの双方を複数ビットずつ含むものであれば、どんな符号(データパターン)であってもよい。
本発明は、種々のデジタル情報を取り扱うパーソナルコンピュータやデジタルスチルカメラ等の電子機器に装着又内蔵される情報記憶(記録)装置に適用することができる。
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ、11…誤り訂正ブロック、24…訂正不能エラー検出ブロック
Claims (11)
- ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化する手段であって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化手段と、
論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を出力するデータパターン符号出力手段と、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページに書き込む書き込み手段と、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページから読み出す読み出し手段と、
前記読み出し手段により読み出された前記第1の符号化データを復号化する手段であって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化手段と、
前記読み出し手段により読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出手段と、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知手段とを備え、
前記訂正不能エラー通知手段は、前記第1の復号化手段が訂正不能エラーを検出しなかった場合でも、前記第1の検出手段又は前記第2の検出手段がエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する、
ことを特徴とするメモリコントローラ。 - ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化する手段であって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化手段と、
前記所定データ長のデータ毎に、当該データの巡回冗長検査符号である第1の巡回冗長検査符号を生成する第1の巡回冗長検査符号生成手段と、
前記第1の巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成する反転符号生成手段と、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページに書き込む書き込み手段と、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページから読み出す読み出し手段と、
前記読み出し手段により読み出された前記第1の符号化データを復号化する手段であって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化手段と、
前記第1の復号化手段により復号化されたデータの巡回冗長検査符号である第2の巡回冗長検査符号を生成する第2の巡回冗長検査符号生成手段と、
前記読み出し手段により読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出手段と、
前記読み出し手段により読み出された前記第1の巡回冗長検査符号と前記第2の巡回冗長検査符号生成手段により生成された前記第2の巡回冗長検査符号を比較し、両者が不一致のときにエラー検出信号を出力する第3の検出手段と、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知手段とを備え、
前記訂正不能エラー通知手段は、前記第1の復号化手段が訂正不能エラーを検出しなかった場合でも、前記第1の検出手段、前記第2の検出手段及び前記第3の検出手段のうち、少なくとも1つがエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する、
ことを特徴とするメモリコントローラ。 - 前記第1の巡回冗長検査符号及び前記反転符号に生じるビットエラーを訂正するため、これらの符号を符号化する手段であって、この符号化により、これらの符号に冗長ビットが付加された第2の符号化データを出力する第2の符号化手段と、
前記第2の符号化データを復号化する手段であって、この復号化により、当該第2の符号化データに含まれる前記第1の巡回冗長検査符号及び前記反転符号に生じたビットエラーを訂正する第2の復号化手段とを更に備え、
前記書き込み手段は、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページに書き込み、
前記読み出し手段は、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページから読み出す、
ことを特徴とする請求項2に記載のメモリコントローラ。 - ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、
所定データ長のデータ毎に、当該データに論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を付加するデータパターン符号付加手段と、
前記所定データ長のデータ毎に、当該データ及びこのデータに付加される前記データパターン符号に生じるビットエラーを訂正するため、当該データ及び当該データパターン符号を併せて符号化する手段であって、この符号化により、当該データ及び当該データパターン符号に冗長ビットが付加された第1の符号化データを出力する第1の符号化手段と、
前記第1の符号化データをフラッシュメモリ内のページに書き込む書き込み手段と、
前記第1の符号化データをフラッシュメモリ内のページから読み出す読み出し手段と、
前記読み出し手段により読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出手段と、
前記読み出し手段により読み出された前記第1の符号化データを復号化する手段であって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化手段と、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知手段とを備え、
前記データパターン符号は、前記第1の復号化手段の訂正能力を超えるビット数の論理値0のビットと論理値1のビットをそれぞれ含み、
前記訂正不能エラー通知手段は、前記第1の検出手段又は前記第2の検出手段がエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する、
ことを特徴とするメモリコントローラ。 - 前記データパターン符号付加手段は、前記所定データ長のデータ毎に、当該データの巡回冗長検査符号とこの巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成し、当該巡回冗長検査符号及び当該反転符号を前記データパターン符号として前記所定データ長のデータに付加する、
ことを特徴とする請求項4に記載のメモリコントローラ。 - 請求項1乃至5のいずれか1項に記載のメモリコントローラと、
このメモリコントローラにより制御されるフラッシュメモリを備えるフラッシュメモリシステム。 - ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化するステップであって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化ステップと、
論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を出力するデータパターン符号出力ステップと、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページに書き込む書き込みステップと、
前記第1の符号化データ及び前記データパターン符号をフラッシュメモリ内のページから読み出す読み出しステップと、
前記読み出しステップにより読み出された前記第1の符号化データを復号化するステップであって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ及び前記データパターン符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出ステップと、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知ステップとを備え、
前記訂正不能エラー通知ステップでは、前記第1の復号化ステップにおいて訂正不能エラーが検出されなかった場合でも、前記第1の検出ステップ又は前記第2の検出ステップにおいてエラー検出信号が出力されたときに、ホストシステムに訂正不能エラーが発生したことを通知する、
ことを特徴とするフラッシュメモリの制御方法。 - ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
所定データ長のデータ毎に、当該データに生じるビットエラーを訂正するため、当該データを符号化するステップであって、この符号化により、当該データに冗長ビットが付加された第1の符号化データを出力する第1の符号化ステップと、
前記所定データ長のデータ毎に、当該データの巡回冗長検査符号である第1の巡回冗長検査符号を生成する第1の巡回冗長検査符号生成ステップと、
前記第1の巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成する反転符号生成ステップと、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページに書き込む書き込みステップと、
前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号をフラッシュメモリ内のページから読み出す読み出しステップと、
前記読み出しステップにより読み出された前記第1の符号化データを復号化するステップであって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化ステップと、
前記第1の復号化ステップにより復号化されたデータの巡回冗長検査符号である第2の巡回冗長検査符号を生成する第2の巡回冗長検査符号生成ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データ、前記第1の巡回冗長検査符号及び前記反転符号に含まれる全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出ステップと、
前記読み出しステップにより読み出された前記第1の巡回冗長検査符号と前記第2の巡回冗長検査符号生成手段により生成された前記第2の巡回冗長検査符号を比較し、両者が不一致のときにエラー検出信号を出力する第3の検出ステップと、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知ステップとを備え、
前記訂正不能エラー通知ステップでは、前記第1の復号化ステップにおいて訂正不能エラーが検出されなかった場合でも、前記第1の検出ステップ、前記第2の検出ステップ及び前記第3の検出ステップのうち、少なくとも1つのステップにおいてエラー検出信号が出力されたときに、ホストシステムに訂正不能エラーが発生したことを通知する、
ことを特徴とするフラッシュメモリの制御方法。 - 前記第1の巡回冗長検査符号及び前記反転符号に生じるビットエラーを訂正するため、これらの符号を符号化するステップであって、この符号化により、これらの符号に冗長ビットが付加された第2の符号化データを出力する第2の符号化ステップと、
前記第2の符号化データを復号化するステップであって、この復号化により、当該第2の符号化データに含まれる前記第1の巡回冗長検査符号及び前記反転符号に生じたビットエラーを訂正する第2の復号化ステップとを更に備え、
前記書き込みステップでは、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページに書き込み、
前記読み出しステップでは、前記第1の巡回冗長検査符号及び前記反転符号に代えて、第2の符号化データをフラッシュメモリ内のページから読み出す、
ことを特徴とする請求項6に記載のフラッシュメモリの制御方法。 - ホストシステムからの要求に従って、フラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
所定データ長のデータ毎に、当該データに論理値0のビットと論理値1のビットの双方を複数ビットずつ含む所定データパターンの符号であるデータパターン符号を付加するデータパターン符号付加ステップと、
前記所定データ長のデータ毎に、当該データ及びこのデータに付加される前記データパターン符号に生じるビットエラーを訂正するため、当該データ及び当該データパターン符号を併せて符号化するステップであって、この符号化により、当該データ及び当該データパターン符号に冗長ビットが付加された第1の符号化データを出力する第1の符号化ステップと、
前記第1の符号化データをフラッシュメモリ内のページに書き込む書き込みステップと、
前記第1の符号化データをフラッシュメモリ内のページから読み出す読み出しステップと、
前記読み出しステップにより読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値0のビットであるときにエラー検出信号を出力する第1の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データのうち、前記データパターン符号に対応する全てのビットが、論理値1のビットであるときにエラー検出信号を出力する第2の検出ステップと、
前記読み出しステップにより読み出された前記第1の符号化データを復号化するステップであって、この復号化により、当該第1の符号化データに含まれるデータに生じたビットエラーを訂正する第1の復号化ステップと、
ホストシステムに訂正不能エラーが発生したことを通知する訂正不能エラー通知ステップとを備え、
前記データパターン符号は、前記第1の復号化ステップにおける訂正能力を超えるビット数の論理値0のビットと論理値1のビットをそれぞれ含み、
前記訂正不能エラー通知ステップでは、前記第1の検出ステップ又は前記第2の検出ステップにおいてエラー検出信号を出力したときに、ホストシステムに訂正不能エラーが発生したことを通知する、
ことを特徴とするフラッシュメモリの制御方法。 - 前記データパターン符号付加ステップでは、前記所定データ長のデータ毎に、当該データの巡回冗長検査符号とこの巡回冗長検査符号に含まれる各ビットの論理値を反転させた符号である反転符号を生成し、当該巡回冗長検査符号及び当該反転符号を前記データパターン符号として前記所定データ長のデータに付加する、
ことを特徴とする請求項11に記載のフラッシュメモリの制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010138927A JP2012003569A (ja) | 2010-06-18 | 2010-06-18 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010138927A JP2012003569A (ja) | 2010-06-18 | 2010-06-18 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012003569A true JP2012003569A (ja) | 2012-01-05 |
Family
ID=45535463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010138927A Withdrawn JP2012003569A (ja) | 2010-06-18 | 2010-06-18 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012003569A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014191372A (ja) * | 2013-03-26 | 2014-10-06 | Mega Chips Corp | 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム |
CN111198833A (zh) * | 2018-11-16 | 2020-05-26 | 英业达科技有限公司 | 串行通用输入/输出系统 |
CN116431381A (zh) * | 2023-04-06 | 2023-07-14 | 深圳三地一芯电子股份有限公司 | 平衡闪存ecc纠错能力方法、装置、设备及存储介质 |
CN117762350A (zh) * | 2024-01-18 | 2024-03-26 | 四川和恩泰半导体有限公司 | 一种固态硬盘数据读取方法 |
-
2010
- 2010-06-18 JP JP2010138927A patent/JP2012003569A/ja not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014191372A (ja) * | 2013-03-26 | 2014-10-06 | Mega Chips Corp | 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム |
CN111198833A (zh) * | 2018-11-16 | 2020-05-26 | 英业达科技有限公司 | 串行通用输入/输出系统 |
CN111198833B (zh) * | 2018-11-16 | 2023-07-14 | 英业达科技有限公司 | 串行通用输入/输出系统 |
CN116431381A (zh) * | 2023-04-06 | 2023-07-14 | 深圳三地一芯电子股份有限公司 | 平衡闪存ecc纠错能力方法、装置、设备及存储介质 |
CN116431381B (zh) * | 2023-04-06 | 2024-01-05 | 深圳三地一芯电子股份有限公司 | 平衡闪存ecc纠错能力方法、装置、设备及存储介质 |
CN117762350A (zh) * | 2024-01-18 | 2024-03-26 | 四川和恩泰半导体有限公司 | 一种固态硬盘数据读取方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8438457B2 (en) | Nonvolatile memory apparatus, memory controller, and memory system | |
US9043678B2 (en) | Detecting effect of corrupting event on preloaded data in non-volatile memory | |
US8327230B2 (en) | Data structure for flash memory and data reading/writing method thereof | |
CN108376554B (zh) | 存储器模块、包括其的存储系统及其错误校正方法 | |
US9424126B2 (en) | Memory controller | |
US8225175B2 (en) | Two-plane error correction method for a memory device and the memory device thereof | |
US20100251075A1 (en) | Memory controller and semiconductor memory apparatus | |
US8321757B2 (en) | Method and apparatus for error correction | |
JP2008165808A (ja) | 誤り訂正確率を減らすエラー訂正回路、その方法及び前記回路を備える半導体メモリ装置 | |
JP2015018451A (ja) | メモリコントローラ、記憶装置およびメモリ制御方法 | |
JP2008165805A (ja) | フラッシュメモリ装置のecc制御器及びそれを含むメモリシステム | |
JP2011198272A (ja) | 半導体記憶装置および半導体記憶装置の制御方法 | |
JP2012137994A (ja) | メモリシステムおよびその制御方法 | |
US20100241932A1 (en) | Error detector/corrector, memory controller, and semiconductor memory device | |
JP5541792B2 (ja) | 半導体メモリ装置及びそれのデータ処理方法 | |
JP2009301194A (ja) | 半導体記憶装置の制御システム | |
US11030040B2 (en) | Memory device detecting an error in write data during a write operation, memory system including the same, and operating method of memory system | |
JP2019057752A (ja) | メモリシステム | |
JP2010079856A (ja) | 記憶装置およびメモリ制御方法 | |
US11726665B1 (en) | Memory extension with error correction | |
JP2012003569A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US10514980B2 (en) | Encoding method and memory storage apparatus using the same | |
JP2009157515A (ja) | 半導体メモリコントローラおよび半導体メモリ | |
US10951238B1 (en) | Memory system and method for controlling non-volatile memory | |
KR20090129626A (ko) | 메모리 기반 저장 장치 및 그것의 블록 관리 기법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130903 |