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