(57)【要約】【課題】  フラッシュメモリの書込み高速化を実現する。【解決手段】  ブロック単位にデータの消去が可能なフラッシュメモリ２のアクセスを制御するコントローラにおいて、ホストシステム２０から論理ブロックを示す論理ブロックアドレスと共に書込み用データが与えられる。論理ブロックアドレスにオフセットを加算することにより、書込み用データの書き込み開始位置を、フラッシュメモリ２の記憶領域における物理ブロックの先頭に設定する。これにより、論理ブロックのデータを物理ブロックに書き込んでいる途中でアドレス変換をする必要がなくなり、高速の書込みが可能になる。【選択図】  図１
2006040170.tif 000002
【特許請求の範囲】
【請求項１】
データの書込みがページ単位で行われる記憶領域を有し、該記憶領域のデータの消去が、複数のページからなる物理ブロック単位で行われるフラッシュメモリとホストシステムとに接続され、該フラッシュメモリへの該ホストシステムのアクセスを制御するメモリコントローラであって、
前記ホストシステムから論理アドレスと共に与えられたユーザデータ群に対し、ユーザデータ群を書込む物理ブロックを示す物理ブロックアドレスを設定し、該ユーザデータ群を該物理ブロックアドレスに対応する位置に書込む書込手段と、
前記記憶領域において、前記ユーザデータ群を書込むためのユーザデータ領域の開始位置が前記物理ブロックの先頭ページに対応するように、前記ホストシステムから与えられる前記論理アドレスに対して一定のオフセットを加えるオフセット設定手段と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記ホストシステムから与えられる書込み命令に基づく前記ユーザデータ群の書込み開始ページが適切であるかを判断し、その結果を判断情報として示す情報表示手段を備えることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記情報表示手段は、前記ホストシステムから与えられる書込み命令に基づくユーザデータ群の書込み開始ページが、前記物理ブロックの先頭ページに対応するときに、該ユーザデータ群の書込み開始ページが適切であると判断することを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記物理ブロックが複数のサブブロックで構成され、
前記情報表示手段は、前記ホストシステムから与えられる書込み命令に基づく前記ユーザデータ群の書込み開始ページが、前記サブブロックの先頭ページに対応するときに、ユーザデータ群の書込み開始ページが適切であると判断することを特徴とする請求項２又は３に記載のメモリコントローラ。
【請求項５】
前記オフセットの値を、適宜読出し可能に記憶することを特徴とする請求項１乃至４のいずれか１項に記載のメモリコントローラ。
【請求項６】
データを記憶するフラッシュメモリと、
請求項１乃至５のいずれか１項に記載のメモリコントローラと、
を備えたことを特徴とするフラッシュメモリシステム。
【請求項７】
データの書込みがページ単位で行われる記憶領域を有し、該記憶領域のデータの消去が、複数のページからなる物理ブロック単位で行われるフラッシュメモリに対し、該フラッシュメモリへの該ホストシステムのアクセスを制御する制御方法であって、
前記ホストシステムから、論理アドレスと共に与えられたユーザデータ群に対し、該ユーザデータ群を書込む物理ブロックを示す物理ブロックアドレスを設定し、該ユーザデータ群を該物理ブロックアドレスに対応する位置に書込む処理と、
前記記憶領域において前記ユーザデータ群を書込むためのユーザデータ領域の開始位置が、前記物理ブロックの先頭ページに対応するように、前記ホストシステムから与えられる前記論理アドレスに対して一定のオフセットを加える処理と、
を行うことを特徴とするフラッシュメモリの制御方法。
【請求項８】
前記ホストシステムから与えられる書込み命令に基づく前記ユーザデータ群の書込み開始ページが適切であるかを判断し、その結果を判断情報として示す情報表示処理を行うことを特徴とする請求項７に記載のフラッシュメモリの制御方法。
【請求項９】
前記情報表示処理では、前記ホストシステムから与えられる書込み命令に基づく前記ユーザデータ群の書込み開始ページが、前記物理ブロックの先頭ページに対応するときに、該ユーザデータ群の書込み開始ページが適切であると判断することを特徴とする請求項７又は８に記載のフラッシュメモリの制御方法。
【請求項１０】
前記物理ブロックが複数のサブブロックで構成され、
前記情報表示処理では、前記ホストシステムから与えられる書込み命令に基づく前記ユーザデータ群の書込み開始ページが、前記サブブロックの先頭ページに対応するときに、該ユーザデータ群の書込み開始ページが適切であると判断することを特徴とする請求項８又は９に記載のフラッシュメモリの制御方法。
【請求項１１】
前記オフセットの値を、適宜読出し可能に記憶することを特徴とする請求項７乃至１０のいずれか１項に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
近年、メモリーカードやシリコンディスク等の形態でメモリシステムに使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリに格納されたデータは、電力が供給されていないときでも保持されていることが要求される。
【０００３】
ＮＡＮＤ型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリである。
ＮＡＮＤ型フラッシュメモリに含まれている複数のメモリセルのそれぞれは、消去状態のときに論理値“１”を示し、書込状態の時に“０”を示す。そして、複数のメモリセルは、他のメモリセルとは独立して消去状態から書込状態へと変化することができる。
【０００４】
これとは対照的に、書込状態から消去状態へと変化するときには、各メモリセルは他のメモリセルと独立して変化することができない。このときには、ブロックと称される予め定められた所定数のメモリセルが、全て同時に消去状態になる。この一括消去動作は、一般的に、「ブロック消去」と称されている。ＮＡＮＤ型フラッシュメモリに対する書込み処理若しくは読出処理は、ページと称される予め定められた数のメモリセル単位に処理が行われる。消去処理の単位であるブロックは複数のページで構成されている。
【０００５】
ＮＡＮＤ型フラッシュメモリでは、上記のようにブロック単位で消去処理が行われるため、通常、ホストシステム側から与えられるアドレスとフラッシュメモリ内でのアドレスとの対応関係を、ブロック単位で管理している。例えば、下記特許文献１では、ブロック単位で、ホストシステム側から与えられるアドレスに基づく論理ブロックアドレスと、フラッシュメモリ内でのブロックアドレスである物理ブロックアドレスとの変換を行っている。
【特許文献１】特開２００３−７６６０５号公報
【０００６】
このフラッシュメモリに対する書込み処理では、通常、フラッシュメモリ内のブロック（物理ブロック）を構成する各ページに、ホストシステム側から与えられるアドレス順にデータが書込まれる。つまり、ホストシステム側から与えられるアドレス順のデータが、物理ブロックの先頭ページから順次書込まれていく。従って、ホストシステムから与えられる書込み命令に基づく書込み処理で書込まれる１群のデータが、１つの物理ブロック内に全て書込まれる場合、論理ブロックアドレスから物理ブロックアドレスへのアドレス変換を、書込み処理を開始するときに行えば、書込み処理の途中でアドレス変換を行う必要がない。
【０００７】
フラッシュメモリに対する書込み処理を、高速、且つ効率的に行う場合には、１ブロック分のデータを、物理ブロックの先頭ページから書込むようにすればよい。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、ホストシステム側からフラッシュメモリシステムに対して、１ブロック分のデータを書込む書込み命令が与えられた場合、書込み開始ページが、物理ブロックの先頭ページであれば、高速書込みを行うことができるが、書込み開始ページが、物理ブロックの先頭ページでなかった場合は、書込み処理の途中でアドレス変換を行わなければならず、高速書込みに対応することができない。
【０００９】
本発明は、このような従来の問題点に鑑みてなされたもので、フラッシュメモリシステム側を、高速書込みに対応可能にするメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の第１の観点に係るメモリコントローラは、データの書込みがページ単位で行われる記憶領域を有し、該記憶領域のデータの消去が、複数のページからなる物理ブロック単位で行われるフラッシュメモリとホストシステムとに接続され、該フラッシュメモリへの該ホストシステムのアクセスを制御するメモリコントローラであって、前記ホストシステムから論理アドレスと共に与えられたユーザデータ群に対し、ユーザデータ群を書込む物理ブロックを示す物理ブロックアドレスを設定し、該ユーザデータ群を該物理ブロックアドレスに対応する位置に書込む書込手段と、前記記憶領域において、前記ユーザデータ群を書込むためのユーザデータ領域の開始位置が前記物理ブロックの先頭ページに対応するように、前記ホストシステムから与えられる前記論理アドレスに対して一定のオフセットを加えるオフセット設定手段と、を備えることを特徴とする。
【００１１】
なお、前記ホストシステムから与えられる書込み命令に基づく前記ユーザデータ群の書込み開始ページが適切であるかを判断し、その結果を判断情報として示す情報表示手段を備えてもよい。
【００１２】
又、前記情報表示手段は、前記ホストシステムから与えられる書込み命令に基づくユーザデータ群の書込み開始ページが、前記物理ブロックの先頭ページに対応するときに、該ユーザデータ群の書込み開始ページが適切であると判断してもよい。
【００１３】
又、前記物理ブロックが複数のサブブロックで構成され、前記情報表示手段は、前記ホストシステムから与えられる書込み命令に基づく前記ユーザデータ群の書込み開始ページが、前記サブブロックの先頭ページに対応するときに、ユーザデータ群の書込み開始ページが適切であると判断してもよい。
又、前記オフセットの値を、適宜読出し可能に記憶してもよい。
【００１４】
上記目的を達成するために、本発明の第２の観点に係るフラッシュメモリシステムは、データを記憶するフラッシュメモリと、本発明の第１の観点に係るメモリコントローラと、を備えたことを特徴とする。
【００１５】
上記目的を達成するために、本発明の第３の観点に係るフラッシュメモリの制御方法は、  データの書込みがページ単位で行われる記憶領域を有し、該記憶領域のデータの消去が、複数のページからなる物理ブロック単位で行われるフラッシュメモリに対し、該フラッシュメモリへの該ホストシステムのアクセスを制御する制御方法であって、前記ホストシステムから、論理アドレスと共に与えられたユーザデータ群に対し、該ユーザデータ群を書込む物理ブロックを示す物理ブロックアドレスを設定し、該ユーザデータ群を該物理ブロックアドレスに対応する位置に書込む処理と、前記記憶領域において前記ユーザデータ群を書込むためのユーザデータ領域の開始位置が、前記物理ブロックの先頭ページに対応するように、前記ホストシステムから与えられる前記論理アドレスに対して一定のオフセットを加える処理と、を行うことを特徴とする。
【００１６】
なお、前記ホストシステムから与えられる書込み命令に基づく前記ユーザデータ群の書込み開始ページが適切であるかを判断し、その結果を判断情報として示す情報表示処理を行ってもよい。
【００１７】
又、前記情報表示処理では、前記ホストシステムから与えられる書込み命令に基づく前記ユーザデータ群の書込み開始ページが、前記物理ブロックの先頭ページに対応するときに、該ユーザデータ群の書込み開始ページが適切であると判断してもよい。
【００１８】
又、前記物理ブロックが複数のサブブロックで構成され、前記情報表示処理では、前記ホストシステムから与えられる書込み命令に基づく前記ユーザデータ群の書込み開始ページが、前記サブブロックの先頭ページに対応するときに、該ユーザデータ群の書込み開始ページが適切であると判断してもよい。
又、前記オフセットの値を、適宜読出し可能に記憶してもよい。
【発明の効果】
【００１９】
本発明によれば、フラッシュメモリシステム側を、高速書込みに対応させることが可能になる。
【発明を実施するための最良の形態】
【００２０】
以下、図面に基づき、本発明の実施形態について説明する。
図１は、本発明の実施形態に係るフラッシュメモリシステム１を概略的に示すブロック図である。
【００２１】
図１に示したようにフラッシュメモリシステム１は、フラッシュメモリ２と、フラッシュメモリ２を制御するメモリコントローラ３とで構成されている。
フラッシュメモリシステム１は、ホストシステム２０に着脱可能に装着されて使用され、ホストシステム２０の一種の外部記憶装置として用いられる。
【００２２】
尚、ホストシステム２０としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【００２３】
フラッシュメモリ２は、ページ単位で読出し又は書込を行い、複数ページからなるブロック単位で消去を実行するデバイスであり、例えば、１ブロックは３２ページで構成され、１ページは５１２バイトのユーザ領域と１６バイトの冗長領域とで構成されている。
【００２４】
メモリコントローラ３は、ホストインターフェース制御ブロック５と、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、内部インターフェースブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、フラッシュメモリシーケンサブロック１２とから構成される。
【００２５】
これら機能ブロックによって構成されるメモリコントローラ３は、１つの半導体チップ上に集積されている。以下に各ブロックの機能を説明する。
マイクロプロセッサ６は、メモリコントローラ３を構成する各機能ブロック全体の動作を制御する機能ブロックである。
【００２６】
ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を制御する機能ブロックである。ここで、ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を設定する動作設定レジスタ（図示せず）を備えており、この動作設定レジスタに基づきホストインターフェースブロック７は動作する。
【００２７】
ホストインターフェースブロック７は、ホストシステム２０とデータ、アドレス情報、ステータス情報及び外部コマンド情報の授受を行う機能ブロックである。すなわち、フラッシュメモリシステム１がホストシステム２０に装着されると、フラッシュメモリシステム１とホストシステム２０は、外部バスを介して相互に接続され、かかる状態において、ホストシステム２０よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてメモリコントローラ３の内部に取り込まれ、フラッシュメモリシステム１からホストシステム２０に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム２０に供給される。
【００２８】
さらに、ホストインターフェースブロック７は、ホストシステム２０より供給されるホストアドレス及び外部コマンドを一時的に保持するタスクファイルレジスタ（図示せず）及びエラーが発生した場合にセットされるエラーレジスタ（図示せず）等を有している。
【００２９】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）セルによって構成される機能ブロックである。
バッファ９は、フラッシュメモリ２から読出したデータ及びフラッシュメモリ２に書込むデータを一時的に保持する機能ブロックである。すなわち、フラッシュメモリ２から読出したデータは、ホストシステム２０の受取準備ができるまでバッファ９に保持され、フラッシュメモリ２に書込むデータは、フラッシュメモリ２の書込み準備ができるまでバッファ９に保持される。
【００３０】
フラッシュメモリシーケンサブロック１２は、内部コマンドに基づきフラッシュメモリ２の動作を制御する機能ブロックである。フラッシュメモリシーケンサブロック１２は、複数のレジスタ（図示せず）を備え、この複数のレジスタに内部コマンドを実行する際に必要な情報が設定される。
この複数のレジスタに内部コマンドを実行する際に必要な情報が設定されると、フラッシュメモリシーケンサブロック１２は、その情報に基づいて処理を実行する。ここで、「内部コマンド」とは、メモリコントローラ３からフラッシュメモリ２に与えられるコマンドであり、ホストシステム２０からフラッシュメモリシステム１に与えられるコマンドである「外部コマンド」と区別される。
【００３１】
内部インターフェースブロック１０は、バスを介して、フラッシュメモリ２とデータ、アドレス情報等の授受を行う機能ブロックである。
【００３２】
ＥＣＣブロック１１は、フラッシュメモリ２に書込むデ―タに付加されるエラーコレクションコードを生成するとともに、読出しデータに付加されたエラーコレクションコードに基づいて、読出したデータに含まれる誤りを検出・訂正する機能ブロックである。
【００３３】
[フラッシュメモリの説明]
フラッシュメモリシステム１で、データが記憶されるＮＡＮＤ型フラッシュメモリは、ストレージデバイスへの用途として(ハードディスクの代わりになるものとして)開発された不揮発性メモリである。このＮＡＮＤ型フラッシュメモリは、ランダムアクセスを行うことができず、書込みと読出しはページ単位で、消去はブロック単位で行われる。又、データの上書きができないので、データを書込むときは、消去されている領域にデータの書込みが行われる。
【００３４】
ＮＡＮＤ型フラッシュメモリは、このような特徴を有するため、通常、データの書替を行う場合には、ブロック消去されている消去済ブロックに新たなデータ（書替後のデータ）を書込み、古いデータ（書替前のデータ）が書込まれていたブロックを消去するという処理を行っている。このようなデータの書替を行った場合、書替後のデータは書替前と異なるブロックに書込まれるため、ホストシステム側から与えられるアドレスに基づく論理ブロックアドレスと、フラッシュメモリ内でのブロックアドレスである物理ブロックアドレスとの対応関係は、データを書替える毎に動的に変化する。
この論理ブロックアドレスと物理ブロックアドレスとの対応関係は、通常、その対応関係を示したアドレス変換テーブルによって管理される。
【００３５】
上記ブロックとページの構成は、フラッシュメモリの仕様によって異なるが、一般的なフラッシュメモリでは、図２（ａ）に示したように、１ブロックが３２ページ（Ｐ００〜Ｐ３１）で構成され、各ページが５１２バイトのユーザ領域と１６バイトの冗長領域で構成されている。又、記憶容量の増加に伴い、図２（ｂ）に示したように、１ブロックが６４ページ（Ｐ００〜Ｐ６３）で構成され、各ページが２０４８バイトのユーザ領域と６４バイトの冗長領域で構成されているものも提供されている。
【００３６】
ここで、ユーザ領域は、主に、ホストシステム２０から供給されるデ―タが記憶される領域であり、冗長領域は、エラーコレクションコード、対応論理ブロックアドレス及びブロックステータス等の付加データが記憶される領域である。エラ―コレクションコードは、ユーザ領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、外部のＥＣＣブロックによって生成される。
【００３７】
対応論理ブロックアドレスは、そのブロックにデータが格納されている場合に、そのブロックがどの論理ブロックアドレスに対応するかを示している。尚、そのブロックにデータが格納されていない場合は、対応論理ブロックアドレスも格納されていないので、対応論理ブロックアドレスが格納されているか否かで、そのブロックが消去済ブロックであるか否かを判断することもできる。
【００３８】
つまり、対応論理ブロックアドレスが格納されていない場合は、消去済ブロックであると判断される。ブロックステータスは、そのブロックが不良ブロック（正常にデータの書込み等を行うことができないブロック）であるか否かを示すフラグであり、そのブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
【００３９】
次に、ＮＡＮＤ型フラッシュメモリの回路構成について説明する。一般的なＮＡＮＤ型フラッシュメモリは、書込みデータ若しくは読出し用データを保持するためのレジスタと、データを記憶するメモリセルアレイによって構成されている。メモリセルアレイは、複数のメモリセルが直列に接続されたメモリセル群を複数備えており、ワード線によってメモリセル群の特定のメモリセルが選択される。このワード線によって選択されたメモリセルとレジスタの間で、データの複写（レジスタからメモリセルへの複写、若しくはメモリセルからレジスタへの複写）が行われる。
【００４０】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタで構成されている。ここで、上側のゲートはコントロールゲートと、下側のゲートはフローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書込み若しくはデータの消去を行っている。
【００４１】
このフローティングゲートは周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。尚、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子を注入し、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子を排出する。ここで、フローティングゲートに電子が注入されている状態（書込状態）が、論理値の「０」のデータに対応し、フローティングゲートから電子が排出されている状態（消去状態）が、論理値の「１」のデータに対応する。
【００４２】
［フラッシュメモリに対するアクセスの説明］
フラッシュメモリ２に対するアクセスを制御する場合について説明する。
ホストシステム２０側から与えられるアドレス情報に基づく論理ブロックアドレスを、フラッシュメモリ２内のブロックアドレスである物理ブロックアドレスに変換し、得られた物理ブロックアドレスに基づいてフラッシュメモリ２にアクセスする。この際、論理ブロックアドレスから物理ブロックアドレスへの変換は、アドレス変換テーブルを用いる。
【００４３】
アドレス変換テーブルは、論理ブロックアドレスと物理ブロックアドレスの対応関係を示すテーブルであり、図１に示したワークエリア８上に作成され、保存される。
【００４４】
書込み処理では、ホストシステム２０から、書込先の先頭アドレスと書込むデータのページ数（セクタ数）を含む書込み命令がフラッシュメモリシステム１に与えられる。ホストシステム２０からは、この書込み命令と共に、フラッシュメモリ２に書込むデータ（ユーザデータ）群が与えられる。例えば、書込み命令で書込むデータのページ数を３２ページと指示した場合には、ホストシステム２０から３２ページ分のユーザデータ群が与えられる。この際、３２ページ分のユーザデータ群は、ホストシステム２０側のアドレス空間におけるアドレスの順番（以下、ホストシステム２０側のアドレス空間におけるアドレスの順番を論理アドレス順と言う。）で順次供給される。
【００４５】
ホストシステム２０から与えられる論理アドレスは、論理ブロックアドレス部分とその論理ブロック内のページを示すページ部分とを含んでいる。例えば、１ブロックが３２ページで構成されているフラッシュメモリ２に対する書込み処理では、２進数で示したアドレスの下位５ビットがページ部分に対応し、このページ部分を除いた上位ビットが論理ブロックアドレス部分に対応する。
【００４６】
マイクロプロセッサ６は、ホストシステム２０からホストインターフェースブロック７を介して与えられた論理アドレスから、論理ブロックアドレス部分を抽出する。書込み処理の場合、この論理ブロックアドレスに対して消去済の物理ブロックアドレスが適宜割当てられ、この物理ブロックアドレスに基づいて指示された物理ブロック内のページに、論理アドレスの順でデータが書込まれる。又、読出し処理では、アドレス変換テーブルを参照して論理ブロックアドレスが物理ブロックアドレスに変換され、この物理ブロックアドレスに基づいて指示された物理ブロック内の各ページのデータが読み出される。
【００４７】
ホストシステム２０から与えられる書込み命令若しくは読出し命令では、書込先若しくは読出し先の先頭アドレスと、書込むデータ若しくは読み出すデータのページ数（セクタ数）を含む命令がフラッシュメモリシステム１に与えられる。マイクロプロセッサ６は、書込若しくは読出しを行う物理ブロックの物理ブロックアドレスに、物理ブロック内のページを示す通番であるページ部分を付加して、書込み用アドレス若しくは読出し用アドレスを生成している。例えば、物理ブロックの先頭ページから順番に３２ページ分のデータを書込む書込み処理では、書込先の物理ブロックアドレスに対して、０〜３１のページ部分が順次付加される。
【００４８】
フラッシュメモリ２に対しては、最初の１ページ分のデータを送信するときに、物理ブロックアドレスに対してページ部分として０を付加した書込み用アドレスが与えられ、次の１ページ分のデータを送信するときに、物理ブロックアドレスに対してページ部分として１を付加した書込み用アドレスが与えられる。その後も、順次書込み用アドレスが与えられていき、最後の１ページ分のデータを送信するときに、物理ブロックアドレスに対してページ部分として３１を付加した書込み用アドレスが与えられる。３２ページ分の各データは、書込み用アドレスで指示されたページに順次書込まれていく。
【００４９】
図３は、フラッシュメモリ２の記憶領域におけるシステムデータ領域とユーザデータ領域の関係を示す説明図である。
ユーザデータ領域は、ホストシステム２０から与えられる書込データが記憶される領域であり、システムデータ領域は、ユーザデータ領域に書込まれるユーザデータを管理する情報が記憶される領域である。ユーザデータ領域に記憶される各ユーザデータ群「データ０」〜「データ３」は、ホストシステム２０から与えられる書込み命令に基づいて連続して書込まれるデータの単位であり、例えば、書込み命令で書込むデータのページ数を３２ページと指定する場合には、各ユーザデータ群「データ０」〜「データ３」は、それぞれ３２ページ分のデータに対応する。従って、各物理ブロックが３２ページで構成されていて、各ユーザデータ群「データ０」〜「データ３」のデータが各物理ブロックの先頭ページから書込まれていれば、各ユーザデータ群「データ０」〜「データ３」は、それぞれ１つの物理ブロックに書込まれる。従って、フラッシュメモリ２の記憶領域におけるユーザ領域の開始位置は、物理ブロックの先頭ページから始まることが好ましい。
【００５０】
図３に示した例では、システムデータは、フラッシュメモリ２の物理ブロック０及び物理ブロック１に書込まれている。「データ０」〜「データ３」で示される各ユーザデータ群は、フラッシュメモリ２のユーザデータ領域の物理ブロック２〜物理ブロック５にそれぞれ書込まれる。つまり、この状態では、フラッシュメモリ２のユーザデータ領域が、物理ブロックの先頭ページから開始され、各ユーザデータ群「データ０」〜「データ３」は、物理ブロックの先頭ページから書込まれている。この状態で、３２ページ分のデータであるユーザデータ群を、順次書込んでいけば、書込み処理の途中で物理ブロックのアドレス変換を行う必要がなく、高速書込みを行うことができる。尚、物理ブロック２〜物理ブロック５の物理ブロックアドレスは、連続した物理ブロックアドレスでなくてもよい。その場合、物理ブロック２〜物理ブロック５はフラッシュメモリ２のユーザデータ領域内に散在する。
【００５１】
次に、高速書込みに対応することができない最適でない状態について説明する。
この最適でない状態として、２つの例を説明する。この２つの例で、最適でない状態に陥った原因は異なるが、何れの場合も、ホストシステム２０から与えられる書込み命令に基づくユーザデータ群の書込み開始ページが、物理ブロックの先頭ページに対応しない状態になっている。
【００５２】
図４は、２つの物理ブロックに論理ブロックが跨った場合の説明図である。
図４に示した例では、ユーザデータ領域が物理ブロックの先頭ページから開始されているため、「データ０」、「データ１」については、３２ページ分のデータであるユーザデータ群を高速書込みすることができる。しかしながら、「データ２」のデータ容量が３２ページ分のデータより少なかったため、「データ３」が物理ブロック４、５に跨って書込まれる。従って、「データ３」の書込み処理では、書込先が物理ブロック４から物理ブロック５に切替るときに、アドレス変換や消去済の物理ブロックの割当てが行われる。この「データ３」の書込み処理では、高速書込みに対応することができない。
【００５３】
図５は、ユーザデータの書込み開始位置の説明図である。
図５に示した例では、ユーザデータ領域が物理ブロックの先頭ページから開始されていないため、「データ０」〜「データ３」の全ての書込み処理が、高速書込みに対応できない。
【００５４】
ユーザデータが書込まれるユーザデータ領域の開始位置が、物理ブロックの先頭ページに対応しない場合、ホストシステム２０から与えられている書込み命令に基づいて連続して書込まれるユーザデータ群のデータ容量と、フラッシュメモリ２の１ブロックに記憶できる容量とが一致しても、書込み処理の途中で書込み先の物理ブロックが切り替わるので、高速書込みを行うことができない。このような場合に、ホストシステム２０から与えられる書込み先のアドレスにオフセットを加えることにより、各ユーザデータ群が物理ブロックの先頭ページから書込まれるようにすることができる。
【００５５】
つまり、ホストシステム２０から、書込み先の先頭アドレス及び書込むデータのページ数（セクタ数）を含む書込み命令が与えられた場合に、その書込み先の先頭アドレスにオフセットを加え、オフセットを加えた先頭アドレスが、物理ブロックの先頭ページに割当てられるようにすればよい。
書込み命令のときに、ホストシステム２０から与えられるアドレス（論理アドレス）に対しては、全て同一のオフセットが与えられる。このオフセットは、読出し命令のときにホストシステム２０から与えられるアドレス（論理アドレス）に対しても加えられる。従って、オフセットは、システムデータ領域等に保存しておくことが望ましい。
【００５６】
ここで、ホストシステム２０から与えられる書込み先の先頭アドレスは、論理ブロックアドレス部分とその論理ブロック内のページを示すページ部分とを含む。論理ブロックアドレス部分が物理ブロックアドレスに変換されたアドレスが、フラッシュメモリ２に与えられる。よって、ページ部分が“０”になるようなオフセットをホストシステム２０から与えられる書込み先の先頭アドレスに加えれば、オフセットを加えた書込み先の先頭アドレスが、物理ブロックの先頭ページに割当てられることになる。
【００５７】
フラッシュメモリ２の１ブロツクが３２ページで構成されている場合、ホストシステム２０から与えられる書込み先の先頭アドレスを、２進数で示したときの下位５ビットがページ部分に対応する。このページ部分を除いた上位ビットが論理ブロックアドレス部分に対応する。そのため、ページ部分の下位５ビットが、０００００Ｂ（２進数）になるようなオフセットを加えることにより、書込み先の先頭アドレスが、物理ブロックアドレスの先頭ページに割当てられる。
【００５８】
例えば、ホストシステム２０から与えられる書込み先の先頭アドレスの下位５ビットが１１１００Ｂの場合、オフセットとして１００Ｂ（２進数）を加えれば、先頭アドレスの下位５ビットが０００００Ｂになる。これにより、オフセットを加えた場合の書込み先の先頭アドレスが、物理ブロックの先頭ページに割当てられる。
【００５９】
図６は、オフセット加算を行った場合の書込処理の説明図である。
例えば、図６の「データ０」の書込処理で、ホストシステム２０から書込先の先頭アドレス及び書込むデータのページ数（セクタ数）を含む書込み命令が、フラッシュメモリシステム１に与えられると、マイクロプロセッサ６は、与えられた書込先の先頭アドレスにオフセットを加え、オフセットを加えたアドレスから、論理ブロックアドレス部分を抽出し、この論理ブロックアドレスを、フラッシュメモリ２内の「ブロック３」に対応する物理ブロックアドレスに割当てる。ユーザデータ群の「データ０」のデータが物理アドレスの順番で、「ブロック３」の各ページに書込まれる。
【００６０】
「データ１」〜「データ３」の書込処理の場合も、「データ０」の書込処理の場合と同様に、オフセットを加えたアドレスから、論理ブロックアドレス部分が抽出され、それらの論理ブロックアドレスが、フラッシュメモリ２内の「ブロック４〜６」に対応する物理ブロックアドレスにそれぞれ割当てられる。その結果、「データ１」〜「データ３」についても，各物理ブロックの先頭ページから順番に書込まれる。
【００６１】
上記のようにして書込まれたユーザデータを読み出す場合も、ホストシステム２０から与えられる読出し先のアドレスに書込みのときと同じオフセットを加え、オフセットを加えたアドレスに対して、論理ブロックアドレス部分を物理ブロックアドレスに変換するアドレス変換が行なわれる。
このように、ユーザ領域の開始位置が物理ブロックの先頭ページに対応しない場合でも、ユーザデータ群に同一のオフセットを加えれば、高速書込みを行なうことができる。
【００６２】
但し、同一のオフセットを加えて書込先の先頭アドレスが０にならない書込み命令があった場合には、１ブロック分のデータを書込む処理の途中で物理ブロックが切替るため、高速書込みに対応することができなくなる。
【００６３】
そこで、本実施形態のフラッシュメモリシステム１では、高速書込みが可能な最適状態になっているか否かを、ホストシステム２０側から知ることができるようにするために、ホストシステム２０側からアクセス可能なところ（例えば、フラッシュメモリ２内、又はメモリコントローラ３内）に、最適状態であるか否か、つまり、高速書込みに対応できるか否かの情報を設定する。
【００６４】
例えば、ユーザデータ領域が、物理ブロックの先頭ページから開始されるように初期化したときに、最適状態であることを示す情報を設定し、最適でない状態を検出したときに、設定情報を、最適状態でないことを示す情報に変更するようにすればよい。また、前述のように、ホストシステム２０から与えられるアドレス（論理アドレス）に、オフセットを加える場合には、初期化したときにオフセット値をシステムデータ領域に設定するとともに、最適状態であることを示す情報を設定することが望ましい。
【００６５】
上記設定情報に基づいて、ホストシステム２０が、最適でない状態、つまり、高速書込みに対することができない状態であることを知った場合、ホストシステム２０は、最適状態に戻すための初期化やデータ消去等を行うことができる。
尚、初期化やデータ消去等を行った場合、ホストシステム２０は、設定情報により、高速書込みに対応できる状態に戻ったことを知ることができる。
【００６６】
以上のように、本実施形態のフラッシュメモリシステム１では、高速書込みに対応させることが可能になる。また、最適状態にない場合をホストシステム２０側に知らせることも可能になる。
なお、本発明は、上記実施形態に限定されず、種々の変形が可能である。
図７び図８は、本実施形態の変形例を示す説明図である。
上記実施形態では、ユーザデータ群が、１ブロック分のデータであったが、物理ブロックのデータ容量が大きい場合は、１つのユーザデータ群を１つの物理ブロックに対応させることができない。従って、複数のユーザデータ群を１つの物理ブロックに対応させなければならない。この場合、ユーザデータ群の書込み開始ページを、全て、物理ブロックの先頭ページに対応させることはできない。このような場合は、各物理ブロックを複数のサブブロックに分割して、各サブブロックをユーザデータ群に対応させるようにすればよい。この際、各物理ブロックは、２のべき乗の数のサブブロックで構成されることが好ましい。
【００６７】
図７に示した例では、各物理ブロックを２つのサブブロックに分割して、各サブブロック（サブブロック２−０、サブブロック２−１、サブブロック３−０、サブブロック３−１等）にユーザデータ群（データ０〜７）を対応させている。従って、物理ブロックが３２ページで構成されている場合、ユーザデータ群の書込み開始ページが、ページ０若しくはページ１６に対応するとき、つまり、サブブロックの先頭ページに対応するときは、最適状態が維持されていると判断される。
【００６８】
図８に示した例では、各物理ブロックを４つのサブブロックに分割して、各サブブロック（サブブロック２−０、サブブロック２−１、サブブロック２−２、サブブロック２−３、サブブロック３−０、サブブロック３−１、サブブロック３−２、サブブロック３−３等）にユーザデータ群（データ０〜１５）を対応させている。従って、物理ブロックが３２ページで構成されている場合、ユーザデータ群の書込み開始ページが、ページ０、ページ８、ページ１６、若しくはページ２４に対応するとき、つまり、サブブロックの先頭ページに対応するときは、最適状態が維持されていると判断される。
尚、上述のアドレス（論理アドレス）にオフセットを加える方法は、核物理ブロックをサブブロックに分割して使用する場合にも、適用できる。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施形態に係るフラッシュメモリシステムのブロック図である。
【図２】ブロックとページの構成を示す図である。
【図３】フラッシュメモリの記憶領域におけるシステムデータ領域とユーザデータ領域の関係を示す説明図である。
【図４】２つの物理ブロックに論理ブロックが跨った場合の説明図である。
【図５】ユーザデータの書込み開始位置の説明図である。
【図６】オフセット加算を行った場合の書込処理の説明図である。
【図７】本実施形態の変形例を示す説明図である。
【図８】本実施形態の変形例を示す説明図である。
【符号の説明】
【００７０】
１  フラッシュメモリシステム
２  フラッシュメモリ
３  メモリコントローラ
５  ホストインターフェース制御ブロック
６  マイクロプロセッサ
７  ホストインターフェースブロック
８  ワークエリア
９  バッファ
１０  内部インターフェースブロック
１１  ＥＣＣブロック
１２  フラッシュメモリシーケンサブロック
２０  ホストシステム
【図１】
2006040170.tif 000003
【図２】
2006040170.tif 000004
【図３】
2006040170.tif 000005
【図４】
2006040170.tif 000006
【図５】
2006040170.tif 000007
【図６】
2006040170.tif 000008
【図７】
2006040170.tif 000009
【図８】
2006040170.tif 000010