JP2002513484A - フラッシュメモリ大容量記憶システム - Google Patents

フラッシュメモリ大容量記憶システム

Info

Publication number
JP2002513484A
JP2002513484A JP52657998A JP52657998A JP2002513484A JP 2002513484 A JP2002513484 A JP 2002513484A JP 52657998 A JP52657998 A JP 52657998A JP 52657998 A JP52657998 A JP 52657998A JP 2002513484 A JP2002513484 A JP 2002513484A
Authority
JP
Japan
Prior art keywords
block
blocks
buffer
data
type
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
JP52657998A
Other languages
English (en)
Other versions
JP4005142B2 (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 JP2002513484A publication Critical patent/JP2002513484A/ja
Application granted granted Critical
Publication of JP4005142B2 publication Critical patent/JP4005142B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

(57)【要約】 フラッシュメモリを使用する大容量記憶システムに関するアーキテクチャを記載する。このアーキテクチャは、フラッシュメモリを複数のブロックに編成することを含む。次いで、これらのブロックを種々のカテゴリに分割する。カテゴリのうちの一つは、(Microsoftのオペレーティングシステムに使用される論理ブロックアドレスのような)定義済みのアドレッシングスキームと関連して編成されるデータをストアするのに使用されるワーキングカテゴリである。他のカテゴリは、ワーキングブロックのうちの一つに書きこまれることになっているデータをストアするのに使用される一時的なバッファである。データが大容量記憶システムに書きこまれるとき、第2のカテゴリのブロックが第3のカテゴリのブロックから割り当てられる。次いで、割り当てられたブロックへの書きこみが完了したとき、割り当てられたブロックは第1のカテゴリのブロックに変更される。第1のカテゴリの対応するブロックは、第3のカテゴリに配置される。その結果、ブロックはリサイクルされる。従って、第2にカテゴリに一定のブロックの供給がある。本発明の変形実施形態では、新しいカテゴリがワーキングブロックに対するランダム書き込みを処理するために開発される。

Description

【発明の詳細な説明】 フラッシュメモリ大容量記憶システム 発明の分野 本発明は、コンピュータ用の大容量記憶装置の分野に関する。特に、本発明は 、半導体不揮発性メモリに関するアーキテクチャに関し、特にフラッシュメモリ に関する。 発明の背景 近代の情報処理システムは、プログラムやデータを記憶させるための大容量記 憶装置として、不揮発性ランダムアクセスメモリを十分に利用する。最も広く使 用される不揮発性メモリ装置はハードディスクであり、それは磁気材料にデータ を記憶させる接触装置である。最近、半導体不揮発性メモリが開発された。半導 体不揮発性メモリの1つのタイプは、典型的な行及び列配列におけるメモリセル として配列された、複数の浮動ゲート金属シリコン酸化物電解効果トランジスタ を有するフラッシュメモリである。浮動ゲート設計は、電源が取り外された後、 情報を保存させるようにする。フラッシュメモリは、情報処理システムにおける 大容量記憶装置として使用されるように適合させる数多くの特徴を有する。それ は、重みにして軽量であり、非常に僅かな空間を占め、接触装置よりも少ない電 力を消費する。更に、それは頑丈であり、接触装置を破壊することのできる反復 ドロップに耐えることができる。 フラッシュメモリは典型的に、ホット電子注入によってプログラム可能であり 、Fowler−Nordheimトンネリングによって消去可能である、複数 の単一トランジスタメモリセルを有する。かかるメモリセルのプログラミング及 び消去には、浮動ゲート電極の周りの誘電体を通過する電流を必要とする。誘電 体は、一定の回数のプログラミング及び消去の後、故障することがわかった。該 属性のために、かかるタイプのメモリは有限の消去−書込みサイクルを有する。 フラッシュセル装置の製造者は、10,000から100,000の間の数消去 −書込みサイクルのための制限を指定する。これは、故障する前に無数の消去− 書込みサイクルを経て行くことができる、回転する磁気媒体(例、ハードディス ク)及び揮発性メモリチップ(ダイナミックRAM及びスタティックRAM)の ようなメモリ装置の他のタイプと異なる。結果として、フラッシュメモリ内の多 くの消去−書込みサイクルを減らすことが望ましい。 フラッシュメモリは典型的に、メモリ内のセルのソース端末に高電圧を加える ことにより消去される。ソース端末が全て金属ブッシングによって互いに接続さ れるため、全体的なメモリ(あるいはいくらかのサブポーション)は同時に消去 される必要がある。従って、消去操作において、有効データ、並びに無効(不正 )データは消去される。これは、個別のビットが消去され、書込まれる他のRA M装置と異なる。 フラッシュメモリと他のタイプのメモリ装置との間の別の差は、フラッシュメ モリ装置における消去サイクルが遅い(メモリ装置の他のタイプの読込み−書込 み時間と比較した場合)ことである。該属性は、システムが遅い消去サイクルを 補うのに特別に設計されていない限り、大容量記憶装置としてフラッシュメモリ を利用するシステムの性能を著しく下げる。 上述のように、フラッシュメモリを大容量記憶装置として有効利用するために 、新たなメモリ構造の設計が必要とされている。 発明の概要 本発明は、フラッシュメモリシステムの新しいアーキテクチャに関する。この アーキテクチャは、データをストアするためにフラッシュメモリを使用して、上 述の問題のいくつかを克服するように設計する。このアーキテクチャは、ブロッ ク及びセクタを含む論理構造に物理メモリセルを編成することを含む。本発明の 実施形態では、(「エントリバッファ」と呼ばれる)バッファが物理メモリを論 理配列にマップするのに使用される。エントリバッファの内容を変更することに よって、同じ物理メモリが異なる論理関数を実行するのに使用され得る。 本アーキテクチャの一つの用途は、メモリシステムが、セクタベースアドレッ シングスキームによって配列されているデータをストアするのに使用されること である。かかるスキームの例が、Microsoft DOSファイルシステム で使用される「論理ブロックアドレス」(LBA)である。本発明は、セクタベ ースアドレッシングスキームにおいて編成されたデータを処理するための論理構 造を使用するフレキシブルメソッドを提供する。 フラッシュメモリの特別な特徴の一つは、別々のセルが新しいデータで直接上 書きされないことである。これは、各ビットが随意に変更され得る他のメモリデ バイスと異なる。従って、在来の読み込み及び書き込みメソッドを使用すること ができない。本発明は、この論理構造に書き込み、この論理構造から読み出す新 しい方法を含む。この方法は、古いデータを直接上書きする変わりに、新しいデ ータを受け取るための(本発明ではQバッファと呼ぶ)バッファを使用する。Q バッファは、(ダーティブロックと呼ぶ)古いデータを包含するブロックと置換 するように、後で変形される。バッファによって置換された古いブロックは、消 去されることができ、次いで、別の目的で使用する。次いで、新しいブロックを 新しいバッファとなるように割り当てる。上述したエントリバッファの使用は、 この変形を容易にする。 この書き込みメソッドの結果として生ずるものは、ブロックがリサイクルされ ることである(即ち、ダーティブロックを他のタイプのブロックに論理的に変更 することができる)。これは、本アーキテクチャがQバッファの連続供給を必要 としているからである。ブロックがリサイクルされなければ、全てのブロックが 使用され、Qバッファに割り当てることができるブロックがなくなるときが来て しまう。従って、本発明のアーキテクチャは、消去されたブロックが結局バッフ ァとして使用され得るようになリサイクルブロックに対するメソッドを提供する 。 本アーキテクチャの性能を向上させるために、新しいタイプのバッファを導入 する。上述したQバッファは、データのランダム更新を取扱うのに有効ではない 。このバッファは、このタイプの書き込みを受け取るのに役立つ。この新しいバ ッファは、Qバッファが消去される回数を減少させることができることが分かる 。ブロックを消去するために比較的長い時間を要するので、システムの性能は向 上する。 本発明のこれらの及び他の特徴は、添付した図面と併せて読むときに、以下の 記載から明らかになるであろう。 図面の簡単な説明 図1Aは、本発明のフラッシュメモリシステムの概略図である。 図1B乃至1Dは、本発明のフラッシュメモリシステムの論理構造を示す。 図2A乃至2Dは、本発明に関する書き込みオペレーションを示す。 図3は、図2A乃至2Dの書き込みオペレーション後のブロックの状態を示す 。 図4は、データが本発明に関する別のブロック内に書き込まれる必要があると きのブロックの状態を示す。 図5は、あるカテゴリから別のカテゴリへの本発明のブロックの遷移を示す概 略図である。 図6A乃至6Fは、本発明の「暗黙のダーティ」を例示する。 図7は、本発明のデータの書き込みを示すフローチャートである。 図8は、本発明のデータの読み込みを示すフローチャートである。 図9は、データを本発明のフラッシュメモリに書き込む例を図示する。 発明の詳細な説明 本発明は、新しいメモリアーキテクチャ及びそれに関連する方法を含む。以下 の記載は、いかなる当業者にとっても本発明を行い且つ使用することができるよ うに表す。特定の用途の記載は、例としてのみ提供する。好ましい実施形態の種 々の修正は、当業者にとって容易に明らかであり、ここに定義された一般的な原 理は、本発明の精神及び範囲から逸脱することなく他の実施形態及び用途に適用 しうる。従って、本発明は、示される実施形態に限定することなく、ここに開示 する原理及び特徴と調和する最も広い範囲と一致させるべきである。 メモリシステムの本質的な機能は、データをストアすることである。更に、ソ フトウェアアプリケーションは、メモリシステムから読み込み、且つ、メモリシ ステムに書き込むことができ得る。フラッシュメモリは、在来のメモリと異なる 多くの特徴を有する。その結果、フラッシュメモリシステムのアーキテクチャは 、多くの困難を克服し、あらゆる有利な特徴を利用するために準備されることを 必 要とする。ある相違点は、新しいデータで直接上書きされることができないフラ ッシュメモリにデータを存在させることである。フラッシュメモリは、「クリー ン」メモリになるように、最初に消去される必要がある。次いで、新しいデータ は、クリーンメモリに書き込まれる。ダイナミック・ランダム・アクセス・メモ リ(DRAM)におけるデータとは対照的に、スタティック・ランダム・アクセ ス・メモリ(SRAM)及びハードディスクは、直接上書きされ得る。これが、 フラッシュメモリシステムのアーキテクチャが在来のメモリシステムと異なる理 由の一つである。 使用することができなくなる前に、各ブロックが、(在来のメモリと比較して )比較的小さい数の回数だけ消去されるからである。その結果、不必要な消去サ イクルを減少させる必要がある。フラッシュメモリに関する上記の技術的な問題 を克服する必要に加えて、システムの性能を高め、コストを低くしなければなら ない。さもなければ、フラッシュメモリシステムは市場で競争することができな い。この要求の重要性の一つは、アーキテクチャが大きすぎる諸経費を含まない ようにすることである。従って、ハードウェア及びソフトウェアサポート(例え ば、バッファ、プログラムコードなど)を低くする必要があり、データ構造及び アルゴリズムを簡単にする必要があり、信頼性及び性能を高くする必要がある。 本発明のフラッシュメモリシステムは、これらの要求を満たすように設計されて いる。 (A)システムアーキテクチャの記述 (1)メモリセルのブロックへの分割 図1Aは、本発明のフラッシュメモリシステム100の概略図である。システ ム100は、チップ102乃至104のようなデータ及びプログラムをストアす るための1又はそれ以上のフラッシュメモリチップを有する。これらのチップは 、線106乃至108を介して制御器110に電気的に接続される。本発明の実 施形態では、これらの線は、ディジタルデータを通信するためのバスの一部分で ありうる。制御器110は、フラッシュメモリチップ102乃至104をメモリ ブロック内に編成し、システム100と無関係なデバイスと異なる目的のインタ ーフェースにこれらのメモリブロックを割り当てるような(以下に詳細に記載す る)種々の関数を実行する。制御器100は、専用データ処理デバイスでありう る。変形実施形態では、制御器110の機能は、中央演算処理装置(CPU)と 、ランダムアクセスメモリ(RAM)と、読み出し専用メモリ(ROM)と、ハ ードディスクとを有する汎用マイクロプロセッサシステムによって実行され得る 。本発明のある用途では、フラッシュメモリシステム100は、ハードディスク の機能及び処理をエミュレートする。この用途では、マイクロコンピュータシス テムは、一般的なハードディスクとしてシステム100を処理する。変形実施形 態として、フラッシュメモリシステム100は、ビデオゲームカートリッジ及び 産業用制御データロガのような、特定のシステムで使用するために最適化された 構成を有しうる。 各メモリチップは、種々のメモリブロックに分割され得る。各メモリブロック は、データのビットをストアすることができる多くのEPROMセルを有する。 例えば、チップ102は、ブロック112a乃至123bに分割される。同様に 、チップ103及び104は、ブロック112b乃至123b及び112c乃至 123cにそれぞれ分割される。好ましい実施形態では、102乃至104のチ ップの各々は、同じ数のブロックに分割される。しかしながら、チップが異なる 数のブロックを有してもよいことに注意すべきである。 (2)物理ブロックの論理的編成 チップ102乃至104のブロックは、論理的に編成される必要があり、それ らはデータをストアするためにフレキシブルシステムを提供することができる。 編成の一つの方法は、物理ブロックを論理的構造にマッピングするための手段を 提供することである。本発明では、特別のバッファがこのマッピングのために使 用される。このバッファ内の内容を変更することによって、同じ物理ブロックは 異なる論理的編成内にマッピングされ得る。 以下は、ある編成を示す例である。この例に使用されるブロックの数が例示の 目的だけのものであり、実在のフラッシュメモリシステムは多くのブロックを有 することができることに注意すべきである。各チップにおける8つのブロックが アレイに使用されている(他のブロックは他の目的のために使用され得る)と仮 定する。各メモリブロックは一意的な識別番号(「ブロックID」)を有する。 図1Bでは、チップ102のブロック112a乃至119a及びチップ103の ブロック112b乃至119bがブロックID1乃至16に順次に割り当てられ ている。これらの16ブロックが今、メモリアレイ130を形成する。物理ブロ ックとそのブロックIDとの間に1対1対応があるので、各ブロックの位置はそ のブロックIDを特定することによって一意的に識別され得る。この点で、ブロ ックIDはブロック物理アドレスの形態とみなすことができる。本発明のある実 施形態では、各ブロックが更にセクタに分割される。この実施形態では、データ の読み込み及び書き出しは同時にセクタで実行される。 ブロックIDは、種々の論理的オーダに配列される。図1Bでは、バッファ1 32aは、ブロックIDをストアするのに使用される。このバッファは、ここで は「エントリバッファ」と呼ぶ。バッファ123aは、多くのレジスタ(16ブ ロックIDがあるので、この例では16)を包含する。図1Bでは、それらは0 乃至15からラベル付けされる。バッファにおける各レジスタを、「エントリ」 と呼ぶ。各エントリは、一意的なブロックIDをストアするのに使用され得る。 以下により詳細に説明するように、本発明のある態様は、本発明の物理ブロッ クが種々の論理的変形を経験することができる。従って、同じ物理ブロックは、 ある時間で第1の論理アドレスと、別の時間で第2の論理アドレスとに関連する データを包含し得る。バッファ132aは、論理アドレスを備える物理ブロック を関連付けることによって線形アドレッシングスキームを実行するのに使用され 得る。図1Bでは、バッファ132aにおける各レジスタは、論理アドレスのレ ンジと関連する。レジスタが論理的手段(例えば「0」乃至「15」)に順次に 配列されるので、レジスタの論理的な位置とデータの論理アドレスとの間に1対 1の関係がある。各レジスタは、関連するアドレスを有するデータをストアする のに使用される物理ブロックのブロックIDを包含する。例えば、バッファ13 2aにおいて最初から3つのレジスタは、ブロックID13,2及び8を包含す る。ブロックが変形を通過するので、異なる物理ブロックは、同じアドレスレン ジにデータをストアするのに使用され得る。例えば、図1Bは、エントリバッフ ァ132bとして示される別の配列を示し、最初の3つのレジスタがブロックI D11,5及び14を含む。この例では、バッファ132a及び132bが同じ 物理バッファにストアされた異なる値を例示するのに使用されていることに注意 すべきである。本発明のフラッシュメモリシステムは、多くの種類の情報処理シ ステムの大容量記憶装置として使用され得る。本発明の作動を示すための例とし て、フラッシュメモリシステム100を、ハードディスクをエミュレートするの に使用する。図1Cは、フラッシュメモリシステム100のブロック140を示 す。ブロック140は、セクタ142乃至144のようなrセクタに分割される 。ブロック140はまた、ブロック140に関連した属性情報をストアするため に(「拡張」とラベル付けされた)メモリ領域148を包含する。各セクタはま た、セクタの属性情報をストアするために(セクタ142の領域146のような )セクタ属性領域を包含する。 (B)論理メモリアドレスの物理フラッシュメモリアドレスへのマッピング 上で指摘したように、フラッシュメモリシステムの実質的な機能は、データ及 びプログラムをストアすることである。典型的には、データ及びプログラムがセ クタベースアドレッシングスキームで編成されるので、データの各部分は一意的 に識別される。本発明のフラッシュメモリシステムがこのアドレッシングスキー ムと互換性があるように設計されるので、外部のシステムは論理セクタアドレス を特定することによってフラッシュ大容量記憶装置にアクセスすることができる 。 図1Dは、典型的なメモリ編成を実行するための本発明のフラッシュメモリシ ステム100を使用する例を示す。(MicrosoftのDOSオペレーティ ングシステム及びWindowsのような)多くのソフトウェアシステムは、デ ータを大容量記憶装置に配置するためにセクタベース線形アドレッシングスキー ムを使用する。このアドレッシングスキームでは、論理メモリ150のメモリア ドレスは、線形的に増加する。メモリ空間の最小アドレス可能ユニットは、(図 1Cのセクタ142乃至144に対応する)セクタであり、即ち、データは、同 時にバイト又はワードを読み込み且つ書き込む代わりに、同時にセクタを読み込 み且つ書き込む。セクタのサイズは、ファイルシステムの設計に関連して選択す ることができる。図1Dに示す例では、スターティングセクタアドレスを「0 0」と示し、最高セクタアドレスを(例示の目的に限って)「79」として示す 。これらの論理セクタは論理ブロックにグループ化され、これらの論理ブロック は(エントリバッファ132cを使用して)それらに対応する物理ブロックにマ ップされる。物理ブロックのセクタのオーダは、それに対応する論理ブロックを 保持する。 例として、図1Dの各ブロックは、10セクタを包含するように仮定する。こ の例では、数は、(2進数又は16進数の代わりに)10進数である。エントリ バッファ132cのレジスタ番号「0」によって、13のブロックIDを有する ブロックが論理アドレス空間の第1のブロックとして割り当てられる。従って、 このブロックのセクタは、「00」乃至「09」の論理セクタアドレスに対応す る。エントリバッファ132cのレジスタ番号「1」によって、2のブロックI Dを有するブロックは、第2のブロックとして割り当てられる。従ってこのブロ ックのセクタは、「10」乃至「19」の論理セクタアドレスに対応する。同じ 関係が、他のレジスタに関しても保持される。 データをストアするための独創的なフラッシュメモリシステムを使用するため に、制御器110は、フラッシュメモリシステムにおける一意的に識別可能なセ クタ内の外部システムから生じたデータにアクセスすることができなければなら ない。上記の論理セクタアドレスは、外部システムとフラッシュメモリシステム との間にインターフェースを提供する。外部システムは、その論理セクタアドレ スを特定することによってアクセスされ得るデータの位置を示すことができる。 論理セクタアドレスが知られているとき、論理セクタアドレスは、一つのブロッ ク内の総セクタの数を論理セクタアドレスに割ることによって計算され得る。こ の除算の商は、論理ブロックアドレスであり、剰余はその論理ブロック内のセク タ数である。典型的なブロックアドレスは、論理的―物理的ブロックマップテー ブルを見つけることによって見出され得る。 以下の例は、その論理セクタアドレスが知られている場合の、セクタの物理的 位置を得るための方法を例示する。論理セクタアドレス#32が与えられている と仮定すると(図1D参照)、このアドレスは1つのブロック内の(この例では 10である)セクタの数によって除算される。除算の商は3であり、剰余は2で ある。それゆえ、論理ブロックアドレスは、上記除算の商である3である。11 の物理ブロックID内のこの変換は、エントリバッファインデックス3の内容か ら得られ得る。上記除算の剰余2は、上で得られた物理ブロックIDに関するセ クタオーダである。セクタ数が0から始まるので、論理セクタアドレス#32を 備えるセクタは、11の物理ブロックIDを備えるブロックの第3のセクタに配 置される。 図IB乃至IDに示すエントリバッファは、好ましくは(スタティック又はダ イナミック)RAMで実行される。これは、エントリバッファの情報がしばしば 変更される必要があるので、それは、エントリバッファがフラッシュメモリで実 行されるならば、効率的に減少しうる。 コンピュータシステムをパワーダウンした後に、RAMにストアされたデータ が消去されることは知られている。従って、エントリバッファの情報は、パワー ダウンしたときに失われる。しかしながら、各ブロックの拡張領域にストアされ た属性情報を使用することによってエントリバッファの内容を復元することが可 能である。 (C)メモリシステムのデータの読み出し及び書き込み 本発明のシステムは情報をストアするのに使用される。従って、本発明のブロ ック及びセクタから書き込み及び読み出しする必要がある。上述したように、フ ラッシュメモリは消去する前に上書きすることができない。従って、データをス トアするためのブロックに加えて、新しい構造を導入する必要がある。 本発明のある実施形態では、ブロックはワーキング(W)ブロックと、テンポ ラリQバッファと、消去可能(E)商とに分割される。Wバッファはデータをス トアするのに使用される。Qバッファは、選択されたWブロックに対してテンポ ラリ書き込みバッファとして使用される。これは、Wブロックが直接更新されな いので、必要である。消去されるべきブロックがEバッファに置かれる。以下に 説明するように、E商の導入がブロックリサイクリングに関する必要性から生じ るので、Qバッファのほとんど無限大の供給は、物理ブロックの固定された数か ら生成され得る。E商の好ましいサイズは、ユーザの用途によって決定される。 (1)データ書き込み作動 図2Aは、本発明に関する書き込みのための方法を図示する。合計10ブロッ クがあると仮定する。再び、図2Aのブロックの数は例示の目的のためだけであ り、ブロックの実際の数は非常の多くすることができることに注意すべきである 。それらのブロックIDは、エントリバッファ132eに包含される。それらの ブロックの8つは、データをストアするために使用される(それらのブロックは 上述したWブロックである)。残りのブロックはQバッファ又はE商に割り当て られ得る。この例の各カテゴリにおけるブロックの数が例示のみであり、他のユ ーザアプリケーションがカテゴリに対して異なる数のブロックを割り当てること ができることに注意すべきである。 書き込みの一つの方法がWブロックに順次書き込むことと、一度に同時に書き 込むことを含む。本発明では、Wブロックは直接書き込まれることはできない。 その代わり、Qバッファはデータを受け取るのに使用される。図2Aでは、3の ブロックIDを備えるブロックがQバッファとして割り当てられると仮定する。 このQバッファが、6番目のブロックに対応する線形論理ブロックアドレスを有 するWブロックの代理として使用されることも仮定する。このブロックは、8の ブロックIDを有する。従って、第6のブロックに書き込まれるいかなるデータ も、Qバッファ内に書き込まれる。 図2Bは、Qバッファ158の初期状態と第6のブロック160とを示す。こ れらの2つのブロックは複数のセクタを包含する。9番目のブロック160の全 てのセクタが、データを包含し、「used」とマークされると仮定する。一方 、Qバッファが最初はクリーンなので、Qバッファ158の全てのセクタは「u nused」とマークされる。 データがQバッファ158内に書き込まれるとき、Qバッファの対応するセク タは「used」とマークされる。直後に、6番目のブロック160の対応する セクタは、ダーティ(dirty)とマークされる。これを図2Cに示す。 別のWブロックをサービスするためにQバッファを割り当てることが望ましい とき、全ての有効なデータをQバッファ158に対する第6のブロック160に コピーすることが必要である。再び、以下のステップがコピーする際に続く: (i)セクタを使用されたQバッファにマークし、次いで(ii)対応するセクタをW ブロックdirtyにマークする。これを図2Dに示す。 データ転送が完了した後に、8のブロックIDを有するブロックはE商の一つ のブロックに変更される。3のブロックIDを備えるオリジナルQバッファは第 6のWブロックを置換する。これを図3に示す。 別のWブロックに書き込むことが必要ならば、別のQバッファが割り当てられ るために必要である。E商の一つのブロックがQバッファ内で消去され変更され る。これを図4に示し、6のブロックIDを備えるブロックが消去されるために 選択される。次いで、このブロックはQバッファ内で変更され得る。次いで、こ のブロックは、意図されたWブロック(図4では第2のWブロック)を受け取る のに使用される。 (2)データ読み込み作動 アドレッシングの観点では、読み込みは書き込みと似ている。ほとんどのデー タ書き込みは、論理セクタアドレスの特定のレンジに対するデータのストリーム の書き込みを含む。従って、まず特定の論理セクタアドレスをWブロックにマッ プし、次いで、上述した書き込み作動を実行することが必要である。同様に、読 み込みは通常は、論理セクタアドレスの特定のレンジで実行される。 アプリケーションが読み込みタスクを実行することを望むとき、それは図1の 制御器110にコマンドを送る。次いで、制御器110は、要求されたデータが 該データをアプリケーションにストアし、戻す、対応物理アドレスを計算する。 データがストアされている物理的位置に論理セクタアドレスをマッピングする方 法は、上述した「Mapping Logical Memory Address into Physical Flash Memor y Address」と名付けられたセクタに基づく。上のデータ書き込み作動に記載し たように、有効なデータはWブロック又はQバッファにストアされ得る。読み込 まれるべきデータがQバッファによって取り扱われないWブロックに配置されて いることを制御器110が見つけたとき、Wブロック内のデータは有効になり、 データのこのレンジはアプリケーションに戻され得る。読み込まれるべきデ ータが、Qバッファによって取り扱われているWブロックに配置されているなら ば、実在の戻されたデータは、Wブロックのデータが有効か否かに依存して、W ブロック又はQバッファのどちらかから来る。新しいデータがQバッファに対応 して書き込まれた後、Wブロックの古いデータがdirtyとマークされるので 、有効になっているデータの一つのコピーとなりうる。 (D)ブロックリサイクリング 上述したように、本発明のフラッシュメモリシステムの特徴の一つは、ブロッ クが種々のカテゴリ内に分割され、各々が特定の機能を実行するように設計され ることである。上の例はまた、Qブロックの一定の供給の必要性を示す。更に、 ダーティブロックは、放棄される必要がある。フラッシュメモリシステムのブロ ックの数が有限なので、これらのダーティブロックをQブロックに変える必要が ある。本アーキテクチャでは、ブロックは一つのカテゴリから別のカテゴリに変 形することができる。その結果、Qブロックの明らかな無限の供給がある。 次に、物理ブロックの変形を記載する。本発明では、メモリブロックは以下の カテゴリの内の1つに配置され得る:消去可能−クリーン(「E/C」)、バッ ド(bad)(「B」)、メインワーキングブロック(「W」)、シーケンシャ ルバッファ(「Q」)、及び、非シーケンシャルバッファ(「X」)。Xバッフ ァは、上述のシーケンシャル書き込みに使用されるQバッファと異なる、非シー ケンシャル書き込みに使用される。非シーケンシャル書き込みの詳細は、個々の 項で詳細に記載する。 フラッシュメモリの特徴の一つは、ブロックが作動中に不完全となることであ る。これらのブロックはマークされるので、それらは再び使用されない。Bカテ ゴリのブロックは不完全なブロックである。このカテゴリはここに包含されてい るので、ブロック変形の完全なピクチャは表されない。 これらのカテゴリの間の関係は、図5に示されている。このアーキテクチャで は、Wブロック(例えば、ブロック172乃至174)が、線形アドレッシング スキームでデータをストアするのに使用される。従って、各Wブロックはそのス キームの所定のアドレスレンジと関連している。多くの状況では、多数のWブロ ックがある。データはWブロックに直接書き込まれない。新しいデータの書き込 みは、Qバッファ176又はXバッファ177のいずれかに差し向けられ得る。 この実施形態では、Qバッファは新しいデータのシーケンシャル書き込みのため に使用され、Xバッファは新しいデータの非シーケンシャル書き込みに使用され る。必要なときに、(矢印178及び179によって示した)E/Cカテゴリの (ブロック181乃至183のような)クリーンブロックのプールから、Q及び Xバッファは得られる。古い又は有効なデータを備えるWブロックは、dirt yとマークされ、次いで、(矢印185で示した)E/Cカテゴリに配置される 。E/Cカテゴリのダーティブロックは、クリーンブロックを作るために消去さ れる。(以下に詳細に述べるような)適切な時間で、Qバッファが(矢印186 によって示された)Wブロックに変更され、Xバッファが(両方向矢印179に よって示された)E/Cカテゴリに配置され得る。幾つかのブロックが検出され たならば、それらはBカテゴリ(例えば、ブロック191乃至193)内に配置 され得る。これは、図5の矢印195乃至197によって示される。 図1Cと関連して上述したように、各ブロックは拡張領域148を有する。こ の領域は、ブロックのカテゴリを決定するのに使用され得る属性情報をストアす る。属性情報の詳細は以下に記載する。 (E)ブロック及びセクタのカテゴリの識別 上述したことは、本フラッシュメモリシステムのアーキテクチャである。その 中でデータを更新し、そこからデータを検索する、セクタベースアドレッシング スキームに関連してデータをストアすることを取り扱うことができる。アーキテ クチャの一つの態様は、ブロックがカテゴリ内に分割されることである。従って 、ブロックに関連しているカテゴリを決定する必要がある。 図1Cと関連して指摘したように、各セクタはセクタ属性領域を有し、各ブロ ツクは、セクタの状況情報をストアするための拡張領域と、ブロックのカテゴリ 情報とをそれぞれ有する。 セクタ属性領域及び拡張領域を使用するための他の方法は、本発明と同じ発明 者によって同じ日付で出願された「Method and System for Managing a Flash Memory Mass Storage System」(代理人ドケット番号17538.871)と名 付けられた特許出願に開示されている。「Method and System for Managing a F lash Memory Mass Storage System」特許出願の開示は、リファレンスとしてこ こに組み込む。 (F)変形実施形態:暗示ダーティ 本発明のアーキテクチャがフレキシブルであり、フラッシュメモリの特定の特 徴から生ずる問題を取り扱うことができることは、上記記載から分かる。しかし ながら、性能を更に向上することが可能である。「暗示ダーティ」と呼ばれる変 形プロシージャが、本発明の利点として使用され得る。以下に説明するように、 このプロシージャは、回数を減少させ、フラッシュメモリが古いデータ・ダーテ ィを作る目的でプログラムされている必要がある。プログラミングのための時間 の長さが比較的長いので、このプロシージャは本発明のフラッシュメモリシステ ムの性能を向上させることができる。 暗示のダーティプロシージャを図示した例を図6D乃至6Fに示す。このプロ シージャと(図2B乃至2Dに記載した)通常のプロシージャとの間の相違を図 示するために、対応する通常のプロシージャを図6A乃至6Cに示す。図6Aは 、Wブロック762の全てのセクタが、(「used」とラベル付けされた)デ ータをストアするのに使用されていることを示す。一方、Wブロック762を取 扱うQバッファ764の全てのセクタは、(「unused」とラベル付けされ )使用されていない。従って、Qバッファ764はクリーンバッファである。図 6Bは、Qバッファ764の使用されていないセクタの幾つかが(「unuse d used」とラベル付けされ、ここで「used」と呼ばれる)データをス トアするのに使用される。Wブロック762の対応するセクタは、(「used dirty」とラベル付けされ、ここでは「dirty」と呼ばれる)マーク されたダーティである。Wブロック762をきれいにする必要があるとき、(即 ち、「used」とラベル付けされ、「dirty」でない)その中で、全ての 有効なデータがQバッファ764にコピーされる必要がある。図6Cは、クリー ンアップ・オペレーションの後の、Qバッファ764及びWブロック762を示 す。 Qバッファ764の全てのセクタがいま、マークされた「used」であり、W ブロック762の全てのセクタがいま、マークされた「dirty」である。 図6Aに対応する暗示のダーティプロシージャにおける状況を、図6Dに示す 。再び、Wブロック766の全てのセクタが、(「used」とラベル付けされ た)データをストアするのに使用される。一方、Qバッファ768の全てのセク タは、(「unused」とラベル付けされ)使用されない。図6Eは、Qバッ ファ768の使用されていないセクタの幾つかが、(「unused used 」とラベル付けされ、ここでは「used」と呼ぶ)データをストアするのに使 用される。しかしながら、Wブロック766における対応するセクタは、マーク されたダーティではない。従って、Wブロック766における全てのセクタは、 「used」状態のままである。Qバッファ768の対応するセクタが「use d」とラベル付けされているならば、それらは考慮されたダーティであり得るの で、Wブロック766における対応するセクタをマークする必要はない。Wブロ ック766をきれいにする必要があるとき、Qバッファは最初に走査される。Q バッファ768の「unused」セクタに対応するWブロック766のセクタ だけがQバッファにコピーされる必要がある。図6Fは、クリーンアップ・オペ レーションの結果を示す。Qバッファ768の全てのセクタはいま、コピーされ た後に、「used」とラベル付けされる。しかしながら、Wブロック766の セクタをマークする必要はない。その結果、セクタ・ダーティをマークする目的 のためにWブロック766をプログラムする必要はない。従って、オペレーショ ンは簡略化され、性能が向上する。 暗示のダーティプロシージャを使用して処理されたデータを読み込む際に、Q バッファは最初に走査される必要がある。Qバッファのデータが「used」と マークされているならば、このデータは有効なデータである。Qバッファのデー タが「unused」とマークされているならば、有効なデータを見つけるため にWブロックの対応するセクタに行く必要がある。 (G)変形実施形態:非シーケンシャル書き込み及び読み込み 上述したWブロック、Qバッファ及び消去キューを使用したフラッシュメモリ システムをセットアップすることが可能であるけれども、このシステムはデータ のランダム更新を有効に取扱うことができない。要求を更新するセクタがシーケ ンシャルに到着せずにランダムであるならば、本システムはQバッファを頻繁に きれいにする必要がある。このクリーンアッププロシージャは有効なセクタをW ブロックからQバッファに移動させることを含む。フラッシュメモリのプログラ ム速度が比較的遅いので、これは時間消費プロセスである。全ての時間で書き込 み要求が異なるWブロックに降下する最悪の場合を考慮する。この状況では、セ クタが書き込まれているときはいつでも、システムは、新しい書き込み要求に関 して新しいQバッファを割り当てるためにQバッファをきれいにしなければなら ない。古いWブロックに1つだけダーティなセクタがあるので、他の全ての有効 なセクタを古いQバッファ内に移動させるべきである。1つのセクタを書き込む オーバーヘッドは、この最悪の場合では非常に大きい。この性能発行を乗り越え るために、ランダム書き込みを有効に取扱う新しい機構を設計するべきである。 (Xバッファとも呼ばれる)非シーケンシャルバッファはこの目的のために設計 された。 非シーケンシャルバッファはバッファランダム書き込みし、(Qバッファとも 呼ばれる)シーケンシャルバッファは、バッファシーケンシャル書き込みのため に設計される。書き込み要求を受け入れるときはいつでも、本システムは、要求 がシーケンシャルか否シーケンシャルかどうか最初に評価する。シーケンシャル 書き込みのデータがQバッファに置かれる。非シーケンシャル書き込みのデータ は、この要求されたアドレスの有効なデータがQバッファに存在しないならば、 Xバッファ内に置かれる。さもなければ、それはQバッファ内にも置かれ得る。 本発明では、Qバッファのセクタがダーティとマークされないので、この制約は 必要である。有効なセクタがQバッファに存在するとき、非シーケンシャル書き 込みのデータがXバッファ内に置かれるならば、Qバッファの有効なセクタをダ ーティとマークする。ついに、QバッファはWブロック内に変更される。これが 生じるとき、Wブロックの全ての有効なデータを、Qバッファの対応するその位 置に移動する。Xバッファ内に置かれる非シーケンシャル書き込みのデータを、 Qバッファのその対応する位置に移動する。フラッシュメモリが、消去する前に 上書きすることができないので、このことは可能ではない。 全ての書き込み要求を、最初にシーケンシャル又は非シーケンシャル書き込み に分類する。以下で、簡単な原理に基づいてシーケンシャルと非シーケンシャル 書き込みを定義する。Rがリファレンスセクタアドレスであり、S(n)がn番 目の書き込み要求のセクタアドレスであると仮定する。 S(n)=(R+1)mod m ならば、n番目の書き込み要求はシーケンシャルであり、 ここで、mは沿うセクタの数であり、 modはモジュロ演算である。 n番目の書き込み要求がシーケンシャルならば、リファレンスセクタアドレス は、S(n)の新しい値を割り当てられる。さもなければ、Rの値は更新されな い。非シーケンシャル書き込みは、シーケンシャルでない全ての書き込みを参照 する。上述の定義がシーケンシャル書き込みの基本的な態様を記載しているけれ ども、それは全ての命令された書き込みシーケンスを受け取ることを可能にして いるわけではない。論理セクタアドレス1,2,3,5,6,7,8によって示 された書き込み要求のオーダを考える。最初の3つの要求は、上の定義にしたが ったシーケンシャル書き込みである。3番目の書き込みが完了したとき、3番目 の書き込みがシーケンシャル書き込みであるので、リファレンスセクタアドレス は3の値となるように更新される。5の論理セクタアドレスを備える4番目の書 き込みは、非シーケンシャル書き込みとして分類されるので、リファレンスセク タアドレスは更新されない。上の定義に基づいて、4番目の要求に続く全ての要 求はまた、リファレンスセクタアドレスが3であるので、非シーケンシャルとし て分類される。書き込み要求5,6,7及び8が命令された順番で到着すること が明らかであり、シーケンシャルとして分類されるべきである。この例に見られ るように、非シーケンシャル書き込みを更にチェックすることが要求されるので 、非シーケンシャル書き込みに続く書き込みの命令されたシーケンスは識別され ない。いかなる非シーケンシャル書き込みに関しても、以下の条件はチェックさ れるべきである: 上の定義に従った非シーケンシャル書き込みS(n)が、 S(n)=(S(n−1)+1)mod m を満たし、 ここで、S(n−1)が以前の書き込み要求の論理セクタアドレスであるならば 、非シーケンシャル書き込みS(n)がシーケンシャル書き込みとなるように定 義され、リファレンスセクタアドレスRはS(n)の値となるように更新される 。 この定義は、非シーケンシャル書き込みが以前の書き込み要求の論理セクタア ドレスをチェックすることによってシーケンシャル書き込みとして分類されるこ とができることを示す。実際の実施では、種々の以前の書き込み要求をチェック する必要がある。更に、シーケンシャル書き込みをチェックする規則は、書き込 みシーケンスの現在のパターンに適合するように動的に変化させることができる 。例えば、同様の規則は、逆転されたシーケンシャル書き込みを受け取るように 適用され、書き込みシーケンスの論理セクタアドレスは降順で整列される。 (1)シーケンシャル及び非シーケンシャルバッファを使用した書き込み フラッシュメモリシステム100におけるデータを読み込み且つ書き込むプロ シージャをいま記載する。図7は、新規又は更新データがシステム100の適切 なブロックに書き込まれる方法を示すフローチャート250である。フローチャ ートはポイント252で開始する。ステップ254で、(図1Aに示した)制御 器110は、入力データの線形セクタアドレスを受け取る。次いで、制御器11 0は、線形セクタアドレスを論理ブロック及びセクタ座標に変換する(ステップ 256)。この実施形態では、セクタの書き込みを同時に実行する。ステップ2 68では、制御器110は、入力データがシーケンシャル(即ち、Q)バッファ 又は非シーケンシャル(即ち、X)バッファのどちらに書き込まれるべきか判断 する。書き込みがシーケンシャルバッファで実行されるならば、制御器110は 、この入力データのセクタアドレスが、シーケンシャルバッファに既に存在する データのアドレスと同じであるかどうか判断する(ステップ260)。その答え が否ならば、入力データはシーケンシャルバッファに書き込まれる(ステップ2 62)。次いで、制御器110は、入力データセクタアドレスが否シーケンシャ ルバッファに既に存在するデータのアドレスと同じであるか判断する(ステップ 264)。その答えが正ならは、入力データと同じセクタアドレスを有する非シ ー ケンシャルバッファのセクタをダーティとマークする(ステップ266)。次い で、フローチャート250は終了する(ステップ268)。ステップ264に対 する答えが否ならば、フローチャート250はステップ270に分岐し、即ち、 入力データセクタアドレスに対応するWブロックをダーティとマークする。次い でフローチャート250は終了する。 入力データが、以前の非シーケンシャル書き込みの結果として非シーケンシャ ルバッファに以前にストアされたデータを更新するので、ステップ264及び2 66を実行することは重要である。従って、このデータはダーティとマークする のに必要である。 ステップ260に戻ると、答えが(入力データアドレスがシーケンシャルバッ ファにおけるデータのアドレスと同じであることを含む)正であるならば、制御 器110は、シーケンシャルバッファをWブロックに切りかえる(ステップ27 2)。新しいシーケンシャルバッファが、消去キューから得られる。次いで、入 力データを新しいシーケンシャルバッファに書き込む(ステップ274)。次い で、(入力データと同じアドレスを有するデータを包含する)新しいWブロック をダーティとマークする(ステップ270)。次いで、フローチャートは終了す る。 フラッシュメモリが消去の前に上書きできないので、ステップ272を実行す ることは重要である。従って、いったんシーケンシャルバッファのセクタがデー タで以前に書き込まれているならば、同じセクタは再び書き込まれることはでき ない。その結果、新しいシーケンシャルバッファは、新しいデータが書き込まれ る前に、割り当てられなければならない。非シーケンシャル書き込みに関する状 況をいま記載する。ステップ280では、制御器110は、入力データアドレス がシーケンシャルバッファにおけるアドレスと同じであるかどうか判断する。そ の答えが否ならば、入力データを、非シーケンシャルバッファにおいて次に入手 可能なセクタに追加する(ステップ282)。非シーケンシャルバッファにおけ る連続のセクタが完全に異なるアドレスを有しているので、完全なアドレスをま た、非シーケンシャルバッファに書き込む。次いで、制御器は、同じアドレスを 有するデータが、非シーケンシャルバッファに以前に書きこまれているかどうか 判断する(ステップ284)。答えが否ならば、フローチャート250はステッ プ270に分岐し、即ち、入力データアドレスに対応するWブロックのセクタを ダーティとマークする。次いで、フローチャート250は終了する。答えが正な らは、非シーケンシャルバッファの以前に書き込まれたデータをダーティとマー クする(ステップ286)。フローチャート250は、ステップ270に分岐し 、即ち、入力データアドレスに対応するWブロックにおけるセクタをダーティと マークする。次いで、フローチャート250は終了する。 ステップ280に戻ると、答えが(入力データアドレスがシーケンシャルバッ ファにおけるデータのアドレスと同じであることを含む)正であるならば、制御 器110はシーケンシャルバッファをWブロックに切りかえる(ステップ272 )。入力データは、この場合において非シーケンシャルバッファに書き込まれる 必要がない。その代わり、新しいシーケンシャルバッファが消去キューから割り 当てられる。次いで、入力データを新しいシーケンシャルバッファに書き込む( ステップ274)。次いで、(ステップ272で作り出され、入力データとして 同じアドレスを有するデータを包含する)新しいWブロックをダーティとマーク する(ステップ270)。次いで、フローチャート250は終了する。 上の実施形態では、シーケンシャル及び非シーケンシャルバッファは、対応す るWブロックダーティをマークする前に書き込まれる。オペレーションのこの命 令は、新しいデータが正しく書き込まれるまで、古いデータを保持することを保 証する。Wブロックが最初にダーティとマークされ、新しいデータをシーケンシ ャル又は非シーケンシャルバッファに書き込む際に問題があるならば、古いデー タを回復させることは不可能である。これは、同じアドレスを有する1つ以上の ダーティWブロックのためである。従って、ダーティブロックが最も最近マーク されたダーティなブロックであることを知ることが不可能である。 (2)シーケンシャル及び非シーケンシャルバッファを含む読み込み 単一のセクタのデータを読み込む際のプロシージャを図8のフローチャート3 00に示す。フローチャート300はポイント302で始まる。ステップ304 では、制御器110は関心のあるセクタの線形アドレスを受け取る。ステップ3 06では、制御器110は、上述したマッピングを用いて、線形アドレスを、W ブロック及びセクタ座標に変換する。ステップ308では、制御器110は、所 定のセクタがステップ306で決定されたWブロックにあるかどうか判断する。 その答えが正ならば、出板をWブロックから読み込む(ステップ310)。フロ ーチャート300は終了する(ステップ312)。 その答えが否ならば、シーケンシャルバッファを、それが所望のセクタを包含 するかどうか判断するためにサーチする(ステップ314)。その答えが正なら ば、データをシーケンシャルバッファから読み込む(ステップ316)。フロー チャート300は終了する(ステップ318)。ステップ314に対する答えが 否ならば、データを非シーケンシャルバッファから読み込む(ステップ320) 。フローチャート300は終了する(ステップ322)。 (3)シーケンシャル及び非シーケンシャル書き込みを図示する例 この項は、ブロックサイクリング、シーケンシャル書き込み及び非シーケンシ ャル書き込みとの間の対話を更に図示することを提供する。対話を図示するため の例をここで提供し、図9に示す。簡単のために、ブロックID1乃至4を有す る4つの物理ブロックがあると仮定する。最初に、ブロックは、WブロックW1 及びW2として機能するブロックID1及び2をそれぞれ有し、ブロックは、Q バッファとして機能する3のブロックIDと、Xバッファとして機能する最後の 物理ブロックとを有する。ブロックIDとカテゴリとの間のマッピングを、部六 マップテーブル210に示す。更に、各ブロックが4つのセクタ(S1乃至S4 )を有すると仮定する。この例では、データが以下のセクタ:(W1,S3), (W1,S4),(W1,S1),(W2、S1)に順番に書き込まれる必要が あることを仮定する。最初に、2つのWブロックを(シンボル「V」によって図 3に示す)有効なデータを包含するように仮定し、Q及びXバッファを(シンボ ル「E」によって図9に示す)空となるように仮定する。 この例では、第1の書き込みはW1ブロックになされるので、QバッファはW 1を処理するように割り当てられる。(W1,S3)にストアされるデータは、 Qバッファの第3のセクタに書き込まれる。データがQバッファ内に書き込まれ た後、ブロックW1のセクタS3に存在するデータはダーティとマークされる( シンボル「D」によって図9に示す)。これがシーケンシャル書き込みである ので、同様なステップが、(W1,S4)内にストアされるべきデータを書き込 む際に用いられる。このとき、W1の内容をボックス212に示し、W2の内容 をボックス213に示し、Qバッファの内容をボックス214に示し、Xバッフ ァの内容をボックス215に示す。 (W1,S1)に対する書き込みは、(W1,S4)のシーケンシャル命令に 続かない。従って、データはXバッファ内に書き込まれる(ボックス217参照 )。W1ブロックのセクタS1はダーティとマークされる(ボックス218参照 )。W2及びQバッファには変更がない。 (W2,S2)に対する書き込みを今、記載する。この書き込みは、Qバッフ ァのサービスレンジの外に落ちる。その結果、このQバッファはクリーンアップ されなければならないので、新しいQバッファはこの書き込み要求を処理するた めに割り当てられる。W1ブロックに属するXバッファの全ての有効なデータは 、(図9の矢印220で示す)Qバッファに移動されなければならない。図3で は、XバッファのセクタS1は、ダーティとマークされる(ボックス226参照 )。W1ブロックに残った有効な全てのデータはまた、Qバッファに移動されな ければならない(図9の矢印221参照)。次いで、Qバッファを(拡張領域の 属性情報を変更することによって)新しいW1ブロックに変形する。古いW1ブ ロックをE/Cカテゴリに置く。 古いW1ブロックの消去後、それは使用可能になる。この例では、新しいQバ ッファとして割り当てられる。このQバッファはW2ブロックを処理するのに使 用する。ブロックマップテーブルの内容を、ボックス224に示す一つに変更す る。(4つのみのブロックの代わりに)多くのブロックを有するメモリシステム では、新しいQバッファは古いW1ブロックから来なければならないことはない 。 (W2,S1)に関する新しいデータはいま、(シンボル「V」によって示す )新しいQバッファのセクタS1に書き込まれる。W2ブロックの対応するセク タは、ダーティとマークされる(ボックス227参照)。 「Qバッファ・プロモーション」として本出願で参照される、書き込み要求が Qバッファのサービスレンジの外側である場合を取扱うために、ステップを図9 に示す。 (H)変形実施形態:管理ユニット 上述したシステムは、大容量記憶システムとしてフラッシュメモリを使用する ための有効なシステムである。規則的に、エントリバッファはDRAM又はSR AMを使用して実行される。幾つかの状況では、本システムは、SRAMの制限 された寸法でシステム内で実行される(例えば、マイクロコントローラ)。SR AMは不安リソース(scare resource)であるので、エントリバッファのサイズ を減少することが望ましい。一つの方法は、多数のブロックを「管理ユニット」 内にグループ化することである。エントリバッファの各レジスタは、管理ユニッ トの物理IDをストアするのに使用される。管理ユニットの数がブロックの数よ り少ないので、エントリバッファのレジスタの数を減少させることができる。管 理ユニットのサイズが、それらのコストパフォーマンス要求を満たすようにユー ザによって定義することができる。 管理ユニットが使用される実施形態では、全てのブロックリサイクリング、ク リーンアップ・オペレーション及びQバッファ・プロモーションは、管理ユニッ トに基づいている。その結果、更なるデータが、(例えば、リサイクリング・オ ペレーションに移動される)各オペレーションで処理される必要がある。その結 果、システムの性能は低下する。従って、管理ユニットの使用は、SRAMと性 能との間の取引を含む。この項の前に記載したシステムは、管理ユニットのサイ ズが1つのブロックである状況に対応し、最高の性能を有する。 (I)カテゴリ変化のさらなる詳細 カテゴリの変化をここで更に詳細に記載する。 (a)Qバッファに対するE/Cブロック 上で指摘したように、データをWブロックに直接書き込むことができない。そ の代わり、QバッファはWブロックに関する代理として役立つように割り当てら れる。Wブロック内に通常書き込まれるデータは、最初にQバッファに書き込ま れる。Qバッファがいっぱいのとき、それは(その拡張領域の属性情報を変更す ることによって)Wブロックに変更される。シーケンシャル書き込みが生じ、こ の新しいデータが現在のQバッファによって取扱われているWブロックに配置さ れないときはいつでも、新しいQバッファは新しいWブロックに関する書き込み バッファとして役立つようにE/Cブロックから割り当てられる。新しいQバッ ファが割り当てられる前に、古いQバッファをまず、Wブロックに変更しなけれ ばならない。E/CブロックからQバッファへの遷移は、その拡張領域の属性ビ ットの小さな数を変更することを含む。 (b)Wブロックに対するQバッファ QバッファがWブロックに変更されなければならない種々の状況がある。ある 状態は、シーケンシャル書き込み要求がQバッファのサービスレンジの外に落ち るときである。この状況は、Qバッファ遷移に対するE/Cブロックに関して上 で詳細に説明した。別の状態は、Xバッファがいっぱいのときであり:Xバッフ ァにバッファされた全てのデータは、データが属するWブロックに戻されて書き 込まれる必要がある(このプロシージャはXバッファクリーンアップと呼ばれる )。この状況が生じ、Qバッファによって取扱われているWブロックに属するX バッファにデータがあるならは、QバッファをWブロックに変更する。この遷移 は、以下のステップを含む(このプロシージャを「Qバッファ・プロモーション 」と呼ぶ)。 (i)これらのセクタがQバッファによって取扱われているWブロックに属し ているならば、XバッファからQバッファに有効なセクタを移動する。X バッファの遷移されたセクタにダーティを設定する。 (ii)WブロックからQバッファの対応するセクタに有効なセクタを移動し、 Wブロックの全ての遷移されたセクタをダーティとしてマークする。 (iii)QバッファがWブロックの位置を置換するように、エントリバッファ を変更する。 (iv)消去するために古いWブロックを送る。 Xバッファ内の有効な全てのデータをクリーンアップするために、これらの有 効なセクタのオーナを見つけるためにXバッファにおける全ての有効なセクタを 最初にスキャンする。Xバッファの有効なセクタの各オーナ(Wブロック)に関 して、以下のステップを実行する: (i)オーナWブロックに関するQバッファとしてE/Cカテゴリからブロッ クを割り当てる(QバッファはWブロックに関する書き込みバッファとし て役立つ)。 (ii)上述したように「Qバッファ・プロモーション」プロシージャを実行す る。 上のプロシージャを実行したとき、Xバッファの全てのデータを無効とマーク する。このXバッファをE/Cカテゴリに設定し、次いで、それが他のカテゴリ に遷移されることができるように、クリーンアップする。次いで、新しいXバッ ファをE/Cカテゴリのブロックから割り当てる。 (c)E/Cブロックに対するWブロック WブロックからE/Cブロックへの遷移は、Qバッファプロモーションの最後 のステップで生じる。 (d)E/Cブロックに対するXバッファ XバッファからE/Cブロックへの遷移は、上述したXバッファクリーンアッ プの最後のステップで生じる。 (e)Xバッファに対するE/Cブロック 非シーケンシャル書き込みが生じ且つXバッファが存在しないとき、若しくは 、非シーケンシャル書き込みが生じ且つXバッファがいっぱいのときに、Xバッ ファを必要とする。Xバッファが必要なとき、E/Cカテゴリからのブロックが Xバッファに遷移される。E/CからXへの遷移だけが、E/Cブロックの拡張 領域で幾つかの情報を変更することを含む。 (f)Bブロックに対するQバッファ 書き込みがQバッファ失敗を試みるとき、QバッファからBブロックへの遷移 が生じる。この状況では、Qバッファは、バッド・ブロックとしてマークされ、 データをストアするのに決して再び使用されない。 (g)Bブロックに対するXバッファ 書き込みがXバッファ失敗を試みるとき、XバッファからBブロックへの遷移 が生じる。この状況では、Xバッファはバッド・ブロックとしてマークされ、デ ータをストアするのに決して再び使用されない。 (h)Bブロックに対するE/Cブロック E/Cブロックがうまく消去されないとき、E/CブロックからBブロックへ の遷移が生じる。この状況では、E/Cブロックは、バッド・ブロックとしてマ ークされ、データをストアするのに決して再び使用されない。 本発明は、それの特定の実施形態を参照して記載してある。種々の修正及び変 更が、本発明の広い精神及び範囲から逸脱することなく成され得る。従って、明 細書及び図面は、限定的ではなく、例示として考慮されるべきであり、発明は提 供される請求の範囲によってのみ制限される。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 リー タイ ヤオ 台湾 シン チュ ツェン シン ロード レーン 85 ナンバー 9 5エフ (72)発明者 リー リ イェン 台湾 タイペイ シーリン シェツー ス トリート レーン 125 ナンバー 13 2エフ (72)発明者 リー ユー シュー 台湾 ビンドン マンツォウ レンハン ロード ナンバー 59 (72)発明者 ヒュー ティン チュン アメリカ合衆国 カリフォルニア州 95035 ミルピタス マーズ コート 271 【要約の続き】 本発明の変形実施形態では、新しいカテゴリがワーキン グブロックに対するランダム書き込みを処理するために 開発される。

Claims (1)

  1. 【特許請求の範囲】 1.大容量記憶システムを実現するためにフラッシュメモリを使用する方法であ って、 (a)前記フラッシュメモリを複数のブロックに分割し、 (b)前記複数のブロックから第1のタイプのブロックを形成し、前記第1の タイプのブロックを予め決められたアドレッシングスキームに関して編成 されたデータをストアするのに使用し、 (c)前記複数のブロックから第2のタイプのブロックを形成し、前記第2の ブロックを、前記第1のタイプのブロックのうちの一つに書き込まれるよ うになっているデータをストアするための一時的なバッファとして使用し 、 (d)消去される有効なデータを包含するブロックの第3のタイプを形成し、 (e)前記複数のブロックのうちの少なくとも一つを、前記第1、前記第2及 び前記第3のタイプのブロックのうちの一つから別のタイプに変更する、 ステップを含む、前記方法。 2.(a)物理識別を前記複数のブロックの各々に割り当て、 (b)論理アドレスを前記第1のタイプのブロックの各ブロックに割り当て、 (c)前記物理識別を前記論理アドレスにマッピングする、 ステップを更に含む、請求の範囲第1項に記載の方法。 3.前記第1のタイプのブロックのうちの選択された一つに既にストアされたデ ータを更新するステップを、更に有する請求の範囲第2項に記載の方法。 4.前記更新ステップが、 (a)更新される必要があるデータを包含する前記第1のタイプのブロックを 識別し、 (b)前記第3のタイプからのブロックを割り当て、前記割り当てられたブロ ックを前期第2のタイプのブロックに変更し、 (c)前記更新されたデータを前記割り当てられたブロック内に書き込む、 ステップを含む、請求の範囲第3項に記載の方法。 5.前記更新されたデータが前記割り当てられたブロック内に書きこまれた後に 、 前記第2のタイプの前記識別されたブロックをダーティとマークするステップ を更に含む、請求の範囲第4項に記載の方法。 6.前記更新されたデータが前記割り当てられたブロックに書きこまれた後に、 前記第2のタイプの前記識別されたブロックをusedとマークするステップ を更に含む、請求の範囲第4項に記載の方法。 7.前記更新ステップが更に、 (a)前記識別ブロックを前記第3のタイプに変更し、 (b)前記割り当てられたブロックを前記第1のタイプに変更する、 ステップを更に含む、請求の範囲第4項に記載の方法。 8.前記識別ブロックが割り当て済み論理アドレスを有し、前記割り当てられた ブロックを変更することが、前記割り当てられたブロックを前記割り当て済み 論理アドレスを有するブロックに変更するステップを有する、請求の範囲第6 項に記載の方法。 9.前記定義済みアドレッシングスキームがセクタベースアドレッシングスキー ムである、請求の範囲第1項に記載の方法。 10.前記定義ズムアドレッシングスキームが論理ブロックアドレスである、請 求の範囲第8項に記載の方法。 11.フラッシュメモリシステムが、 (i)線形アドレッシングスキームに論理的に編成されたデータをストアする ための第1のタイプのブロックと、 (ii)前記第1のタイプのブロックのうちの一つに書きこまれることになって いるデータを一時的にストアするための第2のタイプのブロックと、 (iii)消去されるべきであるブロックを含む第3のタイプのブロックと、 に分割される複数のブロックを有し、 前記複数のブロックの各々が、複数のフラッシュメモリセルを有し、 前記第2のタイプのブロックが前記第1のタイプのブロックに変更可能であ り、前記第1のタイプのブロックが前記第3のタイプのブロックに変更可能で ある、 前記フラッシュメモリシステム。 12.前記複数のブロックの各々が物理識別に割り当てられ、前記第1のタイプ のブロックが論理アドレッシングスキームを実行するのに使用され、前記シス テムが前記物理識別を前記論理アドレッシングスキームにマッピングするため のバッファを更に有する、請求の範囲第10項に記載のシステム。 13.前記論理アドレッシングスキームがセクタベースアドレッシングスキーム を有する、請求の範囲第11項に記載のシステム。 14.各ブロックが、領域に関係するブロックに関連する属性情報をストアする のに使用される前記領域を有する、請求の範囲第10項に記載のシステム。 15.各ブロックが複数のセクタを有する、請求の範囲第10項に記載のシステ ム。
JP52657998A 1996-11-25 1996-11-26 フラッシュメモリ大容量記憶システム Expired - Lifetime JP4005142B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/756,304 1996-11-25
US08/756,304 US5745418A (en) 1996-11-25 1996-11-25 Flash memory mass storage system
PCT/US1996/018973 WO1998024029A1 (en) 1996-11-25 1996-11-26 Flash memory mass storage system

Publications (2)

Publication Number Publication Date
JP2002513484A true JP2002513484A (ja) 2002-05-08
JP4005142B2 JP4005142B2 (ja) 2007-11-07

Family

ID=25042900

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52657998A Expired - Lifetime JP4005142B2 (ja) 1996-11-25 1996-11-26 フラッシュメモリ大容量記憶システム

Country Status (5)

Country Link
US (2) US5745418A (ja)
EP (1) EP0882264B1 (ja)
JP (1) JP4005142B2 (ja)
DE (1) DE69635962T2 (ja)
WO (1) WO1998024029A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7287117B2 (en) 2003-12-10 2007-10-23 Samsung Electronics Co. Ltd. Flash memory and mapping control apparatus and method for flash memory
JP2008507756A (ja) * 2004-07-21 2008-03-13 サンディスク コーポレイション 最適化されたシーケンシャルなクラスタの管理のためのfat分析
JP2009211228A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
WO2011068109A1 (ja) * 2009-12-03 2011-06-09 株式会社日立製作所 記憶装置、およびメモリコントローラ
JP4773342B2 (ja) * 2004-04-28 2011-09-14 パナソニック株式会社 不揮発性記憶装置及びデータ書込み方法
WO2013161398A1 (ja) * 2012-04-25 2013-10-31 ソニー株式会社 シーケンシャル書き込みを行う不揮発性メモリ装置

Families Citing this family (143)

* 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
US8171203B2 (en) * 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
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
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
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6411546B1 (en) * 1997-03-31 2002-06-25 Lexar Media, Inc. Nonvolatile memory using flexible erasing methods and method and system for using same
KR100251636B1 (ko) * 1997-04-10 2000-05-01 윤종용 소형컴퓨터시스템인터페이스방식접속을위한메모리장치
US6732293B1 (en) * 1998-03-16 2004-05-04 Symantec Corporation Method, software and apparatus for recovering and recycling data in conjunction with an operating system
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US7055055B1 (en) 1999-04-23 2006-05-30 Symantec Corporation Write cache flushing method for reducing data corruption
CA2339195A1 (en) * 1999-06-30 2001-01-04 General Electric Company Electronic electricity meter including flash memory
US7051055B1 (en) 1999-07-09 2006-05-23 Symantec Corporation Optimized disk storage defragmentation with swapping capabilities
AU6081200A (en) * 1999-07-09 2001-01-30 Eric D. Schneider Optimized disk storage defragmentation with swapping capabilities
US7660941B2 (en) * 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US7620769B2 (en) * 2000-01-06 2009-11-17 Super Talent Electronics, Inc. Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory
US6715067B1 (en) * 1999-09-21 2004-03-30 Intel Corporation Initializing a processor-based system from a non-volatile re-programmable semiconductor memory
US6578054B1 (en) 1999-10-04 2003-06-10 Microsoft Corporation Method and system for supporting off-line mode of operation and synchronization using resource state information
CN1088218C (zh) * 1999-11-14 2002-07-24 邓国顺 用于数据处理系统的快闪电子式外存储方法及其装置
US6735666B1 (en) * 2000-02-22 2004-05-11 Wind River Systems, Inc. Method of providing direct user task access to operating system data structures
US6741978B1 (en) * 2000-04-12 2004-05-25 Intel Corporation Accessing file data stored in non-volatile re-programmable semiconductor memories
JP3323185B2 (ja) * 2000-06-19 2002-09-09 田中電子工業株式会社 半導体素子接続用金線
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US6266273B1 (en) * 2000-08-21 2001-07-24 Sandisk Corporation Method and structure for reliable data copy operation for non-volatile memories
US7269090B2 (en) * 2001-01-30 2007-09-11 Freescale Semiconductor, Inc. Memory access with consecutive addresses corresponding to different rows
JP2002351685A (ja) * 2001-05-22 2002-12-06 Sankyo Seiki Mfg Co Ltd 不揮発性メモリのデータ更新方法及び制御装置
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123421D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123417D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
GB0123410D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6909910B2 (en) * 2002-02-01 2005-06-21 Microsoft Corporation Method and system for managing changes to a contact database
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
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7010662B2 (en) * 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US6621746B1 (en) 2002-02-27 2003-09-16 Microsoft Corporation Monitoring entropic conditions of a flash memory device as an indicator for invoking erasure operations
JP2003280979A (ja) * 2002-03-20 2003-10-03 Toshiba Corp 情報記憶装置
US7082512B2 (en) * 2002-11-21 2006-07-25 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US6973519B1 (en) 2003-06-03 2005-12-06 Lexar Media, Inc. Card identification compatibility
US7730222B2 (en) 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
US7577806B2 (en) 2003-09-23 2009-08-18 Symantec Operating Corporation Systems and methods for time dependent data storage and recovery
US7287133B2 (en) 2004-08-24 2007-10-23 Symantec Operating Corporation Systems and methods for providing a modification history for a location within a data store
US7991748B2 (en) 2003-09-23 2011-08-02 Symantec Corporation Virtual data store creation and use
US7725760B2 (en) 2003-09-23 2010-05-25 Symantec Operating Corporation Data storage system
US7827362B2 (en) 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7904428B2 (en) 2003-09-23 2011-03-08 Symantec Corporation Methods and apparatus for recording write requests directed to a data store
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7644376B2 (en) * 2003-10-23 2010-01-05 Microsoft Corporation Flexible architecture for notifying applications of state changes
CN100543702C (zh) * 2003-11-18 2009-09-23 松下电器产业株式会社 文件记录装置及其控制方法和执行方法
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
JP4284200B2 (ja) * 2004-01-28 2009-06-24 株式会社東芝 不揮発性半導体記憶システム
JP2007527579A (ja) * 2004-02-23 2007-09-27 レクサー・メディア・インコーポレーテッド セキュリティで保護されたコンパクト・フラッシュ
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
JP4253272B2 (ja) * 2004-05-27 2009-04-08 株式会社東芝 メモリカード、半導体装置、及び半導体メモリの制御方法
US7594063B1 (en) * 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
US7464306B1 (en) * 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US7949665B1 (en) 2004-11-19 2011-05-24 Symantec Corporation Rapidly traversing disc volumes during file content examination
US7395404B2 (en) * 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
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
US7650458B2 (en) * 2006-06-23 2010-01-19 Microsoft Corporation Flash memory driver
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
TWI338856B (en) * 2007-03-09 2011-03-11 Ite Tech Inc A flash memory storing device and a data storing method thereof
US7904670B2 (en) * 2007-03-19 2011-03-08 Sandisk Corporation Methods for conversion of update blocks based on comparison with a threshold size
US8275953B2 (en) * 2007-03-19 2012-09-25 Sandisk Technologies Inc. Methods for forcing an update block to remain sequential
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US8341335B2 (en) * 2007-12-05 2012-12-25 Densbits Technologies Ltd. Flash memory apparatus with a heating system for temporarily retired memory portions
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
WO2009118720A2 (en) 2008-03-25 2009-10-01 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
JP5175703B2 (ja) * 2008-12-11 2013-04-03 株式会社東芝 メモリデバイス
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) * 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8566510B2 (en) * 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US9037777B2 (en) * 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8621321B2 (en) 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US20120011555A1 (en) * 2010-07-11 2012-01-12 Qiuhang Richard Qian Watch new released movies online synchronizing with new released movies shown in cinemas
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US9141526B2 (en) * 2010-09-16 2015-09-22 International Business Machines Corporation Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
JP2012203443A (ja) * 2011-03-23 2012-10-22 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) * 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9396106B2 (en) * 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
TWI521343B (zh) 2011-08-01 2016-02-11 Toshiba Kk An information processing device, a semiconductor memory device, and a semiconductor memory device
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
KR20140078893A (ko) * 2012-12-18 2014-06-26 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
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
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US9959204B1 (en) * 2015-03-09 2018-05-01 Western Digital Technologies, Inc. Tracking sequential ranges of non-ordered data
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US9971689B2 (en) 2016-06-06 2018-05-15 International Business Machines Corporation Invoking input/output (I/O) threads and demote threads on processors to demote tracks from a cache
US9971508B2 (en) 2016-06-06 2018-05-15 International Business Machines Corporation Invoking input/output (I/O) threads on processors to demote tracks from a cache
US9952982B2 (en) * 2016-06-06 2018-04-24 International Business Machines Corporation Invoking demote threads on processors to demote tracks indicated in demote ready lists from a cache when a number of free cache segments in the cache is below a free cache segment threshold
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US20180060229A1 (en) * 2016-08-31 2018-03-01 Esab Ab Techniques for implementing memory segmentation in a welding or cutting system
US11704035B2 (en) 2020-03-30 2023-07-18 Pure Storage, Inc. Unified storage on block containers
US11841794B2 (en) * 2020-12-16 2023-12-12 Micron Technology, Inc. Memory sub-system write sequence track
US11797230B2 (en) 2021-12-14 2023-10-24 Hewlett-Packard Development Company, L.P. Bios variables storage
US12014073B2 (en) * 2022-05-17 2024-06-18 Micron Technology, Inc. Techniques for sequential access operations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341339A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
US5448577A (en) * 1992-10-30 1995-09-05 Intel Corporation Method for reliably storing non-data fields in a flash EEPROM memory array
US5473753A (en) * 1992-10-30 1995-12-05 Intel Corporation Method of managing defects in flash disk memories
US5459850A (en) * 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5473765A (en) * 1994-01-24 1995-12-05 3Com Corporation Apparatus for using flash memory as a floppy disk emulator in a computer system
JP2671860B2 (ja) * 1995-03-30 1997-11-05 日本電気株式会社 フラッシュメモリ用ファイルシステム

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7287117B2 (en) 2003-12-10 2007-10-23 Samsung Electronics Co. Ltd. Flash memory and mapping control apparatus and method for flash memory
JP4773342B2 (ja) * 2004-04-28 2011-09-14 パナソニック株式会社 不揮発性記憶装置及びデータ書込み方法
JP2008507756A (ja) * 2004-07-21 2008-03-13 サンディスク コーポレイション 最適化されたシーケンシャルなクラスタの管理のためのfat分析
JP4931810B2 (ja) * 2004-07-21 2012-05-16 サンディスク コーポレイション 最適化されたシーケンシャルなクラスタの管理のためのfat分析
US8677059B2 (en) 2008-03-01 2014-03-18 Kabushiki Kaisha Toshiba Memory system
JP2009211228A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP4551940B2 (ja) * 2008-03-01 2010-09-29 株式会社東芝 メモリシステム
US9021190B2 (en) 2008-03-01 2015-04-28 Kabushiki Kaisha Toshiba Memory system
US8407402B2 (en) 2008-03-01 2013-03-26 Kabushiki Kaisha Toshiba Memory system and data erasing method therefor
WO2011068109A1 (ja) * 2009-12-03 2011-06-09 株式会社日立製作所 記憶装置、およびメモリコントローラ
JP5480913B2 (ja) * 2009-12-03 2014-04-23 株式会社日立製作所 記憶装置、およびメモリコントローラ
US8949515B2 (en) 2009-12-03 2015-02-03 Hitachi, Ltd. Storage device and memory controller
GB2488480A (en) * 2009-12-03 2012-08-29 Hitachi Ltd Storage device and memory controller
GB2488480B (en) * 2009-12-03 2017-07-19 Hitachi Ltd Storage device and memory controller
WO2013161398A1 (ja) * 2012-04-25 2013-10-31 ソニー株式会社 シーケンシャル書き込みを行う不揮発性メモリ装置
JPWO2013161398A1 (ja) * 2012-04-25 2015-12-24 ソニー株式会社 シーケンシャル書き込みを行う不揮発性メモリ装置
US10372367B2 (en) 2012-04-25 2019-08-06 Sony Corporation Non-volatile memory device, non-volatile memory control device, and non-volatile memory control method
US11455112B2 (en) 2012-04-25 2022-09-27 Sony Group Corporation Non-volatile memory device, non-volatile memory control device, and non-volatile memory control method

Also Published As

Publication number Publication date
EP0882264A1 (en) 1998-12-09
JP4005142B2 (ja) 2007-11-07
US5745418A (en) 1998-04-28
WO1998024029A1 (en) 1998-06-04
DE69635962D1 (de) 2006-05-11
US5933368A (en) 1999-08-03
DE69635962T2 (de) 2006-11-16
EP0882264B1 (en) 2006-03-22
EP0882264A4 (en) 2002-09-04

Similar Documents

Publication Publication Date Title
JP4005142B2 (ja) フラッシュメモリ大容量記憶システム
CN1223945C (zh) 改进的闪速文件系统
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
US6327639B1 (en) Method and apparatus for storing location identification information within non-volatile memory devices
US8171203B2 (en) Faster write operations to nonvolatile memory using FSInfo sector manipulation
US7487303B2 (en) Flash memory device and associated data merge method
EP0691008B1 (en) Flash memory mass storage architecture
US6122195A (en) Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US7529879B2 (en) Incremental merge methods and memory systems using the same
US6678785B2 (en) Flash management system using only sequential write
US20070094445A1 (en) Method to enable fast disk caching and efficient operations on solid state disks
US20080120488A1 (en) Apparatus and method of managing nonvolatile memory
EP1228510A1 (en) Space management for managing high capacity nonvolatile memory
US7287117B2 (en) Flash memory and mapping control apparatus and method for flash memory
WO1994023432A1 (en) Flashmemory mass storage architecture
JP2003256289A (ja) 一様なウェアレベルをフラッシュメモリデバイスで達成するためのシステムおよび方法
WO1999044113A9 (en) Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
WO1998024028A1 (en) Method and system for managing a flash memory mass storage system
EP1576478A2 (en) Method and apparatus for grouping pages within a block
US20090172269A1 (en) Nonvolatile memory device and associated data merge method
KR20020092261A (ko) 멀티-플레인 구조의 플래시 메모리 관리 방법
CN116501655A (zh) 将存储器块解除分配的存储控制器及其操作方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20031125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060511

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060626

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060814

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061003

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070403

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070823

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100831

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110831

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120831

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130831

Year of fee payment: 6

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