[go: up one dir, main page]

JP2011519095A - マルチバンク記憶装置のためのストレージアドレス再マッピングのための方法およびシステム - Google Patents

マルチバンク記憶装置のためのストレージアドレス再マッピングのための方法およびシステム Download PDF

Info

Publication number
JP2011519095A
JP2011519095A JP2011506353A JP2011506353A JP2011519095A JP 2011519095 A JP2011519095 A JP 2011519095A JP 2011506353 A JP2011506353 A JP 2011506353A JP 2011506353 A JP2011506353 A JP 2011506353A JP 2011519095 A JP2011519095 A JP 2011519095A
Authority
JP
Japan
Prior art keywords
block
address
lba
bank
sat
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.)
Pending
Application number
JP2011506353A
Other languages
English (en)
Other versions
JP2011519095A5 (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 JP2011519095A publication Critical patent/JP2011519095A/ja
Publication of JP2011519095A5 publication Critical patent/JP2011519095A5/ja
Pending legal-status Critical Current

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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

マルチバンクメモリにおけるストレージアドレス再マッピングのための方法およびシステムが開示される。この方法は、クラスタのブロックの中の論理アドレスを割り当てることと、論理アドレスをストレージアドレス空間内に再マッピングすることとを含み、論理アドレス空間内に分散しているホストデータの短いランはストレージアドレス空間においてメガブロックの中に連続的にマッピングされる。各バンクにおいて独立に、特定のバンク内で利用可能な新しいブロックの数が所望しきい値未満まで減ったとき、マルチバンクメモリの各バンクにおいてデータを受け取るために利用し得る新しいブロックを作るために、有効なデータおよび使用済データの両方を有するブロックからそれぞれのバンクの中で有効なデータがフラッシングされる。

Description

本発明は、一般的にはオペレーティングシステムと記憶装置との間のデータ通信に関する。より具体的には、本発明は、マルチバンク再プログラム可能な不揮発性半導体フラッシュメモリなどのメモリシステムと、メモリが接続されているかあるいは接続可能であるホスト装置との操作に関する。
従来のフラッシュデータメモリシステムにデータを書き込むとき、ホストは、通例、メモリシステムの連続的な仮想アドレス空間の中のセクタ、クラスタまたは他のデータユニットに一意の論理アドレスを割り当てる。ホストは、メモリシステムの論理アドレス空間の中のアドレスにデータを書き込み、アドレスからデータを読み出す。そのとき、メモリシステムは、一般に、論理アドレス空間と、データが論理アドレス空間内の範囲に対応する固定された論理グループを構成して格納されるメモリの物理的ブロックまたはメタブロックとの間でデータをマッピングする。一般に、各々の固定された論理グループはメモリシステムの別々の物理的ブロックに格納される。メモリシステムは、論理アドレス空間が物理メモリにどのようにマッピングされるかを追跡するけれども、ホストはこれを知らない。ホストは、論理アドレス空間の中のそれ自身のデータファイルのアドレスを追跡するけれども、メモリシステムはこのマッピングについての情報なしで動作する。
このように動作するメモリシステムの欠点は断片化である。例えば、NTFSファイルシステムにしたがって動作するパーソナルコンピュータ(PC)においてソリッドステートディスク(SSD)ドライブに書き込まれたデータは、ドライブの論理アドレス空間の中の広く分布する位置に存在する連続するアドレスの短いランのパターンにより特徴付けられることが多い。ホストにより使用されるファイルシステムが、連続するファイルについて新しいデータのために順次アドレスを割り当てたとしても、削除されるファイルの気まぐれなパターンに起因して、利用可能な空きメモリ空間が新しいファイルデータのためにブロック化ユニットをなして割り当てられ得ないような利用可能な空きメモリ空間の断片化が生じる。
フラッシュメモリマネージメントシステムは、連続する論理アドレスのブロックを物理アドレスのブロックにマッピングすることによって動作しがちである。ホストからのアドレスの短いランが独立して更新されるとき、そのランを含むアドレスの論理ブロック全体が、単一のブロックへのそれ自身の長期マッピングを維持しなければならない。これは論理対物理メモリマネージメントシステムの中でのガーベッジコレクション操作を必要とし、その操作で、論理ブロック内のホストにより更新されない全てのデータは、更新されるデータとそれとを統合するために再配置される。データが、マルチバンクシステムを構成する別々のフラッシュメモリバンクにおける格納されたブロックであり得るマルチバンクフラッシュメモリシステムにおいて、統合プロセスは大規模になることがある。これはかなりのオーバーヘッドであり、書き込み速度およびメモリ寿命を厳しく制限するかもしれない。
米国特許第5,570,315号 米国特許第5,774,397号 米国特許第6,046,935号 米国特許第6,373,746号 米国特許第6,456,528号 米国特許第6,522,580号 米国特許第6,771,536号 米国特許第6,781,877号 米国公開特許出願第2003/0147278号 米国公開特許出願第2003/0109093号 米国特許出願第12/036,014号
マルチバンクメモリシステムにおける改良されたメモリ管理に対する需要に対処するために、本願明細書において方法が開示される。第1の実施形態にしたがって、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が開示される。この方法は、ホストシステムにより割り当てられたホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを受け取ることと、ホストLBAアドレスと関連付けられているデータをアドレス指定するための連続的ストレージLBAアドレスのメガブロックを割り当てることとを含み、連続的ストレージLBAアドレスのメガブロックは、大容量記憶システム内のメモリセルの複数のバンクの各々の中のメモリセルの少なくとも1つのブロックを含み、割り当て時に未書き込み容量だけをアドレス指定する。受け取られたデータのためのホストLBAアドレスの各々について、連続的ストレージLBAアドレスのメガブロックへの再マッピングが行われ、各ストレージLBAアドレスは、受け取られたデータに対して、ホストLBAアドレスに関わらず、受け取られたデータが受け取られた順に連続的に順次に割り当てられる。さらに、複数のバンクのうちの第1のものの中のブロックは複数のバンクのうちの第2のものの中のブロックとは独立にフラッシングされ、第1のバンク内のブロックをフラッシングすることは、有効なデータのためのホストLBAアドレスを第1のバンク内のブロックのストレージLBAアドレスから第1の再配置ブロック内の連続的ストレージLBAアドレスに再割り当てすることを含み、第2のバンク内のブロックをフラッシングすることは、有効なデータのためのホストLBAアドレスを第2のバンク内のブロックのストレージLBAアドレスから第2の再配置ブロック内の連続的ストレージLBAアドレスに再割り当てすることを含む。
他の実施形態にしたがって、ホストシステムと再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法が提供され、大容量記憶システムはメモリセルの複数のバンクを有し、複数のバンクの各々は、一緒に消去可能なメモリセルのブロックとして構成されている。この方法は、受け取られたホストデータのためのホスト論理ブロックアドレス(LBA)アドレスをストレージLBAアドレスのメガブロックに再マッピングすることを含み、ストレージLBAアドレスのメガブロックはメモリセルの複数のバンクの各々の中にメモリセルの少なくとも1つのブロックを有する。受け取られたデータのためのホストLBAアドレスは、ホストLBAアドレスに関わらずデータが受信された順にメガブロック内でメガページ順にストレージLBAアドレスに連続的に割り当てられ、各メガページはメガブロックのブロックの各々についてメタページを含む。この方法は、バンクの各々において独立にフラッシング操作を実行することを含む。フラッシング操作は、有効なデータのためのホストLBAアドレスを特定のバンク内のブロックのストレージLBAアドレスから特定のバンクの中の再配置ブロック内の連続的ストレージLBAアドレスに再割り当てすることを含む。
本発明の他の特徴および利点は、次の図面、詳細な説明および特許請求の範囲を検討すれば明らかとなる。
マルチバンク不揮発性メモリを有するメモリシステムと接続されたホストを示す。 図1のマルチバンク不揮発性メモリに用いられるフラッシュメモリシステムコントローラの例のブロック図の例である。 図1に示されているフラッシュメモリバンクのうちの1つとして適切な1つのフラッシュメモリバンクの例である。 図3のメモリバンクに使用され得るメモリセルアレイの代表的な回路図である。 図3のメモリバンクの物理的メモリ構成の例を示す。 図5の物理的メモリの一部分の拡大図を示す。 図1のマルチバンクメモリ内の複数のバンクの物理的メモリ構成を示す。 ホストLBAアドレス空間における割り当て済みクラスタおよび空きクラスタの典型的なパターンを示す。 1つの開示された実施例に従うブロックによるクラスタの割り当てのパターンを示す。 メモリシステムのメモリマネージャがストレージアドレス指定再マッピング機能を組み入れている場合のホストとメモリシステムとの間でのストレージアドレス再マッピングの実施例を示す。 図10に示されているストレージアドレス再マッピングの代替の実施例を示す。 機能がホストに置かれている場合のストレージアドレス再マッピングの実施例を示す。 図10〜12のシステムに用いられるマルチバンク書き込みアルゴリズムの流れ図である。 メモリシステムの個々のバンクの中でのクラスタのブロックの割り当ての状態図である。 マルチバンクメモリシステムの各バンクに独立に加えられ得るフラッシング操作の流れ図である。 メガブロックにおけるDLBAラン分布を示す。 図16のDLBAラン分布のためのメガブロック書き込みプロシージャおよびストレージアドレステーブル生成を示す。 図16のメガブロック内のブロックがフラッシングされた後のDLBAランの再配列例を示す。 マルチバンクメモリにおける1つのバンクのDLBAアドレス空間におけるフラッシング操作と、そのバンクのための物理アドレス空間における対応する更新ブロックとを示す。 図19のバンクのDLBA空間における第2のフラッシング操作を示す。 フラッシング操作のためのピンク色ブロック選択プロセスの流れ図である。 ホスト論理アドレスが第2の論理アドレス空間に再マッピングされる構成におけるストレージアドレステーブル(SAT)階層を示す。 論理対論理マッピングを追跡するのに使用されるストレージアドレステーブル(SAT)書き込みブロックを示す。 図23のSATテーブルのSATページに用いられるLBAエントリである。 図23のSATテーブルのSATページに用いられるDLBAエントリである。 図23のSATテーブルのSATページに用いられるSAT索引エントリである。 図11および12のストレージアドレス再マッピングの実施例に用いられるストレージアドレステーブル変換プロシージャを示す。 SATブロック遷移の状態図を示す。 SATブロックのフラッシング順序を決定するためのプロセスの流れ図である。 ブロック情報テーブル(BIT)書き込みブロックを示す。 メガブロックにおけるDLBAラン分布を示す。 論理アドレスの完全なメガブロックがDLBAランにマッピングされるSATの実施形態を示す。 LBAアドレスのためのアドレスフォーマットの例を示す。
本発明の諸態様を実施するために用いるのに適するフラッシュメモリシステムが図1〜7に示されている。図1のホストシステム100は、メモリシステム102にデータを格納し、メモリシステムからデータを取り出す。メモリシステムは、パーソナルコンピュータにインストールされたソリッドステートディスク(SSD)ドライブの形などの、ホストに組み込まれたフラッシュメモリであり得る。代わりに、メモリシステム102は、図1に示されている機械的電気的コネクタの接合部品103および104を通してホストに取り外し可能に接続されるカードの形であり得る。内部のあるいは組み込みのSSDドライブとして用いられるべく構成されたフラッシュメモリは図1の略図に類似して見えるかもしれないが、主な違いは、ホスト内のメモリシステム102の位置である。SSDドライブは、回転式磁気ディスクドライブのドロップイン代替品(完全互換品)である別々のモジュールの形であり得る。
商業的に入手可能なSSDドライブの一例は、サンディスク コーポレイションにより製造されている32ギガバイトSSDである。商業的に入手可能な取り外し可能のフラッシュメモリカードの例は、コンパクトフラッシュ(CF)、マルチメディアカード(MMC)、セキュアデジタル(SD)、ミニSD、メモリスティック、スマートメディアおよびトランスフラッシュカードを含む。これらのカードの各々は、その標準化された仕様に従う独特の機械的および/または電気的インターフェイスを有するけれども、各々に含まれるフラッシュメモリシステムは類似している。これらのカードは、全て、本願の譲受人であるサンディスク コーポレイションから入手可能である。サンディスク コーポレイションは、そのCruzer(クルーザー)という登録商標のもとで一系列のフラッシュドライブも提供し、それらは、ホストのUSBレセプタクルに差し込むことによってホストと接続されるユニバーサルシリアルバス(USB)プラグを有する小型パッケージ内のハンドヘルドのメモリシステムである。これらのメモリカードおよびフラッシュドライブの各々は、ホストとインターフェイスしてそれらの中のフラッシュメモリの動作を制御するコントローラを含む。
SSD、メモリカードおよびフラッシュドライブを使用することのできるホストシステムは多数あって多様である。それらは、デスクトップまたはラップトップおよび他の携帯用コンピュータなどのパーソナルコンピュータ(PC)、セルラー電話、個人用携帯情報端末(PDA)、デジタルスチルカメラ、デジタルムービーカメラおよび携帯用オーディオプレーヤを含む。携帯用メモリカードアプリケーションのために、ホストは1つ以上のタイプのメモリカードまたはフラッシュドライブのための内蔵型レセプタクルを含むこともあるし、あるいはホストはメモリカードが差し込まれるアダプタを必要とすることもある。メモリシステムは普通それ自身のメモリコントローラおよびドライバを含むが、代わりに、メモリが接続されたホストにより実行されるソフトウェアによって制御されるメモリオンリーのシステムもある。コントローラを含むあるメモリシステム、特にホストに組み込まれるものでは、メモリ、コントローラおよびドライバはしばしば単一の集積回路チップ上に形成される。
図1のホストシステム100は、メモリ102に関する限り、回路とソフトウェアとの組み合わせから成る2つの主要部分を有すると見られ得る。それらは、アプリケーション部分105と、メモリ102とインターフェイスするドライバ部分106とである。例えばPCでは、アプリケーション部分105は、ワードプロセッシング、グラフィクス、制御または他のポピュラーなアプリケーションソフトウェアを実行するプロセッサ109と、ホスト100上のデータを管理するためのファイルシステム110とを含むことができる。カメラ、セルラー電話あるいは他の、単一セットの機能を実行するために主として専用されるホストシステムでは、アプリケーション部分105は、写真を撮って記憶するようにカメラを操作したり、電話をかけたり受けたりするようにセルラー電話を操作したりなどするソフトウェアを含む。
図1のメモリシステム102は、マルチバンクフラッシュメモリ107などの不揮発性メモリと、メモリシステム102が接続されているホスト100とデータをやり取りするためにインターフェイスすると共にメモリ107を制御するコントローラ回路108とを含むことができる。コントローラ108は、データプログラミングおよび読み出し中に、ホスト100により使用されるデータの論理アドレスとマルチバンクフラッシュメモリ107の物理アドレスとの間の変換を行うことができる。マルチバンクフラッシュメモリ107は任意の数のメモリバンクを含むことができ、ここでは4つのメモリバンク107A〜107Dが単に実例として示されている。
図2を参照すると、システムコントローラ108は、特定用途向け集積回路(ASIC)などの単一の集積回路チップ上に実装され得る。コントローラ108のプロセッサ206は、マルチバンクフラッシュメモリ107内のそれぞれのバンク107A〜107Dの各々のためのI/Oポートを有するメモリインターフェイス204を介してそれぞれのメモリバンク107A〜107Dの各々と別々に通信することのできるマルチスレッドプロセッサとして構成され得る。コントローラ108は内部クロック218を含むことができる。プロセッサ206は、内部データバス202を介して誤り訂正符号(ECC)モジュール214、RAMバッファ212、ホストインターフェイス216、およびブートコードROM210と通信する。
図3の単一バンク107Aの図を参照すると、マルチバンクフラッシュメモリ107内の各バンクは1つ以上の集積回路チップから成ることができ、各チップは複数のサブアレイまたはプレーンに構成されたメモリセルのアレイを含むことができる。2つのそのようなプレーン310および312が簡略化して図に示されているけれども、その代わりに4個または8個などのより多くのそのようなプレーンを使用してもよい。あるいは、メモリバンクのメモリセルアレイはプレーンに分割されないかもしれない。しかし、そのように分割されるならば、各プレーンは、互いに独立に動作し得るそれ自身の列制御回路314および316を有する。回路314および316は、それらのそれぞれのメモリセルアレイのアドレスをシステムバス302のアドレス部分306から受け取って、それぞれのビット線318および320のうちの特定の1つ以上をアドレス指定するためにそれらを復号する。ワード線322は、アドレスバス19で受け取られるアドレスに応答して行制御回路324を通してアドレス指定される。ソース電圧制御回路326および328も、pウェル電圧制御回路330および332と同じく、それぞれのプレーンと接続されている。バンク107Aがメモリセルの単一のアレイを有するメモリチップの形であるならば、そして2つ以上のそのようなチップがシステム内に存在するならば、各チップのアレイは前述したマルチプレーンチップの中のプレーンまたはサブアレイと同様に操作され得る。各バンク107A〜107Dは、諸機能がコントローラ108によって独立に同時にあるいは非同期に制御され得るように構成される。例えば、第1のバンクは、第2のバンクがデータを読み出している間、データを書き込むように命令され得る。
データは、システムバス302のデータ部分304と接続されているそれぞれのデータ入出力回路334および336を通してプレーン310および312内へ、およびプレーン外へ転送される。回路334および336は、それぞれの列制御回路314および316を通してプレーンに接続されているライン338および340を通して、データをメモリセル内にプログラムすると共にそれらのそれぞれのプレーンのメモリセルからデータを読み出すことに配慮している。
コントローラ108内のプロセッサ206は、データをプログラムし、データを読み出し、消去し、さらに種々のハウスキーピング事項を処理するために各バンク107A〜107D内のメモリチップの動作を制御するけれども、各メモリチップも、そのような機能を実行するためのコントローラ108からのコマンドを実行するある制御回路を含む。インターフェイス回路342は、システムバス302の制御およびステータス部分308に接続されている。コントローラ108からのコマンドは状態マシン344に提供され、これはその後、これらのコマンドを実行するために他の回路の具体的な制御を提供する。制御線346〜354は、状態マシン344を、図3に示されているようにこれらの他の回路に接続する。状態マシン344からのステータス情報は、バス部分308を介してコントローラ108へ送信されるべく線356を介してインターフェイス342に伝えられる。
以下でメモリセルアレイ310および312のNANDアーキテクチャが論じられるけれども、NORなどの他のアーキテクチャが代わりに使用されてもよい。米国特許第5,570,315号(特許文献1)、第5,774,397号(特許文献2)、第6,046,935号(特許文献3)、第6,373,746号(特許文献4)、第6,456,528号(特許文献5)、第6,522,580号(特許文献6)、第6,771,536号(特許文献7)および第6,781,877号(特許文献8)ならびに米国公開特許出願第2003/0147278号(特許文献9)を参照することによってNANDフラッシュメモリおよびメモリシステムの一部としてのそれらの動作の例が得られる。一例であるNANDアレイが図4の回路図により図に示され、これは、図3のメモリシステムのメモリセルアレイ310の一部分である。多数のグローバルビット線が設けられ、説明を簡単にするためにそのような線402〜408が4つだけ図4に示されている。これらのビット線のうちの1つと基準電位との間に、直列接続されているメモリセルストリング410〜424がいくつか接続されている。メモリセルストリング414を代表として用いると、複数の電荷蓄積メモリセル426〜432が、ストリングの両端の選択トランジスタ434および436と直列に接続されている。ストリングの選択トランジスタが導通させられると、ストリングはそのビット線と基準電位との間に接続される。その後、そのストリングの中のメモリセルが一度に1つずつプログラムまたは読み出しされる。
図4のワード線438〜444はメモリセルのいくつかのストリングのうちの各々の中の1つのメモリセルの電荷蓄積素子を横断してそれぞれ延び、ゲート446および450はストリングの各端の選択トランジスタの状態を制御する。共通のワード線およびコントロールゲート線438〜450を共有するメモリセルストリングは、一緒に消去されるメモリセルのブロック452を形成させられる。セルのこのブロックは、一度に物理的に消去可能な最小数のセルを含む。ワード線438〜444のうちの1つに沿う1行のメモリセルが一度にプログラムされる。通例、NANDアレイの行は、この場合には接地または他の共通電位に接続されているストリングの端に最も近いワード線444に沿う行から始まる、所定の順序でプログラムされる。ワード線442に沿うメモリセルの行が次にプログラムされるなどして、ブロック452全体にわたってプログラムが行われる。ワード線438に沿う行は最後にプログラムされる。
第2のブロック454は同様であって、そのメモリセルのストリングは、第1のブロック452のストリングと同じグローバルビット線に接続されているけれどもワード線およびコントロールゲート線の異なるセットを有する。ワード線およびコントロールゲート線は、行制御回路324によってそれらの適切な動作電圧まで駆動される。図3のプレーン1および2など、システムに2つ以上のプレーンまたはサブアレイが存在すれば、1つのメモリアーキテクチャは、それらの間で延びる共通のワード線を使用する。代わりに、共通のワード線を共有する3つ以上のプレーンまたはサブアレイがあり得る。他のメモリアーキテクチャでは、個々のプレーンまたはサブアレイのワード線は別々に駆動される。
前に援用されているNAND特許および公開された特許出願のうちのいくつかに記載されているように、メモリシステムは、各々の電荷蓄積素子または領域に2つより多い検出可能な電荷のレベルを記憶させ、それによって各々に1ビットより多いデータを記憶させるように操作され得る。メモリセルの電荷蓄積素子は、非常に一般的には伝導性フローティングゲートであるけれども、その代わりに、米国公開特許出願第2003/0109093号(特許文献10)に記載されているように、非伝導性誘電体電荷トラッピング材料であってもよい。
図5は、以下のさらなる記述において例として用いられるマルチバンクフラッシュメモリ107(図1)の1つのバンク107Aの構成を概念的に示す。メモリセルの4つのプレーンまたはサブアレイ502〜508は、単一の統合メモリセルチップ上に、2つのチップ上に(各チップ上にプレーンのうちの2つ)あるいは4つの別々のチップ上に存在し得る。具体的な構成は、以下の論議には重要でない。もちろん、1、2、8、16あるいはそれ以上などの他の数のプレーンがシステム内に存在し得る。プレーンは、それぞれのプレーン502〜508内に位置するブロック510、512、514および516などの長方形により図5に示されているメモリセルのブロックにそれぞれ分割されている。各プレーン内に数十または数百のブロックが存在し得る。
前に言及されたように、メモリセルのブロックは、消去の単位、物理的に一緒に消去可能な最小数のメモリセルである。しかし、並列性を高めるために、ブロックはより大きなメタブロック単位で操作される。各プレーンからの1ブロックが1つのメタブロックを形成するように互いに論理的にリンクされる。4つのブロック510〜516は1つのメタブロック518を形成して示されている。メタブロック内のセルの全てが通例一緒に消去される。メタブロックを形成するために使用されるブロックは、ブロック522〜528から成る第2のメタブロック520において示されているように、それぞれのプレーンの中の同じ相対位置に限定されなくてもよい。全プレーンにわたってメタブロックを広げるのが普通は好ましいけれども、システム性能を高めるために、メモリシステムは異なるプレーン内の1、2または3ブロックのいずれかまたは全部からメタブロックを動的に形成する能力を用いて操作され得る。これにより、メタブロックのサイズを、1プログラミング操作で記憶させるのに使用できるデータの量により厳密に調和させることが可能となる。
一方、個々のブロックは、操作の目的のために、図6に示されているようにメモリセルのページに分割される。例えば、ブロック510〜516の各々のメモリセルは、各々8ページP0〜P7に分割されている。代わりに、各ブロック内にメモリセルの16、32あるいはそれ以上のページがあってもよい。ページは、ブロックの中でのデータのプログラミングおよび読み出しの単位であって、一度にプログラムされるかまたは読み出される最少量のデータを含む。図3のNANDアーキテクチャでは、1ページは1ブロック内の1ワード線に沿うメモリセルから形成される。しかし、メモリシステムの動作並列性を高めるために、2以上のブロックの中のそのようなページが論理的にリンクされてメタページにされ得る。メタページ602が図6に示され、4つのブロック510〜516の各々からの1物理ページから形成されている。例えば、メタページ602は4ブロックの各々のページP2を含むけれども、メタページのページは必ずしも各ブロック内の同じ相対位置を持っていなくてもよい。バンク内で、メタページはプログラミングの最大単位である。
前述したように、図5〜6は、マルチバンクメモリ107の1つのメモリバンク107Aに存在し得るメモリセル構成の一実施形態を示す。一実施形態では、各バンク107A〜107Dのための個々のメモリセル構成に関わらず、メモリシステム102は好ましくはメガブロックというプログラミングの最大単位を有するように構成され、メガブロックは、メモリバンクが単一プレーン構成に整えられているならばマルチバンクメモリ内の各バンクの少なくとも1ブロックにまたがるか、あるいは、メモリバンクが複数プレーン構成に整えられているならばマルチバンクフラッシュメモリ107内の各バンクの1メタブロックにまたがる。以下の論議では、記述を明瞭にするために、各バンクはメタブロックの列として構成されていると仮定される。図7を参照すると、示されている各列は、前に論じられたメタブロック518、520などのメタブロック702のバンク107A〜107Dを表す。メガブロック704は各バンク107A〜107D内の少なくとも1つのメタブロック702を含み、各メタブロック702は複数のメタページ706に分割されている。図7において特定されているメガブロック704は各バンク107A〜107D内の同じ相対的物理的位置にメタブロック702を示しているけれども、メガブロック704を形成するために使用されるメタブロック702は同じ相対的物理的位置に限定されなくてもよい。さらに、本願明細書で言及されるとき、メガページ708は、メガブロック704内のメタブロック702の各々からのメタページ706を指す。メモリバンク107A〜107Dは、それぞれ同様に整えられてもよいし、あるいは互いに異なるメモリセル配列を持ってもよい。例えば、バンクは、バイナリ(単層セル、すなわちSLC)フラッシュの第1のバンクと多層セル(MLC)フラッシュの他のバンクを持つなどして、種々のメモリ技術を使用することができる。さらに別の実施形態では、通常バンクブロックで必要となるデータの移動を伴わずにメガページの属性を更新できるように第1のバンクを再書き込み可能な不揮発性フラッシュとして製造することができて、残りのバンクは標準的フラッシュ(例えば、バイナリフラッシュまたは多層セルフラッシュ)を使用することができる。
次に、図8を参照すると、ホスト100とメモリシステム102との間の共通論理インターフェイスは、メモリシステム102に格納され得るデータ全てのためにアドレスを提供するために充分に大きい連続的論理アドレス空間800を利用する。前述したホスト100およびメモリシステム102を参照すると、マルチバンクフラッシュメモリ107に格納されるべきデータは、通例、ホスト論理ブロックアドレス(LBA)フォーマットで受け取られる。このホストアドレス空間800は、通例、データのクラスタのインクリメントに分割されている。各クラスタはデータの数個のセクタを包含するように所与のホストシステムにおいて設計することができ、およそ4〜64セクタが一般的である。標準的セクタは512バイトのデータを包含する。図8を参照すると、NTFSファイルシステムのための論理アドレス空間800における割り当て済みクラスタ(陰影付き)802と空きクラスタ(陰影なし)804との代表的なパターンが示されている。
図8に見られる論理アドレス空間800の断片化を処理するための組織的構造が図9に示されている。本願明細書に記載されているストレージアドレス再マッピングのためのシステムおよび方法は、以下の論議において一般的に「ブロック」と称されるクラスタ900のメタブロックという項においてLBAアドレスを割り当てる。以下の記述において、有効なデータで完全に満たされているブロック900は赤色ブロック902と称され、有効なデータを持っていなくて、したがって未書き込み容量だけを包含するブロックは白色ブロック904と称される。白色ブロック904内の未書き込み容量は、メモリシステム102が「使用後消去」型のプロシージャを採用しているならば、消去済み状態であり得る。あるいは、メモリシステム102が「使用前消去」型のプロシージャを採用しているならば、白色ブロック904内の未書き込み容量は、割り当て時に消去されなければならない使用済データから成り得る。完全にプログラムされていてデータの有効なクラスタ802とデータの無効な(使用済みとも言われる)クラスタ804との両方を有するブロックはピンク色ブロック906と称される。本願明細書においてより詳細に論じられるように、各バンク107A〜107D内の少なくとも1つの白色ブロック904から構成されるメガブロック704は、ホストからデータを受け取るために割り当てられ、書き込みメガブロックと称される。
以下で記述されるマルチバンク書き込みアルゴリズムおよびフラッシング技術の実施例は、ホスト100およびメモリシステム102の構成に応じて変化し得る。図10〜12は、ホストおよびメモリシステムの間での再マッピング機能のいくつかの構成を示す。図10〜11の構成は、ストレージアドレス再マッピング(STAR:storage address re-mapping)機能が完全にメモリシステム1004、1102に包含される実施形態を表す。これら始めの2つの構成では、メモリシステム1004、1102は、ホスト1002での改変を必要とせずにレガシーホスト1002と協動することができる。逆に、図12に示されている構成は、ストレージアドレス再マッピング機能が完全にホスト1202に包含される実施形態のものである。この後者の実施形態では、ホスト1202は、改変を必要としないレガシーストレージ装置1204と協動することができる。STAR書き込み機能の図10〜12の各構成において実施例がさまざまであるのに加えて、以下でより詳しく記述されるフラッシング操作も様々である。単一バンクメモリにおける書き込みおよびフラッシングのためのフラッシュブロック管理方式の例が、その全体が本願明細書において参照により援用されている2008年2月22日に出願された同時係属中の米国特許出願第12/036,014号(特許文献11)に記載されている。
図10の例では、ストレージアドレスマッピングアルゴリズムはストレージ装置1004の各バンクのメモリ管理1006に統合されることができ、物理メモリの第1のメガブロックが次のメガブロックに進む前にデータで完全に満たされるようにホスト1002からのLBAアドレスはマルチバンクフラッシュメモリ内の物理的ブロックに直接マッピングされる。その代わりに、図11では、ストレージアドレス再マッピングメカニズムは、ストレージ装置1102上の、装置1102の各バンクのためのメモリマネージャ1104とは別のアプリケーションにおいて、実現され得る。図11の実施例では、ホスト1002からの各論理アドレスは、ホストからのデータを完全なメガブロックという項に書き込む技術を利用して、本願明細書においてストレージ論理ブロックアドレス(ストレージLBA)と称され、さらに本願明細書において装置論理ブロックアドレス(DLBA:device logical block address)とも称される第2の論理アドレスに再マッピングされ、その後、メモリマネージャ1104は、DLBA配列のもとで組織されたデータをそれぞれのバンクのための物理メモリのブロックに移す。DLBAアドレス空間は、物理的メタブロックのものに等しい均一なサイズのDLBAブロックとして構造化される。
図12の実施例は、ストレージアドレス再マッピングの機能をストレージ装置1204からホスト1202上のアプリケーションに移す。この実施例では、LBAアドレスをDLBAアドレスにマッピングする機能は図11のものと類似し、主な違いは、変換が記憶装置1204ではなくてホスト1202上で行われることである。その後、ホスト1202は、ホストにおいて生成されたDLBAアドレス情報と、DLBAアドレスに関連付けられたデータとの両方を記憶装置1204に送る。図12の実施例のために論理アドレス空間800を論理アドレスのブロックという項に分割して管理するために、ホストとメモリシステムとはフラッシュメモリ内の物理的ブロックのブロックサイズに関する情報を交換しなければならないかもしれない。論理ブロックのサイズは好ましくは物理的ブロックと同じサイズであり、この情報は、メモリシステムがホストと接続されるときに伝えられ得る。この通信は、パワーアップ時あるいはメモリシステムのホストへの接続時にハンドシェーク動作として行われるようにセットアップされてもよい。一実施形態では、ホストは、ブロックサイズおよびアライメント情報を要求して「識別ドライブ」クエリをメモリシステムに送ることができ、ブロックサイズは、その特定のメモリシステムのための個々の物理的ブロックのサイズであり、アライメント情報は、各物理的ブロックの一部を既に占めているかもしれないシステムデータのために物理的ブロックの先頭から、あるならば、どれだけのオフセットが考慮されなければならないかである。
識別ドライブコマンドは、レガシーLBAインターフェイスコマンドセットにおいて予備のコードとして実現され得る。コマンドは、標準的通信インターフェイスにおいて予備のあるいは未割り当てのコマンドコードを介してホストからメモリシステムへ送られ得る。適切なインターフェイスの例は、ソリッドステートディスクのためのATAインターフェイス、あるいは、例えばCFまたはSDメモリカードに用いられるものなどのATA関連インターフェイスを含む。メモリシステムがブロックサイズおよびオフセット情報の両方を提供できなければ、ホストはデフォルトのブロックサイズおよびオフセットを仮定することができる。メモリシステムが識別ドライブコマンドに対してオフセット情報なしでブロックサイズ情報だけで答えたならば、ホストはデフォルトのオフセットを仮定することができる。デフォルトのブロックサイズは、いくつかの標準的ブロックサイズのうちのどれであってもよく、好ましくは、現実の物理的ブロックサイズらしいものよりは大きくセットされる。各物理的ブロックが物理的ブロック内の第1のアドレスからホストからのデータを受け取り始めることができると仮定されるように、デフォルトのオフセットはゼロオフセットにセットされ得る。ホストがSSDなどの所定の内部ドライブに結合されているならば、記憶装置の能力は既に知られていて前もってプログラムされているかもしれないので、ブロックサイズおよびオフセットを判定するこのステップを行う必要はないかもしれない。しかし、内部ドライブも交換されることがあるので、ホストは、記憶装置能力を常に確かめるように構成され得る。取り外し可能なメモリシステムのためには、ホストは、識別ドライブコマンドまたは類似のメカニズムを通してブロックサイズおよびオフセットについて常にたずねることができる。
マルチバンクメガブロック書き込みアルゴリズム
図13に示されている一実施形態にしたがって、マルチバンクメモリにおいてホストデータ書き込み動作を管理する方法は、ホストファイルシステム110から、図8に関して前述したホストLBAフォーマットでホストデータを受け取ることを含む(1302において)。ホストデータが受け取られると、データは、現在開いている書き込みメガブロック内の現在開いているメガページにホストデータをホストLBA順序に関わらずそれが受け取られた順に書き込むことによって、ストレージアドレスに再マッピングされる(1304において)。以下でより詳しく論じられるように、オリジナルのホストLBAアドレスの、マルチバンクメモリ107内の現在のアドレスへのマッピングを追跡するために、ホストデータがマルチバンクメモリ107内のメガブロックに書き込まれるとストレージアドレステーブル(SAT)が更新される(1306において)。各メガページ708は次のメガページへの書き込みの前に完全に書き込まれ、新しいメガブロック704は、好ましくは、現在の書き込みメガブロックが完全に書き込まれた後に初めてさらなるホストデータを受け取るために割り当てられる(1308、1310および1312において)。現在のメガブロック704内の次のメガページ708が利用可能であれば、その次のメガページ708の先頭に書き込みポインタがセットされ(1314において)、ホストデータはメガページの各メタページ内の連続するストレージアドレスに、1バンクずつ、受け取られた順に、再マッピングされ続ける。ホストデータ書き込みアルゴリズムがマルチバンクメモリシステム107全体に対してメガブロックレベルでメガページ順に実行されている間、メモリシステム102内のバンク107A〜107Dの各々に対してフラッシングアルゴリズムが独立に適用される(1316において)。フラッシングアルゴリズムは、以下で詳しく説明されるように、各バンクの中に、ホストデータ書き込みのためまたは他の記憶ニーズのために、新しいメガブロックで使用する新しい白色ブロックを作る。前に単一の書き込みメガブロックについて論じられたけれども、バンク107A〜107Dが適宜に分割されるならば複数の書き込みメガブロックが実現され得る。
ストレージアドレス再マッピングアルゴリズムの一実施例に従う各バンク107A〜107Dの中でのデータの流れとブロック状態変化のパターンとが図14に示されている。現在の書き込みブロック内の最後のページが有効なデータで満たされると、現在の書き込みブロックは赤色ブロックになり(ステップ1404において)、新しい書き込みブロックが次のメガブロック704の一部となるべく白色ブロックリストから割り当てられる(ステップ1404において)。現在の書き込みブロックが完全にプログラムされる前に現在の書き込みブロックの中のいくつかのページが使用済みとなったならば、現在の書き込みブロックは完全にプログラムされたときにピンク色ブロックへの直接遷移も行い得るということに留意するべきである。この遷移を、明瞭性を目的として、示されていないけれども、書き込みブロックからピンク色ブロックへの矢によって表すことができる。
図14のデータフローの特定の例を再び参照すると、赤色ブロックの中の1つ以上のページが後にLBAランの削除によって使用済みとなると、その赤色ブロックはピンク色ブロックになる(ステップ1406において)。バンクにおいてより多くの白色ブロックが必要であることをストレージアドレス再マッピングアルゴリズムが検出すると、アルゴリズムは、そのピンク色ブロックが白色ブロックになるようにピンク色ブロックから有効なデータを移すために、他のバンクにおいてアクティブであるかもしれない他のフラッシングアルゴリズムから独立して、バンクの中でフラッシング操作を開始する(ステップ1408において)。ピンク色ブロックをフラッシングするために、ピンク色ブロックの有効なデータは、再配置ブロックとして指定されている白色ブロックへ出現の順に順次再配置される(ステップ1410において)。その再配置ブロックは、いったん満たされれば、赤色ブロックになる(ステップ1412において)。前に書き込みブロックに関して言及したように、再配置ブロックは、完全にプログラムされるまでに既にその中の何ページかが使用済みとなっていたならば、ピンク色ブロックへの直接遷移を行うこともできる。この遷移を、明瞭性を目的として、示されていないけれども、図14において再配置ブロックからピンク色ブロックへの矢によって表すことができる。
前に言及したように、ホストデータをメモリシステム102に書き込むとき、図13のマルチバンク書き込みアルゴリズムは、メガブロックという項でアドレス空間を割り当ててメガブロック全体をメガページ順に満たす。したがって、図14は単一のバンクを説明しているので、ホストからのデータは任意の所与のバンクにおいて書き込みブロックで、そのバンクの書き込みブロック内の1つのメタページが満たされるまで受け取られ、その後、そのバンク内の書き込みブロックにおいて他のメタページが利用できるかもしれないけれども、次のメタページ量のホストデータはメガページ内、すなわちマルチバンクフラッシュメモリ107内の次のバンクの書き込みブロック内の、次のメタページに書き込まれるということが理解されるべきである。このように、メモリの1つのバンク内にある所与の書き込みブロックは、ホストが提供するホストデータのNメタページごとにホストデータの1メタページというパターンを受け取り、ここでNはマルチバンクフラッシュメモリ107内のバンクの数である。この系統的ホストデータ書き込みシーケンスとは対照的に、前に言及したSATなどの、メモリシステム102の中で生成された情報、あるいはバンク内に新しい白色ブロックを作るためにフラッシング操作の一部分として再配置されるピンク色ブロックからの有効なデータは、バンク内のそれぞれの個々の書き込みブロックに完全に書き込まれる。
マルチバンクフラッシング操作
ストレージアドレス再マッピングアルゴリズムのある実施形態は、有効なデータの、ピンク色ブロック906から再配置ポインタとして知られている特別の書き込みポインタへの、本願明細書においてフラッシングとも称される再配置を行うことによって、白色ブロック904の作成を管理する。ストレージアドレス空間が前述したように範囲あるいはファイルサイズによって細分化されるならば、ストレージアドレスの各範囲はそれ自身の再配置ブロックおよび関連する再配置ポインタを持つことができる。図15を参照すると、マルチバンクフラッシュメモリのためのフラッシング操作の実施形態は、各バンク107A〜107Dのために別々にかつ独立して、充分な数の白色ブロックがあるかどうかを追跡することを含む(1502において)。この判定は、バンク内に現在存在する白色ブロックの総数に基づいて行うこともできるし、あるいはバンク内で白色ブロックが消費されつつある速度に基づいて行うこともできる。充分な数の白色ブロックがあるならば、フラッシング操作は不要であってバンクは次の書き込み操作を待つことができる(1504において)。白色ブロックの数が不十分であると判定されたならば、以下のようにバンクのために維持されているピンク色ブロックリストからバンク内のピンク色ブロックが選択される(1506において)。バンク内の現在の再配置ブロックが満杯でなければ、有効なデータが、選択されたピンク色ブロックからピンク色ブロック内での出現の順に再配置ブロック内の連続する位置へコピーされる(1508、1510において)。一実施形態では、再配置ブロックが完全にプログラムされているときにだけ、同じバンクから他の白色ブロックが次の再配置ブロックとして割り当てられる(1512において)。さらに、一実施形態では、選択されたピンク色ブロックからの有効なデータだけが、そのピンク色ブロックがコピーされていない有効なデータを依然として包含している間、再配置ブロックにコピーされる(1514において)。マルチバンクフラッシュメモリ107において、1つの特定のバンク内のピンク色ブロック906の中の有効なデータは同じバンク内の再配置ブロックにフラッシングされるだけであるように、フラッシング操作はそれぞれのバンク107A〜107Dの中で独立に実行され、かつそれぞれのバンク107A〜107Dの中に完全に包含されるということを、図15に示されているフラッシング操作は表している。フラッシング操作は、通常、ピンク色ブロックを白色ブロックに変換するために、バックグラウンド操作として実行される。
ピンク色ブロック906は、その特性に応じてフラッシング操作のために選択される。一実施形態では、ピンク色ブロックのリストはマルチバンクフラッシュメモリ107内の各バンク107A〜107Dのために独立に維持される。図9を再び参照すると、一実施例では、有効なデータを有するアドレスが少なければ、その特定のピンク色ブロックがフラッシングされるときに再配置を必要とするデータは少ないので、最少量の有効なデータ(すなわち、図9において最小数の陰影付きクラスタ)を有するピンク色ブロックが選択される。したがって、図9の例では、ピンク色ブロックBのほうがより少数の有効なデータを伴うアドレスを有するので、ピンク色ブロックAではなくてピンク色ブロックBのほうが選択される。他の実施例では、フラッシング操作のために選択されるピンク色ブロックは、あるしきい値量より少ない有効なデータと関連付けられているピンク色ブロックのグループのうちのいずれであってもよい。そのしきい値は、ピンク色ブロックのセット全体に包含される有効なデータの平均量未満であってよい。そのしきい値量あるいはそれ未満の有効なデータのピンク色ブロックのサブセットを、ホストまたはメモリシステムがピンク色ブロックを選択できるリストにおいて維持することができる。例えば、しきい値要件を現在満たしているピンク色ブロックのうちの所定の数(例えば、16)あるいはパーセンテージ(例えば、30%)のピンク色ブロックの動的リストを維持することができ、そのリスト中の選択されるピンク色ブロックが絶対最少量の有効なデータを有するかどうかを考慮せずにそのリストからフラッシングのためにどのピンク色ブロックでも選択され得る。各バンクにおけるリストを形成する、メモリシステムまたはホストが選択するピンク色ブロックの数またはパーセンテージは、固定された値あるいはユーザにより選択可能な値であり得る。リストは、使用可能なピンク色ブロックからの絶対最少量の有効なデータを有するピンク色ブロックをランク付けされた順に表すピンク色ブロックのグループを含むこともできるし、あるいは単にしきい値要件の範囲内にあるピンク色ブロックを含むこともできる。
その代わりに、あるいは組み合わされて、ピンク色ブロックの選択は、特定のピンク色ブロック906にさらなる使用済データを蓄積する計算された確率に基づいて行われてもよい。ピンク色ブロック906にさらなる使用済データが蓄積される確率は、メモリにおいて最も長く存在し続けているデータは最も削除されそうもないという仮定に基づくことができる。再配置ブロックであったピンク色ブロック906は、新しいホストデータを有する書き込みブロックであったピンク色ブロック906より古くから存在し続けているデータを含み得る。フラッシングのためのピンク色ブロック906の選択プロセスは、始めに、近ごろ再配置ブロックであったピンク色ブロック906を標的にし得る。それは、それらがさらにデータを削除される見込みがより低く、したがってより少量の使用済データの追加が期待され得るからである。以前は書き込みブロックであったピンク色ブロック906は、より新しいデータが削除される見込みがより高く、したがってより多くの使用済データを作る見込みがより高いという仮定に基づいて後にフラッシングのために選択される。
メガブロック書き込みプロセスのより具体的な例が図16〜17に示されている。この例では、図11のシステム構成が使用されると仮定され、ホストLBAアドレスは、メモリシステム102内のコントローラ108により実行されるアプリケーションにおいてDLBAアドレスとも称される中間ストレージLBAアドレスに変換される。図16に示されているように、6個のメタページ(P1〜P6)を各々有するメタブロック1602を有する4バンクメモリ内の開いている書き込みメガブロック1600は、図17に示されているLBAラン1702のためのLBAアドレスと関連付けられる。マルチバンクメモリ107への書き込みの順序は、第1の開いているメタページ(バンク2内のP2)から始まってメガページの残りに沿って左から右へ順に続く(バンク3内のP2、その次にバンク4内のP2)。コントローラは、LBAラン1702の入ってくるLBAアドレスが、それらが受け取られた順に、各メタページに関連付けられている連続するDLBAアドレスに再マッピングされて、次のメタページへ移る前にメタページ全体がプログラムされるように、LBAアドレスをメガページ内のそれぞれのメタページへルーティングする。LBAラン1702は、次のメガページと関連付けられているDLBAアドレスに再マッピングされ続ける(連続して、バンク1〜4の各々のメタページP3)。その後、LBAラン1702の最後の部分は、バンク1およびバンク2内のメタページP4と関連付けられているDLBAアドレスに連続的に再マッピングされる。
コントローラ108により管理される書き込みアルゴリズムは、メガブロック1600内の次のメガページへ進む前に1メガページ分のLBAアドレス指定されたホストデータをバンクの各々に順次分配することによってメガブロック1600に順に書き込むけれども、単一のラン1702のための各バンク内の不連続的LBAアドレスの集合は、各バンクによって、この例では図16〜17においてDLBAランA1〜A4として特定されるDLBAランとして管理される。LBAアドレスから各バンク内のDLBAアドレスへのマッピングは、メモリにおいて維持されるマルチバンクフラッシュメモリ107のためのストレージアドレステーブル(SAT)1704において追跡される。図17に示されているSAT1704のバージョンは、有効なデータを包含する各LBAランを関連するDLBAランにマッピングする。SAT1704内のLBAエントリ1706は、ラン内の第1のLBAアドレスと、ランの長さと、LBAラン1702にマッピングされた第1のDLBAラン(DLBAランA1)のDLBAアドレスおよびバンク識別子とを含む。対応するDLBAエントリ1708は、DLBAランの第1のDLBAアドレスおよびバンク番号と、第1のDLBAアドレスがマッピングされるLBAラン1702内のLBAアドレスオフセットとを有する第1のDLBAエントリ1710を含み、それは、第1のDLBAエントリ1710の場合にはゼロであり、所与のLBAラン1702のためのその後の全てのDLBAエントリでは非ゼロ値である。
LBAラン1702と関連付けられたデータがDLBAアドレスに再マッピングされて、DLBAアドレスと関連付けられているメガブロック1600内の物理アドレス位置に書き込まれた後、1つ以上のその後のLBAランが再マッピングされてメガブロック1600内の残りの未書き込み容量(バンク3および4内のP4と整列しているメガページの残りと、P5およびP6とそれぞれ整列しているメガページ)に書き込まれる。メガブロック1600などのメガブロックが完全にプログラムされた後、コントローラはメガブロックを最早追跡しなくて、メガブロック1600内の各ブロック1602〜1608はその後それらのそれぞれのバンクにおいて実行される独立のフラッシング操作によって管理される。オリジナルのメガブロック1600のブロック1602〜1608は、それぞれ使用済データの蓄積に起因してピンク色ブロックになると、関連していない再配置ブロックへ独立にフラッシングされ得る。図18は、DLBAランA1〜A4がどのようにそれぞれのバンク内での独立のフラッシング操作によって新しいブロック1802〜1808へ移され得るかを示す。DLBAランA1〜A4と関連付けられているデータの残存は、当然、そのデータが有効なデータでブロック1600内の他のデータが使用済みでそれぞれのフラッシング操作を誘発したということを仮定している。さらに、ブロック1802〜1808は、参照を容易にすると共に図16のメガブロック内でのDLBAランA1〜A4のそれぞれの元の相対ページアライメントに関してのあり得る移動を説明するために、図18において、互いに隣接して示されているけれども、それぞれのフラッシング操作後ブロック1802〜1808は各バンクにおいて異なる物理的または相対的な位置に配置されそうである。
メモリシステム上のコントローラ108またはホスト100上のプロセッサ109によって実行されるアプリケーションによって論理−論理、LBA−DLBA変換が実行される図11および12に示されているストレージアドレス再マッピングの実施例を参照し、図14の状態図に従うアドレス操作の例が図8〜9および19〜20を参照して以下で論じられる。システムは図15によって表されるストレージアドレス再マッピングアルゴリズムにしたがって動作してきたと仮定すると、LBAアドレス空間(図8)では、空きクラスタ804は本質的にランダムな位置に分散されている。所与のバンクのためのDLBAアドレス空間では(図9)、2つの白色ブロック904が使用可能であり、異なる数の使用済(空き)クラスタ804を有する3つのピンク色ブロック906がある。
ホストは、ストレージ装置に書き込むべきデータを次に得ると、使用可能な任意の場所のLBAアドレス空間を割り当てる。図19は、ストレージアドレス再マッピングアルゴリズムが、どのように図9の白色ブロック904などの使用可能な白色ブロックのうちの1つをより大きなメガブロックの一部である書き込みブロック1904とするべく割り当てるかを示すと共に、各LBAアドレスが書き込みブロック1904内の使用可能なDLBA空間内の連続的クラスタにどのようにマッピングされるかを示す。DLBA空間内の書き込みブロック1904は、LBAアドレス位置に関わらずに、LBAアドレスが書き込まれた順に、前に論じられたメガブロック書き込みパターンにしたがって書き込まれる。バンクに適用されるストレージアドレス再マッピングアルゴリズムは、LBAアドレス番号順に関わらず、LBAアドレスが受け取られた時間順に書き込みブロック1904内のDLBAアドレスを割り当てる。データは、書き込みブロックにおいて1つ以上のDLBAランをなして書き込まれる。DLBAランは、同じLBAラン内の連続するLBAアドレスにマッピングされた連続するDLBAアドレスのセットである。DLBAランは、DLBAアドレス空間1902においてブロック境界(これはバンク境界である)で終わらなければならない。書き込みブロック1904が満杯になると、白色ブロック904が次の書き込みブロック1904として割り当てられる。
各バンクにおいて、DLBAブロックはフラッシュメモリ107の物理アドレス空間内のブロック1906で整列し、したがってDLBAブロックサイズと物理アドレスブロックサイズとは同じである。さらに、DLBA書き込みブロック1904におけるアドレスの配列は、物理アドレス空間における対応する更新ブロック1906の配列と同じである。この対応により、一般にガーベッジコレクションと称される別のデータ統合は物理的更新ブロックにおいて決して必要とされない。一般的なガーベッジコレクション操作では、論理アドレスのブロックは、論理ブロックにおいてLBAアドレスの特定の範囲を維持するために一般的に常に再組み立てされ、それは物理的ブロックにおいても反映される。より具体的には、一般的ガーベッジコレクション操作を利用するメモリシステムが特定の物理的ブロック内のセクタに対応する情報の更新されたセクタを受け取ると、メモリシステムは、その更新された1つまたは複数のセクタを受け取るために物理メモリ内の更新ブロックを割り当て、その後残っている有効なデータの全部を元の物理的ブロックから更新ブロックの残りの中へ統合する。このように、標準的ガーベッジコレクションは、特定のLBAアドレス範囲のためのデータのブロックを、その特定のアドレス範囲に対応するデータが常に共通の物理的ブロックの中に統合されるように、永続させる。本願明細書において論じられるフラッシング操作は、同じアドレス範囲内のデータの統合を必要としない。代わりに、フラッシング操作は、種々の物理的ブロックからのデータの集合であり得るデータの新しいブロックを作るためにアドレスマッピングを実行し、データの特定のLBAアドレス範囲が意図的に統合されることはない。
前述したように、充分な供給量の白色ブロックが確実に利用可能であるように、ストレージアドレス再マッピングアルゴリズムは各バンク107A〜107Dにおいて独立に動作する。ストレージアドレス再マッピングアルゴリズムは、データをピンク色ブロックから再配置ブロック1908として知られる特別の書き込みブロックへフラッシングすることによって白色ブロックの作成を管理する(図19)。フラッシングされるべく現在選択されているピンク色ブロックはフラッシングブロックと称される。
次に、図19〜20を順に参照すると、所与のバンクのためのブロックフラッシングプロセスの図が示されている。図11の実施例において各バンク107A〜107Dのために独立にコントローラ108によって実行されるストレージアドレス再マッピングアルゴリズムは、白色ブロックを再配置ブロック1908として指定し、これに、さらなる白色ブロックを作成するために同じバンク内の選択されたピンク色ブロックからデータがフラッシングされる。図19に示されているように、フラッシングブロック(図9のピンク色ブロックA)内の、赤色データとも称される有効なデータは、フラッシングブロックを白色ブロック904に変換するために、再配置ブロック1908内の連続するアドレスへ再配置される。物理アドレス空間1910内の対応する更新ブロック1906も、フラッシングされるデータを受け取るために割り当てられる。ホストから受け取られる新しいデータのために使用される更新ブロック1906の場合と同じく、フラッシングされるデータを受け取るための更新ブロック1906は、フラッシング操作がDLBAアドレス空間1902における統合を既に成し遂げているので、有効なデータを統合するためのガーベッジコレクション操作を決して必要としない。
図20に示されているように、残りのピンク色ブロックから次のフラッシングブロック(図19のピンク色ブロックB)が特定される。最も少ない赤色データを有するピンク色ブロックが再びフラッシングブロックとして指定され、ピンク色ブロックの赤色データ(有効なデータ)は、開いている再配置ブロック内の連続する位置へ転送される。更新ブロック1906における物理アドレスの並行する割り当ても行われる。再び、再配置ブロック1908にマッピングされた物理的更新ブロック1906において、データ統合は必要とされない。ピンク色ブロックに対するフラッシング操作は、書き込みブロックとして指定されている白色ブロックの消費を補うのに充分な速度で白色ブロックを作るためにバックグラウンド操作として実行される。図8〜9および19〜20の例は、ホストからの新しいデータのためおよびピンク色ブロックから再配置されるデータのために、物理アドレス空間内のそれぞれの別々の更新ブロックと共に、書き込みブロックおよび再配置ブロックがどのように別々に維持され得るかを示している。現在のメガブロックが完全にプログラムされたときに初めてメガブロックの一部として動作する新しい書き込みブロックを割り当ててホストから受け取られた新しいデータを関連付けるプロセスと同様に、新しい再配置ブロックは、好ましくは、前の再配置ブロックが完全にプログラムされた後に初めて割り当てられる。新しい再配置ブロックは、好ましくは、割り当て時に、未書き込み容量を包含するだけである、すなわち、いつでも消去できる使用済データと関連付けられているだけであるか、あるいは既に消去されていて有効なデータを全く包含していないかである。
前述した実施形態では、ホストからの新しいデータはホストからの他の新しいデータを受け取るだけの書き込みブロックと関連付けられ、フラッシング操作でピンク色ブロックからフラッシングされる有効なデータは、特定のバンク内の、そのバンクのための1つ以上のピンク色ブロックからの有効なデータを包含するだけの再配置ブロックの中へ移される。前述したように、他の実施形態でフラッシングされるピンク色ブロックの選択を行うことができ、その場合には、現在のピンク色ブロックについての平均量などのしきい値を下回る量の赤色データと関連付けられているピンク色ブロックのリストから任意のピンク色ブロックを選択することができ、あるいはそのピンク色ブロックは、使用可能なピンク色ブロックのうちの(ピンク色ブロックと関連付けられている有効データの量に基づく)特定の順位を有するピンク色ブロックのうちのどれであってもよい。
フラッシング操作は「熱い」データが使用済みにされたブロックから割合に「冷たい」データを、同様に割合に「冷たい」データを包含する再配置ブロックへ再配置する。これは、割合に「熱い」ブロックおよび割合に「冷たい」ブロックの別々の集団を作るという効果を有する。フラッシングされるべきブロックは、常に、最少量のデータを包含する「熱い」ブロックとして選択される。「熱い」ブロックの集団を作れば、再配置されなければならないデータの量が減ることにより、メモリのストレス要因が減少する。
一実施形態では、フラッシングブロックとして選択されるピンク色ブロックは、内容が最もまばらなピンク色ブロック、すなわち、最少量の有効なデータを包含するピンク色ブロックであってよくて、ホストにより実行される特定の書き込みおよび消去操作に応答して選択されるのではない。このようにして行われるピンク色ブロックのフラッシングブロックとしての選択は、最小限の有効データ再配置でブロックフラッシング操作を行うことを可能にする。それは、そのように選択されるどのピンク色ブロックも、ホストによるファイルの削除に起因して最大限の数の未割り当てデータアドレスを蓄積しているからである。
ピンク色ブロック選択プロセスの一例は、最低数の有効ページまたはクラスタを有する5%のピンク色ブロックのうちの任意のピンク色ブロックを選択することである。バックグラウンド処理で、最低のページまたはクラスタ総数値を有する16個のピンク色ブロックのリストが作られる。ピンク色ブロック特定プロセスは、「P」個のスケジュールされたブロックフラッシング操作により費やされる時間のうちに1サイクルを完了することができる。フラッシングブロック特定プロセスにおける1サイクルが図21に示されている。白色、ピンクおよび他のタイプのDLBAアドレスブロックについてのブロックアドレスのリストを包含するブロック情報テーブル(BIT)が、以下でより詳しく記述されるように、各バンク107A〜107Bのためにストレージアドレス再マッピング機能によって別々に維持され、前のプロセスサイクルの間に特定されたブロックのセットの後にQ個のピンク色ブロックの次のセットを特定するために読み出される(ステップ2102において)。各バンクのために独立に、装置初期化後の第1のプロセスサイクルでピンク色ブロックの第1のセットが特定されるべきである。フラッシングブロックの利用可能性を保証するために、Qの値はPのものより大であるべきである。一実施例では、Qの値は8でPは4であり得る。有効ページ総数値はセット中のピンク色ブロックの各々のためにゼロにセットされる(ステップ2104において)。セット中のどのピンクブロックの中に位置する有効データページをも特定するために、LBAおよびDLBAの関係を追跡するために維持されるストレージアドレステーブル(SAT)ページエントリが一度に1つずつスキャンされる(ステップ2106において)。ストレージアドレステーブルは以下でより詳しく記述される。有効ページ総数値は、それに応じてインクリメントされる。全てのSATページがスキャンされた後、セット中のピンク色ブロックの各々についての有効ページ総数値は、低有効ページ総数値を求めてリスト中のピンク色ブロックについてのものと対照して評価され、必要ならばリスト中のブロックはセットからのブロックにより取って代わられる(ステップ2108において)。ブロックフラッシング操作の完了後、次のブロックフラッシング操作のために次のブロックが選択されるべきである。これは、リスト中の最低有効ページ総数値を有するブロックであるべきである。
図19〜20に関して記述したような、特定のバンク107A〜107Dにおけるブロックフラッシング操作を開始する前に、再配置されなければならない有効なDLBAランの位置を判定するために、選択されたブロックはマッピングされなければならない。これは、ブロックから読み出されるデータの選択されたページのヘッダ内のLBAアドレスと、これらのLBAアドレスについてのSATエントリとを使用するサーチアルゴリズムによって成し遂げられる。サーチアルゴリズムは、それ自身が徐々に構築する既知の有効なおよび使用済みとなったDLBAランのマップを使用する。有効なDLBAランは、SATエントリがブロックにおけるその存在を明示していると、ブロックマップに加えられる。使用済みとなったDLBAランは、マッピングされるブロック内のデータページヘッダ内のLBAの範囲についてのSATエントリが他のブロックにおける有効なDLBAの存在を明示しているとき、ブロックマップに加えられる。サーチプロセスは、ブロック内の全てのDLBAアドレスが有効または使用済として明白にマッピングされるまで続く。
ブロックフラッシング操作では、前述したブロックマッピングプロセスで特定された有効なDLBAランの中の全てのページが、選択されたピンク色ブロックから同じバンク内の再配置ブロック内の再配置ポインタへ再配置される。再配置されたDLBAについてのエントリがSATリストにおいて記録される。有効なおよび使用済みとなったDLBAランのためのサーチは、図11に示されている構成の場合にはメモリシステム102のコントローラ108によって実行され、ブロックDLBAマップはコントローラと関連付けられたRAMに格納され得る。図12の構成では、ホストシステム100に存するCPU109がサーチを実行し、その結果として得られたブロックDLBA情報をホストシステムCPUと関連付けられているRAMに格納することができる。
マルチバンクメモリ構成のためのストレージアドレス再マッピングアルゴリズムは、特定のバンク内の白色ブロックの数が所定しきい値未満にまで減ると、書き込みブロックにおけるホストデータの書き込みにより白色ブロック容量が消費されるのと同じ速度でデータ書き込みのために割り当てられ得る使用可能な白色ブロック容量が作られることを保証するのに充分な速度でそのバンクにおいてピンク色ブロックに対するフラッシング操作が行われなければならないという原理にしたがって動作する。ホストからのデータを書き込むことによって消費される書き込みブロック内のページの数は、ブロックフラッシング操作によって回復される使用済ページの数と釣り合わされなければならない。ブロックフラッシング操作の完了後、前述したように、BITおよびSATから特定のエントリを読み出すことによって、次のブロックフラッシング操作のために選択されたピンク色ブロック内の使用済データのページの数が判定される。次のブロックフラッシング操作は、データのこの数の有効ページを書き込みブロックに書き込んだ直後に始まるようにスケジュールされ得る。さらに、フラッシング操作を開始するためのしきい値は各バンクのために異なっていてもよい。例えば、ある1つのバンク内のピンク色ブロックの有効データの平均量に基づいてしきい値がトリガされれば全てのバンクにおいてほぼ同じ速度で白色ブロックが作成され得るように、フラッシングのためのしきい値はバンク内で再配置されるべきデータの量に基づいて適応的であり得る。
ストレージアドレステーブル
前述したストレージアドレス再マッピングを実行するために、図17に関して一般的に記述したものなどのストレージアドレステーブル(SAT)1704が、ストレージアドレス空間内のデータの位置を追跡するために使用される。SAT内の情報は、順次更新の一部として完全なフラッシュメタブロックにも書き込まれる。したがって、一実施例では、SAT情報は、ホストから受け取られるデータのために使用される書き込みブロックとは別であり、かつフラッシング操作に使用される再配置ブロックとも異なる書き込みブロックに書き込まれる。他の実施例では、SAT情報は、ブロック、例えば、非SAT情報により占められるMLCフラッシュパーティションではないバイナリフラッシュパーティション内のブロックの異なるグループに格納され得る。あるいは、SATデータと非SATデータとは同じタイプのフラッシュブロックに、ブロックを単位として分離されて、格納され得る。さらに他の実施形態では、SATデータと非SATデータとは同じブロック内で混ぜ合わされ得る。SAT1704はマルチバンクメモリ107内の全てのバンク107A〜107Dのための単一のテーブルであることができ、他の実施形態では各バンクは、その特定のバンク内の情報をマッピングするだけの独立のSATを維持することができる。
SATは、図10〜12の実施形態の各々に関連する。さらに、以下の論議はホストLBAから図11〜12のホストおよびメモリシステム構成に関連するDLBAと呼ばれる第2のLBA空間(ストレージLBAとも称される)への再マッピングに焦点を当てるけれども、その同じSAT手法が、ホストLBAアドレスに関連付けられたデータが中間の論理対論理変換を伴わずに物理的ブロックに直接マッピングされる図10の実施形態に適用可能である。SAT情報は、論じられる実施形態に関わらず、好ましくは記憶装置内のフラッシュメモリに格納される。ホストLBAからDLBAへの再マッピングがホスト1202において行われる図12の実施形態では、SAT情報はメモリシステム1204のフラッシュメモリに格納されるべく送られる。ストレージアドレス再マッピングアルゴリズムがメモリシステムの中のメモリマネージャにおいて実行される図10の実施形態では、DLBAという用語は、図11〜12の実施形態で使用される第2の論理アドレス空間ではなくてフラッシュメモリ107内の物理アドレスを指し、DLBAアドレスのブロックは物理メモリ内のメタブロックを表す。
ストレージアドレステーブル(SAT)は、ホストファイルシステムによって割り当てられたLBAアドレスをDLBAアドレスに関連付ける相関情報を含む。より具体的には、SATは、ホストファイルシステムによって有効なデータに割り当てられたLBAアドレス空間の中のアドレスの全ランの各々と、ストレージアドレス再マッピングアルゴリズムによって作成されたDLBAアドレス空間の中のアドレスの1つ以上のランとの間のマッピングを記録するために使用される。前述したように、システムアドレス空間の単位はLBAであり、LBAランは、ホストファイルシステムによって有効なデータに現在割り当てられているLBAアドレスの連続的セットである。LBAランはしばしば未割り当てLBAアドレスと接するけれども、SATデータ構造により必要とされるならばLBAランは複数のより小さなLBAランとして管理され得る。装置アドレス空間の単位はDLBAであり、DLBAランは、同じLBAランの中の連続するLBAアドレスにマッピングされているDLBAアドレスの連続的セットである。DLBAランは、DLBAアドレス空間の中のブロック境界で終わらせられる。各LBAランは、SATによって1つ以上のDLBAランにマッピングされる。LBAランの長さは、それがマッピングされているDLBAランの累積長さに等しい。
LBAランのためのSATエントリは、それがマッピングされている第1のDLBAランと、DLBAランが置かれているバンクとのためのエントリへのリンクを包含する。それがさらにマッピングされ得るその後のDLBAランは、このランに直接続く連続するエントリである。DLBAランは、LBAランの絶対LBAアドレスへのではなくて、それがマッピングされているLBAランの中のもののオフセットアドレスへの逆方向リンクを包含する。個々のLBAアドレスは、LBAランの中でのLBAオフセットとして明示され得る。SATは、LBAランにマッピングされている各DLBAランの先頭に対応するLBAオフセットを記録する。したがって、個々のLBAアドレスに対応する個々のDLBAアドレスは、DLBAランの中のDLBAオフセットとして特定され得る。SAT内のLBAランは有効なデータのランだけのためのものであり得るけれども、他の実施例では、SATは有効なデータおよび使用済みとなったデータの両方のためのLBAランを記憶するようにも構成されてもよい。
SATは、SATブロックとして知られるLBAアドレスのブロックの中に実現され得る。SATは、所定の最大数のSATブロックを含み、所定の最大数の有効なSATページを包含する。したがって、SATは、指定された最大数のSATブロックについて、それ自身が索引付けできる最大数のDLBAランを有する。一実施形態では、最大数のSATブロックが定義されるけれども、SATのエントリの数はホストにより割り当てられたLBAの断片化に順応するので、SATは最大数まで自動的にスケーラブルな可変サイズのテーブルである。したがって、ホストが非常に断片化したLBAを割り当てれば、SATは、断片化の程度がより低いLBAのグループをデータに割り当てる場合より多いエントリを含む。したがって、ホストLBAの断片化の程度がより低くなれば、SATのサイズは小さくなる。断片化の程度が低ければマッピングするべき別々のランが少なくなり、別々のランが少なければSATのエントリは少なくなる。それは、SATは、固定された数の論理アドレスを厳格に追跡し更新するのではなくてエントリにおいてホストLBAアドレスのランを1つ以上のDLBAランにマッピングするからである。
図17のSATのLBAラン対DLBAランのマッピング構成に起因して、ホストLBAアドレスの1つのランを2つ以上のDLBAランにマッピングすることができ、ここでホストLBAランは有効なデータに割り当てられている連続する論理アドレスのセットであり、DLBA(あるいはストレージLBA)ランは同じメタブロックの中にあって同じホストLBAランにマッピングされているDLBAアドレスの連続的セットである。SAT索引付けおよびマッピング構造の階層が図22に示されている。LBAラン2204および対応するDLBAラン2202が示されている。LBA対DLBAマッピング情報はSATページ2206に包含されている。LBA対SATページ索引付け情報はSAT索引ページ2208に包含され、マスタページ索引2210は、図12の実施例ではホストプロセッサと関連するRAMに、図10〜11の実施例ではコントローラ108と関連するRAM212にキャッシュされる。
SATは通常複数のSATブロックを含むけれども、SAT情報はSAT書き込みブロックと現在指し示されている単一のブロックに書き込まれ得るだけである。他の全てのSATブロックは完全に書き込まれていて、有効なページおよび使用済ページの組み合わせを包含し得る。SATページは、ホストLBAアドレス空間の1つの可変範囲内の全てのLBAランのためのエントリを、それらがマッピングされている装置アドレス空間内のランのためのエントリと共に包含する。多数のSATページが存在し得る。SAT索引ページは、ホストLBAアドレス空間のより大きな範囲の中の全ての有効なSATページの位置への索引を包含する。少数のSAT索引ページが存在し、それは通例1である。SAT内の情報は、単一のSAT書き込みブロック内の次の使用可能な位置に更新済みページを再書き込みしてページの前のバージョンを使用済みとして扱うことによって改変される。したがって、SAT内に多数の無効なページが存在し得る。SATブロックは、SATページがメガブロックにではなくて1つのバンク内の個々のブロックに書き込まれるということと、ピンク色SATブロックからの有効なデータが別の再配置ブロックではなくて現在のSAT書き込みブロックにコピーされるということとを除いてホストデータについて前述したものと類似する、ページを書き込みブロックをフラッシングするためのアルゴリズムによって、管理される。
各SATブロックは、SAT情報の格納に専用されるDLBAアドレスのブロックである。SATブロックはテーブルページに分割され、それらにSATページ2206またはSAT索引ページ2208を書き込むことができる。SATブロックは、有効なSATページ2206、有効なSAT索引ページ2208および使用済ページの任意の組み合わせを包含することができる。図23を参照すると、サンプルであるSAT書き込みブロック2300が示されている。データは、SAT書き込みブロック2300内の、インクリメントなSAT書き込みポインタ2302によって定められる連続する位置に書き込まれる。データは、SAT書き込みブロック2300として指定されている単一のSATブロックに書き込まれ得るだけである。前述したホストデータ書き込みブロックの場合と同様に、SAT書き込みブロック2300が完全に書き込まれて初めて1つの白色ブロックが新しいSAT書き込みブロック2300として割り当てられる。SATページ位置は、そのSATブロックの中でのもののシーケンス番号によってアドレス指定される。全てのバンクのために単一のSATが維持される1つの実施形態では、コントローラは、新しいSAT白色ブロックを割り当てるためにどのバンク107A〜107Dを使用するかを交互に選択することができる。このようにして、SATを格納するために1つのバンクを不均衡に使用することを避けることができる。
SATページ
SATページ2206は、SATにおけるマッピング情報の最小更新可能単位である。更新済みSATページ2206はSAT書き込みポインタ2302により定められる位置に書き込まれる。SATページ2206は、インクリメントするLBAアドレスを有するLBAランのセットについてのマッピング情報を包含するけれども、引き続くLBAランのアドレスは連続していなくてもよい。SATページ2206内のLBAアドレスの範囲は他のどのSATページ2206内のLBAアドレスの範囲とも重なり合わない。SATページ2206は、SATブロックの完全なセットの全体にわたって無制限に分散され得る。LBAアドレスの任意の範囲についてのSATページ2206が任意のSATブロック内にあってよい。SATページ2206は、索引バッファフィールド2304と、LBAフィールド2306と、DLBAフィールド2308と制御ポインタ2310とを含むことができる。パラメータバックアップエントリも、揮発性RAMに格納されているいくつかのパラメータの値を包含する。
SATページ2206内のLBAフィールド2306は、LBAアドレスのある範囲の中で、データ格納のために割り当てられている連続するLBAアドレスのランのためのエントリを包含する。SATページ2206がまたがるLBAアドレスの範囲は、他のどのSATページ2206がまたがるLBAエントリの範囲とも重なり合わない。LBAフィールドは、可変長のフィールドであって、可変数のLBAエントリを包含する。LBAフィールド2306の中に、SATページ2206により索引付けされるLBAアドレスの範囲の中のどのLBAランのためにもLBAエントリ2312が存在する。LBAランは、1つ以上のDLBAランにマッピングされる。図24に示されているように、LBAエントリ2312は、次の情報、すなわち、ランの中の第1のLBA2402と、セクタ数で表したLBAランの長さ2404と、LBAランがマッピングされている第1のDLBAランの、同じSATページ2206内のDLBAフィールドの中での、DLBAエントリ番号およびバンク番号2406とを含む。
SATページ2206の中のDLBAフィールド2308は、同じSATページ2206内のLBAフィールドの中のLBAランにマッピングされたDLBAアドレスの全てのランのためのエントリを包含する。DLBAフィールド2308は、可変長であって、可変数のDLBAエントリ2314を包含する。DLBAフィールド2308の中で、同じSATページ2206のLBAフィールド2306の中のLBAランにマッピングされているどのDLBAランについてもDLBAエントリ2314が存在する。各DLBAエントリ2314は、図25に示されているように、次の情報、すなわち、ラン内の第1のDLBAアドレス2502と、第1のDLBAアドレスがマッピングされているLBAランにおけるLBAオフセット2504とを含む。全てのSATページ2206の各々の一部分として書き込まれるけれども最も最近に書き込まれたSATページ2206においてのみ有効なままであるSATページ/索引バッファフィールドは、SAT索引エントリ2316を包含する。マルチバンクメモリ107のために単一のSATが維持される実施形態において、ラン内の第1のDLBAのエントリ2502にバンク番号も含まれる。各バンクにおいて別々のSATが維持される代わりの実施形態では、出発DLBAアドレスが既にバンク特有であるから、DLBAエントリ2314においてバンク情報は不要である。
図26に示されているSAT索引エントリ2316は、関連するSAT索引ページ2208内に有効なエントリを現在持っていないSAT内のどのSATページ2206のためにも存在する。SAT索引エントリは、SATページ2206が書き込まれるたびに作成または更新され、関連するSAT索引ページ2208が更新されると削除される。それは、SATページ2206により索引付けされる第1のLBA2602と、SATページ2206により索引付けされる最後のLBA2604と、SATページ2206を包含するSATブロック番号およびバンク番号2608と、SATブロックの中のSATページ2206のページ番号2610とを包含する。SAT索引フィールド2318は、固定された数のSAT索引エントリ2320のための容量を有する。この数は、SATページ2206およびSAT索引ページ2208が書き込まれ得る相対頻度を決定する。一実施例では、この固定された数は32であり得る。
SATページのフィールドポインタ2310は、LBAフィールドの先頭からDLBAフィールドの先頭までのオフセットを定める。それは、LBAエントリの数としてのオフセット値を包含する。SATページ2206内のパラメータバックアップエントリは、揮発性RAMに格納されているパラメータの値を包含する。これらのパラメータ値は、パワーサイクル後に(図8〜9の実施例ではコントローラ108と関連付けられ、図10の実施例ではホストCPUと関連付けられている)RAM内の情報の初期化中に使用される。それらは、最も最近に書き込まれたSATページ2206においてのみ有効である。
SAT索引ページ
SAT索引ページ2208のセットは、SAT内のどの有効なSATページ2206の位置への索引をも提供する。個々のSAT索引ページ2208は、1つの範囲のLBAアドレスに関連する有効なSATページの位置を定めるエントリ2320を包含する。SAT索引ページ2208がまたがるLBAアドレスの範囲は、他のどのSAT索引ページ2208がまたがるLBAアドレスの範囲とも重なり合わない。エントリは、それらが関連するSATページのLBAアドレス範囲値にしたがって整理される。SAT索引ページ2208は、固定された数のエントリを包含する。SAT索引ページ2208は、SATブロックの完全なセットの全体にわたって無制限に分散され得る。任意の範囲のLBAアドレスのためのSAT索引ページ2208が任意のSATブロック内にあってよい。SAT索引ページ2208は、SAT索引フィールドとページ索引フィールドとを含む。
SAT索引フィールド2318は、SAT索引ページ2208がまたがるLBAアドレス範囲の中の全ての有効なSATページのためのSAT索引エントリを包含する。SAT索引エントリ2320は、単一のSATページ2206に関連し、次の情報、すなわち、SATページ2206により索引付けされる第1のLBAと、SATページ2206を包含するSATブロック番号と、SATブロックの中のSATページ2206のページ番号とを包含する。ページ索引フィールドは、SAT内の全ての有効なSAT索引ページ2208のためのページ索引エントリを包含する。ページ索引エントリは、SAT内のどの有効なSAT索引ページ2208のためにも存在し、次の情報、すなわち、SAT索引ページによって索引付けされる第1のLBAと、SAT索引ページを包含するSATブロック番号と、SATブロックの中のSAT索引ページのページ番号とを包含する。ページ索引エントリは、最も最近に書き込まれたSAT索引ページ2208においてのみ有効である。
一時的なSATデータ構造
図22に示されているアドレスマッピングの長期記憶のためのSAT階層の一部ではないけれども、SATを更新するための階層的プロシージャの中で追加のデータ構造が使用され得る。1つのそのような構造は、LBAエントリと、SATページ2206にまだ書き込まれていないLBAランに対する更新操作またはブロックフラッシング操作から生じた新しいアドレスマッピングのための新しいエントリのための対応するDLBAマッピングとを含むSATリストである。SATリストはRAM内の揮発性構造であり得る。SATリスト内のエントリは、SATページ更新中にそれらがSATページ2206に書き込まれると、クリアされる。
テーブルページ
テーブルページは、SATブロック内のDLBAアドレス空間の固定されたサイズの単位であり、これは1つのSATページ2206または1つのSAT索引ページ2208を記憶するために使用される。テーブルページの最小サイズは1ページであり、最大サイズは1メタページであり、ここでページおよびメタページは、各バンク107A〜107Dのための物理メモリにおけるページおよびメタページに対応するDLBAアドレス空間の単位である。
SATにおけるエントリのサイズ
SATページ2206およびSAT索引ページ2208の中のエントリのサイズが表1に示されている。
Figure 2011519095
アドレス変換
SATは、ホストファイルシステムのLBAアドレスに対応するDLBAアドレスを迅速に突き止めるために有益である。一実施形態では、有効なデータにマッピングされているLBAアドレスだけがSATに含まれる。SATページ2206は、1SATページ2206から別のSATページへとLBA範囲同士が重なり合わないようにLBA順に配列されるので、所望のデータに向かって迅速に進むために単純なサーチアルゴリズムが使用され得る。このアドレス変換プロシージャの一例が図27に示されている。ターゲットLBA2702がまず(ストレージアドレス再マッピングの実施例がそれぞれ図11のように構成されているかまたは図12のように構成されているかにより)コントローラまたはプロセッサによって受け取られる。他の実施形態では、SATが有効なデータおよび使用済みとなったデータにマッピングされたLBAアドレスを含んで、データが有効であるのかそれとも使用済みとなっているのかを追跡するということが考慮され得る。
図27は、アドレス変換プロシージャを示すほかに、最後に書き込まれたSAT索引ページからのページ索引フィールドと最後に書き込まれたSATページからの索引バッファフィールドとがどのように構成され得るかも示す。図27の実施例では、これら2つのフィールドは、ストレージ装置またはホストのRAMなどの揮発性メモリで一時的に維持される。最後に書き込まれたSAT索引ページのページ索引フィールドは、どのSAT索引ページへのポインタをも含む。索引バッファフィールドは、索引ページにまだ書き込まれていない最近書き込まれたSATページのための索引エントリのセットを包含し得る。
対応するDLBAアドレスとのターゲットLBAアドレスについてのマッピング情報は、そのターゲットアドレスを含む1つの範囲のLBAアドレスについての全マッピング情報を包含する特定のSATページ2206において保持される。アドレス変換プロシージャの第1の段階は、このターゲットSATページを識別して読むことである。図27を参照すると、ターゲットLBAのためのSAT索引エントリが存在するか否かを判定するために、最後に書き込まれたSATページの索引バッファフィールドのキャッシュされているバージョンに対して二分探索が実行される(ステップ2704において)。ターゲットSATページが最近再書き込みされているけれどもターゲットSATページの新しい位置を記録したSAT索引エントリを組み込んだSAT索引ページがまだ書き込まれていなければ、1つのエントリが存在する。ターゲットLBAのためのSAT索引エントリが発見されたならば、それはターゲットSATページの位置を定義し、このページが読み出される(ステップ2706において)。
ステップ2704でターゲットLBAのためのSAT索引エントリが発見されなければ、ターゲットLBAのためのSAT索引エントリの位置を突き止めるために、最後に書き込まれたSAT索引ページのページ索引フィールドのキャッシュされたバージョンに対して二分探索が実行される(ステップ2708において)。ステップ2708で発見されたターゲットLBAのためのSAT索引エントリは、ターゲットLBAを包含するLBAアドレス範囲のためのSAT索引ページの位置を定める。このページが読み出される(ステップ2710において)。ターゲットLBAのためのSAT索引エントリの位置を突き止めるために二分探索が実行される(ステップ2712において)。ターゲットLBAのためのSAT索引エントリは、ターゲットSATページの位置を定める。このページが読み出される(ステップ2714において)。
ターゲットSATページがステップ2706またはステップ2714で読まれると、LBAからDLBAへの変換が次のように実行され得る。ターゲットLBAを組み込んだターゲットLBAランのためのLBAエントリの位置を突き止めるために、LBAフィールドに対して二分探索が実行される。ターゲットLBAランの中でのターゲットLBAのオフセットが記録される(ステップ2716において)。フィールドポインタ内の情報は、二分探索のためのLBAフィールドの長さ、さらにLBAフィールドの先頭に対してのDLBAフィールドの先頭をも定める(ステップ2718において)。ステップ2716で発見されたLBAエントリは、LBAランにマッピングされている第1のDLBAエントリのDLBAフィールドの中での位置を定める(ステップ2720において)。ステップ2716で判定されたオフセットは、ステップ2720で位置が突き止められたより多くのDLBAエントリのうちの1つと共に、ターゲットDLBAアドレスを判定するために使用される(ステップ2722において)。
ストレージアドレス再マッピングアルゴリズムは、白色ブロックの数が所定のしきい値未満にまで減ると、書き込みブロックにおけるホストデータの書き込みにより白色容量が消費されるのと同じ速度でデータ書き込みのために割り当てられ得る使用可能な白色容量が作られることを保証するのに充分な速度でピンク色ブロックに対するフラッシング(再配置とも称される)操作が行われなければならないという原理にしたがって動作する。データ書き込みのために割り当てられ得る使用可能な白色クラスタ容量は、白色ブロック内の容量に加えて、フラッシング操作中にデータが書き込まれ得る再配置ブロックの中の白色クラスタ容量である。
フラッシング操作のために選択されたピンク色ブロック内の白色クラスタ容量が各ピンク色ブロックのx%を占めるならば、1つのピンク色ブロックに対するフラッシング操作によって作られる新しい使用可能な容量は、そのピンク色ブロックから作られる1つの完全な白色ブロックからそのフラッシングされるブロックからのデータの再配置によって再配置ブロックにおいて消費される1ブロックを差し引いた(100−x)パーセンテージである。したがって、1つのピンク色ブロックに対するフラッシング操作は、1白色ブロックのx%の新しい使用可能な容量を作る。したがって、書き込まれるホストデータにより満たされる各書き込みブロックのために、100/x個のピンク色ブロックに対してフラッシング操作が実行されなければならず、再配置されなければならないデータは(100−x)/xブロックである。したがって、プログラムされたセクタの、ホストにより書き込まれたセクタに対する比は、およそ1+(100−x)/xとして定義される。
1つの平均的ピンク色ブロックにおける白色クラスタ容量のパーセンテージは、使用されている総装置容量のパーセンテージと、赤色ブロックであるデータを包含しているブロックのパーセンテージとにより決定される。例えば、装置が80%満たされ、データを包含するブロックの30%が赤色ブロックであるならば、ピンク色ブロックは26.2%白色クラスタ容量を含む。装置内のLBAアドレスでのデータ削除の分布が不均一であれば、あるピンク色ブロックが白色容量の平均%の2倍を有するという結果になりそうである。したがって、この例では、フラッシング操作のために選択されるピンク色ブロックは52.4%白色容量を有し、すなわちx=52.4であり、ホストにより書き込まれたデータのセクタあたりのプログラムされたセクタの比は1.90になる。
どのピンク色ブロックをフラッシングするかを決定するときには、それがホストデータピンク色ブロックであろうとSATピンク色ブロックであろうと、ストレージアドレス再マッピングアルゴリズムは、NTFSにより書き込まれる$bitmapファイルを監視することによって未割り当てアドレスの指示を検出することができる。フラッシング操作は2つの仕方でスケジュールされ得る。好ましくは、フラッシング操作は、バックグラウンド操作として動作し、したがって、SSDまたは他の携帯可能なフラッシュ記憶装置がアイドルでホストデータ書き込み速度が影響を受けない間に限って機能する。あるいは、フラッシング操作は、ホストがデータを書き込んでいるときにアクティブであるフォアグラウンド操作で利用されてもよい。フラッシング操作がフォアグラウンド操作として構成されるならば、これらの操作は、ホストアクティビティが発生したとき、あるいは「フラッシュキャッシュ」コマンドがSSDまたは携帯可能なフラッシュ記憶装置の潜在的なパワーダウンを示すときに、自動的にサスペンドされ得る。フォアグラウンドおよびバックグラウンドフラッシング操作選択は動的決定であってよく、記憶装置がアイドル状態である間に達成され得るよりも高いフラッシング速度が必要とされるときにはフォアグラウンド操作が行われる。例えば、記憶装置が満杯になるまで一定のホストデータ書き込み速度を維持するようにフラッシング速度が制御されるようにホストまたは記憶装置はフォアグラウンドフラッシング操作およびバックグラウンドフラッシング操作の間でトグルすることができる。フォアグラウンドフラッシング操作は、ホストデータ書き込み操作と交互配置され得る。例えば、ホストインターフェイスでアクティビティが続けられているために充分なアイドル時間が利用できなければ、ブロックフラッシング操作を実行するためのデータページの再配置は、ホストコマンドに応答して短いバーストをなして装置アクティビティと交互配置され得る。
SAT更新手続き
SATデータ構造の中の要素は、表2に示されている階層的プロシージャを用いて更新される。
Figure 2011519095
表2に書き留められているように、DLBAラン更新を除いて、特定の構造のためのSAT更新は、SAT階層の中のより下位の構造におけるアクティビティによってトリガされる。SATリストは、完全なDLBAランと関連するデータが書き込みブロックに書き込まれるたびに更新される。最大許容数のエントリがSATリストに存在するときに1つ以上のSATページが更新される。SATページが更新されるとき、SATリストからの1つ以上のエントリがSATページに加えられ、SATリストから除去される。SATリストが満杯であるときに更新されるSATページを、ページのいくつかの異なるグループに分割することができ、単一のグループだけが単一の操作で更新されなければならない。これは、SAT更新操作がホストからのデータ書き込み操作を遅らせるかもしれない時間を最小にするのに役立ち得る。この場合、SATリストから、更新されたSATページのグループにコピーされるエントリだけがSATリストから除去される。更新されるSATページのグループのサイズは、ホストシステム100のメモリシステム102にアクセスする能力を妨げないポイントにセットされ得る。1つの実施例では、グループサイズは4SATページであり得る。
SAT索引バッファフィールドは、最も最近に書き込まれたSATページにおいて有効である。それは、SATページが書き込まれるたびに、さらなるプログラミングなしで更新される。最後に、最大許容数のエントリがSAT索引バッファに存在するとき、SAT索引ページが更新される。SAT索引ページ更新中、SAT索引バッファからの1つ以上のエントリがSAT索引ページに加えられ、SAT索引バッファから除去される。SATページ更新に関して前に書き留められたように、更新されなければならないSAT索引ページをページのいくつかの異なるグループに分割することができ、単一のグループだけが単一の操作で更新されなければならない。これは、SAT更新操作がホストからのデータ書き込み操作を遅らせるかもしれない時間を最小にする。SAT索引バッファから更新されたSAT索引ページのグループにコピーされるエントリだけが、SAT索引バッファから除去される。更新されたSAT索引ページのグループのサイズは、一実施例では4ページであり得る。
SATページまたはSAT索引ページがまたがるLBA範囲の中で必要とされるエントリの数は可変であって、時間と共に変化し得る。したがって、SAT内のページがオーバーフローしたり、あるいはページの内容が非常にまばらになったりするのは稀なことではない。これらの事態は、SAT内のページを分割し結合するための方式によって管理され得る。
SATページまたはSAT索引ページの更新中にエントリが加えられなければならないけれどもページにおいてその変化のために利用し得る未使用スペースが不十分であるときには、そのページは2つに分割される。1つの新しいSATページまたはSAT索引ページが導入され、以前満杯であったページと新しい空のページとのために、それらを半分満杯にするいくつかのエントリを各々に与えるLBA範囲が判定される。その後、可能ならば単一のプログラミング操作で、両方のページが書き込まれる。ページがSATページである場合には、両方のページのためのSAT索引エントリは、最後に書き込まれるSATページ内の索引バッファフィールドに含まれる。ページがSAT索引ページである場合には、ページ索引エントリは、最後に書き込まれるSAT索引ページ内のページ索引フィールドに含まれる。
隣接するLBA範囲を伴う2つ以上のSATページまたは2つのSAT索引ページの内容がまばらであるときには、ページは結合されて単一のページにされ得る。結合は、その結果としての単一のページが80%未満で満杯となるときに開始される。新しい単一のページのためのLBA範囲は、別々の結合されるページがまたがる範囲により定められる。結合されるページがSATページである場合には、新しいページと結合されるページとのためのSAT索引エントリは、最後に書き込まれるSATページ内の索引バッファフィールドにおいて更新される。ページがSAT索引ページである場合には、ページ索引エントリは、最後に書き込まれるSAT索引ページ内のページ索引フィールドにおいて更新される。
パワーサイクル後、すなわち電力が除去され回復された後、SATリストを、それがパワーサイクル前にあったのと正確に同じ状態に、RAMにおいて再構築する必要がある。これは、データヘッダ内のLBAアドレス情報から、最後のSATページ更新以来書き込まれた追加データを特定するために全ての書き込みブロックおよび再配置ブロックをスキャンすることによって成し遂げられ得る。最後のSATページ更新時におけるこれらのブロックの位置と、それらの中の書き込みポインタおよび再配置ポインタの位置とも、最後に書き込まれたSATページ内のフィールドに記録される。したがって、スキャンは単にこれらのポインタの位置から開始されればよい。
SATブロックをフラッシングすること
SATブロックをフラッシングするプロセスは、ホストから受け取られるデータについて前述したプロセスと類似するけれども、SATブロックだけに作用する。ストレージアドレス再マッピング書き込みおよびフラッシングアルゴリズムによって引き起こされるSATに対する更新は、SATブロックを図28に示されているブロック状態間で遷移させる。始めに、次のSATブロックを受け取るように現在指定されているバンクのための白色ブロックリストから1つの白色ブロックがSAT書き込みブロックとして割り当てられる(2802において)。SAT書き込みブロック内の最後のページが割り当てられると、ブロックは赤色SATブロックになる(2804において)。SAT書き込みブロックは、その中のいくつかのページが既に使用済みとなっていたならば、ピンク色SATブロックへの遷移を行ない得る。しかし、明瞭性を目的として、その遷移は図28には示されていない。SATページまたはSAT索引ページが更新されると赤色SATブロックの中の1つ以上のページが使用済みとなり、赤色SATブロックはピンク色SATブロックになる(2806において)。再配置されるデータのためにだけ指定されている特別の書き込みブロックへ有効なデータが移される、ホストデータを包含するピンク色ブロックのフラッシング操作とは違って、ピンク色SATブロックのためのフラッシング操作は、有効なSATデータを現在のSAT書き込みブロックへ単に再配置する。選択されたピンク色SATブロックに対するフラッシング操作が完了すると、そのピンク色SATブロックは白色ブロックになる(2808において)。SATピンク色ブロックは、好ましくは、同じバンク107A〜107D内のSAT書き込みブロックへフラッシングされる。
次に、どのSATブロックがフラッシングプロシージャを受けるかを選択するプロセスを記述する。少数の有効なページまたはクラスタを包含するSATブロックが、フラッシングされるべき次のSATブロックとして選択される。ブロックは、その特定バンク内のSATブロックのうちの最小数の有効なページを有するSATブロックのうちの5%の中の1つであるべきである。ブロックの選択は、各バンクにおいて最小の有効ページ総数値を有する16個のSATブロックのリストを構築するバックグラウンドプロセスによって成し遂げられ得る。このプロセスは、好ましくは、M個のスケジュールされたSATブロックフラッシング操作に費やされる時間のうちに1サイクルを終えるべきである。
次に、どのSATブロックをフラッシングするかを決定するためのバックグラウンドプロセスの1サイクルで行われるアクティビティの例が図29に示されている。まず、前のプロセスサイクルの間に特定されたブロックのセットに次ぐ、それぞれのバンク内のN個のSATブロックの次のセットを特定するために、各バンクのためのブロック情報テーブル(BIT)がスキャンされる(ステップ2902において)。装置初期化後の第1のプロセスサイクルにおいてSATブロックの第1のセットが特定されるべきである。Nの値は、その特定のアプリケーションのために適宜選択されてよく、好ましくは、SATフラッシングブロックの利用可能性を保証するためにMのために選択される値より大きい。一例として、Mは4であり、Nは8であり得る。セット中の各SATブロックについて有効ページ総数値がゼロにセットされる(ステップ2904において)。その後、セット中のいずれかのSATブロック内に位置する有効なSAT索引ページを特定するために、キャッシュされているページ索引フィールドにおいてページ索引エントリがスキャンされる(ステップ2906において)。それに応じて有効ページ総数値がインクリメントされる。セット中のいずれかのSATブロック内に位置する有効なSATページを特定するために、SAT索引エントリが各SAT索引ページにおいて順にスキャンされる(ステップ2908において)。それに応じて有効ページ総数値がインクリメントされる(ステップ2910において)。有効ページ総数値を判定するためにページ索引およびSAT索引ページがスキャンされた後、セット中のSATブロックの各々についての有効ページ総数値は、低有効ページ総数値を求めてリスト中のSATブロックについてのものと対照して評価され、必要ならばリスト中のブロックはセットからのブロックにより取って代わられる(ステップ2912において)。SATブロックフラッシング操作がスケジュールされるべきであるときには、リスト中の最低有効ページ総数値を有するブロックが選択される。
SATブロックフラッシング操作において、全ての有効なSAT索引ページおよびSATページが、選択されたブロックから、それぞれのバンク内のSAT書き込みブロック2300のSAT書き込みポインタ2302へ再配置される。ページ索引フィールドは、最後に書き込まれるSAT索引ページにおいてだけ更新される。SATブロックの数がほぼ一定に保たれるためには、SATページおよびSAT索引ページに対する更新操作によって消費されるSAT内のページの数は、SATブロックフラッシング操作によって回復される使用済みとなったSATページおよびSAT索引ページの数と釣り合わされなければならない。次のSATフラッシング操作のために選択されたSATブロック内の使用済みとなった情報のページの数は、前に図29に関して論じられたように判定される。次のSATブロックフラッシング操作は、前のSATフラッシング操作以後にSATに同数の有効情報ページが書き込まれたときに行われるようにスケジュールされ得る。さらに、コントローラ108は、各ブロックについて独立に、SATデータのピンク色ブロックをフラッシングするかあるいはホストデータのピンク色ブロックをフラッシングするかを、ピンク色ブロック内の有効なデータの量に基づいてあるいは1つ以上の他のパラメータに基づいて選択することができる。
ブロック情報テーブル(BIT)
ブロック情報テーブル(BIT)は、白色ブロック、ピンク色ブロック、およびSATブロックのためにブロックアドレスの別々のリストを記録するために使用される。マルチブロックメモリでは、各バンク107A〜107Dにおいて別々のBITが維持される。BIT書き込みブロックは、同じバンク内の他の全てのBITブロックがどこに位置するかに関する情報を包含する。一実施例では、ストレージアドレス再マッピングアルゴリズムおよび関連するシステムは、書き込みブロック、再配置ブロックまたはSATブロックとして割り当てられるべきブロックの選択を可能にするために白色ブロックのリストを維持するのが望ましい。各バンクにおいてブロックフラッシング操作の対象となるべきピンク色ブロックおよびSATブロックの選択を可能にするために、ピンク色ブロックのリストを維持することも望ましい。これらのリストは、その構造がSATのものを厳密に反映するBITにおいて維持される。一実施形態では、各バンク107A〜107Dにおいて別々のBITが維持され記憶される。他の1つの実施形態では、BITは、バンクにより索引付けされる情報を有する単一のテーブルであり得る。
BITデータ構造
各バンク内のBITは、BITブロックとして知られるDLBAアドレスのブロックの中で実現される。ブロックリスト情報がBITページの中に格納され、「DLBAブロック対BITページ」索引付け情報がBIT索引ページの中に格納される。BITページおよびBIT索引ページは、同じBITブロックの中で任意の順序で混合されてよい。BITは複数のBITブロックから成ることができるが、BIT情報はBIT書き込みブロックとして現在指定されている単一のブロックに書き込まれ得るだけである。他の全てのBITブロックは、以前に完全に書き込まれていて、有効なページおよび使用済ページの組み合わせを包含し得る。使用済BIT情報のページを削除して再使用される白色ブロックを作るために前述したSATブロックのためのものと同一のBITブロックフラッシング方式が実行される。
BITブロック
図30に示されているBITブロックは、BIT情報の格納に専用されるDLBAアドレスのブロックである。BITページ3002とBIT索引ページ3004とを含むことができる。BITブロックは、有効なBITページ、有効なBIT索引ページ、および使用済ページの任意の組み合わせを包含することができる。BIT情報は、BIT書き込みブロック3000として指定されている単一のBITブロックに書き込まれ得るだけである。BIT情報は、BIT書き込みブロック3000において、インクリメントなBIT書き込みポインタ3006により定められる順次の位置に書き込まれる。BIT書き込みブロック3000が完全に書き込まれると、1つの白色ブロックが新しいBIT書き込みブロックとして割り当てられる。BITを構成するブロックは、それらのBITブロック位置によってそれぞれ特定され、装置内のブロックの集団の中でのそれらのブロックアドレスである。BITブロックはテーブルページに分割され、それらにBITページ3002またはBIT索引ページ3004が書き込まれ得る。BITページ位置は、そのBITブロックの中でのもののシーケンス番号によってアドレス指定される。BIT情報を、フラッシュメモリの異なるブロック内で非BIT情報と分離することができ、非BIT情報とは異なるタイプのブロック(例えば、バイナリとMLC)へ分離することができたり、あるいは1つのブロック内で非BIT情報と混合することができたりする。
BITページ3002は、BITにおけるブロックリスト情報の最小更新可能単位である。更新されたBITページは、BIT書き込みポインタ3006によって定められる位置に書き込まれる。BITページ3002は、定められた範囲の中のDLBAブロックアドレスを有する白色ブロック、ピンク色ブロックおよびSATブロックのリストを包含するけれども、どのリスト中の引き続くブロックのブロックアドレスも連続的でなくてもよい。BITページ内のDLBAブロックアドレスの範囲は、他のどのBITページ内のDLBAブロックアドレスの範囲とも重なり合わない。BITページは、BITブロックの完全なセットの全体にわたって無制限に分散され得る。DLBAアドレスのどの範囲のためのBITページも、どのBITブロック内にあってもよい。BITページは、白色ブロックリスト(WBL)フィールド3008、ピンク色ブロックリスト(PBL)フィールド3010、SATブロックリスト(SBL)フィールド3012および索引バッファフィールド3014を含むとともに、さらに2つの制御ポインタ3016をも含む。パラメータバックアップエントリも、揮発性RAMに格納されているいくつかのパラメータの値を含む。
BITページ3002内のWBLフィールド3008は、BITページ3002に関連するDLBAブロックアドレスの範囲の中の、白色ブロックリスト内のブロックのためのエントリを包含する。BITページ3002がまたがるDLBAブロックアドレスの範囲は、他のどのBITページ3002がまたがるDLBAブロックアドレスの範囲とも重なり合わない。WBLフィールド3008は、可変長のフィールドであって、可変数のWBLエントリを包含する。WBLフィールドの中に、BITページ3002により索引付けされるDLBAブロックアドレスの範囲の中のどの白色ブロックについてもWBLエントリが存在する。WBLエントリは、ブロックのDLBAアドレスを包含する。
BITページ3002内のPBLフィールド3010は、BITページ3002に関連するDLBAブロックアドレスの範囲の中の、ピンク色ブロックリスト内のブロックのためのエントリを包含する。BITページ3002がまたがるDLBAブロックアドレスの範囲は、他のどのBITページ3002がまたがるDLBAブロックアドレスの範囲とも重なり合わない。PBLフィールド3010は、可変長のフィールドであって、可変数のPBLエントリを包含する。PBLフィールド3010の中に、BITページ3002により索引付けされるDLBAブロックアドレスの範囲の中のどのピンク色ブロックについてもPBLエントリが存在する。PBLエントリは、ブロックのDLBAアドレスを包含する。
BITページ内のSBLフィールド3012は、BITページ3002に関連するDLBAブロックアドレスの範囲の中の、SATブロックリスト内のブロックのためのエントリを包含する。BITページ3002がまたがるDLBAブロックアドレスの範囲は、他のどのBITページ3002がまたがるDLBAブロックアドレスの範囲とも重なり合わない。SBLフィールド3012は、可変長のフィールドであって、可変数のSBLエントリを包含する。SBLフィールド3012の中に、BITページ3002により索引付けされるDLBAブロックアドレスの範囲の中のどのSATブロックについてもSBLエントリが存在する。SBLエントリは、ブロックのDLBAアドレスを包含する。
索引バッファフィールド3014は、全てのBITページ3002の一部として書き込まれるけれども、最も最近に書き込まれたBITページにおいてのみ有効なままである。BITページ3002の索引バッファフィールド3014は、BIT索引エントリを包含する。関連するBIT索引ページ3004内に有効なエントリを現在有しないBIT内のどのBITページ3002についてもBIT索引エントリが存在する。BIT索引エントリは、BITページ3002が書き込まれるたびに作成または更新され、関連するBIT索引ページ3004が更新されると削除される。BIT索引エントリは、BITページ3002によって索引付けされる範囲の第1のDLBAブロックアドレスと、BITページ3002によって索引付けされる範囲の最後のDLBAブロックアドレスと、BITページ3002を包含するBITブロック位置と、BITブロックの中のBITページのBITページ位置とを含むことができる。索引バッファフィールド3014は、仮に32と定められる固定された数のBIT索引エントリのための容量を有する。この数は、BITページ3002およびBIT索引ページ3004が書き込まれ得る相対頻度を決定する。
BITページ3002の制御ポインタ3016は、PBLフィールド3010の先頭およびSBLフィールド3012の先頭の、WBLフィールド3008の先頭からのオフセットを定める。BITページ3002は、リストエントリの数としてのオフセット値を包含する。
BIT索引ページ
BIT索引ページ3004のセットは、BIT内の全ての有効なBITページ3002の位置への索引を提供する。個々のBIT索引ページ3004は、DLBAブロックアドレスの1つの範囲に関連する有効なBITページの位置を定めるエントリを包含する。BIT索引ページがまたがるDLBAブロックアドレスの範囲は、他のどのBIT索引ページ3004がまたがるDLBAブロックアドレスの範囲とも重なり合わない。エントリは、それらが関連するBITページ3002のDLBAブロックアドレス範囲値にしたがって整理される。BIT索引ページ3004は、固定された数のエントリを包含する。
BIT索引ページは、BITブロックの完全なセットの全体にわたって無制限に分散され得る。DLBAブロックアドレスのどの範囲のためのBIT索引ページ3004も、どのBITブロック内にあってもよい。BIT索引ページ3004は、BIT索引フィールド3018およびページ索引フィールド3020を含む。BIT索引フィールド3018は、BIT索引ページ3004がまたがるDLBAブロックアドレス範囲の中の全ての有効なBITページのためのBIT索引エントリを含む。BIT索引エントリは、単一のBITページ3002に関連し、BITページにより索引付けされる第1のDLBAブロックと、BITページを包含するBITブロック位置と、BITブロックの中のBITページのBITページ位置とを含むことができる。
BIT索引ページ3004のページ索引フィールド3020は、BIT内の全ての有効なBIT索引ページのためのページ索引エントリを包含する。BITページ索引エントリは、BIT内のどの有効なBIT索引ページ3004のためにも存在し、BIT索引ページにより索引付けされる第1のDLBAブロックと、BIT索引ページを包含するBITブロック位置と、BITブロックの中のBIT索引ページのBITページ位置とを含むことができる。
BITを維持すること
BITページ3002は、WBL3008、PBL3010およびSBL3012にエントリを加え、あるいはこれらからエントリを削除するために更新される。数個のエントリに対する更新がRAM内のリストに、そのリストがパワーサイクル後にRAMに回復され得るということを条件として、蓄積されてBITにおいて単一の操作で実行され得る。BIT索引バッファフィールドは、最も最近に書き込まれたBITページにおいて有効である。BITページが書き込まれるたびに付加的なプログラミングなしで更新される。BIT索引ページが更新されるとき、BIT索引バッファからの1つ以上のエントリがBIT索引ページに加えられ、BIT索引バッファから除去される。最大許容数のエントリがBIT索引バッファ内に存在するときには1つ以上のBIT索引ページ3004が更新される。
BITページ3002またはBIT索引ページ3004がまたがるDLBAブロック範囲の中に必要とされるエントリの数は可変であって、時間と共に変化し得る。したがって、BIT内のページがオーバーフローしたり、あるいはページの内容が非常にまばらになったりするのは稀なことではない。これらの事態は、BIT内のページを分割し結合するための方式によって管理され得る。
BITページ3002またはBIT索引ページ3004の更新中にエントリが加えられなければならないけれどもページにおいてその変化のために利用し得る未使用スペースが不十分であるときには、そのページは2つに分割される。1つの新しいBITページ3002またはBIT索引ページ3004が導入され、以前満杯であったページと新しい空のページとのために、それらを半分満杯にするいくつかのエントリを各々に与えるDLBAブロック範囲が判定される。その後、可能ならば単一のプログラミング操作で、両方のページが書き込まれる。ページがBITページ3002である場合には、両方のページのためのBIT索引エントリは、最後に書き込まれるBITページ内の索引バッファフィールドに含まれる。ページがBIT索引ページ3004である場合には、ページ索引エントリは、最後に書き込まれるBIT索引ページ内のページ索引フィールドに含まれる。
逆に、隣接するDLBAブロック範囲を有する2つ以上のBITページ3002、あるいは2つのBIT索引ページ3004の内容がまばらであるときには、ページは結合されて単一のページとされ得る。結合は、結果として生じる単一のページが80%満たされるに過ぎないときに開始される。新しい単一のページのためのDLBAブロック範囲は、別々の結合されるページがまたがる範囲により定められる。結合されるページがBITページである場合には、新しいページおよび結合されるページのためのBIT索引エントリは、最後に書き込まれるBITページ内の索引バッファフィールドにおいて更新される。ページがBIT索引ページである場合には、ページ索引エントリは、最後に書き込まれるBIT索引ページ内のページ索引フィールドにおいて更新される。
BITブロックをフラッシングすること
BITブロックをフラッシングするプロセスは、SATブロックについて前に記載したプロセスに厳密に従い、ここでは繰り返されない。
制御ブロック
他の実施形態では、BITおよびSAT情報は同じブロックの異なるページに格納され得る。制御ブロックと称されるこのブロックは、1ページのSATまたはBIT情報が制御ブロック内の1ページを占めるように構造化され得る。制御ブロックは、整数個のページを有するページユニットから成ることができ、各ページユニットは制御ブロックの中でのそれ自身のシーケンス番号によりアドレス指定される。ページユニットは、物理メモリにおいて1ページの最小サイズおよび1メタページの最大サイズを有することができる。制御ブロックは、有効なSATページ、SAT索引ページ、BITページ、BIT索引ページ、および使用済ページの任意の組み合わせを包含することができる。したがって、別々のSATおよびBITブロックを持つのではなくて、SATおよびBIT情報の両方を同じ1つのまたは複数のブロックに格納することができる。前述した別々のSATおよびBIT書き込みブロックの場合と同じく、制御情報(SATまたはBIT情報)を単一の制御書き込みブロックに書き込むことができるに過ぎず、制御書き込みポインタは制御データを受け取るための次の順次位置を特定し、制御書き込みブロックが完全に書き込まれると1つの書き込みブロックが新しい制御書き込みブロックとして割り当てられる。さらに、制御ブロックは、それぞれ、メモリシステム102内のバイナリブロックの集団の中でそれら自身のブロックアドレスによって特定され得る。制御ブロックは、前述した分離されているSATおよびBITブロックについて記載されたのと同じ仕方で新しい未書き込み容量を生成するためにフラッシングされ得るけれども、制御ブロックのための再配置ブロックが有効なSATまたはBIT情報に関連するページを受け入れ得るという違いがある。フラッシングのための適切なピンク色制御ブロックの選択およびタイミングはSATフラッシングプロセスについて前述したのと同じ仕方で実行され得る。
LBA割り当てステータスを監視すること
ストレージアドレス再マッピングアルゴリズムは、ホストによって有効なデータに現在割り当てられているホストLBAアドレスだけのためにアドレスマッピング情報を記録する。したがって、このマッピング情報を正確に維持するために、クラスタがホストによってデータ記憶から割り当て解除されたときを判定する必要がある。
一実施形態では、ホストファイルシステムからのコマンドが、割り当て解除されたクラスタに関する情報をストレージアドレス再マッピングアルゴリズムに提供することができる。例えば、「データセット」コマンドが、マイクロソフト コーポレイションのビスタ(Vista)オペレーティングシステムに用いられるように提案されている。「ATA8−ACS2についての削除済みデータ通知提案(Notification of Deleted Data Proposal for ATA8-ACS2)」についての提案が、マイクロソフトによりT13に提出されている。この新しいコマンドは、削除済みデータの通知を提供するように意図されている。単一のコマンドが、2GBに及ぶ使用済データを表す、連続するLBAアドレスにおけるデータの削除を装置に知らせることができる。
NTFSメタデータを解釈すること
トリムコマンドなどのホストファイルシステムコマンドが利用できなければ、LBA割り当てステータスを、NTFSにより書き込まれる$bitmapシステムファイルにおける情報変化を追跡することによって監視することができ、ボリューム上の全てのクラスタの割り当てステータスのビットマップを包含する。パーソナルコンピュータ(PC)において$bitmap変化を追跡する一例が以下で論じられる。
パーティションブートセクタ
パーティションブートセクタは、パーティション上のセクタ0である。バイトオフセット0x30におけるフィールドは、表3への例の場合のように、マスタファイルテーブル(MFT)の先頭のための論理クラスタ番号を包含する。
Figure 2011519095
MFTにおける$bitmap記録
$bitmapと称されるシステムファイルは、ボリューム上の全てのクラスタの割り当てステータスのビットマップを包含する。$bitmapファイルのための記録は、MFT内の記録番号6である。MFT記録は1,024バイトの長さを有する。したがって、$bitmap記録はMFTの先頭に関して十進12セクタのオフセットを有する。前の例では、MFTはクラスタ0xC4FD2、すなわち十進806866から始まり、セクタ十進6454928である。したがって、$bitmapファイル記録はセクタ十進6454940から始まる。
(記述されている例において)次の情報は$bitmap記録の中に存在する。表4の例のように、バイトオフセット0x141から0x142までのところのフィールドは、$bitmapファイルについての、第1のデータ属性のクラスタ単位の長さを包含する。
Figure 2011519095
表5の例のように、バイトオフセット0x143から0x145までのところのフィールドは、$bitmapファイルについての第1のデータ属性の先頭のクラスタ番号を包含する。
Figure 2011519095
表6の例のように、バイトオフセット0x147から0x148までのところのフィールドは、$bitmapファイルについての第2のデータ属性のクラスタ単位の長さを包含する。
Figure 2011519095
表7の例のように、バイトオフセット0x149から0x14Bまでのところのフィールドは、$bitmapファイルについての第1のデータ属性の先頭と第2のデータ属性の先頭との間のクラスタの数を包含する。
Figure 2011519095
$bitmapファイルについてのデータ属性
$bitmapファイルについてのデータ属性の中のセクタは、論理クラスタ番号の順に、ボリューム内の全てのクラスタの割り当てステータスのビットマップを包含する。「1」はフィルシステムによってクラスタがデータ格納のために割り当てられていることを表し、「0」はクラスタが空いていることを表した。ビットマップ内の各バイトは、8クラスタまたは64十進セクタの論理範囲に関連する。ビットマップ内の各セクタは、0x1,000(十進4096)クラスタまたは0x8,000(十進32768)セクタの論理範囲に関連する。ビットマップ内の各クラスタは、0x8,000(十進32768)クラスタまたは0x40,000(十進262144)セクタの論理範囲に関連する。
クラスタ割り当てステータスを維持すること
ホストからの書き込み操作が$bitmapファイルについてのデータ属性の中のセクタに向けられるたびに、セクタの前のバージョンがストレージ装置から読み出されて、そのデータがホストによりちょうど書き込まれたばかりのデータと比較されなければならない。「1」状態から「0」状態へトグルした全てのビットが特定されなければならず、ホストによって割り当て解除されたクラスタの対応する論理アドレスが判定されなければならない。提案されたトリムコマンドなどのコマンドまたはNTFSメタデータ追跡が、ホストによるクラスタ割り当て解除があったことを示すたびに、ストレージアドレステーブル(SAT)は、指定されたクラスタについてのアドレスの割り当て解除を記録するために更新されなければならない。
LBAアドレスのブロック全体のDLBAランへのSATマッピング
図17に示されているDLBAアドレスのランへの有効なホストLBAランだけのマッピングとは対照的に、SATを作る代わりの方法が図31〜32に示され、ここではLBAアドレスのメガブロックの中の全てのLBAアドレスが、LBAアドレスが有効なデータと関連付けられているかいないかに関わらず、マッピングされる。有効なデータと関連付けられているLBAアドレスの各ランのために別々のLBAエントリをSATにおいて作る代わりに、各LBAアドレスメガブロックがSAT上で単一のエントリであるようにLBAアドレスのメガブロックがSATにおいてマッピングされ得る。
図31を参照すると、DLBA空間内のメガブロック3102が示され、単一の連続的LBAランがメガブロックにおいてDLBA空間にマッピングされている。説明を簡単にするために、メガブロック3102は第1のメガページ3104の冒頭(バンク1および2のP1)に使用済データを含むと仮定される。LBAアドレスの1つの連続的ラン(図32を参照)が、前述したように1バンクあたりに1メタページずつ全バンクに渡ってLBAランを「ストライピング」するメガページ順に、メタページP1、バンク3から始まってメタページP3、バンク3まで、DLBAアドレスにマッピングされている。図31においてメガブロックの残りは使用済データを包含している。図に示されているように、各バンクは垂直に示されているそれ自身のDLBAラン(DLBAランB1〜B4)を包含し、それは、(この図では水平の)メガページ書き込みアルゴリズムが連続的LBAアドレスの各々の引き続くメガページに沿っているために、それぞれのバンクでDLBAランのメタページ間でLBAアドレスにおいては不連続である。図32を参照すると、LBAアドレス空間3202のメガブロックは1つの連続的LBAラン3204を示し、これは、メタページにより分割されていて、図31に示されているDLBAランおよびDLBAランの中のページで標識付けされている。したがって、LBAラン3204内の第1のメタページはDLBAランB1、第1のメタページ(バンク3)にマッピングされ、次にLBAラン3204の次のメタページはDLBAランB2、ページ1(バンク4)にマッピングされるなどである。
図32に示されているように、LBAアドレス空間内の完全なLBAアドレスメガブロックは、SAT内の単一のLBAエントリ3206として記録され得る。この実施例におけるLBAエントリ3206は、LBAアドレスメガブロックがマッピングされるDLBAランの数と、同じSATページ内の第1のDLBAエントリへのポインタ3208とを記録する。LBAアドレスメガブロックは、記憶装置に格納されているデータの断片化の程度に応じて、最大でLBAアドレスメガブロック内のクラスの数までマッピングされ得る。
図32の例では、LBAアドレスメガブロックは6個のLBAランを含み、4個のランは有効なデータに割り当てられ(LBAオフセットL1〜L9から始まる陰影部分)、2個のランは未割り当てアドレスランである(LBAオフセット0およびL10から始まる白色部分)。LBAアドレスメガブロックのための対応するDLBAエントリ3210は、DLBAブロックによって示されるDLBAランのDLBAアドレス、アドレスオフセット(P1〜P3)および長さを対応するLBAオフセットに関連付ける。各LBAランのための別々のLBAエントリを記録し、有効なデータと関連付けられているLBAランだけを記録する、図17に関して前に論じられたSATのバージョンとは違って、LBAアドレスメガブロック内の全てのLBAランが記録される。したがって、有効なデータに現在割り当てられていないLBAアドレスブロック480内のLBAランも、有効なデータに割り当てられているLBAランも、記録される。図32に示されているSATページのDLBAエントリ部分3210において、LBAアドレスの未割り当てセットの先頭を示すLBAオフセットは、DLBAアドレス空間内の「FFFFFFFF」値と対にされる。これは、未割り当てアドレスのためのリザーブ値を示すデフォルト十六進数を表す。前述した同じ総SAT構造および機能も、図22に関して論じられた基本的SAT階層も、LBAアドレスメガブロックマッピングの実施例に当てはまるけれども、SATページは、個別LBAラン対DLBAラン情報ではなくてLBAアドレスメガブロック対DLBAランマッピング情報を表す。さらに、SAT索引ページは、この実施例では、LBAアドレスブロック対SATページマッピング情報を記憶する。
図33を参照すると、サンプルであるLBAアドレスフォーマット3300が示されている。アドレスフォーマット3300は32ビットの長さとして示されているが、いくつかのアドレス長のうちのいずれも使用され得る。最下位ビットをメモリシステム102内のコントローラ108によってメタページにおけるLBAアドレス3302に関連するものとして扱うことができ、アドレスの中の次のビットをバンク識別子3304を表すものとして扱うことができる。4個のバンク107A〜107Dがある前述した例では、これはアドレスのうちの2ビットであり得る。次のビットをデータが関連付けられるべきメガブロック内のページ3306として扱うことができ、最後のビットをメガブロック識別子3308として解釈することもできる。一実施形態では、本願明細書で論じられたメガブロック書き込みアルゴリズムにおいて各バンク内でLBAアドレスをインターリーブすることになるけれども、DLBAアドレスがバンクの中で連続的であり得るように、コントローラはバンク識別子3304のビットを取り去ることができる。図31とメガブロック書き込みアルゴリズムとを再び参照すれば、このことをより良く理解できるはずである。ホストデータがメモリシステム102に書き込まれるときに、現在の書き込みメガブロックの第1の利用可能な部分がバンク3のメタページP1であれば、アドレスがP1、バンク3へ、次に、P1、バンク3が完全に書き込まれた後にP1、バンク4へ、再マッピングされてゆくときにコントローラ108はバンク識別子ビットを除去する。書き込みアルゴリズムがホストデータをメガブロックの次のメガページ(バンク順に、バンク1〜4の各々の中のP2)の全体にわたって連続的にストライピングし続けてゆくとき、同じアドレス手続きが適用され得る。これは、各々の連続的ページを見たときにバンク内で左から右へ垂直下方へ各バンク内で連続的DLBAアドレス指定が行われるという結果をもたらす。図17および32のSATバージョンは、データが記憶装置から正確に読み出され得るけれども、各バンク内のホストデータに対するフラッシング操作が各ブロックおよびバンク内の連続的DLBAアドレスで管理され得るように、バンク情報を追跡する。
前の論議は、主として、ホストLBAアドレス空間からDLBAアドレス空間(ストレージLBAアドレス空間とも称される)への論理対論理マッピングが望ましいストレージアドレス再マッピングの実施例に焦点を合わせている。この論理対論理マッピングは、図11および12の構成に利用され得る。DLBAアドレスに再マッピングされているホストデータおよびストレージ装置生成データ(例えば、SATおよびBIT)は、DLBAアドレス空間内のメタブロックに現在対応するそれぞれのバンクの中のメタブロックの物理アドレスに書き込まれる。本願明細書においてグループアドレステーブルあるいはGATと称されるこのテーブルは、DLBAアドレス空間内の全ての論理ブロックについて1つずつのエントリを有すると共に1メタブロックの物理的ブロック粒状度を有する固定サイズのテーブルであり得る。一実施形態では、各バンク内の物理的ブロックへの論理ブロックマッピングが追跡され得るように各バンク107A〜107Dはそれ自身のGATを有する。
論理対物理マッピング
前述したように、図10の実施形態では、ストレージアドレス再マッピング(STAR)アルゴリズムは、図11〜12の場合のようにそれぞれ記憶装置またはホスト上の別のアプリケーションにではなくて記憶装置のメモリマネージャに組み込まれている。コントローラ108は、ホストデータをホストLBAからメモリシステム102内の各バンク107A〜107D内の物理アドレスへ直接マッピングする。図10の実施形態では、前に論じられたDLBAアドレスは、中間のDLBA(ストレージLBA)アドレスではなくて物理メモリアドレスにより取って代わられ、SATにおいて、DLBAランはデータランにより取って代わられる。各バンクを横切るメガページに沿って「ストライプ」を成して物理アドレスのメガブロックにホストデータを書き込む動作は、物理的ブロックの各バンクのための独立のピンク色ブロック選択およびフラッシングと同じく、同じままである。図10の論理対物理の実施形態は、前に論じられたDLBAアドレスおよびDLBAランの代わりに物理アドレスおよび物理的データランに関して同じSATおよびBIT(または制御)メタブロック構造も含む。図10の構成におけるストレージ再マッピングアルゴリズムは、メモリシステム102またはホスト100(それぞれ図11および12)上の別のアプリケーションではなくてメモリシステム102内のメモリコントローラ108の一部である。
従来の論理対物理ブロックマッピングでは、ホストデータの断片が論理アドレスのブロックに孤立して書き込まれるたびにガーベッジコレクション操作の間にデータの塊が再配置されなければならない。ストレージアドレス再マッピングアルゴリズムでは、データは常に(論理または物理的)ブロックが満たされるまで順次アドレスに書き込まれるので、ガーベッジコレクションは不要である。本願明細書で開示されたストレージアドレス再マッピングにおいて、フラッシング操作は書き込みプロセスによってはトリガされなくて、データが使用済みとなったことに応答してトリガされるだけである。したがって、本願明細書に記述されたストレージアドレス再マッピング機能を有するシステムにおいて、データ再配置オーバーヘッドは少ないはずである。フラッシング操作が最少量あるいは少なくともあるしきい値量未満の、有効なデータを有するピンク色ブロックのほうへ偏らされることと、別々のバンクが独立にフラッシング可能であることとの組み合わせを、再配置されなければならない有効なデータの量および関連するオーバーヘッドを減らすためにさらに役立てることができる。
パーソナルコンピュータにおいてソリッドステートディスクアプリケーションで経験されることのある、装置のLBAアドレス空間内の関連性のないエリアにデータの短いバーストを書き込む必要があることを特徴とするランダム書き込みアプリケーションにおいてメモリシステムの性能を高めることのできる、マルチバンクメモリにおけるストレージアドレス再マッピングのためのシステムおよび方法が記述された。開示されたストレージアドレス再マッピングのある実施形態では、ホストデータは、ホストによって割り当てられた第1の論理アドレスから第2の論理アドレス空間内の連続する論理アドレスのメタブロックを有するメガブロックにマッピングされる。アドレスが完全にプログラムされたブロックと関連するデータが使用済みとなると、フラッシング手続きが開示され、各バンクについて独立に、最少量の有効なデータを有するかあるいはしきい値量未満の有効なデータを有するピンク色ブロックのグループからピンク色ブロックを選択して、それらのブロックの中の有効なデータを、それらのブロックをさらなるデータ書き込みのために使用するべく解放するために、再配置する。バンク内のピンク色ブロックの中の有効なデータは、同じバンク内の再配置ブロックへ、ホストによって割り当てられた論理アドレスに関わらず、選択されたピンク色ブロックの中でそれが出現する順に、連続的に書き込まれる。このように、ホストによって割り当てられた論理アドレスランを故意に統合しないことによってオーバーヘッドが低減され得る。ホストによって割り当てられた論理アドレスと第2の論理アドレスとの間のマッピングおよび関連するバンクも、フラッシングに起因するマッピングの爾後の変化も追跡するために、ストレージアドレステーブルが使用される。ホストによって割り当てられた論理アドレスが物理アドレスに直接マッピングされる実施形態では、ストレージアドレステーブルがその関係を追跡し、例えば特定のブロックが有効データおよび使用済データの両方を有するピンク色ブロックであるのか未書き込み容量だけを有する白色ブロックであるのかを追跡するために、ブロック情報テーブルが維持される。
したがって、以上の詳しい記述は限定をするものではなくて説明をするものと見なされるべきであることと、本発明の趣旨および範囲を定めるべく意図されているものは全ての同等物を含む添付の特許請求の範囲であることが理解されるべきであることとが意図されている。

Claims (18)

  1. ホストシステムと、一緒に消去可能なメモリセルのブロックとして各々構成されているメモリセルの複数のバンクを有する再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法であって、
    前記ホストシステムにより割り当てられたホスト論理ブロックアドレス(LBA)アドレスと関連付けられたデータを受け取るステップと、
    前記ホストLBAアドレスと関連付けられたデータをアドレス指定するために連続的ストレージLBAアドレスのメガブロックを割り当てるステップであって、連続的ストレージLBAアドレスの前記メガブロックは、メモリセルの複数のバンクの各々の中のメモリセルの少なくとも1つのブロックを含むと共に割り当て時に未書き込み容量だけをアドレス指定する、割り当てるステップと、
    受け取られたデータのための前記ホストLBAアドレスの各々を連続的ストレージLBAアドレスのメガブロックに再マッピングするステップであって、各ストレージLBAアドレスは、前記ホストLBAアドレスに関わらず受け取られたデータが受け取られた順に受け取られたデータに連続的に順次割り当てられる、再マッピングするステップと、
    複数のバンクのうちの第1のバンクの中のブロックを複数のバンクのうちの第2のバンクの中のブロックをフラッシングすることとは独立にフラッシングするステップであって、前記第1のバンクの中のブロックをフラッシングすることは、有効なデータのためのホストLBAアドレスを前記第1のバンクの中のブロックのストレージLBAアドレスから第1の再配置ブロックの中の連続的ストレージLBAアドレスへ再割り当てすることを含み、前記第2のバンクの中のブロックをフラッシングすることは、有効なデータのためのホストLBAアドレスを前記第2のバンクの中のブロックのストレージLBAアドレスから第2の再配置ブロックの中の連続的ストレージLBAアドレスへ再割り当てすることを含む、フラッシングするステップと、
    を含む方法。
  2. 請求項1記載の方法において、
    前記第1のバンクの中のブロックをフラッシングすることは、有効なデータのためのホストLBAアドレスを前記第1のバンクの中のブロックのストレージLBAアドレスから前記第1のバンクの中の再配置ブロックだけへ再割り当てすることをさらに含み、前記第2のブロックをフラッシングすることは、有効なデータのためのホストLBAアドレスを前記第2のバンクの中のブロックのストレージLBAアドレスから前記第2のバンクの中の再配置ブロックだけへ再割り当てすることを含む方法。
  3. 請求項2記載の方法において、
    前記第1のバンクの中の連続的ストレージLBAアドレスのブロックを新しい再配置ブロックとして割り当てるステップをさらに含み、連続的ストレージLBAアドレスの前記新しい再配置ブロックは割り当て時に未書き込み容量だけと関連付けられ、前記新しい再配置ブロックの割り当ては、前記第1のバンクにおいて再配置ブロックの中のストレージLBAアドレスを完全に割り当てたときにだけ行われる方法。
  4. 請求項1記載の方法において、
    前記受け取られたデータのためのホストLBAアドレスの各々を連続的ストレージLBAアドレスのメガブロックへ再マッピングするステップは、ストレージLBAアドレスを前記メガブロックのためのメガページ順にホストLBAアドレスと関連付けることを含み、前記メガページは前記メガブロックの各ブロックの中のメタページを含む方法。
  5. 請求項1記載の方法において、
    複数のバンクの各々のためにホストLBAアドレスのストレージLBAアドレスに対する関係を特定する相関情報を単一のストレージアドレステーブルに記録するステップをさらに含む方法。
  6. 請求項5記載の方法において、
    前記相関情報は、有効なデータと関連付けられているホストLBAアドレスのランと、ホストLBAアドレスのランにマッピングされているストレージLBAアドレスとだけを含む方法。
  7. 請求項5記載の方法において、
    前記相関情報は、ホストLBAアドレスのメガブロックの中の全てのホストLBAアドレスのためのマッピング情報を含む方法。
  8. 請求項5記載の方法において、
    前記単一のストレージアドレステーブルは少なくとも1つのストレージアドレステーブルブロックを含み、前のストレージアドレステーブル書き込みブロックが相関情報に完全に割り当てられたときに、割り当て時に未書き込み容量だけと関連付けられている新しいストレージアドレステーブル書き込みブロックを割り当てるステップをさらに含む方法。
  9. 請求項8記載の方法において、
    前記前のストレージアドレステーブル書き込みブロックを包含するバンク以外のバンクにおいて前記新しいストレージアドレステーブル書き込みブロックを割り当てるステップをさらに含む方法。
  10. ホストシステムと、一緒に消去可能なメモリセルのブロックとして各々構成されているメモリセルの複数のバンクを有する再プログラム可能な不揮発性大容量記憶システムとの間でデータを転送する方法であって、
    受け取られたホストデータのためのホスト論理ブロックアドレス(LBA)アドレスをストレージLBAアドレスのメガブロックに再マッピングするステップであって、ストレージLBAアドレスの前記メガブロックはメモリセルの複数のバンクの各々の中のメモリセルの少なくとも1つのブロックを含み、受け取られたデータのためのホストLBAアドレスは前記メガブロックの中でメガページ順にストレージLBAアドレスに連続的に割り当てられ、各メガページは、前記ホストLBAアドレスに関わらず受け取られたデータが受け取られた順に、前記メガブロックのブロックの各々の中のメタページを含む、再マッピングするステップと、
    複数のバンクの各々においてフラッシング操作を独立に実行するステップであって、前記フラッシング操作は、有効なデータのためのホストLBAアドレスを特定のバンクの中のブロックのストレージLBAアドレスから前記特定のバンクの中の再配置ブロックの中の連続的ストレージLBAアドレスへ再割り当てする、フラッシング操作を独立に実行するステップと、
    を含む方法。
  11. 請求項10記載の方法において、
    複数のバンクの各々の中のピンク色ブロックを特定するステップであって、各ピンク色ブロックは、有効なデータと使用済データとの両方と関連付けられているストレージLBAアドレスの完全に書き込まれたブロックを含む、特定するステップと、
    各バンクについて、前記バンクの中の特定されたピンク色ブロックのうちの1つを次のフラッシング操作のために独立に選択するステップと、
    をさらに含む方法。
  12. 請求項11記載の方法において、
    複数のバンクの各々においてブロック情報テーブルを維持するステップをさらに含み、バンクのための前記ブロック情報テーブルは、そのバンクの中のピンク色ブロックのリストを含む方法。
  13. 請求項10記載の方法において、
    前記フラッシング操作を独立に実行するステップは、複数のバンクのうちの1つのバンクにおいては第1のしきい値に基づいて、複数のバンクのうちの第2のバンクにおいては第2のしきい値に基づいて、フラッシング操作を開始することを含む方法。
  14. 請求項10記載の方法において、
    複数のバンクの各々のためにホストLBAアドレスのストレージLBAアドレスに対する関係を特定する相関情報を単一のストレージアドレステーブルに記録するステップをさらに含む方法。
  15. 請求項14記載の方法において、
    前記相関情報は、有効なデータと関連付けられているホストLBAアドレスのランと、ホストLBAアドレスのランにマッピングされているストレージLBAアドレスとだけを含む方法。
  16. 請求項14記載の方法において、
    前記相関情報は、ホストLBAアドレスのメガブロックの中の全てのホストLBAアドレスのためのマッピング情報を含む方法。
  17. 請求項14記載の方法において、
    前記単一のストレージアドレステーブルは少なくとも1つのストレージアドレステーブルブロックを含み、前のストレージアドレステーブル書き込みブロックが相関情報に完全に割り当てられたときに、割り当て時に未書き込み容量だけと関連付けられている新しいストレージアドレステーブル書き込みブロックを割り当てるステップをさらに含む方法。
  18. 請求項17記載の方法において、
    前記前のストレージアドレステーブル書き込みブロックを包含するバンク以外のバンクにおいて前記新しいストレージアドレステーブル書き込みブロックを割り当てるステップをさらに含む方法。
JP2011506353A 2008-04-25 2009-04-10 マルチバンク記憶装置のためのストレージアドレス再マッピングのための方法およびシステム Pending JP2011519095A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/110,050 US20090271562A1 (en) 2008-04-25 2008-04-25 Method and system for storage address re-mapping for a multi-bank memory device
US12/110,050 2008-04-25
PCT/US2009/040153 WO2009131851A1 (en) 2008-04-25 2009-04-10 Method and system for storage address re-mapping for a multi-bank memory device

Publications (2)

Publication Number Publication Date
JP2011519095A true JP2011519095A (ja) 2011-06-30
JP2011519095A5 JP2011519095A5 (ja) 2012-05-31

Family

ID=40792849

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011506353A Pending JP2011519095A (ja) 2008-04-25 2009-04-10 マルチバンク記憶装置のためのストレージアドレス再マッピングのための方法およびシステム

Country Status (6)

Country Link
US (2) US20090271562A1 (ja)
EP (1) EP2286341B1 (ja)
JP (1) JP2011519095A (ja)
KR (1) KR20100139149A (ja)
TW (1) TWI437441B (ja)
WO (1) WO2009131851A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013030081A (ja) * 2011-07-29 2013-02-07 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
US8930614B2 (en) 2011-07-29 2015-01-06 Kabushiki Kaisha Toshiba Data storage apparatus and method for compaction processing
US10175889B2 (en) 2016-03-10 2019-01-08 Toshiba Memory Corporation Memory system capable of accessing memory cell arrays in parallel

Families Citing this family (167)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101083673B1 (ko) * 2008-10-01 2011-11-16 주식회사 하이닉스반도체 반도체 스토리지 시스템 및 그 제어 방법
US8239614B2 (en) * 2009-03-04 2012-08-07 Micron Technology, Inc. Memory super block allocation
US8949578B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Sharing of internal pipeline resources of a network processor with external devices
US9444757B2 (en) 2009-04-27 2016-09-13 Intel Corporation Dynamic configuration of processing modules in a network communications processor architecture
US8515965B2 (en) 2010-05-18 2013-08-20 Lsi Corporation Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US8321385B2 (en) * 2010-03-12 2012-11-27 Lsi Corporation Hash processing in a network communications processor architecture
US8873550B2 (en) 2010-05-18 2014-10-28 Lsi Corporation Task queuing in a multi-flow network processor architecture
US9152564B2 (en) 2010-05-18 2015-10-06 Intel Corporation Early cache eviction in a multi-flow network processor architecture
US8874878B2 (en) 2010-05-18 2014-10-28 Lsi Corporation Thread synchronization in a multi-thread, multi-flow network communications processor architecture
US8949582B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Changing a flow identifier of a packet in a multi-thread, multi-flow network processor
US9727508B2 (en) 2009-04-27 2017-08-08 Intel Corporation Address learning and aging for network bridging in a network processor
US8910168B2 (en) 2009-04-27 2014-12-09 Lsi Corporation Task backpressure and deletion in a multi-flow network processor architecture
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8705531B2 (en) 2010-05-18 2014-04-22 Lsi Corporation Multicast address learning in an input/output adapter of a network processor
US8555141B2 (en) * 2009-06-04 2013-10-08 Lsi Corporation Flash memory organization
US8166233B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Garbage collection for solid state disks
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US20100306451A1 (en) * 2009-06-01 2010-12-02 Joshua Johnson Architecture for nand flash constraint enforcement
US8245112B2 (en) * 2009-06-04 2012-08-14 Lsi Corporation Flash memory organization
US9063561B2 (en) * 2009-05-06 2015-06-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct memory access for loopback transfers in a media controller architecture
US8321639B2 (en) * 2009-12-30 2012-11-27 Lsi Corporation Command tracking for direct access block storage devices
US8516264B2 (en) * 2009-10-09 2013-08-20 Lsi Corporation Interlocking plain text passwords to data encryption keys
US8166258B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Skip operations for solid state disks
US20100318720A1 (en) * 2009-06-16 2010-12-16 Saranyan Rajagopalan Multi-Bank Non-Volatile Memory System with Satellite File System
US9753847B2 (en) * 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
DE112010004667T5 (de) 2009-12-03 2013-01-17 Hitachi, Ltd. Speichervorrichtung und Speichersteuerung
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
TWI484334B (zh) * 2009-12-24 2015-05-11 Univ Nat Taiwan 非揮發記憶體的區域式管理方法
US8316176B1 (en) * 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US9563397B1 (en) 2010-05-05 2017-02-07 Western Digital Technologies, Inc. Disk drive using non-volatile cache when garbage collecting log structured writes
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9146875B1 (en) 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US8683295B1 (en) 2010-08-31 2014-03-25 Western Digital Technologies, Inc. Hybrid drive writing extended error correction code symbols to disk for data sectors stored in non-volatile semiconductor memory
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8782334B1 (en) 2010-09-10 2014-07-15 Western Digital Technologies, Inc. Hybrid drive copying disk cache to non-volatile semiconductor memory
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US8825976B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive executing biased migration policy during host boot to migrate data to a non-volatile semiconductor memory
US8825977B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive writing copy of data to disk when non-volatile semiconductor memory nears end of life
US8670205B1 (en) 2010-09-29 2014-03-11 Western Digital Technologies, Inc. Hybrid drive changing power mode of disk channel when frequency of write data exceeds a threshold
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8699171B1 (en) 2010-09-30 2014-04-15 Western Digital Technologies, Inc. Disk drive selecting head for write operation based on environmental condition
US8612798B1 (en) 2010-10-21 2013-12-17 Western Digital Technologies, Inc. Hybrid drive storing write data in non-volatile semiconductor memory if write verify of disk fails
US8429343B1 (en) 2010-10-21 2013-04-23 Western Digital Technologies, Inc. Hybrid drive employing non-volatile semiconductor memory to facilitate refreshing disk
US8427771B1 (en) 2010-10-21 2013-04-23 Western Digital Technologies, Inc. Hybrid drive storing copy of data in non-volatile semiconductor memory for suspect disk data sectors
US8560759B1 (en) 2010-10-25 2013-10-15 Western Digital Technologies, Inc. Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency
US9069475B1 (en) 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8458133B2 (en) 2011-01-24 2013-06-04 Apple Inc. Coordinating sync points between a non-volatile memory and a file system
US9092160B2 (en) * 2011-02-08 2015-07-28 Seagate Technology Llc Selective enablement of operating modes or features via host transfer rate detection
US9021215B2 (en) 2011-03-21 2015-04-28 Apple Inc. Storage system exporting internal storage rules
TWI454908B (zh) * 2011-03-28 2014-10-01 Phison Electronics Corp 記憶體組態方法、記憶體控制器與記憶體儲存裝置
US9361044B2 (en) * 2011-03-28 2016-06-07 Western Digital Technologies, Inc. Power-safe data management system
US9311229B2 (en) * 2011-03-29 2016-04-12 Blackberry Limited System and method for managing flash memory
US8849777B1 (en) * 2011-06-30 2014-09-30 Emc Corporation File deletion detection in key value databases for virtual backups
US8843443B1 (en) 2011-06-30 2014-09-23 Emc Corporation Efficient backup of virtual data
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US8630056B1 (en) 2011-09-12 2014-01-14 Western Digital Technologies, Inc. Hybrid drive adjusting spin-up profile based on cache status of non-volatile semiconductor memory
US20130275661A1 (en) * 2011-09-30 2013-10-17 Vincent J. Zimmer Platform storage hierarchy with non-volatile random access memory with configurable partitions
US9430372B2 (en) 2011-09-30 2016-08-30 Intel Corporation Apparatus, method and system that stores bios in non-volatile random access memory
EP3346386B1 (en) 2011-09-30 2020-01-22 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage
CN103946814B (zh) 2011-09-30 2017-06-06 英特尔公司 计算机系统中的非易失性随机存取存储器的自主初始化
US8909889B1 (en) 2011-10-10 2014-12-09 Western Digital Technologies, Inc. Method and apparatus for servicing host commands by a disk drive
US9268701B1 (en) 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US8977804B1 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Varying data redundancy in storage systems
US8700961B2 (en) 2011-12-20 2014-04-15 Sandisk Technologies Inc. Controller and method for virtual LUN assignment for improved memory bank mapping
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US8904091B1 (en) 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
US9063838B1 (en) * 2012-01-23 2015-06-23 Western Digital Technologies, Inc. Data storage device shifting data chunks of alignment zone relative to sector boundaries
US8996839B1 (en) 2012-01-23 2015-03-31 Western Digital Technologies, Inc. Data storage device aligning partition to boundary of sector when partition offset correlates with offset of write commands
US9239781B2 (en) * 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US8949512B2 (en) * 2012-02-17 2015-02-03 Apple Inc. Trim token journaling
US9311251B2 (en) 2012-08-27 2016-04-12 Apple Inc. System cache with sticky allocation
TWI492051B (zh) * 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
TW201413450A (zh) * 2012-09-25 2014-04-01 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
US20140089600A1 (en) * 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state
US8959281B1 (en) 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10642505B1 (en) 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
WO2014143036A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Method for pinning data in large cache in multi-level memory system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
US9323467B2 (en) 2013-10-29 2016-04-26 Western Digital Technologies, Inc. Data storage device startup
CN104598386B (zh) * 2013-10-31 2018-03-27 Lsi公司 通过追踪和利用二级映射索引重复利用固态驱动器块
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
DE102014100800A1 (de) * 2014-01-24 2015-07-30 Hyperstone Gmbh Verfahren zur zuverlässigen Adressierung eines großen Flash-Speichers
KR20160015784A (ko) * 2014-07-31 2016-02-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9720596B1 (en) * 2014-12-19 2017-08-01 EMC IP Holding Company LLC Coalescing writes for improved storage utilization
US9940259B2 (en) * 2015-01-16 2018-04-10 International Business Machines Corporation Virtual disk alignment access
KR102391678B1 (ko) 2015-01-22 2022-04-29 삼성전자주식회사 저장 장치 및 그것의 서스테인드 상태 가속 방법
US9720762B2 (en) * 2015-03-04 2017-08-01 Unisys Corporation Clearing bank descriptors for reuse by a gate bank
DE102015204824A1 (de) * 2015-03-17 2016-09-22 Bundesdruckerei Gmbh Verfahren zum Speichern von Nutzerdaten in einem Dokument
US9582420B2 (en) 2015-03-18 2017-02-28 International Business Machines Corporation Programmable memory mapping scheme with interleave properties
CN104714894B (zh) * 2015-03-18 2017-08-11 清华大学 一种分层的基于随机映射的相变内存磨损均衡方法及系统
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US20170031838A1 (en) * 2015-07-28 2017-02-02 Qualcomm Incorporated Method and apparatus for using context information to protect virtual machine security
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
CN105353989B (zh) * 2015-11-19 2018-12-28 华为技术有限公司 存储数据访问方法及相关的控制器、设备、主机和系统
US10089243B2 (en) 2016-02-25 2018-10-02 SK Hynix Inc. Memory controller and system including variable address mapping tables and a fixed address mapping table
KR102420897B1 (ko) * 2016-03-17 2022-07-18 에스케이하이닉스 주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법
US10031845B2 (en) * 2016-04-01 2018-07-24 Intel Corporation Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
KR102611292B1 (ko) 2016-06-22 2023-12-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102749010B1 (ko) * 2016-08-16 2025-01-02 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US10417198B1 (en) * 2016-09-21 2019-09-17 Well Fargo Bank, N.A. Collaborative data mapping system
KR20190107504A (ko) 2018-03-12 2019-09-20 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10936199B2 (en) * 2018-07-17 2021-03-02 Silicon Motion, Inc. Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table
KR102520412B1 (ko) * 2018-09-19 2023-04-12 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10817430B2 (en) * 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations
KR102199575B1 (ko) * 2018-12-26 2021-01-07 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법
CN110879687B (zh) * 2019-10-18 2021-03-16 蚂蚁区块链科技(上海)有限公司 一种基于磁盘存储的数据读取方法、装置及设备
US11175984B1 (en) 2019-12-09 2021-11-16 Radian Memory Systems, Inc. Erasure coding techniques for flash memory
US11520596B2 (en) 2020-02-26 2022-12-06 Microsoft Technology Licensing, Llc Selective boot sequence controller for resilient storage memory
KR20210120240A (ko) * 2020-03-26 2021-10-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
TWI748410B (zh) 2020-04-15 2021-12-01 慧榮科技股份有限公司 用來針對非揮發性記憶體進行區塊管理的方法以及設備
WO2022107920A1 (ko) * 2020-11-20 2022-05-27 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법
US11487450B1 (en) * 2021-05-14 2022-11-01 Western Digital Technologies, Inc. Storage system and method for dynamic allocation of control blocks for improving host write and read
US11816358B2 (en) * 2021-08-24 2023-11-14 Micron Technology, Inc. Preserving application data order in memory devices
JP2023044824A (ja) * 2021-09-21 2023-04-03 キオクシア株式会社 メモリシステム
CN114333930B (zh) * 2021-12-23 2024-03-08 合肥兆芯电子有限公司 多通道存储器存储装置、控制电路单元及其数据读取方法
TWI845275B (zh) * 2023-04-24 2024-06-11 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001154909A (ja) * 1999-11-25 2001-06-08 Casio Comput Co Ltd フラッシュメモリ管理装置及び記録媒体
US20050144361A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive mode switching of flash memory address mapping based on host usage characteristics
JP2007058840A (ja) * 2005-07-29 2007-03-08 Sony Corp 記憶装置、コンピュータシステム、および記憶システム

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5535369A (en) * 1992-10-30 1996-07-09 Intel Corporation Method for allocating memory in a solid state memory disk
US5555204A (en) * 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) * 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
DE4417907A1 (de) * 1994-05-21 1995-11-23 Hoechst Ag Verfahren zur Nachbehandlung von platten-, folien- oder bandförmigem Material, Träger aus derartigem Material und seine Verwendung für Offsetdruckplatten
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5903495A (en) * 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5960169A (en) * 1997-02-27 1999-09-28 International Business Machines Corporation Transformational raid for hierarchical storage management system
US6898762B2 (en) * 1998-08-21 2005-05-24 United Video Properties, Inc. Client-server electronic program guide
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6622199B1 (en) * 1999-07-02 2003-09-16 Qualcomm Incorporated Method for minimizing data relocation overhead in flash based file systems
US7966462B2 (en) * 1999-08-04 2011-06-21 Super Talent Electronics, Inc. Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips
JP3863330B2 (ja) * 1999-09-28 2006-12-27 株式会社東芝 不揮発性半導体メモリ
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
JP3631463B2 (ja) * 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
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
US6771536B2 (en) * 2002-02-27 2004-08-03 Sandisk Corporation Operating techniques for reducing program and read disturbs of a non-volatile memory
KR100453053B1 (ko) * 2002-06-10 2004-10-15 삼성전자주식회사 플래쉬 메모리용 파일 시스템
US7123512B2 (en) * 2002-07-19 2006-10-17 Micron Technology, Inc. Contiguous block addressing scheme
US6775751B2 (en) * 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
US6781877B2 (en) * 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
JP4594391B2 (ja) * 2004-07-19 2010-12-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 多層ディスクにおける層ジャンプ
US7395384B2 (en) * 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8375146B2 (en) * 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
US20060161724A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
JP5130646B2 (ja) * 2005-06-06 2013-01-30 ソニー株式会社 記憶装置
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7979624B2 (en) * 2006-03-31 2011-07-12 Intel Corporation Techniques to truncate data files in nonvolatile memory
US7552280B1 (en) * 2006-06-28 2009-06-23 Emc Corporation Asymmetrically interleaving access to redundant storage devices
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US8245101B2 (en) * 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001154909A (ja) * 1999-11-25 2001-06-08 Casio Comput Co Ltd フラッシュメモリ管理装置及び記録媒体
US20050144361A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive mode switching of flash memory address mapping based on host usage characteristics
JP2007517320A (ja) * 2003-12-30 2007-06-28 サンディスク コーポレイション ホストの使用特性に基づいたフラッシュメモリのアドレスマッピングの適応的モード切り換え
JP2007058840A (ja) * 2005-07-29 2007-03-08 Sony Corp 記憶装置、コンピュータシステム、および記憶システム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013030081A (ja) * 2011-07-29 2013-02-07 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
US8930614B2 (en) 2011-07-29 2015-01-06 Kabushiki Kaisha Toshiba Data storage apparatus and method for compaction processing
US10175889B2 (en) 2016-03-10 2019-01-08 Toshiba Memory Corporation Memory system capable of accessing memory cell arrays in parallel
US10521129B2 (en) 2016-03-10 2019-12-31 Toshiba Memory Corporation Memory system capable of accessing memory cell arrays in parallel
US10895990B2 (en) 2016-03-10 2021-01-19 Toshiba Memory Corporation Memory system capable of accessing memory cell arrays in parallel

Also Published As

Publication number Publication date
TWI437441B (zh) 2014-05-11
US20090271562A1 (en) 2009-10-29
US20140068152A1 (en) 2014-03-06
WO2009131851A1 (en) 2009-10-29
EP2286341A1 (en) 2011-02-23
TW200951722A (en) 2009-12-16
EP2286341B1 (en) 2015-06-03
KR20100139149A (ko) 2010-12-31

Similar Documents

Publication Publication Date Title
JP5350371B2 (ja) 記憶装置のためのストレージアドレス再マッピングのための方法およびシステム
EP2286341B1 (en) Method and system for storage address re-mapping for a multi-bank memory device
US7984084B2 (en) Non-volatile memory with scheduled reclaim operations
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7949845B2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
US8046522B2 (en) Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US7739444B2 (en) System using a direct data file system with a continuous logical address space interface
US8166267B2 (en) Managing a LBA interface in a direct data file memory system
US7917686B2 (en) Host system with direct data file interface configurability
US20080155177A1 (en) Configuration of Host LBA Interface With Flash Memory
US20080155175A1 (en) Host System That Manages a LBA Interface With Flash Memory
KR101089150B1 (ko) 스케쥴링된 리클레임 작동들을 갖는 비휘발성 메모리
CN101233481A (zh) 通过逻辑地址空间且以直接数据文件为基础操作的介接系统
WO2008083001A9 (en) Managing a lba interface in a direct data file memory system
KR20080038368A (ko) 데이터 파일을 직접 저장하는 재프로그램가능 비휘발성메모리에 파일 데이터의 인덱싱

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120404

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120404

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120615

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130903

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131126

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131203

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131226

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140109

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140129

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140219

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140722