JP2006085596A - 情報記録読出装置 - Google Patents
情報記録読出装置 Download PDFInfo
- Publication number
- JP2006085596A JP2006085596A JP2004271918A JP2004271918A JP2006085596A JP 2006085596 A JP2006085596 A JP 2006085596A JP 2004271918 A JP2004271918 A JP 2004271918A JP 2004271918 A JP2004271918 A JP 2004271918A JP 2006085596 A JP2006085596 A JP 2006085596A
- Authority
- JP
- Japan
- Prior art keywords
- data
- recording
- recorded
- sector
- management area
- 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
- 238000000034 method Methods 0.000 claims description 136
- 125000004122 cyclic group Chemical group 0.000 claims description 12
- 238000007796 conventional method Methods 0.000 abstract description 2
- 238000012217 deletion Methods 0.000 abstract 1
- 230000037430 deletion Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
- G11C16/105—Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
【課題】 情報記録読出装置において、データ記録の精度を向上し、且つ、長期寿命を可能にする
【解決手段】 フラッシュメモリ1を形成する複数のセクタ1a各々を複数のブロック1bに分割し、これら複数のブロック1b各々にはデータ記録領域1cとこのデータ記録領域1cにデータを未記録、記録中または記録済かを示すデータを記録したブロック状態管理領域1dを設ける。これら「記録済」または「記録中」により、記録されているデータが信頼できるかどうかを容易に判断でき、データ記録の精度を向上する。また、複数のブロック1bに分割することにより、セクタ1a当たりのデータ書換回数は従来に比しN倍に増へ、消去回数は1/Nとなり、フラッシュメモリ1の寿命を延ばす。
【選択図】 図1
【解決手段】 フラッシュメモリ1を形成する複数のセクタ1a各々を複数のブロック1bに分割し、これら複数のブロック1b各々にはデータ記録領域1cとこのデータ記録領域1cにデータを未記録、記録中または記録済かを示すデータを記録したブロック状態管理領域1dを設ける。これら「記録済」または「記録中」により、記録されているデータが信頼できるかどうかを容易に判断でき、データ記録の精度を向上する。また、複数のブロック1bに分割することにより、セクタ1a当たりのデータ書換回数は従来に比しN倍に増へ、消去回数は1/Nとなり、フラッシュメモリ1の寿命を延ばす。
【選択図】 図1
Description
この発明はフラッシュメモリ等に代表される不揮発性メモリに対するデータの記録、読出しおよび消去を行う情報記録読出装置に関するものである。
フラッシュメモリ等に代表される不揮発性メモリは電源切断後も記録内谷を保持できるという特徴を有し、この特徴を利用して電源切断直前の設定状態を記録するとともに電源切断後もこの記録内容を保持し、電源再投入時には電源切断時の設定状態を入手し設定するという使用方法が考えられ、近年では、DVD(Digital Versatile Disc)プレーヤ等の様々な電子情報機器においてこのような使用方法が採用されている。このフラッシュメモリは、データ記録領域の一部を形成しデータ消去の単位となるセクタを複数有している。また、このフラッシュメモリの場合、1が設定されているビットを0にする場合はビット単位で行なうのに対し、0が設定されているビットを1に設定するにはセクタ単位で行なう(セクタ消去という)必要がある。
従来、あるセクタに記録されているデータを更新する場合には、そのセクタに記録されているデータを消去した後、この同一のセクタに更新されたデータを記録するという方法がとられてきた。しかし、この方法ではセクタのデータ消去中またはデータ書き込み中に電源が切断された場合、データが完全に失われてしまうという問題点があった。
この問題に対処した従来の情報記録読出装置として、例えば以下のものがある。
従来、あるセクタに記録されているデータを更新する場合には、そのセクタに記録されているデータを消去した後、この同一のセクタに更新されたデータを記録するという方法がとられてきた。しかし、この方法ではセクタのデータ消去中またはデータ書き込み中に電源が切断された場合、データが完全に失われてしまうという問題点があった。
この問題に対処した従来の情報記録読出装置として、例えば以下のものがある。
上記従来例はデータ書込みが特定のメモリブロックに偏ることなく、且つ、データ書込み中に処理が中断した際のデータ消失の防止を目的としたブロック消去形フラッシュメモリを使用した情報記録読出装置に関し、このブロック消去形フラッシュメモリにおいて、複数のメモリブロック各々はデータ書込み領域(エリア)と管理ステータス書込み領域とを有し、この管理ステータス書込み領域には書込データ特定データIDとデータ書込メモリブロックの消去回数を示す消去カウンタと同一データIDで書込データの時系列的順番を示す書込みステータスとが書込まれ、プロセッサで新たなデータを書込む際には、書込みステータスが書込み可能を示し、且つ、消去カウンタが最小を示すメモリブロックを消去した後に、新たなデータおよび管理ステータスを書込み、他のメモリブロック内の同一データIDを含む管理ステータスを更新するようにする(例えば、特許文献1参照)。
従来の情報記録読出装置は以上のように構成されており、書込みステータスの更新を一連のデータ記録(書込み)処理の最後に行なうため、データ記録処理の途中で電源が切断された場合、データは残っているがそのデータが電源切断時のものか、または1回前に記録したデータであるか判別できないという問題があった。
また、セクタのデータ消去はデータ記録と比較して非常に時間がかかり、データ書換時に消去を行なう前記従来例を含む従来の方法では、電力供給停止による電圧降下を検知してデータ記録を行なう構成のためにセクタのデータ消去とデータ記録とを行なう期間電力を維持することが困難となり、これにより、データ書換えが正常に行われないという問題があった。
一方、フラッシュメモリ等に代表される不揮発性メモリはセクタ当たりのデータ消去回数に上限値が存在し、使用に限度(寿命)がある。従って、このように使用限度のある不揮発性メモリを使用した情報記録読出装置としては長期寿命を可能にする手段を備えていることが必要となる。
また、セクタのデータ消去はデータ記録と比較して非常に時間がかかり、データ書換時に消去を行なう前記従来例を含む従来の方法では、電力供給停止による電圧降下を検知してデータ記録を行なう構成のためにセクタのデータ消去とデータ記録とを行なう期間電力を維持することが困難となり、これにより、データ書換えが正常に行われないという問題があった。
一方、フラッシュメモリ等に代表される不揮発性メモリはセクタ当たりのデータ消去回数に上限値が存在し、使用に限度(寿命)がある。従って、このように使用限度のある不揮発性メモリを使用した情報記録読出装置としては長期寿命を可能にする手段を備えていることが必要となる。
この発明は上記のような課題を解決するためになされたもので、データ記録の精度を向上するとともに、長期寿命を可能にする手段を備えた情報記録読出装置を得ることを目的とする。
この発明に係る情報記録読出装置は、複数のセクタ各々を分割したものであってデータ記録領域とこのデータ記録領域にデータを未記録、記録中または記録済かを示すブロック状態管理領域とを有する複数のブロックと、前記複数のセクタ全体のデータ記録状態を示すデータ記録状態管理領域とを有する不揮発性メモリと、前記データ記録状態管理領域の記録データ、または、ブロック状態管理領域およびデータ記録状態管理領域の記録データを基に前記セクタ全体に亘る複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データを読出し、記録データをセクタごとに一括消去、さらに、前記ブロック状態管理領域およびデータ記録状態管理領域それぞれの記録データを更新するように前記不揮発性メモリを制御する制御部とを備えたものである。
この発明によれば、複数のセクタにより形成される不揮発性メモリには、これら複数のセクタ各々を分割したものであってデータ記録領域とこのデータ記録領域にデータを未記録、記録中または記録済かを示すブロック状態管理領域とを有する複数のブロックと、前記複数のセクタ全体のデータ記録状態を示すデータ記録状態管理領域とを設け、制御部は前記データ記録状態管理領域の記録データ、または、前記ブロック状態管理領域およびデータ記録状態管理領域の記録データを基に前記セクタ全体に亘る複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データを読出し、記録データをセクタごとに一括消去、さらに、前記ブロック状態管理領域およびデータ記録状態管理領域それぞれの記録データを更新するように前記不揮発性メモリを制御するように構成したので、前記ブロック状態管理領域が示す「記録済」、またはこの「記録済」に至ることなくデータ記録が中断し、結果として不完全なデータであると判断される「記録中」により、制御部はそのブロックに記録されているデータが信頼できるかどうかを容易に判断することができ、データ記録の精度を向上することができる
また、制御部は「記録中」を示すブロックの記録データをそれ以前のブロックの「記録済」の記録データを利用して修復し、最新に近い状態のデータを復帰することにより、データ記録の精度を向上することができる。
また、各セクタを複数のブロックに分割し、セクタ全体に亘るこれら複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データの消去はセクタごとに一括消去する構成により、例えば各セクタをブロック数Nに分割した場合、セクタ当たりのデータ書換回数を従来に比してN倍に増やす一方、消去回数は従来に比して(1/N)となり、セクタ当たりのデータ消去回数に限度(寿命)のあるフラッシュメモリの寿命を延ばすことができる。また、複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するので、この記録データの消去が従来のように特定のセクタに集中することなく均等化され、これにより、フラッシュメモリの寿命の長期化に寄与し、信頼性を向上することができる。
また、各セクタを複数のブロックに分割し、セクタ全体に亘るこれら複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データの消去はセクタごとに一括消去する構成により、例えば各セクタをブロック数Nに分割した場合、セクタ当たりのデータ書換回数を従来に比してN倍に増やす一方、消去回数は従来に比して(1/N)となり、セクタ当たりのデータ消去回数に限度(寿命)のあるフラッシュメモリの寿命を延ばすことができる。また、複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するので、この記録データの消去が従来のように特定のセクタに集中することなく均等化され、これにより、フラッシュメモリの寿命の長期化に寄与し、信頼性を向上することができる。
以下、この発明の実施の一形態を説明する。
実施の形態1.
図1はこの発明の実施の形態1による情報記録読出装置の構成図である。
図1において、この情報記録読出装置は不揮発性メモリとしてフラッシュメモリ1を使用し、このフラッシュメモリ1を制御部2がインタフェース3を介し制御する構成としている。
実施の形態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ブロックから成るとした例である。これらブロック1b(1)からブロック1b(16)の各ブロックはデータ記録領域1cとブロック状態管理領域1dとを有し、データ記録領域1cには情報データが記録(格納)される。この場合、各ブロック1bのデータ記録領域1cへのデータ記録はブロック1b(1)からブロック1b(16)に対し循環状の順序にて記録される。
また、ブロック状態管理領域1dはそのブロック状態管理領域1dが属するブロック1bへのデータ記録の状態を示すデータを記録する領域であり、そのブロック1bのデータ記録領域1cにデータが未記録、記録中または記録済かを示すデータが記録される。
また、ブロック状態管理領域1dはそのブロック状態管理領域1dが属するブロック1bへのデータ記録の状態を示すデータを記録する領域であり、そのブロック1bのデータ記録領域1cにデータが未記録、記録中または記録済かを示すデータが記録される。
図2は上記ブロック状態管理領域1dに記録されるデータとそのデータが示す状態の説明図である。
図2において、11はブロック状態管理領域1dの記録データ(内容)、12はその記録データが示すブロック1bの状態である。
記録データが「111」の場合は「未記録」の状態であり、そのブロック1bのデータ記録領域1cにデータが記録されていないことを示す。
記録データが「011」の場合は「記録中」の状態であり、データ記録領域1cにデータが記録中であることを示す。また、この「記録中」の状態はそのデータ記録領域1cに記録されているデータが不完全なデータであることを示す。
記録データが「001」の場合は「記録済」の状態であり、データ記録領域1cにデータ記録が完了したことを示し、また、記録データが正常であることを示す。
図2において、11はブロック状態管理領域1dの記録データ(内容)、12はその記録データが示すブロック1bの状態である。
記録データが「111」の場合は「未記録」の状態であり、そのブロック1bのデータ記録領域1cにデータが記録されていないことを示す。
記録データが「011」の場合は「記録中」の状態であり、データ記録領域1cにデータが記録中であることを示す。また、この「記録中」の状態はそのデータ記録領域1cに記録されているデータが不完全なデータであることを示す。
記録データが「001」の場合は「記録済」の状態であり、データ記録領域1cにデータ記録が完了したことを示し、また、記録データが正常であることを示す。
このとき、1を0にする場合はビット単位で行なえるので、「未記録」を「記録中」または「記録済」に変更でき、「記録中」は「記録済」に変更することが可能である。
一方、「記録中」または「記録済」を「未記録」にするためにはセクタ消去を行なう。
また、4つのセクタ1aと独立して記録消去位置管理領域1eが設けられ、データを記録するブロック1bの番号(B_WR)のデータ、最新データが記録されており、データ読出しの対象となるブロック1bの番号(B_RD)のデータおよび使用済みとなりデータ消去の対象となったセクタ1aの番号(S_ER)のデータが記録される。なお,これら番号のデータを記録する際、メモリ上の特定のセルに対応するビットの記録消去回数が増加しないように考慮しておく。また、B_RD、S_ERの初期値としていずれも0に対応する値を記録しておく。
上記記録消去位置管理領域1eは、セクタ1からセクタ4の4つのセクタ1a全体におけるデータの記録状態を示すデータを記録するデータ記録状態管理領域を形成する。
一方、「記録中」または「記録済」を「未記録」にするためにはセクタ消去を行なう。
また、4つのセクタ1aと独立して記録消去位置管理領域1eが設けられ、データを記録するブロック1bの番号(B_WR)のデータ、最新データが記録されており、データ読出しの対象となるブロック1bの番号(B_RD)のデータおよび使用済みとなりデータ消去の対象となったセクタ1aの番号(S_ER)のデータが記録される。なお,これら番号のデータを記録する際、メモリ上の特定のセルに対応するビットの記録消去回数が増加しないように考慮しておく。また、B_RD、S_ERの初期値としていずれも0に対応する値を記録しておく。
上記記録消去位置管理領域1eは、セクタ1からセクタ4の4つのセクタ1a全体におけるデータの記録状態を示すデータを記録するデータ記録状態管理領域を形成する。
制御部2はフラッシュメモリ1の前記記録消去位置管理領域1eの記録データを基に、フラッシュメモリ1に対してデータの記録と読出しを行なう位置の特定、特定した位置へのデータの記録と読出制御、データ消去対象セクタ1aの特定、特定したセクタ1aのデータ消去および消去中断制御等を行なう他に、ブロック状態管理領域1dおよび記録消去位置管理領域1e各々の記録データの更新等を行なう。
また、データ記録はセクタ1a全体に亘るブロック1b(1)からブロック1b(16)のデータ記録領域に対し循環状の順序にてデータ記録するようにフラッシュメモリ1を制御する。
また、上記制御に関する各種判断および演算等の処理を行う。
以上説明の制御部2はCPU(中央処理装置)およびメモリ等、または、マイクロコンピュータ等で構成される。
インタフェース3はフラッシュメモリ1と制御部2とを制御可能に接続する。
また、データ記録はセクタ1a全体に亘るブロック1b(1)からブロック1b(16)のデータ記録領域に対し循環状の順序にてデータ記録するようにフラッシュメモリ1を制御する。
また、上記制御に関する各種判断および演算等の処理を行う。
以上説明の制御部2はCPU(中央処理装置)およびメモリ等、または、マイクロコンピュータ等で構成される。
インタフェース3はフラッシュメモリ1と制御部2とを制御可能に接続する。
次に、データ記録の処理について図3をもとに説明する。
図3は制御部2によるフラッシュメモリ1に対するデータ記録の制御処理を示すフローチャートである。
以下、図1に示すフラッシュメモリ1のブロック1b(1)からブロック1b(16)中のB_WR番目のブロック1bのデータ記録領域1cにデータを記録するときの処理について説明する。
図3において、ステップST1では、制御部2はデータ記録を行なうブロック1bの番号B_WRをフラッシュメモリ1の記録消去位置管理領域1eより取得する。
ステップST2では、制御部2はフラッシュメモリ1のB_WR番目のブロック1bに設けられているブロック状態管理領域1dの記録データを「記録中」に設定する。
ステップST3では、制御部2はデータをB_WR番目のブロック1bのデータ記録領域1cに記録する。
なお、記録データは制御部2が設定入力手段等(図示せず)からの設定入力に従い被設定回路(図示せず)に対し設定することから、この制御部2が保有していることとなる。
図3は制御部2によるフラッシュメモリ1に対するデータ記録の制御処理を示すフローチャートである。
以下、図1に示すフラッシュメモリ1のブロック1b(1)からブロック1b(16)中のB_WR番目のブロック1bのデータ記録領域1cにデータを記録するときの処理について説明する。
図3において、ステップST1では、制御部2はデータ記録を行なうブロック1bの番号B_WRをフラッシュメモリ1の記録消去位置管理領域1eより取得する。
ステップST2では、制御部2はフラッシュメモリ1のB_WR番目のブロック1bに設けられているブロック状態管理領域1dの記録データを「記録中」に設定する。
ステップST3では、制御部2はデータをB_WR番目のブロック1bのデータ記録領域1cに記録する。
なお、記録データは制御部2が設定入力手段等(図示せず)からの設定入力に従い被設定回路(図示せず)に対し設定することから、この制御部2が保有していることとなる。
ステップST4では、制御部2はデータ記録が完了した場合、B_WR番目ブロック1bのブロック状態管理領域1dの記録データを「記録済」に設定する。
ステップST5では、制御部2はB_WR番目のブロック1bに最新のデータが記録されたので、記録消去位置管理領域1eのデータ読出し対象となるブロック番号(B_RD)のデータをB_WR番目ブロックの番号データへ更新する(B_RD=B_WR番目)。
ステップST6では、制御部2は次回のデータ記録位置を1つ進めるために記録消去位置管理領域1eのB_WRの番号データをB_WR番目+1に更新する(B_WR=B_WR番目+1)。
ステップST7では、制御部2はステップST6で更新した「B_WR=B_WR番目+1」がブロック1bの総数(本例では16ブロック)を超えているかについて判断し、ブロック1bの総数を超えている場合(ステップST7−Yes)は、ステップST8へ進み、ブロック1bの総数を超えていない場合(ステップST7−No)は、データ記録処理を終了する。
ステップST5では、制御部2はB_WR番目のブロック1bに最新のデータが記録されたので、記録消去位置管理領域1eのデータ読出し対象となるブロック番号(B_RD)のデータをB_WR番目ブロックの番号データへ更新する(B_RD=B_WR番目)。
ステップST6では、制御部2は次回のデータ記録位置を1つ進めるために記録消去位置管理領域1eのB_WRの番号データをB_WR番目+1に更新する(B_WR=B_WR番目+1)。
ステップST7では、制御部2はステップST6で更新した「B_WR=B_WR番目+1」がブロック1bの総数(本例では16ブロック)を超えているかについて判断し、ブロック1bの総数を超えている場合(ステップST7−Yes)は、ステップST8へ進み、ブロック1bの総数を超えていない場合(ステップST7−No)は、データ記録処理を終了する。
ステップST8では、制御部2は循環状に1番目セクタ(セクタ1)のブロック1bを指定するようにするため、ステップST6で更新した「B_WR=B_WR番目+1」を修正して「B_WR=1」に更新し、データ記録処理を終了する。
上記各ステップを経てデータ記録処理を終了するのに対し、ステップST2において「記録中」に設定後、例えば電源切断等によりステップST4の「記録済」の処理に至らないでデータ記録処理を終了した場合、制御部2はB_WR番目ブロック1bのブロック状態管理領域1dの記録データを「記録中」で保持する。これにより、B_WR番目ブロック1bに記録されているデータは不完全なデータであることを示すこととなる。この「記録中」でデータ記録処理を終了した場合の制御部2の対処については後述のデータ読出しの処理において説明する。
上記各ステップを経てデータ記録処理を終了するのに対し、ステップST2において「記録中」に設定後、例えば電源切断等によりステップST4の「記録済」の処理に至らないでデータ記録処理を終了した場合、制御部2はB_WR番目ブロック1bのブロック状態管理領域1dの記録データを「記録中」で保持する。これにより、B_WR番目ブロック1bに記録されているデータは不完全なデータであることを示すこととなる。この「記録中」でデータ記録処理を終了した場合の制御部2の対処については後述のデータ読出しの処理において説明する。
以上の説明のように、記録するブロック1bの位置を循環状の順序でずらしながらデータ記録を行なうことにより1つのセクタ1aには分割ブロック数N(複数)の回数についてデータを記録することができので、セクタ1a当たりのデータ書換回数をN倍に増やすことができる。また、ブロック1bのデータ記録状態をブロック状態管理領域1cに書き込むので、そのブロック1bに記録されているデータが信頼できるかどうかを容易に知ることができる。
以上がデータ記録の処理である。
以上がデータ記録の処理である。
次に、データ読出しの処理について図4をもとに説明する。
図4は制御部2によるフラッシュメモリ1に対するデータ読出しの制御処理を示すフローチャートである。
以下、図1に示すフラッシュメモリ1のブロック1b(1)からブロック1b(16)中で最新のデータが記録されているB_RD番目のブロック1bからデータを読み出す場合の処理について説明する。
図4において、ステップST11では、制御部2はデータを読み出すブロック1bの番号B_RDをフラッシュメモリ1の記録消去位置管理領域1eより取得する。
ステップST12では、制御部2はステップST11で取得したブロック番号B_RDが0(B_RD=0)か否かを判断し、「B_RD=0」であれば(ステップST12−Yes)、ステップST13へ進み、「B_RD=0」でなければ(ステップST12−No)、ステップST14へ進む。
図4は制御部2によるフラッシュメモリ1に対するデータ読出しの制御処理を示すフローチャートである。
以下、図1に示すフラッシュメモリ1のブロック1b(1)からブロック1b(16)中で最新のデータが記録されているB_RD番目のブロック1bからデータを読み出す場合の処理について説明する。
図4において、ステップST11では、制御部2はデータを読み出すブロック1bの番号B_RDをフラッシュメモリ1の記録消去位置管理領域1eより取得する。
ステップST12では、制御部2はステップST11で取得したブロック番号B_RDが0(B_RD=0)か否かを判断し、「B_RD=0」であれば(ステップST12−Yes)、ステップST13へ進み、「B_RD=0」でなければ(ステップST12−No)、ステップST14へ進む。
ステップST13では、制御部2は初期値を読み出してデータ読出しの処理を終了する。
「B_RD=0」であれば、まだフラッシュメモリ1に読み出し可能なデータが記録されていないので初期値を読み出すものである。なお、この初期値はフラッシュメモリ1の記録消去位置管理領域1eに予め記録しておく。
ステップST14では、制御部2はB_RD番目のブロック1bからデータを読み出してデータ読出しの処理を終了する。
このステップST14において、制御部2が読み出したB_RD番目ブロック1bのブロック状態管理領域1dの記録データが「記録済」であれば上記B_RD番目ブロック1bのデータは正常なデータである。これに対し、このブロック状態管理領域1dの記録データが不完全なデータであることを示す「記録中」である場合、制御部2は上記B_RD番目ブロック1bの1つまたはそれ以上前のブロック1bにおける記録データを読み出し、このデータをもとに、上記B_RD番目ブロック1bの不完全なデータを最新に近い状態のデータに復帰させるように修復制御するようにしてもよい。
以上がデータ読出しの処理である。
「B_RD=0」であれば、まだフラッシュメモリ1に読み出し可能なデータが記録されていないので初期値を読み出すものである。なお、この初期値はフラッシュメモリ1の記録消去位置管理領域1eに予め記録しておく。
ステップST14では、制御部2はB_RD番目のブロック1bからデータを読み出してデータ読出しの処理を終了する。
このステップST14において、制御部2が読み出したB_RD番目ブロック1bのブロック状態管理領域1dの記録データが「記録済」であれば上記B_RD番目ブロック1bのデータは正常なデータである。これに対し、このブロック状態管理領域1dの記録データが不完全なデータであることを示す「記録中」である場合、制御部2は上記B_RD番目ブロック1bの1つまたはそれ以上前のブロック1bにおける記録データを読み出し、このデータをもとに、上記B_RD番目ブロック1bの不完全なデータを最新に近い状態のデータに復帰させるように修復制御するようにしてもよい。
以上がデータ読出しの処理である。
次に、データ消去の処理について図5をもとに説明する。
図5は制御部2によるフラッシュメモリ1に対するデータ消去の制御処理を示すフローチャートである。
図5において、ステップST21では、制御部2はデータ消去の対象となるセクタ1aの番号S_ERをフラッシュメモリ1の記録消去位置管理領域1eより取得する。
ステップST22では、制御部2は最新データが記録されているセクタ1aの番号S_RDを算出処理する。この算出処理については別途備えている処理フロー(サブルーチン)に従う(後述図6)。
ステップST23では、制御部2は最新データの読出しが完了し、且つ、データ記録処理を要するデータ記録の要求が無いかについて判断し、この要求が有る場合(ステップST23−No)は、まだセクタ1aのデータ消去を開始できない状態なのでステップST23に戻り、上記要求が無い場合(ステップST23−Yes)は、ステップST24へ進む。
図5は制御部2によるフラッシュメモリ1に対するデータ消去の制御処理を示すフローチャートである。
図5において、ステップST21では、制御部2はデータ消去の対象となるセクタ1aの番号S_ERをフラッシュメモリ1の記録消去位置管理領域1eより取得する。
ステップST22では、制御部2は最新データが記録されているセクタ1aの番号S_RDを算出処理する。この算出処理については別途備えている処理フロー(サブルーチン)に従う(後述図6)。
ステップST23では、制御部2は最新データの読出しが完了し、且つ、データ記録処理を要するデータ記録の要求が無いかについて判断し、この要求が有る場合(ステップST23−No)は、まだセクタ1aのデータ消去を開始できない状態なのでステップST23に戻り、上記要求が無い場合(ステップST23−Yes)は、ステップST24へ進む。
ステップST24では、制御部2はデータ消去するセクタ1aの番号S_ERと最新データが記録されているセクタ1aの番号S_RDとが一致(S_ER=S_RD)するかについて判断し、両者が一致する場合(ステップST24−Yes)は、S_ER番目のセクタ1aのデータを消去すると最新データが消失することを意味し、この最新データの消失を防止するためにこのデータ消去の処理を終了する。これに対し、両者が一致しない場合(ステップST24−No)は、S_ER番目セクタ1aの全てのブロック1bがデータ記録済みであり、消去可能なセクタと判断してステップST25へ進む。
ステップST25では、制御部2はフラッシュメモリ1に対しS_ER番目のセクタ1aの記録データを一括消去する。
ステップST26では、制御部2は次回のデータ消去の対象となるセクタ1aの番号S_ERを1つ進めるために記録消去位置管理領域1eのS_ERの番号データをS_ER番目+1に更新する(S_ER=S_ER番目+1)。
ステップST25では、制御部2はフラッシュメモリ1に対しS_ER番目のセクタ1aの記録データを一括消去する。
ステップST26では、制御部2は次回のデータ消去の対象となるセクタ1aの番号S_ERを1つ進めるために記録消去位置管理領域1eのS_ERの番号データをS_ER番目+1に更新する(S_ER=S_ER番目+1)。
ステップST27では、制御部2はステップST26で更新した「S_ER=S_ER番目+1」がセクタ1aの総数(本例では4セクタ)を超えているかについて判断し、セクタ1aの総数を超えている場合(ステップST27−Yes)は、ステップST28へ進み、セクタ1aの総数を超えていない場合(ステップST27−No)は、ステップST22へ戻り、前記処理を繰り返す。
ステップST28では、制御部2は循環状に1番目セクタ(セクタ1a(1))を指定するようにするため、ステップST26で更新した「S_ER=S_ER番目+1」を修正して「S_ER=1」に更新し、ステップST22へ戻る。
ステップST28では、制御部2は循環状に1番目セクタ(セクタ1a(1))を指定するようにするため、ステップST26で更新した「S_ER=S_ER番目+1」を修正して「S_ER=1」に更新し、ステップST22へ戻る。
以上の説明のように、データの読出しおよび記録が行なわれていない空き時間を使ってあらかじめセクタ1aのデータ消去を行なうので、従来のようにデータ記録の際にデータ消去する必要がなく、これによりデータ記録処理を短時間で実施することができることとなる。従って、電源切断時にはデータ消去の処理は不用であり、更新データの記録だけを実施すればよいので、短い時間でデータ更新処理を実施することが可能となる。
また、1つのセクタ1aの分割ブロック数をNとしたとき、1つのセクタ1aの全ブロック1bが記録済みになった後にセクタ1aの記録データを一括消去することにより、消去回数は従来に比し、(1/N)となり、セクタ1a当たりのデータ消去回数に限度(寿命)のあるフラッシュメモリ1の寿命を延ばすことができる。さらに、この一括消去は消去対象となるセクタを除くセクタ1aの少なくとも1つのブロック1bにデータが記録された後に実施されるので、必ず最新データを残すことができることとなる。
また、1つのセクタ1aの分割ブロック数をNとしたとき、1つのセクタ1aの全ブロック1bが記録済みになった後にセクタ1aの記録データを一括消去することにより、消去回数は従来に比し、(1/N)となり、セクタ1a当たりのデータ消去回数に限度(寿命)のあるフラッシュメモリ1の寿命を延ばすことができる。さらに、この一括消去は消去対象となるセクタを除くセクタ1aの少なくとも1つのブロック1bにデータが記録された後に実施されるので、必ず最新データを残すことができることとなる。
次に、前記ステップST22の算出処理について図6をもとに説明する。
図6は最新データが記録されているセクタ1aの番号S_RDの算出処理を示すフローチャート(サブルーチン)である。ただし、このフローチャートの前提条件として、1つのセクタ1aにあるブロックの数は固定(本例では4つ)であり、且つ、全てのセクタ1aについて同数であるものとする。
図6において、ステップST31では、制御部2は上記前提条件に従い、最新データが記録されているブロック1bの番号B_RDを1セクタ内のブロック数(例えば4)で除算すれば最新データが記録されているセクタ1aの番号S_RDを求めることができる。この除算においては、少数点以下は切り上げることとする。例えば図1において、最新データが記録されているブロック1bの番号B_RDが「ブロック1b(5)」であれば、このブロック1b(5)の「5」をブロック数4の「4」で除算し、少数点以下を切り上げることにより「2」となり、「セクタ1a(2)」が得られる。
上記ステップST31の算出処理は、セクタ1a中の一つのブロック1bに最新データが記録された後であれば消去対象のセクタ1aの番号S_ERを特定できることを意味し、これにより、消去対象となるセクタ1aの番号S_ERを早期に特定でき、前述のように、データの読出しおよび記録が行なわれていない空き時間を使って前もってセクタ1aのデータ消去を行なうという処理を一層容易にすることとなる。
図6は最新データが記録されているセクタ1aの番号S_RDの算出処理を示すフローチャート(サブルーチン)である。ただし、このフローチャートの前提条件として、1つのセクタ1aにあるブロックの数は固定(本例では4つ)であり、且つ、全てのセクタ1aについて同数であるものとする。
図6において、ステップST31では、制御部2は上記前提条件に従い、最新データが記録されているブロック1bの番号B_RDを1セクタ内のブロック数(例えば4)で除算すれば最新データが記録されているセクタ1aの番号S_RDを求めることができる。この除算においては、少数点以下は切り上げることとする。例えば図1において、最新データが記録されているブロック1bの番号B_RDが「ブロック1b(5)」であれば、このブロック1b(5)の「5」をブロック数4の「4」で除算し、少数点以下を切り上げることにより「2」となり、「セクタ1a(2)」が得られる。
上記ステップST31の算出処理は、セクタ1a中の一つのブロック1bに最新データが記録された後であれば消去対象のセクタ1aの番号S_ERを特定できることを意味し、これにより、消去対象となるセクタ1aの番号S_ERを早期に特定でき、前述のように、データの読出しおよび記録が行なわれていない空き時間を使って前もってセクタ1aのデータ消去を行なうという処理を一層容易にすることとなる。
次に、データ消去の処理を中段する機能を備えたデータ記録の処理について図7をもとに説明する。
図7は制御部2によるフラッシュメモリ1に対するデータ消去の処理を中段する機能を備えたデータ記録の制御処理を示すフローチャートである。
図7において、ステップST41では、制御部2はデータ記録の要求がされた場合、前記図5で説明したセクタ1aのデータ消去の処理中であるかについて判断し、データ消去の処理中である場合(ステップST41−Yes)は、ステップST42へ進み、データ消去の処理中でない場合(ステップST41−No)は、ステップST43へ進む。
ステップST42では、制御部2はフラッシュメモリ1に対してセクタ1aのデータ消去の処理を中断する処理を行ない、ステップST43へ進む。
ステップST43では、制御部2は前記図3で説明したデータ記録の処理を行い、処理を終了する。
以上の説明のように、セクタ1aのデータ消去の処理中にデータ記録の要求がされた場合、セクタ1aのデータ消去完了後に更新データの記録処理を開始するのではなく、データ消去の処理を中断して即座に更新データの記録処理を実行するので、更新データの記録を高速かつ確実に行なうことが可能となる。
図7は制御部2によるフラッシュメモリ1に対するデータ消去の処理を中段する機能を備えたデータ記録の制御処理を示すフローチャートである。
図7において、ステップST41では、制御部2はデータ記録の要求がされた場合、前記図5で説明したセクタ1aのデータ消去の処理中であるかについて判断し、データ消去の処理中である場合(ステップST41−Yes)は、ステップST42へ進み、データ消去の処理中でない場合(ステップST41−No)は、ステップST43へ進む。
ステップST42では、制御部2はフラッシュメモリ1に対してセクタ1aのデータ消去の処理を中断する処理を行ない、ステップST43へ進む。
ステップST43では、制御部2は前記図3で説明したデータ記録の処理を行い、処理を終了する。
以上の説明のように、セクタ1aのデータ消去の処理中にデータ記録の要求がされた場合、セクタ1aのデータ消去完了後に更新データの記録処理を開始するのではなく、データ消去の処理を中断して即座に更新データの記録処理を実行するので、更新データの記録を高速かつ確実に行なうことが可能となる。
以上のように、この実施の形態1によれば、フラッシュメモリ1を形成する複数のセクタ1a各々を複数のブロック1bに分割し、これら複数のブロック1bそれぞれにはデータ記録領域1cとこのデータ記録領域1cにデータを未記録、記録中または記録済かを示すデータを記録したブロック状態管理領域1dを設け、さらに、データを記録するブロックの番号B_WRのデータ、最新データが記録されており、データ読出しの対象となるブロックの番号B_RDのデータ、およびデータ消去の対象となるセクタ1aの番号S_ERのデータを記録した記録消去位置管理領域1eを前記複数のセクタ1a各々と独立に設け、制御部2は記録消去位置管理領域1eの記録データを基に前記セクタ1a全体に亘る複数のブロック1bのデータ記録領域1cに対し循環状の順序にてデータを記録するとともに、記録データを読出し、記録データをセクタごとに一括消去、ブロック状態管理領域1dおよびデータ記録状態管理領域1eの記録データを更新するようにフラッシュメモリ1を制御するように構成したので、前記ブロック状態管理領域1dが示す「記録済」、またはこの「記録済」に至ることなくデータ記録が中断し、結果として不完全なデータであると判断される「記録中」により、制御部2はそのブロック1bに記録されているデータが信頼できるかどうかを容易に判断でき、データ記録の精度を向上することができる。
また、制御部2は「記録中」を示すブロック1bの記録データをそれ以前のブロック1bの「記録済」の記録データを利用して修復し、最新に近い状態のデータを復帰することにより、データ記録の精度を向上することができる。
また、各セクタ1aを複数のブロック1bに分割し、セクタ1a全体に亘るこれら複数のブロック1bのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データの消去はセクタ1aごとに一括消去する構成により、例えば各セクタ1aをブロック数Nに分割した場合、セクタ1a当たりのデータ書換回数を従来に比してN倍に増やす一方、消去回数は従来に比して(1/N)となり、セクタ1a当たりのデータ消去回数に限度(寿命)のあるフラッシュメモリ1の寿命を延ばすことができる。また、複数のブロック1bのデータ記録領域に対し循環状の順序にてデータを記録するので、この記録データの消去が従来のように特定のセクタに集中することなく均等化され、これにより、フラッシュメモリ1の寿命の長期化に寄与し、信頼性を向上することができる。
また、各セクタ1aを複数のブロック1bに分割し、セクタ1a全体に亘るこれら複数のブロック1bのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データの消去はセクタ1aごとに一括消去する構成により、例えば各セクタ1aをブロック数Nに分割した場合、セクタ1a当たりのデータ書換回数を従来に比してN倍に増やす一方、消去回数は従来に比して(1/N)となり、セクタ1a当たりのデータ消去回数に限度(寿命)のあるフラッシュメモリ1の寿命を延ばすことができる。また、複数のブロック1bのデータ記録領域に対し循環状の順序にてデータを記録するので、この記録データの消去が従来のように特定のセクタに集中することなく均等化され、これにより、フラッシュメモリ1の寿命の長期化に寄与し、信頼性を向上することができる。
また、セクタ1aのデータ一括消去はデータの読出しおよび記録が行なわれていない空き時間を使って前もって実施するので、従来のようにデータ記録の際にデータ消去する必要がなく、これによりデータ記録処理を短時間で実施することができることとなる。従って、電源切断時にはデータ消去の処理は不用となり、更新データの記録だけを実施すればよく、短い時間でデータ更新処理を実施することができる。
また、セクタ1aのデータ一括消去は消去対象となるセクタ1aを除くセクタ1aの少なくとも1つのブロック1bにデータが記録された後に実施されるので、必ず最新データを残すことができる。
また、セクタ1aのデータ消去の処理中にデータ記録の要求がされた場合、セクタ1aのデータ消去完了後に更新データの記録処理を開始するのではなく、データ消去の処理を中断して即座に更新データの記録処理を実行するので、更新データの記録を高速かつ確実に行なうことができる。
また、最新データとブロック状態管理領域1dおよび記録消去位置管理領域1eとは1対1の関係となり同時に書き換えるため、フラッシュメモリ1の特定領域のみ書き換え回数があがるという問題を回避することができる。
また、セクタ1aのデータ一括消去は消去対象となるセクタ1aを除くセクタ1aの少なくとも1つのブロック1bにデータが記録された後に実施されるので、必ず最新データを残すことができる。
また、セクタ1aのデータ消去の処理中にデータ記録の要求がされた場合、セクタ1aのデータ消去完了後に更新データの記録処理を開始するのではなく、データ消去の処理を中断して即座に更新データの記録処理を実行するので、更新データの記録を高速かつ確実に行なうことができる。
また、最新データとブロック状態管理領域1dおよび記録消去位置管理領域1eとは1対1の関係となり同時に書き換えるため、フラッシュメモリ1の特定領域のみ書き換え回数があがるという問題を回避することができる。
実施の形態2.
図8はこの発明の実施の形態2による情報記録読出装置の構成図である。
図8において、図1と同一のものについては同一符合を付してあり、この実施の形態2による情報記録読出装置の構成が図1の構成に対し異なる点は、図1の記録消去位置管理領域1eに代えて前セクタ消去状態管理領域1fを各セクタ1aの領域内に設けた点および制御部1代る制御部21を設けた点である。なお、図1と同一符合ののものについての説明は省略する。
この前セクタ消去状態管理領域1fは、一つ前のセクタ1aのデータ消去の状態を示すデータを記録する領域である。例えば、セクタ1a(2)の前セクタ消去状態管理領域1fには一つ前のセクタ1a(1)のデータ消去の状態を示すデータが記録される。図8はこのセクタ1a(1)のデータが消去されている例を示している。なお、一つ前のセクタ1aのデータ消去の状態を示すようにしたのは、同じセクタ1aのデータ消去の状態を示すようにしたときには、例えばそのセクタ1aのデータ消去中に電源が切れた場合にセクタ1aのデータ消去の状態が不完全となり、これを回避することによる。
図8はこの発明の実施の形態2による情報記録読出装置の構成図である。
図8において、図1と同一のものについては同一符合を付してあり、この実施の形態2による情報記録読出装置の構成が図1の構成に対し異なる点は、図1の記録消去位置管理領域1eに代えて前セクタ消去状態管理領域1fを各セクタ1aの領域内に設けた点および制御部1代る制御部21を設けた点である。なお、図1と同一符合ののものについての説明は省略する。
この前セクタ消去状態管理領域1fは、一つ前のセクタ1aのデータ消去の状態を示すデータを記録する領域である。例えば、セクタ1a(2)の前セクタ消去状態管理領域1fには一つ前のセクタ1a(1)のデータ消去の状態を示すデータが記録される。図8はこのセクタ1a(1)のデータが消去されている例を示している。なお、一つ前のセクタ1aのデータ消去の状態を示すようにしたのは、同じセクタ1aのデータ消去の状態を示すようにしたときには、例えばそのセクタ1aのデータ消去中に電源が切れた場合にセクタ1aのデータ消去の状態が不完全となり、これを回避することによる。
図9は上記前セクタ消去状態管理領域1fに記録されるデータとそのデータが示す状態の説明図である。
図9において、31は前セクタ消去状態管理領域1fの記録データ(内容)、32はその記録データが示す一つ前のセクタ1aの状態である。
記録データが「111」の場合は初期状態であるデータが「未消去」の状態を示す。
記録データが「011」の場合は1つ前のセクタ1aのデータ消去を開始したことを示す「消去中」の状態を示す。
記録データが「001」の場合は1つ前のセクタ1aのデータ消去が完了したことを示す「消去済」の状態を示す。
上記前セクタ消去状態管理領域1fは、セクタ1a(1)からセクタ1a(4)の4つのセクタ1a全体におけるデータの記録状態を示すデータを記録するデータ記録状態管理領域を形成する。
図9において、31は前セクタ消去状態管理領域1fの記録データ(内容)、32はその記録データが示す一つ前のセクタ1aの状態である。
記録データが「111」の場合は初期状態であるデータが「未消去」の状態を示す。
記録データが「011」の場合は1つ前のセクタ1aのデータ消去を開始したことを示す「消去中」の状態を示す。
記録データが「001」の場合は1つ前のセクタ1aのデータ消去が完了したことを示す「消去済」の状態を示す。
上記前セクタ消去状態管理領域1fは、セクタ1a(1)からセクタ1a(4)の4つのセクタ1a全体におけるデータの記録状態を示すデータを記録するデータ記録状態管理領域を形成する。
制御部21は図1の制御部2に対し、フラッシュメモリ1に対する制御処理の方法が一部において異なる点を除き基本機能として制御部2と同様である。また、この制御部21がCPUおよびメモリ等、または、マイクロコンピュータ等で構成される点についても制御部2と同様である。
次に、セクタ1aのデータ消去の処理について図10をもとに説明する。
図10は制御部21によるフラッシュメモリ1に対するデータ消去の制御処理を示すフローチャートである。
図10において、ステップST51では、制御部21はデータ消去の対象となるセクタ1aの番号S_ERをフラッシュメモリ1の前セクタ消去状態管理領域1fを検索処理することにより取得する。この検索処理については後述する(図11)。
ステップST52、ステップST53およびステップST54は図5のステップST22〜ステップST24と同様の処理であり、説明は省略する。ただし、ステップST52において、最新データが記録されているセクタ1aの番号S_RDの算出処理(図6)に必要なB_RD(最新データが記録されているブロック1bの番号)は前セクタ消去状態管理領域1fをもとに算出処理して取得する。
図10は制御部21によるフラッシュメモリ1に対するデータ消去の制御処理を示すフローチャートである。
図10において、ステップST51では、制御部21はデータ消去の対象となるセクタ1aの番号S_ERをフラッシュメモリ1の前セクタ消去状態管理領域1fを検索処理することにより取得する。この検索処理については後述する(図11)。
ステップST52、ステップST53およびステップST54は図5のステップST22〜ステップST24と同様の処理であり、説明は省略する。ただし、ステップST52において、最新データが記録されているセクタ1aの番号S_RDの算出処理(図6)に必要なB_RD(最新データが記録されているブロック1bの番号)は前セクタ消去状態管理領域1fをもとに算出処理して取得する。
ステップST55では、制御部21はフラグ設定対象のセクタ1aの番号を示す変数Nを「S_ER+1」とおく(N=S_ER+1)。
ステップST56では、制御部21はステップST55の処理における変数Nがセクタ1aの総数(本例では4セクタ)を越えているかについて判断し、セクタ1aの総数を超えている場合(ステップST56−Yes)は、ステップST57へ進み、セクタ1aの総数を超えていない場合(ステップST56−No)は、ステップST58へ進む。
ステップST57では、制御部21は前記Nを1とおく(N=1)。
ステップST58では、制御部21はN番目のセクタ1aの前セクタ消去状態管理領域1fのデータを「消去中」に設定する。
ステップST59では、制御部21はフラッシュメモリ1に対しS_ER番目のセクタ1aの記録データを消去する。
ステップST56では、制御部21はステップST55の処理における変数Nがセクタ1aの総数(本例では4セクタ)を越えているかについて判断し、セクタ1aの総数を超えている場合(ステップST56−Yes)は、ステップST57へ進み、セクタ1aの総数を超えていない場合(ステップST56−No)は、ステップST58へ進む。
ステップST57では、制御部21は前記Nを1とおく(N=1)。
ステップST58では、制御部21はN番目のセクタ1aの前セクタ消去状態管理領域1fのデータを「消去中」に設定する。
ステップST59では、制御部21はフラッシュメモリ1に対しS_ER番目のセクタ1aの記録データを消去する。
ステップST60では、制御部21はステップST59のセクタ1aの記録データ消去が完了したときには、N番目のセクタ1aの前セクタ消去状態管理領域1fのデータを「消去済」に設定する。
ステップST61では、制御部21はデータ消去したセクタ1aがステップST55でフラグ設定したセクタ1aであるので、S_ERをN(S_ER=N)とおきステップST52へ戻る。
以上がセクタ1aのデータ消去の処理である。
ステップST61では、制御部21はデータ消去したセクタ1aがステップST55でフラグ設定したセクタ1aであるので、S_ERをN(S_ER=N)とおきステップST52へ戻る。
以上がセクタ1aのデータ消去の処理である。
次に、データ消去の対象となるセクタ1aの番号S_ERを検索する処理について図11をもとに説明する。
図11は前セクタ消去状態管理領域1fの状態を確認してS_ERを検索する処理を示すフローチャートである。
図11において、ステップST71では、制御部21は前セクタ消去状態管理領域1fを確認するセクタ1aの番号を格納する(表す)変数Nを1とおく(N=1)。
ステップST72では、制御部21はN+1番目のセクタ1aの前セクタ消去状態管理領域1fのデータが「消去中」であるかどうかを判断し、「消去中」でない場合(ステップST72−No)は、ステップST73へ進み、「消去中」である場合(ステップST72−Yes)は、ステップST79へ進む。
図11は前セクタ消去状態管理領域1fの状態を確認してS_ERを検索する処理を示すフローチャートである。
図11において、ステップST71では、制御部21は前セクタ消去状態管理領域1fを確認するセクタ1aの番号を格納する(表す)変数Nを1とおく(N=1)。
ステップST72では、制御部21はN+1番目のセクタ1aの前セクタ消去状態管理領域1fのデータが「消去中」であるかどうかを判断し、「消去中」でない場合(ステップST72−No)は、ステップST73へ進み、「消去中」である場合(ステップST72−Yes)は、ステップST79へ進む。
ステップST73では、制御部21はN番目セクタ1aの前セクタ消去状態管理領域1fが「消去済」かどうかを判断し、「消去済」でない場合(ステップST73−No)は、ステップST74へ進み、「消去済」である場合(ステップST73−Yes)は、ステップST79へ進む。
ステップST74では、制御部21はこのセクタ1aについては消去対象ではないのでNをN+1とおく(N=N+1)。
ステップST75では、制御部21はNがセクタ1aの総数と一致するかについて判断し、一致しない場合(ステップST75−No)は、ステップST72へ戻って検索を継続する。これに対し一致する場合(ステップST75−Yes)、このセクタ1aは最後に処理されるセクタ1aであることを示し、この場合はステップST76へ進む。
ステップST74では、制御部21はこのセクタ1aについては消去対象ではないのでNをN+1とおく(N=N+1)。
ステップST75では、制御部21はNがセクタ1aの総数と一致するかについて判断し、一致しない場合(ステップST75−No)は、ステップST72へ戻って検索を継続する。これに対し一致する場合(ステップST75−Yes)、このセクタ1aは最後に処理されるセクタ1aであることを示し、この場合はステップST76へ進む。
ステップST76では、制御部21は1番目のセクタ1aの前セクタ消去状態管理領域1fが「消去中」であるかどうかを判断し、「消去中」でない場合(ステップST76−No)は、ステップST77へ進み、「消去中」である場合(ステップST76−Yes)は、ステップST79へ進む。
ステップST77では、制御部21はN番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」であるかどうかを判断し、「消去済」でない場合(ステップST77−No)は、ステップST78へ進み、「消去済」である場合(ステップST77−Yes)は、ステップST79へ進む。
ステップST78では、制御部21はデータ消去の対象となるセクタ1aの番号S_ERを1とおき(S_ER=1)、この検索処理を終了する。このように処理するのは、ステップST77において、N番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」でない場合は全てのセクタ1aにおいてまだ一度も消去が行なわれていないことを示し、従って、データ消去の対象となるセクタ1aは1番目のセクタであるのでS_ERを1とおくことによる。
ステップST77では、制御部21はN番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」であるかどうかを判断し、「消去済」でない場合(ステップST77−No)は、ステップST78へ進み、「消去済」である場合(ステップST77−Yes)は、ステップST79へ進む。
ステップST78では、制御部21はデータ消去の対象となるセクタ1aの番号S_ERを1とおき(S_ER=1)、この検索処理を終了する。このように処理するのは、ステップST77において、N番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」でない場合は全てのセクタ1aにおいてまだ一度も消去が行なわれていないことを示し、従って、データ消去の対象となるセクタ1aは1番目のセクタであるのでS_ERを1とおくことによる。
ステップST79では、制御部21はデータ消去の対象となるセクタ1aの番号S_ERをNとおき(S_ER=N)、この検索処理を終了する。
このステップST79の上記処理は、ステップST72−Yes、ステップST73−Yes、ステップST76−YesおよびステップST77−Yesの場合に行われる。
ステップST72の判断が「Yes」の場合、過去にN番目のセクタ1aにて消去処理が行なわれたが中断されたと判断し、N番目のセクタ1aが消去対象のセクタ1aとあるとしてS_ERをNとおく。
ステップST73の判断が「Yes」の場合、直前のセクタ1aが前回消去され、N番目のセクタ1aが消去対象のセクタ1aとなるのでS_ERをNとおく。
また、ステップST76およびステップST77それぞれの判断が「Yes」の場合、N番目のセクタ1aが消去対象のセクタ1aとなるのでS_ERをNとおく。
以上がデータ消去の対象となるセクタ1aの番号S_ERの検索処理であり、この検索処理を終了したときには図10のフローへ戻る。
このステップST79の上記処理は、ステップST72−Yes、ステップST73−Yes、ステップST76−YesおよびステップST77−Yesの場合に行われる。
ステップST72の判断が「Yes」の場合、過去にN番目のセクタ1aにて消去処理が行なわれたが中断されたと判断し、N番目のセクタ1aが消去対象のセクタ1aとあるとしてS_ERをNとおく。
ステップST73の判断が「Yes」の場合、直前のセクタ1aが前回消去され、N番目のセクタ1aが消去対象のセクタ1aとなるのでS_ERをNとおく。
また、ステップST76およびステップST77それぞれの判断が「Yes」の場合、N番目のセクタ1aが消去対象のセクタ1aとなるのでS_ERをNとおく。
以上がデータ消去の対象となるセクタ1aの番号S_ERの検索処理であり、この検索処理を終了したときには図10のフローへ戻る。
次に、データ記録の対象となるブロック番号(B_WR)およびデータ読出しの対象となるブロック番号(B_RD)を算出する処理について図12をもとに説明する。
図12はデータ記録対象ブロック番号(B_WR)およびデータ読出対象ブロック番号(B_RD)の算出処理を示すフローチャートである。
図12において、ステップST81では、制御部21は上記B_WRおよびB_RDの算出処理に必要な、先に最も古い時期に記録されたブロック1bの番号であるB_OLDを算出する。このB_OLDは別途の処理フロー(サブルーチン)により算出する。この算出については後述する(図13)。
ステップST82では、制御部21はブロック状態管理領域1dを確認するブロック1bの番号を格納する変数NをB_OLDとおき(N=B_OLD)、また、B_RDを0とおく(B_RD=0)。
図12はデータ記録対象ブロック番号(B_WR)およびデータ読出対象ブロック番号(B_RD)の算出処理を示すフローチャートである。
図12において、ステップST81では、制御部21は上記B_WRおよびB_RDの算出処理に必要な、先に最も古い時期に記録されたブロック1bの番号であるB_OLDを算出する。このB_OLDは別途の処理フロー(サブルーチン)により算出する。この算出については後述する(図13)。
ステップST82では、制御部21はブロック状態管理領域1dを確認するブロック1bの番号を格納する変数NをB_OLDとおき(N=B_OLD)、また、B_RDを0とおく(B_RD=0)。
ステップST83では、制御部21はN番目ブロック1bのブロック状態管理領域1dの記録データが「記録済」、「記録中」または「未記録」のいずれの状態であるかを判断し、「記録済」であれば、N番目のブロック1bは読出し可能なデータが記録されているのでステップST84進み、「記録中」であれば、記録データは正常なデータではないのでステップST85進み、また、「未記録」であれば、N番目のブロック1bにデータを記録することが可能なのでステップST89進む。
ステップST84では、制御部21はB_RDをN(B_RD=N)とおき、ステップST85へ進む。ただし、後記のステップST88からステップST83へ戻る処理が発生している場合、このB_RDには最後に確認した「記録済」のブロック1bの番号が設定される。
ステップST84では、制御部21はB_RDをN(B_RD=N)とおき、ステップST85へ進む。ただし、後記のステップST88からステップST83へ戻る処理が発生している場合、このB_RDには最後に確認した「記録済」のブロック1bの番号が設定される。
ステップST85では、制御部21は次のブロック1bのブロック状態管理領域1dを確認するため、NをN+1とおく(N=N+1)。
ステップST86では、制御部21はステップST85で設定したNが全ブロックの総数(本例では16ブロック)を超えているかについて判断し、超えている場合(ステップST86−Yes)は、ステップST87へ進み、超えていない場合(ステップST86−No)は、ステップST88へ進む。
ステップST87では、制御部21はNを1とおく(N=1)。
ステップST88では、制御部21は、NとB_OLDとが一致(N=B_OLD)するか否かについて判断する一方、全てのブロック1bに対しステップST83以降ステップST87までの処理について検索を完了したかについて判断し、NとB_OLDとが不一致(N≠B_OLD)であり、且つ、全てのブロック1bに対する検索が完了していないのであればステップST83へ戻って処理を継続し、NとB_OLDとが不一致(N≠B_OLD)であり、且つ、全てのブロック1bに対する検索が完了したのであればステップST89へ進み、また、NとB_OLDとが一致(N=B_OLD)する場合には全てのブロック1bに対する検索が未完または完了に関係無くステップST90へ進む。
ステップST86では、制御部21はステップST85で設定したNが全ブロックの総数(本例では16ブロック)を超えているかについて判断し、超えている場合(ステップST86−Yes)は、ステップST87へ進み、超えていない場合(ステップST86−No)は、ステップST88へ進む。
ステップST87では、制御部21はNを1とおく(N=1)。
ステップST88では、制御部21は、NとB_OLDとが一致(N=B_OLD)するか否かについて判断する一方、全てのブロック1bに対しステップST83以降ステップST87までの処理について検索を完了したかについて判断し、NとB_OLDとが不一致(N≠B_OLD)であり、且つ、全てのブロック1bに対する検索が完了していないのであればステップST83へ戻って処理を継続し、NとB_OLDとが不一致(N≠B_OLD)であり、且つ、全てのブロック1bに対する検索が完了したのであればステップST89へ進み、また、NとB_OLDとが一致(N=B_OLD)する場合には全てのブロック1bに対する検索が未完または完了に関係無くステップST90へ進む。
ステップST89では、制御部21はB_WRをNとおき(B_WR=N)、この算出処理を終了する。このように処理するのは、ステップST83またはステップST88よりこのステップST89へ到達した時点で、Nには記録対象となるブロック1bの番号が格納されていることによる。
ステップST90では、制御部21はエラー出力してこの算出処理を終了する。このように処理するのは、NとB_OLDとが一致(N=B_OLD)していれば全てのブロック1bにデータが記録されていることを示し、この場合には記録対象ブロックが存在しないのでエラー出力し、この算出処理を終了する。
ステップST90では、制御部21はエラー出力してこの算出処理を終了する。このように処理するのは、NとB_OLDとが一致(N=B_OLD)していれば全てのブロック1bにデータが記録されていることを示し、この場合には記録対象ブロックが存在しないのでエラー出力し、この算出処理を終了する。
以上がデータ記録対象ブロック番号(B_WR)およびデータ読出対象ブロック番号(B_RD)の算出処理である。この算出処理により得たB_WRをもとにデータ記録処理が行われ、B_RDをもとにデータ読出処理が行われる。このデータ読出処理については既述の図4のフローチャートに従う。また、データ記録処理については後述する(図14)。
次に、前記図12のフローチャート中におけるステップST81の処理(B_OLDの算出処理)について図13をもとに説明する。
図13は前セグタ消去状態管理領域1fの状態をもとに、最も古い時期に記録されたブロック1bの番号であるB_OLDの算出処理を示すフローチャート(サブルーチン)である。
このB_OLDを求めるためには最も古いデータが記録されているセクタ1aの番号S_OLDを先に求め、次いで、B_OLDを算出する。
図13において、ステップST101では、制御部21は前セクタ消去状態管理領域1fを確認するセクタ1aの番号を格納する変数Nを1とおく(N=1)。
ステップST102では、制御部21はN+1番目のセクタ1aの前セクタ消去状態管理領域1fが「消去中」であるかどうかを判断し、「消去中」である場合(ステップST102−Yes)は、ステップST103へ進み、「消去中」でない場合(ステップST102−No)は、ステップST104へ進む。
図13は前セグタ消去状態管理領域1fの状態をもとに、最も古い時期に記録されたブロック1bの番号であるB_OLDの算出処理を示すフローチャート(サブルーチン)である。
このB_OLDを求めるためには最も古いデータが記録されているセクタ1aの番号S_OLDを先に求め、次いで、B_OLDを算出する。
図13において、ステップST101では、制御部21は前セクタ消去状態管理領域1fを確認するセクタ1aの番号を格納する変数Nを1とおく(N=1)。
ステップST102では、制御部21はN+1番目のセクタ1aの前セクタ消去状態管理領域1fが「消去中」であるかどうかを判断し、「消去中」である場合(ステップST102−Yes)は、ステップST103へ進み、「消去中」でない場合(ステップST102−No)は、ステップST104へ進む。
ステップST103では、制御部21はS_OLDをN+1とおき(S_OLD=N+1)、ステップST111へ進む。このように処理するのは、このセクタ1a内のデータは消去中に中断されたと判断したことによる。
ステップST104では、制御部21はN番目セクタ1aの前セクタ消去状態管理領域1fが「消去済」かどうかを判断し、「消去済」でない場合(ステップST104−No)は、ステップST105へ進み、「消去済」である場合(ステップST104−Yes)は、ステップST110へ進む。
ステップST105では、制御部21は次のセクタ1aについて確認するためNをN+1とおく(N=N+1)。
ステップST106では、制御部21はNがセクタ1aの総数と一致するかについて判断し、一致しない場合(ステップST106−No)は、ステップST102へ戻って確認を継続し、一致する場合(ステップST106−Yes)は、N番目のセクタ1aが最後に処理されるセクタ1aであるとしてステップST107へ進む。
ステップST104では、制御部21はN番目セクタ1aの前セクタ消去状態管理領域1fが「消去済」かどうかを判断し、「消去済」でない場合(ステップST104−No)は、ステップST105へ進み、「消去済」である場合(ステップST104−Yes)は、ステップST110へ進む。
ステップST105では、制御部21は次のセクタ1aについて確認するためNをN+1とおく(N=N+1)。
ステップST106では、制御部21はNがセクタ1aの総数と一致するかについて判断し、一致しない場合(ステップST106−No)は、ステップST102へ戻って確認を継続し、一致する場合(ステップST106−Yes)は、N番目のセクタ1aが最後に処理されるセクタ1aであるとしてステップST107へ進む。
ステップST107では、制御部21は1番目のセクタ1aの前セクタ消去状態管理領域1fが「消去中」であるかどうかを判断し、「消去中」でない場合(ステップST107−No)は、ステップST108へ進み、「消去中」である場合(ステップST107−Yes)は、ステップST109へ進む。
ステップST108では、制御部21はN番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」であるかどうかを判断し、「消去済」でない場合(ステップST108−No)は、ステップST109へ進み、「消去済」である場合(ステップST108−Yes)は、ステップST110へ進む。
ステップST109では、制御部21はS_OLDを1とおき(S_OLD=1)、ステップST111へ進む。このように処理するのは、ステップST107において「消去中」と判断されたこと(ステップST107−Yes)、およびステップST108において「消去済」でない場合(ステップST108−No)は、どのセクタも消去されていないことを示すので、最も古いセクタは1であることによる。
ステップST108では、制御部21はN番目のセクタ1aの前セクタ消去状態管理領域1fが「消去済」であるかどうかを判断し、「消去済」でない場合(ステップST108−No)は、ステップST109へ進み、「消去済」である場合(ステップST108−Yes)は、ステップST110へ進む。
ステップST109では、制御部21はS_OLDを1とおき(S_OLD=1)、ステップST111へ進む。このように処理するのは、ステップST107において「消去中」と判断されたこと(ステップST107−Yes)、およびステップST108において「消去済」でない場合(ステップST108−No)は、どのセクタも消去されていないことを示すので、最も古いセクタは1であることによる。
ステップST110では、制御部21はS_OLDをNとおき、ステップST111へ進む。このように処理するのは、ステップST104およびステップST108の各判断が「消去済」である場合(ステップST104,108−Yes)は、このセクタ1aのデータが最も古いことによる。
ステップST111では、制御部21はこのステップST111まででS_OLDが確定するので、このS_OLDから下記式により最も古い時期に記録されたブロック1bの番号B_OLDを算出し、この算出処理を終了する。
B_OLD=(S_OLD−1)*セクタ1a内ブロック数+1
以上でB_WRとB_RDの算出に必要なB_OLDが確定するので、図12のフローへ戻る。
ステップST111では、制御部21はこのステップST111まででS_OLDが確定するので、このS_OLDから下記式により最も古い時期に記録されたブロック1bの番号B_OLDを算出し、この算出処理を終了する。
B_OLD=(S_OLD−1)*セクタ1a内ブロック数+1
以上でB_WRとB_RDの算出に必要なB_OLDが確定するので、図12のフローへ戻る。
次に、データ消去の処理を中段する機能を備えたデータ記録の処理について図14をもとに説明する。
図14は制御部21によるフラッシュメモリ1に対するデータ消去の処理を中段する機能を備えたデータ記録の制御処理を示すフローチャートである。
図14において、ステップST121では、制御部21はデータ記録の要求がされた場合、前記図10で説明したセクタ1aのデータ消去の処理中であるかについて判断し、データ消去の処理中である場合(ステップST121−Yes)は、ステップST122へ進み、データ消去の処理中でない場合(ステップST121−No)は、ステップST123へ進む。
図14は制御部21によるフラッシュメモリ1に対するデータ消去の処理を中段する機能を備えたデータ記録の制御処理を示すフローチャートである。
図14において、ステップST121では、制御部21はデータ記録の要求がされた場合、前記図10で説明したセクタ1aのデータ消去の処理中であるかについて判断し、データ消去の処理中である場合(ステップST121−Yes)は、ステップST122へ進み、データ消去の処理中でない場合(ステップST121−No)は、ステップST123へ進む。
ステップST122では、制御部21はフラッシュメモリ1に対してセクタ1aのデータ消去の処理を中断する処理を行ない、ステップST123へ進む。
ステップST123では、制御部21はデータ記録を行なうB_WR番目のブロック状態管理領域1dが「未記録」であることを確認し、「未記録」の場合(ステップST123−Yes)は、ステップST124へ進み、「未記録」でない場合(ステップST123−No)は、ステップST125へ進む。
ステップST124では、既にセクタ1aの消去が行なわれ、B_WR番目のブロック1bにデータ記録を行なえるようになっているので、制御部21は前記図3で説明したデータ記録の処理を行ない、処理を終了する。
ステップST125では、ブロック状態管理領域1dの内容とブロック1bの状態とが一致していないため、制御部21はエラーを出力し、このデータ記録の処理を終了する。
ステップST123では、制御部21はデータ記録を行なうB_WR番目のブロック状態管理領域1dが「未記録」であることを確認し、「未記録」の場合(ステップST123−Yes)は、ステップST124へ進み、「未記録」でない場合(ステップST123−No)は、ステップST125へ進む。
ステップST124では、既にセクタ1aの消去が行なわれ、B_WR番目のブロック1bにデータ記録を行なえるようになっているので、制御部21は前記図3で説明したデータ記録の処理を行ない、処理を終了する。
ステップST125では、ブロック状態管理領域1dの内容とブロック1bの状態とが一致していないため、制御部21はエラーを出力し、このデータ記録の処理を終了する。
以上のように、この実施の形態2によれば、フラッシュメモリ1には実施の形態1(図1)の記録消去位置管理領域1eに代わる前セクタ消去状態管理領域1fを各セクタ1aの領域内に設け、この前セクタ消去状態管理領域1fには一つ前のセクタ1aのデータ消去の状態を示すデータを記録し、制御部21はこの前セクタ消去状態管理領域1fを基にデータ消去の対象となるセクタ1aの番号S_ERを検索し、または、ブロック状態管理領域1dおよび前セクタ消去状態管理領域1fとを基にデータを記録するブロック1bの番号B_WR、最新データが記録されており、データ読出しの対象となるブロック1bの番号B_RDを算出し、これら検索または算出したS_ER、B_WRおよびB_RDを基に前記セクタ1a全体に亘る複数のブロック1bのデータ記録領域1cに対し循環状の順序にてデータを記録するとともに、記録データを読出し、記録データをセクタごとに一括消去、ブロック状態管理領域1dおよび前セクタ消去状態管理領域1fの記録データを更新するようにフラッシュメモリ1を制御するように構成したので、上記S_ER、B_WRおよびB_RDのデータを記録した実施の形態1の記録消去位置管理領域1eを設けることなく、例えば電源が切断された場合であってもS_ER、B_WRおよびB_RDを確定することができる。
また、セクタ1aのデータ消去が中断された場合であっても必ずS_ERが特定でき(図11)、また記録が途中で中断された場合であっても不完全なデータを読み出すことなく、最新の正常なデータを読み出すことができる(図12)。
また、最新データとブロック状態管理領域1dおよび前セクタ消去状態管理領域1fとは1対1の関係となり同時に書き換えるため、フラッシュメモリ1の特定領域のみ書き換え回数があがるという問題を回避することができる。
また、最新データとブロック状態管理領域1dおよび前セクタ消去状態管理領域1fとは1対1の関係となり同時に書き換えるため、フラッシュメモリ1の特定領域のみ書き換え回数があがるという問題を回避することができる。
この他、実施の形態1と同様の以下の効果が得られる。
ブロック状態管理領域1dが示す「記録済」および「記録中」のデータから記録データが信頼できるかどうかを容易に判断でき、データ記録の精度を向上できる。
消去回数が従来に比して(1/ブロック数N)となるとともに消去が従来のように特定のセクタ1aに集中することなく均等化され、フラッシュメモリ1の寿命を延ばすことができる。
セクタ1aのデータ一括消去がデータの読出しおよび記録が行なわれていない空き時間を使って前もって実施され、データ記録処理を短時間で実施できる。
セクタ1aのデータ一括消去は次のセクタ1aの1つのブロック1bにデータが記録された後に実施され、必ず最新データを残すことができる。
セクタ1aのデータ消去中にデータ記録の要求がされた場合、データ消去の処理を中断して即座に更新データの記録処理を実行し、更新データの記録を高速かつ確実に行なうことができる。
ブロック状態管理領域1dが示す「記録済」および「記録中」のデータから記録データが信頼できるかどうかを容易に判断でき、データ記録の精度を向上できる。
消去回数が従来に比して(1/ブロック数N)となるとともに消去が従来のように特定のセクタ1aに集中することなく均等化され、フラッシュメモリ1の寿命を延ばすことができる。
セクタ1aのデータ一括消去がデータの読出しおよび記録が行なわれていない空き時間を使って前もって実施され、データ記録処理を短時間で実施できる。
セクタ1aのデータ一括消去は次のセクタ1aの1つのブロック1bにデータが記録された後に実施され、必ず最新データを残すことができる。
セクタ1aのデータ消去中にデータ記録の要求がされた場合、データ消去の処理を中断して即座に更新データの記録処理を実行し、更新データの記録を高速かつ確実に行なうことができる。
1 フラッシュメモリ、1a セクタ、1b ブロック、1c データ記録領域、1d ブロック状態管理領域、1e 記録消去位置管理領域、1f 前セクタ消去状態管理領域、2 制御部、3 インタフェース、21 制御部。
Claims (6)
- データ記録領域の一部を形成するとともに、データ消去の単位となるセクタを複数有し、これら複数のセクタ各々を分割したものであってデータ記録領域とこのデータ記録領域にデータを未記録、記録中または記録済かを示すデータを記録するブロック状態管理領域とを有する複数のブロックと、前記複数のセクタ全体におけるデータの記録状態を示すデータを記録するデータ記録状態管理領域とを有してなる不揮発性メモリと、前記不揮発性メモリのデータ記録状態管理領域の記録データ、または、ブロック状態管理領域およびデータ記録状態管理領域の記録データを基に前記セクタ全体に亘る複数のブロックのデータ記録領域に対し循環状の順序にてデータを記録するとともに、記録データを読出し、記録データをセクタごとに一括消去、およびこれらデータの記録、読出し、消去を基に前記ブロック状態管理領域およびデータ記録状態管理領域各々の記録データを更新するように前記不揮発性メモリを制御する制御部とを備えた情報記録読出装置。
- データ記録状態管理領域は複数のセクタ各々と独立に設け、データを記録するブロックの番号のデータ、最新データが記録されているブロックの番号のデータ、およびデータ消去の対象となるセクタの番号のデータを記録し、制御部はこのデータ記録状態管理領域よりデータを記録するブロックの番号のデータ、最新データが記録されているブロックの番号のデータ、またはデータ消去の対象となるセクタの番号のデータを取得し、この取得データを基にデータを記録、読出しおよび消去することを特徴とする請求項1記載の情報記録読出装置。
- データ記録状態管理領域は複数のセクタ各々の領域内に設け、一つ手前のセクタのデータ消去状態を示すデータを記録し、制御部はこのデータ記録状態管理領域およびブロック状態管理領域とよりデータを記録するブロックの番号のデータおよび最新データが記録されているブロックの番号のデータを算出し、またはデータ記録状態管理領域よりデータ消去の対象となるセクタの番号のデータを検索し、前記算出または検索したデータを基にデータを記録、読出しおよび消去することを特徴とする請求項1記載の情報記録読出装置。
- 制御部は、データの読出しから記録までの間に記録データを消去するように不揮発性メモリを制御することを特徴とする請求項1から請求項3のうちのいずれか1項記載の情報記録読出装置。
- 制御部は、消去対象となるセクタを除くセクタの少なくとも1つのブロックにデータが記録された後に前記消去対象セクタのブロック各々に記録されたデータを一括消去するように不揮発性メモリを制御することを特徴とする請求項1から請求項3のうちのいずれか1項記載の情報記録読出装置。
- 制御部は、消去対象セクタの記録データを一括消去中にデータ記録を行なうときにはこの一括消去を中断してデータ記録処理を優先実行するように不揮発性メモリを制御することを特徴とする請求項5記載の情報記録読出装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004271918A JP2006085596A (ja) | 2004-09-17 | 2004-09-17 | 情報記録読出装置 |
US10/576,077 US20090019244A1 (en) | 2004-09-17 | 2005-06-09 | Information Record/Read Apparatus |
CNA2005800008750A CN1842776A (zh) | 2004-09-17 | 2005-06-09 | 信息记录读出装置 |
PCT/JP2005/010608 WO2006030566A1 (ja) | 2004-09-17 | 2005-06-09 | フラッシュメモリの情報記録読出装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004271918A JP2006085596A (ja) | 2004-09-17 | 2004-09-17 | 情報記録読出装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006085596A true JP2006085596A (ja) | 2006-03-30 |
Family
ID=36059827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004271918A Pending JP2006085596A (ja) | 2004-09-17 | 2004-09-17 | 情報記録読出装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20090019244A1 (ja) |
JP (1) | JP2006085596A (ja) |
CN (1) | CN1842776A (ja) |
WO (1) | WO2006030566A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011129192A (ja) * | 2009-12-16 | 2011-06-30 | Samsung Electronics Co Ltd | 半導体記憶装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI400707B (zh) * | 2009-07-09 | 2013-07-01 | Phison Electronics Corp | 快閃記憶體邏輯區塊管理方法及其控制電路與儲存系統 |
TWI455135B (zh) * | 2010-06-10 | 2014-10-01 | Apacer Technology Inc | 以快閃記憶體為基礎的儲存裝置及其資料寫入方法 |
JP2014115959A (ja) * | 2012-12-12 | 2014-06-26 | Dainippon Printing Co Ltd | Icカード、データ消去処理方法、及びデータ消去処理プログラム |
CN103092766B (zh) * | 2012-12-28 | 2015-09-30 | 北京时代民芯科技有限公司 | 一种用于nand flash的均衡损耗实现方法 |
US11175851B2 (en) * | 2019-11-15 | 2021-11-16 | Cignet Technology, Inc. | Method and system for fast, secure, and complete certification of memory status |
CN115756331B (zh) * | 2022-11-23 | 2023-08-04 | 东土科技(宜昌)有限公司 | 充电数据的高效存储方法、装置、存储介质以及电子设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002032256A (ja) * | 2000-07-19 | 2002-01-31 | Matsushita Electric Ind Co Ltd | 端末装置 |
JP2002278850A (ja) * | 2001-03-14 | 2002-09-27 | Nec Corp | 半導体装置 |
JP4654531B2 (ja) * | 2001-04-20 | 2011-03-23 | パナソニック電工株式会社 | ブロック消去型記憶媒体の管理装置 |
US6948026B2 (en) * | 2001-08-24 | 2005-09-20 | Micron Technology, Inc. | Erase block management |
GB0123415D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
JP2004071033A (ja) * | 2002-08-05 | 2004-03-04 | Mitsubishi Electric Corp | フラッシュメモリのデータ記録法 |
JP3979308B2 (ja) * | 2003-02-27 | 2007-09-19 | カシオ計算機株式会社 | データ処理装置およびデータ処理のプログラム |
-
2004
- 2004-09-17 JP JP2004271918A patent/JP2006085596A/ja active Pending
-
2005
- 2005-06-09 WO PCT/JP2005/010608 patent/WO2006030566A1/ja active Application Filing
- 2005-06-09 CN CNA2005800008750A patent/CN1842776A/zh active Pending
- 2005-06-09 US US10/576,077 patent/US20090019244A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011129192A (ja) * | 2009-12-16 | 2011-06-30 | Samsung Electronics Co Ltd | 半導体記憶装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2006030566A1 (ja) | 2006-03-23 |
US20090019244A1 (en) | 2009-01-15 |
CN1842776A (zh) | 2006-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6154808A (en) | Method and apparatus for controlling data erase operations of a non-volatile memory device | |
US7558904B2 (en) | Controller, data memory system, data rewriting method, and computer program product | |
US20060143365A1 (en) | Memory device, memory managing method and program | |
JP5798737B2 (ja) | 半導体記録装置、半導体記録装置の制御方法及び半導体記録システム | |
JP2007184005A (ja) | フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ | |
WO2006030566A1 (ja) | フラッシュメモリの情報記録読出装置 | |
JPWO2007000862A1 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 | |
KR20140133427A (ko) | 플래시 메모리에 저장된 데이터를 관리하는 방법 및 관련 메모리 장치 및 제어기 | |
EP2977907B1 (en) | Data storage device, method for storing data, and onboard control device | |
JP4997798B2 (ja) | 不揮発性半導体記憶装置およびメモリシステム | |
JP4158526B2 (ja) | メモリカード及びメモリへのデータ書き込み方法 | |
JP4501881B2 (ja) | メモリコントローラ及びフラッシュメモリシステム | |
JP2008251056A (ja) | 半導体記憶装置及び半導体記憶装置の書き換え制御方法 | |
JP2006003966A (ja) | フラッシュメモリの書込方法 | |
CN116185563B (zh) | 一种基于车规级微控制器数据闪存的软件模拟算法 | |
KR102142675B1 (ko) | Eeprom 제어장치 및 이를 이용한 eeprom의 데이터 기록 방법 | |
JP2009093528A (ja) | メモリデータ管理装置 | |
JP2007148965A (ja) | フラッシュディスク装置のエラーブロック管理方法及び装置 | |
JP4153535B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP2004296014A (ja) | 不揮発性メモリの消去回数平準化方法 | |
JP2007164364A (ja) | 情報記録読出装置 | |
JP2008251063A (ja) | 記憶装置 | |
JP4710274B2 (ja) | メモリ装置、メモリ装置の制御方法およびデータ処理システム | |
JP2004310268A (ja) | フラッシュメモリ内蔵の半導体装置、フラッシュメモリの制御方法およびそのプログラム | |
JP2010026931A (ja) | ホスト機器及びホスト機器のデータ記録方法 |