(57)【要約】【課題】近年、取り扱われるデータ量が増大し、不揮発性メモリを備えた記憶装置においては、携帯性等を低減させることなく記憶容量の増大が要求されている。【解決手段】本願発明は、従来ＲＡＭにのみ設けられていた論理アドレスを物理アドレスに変換するテーブルをＲＡＭと不揮発性メモリに備えることで、記憶容量の低下させずＲＡＭの容積の削減を図っている。【選択図】図１
2007280431.tif 000002
【特許請求の範囲】
【請求項１】
物理ブロックを複数個含む１以上の不揮発性メモリと、
前記不揮発性メモリから選択した複数の物理ブロックを書込物理ブロック群とし、前記書込物理ブロック群を複数の物理ブロックにまたがって所定ページ数毎に分割した単位領域を論理ブロックとして管理し、前記論理ブロックに論理アドレスを割り当てる論理ブロック管理手段と、
前記論理アドレスに基づき前記論理ブロックの記憶位置を特定するアドレス制御手段と、
前記アドレス制御手段の特定に従って、前記不揮発性メモリに対してデータの書き込み／読み出しを行うデータ書込／読出手段と、
を備える記憶装置。
【請求項２】
前記論理ブロック管理手段は、
データ入出力装置から書込み要求と論理アドレスを受け付けると、
前記論理ブロックを書き込み可能な前記書込物理ブロック群を決定して、前記書込物理ブロック群の中で論理ブロックを構成するページのつながりを示す連鎖情報を生成し、
前記連鎖情報を前記不揮発性メモリへ書き込むことを特徴とする請求項１記載の記憶装置。
【請求項３】
前記論理ブロック管理手段は、
同一論理ブロックを構成する一部のページに複数の前記連鎖情報を書き込むことを特徴とする請求項２記載の記憶装置。
【請求項４】
前記論理ブロック管理手段は、
前記論理ブロック単位でデータの有効無効を管理し、その有効無効の結果を保持する保持手段を有することを特徴とする請求項１記載の記憶装置
【請求項５】
前記論理ブロック管理手段は、
前記論理ブロック単位でデータの有効無効を管理する論理ブロックテーブルを有し、
前記書込物理ブロック群の中に構成された前記論理ブロックが前記論理ブロックテーブル上で所定数以上「無効」となっている物理ブロック群を消去物理ブロック群として選択し、
前記論理ブロックテーブル上で「有効」となっている論理ブロックのデータを前記消去物理ブロック群とは別の物理ブロック群へ退避した後、前記消去物理ブロック群を消去することを特徴とする請求項１記載の記憶装置。
【請求項６】
前記論理ブロック管理手段は、
物理ブロックが不良であるか否かを判定する不良物理ブロック判断手段と、
不良物理ブロックを検出した場合に、当該物理ブロックを含んで構成される複数の論理ブロックをすべて論理ブロックテーブルでは「有効」と登録する有効状態設定手段と、
を備えることを特徴とする請求項５記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの書き換えが可能なフラッシュメモリ等の不揮発性メモリを備えた記憶装置に関するものである。
【背景技術】
【０００２】
音楽データや映像データを取り扱う携帯機器の記憶装置として、データの書き換えが可能で、携帯性が高く、電池等によるバックアップが不要であるフラッシュメモリ等の不揮発性メモリを備えた記憶装置が使われるようになってきた。
【０００３】
しかし、フラッシュメモリにデータを書き込む処理速度は、記憶装置内にあるバッファにデータを転送する処理速度に比べて遅く、そのために待ち時間が発生することになる。
【０００４】
そこで、フラッシュメモリに効率よくデータを書き込む処理として、例えば特開平６−３０１６０１号公報では、複数の物理ブロックにデータを並列的に書き込む処理が提案されている。
【０００５】
また、一旦フラッシュメモリ内に書き込まれたデータにアクセスするには、フラッシュメモリ内における当該データの物理アドレスを論理アドレスから特定する必要がある。このため、記憶装置の有するＲＡＭには、フラッシュメモリ内に書き込まれたデータの論理アドレスを、フラッシュメモリ内の物理アドレスに変換するテーブルが設けられる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、近年、携帯機器で取り扱う情報量は増大する傾向にあり、これに対処するために、記憶装置にある不揮発性メモリを増加させることで、記憶装置の記憶容量の増大を図っている。
【０００７】
しかし、この記憶容量の増大は、上記テーブルの容量の増大につながり、その結果、ＲＡＭの容量と容積との増大を招く。
【０００８】
例えば、記憶装置の記憶容量を１ギガバイトとし、当該記憶装置の論理ブロックのサイズを１６キロバイトとすると、当該記憶装置に論理ブロックを２＾１６個構成することができ、そのため所定の論理ブロックを特定するためのアドレスは、１６ビット必要となる。即ち、論理アドレスをフラッシュメモリ内の物理アドレスに変換するためのテーブルの容量は、１６ビット×２＾１６＝１２８キロバイト必要となる。尚、上記論理ブロックとは、論理アドレスにて示されるデータブロックである。
【０００９】
また、フラッシュメモリ内に効率よくデータを書き込むための処理は、上記のように提案されているが、書き込まれたデータに対して、データの読出手段等が高速にアクセスするためのデータの書込方法は提案されていない。
【００１０】
従来の書込方法においては、例えば先頭の第１物理ブロックから第５物理ブロックに書き込まれたデータのうち、第５物理ブロックに書き込まれたデータにアクセスする手順は、以下のようになっている。
【００１１】
まず、例えばデータの読出手段は、第１物理ブロックを読み取って、この第１物理ブロックの最終部分に格納された第２物理ブロックのアドレスを取得し、次に第２物理ブロックを読み取る。同様にして読出手段は、第３の物理ブロック、第４の物理ブロック、第４の物理ブロックに保持されている第５物理ブロックのアドレスを取得し、第５の物理ブロックにアクセスするようになっている。従って第５物理ブロックにアクセスするためには、第１物理ブロックから第４物理ブロックを読み取る必要があり、これがアクセスタイムの増大の原因となっていた。
【００１２】
又、データの消去単位が物理ブロック単位であるフラッシュメモリ等においては、無効なデータが格納されている物理ブロックのデータを消去すると、当該物理ブロックに格納されている有効なデータをも消去することになる。このため、例えばデータの消去手段は、有効なデータを他の記憶媒体に退避させた後、当該物理ブロックのデータを消去する、巻き込み退避処理が行われていた。従って、データの消去を効率よく行うには、巻き込み退避処理の処理効率を向上することが必要となる。
【００１３】
本発明は、このような課題を鑑みてなされたものであり、大容量の記憶媒体をコンパクトな制御回路で制御でき、また書き込まれたデータに高速なアクセスが可能な記憶装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願発明は上記目的を達成するために以下の手段を採用している。すなわち、物理ブロックを複数個含む１以上の不揮発性メモリと、前記不揮発性メモリから選択した複数の物理ブロックを書込物理ブロック群とし、前記書込物理ブロック群を複数の物理ブロックにまたがって所定ページ数毎に分割した単位領域を論理ブロックとして管理し、前記論理ブロックに論理アドレスを割り当てる論理ブロック管理手段と、前記論理アドレスに基づき前記論理ブロックの記憶位置を特定するアドレス制御手段と、前記アドレス制御手段の特定に従って、前記不揮発性メモリに対してデータの書き込み／読み出しを行うデータ書込／読出手段とを備える構成となっている。
【発明の効果】
【００１５】
本発明の記憶装置は、前記のように構成することで、複数の物理ブロックに並列にアクセスしてデータアクセスの高速化を図ることができる。
【発明を実施するための最良の形態】
【００１６】
図１に示すように、本発明の記憶装置１は、不揮発性メモリであるフラッシュメモリ２を複数備える。該フラッシュメモリ２は図２に示すように複数の物理ブロックＢから構成されている。上記物理ブロックＢは複数のページＡから構成されている。フラッシュメモリ２におけるデータの書込単位は上記ページＡであり、またデータの消去単位は上記物理ブロックＢである。
【００１７】
尚、本実施の形態では、フラッシュメモリ２全体の記憶容量は１ギガバイトであり、物理ブロックＢの記憶容量は１６キロバイトであって、ペ−ジＡの記憶容量は５１２バイトとして説明するが、フラッシュメモリ２、物理ブロックＢ、ページＡの記憶容量は上記の容量に限定されるものではない。
【００１８】
（実施の形態１）
＜電源投入時に関して＞
上記記憶装置１に電源が投入されると、作成手段５１０に備えられた物理ブロックテーブル作成手段５２１は、記憶装置１に設けられたアドレス制御部５のＲＡＭ上に、上記各物理ブロックＢの使用状態を示す物理ブロックテーブル５２を作成する。ここで、図３に物理ブロックテーブル５２の作成手順の一例を示す。
【００１９】
まず、上記物理ブロックテーブル作成手段５２１は、上記物理ブロックテーブル５２の値を初期化する（図３、Ｓ３０１）。上記物理ブロックテーブル作成手段５２１が行う初期化の方法として、例えば物理ブロックテーブル５２の値を全部、消去済み物理ブロックを示す値に変更する方法がある。
【００２０】
続いて、上記物理ブロックテーブル作成手段５２１は、図２に示す所定の物理ブロックＢを構成する所定のページＡを参照し、当該所定の物理ブロックＢの状況を確認する（図３、Ｓ３０２）。この所定のページとは、例えば初期状態の物理ブロックＢ内の最初にデータが書き込まれるページＡ等を指す。
【００２１】
物理ブロックＢの状況を確認するため、ここでは、上記物理ブロックテーブル作成手段５２１が、所定の物理ブロックＢに不良があるか否かを判断する不良物理ブロック判断手段５２２として動作する。すなわち、上記物理ブロックテーブル作成手段５２１は、確認対象である物理ブロックＢに属する所定のページＡ内の情報を確認し、当該物理ブロックＢがキズなどにより正常にデータが書き込めない不良物理ブロックであるか否かを判断する（図３、Ｓ３０３）。
【００２２】
例えば確認対象の物理ブロックＢ１が不良物理ブロックでないと判断したとき、上記物理ブロックテーブル作成手段５２１は、当該確認対象の物理ブロックＢ１内にデータが格納されているページＡがあるか否かを判断する（図３、Ｓ３０４）。次いで、データが格納されているページＡがあると判断した場合、上記物理ブロックテーブル作成手段５２１は、確認対象の物理ブロックＢ１の使用状態が使用中であると認識する。上記物理ブロックテーブル作成手段５２１は、当該確認対象の物理ブロックＢ１を使用中物理ブロックとして、図４に示す物理ブロックテーブル５２に登録する（図３、Ｓ３０５）。データを格納しているページＡがないと判断した場合、上記物理ブロックテーブル作成手段５２１は、確認対象の物理ブロックＢ１の使用状態は消去済みであると認識する。そして、当該確認対象の物理ブロックＢを消去済み物理ブロックとして、上記物理ブロックテーブル５２に登録する（図３、Ｓ３０６）。
【００２３】
上述のように使用中物理ブロック又は消去済み物理ブロックを物理ブロックテーブル５２に登録すると、上記物理ブロックテーブル作成手段５２１は、確認対象の物理ブロックＢが最終の物理ブロックＢであるか否かを判断する（図３、Ｓ３０７）。そして、確認対象の物理ブロックＢが最終の物理ブロックＢでないと判断した場合には、未だ状況を確認していない他の物理ブロックＢの状況確認を行う（図３、Ｓ３０２）。確認対象の物理ブロックＢが最終の物理ブロックＢであると判断すると、物理ブロックテーブル作成手段５２１は物理ブロックテーブル５２の作成を終了する。
【００２４】
このようにして、例えば図４に示すような物理ブロックテーブル５２が作成される。図４では、物理ブロックテーブル５２によって、物理ブロックＢ１、Ｂ２、…それぞれについて、使用中物理ブロックであるか消去済み物理ブロックであるかが示されている。
【００２５】
尚、確認対象の物理ブロックＢが不良物理ブロックであると判断した場合、上記不良物理ブロック判断手段５２２は、当該確認対象の物理ブロックＢを使用中物理ブロックとして、上記物理ブロックテーブル５２に登録するのがよい（図３、Ｓ３０８）。
【００２６】
すなわち、上記不良物理ブロック判断手段５２２により物理ブロックが不良であると判断された場合、上記物理ブロックテーブル５２が示す当該物理ブロックＢの使用状態を使用中に設定する使用状態設定手段５２３としても、上記物理ブロックテーブル作成手段５２１を動作させるのである。
【００２７】
不良物理ブロックを使用中物理ブロックとして物理ブロックテーブル５２に設定する理由は、後述するデータの書込処理時に、書込手段１００が、上記物理ブロックテーブル５２に消去済み物理ブロックと登録されている物理ブロックＢをデータの書込対象の物理ブロックＢとして選択するためである。仮に不良物理ブロックが消去済み物理ブロックとして物理ブロックテーブル５２に設定されていると、書込手段１００は、不良物理ブロックを書込対象の物理ブロックＢとして選択することがある。その場合、書込手段１００が、当該不良物理ブロックＢにデータを書き込むことができないことを認識してから、書込対象の物理ブロックＢの選択をし直せばよいが、その分だけ書込処理に時間がかかってしまう。
【００２８】
上述のように、不良物理ブロックを使用中物理ブロックとして登録することで、不良物理ブロックは書込対象の物理ブロックＢから外され、その結果不良物理ブロックがあることを前提として利用される不揮発性メモリにおいても、書込処理の時間を短縮することができる。
【００２９】
上記記憶装置１に電源が投入されると、上記物理ブロックテーブル５２の他に、上記作成手段５１０に備えられた論理ブロックテーブル作成手段５３１にて論理ブロックテーブル５３が上記アドレス制御部５のＲＡＭ上に作成される。論理ブロックテーブル５３の作成は、上記物理ブロックテーブル５２の作成と同時に行っても良いし、物理ブロックテーブル５２が作成されてから行っても良いし、物理ブロックテーブル５２を作成する前に行っても良い。
【００３０】
論理ブロックテーブル５３は、各論理ブロックＣのデータが有効状態（‘有効’）にあるか無効状態（‘無効’）にあるかを示すテーブルである。上記論理ブロックＣは、論理アドレスの示すデータブロックであり、１以上の物理ブロックＢにまたがって構成される。図５は、論理ブロックテーブル５３の作成手順の一例を示すフローチャートである。
【００３１】
図５に示すように、論理ブロックテーブル作成手段５３１は、まず上記論理ブロックテーブル５３を初期化する（図５、Ｓ５０１）。上記論理ブロックテーブル作成手段５３１が行う初期化の方法として、例えば論理ブロックテーブル５３の値を全部、‘無効’を示す値に変更する方法がある。
【００３２】
続いて、上記論理ブロックテーブル作成手段５３１は、物理アドレスを示すビット列のうち所定の５ビットが‘０１０００’であるページＡの管理領域Ａｂに設けられたフラグ領域９０の値を参照する（図５、Ｓ５０２）。尚、上記論理ブロックテーブル作成手段５３１が、物理アドレスの所定の５ビットが‘０１０００’であるページＡに設けられたフラグ領域９０を参照する理由は、本実施の形態の記憶装置１では、当該物理アドレスのページＡにのみ第２のテーブル８０（詳細は後述する）が格納される仕様となっているためである。つまり、上記論理ブロックテーブル作成手段５３１は、上記第２のテーブル８０を格納することができるページＡのフラグ領域９０のみを参照する。
【００３３】
上記フラグ領域９０の値は、当該フラグ領域９０と同じ管理領域Ａｂに格納された第２のテーブル８０が有効であるか無効であるかを示す管理情報である。また、論理ブロックテーブルの作成処理の高速化のために、上記論理ブロックテーブル作成手段５３１は、物理アドレスの所定の５ビットが‘０１０００’のページＡのフラグ領域９０を全て参照する必要はない。例えば、論理ブロックテーブル作成手段５３１は、所定の５ビットが‘０１０００’であり、且つ物理ブロックテーブル５２に使用中物理ブロックとして登録されている物理ブロックＢに属するページＡのフラグ領域９０のみを参照するようにしてもよい。
【００３４】
上記フラグ領域９０を参照すると、上記論理ブロックテーブル作成手段５３１は、上記フラグ領域９０の値が有効値であるか無効値であるかを判断する（図５、Ｓ５０３）。フラグ領域９０の値が有効値であると判断したとき、上記論理ブロックテーブル作成手段５３１は、当該第２のテーブル８０に登録された第２の物理アドレスＣａにて特定される論理ブロックCを、上記論理ブロックテーブル５３に’有効’として登録する（図５、Ｓ５０４）。この第２の物理アドレスＣａとは、論理ブロックCを構成する所定の１つのページＡ（代表ページar）の物理アドレスを特定するための情報である。
一方、フラグ領域９０の値が無効値であると判断したとき、上記論理ブロックテーブル作成手段５３１は、手順５０４を行わずに、手順５０５に移行する。
【００３５】
上記論理ブロックテーブル作成手段５３１は、上記のように’有効’又は’無効’を上記論理ブロックテーブル５３に登録、又は手順５０３でフラグ領域が無効値であると判断すると、参照すべき全てのフラグ領域９０を参照したか否かを判断する（図５、Ｓ５０５）。
【００３６】
全てのフラグ領域９０を参照していないと判断した場合には、上記論理ブロックテーブル作成手段５３１は、未だ参照していない他のフラグ領域９０の参照を行う（図５、Ｓ５０２）。そして、上記論理ブロックテーブル作成手段５３１は、全てのフラグ領域９０を参照したと判断するまで、同様の処理を繰り返す。
【００３７】
このようにして、図６に示すような論理ブロックテーブル５３が作成される。上記不良物理ブロックの中には、上記物理ブロックテーブル５２に使用中物理ブロックとして登録されている。このような不良物理ブロックには、物理アドレスの所定５ビットが‘０００００’であるページ（後述する代表ページａｒ）を含んでいるものがある。論理ブロックテーブル作成手段５３１は、このような不良物理ブロックＢ上に構成される論理ブロックＣを、‘有効’として上記論理ブロックテーブル５３に登録するのが好ましい。
【００３８】
すなわち、上記不良物理ブロックに構成されている論理ブロックＣを‘有効’として上記論理ブロックテーブル５３に設定する有効状態設定手段５３２として、上記論理ブロックテーブル作成手段５３１を動作させるのである。
【００３９】
これは、後述するデータの消去処理において、論理ブロックテーブル５３に‘有効’として登録されている論理ブロックＣが構成された数の少ない物理ブロックＢが消去対象のデータとして認定されることがあるためである。実際には、データが書き込まれていない不良物理ブロックを“有効”として登録することで、不良物理ブロックが消去対象とならないようにするためである。
【００４０】
これによって、不良物理ブロック上に構成される全論理ブロックＣは、論理ブロックテーブル５３に‘有効’と登録されるので、当該不良物理ブロックは、消去対象の物理ブロックから外される。その結果、必要のないデータの消去を防ぐことができる。
【００４１】
また、物理ブロックテーブル５２、論理ブロックテーブル５３の他に、第１のテーブル５１も上記アドレス制御部５のＲＡＭ上に作成される。例えば、上記のように物理ブロックテーブル５２、論理ブロックテーブル５３が作成されると、作成手段５１０に備えられた、第１のテーブル作成手段５１１が、第１のテーブル５１の作成を開始する。ここで、図７は上記第１のテーブル５１を作成する作成手順の一例を示すフローチャートである。
【００４２】
まず上記第１のテーブル作成手段５１１は、上記第１のテーブル５１を初期化し（図７、Ｓ７０１）、続いて物理アドレスの所定の５ビットが‘０１０００’のページＡのフラグ領域９０を参照する（図７、Ｓ７０２）。尚、第１のテーブル作成手段５１１も上記物理ブロックテーブル５２に使用中物理ブロックと登録されている物理ブロックＢのフラグ領域９０のみを参照するようにしてもよい。
【００４３】
フラグ領域９０を参照すると、上記第１のテーブル作成手段５１１は、フラグ領域９
０の値が有効値であるか無効値であるかを判断する（図７、Ｓ７０３）。フラグ領域９０が有効値であると判断した場合、第１のテーブル作成手段５１１は、当該フラグ領域９０が属するページＡの物理アドレスと、当該ページＡに格納された第２のテーブル８０が保持する識別番号（本実施の形態では、論理アドレスの上位1３ビットを含む）とを取得する（図７、Ｓ７０４）。この識別番号は、図８に示す第１のテーブル５１内の１つの領域５０を特定するための識別子である。本実施の形態では、識別番号は論理アドレスの上位１３ビットのビット列を含んでいるものとする。
【００４４】
図８に示すように、上記第１のテーブル作成手段５１１は取得した識別番号が示す領域５０に、第２のテーブルが格納されているページＡの物理アドレスの所定の１６ビットを第１の物理アドレスとして登録する（図７、Ｓ７０５）。所定の１６ビットには、第２のテーブル８０を格納することができるページＡの物理アドレスに共通する、‘０１０００’の５ビットは含まない。このような所定の１６ビットを登録する理由は次に示す。本実施の形態の不揮発性メモリ２は、２＾２１個のページＡ（１ギガバイト／５１２バイト）があり、ページＡの物理アドレスは２１ビットにて表現される。更に上述したように第２のテーブル８０を格納することができるページＡは、物理アドレスの所定の５ビットが‘０１０００’である。そのため、物理アドレスの所定の１６ビットを特定することができれば、不揮発性メモリ２内に格納された全部の第２のテーブル８０から所定の１つの第２のテーブルを特定することができるためである。
【００４５】
このように、第２のテーブル８０が格納することができるページＡを予め決めておくことで、第１のテーブルの容量を小さくすることができる。尚、物理アドレスの所定の５ビットが‘０１０００’であるページＡが第２のテーブル８０を格納するページＡであることは記憶装置１内のＲＯＭ等のメモリに記憶させておく。本実施の形態では、物理アドレスの所定の５ビットが‘０１０００’であるページＡが第２のテーブル８０を格納するページＡとなっている。しかし、物理アドレスの所定の５ビットが‘０１０００’以外のページＡが第２のテーブル８０を格納するようにしてもよい。
【００４６】
第１の物理アドレスを登録すると、上記第１のテーブル作成手段５１１は、参照すべき全てのフラグ領域９０を参照したか否かを判断する（図７、Ｓ７０６）。全てのフラグ領域９０を参照していないと判断したとき、第１のテーブル作成手段５１１は、未だ参照していない他のフラグ領域９０の参照を行う（図７、Ｓ７０２）。そして、全てのフラグ領域９０を参照したと判断するまで、同様の処理を繰り返す。
【００４７】
尚、本実施の形態では、有効値を示すフラグ領域９０と対応する第２のテーブル８０は、不揮発性メモリ２内に２＾１３個格納されているので、上記領域５０は２＾１３個となる。よって第１のテーブル５１の容量は、1６ビット×２＾１３＝1６キロバイトとなる。有効値を示すフラグ領域９０と対応する第２のテーブルが２＾１３個である理由は後述する。
【００４８】
一方、フラグ領域９０が無効値であると判断した場合、上記第１のテーブル作成手段５１１は、上記のように物理アドレスや識別番号を第１のテーブル５１に登録せずに、手順７０６に移行する。
【００４９】
このようにして、物理ブロックテーブル５２、論理ブロックテーブル５３、第１のテーブル５１が作成されるが、これらのテーブルを作成する順序は、既に説明した順序に限定されるものではなく、例えば３つのテーブルを同時に作成するようにしてもよい。
【００５０】
また、上述の説明では、物理ブロックテーブル５２、論理ブロックテーブル５３、第１のテーブル５１を別個のテーブル作成手段が独立して作成したが、以下のようにして、各テーブル作成手段が連携して物理ブロックテーブル５２、論理ブロックテーブル５３、第１のテーブル５１を作成してもよい。
【００５１】
例えば上記物理ブロックテーブル作成手段５２１が物理ブロックテーブル５２を作成するにあたって、物理ブロックＢ内にデータが格納されているか否か判断する際に、当該物理ブロックＢに第２のテーブル８０を検知する場合がある。このように上記物理ブロックテーブル作成手段５２１が第２のテーブル８０を検知すると、逐次に上記論理ブロックテーブル作成手段５３１と上記第１のテーブル作成手段５１１とが、当該第２のテーブル８０に対応するフラグ領域９０の値が有効値又は無効値であることを判断する。更に、論理ブロックテーブル作成手段５３１は、フラグ領域９０が有効値を示す場合、当該第２のテーブル８０が示す第２の物理アドレスＣａにて特定される論理ブロックＣを、’有効’として論理ブロックテーブル５３に登録する。一方、第１のテーブル作成手段５１１は、フラグ領域９０が有効値を示す場合、当該第２のテーブル８０に格納されているページＡの物理アドレスの所定の１６ビットを当該第２のテーブル８０が保持する識別番号が示す領域５０に登録する。
【００５２】
また電源投入時に、上記作成手段５１０にあるアドレスレジスタ作成手段５５１が、以下に示す方法で、上記アドレス制御部５のＲＡＭ上に図９（ａ）に示すアドレスレジスタ５５と図９（ｂ）に示すエントリカウンタ５４を作成してもよい。
【００５３】
まず、アドレスレジスタ作成手段５５１は、アドレスレジスタ５５を初期化する。そして、上記物理ブロックテーブル５２を参照して、所定数の消去済み物理ブロックの物理アドレスをアドレスレジスタ５５に登録する。
【００５４】
物理ブロックＢの物理アドレスを登録すると、上記アドレスレジスタ作成手段５５１は、図９（ｂ）に示すようにアドレスレジスタ５５に登録した各物理ブロックＢのデータが書き込まれたページ数（即ち、‘０’）を、上記ＲＡＭ上に設けられたエントリカウンタ５４に登録する。
【００５５】
尚、アドレスレジスタ５５の更新、及び、エントリカウンタ５４へのページ数の登録は電源投入時に行わず、例えば不揮発性メモリ２のデータの書込処理時に行うようにしてもよい。また、以下の説明では、エントリカウンタ５４にはデータが格納されているページ数が登録される場合について説明する。尚、上記アドレスレジスタ作成手段５５１は、データが格納されていないページ数や、各物理ブロックＢに構成された論理ブロックＣの数をエントリカウンタ５４に登録してもよい。
【００５６】
＜書込みに関して＞
上記物理ブロックテーブル５２、論理ブロックテーブル５３、上記第１のテーブル５１が作成されると、上記記憶装置１は、データ入出力装置７からのデータの書込みを受け付けることができるようになる。尚、本実施の形態では、不揮発性メモリ２に構成される論理ブロックＣは１６キロバイトとする。そのため、当該不揮発性メモリ２には、１ギガバイト／１６キロバイト＝２＾１６個の論理ブロックＣが構成されることになるので、論理ブロックＣを表現するには、１６ビットの情報が必要である。そこで、データ入出力装置７から記憶装置１へのデータの書込要求は、１６キロバイトのデータと１６ビットの論理アドレスＳとから構成されることになる。
【００５７】
上記データ入出力装置７から送信される書込要求は、記憶装置１に備えられた入出力制御部４にて受信される。
【００５８】
データと論理アドレスＳを受信すると、入出力制御部４は、受信したデータを書込単位である５１２バイト毎に３２のデータブロックに分割すると共に、バッファ手段３１〜３４に、８データブロックづつ転送する。入出力制御部４は、受信した書込要求に含まれる論理アドレスＳを記憶装置１に設けられた書込手段１００に転送する。
【００５９】
該書込手段１００は論理アドレスＳを受け取ると、書込対象となるデータで構成する論理ブロックＣ１をどの物理ブロックＢに構成するかを決定する。尚、本実施の形態では、上記バッファ手段３１〜３４と不揮発性メモリ２とが４本のバスＤ１〜４とで接続されているので、上記書込手段１００は論理ブロックＣ１を４つの物理ブロックＢにまたがって構成するものとする。
【００６０】
まず、上記書込手段１００は、４つの物理ブロックの物理アドレスをアドレスレジスタ５５に登録する。４つの物理ブロックを登録するのは、本実施の形態では、記憶装置１にはバスＤ１〜Ｄ４が４本備えられているからである。例えば図９（ａ）に示すように上記アドレスレジスタ５５に４つの物理ブロックＢ１〜Ｂ４を登録すると、書込手段１００は、これらの物理ブロックＢ１〜Ｂ４を書込候補物理ブロックとして決定する（図１０、Ｓ１００１）。物理ブロックＢの物理アドレスを登録すると、書込手段１００は、上記のように図９（ｂ）に示すように、アドレスレジスタ５５に登録した各物理ブロックＢのデータが書き込まれたページ数を、上記エントリカウンタ５４に登録する。この時は、書込手段１００がアドレスレジスタ作成手段５５１として機能することになる。
【００６１】
尚、アドレスレジスタ５５に物理ブロックＢが予め登録されている場合、書込手段１００は予め登録されている物理ブロックＢを書込候補物理ブロックとして決定する。
【００６２】
次に、上記書込手段１００は、上記エントリカウンタ５４を参照して、上記書込候補物理ブロックを書込物理ブロックとするか否かを決定する（図１０、Ｓ１００２）。ここでは、書込対象となる３２のデータブロックを４つの物理ブロックＢに格納するので、１つの物理ブロックＢには８つのデータブロックが格納されることになる。そこで、上記書込手段１００は、上記４つの書込候補物理ブロックと対応するエントリカウンタ５４の値を参照し、当該値が２４以下であるか、即ち８ページ以上データが書き込まれていないページがあるか否かを確認する。
【００６３】
ここでは図９（ｂ）に示すように物理ブロックＢ１〜Ｂ４に対応するエントリカウンタ５４の値が‘８’となっているので、上記書込手段１００は、上記書込候補物理ブロックＢ１〜Ｂ４を書込物理ブロックＢ１〜Ｂ４と決定する。
【００６４】
尚、書込候補物理ブロックＢ１〜Ｂ４に対応したエントリカウンタ５４の値が２５以上の値を保持している場合、上記書込手段１００は、当該書込候補物理ブロックＢ１〜Ｂ４を書込不能物理ブロックと決定する。続いて、上記書込手段１００は、上記物理ブロックテーブル５２を参照し、決定した書込不能物理ブロックと同じ数の消去済み物理ブロックＢを選択する。更に、上記書込手段１００は、ここで選択した消去済み物理ブロックを書込物理ブロックと決定し、上記物理ブロックテーブル５２に使用中物理ブロックとして登録する（図１０、Ｓ１００３〜Ｓ１００４）。更に、上記書込手段１００は、ここで上記物理ブロックテーブル５２に使用中物理ブロックとして登録した書込物理ブロックの物理アドレスを上記アドレスレジスタ５５に登録する（図１０、Ｓ１００５）。
【００６５】
尚、アドレスレジスタ５５に、エントリカウンタ５４の値が２５以上の物理ブロックＢの物理アドレスが保持されているのは、前回の書込処理から今回の書込処理までの間に、アドレスレジスタ５５の更新が行われない場合があるためである。即ち、アドレスレジスタ５５が更新されないと、前回のデータの書込みにより、全ページＡにデータが書込まれた物理ブロックＢの物理アドレスが、上記アドレスレジスタ５５に保持された状態となるためである。
【００６６】
以上のように、上記書込手段１００は４個の書込物理ブロックを決定すると、エントリカウンタ５４を参照して、論理ブロックＣ１を構成するデータブロックを書込む書込ページを各書込物理ブロックから８ページづつ選択する（図１０、Ｓ１００６）。尚、本実施の形態においては、上記書込手段１００は、物理アドレスの小さいページＡから順番にデータを書込むようになっている。そのため、図９（ｂ）のように書込物理ブロックＢ１〜Ｂ４に対応するエントリカウンタ５４の値が‘８’となっている場合、物理ブロックＢ１〜Ｂ４を構成するページＡのうち、物理アドレスの１番小さいページＡから８番目に小さいページＡ（図１２の一点鎖線Ｌで囲まれたページ）にデータが書き込まれていることになる。
【００６７】
そこで、上記書込手段１００は、書込物理ブロックＢ１〜Ｂ４を構成するページＡのうち、物理アドレスが９番目に小さいページＡから１６番目に小さいページＡを書込ページとして決定し、決定した書込ページの物理アドレスを記憶する。
【００６８】
次に、上記書込手段１００は、上記データ入出力装置７からデータと共に転送された論理アドレスＳの所定ビットＳ１（本実施の形態では上記のように領域５０が２＾１３個あるので上位１３ビット）を用いて、上記第１のテーブル５１の１つの領域５０を特定する（図１０、Ｓ１００７）。尚、論理アドレスのうち所定の１３ビット、例えば下位１３ビットを用いて１つの領域５０を特定してもよい。
上記書込手段１００は、特定した領域５０に登録された上記第１の物理アドレス、即ち第２のテーブル８０が格納されたページＡの物理アドレスの所定の１６ビットを読み取り、当該読み取った物理アドレスに‘０１０００’を付加して第２のテーブル８０が格納されたページＡの物理アドレスを生成する。
【００６９】
上記書込手段１００は、第２のテーブル８０が格納されたページＡの物理アドレスを生成すると、該生成した物理アドレスのページＡに、例えば第２の物理アドレス等が既に格納されているか否か判断する（図１１、Ｓ１００８）。
【００７０】
上記書込手段１００は、ページＡに既にデータ等が格納されていると判断すると、当該ページＡの管理領域Ａｂに格納された第２のテーブル８０を書換テーブルとして、バッファ３１〜３４等に読み出すと共に、当該ページＡに格納された第２のテーブル８０を無効テーブルとして認定する（図１１、Ｓ１００９）。この時、上記書込手段１００は、上記書換テーブルで既にバッファ３１〜３４に格納された他のデータに上書きしてしまわないように、該書換テーブルをバッファ３１〜３４の空領域に読み出す。
【００７１】
そして、書込手段１００は、論理アドレスＳの他の所定ビットＳ２、ここでは下位３ビットを用いて、読み出した書換テーブルの更新領域８１を特定し、当該更新領域８１に第２の物理アドレスＣａが書き込まれているか否かを判断する。尚、本実施の形態では、書換テーブル（第２のテーブル８０）は８個の更新領域８１から構成されている。８個の更新領域８１から構成されている理由は後述する。
【００７２】
第２の物理アドレスＣａが更新領域８１に書き込まれている場合のみ、上記書込手段１００は、当該第２の物理アドレスＣａにて特定される論理ブロックＣを‘無効’として上記論ブロックテーブル５３に登録する。
【００７３】
次に、上記書込手段１００は、上記特定した更新領域８１として判断された書込ページを代表する代表ページの物理アドレスの所定の１６ビットを第２の物理アドレスＣａとして書き込む（図１１、Ｓ１０１０）。尚、所定の１６ビットのみを更新領域８０に登録するのは、本実施の形態では、全代表ページarの物理アドレスの所定の５ビットが‘０００００’であるためである。尚、代表ページarが物理アドレスの所定の５ビットが‘０００００’であるページＡを指す旨は、上記書込手段１００が予め記憶していてもよいし、記憶装置１内のＲＯＭ等のメモリに記憶させておいてもよい。
【００７４】
このように、書換テーブルをバッファ手段３１〜３４等に読み出して、更新領域８１を書き換えるのは、不揮発性メモリ２では、データの上書きを行うことができないためである。
【００７５】
以上のように、更新領域８１に第２の物理アドレスＣａを書き込むと、上記書込手段１００は、バスＤ１〜Ｄ４を使ってバッファ手段３１〜３４にあるデータブロックを書込ページのデータ領域Ａａに書込む。また、書込手段１００は、上記書換テーブルを所定の１つ又は複数の書込ページの管理領域Ａｂに書込み、連鎖情報を以下に示すように１又は複数の書込ページの管理領域Ａｂに書込む（図１１、Ｓ１０１１）。この連鎖情報とは、読出手段６０等が論理ブロックＣを構成する代表ページarに書き込まれたデータを読み取ることで、当該論理ブロックＣを構成する他の書込ページの物理アドレスを得るための情報である。
【００７６】
例えば図１２に示すように、論理ブロックＣ１の代表ページarがページ１であるとすると、該ページ１の管理領域Ａｂには論理ブロックＣ１のページ２の物理アドレスが連鎖情報として書込まれる。同様に、ページＮの管理領域Ａｂに、ページ（Ｎ＋１）の物理アドレスを表す連鎖情報を格納すれば、後述する読出手段６０は、この連鎖情報を辿っていくことで、図１２に示す論理ブロックＣ１を構成する全てのページ２〜３２の物理アドレスを得ることができる。
【００７７】
もっとも、この場合、読出手段６０が、ページ２０の物理アドレスを得るためには、ページ１からページ１９に格納された連鎖情報を読み取る必要が生じる。従って、その分だけ読出手段６０のページ２０に対するアクセスタイムが長くなる。
【００７８】
そこで、該アクセスタイムを短くするために、例えば代表ページar（ページ１）の管理領域Ａｂに、ページ２からページ３２までの物理アドレスを連鎖情報として書き込むようにしてもよい。このようにすれば、読出手段６０は、ページ１の管理領域Ａｂに格納された連鎖情報を読み取ることにより、ページ２からページ３２の物理アドレスが得られる。その結果、各ページに対するアクセスタイムが短くなる。
【００７９】
尚、論理ブロックＣ１を構成する各ページＡの物理アドレスは、例えば当該論理ブロックＣ１が構成される各物理ブロックＢ１〜Ｂ４の先頭ページ１〜４の物理アドレスから容易に得ることができる。ページ２０の物理アドレスを得るのであれば、ページ４の物理アドレスに４を加算すればよい。このため、ページ１（代表ページar）の管理領域Ａｂに、ページ２からページ３２までの物理アドレスを連鎖情報として書き込む代わりに、ページ２からページ４までの物理アドレスを連鎖情報として書き込むようにしてもよい。
【００８０】
また、上記管理領域Ａｂには、連鎖情報以外にも例えば第２のテーブル８０や誤り訂正情報等の管理情報が書き込まれることがある。ところが管理領域Ａｂにはそれほど大きな領域を確保できないため、連鎖情報を管理領域Ａｂに格納してしまうと、第２のテーブル等を当該管理領域Ａｂに格納できなくなる。
【００８１】
例えば図１２に示す論理ブロックＣ１を構成するページ１〜３２のうち、ページ２、６、１０、１４、１８、２２、２６、３０の管理領域Ａｂは、第２のテーブル８０を格納することができるものとする。
【００８２】
仮に既述の通り、ページＮの管理領域Ａｂに、ページ（Ｎ＋１）の物理アドレスを表す連鎖情報を格納するならば、第２のテーブル８０を格納したページ２、６、１０、１４、１８、２２、２６、３０の管理領域Ａｂにも、連鎖情報を書き込むことになる。ページ２、６、１０、１４、１８、２２、２６、３０の管理領域Ａｂに連鎖情報が格納されると、当該管理領域Ａｂに第２のテーブル８を格納するための容量を確保することができない場合が生じる。そこで、上記書込手段１００は、管理領域Ａｂに第２のテーブル８が格納されているページ以外のページＡに連鎖情報を書き込む。
【００８３】
具体的には、ページ｛（４ｋ＋３）、ｋ＝０、１、２、…、７｝の物理アドレスを表す連鎖情報Ｃ１１を、第２のテーブル８のあるページ（４ｋ＋２）ではなく、ページ（４ｋ＋１）の管理領域Ａｂに書き込む。よって、ページ（４ｋ＋１）の管理領域Ａｂには、図１２に示すように、ページ（４ｋ＋２）の物理アドレスを表す連鎖情報Ｃ１０と、ページ（４ｋ＋３）の物理アドレスを表す連鎖情報Ｃ１１とが書き込まれることになる。更に、ページ（４ｋ＋４）の物理アドレスを表す連鎖情報Ｃ１２を、ページ（４ｋ＋３）の管理領域Ａｂに、ページ（４Ｋ＋１）の物理アドレスを表す連鎖情報Ｃ１３を、ページ（４ｋ＋４）の管理領域Ａｂに書き込む。
【００８４】
このように連鎖情報を書き込めば、第２のテーブル８０を格納する管理領域Ａｂ以外の管理領域Ａｂに連鎖情報を格納することができる。
【００８５】
尚、ページＮの管理領域Ａｂに、ページ（Ｎ＋１）の物理アドレスを表す連鎖情報を格納するならば、読出手段６０はページＮの管理領域Ａｂを参照することで、ページ（Ｎ＋１）のページの物理アドレスを表す連鎖情報が得られる。一方、上述のような連鎖情報の書込みを行った場合、読出手段６０は第２のテーブル８０のあるページ（４ｋ＋２）の管理領域Ａｂを参照しても、次のページ（４ｋ＋３）の物理アドレスを表す連鎖情報は得られない。このため、読出手段６０は、ページ（４ｋ＋１）に対して読み出しを行う際に、連鎖情報Ｃ１０だけでなく、全ての連鎖情報、ここでは連鎖情報Ｃ１１も読み出しておき、連鎖情報Ｃ１１を保持しておく。そして、ページ（４ｋ＋２）に対して読み出しを行ってから、既に保持している連鎖情報Ｃ１１を用いて、ページ（４ｋ＋３）の物理アドレスを取得すればよい。
【００８６】
また、上述の例では、図１２に示すようには、ページ（４ｋ＋１）の管理領域Ａｂに、連鎖情報Ｃ１０、Ｃ１１とを書き込んだが、ページ（４ｋ＋１）の管理領域Ａｂに連鎖情報Ｃ１２、Ｃ１３を書き込んでもよい。
【００８７】
しかし、管理情報には、誤り訂正情報など他に欠かせないものもあるため、ページ（４ｋ＋１）の管理領域Ａｂに全ての連鎖情報Ｃ１０〜Ｃ１３を書き込むための容量を確保することができなかったり、書き込むことが適当でない場合がある。そこで、１つの管理領域Ａｂに書き込まれる連鎖情報の数を予め決めておく。書込手段１００は、１つの管理領域Ａｂに一定数の連鎖情報を書き込むと、未だ書き込んでいない連鎖情報を他のページＡの管理領域Ａｂに書き込むようにする。ここでの所定数は、１つの論理ブロックを構成するページの数の仕様などに基づいて定めればよい。
【００８８】
データ、書換テーブル、連鎖情報の書込処理が終了すると、上記書込手段１００は、書換テーブルの識別番号にて特定される領域５０に、当該書換テーブルを書き込んだ書込ページの物理アドレスの所定の１６ビットを第１の物理アドレスとして書き込む（図１１、Ｓ１０１２）。次に、上記書込手段１００は、上記で無効テーブルと認定した第２のテーブル８０が格納されたページＡのフラグ領域９０の値を、無効値に更新する（図１１、Ｓ１０１３）。
【００８９】
上記では、不揮発性メモリ２のデータの書込単位はページＡであると説明したが、本発明の記憶装置１では、上記フラグ領域９０は、同一ページ内の別の領域とは独立して更新することができる。即ち、データの消去後のフラグ領域９０の値が’００’である場合、‘００’を有効値とし、’ＦＦ’無効値とする。すると上記書込手段１００は、フラグ領域９０の値を他の領域から独立して有効値から無効値（即ち、‘００’→‘ＦＦ’）に更新することができるようになる。尚、不揮発性メモリ２のデータ消去後のフラグ領域９０の値が’ＦＦ’である場合は、’ＦＦ’を有効値とし、’００’を無効値とする。尚、フラグ領域９０を無効値にする処理は、書換テーブルをバッファ手段３１〜３４等に読み出すと同時に行うようにしてもよい。
【００９０】
このように無効テーブルのフラグ領域９０の値を無効値に更新するのは、記憶装置１の電源が切れて、その後電源が投入された時に、上記論理ブロックテーブル作成手段５３１が、無効テーブルに登録されている第２の物理アドレスＣａにて特定される論理ブロックＣまでも論理ブロックテーブル５３に‘有効’として登録するからである。また、フラグ領域９０を更新しなければ、同じ識別番号を保持する第２のテーブル８０が複数個不揮発性メモリ２内に存在することになる。そのために識別番号が同じ第２のテーブル８０が複数あると、上記第１のテーブル作成手段５１１が登録する第１の物理アドレスが定まらないためである。
【００９１】
このように、無効値に更新することで、上記更新領域８１の書換後、本発明の記憶装置１の電源が切れ、その後電源が投入された時、第１のテーブル作成手段５１１は、フラグ領域Ａｂが有効な第２のテーブル８０が格納されたページＡの物理アドレスを取得することができる。よって、第１のテーブル作成手段５１１は、有効な第２のテーブルの物理アドレスの所定の１６ビットを第１の物理アドレスとして第１のテーブル５１に登録するようになる。
【００９２】
上記書込手段１００は、手順Ｓ１０１３でフラグ領域９０の値を無効値に更新すると、上記エントリカウンタ５４と論理ブロックテーブル５３とを更新する（図１１、Ｓ１０１４）。
【００９３】
エントリカウンタ５４の更新は、例えば、上記書込物理ブロックＢ１〜Ｂ４に対応するエントリカウンタ５４が保持する値に、書込ページ数を加えることである。論理ブロックテーブル５３の更新は、データを書き込んだ代表ページarが属する論理ブロックＣを‘有効’として上記論理ブロックテ−ブル５３に登録することである。
【００９４】
また、上記書込手段１００は、手順Ｓ１００８で第２のテーブル８０が格納されたページＡにデータが格納されていないと判断した場合、上記のように第２のデーブルを書換データとしてバッファ３１〜３４に読み出さずに、手順１０１０に移行する。
【００９５】
また、上記アドレスレジスタ５５は、例えば、記憶装置１が書込要求を受信したとき又は、所定の周期でアドレスレジスタ作成手段５５１にて更新されるようになっている。該更新とは、例えば、アドレスレジスタ作成手段５５１が、所定の物理ブロックＢに対応するエントリカウンタ５４が保持する値を参照し、例えばエントリカウンタ５４の値が３２となった物理ブロックＢの物理アドレスをアドレスレジスタ５５から抹消することである。尚、アドレスレジスタ５５が更新されると、エントリカウンタ５４の値は、アドレスレジスタ作成手段５５１にて自動的に０に更新される。
【００９６】
また、電源投入時に関する説明において、上記物理ブロックテーブル作成手段５２１が、物理ブロックが不良であるか否かを判断した。上記書込手段１００が書込みを行う際にも、上記書込手段１００は、書込物理ブロックが不良ブロックであるか否かを判断してもよい。この場合には、上記書込手段１００を、上記不良物理ブロック判断手段５２２、上記使用状態設定手段５２３、上記有効状態設定手段５３２として動作させる。
【００９７】
＜データの読み出しに関して＞
上述のように本発明の記憶装置１の不揮発性メモリ２の記憶容量は、１ギガバイトであり、論理ブロックCは１６キロバイトであるので、当該不揮発性メモリ２には、２＾１６個の論理ブロックＣが構成されることになる。そこで、不揮発性メモリ２内に構成された１つの論理ブロックＣを表現するには、１６ビットの情報が必要である。
【００９８】
そのため、例えば上記データ入出力装置７から送信されるデータの読出要求には、読出対象の論理ブロックＣを特定するための１６ビットの論理アドレスＳが含まれる。
【００９９】
例えば図１２に示す論理ブロックＣ１の読出要求が上記データ入出力装置７から記憶装置１に送信されると、当該読出要求は、上記入出力制御部４にて受信され、該入出力制御部４は読出要求を受信すると、該読出要求を読出手段６０に転送する。
【０１００】
上記読出手段６０は、読出要求を受け取ると、図１３に示すように当該読出要求に含まれる論理アドレスＳの上位１３ビットＳ１を用いて、上記第１のテーブル５１の１つの領域５０を特定する（図１４、Ｓ１４０１）。
【０１０１】
上記読出手段６０は、特定した領域５０に登録された第１の物理アドレスＴｎ（ｎ：０〜２＾１３−１）を読み取り、更に読み取った第１の物理アドレスに‘０１０００’を付加して、第２のテーブル８０が格納されたページＡの物理アドレス（Ｔｎ＋０１０００）を生成する（図１４、Ｓ１４０２）。
【０１０２】
次に、読出手段６０は、上記論理アドレスの下位３ビットＳ２を用いて上記生成した物理アドレスのページＡに格納された第２のテーブル８０の１つの更新領域８１を特定する（図１４、Ｓ１４０３）。読出手段６０は、ここで特定した更新領域８１に格納されている第２の物理アドレスＣａｎ（ｎ：０〜２＾３−１）を読出し、当該第２の物理アドレスＣａｎに‘０００００’を付加して代表ページarの物理アドレス（Can＋０００００）を生成する（図１４、Ｓ１４０４）。
【０１０３】
このように２つのテーブルを使用して代表ページarの物理アドレスを特定することで、以下に示すようにＲＡＭに設けられる第１のテーブル５１の容量を削減することができる。
【０１０４】
例えば上記のように１つの第２のテーブル８０が、８つの更新領域８１から構成されており、８つの第２の物理アドレスＣａを格納することができる場合、第１のテーブル５１の記憶容量は以下のようになる。
【０１０５】
１つの第２のテーブル８で８つの代表ページarに対応する第２の物理アドレスＣａを登録することができるので、２＾１６個の代表ページarを特定するのに必要な第２のテーブル８の数は２＾１６／２＾３＝２＾１３個になる。
【０１０６】
これにより、第２のテーブル８０を特定するための第１のテーブル５１は、２＾１３個の第１の物理アドレスを保持すればよく、よって領域５０は２＾１３個存在することになる。従って、第１のテーブル５１の容量は、１６ビット×２＾１３＝１６キロバイトとなる。
【０１０７】
一方、ＲＡＭに設けたテーブルのみで第２の物理アドレスＣａを特定する場合、当該テーブルは２＾１６個の第２の物理アドレスＣａを保持する必要がある。この場合、テーブルの容量は、１６ビット×２＾１６＝１２８キロバイトとなる。このようにして、本発明の記憶装置１では、ＲＡＭの容量の削減が図られている。
【０１０８】
論理ブロックC１の代表ページar（図１２のページ１）の物理アドレスを生成すると、読出手段６０は、代表ページarに書き込まれたデータと連鎖情報Ｃ１０、Ｃ１１を、当該代表ページarと接続されたバスＤ１を利用してバッファ３１に読み出す（図１４、Ｓ１４０５）。
【０１０９】
次に、読出手段６０は、読み出した連鎖情報Ｃ１０、Ｃ１１を参照し、当該連鎖情報Ｃ１０、C１１が示す物理アドレスのページＡに格納されたデータと連鎖情報を読み出す。ここでは、連鎖情報Ｃ１０はページ２、連鎖情報Ｃ１１はページ３の物理アドレスを示しているため、読出手段６０は、ページ２、ページ３に格納されたデータと連鎖情報をバスＤ２、バスＤ３を使用して、バッファ３２、３３に読み出す。
【０１１０】
ここで読出手段６０は、ページ２、ページ３に格納されたデータと連鎖情報とを２本のバスＤ２、Ｄ３を利用して読み出すことができるので、読出処理を迅速に行うことができる。また、（４ｋ＋１）ページの管理領域Ａｂに連鎖情報Ｃ１０、Ｃ１１、Ｃ１２が格納されている場合、読出手段６０は、４本のバスＤ１〜Ｄ４を利用して、ページ（４ｋ＋１）（４ｋ＋２）、（４ｋ＋３）、（４ｋ＋４）、に格納されたデータと連鎖情報を同時にバッファ３１〜３４に読み出すことができる。
【０１１１】
このように読出手段６０は、連鎖情報が示す物理アドレスのページＡに格納されたデータと連鎖情報の読出処理を行い、論理ブロックの最後のページまで上記処理を行う。
【０１１２】
バッファ３１〜３４にデータを読み出すと、読出手段６０は、当該データを上記入出力制御部４を介して、例えば上記データ入出力装置７に送信する（１４、Ｓ１４０６）。
【０１１３】
また、上記読出要求には、論理ブロックＣ１の例えばページ２０に格納されたデータよりもページ番号の大きいデータのみを読み出すことを指示する頭出要求がある。この頭出要求には、上記論理アドレスＳと、頭出要求の対象となるデータの先頭の論理アドレスを示す５ビットの論理アドレス（以下、「頭出アドレス」という）が含まれている。
【０１１４】
上記データ入出力装置７から記憶装置１に頭出要求が送信されると、上記入出力制御部４は当該頭出要求を受信し、上記読出手段６０に当該頭出要求に含まれる論理アドレスＳと頭出アドレスを転送する。
【０１１５】
上記読出手段６０は論理アドレスＳと頭出アドレスを受信すると、当該頭出アドレスが何ページ目のデータを示しているかを判断する。次に、読出手段６０は、論理アドレスＳを用いて、上記のように代表ページarの物理アドレスを特定する。代表ページarの物理アドレスを特定すると、読出手段６０は、連鎖情報を用いて頭出アドレスが示しているページ（ここでは、ページ２０）よりも大きいページに書き込まれたデータを読み出す。このように読出手段６０が頭出要求の読出しの対象となるデータにアクセスする際にも連鎖情報を用いることができる。
【０１１６】
ところで、上記第２のテーブル８０は、複数のページＡにまたがって構成されていてもよい。例えば、第２のテーブル８０は、物理アドレスが連続する４ページにまたがって構成されるようにしてもよい。また、第２のテーブル８０が４ページにまたがって構成されている場合、当該４ページのうち、所定の１つのページに当該第２のテーブル８０の有効又は無効を示すフラグ領域９０を設けるようにする。
【０１１７】
＜消去に関して＞
上記のように、所定の周期で書込処理が行われると、上記不揮発性メモリ２には、有効なデータと無効なデータが格納された物理ブロックＢが多数存在するようになる。不揮発性メモリのデータの消去単位は物理ブロックＢであるため、このような有効なデータと無効なデータがある物理ブロックＢを消去すると、有効なデータまでも消去してしまうことになる。
【０１１８】
このような状況で、有効なデータを消去せずに、効率よく無効なデータのみを消去し、不揮発性メモリ２の空き容量を増やすためには、以下のようにデータの消去を行う。
【０１１９】
消去手段７０は、まず上記物理ブロックテーブル５２を参照し、上記物理ブロックテーブル５２に使用中物理ブロックとして登録された物理ブロックＢに構成されている論理ブロックの状態を上記論理ブロックテーブル５３を参照して調べる（図１５、Ｓ１５０１）。
【０１２０】
上記消去手段７０は、上記物理ブロックテーブル５２に使用中物理ブロック登録された物理ブロックＢのうち、論理ブロックテーブルに‘有効’として登録されている有効論理ブロックが２以下しか構成されていない物理ブロックＢを消去物理ブロックとして決定する（図１５、Ｓ１５０２）。
【０１２１】
消去手段７０は、消去物理ブロックに構成される論理ブロックＣと対応する代表ページarに格納された連鎖情報を用いて、当該有効論理ブロックがどの物理ブロックＢに構成されているかを把握する（図１５、Ｓ１５０３）。
【０１２２】
続いて、上記消去手段７０は、消去物理ブロックに構成された有効論理ブロックＣ全体（一部が消去物理ブロックに構成されている有効論理ブロックＣも含む）を退避データとしてバッファ３１〜３４に読み出す。尚、退避データには、当該退避データに含まれる有効論理ブロックＣの代表ページarの物理アドレスを特定する第２の物理アドレスが登録された第２のテーブル８０も含まれる。
【０１２３】
退避データを読み出すと、消去手段７０は、上記書込手段１００に当該退避データをバッファ３１〜３４に読み出した旨を通知する。
【０１２４】
ここで、書込手段１００は、データ入出力装置７から送信されたデータの書込ページの選択と同様の方法で、退避データを書き込む書込ページを選択する（図１５、Ｓ１５０４）。書込ページを選択すると、書込手段１００は書込ページの物理アドレスに基づいて、退避データに格納されている連鎖情報を書き換える（図１５、Ｓ１５０５）。例えば、バッファ３１〜３４に読み出された論理ブロックＣの代表ページarの管理領域Ａｂに、書込ページの全ての物理アドレスを書き込んでおく。連鎖情報を書き換えると、書込手段１００は、バッファ３１〜３４に読み出された退避データを書込ページに書き込む（図１５、Ｓ１５０６）。また、上記書込手段１００は、退避データに含まれる第２のテーブル８０を、退避データの書込ページのうち、物理アドレスの所定の５ビットが‘０１０００’であるページＡに書き込む。上記書込手段１００は、当該第２のテーブル８０の識別番号に基づいて特定される領域５０を、当該第２のテーブル８０を書き込んだページＡの物理アドレスの所定の１６ビットに更新する。
【０１２５】
上記書込手段１００は、退避データを書き込むと、データ入出力装置７から書込要求があった場合と同様に、エントリカウンタ５４と、論理ブロックテーブル５３を更新する。エントリカウンタ５４と論理ブロックテーブル５３を更新すると、上記書込手段１００は、上記消去手段７０に退避データを書き込んだ旨を通知する。
【０１２６】
上記消去手段７０は、該通知を受けると上記消去物理ブロックに格納されているデータを消去するとともに、上記消去物理ブロックを消去済み物理ブロックとして上記物理ブロックテーブル５２に登録する（図１５、Ｓ１５０７）。
【０１２７】
上記では、消去物理ブロックを決定する条件として、（１）上記物理ブロックテーブル５２に使用中物理ブロックとして登録されていること、（２）有効論理ブロックが２以下しか構成されていないこととしたが、例えば当該条件にアドレスレジスタ５５に物理アドレスが保持されていないことを追加してもよい。また、上記条件は、上記のような場合に限らず、有効論理ブロックが１以下しか構成されていないという条件であっても構わない。このように、無効なデータが多く格納されている物理ブロックＢを上記消去物理ブロックとすることで、上記消去手段７０は少量のデータを他の物理ブロックへ移動させればよいこととなる。
【０１２８】
尚、無効なデータの消去のタイミングは、限定されるものでなく、例えば、所定の周期で自動的に消去手段７０が行うようにしてもよい。
【０１２９】
尚、電源投入時に関する説明において、上記物理ブロックテーブル作成手段５２１が、物理ブロックが不良であるか否かを判断した。上記消去手段７０が消去を行う際にも、上記消去手段７０は、消去対象の物理ブロックが不良ブロックであるか否かを判断してもよい。この場合には、上記消去手段７０を、上記不良物理ブロック判断手段５２２、上記使用状態設定手段５２３、上記有効状態設定手段５３２として動作させる。
【０１３０】
（実施の形態２）
上記書込手段１００は、上記で無効テーブルと認定した第２のテーブル８０が格納されたページＡのフラグ領域９０の値を無効値に更新する処理を行っている。しかし、書込処理をできるだけ高速に行うためには、このような処理を省かなければならない。
【０１３１】
そこで、上記書込手段１００は、バッファ３１〜３４に読み出した書換テーブルを書込むページＡを以下のように決定し、決定したページＡに第２のテーブル８０を書き写すことで上記処理を省く。
【０１３２】
まず、書込手段１００は、無効テーブルと同じ物理ブロックＢ内のページＡに、無効テーブルが格納されているページＡより物理アドレスが大きく、且つ物理アドレスの所定の５ビットが‘０１０００’であり書き込み可能であるという条件を満たすページＡがあるかを判断する。所定の５ビットが‘０１０００’であるという条件は、本実施の形態では、物理アドレスの所定の５ビットが‘０１０００’のページＡのみ上記第２のテーブル８０を格納することができるためである。この条件を満たすページＡがある場合、上記書込手段１００は、当該条件を満たすページのうち、物理アドレスの最も小さいページＡを書換テーブルを格納するページＡとして決定する。上記書込手段１００は、このように決定したページＡに書換テーブルを格納する際に、無効テーブルのフラグ領域９０の値を無効値に更新する処理は行わないようにする。
【０１３３】
上記条件を満たすページＡがない場合、上記書込手段１００は、無効テーブルが格納されている物理ブロックＢ以外の所定の物理ブロックＢに属し、且つ物理アドレスの所定の５ビットが‘０１０００’であり書き込み可能なページＡのうち、最も物理アドレスの小さいページＡを書換データの書込ページとして決定する。このように決定したページＡに書換テーブルを格納する際には、書込手段１００は、実施の形態１と同じように無効テーブルのフラグ領域９０の値を無効値に更新する。
【０１３４】
以上のように書込手段１００が、書換テーブルを書き込むページＡを決定したとき、上記論理ブロックテーブル作成手段５３１、第１のテーブル作成手段５１１は、以下のようにして論理ブロックテーブル５３、第１のテーブル５１を作成する。
【０１３５】
記憶装置１に電源が投入されると、上記論理ブロックテーブル作成手段５３１は、まず上記論理ブロックテーブル５３を初期化する（図１６、Ｓ１６０１）。続いて、上記論理ブロックテーブル作成手段５３１は、各物理ブロックＢにおいて、以下のような処理を行う。
【０１３６】
上記論理ブロックテーブル作成手段５３１は、物理アドレスの下位５ビットが‘０１０００’であるページＡを検出対象ページとして認識する。次に、上記論理ブロックテーブル作成手段５３１は、当該検出対象ページのうち物理アドレスの大きい検出対象ページから順にフラグ領域９０の値を参照し、フラグ領域９０の値が有効値である検出対象ページの検出を行う（図１６、Ｓ１６０２）。上記論理ブロックテーブル作成手段５３１は、当該検出処理において、最初に検出対象ページを検出したときは、手順１６０３を行わずに、当該検出対象ページに格納された第２のテーブル８０に登録されている第２の物理アドレスを参照する。上記論理ブロックテーブル作成手段５３１は、第２のテーブル８０に登録されている第２の物理アドレスにて特定される論理ブロックＣを‘有効’として上記論理ブロックテーブル５３に登録する（図１６、Ｓ１６０４）。そして、論理ブロックテーブル作成手段５３１は、最初に検出した第２のテーブル８０が保持する識別番号をメモリ５３５に記憶する（図１６、Ｓ１６０５）。
【０１３７】
‘有効’として登録すると、論理ブロックテーブル作成手段５３１は、上記最初に検出した検出対象ページより物理アドレスの小さい検出対象ページのうち、物理アドレスの大きいページから順にフラグ領域９０の値を参照し、当該値が有効値の検出対象ページの検出を行う。フラグ領域９０の値が有効値である検出対象ページを検出すると、論理ブロックテーブル作成手段５３１は当該ページＡに格納された第２のテーブル８０に保持されている識別番号と、上記メモリ５３５に記憶されている識別番号が同一であるか否かを判断する（図１６、Ｓ１６０３〜Ｓ１６０４）。
【０１３８】
同一でないと判断すると、上記論理ブロックテーブル作成手段５３１は、当該第２のテーブル８０に登録された第２の物理アドレスＣａにて特定される論理ブロックＣを‘有効’として論理ブロックテーブル５３に登録し、当該第２のテーブル８０に保持されている識別番号を上記メモリ５３５に記憶する（図１６、Ｓ１６０５）。同一であると判断すると、上記論理ブロックテーブル作成手段５３１は、当該第２のテーブル８０に登録された第２の物理アドレスＣａにて特定される論理ブロックＣを論理ブロックテーブル５３に登録せずに、上記フラグ領域９０の値が有効値である検出対象ページの検出を再開する。
【０１３９】
このようにして、上記論理ブロックテーブル作成手段５３１は、上記メモリ５３５に記憶されていない識別番号を保持する第２のテーブル８０に登録された第２の物理アドレスＣａにて特定される論理ブロックＣのみを上記論理ブロックテーブル５３に‘有効’として登録する。
【０１４０】
上記論理ブロックテーブル作成手段５３１は、所定の物理ブロックＢの全検出対象ページのフラグ領域９０の参照を行うと（図１６、Ｓ１６０６）、上記メモリ５３５を初期化し、未だ検出対象ページの参照を行っていない物理ブロックＢに対して当該検出処理を行う（図１６、Ｓ１６０７〜Ｓ１６０８）。
【０１４１】
また、上記第１のテーブル作成手段５１１は、電源が投入されると、上記第１のテーブル５１を初期化し（図１７、Ｓ１７０１）、上記論理ブロックテーブル作成手段５３１と同様に、各物理ブロックＢに対して以下のような処理を行う。
【０１４２】
上記第１のテーブル作成手段５１１は、所定の物理ブロックＢの検出対象ページのうち、物理アドレスの大きいページＡから順にフラグ領域９０の値を参照する（図１７、Ｓ１７０２）。上記第１のテーブル作成手段５１１は、当該検出処理において、最初に検出対象ページを検出したときは、手順１７０３を行わずに、手順１７０４に移行する。即ち、当該検出対象ページに格納された第２のテーブル８０が保持する識別番号にて示されている領域５０に、当該検出対象ページの物理アドレスの所定の１６ビットを第１の物理アドレスとして登録する（図１７、Ｓ１７０４）。そして、第1のテーブル作成手段５１１は、検出した第２のテーブル８０が保持する識別番号をメモリ５３５に記憶する（図１７、Ｓ１７０５）。
【０１４３】
第１の物理アドレスを登録すると、第１のテーブル作成手段５１１は、上記最初に検出した検出対象ページより物理アドレスの小さい検出対象ページのうち、物理アドレスの大きい検出対象ページから順にフラグ領域９０の値を参照し、当該値が有効値の検出対象ページの検出を行う。フラグ領域９０の値が有効値である検出対象ページを検出すると、第１のテーブル作成手段５１１は、当該検出対象ページに格納された第２のテーブル８０に保持されている識別番号と、メモリ５１５に記憶されている識別番号が同一であるか否かを判断する（図１７、Ｓ１７０３〜Ｓ１７０４）。
【０１４４】
同一でないと判断すると、第１のテーブル作成手段５１１は、当該第２のテーブル８０が格納されている検出対象ページの物理アドレスの所定の１６ビットを第１の物理アドレスとして、当該第２のテーブル８０が保持する識別番号にて示される領域５０に登録する。そして、第1のテーブル作成手段５１１は、検出した第２のテーブル８０が保持する識別番号をメモリ５３５に記憶する（図１７、Ｓ１７０５）。同一であると判断すると、第１のテーブル作成手段５１１は、検出対象ページの物理アドレスの所定の１６ビット（第１の物理アドレス）を、当該第２のテーブル８０に保持されている識別番号にて示される領域５０に登録しない。
【０１４５】
このようにして、上記第１のテーブル作成手段５１１は、上記メモリ５１５に記憶されていない識別番号を保持する第２のテーブル８０が格納された検出対象ページの物理アドレスの所定の１６ビットを第１の物理アドレスとして、当該識別番号にて示される領域５０に登録する。
【０１４６】
上記第１のテーブル作成手段５１１は、所定の物理ブロックＢの全検出対象ページの参照を行うと（図１７、Ｓ１７０６）、上記メモリ５１５を初期化し、未だ検出対象ページの参照をしていない所定の物理ブロックＢに対して当該検出処理を行う（図１７、Ｓ１７０７〜Ｓ１７０８）。
【０１４７】
以上のようにして、上記論理ブロックテーブル作成手段５３１は論理ブロックテーブル５３を作成し、上記第１のテーブル作成手段５１１は第１のテーブル５１を作成することで、無効テーブルが格納されている物理ブロックＢと同じ物理ブロックＢに書換テーブルを書き込む際には、無効テーブルと対応するフラグ領域９０の値を無効値に更新しなくても、論理ブロックテーブル５３と第１のテーブル５１を作成することができる。
【０１４８】
尚、上記条件が例えば無効テーブルと同じ物理ブロックＢ内のページＡに、無効テーブルが格納されているページＡより物理アドレスが小さく、且つ物理アドレスの所定の５ビットが‘０１０００’であるページＡがある場合、書込手段１００は当該ページＡに書き換えデータを書き込んでもよい。その場合、上記書込手段１００は当該条件を満たすページがない場合、無効テーブルが格納されている物理ブロックＢ以外の所定の物理ブロックＢに属し、且つ物理アドレスの所定の５ビットが‘０１０００’であるページＡのうち、最も物理アドレスの大きいページＡに書換データを書込むページとして決定する。
【０１４９】
このような条件の下で、書換データを書き込むページが決定されたときは、上記論理ブロックテーブル作成手段５３１、第１のテーブル作成手段５１１は、物理アドレスの最も小さい検出対象ページから順にフラグ領域９０の参照を行うようにする。
【０１５０】
以上に説明したように、本発明は不揮発性メモリを備えた記憶装置のＲＡＭの容量を削減するために、ＲＡＭに設けられた第１のテーブルと不揮発性メモリに設けられた第２のテーブルとを用いて論理アドレスを物理アドレスに変換するようになっている。２つのテーブルを用いて論理アドレスを物理アドレスに変換することで、第１のテーブルの容量を削減することができる。第１のテーブルの容量を削減することで、ＲＡＭの容量と容積を削減することができる。
【０１５１】
また、本発明の記憶装置は、物理ブロックにて構成される論理ブロックの構成や、論理ブロックの読出し又は消去を効率よく行うために、物理ブロックテーブル、論理ブロックテーブル、エントリカウンタ、アドレスレジスタを備える。
【０１５２】
物理ブロックテーブルは、不揮発性メモリのデータの消去単位である物理ブロックが使用中物理ブロックであるか、消去済み物理ブロックであるかを示す。アドレスレジスタはデータの書込対象となる物理ブロックを示す。エントリカウンタは、アドレスレジスタに示された物理ブロックに書き込まれたデータ量を示す。論理ブロックテーブルは、上記論理ブロックの状況を示す。
【０１５３】
例えば書込手段は、所定の論理アドレスにて特定される論理ブロックを不揮発性メモリに構成する際に、論理ブロックを構成した物理ブロックを使用中として物理ブロックテーブルに登録し、論理ブロックを構成した書込単位に基づいてアドレスレジスタを更新し、当該論理ブロックのデータ量に基づいてエントリカウンタを更新する。
【０１５４】
また、書込手段は、不揮発性メモリに構成した論理ブロックに読出手段等が高速にアクセスすることができるように、論理ブロックを構成する際に、論理ブロックを構成する書込単位のうち、例えば代表書込単位に他の書込単位の物理アドレスを特定するための連鎖情報を書き込む。書込単位とは、不揮発性メモリにおけるデータの書き込み単位であり、また論理ブロックは複数の書込単位にまたがって構成される。
【０１５５】
更に書込手段は、不揮発性メモリに構成した論理ブロックの代表書込単位の物理アドレスを特定する情報を第２のテーブルに登録する。
【０１５６】
読出手段は、所定の論理アドレスにて特定される論理ブロックの読出要求があると、当該論理アドレスを用いて、上記第２のテーブルに登録された情報を読み取って、代表書込単位の物理アドレスを得る。次に、読出手段は、代表書込単位の物理アドレスを得ると、代表書込単位に書き込まれた連鎖情報を読み取る。この連鎖情報は、代表書込単位と同じ論理ブロックを構成する他の書込単位の物理アドレスである。読出手段は、連鎖情報を読み取って、他の書込単位の物理アドレスを得る。読出手段は、他の書込単位の物理アドレスを得ると、当該他の書込単位に書き込まれた連鎖情報を読み取って、更に他の書込単位の物理アドレスを得る。このようにして読出手段は、連鎖情報を読み取ることで、読出要求の対象となる論理ブロックを構成する全部の書込単位の物理アドレスを得ることができる。
【０１５７】
尚、代表書込単位に書き込まれた連鎖情報は、代表書込単位と同一の論理ブロックを構成する他の全部の書込単位の物理アドレスを特定するための情報であってもよい。この場合、読出手段は、代表書込単位の連鎖情報を読み取ることで、読出要求の対象となる論理ブロックを構成する全部の書込単位の物理アドレスを得ることができる。
【０１５８】
読出手段は、上記のように書込単位の物理アドレスを取得すると、当該書込単位に格納されたデータを読み出す。
【０１５９】
また、消去手段は、以下のようにして、選択した物理ブロックに格納されたデータを消去する。消去手段は、上記物理ブロックテーブルと、上記論理ブロックテーブルと、アドレスレジスタ等を参照して、有効な論理ブロックが構成されている量が少ない物理ブロックを把握する。そして消去手段は、当該物理ブロックを消去物理ブロックとして、当該消去物理ブロックに構成された有効な論理ブロックを他の物理ブロックに書き写す。そして消去物理ブロックのデータを消去する。このようにして消去物理ブロックを選択することで、データを消去する際に有効な論理ブロックを書き写す量が少なくなるので、データの消去を迅速に行うことができる。
【０１６０】
この構成により、本発明の記憶装置は、上記第１のテーブルと第２のテーブルとを用いて、論理アドレスを物理アドレスに変換するので、ＲＡＭに設けられた第１のテーブルの容量を削減することができる。従って、小型で記憶容量の大きい記憶装置の実現することができる。
【０１６１】
また、本発明の記憶装置は、論理ブロックを構成する所定の書込単位に当該論理ブロックを構成する物理アドレスを連鎖情報として書き込むことで、当該論理ブロックを構成する全書込単位に素早くアクセスすることができる。
【０１６２】
物理ブロックに書き込まれたデータの状況を判断し、データを書き込む書込単位や消去する物理ブロックの選択を行うため、データの書き込みまたはデータの消去を効率よく行うことができる。書換テーブルを無効テーブルと異なる物理ブロックに書き込む場合にのみ、無効テーブルのフラグ領域の値を無効値に更新するため、書込処理を高速に行うことができる。
【０１６３】
また、物理ブロックテーブルが示す不良物理ブロックの使用状態を有効状態にすることによって、書込みの遅延を抑えることができる。その結果、データアクセスの高速化を図ることができる。更に、不良物理ブロックに対応する論理ブロックについて論理ブロックテーブルが示す状態を有効状態にすることによって、消去の遅延を抑えることができる。その結果、データアクセスの高速化を図ることができる。
【図面の簡単な説明】
【０１６４】
【図１】記憶装置の概略ブロック図
【図２】不揮発性メモリの構成を示した図
【図３】物理ブロックテーブルの作成手順の具体例を示すフローチャート
【図４】物理ブロックテーブルを示す図
【図５】論理ブロックテーブルの作成手順の具体例を示すフローチャート
【図６】論理ブロックテーブルを示す図
【図７】第１のテーブルを作成する手順の具体例を示すフローチャート
【図８】第１のテーブルを示す図
【図９】アドレスレジスタとエントリカウンタを示す図
【図１０】データの書込みの手順を示すフローチャート
【図１１】データの書込みの手順を示すフローチャート
【図１２】フラッシュメモリに連鎖情報を書き込んだ具体例を示す図
【図１３】代表ページの物理アドレスを取得する手順を示した概念図
【図１４】データの読出しの手順を示すフローチャート
【図１５】データの消去の手順を示すフローチャート
【図１６】論理ブロックテーブルの作成手順の具体例を示すフローチャート
【図１７】第１のテーブルの作成手順の具体例を示すフローチャート
【符号の説明】
【０１６５】
１  記憶装置
２  不揮発性メモリ
５１  第１のテーブル
５２  物理ブロックテーブル
５３  論理ブロックテーブル
５４  エントリカウンタ
５５  アドレスレジスタ
６０  読出手段
７０  消去手段
８０  第２のテーブル
１００  書込手段
５１１  第１のテーブル作成手段
５２１  物理ブロックテーブル作成手段
５２２  不良物理ブロック判断手段
５２３  使用状態設定手段
５３１  論理ブロックテーブル作成手段
５３２  有効状態設定手段
【図１】
2007280431.tif 000003
【図２】
2007280431.tif 000004
【図３】
2007280431.tif 000005
【図４】
2007280431.tif 000006
【図５】
2007280431.tif 000007
【図６】
2007280431.tif 000008
【図７】
2007280431.tif 000009
【図８】
2007280431.tif 000010
【図９】
2007280431.tif 000011
【図１０】
2007280431.tif 000012
【図１１】
2007280431.tif 000013
【図１２】
2007280431.tif 000014
【図１３】
2007280431.tif 000015
【図１４】
2007280431.tif 000016
【図１５】
2007280431.tif 000017
【図１６】
2007280431.tif 000018
【図１７】
2007280431.tif 000019