JP5002586B2 - フラッシュデータ構造を管理する方法、スリープ管理方法、フラッシュメモリシステム、及び記憶媒体 - Google Patents

フラッシュデータ構造を管理する方法、スリープ管理方法、フラッシュメモリシステム、及び記憶媒体 Download PDF

Info

Publication number
JP5002586B2
JP5002586B2 JP2008510721A JP2008510721A JP5002586B2 JP 5002586 B2 JP5002586 B2 JP 5002586B2 JP 2008510721 A JP2008510721 A JP 2008510721A JP 2008510721 A JP2008510721 A JP 2008510721A JP 5002586 B2 JP5002586 B2 JP 5002586B2
Authority
JP
Japan
Prior art keywords
flash memory
flash
management table
event
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008510721A
Other languages
English (en)
Other versions
JP2008544343A (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.)
Western Digital Israel Ltd
Original Assignee
SanDisk IL Ltd
M Systems Flash Disk Pionners Ltd
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 IL Ltd, M Systems Flash Disk Pionners Ltd filed Critical SanDisk IL Ltd
Publication of JP2008544343A publication Critical patent/JP2008544343A/ja
Application granted granted Critical
Publication of JP5002586B2 publication Critical patent/JP5002586B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、フラッシュメモリ管理システムのスリープ解除を促進するのに有用なデータ構造を維持するための方法およびシステムに関する。
ラッセル(Lasser)の「フラッシュメモリシステムの迅速スリープ解除方法(Method For Fast Wake−Up of a Flash Memory System)」なる名称の米国特許公報第6,510,488号明細書は、たとえフラッシュシステムソフトウェアが、ゼロからの生成には時間のかかる管理テーブルに依存していても、フラッシュメモリシステムが、その電源投入後に迅速なスリープ解除時間を達成できるようにする方法およびシステムを開示す。この迅速なスリープ解除時間は、データの完全性を犠牲にせずに達成される。ラッセル(Lasser)の前述の特許は、本明細書に完全に述べられているかのように、あらゆる目的のために参照により組み込まれている。
ラッセル(Lasser)が説明しているように、コンピュータデータ記憶装置のためにフラッシュメモリ素子を用いることには、従来的に、ホストコンピュータのオペレーティングシステムと装置の低レベルアクセスルーチンとの間に位置するあるソフトウェア変換層が必要である。これは、フラッシュ技術にはいくつかの使用上の制約があり、これらの制約のために、単純なランダムアクセス線形方法でフラッシュ技術を利用することが不可能になるからである。かかる制約の一つが、任意の所望のメモリ位置にランダムに上書きできないことである。したがって、新しい内容をフラッシュメモリ位置に書き込むには、最初に、その位置を含む全ブロックを消去(まだ必要な任意の他の位置の内容を保存して)し、そのときになって始めて、新しい内容を書き込むことが必要になる場合がある。
変換層は、独立したデータセクタのランダムアクセスによってアドレス指定が可能なアレイの仮想ビューを、ホストのオペレーティングシステムに提示する一方で、フラッシュ媒体における実際の位置へのこれら仮想アドレスのマッピングの詳細を隠蔽して管理する。この変換機構は、決して平凡なものではなく、かかるフラッシュメモリ変換層の例が、アミール・バン(Amir
Ban)の米国特許公報第5,937,425号明細書に開示されており、またこの特許は、本明細書に完全に述べられているかのように組み込まれている。バン(Ban)は、仮想フラッシュアドレスと物理フラッシュアドレスとの間でマッピング機構を実現する方法を示す。かかるシステムの別の例が、米国特許公報第6,678,785号明細書に開示されており、この特許もまた、本明細書に完全に述べられているかのように組み込まれている。
変換プロセスは、ホストコンピュータのデータアクセス要求を実際のフラッシュアクセス要求に変換するために必要な情報をフラッシュシステムソフトウェアに提供する内部変換テーブルに依存する。これらのテーブルは、フラッシュ素子内に格納された制御情報に基づいて、システムスのリープ解除中(または、ホストのソフトウェアが要求する場合には、それより後で)にソフトウェアによって構成される。かかるテーブルを構成せず、代わりにフラッシュからの生の制御データのみを利用することが理論上は可能であるが、これは、アクセス要求に対する応答時間が遅すぎるので、実際上は利用できない。これが遅すぎるのは、フラッシュにおけるデータへのアクセスが、通常のコンピュータRAMメモリにおけるデータへのアクセスよりずっと遅いからであり、またメモリテーブルが、通常、実行時に必要な動作タイプにおける効率のために最適化されるのに対して、フラッシュに格納された制御データは、そのようにされないからである。
たとえば、フラッシュ物理ユニットは、自身にマッピングされた仮想ユニットの番号を含むことができる。プログラムの実行時に、仮想ユニット番号を、その物理的対応物に変換する必要が頻繁にあり得る。フラッシュに格納された制御データにのみ依存しなければならない場合には、指定の仮想ユニット番号を備えたユニットを見つけるまで全てのユニットを走査しなければならない可能性があり、これは、単純な媒体アクセスの標準からすれば、非常に長いプロセスである。しかしながら、システムのスリープ解除時にフラッシュ素子を1回走査し、かつ各仮想ユニット番号を対応する物理ユニット番号にマッピングするテーブルを構成することによって、後で、かかるマッピングを非常に効率的に行うことができる。
問題は、システムのスリープ解除時にフラッシュデータ記憶装置を走査するには、特に大容量装置では、長時間を要するということである。これは、ユーザが速やかなターンオンを期待するシステムおよび装置(すなわち、携帯電話、PDA等)にとって、特に厄介である。ただ単にテーブルをフラッシュに格納することは、コンピュータ実行可能コードであって、ユーザが変更できないコードだけを格納するフラッシュ素子などの読み出し専用装置に対しては効果があり得る。しかしながら、ただ単にテーブルをフラッシュに格納することは、頻繁に変化する可能性があるデータ(PDA内のテキストファイルまたはスプレッドシート)を格納するために使用される装置を用いる場合には、成功しないであろう。これが成功しないのは、継続的に装置に書き込んで、その内容を変更する場合には、変換テーブルの内容もまた変化するからである。フラッシュ内のテーブルがメモリ内で変化する度にそのコピーを更新することは、生じるオーバーヘッドがシステムをかなり遅くするので、実際的ではない。したがって、フラッシュに格納されたテーブルとメモリ内の「正確な」テーブルとの間の相違が蓄積される。ここで、ユーザが電源を切り、次に、テーブルを更新せずに再び電源を入れた場合には、ソフトウェアは、フラッシュから不正確な変換テーブルを読み出すことになり、結果として、新しいデータを書き込むときに、データ損失が生じる可能性がある。
ラッセル(Lasser)が開示するいくつかの実施形態によれば、この問題は、フラッシュに変換テーブルを格納すること、および変換テーブルを読み出すときにはいつも検出可能であるようなやり方で、ソフトウェアが変換テーブルを無効にする何らかの手段を追加することによって、解決してもよい。可能なインプリメンテーション(しかし唯一のインプリメンテーションではない)には、全てのエントリの合計をある決まった既知の値に等しくするチェックサム値を追加するか、または格納テーブルに妥当性フラグを加えることが含まれる。さらに、システムをシャットダウンする前に、変換層における特定の機能を呼び出すようにアプリケーションソフトウェアに要求すべきである。
これらの方法で、フラッシュメモリ素子は、システムが正常にシャットダウンした場合に、迅速なスリープ解除を開始することができ、システムが異常にシャットダウンした場合に、通常のスリープ解除に戻ることができる。
この解決法は、多くのケースに対して有用であるが、この解決法が不適切になり得る状況がある。この解決法が不適切になり得る第1の例は、突然の電源異常が頻繁にあり、電源投入イベントの多く(または大部分さえ)が、無効な格納テーブルに遭遇し、遅い通常のスリープ解除に帰着すると予想される場合である。
この解決法が不適切になり得る第2の例は、フラッシュメモリシステムをホストする機器のオペレーティングシステムが、正常なディスマウントまたはシャットダウンのためのサービスを、ソフトウェアアプリケーションに提供しない場合である。リナックスのような複雑なオペレーティングシステムは、かかるサービスを提供するが、電源投入で記憶システムを起動するように設計され、それを決してシャットダウンしない多くのより単純でより小さなオペレーティングシステムがある。かかる場合には、ラッセル(Lasser)の方法は、フラッシュ管理システムの通常のスリープ解除を行うシステム電源投入に全て帰着し、これらの方法からは何も得られない。
この解決法が不適切になり得る第3の例は、システムの電源を入れることと、システムに動作の準備をさせることとの間の時間間隔の長さに厳密な制限がある場合である。したがって、電源異常がまれで、ほとんど全ての電源投入のケースがフラッシュ管理システムの迅速なスリープ解除に帰着する場合であっても、電源異常が後で通常の電源投入シーケンスをもたらすことは、この発生がどれほどまれかにかかわらず、やはり許容できない。
本開示のために、用語「ブロック」は、単一動作で消去できるフラッシュメモリの最小単位として定義される。用語「ページ」は、単一動作で書き込む(「プログラムする」ともいう)ことができるフラッシュメモリの最小単位として定義される。典型的には、ブロックには多くのページが含まれる。
本開示のために、用語「フラッシュ管理システム」および「フラッシュファイルシステム」は、同義語であり、区別なく用いてもよい。これらの用語のそれぞれは、フラッシュメモリ素子におけるデータの記憶を管理するソフトウェアモジュールを指し、このことは、モジュールによってエクスポートされるインタフェースが、(「ファイルオープン」もしくは「ファイル書き込み」のようなコマンドを備えた)ファイル指向か、または(「ブロック読み出し」もしくは「ブロック書き込み」のようコマンドを備えた)ブロック指向であるかどうかにかかわらず、またソフトウェアモジュールが、もっぱらフラッシュ管理専用のコントローラで動作するか、または記憶システムを用いるアプリケーションが走行しているのと同じホストコンピュータで動作するかにかかわらない。
したがって、フラッシュデータ構造の完全性を損なわずに、フラッシュメモリシステムの迅速なスリープ解除を常に保証できる方法およびシステムの広く認識された必要性があり、この方法およびシステムを有することは、非常に有利であろう。
前述の必要性のいくつかまたは全ておよび他の必要性を、本発明のいくつかの態様によって満たすことが可能である。
ここで本発明者が開示する技術によって、1つまたは複数のフラッシュ管理テーブルが、フラッシュメモリシステムの全てのイベント後ではなく、いくつかのイベント後に、更新されて不揮発性フラッシュメモリに保存される。スリープ解除のときに、不揮発性フラッシュに格納された所与のフラッシュ管理テーブルが古い情報を含むと判明した場合にも、格納されたテーブルを用いて、システムのスリープ解除を促進することがやはり可能であり、古いテーブルを無効にする必要がない。このテーブルを無効にする代わりに、シャットダウンおよび/または電源喪失の前にフラッシュメモリに保存された古いフラッシュメモリテーブルを、スリープ解除のときに用いて、「適切な」テーブル(すなわち、システムの現在の状態を反映した)を再構築してもよい。特定の実施形態において、これは、イベントログを同時にフラッシュメモリに維持することによって実行される。電源喪失またはシャットダウン前に正常な終了がたとえなかったとしても、スリープ解除のときに、イベントログに格納されたデータを用いてフラッシュメモリテーブルを更新し、それによって、データの完全性を維持することができる。特定の実施形態において、フラッシュメモリに格納された「古い」テーブルから「最新」テーブルを導き出すことは、フラッシュ記憶装置を走査することによって最新テーブルを構成することより速くなる可能性がある。
ここで、フラッシュメモリシステムのイベントに従ってフラッシュデータ構造を維持する方法を初めて開示する。今開示する方法には、(a)自身の内容がフラッシュメモリシステムの状態を示す少なくとも1つのフラッシュ管理テーブルを、フラッシュメモリに維持することと、(b)イベントログをフラッシュメモリに維持することであって、少なくとも1つの時点に関し、(i)最近格納された少なくとも1つのフラッシュ管理テーブルが、フラッシュメモリシステムの以前の状態を示し、(ii)この少なくとも以前の状態より最近の少なくとも1つのイベントが、少なくとも1つのイベントログに格納されることと、が含まれる。
いくつかの実施形態によれば、少なくとも1つの時点中に、最近のイベントが、イベントログに格納される。
いくつかの実施形態によれば、少なくとも1つの時点中に、フラッシュメモリシステムの現在の状態が、格納されたイベントログおよび格納された少なくとも1つのフラッシュ管理テーブルの内容に反映される。この特徴は、たとえばスリープ解除のときなど、更新されたフラッシュ管理テーブルが後で構成されるように、データの完全性を維持するために有用であり得る。
いくつかの実施形態によれば、今開示する方法には、(c)以前の状態を示す少なくとも1つのテーブルおよびイベントログから、フラッシュメモリシステムのより現在に近い状態を示す少なくとも1つのテーブルを生成することがさらに含まれる。
いくつかの実施形態によれば、より現在に近い状態は、生成時のフラッシュメモリシステムの最も現在に近い状態である。
いくつかの実施形態によれば、生成は、スリープ解除のときに達成される。
いくつかの実施形態によれば、少なくとも1つの管理テーブルを維持することには、少なくとも1つの時点とは異なる別の時点で、少なくとも1つのフラッシュ管理テーブルを、イベントログの最後に記録されたイベントに同期させることが含まれる。
いくつかの実施形態によれば、少なくとも1つのフラッシュ管理テーブルをフラッシュメモリに維持することには、フラッシュメモリにおいて、少なくとも1つのフラッシュ管理テーブルを現在の状態へ定期的に同期させることが含まれる。
いくつかの実施形態によれば、少なくとも1つのフラッシュ管理テーブルをフラッシュメモリに維持することには、フラッシュメモリシステムのN(ここでN≧2)番目の状態変化ごとに、フラッシュメモリにおいて、少なくとも1つのフラッシュ管理テーブルを現在の状態に同期させることが含まれる。
いくつかの実施形態によれば、少なくとも1つのフラッシュ管理テーブルをフラッシュメモリに維持することには、i)第1の所定のタイプの状態変化が発生すると、フラッシュメモリにおいて、少なくとも1つのフラッシュ管理テーブルを現在の状態へ同期させることと、ii)第2の所定のタイプの状態変化が発生すると、フラッシュメモリにおいて、少なくとも1つのフラッシュ管理テーブルを現在の状態へ同期させないことと、が含まれる。
いくつかの実施形態によれば、少なくとも1つのフラッシュ管理テーブルが、フラッシュメモリにおいて更新される頻度は、フラッシュメモリシステムの資源の利用可能性に従って決定される。
いくつかの実施形態によれば、少なくとも1つのフラッシュ管理テーブルには、仮想ブロック番号を物理ブロック番号にマッピングする変換テーブルが含まれる。
いくつかの実施形態によれば、少なくとも1つのフラッシュ管理テーブルには、フリーブロックテーブルが含まれる。
いくつかの実施形態によれば、維持には、複数のフラッシュ管理テーブルをフラッシュメモリに維持することが含まれる。
いくつかの実施形態によれば、イベントログをフラッシュメモリに維持することには、フラッシュメモリのより迅速な書き込みモードを用いて、フラッシュメモリにデータを書き込むことが含まれる。
いくつかの実施形態によれば、フラッシュメモリは、MLCおよびSLCモードの両方を提供し、またイベントログをフラッシュメモリに維持することは、SLCモードを用いて実行される。
いくつかの実施形態によれば、ログの維持は、フラッシュメモリシステムのキャッシュ動作の一部として実行される。
フラッシュメモリシステムにおけるスリープ解除の方法を今初めて開示する。今開示する方法には、I)スリープ解除のときに、(a)フラッシュメモリシステムの状態を示す少なくとも1つのフラッシュ管理テーブルをフラッシュメモリから読み出すことと、(b)フラッシュメモリシステムの予め格納されたイベントの記録を含むイベントログをフラッシュメモリから読み出すことと、(c)イベントログに格納された少なくとも1つのイベントに関し、少なくとも1つのイベントによってもたらされた変化に従って少なくとも1つのフラッシュ管理テーブルを更新することと、が含まれる。
いくつかの実施形態によれば、更新は、少なくとも1つのフラッシュ管理テーブルがイベントログの最近のイベントに従って更新されるまで繰り返される。
いくつかの実施形態によれば、少なくとも1つのフラッシュ管理テーブルには、仮想ブロック番号を物理ブロック番号にマッピングする変換テーブルが含まれる。
いくつかの実施形態によれば、少なくとも1つのフラッシュ管理テーブルには、フリーブロックテーブルが含まれる。
いくつかの実施形態によれば、複数のフラッシュ管理テーブルが、フラッシュメモリから読み出されて更新される。
今初めて開示するフラッシュメモリシステムには、(a)データを格納するためのフラッシュメモリと、(b)フラッシュメモリにアクセスするために用いられるデータ構造を維持するためのフラッシュ管理ソフトウェアとが含まれるが、この場合に、フラッシュ管理ソフトウェアは、i)自身の内容がフラッシュメモリシステムの状態を示す少なくとも1つのフラッシュ管理テーブルを、フラッシュメモリに維持するように、b)少なくとも1つの時点に関し、I)最近格納された少なくとも1つのフラッシュ管理テーブルが、フラッシュメモリシステムの以前の状態を示し、II)以前の状態より最近の少なくとも1つのイベントがイベントログに格納されるようにイベントログをフラッシュメモリに維持するように、動作する。
今初めて開示するフラッシュメモリシステムには、(a)データを格納するためのフラッシュメモリと、(b)フラッシュメモリにアクセスするために用いられる少なくとも1つのデータ構造を維持するためのフラッシュ管理ソフトウェアとが含まれるが、この場合に、スリープ解除のときに、フラッシュ管理ソフトウェアは、(i)フラッシュメモリシステムの状態を示す少なくとも1つのフラッシュ管理テーブルをフラッシュメモリから読み出すように、(ii)フラッシュメモリシステムの予め格納されたイベントの記録を含むイベントログをフラッシュメモリから読み出すように、(iii)イベントログに格納された少なくとも1つのイベントに関し、少なくとも1つのイベントによってもたらされた変化に従って少なくとも1つのフラッシュ管理テーブルを更新するように、動作する。
今初めて開示するコンピュータ可読記憶媒体は、コンピュータ可読コードを自身に具現し、このコンピュータ可読コードは、フラッシュメモリシステムのイベントに従ってフラッシュデータ構造を維持するための命令を含むが、この場合に、これらの命令には、(a)自身の内容がフラッシュメモリシステムの状態を示す少なくとも1つのフラッシュ管理テーブルを、フラッシュメモリに維持する命令、(b)イベントログをフラッシュメモリに維持する命令であって、少なくとも1つの時点に関し、(i)最近格納された少なくとも1つのフラッシュ管理テーブルが、フラッシュメモリシステムの以前の状態を示し、(ii)以前の状態より最近の少なくとも1つのイベントをイベントログに格納する命令が含まれる。
今初めて開示するコンピュータ可読記憶媒体は、コンピュータ可読コードを自身に具現し、このコンピュータ可読コードは、フラッシュメモリシステムのイベントに従ってフラッシュデータ構造を維持するための命令を含むが、この場合に、これらの命令には、(I)スリープ解除のときに、(a)フラッシュメモリシステムの状態を示す少なくとも1つのフラッシュ管理テーブルをフラッシュメモリから読み出す命令、(b)フラッシュメモリシステムの予め格納されたイベントの記録を含むイベントログをフラッシュメモリから読み出す命令、(c)イベントログに格納された少なくとも1つのイベントに関し、少なくとも1つのイベントによってもたらされた変化に従って少なくとも1つのフラッシュ管理テーブルを更新する命令が含まれる。
フラッシュメモリシステムのイベントに従ってフラッシュデータ構造を維持する方法を今初めて開示するが、この方法には、(a)自身の内容がフラッシュメモリシステムの状態を示す少なくとも1つのフラッシュ管理テーブルを、フラッシュメモリに維持することと、(b)イベントログをフラッシュメモリに維持することと、(c)少なくとも1つのフラッシュ管理テーブルの維持と同時に、イベントログの特定のイベントを一意に識別するデータをフラッシュメモリに維持することと、が含まれる。
いくつかの実施形態において、特定のイベントは、少なくとも1つのテーブルの内容に対応する最近のイベント(たとえば、テーブルの内容に影響を及ぼし、かつ/または内容を修正した最近のイベント)である。
フラッシュメモリシステムのイベントに従ってフラッシュデータ構造を維持する方法を今初めて開示する。今開示する方法には、(a)自身の内容がフラッシュメモリシステムの状態を示す少なくとも1つのフラッシュ管理テーブルを、フラッシュメモリに維持することと、(b)イベントログをフラッシュメモリに維持することと、(c)イベントログの維持と同時に、イベントログの特定のイベントを一意に識別するデータをフラッシュメモリに維持することと、が含まれる。
いくつかの実施形態によれば、データの一意の識別を維持することには、イベントログの最近のイベントの印をフラッシュメモリに維持することが含まれる。
これらおよびさらなる実施形態が、以下の詳細な説明および実例から明白になるであろう。
ここで、特定の例示的な実施形態の点から本発明を説明する。本発明が、開示される例示的な実施形態に限定されないことを理解されたい。また、フラッシュメモリシステムのイベントに従ってデータ構造を維持するための今開示する方法、装置およびコンピュータ可読コードの全ての特徴が、添付の特許請求の範囲における任意の特定の1つにおいて請求されるように本発明を実施するのに必要だとは限らないことも、理解されたい。装置の様々な要素および特徴が、本発明を完全に可能にするために説明される。また、プロセスまたは方法が図示または説明される本開示の全体を通して、一ステップが、最初に実行される別のステップに依存することが文脈から明らかでない場合、本方法のステップは任意の順序でか、または同時に実行してもよいことも理解されたい。
データ構造を維持するための今開示する方法、装置およびコンピュータ可読コードは、たとえば、電源異常に頻繁に遭遇する可能性がある環境において、フラッシュメモリシステムの「迅速なスリープ解除」を促進するのに有用であり得る。しかしながら、これは、本発明の限定として解釈すべきではなく、フラッシュメモリシステムデータ構造を維持するための今開示する技術の1つの非限定的適用として単に開示される。
より具体的には、今開示する技術は、予期しない電源異常が頻繁に発生する条件下であっても、データの完全性を犠牲にせずに、フラッシュ管理システムの迅速なスリープ解除を提供するために用いることができる。
図1は、本発明のいくつかの実施形態による非限定的で例示的なフラッシュメモリシステム100のブロック図である。この例示的なシステムには、データを格納するためのメモリモジュール120と、ホストインタフェース180を介してメモリモジュール120と通信するホスト装置110(たとえば、マイクロコンピュータ、スマートカード端末または任意の他の装置)と、が含まれる。
メモリモジュールには、任意のタイプのフラッシュメモリ130だけでなく、ホストインタフェース180を通して受信される読み出しおよび/または書き込みおよび/または消去要求に従ってフラッシュメモリにアクセスするコントローラ140が含まれる。図1に示す例に関し、コントローラには、CPU150と、(CPUによって実行されるコードが格納される)ROM160と、CPUによるコードの実行をサポートするためにCPUによって用いられるRAM170と、が含まれる。
非限定的な例のブロックである図1は、セキュアデジタル(SecureDigital)フラッシュメモリカードまたは携帯USBフラッシュドライブなどの典型的な不揮発性記憶モジュールを表わしている。
<フラッシュ管理テーブル>
フラッシュメモリシステム100が、典型的には、揮発性メモリに、たとえばメモリモジュール120のRAM170にか、ホスト装置110のRAMにか、または任意の他の適切な位置に、1つまたは複数のフラッシュ管理テーブルを格納することが注目される。かかるフラッシュ管理テーブルの非限定的一例は、仮想ブロック番号から物理ブロック番号へのアドレス変換、すなわち、たとえば米国特許第5,937,425号明細書のシステムにおけるように、多くのフラッシュ管理システムに存在するマッピングを提供する変換テーブルである。同じ概念および方法がまた、任意の他のタイプのフラッシュ管理テーブル、たとえば、どのブロックが自由に利用でき、どのブロックができないかを表わすフリーブロックテーブル、仮想ブロック番号から1つまたは複数の物理ブロック番号のグループへのマッピングを表わすテーブル等に適用できることが注目される。
本開示に関し、「フラッシュ管理テーブル」は、フラッシュ管理システムが自身のアルゴリズムの動作をサポートするために用いるデータを含む任意のテーブルであるが、この場合に、任意の特定の時点におけるテーブルのデータは、その特定の時点における記憶システムの状態のある態様を表わす。たとえば、フラッシュ管理テーブルが、フラッシュメモリの各ブロックごとのビットを含むテーブルであり、このビットが、対応するブロックが自由に利用できるかどうかを示す場合には、第1の時点におけるテーブルの内容は、その時点で、どのブロックが自由で、どのブロックが自由でないかに関するシステム状態の態様を表わす第1のビットパターンである。後の時点で、そのテーブルにおけるビットパターンは、第1の時点と異なり、いくつかのフリーブロックが非フリーになり、かついくつかの非フリーブロックがフリーになることによってもたらされるフリーおよび非フリーブロックの異なる混合を意味してもよい。
経時的に、フラッシュメモリに格納されるデータは変化してもよく、フラッシュメモリに関連する様々な補助データもまた変化してもよい。フラッシュメモリシステムの「状態」は、フラッシュ管理システムの異なるイベント(たとえば、書き込み要求、ハウスキーピング動作等)が生じると共に経時的に変化する。
各フラッシュ管理テーブルが、フラッシュ管理システムの全体的な「状態」の1つまたは複数の態様を表わすことが注目される。したがって、任意の所与のフラッシュ管理テーブルまたはテーブルセットは、システムの完全な状態を必ずしも表わさず、そのある態様だけを表わす。上述のフリーブロックテーブルの例において、どのブロックがフリーで、どのブロックがフリーでないかの知識は、システムの完全な状態を定義するためには、確かに十分ではない。非フリーブロックは、1つの使用済みページを含むだけかも知れないし、またはそのブロックの全てのページが、有効データを書き込まれているかも知れない。これは、フリーブロックテーブルによって反映されず、他のフラッシュ管理テーブルによってか、または何か他の手段によって反映されるが、しかしやはりこのテーブルは、システム状態のある態様を表わし、したがって、フラッシュ管理テーブルの定義内に入る。
したがって、フラッシュメモリシステムの「現在の状態」または「以前の状態」または「後の状態」または「最近の状態」を表わす特定のフラッシュメモリテーブルが、揮発性または不揮発性メモリに格納される場合には、これは、特定のフラッシュメモリテーブルによって表わされるフラッシュメモリシステムの態様の「以前」または「現在」または「後」または「最近」の状態を表わす。
経時的に、フラッシュ管理テーブルは一連の状態間を移動するが、各状態は、所与の時点に対して、その時点におけるフラッシュメモリシステムの1つまたは複数の態様を表わす。テーブルによってモデル化されるシステム状態の態様は、フラッシュメモリシステムのイベントに対応する明確な転移点を備えた別個の状態間を切り替わる。
<例示的なフラッシュ管理テーブル>
図2Aは、第1の時点(t=t)において、仮想ブロック番号を物理ブロック番号にマッピングする例示的なフラッシュ管理テーブルの内容を示す。テーブルは、仮想ブロック番号によってインデックスを付けられ、また対応する仮想ブロックのデータを現在含む物理ブロック番号を生成する。実際のインプリメンテーションでは、仮想ブロック番号を格納するためのスペースを割り当てる必要がない場合もある。なぜなら、テーブルは、これらの仮想ブロック番号によって順序よく並べられ、したがって、正しいエントリに直接インデックスを付けられ得るからである。しかしながら、説明の利便性のために、テーブルは、両方の列が物理的に表わされるかのように示される。
図2Aに表わす仮想対物理マッピングの状態は、仮想ブロック番号2にアクセスする必要がある場合には、テーブルが、対応する物理ブロックがブロック番号172であると教えてくれるようなものである。ある時点において、フラッシュ管理システムに送られるコマンド(またはガーベジコレクション動作などの外部コマンドなしであってもシステムによって行われる内部ハウスキーピング動作)が、マッピングを変化させてもよい。たとえば、新しいデータを仮想ブロック番号2に書き込み、かくして、その番号の前のデータに上書きするコマンドが、フラッシュ管理システムに、仮想ブロック番号2に対応する別の物理ブロックを割り当てさせてもよく、その結果、新しいデータは、そのブロックへ格納される。
図2Bは、この変化が後の時点(t=t)で発生した後の仮想対物理フラッシュ管理テーブルの内容を示す。今や、仮想ブロック番号2は、テーブルにおいて、物理ブロック番号777に対応し、もはや物理ブロック172には対応しない。かくして、テーブルは、第1の状態から第2の状態へ切り替わった。フラッシュ管理テーブルの内容におけるどんな変化も、そのテーブルの状態変化として定義される。
フラッシュ管理システムに生じる全ての書き込み動作が、システムの全てのフラッシュ管理テーブルにおける状態変化を引き起こすというのは事実でないことを強調すべきである。たとえば、物理ブロック172が、そのページのいくつかを利用しておらず、またフラッシュ管理システムのアルゴリズムに従って新しいデータが物理ブロック172のこれらの未利用のページへ格納されるように、書き込み動作が仮想ブロック番号2に向けられる場合には、仮想対物理マッピングには変更がなされず、テーブルは、その書き込み動作のあと、不変のままである。したがって、フラッシュ管理テーブルの状態変化の割合は、典型的には、システム内で実行される動作の割合より低い。また、多数のフラッシュ管理テーブル(それぞれが、システムの状態の異なる態様を表わす)が、同じフラッシュ管理システム内に維持される場合には、テーブルのそれぞれは、異なる時点でその状態を変化させてもよい。
<スリープ解除のときに有用なデータ構造(すなわちテーブルおよびイベントログ)の格納>
上記のように、電源投入後にシステムを初期化する場合に、管理ソフトウェアは、それが用いる任意のフラッシュ管理テーブルの完全に更新されたコピーをRAMに作成することが必要になり得る。システムの迅速なスリープ解除を達成するためには、記憶システムのブロック全体にわたって分散されたデータからのみテーブルの内容を再生成することは、通常、許容できない。なぜなら、これは遅すぎるからである。テーブルの状態が変化するたびに、テーブルのコピーを不揮発性フラッシュメモリに保存するという根本的に異なる代替案もまた、許容することができない。なぜなら、それは、高オーバーヘッドを追加し、システム性能を低減させるからである。
本発明の様々な実施形態によって提供される技術は、これらの2つの先行技術のアプローチ間に歩み寄りをもたらす。かくして、フラッシュ管理テーブルは、いくつかの状態変化に対してのみ不揮発性フラッシュメモリに保存してもよいが、状態変化があるたびごとではない。
これを図3に示すが、図3は、本発明のいくつかの実施形態に従って、フラッシュ管理システムのデータ構造をフラッシュメモリに維持するための例示的なルーチンを説明している。本明細書で用いる限りでは、「フラッシュメモリに維持すること」には、フラッシュメモリに格納することが含まれる。典型的には、フラッシュメモリに維持することには、テーブルを揮発性メモリ/RAMに格納するために、テーブルおよび/または関連データを維持することと、複数の時点に対して、テーブルの更新された(すなわち、フラッシュメモリシステムの現在状況に同期された)バージョンをフラッシュメモリに保存することと、が含まれる。
図3の非限定的実施形態によると、システムは、非限定的実施形態において、いくつかの時点でアイドルであってもよく、またシステムは、次のイベントを待ってもよい206。フラッシュ管理システムのイベントを処理すると210、典型的には、1つまたは複数のテーブルが、発生したイベントに従って揮発性メモリにおいて更新される214。これらのテーブルは、所与のイベント後に、不揮発性フラッシュにおいて更新してもしなくてもよい。
<例示的なイベントログの説明>
ここで本発明者は、全てのイベントではなく、いくつかのイベントの発生後にフラッシュ管理テーブルが保存される状況において、イベントログをフラッシュメモリに維持することがまた有用であり得ることを開示する。例示的な実施形態において、このイベントログには、複数の記録が含まれ、各記録には、フラッシュ管理システムの特定のイベントを説明するデータが含まれる。本発明を限定するわけではないが、典型的には、このイベントログが、各イベント後にフラッシュメモリにおいて更新されることが注目される。これは、更新された(すなわち、フラッシュメモリシステムの最新のイベントに従って更新された)テーブルが、フラッシュメモリに必ずしも保存されるとは限らない状況に対して、データの完全性を維持するために有用であり得る。
典型的には任意の所与の瞬間にデータの完全性が提供される(すなわち、たとえ電源喪失があった場合でも)実施形態については、以下の条件の1つが真である。すなわち、a)最近のイベントに従って更新されたテーブルが不揮発性フラッシュに格納されることと、b)以前の状態(すなわち最近のイベントより以前、すなわち「以前の」イベント以後に他のイベントが、フラッシュメモリシステムにおいて発生した)に従って更新されたテーブルが、フラッシュメモリに格納され、フラッシュメモリに格納されたイベントログに、「以前のイベント」の時点以後に発生した全てのイベントの記録が含まれることとである。
イベントログの例示的な一インプリメンテーションが、順次キューであるが、この順次キューでは、外部書き込みコマンドであれ内部ハウスキーピング動作であれ状態に影響する任意の他のイベントであれ、システムの状態(すなわち、1つまたは複数のフラッシュ管理テーブルに格納された「システムの少なくとも1つの態様」の状態)に影響する全てのイベントが登録される。図4に図示する、かかる順次イベントログの非限定的で可能なインプリメンテーションが、最上位アドレスに達した後で最下位アドレスへ折り返す循環キューである。図4の例によれば、循環キューのサイズは、「M」(Mイベントまで格納可能)である。
図4の例によれば、典型的にはフラッシュには、2つのポインタが維持される。1つのポインタ(図4ではイベントM−2を指す)が、PointerMOST_RECENT_EVENTとして表示されている。このポインタは、ログに最後に登録されたエントリを指す。新しいエントリをログに追加する必要が有る場合にはいつでも、ポインタは、最初に、次のエントリ位置を指すように循環的に増分され(図3のステップ218)、次に、新しいエントリ(図3のステップ222)が、エントリポイントに記録される。
フラッシュメモリシステムのイベントをイベントログに反復的に記録すること222が、「イベントログをフラッシュメモリに維持する」として定義されることが注目される。
典型的には、PointerMOST_RECENT_EVENTは、(PointerMOST_RECENT_EVENTの位置を決定できるように、ログに指示データを格納することによって明確にまたは暗黙のうちに)フラッシュに保存される218。一例では、明確なPointerMOST_RECENT_EVENTはなく、イベントログは、追加情報を必要とせずに、その内容を走査することによってその最新のエントリを識別できるように構築される。この例によれば、この特徴は、各エントリ内に「生成」フィールドを含めることによって容易に実現できるが、この生成は、各連続的エントリに基づいて増加する数である。次に、ログの最新エントリは、最も高い生成フィールドを備えたエントリである。また、この特徴を実現するための他のインプリメンテーション(たとえば、明確なPointerMOST_RECENT_EVENTを格納すること)もまた可能である。
PointerMOST_RECENT_EVENTを示すデータは、フラッシュの任意の位置に格納してもよく、また必ずしもフラッシュの単一の位置にイベントログと共に格納しなくてもよいことが理解される。
「循環キュー」の非限定的な例によれば、ログに割り当てられるスペースが、任意のフラッシュ管理テーブルの2つの連続的な保存動作の間に決して一杯にならないほど大きい場合には、キューの内容を監視する必要はなく、新しいエントリは、キューの端部における最古のエントリに安全に上書きすることができる。
ここで、図4における第2のPointerMOST_RECENT_TABLE_SAVEを説明する。図3に示すように、フラッシュ管理テーブルは、フラッシュメモリシステムの全てのイベントではなくいくつかのイベントに対して(すなわち、「テーブル保存」条件が満たされた226イベントに対してだけ−この条件は以下で解説する)、フラッシュに保存される230。したがって、いくつかの実施形態において、フラッシュ管理テーブルが不揮発性フラッシュに保存されるときはいつでも、最近のイベントの更新された指示PointerMOST_RECENT_TABLE_SAVEもまた保存される234。このときに、不揮発性フラッシュに保存されるフラッシュ管理テーブルは、フラッシュメモリシステムの「最新状態」または「最新イベントに同期される」と言われる。このときに、図4に示す「ギャップ」は消える。
更新されたテーブルを(少なくとも1つのイベントのために)フラッシュメモリに保存せずに、ログが引き続き更新される場合には、PointerMOST_RECENT_TABLE_SAVEは、(PointerMOST_RECENT_EVENTによって表わされる)最近のイベントから遅れ始め、ギャップが再現される。
ステップ230を参照すると、フラッシュメモリシステムの現在の状態を示すテーブルが、不揮発性フラッシュに保存される場合には、これは、「フラッシュメモリにおけるテーブルを現在の状態に同期させる」こととしてが定義されることが注目される。
全体として、フラッシュ管理テーブルが、様々なイベント後に(しかし必ずしも全てのイベント後ではない)フラッシュメモリに格納されるプロセスは、「テーブルをフラッシュメモリに維持する」こととして定義される。したがって、異なる時点には、フラッシュ管理テーブルの別のバージョン(典型的には、フラッシュメモリシステムの後の状態を示すそれぞれ後のバージョン)が、フラッシュメモリに格納される。したがって、「テーブルをフラッシュメモリに維持する」ことは、任意の所与の瞬間について、最近フラッシュメモリに保存されたテーブルが、フラッシュメモリシステムの現在の状態と同期されていることを必要としない。図3を調べれば、最近格納されたフラッシュメモリテーブルが、フラッシュメモリシステムの以前の状態(すなわち、より最近のイベントがフラッシュメモリシステムに発生した前のシステムの状態)を示す期間があり得ることが示される。指示PointerMOST_RECENT_TABLE_SAVEは、後で、たとえばフラッシュシステムの電源投入後に、フラッシュから検索してもよいことが注目される。PointerMOST_RECENT_EVENTをPointerMOST_RECENT_TABLE_SAVEと比較することによって、保存フラッシュ管理テーブルが、システムの最近の状態(すなわちテーブルに表わされた状態の態様)を反映するかどうかを、任意の所与の時間に決定することができる。
イベントログの上記のインプリメンテーションは、非常に簡単で、実行が容易であるが、それは、可能な唯一のものではなく、他のインプリメンテーションもまた可能である。
いくつかの実施形態において、イベントログの各イベントのために記録されるデータには、システムの状態に影響をもたらしたイベントの影響を再生成するために必要な全てのデータが少なくとも含まれることが注目される。イベントに関連する実データをイベントログに記録する必要はなく、例示的な実施形態において、実データは記録されない。たとえば、イベントが、外部ホストシステムからの、1ページのデータを書き込むコマンドである場合には、ログにおける対応する記録には、書き込むべきデータではなく、書き込むべきセクタの仮想アドレスが含まれる。上記のように、いくつかの実施形態において、PointerMOST_RECENT_EVENTは、全てのイベントの後に保存してもよいが、PointerMOST_RECENT_TABLE_SAVEを示すデータは、テーブルがフラッシュにおいて更新される場合で、いくつかのイベント後にのみ保存される。
<更新されたフラッシュ管理テーブルを不揮発性フラッシュメモリにいつ保存すべきかを決定するための方針>
更新されたテーブルがフラッシュメモリに保存されることになるイベントを構成するのは何かを決定するための任意の方針−すなわちステップ226の「保存条件」は、本発明の範囲内である。
本発明者は、本発明の特定の実施形態に従って多数の方針を開示する。
(図5に示す)第1の実施形態では、テーブルは、テーブルのN番目の状態変化ごとに保存されるが、この場合にNは、予め決定される。Nは、保存オーバーヘッドが低い場合には、2ほどに小さくすることができ、またはたとえば保存オーバーヘッドが高い場合には、100かそれを超える大きさにすることができる。したがって、図5に示すように、カウンタ変数は、ゼロに初期化される218。各イベント後に、このカウンタ変数は増分される240。カウンタ変数が所定の値Nを超える場合には244、1つまたは複数のテーブルがフラッシュメモリに保存され230、PointerMOST_RECENT_TABLE_SAVEは、フラッシュメモリにおいて、イベントログにおけるイベントの最近のイベントと同期される。
(図6に示す)第2の実施形態では、(ステップ226に現われるような)「テーブル保存」条件は、最近のイベントによってトリガされた状態変化に従って決定される。その目的のために、状態変化は、「マイナー(小さい)」変化または「メジャー(主要な)」変化のいずれかとして分類される。テーブル状態のマイナーな変化は、テーブルの即時(すなわち、次のイベントを処理する210前)の保存をもたらさない(すなわち、ステップ226B後の「NO」ブランチ)のに対して、メジャーな変化は、即時の保存をもたらす。マイナーおよびメジャーへの変化の分類のための非限定的な例は、フリーブロックフラッシュ管理テーブルであるが、このテーブルでは、フリーブロックを非フリーブロックへ変える変化がマイナーと見なされる一方で、非フリーブロックをフリーブロックへ変える変化が、メジャーと見なされる。フラッシュ管理テーブルを不揮発性フラッシュメモリにいつ保存すべきかの方針の他の実施形態もまた可能である。
第3の実施形態では、テーブルは、定期的に、所定の時間間隔が終了したときにはいつでも保存される。テーブルがどれくらい頻繁に更新されるかと、フラッシュ管理テーブルを不揮発性フラッシュに保存する際に消費されるシステム資源量との間には、トレードオフが典型的にある。他方では、管理テーブルをより頻繁に保存することは、平均して、スリープ解除中にフラッシュメモリから検索されるテーブルが、より最新である可能性があり、それによって、より迅速なスリープ解除に備えることを意味する。任意の時間間隔が本発明の範囲内であることが注目される。例示的で非限定的な実施形態において、時間間隔は、10分の1秒と5分以上との間である。
第4の実施形態では、テーブルが更新される頻度は、システム資源の利用可能性に従って決定される。一例において、コントローラ140が、多くの読み出し/書き込み/消去要求を処理する場合か、または多くのハウスキーピング動作がある期間中には、フラッシュ管理テーブルは、システム資源を節約するために、より少ない頻度で不揮発性フラッシュに保存される。システムが、事情次第でアイドルになるかまたは低レベルの使用を免れない「低使用」期間中は、フラッシュシステム性能への著しい影響なしに、フラッシュ管理テーブルを不揮発性フラッシュにより頻繁に保存することが可能になり得る。フラッシュ管理テーブルをフラッシュにより頻繁に保存することは、特に、正常な終了でなかった状況(たとえば予期しない電源喪失)において、より迅速なスリープ解除を可能にする場合がある。
全ての状態変化がテーブルの保存をトリガするとは限らないので、テーブルの最後に保存されたコピーとRAMにおけるその最新のコピーとの間で、ギャップまたは不一致が、結局は生成される。テーブルが保存されるときはいつでも、ギャップは除去されて、2つのコピー(すなわち、揮発性RAMメモリにおけるコピーおよび不揮発性フラッシュに格納されたコピー)は同一になるが、しかし次に再び、テーブルの保存をもたらさない新しい状態変化が、再びギャップを生成する。
<スリープ解除>
いくつかの実施形態において、アプリケーションが正常に終了する場合には、更新されたフラッシュ管理テーブル(すなわち、フラッシュメモリシステムの最近のイベントに従って更新された)が、フラッシュメモリに保存される。スリープ解除のときには、これらのフラッシュ管理テーブルが、フラッシュメモリから検索される。
正常な終了でない場合には、スリープ解除のときに、フラッシュメモリから揮発性メモリへと「古い」フラッシュ管理テーブルを取り出し、次に、イベントログに格納された記録に従い、揮発性メモリにおいて、古いフラッシュ管理テーブルを更新することが可能である。
したがって、本発明によって提供される実施形態は、ラッセル(Lasser)の米国特許第6,510,488号明細書に開示されているように古いテーブルを無効にする必要性を除去する。
図7は、本発明のいくつかの実施形態に従って例示的なスリープ解除ルーチンを説明するフローチャートを提供する。電源投入410後に、フラッシュ管理システムは、フラッシュ管理テーブルの保存コピーを検索する414。次に、フラッシュ管理システムは、フラッシュ管理テーブルが不揮発性フラッシュに保存された時点における最近のイベントを指すPointerMOST_RECENT_TABLE_SAVEを検索する418。
次に、フラッシュ管理システムは、たとえば、イベントログを走査してその最新のエントリを識別することによってか、不揮発性フラッシュメモリから明確な値を検索することによってか、または任意の他の技術によって、PointerMOST_RECENT_EVENTを決定する422。PointerMOST_RECENT_EVENTは、最後にログされたイベント、すなわちシステムがシャットダウンされる直前に終了した最新のイベントを指す。
システムが、フラッシュ管理テーブルの最後の保存の直後で、テーブルの状態の追加変化が発生する前にシャットダウンされた場合には(たとえば、「正常な終了」があった場合か、または任意の他の状況において)、2つのポインタ(すなわちPointerMOST_RECENT_TABLE_SAVEおよびPointerMOST_RECENT_EVENT)は同一のはずである。しかしながら、フラッシュ管理テーブルの1つまたは複数の状態変化が、テーブルの最後の保存後かつシステムシャットダウンの前に発生した場合には、2つのポインタ間に相違が見られるはずである。
PointerMOST_RECENT_TABLE_SAVEは、保存テーブルがテーブルの状態に対する影響を既に反映している、イベントログにおける最近のイベントを指す。そのイベントから、PointerMOST_RECENT_EVENTによって示されるログの最後のイベントまでの、ログに現われる全てのイベントは、保存テーブルにはまだ反映されていない。
この時点で、テーブルにまだ反映されていない新しいイベントを「再生」することが可能である。この目的で、イベントログからのエントリ(すなわち、最近の電源投入410の前にイベントログに保存された「予め格納された」イベント)を、最も古いもの(すなわち、PointerMOST_RECENT_TABLE_SAVEによって示された)から最新のもの(すなわち、PointerMOST_RECENT_EVENTによって示された)へ一つずつ読み出してもよい434。かかる各イベントに対して、フラッシュ管理テーブルの状態を、本来のイベントがその状態に影響したのと同じ方法で、正確に更新(たとえば揮発性メモリにおいて)してもよい438。この目的で、いくつかの非限定的インプリメンテーションにおいて、「一時」ポインタPointerTEMPを定義することが有利になり得るが、このポインタは、「イテレータ」変数として機能し、イベントログの現在処理されるイベントを指す。最初に、PointerTEMPの値は、(図8Aに示すように)PointerMOST_RECENT_TABLE_SAVE426に設定される。
ログテーブルから検索434された各イベント(すなわち図8A−8Cで示すような)に対して、各フラッシュ管理テーブル(複数ある場合)は、自身に適用される特定の状態変化を反映するように更新される438。イベントログに格納された各イベント(たとえば、PointerTEMPによって示された)を処理した後、ポインタ(たとえばPointerTEMP)は、イベントログの次のイベントを指すように進めてもよい442。ひとたび最新のログエントリが処理されると(図を8Cを参照)、PointerTEMP=PointerMOST_RECENT_EVENTであり、完了である。所与のログエントリが、「最新」のログエントリかどうかを決定することは、いくつかの実施形態において、「繰り返し」ポインタ(たとえばPointerTEMP)の値をPointerMOST_RECENT_EVENTと比較すること430によって達成される。
この時点で、PointerTEMP=PointerMOST_RECENT_EVENTの場合には、今やフラッシュ管理テーブルは完全に更新され、それぞれが、システムシャットダウンの前のその最近の状態を反映する。
場合により、1つまたは複数の今や更新されたフラッシュ管理テーブルが、(更新されたPointerMOST_RECENT_TABLE_SAVEと共に)不揮発性フラッシュメモリに保存され446、その結果、(必要な場合には)テーブルの任意の将来の再生成が、現在の状態から開始する。
フラッシュメモリテーブルが、揮発性メモリおよび場合により不揮発性メモリにおいて更新されたと判定された後、次に、フラッシュメモリシステムの通常の動作を続行すること450が可能である。
<性能についての全般的な解説>
本発明のある実施形態によって提供される1つの利点は、フラッシュ管理テーブルの保存コピーの読み出し、およびテーブルの保存コピーにはまだ反映されていないログエントリの再生が、典型的には、記憶システムの多くのブロックを走査することによるゼロからのテーブルの再現より、はるかに短い時間しかかからないということである。テーブルを保存した後で、追加的な状態変化が発生する前にシステムがシャットダウンした場合には(たとえば、正常な終了があるか、またはPointerMOST_RECENT_EVENT=PointerMOST_RECENT_TABLE_SAVEのときにシャットダウンするほど「幸運」な場合には)、スリープ解除時間は、いくつかの実施形態において最も迅速で、正常なシャットダウンが行れた場合のラッセル(Lasser)の方法と同じであろう。しかし、たとえテーブルの最後の保存後にいくつかの状態変化が起こったとしても、システムのスリープ解除時間は、正常なシャットダウンがなかった場合のラッセル(Lasser)の方法に関して生じるほど悪くないであろう。多くの状況で、ログのほんの少数のエントリが読み出され、かつテーブルの状態に対するそれらの影響が再現される必要があるだけである。これにかかる正確な時間は、典型的には、再生されなければならないエントリ数に依存する。今度はこのエントリ数は、テーブルが不揮発性メモリに保存される割合に依存し得る。割合が高ければ高いほど、平均して再生すべきエントリはそれだけ少なく、平均してスリープ解除はそれだけ迅速である。他方では、保存割合が高ければ高いほど、システムの通常動作中に保存オーバーヘッドに費やされる時間はそれだけ高い。
関連する可能性がある他の一要因は、イベントログにエントリを書き込むために費やされるオーバーヘッドである。典型的には、データの完全性が提供される実施形態では、ログは、全てのイベントに関して書き込まれが、それは、ログが、フラッシュ管理テーブルの状態に影響する可能性がある全てのシステム状態変化に関して、書き込まれなければならないことを意味する。
イベントログを維持するオーバーヘッドコストは、各状態変化に対してフラッシュ管理テーブルを保存するオーバーヘッドほど高くないかどうか疑問に思うかも知れない。したがって、いくつかの実施形態において、フラッシュ管理システムは、最も迅速な書き込み方法で、イベントログにイベント記録を書き込むように設計してもよい。この目的で、フラッシュ媒体が複数の書き込みモードを提供する場合には、(イベントに対する記録のうちの少なくとも1つ、およびフラッシュ管理テーブルを示すデータを、不揮発性フラッシュメモリに書き込むための)より迅速な書き込みモードを用いることが可能である。例として、マルチレベルセル(MLC)およびシングルレベルセル(SLC)モードの両方を提供するフラッシュメモリ素子を用いるフラッシュシステムがある。かかる装置が、米国特許第6,456,528号明細書でチェン(Chen)によって開示されており、またこの特許は、本明細書に完全に述べられているかのように組み込まれている。システムに格納される「通常データ」(たとえば、ホスト装置110からの書き込み要求で送られるデータ)が、最高の記憶密度を達成するためにより遅いMLCモードを用いて書き込まれる一方で、イベントログは、はるかに速いSLCモードを用いて書き込まれる。
<フラッシュメモリシステムのキャッシュ動作の一部としてのログ維持>
いくつかの実施形態において、1つまたは複数の今開示する技術は、フラッシュ管理テーブルの要件にかかわらずとにかくイベントログを維持しなければならない状況において、特定の利点を提供することができる。これは、フラッシュ管理システムが着信データに対してキャッシングを用いる場合に事実となり得るが、この場合に、着信データは、最初、その到着時にフラッシュメモリにおける第1の位置に格納され、後で、長期記憶のための第2の位置に移動される。本明細書で用いる限りでは、「キャッシング」は、第1の位置に書き込むことである。
したがって、かかるシステムでは、第1の位置におけるデータの格納(すなわちキャッシング)は、イベントログの機能性もまた提供するように実行することができる。したがって、かかる場合には、ログを実現するための余分なオーバーヘッドコストがなく、本発明の方法の利点は最大になる。
上記の説明は、フラッシュ管理システム内の単一のフラッシュ管理テーブルに主として集中したけれども、本発明は、多数のフラッシュ管理テーブルにも等しく適用可能であり、各フラッシュ管理テーブルは、システム状態の異なる態様を表わす。多数のテーブルが存在する場合に、それぞれは、必ずしも同じ時点にではなく、それ自身の保存方式を用いて保存することができる。電源投入時に、上記の方法を用いてフラッシュ管理テーブルを再構成し、同じイベントログが全てのテーブルのためにサービスするようにしてもよい。
<今開示したシステムについての追加的解説>
今開示した技術は、ハードウェア、ファームウェアおよびソフトウェアの任意の組み合わせを用いて実現してもよい。
非限定的な一例において、フラッシュ管理テーブルの保存ならびに電源投入時におけるこれらのテーブルのリカバリおよび再構成は、コントローラ140によって、またはより正確には、ROM160からのコードを実行するCPU150によって全て実行される。しかしながら、これは、本発明を用いるために可能な唯一のシステムアーキテクチャーではない。たとえば、本発明の方法は、ホストコンピュータ110において実行されるコードによって実行することが可能であるが、これは、記憶モジュールが内蔵NANDフラッシュ素子であり、かつスタンドアロンコントローラがない場合のケースである。別の可能性として、本発明の方法は、ホストコンピュータ110によって少なくとも部分的に実行され、コントローラ140によって部分的に実行される。これら全てのアーキテクチャおよび他の多くのものが、全て本発明の範囲内にある。
本出願の説明および特許請求の範囲において、動詞「含む」および「有する」の各々またはそれらの活用形は、動詞の目的語(単数または複数)が、必ずしも、動詞の主語(単数または複数)の部材、構成要素、要素または部分の完全なリストではないことを示すために用いられる。
本明細書に挙げた全ての参考文献は、参照によりその全体において組み込まれている。参考文献の引用は、その参考文献が先行技術であるという承認を構成しない。
冠詞「1つの」は、冠詞の文法的な目的語の1つまたは複数(すなわち少なくとも1つ)を指すために、本明細書で用いられる。例として、「1つの要素」は1つの要素または複数の要素を意味する。
用語「含む」は、句「含むが、しかしそれに限定されない」を意味するために、およびこの句と区別なく本明細書で用いられる。
用語「または」は、文脈によってはっきりと別に示されなければ、用語「および/または」を意味するために、およびそれと区別なく本明細書で用いられる。用語「など」は、句「〜などだが、しかしそれらに限定されない」を意味するために、およびこの句と区別なく本明細書で用いられる。
例として提示され、かつ本発明の範囲を限定するようには意図されていない、本発明の実施形態の詳細な説明を用いて、本発明を説明した。説明した実施形態には様々な特徴が含まれるが、それらの全てが、本発明の全ての実施形態において必要とされるというわけではない。本発明のいくつかの実施形態は、特徴のうちのいくつかまたは特徴の可能な組み合わせだけを利用する。本発明の説明した実施形態の変形、および説明した実施形態において言及した特徴の異なる組み合わせを含む本発明の実施形態が、当業者に思い浮かぶであろう。
本発明のいくつかの実施形態による例示的なフラッシュメモリシステムのブロック図である。 本発明のいくつかの実施形態による例示的な変換テーブルの実例を提供する。 本発明のいくつかの実施形態による例示的な変換テーブルの実例を提供する。 本発明のいくつかの実施形態に従って、1つまたは複数のフラッシュ管理テーブルおよびイベントログをフラッシュメモリに維持するための様々なルーチンを説明するフローチャートを提供する。 本発明のいくつかの実施形態による例示的なイベントログの実例を提供する。 本発明のいくつかの実施形態に従って、1つまたは複数のフラッシュ管理テーブルおよびイベントログをフラッシュメモリに維持するための様々なルーチンを説明するフローチャートを提供する。 本発明のいくつかの実施形態に従って、1つまたは複数のフラッシュ管理テーブルおよびイベントログをフラッシュメモリに維持するための様々なルーチンを説明するフローチャートを提供する。 スリープ解除のための例示的なルーチンのフローチャートを提供する。 本発明のいくつかの実施形態による例示的なイベントログの実例を提供する。 本発明のいくつかの実施形態による例示的なイベントログの実例を提供する。 本発明のいくつかの実施形態による例示的なイベントログの実例を提供する。

Claims (41)

  1. a)データを格納するためのフラッシュメモリと、
    b)前記フラッシュメモリを制御し使用するためのデータを格納するための揮発性メモリと、
    c)CPUと、を有するフラッシュメモリシステムにおいて、
    前記CPUが、フラッシュメモリシステムのイベントに従ってフラッシュデータ構造を管理する方法であって、
    ある時点におけるフラッシュメモリシステムの状態を表すデータであり、前記フラッシュメモリのフラッシュメモリ素子上の記憶データを管理するために用いられるデータを含むフラッシュ管理テーブルを用い
    a)前記フラッシュメモリ管理テーブルを、第一のフラッシュ管理テーブルとして前記フラッシュメモリに格納・保存するステップと
    b)前記フラッシュメモリ管理テーブルを、前記フラッシュメモリシステムがアクセスされる際に論理ブロックユニットを物理ブロックユニットに変換するために使用する第二のフラッシュメモリ管理テーブルとして前記揮発性メモリに格納、保存するステップと
    c)前記システムへのイベントを記録するイベントログを前記フラッシュメモリに格納、保存するステップと、
    を備え、
    i)前記フラッシュメモリに格納されている前記第一のフラッシュ管理テーブルは、少なくともある時点において、前記フラッシュメモリシステムの以前の状態を表すように構成され、
    ii)前記フラッシュメモリシステムの前記以前の状態は、
    A)前記フラッシュメモリのイベントログに格納され、前記揮発性メモリの前記第二のフラッシュ管理テーブルに反映されている最新のイベントより前であり、
    B)前記フラッシュメモリシステムの直近の電源投入の後である、
    ことを特徴とする方法。
  2. 前記フラッシュメモリに前記イベントログを格納、保存するステップは、それぞれのイベントが前記フラッシュメモリシステムのそれぞれの次のイベントの発生前にフラッシュメモリに格納されるように実行される、請求項1に記載の方法。
  3. 前記フラッシュメモリに格納された前記イベントログ、および前記フラッシュメモリに格納された前記第一のフラッシュ管理テーブルの内容が、前記少なくとも一つの時点における前記フラッシュメモリシステムの状態として反映される、請求項1または2に記載の方法。
  4. i)前記フラッシュメモリに格納された前記イベントログ、および
    ii)A)前記フラッシュメモリに格納され、B)前記以前の状態を表す前記第一のフラッシュ管理テーブルから、
    前記以前の状態よりも新しい前記フラッシュメモリシステムの状態を表す少なくとも一つのフラッシュ管理テーブルを生成するステップを備える、請求項1〜3のいずれかに記載の方法。
  5. 前記生成するステップの時点における前記フラッシュメモリシステムの状態が、最も新しい状態である、請求項4に記載の方法。
  6. 前記生成するステップが、スリープ解除のときに達成される、請求項4に記載の方法。
  7. 前記第一のフラッシュ管理テーブル格納、保存するステップが、前記少なくともつのある時点とは異なる別の時点で、前記第一のフラッシュ管理テーブルを前記イベントログに格納された最新のイベントに同期させるステップを含む、請求項1〜6のいずれかに記載の方法。
  8. 前記フラッシュメモリシステムの前記以前の状態が、前記フラッシュメモリの前記イベントログに格納された第の最新の状態より前であるように実行される、請求項1〜4のいずれかに記載の方法。
  9. 前記フラッシュメモリ前記第一のフラッシュ管理テーブル格納、保存するステップが、前記フラッシュメモリにおいて、前記少なくともつのフラッシュ管理テーブルを現在の状態に定期的に同期させるステップを含む、請求項1〜8のいずれかに記載の方法。
  10. 前記フラッシュメモリ前記第一のフラッシュ管理テーブル格納、保存するステップが、前記フラッシュメモリシステムのN(N≧2)番目の状態変化ごとに、前記フラッシュメモリにおいて、前記第一のフラッシュ管理テーブルを現在の状態に同期させるステップを含む、請求項1〜8のいずれかに記載の方法。
  11. 前記フラッシュメモリ前記第一のフラッシュ管理テーブル格納、保存するステップが、
    i)第の所定のタイプの状態変化が発生すると、前記フラッシュメモリにおいて、前記第一のフラッシュ管理テーブルを現在の状態に同期させるステップと、
    ii)第の所定のタイプの状態変化が発生すると、前記フラッシュメモリにおいて、前記第一のフラッシュ管理テーブルを前記現在の状態に同期させないステップと、
    を含む、請求項1〜8のいずれかに記載の方法。
  12. 前記イベントログ格納、保存するステップが、前記第一の所定のタイプの状態変化が発生することで、前記イベントログを前記フラッシュメモリに記録するステップを含み、前記フラッシュメモリシステムの複数のイベントは
    i)前記第一の所定のタイプの状態変化の発生の後であり、
    ii)前記第一の所定のタイプの状態変化の後に発生するフラッシュメモリシステムの第一の電源停止の前において発生する、請求項11に記載の方法。
  13. 前記複数のイベントの前記フラッシュメモリの前記イベントログへの記録が前記フラッシュメモリシステムの前記第一の電源停止の前であって、前記第一の所定の状態変化の後である、請求項12に記載の方法。
  14. 前記第一のフラッシュ管理テーブルが前記フラッシュメモリにおいて更新される頻度が、前記フラッシュメモリシステムの前記CPUにより行われる読み出しまたは書き込みまたは消去要求を処理する頻度や、ハウスキーピング動作が行われる頻度に基づいて選定され、前記各頻度の合計が多い場合には、前記第一のフラッシュ管理テーブルは、より少ない頻度で更新される、請求項1〜8のいずれかに記載の方法。
  15. 前記第一のフラッシュ管理テーブルが、i)仮想ブロック番号を物理ブロック番号にマッピングする変換テーブルと、ii)フリーブロックテーブルと、の少なくとも一つを含む、請求項1〜14のいずれかに記載の方法。
  16. 前記方法は、少なくとも一つの前記ある時点が前記フラッシュ管理システムによる最新のイベントの処理まで連続している、請求項1〜15のいずれかに記載の方法。
  17. 前記フラッシュメモリシステムの前記以前の状態は、
    C)前記フラッシュメモリの前記イベントログに格納された複数の異なるイベントのそれぞれのイベントより前である、請求項16に記載の方法。
  18. 前記フラッシュメモリ前記第一のフラッシュ管理テーブルを格納、保存するステップは、
    i)前記第のフラッシュ管理テーブルの最新の更新以降に前記フラッシュメモリシステムに複数のイベントが発生した時点で、前記複数のイベントの発生順序に従って前記フラッシュメモリ前記第のフラッシュ管理テーブルをフラッシュテーブルの現在の状態に同期させるか否かを決定するステップと、
    ii)前記決定するステップに従って、前記フラッシュメモリ前記第のフラッシュ管理テーブルをフラッシュ管理システムの前記現在の状態に同期させるステップと
    を含む、請求項1〜8のいずれかに記載の方法。
  19. 前記フラッシュメモリ前記第のフラッシュ管理テーブルを格納、保存するステップは、
    i)前記第のフラッシュ管理テーブルの最新の更新以降に前記フラッシュメモリシステムに複数のイベントが発生した時点で、前記フラッシュメモリ内の前記第のフラッシュ管理テーブルの最新の更新から経過した時間の長さに基づいて、前記フラッシュメモリ内の前記第のフラッシュ管理テーブルを前記フラッシュ管理システムの現在の状態に同期させるか否かを決定するステップと、
    ii)前記決定するステップに従って、前記フラッシュメモリ内前記第のフラッシュ管理テーブルをフラッシュ管理システムの前記現在の状態に同期させるステップと
    を含む、請求項1〜8のいずれかに記載の方法。
  20. 前記フラッシュメモリ内の前記第のフラッシュ管理テーブルを格納、保存するステップは、
    i)フラッシュメモリシステムのイベントが非フリーブロックをフリーブロックに変更するか否かを決定するステップと、
    ii)前記決定の結果に従って、前記フラッシュメモリ内前記第のフラッシュ管理テーブルをフラッシュ管理システムの現在の状態に同期させるか否かを決定するステップと、
    iii)前記決定するステップに従って、前記フラッシュメモリ内前記第のフラッシュ管理テーブルをフラッシュ管理システムの前記現在の状態に同期させるステップと、
    を含む、請求項1〜8のいずれかに記載の方法。
  21. 前記決定するステップは、フラッシュメモリシステムの最新のイベントが非フリーブロックからフリーブロックに変更されるか否かを決定するステップである、請求項20に記載の方法。
  22. 前記決定するステップは、前記フラッシュメモリ内の前記第のフラッシュ管理テーブルの最新の更新が発生した以降に、前記フラッシュメモリシステム複数のイベントが発生した時点において決定される、請求項20に記載の方法。
  23. a)データを格納するためのフラッシュメモリと
    b)前記フラッシュメモリを制御し使用するためのデータを格納するための揮発性メモリと、
    c)CPUと
    d)前記フラッシュメモリにアクセスするために用いられる少なくともつのデータ構造を管理するためのフラッシュ管理ソフトウェアと、
    を含むフラッシュメモリシステムにおいて、前記CPUがスリープ解除を行う方法であって、
    I)スリープ解除のときに、
    (a)前記フラッシュメモリシステムの状態を表す少なくともつのフラッシュ管理テーブルを前記フラッシュメモリから読み出すステップと、
    (b)前記フラッシュメモリに格納されている前記少なくとも一つのフラッシュ管理テーブルを前記揮発性メモリにコピーするステップ、および前記フラッシュメモリにアクセスする際にコピーされた前記フラッシュ管理テーブルを用いて論理ブロック番号を物理ブロック番号に変換するステップと、
    (c)前記フラッシュメモリシステムの予め格納されたイベントの記録を含むイベントログを前記フラッシュメモリから読み出すステップと、
    (d)前記イベントログに格納された少なくともつのイベントに関し、前記少なくともつのイベントによってもたらされた変化に従って前記フラッシュメモリに格納されている前記少なくともつのフラッシュ管理テーブルを更新するステップと、
    を含む方法。
  24. i)前記イベントログ読み出すステップが、前記フラッシュメモリシステムの最新のイベントの記録を読み出すステップを含み、
    ii)前記更新するステップが、前記イベントログの最新のイベントに従って前記少なくとも一つのフラッシュ管理システム更新するステップを含む、請求項23に記載の方法。
  25. 前記少なくともつのフラッシュ管理テーブルが、i)論理ブロック番号を物理ブロック番号にマッピングする変換テーブルと、ii)フリーブロックテーブルと、の少なくとも一つを含む、請求項23または24に記載の方法。
  26. i)前記イベントログ前記フラッシュメモリから読み出すステップは、前記フラッシュ管理テーブルの状態よりも後に生じた複数の異なるイベントを含む全てのイベントの記録を読み出すステップと
    ii)前記更新するステップは、前記フラッシュ管理テーブルを前記全ての新たに生じたイベントのそれぞれのイベントが影響したそれぞれの変化に従って更新するステップと、
    を含む、請求項23〜25のいずれかに記載の方法。
  27. i)前記少なくとも一つのフラッシュ管理テーブル前記フラッシュメモリから読み出すステップは、前記フラッシュメモリの読み出しイベントログの最も新しいイベントよりも前のフラッシュメモリの状態が表わされた少なくとも一つの古いテーブルから読み出ステップと、
    ii)前記フラッシュメモリの読み出しイベントログの少なくとも一つの前記更新イベントに従って、前記少なくとも一つの古いテーブルを更新するステップと
    を含む、請求項23〜25のいずれかに記載の方法。
  28. 前記更新するステップは、前記イベントログに格納されている複数のイベントのそれぞれが、前記複数のイベントの前記それぞれのイベントによって影響を受ける変化に従って少なくともつのフラッシュ管理テーブルを更新するステップを含む、請求項23から27のいずれかに記載の方法。
  29. a)データを格納するためのフラッシュメモリと、
    b)前記フラッシュメモリを制御し使用するためのデータを格納するための揮発性メモリと、
    c)CPUと、
    d)前記フラッシュメモリにアクセスするために用いられる少なくともつのデータ構造を管理するためのフラッシュ管理ソフトウェアと、
    を含むフラッシュメモリシステムであって、
    スリープ解除のときに、前記フラッシュ管理ソフトウェアが、前記CPUの作動の結果、前記CPUによって、
    (i)前記フラッシュメモリシステムの状態を表す少なくともつのフラッシュ管理テーブルを前記フラッシュメモリから読み出すように、
    (ii)前記フラッシュメモリに格納されている前記少なくとも一つのフラッシュ管理テーブルを前記揮発性メモリにコピーするように、および前記フラッシュメモリにアクセスする際にコピーされた前記フラッシュ管理テーブルを用いて論理ブロック番号を物理ブロック番号に変換するように、
    (iii)前記フラッシュメモリシステムの予め格納されたイベントの記録を含むイベントログを前記フラッシュメモリから読み出すように、
    (iv)前記イベントログに格納された少なくともつのイベントに関し、前記少なくとも一つのイベントによってもたらされた変化に従って前記少なくともつのフラッシュ管理テーブルを更新するように動作するフラッシュメモリシステム。
  30. 前記フラッシュ管理ソフトウェアが、
    i)前記イベントログの読み出しにおいて、前記フラッシュメモリシステムの最新のイベントの記録を読み出すように
    ii)前記更新において、前記イベントログの最新のイベントに従って前記少なくとも一つのフラッシュ管理システム更新するように、操作可能である、請求項29に記載のシステム。
  31. 前記フラッシュ管理ソフトウェアが、
    i)前記少なくともつのフラッシュ管理システムの前記フラッシュメモリからの前記読み出しにおいて、前記フラッシュメモリから読み出しイベントログが、最新のイベントよりも前のフラッシュメモリシステムの状態を表す少なくとも一つの古いテーブルを更新するように操作可能である、請求項29または30に記載のシステム。
  32. 前記フラッシュ管理ソフトウェアが、
    i)前記少なくともつのフラッシュ管理テーブルの前記フラッシュメモリからの読み出しにおいて、前記読み出しイベントログの最新のイベントよりも前のフラッシュメモリの状態を表す少なくともつの古いテーブルから読み出すように
    ii)前記更新において、前記フラッシュ読み出しイベントの少なくともつの前記最新のイベントに従って、前記少なくともつの古いテーブルを更新するように、操作可能である、請求項29または30に記載のシステム。
  33. ソフトウェアプログラムを記憶したコンピュータ読み取り可能な記憶媒体であって、
    前記ソフトウェアプログラムが、
    a)データを格納するためのフラッシュメモリと、
    b)前記フラッシュメモリを制御し使用するためのデータを格納するための揮発性メモリと、
    c)CPUと、
    を含むフラッシュメモリシステムにおいて、前記CPUがスリープ解除を行うための命令を含み、前記命令が、
    I)スリープ解除のときに、
    (a)前記フラッシュメモリシステムの状態を表す少なくともつのフラッシュ管理テーブルをフラッシュメモリから読み出す命令と、
    (b)前記フラッシュメモリに格納されている前記少なくとも一つのフラッシュ管理テーブルを前記揮発性メモリにコピーする命令、および前記フラッシュメモリにアクセスする際にコピーされた前記フラッシュ管理テーブルを用いて論理ブロック番号を物理ブロック番号に変換する命令と、
    (c)前記フラッシュメモリシステムの予め格納されたイベントの記録を含むイベントログを前記フラッシュメモリから読み出す命令と、
    (d)前記イベントログに格納された少なくともつのイベントに関し、前記少なくともつのイベントによってもたらされた変化に従って前記少なくともつのフラッシュ管理テーブルを更新する命令と、
    を含む、記憶媒体。
  34. a)データを格納するためのフラッシュメモリと、
    b)データを格納するための揮発性メモリと、
    c)前記フラッシュメモリにアクセスするために用いられる少なくともつのデータ構造を管理するためのフラッシュ管理ソフトウェアと、
    を含むフラッシュメモリシステムであって、
    i)前記フラッシュ管理ソフトウェアが、
    )前記フラッシュメモリシステムの状態を表すデータを含む第一のフラッシュ管理テーブルを前記フラッシュメモリに格納、保存し、
    B)イベントログを前記フラッシュメモリに格納、保存し、
    C)前記フラッシュメモリシステムがアクセスされた際に論理ブロック番号を物理ブロック番号に変換するために使用される第二のフラッシュ管理テーブルを前記揮発性メモリに格納、保存するように動作可能であり、
    ii)前記フラッシュメモリに格納されている前記第一のフラッシュ管理テーブルは、少なくともある時点において、前記フラッシュメモリシステムの以前の状態を表すように動作可能であり、
    iii)前記フラッシュメモリシステムの前記以前の状態は、
    A)前記フラッシュメモリの前記イベントログに格納された最新の前記イベントよりも以前であり、
    B)前記揮発性メモリに格納された第二のフラッシュ管理テーブルで表わされる最新のイベントよりも以前であり、
    C)前記フラッシュメモリの最新の電源立ち上げよりも後である、ことを特徴とするフラッシュメモリシステム。
  35. 前記フラッシュ管理ソフトウェアの実行は、前記フラッシュメモリシステムの前記以前の状態が、前記フラッシュメモリの前記イベントログに格納された第二の最新の状態より前であるように動作可能である、請求項34に記載のシステム。
  36. 前記フラッシュメモリシステムのそれぞれのイベントの次のイベントが発生する前に、前記それぞれのイベントを前記フラッシュメモリに記憶することで、前記フラッシュメモリにイベントログを格納、保存するように、前記フラッシュ管理ソフトウェアが動作可能である、請求項34または35に記載のシステム。
  37. ソフトウェアプログラムを記憶したコンピュータ読み取り可能な記憶媒体であって、
    前記ソフトウェアプログラムが、
    a)データを格納するためのフラッシュメモリと、
    b)前記フラッシュメモリを制御し使用するためのデータを格納するための揮発性メモリと、
    c)CPUと、を有するフラッシュメモリシステムにおいて、前記CPUが、フラッシュメモリシステムのイベントに従ってフラッシュデータ構造を管理するための命令を含み、前記命令が、
    )前記フラッシュメモリシステムの状態を表す第一のフラッシュ管理テーブルをフラッシュメモリに格納、保存する命令と、
    )前記フラッシュメモリシステムの状態を表し、前記フラッシュメモリにアクセスする際に論理ブロックユニットを物理ブロックユニットに変換するために使用される第二のフラッシュ管理テーブルを揮発性メモリに格納、保存する命令と、
    c)前記フラッシュメモリ内にイベントログを格納・保存する命令と、
    を含み、
    i)前記フラッシュメモリに格納されている前記第一のフラッシュ管理テーブルは、前記フラッシュメモリシステムの少なくともある時点よりも以前の状態を表し、
    ii)前記フラッシュメモリシステムの以前の状態は、
    A)前記フラッシュメモリのイベントログに格納され、前記揮発性メモリの前記第二のフラッシュ管理テーブルに反映されている最新のイベントより前であり、
    B)前記フラッシュメモリシステムの直近の電源投入の後である記憶媒体。
  38. a)データを格納するためのフラッシュメモリと、
    b)前記フラッシュメモリを制御し使用するためのデータを格納するための揮発性メモリと、
    c)CPUと、を有するフラッシュメモリシステムにおいて、
    前記CPUが、フラッシュメモリシステムのイベントに従ってフラッシュデータ構造を管理する方法であって、
    )前記フラッシュメモリシステムの状態を表す第一のフラッシュ管理テーブルをフラッシュメモリに格納、保存するステップと、
    )前記フラッシュメモリシステムの状態を表し、前記フラッシュメモリにアクセスする際に論理ブロックユニットを物理ブロックユニットに変換するために使用される第二のフラッシュ管理テーブルを揮発性メモリに格納、保存するステップと、
    c)前記フラッシュメモリシステムのそれぞれの次のイベントの発生前に、前記それぞれのイベントを前記フラッシュメモリに記録することで、前記フラッシュメモリにイベントログを格納、保存するステップと、
    含み、
    i)前記方法は、前記フラッシュメモリに格納されている前記第一のフラッシュ管理テーブルが少なくともある時点において、前記フラッシュメモリシステムの以前の状態を表すように実行され、
    ii)前記フラッシュメモリシステムの以前の状態は、前記フラッシュメモリのイベントログに格納されて、前記揮発性メモリの前記第二のフラッシュ管理テーブルに反映されている最新のイベントよりも以前である、方法。
  39. 前記少なくともつの時点の少なくともつは、フラッシュ管理システムによる最新のイベントの処理に続くように前記方法が実行される、請求項38に記載の方法。
  40. a)データを格納するためのフラッシュメモリと、
    b)前記フラッシュメモリを制御し使用するためのデータを格納するための揮発性メモリと、
    c)前記フラッシュメモリにアクセスするために用いられるデータ構造を管理するためのフラッシュ管理ソフトウェアと、
    を含むフラッシュメモリシステムであって、
    i)前記フラッシュ管理ソフトウェアが、
    A)その内容が前記フラッシュメモリシステムの状態を表す第一のフラッシュ管理テーブルを前記フラッシュメモリに格納、保存し、
    B)その内容が前記フラッシュメモリシステムの状態を表し、前記フラッシュメモリにアクセスする際に論理ブロックユニットを物理ブロックユニットに変換するために使用される第二のフラッシュ管理テーブルを前記揮発性メモリに格納、保存し、
    C)前記フラッシュメモリシステムのそれぞれの次のイベントの発生前に、前記それぞれのイベントを前記フラッシュメモリに記録することで、前記フラッシュメモリにイベントログを格納、保存するように操作可能であり、
    ii)前記フラッシュメモリに格納されている前記第一のフラッシュ管理テーブルに、少なくともある時点において、前記フラッシュメモリシステムの以前の状態を表すように操作可能であり、
    iii)前記フラッシュメモリシステムの前記以前の状態は、前記フラッシュメモリの前記イベントログに格納され、前記揮発性メモリの前記第二のフラッシュ管理テーブルに反映されている最新イベントよりも前の状態である、フラッシュメモリシステム。
  41. ソフトウェアプログラムを記憶したコンピュータ読み取り可能な記憶媒体であって、
    前記ソフトウェアプログラムが、
    a)データを格納するためのフラッシュメモリと、
    b)データを格納するための揮発性メモリと、
    c)CPUと、
    を有するフラッシュメモリシステムにおいて、前記CPUが、フラッシュメモリシステムのイベントに従ってフラッシュデータ構造を管理するための命令を含み、前記命令が、
    a)その内容がフラッシュメモリシステムの状態を表す第のフラッシュ管理テーブルを、フラッシュメモリに格納、保存する命令と、
    b)その内容がフラッシュシステムの状態を表し、前記フラッシュメモリにアクセスする際に論理ブロックユニットを物理ブロックユニットに変換するために使用される第二のフラッシュ管理テーブルを揮発性メモリに格納、保存する命令と、
    c)それぞれのイベントが、フラッシュメモリのそれぞれのイベントの次のイベントの発生よりも以前にフラッシュメモリに格納されるように、イベントログを前記フラッシュメモリに格納、保存する命令と、を含み、
    i)少なくともつの時点において、前記フラッシュメモリに格納されている前記第のフラッシュ管理テーブルは、フラッシュメモリシステムの以前の状態を表し、
    ii)フラッシュメモリの前記以前の状態は、前記フラッシュメモリ内の前記イベントログに格納され、揮発性メモリの第のフラッシュ管理テーブルに反映されている最新の前記イベントよりも以前である、記憶媒体。
JP2008510721A 2005-05-09 2006-05-09 フラッシュデータ構造を管理する方法、スリープ管理方法、フラッシュメモリシステム、及び記憶媒体 Expired - Fee Related JP5002586B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US67890205P 2005-05-09 2005-05-09
PCT/IL2006/000550 WO2006120679A2 (en) 2005-05-09 2006-05-09 A method and system for facilitating fast wake-up of a flash memory system

Publications (2)

Publication Number Publication Date
JP2008544343A JP2008544343A (ja) 2008-12-04
JP5002586B2 true JP5002586B2 (ja) 2012-08-15

Family

ID=37396967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008510721A Expired - Fee Related JP5002586B2 (ja) 2005-05-09 2006-05-09 フラッシュデータ構造を管理する方法、スリープ管理方法、フラッシュメモリシステム、及び記憶媒体

Country Status (6)

Country Link
US (2) US8244958B2 (ja)
EP (1) EP1880293A4 (ja)
JP (1) JP5002586B2 (ja)
KR (1) KR101286477B1 (ja)
CN (1) CN101218566B (ja)
WO (1) WO2006120679A2 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US20080162782A1 (en) * 2005-06-15 2008-07-03 Nagarajan Suresh Using Transacted Writes and Caching Mechanism to Improve Write Performance in Multi-Level Cell Flash Memory
US7702821B2 (en) 2005-09-15 2010-04-20 Eye-Fi, Inc. Content-aware digital media storage device and methods of using the same
US8275949B2 (en) * 2005-12-13 2012-09-25 International Business Machines Corporation System support storage and computer system
US8745315B2 (en) * 2006-11-06 2014-06-03 Rambus Inc. Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
WO2008073219A1 (en) * 2006-12-08 2008-06-19 Sandforce, Inc. Data redundancy in a plurality of storage devices
US7904672B2 (en) 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US7769945B2 (en) * 2007-01-18 2010-08-03 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7987332B2 (en) 2007-03-21 2011-07-26 Sandisk Technologies Inc. Methods for storing memory operations in a queue
WO2008115720A1 (en) * 2007-03-21 2008-09-25 Sandisk Corporation Methods for storing memory operations in a queue
JP2008257773A (ja) * 2007-04-02 2008-10-23 Toshiba Corp 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード
US8504784B2 (en) 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
US7970983B2 (en) * 2007-10-14 2011-06-28 Sandisk Il Ltd. Identity-based flash management
US8656083B2 (en) * 2007-12-21 2014-02-18 Spansion Llc Frequency distributed flash memory allocation based on free page tables
CN101681313A (zh) * 2008-02-29 2010-03-24 株式会社东芝 存储器系统
JP2009211188A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
JP2009211215A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US20110029587A1 (en) * 2008-03-31 2011-02-03 Fujii John M Updating Retrieval Codes In Response To File Transfers
TWI375961B (en) * 2008-05-15 2012-11-01 Phison Electronics Corp Multi non-volatile memory chip packetaged storage system and controller and access method thereof
EP2281241A1 (de) * 2008-05-28 2011-02-09 Hyperstone GmbH Verfahren zum adressieren von seitenorientierten nichtflüchtigen speichern
US8065304B2 (en) * 2008-06-11 2011-11-22 International Business Machines Corporation Using asymmetric memory
US20110197018A1 (en) * 2008-10-06 2011-08-11 Sam Hyuk Noh Method and system for perpetual computing using non-volatile random access memory
EP2264602A1 (en) * 2009-06-17 2010-12-22 Gemalto SA Memory device for managing the recovery of a non volatile memory
US8990476B2 (en) 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
JP5521477B2 (ja) * 2009-10-08 2014-06-11 日本電気株式会社 メモリ制御装置
US8296506B2 (en) * 2009-11-09 2012-10-23 Lite-On It Corporation Method for managing a non-violate memory and computer readable medium thereof
US8868575B2 (en) * 2010-01-13 2014-10-21 International Business Machines Corporation Method and system for transformation of logical data objects for storage
KR20110097438A (ko) * 2010-02-25 2011-08-31 삼성전자주식회사 메모리 시스템, 그리고 그것의 동작 방법
CN102939593B (zh) * 2010-03-05 2015-10-21 艾菲股份有限公司 无限存储器
US8886870B2 (en) * 2010-05-25 2014-11-11 Marvell World Trade Ltd. Memory access table saving and restoring system and methods
US8793429B1 (en) * 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US9251059B2 (en) 2011-09-23 2016-02-02 Avalanche Technology, Inc. Storage system employing MRAM and redundant array of solid state disk
US20130080687A1 (en) * 2011-09-23 2013-03-28 Avalanche Technology, Inc. Solid state disk employing flash and magnetic random access memory (mram)
US9009396B2 (en) 2011-09-23 2015-04-14 Avalanche Technology, Inc. Physically addressed solid state disk employing magnetic random access memory (MRAM)
JP5808854B2 (ja) 2011-10-05 2015-11-10 株式会社日立製作所 ストレージシステム及びストレージ方法
JP5938997B2 (ja) * 2012-03-30 2016-06-22 富士通株式会社 情報記憶装置、情報記憶装置制御プログラム、情報記憶装置制御方法
US9170932B1 (en) * 2012-05-22 2015-10-27 Western Digital Technologies, Inc. System data storage mechanism providing coherency and segmented data loading
KR102164617B1 (ko) 2014-03-24 2020-10-12 삼성전자주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
JP6348400B2 (ja) * 2014-10-15 2018-06-27 株式会社メガチップス 半導体記憶装置
CN105511806B (zh) * 2015-11-30 2018-09-07 华为技术有限公司 处理写请求的方法和移动终端
US9542655B1 (en) 2015-12-09 2017-01-10 International Business Machines Corporation Generating streaming analytics applications using a glossary
US10452561B2 (en) 2016-08-08 2019-10-22 Raytheon Company Central processing unit architecture and methods for high availability systems
US20180239532A1 (en) 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10359955B2 (en) 2017-02-23 2019-07-23 Western Digital Technologies, Inc. Data storage device configured to perform a non-blocking control update operation
JP2018160156A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム
US10459803B2 (en) * 2017-06-28 2019-10-29 Western Digital Technologies, Inc. Method for management tables recovery
CN107688442B (zh) * 2017-09-04 2020-11-20 苏州浪潮智能科技有限公司 一种用于固态硬盘的虚拟块管理方法
KR102589410B1 (ko) 2017-11-10 2023-10-13 삼성전자주식회사 메모리 장치 및 그의 파워 제어 방법
KR102553261B1 (ko) 2018-10-10 2023-07-07 삼성전자 주식회사 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 스토리지 장치, 및 상기 메모리 컨트롤러의 동작 방법
CN109471757A (zh) * 2018-11-19 2019-03-15 郑州云海信息技术有限公司 一种正常关机时触发nvdimm-n备份的方法及系统
KR20200099897A (ko) 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
JP7362369B2 (ja) * 2019-09-03 2023-10-17 キオクシア株式会社 メモリシステム
JP7490469B2 (ja) * 2020-06-25 2024-05-27 キオクシア株式会社 ストレージデバイス、ストレージシステム及び制御方法
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
US11995344B2 (en) * 2022-05-19 2024-05-28 Micron Technology, Inc. Memory with efficient storage of event log data

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
JPH07295866A (ja) * 1994-04-20 1995-11-10 Casio Comput Co Ltd データ処理装置
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
JP3464836B2 (ja) * 1995-01-19 2003-11-10 富士通株式会社 記憶装置のメモリ管理装置
US5671388A (en) * 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6282605B1 (en) * 1999-04-26 2001-08-28 Moore Computer Consultants, Inc. File system for non-volatile computer memory
JP2001209567A (ja) * 2000-01-27 2001-08-03 Nec Eng Ltd ジャーナル書き込み方式
US6970890B1 (en) * 2000-12-20 2005-11-29 Bitmicro Networks, Inc. Method and apparatus for data recovery
US6510488B2 (en) * 2001-02-05 2003-01-21 M-Systems Flash Disk Pioneers Ltd. Method for fast wake-up of a flash memory system
JP4059002B2 (ja) * 2001-06-13 2008-03-12 株式会社日立製作所 メモリ装置
JP3692313B2 (ja) 2001-06-28 2005-09-07 松下電器産業株式会社 不揮発性メモリの制御方法
JP2003027144A (ja) * 2001-07-09 2003-01-29 Sanyo Special Steel Co Ltd 高炭素クロム軸受鋼鋼管切断リングの復炭処理方法
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US6456528B1 (en) * 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
JP4129381B2 (ja) * 2002-09-25 2008-08-06 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
ATE382891T1 (de) * 2002-10-17 2008-01-15 Matsushita Electric Ind Co Ltd Vorrichtung zur dateiaktualisierung
JP4391793B2 (ja) * 2002-10-17 2009-12-24 パナソニック株式会社 ファイル更新装置
JP2004234188A (ja) 2003-01-29 2004-08-19 Canon Inc データファイル管理方法
KR100584338B1 (ko) * 2003-09-17 2006-05-26 삼성전자주식회사 소프트웨어 업데이트 방법 및 시스템
JP3912355B2 (ja) 2003-10-14 2007-05-09 ソニー株式会社 データ管理装置、データ管理方法、不揮発性メモリ、不揮発性メモリを有する記憶装置及びデータ処理システム
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
JP2006040168A (ja) 2004-07-29 2006-02-09 Tdk Corp フラッシュメモリシステム及びフラッシュメモリの制御方法

Also Published As

Publication number Publication date
CN101218566B (zh) 2011-11-23
EP1880293A4 (en) 2009-04-01
CN101218566A (zh) 2008-07-09
EP1880293A2 (en) 2008-01-23
WO2006120679A3 (en) 2007-05-24
JP2008544343A (ja) 2008-12-04
WO2006120679A2 (en) 2006-11-16
US8244958B2 (en) 2012-08-14
KR20080009314A (ko) 2008-01-28
US20060253645A1 (en) 2006-11-09
KR101286477B1 (ko) 2013-07-16
USRE46446E1 (en) 2017-06-20

Similar Documents

Publication Publication Date Title
JP5002586B2 (ja) フラッシュデータ構造を管理する方法、スリープ管理方法、フラッシュメモリシステム、及び記憶媒体
JP5351046B2 (ja) フラッシュメモリシステムの高速起動を容易にする方法およびシステム
JP4279553B2 (ja) フラッシュメモリシステムの迅速スリープ解除方法
US7711923B2 (en) Persistent flash memory mapping table
US9996542B2 (en) Cache management in a computerized system
US8195891B2 (en) Techniques to perform power fail-safe caching without atomic metadata
JP5571691B2 (ja) 記憶装置におけるマッピングアドレステーブルの維持
TWI471726B (zh) 快取資料與元資料之管理
US8370587B2 (en) Memory system storing updated status information and updated address translation information and managing method therefor
TW201017405A (en) Improved hybrid drive
KR20090012821A (ko) 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
KR101507093B1 (ko) 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법
CN115705152A (zh) 使用存储器内日志在非易失性存储器装置中的元数据管理
CN115705153A (zh) 有条件更新和延迟的查找
JP2006099802A (ja) 記憶制御装置およびキャッシュメモリの制御方法
WO2008087634A1 (en) A method and system for facilitating fast wake-up of a flash memory system
TWI856880B (zh) 非暫態電腦可讀取媒體、儲存裝置、及儲存方法
TWI850721B (zh) 記憶體內日誌
KR101618999B1 (ko) 네트워크 부트 시스템
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
CN115705263A (zh) 存储器内日志

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100917

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101213

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110915

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120427

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120521

R150 Certificate of patent or registration of utility model

Ref document number: 5002586

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150525

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees