JP4933267B2 - 大きな消去ブロックを有する不揮発性メモリシステムの管理 - Google Patents

大きな消去ブロックを有する不揮発性メモリシステムの管理 Download PDF

Info

Publication number
JP4933267B2
JP4933267B2 JP2006547192A JP2006547192A JP4933267B2 JP 4933267 B2 JP4933267 B2 JP 4933267B2 JP 2006547192 A JP2006547192 A JP 2006547192A JP 2006547192 A JP2006547192 A JP 2006547192A JP 4933267 B2 JP4933267 B2 JP 4933267B2
Authority
JP
Japan
Prior art keywords
block
data
pages
page
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 - Fee Related
Application number
JP2006547192A
Other languages
English (en)
Other versions
JP2007517319A (ja
Inventor
エム. コンレー,ケビン
ジェイ. ゴンザレス,カルロス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of JP2007517319A publication Critical patent/JP2007517319A/ja
Application granted granted Critical
Publication of JP4933267B2 publication Critical patent/JP4933267B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、一般に、フラッシュメモリなどの半導体不揮発性メモリシステムの動作に関し、特に、非常に大きな消去可能なメモリセルブロックを有し、かつデータのプログラミングとデータの読み出しとを行うためのずっと小さな単位のブロックにアクセスするようなメモリシステムの動作に関する。
今日使用されている商業的に成功を収めた多数の不揮発性メモリ製品、特に小形形状のファクタカードの形の不揮発性メモリ製品が存在し、これらのメモリ製品では、1以上の集積回路チップ上に形成されたフラッシュEEPROM(電気的に消去可能でプログラム可能な読み出し専用メモリ)セルアレイが用いられている。必ずというわけではないが、通常別々の集積回路チップ上に在るメモリコントローラは、カードが取り外し可能に接続された接続先のホストとインターフェイスを行い、カード内のメモリアレイの動作の制御を行う。このようなコントローラに含まれるものとして、典型的には、マイクロプロセッサ、或る種の不揮発性読み出し専用メモリ(ROM)、揮発性ランダムアクセスメモリ(RAM)、およびプログラミング中並びにデータの読み出し中にデータがコントローラを通り抜けるとき、そのデータから誤り訂正符号(ECC)を算出する1以上の特別の回路がある。いくつかの市販されているカードとして、コンパクトフラッシュ(登録商標)(CF)カード、マルチメディアカード(MMC)、セキュアデジタル(SD)カード、スマートメディアカード、個人タグ(P−Tag)、およびメモリスティックカードがある。ホストには、パーソナルコンピュータ、ノート形コンピュータ、携帯情報端末(PDA)、種々のデータ通信装置、デジタルカメラ、携帯電話、携帯用オーディオプレイヤ、自動車用サウンドシステム、および同様のタイプの機器が含まれる。メモリカードの実装例の他にも、種々のタイプのホストシステムの中へこのタイプのメモリを代わりに内蔵することができる。
2つの一般的なメモリセルアレイの構成として、市販されている用途としてNORおよびNANDがある。典型的なNORアレイでは、メモリセルは、列方向に延在して隣接するビットラインソース拡散部とドレイン拡散部との間で接続され、コントロールゲートが、セル行に沿って延在するワードラインと接続される。メモリセルは、ソースとドレインとの間のセルのチャネル領域の少なくとも1部分の上にわたって配置された少なくとも1つの記憶素子を含む。したがって、記憶素子上でプログラムされた電荷レベルは、アドレス指定されたメモリセルへ適正な電圧を印加することによってその後読み出すことができるセルの動作特性を制御する。このようなセルの例、メモリシステムにおけるこれらのセルの利用例、およびこれらのセルの製造方法については、米国特許第5,070,032号(特許文献1)、第5,095,344号(特許文献2)、第5,313,421号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)、第5,661,053号(特許文献6)、および第6,222,762号(特許文献7)に記載されている。
NANDアレイは、個々のビットライン間で1以上の選択トランジスタと接続された16や32などの3以上のメモリセルの連続ストリングと、1つの基準電位とを利用して複数のセル列を形成する。ワードラインは、これら多数の列内の複数のセルの両端にわたって延在する。ストリング内の残りのセルを強くオンに転換させることによって、プログラミング中に1つの列内の個々のセルの読み出しと検証とを行うので、ストリングの中を流れる電流は、アドレス指定されたセルに記憶されている電荷レベルに左右される。1つのメモリシステムの一部としてのNAND構成のアレイおよびその動作の例が、米国特許第5,570,315号(特許文献8)、第5,774,397号(特許文献9)、第6,046,935号(特許文献10)、および第6,522,580号(特許文献11)で見いだされる。
前に引用されている特許で説明されているような、最新のフラッシュEEPROMアレイの電荷蓄積素子は、最も一般的な導電性を有するフローティングゲートであり、このゲートは、典型的には導電的にドープされたポリシリコン材から形成される。フラッシュEEPROMシステムにおいて有用な別のタイプのメモリセルとして、不揮発性の態様で電荷を記憶する導電性フローティングゲートの代わりに、非導電性誘電体材料を利用するものがある。シリコン酸化膜と、窒化シリコンと、シリコン酸化膜(ONO)とから形成される3層誘電体が、導電性コントロールゲートとメモリセルチャネルの上方にある半導電基板の表面との間に挟まれる。セルはセルチャネルから窒化物の中へ電子を注入することによりプログラムされ、その場合これらの電子はトラップされ、限定領域に記憶され、熱いホールを窒化物の中へ注入することによりセルは消去される。誘電体記憶素子を用いるいくつかの特定のセル構造およびアレイが、ハラリらによる米国公開特許出願第2003/0109093号(特許文献12)に記載されている。
ほとんどすべての集積回路の用途における場合のように、フラッシュEEPROMメモリセルアレイの場合にも、いくつかの集積回路機能の実現に必要なシリコン基板面積の縮小に対する圧力が存在する。所定サイズのメモリカードおよび別のタイプのパッケージの記憶容量を増やすために、所定面積のシリコン基板に記憶することができるデジタルデータ量を増加させて、容量の増加とサイズの小型化の双方を図るようにする要望が継続的に存在する。データの記憶密度を高める1つの方法として、1個のメモリセル当たりおよび/または記憶素子または記憶ユニット当たり1個のメモリセルについて2ビット以上のデータを記憶する方法がある。これは、記憶素子電荷レベルの電圧範囲のウィンドウを3以上の状態に分割することにより達成される。このような4状態を利用することにより、個々のセルは、記憶素子当たり2ビットのデータや、3ビットのデータを記憶する8状態などを記憶することが可能となる。記憶素子の電荷レベルによって、記憶素子のメモリセルのしきい値電圧(一般にVTと呼ばれる)が制御され、このしきい値電圧はセルの記憶状態を読み出す基礎として利用される。しきい値電圧ウィンドウは一般に複数の範囲に分割され、メモリセルの2以上の記憶状態の個々の記憶状態に対して1つの範囲が当てられる。これらの範囲は、個々のセルの記憶状態を読み出す名目上の検知基準レベルを個々に含む保護帯域によって分離される。
フローティングゲートを利用する多状態フラッシュEEPROM構造については、米国特許第5,043,940号(特許文献13)、および第5,172,338号(特許文献14)に記載があり、さらに、誘電体フローティングゲートを用いる構造については、前述した米国特許出願第10/280,352号(特許文献15)に記載がある。多状態メモリセルアレイの選択された部分は、米国特許第5,930,167号(特許文献16)、および米国特許第6,456,528号(特許文献17)に記載されているように種々の理由のために2状態(2進)で動作することも可能である。
典型的なフラッシュEEPROMアレイのメモリセルは、一括消去される個別のセルブロックに分割される。すなわち、この1ブロックが消去単位であり、同時に消去可能な最小数のセルである。個々のブロックは通常1以上のデータページを記憶し、1ページがプログラミングと読み出しとを行う最小限の単位であるが、同時に異なるサブアレイ、すなわちプレーンで2以上のページのプログラミングや読み出しを行うことも可能である。個々のページは通常1以上のデータセクタを記憶し、このセクタサイズはホストシステムによって定義される。一つの例示のセクタには、磁気ディスク駆動装置に関して定義されている標準規格に準拠して512バイトのユーザデータに加えてユーザデータおよび/またはユーザデータが記憶されているブロックに関する数バイトのオーバーヘッド情報を示す或る数値が含まれている。このようなメモリは一般に、16、32またはそれ以上のページを持つ個々のブロック内に構成され、個々のページには1セクタまたはわずか数セクタのホストデータが記憶される。
ユーザデータをプログラムしてメモリアレイの中へ入れ、このメモリアレイからユーザデータを読み出す最中の並行性レベルを高めるために、このアレイはプレーンと一般的に呼ばれているサブアレイに通常分割され、これらのサブアレイは、並列動作が可能となるようにサブアレイ自身のデータレジスタ、およびその他の回路を備えることによって、数個のプレーンまたはすべてのプレーンの各々に対してデータセクタを同時にプログラムしたり、或いは数個のプレーンまたはすべてのプレーンの各々からデータセクタを同時に読み出したりすることができるようになる。単一集積回路上のアレイを物理的に分割してプレーンに変えることも可能であるし、或いは別々の1以上の集積回路チップから個々のプレーンを形成することも可能である。このようなメモリの実装例については、米国特許第5,798,968号(特許文献18)、および米国特許第5,890,192号(特許文献19)に記載されている。
メモリをさらに効率的に管理するために、ブロックを仮想ブロック、すなわちメタブロックを形成するために一体にリンクすることも可能である。すなわち、個々のメタブロックが、プレーンのうちのいくつかのプレーンまたはすべてのプレーンの個々のプレーンから1つのブロックを含むように定義される。メタブロックの利用については、米国公開特許出願第2002−0099904号(特許文献20)に記載されている。メタブロックは、データのプログラミングと読み出し用の宛先としてホストの論理ブロックアドレスにより特定される。同様に、メタブロックからなるすべてのブロックは一括消去される。このような大きなブロックおよび/またはメタブロックを用いて動作するメモリシステム内のコントローラは、ホストから受信した論理ブロックアドレス(LBA)およびメモリセルアレイ内の物理ブロック数(PBN)の間での変換を含む複数の機能を実行する。論理ブロック番号(LBN)の中間の量を利用してもよく、1つのLBNは一般に1以上のメモリアレイブロックまたはメタブロックの記憶容量に等しいデータ量を含むLBAの範囲を指定するものであってもよい。ブロック内の個々のページは典型的に、このブロックアドレス内のオフセット値によって特定される。アドレス変換は、論理ブロック数(LBN)と論理ページの利用を伴う場合が多い。
理想的な場合では、ブロックのすべてのページ内のデータは、割り当てられていない消去済みブロック内のページへの更新済みデータの書き込みによってまとめて更新され、次いで、論理ブロック番号から物理ブロック番号への番号テーブルが新たなアドレスによって更新される。次いで、原ブロックが利用可能となり、将来利用するために消去済みブロックプールの中で消去と配置とが行われる。しかし、所定ブロック内のすべてのページより少ないページ数に記憶されたデータの更新を行う必要がある場合の方が一般的である。所定ブロックの残りのページに記憶されたデータは変更のない状態のまま残る。ブロック当たりに記憶されるデータページ数が多いシステムほどこのようなことが生じる発生確率は高くなる。このような部分的なブロックの更新が行われる今回利用する1つの技法は、更新すべきページのデータを対応する数の消去済みブロックのページの中へ書き込み、次いで、原ブロックから新しいブロックのページの中へ、変更のないページをコピーする技法である。原ブロックを消去し、次いで、この原ブロックを消去済みブロックプールに追加することも可能である。時間の経過に伴い、ホストデータファイルが書き換えられ、更新される結果、多くのブロックが、有効データを含む相対的に少数のページと、もはや最新のものではないデータを含む残りのページとに結局落ち着くことが可能となる。アレイのデータ記憶容量を効率的に利用することができるようにするために、有効データの論理的に関連づけられたデータページが、複数のブロックの間でフラグメントから一括して時折収集され、より少ない数のブロックの中へ一体に統合される。この処理は一般に“ガーベッジコレクション”と称されているものである。
別の技法では、原データを含むブロックとは異なるブロックへ更新済みページが書き込まれるが、特定された更新済みデータを同じ論理アドレスによって置換データと区別するために、データに適当にマークを付けることによって新しいブロックの中へ別のデータページをコピーする必要はなくなる。これは前述した米国公開特許出願第2002−0099904号(特許文献20)で論じられている主題である。次いで、データが読み出されると、新しいブロックのページから読み出された更新済みデータは、現時点の状態のままの原ブロックのページから読み出された変更のないデータと合成され、無効な置換データは無視される。
メモリシステムコントローラは、その構造と、制御用ファームウェアとによって、種々の条件の下でホストにデータをプログラムさせ、データを読み出させる能力があることが望ましい。1つの極端な例では、オーディオデータ、ビデオデータ、またはその他のストリーミングデータの高速受信が可能であり、メモリシステムはリアルタイムでのデータの記憶を要求される。別の極端な例では、ホストはメモリシステムに1つのセクタのデータを時折プログラムさせたり、シーケンシャルでない論理アドレスを有する複数の単一データセクタをまとめてプログラムさせたりすることも可能である。同じデータセクタを頻繁に更新することも可能である。例えば、アレイに記憶されたファイルアロケーションテーブル(FAT)が書き込み中のとき、或いは更新中のとき、このような単一セクタのプログラミングを行うことが可能である。大きな消去ブロックメモリに対するこのような処理によって示される問題点として、メモリの記憶容量を効率良く利用するために頻繁なガーベッジコレクションが必要となるという点が挙げられる。コントローラは、ガーベッジコレクションを実行するために、メモリにおいて、並びにメモリの中からデータ転送を行うコントローラの主要機能を一時的に停止する必要があり、それによってシステムの性能に不利な影響を与えることになる。
米国特許第5,070,032号 米国特許第5,095,344号 米国特許第5,313,421号 米国特許第5,315,541号 米国特許第5,343,063号 米国特許第5,661,053号 米国特許第6,222,762号 米国特許第5,570,315号 米国特許第5,774,397号 米国特許第6,046,935号 米国特許第6,522,580号 米国公開特許出願第2003/0109093号 米国特許第5,043,940号 米国特許第5,172,338号 米国特許出願第10/280,352号 米国特許第5,930,167号 米国特許第6,456,528号 米国特許第5,798,968号 米国特許第5,890,192号 米国公開特許出願第2002−0099904号 米国特許出願第09/505,555号
したがって、メモリシステム全体の性能を上げるために、ホストから受信した書き込みコマンドの特性に従ってデータのプログラミングを行う少なくとも2つの異なるメカニズムが維持される。一般に、シーケンシャルでないアドレス指定されたデータの記憶は、いずれかのタイプの動作を用いて、メモリシステムの性能を最適化するように、シーケンシャルなアドレス指定されたデータの記憶とは別様に処理される。
1つの実装例では、単一のホストデータ単位(セクタが一般的な例である)、シーケンシャルな論理アドレスを持つ少数の単位、またはシーケンシャルでない論理アドレスを持つデータ単位をプログラムするホストコマンドは、個々の論理ブロックやメタブロックの記憶容量と比較して大きな複数のデータ単位であり、シーケンシャルな論理アドレスを有するデータ単位をプログラムするホストコマンドとは別様に処理される。単一の、少数のシーケンシャルなデータ単位、またはシーケンシャルでないデータ単位が、第1のタイプの指定論理ブロック、またはメタブロックへ書き込まれるのに対して、より大きな数のシーケンシャルなデータ単位は第2のタイプの指定論理ブロック、すなわちメタブロックへ書き込まれる。第1のタイプの指定ブロック、すなわちメタブロック(本願明細書ではE1と呼ばれている)が広い範囲の論理アドレスにわたって拡散したデータの更新値を受信するのに対して、第2のタイプの指定ブロック、すなわちメタブロック(本願明細書ではE2と呼ばれている)は、単一ブロックに限定された論理アドレスの範囲に記憶されたデータの更新値を受信する。さらに、単一データ単位またはシーケンシャルでないデータ単位が周囲に論理アドレスを持つ他のデータ単位よりもさらに頻繁に更新される場合、更新値を単位の論理アドレス範囲に専用の第1のタイプの指定論理ブロック、すなわちメタブロック(本願明細書ではdE1と呼ばれている)に記憶することも可能である。
これらの指定ブロックを利用する主要な効果として、ブロックに記憶することも可能な少数のデータを更新する際に一般に必要となるデータ統合量が減少することが挙げられる。この更新済みデータは同じ論理ブロックの変更のないデータを含む単一物理ブロックの中に直接再合成を行う必要はなく、したがってシステムの性能の改善が図られることになる。メモリシステムのデータの取得と記憶とに対するこのような再合成による干渉が少なくなる時まで、このような再合成を延期することも可能である。さらに、種々の指定ブロックを好ましくは動的に形成し、受信するプログラミングコマンドを収容し、それによって多種多様のデータ記憶の用途における高性能な動作のためにメモリシステムを適合させるようにすることが望ましい。
本発明の追加の態様、特徴、および利点は、添付図面を参照して読まれるべきである例示の実施形態の以下の説明に含まれる。本願で引用されているすべての特許、特許出願、論文およびその他の文献は、すべての目的のためにその全体が本願明細書において参照により援用されている。
現行の大ブロック管理技法についての説明
図1は、典型的なフラッシュメモリデバイスの内部構成を示す。主要機能には、外部コントローラとのインターフェイスを行うための入出力(I/O)バス411および制御信号412、コマンド用レジスタ、アドレス信号、および状態信号を用いて内部メモリ動作を制御するメモリ制御回路450とが含まれる。フラッシュEEPROMセルの1以上のアレイ400が含まれ、個々のアレイは、それ自体の行デコーダ(XDEC)401と列デコーダ(YDEC)402、1グループのセンス増幅器とプログラム制御回路(SA/PROG)454、並びにデータレジスタ404を有する。現在、メモリセルには通常、記憶素子として1以上の導電性フローティングゲートが含まれているが、この代わりに、電荷トラッピング誘電体を含む別の長時間の電荷記憶素子を利用することも可能である。定義された2つの電荷レベルを用いてメモリセルアレイを動作させ、それによって個々の記憶素子が個々の素子を用いて1ビットデータを記憶することができるようにすることも可能である。これとは別に、個々の記憶素子に対して3以上の記憶状態を定義することも可能であり、その場合2以上のビットデータが個々の記憶素子に記憶される。
所望の場合、例えば、本願の譲受人であるサンディスク コーポレイションに譲渡され、1999年3月30日に登録された米国特許第5,890,192号(特許文献19)によって教示されているように、複数のアレイ400には、個々に関連づけられたXデコーダ、Yデコーダ、プログラミング/検証済み回路、データレジスタなどが設けられる。この特許は、その全体が本願明細書において参照により援用されている。関連するメモリシステムの機能については、ケビン・コンレーらによる同時継続中の2000年2月17日出願の米国特許出願第09/505,555号(特許文献21)に記載されている。この特許出願は、その全体が本願明細書において参照により援用されている。
外部インターフェイスI/Oバス411と制御信号412とは、以下を含むことができる。
CS−チップ選択:フラッシュメモリインターフェイスの起動に用いる。
RS−読み出しストローブ:I/Oバスが、メモリアレイからのデータ転送に用いられ
ていることを示すのに用いる。
WS−書き込みストローブ:I/Oバスが、メモリアレイへのデータ転送に用いられて
いることを示すのに用いる。
AS−アドレスストローブ:I/Oバスがアドレス情報の転送に用いられていることを
示す。
AD[7:0]−アドレス/データバス:このI/Oバスを利用して、コントローラと
フラッシュメモリコマンド間、並びにメモリ
制御450のアドレスレジスタとデータレジ
スタ間でデータ転送を行う。
このインターフェイスは単に一例として示すものにすぎず、このインターフェイスの代わりに、同じ機能性を与える別の信号構成を用いることも同様に可能である。図1は、その関連する構成要素を備えた唯一のフラッシュメモリアレイ400を示すが、多数のこのようなアレイは共通のインターフェイスとメモリ制御回路とを共有する単一のフラッシュメモリチップ上に存在することができるが、アレイ間での並列的な読み出し動作とプログラミング動作とを可能にするために、別々のXDEC、YDEC、SA/PROGおよびデータREG回路を有するようにしてもよい。
データは、データレジスタ404を介するメモリアレイと、I/OバスAD[7:0]411とのデータレジスタの結合を介する外部コントローラとの間で転送される。データレジスタ404はセンス増幅器/プログラミング回路454とも接続される。個々のセンス増幅器/プログラミング回路素子とに結合されたデータレジスタの構成要素の数は、メモリセルの個々の記憶素子に記憶されているビット数によって決めることも可能である。1つのポピュラーな形では、個々のフラッシュEEPROMセルの中に電荷記憶素子として1以上のフローティングゲートが含まれる。個々の電荷記憶素子は、メモリセルが多状態モードで動作する場合、2や4などの複数のビットを記憶することも可能である。これとは別に、記憶素子当たり1ビットデータを記憶するためにメモリセルを2進モードで動作させることも可能である。
行デコーダ401は、アクセスすべき物理ページを選択するためにアレイ400用の行アドレスを復号化する。行デコーダ401は、内部行アドレスライン419を介してメモリ制御論理回路450から行アドレスを受信する。列デコーダ402は、内部列アドレスライン429を介してメモリ制御論理回路450から列アドレスを受信する。
図2は、典型的な不揮発性データ記憶システムの構成を示し、この場合、記憶媒体としてフラッシュメモリセルが用いられている。1つの形では、このシステムは、ホストのレセプタクル内へ挿入されるとき、ホストインターフェイスを提供する1つの側部に沿って延在する電気コネクタを有する取り外し可能なカード内にカプセル化される。これとは別に、取り外せないようにインストールされた回路の形で、或いは別様に、図2のシステムをホストシステムの中へ組み込むことも可能である。このシステムは、高レベルのホスト機能およびメモリ制御機能を実行する単一コントローラ301を利用するものである。フラッシュメモリメディアは1以上のフラッシュメモリデバイスから構成され、個々のこのようなデバイスはそれ自身の集積回路チップ上に形成される場合が多い。システムコントローラとフラッシュメモリとは、コントローラ301が、コマンドをロードし、アドレス指定を行い、フラッシュメモリアレイ間を往来するデータの転送を行うことを可能にするバス302によって接続される。コントローラ301は、フラッシュメモリアレイ間を往来してユーザデータを転送するホストシステム(図示せず)とインターフェイスを行う。図2のシステムがカードに含まれる場合では、ホストインターフェイスは、カードとホスト機器とに差込プラグとソケット組立(図示せず)とを含むものとなる。コントローラ301は、特定の論理アドレスから始まる1以上のセクタのユーザデータを読み出したり、或いは書き込んだりするためにホストからコマンドを受信する。このアドレスは、メモリセルの物理ブロックの境界と位置合わせを行うものであってもよいし、行わないものであってもよい。
フラッシュメモリアレイ400は通常2以上のサブアレイ(本願明細書ではプレーンと呼ばれている)に分割され、2つのこのようなプレーン400aと400bとが図3に例示されている。これとは別に、4または8などのさらに多数のプレーンをメモリアレイ400に含むことも可能である。個々のプレーンは例示の便宜上16個の物理ブロック0〜15を有するように図に示されているが、実際のプレーンは典型的にはさらにずっと多くのブロックを含むものとなる。このブロックには、消去単位である一回で消去可能な最小数のメモリセルが含まれる。プレーンの各々は、それ自身のデータレジスタ404aと404b、並びにプログラミング回路454aと454bをそれぞれ備えている。これによって、プレーン400aと400bの各メモリセルブロックの中へデータの同時プログラミングを行うことが可能となる。これらプレーンの各々は、サブアレイとして他のプレーンとはある程度独立して動作可能である。
図4は、図3のブロックのうちの1つのブロックを示し、このブロックには例示の便宜上16ページの0〜15のデータが含まれる。というのは、個々のブロックの中にさらに多くのページが含まれることも予想されるからである。1ページには、1回のプログラミング動作時にまとめてプログラム可能な最小数のメモリセル(プログラム可能な単位)が含まれる。個々のページはホストから順番に1以上のデータセクタを記憶し、メモリコントローラにより生成された若干のオーバーヘッドデータが通常ホストへ追加される。ホストに加えてオーバーヘッドデータ443から取得されたユーザデータ441の情報および/またはデータセクタが記憶されている物理ブロックのユーザデータ441の情報を含むように、1ページに記憶されたデータセクタの一例が図5に示されている。1セクタ内のユーザデータ量441は好便には512バイトのデータにするとよい。この記憶単位は、データセクタ単位でメモリ間を往来するデータを転送するホストを備えたメモリシステムの利用時に特に有用であり、このようなホストとしては、ほとんどのパーソナルコンピュータが含まれる。オーバーヘッドデータは各512バイトのユーザデータ用として16バイトのオーダーとなるようにすることも可能である。
1ビットデータが個々のメモリセル記憶素子に記憶される2進状態を用いてメモリシステムを動作する場合、ユーザデータに加えてオーバーヘッドデータからなる1つのセクタが528のメモリセルを占有する。メモリセルを4状態で動作する場合、したがって1セル当たり2ビットのデータが記憶される場合、単一データセクタを記憶するには、同数のセルの1/2のセルが必要となる、すなわち個々のセルが2つのデータセクタの各々から1ビットを記憶する場合のように、同数のセルが2つのデータセクタを記憶することが可能となる、記憶素子当たりより多くの状態数が用いられる動作では、アレイのデータ記憶密度がさらに上昇する。
前述したように、複数ページに分割された大容量メモリセルブロックを有する従来技術によるシステムでは、原ブロックから、ホストによって書き込まれた新たな、更新済みデータも含む新しいブロックへ、更新中でない1ブロック内のページデータをコピーする必要がある。この技法が図6に例示されているが、この場合、図3のプレーンのうちの1つのプレーンのブロックのうちの2つのブロック(例えば、プレーン0のブロック3と13)が示されている。原ブロック3のページ7〜10内のデータは図に示されている更新済みデータの4ページによって更新中である。新規データは未使用の消去済みブロック13の対応するページ7〜10の中へ書き込まれる。次いで、原ブロック13内のページ0〜6および11〜15からの変更のないユーザデータは新しいブロック13の対応するページの中へコピーされる。新しいブロック13のすべてのページは単一シーケンスのプログラミング動作でプログラムすることが望ましい。ブロック13が完全にプログラムされた後、原ブロック3は消去され、後で利用するために消去済みブロックプールの中へ入れられる。ブロック3と13との間でのデータのコピーは、原ブロック内の1以上のページからのデータの読み出し、および新しく割り当てられたブロック内のページへの同じデータの後続するプログラミングを含むことになり、メモリアレイの書き込み性能と使用可能な耐用期間とに悪影響を与える。
図7Aと図7Bとを参照すると、部分的なテーブルによって、図6に関連して先程説明した、データの更新前(図7A)と更新後(図7B)の論理ブロックの、新たな原物理ブロック3と13へのマッピングが示されている。データ更新前に、この例では、原ブロック3は、PBN3の対応するページ0〜15にLBN3のページ0〜15を記憶する。図6に従うデータの更新後、新しいブロック13は、PBN13のそれぞれのページ0〜15にLBN3のページ0〜15を記憶する。図7Bにアドレス変換表が示され、このようにして更新が行われることが示されている。次いで、LBN3からのデータの読み出しを要求する旨のホストからの受信は、原物理ブロック3(PBN3)の代わりに物理ブロック13(PBN13)へ向けられる。
市販のフラッシュメモリ製品で行われているように個々のページ内のデータのLBNをこのページ内のオーバーヘッドデータとして記憶することも可能である。次いで、コントローラは、物理ページから読み出されたLBNフィールドとこれらページのPBNとから図7Aと図7Bに示されているテーブルの形でテーブルを構成する。このテーブルは、アクセスを容易にするためにコントローラの揮発性メモリに記憶することも可能であるが、システム全体用の完全なテーブルの一部分だけを任意の時点に記憶する必要がある。テーブル部分に含まれるブロックに関係する読み出し動作またはプログラミング動作の直前にテーブルの一部を形成することも可能である。
図6に関して説明したものとは別様に動作する従来技術による別のシステムでは、ユーザデータと共に記憶されたオーバーヘッドとして新/旧のフラグが各ページの中に含まれ、新規データを含むページと、置換済みデータを含むページとの区別が図られる。新規データのみが新しく割り当てられたブロックへ書き込まれる。更新中でない原ブロックのページ内のデータを新しいブロックの中へコピーする必要はない。次いで、1つの論理ブロックのデータが2つの物理ブロック間で分割され、部分的に複製される。これは、所定のメモリ容量を有するシステムに対してさらに多くのメモリブロックを利用することができるようになることを要求するものである。これも、旧いページを最初に消去する必要なく、ページへのフラグの書き込みを可能にするメモリの利用も要求するものである。
種々のフラグが典型的に、LBNなどのオーバーヘッドとして他の関連するオーバーヘッドデータと同じ物理ページ、およびECCフィールドの中に記憶される。したがって、データが置換されたページの中に新/旧フラグをプログラムすることは、ページがマルチプログラミングサイクルをサポートすることを必要要件とすることになる。すなわち、メモリアレイは消去操作間の少なくとも2つの段階でプログラムすべき個々のページに対する能力を有する必要がある。さらに、ブロックは、より高いオフセット値やアドレスを持つブロック内の別のページが予めプログラムされているとき、ページをプログラムする能力をサポートする必要がある。しかし、いくつかのフラッシュメモリの限界に起因して、専ら物理的にシーケンシャルな態様でのみ、ブロック内のページのプログラミングが可能である旨を指定することによるこのようなフラグの利用は妨げられる。さらに、このようなフラッシュメモリでは、ページは有限数のプログラミングサイクルをサポートし、プログラムされたページの追加のプログラミングは場合よって許可されなくなることがある。多くの様々なタイプのフラッシュEEPROMが存在するが、これらのフラッシュEEPROMの各々は、少量の集積回路領域上に形成される高性能のメモリシステムを動作させるために対処しなければならないそれ自身の限界を提示している。
必要とされているものは、ホストの利用状況データのパターンに基づいてデータを最適に管理するメカニズムである。
本発明の例示の実施形態についての説明
フラッシュEEPROMシステムの開発トレンドは、集積メモリ回路チップの製造コストを下げるために、メモリセルの数を大幅に増やし、それによって個々のブロックに記憶されるデータ量を大幅に増加させることを目的とするものである。約512または1024個のデータセクタ(各々528バイト)のブロックサイズは、したがって270,336バイトまたは540,672バイトのユーザデータおよびオーバーヘッドデータの個々の容量を有するものと考えられる。1ページの中にただ1つのセクタが含まれていれば、同数のページが存在することになるが、トレンドとして、やはり2つのデータセクタ、またはそれ以上のデータセクタを個々のページの中に含むようにすることによって、1回のプログラミング動作の一部としてプログラムされるデータ量を増やす傾向があり、その場合、所定数のデータセクタを記憶するブロック内のページ数は減少する。しかし、特定のいずれの実装例の詳細にも関係なく、ブロック内のデータの一部のみを更新する前述した現行技術は、個々のブロックのデータ記憶容量が増大するにつれて、メモリの性能および/または容量の利用に対する逆効果を強めるものとなる。
1ブロックの528バイト程度からなる数ページのみのデータを更新している場合、図6と関連して説明した現行技術は、旧いブロックから新しいブロックへ残りの変更のないページ(通常1回につき1ページ)をコピーする時間という点から見て著しいオーバーヘッドを有することがわかる。これは、リアルタイムデータの記憶用途で現在使用されているずっと小さなブロックサイズに関して問題になる可能性があるが、ブロックサイズの増大につれてさらに悪化するものである。さらに、原ブロック内の旧いデータページに1個置きにタグをつける技法を利用する場合、新しいブロック内の残りページが未使用状態のままになる可能性を有する別の大きなブロックの中へ数ページ分の更新済みデータが書き込まれる。
したがって、本発明の1つの態様によれば、プレーン内の若干の別のブロック、またはすべての別のブロックのデータのうちのこのような少量の更新値を受信するために、メモリの個々のプレーンの中に少なくとも1つのブロックが提供される。図8に示されているメモリプレーンでは、1つのタイプのブロック10がそのように指定され、本願明細書ではE1ブロックとして特定される。以下に説明するように、別様に動作する個々のメモリプレーン用として指定される少なくとも1つのタイプのブロック(E2ブロックと呼ばれる)も存在する。プレーン内の未使用ブロックのいずれもE1ブロックまたはE2ブロックとして指定することが可能であり、メモリの動作中、場合に応じてこの指定を変更することができる。E1とE2ブロックの指定はホストのプログラミングパターンによって決められる。
図9を参照しながらE1ブロックの利用について説明する。この例では、図6と関連して前述した例の場合のように、ブロック3のページ7〜10内のデータが更新中である。しかし、新しいブロック内の同じ範囲のページへ更新済みデータを書き込む代わりに、更新済みデータは任意の都合のよい未使用の消去済みページ内のE1ブロックに、通常順を追って書き込まれる。図9では、E1ブロックは、3ページの論理ブロック7から得られる更新済みデータをE1ブロックのページ0〜2に記憶し、論理ブロック2から得られる更新済みデータをE1ブロックのページ3と4とに記憶しているものとして示されている。論理ブロック3から得られる現在のページ7〜10の更新済みデータを記憶するのに最も都合のよい場所は、それぞれ順に次の4ページの次のページ5〜8の中にある。E1ブロックの残りの消去済みページ9〜15は別のブロックのページからの更新済みデータを記憶するのに利用可能である。
更新済みデータを記憶する時点で、ブロック3のページ7〜10内の原データはこの例では旧いデータになっている。したがって、ブロック3のデータを読み出すとき、メモリシステムコントローラはE1ブロックから更新済みページ7〜10を特定し、原ブロック内のページ7〜10のデータの代わりに更新済みページのデータを使用することも必要となる。この目的のために、コントローラの高速揮発性メモリの中にアドレスマップが保持される。システムの少なくとも一部の中のページのオーバーヘッドデータから、或いは不揮発性メモリ内の別の記憶データから、E1ブロック内のデータを含むアドレスマップ用データがシステムの初期化時に取得される。このデータは、個々のページのオーバーヘッドデータの一部として一般に含まれる個々のページのLBNを含むデータである。E1ブロックでは、ページは、何らかの特定の順序で書き込む旨の制約を受けていないため、個々のデータページのオーバーヘッドはその論理ページオフセット値をブロック内に含むことも望ましい。次いで、アドレスマップのデータは、E1ブロック内で変更されるいずれかのデータページのオーバーヘッドフィールドから更新される。
これまで任意の所定ページの唯一の更新値がE1ブロックの中に存在するものと仮定してきた。この仮定はある用途によって当てはまる場合もあれば、当てはまらない場合もある。例えば、図9の例では、原ブロック3のページ8が2度目に更新される場合も考えられ、この第2の更新値も利用可能な消去済みページ内の別のページの中の同じE1ブロックに記憶される。ブロック3に記憶されたデータを読み出す際、コントローラは、コントローラメモリ内で保持されているテーブルからか、或いはページ自体からかのいずれかから得られる、E1ブロック内のページのヘッダ(オーバーヘッドデータ)からもデータを読み出す。E1ブロック内でプログラムされたページのヘッダは、図9の例では、プログラム済みのページ8からページ0へのように毎回同じ方向で読み出される。ページが順番に書き込まれるタイプのメモリで遭遇する複製の更新済みページの場合には、逆方向のシーケンスで第1に読み出すページが最新のページであることをコントローラは認知し、同じLBNとページオフセット値とを有するE1ブロック内の後続する他のすべてのページを無視する。完全なマップを維持するためにメモリの初期化中、E1ブロック内のページのヘッダを読み出すことも可能である。
同じLBNとページオフセット値とを有する2ページのうちの最新のページの方を特定するさらに一般的な代替方法として、個々のページのオーバーヘッドが、同じ論理アドレスを持つ別のページをプログラムする時点に少なくとも関連して、プログラミングを行う時点の指示をさらに含むようにすることも可能である。これを行うことによって、コントローラは、特定のメモリブロックからデータの読み出しを行う際に、同じ論理アドレスが割り当てられたデータページの相対的経過時間を決定することが可能となる。この技法は、この技法を可能にするメモリシステムにおいて任意の順序で更新済みページをE1ブロックの中へ書き込むことを可能にするものである。この技法は、単一プレーンの中に2以上のE1ブロックを設けたメモリシステムの動作をさらに容易にすることができるものである。旧いデータを最新のデータと区別するこの方法については、前述した米国公開特許出願第2002−0099904号(特許文献20)の中にさらに十分な記載がある。
個々のページにタイムスタンプを記録することができる複数の方法が存在する。最も簡単な方法として、その関連するページのデータがプログラムされたとき、システム内のリアルタイムの刻時出力値を記録する方法がある。同じ論理アドレスを持った後でプログラムされたページは、後で記録されたタイプスタンプをその時点で持つことになる。しかし、このようなリアルタイム刻時がシステムで利用することができないとき、別の技法を利用することもできる。1つの具体的な技法としてモジュールNカウンタの出力をタイムスタンプとして記憶する技法がある。このカウンタ値の範囲は、同じ論理ページ番号を用いて記憶されていると考えられるページ数よりも1だけ多い範囲とすることが望ましい。図9の原ブロック3で特定ページのデータを更新するとき、例えば、コントローラはまずページのオーバーヘッドに記憶されている、更新中のデータのカウント値を読み出し、このカウント値を1などの或る量だけ増分し、次いで、E1ブロックに記憶されている新たな更新済みページに増分したカウント値が書き込まれる。このカウント値がコントローラメモリの中に保持されているテーブルに含まれていれば、コントローラはこのカウント値をそのテーブルから読み出す。含まれていなければ、コントローラは更新中のページのヘッダからカウント値を読み出す。カウンタ値は、カウント値Nに達すると0へロール・オーバーする。記憶されたカウント値の中に不連続点が存在することを保証するために、同じLBNを持つブロックの番号はN未満にされる。こうすることによってシステムカウンタは、低いカウント値を持つLBNの方が、より高いカウント値を持つLBNよりも最新のものである場合を検出することが可能となる。
コントローラは、データを読み出すように要求されると、ページのオーバーヘッド内のタイムスタンプ値を比較することによって、同じLBAとページオフセット値とを有する新規のページデータと置換ページデータとの区別を容易に行う。次いで、データファイルの最新バージョンを読み出す必要性に応じて、特定された新たなページからのデータを原ページによって更新し、最新バージョンのデータファイルの中へ組み込む。
図9の個々のページに記憶されたデータの単一セクタの構造の一例を図10に示す。最大の部分はユーザデータ45である。ユーザデータから計算される誤り訂正符号(ECC)47もページに記憶される。LBNおよびページタグ(論理ページオフセット値)を記憶するフィールド41、タイムスタンプ43およびオプションとしてオーバーヘッドデータから計算されるECC50を含むオーバーヘッドデータ49もページに記憶される。ユーザデータECC47から分離しているオーバーヘッドデータをカバーするECC50を有することによって、ユーザデータからオーバーヘッド49を別々に読み出し、ページに記憶されているデータのすべてを転送する必要なく、オーバーヘッド49を有効なものとして評価することも可能である。しかし、これとは別に、オーバーヘッドデータ49の別個の読み出しが頻繁なイベントでなければ、単一ECCによってページ内のデータのすべてをカバーして、ページ内のECCの総ビット数を減らすように図ることも可能である。ECCを利用する代替例として代わりに別の周知の冗長性技法を用いること可能である。マルチバージョンについての同じデータページを追跡する技法の追加の説明が、前述した米国公開特許出願第2002−0099904号(特許文献20)に含まれている。
例えば、単一ホストコマンドによって更新中のページ数が個々のブロック内の総ページ数と比較して少ない場合、更新用のE1ブロックが利用される。1ブロックの十分に大きな比率のページが更新中のとき、図6に関連して説明した現行技術を代わりに用いるとさらに効率がよくなり、その場合、更新済みページと変更のないページとは、それらページの原ページの順序を保持した状態で新しいブロックへ直接書き込まれる。一度に更新中のブロックの比率および/または一度に更新中のブロックの絶対ページ数や、更新が行われている時点におけるおそらくメモリの動作の別の要因に応じて、一方の処理か、或いは他方の処理がコントローラにより選択される。このような別の1つの要因は、E2ブロックとして指定することができる新規ブロック13の中にページを統合するのに不都合なものとなる場合があり、この場合、更新済みデータはブロックE1に一時的に記憶される。
2つの更新技法を呼び出す判定基準として役立つ最適比率または最適な更新ページ数は、異なる方法で構成および/または動作されるメモリシステム間で異なる数にすることが可能である。しかし、2つの更新技法の呼出しを実現するには固定した基準を設けるのが最も好便である。例えば、ブロック内の更新中のページ数が総ページ数の50パーセント未満であるが、少なくとも1ページが更新中である場合、図9の新規の技法が利用される。この比率が50パーセント以上であるが、少なくとも1ページが更新中でない場合には、図6の現行技術、或いは同様の技術が利用される。判定用数値は、例えばシステムによっては75%のような高い比率としてもよいし、25%のような低い比率としてもよい。この判定用数値の選択基準は、例えば、(プログラミング動作速度のような)メモリシステムの性能の最適化基準であってもよい。この数値はシステムの最適化を行うために製品構成中に変更することができるようなシステムパラメータとして記憶することが可能である。ガーベッジコレクション活動を含む最新のホスト動作の履歴に基づく判定用数値の更新と最適化とを行うためにコントローラ操作の中にアルゴリズムを含むようにすることも可能である。
ひとたびE1ブロックへ向けて着信データを送る決定がコントローラにより行われると、1以上のページがE1ブロックの中へ書き込まれた後、プログラミング動作の性質が検出されて、E2ブロックへ向けてより良好な送信を行うことも可能となる。1つの状況例として、シーケンシャルな書き込みコマンドがシーケンシャルなページ(一度に1ページまたは数ページ)を単一ブロックの中に同時に書き込んでいるのが発見される場合がある。コントローラは、このような数ページがE1ブロックの中へ書き込まれた後、この状況に気がつくことが可能であり、その後、E1ブロックへの更なる書き込みは停止され、残りのシーケンシャルな書き込みが代わりにE2ブロックへ向けて送信される。次いで、E1ブロックへすでに書き込まれたそれらページはE2ブロックへ転送される。処理手順によって、このプログラミング動作の結果、ブロックE1のページが統合される可能性は小さくなる。これとは別に、シーケンシャルなページ書き込みが消去済みのE1ブロックで始まる場合では、ブロックをE2ブロックへ変換することも可能である。
図11Aは、更新中のページ数が所定の識別レベルよりも高くなる場合のE2ブロック13(図8)の利用を示す。この状況では、E1ブロック10は使用されない。代わりに、原ブロック3に記憶されたページP2〜P11の更新済みデータセクタが、例としてE2ブロック13の同じページP1〜P11の中へ直接書き込まれ、このE2ブロックは事前に消去されたものである。変更されない原ブロック3の残りのページP1、P2およびP12〜P15のデータセクタは、次いで、同じページ番号でE2ブロック13の中へコピーされる。ほとんどの場合、2以上のデータセクタが1ページの中に記憶され、1ページ内のデータセクタのすべてを同時にコピーすることが望ましい。次のステップは、図11Bによって示されているように、原ブロック3を消去し、将来の動作のために新たなE2ブロックとして原ブロック3を指定するステップである。図7Aと図7Bとに例示するタイプの変換テーブルが更新されて、同じLBNに対応する変更済みのPBNが示される。
前述したように、1つのブロックのデータの更新済みページは、原ブロックの場合と同じオフセット値を含むE2ブロックのページに好ましくは記憶される。しかし、いくつかの用途に適した1つの代替例として、システムコントローラは、原ブロック内のページのオフセット値用と考えることなく、E2ブロックにページを記憶することができる。この代替例では、E2ブロックのページP0から始まる順序でこれらのページを記憶することができる。これは通常のブロックとは異なるE1ブロックの1つの特性を利用するものではあるが、まだ何らかのデータページの2以上のコピーをE2ブロックに記憶することができるものではない。この代替タイプのE2ブロックを使用するとき、データ統合はさらに複雑なものとなる可能性がある。というのは、これらの更新済みページを原ブロックの変更のないページと合成するために、E2ブロック内のページがE2ブロック内のページの原ブロックのページオフセット値を有する別のブロックのページの中へ間違った順序で転送されるからである。
E1ブロックとして機能するように取っておかれるシステム内のブロック数に限度を設けることができるようにするために、これらのブロックを効率良く利用して、小さな部分的なブロックの更新に対する予想される要求を満たすために利用可能な十分な数の消去されたE1ブロックページが存在するようにすることが望ましい。したがって、一次物理ブロックとE1ブロックとに記憶された論理ブロックのデータページの間欠的統合が行われる。これは、この論理ブロックに属している更新済みデータページのうちの少なくともいくつかのページをE1ブロックから除去し、それによってこれらのページを将来の利用のために利用可能にするものである。これらのページは単一物理ブロックの中へ統合される。
このような消去統合動作(ガーベッジコレクション)の一例として、図12A、12Bおよび12Cの時間的にシーケンシャルなブロック図を示す。これらの各図は、最上部の結線図は、図8のメモリアレイプレーンのブロック3のページの使用状況を表し、この使用状況は最初に(図12A)特定の論理ブロックのデータを記憶する一次ブロックとなる。ブロック3のページP7〜P10から得られるデータは更新されたものであるが、これらデータページはページP5〜P10の指定済みE1ブロック10に記憶されていたものである(図12Aの中央結線図)。残りのページP0〜P6およびP11〜P15のブロック3には有効なデータが含まれる。別のページP0〜P4のE1ブロック10には、図8のブロック3以外のブロックから得られる更新済みデータが含まれる。
消去統合動作時の第1のステップとして、E1ブロックのページのうちのいくつかを解放して使える状態にするために、ブロック10の4ページP5〜P8から得られるデータがコピーされて、指定されたE2ブロック13のページP7〜P10の中へ入れられる(図12Aの最下部の結線図)。ブロック13は以前に消去されるものである。次に、これらのデータは、データが更新される前にブロック3の中で当初有していたのと同じアドレス・オフセット値を有するブロック13のページに記憶される。次のステップは、有効データページP0〜P6とP11〜P15とをブロック3からコピーして、図12Bによって示されているように、E2ブロック13のページの中へ入れるステップとなる。この時、ブロック13は、更新中のブロック13のページP6〜P10内のデータと共に、原ブロック3から得られるすべてのデータページを単一物理ブロック13内に含む。次いで、ブロック3が消去され(図12B)、図8のメモリプレーン用の新たなE2ブロックとして指定される。これらのステップの多くを並行して同時に実行することも可能である。
E1ブロック10のページP5〜P8内のデータはもはや必要ではない(図12B)が、E1ブロックのページP0〜P4内のデータはまだ有効であり、別の物理ブロックの更新済みページデータとなる。次いで、このデータは、図12Cに示されているように、消去済みブロック3のページP0〜P4の中へコピーされる。次いで、ブロック3は、E1ブロックとしてコントローラにより再指定され、将来利用するために消去済みページP5〜P15を残して、前述した場合と同様に、更新済みデータのページを一時的に記憶する。次いで、ブロック10は消去され、コントローラによりE2ブロックとして指定される。置換済みデータページは処理の一部としてすべて削除されている。
図12A〜12Cと関連して前述した消去統合動作を開始するために、メモリシステムコントローラにより利用可能な複数のトリガイベントが存在する。最も普通のイベントとして、その時点でE1ブロックとして指定されたブロックが、更新済みデータで満たされたブロックのページの或る一定比率を有する場合のイベントが挙げられる。或る一定数の消去済みページは、E1ブロックで利用可能となるように保つ必要があり、この一定数は、更新値用の個々のE1ブロックを利用するブロック数などの複数の要因に応じて決められる。E1ブロック内の最も旧いデータページを含むブロックを統合することがE1ブロックにとって最も有益である。次いで、単一の消去統合動作によって、E1ブロックから最大数の不要ページが消去される。ブロックE1内のこのようなブロックのデータページのデータ内の誤り検出などの、統合対象ブロックE1内にデータページを有するブロックの選択に用いることも可能な別の基準が存在する。この基準は、ブロックE1ページ内の何らかの後続する誤りの発生がそのECCを無力化する見込みを最も小さくするものである。
図12A〜12Cの消去統合をトリガするために利用可能な別のイベントとして、メモリの性能が指定されたE1ブロック内の不十分な空間に起因して低下する場合のイベントが考えられる。1つのブロックの一定数のページが更新中で、消去済みページがE1ブロックの中にほとんど存在しないために、更新中のページを記憶することができない場合、コントローラは、更新中の原データページと同じページオフセット値と共に更新済みページをE2ブロック、または別の消去済みブロックの中へ書き込むことが望ましい。この状況は、たとえ更新中のページ数が、通常E1ブロックの利用を必要とする所定数よりも少なくなった場合であっても必然的に生じる状況である。次いで、有効なページデータまたは旧くないデータページが原ブロックからコピーされ、同じE2、または別の消去済みブロックの中へ入れられ、論理ブロック用のすべての最新のデータが合成されて単一物理ブロックに変えられる。この状況は、指定したE1ブロックを利用することができる場合よりも多くの時間を要することになり、したがってシステムの性能に悪い影響を与える。したがって、この状況が所定回数生じたことが検出された後、さらに多くのページを解放してE1ブロックで使える状態にするために、図12A〜12Cの統合動作が実行される。そうしないと、E1ブロックを備え、このブロックを利用する十分な利点が失われる。所定回数を予め設定したパラメータとしてもよいし、或いはメモリコントローラによって所定回数を適宜最適化するようにしてもよい。
また、E1ブロック内の更新済みデータページを有するデータブロックをリフレッシュする必要があるとき、このデータリフレッシュがメモリ動作の一部であれば、そのリフレッシュステップの中に図12A〜12Cの消去統合動作を含むようにすることができる。別のオーバーヘッド動作の一部として、このデータリフレッシュを同様に含むことが可能である。というのは、この時点でデータリフレッシュを行うことは効率のよいものになる場合が多いからである。さらに、別のトリガイベントとして、コントローラが別様に占有されていなかったり、統合動作を実行することができるほど十分な時間の間、占有することができるようにスケジュールされていなかったりした場合、消去統合を行うことが可能である。前述した要因のうちの任意の1つの要因、複数の要因、またはすべての要因を用いて、図12A〜12Cの消去統合動作を開始することが可能となる。さらに、単一ブロックに対してデータページを統合するための消去統合動作について説明したが、この処理は、E1ブロックにおいてさらに多くのページを解放して使える状態にするために、2以上のブロックに対して繰り返し行うことが可能である。また、メタブロックの統合を利用してこれらのデータページの統合を行うことが可能である。この統合は、E1ブロックに関係するマルチ消去統合動作を実行することができるほど十分な時間の間、別の機能を実行するためにコントローラを必要としなければ、好便に行われる。
図12A〜12Cと関連して説明した統合動作は、E1ブロックで利用可能な消去済みページを利用する処理である。というのは、1つの時点で更新中のページ数が、E1ブロックでは、ページ数の1/2のような現在のページ数よりも少ない数ページとなり、ブロックE1の利用基準のうちの1つの基準をセットすることも可能となるからである。ページ数よりも多いページ数が更新されている場合、図11A〜11Bと関連して前述したように、更新済みデータがE2ブロックの中へ直接書き込まれる。1つの時点で更新中の論理ブロックのページ数が所定数を上回り、ブロックE1を利用する別の確定基準が存在せず、しかも、この論理ブロックの1以上の更新済みページがE1ブロックの中へ事前に書き込まれている場合には、別の統合動作が行われる。この場合、更新済みブロックはE2ブロックの中へ直接書き込まれる。この状況を処理するメモリシステムコントローラの動作について図13A〜13Cと関連して説明する。
図13Aの例では、ブロック3(最上部の結線図)に記憶されているデータのページP2〜P11が1つの時点で更新中である。データページP12〜P13は事前に更新され、更新済みデータはページP5〜P6の図8のメモリプレーンの指定されたE1ブロック10(図13Aの中央の結線図)に記憶される。データページP2〜P11を更新する際の第1のステップとして、更新済みデータは、指定されたE2ブロック13(図13Aの最下部の結線図)の対応するページP2〜P11の中へ直接書き込まれる。事前に更新済みのページP12〜P13も、E1ブロックのページP5〜P6内のデータの位置からE2ブロックのページP12〜P13の中へコピーされる。
図13Bに例示する次のステップは、ブロック3のページP1〜P2およびP14〜P15内の変更のないデータをブロック13の対応するページ位置の中へコピーさせるステップである。この時、ブロック13は最新の更新済みデータのページをすべて記憶する。次いで、ブロック3は消去され、E2ブロックとして指定される。ブロック13以外の或るブロックから得られる残りの更新済みデータが、E1ブロック10の有効データページP1〜P5に記憶され、次いで、図13Cによって示されているように、データは、ブロック3の対応するページの中へコピーされる。次いで、ブロック3はE1ブロックとして指定される。次いで、ブロック10は消去され、E2ブロックの利用に必要な将来の何らかの処理を行うためにブロック10はE2ブロックになる。旧い、置換済みのデータページのすべては処理の際に削除される。
図13A〜13Cによって示されている消去統合動作は、E2ブロックへの書き込み中の更新済みデータページに応じて開始されることが望ましい(図13A)。メモリプレーン内のE2ブロックを直ちに解放して将来利用することができる状態にするために、応答を即時に行うことができ、或いはこれとは別に、或る遅延時間後に統合を開始することもできる。更新済みデータページをE2ブロックに書き込んだ後、1回または数回の別のプログラミングサイクルを実行することができる遅延時間によって、統合動作時に含まれる、最初の物理ブロック3に記憶されていた論理ブロックのデータに対して任意の別の更新を行うことが可能になる。これによって同じデータブロックに対して近接して連続的にこのような統合を2回実施する手間が省ける。
図12A〜12Cと、図13A〜13Cとに関連して前述したように、E1ブロックに関係する消去統合動作は、パーソナルコンピュータ、コンピュータサーバ、携帯情報端末、サウンドとビデオの処理装置などを備えたメモリシステムに対する一般的な応用を含むものである。これらの応用例の多くでは、頻繁な間隔でメモリの1個、または数個のブロックの1ページ、或いはほんの数ページのデータページが一度に更新される。一例として、多くのコンピュータシステムの普通に見られる構成要素であるファイルアロケーションテーブル(FAT)の保持がある。FATはメモリの単一プレーンの唯一のブロック、または数ブロックに記憶されている場合が多い。個々のデータがホストによってメモリへ書き込まれる度に、そして、それ以外に、個々の消去統合動作の一部として、コントローラにより指定される物理メモリブロックへのホスト指定論理ブロックの記憶位置の割当てが変更されるときはいつでも、FATテーブルの一部を記憶している少なくとも1ページの更新が行われる。頻繁なデータ更新の別の例として、メモリ処理の一部として保持されるオーバーヘッドデータに関連する例がある。例えば、個々のメモリブロックの使用状況や特性に関する或る情報が別のブロック内に一緒に保持されていることがある。このデータはメモリが使用されるとき、ほとんど連続的に更新される。
かなりの量のデータをこのように頻繁に更新するシステムの場合、1回に少量の更新を行うことによって、これらの頻繁な更新を受けるメモリ領域に対して2以上のE1ブロックを指定することによりメモリシステムの性能が改善される。主として更新されるデータ、またはこのような頻繁に更新されるデータのみを記憶する記憶先のLBAの範囲に対応して、ホストが、専らこのブロックのみに関して使用する専用ブロックとしてE1ブロック、すなわちメタブロックに指定することが可能である。追加のブロック、または専用E1(dE1)ブロックとして機能するために、結果として生じた改善された性能が、一般的なサービスから1以上の追加のブロックを取り除かなければならないコストに見合うだけの価値があれば、この指定は実行される。この状況は、FATテーブル、ブロックオーバーヘッドデータなどを記憶するブロックの場合に頻繁に生じる場合である。追加のE1ブロック、または専用E1ブロックの指定を行った結果、図12A〜12Cの消去統合動作が実行されなければならない必要頻度を極めて大幅に減らすことが可能となる。
図14は、1つの時点における1つのメモリプレーン内でのブロックの記憶位置の割当てを示し、この割当ては図8の割当てとは異なるものである。メモリプレーン用のE1ブロック全体として、メモリコントローラが指定するブロック10に加えて、ブロック2はブロック1のみから行われる更新用dE1ブロックとして指定される。ブロック1に対応づけられたLBNのページデータが更新され、かつブロックE1への書き込み条件が存在する(ブロックE2への書き込み条件ではなく)ときはいつでも、更新済みデータページはdE1ブロック2の利用可能な消去済みページの中へ書き込まれる。更新済みデータを受信するdE1ブロック2の範囲内のページは、このようなシーケンスにおいてその個々のブロックの中へのページの書き込みを要求するタイプのメモリの中で次の順序のページとなる。同様に、ブロック4は、ブロック3に対応づけられたLBNの更新データを受信する専用dE1ブロックとして指定され、ブロック6は、ブロック5のLBN専用のdE1ブロックである。プレーン内での3つの専用E1ブロックの利用例が、説明されている原理の唯一の具体例である。いくつかの用途の中に唯一のdE1ブロックを示すことも可能であり、或いはプレーン内のブロックの1/2までをdE1ブロックとして指定することも可能である。ブロック13は、図14のプレーンの例のためのE2ブロックとして指定されている。
専用E1ブロックの継続的使用によって、E1ブロックが最終的に満たされることは言うまでもない。E1ブロックが満たされる前に、E1ブロックを専用ブロックとするデータブロックの或るページを複数回書き換えることが可能である。個々のページは、この例では、E1ブロックの利用可能な次の消去済みページの中へ書き込まれ、さらに、原データブロック内のそのページオフセット値は、ブロック用のオーバーヘッドデータの一部として記憶される。いずれかの専用E1ブロックが満たされるちょっと前か、或いはいずれかの専用E1ブロックが満たされた時点で、そのE1ブロックといずれかの変更のないデータページとから得られる最新のページを含むようにデータブロックの書き換えを行う統合動作が行われる。この一例が図15Aと15Bとに示されている。
図15Aに、図14のブロック3とそのE1ブロック4とから得られるデータページの、E2ブロック13内への統合が示されている。この例では、ページP0〜P1、P5〜P9、およびP13〜P14のデータが、変更のないデータである。この例では、残りのページP2〜P4、およびP10〜P12並びにP15は、それぞれのページP7、P2、P11、P13、P10、P8、およびP12でdE1ブロック4に記憶されている最新の更新済みページによって更新されている。この実施例では、統合処理がすでに始まっている。というのは、dE1ブロック4ページのすべてが最大の2ページP14とP15を除いてプログラムされているからである。dE1ブロックはほとんど満たされている。原データブロック3内の変更のないページ、およびdE1ブロック4内の最新の更新済みページは、次いで、プログラミング処理によって組み立てられ、E2ブロック13の中へ入れられる。個々のこのようなページはページの物理オフセット値を有するE2ブロックページの中へ書き込まれる。すなわち、更新済みページはdE1ブロックの中にこれらのページが更新された順序で一時的に記憶されるが、ページのそれぞれの物理ページにおける記憶位置ではなく、原データブロック3から得られるページの最新の更新値が、これらページのアドレスのオフセット値に対応する記憶位置を有するE2ブロック13のページの中へコピーされる。次いで、図15Bに示されているように、ブロック3と4とを消去し、一方のブロックを新しいデータブロック13専用のE1ブロックとして指定し、他方のブロックをメモリプレーン用のE2ブロックとする。
しかし、E2ブロック13内のデータページは更新済みページ、またはコピー済みページと同じアドレスのオフセット値を持つことを要求されない。データページが同じ相対的順序でそのまま残っていることで十分である。例えば、最も左側の物理ページの代わりに左側から3番目の物理ページ内の第1のデータページP0を図15AのE2ブロック13に記憶することも可能である。残りのデータページはブロック13内のデータページの論理アドレスの順に配置され、E2ブロック13の最も左側の2ページに記憶された最後のページP14とP15とによってラップアラウンドが行われる。このようなページシフトを利用するとき、ユーザデータオーバーヘッドのページタグ41(図10)を用いて、E2ブロック内のデータページのオフセット値を追跡することが可能となる。
図14のメモリプレーン内の追加のE1ブロックの指定と利用とをプログラムして、メモリシステムコントローラ用ファームウェアの中へ入れ、複数のLBNであり、しかもプレーンの中へ対応づけられたLBNのすべてよりも少数のLBNを専用の追加のE1ブロックに動作させることが望ましい場合、ファームウェアが実行するようにすることも可能である。個々の関連するE1ブロックを持つように選ばれたLBNは、ホストがそのデータを頻繁に更新すると予想される更新先のLBNである。これとは別に、コントローラ用ファームウェアは、メモリが実際に使用される方法に応じて、個々の唯一の別のLBNと関連づけられたdE1ブロックを動的に指定することができる。例えば、ホストによって、ホストコマンド当たり1つのセクタだけ、或いは通常よりも少数のセクタ数でデータがLBNへ書き込まれているとき、LBNをLBN自身のdE1ブロックに割り当てるようにすることも可能である。さらに、データが連続して上書きされるLBNにdE1ブロックを割り当てることも可能である。dE1ブロックの利用によって、プレーンブロックE1全体の中からデータページの頻繁な統合が減少する。
dE1ブロックに対する必要性が存在する場合を示す別の例として、特定のデータブロックによる図12A〜12Cの統合処理を他のブロックによる利用よりも高度に利用することによって、頻繁に更新されるデータのLBNを利用して、専用E1ブロックとして指定すべきプレーンの未使用ブロックを動作可能にする例がある。性能を最適化するために、ブロックdE1を頻繁に統合が行われる専用ブロックとすることが望ましい。dE1ブロックとしてE1ブロックを所定のLBN専用ブロックにすることが望ましい時点をコントローラ用ファームウェアが決定する処理の一例として、(1)E1ブロックへの書き込みを引き起こす、所定ブロックへの書き込み用ホストコマンドの数と、(2)所定ブロックへの書き込み動作の総数、および/または(3)E1ブロックへ書き込まれる同じ論理アドレスを持つセクタの数とのカウント値を保持する例がある。これらのカウント値の比率が所定値を上回れば、専用のブロックdE1が確定される。次いで、図15Aと図15Bとの統合動作によって、このようなデータを含む個々の論理ブロックと関連づけられた状態にE1ブロックが保たれる。
dE1ブロックを動的に確定する別の例として、メモリコントローラをプログラムして、更新頻度の高いタイプのデータを更新頻度の低いタイプのデータと区別するように、適当なブロックへ向けてこのようなデータを送ることが可能である。例えば、メモリコントローラは、それほど頻繁には更新されないユーザデータに特有の単一コマンドを持つマルチデータセクタを送信するホストと比べて、頻繁に更新されるFATテーブル用エントリに特有の個々のコマンドを持つ単一セクタデータがホストによって送信される時点を認識することができる。単一データセクタが受信されると、これらのデータセクタはdE1ブロックを専用ブロックとする物理ブロックに対応づけられる。メモリシステムがマルチデータセクタを単位として受信すると、マルチデータセクタは別のデータブロックとE1ブロックを共用するデータブロックへ送信される。この非専用E1ブロックにはマルチLBNから得られるデータが含まれている。
本発明の技法は、1プレーン、或いは論理的に分割してゾーンに変えられるマルチプレーンを有するメモリ構成に適用することも可能であるが、このゾーンの利用は本発明の実施に必要のないものである。マルチプレーンの場合、個々のゾーンは、プレーンの両端にわたって延在する。メタブロックは利用してもよいし、利用しなくてもよい。マルチプレーンの両端にわたる論理ゾーンを定義するメモリシステムの一例を概略的に図16に示す。4つのプレーン0〜3が示されているが、メモリシステムは、これよりも少数のプレーン、またはこれ以上のプレーンを含むものであってもよい。個々のプレーンは多数のブロックを含むが、これらのブロックの一部は図16では矩形によって示されている。個々のブロックは、別のメモリシステムに関連して前述したように、ブロック61のうちの1つのブロック用のデータページ数を有している。この例での違いとして、プレーンがさらに別のゾーンに分割され、その場合個々のゾーンには2以上の各プレーンから得られる所定ブロック数が含まれるという点が挙げられる。例えば、図16を参照すると、ゾーン0はプレーン0〜4の各々から得られるブロック数を有し、ゾーン1は、プレーンの各々から得られる別のグループのブロックを有するなどである。1つのゾーンの範囲内の個々のプレーン内のブロックは通常、同じ隣接する1セットの物理ブロックアドレスを占有するが、これは必要なことではない。ホストの論理アドレスの別個の範囲が個々のゾーンの中へ対応づけられる。
図16のメモリシステムの動作単位はメタブロックにすることが望ましい。この例では、メタブロックには、メタブロックの形成のために論理的に一体に接続された個々のプレーンから得られる1つのブロックが含まれる。この場合では、個々のメタブロックは単一ゾーン内に形成される。1つのメタブロックが図16のゾーン1内に示され、メタブロックは、一例としてブロック63、64、65、66から形成されている。メタブロックの特徴的動作には、メタブロック内でのすべてのブロックの同時消去、同時プログラミング、およびメタブロックの個々のブロックからの1以上のページの読み出しが含まれる。この高度な並行性によって、メモリシステムの性能は大幅に上昇する。システム内の任意の都合のよい記憶位置に固定された、或いは動的にリンクされたリスト、アレイテーブルなどとして、種々のメタブロック内に個々のブロックの識別子を保持することが可能である。通常、個々のページのユーザデータと共に記憶されたオーバーヘッドデータには、アドレス(プレーンを特定することができるほど十分な論理アドレスおよび/または物理アドレス)と、ゾーンと、ページが存在するブロックおよびこのブロック内のページのオフセット値とが含まれる。次いで、ページのオーバーヘッドデータのこれらのアドレスフィールドを読み出すコントローラによって、アドレスマップがコントローラのメモリ内に形成される。このアドレスマップの形成は通常、メモリの一部を対象とするプログラミング動作、読み出し動作、または消去動作に先行して、メモリの一部に対して一度に行われる。ゾーンに分割されないシステムの場合、マルチプレーンの利用可能な物理アドレス空間全体を通じてずっと、ブロックから個々のメタブロックを形成することが可能である。
ゾーン内の別のブロック用のブロックE1とブロックE2として使用するために、個々のゾーン内の1以上のブロックの記憶位置の割当てを行うことができる。図16に示されている例では、ゾーン1は1つのブロックE1の中に設けられている。この場合、ゾーン1内のメタブロックのうちのいずれかのメタブロックへのデータの部分的なブロックの書き込みは、その書き込み動作がブロックE1の使用基準を満たす場合、ブロック69を対象とする書き込みとなる。通常、ゾーンのサイズに応じて2以上のブロックE1が個々のゾーンに必要となる。特に、プレーン0〜3の各々から得られるそれぞれの1ブロック、ブロックE1a、E1b、E1c、E1dによってゾーン1内でメタブロックが形成される図17に示されているように、E1機能用の1以上のメタブロックの記憶位置を個々のゾーン内に割り当てることができる。図16または図17の場合のいずれかでは、個々のゾーンに対する1以上のメタブロックE2の記憶位置が割り当てられる。これとは別に、単一ゾーン内にE1とE2ブロック機能をグループ化することによって、すべてのゾーンに対するE1とE2ブロック機能として機能するメタブロックのプールをシステム内のどこかに設けることができる。頻繁な書き込みを受ける別の単一メタブロック専用としてメタブロックE1を指定することも可能である。特に、これとは別に、図12と図13との統合のような単一ブロックE1に関連する前の説明をメタブロックE1に関して実現することが可能である。ブロック単位のサイズは基本的な処理を変更するものではない。E2用メタブロックの利用は通常、単一ブロックに対して行うことが望ましいが、E1用の単一ブロックの利用がメタブロックの効率を図るために望ましい場合もある。マルチゾーンアレイの単一ゾーン内でのメタブロックの利用に関わる説明は、アレイ全体が唯一のゾーンを含む場合にも当てはまることに留意されたい。
論理ブロックアドレスの個別の範囲内で更新済みデータページを受信する物理ブロックE1、dE1とE2の典型的な記憶位置の割当ての際に、2以上のオーバーラップしないセットの隣接する論理ブロックアドレスの各々と共に使用するために複数のこのようなブロックの記憶位置が割り当てられ、このような記憶位置の割当ては典型的に、システムがそのブロック、すなわちメタブロックを前述したゾーンの中へ編成させる場合に行われる。次いで、同じ規定が、それらの記憶位置が割り当てられたE1、dE1、およびE2ブロック、すなわちメタブロックを使用する場合と、方法とに関して、個々の論理ブロックアドレスに対して最も好便に適用される。
しかし、物理E1、dE1、およびE2ブロックのいずれか、或いはすべての使用は必ずしもこのような制約に従う必要はない。例えば、これらの特別のブロックが使用される場合と、方法とについての規定は、別の範囲と比較して1つの論理ブロックアドレスの範囲によって異なる場合もある。これによって、ホストの典型的な様々な使用状況パターンや、ホストの論理アドレスの様々な範囲に記憶されたデータタイプの認識が可能となる。さらに、特定の1セットのE1、dE1、およびE2ブロックの専用論理ブロックアドレスの範囲が隣接している必要は全くなくなる。異なる個々のオーバーラップしている範囲専用のE1、dE1、E2ブロックを使用する規定を用いて別の範囲とオーバーラップするように1つの論理ブロックアドレスの範囲を作成することさえ可能である。この後者の場合では、オーバーラップしている範囲内の論理ブロックアドレスを持つデータのホストによるプログラミングは、2以上のセットの物理E1、dE1、またはE2ブロックのうちの1つのブロックに記憶するのに適格であり、ホスト操作によって満たされる1セットの規定によって左右される。好ましくは、生じる可能性のあるセットのE1、dE1、E2ブロックのうちの唯一のブロックにおける記憶用としてオーバーラップしている論理アドレス範囲における任意の1つのプログラミング動作が適格となるように、これらの規定を設定することが望ましい。
図18は、物理E1、dE1、およびE2ブロックを論理ブロックアドレスへ割り当てる一例を示す。図に示されているシーケンシャルな論理アドレスを持つLBN{x}からLBN{x+3}までの4つの論理ブロックの間で、LBN{x}、LNB{x+1}、LBN{x+2}がE1ブロックの使用基準を満たす更新済みデータを記憶するための共通のE1ブロックを共有しているのに対して、論理ブロックは、E2ブロックの使用基準を満たす更新済みデータを記憶する別個のE2ブロックの中へそれぞれ対応づけられている。専用のE1とE2ブロックを使用するように指定された論理ブロックアドレスの範囲は、若干オーバーラップしたり、或いは互いに独占的であったりする同じ範囲であったり、異なる範囲であったりするものであってもよい。その場合、メモリをホストの使用状況に適合させることも可能である。例えば、頻繁な単一データセクタの更新を受ける論理アドレス範囲をE1ブロック、またはdE1ブロックに対応づけることはできるが、E2ブロックに対応づけることはできない。というのは、一回で十分なデータ更新を行って、E2ブロックを有効なものにするようなことは起りそうなことではないからである。
E2ブロックに記憶されたデータは、一部分がさらに更新されると、同じデータ論理アドレス用として指定されたE1ブロックに記憶される。もちろん、この論理アドレスのデータをE2ブロック内にまず記憶する必要なく、E2ブロック用として指定された論理アドレスを有する更新済みデータをE1ブロックに記憶することができることは言うまでもない。更新済みデータの記憶用E1ブロック、またはE2ブロックの選択は、前述した基準によって決められる。
図19のフローチャートは、メモリシステムの性能を最適化するために、ホスト処理のパターンに動的に応答するように前述したブロックE1、dE1、E2を利用するフラッシュメモリシステム動作の例を示す。メモリシステムが、接続先のホストシステムから書き込みコマンドを受信する度に、101で示されているように、処理が開始する。書き込みコマンドには、書き込むべきデータセクタの数を示すLBNデータなどが含まれている。LBNは、プログラムされた特定のメモリアレイの構造および動作に応じて、メモリプレーンのブロックの中へ、またはマルチプレーンの両端にわたって延在するメタブロックの中へデータの対応づけを行わせるものである。第1のステップ103は、受信したLBNと関連づけられた現行のE2ブロック、すなわちメタブロックの中に、プログラム中のデータセクタ数を書き込むだけの余地があるかどうかのチェックを行うステップである。その余地があれば、次のステップ105によって、現在の書き込み動作のデータセクタがシーケンシャルなアドレスを持つ前回の書き込み処理の続きであるかどうかが判定される。そうであれば、ステップ107で示されているように、データは現行のE2ブロックの中へプログラムされる。
しかし、ステップ105で、新たな書き込みが前回のシーケンスのセクタの続きであるセクタの書き込みではないと判定された場合、1または数個のセクタなどの少数のセクタが論理セクタアドレスの間隙に含まれているかどうかがステップ109で判定される。これらの変更のないデータセクタは、或る予めセットされたセクタ数よりも少なければ、ステップ111で示されているにように、E2ブロックの中へ順にコピーされ、新規のデータセクタがステップ107毎にE2ブロックへ書き込まれる。数個のセクタの変更のないデータを現行のE2ブロックの中へコピーすることは、セクタの間隙の数が少なくなるため、前の書き込みから全く切り離してその後の書き込み処理を行うよりは最適なコピーになる可能性がある。
しかし、論理アドレスの間隙が予めセットされたセクタ数よりも大きなものである場合、保留中の書き込み動作を含むLBNの範囲用の新たなE2ブロックを形成することが望ましいかどうかについて次のステップ113で考慮される。考慮された統計値には、記憶処理や最近の書き込み処理の分析結果が含まれる場合もあれば、現在の書き込み動作のセクタ数の方が固定値の数値、または動的に決定されたしきい値の数値よりも大きいかどうかを判定するような単純なものもある。例えば、しきい値の数値は、ブロックに記憶されたデータセクタ数よりも少ないけれども、ブロックの容量の1/2、または3/4を越える場合もある。定義された統計値から新たなE2ブロックの形成が決定された場合、これはステップ115で行われ、次いで、保留中の書き込みのデータがステップ107で新たなE2ブロックの中へプログラムされる。図20のフローチャートを参照しながら、新たなE2ブロックに対して記憶位置の割当てを行う処理について以下説明する。
この説明は、保留中の書き込み動作のデータセクタ数のための余地が現行のE2ブロックの中に存在するというステップ103で行われる判定に基づくものである。これに対して、十分な余地が存在しない場合には、処理は、新たなE2ブロックを形成すべきかどうかを判定するステップ113へジャンプする。
保留中の書き込み処理のデータ用として新たなE2ブロックを形成すべきではないとステップ113で判定された場合、その理由として、セクタ数がステップ113で用いられる予めセットされたしきい値の数値よりも小さい(または等しい)ことが予想され、したがってE1ブロックへのさらに適切な書き込みを行うことが可能であることが考えられる。したがって、次のステップ117では最新のデータセクタが存在するLBAの範囲用として現行のdE1ブロックが存在するかどうかの判定が行われる。最新のデータセクタが存在すれば、ステップ119でこれらのデータセクタはそのdE1ブロックの中へプログラムされる。しかし、最新のデータセクタが存在しなければ、新たなdE1ブロックを形成すべきかどうかがステップ121で判定される。この判定は、論理的なものであれ、物理的なものであれ、記憶された処理の分析結果に基づいて行うことも可能であり、或いは瞬時動作に基づいて判定を行うことも可能である。考慮される統計値には、ガーベッジコレクション動作の発生件数、形成されたE1ブロックの数、または所定のLBA範囲内のシーケンシャルでない単一セクタ書き込み動作の回数を含むことができる。或るブロック内のデータの更新回数と頻度がシステム内の大半のブロックの一般的な更新回数と頻度に比べてずっと大きなものである場合、dE1ブロックがその或るブロック専用となる。その結果として、dE1の記憶位置の割当てを行う場合、この割当ては図20のフローチャートに従ってステップ123で行われる。
しかし、現行のdE1ブロックの中に余地が存在しないため、別のブロックの記憶位置の割当てを行わない旨の決定が行われた場合、保留中の書き込み動作のLBAと関連づけられた現行のE1ブロック内の余地がステップ125でサーチされる。前述したように、個々のプレーン内に1つのE1ブロックを指定するようにして、E1ブロックの管理をさらに容易にするために、E1ブロックをLBAのある特定範囲のデータセクタの記憶に個々に限定することも可能である。或いは、E1ブロックがアレイ内の任意の場所から得られるLBAと共にデータの記憶を行うことも可能である。データ用の十分な空間が存在すれば、次のステップ127で、そのデータはデータのLBAと関連づけられたE1ブロックの中へ書き込まれる。
一方、データのLBAと関連づけられたE1ブロックに余地がなければ、ステップ129によって示されているように、別のE1ブロック内で空間がサーチされる。このような空間が存在すれば、最新データのLBAを有するために別のE1ブロックによって処理されたLBAの範囲を拡大するかどうかに関する判定が行われる。ホストの使用状況パターンに応じて、システム内の複数のE1ブロック、またはすべてのE1ブロックのうちのいずれかの中の任意のLBAと共にデータを記憶するか、或いは個々のE1ブロックをLBAの設定範囲に厳密に限定するかのいずれかを行うのが好適であると考えられる。別のE1ブロックへデータを書き込む決定が行われた場合、これはステップ127で行われる。これに対して、別のE1ブロックへのデータの書き込みが決定されなかった場合、ステップ131毎に新たなE1ブロックの記憶位置が割り当てられ、ステップ127でデータはE1ブロックの中へ書き込まれる。
ステップ115、123、131のうちのいずれかのステップで新しいブロックの記憶位置を割り当てるルーチンが図20のフローチャートによって示されている。最初のステップ133で、消去された未使用ブロックのプールでメモリブロックが利用可能であると判定された場合、このようなブロックが、ステップ135で、E2、dE1、またはE1ブロックとなるように割り当てられ、図19のそれぞれのステップ115、123、または131のブロックに応じて実行される。これに対して、このようなブロックが利用可能でない場合、現行のE1、dE1、またはE2ブロックの記憶位置の割当てが解除され、新たな役割の再割当てが行われる。図20の残りのステップによって、この目的のために、E1、dE1、またはE2ブロックの記憶位置の割当てが解除されたかどうかが判定される。この例で適用された原理は、使用頻度が最も低く、有用性が最も低いブロックの記憶位置の割当てを解除するものである。
新たなE1ブロックが形成された場合、図19の処理がステップ131にあるとき、図20のステップ139で、最大数のE1ブロックがすでに存在するかどうかの判定が行われる。この数はセットされたものであってもよいし、或いは3つのタイプのブロックすべての使用状況を好適に最適化するように変化するものであってもよい。指定されたE1、dE1、E2ブロックの総数は、その最大の論理アドレス空間に応えるのに必要な数以上の、システムにおいて提供される割増しのブロック数によって一般に限定される。最大数のE1ブロックが形成されていると判定された場合、次のステップ141はE1ブロックの記憶位置の割当てを解除し、ステップ135でこのブロックは新たなE1ブロックとして指定される。これに対して、最大数のE1ブロックが形成されていないとステップ139で判定された場合、後のステップで、新たなE1ブロック用としてdE1ブロックか、或いはE2ブロックかの記憶位置の割当てを解除するかどうかの判定が行われる。新たなE1ブロックはLBAの所定の範囲と共に使用するように限定することも可能であるし、或いはメモリアレイ全体をカバーするようにすることも可能である。
ステップ143によって判定されたように、E1ブロックの代わりに新たなdE1ブロックが形成されている場合(図19のステップ123)、ステップ145で解決すべき問題としてdE1ブロックの最大許容数がすでに存在するかどうかという問題がある。dE1ブロックの最大許容数がすでに存在すれば、ステップ135で、dE1ブロックのうちの1つの記憶位置の割当てがステップ147で解除され、新たなdE1ブロックとして割り当てられる。dE1ブロックの最大許容数が存在しなければ、ステップ149に達し、使用状況パターン統計を利用して現行のdE1ブロックの記憶位置の割当てを解除すべきかどうかの判定が行われる。統計結果は、現行のdE1ブロックが陳腐なものであるかどうかを示す測定値を含むものであってもよい。
新たなdE1と新たなE1ブロックのいずれも形成されていなかった場合、ステップ143からもやはりステップ149に達し、最大数のE1ブロックが形成されていなかった場合、ステップ139からステップ149に達する。dE1ブロックの記憶位置の割当てを解除することがステップ149で判定された場合、ステップ147でこの解除が行われ、形成されている新たなE1ブロック、またはdE1ブロックのうちの一方のブロックとしてブロックの再割当てがステップ135で行われる。しかし、現行のdE1ブロックの記憶位置の割当てが解除されなければ、ステップ151に達し、その場合、E2ブロックの記憶位置の割当てが解除され、そのブロックが新たなE1、またはdE1ブロックとして割り当てられるステップが後続する。ブロックは、dE1ブロックとして割り当てられる場合、別の単一物理ブロックのLBN範囲を上回るLBN範囲に割り当てることも可能である。
種々の例示の実施形態と関連して本発明について説明してきたが、本発明は添付の特許請求の範囲の最大の範囲内においてその権利が保護されるべきであることを理解されたい。
メモリセルアレイ、制御論理回路、およびデータレジスタとアドレスレジスタを備えた典型的な現行のフラッシュEEPROMメモリデバイスのブロック図である。 システムコントローラを備えた図1の複数のメモリデバイスを利用する構成を示す。 図1のメモリアレイの一例として2つのプレーンにおけるブロックの配置構成を概略的に例示する。 複数ページ0〜15を記憶する図3の1つのブロックの一例を示す。 図3および図4のブロックのページに記憶されるデータセクタの表示である。 マルチページ化ブロックのページのすべてよりも少ない数のページ内のデータを更新する現行の処理工程を示す。 図6の原ブロックと新しいブロック用の対応する論理ページと物理ページのアドレステーブルである。 図6の原ブロックと新しいブロック用の対応する論理ページと物理ページのアドレステーブルである。 図3のアレイの1つのプレーン内の統合ブロックE1とE2の指定の一例を示す。 別のブロックのページのうちの数ページの中でデータを更新するための図8の統合ブロックE1の利用の一例である。 図9のページに記憶されたデータセクタ内のデータフィールドの一例を示す。 図8のブロックE2を利用するが、ブロックE1は利用しない所定のデータブロックの更新済みデータページを統合するシーケンシャルな動作の一例を示す。 図8のブロックE2を利用するが、ブロックE1は利用しない所定のデータブロックの更新済みデータページを統合するシーケンシャルな動作の一例を示す。 図8のブロックE1とブロックE2の双方を利用する所定のデータブロックの更新済みデータページを統合するシーケンシャルな動作の一例を示す。 図8のブロックE1とブロックE2の双方を利用する所定のデータブロックの更新済みデータページを統合するシーケンシャルな動作の一例を示す。 図8のブロックE1とブロックE2の双方を利用する所定のデータブロックの更新済みデータページを統合するシーケンシャルな動作の一例を示す。 図8のブロックE1とE2の双方を利用する所定のブロックの数データページを更新するシーケンシャルな動作の別の例を示す。 図8のブロックE1とE2の双方を利用する所定のブロックの数データページを更新するシーケンシャルな動作の別の例を示す。 図8のブロックE1とE2の双方を利用する所定のブロックの数データページを更新するシーケンシャルな動作の別の例を示す。 図3のアレイの単位内の統合ブロックE1とE2の指定の別の例を示す。 図14の統合ブロックE1とE2の双方を利用する所定のブロックの数データページを更新するシーケンシャルな動作の一例を示す。 図14の統合ブロックE1とE2の双方を利用する所定のブロックの数データページを更新するシーケンシャルな動作の一例を示す。 メタブロックにデータを記憶するタイプのメモリ構成内のブロックE1とE2の利用を示す。 E1ブロックがメタブロックである図16のメモリ構成の変更例を示す。 1セットのE1、dE1(専用E1)、およびE2ブロック内への論理アドレスのマッピングの一例を示す。 安らぎブロックE1、dE1、およびE2を利用するホスト書き込みコマンドに応じて図1〜5のメモリシステム動作を示すフローチャートである。 E1、dE1、およびE2ブロックのうちのいずれかの記憶位置を割り当てるために図18の処理で行われるステップを示すフローチャートである。

Claims (18)

  1. 時消去が可能で、かつ所定数のホストデータ単位を個々に記憶するメモリセルブロックを有するタイプの再プログラム可能な不揮発性メモリシステムの中へデータをプログラムする方法であって
    シーケンシャルな論理アドレスを有する、ホストプログラミングコマンドによって指定された、複数のホストデータ単位が所定数に等しいか、或いは所定数より多い場合には、データを第1のブロックにプログラムし、シーケンシャルな論理アドレスを有する、ホストプログラミングコマンドによって指定された、複数のホストデータ単位が所定数より少ない場合には、データを第2のブロックにプログラムするように、シーケンシャルな論理アドレスを有する、ホストプログラミングコマンドによって指定された、複数のホストデータ単位に少なくとも部分的に対応して、2つの指定されたブロックのうちの一方のブロック内のデータをプログラムすることによって前記ホストプログラミングコマンドに応じるステップを有する方法。
  2. 同時消去が可能で、かつ所定数のホストデータ単位を個々に記憶するメモリセルブロックを有するタイプの不揮発性メモリシステムの中へデータを書き込む方法であって
    ホストコマンドに応じて、データをシーケンシャルな物理アドレスと共に指定された第1のブロックの中へ書き込むことによって、シーケンシャルでない論理アドレスを有するデータ単位を書き込むステップと、
    ホストコマンドに応じて、データを指定された第2のブロックの中へ書き込むことによって、所数に等しいか、或いは所定数より多いシーケンシャルな論理アドレスを有するデータ単位を書き込むステップと、
    を有する方法。
  3. 請求項2記載の方法において、
    前記データを指定された第1のブロックの中へ書き込むこと、所定数より少ないシーケンシャルな論理アドレスを有する指定された第のブロックの中へ複数のホストデータ単位を書き込むことを含む方法。
  4. 請求項2記載の方法において、
    前記不揮発性メモリセルがマルチサブアレイの中へ編成され、さらに前記メモリセルブロックが2以上の前記マルチサブアレイのメモリセルを含む方法。
  5. 同時消去が可能で、かつ指定されたページ番号の所定数のデータページを記憶する最小数のセルの複数のグループからなる1以上のブロックの形で編成されたメモリセルを有する不揮発性メモリにおいて、第1のプログラムされたグループからなるブロックの所定数のページより少ないページ数のデータを更新する方法であって
    前記第1のプログラムされたグループからなるブロックの所定数のページより少ないページ数の更新済みデータを受け取るために少なくとも第1と第2のブロックを指定するステップと、
    所定数のページより少ないページ数の、複数のシーケンシャルな論理アドレスを有する1以上のページのデータを前記指定された第1のブロックのページへ書き込むステップと
    定数のページに等しいか、或いは所定数のページより多いページ数の、複数のシーケンシャルな論理アドレスを有する複数のページのデータを前記指定された第2のブロックへ書き込むステップと、
    を有する方法。
  6. 請求項5記載の方法において、
    2のプログラムされたグループからなるブロックの所定数のページより少ないページ数のデータを更新することも含む方法が、
    定数のページより少ないページ数の、複数のシーケンシャルな論理アドレスを有する1以上のページのデータを前記指定された第1のブロックのページへ書き込むステップを有する方法。
  7. 請求項5記載の方法において、
    前記第1のプログラムされたグループからなるブロックの所定数のページより少ないページ数のデータを更新するレベルに応じて、前記指定された第1のブロックを、前記第1のプログラムされたグループからなるブロックのみのための更新データ受信専用ブロックにする方法。
  8. 同時消去が可能な最小数のセルのグループからなる1以上のブロックの形で編成されたメモリセルを有する不揮発性メモリであって、所定数のデータページをプログラムして、前記グループからなるブロックの個々のデータページに変える不揮発性メモリにおいて、所定のグループからなる1以上のブロックのページすべてより少ないページのデータを更新する方法であって
    前記データ更新に際して、所定数より少ない更新中のページ数を含む少なくとも1つの予め定義された条件が満たされているかどうかを判定するステップと、
    前記条件が満たされていると判定された場合には、その後、更新中の所グループからなるブロックのデータページのページ番号から独立に選択されたページ番号を有する第1の別のグループからなる1以上のブロックページの中へ更新済みデータページを書き込むステップと
    前記条件が満たされていないと判定された場合には、その後、第2の別のグループからなる1以上のブロックの相応に番号が付されたページの中へ更新済みデータページを書き込むステップと、
    を有する方法。
  9. 請求項8記載の方法において、
    前記条件が満たされていなかった場合には、更新中でない所グループからなるブロックのページから得られるデータを合成して、前記データを共通グループからなるブロックの別のページの更新済みデータを含む相応に番号が付されたページ内の前記グループからなるブロックのうちの1つの共通グループにする方法。
  10. 請求項8記載の方法において、
    定のブロックを含む複数の個々のグループからなるブロックの更新済みバージョンのページを記憶するために前記第1の別のグループからなるブロックを利用する方法。
  11. 請求項8記載の方法において、
    グループからなるブロックのみの更新済みバージョンのページを記憶するために前記第1の別のグループからなるブロックを利用する方法。
  12. 請求項8記載の方法において、
    更新されなかった所グループからなるブロックから得られるページと、所グループからなるブロックのページ番号の記憶位置に対応するページ番号の記憶位置で以前に消去されたグループからなるブロックの中へ入れられた更新済みバージョンの所グループからなるブロックのデータページである前記第1の別のグループからなるブロックから得られるページとの双方のページをコピーすることによってデータを統合するステップをさらに有する方法。
  13. 請求項12記載の方法において、
    前記所定グループからなるブロックのページすべてより少ないページ数のページにおいて、複数のデータ更新の発生後に間隔をおいて反復してデータ統合の発生が生じる方法。
  14. 請求項12記載の方法において、
    データ統合後、前記第1の別のグループからなるブロックからデータを消去するステップをさらに有する方法。
  15. 請求項8記載の方法において、
    前述した少なくとも1つのデータ書き込みパターンの存在に応じて、所グループからなるブロックのみの更新済みバージョンのページを記憶するために前記第1の別のグループからなるブロックを指定するステップをさらに有する方法。
  16. 請求項15記載の方法において、
    前記少なくとも1つのデータ書き込みパターンが、所グループからなるブロックの1以上のページへの反復書き込み動作を含む方法。
  17. 請求項15記載の方法において、
    前記少なくとも1つのデータ書き込みパターンが、書き込み動作の大部分の動作中に書き込まれるより少ないページ数の、1データページまたは数ページ分のデータページを反復して個々の書き込み動作中に書き込むことを含む方法。
  18. 請求項15記載の方法において、
    前記少なくとも1つのデータ書き込みパターンが、複数のグループからなるブロックのうちの別のブロックのオーバーヘッドデータを記憶するために所グループからなるブロックを指定することを含む方法。
JP2006547192A 2003-12-30 2004-12-15 大きな消去ブロックを有する不揮発性メモリシステムの管理 Expired - Fee Related JP4933267B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/749,831 US8504798B2 (en) 2003-12-30 2003-12-30 Management of non-volatile memory systems having large erase blocks
US10/749,831 2003-12-30
PCT/US2004/042644 WO2005066790A1 (en) 2003-12-30 2004-12-15 Management of non-volatile memory systems having large erase blocks

Publications (2)

Publication Number Publication Date
JP2007517319A JP2007517319A (ja) 2007-06-28
JP4933267B2 true JP4933267B2 (ja) 2012-05-16

Family

ID=34701110

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006547192A Expired - Fee Related JP4933267B2 (ja) 2003-12-30 2004-12-15 大きな消去ブロックを有する不揮発性メモリシステムの管理

Country Status (7)

Country Link
US (3) US8504798B2 (ja)
EP (1) EP1700219B1 (ja)
JP (1) JP4933267B2 (ja)
KR (1) KR101118507B1 (ja)
CN (1) CN1902599B (ja)
TW (1) TWI287191B (ja)
WO (1) WO2005066790A1 (ja)

Families Citing this family (194)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
TWI240861B (en) * 2002-01-11 2005-10-01 Integrated Circuit Solution In Data access method and architecture of flash memory
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
TWI232466B (en) * 2003-10-28 2005-05-11 Prolific Technology Inc Method for updating data of non-volatile memory
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US8607016B2 (en) * 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7877539B2 (en) * 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7558906B2 (en) 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
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
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
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
US20070084375A1 (en) * 2005-08-10 2007-04-19 Smith Kyle S High density cartridge and method for reloading
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
US7747927B2 (en) * 2005-11-22 2010-06-29 Sandisk Corporation Method for adapting a memory system to operate with a legacy host originally designed to operate with a different memory system
US7739472B2 (en) * 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
EP1952404B1 (en) * 2005-11-22 2010-05-12 SanDisk Corporation Method and memory system for legacy hosts
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US20070156998A1 (en) * 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US7769978B2 (en) * 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143566A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143561A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
US20070143378A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with adaptive file handling in a directly mapped file storage system
US7913003B2 (en) * 2006-02-24 2011-03-22 Intel Corporation Reclaim algorithm for fast edits in a nonvolatile file system
JP4898252B2 (ja) * 2006-03-15 2012-03-14 パナソニック株式会社 不揮発性記憶装置及びそのデータ管理方法
US7979624B2 (en) * 2006-03-31 2011-07-12 Intel Corporation Techniques to truncate data files in nonvolatile memory
JP2007280108A (ja) * 2006-04-07 2007-10-25 Sony Corp 記憶媒体制御装置、記憶媒体制御方法、プログラム
KR100784007B1 (ko) * 2006-10-31 2007-12-10 주식회사 하이닉스반도체 비휘발성 메모리 장치 및 그 소거 방법
US8151060B2 (en) 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US20080313364A1 (en) 2006-12-06 2008-12-18 David Flynn Apparatus, system, and method for remote direct memory access to a solid-state storage device
JP2008152464A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
KR100881669B1 (ko) * 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US8166267B2 (en) * 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
KR100885181B1 (ko) * 2007-02-06 2009-02-23 삼성전자주식회사 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
US7804718B2 (en) * 2007-03-07 2010-09-28 Mosaid Technologies Incorporated Partial block erase architecture for flash memory
US8275953B2 (en) * 2007-03-19 2012-09-25 Sandisk Technologies Inc. Methods for forcing an update block to remain sequential
US8341375B2 (en) * 2007-03-19 2012-12-25 Sandisk Technologies Inc. Methods for conversion of update blocks based on association with host file management data structures
US7904670B2 (en) * 2007-03-19 2011-03-08 Sandisk Corporation Methods for conversion of update blocks based on comparison with a threshold size
US20080307156A1 (en) * 2007-06-08 2008-12-11 Sinclair Alan W System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium
US8713283B2 (en) * 2007-06-08 2014-04-29 Sandisk Technologies Inc. Method of interfacing a host operating through a logical address space with a direct file storage medium
US8239639B2 (en) * 2007-06-08 2012-08-07 Sandisk Technologies Inc. Method and apparatus for providing data type and host file information to a mass storage system
US8566504B2 (en) * 2007-09-28 2013-10-22 Sandisk Technologies Inc. Dynamic metablocks
US8880483B2 (en) * 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US8621137B2 (en) * 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
JP4519923B2 (ja) * 2008-02-29 2010-08-04 株式会社東芝 メモリシステム
KR101684583B1 (ko) * 2008-09-03 2016-12-08 마벨 월드 트레이드 리미티드 다중-평면 플래시 메모리 내로의 데이터 프로그래밍
US8438325B2 (en) * 2008-10-09 2013-05-07 Cadence Design Systems, Inc. Method and apparatus for improving small write performance in a non-volatile memory
US9141475B2 (en) * 2008-11-23 2015-09-22 Sandisk Technologies Methods for tag-grouping of blocks in storage devices
US8688896B2 (en) * 2009-05-21 2014-04-01 Panasonic Corporation High speed writing mode in memory controller, nonvolatile storage device, accessing device, nonvolatile storage system, and method and program for writing data
CN102237130B (zh) * 2010-04-20 2014-01-29 深圳市江波龙电子有限公司 一种寻找多层单元闪存中最低有效位页的方法及系统
US8543757B2 (en) * 2010-06-23 2013-09-24 Sandisk Technologies Inc. Techniques of maintaining logical to physical mapping information in non-volatile memory systems
US8819503B2 (en) * 2010-07-02 2014-08-26 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
US8737141B2 (en) 2010-07-07 2014-05-27 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
US8737136B2 (en) 2010-07-09 2014-05-27 Stec, Inc. Apparatus and method for determining a read level of a memory cell based on cycle information
KR20120029239A (ko) * 2010-09-16 2012-03-26 삼성전자주식회사 Pram을 이용하는 데이터 기록 시스템 및 그 방법
CN103154875B (zh) 2010-09-24 2018-05-29 2236008安大略有限公司 便携式电子设备的告警显示
ES2900188T3 (es) 2010-09-24 2022-03-16 Huawei Tech Co Ltd Dispositivo electrónico portátil y método para controlar el mismo
CA2811253C (en) * 2010-09-24 2018-09-04 Research In Motion Limited Transitional view on a portable electronic device
CN102446071B (zh) * 2010-09-30 2014-10-08 环鸿科技股份有限公司 取得一存储器状态资讯的接取方法、电子装置及程序产品
TWI463495B (zh) * 2010-12-10 2014-12-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與儲存裝置
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8856470B2 (en) * 2011-01-25 2014-10-07 International Business Machines Corporation Data integrity protection in storage volumes
US9047955B2 (en) 2011-03-30 2015-06-02 Stec, Inc. Adjusting operating parameters for memory cells based on wordline address and cycle information
WO2012161933A1 (en) * 2011-05-24 2012-11-29 Marvell World Trade Ltd. Method for storage devices to achieve low write amplification with low over provision
US9465755B2 (en) 2011-07-18 2016-10-11 Hewlett Packard Enterprise Development Lp Security parameter zeroization
KR101824068B1 (ko) * 2011-07-28 2018-03-15 삼성전자주식회사 메모리 컨트롤러 구동방법, 및 메모리 컨트롤러를 포함하는 메모리 시스템, 메모리 카드 및 휴대용 전자장치
JP5697796B2 (ja) 2011-08-29 2015-04-08 株式会社日立製作所 電気的に書き換え可能な不揮発性半導体メモリを有する半導体記憶装置
US9069657B2 (en) 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
JP5907739B2 (ja) * 2012-01-26 2016-04-26 株式会社日立製作所 不揮発性記憶装置
US9195586B2 (en) 2012-02-23 2015-11-24 Hgst Technologies Santa Ana, Inc. Determining bias information for offsetting operating variations in memory cells based on wordline address
TWI456391B (zh) * 2012-03-14 2014-10-11 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN103324580B (zh) * 2012-03-23 2016-03-16 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
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
US9128822B2 (en) 2012-06-22 2015-09-08 Winbond Electronics Corporation On-chip bad block management for NAND flash memory
TWI486767B (zh) * 2012-06-22 2015-06-01 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
TWI479313B (zh) * 2012-07-11 2015-04-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN103577344B (zh) * 2012-07-20 2017-03-01 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US20150261461A1 (en) * 2012-08-28 2015-09-17 Sheng Li High performance persistent memory
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
KR20140056657A (ko) 2012-10-30 2014-05-12 삼성전자주식회사 메인 메모리를 구비한 컴퓨터 시스템 및 그것의 제어 방법
TWI501249B (zh) * 2012-11-14 2015-09-21 Winbond Electronics Corp 晶片上之反及閘快閃記憶體及其損壞區塊管理方法
CN103871447B (zh) * 2012-12-14 2017-03-01 华邦电子股份有限公司 与非门快闪存储器阵列及芯片及其存取、读取及管理方法
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9324450B2 (en) 2013-03-13 2016-04-26 Winbond Electronics Corporation NAND flash memory
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
KR102147988B1 (ko) 2013-04-09 2020-08-26 삼성전자주식회사 불휘발성 저장 장치 및 그것의 데이터 저장 방법
US9349450B2 (en) 2013-06-10 2016-05-24 Micron Technology, Inc. Memory devices and memory operational methods including single erase operation of conductive bridge memory cells
US9785545B2 (en) * 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
US9483397B2 (en) * 2013-07-16 2016-11-01 Intel Corporation Erase management in memory systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9501400B2 (en) 2013-11-13 2016-11-22 Sandisk Technologies Llc Identification and operation of sub-prime blocks in nonvolatile memory
KR101821439B1 (ko) * 2013-11-15 2018-03-08 엘에스산전 주식회사 한류기
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9218891B2 (en) * 2013-11-27 2015-12-22 Silicon Motion, Inc. Data storage device and flash memory control method
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9329992B2 (en) 2013-12-04 2016-05-03 Silicon Motion, Inc. Data storage device and flash memory control method
KR102182368B1 (ko) * 2013-12-19 2020-11-24 에스케이하이닉스 주식회사 어드레스 검출회로 및 이를 포함하는 메모리
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
KR20150116352A (ko) 2014-04-07 2015-10-15 삼성전자주식회사 메모리 제어 방법 및 시스템
US9582205B2 (en) * 2014-04-17 2017-02-28 Sandisk Technologies Llc Protection scheme with dual programming of a memory system
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9442798B2 (en) 2014-07-31 2016-09-13 Winbond Electronics Corporation NAND flash memory having an enhanced buffer read capability and method of operation thereof
US9367392B2 (en) 2014-08-01 2016-06-14 Winbond Electronics Corporation NAND flash memory having internal ECC processing and method of operation thereof
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US10331551B2 (en) 2014-12-29 2019-06-25 Toshiba Memory Corporation Information processing device and non-transitory computer readable recording medium for excluding data from garbage collection
TWI557744B (zh) * 2015-01-27 2016-11-11 緯創資通股份有限公司 資料儲存方法及嵌入式系統
TWI571881B (zh) * 2015-10-23 2017-02-21 群聯電子股份有限公司 有效資料合併方法、記憶體控制器與記憶體儲存裝置
JP6448570B2 (ja) * 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
KR102452994B1 (ko) 2016-09-06 2022-10-12 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
CN106448735B (zh) * 2016-09-13 2019-09-13 天津大学 用于大容量非易失性存储器的数据快速擦除方法
TWI653533B (zh) * 2017-03-07 2019-03-11 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
US10565115B2 (en) 2017-03-30 2020-02-18 Western Digital Technologies, Inc. Calculating the optimal number of LBNS to prefetch per CPU
CN108710579A (zh) * 2018-04-27 2018-10-26 江苏华存电子科技有限公司 一种超过寻址空间大容量的管理方法
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US10956318B2 (en) * 2018-06-19 2021-03-23 Macronix International Co., Ltd. Overlapping ranges of pages in memory systems
CN111902804B (zh) 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的系统和方法
CN109062822B (zh) * 2018-07-18 2021-09-07 北京世纪东方通讯设备有限公司 一种机车无线通信数据的存储方法及装置
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management
US10665303B1 (en) * 2019-05-10 2020-05-26 Macronix International Co., Ltd. Erasing blocks with few programmed pages
US10990316B2 (en) * 2019-06-28 2021-04-27 Western Digital Technologies, Inc. Log-based storage for different data types in non-volatile memory
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11294827B2 (en) * 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
US11194515B2 (en) * 2019-09-16 2021-12-07 Macronix International Co., Ltd. Memory system, method of operating memory, and non-transitory computer readable storage medium
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11042307B1 (en) * 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
TWI727842B (zh) * 2020-02-20 2021-05-11 大陸商長江存儲科技有限責任公司 存儲器件及其編程方法
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11301173B2 (en) 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
CN111615731B (zh) 2020-04-23 2021-11-23 长江存储科技有限责任公司 存储器件及其编程方法
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US11894060B2 (en) 2022-03-25 2024-02-06 Western Digital Technologies, Inc. Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08212019A (ja) * 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
JPH1153248A (ja) * 1997-08-04 1999-02-26 Tokyo Electron Ltd データ処理システム、ブロック消去型記憶媒体、及びプログラム記録媒体
JP2000181784A (ja) * 1998-12-18 2000-06-30 Hitachi Ltd 書き換え可能な不揮発性記憶装置
WO2002058074A2 (en) * 2001-01-19 2002-07-25 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP2002366423A (ja) * 2001-06-04 2002-12-20 Samsung Electronics Co Ltd フラッシュメモリの管理方法
JP2003006044A (ja) * 2001-06-19 2003-01-10 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2003177974A (ja) * 2001-12-11 2003-06-27 Mitsubishi Electric Corp ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム

Family Cites Families (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3502001C1 (de) 1985-01-22 1986-07-17 HFH Herbst Förder- und Hebetechnik, 3300 Braunschweig Knickgelenktes,allradgetriebenes Stapelfahrzeug
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
IL96808A (en) 1990-04-18 1996-03-31 Rambus Inc Introductory / Origin Circuit Agreed Using High-Performance Brokerage
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
JP2618149B2 (ja) 1991-04-22 1997-06-11 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ内のデータ記憶スペースを管理する方法及びキャッシュ内でページ置換を行う装置
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
JPH05233426A (ja) 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
US5687345A (en) * 1992-03-17 1997-11-11 Hitachi, Ltd. Microcomputer having CPU and built-in flash memory that is rewritable under control of the CPU analyzing a command supplied from an external device
US5341489A (en) 1992-04-14 1994-08-23 Eastman Kodak Company Memory card with programmable interleaving
JP3299564B2 (ja) 1992-05-11 2002-07-08 松下電器産業株式会社 メモリ装置
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
JP3105092B2 (ja) 1992-10-06 2000-10-30 株式会社東芝 半導体メモリ装置
US5341330A (en) 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
US5649200A (en) 1993-01-08 1997-07-15 Atria Software, Inc. Dynamic rule-based version control system
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JPH06266596A (ja) 1993-03-11 1994-09-22 Hitachi Ltd フラッシュメモリファイル記憶装置および情報処理装置
US5519843A (en) * 1993-03-15 1996-05-21 M-Systems Flash memory system providing both BIOS and user storage capability
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
JP3215237B2 (ja) 1993-10-01 2001-10-02 富士通株式会社 記憶装置および記憶装置の書き込み/消去方法
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
US5541886A (en) 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
JPH08263361A (ja) 1995-03-23 1996-10-11 Mitsubishi Electric Corp フラッシュメモリカード
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
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
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
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
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5860090A (en) 1995-10-20 1999-01-12 Informix Software, Inc. Append-only storage in a disk array using striping and parity caching
FR2742893B1 (fr) 1995-12-20 1998-01-16 Schlumberger Ind Sa Procede d'inscription d'une donnee dans une memoire reinscriptible
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5896393A (en) 1996-05-23 1999-04-20 Advanced Micro Devices, Inc. Simplified file management scheme for flash memory
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
JP3489708B2 (ja) * 1996-10-23 2004-01-26 シャープ株式会社 不揮発性半導体記憶装置
US6047352A (en) 1996-10-29 2000-04-04 Micron Technology, Inc. Memory system, method and predecoding circuit operable in different modes for selectively accessing multiple blocks of memory cells for simultaneous writing or erasure
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
JPH10177797A (ja) 1996-12-17 1998-06-30 Toshiba Corp 半導体記憶装置
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
US5999947A (en) 1997-05-27 1999-12-07 Arkona, Llc Distributing database differences corresponding to database change events made to a database table located on a server computer
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
JP3119214B2 (ja) 1997-09-30 2000-12-18 ソニー株式会社 記憶装置、データ処理システム並びにデータの書き込み及び読み出し方法
JP2914360B2 (ja) 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
US6040997A (en) 1998-03-25 2000-03-21 Lexar Media, Inc. Flash memory leveling architecture having no external latch
JP2000122923A (ja) 1998-07-13 2000-04-28 Sony Corp 記録装置および記録方法、再生装置および再生方法、記録媒体、並びにプログラム記録媒体
JP4046877B2 (ja) 1998-12-14 2008-02-13 株式会社ルネサステクノロジ 一括消去型不揮発性メモリおよび携帯電話
US6150838A (en) 1999-02-25 2000-11-21 Xilinx, Inc. FPGA configurable logic block with multi-purpose logic/memory circuit
JP2000285017A (ja) 1999-03-31 2000-10-13 Seiko Epson Corp 記憶装置
US6449625B1 (en) 1999-04-20 2002-09-10 Lucent Technologies Inc. Use of a two-way stack approach to optimize flash memory management for embedded database systems
ES2293916T3 (es) 1999-07-28 2008-04-01 Sony Corporation Sistema de registro, dispositivo de registro de datos, dispositivo de memoria, y metodo de registro de datos.
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
US6775423B2 (en) * 2000-05-03 2004-08-10 Microsoft Corporation Systems and methods for incrementally updating an image in flash memory
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
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US6834331B1 (en) 2000-10-24 2004-12-21 Starfish Software, Inc. System and method for improving flash memory data integrity
JP3992960B2 (ja) 2000-10-26 2007-10-17 松下電器産業株式会社 記録装置及びプログラム
CN1236386C (zh) 2000-10-26 2006-01-11 松下电器产业株式会社 存储器件及存储控制方法
US7020739B2 (en) 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
IT1315566B1 (it) 2000-12-12 2003-02-18 Federico Renier Metodo per la certificazione dell'invio,della ricezione edell'autenticita' di documenti elettronici ed unita' di rete
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
US7328301B2 (en) 2003-04-07 2008-02-05 Intel Corporation Dynamically mapping block-alterable memories
US7107388B2 (en) 2003-04-25 2006-09-12 Intel Corporation Method for read once memory
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US8504798B2 (en) 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08212019A (ja) * 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
JPH1153248A (ja) * 1997-08-04 1999-02-26 Tokyo Electron Ltd データ処理システム、ブロック消去型記憶媒体、及びプログラム記録媒体
JP2000181784A (ja) * 1998-12-18 2000-06-30 Hitachi Ltd 書き換え可能な不揮発性記憶装置
WO2002058074A2 (en) * 2001-01-19 2002-07-25 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP2004533029A (ja) * 2001-01-19 2004-10-28 サンディスク コーポレイション 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作
JP2002366423A (ja) * 2001-06-04 2002-12-20 Samsung Electronics Co Ltd フラッシュメモリの管理方法
JP2003006044A (ja) * 2001-06-19 2003-01-10 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2003177974A (ja) * 2001-12-11 2003-06-27 Mitsubishi Electric Corp ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム

Also Published As

Publication number Publication date
KR20060130081A (ko) 2006-12-18
US8504798B2 (en) 2013-08-06
KR101118507B1 (ko) 2012-03-12
CN1902599A (zh) 2007-01-24
US8745322B2 (en) 2014-06-03
US8117380B2 (en) 2012-02-14
CN1902599B (zh) 2011-12-21
EP1700219A1 (en) 2006-09-13
TW200601040A (en) 2006-01-01
US20050144358A1 (en) 2005-06-30
EP1700219B1 (en) 2014-04-02
TWI287191B (en) 2007-09-21
JP2007517319A (ja) 2007-06-28
WO2005066790A1 (en) 2005-07-21
US20130339585A1 (en) 2013-12-19
US20090216938A1 (en) 2009-08-27

Similar Documents

Publication Publication Date Title
JP4933267B2 (ja) 大きな消去ブロックを有する不揮発性メモリシステムの管理
US8880483B2 (en) System and method for implementing extensions to intelligently manage resources of a mass storage system
US7814262B2 (en) Memory system storing transformed units of data in fixed sized storage blocks
JP4750766B2 (ja) 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作
KR101304254B1 (ko) 플래시 메모리 시스템들에서 하우스키핑 동작들의 스케쥴링
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
US7631138B2 (en) Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7212440B2 (en) On-chip data grouping and alignment
EP1829047B1 (en) System and method for use of on-chip non-volatile memory write cache
US20090164745A1 (en) System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
EP1561168A2 (en) Method and apparatus for splitting a logical block
JP2009503740A (ja) データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110329

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110615

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110622

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110928

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120216

R150 Certificate of patent or registration of utility model

Ref document number: 4933267

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150224

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20150224

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees