(57)【特許請求の範囲】
【請求項１】
論理アドレスに基づきデータの書込みが可能な不揮発性記憶装置であって、
前記論理アドレスに対応する物理アドレスに基づきデータの書込みが行われ、複数の物理ブロックから構成され、前記各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、
前記物理ブロックに格納されるデータの論理グループアドレスと物理ブロックアドレスの対応情報を格納する論物変換テーブルと、
前記ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
前記一時ブロックに格納されるデータに関する論理ページアドレスと物理ページアドレスとの対応情報を格納する一時テーブルとを備える、
不揮発性記憶装置。
【請求項２】
前記一時ブロックは、１ページに対して１回の書き込みのみが可能である、請求項１記載の不揮発性記憶装置。
【請求項３】
前記不揮発性メモリは多値メモリセルである、請求項１あるいは請求項２に記載の不揮発性記憶装置。
【請求項４】
複数の物理ブロックを１つの物理スーパーブロックとして管理し、前記物理スーパーブロックに対応する論理ブロック群を論理スーパーブロックとして管理し、前記論物変換テーブルは前記物理スーパーブロックと前記論理スーパーブロックの対応情報を格納する、請求項１から請求項３のいずれか一つに記載の不揮発性記憶装置。
【請求項５】
論理アドレスに基づきデータの書込みが可能な不揮発性メモリを含む不揮発性記憶装置の動作制御を行うメモリコントローラであって、
ａ）前記不揮発性メモリは、前記論理アドレスに対応する物理アドレスに基づいてデータの書込みが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含み、
ｂ）前記メモリコントローラは、
前記物理ブロックに格納されるデータの論理グループアドレスと物理ブロックアドレスの対応情報を格納する論物変換テーブルと、
前記ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
前記一時ブロックに格納されるデータに関する論理ページアドレスと、物理ページアドレスとの対応情報を格納する一時テーブルとを有し、
書き込み要求されたデータのサイズが前記ページのサイズより小さい場合に、その要求されたデータを前記一時ブロックに書き込む、
不揮発性記憶装置のメモリコントローラ。
【請求項６】
前記一時ブロックは、１ページに対して１回の書き込みのみが可能である、請求項５記載の不揮発性記憶装置のメモリコントローラ。
【請求項７】
前記不揮発性メモリは多値メモリセルである、請求項５あるいは請求項６に記載のメモリコントローラ。
【請求項８】
複数の物理ブロックを１つの物理スーパーブロックとして管理し、前記物理スーパーブロックに対応する論理ブロック群を論理スーパーブロックとして管理し、前記論物変換テーブルは前記物理スーパーブロックと前記論理スーパーブロックの対応情報を格納する、請求項５から請求項７のいずれか一つに記載のメモリコントローラ。
【請求項９】
論理アドレスに基づきデータの読み出しが可能な不揮発性記憶装置に対するデータ読み出し方法であって、
ａ）前記不揮発性記憶装置は、
前記論理アドレスに対応する物理アドレスによりデータの読み出しが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、
前記物理ブロックに格納されるデータの論理グループアドレスと物理ブロックアドレスの対応情報を格納する論物変換テーブルと、
前記ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
前記一時ブロックに格納されるデータに関する論理ページアドレスと物理ページアドレスとの対応情報を格納する一時テーブルとを含み、
ｂ）前記読み出し方法は、
データの読み出し要求を受けたときに、前記一時テーブルを参照し、
前記一時テーブル内に読み出し対象となる論理ページアドレスの登録があるときは、前記一時ブロックからデータを読み出し、
前記一時テーブル内に読み出し対象となる論理ページアドレスの登録がないときは、前記論物変換テーブルを参照してデータを読み出す、
不揮発性記憶装置のデータ読み出し方法。
【請求項１０】
前記一時ブロックにおいて最後に書き込まれたページの情報に基づいて、一時ブロック中の有効なページを判断する、請求項９記載のデータ読み出し方法。
【請求項１１】
論理アドレスに基づきデータの書込み、読み出しが可能な不揮発性記憶装置における管理テーブルの作成方法であって、
ａ）前記不揮発性記憶装置は、
前記論理アドレスに対応する物理アドレスに基づいてデータの書込み、読み出しが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、
前記物理ブロックに格納されるデータの論理グループアドレスと物理ブロックアドレスの対応情報を格納する論物変換テーブルと、
前記ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
前記一時ブロックに格納されるデータに関する論理ページアドレスと物理ページアドレスとの対応情報を格納する管理テーブルである一時テーブルとを含み、
ｂ）前記作成方法は、
前記一時ブロックにおいて最後に書き込まれたページを決定し、
その決定したページの情報に基づいて前記一時テーブルを作成する、
管理テーブルの作成方法。
【請求項１２】
前記一時ブロックにおいて各ページはデータを格納するデータ領域と、該データの管理情報を格納する管理領域とを含み、前記管理領域は前記データ領域に格納されたデータに対する論理ページの情報を格納する、請求項１１記載の管理テーブルの作成方法。
【請求項１３】
前記一時ブロックにおいて各ページはデータを格納するデータ領域と、該データの管理情報を格納する管理領域とを含み、前記管理領域は有効なページの物理ページアドレスを格納する、請求項１１または請求項１２に記載の管理テーブルの作成方法。
【請求項１４】
前記一時テーブルは前記半導体記憶装置に対する電源投入時に作成される、請求項１１から請求項１３のいずれか一つに記載の管理テーブルの作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の不揮発性メモリを用いた記憶装置並びにその読み出し方法及び管理テーブルの作成方法に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを搭載したメモリカードはデジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。そしてメモリカード容量の増加に伴い、データファイルや静止画等の小容量の記録からより大容量が必要となる動画記録へとその用途は広がっている。このため、従来、不揮発性メモリを搭載した記録媒体に関し種々の考案がなされている（例えば、特許文献１〜４）。
【０００３】
大容量のメモリカードは大量のデータを保存でき、種々のデータを格納できることから、その管理情報も多様化している。例えば、管理情報として、ファイルアクセスを高速化するためのメタデータ管理ファイルや、データ種別毎に管理した仮想ディレクトリ構造のファイルや、従来のＦＡＴシステムとは異なるデータベース型のファイルシステム等がある。これらはいずれも管理の容易化を目的としている。このような多様化する管理情報は、いずれもサイズが小さいことから、結果として、セクタ単位のデータ書き込みの頻度が増加する要因となる。
【０００４】
【特許文献１】特開２００１−１５４９０９号公報
【特許文献２】特開平１１−５３２４８号公報
【特許文献３】特開２００２−３２４００８号公報
【特許文献４】特開平５−２１６７８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
フラッシュメモリの大容量化にともない、消去単位である消去ブロックのサイズが大きくなる。その結果、上記の多様化した管理情報のようなランダム性のある小サイズのデータの書き込みが増加すると、フラッシュメモリ内の物理ブロック単位でのデータのコピーが頻発し、書き込み性能が低下する。
【０００６】
また、フラッシュメモリの大容量化の手法としてメモリセルの多値化がある。多値メモリセルは２値メモリセルに比して制御が複雑であり信頼性の確保が難しいことから、２値のメモリセルと同様の信頼性を確保するためには、メモリセルへのストレスを低減する必要がある。そのため、多値メモリセルでは、複数セクタからなるページを書き込み単位とし、そのページに対して複数回の書き込みは認めていないようにする。つまり、多値メモリセルの場合、ページサイズ未満のデータを書き込む場合であっても、ページ単位で書き込む必要があり、これは書き込み性能の低下を招く要因となる。
【０００７】
本発明は上記課題を解決すべくなされたものであり、その目的とするところは、所定の書き込み単位（例えばページ単位）で書き込みを行わなければならないフラッシュメモリ中の複数の領域に、書き込み単位未満のサイズのデータの書き込みを行う際に、高速な書き込みを可能とする半導体記憶装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の第１の態様において、論理アドレスに基づきデータの書込みが可能な不揮発性記憶装置を提供する。
不揮発性記憶装置は、
論理アドレスに対応する物理アドレスに基づきデータの書込みが行われ、複数の物理ブロックから構成され、各物理ブロックが所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、物理ブロックに格納されるデータの論理グループアドレスと物理ブロックアドレスの対応情報を格納する論物変換テーブルと、
ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
一時ブロックに格納されるデータに関する論理ページアドレスと物理ページアドレスとの対応情報を格納する一時テーブルとを備える。
【０００９】
本発明の第２の態様において、論理アドレスに基づきデータの書込みが可能な不揮発性メモリを含む不揮発性記憶装置の動作制御を行うメモリコントローラを提供する。
不揮発性メモリは、論理アドレスに対応する物理アドレスに基づきデータの書込みが行われ、複数の物理ブロックから構成される。各物理ブロックは所定の書き込み単位であるページを複数ページ含む。
メモリコントローラは、物理ブロックに格納されるデータの論理グループアドレスと物理ブロックアドレスの対応情報を格納する論物変換テーブルと、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、一時ブロックに格納されるデータに関する論理ページアドレスと、物理ページアドレスとの対応情報を格納する一時テーブルとを有する。メモリコントローラは、書き込み要求されたデータのサイズがページのサイズより小さい場合に、その要求されたデータを一時ブロックに書き込む。
【００１０】
本発明の第３の態様において、論理アドレスに基づきデータの書込みが可能な不揮発性記憶装置に対するデータ読み出し方法を提供する。
不揮発性記憶装置は、論理アドレスに対応する物理アドレスによりデータの読み出しが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、物理ブロックに格納されるデータの論理グループアドレスと物理ブロックアドレスの対応情報を格納する論物変換テーブルと、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、一時ブロックに格納されるデータに関する論理ページアドレスと物理ページアドレスとの対応情報を格納する一時テーブルとを含む。
本読み出し方法は、データの読み出し要求を受けたときに、一時テーブルを参照し、一時テーブル内に読み出し対象となる論理ページアドレスの登録があるときは、一時ブロックからデータを読み出し、一時テーブル内に読み出し対象となる論理ページアドレスの登録がないときは、論物変換テーブルを参照してデータを読み出す。
【００１１】
本発明の第４の態様において、論理アドレスに基づきデータの書込み、読み出しが可能な不揮発性記憶装置における管理テーブルの作成方法を提供する。
不揮発性記憶装置は、論理アドレスに対応する物理アドレスに基づいてデータの書込み、読み出しが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、物理ブロックに格納されるデータの論理グループアドレスと物理ブロックアドレスの対応情報を格納する論物変換テーブルと、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、一時ブロックに格納されるデータに関する論理ページアドレスと物理ページアドレスとの対応情報を格納する管理テーブルである一時テーブルとを含む。本作成方法は、一時ブロックにおいて最後に書き込まれたページを決定し、その決定したページの情報に基づいて前記一時テーブルを作成する。
【発明の効果】
【００１２】
本発明によれば、フラッシュメモリ等の所定の消去単位を有し、かつ所定の書き込み単位（例えばページ単位）で書き込みを行わなければならないフラッシュメモリを有する不揮発性メモリにおいて、所定の書き込み単位（例えばページ単位）より小さいサイズのデータの書き込みにおいては、通常の書き込み動作で使用する記録領域（物理ブロック）とは異なる記録領域に書き込みを行うようにする。これにより、データ書き込みに伴う記録領域間のデータのコピー回数を低減でき、結果として書き込み処理の高速化を図れる。
【発明を実施するための最良の形態】
【００１３】
以下、添付の図面を参照し、本発明の実施形態について説明する。
【００１４】
１．メモリカードの構成
図１に本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す。メモリカード１０１は外部機器であるホスト１０２からデータの読み出し、書込みが可能な記憶装置である。メモリカード１０１は、不揮発性の記憶素子であるフラッシュメモリ１０３と、フラッシュメモリ１０３に対するデータの書込み、読み出しを制御するメモリコントローラ１１０とを備える。メモリコントローラ１１０は、コントローラ１０４と、消去済みテーブル１０５と、論物変換テーブル１０６と、一時テーブル１０７とを備える。メモリコントローラ１１０及びフラッシュメモリ１０３は半導体集積回路で実現可能である。
【００１５】
フラッシュメモリ１０３は１２８ＭＢの容量を持つ。但し、フラッシュメモリ１０３の容量はこれに限定されない。また、複数のフラッシュメモリを備えても良い。コントローラ１０４は、ホスト１０２からの書込みと読み出し命令を受けてフラッシュメモリ１０３へのデータの格納、または、フラッシュメモリ１０３からのデータの読み出しを制御する。本実施形態では、フラッシュメモリ１０３は、１つのセルにおいて３値以上の情報を格納可能な多値メモリセルとする。但し、フラッシュメモリ１０３は２値メモリセルであってもよい。
【００１６】
フラッシュメモリ１０３に格納されるデータは、ファイルシステムの１つであるＦＡＴファイルシステムにより管理される。ＦＡＴファイルシステムは、ファイル管理情報（以下「ＦＡＴ情報」という。）として、マスターブートレコード・パーティションテーブル、パーティションブートセクタ、ＦＡＴテーブル１及びＦＡＴテーブル２、並びにルートディレクトリエントリを含む。
【００１７】
マスターブートレコード・パーティションテーブルは、データ記録領域を複数のパーティションと呼ばれる領域に分割して管理するための情報を格納する。パーティションブートセクタは、一つのパーティション内の管理情報を格納する。ＦＡＴテーブル１及びＦＡＴテーブル２はそれぞれ、ファイルに含まれるデータの格納位置を示す。ルートディレクトリエントリは、ルートディレクトリ直下に存在するファイル及びディレクトリの情報を格納する。なお、ファイルシステムは他の種類のものでもよい。
【００１８】
図２はフラッシュメモリ１０３の内部の構成を示す図である。フラッシュメモリ１０３の記録領域は複数の物理ブロック３１から構成される。物理ブロック３１は１２８ｋＢの大きさを持ち、データを一括に消去できる消去単位である。
【００１９】
また、物理ブロック３１は複数の物理ページ３０１から構成される。本実施形態では物理ブロック３１は６４ページからなる。物理ページ３０１は、データを書込む際の書込み単位であり、２ｋＢの大きさを持つ。１物理ページは４セクタからなる。物理ページ３０１は、一旦データが書き込まれると、上書きすることはできない。ホスト１０２が論理的にデータの書込みを行う単位であるクラスタは１６ｋＢである。この値は物理ブロック３１の容量１２８ｋＢとも物理ページ３０１の容量２ｋＢとも一致しない。そのため、連続する８ページ分の物理ページ３０１により容量１６ｋＢの部分物理ブロックを構成する。部分物理ブロック（１６ｋＢ）はホスト１０２からのデータの書込みを想定してコントローラ１０３が論理的に扱うデータの単位である。１つの物理ブロック３１は８つの部分物理ブロックからなり、その部分物理ブロック単位でホスト１０２からのデータが書込まれる。
【００２０】
図３Ａはメモリカード１０１の内部における論理的なデータの管理を示した図である。メモリカード１０１に搭載されているフラッシュメモリ１０３の記憶容量は１２８ＭＢである。一般的にフラッシュメモリ１０３には初期不良ブロックや、書き換えを繰り返すことにより不良ブロックが発生することがある。したがって、予めやや少な目の容量をメモリカード１０１の容量とする。本例では、ホスト１０２が認識できる実質的な容量は１２５ＭＢとする。ホスト１０２から書込みを行う単位である１６ｋＢ単位を「論理ブロック」４０２とし、メモリカード１０１の１２５ＭＢの容量において、０から順に７９９９まで割り当てている。８個の論理ブロックで、フラッシュメモリ１０３の消去単位である物理ブロック３１と等しい１２８ｋＢ単位の「論理グループ」４０１を構成する。
【００２１】
図１において、消去済みテーブル１０５はフラッシュメモリ１０３内部の物理ブロックにおいてそれぞれデータが消去済であるか、または、書込み済みであるかを示す情報を格納する。論物変換テーブル１０６は、ホスト１０２が指定するアドレス（以下「論理アドレス」という。）と、フラッシュメモリ１０３内部のアドレス（以下「物理アドレス」という。）との変換を行うテーブルである。
【００２２】
論物変換テーブル１０６は、論理グループアドレスに対応するアドレスの記録領域に、その論理グループ４０１に対応する物理ブロック３１のアドレスを格納する。論物変換テーブル１０６の簡単な構成を図３Ｂに示す。論物変換テーブル１０６は論理グループアドレスをテーブルのアドレスとして論理アドレスに対応する物理アドレスをテーブルのデータとして持つ。対応する物理ブロック３１が存在しない場合には無効値（例えば「０ｘ００００」）をデータとして持つ。
【００２３】
本実施形態では、ホスト１０２から書き込み要求されたデータのサイズがページサイズに満たない小さなサイズのデータをフラッシュメモリ１０３に書き込む場合に、特定の物理ブロック３１にデータを書込む。本実施形態では、この特定の物理ブロック３１のことを「一時ブロック」と呼ぶ。一時テーブル１０７は、一時ブロックに書き込まれたデータに対する種々の情報、例えば、一時ブロックに書き込まれたデータの物理アドレスと論理アドレス間の対応情報を格納するテーブルである。
【００２４】
一時ブロックと異なり、データサイズに依存せずにフラッシュメモリ１０３における一般的な書き込み動作が行われる物理ブロック３１を「通常ブロック」と呼ぶ。通常ブロックへのデータの書き込みが行われた場合、物理アドレスと論理アドレス間の対応関係は論物変換テーブル１０６で管理される。
【００２５】
本実施形態のメモリカード１０１では、ホスト１０２から書き込み要求のあったデータのサイズがページサイズに満たない小さな単位のデータについては一時ブロック内のページに格納する。
【００２６】
なお、本実施形態では１物理ブロックをデータの管理単位として扱うが、複数の物理ブロック３１をまとめてさらに大きな管理単位（以下「物理スーパーブロック」という。）として扱ってもよい。この場合、物理スーパーブロックに対応する論理ブロック群を論理スーパーブロックとして管理し、論物変換テーブル１０６は物理スーパーブロックと論理スーパーブロックの対応情報を格納する。
【００２７】
１−１．一時ページのフォーマット
図４にフラッシュメモリ１０３の一時ブロックにおける１ページ（以下「一時ページ」という。）のデータフォーマットを示す。一時ページは、１ページ分のデータ（以下「ページデータ」という。）を格納するデータ領域５０と、そのページデータについての管理情報を格納する管理領域６０とを有する。データ領域５０は４つのセクタデータ領域５１を含む。各セクタデータ領域５１には、セクタデータ５３と、セクタＩＤ５４と、セクタデータ５３とセクタＩＤ５４についてのＥＣＣ５５とが格納される。
【００２８】
管理領域６０は、論理ページアドレスのフィールド６１と、有効データ０ページのフィールド６２と、有効データ１ページのフィールド６３と、有効データ２ページのフィールド６４と、有効データ３ページのフィールド６５と、管理領域６０のＥＣＣ（Error Correction Code）のフィールド６６とを有する。論理ページアドレスのフィールド６１はそのページの論理アドレスを格納する。本実施形態では、一時ブロック８０において有効なデータとして同時に登録可能な一時ページの最大数は４とする。但し、この最大数は４に限られず、１物理ブロック３１における最大ページ数（本例では６４）より小さい数であればよい。有効なデータとは、読み出し対象となるデータをいう。無効なデータは一時ブロック８０中に格納されていても、読み出しの対象とはならない。有効データ０ページのフィールド６２、有効データ１ページのフィールド６３、有効データ２ページのフィールド６４、有効データ３ページのフィールド６５のそれぞれは、有効な一時ページデータとして格納される各ページデータ（有効データ０〜３）の物理ページアドレスをそれぞれ格納する。
【００２９】
図５に、一時ブロック８０における一時ページデータの格納例を示す。一時ブロック８０は０ｘ００から０ｘ３Ｆまでの６４ページ分の領域（ページ）を有する。図５の例では、０ｘ００から０ｘ２１までの各領域にデータが書き込まれている。各ページは管理領域６０を有する。本実施形態では、最後に書き込まれた物理ページ内の管理領域６０の情報が有効な情報として参照される。つまり、図５の状態では、０ｘ２１の物理ページ３０１の管理情報６０（有効データ０ページ、有効データ１ページ、有効データ２ページ及び有効データ３ページ）が参照される。有効データ０ページのフィールド６２、有効データ１ページのフィールド６３及び有効データ２ページのフィールド６４はそれぞれ「０ｘ０１」、「０ｘ０Ｅ」及び「０ｘ２１」を格納している。これは、一時ブロック８０内の物理ページアドレス６１が「０ｘ０１」、「０ｘ０Ｅ」、「０ｘ２１」であるページに格納されているデータが、一時ページとして有効なデータであることを示している。なお、有効データ３ページのフィールド６５が格納する「０ｘＦＦ」は無効であることを示す。すなわち、図５の例では、有効な一時ページは３ページ分のみ格納されている。図５において、（＊）で示されるページは無効になった一時ページである。
【００３０】
図５を参照しながら、一時ページデータの書き込みに伴う管理情報６０の遷移を説明する。一時ブロック８０は０ｘ００から０ｘ３Ｆまでの６４ページ分の領域を有し、物理ページアドレス０ｘ００のページからデータが書き込まれる。
【００３１】
図５の例では、最初、一時ブロック８０内の物理ページアドレス０ｘ００にページデータが書き込まれる。このとき、論理ページアドレスのフィールド６１に、そのページデータの論理ページアドレス（図５では、「０ｘ０００１２３」）が書き込まれる。この時点で、一時ブロック８０において有効な一時ページデータとして書き込まれているのは、物理アドレス０ｘ００の領域のみである。したがって、有効データ０ページのフィールド６２に、そのページアドレス「０ｘ００」が書き込まる。それ以外の有効データページのフィールド６３〜６５には、無効を示す「０ｘＦＦ」が書き込まれる。
【００３２】
続いて、次の物理ページアドレス「０ｘ０１」にページデータが書き込まれる。このとき、その論理ページアドレス（０ｘ０００１２３）は、物理ページアドレス「０ｘ００」において既に書き込んだページデータのものと同じであるので、先に書き込んだ一時ページデータを無効化する。
【００３３】
無効化処理は、データの書き込みにおいて、一時ブロック８０に有効データが存在する論理ページを上書きし、かつ一時ブロックへのデータの書き込みが発生する場合に行なう。
【００３４】
有効なセクタデータの書き込みと共に、管理領域を更新することで無効化を行うので、無効化処理におけるフィールド６１には有効な論理ページアドレスを記録する。
【００３５】
無効化は次のように行う。フィールド６２に記録された有効データ０ページの値を、新たにページデータを書き込んだ物理ページアドレスである「０ｘ０１」で上書きする。その他の有効データページのフィールド６３〜６５には無効を示す「０ｘＦＦ」を書き込む。このように有効データ０ページの値を上書きすることで、以前に有効であった一時ページを無効にすることができる。以上のように、本実施形態では、最後に書き込まれたページの管理情報６０が、有効なページを特定するために参照される。
【００３６】
なお、ここでは上書きする一時ブロック８０に有効データが存在する論理ページと、一時ブロックへのデータの書き込みが発生する論理ページが同じ（０ｘ０００１２３）例を示している。一時ブロック８０に有効データが存在する論理ページを上書きし、かつ一時ブロックへのデータの書き込みが発生する場合であれば論理ページが同じである必要はない。
【００３７】
１−２．一時テーブルのフォーマット
図６に、一時テーブル１０７のデータフォーマットを示す。一時テーブル１０７において、「一時ブロックの物理アドレス」のフィールドは、一時ブロック８０として使用する物理ブロック３１の物理アドレスを格納する。「次書き込み物理ページ」のフィールドは、次に書き込みが行われる一時ページの物理アドレスを格納する。「有効データ０の物理ページアドレス」のフィールドは、一時ブロック８０において一時ページとして有効なデータを格納するページの物理アドレスを格納する。「有効データ１の物理ページアドレス」、「有効データ２の物理ページアドレス」、及び「有効データ３の物理ページアドレス」の各フィールドも同様である。「有効データ０の物理ページアドレスにあるデータの論理ページアドレス」のフィールドは、「有効データ０の物理ページアドレス」で指定される物理アドレスに格納されたデータの論理ページアドレスを格納する。「有効データ１の物理ページアドレスにあるデータの論理ページアドレス」、「有効データ２の物理ページアドレスにあるデータの論理ページアドレス」、及び「有効データ３の物理ページアドレスにあるデータの論理ページアドレス」の各フィールドも同様である。
【００３８】
例えば、一時ブロックが図５のような状態のとき、一時テーブル１０７の各フィールドは以下のように値を格納する。
【表１】
0004633802.tif 000002
【００３９】
一時テーブル１０７はメモリカード１０１の起動時（電源投入時）等に作成され、その後、適宜更新される。ホスト１０２は起動時等の所定のタイミングで一時テーブル１０７の値を読み出し、ホスト１０２のＲＡＭ上に格納する。
【００４０】
２．メモリカードの動作
２−１．一時テーブル作成処理
図７のフローチャートを用いて一時テーブル作成処理を説明する。
最初に、一時ブロック８０を読み出し、最後に書き込まれた一時ページを検索する（Ｓ１２）。図５の例では、最終の書き込みページとして物理ページアドレスが「０ｘ２１」のページが検索される。次に、最終の書き込みページの管理情報６０を参照して、有効な一時ページの情報を取得する（Ｓ１２）。図５の例では、物理ページアドレスが「０ｘ２１」のページの管理情報６０から、有効な一時ページとして「０ｘ０１」、「０ｘ０Ｅ」、「０ｘ２１」を得る。その後、取得した有効な一時ページの全てについて、論理ページ情報（論理ページアドレス）を取得する（Ｓ１３〜Ｓ１５）。図５の例では、論理ページ情報として「０ｘ０００１２３」、「０ｘ０００４５６」、「０ｘ０００７７７」を得る。なお、図７において、ステップＳ１３、Ｓ１５は、有効な一時ページの全てについて論理ページアドレスを取得するまで、論理ページアドレスの取得ステップ（Ｓ１４）を繰り返すことを示している。最後に、取得した情報を用いて一時テーブル１０７を作成する（Ｓ１６）。
【００４１】
２−２．データ書き込み
図８のフローチャートを用いてメモリカード１０１におけるデータ書き込み処理を説明する。以下の処理はメモリカード１０１内のコントローラ１０４により実行される。
【００４２】
ホスト１０２からデータ書き込み要求（書き込みコマンド）を受けると、コントローラ１０４は、書き込みデータのサイズが１セクタであるか否かを判断する（Ｓ２１）。１セクタであるときは、一時ブロックへの書き込みを行う（Ｓ３０）。この処理の詳細は後述する。
【００４３】
一方、１セクタでないときは、書き込みデータがページ内の最終セクタを含むか否かを判断する（Ｓ２３）。この判断は書き込みデータのアドレスに基づいて可能である。書き込みデータがページ内の最終セクタを含まない場合は、その書き込みデータは、２セクタ又は３セクタのサイズであり、かつ、その書き込み要求に対する最後のデータであることを意味する。一方、書き込みデータがページ内の最終セクタを含む場合、まだそれ以後に続行する書き込みデータが存在することを意味する。
【００４４】
よって、書き込みデータがページ内の最終セクタを含まない場合に、一時ブロック８０への書き込みを行う（Ｓ３０）。ページ内の最終セクタを含む場合、通常ブロックへの書き込みを行う（Ｓ２４）。
【００４５】
その際、書き込みデータのアドレスが既に一時テーブル１０７において有効な一時ページとして登録されているか否かを判断する（Ｓ２５）。登録がある場合は、その一時ページに対する仮無効処理を行う（Ｓ２６）。仮無効処理としては、例えば、その一時ページに対して無効化を行う必要があることを示すフラグを設定する。ホスト１０２から書き込みが要求された全てのデータに対して上記処理を繰り返す（Ｓ２２、Ｓ２７）。
【００４６】
その後、仮無効処理が発生したか否かを判断し（例えばフラグを確認し）、仮無効処理が発生した場合は、一時ブロック８０内の仮無効処理が発生した一時ページについて無効化を行う（Ｓ２９）。仮無効処理（Ｓ２６）が発生した場合の無効化（Ｓ２９）はデータの書き込みにおいて、一時ブロックに有効データが存在する論理ページを上書きし、かつ一時ブロックへのデータの書き込みが発生しない場合に行う。一時ブロック８０内の一時ページの無効化は、無効化する有効データページのフィールド６２、６３、６４または６５を「０ｘＦＦ」にし、論理ページアドレスのフィールド６１を「０ｘＦＦＦＦＦＦ」にしたデータ（以下「無効化ページデータ」という。）を次書き込み物理ページに新たに追加することで行う。無効化ページデータにおいてデータ領域５０には何も書き込まれない。例えば、図９は、物理ページアドレス「０ｘ２１」のデータを無効化した例を示す。物理ページアドレス「０ｘ２１」のデータを無効化するため、物理ページアドレス「０ｘ２２」において、有効データ２ページを「０ｘＦＦ」に設定し、論理ページアドレスのフィールド６１を「０ｘＦＦＦＦＦＦ」に設定した無効化ページデータが書き込まれている。
【００４７】
図８のフローチャートにおいて、一時ブロックへの書き込みの判断についてまとめる。まず、データサイズが１セクターの書き込みは必ず一時ブロックに書き込む。これは、ホスト１０２がメモリーカード１０１の書き込み単位未満のデータを更新するときには、メモリーカード１０１への最小の書き込みサイズである書き込み単位でデータの書き込みを行うために、ホスト１０２が連続した論理バイトアドレスに対してデータを書き込む時には、データサイズが1セクターの書き込みを、同じ論理セクターアドレスに対して複数回行うことになるからである。データサイズが1セクターでなければ最終アドレスに基づいて、一時ブロックへ書き込みを行なうか否か判断する。最終アドレスがページ内における最終セクタを示さない場合、先頭アドレスにかかわらず一時ブロックに書き込む。
【００４８】
２−３．データ読み出し
図１０のフローチャートを用いてメモリカード１０１からのデータ読み出し処理を説明する。以下の処理はメモリカード１０１内のコントローラ１０４により実行される。
【００４９】
ホスト１０２からデータ読み出し要求を受けると、コントローラ１０４は一時テーブル１０７を参照する。そしてホスト１０２から指定された論理アドレスに基づき、読み出そうとするデータが一時テーブル１０７に登録されているか否かを判断する（Ｓ４２）。つまり、コントローラ１０４は、読み出そうとするデータが一時ブロック８０に格納されているか否かを判断する。
【００５０】
一時テーブル１０７に登録があるときは、一時ブロック８０からの読み出しを行う（Ｓ４３）。より具体的には、一時テーブル１０７を参照し、ホスト１０２により指定された論理アドレスに対応する物理ページアドレスを求める。その後、一時ブロック８０から、求めた物理ページアドレスのデータを読み出す。
【００５１】
一時テーブル１０７に登録がないときは、通常ブロックから、ホスト１０２により指定された読み出しアドレスに基づいて、データを読み出す（Ｓ４５）。
【００５２】
以上の処理を、ホスト１０２から指定された範囲の全てのデータを読み出すまで繰り返す（Ｓ４１、Ｓ４４）。
【００５３】
２−４．一時ブロック書き込み
図１１のフローチャートを用いて、上記の一時ブロック８０への書き込み処理（図８のステップＳ３０）を説明する。
【００５４】
一時ブロック８０への書き込みを行うために、まず、一時ブロック８０に空き領域があるか否かを判断する（Ｓ５１）。ここで、空き領域がない状態とは、図１２（ａ）に示すように、一時ブロック８０の全物理ページにデータが書き込み済みであり、新たにデータを書き込むための空き領域がない状態をいう。
【００５５】
空き領域がない場合、一時ブロックコピー処理を行う（Ｓ５２）。一時ブロックコピー処理では、空き領域がない一時ブロック８０に格納されている有効な物理ページのデータを新たな物理ブロックにコピーするとともに、この新たな物理ブロックを一時ブロック８０として使用することで空き領域を設ける。この処理の詳細は後述する。
【００５６】
その後、一時ブロック８０の４つの一時ページにおいて空き領域があるか否かを判断する（Ｓ５３）。ここで、一時ページの空き領域がない状態とは、図１２（ｂ）に示すように、４つの有効データページのフィールドに記録された物理ページアドレスの一時ページ全てが有効であり、かつ、書き込もうとするデータの論理ページアドレスが、４つの有効な一時ページの論理ページアドレスのいずれとも一致しない状態をいう。
【００５７】
一時ページに空き領域がないときは、一時ページ解消処理を行う（Ｓ５４）。一時ページ解消処理では、最も古くに登録された一つの有効な一時ページを解消し、一時ページの空きを設ける。この処理の詳細は後述する。
【００５８】
その後、一時テーブル１０７を更新した後（Ｓ５５）、一時ブロック８０において一時ページデータを書き込む（Ｓ５６）。
【００５９】
２−４−１．一時ブロックコピー
図１３のフローチャートを用いて、上記の一時ブロックコピー処理（図１１のステップＳ５２）を説明する。本処理では、空き領域がない一時ブロック８０の有効な物理ページのデータのみを新しい物理ブロックにコピーし、これにより一時ブロックに空き領域を設ける。
【００６０】
最初に、消去済みテーブル１０５を参照して消去済みの物理ブロックを確保する（Ｓ６１）。「消去済みの物理ブロック」は、データの未書き込み領域で構成されている。一時ページに空き領域がない一時ブロック８０の有効な物理ページのデータを全て、新たに確保した物理ブロックにコピーする（Ｓ６２）。
【００６１】
図１４は、一時ブロックコピー処理を説明した図である。一時ブロック８０は空き領域がない物理ブロックである。一時ブロック８０の最終ページを参照すると、物理ページ「０ｘ００」、「０ｘ０３」、「０ｘ２３」、「０ｘ３Ｆ」が有効な一時ページであることが認識できる。物理ブロック８０ｂは、新たに確保された消去済みの物理ブロックである。一時ブロック８０における物理ページ「０ｘ００」、「０ｘ０３」、「０ｘ２３」、「０ｘ３Ｆ」のデータが、新たに確保された物理ブロック８０ｂにコピーされ、物理ブロック８０ｂは十分な未書き込み領域を有し、以後、新たな一時ブロックとして使用される。古い一時ブロック８０のデータは消去されて、消去済みの物理ブロックとなる。
【００６２】
２−４−２．一時ページ解消
図１５（ａ）のフローチャートを用いて、上記の一時ページ解消処理（図１１のステップＳ５４）を説明する。本処理では、有効な一時ページのうち最も古くに登録されたものを解消することで、空き一時ページを設ける。
【００６３】
まず、最も古くに登録された有効な一時ページを検索し、そのページデータを読み出す（Ｓ８１）。その読み出したページデータを通常ブロックへコピーする（Ｓ８２）。その後、ページデータをコピーした一時ページについて一時ページの無効化処理を行う（Ｓ８３）。
【００６４】
図１５（ｂ）は一時ページ解消を説明した図である。一時ブロック８０において最も古くに登録された有効な一時ページ９１が通常ブロック８５にコピーされる。このとき、通常ブロック８５において、論理アドレスの連続性が保持されるように必要に応じて、一時ページ９１のデータを、それと論理アドレスが連続するデータとともに通常ブロック８５にコピーする。
【００６５】
３．データ書き込み時の具体例
３−１．本発明の方法によるアクセス例１
図１６、図１７、図１８を参照し、データ書き込み時の一時ブロック８０における状態の遷移について具体例を挙げて説明する。書き込みデータは４ＫＢ（８セクタ）単位でパケット化されており、図１６（ｂ）に示すように、データ１、データ２，データ３、・・・、データ６４からなり、トータルのサイズは１２８ＫＢ（２５６セクタ）である。
【００６６】
データ１は、セクタ０〜セクタ６と、セクタ７の一部の領域とに書き込まれる。データ２はセクタ７の残りの領域に書き込まれる。データ３は、セクタ８〜セクタ１４と、セクタ１５の一部の領域とに書き込まれる。データ４はセクタ１５の残りの領域に書き込まれる。以降、同様にして、データ５、データ６、・・・、データ６４が対応するセクタに書き込まれる。
【００６７】
図１６（ｃ）は、図１６（ｂ）に示すデータの書き込みコマンドを受けたときのアクセス手順を示している。図１６（ｃ）において、書き込み、読み出しについての１つのブロックがホスト１０２からの１つのコマンドに相当する。
【００６８】
最初にデータ１の書き込みにおいてセクタ０〜セクタ６が書き込まれる。次に、セクタ７の一部に、データ１の残りのデータが書き込む。この場合、セクタ７のデータが読み出され、データ１の残りのデータ部分に対応する、セクタ７の部分が書き替えられる。このように、１セクタに満たないデータが書き込まれる場合は、セクタデータを一旦読み出し、必要な部分のみを書き替えるリードモディファイライトが実施される。
【００６９】
次に、セクタ７の残りの領域にデータ２を書き込むため、セクタ７のデータが読み出され、データ２のデータ部分に対応するセクタ７の部分が書き替えられる。以下、同様にして、データ６４まで書き込まれる。
【００７０】
図１７及び図１８は、図１６（ａ）〜（ｃ）のようにデータが書き込まれる場合の、一時ブロック８０及び通常ブロック９０内の状態の遷移を説明した図である。
【００７１】
図１７（ａ）は、データ１に対するセクタ０〜６の書き込み後、すなわち、図１６（ｃ）におけるアクセスＡ後の、一時ブロック８０と通常ブロック９０の状態を示す。セクタ０〜６の書き込みは、セクタ０〜３の書き込みと、セクタ４〜６の書き込みに分けられる。セクタ０〜３の書き込みは、１ページ内の最終セクタを含むことから（図８のステップＳ２３で「Ｎｏ」）、通常ブロック９０への書き込みとなる（Ｓ２４）。セクタ４〜６の書き込みは、１ページ内の最終セクタを含まないことから（図８のステップＳ２３で「Ｙｅｓ」）、一時ブロック８０への書き込みとなる（Ｓ３０）。一時ブロックの物理ページ０の「データ領域」５０に、データ１の一部分をセクタ４〜６を、有効データ０ページ（フィールド６２）に物理ページアドレス「０」を記録する。このとき、セクタ７へのデータの書き込みは行われていない。また、一時テーブル１０７の「有効データ０の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「０」を、「有効データ０の物理ページにあるデータの論理ページアドレス」のフィールドに新たなページの論理ページアドレスである「１」を記録する。
【００７２】
図１７（ｂ）は、データ１の残りのデータに対するセクタ７の書き込み後、すなわち、図１６（ｃ）におけるアクセスＢ後の、一時ブロック８０と通常ブロック９０の状態を示す。セクタ７の書き込みは、１セクタの書き込みであることから（図８のステップＳ２１で「Ｙｅｓ」）、一時ブロック８０への書き込みとなる（Ｓ３０）。セクタ７の書き込みのために、セクタ４〜７のデータ（１ページ分のデータ）を読み出し、セクタ７をデータ１の残りのデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「１」に記録する。このとき、有効データ０ページ（フィールド６２）の値を、新たなページの物理ページアドレスである「１」に設定する。また、一時テーブル１０７の「有効データ０の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「１」を記録する。
【００７３】
図１７（ｃ）は、データ２に対するセクタ７の書き込み後、すなわち、図１６（ｃ）におけるアクセスＣ後の、一時ブロック８０と通常ブロック９０の状態を示す。セクタ７の書き込みは、１セクタの書き込みであることから、一時ブロック８０への書き込みとなる。セクタ７の書き込みのために、セクタ４〜７のデータ（１ページ分のデータ）を読み出し、セクタ７の一部をデータ２のデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「２」に記録する。このとき、有効データ０論理ページの値を、新たなページの物理ページアドレスである「２」に設定する。また、一時テーブル１０７の「有効データ０の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「２」を記録する。
【００７４】
図１７（ｄ）は、データ３に対するセクタ８〜１４の書き込み後、すなわち、図１６（ｃ）におけるアクセスＤ後の、一時ブロック８０と通常ブロック９０の状態を示す。セクタ８〜１４の書き込みは、セクタ８〜１１の書き込みと、セクタ１２〜１４の書き込みに分けられる。セクタ８〜１１の書き込みは、１ページ内の最終セクタを含むことから、通常ブロック９０への書き込みとなる。ここで、通常ブロック９０には、既にセクタ０〜３までのデータが書き込まれていることから、論理アドレスの連続性を保持するため、セクタ８〜１１の書き込みの前にセクタ４〜７のデータも合わせて書き込む必要がある。
【００７５】
セクタ８〜１１への通常ブロック９０への書き込み後、セクタ１２〜１４の書き込みを行う。セクタ１２〜１４の書き込みは、１ページ内の最終セクタを含まないことから、一時ブロック８０への書き込みとなる。セクタ１２〜１４のデータを物理ページアドレス「３」に記録する。有効データ０論理ページ(フィールド６２)の値を「３」に設定する。有効データ０ページ（フィールド６２）の値を「２」から「３」に上書きするのは、セクタ４〜７の通常ブロック９０への書き込みにより、一時ブロック８０においてセクタ４〜７のデータを無効にする必要があるからである。また、一時テーブル１０７の「有効データ０の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「３」を、「有効データ０の物理ページにあるデータの論理ページアドレス」のフィールドに新たなページの論理ページアドレスである「３」を記録する。
【００７６】
図１８（ｅ）は、データ３の残りのデータに対するセクタ１５の書き込み後、すなわち、図１６（ｃ）におけるアクセスＥ後の、一時ブロック８０と通常ブロック９０の状態を示す。セクタ１５の書き込みは、１セクタの書き込みであることから、一時ブロック８０への書き込みとなる。セクタ１２〜１５のデータを読み出し、セクタ１５をデータ３の残りのデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「４」に記録する。このとき、有効データ０ページの値（フィールド６２）を、新たなページの物理ページアドレスである「４」に設定する。また、一時テーブル１０７の「有効データ０の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「４」を記録する。
【００７７】
図１８（ｆ）は、データ４に対するセクタ１５の書き込み後、すなわち、図１６（ｃ）におけるアクセスＦ後の、一時ブロック８０と通常ブロック９０の状態を示す。セクタ１５の書き込みは、１セクタの書き込みであることから、一時ブロック８０への書き込みとなる。セクタ１２〜１５のデータを読み出し、セクタ１５の一部をデータ４のデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「５」に記録する。このとき、有効データ０論理ページの値（フィールド６２）を、新たになページの物理ページアドレスである「５」に設定する。また、一時テーブル１０７の「有効データ０の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「５」を記録する。
【００７８】
上記の例では、セクタ０〜６の書き込み（アクセスＡ）、セクタ７の書き込み（アクセスＢ）、セクタ７の書き込み（アクセスＣ）のように、７セクタ、１セクタ及び１セクタのアクセスで、通常ブロック９０に書き込みを行うことができる。この場合、８セクタ（セクタ０〜７）分のアクセスで、一時ブロック８０については３ページ分のアクセスが発生する。
【００７９】
よって、同様のアクセスが２５６セクタ分繰り返されると、９６（２５６÷８×３）ページ分の一時ページに対するアクセスが発生する。９６ページは１つの一時ブロック８０には収まらないので、一時コピー処理が１回生じる。結果として、３ブロック以内の物理ブロックを用いて書き込みが行える。
【００８０】
３−２．従来の方法によるアクセス例
図１９及び図２０を参照し、図１６（ａ）、（ｂ）のデータを、従来の書き込み方法により書き込んだ場合の物理ブロックにおける状態の変化について説明する。
【００８１】
図１９（ａ）に示すように、物理ブロック（通常ブロック）＃１において、セクタ０〜３のデータがページ０に、セクタ４〜６のデータがページ１にそれぞれ書き込まれる。次に、データ１の残りのデータについてセクタ７が書き込まれる。しかし、セクタ７の書き込みについては、ページ１に対する上書きができないため、セクタ４〜７までのデータを新たに別ページとして書き込む必要がある。そこで、従来の方法では、図１９（ｂ）に示すように書き込みが行われる。すなわち、論理アドレスの連続性を保持するため、セクタ７に連続するセクタ８からセクタ２５５のデータが物理ブロック＃１の未書き込み領域に書き込まれ、別の物理ブロック＃２においてセクタ０〜３、セクタ４〜７のデータが書き込まれる。このとき、論理アドレスと物理アドレスとは論物変換テーブルにより対応付けが行われる。
【００８２】
次に、データ２についてセクタ７が上書きされる場合、前回と同様にして、セクタ７に連続するセクタ８からセクタ２５５のデータが、物理ブロック＃２の未書き込み領域に書き込まれ、別の物理ブロック＃３においてセクタ０〜３、セクタ４〜７のデータが書き込まれる（図１９（ｃ）参照）。
【００８３】
次に、物理ブロック＃３においてセクタ８〜１４のデータが書き込まれる（図１９（ｄ）参照）。その後、データ３の残りのデータについてのセクタ１５が書き込まれる。この場合も、データ１の残りのデータについてのセクタ７の書き込みの場合と同様に、論理アドレスの連続性が保持されるように、物理ブロック＃３にデータがコピーされた後、新たな物理ブロック＃４に、セクタ０〜１５のデータが書き込まれる（図２０（ｅ）参照）。
【００８４】
さらに、データ４についてのセクタ１５の書き込みが行われる。この場合も、データ２についてのセクタ７の書き込みの場合と同様に、論理アドレスの連続性が保持されるように、物理ブロック＃４にデータがコピーされた後、新たな物理ブロック＃５に、セクタ０〜１５のデータが書き込まれる（図２０（ｆ）参照）。
【００８５】
以上のように、従来の方法では、７セクタ、１セクタ及び１セクタのアクセスにおいて、最初の７セクタ、１セクタ及び１セクタのアクセスでは、３ブロック消費し、以降の７セクタ、１セクタ及び１セクタのアクセスでは、２ブロック消費する。従って、２５５セクタまで書き込みが行われた場合、６５（２５６÷８×２＋１）ブロック消費する。
【００８６】
従来技術によれば、２５５セクタの書き込みにおいて、６５ブロック消費したのに対して、本実施形態の方法では、アクセス例１で述べたように３ブロックしか消費しない。よって、本実施形態によれば、ブロック消費量は従来の約２０分の１となり、物理ブロック間のデータのコピー回数を低減でき、結果として書き込み処理の高速化が図れる。
【００８７】
３−３．本発明の方法によるアクセス例２
以下の例では、図２１（ｃ）に示すように、パケット単位で、すなわち、７セクタ、１セクタ及び１セクタのアクセスによるデータの書き込み毎に、ディレクトリエントリへのアクセスが生じる場合を説明する。
【００８８】
図２２、図２３、図２４は、図２１（ｃ）のようにディレクトリエントリへの書き込みを伴うデータ書き込みの場合の、一時ブロック８０及び通常ブロック９０内の状態の変化を説明した図である。
【００８９】
一時ブロック８０及び通常ブロック９０内の状態の変化は図１７及び図１８に示したものと基本的に同じである。ディレクトリエントリのデータサイズは１セクタとなるため、ディレクトリエントリのデータは、一時ブロック８０へ書き込まれる（図２２（ｄ）、図２４参照）。
【００９０】
このようにパケット単位でディレクトリエントリを更新することにより、データ書き込み途中で障害が発生した場合にも、書き込み済みデータに対する管理が全く不能となるとい不具合を防止でき、ディレクトリエントリを更新したデータまでは管理ができるようになる。このようなメリットは例えば携帯端末に望まれる。
【００９１】
なお、データがディレクトリエントリに対する書き込みか否かの判断は、書き込みデータのアドレスに基づいても判断できる。よって、書き込みデータのアドレスを判定し、そのアドレスがディレクトリエントリに対応するものである場合は、無条件に一時ブロック８０へデータを書き込むようにしてもよい。
【００９２】
４．まとめ
以上のように本実施形態によれば、所定の書き込み単位（ページ単位）で書き込みを行わなければならないフラッシュメモリを有する不揮発性メモリにおいて、所定の書き込み単位（ページ単位）より小さいサイズのデータの書き込みにおいては、通常の書き込み動作で使用する物理ブロックとは異なる物理ブロック（一時ブロック）に書き込みを行う。これにより、データ書き込みに伴う物理ブロック間のデータのコピー回数を低減でき、結果として書き込み処理の高速化を図れる。
【産業上の利用可能性】
【００９３】
本発明は不揮発性半導体装置に対する書き込みの高速化技術に適用でき、特に、所定の書き込み単位（例えばページ単位）で書き込みを行わなければならない不揮発性メモリを有する不揮発性半導体装置、不揮発性メモリのコントローラ装置等に有用である。
【図面の簡単な説明】
【００９４】
【図１】本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す図
【図２】フラッシュメモリの内部の構成及び物理ブロックの構成を示す図
【図３Ａ】メモリカードの内部における論理的なデータの管理を示した図
【図３Ｂ】論物変換テーブルの構成例を示す図
【図４】フラッシュメモリの一時ページのデータフォーマットを示す図
【図５】一時ブロックにおける一時ページデータの格納例を示す図
【図６】一時テーブル１０７のデータフォーマットを示す図
【図７】一時テーブル作成処理のフローチャート
【図８】データ書き込み処理のフローチャート
【図９】データ無効化処理を説明するための図
【図１０】データ読み出し処理のフローチャート
【図１１】一時ブロック書き込み処理のフローチャート
【図１２】（ａ）空き領域がない一時ブロックを説明した図、（ｂ）空き一時ページがない一時ブロックを説明した図
【図１３】一時ブロックコピー処理のフローチャート
【図１４】一時ブロックコピー処理を説明した図
【図１５】（ａ）一時ページ解消処理のフローチャート、（ｂ）一時ページの解消を説明するための図
【図１６】本発明による第１のアクセス例を説明するための図
【図１７】第１のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図
【図１８】第１のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図（図１７のつづき）
【図１９】従来の方法による、データ書き込み時の一時ブロックにおける状態の遷移を示した図
【図２０】従来の方法による、データ書き込み時の一時ブロックにおける状態の遷移を示した図（図１９のつづき）
【図２１】本発明による第２のアクセス例を説明するための図
【図２２】第２のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図
【図２３】第１のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図（図２２のつづき）
【図２４】第１のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図（図２３のつづき）
【符号の説明】
【００９５】
３１  論理ブロック
８０  一時ブロック
８５  通常ブロック
１０１  メモリカード
１０２  ホスト
１０３  フラッシュメモリ
１０４  コントローラ
１０５  消去済みテーブル
１０６  論物変換テーブル
１０７  一時テーブル
１１０  メモリコントローラ
３０１  論理ページ
【図１】
0004633802.tif 000003
【図２】
0004633802.tif 000004
【図３Ａ】
0004633802.tif 000005
【図３Ｂ】
0004633802.tif 000006
【図４】
0004633802.tif 000007
【図５】
0004633802.tif 000008
【図６】
0004633802.tif 000009
【図７】
0004633802.tif 000010
【図８】
0004633802.tif 000011
【図９】
0004633802.tif 000012
【図１０】
0004633802.tif 000013
【図１１】
0004633802.tif 000014
【図１２】
0004633802.tif 000015
【図１３】
0004633802.tif 000016
【図１４】
0004633802.tif 000017
【図１５】
0004633802.tif 000018
【図１６】
0004633802.tif 000019
【図１７】
0004633802.tif 000020
【図１８】
0004633802.tif 000021
【図１９】
0004633802.tif 000022
【図２０】
0004633802.tif 000023
【図２１】
0004633802.tif 000024
【図２２】
0004633802.tif 000025
【図２３】
0004633802.tif 000026
【図２４】
0004633802.tif 000027