JP3641280B2 - フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 - Google Patents
フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 Download PDFInfo
- Publication number
- JP3641280B2 JP3641280B2 JP29382993A JP29382993A JP3641280B2 JP 3641280 B2 JP3641280 B2 JP 3641280B2 JP 29382993 A JP29382993 A JP 29382993A JP 29382993 A JP29382993 A JP 29382993A JP 3641280 B2 JP3641280 B2 JP 3641280B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- blocks
- comparison
- array
- 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
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/7211—Wear leveling
-
- 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/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
Description
【産業上の利用分野】
本発明は、コンピュータ・メモリ装置に関し、更に詳しくは、フラッシュ電気的消去可能プログラム可能読出し専用メモリ(フラッシュEEPROM)アレイの様々な部分で行なわれる消去・書込み(スイッチング)動作の回数を等しくする方法に関する。
【0002】
【従来の技術】
最近のコンピュータ・システムでは、長期メモリが幅広く使用されている。代表的には、このメモリは、1つまたは複数のハード・ディスクから成る。ハード・ディスクは、中心軸の回りを高速回転するように固定された1つまたは複数の平坦な円形ディスクを含んでいる電気機械式装置である。平坦なディスクのそれぞれは、何らかの磁気材料でコートされた表裏の面を有している。電気信号により駆動される機械アームは、ディスク上の適所に対しての書込みや読出しを行うよう、各ディスクの各面に磁気ヘッドを位置決めする。それら位置はセクタ上にあり、複数(たとえば、17個)のセクタで、ディスク片方面における1つの完全なトラックを成している。各セクタは、一定数のバイト(代表的には512バイト)のデータを記憶することができる。フォーマットにしたがって、ディスクの一方の面は600個以上のトラックを有している。今日のパーソナル・コンピュータにおいて使用されている代表的なディスク・ドライブは、40メガバイトのデータを記憶することができる。
【0003】
このようなハード・ディスク・ドライブは、非常に有用で、パーソナル・コンピュータの操作にほとんど欠かせない。しかし、このような電気機械式ドライブには欠点がある。このようなドライブは比較的重いので、コンピュータ、特にポータブル・コンピュータの重量をかなり増すことになる。また、サイズも比較的大きいので、コンピュータにおいてかなりの空間を必要とする。しかも、使用の際、かなりの電力を必要とし、ポータブル・コンピュータにおいてはかなりのバッテリ電力を消費する。さらに重要なことは、電気機械式ハード・ディスク・ドライブは衝撃に対し非常に敏感なことである。ポータブル・コンピュータを落下させた場合、そのハード・ドライブの機能が停止することもあり得、これによりデータが壊滅的に失われる可能性がある。
【0004】
最近、電気機械式ハード・ディスクとは異なる長期記憶の装置が、コンピュータにおいて使用できるようになってきた。その1つに、フラッシュEEPROMがある。フラッシュEEPROMメモリは、行・列のメモリ・セルに配列された極めて多数の浮遊ゲート電界効果形トランジスタを有しており、各セルをアクセスし、そのセルのメモリ・トランジスタを、2つのメモリ状態の一方にセットする回路も備えている。フラッシュ・メモリ・セルは、DRAMメモリとは異なって典型的なEPROMのように、電力を取り去っても情報を保持している。フラッシュEEPROMメモリは、長期メモリとして使用するのに適した数多くの特性を有している。たとえば、軽量で、ほんのわずかな空間しか必要なく、電気機械式ディスク・ドライブよりも消費電力が低い。さらに重要なことは、極めて丈夫なことである。典型的な電気機械式ハード・ディスク・ドライブであれば1回の落下でも破壊されてしまうであろうが、そのような落下を繰返しても、悪影響を受けることがない。
【0005】
しかし、フラッシュEEPROMにおける問題は、消去をしないと再プログラムできないという点にある。フラッシュEEPROMは、メモリに用いられている全トランジスタ(セル)のソース端子に高電圧を同時に与えることによって消去される。しかし、これらのソース端子はアレイにおいて金属バスにより相互に接続されているので、全アレイを一度に消去しなければならない。電気機械式ハード・ディスクは、ディスクの第1領域に情報を記憶し、その後、情報の変化時には、ディスクのその同じ領域を再書込みをするが、フラッシュ・メモリ・アレイの場合には、無効(invalid)情報すなわちダーティ(dirty)情報とともにアレイに残っている有効(valid)情報の全てが消去されてしまう。1つのエントリの再書込みの度に全情報が消去されるならば、消去された全ての有効情報も、更新の度に再書込みしなければならない。データ変更にともなってエントリを更新するのに、このようなプロセスを使用した場合には、電気機械式ハード・ディスクの代りにフラッシュ・メモリを用いているコンピュータ・システムの動作は、相当にスローになる。さらに、有効情報の再書込みを要することもあって、フラッシュEEPROMの消去プロセスは極めて遅く、代表的には1〜2秒かかる。このような消去時間が、高速で変化するデータに対してフラッシュEEPROMを使用することを妨げていると考えられる。
【0006】
電気機械式ハード・ディスクにより記憶される情報の場合のように高速で変更するデータのための長期記憶装置としてフラッシュEEPROMを使用する場合には、電気機械式ハード・ディスクで通常使用されているものではない、システムの動作を遅らせることのない、フラッシュ・アレイを消去および再書込みを行なう方法が必要とされている。
【0007】
フラッシュ・アレイを、チップ・レイアウトの際に、一緒に消去するセルのグループ(ブロック)に物理的に分離しておくことによって、フラッシュ・メモリの一度に消去する量を減少できることがわかっている。このやり方はある程度まで再プログラミングの苦労を減少できるが、ブロックを別々にフラッシュ消去できるようにするため、セルの各ブロックをシリコン上で物理的に分離しなければならないので、限られた方法でしか使用することができない。なお、必要とされる物理的分離のために、フラッシュ・メモリのそのようなブロックを保持するのに要する領域が増加してしまう。
【0008】
たとえば、フラッシュ・メモリを、分離されたブロックに分割した新しい装置は、本願の出願人に譲渡され、同日出願された、発明者エス・ウェルスによる米国特許願「半導体メモリ・ディスクに関する方法および回路」に示されている。この装置において、代表的な長期記憶アレイは、一連のブロックに配列されたフラッシュ・メモリから成っている。実施例では、アレイは多くのシリコン・チップに分割され、それぞれのチップは16個のサブブロックに再分されている。各サブブロックは、別のシリコン・チップ上のサブブロックと物理的に対にされ、奇数のデータ・バイトが一方のチップのサブブロックに記憶され、偶数のデータ・バイトが他方のチップのサブブロックに記憶されるよう、アレイの論理ブロックを形成している。フラッシュ・メモリの各論理ブロックは、他の全ての同様の論理ブロックとは個別に消去できる。しかし、アレイの各論理ブロックは、電気機械式ハード・ディスク・ドライブのトラックに通常に記憶される256セクタの情報を保持するのに十分な128キロバイトのデータを保持する。したがって、1チップ当り16個の各々消去可能なサブブロックを備えた30チップのフラッシュ・アレイは、30メガバイトの電気機械式ハード・ディスクとほぼ同じ量のデータを保持する。240個の各々消去可能な部分(論理ブロック)にデータを分割したとしても、1ブロックの消去は、非常に沢山の情報を消去することになるので、その沢山の情報の全データの消去後に、セクタ毎の再書込みで正しいデータに置き換えることは実際に不可能である。
【0009】
このような問題の解決のために、データは、フラッシュ・メモリ・アレイのまだ使用可能なスペースが残っているブロックのいずれかに書込まれる。このようにして、データは、ブロック上の物理アドレスまたはデータのセクタ・アドレスに関係なく、アレイの空き位置に書込まれる。たとえば、セクタ5に書込まれるべきデータの一部は、ブロックの次の使用可能な空間(スペース)に、それがどこであろうと、書込まれ、ルックアップ・テーブル(参照用テーブル)には、論理アドレスの、ブロック上の物理位置(セクタ5)を記録される。アレイのこの構成により、第1ブロックにセクタごとに書込めるようになり、第2ブロックにも同様の順次操作で書込め、以下同じように書込めるようになる。セクタのデータに変更がありセクタを再書込みする必要が生じると、データは新しい物理位置に書込まれ、ルックアップ・テーブルのデータが、論理セクタ番号に対しての新しい物理位置を記録するよう変更され、データが書込まれていた最初の物理位置はダーティ(無効)とマークされ、その物理位置を読出そうとするとエラー信号が発生される。ある期間後、ブロックの相当数が一杯になると、特にダーティなブロックからその中の有効な情報を他のブロックへと移し、有効な情報が読出された後のブロック全体を消去することにより、空間を解放することが望まれる。これは、「ブロックのクリーン・アップ」と呼ばれ、消去されたブロック中でそれまでにダーティとマークされていたセクタの全数に等しい数のセクタが開放されるという効果がある。
【0010】
この構成での特別な利点は、ブロックのを消去を、バックグラウンドで行えることである。すなわち、各無効エントリは、再書込みをする時には消去されず、アレイの機能が読出しおよび書込みのために占有されていない時に、消去されるようにすることができることである。このようにして、外部のホストは、フラッシュ・アレイに書込んだりまたフラッシュ・アレイからの情報を受け取るに際して、たとえ消去に1〜2秒要しても、消去が行なわれていることをほとんど認識しなくてすむ。
【0011】
他の利点は、フラッシュ・メモリの各ブロックが、電気機械式ハード・ディスクにより記憶される一定の大きさのセクタではなく、物理領域に任意の大きさのデータのセクタを記憶できることである。これにより、一定の大きさのセクタを備えたハードおよびフロッピ・ディスクに特有な、スペース(空間)のロスをほとんどなくすことができる。なぜならば、フラッシュ・メモリのブロックに置かれるにデータのセクタそれぞれが、データを記憶するのに要する空間と同じ長さを必要とするだけだからである。したがって、セクタは、直前のセクタの最後の有効バイトに、セクタ相互間のブランクのスペース(平均では1データ・バイト)を挟んで接するよう、フラッシュ・メモリのブロックに配置できる。データが圧縮されると、512バイト・セクタの非圧縮データを記憶するのに要する空間よりもかなり少ない空間に記憶できる。一定の物理的寸法のセクタの最後に通常残される空間は、データが圧縮される場合には排除できる。上記のような構成の他の特性とこのような無駄な記憶空間の排除とにより、圧縮率1.5のデータを記憶するフラッシュ・メモリは、所与の大きさの代表的な電気機械式ハード・ディスクにより記憶されるデータと同じ量のデータを約四分の三の物理的記憶空間で記憶することができる。
【0012】
【発明が解決しようとする課題】
フラッシュ・メモリにおける問題点には、使用できる寿命が制限されていることがある。これは、消去・書込み(スイッチング)動作を繰り返すと、アレイの浮遊ゲート・トランジスタのスイッチング動作に要する時間が長くなるためと思われる。そのような繰り返しの回数はかなり大きな数ではある。約10,000回の消去・書込み動作の後に、消去・書込み動作が遅くなり始めたとして、消去・書込み動作の長期化がシステム・オペレーションに何らかの影響を与えるようになるのは、約100,000回の消去・書込み動作を行った後であると見積られてきた。たとえそうでも、データを記憶するセルを選択するための代表的なプロセスでは、ブロック上のあるトランジスタ群およびあるトランジスタのブロック群は、他のトランジスタよりも一層頻繁に消去・書込み動作をさせられる傾向がある。アプリケーション・プログラムが記憶されているブロックのようなフラッシュ・メモリ・アレイのある領域は、めったに再書込みを受けないということがわかっている。一方、アプリケーション・プログラムにより特定の演算のためデータが蓄積されるブロックは、非常に頻繁に変更され従って再書込みされなければならない。さらに、すぐに変更されるデータを記憶するブロックは他のブロックよりも多くのダーティ・セクタを有しているので、これらブロックはより頻繁にクリーン・アップされることになる。一旦、ブロックは、動作中にクリーン・アップされると、あまり変更されないデータを受けよりも、頻繁に変更されるデータを受け取ることの方がはるかに多いであろう。したがって、迅速に変更されるデータを最初に含んでいるブロックは、データ・アーキテクチャの特性により、自動的に、頻繁に変更されるデータを更に受けることになる。データ変更は、そのようなブロックのクリーン・アップを要求することになる。したがって、アレイ全体における消去・書込みの回数を等しくするために何も行なわなかった場合、特定のブロックが、他のブロックよりもかなり速く故障することになる。
【0013】
このため、フラッシュ・メモリの各ブロックの消去・書込みのサイクルの回数を制御する手段が大変に要求されている。そのような手段は、フラッシュ・メモリ・アレイのある部分が早期に故障することにつながってしまう統計学的むらを修正するのに、大いに効果があるであろう。本発明の目的は、フラッシュ・メモリ・アレイの寿命を大幅に延長する方法を提供することである。本発明の他の目的は、フラッシュ・メモリ・アレイの様々な部分での消去・書込みが等しく生じるようにする方法を提供することである。
【0014】
【課題を解決するための手段】
上記の目的は、本発明による、メモリ・セル・ブロックに分割されており、ブロック毎に消去可能であるフラッシュEEPROMアレイのクリーン・アップにおいて、全ての有効データをアレイの他のブロックに書込み、それから、そのブロック全体を消去して、フラッシュEEPROMアレイクリーン・アップする方法において、各ブロックに含まれる無効セクタの数と、各ブロックが受けた消去・書込み動作の数との比較に基いて、クリーン・アップするブロックを決定する過程を有することを特徴とするフラッシュEEPROMアレイをクリーン・アップする方法により、解決される。
【0015】
【実施例】
以下の詳細な説明において、コンピュータ・メモリにおけるデータ・ビットの操作をアルゴリズムおよび記号表示によって示している部分がある。これらのアルゴリズム記述や表示は、当業者に技術の内容を最も有効的に伝えるため、データ処理の分野における当業者が用いている方法である。ここでは、また一般にも、アルゴリズムは、目標結果に至る過程のシーケンスであると考えられる。これらの過程は物理量の物理操作を要する過程である。一般に、必ずしも必要ではないが、これらの量は、記憶、転送、結合、比較または操作可能な電気または磁気信号の形態である。これらの信号を、ビット、数値、エレメント、記号、文字、語句、数などで呼称することが、主に共通使用のため、時に便利であることがわかっている。しかし、これらおよび同様の語句は、いずれも、適切な物理量に関連しかつこれら量に用いられる便利な単なる名称であることに留意されるべきである。
【0016】
さらに、実行される操作は、一般に、ヒューマン・オペレータにより実行されるメンタル・オペレーションに関連した、たとえば、加算または比較のような言葉で呼ばれることがある。本発明の一部を成しているここで述べられているオペレーションのいずれにおいても、大抵の場合、ヒューマン・オペレータのこのような能力は必要でもまたは要求されてもいない。オペレーションはマシン・オペレーションである。いずれの場合も、コンピュータまたはその一部を操作する方法オペレーションと計算方法自体との間の相違を心に留めておかなければならない。本発明は、電気または他の(たとえば、機械的、化学的)物理信号を、他の目標物理信号を発生するよう処理する際のコンピュータを操作する装置および方法に関する。
【0017】
図1は、本発明が実施されるフラッシュEEPROMメモリ・アレイ10をブロックで示す。アレイ10は、フラッシュEEPROMメモリの複数のブロックB0〜B15を含む。各ブロックは、行および列に配列された浮遊ゲート電界効果形トランジスタ・メモリ・セル(図示せず)を含んでいる。これらのメモリ・セルは、メモリの特定のブロックおよびそのブロックの特定の行および列を選択するための回路を有しているので、特定の位置におけるメモリ・セルを読出したりまたは書込みを行なうことができる。トランジスタ・メモリ・アレイおよびそれに関連したアクセス回路の詳細は、当業者には周知であるので、ここでは省略する。
【0018】
多くの出版物に示されているように、フラッシュ・メモリは、基本的にはEPROMアレイであり、それの全メモリ・トランジスタのソース端子に同時に高電圧値を与えることにより全アレイを消去できる機能を備えたものである。このような消去により、各セルは1の状態になる。その状態の時に、ゼロまたは1をセルに書込むことができる。1はセルを同じ1の状態のままにし、一方、ゼロはセルを1状態からゼロ状態にスイッチングをさせる。セルは、消去に必要とされる高い電圧値(代表的には、12ボルト)をソース端子に供給されなければ、ゼロ状態から1の状態へとこれと逆のスイッチングをすることはない。1つのブロックにおけるメモリ・トランジスタの全ソース端子は相互に結合されているので、ゼロ状態のセルは、アレイの全ブロックが再び消去されるまで、その状態のままである。
【0019】
図1に示されたアレイ10において、メモリのブロックB0〜B15は、アレイ10の第1チップ11に配置されている。別の(たとえば30個の)シリコン・チップ11は、アレイ10の他のブロックをそれぞれ保持し、実施例では合計240のブロックを与える。実施例では、前述したように、各ブロックは、隣接するチップに位置する一対のサブブロックから構成されている。サブブロックは、入力と出力を有し、奇数のデータ・バイトを一方のサブブロックに記憶させ且つ偶数のデータ・バイトを他方のサブブロックに記憶させるための選択導体をさらに有している。このことから、ブロックは、一対のサブブロックを含んでいると考えることができる。
【0020】
ホストが、アレイに記憶すべきデータ(たとえば、アプリケーション・プログラム)について、完全に消去されたアレイのいずれかのブロックに対して、その書込みを開始する際、記憶すべきデータは、ブロックに、それがデータで一杯になるまで、セクタからセクタへと順次に書込まれる。そして、書込みは、空きの空間を有する次のブロックに進む。書込みが完了した後は、いずれの時点においても、データが記憶されたブロックおよびセクタを問合せることにより、情報をアレイ10から読出すことができる。
【0021】
上記の構成において、データは、セクタの寸法が任意で良い(後述する)ことを除き、従来技術の電気機械式ハード・ディスクにデータを記憶するのに使用される物理セクタと同様のセクタに記憶される。アレイのセクタに記憶されたデータが変更されて、そのセクタに既に書込まれた情報を変更すべき時には、新しい変更後の情報は、アレイ10の空き空間を有するブロックのいずれかに位置する新しいセクタに書込まれ、古いセクタは無効(ダーティ、Dirty)とマークされる。古い情報に上書きするのではなく、このように行うのは、古い情報を含むブロックの全てが消去されて初めて、古い情報を再書込みできるからである。有効なデータを破壊することなく全ブロックを消去するには、有効(Valid)なデータの全てをアレイ10の他のブロックにコピーし、元のブロックを消去し、有効なデータを元のブロックに再書込みし、その後、元のブロックのダーティ・データが書込まれていたところに新しいデータを書込まなければならなかった。しかし、これは非常に時間がかかる作業であるので、各エントリの再書込みのためのこのようなプロセスを用いると、コンピュータの動作は遅くなり、動作停止といえるほどになる。したがって、これは実用的ではない。その代わりに、新しい情報を、別の空いているブロック(たとえば、ブロックB7)の新しい位置に書込み、古い位置は、エントリのセクタ番号とともに無効を示すゼロを書込むことにより、ダーティとマークされる。アレイのブロックを消去することなく、ゼロの値をいずれのメモリ・セルにも書込めることは認識されよう。
【0022】
この構成では、データが置き換えられるので、データがどこに記憶されているかを示すのに使用されるセクタ番号には、物理セクタ番号ではなく論理セクタ番号が用いられる。この点は、電気機械式ハード・ディスクでデータを配置するのに物理セクタ番号が使用されているのとは対照的である。論理セクタ番号を使用できるようにするため、アレイ10とともに用いられるランダム・アクセス・メモリ16に、物理セクタ番号と対比して論理セクタ番号を表にしたルックアップ・テーブル17が記憶されている。このテーブル17は、特定の論理セクタが存在する、アレイ10中の物理的位置を、決定するのに使用される。
【0023】
データが置き換えられる、このような構成では、しばらくすると、アレイの各ブロックは、ダーティとマークされて記憶には使用できない多くのエントリを、有することになる。その結果、アレイ10がデータで一杯になると、新しい情報を記憶するための空間を作るため、ブロックからダーティ情報をクリアしなけらばならなくなる。本発明の一実施例では、このクリアは、ダーティな空間の合計量が、ダーティ空間と空き空間の全合計の80%になった時に行なわれる。典型的には、アレイ10の最もダーティなブロックが消去べきものとして選択される。これにより、消去対象のブロックからアレイの別のブロックに移動する有効なデータの量を最少にすることができる。有効な情報が別のブロックに書込まれ、新しいアドレスがルックアップ・テーブル17に記録されると、情報を読出し終えたブロックは消去される。その後、消去されたブロックは、全くきれいなブロックとして動作に復帰する。このクリーン・アップ操作を行えるようにしておくために、ブロックのいくつかを、クリーン・アップの必要時のために確保しておかなければならない。本発明を用いた装置の一例では、使用可能な240のブロックのうちの14のブロックを使用して、書込み動作の継続のため、および、クリーン・アップ動作のために十分な空間を提供する。
【0024】
図2には、前述した利点を得るため個々のブロックで使用される論理構成が示されている。図2は、アレイ10の各ブロックにデータを記憶する方法を理解するのに有効な理想化した図である。図2では、代表的なブロックを方形で示している。この方形領域は、各ブロックにより与えられる128Kバイトの記憶用に配列された複数のトランジスタ・ディバイスを含んでいる。前述したように、個々のブロックの領域は、実際には、2つの物理チップそれぞれのサブブロックに分けられ、一方のチップのサブブロックは奇数のデータ・バイトを保持し、他方のチップのサブブロックは偶数のデータ・バイトを保持する。トランジスタ・メモリ・ディバイス、ブロックを操作する線、行および列の選択線は、図示されていないが、フラッシュ・メモリを設計する当業者には周知である。
【0025】
図2に示すように、データは、上と下から開始するブロック20に記憶される(ブロックの一番下の狭い領域21は、ブロック構造データのために確保される)。ブロック20の上部の、セクタ変換テーブル(ヘッダ)と呼ばれる識別フィールドには、データのアドレスとしてオペレーティング・システムにより用いられる論理セクタ番号が記憶される。たとえば、第1セクタ番号58112は、上部の第1エントリのためのヘッダに記憶される。セクタ番号に続いて、様々な属性ビットおよびポインタ値が記憶される。一実施例に含まれている属性には、エントリの妥当性(V)の表示、校正番号(Rev#)、データが圧縮されているかどうかの表示、エントリがデータを含んでいる(WD)か否(WOD)かを示すビットがある。エントリの妥当性(V)の表示は、1ならば有効を意味し、ゼロならば無効を意味する少なくとも1つのビットであり、このビットは、正しい妥当性を確実に記憶しておくめに二重にしておくことができる。校正番号(Rev#)は4ビットの番号である。エントリがデータを含んでいる(WD)か否(WOD)かを示すビットが使用されているので、セクタをデータなしに作ることができる。
【0026】
ポインタ値(ブロックへのオフセット)は、ブロック20のデータ領域において論理セクタ(例えば58112)のデータが記憶されている物理アドレスを示す。図2の左側の矢印は、論理セクタ(例えば58112)のデータの第1ビットが記憶されている物理位置を示している。記憶されるべきデータは、その量が書込み動作の時点では知れているので、ブロック20の実施例において、データは、それまでに記憶されたデータの次に書込むことにより記憶される。ブロック20の第1セクタである論理セクタ58112の場合、データは、セクタ番号58112に関するポインタとして記憶されたアドレスの最初から、データ領域の始まり(最下部)まで書込まれる。最下部でデータが始まる位置は、ブロックの上部における第1ヘッダ・エントリの前に記憶された開始ポインタ値によりマークされる。ブロックにおけるこれらの2つの位置は、ブロック20の左上の隅から左下の隅まで延びている矢印により結合されて示されている。
【0027】
論理セクタ58112に書込まれるデータの量は、固定されておらず、変更できる。しかし、コンピュータ・システムと記憶装置との間の代表的なインタフェイスでは、データは、512バイトのセクタに記憶するよう割当てられる。図2には、第2論理セクタ5と、ブロック20においてその論理セクタ5のデータの第1ビットを記憶する物理位置に向けられたポインタも模式的に示されている。セクタ5のデータは、その最後の行がセクタ58112のデータの第1行のすぐ上の行に位置するよう、書き込み済みの最新のデータ・セクタ(セクタ58112)のすぐ上で開始しして下方へ延びるデータ領域に記憶される。新しいセクタのデータは、最後に書込まれたセクタのデータのすぐ上のすべての行に書込まれるので、このブロック記憶構成において無駄になるデータ空間の量はほんのわずかである(平均1バイト)。記憶のために供給されるデータが圧縮されていれば、固定のセクタ・サイズの記憶装置において、通常、空のままにされる記憶空間の量は無視できる。これは、固定のセクタ・サイズを用いている外見上一杯になった電気機械式ハード・ディスクに代表される大量の未使用空間とは著しく対照的である。
【0028】
前述したように、セクタ番号の物理位置は、チップ番号、ブロック、データ検索に関する他情報(たとえば、行および列アドレス)とともに、ルックアップ・テーブル17(これは、アレイ10の他の構成要素を保持している回路板のスタティック・ランダム・アクセス・メモリに保持されているのが望ましい)に記憶されている。ブロック20のいずれかのセクタに記憶されたデータは、次のようにして検索できる。すなわち、ルックアップ・テーブル17からセクタ番号の物理アドレスを決定し、そのアドレスを用いてセクタ番号が記憶されたブロック20の物理位置を見つけ、そして、データの開始位置のポインタと、検索されるセクタ番号のすぐ上に記憶されているセクタ番号を有するセクタの開始位置のポインタと(これら2つの値は、データを探しているセクタの開始および終了位置を決定する。)を、検索することにより、検索できる。
【0029】
フラッシュ・メモリ・アレイにより使用される、データの再書き込みを行なう一般的でない装置では、メモリ割当てシステムが、書込みおよび再書込みされるデータ用に使用可能であるよう、メモリを継続的に新しくするすなわち新たに消去する必要がある。前述したように、これには、無効データを保持しているブロックをクリーン・アップして、そのダーティ・セクタを解放するため、ブロックのいくつかを常に利用できるようにしておくことが必要である。
【0030】
いずれのメモリ・アレイの操作においても生じる問題点は、そのメモリの読出し、書込みおよび消去しようとする時、時々失敗があることである。フラッシュ・メモリにおいて非常に重大な問題は、長期間使用した後、メモリ・トランジスタが、規定された期間内での消去・書込み能力を失うことである。この能力損耗は、実際には、信号がメモリ・セルから読出されて最終値に整定するまでに必要な時間が延びることが分った。データをセルに正しく記憶し、セルから読出すことはできるが、それに要する時間が長くなり、回路に要する規定の範囲内にはない。フラッシュ・メモリがこの症状を呈し始めると、整定時間が長くなり始め、結局、メモリは有用な範囲を超えてしまう。図4は、行なわれた消去・書込み動作の回数に対する、出力信号の整定時間をとった、フラッシュ・メモリ・アレイの代表的な使用特性を示している。図示のように、消去・書込み動作が約10,000回を超えると、フラッシュ・メモリのブロックの整定時間は長くなり始める。この10,000回という消去・書込み動作の回数が、このようなアレイにおける代表的な寿命として選択されている。
【0031】
前述したように、アレイのダーティ・セクタにより占められている記憶空間を解放する必要がある場合に、最もダーティなブロックをクリーン・アップするようにするものとすると、あるブロックの使用が、アレイの他のブロックよりも多くなることになろう。そうなるのは、あるブロックが、他のブロックに記憶されたデータよりも頻繁に変更されるデータを、最初に受け取るからである。たとえば、アプリケーション・プログラムは、典型的には使用中には変更されないが、アプリケーション・プログラムにより使用されるデータはしばしば変更される。頻繁に変更されるデータを受け取るブロックは、アレイの他のブロックよりも速くクリーン・アップされる。一旦、クリーン・アップされると、これらブロックは、おそらく、別のすぐに変更するデータを受け取ることになる。なぜならば、スタティック・データを含んでいるアプリケーション・プログラムは記憶済みであり、頻繁に変更されるデータは、通常、長期記憶装置に書込まれるタイプのデータであるからである。結局、これらブロックは、さらにクリーン・アップを受けることになろう。
【0032】
その結果は、あるブロックは、他のブロックよりもかなり頻繁に使用されることになり、他のブロックよりかなり頻繁にクリーン・アップされる、ということになろう。比較的短い期間では、頻繁に変更されるデータを記憶する、僅かなブロックが、消去・書込み動作の通常の寿命に至るだけで、多くのブロックはそれ程使用されない。わずかな数のブロックが著しく使用されて故障しても、アレイ全体の故障となるので、アレイを機能させるためには、多くのブロックが常にクリーン・アップの対象とするようにしておく必要がある。
【0033】
本発明の動作を可能にするため、ブロックが消去された回数のカウントが、他のデータから離れている、ブロック中の小さなブロック状態部分21に、保持される。この部分21は、図2おいて、ブロック20の下の方に示されている。
【0034】
フラッシュ・メモリ・アレイにおける消去・書込み動作の回数を均等化するため、本発明のプロセスは使用される。代表的には、必要的ではないが、このプロセスは、制御回路14のマイクロプロセッサにより実行されるソフトウェア・プロセスであり、その制御回路14は、そのソフトウェアとともに読出し専用メモリに記憶されている命令を使用する。図3は、フラッシュ・メモリ・アレイのブロック間で消去・書込み動作の回数を均等化するために実行される多くのオペレーションを示す図である。この図は、状態図の形式で示されているが、実際には操作のフローチャートに等しい。オペレーションは、読出し/書込み/消去の制御回路14の読出し専用メモリに記憶されたソフトウェアにより制御される。本発明の説明のため、読出し/書込みの制御回路14は、上記マイクロプロセッサおよび読出し専用メモリの他に、コマンド状態マシンおよび書込み状態マシンを含んでいると考えられる。これらのマシンは、読出し、書込み、消去のためのアレイ・チップのインタフェイスを形成する。この回路は、本願の出願人に譲渡され、1991年2月11日に出願された、発明者フランドリッチ他による米国特許願第07/655,643号「コマンド状態マシン」と、本願の出願人に譲渡され、1991年2月11日に出願された、発明者キネット他による米国特許願第07/654,374号「不揮発性半導体メモリのプログラムおよび消去をする回路および方法」とに述べられている。一実施例では、コマンド状態マシンと書込み状態マシンは、物理的には、各チップ11の一部である。
【0035】
オペレーションは第1のステップ30から始まる。第1のステップ30では、クリーン・アップ操作が必要かどうかの決定のための評価が行なわれる。クリーン・アップが必要かどうかは、情報を書込みまたは再書込みするために利用できる空間がブロックにあるかどうかの問題に基く。一実施例では、フラッシュ・メモリの全アレイ(使用中の有効セクタをまない)の80%以上がダーティである場合、使用できる空間は十分でないと考えられ、クリーン・アップ操作を行なう必要がある。この決定は、アレイ10に関連したスタティックRAM16における、小規模データ・ベース12に空きスペース量を、小規模データ・ベース13にダーティ空間の量を保持することによって行なわれる。データ・ベース13は各ブロックにおけるダーティ空間の量と全ダーティ空間をリストし、一方、第2データ・ベース12は各ブロックにおける空き空間の量とアレイにおける全空き空間をリストする。セクタがダーティであるとマークされる度に、そのセクタのサイズが、全ダーティ空間に加えられる。クリーンな未使用(空き)セクタが、書込みのために割当てられる度に、そのサイズが空き空間の全量から減算される。ブロックが不良であるとマークされる度に、そのブロックから全ユーザ・データが他にコピーされる。したがって、不良ブロックにおける空き空間の量は、空き空間の総量から減算され、不良ブロックにおけるダーティ空間の量は、ダーティ空間の量から減算される。データ・ベース12,13は、読出し/書込み/消去制御回路14のプロセッサにより、その読出し専用メモリに記憶されたソフトウェアを用いて保持される。データ・ベースをルーチンとして保持することにより、ダーティと空きの合計の空間に対するダーティ空間の比率は、ダーティである残りのアレイ空間のパーセンテージの有効な尺度として常に使用できる。十分な空き空間がある場合、クリーン・アップは必要とされない。しかし、十分な空き空間がない場合には、クリーン・アップが必要になる。
【0036】
クリーン・アップが必要であるとわかると、プログラムは、クリーン・アップに最も適したブロックを選択するステップ31に移動する。決定は、一組の基準に基いて行なわれる。
最初の基準は、どのブロックが最もダーティであるかということである。最もダーティなブロックの決定は、データ・ベース13に保持されている各ブロックに関するダーティ空間の量(すなわちダーティ・セクタの数)を、データ・ベース13に保持されている他の各ブロックのダーティ空間(すなわちダーティ・セクタの数)に比較することによって行なわれる。
2番目の基準は、どのブロックが最も少ない回数のクリーン・アップ操作(サイクル)を経過したかということである。どのブロックが最も少ない回数のクリーン・アップ操作を経過したかの決定は、各ブロックの下に示された固定ブロック構造領域に記憶された値を考察することにより行なわれる。示されているように、この領域は、ブロックが何回クリーン・アップ操作を経過したかを実質的に示す値(消去された回数のカウント(段落0033参照))を含んでいる。この評価には他の要因も含められるだろうが、本発明の目的に関しては意味がないので本明細書での検討は省略する。
【0037】
上記の最初の基準に関して更に説明をすると、各ブロックにおいて、ダーティ・セクタの数を調査することにより決定された値は、倍率(一実施例では80%)の重みを付けられる。このように、各ブロックについて、それに含まれるダーティ・セクタ(すなわち無効セクタ)の数を全ての他のブロックに含まれる無効セクタの数と比較しその比較により得られる値に重みがつけられる。
一方、上記の2番目の基準に関して更に説明をすると、クリーン・アップ操作の数は、(最も多くのサイクルを経験したブロックと、当該のブロックとに関するクリーン・アップ操作回数の差を見いだすことにより)他の倍率(同実施例では20%)の重みを付けられる。このように、各ブロックについて、それの受けた(クリーンアップ回数を実質的に示す)消去回数と、最も多くの消去を受けたブロックの消去回数との差を求めそれにより得られる値に重みがつけられる。
そして、これらの2つの結果は合計され、最も高い値を持つブロックがクリーン・アップのため選択される。クリーン・アップされるブロックの選択には、最もダーティなブロックの値が圧倒的な影響を持つが、2つのブロックがほぼ等しくダーティな場合には、最も少なく消去・書込みのサイクルを経験したブロックが選択される。このことは、少ない消去・書込み動作のブロックをクリーン・アップのために選択する効果がある。これは、最も頻繁に変更されると思われるデータが、クリーン・アップ後に書込まれるであろうブロックを選択するという最終的効果を有している。全体的な効果は、ブロックにおける消去・書込み動作が均等化され始めるということである。
【0038】
クリーン・アップに適したブロックが選択されると、プロセスは、他のブロックにおける使用し得る空きセクタ空間を見つけるステップ32に移動する。有効なセクタを記憶する空間が発見されると、プロセスは、ステップ33に移り、クリーン・アップ対象のブロックのセクタから有効なデータを使用可能な空間に書込む。図3は、使用可能な空間に有効なデータを書込む、20回繰り返されるプロセスを示している。これが生じるのは、現在使用されている本発明の一実施例においては、ホストにより要求されたオペレーションを遂行できるよう、クリーン・アップの種々のステップが割り込み可能であることが必要とされるからである。
【0039】
したがって、プロセスの様々なステップは論理部分に分割され、それぞれの部分は、500マイクロ秒で行なわれる。このように、図示されたプログラムは、プロセスの各論理ブロックの間で、ホストのオペレーションにより割り込み可能である。クリーン・アップ操作の(たとえば、他のブロックの使用可能なセクタ空間への有効なセクタの書込みのような)長い部分は、全オペレーションが終わるまで、各500マイクロ秒が割込まれる。
【0040】
クリーン・アップ対象のブロックのセクタにおける有効なデータを他のブロックのセクタへの書込むことが完了すると、プログラムは、アレイが保有する様々なデータ・ベースを更新するステップ34に移動する。これには、次が含まれている。すなわち、各ブロックの上部にあって、書込み操作により影響されて古いヘッダが無効にされているセクタ変換テーブル(ヘッダ)を更新すること、フラッシュ・メモリに関連し、論理セクタをメモリのいずれかに配置させる、SRAM中のルックアップ・テーブル17を、新しい物理アドレスで更新すること、ダーティおよび空き空間の量をリストする、SRAMに保持されたデータ・ベース12,13を更新すること、が含まれている。
【0041】
データ・ベースが更新された後、有効なデータを含んでいるセクタの書込みが継続され、クリーン・アップされるブロックにおける全ての有効なセクタが他のブロックに移動し終わるまでループされる。ヘッダ部分にクリーン・セクタを含まないブロックにより示されるようにこれが完了すると、プログラムはステップ35に移動する。ステップ35では、ブロックの消去プロセスが開始される。消去プロセスは典型的に1〜2秒で行なわれるので、消去のための待機を示している次のステップは、一実施例ではその期間中各500マイクロ秒で消去プロセスが割り込まれ得ることを示している。
【0042】
消去操作が行なわれたら、プログラムはステップ37に移動する。このステップ37において、データ・ベースが再び更新される。これらのデータ・ベースは、クリーン・アップされたブロックが経過したスイッチング動作のカウント(サイクル・カウント)、メモリにおける空き空間およびダーティ空間の量、本発明には関係ない他のデータを含んでいる。
【0043】
データ・ベースが更新された後、プログラムは、クリーン・アップが必要かどうかの評価を行う最初のステップ30に戻る。ダーティ・データに占有された記憶域を解放するためクリーン・アップがなお必要ならば、全プロセスが繰り返される。これは、クリーン・アップが必要とされなくなるまで継続される。
クリーン・アップがもう必要でなくなると、プログラムはステップ38に移動する。ステップ38において、消去・書込み動作の均等化をする(「消耗レベリング(wear leveling)」と呼ばれる)必要があるかどうかの決定が行なわれる。この消耗レベリングのかなりの部分は、プロセスの主要部分でクリーン・アップに最適なブロックを選択するステップにおいて、既に行なわれていることは明らかであろう。しかし、そうならない態様でフラッシュ・メモリのプロセッサが動作している時、アレイの様々なブロックにおける消去・書込み動作の総数を近づけるよう、上記のプロセスを用いることが有効であることがわかった。
この目的のため、各ブロックが行なった消去・書込み動作の数を比較することにより評価が行なわれ、アレイの最も多くサイクルされたブロックより500回少なくクリーン・アップされたブロックがあるかどうかを決定する。このようなブロックが生じていない場合、プログラムはそのプロセスから出る。又、このようなブロックがある場合には、消耗レベリング・クリーン・アップ操作が開始される。このように、利用できる空きをつくるためのクリーン・アップの必要性はないが、クリーン・アップ操作が可能である場合に、受けた消去回数に500以上の差があるブロックがあると、消耗レベリング・クリーン・アップ操作が開始される。
【0044】
この時点で消耗レベリング・クリーン・アップを開始するのは、クリーン・アップされたブロックが、頻繁な変更を受け易い新しいデータを受けるであろうと、言う点にある。したがって、プログラムは、クリーン・アップに最適なブロックであるかどうかの評価が消耗レベリングの基準に基いて行なわれるステップ39に進む。ダーティ・セクタや、行なわれた消去・書込み動作の数など同じファクタについての考察がなされる。しかし、各値に与えられる重みは、消去・書込み動作の数に対してより高い重みが与えられるように変えられる。たとえば、ある実施例では、ダーティ・セクタの数には20%の重みが付けられ、一方、(最も多くサイクルされるブロックのクリーン・アップ操作と、当該ブロックのクリーン・アップ操作と間における差を見いだすことにより測定される)消去・書込みの数には80%の重みが付けられる。これらの数は合計され、最高値のブロックがクリーン・アップのために選択される。消去・書込みの数が、クリーン・アップ用のブロックの選択において、圧倒的な影響力を持つことがわかるであろう。消去・書込みの数が少ない程、そのブロックが選択される可能性は高くなる。しかし、同数の消去・書込み回数の2つのブロックがあるとすると、最もダーティなブロックが、最高合計値を有しかつ選択される。
したがって、消耗レベリング・クリーン・アップの一般的な効果は、これまでにクリーン・アップされた回数が最も少ないブロックをクリーン・アップすることである。適切なブロックが消耗レベリング・クリーン・アップ操作のために選択されると、プログラムは、クリーン・アップを開始するステップ32に移動する。その後は、前述したようにクリーン・アップのため同様のステップをたどる。
【0045】
本発明について、実施例に基づいて説明したが、本発明の思想から離れることなく様々に改変できることは当業者には明白であろう。
【0046】
【発明の効果】
本発明のプロセスを用いることにより、ブロック間での使用量が均等化されると同時に、継続的に使用できるメモリのブロックが提供される。これにより、メモリ・アレイの寿命を延ばす効果がもたらされ、通常の動作では寿命は約28年と算定される。これは代表的なコンピュータ・コンポーネントをはるかに超える寿命である。
【図面の簡単な説明】
【図1】 本発明が用いられるフラッシュ・メモリ・アレイの概要を示したブロック図である。
【図2】 図1に示したようなフラッシュ・メモリ・アレイの1つのブロックにおける情報の記憶パターンを示したブロック図である。
【図3】 フラッシュ・メモリ・アレイにおける消去・書込み動作を均等化する、本発明にしたがった方法の一部を示したフローチャートである。
【図4】 フラッシュ・メモリ・アレイに関する損耗特性を示したグラフである。
【符号の説明】
10 フラッシュEEPROMメモリ・アレイ
14 読出し/書込み/消去制御回路
16 ランダム・アクセス・メモリ
17 ルックアップ・テーブル
20 ブロック
Claims (6)
- メモリ・セル・ブロックに分割されたフラッシュEEPROMアレイのクリーン・アップにあって、ブロックには有効データおよび無効データを含むセクタとしてデータが格納され、ブロック毎に消去可能であって、当該ブロック中の全ての有効データがアレイの他のブロックに書き込まれた後、当該ブロック全体が消去され、
各ブロックに対する第1の比較・重み付け動作によって、すなわち、各ブロックについて、それに含まれる無効セクタの数を全ての他のブロックに含まれる無効セクタの数と比較しその比較により得られる値に重みをつけて第1の値とする動作によって、各ブロックについて第1の値を決定し、
各ブロックに対する第2の比較・重み付け動作によって、すなわち、各ブロックについて、それの受けた消去回数と、最も多くの消去を受けたブロックの消去回数との差を求めそれにより得られる値に重みをつけて第2の値とする動作によって、各ブロックについて第2の値を決定し、
各ブロックについて第1の値および第2の値を合計してクリーン・アップすべきブロックを決定する
ことを特徴とする、クリーン・アップすべきブロックを決定する方法。 - 請求項1記載の方法において、
前記第1の比較・重み付け動作において与えられる第1の重みと、前記第2の比較・重み付け動作において与えられる第2の重みとの選定は、既に受けた消去回数がより少ない方のブロックがクリーン・アップ対象として選択されるように、行われている
ことを特徴とする、クリーン・アップすべきブロックを決定する方法。 - 請求項1記載の方法において、前記第1の比較・重み付け動作において与えられる第1の重みと、前記第2の比較・重み付け動作において与えられる第2の重みとの選定は、
フラッシュEEPROMアレイへの書込みのための空きが必要であるときは、含まれる無効セクタの数が多い方のブロックがクリーン・アップ対象として選択されように行われ、
空きを得るためのクリーン・アップの必要性はないけれどもクリーン・アップが可能であるときは、既に受けた消去回数がより少ない方のブロックがクリーン・アップ対象として選択されるように行われる
ことを特徴とする、クリーン・アップすべきブロックを決定する方法。 - 請求項3記載の方法において、空きを得るためのクリーン・アップの必要性はないけれどもクリーン・アップが可能であるときのクリーン・アップは、既に受けた消去回数に500以上の差があるときに開始され、受けた消去回数がより少ない方のブロックがクリーン・アップ対象として選択されるように行われる
ことを特徴とする、クリーン・アップすべきブロックを決定する方法。 - 請求項1記載の方法において、
フラッシュEEPROMアレイへの書込みのための空きが必要であるときは、前記第1の比較・重み付け動作において第1の重み=0.8が与えられ、前記第2の比較・重み付け動作において第2の重み=−0.2が与えられ、
クリーン・アップの必要性はないけれどもクリーン・アップが可能であるときは、前記第1の比較・重み付け動作において第1の重み=0.2が与えられ、前記第2の比較・重み付け動作において第2の重み=−0.8が与えられる
ことを特徴とする、クリーン・アップすべきブロックを決定する方法。 - 請求項1記載の方法において、
前記第1の比較・重み付け動作において与えられる第1の重みと、前記第2の比較・重み付け動作において与えられる第2の重みとの選定は、含まれる無効セクタの数が多い方のブロックがクリーン・アップ対象として選択されるように、行われている、
ことを特徴とする、クリーン・アップすべきブロックを決定する方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US96946792A | 1992-10-30 | 1992-10-30 | |
US969,467 | 1992-10-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06223591A JPH06223591A (ja) | 1994-08-12 |
JP3641280B2 true JP3641280B2 (ja) | 2005-04-20 |
Family
ID=25515597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP29382993A Expired - Lifetime JP3641280B2 (ja) | 1992-10-30 | 1993-11-01 | フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5341339A (ja) |
JP (1) | JP3641280B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8583859B2 (en) | 2010-08-31 | 2013-11-12 | Kabushiki Kaisha Toshiba | Storage controller for wear-leveling and compaction and method of controlling thereof |
Families Citing this family (217)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2251324B (en) * | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
TW261687B (ja) * | 1991-11-26 | 1995-11-01 | Hitachi Seisakusyo Kk | |
US6347051B2 (en) * | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
JP3171901B2 (ja) * | 1992-02-05 | 2001-06-04 | セイコーインスツルメンツ株式会社 | 不揮発性メモリカードの書換え方法 |
JP3328321B2 (ja) | 1992-06-22 | 2002-09-24 | 株式会社日立製作所 | 半導体記憶装置 |
US6549974B2 (en) * | 1992-06-22 | 2003-04-15 | Hitachi, Ltd. | Semiconductor storage apparatus including a controller for sending first and second write commands to different nonvolatile memories in a parallel or time overlapped manner |
JP2737562B2 (ja) * | 1992-08-18 | 1998-04-08 | 日本電気株式会社 | 高密度磁気ディスク装置のパトロールシーク方式 |
US5369616A (en) * | 1992-10-30 | 1994-11-29 | Intel Corporation | Method for assuring that an erase process for a memory array has been properly completed |
US5359570A (en) * | 1992-11-13 | 1994-10-25 | Silicon Storage Technology, Inc. | Solid state peripheral storage device |
US5491809A (en) * | 1993-01-05 | 1996-02-13 | Texas Instruments Incorporated | Smart erase algorithm with secure scheme for flash EPROMs |
US5740349A (en) * | 1993-02-19 | 1998-04-14 | Intel Corporation | Method and apparatus for reliably storing defect information in flash disk memories |
JP3078946B2 (ja) * | 1993-03-11 | 2000-08-21 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置 |
US5479638A (en) * | 1993-03-26 | 1995-12-26 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporation wear leveling technique |
US5388083A (en) * | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
US5485595A (en) * | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
KR970008188B1 (ko) | 1993-04-08 | 1997-05-21 | 가부시끼가이샤 히다찌세이사꾸쇼 | 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 |
US6078520A (en) * | 1993-04-08 | 2000-06-20 | Hitachi, Ltd. | Flash memory control method and information processing system therewith |
JPH0736806A (ja) * | 1993-07-15 | 1995-02-07 | Nec Corp | Dma方式 |
US5640529A (en) * | 1993-07-29 | 1997-06-17 | Intel Corporation | Method and system for performing clean-up of a solid state disk during host command execution |
US5400286A (en) * | 1993-08-17 | 1995-03-21 | Catalyst Semiconductor Corp. | Self-recovering erase scheme to enhance flash memory endurance |
US5566314A (en) * | 1993-08-30 | 1996-10-15 | Lucent Technologies Inc. | Flash memory device employing unused cell arrays to update files |
JP3215237B2 (ja) * | 1993-10-01 | 2001-10-02 | 富士通株式会社 | 記憶装置および記憶装置の書き込み/消去方法 |
US5473569A (en) * | 1994-08-01 | 1995-12-05 | Motorola, Inc. | Method for operating a flash memory |
US5765175A (en) * | 1994-08-26 | 1998-06-09 | Intel Corporation | System and method for removing deleted entries in file systems based on write-once or erase-slowly media |
JP3088247B2 (ja) * | 1994-09-12 | 2000-09-18 | 日本電気株式会社 | 不揮発性半導体記憶装置及びその消去方法 |
US5517453A (en) * | 1994-09-15 | 1996-05-14 | National Semiconductor Corporation | Memory with multiple erase modes |
ES2101584T3 (es) * | 1994-09-30 | 1997-07-01 | Sel Alcatel Ag | Metodo de gestion de una memoria instantanea. |
JPH08124393A (ja) * | 1994-10-20 | 1996-05-17 | Fujitsu Ltd | データ消去回数に制限のあるメモリの制御方法及びこの方法を用いた装置 |
US5563828A (en) * | 1994-12-27 | 1996-10-08 | Intel Corporation | Method and apparatus for searching for data in multi-bit flash EEPROM memory arrays |
JP3706167B2 (ja) * | 1995-02-16 | 2005-10-12 | 株式会社ルネサステクノロジ | 半導体ディスク装置 |
US5568423A (en) * | 1995-04-14 | 1996-10-22 | Unisys Corporation | Flash memory wear leveling system providing immediate direct access to microprocessor |
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 |
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 |
US5838614A (en) | 1995-07-31 | 1998-11-17 | Lexar Microsystems, Inc. | Identification and verification of a sector within a block of mass storage flash memory |
US5930815A (en) * | 1995-07-31 | 1999-07-27 | Lexar Media, Inc. | Moving sequential sectors within a block of information in a flash memory mass storage architecture |
US6801979B1 (en) | 1995-07-31 | 2004-10-05 | Lexar Media, Inc. | Method and apparatus for memory control circuit |
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 |
US6757800B1 (en) | 1995-07-31 | 2004-06-29 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US5907856A (en) * | 1995-07-31 | 1999-05-25 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US6125435A (en) * | 1995-09-13 | 2000-09-26 | Lexar Media, Inc. | Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory |
US6170066B1 (en) * | 1995-09-29 | 2001-01-02 | Intel Corporation | Power-off recovery management for sector based flash media managers |
US5867641A (en) * | 1995-10-27 | 1999-02-02 | Scm Microsystems (U.S.) Inc. | Flash translation layer cleanup system and method |
US5987478A (en) * | 1995-10-31 | 1999-11-16 | Intel Corporation | Virtual small block file manager for flash memory array |
GB2317720A (en) * | 1996-09-30 | 1998-04-01 | Nokia Mobile Phones Ltd | Managing Flash memory |
US5956473A (en) * | 1996-11-25 | 1999-09-21 | Macronix International Co., Ltd. | Method and system for managing a flash memory mass storage system |
US5745418A (en) * | 1996-11-25 | 1998-04-28 | Macronix International Co., Ltd. | Flash memory mass storage system |
US5963970A (en) * | 1996-12-20 | 1999-10-05 | Intel Corporation | Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields |
US6279069B1 (en) | 1996-12-26 | 2001-08-21 | Intel Corporation | Interface for flash EEPROM memory arrays |
US5937423A (en) * | 1996-12-26 | 1999-08-10 | Intel Corporation | Register interface for flash EEPROM memory arrays |
US5928370A (en) * | 1997-02-05 | 1999-07-27 | Lexar Media, Inc. | Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure |
US6034897A (en) * | 1999-04-01 | 2000-03-07 | Lexar Media, Inc. | Space management for managing high capacity nonvolatile memory |
US6122195A (en) * | 1997-03-31 | 2000-09-19 | Lexar Media, Inc. | Method and apparatus for decreasing block write operation times performed on nonvolatile memory |
US6411546B1 (en) | 1997-03-31 | 2002-06-25 | Lexar Media, Inc. | Nonvolatile memory using flexible erasing methods and method and system for using same |
US6000006A (en) * | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
US6076137A (en) | 1997-12-11 | 2000-06-13 | Lexar Media, Inc. | Method and apparatus for storing location identification information within non-volatile memory devices |
GB9801373D0 (en) | 1998-01-22 | 1998-03-18 | Memory Corp Plc | Memory system |
KR100297986B1 (ko) * | 1998-03-13 | 2001-10-25 | 김영환 | 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법 |
KR100319598B1 (ko) | 1998-03-18 | 2002-04-06 | 김영환 | 플래시메모리어레이액세스방법및장치 |
US6040997A (en) * | 1998-03-25 | 2000-03-21 | Lexar Media, Inc. | Flash memory leveling architecture having no external latch |
US6038636A (en) * | 1998-04-27 | 2000-03-14 | Lexmark International, Inc. | Method and apparatus for reclaiming and defragmenting a flash memory device |
AU1729100A (en) | 1998-11-17 | 2000-06-05 | Lexar Media, Inc. | Method and apparatus for memory control circuit |
JP3511916B2 (ja) * | 1998-11-17 | 2004-03-29 | 松下電器産業株式会社 | 記録再生装置 |
US6260156B1 (en) | 1998-12-04 | 2001-07-10 | Datalight, Inc. | Method and system for managing bad areas in flash memory |
US7538694B2 (en) * | 1999-01-29 | 2009-05-26 | Mossman Holdings Llc | Network device with improved storage density and access speed using compression techniques |
US6145069A (en) * | 1999-01-29 | 2000-11-07 | Interactive Silicon, Inc. | Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices |
US6885319B2 (en) * | 1999-01-29 | 2005-04-26 | Quickshift, Inc. | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
US6819271B2 (en) | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US6141249A (en) * | 1999-04-01 | 2000-10-31 | Lexar Media, Inc. | Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time |
EP1729304B1 (en) | 1999-04-01 | 2012-10-17 | Lexar Media, Inc. | Space management for managing high capacity nonvolatile memory |
CN1088218C (zh) * | 1999-11-14 | 2002-07-24 | 邓国顺 | 用于数据处理系统的快闪电子式外存储方法及其装置 |
US6839821B2 (en) * | 1999-11-16 | 2005-01-04 | Lexar Media, Inc. | Method and apparatus for memory control circuit |
US7610438B2 (en) * | 2000-01-06 | 2009-10-27 | Super Talent Electronics, Inc. | Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table |
US7102671B1 (en) | 2000-02-08 | 2006-09-05 | Lexar Media, Inc. | Enhanced compact flash memory card |
US6426893B1 (en) * | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
US6721843B1 (en) | 2000-07-07 | 2004-04-13 | Lexar Media, Inc. | Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible |
US7167944B1 (en) | 2000-07-21 | 2007-01-23 | Lexar Media, Inc. | Block management for mass storage |
US6567307B1 (en) | 2000-07-21 | 2003-05-20 | Lexar Media, Inc. | Block management for mass storage |
US7155559B1 (en) | 2000-08-25 | 2006-12-26 | Lexar Media, Inc. | Flash memory architecture with separate storage of overhead and user data |
US6772274B1 (en) | 2000-09-13 | 2004-08-03 | Lexar Media, Inc. | Flash memory system and method implementing LBA to PBA correlation within flash memory array |
US6345001B1 (en) | 2000-09-14 | 2002-02-05 | Sandisk Corporation | Compressed event counting technique and application to a flash memory system |
US7113432B2 (en) * | 2000-09-14 | 2006-09-26 | Sandisk Corporation | Compressed event counting technique and application to a flash memory system |
US6732221B2 (en) | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
JP2003030993A (ja) * | 2001-07-17 | 2003-01-31 | Toshiba Corp | 半導体記憶装置 |
GB0123421D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Power management system |
GB0123415D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
GB0123416D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Non-volatile memory control |
GB0123412D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system sectors |
GB0123417D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Improved data processing |
GB0123419D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Data handling system |
GB0123410D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system for data storage and retrieval |
JP4280055B2 (ja) * | 2001-11-28 | 2009-06-17 | 株式会社Access | メモリ制御方法および装置 |
US6950918B1 (en) | 2002-01-18 | 2005-09-27 | Lexar Media, Inc. | File management of one-time-programmable nonvolatile memory devices |
US6957295B1 (en) | 2002-01-18 | 2005-10-18 | Lexar Media, Inc. | File management of one-time-programmable nonvolatile memory devices |
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 |
US7254668B1 (en) | 2002-10-28 | 2007-08-07 | Sandisk Corporation | Method and apparatus for grouping pages within a block |
JP2004164493A (ja) * | 2002-11-15 | 2004-06-10 | Wescom Inc | 不揮発性メモリのデータ管理システム、不揮発性メモリのデータ管理方法、およびそのプログラム |
JP3587842B2 (ja) * | 2002-12-17 | 2004-11-10 | 沖電気工業株式会社 | データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置 |
WO2004061669A1 (ja) * | 2003-01-06 | 2004-07-22 | Matsushita Electric Industrial Co., Ltd. | 映像及び音声信号記録装置及び記録方法 |
US6973519B1 (en) | 2003-06-03 | 2005-12-06 | Lexar Media, Inc. | Card identification compatibility |
US7188228B1 (en) * | 2003-10-01 | 2007-03-06 | Sandisk Corporation | Hybrid mapping implementation within a non-volatile memory system |
US7480760B2 (en) * | 2003-12-17 | 2009-01-20 | Wegener Communications, Inc. | Rotational use of memory to minimize write cycles |
EP1695304A4 (en) | 2003-12-17 | 2011-09-28 | Lexar Media Inc | POINT-OF-SALE ACTIVATION OF ELECTRONIC DEVICES TO AVOID THEFT |
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 |
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 |
US7441067B2 (en) * | 2004-11-15 | 2008-10-21 | Sandisk Corporation | Cyclic flash memory wear leveling |
US7315917B2 (en) * | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US20060161724A1 (en) * | 2005-01-20 | 2006-07-20 | Bennett Alan D | Scheduling of housekeeping operations in flash memory systems |
US7224604B2 (en) | 2005-03-14 | 2007-05-29 | Sandisk Il Ltd. | Method of achieving wear leveling in flash memory using relative grades |
US20060236025A1 (en) * | 2005-04-18 | 2006-10-19 | Intel Corporation | Method and apparatus to control number of erasures of nonvolatile memory |
US8438647B2 (en) | 2005-07-14 | 2013-05-07 | Imation Corp. | Recovery of encrypted data from a secure storage device |
US8015606B1 (en) | 2005-07-14 | 2011-09-06 | Ironkey, Inc. | Storage device with website trust indication |
US8335920B2 (en) | 2005-07-14 | 2012-12-18 | Imation Corp. | Recovery of data access for a locked secure storage device |
US8321953B2 (en) * | 2005-07-14 | 2012-11-27 | Imation Corp. | Secure storage device with offline code entry |
US7552271B2 (en) * | 2005-08-03 | 2009-06-23 | Sandisk Corporation | Nonvolatile memory with block management |
US7949845B2 (en) * | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
US7984084B2 (en) * | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
US7669003B2 (en) * | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
US7558906B2 (en) * | 2005-08-03 | 2009-07-07 | Sandisk Corporation | Methods of managing blocks in nonvolatile memory |
US20070067620A1 (en) * | 2005-09-06 | 2007-03-22 | Ironkey, Inc. | Systems and methods for third-party authentication |
US7752382B2 (en) * | 2005-09-09 | 2010-07-06 | Sandisk Il Ltd | Flash memory storage system and method |
US20070083697A1 (en) * | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Flash memory management |
US7529905B2 (en) * | 2005-10-13 | 2009-05-05 | Sandisk Corporation | Method of storing transformed units of data in a memory system having fixed sized storage blocks |
US7814262B2 (en) * | 2005-10-13 | 2010-10-12 | Sandisk Corporation | Memory system storing transformed units of data in fixed sized storage blocks |
US8639873B1 (en) | 2005-12-22 | 2014-01-28 | Imation Corp. | Detachable storage device with RAM cache |
US7831783B2 (en) | 2005-12-22 | 2010-11-09 | Honeywell International Inc. | Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems |
US8266378B1 (en) | 2005-12-22 | 2012-09-11 | Imation Corp. | Storage device with accessible partitions |
US7711890B2 (en) * | 2006-06-06 | 2010-05-04 | Sandisk Il Ltd | Cache control in a non-volatile memory device |
US20070300031A1 (en) * | 2006-06-22 | 2007-12-27 | Ironkey, Inc. | Memory data shredder |
US20080091901A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Method for non-volatile memory with worst-case control data management |
US20080091871A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Non-volatile memory with worst-case control data management |
US7904619B2 (en) | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for reducing memory write operations using difference information |
US7809900B2 (en) * | 2006-11-24 | 2010-10-05 | Sandforce, Inc. | System, method, and computer program product for delaying an operation that reduces a lifetime of memory |
US7747813B2 (en) * | 2006-11-24 | 2010-06-29 | Sandforce, Inc. | Multi-memory device system and method for managing a lifetime thereof |
US7904672B2 (en) | 2006-12-08 | 2011-03-08 | Sandforce, Inc. | System and method for providing data redundancy after reducing memory writes |
WO2008077284A1 (en) * | 2006-12-27 | 2008-07-03 | Intel Corporation | Initiative wear leveling for non-volatile memory |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
US7849275B2 (en) | 2007-11-19 | 2010-12-07 | Sandforce, Inc. | System, method and a computer program product for writing data to different storage devices based on write frequency |
US7903486B2 (en) | 2007-11-19 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
US9183133B2 (en) * | 2007-11-28 | 2015-11-10 | Seagate Technology Llc | System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory |
US7971023B2 (en) * | 2008-04-30 | 2011-06-28 | Sandisk Corporation | Guaranteed memory card performance to end-of-life |
US8356105B2 (en) * | 2008-05-02 | 2013-01-15 | Marblecloud, Inc. | Enterprise device policy management |
WO2009156877A1 (en) * | 2008-06-24 | 2009-12-30 | Sandisk Il Ltd. | Method and apparatus for error correction according to erase counts of a solid-state memory |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US9772936B2 (en) * | 2008-07-10 | 2017-09-26 | Micron Technology, Inc. | Data collection and compression in a solid state storage device |
KR101028291B1 (ko) * | 2008-09-01 | 2011-04-11 | 주식회사 엘지화학 | 배터리 팩과 부하 간의 스위치부 제어장치 및 방법, 그리고 상기 장치를 포함하는 배터리 팩 및 배터리 관리 장치 |
CN101419838B (zh) * | 2008-09-12 | 2011-01-19 | 中兴通讯股份有限公司 | 一种提高flash使用寿命的方法 |
JP4461187B1 (ja) * | 2008-12-24 | 2010-05-12 | 株式会社東芝 | 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法 |
US20100228906A1 (en) * | 2009-03-06 | 2010-09-09 | Arunprasad Ramiya Mothilal | Managing Data in a Non-Volatile Memory System |
US8433843B2 (en) * | 2009-03-31 | 2013-04-30 | Qualcomm Incorporated | Method for protecting sensitive data on a storage device having wear leveling |
US8176295B2 (en) | 2009-04-20 | 2012-05-08 | Imation Corp. | Logical-to-physical address translation for a removable data storage device |
US8065469B2 (en) * | 2009-04-20 | 2011-11-22 | Imation Corp. | Static wear leveling |
TWI457940B (zh) * | 2009-05-15 | 2014-10-21 | Macronix Int Co Ltd | 區塊為基礎快閃記憶體之位元組存取 |
US8639877B2 (en) * | 2009-06-30 | 2014-01-28 | International Business Machines Corporation | Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks |
US8516166B2 (en) * | 2009-07-20 | 2013-08-20 | Lsi Corporation | System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory |
US8683088B2 (en) | 2009-08-06 | 2014-03-25 | Imation Corp. | Peripheral device data integrity |
US8745365B2 (en) * | 2009-08-06 | 2014-06-03 | Imation Corp. | Method and system for secure booting a computer by booting a first operating system from a secure peripheral device and launching a second operating system stored a secure area in the secure peripheral device on the first operating system |
US9135190B1 (en) | 2009-09-04 | 2015-09-15 | Bitmicro Networks, Inc. | Multi-profile memory controller for computing devices |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
US8447908B2 (en) | 2009-09-07 | 2013-05-21 | Bitmicro Networks, Inc. | Multilevel memory bus system for solid-state mass storage |
US8560804B2 (en) | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
US8234520B2 (en) * | 2009-09-16 | 2012-07-31 | International Business Machines Corporation | Wear leveling of solid state disks based on usage information of data and parity received from a raid controller |
US20110119462A1 (en) * | 2009-11-19 | 2011-05-19 | Ocz Technology Group, Inc. | Method for restoring and maintaining solid-state drive performance |
US9396104B1 (en) | 2010-03-22 | 2016-07-19 | Seagate Technology, Llc | Accessing compressed data of varying-sized quanta in non-volatile memory |
JP2011198433A (ja) * | 2010-03-23 | 2011-10-06 | Toshiba Corp | メモリシステム |
US8499116B2 (en) | 2010-06-11 | 2013-07-30 | Hewlett-Packard Development Company, L.P. | Managing wear on independent storage devices |
TWI457941B (zh) * | 2010-06-25 | 2014-10-21 | Macronix Int Co Ltd | 區塊為基礎快閃記憶體之位元組存取的方法與裝置 |
US8239619B2 (en) | 2010-07-09 | 2012-08-07 | Macronix International Co., Ltd. | Method and apparatus for high-speed byte-access in block-based flash memory |
US8949506B2 (en) * | 2010-07-30 | 2015-02-03 | Apple Inc. | Initiating wear leveling for a non-volatile memory |
US8621328B2 (en) | 2011-03-04 | 2013-12-31 | International Business Machines Corporation | Wear-focusing of non-volatile memories for improved endurance |
GB2490991B (en) * | 2011-05-19 | 2017-08-30 | Ibm | Wear leveling |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US9846641B2 (en) | 2012-06-18 | 2017-12-19 | International Business Machines Corporation | Variability aware wear leveling |
US8750045B2 (en) | 2012-07-27 | 2014-06-10 | Sandisk Technologies Inc. | Experience count dependent program algorithm for flash memory |
US20140040536A1 (en) * | 2012-08-01 | 2014-02-06 | Genusion Inc. | Storage medium using nonvolatile semiconductor storage device, data terminal having the storage medium mounted thereon, and file erasing method usable for the same |
US9329948B2 (en) | 2012-09-15 | 2016-05-03 | Seagate Technology Llc | Measuring cell damage for wear leveling in a non-volatile memory |
KR20140038110A (ko) * | 2012-09-20 | 2014-03-28 | 한국전자통신연구원 | 파일 시스템 관리 방법 및 이를 이용하는 장치 |
US20140115422A1 (en) * | 2012-10-24 | 2014-04-24 | Laurence H. Cooke | Non-volatile memory error correction |
US20140129758A1 (en) * | 2012-11-06 | 2014-05-08 | Spansion Llc | Wear leveling in flash memory devices with trim commands |
US9251253B2 (en) | 2013-01-05 | 2016-02-02 | Qualcomm Incorporated | Expeditious citation indexing |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US10120694B2 (en) | 2013-03-15 | 2018-11-06 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9734067B1 (en) | 2013-03-15 | 2017-08-15 | Bitmicro Networks, Inc. | Write buffering |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US9842024B1 (en) | 2013-03-15 | 2017-12-12 | Bitmicro Networks, Inc. | Flash electronic disk with RAID controller |
US9916213B1 (en) | 2013-03-15 | 2018-03-13 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
EP2955633B1 (en) | 2013-03-15 | 2018-05-23 | Huawei Technologies Co., Ltd. | Data erasing method and device for flash memory |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US9971524B1 (en) | 2013-03-15 | 2018-05-15 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9720603B1 (en) | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
US9875205B1 (en) | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
JP6271939B2 (ja) * | 2013-10-11 | 2018-01-31 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びにプログラム |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US9952991B1 (en) | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
US9811461B1 (en) | 2014-04-17 | 2017-11-07 | Bitmicro Networks, Inc. | Data storage system |
US10394462B1 (en) | 2014-12-04 | 2019-08-27 | Amazon Technologies, Inc. | Data shaping to reduce memory wear in a multi-tenant database |
US10496288B1 (en) * | 2014-12-04 | 2019-12-03 | Amazon Technologies, Inc. | Mechanism for distributing memory wear in a multi-tenant database |
KR102258126B1 (ko) | 2015-03-19 | 2021-05-28 | 삼성전자주식회사 | 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 |
IN2015CH01601A (ja) * | 2015-03-28 | 2015-05-01 | Wipro Ltd | |
US10209891B2 (en) | 2015-08-24 | 2019-02-19 | Western Digital Technologies, Inc. | Methods and systems for improving flash memory flushing |
US11093146B2 (en) | 2017-01-12 | 2021-08-17 | Pure Storage, Inc. | Automatic load rebalancing of a write group |
US10740294B2 (en) * | 2017-01-12 | 2020-08-11 | Pure Storage, Inc. | Garbage collection of data blocks in a storage system with direct-mapped storage devices |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
US11159167B2 (en) | 2017-09-25 | 2021-10-26 | Intel Corporation | Techniques for reducing uneven aging in integrated circuits |
US11550727B2 (en) * | 2020-06-18 | 2023-01-10 | Micron Technology, Inc. | Zone-aware memory management in memory subsystems |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4644494A (en) * | 1984-02-06 | 1987-02-17 | Sundstrand Data Control, Inc. | Solid state memory for aircraft flight data recorder systems |
US4896262A (en) * | 1984-02-24 | 1990-01-23 | Kabushiki Kaisha Meidensha | Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory |
US4642759A (en) * | 1984-04-02 | 1987-02-10 | Targa Electronics Systems Inc. | Bubble memory disk emulation system |
US4958315A (en) * | 1985-07-02 | 1990-09-18 | The United States Of America As Represented By The Secretary Of The Navy | Solid state electronic emulator of a multiple track motor driven rotating magnetic memory |
US4757533A (en) * | 1985-09-11 | 1988-07-12 | Computer Security Corporation | Security system for microcomputers |
US4763305A (en) * | 1985-11-27 | 1988-08-09 | Motorola, Inc. | Intelligent write in an EEPROM with data and erase check |
US4802117A (en) * | 1985-12-16 | 1989-01-31 | Pitney Bowes Inc. | Method of preserving data storage in a postal meter |
JPS63113623A (ja) * | 1986-10-30 | 1988-05-18 | Nec Corp | セクタバツフア制御方式 |
US5070474A (en) * | 1988-07-26 | 1991-12-03 | Disk Emulation Systems, Inc. | Disk emulation system |
US5047989A (en) * | 1989-03-10 | 1991-09-10 | Intel Corporation | Chapter mode selection apparatus for MOS memory |
DE69033262T2 (de) * | 1989-04-13 | 2000-02-24 | Sandisk Corp | EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher |
US5131089A (en) * | 1989-06-12 | 1992-07-14 | Grid Systems Corporation | Solid state disk drive emulation |
US5077737A (en) * | 1989-08-18 | 1991-12-31 | Micron Technology, Inc. | Method and apparatus for storing digital data in off-specification dynamic random access memory devices |
GB2251324B (en) * | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
GB2251323B (en) * | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
JP2582487B2 (ja) * | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 半導体メモリを用いた外部記憶システム及びその制御方法 |
US5224070A (en) * | 1991-12-11 | 1993-06-29 | Intel Corporation | Apparatus for determining the conditions of programming circuitry used with flash EEPROM memory |
US6256642B1 (en) * | 1992-01-29 | 2001-07-03 | Microsoft Corporation | Method and system for file system management using a flash-erasable, programmable, read-only memory |
-
1993
- 1993-11-01 JP JP29382993A patent/JP3641280B2/ja not_active Expired - Lifetime
- 1993-11-01 US US08/145,654 patent/US5341339A/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8583859B2 (en) | 2010-08-31 | 2013-11-12 | Kabushiki Kaisha Toshiba | Storage controller for wear-leveling and compaction and method of controlling thereof |
Also Published As
Publication number | Publication date |
---|---|
US5341339A (en) | 1994-08-23 |
JPH06223591A (ja) | 1994-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3641280B2 (ja) | フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 | |
US5581723A (en) | Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array | |
US5357475A (en) | Method for detaching sectors in a flash EEPROM memory array | |
US5337275A (en) | Method for releasing space in flash EEPROM memory array to allow the storage of compressed data | |
JP3695766B2 (ja) | メモリの欠陥管理方法 | |
US10078449B2 (en) | Flash memory architecture with separate storage of overhead and user data | |
US5341330A (en) | Method for writing to a flash memory array during erase suspend intervals | |
JP5222232B2 (ja) | フラッシュメモリシステムにおけるハウスキーピング操作のスケジューリング | |
US5835935A (en) | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory | |
EP0691008B1 (en) | Flash memory mass storage architecture | |
US5388083A (en) | Flash memory mass storage architecture | |
KR101174308B1 (ko) | 비휘발성 저장 시스템들에서 자동 웨어 레벨링 | |
JP4787266B2 (ja) | スクラッチパッドブロック | |
JP5001011B2 (ja) | ホストの使用特性に基づいたフラッシュメモリのアドレスマッピングの適応的モード切り換え | |
JP4588431B2 (ja) | 頻繁にアクセスされたセクタの動作による不揮発性メモリに対するより速い書込み動作 | |
US20060161724A1 (en) | Scheduling of housekeeping operations in flash memory systems | |
US11003361B2 (en) | Wear leveling | |
JPH11511879A (ja) | メモリシステム | |
TW201308074A (zh) | 具有熱/冷資料分類之區塊管理之非揮發性記憶體及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040114 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040119 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040413 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040518 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040818 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040823 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041116 |
|
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: 20050111 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050121 |
|
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: 20090128 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090128 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100128 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100128 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110128 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120128 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130128 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130128 Year of fee payment: 8 |
|
EXPY | Cancellation because of completion of term |