(57)【要約】【課題】  ベリフィケーションの時間を抑制可能なフラッシュメモリの制御方法、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。【解決手段】  ホストシステム４からの命令に応答してフラッシュメモリ２へデータを書き込むとともに、チェックサムの期待値を算出する。そして、フラッシュメモリ２へ書き込んだデータをフラッシュメモリ２から読み出すとともに、チェックサム値を算出する。その後、データを書き込む際に算出されたチェックサムの期待値と、データを読み出す際に算出されたチェックサム値とを照合し、データが正しく書き込まれたか否かを判定する。【選択図】図１
2006318132.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、フラッシュメモリにデータを書き込む書込手段と、
前記書込手段が前記フラッシュメモリにデータを書き込むのと平行して、チェックサムの期待値を算出する期待値算出手段と、
前記書込手段が前記フラッシュメモリにデータを書き込んだ後に、前記フラッシュメモリから当該書き込んだデータを読み出してチェックサム値を算出するチェックサム算出手段と、
前記期待値算出手段が算出したチェックサムの期待値と前記チェックサム算出手段が算出したチェックサム値とを照合して、前記フラッシュメモリにデータが正しく書き込まれたか否かを判定する判定手段と、
前記ホストシステムからの命令に応答して、前記書込手段によって前記フラッシュメモリに書き込まれていたデータを読み出して前記ホストシステムに供給する読出手段と、から構成される、
ことを特徴とするメモリコントローラ。
【請求項２】
前記期待値算出手段は、ハードウェアによる加算器から構成される、
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記チェックサム算出手段は、ハードウェアによる加算器から構成される、
ことを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記期待値算出手段及び前記チェックサム算出手段は、前記ホストシステムからの要求に応じて、算出する期待値及びチェックサム値のビット数を変更する、
ことを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項５】
前記期待値算出手段及び前記チェックサム算出手段は、算出する期待値及びチェックサム値のビット数を、当該メモリコントローラと前記フラッシュメモリとを接続するバスのビット幅と等しいビット数とする、
ことを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項６】
請求項１乃至５のいずれか１項に記載のメモリコントローラと、フラッシュメモリとを備えることを特徴とするフラッシュメモリシステム。
【請求項７】
フラッシュメモリへデータを書き込むとともに、チェックサムの期待値を算出する書込ステップと、
前記書込ステップで書き込んだデータを前記フラッシュメモリから読み出すとともに、チェックサム値を算出するチェックサム算出ステップと、
前記書込ステップで算出されたチェックサムの期待値と、前記チェックサム算出ステップで算出されたチェックサム値とを照合し、データが正しく書き込まれたか否かを判定する判定ステップと、から構成される、
ことを特徴とするフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムに関する。
【背景技術】
【０００２】
近年、フラッシュメモリの性能（記憶容量、信頼性、動作速度等）が向上し、不揮発性の記録媒体として、プログラム等を格納する用途に用いられつつある。
【０００３】
フラッシュメモリは、その特性上、データが正常に書き込まれない（データに誤りが混入する）おそれがある。このため、データを書き込んだ後に、書き込んだデータを読み出して、正常に書き込みが成されたことを確認する手順（ベリフィケーション）が必要である。最も確実なベリフィケーションの手法は、データの全てのビットを照合する手法であるが、この手法は時間がかかり、利便性に欠ける。
【０００４】
このため、データを所定のビット毎に区切り、それを順次加算して得られるチェックサム値を求め、このチェックサム値と予め算出された期待値とに一致を確認することでベリフィケーションの短時間化を図る手法が提案されている（例えば特許文献１）。
【特許文献１】特開２００１−１７５４７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の手法では、予めチェックサムの期待値を求めておく必要があるため、データ作成時にチェックサムの期待値を求める時間を含めて総合的に考えると、ベリフィケーションの短時間化は十分とは言えない。
【０００６】
本発明は上記の実情に鑑みてなされたもので、ベリフィケーションの時間を抑制可能なフラッシュメモリの制御方法、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の観点に係るメモリコントローラは、フラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して、フラッシュメモリにデータを書き込む書込手段と、前記書込手段が前記フラッシュメモリにデータを書き込むのと平行して、チェックサムの期待値を算出する期待値算出手段と、前記書込手段が前記フラッシュメモリにデータを書き込んだ後に、前記フラッシュメモリから当該書き込んだデータを読み出してチェックサム値を算出するチェックサム算出手段と、前記期待値算出手段が算出したチェックサムの期待値と前記チェックサム算出手段が算出したチェックサム値とを照合して、前記フラッシュメモリにデータが正しく書き込まれたか否かを判定する判定手段と、前記ホストシステムからの命令に応答して、前記書込手段によって前記フラッシュメモリに書き込まれていたデータを読み出して前記ホストシステムに供給する読出手段と、から構成される、ことを特徴とする。
なお、本発明において、ホストシステムとは、フラッシュメモリを記録媒体として利用する装置を指すものとする。
【０００８】
前記期待値算出手段は、ハードウェアによる加算器から構成されることが望ましい。
【０００９】
前記チェックサム算出手段は、ハードウェアによる加算器から構成されることが望ましい。
【００１０】
前記期待値算出手段及び前記チェックサム算出手段は、前記ホストシステムからの要求に応じて、算出する期待値及びチェックサム値のビット数を変更してもよい。
【００１１】
前記期待値算出手段及び前記チェックサム算出手段は、算出する期待値及びチェックサム値のビット数を、当該メモリコントローラと前記フラッシュメモリとを接続するバスのビット幅と等しいビット数としてもよい。
【００１２】
本発明の第２の観点に係るフラッシュメモリシステムは、上記の特徴のうち、少なくともいずれか一つを有するメモリコントローラと、フラッシュメモリとを備えることを特徴とする。
【００１３】
本発明の第３の観点に係るフラッシュメモリの制御方法は、フラッシュメモリへデータを書き込むとともに、チェックサムの期待値を算出する書込ステップと、前記書込ステップで書き込んだデータを前記フラッシュメモリから読み出すとともに、チェックサム値を算出するチェックサム算出ステップと、前記書込ステップで算出されたチェックサムの期待値と、前記チェックサム算出ステップで算出されたチェックサム値とを照合し、データが正しく書き込まれたか否かを判定する判定ステップと、から構成される、ことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、フラッシュメモリへのデータ書き込みと平行してチェックサムの期待値を求めるため、ベリフィケーションの時間を抑制することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
【００１６】
[フラッシュメモリシステム１の説明]
図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するコントローラ３で構成されている。
【００１７】
なお、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１８】
コントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、ＲＯＭ（Read Only Memory）１２と、第１の加算器１５と、第１のレジスタ１６と、第２の加算器１７と、第２のレジスタ１８と、から構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００１９】
マイクロプロセッサ６は、ＲＯＭ１２に記録されたプログラムに従って、コントローラ３の全体の動作を制御する。具体的には、マイクロプロセッサ６は、フラッシュメモリ２にデータを書き込むための書込処理、データを読み出すための読出処理、アドレス変換テーブルの作成、消去済ブロック検索用テーブルの作成等の処理を実行するように各部を制御する。
【００２０】
ホストインターフェースブロック７は、ホストシステム４との間の、データ、アドレス情報、ステータス情報、外部コマンド情報等の授受を行なう。すなわち、フラッシュメモリシステム１とホストシステム４は、外部バス１３を介して相互に接続される。かかる状態において、ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてコントローラ３の内部に取り込まれ、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００２１】
より詳細には、ホストインターフェースブロック７は、ホストシステム４より供給されるホストアドレス及び外部コマンドを一時的に格納するコマンドレジスタ、書き込み又は読み出しを行うデータのサイズを格納するセクタ数レジスタ、書き込み又は読み出しを行うデータの論理ブロックアドレスを格納するＬＢＡ（Logical Block Addressing）レジスタ、等を有する。そして、これらのレジスタを介してホストシステム４との情報の授受を行う。
【００２２】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００２３】
バッファ９は、フラッシュメモリ２から読出したデータ及びフラッシュメモリ２に書込むデータを一時的に保持する。
【００２４】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド情報等の授受を行う。
なお、本実施の形態のフラッシュメモリシステム１における、内部バス１４は、１６ビットのビット幅を有するものとする。
【００２５】
ＥＣＣブロック１１は、フラッシュメモリ２に書込むデータに付加されるエラーコレクションコードを生成するとともに、読出しデータに付加されたエラーコレクションコードに基づいて、読出したデータに含まれる誤りを検出・訂正する。
【００２６】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ＲＯＭ１２は、例えば、書込処理、読出処理、アドレス変換テーブルの作成、消去済ブロック検索用テーブルの作成等の処理手順を定義するプログラムを格納する。
【００２７】
第１の加算器１５は、フラッシュメモリ２にデータが書き込まれる際に、第１のレジスタ１６と協働して、書き込むデータを内部バス１４のビット数毎に区切って加算した累積値（チェックサムの期待値）を算出する。より詳細には、第１の加算器１５は、内部バス１４と等しいビット幅（すなわち１６ビット）を有する加算器であり、内部バス１４から供給される書込データと、第１のレジスタ１６から供給される値と、を加算して、その値を第１のレジスタ１６に保持させる。
【００２８】
第１のレジスタ１６は、第１の加算器１５が出力する値を一時的に保持する記憶素子である。第１のレジスタ１６は、保持値を第１の加算器１５に戻す。
【００２９】
第２の加算器１７は、第２のレジスタ１８と協働して、フラッシュメモリ２から読み出されるデータを内部バス１４のビット数毎に区切って加算した累積値（チェックサム値）を算出する。より詳細には、第２の加算器１７は、内部バス１４と等しいビット幅（すなわち１６ビット）を有する加算器であり、内部バス１４から供給される読出データと、第２のレジスタ１８から供給される値と、を加算して、その値を第２のレジスタ１８に保持させる。
【００３０】
第２のレジスタ１８は、第２の加算器１７が出力する値を一時的に保持する記憶素子である。第２のレジスタ１８は、保持値を第２の加算器１７に戻す。
【００３１】
[フラッシュメモリの説明]
次に、フラッシュメモリ２について説明する。図２は、フラッシュメモリ２のメモリ構造を概略的に示す図である。図２に示したように、フラッシュメモリ２はデータの読出し及び書込みにおける処理単位であるページと、データの消去単位であるブロックで構成されている。
【００３２】
上記ページは、例えば、５１２バイトのユーザ領域２５と、１６バイトの冗長領域２６によって構成される。ユーザ領域２５は、主に、ホストシステム４から供給されるデータが格納される領域であり、冗長領域２６は、エラーコレクションコード、ブロックステータス、対応論理ブロックアドレス等の付加情報が格納される領域である。
【００３３】
エラーコレクションコードは、ユーザ領域２５に格納されたデータに含まれる誤りを訂正するための付加情報であり、ＥＣＣブロック１１によって生成される。このエラーコレクションコードに基づき、ユーザ領域２５に格納されたデータに含まれる誤りが所定数以下であれば、その誤りが訂正される。
【００３４】
ブロックステータスは、そのブロックが不良ブロック（正常にデータの書込み等を行なうことができないブロック）であるか否かを示すフラグであり、そのブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
【００３５】
対応論理ブロックアドレスは、そのブロックにデータが格納されている場合に、そのブロックがどの論理ブロックアドレスに対応するかを示している。なお、そのブロックにデータが格納されていない場合は、対応論理ブロックアドレスも格納されていないので、対応論理ブロックアドレスが格納されているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが格納されていない場合は消去済ブロックであると判断できる。
【００３６】
[論理ブロックアドレスと物理ブロックアドレスの説明]
フラッシュメモリ２はデータの上書きができないため、データの書替えを行なう場合には、ブロック消去されている消去済ブロックに新たなデータ（書替後のデータ）を書込み、古いデータ（書替前のデータ）が書込まれていたブロックを消去するという２段階の処理を行なわなければならない。このとき、消去はブロック単位で処理されるため、古いデータ（書替前のデータ）が書込まれていたページが含まれるブロックの、全ページのデータが消去されてしまう。従って、データの書替えを行なう場合、書替えるページが含まれるブロックの、他のページのデータについても、消去済ブロックに移動させる処理が必要となる。
【００３７】
上記のようにデータを書替える場合、書替後のデータは書替前と異なるブロックに書込まれるため、ホストシステム４側から与えられる論理ブロックアドレスと、フラッシュメモリ２内でのブロックアドレスである物理ブロックアドレスとの対応関係は、データを書替える毎に動的に変化する。このため、論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルが必要となる。なお、このアドレス変換テーブルは、フラッシュメモリ２の冗長領域２６に書込まれている対応論理ブロックアドレスに基づいて作成され、データが書替えられる毎に、その書替えに関わった部分の対応関係が更新される。
【００３８】
［ゾーンの構成の説明］
次に、フラッシュメモリ２内の複数のブロックで構成したゾーンを、論理ブロックアドレスの空間に割当てるゾーン管理について図面を参照して説明する。図３は、５１２のブロックでゾーンを構成した例を示している。図３に示した例では、ゾーンは、５１２のブロックＢ００００〜Ｂ０５１１（物理ブロックアドレスの００００〜０５１１）で構成され、各ブロックは、読出し及び書込処理の単位である３２のページＰ００〜Ｐ３１で構成されている。ここで、ブロックは消去処理の単位であり、ページは読出し及び書込処理の単位である。
【００３９】
また、このゾーンを、論理ブロックアドレスの空間に割当てる場合、不良ブロックの発生を考慮して、ゾーンを構成するブロック数よりも少ないブロック数の論理ブロックアドレスの空間に割当てられる。この割当は、通常、フラッシュメモリ２の仕様に応じて行なわれるが、例えば、５１２のブロックで構成されたゾーンを、５００ブロック分の論理ブロックアドレスの空間に割当てたり、４９０ブロック分の論理ブロックアドレスの空間に割当てたりすることができる。この際、論理ブロックアドレスの空間に割当てるブロック数を増やせば、フラッシュメモリ２の使用効率は良くなるが、不良ブロックの発生に対する許容量（許容できる不良ブロックの発生数）は少なくなる。
なお、本実施の形態のフラッシュメモリシステム１においては、図４に示したように、５１２ブロックで構成されたゾーンを、４９６ブロック分の論理ブロックアドレスの空間に割当てるものとする。
【００４０】
［アドレス変換テーブルの説明］
次に、アドレス変換テーブルについて、説明する。アドレス変換テーブルは、論理ブロックアドレスと物理ブロックアドレスの対応関係を管理する。
図５は、図４に示したゾーン０に対するアドレス変換テーブルの一例を示したものであり、各論理ブロックアドレスに対応するデータが格納されているフラッシュメモリ２内での物理ブロックアドレスが、論理ブロックアドレス順に記述されている。また、フラッシュメモリ２にデータが格納されていない論理ブロックアドレスについては、アドレス変換テーブルのその論理ブロックアドレスに対応した部分に、物理ブロックアドレスではなく、データが格納されていないことを示すフラグ（以下、対応するデータが格納されていないことを示すフラグを未格納フラグと言う）が設定される。
【００４１】
例えば、図４に示したゾーン０のアドレス変換テーブルを作成する場合、マイクロプロセッサ６は、４９６ブロック分の物理ブロックアドレスを記述できる領域をワークエリア８（ＳＲＡＭ）上に確保し、その物理ブロックアドレスを記述する領域に初期設定として未格納フラグを設定する。その後、マイクロプロセッサ６は、フラッシュメモリインターフェースブロック１０を制御してフラッシュメモリ２のゾーン０を構成するブロックの冗長領域２６を順次読出していき、冗長領域２６に論理ブロックアドレス（対応論理ブロックアドレスとして記述されている論理ブロックアドレス）が記述されている場合には、アドレス変換テーブルのその論理ブロックアドレスに対応する部分に、その論理ブロックアドレスが記述されているブロックの物理ブロックアドレスを記述する。
【００４２】
なお、このアドレス変換テーブルの作成処理で物理ブロックアドレスが記述されなかった部分については、初期設定で記述された未格納フラグがそのまま残る。
【００４３】
［消去済ブロック検索用テーブルの説明］
次に、消去済ブロック検索用テーブルについて、図面を参照して説明する。消去済ブロック検索用テーブルは、データの書込み先とすることができる消去済ブロックを検索するためのテーブルである。
【００４４】
まず、消去済ブロック検索用テーブルを用いて、消去済ブロックを検索する方法について説明する。例えば、図４に示したゾーンの消去済ブロックを検索する場合、マイクロプロセッサ６は、５１２ビットの領域をＳＲＡＭ上に確保し、その領域の各ビットにゾーンを構成する各ブロックを割当てた消去済ブロック検索用テーブルを作成する。
【００４５】
図６は、図４に示したゾーン０とゾーン１の消去済ブロック検索用テーブルを概念的に示した概念図である。ここで、ゾーン０の消去済ブロック検索用テーブル上のビットは、ブロックＢ００００〜Ｂ０５１１（物理ブロックアドレスの００００〜０５１１）に対応し、ゾーン１の消去済ブロック検索用テーブル上のビットは、ブロックＢ０５１２〜Ｂ１０２３（物理ブロックアドレスの０５１２〜１０２３）に対応する。
【００４６】
また、消去済ブロック検索用テーブル上のビットと、ゾーンを構成するブロックとの対応関係については、図６に示した消去済ブロック検索用テーブル上のビットを、上の行から下の行へ、各行を左から右へ物理ブロックアドレス順に対応させている。従って、ゾーン０の消去済ブロック検索用テーブルでは、左上のビットが、Ｂ００００（物理ブロックアドレスの００００）のブロックに対応し、右下のビットが、Ｂ０５１１（物理ブロックアドレスの０５１１）のブロックに対応する。
【００４７】
また、消去済ブロック検索用テーブル上のビットは、「０」と「１」で消去済ブロックであるか否かを示しており、例えば、データが書込まれている場合（または不良ブロックであることを示すブロックステータスが記述されている場合）は、そのビットに「０」を、データが書込まれていない場合（消去済ブロックの場合）は、そのビットに「１」を設定する。
【００４８】
なお、この消去済ブロック検索用テーブルは、アドレス変換テーブルを作成する際に一緒に作成することができる。例えば、マイクロプロセッサ６は、消去済ブロック検索用テーブルを作成するワークエリア８（ＳＲＡＭ）上の領域に「０」を設定しておき、各ブロックの冗長領域２６に対応論理ブロックアドレスも不良ブロックであることを示すブロックステータスも記述されていないときに、そのブロックに対応するビットに「１」を設定するようにすれば、アドレス変換テーブルを作成する際に一緒に作成することができる。つまり、ゾーンを構成するブロックの冗長領域２６に記述されているデータを読出したときにこの処理を行なえば、消去済ブロックに対応するビットだけに「１」が設定され、消去済ブロックでないブロックに対応するビットは予め設定した「０」のままになる。
【００４９】
また、マイクロプロセッサ６は、消去済ブロックにデータを書込が書き込まれたときに、そのブロックに対応するビットを「１」から「０」に変更し、データが書込まれているブロックがブロック消去されたときに、そのブロックに対応するビットを「０」から「１」に変更することで、消去済ブロック検索用テーブルを随時更新する。
【００５０】
次に、この消去済ブロック検索用テーブルを用いて消去済ブロックを検索する場合について図７を参照して説明する。図７は、ゾーン０の消去済ブロック検索用テーブルを示している。例えば、一番上の行の各ビットは、ブロックＢ００００〜Ｂ０００７（物理ブロックアドレスの００００〜０００７）に対応し、一番下の行はブロックＢ０５０４〜Ｂ０５１１（物理ブロックアドレスの０５０４〜０５１１）に対応する。
【００５１】
マイクロプロセッサ６は、消去済ブロック検索用テーブルを、上の行から下の行へと走査する。また、マイクロプロセッサ６は、消去済ブロック検索用テーブル内の各行を左から右へと走査する。すなわち、マイクロプロセッサ６は、ブロックＢ００００（物理ブロックアドレスの００００）に対応するビット（一番上の行の、一番左のビット）から、ブロックＢ０５１１（物理ブロックアドレスの０５１１）に対応するビット（一番下の行の、一番右のビット）までを走査していき、消去済ブロックに対応する「１」のビットを検索する。
【００５２】
図７に示した消去済ブロック検索用テーブルを検索する場合、上から２番目の行の、左から３番目のビットが「１」なので、マイクロプロセッサ６は、ここで検索を終了し、このビットに対応するブロックＢ００１０（物理ブロックアドレスの００１０）を、データの書込み先のブロックとして特定する。
【００５３】
また、次回の検索は、上から２番目の行の、左から４番目のビットから走査を開始し、上から４番目の行の、左から５番目のビットが「１」なので、マイクロプロセッサ６は、ここで検索を終了し、このビットに対応するブロックＢ００２８（物理ブロックアドレスの００２８）を、データの書込み先のブロックとして特定する。その後も、このような検索を続けていき、一番下の行の、一番右のビットまで走査が進んだときは、一番上の行の、一番左のビットに戻る。
【００５４】
［書込処理の説明］
次に、ホストシステム４からのコマンドに応答して実行される書込処理について、図８に示すタイムチャートを参照して説明する。この書込処理では、フラッシュメモリ２へのデータ書き込みとともに、チェックサムの期待値の算出が行われ、書き込みがされた後にチェックサム値の算出と照合とがなされる。
ホストシステム４からの書込処理の実行を要求するコマンドは、ホストインターフェースブロック７のコマンドレジスタに書き込まれる。また、データの書き込み先の論理ブロックアドレスと、書き込むデータのサイズとは、それぞれホストインターフェースブロック７のＬＢＡレジスタと、セクタ数レジスタとに書き込まれる。
【００５５】
コマンドレジスタに書き込まれた命令に応答して、マイクロプロセッサ６は、消去済ブロック検索用テーブルを検索して特定したブロックに、データを書込む。この書込処理では、マイクロプロセッサ６は、フラッシュメモリインターフェースブロック１０を制御して、内部バス１４を介して、書込み先のブロック内のページに、データを書込む。マイクロプロセッサ６は、データを書き込んだブロックの冗長領域２６に、エラーコレクションコード、論理ブロックアドレス等を書き込む。
【００５６】
このとき、図８（ａ）に示すように、フラッシュメモリ２に書き込まれるデータは、内部バス１４のビット幅（１６ビット）毎に区切られて、データの先頭から順に、逐次、フラッシュメモリ２に送られる。
【００５７】
また、内部バス１４を介してフラッシュメモリ２に書き込まれるデータは、同時に第１の加算器１５にも供給される。図８（ｂ）に示すように、第１の加算器１５は、内部バス１４を介して受け取ったデータと第１のレジスタ１６が保持しているデータとを加算し、第１のレジスタ１６の保持値を、その加算した値に更新させる。上記の加算を繰り返し、フラッシュメモリ２に書き込まれるデータの末尾（Ｄｎ）まで達したときの、第１のレジスタ１６の保持値がチェックサムの期待値となる。
なお、第１のレジスタ１６の保持値は、書込処理の開始時に０にリセットされるものとする。また、データの加算を繰り返すことにより、いわゆる桁溢れが生じた場合、溢れた桁は無視し、内部バス１４のビット幅（すなわち加算値の下位１６ビット）の値にのみ着目してチェックサムの期待値を求めるものとする。
【００５８】
フラッシュメモリ２へのデータの書き込みが終わると、マイクロプロセッサ６は、フラッシュメモリインターフェースブロック１０を制御して、内部バス１４を介して、書き込んだデータを読出して、データが正常に書き込まれたかを確認する（ベリフィケーション）。
【００５９】
この処理では、書き込んだデータをバッファ９に読み出し、読み出したデータに含まれる誤りをエラーコレクションコードに基づいて訂正する。誤りが訂正されたデータは、データを書き込むときと同様に、内部バス１４のビット幅（１６ビット）毎に区切られて、内部バス１４側に送出される。この際、フラッシュメモリ２は、非活性状態にしておく。このデータは、内部バス１４に接続されている第２の加算器１７に供給される。データを書き込むときと同様に、図８（ｂ）に示すように、第２の加算器１７は、内部バス１４を介して受け取ったデータと第２のレジスタ１８が保持しているデータとを加算し、第２のレジスタ１８の保持値を、その加算した値に更新させる。上記の加算を繰り返し、フラッシュメモリ２から読み出されるデータの末尾（Ｄｎ）まで達したときの、第２のレジスタ１８の保持値がチェックサム値となる。
【００６０】
なお、第２のレジスタ１８の保持値は、ベリフィケーションの開始時に０にリセットされるものとする。
また、データの加算を繰り返すことにより、いわゆる桁溢れが生じた場合、溢れた桁は無視し、内部バス１４のビット幅（すなわち加算値の下位１６ビット）の値にのみ着目してチェックサム値を求めるものとする。
【００６１】
上記のチェックサム値を求めるためのデータ読み出しが終了すると、マイクロプロセッサ６は、第１のレジスタ１６が保持するチェックサムの期待値と、第２のレジスタ１８が保持するチェックサム値とを照合する。すなわち、第１のレジスタ１６が保持するチェックサムの期待値と、第２のレジスタ１８が保持するチェックサム値とが一致していれば、マイクロプロセッサ６は、正常に書き込みがされたと判別して、書込処理を終了する。また、第１のレジスタ１６が保持するチェックサムの期待値と、第２のレジスタ１８が保持するチェックサム値とが不一致である場合には、マイクロプロセッサ６は、書込処理が正常になされなかったことを、ホストシステム４に通知する。
【００６２】
また、上記書込処理で、ホストシステム４側から供給された論理ブロックアドレスに対応する旧データが存在する場合（上書きをする場合）は、上記新データの書込処理の後に旧データの消去処理が行なわれる。なお、消去する旧データが格納されているブロックの物理ブロックアドレスは、図５に示したアドレス変換テーブルに基づいて得ることができる。この消去処理では、マイクロプロセッサ６は、フラッシュメモリインターフェースブロック１０を制御して、内部バス１４を介して、フラッシュメモリ２から旧データが格納されているブロックの物理ブロックアドレスのデータを消去する。
【００６３】
［読出処理の説明］
読出処理は、ホストシステム４からのコマンドに応答して実行される。
ホストシステム４からの読出処理の実行を要求するコマンドは、ホストインターフェースブロック７のコマンドレジスタに書き込まれる。また、読み出すデータの論理ブロックアドレスは、ホストインターフェースブロック７のＬＢＡレジスタに書き込まれる。
【００６４】
コマンドレジスタに書き込まれた命令に応答して、マイクロプロセッサ６は、ＬＢＡレジスタに書き込まれた論理ブロックアドレスを、図５に示したアドレス変換テーブルに基づき物理ブロックアドレス（論理ブロックアドレスに対応するデータが格納されているブロックの物理ブロックアドレス）に変換する。
【００６５】
続いて、マイクロプロセッサ６は、フラッシュメモリインターフェースブロック１０を制御して、内部バス１４を介して、ホストシステム４側から与えられる論理ブロックアドレスに対応するデータが格納されているブロック内のページに格納されているデータを、バッファ９に読出す。
【００６６】
マイクロプロセッサ６は、バッファ９に読み出したデータに含まれる誤りを、当該データに付加されているエラーコレクションコードに基づいて訂正する。そして、マイクロプロセッサ６は、訂正後のデータを、ホストインターフェースブロック７を制御して、外部バス１３を介してホストシステム４に供給し、読出処理を終了する。
【００６７】
以上で説明したように、本実施の形態のフラッシュメモリシステム１は、フラッシュメモリ２へのデータ書き込みと平行して、チェックサムの期待値を求める。このため、書き込むデータのチェックサム期待値を予め求めておく必要がない。
【００６８】
また、本実施の形態のフラッシュメモリシステム１は、チェックサムの期待値及びチェックサム値を求めるのに、ハードウェアによって実現される加算器（第１の加算器１５及び第２の加算器１７）を用いる。このため、チェックサムの期待値及びチェックサム値を求めるため別途の処理時間を要せず、ベリフィケーションをすることにより生じる書込処理の所用時間の増加を抑制できる。
【００６９】
特に、本実施の形態のフラッシュメモリシステム１は、チェックサムの期待値及びチェックサム値を求めるための加算器のビット幅を、内部バス１４のビット幅と等しくしている。このため、期待値及びチェックサム値を計算する際に、改めてデータを区切って加算器に供給する必要が無く、ベリフィケーションをすることにより生じる書込処理の所用時間の増加を抑制できる。
【００７０】
上記実施の形態においては、チェックサム値を求めるときの区切りのビット数（すなわち加算器のビット幅）を内部バス１４のビット幅と等しくする場合を例に説明したが、チェックサム値を求めるときの区切りのビット数を可変にしてもよい。
【００７１】
この場合、例えば、ＬＢＡレジスタにチェックサムを算出するときのビット幅を設定し、マイクロプロセッサ６が設定されたビット幅毎にデータを分割して第１の加算器１５に供給してチェックサムの期待値を算出するようにすればよい。また、読み出したデータに対しても同様にマイクロプロセッサ６が設定されたビット幅毎にデータを分割して第２の加算器１７に供給してチェックサム値を算出するようにすればよい。
【００７２】
また、上記実施の形態におけるフラッシュメモリシステム１は、チェックサムの期待値を求めるための第１の加算器１５及び第１のレジスタ１６と、チェックサム値を求めるための第２の加算器１７及び第２のレジスタ１８と、を有する場合を例に説明した。しかし、第１の加算器１５と第２の加算器１７とを一つの加算器で共用することが可能であり、同様に、第１のレジスタ１６と第２のレジスタ１８とを一つのレジスタで共用することが可能である。
【００７３】
この場合、データ書き込みと平行して求めたチェックサムの期待値をワークエリア８に記録し、書き込み後のベリフィケーションの際にチェックサムの期待値を求めたときと同一の加算器とレジスタを用いてチェックサム値を求める。そして、レジスタに保持されたチェックサム値と、ワークエリア８に記録されたチェックサムの期待値とを照合すればよい。
【図面の簡単な説明】
【００７４】
【図１】本発明に係るフラッシュメモリシステムを概略的に示すブロック図である。
【図２】フラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図３】５１２のブロックでゾーンを構成した例を示す図である。
【図４】共有ブロックを含むゾーンの構成例を示す図である。
【図５】アドレス変換テーブルの例を示した図である。
【図６】消去済ブロック検索用テーブルの例を示す概念図である。
【図７】消去済ブロック検索用テーブルを用いた消去済ブロックの検索方法を説明するための図である。
【図８】書込処理の動作を説明するタイムチャートである。
【符号の説明】
【００７５】
１    フラッシュメモリシステム
２    フラッシュメモリ
３    コントローラ
４    ホストシステム
６    マイクロプロセッサ
７    ホストインターフェースブロック
８    ワークエリア
９    バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  ＲＯＭ
１３  外部バス
１４  内部バス
１５  第１の加算器
１６  第１のレジスタ
１７  第２の加算器
１８  第２のレジスタ
２５  ユーザ領域
２６  冗長領域
【図１】
2006318132.tif 000003
【図２】
2006318132.tif 000004
【図３】
2006318132.tif 000005
【図４】
2006318132.tif 000006
【図５】
2006318132.tif 000007
【図６】
2006318132.tif 000008
【図７】
2006318132.tif 000009
【図８】
2006318132.tif 000010