JP4005142B2 - フラッシュメモリ大容量記憶システム - Google Patents
フラッシュメモリ大容量記憶システム Download PDFInfo
- Publication number
- JP4005142B2 JP4005142B2 JP52657998A JP52657998A JP4005142B2 JP 4005142 B2 JP4005142 B2 JP 4005142B2 JP 52657998 A JP52657998 A JP 52657998A JP 52657998 A JP52657998 A JP 52657998A JP 4005142 B2 JP4005142 B2 JP 4005142B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- sector
- buffer
- blocks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary 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)
Description
本発明は、コンピュータ用の大容量記憶装置の分野に関する。特に、本発明は、半導体不揮発性メモリに関するアーキテクチャに関し、特にフラッシュメモリに関する。
発明の背景
近代の情報処理システムは、プログラムやデータを記憶させるための大容量記憶装置として、不揮発性ランダムアクセスメモリを十分に利用する。最も広く使用される不揮発性メモリ装置はハードディスクであり、それは磁気材料にデータを記憶させる接触装置である。最近、半導体不揮発性メモリが開発された。半導体不揮発性メモリの1つのタイプは、典型的な行及び列配列におけるメモリセルとして配列された、複数の浮動ゲート金属シリコン酸化物電解効果トランジスタを有するフラッシュメモリである。浮動ゲート設計は、電源が取り外された後、情報を保存させるようにする。フラッシュメモリは、情報処理システムにおける大容量記憶装置として使用されるように適合させる数多くの特徴を有する。それは、重みにして軽量であり、非常に僅かな空間を占め、接触装置よりも少ない電力を消費する。更に、それは頑丈であり、接触装置を破壊することのできる反復ドロップに耐えることができる。
フラッシュメモリは典型的に、ホット電子注入によってプログラム可能であり、Fowler−Nordheimトンネリングによって消去可能である、複数の単一トランジスタメモリセルを有する。かかるメモリセルのプログラミング及び消去には、浮動ゲート電極の周りの誘電体を通過する電流を必要とする。誘電体は、一定の回数のプログラミング及び消去の後、故障することがわかった。該属性のために、かかるタイプのメモリは有限の消去−書込みサイクルを有する。フラッシュセル装置の製造者は、10,000から100,000の間の数消去−書込みサイクルのための制限を指定する。これは、故障する前に無数の消去−書込みサイクルを経て行くことができる、回転する磁気媒体(例、ハードディスク)及び揮発性メモリチップ(ダイナミックRAM及びスタティックRAM)のようなメモリ装置の他のタイプと異なる。結果として、フラッシュメモリ内の多くの消去−書込みサイクルを減らすことが望ましい。
フラッシュメモリは典型的に、メモリ内のセルのソース端末に高電圧を加えることにより消去される。ソース端末が全て金属ブッシングによって互いに接続されるため、全体的なメモリ(あるいはいくらかのサブポーション)は同時に消去される必要がある。従って、消去操作において、有効データ、並びに無効(不正)データは消去される。これは、個別のビットが消去され、書込まれる他のRAM装置と異なる。
フラッシュメモリと他のタイプのメモリ装置との間の別の差は、フラッシュメモリ装置における消去サイクルが遅い(メモリ装置の他のタイプの読込み−書込み時間と比較した場合)ことである。該属性は、システムが遅い消去サイクルを補うのに特別に設計されていない限り、大容量記憶装置としてフラッシュメモリを利用するシステムの性能を著しく下げる。
上述のように、フラッシュメモリを大容量記憶装置として有効利用するために、新たなメモリ構造の設計が必要とされている。
発明の概要
本発明は、フラッシュメモリシステムの新しいアーキテクチャに関する。このアーキテクチャは、データをストアするためにフラッシュメモリを使用して、上述の問題のいくつかを克服するように設計する。このアーキテクチャは、ブロック及びセクタを含む論理構造に物理メモリセルを編成することを含む。本発明の実施形態では、(「エントリバッファ」と呼ばれる)バッファが物理メモリを論理配列にマップするのに使用される。エントリバッファの内容を変更することによって、同じ物理メモリが異なる論理関数を実行するのに使用され得る。
本アーキテクチャの一つの用途は、メモリシステムが、セクタベースアドレッシングスキームによって配列されているデータをストアするのに使用されることである。かかるスキームの例が、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では、バッファ132aは、ブロックIDをストアするのに使用される。このバッファは、ここでは「エントリバッファ」と呼ぶ。バッファ123aは、多くのレジスタ(16ブロックIDがあるので、この例では16)を包含する。図1Bでは、それらは0乃至15からラベル付けされる。バッファにおける各レジスタを、「エントリ」と呼ぶ。各エントリは、一意的なブロックIDをストアするのに使用され得る。
以下により詳細に説明するように、本発明のある態様は、本発明の物理ブロックが種々の論理的変形を経験することができる。従って、同じ物理ブロックは、ある時間で第1の論理アドレスと、別の時間で第2の論理アドレスとに関連するデータを包含し得る。バッファ132aは、論理アドレスを備える物理ブロックを関連付けることによって線形アドレッシングスキームを実行するのに使用され得る。図1Bでは、バッファ132aにおける各レジスタは、論理アドレスのレンジと関連する。レジスタが論理的手段(例えば「0」乃至「15」)に順次に配列されるので、レジスタの論理的な位置とデータの論理アドレスとの間に1対1の関係がある。各レジスタは、関連するアドレスを有するデータをストアするのに使用される物理ブロックのブロックIDを包含する。例えば、バッファ132aにおいて最初から3つのレジスタは、ブロックID13,2及び8を包含する。ブロックが変形を通過するので、異なる物理ブロックは、同じアドレスレンジにデータをストアするのに使用され得る。例えば、図1Bは、エントリバッファ132bとして示される別の配列を示し、最初の3つのレジスタがブロックID11,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に示す例では、スターティングセクタアドレスを「00」と示し、最高セクタアドレスを(例示の目的に限って)「79」として示す。これらの論理セクタは論理ブロックにグループ化され、これらの論理ブロックは(エントリバッファ132cを使用して)それらに対応する物理ブロックにマップされる。物理ブロックのセクタのオーダは、それに対応する論理ブロックを保持する。
例として、図1Dの各ブロックは、10セクタを包含するように仮定する。この例では、数は、(2進数又は16進数の代わりに)10進数である。エントリバッファ132cのレジスタ番号「0」によって、13のブロックIDを有するブロックが論理アドレス空間の第1のブロックとして割り当てられる。従って、このブロックのセクタは、「00」乃至「09」の論理セクタアドレスに対応する。エントリバッファ132cのレジスタ番号「1」によって、2のブロックIDを有するブロックは、第2のブロックとして割り当てられる。従ってこのブロックのセクタは、「10」乃至「19」の論理セクタアドレスに対応する。同じ関係が、他のレジスタに関しても保持される。
データをストアするための独創的なフラッシュメモリシステムを使用するために、制御器110は、フラッシュメモリシステムにおける一意的に識別可能なセクタ内の外部システムから生じたデータにアクセスすることができなければならない。上記の論理セクタアドレスは、外部システムとフラッシュメモリシステムとの間にインターフェースを提供する。外部システムは、その論理セクタアドレスを特定することによってアクセスされ得るデータの位置を示すことができる。論理セクタアドレスが知られているとき、論理セクタアドレスは、一つのブロック内の総セクタの数を論理セクタアドレスに割ることによって計算され得る。この除算の商は、論理ブロックアドレスであり、剰余はその論理ブロック内のセクタ数である。典型的なブロックアドレスは、論理的−物理的ブロックマップテーブルを見つけることによって見出され得る。
以下の例は、その論理セクタアドレスが知られている場合の、セクタの物理的位置を得るための方法を例示する。論理セクタアドレス#32が与えられていると仮定すると(図1D参照)、このアドレスは1つのブロック内の(この例では10である)セクタの数によって除算される。除算の商は3であり、剰余は2である。それゆえ、論理ブロックアドレスは、上記除算の商である3である。11の物理ブロックID内のこの変換は、エントリバッファインデックス3の内容から得られ得る。上記除算の剰余2は、上で得られた物理ブロックIDに関するセクタオーダである。セクタ数が0から始まるので、論理セクタアドレス#32を備えるセクタは、11の物理ブロックIDを備えるブロックの第3のセクタに配置される。
図1B乃至1Dに示すエントリバッファは、好ましくは(スタティック又はダイナミック)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の全てのセクタは「unused」とマークされる。
データが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 Memory 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ブロックは、dirtyとマークされ、次いで、(矢印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 Flash 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の使用されていないセクタの幾つかが(「unusedused」とラベル付けされ、ここで「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の対応するセクタが「used」とラベル付けされているならば、それらは考慮されたダーティであり得るので、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は、入力データの線形セクタアドレスを受け取る。次いで、制御器110は、線形セクタアドレスを論理ブロック及びセクタ座標に変換する(ステップ256)。この実施形態では、セクタの書き込みを同時に実行する。ステップ268では、制御器110は、入力データがシーケンシャル(即ち、Q)バッファ又は非シーケンシャル(即ち、X)バッファのどちらに書き込まれるべきか判断する。書き込みがシーケンシャルバッファで実行されるならば、制御器110は、この入力データのセクタアドレスが、シーケンシャルバッファに既に存在するデータのアドレスと同じであるかどうか判断する(ステップ260)。その答えが否ならば、入力データはシーケンシャルバッファに書き込まれる(ステップ262)。次いで、制御器110は、入力データセクタアドレスが否シーケンシャルバッファに既に存在するデータのアドレスと同じであるか判断する(ステップ264)。その答えが正ならは、入力データと同じセクタアドレスを有する非シーケンシャルバッファのセクタをダーティとマークする(ステップ266)。次いで、フローチャート250は終了する(ステップ268)。ステップ264に対する答えが否ならば、フローチャート250はステップ270に分岐し、即ち、入力データセクタアドレスに対応するWブロックをダーティとマークする。次いでフローチャート250は終了する。
入力データが、以前の非シーケンシャル書き込みの結果として非シーケンシャルバッファに以前にストアされたデータを更新するので、ステップ264及び266を実行することは重要である。従って、このデータはダーティとマークするのに必要である。
ステップ260に戻ると、答えが(入力データアドレスがシーケンシャルバッファにおけるデータのアドレスと同じであることを含む)正であるならば、制御器110は、シーケンシャルバッファをWブロックに切りかえる(ステップ272)。新しいシーケンシャルバッファが、消去キューから得られる。次いで、入力データを新しいシーケンシャルバッファに書き込む(ステップ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のフローチャート300に示す。フローチャート300はポイント302で始まる。ステップ304では、制御器110は関心のあるセクタの線形アドレスを受け取る。ステップ306では、制御器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バッファはW1を処理するように割り当てられる。(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又はSRAMを使用して実行される。幾つかの状況では、本システムは、SRAMの制限された寸法でシステム内で実行される(例えば、マイクロコントローラ)。SRAMは不安リソース(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ブロックは、バッド・ブロックとしてマークされ、データをストアするのに決して再び使用されない。
本発明は、それの特定の実施形態を参照して記載してある。種々の修正及び変更が、本発明の広い精神及び範囲から逸脱することなく成され得る。従って、明細書及び図面は、限定的ではなく、例示として考慮されるべきであり、発明は提供される請求の範囲によってのみ制限される。
Claims (15)
- 大容量記憶システム(100)にフラッシュメモリを使用する方法であって、
前記フラッシュメモリを複数のマルチセクタブロックに分割し、
前記複数のマルチセクタブロックから第1ブロック集合(Wブロック)を割当て、前記第1ブロック集合を予め決められたアドレッシングスキームにあわせて編成されたデータをストアするのに使用し、
前記複数のマルチセクタブロックから第2ブロック(Qバッファ)を割当て、前記第2ブロックを、前記第1ブロック集合内のブロックにシーケンシャルに書き込まれるようになっているデータをストアするための一時的なバッファとして使用し、
前記複数のマルチセクタブロックから第3ブロック(Xバッファ)を割当て、前記第3ブロックを、前記第1ブロック集合内のブロックに非シーケンシャルに書き込まれるようになっているデータをストアするための一時的なバッファとして使用し、
消去される無効なデータを含む第4ブロック集合(E/Cブロック)を特定し、
前記第1ブロック集合、前記第2ブロック、及び前記第4ブロック集合間で、前記複数のマルチセクタブロックの少なくとも1つを再割当てするようにし、
シーケンシャルデータを含む更新の場合(260)は、前記第2ブロックの対応セクタに更新データを書き込み、且つ前記第2ブロックの対応セクタをマーキングすることによって、前記第1ブロック集合内の選択ブロックのセクタにストアされたデータを更新し、
非シーケンシャルデータを含む更新の場合(280)は、前記第3ブロックのセクタに前記更新データを書き込むことによって、前記第1ブロック集合内の選択ブロックのセクタにストアされたデータを更新する、ステップを含む方法。 - 前記第3ブロックに関係する不揮発性メモリに前記非シーケンシャルデータのためのアドレス情報を書き込むステップを更に含むことを特徴とする請求項1に記載の方法。
- 前の更新のアドレスを解析することによって、前記更新が非シーケンシャルデータを含むかどうかを決定するステップを更に含むことを特徴とする請求項1に記載の方法。
- 前記第2ブロック内のマークされていないセクタを決定し、
前記第1ブロック集合内のブロックのセクタからのデータを、マークされていない前記第2ブロック内のブロックにあるセクタにコピーし、
前記第2ブロックとして割当てられたブロックの識別を、前記第1ブロック集合内のブロックに変更する、ステップを更に含むことを特徴とする請求項1に記載の方法。 - (a)物理識別子(ブロックID)を前記複数のマルチセクタブロックの各々に割り当て、
(b)論理アドレス(150)を前記マルチセクタブロック集合の各ブロックに割当て、
(c)前記物理識別子を前記論理アドレスにマッピングする(132C)、ステップを更に含むことを特徴とする請求項1に記載の方法。 - 前記第2ブロック内のセクタがマークされているかを決定しながら、読み出されるセクタ内のデータに対応する前記第2ブロック内のセクタを決定し(314)、
前記セクタがマークされている場合、前記第2ブロックからのデータを取得(316)し、そして前記セクタがマークされていない場合、前記第1ブロック集合内のブロックまたは前記第3ブロックからのデータを取得する(310,320)、ステップを更に含むことを特徴とする請求項1に記載の方法。 - 前記第2ブロックを前記第1ブロック集合内のブロックに変更し、
前記第1ブロック集合内のブロックを前記第4ブロック集合内のブロックに変更するステップを更に含むことを特徴とする請求項1に記載の方法。 - 前記第2ブロックの対応セクタのマーキングが、前記第2ブロックに関係する不揮発性メモリセル内にパラメータを書き込むことを含む請求項1に記載の方法。
- 大容量記憶システム(100)であって、
(1)複数のマルチセクタブロックを含むフラッシュメモリシステムと、
(2)予め決められたアドレッシングスキームにあわせて編成されたデータをストアするのに使用される第1ブロック集合(Wブロック)を、前記複数のマルチセクタブロックから割当てるための論理手段(110)と、
(3)前記第1ブロック集合内のブロックにシーケンシャルに書き込まれるようになっているデータをストアするための一時的なバッファとして使用される第2ブロック(Qバッファ)を、前記複数のマルチセクタブロックから割当てるための論理手段(110)と、
(4)前記第1ブロック集合内のブロックに非シーケンシャルに書き込まれるようになっているデータをストアするための一時的なバッファとして使用される第3ブロック(Xバッファ)を、前記複数のマルチセクタブロックから割当てるための論理手段(110)と、
(5)消去されるデータを含む、前記複数のブロック内の第4ブロック集合(E/Cブロック)をマップ(map)するための論理手段と、
(6)前記第1ブロック集合、前記第2ブロック、及び前記第4ブロック集合間で、前記複数のマルチセクタブロックの少なくとも1つを再割当てするためのリソースと、
(7)(i)シーケンシャルなデータを含む更新の場合には、前記第2ブロックの対応セクタに更新データを書き込むこと且つ前記第2ブロックの対応セクタをマーキングすることによって前記第1ブロック集合内の選択ブロックのセクタにストアされたデータを更新し、及び、
(ii)非シーケンシャルデータを含む更新であって、前記第2ブロックのまだ更新データがストアされていないアドレスに対応するアドレスをもつデータを含む更新の場合には、前記第3ブロックのセクタに前記更新データを書き込むことによって前記第1ブロック集合内の選択ブロックのセクタにストアされたデータを更新する、
動作を実現する論理手段(110)、とを備えたシステム。 - 前記第3ブロックに関係する不揮発性メモリに前記非シーケンシャルデータのためのアドレス情報を書き込む論理手段を更に含むことを特徴とする請求項9に記載のシステム。
- 前の更新(previous updates)のアドレスを解析することによって、前記更新が非シーケンシャルデータを含むかどうかを決定する論理手段を更に含むことを特徴とする請求項9に記載のシステム。
- 前記第2ブロック内のどのセクタがマークされていないかを決定し、前記第1ブロック集合内のブロックのセクタからのデータを、マークされていない前記第2ブロック内のブロックにあるセクタにコピーし、そして前記第2ブロックを、前記第1ブロック集合内のブロック内へ変更するリソース手段を更に含むことを特徴とする請求項9に記載のシステム。
- 読み出されるデータに対応する前記第2ブロック内のセクタを決定し、且つ、前記決定されたセクタがマークされている場合、前記決定されたセクタからのデータを取得し、そして前記決定されたセクタがマークされていない場合、前記第1ブロック集合内のブロックまたは前記第3ブロックからのデータを取得するリソース手段を更に含むことを特徴とする請求項9に記載のシステム。
- 前記第2ブロックと前記第1ブロック集合内のブロックとのマッピングを変更するリソース手段と、
前記第1ブロック集合内のブロックを前記第4ブロック集合内のブロックに変更するリソース手段とを更に含むことを特徴とする請求項9に記載のシステム。 - 物理識別子(ブロックID)が前記複数のマルチセクタブロックの各々に割当てられ、
論理アドレス(150)が前記マルチセクタブロック集合のブロックに割当てられ、
前記物理識別子が前記論理アドレスにマッピングされる(132C)ことを特徴とする請求項9に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/756,304 US5745418A (en) | 1996-11-25 | 1996-11-25 | Flash memory mass storage system |
US08/756,304 | 1996-11-25 | ||
PCT/US1996/018973 WO1998024029A1 (en) | 1996-11-25 | 1996-11-26 | Flash memory mass storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002513484A JP2002513484A (ja) | 2002-05-08 |
JP4005142B2 true 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) |
Families Citing this family (149)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728851B1 (en) * | 1995-07-31 | 2004-04-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
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 |
US8171203B2 (en) * | 1995-07-31 | 2012-05-01 | Micron Technology, Inc. | Faster write operations to nonvolatile memory using FSInfo sector manipulation |
US6978342B1 (en) | 1995-07-31 | 2005-12-20 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US5845313A (en) | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
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 |
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 |
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 |
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 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
GB0123410D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system for data storage and retrieval |
GB0123417D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Improved data processing |
GB0123421D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Power management system |
GB0123416D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Non-volatile memory control |
GB0123415D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
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 |
US6901499B2 (en) | 2002-02-27 | 2005-05-31 | Microsoft Corp. | System and method for tracking data stored in a flash memory device |
US7533214B2 (en) | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
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 |
US7010662B2 (en) * | 2002-02-27 | 2006-03-07 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
US7085879B2 (en) * | 2002-02-27 | 2006-08-01 | Microsoft Corporation | Dynamic data structures for tracking data stored in a flash memory device |
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 |
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 |
US7827362B2 (en) | 2004-08-24 | 2010-11-02 | Symantec Corporation | Systems, apparatus, and methods for processing I/O requests |
US7725760B2 (en) | 2003-09-23 | 2010-05-25 | Symantec Operating Corporation | Data storage system |
US7577806B2 (en) | 2003-09-23 | 2009-08-18 | Symantec Operating Corporation | Systems and methods for time dependent data storage and recovery |
US7730222B2 (en) | 2004-08-24 | 2010-06-01 | Symantec Operating System | Processing storage-related I/O requests using binary tree data structures |
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 |
WO2005050453A1 (ja) | 2003-11-18 | 2005-06-02 | Matsushita Electric Industrial Co., Ltd. | ファイル記録装置 |
KR100608602B1 (ko) | 2003-12-10 | 2006-08-03 | 삼성전자주식회사 | 플래시 메모리, 이를 위한 사상 제어 장치 및 방법 |
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 | 株式会社東芝 | 不揮発性半導体記憶システム |
EP2506486A1 (en) * | 2004-02-23 | 2012-10-03 | Lexar Media, Inc. | Secure compact flash |
US7725628B1 (en) | 2004-04-20 | 2010-05-25 | Lexar Media, Inc. | Direct secondary device interface by a host |
EP2977906A1 (en) * | 2004-04-28 | 2016-01-27 | Panasonic Corporation | Nonvolatile storage device and data write method |
US7370166B1 (en) | 2004-04-30 | 2008-05-06 | Lexar Media, Inc. | Secure portable storage device |
JP4253272B2 (ja) * | 2004-05-27 | 2009-04-08 | 株式会社東芝 | メモリカード、半導体装置、及び半導体メモリの制御方法 |
US8607016B2 (en) * | 2004-07-21 | 2013-12-10 | Sandisk Technologies Inc. | FAT analysis for optimized sequential cluster management |
US7464306B1 (en) * | 2004-08-27 | 2008-12-09 | Lexar Media, Inc. | Status of overall health of nonvolatile memory |
US7594063B1 (en) * | 2004-08-27 | 2009-09-22 | Lexar Media, Inc. | Storage capacity status |
US7949665B1 (en) | 2004-11-19 | 2011-05-24 | Symantec Corporation | Rapidly traversing disc volumes during file content examination |
US7315916B2 (en) * | 2004-12-16 | 2008-01-01 | Sandisk Corporation | Scratch pad block |
US7412560B2 (en) * | 2004-12-16 | 2008-08-12 | Sandisk Corporation | Non-volatile memory and method with multi-stream updating |
US7395404B2 (en) * | 2004-12-16 | 2008-07-01 | Sandisk Corporation | Cluster auto-alignment for storing addressable data packets in a non-volatile memory array |
US7386655B2 (en) * | 2004-12-16 | 2008-06-10 | Sandisk Corporation | Non-volatile memory and method with improved indexing for scratch pad and update blocks |
US7366826B2 (en) * | 2004-12-16 | 2008-04-29 | Sandisk Corporation | Non-volatile memory and method with multi-stream update tracking |
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 |
US8275953B2 (en) * | 2007-03-19 | 2012-09-25 | Sandisk Technologies Inc. | Methods for forcing an update block to remain sequential |
US7904670B2 (en) * | 2007-03-19 | 2011-03-08 | Sandisk Corporation | Methods for conversion of update blocks based on comparison with a threshold size |
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 |
JP4551940B2 (ja) | 2008-03-01 | 2010-09-29 | 株式会社東芝 | メモリシステム |
US8972472B2 (en) | 2008-03-25 | 2015-03-03 | Densbits Technologies Ltd. | Apparatus and methods for hardware-efficient unbiased rounding |
JP5175703B2 (ja) * | 2008-12-11 | 2013-04-03 | 株式会社東芝 | メモリデバイス |
US8458574B2 (en) * | 2009-04-06 | 2013-06-04 | Densbits Technologies Ltd. | Compact chien-search based decoding apparatus and method |
US8819385B2 (en) | 2009-04-06 | 2014-08-26 | Densbits Technologies Ltd. | Device and method for managing a flash memory |
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 |
DE112010004667T5 (de) | 2009-12-03 | 2013-01-17 | Hitachi, Ltd. | Speichervorrichtung und Speichersteuerung |
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 |
US9501392B1 (en) | 2011-05-12 | 2016-11-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of a non-volatile memory module |
US9372792B1 (en) | 2011-05-12 | 2016-06-21 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
US9195592B1 (en) | 2011-05-12 | 2015-11-24 | Densbits Technologies 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 |
US9396106B2 (en) * | 2011-05-12 | 2016-07-19 | 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 |
TWI521343B (zh) | 2011-08-01 | 2016-02-11 | Toshiba Kk | An information processing device, a semiconductor memory device, and a semiconductor memory device |
US8996788B2 (en) | 2012-02-09 | 2015-03-31 | Densbits Technologies Ltd. | Configurable flash interface |
US8947941B2 (en) | 2012-02-09 | 2015-02-03 | Densbits Technologies Ltd. | State responsive operations relating to flash memory cells |
US8996793B1 (en) | 2012-04-24 | 2015-03-31 | Densbits Technologies Ltd. | System, method and computer readable medium for generating soft information |
TWI605458B (zh) * | 2012-04-25 | 2017-11-11 | Sony Corp | Non-volatile memory devices, non-volatile memory control devices, and non-volatile memory control methods |
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 |
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 |
US9348694B1 (en) | 2013-10-09 | 2016-05-24 | 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 |
US9972393B1 (en) | 2014-07-03 | 2018-05-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Accelerating programming of a flash memory module |
US9584159B1 (en) | 2014-07-03 | 2017-02-28 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Interleaved encoding |
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)
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 |
US5473753A (en) * | 1992-10-30 | 1995-12-05 | Intel Corporation | Method of managing defects in flash disk memories |
US5448577A (en) * | 1992-10-30 | 1995-09-05 | Intel Corporation | Method for reliably storing non-data fields in a flash EEPROM memory array |
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 | 日本電気株式会社 | フラッシュメモリ用ファイルシステム |
-
1996
- 1996-11-25 US US08/756,304 patent/US5745418A/en not_active Expired - Lifetime
- 1996-11-26 WO PCT/US1996/018973 patent/WO1998024029A1/en active IP Right Grant
- 1996-11-26 DE DE69635962T patent/DE69635962T2/de not_active Expired - Lifetime
- 1996-11-26 JP JP52657998A patent/JP4005142B2/ja not_active Expired - Lifetime
- 1996-11-26 EP EP96943522A patent/EP0882264B1/en not_active Expired - Lifetime
-
1998
- 1998-04-27 US US09/067,449 patent/US5933368A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5745418A (en) | 1998-04-28 |
DE69635962D1 (de) | 2006-05-11 |
US5933368A (en) | 1999-08-03 |
EP0882264A4 (en) | 2002-09-04 |
WO1998024029A1 (en) | 1998-06-04 |
EP0882264B1 (en) | 2006-03-22 |
DE69635962T2 (de) | 2006-11-16 |
JP2002513484A (ja) | 2002-05-08 |
EP0882264A1 (en) | 1998-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4005142B2 (ja) | フラッシュメモリ大容量記憶システム | |
CN1223945C (zh) | 改进的闪速文件系统 | |
US6327639B1 (en) | Method and apparatus for storing location identification information within non-volatile memory devices | |
US5953737A (en) | Method and apparatus for performing erase operations transparent to a solid state storage system | |
US8171203B2 (en) | Faster write operations to nonvolatile memory using FSInfo sector manipulation | |
US7487303B2 (en) | Flash memory device and associated data merge method | |
US5956473A (en) | Method and system for managing a flash memory mass storage system | |
US5479638A (en) | Flash memory mass storage architecture incorporation wear leveling technique | |
US7191306B2 (en) | Flash memory, and flash memory access method and apparatus | |
EP2306321B1 (en) | Increasing memory performance in flash memory devices by performing simultaneous write operation to multiple devices | |
US5835935A (en) | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory | |
US6591330B2 (en) | System and method for flexible flash file | |
JP4611024B2 (ja) | ブロック内のページをグループ化する方法及び装置 | |
US7529879B2 (en) | Incremental merge methods and memory systems using the same | |
JP2007280428A (ja) | メモリ管理 | |
JP2005516264A (ja) | 不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置 | |
JPH11126488A (ja) | フラッシュメモリを複数使用した外部記憶装置のデータ記憶制御方法及び装置 | |
JP2003256289A (ja) | 一様なウェアレベルをフラッシュメモリデバイスで達成するためのシステムおよび方法 |
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 |