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