(57)【要約】【課題】チャンネル毎に設けられた複数個のシンドローム計算回路と共用される1個の誤り訂正回路を用いてフラッシュメモリから読み出されたデータを復号化するときに、複数個のシンドローム計算回路から誤り訂正回路への復号化処理の引継ぎを円滑に行うこと。【解決手段】各チャンネルを介して読み出されたデータに基づいてシンドロームを算出する算出処理が、チャンネル毎に独立して実行され、算出されたシンドロームはキューに保持される。この際、キュー内のそれぞれのキュー領域には、そのキュー領域に対応するバッファメモリ内の領域に保持されているデータに対応するシンドロームが保持される。そして、バッファメモリ内のそれぞれの領域に保持されているデータに対するビットエラーの訂正は、そのデータが保持されている領域に対応するキュー領域に保持されているシンドロームに基づいて行われる。【選択図】図５
2012003570.tif 000002
【特許請求の範囲】
【請求項１】
複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリに書き込むデータを、当該データに生じるビットエラーを訂正するための誤り訂正符号に符号化する符号化手段と、
前記符号化手段により符号化されたデータを、複数個のフラッシュメモリにそれぞれ接続された複数個のチャンネルを有するデータバスを介して、複数個のフラッシュメモリに書き込む書き込み手段と、
前記書き込み手段により複数個のフラッシュメモリに書き込まれたデータを、前記データバスを介して、フラッシュメモリから読み出す読み出し手段と、
前記読み出し手段により複数個のフラッシュメモリから読み出されたデータを保持するデータ保持手段と、
前記データバスの各チャンネルに割り当てられた複数のシンドローム計算回路を有し、前記シンドローム計算回路は、そのシンドローム計算回路が割り当てられたチャンネルを介して読み出されたデータに基づいて、シンドロームを算出するように構成されているシンドローム計算手段と、
前記シンドローム計算回路により算出されたシンドロームを保持するシンドローム保持手段と、
前記シンドローム保持手段に保持されているシンドロームを読み込み、当該シンドロームに基づいて、前記データ保持手段に保持されたデータのビットエラーを訂正するビットエラー訂正手段とを備え、
前記データ保持手段は、複数個のデータ保持ユニットを有し、
前記シンドローム保持手段は、複数個のシンドローム保持ユニットを有し、
それぞれの前記シンドローム保持ユニットには、いずれか１個の前記データ保持ユニットが割り当てられ、
それぞれの前記シンドローム保持ユニットには、当該シンドローム保持ユニットに割り当てられた前記データ保持ユニットに保持されたデータに対応するシンドロームが保持され、
それぞれの前記データ保持ユニットに保持されているデータに対するビットエラーの訂正は、当該データ保持ユニットが割り当てられている前記シンドローム保持ユニットに保持されているシンドロームに基づいて行われることを特徴とするメモリコントローラ。
【請求項２】
処理対象の前記シンドローム保持ユニットを指示する指示手段を更に備え、
前記ビットエラー訂正手段は、前記指示手段が指示する前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、ビットエラー訂正を行い、
前記指示手段が指示する前記シンドローム保持ユニットは、前記ビットエラー訂正が完了する毎に更新されることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
それぞれの前記データ保持ユニットに対応する複数個のフラグ情報を保持するフラグ情報保持手段を更に備え、
前記フラグ情報は、当該フラグ情報に対応する前記データ保持ユニットに保持されているデータに対する前記ビットエラー訂正が完了したか否かを示す情報であることを特徴とする請求項１又は２に記載メモリコントローラ。
【請求項４】
請求項１乃至３のいずれか１項に記載のメモリコントローラと、
このメモリコントローラにより制御される複数個のフラッシュメモリを備えるフラッシュメモリシステム。
【請求項５】
複数個のフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリに書き込むデータを、当該データに生じるビットエラーを訂正するための誤り訂正符号に符号化する符号化ステップと、
前記符号化手段により符号化されたデータを、複数個のフラッシュメモリにそれぞれ接続された複数個のチャンネルを有するデータバスを介して、複数個のフラッシュメモリに書き込む書き込みステップと、
前記書き込みステップにより複数個のフラッシュメモリに書き込まれたデータを、前記データバスを介して、フラッシュメモリから読み出す読み出しステップと、
前記読み出しステップにより複数個のフラッシュメモリから読み出されたデータを複数個のデータ保持ユニットに保持するデータ保持ステップと、
前記データバスの各チャンネルを介して読み出されたデータに基づいてシンドロームを算出する算出処理を実行するステップであって、当該算出処理がチャンネル毎に独立して実行されるシンドローム計算ステップと、
前記シンドローム計算ステップにより算出されたシンドロームを複数個のシンドローム保持ユニットに保持するシンドローム保持ステップと、
前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、前記データ保持ユニットに保持されたデータのビットエラーを訂正するビットエラー訂正ステップとを備え、
それぞれの前記シンドローム保持ユニットには、いずれか１個の前記データ保持ユニットが割り当てられ、
それぞれの前記シンドローム保持ユニットには、当該シンドローム保持ユニットに割り当てられた前記データ保持ユニットに保持されたデータに対応するシンドロームが保持され、
それぞれの前記データ保持ユニットに保持されているデータに対するビットエラーの訂正は、当該データ保持ユニットが割り当てられている前記シンドローム保持ユニットに保持されているシンドロームに基づいて行われることを特徴とするフラッシュメモリの制御方法。
【請求項６】
処理対象の前記シンドローム保持ユニットを指示する指示ステップを更に備え、
前記ビットエラー訂正ステップでは、前記指示ステップにより指示された前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、ビットエラー訂正を行い、
前記指示ステップにより指示される前記シンドローム保持ユニットは、前記ビットエラー訂正が完了する毎に更新されることを特徴とする請求項５に記載のフラッシュメモリの制御方法。
【請求項７】
それぞれの前記データ保持ユニットに対応する複数個のフラグ情報を保持するフラグ情報保持ステップを更に備え、
前記フラグ情報は、当該フラグ情報に対応する前記データ保持ユニットに保持されているデータに対する前記ビットエラー訂正が完了したか否かを示す情報であることを特徴とする請求項５又は６に記載メモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
フラッシュメモリを記憶媒体として用いた記憶装置は、特許文献２に開示されているように、複数個のフラッシュメモリに並行してアクセスできるように構成されることが多い。このような構成にすることにより、記憶装置全体としての書き込み速度を向上させることができる。
【０００３】
上記のように並行してアクセスされる複数個のフラッシュメモリは、それぞれが異なるチャンネルのデータバスに接続される。従って、並行してアクセスされるフラッシュメモリの個数分のチャンネルが必要になる。また、通常、フラッシュメモリに書き込まれるデータは、そのデータに生じるビットエラーを訂正するため誤り訂正符号に符号化される。そして、その符号化されたデータは、フラッシュメモリから読み出されたときに復号化される。この符号化及び復号化を行う回路は、チャンネル毎に備えることが好ましい。しかしながら、復号化を行う回路である復号化回路は回路規模が大きいため、チャンネル毎に復号化回路を設けた場合、フラッシュメモリへのアクセスを制御するコントローラの回路規模が著しく増加する。特許文献１では、この回路規模の増加を抑えるために、２並列の復号化回路において、一部の回路を共用している。そして、共用されない２個の独立回路と共用される１個の共用回路との接続を、選択回路により切替えている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１０２６９３号公報
【特許文献２】特開２０１０−８６１０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、チャンネル数が増加した場合、独立回路と共用回路の接続を切替える選択回路の構成が煩雑になる。又、複数の独立回路でビットエラーが検出された場合、それらの独立回路において、後続する処理が続行不能になることがある。
【０００６】
例えば、４つのチャンネルを介して、４個のフラッシュメモリに並行してアクセスする場合、それぞれのフラッシュメモリから読み出されたそれぞれのデータは、それぞれのチャンネルに割り当てられた独立回路に入力される。この際、各フラッシュメモリの読み出し時間の差異等により、独立回路の出力に出力データがセットされるまでの時間に差異が生じる。このようなときに、先に出力データがセットされた独立回路が優先して共用回路に接続されると、読み出されたそれぞれのデータをホストシステムに転送する順番と一致するような順番で、それらのデータに対する訂正処理が行われない場合がある。また、それぞれのデータをホストシステムに転送する順番と一致するよう順番で、それぞれの独立回路が共用回路に接続されるようにすると、その順番が後の独立回路は、その順番が先の独立回路でビットエラーが検出されない場合でも、その順番が先の独立回路の出力に出力データがセットされるまで、共用回路への接続を待たなければならない。
【０００７】
そこで、本発明は、チャンネル数が増加した場合でも、それぞれの独立回路から共用回路への復号化処理の引継ぎを、煩雑化させることなく、円滑に行うことのできる復号化回路を備えたメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の側面に従う、メモリコントローラは、
複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリに書き込むデータを、当該データに生じるビットエラーを訂正するための誤り訂正符号に符号化する符号化手段と、
前記符号化手段により符号化されたデータを、複数個のフラッシュメモリにそれぞれ接続された複数個のチャンネルを有するデータバスを介して、複数個のフラッシュメモリに書き込む書き込み手段と、
前記書き込み手段により複数個のフラッシュメモリに書き込まれたデータを、前記データバスを介して、フラッシュメモリから読み出す読み出し手段と、
前記読み出し手段により複数個のフラッシュメモリから読み出されたデータを保持するデータ保持手段と、
前記データバスの各チャンネルに割り当てられた複数のシンドローム計算回路を有し、前記シンドローム計算回路は、そのシンドローム計算回路が割り当てられたチャンネルを介して読み出されたデータに基づいて、シンドロームを算出するように構成されているシンドローム計算手段と、
前記シンドローム計算回路により算出されたシンドロームを保持するシンドローム保持手段と、
前記シンドローム保持手段に保持されているシンドロームを読み込み、当該シンドロームに基づいて、前記データ保持手段に保持されたデータのビットエラーを訂正するビットエラー訂正手段とを備え、
前記データ保持手段は、複数個のデータ保持ユニットを有し、
前記シンドローム保持手段は、複数個のシンドローム保持ユニットを有し、
それぞれの前記シンドローム保持ユニットには、いずれか１個の前記データ保持ユニットが割り当てられ、
それぞれの前記シンドローム保持ユニットには、当該シンドローム保持ユニットに割り当てられた前記データ保持ユニットに保持されたデータに対応するシンドロームが保持され、
それぞれの前記データ保持ユニットに保持されているデータに対するビットエラーの訂正は、当該データ保持ユニットが割り当てられている前記シンドローム保持ユニットに保持されているシンドロームに基づいて行われる。
【０００９】
本発明の第１の側面に従う、メモリコントローラは、
処理対象の前記シンドローム保持ユニットを指示する指示手段を更に備え、
前記ビットエラー訂正手段は、前記指示手段が指示する前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、ビットエラー訂正を行い、
前記指示手段に指示される前記シンドローム保持ユニットは、前記ビットエラー訂正が完了する毎に更新されるようにしてもよい。
本発明の第１の側面に従う、メモリコントローラは、
それぞれの前記データ保持ユニットに対応する複数個のフラグ情報を保持するフラグ情報保持手段を更に備えてもよい。
このフラグ情報保持手段により保持される前記フラグ情報は、当該フラグ情報に対応する前記データ保持ユニットに保持されているデータに対する前記ビットエラー訂正が完了したか否かを示す情報である。
【００１０】
本発明の第２の側面に従う、フラッシュメモリシステムは、
前記第１の側面に従うメモリコントローラと、
このメモリコントローラにより制御される複数個のフラッシュメモリを備える。
【００１１】
本発明の第３の側面に従う、フラッシュメモリの制御方法は、
複数個のフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリに書き込むデータを、当該データに生じるビットエラーを訂正するための誤り訂正符号に符号化する符号化ステップと、
前記符号化手段により符号化されたデータを、複数個のフラッシュメモリにそれぞれ接続された複数個のチャンネルを有するデータバスを介して、複数個のフラッシュメモリに書き込む書き込みステップと、
前記書き込みステップにより複数個のフラッシュメモリに書き込まれたデータを、前記データバスを介して、フラッシュメモリから読み出す読み出しステップと、
前記読み出しステップにより複数個のフラッシュメモリから読み出されたデータを複数個のデータ保持ユニットに保持するデータ保持ステップと、
前記データバスの各チャンネルを介して読み出されたデータに基づいてシンドロームを算出する算出処理を実行するステップであって、当該算出処理がチャンネル毎に独立して実行されるシンドローム計算ステップと、
前記シンドローム計算ステップにより算出されたシンドロームを複数個のシンドローム保持ユニットに保持するシンドローム保持ステップと、
前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、前記データ保持ユニットに保持されたデータのビットエラーを訂正するビットエラー訂正ステップとを備え、
それぞれの前記シンドローム保持ユニットには、いずれか１個の前記データ保持ユニットが割り当てられ、
それぞれの前記シンドローム保持ユニットには、当該シンドローム保持ユニットに割り当てられた前記データ保持ユニットに保持されたデータに対応するシンドロームが保持され、
それぞれの前記データ保持ユニットに保持されているデータに対するビットエラーの訂正は、当該データ保持ユニットが割り当てられている前記シンドローム保持ユニットに保持されているシンドロームに基づいて行われる。
【００１２】
本発明の第３の側面に従う、フラッシュメモリの制御方法は、
処理対象の前記シンドローム保持ユニットを指示する指示ステップを更に備え、
前記ビットエラー訂正ステップでは、前記指示ステップにより指示された前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、ビットエラー訂正を行い、
前記指示ステップにより指示される前記シンドローム保持ユニットは、前記ビットエラー訂正が完了する毎に更新されるようにしてもよい。
【００１３】
本発明の第３の側面に従う、フラッシュメモリの制御方法は、
それぞれの前記データ保持ユニットに対応する複数個のフラグ情報を保持するフラグ情報保持ステップを更に備えてもよい。
このフラグ情報保持ステップにより保持される前記フラグ情報は、当該フラグ情報に対応する前記データ保持ユニットに保持されているデータに対する前記ビットエラー訂正が完了したか否かを示す情報である。
【発明の効果】
【００１４】
本発明によれば、各チャンネルに割り当てられた複数のシンドローム計算回路で算出されたシンドロームが、共通のシンドローム保持手段であるキューに保持されるように復号化回路が構成されている。そして、この復号化回路では、ビットエラー訂正手段である誤り訂正回路が、キューからシンドロームを読み込んで、そのシンドロームに基づいたビットエラー訂正を順次行う。また、ビットエラー訂正の対象となるデータが保持されている領域と、そのデータに対応するシンドロームが保持されているキュー内の領域との対応関係は予め定められている。
【００１５】
復号化回路をこのように構成にしたことにより、複数のシンドローム計算回路と誤り訂正回路との連携を、簡単な構成で円滑に行うことができる。また、この連携のために、煩雑な管理を要求されることもない。更に、シンドローム計算回路で算出されたシンドロームは逐次キューに保持されるため、ビットエラーの発生の有無によらず、フラッシュメモリからのデータの読み出しと、それに並行して行われるシンドローム計算回路への読み出しデータの入力とを連続的に行うことができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、本実施の形態に係るフラッシュメモリシステム１を概略的に示すブロック図である。
【図２】図２は、本実施の形態に係る誤り訂正ブロック１１の符号化機能２１と複合化機能２２と各チャンネルに接続されたフラッシュメモリ２を示すブロック図である。
【図３】図３は、本実施の形態に係る符号化機能２１及び複合化機能２２の構成を示すブロック図である。
【図４】図４は、本実施の形態に係る複合化の処理を示している。
【図５】図５は、本実施の形態に係る複合化の処理を示している。
【発明を実施するための形態】
【００１７】
図１に示されているように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。メモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続されている。
【００１８】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１９】
メモリコントローラ３は、図１に示されているように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ＳＲＡＭ８と、バッファメモリ９と、フラッシュメモリインターフェースブロック１０と、誤り訂正ブロック１１と、ＲＯＭ（Read Only Memory）１２とから構成される。これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００２０】
ホストインターフェースブロック７は、ホストシステム４との間で行われるデータ、アドレス情報、ステータス情報、外部コマンド等の送受信を制御する。つまり、フラッシュメモリシステム１は、ホストインターフェースブロック７を介して、ホストシステム４から供給されるデータ等を取り込む。また、フラッシュメモリシステム１は、ホストインターフェースブロック７を介して、データ等をホストシステム４に供給する。外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００２１】
ホストインターフェースブロック７は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えている。コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３には、ホストシステム４から与えられる情報が書き込まれる。コマンドレジスタＲ１には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタＲ２には、書き込むデータ又は読み出すデータのセクタ数が書き込まれる。ＬＢＡレジスタＲ３には、書き込み又は読み出しを開始する論理セクタに対応するＬＢＡ（Logical Block Address）が書き込まれる。ＬＢＡは、５１２バイトの容量を持った論理セクタに割り当てられたアドレスである。
【００２２】
ＳＲＡＭ（Static Random Access Memory）８は、フラッシュメモリ２の制御に必要な情報を一時的に格納する揮発性メモリである。フラッシュメモリ２にアクセスするために必要な各種のテーブルは、ＳＲＡＭ８に保持され、ＳＲＡＭ８上で更新される。フラッシュメモリ２にアクセスするために必要なテーブルが、ＳＲＡＭ８に保持されていない場合は、そのテーブルはＳＲＡＭ８上で作成される。但し、そのテーブルが、フラッシュメモリ２に格納されている場合は、格納されているテーブルがフラッシュメモリ２から読み出され、ＳＲＡＭ８に保持される。上記各種テーブルには、アドレス変換テーブル、検索テーブル、不良ブロックテーブル等が含まれる。アドレス変換テーブルは、論理ブロックと物理ブロックの対応関係を管理するためのテーブルである。検索テーブルは、空きブロックを検索するためのテーブルである。不良ブロックテーブルは不良ブロックを管理するためのテーブルである。
【００２３】
バッファメモリ９は、フラッシュメモリ２から読み出したデータ、又はフラッシュメモリ２に書き込むデータを、一時的に保持する揮発性メモリである。
【００２４】
フラッシュメモリインターフェースブロック１０は、フラッシュメモリ２との間で行われるデータ、アドレス情報、ステータス情報、内部コマンド等の送受信を制御する。ここで、内部コマンドとは、メモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、メモリコントローラ３から与えられる内部コマンドに従って動作する。
【００２５】
誤り訂正ブロック１１は、フラッシュメモリ２にデータを書き込むときに、そのデータをＢＣＨ符号の誤り訂正符号（ＥＣＣ：Error Correcting Code）に符号化し、フラッシュメモリ２から符号化されたデータを読み出したときに、その符号化されたデータを復号化する。つまり、フラッシュメモリ２に書き込まれるデータは、冗長ビットが付加されたＢＣＨ符号に符号化されてフラッシュメモリ２に書き込まれ、その符号化されたデータ（冗長ビットが付加されたデータ）は、読み出されたときに復号化される。この復号化では、符号化の際に付加される冗長ビットのビット数に応じて、所定のビット数までのビットエラーが訂正される。
【００２６】
ＲＯＭ１２は、フラッシュメモリ２を制御するために必要なファームウェアを格納するための不揮発性の記憶素子である。尚、フラッシュメモリシステム１を起動させるために必要な最小限のファームウェアだけをＲＯＭ１２に格納し、その他のファームウェアをフラッシュメモリ２に格納するようにしてもよい。
【００２７】
マイクロプロセッサ６は、ＲＯＭ１２又はフラッシュメモリ２から、ファームウェアを読み込み、ファームウェアに従って動作する。メモリコントローラ３に含まれる機能ブロックは、マイクロプロセッサ６により制御される。
【００２８】
フラッシュメモリ２は、ＮＡＮＤ型フラッシュメモリであり、レジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。尚、フラッシュメモリには、ＳＬＣ(Single Level Cell)タイプのメモリセルで構成されたものと、ＭＬＣ(Multi Level Cell)タイプのメモリセルで構成されたものがある。
【００２９】
ＮＡＮＤ型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック（物理ブロック）単位で行われる。それぞれの物理ブロックは、複数のページ（物理ページ）で構成され、それぞれの物理ページは、ユーザ領域と冗長領域で構成されている。例えば、１個の物理ページは、４セクタ（２０４８バイト）のユーザ領域と、６４バイトの冗長領域とで構成され、１個の物理ブロックは、６４個の物理ページで構成されている。ユーザ領域は、ホストシステム４から与えられるデータを主に格納するための領域であり、冗長領域は、論理アドレス情報、ブロックステータス（フラグ）等の付加データを主に格納するための領域である。
【００３０】
論理アドレス情報は、当該情報に係る物理ブロックと対応する論理ブロックを特定するための情報である。ブロックステータス（フラグ）は、当該情報に係る物理ブロックが、不良ブロック（正常にデータの書き込み等を行うことができない物理ブロック）であるか否かを示すフラグである。尚、不良ブロックには、初期不良の不良ブロックと後発不良の不良ブロックがある。初期不良の不良ブロックは、出荷前に検出された不良ブロックである。後発不良の不良ブロックは、使用中に生じた不良ブロックである。初期不良の物理ブロックについては、不良ブロックであることを示すブロックステータス（フラグ）が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス（フラグ）を、ユーザ領域に書き込んでいる製造メーカもある。不良ブロックか否かの判断基準は、設計の際に決められる。
【００３１】
図２に示されているように、内部バス１４は４つのチャンネルで構成されている。第１のチャンネル１４ａには、フラッシュメモリ２ａが接続されている。第２のチャンネル１４ｂには、フラッシュメモリ２ｂが接続されている。第３のチャンネル１４ｃには、フラッシュメモリ２ｃが接続されている。第４のチャンネル１４ｄには、フラッシュメモリ２ｄが接続されている。バッファメモリ９に保持されているデータは、フラッシュメモリ２に書き込まれるときに、誤り訂正ブロック１１内の符号化機能２１によりＢＣＨ符号に符号化される。この符号化されたデータである符号化データは、フラッシュメモリインターフェースブロック１０を介してフラッシュメモリ２に転送される。フラッシュメモリ２に格納されている符号化データは、フラッシュメモリ２から読み出されたときに、誤り訂正ブロック１１内の復号化機能２２により符号化される。この複合化されたデータは、バッファメモリ９に保持される。
【００３２】
誤り訂正ブロック１１は、１セクタ（５１２バイト）のデータを処理単位として、符号化及び復号化を行っている。この誤り訂正ブロック１１は、最大１５ビットのビットエラーに対処できるように設計されている。従って、符号化の際に、１セクタのデータに対して１９５ビットの冗長ビットが付加される。つまり、符号化データは、バッファメモリ９に保持されていた１セクタのデータと、符号化の際に生成された１９５ビットの冗長ビットを含んでいる。
【００３３】
図３に示されているように、符号化機能２１は４つの符号化回路３１ａ−３１ｄで構成されている。第１のチャンネル１４ａに接続されているフラッシュメモリ２ａには、符号化回路３１ａで符号化された符号化データが書き込まれる。第２のチャンネル１４ｂに接続されているフラッシュメモリ２ｂには、符号化回路３１ｂで符号化された符号化データが書き込まれる。第３のチャンネル１４ｃに接続されているフラッシュメモリ２ｃには、符号化回路３１ｃで符号化された符号化データが書き込まれる。第４のチャンネル１４ｄに接続されているフラッシュメモリ２ｄには、符号化回路３１ｄで符号化された符号化データが書き込まれる。
【００３４】
復号化機能２２は、４つのシンドローム計算回路４１ａ−４１ｄ、キュー４２、誤り訂正回路及びポインタ４４で構成されている。
【００３５】
第１のチャンネル１４ａに接続されているフラッシュメモリ２ａから読み出された符号化データは、シンドローム計算回路４１ａに入力される。さらに、この符号化データから１９５ビットの冗長ビットが除かれたデータは、バッファメモリ９に保持される。シンドローム計算回路４１ａは、入力された符号化データに基づいて算出したシンドロームを出力する。そして、このシンドロームはキュー４２に保持される。
【００３６】
第２のチャンネル１４ｂに接続されているフラッシュメモリ２ｂから読み出された符号化データは、シンドローム計算回路４１ｂに入力される。さらに、この符号化データから１９５ビットの冗長ビットが除かれたデータは、バッファメモリ９に保持される。シンドローム計算回路４１ｂは、入力された符号化データに基づいて算出したシンドロームを出力する。そして、このシンドロームはキュー４２に保持される。
【００３７】
第３のチャンネル１４ｃに接続されているフラッシュメモリ２ｃから読み出された符号化データは、シンドローム計算回路４１ｃに入力される。さらに、この符号化データから１９５ビットの冗長ビットが除かれたデータは、バッファメモリ９に保持される。シンドローム計算回路４１ｃは、入力された符号化データに基づいて算出したシンドロームを出力する。そして、このシンドロームはキュー４２に保持される。
【００３８】
第４のチャンネル１４ｄに接続されているフラッシュメモリ２ｄから読み出された符号化データは、シンドローム計算回路４１ｄに入力される。さらに、この符号化データから１９５ビットの冗長ビットが除かれた１セクタのデータは、バッファメモリ９に保持される。シンドローム計算回路４１ｄは、入力された符号化データに基づいて算出したシンドロームを出力する。そして、このシンドロームはキュー４２に保持される。
【００３９】
誤り訂正回路４３は、ポインタ４４により指示されているシンドロームをキュー４２から読み込み、読み込んだシンドロームに基づいて、バッファメモリ９に保持されたデータに生じたビットエラーを訂正する。つまり、誤り訂正回路４３は、ビットエラーが生じたビットを特定し、そのビットの論理値を反転させる。
【００４０】
尚、４つのチャンネル（第１のチャンネル１４ａ−第４のチャンネル１４ｄ）を介して、４個のフラッシュメモリ（フラッシュメモリ２ａ−フラッシュメモリ２ｄ）から読み出されたそれぞれのデータは、ホストシステム４に転送される順番と一致するような並びで、バッファメモリ９内の領域に保持される。つまり、各データが保持されるバッファメモリ９内の領域の配列は、ホストシステム４に転送される順番と一致するように決められる。従って、４つのチャンネルを介して、４個のフラッシュメモリから読み出されたデータは、ＬＢＡの順番で並んでバッファメモリ９に保持される。
【００４１】
又、４個のシンドローム計算回路４１ａ−４１ｄで算出されたそれぞれシンドロームは、そのシンドロームと対応するデータが保持されるバッファメモリ９内の領域と対応するキュー４２内の領域に保持される。従って、それぞれシンドロームは、それらに対応するそれぞれのデータがホストシステム４に転送される順番と一致するよう並びで、キュー４２内の領域に保持される。
【００４２】
又、ポインタ４４に指示されるキュー４２内の領域は、順次、次の領域に更新される。例えば、キュー４２内の領域を示す番号が、順次、インクリメントされる。従って、誤り訂正回路４３は、ホストシステム４に転送される順番で、つまり、ＬＢＡの順番で、バッファメモリ９に保持されたデータに生じたビットエラーの訂正を行っていく。
【００４３】
図４は、ＬＢＡが連続する１６セクタのデータに対応する符号化データを、フラッシュメモリ２から読み出す場合の例を示している。図４に示されているように、それぞれ１セクタのデータに対応する符号化データＤ＃ｎ−Ｄ＃（ｎ＋１５）は、４個のフラッシュメモリ２ａ−２ｄに順次振り分けられている。つまり、第１のチャンネル１４ａに接続されているフラッシュメモリ２ａから読み出された符号化データＤ＃ｎは、シンドローム計算回路４１ａに入力される。第２のチャンネル１４ｂに接続されているフラッシュメモリ２ｂから読み出された符号化データＤ＃（ｎ＋１）は、シンドローム計算回路４１ｂに入力される。第３のチャンネル１４ｃに接続されているフラッシュメモリ２ｃから読み出された符号化データＤ＃（ｎ＋２）は、シンドローム計算回路４１ｃに入力される。第４のチャンネル１４ｄに接続されているフラッシュメモリ２ｄから読み出された符号化データＤ＃（ｎ＋３）は、シンドローム計算回路４１ｄに入力される。この後の符号化データも同様に振り分けられる。
【００４４】
従って、シンドローム計算回路４１ａには、符号化データＤ＃ｎ、符号化データＤ＃（ｎ＋４）、符号化データＤ＃（ｎ＋８）及び符号化データＤ＃（ｎ＋１２）が入力される。シンドローム計算回路４１ｂには、符号化データＤ＃（ｎ＋１）、符号化データＤ＃（ｎ＋５）、符号化データＤ＃（ｎ＋９）及び符号化データＤ＃（ｎ＋１３）が入力される。シンドローム計算回路４１ｃには、符号化データＤ＃（ｎ＋２）、符号化データＤ＃（ｎ＋６）、符号化データＤ＃（ｎ＋１０）及び符号化データＤ＃（ｎ＋１４）が入力される。シンドローム計算回路４１ｄには、符号化データＤ＃（ｎ＋３）、符号化データＤ＃（ｎ＋７）、符号化データＤ＃（ｎ＋１１）及び符号化データＤ＃（ｎ＋１５）が入力される。
【００４５】
４つのシンドローム計算回路４１ａ−４１ｄは、入力された符号化データに基づいてシンドロームを算出する。算出されるシンドロームの個数は、訂正能力（訂正可能なビットエラーの最大数）に応じて決まる。訂正能力が１５ビットなので、つまり、訂正することができるビットエラーの最大値が１５ビットなので、各符号化データに基づいて３０個のシンドロームが算出される。シンドロームＳｄ＃ｎ−Ｓｄ＃（ｎ＋１５）は、符号化データＤ＃ｎ−Ｄ＃（ｎ＋１５）にそれぞれ対応している。シンドロームＳｄ＃ｎ−Ｓｄ＃（ｎ＋１５）は、それぞれが３０個のシンドロームを含んでいる。
【００４６】
シンドローム計算回路４１ａは、シンドロームＳｄ＃ｎ、シンドロームＳｄ＃（ｎ＋４）、シンドロームＳｄ＃（ｎ＋８）及びシンドロームＳｄ＃（ｎ＋１２）を算出し、それらを出力する。シンドローム計算回路４１ｂは、シンドロームＳｄ＃（ｎ＋１）、シンドロームＳｄ＃（ｎ＋５）、シンドロームＳｄ＃（ｎ＋９）及びシンドロームＳｄ＃（ｎ＋１３）を算出し、それらを出力する。シンドローム計算回路４１ｃは、シンドロームＳｄ＃（ｎ＋２）、シンドロームＳｄ＃（ｎ＋６）、シンドロームＳｄ＃（ｎ＋１０）及びシンドロームＳｄ＃（ｎ＋１４）を算出し、それらを出力する。シンドローム計算回路４１ｄは、シンドロームＳｄ＃（ｎ＋３）、シンドロームＳｄ＃（ｎ＋７）、シンドロームＳｄ＃（ｎ＋１１）及びシンドロームＳｄ＃（ｎ＋１５）を算出し、それらを出力する。
【００４７】
シンドローム計算回路４１ａ−４１ｄから出力されたシンドロームＳｄ＃ｎ−Ｓｄ＃（ｎ＋１５）は、キュー４２に保持される。符号化データＤ＃ｎ−Ｄ＃（ｎ＋１５）は、シンドローム計算回路４１ａ−４１ｄ入力にされると共に、バッファメモリ９に保持される。バッファメモリ９には、符号化データのうち冗長ビット以外のデータ部分（１セクタのデータ）だけが保持され、冗長ビットは保持されない。符号化データＤ＃ｎ−Ｄ＃（ｎ＋１５）のそれぞれのデータは、符号化データＤ＃ｎからＤ＃（ｎ＋１５）に向かう順番でホストシステム４に転送される。従って、それぞれのデータには、符号化データＤ＃ｎからＤ＃（ｎ＋１５）に向かう順番と一致するような並びで、バッファメモリ９内の領域が割り当てられる。このように領域を割り当てることにより、符号化データＤ＃ｎからＤ＃（ｎ＋１５）に向かう順番と一致するような配列で、それぞれのデータが保持される。
【００４８】
図５に示されているように、バッファメモリ９の符号化データＤ＃ｎ−Ｄ＃（ｎ＋１５）がそれぞれ保持される領域と、キュー４２のシンドロームＳｄ＃ｎ−Ｓｄ＃（ｎ＋１５）がそれぞれ保持される領域との対応関係は予め決められている。つまり、バッファメモリ９内の符号化データＤ＃ｎが保持された領域に対応するキュー４２内の領域にシンドロームＳｄ＃ｎが保持されている。例えば、バッファメモリ９内の第１のメモリ領域がキュー４２内の第１のキュー領域に対応し、バッファメモリ９内の第２のメモリ領域がキュー４２内の第２のキュー領域に対応し、バッファメモリ９内の第ｉのメモリ領域（＃ｉ）がキュー４２内の第ｉのキュー領域（＃ｉ）に対応している。この場合に、符号化データＤ＃（ｎ＋５）が第ｉのメモリ領域（＃ｉ）にされたとき、符号化データＤ＃（ｎ＋５）に対応するシンドロームＳｄ＃（ｎ＋５）は第ｉのキュー領域（＃ｉ）に保持される。
【００４９】
このように対応関係が決められているため、キュー４２には、符号化データＤ＃ｎからＤ＃（ｎ＋１５）に向かう順番と一致するような配列で、それぞれのデータに対応するシンドロームＳｄ＃ｎ−Ｓｄ＃（ｎ＋１５）が保持される。
【００５０】
バッファメモリ９内のそれぞれのメモリ領域は、それらに保持されているデータに対する誤り訂正処理が完了したか否を示すフラグ４５を持っている。つまり、このフラグ４５の各ビットは、そのビットに対応するメモリ領域に保持されているデータに対する誤り訂正処理が終了したか否かを示している。これらのビットにおいて、論理値“０”は誤り訂正処理が終了していないことに対応し、論理値“１”は誤り訂正処理が終了していることに対応する。
【００５１】
誤り訂正回路４３は、読み込んだシンドロームに基づいて、そのシンドロームに対応するデータに生じたビットエラーを訂正する。例えば、誤り訂正回路４３は、シンドロームＳｄ＃ｎを読み込み、シンドロームＳｄ＃ｎに含まれる３０個のシンドロームうち、少なくとも１個以上のシンドロームが“０”でなければ、ビットエラーが生じたビットを特定する処理を開始する。ビットエラーが生じたビットを特定された後、誤り訂正回路４３は、シンドロームＳｄ＃ｎが保持されていたキュー領域に対応するメモリ領域に保持されている符号化データＤ＃ｎのビットエラーを訂正する。このビットエラーの訂正が完了した後に、誤り訂正回路４３は、その符号化データＤ＃ｎが保持されているメモリ領域に対応するフラグ４５内のビットの論理値を“０”から“１”に変更する。尚、読み込んだ３０個のシンドロームが全て“０”のときは、ビットエラーが生じていないと判断される。従って、誤り訂正回路４３は、ビットエラーが生じたビットの特定等の訂正処理を行わず、そのシンドロームに対応するフラグ４５内のビットの論理値を“０”から“１”に変更する。
【００５２】
ポインタ４５が示すキュー領域は、各シンドロームに対応する訂正処理が完了したとき、又は各シンドロームに基づいてビットエラーが生じていないと判断されたとき、次のキュー領域に変更される。誤り訂正回路４３は、ポインタ４５が示すキュー領域に従って、シンドロームＳｄ＃ｎ−Ｓｄ＃（ｎ＋１５）を順次読み込んでいく。読み込んだ３０個のシンドロームが全て“０”の場合は訂正処理が行われず、フラグ４５内のビットの論理値変更だけが行われる。それ以外の場合は訂正処理が行われ、訂正処理が完了した後にフラグ４５内のビットの論理値変更が行われる。このように訂正処理が進められることにより、シンドロームＳｄ＃ｎからＳｄ＃（ｎ＋１５）に向かう順番で訂正処理が実行される。つまり、キュー４２には、シンドロームＳｄ＃ｎからＳｄ＃（ｎ＋１５）に向かう順番と一致するような配列で、それぞれのシンドロームが保持される。そして、この配列の順番で、訂正処理が実行される。
【００５３】
バッファメモリ９に保持された符号化データＤ＃ｎ−Ｄ＃（ｎ＋１５）に対応するそれぞれのデータは、訂正処理がなされた後、又はビットエラーが生じていないと判断された後に、ホストシステム４に転送される。この際、転送することが許されたデータであるかどうかは、フラグ４５に基づいて判断される。つまり、バッファメモリ９内の各メモリ領域に保持されているデータは、その各メモリ領域に対応するフラグ４５内のビットの論理値が“０”から“１”に変更された後にホストシステム４に転送される。
【００５４】
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々の変更を加え得ることは勿論である。
【００５５】
例えば、ビットエラーの訂正処理における符号化の種類は、ＢＣＨ符号以外の符号に基づいた符号化であってもよい。ビットエラーの訂正処理における訂正能力は、適宜変更することができる。また、符号化及び復号化の処理単位は、１セクタ（５１２バイト）単位に限定されず、例えば、２セクタ（１０２４バイト）単位や４セクタ（２０４８バイト）単位であってもよい。データバスは４チャンネルに限定されず、例えば、５チャンネルや、８チャンネル、あるいは１６チャンネル等の構成であってもよい。
【産業上の利用可能性】
【００５６】
本発明は、種々のデジタル情報を取り扱うパーソナルコンピュータやデジタルスチルカメラ等の電子機器に装着又内蔵される情報記憶（記録）装置に適用することができる。
【符号の説明】
【００５７】
１…フラッシュメモリシステム、２…フラッシュメモリ、３…メモリコントローラ、１１…誤り訂正ブロック、２２…復号化機能
【図１】
2012003570.tif 000003
【図２】
2012003570.tif 000004
【図３】
2012003570.tif 000005
【図４】
2012003570.tif 000006
【図５】
2012003570.tif 000007