(57)【要約】【課題】データの高速書き込みを実現する。【解決手段】ホストにより第１の所定単位で管理されるファイルの内容を、第２の所定単位に分割された記憶領域内に記憶するメモリシステムの制御方法において、前記第２の所定単位は、前記メモリシステムに含まれる不揮発性半導体記憶メモリのデータ消去の最小単位であり、前記第１の所定単位の境界が、前記第２の所定単位の境界上に配置されるよう制御する。【選択図】図２７
2007293917.tif 000002
【特許請求の範囲】
【請求項１】
ホストにより第１の所定単位で管理されるファイルの内容を、第２の所定単位に分割された記憶領域内に記憶するメモリシステムの制御方法において、
前記第２の所定単位は、前記メモリシステムに含まれる不揮発性半導体記憶メモリのデータ消去の最小単位であり、
前記第１の所定単位の境界が、前記第２の所定単位の境界上に配置されるよう制御することを特徴とするメモリシステムの制御方法。
【請求項２】
ホストにより管理される前記ファイルの内容を、前記記憶領域内のデータ領域に格納し、前記ファイルと前記データ領域との対応関係を、前記記憶領域内の管理領域に格納し、
前記ファイルの消去を行う際に、前記ファイルに対応する前記データ領域が空き領域である旨を前記管理領域にマークし、且つ、前記データ領域に格納された前記ファイルの内容を消去することを特徴とする請求項１に記載のメモリシステムの制御方法。
【請求項３】
ホストにより管理される前記ファイルの内容を、前記記憶領域内のデータ領域に格納し、前記ファイルと前記データ領域との対応関係を、前記記憶領域内の管理領域に格納し、
前記ファイルの消去を行う際に、前記ファイルに対応する前記データ領域が空き領域である旨を前記管理領域にマークし、
前記メモリシステムに入力される信号に基づいて、前記管理領域の前記マークを検知し、前記データ領域に格納された前記ファイルの内容を消去することを特徴とする請求項１に記載のメモリシステムの制御方法。
【請求項４】
複数の物理ブロックを有する不揮発性半導体メモリを含むメモリシステムの制御方法において、
ホストのファイル管理単位であるクラスタの境界を、前記物理ブロックの境界上に配置することを特徴とするメモリシステムの制御方法。
【請求項５】
マスターブートセクタ、ブートセクタ、第１のファイルアロケーションテーブル、第２のファイルアロケーションテーブル、ディレクトリー、及びファイルデータを不揮発性半導体記憶メモリに格納するメモリシステムの制御方法であって、
前記マスターブートセクタと前記ブートセクタとの間に所定数の空き論理セクタを割り当てることにより、前記マスターブートセクタ、前記ブートセクタ、前記第１のファイルアロケーションテーブル、前記第２のファイルアロケーションテーブル、及び前記ディレクトリーを、少なくとも１つの論理ブロックに対応する第１の物理ブロック領域に格納し、
前記ファイルデータを第２の物理ブロック領域に格納し、
ホストのファイル管理単位であるクラスタが、物理ブロックの境界をまたがないようにすることを特徴とするメモリシステムの制御方法。
【請求項６】
前記ホストから前記メモリシステムに入力される前記ファイルの消去命令を受けて、前記ファイルデータが無効である旨を前記ディレクトリーにマークし、
前記ホストから前記メモリシステムに入力される信号に基づいて、前記ディレクトリーの内容を検知し、前記第２の物理ブロック領域において、マークされた前記ファイルデータを格納する前記物理ブロックのデータ消去を行うことを特徴とする請求項５に記載のメモリシステムの制御方法。
【請求項７】
前記不揮発性半導体メモリはＮＡＮＤ型フラッシュメモリであり、前記物理ブロックはデータ消去の最小単位であることを特徴とする請求項４乃至請求項６のいずれか１項に記載のメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリシステムの制御方法に関し、特に不揮発性半導体メモリカードの制御に使用されるものである。
【背景技術】
【０００２】
近年図１に示すようなフラッシュメモリカードがデジタルスチルカメラやＰＤＡ等の携帯情報機器の記憶媒体として注目されている。フラッシュメモリとしてＮＡＮＤ型フラッシュメモリと呼ばれるフラッシュメモリが使用され販売がなされている。
【０００３】
このメモリカードは図１に示すように薄型のプラスチックパッケージ１にわずかな窪みが設けられておりその窪みに２２ピンの平面電極を有するフラッシュメモリ２が埋め込まれている。本フラッシュメモリカードは専用のコネクタを介してホストシステムに電気的に接続され、データの入出力を行うというものである。
【０００４】
これらのメモリカードはコネクタを介して信号のやり取りを行うので、メモリカードの各端子とコネクタの端子との接触が不完全だった場合には、誤動作する可能性が大きくなる。このため、メモリカードの各端子と情報処理機器のコネクタの端子とが確実に接触しているかどうかを確認する方法が考案されてきた。
【０００５】
特に、従来のメモリカードを用いた制御システムでは、メモリカードの各端子とコネクタの対応する端子は同時に接続／切断されていたので、挿入／抜去時において、接続／切断のタイミングの僅かなズレが生じることがある。このため、例えば、電源が供給されている状態で、コマンドラッチイネーブル信号等の制御信号が不定になると、意図しない書込みまたは消去コマンド等が取り込まれデータを破壊する可能性があり、メモリカードとコネクタの挿抜制御には細心の注意が必要であった。
【０００６】
フラッシュメモリとして、１６ＭビットのＮＡＮＤ型フラッシュメモリの場合を例に取ると、図２に示すように、フラッシュメモリは５１２個の物理的なメモリブロックに分割されている。このブロックは消去時の最小単位となっている。１ブロックはさらに１６ページに分割される。１ページは書き込みおよび読み出しの基本的な単位となる。１ページは２６４バイトから構成され、うち２５６バイトはユーザーデータ領域（データ部）、残りの８バイト（冗長部）はエラー訂正符号および管理情報等の格納（冗長部）に使用される。
【０００７】
これに対して、パソコン側ではデータは図３に示す論理ブロックによって管理される。論理ブロック（ＬＢＡ：Logical Block Address ）は５００個設定されており、１個の論理ブロックは連続した８セクタに相当する。すなわち、論理ブロック０は論理セクタ０〜７を意味する。
【０００８】
通常パソコン等ではデータはセクタ（５１２バイト）単位で管理されるため、本メモリカードでも５１２バイト単位でのデータ管理を基本とすべく物理ブロックの２ページをペアとして論理ブロックの１セクタ分のデータを記憶させる。データの具体的な格納方法を図４に示す。
【０００９】
未使用の正常ブロックは、データ部、冗長部とも“ＦＦｈ”に設定されている。下記に各々のバイトの意味あいにつき説明する。Ｄａｔａ Ａｒｅａ−１は５１２バイトデータのうち、前半の０〜２５５バイトのデータが格納される。Ｄａｔａ Ａｒｅａ−２には５１２バイトデータのうち、後半の２５６〜５１１バイトのデータが格納される。Ｕｓｅｒ Ｄａｔａ Ａｒｅａのデータは、ユーザーに解放されており使用方法はユーザーに一任される。Ｄａｔａ Ｓｔａｔｕｓ Ａｒｅａはデータが正常か否かを示す。通常は“ＦＦｈ”だが、正常でないデータが書き込まれている場合に“００ｈ”が設定される。Ｂｌｏｃｋ ＳｔａｔｕｓＡｒｅａはブロックが良か不良かを示す。通常は“ＦＦｈ”だが、不良ブロックの場合、“００ｈ”（初期不良ブロック）、“Ｆ０ｈ”（後発不良ブロック）が設定される。２ビット以上“０”であった場合は、不良ブロックであると判断する。なお、本データは同一ブロック内では全て同じ値を書き込む。ＢｌｏｃｋＡｄｄｒｅｓｓ Ａｒｅａ−１はブロックの論理アドレス情報を示す。なお、１論理ブロックを構成する８セクタには５１２の物理ブロックのうち１物理ブロックに相当するので、本データは同一ブロック内では全て同じ値が書込まれることになる。同様にして、Ｂｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａ−２はＢｌｏｃｋＡｄｄｒｅｓｓ Ａｒｅａ−１のデータと同じ内容が書かれている。ＥＣＣＡｒｅａ−１は偶数ページデータ（２５６バイト）の３バイトＥＣＣコードである。ＥＣＣ Ａｒｅａ−２は、奇数ページデータ（２５６バイト）の３バイトＥＣＣコードである。
【００１０】
６４ＭビットＮＡＮＤ型フラッシュメモリの場合を例に取ると、図５に示すように、フラッシュメモリは１０２４個の物理的なメモリブロックに分割されている。このブロックは消去時の最小単位となっている。１ブロックはさらに１６ページに分割される。１ページは書き込みおよび読み出しの基本的な単位となる。１ページは５２８バイトから構成され、うち５１２バイトはユーザーデータ領域（データ部）、残りの１６バイト（冗長部）はエラー訂正符号および管理情報等の格納（冗長部）に使用される。論理ブロックは図６に示すように、１０００個に設定されており、１個の論理ブロックは連続した１６セクタに相当する。すなわち論理ブロック０は論理セクタ０〜１５を意味する。６４ＭビットＮＡＮＤ型フラッシュメモリのデータ格納方法を図７に示す。
【００１１】
このようなメモリカードの制御では、データ更新時は消去済み領域に更新データを書き込み、元のデータが存在する領域を消去するという、追加書き込み方式を採用しているため、ある論理ブロックに対応するデータが存在する物理ブロックは、固定では無く、常にメモリ内を移動している。したがって、図８に示すように物理ブロックの冗長部には自分がどの論理ブロックに対応するデータを保持しているかを示す論理ブロックアドレス情報を記憶している。ここで、図４および図７中のＢｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａ−１及びＢｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａ−２が、対応する論理ブロックアドレスに相当する。
【００１２】
ゆえに、通常は電源投入時に、全物理ブロックの該論理ブロックアドレス情報格納領域をサーチし、システムＲＡＭ上に、論理ブロックと物理ブロックの変換テーブルを作る。一度テーブルを作成した後は、該テーブルを参照すれば、論理ブロックに対応する物理ブロックがすぐに判断可能なため、全ブロックのサーチ動作は電源投入時に１回行われる。当然のことながら、データの更新を行い、対応する物理ブロックの位置が変化した場合、メモリシステムは、論理番地／物理番地変換テーブルの更新作業を行い、次のアクセスに備えることになる。
【００１３】
しかし、従来のメモリシステムにおいては、前記論理番地／物理番地変換テーブルに要するＲＡＭ領域が膨大になってしまうという第１の問題点があった。以下にその内容を詳述する。
【００１４】
従来の１６ＭビットＮＡＮＤ型フラッシュメモリの論理番地／物理番地変換テーブルを図９に示す。上述したように、１論理ブロック分のデータ、すなわち連続した８セクタ分のデータは、フラッシュメモリ中の５１２ブロックのうちのいずれかの物理ブロックに存在する。５１２個の物理ブロックから１個のブロックを選択するには、９ビット必要となる。ソフトウェアの利便性に配慮してオフセットがそのまま物理ブロックを指し示す様にテーブルを構成すると、１論理ブロックに対し２バイト、計１ＫＢのＲＡＭ領域が必要となる。例えば、論理ブロック５の情報が格納されている物理ブロックの番地はテーブルの先頭からオフセット５ワード（１０バイト）目に格納される。
【００１５】
このように、従来用いられていた方法においては、論理番地／物理番地変換テーブルが必要とするＲＡＭ領域が非常に大きいという問題点があった。通常よく用いられる、汎用ＣＰＵでは内蔵ＲＡＭとして１ＫＢ程度のＲＡＭを搭載しているのが一般的である。従って、従来は、論理番地／物理番地変換テーブルだけで１ＫＢを使用する必要があり、内蔵ＲＡＭのみではシステム構成ができず、外づけのＲＡＭをシステムとして有することが条件となりコストアップの大きな要因となっていた。
【００１６】
図１０に従来の６４ＭビットＮＡＮＤ型フラッシュメモリの論理番地／物理番地変換テーブルを示す。この場合、１論理ブロック分のデータ、すなわち連続した１６セクタ分のデータはフラッシュメモリ中の１０２４ブロックのうちのいずれかの物理ブロックに存在する。１０２４個の物理ブロックから１個の物理ブロックを選択するには、１０ビット必要となることから、合計２ＫＢのＲＡＭ領域が必要となる。このため、１６ビットＮＡＮＤ型フラッシュメモリ同様膨大なＲＡＭ領域が必要となる。
【００１７】
この問題は、フラッシュメモリの容量が大きくなるほど深刻になる。例えば、１Ｇビットの時代になるとブロック数は８１９２個になるため、１６ＫＢのＲＡＭ容量が必要となる。
【００１８】
また、さらにメモリ容量が増加すると、フラッシュメモリの物理ブロックの冗長部に論理アドレスを格納できないという第２の問題が生じる。図７に示す１６ＭビットＮＡＮＤ型フラッシュメモリの物理ブロックの冗長部のＢｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａには自分がどの論理ブロックに対応するデータを保持しているかを示す論理ブロックアドレス情報が格納される。各物理ブロックの冗長部のＢｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａの構造を図１１に示す。図１１中で、偶数ページの２６２バイトおよび奇数ページの２５９バイト目のＤ４〜Ｄ７の４ビットは“０”“０”“０”“１”、偶数ページの２６３バイトおよび奇数ページの２６０バイト目のＤ０の１ビットは“１”固定値となる。従って、格納可能なブロックアドレスの最大値は、ＢＡ０〜ＢＡ１０で表される、２０４７である。５１２ＭビットのＮＡＮＤ型フラッシュメモリでは物理ブロックが４０９６個存在するため、Ｂｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａの記述方法を変更しない限り、アドレスを格納することはできない。従来のフラッシュメモリと冗長部の制御方法を異にするため、ホストが２種類のプログラムを用意しない限り、広範囲の容量のフラッシュメモリを制御できず、ホストシステムのプログラム格納領域の容量を圧迫する問題が発生する。
【００１９】
次に、フラッシュメモリの書き込み、消去について簡単に述べる。フラッシュメモリの書き込みはページ単位で一括して実行される。６４ＭビットＮＡＮＤ型ＥＥＰＲＯＭの場合は１ページ５２８バイトである。また消去はブロック単位で実行される。６４ＭビットＮＡＮＤ型ＥＥＰＲＯＭは１６ページで１ブロックを構成する。このようにＮＡＮＤ ＥＥＰＲＯＭでは書き込みと消去の単位が異なる。従ってあるページのみを消去してデータを更新する事は出来ない。
【００２０】
フラッシュメモリカードをパソコンで使用する場合には一般的にＤＯＳ支配下のドライブとして取り扱われる。図１２に従来のＤＯＳフォーマットパラメータを示す。ここでは、図１２（ａ）として、クラスタサイズ４ＫＢの場合、図１２（ｂ）としてクラスタサイズが８ＫＢの場合を示している。クラスタとはＤＯＳのファイル管理の基本最小単位で、ファイルサイズが非常に小さくても１個のクラスタ分の容量は占有する。ファイルサイズが大きい場合は、複数個のクラスタのチェーンとして管理され、その管理情報はＦＡＴ（File Allocation Table)に格納される。クラスタのサイズやＦＡＴの管理方法等はブートセクタと呼ばれるセクタ内で管理される。１個のデバイスが複数個のドライブとして管理される場合は、マスターブートセクタにその情報が格納される。ファイルの書き込みとしては、ＯＳからクラスタ単位で書き込み命令が発行される。
【００２１】
クラスタサイズが４ＫＢの場合を図１２（ａ）に示す。論理セクタ０にマスターブートセクタ、論理セクタ１６にブートセクタ、論理セクタ１７〜２２にＦＡＴ、論理セクタ２３〜２８にＦＡＴのコピー、論理セクタ２９〜４４にディレクトリー、論理セクタ４５以降にファイルデータ領域が配置されている。
【００２２】
クラスタサイズが８ＫＢの場合を図１２（ｂ）に示す。論理セクタ０にマスターブートセクタ、論理セクタ１６にブートセクタ、論理セクタ１７〜１９にＦＡＴ、論理セクタ２０〜２２にＦＡＴのコピー、論理セクタ２３〜３８にディレクトリー、論理セクタ３９以降にファイルデータ領域が配置されている。
【００２３】
まず、図１３を用いて、クラスタサイズ４ＫＢの場合を例に従来の書き換えシーケンスを説明する。クラスタサイズは４ＫＢなので、連続した８セクタ分の書き込み命令がＯＳから発行される。このとき論理セクタの４５〜５２（クラスタＡ）に対する書き込み（データ更新）が発生する。１） 消去済み新領域を探し、論理セクタ３２〜４４までを元ブロックから新領域ＮＡＮＤ Ｂｌｏｃｋ Ｃにコピーする。２） 論理セクタ４５〜４７の新データを新領域ＮＡＮＤ Ｂｌｏｃｋ Ｃに書き込む。３） 元ブロックＮＡＮＤ Ｂｌｏｃｋ Ａを消去する。４） 論理番地／物理番地変換テーブルの更新。５） 消去済み新領域を探し、論理セクタ４８〜５２の新データを新領域ＮＡＮＤ Ｂｌｏｃｋ Ｄに書き込む。６） 元ブロックＮＡＮＤ Ｂｌｏｃｋ Ｂの論理セクタ５３〜６３のデータを新領域ＮＡＮＤ Ｂｌｏｃｋ Ｄにコピーする。７） 元ブロックＮＡＮＤ Ｂｌｏｃｋ Ｂを消去する。８） 論理番地／物理番地変換テーブルの更新。従って、外部からみて８セクタの書き換えを実施した場合、実際デバイスとしては、論理セクタ３２〜６３の合計３２セクタ（３２ページ）の書き込み動作と、ＮＡＮＤ Ｂｌｏｃｋ Ａ、ＮＡＮＤ Ｂｌｏｃｋ Ｂの合計２ブロックに対する消去動作が実施されたことになる。
【００２４】
次に、図１４を用いて、クラスタＢに対する書き込みシーケンスを説明する。この場合論理セクタの５３〜６０（クラスタＢ）に対する書き込み（データ更新）が発生する。１） 消去済み新領域を探し、論理セクタ−４８〜５２までを元ブロックNAND Block Bから新領域NAND Block Cにコピーする。２） 論理セクタ−５３〜６０の新データを新領域NAND Block Cに書き込む。３） 論理セクタ−６１〜６３までを元ブロックNAND Block Bから新領域NAND Block Cにコピーする。４） 元ブロックNAND Block Bを消去する。５） 論理番地／物理番地変換テーブルの更新。従って、外部からみて８セクタの書き換えを実施した場合、実際デバイスとしては、論理セクタの４８〜６３の合計１６セクタ（１６ページ）の書き込み動作と、NAND Block Bの１ブロックに対する消去動作が実施されたことになる。
【００２５】
次に、図１５を用いて、クラスタサイズ８ＫＢの場合を例に従来の書き込みシーケンスを説明する。クラスタサイズは８ＫＢなので、連続した１６セクタ分の書き込み命令がＯＳから発行される。このとき論理セクタの３９〜５４（クラスタＡ）に対する書き込み（データ更新）が発生する。１） 消去済み新領域を探し、論理セクタ３２〜３８までを元ブロックNAND Block Aから新領域NAND Block Cにコピーする。２） 論理セクタ３９〜４７の新データを新領域NAND Block Cに書き込む。３） 元ブロックNAND Block Aを消去する。４） 論理番地／物理番地変換テーブルの更新。５） 消去済み新領域を探し、論理セクタ４８〜５４の新データを新領域NAND Block Dに書き込む。６） 元ブロックNAND Block Bの論理セクタ５５〜６３のデータを新領域NAND Block Dにコピーする。７） 元ブロックNAND Block Bを消去する。８） 論理番地／物理番地変換テーブルの更新。従って、外部からみて１６セクタの書き換えを実施した場合、実際デバイスとしては、セクタ３２〜６３の合計３２セクタ（３２ページ）の書き込み動作と、NAND Block A、NAND BlockＢの合計２ブロックに対する消去動作が実施されたことになる。
【００２６】
上記クラスタが４ＫＢのものと８ＫＢの場合を同じ８ＫＢのデータが書き込まれる場合を想定し比較すると、クラスタサイズが４ＫＢの場合は、２回の書き込みに処理が分割され合計４８セクタの書き込みおよび３ブロック分の消去動作が発生する。クラスタサイズが８ＫＢの場合は、クラスタサイズが４ＫＢの場合に比べて１回の書き込みに処理が集約され合計３２セクタの書き込みおよび２ブロック分の消去動作が発生する。
【００２７】
このように従来のメモリシステムは、外部から見て更新されたセクタ数に比較し、実際にデバイス上で実行された書き込み動作および消去動作がはるかに多くなるため、外部からみた書き換え速度が遅くなると言う第２の問題点があった。
【００２８】
次に、従来のメモリシステムにおけるファイル消去コマンド実行時の動作について説明する。通常ＤＯＳのファイルシステムにおいては、ファイル消去コマンド実行時に、ディレクトリー上に該当ファイルが無効である旨のマーキングを行い、該当ファイルが占有していたメモリ領域をＦＡＴ（File Allocation Table)上で開放する。従って、ファイル本体のデータ部分はフラッシュメモリ上に消去されずに残っている。消去コマンド実行時の管理領域とデータ領域の関係を図１６に示す。図１６において、例えばＦｉｌｅ−１とＦｉｌｅ−４の消去コマンドを実行した場合、管理領域のＦｉｌｅ−１とＦｉｌｅ−４が開放されｄｅｌ．ｍａｒｋがマーキングされる。このときデータ領域においてはＦｉｌｅ−１、Ｆｉｌｅ−４は消去されない。
【００２９】
このため、その後の書込みコマンド実行時に、前記開放された領域に対し新たなファイルのデータ部分が書き込まれる際に、まずフラッシュメモリの消去動作が必要となる。このため、ファイル書き込み時に必ずフラッシュメモリの消去動作を伴い、ファイル書き込み速度を劣化させるという第３の問題点が生じる。
【００３０】
図４に示す、ＥＣＣ Ａｒｅａ−１は偶数ページデータ（２５６バイト）の３バイトＥＣＣコードである。ＥＣＣ Ａｒｅａ−２は、奇数ページデータ（２５６バイト）の３バイトＥＣＣコードである。
【００３１】
ここでＥＣＣ（Error Correction Code)とはエラー訂正のための符号をさす。システムはこのエラー訂正用の符号を利用し、読み出したデータにエラーがあるか否かを判定し、エラーが存在する場合、エラーを訂正することができる。必要なエラー訂正能力はフラッシュメモリ自身の信頼性、例えばメモリのセル構造に依存する。フラッシュメモリには複数のデータ記憶方法があり、これらのフラッシュメモリを例えばデジタルスチルカメラやＰＤＡ等のシステムに用いた場合のエラー訂正について考える。
【００３２】
例えば、第１のフラッシュメモリカードは、図１７に示すようにメモリセルのしきい値に応じた、“０”と“１”の２値の値を保持し、１ページ（２５６バイト）に対して１ビットエラー訂正用の符号を持たせている。また、第２のフラッシュメモリカードは、図１８に示すようにメモリセルのしきい値に応じた、“００”と“０１”と“１０”と“１１”の４値（２ビット分）の値を保持し、１個のメモリセルが破壊されると２ビット分のデータが破壊される可能性があるため、１ページ（２５６バイト）に対して２ビットエラー訂正用の符号を持たせている。１ビットエラー訂正用と２ビットエラー訂正用では符号の生成、およびエラーの検出、訂正に関してはアルゴリズムが異なる。
【００３３】
従来のシステム（例えば、デジタルスチルカメラや、ＰＤＡ等）では図１９に示すように１種類のエラー訂正アルゴリズムのみ搭載していた。このため、上記第１および第２のどちらかのフラッシュメモリカードしか読めないという第４の問題点が生じ、フラッシュメモリの市場での汎用性を高める上での障害となっていた。
【発明の開示】
【発明が解決しようとする課題】
【００３４】
本発明の、第１、第４、第５の実施例に係る発明は、上記第１の問題点を鑑みてなされ、論理番地／物理番地変換テーブルで必要となるＲＡＭの容量を低減し、汎用ＣＰＵの内蔵ＲＡＭのみでフラッシュメモリを制御する方法を提供し、これにより従来必要であった外付けＲＡＭを不要となし、大幅なコストダウンを実現することを目的とする。
【００３５】
さらに、本発明の第２の実施例に係る発明は、上記第２の問題点を鑑みてなされ、物理ブロックにおいて、ＤＯＳ上のファイル管理の基本単位であるクラスタの区切れが、消去の単位となるブロックをまたがないようにする方法を提供し、データの高速書込みを実現することを目的とする。
【００３６】
また、本発明の第３の実施例に係る発明は、上記第３の問題点を鑑みてなされ、消去コマンド実行時に物理ブロックの管理領域を解放すると同時に、そのデータ領域の消去も行うことにより、その後の書込みコマンド実行時の処理速度の向上を実現することを目的とする。
【００３７】
さらに、本発明の第６の実施例に係る発明は、上記第４の問題点を鑑みてなされ、２値／多値等の２種類のフラッシュメモリカードのいずれもまたは更に複数のフラッシュメモリがサポート可能なシステムを提供することにある。
【課題を解決するための手段】
【００３８】
上記目的を達成する手段として、本発明の実施例に係るメモリシステムの制御方法では、ホストにより第１の所定単位で管理されるファイルの内容を、第２の所定単位に分割された記憶領域内に記憶するメモリシステムの制御方法において、前記第２の所定単位は、前記メモリシステムに含まれる不揮発性半導体記憶メモリのデータ消去の最小単位であり、前記第１の所定単位の境界が、前記第２の所定単位の境界上に配置されるよう制御することを特徴とする。
【００３９】
また、上記目的を達成する手段として、本発明の実施例に係るメモリシステムの制御方法では、複数の物理ブロックを有する不揮発性半導体メモリを含むメモリシステムの制御方法において、ホストのファイル管理単位であるクラスタの境界を、前記物理ブロックの境界上に配置することを特徴とする。
【００４０】
また、上記目的を達成する手段として、本発明の実施例に係るメモリシステムの制御方法では、マスターブートセクタ、ブートセクタ、第１のファイルアロケーションテーブル、第２のファイルアロケーションテーブル、ディレクトリー、及びファイルデータを不揮発性半導体記憶メモリに格納するメモリシステムの制御方法であって、前記マスターブートセクタと前記ブートセクタとの間に所定数の空き論理セクタを割り当てることにより、前記マスターブートセクタ、前記ブートセクタ、前記第１のファイルアロケーションテーブル、前記第２のファイルアロケーションテーブル、及び前記ディレクトリーを、少なくとも１つの論理ブロックに対応する第１の物理ブロック領域に格納し、前記ファイルデータを第２の物理ブロック領域に格納し、ホストのファイル管理単位であるクラスタが、物理ブロックの境界をまたがないようにすることを特徴とする。
【発明の効果】
【００４１】
本発明の実施例によれば、論理アドレスと物理アドレスとを変換テーブルで変換するに際し、１個の論理ブロックに対して複数個の物理ブロックを割り振るようにしたので、テーブルが必要とするＲＡＭ領域を低減することが可能となる。
【００４２】
さらに、本発明の実施例によれば、クラスタの区切れが消去単位となるブロックをまたがないようにしたので、データ書換え時に発生する消去同数及び書き込み同数を減らすことができる。
【００４３】
さらに、本発明の実施例によれば、消去コマンド実行時に物理ブロックの管理領域を開放すると同時に、そのデータ領域の消去も行うことにしたので、その後の書込みコマンド実行時の処理速度の向上することが可能となる。
【００４４】
さらに、本発明の実施例によれば、論理ブロックと物理ブロックの対応関係のうちの必要な領域の対応関係のみを逐次作成するようにしたので、最低限必要なＲＡＭ領域を低減することができる。
【００４５】
さらに、本発明の実施例によれば、不良ブロックを冗長ブロックに置き換えるに際し、論理的なゾーンのそれぞれにおいて、置き換え後には、各ゾーンに存在する不良ブロック数が所定値を越えないようにしたので、製品の歩留りを向上させることができる。
【００４６】
さらに、本発明の実施例によれば、使用する記憶媒体の種別に応じてエラー訂正アルゴリズムを選択するようにしたので、各種の記憶媒体を使用でき、汎用性が向上する。
【発明の実施の形態】
【００４７】
本発明の第１の実施例について詳細に説明する。本実施例は、論理番地／物理番地変換テーブルに必要なＲＡＭ領域の容量の削減を行ったフラッシュメモリカードについてである。
【００４８】
まず、繰返しになるが本発明のメモリシステムの、物理ブロックの構造と論理ブロックの関係について説明する。
【００４９】
本発明のメモリシステム物理ブロック構造及び物理ブロック内のデータ構成は、従来技術の項で説明したもの同様で、図２および図４に示される。以下に、図４を用いて、本発明のメモリシステムにおける物理ブロック内の各々のバイトの意味を説明する。
【００５０】
Ｄａｔａ Ａｒｅａ−１は５１２バイトデータのうち、前半の０〜２５５バイトでデータが格納される。Ｄａｔａ Ａｒｅａ−２には５１２バイトデータのうち、後半の２５６〜５１１バイトのデータが格納される。Ｕｓｅｒ ＤａｔａＡｒｅａのデータは、ユーザーに解放されており使用方法はユーザーに一任される。Ｄａｔａ Ｓｔａｔｕｓ Ａｒｅａはデータが正常か否かを示す。通常は“ＦＦｈ”だが、正常でないデータが書き込まれている場合に“００ｈ”が設定される。Ｂｌｏｃｋ Ｓｔａｔｕｓ Ａｒｅａはブロックが良か不良化を示す。通常は“ＦＦｈ”だが、不良ブロックの場合、“００ｈ”（初期不良ブロック）、“Ｆ０ｈ”（後発不良ブロック）が設定される。２ビット以上“０”であった場合は、不良ブロックであると判断する。なお、本データは同一ブロック内では全て同じ値を書き込む。Ｂｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａ−１はブロックの論理アドレス情報を示す。なお、１論理ブロックを構成する８セクタには５１２の物理ブロックのうち１物理ブロックに相当するので、本データは同一ブロック内では全て同じ値が書き込まれることになる。同様にして、Ｂｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａ−２はＢｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａ−１のデータと同じ内容が書かれている。ＥＣＣ Ａｒｅａ−１は、偶数ページデータ（２５６バイト）の３バイトＥＣＣコードである。ＥＣＣ Ａｒｅａ−２は、奇数ページデータ（２５６バイト）の３バイトＥＣＣコードである。
【００５１】
ここで、ＥＣＣについて説明する。本実施例では２５６バイト（２０４８ビット）単位のデータに対しＥＣＣ符号を生成する。１ビット訂正の機能を持たせるために、２５６バイトに対し２２ビットのＥＣＣデータを使用している。２５６バイトは図２０に示すように、データに並べたものである。
【００５２】
即ち、１Ｂｙｔｅ目の入力のｂｉｔ０が２０４８ｂｉｔの１ｂｉｔ目（アドレス；００００００００ ０００）となり、２５６Ｂｙｔｅ目の入力のｂｉｔ７が２０４８ｂｉｔの２０４８ｂｉｔ目（アドレス；１１１１１１１１ １１１）となる。
【００５３】
ＥＣＣコード（ラインパリティ（ＬＰ）とカラムパリティ（ＣＰ））は図２１に示す条件を満足する１０２４ビットの奇数パリティとして算出される。
【００５４】
カラムパリティ−ＣＰ０〜ＣＰ５は１バイト（８ビット）でデータが入力される毎に更新される。ＥＣＣ符号の生成をソフトウェアで行う場合は、１バイトの入力（２５６通り）に対してのカラムパリティ計算結果を予めシステム内のＲＯＭ上に持つ方法が考えられる。この方法により、ビット単位の演算が不要になり、計算時間が大幅に短縮できる。またバイトの入力（２５６通り）に対してのカラムパリティ計算結果を電源投入時に一括で計算し、ＲＡＭ上に保持する方法も考えられる。前案に比較しＲＯＭは無くて済むが、代わりにＲＡＭ領域が必要となる。
【００５５】
図２２は、本発明の第１の実施例に係るフラッシュメモリカードの電源投入時の制御フローチャートである。以下にフローに従い説明する。（ステップＳ１） コネクタにメモリカードが挿入されたことを受けて、電源電圧の検知を行う。（ステップＳ２） メモリカードのＩＤコードを読み出し、記憶容量を読みとる。（ステップＳ３） もしシステムがサポートしていないＩＤコードが読み出されたらリジェクトする。（ステップＳ４） 物理フォーマットの確認を行う。物理番地の先頭ブロックの情報を読む。（ステップＳ５） もしシステムがサポートしていないフォーマットがなされていればリジェクトする。（ステップＳ６） 論理番地／物理番地変換テーブルを作るとともに、次の書き込み動作で書き込みを行うための消去済み領域を選択する。
【００５６】
図２３に上記ステップＳ６に示した電源投入時に作成する論理番地／物理番地変換テーブルの作成のフローチャートを示す。（ステップＳ１） 論理番地／物理番地変換テーブルが入るＲＡＭ領域をリセットする。（ステップＳ２） 次のデータ書き込みに使用される消去済みのブロックを記憶するテーブル領域をリセットする。（ステップＳ３） 物理ブロックの１からサーチを開始する。（ステップＳ４） ブロックの冗長部を読み出す。（ステップＳ５） 所定領域のデータを元に該ブロックが正常なブロックか否かを判断する。不良ブロックの場合以下に続く処理は不要となり、次のブロックのサーチに移行する。（ステップＳ６） 消去済みのエリアかどうかを判断する。（ステップＳ７） 消去済みのブロックであれば次の書き込みの際に使用するブロックの候補としてテーブル上に格納する。（ステップＳ８） 消去済みのエリアで無ければ、論理アドレス情報領域を抽出する。このとき、パリティチェックを行い妥当性を確認する。（ステップＳ９） 上記内容をもとに論理番地／物理番地変換テーブルを作成する。（ステップＳ１０） 物理ブロック番号のカウントアップ。（ステップＳ１１） ５１２ブロックサーチしたら終了。
【００５７】
このフローにしたがって作成された論理番地／物理番地変換テーブルを図２４に示す。図２４に示す物理ブロックエリア（Physical Block Area ）とは、連続した２個の物理ブロックの集合体を意味する。例えば、物理ブロックエリア０とは、物理ブロック０と物理ブロック１を示す。本テーブルでは１個の論理ブロックに対して１個の物理ブロックエリアを割り付けている。例えば、論理ブロック０に対し、物理ブロックエリア５が割り振られている場合、物理ブロックの１０もしくは１１が実際の論理ブロック０のデータを記憶していることになる。従って、実際にアクセスする時には、物理ブロック１０および１１の冗長部の論理アドレスとの関連を示すデータ領域を検索し、どちらが論理ブロック０のデータを本当に格納しているのかを判断する必要がある。しかし、極めて限定された領域をリードするのみで済むため、メモリアクセスの性能に及ぼす影響はほとんどない。
【００５８】
このとき、物理ブロックエリアは全体で２５６個（５１２／２）存在し、８ビットのデータによって記述する事が可能となる。ソフトウェアの利便性に配慮してオフセットがそのまま物理ブロックを指し示す様にテーブルを構成すると、１ブロックに対して１バイト、計０．５ＫＢのＲＡＭ領域が必要となる。例えば、論理ブロック５の情報が格納されている物理ブロックエリアの番地はテーブルの先頭からオフセット５バイト目に格納される。
【００５９】
この０．５ＫＢのＲＡＭ容量は、従来必要であった１ＫＢのＲＡＭ容量に対し半分となる。汎用ＣＰＵは通常１ＫＢ程度のＲＡＭ領域をもっているが、本実施例によって得られた０．５ＫＢのＲＡＭ領域の削減は非常に大きな役割をしめる。
【００６０】
すなわちコストアップを招く外付けＲＡＭを設けなくても、本実施例によって得られた０．５ＫＢの空き領域を使用する事によってシステムを構成する事が可能となりコストダウンをはかることができる。
【００６１】
また、上記実施形態に限らず、物理ブロックエリアとして４物理ブロックを定義しても良いし、さらに大きなブロック数を想定しても構わない。
【００６２】
図２５は本実施例に係るフラッシュメモリカードの読み出し時の動作フローチャートである。以下にフローに従い説明する。（ステップＳ１） 読み出しを行う先頭セクタアドレスと転送セクタ数をホストから受け取る。（ステップＳ２） 読み出し範囲が、妥当な範囲か検証する。（ステップＳ３） セクタを論理ブロックに変換。１６Ｍビット品の場合は１ブロック８セクタ構成なので８で割ることになる。（ステップＳ４） 論理番地／物理番地変換テーブルを参照し、該当論理ブロックが存在する物理ブロックエリアを得る。（ステップＳ５） ブロックエリアにある２個の物理ブロックの論理アドレス情報領域を調べ、いずれがホストの指定した論理ブロックのデータを格納しているかを調べる。（ステップＳ６） 特定された物理ブロックから１セクタ分データを読み出す。例えばセクタ番号が０の時は、物理ブロックの先頭２ページのデータを読み、例えばセクタ番号が７の時は、物理ブロックの最終２ページのデータを読む。１個の物理ブロックの中では、８個のセクタのデータが順番に並んでいる。（ステップＳ７） 読み出したデータに対しエラーチェックを行い、エラーが無いか確認する。（ステップＳ８） エラーが検出されたら、訂正可能か否かを判断する。（ステップＳ９） エラーが検出され、なおかつ訂正可能な場合データを訂正する。（ステップＳ１０） ホストが要求したセクタ数を読み出したら終了する。（ステップＳ１１） 次の読み出しセクタが物理ブロックの境界を越えるかどうかを判断する。例えば、セクタ７から８に移行する場合、データは各々異なる物理ブロックに存在するため、新たに論理番地／物理番地変換テーブルを再度参照する。（ステップＳ１２） 同一ブロック内で読み出しを継続する場合は、読み出すページをカウントアップする。（ステップＳ１３） 別のブロックへ移動する場合は、論理ブロックをカウントアップし、ページのカウントもリセットする。
【００６３】
次に、本実施例の書込み時の動作について説明する。書き込みは基本的に以下の３部分の処理に大別される。論理セクタ３を書き換える場合を例に説明する。更新はセクタ３のみだが、セクタ０から７の８セクタ分のデータは同一ブロック上に存在するので、１ブロックに対する処理が必要になる。書き込みは基本的に以下の３部分の処理に大別される。
【００６４】
第１に、論理セクタ０、１及び２に関しては、データの更新は無いので、論理セクタ０、１及び２のデータは、元々格納されていた論理ブロックから新しく書き込みを行う物理ブロックへコピーされる。
【００６５】
第２に、論理セクタ３は更新するので、元のデータをコピーする必要はなく、ホストから与えられたデータを新たに書込みを行うブロックへ書き込む。
【００６６】
第３に、論理セクタ４〜７はデータの更新はないので、論理セクタ４〜７のデータは、元々格納されていた物理ブロックから新しく書き込みを行う物理ブロックへコピーする。
【００６７】
以上のように、１ブロックに対して、コピー／更新データ書き込み／コピーの動作が基本となる。勿論、書き込みがセクタ０〜７の様な場合は、１ブロック分全てのデータが更新されるのでコピー動作は不要となることは自明である。以下に示すフローチャートの分岐は主にこれから書き込むセクタが更新データか、もしくはコピー動作なのかを判断しながら進行することになる。
【００６８】
図２６は本実施例に係るフラッシュメモリカードの書き込み時の動作フローチャートである。以下にフローに従い説明する。（ステップＳ１） ホストからデータの更新を行う先頭セクタ番地と転送セクタ数を受け取る。（ステップＳ２） 論理ブロック番号に変換し、論理番地／物理番地変換テーブルを参照する。読み出し動作と同様に論理ブロックエリアの２個のブロックから本当の物理ブロックを選択する。ここで選択したブロックからコピーすべきデータを吸い上げることになる。（ステップＳ３） 物理ブロックの先頭から処理を開始する。（ステップＳ４） ブロック前半のコピー動作かもしくはデータの更新かを判断する。（ステップＳ５） コピーであれば、元ブロックからデータを読み出し、新ブロックに書き込みを実行する。（ステップＳ６） 次のセクタの処理に移行する。（ステップＳ７） （ステップＳ４）で更新領域と判断されたら、ホストから受け取った更新データを基に書き込みを行う。（ステップＳ８） 次のセクタの処理に移行する。（ステップＳ９） ホストが要求するセクタ数書き込んだか確認する。（ステップＳ１０） （ステップＳ９）で要求数の書き込みが終了したと判断された場合、ブロックの境界か否かを判断する。未書き込みの領域が残っていれば、ブロック後半のコピー動作に移行。ブロック境界であれば、これ以上コピー動作を実行する必要はない。（ステップＳ１１） 元のブロックからデータを読み出し、新ブロックに書き込む。（ステップＳ１２） 次のセクタの処理に移行する。（ステップＳ１３） （ステップＳ４）でホストの要求するセクタ数の書き込みが終了していない場合は更なる書き込みが必要だが、ブロック境界であれば、次の物理ブロックに対する処理に移行する。（ステップＳ１４） 次にブロック処理に移行または、処理を終了する前に、書き込みを行った結果をもとに論理番地／物理番地変換テーブルの更新を行い、さらに元データが存在した物理ブロックを消去し、次の処理での新たな書き込み領域としての候補領域として登録する。（ステップＳ１５） 次のブロックの処理に移行する。
【００６９】
以上に述べたように、本実施例のメモリシステムの制御方法によれば、ＲＡＭ領域の大幅な削減が実現できる。これは、従来のメモリカードシステムは論理番地／物理番地変換テーブルで必要なＲＡＭ容量が大きく、汎用ＣＰＵの内蔵ＲＡＭのみではシステム構成ができず、外づけのＲＡＭを設けることが条件となっていたに対して、本発明のメモリカードシステムは論理番地／物理番地変換テーブルとして必要なＲＡＭの容量を低減し、汎用ＣＰＵの内蔵ＲＡＭのみ制御可能としたフラッシュメモリを制御する方法を用いるからである。このことにより、従来必要であった外付けＲＡＭを不要とし、大幅なコストダウンを実現することが可能となる。
【００７０】
次に、本発明の第２の実施例について詳細に説明する。本実施例はＤＯＳフォーマット形式で用いた場合に、データの書き換え動作を高速化したフラッシュメモリカードについてである。
【００７１】
図２７に本実施例によるＤＯＳフォーマットパラメータを示す。ここでは、図２７（ａ）として、クラスタサイズ４ＫＢの場合、図２７（ｂ）としてクラスタサイズが８ＫＢの場合を示している。クラスタサイズが４ＫＢの場合、論理セクタ０にマスターブートセクタ、論理セクタ１９にブートセクタ、論理セクタ２０〜２５にＦＡＴ、論理セクタ２６〜３１にＦＡＴのコピー、論理セクタ３２〜４７にディレクトリー、論理セクタ４８以降にファイルデータ領域が配置されている。クラスタサイズが８ＫＢの場合、論理セクタ０にマスターブートセクタ、論理セクタ２５にブートセクタ、論理セクタ２６〜２８にＦＡＴ、論理セクタ２９〜３１にＦＡＴのコピー、論理セクタ３２〜４７にディレクトリー、論理セクタ４８以降にファイルデータ領域が配置されている。このように、クラスタサイズが４ＫＢおよび８ＫＢの場合とも、クラスタの区切れが物理的なブロックの区切れをまたがないようパラメータが設定されている。これは、ＤＯＳフォーマットパラメータの内、ブートセクタの配置される場所を調整することにより実現できる。
【００７２】
まず、図２８を用いて、クラスタサイズ４ＫＢの場合を例に書き込みシーケンスを説明する。クラスタサイズは４ＫＢなので、連続した８セクタ分の書き込み命令がＯＳから発行される。このとき論理セクタの４８〜５５（クラスタＡ）に対する書き込み（データ更新）が発生する。１） 消去済み新領域を探し、論理セクタ４８〜５５までの新データを新領域NAND BlockＣに書き込む２） 論理セクタ５６〜６３の元データを新領域NAND BlockＣにコピーする。３） 元ブロックNAND BlockＢを消去する。４） 論理番地／物理番地変換テーブルの更新。
【００７３】
従って、外部からみて８セクタの書き換えを実施した場合、実際デバイスとしては、論理セクタ４８〜６３の合計１６セクタ（１６ページ）の書き込み動作と、NAND BlockＢの１ブロックに対する消去動作が実施されたことになる。
【００７４】
次に、図２９を用いて、またクラスタＢに対する書き込みシーケンスを説明する。この場合論理セクタの５６〜６３（クラスタＢ）に対する書き込み（データ更新）が発生する。１） 消去済み新領域を探し、論理セクタ４８〜５５までの元データを新領域NAND BlockＣにコピーする。２） 論理セクタ５６〜６３の新データを新領域NAND BlockＣに書き込む。３） 元ブロックNAND BlockＢを消去する。４） 論理番地／物理番地変換テーブルの更新。
【００７５】
従って、外部からみて８セクタの書き換えを実施した場合、実際デバイスとしては、論理セクタ４８〜６３の合計１６セクタ（１６ページ）の書き込み動作と、NAND BlockＢの１ブロックに対する消去動作が実施されたことになる。
【００７６】
次に、図３０を用いて、クラスタサイズ８ＫＢの場合を例に書き込みシーケンスを説明する。クラスタサイズは８ＫＢなので、連続した１６セクタ分の書込み命令がＯＳから発行される。このとき論理セクタの４８〜６３（クラスタＡ）に対する書き込み（データ更新）が発生する。１） 消去済み新領域を探し、論理セクタ４８〜６３までの新データを新領域NAND Block Cに書き込む。２） 元ブロックNAND BlockＢを消去する。３） 論理番地／物理番地変換テーブルの更新。
【００７７】
従って、外部からみて１６セクタの書き換えを実施した場合、実際デバイスとしては、論理セクタ４８〜６３の合計１６セクタ（１６ページ）の書き込み動作と、 NAND Block Ｂの１ブロックに対する消去動作が実施されたことになる。
【００７８】
上記クラスタが４ＫＢのものと８ＫＢの場合を同じ８ＫＢのデータが書き込まれる場合を想定し比較すると、クラスタサイズが４ＫＢの場合は、２回の書き込みに処理が分割され合計３２セクタの書き込みおよび２ブロック分の消去動作が発生する。これに対し、クラスタサイズが８ＫＢの場合は、１回の書き込みに処理が集約され合計１６セクタの書き込みおよび１ブロック分の消去動作が発生することになる。
【００７９】
図１２〜図１５に示した従来のメモリシステムの書き換え速度と比較すると、クラスタが４ＫＢの場合では、８ＫＢのデータを更新するのに４８セクタの書き込みおよび３ブロック分の消去動作が発生していたものが、３２セクタの書き込みおよび２ブロック分の消去動作となり、時間的に２／３に短縮されたことになる。また、クラスタが８ＫＢの場合では、８ＫＢのデータを更新するのに３２セクタの書き込みおよび２ブロック分の消去動作が発生していたものが、１６セクタの書き込みおよび１ブロック分の消去動作となり、時間的に１／２に短縮されたことになる。
【００８０】
このように、ＤＯＳのファイル管理の単位であるクラスタの区切れが、フラッシュメモリの物理的なブロックの境界をまたがないことにより、書き換え速度の高速化がはかれる。
【００８１】
また、クラスタのサイズに着目するとクラスタが４ＫＢの場合では、８ＫＢのデータを更新するのに３２セクタの書き込みおよび２ブロック分の消去動作が発生していたものが、クラスタが８ＫＢの場合では１６セクタの書き込みおよび１ブロック分の消去動作となり、時間的に１／２になる。すなわち、クラスタのサイズをフラッシュメモリの物理ブロックのサイズと同じにすることによってより高速な書き込みが可能となる。勿論、クラスタのサイズがフラッシュメモリの物理ブロックのサイズの整数倍の場合も同様の効果を得ることができる。
【００８２】
次に、本発明の第３の実施例について詳細に説明する。本実施例は消去後の書込みコマンド実行時の処理速度を向上させるフラッシュメモリカードについてである。
【００８３】
本実施例のフラッシュメモリカードシステムは、通常ＤＯＳのファイルシステムにおけるファイル消去と異なり、ディレクトリー上に該当ファイルが無効である旨のマーキングを行い、該当ファイルが占有していたメモリ領域をＦＡＴ（File Allocation Table ）上で開放するのみならず、ファイル本体のデータ部分をフラッシュメモリ上で消去することを特徴とする。すなわちファイルの消去命令時に、開放されたクラスタの領域に対する消去動作を実施する。
【００８４】
図３１に消去コマンド実行時の管理領域とデータ領域の関係を示す。図３１において、例えばＦｉｌｅ−１とＦｉｌｅ−４の消去コマンドを実行した場合、管理領域のＦｉｌｅ−１とＦｉｌｅ−４が開放されｄｅｌ．ｍａｒｋがマーキングされ、さらにデータ領域においてＦｉｌｅ−１とＦｉｌｅ−４が記憶されていた領域は消去される。
【００８５】
従って、次に新たなファイル書き込み命令が発生したときに選択されるクラスタは既に消去済みであるので、即座に書き込みが可能となり、ファイル書き込み速度が向上する。一般にフラッシュメモリにおいては書き込みより消去の方が時間がかかるため、本実施例によって達成されるファイル書き込み速度の向上効果は顕著である。
【００８６】
また本実施例における効果が最も顕著に現れる条件は上述した第２の実施例から分かる様に、クラスタサイズとフラッシュメモリのブロックサイズを一致させた場合である。クラスタサイズがフラッシュメモリのブロックサイズより小さい場合は、ブロックの一部分を消去することになるが、処理が煩雑であることに加え、仕様上ブロックの一部分のみが消去されている状態を許さない場合もある。クラスタサイズとブロックサイズが一致していれば、単純にブロックを消去する事によってクラスタを開放できる。勿論クラスタサイズが物理ブロックサイズの整数倍の場合も同様の効果が得られる。
【００８７】
また、本実施例はその主旨を変えない範囲で様々拡張が可能である。例えば、本実施例では、ファイル消去時にデータ領域の該当するクラスタへの消去動作を実行したが、消去動作の実行タイミングはそれに限られない。例えば、フォーマット動作を実行する時点で全クラスタの消去動作を実行しても良い。勿論メモリカードの出荷時点でデータ領域のクラスタを消去済みの状態で出荷すると良い。通常メモリカードの出荷時にはメモリカードの出荷試験を実施する。このテスト終了時にディレクトリーおよびＦＡＴの書き換えによって、ファイルが無い状態にするだけでなく、本実施例のようにデータ領域の消去動作を実行しておくと、エンドユーザーの手に渡った時点で、ユーザーが手を加えることなく高速なファイル書き込みが期待できる。
【００８８】
さらに例えばデジタルスチルカメラ等で使用する場合を考えると、カメラ上でのファイルの消去、再フォーマット等の画像ファイルの消去を伴う動作時において、ＦＡＴ等の書換のみならず、ファイル本体が格納されていたクラスタ領域の消去を同時に実行すれば、その後の画像書き込みシーケンスにおいて、高速書き込みが可能となり、連写や動画の取り込み等が可能となる。この際には、クラスタサイズがデバイスのブロックサイズの正数倍で、クラスタの区切れがブロックサイズの区切れと一致しているとファイル本体部分の消去が容易となる。またデジタルカメラ等で電源の投入時等に自動的に不要なファイル部分を消去するようにしても良い。こうすれば、パソコン上で単純にＦＡＴ等の更新によってファイル消去がなされていたメモリカードに対しても、ユーザーの手を煩わせることなく書き込み高速化が計れる。またそのタイミングは電源投入時にのみならずいつでもかまわない。また、本発明はコンピュータシステム上等で本メモリカードを使用する場合も同様の手段により書き込みの高速化が計れる。
【００８９】
また、本実施例によれば、データの書き換え時に発生する、消去および書き込み回数を減らすことが可能なため、一般的に書き換え回数に制限のあるフラッシュメモリを使用する場合には、メモリの寿命をのばす効果も有する。
【００９０】
以上に述べたように、本実施例のメモリシステムの制御方法によれば、ＤＯＳのファイル管理の単位であるクラスタの区切れが、フラッシュメモリの物理的なブロックの境界をまたがないことにより、データの書き換え時に発生する消去および書き込み回数を減らすことが可能なため、書き換え速度の高速化が可能となる。さらに、一般的に書き換え回数に制限のあるフラッシュメモリを使用する場合には、メモリの寿命をのばすことも可能となる。
【００９１】
次に、本発明の第４の実施例について詳細に説明する。本実施例は、論理番地／物理番地変換テーブルに必要なＲＡＭ領域の容量の削減を行ったフラッシュメモリカードについてである。
【００９２】
本実施例では、論理番地／物理番地変換テーブル作成に際し、ホストからのアクセスを２種類に分類する。例えば、ケース１は論理ブロック５００個の内、前半の２５０個の論理ブロックをアクセスしている状態、ケース２は論理ブロック５００個の内、後半の２５０個の論理ブロックをアクセスしている状態とする。ケース１の場合は、論理番地／物理番地変換テーブルには前半２５０ブロック分のテーブルを保持させ、上記ケース２の場合は、論理番地／物理番地変換テーブルは後半２５０ブロック分のテーブルを保持させる。ケース１の場合のテーブルの状態を図３２（ａ）に示し、ケース２の場合のテーブルの状態を図３２（ｂ）に示す。
【００９３】
ある瞬間、テーブル上に論理ブロックの前半２５０個分のテーブルが存在していたとすると、ホストからのアクセス範囲が論理ブロックの後半０〜２４９ならば、既存のテーブルを使用して論理ブロック−物理ブロックの対応を検索することができる。
【００９４】
同様にある瞬間、テーブル上に論理ブロックの後半２５０個分のテーブルが存在していたとすると、ホストからのアクセス範囲が論理ブロックの後半２５０〜４９９ならば、既存のテーブルを使用して論理ブロック−物理ブロックの対応を検索することができる。
【００９５】
次に、ある瞬間、テーブル上に論理ブロックの前半２５０個分のテーブルが存在していたとし、ホストからのアクセス範囲が論理ブロックの後半２５０〜４９９ならば、既存のテーブルを使用して論理ブロック−物理ブロックの対応を検索することができない。従ってこの場合は、論理ブロックの後半２５０個分に相当する論理番地／物理番地変換テーブルを作り直す。これにはフラッシュメモリの全領域の再度の参照が必要となる。
【００９６】
同様に、ある瞬間、テーブル上に論理ブロックの後半２５０個分のテーブルが存在していたとし、ホストからのアクセス範囲が論理ブロックの前半０〜２４９ならば、既存のテーブルを使用して論理ブロック−物理ブロックの対応を検索することができない。従ってこの場合は、論理ブロックの前半２５０個分に相当する論理番地／物理番地変換テーブルを作り直す。これにはフラッシュメモリの再度の参照が必要となる。
【００９７】
このように、ホストからアクセスした領域に相当する論理番地／物理番地変換テーブルがＲＡＭ上になければ再度フラッシュメモリの全領域を参照し必要な論理番地／物理番地変換テーブルを作りなおす。
【００９８】
この場合の論理番地／物理番地変換テーブル作成のフローチャートを図３３に示す。（ステップＳ０） アクセスの最初で既に必要な論理番地／物理番地変換テーブルの有無を確認し必要であればテーブル作成ルーチンへ移行。（ステップＳ１） 論理番地／物理番地変換テーブルが入るＲＡＭ領域をリセットする。（ステップＳ２） 物理ブロックの先頭からサーチを開始する。（ステップＳ３） ブロックの冗長部を読み出す。（ステップＳ４） 所定領域のデータを元に該ブロックが正常なブロックか否かを判断する。
【００９９】
不良ブロックの場合以下に続く処理は不要となり、次のブロックのサーチに移行する。（ステップＳ５） 消去済みのエリアかどうかを判断する。（ステップＳ６） 消去済みのブロックであれば次の書き込みの際に使用するブロックの候補としてテーブル上に格納する。（ステップＳ７） 消去済みのエリアで無ければ、論理アドレス情報領域を抽出する。（ステップＳ８） 上記内容をもとに論理番地／物理番地変換テーブルを作成する。（ステップＳ９） 物理ブロック番号のカウントアップ。全ブロックサーチしたら終了。
【０１００】
以上のような動作で必要に応じ論理番地／物理番地変換テーブルを作成する。
【０１０１】
また本発明は上記実施例にかぎられない。主旨を逸脱しない範囲で種々変更が可能である。
【０１０２】
例えば本実施例では、フラッシュメモリを前半、後半の２分割したが、分割の数は２個に限定されず、任意の数に分割できる。
【０１０３】
また本実施例ではフラッシュメモリを前半、後半の等しい大きさに分割したが、本発明はこれに限られない。このように分割の個数、また大きさは自由度を有する。
【０１０４】
３個以上の領域に分割した際、常に１個のみのテーブルを保持する必要はない。たとえば本フラッシュメモリカードがＤＯＳのデバイスとして、画像ファイル等を格納する場合を考えてみる。通常デバイスの先頭には、ファイルの管理領域、すなわちマスターブートセクタ、パーティションブートセクタ、ファイルアロケーションテーブル（ＦＡＴ）、ディレクトリー領域が存在する。これらのファイル管理領域はファイルの更新が行われたり、アクセスされるたび頻繁にアクセスされる領域である。この場合このファイル管理領域に相当するエリアを１個の領域、その他のファイルデータ格納領域を２分割する。ファイル管理領域に相当する領域の論理番地／物理番地変換テーブルは、常に保持するようにしても良い。この場合、論理アドレスの後半部分にファイルを書き込む動作を行う際、ファイル管理領域と論理アドレス後半のテーブルを交互に頻繁に作り直す必要はなくなるので性能の劣化が防げる。ここでファイルの管理領域と記述したが、ファイル管理領域以上の領域に対しテーブルを常に保持すれば同様の効果が得られる。
【０１０５】
以上に述べたように本実施例によれば、論理ブロックと物理ブロックの対応関係のすべてをＲＡＭ上に常時保持するのではなく、ホストからのアクセスに応じて必要な領域のみの対応関係をシステム内のＲＡＭ上に逐次作成するので、全領域の対応関係を常時ＲＡＭ上に保持する場合に比べ、システムとして最低限必要なＲＡＭ領域を低減でき、これまで不可能であった汎用ＣＰＵの内蔵ＲＡＭのみでメモリを制御することが可能となり、外付けＲＡＭを有していた従来のケースに対して大幅なコスト削減が可能となる。
【０１０６】
次に、本発明の第５の実施例について詳細に説明する。本実施例は、論理番地／物理番地変換テーブルに必要なＲＡＭ領域の容量の削減を行ったフラッシュメモリカードについてである。
【０１０７】
本実施例では、フラッシュメモリの物理ブロックアドレスを複数の論理的な領域（以下ゾーンと呼ぶ）に分割する。このとき各ゾーンに割り当てられる物理ブロック数、すなわちゾーン毎の容量は均一であっても、不均一であってもかまわない。またゾーンの数は１個であっても複数個であってもかまわない。また偶数個であっても奇数個であってもかまわない。
【０１０８】
図３４は、１６ＭビットＮＡＮＤ型フラッシュメモリを２つの均等な容量のゾーンに分割した場合の物理ブロックの構造と論理アドレスと物理アドレスの関係を示した図である。
【０１０９】
ホストが該フラッシュメモリを制御する場合に、必要となる論理ブロック数は５００個と定義され、論理ブロックアドレス０〜４９９の値をとる。物理ブロックの冗長部には自分がどの論理ブロックに対応するデータを保持しているかを示す論理ブロックアドレス情報が格納されるが、本実施例では、論理ブロックアドレスは、ゾーン毎に０からシリーズに付与される。従って、ゾーン１には論理ブロックアドレス０〜２４９が割り当てられ、それぞれの論理ブロックは物理ブロックアドレス０〜２５５の２５６個の物理ブロックのいずれかに対応する。また物理ブロックの冗長部に格納される論理ブロックアドレスは０〜２４９のいずれかが格納される。また、ゾーン２には論理ブロックアドレス２５０〜４９９が割り当てられ、それぞれの論理ブロックは物理ブロックアドレス２５６〜５１１の２５６個の物理ブロックのいずれかに対応する。また物理ブロックの冗長部に格納される論理ブロックアドレスは０〜２４９のいずれかが格納される。
【０１１０】
データ更新時の追加書き込み方式は、更新対象となる論理ブロックアドレスを含むゾーン内で行われ、ある論理ブロックに対応するデータが存在する物理ブロックは、固定では無く、常に各ゾーン内で移動している。
【０１１１】
本実施例では、通常は電源投入時に、ゾーン内の全物理ブロックの冗長部に格納された論理ブロックアドレス情報をサーチし、システムＲＡＭ上に論理ブロックと物理ブロックの変換テーブルを作成するが、ＲＡＭ上に作成するゾーンは、どのゾーンについて行ってもかまわない。通常、該フラッシュメモリがＤＯＳ管理下で使用される場合、管理情報であるＦＡＴや、ディレクトリー領域等が最初のゾーンに置かれるため、先頭のゾーンについてテーブルを作成すると効率が良い。またＲＡＭ上に作成するテーブルは１ゾーンに制限されず、ＲＡＭ容量が許されるのであれば、複数ゾーン分作成してもかまわない。
【０１１２】
ホストからアクセス要求に対する変換テーブルの作成過程について以下に説明する。物理ブロックアドレス０〜２５５を包括する領域を設定し、ゾーン１と呼ぶ。また物理ブロックアドレス２５６〜５１１を包括する領域を設定し、ゾーン２と呼ぶことにする。ホストは現在ＲＡＭ上に作成されている変換テーブルがどのゾーンのものであるかを覚えている。
【０１１３】
ＲＡＭ上にゾーン１の変換テーブルが作成されており、論理ブロックアドレス１２８に対するアクセス要求が来た場合の手順を以下に説明する。（１）論理ブロックアドレス１２８−２５０×（n-1 ）＜２５０となるようなｎを求めるとｎ＝１である事から、ゾーン１の変換テーブルが必要であることが分かる。（２）ＲＡＭ上にある変換テーブルがゾーン１である為、テーブルの作成は行わない。（３）変換テーブル上のアドレスは０〜２４９の値をとるため、ホストが要求した論理ブロックアドレス１２８から、変換テーブル上の参照すべきアドレスを求める。１２８−２５０×（1-1 ）＝１２８より、変換テーブル上のアドレス１２８に対応する物理ブロックアドレスに対しアクセスすればよい。（４）書き換えが発生した場合は変換テーブルを更新し、次のアクセスに備える。
【０１１４】
次に、ＲＡＭ上にゾーン１の変換テーブルが作成されており、論理ブロックアドレス３２４に対するアクセス要求がきた場合の手順を以下に説明する。（１）論理ブロックアドレス３２４−２５０×（ｎ−１）＜２５０となるようなｎを求めるとｎ＝２である事から、ゾーン２の変換テーブルが必要であることが分かる。（２）ＲＡＭ上にある変換テーブルがゾーン１である為、ゾーン２に包括された物理ブロックアドレス２５６〜５１１の冗長部の論理ブロックアドレス情報をサーチし、ＲＡＭ上にゾーン２の変換テーブルの作成を行う。（３）変換テーブル上のアドレスは０〜２４９の値をとるため、ホストが要求した論理ブロックアドレス３２４から、変換テーブル上の参照すべきアドレスを求める。３２４−２５０×（２−１）＝７４より、変換テーブル上のアドレス７４に対応する物理ブロックアドレスに対しアクセスすればよい。（４）書き換えが発生した場合は変換テーブルを更新し、次のアクセスに備える。以上のように、アクセスする論理ブロックに応じて、変換テーブルを作成することで、従来より、ＲＡＭ領域を容易に小さくすることが可能である。システムＲＡＭ上にゾーン２のテーブルが作成されている場合も、同様の過程で容易に目的のアドレスにアクセスすることができる。
【０１１５】
論理番地／物理番地変換テーブルを作成するときに、ＲＡＭ上に論理ブロックと物理ブロックの変換テーブルを作成するが、このとき、作成するゾーンＮＯ．が分かっているため、変換テーブル上の物理ブロックアドレスは０〜２５５の値を取ればよい。実際に物理ブロックにアクセスするときは、ＯＦＦＳＥＴとして、変換テーブル上の物理アドレスに２５６×ゾーンＮＯ．を加える事で、容易にフラッシュメモリに入力すべき新の物理ブロックアドレスを得る事ができる。
【０１１６】
１６ＭビットＮＡＮＤ型フラッシュメモリを用いた場合、従来制御方法では、物理ブロックアドレスを表すために９ビット必要であり、ソフトの利便性からは、２バイトを費やしていた。本実施例では、図３５に示すように、物理ブロックアドレスを表すには８ビットあればよく、１バイトで済む。したがって、従来１Ｋバイト必要であったＲＡＭ容量は半分に節約できる。論理ブロックアドレスが増加すると、当然、論理番地／物理番地変換テーブルの容量はそれにともなって増加するため、本実施例の効果はフラッシュメモリの容量が大きくなるほど、大きく貢献する。
【０１１７】
また、本実施例によれば、図１１に示した物理ブロックの冗長部のＢｌｏｃｋＡｄｄｒｅｓｓ Ａｒｅａに格納可能なブロックアドレスで、大容量のフラッシュメモリシステムを制御可能とする。すなわち、１つのゾーンを上記冗長部のＢｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａに格納可能なブロックアドレス値の物理ブロックで構成されるように分割すれば、大容量の論理アドレスに対応可能となる。
【０１１８】
図３６は、１６ＭビットＮＡＮＤ型フラッシュメモリを４つの均等な容量のゾーンに分割した場合の物理ブロックの構造を示した図である。
【０１１９】
ホストが該フラッシュメモリを制御する場合に、必要となる論理ブロック数は５００個と定義され、論理ブロックアドレス０〜４９９の値をとる。物理ブロックの冗長部には自分がどの論理ブロックに対応するデータを保持しているかを示す論理ブロックアドレス情報が格納されるが、本実施例では、論理ブロックアドレスは、ゾーン毎に０からシリーズに付与される。これらの論理ブロックアドレスに対応する物理ブロックアドレスは下記のようになる。ゾーン１には論理ブロックアドレス０〜１２４が割り当てられ、それぞれの論理ブロックは物理ブロックアドレス０〜１２７の１２８個の物理ブロックのいずれかに対応する。ゾーン２には論理ブロックアドレス１２５〜２４９が割り当てられ、それぞれの論理ブロックは物理ブロックアドレス１２８〜２５５の１２８個の物理ブロックのいずれかに対応する。ゾーン３には論理ブロックアドレス１２６〜３７４が割り当てられ、それぞれの論理ブロックは物理ブロックアドレス２５６〜３８３の１２８個の物理ブロックのいずれかに対応する。ゾーン４には論理ブロックアドレス３８４〜４９９が割り当てられ、それぞれの論理ブロックは物理ブロックアドレス３８４〜５１１の１２８個の物理ブロックのいずれかに対応する。
【０１２０】
データ更新時の追加書き込み方式は、書き込み要求の発生した論理ブロックが存在するゾーン内のみで行われ、ある論理ブロックアドレスに対応するデータが格納された物理ブロックアドレスは、固定では無く、常にゾーン内で移動している。それぞれの物理ブロックの冗長部には自分がどの論理ブロックアドレスのデータを保持しているかを示す論理ブロックアドレス情報を格納している。
【０１２１】
上述のように、各ゾーンには１２５個の論理ブロックが割り当てられ、また１２８個の物理ブロックが割り当てられる。以上のように物理ブロックを４つのゾーンに分割した場合も、２つのゾーンに分割した時同様の効果を有する。
【０１２２】
次に、本実施例のリダンダンシー動作について、上記物理ブロック４つのゾーンに分割した場合を例に説明する。
【０１２３】
本実施例の説明に先立って、ゾーン分割を行わない従来のフラッシュメモリのリダンダンシー動作について、１６ＭビットＮＡＮＤ型フラッシュメモリを例に説明する。図２に示すように、１６ＭビットのＮＡＮＤ型フラッシュメモリは５１２個の物理ブロックを有するが、図３に示すように、ホストから見た論理ブロックは５００個に規定される。またＰＣカードＡＴＡインターフェースを容易に構築するための情報を格納するために１ブロック、追加書き込み方式を採用しているために１ブロック必要となる。従って本フラッシュメモリを制御する場合５０２個のブロックが必要となる。従って１６ＭビットのＮＡＮＤ型フラッシュメモリでは１０個までの不良ブロックの存在は許される。
【０１２４】
しかし、フラッシュメモリには書き換え回数の上限が存在し、使用中に不良ブロックが発生することがあり、十分な記憶領域を確保するために、不良ブロックが発生した場合の、置換先として、書き込み、消去可能な有効ブロックを持っておく必要がある。また、１０個以上の不良ブロックを有するフラッシュメモリについては、出荷時の容量が十分に無いことから出荷できず、製品歩留まりを下げるという問題も発生する。
【０１２５】
このため、有効ブロック数を多く確保し、使用中の不良ブロックの発生に備えると共に、出荷時の製品歩留まりを向上させるために、１６ＭビットＮＡＮＤ型フラッシュメモリには、５１２個の本体ブロックの他に複数の冗長ブロックが設けられている。この冗長ブロックは出荷前に、冗長回路により、５１２個の本体ブロック中に発生している不良ブロックと、ハード的に置き換えられる。冗長回路を使用すると、冗長ブロックは、不良ブロックのアドレスに割り付けられる。ハード的な置き換え後は、不良ブロックが存在したアドレスを選択すると、置き換えられた冗長ブロックが選択されるようになる。ここで、冗長ブロックは無限にあるわけではないため、出荷時に、置き換えきれなかった不良ブロックは、先天性不良ブロックとして扱われる。また、ユーザーの使用中に発生した不良ブロックは、後天性不良ブロックとして扱われる。この先天性不良ブロックと後天性不良ブロックは上記有効ブロックによって救済される。
【０１２６】
通常、本体ブロックと冗長ブロックとの置き換えを行う場合、冗長回路を使用し、ハード的に置き換えが行われるが、図３７に示したように、置き換え作業の利便性から、ブロックアドレスの小さい不良ブロックから順に連続的に、あるいは、ブロックアドレスの大きい不良ブロックから順に連続的に置き換えが行われる。従って、ブロックの置き換え後は、ブロックアドレスの小さい方から、あるいはブロックアドレスの大きい方から連続的に書き込み、消去可能なブロックが存在している。
【０１２７】
このように、従来のフラッシュメモリの制御方法では、上述したように５１２個の物理ブロックに対し、論理ブロックが５００個、ＰＣカードＡＴＡインターフェースを容易に構築するための情報を格納するために１ブロック、追加書き込み方式を採用しているために空き領域として１ブロック必要であったため、都合、５０２個の書き換え可能なブロックがあれば制御可能であった。従って、従来の制御方法では、５１２個の物理ブロックに対し、１０個の不良ブロックが許されていた。
【０１２８】
次に、本実施例のリダンダンシー動作について説明する。ゾーン１について考えると、ＰＣカードＡＴＡインターフェースを容易に構築するための情報を格納するために１ブロック、追加書き込み方式を採用しているために空き領域として１ブロック必要となる。従って、１２５個の論理ブロックに対し、１２７個の書き換え可能な物理ブロックが必要となり、ゾーン内で許される、書き換え不可能な不良ブロックは１個までとなる。ゾーン２〜４については追加書き込み用の空きブロックとして、１ブロック余分に必要であることから、１２６個の書き換え可能な物理ブロックが必要となり、ゾーン内で許される、書き換え不可能な不良ブロックは２個までとなる。以下、説明を容易にするため、１〜４ゾーンに対し、許される不良ブロック数はそれぞれ１個とする。従って、従来制御方法で許容された不良ブロック数のスペックに対し、非常に厳しくなる。
【０１２９】
図３６に示す１６ＭビットＮＡＮＤ型フラッシュメモリにおいて、例えば、ブロックアドレス２，５，１２９，１３１，１３２，３８５，３８９の７ブロックが不良ブロックであり、このフラッシュメモリは４個の冗長ブロックを有しているとする。図３６に示すように、冗長回路を使用し、従来のようにブロックアドレスの小さい不良ブロックから順に、冗長ブロックと置き換えた場合、置き換え後の不良ブロックは物理ブロックアドレス１３２、３８５、３８９の３個のブロックとなり、これらは先天性ブロックとし、該ブロックの冗長部に先天性不良ブロックのマークがつけられる。ここで従来の制御方法では、先天性不良ブロックは１０個まで許されたため、該フラッシュメモリを制御する上で特に問題はない。しかしゾーンに分割して制御することを前提とした場合、ゾーン４には物理ブロックアドレス３８５、３８９の２個の不良ブロックが存在するため制御を行えず、この製品は出荷できなくなる。
【０１３０】
このように、本実施例のフラッシュメモリにおいて、不良ブロックがあった場合、本体の不良ブロックと冗長ブロックとの置き換えを、従来のフラッシュメモリ同様、単に置き換え作業の利便性から、ブロックアドレスの小さい不良ブロックから順に連続的に、あるいは、ブロックアドレスの大きい不良ブロックから順に連続的に置き換えを行うと、必要な良ブロックが確保できず、使用できないゾーンが発生する可能性が高くなる。
【０１３１】
このため、本実施例では、フラッシュメモリがゾーンに分割され制御される場合、全てのゾーンが有効ブロック数を満たすよう、各ゾーンに存在する不良ブロックと冗長ブロックとの置き換えを行う。
【０１３２】
図３８は、ゾーン毎に存在する不良ブロックが、各ゾーンで許される不良ブロック数を越えないように、冗長ブロックとの置き換えを行った場合の物理ブロックの状態を示す図である。図３８のフラッシュメモリも、図３６に示したもの同様、ブロックアドレス２，５，１２９，１３１，１３２，３８５，３８９の７ブロックが不良ブロックと、４個の冗長ブロックを有している。従来の置き換え方法では出荷できなかったものが、良品として出荷できることが分かる。置き換え手順の一例を以下に説明する。
【０１３３】
（１）ゾーン１〜ゾーン４までをサーチし、以下の変数の値を求める。・不良物理ブロックアドレスの抽出を行う。Ｚ(n) ＢＡ(m) (n=1〜4 、m=1 〜それぞれのゾーン内の不良ブロック数）・ゾーン毎の不良ブロック数を求める。Ｚ(n) ＢＮ （n=1 〜4 ）（２）Ｚ(n) ＢＮの n=1〜4 のうち、１つでも冗長ブロックを全て使用しても、有効ブロック数を満たせないものがあれば、置換を行わず作業を終了する。（３）Ｚ(n) ＢＡのn=1 〜4 のうち、最も値の大きなｎを抽出する。（４）（３）で抽出されたｎについてＺ(n) ＢＡ(m) (m=1〜ゾーン内の不良ブロック数）の内、ブロックアドレス情報が格納されている最も小さいか、大きいｍについてＺ(n) ＢＡ(m) に格納された物理ブロックアドレスに該当するブロックを冗長ブロックと置き換える。（５）Ｚ(n) ＢＮ＝Ｚ(n) ＢＮ−１（６）（３）で選択されたｍについてＺ(n) ＢＡ(m) のブロックアドレス情報を削除する。（７）（３）〜（６）を繰り返す。冗長ブロックを使いきれば、（９）の処理へ移る。（８）Ｚ(n) ＢＮ （n=1 〜4 ）が等しければ最も小さいか、最も大きいｎのゾーンについて（３）〜（７）を繰り返す。（９）Ｚ(n) ＢＮ （n=1 〜4 ）をチェックし、スペックを越えるｎが存在すれば、不良品とする。（１０）終了 
当然、本体ブロックと冗長ブロックとの置き換え手順は種々考えられる。本実施例では４つのゾーンに分割された場合を例に説明したが、ゾーンが、２つあるいは、奇数に分割されるケースも考えられる。また分割されたゾーンの容量（ブロック数）が異なる場合も考えられる。いずれの場合においても、本実施例は、本体ブロックと冗長ブロックを置き換える場合、置き換え作業後の各ゾーンに存在する不良ブロックの個数が、それぞれのゾーンで許される不良ブロック数を越えないよう、それぞれのゾーンに存在する不良ブロック数を監視しながら、冗長ブロックとの置き換えを行うところであり、本実施例の趣旨を逸脱しない範囲で、置き換えの手順は異なってもかまわない。
【０１３４】
以上に述べたように実施例によれば、論理ブロックとフラッシュメモリの物理ブロックが１対１で対応づけられているテーブルを使用する場合に比べ、アクセス対象となるゾーン単位でテーブルを作成するため、テーブルに必要とするＲＡＭ領域を低減することが可能で、これまで不可能であった汎用ＣＰＵの内蔵ＲＡＭのみでメモリを制御することが可能となり、外付けＲＡＭを有していた従来のケースに対して大幅なコスト削減が可能となり、特に物理ブロック数の多い不揮発性半導体メモリの制御に効果が大きい。また、物理ブロックの冗長部のＢｌｏｃｋ Ａｄｄｒｅｓｓ Ａｒｅａで決められたビット数で、大容量の論理アドレスに対応できる。
【０１３５】
また、本実施例によれば、複数の物理ブロックを論理的な複数のゾーンに割り振り、ゾーン毎に論理ブロックと物理ブロックの変換テーブルを作成し、メモリアクセスを行う制御方法を行うシステムに使用されるフラッシュメモリにおいて、本体の不良ブロックと冗長ブロックとを置き換える場合、従来アドレスの小さい（大きい）方から連続的に置き換えていたのに対し、本発明では、置き換え後の各ゾーンに存在する不良ブロックの個数が、それぞれのゾーンで許される不良ブロック数を越えないよう、それぞれのゾーンに存在する不良ブロック数を監視しながら、置き換えを行うため、使用不可能なゾーンを有するために出荷できなくなる製品が減り、製品歩留りが向上する。
【０１３６】
次に、本発明の第６の実施例について詳細に説明する。本実施例は、２値／多値等のいずれのタイプにもサポート可能なフラッシュメモリカードについてである。
【０１３７】
図３９は本実施例をＰＣカードアダプターに適応した図である。フラッシュメモリカード１０１Ａは図１７に示される２値対応のものであり、フラッシュメモリカード１０１Ｂは図１８に示される４値対応のものである。ＰＣカードアダプター１０２は、フラッシュメモリカード１０１Ａおよび１０１Ｂのデータをパソコンに転送するためのものである。ＰＣカードアダプター１０２は、ＰＣカードスロット用の６８ピンのコネクタおよびフラッシュメモリカード用のコネクタを具備している。内部にはフラッシュメモリカードの制御およびＰＣカードスロットとの電気的なインターフェースを取るためのコントローラ１０３および、コントローラ内部のＣＰＵ用の発振子１０４、バッファ用のＲＡＭ１０５等がある。コントローラ１０３中には、本発明に直接的に関係する２種類のエラー訂正用の回路、ＥＣＣ回路１およびＥＣＣ回路２がある。
【０１３８】
図４０に電源投入時の制御例を示す。（ステップＳ１） 電源電圧検知本メモリカードには、５Ｖ電源電圧と、３．３Ｖ電源電圧の製品があるが、３．３Ｖ電源電圧動作のメモリカードに５Ｖの電源が印加されると、電圧破壊等の問題が発生する可能性がある。これを回避するため、システムは電源電圧を検知している。（ステップＳ２、３）ＩＤチェックフラッシュメモリカードには記憶容量またはインターフェース仕様の異なる複数種類の物がある。システムにメモリカードが挿入された時には、デバイスのメーカーコードおよびデバイスコード等を判別し、想定外のコードの場合は新たなアクセスはしないようにする。またメーカーコード、デバイスコード等の読み出しには正規の電源電圧を投入する。（ステップＳ４〜８）ＥＣＣのチェックここではＥＣＣの方式についてのチェックを行う。
【０１３９】
以下に、ＥＣＣ方式を認識させる方法の一例を示す。第１の方法は、上記ステップＳ２、３と同様にデバイスコードにより判別する方法がある。例えば、同じ容量のフラッシュメモリであっても、メモリ構成によってデバイスコードを変えれば良い。
【０１４０】
図４１は、本実施例の１６Ｍビットフラッシュメモリのデータ部と冗長部の構成を示した図である。図４に示す従来のものと異なる点は、冗長部のＵｓｒｅＤａｔａ ＡｒｅａがＥＣＣ Ｆｌａｇ ＡｒｅａとＥＣＣ Ａｒｅａ−３とに割り当てられている点である。図４１に示すようにＥＣＣの符号を格納する領域としてＥＣＣ Ａｒｅａ−１から３までの３個の領域を定義している。上記３個の領域の使用方法を図４２を用いて説明する。ここでは、ＥＣＣ Ｆｌａｇ Ａｒｅａバイト中にＥＣＣの方式に関する情報を記憶させておく。例えば、ＥＣＣ方式１の場合Ｆｌａｇデータとしては“ＡＡｈ”、ＥＣＣ方式２の場合は“５５ｈ”と定義しておく。
【０１４１】
ＥＣＣ方式１に基づく、フラッシュメモリカードの場合、ＥＣＣ Ａｒｅａ−１には、偶数ページデータ（２５６バイト）の３バイトＥＣＣコードが、ＥＣＣ Ａｒｅａ−２は、奇数ページデータ（２５６バイト）の３バイトＥＣＣコードが入り、ＥＣＣ Ａｒｅａ−３は空白である。ＥＣＣ Ａｒｅａ−１および２は各々２５６バイトのデータの内、２ビットのエラーを訂正できる。
【０１４２】
ＥＣＣ方式２に基づく、フラッシュメモリカードの場合、ＥＣＣ Ａｒｅａ−１、ＥＣＣ Ａｒｅａ−２、ＥＣＣ Ａｒｅａ−３に５１２バイトに対するＥＣＣ符号が分散して記憶される。この場合５１２バイトのデータの内、２ビットのエラーを訂正できる。
【０１４３】
図３９のＰＣカードアダプター１０２内のコントローラ１０３はフラッシュメモリカードがアダプターに挿入されるとＥＣＣ Ｆｌａｇ Ａｒｅａを読み出し、ＥＣＣ方式を判別する。
【０１４４】
図３９中では、ＥＣＣ方式１およびＥＣＣ方式２それぞれに対応した符号生成、およびエラー検出回路が選択される。コントローラ中のＣＰＵはホストとバッファ用ＲＡＭとフラッシュメモリ間のデータの流れを制御する。また図３９中のＥＣＣ回路は、必ずしもハードウェアである必要性はない、ＥＣＣ符号の生成等すべてをソフトウェアで実行することも勿論可能である。
【０１４５】
また本発明は上記実施例に限られない。発明の主旨を逸脱しない範囲で種々変更可能である。
【０１４６】
上記実施例では、２種類のＥＣＣ方式の存在を仮定したが、方式は２種類には限られない。３種類以上のＥＣＣ方式を設定可能である。
【０１４７】
また、ＥＣＣ方式の選択には、ＥＣＣを使用しないという選択も含まれる。信頼性の非常に高いフラッシュメモリカードや、音声分野等のデーダで特に高い信頼性を必要としない分野等ではＥＣＣは必須ではない。その場合、上記ＥＣＣＦｌａｇ Ａｒｅａの内容が“ＦＦｈ”であればＥＣＣを使用していないと定義しても良い。
【０１４８】
また上記実施例では、フラッシュメモリ毎にＥＣＣの方式を定義していたが、本発明はそれにかぎられない。例えば、セクタ単位、もしくはブロック単位等、任意の単位でＥＣＣの方式を切り替えてもよい。この場合、単純に電源投入時にＥＣＣの方式を判別するのではなく前述の所定単位にアクセスする都度ＥＣＣの方式を切り替えてもよい。また例えば、ＥＣＣの方式１で読み出されたデータを方式２に変換して再格納するような動作も想定可能である。
【０１４９】
また上記実施例では、ＰＣカードアダプターを例に説明したが、本実施例はＰＣカードアダプターに限られない。例えば、デジタルスチルカメラやＰＤＡ、ワードプロセッサー、音声録音機等各種機器に対しても同様に議論可能である。このように本実施例を使用すれば、非常に広い使用範囲のフラッシュメモリカードを１つのシステムで使用可能となる。
【０１５０】
以上に述べたように、本実施例によれば、エラー訂正アルゴリズムの異なる複数のフラッシュメモリカードを一つのシステムが取り扱い可能となるので、飛躍的に汎用性が向上する。
【図面の簡単な説明】
【０１５１】
【図１】メモリカード外観図である。
【図２】フラッシュメモリの物理ブロック構成を示す図である。
【図３】パソコンにおけるデータを示す図である。
【図４】フラッシュメモリのデータ格納方法を示す図である。
【図５】フラッシュメモリの物理ブロック構成を示す図である。
【図６】フラッシュメモリの物理ブロック構成を示す図である。
【図７】フラッシュメモリのデータ格納方法を示す図である。
【図８】従来例の論理・物理ブロック変換テーブルを示す図である。
【図９】従来のメモリシステムにおける論理アドレスと物理アドレスの変換テーブル構成を示す図である。
【図１０】６４ＭビットＮＡＮＤ型フラッシュメモリシステムにおける論理アドレスと物理アドレスの変換テーブル構成を示す図である。
【図１１】フラッシュメモリのブロックアドレスのデータ配置を示す図である。
【図１２】従来のＤＯＳフォーマットのパラメータを示す図である。
【図１３】従来の書き替えシーケンスを示す図である。
【図１４】従来の書き替えシーケンスを示す図である。
【図１５】従来の書き替えシーケンスを示す図である。
【図１６】従来の消去コマンド実行時の管理領域とデータ領域の関係を示した図である。
【図１７】フラッシュメモリの格納データ例を示す図である。
【図１８】フラッシュメモリの格納データ例を示す図である。
【図１９】従来のシステムを示す図である。
【図２０】本発明のメモリシステムにおけるＥＣＣデータ構成を示す図である。
【図２１】本発明のメモリシステムにおけるＥＣＣコードを算出するための条件を示した図である。
【図２２】本発明のメモリシステムにおける電源投入時の制御フローチャートである。
【図２３】本発明のメモリシステムにおける論理アドレス／物理アドレス変換テーブル作成のフローチャートである。
【図２４】本発明のメモリシステムにおける論理アドレスと物理アドレスの変換テーブル構成を示す図である。
【図２５】本発明のメモリシステムにおける読み出し時のフローチャートである。
【図２６】本発明のメモリシステムにおける書き込み時のフローチャートである。
【図２７】本発明のＤＯＳフォーマットのパラメータを示す図である。
【図２８】本発明の書き換えシーケンスを示す図である。
【図２９】本発明の書き換えシーケンスを示す図である。
【図３０】本発明の書き換えシーケンスを示す図である。
【図３１】本発明の消去コマンド実行時の管理領域とデータ領域の関係を示した図である。
【図３２】本実施例による論理ブロック−物理ブロック変換テーブル例を示す図である。
【図３３】本実施例による論理ブロック−物理ブロック変換テーブル作成例を示す図である。
【図３４】実施例の論理・物理ブロック変換テーブルを示す図である。
【図３５】実施例での物理ブロックアドレスの表現方法を示す図である。
【図３６】従来の不良ブロックと冗長ブロックの置換えを行った場合の実施例を説明するための図である。
【図３７】不良ブロックと冗長ブロックの置き換えの従来例を説明するための図である。
【図３８】ゾーン分割制御を前提に不良ブロックと冗長ブロックの置き換えを行った場合の実施例を説明するための図である。
【図３９】本発明のＰＣカードアダプターの構成を示す図である。
【図４０】フラッシュメモリカードをＰＣカードアダプターに挿入したときの、フローチャートを示す図である。
【図４１】本実施例に係るフラッシュメモリのＤＯＳフォーマットのパラメータを示す図である。
【図４２】ＥＣＣ符号領域の使用方法を示す図である。
【図１】
2007293917.tif 000003
【図２】
2007293917.tif 000004
【図３】
2007293917.tif 000005
【図４】
2007293917.tif 000006
【図５】
2007293917.tif 000007
【図６】
2007293917.tif 000008
【図７】
2007293917.tif 000009
【図８】
2007293917.tif 000010
【図９】
2007293917.tif 000011
【図１０】
2007293917.tif 000012
【図１１】
2007293917.tif 000013
【図１２】
2007293917.tif 000014
【図１３】
2007293917.tif 000015
【図１４】
2007293917.tif 000016
【図１５】
2007293917.tif 000017
【図１６】
2007293917.tif 000018
【図１７】
2007293917.tif 000019
【図１８】
2007293917.tif 000020
【図１９】
2007293917.tif 000021
【図２０】
2007293917.tif 000022
【図２１】
2007293917.tif 000023
【図２２】
2007293917.tif 000024
【図２３】
2007293917.tif 000025
【図２４】
2007293917.tif 000026
【図２５】
2007293917.tif 000027
【図２６】
2007293917.tif 000028
【図２７】
2007293917.tif 000029
【図２８】
2007293917.tif 000030
【図２９】
2007293917.tif 000031
【図３０】
2007293917.tif 000032
【図３１】
2007293917.tif 000033
【図３２】
2007293917.tif 000034
【図３３】
2007293917.tif 000035
【図３４】
2007293917.tif 000036
【図３５】
2007293917.tif 000037
【図３６】
2007293917.tif 000038
【図３７】
2007293917.tif 000039
【図３８】
2007293917.tif 000040
【図３９】
2007293917.tif 000041
【図４０】
2007293917.tif 000042
【図４１】
2007293917.tif 000043
【図４２】
2007293917.tif 000044