(57)【要約】【課題】  情報記録読出装置において、データ記録の精度を向上し、且つ、長期寿命を可能にする【解決手段】  フラッシュメモリ１を形成する複数のセクタ１ａ各々を複数のブロック１ｂに分割し、これら複数のブロック１ｂ各々にはデータ記録領域１ｃとこのデータ記録領域１ｃにデータを未記録、記録中または記録済かを示すデータを記録したブロック状態管理領域１ｄを設ける。これら「記録済」または「記録中」により、記録されているデータが信頼できるかどうかを容易に判断でき、データ記録の精度を向上する。また、複数のブロック１ｂに分割することにより、セクタ１ａ当たりのデータ書換回数は従来に比しＮ倍に増へ、消去回数は１／Ｎとなり、フラッシュメモリ１の寿命を延ばす。【選択図】        図１
2006085596.tif 000002
【特許請求の範囲】
【請求項１】
データ記録領域の一部を形成するとともに、データ消去の単位となるセクタを複数有し、これら複数のセクタ各々を分割したものであってデータ記録領域とこのデータ記録領域にデータを未記録、記録中または記録済かを示すデータを記録するブロック状態管理領域とを有する複数のブロックと、前記複数のセクタ全体におけるデータの記録状態を示すデータを記録するデータ記録状態管理領域とを有してなる不揮発性メモリと、前記不揮発性メモリのデータ記録状態管理領域の記録データ、または、ブロック状態管理領域およびデータ記録状態管理領域の記録データを基に前記セクタ全体に亘る複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データを読出し、記録データをセクタごとに一括消去、およびこれらデータの記録、読出し、消去を基に前記ブロック状態管理領域およびデータ記録状態管理領域各々の記録データを更新するように前記不揮発性メモリを制御する制御部とを備えた情報記録読出装置。
【請求項２】
データ記録状態管理領域は複数のセクタ各々と独立に設け、データを記録するブロックの番号のデータ、最新データが記録されているブロックの番号のデータ、およびデータ消去の対象となるセクタの番号のデータを記録し、制御部はこのデータ記録状態管理領域よりデータを記録するブロックの番号のデータ、最新データが記録されているブロックの番号のデータ、またはデータ消去の対象となるセクタの番号のデータを取得し、この取得データを基にデータを記録、読出しおよび消去することを特徴とする請求項１記載の情報記録読出装置。
【請求項３】
データ記録状態管理領域は複数のセクタ各々の領域内に設け、一つ手前のセクタのデータ消去状態を示すデータを記録し、制御部はこのデータ記録状態管理領域およびブロック状態管理領域とよりデータを記録するブロックの番号のデータおよび最新データが記録されているブロックの番号のデータを算出し、またはデータ記録状態管理領域よりデータ消去の対象となるセクタの番号のデータを検索し、前記算出または検索したデータを基にデータを記録、読出しおよび消去することを特徴とする請求項１記載の情報記録読出装置。
【請求項４】
制御部は、データの読出しから記録までの間に記録データを消去するように不揮発性メモリを制御することを特徴とする請求項１から請求項３のうちのいずれか１項記載の情報記録読出装置。
【請求項５】
制御部は、消去対象となるセクタを除くセクタの少なくとも１つのブロックにデータが記録された後に前記消去対象セクタのブロック各々に記録されたデータを一括消去するように不揮発性メモリを制御することを特徴とする請求項１から請求項３のうちのいずれか１項記載の情報記録読出装置。
【請求項６】
制御部は、消去対象セクタの記録データを一括消去中にデータ記録を行なうときにはこの一括消去を中断してデータ記録処理を優先実行するように不揮発性メモリを制御することを特徴とする請求項５記載の情報記録読出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はフラッシュメモリ等に代表される不揮発性メモリに対するデータの記録、読出しおよび消去を行う情報記録読出装置に関するものである。
【背景技術】
【０００２】
フラッシュメモリ等に代表される不揮発性メモリは電源切断後も記録内谷を保持できるという特徴を有し、この特徴を利用して電源切断直前の設定状態を記録するとともに電源切断後もこの記録内容を保持し、電源再投入時には電源切断時の設定状態を入手し設定するという使用方法が考えられ、近年では、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）プレーヤ等の様々な電子情報機器においてこのような使用方法が採用されている。このフラッシュメモリは、データ記録領域の一部を形成しデータ消去の単位となるセクタを複数有している。また、このフラッシュメモリの場合、１が設定されているビットを０にする場合はビット単位で行なうのに対し、０が設定されているビットを１に設定するにはセクタ単位で行なう（セクタ消去という）必要がある。
従来、あるセクタに記録されているデータを更新する場合には、そのセクタに記録されているデータを消去した後、この同一のセクタに更新されたデータを記録するという方法がとられてきた。しかし、この方法ではセクタのデータ消去中またはデータ書き込み中に電源が切断された場合、データが完全に失われてしまうという問題点があった。
この問題に対処した従来の情報記録読出装置として、例えば以下のものがある。
【０００３】
上記従来例はデータ書込みが特定のメモリブロックに偏ることなく、且つ、データ書込み中に処理が中断した際のデータ消失の防止を目的としたブロック消去形フラッシュメモリを使用した情報記録読出装置に関し、このブロック消去形フラッシュメモリにおいて、複数のメモリブロック各々はデータ書込み領域（エリア）と管理ステータス書込み領域とを有し、この管理ステータス書込み領域には書込データ特定データＩＤとデータ書込メモリブロックの消去回数を示す消去カウンタと同一データＩＤで書込データの時系列的順番を示す書込みステータスとが書込まれ、プロセッサで新たなデータを書込む際には、書込みステータスが書込み可能を示し、且つ、消去カウンタが最小を示すメモリブロックを消去した後に、新たなデータおよび管理ステータスを書込み、他のメモリブロック内の同一データＩＤを含む管理ステータスを更新するようにする（例えば、特許文献１参照）。
【０００４】
【特許文献１】特開２００１−３１２８９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の情報記録読出装置は以上のように構成されており、書込みステータスの更新を一連のデータ記録（書込み）処理の最後に行なうため、データ記録処理の途中で電源が切断された場合、データは残っているがそのデータが電源切断時のものか、または１回前に記録したデータであるか判別できないという問題があった。
また、セクタのデータ消去はデータ記録と比較して非常に時間がかかり、データ書換時に消去を行なう前記従来例を含む従来の方法では、電力供給停止による電圧降下を検知してデータ記録を行なう構成のためにセクタのデータ消去とデータ記録とを行なう期間電力を維持することが困難となり、これにより、データ書換えが正常に行われないという問題があった。
一方、フラッシュメモリ等に代表される不揮発性メモリはセクタ当たりのデータ消去回数に上限値が存在し、使用に限度（寿命）がある。従って、このように使用限度のある不揮発性メモリを使用した情報記録読出装置としては長期寿命を可能にする手段を備えていることが必要となる。
【０００６】
この発明は上記のような課題を解決するためになされたもので、データ記録の精度を向上するとともに、長期寿命を可能にする手段を備えた情報記録読出装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る情報記録読出装置は、複数のセクタ各々を分割したものであってデータ記録領域とこのデータ記録領域にデータを未記録、記録中または記録済かを示すブロック状態管理領域とを有する複数のブロックと、前記複数のセクタ全体のデータ記録状態を示すデータ記録状態管理領域とを有する不揮発性メモリと、前記データ記録状態管理領域の記録データ、または、ブロック状態管理領域およびデータ記録状態管理領域の記録データを基に前記セクタ全体に亘る複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データを読出し、記録データをセクタごとに一括消去、さらに、前記ブロック状態管理領域およびデータ記録状態管理領域それぞれの記録データを更新するように前記不揮発性メモリを制御する制御部とを備えたものである。
【発明の効果】
【０００８】
この発明によれば、複数のセクタにより形成される不揮発性メモリには、これら複数のセクタ各々を分割したものであってデータ記録領域とこのデータ記録領域にデータを未記録、記録中または記録済かを示すブロック状態管理領域とを有する複数のブロックと、前記複数のセクタ全体のデータ記録状態を示すデータ記録状態管理領域とを設け、制御部は前記データ記録状態管理領域の記録データ、または、前記ブロック状態管理領域およびデータ記録状態管理領域の記録データを基に前記セクタ全体に亘る複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データを読出し、記録データをセクタごとに一括消去、さらに、前記ブロック状態管理領域およびデータ記録状態管理領域それぞれの記録データを更新するように前記不揮発性メモリを制御するように構成したので、前記ブロック状態管理領域が示す「記録済」、またはこの「記録済」に至ることなくデータ記録が中断し、結果として不完全なデータであると判断される「記録中」により、制御部はそのブロックに記録されているデータが信頼できるかどうかを容易に判断することができ、データ記録の精度を向上することができる
【０００９】
また、制御部は「記録中」を示すブロックの記録データをそれ以前のブロックの「記録済」の記録データを利用して修復し、最新に近い状態のデータを復帰することにより、データ記録の精度を向上することができる。
また、各セクタを複数のブロックに分割し、セクタ全体に亘るこれら複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データの消去はセクタごとに一括消去する構成により、例えば各セクタをブロック数Ｎに分割した場合、セクタ当たりのデータ書換回数を従来に比してＮ倍に増やす一方、消去回数は従来に比して（１／Ｎ）となり、セクタ当たりのデータ消去回数に限度（寿命）のあるフラッシュメモリの寿命を延ばすことができる。また、複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するので、この記録データの消去が従来のように特定のセクタに集中することなく均等化され、これにより、フラッシュメモリの寿命の長期化に寄与し、信頼性を向上することができる。
【発明を実施するための最良の形態】
【００１０】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１による情報記録読出装置の構成図である。
図１において、この情報記録読出装置は不揮発性メモリとしてフラッシュメモリ１を使用し、このフラッシュメモリ１を制御部２がインタフェース３を介し制御する構成としている。
【００１１】
上記構成において、フラッシュメモリ１はデータ記録領域の一部を形成しデータ消去の単位となるセクタ１ａを複数有しており、図１はこのセクタ１ａをセクタ１ａ（１）からセクタ１ａ（４）の４つのセクタから成るとした例である。また、これらセクタ１ａ（１）からセクタ１ａ（４）の各セクタ１ａは更に小さなデータ単位（容量）にした複数のブロック１ｂに分割される。図１は各セクタ１ａを４つのブロックに分割し、セクタ１ａ（１）からセクタ１ａ（４）に亘りブロック１ｂ（１）からブロック１ｂ（１６）の１６ブロックから成るとした例である。これらブロック１ｂ（１）からブロック１ｂ（１６）の各ブロックはデータ記録領域１ｃとブロック状態管理領域１ｄとを有し、データ記録領域１ｃには情報データが記録（格納）される。この場合、各ブロック１ｂのデータ記録領域１ｃへのデータ記録はブロック１ｂ（１）からブロック１ｂ（１６）に対し循環状の順序にて記録される。
また、ブロック状態管理領域１ｄはそのブロック状態管理領域１ｄが属するブロック１ｂへのデータ記録の状態を示すデータを記録する領域であり、そのブロック１ｂのデータ記録領域１ｃにデータが未記録、記録中または記録済かを示すデータが記録される。
【００１２】
図２は上記ブロック状態管理領域１ｄに記録されるデータとそのデータが示す状態の説明図である。
図２において、１１はブロック状態管理領域１ｄの記録データ（内容）、１２はその記録データが示すブロック１ｂの状態である。
記録データが「１１１」の場合は「未記録」の状態であり、そのブロック１ｂのデータ記録領域１ｃにデータが記録されていないことを示す。
記録データが「０１１」の場合は「記録中」の状態であり、データ記録領域１ｃにデータが記録中であることを示す。また、この「記録中」の状態はそのデータ記録領域１ｃに記録されているデータが不完全なデータであることを示す。
記録データが「００１」の場合は「記録済」の状態であり、データ記録領域１ｃにデータ記録が完了したことを示し、また、記録データが正常であることを示す。
【００１３】
このとき、１を０にする場合はビット単位で行なえるので、「未記録」を「記録中」または「記録済」に変更でき、「記録中」は「記録済」に変更することが可能である。
一方、「記録中」または「記録済」を「未記録」にするためにはセクタ消去を行なう。
また、４つのセクタ１ａと独立して記録消去位置管理領域１ｅが設けられ、データを記録するブロック１ｂの番号（Ｂ＿ＷＲ）のデータ、最新データが記録されており、データ読出しの対象となるブロック１ｂの番号（Ｂ＿ＲＤ）のデータおよび使用済みとなりデータ消去の対象となったセクタ１ａの番号（Ｓ＿ＥＲ）のデータが記録される。なお,これら番号のデータを記録する際、メモリ上の特定のセルに対応するビットの記録消去回数が増加しないように考慮しておく。また、Ｂ＿ＲＤ、Ｓ＿ＥＲの初期値としていずれも０に対応する値を記録しておく。
上記記録消去位置管理領域１ｅは、セクタ１からセクタ４の４つのセクタ１ａ全体におけるデータの記録状態を示すデータを記録するデータ記録状態管理領域を形成する。
【００１４】
制御部２はフラッシュメモリ１の前記記録消去位置管理領域１ｅの記録データを基に、フラッシュメモリ１に対してデータの記録と読出しを行なう位置の特定、特定した位置へのデータの記録と読出制御、データ消去対象セクタ１ａの特定、特定したセクタ１ａのデータ消去および消去中断制御等を行なう他に、ブロック状態管理領域１ｄおよび記録消去位置管理領域１ｅ各々の記録データの更新等を行なう。
また、データ記録はセクタ１ａ全体に亘るブロック１ｂ（１）からブロック１ｂ（１６）のデータ記録領域に対し循環状の順序にてデータ記録するようにフラッシュメモリ１を制御する。
また、上記制御に関する各種判断および演算等の処理を行う。
以上説明の制御部２はＣＰＵ（中央処理装置）およびメモリ等、または、マイクロコンピュータ等で構成される。
インタフェース３はフラッシュメモリ１と制御部２とを制御可能に接続する。
【００１５】
次に、データ記録の処理について図３をもとに説明する。
図３は制御部２によるフラッシュメモリ１に対するデータ記録の制御処理を示すフローチャートである。
以下、図１に示すフラッシュメモリ１のブロック１ｂ（１）からブロック１ｂ（１６）中のＢ＿ＷＲ番目のブロック１ｂのデータ記録領域１ｃにデータを記録するときの処理について説明する。
図３において、ステップＳＴ１では、制御部２はデータ記録を行なうブロック１ｂの番号Ｂ＿ＷＲをフラッシュメモリ１の記録消去位置管理領域１ｅより取得する。
ステップＳＴ２では、制御部２はフラッシュメモリ１のＢ＿ＷＲ番目のブロック１ｂに設けられているブロック状態管理領域１ｄの記録データを「記録中」に設定する。
ステップＳＴ３では、制御部２はデータをＢ＿ＷＲ番目のブロック１ｂのデータ記録領域１ｃに記録する。
なお、記録データは制御部２が設定入力手段等（図示せず）からの設定入力に従い被設定回路（図示せず）に対し設定することから、この制御部２が保有していることとなる。
【００１６】
ステップＳＴ４では、制御部２はデータ記録が完了した場合、Ｂ＿ＷＲ番目ブロック１ｂのブロック状態管理領域１ｄの記録データを「記録済」に設定する。
ステップＳＴ５では、制御部２はＢ＿ＷＲ番目のブロック１ｂに最新のデータが記録されたので、記録消去位置管理領域１ｅのデータ読出し対象となるブロック番号（Ｂ＿ＲＤ）のデータをＢ＿ＷＲ番目ブロックの番号データへ更新する（Ｂ＿ＲＤ＝Ｂ＿ＷＲ番目）。
ステップＳＴ６では、制御部２は次回のデータ記録位置を１つ進めるために記録消去位置管理領域１ｅのＢ＿ＷＲの番号データをＢ＿ＷＲ番目＋１に更新する（Ｂ＿ＷＲ＝Ｂ＿ＷＲ番目＋１）。
ステップＳＴ７では、制御部２はステップＳＴ６で更新した「Ｂ＿ＷＲ＝Ｂ＿ＷＲ番目＋１」がブロック１ｂの総数（本例では１６ブロック）を超えているかについて判断し、ブロック１ｂの総数を超えている場合（ステップＳＴ７−Ｙｅｓ）は、ステップＳＴ８へ進み、ブロック１ｂの総数を超えていない場合（ステップＳＴ７−Ｎｏ）は、データ記録処理を終了する。
【００１７】
ステップＳＴ８では、制御部２は循環状に１番目セクタ（セクタ１）のブロック１ｂを指定するようにするため、ステップＳＴ６で更新した「Ｂ＿ＷＲ＝Ｂ＿ＷＲ番目＋１」を修正して「Ｂ＿ＷＲ＝１」に更新し、データ記録処理を終了する。
上記各ステップを経てデータ記録処理を終了するのに対し、ステップＳＴ２において「記録中」に設定後、例えば電源切断等によりステップＳＴ４の「記録済」の処理に至らないでデータ記録処理を終了した場合、制御部２はＢ＿ＷＲ番目ブロック１ｂのブロック状態管理領域１ｄの記録データを「記録中」で保持する。これにより、Ｂ＿ＷＲ番目ブロック１ｂに記録されているデータは不完全なデータであることを示すこととなる。この「記録中」でデータ記録処理を終了した場合の制御部２の対処については後述のデータ読出しの処理において説明する。
【００１８】
以上の説明のように、記録するブロック１ｂの位置を循環状の順序でずらしながらデータ記録を行なうことにより１つのセクタ１ａには分割ブロック数Ｎ（複数）の回数についてデータを記録することができので、セクタ１ａ当たりのデータ書換回数をＮ倍に増やすことができる。また、ブロック１ｂのデータ記録状態をブロック状態管理領域１ｃに書き込むので、そのブロック１ｂに記録されているデータが信頼できるかどうかを容易に知ることができる。
以上がデータ記録の処理である。
【００１９】
次に、データ読出しの処理について図４をもとに説明する。
図４は制御部２によるフラッシュメモリ１に対するデータ読出しの制御処理を示すフローチャートである。
以下、図１に示すフラッシュメモリ１のブロック１ｂ（１）からブロック１ｂ（１６）中で最新のデータが記録されているＢ＿ＲＤ番目のブロック１ｂからデータを読み出す場合の処理について説明する。
図４において、ステップＳＴ１１では、制御部２はデータを読み出すブロック１ｂの番号Ｂ＿ＲＤをフラッシュメモリ１の記録消去位置管理領域１ｅより取得する。
ステップＳＴ１２では、制御部２はステップＳＴ１１で取得したブロック番号Ｂ＿ＲＤが０（Ｂ＿ＲＤ＝０）か否かを判断し、「Ｂ＿ＲＤ＝０」であれば（ステップＳＴ１２−Ｙｅｓ）、ステップＳＴ１３へ進み、「Ｂ＿ＲＤ＝０」でなければ（ステップＳＴ１２−Ｎｏ）、ステップＳＴ１４へ進む。
【００２０】
ステップＳＴ１３では、制御部２は初期値を読み出してデータ読出しの処理を終了する。
「Ｂ＿ＲＤ＝０」であれば、まだフラッシュメモリ１に読み出し可能なデータが記録されていないので初期値を読み出すものである。なお、この初期値はフラッシュメモリ１の記録消去位置管理領域１ｅに予め記録しておく。
ステップＳＴ１４では、制御部２はＢ＿ＲＤ番目のブロック１ｂからデータを読み出してデータ読出しの処理を終了する。
このステップＳＴ１４において、制御部２が読み出したＢ＿ＲＤ番目ブロック１ｂのブロック状態管理領域１ｄの記録データが「記録済」であれば上記Ｂ＿ＲＤ番目ブロック１ｂのデータは正常なデータである。これに対し、このブロック状態管理領域１ｄの記録データが不完全なデータであることを示す「記録中」である場合、制御部２は上記Ｂ＿ＲＤ番目ブロック１ｂの１つまたはそれ以上前のブロック１ｂにおける記録データを読み出し、このデータをもとに、上記Ｂ＿ＲＤ番目ブロック１ｂの不完全なデータを最新に近い状態のデータに復帰させるように修復制御するようにしてもよい。
以上がデータ読出しの処理である。
【００２１】
次に、データ消去の処理について図５をもとに説明する。
図５は制御部２によるフラッシュメモリ１に対するデータ消去の制御処理を示すフローチャートである。
図５において、ステップＳＴ２１では、制御部２はデータ消去の対象となるセクタ１ａの番号Ｓ＿ＥＲをフラッシュメモリ１の記録消去位置管理領域１ｅより取得する。
ステップＳＴ２２では、制御部２は最新データが記録されているセクタ１ａの番号Ｓ＿ＲＤを算出処理する。この算出処理については別途備えている処理フロー（サブルーチン）に従う（後述図６）。
ステップＳＴ２３では、制御部２は最新データの読出しが完了し、且つ、データ記録処理を要するデータ記録の要求が無いかについて判断し、この要求が有る場合（ステップＳＴ２３−Ｎｏ）は、まだセクタ１ａのデータ消去を開始できない状態なのでステップＳＴ２３に戻り、上記要求が無い場合（ステップＳＴ２３−Ｙｅｓ）は、ステップＳＴ２４へ進む。
【００２２】
ステップＳＴ２４では、制御部２はデータ消去するセクタ１ａの番号Ｓ＿ＥＲと最新データが記録されているセクタ１ａの番号Ｓ＿ＲＤとが一致（Ｓ＿ＥＲ＝Ｓ＿ＲＤ）するかについて判断し、両者が一致する場合（ステップＳＴ２４−Ｙｅｓ）は、Ｓ＿ＥＲ番目のセクタ１ａのデータを消去すると最新データが消失することを意味し、この最新データの消失を防止するためにこのデータ消去の処理を終了する。これに対し、両者が一致しない場合（ステップＳＴ２４−Ｎｏ）は、Ｓ＿ＥＲ番目セクタ１ａの全てのブロック１ｂがデータ記録済みであり、消去可能なセクタと判断してステップＳＴ２５へ進む。
ステップＳＴ２５では、制御部２はフラッシュメモリ１に対しＳ＿ＥＲ番目のセクタ１ａの記録データを一括消去する。
ステップＳＴ２６では、制御部２は次回のデータ消去の対象となるセクタ１ａの番号Ｓ＿ＥＲを１つ進めるために記録消去位置管理領域１ｅのＳ＿ＥＲの番号データをＳ＿ＥＲ番目＋１に更新する（Ｓ＿ＥＲ＝Ｓ＿ＥＲ番目＋１）。
【００２３】
ステップＳＴ２７では、制御部２はステップＳＴ２６で更新した「Ｓ＿ＥＲ＝Ｓ＿ＥＲ番目＋１」がセクタ１ａの総数（本例では４セクタ）を超えているかについて判断し、セクタ１ａの総数を超えている場合（ステップＳＴ２７−Ｙｅｓ）は、ステップＳＴ２８へ進み、セクタ１ａの総数を超えていない場合（ステップＳＴ２７−Ｎｏ）は、ステップＳＴ２２へ戻り、前記処理を繰り返す。
ステップＳＴ２８では、制御部２は循環状に１番目セクタ（セクタ１ａ（１））を指定するようにするため、ステップＳＴ２６で更新した「Ｓ＿ＥＲ＝Ｓ＿ＥＲ番目＋１」を修正して「Ｓ＿ＥＲ＝１」に更新し、ステップＳＴ２２へ戻る。
【００２４】
以上の説明のように、データの読出しおよび記録が行なわれていない空き時間を使ってあらかじめセクタ１ａのデータ消去を行なうので、従来のようにデータ記録の際にデータ消去する必要がなく、これによりデータ記録処理を短時間で実施することができることとなる。従って、電源切断時にはデータ消去の処理は不用であり、更新データの記録だけを実施すればよいので、短い時間でデータ更新処理を実施することが可能となる。
また、１つのセクタ１ａの分割ブロック数をＮとしたとき、１つのセクタ１ａの全ブロック１ｂが記録済みになった後にセクタ１ａの記録データを一括消去することにより、消去回数は従来に比し、（１／Ｎ）となり、セクタ１ａ当たりのデータ消去回数に限度（寿命）のあるフラッシュメモリ１の寿命を延ばすことができる。さらに、この一括消去は消去対象となるセクタを除くセクタ１ａの少なくとも１つのブロック１ｂにデータが記録された後に実施されるので、必ず最新データを残すことができることとなる。
【００２５】
次に、前記ステップＳＴ２２の算出処理について図６をもとに説明する。
図６は最新データが記録されているセクタ１ａの番号Ｓ＿ＲＤの算出処理を示すフローチャート（サブルーチン）である。ただし、このフローチャートの前提条件として、１つのセクタ１ａにあるブロックの数は固定（本例では４つ）であり、且つ、全てのセクタ１ａについて同数であるものとする。
図６において、ステップＳＴ３１では、制御部２は上記前提条件に従い、最新データが記録されているブロック１ｂの番号Ｂ＿ＲＤを１セクタ内のブロック数（例えば４）で除算すれば最新データが記録されているセクタ１ａの番号Ｓ＿ＲＤを求めることができる。この除算においては、少数点以下は切り上げることとする。例えば図１において、最新データが記録されているブロック１ｂの番号Ｂ＿ＲＤが「ブロック１ｂ（５）」であれば、このブロック１ｂ（５）の「５」をブロック数４の「４」で除算し、少数点以下を切り上げることにより「２」となり、「セクタ１ａ（２）」が得られる。
上記ステップＳＴ３１の算出処理は、セクタ１ａ中の一つのブロック１ｂに最新データが記録された後であれば消去対象のセクタ１ａの番号Ｓ＿ＥＲを特定できることを意味し、これにより、消去対象となるセクタ１ａの番号Ｓ＿ＥＲを早期に特定でき、前述のように、データの読出しおよび記録が行なわれていない空き時間を使って前もってセクタ１ａのデータ消去を行なうという処理を一層容易にすることとなる。
【００２６】
次に、データ消去の処理を中段する機能を備えたデータ記録の処理について図７をもとに説明する。
図７は制御部２によるフラッシュメモリ１に対するデータ消去の処理を中段する機能を備えたデータ記録の制御処理を示すフローチャートである。
図７において、ステップＳＴ４１では、制御部２はデータ記録の要求がされた場合、前記図５で説明したセクタ１ａのデータ消去の処理中であるかについて判断し、データ消去の処理中である場合（ステップＳＴ４１−Ｙｅｓ）は、ステップＳＴ４２へ進み、データ消去の処理中でない場合（ステップＳＴ４１−Ｎｏ）は、ステップＳＴ４３へ進む。
ステップＳＴ４２では、制御部２はフラッシュメモリ１に対してセクタ１ａのデータ消去の処理を中断する処理を行ない、ステップＳＴ４３へ進む。
ステップＳＴ４３では、制御部２は前記図３で説明したデータ記録の処理を行い、処理を終了する。
以上の説明のように、セクタ１ａのデータ消去の処理中にデータ記録の要求がされた場合、セクタ１ａのデータ消去完了後に更新データの記録処理を開始するのではなく、データ消去の処理を中断して即座に更新データの記録処理を実行するので、更新データの記録を高速かつ確実に行なうことが可能となる。
【００２７】
以上のように、この実施の形態１によれば、フラッシュメモリ１を形成する複数のセクタ１ａ各々を複数のブロック１ｂに分割し、これら複数のブロック１ｂそれぞれにはデータ記録領域１ｃとこのデータ記録領域１ｃにデータを未記録、記録中または記録済かを示すデータを記録したブロック状態管理領域１ｄを設け、さらに、データを記録するブロックの番号Ｂ＿ＷＲのデータ、最新データが記録されており、データ読出しの対象となるブロックの番号Ｂ＿ＲＤのデータ、およびデータ消去の対象となるセクタ１ａの番号Ｓ＿ＥＲのデータを記録した記録消去位置管理領域１ｅを前記複数のセクタ１ａ各々と独立に設け、制御部２は記録消去位置管理領域１ｅの記録データを基に前記セクタ１ａ全体に亘る複数のブロック１ｂのデータ記録領域１ｃに対し循環状の順序にてデータを記録するとともに、記録データを読出し、記録データをセクタごとに一括消去、ブロック状態管理領域１ｄおよびデータ記録状態管理領域１ｅの記録データを更新するようにフラッシュメモリ１を制御するように構成したので、前記ブロック状態管理領域１ｄが示す「記録済」、またはこの「記録済」に至ることなくデータ記録が中断し、結果として不完全なデータであると判断される「記録中」により、制御部２はそのブロック１ｂに記録されているデータが信頼できるかどうかを容易に判断でき、データ記録の精度を向上することができる。
【００２８】
また、制御部２は「記録中」を示すブロック１ｂの記録データをそれ以前のブロック１ｂの「記録済」の記録データを利用して修復し、最新に近い状態のデータを復帰することにより、データ記録の精度を向上することができる。
また、各セクタ１ａを複数のブロック１ｂに分割し、セクタ１ａ全体に亘るこれら複数のブロック１ｂのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データの消去はセクタ１ａごとに一括消去する構成により、例えば各セクタ１ａをブロック数Ｎに分割した場合、セクタ１ａ当たりのデータ書換回数を従来に比してＮ倍に増やす一方、消去回数は従来に比して（１／Ｎ）となり、セクタ１ａ当たりのデータ消去回数に限度（寿命）のあるフラッシュメモリ１の寿命を延ばすことができる。また、複数のブロック１ｂのデータ記録領域に対し循環状の順序にてデータを記録するので、この記録データの消去が従来のように特定のセクタに集中することなく均等化され、これにより、フラッシュメモリ１の寿命の長期化に寄与し、信頼性を向上することができる。
【００２９】
また、セクタ１ａのデータ一括消去はデータの読出しおよび記録が行なわれていない空き時間を使って前もって実施するので、従来のようにデータ記録の際にデータ消去する必要がなく、これによりデータ記録処理を短時間で実施することができることとなる。従って、電源切断時にはデータ消去の処理は不用となり、更新データの記録だけを実施すればよく、短い時間でデータ更新処理を実施することができる。
また、セクタ１ａのデータ一括消去は消去対象となるセクタ１ａを除くセクタ１ａの少なくとも１つのブロック１ｂにデータが記録された後に実施されるので、必ず最新データを残すことができる。
また、セクタ１ａのデータ消去の処理中にデータ記録の要求がされた場合、セクタ１ａのデータ消去完了後に更新データの記録処理を開始するのではなく、データ消去の処理を中断して即座に更新データの記録処理を実行するので、更新データの記録を高速かつ確実に行なうことができる。
また、最新データとブロック状態管理領域１ｄおよび記録消去位置管理領域１ｅとは１対１の関係となり同時に書き換えるため、フラッシュメモリ１の特定領域のみ書き換え回数があがるという問題を回避することができる。
【００３０】
実施の形態２．
図８はこの発明の実施の形態２による情報記録読出装置の構成図である。
図８において、図１と同一のものについては同一符合を付してあり、この実施の形態２による情報記録読出装置の構成が図１の構成に対し異なる点は、図１の記録消去位置管理領域１ｅに代えて前セクタ消去状態管理領域１ｆを各セクタ１ａの領域内に設けた点および制御部１代る制御部２１を設けた点である。なお、図１と同一符合ののものについての説明は省略する。
この前セクタ消去状態管理領域１ｆは、一つ前のセクタ１ａのデータ消去の状態を示すデータを記録する領域である。例えば、セクタ１ａ（２）の前セクタ消去状態管理領域１ｆには一つ前のセクタ１ａ（１）のデータ消去の状態を示すデータが記録される。図８はこのセクタ１ａ（１）のデータが消去されている例を示している。なお、一つ前のセクタ１ａのデータ消去の状態を示すようにしたのは、同じセクタ１ａのデータ消去の状態を示すようにしたときには、例えばそのセクタ１ａのデータ消去中に電源が切れた場合にセクタ１ａのデータ消去の状態が不完全となり、これを回避することによる。
【００３１】
図９は上記前セクタ消去状態管理領域１ｆに記録されるデータとそのデータが示す状態の説明図である。
図９において、３１は前セクタ消去状態管理領域１ｆの記録データ（内容）、３２はその記録データが示す一つ前のセクタ１ａの状態である。
記録データが「１１１」の場合は初期状態であるデータが「未消去」の状態を示す。
記録データが「０１１」の場合は１つ前のセクタ１ａのデータ消去を開始したことを示す「消去中」の状態を示す。
記録データが「００１」の場合は１つ前のセクタ１ａのデータ消去が完了したことを示す「消去済」の状態を示す。
上記前セクタ消去状態管理領域１ｆは、セクタ１ａ（１）からセクタ１ａ（４）の４つのセクタ１ａ全体におけるデータの記録状態を示すデータを記録するデータ記録状態管理領域を形成する。
【００３２】
制御部２１は図１の制御部２に対し、フラッシュメモリ１に対する制御処理の方法が一部において異なる点を除き基本機能として制御部２と同様である。また、この制御部２１がＣＰＵおよびメモリ等、または、マイクロコンピュータ等で構成される点についても制御部２と同様である。
【００３３】
次に、セクタ１ａのデータ消去の処理について図１０をもとに説明する。
図１０は制御部２１によるフラッシュメモリ１に対するデータ消去の制御処理を示すフローチャートである。
図１０において、ステップＳＴ５１では、制御部２１はデータ消去の対象となるセクタ１ａの番号Ｓ＿ＥＲをフラッシュメモリ１の前セクタ消去状態管理領域１ｆを検索処理することにより取得する。この検索処理については後述する（図１１）。
ステップＳＴ５２、ステップＳＴ５３およびステップＳＴ５４は図５のステップＳＴ２２〜ステップＳＴ２４と同様の処理であり、説明は省略する。ただし、ステップＳＴ５２において、最新データが記録されているセクタ１ａの番号Ｓ＿ＲＤの算出処理（図６）に必要なＢ＿ＲＤ（最新データが記録されているブロック１ｂの番号）は前セクタ消去状態管理領域１ｆをもとに算出処理して取得する。
【００３４】
ステップＳＴ５５では、制御部２１はフラグ設定対象のセクタ１ａの番号を示す変数Ｎを「Ｓ＿ＥＲ＋１」とおく（Ｎ＝Ｓ＿ＥＲ＋１）。
ステップＳＴ５６では、制御部２１はステップＳＴ５５の処理における変数Ｎがセクタ１ａの総数（本例では４セクタ）を越えているかについて判断し、セクタ１ａの総数を超えている場合（ステップＳＴ５６−Ｙｅｓ）は、ステップＳＴ５７へ進み、セクタ１ａの総数を超えていない場合（ステップＳＴ５６−Ｎｏ）は、ステップＳＴ５８へ進む。
ステップＳＴ５７では、制御部２１は前記Ｎを１とおく（Ｎ＝１）。
ステップＳＴ５８では、制御部２１はＮ番目のセクタ１ａの前セクタ消去状態管理領域１ｆのデータを「消去中」に設定する。
ステップＳＴ５９では、制御部２１はフラッシュメモリ１に対しＳ＿ＥＲ番目のセクタ１ａの記録データを消去する。
【００３５】
ステップＳＴ６０では、制御部２１はステップＳＴ５９のセクタ１ａの記録データ消去が完了したときには、Ｎ番目のセクタ１ａの前セクタ消去状態管理領域１ｆのデータを「消去済」に設定する。
ステップＳＴ６１では、制御部２１はデータ消去したセクタ１ａがステップＳＴ５５でフラグ設定したセクタ１ａであるので、Ｓ＿ＥＲをＮ（Ｓ＿ＥＲ＝Ｎ）とおきステップＳＴ５２へ戻る。
以上がセクタ１ａのデータ消去の処理である。
【００３６】
次に、データ消去の対象となるセクタ１ａの番号Ｓ＿ＥＲを検索する処理について図１１をもとに説明する。
図１１は前セクタ消去状態管理領域１ｆの状態を確認してＳ＿ＥＲを検索する処理を示すフローチャートである。
図１１において、ステップＳＴ７１では、制御部２１は前セクタ消去状態管理領域１ｆを確認するセクタ１ａの番号を格納する（表す）変数Ｎを１とおく（Ｎ＝１）。
ステップＳＴ７２では、制御部２１はＮ＋１番目のセクタ１ａの前セクタ消去状態管理領域１ｆのデータが「消去中」であるかどうかを判断し、「消去中」でない場合（ステップＳＴ７２−Ｎｏ）は、ステップＳＴ７３へ進み、「消去中」である場合（ステップＳＴ７２−Ｙｅｓ）は、ステップＳＴ７９へ進む。
【００３７】
ステップＳＴ７３では、制御部２１はＮ番目セクタ１ａの前セクタ消去状態管理領域１ｆが「消去済」かどうかを判断し、「消去済」でない場合（ステップＳＴ７３−Ｎｏ）は、ステップＳＴ７４へ進み、「消去済」である場合（ステップＳＴ７３−Ｙｅｓ）は、ステップＳＴ７９へ進む。
ステップＳＴ７４では、制御部２１はこのセクタ１ａについては消去対象ではないのでＮをＮ＋１とおく（Ｎ＝Ｎ＋１）。
ステップＳＴ７５では、制御部２１はＮがセクタ１ａの総数と一致するかについて判断し、一致しない場合（ステップＳＴ７５−Ｎｏ）は、ステップＳＴ７２へ戻って検索を継続する。これに対し一致する場合（ステップＳＴ７５−Ｙｅｓ）、このセクタ１ａは最後に処理されるセクタ１ａであることを示し、この場合はステップＳＴ７６へ進む。
【００３８】
ステップＳＴ７６では、制御部２１は１番目のセクタ１ａの前セクタ消去状態管理領域１ｆが「消去中」であるかどうかを判断し、「消去中」でない場合（ステップＳＴ７６−Ｎｏ）は、ステップＳＴ７７へ進み、「消去中」である場合（ステップＳＴ７６−Ｙｅｓ）は、ステップＳＴ７９へ進む。
ステップＳＴ７７では、制御部２１はＮ番目のセクタ１ａの前セクタ消去状態管理領域１ｆが「消去済」であるかどうかを判断し、「消去済」でない場合（ステップＳＴ７７−Ｎｏ）は、ステップＳＴ７８へ進み、「消去済」である場合（ステップＳＴ７７−Ｙｅｓ）は、ステップＳＴ７９へ進む。
ステップＳＴ７８では、制御部２１はデータ消去の対象となるセクタ１ａの番号Ｓ＿ＥＲを１とおき（Ｓ＿ＥＲ＝１）、この検索処理を終了する。このように処理するのは、ステップＳＴ７７において、Ｎ番目のセクタ１ａの前セクタ消去状態管理領域１ｆが「消去済」でない場合は全てのセクタ１ａにおいてまだ一度も消去が行なわれていないことを示し、従って、データ消去の対象となるセクタ１ａは１番目のセクタであるのでＳ＿ＥＲを１とおくことによる。
【００３９】
ステップＳＴ７９では、制御部２１はデータ消去の対象となるセクタ１ａの番号Ｓ＿ＥＲをＮとおき（Ｓ＿ＥＲ＝Ｎ）、この検索処理を終了する。
このステップＳＴ７９の上記処理は、ステップＳＴ７２−Ｙｅｓ、ステップＳＴ７３−Ｙｅｓ、ステップＳＴ７６−ＹｅｓおよびステップＳＴ７７−Ｙｅｓの場合に行われる。
ステップＳＴ７２の判断が「Ｙｅｓ」の場合、過去にＮ番目のセクタ１ａにて消去処理が行なわれたが中断されたと判断し、Ｎ番目のセクタ１ａが消去対象のセクタ１ａとあるとしてＳ＿ＥＲをＮとおく。
ステップＳＴ７３の判断が「Ｙｅｓ」の場合、直前のセクタ１ａが前回消去され、Ｎ番目のセクタ１ａが消去対象のセクタ１ａとなるのでＳ＿ＥＲをＮとおく。
また、ステップＳＴ７６およびステップＳＴ７７それぞれの判断が「Ｙｅｓ」の場合、Ｎ番目のセクタ１ａが消去対象のセクタ１ａとなるのでＳ＿ＥＲをＮとおく。
以上がデータ消去の対象となるセクタ１ａの番号Ｓ＿ＥＲの検索処理であり、この検索処理を終了したときには図１０のフローへ戻る。
【００４０】
次に、データ記録の対象となるブロック番号（Ｂ＿ＷＲ）およびデータ読出しの対象となるブロック番号（Ｂ＿ＲＤ）を算出する処理について図１２をもとに説明する。
図１２はデータ記録対象ブロック番号（Ｂ＿ＷＲ）およびデータ読出対象ブロック番号（Ｂ＿ＲＤ）の算出処理を示すフローチャートである。
図１２において、ステップＳＴ８１では、制御部２１は上記Ｂ＿ＷＲおよびＢ＿ＲＤの算出処理に必要な、先に最も古い時期に記録されたブロック１ｂの番号であるＢ＿ＯＬＤを算出する。このＢ＿ＯＬＤは別途の処理フロー（サブルーチン）により算出する。この算出については後述する（図１３）。
ステップＳＴ８２では、制御部２１はブロック状態管理領域１ｄを確認するブロック１ｂの番号を格納する変数ＮをＢ＿ＯＬＤとおき（Ｎ＝Ｂ＿ＯＬＤ）、また、Ｂ＿ＲＤを０とおく（Ｂ＿ＲＤ＝０）。
【００４１】
ステップＳＴ８３では、制御部２１はＮ番目ブロック１ｂのブロック状態管理領域１ｄの記録データが「記録済」、「記録中」または「未記録」のいずれの状態であるかを判断し、「記録済」であれば、Ｎ番目のブロック１ｂは読出し可能なデータが記録されているのでステップＳＴ８４進み、「記録中」であれば、記録データは正常なデータではないのでステップＳＴ８５進み、また、「未記録」であれば、Ｎ番目のブロック１ｂにデータを記録することが可能なのでステップＳＴ８９進む。
ステップＳＴ８４では、制御部２１はＢ＿ＲＤをＮ（Ｂ＿ＲＤ＝Ｎ）とおき、ステップＳＴ８５へ進む。ただし、後記のステップＳＴ８８からステップＳＴ８３へ戻る処理が発生している場合、このＢ＿ＲＤには最後に確認した「記録済」のブロック１ｂの番号が設定される。
【００４２】
ステップＳＴ８５では、制御部２１は次のブロック１ｂのブロック状態管理領域１ｄを確認するため、ＮをＮ＋１とおく（Ｎ＝Ｎ＋１）。
ステップＳＴ８６では、制御部２１はステップＳＴ８５で設定したＮが全ブロックの総数（本例では１６ブロック）を超えているかについて判断し、超えている場合（ステップＳＴ８６−Ｙｅｓ）は、ステップＳＴ８７へ進み、超えていない場合（ステップＳＴ８６−Ｎｏ）は、ステップＳＴ８８へ進む。
ステップＳＴ８７では、制御部２１はＮを１とおく（Ｎ＝１）。
ステップＳＴ８８では、制御部２１は、ＮとＢ＿ＯＬＤとが一致（Ｎ＝Ｂ＿ＯＬＤ）するか否かについて判断する一方、全てのブロック１ｂに対しステップＳＴ８３以降ステップＳＴ８７までの処理について検索を完了したかについて判断し、ＮとＢ＿ＯＬＤとが不一致（Ｎ≠Ｂ＿ＯＬＤ）であり、且つ、全てのブロック１ｂに対する検索が完了していないのであればステップＳＴ８３へ戻って処理を継続し、ＮとＢ＿ＯＬＤとが不一致（Ｎ≠Ｂ＿ＯＬＤ）であり、且つ、全てのブロック１ｂに対する検索が完了したのであればステップＳＴ８９へ進み、また、ＮとＢ＿ＯＬＤとが一致（Ｎ＝Ｂ＿ＯＬＤ）する場合には全てのブロック１ｂに対する検索が未完または完了に関係無くステップＳＴ９０へ進む。
【００４３】
ステップＳＴ８９では、制御部２１はＢ＿ＷＲをＮとおき（Ｂ＿ＷＲ＝Ｎ）、この算出処理を終了する。このように処理するのは、ステップＳＴ８３またはステップＳＴ８８よりこのステップＳＴ８９へ到達した時点で、Ｎには記録対象となるブロック１ｂの番号が格納されていることによる。
ステップＳＴ９０では、制御部２１はエラー出力してこの算出処理を終了する。このように処理するのは、ＮとＢ＿ＯＬＤとが一致（Ｎ＝Ｂ＿ＯＬＤ）していれば全てのブロック１ｂにデータが記録されていることを示し、この場合には記録対象ブロックが存在しないのでエラー出力し、この算出処理を終了する。
【００４４】
以上がデータ記録対象ブロック番号（Ｂ＿ＷＲ）およびデータ読出対象ブロック番号（Ｂ＿ＲＤ）の算出処理である。この算出処理により得たＢ＿ＷＲをもとにデータ記録処理が行われ、Ｂ＿ＲＤをもとにデータ読出処理が行われる。このデータ読出処理については既述の図４のフローチャートに従う。また、データ記録処理については後述する（図１４）。
【００４５】
次に、前記図１２のフローチャート中におけるステップＳＴ８１の処理（Ｂ＿ＯＬＤの算出処理）について図１３をもとに説明する。
図１３は前セグタ消去状態管理領域１ｆの状態をもとに、最も古い時期に記録されたブロック１ｂの番号であるＢ＿ＯＬＤの算出処理を示すフローチャート（サブルーチン）である。
このＢ＿ＯＬＤを求めるためには最も古いデータが記録されているセクタ１ａの番号Ｓ＿ＯＬＤを先に求め、次いで、Ｂ＿ＯＬＤを算出する。
図１３において、ステップＳＴ１０１では、制御部２１は前セクタ消去状態管理領域１ｆを確認するセクタ１ａの番号を格納する変数Ｎを１とおく（Ｎ＝１）。
ステップＳＴ１０２では、制御部２１はＮ＋１番目のセクタ１ａの前セクタ消去状態管理領域１ｆが「消去中」であるかどうかを判断し、「消去中」である場合（ステップＳＴ１０２−Ｙｅｓ）は、ステップＳＴ１０３へ進み、「消去中」でない場合（ステップＳＴ１０２−Ｎｏ）は、ステップＳＴ１０４へ進む。
【００４６】
ステップＳＴ１０３では、制御部２１はＳ＿ＯＬＤをＮ＋１とおき（Ｓ＿ＯＬＤ＝Ｎ＋１）、ステップＳＴ１１１へ進む。このように処理するのは、このセクタ１ａ内のデータは消去中に中断されたと判断したことによる。
ステップＳＴ１０４では、制御部２１はＮ番目セクタ１ａの前セクタ消去状態管理領域１ｆが「消去済」かどうかを判断し、「消去済」でない場合（ステップＳＴ１０４−Ｎｏ）は、ステップＳＴ１０５へ進み、「消去済」である場合（ステップＳＴ１０４−Ｙｅｓ）は、ステップＳＴ１１０へ進む。
ステップＳＴ１０５では、制御部２１は次のセクタ１ａについて確認するためＮをＮ＋１とおく（Ｎ＝Ｎ＋１）。
ステップＳＴ１０６では、制御部２１はＮがセクタ１ａの総数と一致するかについて判断し、一致しない場合（ステップＳＴ１０６−Ｎｏ）は、ステップＳＴ１０２へ戻って確認を継続し、一致する場合（ステップＳＴ１０６−Ｙｅｓ）は、Ｎ番目のセクタ１ａが最後に処理されるセクタ１ａであるとしてステップＳＴ１０７へ進む。
【００４７】
ステップＳＴ１０７では、制御部２１は１番目のセクタ１ａの前セクタ消去状態管理領域１ｆが「消去中」であるかどうかを判断し、「消去中」でない場合（ステップＳＴ１０７−Ｎｏ）は、ステップＳＴ１０８へ進み、「消去中」である場合（ステップＳＴ１０７−Ｙｅｓ）は、ステップＳＴ１０９へ進む。
ステップＳＴ１０８では、制御部２１はＮ番目のセクタ１ａの前セクタ消去状態管理領域１ｆが「消去済」であるかどうかを判断し、「消去済」でない場合（ステップＳＴ１０８−Ｎｏ）は、ステップＳＴ１０９へ進み、「消去済」である場合（ステップＳＴ１０８−Ｙｅｓ）は、ステップＳＴ１１０へ進む。
ステップＳＴ１０９では、制御部２１はＳ＿ＯＬＤを１とおき（Ｓ＿ＯＬＤ＝１）、ステップＳＴ１１１へ進む。このように処理するのは、ステップＳＴ１０７において「消去中」と判断されたこと（ステップＳＴ１０７−Ｙｅｓ）、およびステップＳＴ１０８において「消去済」でない場合（ステップＳＴ１０８−Ｎｏ）は、どのセクタも消去されていないことを示すので、最も古いセクタは１であることによる。
【００４８】
ステップＳＴ１１０では、制御部２１はＳ＿ＯＬＤをＮとおき、ステップＳＴ１１１へ進む。このように処理するのは、ステップＳＴ１０４およびステップＳＴ１０８の各判断が「消去済」である場合（ステップＳＴ１０４，１０８−Ｙｅｓ）は、このセクタ１ａのデータが最も古いことによる。
ステップＳＴ１１１では、制御部２１はこのステップＳＴ１１１まででＳ＿ＯＬＤが確定するので、このＳ＿ＯＬＤから下記式により最も古い時期に記録されたブロック１ｂの番号Ｂ＿ＯＬＤを算出し、この算出処理を終了する。
Ｂ＿ＯＬＤ＝（Ｓ＿ＯＬＤ−１）＊セクタ１ａ内ブロック数＋１
以上でＢ＿ＷＲとＢ＿ＲＤの算出に必要なＢ＿ＯＬＤが確定するので、図１２のフローへ戻る。
【００４９】
次に、データ消去の処理を中段する機能を備えたデータ記録の処理について図１４をもとに説明する。
図１４は制御部２１によるフラッシュメモリ１に対するデータ消去の処理を中段する機能を備えたデータ記録の制御処理を示すフローチャートである。
図１４において、ステップＳＴ１２１では、制御部２１はデータ記録の要求がされた場合、前記図１０で説明したセクタ１ａのデータ消去の処理中であるかについて判断し、データ消去の処理中である場合（ステップＳＴ１２１−Ｙｅｓ）は、ステップＳＴ１２２へ進み、データ消去の処理中でない場合（ステップＳＴ１２１−Ｎｏ）は、ステップＳＴ１２３へ進む。
【００５０】
ステップＳＴ１２２では、制御部２１はフラッシュメモリ１に対してセクタ１ａのデータ消去の処理を中断する処理を行ない、ステップＳＴ１２３へ進む。
ステップＳＴ１２３では、制御部２１はデータ記録を行なうＢ＿ＷＲ番目のブロック状態管理領域１ｄが「未記録」であることを確認し、「未記録」の場合（ステップＳＴ１２３−Ｙｅｓ）は、ステップＳＴ１２４へ進み、「未記録」でない場合（ステップＳＴ１２３−Ｎｏ）は、ステップＳＴ１２５へ進む。
ステップＳＴ１２４では、既にセクタ１ａの消去が行なわれ、Ｂ＿ＷＲ番目のブロック１ｂにデータ記録を行なえるようになっているので、制御部２１は前記図３で説明したデータ記録の処理を行ない、処理を終了する。
ステップＳＴ１２５では、ブロック状態管理領域１ｄの内容とブロック１ｂの状態とが一致していないため、制御部２１はエラーを出力し、このデータ記録の処理を終了する。
【００５１】
以上のように、この実施の形態２によれば、フラッシュメモリ１には実施の形態１（図１）の記録消去位置管理領域１ｅに代わる前セクタ消去状態管理領域１ｆを各セクタ１ａの領域内に設け、この前セクタ消去状態管理領域１ｆには一つ前のセクタ１ａのデータ消去の状態を示すデータを記録し、制御部２１はこの前セクタ消去状態管理領域１ｆを基にデータ消去の対象となるセクタ１ａの番号Ｓ＿ＥＲを検索し、または、ブロック状態管理領域１ｄおよび前セクタ消去状態管理領域１ｆとを基にデータを記録するブロック１ｂの番号Ｂ＿ＷＲ、最新データが記録されており、データ読出しの対象となるブロック１ｂの番号Ｂ＿ＲＤを算出し、これら検索または算出したＳ＿ＥＲ、Ｂ＿ＷＲおよびＢ＿ＲＤを基に前記セクタ１ａ全体に亘る複数のブロック１ｂのデータ記録領域１ｃに対し循環状の順序にてデータを記録するとともに、記録データを読出し、記録データをセクタごとに一括消去、ブロック状態管理領域１ｄおよび前セクタ消去状態管理領域１ｆの記録データを更新するようにフラッシュメモリ１を制御するように構成したので、上記Ｓ＿ＥＲ、Ｂ＿ＷＲおよびＢ＿ＲＤのデータを記録した実施の形態１の記録消去位置管理領域１ｅを設けることなく、例えば電源が切断された場合であってもＳ＿ＥＲ、Ｂ＿ＷＲおよびＢ＿ＲＤを確定することができる。
【００５２】
また、セクタ１ａのデータ消去が中断された場合であっても必ずＳ＿ＥＲが特定でき（図１１）、また記録が途中で中断された場合であっても不完全なデータを読み出すことなく、最新の正常なデータを読み出すことができる（図１２）。
また、最新データとブロック状態管理領域１ｄおよび前セクタ消去状態管理領域１ｆとは１対１の関係となり同時に書き換えるため、フラッシュメモリ１の特定領域のみ書き換え回数があがるという問題を回避することができる。
【００５３】
この他、実施の形態１と同様の以下の効果が得られる。
ブロック状態管理領域１ｄが示す「記録済」および「記録中」のデータから記録データが信頼できるかどうかを容易に判断でき、データ記録の精度を向上できる。
消去回数が従来に比して（１／ブロック数Ｎ）となるとともに消去が従来のように特定のセクタ１ａに集中することなく均等化され、フラッシュメモリ１の寿命を延ばすことができる。
セクタ１ａのデータ一括消去がデータの読出しおよび記録が行なわれていない空き時間を使って前もって実施され、データ記録処理を短時間で実施できる。
セクタ１ａのデータ一括消去は次のセクタ１ａの１つのブロック１ｂにデータが記録された後に実施され、必ず最新データを残すことができる。
セクタ１ａのデータ消去中にデータ記録の要求がされた場合、データ消去の処理を中断して即座に更新データの記録処理を実行し、更新データの記録を高速かつ確実に行なうことができる。
【図面の簡単な説明】
【００５４】
【図１】この発明の実施の形態１による情報記録読出装置の構成図である。
【図２】図１のブロック状態管理領域に記録されるデータとそのデータが示す状態の説明図である。
【図３】この発明の実施の形態１による情報記録読出装置におけるデータ記録の制御処理を示すフローチャートである。
【図４】この発明の実施の形態１による情報記録読出装置におけるデータ読出しの制御処理を示すフローチャートである。
【図５】この発明の実施の形態１による情報記録読出装置におけるデータ消去の制御処理を示すフローチャートである。
【図６】図５中のＳ＿ＲＤ算出処理を示すフローチャートである。
【図７】この発明の実施の形態１による情報記録読出装置におけるデータ消去の処理を中段する機能を備えたデータ記録の制御処理を示すフローチャートである。
【図８】この発明の実施の形態２による情報記録読出装置の構成図である。
【図９】図８の前セクタ消去状態管理領域に記録されるデータとそのデータが示す状態の説明図である。
【図１０】この発明の実施の形態２による情報記録読出装置におけるデータ消去の制御処理を示すフローチャートである。
【図１１】図１０中のＳ＿ＥＲを検索する処理を示すフローチャートである。
【図１２】この発明の実施の形態２による情報記録読出装置におけるデータ記録対象ブロック番号（Ｂ＿ＷＲ）およびデータ読出対象ブロック番号（Ｂ＿ＲＤ）の算出処理を示すフローチャートである。
【図１３】図１２中のＢ＿ＯＬＤの算出処理を示すフローチャートである。
【図１４】この発明の実施の形態２による情報記録読出装置におけるデータ消去の処理を中段する機能を備えたデータ記録の制御処理を示すフローチャートである。
【符号の説明】
【００５５】
１  フラッシュメモリ、１ａ  セクタ、１ｂ  ブロック、１ｃ  データ記録領域、１ｄ  ブロック状態管理領域、１ｅ  記録消去位置管理領域、１ｆ  前セクタ消去状態管理領域、２  制御部、３  インタフェース、２１  制御部。
【図１】
2006085596.tif 000003
【図２】
2006085596.tif 000004
【図３】
2006085596.tif 000005
【図４】
2006085596.tif 000006
【図５】
2006085596.tif 000007
【図６】
2006085596.tif 000008
【図７】
2006085596.tif 000009
【図８】
2006085596.tif 000010
【図９】
2006085596.tif 000011
【図１０】
2006085596.tif 000012
【図１１】
2006085596.tif 000013
【図１２】
2006085596.tif 000014
【図１３】
2006085596.tif 000015
【図１４】
2006085596.tif 000016