JP2012003570A - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents
メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDFInfo
- Publication number
- JP2012003570A JP2012003570A JP2010138928A JP2010138928A JP2012003570A JP 2012003570 A JP2012003570 A JP 2012003570A JP 2010138928 A JP2010138928 A JP 2010138928A JP 2010138928 A JP2010138928 A JP 2010138928A JP 2012003570 A JP2012003570 A JP 2012003570A
- Authority
- JP
- Japan
- Prior art keywords
- syndrome
- data
- holding
- holding unit
- error correction
- 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個の誤り訂正回路を用いてフラッシュメモリから読み出されたデータを復号化するときに、複数個のシンドローム計算回路から誤り訂正回路への復号化処理の引継ぎを円滑に行うこと。
【解決手段】各チャンネルを介して読み出されたデータに基づいてシンドロームを算出する算出処理が、チャンネル毎に独立して実行され、算出されたシンドロームはキューに保持される。この際、キュー内のそれぞれのキュー領域には、そのキュー領域に対応するバッファメモリ内の領域に保持されているデータに対応するシンドロームが保持される。そして、バッファメモリ内のそれぞれの領域に保持されているデータに対するビットエラーの訂正は、そのデータが保持されている領域に対応するキュー領域に保持されているシンドロームに基づいて行われる。
【選択図】図5
【解決手段】各チャンネルを介して読み出されたデータに基づいてシンドロームを算出する算出処理が、チャンネル毎に独立して実行され、算出されたシンドロームはキューに保持される。この際、キュー内のそれぞれのキュー領域には、そのキュー領域に対応するバッファメモリ内の領域に保持されているデータに対応するシンドロームが保持される。そして、バッファメモリ内のそれぞれの領域に保持されているデータに対するビットエラーの訂正は、そのデータが保持されている領域に対応するキュー領域に保持されているシンドロームに基づいて行われる。
【選択図】図5
Description
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
フラッシュメモリを記憶媒体として用いた記憶装置は、特許文献2に開示されているように、複数個のフラッシュメモリに並行してアクセスできるように構成されることが多い。このような構成にすることにより、記憶装置全体としての書き込み速度を向上させることができる。
上記のように並行してアクセスされる複数個のフラッシュメモリは、それぞれが異なるチャンネルのデータバスに接続される。従って、並行してアクセスされるフラッシュメモリの個数分のチャンネルが必要になる。また、通常、フラッシュメモリに書き込まれるデータは、そのデータに生じるビットエラーを訂正するため誤り訂正符号に符号化される。そして、その符号化されたデータは、フラッシュメモリから読み出されたときに復号化される。この符号化及び復号化を行う回路は、チャンネル毎に備えることが好ましい。しかしながら、復号化を行う回路である復号化回路は回路規模が大きいため、チャンネル毎に復号化回路を設けた場合、フラッシュメモリへのアクセスを制御するコントローラの回路規模が著しく増加する。特許文献1では、この回路規模の増加を抑えるために、2並列の復号化回路において、一部の回路を共用している。そして、共用されない2個の独立回路と共用される1個の共用回路との接続を、選択回路により切替えている。
しかしながら、チャンネル数が増加した場合、独立回路と共用回路の接続を切替える選択回路の構成が煩雑になる。又、複数の独立回路でビットエラーが検出された場合、それらの独立回路において、後続する処理が続行不能になることがある。
例えば、4つのチャンネルを介して、4個のフラッシュメモリに並行してアクセスする場合、それぞれのフラッシュメモリから読み出されたそれぞれのデータは、それぞれのチャンネルに割り当てられた独立回路に入力される。この際、各フラッシュメモリの読み出し時間の差異等により、独立回路の出力に出力データがセットされるまでの時間に差異が生じる。このようなときに、先に出力データがセットされた独立回路が優先して共用回路に接続されると、読み出されたそれぞれのデータをホストシステムに転送する順番と一致するような順番で、それらのデータに対する訂正処理が行われない場合がある。また、それぞれのデータをホストシステムに転送する順番と一致するよう順番で、それぞれの独立回路が共用回路に接続されるようにすると、その順番が後の独立回路は、その順番が先の独立回路でビットエラーが検出されない場合でも、その順番が先の独立回路の出力に出力データがセットされるまで、共用回路への接続を待たなければならない。
そこで、本発明は、チャンネル数が増加した場合でも、それぞれの独立回路から共用回路への復号化処理の引継ぎを、煩雑化させることなく、円滑に行うことのできる復号化回路を備えたメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することを目的とする。
本発明の第1の側面に従う、メモリコントローラは、
複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリに書き込むデータを、当該データに生じるビットエラーを訂正するための誤り訂正符号に符号化する符号化手段と、
前記符号化手段により符号化されたデータを、複数個のフラッシュメモリにそれぞれ接続された複数個のチャンネルを有するデータバスを介して、複数個のフラッシュメモリに書き込む書き込み手段と、
前記書き込み手段により複数個のフラッシュメモリに書き込まれたデータを、前記データバスを介して、フラッシュメモリから読み出す読み出し手段と、
前記読み出し手段により複数個のフラッシュメモリから読み出されたデータを保持するデータ保持手段と、
前記データバスの各チャンネルに割り当てられた複数のシンドローム計算回路を有し、前記シンドローム計算回路は、そのシンドローム計算回路が割り当てられたチャンネルを介して読み出されたデータに基づいて、シンドロームを算出するように構成されているシンドローム計算手段と、
前記シンドローム計算回路により算出されたシンドロームを保持するシンドローム保持手段と、
前記シンドローム保持手段に保持されているシンドロームを読み込み、当該シンドロームに基づいて、前記データ保持手段に保持されたデータのビットエラーを訂正するビットエラー訂正手段とを備え、
前記データ保持手段は、複数個のデータ保持ユニットを有し、
前記シンドローム保持手段は、複数個のシンドローム保持ユニットを有し、
それぞれの前記シンドローム保持ユニットには、いずれか1個の前記データ保持ユニットが割り当てられ、
それぞれの前記シンドローム保持ユニットには、当該シンドローム保持ユニットに割り当てられた前記データ保持ユニットに保持されたデータに対応するシンドロームが保持され、
それぞれの前記データ保持ユニットに保持されているデータに対するビットエラーの訂正は、当該データ保持ユニットが割り当てられている前記シンドローム保持ユニットに保持されているシンドロームに基づいて行われる。
複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリに書き込むデータを、当該データに生じるビットエラーを訂正するための誤り訂正符号に符号化する符号化手段と、
前記符号化手段により符号化されたデータを、複数個のフラッシュメモリにそれぞれ接続された複数個のチャンネルを有するデータバスを介して、複数個のフラッシュメモリに書き込む書き込み手段と、
前記書き込み手段により複数個のフラッシュメモリに書き込まれたデータを、前記データバスを介して、フラッシュメモリから読み出す読み出し手段と、
前記読み出し手段により複数個のフラッシュメモリから読み出されたデータを保持するデータ保持手段と、
前記データバスの各チャンネルに割り当てられた複数のシンドローム計算回路を有し、前記シンドローム計算回路は、そのシンドローム計算回路が割り当てられたチャンネルを介して読み出されたデータに基づいて、シンドロームを算出するように構成されているシンドローム計算手段と、
前記シンドローム計算回路により算出されたシンドロームを保持するシンドローム保持手段と、
前記シンドローム保持手段に保持されているシンドロームを読み込み、当該シンドロームに基づいて、前記データ保持手段に保持されたデータのビットエラーを訂正するビットエラー訂正手段とを備え、
前記データ保持手段は、複数個のデータ保持ユニットを有し、
前記シンドローム保持手段は、複数個のシンドローム保持ユニットを有し、
それぞれの前記シンドローム保持ユニットには、いずれか1個の前記データ保持ユニットが割り当てられ、
それぞれの前記シンドローム保持ユニットには、当該シンドローム保持ユニットに割り当てられた前記データ保持ユニットに保持されたデータに対応するシンドロームが保持され、
それぞれの前記データ保持ユニットに保持されているデータに対するビットエラーの訂正は、当該データ保持ユニットが割り当てられている前記シンドローム保持ユニットに保持されているシンドロームに基づいて行われる。
本発明の第1の側面に従う、メモリコントローラは、
処理対象の前記シンドローム保持ユニットを指示する指示手段を更に備え、
前記ビットエラー訂正手段は、前記指示手段が指示する前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、ビットエラー訂正を行い、
前記指示手段に指示される前記シンドローム保持ユニットは、前記ビットエラー訂正が完了する毎に更新されるようにしてもよい。
本発明の第1の側面に従う、メモリコントローラは、
それぞれの前記データ保持ユニットに対応する複数個のフラグ情報を保持するフラグ情報保持手段を更に備えてもよい。
このフラグ情報保持手段により保持される前記フラグ情報は、当該フラグ情報に対応する前記データ保持ユニットに保持されているデータに対する前記ビットエラー訂正が完了したか否かを示す情報である。
処理対象の前記シンドローム保持ユニットを指示する指示手段を更に備え、
前記ビットエラー訂正手段は、前記指示手段が指示する前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、ビットエラー訂正を行い、
前記指示手段に指示される前記シンドローム保持ユニットは、前記ビットエラー訂正が完了する毎に更新されるようにしてもよい。
本発明の第1の側面に従う、メモリコントローラは、
それぞれの前記データ保持ユニットに対応する複数個のフラグ情報を保持するフラグ情報保持手段を更に備えてもよい。
このフラグ情報保持手段により保持される前記フラグ情報は、当該フラグ情報に対応する前記データ保持ユニットに保持されているデータに対する前記ビットエラー訂正が完了したか否かを示す情報である。
本発明の第2の側面に従う、フラッシュメモリシステムは、
前記第1の側面に従うメモリコントローラと、
このメモリコントローラにより制御される複数個のフラッシュメモリを備える。
前記第1の側面に従うメモリコントローラと、
このメモリコントローラにより制御される複数個のフラッシュメモリを備える。
本発明の第3の側面に従う、フラッシュメモリの制御方法は、
複数個のフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリに書き込むデータを、当該データに生じるビットエラーを訂正するための誤り訂正符号に符号化する符号化ステップと、
前記符号化手段により符号化されたデータを、複数個のフラッシュメモリにそれぞれ接続された複数個のチャンネルを有するデータバスを介して、複数個のフラッシュメモリに書き込む書き込みステップと、
前記書き込みステップにより複数個のフラッシュメモリに書き込まれたデータを、前記データバスを介して、フラッシュメモリから読み出す読み出しステップと、
前記読み出しステップにより複数個のフラッシュメモリから読み出されたデータを複数個のデータ保持ユニットに保持するデータ保持ステップと、
前記データバスの各チャンネルを介して読み出されたデータに基づいてシンドロームを算出する算出処理を実行するステップであって、当該算出処理がチャンネル毎に独立して実行されるシンドローム計算ステップと、
前記シンドローム計算ステップにより算出されたシンドロームを複数個のシンドローム保持ユニットに保持するシンドローム保持ステップと、
前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、前記データ保持ユニットに保持されたデータのビットエラーを訂正するビットエラー訂正ステップとを備え、
それぞれの前記シンドローム保持ユニットには、いずれか1個の前記データ保持ユニットが割り当てられ、
それぞれの前記シンドローム保持ユニットには、当該シンドローム保持ユニットに割り当てられた前記データ保持ユニットに保持されたデータに対応するシンドロームが保持され、
それぞれの前記データ保持ユニットに保持されているデータに対するビットエラーの訂正は、当該データ保持ユニットが割り当てられている前記シンドローム保持ユニットに保持されているシンドロームに基づいて行われる。
複数個のフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリに書き込むデータを、当該データに生じるビットエラーを訂正するための誤り訂正符号に符号化する符号化ステップと、
前記符号化手段により符号化されたデータを、複数個のフラッシュメモリにそれぞれ接続された複数個のチャンネルを有するデータバスを介して、複数個のフラッシュメモリに書き込む書き込みステップと、
前記書き込みステップにより複数個のフラッシュメモリに書き込まれたデータを、前記データバスを介して、フラッシュメモリから読み出す読み出しステップと、
前記読み出しステップにより複数個のフラッシュメモリから読み出されたデータを複数個のデータ保持ユニットに保持するデータ保持ステップと、
前記データバスの各チャンネルを介して読み出されたデータに基づいてシンドロームを算出する算出処理を実行するステップであって、当該算出処理がチャンネル毎に独立して実行されるシンドローム計算ステップと、
前記シンドローム計算ステップにより算出されたシンドロームを複数個のシンドローム保持ユニットに保持するシンドローム保持ステップと、
前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、前記データ保持ユニットに保持されたデータのビットエラーを訂正するビットエラー訂正ステップとを備え、
それぞれの前記シンドローム保持ユニットには、いずれか1個の前記データ保持ユニットが割り当てられ、
それぞれの前記シンドローム保持ユニットには、当該シンドローム保持ユニットに割り当てられた前記データ保持ユニットに保持されたデータに対応するシンドロームが保持され、
それぞれの前記データ保持ユニットに保持されているデータに対するビットエラーの訂正は、当該データ保持ユニットが割り当てられている前記シンドローム保持ユニットに保持されているシンドロームに基づいて行われる。
本発明の第3の側面に従う、フラッシュメモリの制御方法は、
処理対象の前記シンドローム保持ユニットを指示する指示ステップを更に備え、
前記ビットエラー訂正ステップでは、前記指示ステップにより指示された前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、ビットエラー訂正を行い、
前記指示ステップにより指示される前記シンドローム保持ユニットは、前記ビットエラー訂正が完了する毎に更新されるようにしてもよい。
処理対象の前記シンドローム保持ユニットを指示する指示ステップを更に備え、
前記ビットエラー訂正ステップでは、前記指示ステップにより指示された前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、ビットエラー訂正を行い、
前記指示ステップにより指示される前記シンドローム保持ユニットは、前記ビットエラー訂正が完了する毎に更新されるようにしてもよい。
本発明の第3の側面に従う、フラッシュメモリの制御方法は、
それぞれの前記データ保持ユニットに対応する複数個のフラグ情報を保持するフラグ情報保持ステップを更に備えてもよい。
このフラグ情報保持ステップにより保持される前記フラグ情報は、当該フラグ情報に対応する前記データ保持ユニットに保持されているデータに対する前記ビットエラー訂正が完了したか否かを示す情報である。
それぞれの前記データ保持ユニットに対応する複数個のフラグ情報を保持するフラグ情報保持ステップを更に備えてもよい。
このフラグ情報保持ステップにより保持される前記フラグ情報は、当該フラグ情報に対応する前記データ保持ユニットに保持されているデータに対する前記ビットエラー訂正が完了したか否かを示す情報である。
本発明によれば、各チャンネルに割り当てられた複数のシンドローム計算回路で算出されたシンドロームが、共通のシンドローム保持手段であるキューに保持されるように復号化回路が構成されている。そして、この復号化回路では、ビットエラー訂正手段である誤り訂正回路が、キューからシンドロームを読み込んで、そのシンドロームに基づいたビットエラー訂正を順次行う。また、ビットエラー訂正の対象となるデータが保持されている領域と、そのデータに対応するシンドロームが保持されているキュー内の領域との対応関係は予め定められている。
復号化回路をこのように構成にしたことにより、複数のシンドローム計算回路と誤り訂正回路との連携を、簡単な構成で円滑に行うことができる。また、この連携のために、煩雑な管理を要求されることもない。更に、シンドローム計算回路で算出されたシンドロームは逐次キューに保持されるため、ビットエラーの発生の有無によらず、フラッシュメモリからのデータの読み出しと、それに並行して行われるシンドローム計算回路への読み出しデータの入力とを連続的に行うことができる。
図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に保持される。上記各種テーブルには、アドレス変換テーブル、検索テーブル、不良ブロックテーブル等が含まれる。アドレス変換テーブルは、論理ブロックと物理ブロックの対応関係を管理するためのテーブルである。検索テーブルは、空きブロックを検索するためのテーブルである。不良ブロックテーブルは不良ブロックを管理するためのテーブルである。
バッファメモリ9は、フラッシュメモリ2から読み出したデータ、又はフラッシュメモリ2に書き込むデータを、一時的に保持する揮発性メモリである。
フラッシュメモリインターフェースブロック10は、フラッシュメモリ2との間で行われるデータ、アドレス情報、ステータス情報、内部コマンド等の送受信を制御する。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。
誤り訂正ブロック11は、フラッシュメモリ2にデータを書き込むときに、そのデータをBCH符号の誤り訂正符号(ECC:Error Correcting Code)に符号化し、フラッシュメモリ2から符号化されたデータを読み出したときに、その符号化されたデータを復号化する。つまり、フラッシュメモリ2に書き込まれるデータは、冗長ビットが付加されたBCH符号に符号化されてフラッシュメモリ2に書き込まれ、その符号化されたデータ(冗長ビットが付加されたデータ)は、読み出されたときに復号化される。この復号化では、符号化の際に付加される冗長ビットのビット数に応じて、所定のビット数までのビットエラーが訂正される。
ROM12は、フラッシュメモリ2を制御するために必要なファームウェアを格納するための不揮発性の記憶素子である。尚、フラッシュメモリシステム1を起動させるために必要な最小限のファームウェアだけをROM12に格納し、その他のファームウェアをフラッシュメモリ2に格納するようにしてもよい。
マイクロプロセッサ6は、ROM12又はフラッシュメモリ2から、ファームウェアを読み込み、ファームウェアに従って動作する。メモリコントローラ3に含まれる機能ブロックは、マイクロプロセッサ6により制御される。
フラッシュメモリ2は、NAND型フラッシュメモリであり、レジスタと、複数のメモリセルが2次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。尚、フラッシュメモリには、SLC(Single Level Cell)タイプのメモリセルで構成されたものと、MLC(Multi Level Cell)タイプのメモリセルで構成されたものがある。
NAND型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック(物理ブロック)単位で行われる。それぞれの物理ブロックは、複数のページ(物理ページ)で構成され、それぞれの物理ページは、ユーザ領域と冗長領域で構成されている。例えば、1個の物理ページは、4セクタ(2048バイト)のユーザ領域と、64バイトの冗長領域とで構成され、1個の物理ブロックは、64個の物理ページで構成されている。ユーザ領域は、ホストシステム4から与えられるデータを主に格納するための領域であり、冗長領域は、論理アドレス情報、ブロックステータス(フラグ)等の付加データを主に格納するための領域である。
論理アドレス情報は、当該情報に係る物理ブロックと対応する論理ブロックを特定するための情報である。ブロックステータス(フラグ)は、当該情報に係る物理ブロックが、不良ブロック(正常にデータの書き込み等を行うことができない物理ブロック)であるか否かを示すフラグである。尚、不良ブロックには、初期不良の不良ブロックと後発不良の不良ブロックがある。初期不良の不良ブロックは、出荷前に検出された不良ブロックである。後発不良の不良ブロックは、使用中に生じた不良ブロックである。初期不良の物理ブロックについては、不良ブロックであることを示すブロックステータス(フラグ)が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス(フラグ)を、ユーザ領域に書き込んでいる製造メーカもある。不良ブロックか否かの判断基準は、設計の際に決められる。
図2に示されているように、内部バス14は4つのチャンネルで構成されている。第1のチャンネル14aには、フラッシュメモリ2aが接続されている。第2のチャンネル14bには、フラッシュメモリ2bが接続されている。第3のチャンネル14cには、フラッシュメモリ2cが接続されている。第4のチャンネル14dには、フラッシュメモリ2dが接続されている。バッファメモリ9に保持されているデータは、フラッシュメモリ2に書き込まれるときに、誤り訂正ブロック11内の符号化機能21によりBCH符号に符号化される。この符号化されたデータである符号化データは、フラッシュメモリインターフェースブロック10を介してフラッシュメモリ2に転送される。フラッシュメモリ2に格納されている符号化データは、フラッシュメモリ2から読み出されたときに、誤り訂正ブロック11内の復号化機能22により符号化される。この複合化されたデータは、バッファメモリ9に保持される。
誤り訂正ブロック11は、1セクタ(512バイト)のデータを処理単位として、符号化及び復号化を行っている。この誤り訂正ブロック11は、最大15ビットのビットエラーに対処できるように設計されている。従って、符号化の際に、1セクタのデータに対して195ビットの冗長ビットが付加される。つまり、符号化データは、バッファメモリ9に保持されていた1セクタのデータと、符号化の際に生成された195ビットの冗長ビットを含んでいる。
図3に示されているように、符号化機能21は4つの符号化回路31a−31dで構成されている。第1のチャンネル14aに接続されているフラッシュメモリ2aには、符号化回路31aで符号化された符号化データが書き込まれる。第2のチャンネル14bに接続されているフラッシュメモリ2bには、符号化回路31bで符号化された符号化データが書き込まれる。第3のチャンネル14cに接続されているフラッシュメモリ2cには、符号化回路31cで符号化された符号化データが書き込まれる。第4のチャンネル14dに接続されているフラッシュメモリ2dには、符号化回路31dで符号化された符号化データが書き込まれる。
復号化機能22は、4つのシンドローム計算回路41a−41d、キュー42、誤り訂正回路及びポインタ44で構成されている。
第1のチャンネル14aに接続されているフラッシュメモリ2aから読み出された符号化データは、シンドローム計算回路41aに入力される。さらに、この符号化データから195ビットの冗長ビットが除かれたデータは、バッファメモリ9に保持される。シンドローム計算回路41aは、入力された符号化データに基づいて算出したシンドロームを出力する。そして、このシンドロームはキュー42に保持される。
第2のチャンネル14bに接続されているフラッシュメモリ2bから読み出された符号化データは、シンドローム計算回路41bに入力される。さらに、この符号化データから195ビットの冗長ビットが除かれたデータは、バッファメモリ9に保持される。シンドローム計算回路41bは、入力された符号化データに基づいて算出したシンドロームを出力する。そして、このシンドロームはキュー42に保持される。
第3のチャンネル14cに接続されているフラッシュメモリ2cから読み出された符号化データは、シンドローム計算回路41cに入力される。さらに、この符号化データから195ビットの冗長ビットが除かれたデータは、バッファメモリ9に保持される。シンドローム計算回路41cは、入力された符号化データに基づいて算出したシンドロームを出力する。そして、このシンドロームはキュー42に保持される。
第4のチャンネル14dに接続されているフラッシュメモリ2dから読み出された符号化データは、シンドローム計算回路41dに入力される。さらに、この符号化データから195ビットの冗長ビットが除かれた1セクタのデータは、バッファメモリ9に保持される。シンドローム計算回路41dは、入力された符号化データに基づいて算出したシンドロームを出力する。そして、このシンドロームはキュー42に保持される。
誤り訂正回路43は、ポインタ44により指示されているシンドロームをキュー42から読み込み、読み込んだシンドロームに基づいて、バッファメモリ9に保持されたデータに生じたビットエラーを訂正する。つまり、誤り訂正回路43は、ビットエラーが生じたビットを特定し、そのビットの論理値を反転させる。
尚、4つのチャンネル(第1のチャンネル14a−第4のチャンネル14d)を介して、4個のフラッシュメモリ(フラッシュメモリ2a−フラッシュメモリ2d)から読み出されたそれぞれのデータは、ホストシステム4に転送される順番と一致するような並びで、バッファメモリ9内の領域に保持される。つまり、各データが保持されるバッファメモリ9内の領域の配列は、ホストシステム4に転送される順番と一致するように決められる。従って、4つのチャンネルを介して、4個のフラッシュメモリから読み出されたデータは、LBAの順番で並んでバッファメモリ9に保持される。
又、4個のシンドローム計算回路41a−41dで算出されたそれぞれシンドロームは、そのシンドロームと対応するデータが保持されるバッファメモリ9内の領域と対応するキュー42内の領域に保持される。従って、それぞれシンドロームは、それらに対応するそれぞれのデータがホストシステム4に転送される順番と一致するよう並びで、キュー42内の領域に保持される。
又、ポインタ44に指示されるキュー42内の領域は、順次、次の領域に更新される。例えば、キュー42内の領域を示す番号が、順次、インクリメントされる。従って、誤り訂正回路43は、ホストシステム4に転送される順番で、つまり、LBAの順番で、バッファメモリ9に保持されたデータに生じたビットエラーの訂正を行っていく。
図4は、LBAが連続する16セクタのデータに対応する符号化データを、フラッシュメモリ2から読み出す場合の例を示している。図4に示されているように、それぞれ1セクタのデータに対応する符号化データD#n−D#(n+15)は、4個のフラッシュメモリ2a−2dに順次振り分けられている。つまり、第1のチャンネル14aに接続されているフラッシュメモリ2aから読み出された符号化データD#nは、シンドローム計算回路41aに入力される。第2のチャンネル14bに接続されているフラッシュメモリ2bから読み出された符号化データD#(n+1)は、シンドローム計算回路41bに入力される。第3のチャンネル14cに接続されているフラッシュメモリ2cから読み出された符号化データD#(n+2)は、シンドローム計算回路41cに入力される。第4のチャンネル14dに接続されているフラッシュメモリ2dから読み出された符号化データD#(n+3)は、シンドローム計算回路41dに入力される。この後の符号化データも同様に振り分けられる。
従って、シンドローム計算回路41aには、符号化データD#n、符号化データD#(n+4)、符号化データD#(n+8)及び符号化データD#(n+12)が入力される。シンドローム計算回路41bには、符号化データD#(n+1)、符号化データD#(n+5)、符号化データD#(n+9)及び符号化データD#(n+13)が入力される。シンドローム計算回路41cには、符号化データD#(n+2)、符号化データD#(n+6)、符号化データD#(n+10)及び符号化データD#(n+14)が入力される。シンドローム計算回路41dには、符号化データD#(n+3)、符号化データD#(n+7)、符号化データD#(n+11)及び符号化データD#(n+15)が入力される。
4つのシンドローム計算回路41a−41dは、入力された符号化データに基づいてシンドロームを算出する。算出されるシンドロームの個数は、訂正能力(訂正可能なビットエラーの最大数)に応じて決まる。訂正能力が15ビットなので、つまり、訂正することができるビットエラーの最大値が15ビットなので、各符号化データに基づいて30個のシンドロームが算出される。シンドロームSd#n−Sd#(n+15)は、符号化データD#n−D#(n+15)にそれぞれ対応している。シンドロームSd#n−Sd#(n+15)は、それぞれが30個のシンドロームを含んでいる。
シンドローム計算回路41aは、シンドロームSd#n、シンドロームSd#(n+4)、シンドロームSd#(n+8)及びシンドロームSd#(n+12)を算出し、それらを出力する。シンドローム計算回路41bは、シンドロームSd#(n+1)、シンドロームSd#(n+5)、シンドロームSd#(n+9)及びシンドロームSd#(n+13)を算出し、それらを出力する。シンドローム計算回路41cは、シンドロームSd#(n+2)、シンドロームSd#(n+6)、シンドロームSd#(n+10)及びシンドロームSd#(n+14)を算出し、それらを出力する。シンドローム計算回路41dは、シンドロームSd#(n+3)、シンドロームSd#(n+7)、シンドロームSd#(n+11)及びシンドロームSd#(n+15)を算出し、それらを出力する。
シンドローム計算回路41a−41dから出力されたシンドロームSd#n−Sd#(n+15)は、キュー42に保持される。符号化データD#n−D#(n+15)は、シンドローム計算回路41a−41d入力にされると共に、バッファメモリ9に保持される。バッファメモリ9には、符号化データのうち冗長ビット以外のデータ部分(1セクタのデータ)だけが保持され、冗長ビットは保持されない。符号化データD#n−D#(n+15)のそれぞれのデータは、符号化データD#nからD#(n+15)に向かう順番でホストシステム4に転送される。従って、それぞれのデータには、符号化データD#nからD#(n+15)に向かう順番と一致するような並びで、バッファメモリ9内の領域が割り当てられる。このように領域を割り当てることにより、符号化データD#nからD#(n+15)に向かう順番と一致するような配列で、それぞれのデータが保持される。
図5に示されているように、バッファメモリ9の符号化データD#n−D#(n+15)がそれぞれ保持される領域と、キュー42のシンドロームSd#n−Sd#(n+15)がそれぞれ保持される領域との対応関係は予め決められている。つまり、バッファメモリ9内の符号化データD#nが保持された領域に対応するキュー42内の領域にシンドロームSd#nが保持されている。例えば、バッファメモリ9内の第1のメモリ領域がキュー42内の第1のキュー領域に対応し、バッファメモリ9内の第2のメモリ領域がキュー42内の第2のキュー領域に対応し、バッファメモリ9内の第iのメモリ領域(#i)がキュー42内の第iのキュー領域(#i)に対応している。この場合に、符号化データD#(n+5)が第iのメモリ領域(#i)にされたとき、符号化データD#(n+5)に対応するシンドロームSd#(n+5)は第iのキュー領域(#i)に保持される。
このように対応関係が決められているため、キュー42には、符号化データD#nからD#(n+15)に向かう順番と一致するような配列で、それぞれのデータに対応するシンドロームSd#n−Sd#(n+15)が保持される。
バッファメモリ9内のそれぞれのメモリ領域は、それらに保持されているデータに対する誤り訂正処理が完了したか否を示すフラグ45を持っている。つまり、このフラグ45の各ビットは、そのビットに対応するメモリ領域に保持されているデータに対する誤り訂正処理が終了したか否かを示している。これらのビットにおいて、論理値“0”は誤り訂正処理が終了していないことに対応し、論理値“1”は誤り訂正処理が終了していることに対応する。
誤り訂正回路43は、読み込んだシンドロームに基づいて、そのシンドロームに対応するデータに生じたビットエラーを訂正する。例えば、誤り訂正回路43は、シンドロームSd#nを読み込み、シンドロームSd#nに含まれる30個のシンドロームうち、少なくとも1個以上のシンドロームが“0”でなければ、ビットエラーが生じたビットを特定する処理を開始する。ビットエラーが生じたビットを特定された後、誤り訂正回路43は、シンドロームSd#nが保持されていたキュー領域に対応するメモリ領域に保持されている符号化データD#nのビットエラーを訂正する。このビットエラーの訂正が完了した後に、誤り訂正回路43は、その符号化データD#nが保持されているメモリ領域に対応するフラグ45内のビットの論理値を“0”から“1”に変更する。尚、読み込んだ30個のシンドロームが全て“0”のときは、ビットエラーが生じていないと判断される。従って、誤り訂正回路43は、ビットエラーが生じたビットの特定等の訂正処理を行わず、そのシンドロームに対応するフラグ45内のビットの論理値を“0”から“1”に変更する。
ポインタ45が示すキュー領域は、各シンドロームに対応する訂正処理が完了したとき、又は各シンドロームに基づいてビットエラーが生じていないと判断されたとき、次のキュー領域に変更される。誤り訂正回路43は、ポインタ45が示すキュー領域に従って、シンドロームSd#n−Sd#(n+15)を順次読み込んでいく。読み込んだ30個のシンドロームが全て“0”の場合は訂正処理が行われず、フラグ45内のビットの論理値変更だけが行われる。それ以外の場合は訂正処理が行われ、訂正処理が完了した後にフラグ45内のビットの論理値変更が行われる。このように訂正処理が進められることにより、シンドロームSd#nからSd#(n+15)に向かう順番で訂正処理が実行される。つまり、キュー42には、シンドロームSd#nからSd#(n+15)に向かう順番と一致するような配列で、それぞれのシンドロームが保持される。そして、この配列の順番で、訂正処理が実行される。
バッファメモリ9に保持された符号化データD#n−D#(n+15)に対応するそれぞれのデータは、訂正処理がなされた後、又はビットエラーが生じていないと判断された後に、ホストシステム4に転送される。この際、転送することが許されたデータであるかどうかは、フラグ45に基づいて判断される。つまり、バッファメモリ9内の各メモリ領域に保持されているデータは、その各メモリ領域に対応するフラグ45内のビットの論理値が“0”から“1”に変更された後にホストシステム4に転送される。
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々の変更を加え得ることは勿論である。
例えば、ビットエラーの訂正処理における符号化の種類は、BCH符号以外の符号に基づいた符号化であってもよい。ビットエラーの訂正処理における訂正能力は、適宜変更することができる。また、符号化及び復号化の処理単位は、1セクタ(512バイト)単位に限定されず、例えば、2セクタ(1024バイト)単位や4セクタ(2048バイト)単位であってもよい。データバスは4チャンネルに限定されず、例えば、5チャンネルや、8チャンネル、あるいは16チャンネル等の構成であってもよい。
本発明は、種々のデジタル情報を取り扱うパーソナルコンピュータやデジタルスチルカメラ等の電子機器に装着又内蔵される情報記憶(記録)装置に適用することができる。
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ、11…誤り訂正ブロック、22…復号化機能
Claims (7)
- 複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリに書き込むデータを、当該データに生じるビットエラーを訂正するための誤り訂正符号に符号化する符号化手段と、
前記符号化手段により符号化されたデータを、複数個のフラッシュメモリにそれぞれ接続された複数個のチャンネルを有するデータバスを介して、複数個のフラッシュメモリに書き込む書き込み手段と、
前記書き込み手段により複数個のフラッシュメモリに書き込まれたデータを、前記データバスを介して、フラッシュメモリから読み出す読み出し手段と、
前記読み出し手段により複数個のフラッシュメモリから読み出されたデータを保持するデータ保持手段と、
前記データバスの各チャンネルに割り当てられた複数のシンドローム計算回路を有し、前記シンドローム計算回路は、そのシンドローム計算回路が割り当てられたチャンネルを介して読み出されたデータに基づいて、シンドロームを算出するように構成されているシンドローム計算手段と、
前記シンドローム計算回路により算出されたシンドロームを保持するシンドローム保持手段と、
前記シンドローム保持手段に保持されているシンドロームを読み込み、当該シンドロームに基づいて、前記データ保持手段に保持されたデータのビットエラーを訂正するビットエラー訂正手段とを備え、
前記データ保持手段は、複数個のデータ保持ユニットを有し、
前記シンドローム保持手段は、複数個のシンドローム保持ユニットを有し、
それぞれの前記シンドローム保持ユニットには、いずれか1個の前記データ保持ユニットが割り当てられ、
それぞれの前記シンドローム保持ユニットには、当該シンドローム保持ユニットに割り当てられた前記データ保持ユニットに保持されたデータに対応するシンドロームが保持され、
それぞれの前記データ保持ユニットに保持されているデータに対するビットエラーの訂正は、当該データ保持ユニットが割り当てられている前記シンドローム保持ユニットに保持されているシンドロームに基づいて行われることを特徴とするメモリコントローラ。 - 処理対象の前記シンドローム保持ユニットを指示する指示手段を更に備え、
前記ビットエラー訂正手段は、前記指示手段が指示する前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、ビットエラー訂正を行い、
前記指示手段が指示する前記シンドローム保持ユニットは、前記ビットエラー訂正が完了する毎に更新されることを特徴とする請求項1に記載のメモリコントローラ。 - それぞれの前記データ保持ユニットに対応する複数個のフラグ情報を保持するフラグ情報保持手段を更に備え、
前記フラグ情報は、当該フラグ情報に対応する前記データ保持ユニットに保持されているデータに対する前記ビットエラー訂正が完了したか否かを示す情報であることを特徴とする請求項1又は2に記載メモリコントローラ。 - 請求項1乃至3のいずれか1項に記載のメモリコントローラと、
このメモリコントローラにより制御される複数個のフラッシュメモリを備えるフラッシュメモリシステム。 - 複数個のフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリに書き込むデータを、当該データに生じるビットエラーを訂正するための誤り訂正符号に符号化する符号化ステップと、
前記符号化手段により符号化されたデータを、複数個のフラッシュメモリにそれぞれ接続された複数個のチャンネルを有するデータバスを介して、複数個のフラッシュメモリに書き込む書き込みステップと、
前記書き込みステップにより複数個のフラッシュメモリに書き込まれたデータを、前記データバスを介して、フラッシュメモリから読み出す読み出しステップと、
前記読み出しステップにより複数個のフラッシュメモリから読み出されたデータを複数個のデータ保持ユニットに保持するデータ保持ステップと、
前記データバスの各チャンネルを介して読み出されたデータに基づいてシンドロームを算出する算出処理を実行するステップであって、当該算出処理がチャンネル毎に独立して実行されるシンドローム計算ステップと、
前記シンドローム計算ステップにより算出されたシンドロームを複数個のシンドローム保持ユニットに保持するシンドローム保持ステップと、
前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、前記データ保持ユニットに保持されたデータのビットエラーを訂正するビットエラー訂正ステップとを備え、
それぞれの前記シンドローム保持ユニットには、いずれか1個の前記データ保持ユニットが割り当てられ、
それぞれの前記シンドローム保持ユニットには、当該シンドローム保持ユニットに割り当てられた前記データ保持ユニットに保持されたデータに対応するシンドロームが保持され、
それぞれの前記データ保持ユニットに保持されているデータに対するビットエラーの訂正は、当該データ保持ユニットが割り当てられている前記シンドローム保持ユニットに保持されているシンドロームに基づいて行われることを特徴とするフラッシュメモリの制御方法。 - 処理対象の前記シンドローム保持ユニットを指示する指示ステップを更に備え、
前記ビットエラー訂正ステップでは、前記指示ステップにより指示された前記シンドローム保持ユニットからシンドロームを読み込み、当該シンドロームに基づいて、ビットエラー訂正を行い、
前記指示ステップにより指示される前記シンドローム保持ユニットは、前記ビットエラー訂正が完了する毎に更新されることを特徴とする請求項5に記載のフラッシュメモリの制御方法。 - それぞれの前記データ保持ユニットに対応する複数個のフラグ情報を保持するフラグ情報保持ステップを更に備え、
前記フラグ情報は、当該フラグ情報に対応する前記データ保持ユニットに保持されているデータに対する前記ビットエラー訂正が完了したか否かを示す情報であることを特徴とする請求項5又は6に記載メモリコントローラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010138928A JP2012003570A (ja) | 2010-06-18 | 2010-06-18 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010138928A JP2012003570A (ja) | 2010-06-18 | 2010-06-18 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012003570A true JP2012003570A (ja) | 2012-01-05 |
Family
ID=45535464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010138928A Withdrawn JP2012003570A (ja) | 2010-06-18 | 2010-06-18 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012003570A (ja) |
-
2010
- 2010-06-18 JP JP2010138928A patent/JP2012003570A/ja not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9223648B2 (en) | Memory storage device, memory controller thereof, and method for processing data thereof | |
JP4901987B1 (ja) | 記憶装置、電子機器及び誤りデータの訂正方法 | |
US9424126B2 (en) | Memory controller | |
US8392797B2 (en) | Error correcting controller, flash memory chip system, and error correcting method thereof | |
JP2015018451A (ja) | メモリコントローラ、記憶装置およびメモリ制御方法 | |
US20160070507A1 (en) | Memory system and method of controlling memory device | |
US20080082872A1 (en) | Memory controller, memory system, and data transfer method | |
CN103197985B (zh) | 存储控制装置 | |
US9754682B2 (en) | Implementing enhanced performance with read before write to phase change memory | |
US9720609B1 (en) | Data protecting method, memory control circuit unit and memory storage device | |
JP5093294B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2009301194A (ja) | 半導体記憶装置の制御システム | |
US8533549B2 (en) | Memory system and computer system | |
US10546640B2 (en) | Data protecting method and memory storage device | |
JP2006221334A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2014186772A (ja) | 半導体記憶装置、コントローラ、及びメモリシステム | |
JP4936271B2 (ja) | 半導体記憶装置 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2012003569A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4655034B2 (ja) | メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法 | |
JP4710918B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4692843B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US20160239227A1 (en) | Data Storage Device and Data Retrieval Method | |
JP2012068764A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 |
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 |