(57)【特許請求の範囲】
【請求項１】
ホストコンピュータとフラッシュメモリとのデータの授受を管理するメモリマネージャを有するフラッシュメモリシステムであって、
前記メモリマネージャは、前記ホストコンピュータから与えられる論理アドレスと前記フラッシュメモリの実アドレスである物理アドレスとを相互に変換するためのアドレス変換テーブルを有し、該アドレス変換テーブルに基づいて前記論理アドレスを前記物理アドレスに変換し、
更に、前記アドレス変換テーブルを含む内部情報の初期値を前記フラッシュメモリに記憶させると共に、前記内部情報が変化する毎に該内部情報の変化分と該変化分のエラーコレクションコードを前記フラッシュメモリに順次記憶させ、電源投入時に、前記フラッシュメモリに記憶された前記初期値と複数個の前記変化分とに基づいて前記内部情報を復元するように構成されており、
複数個の前記変化分は、それぞれの前記変化分に対するエラーコレクションコードの符号化及び復号化を前記データと同じ演算処理で行える配列で前記フラッシュメモリに記憶されている、
ことを特徴とするフラッシュメモリシステム。
【請求項２】
ホストコンピュータとフラッシュメモリとのデータの授受を管理するメモリマネージャを有するフラッシュメモリシステムであって、
前記メモリマネージャは、前記フラッシュメモリ内の物理ブロックの良否を示す情報を含むブロックステータステーブルと前記ホストコンピュータから与えられる論理アドレスと前記フラッシュメモリの実アドレスである物理アドレスとを相互に変換するためのアドレス変換テーブルを有し、前記ブロックステータステーブルに基づいて前記物理ブロックの良否を管理し、前記アドレス変換テーブルに基づいて前記論理アドレスを前記物理アドレスに変換し、
更に、前記ブロックステータステーブルを含む内部情報の初期値を前記フラッシュメモリに記憶させると共に、前記内部情報が変化する毎に該内部情報の変化分と該変化分のエラーコレクションコードを前記フラッシュメモリに順次記憶させ、電源投入時に、前記フラッシュメモリに記憶された前記初期値と複数個の前記変化分とに基づいて前記内部情報を復元するように構成されており、
複数個の前記変化分は、それぞれの前記変化分に対するエラーコレクションコードの符号化及び復号化を前記データと同じ演算処理で行える配列で前記フラッシュメモリに記憶されている、
ことを特徴とするフラッシュメモリシステム。
【発明の詳細な説明】
技術分野
本発明は不揮発性メモリであるフラッシュメモリに関し、より詳しくはフラッシュメモリを適切に管理するための管理システムを備えたフラッシュメモリシステムに関する。
背景技術
コンピュータシステムに用いられている記憶媒体として、ハードディスク、フロッピーディスク等の磁気記録媒体が従来より使用されている。なかでも大容量でしかも高速動作が可能なハードディスクは、大量のデータを蓄積することができることからシステムの中心的な記憶媒体として位置づけられている。
しかし、ハードディスクは製造工程が複雑で、小型・軽量化や低コスト化を図ることが困難であり、構造物を動かすために比較的大きな消費電力を必要とし、特に携帯機器等へ応用する場合に問題となる。
ハードディスク以外の記憶媒体として、不揮発性の記憶素子としてフラッシュメモリが知られている。フラッシュメモリは記憶を維持するための電源が不要であり、小型・軽量化が可能である。
フラッシュメモリはその構造上、アクセス回数にして１０10程度の有限の物理的寿命を有する。このため、フラッシュメモリを長期にわたって比較的安全に、安定して使用するためには、寿命が尽きた記憶要素や不良が生じた箇所を検出し、これらを回避してデータを保存する必要がある。さらに、フラッシュメモリの場合、すでにデータが記憶されている箇所に新たなデータを上書きすることができない。従って、新たなデータを記憶しようとする場合、一旦記憶されている内容を消去した後にデータを書き込むこととなる。ところが、消去可能な単位は個々の記憶要素（＝ビット）単位ではなく、例えば、４ｋバイトや８ｋバイトといったブロック単位で行われる。このため、通常、書き換えられるデータ以外の部分を消去ブロックから一旦待避させた後、これを消去し、再度新たなデータを加えて書き込むといった操作が必要となる。
特開平２−２９２７９８号公報には、フラッシュメモリへの書き込み／読み出し速度の向上や、不良セル等の管理を目的としたフラッシュＥＥｐｒｏｍシステムが記載されている。ここに記載されているフラッシュＥＥｐｒｏｍシステムは、キャッシュメモリの採用によりアクセスタイムの向上を図ろうとしている。しかしながら、キャッシュメモリに依存したアクセスタイムの短縮には自ずと限界があり、フラッシュメモリへの書き込み／読み出し速度のより一層の向上を図るためには、フラッシュメモリシステム全体での動作速度を向上させる必要がある。
また、前記公報では不良セル等の管理のため、冗長部分にＥＣＣ等の情報や、交替ビット、交替セクターの情報等を持たせ、この冗長部分の情報のみで不良セル等の管理を行っている。しかし、冗長部分のみで不良セル等の管理を行っているため、この冗長部分の記憶容量を大きくしなければならず、実データを記憶する領域を圧迫してしまう。さらに、このシステムでは冗長部分のみで不良セルなどの管理を行っているため、実データの読み出しに先立って、前記冗長データを読み出し、メモリ内に記憶されているデータの適否やその修復等を行ったりするためにアクセス時間を大幅に遅らせる要因となっていた。
ところで、フラッシュメモリシステムは不揮発性メモリであるが、電源投入時やリセット時には、そのコントローラがフラッシュメモリの内容や状態を把握するため、フラッシュメモリの内容、特に前記冗長データを読み出す必要が生じる。しかし、前述のようにフラッシュメモリの読み出し速度は、通常のＲＡＭ等と比較して遅いため全ての情報を把握するために多くの時間を要し、結果として立ち上がりの遅いシステムになってしまう。
このような立ち上がりの遅れは、例えばデジタルカメラ等のように、電源投入から即座に使用可能な状態にする必要があるシステムにとっては致命的な問題であり、より高速に立ち上げることの可能なフラッシュメモリシステムが望まれていた。
発明の開示
本発明の目的は、電源投入時やリセット後の立ち上がり速度が速く、書き込み／読み出し時間の遅れが少なく、書き込み動作を比較的簡単に行うことができ、高速な動作が可能で、不良セクターや不良ビット等の管理を適正に行うことの可能なフラッシュメモリシステムを実現することである。
本発明者は、フラッシュメモリへの書き込み／読み出し速度を向上させるべく研究を重ねた結果、アドレス変換テーブルを提案するに至った。Ｓ−ＲＡＭ等の高速にアクセスすることの可能な記憶媒体上に形成されたアドレス変換テーブルは、ホストコンピュータ側から指定される論理アドレスと、フラッシュメモリの実アドレスである物理アドレスとを関係付け、これを相互に変換する。
このアドレス変換テーブルはまた、フラッシュメモリの最小消去単位であるブロック毎に規定され、上記アドレスは、それぞれ論理ブロックアドレス、物理ブロックアドレスとして取り扱われる。このように、最小消去単位に対応したブロック毎にアドレス変換を行うことにより、特に書き込み動作におけるフラッシュメモリの管理が容易となり、高速に書き込み動作を行うことが可能となった。
また、前記論理アドレスの領域と物理アドレスの領域とは大きさが異なっていて、論理アドレスの領域は物理アドレスの領域よりも小さく設定されている。このように設定することで、両者の差の領域を予備領域として活用することができる。すなわち、この予備領域を使用待機状態の待ち行列（Queue）とし、不良ブロックと交換したり、書き込み動作時には新たなデータが書き込まれる領域の代替えとして活用する。これによりさらに動作速度が向上する。
さらにまた、前記アドレス変換テーブルに加えて、フラッシュメモリ上の各物理ブロックの状態を示すデータとして、少なくとも、その良否、バッドセクターの有無および使用の有無を表しているデータを有するブロックステータステーブルを設ける。このブロックステータステーブルを設けることにより、一々動作速度の比較的遅いフラッシュメモリをアクセスすることなく、即座にフラッシュメモリ内の各ブロックの状態が把握でき、不良ブロック、不良セクターの管理が容易に行え、動作速度がさらに向上する。
ところで、これらアドレス変換テーブル、ブロックステータステーブル、待ち行列（Queue）といった内部情報は、通常、高速にアクセスすることができる記憶媒体（Ｓ−ＲＡＭ）上に形成される。しかしながら、このような記憶媒体は揮発性であるため、電源断やリセット時には消滅したり信頼性を失ったりしてしまう。このため、その保存データすなわち上記の内部情報を不揮発性の記憶媒体であるフラッシュメモリ上に記憶させておく必要がある。そして、電源投入時やリセット時にはフラッシュメモリをアクセスして、アドレス変換テーブル、ブロックステータステーブル、待ち行列（Queue）といった内部情報を、記憶されているデータにより以前の状態に復元する。
しかし、このような内部情報はフラッシュメモリへの書き込み／読み出し動作等が行われる度に変化して行くが、これを一々保存したのでは膨大な記憶領域を必要としてしまう。また、このような操作を書き込み／読み出し等の度に行うこととなるが、この保存のための時間が長い程、その分だけ余計な時間を消費してしまい、結果として動作速度が遅くなってしまう。さらに、電源投入時やリセット時にフラッシュメモリの全ての領域にアクセスし、アドレス変換テーブル、ブロックステータステーブル、待ち行列（Queue）といった内部情報を復旧することとすると、さらに膨大な時間を必要とし、立ち上がりの非常に遅いシステムとなってしまう。
そこで、これらの内部情報データを一括して保存し、即座に読み出せるようにしておけば便利である。また、保存する内容も、初期値＋Δレコード、すなわち初期値のみ全データを保存し、その後に生じた変化は、その変化分のデータ（Δレコード）のみ保存するようにすれば、データ容量も少なく、アクセス時間も大幅に短縮できる。また、その際にΔレコードに生じた障害の位置や大きさを示すエラーコレクションコードデータも併せて記録することにより、データの信頼性が飛躍的に向上する。そして、電源投入時やリセット時にはこれらのデータを用いて以前の状態を復元することができる。
すなわち、上記目的は以下の構成により達成される。
（１）ホストコンピュータとフラッシュメモリとのデータの授受を管理するメモリマネージャを有するフラッシュメモリシステムであって、
前記メモリマネージャは、前記ホストコンピュータから与えられる論理アドレスと前記フラッシュメモリの実アドレスである物理アドレスとを相互に変換するためのアドレス変換テーブルを有し、該アドレス変換テーブルに基づいて前記論理アドレスを前記物理アドレスに変換し、
更に、前記アドレス変換テーブルを含む内部情報の初期値を前記フラッシュメモリに記憶させると共に、前記内部情報が変化する毎に該内部情報の変化分と該変化分のエラーコレクションコードを前記フラッシュメモリに順次記憶させ、電源投入時に、前記フラッシュメモリに記憶された前記初期値と複数個の前記変化分とに基づいて前記内部情報を復元するように構成されており、
複数個の前記変化分は、それぞれの前記変化分に対するエラーコレクションコードの符号化及び復号化を前記データと同じ演算処理で行える配列で前記フラッシュメモリに記憶されている、フラッシュメモリシステム。
（２）ホストコンピュータとフラッシュメモリとのデータの授受を管理するメモリマネージャを有するフラッシュメモリシステムであって、
前記メモリマネージャは、前記フラッシュメモリ内の物理ブロックの良否を示す情報を含むブロックステータステーブルと前記ホストコンピュータから与えられる論理アドレスと前記フラッシュメモリの実アドレスである物理アドレスとを相互に変換するためのアドレス変換テーブルを有し、前記ブロックステータステーブルに基づいて前記物理ブロックの良否を管理し、前記アドレス変換テーブルに基づいて前記論理アドレスを前記物理アドレスに変換し、
更に、前記ブロックステータステーブルを含む内部情報の初期値を前記フラッシュメモリに記憶させると共に、前記内部情報が変化する毎に該内部情報の変化分と該変化分のエラーコレクションコードを前記フラッシュメモリに順次記憶させ、電源投入時に、前記フラッシュメモリに記憶された前記初期値と複数個の前記変化分とに基づいて前記内部情報を復元するように構成されており、
複数個の前記変化分は、それぞれの前記変化分に対するエラーコレクションコードの符号化及び復号化を前記データと同じ演算処理で行える配列で前記フラッシュメモリに記憶されている、フラッシュメモリシステム。
【図面の簡単な説明】
図１は、本発明のフラッシュメモリシステムの基本構成を示したブロック図である。
図２は、本発明のフラッシュメモリシステムの基本構成を示したブロック図で、内部情報をフラッシュメモリから再現する様子を表した図である。
図３は、フラッシュメモリ内部の論理アドレス領域の大きさと、物理アドレス領域の大きさを示した概念図である。
図４は、アドレス変換テーブルの一構成例を示す概念図である。
図５は、フラッシュメモリ内の物理アドレス領域に対して論理アドレスを配した概念図であり、論理アドレス領域に対応する物理アドレス領域を示している。
図６は、余剰領域が物理アドレス領域中に分散して配置されている状態を示した概念図である。
図７は、待ち行列（Ｑueue）の様子を概念的に示した図である。
図８は、ブロックステータステーブル一構成例を示す概念図である。
図９は、フラッシュメモリシステムをメモリカードに応用した例を示すブロック構成図である。
図１０は、フラッシュメモリの実データ領域と、冗長データ領域の様子を示した概念図で、実データ領域の１つのセクターに不良個所がある様子を表した図である。
図１１は、リセット時における動作であって、ブロックステータステーブルを形成していく様子を示した概念図である。
図１２は、リセット時における動作であって、フラッシュメモリにアドレス変換テーブル、ブロックステータステーブル、待ち行列のオリジナルデータをΔレコードとして記録している様子を示した概念図である。
図１３は、書き込み時における動作であって、フラッシュメモリに変更されたアドレス変換テーブル、ブロックステータステーブル、待ち行列のデータをΔレコードとして記録している様子を示した概念図である。
図１４は、フラッシュメモリから読み出された消去パターンを反転するための反転器を示した概念図である。
図１５は、生成多項式を得るための除算器の構成例を示した概念図である。
図１６は、生成多項式を得るための計算式の一例を示した図である。
図１７は、生成多項式により処理されるデータ列を、任意の大きさに分割した様子を示した概念図である。
図１８は、内部情報の変化分を示すデータに、生成多項式で得られた余りのデータを付加する様子を示した概念図である。
発明を実施するための最良の形態
本発明のフラッシュメモリシステムは、例えば図１に示すように、ホストコンピュータ１とフラッシュメモリ５とのデータの授受を管理するメモリマネージャ３を有する。この、メモリマネージャ３は、前記ホストコンピュータ１からフラッシュメモリ５をアクセス可能な論理アドレスと、フラッシュメモリ５の実アドレスである物理アドレスとを相互に変換し、かつ初期値に対する内部情報の変化をΔレコードとして前記フラッシュメモリに保有する。そして、例えば図２に示すように、リセット後に前記Δレコードの情報によりリセット前の状態に内部情報を復元する。
内部情報のデータを全て記録するのではなく、初期値としてオリジナルな内部情報のデータと、その後に変化した部分の情報のみをΔレコードとして記録することにより、少ない記憶領域に全ての内部情報を記録することができる。そして、電源投入時やリセット時等内部データが失われる事態が生じても、これをもとに内部情報を復元できると共に、メモリへのアクセス時間が短縮され高速動作が可能になる。
Δレコードとして記録される内部情報は、特に限定されるものではないが、例えば、フラッシュメモリへの書き込み／読み出し動作に伴う設定内容およびその変化や、不良ブロック、代替ブロック、不良セクター、代替セクター等に関する情報およびその変化等が挙げられる。これらのデータは論理アドレスと物理アドレスを関係付けたり、メモリへの書き込み／読み出し動作を行う上で必要とするデータであったり、メモリやデータの不良部分を修復したりする上で必要とされるデータであったりする。これらのデータは、後述するようにフラッシュメモリへ操作を行う上で経時的に変化して行くものである。
この内部情報は、通常、Ｓ−ＲＡＭ、Ｄ−ＲＡＭ等、比較的高速にアクセスすることが可能で、揮発性の記憶媒体中に保存されている。従って、電源遮断状態やリセット時にはこれが消滅するか、信頼性を失ってしまう。そこで、これらのデータを不揮発性の記憶媒体であるフラッシュメモリに記憶し、電源遮断時や、リセット時にもこれを保存し、復帰時にこれを読み出すことにより、それ以前の状態を復元できるようにする。
Δレコードは、フラッシュメモリ上の所定の領域に、好ましくは連続して記録される。連続して記録することにより、Δレコードに必要な記憶容量を最小限に抑えることができる。また、記録されるデータ長は、初期のデータを除き所定の長さに調整することが好ましい。Δレコードには初期値としてオリジナルの内部情報データを記録し、次いで、内部情報に変更が生じる度にその変更部分を記録して行く。通常の動作においては、内部情報に変更が生じる箇所は一部の部分のみであるため、その部分を記録するようにすればよい。そして、これらのデータから復元するときには、前記オリジナルのデータに同様な変更を加えて行けばよい。
また、好ましくはΔレコードはＥＣＣ（エラーコレクションコード）データを有する。ＥＣＣデータを保有することにより、Δレコード自体に障害が生じた場合に、その位置や大きさを把握することができ、これを修復したり、場合によっては破棄したりすることができる。
ＥＣＣデータは、ハミング符号の一種であり、好ましくは巡回符号であるＢＣＨ符号、ＲＳ符号等が好ましい。これらの符号はＧ（x）で与えられる生成多項式により容易に得ることができる（シフトレジスタ等や、これをソフトウエア化したプログラムを応用することにより得ることができる）。ＥＣＣデータにより、誤りの場所と大きさを特定することができ、これによりΔレコードの信頼性が大幅に向上する。
ΔレコードにＥＣＣデータを付加するわけであるが、通常、フラッシュメモリ５の実データ領域にΔレコードを記録すると、冗長領域の部分にＥＣＣデータがフラッシュメモリインターフェースによって自動的に付加される。ところが、後述するようにΔレコード自体、前記変化分のデータとＥＣＣデータとが組み合わされたものである。このため、冗長領域のデータは消去パターン（１１１・・・）のままにしておく。つまり、変化分のデータ＋ＥＣＣデータは、生成多項式で割り切れる値となるので、通常の冗長領域に書き込まれるＥＣＣデータは、消去パターン（１１１・・・）とすることにより、通常のシステムのままでも問題なく動作することになる。
Δレコードは、通常、前記内部情報に変更が生じる度に逐次記録されて行く。そして、電源遮断後やリセット後にこれを読み出し内部情報を復元する。通常、電源投入後やリセット後には、メモリマネージャの制御部であるマイクロプロセッサは、ハードやソフト上の設定により、Δレコードの復元操作を行うようになっている。
リセットは、電源投入時等にハードウエア（電源監視ＩＣ、リセットスイッチ等）から自動的に与えられるハードリセットと、ソフトウエア上の操作により与えられるソフトリセット等があるが、いずれのものでも良い。
ホストコンピュータ１は、マイクロプロセッサおよびこのマイクロプロセッサの周辺素子やキーボード、通信ポート、拡張バス、ディスプレイ等の入出力手段を備え、ハードディスク等の内部・外部の記憶媒体と接続可能であって、コンピュータ（パソコン）として必要な動作（一般用途、特定用途を問わない）をなし得るものであればその態様、形態は問わない。
メモリマネージャ３は、ホストコンピュータ１とフラッシュメモリ５とのデータの授受を管理する。すなわち、ホストコンピュータ１から送出されてくるデータや、フラッシュメモリ５から送出されてくるデータの転送速度を調整したり、ホストコンピュータ１から指定される読み出し／書き込みのための論理アドレスデータを物理アドレスデータに変換したりする。
また、好ましくは図３に示すように、前記ホストコンピュータ１からフラッシュメモリをアクセス可能な論理アドレス領域の大きさＬｎを、フラッシュメモリの実アドレスである物理アドレス領域の大きさＰｎより小さく設定し、かつ物理アドレス領域の論理アドレス領域と対応しない余剰領域５ａは前記待ち行列を構成する。その待ち行列から取り出されたブロックの一つに前記内部情報と前記Δレコードを有する。
また、メモリマネージャ３は、好ましくは制御部等から参照可能な記憶媒体上に形成されているアドレス変換テーブルを用いて、ホストコンピュータ１からフラッシュメモリ５に与えられる論理アドレスを、フラッシュメモリ５の実アドレスである物理アドレスに変換したり、その逆の変換を行ったりする。
フラッシュメモリ５は不揮発性メモリであって、ＥＥＰＲＯＭの一種と見ることができる。すなわち、データの読み出しは随時行うことができるが、データの書き込みは、通常データ消去後に１回のみ行うことができ、データの上書きはできない。従って、データの書き込み動作を行う前には必ず記憶されているデータを消去するための動作が伴う（初期状態を除く）。データを消去する場合、フラッシュメモリでは、その構造上所定の記憶領域を一括して消去することとなる。本発明で好ましく用いられるＮＡＮＤ型フラッシュメモリにおいて、消去可能な最小領域は、通常、前記最小記憶単位（１セクター＋冗長部分）の８個または１６個分、つまり、４ｋバイトまたは８ｋバイトである（冗長部分を除く）。
従って、メモリマネージャ３は、好ましくは論理アドレス、物理アドレスを、この最小消去単位に対応したブロック毎に取り扱う。ブロック毎にフラッシュメモリを取り扱うことにより、フラッシュメモリを効率良く管理することができる。この場合、Δレコードもこのブロック毎に規定された内部情報を記憶することとなる。
フラッシュメモリ５は、所定の記憶容量を確保するため、複数のフラッシュメモリ素子（ＩＣ）が集合したメモリアレイを構成していてもよい。
本発明のシステムは、好ましくはさらにバスインターフェース２と、フラッシュメモリインターフェース４とを有する（図１参照）。
バスインターフェース２は、ホストコンピュータ１と接続するためのバス、例えばＳＣＳＩ、ＩＤＥ等の外部接続用バスや、これらのバスに準拠したＰＣＭＣＩＡ等のＰＣカードインターフェース等が挙げられる。なかでも、好ましい態様として、本発明のフラッシュメモリシステムをＰＣカードに応用する場合、ＰＣカードインターフェースを用いることとなる。従って、バスインターフェース３は、これらの規格、仕様に準拠して適切にホストコンピュータと接続しうるものである。また、このバスインターフェース３は、ホストコンピュータ１側から見た場合、フラッシュメモリ５をハードディスクと同等に扱うことができるものであれば、既存のＯＳ、アプリケーションソフト等をそのまま用いることができる。
フラッシュメモリインターフェース４は、フラッシュメモリ５への書き込み／読み出しを自動的に制御したり、適性化したりする。すなわち、消去作業を伴うフラッシュメモリへの書き込み動作を自動的に行ったり、あるアドレスからあるアドレスまでの読み出し動作等を連続して自動的に行ったりする。フラッシュメモリインターフェース４は、例えば、フラッシュメモリシーケンサー等のように演算機能を有する制御素子と、各種レジスタ、動作手順を記憶するための記憶素子等により構成することができる。
また、本発明のフラッシュメモリシステムは、好ましくは論理ブロックアドレスと物理ブロックアドレスとを相互に変換するためのアドレス変換テーブルを有する。
物理アドレスは、論理アドレスと、通常１対１で対応するわけであるが、これらの対応関係は、好ましくはブロック毎に規定する。すなわち、両者はそれぞれブロック毎に扱われ、その先頭アドレスについて、物理ブロックアドレスと、論理ブロックアドレスとして規定される。そして、これからのオフセット値として物理アドレスおよび論理アドレスが規定される。また、個々のブロックはアドレス変換テーブル等を用いて、論理ブロックアドレスから物理ブロックアドレス、あるいは物理ブロックアドレスから論理ブロックアドレスへと変換される。
図４はアドレス変換テーブル３１の構成例を示す概念図である。アドレス変換テーブル３１は、フラッシュメモリ５内の最小消去単位（最小消去ブロック）と対応して形成されている。
アドレス変換テーブル３１は、図４に示す例では、１つのブロック内の上段に論理ブロックアドレスを、下段に物理ブロックアドレス（図中番号の頭に＃を付して表示している）を配置し、ある特定の論理ブロックアドレスに対して、任意の物理ブロックアドレスを、通常、１対１で関係付けることができるようになっている。すなわち、対応する論理ブロックアドレスと物理ブロックとが、所定のブロック内に配置される。そして、ホストコンピュータ１側に解放されているアクセス可能なメモリ領域での最大の論理ブロックアドレスＮｈと、これに対応する大きさの物理ブロックアドレスまで規定される。
ここで論理ブロックアドレスとは、前述のようにホストコンピュータ１から特定のメモリ内の記憶単位をアクセスする際に指定されるアドレス番号であって、これを上記最小消去単位に対応した大きさのブロック毎に分割した先頭アドレスをいう。物理ブロックアドレスとは、フラッシュメモリ上の実際のアドレス番号であって、最小消去単位の先頭アドレスをいう。
前述のように、アドレス変換テーブル３１では、実際のメモリ領域であって物理アドレスの最大領域である物理アドレス領域に対し、ホストコンピュータからアクセス可能な論理アドレス領域が小さくなるように設定される。すなわち、前記Δレコード等を保存（記憶）可能なように小さく設定されている。また、この論理ブロックアドレスと対応していない物理ブロックアドレスの余剰領域の一部を待ち行列（Ｑueue）としてもよい。
例えば、図５に示すように、フラッシュメモリ５において、ホストコンピュータ１側に解放されている物理ブロック領域は論理ブロックアドレスと対応していて、その最大値Ｎhまでの範囲となっている。また、余剰領域５ａ（図中斜線で表示）として、論理ブロックアドレスの最大値Ｎhと対応する物理ブロックアドレスに１を加えたアドレスＮh＋１から、物理ブロックアドレスの最大値Ｎmaxまでの領域が存在する。そしてこの領域内にΔレコードや待ち行列（Ｑueue)を有する。
なお、余剰領域５ａは図５に示したように、物理アドレス領域の最後部に連続して存在している必要はなく、最前部にあってもよいし、例えば、図６に示すように物理アドレス領域内に島状に散在していても良い。余剰領域を分散した結果、図示例では論理アドレス領域の最大値Ｎhと、物理アドレス領域の最大値Ｎmaxとは同じ位置になっている。余剰領域が分散された状態は、通常、後述する不良ブロックや書き込み動作時の待ち行列（Ｑueue）との置換操作を繰り返すこと等により形成される。なお、図６においてブロック中に記載されている数字は、図５の場合と異なり論理ブロックアドレスを表す。このように、待ち行列（Ｑueue）を有する余剰領域５ａは論理ブロックアドレスと対応しないため、ホストコンピュータ１側からは認識されないこととなる。
アドレス変換テーブル３１により論理ブロックアドレスと物理ブロックアドレスとが関係付けられるわけであるが、両者の対応関係は必ずしも小さいアドレス番号順になっている必要はなく、任意のアドレス同士が対応していても良い。つまり、所定の領域を形成する両者のブロックアドレス同士が、１対１で関係付けられるものであればよい。従って、アドレス変換テーブルを用いることなく関数等を用いることも可能である。
待ち行列（Ｑueue）は、通常初期状態では、前記余剰領域中の若いアドレスから順次形成される（但し不良個所などを除く）。また、この待ち行列（Ｑueue）は、好ましくはフラッシュメモリ５の最小消去単位（ブロック）毎に取り扱われる。最小記憶単位毎に待ち行列（Ｑueue）を取り扱うことで、効率の良いメモリコントロールシステムを得ることができる。論理アドレス領域に対応する物理アドレス領域内に不良個所が生じた場合、待ち行列（Ｑueue）と置換されることになるが、これらの操作もブロック毎に行う。フラッシュメモリ５の書き込み動作は、ブロック毎の消去動作が必要であるが、フラッシュメモリ５を最小消去単位であるブロック毎に管理することにより、これらの操作を効率良く行うことができる。
待ち行列（Ｑueue）５０は、好ましくはポインタにより制御される。ポインタは、例えば図７に示すように、待ち行列（Ｑueue）５０を構成する各ブロック（以下要素という）の数が所定の範囲となるように制御される。つまり、図示例では要素となるブロックの順序をブロック上部に付してあるが、この順序における所定の位置に取りだしポイントＯＰ（図示例では２）と取り込みポイントＩＰ（ｎ−２）とが存在する。そして、待ち行列（Ｑueue）５０の取り出し、取り込みが行われる度にポインタが移動して行く。すなわち、
（取り込みポイントＩＰの位置）−（取りだしポイントＯＰの位置）＝要素数となる。また、待ち行列（Ｑueue）自体は管理テーブル等に登録して管理するようにすればよい。
余剰領域中には不良ブロックとして永久に破棄され、Δレコードや待ち行列（Ｑueue）としても使用されないブロック等が存在することがある。この余剰領域は全物理アドレス領域の１〜５％、より好ましくは２〜３％程度が好ましい。
また、本発明のフラッシュメモリシステムは、フラッシュメモリ上の各物理ブロックの状態を示すデータであって、少なくとも、その良否、バッドセクターの有無および使用の有無を表しているデータを有するブロックステータステーブル３２を有していても良い。ブロックステータステーブル３２を有することにより、各物理ブロックの状態をテーブル上で速やかに把握することができ、待ち行列（Ｑueue）の形成を速やかに行うことができ、メモリの読み出しや書き込みに先立って、あるいはこれと関係なく適切なメモリ管理を行うことができる。
ブロックステータステーブル３２は、例えば図８に示すように構成されている。図示例では、１つのブロック内の上段に物理ブロックアドレス（図中番号の頭に＃を付して表示している）を、下段にステータス値を配置し、それぞれの物理ブロックアドレスに対応したステータス値を持たせている。そして、フラッシュメモリ５内のアクセス可能なメモリ領域での最大の物理ブロックアドレス＃Ｎmaxまで対応するステータス値が規定されている。
ステータス値は、物理ブロックアドレスの状態を示す値であって、例えば、初期状態としてＦＦが書き込まれ、その後、ブロックアドレスの状態に応じて値が変化する。ステータス値で表現可能なデータとしては、少なくともブロックの良否、バッドセクターの有無およびそのブロックの使用の有無である。また、これに加えて、前記Δレコードに関する情報、ブロックの良否の程度やセキュリティーに関するデータ等のデータを表すことも可能である。データの表示形態としては、特に限定されるものではなく、特定のデータ長、例えば１バイトのコードとして表しても良いし、特定のデータ長の各ビットに重みを持たせることにより表現するようにしても良い。
ブロックステータステーブル３２を有することにより、各論理ブロックの状態を速やかに把握することができる。従って、アドレス変換テーブル３１を構築する際、ブロックステータステーブルを参照し、Δレコード、待ち行列（Ｑueue）要素等を排除して論理ブロックアドレスを物理ブックアドレスに割り付けたり、バットセクターを有していたり、不良ブロック等となっているブロックを速やかに検出し、これを排除したりすることができる。つまり、各セクターやブロックの状態を、フラッシュメモリーをアクセスすることなく把握することができ、処理速度が格段に向上する。
実施例
次に実施例を示し、本発明をより具体的に説明する。
実施例として、図９に示す装置における動作を例に説明する。図９はフラッシュメモリシステムの一実施例を示すブロック図である。図示例のフラッシュメモリシステムは、ホストコンピュータと接続されるＰＣカードバス２ａと、このＰＣカードバス２ａと接続されているバッファ制御部３５内のバッファＡ３６とバッファＢ３７を有する（この例では一体として表示しているがそれぞれが別個に存在していても良い。）。また、上記ＰＣカードバス２ａには、ＰＣＭＣＩＡブロック３８とＡＴＡブロック３９とが接続されている。前記バッファ制御部３５内のバッファＡ３６とバッファＢ３７には、フラッシュメモリインターフェース４としてのフラッシュシーケンサ４１とＥＣＣ制御部４２とが接続されており（この例では一体として表示しているがそれぞれが別個に存在していても良い。）、このフラッシュシーケンサ４１等にフラッシュメモリ５のメモリアレイが接続されている。
また、前記バッファ制御部３５、ＰＣＭＣＩＡブロック３８、ＡＴＡブロック３９，フラッシュシーケンサ４１には制御部３４が接続されていてこれらを総合的に制御している。この制御部３４には、これから直接アクセスすることのできるＲＯＭ，ＲＡＭが接続されていて、制御アルゴリズムや演算に必要なデータ等を記憶するようになっている。また、アドレス変換テーブル３１とブロックステータステーブル３２は、通常、前記ＲＡＭ上に形成される。
ＰＣカードバス２ａは、ＰＣカードと称するカード状の拡張システム（例えば、ＳＣＳＩインターフェースユニット、ＭＯＤＥＭユニット、メモリカード等）を接続するためのバスシステムであって、この例ではＰＣＭＣＩＡ規格の所定のカードスロットルを介してＰＣカードを接続しうるものである。このようなＰＣカードは、ラップトップコンピュータ等の携帯機器や、これらから情報を授受するシステムなどに特に好ましく用いられる。
バッファ制御部３５およびバッファＡ３６，バッファＢ３７は、ホストコンピュータ１側とフラッシュメモリ５側のデータ転送速度等の調整を行いながら両者間のデータの授受を中継する。つまり、ホストコンピュータ１側のデータ授受速度やタイミングとフラッシュメモリ５側のデータ授受速度やタイミングはそれぞれ異なっている。このため、データ中継手段３では所定の大きさのデータを蓄えられる２つのバッファＡ３６，Ｂ３７を備え、一方のバッファＡ（Ｂ）をデータ書き込み側としたときには、他方のバッファＢ（Ａ）をデータ読み出し側とする。そして、バッファ制御部３５はデータ書き込み側である一方のバッファＡ（Ｂ）が所定長のデータで満たされ、かつデータ読み出し側である他方のバッファＢ（Ａ）のデータがすでに読み出されたことを検出すると、両者を交換し、データで満たされた一方のバッファＡ（Ｂ）をデータ読み出し側とし、データがすでに読み出された他方のバッファＢ（Ａ）をデータ書き込み側とする。
このように、２つのバッファに交互にデータを書き込むと共に、データが満たされたバッファから交互にデータを読み出すことで、ホストコンピュータ側と、フラッシュメモリ側とでのデータの授受速度が異なっていても、それぞれの速度やタイミングに合わせてデータを受け渡すことができる。この場合、データの授受速度が速い側が必ず待機状態となるため、全体としてのデータの授受速度はデータの授受速度の遅い側に支配されることになる。なお、バッファ内のデータは、読み出された後、ＦＩＦＯメモリのように空になるが、新しいデータで満たされた状態が検出可能であれば、上書きしてもよい。
２つのバッファに書き込み／読み出し可能なデータ長としては、特に限定されるものではないが、好ましくは１セクター分のデータである５１２バイト、またはこれに所定の冗長データを加えた大きさである。
ＰＣＭＣＩＡブロック３８は、前記ＰＣカードバス２ａと適切に接続するためのＰＣカードバスインターフェースとして機能する。すなわち、ＰＣカードバス２ａの制御システム（図示しない）が、ＰＣカードが接続されたことを認識するために必要なデータや、認識するために必要な手順等が記憶されていて、自動的に必要な操作を行うことができるようになっている。
ＡＴＡブロック３９のタスクレジスタは、ホストコンピュータから与えられるシリンダー、ヘッド、セクターのデータであるＣＨＳアドレスを収容したり、逆にこれをホストコンピュータ側に与えたり、ホスト側の論理アドレスに変換するためのデータ等を備える。これにより、ホストコンピュータ１がフラッシュメモリシステムをあたかもハードディスクとして取り扱うことができるようになる。
フラッシュメモリ５は、この例では複数のメモリ素子が集合したメモリアレイを構成していて、必要な記憶容量を確保できるようになっている。その他の構成は上記の構成例と同一であり、同一構成要素には同一符号を付して説明を省略する。
このように、図示例のフラッシュメモリシステムはＰＣカード内に収納され、ＳＣＳＩ仕様のハードディスクと同等に扱うことができるようになっている。ＰＣカードとして着脱自在にホストコンピュータと接続することにより、比較的大容量のデータを小型、軽量なカードで自由に移動させたり、保存したりできる。しかも、従来のソフトが認識可能なハードディスクと同様に扱えるので、既存のソフトが活用でき、取り扱いも容易である。
［初期設定］
初期状態において、データ中継手段の制御部３４はフラッシュメモリ５内の各セクターについて評価（書き込み／読み出しが正常にでき、書き込んだデータ内容に異常が無い等）し、これをブロック単位の評価内容としてブロックステータステーブル３２を作成する。
例えば、図１０に示すように、所定の大きさの実データ記憶部５１と、冗長データ記憶部５２とを有するフラッシュメモリーの、物理ブロックアドレス＃０００３に異常があるとする。制御部は、例えば図１１に示すように、物理ブロックアドレス順に評価して行き、Ｓ−ＲＡＭ上のステータステーブル形成領域の所定の位置に、異常が無い場合には初期値（図示例では”ＦＦ”）とし（書き込み）、異常が検出された場合にはそのような内容を表すステータス値（図示例では”０Ｆ”）を書き込む。このようにして、ブロックステータステーブル３２が作製される。
次いで、制御部は、フラッシュメモリ５に対して論理ブロックアドレスに相当する仮のナンバーリングを行う。このとき、ブロックステータステーブル３２の情報に基づいて、ナンバーリングの対象から不良ブロックを除外する。
制御部は、得られたデータからアドレス変換テーブル３１およびブロックステータステーブル３２を、Ｓ−ＲＡＭ上のアドレス変換テーブル形成領域、ステータステーブル形成領域に形成する。このとき、論理ブロックアドレスが”ＦＦＦＦ”、つまり消去パターンとなっているブロックを発見すると待ち行列（Ｑueue）等の要素と見なし、待ち行列（Ｑueue）テーブル５０に登録する。また、この待ち行列の要素内のデータが全て”ＦＦＦＦ”、つまり消去パターンとなっているか否かも検査する。
これら一連の操作により、アドレス変換テーブル、ブロックステータステーブル、待ち行列（Ｑueue）が形成されると、図１２に示すように、これをオリジナルなデータとしてフラッシュメモリの所定の領域に保存する。保存されるデータの大きさとしては、例えば、５１２個の物理ブロックを有するフラッシュメモリの場合、アドレス変換テーブルが１０００byte、ステータステーブルが５１２byte、待ち行列（Ｑueue）が１８byteであるとすると、総計１５３０byteとなる。
［読み出し時の動作］
読み出し時の動作としては、先ず、制御部３４が前記バッファＡ３６（またはＢ３７）等を介してホストコンピュータ１からのアドレスデータを受信する。このとき、ホストコンピュータから送られてくるアドレスデータが、ＬＢＡ方式であれば、下記式（Ｉ）を用いた作業により、論理ブロックアドレスおよびオフセット値への変換を行う。
すなわち、ホストコンピュータから送付されてくる論理アドレスをＬＢＡsとすると、論理ブロックアドレスＬＢＡは、
ＬＢＡ＝ＬＢＡs／ｋ                  （Ｉ）
ｋ＝最小消去単位内のセクター数（８または１６）
で求められ、その余りｍがブロック内のセクターの位置を表すオフセット値となる。
また、ホストコンピュータから送られてくるデータが、ＣＨＳ方式である場合、以下の計算式（II）によりＬＢＡ方式のデータに変換する。なお、このような変換機能は、ＡＴＡブロック等のように、ＣＨＳ方式のデータをＬＢＡ方式のデータに変換するための専用機能を有するブロックとして独立に設けてもよい。
ＬＢＡ＝（Ｃ×ＨpＣ＋Ｈ）×ＳpＨ＋Ｓ−１      （II）
ここで、Ｃ：シリンダー番号、Ｈ：ヘッド番号、Ｓ：セクター番号、ＨpＣ：ヘッド／シリンダー、ＳpＨ：セクター／ヘッドである。
得られた論理ブロックアドレスは、データ変換テーブル３１により物理ブロックアドレスに変換され、これにオフセット値が加えられて物理アドレスデータとなる。
読み出し動作においては、通常、フラッシュメモリ５からの読み出しと、ホストコンピュータ１への転送は自動的に行われる。すなわち、フラッシュメモリインターフェース４、例えばフラッシュシーケンサ４１は、制御部３４が読み出したいメモリ領域のアドレスを設定すると、自動的にそのメモリ領域のデータを読み出す。バッファ制御部３５は、転送されてきたデータをフラッシュメモリ５側とホストコンピュータ１側の転送速度に合わせて次々に送出する。
ＡＴＡブロック３９は、制御部３４からのデータ転送の指示があるとビジー状態を解除して、ホストコンピュータ１にデータ転送開始を知らせる。このようにして、制御部３４は、アドレス変換作業を行った後、所定の設定操作を行うことにより、データ転送のための操作から解放され、次のアドレス変換作業を先行して行うことができる。また、データ変換作業は前述のように高速に処理することができるので、通常、データ転送中に終了する。これにより、データ転送速度が格段に向上する。
［書き込み時の動作］
書き込み時の動作としては、アドレス変換までの動作は上記読み出し時の動作と同様である。次に、図１３に示すように、アドレス変換が行われ、フラッシュメモリ５上の所定のアドレスへの書き込み動作を行うことになる。
フラッシュメモリ５は、前述のように上書きすることができない。従って、書き込み動作にはブロック単位の消去動作が伴うことになる。この場合、書き込み予定のブロック内のデータを、一旦読み出した後これを消去し、新たなデータを書き加えることも可能である。しかしながら、この方法では書き込み前に読み出し動作が伴うため、アクセス速度が遅くなってしまう。
そこで、好ましくは余剰領域中の待ち行列（Ｑueue）を活用する。すなわち、待ち行列（Ｑueue）の先頭から要素を取り出し、一旦新たなデータをこのブロック内の所定の位置（オフセットで指定される）に書き込み、交換予定ブロックとする。そして、本来の書き込み先であるブロックの論理ブロックアドレスを消去予定アドレスとする。
また、交換予定ブロックの冗長部分には、消去予定ブロックのブロックアドレスやステータス値を書き込む。このとき、アドレス変換テーブルの論理ブロックについても書き換えを行わなければならない。これにより、前記待ち行列（Ｑueue）から取り出したブロックが、書き込み後のデータを有する新たな論理ブロックアドレスとなる。
そして、好ましくは全ての、または所定量のデータ転送が終了した時点で、前記消去予定ブロックの残余のデータを交換予定ブロック内に転送し、消去予定ブロックを消去する。これにより、書き込みに伴う読み出し動作および消去動作は、全てのデータ転送が行われた後に行われることとなり、見かけ上、ホスト側ＰＣに対して書き込みデータ受け取りを早期に完了させることで、書き込み時における動作速度が向上する。なお、全てのデータの書き換えが行われるまでの操作は履歴保持テーブル等に保持され、待ち行列（Ｑueue）を使用した書き込み操作がスムーズに行われるようになっている。
このようにして、アドレス変換テーブル、ブロックステータステーブル、待ち行列（Ｑueue）等に変更が生じる。この変更された部分のデータは、図１３に示すように、Δレコード記録領域５ｄのオリジナルデータに加えて書き込まれる。
これらのデータは、例えば、アドレス変換テーブルであれば物理ブロックアドレス値が変更されるのでその位置（２byte）と、大きさ（２byte）のデータが最小限変更される。ブロックステータステーブルは、ブロックの良否を判定する情報は、通常書き換える必要はなく、データの有無を表すデータに変更を生じるので、その位置（２byte）と、大きさ（２byte）のデータが最小限変更される。待ち行列（Ｑueue）は、要素が一つ取り出され、別の要素を一つ取り込むことになるので、ポインター値が移動し、その大きさ（２byte）と、取りだしポイントＯＰ（２byte）と取り込みポイントＩＰ（２byte）のデータが最小限変更されることになる。これらのデータは、この例では総計で１１byteとなる。前記初期値のデータが１５３０byteであるから、変化分のデータが極めて少ないことがわかる。
Δレコードは、フラッシュメモリ上の実データ領域に記録される。Δレコードの記録される実データ領域の大きさは、通常、２５６バイト（１／２セクター）または５１２バイト（１セクター）であり、この実データ領域に対応する冗長データ領域として、８バイトまたは１６バイト有する。この冗長領域には、通常はＥＣＣデータ等が書き込まれることになる。
Δレコードの生成過程は先に示した通りであり、アドレス変換テーブル、ブロックステータステーブル、待ち行列（Ｑueue）等から、その変化分、例えば１１バイト分のデータが作製される。以下にフラッシュメモリへΔレコードを記録する方法について、具体例を挙げて説明する。
フラッシュメモリの消去後のパターンは１１１・・・１１である。これは消去操作により、フラッシュメモリの記憶セルである浮遊ゲートから負電荷が引き抜かれた状態であり、いわば正に帯電した記憶セルの読み出し値である。例えば、これを読み出し、図１４に示すように反転器（インバータ）６１等を通すことにより、０００・・・００とすることができ、”０”の連続するパターンにすることができる。
ここで、ＥＣＣデータを作製するために使用される生成多項式Ｇ（x）により、所定のデータを除算した場合について考えてみる。例えば、３ビットの訂正ＢＣＨ符号の生成多項式である場合、
0004251379.tif 000002
となる。
このような生成多項式を論理式ないし装置として表すと、例えば図１５に示すような除算器となる。この除算器はシフトレジスタ（遅延素子）７１と、排他的論理和（ＥＸＯＲ）７２とから構成され、除算器の入力側７３は、前記反転器を経由してフラッシュメモリの読み出し値が入力されるようになっている。
いま、フラッシュメモリのの読み出し値（０００・・・００）を、順次除算器に入力して行くとする。この場合、その商は無論ゼロとなる。また、生じた余りも０００・・・００となり、ゼロが例えば４０ビット分続くことになる。この余りのパターンが重要で、４０ビット分全てが０であれば、誤りが無く訂正を行う必要がない。ところが、余りの４０ビット中に１が一つでもある場合には、誤りが存在することとなり、訂正の必要が生じる。
図１６は除算の様子を計算式として示したものである。図から明らかなように、０００・・・００の繰り返しパターンは、除算計算をどの段階で止めても、その余り（Ｒ）は０００・・・００となる。この余りの、０００・・・００のパターンは、図１７のように各領域に分割した場合、Ａでも、Ｂでも、Ｃでも同様な除算結果を繰り返す。
例えば、上記領域Ａの要素数が１６バイトないし３２バイト分のゼロのビットパターンが続くと考えた場合、先に記述した内部情報の変化分の大きさが、例えば１１バイトであり、領域Ａの中に収まる大きさである。
そこで、図１５に示した例と同様にして、この変化分のデータ１１バイトを、前記生成多項式Ｇ（x）で除算すると、余りとして５バイト分のデータが得られる。図１８に示すように、この余りのデータ８３を、前記変化分のデータ８１の後に０００・・・００のデータ８２と置き換えて付加すると、全部で１６バイトの長さのデータとなる。従って、これを一つの単位として、変化分のデータが生じる毎に、次々と、前記の０００・・・００の所定の領域（Ａ、Ｂ、Ｃetc）に順次置き換えて行けばよいことになる。こうしてΔレコードが作製されて行く。
すなわち、余りのデータ（５バイト）を変化分のデータ（１１バイト）の後に付加した目的は、除算による余りと同じ位置、同じ大きさの０または１のパターンを存在させたとき、それらの排他的論理和が０００・・・００となり、これは生成多項式Ｇ（x）で除算した結果、割り切れるパターンを作り出していることになる。
Δレコードは常に生成多項式で割り切れるものであるから、例えば図１７の領域Ａの０００・・・００と置き換えても、除算の結果は余りが０００・・・００となり、変わらない。この操作は同様に領域Ｂ、領域Ｃ・・・と次々に置き換えても全体の除算結果、つまり余りのパターンは０００・・・００となり、変わらない。
このように、Δレコードは、実データ領域上に複数個存在しても、ＥＣＣ符号化／復号化の計算（生成多項式Ｇ（x）による除算）に沿うデータ配列である。このことは、通常のデータと同じようにして読み出せると共に、通常のＥＣＣ符号化規則をも尊守しているため、強力に保護されることになる。
内部データを生成多項式で処理するための作業は、図１５に示したように除算器としてハードウエアで処理することも可能である。しかし、アドレス変換テーブルやブロックステータステーブル、および待ち行列（Ｑueue）等は制御部（マイクロプロセッサ）が行っている。このため、これらのデータを総合的に管理している制御部による演算（ソフトウエア）操作により求めることが好ましい。
このような演算は、例えば上記バッファ制御部によるデータ転送動作が、制御部の直接操作を必要とすることなく、自動的に行っている間に十分行うことができる。例えば、バッファ制御部は、１６セクター分のデータの転送に６mS程度要し、また、フラッシュメモリの消去動作に３〜１０mS程度必要とする。これに対し、１６バイトのΔレコードを作り出す時間は遅くとも８００μS程度である。従って、Δレコードを制御部が作製したとしても、高速なデータ書き込み操作を遜色なく行うことができることがわかる。
なお、Δレコードの生成過程では、上記生成多項式Ｇ（x）に限定されるものではなく、異なる数式であっても適用可能である。また、Δレコードの手法はＢＣＨ符号に限定されるものではなく、同様な機能を有するＲＳ符号等を用いてもよい。
また、上記例では説明を容易にするために、０００・・・００の連続するパターンについて例示したが、反転器等で処理することなく、１１１・・・１１のパターンのままで処理することも可能である。
なお、上記例では内部情報としてアドレス変換テーブル、ブロックステータステーブル、待ち行列（Ｑueue）等を例に説明したが、Δレコードとして記録可能なデータはこれらの情報に限定されるものではなく、メモリマネージャの構成態様や扱うデータにより、種々の情報を記録し、これを再現することができる。
また、本発明のフラッシュメモリシステムの使用範囲も、ラップトップコンピュータ等のコンピュータシステムの他、携帯通信機器、デジタルカメラ等のマルチメディアシステム等種々のデータを取り扱う分野への応用が可能である。
発明の効果
以上のように本発明によれば、書き込み／読み出し時間の遅れが少なく、書き込み動作を比較的簡単に行うことができ、高速で動作が可能で、不良セクターや不良ビット等の管理を適正に行うことの可能なフラッシュメモリシステムを実現できる。
【図１】
0004251379.tif 000003
【図２】
0004251379.tif 000004
【図３】
0004251379.tif 000005
【図４】
0004251379.tif 000006
【図５】
0004251379.tif 000007
【図６】
0004251379.tif 000008
【図７】
0004251379.tif 000009
【図８】
0004251379.tif 000010
【図９】
0004251379.tif 000011
【図１０】
0004251379.tif 000012
【図１１】
0004251379.tif 000013
【図１２】
0004251379.tif 000014
【図１３】
0004251379.tif 000015
【図１４】
0004251379.tif 000016
【図１５】
0004251379.tif 000017
【図１６】
0004251379.tif 000018
【図１７】
0004251379.tif 000019
【図１８】
0004251379.tif 000020