JP2005234957A - フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラム - Google Patents

フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラム Download PDF

Info

Publication number
JP2005234957A
JP2005234957A JP2004044474A JP2004044474A JP2005234957A JP 2005234957 A JP2005234957 A JP 2005234957A JP 2004044474 A JP2004044474 A JP 2004044474A JP 2004044474 A JP2004044474 A JP 2004044474A JP 2005234957 A JP2005234957 A JP 2005234957A
Authority
JP
Japan
Prior art keywords
data
flag
block
invalid
value
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.)
Granted
Application number
JP2004044474A
Other languages
English (en)
Other versions
JP3924568B2 (ja
Inventor
Takeshi Osakabe
猛 越阪部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2004044474A priority Critical patent/JP3924568B2/ja
Priority to US11/060,475 priority patent/US7590793B2/en
Publication of JP2005234957A publication Critical patent/JP2005234957A/ja
Application granted granted Critical
Publication of JP3924568B2 publication Critical patent/JP3924568B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】 データの書き換えの際に書き換えが中断されたような場合でも、有効なデータを格納しているデータ領域を正しく判定することができるフラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラムを提供する。
【解決手段】 データを書き込むデータ領域を有する複数のブロックを有し、複数の当該ブロックを使用してデータの追記による書き込みを行うフラッシュメモリにおけるデータアクセス制御において、ブロックに、データが書き込まれたデータ領域の有効性を判別するためのフラグであって、データ領域が有効であることを示す有効フラグと、無効であることを示す無効フラグを設け、ブロックからデータの読み出しを行う際に、複数のブロックから有効フラグと無効フラグの値を読み出し、読み出した有効フラグと無効フラグの値によって、何れのブロックのデータ領域が有効であるかどうかの判別を行う。
【選択図】 図4

Description

本発明は、フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラムに関し、特に2つのブロックを使用してデータの追記による書き込みを行うフラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラムに関する。
フラッシュメモリは、EEPROMの一種であり、ブロック単位でデータを消去することで、データを新たに書き込むことができる構造となっている。このフラッシュメモリは、外部から電力を供給しなくても記憶したデータが消えることがないので、デジタルカメラや家庭用ゲーム機などのメモリカード、パソコンのBIOSの記憶などに利用されている。
図10と図11を参照して、従来のフラッシュメモリにおいて、複数のブロック(例えば、2つのブロック)を使用してデータ追記によるデータ書き換えを行う場合の動作を簡単に説明する。
図10は、フラッシュメモリの領域0から領域2の3つの領域から構成されるブロック0とブロック1の2つのブロックを利用してデータ書き換えを行う場合の状態の変化を示している。
フラッシュメモリにおいてデータ追記を行う場合、書き込みデータは、ブロック0、ブロック1のそれぞれに同一のデータを書き込む。ここでは、ブロックの初期状態(各領域には初期値「FFH」が格納されている)からデータ「d1」〜「d3」の追記とブロックの消去を順次行う場合の例を示している。
なお、両ブロック0、1からの読み出しデータが共に初期値「FFH」である場合、また互いの読み出しデータが不一致の場合には、所定のディフォルト値がディフォルトデータ「d0」として使用される。
例えば、データ「d1」の書き込みを行う場合、図10の(2)で、ブロック0の領域0にデータ「d1」を書き込んだ後、図10の(3)で、ブロック1の領域0にデータ「d1」を書き込む。この図10の(3)の状態では、有効データとしてデータ「d1」が読み出される。図10中、書き換えがなされているブロックの領域を網目によって示している。
フラッシュメモリの2つのブロック(0)、ブロック(1)を使用して、データ追記によるデータ書き換えを行う際、例えば、ブロック(0)が一杯になった場合、ブロック(0)と同じデータを、ブロック(1)へ書き込み、ブロック(0)については、ブロック(1)が一杯になった後に新規のデータを書き込みのために消去を行う(図10の(8))。
フラッシュメモリからのデータの読み出し時は、図11に示すように、まず読み出しレベルを設定する(ステップ1101)。この読み出しレベルは、CPUからフラッシュメモリのデータを読み出すために必要な信号レベルである。
そして、設定された読み出しレベルで、ブロック0とブロック1のそれぞれから最新のデータを読み出す(ステップ1102、1103)。例えば、図10の(3)の場合であれば、ブロック0の領域0に格納されるデータ「d1」と、ブロック1の領域0に格納されているデータ「d1」が最新のデータとして読み出される。
次いで、2つのブロックから読み出したデータの比較を行う(ステップ1104)。2つのデータが互いに一致する場合には、当該読み出したデータを有効データとする(ステップ1105)。データが不一致の場合は、予め決めてあるディフォルトデータ「d0」をデータとする(ステップ1106)。
例えば、図10の(3)のタイミングでデータの読み出しがなされた場合、ブロック0とブロック1から読み出したデータ「d1」が一致するので、データ「d1」が有効データとなる。
また、図10の(2)のタイミングでは、ブロック0から読み出されるデータがデータ「d1」で、ブロック1から読み出されるデータがデータ「FFH」であるので、ステップ1104の比較で不一致となり、ディフォルトデータ「d0」が有効データとなる。さらに、図10の(4)の場合も、ブロック0から読み出されるデータがデータ「d2」で、ブロック1から読み出されるデータがデータ「d1」であるので、不一致となり、ディフォルトデータ「d0」が有効データとなる。
上記図11に示すデータ読み出しにおける処理は、ユーザアプリケーション(ソフトウェア)上の制御によって行われる。
なお、データ不一致の場合の処理として、ディフォルトデータの代わりに前回の一致データを使用するという方法も存在する。
また、図10と図11に示す例では、2ブロックを使用して読み出しデータの一致判断を行う場合を示したが、3ブロックを使用した追記方法によって、3つのブロックから読み出した最新データの多数決により有効データを判断することいった方法もある。この3つのブロックからの読み出しデータについて多数決により有効データを判断する方法については、例えば特開平11−325953号公報(特許文献1)に開示されている。
特開平11−325953号公報
上述した従来のフラッシュメモリにおけるデータアクセス制御方法にあっては、以下に述べるような種々の問題点がある。
2つのブロックを使用してデータの追記を行う従来のフラッシュメモリにおいては、電源瞬断等の原因によりデータの書き換え処理が中断したような場合、例えば、図10の(2)からブロック1の領域0にデータを書き込む際のタイミングTで電源瞬断等で処理が中断した場合、2つのブロックにあるデータの一致性が損なわれてしまい、最新のデータが使用されない可能性がある。
この理由は、各ブロックから読み出した2つのデータを比較し、一致するかどうかによってデータの有効と無効を判別するが、不一致の場合に何れのブロックのデータが有効なのかを判断できず、ディフォール値を有効データとするためである。図10の例の場合、「t」で示したタイミングにおいて、電源瞬断等で処理が中断した場合には、実際にブロックに最新のデータが格納されていても、データ不一致となり最新データが保持されていないと判断される。また、データの更新でブロックの領域が一杯になってしまうと消去する必要があるため、何れかのブロックが消去された状態でも、上記と同様に有効データの判別ができなくなる場合がある。
また、特許文献1に開示されるような3つ以上のブロックを使用して多数決によって有効データを判断する場合おいても、上記のように電源瞬断等の原因で書き換え処理が中断した場合には、各ブロックのデータの有効性が保証されないので、有効データの正しい判断ができない可能性がある。
さらに、3つ以上のブロックを使用して多数決によって有効データを判断する方式の場合、多数のブロックに同一のデータを書き込みことから領域の無駄が大きいという欠点もある。
本発明の目的は、データの書き換えの際に書き換えが中断されたような場合でも、有効なデータを格納しているデータ領域を正しく判定することができるフラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラムを提供することにある。
上記目的を達成する本発明は、データを書き込むデータ領域を有する複数のブロックを有し、複数の当該ブロックを使用してデータの追記による書き込みを行うフラッシュメモリにおけるデータアクセス制御方法であって、ブロックに、データが書き込まれた前記データ領域の有効性を判別するためのフラグであって、データ領域が有効であることを示す有効フラグと、無効であることを示す無効フラグを設け、ブロックからデータの読み出しを行う際に、複数のブロックから有効フラグと無効フラグの値を読み出し、読み出した有効フラグと無効フラグの値によって、何れのブロックのデータ領域が有効であるかどうかの判別を行うものである。
また、他の態様によれば、ブロックからデータの読み出しを行う際に、複数のブロックから有効フラグと無効フラグの値を読み出してデータ領域の有効性を判定する場合に、有効フラグと無効フラグの値を、異なる2つ以上の信号レベルで読み出すようにする。この場合、信号レベルとして、ブロックからデータを読み出す際の読み出しレベルである第1の信号レベルと、ブロックのデータ領域にデータを書き込む際の書き込みレベルあるいはブロックの消去を行う際の消去レベルである第2の信号レベルを用いる。
本発明のフラッシュメモリにおけるデータアクセス制御方法によれば、以下に述べるような優れた効果が得られる。
第1に、データの書き換えの際、電源瞬断等により書き換えが中断された場合でも、有効なデータを格納しているデータ領域を正しく判定することができる。
第2に、電源瞬断等により書き換えが中断された結果、通常の読み出しレベルではブロック内の有効フラグ、無効フラグの読み出しが不正となるような稀な状態でも、有効なデータを格納しているデータ領域を正確に判定することができる。
有効フラグ、無効フラグの読み出しに使用する読み出しレベルを2以上備えているためである。
以下、本発明の好ましい実施例について図面を参照して詳細に説明する。
図1は、本発明を適用するデータ処理システムの構成を示しており、フラッシュメモリ10、CPU20、RAM30が互いにシステムバスにより接続された構成になっている。
CPU20は、フラッシュメモリ10に対するアドレス/データ/コマンドの各信号による制御を行う。
フラッシュメモリ10には、CPU20によって実行されるプログラム(データアクセス制御プログラム)及びデータを格納する。
RAM30には、フラッシュメモリ10の書き換え処理がなされる場合に、フラッシュメモリ10から上記プログラムが転送され格納される。
プログラム制御されるCPU20によるフラッシュメモリ10に対するデータ書き換え処理は、例えば以下のような処理手順によって実行される。
(a)CPU20からフラッシュメモリ10内に格納されているデータアクセス制御プログラム100をRAM30へ転送する(フラッシュメモリ10から読み出して、RAM30へ書き込む)。
(b)フラッシュメモリ10上のプログラムからRAM30上プログラムへ分岐する。
(c)CPU20からフラッシュメモリ10に対して、書き込み指定アドレス、データ及び書き込み要求コマンド信号を出力する。
(d)フラッシュメモリ10は、CPU20から書き込み要求コマンドに基づいて書き込み指定アドレスにデータの書き込みを行う。
(e)書き込み(又は消去)が完了すると、フラッシュメモリ10からCPU20に対して完了割り込みを出力する。
以上の手順により、フラッシュメモリ10の各ブロックに対するデータの書き込み又は消去が実行される。
CPU20で実行されるデータアクセス制御プログラム100の制御によるフラッシュメモリ10のデータ読み出し処理については後述する。
図2は、本発明の第1の実施例によるフラッシュメモリ10の構成に示している。第1の実施例によるフラッシュメモリ10は、図示のように、多数のブロック(0)、(1)、〜(N)から構成されており、それらブロックの2つずつを使用してデータの書き換え処理を行う。図2の場合、ブロック(0)とブロック(1)に同一のデータを書き込むことでデータの書き換え処理を行う。
フラッシュメモリ10の一部には、フラッシュメモリ10に対するデータ書き換え処理を行うためのデータアクセス制御プログラム100が格納されており、このデータアクセス制御プログラム100がCPU20で実行され、CPU20の制御によってフラッシュメモリ10のデータ書き換え処理がなされる。
本実施例によるフラッシュメモリ10のブロック(0)〜(N)は、図示のように、複数のデータ領域0〜n(nは1以上の数)を有すると共に、有効フラグ10aと無効フラグ10bを有している。
有効フラグ10aと無効フラグ10bは、ブロックのデータ領域(書き込まれているデータ)が有効であるか否かを示すためのフラグであり、有効である場合有効フラグ10aに値「00H」が、無効である場合無効フラグ10bに値「00H」が書き込まれる。書き込む値については、有効と無効を区別できれば任意に定めることができる。
図3は、従来のフラッシュメモリの構成を示す図であり、多数のブロックからなる点については本実施例のフラッシュメモリと同じであるが、各ブロックは複数のデータ領域0〜nを有するだけである。
以下、第1の実施例によるフラッシュメモリによるデータ書き換え処理とデータ読み出しにおけるデータ判別処理について説明する。
図4は、フラッシュメモリ10のブロック(0)とブロック(1)の2つのブロックを使用してデータの書き換え処理を行う場合の状態変化を示している。ここで、便宜上、ブロック(0)とブロック(1)がそれぞれ1つのデータ領域と有効フラグ10a及び無効フラグ10bからなる場合を示している。
ここでは、初期状態においては、フラッシュメモリ10のブロック(0)、(1)のデータ領域、有効フラグ10a及び無効フラグ10bにはそれぞれ初期値としてデータ「FFH」が格納されている。この初期状態からデータの追記とブロックの消去を順次行う場合について説明する。
図5はデータの書き換え処理の流れを示すフローチャートである。まず、CPU20上で実行されるデータアクセス制御プログラム100によって書き込みレベルの設定が行われる(ステップ501)。
そして、図4の(1)に示す初期状態において、ブロック(0)のデータ領域へのデータ書き込み要求が出力されると(ステップ502)、ブロック(0)に対してデータが書き込まれる(ステップ503)。ここでは、図4の(2)に示すように、データ「d0」が書き込まれる。
次いで、書き込みを行ったブロック(0)の有効フラグ10aにデータが有効であることを示す値(ここでは、値「00H」)が書き込まれる(ステップ504)。これにより、図4の(3)の状態となる。
次に、ブロック(1)のデータ領域へのデータ書き込み要求が出力されると(ステップ505)、ブロック(1)に対してデータが書き込まれる(ステップ506)。ここでは、図4の(4)に示すように、データ「d1」が書き込まれる。
次いで、書き込みを行ったブロック(1)の有効フラグ10aにデータが有効であることを示す値(値「00H」)が書き込まれる(ステップ507)。これにより、図4の(5)の状態となる。
ブロック(1)の有効フラグ10aへの書き込みがなされると、他方のブロック(0)の無効フラグ10bにデータが無効であることを示す値(ここでは、値「00H」)が書き込まれる(ステップ508)。これにより、図4の(6)の状態となる。
図5において、ステップ501からステップ504は、図4の(1)に示す初期状態からデータの書き込みがなされる場合の処理であり、以降の処理においては、ステップ505からの処理が繰り返される。
すなわち、一方のブロックにデータを書き込み、有効フラグ10aの書き込みを行った後に、書き込みを行ったブロックではない他方のブロックについて無効フラグ10bへの書き込みを行うといった処理を繰り返すことで、データの書き換えが実行される。図4中、書き換えがなされているブロックのデータ領域を網目によって示している。
ブロックの消去に際しては、図4の(6)、(11)に示すように、消去対象となるブロックのデータ領域、有効フラグ10a及び無効フラグ10bの全てに初期値「FFH」の書き込みを行う。
従来のフラッシュメモリでは、2つのブロックにそれぞれ同一のデータを書き込む処理を行っていたが、本実施例のフラッシュメモリ10においては、2つのブロックに書き込むデータは、それぞれ個別のデータであり、同一でも異なるデータもよい。
次に、上記のようにデータの書き込みがなされたフラッシュメモリ10からのデータ読み出しにおける有効領域(有効データ)の判別処理について図6に従って説明する。この処理は、図1に示すCPU20上で実行されるデータアクセス制御プログラム100によって実行される。
図6に示すように、まず読み出しレベルを設定する(ステップ601)。
そして、設定された読み出しレベルで、ブロック(0)とブロック(1)のそれぞれから有効フラグ10aと無効フラグ10bの値を読み出す(ステップ602、603)。例えば、図4の(5)の状態であれば、ブロック(0)について、有効フラグ10aの値「00H」、無効フラグ10bの値「FFH」が読み出され、ブロック(1)について、有効フラグ10aの値「00H」、無効フラグ10bの値「FFH」が読み出される。
次いで、上記読み出した有効フラグ10aと無効フラグ10bの値による判定がなされる(ステップ604)。
この判定処理においては、ブロック(0)について、有効フラグ10aの値が「00H」、無効フラグ10bの値が「FFH」である場合には、ブロック(1)の有効フラグと無効フラグの状態によらず、ブロック(0)のデータ領域が有効領域であると判定する(ステップ605)。すなわち、ブロック(0)のデータ領域に書き込まれているデータが有効データとなる。
また、ブロック(0)の有効フラグ10aと無効フラグ10bの値が、「00H」と「FFH」の組み合わせ以外の場合であって、ブロック(1)の有効フラグ10aの値が「00H」、無効フラグ10bの値が「FFH」である場合には、ブロック(1)のデータ領域が有効領域であると判定する(ステップ606)。すなわち、ブロック(1)のデータ領域に書き込まれているデータが有効データとなる。
本実施例では、上記のように、フラッシュメモリ10の2つのブロック(0)、ブロック(1)を使用して、データ追記によるデータ書き換えを行う際、例えば、ブロック(0)が一杯になった場合、新規のデータを、ブロック(1)へ書き込み、ブロック(0)については、ブロック(1)が一杯になった後に新規のデータを書き込みのために消去を行う(図4の(7)、(11))。
この場合、あるブロックへのデータ書き換えに何らかの原因(電源瞬断等)により失敗した場合、又はあるブロックの消去が実行された場合、ブロック(0)、ブロック(1)の何れのブロックに書き込まれているデータが有効かを判別するための手段が必要となる。
本実施例によるフラッシュメモリ10では、ブロック(0)、ブロック(1)のそれぞれに有効フラグ10a、無効フラグ10bを設け、図6に示す手順によって有効領域の判別を行うことにより、上記何れの場合でもどのブロックが有効かを的確に判別することができる。
ところで、図4の(6)でブロック(0)の無効フラグ10bへの書き込みを行った後、ブロック(0)の消去を行う際(図4のタイミングt)、電源瞬断等の原因により書き換えが中断した場合、場合によってはブロック(0)が有効な状態となってしまう場合が発生する可能性もある(すなわち、ブロック(0)の有効フラグ10aが値「00H」、無効フラグ10bの値が「FFH」であると判定される)。
この状態を図8、図9を用いて説明する。
図8、図9は、フラッシュメモリ10の書き込み、読み出し、消去の各制御を行う場合の制御信号のレベル(電圧レベル)を示している。例えば、消去レベル(EWV)が2V(ボルト)、読み出しレベル(READ)が4V、書き込みレベル(WWV)が6Vのように、各レベルが設定される。
フラッシュメモリ10の各ブロックへのデータ、有効フラグ10aと無効フラグ10bの値の書き込みが正常に行われている状態では、有効フラグ10aと無効フラグ10bに有効を示す値「00H」が書き込まれると、図8に示すように、書き込みレベルより高い信号レベルとなり、無効を示す値「FFH」では消去レベル(EWV)より低い信号レベルとなっている。図8では、有効フラグ10aの値が「00H」で、無効フラグ10bの値が「FFH」の場合を示している。
この状態において、図6に示すように、読み出しレベル(READ)に基づいて、各ブロックの有効フラグ10aと無効フラグ10bの読み出しを行えば、それぞれの値を正確に読み出すことができ、有効フラグ10aが「00H」で無効フラグ10bが「FFH」であると判定される。
ところが、上記の例のように、電源瞬断等の原因により、ブロック(0)への書き換えが正常に行われずに中断したような場合、正常に書き込みがなされていれば本来ブロック(0)の有効フラグ10aと無効フラグ10bの値は共に「FFH」(図4の(8)の状態)であり、図9の×印で示す信号レベルにあるべきが、ブロック(0)の有効フラグ10a及び無効フラグ10bの信号レベルが図9の○印で示す信号レベルのように、有効フラグ10aが読み出しレベル(READ)より僅かに高く、無効フラグ10bが読み出しレベル(READ)より僅かに低いレベルとなってしまう場合がある。
この場合、図6に示す手順で、読み出しレベル(READ)に基づいて、各ブロックの有効フラグ10aと無効フラグ10bの読み出しを行うと、有効フラグ10aが「00H」で無効フラグ10bが「FFH」であると判定されてしまい、不正な状態となる。
本発明の第2の実施例では、上記ような不正な状態の発生をなくし、より正確に有効領域の判定を行うことができるようにしている。
第2の実施例によるフラッシュメモリ10の各ブロックの構造については、第1の実施例と同じであり、この実施例では、データ読み出しにおける有効領域(有効データ)の判別処理が第1の実施例と相違する。
第2の実施例によるフラッシュメモリ10からのデータ読み出しにおける有効領域(有効データ)の判別処理について図7に従って説明する。この処理は、図1に示すCPU20の制御によって実行される。
図7に示すように、まず読み出しレベル(READ)に設定する(ステップ701)。
そして、設定された読み出しレベルで、ブロック(0)とブロック(1)のそれぞれから有効フラグ10aと無効フラグ10bの値を読み出す(ステップ702、703)。
次いで、上記読み出した有効フラグ10aと無効フラグ10bの値による判定がなされる(ステップ704)。
この判定処理においては、ブロック(0)の有効フラグ10aと無効フラグ10bの値が「00H」、「FFH」で、ブロック(1)の有効フラグ10aと無効フラグ10bの値が「00H」と「FFH」の組み合わせ以外である場合、ブロック(0)のデータ領域が有効領域であると判定する(ステップ705)。すなわち、ブロック(0)のデータ領域に書き込まれているデータが有効データとなる。
また、ブロック(0)の有効フラグ10aと無効フラグ10bの値が「00H」と「FFH」の組み合わせ以外で、ブロック(1)の有効フラグ10aと無効フラグ10bの値が「00H」、「FFH」である場合には、ブロック(1)のデータ領域が有効領域であると判定する(ステップ706)。すなわち、ブロック(1)のデータ領域に書き込まれているデータが有効データとなる。
ステップ704の判定で、ブロック(0)とブロック(1)の有効フラグ10aと無効フラグ10bの値が、何れも「00H」、「FFH」である場合、上記のように書き換えが正常に行われずに中断した場合であって、ブロック(0)またはブロック(1)の有効フラグ10aと無効フラグ10bの信号レベルが、図9に示すように、本来の信号レベルとなっておらず、フラグの読み出しが正確に行われていない不正状態となっている可能性がある。よって、この場合、レベルを書き込みレベル(WWV)に設定して(ステップ707)、再度有効フラグ10aと無効フラグ10bの値を読み出す(ステップ708、709)。
そして、読み出した有効フラグ10aと無効フラグ10bに対する判定を行う(ステップ710)。
この判定処理では、ステップ704と同様に、ブロック(0)の有効フラグ10aと無効フラグ10bの値が「00H」、「FFH」で、ブロック(1)の有効フラグ10aと無効フラグ10bの値が「00H」と「FFH」の組み合わせ以外である場合、ブロック(0)のデータ領域が有効領域であると判定し(ステップ705)、ブロック(0)の有効フラグ10aと無効フラグ10bの値が「00H」と「FFH」の組み合わせ以外で、ブロック(1)の有効フラグ10aと無効フラグ10bの値が「00H」、「FFH」である場合には、ブロック(1)のデータ領域が有効領域であると判定する(ステップ706)。
例えば、図4のタイミングtで書き換え処理が中断して、ブロック(0)の有効フラグ10aと無効フラグ10bの信号レベルが図9の○印で示すような状態となり、ブロック(1)の有効フラグ10aと無効フラグ10bの信号レベルが図8に示す状態である場合、上記書き込みレベル(WWV)による有効フラグ10aと無効フラグ10bの読み出しを行えば、各フラグを値を正確に読み出すことができ、正確な有効領域の判定が実現する。
なお、図7に示す判別処理では、読み出しレベル(READ)以外に、書き込みレベル(WWV)によって有効フラグと無効フラグの読み出しを行って判定を行う場合を示したが、消去レベル(EWV)によって判定を行うようにしてもよいことは言うまでもない。
本実施例によれば、上記のような不正状態についても、読み出しレベル(READ)だけでなく、書き込みレベル(WWV)あるいは消去レベル(EWV)で判断することにより、正確に有効領域の判別が可能となる。有効領域の判別に2つ以上の読み出しレベルを設けることにより、より正確な有効領域の判別が行える。すなわち、電源瞬断等により書き換えが中断された結果、通常の読み出しレベルではブロック内の有効フラグ、無効フラグの読み出しが不正となるような稀な状態でも、有効なデータを格納しているデータ領域を正確に判定することができる。
以上好ましい実施例をあげて本発明を説明したが、本発明は必ずしも上記実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
上記実施例では、フラッシュメモリ10のブロックのデータ領域が1つの場合を例にとって説明したが、各ブロックのデータ領域が複数の場合でも同様に本発明を適用することができる。各ブロックに複数のデータ領域が存在する場合には、例えば、各ブロックの複数のデータ領域について最新のデータを書き込んだデータ領域を有効領域とする。
本発明によるフラッシュメモリにおけるデータアクセス制御方法を適用するデータ処理システムの構成例を示すブロック図である。 本発明の第1の実施例によるフラッシュメモリの構成を示す図である。 従来のフラッシュメモリの構成例を示す図である。 本発明の第1の実施例によるフラッシュメモリのの2つのブロックを使用してデータの書き換え処理を行う場合の状態変化を示す図である。 本発明の第1の実施例によるフラッシュメモリにおける2つのブロックを使用してデータの書き換え処理の処理内容を示すフローチャートである。 本発明の第1の実施例によるフラッシュメモリのデータ読み出しにおける有効領域の判別処理を示すフローチャートである。 本発明の第2の実施例によるフラッシュメモリのデータ読み出しにおける有効領域の判別処理を示すフローチャートである。 有効フラグと無効フラグの信号レベルとフラッシュメモリの読み出しレベル、書き込みレベル及び消去レベルの各信号レベルとの関係を示す図である。 有効フラグと無効フラグの信号レベルとフラッシュメモリの読み出しレベル、書き込みレベル及び消去レベルの各信号レベルとの関係を示す図である。 従来のフラッシュメモリにおける2つのブロックを使用してデータの書き換え処理を行う場合の状態変化を示す図である。 従来のフラッシュメモリのデータ読み出しにおける有効データの判別処理を示すフローチャートである。
符号の説明
10:フラッシュメモリ
20:CPU
30:RAM
100:データアクセス制御プログラム

Claims (14)

  1. データを書き込むデータ領域を有する複数のブロックを有し、複数の当該ブロックを使用してデータの追記による書き込みを行うフラッシュメモリにおけるデータアクセス制御方法であって、
    前記ブロックに、データが書き込まれた前記データ領域の有効性を判別するためのフラグを設け、
    前記ブロックからデータの読み出しを行う際に、複数の前記ブロックから前記フラグの値を読み出し、読み出した前記フラグの状態により、有効な前記データ領域の判別を行うことを特徴とするフラッシュメモリにおけるデータアクセス制御方法。
  2. 複数の前記ブロックを使用してデータの追記を行う場合に、一方の前記ブロックの前記データ領域にデータを書き込んだ際に、当該ブロックの前記フラグを有効に、他方の前記ブロックの前記フラグを無効に設定することを特徴とする請求項1に記載のフラッシュメモリにおけるデータアクセス制御方法。
  3. 前記ブロックの前記フラグとして、前記データ領域が有効であることを示す有効フラグと、無効であることを示す無効フラグを設け、
    複数の前記ブロックを使用してデータの追記を行う場合に、一方の前記ブロックの前記データ領域にデータを書き込んだ際に、当該ブロックの前記有効フラグに有効を示す値を書き込み、他方の前記ブロックの前記無効フラグに無効を示す値を書き込むことを特徴とする請求項1又は請求項2に記載のフラッシュメモリにおけるデータアクセス制御方法。
  4. 前記ブロックからデータの読み出しを行う際に、複数の前記ブロックから前記有効フラグと前記無効フラグの値を読み出し、
    一方の前記ブロックの前記有効フラグと前記無効フラグの値が、それぞれ有効を示す値と無効でない値の組み合わせの場合に、他方の前記ブロックの有効フラグと無効フラグの値に関わらず、一方の前記ブロックのデータ領域を有効と判定し、
    一方の前記ブロックの前記有効フラグと前記無効フラグの値が、それぞれ有効を示す値と無効でない値の組み合わせ以外の場合、前記他方の前記ブロックの前記有効フラグと前記無効フラグの値が、有効を示す値と無効でない値の組み合わせの場合に、他方の前記ブロックのデータ領域を有効と判定することを特徴とする請求項3に記載のフラッシュメモリにおけるデータアクセス制御方法。
  5. 前記ブロックからデータの読み出しを行う際に、複数の前記ブロックから前記有効フラグと前記無効フラグの値を読み出してデータ領域の有効性を判定する場合に、
    前記有効フラグと前記無効フラグの値を、異なる2つ以上の信号レベルで読み出すことを特徴とする請求項3又は請求項4に記載のフラッシュメモリにおけるデータアクセス制御方法。
  6. 前記信号レベルとして、前記ブロックからデータを読み出す際の読み出しレベルである第1の信号レベルと、前記ブロックの前記データ領域にデータを書き込む際の書き込みレベルあるいは前記ブロックの消去を行う際の消去レベルである第2の信号レベルを用いることを特徴とする請求項5に記載のフラッシュメモリにおけるデータアクセス制御方法。
  7. 前記ブロックからデータの読み出しを行う際に、前記第1の信号レベルで複数の前記ブロックから前記有効フラグと前記無効フラグの値を読み出し、
    前記ブロックの前記有効フラグと前記無効フラグの値が、一方が有効を示す値と無効でない値の組み合わせで、他方が有効を示す値と無効でない値の組み合わせ以外の場合、前記有効フラグと前記無効フラグの値が、有効を示す値と無効でない値の組み合わせの前記ブロックのデータ領域を有効と判定し、
    双方の前記ブロックの前記有効フラグと前記無効フラグの値が、それぞれ有効を示す値と無効でない値の組み合わせの場合に、前記第2の信号レベルで複数の前記ブロックから前記有効フラグと前記無効フラグの値を読み出し、
    前記ブロックの前記有効フラグと前記無効フラグの値が、一方が有効を示す値と無効でない値の組み合わせで、他方が有効を示す値と無効でない値の組み合わせ以外の場合、前記有効フラグと前記無効フラグの値が、有効を示す値と無効でない値の組み合わせの前記ブロックのデータ領域を有効と判定することを特徴とする請求項6に記載のフラッシュメモリにおけるデータアクセス制御方法。
  8. CPUを制御し、データを書き込むデータ領域を有する複数のブロックを有し、複数の当該ブロックを使用してデータの追記による書き込みを行うフラッシュメモリのアクセス制御を行うデータアクセス制御プログラムであって、
    前記ブロックが、データが書き込まれた前記データ領域の有効性を判別するためのフラグを有し、
    前記ブロックからデータの読み出しを行う際に、複数の前記ブロックから前記フラグの値を読み出し、読み出した前記フラグの状態により、有効な前記データ領域の判別を行う機能を有することを特徴とするフラッシュメモリにおけるデータアクセス制御プログラム。
  9. 複数の前記ブロックを使用してデータの追記を行う場合に、一方の前記ブロックの前記データ領域にデータを書き込んだ際に、当該ブロックの前記フラグを有効に、他方の前記ブロックの前記フラグを無効に設定する機能を有することを特徴とする請求項8に記載のフラッシュメモリにおけるデータアクセス制御プログラム。
  10. 前記ブロックの前記フラグとして、前記データ領域が有効であることを示す有効フラグと、無効であることを示す無効フラグを設け、
    複数の前記ブロックを使用してデータの追記を行う場合に、一方の前記ブロックの前記データ領域にデータを書き込んだ際に、当該ブロックの前記有効フラグに有効を示す値を書き込み、他方の前記ブロックの前記無効フラグに無効を示す値を書き込む機能を有することを特徴とする請求項8又は請求項9に記載のフラッシュメモリにおけるデータアクセス制御プログラム。
  11. 前記ブロックからデータの読み出しを行う際に、複数の前記ブロックから前記有効フラグと前記無効フラグの値を読み出し、
    一方の前記ブロックの前記有効フラグと前記無効フラグの値が、それぞれ有効を示す値と無効でない値の組み合わせの場合に、他方の前記ブロックの有効フラグと無効フラグの値に関わらず、一方の前記ブロックのデータ領域を有効と判定し、
    一方の前記ブロックの前記有効フラグと前記無効フラグの値が、それぞれ有効を示す値と無効でない値の組み合わせ以外の場合、前記他方の前記ブロックの前記有効フラグと前記無効フラグの値が、有効を示す値と無効でない値の組み合わせの場合に、他方の前記ブロックのデータ領域を有効と判定する機能を有することを特徴とする請求項10に記載のフラッシュメモリにおけるデータアクセス制御プログラム。
  12. 前記ブロックからデータの読み出しを行う際に、複数の前記ブロックから前記有効フラグと前記無効フラグの値を読み出してデータ領域の有効性を判定する場合に、
    前記有効フラグと前記無効フラグの値を、異なる2つ以上の信号レベルで読み出す機能を有することを特徴とする請求項10又は請求項11に記載のフラッシュメモリにおけるデータアクセス制御プログラム。
  13. 前記信号レベルとして、前記ブロックからデータを読み出す際の読み出しレベルである第1の信号レベルと、前記ブロックの前記データ領域にデータを書き込む際の書き込みレベルあるいは前記ブロックの消去を行う際の消去レベルである第2の信号レベルを用いることを特徴とする請求項12に記載のフラッシュメモリにおけるデータアクセス制御プログラム。
  14. 前記ブロックからデータの読み出しを行う際に、前記第1の信号レベルで複数の前記ブロックから前記有効フラグと前記無効フラグの値を読み出し、
    前記ブロックの前記有効フラグと前記無効フラグの値が、一方が有効を示す値と無効でない値の組み合わせで、他方が有効を示す値と無効でない値の組み合わせ以外の場合、前記有効フラグと前記無効フラグの値が、有効を示す値と無効でない値の組み合わせの前記ブロックのデータ領域を有効と判定し、
    双方の前記ブロックの前記有効フラグと前記無効フラグの値が、それぞれ有効を示す値と無効でない値の組み合わせの場合に、前記第2の信号レベルで複数の前記ブロックから前記有効フラグと前記無効フラグの値を読み出し、
    前記ブロックの前記有効フラグと前記無効フラグの値が、一方が有効を示す値と無効でない値の組み合わせで、他方が有効を示す値と無効でない値の組み合わせ以外の場合、前記有効フラグと前記無効フラグの値が、有効を示す値と無効でない値の組み合わせの前記ブロックのデータ領域を有効と判定する機能を有することを特徴とする請求項13に記載のフラッシュメモリにおけるデータアクセス制御プログラム。
JP2004044474A 2004-02-20 2004-02-20 フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラム Expired - Fee Related JP3924568B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004044474A JP3924568B2 (ja) 2004-02-20 2004-02-20 フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラム
US11/060,475 US7590793B2 (en) 2004-02-20 2005-02-18 Data access controlling method in flash memory and data access controlling program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004044474A JP3924568B2 (ja) 2004-02-20 2004-02-20 フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラム

Publications (2)

Publication Number Publication Date
JP2005234957A true JP2005234957A (ja) 2005-09-02
JP3924568B2 JP3924568B2 (ja) 2007-06-06

Family

ID=34858059

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004044474A Expired - Fee Related JP3924568B2 (ja) 2004-02-20 2004-02-20 フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラム

Country Status (2)

Country Link
US (1) US7590793B2 (ja)
JP (1) JP3924568B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012243143A (ja) * 2011-05-20 2012-12-10 Tokai Rika Co Ltd フラッシュメモリ装置
JP2014029616A (ja) * 2012-07-31 2014-02-13 Mega Chips Corp 半導体記憶装置
JP2015200945A (ja) * 2014-04-04 2015-11-12 Necプラットフォームズ株式会社 フラッシュメモリ制御装置、フラッシュメモリ内蔵機器、フラッシュメモリ制御方法、及びそのためのプログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010170599A (ja) * 2009-01-21 2010-08-05 Renesas Electronics Corp 不揮発性メモリ及びその制御方法
KR102227636B1 (ko) * 2014-12-31 2021-03-16 삼성디스플레이 주식회사 표시 장치용 데이터 저장 장치 및 이의 저장 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2593595A (en) * 1994-06-02 1996-01-04 Intel Corporation Sensing schemes for flash memory with multilevel cells
JPH11325953A (ja) 1998-05-13 1999-11-26 Yazaki Corp 電子オドメータ装置
JP3730423B2 (ja) * 1998-11-24 2006-01-05 富士通株式会社 半導体記憶装置
KR100330164B1 (ko) * 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US6938144B2 (en) * 2001-03-22 2005-08-30 Matsushita Electric Industrial Co., Ltd. Address conversion unit for memory device
JP3692313B2 (ja) 2001-06-28 2005-09-07 松下電器産業株式会社 不揮発性メモリの制御方法
JP4059473B2 (ja) * 2001-08-09 2008-03-12 株式会社ルネサステクノロジ メモリカード及びメモリコントローラ
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
JP2004258546A (ja) * 2003-02-27 2004-09-16 Casio Comput Co Ltd カメラ装置、及びカメラ装置の起動方法、プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012243143A (ja) * 2011-05-20 2012-12-10 Tokai Rika Co Ltd フラッシュメモリ装置
JP2014029616A (ja) * 2012-07-31 2014-02-13 Mega Chips Corp 半導体記憶装置
JP2015200945A (ja) * 2014-04-04 2015-11-12 Necプラットフォームズ株式会社 フラッシュメモリ制御装置、フラッシュメモリ内蔵機器、フラッシュメモリ制御方法、及びそのためのプログラム

Also Published As

Publication number Publication date
US7590793B2 (en) 2009-09-15
JP3924568B2 (ja) 2007-06-06
US20050188148A1 (en) 2005-08-25

Similar Documents

Publication Publication Date Title
KR100531192B1 (ko) 비휘발성 메모리의 제어방법
US6154808A (en) Method and apparatus for controlling data erase operations of a non-volatile memory device
JP2004310477A (ja) メモリカード
JP3875153B2 (ja) 不揮発性半導体記憶装置およびその書き換え禁止制御方法
JPH1050078A (ja) 電気的に消去およびプログラムが可能なリード・オンリ・メモリの消去およびプログラミング保護方法および装置
JP2004503891A (ja) 誤り訂正回路を備えた安全なeepromメモリ
JP3924568B2 (ja) フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラム
JP2003280979A (ja) 情報記憶装置
US20040186947A1 (en) Access control system for nonvolatile memory
JP2007257283A (ja) メモリコントローラ及びフラッシュメモリシステム
JP4327626B2 (ja) 不揮発性半導体記憶装置
JP2001109666A (ja) 不揮発性半導体記憶装置
JP2007052558A (ja) フラッシュメモリ書換え装置、フラッシュメモリ書換え方法及びフラッシュメモリ書換えプログラム
JP4031693B2 (ja) 不揮発性メモリおよびこれを有したデータ記憶装置
US20050068842A1 (en) Electronic device, nonvolatile memory and method of overwriting data in nonvolatile memory
US20070208929A1 (en) Device information managements systems and methods
JP3497066B2 (ja) フラッシュメモリにおけるデータ書き込み/読み出し方法およびフラッシュメモリを用いた記憶装置
JP5520880B2 (ja) フラッシュメモリ装置
TW412703B (en) Method for judging the finishing of write-in to micro computer
JP2000243093A (ja) フラッシュメモリへのデータ記憶方法及びフラッシュメモリからのデータ読出方法
US20030142570A1 (en) Memory controller and serial memory
JP4580724B2 (ja) 不揮発性メモリの制御方法
CN115668155A (zh) 具有增加的受保护存储区域和擦除保护的系统
JP2005166184A (ja) 半導体記憶装置
JP3980011B2 (ja) 不揮発性メモリ、およびそれを用いたメモリカード、情報処理装置、ならびに不揮発性メモリのソフトウェアライトプロテクト制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060901

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061121

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070226

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100302

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 4

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120302

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130302

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130302

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140302

Year of fee payment: 7

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees