Nothing Special   »   [go: up one dir, main page]

JP4332132B2 - メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 - Google Patents

メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 Download PDF

Info

Publication number
JP4332132B2
JP4332132B2 JP2005138944A JP2005138944A JP4332132B2 JP 4332132 B2 JP4332132 B2 JP 4332132B2 JP 2005138944 A JP2005138944 A JP 2005138944A JP 2005138944 A JP2005138944 A JP 2005138944A JP 4332132 B2 JP4332132 B2 JP 4332132B2
Authority
JP
Japan
Prior art keywords
flash memory
data
checksum
writing
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.)
Expired - Fee Related
Application number
JP2005138944A
Other languages
English (en)
Other versions
JP2006318132A (ja
Inventor
俊一 花房
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Corp
Original Assignee
TDK Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TDK Corp filed Critical TDK Corp
Priority to JP2005138944A priority Critical patent/JP4332132B2/ja
Publication of JP2006318132A publication Critical patent/JP2006318132A/ja
Application granted granted Critical
Publication of JP4332132B2 publication Critical patent/JP4332132B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Description

本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムに関する。
近年、フラッシュメモリの性能(記憶容量、信頼性、動作速度等)が向上し、不揮発性の記録媒体として、プログラム等を格納する用途に用いられつつある。
フラッシュメモリは、その特性上、データが正常に書き込まれない(データに誤りが混入する)おそれがある。このため、データを書き込んだ後に、書き込んだデータを読み出して、正常に書き込みが成されたことを確認する手順(ベリフィケーション)が必要である。最も確実なベリフィケーションの手法は、データの全てのビットを照合する手法であるが、この手法は時間がかかり、利便性に欠ける。
このため、データを所定のビット毎に区切り、それを順次加算して得られるチェックサム値を求め、このチェックサム値と予め算出された期待値とに一致を確認することでベリフィケーションの短時間化を図る手法が提案されている(例えば特許文献1)。
特開2001−175478号公報
しかしながら、上記の手法では、予めチェックサムの期待値を求めておく必要があるため、データ作成時にチェックサムの期待値を求める時間を含めて総合的に考えると、ベリフィケーションの短時間化は十分とは言えない。
本発明は上記の実情に鑑みてなされたもので、ベリフィケーションの時間を抑制可能なフラッシュメモリの制御方法、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
本発明の第1の観点に係るメモリコントローラは、フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、フラッシュメモリにデータを書き込む書込手段と、前記フラッシュメモリに書き込まれるデータのエラーコレクションコードを生成するエラーコレクションコード生成手段と、前記エラーコレクションコードを前記フラッシュメモリに書き込むエラーコレクションコード書込手段と、前記書込手段が前記フラッシュメモリにデータを書き込むのと平行して、前記フラッシュメモリに書き込まれるデータのチェックサムの期待値を算出する期待値算出手段と、前記フラッシュメモリに書き込まれているデータを読み出す読出手段と、前記フラッシュメモリに書き込まれている前記エラーコレクションコードを読み出すエラーコレクションコード読出手段と、前記フラッシュメモリから読み出されたデータに含まれる誤りを、前記フラッシュメモリから読み出された前記エラーコレクションコードに基づいて訂正する訂正手段と、前記書込手段が前記フラッシュメモリにデータを書き込んだ後に、前記フラッシュメモリから当該書き込んだデータを読み出し、読み出したデータのチェックサム値を算出するチェックサム算出手段と、前記期待値算出手段が算出したチェックサムの期待値と前記チェックサム算出手段が算出したチェックサム値とを照合して、前記フラッシュメモリにデータが正しく書き込まれたか否かを判定する判定手段とを備え、前記チェックサム算出手段は、前記フラッシュメモリから読み出したデータに誤りが含まれていた場合、前記前記訂正手段により誤りが訂正されたデータのチェックサム値を算出することを特徴とする。
なお、本発明において、ホストシステムとは、フラッシュメモリを記録媒体として利用する装置を指すものとする。
前記期待値算出手段は、ハードウェアによる加算器から構成されることが望ましい。
前記チェックサム算出手段は、ハードウェアによる加算器から構成されることが望ましい。
前記期待値算出手段及び前記チェックサム算出手段は、前記ホストシステムからの要求に応じて、算出する期待値及びチェックサム値のビット数を変更してもよい。
前記期待値算出手段及び前記チェックサム算出手段は、算出する期待値及びチェックサム値のビット数を、当該メモリコントローラと前記フラッシュメモリとを接続するバスのビット幅と等しいビット数としてもよい。
本発明の第2の観点に係るフラッシュメモリシステムは、上記の特徴のうち、少なくともいずれか一つを有するメモリコントローラと、フラッシュメモリとを備えることを特徴とする。
本発明の第3の観点に係るフラッシュメモリの制御方法は、フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、フラッシュメモリにデータを書き込む書込ステップと、前記フラッシュメモリに書き込まれるデータのエラーコレクションコードを生成するエラーコレクションコード生成ステップと、前記エラーコレクションコードを前記フラッシュメモリに書き込むエラーコレクションコード書込ステップと、書込ステップにより前記フラッシュメモリデータ書き込まれるのと平行して、前記フラッシュメモリに書き込まれるデータのチェックサムの期待値を算出する期待値算出ステップと、前記書込ステップにより書き込まれたデータを前記フラッシュメモリから読み出す読出ステップと、前記書込ステップにより書き込まれたデータの前記エラーコレクションコードを前記フラッシュメモリから読み出すエラーコレクションコード読出ステップと、前記読出ステップにより読み出されたデータに含まれる誤りを、前記エラーコレクションコード読出ステップにより読み出された前記エラーコレクションコードに基づいて訂正する訂正ステップと、前記読出ステップにより読み出されたデータのチェックサム値を算出するチェックサム算出ステップと、前記期待値算出ステップにより算出されたチェックサムの期待値と、前記チェックサム算出ステップにより算出されたチェックサム値とを照合し、データが正しく書き込まれたか否かを判定する判定ステップとを備え、前記読出ステップにより読み出されたデータに誤りが含まれていた場合、前記チェックサム算出ステップでは、前記訂正ステップにより誤りが訂正されたデータのチェックサム値を算出することを特徴とする。
本発明によれば、フラッシュメモリへのデータ書き込みと平行してチェックサムの期待値を求めるため、ベリフィケーションの時間を抑制することができる。
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
[フラッシュメモリシステム1の説明]
図1は、本発明に係るフラッシュメモリシステム1を概略的に示すブロック図である。図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するコントローラ3で構成されている。
なお、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続される。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
コントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、ROM(Read Only Memory)12と、第1の加算器15と、第1のレジスタ16と、第2の加算器17と、第2のレジスタ18と、から構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
マイクロプロセッサ6は、ROM12に記録されたプログラムに従って、コントローラ3の全体の動作を制御する。具体的には、マイクロプロセッサ6は、フラッシュメモリ2にデータを書き込むための書込処理、データを読み出すための読出処理、アドレス変換テーブルの作成、消去済ブロック検索用テーブルの作成等の処理を実行するように各部を制御する。
ホストインターフェースブロック7は、ホストシステム4との間の、データ、アドレス情報、ステータス情報、外部コマンド情報等の授受を行なう。すなわち、フラッシュメモリシステム1とホストシステム4は、外部バス13を介して相互に接続される。かかる状態において、ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてコントローラ3の内部に取り込まれ、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
より詳細には、ホストインターフェースブロック7は、ホストシステム4より供給されるホストアドレス及び外部コマンドを一時的に格納するコマンドレジスタ、書き込み又は読み出しを行うデータのサイズを格納するセクタ数レジスタ、書き込み又は読み出しを行うデータの論理ブロックアドレスを格納するLBA(Logical Block Addressing)レジスタ、等を有する。そして、これらのレジスタを介してホストシステム4との情報の授受を行う。
ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。
バッファ9は、フラッシュメモリ2から読出したデータ及びフラッシュメモリ2に書込むデータを一時的に保持する。
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド情報等の授受を行う。
なお、本実施の形態のフラッシュメモリシステム1における、内部バス14は、16ビットのビット幅を有するものとする。
ECCブロック11は、フラッシュメモリ2に書込むデータに付加されるエラーコレクションコードを生成するとともに、読出しデータに付加されたエラーコレクションコードに基づいて、読出したデータに含まれる誤りを検出・訂正する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ROM12は、例えば、書込処理、読出処理、アドレス変換テーブルの作成、消去済ブロック検索用テーブルの作成等の処理手順を定義するプログラムを格納する。
第1の加算器15は、フラッシュメモリ2にデータが書き込まれる際に、第1のレジスタ16と協働して、書き込むデータを内部バス14のビット数毎に区切って加算した累積値(チェックサムの期待値)を算出する。より詳細には、第1の加算器15は、内部バス14と等しいビット幅(すなわち16ビット)を有する加算器であり、内部バス14から供給される書込データと、第1のレジスタ16から供給される値と、を加算して、その値を第1のレジスタ16に保持させる。
第1のレジスタ16は、第1の加算器15が出力する値を一時的に保持する記憶素子である。第1のレジスタ16は、保持値を第1の加算器15に戻す。
第2の加算器17は、第2のレジスタ18と協働して、フラッシュメモリ2から読み出されるデータを内部バス14のビット数毎に区切って加算した累積値(チェックサム値)を算出する。より詳細には、第2の加算器17は、内部バス14と等しいビット幅(すなわち16ビット)を有する加算器であり、内部バス14から供給される読出データと、第2のレジスタ18から供給される値と、を加算して、その値を第2のレジスタ18に保持させる。
第2のレジスタ18は、第2の加算器17が出力する値を一時的に保持する記憶素子である。第2のレジスタ18は、保持値を第2の加算器17に戻す。
[フラッシュメモリの説明]
次に、フラッシュメモリ2について説明する。図2は、フラッシュメモリ2のメモリ構造を概略的に示す図である。図2に示したように、フラッシュメモリ2はデータの読出し及び書込みにおける処理単位であるページと、データの消去単位であるブロックで構成されている。
上記ページは、例えば、512バイトのユーザ領域25と、16バイトの冗長領域26によって構成される。ユーザ領域25は、主に、ホストシステム4から供給されるデータが格納される領域であり、冗長領域26は、エラーコレクションコード、ブロックステータス、対応論理ブロックアドレス等の付加情報が格納される領域である。
エラーコレクションコードは、ユーザ領域25に格納されたデータに含まれる誤りを訂正するための付加情報であり、ECCブロック11によって生成される。このエラーコレクションコードに基づき、ユーザ領域25に格納されたデータに含まれる誤りが所定数以下であれば、その誤りが訂正される。
ブロックステータスは、そのブロックが不良ブロック(正常にデータの書込み等を行なうことができないブロック)であるか否かを示すフラグであり、そのブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
対応論理ブロックアドレスは、そのブロックにデータが格納されている場合に、そのブロックがどの論理ブロックアドレスに対応するかを示している。なお、そのブロックにデータが格納されていない場合は、対応論理ブロックアドレスも格納されていないので、対応論理ブロックアドレスが格納されているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが格納されていない場合は消去済ブロックであると判断できる。
[論理ブロックアドレスと物理ブロックアドレスの説明]
フラッシュメモリ2はデータの上書きができないため、データの書替えを行なう場合には、ブロック消去されている消去済ブロックに新たなデータ(書替後のデータ)を書込み、古いデータ(書替前のデータ)が書込まれていたブロックを消去するという2段階の処理を行なわなければならない。このとき、消去はブロック単位で処理されるため、古いデータ(書替前のデータ)が書込まれていたページが含まれるブロックの、全ページのデータが消去されてしまう。従って、データの書替えを行なう場合、書替えるページが含まれるブロックの、他のページのデータについても、消去済ブロックに移動させる処理が必要となる。
上記のようにデータを書替える場合、書替後のデータは書替前と異なるブロックに書込まれるため、ホストシステム4側から与えられる論理ブロックアドレスと、フラッシュメモリ2内でのブロックアドレスである物理ブロックアドレスとの対応関係は、データを書替える毎に動的に変化する。このため、論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルが必要となる。なお、このアドレス変換テーブルは、フラッシュメモリ2の冗長領域26に書込まれている対応論理ブロックアドレスに基づいて作成され、データが書替えられる毎に、その書替えに関わった部分の対応関係が更新される。
[ゾーンの構成の説明]
次に、フラッシュメモリ2内の複数のブロックで構成したゾーンを、論理ブロックアドレスの空間に割当てるゾーン管理について図面を参照して説明する。図3は、512のブロックでゾーンを構成した例を示している。図3に示した例では、ゾーンは、512のブロックB0000〜B0511(物理ブロックアドレスの0000〜0511)で構成され、各ブロックは、読出し及び書込処理の単位である32のページP00〜P31で構成されている。ここで、ブロックは消去処理の単位であり、ページは読出し及び書込処理の単位である。
また、このゾーンを、論理ブロックアドレスの空間に割当てる場合、不良ブロックの発生を考慮して、ゾーンを構成するブロック数よりも少ないブロック数の論理ブロックアドレスの空間に割当てられる。この割当は、通常、フラッシュメモリ2の仕様に応じて行なわれるが、例えば、512のブロックで構成されたゾーンを、500ブロック分の論理ブロックアドレスの空間に割当てたり、490ブロック分の論理ブロックアドレスの空間に割当てたりすることができる。この際、論理ブロックアドレスの空間に割当てるブロック数を増やせば、フラッシュメモリ2の使用効率は良くなるが、不良ブロックの発生に対する許容量(許容できる不良ブロックの発生数)は少なくなる。
なお、本実施の形態のフラッシュメモリシステム1においては、図4に示したように、512ブロックで構成されたゾーンを、496ブロック分の論理ブロックアドレスの空間に割当てるものとする。
[アドレス変換テーブルの説明]
次に、アドレス変換テーブルについて、説明する。アドレス変換テーブルは、論理ブロックアドレスと物理ブロックアドレスの対応関係を管理する。
図5は、図4に示したゾーン0に対するアドレス変換テーブルの一例を示したものであり、各論理ブロックアドレスに対応するデータが格納されているフラッシュメモリ2内での物理ブロックアドレスが、論理ブロックアドレス順に記述されている。また、フラッシュメモリ2にデータが格納されていない論理ブロックアドレスについては、アドレス変換テーブルのその論理ブロックアドレスに対応した部分に、物理ブロックアドレスではなく、データが格納されていないことを示すフラグ(以下、対応するデータが格納されていないことを示すフラグを未格納フラグと言う)が設定される。
例えば、図4に示したゾーン0のアドレス変換テーブルを作成する場合、マイクロプロセッサ6は、496ブロック分の物理ブロックアドレスを記述できる領域をワークエリア8(SRAM)上に確保し、その物理ブロックアドレスを記述する領域に初期設定として未格納フラグを設定する。その後、マイクロプロセッサ6は、フラッシュメモリインターフェースブロック10を制御してフラッシュメモリ2のゾーン0を構成するブロックの冗長領域26を順次読出していき、冗長領域26に論理ブロックアドレス(対応論理ブロックアドレスとして記述されている論理ブロックアドレス)が記述されている場合には、アドレス変換テーブルのその論理ブロックアドレスに対応する部分に、その論理ブロックアドレスが記述されているブロックの物理ブロックアドレスを記述する。
なお、このアドレス変換テーブルの作成処理で物理ブロックアドレスが記述されなかった部分については、初期設定で記述された未格納フラグがそのまま残る。
[消去済ブロック検索用テーブルの説明]
次に、消去済ブロック検索用テーブルについて、図面を参照して説明する。消去済ブロック検索用テーブルは、データの書込み先とすることができる消去済ブロックを検索するためのテーブルである。
まず、消去済ブロック検索用テーブルを用いて、消去済ブロックを検索する方法について説明する。例えば、図4に示したゾーンの消去済ブロックを検索する場合、マイクロプロセッサ6は、512ビットの領域をSRAM上に確保し、その領域の各ビットにゾーンを構成する各ブロックを割当てた消去済ブロック検索用テーブルを作成する。
図6は、図4に示したゾーン0とゾーン1の消去済ブロック検索用テーブルを概念的に示した概念図である。ここで、ゾーン0の消去済ブロック検索用テーブル上のビットは、ブロックB0000〜B0511(物理ブロックアドレスの0000〜0511)に対応し、ゾーン1の消去済ブロック検索用テーブル上のビットは、ブロックB0512〜B1023(物理ブロックアドレスの0512〜1023)に対応する。
また、消去済ブロック検索用テーブル上のビットと、ゾーンを構成するブロックとの対応関係については、図6に示した消去済ブロック検索用テーブル上のビットを、上の行から下の行へ、各行を左から右へ物理ブロックアドレス順に対応させている。従って、ゾーン0の消去済ブロック検索用テーブルでは、左上のビットが、B0000(物理ブロックアドレスの0000)のブロックに対応し、右下のビットが、B0511(物理ブロックアドレスの0511)のブロックに対応する。
また、消去済ブロック検索用テーブル上のビットは、「0」と「1」で消去済ブロックであるか否かを示しており、例えば、データが書込まれている場合(または不良ブロックであることを示すブロックステータスが記述されている場合)は、そのビットに「0」を、データが書込まれていない場合(消去済ブロックの場合)は、そのビットに「1」を設定する。
なお、この消去済ブロック検索用テーブルは、アドレス変換テーブルを作成する際に一緒に作成することができる。例えば、マイクロプロセッサ6は、消去済ブロック検索用テーブルを作成するワークエリア8(SRAM)上の領域に「0」を設定しておき、各ブロックの冗長領域26に対応論理ブロックアドレスも不良ブロックであることを示すブロックステータスも記述されていないときに、そのブロックに対応するビットに「1」を設定するようにすれば、アドレス変換テーブルを作成する際に一緒に作成することができる。つまり、ゾーンを構成するブロックの冗長領域26に記述されているデータを読出したときにこの処理を行なえば、消去済ブロックに対応するビットだけに「1」が設定され、消去済ブロックでないブロックに対応するビットは予め設定した「0」のままになる。
また、マイクロプロセッサ6は、消去済ブロックにデータを書込が書き込まれたときに、そのブロックに対応するビットを「1」から「0」に変更し、データが書込まれているブロックがブロック消去されたときに、そのブロックに対応するビットを「0」から「1」に変更することで、消去済ブロック検索用テーブルを随時更新する。
次に、この消去済ブロック検索用テーブルを用いて消去済ブロックを検索する場合について図7を参照して説明する。図7は、ゾーン0の消去済ブロック検索用テーブルを示している。例えば、一番上の行の各ビットは、ブロックB0000〜B0007(物理ブロックアドレスの0000〜0007)に対応し、一番下の行はブロックB0504〜B0511(物理ブロックアドレスの0504〜0511)に対応する。
マイクロプロセッサ6は、消去済ブロック検索用テーブルを、上の行から下の行へと走査する。また、マイクロプロセッサ6は、消去済ブロック検索用テーブル内の各行を左から右へと走査する。すなわち、マイクロプロセッサ6は、ブロックB0000(物理ブロックアドレスの0000)に対応するビット(一番上の行の、一番左のビット)から、ブロックB0511(物理ブロックアドレスの0511)に対応するビット(一番下の行の、一番右のビット)までを走査していき、消去済ブロックに対応する「1」のビットを検索する。
図7に示した消去済ブロック検索用テーブルを検索する場合、上から2番目の行の、左から3番目のビットが「1」なので、マイクロプロセッサ6は、ここで検索を終了し、このビットに対応するブロックB0010(物理ブロックアドレスの0010)を、データの書込み先のブロックとして特定する。
また、次回の検索は、上から2番目の行の、左から4番目のビットから走査を開始し、上から4番目の行の、左から5番目のビットが「1」なので、マイクロプロセッサ6は、ここで検索を終了し、このビットに対応するブロックB0028(物理ブロックアドレスの0028)を、データの書込み先のブロックとして特定する。その後も、このような検索を続けていき、一番下の行の、一番右のビットまで走査が進んだときは、一番上の行の、一番左のビットに戻る。
[書込処理の説明]
次に、ホストシステム4からのコマンドに応答して実行される書込処理について、図8に示すタイムチャートを参照して説明する。この書込処理では、フラッシュメモリ2へのデータ書き込みとともに、チェックサムの期待値の算出が行われ、書き込みがされた後にチェックサム値の算出と照合とがなされる。
ホストシステム4からの書込処理の実行を要求するコマンドは、ホストインターフェースブロック7のコマンドレジスタに書き込まれる。また、データの書き込み先の論理ブロックアドレスと、書き込むデータのサイズとは、それぞれホストインターフェースブロック7のLBAレジスタと、セクタ数レジスタとに書き込まれる。
コマンドレジスタに書き込まれた命令に応答して、マイクロプロセッサ6は、消去済ブロック検索用テーブルを検索して特定したブロックに、データを書込む。この書込処理では、マイクロプロセッサ6は、フラッシュメモリインターフェースブロック10を制御して、内部バス14を介して、書込み先のブロック内のページに、データを書込む。マイクロプロセッサ6は、データを書き込んだブロックの冗長領域26に、エラーコレクションコード、論理ブロックアドレス等を書き込む。
このとき、図8(a)に示すように、フラッシュメモリ2に書き込まれるデータは、内部バス14のビット幅(16ビット)毎に区切られて、データの先頭から順に、逐次、フラッシュメモリ2に送られる。
また、内部バス14を介してフラッシュメモリ2に書き込まれるデータは、同時に第1の加算器15にも供給される。図8(b)に示すように、第1の加算器15は、内部バス14を介して受け取ったデータと第1のレジスタ16が保持しているデータとを加算し、第1のレジスタ16の保持値を、その加算した値に更新させる。上記の加算を繰り返し、フラッシュメモリ2に書き込まれるデータの末尾(Dn)まで達したときの、第1のレジスタ16の保持値がチェックサムの期待値となる。
なお、第1のレジスタ16の保持値は、書込処理の開始時に0にリセットされるものとする。また、データの加算を繰り返すことにより、いわゆる桁溢れが生じた場合、溢れた桁は無視し、内部バス14のビット幅(すなわち加算値の下位16ビット)の値にのみ着目してチェックサムの期待値を求めるものとする。
フラッシュメモリ2へのデータの書き込みが終わると、マイクロプロセッサ6は、フラッシュメモリインターフェースブロック10を制御して、内部バス14を介して、書き込んだデータを読出して、データが正常に書き込まれたかを確認する(ベリフィケーション)。
この処理では、書き込んだデータをバッファ9に読み出し、読み出したデータに含まれる誤りをエラーコレクションコードに基づいて訂正する。誤りが訂正されたデータは、データを書き込むときと同様に、内部バス14のビット幅(16ビット)毎に区切られて、内部バス14側に送出される。この際、フラッシュメモリ2は、非活性状態にしておく。このデータは、内部バス14に接続されている第2の加算器17に供給される。データを書き込むときと同様に、図8(b)に示すように、第2の加算器17は、内部バス14を介して受け取ったデータと第2のレジスタ18が保持しているデータとを加算し、第2のレジスタ18の保持値を、その加算した値に更新させる。上記の加算を繰り返し、フラッシュメモリ2から読み出されるデータの末尾(Dn)まで達したときの、第2のレジスタ18の保持値がチェックサム値となる。
なお、第2のレジスタ18の保持値は、ベリフィケーションの開始時に0にリセットされるものとする。
また、データの加算を繰り返すことにより、いわゆる桁溢れが生じた場合、溢れた桁は無視し、内部バス14のビット幅(すなわち加算値の下位16ビット)の値にのみ着目してチェックサム値を求めるものとする。
上記のチェックサム値を求めるためのデータ読み出しが終了すると、マイクロプロセッサ6は、第1のレジスタ16が保持するチェックサムの期待値と、第2のレジスタ18が保持するチェックサム値とを照合する。すなわち、第1のレジスタ16が保持するチェックサムの期待値と、第2のレジスタ18が保持するチェックサム値とが一致していれば、マイクロプロセッサ6は、正常に書き込みがされたと判別して、書込処理を終了する。また、第1のレジスタ16が保持するチェックサムの期待値と、第2のレジスタ18が保持するチェックサム値とが不一致である場合には、マイクロプロセッサ6は、書込処理が正常になされなかったことを、ホストシステム4に通知する。
また、上記書込処理で、ホストシステム4側から供給された論理ブロックアドレスに対応する旧データが存在する場合(上書きをする場合)は、上記新データの書込処理の後に旧データの消去処理が行なわれる。なお、消去する旧データが格納されているブロックの物理ブロックアドレスは、図5に示したアドレス変換テーブルに基づいて得ることができる。この消去処理では、マイクロプロセッサ6は、フラッシュメモリインターフェースブロック10を制御して、内部バス14を介して、フラッシュメモリ2から旧データが格納されているブロックの物理ブロックアドレスのデータを消去する。
[読出処理の説明]
読出処理は、ホストシステム4からのコマンドに応答して実行される。
ホストシステム4からの読出処理の実行を要求するコマンドは、ホストインターフェースブロック7のコマンドレジスタに書き込まれる。また、読み出すデータの論理ブロックアドレスは、ホストインターフェースブロック7のLBAレジスタに書き込まれる。
コマンドレジスタに書き込まれた命令に応答して、マイクロプロセッサ6は、LBAレジスタに書き込まれた論理ブロックアドレスを、図5に示したアドレス変換テーブルに基づき物理ブロックアドレス(論理ブロックアドレスに対応するデータが格納されているブロックの物理ブロックアドレス)に変換する。
続いて、マイクロプロセッサ6は、フラッシュメモリインターフェースブロック10を制御して、内部バス14を介して、ホストシステム4側から与えられる論理ブロックアドレスに対応するデータが格納されているブロック内のページに格納されているデータを、バッファ9に読出す。
マイクロプロセッサ6は、バッファ9に読み出したデータに含まれる誤りを、当該データに付加されているエラーコレクションコードに基づいて訂正する。そして、マイクロプロセッサ6は、訂正後のデータを、ホストインターフェースブロック7を制御して、外部バス13を介してホストシステム4に供給し、読出処理を終了する。
以上で説明したように、本実施の形態のフラッシュメモリシステム1は、フラッシュメモリ2へのデータ書き込みと平行して、チェックサムの期待値を求める。このため、書き込むデータのチェックサム期待値を予め求めておく必要がない。
また、本実施の形態のフラッシュメモリシステム1は、チェックサムの期待値及びチェックサム値を求めるのに、ハードウェアによって実現される加算器(第1の加算器15及び第2の加算器17)を用いる。このため、チェックサムの期待値及びチェックサム値を求めるため別途の処理時間を要せず、ベリフィケーションをすることにより生じる書込処理の所用時間の増加を抑制できる。
特に、本実施の形態のフラッシュメモリシステム1は、チェックサムの期待値及びチェックサム値を求めるための加算器のビット幅を、内部バス14のビット幅と等しくしている。このため、期待値及びチェックサム値を計算する際に、改めてデータを区切って加算器に供給する必要が無く、ベリフィケーションをすることにより生じる書込処理の所用時間の増加を抑制できる。
上記実施の形態においては、チェックサム値を求めるときの区切りのビット数(すなわち加算器のビット幅)を内部バス14のビット幅と等しくする場合を例に説明したが、チェックサム値を求めるときの区切りのビット数を可変にしてもよい。
この場合、例えば、LBAレジスタにチェックサムを算出するときのビット幅を設定し、マイクロプロセッサ6が設定されたビット幅毎にデータを分割して第1の加算器15に供給してチェックサムの期待値を算出するようにすればよい。また、読み出したデータに対しても同様にマイクロプロセッサ6が設定されたビット幅毎にデータを分割して第2の加算器17に供給してチェックサム値を算出するようにすればよい。
また、上記実施の形態におけるフラッシュメモリシステム1は、チェックサムの期待値を求めるための第1の加算器15及び第1のレジスタ16と、チェックサム値を求めるための第2の加算器17及び第2のレジスタ18と、を有する場合を例に説明した。しかし、第1の加算器15と第2の加算器17とを一つの加算器で共用することが可能であり、同様に、第1のレジスタ16と第2のレジスタ18とを一つのレジスタで共用することが可能である。
この場合、データ書き込みと平行して求めたチェックサムの期待値をワークエリア8に記録し、書き込み後のベリフィケーションの際にチェックサムの期待値を求めたときと同一の加算器とレジスタを用いてチェックサム値を求める。そして、レジスタに保持されたチェックサム値と、ワークエリア8に記録されたチェックサムの期待値とを照合すればよい。
本発明に係るフラッシュメモリシステムを概略的に示すブロック図である。 フラッシュメモリのアドレス空間の構造を概略的に示す図である。 512のブロックでゾーンを構成した例を示す図である。 共有ブロックを含むゾーンの構成例を示す図である。 アドレス変換テーブルの例を示した図である。 消去済ブロック検索用テーブルの例を示す概念図である。 消去済ブロック検索用テーブルを用いた消去済ブロックの検索方法を説明するための図である。 書込処理の動作を説明するタイムチャートである。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
15 第1の加算器
16 第1のレジスタ
17 第2の加算器
18 第2のレジスタ
25 ユーザ領域
26 冗長領域

Claims (7)

  1. フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、フラッシュメモリにデータを書き込む書込手段と、
    前記フラッシュメモリに書き込まれるデータのエラーコレクションコードを生成するエラーコレクションコード生成手段と、
    前記エラーコレクションコードを前記フラッシュメモリに書き込むエラーコレクションコード書込手段と、
    前記書込手段が前記フラッシュメモリにデータを書き込むのと平行して、前記フラッシュメモリに書き込まれるデータのチェックサムの期待値を算出する期待値算出手段と、
    前記フラッシュメモリに書き込まれているデータを読み出す読出手段と、
    前記フラッシュメモリに書き込まれている前記エラーコレクションコードを読み出すエラーコレクションコード読出手段と、
    前記フラッシュメモリから読み出されたデータに含まれる誤りを、前記フラッシュメモリから読み出された前記エラーコレクションコードに基づいて訂正する訂正手段と、
    前記書込手段が前記フラッシュメモリにデータを書き込んだ後に、前記フラッシュメモリから当該書き込んだデータを読み出し、読み出したデータのチェックサム値を算出するチェックサム算出手段と、
    前記期待値算出手段が算出したチェックサムの期待値と前記チェックサム算出手段が算出したチェックサム値とを照合して、前記フラッシュメモリにデータが正しく書き込まれたか否かを判定する判定手段とを備え、
    前記チェックサム算出手段は、前記フラッシュメモリから読み出したデータに誤りが含まれていた場合、前記前記訂正手段により誤りが訂正されたデータのチェックサム値を算出することを特徴とするメモリコントローラ。
  2. 前記期待値算出手段は、ハードウェアによる加算器から構成される、
    ことを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記チェックサム算出手段は、ハードウェアによる加算器から構成される、
    ことを特徴とする請求項1又は2に記載のメモリコントローラ。
  4. 前記期待値算出手段及び前記チェックサム算出手段は、前記ホストシステムからの要求に応じて、算出する期待値及びチェックサム値のビット数を変更する、
    ことを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。
  5. 前記期待値算出手段及び前記チェックサム算出手段は、算出する期待値及びチェックサム値のビット数を、当該メモリコントローラと前記フラッシュメモリとを接続するバスのビット幅と等しいビット数とする、
    ことを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。
  6. 請求項1乃至5のいずれか1項に記載のメモリコントローラと、フラッシュメモリとを備えることを特徴とするフラッシュメモリシステム。
  7. フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、フラッシュメモリにデータを書き込む書込ステップと、
    前記フラッシュメモリに書き込まれるデータのエラーコレクションコードを生成するエラーコレクションコード生成ステップと、
    前記エラーコレクションコードを前記フラッシュメモリに書き込むエラーコレクションコード書込ステップと、
    書込ステップにより前記フラッシュメモリデータ書き込まれるのと平行して、前記フラッシュメモリに書き込まれるデータのチェックサムの期待値を算出する期待値算出ステップと、
    前記書込ステップにより書き込まれたデータを前記フラッシュメモリから読み出す読出ステップと、
    前記書込ステップにより書き込まれたデータの前記エラーコレクションコードを前記フラッシュメモリから読み出すエラーコレクションコード読出ステップと、
    前記読出ステップにより読み出されたデータに含まれる誤りを、前記エラーコレクションコード読出ステップにより読み出された前記エラーコレクションコードに基づいて訂正する訂正ステップと、
    前記読出ステップにより読み出されたデータのチェックサム値を算出するチェックサム算出ステップと、
    前記期待値算出ステップにより算出されたチェックサムの期待値と、前記チェックサム算出ステップにより算出されたチェックサム値とを照合し、データが正しく書き込まれたか否かを判定する判定ステップとを備え、
    前記読出ステップにより読み出されたデータに誤りが含まれていた場合、前記チェックサム算出ステップでは、前記訂正ステップにより誤りが訂正されたデータのチェックサム値を算出することを特徴とするフラッシュメモリの制御方法。
JP2005138944A 2005-05-11 2005-05-11 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 Expired - Fee Related JP4332132B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005138944A JP4332132B2 (ja) 2005-05-11 2005-05-11 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005138944A JP4332132B2 (ja) 2005-05-11 2005-05-11 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2006318132A JP2006318132A (ja) 2006-11-24
JP4332132B2 true JP4332132B2 (ja) 2009-09-16

Family

ID=37538776

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005138944A Expired - Fee Related JP4332132B2 (ja) 2005-05-11 2005-05-11 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP4332132B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291297B2 (en) 2008-12-18 2012-10-16 Intel Corporation Data error recovery in non-volatile memory
JP2015141666A (ja) * 2014-01-30 2015-08-03 日本精機株式会社 不揮発メモリ検査方法およびその装置
JP6363044B2 (ja) * 2015-03-31 2018-07-25 日立オートモティブシステムズ株式会社 制御装置

Also Published As

Publication number Publication date
JP2006318132A (ja) 2006-11-24

Similar Documents

Publication Publication Date Title
US7877562B2 (en) Memory controller, flash memory system, and control method of flash memory
US8621139B2 (en) Data writing method for writing data into block of multi-level cell NAND flash memory by skipping a portion of upper page addresses and storage system and controller using the same
JP4828816B2 (ja) メモリカード、半導体装置、及びメモリカードの制御方法
US8200891B2 (en) Memory controller, memory system with memory controller, and method of controlling flash memory
JP5364807B2 (ja) メモリコントローラ及び不揮発性記憶装置
US8694748B2 (en) Data merging method for non-volatile memory module, and memory controller and memory storage device using the same
US8200892B2 (en) Memory controller, memory system with memory controller, and method of controlling flash memory
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP4153535B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4661191B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4332132B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4433792B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4655034B2 (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
JP4332134B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4818453B1 (ja) 電子機器およびデータ読み出し方法
JP4692843B2 (ja) メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP3670151B2 (ja) フラッシュメモリのアクセス方法、フラッシュメモリへアクセスするドライバを備えるシステム、および、フラッシュメモリ
JP4177301B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006221334A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP4235595B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4068594B2 (ja) フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法
JP2007199846A (ja) メモリ制御装置およびメモリ制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081007

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090609

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090619

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130626

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees