JP3552490B2 - Storage device with flash memory, flash memory management method - Google Patents

Storage device with flash memory, flash memory management method Download PDF

Info

Publication number
JP3552490B2
JP3552490B2 JP27052097A JP27052097A JP3552490B2 JP 3552490 B2 JP3552490 B2 JP 3552490B2 JP 27052097 A JP27052097 A JP 27052097A JP 27052097 A JP27052097 A JP 27052097A JP 3552490 B2 JP3552490 B2 JP 3552490B2
Authority
JP
Japan
Prior art keywords
block
flash memory
area
address
storage device
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 - Lifetime
Application number
JP27052097A
Other languages
Japanese (ja)
Other versions
JPH1196779A (en
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.)
Victor Company of Japan Ltd
Original Assignee
Victor Company of Japan 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 Victor Company of Japan Ltd filed Critical Victor Company of Japan Ltd
Priority to JP27052097A priority Critical patent/JP3552490B2/en
Publication of JPH1196779A publication Critical patent/JPH1196779A/en
Application granted granted Critical
Publication of JP3552490B2 publication Critical patent/JP3552490B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、フラッシュ型メモリを備えた記憶装置,フラッシュ型メモリの管理方法にかかり、更に具体的には、フラッシュ型メモリの効率的な管理手法の改良に関するものである。
【0002】
【背景技術】
一般にフラッシュタイプのフローティングゲートトランジスタを含む電気的に消去可能なプログラマブル読出専用メモリ(EEPROM)は、現在市場で容易に入手できる。これらのいわゆるフラッシュメモリは、機能・性能面でEPROMメモリと類似した不揮発メモリであり、メモリ内で分割されているブロックを消去する回路内プログラマブル動作を可能にするという機能を更に有する。フラッシュメモリでは、以前に書き込まれたブロック領域を前もって消去することで、その内容の書き換えが行われる。
【0003】
典型的なコンピュータシステムでは、オペレーティングシステム(以下、単に「OS」という)のプログラムがそのシステムのデータ記憶装置のデータ管理を担う。OSプログラムとの互換性を達成するために必要かつ十分であるデータ記憶装置のアトリビュート(属性)は、データ記憶装置のいかなる位置からもデータを読み出すことができ、これにデータを書き込むことができることである。しかし、フラッシュメモリの場合、データが既に書き込まれている領域には、その領域のデータを消去しなければデータを書き込むことはできない。このため、フラッシュメモリは、典型的な既存のOSプログラムとは互換性がない。
【0004】
このような点に着目し、既存のOSプログラムによってフラッシュメモリを管理することを可能にするソフトウエアが先行技術において提案されている。この先行技術のプログラムでは、フラッシュメモリを「書込み1回読出し複数回」の装置として動作させるか、「書込み複数回読出し複数回」の装置として動作させている。前者は、以前に書き込まれているメモリ領域を再利用することはできない装置であり、補助記憶装置や拡張記憶装置として使用できる。後者は、以前に書き込まれているメモリ領域を再利用可能とし、その領域中にはフラッシュメモリの書き換回数を少なくするような制御を持つ補助記憶装置(半導体ファイル記憶装置)がある。
【0005】
【発明が解決しようとする課題】
上述のような先行技術に見られる装置によれば、フラッシュメモリを使用した拡張記憶装置上では書換回数が少なくなるような制御構造を持たずにROMエグゼキュータブルなプログラムを動作させている。つまり、フラッシュメモリのデータを書き換えるときは、全ブロックを一括して消去し、その後、データを記憶させる必要がある。また、フラッシュメモリの書換回数を少なくするような制御構造を持つ装置としては補助記憶装置(半導体ファイル記憶装置)があるものの、フラッシュメモリを使用した拡張記憶装置上でプログラムの実行を可能とする装置にはない。補助記憶装置において書換回数を少なくするためにその情報(書換回数テーブル)を異なるメモリ上に記憶する方式があるが、コスト高となる。また、同一フラッシュメモリ上に記憶する方式では、データを完全に連続的な配置できることができない。
【0006】
この発明は、以上の点に着目したもので、その目的は、フラッシュメモリを使用した拡張記憶装置上で、フラッシュメモリの書換回数を少なくするような制御構造を持つ装置を提供することである。また、他の目的は、主記憶装置にプログラムをロードすることなく、拡張記憶装置上でプログラムの実行を可能とすることである。更に他の目的は、フラッショメモリを使用した補助記憶装置として、書換回数を少なくする制御構造をもちながら、連続的な論理アドレスを不連続な物理アドレスに変換するメモリ管理装置によって、隣接するブロックのデータ領域ブロックを、アクセスのためのオーバヘッドを低減して、高速アクセス可能とすることである。
【0007】
【課題を解決するための手段】
前記目的を達成するため、本発明は、ブロック単位で記憶内容を消去するフラッシュ型メモリを備えた記憶装置であって、自己のブロックの管理情報を記憶する第1の領域と、主情報を記憶する第2の領域とを、各ブロック毎に設け、隣接する前記ブロックの第1の領域が連続する論理アドレスとなるように、物理アドレスと論理アドレスの変換を行う第1のアドレス変換手段と、隣接する前記ブロックの第2の領域が連続する論理アドレスとなるように、物理アドレスと論理アドレスの変換を行う第2のアドレス変換手段と、を備えたことを特徴とする。
【0008】
他の発明は、ブロック単位で記憶内容を消去するフラッシュ型メモリの管理方法であって、自己のブロックの管理情報を記憶する第1の領域と、主情報を記憶する第2の領域とを、各ブロック毎に設け、隣接する前記ブロックの第1の領域が連続する論理アドレスとなるように、物理アドレスと論理アドレスの変換を行うとともに、隣接する前記ブロックの第2の領域が連続する論理アドレスとなるように、物理アドレスと論理アドレスの変換を行うことを特徴とする。
【0009】
この発明の前記及び他の目的,特徴,利点は、以下の詳細な説明及び添付図面から明瞭になろう。
【0010】
【発明の実施の形態】
以下、本発明の実施の形態について詳細に説明する。本発明は、例えば図1に示すように、プロセッサ10,フラッシュメモリ12およびその制御装置14を含む拡張もしくは補助の記憶装置,RAM(主記憶装置)16を含むコンピュータシステムに適用される。フラッシュメモリ12は、その書換回数を少なくなるようにするために、フラッシュメモリ12のブロック単位の書換情報(イレース情報)を持つ領域(ヘッダエリア)と、フラッシュメモリ12上のプログラムやデータを記憶する領域(プログラム・データエリア)を持つ(後述する図4参照)。フラッシュメモリ制御装置14は、フラッシュメモリ12へのリード,ライト,チップセレクトなどの信号を生成し、プロセッサ10からフラッシュメモリ12をインターフェース(I/F)する役割を担う。
【0011】
ヘッダエリアには、例えばイレースの回数や時刻を記述する。ここで、プロセッサ10の論理アドレスをフラッシュメモリ12のブロック数の単位に分割してフラッシュメモリ12に記憶することができれば、フラッシュメモリ12の書換回数の低減とフラッシュメモリ12の管理方法が簡単になる。すなわち、書換えるべきデータが複数のブロックに跨っていると、それら複数のブロックについて書換処理を行わなければならない。しかし、書換えるべきデータが一つのブロック内にあれば、そのブロックのみを書換えればよく、フラッシュメモリ12の書換回数を低減して管理を簡略化することができる。
【0012】
そこで、図2に示す装置を用いて、図3に示すメモリマッピングを行う。つまり、ヘッダエリアやプログラム・データエリアを、ブロック数の単位にそれぞれ分割する。そして分割された各エリアを、フラッシュメモリの中に効率よくブロック単位で配置する。すなわち、同時に書換えが必要となる分割ヘッダエリアと分割プログラム・データエリアが、同一のブロックに含まれるように配置する。このような配置は、プロセッサ10の論理アドレスをフラッシュメモリ12の物理アドレスに変換するアドレス変換装置20によって実現する。
【0013】
図4に、ブロック構造を持つフラッシュメモリ12のメモリマップの一例を示す。この例は、1ブロックがLバイトで、かつ全体でm+1ブロックをもつ、L×(m+1)バイトを記憶できるフラッシュメモリである。各ブロックを管理するためにフラッシュメモリ12の書換回数などの情報を持つヘッダエリアとして、Pバイト必要であるとすると、全体でP×(m+1)バイトのヘッダエリアが必要である。従って、このシステムは、(L−P)×(m+1)バイトのプログラム・データエリアを持つことになる。
【0014】
このようなエリア構成のフラッシュメモリ12に対し、図2に示したアドレス変換装置18による変換を行う。詳述すると、図5に示すように、プロセッサ10の論理アドレスでは各ブロックのヘッダエリアを順にブロック0,ブロック1,……,ブロックmのように連続して配置する。一方、プログラム・データエリアについては、順にブロック0,ブロック1,……,ブロックmとヘッダエリア部分を抜いて連続した配置とする。これによって、各ブロックのヘッダエリアが、それぞれ連続する論理アドレスで配置されることになる。また同様に、各ブロックのプログラム・データエリアも、それぞれ連続する論理アドレスで配置されることになる。
【0015】
このようなアドレス配置において、例えばプログラム・データエリアnに含まれるデータを書き換える必要が生じたとする。プロセッサ10の論理アドレス上でみると、プログラム・データエリアnのヘッダエリアが含まれるブロックと、プログラム・データエリアnに相当するブロックの合計2つのブロックを書き換えなければならない。しかし、フラッシュメモリ12の物理アドレス上でみると、プログラム・データエリアnは該当するヘッダエリアとともに同一ブロック内にある。従って、そのブロックのみを書き換えればよい。
【0016】
このように、本形態によれば、フラッシュメモリの書換回数を低減する高速の管理プログラムがヘッダエリアの情報を読み、実行プログラムやデータの書換えや追記を簡便に実現できる。また、論理アドレス上でプログラム・データエリアのブロック間が連続的に配置しているため、無駄な空きスペースのないデータ構造を持つ拡張記憶装置および補助記憶装置を実現でき、かつフラッシュメモリ上での実行プログラムの動作が可能となる。更に、ヘッダエリアは、自己が管理するブロックの中に記憶されることになるため、ヘッダエリアのための別個のメモリ領域を必要としない。
【0017】
フラッシュメモリの各ブロックの管理方法を説明すると、最初はすべて、ヘッダエリアには「FFh(16進表示)」が記憶されている。フラッシュメモリは、初期化しなければ拡張記憶装置や補助記憶装置として使用できないため、ブロック0のヘッダエリアに書換回数0回と現時刻を記憶し、同様にブロック1のヘッダエリアに書換回数0回と現時刻を記憶し、……という具合に昇順で最後のブロックまで繰り返し記憶する。
【0018】
拡張記憶装置や補助記憶装置としてフラッシュメモリを使用するシステムでは、データや実行プログラムは追記させる構造でメモリに記憶させるのが通例である。この追記させる構造では、更新されたデータや実行プログラムは追記されるが、以前のデータや実行プログラムは無効となるような構造を持っている。そして、繰り返しデータや実行プログラムが更新されていくと、無駄なメモリエリアが拡大していく。そこで、フラッシュメモリ上のメモリ領域の再配置を行う必要がある。そのとき、イレースするブロックの候補として、書換回数の少ないブロック優先してイレースする。このとき、書換回数が同じブロックが複数あり、いずれかをイレースする必要があるときは、前回のブロック消去時刻の古い方を優先してイレースする。
【0019】
実際にブロックを消去するときであるが、そのブロックのヘッダエリアに記憶している以前の書換回数「U」を一時的に別メモリあるいはレジスタに保持し、その後フラッシュメモリのブロックを消去させるプログラムによって目的とするブロック(ヘッダエリア及びデータ・プログラムエリア)を消去して初期化する。その後すぐに、そのブロックのヘッダエリアに以前の書換回数に「1」インクリメントした値「U+1」を書き込み、同時に現時刻も書き込む。そして必要に応じて、データ・プログラムを再配置する。以下、本形態の実施例について説明する。
【0020】
【実施例1】
図1に示したような、汎用CPUもしくは汎用マイコンであるプロセッサ10,、高速にアクセス可能なRAM16,フラッシュメモリ12及びその制御装置14を含む拡張記憶装置もしくは補助記憶装置をもつようなシステムにおいて、本実施例では、拡張記憶装置もしくは補助記憶装置に使用するフラッシュメモリ12として、2メガビット×8で合計32個の64Kバイトのブロックをもつものを搭載したとする。
【0021】
このフラッシュメモリ12は、図6に示すような物理アドレスのメモリマップを持つ。各ブロックは、OSプログラム又は制御プログラムが管理するために、1ブロック毎に自己のヘッダエリアを持つ。ヘッダエリアには、その内容として、ブロックの消去回数や消去した時刻などを図7に示すような構造で記録されており、16バイト分の容量をとる。なお、図7中に示すアドレスは、フラッシュメモリ12の物理アドレスである。ブロックnのヘッダエリアに記憶されている内容を参照して、OSプログラム又は制御プログラムがブロックnの消去や書換えを管理する。
【0022】
フラッシュメモリ12の物理アドレスは、プロセッサ10から見た論理アドレスに変換され、図3もしくは図5に示したように、各ブロックのヘッダエリアや、プログラム・データエリアのブロックが連続するようになる。この論理アドレスと物理アドレスとの変換の計算式の一例を示すと、以下のようになる。なお、数値nは、10進数表記で0から31までの数字である。このnを16進数に変換した数値をN(h)とする。物理アドレスの値を「16進数:[PA(h)],PA[20:0]」とし、論理アドレスの値を「16進数:[LA(h)],LA[20:0]」とし、ブロックN(h)を用いて変換式を示すと、以下のようになる。
【0023】
IF(000000h≦LA(h)≦00FFEFh)
PA(h)=LA(h)
ELSE IF(00FFF0h≦LA(h)≦01FFDFh)
PA(h)=LA(h)+10(h)
ELSE IF(00FFE0h≦LA(h)≦02FFCFh)
PA(h)=LA(h)+20(h)
ELSE IF(02FFD0h≦LA(h)≦03FFBFh)
PA(h)=LA(h)+30(h)
ELSE IF(03FFC0h≦LA(h)≦04FFAFh)
PA(h)=LA(h)+40(h)
ELSE IF(04FFB0h≦LA(h)≦05FF9Fh)
PA(h)=LA(h)+50(h)
ELSE IF(05FFA0h≦LA(h)≦06FF8Fh)
PA(h)=LA(h)+60(h)
ELSE IF(06FF90h≦LA(h)≦07FF7Fh)
PA(h)=LA(h)+70(h)
ELSE IF(07FF80h≦LA(h)≦08FF6Fh)
PA(h)=LA(h)+80(h)
ELSE IF(08FF70h≦LA(h)≦09FF5Fh)
PA(h)=LA(h)+90(h)
ELSE IF(09FF60h≦LA(h)≦0AFF4Fh)
PA(h)=LA(h)+A0(h)
ELSE IF(0AFF50h≦LA(h)≦0BFF3Fh)
PA(h)=LA(h)+B0(h)
ELSE IF(0BFF40h≦LA(h)≦0CFF2Fh)
PA(h)=LA(h)+C0(h)
ELSE IF(0CFF30h≦LA(h)≦0DFF1Fh)
PA(h)=LA(h)+D0(h)
ELSE IF(0DFF20h≦LA(h)≦0EFF0Fh)
PA(h)=LA(h)+E0(h)
ELSE IF(0EFF10h≦LA(h)≦0FFEFFh)
PA(h)=LA(h)+F0(h)
ELSE IF(0FFF00h≦LA(h)≦10FEEFh)
PA(h)=LA(h)+100(h)
ELSE IF(10FEF0h≦LA(h)≦11FEDFh)
PA(h)=LA(h)+110F(h)
ELSE IF(11FEE0h≦LA(h)≦12FECFh)
PA(h)=LA(h)+120(h)
ELSE IF(12FED0h≦LA(h)≦13FEBFh)
PA(h)=LA(h)+130(h)
ELSE IF(13FEC0h≦LA(h)≦14FEAFh)
PA(h)=LA(h)+140(h)
ELSE IF(14FEB0h≦LA(h)≦15FE9Fh)
PA(h)=LA(h)+150(h)
ELSE IF(15FEA0h≦LA(h)≦16FE8Fh)
PA(h)=LA(h)+160(h)
ELSE IF(16FE90h≦LA(h)≦17FE7Fh)
PA(h)=LA(h)+170(h)
ELSE IF(17FE80h≦LA(h)≦18FE6Fh)
PA(h)=LA(h)+180(h)
ELSE IF(18FE70h≦LA(h)≦19FE5Fh)
PA(h)=LA(h)+190(h)
ELSE IF(19FE60h≦LA(h)≦1AFE4Fh)
PA(h)=LA(h)+1A0(h)
ELSE IF(1AFE50h≦LA(h)≦1BFE3Fh)
PA(h)=LA(h)+1B0(h)
ELSE IF(1BFE40h≦LA(h)≦1CFE2Fh)
PA(h)=LA(h)+1C0(h)
ELSE IF(1CFE30h≦LA(h)≦1DFE1Fh)
PA(h)=LA(h)+1D0(h)
ELSE IF(1DFE20h≦LA(h)≦1EFE0Fh)
PA(h)=LA(h)+1E0(h)
ELSE IF(1EFE10h≦LA(h)≦1FFDFFh)
PA(h)=LA(h)+1F0(h)
ELSE IF(1FFE00h≦LA(h)≦1FFE0Fh)
PA(h)=LA(h)−1EFE10(h)
ELSE IF(1FFE10h≦LA(h)≦1FFE1Fh)
PA(h)=LA(h)−1DFE20(h)
ELSE IF(1FFE20h≦LA(h)≦1FFE2Fh)
PA(h)=LA(h)−1CFE30(h)
ELSE IF(1FFE30h≦LA(h)≦1FFE3Fh)
PA(h)=LA(h)−1BFE40(h)
ELSE IF(1FFE40h≦LA(h)≦1FFE4Fh)
PA(h)=LA(h)−1AFE50(h)
ELSE IF(1FFE50h≦LA(h)≦1FFE5Fh)
PA(h)=LA(h)−19FE60(h)
ELSE IF(1FFE60h≦LA(h)≦1FFE6Fh)
PA(h)=LA(h)−18FE70(h)
ELSE IF(1FFE70h≦LA(h)≦1FFE7Fh)
PA(h)=LA(h)−17FE80(h)
ELSE IF(1FFE80h≦LA(h)≦1FFE8Fh)
PA(h)=LA(h)−16FE90(h)
ELSE IF(1FFE90h≦LA(h)≦1FFE9Fh)
PA(h)=LA(h)−15FEA0(h)
ELSE IF(1FFEA0h≦LA(h)≦1FFEAFh)
PA(h)=LA(h)−14FEB0(h)
ELSE IF(1FFEB0h≦LA(h)≦1FFEBFh)
PA(h)=LA(h)−13FEC0(h)
ELSE IF(1FFEC0h≦LA(h)≦1FFECFh)
PA(h)=LA(h)−12FED0(h)
ELSE IF(1FFED0h≦LA(h)≦1FFEDFh)
PA(h)=LA(h)−11FEE0(h)
ELSE IF(1FFEE0h≦LA(h)≦1FFEEFh)
PA(h)=LA(h)−10FEF0(h)
ELSE IF(1FFEF0h≦LA(h)≦1FFEFFh)
PA(h)=LA(h)−FFF00(h)
ELSE IF(1FFF00h≦LA(h)≦1FFF0Fh)
PA(h)=LA(h)−EFF10(h)
ELSE IF(1FFF10h≦LA(h)≦1FFF1Fh)
PA(h)=LA(h)−DFF20(h)
ELSE IF(1FFF20h≦LA(h)≦1FFF2Fh)
PA(h)=LA(h)−CFF30(h)
ELSE IF(1FFF30h≦LA(h)≦1FFF3Fh)
PA(h)=LA(h)−BFF40(h)
ELSE IF(1FFF40h≦LA(h)≦1FFF4Fh)
PA(h)=LA(h)−AFF50(h)
ELSE IF(1FFF50h≦LA(h)≦1FFF5Fh)
PA(h)=LA(h)−9FF60(h)
ELSE IF(1FFF60h≦LA(h)≦1FFF6Fh)
PA(h)=LA(h)−8FF70(h)
ELSE IF(1FFF70h≦LA(h)≦1FFF7Fh)
PA(h)=LA(h)−7FF80(h)
ELSE IF(1FFF80h≦LA(h)≦1FFF8Fh)
PA(h)=LA(h)−6FF90(h)
ELSE IF(1FFF90h≦LA(h)≦1FFF9Fh)
PA(h)=LA(h)−5FFA0(h)
ELSE IF(1FFFA0h≦LA(h)≦1FFFAFh)
PA(h)=LA(h)−4FFB0(h)
ELSE IF(1FFFB0h≦LA(h)≦1FFFBFh)
PA(h)=LA(h)−3FFC0(h)
ELSE IF(1FFFC0h≦LA(h)≦1FFFCFh)
PA(h)=LA(h)−2FFD0(h)
ELSE IF(1FFFD0h≦LA(h)≦1FFFDFh)
PA(h)=LA(h)−1FFE0(h)
ELSE IF(1FFFE0h≦LA(h)≦1FFFEFh)
PA(h)=LA(h)−FFF0(h)
ELSE IF(1FFFF0h≦LA(h)≦1FFFFFh)
PA(h)=LA(h)
【0024】
一例を示すと、最初の
IF(000000h≦LA(h)≦00FFEFh)
PA(h)=LA(h)
は、論理アドレスLA(h)が000000hと00FFEFhの間にあるときに、物理アドレスPA(h)は論理アドレスLA(h)と同じ値であることを意味する。
【0025】
同様に、
ELSE IF(00FFF0h≦LA(h)≦01FFDFh)
PA(h)=LA(h)+10(h)
は、論理アドレスLA(h)が00FFF0hと01FFDFhの間にあるときに、物理アドレスPA(h)は論理アドレスLA(h)に10(h)加算した値であることを意味する。以下、同様である。
【0026】
次に、図2のアドレス変換装置18を、上述したアドレス変換式を用いてワイヤードロジックで構成し、フラッシュメモリ12の制御装置14とともにプロセッサ10とI/Fをとる。本実施例のフラッシュメモリ12のブロック管理方法を説明すると、上述したように、最初に各ブロックのヘッダエリアの初期化(イニシャライズ)を行う。初期化の一例を示すと、次のようになる。
【0027】
ブロック0のヘッダエリアでは、物理アドレスPA[20:0]の「00FFFDh」から「00FFFFh」にそれぞれ「00h」を書き込み、「00FFF6h」から「00FFFBhに」現在の時刻をそれぞれ書き込む。次に、ブロック1のヘッダエリアでは、物理アドレスPA[20:0]の「01FFFDh」から「01FFFFh」にそれぞれ「00h」を書き込み、「01FFF6h」から「01FFFBh」に現在の時刻をそれぞれ書き込む。…………そして、昇順ブロックxxhのヘッダエリアでは、物理アドレスPA[20:0]の「xxFFFDh」から「xxFFFFh」にそれぞれ「00h」を書き込み、「xxFFF6h」から「xxFFFBh」に現在の時刻をそれぞれ書き込む。…………最終ブロック1Fhのヘッダエリアでは、物理アドレスPA[20:0]の「1FFFFDh」から「1FFFFFh」にそれぞれ「00h」を書き込み、「1FFFF6h」から「1FFFFBh」に現在の時刻をそれぞれ書き込んで初期化を終了する。
【0028】
拡張記憶装置あるいは補助記憶装置としてフラッシュメモリを用いた本システムでは、データや実行プログラムなどは追記する手法で新たに更新していくことになる。この手法自体は従来の手法と同様である。しかし、データや実行プログラムの更新を繰り返す度に、不要なメモリエリアが拡大していく。そこで、データや実行プログラムの更新により不要となったデータ・実行プログラムやメモリフラグメンテーションを削除するために、メモリデータの再配置(デフラグメンテーション)を行い、不要なメモリエリアの縮小と再利用エリアの拡大を図るようにする。このとき、イレースするブロックの候補として、上述したように書換回数の少ない方のブロックを優先して消去する。もし、書換回数が同じで2つ以上の候補があるときは、その候補の以前の消去時刻の古いブロックを優先してイレースすることにする。この処理は、デフラグメンテーションプログラムにより、プロセッサ10がフラッシュメモリ制御装置14を介して行う。
【0029】
具体的には、優先的に選ばれたブロックのヘッダエリアに記憶されている書換回数「V」を他のメモリあるいはレジスタに記憶し、そして次に該当ブロックをイレースするためのプログラム(イレースシーケンスルーチン)の実行に移る。このプログラムが終了後、そのブロックはイレースされたことになる。そして直ちに、ヘッダエリアの更新を行う。すなわち、書換回数を以前の回数に1インクリメントした値「V+1」として新たに書き込み、更に現在の時刻を書き込む。この作業の終了後、通常のデータなどの追記や読み出しができる状態に戻す。
【0030】
【実施例2】
この実施例2では、拡張記憶装置もしくは補助記憶装置に使用するフラッシュメモリ12として、1メガビット×16で合計32個の32キロワードのブロックをもつものを搭載したシステム構成となっている。このフラッシュメモリは、図8に示すような物理アドレスのメモリマップを持つ。前記実施例と同様に、各ブロックは、OSプログラム又は制御プログラムが管理するために、1ブロック毎に自己のヘッダエリアを持つ。その内容であるブロックの消去回数や消去した時刻などは、図9に示すような構造で8ワード分をとる。なお、図9中に示すアドレスは、フラッシュメモリ12の物理アドレスである。ブロックnのヘッダエリアに記憶されている内容を参照して、OSプログラム又は制御プログラムがブロックnのブロック消去や書き換えを管理する。この管理方法は、前記実施例1と同様の手法で対応できる。
【0031】
次に、各ブロックのヘッダエリアやプログラム・データエリアのブロックが連続するように、アドレス変換を行う。この論理アドレスから物理アドレスへのアドレス変換の計算式の一例を示すと、以下のようになる。なお、数値n,数値N(h),物理アドレスの値[PA(h)],PA[20:1],論理アドレスの値[LA(h)],LA[20:1]は、前記実施例と同様である。
【0032】
IF(00000h≦LA(h)≦07FF7h)
PA(h)=LA(h)
ELSE IF(07FF8h≦LA(h)≦0FFEFh)
PA(h)=LA(h)+8(h)
ELSE IF(0FFF0h≦LA(h)≦17FE7h)
PA(h)=LA(h)+10(h)
ELSE IF(17FE8h≦LA(h)≦1FFDFh)
PA(h)=LA(h)+18(h)
ELSE IF(1FFE0h≦LA(h)≦27FD7h)
PA(h)=LA(h)+20(h)
ELSE IF(27FD8h≦LA(h)≦2FFCFh)
PA(h)=LA(h)+28(h)
ELSE IF(2FFD0h≦LA(h)≦37FC7h)
PA(h)=LA(h)+30(h)
ELSE IF(37FC8h≦LA(h)≦3FFBFh)
PA(h)=LA(h)+38(h)
ELSE IF(3FFC0h≦LA(h)≦47FB7h)
PA(h)=LA(h)+40(h)
ELSE IF(47FB8h≦LA(h)≦4FFAFh)
PA(h)=LA(h)+48(h)
ELSE IF(4FFB0h≦LA(h)≦57FA7h)
PA(h)=LA(h)+50(h)
ELSE IF(57FA8h≦LA(h)≦5FF9Fh)
PA(h)=LA(h)+58(h)
ELSE IF(5FFA0h≦LA(h)≦67F97h)
PA(h)=LA(h)+60(h)
ELSE IF(67F98h≦LA(h)≦6FF8Fh)
PA(h)=LA(h)+68(h)
ELSE IF(6FF90h≦LA(h)≦77F87h)
PA(h)=LA(h)+70(h)
ELSE IF(77F88h≦LA(h)≦7FF7Fh)
PA(h)=LA(h)+78(h)
ELSE IF(7FF80h≦LA(h)≦87F77h)
PA(h)=LA(h)+80(h)
ELSE IF(87F78h≦LA(h)≦8FF6Fh)
PA(h)=LA(h)+88(h)
ELSE IF(8FF70h≦LA(h)≦97F67h)
PA(h)=LA(h)+90(h)
ELSE IF(97F68h≦LA(h)≦9FF5Fh)
PA(h)=LA(h)+98(h)
ELSE IF(9FF60h≦LA(h)≦A7F57h)
PA(h)=LA(h)+A0(h)
ELSE IF(A7F58h≦LA(h)≦AFF4Fh)
PA(h)=LA(h)+A8(h)
ELSE IF(AFF50h≦LA(h)≦B7F47h)
PA(h)=LA(h)+B0(h)
ELSE IF(B7F48h≦LA(h)≦BFF3Fh)
PA(h)=LA(h)+B8(h)
ELSE IF(BFF40h≦LA(h)≦C7F37h)
PA(h)=LA(h)+C0(h)
ELSE IF(C7F38h≦LA(h)≦CFF2Fh)
PA(h)=LA(h)+C8(h)
ELSE IF(CFF30h≦LA(h)≦D7F27h)
PA(h)=LA(h)+D0(h)
ELSE IF(D7F28h≦LA(h)≦DFF1Fh)
PA(h)=LA(h)+D8(h)
ELSE IF(DFF20h≦LA(h)≦E7F17h)
PA(h)=LA(h)+E0(h)
ELSE IF(E7F18h≦LA(h)≦EFF0Fh)
PA(h)=LA(h)+E8(h)
ELSE IF(EFF10h≦LA(h)≦F7F07h)
PA(h)=LA(h)+F0(h)
ELSE IF(F7F08h≦LA(h)≦FFEFFh)
PA(h)=LA(h)+F8(h)
ELSE IF(FFF00h≦LA(h)≦FFF07h)
PA(h)=LA(h)−F7F08h
ELSE IF(FFF08h≦LA(h)≦FFF0Fh)
PA(h)=LA(h)−EFF10h
ELSE IF(FFF10h≦LA(h)≦FFF17h)
PA(h)=LA(h)−E7F18h
ELSE IF(FFF18h≦LA(h)≦FFF1Fh)
PA(h)=LA(h)−DFF20h
ELSE IF(FFF20h≦LA(h)≦FFF27h)
PA(h)=LA(h)−D7F28h
ELSE IF(FFF28h≦LA(h)≦FFF2Fh)
PA(h)=LA(h)−CFF30h
ELSE IF(FFF30h≦LA(h)≦FFF37h)
PA(h)=LA(h)−C7F38h
ELSE IF(FFF38h≦LA(h)≦FFF3Fh)
PA(h)=LA(h)−BFF40h
ELSE IF(FFF40h≦LA(h)≦FFF47h)
PA(h)=LA(h)−B7F48h
ELSE IF(FFF48h≦LA(h)≦FFF4Fh)
PA(h)=LA(h)−AFF50h
ELSE IF(FFF50h≦LA(h)≦FFF57h)
PA(h)=LA(h)−A7F58h
ELSE IF(FFF58h≦LA(h)≦FFF5Fh)
PA(h)=LA(h)−9FF60h
ELSE IF(FFF60h≦LA(h)≦FFF67h)
PA(h)=LA(h)−97F68h
ELSE IF(FFF68h≦LA(h)≦FFF6Fh)
PA(h)=LA(h)−8FF70h
ELSE IF(FFF70h≦LA(h)≦FFF77h)
PA(h)=LA(h)−87F78h
ELSE IF(FFF78h≦LA(h)≦FFF7Fh)
PA(h)=LA(h)−7FF80h
ELSE IF(FFF80h≦LA(h)≦FFF87h)
PA(h)=LA(h)−77F88h
ELSE IF(FFF88h≦LA(h)≦FFF8Fh)
PA(h)=LA(h)−6FF90h
ELSE IF(FFF90h≦LA(h)≦FFF97h)
PA(h)=LA(h)−67F98h
ELSE IF(FFF98h≦LA(h)≦FFF9Fh)
PA(h)=LA(h)−5FFA0h
ELSE IF(FFFA0h≦LA(h)≦FFFA7h)
PA(h)=LA(h)−57FA8h
ELSE IF(FFFA8h≦LA(h)≦FFFAFh)
PA(h)=LA(h)−4FFB0h
ELSE IF(FFFB0h≦LA(h)≦FFFB7h)
PA(h)=LA(h)−47FB8h
ELSE IF(FFFB8h≦LA(h)≦FFFBFh)
PA(h)=LA(h)−3FFC0h
ELSE IF(FFFC0h≦LA(h)≦FFFC7h)
PA(h)=LA(h)−37FC8h
ELSE IF(FFFC8h≦LA(h)≦FFFCFh)
PA(h)=LA(h)−2FFD0h
ELSE IF(FFFD0h≦LA(h)≦FFFD7h)
PA(h)=LA(h)−27FD8h
ELSE IF(FFFD8h≦LA(h)≦FFFDFh)
PA(h)=LA(h)−1FFE0h
ELSE IF(FFFE0h≦LA(h)≦FFFE7h)
PA(h)=LA(h)−17FE8h
ELSE IF(FFFE8h≦LA(h)≦FFFEFh)
PA(h)=LA(h)−FFF0h
ELSE IF(FFFF0h≦LA(h)≦FFFF7h)
PA(h)=LA(h)−7FF8h
ELSE IF(FFFF8h≦LA(h)≦FFFFFh)
PA(h)=LA(h)
【0033】
次に、図2のアドレス変換装置18を、上述したアドレス変換式を用いてワイヤードロジックで構成し、フラッシュメモリ12の制御装置14とともにプロセッサ10とI/Fをとる。このようにして、前記実施例と同様に、ヘッダエリアにおける書換えの管理・制御とプログラム・データエリアのブロック間を連続化するアドレスマップへの変換が可能となる。
【0034】
【他の実施例】
この発明には数多くの実施の形態があり、以上の開示に基づいて多様に改変することが可能である。例えば、次のようなものも含まれる。
(1)前記実施例1,2では、ハードロジックによってアドレス変換装置を実現したが、アドレス変換用のROMを使用し、テーブル参照方式によって論理アドレスから物理アドレスへのアドレス変換を行うようにしてもよい。すなわち、論理アドレスをROMのアドレス側に供給し、物理アドレスをROMのデータ側から出力する。ROMのチップイネーブルやアウトプットイネーブルはアサートしたままにして、アドレスコントロールとする。このROMに、前記実施例で示したようなアドレス変換式を展開したテーブルを記憶すればよい。
【0035】
(2)前記形態はフラッシュメモリに本発明を適用したものであるが、他の類似するメモリがフラッシュメモリと同じ書込み,読出し機能を備えており、かつ、書込前ブロック消去特性を有するメモリであれば、同様に適用可能である。
(3)前記実施例は、バイト単位やワード(16ビットや32ビット)単位による操作の場合であるが、他のデータ単位であっても、同様に適用可能である。
【0036】
【発明の効果】
以上説明したように、本発明によれば、次のような効果がある。
(1)対応するヘッダエリアとプログラム・データエリアが、メモリの同一ブロック内となるようにアドレス変換を行うので、ブロックの書換回数を低減して、高速のアクセスが可能となる。また、ヘッダエリア用のメモリを必要とせず、コストの削減を可能にする。
(2)アドレス変換によって、プロセッサ側からみたときにプログラム・データエリアのブロックが連続するようになり、メモリ領域の無駄を省くとともに、主記憶装置に実行プログラムをロードすることなく、拡張記憶装置もしくは補助記憶装置上でプログラムの実行が可能となる。
【図面の簡単な説明】
【図1】本発明を利用したシステムの一例のブロック図である。
【図2】本発明の一形態の主要部を示すブロック図である。
【図3】論理アドレスから物理アドレスにアドレス変換するための、メモリマッピングの手法を示す概念図である。
【図4】ブロック消去機能をもつ汎用のフラッシュメモリにおける物理アドレスのメモリマッピングと、ヘッダエリア及びプログラム・データエリアの関係を示す図である。
【図5】フラッシュメモリの物理アドレスとプロセッサの論理アドレスの関係を示す図である。
【図6】実施例1におけるフラッシュメモリのメモリマップを示す図である。
【図7】実施例1におけるフラッシュメモリのブロックnにおける詳細な構造のメモリマップを示す図である。
【図8】実施例2におけるフラッシュメモリのメモリマップを示す図である。
【図9】実施例2におけるフラッシュメモリのブロックnにおける詳細な構造のメモリマップを示す図である。
【符号の説明】
10…プロセッサ
12…フラッシュメモリ
14…フラッシュメモリ制御装置
16…RAM
18…アドレス変換装置
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a storage device having a flash memory and a flash memory management method, and more specifically to an improvement in an efficient flash memory management method.
[0002]
[Background Art]
Generally, electrically erasable programmable read only memories (EEPROMs), including flash type floating gate transistors, are readily available on the market today. These so-called flash memories are nonvolatile memories similar in function and performance to EPROM memories, and further have a function of enabling a programmable operation in a circuit for erasing blocks divided in the memory. In a flash memory, the content of a previously written block area is rewritten by erasing the block area in advance.
[0003]
In a typical computer system, a program of an operating system (hereinafter, simply referred to as “OS”) performs data management of a data storage device of the system. The attributes of a data storage device that are necessary and sufficient to achieve compatibility with an OS program are such that data can be read from and written to any location on the data storage device. is there. However, in the case of a flash memory, data cannot be written to an area to which data has already been written unless data in that area is erased. For this reason, flash memories are not compatible with typical existing OS programs.
[0004]
Focusing on such a point, software that enables a flash memory to be managed by an existing OS program has been proposed in the prior art. In this prior art program, the flash memory is operated as a "write once read multiple times" device or as a "write multiple read multiple times" device. The former is a device that cannot reuse a memory area that has been previously written, and can be used as an auxiliary storage device or an extended storage device. In the latter, an auxiliary storage device (semiconductor file storage device) having control for reducing the number of times of rewriting of the flash memory is provided in the area in which a previously written memory area can be reused.
[0005]
[Problems to be solved by the invention]
According to the apparatus described in the prior art described above, a ROM executable program is operated on an extended storage device using a flash memory without having a control structure for reducing the number of rewrites. That is, when rewriting data in the flash memory, it is necessary to erase all blocks at once and then store the data. An auxiliary storage device (semiconductor file storage device) is known as a device having a control structure for reducing the number of times of rewriting of the flash memory, but a device capable of executing a program on an extended storage device using the flash memory. Not in In order to reduce the number of rewrites in the auxiliary storage device, there is a method of storing the information (rewrite number table) in a different memory, but the cost is high. Further, in the method of storing data on the same flash memory, data cannot be arranged completely continuously.
[0006]
The present invention focuses on the above points, and an object of the present invention is to provide a device having a control structure for reducing the number of times of rewriting of a flash memory on an extended storage device using the flash memory. Another object is to enable a program to be executed on an extended storage device without loading the program into a main storage device. Still another object is to provide an auxiliary storage device using a flash memory as a memory management device for converting a continuous logical address to a discontinuous physical address while having a control structure for reducing the number of rewrites. Is to reduce the overhead for access and to enable high-speed access.
[0007]
[Means for Solving the Problems]
In order to achieve the above object, the present invention provides a storage device including a flash memory for erasing storage contents in units of blocks, wherein a first area for storing management information of its own block and a main information for storing main information are stored. A second area to be provided for each block, and a first address conversion means for converting a physical address and a logical address so that the first area of the adjacent block becomes a continuous logical address; And a second address conversion unit that converts a physical address and a logical address so that a second area of the adjacent block has a continuous logical address.
[0008]
Another invention is a flash type memory management method for erasing storage contents in block units, wherein a first area for storing management information of its own block and a second area for storing main information are provided. A physical address and a logical address are converted so that the first area of the adjacent block is a continuous logical address, and the logical address of the second area of the adjacent block is continuous. The conversion of the physical address and the logical address is performed so that
[0009]
The above and other objects, features and advantages of the present invention will become apparent from the following detailed description and the accompanying drawings.
[0010]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, embodiments of the present invention will be described in detail. The present invention is applied to a computer system including an extended or auxiliary storage device including a processor 10, a flash memory 12, and a control device 14, and a RAM (main storage device) 16, as shown in FIG. 1, for example. In order to reduce the number of times of rewriting, the flash memory 12 stores an area (header area) having rewriting information (erase information) in block units of the flash memory 12 and programs and data on the flash memory 12. It has an area (program data area) (see FIG. 4 described later). The flash memory control device 14 has a role of generating signals such as read, write, and chip select for the flash memory 12 and interfacing (I / F) the flash memory 12 from the processor 10.
[0011]
The header area describes, for example, the number of times of erasing and the time. Here, if the logical address of the processor 10 can be divided into units of the number of blocks of the flash memory 12 and stored in the flash memory 12, the number of times of rewriting of the flash memory 12 can be reduced and the management method of the flash memory 12 can be simplified. . That is, if the data to be rewritten extends over a plurality of blocks, the rewriting process must be performed on the plurality of blocks. However, if data to be rewritten is in one block, only that block needs to be rewritten, and the number of times of rewriting of the flash memory 12 can be reduced to simplify management.
[0012]
Therefore, the memory mapping shown in FIG. 3 is performed using the device shown in FIG. That is, the header area and the program / data area are divided into units of the number of blocks. Then, the divided areas are efficiently arranged in block units in the flash memory. That is, the divided header area and the divided program / data area, which need to be rewritten at the same time, are arranged so as to be included in the same block. Such an arrangement is realized by an address translation device 20 that translates a logical address of the processor 10 into a physical address of the flash memory 12.
[0013]
FIG. 4 shows an example of a memory map of the flash memory 12 having a block structure. This example is a flash memory capable of storing L × (m + 1) bytes, each block being L bytes and having a total of m + 1 blocks. Assuming that P bytes are required as a header area having information such as the number of times of rewriting of the flash memory 12 for managing each block, a header area of P × (m + 1) bytes is required as a whole. Therefore, this system has a program data area of (LP) × (m + 1) bytes.
[0014]
The address conversion device 18 shown in FIG. 2 performs conversion on the flash memory 12 having such an area configuration. More specifically, as shown in FIG. 5, in the logical address of the processor 10, the header area of each block is sequentially arranged as block 0, block 1,..., Block m. On the other hand, in the program data area, the block 0, block 1,... As a result, the header area of each block is arranged with a continuous logical address. Similarly, the program / data area of each block is also arranged with consecutive logical addresses.
[0015]
In such an address arrangement, it is assumed that, for example, it is necessary to rewrite data included in the program data area n. In terms of the logical address of the processor 10, a total of two blocks, the block including the header area of the program data area n and the block corresponding to the program data area n, must be rewritten. However, when viewed from the physical address of the flash memory 12, the program data area n is in the same block as the corresponding header area. Therefore, only that block needs to be rewritten.
[0016]
As described above, according to the present embodiment, a high-speed management program that reduces the number of times of rewriting of the flash memory reads information in the header area, and can easily implement rewriting or additional writing of an execution program or data. Further, since the blocks of the program / data area are continuously arranged on the logical address, it is possible to realize an extended storage device and an auxiliary storage device having a data structure with no useless empty space, and a flash memory. The operation of the execution program becomes possible. Furthermore, since the header area is stored in a block managed by itself, there is no need for a separate memory area for the header area.
[0017]
Explaining how to manage each block of the flash memory, "FFh (hexadecimal notation)" is initially stored in the header area. Since the flash memory cannot be used as an extended storage device or an auxiliary storage device unless it is initialized, the flash memory stores the rewrite count of 0 times and the current time in the header area of block 0, and similarly stores the rewrite count of 0 times in the header area of block 1. The current time is stored, and so on until the last block is stored in ascending order.
[0018]
In a system using a flash memory as an extended storage device or an auxiliary storage device, it is customary to store data and an execution program in a memory in a structure to be additionally written. In the structure to be added, the updated data and the execution program are added, but the previous data and the execution program are invalidated. Then, as the data and the execution program are repeatedly updated, a useless memory area is expanded. Therefore, it is necessary to relocate the memory area on the flash memory. At this time, as a block candidate to be erased, erasing is performed with priority given to the block with the least number of rewrites. At this time, if there are a plurality of blocks having the same number of rewrites and one of the blocks needs to be erased, the erase operation is performed with priority given to the earlier block erase time.
[0019]
When actually erasing a block, a program for temporarily erasing the previous rewrite count “U” stored in the header area of the block in another memory or register, and then erasing the block in the flash memory, is used. Erase and initialize the target block (header area and data program area). Immediately thereafter, a value “U + 1” obtained by incrementing the previous rewrite count by “1” is written into the header area of the block, and at the same time, the current time is also written. Then, the data program is rearranged as necessary. Hereinafter, examples of the present embodiment will be described.
[0020]
Embodiment 1
As shown in FIG. 1, in a system having a processor 10, which is a general-purpose CPU or a general-purpose microcomputer, a high-speed accessible RAM 16, a flash memory 12, and an extended storage device or an auxiliary storage device including its control device 14, In the present embodiment, it is assumed that a flash memory 12 used for an extended storage device or an auxiliary storage device having a total of 32 64 Kbyte blocks of 2 Mbit × 8 is mounted.
[0021]
This flash memory 12 has a memory map of physical addresses as shown in FIG. Each block has its own header area for each block to be managed by the OS program or the control program. In the header area, the number of times the block has been erased, the time at which the block was erased, and the like are recorded in the header area in a structure as shown in FIG. The addresses shown in FIG. 7 are physical addresses of the flash memory 12. With reference to the contents stored in the header area of the block n, the OS program or the control program manages the erasure or rewrite of the block n.
[0022]
The physical address of the flash memory 12 is converted into a logical address as viewed from the processor 10, and as shown in FIG. 3 or 5, the header area of each block and the blocks of the program data area become continuous. An example of a formula for calculating the conversion between the logical address and the physical address is as follows. The numerical value n is a number from 0 to 31 in decimal notation. A numerical value obtained by converting n into a hexadecimal number is defined as N (h). The value of the physical address is “hexadecimal: [PA (h)], PA [20: 0]”, and the value of the logical address is “hexadecimal: [LA (h)], LA [20: 0]”. The following shows the conversion equation using the block N (h).
[0023]
IF (000000h ≦ LA (h) ≦ 00FFEFh)
PA (h) = LA (h)
ELSE IF (00FFFF0h ≦ LA (h) ≦ 01FFDFh)
PA (h) = LA (h) +10 (h)
ELSE IF (00FFE0h ≦ LA (h) ≦ 02FFCFh)
PA (h) = LA (h) +20 (h)
ELSE IF (02FFD0h ≦ LA (h) ≦ 03FFBFh)
PA (h) = LA (h) +30 (h)
ELSE IF (03FFC0h ≦ LA (h) ≦ 04FFAFh)
PA (h) = LA (h) +40 (h)
ELSE IF (04FFB0h ≦ LA (h) ≦ 05FF9Fh)
PA (h) = LA (h) +50 (h)
ELSE IF (05FFA0h ≦ LA (h) ≦ 06FF8Fh)
PA (h) = LA (h) +60 (h)
ELSE IF (06FF90h ≦ LA (h) ≦ 07FF7Fh)
PA (h) = LA (h) +70 (h)
ELSE IF (07FF80h ≦ LA (h) ≦ 08FF6Fh)
PA (h) = LA (h) +80 (h)
ELSE IF (08FF70h ≦ LA (h) ≦ 09FF5Fh)
PA (h) = LA (h) +90 (h)
ELSE IF (09FF60h ≦ LA (h) ≦ 0AFF4Fh)
PA (h) = LA (h) + A0 (h)
ELSE IF (0AFF50h ≦ LA (h) ≦ 0BFF3Fh)
PA (h) = LA (h) + B0 (h)
ELSE IF (0BFF40h ≦ LA (h) ≦ 0CFF2Fh)
PA (h) = LA (h) + C0 (h)
ELSE IF (0CFF30h ≦ LA (h) ≦ 0DFF1Fh)
PA (h) = LA (h) + D0 (h)
ELSE IF (0DFF20h ≦ LA (h) ≦ 0EFF0Fh)
PA (h) = LA (h) + E0 (h)
ELSE IF (0EFF10h ≦ LA (h) ≦ 0FFEFFh)
PA (h) = LA (h) + F0 (h)
ELSE IF (0FFF00h ≦ LA (h) ≦ 10FEEFh)
PA (h) = LA (h) +100 (h)
ELSE IF (10FEFOh ≦ LA (h) ≦ 11FEDFh)
PA (h) = LA (h) + 110F (h)
ELSE IF (11FEE0h ≦ LA (h) ≦ 12FECFh)
PA (h) = LA (h) +120 (h)
ELSE IF (12FED0h ≦ LA (h) ≦ 13FEBFh)
PA (h) = LA (h) +130 (h)
ELSE IF (13FECOh ≦ LA (h) ≦ 14FEAFh)
PA (h) = LA (h) +140 (h)
ELSE IF (14FEB0h ≦ LA (h) ≦ 15FE9Fh)
PA (h) = LA (h) +150 (h)
ELSE IF (15FEA0h ≦ LA (h) ≦ 16FE8Fh)
PA (h) = LA (h) +160 (h)
ELSE IF (16FE90h ≦ LA (h) ≦ 17FE7Fh)
PA (h) = LA (h) +170 (h)
ELSE IF (17FE80h ≦ LA (h) ≦ 18FE6Fh)
PA (h) = LA (h) +180 (h)
ELSE IF (18FE70h ≦ LA (h) ≦ 19FE5Fh)
PA (h) = LA (h) +190 (h)
ELSE IF (19FE60h ≦ LA (h) ≦ 1AFE4Fh)
PA (h) = LA (h) + 1A0 (h)
ELSE IF (1AFE50h ≦ LA (h) ≦ 1BFE3Fh)
PA (h) = LA (h) + 1B0 (h)
ELSE IF (1BFE40h ≦ LA (h) ≦ 1CFE2Fh)
PA (h) = LA (h) + 1C0 (h)
ELSE IF (1CFE30h ≦ LA (h) ≦ 1DFE1Fh)
PA (h) = LA (h) + 1D0 (h)
ELSE IF (1DFE20h ≦ LA (h) ≦ 1EFE0Fh)
PA (h) = LA (h) + 1E0 (h)
ELSE IF (1EFE10h ≦ LA (h) ≦ 1FFDFFh)
PA (h) = LA (h) + 1F0 (h)
ELSE IF (1FFE00h ≦ LA (h) ≦ 1FFE0Fh)
PA (h) = LA (h) -1 EFE10 (h)
ELSE IF (1FFE10h ≦ LA (h) ≦ 1FFE1Fh)
PA (h) = LA (h) -1 DFE20 (h)
ELSE IF (1FFE20h ≦ LA (h) ≦ 1FFE2Fh)
PA (h) = LA (h) -1 CFE30 (h)
ELSE IF (1FFE30h ≦ LA (h) ≦ 1FFE3Fh)
PA (h) = LA (h) -1BFE40 (h)
ELSE IF (1FFE40h ≦ LA (h) ≦ 1FFE4Fh)
PA (h) = LA (h) -1AFE50 (h)
ELSE IF (1FFE50h ≦ LA (h) ≦ 1FFE5Fh)
PA (h) = LA (h) -19FE60 (h)
ELSE IF (1FFE60h ≦ LA (h) ≦ 1FFE6Fh)
PA (h) = LA (h) -18FE70 (h)
ELSE IF (1FFE70h ≦ LA (h) ≦ 1FFE7Fh)
PA (h) = LA (h) -17FE80 (h)
ELSE IF (1FFE80h ≦ LA (h) ≦ 1FFE8Fh)
PA (h) = LA (h) -16FE90 (h)
ELSE IF (1FFE90h ≦ LA (h) ≦ 1FFE9Fh)
PA (h) = LA (h) -15FEA0 (h)
ELSE IF (1FFEA0h ≦ LA (h) ≦ 1FFEAFh)
PA (h) = LA (h) -14FEB0 (h)
ELSE IF (1FFEB0h ≦ LA (h) ≦ 1FFEBFh)
PA (h) = LA (h) -13FECO (h)
ELSE IF (1FFEC0h ≦ LA (h) ≦ 1FFECFh)
PA (h) = LA (h) -12FED0 (h)
ELSE IF (1FFED0h ≦ LA (h) ≦ 1FFEDFh)
PA (h) = LA (h) -11FEE0 (h)
ELSE IF (1FFEE0h ≦ LA (h) ≦ 1FFEEFh)
PA (h) = LA (h) -10FEFO (h)
ELSE IF (1FFEF0h ≦ LA (h) ≦ 1FFEFFFh)
PA (h) = LA (h) -FFF00 (h)
ELSE IF (1FFF00h ≦ LA (h) ≦ 1FFF0Fh)
PA (h) = LA (h) -EFF10 (h)
ELSE IF (1FFF10h ≦ LA (h) ≦ 1FFF1Fh)
PA (h) = LA (h) -DFF20 (h)
ELSE IF (1FFF20h ≦ LA (h) ≦ 1FFF2Fh)
PA (h) = LA (h) -CFF30 (h)
ELSE IF (1FFF30h ≦ LA (h) ≦ 1FFF3Fh)
PA (h) = LA (h) -BFF40 (h)
ELSE IF (1FFF40h ≦ LA (h) ≦ 1FFF4Fh)
PA (h) = LA (h) -AFF50 (h)
ELSE IF (1FFF50h ≦ LA (h) ≦ 1FFF5Fh)
PA (h) = LA (h) -9FF60 (h)
ELSE IF (1FFF60h ≦ LA (h) ≦ 1FFF6Fh)
PA (h) = LA (h) -8FF70 (h)
ELSE IF (1FFF70h ≦ LA (h) ≦ 1FFF7Fh)
PA (h) = LA (h) -7FF80 (h)
ELSE IF (1FFF80h ≦ LA (h) ≦ 1FFF8Fh)
PA (h) = LA (h) -6FF90 (h)
ELSE IF (1FFF90h ≦ LA (h) ≦ 1FFF9Fh)
PA (h) = LA (h) -5FFA0 (h)
ELSE IF (1FFFA0h ≦ LA (h) ≦ 1FFFAFh)
PA (h) = LA (h) -4FFB0 (h)
ELSE IF (1FFFB0h ≦ LA (h) ≦ 1FFFFBFh)
PA (h) = LA (h) -3FFC0 (h)
ELSE IF (1FFFC0h ≦ LA (h) ≦ 1FFFCFh)
PA (h) = LA (h) -2FFD0 (h)
ELSE IF (1FFFD0h ≦ LA (h) ≦ 1FFFFDFh)
PA (h) = LA (h) -1FFE0 (h)
ELSE IF (1FFFE0h ≦ LA (h) ≦ 1FFFEh)
PA (h) = LA (h) -FFF0 (h)
ELSE IF (1FFFF0h ≦ LA (h) ≦ 1FFFFFh)
PA (h) = LA (h)
[0024]
As an example, the first
IF (000000h ≦ LA (h) ≦ 00FFEFh)
PA (h) = LA (h)
Means that when the logical address LA (h) is between 000000h and 00FFEFh, the physical address PA (h) has the same value as the logical address LA (h).
[0025]
Similarly,
ELSE IF (00FFFF0h ≦ LA (h) ≦ 01FFDFh)
PA (h) = LA (h) +10 (h)
Means that when the logical address LA (h) is between 00FFF0h and 01FFDFh, the physical address PA (h) is a value obtained by adding 10 (h) to the logical address LA (h). Hereinafter, the same applies.
[0026]
Next, the address translation device 18 of FIG. 2 is configured by wired logic using the above-described address translation formula, and interfaces with the processor 10 together with the control device 14 of the flash memory 12. The block management method of the flash memory 12 according to the present embodiment will be described. As described above, first, the header area of each block is initialized (initialized). An example of the initialization is as follows.
[0027]
In the header area of block 0, “00h” is written to “00FFFDh” to “00FFFFh” of the physical address PA [20: 0], and the current time is written to “00FFFFh” to “00FFFBh”. Next, in the header area of block 1, “00h” is written into “01FFFDh” to “01FFFFh” of the physical address PA [20: 0], and the current time is written into “01FFFFh” from “01FFF6h”. ...... In the header area of the ascending block xxh, "00h" is written into "xxFFFDh" to "xxFFFFh" of the physical address PA [20: 0], and the current time is written into "xxFFFF6h" to "xxFFFBh". Write each. In the header area of the last block 1Fh, "00h" is written to "1FFFFDh" to "1FFFFFh" of the physical address PA [20: 0], and the current time is written to "1FFFF6h" to "1FFFFBh", respectively. To end the initialization.
[0028]
In this system using a flash memory as an extended storage device or an auxiliary storage device, data, execution programs, and the like are newly updated by a method of appending. This method itself is the same as the conventional method. However, each time the data or the execution program is updated, an unnecessary memory area is expanded. Therefore, in order to delete data / execution programs and memory fragmentation that have become unnecessary due to updating of data and execution programs, memory data is relocated (defragmentation) to reduce unnecessary memory areas and increase reuse areas. So that At this time, as a block candidate to be erased, the block having the smaller number of rewrites is erased with priority as described above. If the number of rewrites is the same and there are two or more candidates, the erase of the candidate with the oldest erase time is prioritized and erased. This processing is performed by the processor 10 via the flash memory control device 14 by the defragmentation program.
[0029]
Specifically, the number of rewrites “V” stored in the header area of the block selected preferentially is stored in another memory or register, and then a program (erase sequence routine) for erasing the corresponding block is executed. ). After this program ends, the block has been erased. Then, the header area is immediately updated. That is, the number of rewrites is newly written as a value “V + 1” obtained by incrementing the previous number by one, and the current time is further written. After this work is completed, the state is returned to a state in which normal data can be additionally written or read.
[0030]
Embodiment 2
In the second embodiment, the flash memory 12 used for the expansion storage device or the auxiliary storage device has a system configuration in which a flash memory of 1 megabit × 16 and having a total of 32 blocks of 32 kilowords is mounted. This flash memory has a memory map of physical addresses as shown in FIG. As in the above embodiment, each block has its own header area for each block to be managed by the OS program or control program. The contents, such as the number of erasures of the block and the erasure time, take eight words in the structure shown in FIG. The addresses shown in FIG. 9 are physical addresses of the flash memory 12. With reference to the contents stored in the header area of the block n, the OS program or the control program manages block erasure and rewrite of the block n. This management method can be handled by the same method as in the first embodiment.
[0031]
Next, address conversion is performed so that the header area of each block and the blocks of the program data area are continuous. An example of a calculation formula for the address conversion from the logical address to the physical address is as follows. The numerical value n, numerical value N (h), physical address value [PA (h)], PA [20: 1], logical address value [LA (h)], LA [20: 1] are the same as those described above. Same as in the example.
[0032]
IF (00000h ≦ LA (h) ≦ 07FF7h)
PA (h) = LA (h)
ELSE IF (07FF8h ≦ LA (h) ≦ 0FFEFh)
PA (h) = LA (h) +8 (h)
ELSE IF (0FFF0h ≦ LA (h) ≦ 17FE7h)
PA (h) = LA (h) +10 (h)
ELSE IF (17FE8h ≦ LA (h) ≦ 1FFDFh)
PA (h) = LA (h) +18 (h)
ELSE IF (1FFE0h ≦ LA (h) ≦ 27FD7h)
PA (h) = LA (h) +20 (h)
ELSE IF (27FD8h ≦ LA (h) ≦ 2FFCFh)
PA (h) = LA (h) +28 (h)
ELSE IF (2FFD0h ≦ LA (h) ≦ 37FC7h)
PA (h) = LA (h) +30 (h)
ELSE IF (37FC8h ≦ LA (h) ≦ 3FFBFh)
PA (h) = LA (h) +38 (h)
ELSE IF (3FFC0h ≦ LA (h) ≦ 47FB7h)
PA (h) = LA (h) +40 (h)
ELSE IF (47FB8h ≦ LA (h) ≦ 4FFAFh)
PA (h) = LA (h) +48 (h)
ELSE IF (4FFB0h ≦ LA (h) ≦ 57FA7h)
PA (h) = LA (h) +50 (h)
ELSE IF (57FA8h ≦ LA (h) ≦ 5FF9Fh)
PA (h) = LA (h) +58 (h)
ELSE IF (5FFA0h ≦ LA (h) ≦ 67F97h)
PA (h) = LA (h) +60 (h)
ELSE IF (67F98h ≦ LA (h) ≦ 6FF8Fh)
PA (h) = LA (h) +68 (h)
ELSE IF (6FF90h ≦ LA (h) ≦ 77F87h)
PA (h) = LA (h) +70 (h)
ELSE IF (77F88h ≦ LA (h) ≦ 7FF7Fh)
PA (h) = LA (h) +78 (h)
ELSE IF (7FF80h ≦ LA (h) ≦ 87F77h)
PA (h) = LA (h) +80 (h)
ELSE IF (87F78h ≦ LA (h) ≦ 8FF6Fh)
PA (h) = LA (h) +88 (h)
ELSE IF (8FF70h ≦ LA (h) ≦ 97F67h)
PA (h) = LA (h) +90 (h)
ELSE IF (97F68h ≦ LA (h) ≦ 9FF5Fh)
PA (h) = LA (h) +98 (h)
ELSE IF (9FF60h ≦ LA (h) ≦ A7F57h)
PA (h) = LA (h) + A0 (h)
ELSE IF (A7F58h ≦ LA (h) ≦ AFF4Fh)
PA (h) = LA (h) + A8 (h)
ELSE IF (AFF50h ≦ LA (h) ≦ B7F47h)
PA (h) = LA (h) + B0 (h)
ELSE IF (B7F48h ≦ LA (h) ≦ BFF3Fh)
PA (h) = LA (h) + B8 (h)
ELSE IF (BFF40h ≦ LA (h) ≦ C7F37h)
PA (h) = LA (h) + C0 (h)
ELSE IF (C7F38h ≦ LA (h) ≦ CFF2Fh)
PA (h) = LA (h) + C8 (h)
ELSE IF (CFF30h ≦ LA (h) ≦ D7F27h)
PA (h) = LA (h) + D0 (h)
ELSE IF (D7F28h ≦ LA (h) ≦ DFF1Fh)
PA (h) = LA (h) + D8 (h)
ELSE IF (DFF20h ≦ LA (h) ≦ E7F17h)
PA (h) = LA (h) + E0 (h)
ELSE IF (E7F18h ≦ LA (h) ≦ EFF0Fh)
PA (h) = LA (h) + E8 (h)
ELSE IF (EFF10h ≦ LA (h) ≦ F7F07h)
PA (h) = LA (h) + F0 (h)
ELSE IF (F7F08h ≦ LA (h) ≦ FFEFFh)
PA (h) = LA (h) + F8 (h)
ELSE IF (FFF00h ≦ LA (h) ≦ FFF07h)
PA (h) = LA (h) -F7F08h
ELSE IF (FFF08h ≦ LA (h) ≦ FFF0Fh)
PA (h) = LA (h) -EFF10h
ELSE IF (FFF10h ≦ LA (h) ≦ FFF17h)
PA (h) = LA (h) -E7F18h
ELSE IF (FFF18h ≦ LA (h) ≦ FFF1Fh)
PA (h) = LA (h) -DFF20h
ELSE IF (FFF20h ≦ LA (h) ≦ FFF27h)
PA (h) = LA (h) -D7F28h
ELSE IF (FFF28h ≦ LA (h) ≦ FFF2Fh)
PA (h) = LA (h) -CFF30h
ELSE IF (FFF30h ≦ LA (h) ≦ FFF37h)
PA (h) = LA (h) -C7F38h
ELSE IF (FFF38h ≦ LA (h) ≦ FFF3Fh)
PA (h) = LA (h) -BFF40h
ELSE IF (FFF40h ≦ LA (h) ≦ FFF47h)
PA (h) = LA (h) -B7F48h
ELSE IF (FFF48h ≦ LA (h) ≦ FFF4Fh)
PA (h) = LA (h) -AFF50h
ELSE IF (FFF50h ≦ LA (h) ≦ FFF57h)
PA (h) = LA (h) -A7F58h
ELSE IF (FFF58h ≦ LA (h) ≦ FFF5Fh)
PA (h) = LA (h) -9FF60h
ELSE IF (FFF60h ≦ LA (h) ≦ FFF67h)
PA (h) = LA (h) -97F68h
ELSE IF (FFF68h ≦ LA (h) ≦ FFF6Fh)
PA (h) = LA (h) -8FF70h
ELSE IF (FFF70h ≦ LA (h) ≦ FFF77h)
PA (h) = LA (h) -87F78h
ELSE IF (FFF78h ≦ LA (h) ≦ FFF7Fh)
PA (h) = LA (h) -7FF80h
ELSE IF (FFF80h ≦ LA (h) ≦ FFF87h)
PA (h) = LA (h) -77F88h
ELSE IF (FFF88h ≦ LA (h) ≦ FFF8Fh)
PA (h) = LA (h) -6FF90h
ELSE IF (FFF90h ≦ LA (h) ≦ FFF97h)
PA (h) = LA (h) -67F98h
ELSE IF (FFF98h ≦ LA (h) ≦ FFF9Fh)
PA (h) = LA (h) -5FFA0h
ELSE IF (FFFA0h ≦ LA (h) ≦ FFFA7h)
PA (h) = LA (h) -57FA8h
ELSE IF (FFFA8h ≦ LA (h) ≦ FFFAFh)
PA (h) = LA (h) -4FFB0h
ELSE IF (FFFB0h ≦ LA (h) ≦ FFFB7h)
PA (h) = LA (h) -47FB8h
ELSE IF (FFFB8h ≦ LA (h) ≦ FFFFh)
PA (h) = LA (h) -3FFC0h
ELSE IF (FFFC0h ≦ LA (h) ≦ FFFC7h)
PA (h) = LA (h) -37FC8h
ELSE IF (FFFC8h ≦ LA (h) ≦ FFFCFh)
PA (h) = LA (h) -2FFD0h
ELSE IF (FFFD0h ≦ LA (h) ≦ FFFD7h)
PA (h) = LA (h) -27FD8h
ELSE IF (FFFD8h ≦ LA (h) ≦ FFFDFh)
PA (h) = LA (h) -1FFE0h
ELSE IF (FFFE0h ≦ LA (h) ≦ FFFE7h)
PA (h) = LA (h) -17FE8h
ELSE IF (FFFE8h ≦ LA (h) ≦ FFFEh)
PA (h) = LA (h) -FFF0h
ELSE IF (FFFF0h ≦ LA (h) ≦ FFFF7h)
PA (h) = LA (h) -7FF8h
ELSE IF (FFFF8h ≦ LA (h) ≦ FFFFFh)
PA (h) = LA (h)
[0033]
Next, the address translation device 18 of FIG. 2 is configured by wired logic using the above-described address translation formula, and interfaces with the processor 10 together with the control device 14 of the flash memory 12. In this manner, similarly to the above-described embodiment, management and control of rewriting in the header area and conversion to an address map that makes blocks between the program and data areas continuous can be performed.
[0034]
[Other embodiments]
The present invention has many embodiments, and can be variously modified based on the above disclosure. For example, the following is also included.
(1) In the first and second embodiments, the address translation device is realized by hardware logic. However, it is also possible to use a ROM for address translation and perform address translation from a logical address to a physical address by a table reference method. Good. That is, the logical address is supplied to the address side of the ROM, and the physical address is output from the data side of the ROM. Address control is performed while the chip enable and output enable of the ROM are kept asserted. In this ROM, a table obtained by expanding the address conversion formula as shown in the above embodiment may be stored.
[0035]
(2) In the above embodiment, the present invention is applied to a flash memory. However, another similar memory has the same write / read function as the flash memory, and has a block erase characteristic before writing. If so, it is equally applicable.
(3) The above embodiment is directed to a case of operation in units of bytes or words (16 bits or 32 bits). However, the present invention can be similarly applied to other data units.
[0036]
【The invention's effect】
As described above, the present invention has the following effects.
(1) Since the address conversion is performed so that the corresponding header area and program / data area are in the same block of the memory, the number of times of rewriting of the block can be reduced and high-speed access can be performed. In addition, a memory for a header area is not required, and cost can be reduced.
(2) By the address conversion, blocks of the program data area become continuous when viewed from the processor side, so that the memory area is not wasted and the execution program is not loaded into the main storage device, and the extended storage device or The program can be executed on the auxiliary storage device.
[Brief description of the drawings]
FIG. 1 is a block diagram of an example of a system using the present invention.
FIG. 2 is a block diagram illustrating a main part of one embodiment of the present invention.
FIG. 3 is a conceptual diagram showing a memory mapping method for performing address conversion from a logical address to a physical address.
FIG. 4 is a diagram showing a relationship between memory mapping of physical addresses in a general-purpose flash memory having a block erasing function, and a header area and a program data area.
FIG. 5 is a diagram showing a relationship between a physical address of a flash memory and a logical address of a processor.
FIG. 6 is a diagram illustrating a memory map of a flash memory according to the first embodiment.
FIG. 7 is a diagram showing a memory map of a detailed structure in a block n of the flash memory according to the first embodiment.
FIG. 8 is a diagram illustrating a memory map of a flash memory according to a second embodiment.
FIG. 9 is a diagram showing a memory map of a detailed structure in a block n of a flash memory according to a second embodiment.
[Explanation of symbols]
10. Processor
12 Flash memory
14 Flash memory controller
16 ... RAM
18 ... Address translation device

Claims (2)

ブロック単位で記憶内容を消去するフラッシュ型メモリを備えた記憶装置であって、
自己のブロックの管理情報を記憶する第1の領域と、主情報を記憶する第2の領域とを、各ブロック毎に設け、
隣接する前記ブロックの第1の領域が連続する論理アドレスとなるように、物理アドレスと論理アドレスの変換を行う第1のアドレス変換手段と、
隣接する前記ブロックの第2の領域が連続する論理アドレスとなるように、物理アドレスと論理アドレスの変換を行う第2のアドレス変換手段と、
を備えたことを特徴とする記憶装置。
A storage device having a flash memory for erasing storage contents in block units,
A first area for storing management information of its own block and a second area for storing main information are provided for each block,
First address conversion means for converting a physical address and a logical address so that the first area of the adjacent block is a continuous logical address;
Second address translation means for translating a physical address and a logical address so that a second area of the adjacent block is a continuous logical address;
A storage device comprising:
ブロック単位で記憶内容を消去するフラッシュ型メモリの管理方法であって、
自己のブロックの管理情報を記憶する第1の領域と、主情報を記憶する第2の領域とを、各ブロック毎に設け、
隣接する前記ブロックの第1の領域が連続する論理アドレスとなるように、物理アドレスと論理アドレスの変換を行うとともに、
隣接する前記ブロックの第2の領域が連続する論理アドレスとなるように、物理アドレスと論理アドレスの変換を行う
ことを特徴とするフラッシュ型メモリの管理方法。
A flash memory management method for erasing stored contents in block units,
A first area for storing management information of its own block and a second area for storing main information are provided for each block,
The conversion between the physical address and the logical address is performed so that the first area of the adjacent block is a continuous logical address,
A method of managing a flash memory, comprising: converting a physical address and a logical address so that a second area of an adjacent block has a continuous logical address.
JP27052097A 1997-09-17 1997-09-17 Storage device with flash memory, flash memory management method Expired - Lifetime JP3552490B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP27052097A JP3552490B2 (en) 1997-09-17 1997-09-17 Storage device with flash memory, flash memory management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27052097A JP3552490B2 (en) 1997-09-17 1997-09-17 Storage device with flash memory, flash memory management method

Publications (2)

Publication Number Publication Date
JPH1196779A JPH1196779A (en) 1999-04-09
JP3552490B2 true JP3552490B2 (en) 2004-08-11

Family

ID=17487377

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27052097A Expired - Lifetime JP3552490B2 (en) 1997-09-17 1997-09-17 Storage device with flash memory, flash memory management method

Country Status (1)

Country Link
JP (1) JP3552490B2 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4315488B2 (en) * 1998-06-30 2009-08-19 ソニー株式会社 Data storage device, data processing device, data processing system and data processing method
JP2001209543A (en) 2000-01-28 2001-08-03 Nec Ic Microcomput Syst Ltd Program rewriting method for flash microcomputer
KR100484485B1 (en) * 2002-10-01 2005-04-20 한국전자통신연구원 Method for storing data in non-volatile memory and apparatus therefor
KR100526178B1 (en) 2003-03-31 2005-11-03 삼성전자주식회사 Access apparatus and method using flash memory
JP4461170B2 (en) 2007-12-28 2010-05-12 株式会社東芝 Memory system
JP4439569B2 (en) 2008-04-24 2010-03-24 株式会社東芝 Memory system
JP4703764B2 (en) * 2009-12-25 2011-06-15 株式会社東芝 Memory system control method

Also Published As

Publication number Publication date
JPH1196779A (en) 1999-04-09

Similar Documents

Publication Publication Date Title
US6134151A (en) Space management for managing high capacity nonvolatile memory
KR100526879B1 (en) flash file system
US7227788B2 (en) Memory management device and memory device
US6262918B1 (en) Space management for managing high capacity nonvolatile memory
US5946714A (en) Semiconductor storage device utilizing address management tables and table state maps for managing data storage and retrieval
US5963983A (en) Method and apparatus for dynamically creating conversion tables to access a semiconductor memory device
JP3692313B2 (en) Nonvolatile memory control method
US6477616B1 (en) Storage device, storage system, memory management method, recording medium, and computer data signal
TWI775122B (en) Circuit for accessing at least one non-volatile memory
US7571275B2 (en) Flash real-time operating system for small embedded applications
US8595413B2 (en) Memory control method and device, memory access control method, computer program, and recording medium
JPH08328762A (en) Semiconductor disk device and memory management method therefor
JPH08263361A (en) Flash memory card
WO2006093201A1 (en) Memory module, memory controller, nonvolatile storage, nonvolatile storage system, and memory read/write method
JP2005516264A (en) Method and apparatus for reducing block write operation time performed on non-volatile memory
WO2007058624A1 (en) A controller for non-volatile memories, and methods of operating the memory controller
GB2291990A (en) Flash-memory management system
JP2001521220A (en) Improved flash file system
JPH08137634A (en) Flash disk card
JPH11126488A (en) Method and device for storing and controlling data of external memory using plural flash memories
JP3552490B2 (en) Storage device with flash memory, flash memory management method
JP2008134685A (en) Nonvolatile memory system and nonvolatile memory control method
KR20020092261A (en) Management Scheme for Flash Memory with the Multi-Plane Architecture
JPH07153284A (en) Non-volatile semiconductor memory and its control method
JP2000181784A (en) Non-volatile storage device which can be rewritten

Legal Events

Date Code Title Description
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: 20040413

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040426

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

Free format text: PAYMENT UNTIL: 20090514

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090514

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100514

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110514

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120514

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120514

Year of fee payment: 8

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20120514

Year of fee payment: 8

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

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 9

EXPY Cancellation because of completion of term