Nothing Special   »   [go: up one dir, main page]

JP2009503745A - ブロック管理を伴う不揮発性メモリ - Google Patents

ブロック管理を伴う不揮発性メモリ Download PDF

Info

Publication number
JP2009503745A
JP2009503745A JP2008525178A JP2008525178A JP2009503745A JP 2009503745 A JP2009503745 A JP 2009503745A JP 2008525178 A JP2008525178 A JP 2008525178A JP 2008525178 A JP2008525178 A JP 2008525178A JP 2009503745 A JP2009503745 A JP 2009503745A
Authority
JP
Japan
Prior art keywords
block
blocks
list
record
page
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
JP2008525178A
Other languages
English (en)
Other versions
JP2009503745A5 (ja
JP4547028B2 (ja
Inventor
ダブリュー. シンクレア,アラン
ライト,バリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/459,260 external-priority patent/US7552271B2/en
Priority claimed from US11/459,268 external-priority patent/US7558906B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Priority claimed from PCT/US2006/030228 external-priority patent/WO2007019217A1/en
Publication of JP2009503745A publication Critical patent/JP2009503745A/ja
Publication of JP2009503745A5 publication Critical patent/JP2009503745A5/ja
Application granted granted Critical
Publication of JP4547028B2 publication Critical patent/JP4547028B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

ブロック消去可能なメモリアレイを含む不揮発性メモリシステムでは、特定の分類のブロックのためのレコードを個別に保守する。ブロックのために1つ以上のリストを保守でき、個々のリストは記述子値に従って序列される。このような序列リストは、記述子値によるブロックの迅速な識別を可能にする。

Description

本願は、半導体フラッシュメモリ等の再プログラム可能な不揮発性メモリシステムの動作に関し、より具体的にはメモリアレイの個別に消去可能なブロックの管理に関する。
ホストシステム、メモリシステム、その他の電子システムの外部インターフェイスを通じて通信されるデータをアドレス指定するには主に2つの手法がある。そのうちの一手法では、システムによって生成または受信されるデータファイルのアドレスが、データの論理ブロックとして設定された別個の連続論理アドレス空間範囲にマップされる(これ以降「LBAインターフェイス」と称する)。アドレス空間の大きさは通常、システムで取り扱うことのできるアドレス全域を十分にカバーする。一例において、磁気ディスク記憶ドライブは、このような論理アドレス空間を通じてコンピュータをはじめとするホストシステムと通信する。このアドレス空間は、ディスクドライブの全データ記憶容量を十分にアドレス指定する大きさを持つ。
フラッシュメモリシステムは多くの場合、パーソナルコンピュータやカメラ等の様々なホストと着脱可能な状態で接続するメモリカードまたはフラッシュドライブの形で提供されるが、このようなホストシステムの中に埋め込まれることもある。ホストは通常、メモリへデータを書き込む場合に、メモリシステムの連続する仮想アドレス空間の中でセクタ、クラスタ、あるいはその他のデータ単位に一意な論理アドレスを割り当てる。ホストは、ディスクオペレーティングシステム(DOS)のように、メモリシステムの論理アドレス空間の中のアドレスにデータを書き込み、かつこれからデータを読み出す。メモリシステムの中のコントローラは、ホストから受け取った論理アドレスをメモリアレイの中のデータが実際に記憶される物理アドレスに翻訳し、これらのアドレス翻訳の経緯を把握する。メモリシステムのデータ記憶容量は少なくとも、メモリシステムのために規定される論理アドレス空間全体にわたってアドレス指定可能なデータ量に相当する。
現在の商用フラッシュメモリシステムにおける消去単位のサイズは、複数セクタのデータを十分に記憶するメモリセルブロックまで拡大している。事実、多数のデータページが1つのブロックに記憶され、1ページで複数セクタのデータを記憶できる。さらに、多くの場合、2つ以上のブロックがまとめてメタブロックとして扱われ、このようなブロックのページはまとめてメタページとして論理的にリンクされる。多数のセクタのデータを含むデータのページまたはメタページがまとめて読み書きされることにより、操作の並列性を高めている。そのような大容量操作単位には、それらを効率的に操作するという課題がともなう。
説明を平易にするため、別段の断りがない限り、ここで用いる用語「ブロック」は、ある特定のシステムでメタブロックが使われるか否かに応じて、ブロック消去単位または多重ブロック「メタブロック」を指すことを意図する。同様に、ここで言及する「ページ」は、システム構成に応じて、単一のブロックまたはメタブロック内の「メタページ」の中でのプログラミングの単位を指すことがある。
現在普及しているメモリシステムのLBAインターフェイスが使われる場合、メモリの接続先にあたるホストによって生成されるファイルには、インターフェイスの論理アドレス空間の中で一意なアドレスが割り当てられる。次いで、メモリシステムは普通、論理アドレス空間とメモリの物理ブロックのページとの間でデータをマッピングする。メモリシステムは論理アドレス空間から物理メモリへのマッピングを絶えず把握するが、ホストはこれを知らない。ホストは、論理アドレス空間の中でそのデータファイルのアドレスを絶えず把握するが、メモリシステムはこのマッピングについて無知かまたはほぼ無知の状態で動作する。
米国特許出願第11/382,224号 米国特許出願第11/382,228号 米国特許出願第11/382,232号 米国特許出願第11/382,235号
使用されている2通りのシステムインターフェイス手法の2番目の手法では、電子システムによって生成または受信されたデータファイルが一意に識別され、そのデータはファイル内でのオフセットによって論理的にアドレスされる。コンピュータをはじめとする他のホストシステムと「スマートカード」として知られる着脱可能なメモリカードとの間では、このアドレス指定方法の形態が使われている。スマートカードは通常、識別、バンキング、販売時点購入、ATMアクセス等のために消費者に利用され、フラッシュメモリカードやフラッシュドライブに比べて少量のメモリを内蔵する。
前に相互参照した特許出願において、大容量フラッシュメモリシステムではホストによって割り当てられたファイル名によってデータファイルが識別され、このファイルのデータはファイル内のオフセットアドレスによってアクセスされる(これ以降「直接データファイルインターフェイス」と称する)。次いで、メモリシステムは、各セクタまたはその他のデータ単位が帰属するホストファイルを知る。ここで論じるファイル単位は、例えば連続する論理オフセットアドレスによって序列される1組のデータであり、メモリシステムの接続先にあたるホスト演算システムで動作するアプリケーションプログラムによって作成され、一意に識別される。
前に援用されている4つの米国特許出願(2006年5月8日に出願された米国特許出願第11/382,224号(特許文献1)、第11/382,228号(特許文献2)、第11/382,232号(特許文献3)、第11/382,235号(特許文献4))では、メモリシステムの動作中にアクセスされるブロックのリストを保守する手法が説明されている。リスト上の個々の項目は、メモリブロックのパラメータとそれぞれのアドレスとを含む。リスト内の項目は、これに対応するブロックの物理アドレスか、またはこの項目の中に記録されたブロックパラメータの値のいずれかに従って選択できる。本願明細書は、フラッシュメモリの指定されたブロックの中でデータブロックの1つ以上のリストを記憶することに、またリスト内の特定の項目に、この項目の中にあるフィールドの情報内容に基づきアクセスすることに関する。
その手法では、2つ以上のリスト上で全ブロックの情報を収容する整列されていないレコードを記憶するため、指定されたブロック内の論理ページのいくつかを使用する。その他のページは、ブロックの内容アドレス指定可能なパラメータと、ブロックの完全レコードへのポインタだけを収容する項目のリストのために使用する。これらのリストの中ではパラメータ値の順序で項目が記憶され、ある特定のパラメータ値を持つ項目には速やかにアクセスできる。これらのリストは、整列されていないブロックレコードに対し一種のディレクトリとしての役割を果たす。
ブロック消去可能な不揮発性メモリでは、個々のブロックとそこに収容されたデータについて最新の情報を保守すれば、効率的なメモリ管理が可能となる。1つ以上のファイルの有効データと、用済みデータと、消去済みの空間とが混在するブロックの場合、これは非常に複雑である。しかし、このようなデータをブロック単位で把握すれば、ある種のメモリシステム操作は、特にメモリアレイにおける使用されていない空間の再生は、効率的に遂行できる。使用されていない空間(用済みデータを収容する空間または使用されていない消去済みの空間)の再生はブロック単位で行われる(ここでブロックは消去の単位である)。有効データのコピーを減らすため、ブロックに対するブロック再生操作は効率的な順序で遂行することが望ましい。ブロック再生の順序を決定するには、1つ以上の記述子値の順序でブロックを格付けすると有益であり、ここで、記述子値は、ブロックに記憶されるデータの少なくとも1つの態様を記述する。例えば、ブロックは、そこに収容された有効データの量によって序列でき、そのようにして収容する有効データ量が最も少ないブロックを最初に再生するべく速やかに識別できる。
第1の例において、必ずしも全てのブロックではないが、メモリアレイの様々なブロックのために、レコードを保守する。有効データを収容するブロックは、それらが消去済みの空間を収容するか否かに従い(不完全ブロック)、収容しない場合にはそれらが用済みデータを収容するか否かに従い(用済みブロック)、分類される。これとは別に、用済みデータだけを収容するブロック(無効ブロック)と消去済みの空間だけを収容するブロック(消去済みブロック)とが分類される。これらの分類のいずれか1つに該当する各ブロックにつきレコードを保守する。レコードは専用のレコードブロックにて保守される。加えて、分類されたブロックはリストに列挙され、このリストは記述子値によって序列される。記述子値は、ブロック内の有効データ量、ブロックのアドレス、または他の何らかの記述子値であってもよい。リスト項目は、第1の例において、対応するレコードのポインタを収容する。
第2の例では、様々な分類に該当するブロックのためのレコードも保守する。2つ以上のファイルのデータを収容し、かつ用済みデータもあるいは消去済みの空間も収容しないブロックのために分類「コンプリート共通ブロック」が加えられる。レコードは、専用レコードブロックの中の専用レコードページにて保守される。レコードは、ブロックのブロックアドレス、ブロックに収容された有効データ量、書き込みポインタの位置等を含む、対応するブロックについて様々な情報を収容できる。
個々のレコードを速やかに見つけることを可能にするためにディレクトリが提供される。ディレクトリの中の項目は、レコードページと、レコードページにおける対応するレコードの位置とを識別する。ディレクトリはディレクトリブロックの中の専用ディレクトリページにて保守され、ディレクトリの項目はブロックアドレスによって序列される。ディレクトリページは重複しないブロックアドレス範囲を収容する。1つのディレクトリページで複数のレコードページのポインタを収容できる。しかし、1つのディレクトリページの項目によって指示されるレコードは1レコードページに収容されたレコードだけである。したがって、レコードページの中でレコードが更新されるときには、ただひとつのディレクトリページを更新すればよい。
ディレクトリブロックはまた、1つ以上のリストを収容できる。リスト内の項目はブロックアドレスと記述子値とを収容し、リスト内の項目は記述子値によって序列される。ブロック内の有効データ量は代表的な記述子値である。再生またはその他の目的でブロック内のデータに基づきブロックを選択するにあたって、リストは簡便な手段を提供する。例えば、有効データ量を記述子値として使用する用済みブロックのリストでは、有効データ量が最も少ない用済みブロックが最初の項目になる。このブロックは再生のためにリストから速やかに識別でき、かくしてリストは再生操作のためのキューを提供する。別の例では、ある特定の記述子値を持つブロックを探すことができる。これは、適切なリストページでバイナリ探索を遂行することによって速やかに識別できる。
第3の例では、不揮発性メモリアレイの各ブロックにつき常時レコードを保守する。この場合のディレクトリページは固定ブロックアドレス範囲の項目を収容し、項目はブロックアドレスによって順次に序列される。これは、特定のブロックの項目をディレクトリページの中で所定のオフセットのところに提供するため、項目の参照先にあたるブロックのブロックアドレスを項目に収容する必要はない。
ここではフラッシュデータファイルインターフェイスとともに動作するフラッシュメモリに使われるリストを管理しこれにアクセスする手法を説明するが、これらの手法は様々な用途でタイプの異なるリストに役立てることもできる。
詳細な第1の例
前述した特許出願で説明されている直接データファイル記憶法はブロックのリストを作成し、個々のブロックの使用に関する所定の値を持つ項目がこのリストから選択される。ここでは、これらのブロックリストの内容アドレス指定可能な探索のための手法を説明する。本願明細書では、添付の図1〜3を参照する。
図1は、メモリセルブロックの、この内容に基づく、分類を示す表である。事実上メモリシステムの全ブロックが図に示されたとおりに分類される。この例では3つの別々のリスト、すなわち不完全ブロックのリストと、用済みブロックのリストと、消去済みブロックのリストとを保守する。
この例で認識されるブロックのタイプは次のとおりである。
「プログラムブロック」は部分的にプログラムされ、かつただひとつのファイルの有効データを収容する。このブロックにはある程度の消去済み容量が残存する。これはある程度の用済みデータを収容することもある。
「共通ブロック」は部分的にプログラムされ、かつ2つ以上のファイルの有効データを収容する。ある程度の消去済み容量が残存する。ある程度の用済みデータを収容することもある。
「フル共通ブロック」は完全にプログラムされ、かつ2つ以上のファイルの有効データを収容する。ある程度の用済みデータを収容することもある。
「ファイルブロック」は完全にプログラムされ、かつ1つのファイルの有効データを収容する。ある程度の用済みデータを収容することもある。
「無効ブロック」は有効データを収容しない。無効ブロックは少なくともある程度は用済みデータを収容し、消去済み容量を収容することもあるが、有効データは収容しない。
「消去済みブロック」はブロックの全容量がプログラムされておらず、データを受け付けることができる。消去済みブロックの中にデータはない。メモリがデータで満たされているかまたはほぼ満たされている場合は通常、使用中のブロックの中にある使われていない容量を連続的に再生することによって特定の最小消去済みブロック数のプールを維持する。
この例を目的とし、前述したタイプを持つブロックは次に示す3つの分類に分類される。
「不完全ブロック」はある程度のプログラムされていない容量を収容し、1つ以上のファイルの有効データを収容し、かつある程度の用済みデータを収容することがある。プログラムブロックと共通ブロックは不完全ブロックの例である。
「用済みブロック」は、ある程度の用済みブロックを収容するファイルブロックまたはフル共通ブロックである。用済みブロックは消去済み容量を収容せず、有効データと用済みデータの両方を収容する。
「消去済みブロック」の定義は同一名のブロックタイプと同じであり、つまりデータがないブロックである。
メモリアレイの全てのブロックがこれらの分類に入るわけではないことと、ブロックによってはこれらの分類から外れることがあることと、またこのようなブロックがこの例のリストに出現しないこととに留意すべきである。
記憶容量を再生するためのブロックを選択する場合、主な要因となるのは、ブロック内の有効データ量(有効データ容量)である。ブロックに対する再生操作にあたってはこれの有効データを別のブロックへコピーする必要があるから、有効データ量が最も少ないブロックが最初に選ばれる。というのは、データコピーには時間がかかり、データをプログラムし読み出すにあたってメモリシステムの効率的な動作に支障をきたすおそれがあるからである。容量の大半が消去済みでデータを記憶するために使用できるブロックの利点は、いくぶんこれに相反する。有用な消去済み記憶容量を持つブロックを再生することによって得られる記憶空間の増大はさほど大きくないから、そのようなブロックは再生操作にとって好ましくない。この特定の例の不完全および用済みブロックリストは、ブロックに収容された有効データ量(ページ数)と消去済みの量(ページ数)とに基づきブロックを分類するために使用される。ここで説明するこれらのリストの目的は、再生操作に供されるブロックを一度に1つずつ選択することにある。
ブロックリストのタイプとアクセス
不完全ブロックリスト(Pリスト)は、システム内の全ての不完全ブロックにつき、すなわちある程度の有効データとある程度の消去済み容量の両方を収容する全ブロックにつき、項目を収容する。ある程度の用済みデータを収容することもある。
用済みブロックリスト(Oリスト)は、不完全ブロックリストに項目を持たない、用済みデータを収容する、システム内の全ブロックにつき項目を収容する。
消去済みブロックリスト(Eリスト)は、システム内の全消去済みブロックにつき項目を収容する。
フラッシュメモリ操作の一具体例において、次のブロックリストを保守する。
P(V)リスト:ブロックに記憶される有効データ容量に従って項目が序列される不完全ブロックリスト
P(A)リスト:ブロックのブロックアドレスに従って項目が序列される不完全ブロックリスト
O(V)リスト:ブロックに記憶される有効データ容量に従って項目が序列される用済みブロックリスト
O(A)リスト:ブロックのブロックアドレスに従って項目が序列される用済みブロックリスト
Eリスト:消去済みブロックリスト
P(V)リスト、O(V)リスト、P(A)リスト、O(A)リストとは、ブロックレコードの共通セットに対し「ディレクトリ」の役割を果たす。再生ブロックを選択するには、有効データ容量値が最も低い項目がP(V)リストとO(V)リストとから読み出される。アクティブブロックを選択するには、最も高い有効データ容量値が目標値に満たないかまたはこれに等しい項目がP(V)リストから読み出される。消去済みブロックを選択するには、Eリスト上の最初の項目が読み出され、リストから削除される。
PリストまたはOリストで項目を更新するには、ターゲットブロックアドレスを持つ項目がP(A)リストまたはO(A)リストから読み出される。
ブロックリストの記憶法
前述したセクションで明らかにしたブロックリスト上のブロックに関係する情報を記憶するために、1つ以上のブロックまたはメタブロックが割り当てられる。これらはレコードブロックとして知られ、書き込みまたは更新が1ページ単位で行われる。レコードブロック内の情報のために内容アドレス指定が使用される。
各々のレコードブロックは一定数の論理ページを収容し、論理ページの各々は、使用可能な次の物理ページへこれを再度書き込むことによって更新できる。リスト内のブロックについて情報を収容するレコードを記憶するため、複数の論理ページが割り当てられる。これらはレコードページとして知られている。
レコードは、ブロックリスト内の全ブロックにつき存在する。レコードページとこれの中にあるレコードはどんな順序でもよい。異なるブロックリストの中にあるブロックのレコードを別々にする必要はない。レコードページの中には用済みレコードが存在することがあり、これは、ブロックリストへ追加されたブロックの新しいレコードに置き換えることができる。レコードは、ブロックの物理アドレスと、ブロックの中にある有効データ量(有効データ容量)を定める値とを、他の情報と併せて収容する。
個々のブロックリストの1ブロックリストの中でブロックを識別する項目を記憶するため、1つ以上の論理ページが割り当てられる。これらはリストページとして知られている。異なるブロックリストのための別々のリストページが使用される。リストページ内の各項目は、記述子値を、レコードページ内のブロックレコードのポインタと併せて収容し、記述子値は、対応するブロックの物理アドレスか、またはブロック内の有効データ容量の値(またはブロック内のデータに関連する他の何らかの値)である。レコードに対応するブロックが2つのブロックリストに現れる場合は、異なるブロックリストの異なるリストページにある2つのリスト項目が同じレコードを指示する。
ブロックリスト内の項目は、ブロックのレコードの共通セットに対し「ディレクトリ項目」の役割を果たす。
不完全ブロックリストまたは用済みブロックリストのリストページでは、それらの記述子の順序で項目が記憶される。項目は稠密な形式で書き込まれ、リストページ内の書き込まれていない項目位置は通常、書き込まれた最後の項目の後ろにある。リストページは重複しない記述子範囲を記憶する。リストページが満杯になると、新しい論理ページをリストページとして割り当てることによってその項目を2つのリストページに分けることができる。同様に、記述子範囲が隣接する2つのリストページの項目数がしきい値を下回る場合は、2つのリストページを1つにまとめることができる。レコードブロックのインデックスは、各リストページの最初の項目の記述子を収容する。
不完全ブロックリストまたは用済みブロックリストの中でブロックアドレスかまたは有効データ容量の目標値を持つ項目は、レコードブロックインデックスから該当する記述子範囲を持つリストページを識別することにより、そのページをフラッシュから読み出し、次いでそのページの中で目標項目のリニア探索かまたはバイナリ探索を遂行することにより、見つけることができる。そして、この項目より識別されるレコードページからターゲットブロックのレコードを読み出すことができる。
消去済みブロックリスト内のブロックの項目はリストページに記憶でき、ここでそれらは、それらが書き込まれた順序を保つ。消去済みブロックは常にリストの中で最も古い項目として選択される。
レコードブロックの構造
ブロックリストの中で参照されるブロックの全ての項目とインデックス情報は、フラッシュメモリの1つ以上のレコードブロックに収容される。レコードブロックはメタブロックであり、ページ単位で更新される。
レコードブロックは次の特性を持つ。
1.あらゆるタイプのブロックリストをまとめて1つのレコードブロックに記憶できる。
2.必要に応じ、複数のレコードブロックを使用できる。
3.レコードブロックは特定の数の論理ページを持ち、これはこの例においてブロック内の物理ページ数の25%に規定される。
4.最後に書き込まれたページのレコードブロックインデックスセクションは、各論理ページから物理ページへのマッピングを提供する。
5.論理ページは、使用可能な次の物理ページにこれを再度書き込むことによって更新できる。
6.ブロックリストのため、またはブロックのレコードのために使用されるあらゆるタイプのページに論理ページを割り当てることができる。
7.レコードブロックは、満杯のときに圧縮され消去済みブロックに再度書き込まれる。
図2にはレコードブロックの一例の構造が示されている。
レコードブロックインデックス
レコードブロックインデックスは、レコードブロックの中にある各ページの1セクションとして存在する。これは最後に書き込まれたページの中にあるものだけが有効である。レコードブロックインデックスは可能な各論理ページにつき項目を収容し、論理ページ番号に従って序列される。各項目は次に示す3つのフィールドを持つ。
1.ページタイプを識別する数字コード
a.P(V)リストページ
b.P(A)リストページ
c.O(V)リストページ
d.O(A)リストページ
e.Eリストページ
f.レコードページ
g.割り当てされていない論理ページ
2.ページ内の最初の項目の値(これにより、P(V)、P(A)、O(V)、O(A)リストページの各タイプで値の範囲を設定し、キャッシュできる。)
3.論理ページのマップ先にあたる物理ページのポインタ
レコードページ
レコードはそのリストのうちの1つの項目をブロックに関係する必要情報を全て収容し、レコードページに記憶される。レコードページは次に示す3つのセクションに細分される。
1.項目状態
2.レコード
3.共通ブロックレコード
項目状態セクションは、レコードが使用中か、それとも新しいブロックに割り当てることができるかを指示するビットマップを備える。レコードセクションはリスト内の全ブロックにつき一定サイズの項目を有し、フィールドはブロックの属性を次のとおりに規定する。
1.ブロックアドレス
2.ブロック内の有効データ容量
3.ブロック内のページ書き込みポインタの位置
4.ブロック内の最初のデータグループのファイルID
5.ブロック内にデータが存在するファイルの合計数
6.ブロックの共通ブロックレコードへのオフセット(値0は共通ブロックレコードが存在しないことを意味する。)
共通ブロックレコードセクションの項目のサイズは不定であり、フィールドは共通ブロック内の他のファイルIDを次のとおりに規定する。
1.共通ブロックにおける後続データグループのファイルID
2.レコード終了インジケータ
ブロックリストからブロックが削除される場合、レコードページは用済み項目を収容する。このようなレコードは、リストに追加される新しいブロックに再び割り当てることができる。
ブロックに割り当てられるレコードブロックの中の論理ページ番号とそのページ内のレコード番号は、レコードを参照するためにリストページによって使用されるため、通常は変更されない。しかし、ブロックのレコードを同一のリストページ内の別のレコード番号、別のリストページ、または別のレコードブロックへ移すことは許される。ブロックのレコードが移される場合、いずれかのリスト項目でそのポインタを相応に更新しなければならない。
レコードページが修正され再度書き込まれる場合、用済みの空間をなくすために共通ブロックレコードを圧縮でき、共通ブロックレコードへのオフセットの変化を反映させるためにレコードを更新できる。
レコードと共通ブロックレコードとの間の境界は動的である。
図3にはブロックレコードページの一例の構造が示されている。
リストページ
リストページは、1組のブロックの項目を、記述子値によって規定される順序で収容する。P(V)リストとO(V)リスト内の項目における記述子は有効データ容量であり、P(A)リストとO(A)リスト内の項目における記述子はブロックアドレスである。
有効項目はリストページの中で一連の項目位置を占めるが、ページ全体を埋め尽くす必要はない。この中に用済み項目はなく、記述子値は連続しなくともよい。
リストページ内の項目は、記述子フィールド内の値の順序に並ぶ。記述子値の範囲は、他のリストページ内の記述子値の範囲と重複しない。
ブロックリストへ追加されたブロックのための項目を挿入する必要がある場合、その新しいブロックの記述子値を記述子範囲に含むリストページを識別する。新しい項目は記述子範囲内の適切な位置に挿入され、リストページは再度書き込まれる。項目を削除しなければならない場合、その項目を省いてリストページが圧縮され、再度書き込まれる。
満杯になったリストページへ追加を行わなければならない場合、空き論理ページが新しいリストページとして割り当てられ、満杯のリストページの記述子範囲は、2つのほぼ等しい重複しない範囲に分割され、それらは2つの使用可能なリストページに書き込まれる。
記述子範囲が隣接する2つのリストページで総有効項目数がしきい値(この例では、リストページにおける項目位置数の70%)を下回ると、2つのリストページの範囲は統合され、2つのリストページのうちの一方に書き込まれる。次いで、他方の使用されていないページは空き論理ページとなる。
P(V)リストとO(V)リストの場合、リストページ内の項目内のフィールドは次のとおりである。
1.ブロック内の有効データ容量
2.レコードページ内のブロックのレコードを指すポインタ(レコードページはリストページと同じレコードブロックの中になくてもよい。)
P(A)リストとO(A)リストの場合、リストページ内の項目内のフィールドは次のとおりである。
1.ブロックアドレス
2.レコードページ内のブロックのレコードを指すポインタ(レコードページはリストページと同じレコードブロックの中になくてもよい。)
Eリストの場合、リストページ内の項目内のフィールドは次のとおりである。
1.ブロックアドレス
レコードのアクセスシーケンス
PリストまたはOリストで目標ブロックのレコードにアクセスするには、次のステップからなるシーケンスを使用する。
1.P(V)リスト、O(V)リスト、P(A)リスト、またはO(A)リストを目標リストとして設定する。
2.レコードブロックの中で最後に書き込まれたページからレコードブロックインデックスを読み出す。この情報はあらかじめキャッシュの中に存在することがある。
3.ステップ1で規定した目標リストで目標記述子値のリストページに割り当てられた論理ページ番号を判定する。
4.ステップ3で判定した論理ページ番号をレコードブロックから読み出す。
5.目標ブロックの項目を読み出すために、ステップ4で読み出したリストページを探索する。
6.ステップ5で読み出した項目によって規定されるレコードブロックからレコードページを読み出す。
7.ステップ6で読み出したレコードページからターゲットブロックのレコードを読み出す。
詳細な第2の例
第2の例では前述した第1の例と同じく、特定のブロックが、そこに収容されるデータに従い、それぞれ分類され、これらのブロックのためのレコードが保守される。リストは、ブロックに記憶されるデータに関係する記述子値に従って序列され、保守される。ブロックの中にある有効データ量は、このような記述子値の一例である。しかし、この第2の例で、ブロックの管理に用いる構造および方法のいくつかは異なる。第1および第2の例の構造および方法は代案とみなすべきものであり、両例の構造および/または手法の様々な組み合わせもまた本発明の開示の一部とみなされる。第2の例は、第1の例との違いに焦点をあてながら説明する。よって、両例に共通の要素は第2の例に関して重ねて詳述しない場合がある。
第2の例のブロック分類は第1の例のブロック分類と同じであり、「コンプリート共通ブロック分類」が追加される。図4は、追加の分類「コンプリート共通ブロック」を除いて図1とほぼ同じブロック分類表を示す。「不完全ブロック」、「用済みブロック」、「消去済みブロック」、または「コンプリート共通ブロック」のブロック分類を有する各ブロックにつきレコード項目を保守する。分類「コンプリート共通ブロック」は、消去済み容量を収容せず、かつ用済みデータを収容しない共通ブロックに使われる。コンプリート共通ブロック(CCB)のレコードは、全コンプリート共通ブロックのブロックレコードにより保守される。再生のために使用できる空間を持たない(消去済みの空間も用済みの空間も持たない)コンプリート共通ブロックは通常、再生操作に供されない。しかし、コンプリート共通ブロックの中である程度のデータが用済みになると、そのブロックは用済みブロックとして再分類され、再生操作に供されることがある。そのような再分類が行われる場合には、ブロックに記憶されるデータの関連情報を収容するブロックレコードが必要である。この情報はブロックの既存のCCBレコード項目から使用可能である。したがって、コンプリート共通ブロックのレコードを保守すれば、ブロックのレコードを生成するために情報を探索するという重い負担を伴わずにコンプリート共通ブロックから用済みブロックへの移行を果たすことができる。
図1および4の分類方式は例示的なものであり、これ以外の方式も予期される。(後ほど詳述する)一例において、メモリアレイの中にある全ブロックのために常時レコードを保守する。この場合は、用済みデータを持たないファイルブロックのための追加のブロック分類を図4の表に加えることができる。別の例では、図4の分類のいくつかは必要とされない。例えば、消去済みブロックや無効ブロックのレコードは保守しなくてよい。さらに別の例では、図4とは異なるブロックタイプにブロックを分けることができる。図4のブロックタイプが特定のメモリ管理方式にとって好都合であるが、他のメモリ管理方式で異なるブロックタイプを使用できることも理解できよう。
図4の表に記載されたブロック分類のいずれか1つに該当する全ブロックにつきレコードを保守する。ブロック分類が異なるブロックのレコードを同じページにまとめて記憶できる。この例では、ブロックレコードだけを記憶する専用のブロックレコードブロックを保守する。レコードブロック内の個々のレコード項目へのアクセスを促進するため、ブロックディレクトリを保守する。(ブロックディレクトリとブロックレコードの両ページをただひとつのブロックで収容する第一の例と違って)ブロックディレクトリとブロックレコードは、フラッシュメモリの中で別個の1組のブロックに記憶される。図5は、ディレクトリブロック503の中にあるブロックディレクトリ項目501を示し、このブロックディレクトリ項目は、ブロックレコードブロック509の中にある対応するブロックレコード507の位置を指すポインタ505を含む。ブロックディレクトリ項目501はブロックアドレス506をも含む。
ブロックディレクトリは、ブロックレコードに項目が存在する各ブロックにつき1つのブロックディレクトリ項目を収容する。ブロックディレクトリ項目は重複しないブロックアドレス値範囲の中で記憶され、各々の範囲は別々のブロックディレクトリページに割り当てられる。範囲の中ではブロックアドレス値に従って項目が序列される。目標ブロックアドレスのブロックディレクトリ項目は、1つのブロックディレクトリページを読み出すことにより、またそのページの中でバイナリ探索を遂行することにより、見つけることができる。このようにしてブロックディレクトリは、ブロックアドレスに従って特定のブロックレコード項目を見つける簡便な手段を提供する。
用途によっては、ブロックアドレス以外の基準によってブロックを探索することが望ましい。場合によっては、ブロックに記憶されるデータに関連する記述子値をこのような探索に使用できる。例えば、再生の目的で、有効データが最も少ない不完全ブロックを識別することが望まれるかもしれない。このようなブロックを見つける一方法として、収容された有効データ量が最も少ないブロックがどれなのかを判定するために全ブロックのレコード項目を探索する。しかし、そのような探索によって多大な負担が加わるかもしれない。一代案では、収容される有効データ量(有効データ容量)に従ってブロックが序列されるブロックのリストを保守する。この場合は収容された有効データ量の順にブロックがリストされるから、有効データ量が最も少ないブロックを識別するには、そのリストの中の最初(または最後)の項目を読み出すだけでよい。同様に、一定量の有効データを持つブロックが必要ならば、バイナリ探索でこのようなブロックを速やかに識別できる。ブロックに記憶される有効データ量はリスト項目の中の記述子値によって与えられる。このような記述子値は、ブロックに記憶されるデータを記述する。これは、ブロックの物理位置を記述する(第一の例で記述子値として使われる)ブロックアドレスと対照をなす。
レコードのフィールドの中で規定されるブロック内の有効データ量の記述子値に従ってブロックレコードにアクセスするため、2段階探索プロセスを取り入れたメカニズムが提供される。この内容アドレス指定メカニズムを使用できるブロック分類の場合、有効データ容量値を収容する項目は、ブロックディレクトリの中で別々のリストページに記憶される。これらのブロックリスト項目は重複しない有効データ容量値範囲の中で記憶され、各々の範囲は別々のブロックリストページに割り当てられる。範囲の中では有効データ容量値に従って項目が序列される。各々のブロックリスト項目はブロックアドレスを収容し、そのアドレスは明確にブロックディレクトリ項目を識別する。ブロックリスト項目511はブロックアドレス513を収容し、これはブロックアドレス506と同じであり、よってブロックディレクトリ項目501を識別する。ブロックリスト項目511はまた、ブロックアドレス513を有するブロックの有効データ容量515を収容する。目標有効データ容量値のブロックディレクトリ項目は、1つのリストページを読み出すことにより、そのページの中でバイナリ探索を遂行して目標有効データ容量値を持つ項目を見つけることにより、さらに1つのディレクトリページを読み出すことにより、次いでそのディレクトリページの中でバイナリ探索を遂行して目標ブロックアドレスを持つ項目を見つけることにより、見つけることができる。
バイナリ探索は、単にページの記述子値範囲の中間にある項目を調べることを意味する場合がある。この項目の記述子値と探している記述子値との比較に基づき、探索はページの半分に限定される。そしてこの半ページの中間にある項目も同様に調べ、探索はページの4分の1に限定される。連続するステップの後には、探している記述子値を有する1つ以上の項目が見つかる。別の例では、探している記述子値がリストの中で最下位(または最上位)であるため、バイナリ探索は必要ない。したがって、リスト内の最初(または最後)の項目が選択される。
ブロックレコードはブロックディレクトリの中の項目によって直接アドレス指定できる。ブロックレコードのページは、同じまたは別のブロックレコードブロック内のプログラムされていない位置へページを移す読み出し/修正/書き込み操作によって更新される。ページ内のブロックレコードはどれも、同じブロックディレクトリページの中にある項目に対応しなければならない。しかし、1つのディレクトリページで複数のブロックレコードページの項目を収容できる。よって、ブロックレコードページの更新にあたっては、ただひとつのブロックディレクトリページを修正すればよい。
ブロックディレクトリ
ブロックディレクトリは、ブロックアドレスによってブロックを識別し、対応するブロックレコードの位置を指示する、序列された項目の集まりである。ブロックレコードの保守が行われる各ブロックにつき1項目がブロックディレクトリの中に存在する。この例では、不完全ブロック、用済みブロック、コンプリート共通ブロック、および消去済みブロックの各ブロックにつき1項目が存在する。ブロックディレクトリは1つ以上のディレクトリブロックに収容される。
図6は、用済みブロックと不完全ブロックのリストページを収容するディレクトリブロック621を示している。図6はまた、ディレクトリブロックの中にあるディレクトリページを示している。各ディレクトリブロックは一定数の論理ページを収容し、この論理ページの各々は、これを使用可能な次の物理ページへ再度書き込むことによって更新できる。有効項目を収容するページには論理ページ番号が割り当てられる。この例で、ディレクトリブロック内の論理ページ数はブロック内の物理ページ数の25%に指定される。他の例ではこれとは別の制限を指定できる。ディレクトリブロックの最後のページが書き込まれた後には、有効ページの全てを消去済みブロックへ書き込むことにより、そして元のディレクトリブロックを消去することにより、ブロックが圧縮される。
ブロックディレクトリページ
ブロックディレクトリページは、1組のブロックディレクトリ項目を、それらのブロックアドレス値の順に収容する。図7Aにはブロックディレクトリページ731の一例が示されている。有効ブロックディレクトリ項目733はブロックディレクトリページ731の中で一連の項目位置を占めるが、ページ全体を埋め尽くす必要はないため、消去済みの空間が残ることがある。各々のブロックディレクトリページはレコードインデックス(後述する)を収容する。ここで、ブロックディレクトリページ731はレコードインデックス735を収容する。ブロックディレクトリ項目733の中に用済み項目はなく、ブロックアドレス値は連続しなくともよい。ある1つのブロックディレクトリページにおけるブロックアドレス値の範囲は、別のブロックディレクトリページにおけるブロックアドレス値の範囲に重複しない。
ブロックの項目を挿入する必要がある場合は、その新しいブロックのブロックアドレス値をブロックアドレス範囲に含むブロックディレクトリページが、ディレクトリインデックスの情報から識別される。新しい項目はブロックアドレス範囲の中の適切な位置に挿入され、ブロックディレクトリページは再度書き込まれる。項目を削除しなければならない場合は、その項目を省いてブロックディレクトリページが圧縮され、再度書き込まれる。
満杯になったブロックディレクトリページへ追加を行わなければならない場合は、空き論理ページが新しいブロックディレクトリページとして割り当てられ、満杯になったブロックディレクトリページのブロックアドレス範囲は2つのほぼ等しい重複しない範囲に分割され、それらは2つの使用可能なブロックディレクトリページに書き込まれる。
ブロックアドレス範囲が隣接する2つのブロックディレクトリページの総有効項目数がしきい値(この例では、1ブロックディレクトリページにおける項目位置数の70%)を下回ると、2つのブロックディレクトリページの範囲は統合され、2つのブロックディレクトリページのうちの一方に書き込まれる。次いで、他方の未使用ページは空き論理ページとなる。
この例のブロックディレクトリ項目737は2つのフィールド、すなわち(1)ブロックアドレスと、(2)対応するブロックレコードのポインタとを収容する。このポインタは、ブロックレコードページの論理識別子と、ページ内のある特定のブロックレコードのバイトオフセットとを識別する。ブロックレコードページ論理識別子は、同じブロックディレクトリページの中にある項目によって参照される最高16個のブロックレコードページのうちの1つを識別する。これは、その項目を収容するブロックディレクトリページの中のレコードインデックスフィールドによって物理ブロックアドレスとページ番号とへ変換される。バイトオフセットは、識別されたブロックレコードページの中でブロックレコードの位置を識別する。
各々の有効ブロックディレクトリページとブロックリストページの中には単独の有効レコードインデックスフィールドが存在する。これは、ブロックレコードページの論理識別子をブロックレコードページが位置するところのページ番号と物理ブロックアドレスとに変換するために使われる。レコードインデックス735は、ブロックディレクトリページ731のいずれかの項目の中で使われる各論理識別子につき1つの項目(例えば、項目739)を収容する。1つのブロックディレクトリページの中でブロックディレクトリ項目により最高16個のブロックレコードページが参照される。したがって、4ビット論理識別子が使用される。かくして個々のブロックディレクトリ項目は、対応するブロックレコードページの長い物理ページ位置の代わりに4ビット識別子を使用できる。レコードインデックスフィールドは、ブロックディレクトリページ内の全項目のためにこれらの論理識別子を変換する役割を果たす。
有効ディレクトリインデックスフィールド741は、最後に書き込まれたブロックディレクトリまたはブロックリストページにのみ存在する。それ以前に書き込まれたページ内のディレクトリインデックスフィールドの情報は用済みである。この目的は、ブロックディレクトリ項目とブロックリスト項目の序列と、論理ページから物理ページへのマッピングとを支援することにある。これが提供する構造では、ブロックディレクトリブロック内の個々のページに関する最新データが記憶される。ディレクトリインデックスは、論理ページ番号に従って序列される項目743などの項目を各可能な論理ページにつき収容する。各項目には4つのフィールドがある。
(1)論理ページの割り当て状態フラグ
(2)ページのタイプ、例えばブロックディレクトリ、PBリスト、またはOBリスト
(3)ブロックディレクトリページ内の最初の項目のブロックアドレス、またはリストページ(PBまたはOB)内の最初の項目の有効データ容量値(これにより各論理ページでブロックアドレスまたは有効データ値の範囲を確立し、キャッシュできる。)
(4)論理ページのマッピングにあたるブロックディレクトリの中の物理ページへのポインタ
ブロックリストページ
ブロックリストページは、1ブロック分類につき1組のブロックリスト項目を、ブロックに収容されたデータ(例えば、ブロックに収容された有効データ量)を記述する記述子値の順に、収容する。図7Bにはブロックリストページ751の一例が示されている。この例で、ブロックリストページはPBリストページまたはOBリストページである。図7BはOBリストページ751を示している。有効ブロックリスト項目753はブロックリストページ751の中で一連の項目位置を占めるが、ページ全体を埋め尽くす必要はない。ブロックリストページの中には通常、用済み項目はない。ブロックリスト項目753は記述子値によって序列されるが、記述子値は連続しなくともよく、繰り返すことができる。この例で、有効データ容量値は連続しなくともよく、繰り返すことができる。ある1つのブロックリストページの記述子値の範囲は、同一ブロック分類の別のブロックリストページの記述子値の範囲に重複しない。
この例で使われる記述子値は有効データ容量であるが、別の記述子値を使用することもできる。例えば、ブロック内の消去済み容量を記述子値として使用できる。再生のためブロックを所望の順序でリストするため、有効データ量と消去済み容量の組み合わせから記述子値を導き出すことができる。リストは、場合によっては重複してよい。この場合、2つの異なるリストの中に同じブロックが現れることがある。例えば、ブロックを、そこに収容される有効データ量に従ってリストすると同時に、(別のリストでは)そこに収容される消去済みの空間の量に従ってリストすることができる。
ブロックの項目を挿入する必要がある場合は、その新しいブロックの有効データ容量値を有効データ容量範囲に含むブロックリストページが、ディレクトリインデックスの情報から識別される。ブロックリストページは再度書き込まれ、新しい項目は、この有効データ容量値に従ってページの適切な位置に挿入される。項目を削除しなければならない場合、その項目を省いて、新しい物理位置にブロックリストページが再度書き込まれる。
満杯になったブロックリストページへ追加を行わなければならない場合、空き論理ページが新しいブロックリストページとして割り当てられ、満杯になったブロックリストページの有効データ範囲は2つのほぼ等しい重複しない範囲に分割され、それらは2つの使用可能なブロックリストページに書き込まれる。
範囲が隣接する2つのブロックリストページの総有効項目数が所定のしきい値(この例では、1ブロックリストページにおける項目位置数の70%)を下回ると、2つのブロックリストページの範囲は統合され、2つのブロックリストページのうちの一方に書き込まれる。そして、他方の未使用ページは空き論理ページとなる。
ブロックリスト項目755は2つのフィールド、すなわち(1)ブロックアドレスと、(2)記述子値とを収容し、この例における記述子値は、ブロック内の有効データ量を示す値である。第1の例と違って、ブロックアドレスによって序列されるリストはない(しかし、ディレクトリはブロックアドレスによって序列される)。この例において、リストはブロックアドレスを含み、このブロックアドレスからディレクトリ項目が見つかり、さらにこのディレクトリ項目が対応するレコードの位置を順に指示する。よって、この例において、リスト項目753はレコードを直接指示しない。ブロックリストはディレクトリインデックスを収容できるが、有効なディレクトリインデックスを収容するのは最後に書き込まれたページだけである。図7BのOBリストページは用済みのディレクトリインデックス757を収容する。
ブロックレコード
ブロックレコードはレコードの集まりであり、各レコードは、ブロックアドレスによって識別されるブロックの情報を収容する。各ブロックディレクトリ項目につき1つのレコードが存在する。ブロックレコードはブロックディレクトリ項目によってアドレス指定され、ブロックレコードページが修正されるときにはブロックディレクトリページを修正しなければならない。
ブロックレコードは、図8に示すレコードブロック861などのような、1つ以上の専用レコードブロックに収容される。第1の例と違って、ブロックリストとブロックレコードは同じブロックの中にまとめて記憶されない。ただひとつのブロックレコードブロックがプログラムされていないページを収容し、ここへブロックレコードを書き込むことができる。ブロックレコード情報はどれも、ブロックレコード書き込みポインタによって識別されるこのブロックの中のプログラムされていない次のページ位置にプログラムされる。ブロック内の最後のページがプログラムされると、ブロックレコード書き込みポインタは消去済みブロックの最初のページへ移される。ブロックレコードブロックは、ブロックレコードページが再度書き込まれるときに用済みページを収容することができる。いくつかの実施形態において、有効ブロックレコードページは、ブロックレコードページが再度書き込まれてページ内のレコードが常に用済みになるときに用済みレコードを収容しない。別の実施形態において、用済みレコードが有効ブロックレコードページに残ることがある。しかし、用済みレコードのディレクトリ項目は削除されるかまたは有効レコードを指示する項目に置き換えられるので、用済みレコードはアクセスされない。レコードページの中の用済みレコードは、レコードページが再度書き込まれるときにコピーされない。
ブロックレコードページは、1つのブロックディレクトリページの中にあるブロックディレクトリ項目によって参照される1組のブロックレコードを、このブロックディレクトリページ内の項目と同じ順序で収容する。図9は、ブロックレコードページ965の一例を示している。ブロックディレクトリページは複数のブロックレコードページを参照できる。ブロックレコードページの修正にあたっては、ただひとつのブロックディレクトリページを修正すればよい。第1の例と違って、ブロックレコードページはブロックディレクトリ項目によって直接識別されるため、この例のブロックレコードページはブロックレコードインデックスを含まない。
ブロックレコードページは、これを読み出すことにより、そして1つ以上のブロックレコードを更新または追加することにより修正できる。いずれの用済みブロックレコードもページの圧縮によって削除され、ページは、ブロックレコード書き込みポインタによって識別される位置にプログラムされる。
ブロックレコードページヘッダは、ブロックレコードページに関連するブロックディレクトリページへの参照符と、このブロックレコードページにおけるブロックレコード情報の長さとを記憶する。ブロックレコードページヘッダはまた、ブロックレコードページが書き込まれたときにブロックレコードブロックの各々に存在する用済みページ数のレコードを記憶する。この情報は、最後に書き込まれたブロックレコードページヘッダの中にあるものだけが有効である。
個々のブロックレコード項目のサイズは不定である。よって、コンプリート共通ブロックのレコードは消去済みブロックのレコードより大きくなることがある。第1の例と違って、別個の共通ブロックレコード領域は必要ない。この例のレコードブロックは、ブロックの属性を定義する次のフィールドを持つ。
(1)ブロックアドレス
(2)ブロックのタイプ、PB、OB、CCB、またはEB
(3)ブロック内の有効データ容量
(4)ブロック内のページ書き込みポインタの位置
(5)ブロック内にデータが存在するファイルの合計数
(6)ブロック内にデータが存在する各ファイルのファイルID
他の例では、異なる記述子値を含む異なるフィールドをレコードに収容してよい。
第2の例におけるブロックレコードの再生プロセス
ブロックレコードは1つ以上のレコードブロックの中に収容され、ブロックディレクトリ項目によって直接アドレス指定される。新規または更新済みブロックレコードをプログラムするにあたって使用できる消去済みページは、ただひとつのレコードブロックに収容される。それ以外の全てのレコードブロックで全てのページがプログラムされていたとしても、完全に用済みまたは部分的に用済みのページがブロックに収容されることがある。用済みブロックレコードによって占められる容量の再生は、再生される次のブロックとして1つのレコードブロックを指定することにより、そしてこの再生ブロックからブロックレコード書き込みポインタによって現在指定されているページへページを徐々にコピーすることにより、その後に再生ブロックを消去することにより、遂行される。
レコードブロックに対する前の再生プロセスが完了し、前の再生ブロックが消去されると、再生ブロックが選択される。用済みページ数が最高のレコードブロックが再生ブロックとして選択される。各レコードブロックの用済みページ数は、最後に書き込まれたブロックレコードページのブロックレコードページヘッダに記録される。ブロックレコード書き込みポインタを収容するレコードブロックは再生のために選択されないことがある。選択されたレコードブロックは、再生プロセスが完了してブロックが消去されるまで再生ブロックであり続ける。次いで、消去されたブロックは消去済みブロックのプールへ加えられ、ホストデータを含むあらゆる類のデータを記憶するために再び使用できる。よって、ブロックは暫くの間専用レコードブロックであり続けるが、レコードブロックとして永久的に指定されるのではない。
用済みページを収容するブロックレコードブロックを再生するプロセスでは、ブロックから、有効ブロックレコードを収容する少数のページを、ブロックレコード書き込みポインタによって指定されるページへ、スケジュールされた間隔で段階的にコピーする。良好な性能のため、1段階にコピーされるページの数はメタページに収容されるページの数になる。しかし、場合によっては、これよりも少ないページが書き込まれる。ブロックレコード書き込みポインタのところでページをプログラムすることは、メタページに対する1回のプログラミング操作として遂行できる。再生ブロックにおけるページの段階的コピー操作は、4つのメタページに収容されるページ位置数を通過するブロックレコード書き込みポインタの進捗によって規定される間隔でスケジュールできる。メタページをプログラムするには、書き込みポインタは、段階的コピー操作がスケジュールされるときに物理メタページの最初のページを指示しなければならない。
前述したブロックレコードブロックの再生プロセスとは対照的に、ディレクトリブロックの再生プロセスでは、ディレクトリブロックに消去済みの空間が残っていないときにそのブロックディレクトリブロックを圧縮するだけでよい。常時最大25%(この例の論理容量は物理容量の25%)の有効ページを持つブロックディレクトリブロックを圧縮すると、少なくとも75%の消去済みの空間を有するブロックになる。圧縮が行われると、データのコピー元にあたるブロックは無効ブロックとなり、消去されて消去済みブロックとなる。次いで、このブロックは消去済みブロックのプールへ加えられ、ホストデータを含むあらゆる類のデータを記憶するために使用できる。よって、ブロックは暫くの間専用ディレクトリブロックであり続けるが、ディレクトリブロックとして永久に指定されるのではない。
第2の例の構造の更新
メモリアレイでブロックにデータが書き込まれるとき、またはファイルが削除されるときには、1つ以上のブロックレコードを更新する必要がある。また、対応するブロックディレクトリおよびリスト項目を更新する必要がある。図10に示された次のプロセスは、第2の例の各種構造の更新を説明するものであり、このとき(既にある程度の用済みデータを収容する)不完全ブロックには追加の有効データが記憶され、ブロックは用済みブロックになる。
(1)追加データを記憶するブロックのアドレスを受け取る。
(2)このブロックのディレクトリ項目175を収容するディレクトリページ173の物理ページ位置を判定するため、ブロックディレクトリブロック170の最終書き込みページでディレクトリインデックス171を調べる。
(3)ブロックの項目175を見つけるため、ディレクトリページ173の中でバイナリ探索を遂行する。
(4)項目175の論理識別子からレコードインデックス177の情報に沿って、ブロックレコードブロック181の中でこのブロックのレコード183を収容する物理ページ179を判定する。受け取ったアドレスに対応する正しいレコード183を見つけるため、ディレクトリ項目175の中のオフセットを使用する。
(5)レコード183からブロックの分類を判定する。追加データの記憶によって分類が変化するか否かを判定する。ここでブロックは不完全ブロックであり、このブロックに残された空間は追加データで満たされるから、このブロックは用済みブロックになる。
(6)レコードページ183の内容を、書き込みポインタ185によって指示される位置へコピーし、対象ブロックのレコード183は、異なるタイプのブロック、有効データ、ページ書き込みポインタの位置等を反映させるために更新される。
(7)ディレクトリページ173をブロックディレクトリブロック170の使用可能な次の物理ページへコピーする。レコードページの新しい物理位置を反映させるため、更新された項目とレコードインデックスを新しいディレクトリページに書き込む。また、新しい物理ページでディレクトリインデックスを更新する。
(8)ブロックの項目189を収容する不完全ブロックリストページ187の物理ページ位置を判定するため、ディレクトリインデックスを再び調べる(場合によっては複数のリストを調べる)。
(9)記述子値が対象ブロックのそれに等しいリスト項目189を見つけるため、ページ187の中でバイナリ探索を遂行する。複数のリスト項目が記述子値を有する場合は、ブロックアドレスにより一致する全ての項目を探索する。
(10)不完全ブロックリストページ187を新しい位置へコピーし、対象ブロックの項目189は削除される。新しい不完全ブロックページは、不完全ブロックページの新しい物理位置で更新されたディレクトリインデックスを含む。
(11)対象ブロックの有効データ量を含む、ブロック範囲当たりの有効データをカバーする用済みブロックリストページの物理ページ位置を判定するため、ディレクトリインデックスを再び調べる(図示せず)。
(12)用済みブロックリストページをコピーし、対象ブロックの新しい項目を、ブロック内の現在の有効データ量に基づき、適切なオフセットのところに追加する。新しい用済みブロックリストページは、用済みブロックリストの新しい位置を示す更新済みディレクトリインデックスを含む(図示せず)。
前述したステップは必ずしも示されたとおりの順序で遂行されない。いくつかのステップは並行して遂行できる。例えば、更新済みの用済みブロックリストページと更新済み不完全ブロックリストページの書き込みは、メタブロック書き込みの一部として並行してよい。
詳細な第3の例
第3の例では、メモリアレイの各ブロックにつき常時レコードを保守する。これには1つ以上の追加のブロック分類が関係し、例えば用済みデータを収容しないファイルブロックのための追加の分類を、図4に示された第2の例の分類に加えることができる。各ブロックごとにレコードを保守すると保守する各レコードの合計数が増えるが、より簡素な構造を使用することができる。第3の例は、ブロックごとにレコードを用意する点を除き、第2の例と同様に進行する。
例えば、全てのブロックのためのレコードを保守する場合は、ディレクトリ項目も全てのブロックのために保守する。ディレクトリ項目は一定の均等サイズを有する。したがって、ディレクトリページには、ブロックアドレスによって順次に序列される一定数の項目が収容できる。よって、各ディレクトリページは一定のブロックアドレス範囲をカバーする。このようなページの中の項目はそれぞれのブロックアドレスに従って所定のオフセットをとるため、各項目の中で別々にブロックアドレスを記録する必要はない。ある特定のブロックのディレクトリ項目を見つけるには、そのブロックを含むブロックアドレス範囲をカバーするディレクトリページを見つけ、そのページの中で、ディレクトリページの最初の項目のブロックアドレスと所望のブロックアドレスとの差によって決まるオフセットのところにある項目まで進めばよい。したがって、ディレクトリページのバイナリ探索は必要ない。対照的に、レコードのサイズは通常ならば不定であり、常に一定数の項目がレコードページの中で保守されるとは限らない。この例ではこれまでの例と違って、リスト内に項目を持たないブロックのためのレコードが保守される。
メモリ内の各ブロックにつきレコードを保守することは、いくつかの用途にとって好都合である。例えば、ブロックの物理的特性について記述子を保守できる。このような記述子の一例として消去カウントがある。消去カウントは、消去され損耗レベル化の目的に使用できる特定のブロックの消去回数を示す。ブロックの消去カウントに従って1つ以上のリストでブロックを序列できる。また、ブロックが最後に消去されたときのタイムスタンプをレコードに含むことができ、こうすれば最後の消去から経過した時間に従ってブロックをリストの中で序列できる。
これまで本発明の様々な態様をその例示的な実施形態との関係で説明してきたが、添付の特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
第1の例によるブロック分類の表を示す。 第1の例によるレコードブロックのページを示す。 図2のレコードブロックの個々のページの詳細図を示す。 第2の例によるブロック分類の表を示す。 ブロックレコードブロックにある対応するブロックレコードを指示するブロックディレクトリブロック内のブロックディレクトリ項目を示す。 ディレクトリブロックのページ構造の詳細を示す。 レコードインデックスとディレクトリインデックスとを含む、図6のブロックディレクトリページの構造を示す。 図6の用済みブロックリストページの構造を示す。 レコードブロックのページ構造の詳細を示す。 図8のレコードページの構造をより詳細に示す。 ブロックレコードと関係する構造との更新過程にあるディレクトリブロックとレコードブロックとを示す。

Claims (34)

  1. メモリシステムであって、
    データを各々収容する第1の複数の個別に消去可能なブロックを含む不揮発性メモリアレイと、
    前記第1の複数のブロックの各々につき項目を収容するリストであって、前記リスト内の前記項目は、前記第1の複数のブロックの各々に記憶される有効データ量に従って序列されるリストと、
    を備えるメモリシステム。
  2. 請求項1記載のメモリシステムにおいて、
    複数のレコードをさらに備え、前記複数のレコードの各々は前記第1の複数の個別に消去可能なブロックのうちの1ブロックに対応し、前記複数のレコードの各々はそれに対応するブロックに関する情報を収容するメモリシステム。
  3. 請求項2記載のメモリシステムにおいて、
    前記リスト項目は第1のブロックの中の複数のリストページにて保守され、前記複数のレコードは第2のブロックの中のレコードページにて保守されるメモリシステム。
  4. 請求項1記載のメモリシステムにおいて、
    前記複数のブロックは、消去済みの空間と有効データの両方を収容する不揮発性メモリアレイの全ブロックからなるメモリシステム。
  5. 請求項1記載のメモリシステムにおいて、
    前記複数のブロックは、用済みデータを収容しかつ消去済みの空間を収容しない不揮発性メモリアレイの前記ブロックの全部からなるメモリシステム。
  6. 不揮発性メモリアレイであって、
    複数の個別に消去可能なブロックと、
    前記複数のブロックのための複数のレコードであって、前記複数のレコードの各々は前記複数のブロックのうちの1ブロックに関する情報を収容する複数のレコードと、
    複数のディレクトリ項目を収容するディレクトリであって、前記複数のディレクトリ項目の各々は前記複数のレコードのうちの1レコードの位置を含むディレクトリと、
    複数のリスト項目を収容するリストであって、前記複数のリスト項目の各々は前記複数のブロックのうちの1個の個別のブロックに記憶されるデータを記述し、前記複数のリスト項目はそれぞれの記述子値によって序列されるリストと、
    を備える不揮発性メモリアレイ。
  7. 請求項6記載の不揮発性メモリアレイにおいて、
    前記複数のレコードは第1のブロックに置かれ、前記ディレクトリと前記リストは第2のブロックにて保守される不揮発性メモリアレイ。
  8. 請求項6記載の不揮発性メモリアレイにおいて、
    前記記述子値は、前記複数のブロックのそれぞれのブロックに記憶される有効データ量を表す不揮発性メモリアレイ。
  9. 請求項6記載の不揮発性メモリアレイにおいて、
    前記複数のブロックは、消去済みの空間と有効データの両方を個別に収容する前記不揮発性メモリアレイ内の前記ブロックの全部からなる不揮発性メモリアレイ。
  10. 請求項6記載の不揮発性メモリアレイにおいて、
    前記複数のブロックは、用済みデータを個別に収容しかつ消去済みの空間を収容しない前記不揮発性メモリアレイの前記ブロックの全部からなる不揮発性メモリアレイ。
  11. 請求項6記載の不揮発性メモリアレイにおいて、
    前記複数のブロックは、前記不揮発性メモリアレイの全ブロックからなる不揮発性メモリアレイ。
  12. 請求項6記載の不揮発性メモリアレイにおいて、
    前記リストは、別個のリスト項目範囲を各々記憶する複数のページにて保守される不揮発性メモリアレイ。
  13. メモリセルのブロックにグループ分けされ前記ブロックのページでデータを再プログラムする前に消去される記憶セルを具備する不揮発性メモリシステムであって、
    データを記憶する第1の複数のブロックと、
    前記第1の複数のブロックのうちの対応する1ブロックに記憶されるデータを記述する記述子値を少なくとも個別に含む複数のレコードを収容する第1の複数のページと、
    前記第1の複数のページにおけるレコードの位置に対するポインタを収容する第2の複数のページであって、前記第1の複数のページのうちの個別の1ページ中にある有効レコードは、前記第2の複数のページのうちの1ページに記憶されるポインタによって指示されるレコードに限定される第2の複数のページと、
    を備える不揮発性メモリシステム。
  14. 請求項13記載の不揮発性メモリシステムにおいて、
    前記第1の複数のページは1つ以上のブロックからなる第1のグループに置かれ、前記第2の複数のページは1つ以上のブロックからなる第2のグループに置かれる不揮発性メモリシステム。
  15. 請求項13記載の不揮発性メモリシステムにおいて、
    前記第1の複数のページは、前記第1の複数のブロックのうちの1ブロックではない第1のブロックに置かれ、前記第2の複数のページは、前記第1の複数のブロックのうちの1ブロックではない第2のブロックに置かれる不揮発性メモリシステム。
  16. 請求項13記載の不揮発性メモリシステムにおいて、
    第3の複数のページに置かれるリストをさらに備え、前記リストは前記第1の複数のブロックのそれぞれに個別に対応する複数の項目を収容し、項目はこれに対応するブロックの記述子値を収容する不揮発性メモリシステム。
  17. ブロック消去可能な不揮発性メモリアレイを操作する方法であって、
    前記不揮発性メモリアレイの複数のブロックの各々につきリスト項目を収容するリストを保守するステップを備え、前記リスト項目は、前記複数のブロックのそれぞれ個別に記憶される有効データ量に従って序列される方法。
  18. 請求項17記載の方法において、
    前記不揮発性メモリアレイの前記複数のブロックの各々につきレコードを保守するステップをさらに備え、前記複数のブロックのうちの1ブロックのための個別のレコードは前記ブロックの物理アドレスを含み、各リスト項目はレコード項目へリンクされる方法。
  19. 請求項18記載の方法において、
    リスト項目は第1のブロックの中にあるリストページにて保守され、前記レコードは第2のブロックの中にあるレコードページにて保守される方法。
  20. 請求項17記載の方法において、
    前記複数のブロックは、消去済みの空間と有効データの両方を収容する前記不揮発性メモリアレイの全ブロックからなる方法。
  21. 請求項17記載の方法において、
    前記複数のブロックは、用済みデータを収容しかつ消去済みの空間を収容しない前記不揮発性メモリアレイの全ての前記ブロックからなる方法。
  22. ブロック消去可能な不揮発性メモリアレイを操作する方法であって、
    前記メモリアレイ内の複数のブロックのための複数のレコードを保守するステップであって、前記複数のレコードの各々は前記複数のブロックのうちの1ブロックに関する情報を収容するステップと、
    複数のディレクトリ項目を収容するディレクトリを保守するステップであって、前記複数のディレクトリ項目の各々は前記複数のレコードのうちの1レコードに関する位置情報を含むステップと、
    複数のリスト項目を収容するリストを保守するステップであって、前記複数のリスト項目の各々は前記複数のブロックのうちの1個の個別のブロックに記憶されるデータを記述し、前記複数のリスト項目はそれぞれの記述子値によって序列されるステップと、
    を含む方法。
  23. 請求項22記載の方法において、
    前記複数のレコードは第1のブロックにて保守され、前記ディレクトリと前記リストは第2のブロックにて保守される方法。
  24. 請求項22記載の方法において、
    前記記述子値は、前記複数のブロックのうちのそれぞれのブロックに記憶される有効データ量を表す方法。
  25. 請求項22記載の方法において、
    前記複数のブロックは、消去済みの空間と有効データの両方を個別に収容する前記不揮発性メモリアレイ内の前記ブロックの全部からなる方法。
  26. 請求項22記載の方法において、
    前記複数のブロックは、用済みデータを収容しかつ消去済みの空間を収容しない前記不揮発性メモリアレイ内の前記ブロックの全部からなる方法。
  27. 請求項22記載の方法において、
    前記複数のブロックは、前記不揮発性メモリアレイ内の前記ブロックの全部からなる方法。
  28. 請求項22記載の方法において、
    前記リストは、別個のリスト項目範囲を各々記憶する複数のページにて保守される方法。
  29. 請求項28記載の方法において、
    所定の記述子値を有するブロックを、前記所定の特性に一致するリスト項目を前記リストで探索することによって探索するステップをさらに含む方法。
  30. 請求項29記載の方法において、
    前記所定の特性は、前記リスト内のリスト項目の最小有効データ量である方法。
  31. メモリセルのブロックにグループ分けされ前記ブロックのページでデータを再プログラムする前に消去される記憶セルを具備する不揮発性メモリシステムを操作する方法であって、
    第1の複数のブロックでデータを記憶するステップと、
    前記第1の複数のブロックのうちの対応する1ブロックに記憶されるデータを記述する記述子値を少なくとも個別に含むレコードを第1の複数のページにて保守するステップと、
    前記第1の複数のページにおけるレコードの位置に対するポインタを第2の複数のページにて保守するステップであって、前記第1の複数のページのうちの個別の1ページの中にある有効レコードは、前記第2の複数のページのうちの1ページに記憶されるポインタによって指示されるレコードに限定されるステップと、
    を含む方法。
  32. 請求項31記載の方法において、
    前記第1の複数のページは1つ以上のブロックからなる第1のグループに置かれ、前記第2の複数のページは1つ以上のブロックからなる第2のグループに置かれる方法。
  33. 請求項31記載の方法において、
    前記第1の複数のページは、前記第1の複数のブロックのうちの1ブロックではない第1のブロックに置かれ、前記第2の複数のページは、前記第1の複数のブロックのうちの1ブロックではない第2のブロックに置かれる方法。
  34. 請求項31記載の方法において、
    前記第1の複数のブロックのそれぞれと対応する記述子値とのリストを第3の複数のページにて保守するステップをさらに含み、前記リスト項目は記述子値によって序列される方法。
JP2008525178A 2005-08-03 2006-08-01 ブロック管理を伴う不揮発性メモリ Expired - Fee Related JP4547028B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US70538805P 2005-08-03 2005-08-03
US74674006P 2006-05-08 2006-05-08
US11/459,260 US7552271B2 (en) 2005-08-03 2006-07-21 Nonvolatile memory with block management
US11/459,268 US7558906B2 (en) 2005-08-03 2006-07-21 Methods of managing blocks in nonvolatile memory
PCT/US2006/030228 WO2007019217A1 (en) 2005-08-03 2006-08-01 Nonvolatile memory with block management

Publications (3)

Publication Number Publication Date
JP2009503745A true JP2009503745A (ja) 2009-01-29
JP2009503745A5 JP2009503745A5 (ja) 2009-09-17
JP4547028B2 JP4547028B2 (ja) 2010-09-22

Family

ID=40361356

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008525178A Expired - Fee Related JP4547028B2 (ja) 2005-08-03 2006-08-01 ブロック管理を伴う不揮発性メモリ

Country Status (4)

Country Link
JP (1) JP4547028B2 (ja)
AT (1) ATE493707T1 (ja)
DE (1) DE602006019263D1 (ja)
TW (1) TWI399642B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515162A (ja) * 2006-12-26 2010-05-06 サンディスク コーポレイション 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
JP2011159044A (ja) * 2010-01-29 2011-08-18 Toshiba Corp 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法
JP2017016691A (ja) * 2012-03-23 2017-01-19 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
CN111177020A (zh) * 2018-11-13 2020-05-19 爱思开海力士有限公司 存储装置及其操作方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211233A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US8219781B2 (en) 2008-11-06 2012-07-10 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
TWI423023B (zh) 2011-04-22 2014-01-11 Silicon Motion Inc 快閃記憶體之區塊選取方法及資料儲存裝置
TWI454912B (zh) * 2012-01-06 2014-10-01 Phison Electronics Corp 資料處理方法、記憶體控制器與記憶體儲存裝置

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0772989A (ja) * 1992-10-30 1995-03-17 Intel Corp 浮動セクタデータを記憶する固体メモリディスクをクリーンアップする方法
JPH10326227A (ja) * 1997-05-23 1998-12-08 Nec Corp フラッシュメモリを記憶媒体とする記憶装置の管理方式
JP2002366423A (ja) * 2001-06-04 2002-12-20 Samsung Electronics Co Ltd フラッシュメモリの管理方法
JP2003208352A (ja) * 2002-01-17 2003-07-25 Fujitsu Ltd 書き込み回数の制限とウエアレベリングを可能にしたフラッシュメモリ
JP2003228513A (ja) * 2001-11-28 2003-08-15 Access:Kk メモリ制御方法および装置
WO2003102782A1 (en) * 2002-06-03 2003-12-11 Honeywell Internation Inc. Flash memory management system and method
WO2004040453A2 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Method and apparatus for grouping pages within a block
JP2004526233A (ja) * 2001-01-26 2004-08-26 デルタ サーチ ラブズ インコーポレイテッド オペレーティングシステムなしでcpuおよびデバイスを管理するモジュラーマイクロコントローラ
JP2004310573A (ja) * 2003-04-09 2004-11-04 Nippon Telegr & Teleph Corp <Ntt> Icカードにおけるメモリ管理方法、及びicカード
JP2005122439A (ja) * 2003-10-16 2005-05-12 Sharp Corp デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法
WO2005066793A2 (en) * 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with non-sequential update block management
JP2007520804A (ja) * 2003-12-30 2007-07-26 サンディスク コーポレイション 不揮発性メモリおよび非順次更新ブロック管理を伴う方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method
JP2000227871A (ja) * 1999-02-05 2000-08-15 Seiko Epson Corp 不揮発性記憶装置、その制御方法、および、情報記録媒体
AU2003268564A1 (en) * 2002-10-28 2004-05-25 Sandisk Corporation Method and apparatus for performing multi-page write operations in a non-volatile memory system
JP2004280752A (ja) * 2003-03-19 2004-10-07 Sony Corp データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム
TWI240863B (en) * 2003-09-05 2005-10-01 Megawin Technology Co Ltd Method for efficiently controlling flash memory read/write
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0772989A (ja) * 1992-10-30 1995-03-17 Intel Corp 浮動セクタデータを記憶する固体メモリディスクをクリーンアップする方法
JPH10326227A (ja) * 1997-05-23 1998-12-08 Nec Corp フラッシュメモリを記憶媒体とする記憶装置の管理方式
JP2004526233A (ja) * 2001-01-26 2004-08-26 デルタ サーチ ラブズ インコーポレイテッド オペレーティングシステムなしでcpuおよびデバイスを管理するモジュラーマイクロコントローラ
JP2002366423A (ja) * 2001-06-04 2002-12-20 Samsung Electronics Co Ltd フラッシュメモリの管理方法
JP2003228513A (ja) * 2001-11-28 2003-08-15 Access:Kk メモリ制御方法および装置
JP2003208352A (ja) * 2002-01-17 2003-07-25 Fujitsu Ltd 書き込み回数の制限とウエアレベリングを可能にしたフラッシュメモリ
WO2003102782A1 (en) * 2002-06-03 2003-12-11 Honeywell Internation Inc. Flash memory management system and method
WO2004040453A2 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Method and apparatus for grouping pages within a block
JP2006515086A (ja) * 2002-10-28 2006-05-18 サンディスク コーポレイション ブロック内のページをグループ化する方法及び装置
JP2004310573A (ja) * 2003-04-09 2004-11-04 Nippon Telegr & Teleph Corp <Ntt> Icカードにおけるメモリ管理方法、及びicカード
JP2005122439A (ja) * 2003-10-16 2005-05-12 Sharp Corp デバイス機器、及びデバイス機器の記録装置のフォーマット変換方法
WO2005066793A2 (en) * 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with non-sequential update block management
JP2007520804A (ja) * 2003-12-30 2007-07-26 サンディスク コーポレイション 不揮発性メモリおよび非順次更新ブロック管理を伴う方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515162A (ja) * 2006-12-26 2010-05-06 サンディスク コーポレイション 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
JP2011159044A (ja) * 2010-01-29 2011-08-18 Toshiba Corp 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法
US8171254B2 (en) 2010-01-29 2012-05-01 Kabushiki Kaisha Toshiba Memory controller and memory control method
JP2017016691A (ja) * 2012-03-23 2017-01-19 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
CN111177020A (zh) * 2018-11-13 2020-05-19 爱思开海力士有限公司 存储装置及其操作方法
CN111177020B (zh) * 2018-11-13 2023-05-05 爱思开海力士有限公司 存储装置及其操作方法

Also Published As

Publication number Publication date
DE602006019263D1 (de) 2011-02-10
ATE493707T1 (de) 2011-01-15
TW200739342A (en) 2007-10-16
TWI399642B (zh) 2013-06-21
JP4547028B2 (ja) 2010-09-22

Similar Documents

Publication Publication Date Title
US7552271B2 (en) Nonvolatile memory with block management
US7558906B2 (en) Methods of managing blocks in nonvolatile memory
KR101329068B1 (ko) 블록 관리를 가지는 비휘발성 메모리
JP5000316B2 (ja) オブジェクト・ベースのデータ記憶装置
US8607016B2 (en) FAT analysis for optimized sequential cluster management
US7624239B2 (en) Methods for the management of erase operations in non-volatile memories
US7610434B2 (en) File recording apparatus
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7949845B2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7783845B2 (en) Structures for the management of erase operations in non-volatile memories
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
US7774392B2 (en) Non-volatile memory with management of a pool of update memory blocks based on each block&#39;s activity and data order
US7917686B2 (en) Host system with direct data file interface configurability
JP4547028B2 (ja) ブロック管理を伴う不揮発性メモリ
US7779056B2 (en) Managing a pool of update memory blocks based on each block&#39;s activity and data order
US20080155175A1 (en) Host System That Manages a LBA Interface With Flash Memory
US7571275B2 (en) Flash real-time operating system for small embedded applications
JP5266250B2 (ja) 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
JP2010515163A (ja) ダイレクトデータファイルメモリシステムにおけるlbaインターフェイスの管理
JP2009503740A (ja) データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け
KR100638638B1 (ko) 플래시 메모리의 제어 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090803

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090803

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090807

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091117

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100127

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100513

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100702

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4547028

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees