JP2002537596A - メモリシステム - Google Patents

メモリシステム

Info

Publication number
JP2002537596A
JP2002537596A JP2000600167A JP2000600167A JP2002537596A JP 2002537596 A JP2002537596 A JP 2002537596A JP 2000600167 A JP2000600167 A JP 2000600167A JP 2000600167 A JP2000600167 A JP 2000600167A JP 2002537596 A JP2002537596 A JP 2002537596A
Authority
JP
Japan
Prior art keywords
block
sector
memory
data
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2000600167A
Other languages
English (en)
Other versions
JP5011498B2 (ja
Inventor
アラン ウェルシュ シンクレア
ナターリャ ビクトロブナ オスペンスカヤ
リチャード マイケル テイラー
セルゲイ アナトリービッチ ゴロベッツ
Original Assignee
メンクエスト インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by メンクエスト インコーポレイテッド filed Critical メンクエスト インコーポレイテッド
Publication of JP2002537596A publication Critical patent/JP2002537596A/ja
Application granted granted Critical
Publication of JP5011498B2 publication Critical patent/JP5011498B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation 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)
  • Read Only Memory (AREA)

Abstract

(57)【要約】 メモリシステム(10)は、消去可能なブロック内に配置され且つ個々にアクセス可能な不揮発性メモリセクタ(1)と、セクタへの書き込み及びセクタからの読み込みを行ない且つブロックを消去ブロックおよび非消去ブロックにソートするためのコントローラ(8)とを備えた半導体メモリ(6)を有している。コントローラは、論理アドレスを物理アドレスに変換するとともに、ホストプロセッサからデータが書き込まれる物理セクタアドレスを指し示すライトポインタ(WP)を有している。各物理アドレスを有する論理アドレスのセクタ割り当てテーブル(SAT)はメモリ内に記憶される。コントローラは、ホストプロセッサからのデータがセクタに書き込まれる頻度よりも少ない頻度でSATを更新する。メモリは、単一のチップであっても良く、あるいは、複数のチップであっても良い。また、個々のセクタ(1)にデータを配置する新規なシステムも請求の範囲に記載されている。

Description

【発明の詳細な説明】
【0001】 本発明は、データ記憶および検索のための半導体メモリシステムに関し、また
、半導体メモリシステムの不揮発性メモリへのアクセスを制御するメモリコント
ローラに関する。より具体的には、本発明は、フラッシュメモリシステム及びフ
ラッシュメモリ用のコントローラに関する。
【0002】 フラッシュEEPROM(電気的消去書き込み可能な読出し専用メモリ)装置
は不揮発性データ記憶装置用に電子工業界で一般的に用いられている。NAND
型メモリセル、AND型メモリセルあるいはNOR型メモリセルに基づく装置を
含む様々なタイプのフラッシュメモリ装置が存在する。こうした装置は、それぞ
れインタフエースするように設計されたホストプロセッサシステムに対して異な
る型のインタフエースを有し、例えば、順次アクセス型インタフエース(多くの
NAND型及びAND型装置で一般的に使用)、または、ランダムアクセス型イ
ンタフエース(複数のNOR型装置で使用)などが使用されている。本発明は、
適切な形で、これらの異なるタイプの記憶装置の少なくともいくつかに、好まし
くは全てに利用できることを目的とする。
【0003】 磁気ディスク記憶装置をコンピュータシステムにエミュレーションするために
半導体メモリシステムを使用することは周知である。当業界では、半導体メモリ
システムの演算速度を増して、磁気ディスク記憶装置をより良くエミュレートす
ることを目指している。
【0004】 本発明の第1の態様によれば、個別にアドレス可能で、かつ、セクタの消去可
能ブロック内に設けられた不揮発メモリセクタを有し、前記セクタは、各々、メ
モリ内の自身の物理的位置を定義する物理アドレスを含む半導体メモリと; データ構造のメモリへの書き込みとメモリからの読出し、及び消去用として処
理されるブロックと非消去用として処理されるブロックとにセクタのブロックを
ソートするためのコントローラと; を具備するホストプロセッサに接続するためのメモリシステムであって、 前記コントローラは、 ホストプロセッサから受け取った論理アドレスをメモリ内の前記メモリセクタ
の物理アドレスに変換する手段と; ホストプロセッサからのデータが書き込まれる物理セクタアドレスを指示する
書き込みポインタ(以下、ライトポインタ(WP)と称す)であって、消去用と
して処理される任意のブロックにおけるメモリセクタの物理アドレスを所定の順
番で移動するように、また、ブロックが満杯の場合は別の消去ブロックに移動す
るようにコントローラによって制御されるライトポインタ(WP)とを含み、 こうした構成とすることで、ホストプロセッサからセクタ書き込みコマンドを
受け取ると、前記ライトポインタ(WP)が指し示す物理アドレスを論理アドレ
スに割当てることによって、コントローラはホストプロセッサから受け取った論
理アドレスをデータが書き込みされる物理アドレスに変換し、かつ、コントロー
ラによって既に割当てられている各々の物理アドレスとともに論理アドレステー
ブルをコンパイルし(このテーブルは、以下、セクタ割当てテーブルまたはSA
Tと称す)、コントローラはホストプロセッサからのデータがメモリセクタに書
き込みされる頻度より少ない頻度で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)とは異なるセクタブロックにある。これは、ホストプロセッ
サによって書き込みするように直接命令された、すなわち、ライトポインタ(W
P)によって書き込みされるデータ構造と、リロケーションデータとが交じり合
うことを阻止するという効果をもたらす。
【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及びCOS
B)が一時的に存在することがある。例えば、COBの消去が必要な場合(旧デ
ータがちょうど別のブロックに作り出された後)、ライトポインタ(WP)の1
つはこれを指し示す。すなわち、WPは、現在COBであるブロックにまだ書き
込みを行っている。このような場合、コントローラは、好ましくは、新しいCO
Bの作成処理を行い、一方、コントローラの定義に従って、古いCOB内にある
全ての消去セクタが充填され、かつ、ライトポインタ(WP)が次に使用する消
去ブロックに移動するまで古いCOB(以下、保留オブソリートブロック(PO
B)として扱う)の消去を保留する。このとき、POB内の任意の有効(非廃棄
)データは再配置され、POBが消去される。
【0021】 ホストプロセッサからのデータ構造をメモリに書き込みすることに加えて、コ
ントローラは、制御情報として指定されたメモリデ−タの生成および書き込みを
行う。好ましくは、コントローラは、そうした制御情報をホストプロセッサから
受け取ったデータ構造が書き込まれたメモリのセクタブロックとは別個のブロッ
クに書き込む。こうした制御情報を記憶するためのブロックを以下、制御ブロッ
ク(CBs)と称する。これらの制御ブロックはコントローラによって周期的に
更新され、初期化中、および時にメモリシステムの演算中にアクセスされる。
【0022】 好ましくは、SATが最後に更新された後、コントローラは、ライトポインタ
(WP)によって書き込まれたデータ構造用の論理セクタアドレスのリストを一
時的記憶域(これは、メモリシステムに設けられたRAM、または、コントロー
ラのマイクロプロセッサに好適に埋め込まれたSRAMあるいはDRAM)に記
憶させる。SRAMに記憶されたこのリストは、以下、WSLの論理アドレスと
して言及される。これは、メモリ内の不揮発性セクタに書き込みされた順番に好
適に記億される。連続して書き込みされたセクタ群にとって好都合なことに、W
SLエントリーは、従って、第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つのリストを、再配置ブロックリスト(RB
L)およびライトシステムブロックリスト(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やDR
AMのような、メモリシステム内の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ページに書き込まれる5
28バイトのデータセグメントへと編成する。
【0044】 ホストデータセクタの論理アドレス(LA)は、4バイトのヘッダーの状態で、
ホストデータセクタが書き込まれるフラッシュセクタ1内に記憶される。読み込
み操作時、フラッシュメモリアレーの関連するセクタ内に記憶されたデータは、
フラッシュリード/ライトバッファ7を介して、アレー6からコントローラバッ
ファ9へと読み込まれる(同時に、データ内のエラーをチェックするために、EC
Cジェネレータチェッカへと読み込まれる)。そして、コントローラは、記憶さ
れたLAがホストコンピュータによって要求されているLAと一致していることをチ
ェックするため、ホストコンピュータによるコントローラバッファ9からのデー
タの読み込みを許容する前に、4バイトのヘッダーを読み込む。
【0045】 コントローラ8は、個々のセクタベーシス上でメモリ6に書き込まれるデータ
の物理的な場所を管理する。更に詳細に後述するように、コントローラは、消去
されたブロックのビットマップをメモリ6内に記憶するとともに、消去されたブ
ロックが書き込みのために使用されるブロックの物理アドレスの昇順で順序付け
られた少なくとも幾つかの消去されたブロックのリスト(ネクストイレーズドブ
ロック(Next Erased Block(NEB))リスト)を、マイクロプロセッサ11内のSR
AM内にコンパイルする。ホストデータセクタが書き込まれる物理的なページの場
所は、ホストから受ける論理アドレスに依存しない。各ホストデータセクタは、
サイクリックライトポインタによって規定されるアドレスに書き込まれる。異な
るタイプの書き込み操作のため、特定のライトポインタが使用される。すなわち
、ホストファイルデータの書き込みは、データライトポインタ(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およびS
Pと異なるブロック内に配置される
【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バイトのE
CC1cを順に含んでいる。図4に示されるように、ヘッダー部分は、それ自身
、データ構造タイプ部分20と、ヘッダーパラメータ22(例えば、情報部分1
a内に書き込まれたホストデータセクタの論理セクタアドレス(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ブロックにリンクされてSA
Tブロックの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(W
MAPs、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もしくはAS
Bのブロック位置を記録するため、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はNo8である。
【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ブロッ
クアドレスから成る。 SATはN番目のSATブロックの数であり、ASBはSATにリンク
されるASBの数である。SATもしくはASBが存在しない場合には、この領
域の値は0に等しい。 SATブロックが再配置される度に、あるいは、新たなASBがSATブロッ
クにリンクされる度に、新たなTBLエントリーがCBに加えられなければなら
ない。
【0072】MAP(WMAP、SMAP、RMAP) CBは、様々なMAPエントリーを含んでいる。3つの異なるタイプのMAP
エントリーがある。各マップエントリは、異なるタイプの書き込み操作に対応し
ている。すなわち、WMAPは、ファイルデータの書き込み或は削除操作に対応
しており、SMAPは、システムデータの書き込み操作に対応しており、RMA
Pは、セクタ再配置操作に対応している。
【0073】 全てのMAPエントリーの情報領域は、同じフォーマットを有している。情報
領域は、連続ブロック群の消去状態を規定するビットマップを含んでいる。25
6個のブロックの消去状態は、MAP内の32バイト領域内の256ビットによ
って規定される。情報領域は、それが関連するブロック群を認識するレンジ(Ra
nge)領域を有している。他の領域は、ブロック間でライトポインタが移動する
際の行き先ブロックを規定する。また、MAPは、旧データを含むフラッシュメ
モリ内のブロックの場所を認識する複数の領域を有している。すなわち、Obs
Cは、COB(またはCOSB)のために使用され、ObsPは、保留の廃棄ブ
ロックのために使用される。廃棄ブロックが存在しない場合には、対応する領域
が0に設定される。EB領域は、現在の書き込み或は削除セクタ操作によって消
去が引き起こされる1つのブロックの1つのアドレスを含んでいる。そのような
ブロックが存在しない場合には、EB領域が0に設定される。このMAPエント
リーフォーマットが図8に示されている。
【0074】 ライトポインタのうちの1つが1つのブロックから他のブロックへと移動され
る場合には、消去ブロックの使用を示すために(ビットマップ領域が更新される
)、また、ブロック間のリンクを記録するために(リンク領域が更新される)、
対応するMAPエントリーが加えられなければならない。書き込み(あるいは、
削除セクタ)操作によって新しいブロック内に廃棄(または削除)データが形成
される場合には、新しい廃棄ブロックの位置を記録するために(ObsCやOb
sPが更新される)、また、ブロックが消去されるべきであることを示すために
(EB領域が更新される)、また、新たな消去ブロックが出現することを示すた
めに(ビットマップ領域が更新される)、対応するMAPも加えられなければな
らない。したがって、通常、MAPの少なくとも2つの領域が同時に書き込まれ
、これは、単一のページ書き込み操作で達成されても良い。
【0075】ブートブロック(BB) ブートブロックの機能は、カードからの予期しない電力の除去時にデータの高
いセキュリティーを提供すると同時に、初期化プロセス中における広範囲な走査
を避けることである。大きなカードにおいて、BBは1つ以上のブロックを有し
ている。BBは、カード内で、第1の非欠陥ブロックを占めている。データセキ
ュリティのため、カード内には、次の非欠陥ブロックを占めるBBのコピーが存
在する。BB及びそのコピーは、書き換え後、同じ場所に置かれなければならな
い。
【0076】 BBは、制御ブロックと同じ構造を有しており、以下のタイプのエントリーを
含んでいる。 ・サイン ・インターリービングイネーブル ・不良ブロックリスト ・制御ブロックポインタテーブル(CBPT) 新しいデータをBBに加える必要がある場合には、最後の有効エントリーの後
に直ぐ続くように、適当なタイプの別個のエントリーが加えられる。サインとB
BLエントリーは、前述したものと全く同じフォーマットを有している(無論、
サインエントリーのサイン領域は、異なっており、固有のものである)。制御ブ
ロックポインタテーブルエントリーは、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の不揮発性コピーは、SA
Tが最後に書き込まれた時にライトポインタ(WP)によって規定される場所で
始まる連続的な場所で書き込まれる実際のセクタのヘッダーによって自動的に提
供される。したがって、WSLのコピーをフラッシュメモリ6に明確に形作る必
要はない。必要に応じて、これらのセクタは、次のMAPエントリーからのリン
ク領域の他、SATが最後に書き込まれた時のライトポインタ(WP)の位置を
含む制御ブロック領域内に規定される開始アドレスから走査することができる。
【0080】 任意の論理セクタのための最後のエントリーだけが有効であるため、WSLの
検索は、逆の順序で実行される。セクタの再配置およびブロックの消去が行なわ
れた場合があるため、先の複製エントリーは、フラッシュメモリ内に置かれた任
意の対応する廃棄セクタを有していなくても良い。好ましい場合には、WSLか
ら複製エントリーを単に除去するようにコントローラが構成される。
【0081】 また、2つの類似するリスト、すなわち、再配置セクタリスト(RSL)およ
びシステムセクタリスト(SSL)は、最後のSAT書き込み後に書き込まれる
システムデータセクタ(RPおよびSWPのそれぞれによって指し示されたアド
レスに書き込まれる)および再配置されたセクタの論理アドレスを記録するマイ
クロプロセッサのSRAM13内でコンパイルされる。
【0082】 WSL、RLS、SSLがそれぞれ一杯になる度に、ASB及び/またはSA
Tブロックは、WSL、RSL、SSLエントリーによって補われる。このよう
な手続きは、WSL、RSL、SSLリリースと呼ばれる。このリリースは、必
要に応じて、ASBリリースを引き起こす。ASBリリースは、ASBが一杯に
なった時に生じる。ASBが一杯になると、各SATブロックが書き換えられ、
ASBが消去される。全てのASB内に書き込まれたページに関する情報は、A
SB走査を頻繁に行なわないで済むように、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)およびシステムブロックリスト(SB
L)と称されるWBLに類似する2つのリストは、コンパイルされて、SRAM
13内に記憶される。これらのリストは、RSLおよびSSLをそれぞれ補う。
RBLおよびSBLは、RSLおよびSSL内のセクタがそれぞれ物理的に配置
されるブロックを規定するとともに、WBLと類似するフォーマットから成る。
また、RSL、RBL,SSL、SBLは、メモリシステムの初期化中に、走査
プロセスによって再構成することができる。
【0087】カレントオブソリートブロック(COB) ライトポインタ(WP)によって書き込まれる廃棄もしくは削除セクタデータ
を含むブロックは、たった1つだけその存在が許される。これは、カレントオブ
ソリートブロック(COB)と称される。廃棄もしくは削除セクタデータが他の
ブロック内で形成される場合、消去操作は、COBとして規定されたブロック上
で直ちに実行されなければならない。COBの現在のブロックアドレス、および
、このブロック内で廃棄となる或は削除されたセクタのリストは、以下にCOB
構造と称するデータ構造として、マイクロプロセッサのRAM13内に記憶され
る。COB構造は、初期化中において、廃棄ブロックのアドレスを含む領域を最
新のMAPエントリーからコピーするとともに、再構成されたWSLおよびWB
Lが解析された後に廃棄セクタアドレスを加え、削除されたセクタアドレスをこ
のブロックから読み込むことによって、確立される。新たな削除セクタ操作が実
行される度に、あるいは、新たな廃棄セクタが形成される度に、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を増加する際に次に利用可能な消去ブロック
を早期に認識するため、次消去ブロックリストは、マイクロプロセッサのSRA
M13内に形成される。利用可能な消去ブロックは、その物理アドレスの順位を
上げる際に使用される。NEBは、M個の消去ブロックアドレス(例えば、M=
8)を有している。NEBリストは、次に利用可能な消去ブロックのリストであ
り、使用のために割当てられる最後の消去ブロックのアドレスに最も近く且つそ
れよりも高いブロックアドレスを有する消去ブロックで始まる。したがって、N
EB内のエントリーの数は制限される(例えば8個に制限される)が、NEBそ
れ自身は、次の8個の消去ブロックよりも多い情報を含んでいても良い。
【0090】 次消去ブロックリストは、ライトポインタによってアクセスされるフラッシュ
メモリのアドレス空間の領域に適したMAPエントリー(CB内に記憶される)
から得られる。次消去ブロックリストは、これによって規定される全ての消去ブ
ロックが使用されるまで、アクティブNEBとしてSRAM内に残される。そし
て、全ての消去ブロックが使用された時点で、次消去ブロックリストは、適当な
MAPエントリーから再構成されなければならない。CBは、フラッシュメモリ
内の全てのブロックの消去状態を規定できる十分な量のMAPエントリーを有し
ている。NEBおよび対応するMAPエントリーは、メモリシステムの操作中に
ブロックを加減することによって更新される。セクタもしくは制御データ記憶装
置のために消去ブロックが割当てられた時に、エントリーがNEBから除去され
る。NEB内の他のブロックによって測られる領域内にあるブロックアドレスに
消去ブロックが形成されると、エントリーがNEBに加えられる(ただし、NE
Bが既に一杯である場合を除く)。
【0091】 単一のNEBエントリーは、連続するアドレスで消去ブロック群を規定すると
ともに、ブロック開始アドレス(連続するブロック群内の第1のブロックアドレ
ス)および群の長さ(群の連続するブロックの数)を規定する。
【0092】TBLポインタ(TBLP) TBLポインタは、CB内のTBLエントリーの位置を認識する。また、TB
Lポインタは、マイクロプロセッサのSRAM内に記憶されるとともに、高速セ
クタアドレス変換を提供するために使用される。TBLPは、制御ブロックの初
期走査中に形成され、その後、新たなTBLエントリーがCB内に形成される度
に更新される。
【0093】ASBリスト(ASBL) 前述したように、ASBLは、SRAM13内に形成されるとともに、高速ア
ドレス変換をサポートする。ASBLは、全てのASBブロック及びこれらのA
SBブロックが関連付けられるSATブロックの物理アドレスを認識する。AS
BLは、初期化中に形成され、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ページ書き込み」と呼ばれる)。特定のSA
Tブロックに専用の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)部分を備えた仮想ページ部とから成る。チップハイ部分は、
highビットの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を参照しながら図1
4について説明する。図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と、EC
Cジェネレータ&チェッカ12と、フラッシュメモリインタフェース(FMI)
84とを有するコントローラチップ8’を示している。データパスコントローラ
82と、ECCジェネレータ&チェッカ12と、フラッシュメモリインタフェー
ス(FMI)84は全て、セクタバッファ9に接続されており、また、FMIは
フラッシュメモリポート86に接続されている。また、コントローラ8は、マイ
クロプロセッサ11(RISCプロセッサの形態を成す)と、プロセッサSRA
M13と、プロセッサマスクROM88と、外部プログラムRAMまたはROM
92のためのポートとを有している。また、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またはSA
Tキャッシュへと進む(ボックス44)。ここから、物理セクタが不良であるか
否か(46)、あるいは、削除されたか否か(50)を決定する。LAが書き込
まれないセクタに対応している場合には、ボックス50でVA=削除(48)と
なる。ボックス42でYESと答えると、ボックス52で、WSLもしくはSS
L(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=W
Pに設定し、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において
、与えられたセクタが存在するブロックと最後のブロックとの間のブロック数Nb
lockが、以下のアルゴリズムを使用して演算される。 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]、この場合、LB
LはWBL内の最後のエントリーのインデックス; LAがRSL内にある場合には、BlAddr=RBL[LRBL+NBlock]、この場合、L
RBL はRBL内の最後のエントリーのインデックスである。
【0120】 その後、116で、VA=Page0+PageNumを使用して、VAを演算する。こ
の場合、Page0は、与えられたセクタを含むブロック内のページ0の仮想アドレ
スである。
【0121】 図21は、SATまたはSATキャッシュからVAを取得する(図17のボッ
クス44)ために使用されるプロセスのフローチャートである。図21は、一般
に自明であるが、以下、特に番号が付与されているボックスについて説明する。
【0122】 ボックス120(LAがSATキャッシュ内にあるか):LA>=FirstCache
Entryである場合には、LAがSATキャッシュ内にある。LA<=LA<First
CacheEntry.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もしくはR
SLリリースや、必要なCBおよびCBPT圧縮を実行する。その後、繰り返し
可能性評価アルゴリズム(図17のボックス40)から範囲を更新し(164)
、コントローラバッファからWPのアドレスにセクタを書き込み(166)、有
効状態の値をホストに戻す(168)。ボックス156で、セクタが削除されな
いことが分かると、COB内にVAがあるか否かをチェックする(157)(V
AがVBと一致している場合、VAはCOB内にある。この場合、VBは、SR
AM13内に記憶された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は、W
Pまたは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、SW
P、RP)に適するように手続きを拡張しても良い。全てのデータおよび制御構
造は、初期化中の走査が一般的に成されないように特別に構成される。殆ど全て
の制御構造(WSLおよびWBLを除く)は、通常、CB内に記憶された対応す
る情報から得られる。カードの初期化中においては、以下の操作を実行すること
が必要である。 1.ブートブロックから最後の制御ブロックポインタテーブルエントリーを読
み込み、CBブロックの場所を確認する。 2.CBを操作することによってTBLPを再構成する。 3.制御ブロック内の最後のTBLエントリー内で規定されるライトポインタ
の位置の後に連続的に続くページのヘッダー/ECC領域を走査して、最後のS
AT書き換え後に書き込まれたセクタを認識するとともに、WSLおよびWBL
を再構成する。 4.CB内の対応するMAPエントリーからNEBを構成する。 5.COBおよびASBLを構成する。 6.最後のMAPのErB領域内で参照されたブロックが実際に消去されたか否
かをチェックする。消去されていない場合には、消去操作を終了する。
【0134】WSLおよびWBLの構成 カードの初期化中、記憶されるライトポインタ(WP)の最後の値は、CB内
の最後のTBLエントリーから読み込まれ、その場所の次のページで、ページヘ
ッダーの走査が実行されて、プロセッサのSRAM内でWSLおよびWBLが再
構成される。消去場所が見つかると、最後のSAT書き換え後に書き込まれたセ
クタ系列の末端に辿りつく。 このようなセクタ走査では、ライトポインタ(WP)が、ブロックの末端から
、隣接していないブロックの先頭へとジャンプすることができる、という事実を
考慮に入れなければならない。WPによって成される全てのブロック移動は、C
B内のMAPエントリーのリンク領域内に記録される。
【0135】COBおよびASBLの構成 これらの構造は、対応するエントリーをCBからコピーすることによって再構
成することができる。また、COB構造を構成するためには(その中の削除セク
タを認識するためには)、CB内の最後のMAPエントリーの廃棄(Obs)領域
内にアドレスが規定されているこれらのセクタを含む現在のブロックを走査する
必要がある。このブロック内の廃棄セクタを確認するためには、WSLおよびW
BLを走査することも必要である。ASBLページを記録するためには、TBL
からASBアドレスを認識し、その後、それらのヘッダー/ECC領域を走査し
なければならない。
【0136】電力損失リカバリ メモリシステムにおいては、正常に動作でき、また、電力が回復された際、電
力が除去された状況下であっても、記憶されたデータが失われないことが必要で
ある。しかしながら、電源ONの直後にメモリシステムが全ての正常状態を回復
する必要はなく、正常に動作できるだけで良い。任意の異常状態が何時検知され
ようとも、正常状態は、例外として、その後に回復され得る。
【0137】 以下の任意の操作が実行されている時に供給電圧が除去されると、メモリシス
テムの正常状態が低下する。 1.ホストからのデータセクタの書き込み 2.移動されるデータセクタの書き込み 3.制御データブロック(CBまたはBB)へのエントリーの書き込み 4.制御データブロック(SATまたはCB)へのページの書き込み 5.廃棄セクタもしくは制御データを有する任意のブロックの消去
【0138】ホストからデータセクタを書き込んでいる間の電力損失 この場合、書き込まれているデータが失われることがあるが、書き込みコマン
ドが終了してセクタを再び書き込むことができるといった情報は、ホストに与え
られない。不完全に書き込まれたセクタは、不完全書き込み操作の結果として、
フラッシュメモリ内に存在している場合がある。これは、CB内の最後のリンク
パラメータによって規定されるブロック内のページヘッダーを読み込むことによ
ってライトポインタの値が設定されると、初期化中に検知される。最後に検知さ
れたセクタは、そのECCをチェックするために完全に読み込まなければならな
い。また、次のページは、それが完全に消去されることをチェックするように読
み込まれなければならない。不完全に書き込まれたセクタが検知される場合には
、他の全てのセクタは、次の消去ブロックの最初に、新たなライトポインタ位置
へと再配置され、その後に、ブロックが消去されなければならない。
【0139】再配置されるデータセクタの書き込み中の電力損失 これは、前述したように、初期化中、ライトポインタを定めるプロセスにおい
て検知される。セクタを再配置させてブロックを消去する場合と同じ動作が成さ
れなければならない。また、ライトポインタの直前の論理セクタアドレスと、C
B内の廃棄(Obs)パラメータによって規定されるブロック内の廃棄セクタの論
理セクタアドレスとを比較することによって、不完全な再配置操作が検知されな
ければならない。保留の任意のセクタ再配置は、初期化中に完了されなければな
らない。
【0140】制御データブロック(CBまたはBB)へのエントリーの書き込み中の電力損失 この状態は、CBおよびBB内のエントリーが読み込まれ且つそれらのECC
がチェックされると、通常の初期化中に検知される場合がある。エントリーのE
CCがエラーを示している場合には、そのエントリーを無視すべきである。CB
またはBBエントリー書き込み操作を開始した初期の動作は正確に完了されず、
この操作が通常の動作中に繰り返される時、エントリーは、その後、正確に書き
込まれる。
【0141】制御データブロック(ASB)へのページの書き込み中の電力損失 この状態は、ASB内のページが読み込まれ且つそれらのECCがチェックさ
れると、通常の初期化中に検知される場合がある。ページのECCがエラーを示
している場合には、そのページを無視すべきである。ASBページ書き込み操作
を開始した初期の動作は正確に完了されず、この操作が通常の動作中に繰り返さ
れる時、ページは、その後、正確に書き込まれる。
【0142】全ての制御データブロック(SATまたはCB)の書き込み中の電力損失 これによって、不完全な制御データブロックが、他のデータ構造によるそれと
は無関係に、フラッシュメモリ内に存在するようになる。この状態が初期化中に
検知される必要はない。また、ブロックは、「損失ブロック」として存在するこ
とが許されても良い。ブロック書き込み操作を開始した初期の動作は正確に完了
されず、この操作が通常の動作中に繰り返される時、ブロックは、その後、正確
に書き込まれる。通常の動作の後段で、損失ブロックは、そのMAP状態に関す
る矛盾、あるいは、システム内の消去ブロック数における矛盾を発見することに
よって検知される(図16のキャパシティマップ参照)。その後、必要に応じて
、除外ルーチンは、フラッシュメモリ全体を走査することによって、そのブロッ
クを認識して消去する。
【0143】廃棄セクタまたは制御データとともにブロックを消去する間の電力損失 これによって、不完全に消去されたブロックがフラッシュメモリ内に存在する
ようになる。この状態は、CB内の最後のMAPエントリー内のErB領域によっ
て参照されるブロック状態がチェックされると、初期化中に検知される。必要に
応じて、このブロックの再消去を実行することができる。
【0144】更なる別の実施例 本発明の範囲から逸脱することなく、前述した実施例を様々に変形することが
できる。例えば、消去操作を扱う他の方法は、2つのCOB(および、2つのC
OSB)の存在を常に許容することである。この利点は、メモリ容量を最大限に
利用できることである。前述した実施例においては、1つのCOBだけが許容さ
れたが、COBを作りたいブロック内にライトポインタがある場合には、1つの
POBの一時的な存在を許容しても良い。これは、POBを有することが必要な
場合に、POBのために割当てることができる十分な消去メモリ容量が常に存在
していなければならないことを意味する。したがって、このメモリ容量を最大限
に利用できることは有益であり、これを実現する1つの方法が、2つのCOBの
存在を常に許容すること、すなわち、POBを不要にすることである(必要な場
合、第2のCOBがPOBとして作用することができる)。そのような2COB
システムにおいて、新たなCOBを形成することが必要な場合には、2つのCO
Bのうちの古い方のCOBを消去する(古い方のCOB内にライトポインタが無
い場合には、新しい方のCOBを消去する)。
【0145】 図3、および、メモリシステム内の各フラッシュページにおけるデータ配置の
説明に関し、以下、ページ内にデータを記憶する幾つかの別の方法を提案する。
図28は、典型的な528バイトのNAND型もしくはAND型フラッシュメモ
リのページ1の物理的な群分離を示している。ページは、512バイトの「デー
タ領域」300と、16バイトの「スペア領域」302とを備えている。図3に
関して前述した実施例において、コントローラ8は、データ領域300内に51
2バイトの情報1a(例えば、1つのホストデータセクタ)を記憶し、スペア領
域302内にヘッダー1bおよびECC1c(以下、これらをまとめて、オーバ
ーヘッドデータと称する)を記憶する。しかしながら、ページ1内における他の
データ配置も可能である。例えば、図29に示されるように、データ領域300
の第1の部分303内にヘッダ1bおよびECC1cが記憶され、データ領域3
00の残りの部分とスペア領域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の部分32
6は、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型およびA
ND型メモリページに関して既に述べた任意の様々な異なる方法により、ユーザ
およびオーバーヘッドデータを含む各セクタ内でデータを配置しても良い。
【0153】 前述したことから分かるように、メモリシステムがNAND型、AND型、N
OR型のメモリアレーである場合、メモリシステムの物理セクタは、メモリアレ
ーそれ自身の物理アーキテクチャと特定の関係を有している必要は全くない。例
えば、セクタがアレーの列(ページ)に対応している必要はなく、また、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型フラッシュメモリ内のセクタの消去可能
ブロックの概略ブロック図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 オスペンスカヤ ナターリャ ビクトロブ ナ ロシア連邦 194100、 サンクトペテルブ ルク、 アイ−ムリンスキー プロスペク ト 29/20 アパト 63 (72)発明者 テイラー リチャード マイケル イギリス イーエイチ22 2エイキュー ミドロージャン、 ダルキース、 ニュー ミルス ロード 41、 オールド ソーミ ル ハウス (72)発明者 ゴロベッツ セルゲイ アナトリービッチ イギリス イーエイチ9 1エスイー エ ジンバラ、 イースト メイフィールド 16、 1エフエル Fターム(参考) 5B018 GA04 HA35 KA14 MA22 NA06 5B060 AB26 5B065 BA05 CC03 CC08

Claims (57)

    【特許請求の範囲】
  1. 【請求項1】 個別にアドレス可能で、かつ、セクタの消去可能ブロック内
    に設けられた不揮発メモリセクタを有し、前記セクタは、各々、メモリ内の自身
    の物理的位置を定義する物理アドレスを含む半導体メモリと; データ構造のメモリへの書き込みとメモリからの読出しを行い、かつ、消去用
    として処理されるブロックと非消去用として処理されるブロックとにセクタのブ
    ロックを分別するためのコントローラとを具備するホストプロセッサに接続する
    ためのメモリシステムであって、 前記コントローラは、 ホストプロセッサから受け取った論理アドレスをメモリ内の前記メモリセクタ
    の物理アドレスに翻訳する手段と; ホストプロセッサからのデータが書き込まれるセクタの物理アドレスを指示す
    るライトポインタ(WP)とを備え、該ライトポインタ(WP)は、消去用とし
    て処理される任意のブロックにおけるメモリセクタの物理アドレスをくまなく所
    定の順番で移動するように、また、ブロックが満杯の場合は、別の消去ブロック
    に移動するようにコントローラによって制御され、 ホストプロセッサからセクタ書き込みコマンドを受けると、前記ライトポイン
    タ(WP)がその時点で指示する物理アドレスを論理アドレスに割当てることに
    よって、コントローラはホストプロセッサから受け取った論理アドレスをデータ
    が書き込みされる物理アドレスに翻訳し、かつ、コントローラによって既に割当
    てられている各々の物理アドレスで論理アドレスのセクタ割当てテーブル(SAT
    )をコンパイルして、ホストプロセッサからのデータがメモリセクタに書き込み
    される頻度より少ない頻度でSATを更新するよう構成されたシステム。
  2. 【請求項2】 前記ライトポインタ(WP)は、消去用に処理されるブロック
    中を所定の順序で移動するようコントローラによって制御されている請求項1に
    記載のメモリシステム。
  3. 【請求項3】 SATの物理セクタアドレスは、論理セクタアドレス(LS
    A)によって命令され、N番目のSATエントリーは、論理アドレスNを有する
    データが書き込みされたセクタの物理アドレスを備える請求項1または2に記載
    のメモリシステム。
  4. 【請求項4】 前記コントローラは、ホストプロセッサからセクタ読出しコ
    マンドを受け取ると、以前、前記論理セクタアドレスに割当てた物理セクタアド
    レスを得るために、SAT内において、ホストプロセッサから受け取った論理セ
    クタアドレス(LSA)を検索するように構成された請求項3に記載のメモリシ
    ステム。
  5. 【請求項5】 SATが、半導体メモリのメモリセクタの前記ブロックのう
    ち、少なくとも1つに記憶されている前記請求項の何れかに記載のメモリシステ
    ム。
  6. 【請求項6】 コントローラは、ブロック全体におけるSATを再書き込み
    することでSATを更新するよう構成されている請求項5に記載のメモリシステ
    ム。
  7. 【請求項7】 セクタブロックのうち、少なくとも1個のブロック(ASB
    )がSATブロックの個別セクタの修正バージョンを含んでいる請求項5または
    6に記載のメモリシステム。
  8. 【請求項8】 前記ASBブロックのセクタが各々、それが更新するSAT
    ブロックのセクタの物理アドレスを含む請求項7に記載のメモリシステム。
  9. 【請求項9】 前記ASBブロックの全てのセクタがSATセクタの修正バ
    ージョンを書き込まれるとき、SATブロックはそれぞれASBブロック内の全
    ての修正バージョンを含むように再書き込みされ、かつ、ASBブロックが消去
    される請求項7または8に記載のメモリシステム。
  10. 【請求項10】 コントローラがライトポインタ(WP)を制御して、各ブ
    ロックが書き込みデータで満杯になると、物理アドレスの番号昇順で、消去ブロ
    ック中を連続的に移動するように構成されている前記請求項の何れかに記載のメ
    モリシステム。
  11. 【請求項11】 物理アドレス順で最高位のブロックセクタがひとたびデー
    タで満杯になると、コントローラによる消去処理途中の全てのブロック中、番号
    的に最下位の物理アドレスを有するセクタのブロックを取り囲むようにWPがコ
    ントローラによって制御されるという意味から、ライトポインタ(WP)の制御
    が循環式である請求項10に記載のメモリシステム。
  12. 【請求項12】 コントローラがライトポインタ(WP)を制御して、消去
    ブロック中を物理アドレス順で非連続的に移動するように構成されている請求項
    1〜9の何れかに記載のメモリシステム。
  13. 【請求項13】 前記メモリセクタ(1)はそれぞれ、物理的にデータエリ
    ア(300)とスペアエリア(302)とに分割され、コントローラは、セクタ
    のデータエリア(300)の始めからオフセットされるセクタ位置において、ヘ
    ッダデータおよびエラー修正コードデータ(ECC)を含むオーバーヘッドデー
    タ(OD)を書き込みし、かつ、ホストプロセッサから受け取ったユーザデータ
    をオーバーヘッドデータ(OD)の何れか一方の側のセクタにおける残りスペー
    スに書き込みする構成されている請求項1〜12の何れかに記載のメモリシステ
    ム。
  14. 【請求項14】 前記オーバーヘッドデータ(OD)は、セクタに書き込み
    されるユーザデータのうち少なくとも1ビットによって決定される総計によって
    オフセットされる請求項13に記載のメモリシステム。
  15. 【請求項15】 前記セクタブロックの各々におけるメモリセクタは、ユニ
    ットとしてまとめて消去できる前記請求項の何れかに記載のメモリシステム。
  16. 【請求項16】 前期セクタブロックの各々におけるメモリセクタは、個別
    に消去することもできる請求項15に記載のメモリシステム。
  17. 【請求項17】 コントローラがメモリの消去操作を制御してメモリセクタ
    のブロック全体のみを消去し、その中のメモリセクタが全て消去セクタである場
    合は、セクタのブロックがコントローラによって消去ブロックとして処理される
    前記請求項の何れかに記載のメモリシステム。
  18. 【請求項18】 1つのブロックが1個または2個以上の不良セクタを含ん
    でいる場合、コントローラがそのブロック全体を不良と定義し、非消去ブロック
    として処理し、それによりデータがそのブロックに書き込みされない請求項17
    に記載のメモリシステム。
  19. 【請求項19】 1つのブロックが1個または2個以上の不良セクタを含ん
    でいる場合、コントローラがそのブロックを消去ブロックとして処理し、それに
    よりコントローラは該ブロック内の良好セクタをデータ保存用に使用し、メモリ
    システムは不良セクタを識別するテーブルを含み、コントローラは、次にライト
    ポインタ(WP)が移動するセクタアドレスが不良セクタかどうかをチェックし
    、アドレスが不良セクタの場合は、その不良セクタをスキップして、次に書き込
    みが行われるセクタのアドレスに所定の順序で移動させる請求項16に記載のメ
    モリシステム。
  20. 【請求項20】 セクタブロックは各々、メモリ内での自身の物理的位置を
    定義する物理ブロックアドレスを有し、前記メモリセクタの各々の物理アドレス
    は、それが位置するブロックの物理ブロックアドレスを含み、コントローラは、
    消去処理されるセクタブロックの少なくとも何個かの物理ブロックのアドレスを
    ブロック内をWPが移動する順番に並べたリストをコンパイルし、該リストを利
    用して、次に書き込みが行われるセクタブロックを素早く識別し、コントローラ
    が前記リストを保存するための一時的記憶手段をさらに含んでなる前記請求項の
    何れかに記載のメモリシステム。
  21. 【請求項21】 コントローラが以前に別のセクタに書き込みされた旧デー
    タを伝えるセクタ書き込みコマンドをホストプロセッサから受け取ると、その時
    点の旧データを有するセクタのアドレスをメモリシステムの一時的記憶域に保存
    する前記請求項の何れかに記載のメモリシステム。
  22. 【請求項22】 コントローラがホストプロセッサからユーザによるセクタ
    除去コマンドを受け取ると、除去すべきセクタを廃棄としてマークし、かつ、該
    セクタのアドレスを前記一時的記憶手段に保存するよう構成されている請求項2
    1に記載のメモリシステム。
  23. 【請求項23】 コントローラは、いかなる場合も、ライトポインタ(WP)
    によって書き込みされた旧データを有する1個または2個以上のセクタを含むブ
    ロック(以下、これをカレントオブソリートブロック(COB)と称す)を予め
    決められた数しか容認せず、その結果、前記COB内の全てのセクタが旧データ
    を含むと、前記COBは即座に消去される請求項21または22に記載のメモリ
    システム。
  24. 【請求項24】 COB以外のブロックにあるセクタが旧データを含む場合
    、コントローラは、前記COB内の有効(非廃棄)セクタにある任意のデータを
    別のブロックに再配置し、その後前記COBを消去し;COB以外のブロックに
    ある前記セクタを廃棄としてマークし;前記別のブロックを新しいCOBとして
    指定する請求項23に記載のメモリシステム。
  25. 【請求項25】 前記の予め決められたCOBsの数が1個である請求項2
    3または24に記載のメモリシステム。
  26. 【請求項26】 コントローラが前記有効データを再配置するブロックは、
    ライトポインタ(WP)がその時点で位置するブロックである請求項24に記載
    のメモリシステム。
  27. 【請求項27】 前記有効データが再配置されるセクタの物理アドレスを指
    し示すために別のライトポインタ(以下、リロケーションポインタ(RP)と称
    す)を備え、リロケーションポインタ(RP)は常にライトポインタ(WP)と
    は異なるセクタブロックに位置する請求項24に記載のメモリシステム。
  28. 【請求項28】 ホストプロセッサからのシステムデータが書き込まれるセ
    クタの物理アドレスを指し示すためにさらに別のライトポインタ(以下、システ
    ムライトポインタ(SWP)と称す)を備え、システムライトポインタ(SWP
    )は常にライトポインタ(WP)とは異なるブロックに位置する請求項27に記
    載のメモリシステム。
  29. 【請求項29】 コントローラは1つまたは2つ以上の廃棄セクタを含む少
    なくとも2個のブロックが任意のときに存在することを容認し、前記ブロックの
    一方は前記COBであり、他方は1つまたは2つ以上の旧システムデータセクタ
    を含むカレント・オブソリート・システム・ブロック(COSB)であり、COSB
    の消去を容認するために任意のシステムデータセクタを再配置することが必要に
    なった場合、再配置されたシステムデータはシステムライトポインタ(SWP)
    がその時点で指示するアドレスに送られる請求項28に記載のメモリシステム。
  30. 【請求項30】 有効システムデータが再配置されるセクタの物理アドレス
    を指し示すために、さらに別のライトポインタ(以下、システムリロケーション
    ポインタ(SRP)と称す)を備え、システムリロケーションポインタポインタ
    (SRP)は常にライトポインタ(WP)及びシステムライトポインタ(SWP
    )とは異なるセクタブロックに位置する請求項28に記載のメモリシステム。
  31. 【請求項31】 コントローラによるCOBの消去が必要なときにCOBが
    前記ライトポインタ(WP、RP、SWP、SRP)のうち1つを含んでいる場
    合、旧データは既に別のブロックに作成されているので、コントローラは新しい
    COBの作成を実行する一方、旧COBの消去を保留し(以下、保留オブソリー
    トブロック(POB)と称す)、これはPOB内の全消去セクタが充填され、か
    つ、コントローラの定義に従って前記ポインタが次に使用される消去ブロックに
    移動するまで保留され、このときPOB内の任意の有効(非廃棄)データはコン
    トローラによって再配置され、POBが消去される請求項28〜30の何れかに
    記載のメモリシステム。
  32. 【請求項32】 SATが最後に更新されてから、RP(以下、リロケーシ
    ョンセクタリストまたはRSLと称す)と、SWP(以下、ライトシステムセク
    タリストまたはWSSLと称す)と、SRP(以下、システムリロケーションセ
    クタリストまたはSRSLと称す)とによってリロケーションデータが書き込み
    されたメモリ内のセクタに対応する論理セクタアドレスのそれぞれのリストをメ
    モリシステムの一時的記憶域に保存するように、また、RPと、SWPと、SR
    P(以下、リロケーションブロックリスト(RBL)と称す)と、ライトシステ
    ムブロックリスト(WSBL)と、システムリロケーションブロックリスト(S
    RBL)とによって使用されたブロック順序に対応するリストを前記一時的記憶
    域に保存するようにコントローラが構成される請求項29に記載のメモリシステ
    ム。
  33. 【請求項33】 ホストプロセッサからのメモリへのデータ構造の書き込み
    に加えて、コントローラは、制御情報として示されるメモリデータの生成および
    書き込みを行い、また、ホストプロセッサから受け取ったデータ構造が書き込ま
    れるメモリセクタブロックのうち、1個または2個以上の異なるブロック(制御
    ブロックまたはCBs)にそうした制御情報を書き込むように構成された前記請
    求項の何れかに記載のメモリシステム。
  34. 【請求項34】 コントローラは、全SATブロックのブロックアドレスリ
    ストを少なくとも1個の前記制御ブロックに記憶する請求項33に記載のメモリ
    システム。
  35. 【請求項35】 コントローラは前記1個または2個以上の制御ブロックの
    ブロックアドレスをメモリの専用ブロック(ブートブロックまたはBB)に記憶
    し、この専用ブロックはいかなる不良セクタも含まないメモリセクタの第1ブロ
    ックである請求項33または34に記載のメモリシステム。
  36. 【請求項36】 全SATブロックアドレスの前記リストは複数のリスト部
    (テーブルブロックリストまたはTBLs)形式であり、かつ、各リスト部が論
    理的に連続する一群のSATブロックのブロックアドレスを含む請求項7、8ま
    たは9に従属する請求項34に記載のメモリシステム。
  37. 【請求項37】 コントローラは、SATが最後に更新されてからライトポ
    インタ(WP)によって書き込みされたデータ構造用の論理セクタアドレスのリ
    スト(ライトセクタリストまたはWSL)をメモリシステムの一時的記憶域に保
    存する請求項7〜9の何れかに記載のメモリシステム。
  38. 【請求項38】 コントローラはSATが最後に更新されてからデータを書
    き込むためにライトポインタ(WP)によって使用されたブロックの順番を前記
    一時的記憶域に保存し、この順番は更新されたセクタのアドレスがWSLに保持
    されるブロックのブロックアドレスリスト(ライトブロックリストまたはWBL
    )の形式で記憶される請求項37に記載のメモリシステム。
  39. 【請求項39】 WSLは予め決められた大きさで、ひとたびWSLが一杯
    になると少なくとも1個のSATブロックまたはASBブロックが更新され、W
    SLおよびWBLが空になる請求項38に記載のメモリシステム。
  40. 【請求項40】 コントローラは、開始物理セクタアドレスと、SATブロ
    ックまたはASBブロックが最後に更新されてからデータが書き込みされたセク
    タを有するブロック間のリンクとを半導体メモリの前記制御ブロックに記憶する
    請求項38に記載のメモリシステム。
  41. 【請求項41】 前記セクタは各々メモリの単一“ページ”、すなわち、メ
    モリセクタの前記ブロックにあるメモリセルの一列から成る前記請求項の何れか
    に記載のメモリシステム。
  42. 【請求項42】 コントローラは、均一にサイズ設定されたデータセグメン
    ト内のメモリセクタに対してデータを書き込み、また、前記メモリセクタからデ
    ータを読み込む前記請求項の何れかに記載のメモリシステム。
  43. 【請求項43】 全てのメモリセクタが同一サイズであり、前記データセグ
    メントは各々、前記メモリセクタと均等なサイズである請求項42に記載のメモ
    リシステム。
  44. 【請求項44】 コントローラがSATから最も新しくアクセスしたSAT
    を含む一群の連続SATエントリーを記憶させる一時的キャッシュメモリをさら
    に含む前記請求項の何れかに記載のメモリシステム。
  45. 【請求項45】 コントローラは、SATセクタの書き込み操作が実行され
    るたびに更新される全てのASBブロックとこれらのASBブロックが連想させ
    るSATブロックの物理アドレスのリスト(ASBL)を前記一時的キャッシュ
    メモリ内に作成する請求項8に従属する請求項43に記載のメモリシステム。
  46. 【請求項46】 半導体メモリは単一のメモリチップとして形成された単一
    のメモリアレイを備える前記請求項の何れかに記載のメモリシステム。
  47. 【請求項47】 半導体メモリは複数のメモリチップで形成されたメモリア
    レイを備える請求項1〜45の何れかに記載のメモリシステム。
  48. 【請求項48】 半導体メモリは複数のメモリチップで形成された複数のメ
    モリアレイを含み、コントローラは複数のメモリチップにあるメモリセクタから
    多重仮想ブロックを形成し、前記仮想ブロックはそれぞれ、前記メモリチップの
    各々のメモリセクタのうち1個の消去可能ブロックを含み、コントローラが前記
    仮想ブロックを消去用として処理するものと、非消去用として処理するものとに
    分別する請求項1〜45の何れかに記載のメモリシステム。
  49. 【請求項49】 コントローラは、消去処理される仮想ブロックのリストを
    コンパイルし、これをメモリシステムの一時的記憶域に保存し、また、各々の連
    続セクタ書き込み操作のために1つのチップから別のチップに移動するようにラ
    イトポインタ(WP)を制御し、この移動は、仮想ブロックの1つの消去可能ブ
    ロックにある1個のセクタから始まり、仮想ブロックの各消去可能ブロックにあ
    るセクタの書き込みが完了するまで、仮想ブロック内にあるその他の各消去可能
    ブロックのセクタを連続して移動し、次に最初のセクタが書き込みされたチップ
    に戻って、仮想ブロックがデータで満杯になるまで同様の方法で仮想ブロック内
    の各消去可能ブロックにある別のセクタへの書き込みを続け、その後、前記消去
    処理される仮想ブロックリストに載っている次の仮想ブロックにライトポインタ
    (WP)を移動し、この仮想ブロックを同様の手法で書き込みする請求項48に
    記載のメモリシステム。
  50. 【請求項50】 n回の連続セクタ書き込み操作のたびにコントローラがホ
    ストプロセッサから受け取った多重セクタ書き込みコマンドを実行し、nがメモ
    リシステムの半導体メモリチップの数より少ないかまたは等しい場合、コントロ
    ーラがチップの各nにおける1個のセクタに連続して同時に書き込みする請求項
    49に記載のメモリシステム。
  51. 【請求項51】 コントローラは、仮想ブロックにある全ての消去可能ブロ
    ックを同時に消去することで任意の前記仮想ブロックの消去を実行する請求項4
    9または50に記載のメモリシステム。
  52. 【請求項52】 個別にアドレス可能で、かつ、セクタの消去可能ブロック
    に配置された非揮発性メモリセクタを各々が有する複数の半導体メモリチップで
    あって、前記セクタは各々、メモリ内における自身の物理的位置を定義する物理
    アドレスを備える該半導体メモリチップと; メモリへのデータ構造の書き込みおよびデータ構造の読み出しのためのコン
    トローラとを具備するホストプロセッサに接続するためのメモリシステムであっ
    て、 コントローラは消去可能ブロックで仮想ブロックを形成し、前記仮想ブロッ
    クは、それぞれ、各メモリチップからの消去可能ブロックを含み、コントローラ
    は、仮想ブロックを消去処理されるものと非消去処理されつものとに分別し、か
    つ、1個の仮想ブロックにデータを充填してから、次にデータを充填させる仮想
    ブロックへと移動し、仮想ブロックの個々の消去可能ブロックにある1個のメモ
    リセクタに次から次に書き込みし、それにより異なるチップのセクタに連続して
    書き込みを行う反復順序でメモリセクタに書き込みすることで各仮想ブロックが
    充填されるメモリシステム。
  53. 【請求項53】 n回の連続セクタ書き込み操作のたびにコントローラがホ
    ストプロセッサから受け取った多重セクタ書き込みコマンドを実行し、nがメモ
    リシステムの半導体メモリチップの数より少ないかまたは等しい場合、コントロ
    ーラがチップのnそれぞれにおける1個のセクタに連続して同時に書き込みする
    請求項52に記載のメモリシステム。
  54. 【請求項54】 個別にアドレス可能で、かつ、セクタの消去可能ブロック
    に配置され、メモリ内で自身の物理的位置を定義する物理アドレスを持った複数
    の非揮発性メモリセクタを備える半導体メモリに対して、データ構造の書き込み
    および読み出しを行うコントローラであって、 該コントローラが使用されるメモリシステムのホストプロセッサから受け取っ
    た論理アドレスをメモリ内の前記メモリセクタの物理アドレスに翻訳する手段と
    ; セクタのブロックを消去用と非消去用とに分別する手段と; ホストプロセッサからのデータが書き込まれるセクタの物理アドレスを指示す
    るライトポインタ(WP)とを備え、 前記ライトポインタ(WP)は、消去用として処理される任意のブロックにお
    けるメモリセクタの物理アドレスをくまなく所定の順番で移動するように、また
    、ブロックが満杯の場合は、別の消去ブロックに移動するようにコントローラに
    よって制御され、 ホストプロセッサからセクタ書き込みコマンドを受けると、前記ライトポイン
    タ(WP)がその時点で指示する物理アドレスを論理アドレスに割当てることに
    よって、コントローラはホストプロセッサから受け取った論理アドレスをデータ
    が書き込みされる物理アドレスに翻訳し、 コントローラによって既に割当てられているそれぞれの物理アドレスで論理ア
    ドレスのセクタ割当てテーブル(SAT)をコンパイルして、ホストプロセッサか
    らのデータがメモリセクタに書き込みされる頻度より少ない頻度でSATを更新
    するよう構成されたコントローラ。
  55. 【請求項55】 個別にアドレス可能で、かつ、セクタの消去可能ブロック
    に配置され、しかもメモリ内で自身の物理的位置を規定する物理アドレスを持っ
    た複数の非揮発性メモリセクタを有する半導体メモリに対してデータ構造の書き
    込みおよび読み出しを制御する方法であって、 セクタのブロックを消去用ブロックと非消去用ブロックとに分別する工程と; ホストプロセッサからのデータが書き込まれるセクタの物理アドレスを指示す
    る少なくとも1個のライトポインタ(WP)を設け、前記ライトポインタ(WP
    )が、消去用として処理される任意のブロックにおけるメモリセクタの物理アド
    レスをくまなく所定の順番で移動するように、また、ブロックが満杯の場合は、
    別の消去ブロックに移動するように前記少なくとも1個のライトポインタ(WP
    )を制御し、ホストプロセッサからセクタ書き込みコマンドを受けると、前記ラ
    イトポインタ(WP)がその時点で指示する物理アドレスを論理アドレスに割当
    てることによって、ホストプロセッサから受け取った論理アドレスをデータが書
    き込みされる物理アドレスに翻訳する工程と; コントローラによってそれぞれの物理アドレスが既に割当てられている論理ア
    ドレスのセクタ割当てテーブル(SAT)を非揮発性半導体メモリに記憶する工程
    と; ホストプロセッサからのデータがメモリセクタに書き込みされる頻度より少な
    い頻度でSATを更新する工程 からなる前記の制御方法。
  56. 【請求項56】 ホストプロセッサに接続するためのメモリシステムであっ
    て、 個別にアドレス可能で、かつ、セクタの消去可能ブロックに配置された非揮発
    性メモリセクタを有する複数の半導体メモリであって、前記セクタは各々、メモ
    リ内における自身の物理的位置を定義する物理アドレスを備える該半導体メモリ
    と; データ構造のメモリへの書き込みおよび読み出しのためのコントローラとを具
    備し、 コントローラはホストプロセッサから受け取った論理アドレスをメモリ内の前
    記メモリセクタの物理アドレスに翻訳する手段を含み、 前記メモリセクタ(1)は、各々、物理的にデータ領域(300)とスペア領
    域(302)とに分割され、コントローラは、セクタのデータ領域(300)の
    始めからオフセットされるセクタ位置において、ヘッダデータおよびエラー修正
    コードデータ(ECC)を含むオーバーヘッドデータ(OD)を書き込みし、か
    つ、ホストプロセッサから受け取ったユーザデータをオーバーヘッドデータ(O
    D)の何れか一方の側のセクタにおける残りスペースに書き込みするよう構成さ
    れているメモリシステム。
  57. 【請求項57】 前記オーバーヘッドデータ(OD)は、セクタに書き込み
    されるユーザデータのうち少なくとも1ビットによって決定される総計によって
    オフセットされる請求項56に記載のメモリシステム。
JP2000600167A 1999-02-17 2000-02-17 メモリシステム Expired - Lifetime JP5011498B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB9903490.2A GB9903490D0 (en) 1999-02-17 1999-02-17 Memory system
GB9903490.2 1999-02-17
PCT/GB2000/000550 WO2000049488A1 (en) 1999-02-17 2000-02-17 Memory system

Publications (2)

Publication Number Publication Date
JP2002537596A true JP2002537596A (ja) 2002-11-05
JP5011498B2 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)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006051779A1 (ja) * 2004-11-10 2006-05-18 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置の制御方法、メモリコントローラ及び不揮発性記憶装置
US7242632B2 (en) 2002-06-20 2007-07-10 Tokyo Electron Device Limited Memory device, memory managing method and program
JP2007241539A (ja) * 2006-03-07 2007-09-20 Hitachi Systems & Services Ltd 半導体フラッシュメモリにおけるデータ管理及び制御システムと半導体フラッシュメモリ収容装置
JP2008004196A (ja) * 2006-06-23 2008-01-10 Toppan Printing Co Ltd 半導体メモリ装置
JP2009217391A (ja) * 2008-03-07 2009-09-24 Toshiba Corp メモリシステム
CN102859501A (zh) * 2010-04-16 2013-01-02 美光科技公司 存储器装置及系统中的引导分区

Families Citing this family (245)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
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
GB0123421D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Power management system
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123410D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123417D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
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
DE10227255B4 (de) * 2002-06-19 2008-06-26 Hyperstone Gmbh Verfahren zur Wiederherstellung von Verwaltungsdatensätzen eines blockweise löschbaren Speichers
DE10256509B4 (de) * 2002-06-19 2008-06-12 Hyperstone Gmbh Verfahren zum Adressieren von blockweise löschbaren Speichern
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
JP4567966B2 (ja) 2003-12-22 2010-10-27 株式会社東芝 エミュレーションシステムおよびエミュレーション方法
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
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
KR20070007265A (ko) 2003-12-30 2007-01-15 쌘디스크 코포레이션 제어 데이터 관리를 구비한 비휘발성 메모리 및 방법
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
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
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
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
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
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
KR100876084B1 (ko) * 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US7882299B2 (en) * 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
US7409473B2 (en) 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
US7849381B2 (en) 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
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
EP1851771A2 (en) * 2005-02-11 2007-11-07 M-Systems Flash Disk Pioneers Ltd. Nand flash memory system architecture
US7627712B2 (en) * 2005-03-22 2009-12-01 Sigmatel, Inc. Method and system for managing multi-plane memory devices
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
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
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
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
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 記憶媒体管理装置、記憶媒体管理プログラム、記憶媒体管理方法
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
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
US20070143566A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
EP1966700A2 (en) * 2005-12-21 2008-09-10 Nxp B.V. Non-volatile memory with block erasable locations
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
WO2007072313A2 (en) * 2005-12-22 2007-06-28 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 삼성전자주식회사 휴대단말기의 부팅 시간 단축방법
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
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
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
WO2008070812A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for data storage using progressive raid
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
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
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
EP2000913A1 (en) * 2007-06-08 2008-12-10 Axalto SA Method of managing flash memory allocation in an electronic token
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 삼성전자주식회사 멀티-비트 플래시 메모리 장치 및 그것의 프로그램 및 읽기방법
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
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US20090198952A1 (en) * 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
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 快閃記憶體裝置以及資料更新方法
KR20110086725A (ko) * 2008-11-10 2011-07-29 퓨전-아이오, 인크. 솔리드-스테이트 저장장치의 고장을 예측하는 장치, 시스템 및 방법
US9063874B2 (en) 2008-11-10 2015-06-23 SanDisk Technologies, Inc. Apparatus, system, and method for wear management
US9170897B2 (en) 2012-05-29 2015-10-27 SanDisk Technologies, Inc. Apparatus, system, and method for managing solid-state storage reliability
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
KR101760144B1 (ko) 2009-01-05 2017-07-31 샌디스크 테크놀로지스 엘엘씨 비휘발성 메모리 및 기록 캐시를 분할하는 방법
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8700840B2 (en) 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8040744B2 (en) 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
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.
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
US20120239860A1 (en) 2010-12-17 2012-09-20 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
US9177609B2 (en) 2011-06-30 2015-11-03 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
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
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
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
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
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling 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
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
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
US10248418B2 (en) 2015-06-30 2019-04-02 International Business Machines Corporation Cleared memory indicator
US10635307B2 (en) 2015-06-30 2020-04-28 International Business Machines Corporation Memory state indicator
US9853820B2 (en) 2015-06-30 2017-12-26 Microsoft Technology Licensing, Llc Intelligent deletion of revoked data
US10884945B2 (en) 2015-06-30 2021-01-05 International Business Machines Corporation Memory state indicator check operations
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
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
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
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
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997012324A1 (en) * 1995-09-27 1997-04-03 Memory Corporation Memory management
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

Family Cites Families (14)

* Cited by examiner, † Cited by third party
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 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
JP3407317B2 (ja) * 1991-11-28 2003-05-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
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
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
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
JPH11212873A (ja) * 1998-01-27 1999-08-06 Seiko Epson Corp コンピューターシステムの操作方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997012324A1 (en) * 1995-09-27 1997-04-03 Memory Corporation Memory management
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

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7242632B2 (en) 2002-06-20 2007-07-10 Tokyo Electron Device Limited Memory device, memory managing method and program
WO2006051779A1 (ja) * 2004-11-10 2006-05-18 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置の制御方法、メモリコントローラ及び不揮発性記憶装置
JP2007241539A (ja) * 2006-03-07 2007-09-20 Hitachi Systems & Services Ltd 半導体フラッシュメモリにおけるデータ管理及び制御システムと半導体フラッシュメモリ収容装置
JP2008004196A (ja) * 2006-06-23 2008-01-10 Toppan Printing Co Ltd 半導体メモリ装置
JP2009217391A (ja) * 2008-03-07 2009-09-24 Toshiba Corp メモリシステム
CN102859501A (zh) * 2010-04-16 2013-01-02 美光科技公司 存储器装置及系统中的引导分区
JP2013525886A (ja) * 2010-04-16 2013-06-20 マイクロン テクノロジー, インク. メモリデバイスおよびシステム中のブートパーティション
US8762703B2 (en) 2010-04-16 2014-06-24 Micron Technology, Inc. Boot partitions in memory devices and systems
US9342371B2 (en) 2010-04-16 2016-05-17 Micron Technology, Inc. Boot partitions in memory devices and systems

Also Published As

Publication number Publication date
DE60019903T2 (de) 2006-03-30
GB9903490D0 (en) 1999-04-07
US6725321B1 (en) 2004-04-20
KR20020009564A (ko) 2002-02-01
DE60019903D1 (de) 2005-06-09
JP5011498B2 (ja) 2012-08-29
EP1157328B1 (en) 2005-05-04
WO2000049488A1 (en) 2000-08-24
KR100644805B1 (ko) 2006-11-13
TWI244092B (en) 2005-11-21
EP1157328A1 (en) 2001-11-28

Similar Documents

Publication Publication Date Title
JP5011498B2 (ja) メモリシステム
US7634624B2 (en) Memory system for data storage and retrieval
US6813678B1 (en) Flash memory system
US7624239B2 (en) Methods for the management of erase operations in non-volatile memories
US7783845B2 (en) Structures for the management of erase operations in non-volatile memories
JP4960705B2 (ja) マルチブロック単位へのブロックの適応決定論的グループ化
US8386695B2 (en) Methods and apparatus for writing data to non-volatile memory
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
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US7631162B2 (en) Non-volatile memory with adaptive handling of data writes
JP5813589B2 (ja) メモリシステムおよびその制御方法
US20100169540A1 (en) Method and apparatus for relocating selected data between flash partitions in a memory device
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR101678868B1 (ko) 플래시 주소 변환 장치 및 그 방법
KR20120129895A (ko) 플래시 메모리 상에 소거 성능을 개선하기 위한 소거 명령 캐시
WO2011048738A1 (ja) 半導体記憶装置および制御方法
WO2007081598A2 (en) Adaptive handling data writes in non-volatile memories
US10268400B2 (en) System and method for file detection and usage during compaction
JP4737223B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

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