(57)【特許請求の範囲】
【請求項１】
ホストからの論理アドレスを受けてデータの書込み、読み出しが可能な不揮発性記憶装置であって、
物理アドレスによりデータの書込み、読み出しが行われ、複数の物理ブロックから構成される不揮発性メモリと、
論理アドレスと物理アドレスの対応情報を、所定の管理単位領域毎に論理グループアドレスと、１つ以上の物理ブロックからなる物理グループのアドレスとの対応情報として格納する論物変換テーブルと、
前記論物変換テーブルで対応付けられている論理グループアドレスと同一の論理グループアドレスを持つデータについて、前記管理単位領域のサイズよりも小さなサイズのデータの論理アドレスと物理アドレスの対応情報として格納する重複テーブルと、
前記不揮発性記憶装置の動作制御を行うコントローラとを備え、
前記コントローラは、一の管理単位領域に書込み済みのデータと同一の論理アドレスを持つデータを、他の管理単位領域に重複して書込むことを許可し、その重複して書込むための書込みモードを複数有し、前記ホストからの論理アドレスの変化の状況に応じて、前記論物変換テーブルの情報を更新することなく、前記書込みモードを選択的に切り替え、
前記コントローラは、所定範囲に含まれる論理アドレスに対しては、前記所定範囲に含まれない論理アドレスに対する書込みモードとは異なる書込みモードを選択する、
不揮発性記憶装置。
【請求項２】
前記コントローラは、ホストからの論理アドレスと、その論理アドレスに対応する重複テーブルの情報とに基いて前記書込みモードを切り替える、請求項１記載の不揮発性記憶装置。
【請求項３】
重複テーブルは、重複配置されるデータの論理グループアドレスに対応する所定情報を、複数の論理グループアドレスに対応して格納するための複数のレコードを有する、請求項１記載の不揮発性記憶装置。
【請求項４】
前記書込みモードは、同一の論理グループアドレスに対する複数回のホストからの書込みコマンドに対して、前記管理単位よりも小さな書込み単位と等しいサイズのデータを書込むランダムモードを含む、請求項１記載の不揮発性記憶装置。
【請求項５】
前記書込みモードは、同一の論理グループアドレスに対する複数回のホストの書込みコマンドに対して、前記管理単位よりも小さな書込み単位のサイズで、かつ、前回に書込まれたデータと同じ論理アドレス範囲を持つデータを書込む上書きモードを含む、請求項１記載の不揮発性記憶装置。
【請求項６】
前記書込みモードはさらに、複数回のホストからの書込みコマンドに対して、前記管理単位よりも小さな書込み単位と等しいサイズのデータをコマンド毎に書込むランダムモードを含み、
前記コントローラは、上書きモードでの書込み中にホストから指定された論理アドレスが、続けて上書きモードで書込みを行うことができないアドレス範囲にある場合に、前記ランダムモードでの書込みを行う、請求項５記載の不揮発性記憶装置。
【請求項７】
前記書込みモードは、同一の論理グループアドレスに対する複数回のホストからの書込みコマンドに対して、前記管理単位領域においてデータを論理アドレス順に連続して書込む連続モードを含む、請求項１記載の不揮発性記憶装置。
【請求項８】
前記重複テーブルは、前記所定範囲に含まれる論理グループの個々に対応して専用のレコードを有する、請求項１記載の不揮発性記憶装置。
【請求項９】
前記論物変換テーブルは、前記所定範囲に含まれる論理アドレスに対応する情報と、前記所定範囲に含まれない論理アドレスに対応する情報とで構成が異なる、請求項１記載の不揮発性記憶装置。
【請求項１０】
前記所定範囲に含まれる論理アドレスの論理グループのサイズは、前記所定範囲に含まれない論理グループのサイズよりも、小さいサイズで管理単位領域とする、請求項１記載の不揮発性記憶装置。
【請求項１１】
前記所定範囲に含まれる論理アドレスの論理グループのサイズが、論理グループにより異なるサイズである、請求項１記載の不揮発性記憶装置。
【請求項１２】
前記所定範囲は、ファイルシステムにより管理されるファイル管理情報が格納される領域を含む範囲に設定される、請求項１記載の不揮発性記憶装置。
【請求項１３】
前記所定範囲の大きさは前記不揮発性記憶装置の容量に応じて異なる値とする、請求項１２記載の不揮発性記憶装置。
【請求項１４】
前記所定範囲に含まれる論理アドレスに対応付けられた前記管理単位領域は、最初に前記管理単位のデータが書込まれる第１の領域と、前記第１の領域に書込まれた管理単位のデータと同一の論理アドレスを持つデータを前記管理単位よりも小さなサイズで重複して書込む第２の領域とを含む、請求項１記載の不揮発性記憶装置。
【請求項１５】
前記第１の領域と前記第２の領域が、前記不揮発性メモリの同じ物理ブロック内に含まれる、請求項１４記載の不揮発性記憶装置。
【請求項１６】
一つの論理グループに対する前記第２の領域を複数の管理単位領域に配置する、請求項１４記載の不揮発性記憶装置。
【請求項１７】
ホストからの論理アドレスを受けてデータの書込み、読み出しが可能な不揮発性記憶装置に対するデータ書込み方法であって、
一の管理単位領域に書込み済みのデータと同じ論理アドレスを持つデータを他の管理単位領域に重複して書込むための書込みモードを複数有し、
前記ホストから、既に書込み済みのデータと同じ論理アドレスを持つデータの書込みコマンドを受けたときに、該書込み要求のあったデータを、前記書込み済みデータの管理単位領域とは別の管理単位領域に重複して書込み、前記別の管理単位領域に書込んだデータの論理アドレスと物理アドレスを対応づけて記憶し、
その後、続けて前記ホストから書込みコマンドを受けたときに、前記ホストからの論理アドレスの変化の状況に応じて前記書込みモードを選択的に切り替え、
所定範囲に含まれる論理アドレスに対しては、前記所定範囲に含まれない論理アドレスに対する書込みモードとは異なる書込みモードを選択する、
データ書込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の不揮発性メモリを用いた記憶装置およびその書込み方法に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを搭載したメモリカードはデジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。そしてメモリカード容量の増加に伴い、データファイルや静止画等の小容量の記録からより大容量が必要となる動画記録へとその用途は広がっている。このため、従来より、不揮発性メモリを搭載した記録媒体に関し種々の考案がなされている（例えば、特許文献１〜４）。
【０００３】
近年、メモリカードの不揮発性メモリとして主に使用されているＮＡＮＤタイプのフラッシュメモリは、その容量の増加に伴いデータの消去単位となる物理ブロックのサイズが１６ｋＢ（主に１２８ＭＢ以下のフラッシュメモリについて）のものから１２８ｋＢ（主に１２８ＭＢ以上のフラッシュメモリ）へと大きくなってきている。それに対し、メモリカードへのデータ書込みを管理するファイルシステムでは、データの書込み単位となるクラスタは１６ｋＢのままで変化していない。
【０００４】
従来の小容量（主に１２８ＭＢまでの容量）のメモリカードにおいては、メモリカードにデータを書込む際のクラスタの容量と、メモリカード内部に搭載されているＮＡＮＤタイプのフラッシュメモリの消去単位となる物理ブロックとは等しかった。
【０００５】
【特許文献１】
特開２００１−１５４９０９号公報
【特許文献２】
特開平１１−５３２４８号公報
【特許文献３】
特開２００２−３２４００８号公報
【特許文献４】
特開平５−２１６７８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、大容量化が進むと、例えば、容量が１２８ＭＢを越えた容量値の不揮発性メモリからは、メモリカードにデータを書込む単位であるクラスの容量の１６ｋＢと、メモリカード内部に搭載されているＮＡＮＤタイプのフラッシュメモリの消去単位である物理ブロックの容量の１２８ｋＢとが異なる。これにより、メモリカードに書込まれたファイルがフラグメンテーションを発生していた場合の書込み性能の低下を招いていた。
【０００７】
上記の様にフラグメンテーションが発生した状態での、従来の不揮発性メモリの書込み方法においては、書込み処理に要する時間が長いとともに、書込み・消去を行う物理ブロックの数が多く必要となるという課題が存在していた。
【０００８】
また、ホストからの書込み要求には、前回にデータを書込んだ領域と連続した論理アドレス領域にデータを続けて書込む場合や、前回にデータを書込んだ領域と全く別の任意の領域にデータを書込む場合等、種々の場合があり、いずれのアクセス方法によっても効率的な書込み処理が実現されることが望まれる。
【０００９】
本発明は上記課題を解決すべくなされたものであり、その目的とするところは、ホストからのアクセス方法に依存せず書込み処理に要する時間を短縮できる不揮発性の記憶装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係る不揮発性記憶装置は、ホストからの論理アドレスを受けてデータの書込み、読み出しが可能な不揮発性記憶装置である。不揮発性記憶装置は、物理アドレスによりデータの書込み、読み出しが行われ、複数の物理ブロックから構成される不揮発性メモリと、論理アドレスと物理アドレスの対応情報を、所定の管理単位領域毎に論理グループアドレスと、１つ以上の物理ブロックからなる物理グループのアドレスとの対応情報をとして格納する論物変換テーブルと、論物変換テーブルで対応付けられている論理グループアドレスと同一の論理グループアドレスを持つデータについて、管理単位領域のサイズよりも小さなサイズのデータの論理アドレスと物理アドレスの対応情報として格納する重複テーブルと、不揮発性記憶装置の動作制御を行うコントローラとを備える。コントローラは、一の管理単位領域に書込み済みのデータと同一の論理アドレスを持つデータを、他の管理単位領域に重複して書込むことを許可し、その重複して書込むための書込みモードを複数有し、ホストからの論理アドレスの変化の状況に応じて、論物変換テーブルの情報を更新することなく、書込みモードを選択的に切り替える。コントローラは、所定範囲に含まれる論理アドレスに対しては、所定範囲に含まれない論理アドレスに対する書込みモードとは異なる書込みモードを選択する。
【００１１】
本発明に係るデータ書込み方法は、ホストからの論理アドレスを受けてデータの書込み、読み出しが可能な不揮発性記憶装置に対するデータ書込み方法である。その書込み方法は、一の管理単位領域に書込み済みのデータと同じ論理アドレスを持つデータを他の管理単位領域に重複して書込むための書込みモードを複数有し、ホストから、既に書込み済みのデータと同じ論理アドレスを持つデータの書込みコマンドを受けたときに、書込み要求のあったデータを、書込み済みデータの管理単位領域とは別の管理単位領域に重複して書込み、別の管理単位領域に書込んだデータの論理アドレスと物理アドレスを対応づけて記憶し、その後、続けてホストから書込みコマンドを受けたときに、ホストからの論理アドレスの変化の状況に応じて書込みモードを選択的に切り替え、所定範囲に含まれる論理アドレスに対しては、所定範囲に含まれない論理アドレスに対する書込みモードとは異なる書込みモードを選択する。
【００１２】
本発明によれば、不揮発性メモリ内のある論理アドレスに対してデータが書込まれた後、同じ論理アドレスに対して再度データが書込まれる場合に、物理アドレス上で前に書込まれたデータを消去せず保持したまま、前にデータが書込まれた物理領域と異なる物理領域に新たにデータを書込む重複書込みを許可する。これにより、不揮発性メモリ特有の、データの更新に伴うコピー、消去処理の回数を低減でき、書込み効率を向上できる。さらに、書込みアドレスの変化の状況に応じて書込みモードを選択的に切り替えるので、ホストからの書込み要求の種類（連続アクセス、ランダムアクセス）に依存せずに、より最適な方法で書込み処理を実行できる。
【発明を実施するための最良の形態】
【００１５】
以下、添付の図面を参照し、本発明に係る不揮発性記憶装置の一実施形態であるメモリカード及びその書込み方法について説明する。
【００１６】
１．  メモリカードの構成
図１Ａに本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す。メモリカード１０１はホスト１０２からデータの読み出し、書込みが可能な記憶装置である。メモリカード１０１は、不揮発性の記憶素子であるフラッシュメモリ１０３と、フラッシュメモリに対するデータの書込み、読み出しを制御するコントローラ１０４と、消去済みテーブル１０５と、論物変換テーブル１０６と、重複テーブル１０７と、ＦＡＴ領域変換テーブル１０８とを備える。
【００１７】
フラッシュメモリ１０３はここでは１２８ＭＢの容量を持つ。但し、フラッシュメモリ１０３の容量はこれに限定されず、また、複数のフラッシュメモリを備えても良い。コントローラ１０４は、ホスト１０２からの書込みと読み出し命令を受けてフラッシュメモリ１０３へのデータの格納、または、フラッシュメモリ１０３からのデータの読み出しを制御する。
【００１８】
フラッシュメモリ１０３に格納されるデータは、ファイルシステムの１つであるＦＡＴファイルシステムにより管理される。ＦＡＴファイルシステムは、ファイル管理情報（以下「ＦＡＴ情報」という。）として、データ記録領域を複数のパーティションと呼ばれる領域に分割して管理するための情報を格納するマスターブートレコード・パーティションテーブル、１つのパーティション内の管理情報を格納するパーティションブートセクタ、ファイルに含まれるデータの格納位置を示すＦＡＴテーブル１及びＦＡＴテーブル２、並びにルートディレクトリ直下に存在するファイル及びディレクトリの情報を格納するルートディレクトリエントリを含む。なお、ファイルシステムは他の種類のものでもよい。
【００１９】
消去済みテーブル１０５はフラッシュメモリ１０３内部の物理ブロックのそれぞれ消去済であるか、または、書込み済みであるかを示す情報を格納する。論物変換テーブル１０６は、ホスト１０２が指定するアドレス（以下「論理アドレス」という。）と、フラッシュメモリ１０３内部のアドレス（以下「物理アドレス」という。）との変換を行うテーブルである。
【００２０】
論物変換テーブル１０６は、論理グループアドレスに対応するアドレスの領域に、その論理グループに対応する物理ブロックのアドレスを格納する。論物変換テーブル１０６の簡単な構成を図１Ｂに示す。論物変換テーブル１０６は論理グループアドレスをテーブルのアドレスとして論理アドレスに対応する物理アドレスをテーブルのデータとして持つ。対応する物理ブロックが存在しない場合には無効値（本実施の形態では０ｘ００００）をデータとして持つ。論物変換テーブル１０６は論理ブロック１〜９９９に対応する領域と論理グループ０−０〜０−３に対応する２つの領域からなる構成を取る。これは後述するが、論理アドレスをＦＡＴ領域とデータ領域に分割して取り扱う本発明の特徴に起因する。
【００２１】
本実施形態では、フラッシュメモリ１０３において、ある物理ブロックＡに既に書込み済みであるデータと同じ論理アドレスを持つ別のデータを、物理ブロックＡとは異なる物理ブロックＢに書込むこと（以下、これを「重複書込み」という。）を許容する。重複テーブル１０７は、このような重複書込みされたデータに関する物理アドレスと論理アドレス間の対応情報を格納するテーブルである。ＦＡＴ領域変換テーブル１０８は、フラッシュメモリ１０３における、ＦＡＴ１，ＦＡＴ２等のＦＡＴ情報を格納する領域の境界セクタに関する情報を格納する。
【００２２】
すなわち、本実施形態のメモリカード１０１は、フラッシュメモリ１０３において、ある論理アドレスに対応した物理アドレスにデータが書込まれた後、同じ論理アドレスに対して再度データが書込まれる場合に、前に書込まれたデータを物理的に消去せず保持したまま、前にデータが書込まれた物理ブロックと異なる物理ブロックにデータを書込むことを可能とする。メモリカード１０１は、新たに書込んだデータの論理アドレスと物理アドレスを重複テーブル１０７に格納するとともに、前にデータが書込まれた物理ブロックと後にデータが書込まれた物理ブロックの対応関係をも重複テーブルに格納する。すなわち、重複テーブル１０７は、データが書込まれた論理アドレスと、その論理アドレスに対して以前にデータが書込まれた物理領域（転送元）と、その論理アドレスに対して後にデータが書込まれた物理領域（転送先）とに関する情報を互いに関連づけて格納する。
【００２３】
また、言い換えると、重複テーブル１０７は、フラッシュメモリ１０３の物理領域に対してのみデータが書込まれ、未書込みの物理ページを残している物理ブロック（転送先）に書込まれたデータに関する情報を格納するテーブルである。重複テーブル１０７は、未書込み領域をもつ物理ブロック（転送先）のブロックアドレス、旧データがある物理ブロック（転送元）のブロックアドレスや、そこに書込まれたデータの論理グループアドレス等の情報を格納する、とも言える。
【００２４】
図２はフラッシュメモリ１０３の内部の構成を示す図である。フラッシュメモリ１０３の記録領域は複数の物理ブロック２０１から構成される。物理ブロック２０１は１２８ｋＢの大きさを持ちデータを一括に消去できる消去単位である。本実施形態では１物理ブロックをデータの管理単位として扱うが、複数の物理ブロックをまとめて管理単位として扱ってもよい。
【００２５】
図３は物理ブロック２０１の内部の構成を示す図である。物理ブロック２０１は複数の物理ページ３０１から構成される。物理ページ３０１は、データを書込む際の書込み単位であり、２ｋＢの大きさを持つ。ホスト１０２が論理的にデータの書込みを行う単位であるクラスタは１６ｋＢであるが、この値は物理ブロック２０１の容量１２８ｋＢとも物理ページ３０１の容量２ｋＢとも一致しない。そのため、連続する８ページ分の物理ページにより容量１６ｋＢの部分物理ブロックを構成する。部分物理ブロック（１６ｋＢ）はホストからのデータの書込みを想定してコントローラ１０３が論理的に扱うデータの単位である。１つの物理ブロック２０１は８つの部分物理ブロックからなり、その部分物理ブロック単位でホスト１０２からのデータが書込まれる。
【００２６】
図４はメモリカード１０１の内部における論理的なデータの管理を示した図である。メモリカード１０１に搭載されているフラッシュメモリ１０３の記憶容量は１２８ＭＢである。一般的にフラッシュメモリ１０３には初期不良ブロックや、書き換えを繰り返すことにより不良ブロックが発生することがあるため、予めやや少な目の容量をメモリカード１０１の容量とする。本例では、ホスト１０２が認識できる容量は１２５ＭＢとする。ホスト１０２から書込みを行う単位である１６ｋＢ単位を論理ブロック４０２とし、メモリカード１０１の１２５ＭＢの容量において、０から順に７９９９まで割り当てている。この論理ブロック８個で、フラッシュメモリ１０３の消去単位である物理ブロックと等しい１２８ｋＢ単位の論理グループを構成する。
【００２７】
図５は重複テーブル１０７の構成を示した図である。重複テーブル１０７は、フラッシュメモリ１０３内の主としてＦＡＴ情報を格納する領域（以下「ＦＡＴ領域」という。）に対する重複情報（ＦＡＴ重複情報）１０７ａと、ユーザデータを格納する領域（以下「データ領域」という。）に対する重複情報１０７ｂとを格納する。本例では、ＦＡＴ領域に対する重複情報１０７ａは、４つのレコード（ＦＡＴ重複情報０〜３）を有し、データ領域に対する重複情報は８つのレコード（重複情報０〜７）を有するが、重複情報のレコード数はこれに限られない。
【００２８】
図６（ａ）にＦＡＴ重複情報１０７ａの構成を示す。ＦＡＴ重複情報１０７ａにおいて、「転送先物理ブロックアドレス」は、転送先の物理ブロックのアドレスを格納する。「転送先アロケーション物理ページ」は、転送先として割当てられた物理ページの番号を格納する。ＦＡＴ重複情報１０７ａは転送元に関する情報を格納していない。これは、後述するように、ＦＡＴ領域については、前にデータが書込まれた物理ブロックと同じ物理ブロック内に後のデータが書込まれるため、転送元の物理ブロックと転送先の物理ブロックが同じになるからである。
【００２９】
図６（ｂ）にデータ領域に対する重複情報１０７ｂの構成を示す。重複情報１０７ｂにおいて、「論理ブロックアドレス」のフィールドは、書込みデータの論理ブロックのアドレスを格納する。「転送元物理ブロックアドレス」のフィールドは、転送元の物理ブロックのアドレスを格納する。「転送先物理ブロックアドレス」のフィールドは、転送先の物理ブロックのアドレスを格納する。「転送先先頭ページ論理アドレス」のフィールドは、転送先の物理ブロックの先頭ページに格納されたデータの論理アドレスを格納する。
【００３０】
「転送先次書込み論理アドレス」のフィールドは、転送先の物理ブロックにおいて次に書込まれるデータの先頭データの論理アドレスを格納する。すなわち、転送先の物理ブロックにおいて最後に書込まれたデータの論理アドレスの次のアドレスを格納する。「転送先次書込み物理アドレス」のフィールドは、転送先の物理ブロックにおいて次に書込みを行うときの先頭の物理アドレスを格納する。すなわち、転送先の物理ブロックにおいて消去済み領域の先頭の物理アドレスを格納する。
【００３１】
「転送先書込みモード」のフィールドは、書込みモードを示す値を格納する。書込みモードには、「連続モード」、「上書きモード」、「ランダムモード」の３種類がある。各モードを示す値は以下のとおりである。
連続モード：０ｘ００００ｈ
上書きモード：０ｘＦＦＦＦｈ
ランダムモード：上記以外（ランダムモードでの書込み周期）
【００３２】
「転送先有効オフセット物理アドレス」のフィールドは、転送先物理ブロックにおいて最後に書込まれたデータについての、転送先物理ブロック先頭からのオフセット値を格納する。
【００３３】
図７にフラッシュメモリ１０３の記憶領域のページのデータフォーマットを示す。各ページは、そのページについての管理情報を格納する管理領域と、データを格納するセクタデータ領域とを有する。管理領域は、集約フラグ、論理ブロックアドレス、論理セクタアドレス、管理領域のＥＣＣ（Error Correction Code）等が格納される。セクタデータ領域には、セクタデータと、セクタＩＤと、セクタデータとセクタＩＤについてのＥＣＣとが格納される。
【００３４】
図８に書込み単位配置テーブルの構成を示す。書込み単位配置テーブル１５０はフラッシュメモリ１０３内の管理領域に格納される。書込み単位配置テーブル１５０はランダムモードでの書込みとＦＡＴ書込みの際に使用される。
【００３５】
ランダムモードでの書込みでは「書込み単位」のフィールドは、ランダムモードで書込みを行うときの最小の書込みデータサイズを格納する。この書込み単位より小さいデータサイズでの書込みは禁止される。書込み単位は、例えば、０ｘ００１０ｈ（１６セクタ）、０ｘ００２０ｈ（３２セクタ）、０ｘ００４０ｈ（６４セクタ）に設定される。１物理ブロック（＝６４ページ）に含まれる書込み単位の数は、書込み単位の大きさにより異なる。例えば、書込み単位の値が０ｘ００２０ｈ（３２セクタ（＝８ページ））であれば、１物理ブロック内に８個の書込み単位が含まれる。図８は、書込み単位の値が０ｘ００１０ｈ（１６セクタ（＝４ページ））の場合の単位配置テーブル１５０の構成を示す。この場合、１物理ブロック内に１６（Ｆ）個の書込み単位（書込み単位０〜書込み単位Ｆ）が含まれる。「書込み単位０先頭アドレス」のフィールドは、１６個の書込み単位のうちの第１番目の書込み単位のデータが書込まれた領域の先頭物理アドレスの値を格納する。「書込み単位ｎ先頭アドレス」のフィールドは、第ｎ＋１番目の書込み単位が書込まれた領域の先頭物理アドレスの値を格納する。
【００３６】
ＦＡＴ書込みでは「書込み単位」のフィールドは、書込みを行う論理グループによる固定値となる（図２３Ａの書込み単位のサイズ）。従って１物理ブロック（＝６４ページ）に含まれる書込み単位の数も論理グループにより異なる。
【００３７】
２．  メモリカードの動作
上記の構成を有するメモリカード１０１の動作を以下に説明する。
【００３８】
２．１  書込み動作
本実施形態のメモリカードによるフラッシュメモリ１０３への書込み処理について図９、図１０を参照して説明する。
【００３９】
図９において、メモリカード１０１のコントローラ１０４は、ホスト１０２から書込みコマンドを受信すると、ホスト１０２から指定された書込み論理アドレスに基づきフラッシュメモリ１０３においてデータを書込むべき領域がＦＡＴ領域かデータ領域かを判定する（Ｓ１１）。ＦＡＴ領域であれば、図１０に示す処理を実行する（詳細は後述する）。なお、ホスト１０２はデータ書込み領域を論理セクタアドレスで指定する。
【００４０】
データ領域であれば、コントローラ１０４は重複テーブル１０７を参照し、指定された論理アドレスの登録があるか否かを判断する（Ｓ１２）。この判断は、重複テーブル１０７の重複情報の「論理ブロックアドレス」を参照し、その値がホスト１０２により指定された論理ブロックアドレスと等しいか否かを判断して行われる。ここで、論理ブロックアドレスは、論理セクタアドレスを管理単位であるフラッシュメモリの物理ブロックサイズで除した商として得られる。
【００４１】
重複テーブル１０７に登録がない場合、重複テーブル１０７での登録位置を決定した後（Ｓ２３）、物理ブロックへの新規書込みを行う（Ｓ２４）。これらの処理の詳細は後述する。
【００４２】
重複テーブル１０７に登録がある場合、転送先の物理ブロックにおいて未書込みの領域（消去済み領域）があるか否かを判断する（Ｓ１３）。これは、重複情報１０７ｂの「転送先次書込み物理アドレス」フィールドの値から判断できる。すなわち、「転送先次書込み物理アドレス」フィールドの値が、０ｘ０１００（物理ブロックのサイズ）よりも小さければ、未書込み領域があると判断し、０ｘ０１００と同じであれば、未書込み領域がないと判断する。
【００４３】
未書込みページがない場合、集約処理を行い（Ｓ１８）、未書込みページがある場合、重複情報１０７ｂの「転送先書込みモード」フィールドの値から書込みモードを判定する（Ｓ１４）。
【００４４】
書込みモードがランダムモードの場合、まずランダム書込みが可能か否かを判断する（Ｓ１５）。この判断は以下のように行う。重複情報１０７ｂの「書込みモード」の値が”連続モード”であるときは、「転送先次書込み物理アドレス」が、書込み周期（例えば、０ｘ００４０）以下のときに、ランダム書込み「可」と判断する。それ以外は、ランダム書込み「不可」と判断する。ここで、書込み周期とは、書込みを行う際の所定のデータサイズであり、書込み周期より小さいデータサイズでの書込みは不可能となる。「書込みモード」の値が”上書きモード”であるときは、「転送先先頭ページ論理アドレス」と「転送先次書込み論理アドレス」との差分が、書込み周期（例えば、０ｘ００１０、０ｘ００２０又は０ｘ００４０）に一致するときに、ランダム書込み「可」と判断する。それ以外は、ランダム書込み「不可」と判断する。
【００４５】
ランダム書込みが可能であれば、ランダム書込みを行う（Ｓ１６）。ランダム書込みが不可能であれば、集約処理を行う（Ｓ１８）。
【００４６】
書込みモードが上書きモードの場合、まず上書き書込みが可能か否かを判断する（Ｓ１９）。この判断は以下のように行う。重複情報１０７ｂの「書込みモード」の値が”連続モード”であるときは、ホスト１０２により指定された論理アドレスが「転送先先頭ページ論理アドレス」以上のときに、上書き書込み「可」と判断する。それ以外は、上書き書込み「不可」と判断する。「書込みモード」の値が”上書きモード”であるときは、ホスト１０２により指定された論理アドレスが「転送先先頭ページ論理アドレス」以上でかつ「転送先次書込み論理アドレス」よりも小さなときに、上書き書込み「可」と判断する。それ以外は、上書き書込み「不可」と判断する。
【００４７】
上書き書込みが可能であれば、上書き書込みを行う（Ｓ２０）。上書き書込みが不可能であれば、ステップＳ１５に進む。
【００４８】
書込みモードが連続モードの場合、まず連続書込みが可能か否かを判断する（Ｓ２１）。重複情報１０７ｂの「転送先次書込み論理アドレス」の値が、ホスト１０２により指定された論理アドレスよりも小さいときに、連続書込み「可」と判断する。それ以外は、連続書込み「不可」と判断する。連続書込みが可能であれば、連続書込みを行う（Ｓ２２）。連続書込みが不可能であれば、ステップＳ１９に進む。
【００４９】
書込み処理（Ｓ１６、Ｓ２０、Ｓ２２、Ｓ２４）が終了すると、ホスト１０２からの書込みデータの転送が継続しているか否かを判断する（Ｓ１７）。ホスト１０２から終了を示すコマンドが送信されたときは、処理を終了し、そうでなければ、ステップＳ１１に戻り、上記処理を繰り返す。
【００５０】
本実施形態のメモリカード１０１は以上のように、直前の書込みアドレスとは関連性のない任意の論理アドレス領域に書込みを行うランダムモードと、直前に書込みを行った論理アドレス領域と同じ論理アドレス領域に書込みを行う上書きモードと、連続した論理アドレス領域に書込みを行う連続モードとを有し、これらのモードを、ホストから受けた論理アドレスの変化の状況に応じて選択的に切り替える。このように書込みモードを切り替えることで、書込み状況に応じた最適な書込み処理が実現され、書込み処理の効率を向上できる。
【００５１】
なお、本実施形態のメモリカードは３つの書込みモードを有しているが、これらの書込みモードは全て備えていなくてもよく、アプリケーションに応じて１つ又は２つの書込みモードのみを備えてもよい。
【００５２】
以下、各書込み処理についてより具体的に説明する。
【００５３】
２．１．１  連続書込み
本実施形態における連続書込み処理の概念を説明する。本実施形態における連続書込み処理の概念を説明する前に、従来の書込み処理によるフラッシュメモリ内部のデータ配置の変化を説明する。
【００５４】
図１１Ａに示すようにデータの消去、書込みが行われる場合を検討する。図１１Ａ（ａ）の状態では、データ領域において、クラスタ２とクラスタ３にファイル１が書込まれ、クラスタ４にファイル２が書込まれ、クラスタ５とクラスタ６にフィル３が書込まれクラスタ７にファイル４が書込まれ、クラスタ８とクラスタ９にファイル５が書込まれている。
【００５５】
この状態からホスト１０２によってファイル１，３，５が消去された状態を図１１Ａ（ｂ）に示す。ホスト１０２は、フラッシュメモリ１０３内のデータ領域に対しては何らデータの書込み・消去を行わず、ＦＡＴ１において、ファイル１，３，５に関連するクラスタの値を全て”００００”に書き換えることによってファイル１，３，５を論理的に消去する。それにより、データ領域のファイル１，３，５があった領域は、ホスト１０２により空き領域として認識される。
【００５６】
この状態からホスト１０２が容量９６ＫＢの新ファイルを書込んだ後の状態が図１１Ａ（ｃ）である。ＦＡＴ１において空き領域を示す”００００”が書かれたクラスタに対して新ファイルを書込む。
【００５７】
以上のようにしてホスト１０２はメモリカード１０１に書込んだファイルを消去し、また新たなファイルを書込む。
【００５８】
図１１Ａの消去・書込み処理に対してメモリカード１０１内部での従来の処理について図１１Ｂを用いて説明する。
【００５９】
図１１Ｂ（ａ）はフラッシュメモリ１０３内部におけるデータ構成を示したものであり、物理ブロック１００にファイル１〜５が書込まれている。物理ブロック１０１〜１０４は消去済みブロックである。この状態からファイル１，３，５が論理的に消去された図１１Ｂ（ｂ）の状態になっても、この物理ブロック１００の状態は変わらず図１１Ｂ（ａ）の状態のままである。
【００６０】
次にホスト１０２が新ファイルをメモリカード１０１に書込む場合、新ファイルを書込むべきクラスタは３つの部分（クラスタ２と３、クラスタ５と６、クラスタ８と９）に分かれているので、ホスト１０２は３回に分けてメモリカード１０１に対してデータを書込む必要がある。
【００６１】
まず、別の消去済み物理ブロック１０１において、消去されたファイル１に対応する領域に新ファイルの一部を書込み、残りの領域にファイル２〜５をコピーする。そして書込み後に物理ブロック１００を物理的に消去する。これにより図１１Ｂ（ｂ）の状態になる。
【００６２】
次に、別の消去済み物理ブロック１０２において、消去されたファイル３に対応する領域に新ファイルのデータの一部を書込むとともに、それ以外の領域には物理ブロック１０１からデータをコピーする。その後、物理ブロック１０１を物理的に消去する。これにより図１１Ｂ（ｃ）の状態になる。
【００６３】
さらに、別の消去済み物理ブロック１０３において、消去されたファイル５に対応する領域に新ファイルのデータの一部を書込むとともに、それ以外の領域には物理ブロック１０２からデータをコピーする。その後、物理ブロック１０２を物理的に消去する。これにより図１１Ｂ（ｄ）の状態になる。
【００６４】
以上のように、従来では、１つの論理グループ内の書込みであるにもかかわらず、３つの物理ブロックに対して書込み・消去を行う必要があり、書き込み処理に時間がかかった。
【００６５】
次に、本実施形態による上書き書込みの動作について図１１Ｃを用いて説明する。
図１１Ｃ（ａ）に示すように、最初、物理ブロック９９にファイル１〜５のデータが格納されている。物理ブロック１００〜物理ブロック１０２は消去済みブロックである。この状態で、新ファイルを、ファイル１、ファイル３、ファイル５がそれぞれ記録された論理アドレス領域と同じ論理アドレス領域に分けて書込む場合を考える。メモリカード１０１は、消去済みテーブル１０５を参照して、消去済みの物理ブロック１００を検索し、その物理ブロック１００に新ファイルの一部を記録する（図１１Ｃ（ｂ）参照）。その時点で重複テーブル１０７において新ファイルについて論理アドレスと物理アドレスの対応づけを行うとともに、新ファイルとファイル１の物理アドレスの対応づけを行う。このとき、論理ブロック９９は変更されない。続いて、物理ブロック１００においてファイル３に対応する位置に次の新ファイルの一部を記録する。その際、物理ブロック９９におけるファイル２のデータをコピーした後、書込む（図１１Ｃ（ｃ）参照）。その時点で重複テーブル１０７において新ファイルについて論理アドレスと物理アドレスの対応づけを行うとともに、新ファイルとファイル３の物理アドレスの対応づけを行う。同様に、物理ブロック１００において、ファイル４のデータをコピー後、新ファイルの一部を書込み後、物理ブロック９９を消去する（図１１Ｃ（ｄ）参照）。この時点で、重複テーブル１０７において物理ブロック９９と物理ブロック１００の対応づけを解消する。
【００６６】
以上のように、重複テーブル１０７によって、既に書込まれたデータと同じ論理アドレスを持ち、異なる物理ブロックに書込まれた新たなデータについて、論理アドレスと物理アドレスの対応づけを行うとともに、前に書込まれたデータと新たに書込んだデータの物理ブロック間の対応付けを行っている。このような重複テーブル１０７を備えることにより、データの上書きによる別の物理ブロックへのデータのコピー及び消去の回数を低減でき、書込み効率を向上できる。
【００６７】
図１２のフローチャートを参照し、連続書込み処理の詳細を説明する。
最初に、直ちに、連続書込み可能か否かを判断する（Ｓ５１）。具体的には、登録されている重複情報１０７ｂの「転送先次書込み論理アドレス」が、ホスト１０２が指定する論理アドレスに等しい場合に、直ちに連続書込み可能と判定する。ホスト１０２が指定する論理アドレスよりも小さいときは、「不可」と判定する。
【００６８】
書込み「不可」である場合、「転送先次書込み物理アドレス」の示すアドレスから、ホスト１０２が指定する論理セクタアドレスの前までの領域に、転送元の物理ブロックにおける対応するデータをコピーする（Ｓ５２）。この際、書込み状況にしたがい重複情報１０７ｂの「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
【００６９】
その後、ホスト１０２から転送されたデータを指定された領域にページ単位で書込む（Ｓ５３）。この際、書込み状況にしたがい重複情報１０７ｂの「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
【００７０】
ホスト１０２からの書込みデータの転送が終了したか否かを判定する（Ｓ５４）。ホスト１０２から終了を示すコマンドが送信されたときに、書込みデータが終了したと判定する。ホスト１０２からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し（Ｓ５５）、同じ論理グループであれば、データの書込みを継続する（Ｓ５３）。「転送先次書込み論理アドレス」が０ｘ０１００であれば、異なる論理グループと判断し、０ｘ０１００以下であれば同じ論理グループであると判断する。異なる論理グループであれば処理を終了する。
【００７１】
２．１．２  上書き書込み
図１３を参照し、本実施形態における上書き書込み処理の概念を説明する。図１３（ａ）を参照し、物理ブロック１００の論理ブロック８〜１５のそれぞれにデータが格納されている場合に、ホスト１０２からの論理ブロック１０に対する書込みに対して、コントローラ１０４は論理ブロック１０が属する論理グループ０に対応する物理ブロック１００を論物変換テーブル１０６から得る。そして消去済みテーブル１０５から消去済みのブロックである物理ブロック１０１を得る。そしてホスト１０２からのデータを論理ブロック１０として書込み、まだ未書込みのページを残した物理ブロック１０１に関する情報を重複テーブル１０７に格納する。
【００７２】
この後、さらにホスト１０２が同一の論理ブロックである論理ブロック１０に対して書込みを行う場合、コントローラ１０４は論理ブロック１０が属する論理グループ０に対応する物理ブロック１００を論物変換テーブル１０６から得る。そして、重複テーブル１０７を参照して、未書込みのページを持ち、かつ、同じ論理グループ０のデータが書込み済みである物理ブロック１０１を得る、そしてホスト１０２からのデータを、論理ブロック１０として書込み、まだ未書込みのページを残した物理ブロック１０１に関する情報を重複テーブル１０７に格納して書込みを終える。この状態が図１３（ｂ）に示した状態である。この処理に要する時間も同様に２８８０μｓである。
【００７３】
さらに、この後、連続してホスト１０２から同一の論理ブロックである論理ブロック２に対して複数回の書込みを行った後の状態を示した図が図１３（ｃ）である。
【００７４】
以上のように本実施の形態では、同一の論理ブロックに対する書込みが連続して発生した場合に、１つの物理ブロックに対して続けて、かつ、書込みが発生した論理ブロックに対してのみ書込み行う。これにより、論理ブロックの書き換えに要する時間を低減できる。
【００７５】
図１４のフローチャートを参照し、上書き書込み処理の詳細を説明する。最初に、上書きモードに設定する（Ｓ６１）。重複情報１０７ｂの「転送先書込みモード」フィールドの値を”上書きモード”を示す値に設定する。
【００７６】
そして、連続モードからの移行か否かを判断する（Ｓ６２）。この判断は、重複情報１０７ｂの「転送先書込みモード」を参照して行われる。連続モードからの移行であれば、直ぐにホストデータを書込み可能か否かを判断する（Ｓ６３）。この判断は、以前の書込みにおいて、書込み周期を満たすように、書込みがなされているか否かを判断することにより行う。すなわち、書込み対象の物理ブロックにおいてデータ書込み済みの領域の境界が、書込み周期にアライメントされているかを判断する。具体的には、既に書込み済みのページの合計のサイズが２のべき乗の値となるか否かを判断する。より具体的には、重複情報１０７ｂの「転送先次書込み物理アドレス」が、０ｘ０００４、０ｘ０００８、０ｘ００１０、０ｘ００２０、０ｘ００４０、０ｘ００８０のいずれかであれば、直ぐに上書き可能であると判定し、上記以外の時には不可と判定する。
【００７７】
直ぐに書込みが不可の場合、周期を満たすように不足分のデータを、書込み対象のブロックにコピーする（Ｓ６４）。すなわち、転送元物理ブロックから転送先物理ブロックへ、論理ブロックが連続になるように、「転送先次書込み物理アドレス」が示すアドレスから、書込み後のページ数のサイズが２のべき乗となるアドレスまでのデータをコピーする。この際、書込み状況に応じて「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
【００７８】
次に、有効オフセットを設定する（Ｓ６５）。「転送先有効オフセット物理アドレス」に「転送先次書込み物理アドレス」の値を書込む。
【００７９】
その後、直ぐにホストデータを書込み可か否かを判断する（Ｓ６６）。登録されている重複情報の「転送先先頭ページ論理アドレス」とホストが指定する論理セクタアドレスとが同じページに属していれば、書込み可と判定し、属していなければ書込み不可と判定する。
【００８０】
不可と判定されたときは、書込みデータの前のデータを書込み対象ブロックにコピーする（Ｓ６７）。「転送先先頭ページ論理アドレス」フィールドが示すアドレスからホスト１０２が指定するセクタアドレスの直前までのデータを、転送元物理ブロックから転送先物理ブロックへコピーする。この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
【００８１】
そして、ホスト１０２から転送されたデータをページ単位で書込む（Ｓ６８）。この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
【００８２】
ホスト１０２からの書込みデータの転送が終了したか否かを判定する（Ｓ６９）。ホスト１０２からのデータ転送が終了している場合、上書き周期分の残りのデータを書込み対象ブロックにコピーする（Ｓ７０）。ホスト１０２からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し（Ｓ７１）、同じ論理グループであれば、データの書込みを継続する（Ｓ６８）。異なる論理グループであれば処理を終了する。
【００８３】
２．１．３  ランダム書込み
本実施形態において、ランダム書込みとは、転送先物理ブロックにおいて既に書込まれたデータの論理アドレスと、新たに書込もうとするデータの論理アドレスとが、連続でもなく、重複もしない場合の書込みである。
【００８４】
図１５のフローチャートを参照し、ランダム書込み処理の詳細を説明する。最初に、重複情報１０７ｂの「転送先書込みモード」を参照してランダムモードであるか否かを判断する（Ｓ８１）。
【００８５】
ランダムモードでなければ、ホストデータを直ぐに書込み可能か否かを判断する（Ｓ８２）。この判断は、上書き書込みの場合と同様、以前の書込みにおいて、書込み周期を満たすように、書込みがなされているか否かを判断することにより行う。直ぐに書込みが不可の場合は、周期を満たすように不足分のデータを、書込み対象のブロックにコピーする（Ｓ８３）。
【００８６】
その後、ランダムモードに設定する（Ｓ８４）。重複情報１０７ｂの「転送先書込みモード」の値が”上書きモード”のときは、「転送先書込みモード」に「転送先次書込み物理アドレス」の値を書込む。
【００８７】
次に、有効オフセットを設定する（Ｓ８５）。「転送先有効オフセット物理アドレス」に「転送先次書込み物理アドレス」の値を書込む。
【００８８】
その後、直ぐにホストデータを書込み可か否かを判断する（Ｓ８６）。ホスト１０２が指定する論理セクタアドレスを、重複情報１０７ｂの「転送先書込みモード」の値で割った剰余が、１ページサイズ未満(０ｘ０００３未満)であれば、直ぐに書込み可と判定する。上記以外は不可と判定する。
【００８９】
不可と判定されたときは、書込みデータの前のデータを書込み対象ブロックにコピーする（Ｓ８７）。ホスト１０２の指定するセクタアドレスを「ランダム書込み」の書込み単位でグループ化したときの先頭のアドレスから、ホスト１０２の指定するセクタアドレスの直前までのデータを、転送先物理ブロックへコピーする。
この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
【００９０】
その後、有効オフセットを設定する（Ｓ８８）。「転送先次書込み物理アドレス」が「転送先書込みモード」で割り切れる時には、「転送先有効オフセット物理アドレス」に「転送先次書込み物理アドレス」を書込む。
【００９１】
ホスト１０２から転送されたデータをページ単位で書込む（Ｓ８９）。この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
【００９２】
ホスト１０２からの書込みデータの転送が終了したか否かを判定する（Ｓ９０）。ホスト１０２からのデータ転送が終了している場合、書込み周期分の残りのデータを書込み対象ブロックにコピーする（Ｓ９１）。ホスト１０２からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し（Ｓ９２）、同じ論理グループであれば、データの書込みを継続する。異なる論理グループであれば処理を終了する。
【００９３】
２．１．４  新規書込み
ステップＳ１２において、重複テーブル１０７に登録がない場合、重複テーブル１０７での登録位置を決定した後（Ｓ２３）、物理ブロックへの新規書込みを行う（Ｓ２４）。これらの処理の詳細を説明する。
【００９４】
図１６を参照し、ステップＳ２３の重複テーブルの登録位置の決定処理の詳細を説明する。重複テーブル１０７の中で最も以前に使用された重複情報を求める（Ｓ１２１）。この処理は重複テーブル１０７において、これから書込むデータ用の空きレコードを確保するための候補を決定するもので、重複情報０〜７のうちひとつを選択できればよい。ここではＬＲＵ(Least Recently Used)に従った決定方法を使用している。
【００９５】
その求めた重複情報が有効か否かを判断する（Ｓ１２２）。有効であれば、集約処理を行う（Ｓ１２３）。求めた重複情報の「論理ブロックアドレス」の値が０ｘＦＦＦＦ以外であれば有効と判定し、０ｘＦＦＦＦであれば無効と判定する。なお、０ｘＦＦＦＦは、重複情報が初期化されたときに「論理ブロックアドレス」に設定される値である。
【００９６】
図１７を参照し、ステップＳ２４の新規書込み処理の詳細を説明する。まず、重複テーブル１０７への登録を行う（Ｓ４１）。このとき、重複情報１０７ｂの各フィールドの初期化を行う。「論理ブロックアドレス」にはホストの指定する論理ブロックアドレスを登録する。「転送元物理ブロックアドレス」には、ホスト１０２の指定する論理ブロックアドレスに対応するデータが書きこまれている物理ブロックアドレス、即ち、論物変換テーブルからホスト１０２の指定する論理ブロックアドレスを基に得られるアドレスを登録する。「転送先物理ブロックアドレス」には、消去済みの物理ブロックアドレスを消去済みテーブルから検索して登録する。この際、消去済みテーブルの該当ビットは書込み済みを示す状態に書き換える。「転送先先頭ページアドレス」には、ホスト１０２の指定する論理セクタアドレスを登録する。
【００９７】
ホスト１０２から転送されたデータをページ単位で書込む（Ｓ４２）。状況に応じて「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
【００９８】
ホスト１０２からの書込みデータの転送が終了したか否かを判定する（Ｓ４３）。ホスト１０２からのデータ転送が終了している場合、処理を終了する。ホスト１０２からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し（Ｓ４４）、同じ論理グループであれば、データの書込みを継続する（Ｓ４２）。異なる論理グループであれば処理を終了する。
【００９９】
２．１．５  集約処理
集約処理について説明する。集約処理とは、転送元ブロックのデータと転送先ブロックのデータの重複関係を解消するための処理である。
【０１００】
図１８は、連続モードの場合の集約処理を説明するための図である。図１８（ａ）に示すように転送元物理ブロック９９と転送先物理ブロック１００がある場合、これらのブロックが図１８（ｂ）に示すように転送先物理ブロック１００に集約され、転送元物理ブロック９９のデータは消去される。このとき、転送先物理ブロック１００においては、元々記録されていた論理ブロック１０に続いて転送元物理ブロック９９から論理ブロック１０に連続する論理ブロック１１〜１５がコピーされ、論理ブロック１５の後に論理ブロック８、９がコピーされる。
【０１０１】
また、図１９は、上書きモード、ランダムモードの場合の集約処理を説明するための図である。この例では、転送元物理ブロック９９と転送先物理ブロック１００から、消去済みの物理ブロック１０１に対して、それぞれ論理ブロックのデータをコピーし、その後、転送元物理ブロック９９と転送先物理ブロック１００のデータを消去する。
【０１０２】
以上のように、集約処理により、複数の論理ブロックに亘り書込まれていたデータを１つの論理ブロックにまとめることができる。
【０１０３】
図２０、図２１のフローチャートを参照し、図９のステップＳ１８の集約処理について説明する。重複情報１０７ｂの「転送先書込みモード」の値から書込みモードを判定する（Ｓ１０１）。書込みモードが上書きモード、ランダムモードであれば、図２１の処理を行う。
【０１０４】
書込みモードが連続モードであれば、転送元ブロックから転送先ブロックへデータの一部をコピーする（Ｓ１０２）。具体的には、「転送先次書込み論理アドレス」の値を含むページのデータを、転送元物理ブロッから転送先物理ブロックへコピーする。この際、書込み状況に応じて「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
【０１０５】
転送先物理ブロックにおいて最終ページまで書込まれたか否かを判断する（Ｓ１０３）。最終ページまで書込みがなされた場合は、転送元物理ブロックのデータを消去する（Ｓ１０６）。「転送元物理ブロックアドレス」で示されるフラッシュメモリの物理ブロックのデータを消去する。この際、消去済みテーブル１０５の該当ビットは消去済みを示す状態に書き換える。
【０１０６】
その後、各種のテーブルを更新する（Ｓ１０７）。すなわち、集約された物理ブロック（転送先物理ブロック）について論理アドレスと物理アドレスの対応を論物変換テーブル１０６に登録する。具体的には、論物変換テーブル１０６の「論理ブロックアドレス」の値を、「転送先物理ブロックアドレス」の値に書き換える。また、重複情報１０７ｂの各フィールドの無効化を行う。具体的には、「論理ブロックアドレス」には０ｘＦＦＦＦ（無効を意味する値）を登録する。「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」、「転送先次書込み物理アドレス」、「転送先書込みモード」、及び「転送先有効オフセット物理アドレス」の各々に０ｘ００００を登録する。
【０１０７】
一方、最終ページまで書込みがなされてない場合は、論理ページのオーバーフローを判断する（Ｓ１０４）。具体的には「転送先次書込み論理アドレス」の値が０ｘ０１００のときに、論理ページがオーバーフローと判定し、０ｘ０１００未満のときは、オーバーフローでないと判定する。
【０１０８】
論理ページがオーバーフローのときは、論理ページ番号を０にする（Ｓ１０５）。具体的には、「転送先次書込み論理アドレス」の値に０ｘ００００を設定する。
【０１０９】
ステップ１０１において、書込みモードが上書きモード、ランダムモードの場合の処理を図２１を参照して説明する。
【０１１０】
消去済みテーブル１０５を参照して消去済みブロックを取得し、また、論理ページ番号を０にする（Ｓ１１１）。論理ページ番号を０にするために、「転送先次書込み物理アドレス」を０ｘ００００に設定する。この段階で同じ重複レコードの他のフィールドの"転送先"とは異なる物理ブロックを指し示す状態となる。また、内部的な変数として「集約論理アドレス」を持ち、その値を０ｘ００００に設定する。
【０１１１】
重複情報に基づいて、集約するデータの読み出し先を判定する（Ｓ１１２）。転送元物理ブロックからデータを読み出す場合、転送元物理ブロックから消去済みブロックへデータをコピーする（Ｓ１１３）。すなわち、「転送元物理ブロック」から、消去済みの物理ブロックに、「集約論理アドレス」のデータをコピーする。この際、書込み状況に応じて「転送先次書込み物理アドレス」を更新する。
【０１１２】
転送先物理ブロックからデータを読み出す場合、転送先物理ブロックから消去済みブロックへデータをコピーする（Ｓ１１５）。すなわち、「転送先物理ブロック」から、消去済みの物理ブロックに、「集約論理アドレス」のデータをコピーする。この際、書込み状況に応じて「転送先次書込み物理アドレス」を更新する。
【０１１３】
転送先物理ブロックにおいて最終ページまで書込まれたか否かを判断する（Ｓ１１４）。最終ページまで書込みがなされた場合は、転送元物理ブロックと転送先物理ブロックのデータを消去する（Ｓ１１７）。
【０１１４】
その後、各種のテーブルを更新する（Ｓ１１８）。すなわち、論物変換テーブル１０６の「論理ブロックアドレス」の値を、このフローで取得した消去済みブロックのアドレスに書き換える。また、重複情報１０７ｂの各フィールドの無効化を行う。
【０１１５】
一方、最終ページまで書込みがなされてない場合は、論理ページをインクリメントし（Ｓ１１６）、次の論理ページ（集約論理アドレス）のデータをコピーする。
【０１１６】
２．１．６  ＦＡＴ書込み
図９のフローチャートのステップＳ１１の書込み領域判定において、書込み領域がＦＡＴ領域であると判定された場合の処理を以下に説明する。基本的な処理のフローはランダム書込みと全く同じであるが、書込み単位が論理グループによって固定された値であることと、ＦＡＴ領域の論理グループがデータ領域の論理グループよりも小さな容量で構成されるために、論理グループ単位で書込みを行った物理ブロックに対して更にランダムで書きこみを行う事ができるのが特徴である。その説明の前に本メモリカード１０１によるＦＡＴ領域に対する管理方法について説明する。
【０１１７】
図２２は、ＦＡＴ情報に対する論理グループの割当てについて説明した図である。
同図においては、論理セクタアドレス０〜９７（０ｘ０００〜０ｘ００６１）の領域には、未使用領域を含め、マスターブートレコードとパーティションブートレコードの情報が格納される。論理セクタアドレス９８〜１２８（０ｘ００６２〜０ｘ００８０）の領域には、ＦＡＴ１の情報が格納される。論理セクタアドレス１２９〜１５９（０ｘ００８１〜０ｘ００９Ｆ）の領域には、ＦＡＴ２の情報が格納される。論理セクタアドレス１６０〜２５５（０ｘ００Ａ０〜０ｘ００ＦＦ）の領域には、ルートディレクトリの情報が格納される。
【０１１８】
本実施形態のメモリカード１０１のコントローラ１０３は、マスタブートレコードとパーティションブートレコードを格納する連続した領域（セクタ０〜セクタ９７の領域）を、論理グループ０−０に割り当てる。同様に、ＦＡＴ１の情報を格納するセクタ９８〜セクタ１２８の領域を論理グループ０−１に、ＦＡＴ２の情報を格納するセクタ１２９〜セクタ１５９の領域を論理グループ０−２にそれぞれ割り当てる。ルートディレクトリの情報を格納する領域を含むセクタ１６０〜セクタ２５５の領域を論理グループ０−３として割り当てる。そして、各論理グループ０−０〜０−３に対応してフラッシュメモリ１０３の物理ブロックを１つずつ割り当てる。
【０１１９】
マスタブートレコード、パーティションブートレコード、ＦＡＴ１、ＦＡＴ２、及びルートディレクトリの情報のサイズは合計しても２５６セクタに満たないため、１つの物理ブロックがあれば、これらの全ての情報を格納できる。しかし、本実施形態では、ＦＡＴ情報の種類に応じて論理グループ０−０〜０−３をそれぞれ割りあて、各論理グループ０−０〜０−３に物理ブロックを対応させる。また、各論理グループ０−０〜０−３に対してＦＡＴ重複情報０〜３をそれぞれ対応させる。ＦＡＴ重複情報０〜３は、論理グループ０−０〜０−３に対応する物理ブロックのアドレスを「転送先物理ブロックアドレス」に格納する。
【０１２０】
図２３Ａは、本実施形態におけるカード容量が１２８ＭＢの場合のＦＡＴ情報に関する種々の管理条件を示した図である。図２３Ａに示す情報はコントローラ１０３が適宜参照できるようメモリカード１０１内のＦＡＴ領域変換テーブル１０８に保持されている。
【０１２１】
カード容量が１２８ＭＢの場合、一般的に、図２２に示したように各ＦＡＴ情報の論理セクタアドレスが割り当てられる。同図を参照すると、論理セクタアドレス０〜９７（０ｘ０００〜０ｘ００６１）の領域は、論理グループ０−０に対応する。論理グループ０−０の固定オフセットは０である。論理グループ０−０の重複情報はＦＡＴ重複情報０に格納される。集約条件は０ｘ００Ｅ０である。なお、集約条件は、物理ブロックサイズ（０ｘ０１００）から、その論理グループの書込み単位の大きさ（例えば、０ｘ００２０）を減算して得られる値である。また、書込み単位の大きさは３２セクタであり、よって、論理グループ０−０では、１つの物理ブロックにおいて、セクタ０〜セクタ３１、セクタ３２〜セクタ６３、セクタ６４〜セクタ９５、セクタ９６及び９７の４つの書込み単位が含まれる。書込み単位の大きさは、論理グループにより異なっている。
【０１２２】
図２３Ｂは、ＦＡＴ領域変換テーブル１０８の構成を示す図である。ＦＡＴ領域変換テーブル１０８は、メモリカード（フラッシュメモリ１０３）の容量に応じた、各論理グループ０−０〜０−３に割り当てる論理アドレスの情報を格納する。同図に示すように、メモリカード１０１の容量に応じて各論理グループ０−０〜０−３に割り当てる領域の大きさを異ならせている。コントローラ１０３はメモリカード１０１の初期化時にＦＡＴ領域変換テーブル１０８を参照してカード容量に基づいて、ＦＡＴ領域の論理アドレスに対して論理グループの割り当てを行う。
【０１２３】
図２４Ａ（ａ）は、ＦＡＴ領域に関する論理グループに対応して割り当てられる物理ブロックの領域構成を示した図である。なお、図２４Ａ（ａ）は、ＦＡＴ２に関連する論理グループ０−２の例を示している。物理ブロックは、部分ブロック書込み領域と、固定ランダム書込み領域とを含む。物理ブロック先頭のページ０〜ページ７の領域が部分ブロック書込み領域であり、この領域にＦＡＴ２に関する情報（３１セクタ分の情報）が最初に書込まれる。それに続くページ８〜ページ６３の領域がランダム書込み領域であり、この領域には、重複書込みされるデータが格納される。ランダム書込み領域における書込み単位は図２３Ａに示す書込み単位（論理グループ０−２の場合は４セクタ）であり、この値は部分ブロック書込み領域における書込み単位よりも小さい値となる。
【０１２４】
データ領域への書込みの場合、重複書込みする場合は、元のデータが格納された物理ブロックとは別の物理ブロックにデータを書込んでいた。これに対して、ＦＡＴ領域における重複書込みの場合、元のデータが格納された物理ブロックと同じ物理ブロックにデータを書込む。すなわち、最初に部分ブロック書込み領域にデータが書込まれ、以後、既に書込み済みのデータの論理アドレスと同じ論理アドレスに対して別のデータを重複書込みする必要が生じた場合、その別のデータを同じ物理ブロック内の固定ランダム書込み領域に書込む。ランダム書込み領域の空きが無くなると、その物理ブロックは集約される。このように、ＦＡＴ情報の種類毎に物理ブロックを割り当て、さらに、物理ブロックにおいて重複書き込みを行うことで、比較的不規則なアクセス頻度が高いＦＡＴ領域での集約回数を低減でき、書き込み効率を向上できる。
【０１２５】
なお、図２４Ａ（ｂ）に示すように、さらに別の物理ブロックＢにランダム書込み領域を設けて、ランダム書込み領域として使用する領域を拡張してもよい。その際には複数のランダム書込み領域を管理するために図６（ａ）で示したＦＡＴ領域の重複情報で管理すべき項目が増やす必要がある。図２４Ａ（ｂ）の場合は、図２４Ａ（ａ）の場合よりも集約処理される回数が低減されるため、書込み効率をより向上できる。
【０１２６】
図９のフローチャートのステップＳ１１の書込み領域判定において、書込み領域がＦＡＴ領域であると判定された場合の処理を図１０を参照して説明する。
【０１２７】
最初に、重複テーブル１０７において、ホスト１０２が指定する論理アドレスに対応するＦＡＴ重複情報の登録があるか否かを判定する（Ｓ３１）。具体的には、ホスト１０２が指定する論理アドレスに対応するＦＡＴ重複情報の「転送先物理ブロックアドレス」が０ｘ００００であれば、登録ありと判定し、０ｘ００００以外であれば、登録なしと判定する。
【０１２８】
ＦＡＴ重複情報の登録がない場合、消去済みブロックを取得（Ｓ３５）後、その消去済みブロックにＦＡＴ情報を書込む（Ｓ３３）。
【０１２９】
ＦＡＴ重複情報の登録がある場合、ＦＡＴ重複情報が指定する物理ブロックにおいて未書込みページの有無を判断する（Ｓ３２）。ホスト１０２が指定する論理アドレスに対応するＦＡＴ重複情報の「転送先アロケーション物理ページ」が、集約条件（図２３Ａ参照）と同じであれば未書込みページ無しと判定し、同じでなければ、未書込みページありと判定する。
【０１３０】
未書込みページがあれば、その未書込みページにＦＡＴ情報を書込むＦＡＴ書込み処理を行う（Ｓ３３）。未書込みページがなければ、集約処理を行った（Ｓ３４）後、消去済みブロックを取得し（Ｓ３５）、その消去済みブロックにＦＡＴ情報を書込むＦＡＴ書込み処理を行う（Ｓ３３）。
【０１３１】
図２４Ｂを参照し、上記ステップＳ３３のＦＡＴ書込み処理を説明する。ホスト１０２から受けた論理アドレスに対応する書込み単位配置テーブルを取得する（Ｓ１３１）。具体的には、ホスト１０２から指定された論理セクタアドレスに基づき、図２３Ａに示す情報にしたがい、その論理アドレスに該当する論理グループを決定し、その論理グループに対応するＦＡＴ重複情報を特定し、読み出す。例えば、ホスト１０２からの論理セクタアドレスが０ｘ００２０であれば、論理グループ０−０のＦＡＴ重複情報０を取得する。その取得したＦＡＴ重複情報の「転送先物理ブロックアドレス」と「転送先アロケーション物理ページ」で指定されるフラッシュメモリの管理領域から、最新の書込み単位配置テーブル１５０を読み出す。
【０１３２】
次に、書込み先を設定する（Ｓ１３２）。対応するＦＡＴ重複情報の「転送先物理ブロックアドレス」を書込み先の物理ブロックアドレスとし、「転送先アロケーション物理ページ」に、該当する論理グループの「書込み単位のサイズ」を加算したものを書込み先の物理セクタアドレスとする。
【０１３３】
有効オフセットを設定する（Ｓ１３３）。対応するＦＡＴ重複情報の「転送先アロケーション物理ページ」に、書込み先の物理ページを書込む。
【０１３４】
直ぐにデータを書込みできるか否かを判断する（Ｓ１３４）。この判断は次のように行う。ホスト１０２が指定する論理セクタアドレスを、該当する論理グループの「固定オフセット」で割った剰余が１ページ未満(0x0003未満)であれば、直ぐに書込み可と判定する。それ以外は直ぐに書込み不可と判定する。
【０１３５】
直ぐに書込みができなければ、ホスト１０２により指定されたアドレスの直前までのデータを、書込み対象ブロックにコピーする（Ｓ１３５）。すなわち、論物変換テーブル１０６から得られる物理ブロックから、書込み先の物理ブロックへ、該当する論理グループの「固定オフセット」からホストの指定するセクタアドレスの直前までのデータをコピーする。この際、書込み状況に応じて書込み先の物理セクタをインクリメントする。フラッシュメモリ１０３の管理領域には、書込み単位配置テーブル１５０を更新して書込む。
【０１３６】
その後、有効オフセットの設定を行う（Ｓ１３６）。書込み先の物理セクタが、対応する論理グループの「書込み単位のサイズ」で割り切れるときには、ＦＡＴ重複情報の「転送先アロケーション物理ページ」に書込み先の物理ページを書込む。
【０１３７】
次に、ホスト１０２が転送してくるデータを前のステップで設定した書込み先からページ単位で順次書込む（Ｓ１３７）。この際、書込み状況に応じて書込み先の物理セクタアドレスをインクリメントする。フラッシュメモリ１０３の管理領域には、書込み単位配置テーブル１５０を更新して書込む。
【０１３８】
ホスト１０２からの書込みデータの転送が継続しているか否か判断する（Ｓ１３８）。データ転送が終了すれば、論理グループのデータを書込み対象ブロックにコピーする（Ｓ１３９）。具体的には、論物変換テーブル１０６から得られる物理ブロックから書込み先の物理ブロックへ、対応する論理グループ内に含まれるデータのうち、未だ書込まれていない部分を全てコピーする。この際、書込み状況に応じて書込み先の物理セクタアドレスをインクリメントする。フラッシュメモリ１０３の管理領域には、書込み単位配置テーブル１５０を更新して書込む。
【０１３９】
データ転送が継続中であれば、次の書込みデータが前回と同じ論理グループか否かを判断し（Ｓ１４０）、同じであれば、次のデータを書込む。異なっていれば、本処理を終了する。
【０１４０】
２．１．７  書込み動作の具体例
（例１）連続書込みモードの例
図２５から図３１を参照し、新規書込みから連続書込みモード時の例について説明する。図２５において、ホスト１０２から、論理ブロック０ｘ００１０、論理セクタ０ｘ００２０〜０ｘ００３Ｆの領域へ新規にデータの書込みが要求されると、重複情報に登録がない（Ｓ１２）ケースにおいて新規書込み（Ｓ２４）が行われ、消去済みブロックである物理ブロック１００にデータが書込まれる。
【０１４１】
上記の状況下において重複テーブル１０７の重複情報１０７ｂは次のように設定される。「論理ブロックアドレス」には、ホスト１０２から指定された論理アドレス０ｘ００１０が設定される。「転送先物理ブロックアドレス」には、論物変換テーブルにおいて論理ブロックアドレス０ｘ００１０に対応する値である０ｘ００００が設定される。「転送先物理ブロックアドレス」には、データが書込まれる予定の物理ブロック１００のブロックアドレスを示す０ｘ０１００が設定される。「転送先先頭ページ論理アドレス」には、ホスト１０２から指定された先頭の論理セクタの値０ｘ００２０が設定される。「転送先書込みモード」には「連続」を示す０ｘ００００が設定される。重複情報１０７ｂの他のフィールドには初期値が設定される。
【０１４２】
その後、ホスト１０２の要求にしたがい論理セクタ０ｘ００２０〜０ｘ００３Ｆ分のデータが物理ブロック１００の先頭から書込まれる。そのときの状態が図２６に示す状態である。図２６において、重複情報１０７ｂの「転送先次書込み論理アドレス」には、０ｘ００４０が格納され、「転送先次書込み物理アドレス」には、０ｘ００２０が格納される。
【０１４３】
続けて、ホスト１０２から論理ブロック０ｘ００１０、論理セクタ０ｘ００４０〜０ｘ００７Ｆの領域へのデータの書込み要求に対して連続書込みが行われる（Ｓ２２）。物理ブロック１００において記録済みの領域と物理的に連続する領域に、論理的に連続するデータが書込まれる。そのときの状態が図２７に示す状態である。図２７において、重複情報１０７ｂの「転送先次書込み論理アドレス」の値は０ｘ００８０に更新され、「転送先次書込み物理アドレス」は０ｘ００６０に更新されている。
【０１４４】
図２７に示す状態において、ホスト１０２から不連続な論理アドレスへの書込み要求があると、すなわち、論理セクタアドレス０ｘ００Ｅ０〜０ｘ００ＦＦの領域への書込み要求があると、図２８に示すように、まず論理セクタアドレス０ｘ００８０〜０ｘ００ＤＦにおいて重複情報１０７ｂの「転送元物理ブロック」からデータを読み出して「転送先物理ブロック」へとコピーする必要がある。しかし、ここでは、重複情報１０７ｂの「転送元物理ブロック」には、無効値を表す０ｘ００００が格納されており、これは、転送元物理ブロックがないことを意味する。よって、ここでは、論理セクタアドレス０ｘ００８０〜０ｘ００ＤＦには、所定データ（例えば「ＦＦ」）を書込む。その後に続いて、図２９に示すように、ホスト１０２から要求のあった論理セクタアドレス０ｘ００Ｅ０〜０ｘ００ＦＦのデータを書込む。このように、本実施形態では、データが書込まれた領域が不連続とならないよう、空き領域にデータを補充した後に指定された領域にデータを書込む処理を行う。なお、上記において、所定データを書込むのは、物理ブロック１００に新規にデータが書込まれているためである（注：物理ブロック１００の重複情報１０７ｂの転送元物理ブロックアドレスには０ｘ００００が格納されており、これは物理ブロック１００に新規にデータが書込まれていることを意味する。）。転送元の物理ブロックからの重複書込みの場合は、転送元の物理ブロックの対応する論理アドレスのデータがコピーされる。
【０１４５】
図２９の状態で、集約処理がなされる場合、物理ブロック１００の残りの領域に、論理アドレスが連続となるようデータが書込まれる。すなわち、図３０に示すように、論理セクタアドレス０ｘ００Ｅ０〜０ｘ００１Ｆのデータとして重複情報１０７ｂの「転送元物理ブロック」のデータを書込む、ここでは「転送元物理ブロック」が無効値なので所定データが書込まれる。そして、論物変換テーブル１０６の論理ブロック０ｘ００１０に対応する値が物理ブロック１００のブロックアドレスを示す０ｘ０１００に更新され、重複情報１０７ｂが初期化される。
【０１４６】
上記の例では、書込み周期が３２セクタの場合の書込み動作の例を示したが、図３１に示すようにセクタ単位での書込み動作の場合も同様である。
【０１４７】
（例２）上書き書込みモードの例
図３２から図３４を参照し、新規書込みから上書き書込みモードの場合の例について説明する。図３２において、ホスト１０２から、論理ブロック０ｘ００１０、論理セクタ０ｘ００Ｅ０〜０ｘ００ＦＦの領域へ新規にデータの書込みが要求されると、消去済みブロックである物理ブロック１００にデータが書込まれる。
【０１４８】
上記の状況下において重複テーブル１０７の重複情報１０７ｂは次のように設定される。「論理ブロックアドレス」には、ホスト１０２から指定された論理アドレス０ｘ００１０が設定される。「転送先物理ブロックアドレス」には、論物変換テーブルにおいて論理ブロックアドレス０ｘ００１０に対応する値である０ｘ００００が設定される。「転送先物理ブロックアドレス」には、データが書込まれる予定の物理ブロック１００のブロックアドレスを示す０ｘ０１００が設定される。「転送先先頭ページ論理アドレス」には、ホスト１０２から指定された先頭の論理セクタの値０ｘ００Ｅ０が設定される。「転送先次書込み論理アドレス」には、０ｘ０１００が格納される。「転送先次書込み物理アドレス」には、０ｘ００２０が格納される。「転送先書込みモード」には「連続」を示す０ｘ００００が設定される。重複情報１０７ｂの他のフィールドには初期値が設定される。
【０１４９】
さらに、図３３に示すように、ホスト１０２から、前回と同じ論理アドレスにデータの書込み要求があると、物理ブロック１００において前回書込まれた領域（ページ０〜ページ７）に続く領域に新たにデータが書込まれる。このとき、重複情報１０７ｂの「転送先次書込み論理アドレス」には０ｘ００４０に、「転送先有効オフセット物理アドレス」には、０ｘ００２０に更新される。また、「転送先書込みモード」には、上書きを意味する０ｘＦＦＦＦが設定される。
【０１５０】
さらに、図３４に示すように、ホスト１０２から、前回と同じ論理アドレスにデータの書込み要求があると、物理ブロック１００において前回書込まれた領域（ページ８〜ページＦ）に続く領域に新たにデータが書込まれる。このとき、重複情報１０７ｂの「転送先次書込み論理アドレス」には０ｘ００６０に、「転送先有効オフセット物理アドレス」には、０ｘ００４０に更新される。
【０１５１】
（例３）  上書きされたブロックの集約
図３５、図３６を参照し、上書き書込みされたブロックの集約処理の例について説明する。図３５に示すように物理ブロック１００において最後に上書き書込みがなされたデータが、消去済み物理ブロック１０１にコピーされる。物理ブロック１０１において、残りの領域（ページ８〜３Ｆ）には、重複情報１０７ｂの「転送元物理ブロック」から読み出したデータを書込む必要があるが、ここでは重複情報１０７ｂの「転送元物理ブロック」は無効値を表す０ｘ００００が格納されているので所定データ（ＦＦ）が書込まれる。
【０１５２】
その後、図３６に示すように物理ブロック１００が消去される。これに伴い、物理ブロック１００に関する重複情報は初期化されるとともに、論物変換テーブル１０６に物理ブロック１０１が登録される。
【０１５３】
（例４）  ランダム書込みモードの例
図３７を参照し、ランダム書込みモードの例について説明する。図３７は、物理ブロック１００においてページ０〜ページ１７の領域において上書きモードで論理セクタアドレスＥ０〜ＦＦのデータが順次書込まれた後に（図３４の状態に相当する）、ページ１８〜ページ１Ｆの領域において論理セクタアドレス００〜１Ｆのデータがランダムモードで書込まれた例を示す。
【０１５４】
重複情報１０７ｂの「転送先次書込み物理アドレス」には、消去済み領域の先頭物理アドレスである０ｘ００８０が設定される。「転送先有効オフセット物理アドレス」には、ランダムモードで書込まれたデータのオフセット値である０ｘ００６０が設定される。「転送先書込みモード」には、ランダム書込み周期である０ｘ００２０が設定される。
【０１５５】
書込み単位配置テーブル１５０の「書込み単位」にはランダム書込み周期である０ｘ００２０が設定される。「書込み単位０先頭アドレス」には、論理アドレス００〜１Ｆのデータが格納される領域の先頭物理アドレスが格納される。ここでは、ページ１８〜ページ１Ｆに書込まれたデータの先頭アドレスである０ｘ００６０が設定される。「書込み単位７先頭アドレス」には、論理アドレスＥ０〜ＦＦのデータが格納される領域の先頭物理アドレスが格納される。ここでは、ページ１０〜ページ１７に書込まれたデータの先頭アドレスである０ｘ００４０が設定される。「書込み単位１先頭アドレス」等の０ｘＦＦＦＦは、データが転送元のブロックに格納されていることを示す。
【０１５６】
２．２  読み出し動作
フラッシュメモリ１０３からの読み出し動作について図３８を参照して説明する。
最初に、ホスト１０２から指定された、読み出し論理アドレスを取得する（Ｓ２０１）。なお、ホスト１０２の指定する論理ブロックアドレスを「読出し論理ブロックアドレス」とし、論理セクタアドレスを「読出し論理セクタアドレス」とする。
【０１５７】
ホストの指定する論理アドレスがＦＡＴ領域かデータ領域かを判断し、読み出し領域を判定する（Ｓ２０２）。
【０１５８】
読み出し領域がＦＡＴ領域の場合、図４３に示す処理を行う（詳細は後述）。読み出し領域がデータ領域の場合、内部変数として重複インデックス（Ｘ）に０ｘ００００を設定する（Ｓ２０３）。
【０１５９】
重複テーブル１０７のＸ番目の重複情報（重複情報Ｘ）の論理ブロックアドレスを取得（Ｓ２０４）。
【０１６０】
重複テーブル１０７から取得した論理ブロックアドレスと、ホストが指定する論理ブロックアドレスとを比較する（Ｓ２０５）。
【０１６１】
両論理アドレスが異なっていれば、重複インデックス（Ｘ）をインクリメントし（Ｓ２０６）、次の重複情報について論理ブロックアドレスを比較する。ここで、重複情報は８個しかないので、重複インデックス（Ｘ）の値が８以上になったときは、オーバーフローとし（Ｓ２０７）、通常読み出し処理を行う（Ｓ２０８）。
【０１６２】
両論理アドレスが一致していれば、重複情報Ｘの「転送先書込みモード」の値を取得し（Ｓ２１１）、書込みモードを判定し（Ｓ２１２）、書込みモードに応じた読み出し処理（Ｓ２１３、Ｓ２１４、Ｓ２１５）を行う。
【０１６３】
各読み出し処理（Ｓ２０８、Ｓ２１３、Ｓ２１４、Ｓ２１５）の終了後、読み出し論理ブロックアドレスをブロック単位でインクリメントし、読み出し論理セクタアドレスを０ｘ００００に設定する（Ｓ２０９）。
【０１６４】
以上の処理を、ホスト１０２から、読み出しの終了を示すコマンドを受信するまで繰り返す（Ｓ２１０）。以下、各読み出し処理の詳細を説明する。
【０１６５】
２．２．１  通常読み出し
図３９のフローチャートを参照し、通常読み出し処理（Ｓ２０８）を説明する。論物変換テーブル１０６から、読み出し論理ブロックアドレスに対応する物理ブロックアドレスを取得する（Ｓ２２１）。
【０１６６】
取得した物理ブロックアドレスで指定される物理ブロックのオフセット情報をフラッシュメモリ１０３から読み出す（Ｓ２２２）。具体的には、取得した物理ブロックアドレスで指定されるブロックの先頭物理ページの管理領域に書かれている論理セクタアドレスをフラッシュメモリから読み出し、その物理ブロックのオフセット値の情報を得る。
【０１６７】
読み出し論理セクタからオフセット値を減算することで、読み出し論理セクタアドレスに対応する、読み出し物理セクタアドレスを得る（Ｓ２２３）。読み出し物理セクタアドレスのデータをページ単位で読み出す（Ｓ２２４）。
【０１６８】
読み出し論理セクタアドレスをページ単位でインクリメントする（Ｓ２２５）。ホスト１０２からの読み出しが終了したか否かを判断し（Ｓ２２６）、読み出しが終了したときは、読み出し処理全体を終了する。ホスト１０２からの読み出しが継続しているときは、読み出し論理セクタアドレスのオーバーフローを判断する（Ｓ２２７）。オーバーフローしてなければ、ステップＳ２２３に戻り、次のデータを読み出し、オーバーフローしていれば、本通常読み出し処理を終了する。
【０１６９】
２．２．２  連続読み出し
図４０のフローチャートを参照し、連続読み出し処理（Ｓ２１３）を説明する。重複テーブル１０７における対応の重複情報を取得する（Ｓ２３１）。すなわち、重複情報から、「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」の情報を得る。
【０１７０】
転送元物理ブロックのオフセット値の情報をフラッシュメモリ１０３から取得する（Ｓ２３２）。データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する（Ｓ２３３）。具体的には、読み出し論理セクタアドレスが、「転送先先頭ページ論理アドレス」を含むページの先頭アドレスよりも小さいとき、又は「転送先次書込み論理アドレス」よりも大きいときに、転送元からの読出しと判定する。それ以外は、転送先からの読出しと判定する。
【０１７１】
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る（Ｓ２３４）。読み出し論理セクタアドレスから、転送元物理ブロックのオフセット値を減算することで、「読出し論理セクタアドレス」に対応するデータが書込まれている物理セクタを得ることができる。
【０１７２】
取得した転送元物理ブロックの読み出し物理セクタのデータをページ単位で読み出す（Ｓ２３５）。
【０１７３】
ステップＳ２３３において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る（Ｓ２３９）。読み出し論理セクタアドレスから、転送先先頭ページ論理アドレスを減算することで、「読出し論理セクタアドレス」に対応するデータが書込まれている物理セクタを得ることができる。
【０１７４】
取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す（Ｓ２４０）。
【０１７５】
ホスト１０２から読み出しが継続しているか否かを判断し（Ｓ２３６）、終了していれば、読み出し処理全体を終了する。ホスト１０２からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし（Ｓ２３７）、読み出し論理セクタアドレスのオーバーフローを判断する（Ｓ２３８）。オーバーフローしてなければ、ステップＳ２３３に戻り、次のデータを読み出し、オーバーフローしていれば、本連続読み出し処理を終了する。
【０１７６】
２．２．３  上書読み出し
図４１のフローチャートを参照し、上書き読み出し処理（Ｓ２１４）を説明する。重複テーブル１０７における対応の重複情報を取得する（Ｓ２５１）。すなわち、重複情報から、「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」、「転送先有効オフセット物理アドレス」の情報を得る。
【０１７７】
転送元物理ブロックのオフセット値の情報をフラッシュメモリ１０３から取得する（Ｓ２５２）。データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する（Ｓ２５３）。具体的には、読み出し論理セクタアドレスが「転送先先頭ページ論理アドレス」を含むページの先頭アドレスよりも小さいとき、又は「転送先次書込み論理アドレス」よりも大きいときに、転送元からの読出しと判定する。それ以外は、転送先からの読出しと判定する。
【０１７８】
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る（Ｓ２５４）。
【０１７９】
取得した転送元物理ブロックの読み出し物理セクタのデータをページ単位で読み出す（Ｓ２５５）。
【０１８０】
ステップＳ２５３において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る（Ｓ２５９）。読み出し論理セクタアドレスから、転送先先頭ページ論理アドレスを減算し、さらに、その値に「転送先有効オフセット物理アドレス」を加算することで、読出し論理セクタアドレスに対応するデータが書込まれている物理セクタを得ることができる。
【０１８１】
取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す（Ｓ２６０）。
【０１８２】
その後、ホスト１０２から読み出しが継続しているか否かを判断し（Ｓ２５６）、終了していれば、読み出し処理全体を終了する。ホスト１０２からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし（Ｓ２５７）、読み出し論理セクタアドレスのオーバーフローを判断する（Ｓ２５８）。オーバーフローしてなければ、ステップＳ２５３に戻り、次のデータを読み出し、オーバーフローしていれば、本上書き読み出し処理を終了する。
【０１８３】
２．２．４  ランダム読み出し
図４２のフローチャートを参照し、ランダム読み出し処理（Ｓ２１５）を説明する。重複テーブル１０７において対応の重複情報を取得する（Ｓ２７１）。すなわち、重複情報から、「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」、「転送先書込みモード」、「転送先有効オフセット物理アドレス」の情報を得る。
【０１８４】
転送元物理ブロックのオフセット値の情報をフラッシュメモリ１０３から取得する（Ｓ２７２）。
【０１８５】
「転送先物理ブロックアドレス」と「転送先有効オフセット物理アドレス」で指定されるフラッシュメモリ１０３の管理領域から、書込み単位配置テーブル１５０の情報を得る（２７３）。
【０１８６】
データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する（Ｓ２７４）。この判定は以下のように行う。まず、複数の書込み単位の中から、読み出し論理セクタアドレスを含む１つの書込み単位を決定する。次に、書込み単位配置テーブル１５０を参照し、求めた書込み単位のデータが格納される領域の先頭物理アドレスを取得する。例えば、書込み単位の値が０ｘ００１０ｈ（１６セクタ（＝４ページ））であれば、１物理ブロック内に１６個の書込み単位（書込み単位０〜Ｆ）が含まれる。読み出し論理セクタアドレスが０ｘ００１Ｂであれば、読み出し論理セクタアドレスを含む書込み単位は、２番目の書込み単位（書込み単位１）となる。その後、書込み単位配置テーブル１５０を参照し、書込み単位１の先頭アドレスを取得する。取得した先頭物理アドレスが無効値であれば転送元からの読み出しと判定する。有効値であれば転送先からの読み出しと判定する。
【０１８７】
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る（Ｓ２７５）。取得した転送元物理ブロックの読み出し物理セクタのデータをページ単位で読み出す（Ｓ２７６）。
【０１８８】
ステップＳ２７４において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る（Ｓ２８０）。読み出し論理セクタアドレスを「転送先書込みモード」の値で除した剰余に、書込み単位配置テーブル１５０から求めた先頭物理アドレスを加算することで、読出し論理セクタアドレスに対応する、読み出し物理セクタを得ることができる。取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す（Ｓ２８１）。
【０１８９】
その後、ホスト１０２から読み出しが継続しているか否かを判断し（Ｓ２７７）、終了していれば、読み出し処理全体を終了する。ホスト１０２からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし（Ｓ２７８）、読み出し論理セクタアドレスのオーバーフローを判断する（Ｓ２７９）。オーバーフローしてなければ、ステップＳ２７４に戻り、次のデータを読み出し、オーバーフローしていれば、本ランダム読み出し処理を終了する。
２．２．５  ＦＡＴ読み出し
図３８のフローチャートのステップＳ２０２の読み出し領域判定においてＦＡＴ領域からの読み出しであると判断されたときに実行される、図４３に示す処理について説明する。
【０１９０】
図４３において、論理ブロックアドレスに対応するＦＡＴ重複情報が有効か否かを判断する（Ｓ２９１）。具体的には以下のように行う。読出し論理セクタアドレスの値から、以下のようにして対応する重複テーブル１０７のＦＡＴ重複情報を求める。
【表１】
0004773342.tif 000002
その「転送先物理ブロックアドレス」を取得し、その値の有効/無効を判定する。その値が０ｘ００００（無効値）の時には無効と判定し、０ｘ００００以外の時には有効と判定する。
【０１９１】
ＦＡＴ重複情報が無効であるとき、ＦＡＴ通常読み出し処理を行い（Ｓ２９２）、ＦＡＴ重複情報が有効であるとき、ＦＡＴ重複読み出し処理を行う（Ｓ２９３）。
【０１９２】
その後、読み出し論理ブロックアドレスをブロック単位でインクリメントするとともに、読み出し論理セクタアドレスに０ｘ００００を設定する（Ｓ９４）。
【０１９３】
ホスト１０２からの読み出しが終了したか否かを判定し（Ｓ２９５）、終了していれば、読み出し処理全体を終了する。ホスト１０２からの読み出しが継続していれば、ステップＳ２０２に戻り、次の読み出しを行う。
【０１９４】
２．２．５．１  ＦＡＴ通常読み出し
図４４のフローチャートを参照し、上記ステップＳ２９２のＦＡＴ通常読み出し処理を説明する。
【０１９５】
論物変換テーブル１０６から、読み出し論理ブロックアドレスに対応する物理ブロックアドレスを取得する（Ｓ３０１）。
【０１９６】
読み出し論理セクタアドレスから固定オフセット値（図２３Ａ参照）を減算することで、部分ブロック書込み領域の読み出し物理セクタアドレスを得る（Ｓ３０２）。読み出し物理セクタアドレスのデータをページ単位で読み出す（Ｓ３０３）。
【０１９７】
ホスト１０２からの読み出しが終了したか否かを判断し（Ｓ３０４）、読み出しが終了したときは、読み出し処理全体を終了する。
【０１９８】
ホスト１０２からの読み出しが継続しているときは、読み出し論理セクタアドレスをページ単位でインクリメントする（Ｓ３０５）。
【０１９９】
読み出し論理セクタアドレスのオーバーフローを判断する（Ｓ３０６）。オーバーフローしてなければ、ステップＳ３０２に戻り、次のデータを読み出す。オーバーフローしていれば、本ＦＡＴ通常読み出し処理を終了する。
【０２００】
２．２．５．２  ＦＡＴ重複読み出し
図４５のフローチャートを参照し、上記ステップＳ２９３のＦＡＴ重複読み出し処理を説明する。
【０２０１】
重複テーブル１０７において対応の重複情報を取得する（Ｓ３１１）。すなわち、重複情報から、「転送先物理ブロックアドレス」、「転送先アロケーション物理ページ」の情報を得る。
【０２０２】
「転送先物理ブロックアドレス」と「転送先アロケーション物理ページ」で指定されるフラッシュメモリ１０３の管理領域から、書込み単位配置テーブル１５０の情報を得る（３１２）。
【０２０３】
データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する（Ｓ３１３）。すなわち、読み出し論理セクタアドレスから固定オフセット（図２３Ａ参照）を減算し、その減算した値をＦＡＴ領域に固有の書込み単位で除す。その商に基づき、書込み単位配置テーブル１５０を参照し、読み出し論理セクタアドレスに対応する書込み単位の先頭物理アドレスを取得する。その先頭物理アドレスの値が無効値であれば、転送元からの読み出しと判定し、有効値であれば転送先からの読み出しと判定する。
【０２０４】
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る（Ｓ３１４）。取得した転送先物理ブロックにおける読み出し物理セクタのデータをページ単位で読み出す（Ｓ３１５）。
【０２０５】
ステップＳ３１３において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る（Ｓ３１９）。読み出し論理セクタアドレスから、固定オフセットを減算し、その値を、ＦＡＴ領域に固有の書込み単位で除す。その商に基づき、書込み単位配置テーブル１５０を参照して得た先頭物理アドレスに、剰余を加算することで、読出し論理セクタアドレスに対応する物理セクタが得られる。
【０２０６】
取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す（Ｓ３２０）。
【０２０７】
その後、ホスト１０２から読み出しが継続しているか否かを判断し（Ｓ３１６）、終了していれば、読み出し処理全体を終了する。ホスト１０２からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし（Ｓ３１７）、読み出し論理セクタアドレスのオーバーフローを判断する（Ｓ３１８）。オーバーフローしてなければ、ステップＳ３１３に戻り、次のデータを読み出し、オーバーフローしていれば、本ＦＡＴ重複読み出し処理を終了する。
【０２０８】
本発明は、特定の実施形態について説明されてきたが、当業者にとっては他の多くの変形例、修正、他の利用が明らかである。それゆえ、本発明は、ここでの特定の開示に限定されず、添付の請求の範囲によってのみ限定され得る。なお、本出願は日本国特許出願、特願２００４−１３３１１２号（２００４年４月２８日提出）、特願２００４−１３３１１３号（２００４年４月２８日提出）、特願２００４−１３８２００号（２００４年５月７日提出）に関連し、それらの内容は参照することにより本文中に組み入れられる。
【産業上の利用可能性】
【０２０９】
本発明にかかる不揮発性記憶装置の書込み方法は、ホストからのデータの書込み処理を高速に実行できると共に、処理に必要な物理ブロックの数を少なくすることができ、フラッシュメモリのデータ書換え回数を高めることができるとの特有の効果を有し、不揮発性記憶装置、メモリカード、不揮発性メモリのコントローラ装置等に有用である。
【図面の簡単な説明】
【００１３】
【図１Ａ】本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す図
【図１Ｂ】論物変換テーブルの構成を示す図
【図２】フラッシュメモリの内部の構成を示す図
【図３】フラッシュメモリの物理ブロックの構成を示す図
【図４】メモリカードの内部における論理的なデータの管理を示した図
【図５】重複テーブルの構成を示した図
【図６】（ａ）ＦＡＴ領域に対する重複情報の構成を示す図、（ｂ）データ領域に対する重複情報の構成を示す図
【図７】フラッシュメモリの記憶領域のページのデータフォーマットを示す図
【図８】書込み単位配置テーブルの構成を示す図
【図９】メモリカードのフラッシュメモリへの書込み処理を示すフローチャート
【図１０】メモリカードのフラッシュメモリへの書込み処理を示すフローチャート（図９のつづき）
【図１１Ａ】従来の書込み処理を説明するための図
【図１１Ｂ】従来の書込み処理を説明するための図
【図１１Ｃ】本発明の連続書込み処理を説明するための図
【図１２】連続書込み処理のフローチャート
【図１３】上書き書込み処理を説明するための図
【図１４】上書き書込み処理のフローチャート
【図１５】ランダム書込み処理のフローチャート
【図１６】重複テーブルの登録位置の決定処理のフローチャート
【図１７】新規書込み処理のフローチャート
【図１８】連続モードの場合の集約処理を説明するための図
【図１９】上書きモード、ランダムモードの場合の集約処理を説明するための図
【図２０】集約処理のフローチャート
【図２１】集約処理のフローチャート（図２０の続き）
【図２２】ＦＡＴ情報に対する論理グループの割当てについて説明した図
【図２３Ａ】ＦＡＴ情報に関する種々の管理条件をまとめて示した図
【図２３Ｂ】ＦＡＴ領域変換テーブルのデータ構成例を示す図
【図２４Ａ】ＦＡＴ２に対する論理グループ０−２に対応する物理ブロックの領域構成を示した図
【図２４Ｂ】ＦＡＴ書込み処理のフローチャート
【図２５】連続書込みモード時の動作の具体例を説明した図
【図２６】連続書込みモード時の動作の具体例を説明した図
【図２７】連続書込みモード時の動作の具体例を説明した図
【図２８】連続書込みモード時の動作の具体例を説明した図
【図２９】連続書込みモード時の動作の具体例を説明した図
【図３０】連続書込みモード時の動作の具体例を説明した図
【図３１】連続書込みモード時の動作の具体例を説明した図
【図３２】上書き書込みモード時の動作の具体例を説明した図
【図３３】上書き書込みモード時の動作の具体例を説明した図
【図３４】上書き書込みモード時の動作の具体例を説明した図
【図３５】上書き書込みされたブロックの集約処理の具体例を説明した図
【図３６】上書き書込みされたブロックの集約処理の具体例を説明した図
【図３７】ランダム書込みモード時の動作の具体例を説明した図
【図３８】メモリカードのフラッシュメモリからの読み出し処理を示すフローチャート
【図３９】通常読み出し処理を示すフローチャート
【図４０】連続読み出し処理を示すフローチャート
【図４１】上書き読み出し処理を示すフローチャート
【図４２】ランダム読み出し処理を示すフローチャート
【図４３】メモリカードのフラッシュメモリからの読み出し処理を示すフローチャート（図３８のつづき）
【図４４】ＦＡＴ通常読み出し処理を示すフローチャート
【図４５】ＦＡＴ重複読み出し処理を示すフローチャート
【符号の説明】
【００１４】
１０１  メモリカード
１０２  ホスト
１０３  フラッシュメモリ
１０４  コントローラ
１０５  消去済みテーブル
１０６  論物変換テーブル
１０７  重複テーブル
１０７ａ  ＦＡＴ領域に対する重複情報
１０７ｂ  データ領域に対する重複情報
１０８  ＦＡＴ領域変換テーブル
１５０  書込み単位配置テーブル
【図１Ａ】
0004773342.tif 000003
【図１Ｂ】
0004773342.tif 000004
【図２】
0004773342.tif 000005
【図３】
0004773342.tif 000006
【図４】
0004773342.tif 000007
【図５】
0004773342.tif 000008
【図６】
0004773342.tif 000009
【図７】
0004773342.tif 000010
【図８】
0004773342.tif 000011
【図９】
0004773342.tif 000012
【図１０】
0004773342.tif 000013
【図１１Ａ】
0004773342.tif 000014
【図１１Ｂ】
0004773342.tif 000015
【図１１Ｃ】
0004773342.tif 000016
【図１２】
0004773342.tif 000017
【図１３】
0004773342.tif 000018
【図１４】
0004773342.tif 000019
【図１５】
0004773342.tif 000020
【図１６】
0004773342.tif 000021
【図１７】
0004773342.tif 000022
【図１８】
0004773342.tif 000023
【図１９】
0004773342.tif 000024
【図２０】
0004773342.tif 000025
【図２１】
0004773342.tif 000026
【図２２】
0004773342.tif 000027
【図２３Ａ】
0004773342.tif 000028
【図２３Ｂ】
0004773342.tif 000029
【図２４Ａ】
0004773342.tif 000030
【図２４Ｂ】
0004773342.tif 000031
【図２５】
0004773342.tif 000032
【図２６】
0004773342.tif 000033
【図２７】
0004773342.tif 000034
【図２８】
0004773342.tif 000035
【図２９】
0004773342.tif 000036
【図３０】
0004773342.tif 000037
【図３１】
0004773342.tif 000038
【図３２】
0004773342.tif 000039
【図３３】
0004773342.tif 000040
【図３４】
0004773342.tif 000041
【図３５】
0004773342.tif 000042
【図３６】
0004773342.tif 000043
【図３７】
0004773342.tif 000044
【図３８】
0004773342.tif 000045
【図３９】
0004773342.tif 000046
【図４０】
0004773342.tif 000047
【図４１】
0004773342.tif 000048
【図４２】
0004773342.tif 000049
【図４３】
0004773342.tif 000050
【図４４】
0004773342.tif 000051
【図４５】
0004773342.tif 000052