JP3587842B2 - データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置 - Google Patents

データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置 Download PDF

Info

Publication number
JP3587842B2
JP3587842B2 JP2002364840A JP2002364840A JP3587842B2 JP 3587842 B2 JP3587842 B2 JP 3587842B2 JP 2002364840 A JP2002364840 A JP 2002364840A JP 2002364840 A JP2002364840 A JP 2002364840A JP 3587842 B2 JP3587842 B2 JP 3587842B2
Authority
JP
Japan
Prior art keywords
data
sector
address
written
rewrite
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.)
Expired - Fee Related
Application number
JP2002364840A
Other languages
English (en)
Other versions
JP2004199233A (ja
Inventor
芳弘 正名
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2002364840A priority Critical patent/JP3587842B2/ja
Priority to US10/665,617 priority patent/US7093063B2/en
Publication of JP2004199233A publication Critical patent/JP2004199233A/ja
Application granted granted Critical
Publication of JP3587842B2 publication Critical patent/JP3587842B2/ja
Priority to US11/476,807 priority patent/US7526601B2/en
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
    • 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
    • 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/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、フラッシュEEPROMメモリ(以下、フラッシュメモリとする)のデータを書き換えるデータ書き換え装置およびデータ書き換え方法に関する。
【0002】
【従来の技術】
フラッシュメモリは、不揮発性の複数のメモリセルによって構成されている。フラッシュメモリのデータ書き換えは、消去(イレース:Erase)と書き込み(ライト:Write)の2つがセットになっている。消去は1ページ分または複数ページ分あるいは1セクタ分または複数セクタ分のメモリセルを単位としてなされ、書き込みは1バイト分や1ワード分のメモリセルを単位としてなされ、消去単位は、書き込み単位よりも大きい(例えば、特許文献1参照)。また例えば、消去はメモリセルのフローティングゲートから電子を抜き取ることによってなされ、書き込みはメモリセルのフローティングゲートに電子を注入することによってなされる。このようなフラッシュメモリのデータ書き換えでは、まず消去単位のメモリセルを一括して消去し、そのあと消去単位内のそれぞれの書き込み単位にデータを書き込む。
【0003】
従来のデータ書き換えでは、消去は、セクタを完全に消去できるまで(データ読み出し時にメモリセルが消去状態であることが識別できるように、例えばフローティングゲートから電子を抜き取ることができるまで)、消去単位内のメモリセルのソースおよびドレインならびにコントロールゲートに継続して所定の消去電圧を印加することによってなされる。同様に、書き込みは、セクタを完全に書き込みできるまで(データ読み出し時にメモリセルが書き込み状態であることが識別できるように、例えばフローティングゲートに電子を注入することができるまで)、書き込み単位内のメモリセルのソースおよびドレインならびにコントロールゲートに継続して所定の書き込み電圧を印加することによってなされる。
【0004】
【特許文献1】
特開平11−85629号公報(図1)
【0005】
【発明が解決しようとする課題】
しかしながら上記従来のデータ書き換えでは、書き込み時間が数10[μs]と短いのに対し、消去時間が数10[ms]と非常に長いので、例えばコンタクト付きICカードやコンタクトレスICカードに内蔵されたフラッシュメモリのデータ書き換えのように、数[ms]で高速にデータ書き換えをする必要がある場合には、データ書き換え時間が長くなり過ぎるという課題があった。
【0006】
本発明は、このような従来の課題を解決するためになされたものであり、高速なデータ書き換えができるデータ書き換え装置およびデータ書き換え方法を提供することを目的とするものである。
【0007】
【課題を解決するための手段】
本発明のデータ書き換え装置は、使用するデータ容量よりもN(Nは2以上の整数)個以上多いセクタ数のフラッシュメモリのデータ書き換えをするデータ書き換え装置であって、セクタを完全に消去するのにかかる時間より短い時間で1個のセクタを合計N回で時分割に消去し、消去中のN個のセクタの書き換えデータを他のセクタに書き込むことを特徴とするものである。
【0008】
【発明の実施の形態】
実施の形態1
図1は本発明の実施の形態1のマイクロコンピュータの機能ブロック図である。この実施の形態1のマイクロコンピュータは、RAM2と、コントロールROM(C−ROM)3aおよびアプリケーションROM(AP−ROM)3bからなるROM3と、制御部4と、データバス5と、アドレスバス6とを備え、フラッシュメモリ部1のデータ書き換えをするデータ書き換え装置を構成している。フラッシュメモリ部1は、例えば、コンタクト付きICカードやコンタクトレスICカードに内蔵されているか、あるいはこの実施の形態1のマイクロコンピュータに内蔵されている。
【0009】
フラッシュメモリ部1は、ユーザデータなどが不揮発に書き込まれるフラッシュメモリを有する。RAM2には、ワークデータ(データ書き換え時の変数データなど)が一時書き込みされる。C−ROM3aには、フラッシュメモリ部1のデータ書き換えやマイクロコンピュータのその他の制御をするためのデータおよびプログラムが記憶されており、AP−ROM3bには、ユーザのアプリケーションプログラムが記憶されている。制御部4は、C−ROM3a内のプログラムに従って、データ書き換えなどを制御する。RAM2、ROM3、制御部4、およびフラッシュメモリ部1は、データバス5およびアドレスバス6によって相互に接続されている。
【0010】
フラッシュメモリ部1のデータ書き換えは、AP−ROM3b内のアプリケーションプログラムからC−ROM3a内のデータ書き換え制御プログラムをコールして、その制御プログラムに従ってなされるので、アプリケーションプログラムは、フラッシュメモリ部1のデータ書き換え制御を気にせずに処理できる。
【0011】
図2はフラッシュメモリ部1の機能ブロック図である。図2に示すように、フラッシュメモリ部1は、フラッシュデータメモリ11およびフラッシュバッファ12によって構成されたフラッシュメモリと、アドレスラッチ13と、アドレスポインタ14と、読み出し用データ差し替え回路15とを備えている。
【0012】
[フラッシュデータメモリ11]
フラッシュデータメモリ11は、フラッシュメモリで構成され、書き換えデータが書き込まれる32[バイト]構成のセクタ(データセクタ)を256個(データセクタ0,1,…,255)備えており、1セクタ単位または複数セクタ単位の消去と1ワード単位(2バイト単位)の書き込みが可能になっている。
【0013】
[フラッシュバッファ12]
フラッシュバッファ12は、書き換えデータが一時書き込みされる32[バイト]構成のデータエリアと、2[バイト]構成の管理エリア12bからなる34[バイト]構成のセクタ(バッファセクタ)を32個(バッファセクタ0,1,…,31)備えており、1セクタ単位または複数セクタ単位の消去と1ワード単位の書き込みが可能になっている。フラッシュバッファ12のバッファセクタ0〜31の管理エリア12bは、データセクタのセクタアドレスが書き込まれるセクタ管理手段を構成している。
【0014】
フラッシュデータメモリ11とフラッシュバッファ12は、消去時に同時に複数のセクタ(データセクタおよびバッファセクタ)を選択できるようになっており、同時に複数のセクタを消去できる構成になっている。
【0015】
図3は管理エリア11aのビット構成図である。図3に示すように、それぞれのバッファセクタに設けられた2[バイト]の管理エリア12aは、書き換えアドレスが書き込まれるセクタアドレスエリア12b(bit7−bit0の8[ビット])と、有効フラグが書き込まれる有効フラグエリア12c(bit8の1[ビット])と、重複フラグが書き込まれる重複フラグエリア12d(bit9の1[ビット])と、セクタポインタが書き込まれるセクタポインタエリア12e(bit13−bit10の4[ビット])と、未使用ビットエリア(bit15,bit14の2[ビット])とによって構成されている。
【0016】
上記の書き換えアドレスは、そのバッファセクタのデータエリアに一時書き込みされた書き換えデータを書き込むべきデータセクタのセクタアドレスである。また、有効フラグエリア12cの有効フラグおよび重複フラグエリア12dの重複フラグは、そのバッファセクタのセクタアドレスエリア12bの書き換えアドレスおよびデータエリアのデータが有効であるか無効であるかを示すフラグである。
【0017】
[アドレスラッチ13]
アドレスラッチ13は、管理エリア12aの下位9ビット(有効フラグエリア12cおよびセクタアドレスエリア12b)と同じビット構成の9[ビット]のラッチエリアを16個(ラッチエリアAd0,Ad1,…,Ad15)備えている。それぞれのラッチエリアのbit7−bit0には、書き換えアドレスが書き込まれ、bit8には、有効フラグが書き込まれる。このアドレスラッチ13の合計144[ビット]のラッチ出力は、読み出し用データ差し替え回路15に入力される。このアドレスラッチ13は、バッファセクタの管理エリアと同様に、データセクタのセクタアドレスが書き込まれるセクタ管理手段を構成している。ただし、このアドレスラッチ13では、bit8の有効フラグによって、そのバッファセクタのセクタアドレスエリア12bのセクタアドレスおよびデータエリアのデータが有効であるか無効であるかを示す。
【0018】
[アドレスポインタ14]
アドレスポインタ14は、5[ビット]のカウンタで構成され、フラッシュバッファ12およびアドレスラッチ13のポインタの役割を果たし、下位4ビット(bit3−bit0)でアドレスラッチ13のラッチエリアの位置を示し、5ビット全体でフラッシュバッファ12のバッファセクタの位置を示す。
【0019】
[読み出し用データ差し替え回路15]
図4は読み出し用データ差し替え回路15の構成例を示す図である。図4において、読み出し用データ差し替え回路15は、144(9×16)個のXORゲート15aと、16個のNORゲート15bと、16個のANDゲート15cと、1個のORゲート15dと、1個のINVゲート15eと、32個のANDゲート15fとによって構成されている。
【0020】
アドレスバス6(図1参照)からの入力アドレスは、13ビット構成であり、その上位8ビット(A12−A5)がセクタアドレスになっている。また、アドレスラッチ13のラッチエリアAdx(xは0,1,…15のいずれか)のラッチ出力では、下位8ビット(bit7−bit0)がセクタアドレス(書き換えアドレス)であり、上位1ビット(bit8)が有効フラグである。
【0021】
それぞれのXORゲート15aは、ラッチエリアAdxのラッチ出力のbity(yは0,1,…7のいずれか)と、入力アドレスのビットA(y+5)とを2入力とし、両ビットの同異を比較する。
【0022】
第(x+1)のNORゲート15bは、ラッチエリアAdxのbit7−bit0(データセクタアドレス)についてのXORゲート15aの8出力を入力とする。
【0023】
第(x+1)のANDゲート15cは、ラッチエリアAdxのbit7−bit0についてのNORゲート15bの出力と、ラッチエリアAdxのbit8(有効フラグ)とを入力とする。
【0024】
ORゲート15dは、16個のANDゲート15cの出力を入力とし、これらの16入力のOR信号を、フラッシュデータメモリ11とフラッシュバッファ12のセレクタ信号BUF/MEMBとしてを出力する。
【0025】
INVゲート15eは、アドレスポインタ14の最上位ビットbit4を入力とし、その反転信号を出力する。
【0026】
第(2x+1)のANDゲート15fは、第(x+1)のANDゲート15cの出力と、アドレスポインタ14のbit4とを2入力とし、バッファセクタ(x+16)の選択信号BSEL(x+16)を出力する。また、第(2x+2)のANDゲート15fは、第(x+1)のANDゲート15cの出力と、INVゲート15eの出力とを2入力とし、バッファセクタxの選択信号BSELxを出力する。
【0027】
この実施の形態1では、データセクタは32[バイト]構成、バッファセクタは34(32+2)[バイト]構成であり、消去単位は1[セクタ]または複数[セクタ]、書き込み単位は1[ワード](2[バイト])である。従って、1[セクタ]を消去したときには、フラッシュデータメモリ11では16回の書き込みがなされ、フラッシュバッファ12では17回の書き込みがなされる。
【0028】
セクタのデータエリアを32[バイト]構成としたフラッシュメモリでは、8[kバイト]のデータ容量は256[セクタ]に相当する。フラッシュメモリ部1のフラッシュメモリは、フラッシュデータメモリ11のデータセクタと、フラッシュバッファ12のバッファセクタのデータエリアとを併せて、288(258+32)[セクタ]で構成されており、8[kバイト]のデータ容量よりも32[セクタ]多い構成になっている。
【0029】
そして、この実施の形態1は、セクタを完全に消去するのにかかる時間よりも短い時間(ただし、セクタを完全に消去するのにかかる時間の1/16の時間以上)でデータ書き換え処理ごとに消去処理をすることによって1個のセクタを合計16回のデータ書き換え処理で時分割に消去し、消去中の16個のデータセクタに書き込むべき書き換えデータをバッファセクタに一時書き込みしておき、このバッファセクタに一時書き込みした書き換えデータを時分割消去が完了したデータセクタに書き込むことを特徴とするものである。
【0030】
[データ書き換え動作]
このような実施の形態1のデータ書き換え処理は、AP−ROM3b内のアプリケーションプログラムからC−ROM3a内のデータ書き換えサブルーチン(データ書き換え制御プログラム)をコールし、制御部4がそのデータ書き換えサブルーチンに従って制御する。以下に実施の形態1のデータ書き換え動作について説明する。
【0031】
図5から図7までは本発明の実施の形態1のデータ書き換え処理を説明する図であって、データ書き換え処理を繰り返したときのフラッシュデータメモリ11、バッファメモリ12、アドレスラッチ13、およびアドレスポインタ14の状態を示す図である。図5から図7までにおいて、(1)は1回目のデータ書き換え処理、(2)は2回目のデータ書き換え処理、(3)は16回目のデータ書き換え処理、(4)は17回目のデータ書き換え処理、(5)は32回目のデータ書き換え処理である。また、図5から図7までおよび以下の説明では、フラッシュデータメモリ11およびフラッシュバッファ12のメモリセルの消去状態を”0”、書き込み状態を”1”としている。
【0032】
[1回目のデータ書き換え処理]
図5(1)の1回目のデータ書き換え処理では、アドレスポインタ14は”00000”であり、アドレスポインタ14が示すバッファセクタ0(図2参照)のデータエリアには、書き換えデータData1が書き込まれ、上記バッファセクタ0の管理エリア(図2の12aおよび図3参照)には、1回目の書き換えアドレス(書き換えデータData1を書き込むべきデータセクタのアドレス)Add1(bit7−bit0)と、有効フラグ=”1”(bit8)と、重複フラグ=”0”(bit9)と、セクタポインタ=”0001”(bit13−bit10)とが書き込まれる。なお、上記バッファセクタ0は、1回目のデータ書き換え処理の前に消去が完了している。
【0033】
また、1回目のデータ書き換え処理では、アドレスポインタ14の下位4ビット”0000”が示すアドレスラッチ13のラッチエリアAd0(図2参照)には、1回目の書き換えアドレスAdd1(bit7−bit0)と、有効フラグ=”1”(bit8)とが書き込まれる。
【0034】
そして、1回目のデータ書き換え処理では、書き換えアドレスAdd1のデータセクタと、バッファセクタ1からバッファセクタ16までの16個のバッファセクタ(アドレスポインタの現データ+1からアドレスポインタの現データ+16までのバッファセクタ)の合計17セクタが同時に消去される。このときの消去時間は、従来の消去時間(セクタを完全に消去できる時間)よりも短く、上記従来の消去時間の1/16以上の時間である。
【0035】
書き換えアドレスAdd1のデータセクタと、バッファセクタ16は、この1回目のデータ書き換え処理での消去が最初の時分割消去となる。消去時間が従来よりも短いので、書き換えアドレスAdd1のデータセクタおよびバッファセクタ16は、中途半端な消去状態で、完全には消去されていない。また、バッファセクタ1は、この1回目のデータ書き換え処理での消去によって完全に消去されたことになる。
【0036】
[2回目のデータ書き換え処理]
図5(2)の2回目のデータ書き換え処理では、アドレスポインタ14が”00001”にインクリメントされ、アドレスポインタ14が示す第2のバッファセクタのデータエリアには、書き換えデータData2が書き込まれ、上記バッファセクタ1の管理エリア(図2の12aおよび図3参照)には、2回目の書き換えアドレス(書き換えデータData2を書き込むべきデータセクタのアドレス)Add2(bit7−bit0)と、有効フラグ=”1”(bit8)と、重複フラグ=”0”(bit9)と、セクタポインタ=”0001”(bit13−bit10)とが書き込まれる。
【0037】
また、2回目のデータ書き換え処理では、アドレスポインタ14の下位4ビット”0001”が示すアドレスラッチ13のラッチエリアAd1には、2回目の書き換えアドレスAdd2(bit7−bit0)と、有効フラグ=”1”(bit8)とが書き込まれる。
【0038】
そして、2回目のデータ書き換え処理では、書き換えアドレスAdd1,Add2の2個のデータセクタと、バッファセクタ2からバッファセクタ17までの16個のバッファセクタ(アドレスポインタの現データ+1からアドレスポインタの現データ+16までのバッファセクタ)の合計18セクタが同時に消去される。このときの消去時間も、上記1回目のデータ書き換え処理のときと同じである。
【0039】
書き換えアドレスAdd2のデータセクタおよびバッファセクタ17は、この2回目のデータ書き換え処理での消去が最初の時分割消去となり、書き換えアドレスAdd1のデータセクタおよびバッファセクタ16は、この2回目のデータ書き換え処理での消去が2回目の時分割消去となり、バッファセクタ2は、この2回目のデータ書き換え処理での消去によって完全に消去されたことになる。
【0040】
[3回目から15回目までのデータ書き換え処理]
3回目から15回目までのデータ書き換え処理では、上記1回目および2回目のデータ書き換え処理と同様に、データ書き換え処理ごとに、アドレスポインタ14が”00010”,”00011”,…,”01110”とインクリメントされ、アドレスポインタ14が示すバッファセクタ2からバッファセクタ14までのデータエリアに、3回目の書き換えデータData3から15回目の書き換えデータData15までが書き込まれ、上記バッファセクタ2からバッファセクタ14までの管理エリアに、3回目の書き換えアドレスAdd3から15回目の書き換えアドレスAdd15までと、有効フラグ=”1”と、重複フラグ=”0”と、セクタポインタ=”0001”とが書き込まれる。
【0041】
また、3回目から15回目までのデータ書き換え処理では、上記1回目および2回目のデータ書き換え処理と同様に、データ書き換え処理ごとに、アドレスポインタ14の下位4ビット”0010”,”0011”,…,”1110”が示すアドレスラッチ13のラッチエリアAd2からラッチエリアAd14までのラッチエリアに、3回目の書き換えアドレスAdd3から15回目の書き換えアドレスAdd15までと、有効フラグ=”1”とが書き込まれる。
【0042】
そして、3回目から15回目までのデータ書き換え処理では、上記1回目および2回目のデータ書き換え処理と同様に、データ書き換え処理ごとに、バッファセクタの管理エリアに書き込まれた書き換えアドレスの複数のデータセクタと、アドレスポインタの現データ+1からアドレスポインタの現データ+16までの16個のバッファセクタとが同時に消去される。
【0043】
[16回目のデータ書き換え処理]
図6(3)の16回目の書き換え処理では、アドレスポインタ14が”01111”にインクリメントされ、アドレスポインタ14が示すバッファセクタ15のデータエリアには、書き換えデータData16が書き込まれ、上記バッファセクタ15の管理エリア(図2の12aおよび図3参照)には、16回目の書き換えアドレス(書き換えデータData16を書き込むべきデータセクタのアドレス)Add16(bit7−bit0)と、有効フラグ=”1”(bit8)と、重複フラグ=”0”(bit9)と、セクタポインタ=”0001”(bit13−bit10)とが書き込まれる。
【0044】
また、16回目のデータ書き換え処理では、アドレスポインタ14の下位4ビット”1111”が示すアドレスラッチ13のラッチエリアAd15には、16回目の書き換えアドレスAdd16(bit7−bit0)と、有効フラグ=”1”(bit8)とが書き込まれる。
【0045】
そして、16回目のデータ書き換え処理では、書き換えアドレスAdd1,Add2,…,Add16の16個のデータセクタと、バッファセクタ16からバッファセクタ31までの16個のバッファセクタ(アドレスポインタの現データ+1からアドレスポインタの現データ+16までのバッファセクタ)の合計18セクタが同時に消去される。このときの消去時間も、上記1回目および2回目のデータ書き換え処理のときと同じである。
【0046】
この16回目のデータ書き換え処理がなされたことによって、アドレスラッチ13が一杯になり、フラッシュバッファ12が半分埋まる。書き換えアドレスAdd16のデータセクタおよびバッファセクタ31は、この16回目のデータ書き換え処理での消去が最初の時分割消去となる。また、書き換えアドレスAdd1のデータセクタおよびバッファセクタ16は、この16回目のデータ書き換え処理での消去が16回目の時分割消去となり、完全に消去されたことになる。
【0047】
[17回目のデータ書き換え処理]
図6(4)の17回目のデータ書き換え処理では、アドレスポインタ14が”10000”にインクリメントされ、アドレスポインタ14は、第17のバッファセクタを示し、アドレスポインタ14の下位4ビット”0000”は、上記1回目のデータ書き換え処理と同じアドレスラッチ13のラッチエリアAd0を示す。この17回目のデータ書き換え処理では、上記ラッチエリアAd0の有効フラグ(アドレスポインタの現データ−16のバッファセクタであるバッファセクタ0の管理エリアの有効フラグ)が、データ書き換え処理前にすでに”1”になっているので、上記バッファセクタ0に書き込まれている書き換えデータData1を、上記ラッチエリアAd0(上記バッファセクタ0の管理エリア)に書き込まれている1回目の書き換えアドレスAdd1のデータセクタに書き込み、一時保管のバッファセクタからデータセクタに移す。
【0048】
なお、上記1回目から16回目までの書き換え処理では、ラッチエリアAd0からラッチエリアAd15までのラッチエリアの有効フラグ(バッファセクタ16からバッファセクタ30までの管理エリアの有効フラグ)はデータ書き換え処理前には”1”になっていないので、バッファセクタ16からバッファセクタ30までのデータエリアのデータをデータセクタに移す処理はされない。
【0049】
また、17回目のデータ書き換え処理では、アドレスポインタ14が示すバッファセクタ16のデータエリアには、書き換えデータData17が書き込まれ、上記バッファセクタ16の管理エリア(図2の12aおよび図3参照)には、17回目の書き換えアドレス(書き換えデータData17を書き込むべきデータセクタのアドレス)Add17(bit7−bit0)と、有効フラグ=”1”(bit8)と、重複フラグ=”0”(bit9)と、セクタポインタ=”0001”(bit13−bit10)とが書き込まれる。
【0050】
また、17回目のデータ書き換え処理では、1回目の書き換えデータData1をデータセクタに移したあと、アドレスポインタ14の下位4ビットが示すアドレスラッチ13の上記ラッチエリアAd0では、上記1回目の書き換えアドレスAdd1(bit7−bit0)が17回目の書き換えアドレスAdd17(bit7−bit0)に書き換えられるとともに、有効フラグ=”1”(bit8)が書き込まれる。
【0051】
そして、17回目のデータ書き換え処理では、書き換えアドレスAdd2,Add3,…,Add17の16個のデータセクタと、バッファセクタ0およびバッファセクタ17からバッファセクタ31までの16個のバッファセクタ(アドレスポインタの現データ+1からアドレスポインタの現データ+16までのバッファセクタ)の合計32セクタが同時に消去される。このときの消去時間も、上記1回目および2回目のデータ書き換え処理のときと同じである。
【0052】
書き換えアドレスAdd17のデータセクタおよびバッファセクタ0は、この17回目のデータ書き換え処理での消去が最初の時分割消去となる。また、書き換えアドレスAdd2のデータセクタおよびバッファセクタ17は、この17回目のデータ書き換え処理での消去が16回目の時分割消去となり、完全に消去されたことになる。
【0053】
[18回目から31回目までのデータ書き換え処理]
18回目から31回目までのデータ書き換え処理では、上記17回目のデータ書き換え処理と同様に、データ書き換え処理ごとに、アドレスポインタ14が”10001”,”00010”,…,”11110”とインクリメントされ、アドレスポインタ14は、バッファセクタ17からバッファセクタ30までを順次示し、アドレスポインタ14の下位4ビット”0001”,”0010”,…,”1110”は、上記2回目から15回目までのデータ書き換え処理と同じアドレスラッチ13のラッチエリアAd1からラッチエリアAd14までを順次示す。これら18回目から31回目までのデータ書き換え処理では、上記ラッチエリアAd1からラッチエリアAd14の有効フラグ(バッファセクタ1からバッファセクタ14までの管理エリアの有効フラグ)がいずれも”1”なので、上記バッファセクタ1からバッファセクタ14までに一時書き込みされていた書き換えデータData2,Data3,…,Data15を、上記ラッチエリアAd1からラッチエリアAd14(上記バッファセクタ1からからバッファセクタ14までの管理エリア)に書き込まれている2回目から15回目までの書き換えアドレスAdd2,Add3,…,Add15のデータセクタに書き込んで移す処理をする。
【0054】
また、18回目から31回目までのデータ書き換え処理では、上記17回目のデータ書き換え処理と同様に、データ書き換え処理ごとに、アドレスポインタ14が示すバッファセクタ17からバッファセクタ30までのデータエリアに、18回目の書き換えデータData18から31回目の書き換えデータData31までが書き込まれ、上記バッファセクタ17からバッファセクタ30までの管理エリアに、18回目の書き換えアドレスAdd18から31回目の書き換えアドレスAdd31までと、有効フラグ=”1”と、重複フラグ=”0”と、セクタポインタ=”0001”とが書き込まれる。
【0055】
また、18回目から31回目までのデータ書き換え処理では、上記17回目のデータ書き換え処理と同様に、データ書き換え処理ごとに、2回目の書き換えデータData1から15回目の書き換えデータData15までをデータセクタに移したあと、アドレスポインタ14の下位4ビットが示すアドレスラッチ13の上記ラッチエリアAd1からラッチエリアAd14では、上記2回目の書き換えアドレスAdd2から上記15回目の書き換えアドレスAdd15までが、それぞれ18回目の書き換えアドレスAdd18から31回目の書き換えアドレスAdd31までに書き換えられるとともに、有効フラグ=”1”が書き込まれる。
【0056】
そして、18回目から31回目までのデータ書き換え処理では、上記17回目のデータ書き換え処理と同様に、データ書き換え処理ごとに、バッファセクタの管理エリアに書き込まれた書き換えアドレスの16個のデータセクタと、アドレスポインタの現データ+1からアドレスポインタの現データ+16までの16個のバッファセクタとが同時に消去される。
【0057】
[32回目の書き換え処理]
図7(5)の32回目の書き換え処理では、アドレスポインタ14が”11111”にインクリメントされ、アドレスポインタ14は、バッファセクタ31を示し、アドレスポインタ14の下位4ビット”1111”は、上記16回目のデータ書き換え処理と同じアドレスラッチ13のラッチエリアAd15を示す。この32回目のデータ書き換え処理では、上記ラッチエリアAd15の有効フラグ(アドレスポインタの現データ−16のバッファセクタであるバッファセクタ15の管理エリアの有効フラグ)が、データ書き換え処理前にすでに”1”になっているので、上記バッファセクタ15に書き込まれている書き換えデータData16を、上記ラッチエリアAd15(上記バッファセクタ15の管理エリア)に書き込まれている16回目の書き換えアドレスAdd16のデータセクタに書き込み、一時保管のバッファセクタからデータセクタに移す。
【0058】
また、32回目のデータ書き換え処理では、アドレスポインタ14が示すバッファセクタ31のデータエリアには、書き換えデータData32が書き込まれ、上記バッファセクタ31の管理エリア(図2の12aおよび図3参照)には、32回目の書き換えアドレス(書き換えデータData32を書き込むべきデータセクタのアドレス)Add32(bit7−bit0)と、有効フラグ=”1”(bit8)と、重複フラグ=”0”(bit9)と、セクタポインタ=”0001”(bit13−bit10)とが書き込まれる。
【0059】
また、32回目のデータ書き換え処理では、16回目の書き換えデータData16をデータセクタに移したあと、アドレスポインタ14の下位4ビットが示すアドレスラッチ13の上記ラッチエリアAd15では、上記16回目の書き換えアドレスAdd16(bit7−bit0)が32回目の書き換えアドレスAdd32(bit7−bit0)に書き換えられるとともに、有効フラグ=”1”(bit8)が書き込まれる。
【0060】
そして、32回目のデータ書き換え処理では、書き換えアドレスAdd17,Add18,…,Add32の16個のデータセクタと、バッファセクタ0からバッファセクタ15までの16個のバッファセクタ(アドレスポインタの現データ+1からアドレスポインタの現データ+16までのバッファセクタ)の合計32セクタが同時に消去される。このときの消去時間も、上記1回目および2回目のデータ書き換え処理のときと同じである。
【0061】
この32回目のデータ書き換え処理がなされたことによって、アドレスラッチ13が再び一杯になり、フラッシュバッファ12が全て埋まる。書き換えアドレスAdd32のデータセクタは、この32回目のデータ書き換え処理での消去が最初の時分割消去となる。バッファセクタ15も、この32回目のデータ書き換え処理での消去が、2度目の消去においての最初の時分割消去となる。また、書き換えアドレスAdd17のデータセクタおよびバッファセクタ0は、この32回目のデータ書き換え処理での消去が16回目の時分割消去となり、完全に消去されたことになる。
【0062】
33回目のデータ書き換え処理は、上記1回目のデータ書き換え処理に、一時保管の書き換えデータをバッファセクタからデータセクタに移す処理を追加したものと同様である。つまり、33回目以降のデータ書き換え処理では、図5(1)から図7(5)までと同様の処理が繰り返される。このようなデータ書き換え処理の繰り返しによって、データセクタおよびバッファセクタは、時分割で順次消去され、書き換えデータは、消去が完了したバッファセクタに順次一時書き込みされ、消去が完了したデータセクタに順次移される。
【0063】
ただし、33回目以降のデータ書き換え処理では、バッファセクタの管理エリアには、セクタポインタ=”0010”(bit13−bit10、図3の12e参照)が書き込まれる。さらに、その次の32回のデータ書き換え処理である65回目以降のデータ書き換え処理では、セクタポインタ=”0100”が書き込まれる。このようにセクタポインタは、32回のデータ書き換え処理ごとに、”1”となるビットをシフトして書き込まれる。これは電源投入時のバッファセクタの最初の書き込み位置(電源投入前のバッファセクタの最後の書き込み位置)を識別するための手法である。なお、電源投入時の初期化処理については、あとで説明する。
【0064】
図8は本発明の実施の形態1のデータ書き換え処理を示すフローチャートである。図8および以下の説明では、フラッシュデータメモリ11およびフラッシュバッファ12のメモリセルの消去状態を”0”、書き込み状態を”1”としている。
【0065】
図8および以下の説明において、Pはアドレスポインタ14にセットされたデータ(ポインタデータ)である。また、LAT[P]は、アドレスラッチ13のラッチエリアであって、ポインタデータPの下位4[ビット]が示す位置のラッチエリアである。
【0066】
また、BUF[P],BUF[P−16],BUF[P+1],BUF[P+16]は、それぞれバッファセクタであって、BUF[P]は、ポインタデータPの位置のバッファセクタであり、BUF[P−16],BUF[P+1],BUF[P+16]は、それぞれデータP−16,P+1,P+16をポインタデータとしたときの位置のバッファセクタである。ただし、ここでは32個のバッファセクタをサイクリックに使用するため、P−16およびP+16は、いずれもポインタデータPに16を加算し、その値を32で除算した剰余である。つまり、P−16およびP+16は、
(P+16)mod32
なる演算で求めた値である。また、P+1は、ポインタデータPに1を加算し、その値を32で除算した剰余である。つまり、P+1は、
(P+1)mod32
なる演算で求めた値である。
【0067】
また、MEM[LAT[P]]は、データセクタであって、ラッチエリアLAT[P]に書き込まれた書き換えアドレスのデータセクタである。同時に、MEM[LAT[P]]は、バッファセクタBUF[P]またはBUF[P−16]の管理エリア(図2の12aおよび図3参照)に書き込まれた書き換えアドレスのデータセクタでもある。
【0068】
[ステップS1]
まず図8のステップS1で、ポインタデータPに1を加算して更新する。ただし、ここでは32個のバッファセクタをサイクリックに使用するため、実際には、ポインタデータPに1を加算し、その値を32で除算して、その剰余でポインタデータPを更新する。つまり、
(P+1)mod32
なる演算で求めた値でポインタデータPを更新する。
【0069】
[ステップS2,S3]
次にステップS2で、今回の書き換えアドレスが、すでにアドレスラッチ13に書き込まれている書き換えアドレスと重複しているか否かを判別し、重複している書き換えアドレスがあれば、ステップS3で、書き換えアドレスが重複しているバッファセクタの管理エリア(図2の12aおよび図3参照)の重複フラグ(bit9、図3の12d参照)に”1”を書き込み、さらにステップS4で、書き換えアドレスが重複しているアドレスラッチ13のラッチエリア内の有効フラグ(bit8)に”0”を書き込み、ステップS5に進む。また、上記ステップS2で重複している書き換えアドレスがなければ、ステップS5に進む。
【0070】
なお、上記ステップS3,S4で、書き換えアドレスの重複を識別するために、アドレスラッチ13のラッチエリアでは、有効フラグに”0”を書き込んで、そのラッチエリアに書き込まれた書き換えアドレスを無効にしているが、バッファセクタの管理エリアでは、重複フラグに”1”を書き込んで、その管理エリアに書き込まれた書き換えアドレスを無効にしている。これは、管理エリアの有効フラグを”0”に消去するには、そのバッファセクタを消去しなけでばならず、時間がかかるからである。また、上記図5から図7まででは、書き換えアドレスの重複はないものとして説明した。
【0071】
[ステップS5]
ステップS5では、ラッチエリアLAT[P]に書き込まれた有効フラグ(bit8)が”1”か否かを判別することによって、そのラッチエリアLAT[P]に書き込まれている書き換えアドレスが有効であるか否かを判別し、上記の有効フラグが”1”であればステップS6に進み、”0”であればステップS7に進む。
【0072】
このステップS5では、ラッチエリアLAT[P]はまだ更新前なので、ラッチエリアLAT[P]には、バッファセクタBUF[P−16]の管理エリアに書き込まれているものに相当する書き換えアドレスおよび有効フラグが書き込まれている。この更新前のラッチエリアLAT[P]の有効フラグ(bit8)は、バッファセクタBUF[P−16]に、データセクタMEM[LAT[P]]に書き込む有効な書き換えデータがあるか否かを示すフラグであって、有効な書き換えデータがある場合には”1”となり、今回の書き換え処理およびその15回前までの書き換え処理において書き換えアドレスが重複して無効になった場合や、バッファセクタBUF[P−16]がまだ未使用の場合には、無効であることを示す”0”となる。
【0073】
[ステップS6]
ステップS6では、バッファセクタBUF[P−16]に一時書き込みされている有効な書き換えデータを、データセクタMEM[LAT[P]]に書き込む。
【0074】
上記ステップS6では、ワード単位の書き込みになるので、16回の書き込み処理をすることになる。ここで、1[ワード]の書き込み時間を20[μs]とすると、この書き込み処理に320[μs]かかることになる。
【0075】
また、上記ステップS6で、データセクタに書き込まれる書き換えデータは、16回前のデータ書き換え処理においてバッファセクタBUF[P−16]に一時書き込みされた書き換えデータである。従って、上記ステップS6は、本来書き込まれるべきデータセクタMEM[LAT[P]]に、上記バッファセクタBUF[P−16]に一時書き込みされた書き換えデータを移す処理となる。
【0076】
[ステップS7]
次にステップS7で、バッファセクタBUF[P]のデータエリアに、今回の書き換えデータを書き込むとともに、バッファセクタBUF[P]の管理エリアに、今回の書き換えアドレス(bit7−bit0)および有効フラグ=”1”(bit8)を書き込む。
【0077】
上記ステップS7においても、ワード単位の書き込みで17回書き込むことになるので、この書き込み処理に340[μs]かかることになる。
【0078】
[ステップS8]
次にステップS8で、ラッチエリアLAT[P]に、今回の書き換えアドレス(bit7−bit0)および有効フラグ=”1”(bit8)を書き込んで、ラッチエリアLAT[P]を更新する。
【0079】
[ステップS9]
最後にステップS9で、16個のデータセクタMEM[LAT[P−15]]〜MEM[LAT[P]]の内で、書き換えアドレスが有効な(ラッチエリアに書き込まれた有効フラグが”1”である)全てのデータセクタと、16個のバッファセクタBUF[P+1]〜BUF[P+16]とを同時に消去する。
【0080】
なお、この実施の形態1では、フラッシュデータメモリ11およびフラッシュバッファ12のデコーダは複数のセクタを同時に選択できるようになっているので、同時に複数のデータセクタおよび複数のバッファセクタを消去することができる。
【0081】
また、この実施の形態1では、データ書き換え処理ごとの16回の時分割消去によってそれぞれのセクタを完全に消去するので、上記ステップS9での消去時間は、従来の消去時間の1/16の時間とすることができる。例えば、セクタの完全な消去に20[ms]必要な場合は、1.25[ms]の消去時間となる。
【0082】
以上で1回のデータ書き換え処理が完了したことになり、ソフト処理を除いた1回のデータ書き換え処理時間は、アドレス重複がない場合で0.32+0.34+1.25=1.91[ms]となり、アドレス重複があった場合でも管理エリアの書き込みが1回増えるだけなので、2[ms]以内で完了できる計算になる。
【0083】
[初期設定処理]
上記電源投入時の初期設定処理について以下に説明する。アドレスラッチ13およびアドレスポインタ14は、揮発性記憶手段(レジスタやカウンタ)で構成されており、電源が切れるとデータが消えてしまうので、電源投入時には、アドレスラッチ13およびアドレスポインタ14を初期設定できるようにする必要がある。そのためには、電源投入時のバッファセクタの最初の書き込み位置(電源投入前のバッファセクタの最後の書き込み位置)を識別できるようにする必要がある。
【0084】
そこで、この実施の形態1では、揮発性記憶手段で構成された第1のセクタ管理手段であるアドレスラッチ13の他に、フラッシュメモリで構成された第2のセクタ管理手段であるフラッシュバッファ12の管理エリア12aとによって、セクタ管理手段を構成し、電源が切れてもデータを保持できるフラッシュバッファ12の管理エリア12a内に設けたセクタポインタを参照することによって、電源投入時の最初の書き込み位置(電源投入前の最後の書き込み位置)を識別でき、アドレスラッチ13およびアドレスポインタ14を初期設定できるようにしている。
【0085】
セクタポインタは、上記図5から図7までにおいて説明したように、”0001”,”0010”,”0100”というように、32回のデータ書き換え処理ごとに”1”となるビットをシフトして書き込まれる。
【0086】
電源投入時に、管理エリア12aのセクタポインタを、バッファセクタ0からバッファセクタ31の順で参照していき、まずセクタポインタが”0000”でないバッファセクタを探し、そこからさらにセクタポインタが”0000”であるバッファセクタを探す。
【0087】
バッファセクタ0からバッファセクタ31の順で参照したとき、セクタポインタが”0000”でないデータから”0000”になった最初のバッファセクタが、電源投入時の最初の書き込み位置となり、そのバッファセクタの1個前のバッファセクタ(セクタポインタが”0000”でない最後のバッファセクタ)が電源投入前の最後の書き込み位置となるので、アドレスポインタ14には、この電源投入前の最後の書き込み位置を示すデータを初期設定する。
【0088】
次に、上記初期設定したアドレスポインタ14が示す位置のバッファセクタの管理エリアの下位9ビット(bit7−bit0の書き換えアドレスおよびbit8の有効フラグ、図3の12bおよび12c参照)をアドレスポインタ14の下位4ビットが示す位置のアドレスラッチ13のラッチエリアに書き込む。
【0089】
さらに、現アドレスポインタデータ−1の位置から現アドレスポインタデータ−16の位置までの管理エリア12aの下位9ビットを、それぞれ現アドレスポインタデータ−1の下位4ビットの位置から現アドレスポインタデータ−16の下位4ビットの位置までのアドレスラッチ13のラッチエリアにそれぞれ書き込む。以上で、アドレスラッチ13およびアドレスポインタ14の初期設定が完了する。
【0090】
ここで、セクタポインタ(図3の12e参照)に、”1”にするビットの位置を変えたポインタを使用しているのは、バッファセクタの消去が16回のデータ書き換え処理での時分割消去によってなされるため、管理エリア12aによっては中途半端な消去状態(消去途中の状態)のものが存在するが、このような消去途中の管理エリア12aを含んでいても、電源投入時の最初の書き込み位置(電源投入前の最後の書き込み位置)を確実に識別することができるようにするためである。
【0091】
以上の初期設定処理によって電源投入時にアドレスラッチ13およびアドレスポインタ14を確実に初期設定することができる。
【0092】
このような初期設定処理は、C−ROM3a内にサブルーチンとして用意しておけば、AP−ROM3b内のアプリケーションプログラムからC−ROM3a内の初期設定サブルーチン(初期設定制御プログラム)をコールし、制御部4がその初期設定サブルーチンに従って制御する。
【0093】
[データ読み出し動作]
実施の形態1のデータ読み出し動作について以下に説明する。アドレスラッチ13に書き込まれているセクタアドレスのデータセクタは消去中であるため、このデータを読み出す場合には、バッファセクタに一時書き込みされているデータに差し替えて読み出す必要がある。このため、読み出しセクタアドレスがアドレスラッチ13に書き込まれているものか否かを判別することによって、読み出しデータが、データセクタに移される前のバッファセクタに一時書き込みされているデータであるか、すでにデータセクタに書き込まれたデータであるかを判別し、データセクタに書き込まれる前のバッファセクタに一時書き込みされているデータであればそのバッファセクタから読み出し、すでにデータセクタに書き込まれているデータであればそのデータセクタから読み出す処理が必要である。
【0094】
このようなデータ読み出し処理は、読み出し用データ差し替え回路15(図1および図4参照)によってなされる。図4の読み出し用データ差し替え回路15において、アドレスラッチ13のラッチエリアAdxから出力されたセクタアドレス(bit7−bit0)は、8個のXORゲート15aによって、読み出しセクタアドレス(読み出しアドレスの上位8ビット)A12−A5と比較され、全てのビットが一致した場合にのみ、第(x+1)のNORゲート15bの出力が”H”(High)になる。
【0095】
また、ラッチエリアAdxから出力された有効フラグ(bit8)は、重複した書き換えアドレスの書き換えデータが一時書き込みされたバッファセクタや未使用のバッファセクタではそのバッファセクタの管理エリアのアドレスおよびデータエリアのデータが無効であることを示す”0”(”L”(Low))であり、重複していない書き換えアドレスの書き換えデータが一時書き込みされているバッファセクタではそのバッファセクタの管理エリアに書き込まれている書き換えアドレスおよびデータエリアに書き込まれている書き換えデータが有効であることを示す”1”(”H”)である。
【0096】
このため、読み出しセクタアドレスがラッチエリアAdxに書き込まれているセクタアドレス(書き換えアドレス)と一致し、かつその書き換えアドレスおよび書き換えデータが有効である場合にのみ、第(x+1)のANDゲート15cの出力は”H”になる。
【0097】
第1から第16までのANDゲート15cの出力はORゲート15dに入力され、ORゲート15dの出力であるセレクタ信号BUF/MEMBは、いずれかのANDゲート15cの出力が”H”であれば、バッファセクタからの読み出しを示す”H”となり、全てのANDゲート15cの出力が”L”であれば、データセクタからの読み出しを示す”L”となる。
【0098】
また、アドレスポインタ14の最上位ビット(bit4)の出力と第(x+1)のANDゲート15cの出力とを第(2x+1)のANDゲート15fに入力して、バッファセクタ(x+16)の選択信号BSEL(x+16)を生成し、アドレスポインタ14の最上位ビット(bit4)の反転出力(INVゲート15eの出力)と第(x+1)のANDゲート15cの出力とを第(2x+2)のANDゲート15fに入力して、バッファセクタxの選択信号BSELxを生成する。
【0099】
このように、読み出しセクタアドレスがアドレスラッチ13の16個のラッチエリアAd0〜Ad15に書き込まれたセクタアドレス(書き換えアドレス)のいずれかと一致し、かつそのラッチエリアに書き込まれた有効フラグが”1”の場合には、セレクタ信号BUF/MEMBがフラッシュバッファ12からの読み出しを示す”H”になるとともに、バッファセクタの選択信号BSEL0〜BSEL31のいずれかが”H”になり、そのフラッシュバッファセクタに一時書き込みされているデータが読み出されることになる。選択信号BSELxが”H”であれば、バッファセクタx(第(x+1)のバッファセクタ)のデータエリアに一時書き込みされいる書き換えデータが読み出される。
【0100】
また、読み出しセクタアドレスがアドレスラッチ13の16個のラッチエリアAd0〜Ad15に書き込まれたセクタアドレス(書き換えアドレス)のいずれとも一致しなければ、セレクタ信号BUF/MEMBがフラッシュデータメモリ11からの読み出しを示す”L”になり、読み出しセクタアドレスのデータバッファに書き込まれているデータが読み出される。
【0101】
以上のように実施の形態1によれば、書き換えデータおよび書き換えアドレスをバッファセクタに一時書き込みし、上記書き換えアドレスのデータセクタを、完全な消去にかかる時間の1/16の時間ずつの消去処理によって、16回のデータ書き換え処理で時分割で消去し、消去が完了した上記データセクタに、上記バッファセクタに一時書き込みした書き換えデータを書き込んで移すことにより、1回のデータ書き換え処理にかかる時間を短くできる。
【0102】
また、読み出し用データ差し替え回路15によってデータセクタおよびバッファセクタからのデータ読み出しを制御することにより、データセクタに書き込まれていないデータの読み出しをアプリケーションプログラムで意識する必要がなく、データ読み出し処理時間を短くできる。
【0103】
また、目標の書き換え処理時間になるように時分割して消去するので、長時間の消去処理のためのバックアップ電源が必要ない。
【0104】
また、16回のデータ書き換え処理中にアドレスが重複した場合、最新の書き換えデータのみがデータセクタに書き込まれるので、フラッシュデータメモリ11の書き換え回数を少なくできる。
【0105】
実施の形態2
本発明の実施の形態2のマイクロコンピュータは、上記実施の形態1のマイクロコンピュータ(図1参照)において、データ書き換え処理の手順の一部を変更したものである。
【0106】
上記実施の形態1では、図1のステップS2でアドレスの重複を検出すると同時に、ステップS3でバッファセクタの管理エリアに重複フラグ=”1”を書き込んで、そのバッファセクタに書き込まれている書き換えアドレスおよび書き換えデータを無効にしている。
【0107】
しかしながら、このような手順では、新しい書き換えデータおよびその書き換えアドレスをバッファセクタに書き込む処理が完了する前に、アドレスが重複した古いデータを無効にしてしまうため、図1のステップS5からS7までの間に事故などで電源が切れた場合に、有効な書き換えデータが判らなくなってしまう可能性がある。
【0108】
そこで、実施の形態2では、新しい書き換えデータをバッファセクタに書き込み完了してから、アドレスが重複した古いデータが書き込まれているバッファセクタの管理エリアに重複フラグ=”1”を書き込んで無効にすることによって、フラッシュバッファ12では新旧データの少なくともいずれかが必ず有効になっているので、新しい書き換えデータの一時書き込みの途中で電源が切れても、電源の再投入時の初期設定処理において有効な書き換えデータを識別できる。なお、実施の形態2のマイクロコンピュータの構成は、上記実施の形態1のマイクロコンピュータ(図1および図2参照)と全く同じなので、その説明を省略する。
【0109】
図9は本発明の実施の形態2のデータ書き換え処理を示すフローチャートである。なお、図9において、図8に記載のものに相当するものには同じ符号を付してある。また、図9および以下の説明において、DUPFは重複検出フラグ、P2は書き換えアドレスが重複しているバッファセクタの位置を示すデータ(重複位置データ)が書き込まれる変数であり、これらの重複検出フラグDUPFおよび変数P2はRAM2(図1参照)内に設けられている。また、BUF[P2]は、変数P2に書き込まれた重複位置データが示す位置のバッファセクタである。
【0110】
この図9の実施の形態2のデータ書き換え処理は、上記実施の形態1のデータ書き換え処理(図8参照)において、ステップS1をステップS1’、ステップS3をS3’にそれぞれ変更し、ステップS7とS8の間に、ステップS10およびS11を設けたものである。実施の形態2のデータ書き換え処理について、上記実施の形態1のデータ書き換え処理との違いを中心にして以下に説明する。
【0111】
この実施の形態2のデータ書き換え処理では、RAM2(図1参照)内に重複検出フラグDUPFを設けてあり、まず図9のステップS1’で、ポインタデータPをインクリメントして更新するとともに、重複検出フラグDUPFを”0”にする。
【0112】
上記の重複検出フラグDUPFは、そのデータ書き換え処理において、アドレスの重複が検出されたか否かを示すフラグであり、DUPF=”0”はアドレスの重複が検出されなかったことを示し、DUPF=”1”はアドレス重複が検出されたことを示す。
【0113】
また、この実施の形態2のデータ書き換え処理では、RAM2(図1参照)内に変数P2を設けてあり、ステップS2でアドレスの重複が検出されたら、ステップS3’で、重複検出フラグDUPFを”1”にするとともに、変数P2に、書き換えアドレスが重複しているバッファセクタの位置を示すデータ(重複位置データ)を書き込む。
【0114】
ステップ4からステップS7まででは、上記実施の形態1と同様に、バッファセクタBUF[P−16]に有効な書き換えデータが一時書き込みされていれば、その書き換えデータをデータセクタMEM[LAT[P]]に書き込み、バッファセクタBUF[P]に、今回の書き換えデータおよび書き換えアドレスを書き込む。なお、アドレスラッチ13のラッチエリアについては、この実施の形態2においても上記実施の形態1と同様に、ステップS2でアドレスの重複を検出すると同時に、ステップS4でラッチエリアの有効フラグを”1”から”0”に書き換えて、そのラッチエリアに書き込まれた書き換えアドレスを無効にしている。
【0115】
そしてステップS10で、重複検出フラグDUPFが”1”か否かを判別することによって、上記ステップS2でアドレスの重複を検出したか否かを判別し、DUPF=”1”ならばステップS11に進み、DUPF=”0”ならばステップS8に進む。
【0116】
ステップ11では、バッファセクタBUF[P2]の管理エリア(図2の12aおよび図3参照)の重複フラグ(bit9、図3の12d参照)に”1”を書き込む。なお、ステップS8以降は上記実施の形態1と同様である。
【0117】
以上のように実施の形態2によれば、書き換えアドレスが重複した場合に、新しい書き換えデータをバッファセクタに書き込み完了してから、アドレスが重複した古いデータが書き込まれているバッファセクタの管理エリアに重複フラグ=”1”を書き込んで無効にすることにより、上記実施の形態1と同様の効果が得られる上に、データ書き換え処理の途中で電源が切れても、有効な書き換えデータを失うことなく完全に復旧できる。
【0118】
実施の形態3
本発明の実施の形態3のマイクロコンピュータは、上記実施の形態1のマイクロコンピュータ(図1参照)において、主にフラッシュメモリ部1の構成および機能を変更したものである。
【0119】
図10は本発明の実施の形態3のマイクロコンピュータにおいてのフラッシュメモリ部1の機能ブロック図である。なお、図10において、図2に記載のものに相当するものには同じ符号を付してある。
【0120】
図10に示すように、実施の形態3のフラッシュメモリ部1は、フラッシュデータメモリ11およびイレースバッファ16によって構成されたフラッシュメモリと、アドレスラッチ13と、アドレスポインタ14と、アドレスRAM17とを備えている。
【0121】
この実施の形態3のフラッシュメモリ部1は、上記実施の形態1のフラッシュメモリ部1(図2参照)において、フラッシュバッファ12および読み出し用データ差し替え回路15を削除して、イレースバッファ16およびアドレスRAM17を設け、フラッシュデータメモリ11、アドレスラッチ13、およびアドレスポインタ14の構成や機能をそれぞれ変更したものである。
【0122】
[フラッシュデータメモリ11]
実施の形態3のフラッシュデータメモリ11は、フラッシュメモリで構成され、書き換えデータが書き込まれる32[バイト]構成のデータエリアと、主に書き換え論理アドレスが書き込まれる2[バイト]構成のメモリ管理エリア11aからなる34[バイト]構成のセクタ(データセクタ)を288個備えており、1セクタ単位または複数セクタ単位の消去と1ワード単位の書き込みが可能になっている。
【0123】
図11はメモリ管理エリア11aのビット構成図である。図11に示すように、それぞれのデータセクタに設けられた2[バイト]のメモリ管理エリア11aは、書き換えデータの論理セクタアドレス(書き換え論理アドレス)が書き込まれる論理セクタアドレスエリア11b(bit7−bit0の8[ビット])と、有効セクタフラグが書き込まれる有効セクタフラグエリア11c(bit8の1[ビット])と、不良セクタフラグが書き込まれる不良セクタフラグエリア11d(bit9の1[ビット])と、ダミーデータ”000000”のダミービットエリア(bit15−bit10の6[ビット])とによって構成されている。
【0124】
有効セクタフラグエリア11cの有効セクタフラグおよび不良セクタフラグエリア11dの不良セクタフラグは、そのデータセクタが有効であるか無効であるかを示すフラグである。また、上記の不良フラグは、そのデータセクタが不良セクタであるか否かを示すフラグである。
【0125】
[イレースバッファ16]
イレースバッファ16は、それぞれ2[バイト]構成の16個のバッファデータエリア16aと、2[バイト]構成のバッファ管理エリア16dからなる34[バイト]構成のセクタ(バッファセクタ)を4個備えており、1セクタ単位または複数セクタ単位の消去と1ワード単位の書き込みが可能になっている。このイレースバッファ16は、データセクタの物理セクタアドレスが書き込まれるセクタ管理手段を構成している。
【0126】
図12はバッファデータエリア16aのビット構成図である。図12に示すように、それぞれのバッファセクタに16個ずつ設けられた2[バイト]のバッファデータエリア16aは、データセクタの物理セクタアドレスが書き込まれる物理セクタアドレスエリア16b(bit8−bit0の9[ビット])と、書き込み完了フラグが書き込まれる書き込み完了フラグエリア16c(bit9の1[ビット])と、ダミービット=”000000”のダミービットエリア(bit15−bit10の6[ビット])とによって構成されている。
【0127】
それぞれのバッファデータエリア16aに書き込まれた物理セクタアドレスは、これから時分割消去によってこれから消去するデータセクタおよび消去中のデータセクタの物理セクタアドレス、またはデータ書き込み可能なデータセクタの物理セクタアドレスである。また、書き込み完了フラグエリア16cの書き込み完了フラグは、書き込みが完了したか否かを示すフラグである。
【0128】
また、それぞれのバッファセクタのバッファ管理エリア16dには、バッファデータエリア16aが書き込まれるごとに、下位ビットから順に1ビットずつ”1”が書き込まれる。これによって、バッファセクタ内のすでの書き込んだバッファデータエリア16aの位置、および次に書き込むバッファデータエリア16aの位置を識別できるようになっている。
【0129】
フラッシュデータメモリ11は、複数のデータセクタを同時に消去できるようになっており、さらにフラッシュデータメモリ11とイレースバッファ16は、消去時に同時に複数のセクタ(複数のデータセクタおよび1つのバッファセクタ)を選択できるようになっており、同時に複数のセクタを消去できる構成になっている。
【0130】
[アドレスポインタ14]
実施の形態3のアドレスポインタ14は、6[ビット]のカウンタで構成され、イレースバッファ16のポインタの役割を果たし、上位2ビット(bit5,bit4)でイレースバッファ16のバッファセクタの位置を示し、下位4ビット(bit3−bit0)でバッファセクタ内でのバッファデータエリア16aの位置を示す。
【0131】
[アドレスRAM17]
アドレスRAM17は、8[kバイト]のデータ容量に相当する256セクタ分のデータ(256個の論理セクタ)を識別するための8[ビット]の論理セクタアドレスと同じアドレスでそれぞれのデータエリアをアクセスでき、それぞれのデータエリア(アドレス管理エリア)に、データセクタ(物理セクタ)を識別するための9[ビット]の物理セクタアドレスを書き込みできる構成のRAMである。つまり、アドレスRAM17のそれぞれのアドレス管理エリアのアドレスは、8[kバイト]のデータ容量のそれぞれの論理セクタアドレスと同じになっており、RAM17のそれぞれのアドレス管理エリアには、そのアドレスと同じ論理セクタアドレスを割り当たデータセクタ(物理セクタ)の物理セクタアドレスが書き込まれている。このアドレスRAM17は、8[kバイト]のデータ容量の論理セクタアドレス数と同数のアドレス管理エリアを有し、それぞれのアドレス管理エリアを上記論理セクタアドレスと同じアドレスでアクセス可能であり、それぞれのアドレス管理エリアに、そのアドレスと同じ論理セクタアドレスを割り当てたデータセクタの物理セクタアドレスが書き込まれたアドレス管理手段を構成している。
【0132】
論理セクタアドレスは、例えば8[kバイト]のデータ容量に相当する256セクタ分(256個の論理セクタ)を識別してアクセス可能とするために、上記それぞれの論理セクタに付されるアドレスであり、256個の論理セクタでは、8[ビット]である。また、物理セクタアドレスは、フラッシュデータメモリ11のデータセクタ(物理セクタ)を識別してアクセス可能とするために、それぞれのデータセクタに固定で付されるアドレスでである。フラッシュデータメモリ11には、論理セクタ数よりも多い288個のデータセクタが設けられているので、物理セクタアドレスは9[ビット]になる。これらの288個のデータセクタの内の256個のデータセクタに256個の論理セクタアドレスがそれぞれ割り当てられる。そして、この実施の形態3では、それぞれの論理セクタアドレスには、固定不変のデータセクタが割り当てられるのではなく、その論理セクタアドレスのデータ書き換えごとに、異なるデータセクタが割り当てられる。
【0133】
[アドレスラッチ13]
実施の形態3のアドレスラッチ13は、データセクタの物理セクタアドレスと同じビット構成の9[ビット]のレジスタで構成され、フラッシュデータメモリ11のデータ読み出しに使用するためにアドレスRAM17から読み出された物理セクタアドレスをラッチする。
【0134】
この実施の形態3のフラッシュメモリ部1のフラッシュデータメモリ11は、288[セクタ]で構成されており、8[kバイト]のデータ容量よりも32[セクタ]多い構成になっている。この上記データ容量よりも多い32[セクタ]の内、16[セクタ]は、上記実施の形態1と同様の時分割消去を可能にするために設けられたものであり、残りの16[セクタ]は、不良セクタをリカバリするために設けられたものである。
【0135】
そして、この実施の形態3は、書き換えデータをその論理セクタアドレスが割り当てられていた第1のデータセクタとは異なる第2のデータセクタに書き込んで、上記の論理セクタアドレスの割り当てデータセクタを第1のデータセクタから第2のデータセクタに変更し、セクタを完全に消去するのにかかる時間よりも短い時間(ただし、セクタを完全に消去するのにかかる時間の1/16の時間以上)でデータ書き換え処理ごとに消去処理をすることによって、上記第1のデータセクタを合計16回のデータ書き込み処理で時分割に消去することを特徴とするものである。
【0136】
[データ書き換え動作]
このような実施の形態3のデータ書き換え処理は、上記実施の形態1と同様に、AP−ROM3b内のアプリケーションプログラムからC−ROM3a内のデータ書き換えサブルーチン(データ書き換え制御プログラム)をコールし、制御部4がそのデータ書き換えサブルーチンに従って制御する。以下に実施の形態3のデータ書き換え動作について説明する。
【0137】
図13は本発明の実施の形態3のデータ書き換え処理を示すフローチャートである。図13および以下の説明では、フラッシュデータメモリ11およびイレースバッファ16のメモリセルの消去状態を”0”、書き込み状態を”1”としている。
【0138】
図13および以下の説明において、Pはアドレスポインタ14にセットされたデータ(ポインタデータ)である。また、ERPおよびCHKはRAM2(図1参照)内に設けられた変数である。また、Addは、書き換えデータの論理セクタアドレス(書き換え論理アドレス)である。
【0139】
また、BUF[P],BUF[ERP],BUF[P−15]は、それぞれバッファデータエリア(図10の16a参照)であって、BUF[P]は、ポインタデータPの位置のバッファデータエリアであり、BUF[ERP]は、変数ERPをポインタデータとしたときの位置のバッファデータエリアであり、BUF[P−15]は、P+15をポインタデータとしたときの位置のバッファデータエリアである。ただし、ここでは64個のバッファデータエリアをサイクリックに使用するため、P−15は、ポインタデータPに15を加算し、その値を64で除算した剰余である。つまり、P+15は、
(P+15)mod64
なる演算で求めた値である。
【0140】
また、MEM[BUF[ERP]のbit8−0]は、物理セクタアドレスのデータセクタである。
【0141】
また、RAM[Add]は、RAM17内の書き換え論理アドレスAddと同じアドレスのデータエリア(アドレス管理エリア)である。
【0142】
図14および図15は本発明の実施の形態3のデータ書き換え処理の一例を説明する図であって、(1)は図13のステップStet1、(2)は図13のステップStet2、(3)は図13のステップStet3、(4)は図13のステップStet4の処理をした状態である。
【0143】
図14および図15のデータ書き換え処理の例では、そのデータ書き換え処理の開始前に、物理セクタアドレスP−Add1のデータセクタに、論理セクタアドレスAddの古いデータData1が書き込まれており、アドレスRAM17のアドレスAddのデータエリアには、物理セクタアドレスP−Add1が書き込まれており、”000000”,”000001”,…,”011111”をポインタデータとしたときの位置の16個のバッファデータエリア16には、物理セクタアドレスE−Add1,E−Add1,…,E−Add32が書き込まれており、アドレスポインタ14にはポインタデータ”011111”がセットされている。
【0144】
従って、図14および図15のデータ書き換え処理の例では、そのデータ書き換え処理の開始前に、物理セクタアドレスE−Add1からE−Add17までの17個のデータセクタはすでに消去を完了しており、物理セクタアドレスE−Add18のデータセクタはすでに15回の時分割消去処理がなされており、物理セクタアドレスE−Add32のデータセクタはすでに1回の時分割消去処理がなされている。
【0145】
また、図14および図15のデータ書き換え処理の例では、書き換えデータはData2であり、その論理セクタアドレス(書き換え論理アドレス)はAddである。従って、データdata1が被書き換えデータである。
【0146】
これら図14および図15のデータ書き換え処理を具体例として、図13のデータ書き換え処理について以下に説明する。
【0147】
[ステップS21]
まず、図13のステップS21で、ポインタデータPに1を加算して更新する。ただし、ここでは64個のバッファデータエリアをサイクリックに使用するため、実際には、ポインタデータPに1を加算し、その値を64で除算して、その剰余でポインタデータPを更新する。つまり、
(P+1)mod64
なる演算で求めた値でポインタデータPを更新する。
【0148】
更新前のポインタデータPは、前回のデータ書き換え処理で、消去するデータセクタの物理アドレスを書き込んだバッファデータエリア(図10の16aおよび図11参照)の位置を示し、更新されたポインタデータPは、今回のデータ書き換え処理で、消去するデータセクタの物理アドレスを書き込むバッファデータエリアの位置を示す。
【0149】
図14および図15の例では、ポインタデータPは、”011111”(10進法で31)から”100000”(10進法で32)に更新される。更新前のポインタデータP=”011111”は、消去するデータセクタの物理アドレスE−Add32を前回書き込んだバッファデータエリア(図14(1)参照)の位置を示し、更新されたポインタデータP=”100000”は、消去するデータセクタの物理アドレスP−Add1を今回書き込むバッファデータエリア(図14(2)参照)の位置を示す。
【0150】
[ステップS22]
この実施の形態3のデータ書き換え処理では、RAM2(図1参照)内に変数ERPを設けてあり、図13のステップS22で、この変数ERPに、ポインタデータPから32を減算した値を書き込む。ただし、ここでは64個のバッファデータエリアをサイクリックに使用するため、実際には、あらかじめポインタデータPに32を加算し、その値を64で除算して、その剰余を変数ERPに書き込む。つまり、
(P+32)mod64
なる演算で求めた値を変数ERPに書き込む。
【0151】
上記の変数ERPは、消去が完了して書き込み可能になったデータセクタの物理セクタアドレスが書き込まれているバッファデータエリアの位置を示す。この実施の形態3では、フラッシュデータメモリ11を、8[kバイト]のデータ容量よりも32[セクタ](時分割消去のための16[セクタ]およびリカバリ処理のための16[セクタ])多い構成としており、16回のデータ書き換え処理での時分割消去によってセクタを完全に消去するので、リカバリ処理がなされていなければ、バッファデータエリアBUF[P]の32個前のバッファデータエリアから17個前のバッファデータエリアまでに書き込まれた物理セクタアドレスの16個のデータセクタが、消去が完了して書き込み可能になったデータセクタである。これら16個のバッファデータエリアの内の最初のバッファデータエリア(バッファデータエリアBUF[P]の32個前のバッファデータエリア)の位置を示すために、ポインタデータPから32を減算した値を変数EPRとしている。
【0152】
図14および図15の例では、
ERP=(32+32)mod64=0
であり、この変数ERP=0は、物理アドレスE−Add1が書き込まれたバッファデータエリア(図14(1)参照)の位置を示す。
【0153】
[ステップS23]
図13のステップS23では、バッファデータエリアBUF[ERP]の書き込み完了フラグ(bit9、図12の16c)が”0”であるか否かを判別し、書き込み完了フラグが”0”ならばステップS24に進み、”1”ならばステップS34に進む。
【0154】
[ステップS24]
上記ステップ23で書き込み完了フラグ=”0”であれば、図13のステップS24で、その書き込み完了フラグ(バッファデータエリアBUF[ERP]の書き込み完了フラグ)に”1”を書き込む。
【0155】
[ステップS25,S26]
次に図13のステップS25で、データセクタMEM[BUF[ERP]のbit8−0]のデータエリアに、書き換えデータを書き込み、図13のステップS26で、そのデータセクタMEM[BUF[ERP]のbit8−0]のメモリ管理エリア(図10の11aおよび図11参照)に、書き換え論理アドレス(bit7−bit0、図11の11b参照)および有効セクタフラグ=”1”(bit8、図11の11c参照)を書き込む。
【0156】
図14および図15の例では、物理セクタアドレスE−Add1のデータセクタのデータエリアに、書き換えデータData2が書き込まれ、物理セクタアドレスE−Add1のデータセクタのメモリ管理エリアに、書き換え論理アドレスAdd(bit7−bit0)および有効セクタフラグ=”1”が書き込まれる(図14(1)参照)。
【0157】
なお、上記ステップS25,S26では、ワード単位の書き込みになるので、17回の書き込み処理をすることになる。ここで、1[ワード]の書き込み時間を20[μs]とすると、この書き込み処理に340[μs]かかることになる。
【0158】
[ステップS27]
次に図13のステップS27で、上記ステップS25,S26での書き込みが正常になされたか否かをチェックし、書き込みが正常になされていればステップS28に進み、書き込みが正常になされていなければステップS32に進む。
【0159】
[ステップStep1]
ここまでのステップS21からS27まではステップStep1の処理を構成しており、このステップStep1の処理によって図14(1)の状態になる。図14(1)では、物理セクタアドレスE−Add1のデータセクタに、書き換えデータData2と、その論理セクタアドレス(書き換え論理アドレス)Addが書き込まれている。
【0160】
このように、ステップStep1は、ポインタデータPを更新して変数ERPを求め、バッファデータエリアBUF[ERP]に書き込まれている物理セクタアドレスE−Add1に、新しい書き換えデータData2および書き換え論理アドレスAddを書き込む処理である。
【0161】
[ステップS28,S29]
上記ステップS27で書き込みOKであれば、図13のステップS28で、アドレス管理エリアRAM[Add]にアクセスし、古いデータ(被書き換えデータ)が書き込まれているデータセクタの物理セクタアドレスをバッファデータエリア[P]のbit8−bit0に書き込み、図13のステップS29で、上記古いデータの物理セクタアドレスを書き込んだバッファセクタのバッファ管理エリア16d(図10参照)を更新する。
【0162】
[ステップStep2]
これらのステップS28およびS29はステップStep2の処理を構成しており、このステップStep2の処理によって図14(2)の状態になる。図14(2)では、書き換え論理アドレスAddと同じアドレスRAM17のアドレス(アドレス管理エリアRAM[Add])に書き込まれている物理セクタアドレスであって古いデータ(被書き換えデータ)Data1が書き込まれているデータセクタの物理セクタアドレスであるP−Add1が、ポインタデータP=”100000”の位置のバッファデータエリアに書き込まれ、この物理セクタアドレスP−Add1を書き込んだバッファセクタのバッファ管理エリア16dが、”0000000000000000”から”0000000000000001”に更新されている。
【0163】
[ステップS30]
次に図13のステップS30で、アドレス管理エリアRAM[Add]に、新しい書き換えデータを書き込んだデータセクタの物理セクタアドレスを書き込む。
【0164】
[ステップStep3]
このステップS30はステップStep3の処理となり、このステップStep3の処理によって図15(3)の状態となる。図15(3)では、書き換え論理アドレスAddと同じアドレスRAM17のアドレス(アドレス管理エリアRAM[Add])に、新しい書き換えデータData2を書き込んだデータセクタの物理セクタアドレスE−Add1が書き込まれている。
【0165】
[ステップS31]
次に図13のステップS31で、バッファデータエリアBUF[P]〜BUF[P−15]に書き込まれている物理セクタアドレスの16個のデータセクタと、バッファデータエリアBUF[P]のバッファセクタ(イレースバッファ16のポインタデータPの上位2ビットが示す位置のバッファセクタ)の次の位置の1個のバッファセクタとの合計17セクタを同時に消去する。
【0166】
[ステップStep]
このステップ31はステップStep4の処理となり、このステップStep4の処理によって図15(4)の状態となる。図15(4)では、物理セクタアドレスE−Add18,E−Add19,…E−Add32,P−Add1の16個のデータセクタと、物理セクタアドレスP−Add1が書き込まれたバッファセクタの次の位置の1個のバッファセクタとの合計17セクタが時分割で消去されている。
【0167】
なお、この実施の形態3では、上記実施の形態1および2と同様に、フラッシュデータメモリ11のデコーダは複数のセクタを同時に選択できるようになっているので、同時に複数のデータセクタおよびバッファセクタを消去することができる。
【0168】
この実施の形態3でも、消去時間は、上記実施の形態1および2と同様に、データ書き換え処理ごとの16回の時分割消去によってそれぞれのセクタを完全に消去するので、上記ステップS31での消去時間は、従来の消去時間の1/16の時間とすることができる。例えば、セクタの完全な消去に20[ms]必要な場合は、1.25[ms]の消去時間となる。
【0169】
上記ステップS31(上記ステップStep4)の処理の完了によって1回のデータ書き換え処理が完了したことになり、ソフト処理を除いた1回の書きデータ換え処理時間は、ステップStep1では340[μs]、ステップStep2では1[ワード]の書き込み2回で40[μs]、ステップStep3ではRAMの書き込みなので数10〜数100[ns]、ステップStep4の消去では1.25[ms]となるので、ステップStep3の書き込み時間を無視すると、0.34+0.04+1.25=1.63[ms]となる。
【0170】
この実施の形態3では、論理セクタよりも多いデータセクタを設け、データセクタを物理セクタアドレスで管理することによって、上記実施の形態1および2のようなバッファセクタに一時書き込みした書き換えデータをデータセクタに移す書き込みが不要になるので、1回のデータ書き換え処理にかかる時間を上記実施の形態1および2よりも短くすることができる。
【0171】
[リカバリ処理]
この実施の形態3では、書き込み不良が発生したときのリカバリ処理のために、16個のデータセクタが設けられている。図13のステップS27で書き込み不良が発生したときのリカバリ処理について以下に説明する。
【0172】
[ステップS32]
上記ステップS27で書き込みNGであれば、図13のステップS32で、そのデータセクタMEM[BUF[ERP]のbit8−0]のメモリ管理エリア11aに、不良セクタフラグ=”1”(bit9、図11の11d参照)を書き込み、ステップS34に進む。なお、上記ステップS23でバッファデータエリアBUF[ERP]の書き込み完了フラグが”1”であったときにも、ステップS34に進む。
【0173】
[ステップS34]
図13のステップS34では、変数ERPに1を加算して更新し、ステップS35に進む。ただし、ここでは64個のバッファデータエリアをサイクリックに使用するため、実際には、変数ERPに1を加算し、その値を64で除算して、その剰余で変数ERPを更新する。つまり、
(ERP+1)mod64
なる演算で求めた値で変数ERPを更新する。
【0174】
図14および図15の例では、
ERP=(ERP+1)mod64=1
であり、この更新された変数ERP=1は、物理アドレスE−Add2が書き込まれたバッファデータエリア(図14(1)参照)の位置を示す。
【0175】
この実施の形態3では、RAM2(図1参照)内に変数CHKを設けてあり、図13のステップS35で、上記ステップS21で更新したポインタデータPから上記ステップS34で更新した変数ERPを減算した値を変数CHKに書き込む。ただし、実際には、あらかじめポインタデータPに64を加算し、その加算値から変数ERPを減算し、その減算を64で除算して、その剰余を変数CHKに書き込む。つまり、
(P+64−ERP)mod64
なる演算で求めた値を変数CHKに書き込む。
【0176】
上記の変数CHKは、上記ステップS34ですでに変数ERPに1が加算されているので、
15≦CHK≦31
を範囲とする変数であり、この変数CHKから時分割消去のためのデータセクタの個数16を減算して1を加算した値CHK−15は、リカバリ処理に使用可能なデータセクタ数を示す。
【0177】
[ステップS36,S37]
次にステップS36で、変数CHKが16以上か否かを判別し、CHK≧16ならば、ステップS23に戻って再度ステップStep1の処理にトライし、CHK<16ならば、図13のステップS37で、異常終了処理をして、データ書き換え処理を終了する。
【0178】
図14および図15の例では、すでに消去を完了している物理セクタアドレスE−Add2,…,E−Add17の16個のデータセクタがリカバリ処理に使用可能であり、物理セクタアドレスE−Add1のデータセクタの書き込みがNGであれば、再度のステップStep1の処理で、物理セクタアドレスE−Add2のデータセクタに書き込みをする。
【0179】
上記ステップS34からS37までは、主に書き込みエラーが発生したときに、不良データセクタを使用しないようにするとともに、その不良データセクタを他のデータセクタでリカバリする処理であり、この実施の形態3では16個の不良データセクタが発生するまで、リカバリ可能である。なお、不良データセクタの物理セクタアドレスは、書き込みエラーの発生以降は、イレースバッファ16およびアドレスRAM17に書き込まれることはないので、書き込みエラーの発生以降は、不良データセクタが使用されることはない。
【0180】
[データ読み出し動作]
実施の形態3のデータ読み出し動作について以下に説明する。まず、13[ビット]の読み出し論理アドレスの上位8ビットである読み出し論理セクタアドレスでアドレスRAM17をアクセスし、そのアドレス管理エリアに書き込まれている9[ビット]の物理セクタアドレスを読み出して、アドレスラッチ13に書き込む。そして、このアドレスラッチ13に書き込んだ物理アドレスセクタと、読み出し論理アドレスの下位4ビットとによって、フラッシュデータメモリ11からデータを読み出すことにより、データ読み出し処理が完了する。
【0181】
[初期設定処理]
この実施の形態3でも、上記実施の形態1と同様に、電源投入時にはアドレスポインタ14およびアドレスRAM17の初期設定処理が必要である。この実施の形態3の初期設定処理について以下に説明する。
【0182】
まず、フラッシュデータメモリ11のメモリ管理エリア11aのデータを順次読み出し、有効セクタフラグ(bit8、図11の11c参照)が”1”であり、かつ不良セクタフラグ(bit9、図11の11d参照)が”0”であるデータセクタについては、そのメモリ管理エリア11aに書き込まれている論理セクタアドレス(bit7−bit0、図11の11a参照)と同じアドレスのアドレスRAM17のアドレス管理エリアに、そのデータセクタの物理セクタアドレスを書き込む。
【0183】
また、イレースバッファ16のバッファ管理エリア16dのデータを順にチェックして、前回のデータ書き換え処理で書き込んだバッファデータエリアを判別し、アドレスポインタ14にセットする。前回書き込んだバッファデータエリアは、バッファ管理エリア16dのビットを下位から順にチェックするによって、簡単に判別できる。以上で、アドレスRAM17およびアドレスポインタ14の初期設定が完了する。
【0184】
このような初期設定処理は、上記実施の形態1と同様に、C−ROM3a内にサブルーチンとして用意しておけば、AP−ROM3b内のアプリケーションプログラムからC−ROM3a内の初期設定サブルーチン(初期設定制御プログラム)をコールし、制御部4がその初期設定サブルーチンに従って制御する。
【0185】
以上のように実施の形態3によれば、書き換えデータをその論理セクタアドレスが割り当てられていた第1のデータセクタとは異なる第2のデータセクタに書き込んで、上記の論理セクタアドレスの割り当てデータセクタを第1のデータセクタから第2のデータセクタに変更し、上記第1のデータセクタを、完全な消去にかかる時間ずつ消去処理によって、16回のデータ書き換え処理で時分割で消去することにより、1回のデータ書き換え処理にかかる時間を短くできる。
【0186】
さらに、データ容量よりも多く設けたデータセクタの物理セクタアドレスと書き換えデータの論理セクタアドレスの関連をアドレスRAM17で管理することにより、書き換えデータを一時書き込みしたバッファセクタからデータセクタに移す処理が不要になるので、上記実施の形態1および2よりもさらに見かけの書き換え処理時間を短縮できる。
【0187】
また、データ容量よりも多く設けたデータセクタの物理セクタアドレスと書き換えデータの論理セクタアドレスの関連をアドレスRAM17で管理することにより、見かけの書き換えセクタアドレス(論理セクタアドレス)は同じでも、異なるデータセクタに書き換えデータを順次書き込んでいくので、フラッシュメモリの信頼性を向上させる効果が得られる。
【0188】
また、リカバリ処理のためのデータセクタを設け、不良セクタが発生した場合のリカバリ処理を可能にしたことによっても、フラッシュメモリの信頼性を向上させる効果が得られる。
【0189】
また、アドレスRAM17およびアドレスラッチ13によって、読み出し論理セクタアドレスを物理セクタアドレスに変換してデータ読み出しをすることにより、論理セクタと物理セクタの位置の違いをアプリケーションプログラムで意識する必要がなく、データ読み出し処理時間を短くできる。
【0190】
また、上記実施の形態1および2と同様に、
目標の書き換え処理時間になるように時分割して消去するので、長時間の消去処理のためのバックアップ電源が必要ない。
【0191】
なお、上記実施の形態1および2において、アドレスの重複を判別しないようにすることも可能である。
【0192】
また、上記実施の形態3において、リカバリ処理をしないことも可能である。この場合には、フラッシュデータメモリ11のデータセクタ数を16個減らすことができ、イレースバッファ16のバッファセクタ数を1個減らすことができる。
【0193】
また、上記実施の形態3では、フラッシュデータメモリ11とイレースバッファ16を別々のフラッシュメモリとして説明したが、1つのフラッシュメモリにまとめることも可能である。
【0194】
また、上記実施の形態3では、フラッシュデータメモリ11をデータセクタ数がデータ容量よりも32個多い構成にしたが、さらにデータセクタ数を増やすことも可能である。データセクタ数を多くすれば、1つのデータセクタの実際の書き換え回数が減らせるので信頼性が向上するとともに、リカバリ処理に使用可能なデータセクタを増やすことができる。
【0195】
また、上記実施の形態3では、イレースバッファ16をバッファセクタ数が4個の構成としたが、さらにバッファセクタ数を増やすことも可能である。
【0196】
また、上記実施の形態3では、データ書き込み処理ごとに、アドレスポインタ14とバッファ管理エリア16aの書き込み完了フラグから変数ERPを求めているが、電源投入時に変数ERPを求めておき、そのあとのデータ書き換え処理ごとに変数ERPを更新することも可能である。
【0197】
また、上記実施の形態1から3において、アドレスポインタ14をRAM2内に設けることも可能である。
【0198】
また、上記実施の形態1から3では、1/16に時分割して消去処理をする例を説明したが、時分割数は2以上の任意の数に設定可能である。時分割数を増やせば、さらに見かけ上の書き換え時間を短くできる。
【0199】
また、上記実施の形態1から3では、フラッシュメモリの書き込み状態を”1”、消去状態を”0”として説明したが、逆にすることも可能である。
【0200】
【発明の効果】
以上説明したように本発明によれば、データ書き換え処理ごとのN回の時分割消去によってそれぞれのセクタを完全に消去するので、1回のデータ書き換え処理時間を短くできるという効果がある。
【図面の簡単な説明】
【図1】本発明の実施の形態1のマイクロコンピュータの機能ブロック図である。
【図2】図1のフラッシュメモリ部の機能ブロック図である。
【図3】図2のフラッシュバッファにおいての管理エリアのビット構成図である。
【図4】図2の読み出し用データ差し替え回路の構成例を示す図である。
【図5】本発明の実施の形態1のマイクロコンピュータにおいての書き換え処理を説明する図である(その1)。
【図6】本発明の実施の形態1のマイクロコンピュータにおいての書き換え処理を説明する図である(その2)。
【図7】本発明の実施の形態1のマイクロコンピュータにおいての書き換え処理を説明する図である(その3)。
【図8】本発明の実施の形態1のマイクロコンピュータにおいての書き換え処理を示すフローチャートである。
【図9】本発明の実施の形態2のマイクロコンピュータにおいての書き換え処理を示すフローチャートである。
【図10】本発明の実施の形態3のマイクロコンピュータにおいてのフラッシュメモリ部の機能ブロック図である。
【図11】図10においてのメモリ管理エリアのビット構成図である。
【図12】図10においてのバッファデータエリアのビット構成図である。
【図13】本発明の実施の形態3のマイクロコンピュータにおいての書き換え処理を示すフローチャートである。
【図14】本発明の実施の形態3のマイクロコンピュータにおいての書き換え処理の各ステップでの状態を示す図である(その1)。
【図15】本発明の実施の形態3のマイクロコンピュータにおいての書き換え処理の各ステップでの状態を示す図である(その2)。
【符号の説明】
1 フラッシュメモリ部、 2 RAM、 3 ROM、 3a C−ROM、 3b AP−ROM、 4 制御部、 5 データバス、 6 アドレスバス、 11 フラッシュデータメモリ、 11a メモリ管理エリア、 11b論理セクタアドレスエリア、 11c 有効フラグエリア、 11d 不良フラグエリア、 12 フラッシュバッファ、 12a 管理エリア、 12b セクタアドレスエリア、 12c 有効フラグエリア、 12d 重複フラグエリア、 12e セクタポインタエリア、 13 アドレスラッチ、 14 アドレスポインタ、 15 読み出し用データ差し替え回路、 16 イレースバッファ、 16a バッファデータ、 16b 物理セクタアドレスエリア、 16c 書き込み完了フラグエリア、 16d バッファ管理エリア、 17 アドレスRAM。

Claims (13)

  1. 使用するデータ容量に相当する個数のデータセクタよりなるフラッシュデータメモリと、
    2N(Nは2以上の整数)個のバッファセクタよりなるフラッシュバッファと、
    データセクタのアドレスがそれぞれ書き込まれるN個のセクタ管理領域を有するセクタ管理手段と
    を備えたフラッシュメモリ装置のデータ書き換え方法であって、
    第n回目のデータ書き換え処理の第nの書き換えデータを第nのバッファセクタに書き込む第1のステップと、
    第nのセクタ管理領域を上記第nの書き換えデータの書き換えアドレスである第nの書き換えアドレスに書き換える第2のステップと、
    第1から第Nまでのセクタ管理領域に書き込まれているアドレスの最大N個のデータセクタと、第(n+1)から第(n+N)までのN個のバッファセクタとを、セクタ内の全メモリセルを同時に消去するときにそのセクタを完全に消去するのにかかる時間よりも短い時間であって、かつ上記完全に消去するのにかかる時間の1/N以上の時間で同時に消去処理する第3のステップと
    を有する一連の処理を、上記nを1からNまで1つずつ増やして合計N回繰り返し、これらN回のデータ書き換え処理においてのN回の上記消去処理によって、第1の書き換えアドレスのデータセクタおよび第(N+1)のバッファセクタを完全に消去する第4のステップと、
    第1のバッファセクタに書き込まれている上記第1の書き換えデータを、上記第1の書き換えアドレスの上記完全に消去したデータセクタに書き込む第5のステップと
    を備えた
    ことを特徴とするデータ書き換え方法。
  2. 請求項記載のデータ書き換え方法において、
    上記第1のステップは、上記第nの書き換えアドレスと重複するアドレスが上記セクタ管理手段内にあるか否かを判別し、上記セクタ管理手段内にすでにある上記重複するアドレスを無効にするとともに、上記第nの書き換えデータを上記第nのバッファセクタに書き込み、
    上記第5のステップは、第1のセクタ管理領域に書き込まれている上記第1の書き換えアドレスが有効であるときにのみ、上記第1のバッファセクタに書き込まれている第1の書き換えデータを、上記第1の書き換えアドレスの完全に消去したデータセクタに書き込む
    ことを特徴とするデータ書き換え方法。
  3. N(Nは2以上の整数)個のデータセクタよりなるフラッシュデータメモリと、
    2N個のバッファセクタよりなるフラッシュバッファと、
    データセクタのアドレスがそれぞれ書き込まれるN個のセクタ管理領域を有するセクタ管理手段と
    を備えたフラッシュメモリ装置のデータ書き換え方法であって、
    第1回目のデータ書き換え処理の第1の書き換えデータを第1のバッファセクタに書き込む第1のステップと、
    第1のセクタ管理領域を上記第1の書き換えデータの書き換えアドレスである第1の書き換えアドレスに書き換える第2のステップと、
    第1から第Nまでのセクタ管理領域に書き込まれているアドレスの最大N個のデータセクタと、第2から第(N+1)までのN個のバッファセクタとを、セクタ内の全メモリセルを同時に消去するときにそのセクタを完全に消去するのにかかる時間よりも短い時間であって、かつ上記完全に消去するのにかかる時間の1/N以上の時間で同時に消去処理する第3のステップと、
    第2回目から第N回目までのデータ書き換え処理ごとに、セクタ管理領域およびバッフ ァセクタを1つずつずらして、上記第1のステップから上記第3のステップまでの一連の処理をさらに(N−1)回繰り返し、これら合計N回のデータ書き換え処理においての合計N回の上記消去処理によって、上記第1の書き換えアドレスのデータセクタおよび上記第(N+1)のバッファセクタを完全に消去する第4のステップと、
    上記第1のバッファセクタに書き込まれている上記第1の書き換えデータを、上記第1の書き換えアドレスの上記完全に消去したデータセクタに書き込む第5のステップと
    を備えた
    ことを特徴とするデータ書き換え方法。
  4. 請求項1から3までのいずれか1つに記載のデータ書き換え方法において、
    読み出しアドレスが上記セクタ管理手段に書き込まれているアドレスであるか否かを判別することによって、読み出しデータがデータセクタに書き込まれているか否かを判別し、データセクタに書き込まれていれば上記フラッシュデータメモリから読み出し、データセクタに書き込まれていなければ上記フラッシュバッファから読み出すことを特徴とするデータ書き換え方法。
  5. 使用するデータ容量に相当する個数のデータセクタよりなるフラッシュデータメモリと、
    2N(Nは2以上の整数)個のバッファセクタよりなるフラッシュバッファと、
    揮発性メモリで構成され、データセクタのアドレスがそれぞれ書き込まれるN個のセクタ管理領域を有するセクタ管理手段と、
    上記データセクタのアドレスがそれぞれ書き込まれる2N個の不揮発性セクタ管理領域を有し、第nの不揮発性セクタ管理領域が第nのバッファセクタに設けられている不揮発性セクタ管理手段と、
    を備えたフラッシュメモリ装置のデータ書き換え方法であって、
    第n回目のデータ書き換え処理の第nの書き換えデータを第nのバッファセクタに書き込む第1のステップと、
    第nのセクタ管理領域を上記第nの書き換えデータの書き換えアドレスである第nの書き換えアドレスに書き換えるとともに、第nの不揮発性セクタ管理領域に上記第nの書き換えアドレスを書き込む第2のステップと、
    第1から第Nまでのセクタ管理領域に書き込まれているアドレスの最大N個のデータセクタと、第(n+1)から第(n+N)までのN個のバッファセクタとを、セクタ内の全メモリセルを同時に消去するときにそのセクタを完全に消去するのにかかる時間よりも短い時間であって、かつ上記完全に消去するのにかかる時間の1/N以上の時間で同時に消去処理する第3のステップと
    を有する一連の処理を、上記nを1からNまで1つずつ増やして合計N回繰り返し、これらN回のデータ書き換え処理においてのN回の上記消去処理によって、第1の書き換えアドレスのデータセクタおよび第(N+1)のバッファセクタを完全に消去する第4のステップと、
    第1のバッファセクタに書き込まれている上記第1の書き換えデータを、上記第1の書き換えアドレスの上記完全に消去したデータセクタに書き込む第5のステップと
    を備え、
    上記第1のステップは、上記第nの書き換えアドレスと重複するアドレスが上記セクタ管理手段内にあるか否かを判別し、上記セクタ管理手段内にすでにある上記重複するアドレスを上記セクタ管理手段内でのみ無効にし、上記第nの書き換えデータを上記第nのバッファセクタに書き込みしてから、上記不揮発性セクタ管理手段内にすでにある上記重複するアドレスを上記不揮発性セクタ管理手段内で無効にし、
    上記第5のステップは、上記第1のセクタ管理領域に書き込まれている上記第1の書き換えアドレスが有効であるときにのみ、上記第1のバッファセクタに書き込まれている第1の書き換えデータを、上記第1の書き換えアドレスの完全に消去したデータセクタに書き込む
    ことを特徴とするデータ書き換え方法。
  6. 使用するデータ容量よりもN(Nは2以上の整数)個以上多いデータセクタ数のフラッシュデータメモリと、
    上記フラッシュデータメモリに書き込まれるデータの論理アドレス数と同数のアドレス管理領域を有し、それぞれの論理アドレスのアドレス管理領域にその論理アドレスに割り当てたデータセクタの物理アドレスが書き込まれたアドレス管理手段と、
    データセクタの物理アドレスがそれぞれ書き込まれる複数のセクタ管理領域を有するセクタ管理手段と
    を備えたフラッシュメモリ装置のデータ書き換え方法であって、
    第n回目のデータ書き換え処理の第nの書き換えデータを、被書き換えデータが書き込まれているデータセクタとは異なる他の完全に消去されているデータセクタであって第nのセクタ管理領域に書き込まれている物理アドレスのデータセクタに書き込む第1のステップと、
    上記第nの書き換えデータの論理アドレスのアドレス管理領域に書き込まれている物理アドレスであって上記被書き換えデータが書き込まれているデータセクタの物理アドレスである第nの被書き換え物理アドレスを、第(n+N)のセクタ管理領域に書き込む第2のステップと、
    上記第nの書き換えデータの論理アドレスのアドレス管理領域に書き込まれている上記第nの被書き換え物理アドレスを、上記第nの書き換えデータを書き込んだデータセクタの物理アドレスに書き換える第3のステップと、
    第(n+1)から第(n+N)までのセクタ管理領域に書き込まれている物理アドレスの最大N個のデータセクタを、セクタ内の全メモリセルを同時に消去するときにそのセクタを完全に消去するのにかかる時間よりも短い時間であって、かつ上記完全に消去するのにかかる時間の1/N以上の時間で同時に消去処理する第4のステップと
    を有する一連の処理を、上記nを1からNまで1つずつ増やして合計N回繰り返し、これらN回のデータ書き換え処理においてのN回の上記消去処理によって、第1の被書き換え物理アドレスのデータセクタを完全に消去する第5のステップと
    を備えた
    ことを特徴とするデータ書き換え方法。
  7. 請求項6記載のデータ書き換え方法において、
    上記フラッシュデータメモリは、上記データ容量よりも(M+N)(Mは1以上の整数)個以上多いデータセクタ数であり、
    上記第1のステップは、
    上記第nの書き換えデータを、被書き換えデータが書き込まれているデータセクタとは異なる他の完全に消去されているデータセクタであって第(m+n)(mは初期値0で最大値Mの変数)のセクタ管理領域に書き込まれている物理アドレスのデータセクタに書き込む第6のステップと、
    上記第6のステップで正常に書き込みできたか否かをチェックし、正常の場合には上記第2のステップに進み、異常の場合には、第(m+n)のセクタ管理領域のデータセクタを不良としたあと、上記mを1つインクリメントして上記第6のステップに戻る第7のステップと
    を有し、
    上記第2のステップは、上記第nの被書き換え物理アドレスを第(n+M+N)のセクタ管理領域に書き込み、
    上記第4のステップは、第(n+M+1)から第(n+M+N)までのセクタ管理領域に書き込まれている物理アドレスの最大N個のデータセクタを、セクタ内の全メモリセルを同時に消去するときにそのセクタを完全に消去するのにかかる時間よりも短い時間であって、かつ上記完全に消去するのにかかる時間の1/N以上の時間で同時に消去処理する
    ことを特徴とするデータ書き換え方法。
  8. (N+1)(Nは2以上の整数)個のデータセクタよりなるフラッシ ュデータメモリと、
    上記フラッシュデータメモリに書き込まれるデータの論理アドレスに割り当てたデータセクタの物理アドレスが書き込まれるアドレス管理領域を有するアドレス管理手段と、
    データセクタの物理アドレスのそれぞれが書き込まれる複数のセクタ管理領域を有するセクタ管理手段と
    を備えたフラッシュデータメモリ装置のデータ書き換え方法であって、
    第1回目のデータ書き換え処理の第1の書き換えデータを、被書き換えデータが書き込まれているデータセクタとは異なる他の完全に消去されているデータセクタであって第1のセクタ管理領域に書き込まれている物理アドレスのデータセクタに書き込む第1のステップと、
    上記アドレス管理領域に書き込まれている物理アドレスであって上記被書き換えデータが書き込まれているデータセクタの物理アドレスである第1の被書き換え物理アドレスを、第(N+1)のセクタ管理領域に書き込む第2のステップと、
    上記アドレス管理領域に書き込まれている上記第1の被書き換え物理アドレスを、上記第1の書き換えデータを書き込んだデータセクタの物理アドレスに書き換える第3のステップと、
    第2から第(N+1)までのセクタ管理領域に書き込まれている物理アドレスの最大N個のデータセクタを、セクタ内の全メモリセルを同時に消去するときにそのセクタを完全に消去するのにかかる時間よりも短い時間であって、かつ上記完全に消去するのにかかる時間の1/N以上の時間で同時に消去処理する第4のステップと、
    第2回目から第N回目までのデータ書き換え処理ごとに、セクタ管理領域を1つずつずらして、上記第1のステップから上記第4のステップまでの一連の処理をさらに(N−1)回繰り返し、これら合計N回のデータ書き換え処理においての合計N回の上記消去処理によって、上記第1の被書き換え物理アドレスのデータセクタを完全に消去する第5のステップと
    を備えた
    ことを特徴とするデータ書き換え方法。
  9. 請求項6から8までのいずれか1つに記載のデータ書き換え方法において、
    読み出し論理アドレスに相当する物理アドレスを、上記アドレス管理手段から検索し、その物理アドレスのセクタに書き込まれているデータを読み出すことを特徴とするデータ書き換え方法。
  10. 使用するデータ容量に相当する個数のデータセクタよりなるフラッシュデータメモリと、
    2N(Nは2以上の整数)個のバッファセクタよりなるフラッシュバッファと、
    データセクタのアドレスがそれぞれ書き込まれるN個のセクタ管理領域を有するセクタ管理手段と
    を備えたフラッシュメモリ装置のデータを、請求項1から5までのいずれか1つに記載のデータ書き換え方法によって書き換えることを特徴とするデータ書き換え装置。
  11. 使用するデータ容量よりもN(Nは2以上の整数)個以上多いセクタ数のフラッシュデータメモリと、
    上記フラッシュデータメモリに書き込まれるデータの論理アドレス数と同数のアドレス管理領域を有し、それぞれの論理アドレスのアドレス管理領域にその論理アドレスに割り当てたセクタの物理アドレスが書き込まれたアドレス管理手段と、
    データセクタの物理アドレスがそれぞれ書き込まれる複数のセクタ管理領域を有するセクタ管理手段と
    を備えたフラッシュメモリ装置のデータを、請求項6から9までのいずれか1つに記載のデータ書き換え方法によって書き換えることを特徴とするデータ書き換え装置。
  12. 使用するデータ容量に相当する個数のデータセクタよりなるフラッシュデータメモリと、
    2N(Nは2以上の整数)個のバッファセクタよりなるフラッシュバッファと、
    データセクタのアドレスがそれぞれ書き込まれるN個のセクタ管理領域を有するセクタ管理手段と
    を備え、
    データ書き換え装置によって請求項1から5までのいずれか1つに記載のデータ書き換え方法でデータの書き換えがなされることを特徴とするフラッシュメモリ装置。
  13. 使用するデータ容量よりもN(Nは2以上の整数)個以上多いデータセクタ数のフラッシュデータメモリと、
    上記フラッシュデータメモリに書き込まれるデータの論理アドレス数と同数のアドレス管理領域を有し、それぞれの論理アドレスのアドレス管理領域にその論理アドレスに割り当てたセクタの物理アドレスが書き込まれたアドレス管理手段と、
    データセクタの物理アドレスがそれぞれ書き込まれる複数のセクタ管理領域を有するセクタ管理手段と
    を備え、
    データ書き換え装置によって請求項6から9までのいずれか1つに記載のデータ書き換え方法でデータの書き換えがなされることを特徴とするフラッシュメモリ装置。
JP2002364840A 2002-12-17 2002-12-17 データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置 Expired - Fee Related JP3587842B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002364840A JP3587842B2 (ja) 2002-12-17 2002-12-17 データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置
US10/665,617 US7093063B2 (en) 2002-12-17 2003-09-22 Data rewriting for flash memory
US11/476,807 US7526601B2 (en) 2002-12-17 2006-06-29 Data rewriting method for flash memory using partial erases

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002364840A JP3587842B2 (ja) 2002-12-17 2002-12-17 データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置

Publications (2)

Publication Number Publication Date
JP2004199233A JP2004199233A (ja) 2004-07-15
JP3587842B2 true JP3587842B2 (ja) 2004-11-10

Family

ID=32501101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002364840A Expired - Fee Related JP3587842B2 (ja) 2002-12-17 2002-12-17 データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置

Country Status (2)

Country Link
US (2) US7093063B2 (ja)
JP (1) JP3587842B2 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005258851A (ja) * 2004-03-12 2005-09-22 Renesas Technology Corp メモリカード
JP4811664B2 (ja) 2004-10-19 2011-11-09 株式会社メガチップス 画像処理方法及び画像処理装置
US8027212B2 (en) * 2006-03-31 2011-09-27 Kristopher Chad Breen Method and apparatus for a dynamic semiconductor memory with compact sense amplifier circuit
US8117414B2 (en) * 2006-09-04 2012-02-14 Sandisk Il Ltd. Method for prioritized erasure of flash memory
US7975119B2 (en) * 2006-09-04 2011-07-05 Sandisk Il Ltd Device for prioritized erasure of flash memory
FR2915829A1 (fr) * 2007-05-02 2008-11-07 St Microelectronics Sa Memoire non volatile a ecriture rapide
DE602008002277D1 (de) 2007-05-02 2010-10-07 St Microelectronics Sa Nicht flüchtiger Speicher mit Schnellschreiben
FR2915828A1 (fr) * 2007-05-02 2008-11-07 St Microelectronics Sa Memoire non volatile a secteurs auxiliaires tournants
KR20090024971A (ko) * 2007-09-05 2009-03-10 삼성전자주식회사 섹터의 집합을 이용한 캐시 운용 방법 및 캐시 장치
TWI363966B (en) * 2008-01-23 2012-05-11 Phison Electronics Corp Method, system and controller for transmitting and dispatching data stream
US8161310B2 (en) * 2008-04-08 2012-04-17 International Business Machines Corporation Extending and scavenging super-capacitor capacity
US8219740B2 (en) * 2008-06-25 2012-07-10 International Business Machines Corporation Flash sector seeding to reduce program times
US8040750B2 (en) 2008-06-25 2011-10-18 International Business Machines Corporation Dual mode memory system for reducing power requirements during memory backup transition
US8037380B2 (en) * 2008-07-08 2011-10-11 International Business Machines Corporation Verifying data integrity of a non-volatile memory system during data caching process
US8093868B2 (en) * 2008-09-04 2012-01-10 International Business Machines Corporation In situ verification of capacitive power support
EP2180408B1 (en) * 2008-10-23 2018-08-29 STMicroelectronics N.V. Method for writing and reading data in an electrically erasable and programmable nonvolatile memory
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
CN102890966B (zh) * 2011-03-08 2016-12-14 凌力尔特有限公司 低电力应用中擦除储存于非易失性存储器中的数据的方法和***
US8792272B2 (en) * 2012-01-30 2014-07-29 HGST Netherlands B.V. Implementing enhanced data partial-erase for multi-level cell (MLC) memory using threshold voltage-drift or resistance drift tolerant moving baseline memory data encoding
TWI509615B (zh) * 2012-08-03 2015-11-21 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
US20150095728A1 (en) * 2013-09-30 2015-04-02 United Microelectronics Corp. Testing method for reducing number of overkills by repeatedly writing data to addresses in a non-volatile memory
US9666244B2 (en) * 2014-03-01 2017-05-30 Fusion-Io, Inc. Dividing a storage procedure
US9384845B2 (en) * 2014-11-18 2016-07-05 Sandisk Technologies Llc Partial erase of nonvolatile memory blocks
US9933950B2 (en) 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
FR3065303B1 (fr) * 2017-04-12 2019-06-07 Stmicroelectronics (Rousset) Sas Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant
CN109324921A (zh) * 2017-07-31 2019-02-12 大心电子(英属维京群岛)股份有限公司 数据备份方法、数据恢复方法以及存储控制器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341339A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
JPH0896588A (ja) 1994-09-28 1996-04-12 Nec Corp 半導体記憶装置
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method
JPH1185629A (ja) 1997-07-15 1999-03-30 Fujitsu Ltd フラッシュ・メモリの管理方式
US6198662B1 (en) * 1999-06-24 2001-03-06 Amic Technology, Inc. Circuit and method for pre-erasing/erasing flash memory array
DE60009031D1 (de) * 2000-03-28 2004-04-22 St Microelectronics Srl Verfahren zur logischen Aufteilung einer nichtflüchtigen Speichermatrix
JP2002334588A (ja) 2001-05-11 2002-11-22 Seiko Epson Corp 不揮発性半導体記憶装置のプログラム方法
JP4256175B2 (ja) * 2003-02-04 2009-04-22 株式会社東芝 不揮発性半導体メモリ

Also Published As

Publication number Publication date
US20060248269A1 (en) 2006-11-02
JP2004199233A (ja) 2004-07-15
US20040114431A1 (en) 2004-06-17
US7093063B2 (en) 2006-08-15
US7526601B2 (en) 2009-04-28

Similar Documents

Publication Publication Date Title
JP3587842B2 (ja) データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置
KR100531192B1 (ko) 비휘발성 메모리의 제어방법
US6170066B1 (en) Power-off recovery management for sector based flash media managers
JP4058322B2 (ja) メモリカード
US5987478A (en) Virtual small block file manager for flash memory array
KR100572328B1 (ko) 배드 블록 관리부를 포함하는 플래시 메모리 시스템
US8554985B2 (en) Memory block identified by group of logical block addresses, storage device with movable sectors, and methods
US6009497A (en) Method and apparatus for updating flash memory resident firmware through a standard disk drive interface
EP0991081B1 (en) Emulated EEPROM memory device and corresponding method
US6154808A (en) Method and apparatus for controlling data erase operations of a non-volatile memory device
JP3485938B2 (ja) 不揮発性半導体メモリ装置
KR101125390B1 (ko) 비휘발성 메모리, 메모리 제어 장치, 메모리 제어 시스템, 및 비휘발성 메모리의 제어 방법
US8050106B2 (en) Fast writing non-volatile memory with main and auxiliary memory areas
US20050172065A1 (en) Data move method and apparatus
JPH07153284A (ja) 不揮発性半導体記憶装置及びその制御方法
JPH06349286A (ja) フラッシュメモリ用書き込み制御方法および制御装置
KR100654344B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
US6646917B1 (en) Storage device managing nonvolatile memory by converting logical address to physical address of nonvolatile memory
KR100654343B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
US20190115080A1 (en) Method for rewriting data in nonvolatile memory and semiconductor device
JP2008112455A (ja) メモリカード
JPH0817192A (ja) フラッシュメモリによる位置記憶方法
JPH0620487A (ja) 不揮発性半導体メモリ装置
JP3123274B2 (ja) メモリのプログラミング装置
KR100486132B1 (ko) Ecc를이용한신속한데이터프로그래밍및소거기능을가지는불휘발성반도체기억장치

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20040406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040413

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040526

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: 20040810

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040810

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: 20070820

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20080820

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080820

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090820

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090820

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100820

Year of fee payment: 6

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20100820

Year of fee payment: 6

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: 20100820

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110820

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120820

Year of fee payment: 8

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: 20120820

Year of fee payment: 8

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees