JP5011498B2 - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP5011498B2 JP5011498B2 JP2000600167A JP2000600167A JP5011498B2 JP 5011498 B2 JP5011498 B2 JP 5011498B2 JP 2000600167 A JP2000600167 A JP 2000600167A JP 2000600167 A JP2000600167 A JP 2000600167A JP 5011498 B2 JP5011498 B2 JP 5011498B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- sector
- memory
- controller
- data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Description
本発明は、データ記憶および検索のための半導体メモリシステムに関し、また、半導体メモリシステムの不揮発性メモリへのアクセスを制御するメモリコントローラに関する。より具体的には、本発明は、フラッシュメモリシステム及びフラッシュメモリ用のコントローラに関する。
【0002】
フラッシュEEPROM(電気的消去書き込み可能な読出し専用メモリ)装置は不揮発性データ記憶装置用に電子工業界で一般的に用いられている。NAND型メモリセル、AND型メモリセルあるいはNOR型メモリセルに基づく装置を含む様々なタイプのフラッシュメモリ装置が存在する。こうした装置は、それぞれインタフエースするように設計されたホストプロセッサシステムに対して異なる型のインタフエースを有し、例えば、順次アクセス型インタフエース(多くのNAND型及びAND型装置で一般的に使用)、または、ランダムアクセス型インタフエース(複数のNOR型装置で使用)などが使用されている。本発明は、適切な形で、これらの異なるタイプの記憶装置の少なくともいくつかに、好ましくは全てに利用できることを目的とする。
【0003】
磁気ディスク記憶装置をコンピュータシステムにエミュレーションするために半導体メモリシステムを使用することは周知である。当業界では、半導体メモリシステムの演算速度を増して、磁気ディスク記憶装置をより良くエミュレートすることを目指している。
【0004】
本発明の第1の態様によれば、個別にアドレス可能で、かつ、セクタの消去可能ブロック内に設けられた不揮発メモリセクタを有し、前記セクタは、各々、メモリ内の自身の物理的位置を定義する物理アドレスを含む半導体メモリと;
データ構造のメモリへの書き込みとメモリからの読出し、及び消去用として処理されるブロックと非消去用として処理されるブロックとにセクタのブロックをソートするためのコントローラと;
を具備するホストプロセッサに接続するためのメモリシステムであって、
前記コントローラは、
ホストプロセッサから受け取った論理アドレスをメモリ内の前記メモリセクタの物理アドレスに変換する手段と;
ホストプロセッサからのデータが書き込まれる物理セクタアドレスを指示する書き込みポインタ(以下、ライトポインタ(WP)と称す)であって、消去用として処理される任意のブロックにおけるメモリセクタの物理アドレスを所定の順番で移動するように、また、ブロックが満杯の場合は別の消去ブロックに移動するようにコントローラによって制御されるライトポインタ(WP)とを含み、
こうした構成とすることで、ホストプロセッサからセクタ書き込みコマンドを受け取ると、前記ライトポインタ(WP)が指し示す物理アドレスを論理アドレスに割当てることによって、コントローラはホストプロセッサから受け取った論理アドレスをデータが書き込みされる物理アドレスに変換し、かつ、コントローラによって既に割当てられている各々の物理アドレスとともに論理アドレステーブルをコンパイルし(このテーブルは、以下、セクタ割当てテーブルまたはSATと称す)、コントローラはホストプロセッサからのデータがメモリセクタに書き込みされる頻度より少ない頻度でSATを更新するよう構成されたメモリシステムが提供される。
【0005】
ホストプロセッサからのデータがメモリ内のセクタに書き込まれる度にSATを更新するのでなく、それより少ない頻度でSATを更新することにより、本発明は、例えばフラッシュメモリなどの半導体メモリの超高速処理を提供し、従って、磁気ディスク記憶装置の良好なエミュレーションを可能にする。
【0006】
SATの物理セクタアドレスは、好ましくは、論理セクタアドレスによって命令され、これにより、N番目のSATエントリーは、論理アドレスNを有するデータが書き込みされたセクタの物理アドレスを含む。セクタ読出しコマンドをホストプロセッサから受け取ると、コントローラは、ホストプロセッサから受け取った論理セクタアドレスをSAT内で検索して、過去にコントローラが前記論理セクタアドレスに割当てた物理セクタアドレスを得る。SATは、好ましくは、半導体メモリのメモリセクタの1または複数の前記ブロック内に記憶される。各ブロックは、以下SATブロックと称されるSATの任意の部分を含んでいる。SATは、SATにおける1つまたは複数のブロックを書き換えることによって更新される。SATセクタのブロック全体を一時に更新することで、メモリシステムの演算スピードが著しく向上する。
【0007】
少なくとも1つのセクタブロック(以下、追加SATブロック(ASB)と称す)が提供され、これは前記SATブロックの個別セクタの修正バージョンを含む。前記ASBブロックの各セクタは、好ましくは、それが更新するSATブロックにおけるセクタの物理アドレスと、前記SATブロックセクタの修正バージョンとを含む。ASBの目的は、SATの半導体メモリ修正セクタに個別に隠して(キャッシュして)、SATプロックの書き換え回数を減らすことにある。前記ASBブロックの全てのセクタがSATセクタの修正バージョンで書き込みされると、ASBブロック内の全ての修正バージョンを含むように個々のSATブロックが書き換えられて、ASBブロックは消去される。
【0008】
本発明のメモリシステムにおいては、ホストプロセッサから受ける任意の論理アドレスに割当てられる物理アドレスが論理アドレスその物に従属していないことは理解されよう。コントローラは、単に、ライトポインタがそのとき指し示す物理セクタアドレスを割当てる。
【0009】
上述したように、コントローラは、ライトポインタ(WP)を他のブロックに移動させる前に、消去処理される前記1つのブロックを充填する。コントローラは、ライトポインタ(WP)を消去処理されるブロック内をくまなく所定の順番で移動させるように好適に構成されている。
【0010】
コントローラは、ライトポインタ(WP)を好適に制御して、消去ブロック中くまなく物理アドレスを番号順に上昇しながら連続して移動させ、このとき、各ブロックは書き込みされたデータで充填されている。ひとたび物理アドレス順による最高位ブロックのセクタがデータで充填されると、WPはコントローラによって消去処理される全てのブロック中、番号的に最下位の物理アドレスを有するセクタのブロックを取り囲むようにコントローラによって制御されるという意味において、ライトポインタ(WP)の制御は循環式である。
【0011】
コントローラは、あるいは、メモリセクタデ−タを書き込みするのに別の所定の順番を用いる。例えば、コントローラは、ライトポインタ(WP)を制御して、消去処理されるブロック中を物理アドレスによる番号順に連続して下るように移動させる。もしくは、物理セクタアドレスを非連続順に移動することも可能である。例えば、WPが消去処理される各ブロックにおいて物理セクタアドレス中をアドレスの数字を下るように移動したり、例えば、前記ブロックの各々において、第1セクタの物理アドレスにしたがって番号順に上るなど、何らかの所定の順序でブロックからブロックへ移動したりすることもできる。
【0012】
消去処理されるブロックにおけるセクタにデータを書き込むためにその他にも多くの所定の順番が実行可能なことは理解されよう。さらに、予め決定する必要のない、または、一部のみ決定させた任意の順序でコントローラが消去ブロックを使用することも可能である。一般的には好ましくないが、消去ブロックは、無作為な順序で使用することもできる。
【0013】
前記セクタブロックの個々におけるメモリセクタは、好ましくは、ユニットとして消去可能である。セクタは、また、個別消去も可能である(例えば、半導体記憶装置がAND型メモリの場合)。コントローラは、好ましくは、メモリセクタのブロック全体のみを消去するように記憶装置の消去演算を制御するように構成される。メモリセクタ内の全てのセクタが消去セクタである場合は、セクタのブロックは、消去ブロックとしてコントローラによって処理される。ブロックが1つまたは2つ以上の不良(すなわち、欠陥)セクタを含んでいる場合、コントローラは、ブロック全体を不良と定義し、そのブロックを非消去ブロックとして処理し、それによりこのブロックへのデータの書き込みは行われない。もしくは、ブロックが1つまたは2つ以上の不良セクタを含んでいる場合、コントローラは、そのブロックを消去ブロックとして処理し、それによりそのブロック内の良好セクタをデータ保存に使用する。しかし、後者の場合、好ましくは、メモリシステムが不良セクタを識別するテーブルを備え、コントローラは、ライトポインタ(WP)が次に移動するセクタアドレスが不良セクタアドレスか否かをチェックし、それが不良セクタのアドレスだった場合、ライトポインタを制御してこの不良セクタをスキップさせ、セクタが書き込みされる所定の順番に従って、次のセクタアドレスに移動するように構成される。
【0014】
疑念を回避するため、既に書き込みされた任意の良好(すなわち、非欠陥)セクタを含む任意のブロックは非消去ブロックとしてコントローラによって処理される。さらに、“消去”セクタなる用語は消去されたセクタのみでなく、書き込みされていない状態のセクタ及び消去前のセクタも含む。従って、書き込み前のセクタのブロックは、コントローラによって消去ブロックとして処理される。
【0015】
好ましくは、セクタブロックは各々、メモリ内での自身の物理的位置を定義する物理ブロックアドレスを有する。前記メモリセクタの各々の物理アドレスは、好ましくは、それが位置するブロックの物理ブロックアドレスを含む。新規なコントローラは、好適に、消去処理されるセクタブロックの少なくとも何個かの物理ブロックアドレスのリストをコンパイルするように構成され、これを利用して次に書き込みが行われるセクタブロックを素早く識別する。この消去ブロックのアドレスリストは、好ましくは、コントローラによってメモリシステムに設けられた一時的記憶域に記憶され、一時的記憶域は、好適に、コントローラのマイクロプロセッサのSRAMであり、各セクタブロックの消去状況を識別するコントローラによって半導体メモリに既に記憶されている情報からもたらされる(この情報は、好ましくは、半導体メモリにおいてビットマップの形式で保持され、各ブロックは消去ブロックまたは非消去ブロックとして記録される)。
【0016】
コントローラを好適に構成することで、以前に別のセクタに書き込みされた旧データを伝えるセクタの書き込みコマンドをホストプロセッサからコントローラによって受けると、コントローラは、現時点の旧データを備えるセクタのアドレスを一時的記憶域に保存する。この一時的記憶域は、好適に、コントローラのマイクロプロセッサに設けられたSRAMまたはDRAMである。通常はユーザによって発せられる、セクタ削除コマンドをホストプロセッサからコントローラによって受け取ると、コントローラは、好ましくは、削除すべきセクタを廃棄としてマークする(このとき、物理的にセクタを消去することはない)。コントローラは、ライトポインタ(WP)によって書き込みされた旧データを含む1つまたは2つ以上のセクタを有するブロック(以下、カレントオブソリートブロック(COB)と称す)をいかなる場合も1個しか容認しない。COB内の全てのセクタが旧データを含むと、COBは即座に消去される。これは、ライトポインタ(WP)が次のブロックに移動する前に、消去処理される各ブロック内のメモリセクタアドレスを連続して移動する場合に特に好都合である。このような場合、削除される一連の廃棄セクタ(例えば、書き換えられたユーザデータファイルの一部を含む)は、多くの場合、全て同一のブロック内にある。一連のセクタが、それらが過去に書き込みされた順序と違う順番で書き換えられると、2個以上のブロックに廃棄セクタが生じることがある。COB以外のブロックにあるセクタが旧データを含む場合、コントローラは、好ましくは、COB内の有効(非廃棄)セクタにある任意のデータを、ライトポインタ(WP)がその時点で指し示す別のブロックに再配置し、その後COBを消去する。COB以外のブロックにある前記セクタが、その後、廃棄としてマークされ、このブロックが今度はCOBになる。ライトポインタの現在位置に再配置したデータを書き込みするというよりむしろ、メモリシステムは、そうしたリロケーションデータを書き込むセクタの物理アドレスを指示するための第2のライトポインタ(以下、リロケーションポインタ(RP)と称す)を備え、リロケーションポインタ(RP)は、常にライトポインタ(WP)とは異なるセクタブロックにある。これは、ホストプロセッサによって書き込みするように直接命令された、すなわち、ライトポインタ(WP)によって書き込みされるデータ構造と、リロケーションデータとが交じり合うことを阻止するという効果をもたらす。
【0017】
通常、2つのタイプのデータのみがホストプロセッサから半導体メモリに書き込みされる。すなわち、ファイルデータとシステムデータである。再配置及び消去の回数をさらに減じるために、本発明のメモリシステムは、第3のライトポインタ(以下、システムライトポインタ(SWP)と称す)をさらに備える。これはホストプロセッサからのシステムデータを書き込みするセクタの物理アドレスを指示し、SWPは、常に、ライトポインタ(WP)とは別のブロックにある(さらに、リロケーションポインタがある場合は、これとも違うブロックにある)。好ましくは、システムデータは、システムの初期化中に識別され、かつ、必要に応じて演算中に更新される。
【0018】
ライトポインタ(WP)とシステムライトポインタ(SWP)の両方が備えられている場合、ファイルデータは、常にライトポインタ(WP)によって指示されたアドレスに書き込みされる。好ましくは、リロケーションポインタ(RP)とシステムライトポインタ(SWP)の双方がライトポインタ(WP)に類似の方法で消去処理される前記ブロックにおけるメモリセクタの物理アドレス中を移動するように制御される。従って、前記ブロックの(良好)セクタの全てがリロケーションデータまたはシステムデータで充填された場合、対応するリロケーションポインタ(RP)およびシステムライトポインタ(SWP)の一方が、消去処理されるブロックにおける全セクタの物理アドレスからコントローラによって使用されるように定義された次のアドレスに移動する。
【0019】
システムライトポインタ(SWP)が設けられている場合、好ましくは、コントローラは、1つまたは2つ以上の廃棄セクタを含む少なくとも2個のブロックが任意のときに存在することを容認する。このとき、一方は前記COBであり、他方は、1つまたは2つ以上の旧システムデータセクタを含むカレントオブソリートシステムブロック(COSB)である。COSBの消去を容認するために任意のシステムデータセクタを再配置することが必要になった場合、好ましくは、再配置されたシステムデータはシステムライトポインタ(SWP)がその時点で指示するアドレスに送られる。
【0020】
事実、任意の一時に旧データを有する2個以上のブロック(COB及びCOSB)が一時的に存在することがある。例えば、COBの消去が必要な場合(旧データがちょうど別のブロックに作り出された後)、ライトポインタ(WP)の1つはこれを指し示す。すなわち、WPは、現在COBであるブロックにまだ書き込みを行っている。このような場合、コントローラは、好ましくは、新しいCOBの作成処理を行い、一方、コントローラの定義に従って、古いCOB内にある全ての消去セクタが充填され、かつ、ライトポインタ(WP)が次に使用する消去ブロックに移動するまで古いCOB(以下、保留オブソリートブロック(POB)として扱う)の消去を保留する。このとき、POB内の任意の有効(非廃棄)データは再配置され、POBが消去される。
【0021】
ホストプロセッサからのデータ構造をメモリに書き込みすることに加えて、コントローラは、制御情報として指定されたメモリデ−タの生成および書き込みを行う。好ましくは、コントローラは、そうした制御情報をホストプロセッサから受け取ったデータ構造が書き込まれたメモリのセクタブロックとは別個のブロックに書き込む。こうした制御情報を記憶するためのブロックを以下、制御ブロック(CBs)と称する。これらの制御ブロックはコントローラによって周期的に更新され、初期化中、および時にメモリシステムの演算中にアクセスされる。
【0022】
好ましくは、SATが最後に更新された後、コントローラは、ライトポインタ(WP)によって書き込まれたデータ構造用の論理セクタアドレスのリストを一時的記憶域(これは、メモリシステムに設けられたRAM、または、コントローラのマイクロプロセッサに好適に埋め込まれたSRAMあるいはDRAM)に記憶させる。SRAMに記憶されたこのリストは、以下、WSLの論理アドレスとして言及される。これは、メモリ内の不揮発性セクタに書き込みされた順番に好適に記億される。連続して書き込みされたセクタ群にとって好都合なことに、WSLエントリーは、従って、第1セクタの論理アドレスとして、かつ、セクタ群の長さ、すなわち、セクタが書き込みされた数だけ書き込みされる。前記セクタ群の各々は、セクタの1つのブロックより広がらないように定義される。
【0023】
コントローラは、また、SATの最終更新の後、好適に、ブロックがデータ書き込み用にライトポインタ(WP)によって使用された順番を前記一時的記憶域に記憶する。これは、アドレスがWSLに保存された更新されたセクタが位置するブロックのブロックアドレス表の形式で保存される。このブロックアドレス表は、以下、書き込みブロックリスト(WBL)として言及する。メモリシステムは、WSLおよびWBLによって、前記連続して書き込みされたセクタ群の第1論理アドレスに割当てられた物理メモリ内に記憶場所の知識を有するものであるから、コントローラは、WSL及びWBLを使用して、SATの最終更新の後、前記連続して書き込みされたセクタ群における各論理セクタアドレスの各々について、常に正しい物理セクタにアクセス可能である。好ましくは、WSLは所定の大きさを有し、ひとたびWSLが一杯になると、1つまたは2つ以上のSATブロック(及び/又はASBs)が更新され、WSLとWBLとが空になる。
【0024】
好ましくは、物理セクタアドレスの開始と、最後のSAT更新後にコントローラによってデータが書き込みされたセクタを有するブロック間のリンクとが、半導体メモリの制御ブロックに記憶される。各セクタに記憶されたユーザデータ用の論理セクタアドレスを、セクタそれ自身、例えばセクタに設けられたヘッダーフィールドに記憶することにより、システムに対する任意の電力の除去および回復後、WSLおよびWBLを容易に再構成できる。これは、一杯になっていないブロックに到達するまで、半導体メモリをくまなく走査し、SATが最後に更新されてから書き込まれたセクタ内の論理アドレスを読出すことによって達成される。これは、電力の除去あるいは損失前にライトポインタ(WP)を含むブロックである。これにより、メモリシステムから予期せぬ電力除去が生じた際にも、高度なデータセキュリティが提供される。
【0025】
リロケーションポインタおよびシステムライトポインタがメモリシステム内に含まれている場合、コントローラは、移動されたデータもしくはシステムデータが書き込まれたメモリ内のセクタに対応する類似の論理セクタアドレスリストを、前記一時的記憶域に記憶することが望ましい。以下、これらのリストをそれぞれ、再配置セクタリスト(RSL)、ライトシステムセクタリスト(WSSL)と称する。また、コントローラは、RPおよびSWPによって使用され且つライトブロックリストに類似する対応するブロック順位リストを前記一時的記憶域内に記憶しても良い。以下、これら2つのリストを、再配置ブロックリスト(RBL)およびライトシステムブロックリスト(WSBL)と称する。また、物理セクタアドレスの開始と、最後のSAT更新後に移動データもしくはシステムデータが書き込まれたセクタを有するブロック間のリンクとが、半導体メモリの前記制御ブロック(CBs)の少なくとも1つに記憶されても良い。これにより、メモリを単に走査し且つ最後のSAT更新後にRPおよびSWPのそれぞれによって書き込まれたセクタ内の論理アドレスを読み込むことによって、ホストプロセッサに対する電力の除去および回復後に、RSLおよびWSSLを再構成することができる。
【0026】
前述した任意の実施例における前記各セクタは、メモリの単一の「ページ」、すなわち、メモリセクタにおける前記ブロック内の1列のメモリセルから成る。しかしながら、本発明は、そのようなセクタフォーマットのみに限定されるものではなく、時として(例えば、NOR型のRAMを使用する場合)、前記各セクタが1ページよりも少なく、あるいは、1ページより多くても良い。また、後者の場合、前記セクタの全てが必ずしも同じサイズである必要はない。例えば、本出願人の過去の国際特許出願PCT/GB99/00188号に開示されているようなデータ編成スキームをコントローラによって使用して、半導体メモリ中に存在する個々の欠陥を避けるように適切なサイズ(サブセクタサイズ)のセクタを形成することができる。
【0027】
前述したように、各セクタは個々にアドレス可能である。各セクタは、それぞれ個々にアクセス可能な複数のセクタ部を備え、コントローラが、各セクタ部に対して個々に書き込んだり、各セクタ部から個々に読み込んだりしても良い。無論、可能な最も小さいセクタ部のサイズが、アドレス可能な最小のメモリユニットである。NOR型メモリにおいて、例えば、アドレス可能な最小のメモリユニットは、一般に、1バイトである。
【0028】
好ましくは、コントローラは、均一にサイズ設定されたデータセグメント内のメモリセクタに対してデータを書き込み、また、前記メモリセクタからデータを読み込む。全てのメモリセクタが同じサイズである場合、前記各データセグメントは、前記メモリセクタのサイズと同じサイズであることが望ましい。各データセグメントは、ホストプロセッサからのデータ構造(例えば、ファイルまたはシステムデータ)や、コントローラによって形成されるデータを備えていても良い。
【0029】
半導体メモリがNAND型デバイスに基づく場合、コントローラは、不良セクタを含む不揮発性メモリ内のブロックのブロックアドレスリスト(以下、不良ブロックリスト(BBL)と称する)を、1または複数の前記制御ブロックに記憶することが望ましい。この場合、コントローラは、そのようなブロックのそれぞれを「非消去」ブロックとして処理する。これにより、そのようなブロックは、一時的記憶域内に記憶される消去ブロックのリスト内に現れず、コントローラは、データをそのブロックに書き込まない。
【0030】
メモリがAND型デバイスに基づく場合、コントローラは、任意の不良セクタのアドレスリストを、1または複数の前記制御ブロック(CBs)に記憶することが望ましい。この場合、コントローラは、少なくとも1つの不良セクタを含む任意のブロック内の良好なセクタを使用するため、また、任意の不良セクタをスキップするために、1または複数の前記ライトポインタ(WP)を制御する。無論、1または複数の不良セクタを含む1つのブロックが消去される後者の場合、そのブロック内の良好(すなわち、非欠陥)なセクタは、ブロック消去操作中に個々に消去される。
【0031】
また、コントローラは、好適に、全てのSATブロックのブロックアドレスのリストを、1または複数の前記制御ブロック内に記憶する。このリストは複数のリスト部分から成ることが望ましく、以下、各リスト部分をテーブルブロックリスト(TBL)と称する。前記各リスト部分は、論理的に連続するSATブロックおよび対応する任意のASBsから成る群のブロックアドレスを含んでいる。
【0032】
コントローラは、1または複数の前記制御ブロックを、以下にブートブロック(BB)と称する専用のメモリブロック内に記憶することが望ましい。また、データセキュリティのために必要な他の重要な情報は、ブートブロック内、例えば不良ブロック(あるいは、不良セクタ)のリスト内に記憶されても良い。好ましくは、不良セクタを全く含まないメモリセクタの第1のブロックが、ブートブロック(BB)として指定される。
【0033】
好ましくは、コントローラは、全ての良好なセクタを含むブロックを、単に、SATブロック、制御ブロック、ASBs、BBsとして使用する。
【0034】
一時的記憶域(例えば、コントローラマイクロプロセッサ内のSRAMやDRAMのような、メモリシステム内のRAM)内にキャッシュが設けられても良い。この場合、コントローラは、SATから(コントローラによって)最も新しくアクセスしたSATエントリーを含む連続するSATエントリーの群をキャッシュ内に記憶する。また、これによって、アドレス変換速度が向上する。また、アドレス変換速度の向上は、全てのASB及びこれらが関連付けられるSATブロックの物理アドレスのリストであって、SATセクタ書き込み操作が実行される度に更新されるリスト(以下、ASBリストすなわちASBLと称する)を前記一時的記憶域内に形成することによって達成されても良い。同様に、非常に高速の論理−物理セクタアドレス変換を可能にするため、制御ブロック内のTBLの部分は、前記一時的記憶域に記憶されても良い。
【0035】
半導体メモリは、単一のメモリチップの形態を成す単一のメモリアレーを備えていても良く、あるいは、複数のメモリチップの形態を成す複数のメモリアレーを備えていても良い。メモリが複数のチップから成る場合、コントローラは、好適に、複数のメモリチップ内のメモリセクタを、多数の仮想ブロックへと形作る。前記各仮想ブロックは、前記各メモリチップから消去可能な1つのメモリセクタブロックを備え、好ましくは、コントローラは、前記仮想ブロックを、消去処理されるブロックおよび消去処理されないブロックにソートする。コントローラは、好ましくは、消去処理される仮想ブロックのリストを備えるとともに、これを、コントローラのマイクロプロセッサのSRAMであっても良いメモリシステム内の一時的記憶域に記憶する。コントローラは、連続セクタ書き込み操作のそれぞれにおいて、ライトポインタ(WP)(設けられている場合には、RPおよびSWP)を1つのチップから他のチップへと移動するように制御することが望ましい。この場合、ライトポインタは、仮想ブロックの消去可能な1つのブロック内の1つのセクタから移動し始め、1つのセクタが仮想ブロックの消去可能な各ブロック内に書き込まれるまで、仮想ブロックの消去可能な他の各ブロック内の1つのセクタへと連続的に移動するとともに、その後、最初のセクタが書き込まれたチップへと戻り、同様の方法で進んで、仮想ブロックの消去可能な各ブロック内の他の1つのセクタを一杯にする。その後も同様に移動し、結果的に、仮想ブロックをデータで一杯にする。その後、ライトポインタ(WP)は、消去処理される前記仮想ブロックリスト内の次の仮想ブロックへと移動して、この次の仮想ブロックを同様の方法によって一杯にする。コントローラは、それ自身が実行するn回の連続セクタ書き込み操作(この場合、nは、メモリシステム内の半導体メモリチップの数以下)の度に、n個の各チップ内の1つのセクタに対して略同時に書き込むことができるように構成されていることが望ましい。好ましくは、コントローラは、仮想ブロック内の消去可能な全てのブロックを同時に消去することによって、任意の仮想ブロックの消去を実行する。
【0036】
言うまでもなく、メモリシステムのコントローラは、コントローラデバイスとして回路内に実質的に実装されていても良いが、少なくとも部分的には、コントローラデバイスのメモリ内に保持されるファームウエアとして具現化されることが望ましい。コントローラは、半導体メモリとして、同じチップ(あるいは、同じ複数のチップのうちの1つ)上に一体形成されていても良い。
【0037】
本発明の第2の態様によれば、複数の半導体メモリチップを備え、各チップは、個々にアドレス可能で且つセクタの消去可能なブロック内に配置される複数の不揮発性メモリセクタを有し、前記各セクタは、メモリ内におけるその物理的な位置を規定する物理アドレスを有する半導体メモリと;
データ構造をメモリに書き込み、また、データ構造をメモリから読み込むためのコントローラと;
を具備するホストプロセッサに接続するためのメモリシステムであって、
前記コントローラは消去可能なブロックを仮想ブロックへと形作り、前記各仮想ブロックは各メモリチップから消去可能なブロックを備え、コントローラは、仮想ブロックを、消去処理されるブロックと消去処理されないブロックとにソートし、コントローラは、満たすべき次の仮想ブロックへと移動する前に、1つの仮想ブロックをデータで満たし、各仮想ブロックは、仮想ブロックの消去可能な各ブロック内の1つのメモリセクタにコントローラが次々と書き込む繰り返しシーケンス(循環シーケンス)により、そのメモリセクタに書き込むことによって満たされ、これにより、異なるチップにセクタが連続的に書き込まれるよう構成されたメモリシステムが提供される。
【0038】
好ましくは、コントローラは、ホストプロセッサから得られる複数のセクタ書き込みコマンドによって実行するn回の連続セクタ書き込み操作(この場合、nは、メモリシステム内の半導体メモリチップの数以下)の度に、n個の各チップ内の1つのセクタに対して略同時に書き込むことができるように構成されている。
【0039】
本発明の第3の態様によれば、個々にアドレス可能で且つセクタの消去可能なブロック内に配置される不揮発性メモリセクタを有する半導体メモリに対してデータ構造を書き込むとともに、前記半導体メモリからデータ構造を読み込み、メモリ内におけるその物理的位置を規定する物理アドレスを前記各セクタが有するコントローラが提供される。このコントローラは、
コントローラが使用されるメモリシステムのホストプロセッサから受け取った論理アドレスを、メモリ内の前記メモリセクタの物理アドレスに変換するとともに、セクタのブロックを、消去処理されるブロックと消去処理されないブロックとにソートするための手段と;
書き込まれるセクタの物理アドレスをホストプロセッサから指し示すライトポインタ(WP)とを有し、前記ライトポインタ(WP)は、コントローラによって制御されて、消去処理される任意のブロック内のメモリセクタの物理アドレスを介して所定の順序で移動し、ブロックが一杯になると、他の消去ブロックへと移動し、
セクタ書き込みコマンドがホストプロセッサからコントローラによって受けられると、コントローラは、前記ライトポインタ(WP)が指し示す物理アドレスを論理アドレスに割当てることによって、ホストプロセッサから受け取った論理アドレスを、データが書き込まれる物理アドレスに変換し、また、そのためにコントローラによって割当てられている各物理アドレスとともに論理アドレスのテーブルをコンパイルするとともに、ホストプロセッサからのデータがメモリセクタに書き込みされる頻度より少ない頻度でSATを更新するようにコントローラが構成されている。
【0040】
本発明の第4の態様によれば、個々にアドレス可能で且つセクタの消去可能なブロック内に配置される不揮発性メモリセクタを有する半導体メモリに対してデータ構造を書き込むとともに、前記半導体メモリからデータ構造を読み込み、メモリ内におけるその物理的位置を規定する物理アドレスを前記各セクタが有する方法が提供される。この方法は、
セクタのブロックを、消去処理されるブロックと消去処理されないブロックとにソートし;
書き込まれるセクタの物理アドレスをホストプロセッサから指し示すライトポインタ(WP)を提供し;
少なくとも1つの前記ライトポインタ(WP)を制御して、消去処理される任意のブロック内のメモリセクタの物理アドレスを介して所定の順序でライトポインタを移動するとともに、ブロックが一杯になると、他の消去ブロックへとライトポインタを移動させ;
セクタ書き込みコマンドがホストプロセッサからコントローラによって受けられると、前記ライトポインタ(WP)が指し示す物理アドレスを論理アドレスに割当てることによって、ホストプロセッサから受け取った論理アドレスを、データが書き込まれる物理アドレスに変換し;
変換のためにコントローラによって割当てられている各物理アドレスとともに、論理アドレスのテーブルを、不揮発性半導体メモリ内に記憶し;
ホストプロセッサからのデータがメモリセクタに書き込みされる頻度より少ない頻度でSATを更新する。
【0041】
以下、添付図面を参照しながら、本発明の好ましい実施例を単なる一例として説明する。
【0042】
図1は、NAND型メモリセルを基本とするフラッシュメモリアレーの1ブロック4における物理的なページ構造を概略的に示している。図1は、ブロック4内の3つのページ1,2,3を示している。物理的な観点からすれば、ページ1は、メモリブロック内の1列のメモリセルから成る。メモリは、複数のブロックに分割されており、各ブロックは、メモリセルの多数の列(すなわち、多数のページ)から成る。各ページ1,2,3は、後述する528バイトのフラッシュメモリシステムにおいて、物理的なメモリ空間の1セクタとして扱われる。メモリ内の各ページ1は、個々にアドレス可能(読み込み/書き込み、および、オペレーションの削除)であり、また、これらのページはブロック内で消去することができる。以下、そのようなメモリアレーを組み込むメモリシステムについて説明する。また、AND型もしくはNOR型のフラッシュメモリに基づくメモリシステムについても、別途、後述することにする。
【0043】
図2は、フラッシュメモリチップ5およびコントローラチップ8を組み込んだメモリシステム10を示している。フラッシュメモリチップ5は、フラッシュメモリアレー6と、コントローラチップ8のコントローラバッファ9に接続されたリード/ライトバッファ7とを備えている。また、コントローラチップ8は、コントローラマイクロプロセッサ11と、エラー修正コード(ECC)ジェネレータチェッカ12とを有している。コントローラバッファ9はホストコンピュータプロセッサ(図示せず)に接続しており、ホストコンピュータプロセッサは、コントローラチップ8の出力部O/Pを介して、メモリシステム10に接続されている。コントローラチップ8(以下、コントローラと称する)は、メモリアレー6に対するデータ構造の読み込み及び書き込みを制御する。メモリシステム10に接続されたホストプロセッサ2は、読み込み及び書き込みコマンドを、コントローラ8に送る。データは、512バイト部分すなわち「ホストデータセクタ」の状態で、ホストによりアクセス可能であり、各ホストデータセクタは論理セクタアドレス(LA)を有している。コントローラ8は、ホストプロセッサからLAを受けて、これを後述するように物理アドレスに変換する。この場合(NAND型メモリの場合)、各物理アドレス(PA)は、アレー6内のフラッシュメモリのページ1の物理的な位置を規定する。各LAは、1つの24ビット領域の形態を成している。LAを使用してPAを入手することは、アドレス変換と称されており、一般に、リード/ライドのアクセスを行なう度に必要となる最も頻繁な演算である。コントローラ8は、データセグメントの状態でデータをメモリアレー6に書き込む。各セグメントは528バイトの大きさを有している。ホスト(例えば、ユーザファイルまたはシステムデータ)から受け取った512バイトの各データのため、コントローラは、マイクロプロセッサ11によって形成された4バイトのヘッダーと、ECCジェネレータチェッカ12によって形成された12バイトのECCとから成る16バイトのデータを形成する。コントローラは、フラッシュバッファ7を介して、この16バイトのデータを、メモリアレー6の1ページに書き込まれる528バイトのデータセグメントへと編成する。
【0044】
ホストデータセクタの論理アドレス(LA)は、4バイトのヘッダーの状態で、ホストデータセクタが書き込まれるフラッシュセクタ1内に記憶される。読み込み操作時、フラッシュメモリアレーの関連するセクタ内に記憶されたデータは、フラッシュリード/ライトバッファ7を介して、アレー6からコントローラバッファ9へと読み込まれる(同時に、データ内のエラーをチェックするために、ECCジェネレータチェッカへと読み込まれる)。そして、コントローラは、記憶されたLAがホストコンピュータによって要求されているLAと一致していることをチェックするため、ホストコンピュータによるコントローラバッファ9からのデータの読み込みを許容する前に、4バイトのヘッダーを読み込む。
【0045】
コントローラ8は、個々のセクタベーシス上でメモリ6に書き込まれるデータの物理的な場所を管理する。更に詳細に後述するように、コントローラは、消去されたブロックのビットマップをメモリ6内に記憶するとともに、消去されたブロックが書き込みのために使用されるブロックの物理アドレスの昇順で順序付けられた少なくとも幾つかの消去されたブロックのリスト(ネクストイレーズドブロック(Next Erased Block(NEB))リスト)を、マイクロプロセッサ11内のSRAM内にコンパイルする。ホストデータセクタが書き込まれる物理的なページの場所は、ホストから受ける論理アドレスに依存しない。各ホストデータセクタは、サイクリックライトポインタによって規定されるアドレスに書き込まれる。異なるタイプの書き込み操作のため、特定のライトポインタが使用される。すなわち、ホストファイルデータの書き込みは、データライトポインタ(WP)によって指し示されたアドレスで実行され、ホストシステムデータの書き込みは、システムライトポインタ(SWP)によって指し示されたアドレスで実行される。リロケーションポインタ(RP)は、ホストによって直接に順序付けられなかったセクタを書き込むために使用される。これらの各ライトポインタは同じ性質を有している。すなわち、各ポインタは、ブロックの複数のページにわたって連続的に移動し、その後、ネクストイレーズドブロック(NEB)リスト内の次に消去されたブロックの第1のページへと移動する。消去されないファイルを含むブロックは、「非消去」ブロックとして処理され、ポインタが1つのブロックから他のブロックへと移動する際に読み飛ばされる(そして、NEB内に含められることはない)。
【0046】
セクタリロケーションアルゴリズム
セクタのブロック4を消去して、旧データを含むセクタ空間を回復させる場合には、ブロックを消去できるように、有効セクタと廃棄セクタとの組み合わせを含むブロックからセクタを再配置しなければならない。原理的には、コントローラ8により、特定のライトポインタに対応する1つのブロックだけが、旧データセクタを常時収容することができる。ホストによって書き込まれるセクタが第2のブロック内で廃棄セクタを形成する場合には、有効セクタを再配置した後、必要に応じて、既存のブロックをまず最初に消去しなければならない。
【0047】
したがって、大部分のブロックが有効セクタと廃棄セクタとを有している場合には、多数のセクタの消去および広範囲にわたるセクタの再配置は避けられない。これは、ファイルの一部としてホストにより書き込まれたセクタの順序が、以前にセクタが書き込まれた順序と異なる場合にだけ、生じる。これは、殆どのアプリケーションにおいて、通常のケースではない。しかしながら、通常のファイルの書き込み操作の場合であっても、関連しないデータを、ファイルの「先端(head)」や「末端(tail)」を含むブロックからリロケーションしなければならない。他のファイルデータと混合されたシステムデータの再配置によって他のブロックの消去が別途に引き起こされ、これによって、このブロックからの更なる再配置が引き起こされるといった可能性が高い。
【0048】
したがって、再配置および消去の総数を減少するために、システムデータは、厳密に識別され、常に、システムライトポインタ(SWP)のアドレスに書き込まれ或いはリロケーションされる。システムデータに関する情報は、初期化プロセス中に得られ、マイクロプロセッサのSRAM13内に記憶される。無論、データファイルは、ホストコンピュータプロセッサ内のファイルシステムによって、フラッシュメモリに書き込まれる。ファイルデータは、ファイルシステムによって、複数のクラスタに分割される。この場合、各クラスタは、(一般には)512バイトの連続ホストデータセクタの群である。ファイルシステムは、メモリに記憶されたファイルの属性および各ファイルを形成するクラスタの場所に関するテーブルおよびデータ構造を維持する。これらのテーブルおよび構造は、フラッシュメモリ内に(システムデータとして)記憶されるとともに、ファイルデータが書き込まれる場合にはいつでも、ファイルシステムによって更新される。ファイルデータは、メモリに記憶される際、ファイルに関連するシステムデータ(ディレクトリおよびFAT(file allocation table)に関する)を伴う。一般に、メモリに書き込まれるシステムデータは、BIOSパラメータコンフィギュレーション情報、各エントリーが特定のクラスタに関連するファイルアロケーションテーブル(FAT)の1つ又は2つのコピー、ルートディレクトリ、サブディレクトリを含んでいる。コントローラは、ホストシステムデータセクタを書き込むための操作を認識するように構成されており、これにより、このホストデータセクタを、ファイルデータのホストデータセクタと異なるように取り扱うことができる。システムセクタの書き込みを認識するため、以下のように、多数の方法を単独で或いは組み合せて使用しても良い。
1.システムデータは、単一のセクタ書き込みコマンドを用いて書き込まれる。一方、ファイルデータは、複数のセクタ書き込みコマンドを用いて書き込まれても良い。
2.ファイルシステムルートディレクトリ内で最後のセクタアドレスよりも下位にあるLAを有する全てのセクタが、システムセクタである。このアドレスは、ホストファイルシステムによってメモリ内に記憶されたBIOSパラメータブロック内に保持された情報から決定することができる。
3.サブディレクトリ内の全てのセクタがシステムセクタである。サブディレクトリアドレスおよびサイズは、全てのルートディレクトリおよびサブディレクトリのエントリーを読み込むことによって認識することができる。
4.システムセクタは、しばしば、それらが再度書き込まれる直前に、ファイルシステムによって読み込まれる。
【0049】
同じ目的のため、再配置されるファイルデータセクタは、リロケーションポインタ(RP)によって規定されるアドレスに書き込まれ、したがって、ホストによって書き込まれたセクタと混合されない。
【0050】
本発明の変形例においては、再配置されたシステムデータが書き込まれる場所を指し示すために、別のライトポインタを準備しても良い。この別個のポインタは、システムリロケーションポインタ(SRP)と称され、常に、WPおよびSPと異なるブロック内に配置される
【0051】
ブロック消去アルゴリズム
本発明において、消去されるブロックの任意選択や、バックグラウンド消去のスケジューリングは、全く実行されない。第2のブロック内の廃棄セクタが、保留のホストセクタ書き込みコマンドによって生じる場合には、通常、廃棄セクタを含むブロックのリスト消去が即座に実行される。同様に、制御ブロックの書き換えの結果として、ブロックが廃棄制御データを全体として含む場合には、ブロックは即座に消去される(詳しく後述するが、制御ブロックは、コントローラ8が特定の制御データを書き込む場所である)。
【0052】
したがって、通常、再配置によって旧データを形成することはできないため、旧データを有する存在可能なブロックは、たった2つにすぎない。すなわち、データライトポインタ(WP)に対応し且つ廃棄ファイルデータを含むカレントオブソリートブロック(Current Obsolete Block(COB))、および、システムライトポインタ(SWP)に対応し且つ廃棄システムデータを含むカレントオブソリートシステムブロック(Current Obsolete System Block(COSB))だけである。しかしながら、各タイプのもう1つの廃棄ブロックが一時的に存在する場合がある。これは、消去されるブロック(旧データが他のブロック内に形成された)がその時点で任意のタイプのライトポインタを含んでいる場合に生じる。この場合、そのようなブロック(保留オブソリートブロック(Pending Obsolete Block(POB))と呼ばれる)の消去は、このブロック内の全ての消去ページが使用され且つ関連するライトポインタが他のブロックへ移動されるまで、延期されなければならない。この時点で、保留の廃棄ブロックが即座に消去される。
【0053】
前述したように、消去されたブロックの同一性は、全てのフラッシュブロックアドレス空間を測るビットマップ(MAP)内で維持され、このMAP内に、各ブロックの消去状態が記録される。セクタもしくは制御データをブロックアドレスの順序で連続的に書き込むために、消去されたブロックは破壊される。バックグランド消去は実行されない。1または複数の不良セクタを含む任意のブロックは、不良ブロックとして処理されるとともに、コントローラによって「非消去」ブロックとして処理される。
【0054】
ウェアレベリング( Wear Levelling )
サイクリックライトポインタを使用して単一のセクタ書き込み管理を行なうと、フラッシュメモリ内に固有のウエアレベリングが生じる。しかしながら、ブロックを消去するアルゴリズムは、旧データもしくは消去済みデータとともに存在すると直ちに、セクタ書き込み操作のシーケンスの機能であるウエアレベリング特性を形成する。任意の更なるウエアレベリングが必要であると思われる場合には、ランダムブロック内でセクタを一時的に再配置してこれらのブロックを消去できるようにする別個の更なる技術を組み込んでも良い。
【0055】
アドレス変換原理
主なアドレス変換手段は、基本的に、論理アドレスによって順序付けられたセクタの物理アドレスのリストであるセクタアドレステーブル(SAT)である。したがって、N番目のSATエントリーは、通常、論理アドレスNを有するセクタのための物理アドレスを含んでいる。SATは、多数の独立ブロック(SATブロック)として編成されるとともに、SATブロックの個々のページを書き換えることによって更新される。SATブロックは、これとリンクされてSATブロックの個々のページの修正ができる専用の追加SATブロック(ASB)を有していても良い。セクタ書き込み性能に対する影響を最小限にするために、SATページは、各セクタ書き込み後に書き換えられない。無論、頻繁には書き換えられない。
【0056】
したがって、SATは、最後に更新されてから、書き込まれたセクタに関する正確な物理アドレスを含んでいない。そのようなセクタの論理アドレスは、ライトセクタリスト(WSL)、再配置セクタリスト(RSL)、ライトシステムセクタリスト(WSSL)と呼ばれるリストの状態で、プロセッサによって、そのSRAM13内に記憶される。これらのリストは、ホストによって書き込まれた或は消去前にブロックから再配置されたセクタの順序と正確に一致している。連続的にセクタが書き込まれる場合、WSLおよびRSLエントリーは、第1のセクタ論理アドレスおよびセクタ群長さを規定する。セクタ群は、1つのブロックから他のブロックへとジャンプすることができない。マイクロプロセッサ11は、フラッシュメモリ内のセクタ系列の始点と、セクタ書き込みのためのブロックが使用される順番とに関する情報(前述したリストに対して相補的で且つプロセッサのSRAM内に形成される特定のリスト、すなわち、ライトブロックリスト(WBL)、ライトシステムブロックリスト(WSBL)、再配置ブロックリスト(RBL)は、後述するが、この情報を記憶するために使用される)を有している。
【0057】
WSL、RSLおよびWSSL(そして、これらに相補的なリスト、すなわち、WBL、WSBL、RBL)は、最後のSATが書き換えられた後に書き込まれた系列内のセクタのヘッダー内で論理アドレスを読み込むことによってメモリシステム10に対して電力を除去および回復した後、マイクロプロセッサ11によって再構成され得る。系列および系列内のセクタを含むブロック間のリンクにおける開始セクタアドレスは、マイクロプロセッサにより、フラッシュメモリ内の制御ブロック(CB)と呼ばれる特定のデータ構造内のエントリーから得られる(制御ブロック(CB)については後述する)。この方法によれば、カードから予期しない電力の除去が生じた際には、データの高い安全性を確保できる。
【0058】
無論、前述したように、システムリロケーションポインタ(SRP)が含まれている場合には、システムリロケーションセクタリスト(SRSL)および相補的なシステムリロケーションブロックリスト(SRBL)が形成され、これらは、WSL、RSL、WSSL、および、WBL、RBL、WSBLのそれぞれに関し、前述したと同様の方法で使用される。
【0059】
コントローラ8によってデータが書き込まれるフラッシュメモリセクタ(すなわち、ページ)1内の本実施例に係るデータ構成が図3に示されている。セクタ1は、まず、例えばホストデータセクタから成る512バイトの情報部分1aを含んでおり、それに続いて、4バイトのヘッダー部分1bおよび12バイトのECC1cを順に含んでいる。図4に示されるように、ヘッダー部分は、それ自身、データ構造タイプ部分20と、ヘッダーパラメータ22(例えば、情報部分1a内に書き込まれたホストデータセクタの論理セクタアドレス(LA)から成る)とを備えている。データ構造タイプは、データセクタ、削除データセクタ、セクタアドレステーブル(SAT)ページ、追加SATブロック(ASB)ページ、制御ブロック(CB)ページ、ブートブロック(BB)ページのいずれか1つを示す値を有することができる。
【0060】
削除データセクタ
削除データセクタは、物理的には、フラッシュメモリ内で、廃棄もしくは削除セクタデータすなわちCOBもしくはCOSBを含むことが許容されるブロックにだけ一時的に存在する。それは、ヘッダー内のデータ構造タイプ領域の「オールゼロ」状態、あるいは、適当な場合には他の手段、によって認識される。
【0061】
セクタアドレステーブル(SAT)
SATは、論理セクタの物理アドレスを含む一連のエントリーである。エントリーNは、論理セクタNのための物理アドレスを含んでいる。ページ内のエントリーは、ページ内に記憶されたデータの512バイトの情報部分1aを占めている。1つの操作でSATページが書き込まれるため、全ページを保護するためにEEC領域を使用でき、SATページ内の各エントリーのための別個のECC領域が不要となる。
【0062】
実際に、SATは一連のブロックとして記憶され、各ブロックは最大で64のSATページを有している。別個のデータ構造およびテーブルブロックリスト(TBL)は、全てのSATブロックのブロックアドレスを規定するため、制御ブロック(後述する)内に保持されている。各SATエントリーは、セクタの物理アドレスを規定するとともに、3バイトを占めており、図5に示されるように、
チップ数 5ビット、32個のチップのアドレスが可能。
ブロック数 13ビット、1チップにつき8192個のブロックを設定できる。
セクタ数 6ビット、1ブロックにつき最大64個のセクタを与える
を備えている。
SATページデータ構造上のヘッダーパラメータ領域は、SATブロックおよびページ数を含んでいる。
【0063】
8MBおよび8VBの容量のブロックを有するフラッシュカードは約16Kのセクタを記憶することができ、したがって、そのSATは約16Kのエントリーを有している。SAT内の512バイトのページは170個のエントリーを有しており、したがって、SATは6ブロックに相当する約96ページを占める。大きなフラッシュメモリカード(2GB、8VBブロック)は1543個のブロックを占める。
【0064】
追加SATブロック(ASB)
追加SATブロック(ASB)は、特定のSATブロックにリンクされてSATブロックの1ページを修正する(すなわち、書き換える)ことができる専用のブロックである。幾つかのASBを設けることもできる。各ASBは、それがリンクされるSATブロックに対する拡張子として作用する。SATブロックが修正される場合、一般に、SATブロックは、僅かな数のページ内にだけ修正データを含んでいる。ASBによって、これらの修正ページだけを書き換えることができる。これは、全ページの書き込み、および、SATブロックを書き換えるために必要な廃棄ブロックの消去よりも極めて速い操作である。ASBページのヘッダーパラメータ部分は、それがリンクされるSATブロックとSATページ数とを、それが取って代わるブロック内に含んでいる。ASBページ内に記憶されたデータの情報部分1aのフォーマットは、SATページのそれと同じである。
【0065】
制御ブロック(CBs)
コントローラ8は、1または複数の制御ブロック(CBs)内に、幾つかの制御アドレス情報を記憶する。CBsは、コントローラ8によって周期的に更新されるとともに、メモリシステム10の初期化中、あるいは、操作中において時々、アクセスされなければならない。情報は、独立に書き込むことができる所定サイズのエントリーの形態で、CBs内に記憶される。各CB内にはページ毎に9個のエントリーが存在する。エントリーは、エントリーそれ自身内のCBヘッダー領域によって認識されるデータタイプの以下のリストのうちの1つに関連している。
・テーブルブロックリスト(TBL)
・ファイルデータ書き込み操作に対応する、エントリー内に幾らかの領域を有するブロックのマップ(WMAP)
・システムデータ書き込み操作に対応するブロックのマップ(SMAP)
・再配置セクタ操作に対応するブロックのマップ(RMAP)
新しいデータをCBに加えなければならない場合には、適当なタイプの別個のエントリーが、最後の有効なエントリーに続くように即座に加えられる。大きなカードにおいては、CBが1ブロック以上を占めていても良い。全てのCBブロックのアドレスは、フラッシュメモリ6内のブートブロック(BB)に記憶される。
【0066】
データのセキュリティーのため、CB(及びBBも)の各ブロックの第1ページ(ヘッダーページと呼ばれる)は、エントリーを含んでおらず、図3のような全ページフォーマットを有している。このページのヘッダー16のヘッダーパラメータ領域は、CBを認識するサインと、そのブロック数(制御ブロックのセット内でのブロックの連続番号)とから成る。
【0067】
第1のCBブロックのヘッダーページの情報領域は、ブロックリンク情報データによって占められる。CB書き換え操作に続いてシステムを初期化しなければならない場合、ブロックリンク情報データは、WBL、WSBL、RBLをリストアするために必要な全ての情報を提供する。ブロックリンク情報データは、最後のSATページ書き込み操作が実行された後に書き込まれた全てのMAP(WMAPs、SMAPs、RMAPs)から収集されたリンク領域を備えており、その書き換え操作中に、新しいCBの第1ブロックのヘッダーページに書き込まれなければならない。ブロックリンク情報は、4バイトのエントリーのタイミング順リストであり、各エントリーは、ライトプリンタのうちの1つによってアクセスされるブロックのブロックアドレスと、それがどのポインタであったかを認識するフラグとを含んでいる。メモリ空間内の多数のブロックがCBのために与えられ、これが一杯になると、アクティブエントリーは、NEB(すなわち、それは、コンパクトであり、対応するヘッダーページが加えられる)から、次の利用可能な消去ブロックへと書き換えられる。CBページの情報領域は、長さが等しい9個のエントリーを有している。CBページのEEC領域は、使用されないが、他の目的のために使用されても良い。
【0068】
1つのCB内の1つのエントリーは、56バイトの大きさであり、図6に示されるフォーマットを有しているとともに、エントリーのデータタイプを認識するヘッダー24と、情報領域26と、ECC領域28とを備えている。ECCは、全ページのために使用される場合と同様の形態を成している。
【0069】
テーブルブロックリスト(TBL)
CBは、テーブルブロックリスト(TBL)を含んでいる。TBLは、SATの連続するブロックおよび任意の対応するASBからなるブロック群のアドレスを有している。通常、複数のTBLは、必要な全てのSATブロックアドレスを規定するために要求される。関連するTBLは、修正されたSATもしくはASBのブロック位置を記録するため、SATブロック書き込み操作もしくは新たなASBの割り当ての後、直ちに、書き込まれる。また、TBLは、SATページ書き込み操作が実行される際にその時点でのライトポインタの位置を記録するために使用される領域を有している。したがって、TBLは、SATページ書き込み操作が実行される場合には常に書き込まれる。TBLの1つのエントリーが図7に示されている。このエントリーは、CBエントリーの情報領域26を占めている。1バイトの第1のTBLエントリーは、TBLエントリーの連続番号Noである。各TBLエントリーは、8個のSAT−ASBブロック対の値を維持している。すなわち、各TBLエントリーは、SATブロックN〜N+7のための値を維持している。この場合、NはNo*8である。
【0070】
WPはライトポインタページ領域であり、RPはリロケーションポインタ領域であり、SWPはシステムライトポインタ領域である。これらの領域は、WSL、RSL、SSLリリース操作後、ブロック内でのWP、RP、SWPの位置を決定する。WP、RP、SWPは、WSL、RSL、SSLリリース操作が終了した時(すなわち、最後のSAT書き込み操作)だけ有効である。この状態は、エントリーヘッダー内のフラグビットを用いて設定される。フラグ=1は、エントリーがWSLまたはRSLのリリース中に書き込まれた最後の1つであり、したがって、WP領域が有効であることを意味している。
【0071】
保留されている3バイトは、将来の追加の可能性のために残されている。
SAT−ASB対は、保留(Reserved)領域の後に設けられており、8個のエントリーの列である。各エントリーは、SATブロックアドレスとASBブロックアドレスから成る。
SATNはN番目のSATブロックの数であり、ASBNはSATNにリンクされるASBの数である。SATもしくはASBが存在しない場合には、この領域の値は0に等しい。
SATブロックが再配置される度に、あるいは、新たなASBがSATブロックにリンクされる度に、新たなTBLエントリーがCBに加えられなければならない。
【0072】
MAP(WMAP、SMAP、RMAP)
CBは、様々なMAPエントリーを含んでいる。3つの異なるタイプのMAPエントリーがある。各マップエントリは、異なるタイプの書き込み操作に対応している。すなわち、WMAPは、ファイルデータの書き込み或は削除操作に対応しており、SMAPは、システムデータの書き込み操作に対応しており、RMAPは、セクタ再配置操作に対応している。
【0073】
全てのMAPエントリーの情報領域は、同じフォーマットを有している。情報領域は、連続ブロック群の消去状態を規定するビットマップを含んでいる。256個のブロックの消去状態は、MAP内の32バイト領域内の256ビットによって規定される。情報領域は、それが関連するブロック群を認識するレンジ(Range)領域を有している。他の領域は、ブロック間でライトポインタが移動する際の行き先ブロックを規定する。また、MAPは、旧データを含むフラッシュメモリ内のブロックの場所を認識する複数の領域を有している。すなわち、ObsCは、COB(またはCOSB)のために使用され、ObsPは、保留の廃棄ブロックのために使用される。廃棄ブロックが存在しない場合には、対応する領域が0に設定される。EB領域は、現在の書き込み或は削除セクタ操作によって消去が引き起こされる1つのブロックの1つのアドレスを含んでいる。そのようなブロックが存在しない場合には、EB領域が0に設定される。このMAPエントリーフォーマットが図8に示されている。
【0074】
ライトポインタのうちの1つが1つのブロックから他のブロックへと移動される場合には、消去ブロックの使用を示すために(ビットマップ領域が更新される)、また、ブロック間のリンクを記録するために(リンク領域が更新される)、対応するMAPエントリーが加えられなければならない。書き込み(あるいは、削除セクタ)操作によって新しいブロック内に廃棄(または削除)データが形成される場合には、新しい廃棄ブロックの位置を記録するために(ObsCやObsPが更新される)、また、ブロックが消去されるべきであることを示すために(EB領域が更新される)、また、新たな消去ブロックが出現することを示すために(ビットマップ領域が更新される)、対応するMAPも加えられなければならない。したがって、通常、MAPの少なくとも2つの領域が同時に書き込まれ、これは、単一のページ書き込み操作で達成されても良い。
【0075】
ブートブロック(BB)
ブートブロックの機能は、カードからの予期しない電力の除去時にデータの高いセキュリティーを提供すると同時に、初期化プロセス中における広範囲な走査を避けることである。大きなカードにおいて、BBは1つ以上のブロックを有している。BBは、カード内で、第1の非欠陥ブロックを占めている。データセキュリティのため、カード内には、次の非欠陥ブロックを占めるBBのコピーが存在する。BB及びそのコピーは、書き換え後、同じ場所に置かれなければならない。
【0076】
BBは、制御ブロックと同じ構造を有しており、以下のタイプのエントリーを含んでいる。
・サイン
・インターリービングイネーブル
・不良ブロックリスト
・制御ブロックポインタテーブル(CBPT)
新しいデータをBBに加える必要がある場合には、最後の有効エントリーの後に直ぐ続くように、適当なタイプの別個のエントリーが加えられる。サインとBBLエントリーは、前述したものと全く同じフォーマットを有している(無論、サインエントリーのサイン領域は、異なっており、固有のものである)。制御ブロックポインタテーブルエントリーは、CBの全てのブロックに対するポインタを有しており、CBが書き換えられた直後に更新される。
【0077】
予備リンク(PL)
また、CBは、予備リンク(PL)を有している。予備リンクの目的は、CB書き換え操作後にシステムを初期化する必要がある場合に、WBL(後述する)をリストアするために必要な全ての情報を提供することである。予備リンクは、最後のSATページ書き込み操作が実行された後に書き込まれた全てのMAPから収集されたリンクファイルを備えている。PLは、その書き換え操作中、新たなCBに対してだけ書き込まれる。
【0078】
コントローラのSRAM内に記憶されたデータ構造
ライトセクタリスト(WSL)(すなわち、ホイッスル)を含むマイクロプロセッサのSRAM13内には、様々なデータ構造が記憶されている。ライトセクタリストは、最後のSAT書き込み後に書き込まれたセクタの論理アドレスを記録する。その目的は、そのようなセクタのために、論理アドレスから物理アドレスへの正確な変換を与えることである。WSLは、4バイトの長さの128個のエントリーのための容量を有している。この場合、各エントリーは、連続的に書き込まれるセクタ群内の第1のセクタの論理アドレスと、セクタ群の長さとを記憶する。セクタ群は、1つのブロックから他のブロックへとジャンプすることができない。WSLは、SAT書き込み直後に空になる。
【0079】
WSL内の論理セクタアドレスの順序は、それらが書き込まれる順序と正確に一致する。したがって、フラッシュメモリ内のWSLの不揮発性コピーは、SATが最後に書き込まれた時にライトポインタ(WP)によって規定される場所で始まる連続的な場所で書き込まれる実際のセクタのヘッダーによって自動的に提供される。したがって、WSLのコピーをフラッシュメモリ6に明確に形作る必要はない。必要に応じて、これらのセクタは、次のMAPエントリーからのリンク領域の他、SATが最後に書き込まれた時のライトポインタ(WP)の位置を含む制御ブロック領域内に規定される開始アドレスから走査することができる。
【0080】
任意の論理セクタのための最後のエントリーだけが有効であるため、WSLの検索は、逆の順序で実行される。セクタの再配置およびブロックの消去が行なわれた場合があるため、先の複製エントリーは、フラッシュメモリ内に置かれた任意の対応する廃棄セクタを有していなくても良い。好ましい場合には、WSLから複製エントリーを単に除去するようにコントローラが構成される。
【0081】
また、2つの類似するリスト、すなわち、再配置セクタリスト(RSL)およびシステムセクタリスト(SSL)は、最後のSAT書き込み後に書き込まれるシステムデータセクタ(RPおよびSWPのそれぞれによって指し示されたアドレスに書き込まれる)および再配置されたセクタの論理アドレスを記録するマイクロプロセッサのSRAM13内でコンパイルされる。
【0082】
WSL、RLS、SSLがそれぞれ一杯になる度に、ASB及び/またはSATブロックは、WSL、RSL、SSLエントリーによって補われる。このような手続きは、WSL、RSL、SSLリリースと呼ばれる。このリリースは、必要に応じて、ASBリリースを引き起こす。ASBリリースは、ASBが一杯になった時に生じる。ASBが一杯になると、各SATブロックが書き換えられ、ASBが消去される。全てのASB内に書き込まれたページに関する情報は、ASB走査を頻繁に行なわないで済むように、RAM内に記憶される必要がある。そのため、ASBリスト(ASBL)は、SRAM13内に記憶される。
【0083】
ASBLは、SATブロックと現時点でリンクされている全てのASBブロックのリストであり、ASBL内には各ASB毎に1つのエントリーが存在する。図9は、ASBL内の1つのエントリーのフォーマットを示している。この場合、LWP=このASBブロック内に最後に書き込まれたページの数であり、
NVP=ASB内の有効ページ数−1である。
ASBページ0...ASBページn=1つの列、指数はASBページ数、値は対応するSATページ数である。N=1ブロック当たりのページ。
【0084】
ライトブロックリスト(WBL)
ライトブロックリストは、ライトセクタリストを補って、マイクロプロセッサのSRAM13内に形成され、WSL内のセクタが配置されるブロックを規定する。WBLは、WSLリリース直後に空になる。
【0085】
WSLおよびWBLが、メモリシステムの初期化中に、走査プロセスによって再構成される。このようにして構成されるSRAM内のリストは、電力が最後に除去される前に存在したリストと正確に一致する。
【0086】
また、再配置ブロックリスト(RBL)およびシステムブロックリスト(SBL)と称されるWBLに類似する2つのリストは、コンパイルされて、SRAM13内に記憶される。これらのリストは、RSLおよびSSLをそれぞれ補う。RBLおよびSBLは、RSLおよびSSL内のセクタがそれぞれ物理的に配置されるブロックを規定するとともに、WBLと類似するフォーマットから成る。また、RSL、RBL,SSL、SBLは、メモリシステムの初期化中に、走査プロセスによって再構成することができる。
【0087】
カレントオブソリートブロック(COB)
ライトポインタ(WP)によって書き込まれる廃棄もしくは削除セクタデータを含むブロックは、たった1つだけその存在が許される。これは、カレントオブソリートブロック(COB)と称される。廃棄もしくは削除セクタデータが他のブロック内で形成される場合、消去操作は、COBとして規定されたブロック上で直ちに実行されなければならない。COBの現在のブロックアドレス、および、このブロック内で廃棄となる或は削除されたセクタのリストは、以下にCOB構造と称するデータ構造として、マイクロプロセッサのRAM13内に記憶される。COB構造は、初期化中において、廃棄ブロックのアドレスを含む領域を最新のMAPエントリーからコピーするとともに、再構成されたWSLおよびWBLが解析された後に廃棄セクタアドレスを加え、削除されたセクタアドレスをこのブロックから読み込むことによって、確立される。新たな削除セクタ操作が実行される度に、あるいは、新たな廃棄セクタが形成される度に、COB構造が更新され、また、旧データが新たなブロック内で形成される度に、CB内の現在のMAPエントリーにブロックアドレスがコピーされる。
【0088】
SWPによって書き込まれる廃棄もしくは削除セクタデータを含む1つのブロックの存在もまた許される。このブロックは、カレントオブソリートシステムブロック(COSB)と称される。また、COSB構造は、COB構造と類似する方法でSRAM13内に記憶される。COBおよびCOSBはそれぞれ、図10に示されるフォーマット、すなわち、4バイトのブロック数領域28(これは、COBまたはCOSBのブロックアドレスである)と、このブロックの内側の廃棄もしくは削除セクタと対応する位置にマスクを有するビットマップである32バイトの廃棄もしくは削除セクタマスク30とを有している。256ページから成るブロックにおいて、このマスク30は32バイトを要する。
【0089】
次消去ブロックリスト(NEB)
ブロック間でWP、SWP、RPを増加する際に次に利用可能な消去ブロックを早期に認識するため、次消去ブロックリストは、マイクロプロセッサのSRAM13内に形成される。利用可能な消去ブロックは、その物理アドレスの順位を上げる際に使用される。NEBは、M個の消去ブロックアドレス(例えば、M=8)を有している。NEBリストは、次に利用可能な消去ブロックのリストであり、使用のために割当てられる最後の消去ブロックのアドレスに最も近く且つそれよりも高いブロックアドレスを有する消去ブロックで始まる。したがって、NEB内のエントリーの数は制限される(例えば8個に制限される)が、NEBそれ自身は、次の8個の消去ブロックよりも多い情報を含んでいても良い。
【0090】
次消去ブロックリストは、ライトポインタによってアクセスされるフラッシュメモリのアドレス空間の領域に適したMAPエントリー(CB内に記憶される)から得られる。次消去ブロックリストは、これによって規定される全ての消去ブロックが使用されるまで、アクティブNEBとしてSRAM内に残される。そして、全ての消去ブロックが使用された時点で、次消去ブロックリストは、適当なMAPエントリーから再構成されなければならない。CBは、フラッシュメモリ内の全てのブロックの消去状態を規定できる十分な量のMAPエントリーを有している。NEBおよび対応するMAPエントリーは、メモリシステムの操作中にブロックを加減することによって更新される。セクタもしくは制御データ記憶装置のために消去ブロックが割当てられた時に、エントリーがNEBから除去される。NEB内の他のブロックによって測られる領域内にあるブロックアドレスに消去ブロックが形成されると、エントリーがNEBに加えられる(ただし、NEBが既に一杯である場合を除く)。
【0091】
単一のNEBエントリーは、連続するアドレスで消去ブロック群を規定するとともに、ブロック開始アドレス(連続するブロック群内の第1のブロックアドレス)および群の長さ(群の連続するブロックの数)を規定する。
【0092】
TBLポインタ(TBLP)
TBLポインタは、CB内のTBLエントリーの位置を認識する。また、TBLポインタは、マイクロプロセッサのSRAM内に記憶されるとともに、高速セクタアドレス変換を提供するために使用される。TBLPは、制御ブロックの初期走査中に形成され、その後、新たなTBLエントリーがCB内に形成される度に更新される。
【0093】
ASBリスト(ASBL)
前述したように、ASBLは、SRAM13内に形成されるとともに、高速アドレス変換をサポートする。ASBLは、全てのASBブロック及びこれらのASBブロックが関連付けられるSATブロックの物理アドレスを認識する。ASBLは、初期化中に形成され、SATページ書き込み操作が実行される度に更新されなければならない。ASBLエントリーは、以前のアクセスの順序でリストアップされる。すなわち、エントリーは、アクセスされる際、リストのトップに起用される。対応するASBを現時点で有していないSATブロックがアクセスされると、ASBが割当てられ、そのためのエントリーがASBLのトップに加えられる。最も古くにアクセスされたASBを示すASBLの下位のエントリーは削除される。
【0094】
SATキャッシュ
キャッシュは、フラッシュメモリ内のSATから最も新しくアクセスされたエントリーを組み込む32個の連続するSATエントリーのため、SRAM13内に維持される。
【0095】
キャパシティーマップ
メモリシステム10内のフラッシュメモリの総容量は、以下のように、データおよび制御構造に割当てられる。
1.論理セクタ
容量は、カードの定格論理容量内で、各論理アドレスのための1つの有効データセクタの記憶に割当てられる。この定格容量は、利用可能な物理容量からアイテム2〜8を引いたものよりも小さく、カード製造中においてフォーマッターにより規定される。
【0096】
2.ブートブロック
少なくとも1つのブロックがブートブロックに割当てられる。好ましくは、ブートブロックの他のコピーを記憶するために、第2のブロックが割当てられる。
【0097】
3.制御ブロック
制御ブロックエントリー(サイン、BBL、TBL、MAP)の記憶に多数のブロックが割当てられる。十分にコンパクトな制御ブロックは、大抵の場合、占有面積が1ブロックよりも小さい。圧縮/書き換え操作間で書き込まれるエントリーのための制御ブロックに別個のブロックが割当てられる。
【0098】
4.セクタアドレステーブル
これは、SATのブロックの記憶に割当てられる容量である。この容量は、カードの論理容量に比例している。
【0099】
5.追加SATブロック
所定のSATブロックに関連付けられるASBのために、所定数のブロックが割当てられる。
【0100】
6.廃棄セクタ
COBのために1つのブロックが割当てられる。COSBのために他のブロックが割当てられ、POB(COSBおよびPOBの存在を許容する実施例において)のために更に1つのブロックが割当てられる。したがって、許容される旧データセクタの最大数は、ブロック内のページ数によって設定される。
【0101】
7.消去バッファ
これは、システムの修正操作のために割当てられなければならない消去ブロックのバッファである。データセクタ再配置のために、少なくとも1つの消去ブロックが割当てられなければならず、同時に生じる可能性がある制御構造再配置のために1つの消去ブロックが割当てられなければならない。
【0102】
8.スペアブロック
スペアブロックは、作動期間中の故障時に定格論理容量を維持するために使用されるべく割り当てられる。スペアブロックの数は、カード製造中においてフォーマッターにより決定される。
【0103】
8MBカード、64MBカード、512MBカード(フラッシュカード)に関し、例えば前述した項目1〜8に割当てられる容量を示す容量割り当てテーブルが図16(これは、廃棄セクタのため、すなわち、COBのために割当てられる1つのブロックだけを示しているが、無論、これよりも多くのブロックが廃棄セクタのために割当てられても良い。その場合には、メモリシステム内のCOSBやPOBのための対策が必要となる)に示されている。
【0104】
SAT書き込み操作
SATは、WSL、WBL、SSL、SBL、RSL、RBLが一杯になった時に書き換えられる。大抵の場合、それは、1ページの粒度をもって行なわれる。すなわち、修正されたセクタアドレスを含むSATページだけが書き換えられる。しかしながら、極稀に、SATブロック全体の書き換えが必要な場合がある(「SATブロック書き込み」と呼ばれる)。SAT書き換えが必要とされる場合には、追加SATブロック(ASB)が形成され、その中に、必要とされるページだけが書き込まれる(「SATページ書き込み」と呼ばれる)。特定のSATブロックに専用の1つのASBがあっても良く、また、全体として、ASBの制限された数Nが存在していても良い。Nの値は、書き込み特性と容量オーバーヘッドとの間の適当な妥協点として選択される(例えば、N=8)。
【0105】
各ASBは、「SATブロック書き込み」がその対応するSATブロック上で実行されるまで存在する。ASBで一杯となるSATブロック上もしくはASBの割り当てが取り消されるSATブロック上でSAT書き込みページが必要とされる時に、SATブロック書き込みが実行される。SATページ書き込みが必要とされ、対応するSATブロックが関連するASBを有しておらず、また、N個の全てのASBが既に割当てられている場合には、新たなASBの割り当てが成される前に、既存のASBのうちの1つの割り当てが取り消されなければならない。割り当てが取り消されるASBは、最も長い時間の間書き込まれないでいたASBとして選択される。ASBの割り当ての取り消しは、SATブロックの書き込みと廃棄SATブロックおよびASBの消去とを必要とするため、幾分時間を消費する手続きである。
【0106】
インターリーブチップアクセス
前述した操作およびデータ構造によって、本質的に、複数のフラッシュチップ5上でインターリーブ(交互配置)書き込み操作を実行することができる。これにより、性能を十分に向上させることができる。したがって、コントローラチップ8は、複数のフラッシュチップ5、例えばメモリシステムに組み込まれる4個のフラッシュチップの列を制御しても良い。4個のフラッシュチップのメモリ空間は、コントローラにより、仮想ブロックのセットとして編成される。各仮想ブロックは4つのブロックから成り、1ブロックは4つのチップ5のそれぞれからのものである(チップは共に永久にリンクされる)。各仮想ブロック内の4つのブロックは、1チップ内に同じブロックアドレスを有するブロックである。このような編成によれば、仮想ブロックを形成するリンクされた複数のブロックを1つの大きなブロックとして処理することができ、したがって、セクタの個々の消去ブロックの代わりに仮想ブロックを使用して、単一のフラッシュメモリシステム10において述べたと同様のアルゴリズムおよびデータ構造の全てを使用することができる。ページ書き込み操作は、全てのインターリーブチップにわたって同時に実行される。ライトポインタ(WP)およびRP、SWPはそれぞれ、連続的にページアドレスを進め、コントローラ8内に設けられたハードウエアチップイネーブルデコーダに供給されるアドレスビットの順序により、リンクされたブロックのページは、図11に示される順序で連続的にアクセスされる。すなわち、各ポインタWP、SWP、RPは、1つのPAから他のPAに移動する際、1つのチップから他のチップへと移動する。これは、仮想アドレスを使用することによって達成される。固有の仮想アドレス(VA)は、全てのチップ内の各物理セクタに割当てられる(例えば、前述したNANDを基本とするメモリシステムにおいて、VAは各ページのために割当てられる)。1つだけVAを増加させることによってライトポインタが1つのチップから他のチップへと移動するように、仮想アドレスが割当てられる。仮想アドレスは、各仮想ブロックのリンクされたブロックを介して、図11に示されるようなパターンで、チップからチップへと増大する。
【0107】
実際、コントローラは、メモリーチップアレーを仮想ブロックの単一の縦列として処理する。セクタの仮想アドレスは、図12に示されるフォーマットを成している。これは、チップハイ(ChipHigh)部分およびセクタの13ビットのブロックアドレスを備えた仮想ブロック部と、6ビットのページアドレスおよびチップロウ(ChipLow)部分を備えた仮想ページ部とから成る。チップハイ部分は、Chighビットの5ビットチップ数であり、チップロウ部分は、Clowビットの5ビットチップ数である。この場合、
Chigh=チップアレー内のチップの縦列数、
Clow=チップアレー内の横列数である。
仮想アドレス(VA)から物理アドレス(PA)を得るため、コントローラは、図13に示されるように、チップハイ部分とブロックアドレス部分との間にチップロウ部分を逆行させるようにVAを単に再編成する。したがって、任意のセクタのための単一のチップメモリシステムにおいて、VAはPAと等しい。
【0108】
簡素化するため、2倍数のチップだけ、例えば2個と4個のチップをインターリーブ(交互配置)しても良い。仮想ブロックにおける消去操作は、インターリーブされたチップのリンクされた全てのブロックの同時消去として実行される。1つのチップ内の1つのブロックが不良ブロックである場合、コントローラは、等しいブロックアドレスを有する他のチップの全てのブロックを不良ブロックとして処理する。
【0109】
フラッシュメモリがフォーマットされる時にメモリシステムの製造メーカによって可能状態もしくは不能状態に設定されるブートブロックの制御バイト状態によって、インターリービングが可能であったり、不能であったりする。
【0110】
前述した単一のチップNAND型フラッシュの実施例においてブロックアドレスすなわちPAsが予め使用される場合に、仮想ブロックアドレスおよびVAsをそれぞれ使用する。コントローラは、ホストデータセクタ書き込みコマンドを受け取ると、関連するライトポインタが指し示しているPAを割当てることによって、入ってくるLAをPAに変換する。コントローラは、複数のライトポインタを制御して、各ライトポインタをPAを通じて移動させる。その結果、ライトポインタは、消去される仮想ブロック(消去された仮想ブロックはNEBで認識される)のそのセクタの仮想アドレス(VAs)を通じて、連続的に移動する。
【0111】
図14は、インターリーブチップへの多数のセクタ書き込みに関与する様々な操作のタイミングを示している。以下、図15および図19を参照しながら図14について説明する。図15は、メモリシステムのコントローラチップ8を詳細に示すブロック図である(図2のコントローラチップが図15に示される形態を成していても良く、図2および図15の両者において同じ構成要素が同一の符号で示されている)。図19は、コントローラチップ81と4つのフラッシュチップ1’,2’,3’,4’とを備えたメモリシステム10の概略図である。各フラッシュチップは、それ自身のリード/ライトバッファ71’,72’,73’,74’を有している。
【0112】
図15は、ホストコンピュータとの接続のための入/出力ポートO/P、例えば、PCカードATAポート、コンパクトフラッシュ(登録商標)またはIDEポートと、O/PおよびデュアルポートSRAMセクタバッファ9に接続されたホストインタフェース&レジスタ80と、データパスコントローラ82と、ECCジェネレータ&チェッカ12と、フラッシュメモリインタフェース(FMI)84とを有するコントローラチップ8’を示している。データパスコントローラ82と、ECCジェネレータ&チェッカ12と、フラッシュメモリインタフェース(FMI)84は全て、セクタバッファ9に接続されており、また、FMIはフラッシュメモリポート86に接続されている。また、コントローラ8は、マイクロプロセッサ11(RISCプロセッサの形態を成す)と、プロセッサSRAM13と、プロセッサマスクROM88と、外部プログラムRAMまたはROM92のためのポートとを有している。また、RISCプロセッサ11のため、オプションで、デバッグポート94が設けられていても良い。データおよびコマンドは、マイクロプロセッサバス91を介して、コントローラ8’(セクタバッファ9を除く)の様々な構成要素間で通信される。
【0113】
図14に示されるように、複数のセクタ書き込みコマンド(この場合、ホストデータセクタ1,2,3,4から成る4つのセクタ書き込み)がATAポートO/Pで受けられると、デュアルポートセクタバッファ9のバッファ1にセクタ1が書き込まれる。これにより、コントローラのデータ管理操作のために利用可能なセクタバッファ9のバッファ2が残される。セクタ2が受けられると、セクタ2はバッファ2に直接に書き込まれ、同時に、セクタ1がバッファ1からフラッシュメモリポート86に移動される。そして、セクタ1は、このフラッシュメモリポート86から、4つのフラッシュチップのうちの1つ(チップ1’)のリード/ライトバッファ71’へと書き込まれる。その後、セクタ2は、バッファ2からフラッシュポート86へと送られ、そこから、4つのフラッシュチップの他の1つ(チップ2’)のリード/ライトバッファ72’へと書き込まれる。このようなことが起きている間、セクタ3がセクタバッファ9のバッファ1に直接に受けられる。セクタ3はチップ3のバッファ73’に書き込まれ、セクタ4は、セクタバッファ9のバッファ2に受けられた後、チップ4のバッファ74’に書き込まれる。その後、セクタ1,2,3,4は、チップ1’,2’,3’,4’のメモリアレー61’,62’,63’,64’内の関連する割り当てられた物理セクタにそれぞれ書き込まれる。図14は、全ての意図および目的のため、そのうようなセクタ書き込み操作のそれぞれが前のセクタ書き込み操作の直後に開始される形態を示しているが、無論、4つのセクタ1,2,3,4が略同時にフラッシュチップ1’〜4’に書き込まれても良い。また、ホストデータセクタ1〜4が書き込まれるセクタの物理アドレスは、関連するライトポインタの位置を決定する前述したアルゴリズムによって決定されても良い(すなわち、仮想アドレスの連続使用)。
【0114】
4つ以上のセクタを書き込む多重セクタ書き込みコマンドが、ホストプロセッサからコントローラに送られ、コントローラが多重セクタ書き込みを4つのセクタの群(この例では、4つのメモリチップを使用する)に分割するようになっていても良い。この場合、そのような各群は、図14において前述したように、インターリーブ書き込みシーケンスで、フラッシュメモリに書き込まれる。
【0115】
アドレス変換
以下、読み込み及び書き込み操作に関して、LAをVAに変換するアドレス変換プロセスを詳述する。
【0116】
アドレス変換は、以下の3つの値のうちの1つを戻すセクタの論理アドレス上で実行される操作である。
・有効セクタ物理アドレス
・論理セクタが削除された(あるいは、論理セクタが決して書き込まれない)情報
・エラー状態が生じた情報
【0117】
図17は、アドレス変換プロセスを示すフローチャートである。このプロセスは、全ての読み込み操作において実行される。変換される論理セクタアドレス(LA)がホストプロセッサからコントローラ8’によって受けられると、アルゴリズムが実行され(ボックス40)、変換される物理アドレスを有するセクタが、そのSATエントリーの最後の書き込み後に、予め、書き込まれ或は削除された可能性があるか否かが認識される。セクタが予め書き込まれ或は削除されたという結論は、100%の確実性を有していなければならない。すなわち、セクタが予め書き込まれ或は削除されたという結論は、高い確率で正しくなければならない。これは、連続するセクタ系列の開始アドレスと終了アドレスとを示す値の対の限られた数を維持することによって、また、変換されるアドレスがこれらの任意の範囲内にあるか否かを認識することによって、実行される。これらの範囲が最終的に非連続となって、セクタが予め書き込まれ或は削除されたという結論が不確実になっても良い。LAが任意の範囲内にある場合、「繰り返しの可能性は?」の問いに対してYESで答える(図17のボックス42)。LAが任意の範囲内にない場合には、NOと答え、VAを見つけるために、SATまたはSATキャッシュへと進む(ボックス44)。ここから、物理セクタが不良であるか否か(46)、あるいは、削除されたか否か(50)を決定する。LAが書き込まれないセクタに対応している場合には、ボックス50でVA=削除(48)となる。ボックス42でYESと答えると、ボックス52で、WSLもしくはSSL(LAがファイルに対応しているか或はシステムデータに対応しているかどうかに応じて)を検索する。ボックス54で、LAが見つかる(YES)と、VAを演算し(56)、物理セクタのヘッダー1b内に記憶された論理アドレスが、コントローラマイクロプロセッサによって読み込まれる(58)。LA=LA1である場合(ボックス60)には、演算されたVAは正しい。LAが54で見つからない場合には、RSL内でLAを検索し(62)、LAがRSL内で見つからない場合には、SATまたはSATキャッシュへと進んで、そこからVAを得る(44)。SATもしくはSATキャッシュ内で見つかったVAが不良もしくは削除されている場合(46,50)には、前述したように、VAからLA1を得て(58)、LA=LA1であるかどうかをチェックする。
【0118】
図17のボックス56で実行されるプロセスステップ(VAの演算)が図20のフローチャートに詳細に示されている。図20は、たった2つのライトポインタWP,RPを使用するメモリシステムにおいて、WSLまたはRSL内で見出されるLAのためのVAを得るために実行されるステップを示している。無論、このフローチャートは、メモリシステムがシステムライトポインタ(SWP)をも組み込んでいる場合において、SSL内で見出されるLAのためのVAを与えることができるように拡張されていても良い。プロセスはNumFromEnd(NFE)を設定するボックス110で開始される。NumFromEndは、WSL(またはRSL)の終端から書き込まれる所定のセクタ(WSLまたはRSL内に見出されるセクタ)までのセクタ数である。LAがWSL内で見つけられた場合には、P=WPに設定し、LAがRSL内で見つけられた場合には、P=RPに設定する。そして、その後、PG=P.Pageに設定する。この場合、P.Pageは、Pの値によって表わされるライトポインタのページのことである(ボックス102参照)。104において、PG>NFEである(すなわち、LAが最後に書き込まれたブロック内にある)場合には、VA=P−NFE−1、すなわち、NFE−1のセクタが関連するライトポインタの位置から離れる。PG<NFEである場合には、106で、P==0であるか否か、すなわち、最後のWBL/RBLエントリーに対応するブロックが十分に書き込まれたか否かが決定される。書き込まれている場合(すなわち、P==0)には、NotLastが0に設定され、書き込まれていない場合には、NotLastが1に設定される。その後、108において、与えられたセクタが存在するブロックと最後のブロックとの間のブロック数Nblockが、以下のアルゴリズムを使用して演算される。
Nsectは、与えられたセクタと最後に書き込まれたブロックページ0との間のセクタ数である。
Nsect=NumFromEnd−PG
Nblock=Nsect/BlockSize+NotLast
【0119】
その後、110において、ブロック内のページ数PageNumを演算する。この場合、PageNum=BlockSize− Nsect% BlockSizeである。その後、以下の手法を使用して、LAがWSL内にある場合には、112で、WBLからブロックアドレス(BLAddr)を取得し、LAがRSL内にある場合には、114で、RBLからブロックアドレス(BLAddr)を取得する。この場合、ブロックアドレスは、所定のセクタを含むブロックの仮想アドレスである。
LAがWSL内にある場合には、BlAddr=RBL[LBL−NBlock]、この場合、LBLはWBL内の最後のエントリーのインデックス;
LAがRSL内にある場合には、BlAddr=RBL[LRBL+NBlock]、この場合、LRBL はRBL内の最後のエントリーのインデックスである。
【0120】
その後、116で、VA=Page0+PageNumを使用して、VAを演算する。この場合、Page0は、与えられたセクタを含むブロック内のページ0の仮想アドレスである。
【0121】
図21は、SATまたはSATキャッシュからVAを取得する(図17のボックス44)ために使用されるプロセスのフローチャートである。図21は、一般に自明であるが、以下、特に番号が付与されているボックスについて説明する。
【0122】
ボックス120(LAがSATキャッシュ内にあるか):LA>=FirstCacheEntryである場合には、LAがSATキャッシュ内にある。LA<=LA<FirstCacheEntry.LA+CacheSize 、この場合、FirstCacheEntry.LAは、キャッシュ内の最初のSATエントリーに対応するLAであり、(全体の)CacheSizeは、SATキャッシュ内のエントリーの数である。
【0123】
ボックス122(SAT内のブロックおよびページを演算する):ここでは、与えられたLAにおけるSATブロック数であるSBNumと、与えられたLAにおけるSATページ数であるSpageとを演算する。
【0124】
ボックス124(TBLエントリーの数を演算する):TBLNumは、要求されるTBLエントリーの数である。この場合、TBLNum=SBNum/8である。
【0125】
ボックス126(SATページの一部をキャッシュ内に記憶する):可能であれば、最後にアクセスされたエントリーで始まる32個のエントリーがキャッシュされる。その後、十分なエントリーが無い場合には、ページ内の最後のエントリーで終わり且つ最後のセクタアクセスを含む32個のエントリーから成る1つの群がキャッシュされる。
【0126】
図18は、図17のボックス58(VAからLA1を取得)のためのプロセスステップを示すフローチャートである。ページヘッダー内に記憶されたヘッダーパラメータ(HP)は、論理アドレス(LA)の1だけ増大された値である。これは、削除されたセクタが、そのヘッダー内の全てのビットを0に設定することによってマークされているからである。このLA=0をヘッダー内に記憶することはできない。したがって、LA1=HP−1に設定する。
【0127】
読み込み操作
図22は、物理セクタからホストデータセクタを読み込むために実行されるステップのシーケンスを示すフローチャートである。コントローラは、LA(ホストから受ける)をVAに変換することによってスタートする(ボックス130)。これは、既に説明した図17のフローチャートに示されたプロセスを実行することによって成される。LAがVAに変換されると、直ちに、アドレスVAを有する物理セクタの内容が、コントローラのバッファ9に読み込まれる。その後、コントローラは、セクタ(すなわち、セクタの内容)が削除されたか否か或は不良であるか否かをチェックする(ボックス132)。セクタが削除され或は不良である場合、コントローラは、ホストプロセッサのデータバッファの全てのバイトをOxFFに設定する(ボックス134)。セクタが削除されたセクタでない場合には(ボックス136)、コントローラは、エラー状態をホストに戻す(ボックス138)。セクタが削除されたセクタである場合には、コントローラは、有効状態をホストに戻す(ボックス137)。ボックス132において、セクタが削除或は不良でないことをコントローラが決定した場合には、コントローラは、そのままボックス137に進む。すなわち、有効状態をホストに戻す。
【0128】
書き込み操作
図23は、ホストデータセクタを物理セクタに書き込むために実行されるステップのシーケンスを示すフローチャートである。図23は、ホストファイルデータの書き込み操作、すなわち、ライトポインタ(WP)による書き込みだけを扱う。しかしながら、メモリシステムがシステムデータのための別個のライトポインタ(すなわち、SWP)を使用する場合には、図23の操作を適当に拡張して、別個のシステムデータの書き込みを扱えるようにしても良い。コントローラは、LA(ホストから受けられる)をVAに変換することによってスタートする(ボックス150)。これは、既に説明した図17のフローチャートに示されるプロセスを実行することによって成される。152で、セクタが不良である場合には、コントローラは、エラー状態をホストに戻す(154)。セクタが不良でない場合には、セクタが削除されるか否かをチェックする(156)し、セクタが削除される場合には、その後、WPが有効か無効かをチェックする(158)。全てのブロックが書き込まれてしまっている場合には、WPは無効(WP==0)であり、WPを消去ブロックに移動させなければならない。WPが有効でない場合、WPを新しい(有効)物理セクタアドレスに設定する(160)。WPが有効である場合には、WSLにLAを加え(162)、任意のWSLもしくはRSLリリースや、必要なCBおよびCBPT圧縮を実行する。その後、繰り返し可能性評価アルゴリズム(図17のボックス40)から範囲を更新し(164)、コントローラバッファからWPのアドレスにセクタを書き込み(166)、有効状態の値をホストに戻す(168)。ボックス156で、セクタが削除されないことが分かると、COB内にVAがあるか否かをチェックする(157)(VAがVBと一致している場合、VAはCOB内にある。この場合、VBは、SRAM13内に記憶されたCOB構造内の仮想ブロック数領域(これは、仮想ブロックアドレス…図12参照)である)。VAがCOB内にある場合には、コントローラのSRAM13内に記憶されたCOB構造内にVAを廃棄として記録し(159)(これは、SRAM13内のCOB構造のビットマスク領域内で、対応するビットを1に設定することにより成される)、その後、ボックス158に進む(WPは有効か)。VAがCOB内にない場合には、COBを変更し(161)、その後、ボックス159に進む(VAを廃棄としてマークする)。
【0129】
図24は、図23のボックス161で実行されるステップ(COBの変更)のフローチャートである。図24は、一般に自明であるが、以下の注記と併せて読まなくてはならない。すなわち、
ボックス200(VA.Bl、VB):VA.BlはVAの仮想ブロック領域であり、VBは先に説明したものと同じである。
ボックス202(COBは無効か):VB=0の場合、COBは無効である。VBが0である場合、これは、この時点で旧データが無いことを示している。
ボックス203,204(MaxRelの演算):MaxRelは、COBから再配置されるセクタの最大数である。MaxRel=P.Page−1である。この場合、P.Pageは、WPまたはRPのページ領域(アドレス)である。
ボックス205,206(ダミーエントリーをWSLに加える):再配置されるブロックがまだ一杯に書き込まれていない場合には、対応する「ダミー」のセクタLAsを最後のWSL(RSL)エントリーに加えなければならない。
ボックス207(セクタの再配置):図25を参照。
ボックス208(WMAPの書き込み):WMAPをCBに書き込む。この場合、EB+VBおよびビットマップ内の対応するビットは1に設定される。必要に応じて、CBの書き換えを実行する。
ボックス209(リストの更新):VBと等しいWRBArrayエントリーを見つけ、それを無効としてマークするとともに、WRBArray内の同じVBに関する任意の他のエントリーを無効としてマークする。WRBArrayは、実際には、最初にカウントアップするWBLエントリーと最後にカウントダウンスルRBLエントリーとともに、メモリの同じ領域内に実際に記憶されるWBLおよびWSLリストである。2つのリストが中央で交わると、WRBArrayが一杯になる。
ボックス210(COBのセットアップ):COB構造をSRAM内で更新する。VB領域はVA.Blに設定される。VA.Pageに対応する廃棄および削除マスク(Obs and Del Mask)ビットは1に設定される。他の全てのビットは0に設定される。
【0130】
図25は、図24のボックス207で実行されるステップ(セクタの再配置)を示している。これは、以下の注記と併せて読まなくてはならない。すなわち、
ボックス220,222,230:SRAM内のCOB構造の廃棄および削除マスク領域を通り抜けるループを実行する。
ボックス223(セクタは有効か):ODMask[i]=0である場合、セクタは有効である。すなわち、COBの廃棄および削除マスクにおける0値は、このページが有効セクタを含んでいることを示している。
ボックス224,225:RPによって指し示されるブロックが既に一杯に書き込まれている場合には、RP=0である。
ボックス226(ページヘッダーからのLAを記憶する):ページヘッダーから得られたLAは、一時的に記憶されて、エントリーをRSLに加える際に使用される。
ボックス225(RP=0):エントリーをRSLに加える。必要に応じて、WSL/RSLリリースを実行する。
【0131】
図26は、図23のボックス160で、ライトポインタ(WP)を設定するために実行されるステップを示している。図25のボックス227でRPを設定するために、同様のプロセスが使用される。図26は、以下の注記と併せて読まなくてはならない。すなわち、
ボックス240(WRArrayが一杯ではないか):Last<LastRE−1である場合、WRArrayは一杯ではない。ここで、Last(全体的)は最後のWSLエントリーのインデックスである。LastREは、最後のRSLエントリーのインデックスである。
ボックス242(WRBArrayが一杯ではないか):LBL<LRBL−1である場合、WRBArrayは一杯ではない。ここで、LBLおよびLRBLは、図20において先に定義したものと同様である。
ボックス244(リストのリリース):SATページ書き込み操作を実行する。必要であれば、SATブロック書き込みおよびCB書き込みを実行する。
ボックス246(NEBを満たす):CB内に記憶されたMAPから次のN(N=NEBSize)の消去ブロックを選択する。
ボックス248(WMAPの書き込み):ErBlockに設定されたリンク領域および0に設定されたビットマップ領域内の対応ビットとともに、WMAPを書き込む。必要に応じて、CB書き換えを実行する。
【0132】
図27は、削除セクタ操作において実行されるプロセスステップのフローチャートである。これは、初期のステップにおいては、書き込み操作(図23参照)に類似している。すなわち、LAがVAに変換され(250)される。252で、セクタが削除される場合には、エラー状態をホストに戻す(254)。セクタが削除されない場合には、VAがCOB内にあるか否かをチェックして(257)、VAがCOB内に無い場合には、COBを変更する(261)(図24と同様)。VAがCOB内にある場合には、COB内でVAを削除としてマークし(269)、その後、デュアルポートSRAM9(コントローラ内)のバッファのうちの1つを複数の0で一杯にする(271)。その後、バッファからのこの「オールゼロ」ページを、削除されるセクタに書きこむ(これによって、セクタを削除する)。その後、有効状態をホストに戻す(275)(セクタが削除されたことを確認する)。
【0133】
初期化
以下、初期化手続き及び電力損失リカバリ手続きについて説明する。簡単のため、単一のライトポインタシステム(すなわち、WPだけ)に関してこれらを説明する。しかしながら、無論、マルチプルライトポインタシステム(WP、SWP、RP)に適するように手続きを拡張しても良い。全てのデータおよび制御構造は、初期化中の走査が一般的に成されないように特別に構成される。殆ど全ての制御構造(WSLおよびWBLを除く)は、通常、CB内に記憶された対応する情報から得られる。カードの初期化中においては、以下の操作を実行することが必要である。
1.ブートブロックから最後の制御ブロックポインタテーブルエントリーを読み込み、CBブロックの場所を確認する。
2.CBを操作することによってTBLPを再構成する。
3.制御ブロック内の最後のTBLエントリー内で規定されるライトポインタの位置の後に連続的に続くページのヘッダー/ECC領域を走査して、最後のSAT書き換え後に書き込まれたセクタを認識するとともに、WSLおよびWBLを再構成する。
4.CB内の対応するMAPエントリーからNEBを構成する。
5.COBおよびASBLを構成する。
6.最後のMAPのErB領域内で参照されたブロックが実際に消去されたか否かをチェックする。消去されていない場合には、消去操作を終了する。
【0134】
WSLおよびWBLの構成
カードの初期化中、記憶されるライトポインタ(WP)の最後の値は、CB内の最後のTBLエントリーから読み込まれ、その場所の次のページで、ページヘッダーの走査が実行されて、プロセッサのSRAM内でWSLおよびWBLが再構成される。消去場所が見つかると、最後のSAT書き換え後に書き込まれたセクタ系列の末端に辿りつく。
このようなセクタ走査では、ライトポインタ(WP)が、ブロックの末端から、隣接していないブロックの先頭へとジャンプすることができる、という事実を考慮に入れなければならない。WPによって成される全てのブロック移動は、CB内のMAPエントリーのリンク領域内に記録される。
【0135】
COBおよびASBLの構成
これらの構造は、対応するエントリーをCBからコピーすることによって再構成することができる。また、COB構造を構成するためには(その中の削除セクタを認識するためには)、CB内の最後のMAPエントリーの廃棄(Obs)領域内にアドレスが規定されているこれらのセクタを含む現在のブロックを走査する必要がある。このブロック内の廃棄セクタを確認するためには、WSLおよびWBLを走査することも必要である。ASBLページを記録するためには、TBLからASBアドレスを認識し、その後、それらのヘッダー/ECC領域を走査しなければならない。
【0136】
電力損失リカバリ
メモリシステムにおいては、正常に動作でき、また、電力が回復された際、電力が除去された状況下であっても、記憶されたデータが失われないことが必要である。しかしながら、電源ONの直後にメモリシステムが全ての正常状態を回復する必要はなく、正常に動作できるだけで良い。任意の異常状態が何時検知されようとも、正常状態は、例外として、その後に回復され得る。
【0137】
以下の任意の操作が実行されている時に供給電圧が除去されると、メモリシステムの正常状態が低下する。
1.ホストからのデータセクタの書き込み
2.移動されるデータセクタの書き込み
3.制御データブロック(CBまたはBB)へのエントリーの書き込み
4.制御データブロック(SATまたはCB)へのページの書き込み
5.廃棄セクタもしくは制御データを有する任意のブロックの消去
【0138】
ホストからデータセクタを書き込んでいる間の電力損失
この場合、書き込まれているデータが失われることがあるが、書き込みコマンドが終了してセクタを再び書き込むことができるといった情報は、ホストに与えられない。不完全に書き込まれたセクタは、不完全書き込み操作の結果として、フラッシュメモリ内に存在している場合がある。これは、CB内の最後のリンクパラメータによって規定されるブロック内のページヘッダーを読み込むことによってライトポインタの値が設定されると、初期化中に検知される。最後に検知されたセクタは、そのECCをチェックするために完全に読み込まなければならない。また、次のページは、それが完全に消去されることをチェックするように読み込まれなければならない。不完全に書き込まれたセクタが検知される場合には、他の全てのセクタは、次の消去ブロックの最初に、新たなライトポインタ位置へと再配置され、その後に、ブロックが消去されなければならない。
【0139】
再配置されるデータセクタの書き込み中の電力損失
これは、前述したように、初期化中、ライトポインタを定めるプロセスにおいて検知される。セクタを再配置させてブロックを消去する場合と同じ動作が成されなければならない。また、ライトポインタの直前の論理セクタアドレスと、CB内の廃棄(Obs)パラメータによって規定されるブロック内の廃棄セクタの論理セクタアドレスとを比較することによって、不完全な再配置操作が検知されなければならない。保留の任意のセクタ再配置は、初期化中に完了されなければならない。
【0140】
制御データブロック(CBまたはBB)へのエントリーの書き込み中の電力損失
この状態は、CBおよびBB内のエントリーが読み込まれ且つそれらのECCがチェックされると、通常の初期化中に検知される場合がある。エントリーのECCがエラーを示している場合には、そのエントリーを無視すべきである。CBまたはBBエントリー書き込み操作を開始した初期の動作は正確に完了されず、この操作が通常の動作中に繰り返される時、エントリーは、その後、正確に書き込まれる。
【0141】
制御データブロック(ASB)へのページの書き込み中の電力損失
この状態は、ASB内のページが読み込まれ且つそれらのECCがチェックされると、通常の初期化中に検知される場合がある。ページのECCがエラーを示している場合には、そのページを無視すべきである。ASBページ書き込み操作を開始した初期の動作は正確に完了されず、この操作が通常の動作中に繰り返される時、ページは、その後、正確に書き込まれる。
【0142】
全ての制御データブロック(SATまたはCB)の書き込み中の電力損失
これによって、不完全な制御データブロックが、他のデータ構造によるそれとは無関係に、フラッシュメモリ内に存在するようになる。この状態が初期化中に検知される必要はない。また、ブロックは、「損失ブロック」として存在することが許されても良い。ブロック書き込み操作を開始した初期の動作は正確に完了されず、この操作が通常の動作中に繰り返される時、ブロックは、その後、正確に書き込まれる。通常の動作の後段で、損失ブロックは、そのMAP状態に関する矛盾、あるいは、システム内の消去ブロック数における矛盾を発見することによって検知される(図16のキャパシティマップ参照)。その後、必要に応じて、除外ルーチンは、フラッシュメモリ全体を走査することによって、そのブロックを認識して消去する。
【0143】
廃棄セクタまたは制御データとともにブロックを消去する間の電力損失
これによって、不完全に消去されたブロックがフラッシュメモリ内に存在するようになる。この状態は、CB内の最後のMAPエントリー内のErB領域によって参照されるブロック状態がチェックされると、初期化中に検知される。必要に応じて、このブロックの再消去を実行することができる。
【0144】
更なる別の実施例
本発明の範囲から逸脱することなく、前述した実施例を様々に変形することができる。例えば、消去操作を扱う他の方法は、2つのCOB(および、2つのCOSB)の存在を常に許容することである。この利点は、メモリ容量を最大限に利用できることである。前述した実施例においては、1つのCOBだけが許容されたが、COBを作りたいブロック内にライトポインタがある場合には、1つのPOBの一時的な存在を許容しても良い。これは、POBを有することが必要な場合に、POBのために割当てることができる十分な消去メモリ容量が常に存在していなければならないことを意味する。したがって、このメモリ容量を最大限に利用できることは有益であり、これを実現する1つの方法が、2つのCOBの存在を常に許容すること、すなわち、POBを不要にすることである(必要な場合、第2のCOBがPOBとして作用することができる)。そのような2COBシステムにおいて、新たなCOBを形成することが必要な場合には、2つのCOBのうちの古い方のCOBを消去する(古い方のCOB内にライトポインタが無い場合には、新しい方のCOBを消去する)。
【0145】
図3、および、メモリシステム内の各フラッシュページにおけるデータ配置の説明に関し、以下、ページ内にデータを記憶する幾つかの別の方法を提案する。図28は、典型的な528バイトのNAND型もしくはAND型フラッシュメモリのページ1の物理的な群分離を示している。ページは、512バイトの「データ領域」300と、16バイトの「スペア領域」302とを備えている。図3に関して前述した実施例において、コントローラ8は、データ領域300内に512バイトの情報1a(例えば、1つのホストデータセクタ)を記憶し、スペア領域302内にヘッダー1bおよびECC1c(以下、これらをまとめて、オーバーヘッドデータと称する)を記憶する。しかしながら、ページ1内における他のデータ配置も可能である。例えば、図29に示されるように、データ領域300の第1の部分303内にヘッダ1bおよびECC1cが記憶され、データ領域300の残りの部分とスペア領域302とから成る部分304内に情報1aが記憶されても良い。
【0146】
図30に示されるように、フラッシュページの先頭からオフセットした位置にヘッダー1bおよびECC1cを書き込むとともに、残っているヘッダーおよびECCの両側の空間内にホストデータセクタ(「ユーザデータ」と称しても良い)を書き込むこともできる。ODのオフセット量(オフセットS)は、例えば、(a)ページ1の物理アドレス(PA)、あるいは、(b)ページ1に書き込まれるユーザデータ(すなわち、ホストデータセクタ)の第1のバイト内の1または複数のビットに応じて決定されても良い。図31(a)は、セクタ書き込み操作の開始前におけるコントローラバッファ320内のデータの配置を示している。データは、ユーザデータの第1の部分332として、また、ヘッダデータの第2の部分324として配置されている。図31(b)は、オフセットSがユーザデータの最初のバイト内の1または複数のビットによって決定される(前述した選択(b))書き込み操作の終了後における、フラッシュメモリページ内のデータの配置を示している。データは、ユーザデータから成る第1の部分326として記憶され、その後、ユーザデータから成る第2の部分328として記憶され、その後、ヘッダー1bおよびECC1cとして記憶され、その後、ユーザデータから成る第3の最終部分330として記憶される。部分326と部分328とを足した長さは、部分326内のデータに依存する。部分326の長さは最小オフセット以下に規定され、部分328の長さは、正確なオフセットSを与えるために、部分326内のデータに基づいて演算される。ユーザデータから成る第1および第2の部分326,328は別個に認識され、これにより、第1の部分326は、1つの操作でコントローラによりフラッシュメモリから読み込まれるとともに、次の操作でコントローラによって読み込まれる第2の部分328の長さを決定するためにコントローラによって演算される。図32は、書き込み操作中にコントロールバッファからフラッシュメモリにデータを送信するために使用されるコントローラコマンドのシーケンスを詳細に示した表である。
【0147】
ユーザデータの1または複数のビットの関数であるオフセットSを選択する1つの利点は、全てのセクタにおいて、オーバーヘッドデータが528バイトデータセグメント内の同じ位置に挿入されないという点である。これにより、メモリアレーのカラム欠陥といったフラッシュメモリ内のシステム故障時に、多数のセクタにおいて、貴重なオーバーヘッドデータが同時に失われることが防止される。
【0148】
図33は、図31(b)のフラッシュメモリページにおける読み込み操作終了後のコントローラバッファのデータ配置結果を示している。バッファ内のデータが配置された後に、ユーザデータから成る第1の部分322およびヘッダーデータから成る第2の部分324が配置され、その後に、ECCから成る第3の最後の部分325が配置されているのが図33から分かる。図34は、読み込み操作中にフラッシュメモリからコントローラバッファへデータを送信するために使用されるコントローラコマンドのシーケンスを詳細に示す表である。
【0149】
さらに、複数のフラッシュチップに対するインターリーブ書き込み操作に関しては、マルチプルフラッシュチップメモリシステムにおいて既に説明したように、複数のチップに対して略同時に書き込む技術は、物理的なページサイズがコントローラによるセクタ書き込みの多様なサイズである単一のメモリチップにデータを書き込むために使用することもできる。例えば、コントローラが均一のサイズのセグメントにデータを書き込む場合、メモリの各ページは、コントローラによって書き込まれる(ユーザ+オーバーヘッド)データのセグメントサイズの4倍である。
【0150】
本発明は、NAND型メモリだけでなく、AND型およびNOR型といった他のタイプのメモリにも適用できる。AND型フラッシュメモリの場合、ブロックの各ページは、図28のNANDページフォーマットと同じフォーマットを有し、前述したようにページ内でデータを任意に配置することができる。本発明のコントローラは、たとえ、不良セクタを含むブロック内で、消去されるそのブロック内の個々の良好なセクタが個別に消去される場合であっても、セクタのブロック内のメモリを依然として消去する。すなわち、コントローラは、不良セクタを含む任意のブロックを不良セクタとして処理せず、その代わり、それらを良好な(消去可能な)ブロックとして処理し、これらのブロック内の良好なセクタを利用する。しかしながら、AND型の実施例において、コントローラは、SATブロックもしくはASBsに関し、全て良好なセクタを含むブロックのみを使用する。
【0151】
AND型フラッシュメモリが使用され且つメモリシステムが前述したようにインターリーブチップ書き込み操作を使用するマルチプルフラッシュチップシステムである場合、また、仮想ブロックのうちの1つの任意のセクタブロック(ページ)が不良セクタを含んでいる場合、コントローラによって、ライトポインタは、このセクタをスキップして、ブロック内の次の良好なセクタへと進む。例えば、cをチップとし、sをセクタとした場合、4つのセクタ書き込みのバーストがc3s5、c4s5、c1s6、c2s6であって、c1s6が不良セクタであると、順序は、c3s5、c4s5、c2s6、c3s6となる。これは、1つの仮想ブロック内の1つのブロックが1または複数の不良セクタを含んでいる場合にコントローラがそのブロックを不良ブロックとして処理し且つ仮想ブロック全体を不良仮想ブロックとして処理するNAND型メモリに基づく実施例と対称的である。
【0152】
NOR型フラッシュメモリを使用する場合、好ましい実施例において、メモリシステムのコントローラは、均一サイズの528バイトセクタの状態で、データ構造をフラッシュメモリに書き込んだり、データ構造をフラッシュメモリから読み込んだりする。図35は、そのような3つのセクタ1,2,3がNORメモリのブロック4’内にある状態を概略的に示している。NORブロック内の1列のメモリがたった512バイトであるため、NOR内の各セクタは、1列を満たすとともに、次の列を満たすように回り込むようになる。しかしながら、NORメモリ内のセクタを異なった方法で規定することもできる。528バイトを下回る或は上回るサイズのセクタを使用することもでき、また、ブロックは、ワンサイズ以上大きいセクタを含んでいても良い。コントローラは、NAND型およびAND型メモリページに関して既に述べた任意の様々な異なる方法により、ユーザおよびオーバーヘッドデータを含む各セクタ内でデータを配置しても良い。
【0153】
前述したことから分かるように、メモリシステムがNAND型、AND型、NOR型のメモリアレーである場合、メモリシステムの物理セクタは、メモリアレーそれ自身の物理アーキテクチャと特定の関係を有している必要は全くない。例えば、セクタがアレーの列(ページ)に対応している必要はなく、また、1つのセクタとこれに隣接するセクタとの間の境界を認識できるように物理的特徴が存在している必要もない。常に1つのユニットとしてコントローラにより処理されるメモリセル群として、セクタを解釈することができる。異なるセクタは同じサイズを有している必要はない。また、セクタの物理的構造は、セクタ内に記憶されるデータに依存しない。また、メモリセルの列(ページ)内の欠陥領域が容認され且つ物理セクタへの書き込み時にコントローラによって飛び越えられるような実施例も可能である。
【0154】
SATに関しては、前述したように、SATが好ましくはメモリアレー6の1または複数のブロック内に記憶される一方で、コントローラにアクセス可能な別個の不揮発性メモリをメモリシステム10に設けることもできる。この場合、コントローラは、この別個のメモリ内にSATを記憶する。
【0155】
最後に、前述した実施例の変形バージョンにおいては、前述したように、利用可能な消去ブロックを常にその昇順で使用する代わりに、コントローラは、消去ブロックを他の順番で使用する。この変形例において、NEBリストは、現在利用可能な全ての消去ブロックの選択されたサブセットを含んでおり、NEBリスト内の最初のブロックアドレスが、使用される次の消去ブロックである。この最初のブロックアドレスは、それがデータ記憶の用途で割当てられた時に、NEBリストから除去される。形成される任意の新たな消去ブロック(例えば、ホストからの削除コマンドに続く、旧データの形成)は、NEBリストの低部に加えられる。これは、コントローラ(例えば、ホストからの所定数のセクタ書き込みコマンドであっても良い)によって決定される所定の期間だけ続く。そして、その期間の終端で、コントローラは、NEB内のエントリーを現在利用可能な消去ブロックの新たなサブセットに置き換えることにより、NEBリストを再びコンパイルする。全ての消去ブロックの全セットから成るサブセットは、物理ブロックアドレスを上昇する順序で都合良く順次に使用されても良い。この変形例は、全てのブロックの消去状態をモニタして記憶することに伴うメモリ空間の要件を低減させる点において、幾つかの利点を有する。
【図面の簡単な説明】
【図1】 その中に3つのセクタを示すNAND型フラッシュメモリのセクタの1つのブロックの概略図である。
【図2】 フラッシュチップとコントローラチップとを備えるメモリシステムのブロック図である。
【図3】 NAND型もしくはAND型のフラッシュメモリ内のデータの1ページの概略図である。
【図4】 図3のページのヘッダー領域の構造を示す図である。
【図5】 1ページの物理アドレス(PA)のフォーマットを示す図である。
【図6】 制御ブロック(CB)エントリーを示す図である。
【図7】 テーブルブロックリスト(TBL)内の1つのエントリーを示す図である。
【図8】 MAPエントリーのフォーマットを示す図である。
【図9】 ASBリスト(ASBL)内の1つのエントリーのフォーマットを示す図である。
【図10】 カレントオブソリートブロック(COB)構造のフォーマットを示す図である。
【図11】 本発明の一実施例に係るマルチプルフラッシュチップメモリシステムの仮想ブロック内にセクタが書き込まれる順番を示すテーブルである。
【図12】 仮想アドレス(VA)のフォーマットを示す図である。
【図13】 VAからのPAの取得方法を示す図である。
【図14】 本発明に係るマルチプルフラッシュチップメモリシステムに複数のセクタを書き込む間の操作のタイミングを示す図である。
【図15】 コントローラチップのブロック図である。
【図16】 本発明のメモリシステムのために割当てられたメモリ容量を示すテーブルである。
【図17】 アドレス変換プロセスを示すフローチャートである。
【図18】 図17のボックス58で実行されるステップのフローチャートである。
【図19】 4つのフラッシュチップおよびコントローラチップを備えるマルチプルフラッシュチップメモリシステムのブロック図である。
【図20】 図17のボックス56で実行されるステップのフローチャートである。
【図21】 図17のボックス44で実行されるステップのフローチャートである。
【図22】 セクタ読み込み操作のフローチャートである。
【図23】 セクタ書き込み操作のフローチャートである。
【図24】 図23のボックス161で実行されるステップのフローチャートである。
【図25】 図24のボックス207で実行されるステップのフローチャートである。
【図26】 図23のボックス160で実行されるステップのフローチャートである。
【図27】 セクタ削除操作のフローチャートである。
【図28】 NAND型もしくはAND型のフラッシュメモリ内のページの物理的な群分離を示す図である。
【図29】 図28のフラッシュページ内にデータを配置する他の方法を示す図である。
【図30】 図28のフラッシュページ内にデータを配置する更なる他の方法を示す図である。
【図31(a)】 セクタ書き込み操作前におけるコントローラのバッファメモリ内のデータを示す図である。
【図31(b)】 図30の実施例にしたがってデータが配置された場合における、書き込み操作終了後のフラッシュページ内のデータを示す図である。
【図32】 図31(a)および図31(b)の書き込み操作中に、コントローラバッファからフラッシュメモリにデータを送信するために使用されるコントローラコマンドのテーブルである。
【図33】 読み込み操作後におけるコントローラのバッファメモリ内のデータを示す図である。
【図34】 図33の読み込み操作中にフラッシュメモリからコントロールバッファにデータを送信するために使用されるコントローラコマンドのテーブルである。
【図35】 その中に3つのセクタを示すNOR型フラッシュメモリ内のセクタの消去可能ブロックの概略ブロック図である。
Claims (52)
- ホストプロセッサに接続するためのメモリシステムであって、前記システムは、
個別にアドレス可能で、かつ、複数のセクタから構成される消去可能ブロック内に設けられた不揮発メモリセクタを有する固体メモリであって、前記セクタは、各々、前記メモリ内の自身の物理的位置を定義する物理アドレスを有する、固体メモリと、
データ構造の前記メモリへの書き込みおよびデータ構造の前記メモリからの読出しを行い、かつ、消去用として処理されるブロックと非消去用として処理されるブロックとに、複数のセクタから構成されるブロックを分別するためのコントローラと
を備え、
前記コントローラは、
前記ホストプロセッサから受け取った論理アドレスを前記メモリ内の前記メモリセクタの物理アドレスに翻訳する手段と、
前記ホストプロセッサからのデータが書き込まれるセクタの物理アドレスを指示するライトポインタ(WP)と
を備え、
前記ライトポインタ(WP)は、消去用として処理される任意のブロックにおける前記メモリセクタの物理アドレスをくまなく所定の順番で移動するように、また、ブロックが満杯の場合は、別の消去ブロックに移動するように前記コントローラによって制御され、
前記コントローラは、前記ホストプロセッサからセクタ書き込みコマンドを受けると、前記ライトポインタ(WP)がその時点で指示する物理アドレスを論理アドレスに割当てることによって、前記コントローラが、前記ホストプロセッサから受け取った論理アドレスをデータが書き込みされる物理アドレスに翻訳するように、構成され、
前記コントローラは、前記セクタの前記論理アドレスに対応して当該論理アドレスが翻訳される物理アドレスが格納されるセクタ割当てテーブル(SAT)を生成することであって、各論理アドレスは、前記コントローラによって前記SAT内の対応する物理アドレスに割当てられる、ことと、前記ホストプロセッサからのデータがメモリセクタに書き込みされる頻度より少ない頻度で前記SATを更新することとを実行するように構成され、
前記コントローラは、さらに、開始物理セクタアドレスと、SATブロックが最後に更新されてから前記コントローラによりデータが書き込みされたセクタを含んでいるブロック間のリンクとを前記固体メモリの制御ブロックに記憶するように構成され、前記開始物理セクタアドレスは、前記SATが最後に書き込みされたときの前記ライトポインタ(WP)の位置である、システム。 - 前記ライトポインタ(WP)は、消去用に処理されるブロック中を所定の順序で移動するように前記コントローラによって制御されている、請求項1に記載のメモリシステム。
- 前記SATの物理セクタアドレスは、論理セクタアドレス(LSA)の順序に配置されており、N番目のSATエントリーは、論理アドレスNを有するデータが書き込みされたセクタの物理アドレスを含む、請求項1または2に記載のメモリシステム。
- 前記コントローラは、前記ホストプロセッサからセクタ読出しコマンドを受け取ると、前記コントローラが以前前記論理セクタアドレスに割当てた物理セクタアドレスを得るために、前記コントローラが前記SAT内において、前記ホストプロセッサから受け取った論理セクタアドレス(LSA)を検索するように、構成される、請求項3に記載のメモリシステム。
- 前記SATが、前記固体メモリの複数のメモリセクタから構成される前記ブロックのうちの少なくとも1つのブロックに記憶されている、請求項1〜4の何れかに記載のメモリシステム。
- 前記コントローラは、前記SATが記憶されている前記ブロックのうちの前記少なくとも1つのブロックのうちの1つ以上のブロック全体を再書き込みすることにより、前記SATを更新するように構成されている、請求項5に記載のメモリシステム。
- SATブロックの個別セクタの修正バージョンを含んでいる、複数のセクタから構成される少なくとも1つのブロック(ASB)が提供される、請求項5または6に記載のメモリシステム。
- 前記ASBブロックのセクタが各々、それが更新するSATブロックのセクタの物理アドレスと、前記SATブロックのセクタの修正バージョンとを含む、請求項7に記載のメモリシステム。
- 前記ASBブロックの全てのセクタがSATセクタの修正バージョンを書き込まれるとき、それぞれのSATブロックは、前記ASBブロック内の全ての修正バージョンを含むように再書き込みされ、かつ、前記ASBブロックが消去される、請求項7または8に記載のメモリシステム。
- 前記コントローラは、前記ライトポインタ(WP)を制御することにより、各ブロックが書き込みデータで満杯になると、物理アドレスの番号昇順で、消去ブロック中を連続的に移動するように、構成されている、請求項1〜9の何れかに記載のメモリシステム。
- 物理アドレス順で最高位のブロックのセクタがひとたびデータで満杯になると、前記コントローラにより現在消去用として処理されている全てのブロック中、番号的に最下位の物理ブロックアドレスを有するセクタから構成されるブロックを取り囲むように前記WPが前記コントローラによって制御されるという意味から、前記ライトポインタ(WP)の制御が循環式である、請求項10に記載のメモリシステム。
- 前記コントローラは、前記ライトポインタ(WP)を制御することにより、消去ブロック中を物理アドレス順で非連続的に移動するように、構成されている、請求項1〜9の何れかに記載のメモリシステム。
- 前記メモリセクタ(1)はそれぞれ、物理的にデータエリア(300)とスペアエリア(302)とに分割され、前記コントローラは、セクタのデータエリア(300)の始めからオフセットされるセクタ位置において、ヘッダデータおよびエラー修正コードデータ(ECC)を含むオーバーヘッドデータ(OD)を書き込みし、かつ、前記ホストプロセッサから受け取ったユーザデータを前記オーバーヘッドデータ(OD)の何れか一方の側のセクタにおける残りスペースに書き込みするように、構成されている、請求項1〜12の何れかに記載のメモリシステム。
- 前記オーバーヘッドデータ(OD)は、前記セクタに書き込みされるユーザデータのうち少なくとも1ビットによって決定される量によってオフセットされる、請求項13に記載のメモリシステム。
- 前記複数のセクタを構成するブロックの各々におけるメモリセクタは、ユニットとしてまとめて消去できる、請求項1〜14の何れかに記載のメモリシステム。
- 前記複数のセクタを構成するブロックの各々におけるメモリセクタは、個別に消去することもできる、請求項15に記載のメモリシステム。
- 前記コントローラは、前記メモリの消去操作を制御することにより、複数のメモリセクタから構成されるブロック全体のみを消去するように構成され、複数のセクタから構成されるブロックは、その中のメモリセクタが全て消去セクタである場合は、前記コントローラによって消去ブロックとして処理される、請求項1〜16の何れかに記載のメモリシステム。
- 1つのブロックが1個または2個以上の不良セクタを含んでいる場合、前記コントローラがそのブロック全体を不良と定義し、非消去ブロックとして処理し、それによりデータがそのブロックに書き込みされない、請求項17に記載のメモリシステム。
- 1つのブロックが1個または2個以上の不良セクタを含んでいる場合、前記コントローラがそのブロックを消去ブロックとして処理し、それにより前記コントローラは前記ブロック内の良好セクタをデータ保存用に使用することができ、前記メモリシステムは不良セクタを識別するテーブルを含み、前記コントローラは、前記ライトポインタ(WP)が移動する次のセクタアドレスが不良セクタのアドレスであるかどうかをチェックし、不良セクタのアドレスである場合は、前記ライトポインタを、その不良セクタをスキップし、書き込みが行われるセクタの所定の順序に従って次のセクタアドレスに移動するように制御するように、構成される、請求項16に記載のメモリシステム。
- 前記複数のセクタから構成されるブロックは各々、前記メモリ内での自身の物理的位置を定義する物理ブロックアドレスを有し、前記メモリセクタの各々の物理アドレスは、それが位置するブロックの物理ブロックアドレスを含み、前記コントローラは、消去用として処理されるセクタから構成されるブロックの少なくとも何個かの物理ブロックアドレスのリストであって、ブロック内を前記WPが移動する順番に並べられたリストを生成するように構成され、前記リストは、前記コントローラにより使用されて、書き込みが行われるセクタから構成される次のブロックを素早く識別し、前記メモリシステムは、一時的記憶手段をさらに含み、前記リストは、前記コントローラにより、前記一時的記憶手段に保存される、請求項1〜19の何れかに記載のメモリシステム。
- 前記コントローラは、以前に別のセクタに書き込みされた旧データを伝えるセクタ書き込みコマンドを前記ホストプロセッサから前記コントローラが受け取ると、その時点の旧データを含んでいるセクタのアドレスを前記コントローラが前記メモリシステムの一時的記憶域に保存するように、構成される、請求項1〜20の何れかに記載のメモリシステム。
- 前記コントローラは、前記ホストプロセッサからユーザにより生成されたセクタ除去コマンドを前記コントローラが受け取ると、除去すべきセクタを前記コントローラが廃棄としてマークし、かつ、前記セクタのアドレスを前記一時的記憶域に保存するように、さらに構成されている、請求項21に記載のメモリシステム。
- 前記コントローラは、いかなる場合も、前記ライトポインタ(WP)によって書き込みされた旧データを含んでいる1個または2個以上のセクタを含むブロック(以下、これをカレントオブソリートブロック(COB)と称す)を予め決められた数しか容認せず、その結果、前記COB内の全てのセクタが旧データを含むと、前記COBは即座に消去されるように、構成される、請求項21または22に記載のメモリシステム。
- 前記コントローラは、前記COB以外のブロックにあるセクタが旧データを含む場合、前記コントローラが前記COB内の有効(非廃棄)セクタにある任意のデータを別のブロックに再配置し、その後前記COBを消去し、前記COB以外のブロックにある前記セクタを廃棄としてマークし、前記別のブロックを新しいCOBとして指定するように、構成される、請求項23に記載のメモリシステム。
- 前記予め決められたCOBの数が1である、請求項23または24に記載のメモリシステム。
- 前記コントローラが前記有効データを再配置するブロックは、前記WPがその時点で位置するブロックである、請求項24に記載のメモリシステム。
- 前記メモリシステムは、前記有効データが再配置されるセクタの物理アドレスを指し示すために別のライトポインタ(以下、リロケーションポインタ(RP)と称す)を備え、前記RPは常に前記ライトポインタ(WP)とは異なる複数のセクタから構成されるブロックに位置する、請求項24に記載のメモリシステム。
- 前記メモリシステムは、前記ホストプロセッサからのシステムデータが書き込まれるセクタの物理アドレスを指し示すためにさらに別のライトポインタ(以下、システムライトポインタ(SWP)と称す)を備え、前記SWPは常に前記ライトポインタ(WP)とは異なるブロックに位置する、請求項27に記載のメモリシステム。
- 前記コントローラは、1つまたは2つ以上の廃棄セクタを含む少なくとも2個のブロックが任意のときに存在することを容認するように構成され、一方は前記COBであり、他方は1つまたは2つ以上の旧システムデータセクタを含むカレント・オブソリート・システム・ブロック(COSB)であり、前記COSBの消去を容認するために任意のシステムデータセクタを再配置することが必要になった場合、前記再配置されたシステムデータは、前記システムライトポインタ(SWP)がその時点で指示するアドレスに送られる、請求項28に記載のメモリシステム。
- 前記メモリシステムは、有効システムデータが再配置されるセクタの物理アドレスを指し示すためにさらに別のライトポインタ(以下、システムリロケーションポインタ(SRP)と称す)を備え、前記SRPは常に前記ライトポインタ(WP)および前記システムライトポインタ(SWP)とは異なる複数のセクタから構成されるブロックに位置する、請求項28に記載のメモリシステム。
- データが既に別のブロックにおいて廃棄されていることが理由で前記コントローラによる前記COBの消去が必要なときに前記COBが前記ライトポインタのうち1つを含んでいる場合、前記コントローラは新しいCOBの作成を実行する一方、旧COBの消去を保留する(以下、保留オブソリートブロック(POB)と称す)ように構成され、これは前記POB内の全消去セクタが充填され、かつ、前記コントローラの定義に従って前記ポインタが次に使用される消去ブロックに移動するまで保留され、ポインタが次に使用される消去ブロックに移動するとき前記POB内の任意の有効(非廃棄)データは前記コントローラによって再配置され、前記POBが消去される、請求項28〜30の何れかに記載のメモリシステム。
- 前記コントローラは、前記メモリシステムの一時的記憶域に、前記SATが最後に更新されてから、再配置されたデータが前記RPにより書き込まれた前記メモリ内のセクタに対応する論理セクタアドレスのリスト(以下、リロケーションセクタリストまたはRSLと称す)と、前記SATが最後に更新されてから、再配置されたデータが前記SWPにより書き込まれた前記メモリ内のセクタに対応する論理セクタアドレスのリスト(以下、ライトシステムセクタリストまたはWSSLと称す)と、前記SATが最後に更新されてから、再配置されたデータが前記SRPにより書き込まれた前記メモリ内のセクタに対応する論理セクタアドレスのリスト(以下、システムリロケーションセクタリストまたはSRSLと称す)とを保存するように、構成され、前記コントローラはさらに、前記一時的記憶域に、前記RPにより使用されたブロックの順序のリスト(以下、リロケーションブロックリスト(RBL)と称す)と、前記SWPにより使用されたブロックの順序のリスト(以下、ライトシステムブロックリスト(WSBL)と称す)と、前記SRPにより使用されたブロックの順序のリスト(以下、システムリロケーションブロックリスト(SRBL)と称す)とを保存するように構成される、請求項30に記載のメモリシステム。
- 前記ホストプロセッサからの前記メモリへのデータ構造の書き込みに加えて、前記コントローラは、制御情報として示されるメモリデータの生成および書き込みを行い、前記コントローラはまた、前記ホストプロセッサから受け取ったデータ構造が書き込まれる複数のメモリセクタから構成されるブロックのうち、1個または2個以上の異なるブロック(制御ブロックまたはCB)に前記制御情報を書き込むように構成される、請求項1〜32の何れかに記載のメモリシステム。
- 前記コントローラは、全SATブロックのブロックアドレスのリストを少なくとも1個の前記制御ブロックに記憶するように構成される、請求項33に記載のメモリシステム。
- 前記コントローラは前記1個または2個以上の制御ブロックのブロックアドレスを前記メモリの専用ブロック(ブートブロックまたはBB)に記憶するように構成され、前記専用ブロックは、メモリセクタがいかなる不良セクタも含んでいない、前記メモリの複数のセクタから構成される最初のブロックである、請求項33または34に記載のメモリシステム。
- SATブロックの個別セクタの修正バージョンを含んでいる、複数のセクタから構成される少なくとも1つのブロック(ASB)が提供され、全SATブロックアドレスの前記リストは複数のリスト部(テーブルブロックリストまたはTBL)の形式であり、かつ、各リスト部が論理的に連続する一群のSATブロックおよびそれに対応するASBのブロックアドレスを含む、請求項34に記載のメモリシステム。
- 前記コントローラは、前記SATが最後に更新されてから前記ライトポインタ(WP)によって書き込みされたデータ構造用の論理セクタアドレスのリスト(ライトセクタリストまたはWSL)を前記メモリシステムの一時的記憶域に保存するように構成される、請求項7〜9の何れかに記載のメモリシステム。
- 前記コントローラは、前記SATが最後に更新されてからデータを書き込むために前記ライトポインタ(WP)によって使用されたブロックの順番を前記一時的記憶域に保存するように構成され、この順番は、アドレスが前記WSLに保持された更新されたセクタが配置されるブロックのブロックアドレスのリスト(ライトブロックリストまたはWBL)の形式で記憶される、請求項37に記載のメモリシステム。
- 前記WSLは、予め決められた大きさを有し、ひとたび前記WSLが一杯になると、少なくとも1個のSATブロックまたはASBブロックが更新され、前記WSLおよび前記WBLが空になる、請求項38に記載のメモリシステム。
- 前記セクタは各々メモリの単一“ページ”、すなわち、メモリセクタから構成される前記ブロックにあるメモリセルの一列から成る、請求項1〜39の何れかに記載のメモリシステム。
- 前記コントローラは、均一にサイズ設定されたデータセグメント内のメモリセクタに対してデータを書き込み、また、前記メモリセクタからデータを読み込むように構成される、請求項1〜40の何れかに記載のメモリシステム。
- 全てのメモリセクタが同一サイズであり、前記データセグメントは各々、前記メモリセクタと均等なサイズである、請求項41に記載のメモリシステム。
- 一時的キャッシュメモリをさらに備え、前記コントローラは、前記コントローラがSATから最も新しくアクセスしたSATを含む一群の連続SATエントリーを前記一時的キャッシュメモリに記憶させるように構成される、請求項1〜42の何れかに記載のメモリシステム。
- SATブロックの個別セクタの修正バージョンを含んでいる、複数のセクタから構成される少なくとも1つのブロック(ASB)が提供され、前記ASBブロックのセクタが各々、それが更新するSATブロックのセクタの物理アドレスと、前記SATブロックのセクタの修正バージョンとを含み、前記コントローラは、SATセクタの書き込み操作が実行されるたびに更新される全てのASBブロックとこれらのASBブロックと関連するSATブロックの物理アドレスのリスト(ASBL)を前記一時的キャッシュメモリ内に作成するように構成される、請求項43に記載のメモリシステム。
- 前記固体メモリは単一のメモリチップの形式の単一のメモリアレイを含む、請求項1〜44の何れかに記載のメモリシステム。
- 前記固体メモリは複数のメモリチップで形成されたメモリアレイを含む、請求項1〜44の何れかに記載のメモリシステム。
- 前記固体メモリは複数のメモリチップの形式の複数のメモリアレイを含み、前記コントローラは、複数のメモリチップにあるメモリセクタを複数の仮想ブロックへと形成するように構成され、前記仮想ブロックはそれぞれ、前記メモリチップの各々からのメモリセクタから構成される1個の消去可能ブロックを含み、前記コントローラは、前記仮想ブロックを消去用として処理するものと、非消去用として処理するものとに分別するように構成される、請求項1〜44の何れかに記載のメモリシステム。
- 前記コントローラは、消去用として処理される仮想ブロックのリストを生成することと、これを前記メモリシステムの一時的記憶域に保存することと、また、各々の連続セクタ書き込み操作のために1つのチップから別のチップに移動するように前記ライトポインタ(WP)を制御することであって、この移動は、前記仮想ブロックの1つの消去可能ブロックにある1個のセクタから始まり、前記仮想ブロックの各消去可能ブロックにあるセクタの書き込みが完了するまで、前記仮想ブロック内にあるその他の各消去可能ブロックのセクタを連続して移動し、次に最初のセクタが書き込みされたチップに戻って、前記仮想ブロックがデータで満杯になるまで同様の方法で前記仮想ブロック内の各消去可能ブロックにある別のセクタへの書き込みを続ける、ことと、その後、前記消去用として処理される仮想ブロックのリストに載っている次の仮想ブロックに前記ライトポインタ(WP)を移動することと、この次の仮想ブロックを同様の手法で書き込みすることとを実行するように構成される、請求項47に記載のメモリシステム。
- 前記コントローラは、n回の連続セクタ書き込み操作のたびに前記コントローラが前記ホストプロセッサから受け取った多重セクタ書き込みコマンドを実行するように構成され、nが、前記メモリシステムの固体メモリチップの数より少ないかまたは等しい場合、前記コントローラが前記チップのうちのn個のチップの各々における1個のセクタに実質的に同時に書き込みする、請求項48に記載のメモリシステム。
- 前記コントローラは、前記仮想ブロックにある全ての消去可能ブロックを同時に消去することで任意の前記仮想ブロックの消去を実行するように構成される、請求項48または49に記載のメモリシステム。
- 個別にアドレス可能で、かつ、複数のセクタから構成される消去可能ブロックに配置される非揮発性メモリセクタを有する固体メモリに対して、データ構造の書き込みおよび読み出しを行うコントローラであって、各セクタは、前記メモリ内で自身の物理的位置を定義する物理アドレスを有し、
前記コントローラは、
前記コントローラが使用されるメモリシステムのホストプロセッサから受け取った論理アドレスをメモリ内の前記メモリセクタの物理アドレスに翻訳する手段と、
前記複数のセクタから構成されるブロックを消去用として処理されるブロックと非消去用として処理されるブロックとに分別する手段と、
前記ホストプロセッサからのデータが書き込まれるセクタの物理アドレスを指示するライトポインタ(WP)と
を備え、
前記ライトポインタ(WP)は、消去用として処理される任意のブロックにおけるメモリセクタの物理アドレスをくまなく所定の順番で移動するように、また、ブロックが満杯の場合は、別の消去ブロックに移動するように前記コントローラによって制御され、
前記コントローラは、前記ホストプロセッサからセクタ書き込みコマンドを前記コントローラが受けると、前記ライトポインタ(WP)がその時点で指示する物理アドレスを論理アドレスに割当てることによって、前記コントローラが、前記ホストプロセッサから受け取った論理セクタアドレスをデータが書き込みされる物理アドレスに翻訳するように構成され、
前記コントローラは、前記セクタの前記論理アドレスに対応して当該論理アドレスが翻訳される物理アドレスが格納されるセクタ割当てテーブル(SAT)を生成するように構成され、各論理アドレスは、前記コントローラにより、前記SAT内に対応する物理アドレスを有するように割当てられており、前記コントローラは、前記ホストプロセッサからのデータがメモリセクタに書き込みされる頻度より少ない頻度で前記SATを更新するように構成され、
前記コントローラは、さらに、開始物理セクタアドレスと、SATブロックが最後に更新されてから前記コントローラによりデータが書き込みされたセクタを含んでいるブロック間のリンクとを前記固体メモリの制御ブロックに記憶するように構成され、前記開始物理セクタアドレスは、前記SATが最後に書き込みされたときの前記ライトポインタ(WP)の位置である、コントローラ。 - 個別にアドレス可能で、かつ、複数のセクタから構成される消去可能ブロックに配置される非揮発性メモリセクタを有する固体メモリに対するデータ構造の書き込みおよび読み出しを行うコントローラを制御する方法であって、各セクタは、前記メモリ内で自身の物理的位置を規定する物理アドレスを有し、
前記方法は、
前記複数のセクタから構成されるブロックを消去用として処理されるブロックと非消去用として処理されるブロックとに分別するステップと、
データが書き込まれるセクタの物理アドレスを指示するライトポインタ(WP)を提供し、少なくともライトポインタ(WP)を、消去用として処理される任意のブロックにおけるメモリセクタの物理アドレスをくまなく所定の順番で移動するように、また、ブロックが満杯の場合は、別の消去ブロックに移動するように制御し、ホストプロセッサからセクタ書き込みコマンドを受けると、前記ライトポインタ(WP)がその時点で指示する物理アドレスを論理アドレスに割当てることによって、前記ホストプロセッサから受け取った論理アドレスをデータが書き込みされる物理アドレスに翻訳するステップと、
前記セクタの前記論理アドレスに対応して当該論理アドレスが翻訳される物理アドレスが格納されるセクタ割当てテーブル(SAT)を非揮発性固体メモリに記憶するステップであって、各論理アドレスは、前記コントローラにより、前記SAT内に対応する物理アドレスを有するように割当てられている、ステップと、
前記ホストプロセッサからのデータがメモリセクタに書き込みされる頻度より少ない頻度で前記SATを更新するステップと、
開始物理セクタアドレスと、SATブロックが最後に更新されてから前記コントローラによりデータが書き込みされたセクタを含んでいるブロック間のリンクとを前記固体メモリの制御ブロックに記憶し、前記開始物理セクタアドレスは、前記SATが最後に書き込みされたときの前記ライトポインタ(WP)の位置であるステップ
を含む、方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9903490.2 | 1999-02-17 | ||
GBGB9903490.2A GB9903490D0 (en) | 1999-02-17 | 1999-02-17 | Memory system |
PCT/GB2000/000550 WO2000049488A1 (en) | 1999-02-17 | 2000-02-17 | Memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002537596A JP2002537596A (ja) | 2002-11-05 |
JP5011498B2 true JP5011498B2 (ja) | 2012-08-29 |
Family
ID=10847858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000600167A Expired - Lifetime JP5011498B2 (ja) | 1999-02-17 | 2000-02-17 | メモリシステム |
Country Status (8)
Country | Link |
---|---|
US (1) | US6725321B1 (ja) |
EP (1) | EP1157328B1 (ja) |
JP (1) | JP5011498B2 (ja) |
KR (1) | KR100644805B1 (ja) |
DE (1) | DE60019903T2 (ja) |
GB (1) | GB9903490D0 (ja) |
TW (1) | TWI244092B (ja) |
WO (1) | WO2000049488A1 (ja) |
Families Citing this family (264)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728851B1 (en) | 1995-07-31 | 2004-04-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US8171203B2 (en) * | 1995-07-31 | 2012-05-01 | Micron Technology, Inc. | Faster write operations to nonvolatile memory using FSInfo sector manipulation |
US6978342B1 (en) | 1995-07-31 | 2005-12-20 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US5845313A (en) | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
US6148354A (en) | 1999-04-05 | 2000-11-14 | M-Systems Flash Disk Pioneers Ltd. | Architecture for a universal serial bus-based PC flash disk |
JP3524428B2 (ja) * | 1999-04-20 | 2004-05-10 | 東京エレクトロンデバイス株式会社 | 記憶装置、記憶システム、メモリ管理方法及び記録媒体 |
KR100544175B1 (ko) * | 1999-05-08 | 2006-01-23 | 삼성전자주식회사 | 링킹 타입 정보를 저장하는 기록 매체와 결함 영역 처리 방법 |
US7934074B2 (en) * | 1999-08-04 | 2011-04-26 | Super Talent Electronics | Flash module with plane-interleaved sequential writes to restricted-write flash chips |
US7702831B2 (en) * | 2000-01-06 | 2010-04-20 | Super Talent Electronics, Inc. | Flash memory controller for electronic data flash card |
US7966462B2 (en) * | 1999-08-04 | 2011-06-21 | Super Talent Electronics, Inc. | Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips |
MXPA02004748A (es) * | 1999-11-10 | 2004-01-19 | Thomson Licensing Sa | Un metodo para la recuperacion de desastre para un medio de disco de re-escritrua. |
US20060161725A1 (en) * | 2005-01-20 | 2006-07-20 | Lee Charles C | Multiple function flash memory system |
US7102671B1 (en) | 2000-02-08 | 2006-09-05 | Lexar Media, Inc. | Enhanced compact flash memory card |
US6426893B1 (en) | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
US6654847B1 (en) * | 2000-06-30 | 2003-11-25 | Micron Technology, Inc. | Top/bottom symmetrical protection scheme for flash |
US7167944B1 (en) | 2000-07-21 | 2007-01-23 | Lexar Media, Inc. | Block management for mass storage |
US6684289B1 (en) * | 2000-11-22 | 2004-01-27 | Sandisk Corporation | Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory |
US7072981B1 (en) | 2000-12-21 | 2006-07-04 | Cisco Technology, Inc. | Preallocation of client network address translation addresses for client-server networks |
US7089328B1 (en) * | 2000-12-29 | 2006-08-08 | Cisco Technology, Inc. | Method allocation scheme for maintaining server load balancers services in a high throughput environment |
US6763424B2 (en) * | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
GB0123410D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system for data storage and retrieval |
US6678785B2 (en) * | 2001-09-28 | 2004-01-13 | M-Systems Flash Disk Pioneers Ltd. | Flash management system using only sequential write |
GB0123415D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
GB0123416D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Non-volatile memory control |
GB0123417D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Improved data processing |
GB0123421D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Power management system |
JP3981268B2 (ja) * | 2001-12-28 | 2007-09-26 | 日本電産サンキョー株式会社 | 不揮発性メモリ及びそのデータ更新方法 |
US7231643B1 (en) | 2002-02-22 | 2007-06-12 | Lexar Media, Inc. | Image rescue system including direct communication between an application program and a device driver |
US7533214B2 (en) | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
US6901499B2 (en) | 2002-02-27 | 2005-05-31 | Microsoft Corp. | System and method for tracking data stored in a flash memory device |
US7065531B2 (en) * | 2002-03-12 | 2006-06-20 | Hewlett-Packard Development Company, L.P. | Combining computer programs |
US20060143365A1 (en) * | 2002-06-19 | 2006-06-29 | Tokyo Electron Device Limited | Memory device, memory managing method and program |
DE10256509B4 (de) * | 2002-06-19 | 2008-06-12 | Hyperstone Gmbh | Verfahren zum Adressieren von blockweise löschbaren Speichern |
DE10227255B4 (de) * | 2002-06-19 | 2008-06-26 | Hyperstone Gmbh | Verfahren zur Wiederherstellung von Verwaltungsdatensätzen eines blockweise löschbaren Speichers |
US7242632B2 (en) | 2002-06-20 | 2007-07-10 | Tokyo Electron Device Limited | Memory device, memory managing method and program |
US6970969B2 (en) * | 2002-08-29 | 2005-11-29 | Micron Technology, Inc. | Multiple segment data object management |
US6968439B2 (en) | 2002-08-29 | 2005-11-22 | Micron Technology, Inc. | Single segment data object management |
US7130979B2 (en) * | 2002-08-29 | 2006-10-31 | Micron Technology, Inc. | Dynamic volume management |
US20040049628A1 (en) * | 2002-09-10 | 2004-03-11 | Fong-Long Lin | Multi-tasking non-volatile memory subsystem |
US20040128464A1 (en) * | 2002-12-30 | 2004-07-01 | Lee Micheil J. | Memory reclamation |
US20040128414A1 (en) * | 2002-12-30 | 2004-07-01 | Rudelic John C. | Using system memory as a write buffer for a non-volatile memory |
FI117489B (fi) | 2003-02-07 | 2006-10-31 | Nokia Corp | Menetelmä muistikortin osoittamiseksi, muistikorttia käyttävä järjestelmä, ja muistikortti |
JP2004265162A (ja) * | 2003-03-03 | 2004-09-24 | Renesas Technology Corp | 記憶装置およびアドレス管理方法 |
TWI220474B (en) * | 2003-03-12 | 2004-08-21 | Glovic Electronics Corp | Physical page allocation method of flash memory |
DE10319271A1 (de) * | 2003-04-29 | 2004-11-25 | Infineon Technologies Ag | Speicher-Schaltungsanordnung und Verfahren zur Herstellung |
US7664987B2 (en) * | 2003-05-25 | 2010-02-16 | Sandisk Il Ltd. | Flash memory device with fast reading rate |
KR100546348B1 (ko) * | 2003-07-23 | 2006-01-26 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그 데이터 저장 방법 |
US7752380B2 (en) * | 2003-07-31 | 2010-07-06 | Sandisk Il Ltd | SDRAM memory device with an embedded NAND flash controller |
JP2005085011A (ja) * | 2003-09-09 | 2005-03-31 | Renesas Technology Corp | 不揮発性メモリ制御装置 |
JP2005108304A (ja) * | 2003-09-29 | 2005-04-21 | Toshiba Corp | 半導体記憶装置及びその制御方法 |
US7173852B2 (en) * | 2003-10-03 | 2007-02-06 | Sandisk Corporation | Corrected data storage and handling methods |
US7073016B2 (en) * | 2003-10-09 | 2006-07-04 | Micron Technology, Inc. | Random access interface in a serial memory device |
DE10349595B3 (de) | 2003-10-24 | 2004-12-09 | Hyperstone Ag | Verfahren zum Schreiben von Speichersektoren in einem blockweise löschbaren Speicher |
EP1695304A4 (en) | 2003-12-17 | 2011-09-28 | Lexar Media Inc | POINT-OF-SALE ACTIVATION OF ELECTRONIC DEVICES TO AVOID THEFT |
JP4567966B2 (ja) * | 2003-12-22 | 2010-10-27 | 株式会社東芝 | エミュレーションシステムおよびエミュレーション方法 |
US7433993B2 (en) * | 2003-12-30 | 2008-10-07 | San Disk Corportion | Adaptive metablocks |
US7383375B2 (en) | 2003-12-30 | 2008-06-03 | Sandisk Corporation | Data run programming |
US20050144363A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Data boundary management |
US20050144516A1 (en) | 2003-12-30 | 2005-06-30 | Gonzalez Carlos J. | Adaptive deterministic grouping of blocks into multi-block units |
US7173863B2 (en) * | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
US7139864B2 (en) * | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
EP1758027B1 (en) | 2003-12-30 | 2010-07-14 | SanDisk Corporation | Non-volatile memory and method with control data management |
US7484070B1 (en) | 2004-01-09 | 2009-01-27 | Conexant Systems, Inc. | Selective memory block remapping |
US7607177B2 (en) * | 2004-02-23 | 2009-10-20 | Micron Technology, Inc. | Secure compact flash |
US20080147964A1 (en) * | 2004-02-26 | 2008-06-19 | Chow David Q | Using various flash memory cells to build usb data flash cards with multiple partitions and autorun function |
US7725628B1 (en) | 2004-04-20 | 2010-05-25 | Lexar Media, Inc. | Direct secondary device interface by a host |
US7370166B1 (en) | 2004-04-30 | 2008-05-06 | Lexar Media, Inc. | Secure portable storage device |
US7490283B2 (en) | 2004-05-13 | 2009-02-10 | Sandisk Corporation | Pipelined data relocation and improved chip architectures |
US7194596B2 (en) * | 2004-06-09 | 2007-03-20 | Simpletech Global Limited | Method of efficient data management with flash storage system |
US8607016B2 (en) | 2004-07-21 | 2013-12-10 | Sandisk Technologies Inc. | FAT analysis for optimized sequential cluster management |
US7395384B2 (en) * | 2004-07-21 | 2008-07-01 | Sandisk Corproation | Method and apparatus for maintaining data on non-volatile memory systems |
US7464306B1 (en) | 2004-08-27 | 2008-12-09 | Lexar Media, Inc. | Status of overall health of nonvolatile memory |
US7594063B1 (en) | 2004-08-27 | 2009-09-22 | Lexar Media, Inc. | Storage capacity status |
WO2006024328A1 (de) * | 2004-09-02 | 2006-03-09 | Hyperstone Ag | Verfahren zur verwaltung von speicherinformationen |
US7509526B2 (en) * | 2004-09-24 | 2009-03-24 | Seiko Epson Corporation | Method of correcting NAND memory blocks and to a printing device employing the method |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
JP2008033379A (ja) * | 2004-11-10 | 2008-02-14 | Matsushita Electric Ind Co Ltd | 不揮発性記憶装置 |
JP2006146460A (ja) * | 2004-11-18 | 2006-06-08 | Sony Corp | 通信システム、記憶装置、並びに制御装置 |
US7120051B2 (en) | 2004-12-14 | 2006-10-10 | Sandisk Corporation | Pipelined programming of non-volatile memories using early data |
US7158421B2 (en) | 2005-04-01 | 2007-01-02 | Sandisk Corporation | Use of data latches in multi-phase programming of non-volatile memories |
US7420847B2 (en) | 2004-12-14 | 2008-09-02 | Sandisk Corporation | Multi-state memory having data recovery after program fail |
US7315916B2 (en) * | 2004-12-16 | 2008-01-01 | Sandisk Corporation | Scratch pad block |
US7386655B2 (en) * | 2004-12-16 | 2008-06-10 | Sandisk Corporation | Non-volatile memory and method with improved indexing for scratch pad and update blocks |
US7366826B2 (en) * | 2004-12-16 | 2008-04-29 | Sandisk Corporation | Non-volatile memory and method with multi-stream update tracking |
US7395404B2 (en) | 2004-12-16 | 2008-07-01 | Sandisk Corporation | Cluster auto-alignment for storing addressable data packets in a non-volatile memory array |
US7412560B2 (en) * | 2004-12-16 | 2008-08-12 | Sandisk Corporation | Non-volatile memory and method with multi-stream updating |
US7882299B2 (en) * | 2004-12-21 | 2011-02-01 | Sandisk Corporation | System and method for use of on-chip non-volatile memory write cache |
US7849381B2 (en) | 2004-12-21 | 2010-12-07 | Sandisk Corporation | Method for copying data in reprogrammable non-volatile memory |
KR100876084B1 (ko) * | 2007-02-13 | 2008-12-26 | 삼성전자주식회사 | 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템 |
US7409473B2 (en) | 2004-12-21 | 2008-08-05 | Sandisk Corporation | Off-chip data relocation |
US8667249B2 (en) | 2004-12-22 | 2014-03-04 | Intel Corporation | Systems and methods exchanging data between processors through concurrent shared memory |
EP1830366B1 (en) * | 2004-12-24 | 2011-07-13 | Spansion Japan Limited | Bias application method of storage and storage |
US7212440B2 (en) | 2004-12-30 | 2007-05-01 | Sandisk Corporation | On-chip data grouping and alignment |
US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US9104315B2 (en) | 2005-02-04 | 2015-08-11 | Sandisk Technologies Inc. | Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage |
JP2008530683A (ja) * | 2005-02-11 | 2008-08-07 | サンディスク アイエル リミテッド | Nandフラッシュメモリ・システム・アーキテクチャ |
US7627712B2 (en) * | 2005-03-22 | 2009-12-01 | Sigmatel, Inc. | Method and system for managing multi-plane memory devices |
US7206230B2 (en) | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
US7463521B2 (en) | 2005-04-01 | 2008-12-09 | Sandisk Corporation | Method for non-volatile memory with managed execution of cached data |
US7447078B2 (en) | 2005-04-01 | 2008-11-04 | Sandisk Corporation | Method for non-volatile memory with background data latch caching during read operations |
KR100666174B1 (ko) * | 2005-04-27 | 2007-01-09 | 삼성전자주식회사 | 3-레벨 불휘발성 반도체 메모리 장치 및 이에 대한구동방법 |
US7788555B2 (en) * | 2005-07-22 | 2010-08-31 | Broadcom Corporation | Using fractional sectors for mapping defects in disk drives |
US7480766B2 (en) | 2005-08-03 | 2009-01-20 | Sandisk Corporation | Interfacing systems operating through a logical address space and on a direct data file basis |
US7627733B2 (en) | 2005-08-03 | 2009-12-01 | Sandisk Corporation | Method and system for dual mode access for storage devices |
US7552271B2 (en) | 2005-08-03 | 2009-06-23 | Sandisk Corporation | Nonvolatile memory with block management |
US7669003B2 (en) | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
US7949845B2 (en) | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
US7558906B2 (en) | 2005-08-03 | 2009-07-07 | Sandisk Corporation | Methods of managing blocks in nonvolatile memory |
US7984084B2 (en) | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
TWI295771B (en) * | 2005-08-08 | 2008-04-11 | Rdc Semiconductor Co Ltd | Faulty storage area self markup access control method and system |
KR100739722B1 (ko) * | 2005-08-20 | 2007-07-13 | 삼성전자주식회사 | 플래시 메모리 관리 방법 및 플래시 메모리 시스템 |
US7512864B2 (en) * | 2005-09-30 | 2009-03-31 | Josef Zeevi | System and method of accessing non-volatile computer memory |
US20070083697A1 (en) * | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Flash memory management |
US7529905B2 (en) | 2005-10-13 | 2009-05-05 | Sandisk Corporation | Method of storing transformed units of data in a memory system having fixed sized storage blocks |
US7631162B2 (en) | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
US7509471B2 (en) | 2005-10-27 | 2009-03-24 | Sandisk Corporation | Methods for adaptively handling data writes in non-volatile memories |
US7877540B2 (en) | 2005-12-13 | 2011-01-25 | Sandisk Corporation | Logically-addressed file storage methods |
JP2007164929A (ja) * | 2005-12-16 | 2007-06-28 | Fujitsu Ltd | 記憶媒体管理装置、記憶媒体管理プログラム、記憶媒体管理方法 |
US20070143567A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Methods for data alignment in non-volatile memories with a directly mapped file storage system |
US20070143560A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with memory allocation for a directly mapped file storage system |
US20070156998A1 (en) * | 2005-12-21 | 2007-07-05 | Gorobets Sergey A | Methods for memory allocation in non-volatile memories with a directly mapped file storage system |
US20070143566A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with data alignment in a directly mapped file storage system |
JP2009521045A (ja) * | 2005-12-21 | 2009-05-28 | エヌエックスピー ビー ヴィ | ブロック消去可能なメモリ場所を有する不揮発性メモリ |
WO2007073536A2 (en) * | 2005-12-21 | 2007-06-28 | Sandisk Corporation | Non-volatile memories and methods with memory allocation for a directly mapped file storage system |
US20100299494A1 (en) * | 2005-12-22 | 2010-11-25 | Nxp B.V. | Memory with block-erasable locations and a linked chain of pointers to locate blocks with pointer information |
US7543116B2 (en) * | 2006-01-30 | 2009-06-02 | International Business Machines Corporation | Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains |
KR100776112B1 (ko) * | 2006-02-15 | 2007-11-15 | 삼성전자주식회사 | 휴대단말기의 부팅 시간 단축방법 |
JP2007241539A (ja) * | 2006-03-07 | 2007-09-20 | Hitachi Systems & Services Ltd | 半導体フラッシュメモリにおけるデータ管理及び制御システムと半導体フラッシュメモリ収容装置 |
US7562180B2 (en) * | 2006-03-28 | 2009-07-14 | Nokia Corporation | Method and device for reduced read latency of non-volatile memory |
TWM304711U (en) * | 2006-04-26 | 2007-01-11 | Genesys Logic Inc | Flash memory data access reliability enhancing device |
US8060718B2 (en) * | 2006-06-20 | 2011-11-15 | International Business Machines | Updating a memory to maintain even wear |
JP2008004196A (ja) * | 2006-06-23 | 2008-01-10 | Toppan Printing Co Ltd | 半導体メモリ装置 |
KR100758301B1 (ko) * | 2006-08-04 | 2007-09-12 | 삼성전자주식회사 | 메모리 카드 및 그것의 데이터 저장 방법 |
KR20080017982A (ko) * | 2006-08-23 | 2008-02-27 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그 프로그램 방법 |
US7779056B2 (en) | 2006-09-15 | 2010-08-17 | Sandisk Corporation | Managing a pool of update memory blocks based on each block's activity and data order |
US7774392B2 (en) | 2006-09-15 | 2010-08-10 | Sandisk Corporation | Non-volatile memory with management of a pool of update memory blocks based on each block's activity and data order |
US7949846B2 (en) * | 2006-11-30 | 2011-05-24 | Teradata Us, Inc. | Map shuffle-allocation map protection without extra I/O'S using minimal extra disk space |
US8074011B2 (en) * | 2006-12-06 | 2011-12-06 | Fusion-Io, Inc. | Apparatus, system, and method for storage space recovery after reaching a read count limit |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US9495241B2 (en) | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
US9116823B2 (en) | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
KR20090087498A (ko) | 2006-12-06 | 2009-08-17 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 고-용량, 비-휘발성 스토리지를 위한 캐시로서의 솔리드-스테이트 스토리지 장치, 시스템 및 방법 |
US7515500B2 (en) * | 2006-12-20 | 2009-04-07 | Nokia Corporation | Memory device performance enhancement through pre-erase mechanism |
KR100877609B1 (ko) * | 2007-01-29 | 2009-01-09 | 삼성전자주식회사 | 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법 |
KR100869675B1 (ko) * | 2007-02-05 | 2008-11-21 | 지인정보기술 주식회사 | 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법 |
US7716230B2 (en) * | 2007-02-07 | 2010-05-11 | International Business Machines Corporation | Multi-dimensional serial containment process |
US8370715B2 (en) * | 2007-04-12 | 2013-02-05 | International Business Machines Corporation | Error checking addressable blocks in storage |
US7689762B2 (en) * | 2007-05-03 | 2010-03-30 | Atmel Corporation | Storage device wear leveling |
EP2000913A1 (en) * | 2007-06-08 | 2008-12-10 | Axalto SA | Method of managing flash memory allocation in an electronic token |
US9396103B2 (en) * | 2007-06-08 | 2016-07-19 | Sandisk Technologies Llc | Method and system for storage address re-mapping for a memory device |
US7630246B2 (en) * | 2007-06-18 | 2009-12-08 | Micron Technology, Inc. | Programming rate identification and control in a solid state memory |
TWI578330B (zh) * | 2007-10-09 | 2017-04-11 | A-Data Technology Co Ltd | Solid state semiconductor storage device with temperature control function and control method thereof |
KR101391881B1 (ko) * | 2007-10-23 | 2014-05-07 | 삼성전자주식회사 | 멀티-비트 플래시 메모리 장치 및 그것의 프로그램 및 읽기방법 |
US8195912B2 (en) * | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US8397014B2 (en) * | 2008-02-04 | 2013-03-12 | Apple Inc. | Memory mapping restore and garbage collection operations |
JP4729062B2 (ja) * | 2008-03-07 | 2011-07-20 | 株式会社東芝 | メモリシステム |
US20090271562A1 (en) * | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
US8140739B2 (en) * | 2008-08-08 | 2012-03-20 | Imation Corp. | Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table |
CN101673245B (zh) * | 2008-09-09 | 2016-02-03 | 株式会社东芝 | 包括存储器管理装置的信息处理装置和存储器管理方法 |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
TWI380310B (en) * | 2008-09-17 | 2012-12-21 | Incomm Technologies Co Ltd | Operating method of memory card |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
WO2010043245A1 (de) * | 2008-10-13 | 2010-04-22 | Hyperstone Gmbh | Verfahren zur sicherung eines ankerblocks in flashspeichern |
TWI413984B (zh) * | 2008-10-16 | 2013-11-01 | Silicon Motion Inc | 快閃記憶體裝置以及資料更新方法 |
US9063874B2 (en) | 2008-11-10 | 2015-06-23 | SanDisk Technologies, Inc. | Apparatus, system, and method for wear management |
KR20110086725A (ko) * | 2008-11-10 | 2011-07-29 | 퓨전-아이오, 인크. | 솔리드-스테이트 저장장치의 고장을 예측하는 장치, 시스템 및 방법 |
US8244960B2 (en) | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8094500B2 (en) | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
KR101760144B1 (ko) | 2009-01-05 | 2017-07-31 | 샌디스크 테크놀로지스 엘엘씨 | 비휘발성 메모리 및 기록 캐시를 분할하는 방법 |
US8040744B2 (en) | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US8700840B2 (en) | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US8412880B2 (en) * | 2009-01-08 | 2013-04-02 | Micron Technology, Inc. | Memory system controller to manage wear leveling across a plurality of storage nodes |
US8924661B1 (en) * | 2009-01-18 | 2014-12-30 | Apple Inc. | Memory system including a controller and processors associated with memory devices |
JP5384965B2 (ja) * | 2009-02-23 | 2014-01-08 | サトーホールディングス株式会社 | プリンタ装置 |
TWI419169B (zh) * | 2009-04-10 | 2013-12-11 | Phison Electronics Corp | 用於快閃記憶體的資料存取方法及其儲存系統與控制器 |
US8341501B2 (en) | 2009-04-30 | 2012-12-25 | International Business Machines Corporation | Adaptive endurance coding of non-volatile memories |
US20110002169A1 (en) | 2009-07-06 | 2011-01-06 | Yan Li | Bad Column Management with Bit Information in Non-Volatile Memory Systems |
CN102498475A (zh) * | 2009-07-10 | 2012-06-13 | 柰米闪芯积体电路有限公司 | 高速高密度以nand为基础的双晶体管-nor闪存的新构成 |
TWI421871B (zh) * | 2009-11-27 | 2014-01-01 | Macronix Int Co Ltd | 定址一記憶積體電路之方法與裝置 |
US8176235B2 (en) * | 2009-12-04 | 2012-05-08 | International Business Machines Corporation | Non-volatile memories with enhanced write performance and endurance |
US8176234B2 (en) * | 2009-12-04 | 2012-05-08 | International Business Machines Corporation | Multi-write coding of non-volatile memories |
US8473669B2 (en) * | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8144512B2 (en) | 2009-12-18 | 2012-03-27 | Sandisk Technologies Inc. | Data transfer flows for on-chip folding |
US20110153912A1 (en) | 2009-12-18 | 2011-06-23 | Sergey Anatolievich Gorobets | Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory |
US8468294B2 (en) | 2009-12-18 | 2013-06-18 | Sandisk Technologies Inc. | Non-volatile memory with multi-gear control using on-chip folding of data |
FR2954538B1 (fr) * | 2009-12-23 | 2020-04-17 | Thales | Securisation de l'effacement d'une memoire de type flashprom. |
FR2954572B1 (fr) * | 2009-12-23 | 2020-04-17 | Thales | Procede de gestion de donnees tournantes. |
US8429391B2 (en) * | 2010-04-16 | 2013-04-23 | Micron Technology, Inc. | Boot partitions in memory devices and systems |
US8543757B2 (en) | 2010-06-23 | 2013-09-24 | Sandisk Technologies Inc. | Techniques of maintaining logical to physical mapping information in non-volatile memory systems |
US8417876B2 (en) | 2010-06-23 | 2013-04-09 | Sandisk Technologies Inc. | Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems |
US20120008414A1 (en) * | 2010-07-06 | 2012-01-12 | Michael Katz | Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system |
US8832507B2 (en) * | 2010-08-23 | 2014-09-09 | Apple Inc. | Systems and methods for generating dynamic super blocks |
US8452911B2 (en) | 2010-09-30 | 2013-05-28 | Sandisk Technologies Inc. | Synchronized maintenance operations in a multi-bank storage system |
US8769374B2 (en) | 2010-10-13 | 2014-07-01 | International Business Machines Corporation | Multi-write endurance and error control coding of non-volatile memories |
WO2012083308A2 (en) | 2010-12-17 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
JP5221699B2 (ja) * | 2011-03-23 | 2013-06-26 | 株式会社東芝 | 半導体記憶装置 |
US9342446B2 (en) | 2011-03-29 | 2016-05-17 | SanDisk Technologies, Inc. | Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache |
US9218852B2 (en) | 2011-06-30 | 2015-12-22 | Sandisk Technologies Inc. | Smart bridge for memory core |
JP5677336B2 (ja) * | 2011-08-01 | 2015-02-25 | 株式会社東芝 | メモリ・デバイス |
US9009436B2 (en) | 2011-08-09 | 2015-04-14 | SanDisk Technologies, Inc. | Flushed data alignment with physical structures |
CN102298555B (zh) * | 2011-08-22 | 2016-04-27 | 宜兴市华星特种陶瓷科技有限公司 | 基于nand技术的模块化闪存管理系统 |
US8874935B2 (en) | 2011-08-30 | 2014-10-28 | Microsoft Corporation | Sector map-based rapid data encryption policy compliance |
US9208070B2 (en) | 2011-12-20 | 2015-12-08 | Sandisk Technologies Inc. | Wear leveling of multiple memory devices |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
US10019353B2 (en) | 2012-03-02 | 2018-07-10 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for referencing data on a storage medium |
US8842473B2 (en) | 2012-03-15 | 2014-09-23 | Sandisk Technologies Inc. | Techniques for accessing column selecting shift register with skipped entries in non-volatile memories |
US9792192B1 (en) | 2012-03-29 | 2017-10-17 | Amazon Technologies, Inc. | Client-side, variable drive health determination |
US9037921B1 (en) * | 2012-03-29 | 2015-05-19 | Amazon Technologies, Inc. | Variable drive health determination and data placement |
US8972799B1 (en) | 2012-03-29 | 2015-03-03 | Amazon Technologies, Inc. | Variable drive diagnostics |
US8719320B1 (en) | 2012-03-29 | 2014-05-06 | Amazon Technologies, Inc. | Server-side, variable drive health determination |
US9251019B2 (en) | 2012-05-29 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system and method for managing solid-state retirement |
US8897080B2 (en) | 2012-09-28 | 2014-11-25 | Sandisk Technologies Inc. | Variable rate serial to parallel shift register |
US9076506B2 (en) | 2012-09-28 | 2015-07-07 | Sandisk Technologies Inc. | Variable rate parallel to serial shift register |
US9490035B2 (en) | 2012-09-28 | 2016-11-08 | SanDisk Technologies, Inc. | Centralized variable rate serializer and deserializer for bad column management |
US9348746B2 (en) | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer memory |
US9465731B2 (en) | 2012-12-31 | 2016-10-11 | Sandisk Technologies Llc | Multi-layer non-volatile memory system having multiple partitions in a layer |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US8873284B2 (en) | 2012-12-31 | 2014-10-28 | Sandisk Technologies Inc. | Method and system for program scheduling in a multi-layer memory |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9336133B2 (en) | 2012-12-31 | 2016-05-10 | Sandisk Technologies Inc. | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory |
US9734050B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for managing background operations in a multi-layer memory |
US10445229B1 (en) * | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9478271B2 (en) * | 2013-03-14 | 2016-10-25 | Seagate Technology Llc | Nonvolatile memory data recovery after power failure |
US8812744B1 (en) | 2013-03-14 | 2014-08-19 | Microsoft Corporation | Assigning priorities to data for hybrid drives |
CN103197943A (zh) * | 2013-04-11 | 2013-07-10 | 航天科工深圳(集团)有限公司 | 一种单片机在线升级方法和系统 |
US9626126B2 (en) | 2013-04-24 | 2017-04-18 | Microsoft Technology Licensing, Llc | Power saving mode hybrid drive access management |
US9946495B2 (en) | 2013-04-25 | 2018-04-17 | Microsoft Technology Licensing, Llc | Dirty data management for hybrid drives |
US20140344570A1 (en) | 2013-05-20 | 2014-11-20 | Microsoft Corporation | Data Protection For Organizations On Computing Devices |
US9235470B2 (en) | 2013-10-03 | 2016-01-12 | SanDisk Technologies, Inc. | Adaptive EPWR (enhanced post write read) scheduling |
US9436823B1 (en) * | 2013-12-17 | 2016-09-06 | Google Inc. | System and method for detecting malicious code |
US10615967B2 (en) | 2014-03-20 | 2020-04-07 | Microsoft Technology Licensing, Llc | Rapid data protection for storage devices |
US9804922B2 (en) | 2014-07-21 | 2017-10-31 | Sandisk Technologies Llc | Partial bad block detection and re-use using EPWR for block based architectures |
US9825945B2 (en) | 2014-09-09 | 2017-11-21 | Microsoft Technology Licensing, Llc | Preserving data protection with policy |
US10114562B2 (en) | 2014-09-16 | 2018-10-30 | Sandisk Technologies Llc | Adaptive block allocation in nonvolatile memory |
US9853812B2 (en) | 2014-09-17 | 2017-12-26 | Microsoft Technology Licensing, Llc | Secure key management for roaming protected content |
US9934872B2 (en) | 2014-10-30 | 2018-04-03 | Sandisk Technologies Llc | Erase stress and delta erase loop count methods for various fail modes in non-volatile memory |
US9900295B2 (en) | 2014-11-05 | 2018-02-20 | Microsoft Technology Licensing, Llc | Roaming content wipe actions across devices |
US9224502B1 (en) | 2015-01-14 | 2015-12-29 | Sandisk Technologies Inc. | Techniques for detection and treating memory hole to local interconnect marginality defects |
US10032524B2 (en) | 2015-02-09 | 2018-07-24 | Sandisk Technologies Llc | Techniques for determining local interconnect defects |
US9269446B1 (en) | 2015-04-08 | 2016-02-23 | Sandisk Technologies Inc. | Methods to improve programming of slow cells |
US9564219B2 (en) | 2015-04-08 | 2017-02-07 | Sandisk Technologies Llc | Current based detection and recording of memory hole-interconnect spacing defects |
US10635307B2 (en) | 2015-06-30 | 2020-04-28 | International Business Machines Corporation | Memory state indicator |
US10884945B2 (en) | 2015-06-30 | 2021-01-05 | International Business Machines Corporation | Memory state indicator check operations |
US9853820B2 (en) | 2015-06-30 | 2017-12-26 | Microsoft Technology Licensing, Llc | Intelligent deletion of revoked data |
US10248418B2 (en) | 2015-06-30 | 2019-04-02 | International Business Machines Corporation | Cleared memory indicator |
US9900325B2 (en) | 2015-10-09 | 2018-02-20 | Microsoft Technology Licensing, Llc | Passive encryption of organization data |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US10120613B2 (en) | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
US9778855B2 (en) | 2015-10-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for precision interleaving of data writes in a non-volatile memory |
US10042553B2 (en) | 2015-10-30 | 2018-08-07 | Sandisk Technologies Llc | Method and system for programming a multi-layer non-volatile memory having a single fold data path |
US20170344262A1 (en) * | 2016-05-25 | 2017-11-30 | SK Hynix Inc. | Data processing system and method for operating the same |
US10120583B2 (en) * | 2016-06-07 | 2018-11-06 | Facebook, Inc. | Performance penalty avoidance for solid state drive |
US9817593B1 (en) | 2016-07-11 | 2017-11-14 | Sandisk Technologies Llc | Block management in non-volatile memory system with non-blocking control sync system |
KR102270103B1 (ko) * | 2017-07-11 | 2021-06-28 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10416899B2 (en) * | 2018-02-13 | 2019-09-17 | Tesla, Inc. | Systems and methods for low latency hardware memory management |
US11372812B2 (en) * | 2018-10-08 | 2022-06-28 | Silicon Motion, Inc. | Mobile device and method capable of earlier determining that a number of files in a directory of an external connected storage device is about to full |
CN111414248B (zh) * | 2019-01-04 | 2023-03-21 | 阿里巴巴集团控股有限公司 | 内存管理方法、装置及计算设备 |
US11847333B2 (en) * | 2019-07-31 | 2023-12-19 | EMC IP Holding Company, LLC | System and method for sub-block deduplication with search for identical sectors inside a candidate block |
FR3101974B1 (fr) * | 2019-10-15 | 2021-09-10 | Continental Automotive | Procédé d’aide à l’identification de secteurs vierges d’une mémoire non-volatile d’un microcontrôleur |
CN111061649B (zh) * | 2019-10-28 | 2023-09-29 | 宁波三星智能电气有限公司 | 一种存储器的存储空间自适应分配方法 |
US11403020B2 (en) * | 2019-10-31 | 2022-08-02 | Hewlett Packard Enterprise Development Lp | Increasing sizes of buckets of a fingerprint index |
US11922011B2 (en) * | 2021-09-01 | 2024-03-05 | Micron Technology, Inc. | Virtual management unit scheme for two-pass programming in a memory sub-system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06124596A (ja) * | 1991-11-28 | 1994-05-06 | Hitachi Ltd | フラッシュメモリを使用した記憶装置 |
WO1997012325A1 (en) * | 1995-09-27 | 1997-04-03 | Memory Corporation Plc | Memory systems |
WO1998024029A1 (en) * | 1996-11-25 | 1998-06-04 | Macronix International Co., Ltd. | Flash memory mass storage system |
EP0887732A1 (en) * | 1997-06-20 | 1998-12-30 | Sony Corporation | Defective management data handling method and recording medium |
JPH11212873A (ja) * | 1998-01-27 | 1999-08-06 | Seiko Epson Corp | コンピューターシステムの操作方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0392895B1 (en) * | 1989-04-13 | 1995-12-13 | Sundisk Corporation | Flash EEprom system |
GB2251323B (en) * | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
JP2582487B2 (ja) * | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 半導体メモリを用いた外部記憶システム及びその制御方法 |
US5404485A (en) * | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
JPH08137634A (ja) * | 1994-11-09 | 1996-05-31 | Mitsubishi Electric Corp | フラッシュディスクカード |
JP3706167B2 (ja) * | 1995-02-16 | 2005-10-12 | 株式会社ルネサステクノロジ | 半導体ディスク装置 |
US6081878A (en) | 1997-03-31 | 2000-06-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US5907856A (en) | 1995-07-31 | 1999-05-25 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US5838614A (en) * | 1995-07-31 | 1998-11-17 | Lexar Microsystems, Inc. | Identification and verification of a sector within a block of mass storage flash memory |
GB2291990A (en) * | 1995-09-27 | 1996-02-07 | Memory Corp Plc | Flash-memory management system |
JPH09212411A (ja) * | 1996-02-06 | 1997-08-15 | Tokyo Electron Ltd | メモリシステム |
GB9606928D0 (en) * | 1996-04-02 | 1996-06-05 | Memory Corp Plc | Memory devices |
US5896393A (en) * | 1996-05-23 | 1999-04-20 | Advanced Micro Devices, Inc. | Simplified file management scheme for flash memory |
-
1999
- 1999-02-17 GB GBGB9903490.2A patent/GB9903490D0/en not_active Ceased
-
2000
- 2000-02-17 EP EP00903861A patent/EP1157328B1/en not_active Expired - Lifetime
- 2000-02-17 DE DE60019903T patent/DE60019903T2/de not_active Expired - Lifetime
- 2000-02-17 US US09/786,418 patent/US6725321B1/en not_active Expired - Lifetime
- 2000-02-17 JP JP2000600167A patent/JP5011498B2/ja not_active Expired - Lifetime
- 2000-02-17 KR KR1020017010492A patent/KR100644805B1/ko not_active Expired - Lifetime
- 2000-02-17 WO PCT/GB2000/000550 patent/WO2000049488A1/en active IP Right Grant
- 2000-02-29 TW TW089103469A patent/TWI244092B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06124596A (ja) * | 1991-11-28 | 1994-05-06 | Hitachi Ltd | フラッシュメモリを使用した記憶装置 |
WO1997012325A1 (en) * | 1995-09-27 | 1997-04-03 | Memory Corporation Plc | Memory systems |
WO1998024029A1 (en) * | 1996-11-25 | 1998-06-04 | Macronix International Co., Ltd. | Flash memory mass storage system |
EP0887732A1 (en) * | 1997-06-20 | 1998-12-30 | Sony Corporation | Defective management data handling method and recording medium |
JPH11212873A (ja) * | 1998-01-27 | 1999-08-06 | Seiko Epson Corp | コンピューターシステムの操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US6725321B1 (en) | 2004-04-20 |
JP2002537596A (ja) | 2002-11-05 |
EP1157328B1 (en) | 2005-05-04 |
WO2000049488A1 (en) | 2000-08-24 |
DE60019903T2 (de) | 2006-03-30 |
TWI244092B (en) | 2005-11-21 |
GB9903490D0 (en) | 1999-04-07 |
DE60019903D1 (de) | 2005-06-09 |
KR100644805B1 (ko) | 2006-11-13 |
EP1157328A1 (en) | 2001-11-28 |
KR20020009564A (ko) | 2002-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5011498B2 (ja) | メモリシステム | |
US7634624B2 (en) | Memory system for data storage and retrieval | |
KR100944996B1 (ko) | 비휘발성 메모리에 부분적 블럭 데이터 프로그래밍 및판독 작동 | |
JP4960705B2 (ja) | マルチブロック単位へのブロックの適応決定論的グループ化 | |
US8386695B2 (en) | Methods and apparatus for writing data to non-volatile memory | |
US6426893B1 (en) | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks | |
US8312203B2 (en) | Semiconductor storage device and method of controlling a semiconductor storage device by allocating a physical block composed of plural pages to a group of logical addresses | |
US7624239B2 (en) | Methods for the management of erase operations in non-volatile memories | |
US6813678B1 (en) | Flash memory system | |
US7783845B2 (en) | Structures for the management of erase operations in non-volatile memories | |
US7631162B2 (en) | Non-volatile memory with adaptive handling of data writes | |
US6865658B2 (en) | Nonvolatile data management system using data segments and link information | |
US20070101095A1 (en) | Methods for adaptively handling data writes in non-volatile memories | |
WO2007081598A2 (en) | Adaptive handling data writes in non-volatile memories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040412 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20040412 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040726 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100701 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100930 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20101007 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20101029 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20101108 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20101130 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20101207 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110915 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20111215 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20111215 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20111215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20120112 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120125 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120313 Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20120313 |
|
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: 20120403 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20120423 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120427 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150615 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5011498 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |