JP2007164364A - 情報記録読出装置 - Google Patents
情報記録読出装置 Download PDFInfo
- Publication number
- JP2007164364A JP2007164364A JP2005358061A JP2005358061A JP2007164364A JP 2007164364 A JP2007164364 A JP 2007164364A JP 2005358061 A JP2005358061 A JP 2005358061A JP 2005358061 A JP2005358061 A JP 2005358061A JP 2007164364 A JP2007164364 A JP 2007164364A
- Authority
- JP
- Japan
- Prior art keywords
- data
- recording
- block
- sector
- recorded
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】フラッシュメモリ等に代表される不揮発性メモリのセクタ当たりのデータ書換え可能回数を実質的に増加し、寿命を延ばすようにする。
【解決手段】フラッシュメモリ1が有する複数のセクタ1aそれぞれを複数のブロック1bに分割し、これら複数のセクタ全体に亘るブロックのデータ記録領域1cに対し環状の順序にてデータを記録し、記録データはセクタ1a内の全ブロック1bが記録済みとなった後にセクタ単位で一括消去する。また、記録したデータ量をブロック長として記録するブロック長管理領域1dを設け、このデータ量に対応させてブロック1bのデータ記録領域1cを変更する一方、このブロック長を前記ブロック長管理領域1dに記録する。
【選択図】図1
【解決手段】フラッシュメモリ1が有する複数のセクタ1aそれぞれを複数のブロック1bに分割し、これら複数のセクタ全体に亘るブロックのデータ記録領域1cに対し環状の順序にてデータを記録し、記録データはセクタ1a内の全ブロック1bが記録済みとなった後にセクタ単位で一括消去する。また、記録したデータ量をブロック長として記録するブロック長管理領域1dを設け、このデータ量に対応させてブロック1bのデータ記録領域1cを変更する一方、このブロック長を前記ブロック長管理領域1dに記録する。
【選択図】図1
Description
この発明は、フラッシュメモリ等に代表される不揮発性メモリに対するデータの記録、読出しおよび消去を行う情報記録読出装置に関するものである。
フラッシュメモリ等に代表される不揮発性メモリは電源切断後も記録内谷を保持できるという特徴を有し、この特徴を利用して機器等の電源切断直前の設定状態を記録するとともに電源切断後もこの記録内容を保持し、電源再投入時には電源切断時の設定状態を読み出し設定するという使用方法が考えられ、近年では、DVDプレーヤ等の様々な電子情報機器においてこのような使用方法が採用されている。このフラッシュメモリは、データ消去の単位となるセクタを複数有している。また、このフラッシュメモリの場合、1が設定されているビットを0にする場合はビット単位で行なうのに対し、0が設定されているビットを1に設定するにはセクタ単位で行なう(セクタ消去という)必要がある。このため、あるセクタに記録されているデータを更新する場合、従来はそのセクタに記録されているデータを消去した後、この同一のセクタに更新されたデータを記録するという方法がとられてきた。
しかし、この方法では、特定のセクタに書換えが集中し、セクタ当たりの消去回数に制限のあるフラッシュメモリの寿命を短くするという問題があった。この寿命の問題に対処した従来の情報記録読出装置として例えば以下のものがある。
しかし、この方法では、特定のセクタに書換えが集中し、セクタ当たりの消去回数に制限のあるフラッシュメモリの寿命を短くするという問題があった。この寿命の問題に対処した従来の情報記録読出装置として例えば以下のものがある。
従来例その1として、この従来例はフラッシュメモリの内部をファイルデータの書き込み消去単位であるセクタに分け、各セクタに書き込んだファイルに番号を付し、これを管理するテーブルを備え、すでに書いたファイルの書換え時にも新たなデータとして別のセクタに書き込み、古いデータは消去して新たに書き込み可能領域として前記テーブル上で管理するようにしたものであり、これにより、頻繁に書換えのあるファイルが特定のセクタに割り当てられないこととなり、フラッシュメモリの消去箇所が一部に集中することなく分散し、フラッシュメモリの寿命を延ばすことができる(例えば、特許文献1参照)。
また、従来例その2として、この従来例は複数のメモリブロックを有したブロック消去形フラッシュメモリに関し、複数のメモリブロック各々はデータ書込み領域(エリア)と管理ステータス書込み領域とを有し、この管理ステータス書込み領域には書込データ特定データIDとデータ書込メモリブロックの消去回数を示す消去カウンタと同一データIDで書込データの時系列的順番を示す書込みステータスとが書込まれ、プロセッサで新たなデータを書込む際には、書込みステータスが書込み可能を示し、且つ、消去カウンタが最小を示すメモリブロックを消去した後に、新たなデータおよび管理ステータスを書込み、他のメモリブロックの内の同一データIDを含む管理ステータスを更新するようにしたものであり、これにより、データ書込みおよび消去が特定のメモリブロックに偏ることが防止され、フラッシュメモリの寿命を延ばすことができる(例えば、特許文献2参照)。
従来の情報記録読出装置は以上のように構成され、従来例その1(特許文献1)および従来例その2(特許文献2)の双方とも、フラッシュメモリのデータ書込みおよび消去箇所が一部のセクタ(またはメモリブロック)に集中しないように分散し、フラッシュメモリの寿命を延ばすように改善している。
しかし、上記従来例における寿命の改善は、データ書込みおよび消去箇所が一部のセクタ(またはメモリブロック)に集中させないようにした範囲での効果であり、セクタ当たりのデータ書換え可能回数を実質的に増加、または、このデータ書換えの回数との関係においてデータ消去回数を実質的に減少させるものではない。このため、フラッシュメモリの寿命を延ばす更なる改善が必要であるという課題があった。
しかし、上記従来例における寿命の改善は、データ書込みおよび消去箇所が一部のセクタ(またはメモリブロック)に集中させないようにした範囲での効果であり、セクタ当たりのデータ書換え可能回数を実質的に増加、または、このデータ書換えの回数との関係においてデータ消去回数を実質的に減少させるものではない。このため、フラッシュメモリの寿命を延ばす更なる改善が必要であるという課題があった。
この発明は上記のような課題を解決するためになされたもので、フラッシュメモリ等に代表される不揮発性メモリにおけるセクタ当たりのデータ書換え可能回数を実質的に増加し、また、このデータ書換え回数との関係においてデータ消去回数を実質的に減少させ、不揮発性メモリの寿命を延ばすようにするとともに、データ処理の効率の改善および情報記録の精度の向上を図った情報記録読出装置を得ることを目的とする。
この発明に係る情報記録読出装置は、データ消去の単位となるセクタを複数有し、これら複数のセクタそれぞれは複数のブロックに分割し、該複数のブロックそれぞれにはデータ記録領域と該データ記録領域へ記録したデータ量をブロック長として記録するブロック長管理領域およびデータ記録の状態を記録するブロック状態管理領域とを有するとともに、前記複数のセクタそれぞれには一つ手前のセクタのデータ消去の状態を記録する前セクタ消去状態管理領域が設けられた不揮発性メモリと、前記ブロック長管理領域とブロック状態管理領域および前セクタ消去状態管理領域それぞれに対し前記ブロック長または状態を記録するとともに、これら記録データを基に前記複数のセクタ全体に亘るブロックのデータ記録領域に対し環状の順序に従ったデータの記録と、記録データの読出しおよびセクタごとの記録データの一括消去、さらに、前記ブロック長管理領域とブロック状態管理領域および前セクタ消去状態管理領域それぞれの記録データを更新するように前記不揮発性メモリを制御する制御部とを備えたものである。
以上のように、この発明によれば、不揮発性メモリが有する複数のセクタそれぞれを複数のブロックに分割し、これら複数のセクタ全体に亘るブロックのデータ記録領域に対し環状の順序にてデータを記録し、記録データはセクタ内の全ブロックが記録済みとなった後にセクタ単位で一括消去するように構成したので、セクタより記憶容量の小さいブロック単位で情報データを記録するとともに記録位置が環状の順序でずれていくこととなり、また、セクタ単位での記録データの一括消去により、セクタ当たりの消去回数に上限のある不揮発性メモリのセクタ当たりのデータ書換え可能回数を実質的に増加し、このデータ書換えの回数との関係においてデータ消去回数を実質的に減少し、これにより、不揮発性メモリの寿命を延ばすことができる。
また、ブロック長管理領域を設け、この管理領域にデータ記録領域へ記録したデータ量をブロック長として記録するように構成したので、記録したデータ量が容易に検知でき、情報記録の精度を向上することができる。
また、ブロック状態管理領域を設け、この管理領域にデータ記録の状態を記録するように構成したので、更新データの記録が中断されたかどうかを検知することができ、情報記録の精度を向上することができる。
また、ブロック長管理領域を設け、この管理領域にデータ記録領域へ記録したデータ量をブロック長として記録するように構成したので、記録したデータ量が容易に検知でき、情報記録の精度を向上することができる。
また、ブロック状態管理領域を設け、この管理領域にデータ記録の状態を記録するように構成したので、更新データの記録が中断されたかどうかを検知することができ、情報記録の精度を向上することができる。
以下、この発明の実施の一形態を説明する。
実施の形態1.
図1はこの発明の実施の形態1による情報記録読出装置の構成図である。
図1において、この情報記録読出装置は不揮発性メモリとしてフラッシュメモリ1を使用し、このフラッシュメモリ1を制御部2がインターフェース3を介し制御する構成としている。
上記構成において、フラッシュメモリ1はデータ消去の単位となるセクタ1aを複数有しており、図1はこのセクタ1aをセクタ1a(1)からセクタ1a(4)の4つのセクタから成るとした例である。また、これらセクタ1a(1)からセクタ1a(4)の各セクタ1aは更に小さなデータ単位(容量)にした複数のブロック1bに分割される。
実施の形態1.
図1はこの発明の実施の形態1による情報記録読出装置の構成図である。
図1において、この情報記録読出装置は不揮発性メモリとしてフラッシュメモリ1を使用し、このフラッシュメモリ1を制御部2がインターフェース3を介し制御する構成としている。
上記構成において、フラッシュメモリ1はデータ消去の単位となるセクタ1aを複数有しており、図1はこのセクタ1aをセクタ1a(1)からセクタ1a(4)の4つのセクタから成るとした例である。また、これらセクタ1a(1)からセクタ1a(4)の各セクタ1aは更に小さなデータ単位(容量)にした複数のブロック1bに分割される。
図1は各セクタ1aを4つのブロックに分割し、セクタ1a(1)からセクタ1a(4)に亘りブロック1b(1)からブロック1b(16)の16ブロックから成るとした例である。末尾の数字(1)〜(16)はブロック1bの位置を表す。
これらブロック1b(1)からブロック1b(16)の各ブロックはデータ記録領域1c、ブロック長管理領域1eおよびブロック状態管理領域1dとを有している。このうち、データ記録領域1cには保存する情報データが記録(格納)される。この場合、各ブロック1bのデータ記録領域1cへのデータ記録はブロック1b(1)からブロック1b(16)に対し環状の順序にて記録される。
また、ブロック長管理領域1eは各ブロック1bのデータ記録領域1cへ記録したデータの量を表すブロック長のデータを記録し管理する領域である。
ブロック状態管理領域1dはこのブロック状態管理領域1dが属するブロック1bへのデータ記録の状態を記録し管理する領域であり、具体的にはそのブロック1bのデータ記録領域1cにデータが未記録、記録中または記録済かを示すデータが記録される。
これらブロック1b(1)からブロック1b(16)の各ブロックはデータ記録領域1c、ブロック長管理領域1eおよびブロック状態管理領域1dとを有している。このうち、データ記録領域1cには保存する情報データが記録(格納)される。この場合、各ブロック1bのデータ記録領域1cへのデータ記録はブロック1b(1)からブロック1b(16)に対し環状の順序にて記録される。
また、ブロック長管理領域1eは各ブロック1bのデータ記録領域1cへ記録したデータの量を表すブロック長のデータを記録し管理する領域である。
ブロック状態管理領域1dはこのブロック状態管理領域1dが属するブロック1bへのデータ記録の状態を記録し管理する領域であり、具体的にはそのブロック1bのデータ記録領域1cにデータが未記録、記録中または記録済かを示すデータが記録される。
図2は上記ブロック状態管理領域1dに記録されるデータとそのデータが示す状態の説明図である。
図2において、11はブロック状態管理領域1dの記録データ(内容)、12はその記録データが示すブロック1bの状態である。
記録データが「111」の場合は「未記録」の状態であり、そのブロック1bのデータ記録領域1cにデータが記録されていないことを示す。
記録データが「011」の場合は「記録中」の状態であり、データ記録領域1cにデータが記録中であることを示す。また、この「記録中」の状態はそのデータ記録領域1cに記録されているデータが不完全なデータであることを示す。
記録データが「001」の場合は「記録済」の状態であり、データ記録領域1cにデータ記録が完了したことを示し、また、記録データが正常であることを示す。
このとき、フラッシュメモリのデータは1を0にする場合はビット単位で行なえるので、「未記録」を「記録中」または「記録済」に変更でき、「記録中」は「記録済」に変更することが可能である。
一方、「記録中」または「記録済」を「未記録」にするためにはセクタ消去を行なう。
図2において、11はブロック状態管理領域1dの記録データ(内容)、12はその記録データが示すブロック1bの状態である。
記録データが「111」の場合は「未記録」の状態であり、そのブロック1bのデータ記録領域1cにデータが記録されていないことを示す。
記録データが「011」の場合は「記録中」の状態であり、データ記録領域1cにデータが記録中であることを示す。また、この「記録中」の状態はそのデータ記録領域1cに記録されているデータが不完全なデータであることを示す。
記録データが「001」の場合は「記録済」の状態であり、データ記録領域1cにデータ記録が完了したことを示し、また、記録データが正常であることを示す。
このとき、フラッシュメモリのデータは1を0にする場合はビット単位で行なえるので、「未記録」を「記録中」または「記録済」に変更でき、「記録中」は「記録済」に変更することが可能である。
一方、「記録中」または「記録済」を「未記録」にするためにはセクタ消去を行なう。
また、セクタ1a(1)からセクタ1a(4)の4つのセクタそれぞれには前セクタ消去状態管理領域1fが設けられている。この前セクタ消去状態管理領域1fは、一つ前のセクタ1aのデータ消去の状態を示すデータを記録する領域である。例えば、セクタ1a(2)の前セクタ消去状態管理領域1fには一つ前のセクタ1a(1)のデータ消去の状態を示すデータが記録される。
図3は上記前セクタ消去状態管理領域1fに記録されるデータとそのデータが示す状態の説明図である。
図3において、21は前セクタ消去状態管理領域1fの記録データ(内容)、22はその記録データが示す一つ前のセクタ1aの状態である。
記録データが「111」の場合は初期状態である「未消去」の状態を示す。
記録データが「011」の場合は1つ前のセクタ1aのデータ消去を開始したことを示す「消去中」の状態を示す。
記録データが「001」の場合は1つ前のセクタ1aのデータ消去が完了したことを示す「消去済」の状態を示す。
図3において、21は前セクタ消去状態管理領域1fの記録データ(内容)、22はその記録データが示す一つ前のセクタ1aの状態である。
記録データが「111」の場合は初期状態である「未消去」の状態を示す。
記録データが「011」の場合は1つ前のセクタ1aのデータ消去を開始したことを示す「消去中」の状態を示す。
記録データが「001」の場合は1つ前のセクタ1aのデータ消去が完了したことを示す「消去済」の状態を示す。
制御部2は、データの記録と読出しを行なう位置の特定、データの記録と読出制御、消去対象セクタの特定、セクタ消去と消去中断制御等を行なうものであり、このため、ブロック長管理領域1eとブロック状態管理領域1dおよび前セクタ消去状態管理領域1fそれぞれに対しブロック長、ブロック1bへのデータ記録の状態または一つ前のセクタのデータ消去の状態を記録するとともに、これら記録データを基に複数のセクタ1a(1)からセクタ1a(4)の全体に亘るブロック1b(1)からブロック1b(16)の各データ記録領域1cに対し環状の順序に従ったデータの記録と、記録データの読出しおよびセクタ1aごとの記録データの一括消去、さらに、前記ブロック長管理領域1eとブロック状態管理領域1dおよび前セクタ消去状態管理領域1fそれぞれの記録データを更新するようにフラッシュメモリ1を制御する。また、これら制御に関する各種判断および演算等の処理を行う。
以上説明の制御部2はCPU(中央処理装置)とメモリ等、または、マイクロコンピュータ等で構成される。
インターフェース3はフラッシュメモリ1と制御部2とを制御可能に接続する。
以上説明の制御部2はCPU(中央処理装置)とメモリ等、または、マイクロコンピュータ等で構成される。
インターフェース3はフラッシュメモリ1と制御部2とを制御可能に接続する。
次に、各ブロック1bのデータ記録領域1cへ記録するデータに関し、各図を用いて説明する。
図4は各ブロック1bのデータ記録領域1cへ記録するデータに関する説明図であって、DVD再生機器を例としたものであり、このDVD再生機器における動作モードの状態遷移を示す図である。
図4に示すように、このDVD再生機器はDVDの他にCD(Compact Disc)の再生も対象としたものであり、DVDについては1層DiscのDVD−VideoとDVD−ROM(読み出し専用)、2層DiscのDVD−VideoとDVD−ROM、CDについてはCD_DAとCD_MP3等をそれぞれ再生の対象とする。これら再生対象の再生動作は以下のように遷移(進行)する。
図4は各ブロック1bのデータ記録領域1cへ記録するデータに関する説明図であって、DVD再生機器を例としたものであり、このDVD再生機器における動作モードの状態遷移を示す図である。
図4に示すように、このDVD再生機器はDVDの他にCD(Compact Disc)の再生も対象としたものであり、DVDについては1層DiscのDVD−VideoとDVD−ROM(読み出し専用)、2層DiscのDVD−VideoとDVD−ROM、CDについてはCD_DAとCD_MP3等をそれぞれ再生の対象とする。これら再生対象の再生動作は以下のように遷移(進行)する。
例えば、今、上記再生対象のうちのいずれかを再生したモードの動作をストップ(STOP)した時点(S1)を起点とした場合、次の操作としてはその再生対象を装着位置から取り外す(EJECT)(S2)。次いで、新たな再生対象(Disc)が装着位置に装着される(LOADING)(S3)。装着された再生対象(Disc)は判別され(S4)、DVD再生機器はこの判別に対応する所要の動作モードへ移行する。この判別された再生対象が例えばCD_DAであれば、このCD_DAが再生される(S5)。同様にして、
装着された再生対象の判別(S4)の結果がCD_MP3であればこのCD_MP3が再生され(S6)、以下同様に、再生対象の判別(S4)の結果に従い、1層DiscのDVD−ROM(DVD−1層ROM)の再生(S7)、2層DiscのDVD−ROM(DVD−2層ROM)の再生(S8)、2層DiscのDVD−Video(2層DVD−Video)の再生(S9)、または1層DiscのDVD−Video(1層DVD−Video)の再生(S10)が行われる。
装着された再生対象の判別(S4)の結果がCD_MP3であればこのCD_MP3が再生され(S6)、以下同様に、再生対象の判別(S4)の結果に従い、1層DiscのDVD−ROM(DVD−1層ROM)の再生(S7)、2層DiscのDVD−ROM(DVD−2層ROM)の再生(S8)、2層DiscのDVD−Video(2層DVD−Video)の再生(S9)、または1層DiscのDVD−Video(1層DVD−Video)の再生(S10)が行われる。
以上説明のように遷移する動作モードの状態における保持データは再生対象によりデータ量が異なる。このデータ量の例を図5に示す。
図5は前記遷移状態における各再生対象の保持データの説明図であり、図5(a)は1層DiscのDVD−Videoにおける保持データ、図5(b)は2層DiscのDVD−Videoにおける保持データ、図5(c)は1層DiscのDVD−ROMにおける保持データ、図5(d)は2層DiscのDVD−ROMにおける保持データ、図5(e)はCD_DAにおける保持データ、図5(f)はCD_MP3における保持データの例をそれぞれ示す。
図5は前記遷移状態における各再生対象の保持データの説明図であり、図5(a)は1層DiscのDVD−Videoにおける保持データ、図5(b)は2層DiscのDVD−Videoにおける保持データ、図5(c)は1層DiscのDVD−ROMにおける保持データ、図5(d)は2層DiscのDVD−ROMにおける保持データ、図5(e)はCD_DAにおける保持データ、図5(f)はCD_MP3における保持データの例をそれぞれ示す。
これら図5(a)〜図5(f)に示すように、保持データはパケット番号とその内容および対象メディアで構成され、これら再生対象の再生を実行するにはそれぞれのパラメータを保持する必要がある。例えば、1層DiscのDVD−Videoの再生を実行するには図5(a)に示すパラメータを保持する必要がある。この全てのパラメータを図1に示すブロック1bのデータ記録領域1cへ記録する。このパラメータは図5(a)〜図5(f)に示すように、再生対象によりデータ量が異なる。従って、ブロック1bはいずれのパラメータについても記録可能なブロックサイズ(データ記録容量)を有していることが必要となる。
この対処法として、再生対象中で最も大きなデータ量となる再生対象を前提にしてブロック1bの大きさ(サイズ)を定め、セクタ1a内をこの大きさのブロック1bに等分する方法がある。しかし、この方法の場合、最大のデータ量を前提に等分したブロック1bにデータ量の小さいパラメータが記録されたときには記録領域が残存することとなり、冗長な領域の発生をもたらすこととなる。
この対処法として、再生対象中で最も大きなデータ量となる再生対象を前提にしてブロック1bの大きさ(サイズ)を定め、セクタ1a内をこの大きさのブロック1bに等分する方法がある。しかし、この方法の場合、最大のデータ量を前提に等分したブロック1bにデータ量の小さいパラメータが記録されたときには記録領域が残存することとなり、冗長な領域の発生をもたらすこととなる。
このような冗長な領域の発生を防止すためにはブロック1bのサイズを記録するデータ量に応じて変更すればよい。このブロックサイズの変更について図6に示す。
図6はブロックサイズ変更の説明図であり、図1と同一のものには同一符号を付し、図6(a)はセクタ1a内を同一サイズのブロック1bに分割した場合の説明図、図6(b)はセクタ1a内を記録するデータ量に応じてブロック1bのサイズを変更して分割した場合の説明図である。
図6(a)において、セクタ1a内を同一サイズのブロック1b(1)〜ブロック1b(4)に4分割したときには各ブロック1bのブロック長はセクタ1aの全記録容量の4分の1ずつとなる。この場合、4分割した各ブロック1bのブロック長がいずれの再生対象のパラメータを記録できるサイズであればデータの記録上では問題ないが、前記冗長な領域が発生する。また、記録するデータ量が4分割したブロック長を超えるような再生対象については全てのデータを記録することができず、このような再生対象については対応できないこととなる。
図6はブロックサイズ変更の説明図であり、図1と同一のものには同一符号を付し、図6(a)はセクタ1a内を同一サイズのブロック1bに分割した場合の説明図、図6(b)はセクタ1a内を記録するデータ量に応じてブロック1bのサイズを変更して分割した場合の説明図である。
図6(a)において、セクタ1a内を同一サイズのブロック1b(1)〜ブロック1b(4)に4分割したときには各ブロック1bのブロック長はセクタ1aの全記録容量の4分の1ずつとなる。この場合、4分割した各ブロック1bのブロック長がいずれの再生対象のパラメータを記録できるサイズであればデータの記録上では問題ないが、前記冗長な領域が発生する。また、記録するデータ量が4分割したブロック長を超えるような再生対象については全てのデータを記録することができず、このような再生対象については対応できないこととなる。
これに対し、図6(b)は記録するデータ量に応じてブロック1b(1)のサイズをセクタ1aの全記録容量の2分の1とし、残分(2分の1)については等分、即ち、セクタ1aの全記録容量に対し6分の1ずつに分割してブロック1b(2)〜ブロック1b(4)とし、図6(a)と同様に4分割した例である。このようなブロック1b(1)のサイズの可変設定は制御部2により実行される。なお、図6(b)の分割形態は1例であり、他の分割形態であってもよいことはいうまでもない。
この図6(b)のように、セクタ1a内を記録するデータ量に応じてブロック1bのサイズを変更して分割することにより、無駄な使用となる前記冗長な領域の発生を防止し、実質的な書換え回数の増加を可能とする。また、データ量の大きい再生対象についても対応可能となる。
この図6(b)のように、セクタ1a内を記録するデータ量に応じてブロック1bのサイズを変更して分割することにより、無駄な使用となる前記冗長な領域の発生を防止し、実質的な書換え回数の増加を可能とする。また、データ量の大きい再生対象についても対応可能となる。
次に、データ記録の処理につて図7で説明する。
図7は制御部2によるフラッシュメモリ1のB_WR番目のブロックに対するデータ記録の処理を示すフローチャートである。
ここで、以下説明の処理における制御部2は、更新データを記録するブロックの番号B_WR、ブロック長を示すB_LENGTH、最新データが記録されているブロックの番号B_RD、使用済みとなり消去の対象となったセクタの番号S_ERを管理し、フラッシュメモリ1から主制御用のマイコンのメモリ(いずれも図示せず)に対しデータを読み出して、その後このデータが更新された場合に前記メモリの内容をフラッシュメモリ1に記録する。フラッシュメモリ1にデータがまだ記録されていない場合の初期値をB_WR=1、B_RD=0、S_ER=1とする。
図7は制御部2によるフラッシュメモリ1のB_WR番目のブロックに対するデータ記録の処理を示すフローチャートである。
ここで、以下説明の処理における制御部2は、更新データを記録するブロックの番号B_WR、ブロック長を示すB_LENGTH、最新データが記録されているブロックの番号B_RD、使用済みとなり消去の対象となったセクタの番号S_ERを管理し、フラッシュメモリ1から主制御用のマイコンのメモリ(いずれも図示せず)に対しデータを読み出して、その後このデータが更新された場合に前記メモリの内容をフラッシュメモリ1に記録する。フラッシュメモリ1にデータがまだ記録されていない場合の初期値をB_WR=1、B_RD=0、S_ER=1とする。
以下、図1に示すフラッシュメモリ1のブロック1b(1)からブロック1b(16)中のB_WR番目のブロック1bのデータ記録領域1cにデータを記録するときの処理について説明する。
図7において、ステップST1では、制御部2は自己が管理しているデータ記録を行なうブロック1bの番号B_WRを取得し、記録ブロック指定変数Nに格納する(N=B_WRとおく)。
ステップST2では、制御部2はN番目のブロック1bのブロック状態管理領域1dを「記録中」に設定する。
ステップST3では、制御部2はN番目のブロック1bのブロック長管理領域1eにブロック長B_LENGTHを記録する。
ステップST4では、制御部2はこのN番目のブロック1bにはデータが記録されるので、ステップST1のブロック番号B_WRに1を加算し(B_WR=B_WR+1)、次のブロックを示すようにしておく。
図7において、ステップST1では、制御部2は自己が管理しているデータ記録を行なうブロック1bの番号B_WRを取得し、記録ブロック指定変数Nに格納する(N=B_WRとおく)。
ステップST2では、制御部2はN番目のブロック1bのブロック状態管理領域1dを「記録中」に設定する。
ステップST3では、制御部2はN番目のブロック1bのブロック長管理領域1eにブロック長B_LENGTHを記録する。
ステップST4では、制御部2はこのN番目のブロック1bにはデータが記録されるので、ステップST1のブロック番号B_WRに1を加算し(B_WR=B_WR+1)、次のブロックを示すようにしておく。
ステップST5では、制御部2はブロック番号B_WRがブロックの総数(図1では16)を超えた(B_WR>ブロック総数)かについて判断し、ブロック総数を超えた場合(ステップST5―YES)は、ステップST6へ進み、ブロック総数を超えていない場合(ステップST5―NO)は、ステップST7へ進む。
ステップST6では、制御部2はブロック番号B_WRを1に設定し(B_WR=1)、ステップST7へ進む。
ステップST7では、制御部2は前記主制御用マイコンのメモリより取得したB_LENGTH(ステップST3)の長さのデータをN番目のブロック1bのデータ記録領域1cに記録する。
ステップST8では、制御部2はN番目のブロック1bのブロック状態管理領域1dを「記録済」に設定する。この設定により、N番目のブロック1bのデータ記録領域1cに記録したデータが最新のデータとなる。
ステップST9では、制御部2は最新データが記録され、次回の読み出し対象となるブロック番号B_RDにNをセットし(B_RD=N)、記録処理を終了する。
ステップST6では、制御部2はブロック番号B_WRを1に設定し(B_WR=1)、ステップST7へ進む。
ステップST7では、制御部2は前記主制御用マイコンのメモリより取得したB_LENGTH(ステップST3)の長さのデータをN番目のブロック1bのデータ記録領域1cに記録する。
ステップST8では、制御部2はN番目のブロック1bのブロック状態管理領域1dを「記録済」に設定する。この設定により、N番目のブロック1bのデータ記録領域1cに記録したデータが最新のデータとなる。
ステップST9では、制御部2は最新データが記録され、次回の読み出し対象となるブロック番号B_RDにNをセットし(B_RD=N)、記録処理を終了する。
以上の説明のように、記録するブロック1bの位置を環状の順序でずらしながらデータ記録を行なうことにより1つのセクタ1aには分割ブロック数N(複数)の回数についてデータを記録することができので、セクタ1a当たりのデータ書換回数をN倍に増やすことができる。また、ブロック1bのデータ記録状態をブロック状態管理領域1dに書き込むので、そのブロック1bに記録されているデータが信頼できるかどうかを容易に知ることができる。
次に、データ読出しの処理について図8で説明する。
図8は制御部2によるフラッシュメモリ1のB_RD番目のブロックに対するデータ読出しの処理を示すフローチャートである。
以下、図1に示すフラッシュメモリ1のブロック1b(1)からブロック1b(16)中で最新のデータが記録されているB_RD番目のブロック1bからデータを読み出す場合の処理について説明する。
図8において、ステップST11では、制御部2はB_RDが0(B_RD=0)か否かを判断し、「B_RD=0」であれば(ステップST11―Yes)、ステップST12へ進み、「B_RD=0」でなければ(ステップST11―No)、ステップST13へ進む。
図8は制御部2によるフラッシュメモリ1のB_RD番目のブロックに対するデータ読出しの処理を示すフローチャートである。
以下、図1に示すフラッシュメモリ1のブロック1b(1)からブロック1b(16)中で最新のデータが記録されているB_RD番目のブロック1bからデータを読み出す場合の処理について説明する。
図8において、ステップST11では、制御部2はB_RDが0(B_RD=0)か否かを判断し、「B_RD=0」であれば(ステップST11―Yes)、ステップST12へ進み、「B_RD=0」でなければ(ステップST11―No)、ステップST13へ進む。
ステップST12では、制御部2は初期値を読み出してデータ読出しの処理を終了する。
「B_RD=0」であれば、まだフラッシュメモリ1に読み出し可能なデータが記録されていないので初期値を読み出すものである。
ステップST13では、制御部2はB_RD番目のブロック1bのブロック長管理領域1eからブロック長B_LENGTHを取得する。
ステップST14では、制御部2はB_RD番目のブロック1bのデータ記憶領域1cからブロック長B_LENGTHの長さ分データを読み出してデータ読出しの処理を終了する。
「B_RD=0」であれば、まだフラッシュメモリ1に読み出し可能なデータが記録されていないので初期値を読み出すものである。
ステップST13では、制御部2はB_RD番目のブロック1bのブロック長管理領域1eからブロック長B_LENGTHを取得する。
ステップST14では、制御部2はB_RD番目のブロック1bのデータ記憶領域1cからブロック長B_LENGTHの長さ分データを読み出してデータ読出しの処理を終了する。
次に、データ消去の対象となるセクタ1aの番号S_ERを検索する処理について図9で説明する。
図9はデータ消去の対象となるセクタ1aの番号S_ERを検索する処理を示すフローチャート(サブルーチン)である。
この図9のフローチャートは後述(図11)のデータ消去の処理の際に使用するサブルーチンの関係となる。
図9において、ステップST21では、制御部2は前セクタ消去状態管理領域1fを確認するセクタ1aの番号を格納する変数Nを1とおく(N=1)。
ステップST22では、制御部2はN+1番目のセクタ1aの前セクタ消去状態管理領域1fのデータが「消去中」であるかどうかを判断し、「消去中」でない場合(ステップST22―No)は、N番目のセクタ1aに記録されている内容は信用できるのでステップST23へ進み、「消去中」である場合(ステップST22―Yes)は、ステップST29へ進む。
図9はデータ消去の対象となるセクタ1aの番号S_ERを検索する処理を示すフローチャート(サブルーチン)である。
この図9のフローチャートは後述(図11)のデータ消去の処理の際に使用するサブルーチンの関係となる。
図9において、ステップST21では、制御部2は前セクタ消去状態管理領域1fを確認するセクタ1aの番号を格納する変数Nを1とおく(N=1)。
ステップST22では、制御部2はN+1番目のセクタ1aの前セクタ消去状態管理領域1fのデータが「消去中」であるかどうかを判断し、「消去中」でない場合(ステップST22―No)は、N番目のセクタ1aに記録されている内容は信用できるのでステップST23へ進み、「消去中」である場合(ステップST22―Yes)は、ステップST29へ進む。
ステップST23では、制御部2はN番目セクタ1aの前セクタ消去状態管理領域1fが「消去済」かどうかを判断し、「消去済」でない場合(ステップST23―No)は、ステップST24へ進み、「消去済」である場合(ステップST23―Yes)は、ステップST7−29へ進む。
ステップST24では、制御部2はこのセクタ1aについては消去対象ではないのでNをN+1とおく(N=N+1)。
ステップST25では、制御部2はNがセクタ1aの総数と一致するかについて判断し、一致しない場合(ステップST25―No)は、ステップST22へ戻って検索を継続する。これに対し一致する場合(ステップST25―Yes)、N番目のセクタ1aは物理的に最後のセクタ1aであることを示し、この場合はステップST26へ進む。
ステップST24では、制御部2はこのセクタ1aについては消去対象ではないのでNをN+1とおく(N=N+1)。
ステップST25では、制御部2はNがセクタ1aの総数と一致するかについて判断し、一致しない場合(ステップST25―No)は、ステップST22へ戻って検索を継続する。これに対し一致する場合(ステップST25―Yes)、N番目のセクタ1aは物理的に最後のセクタ1aであることを示し、この場合はステップST26へ進む。
ステップST26では、制御部2は1番目のセクタ1aの前セクタ消去状態管理領域1fが「消去中」であるかどうかを判断し、「消去中」でない場合(ステップST26―No)は、ステップST27へ進み、「消去中」である場合(ステップST26―Yes)は、ステップST29へ進む。
ステップST27では、制御部2はN番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」であるかどうかを判断し、「消去済」でない場合(ステップST27―No)は、ステップST28へ進み、「消去済」である場合(ステップST27―Yes)は、ステップST29へ進む。
ステップST28では、制御部2はデータ消去の対象となるセクタ1aの番号S_ERを1とおき(S_ER=1)、この検索処理を終了する。このように処理するのは、ステップST27において、N番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」でない場合は全てのセクタ1aにおいてまだ一度も消去が行なわれていないことを示し、従って、最も古いセクタ1aは1番目のセクタであるのでS_ERを1とおく。
ステップST27では、制御部2はN番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」であるかどうかを判断し、「消去済」でない場合(ステップST27―No)は、ステップST28へ進み、「消去済」である場合(ステップST27―Yes)は、ステップST29へ進む。
ステップST28では、制御部2はデータ消去の対象となるセクタ1aの番号S_ERを1とおき(S_ER=1)、この検索処理を終了する。このように処理するのは、ステップST27において、N番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」でない場合は全てのセクタ1aにおいてまだ一度も消去が行なわれていないことを示し、従って、最も古いセクタ1aは1番目のセクタであるのでS_ERを1とおく。
ステップST29では、制御部2はデータ消去の対象となるセクタ1aの番号S_ERをNとおき(S_ER=N)、この検索処理を終了する。
このステップST29の処理は、ステップST22―Yes、ステップST23―Yes、ステップST26―YesおよびステップST27―Yesの場合に行われる。
ステップST22の判断が「Yes」の場合、過去にN番目のセクタ1aに対して消去処理が行なわれているため、N番目のセクタ1aが消去対象のセクタ1aとあるとしてS_ERをNとおく。
ステップST23の判断が「Yes」の場合、直前のセクタ1aが前回消去され、N番目のセクタ1aが最も古いセクタということになるのでS_ERをNとおく。
また、ステップST26およびステップST27それぞれの判断が「Yes」の場合、N番目のセクタ1aが消去対象のセクタとなるのでS_ERをNとおく。
このステップST29の処理は、ステップST22―Yes、ステップST23―Yes、ステップST26―YesおよびステップST27―Yesの場合に行われる。
ステップST22の判断が「Yes」の場合、過去にN番目のセクタ1aに対して消去処理が行なわれているため、N番目のセクタ1aが消去対象のセクタ1aとあるとしてS_ERをNとおく。
ステップST23の判断が「Yes」の場合、直前のセクタ1aが前回消去され、N番目のセクタ1aが最も古いセクタということになるのでS_ERをNとおく。
また、ステップST26およびステップST27それぞれの判断が「Yes」の場合、N番目のセクタ1aが消去対象のセクタとなるのでS_ERをNとおく。
次に、最新データが記録されているセクタ1aの番号S_RDを算出する処理について図10で説明する。
図10は最新データが記録されているセクタ1aの番号S_RDの算出処理を示すフローチャート(サブルーチン)である。
この図10のフローチャートは後述(図11)のデータ消去の処理の際に使用するサブルーチンの関係となる。
図10において、ステップST31では、初期値として、ブロック数をBLK_SU=1、セクタ内のデータ長(ブロック単位)をBLK_LGTH_Nとおき、ステップST32ではブロック内のデータ長であるDATA_LGTHを読み、BLK_LGTH=DATA_LGTH+9とおく。
次にステップST33では、BLK_LGTH_N=BLK_LGTH_N+BLK_LGTHとしたうえで、ステップST34にてこのBLK_LGTH_Nがセクタサイズと比較する。セクタサイズの方が大きければ、ステップST35にてS_RDに1を加算して、ステップST32を実行する。小さければステップST36にてBLK_SUとB_RDを比較する。BLK_SUの方が小さければステップST37にてBLK_SU=BLK_SU+1を実行し、大きければこのときのS_RDを保持してもどる。
図10は最新データが記録されているセクタ1aの番号S_RDの算出処理を示すフローチャート(サブルーチン)である。
この図10のフローチャートは後述(図11)のデータ消去の処理の際に使用するサブルーチンの関係となる。
図10において、ステップST31では、初期値として、ブロック数をBLK_SU=1、セクタ内のデータ長(ブロック単位)をBLK_LGTH_Nとおき、ステップST32ではブロック内のデータ長であるDATA_LGTHを読み、BLK_LGTH=DATA_LGTH+9とおく。
次にステップST33では、BLK_LGTH_N=BLK_LGTH_N+BLK_LGTHとしたうえで、ステップST34にてこのBLK_LGTH_Nがセクタサイズと比較する。セクタサイズの方が大きければ、ステップST35にてS_RDに1を加算して、ステップST32を実行する。小さければステップST36にてBLK_SUとB_RDを比較する。BLK_SUの方が小さければステップST37にてBLK_SU=BLK_SU+1を実行し、大きければこのときのS_RDを保持してもどる。
次に、セクタ1aのデータ消去(セクタ消去)の処理について図11で説明する。
図11は制御部2によるフラッシュメモリ1に対するデータ消去の処理を示すフローチャートである。
図11において、ステップST41では、制御部2はデータ消去の対象となるセクタ1aの番号S_ERを、前記図9で説明したサブルーチンを呼び出し検索する。
ステップST42では、制御部2は最新データが記録されているセクタ1aの番号S_RDを、前記図10で説明したサブルーチンを呼び出し算出する。
ステップST43では、制御部2は最新データの読出しが完了し、且つ、データ記録処理を要するデータ記録の要求が無いかについて判断し、この要求が有る場合(ステップST43―No)は、まだセクタ1aのデータ消去を開始できない状態なのでステップST42に戻って待機し、上記要求が無い場合(ステップST43―Yes)は、ステップST44へ進む。
図11は制御部2によるフラッシュメモリ1に対するデータ消去の処理を示すフローチャートである。
図11において、ステップST41では、制御部2はデータ消去の対象となるセクタ1aの番号S_ERを、前記図9で説明したサブルーチンを呼び出し検索する。
ステップST42では、制御部2は最新データが記録されているセクタ1aの番号S_RDを、前記図10で説明したサブルーチンを呼び出し算出する。
ステップST43では、制御部2は最新データの読出しが完了し、且つ、データ記録処理を要するデータ記録の要求が無いかについて判断し、この要求が有る場合(ステップST43―No)は、まだセクタ1aのデータ消去を開始できない状態なのでステップST42に戻って待機し、上記要求が無い場合(ステップST43―Yes)は、ステップST44へ進む。
ステップST44では、制御部2はデータ消去するセクタ1aの番号S_ERと最新データが記録されているセクタ1aの番号S_RDとが一致(S_ER=S_RD)するかについて判断し、両者が一致する場合(ステップST44―Yes)は、S_ER番目のセクタ1aのデータを消去すると最新データが消失することを意味し、この最新データの消失を防止するためにステップST42に戻って待機する。これに対し、両者が一致しない場合(ステップST44―No)は、S_ER番目セクタ1aの全てのブロック1bにデータ記録が行われ、消去してもよいセクタとなるのでステップST45へ進む。
ステップST45では、制御部2はフラグ設定を行うセクタ1aの番号を示す変数Nを「S_ER+1」とおく(N=S_ER+1)。
ステップST46では、制御部2はステップST45の処理における変数Nがセクタ1aの総数(本例では4セクタ)を越えているかについて判断し、セクタ1aの総数を超えている場合(ステップST46―Yes)は、ステップST47へ進み、セクタ1aの総数を超えていない場合(ステップST46―No)は、ステップST48へ進む。
ステップST45では、制御部2はフラグ設定を行うセクタ1aの番号を示す変数Nを「S_ER+1」とおく(N=S_ER+1)。
ステップST46では、制御部2はステップST45の処理における変数Nがセクタ1aの総数(本例では4セクタ)を越えているかについて判断し、セクタ1aの総数を超えている場合(ステップST46―Yes)は、ステップST47へ進み、セクタ1aの総数を超えていない場合(ステップST46―No)は、ステップST48へ進む。
ステップST47では、制御部2は前記変数Nを1とおく(N=1)。
ステップST48では、制御部2はN番目のセクタ1aの前セクタ消去状態管理領域1fのデータを「消去中」に設定する。
ステップST49では、制御部2はフラッシュメモリ1に対しS_ER番目のセクタ1aの記録データを消去する。
ステップST50では、制御部2はステップST49のセクタ1aの記録データ消去が完了したときには、N番目のセクタ1aの前セクタ消去状態管理領域1fのデータを「消去済」に設定する。
ステップST51では、次に消去を行うセクタはステップST45でフラグ設定したセクタ1aであるので、制御部2はS_ERをN(S_ER=N)とおき、ステップST42へ戻って後続セクタの消去を続行する。この処理はデータ記録が開始されるまで繰り返される。
ステップST48では、制御部2はN番目のセクタ1aの前セクタ消去状態管理領域1fのデータを「消去中」に設定する。
ステップST49では、制御部2はフラッシュメモリ1に対しS_ER番目のセクタ1aの記録データを消去する。
ステップST50では、制御部2はステップST49のセクタ1aの記録データ消去が完了したときには、N番目のセクタ1aの前セクタ消去状態管理領域1fのデータを「消去済」に設定する。
ステップST51では、次に消去を行うセクタはステップST45でフラグ設定したセクタ1aであるので、制御部2はS_ERをN(S_ER=N)とおき、ステップST42へ戻って後続セクタの消去を続行する。この処理はデータ記録が開始されるまで繰り返される。
以上によれば、データの読み書きが行われていない空き時間を使って予めセクタ1aの記録データの消去を行うことができるので(ST43)、データ記録処理を高速に実施することができる。
また、消去対象となるセクタと論理的に接続される後続の他のセクタ1aに属するブロック1bのデータ記録領域1c、即ち、次の記録対象のセクタ1aのデータ記録領域1cに情報データが記録されるまでは、前記消去対象となるセクタ1aの記録データを消去しないので(ST44)、必ず最新のデータを消失することなく残すことができる。
また、消去対象となるセクタと論理的に接続される後続の他のセクタ1aに属するブロック1bのデータ記録領域1c、即ち、次の記録対象のセクタ1aのデータ記録領域1cに情報データが記録されるまでは、前記消去対象となるセクタ1aの記録データを消去しないので(ST44)、必ず最新のデータを消失することなく残すことができる。
次に、最も古いデータが記録されているブロック1bの番号B_OLDを算出する処理について図12で説明する。
図12は最も古いデータが記録されているブロック1bの番号B_OLDの算出処理を示すフローチャート(サブルーチン)である。
この図12のフローチャートは後述(図13)の記録対象ブロック1bの番号B_WRおよび読み出し対象ブロック1bの番号B_RDを算出する処理の際に使用するサブルーチンの関係となる。
これら記録対象ブロック1bの番号B_WRおよび読み出し対象ブロック1bの番号B_RDを算出するためには、最も古いデータが記録されているブロック1bの番号B_OLDを求める必要がある。
また、このブロックB_OLDを求めるため、最も古いデータが記録されているセクタ1aの番号S_OLDを先に求め、次いでブロック1bの番号B_OLDを算出する。
図12は最も古いデータが記録されているブロック1bの番号B_OLDの算出処理を示すフローチャート(サブルーチン)である。
この図12のフローチャートは後述(図13)の記録対象ブロック1bの番号B_WRおよび読み出し対象ブロック1bの番号B_RDを算出する処理の際に使用するサブルーチンの関係となる。
これら記録対象ブロック1bの番号B_WRおよび読み出し対象ブロック1bの番号B_RDを算出するためには、最も古いデータが記録されているブロック1bの番号B_OLDを求める必要がある。
また、このブロックB_OLDを求めるため、最も古いデータが記録されているセクタ1aの番号S_OLDを先に求め、次いでブロック1bの番号B_OLDを算出する。
図12において、ステップST61では、制御部2は検索対象となるセクタ1aの番号を格納する変数Nを1とおく(N=1)。
ステップST62では、制御部2はN+1番目のセクタ1aの前セクタ消去状態管理領域1fが「消去中」であるかどうかを判断し、「消去中」である場合(ステップST62―Yes)は、ステップST63へ進み、「消去中」でない場合(ステップST62―No)は、ステップST64へ進む。
ステップST63では、制御部2はS_OLDをN+1とおき(S_OLD=N+1)、ステップST71へ進む。このように処理するのは、このセクタ1a内のデータは信頼できないことによる。
ステップST64では、制御部2はN番目セクタ1aの前セクタ消去状態管理領域1fが「消去済」であるかどうかを判断し、「消去済」でない場合(ステップST64―No)は、ステップST65へ進み、「消去済」である場合(ステップST64―Yes)は、ステップST70へ進む。
ステップST62では、制御部2はN+1番目のセクタ1aの前セクタ消去状態管理領域1fが「消去中」であるかどうかを判断し、「消去中」である場合(ステップST62―Yes)は、ステップST63へ進み、「消去中」でない場合(ステップST62―No)は、ステップST64へ進む。
ステップST63では、制御部2はS_OLDをN+1とおき(S_OLD=N+1)、ステップST71へ進む。このように処理するのは、このセクタ1a内のデータは信頼できないことによる。
ステップST64では、制御部2はN番目セクタ1aの前セクタ消去状態管理領域1fが「消去済」であるかどうかを判断し、「消去済」でない場合(ステップST64―No)は、ステップST65へ進み、「消去済」である場合(ステップST64―Yes)は、ステップST70へ進む。
ステップST65では、制御部2は次のセクタ1aについて確認するためNをN+1とおく(N=N+1)。
ステップST66では、制御部2はNがセクタ1aの総数と一致するかについて判断し、一致しない場合(ステップST66―No)は、ステップST62へ戻って確認を継続し、一致する場合(ステップST66―Yes)は、N番目のセクタ1aが物理的に最後のセクタであるためステップST67へ進む。
ステップST67では、制御部2は1番目のセクタ1aの前セクタ消去状態管理領域1fが「消去中」であるかどうかを判断し、「消去中」でない場合(ステップST67―No)は、ステップST68へ進み、「消去中」である場合(ステップST67―Yes)は、ステップST69へ進む。
ステップST68では、制御部2はN番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」であるかどうかを判断し、「消去済」でない場合(ステップST68―No)は、ステップST69へ進み、「消去済」である場合(ステップST68―Yes)は、ステップST70へ進む。
ステップST66では、制御部2はNがセクタ1aの総数と一致するかについて判断し、一致しない場合(ステップST66―No)は、ステップST62へ戻って確認を継続し、一致する場合(ステップST66―Yes)は、N番目のセクタ1aが物理的に最後のセクタであるためステップST67へ進む。
ステップST67では、制御部2は1番目のセクタ1aの前セクタ消去状態管理領域1fが「消去中」であるかどうかを判断し、「消去中」でない場合(ステップST67―No)は、ステップST68へ進み、「消去中」である場合(ステップST67―Yes)は、ステップST69へ進む。
ステップST68では、制御部2はN番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」であるかどうかを判断し、「消去済」でない場合(ステップST68―No)は、ステップST69へ進み、「消去済」である場合(ステップST68―Yes)は、ステップST70へ進む。
ステップST69では、制御部2はS_OLDを1とおき(S_OLD=1)、ステップST71へ進む。このように処理するのは、ステップST67において「消去中」と判断されたこと(ステップST67―Yes)、およびステップST68において「消去済」でない場合(ステップST68―No)は、どのセクタも消去されていないことを示すので、最も古いセクタは1であることによる。
ステップST70では、制御部2はS_OLDをNとおき(S_OLD=N)、ステップST71へ進む。
ステップST71では、ブロック内のデータ長であるDATA_LGTHを読み、BLK_LGTH_N=DATA_LGTH+9とおく。
次にステップST72では、セクタサイズとBLK_LGTH_Nとを比較し、セクタサイズの方が小さいときは、ステップST73にてB_OLDに1加算する。大きいときはステップST74にてS_OLDが1になったか比較し、1になっていないときはステップST75にてS_OLDに1を加算する。
以上の処理を実行することにより、最も古いブロックが記録されているB_OLDが求まる。
ステップST70では、制御部2はS_OLDをNとおき(S_OLD=N)、ステップST71へ進む。
ステップST71では、ブロック内のデータ長であるDATA_LGTHを読み、BLK_LGTH_N=DATA_LGTH+9とおく。
次にステップST72では、セクタサイズとBLK_LGTH_Nとを比較し、セクタサイズの方が小さいときは、ステップST73にてB_OLDに1加算する。大きいときはステップST74にてS_OLDが1になったか比較し、1になっていないときはステップST75にてS_OLDに1を加算する。
以上の処理を実行することにより、最も古いブロックが記録されているB_OLDが求まる。
次に、データ記録の対象となるブロック番号B_WRおよびデータ読出しの対象となるブロック番号B_RDを算出する処理について図13で説明する。
図13はデータ記録対象となるブロック番号B_WRおよびデータ読出対象となるブロック番号B_RDの算出処理を示すフローチャートである。
図13において、ステップST81では、制御部2は上記B_WRおよびB_RDの算出処理に必要であって、最も古いデータが記録されたブロック1bの番号B_OLDを、前記図12で説明したサブルーチンを呼び出し算出する。
ステップST82では、制御部2はブロック状態管理領域1dを確認するブロック1bの番号を格納する変数NをB_OLDとおき(N=B_OLD)、また、B_RDを0とおいて(B_RD=0)初期化する。
図13はデータ記録対象となるブロック番号B_WRおよびデータ読出対象となるブロック番号B_RDの算出処理を示すフローチャートである。
図13において、ステップST81では、制御部2は上記B_WRおよびB_RDの算出処理に必要であって、最も古いデータが記録されたブロック1bの番号B_OLDを、前記図12で説明したサブルーチンを呼び出し算出する。
ステップST82では、制御部2はブロック状態管理領域1dを確認するブロック1bの番号を格納する変数NをB_OLDとおき(N=B_OLD)、また、B_RDを0とおいて(B_RD=0)初期化する。
ステップST83では、制御部2はN番目ブロック1bのブロック状態管理領域1dの記録データが「記録済」、「記録中」または「未記録」のいずれの状態であるかを判断し、「記録済」であれば、N番目のブロック1bは読出し可能なデータが記録されているのでステップST84進み、「記録中」であれば、記録データは正常なデータではないのでステップST85進み、また、「未記録」であれば、N番目のブロック1bにデータを記録することが可能なのでステップST89進む。
ステップST84では、制御部2はB_RDをN(B_RD=N)とおき、ステップST65へ進む。
ステップST85では、制御部2は次のブロック1bのブロック状態管理領域1dを確認するため、NをN+1とおく(N=N+1)。
ステップST84では、制御部2はB_RDをN(B_RD=N)とおき、ステップST65へ進む。
ステップST85では、制御部2は次のブロック1bのブロック状態管理領域1dを確認するため、NをN+1とおく(N=N+1)。
ステップST86では、制御部2はステップST85で設定したNが全ブロックの総数(本例では16ブロック)を超えているかについて判断し、超えている場合(ステップST86―Yes)は、ステップST87へ進み、超えていない場合(ステップST86―No)は、ステップST88へ進む。
ステップST87では、制御部2はNを1とおく(N=1)。
ステップST88では、制御部2は、全てのブロック1bに対しステップST83以降ステップST87までの処理について検索を完了したかについて確認するためにNとB_OLDとが一致(N=B_OLD)するかについて判断し、NとB_OLDとが一致していない場合(ステップST88―No)は、全てのブロック1bに対する検索が完了していないのでステップST83へ戻って処理を継続し、一致している場合(ステップST88―Yes)は、全てのブロック1bにデータが記録されていることを示す。この場合、ステップST89へ進む。
ステップST89では、制御部2はB_WRをNとおき(B_WR=N)、この算出処理を終了する。
ステップST87では、制御部2はNを1とおく(N=1)。
ステップST88では、制御部2は、全てのブロック1bに対しステップST83以降ステップST87までの処理について検索を完了したかについて確認するためにNとB_OLDとが一致(N=B_OLD)するかについて判断し、NとB_OLDとが一致していない場合(ステップST88―No)は、全てのブロック1bに対する検索が完了していないのでステップST83へ戻って処理を継続し、一致している場合(ステップST88―Yes)は、全てのブロック1bにデータが記録されていることを示す。この場合、ステップST89へ進む。
ステップST89では、制御部2はB_WRをNとおき(B_WR=N)、この算出処理を終了する。
また、全てのブロック1bにおいて「記録中」または「記録済」の場合はB_WRがB_OLDになるが、実際にデータ記録が行われるまでにセクタ1aのデータ消去が行われることを想定し、データ記録時に処理を行う。このときのデータ記録処理は以下のように行う。
制御部2はセクタ1aのデータ消去の処理中であれば、このデータ消去を中断する処理を行った後、記録を行うB_WR番目のブロック1bのブロック状態管理領域1dが「未記録」であることを確認する。この確認において「未記録」であれば、制御部2は前記図7で説明したデータ記録の処理を行ない、「未記録」でなければデータを記録することが4できないので制御部2はエラーを出力し、このデータ記録の処理を終了する。
制御部2はセクタ1aのデータ消去の処理中であれば、このデータ消去を中断する処理を行った後、記録を行うB_WR番目のブロック1bのブロック状態管理領域1dが「未記録」であることを確認する。この確認において「未記録」であれば、制御部2は前記図7で説明したデータ記録の処理を行ない、「未記録」でなければデータを記録することが4できないので制御部2はエラーを出力し、このデータ記録の処理を終了する。
以上のように、この実施の形態1によれば、フラッシュメモリ1が有する複数のセクタ1aそれぞれを複数のブロック1bに分割し、これら複数のセクタ全体に亘るブロック1bのデータ記録領域1cに対し環状の順序にてデータを記録し、記録データはセクタ1a内の全ブロック1bが記録済みとなった後にセクタ単位で一括消去するように構成したので、セクタ1aより記憶容量の小さいブロック1bの単位で情報データを記録するとともに記録位置が環状の順序でずれていくこととなり、また、セクタ単位での記録データの一括消去により、セクタ1a当たりの消去回数に上限のある不揮発性メモリのセクタ当たりのデータ書換え可能回数を実質的に増加し、このデータ書換えの回数との関係においてデータ消去回数を実質的に減少する。これにより、フラッシュメモリ1の寿命を延ばすことができる。即ち、一つのセクタ内を分割数nのブロックに分割した場合、データ書換え回数は従来に比しn倍に増加し、データ消去の回数はデータ書換え回数との関係において1/nとなる。従って、図1のように、一つのセクタ1a(1)をブロック1b(1)からブロック1b(4)に4分割した場合、データ書換え回数は従来に比し4倍に増加し、データ消去の回数はデータ書換え回数との関係において1/4となる。
また、ブロック長管理領域1eを設け、この管理領域にデータ記録領域1cへ記録したデータ量をブロック長として記録するように構成したので(図7・ST3)、記録したデータ量が容易に検知でき、情報記録の精度を向上することができる。
また、ブロック状態管理領域1dを設け、この管理領域に「未記録」、「記録中」または「記録済み」等のデータ記録の状態を記録するように構成したので、更新データの記録が中断されたかどうか等のデータ記録の状態(信頼性)を検知することができ、情報記録の精度を向上することができる。
また、遷移状態(データ量)に対応させてブロック1bのデータ記録領域1cを大きくまたは小さくするように変更する構成としたので(図7・ST7)、必要なパラメータまたは情報のみを記録することとなり、データ記録領域1cに冗長な領域の発生を防止し、これにより、セクタ1a内のブロック1bの数の増加へつなげることができ、書換え回数の増加、この書換え回数との関係においてデータ消去回数の減少が可能となる。
また、ブロック状態管理領域1dを設け、この管理領域に「未記録」、「記録中」または「記録済み」等のデータ記録の状態を記録するように構成したので、更新データの記録が中断されたかどうか等のデータ記録の状態(信頼性)を検知することができ、情報記録の精度を向上することができる。
また、遷移状態(データ量)に対応させてブロック1bのデータ記録領域1cを大きくまたは小さくするように変更する構成としたので(図7・ST7)、必要なパラメータまたは情報のみを記録することとなり、データ記録領域1cに冗長な領域の発生を防止し、これにより、セクタ1a内のブロック1bの数の増加へつなげることができ、書換え回数の増加、この書換え回数との関係においてデータ消去回数の減少が可能となる。
また、データの読出しから記録までの間に記録データを一括消去するように構成したので(図11・ST43)、電源切断時に更新データを記録するシステムにおいて、フラッシュメモリ1の所要のブロック1bよりデータを読み出した後に前もってデータ消去が行われ、この結果、電源切断時のデータ消去が省略され、フラッシュメモリ1の所要のブロック1bに対し更新データの記録だけを実施すればよく、緊急時においても短い時間でデータ更新処理を実施することができ、データ処理の効率を改善することができる。
また、消去対象となるセクタと論理的に接続される後続の他のセクタ1aに属するブロック1bのデータ記録領域1cに情報データが記録されるまでは前記消去対象となるセクタ1aの記録データを消去しない、換言すれば、次のブロック1bのデータ記録領域1cに情報データが記録されてからセクタ消去を行うように構成したので(図11・ST44)、必ず最新のデータを消失することなく残すことができる。
また、消去対象となるセクタと論理的に接続される後続の他のセクタ1aに属するブロック1bのデータ記録領域1cに情報データが記録されるまでは前記消去対象となるセクタ1aの記録データを消去しない、換言すれば、次のブロック1bのデータ記録領域1cに情報データが記録されてからセクタ消去を行うように構成したので(図11・ST44)、必ず最新のデータを消失することなく残すことができる。
また、ブロック状態管理領域1dおよび前セクタ消去状態管理領域1fそれぞれの記録データを基に、データ記録の対象となるブロック1bの位置(B_WR)、データ読み出しの対象となるブロック1bの位置(B_RD)および消去対象となるセクタ1fの位置(S_ER)を算出するように構成したので(図9,13)、装置への電力供給が完全に遮断された場合であっても、別途データ記録位置と読み出し位置およびセクタ消去位置を管理することなく、最新のデータ記録位置、読み出し位置およびセクタ消去位置を確実に特定することができる。
また、セクタ消去が中断された場合であっても必ず消去対象セクタ(S_ER)を特定でき、また、データ記録が途中で中断された場合であっても、不完全なデータを読み出すことなく、最新の正常なデータを読み出すことが可能になる。
また、セクタ消去が中断された場合であっても必ず消去対象セクタ(S_ER)を特定でき、また、データ記録が途中で中断された場合であっても、不完全なデータを読み出すことなく、最新の正常なデータを読み出すことが可能になる。
1 フラッシュメモリ、1a セクタ、1b ブロック、1c データ記録領域、1d ブロック状態管理領域、1e ブロック長管理領域、1f 前セクタ消去状態管理領域、2 制御部、3 インターフェース。
Claims (5)
- データ消去の単位となるセクタを複数有し、これら複数のセクタそれぞれは複数のブロックに分割し、該複数のブロックそれぞれには情報データを記録するデータ記録領域と該データ記録領域へ記録したデータ量をブロック長として記録するブロック長管理領域およびブロックへのデータ記録の状態を記録するブロック状態管理領域とを有するとともに、前記複数のセクタそれぞれには一つ前のセクタのデータ消去の状態を記録する前セクタ消去状態管理領域が設けられてなる不揮発性メモリと、
前記ブロック長管理領域とブロック状態管理領域および前セクタ消去状態管理領域それぞれに対し前記ブロック長または状態を記録するとともに、これら記録データを基に前記複数のセクタ全体に亘るブロックのデータ記録領域に対し環状の順序に従ったデータの記録と、記録データの読出しおよびセクタごとの記録データの一括消去、さらに、前記ブロック長管理領域とブロック状態管理領域および前セクタ消去状態管理領域それぞれの記録データを更新するように前記不揮発性メモリを制御する制御部とを備えた情報記録読出装置。 - 制御部は、ブロック長に応じてブロックのデータ記録領域を大きくまたは小さくするように変更することを特徴とする請求項1記載の情報記録読出装置。
- 制御部は、データの読出しから記録までの間にセクタごとに記録データを一括消去することを特徴とする請求項1または請求項2記載の情報記録読出装置。
- 制御部は、消去対象となるセクタと論理的に接続される後続の他のセクタに属するブロックのデータ記録領域に情報データが記録されるまでは、前記消去対象となるセクタの記録データを消去しないことを特徴とする請求項1または請求項2記載の情報記録読出装置。
- 制御部は、ブロック状態管理領域および前セクタ消去状態管理領域それぞれの記録データを基に、データ記録の対象となるブロックの位置、データ読み出しの対象となるブロックの位置および消去対象となるセクタの位置を算出することを特徴とする請求項1または請求項2記載の情報記録読出装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005358061A JP2007164364A (ja) | 2005-12-12 | 2005-12-12 | 情報記録読出装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005358061A JP2007164364A (ja) | 2005-12-12 | 2005-12-12 | 情報記録読出装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007164364A true JP2007164364A (ja) | 2007-06-28 |
Family
ID=38247200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005358061A Pending JP2007164364A (ja) | 2005-12-12 | 2005-12-12 | 情報記録読出装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007164364A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293621A (zh) * | 2016-08-01 | 2017-01-04 | 飞天诚信科技股份有限公司 | 一种固件升级方法及装置 |
CN112817527A (zh) * | 2021-01-21 | 2021-05-18 | 深圳市显控科技股份有限公司 | 掉电数据存储方法、单片机及计算机可读存储介质 |
CN112817527B (zh) * | 2021-01-21 | 2024-06-04 | 深圳市显控科技股份有限公司 | 掉电数据存储方法、单片机及计算机可读存储介质 |
-
2005
- 2005-12-12 JP JP2005358061A patent/JP2007164364A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293621A (zh) * | 2016-08-01 | 2017-01-04 | 飞天诚信科技股份有限公司 | 一种固件升级方法及装置 |
CN106293621B (zh) * | 2016-08-01 | 2019-02-15 | 飞天诚信科技股份有限公司 | 一种固件升级方法及装置 |
CN112817527A (zh) * | 2021-01-21 | 2021-05-18 | 深圳市显控科技股份有限公司 | 掉电数据存储方法、单片机及计算机可读存储介质 |
CN112817527B (zh) * | 2021-01-21 | 2024-06-04 | 深圳市显控科技股份有限公司 | 掉电数据存储方法、单片机及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7716422B2 (en) | Storage apparatus and method for using a non-volatile cache memory organized into stationary and non-stationary circular regions | |
JP4922434B2 (ja) | データライト制御装置及びデータライト制御方法 | |
JP2000305860A (ja) | 情報記憶システム及び同システムに於ける記憶制御方法 | |
JP2005537609A (ja) | データを記憶するための不揮発性メモリを備えた記憶システム | |
JP2005538491A (ja) | 欠陥管理方法及びその装置 | |
KR20060099429A (ko) | 복합형 기억 장치, 데이터 처리 방법 및 프로그램 | |
KR20070013222A (ko) | 복합형 기억 장치, 데이터 기입 방법 및 프로그램 | |
TW200307914A (en) | Information recording method and apparatus, information processing apparatus, information recording system and computer-readable storage medium | |
JP2004146018A5 (ja) | ||
WO2006030566A1 (ja) | フラッシュメモリの情報記録読出装置 | |
JP4736594B2 (ja) | 複合型記憶装置、データ書込方法及びプログラム | |
JP2007164364A (ja) | 情報記録読出装置 | |
US20090028012A1 (en) | Removable medium recording/reproducing device recording/reproducing operation inhibiting method, recording operation inhibiting method, firmware update method, and file containing the firmware | |
JP2005339622A (ja) | 記録管理情報記録方法および情報記録装置および情報記録媒体 | |
JP4919983B2 (ja) | データ記憶装置及びデータ記憶装置におけるデータ管理方法 | |
JP4078560B2 (ja) | 光ディスク記録システム | |
JPH0785603A (ja) | 情報記録媒体 | |
KR20090081401A (ko) | 광학 디스크 시스템 및 다운로드 컨텐츠 저장 방법 | |
CN106463147B (zh) | 信息记录方法、信息记录装置以及信息记录介质 | |
JP2005062981A (ja) | 光ディスク再生装置 | |
JP4972064B2 (ja) | 光ディスク駆動制御装置 | |
JP4701186B2 (ja) | ディスク記憶媒体においてデータを更新する方法および装置 | |
JP2007052914A (ja) | ディスクドライブ装置、および記録ディスクのローディング制御方法 | |
JPH09198846A (ja) | 光磁気記録装置 | |
JP4369455B2 (ja) | 光ディスク装置、光ディスクのフォーマット方法、および光ディスク |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071003 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080626 |