JP2014534503A - 不揮発性記憶のための自己ジャーナリングおよび階層的整合性 - Google Patents

不揮発性記憶のための自己ジャーナリングおよび階層的整合性 Download PDF

Info

Publication number
JP2014534503A
JP2014534503A JP2014534661A JP2014534661A JP2014534503A JP 2014534503 A JP2014534503 A JP 2014534503A JP 2014534661 A JP2014534661 A JP 2014534661A JP 2014534661 A JP2014534661 A JP 2014534661A JP 2014534503 A JP2014534503 A JP 2014534503A
Authority
JP
Japan
Prior art keywords
data
map
units
unit
time
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
JP2014534661A
Other languages
English (en)
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.)
LSI Corp
Original Assignee
LSI Logic 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 LSI Logic Corp filed Critical LSI Logic Corp
Publication of JP2014534503A publication Critical patent/JP2014534503A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • 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/7207Details relating to flash memory management management of metadata or control data

Landscapes

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

Abstract

【課題】 不揮発性メモリ(NVM)を有する不揮発性記憶システムが、自己ジャーナリングおよび階層的整合性を提供し、低待ち時間回復および強制ユニット・アクセス・ハンドシェークを可能にする。【解決手段】 ホストアドレスとNVM内のアドレスとの間のマッピングが、1若しくはそれ以上のマップエントリによって維持され、NVMに書き込まれたホストデータの位置特定を可能にする。NVMに記憶されたオブジェクトは、もっぱらオブジェクト自体の内部にオブジェクトを回復するのに十分な情報を含む。NVMは、1若しくはそれ以上のデータストリーム、マップストリーム、およびチェックポイントストリームとして管理される。ホストデータがデータストリームに書き込まれ、マップエントリがマップストリームに書き込まれ、マップエントリおよび他のデータ構造のチェックポイントがチェックポイントストリームに書き込まれる。ストリームに組み込まれたタイムマーカが、回復時に、ストリームの選択された部分が相互と整合性を有さず、廃棄されるべきであるという決定を可能にする。【選択図】 図9

Description

関連出願の相互参照
本出願の優先権利益の主張を、(それがある場合には、適宜)添付の出願データシート、請求、または送達状において行う。本出願の種類によって許容される範囲内で、本出願はこの参照によりあらゆる目的で以下の出願を組み込むものであり、以下の出願はすべて、発明がなされた時点において本出願と所有者を同じくするものである。
2011年10月5日付で出願された、Earl T.COHENを筆頭発明者とする、「SELF−JOURNALING AND HIERARCHICAL CONSISTENCY FOR NON−VOLATILE STORAGE」という名称の、米国仮出願(整理番号第SF−10−06号および出願番号第61/543707号)。
分野:不揮発性記憶の技術および製造における前進が、使用のコスト、収益性、性能、効率、および有用性の改善を提供するために必要とされている。
関連技術:公知である、または周知であるものとして明記されない限り、コンテキスト、定義、または比較を目的とするものを含む本明細書における技法および概念の言及は、そのような技法または概念が以前から公知であり、あるいは先行技術の一部であることの容認と解釈すべきではない。特許、特許出願、および出版物を含む、本明細書で引用されるあらゆる参照文献は(それがある場合には)、具体的に組み込まれているか否かを問わず、あらゆる目的で、この参照によりその全体が本明細書に組み込まれるものである。
本発明は多くの方法で実施されてよく、例えば、プロセス、製造品、装置、システム、組成物、ならびに、コンピュータ可読記憶媒体(ディスクといった光学的大容量記憶装置および/または磁気的大容量記憶装置、フラッシュストレージといった不揮発性記憶を有する集積回路など)や、プログラム命令が光通信リンクまたは電子通信リンク上で送られるコンピュータネットワークといったコンピュータ可読媒体として実施されてよい。詳細な説明では、上記の分野における使用のコスト、収益性、性能、効率、および有用性の改善を可能にする本発明の1若しくはそれ以上の実施形態の説明を行う。詳細な説明は、詳細な説明の残りの部分の理解を容易にするための概説を含む。概説は、本明細書で説明する概念に従うシステム、方法、製造品、およびコンピュータ可読媒体の1若しくはそれ以上の例示的実施形態を含む。結論の項でより詳細に論じるように、本発明は、発行される特許請求の範囲内のあらゆる可能な改変形態および変形形態を包含するものである。
図1Aは、フラッシュメモリといった、不揮発性記憶を管理するための自己ジャーナリングおよび階層的整合性を使用するSSDコントローラを含むソリッドステートディスク(Solid−State Disk:SSD)の実施形態の選択された詳細を示す図である。 図1Bは、図1AのSSDの1若しくはそれ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を示す図である。 図2は、論理ブロックアドレス(Logical Block Address:LBA)の論理ページ番号(Logical Page Number:LPN)部分のマッピングの実施形態の選択された詳細を示す図である。 図3は、読み出し単位の量として測った長さを総体として有する、様々な読み出し単位数として編成された読み出しデータを生成するための読み出し単位アドレスのところの不揮発性メモリ(Non−Volatile Memory:NVM)へのアクセスの実施形態の選択された詳細を示す図である。 図4Aは、読み出し単位の実施形態の選択された詳細を示す図である。 図4Bは、読み出し単位の別の実施形態の選択された詳細を示す図である。 図5は、いくつかのフィールドを有するヘッダの実施形態の選択された詳細を示す図である。 図6は、複数のNVMデバイスのブロック、ページ、および読み出し単位の実施形態の選択された詳細を示す図である。 図7は、R−ブロックの実施形態の選択された詳細を示す図である。 図8は、第1レベルマップ(First−Level Map:FLM)および1若しくはそれ以上の第2レベルマップ(Second−Level Map:SLM)ページを有する2レベルマップによるLBAのNVMに記憶された論理ブロック(Logical Blocks:LBs)へのマッピングの実施形態の選択された詳細を示す図である。 図9は、SLMおよびFLM情報の書き込み、ならびに様々な形の自己ジャーナリングおよびタイムスタンプ記録を含む、ホストからNVMへデータの受け取りおよび書き込みの様々な実施形態の選択された詳細を示す図である。 図10は、ホストおよび/または再利用データ、マップ情報、ならびにチェックポイント先入れ先出し(First−In First−Out:FIFO)部分のNVMへのストリーミングの様々な実施形態の選択された詳細を示す図である。 図11は、例えば誤動作の後の、FLMおよびSLM情報ならびに他のNVM管理データ構造の復元および/または再構築の選択された詳細を示す図である。
図面中の参照番号の一覧
Figure 2014534503
Figure 2014534503
Figure 2014534503
Figure 2014534503
Figure 2014534503
Figure 2014534503
本発明の1若しくはそれ以上の実施形態の詳細な説明を、以下で、本発明の選択された詳細を図示する添付の図を併用して行う。本発明を実施形態との関連で説明する。実施形態は、本明細書では、単なる例示であると理解されるものであり、本発明は、明確に、本明細書中の実施形態のいずれか若しくは全部に、またはいずれか若しくは全部によって限定されるものではなく、本発明は、多数の代替形態、改変形態、および均等物を包含するものである。説明が単調にならないように、様々な言葉によるラベル(最初の、最後の、ある一定の、様々な、別の、他の、特定の、選択の、いくつかの、目立ったなど)が実施形態のセットを区別するために適用される場合がある。本明細書で使用する場合、そのようなラベルは、明確に、質を伝えるためのものでも、いかなる形の好みや先入観を伝えるためのものでもなく、単に、別々のセットを都合よく区別するためのものにすぎない。開示するプロセスのいくつかの動作の順序は本発明の範囲内で変更可能である。多様な実施形態がプロセス、方法、および/またはプログラム命令の各特徴の差異を説明するのに使用される場合は常に、所定の、または動的に決定される基準に従って、複数の多様な実施形態にそれぞれ対応する複数の動作モードの1つの静的選択および/または動的選択を行う他の実施形態が企図されている。以下の説明では、本発明の十分な理解を提供するために、多数の具体的詳細を示す。それらの詳細は例として示すものであり、本発明は、それらの詳細の一部または全部がなくても、特許請求の範囲に従って実施されうる。わかりやすくするために、本発明に関連した技術分野で公知の技術資料は、本発明が不必要に曖昧になることのないように詳細に説明していない。
概説
この概説は、詳細な説明のより迅速な理解を助けるために含まれるにすぎず、本発明は、(それがある場合には、明示的な例を含む)この概説で提示される概念だけに限定されるものではなく、どんな概説の段落も、必然的に、主題全体の縮約された見方であり、網羅的な、または限定的な記述であることを意味するものではない。例えば、以下の概説は、スペースおよび編成によりある一定の実施形態だけに限定される概要情報を提供するものである。特許請求の範囲が究極的にそこに導かれることになる実施形態を含む多くの他の実施形態があり、それらを本明細書の残りの部分にわたって論じる。
頭字語
以下で定義する様々な省略形(頭字語など)の少なくともいくつかは、本明細書で使用するある一定の要素を指す。
Figure 2014534503
Figure 2014534503
Figure 2014534503
NVMとしてフラッシュメモリを使用して実施されるあるSSDといったある不揮発性記憶システムにおける第1の課題は、不揮発性記憶システムのNVMに記憶されたデータについてのデータ完全性をどのようにして効率よく確実に提供すべきかである。第1の課題の一例は、書き込みがホスト(コンピューティングホストやインターフェースホストなど)からSSDに送られたときと、書き込みに関連したすべての影響が不揮発性記憶システムのNVM(フラッシュメモリなど)に保存されたときとの間で、(例えばSSDのコントローラに含まれる)不揮発性記憶システムの制御に関連したデータ構造を整合的に維持することである。例えば、書き込みと保存との合間に発生する誤動作(SSDまたはSSD内の回路のクラッシュ、電源障害、または様々な種類の障害など)が、不揮発性記憶システムがデータ完全性を保証するように(例えば1若しくはそれ以上の回復法によって)処理することを可能とされるイベントを表す。
第1の課題の別の例は、高可用性アプリケーション(FUAビットセットを用いたSATA書き込みなど)のための書き込みの効率的な処理であり、高可用性書き込み(本明細書の別の箇所では「FUA」書き込みともいう)は、ホストによって、誤りなしでの完了後に初めて記憶システムによって完了したと確認されるよう要求される。高可用性書き込みの待ち時間が最小化されれば、より高い性能が得られることになる。FUA以外のすべての書き込み(本明細書の別の箇所では「非FUA」書き込みともいう)は、たとえ非FUA書き込みのあるデータが誤動作発生の際にNVMに保存されることが保証されていない場合でさえも、ある実施形態および/または使用シナリオでは、あたかも完了したかのように確認されることに留意されたい。SAS、SATA、ファイバチャネル、PCIe、ホストと記憶システムとの間の記憶通信を可能にする任意のプロトコルといった様々なプロトコルにおいて高可用性書き込みおよび他の種ルの書き込みをサポートする実施形態が企図されている。
あるNVM技術(例えばある種のNANDフラッシュメモリ)における第2の課題は、フラッシュメモリにおけるデータの位置の確実な動的マッピングにより、ある不揮発性記憶システム(あるSSD実施態様など)に十分な性能をどのようにして確実に得るべきかである。フラッシュメモリは消去後に初めて書き込み可能になるため、動的マッピングが行われる。例えば、SSDがホストから特定のLBAの書き込みを受け取るときに、新しいページ(または、ある実施形態では、1若しくはそれ以上の読み出し単位といった1若しくはそれ以上のページの1若しくはそれ以上の部分)が書き込みの書き込みデータを記憶するために割り振られる。読み出し単位の一例は、独立の低レベルECC処理と適合するフラッシュメモリの最小部分である(例えば、単一の読み出し単位は、低レベルECCを使用して単一の読み出し単位内の誤りを訂正するのに十分な大きさである)。特定のLBAを新しいページ(または1若しくはそれ以上の読み出し単位といった1若しくはそれ以上のページの部分)と関連付けるマップが、ホストから特定のLBAへのその後の読み出し動作がその書き込みデータを返すように更新される。
ある実施形態では、動的マッピングは1レベルマップによるものである。例えば、動的マッピングは、LBAを単一の表に適用し、LBAに対応するデータが記憶されているNVM内の位置を獲得することを含む。ある実施形態では、マッピングは2レベルマップによるものである。例えば、動的マッピングは、概念的には、LBAを第1の表(FLMなど)に適用し、第2の表の一部分(SLMの一部分など)を指し示すポインタを獲得し、次いで、LBAをその部分に適用し、LBAに対応するデータが記憶されているNVM内の位置を獲得することを含む。
第2の課題の一例は、例えば書き込みのためのデータの書き込みとマップの更新との間に発生する誤動作の瞬間においてさえも、マップを維持し、管理することである。例えば、書き込みデータはフラッシュメモリに保存されるが、マップ(保存された書き込みデータに対応するマップへの1若しくはそれ以上の更新など)は誤動作の前にフラッシュメモリに保存されない場合には、少なくともいくつかの状況において、フラッシュメモリから保存された書き込みデータの少なくとも一部分を回復することを可能にする技法が(例えばリセットおよび/または電源の再印加の後に)行われる。ある実施形態および/または使用シナリオでは、FUA書き込みが、書き込みデータが不揮発的に保存され次第、対応するマップ更新も不揮発的に保存されるかどうかに関わらず確認され、ある状況では性能の改善を可能にする。別の例では、マップ(またはマップへの1若しくはそれ以上の更新)がフラッシュメモリへ保存されるが、対応する書き込みデータの少なくとも一部分が(誤動作などが原因で)フラッシュメモリに保存されない場合には、マップ(またはマップの1若しくはそれ以上の更新)が、フラッシュメモリに保存されているデータと整合しないことを認識する技法が(例えばリセットおよび/または電源の再印加の後に)行われる。例えば、マップの一部分が、消去以来書き込まれていない、または対応する書き込みデータで書き込まれていないフラッシュメモリの一部分を指し示しているという決定が行われる。さらに別の例では、FUA書き込みが、関連付けられた書き込みデータおよび対応するマップ情報(またはマップ情報への任意の更新)がフラッシュメモリに保存された後で確認される場合には、ある実施形態および/または使用シナリオでは、相対的に大きい性能ペナルティが生じる。相対的に大きい性能ペナルティは、いくつかのプロトコル(SATAなど)の待ち行列の制限、書き込みデータおよびマップ情報をフラッシュメモリに書き込むためのプログラミング時間、ならびに書き込み増幅を低減させるためにマップ書き込みを集約することができる能力の低下のうち1若しくはそれ以上が原因で生じる。
ある実施形態および/または使用シナリオでは、前述の課題のうち1若しくはそれ以上が、不揮発性記憶に適用される、例えばSSDで使用される、すなわち、SSDコントローラまたはNVM(フラッシュメモリなど)コントローラによって管理される自己ジャーナリングおよび/または階層的整合性によって対処される。例えば、自己ジャーナリングと階層的整合性の組み合わせは、誤動作が生じたときにマップ情報の全部または一部を再構築することを可能にする。ある状況では、自己ジャーナリングおよび階層的整合性の技法を使用したマップ情報の再構築は、これらの技法を用いない再構築よりも効率がよい。別の例では、自己ジャーナリングと階層的整合性との組み合わせは、相対的に低待ち時間のFUAハンドシェークを可能にする。
ある実施形態および/または使用シナリオでは、自己ジャーナリングおよび/または階層的整合性は、概念的には、NVMが管理される単位(本明細書の別の箇所で説明されるR−ブロックなど)、NVM管理単位がどのようにして書き込まれるか(バンドなど)、および管理単位の書き込みがどのようにして管理されるか(ストリームとしてなど)に関連したものである。R−ブロックの一例は、NVMブロックの集合体である(例えば、SSD内の各NVMダイからの1ブロックであり、各ブロック内のNVM位置がストライピング方式で書き込まれる)。バンドの一例は、情報が(特定の時間順などで)逐次的に書き込まれ、任意選択で、類似の属性および/または特性を有する情報が読み込まれるR−ブロックの集合体である。ストリームの一例は、バンド内で、情報がNVMに書き込むために提示されるのと同じ順序でその情報がNVMに書き込まれるように管理されるバンドである(例えば、より早くに提示される情報がより遅くに提示される情報よりも前に書き込まれる)。概念的には、ストリームとして管理されるバンドに書き込まれる情報は、FIFO様の方式でNVMにストリームされ、時間順に編成される。特定のNVMダイへの書き込みが成功するかどうかは、電源障害といったある特定のイベントが発生した場合には予測できないため、ストリームの終わりに書き込まれるデータには、ある状況では、「穴」がある。例えば、(電源障害より前の)ストリームで最後に書き込まれたダイは書き込みに成功するが、そのストリームのデータのより早い部分を有する前のダイは書き込みに成功せず、前のダイの部分に穴(無効な、訂正不能な、かつ/または欠落したデータなど)を生じる。
ある実施形態は複数のストリームを用いて動作する。例えば、各ストリームは、ホストデータ(ホストからの書き込みコマンドと関連付けられた書き込みデータなど)および再利用データ(NVMのより大きい連続した部分を利用できるようにするためにNVMのある部分から別の部分へ移動されるデータなど)のための1若しくはそれ以上のデータストリームを含む。例えば、各ストリームは、(例えば、NVMのどこに特定のホスト書き込みデータが記憶されているか決定するのに使用される)マッピング情報のための1若しくはそれ以上のマップストリームを含む。例えば、各ストリームは、(マッピング情報や使用統計といった)NVMデータ記憶を管理するのに使用されるデータ構造の全部または一部のイメージを記憶するための1若しくはそれ以上のチェックポイントストリームを含む。
自己ジャーナリングは、特定のオブジェクト内で利用可能な情報だけを使用した、特定のオブジェクトと整合性を有する情報の回復を可能にする。例えば、ホストデータは、ホストデータがどのLBAに対応するか特定する情報と一緒にNVMに記憶される。別の例では、再利用データが、再利用データがどのLBAに対応するか特定する情報と一緒にNVMに記憶される。ある実施形態および/または使用シナリオでは、自己ジャーナリングは、すべてのデータが書き込まれた順序を知っていることと組み合わされて、マップ情報および他のデータ構造の遅いながらも完全な回復を可能にする。例えば、SSDのすべての(自己ジャーナルされた)データを読み出すことにより、LBAをNVM内の物理的位置と関連付けるマップの再構築が可能になる。
階層的整合性は、データ構造のどのバージョンが別のデータ構造のどのバージョンによって決定されるか判定することを可能にし、各バージョンは、例えば、別々に書き込まれ、かつ/またはチェックポイント設定された情報に起因するものである。例えば、データストリームはマップストリームよりも優先され、さらにマップストリームはチェックポイントストリームよりも優先される。誤動作は、ストリームからの情報が相互に対して順不同でNVMに記憶される結果を生じる。情報と共にストリームに記憶されたタイムマーカ(エポックヘッダおよび/またはタイムスタンプなど)が、NVMに記憶されているストリーム情報の相対順序付けを決定することを可能にする。ある実施形態および/または使用シナリオでは、階層的整合性と組み合わされた自己ジャーナリングが、マップ情報および他のデータ構造の完全で迅速な回復を可能にする。例えば、LBAをNVM内の物理的位置と関連付けるマップの回復は、マップストリームからマップのバージョンを読み出し、マップのバージョンよりも優先されるデータストリームの部分からもっぱら獲得された更新でマップを更新することによって迅速化される。
ある実施形態では、階層的整合性は、ローリングチェックポイントの使用を可能にする。マップといったデータ構造のローリングチェックポイントは、別々のそれぞれの時点でのデータ構造の各部分の状態を保存し、それによって、データ構造の1より大きい数のローリングチェックポイントが保存された後で、全データ構造が保存される。動作は各ローリングチェックポイントの保存の間に続行するため、ローリングチェックポイントの各々は、データ構造のそれぞれの部分がローリングチェックポイントによって保存されたそれぞれの時点におけるデータ構造のそれぞれの部分のスナップショットである。しかし、必ずしも、全データ構造の単一の時間的整合性を有するコピーが保存されているとは限らない。ある実施形態および/または使用シナリオでは、タイムスタンプと組み合わされた階層的整合性が、ローリングチェックポイントと、データ構造を含むストリームよりも階層的に優先される他のストリーム内の情報とから、全データ構造の単一の時間的整合性を有するコピーの回復を可能にする。別の実施形態および/または使用シナリオでは、ローリングチェックポイントの使用が、例えば、待ち時間に影響を及ぼすこと、割り込みの期間および/またはチェックポイント設定に起因する通常処理の遅延を最小限に抑えることなどにより、チェックポイント設定がシステム挙動をあまり分断させないようにすることができる。
自己ジャーナリングおよび階層的整合性を含むコンテキストにおける回復技法は、チェックポイントをNVMに記憶する(ロールする)こと、および、誤動作に応答して、記憶された(ローリング)チェックポイントを、LBAとNVM位置との対応を追跡するマッピング情報を再構築するように処理することを含む。
様々な実施形態では、(例えば、ホスト書き込みデータおよび再利用データを有する)データストリームのデータページ、(例えば、SLMエントリまたはSLMエントリへの更新を有する)マップストリームのマップページ、ならびにNVMに記憶された(例えば、FLMエントリまたはFLMエントリへの更新を有する)チェックポイントストリームのチェックポイントページのうち1若しくはそれ以上が自己ジャーナリングを行う。例えば、各ページは、それらが存在する場合には、個々のデータ構造のコヒーレンシを保証するのに必要な情報を含む。しかしこれはデータ構造間の整合性を示唆するものではなく、データ構造間の整合性は、タイムマーカによって供給されるような、時間の観念を必要とする。データバンド(データページなどを含む)およびマップバンド(例えば、マップエントリおよび/または更新を含む)は、ストリームとして管理され、時間順に(少なくともストリーム内では)編成される。
ある実施形態および/または使用シナリオでは、NVMに記憶される(LBといった)各ホストページが、ホストページの(LBAといった)ホスト・ページ・アドレスを含むヘッダと関連付けられる。よって、ホストページがNVMに書き込まれている場合、(対応するヘッダからの)関連付けられたホスト・ページ・アドレスは、書き込まれたホストページがどのホストページであるか指示する。ホストページの書き込みに対応するSLMエントリが(例えば、誤動作より前に)NVMに記録されなかった場合には、ホストページ自体がSLMエントリを再構築するのに十分な情報(ホスト・ページ・アドレス)を含む。あるコンテキストでは、データのコンテナからデータを再構築することができることを参照整合性という。
ある実施形態では、階層的整合性が、別々に書き込まれ、かつ/またはチェックポイント設定された複数のデータ構造の間で、データ構造のうち最高優先度のデータ構造(またはその部分)が識別可能であるようにデータ構造の順序付けを定義する。例えば、データバンド、マップバンド、およびチェックポイントFIFOすべての整合性がとれている(例えばすべて時間順である)ときに、データバンドはマップバンドよりも優先され、マップバンドは、チェックポイントFIFOよりも優先される。
様々な実施形態によれば、マップは、1レベルマップ、2レベルマップ、マルチレベルマップ、直接マップ、連想マップ、およびホストプロトコルのLBAをNVM内の物理的記憶アドレスと関連付ける他の手段のうち1若しくはそれ以上である。例えば、ある実施形態では、2レベルマップは、LBAの第1の関数を、複数の第2レベル・マップ・ページのうち1つのNVM内のそれぞれのアドレスと関連付ける第1レベルマップを有し、第2レベル・マップ・ページの各々は、LBAの第2の関数をLBAに対応するデータのNVM内のそれぞれのアドレスと関連付ける。別の実施形態では、LBAの第1の関数およびLBAの第2の関数の例は、第2レベル・マップ・ページの各々に含まれる固定数のエントリによって除算されるときに得られる商および余りである。複数の第2レベル・マップ・ページをまとめて第2レベルマップと呼ぶ。本明細書では、マップの1若しくはそれ以上のエントリという場合、それは、1レベルマップ、2レベルマップの第1レベル、2レベルマップの第2レベル、マルチレベルマップの任意のレベル、またはエントリを有する任意の他の種類のマップを含む、任意の種類のマップの1若しくはそれ以上のエントリをいう。
様々な実施形態によれば、第2レベルマップ(またはマルチレベルマップの低レベル)のマップページの各々は、マップページの他のものと同数のエントリを含む、マップページの少なくとも他のいくつかと異なる数のエントリを含む、マップページの他のものと同じ粒度のエントリを含む、マップページの他のものと異なる粒度のエントリを含む、すべて同じ粒度ものであるエントリを含む、複数の粒度のものであるエントリを含む、マップページの内容の書式および/またはレイアウトを指定するそれぞれのヘッダを含む、ならびにマップページのエントリを表す任意の他の書式、レイアウト、または編成を有する、のうち1若しくはそれ以上である。例えば、第1の第2レベル・マップ・ページは、1エントリ当たり4KBの粒度の仕様を有し、第2の第2レベル・マップ・ページは、1エントリ当たり8KBの粒度、および第1の第2レベル・マップ・ページの半数だけのエントリの仕様を有する。
別の実施形態では、高レベルマップのエントリは、対応する低レベル・マップページの書式および/またはレイアウト情報を含む。例えば、第1レベルマップ内のエントリの各々は、関連付けられた第2レベル・マップ・ページ内のエントリについての粒度仕様を含む。
ある実施形態では、マップは複数のエントリを有し、エントリの各々は、1若しくはそれ以上のLBAを、LBAのデータが記憶されているNVM内のそれぞれの位置を選択的に含む情報と関連付ける。例えば、LBAは512Bのセクタを指定し、マップ内の各エントリは、LBAの並んだ8セクタ(4KB)領域と関連付けられている。
様々な実施形態によれば、マップのエントリの情報は、NVM内の位置、NVM内の読み出し単位のアドレス、NVMに記憶された関連付けられたLBAのデータを獲得するために読み出すべき読み出し単位の数、NVMに記憶された関連付けられたLBAのデータのサイズであって、任意選択で、かつ/または選択的に1バイトより大きい粒度を有するサイズ、関連付けられたLBAのデータが切り捨てられているといった理由で、関連付けられたLBAのデータがNVMに存在しないという表示、関連付けられたLBAのデータに適用された任意の非標準変更子を含む、関連付けられたLBAのデータの属性、および関連付けられたLBAのデータの任意の他のメタデータ、属性、または性質のうち1若しくはそれ以上を含む。
ある実施形態では、NVM内のアドレスは、アドレスのうち1つを表すのに必要とされるビット数を低減させるために領域へグループ化される。例えば、入出力装置のLBAが64領域に分割され、NVMが、LBA領域の各々に1つずつ、64領域に分割される場合には、特定のLBAと関連付けられたマップエントリは、必要とするアドレスビット数が6少なくて済む。というのは、NVM内の領域のうち1つが特定のLBAの領域によって決定されうるからである。様々な実施形態によれば、LBAの領域とNVMの領域との間の関連付けは、同等性、1対1数値関数といった直接的関連付け、表ルックアップ、動的マッピング、および2セットの数を関連付ける任意の他の方法のうち1若しくはそれ以上によるものである。
様々な実施形態では、NVM内の位置は、複数の読み出し単位のうち1つのアドレス、ならびに読み出し単位での長さおよび/または範囲を含む。長さは、NVMに記憶された複数のデータ項目のうち特定の1つのサイズであり、マップのエントリと関連付けられた特定のデータ項目は長さを含む。様々な実施形態によれば、長さは、1バイト、1より大きいバイト、1読み出し単位、読み出し単位の指定された小部分、データ項目のうち1つの最大許容圧縮率に従った粒度、および記憶使用量を追跡するのに使用される任意の他の粒度のうち1若しくはそれ以上の粒度を有する。範囲は、特定のデータ項目のそれぞれの部分を記憶する、整数の読み出し単位といった読み出し単位の数である。別の実施形態および/または使用シナリオでは、読み出し単位の範囲内の最初の読み出し単位および/または読み出し単位の範囲内の最後の読み出し単位は、任意選択で、かつ/または選択的に、データ項目のうち複数のデータ項目の一部または全部を記憶する。ある実施形態および/または使用シナリオでは、長さおよび/または範囲は、例えば、長さ(長さおよび/または範囲が符号化されるコンテキストではサイズともいう)を範囲からのオフセットとして記憶することによって、符号化されて記憶される。ある実施形態および/または使用シナリオでは、長さおよび/または範囲の未使用の符号化が、非標準変更子の指示や、関連付けられたデータ項目がNVMに存在するかどうかについての指示といった追加情報を符号化する。
NVM内の位置をアドレスおよび長さとして符号化することにより、NVMに記憶されたデータをサイズ変更することが可能になる。例えば、第1の4KB領域は400Bのサイズに圧縮され、全体が単一の読み出し単位に記憶され、1読み出し単位の長さを有し、他方第2の4KB領域は圧縮不能であり、1より大の読み出し単位にまたがり、1より大の読み出し単位の長さを有する。別の実施形態では、LBAの領域と関連付けられた記憶の読み出し単位での長さおよび/または範囲を有することにより、NVMの必要な部分だけを読み出すことでLBAの領域のデータを検索することを可能にする。
ある実施形態では、マップのエントリの各々は、エントリと関連付けられたLBAの領域の属性を指定する、メタデータともいう情報を含む。別の実施形態では、メタデータの少なくとも一部は、例えば、領域の複数のLBAの各々について別々のメタデータ仕様を有することによって、領域の粒度より細かい粒度ものである。様々な実施形態によれば、メタデータは、領域と関連付けられたNVM内のデータに適用可能な、かつ/または領域と関連付けられたNVM内のデータの書き込み、データへのアクセス、データの読み出し、および/若しくはデータの再利用を変更し、かつ/または制御するのに使用されるべき1若しくはそれ以上の非標準変更子を含む。
例示的実施形態
詳細な説明の概説を終えるにあたり、以下に、例示的実施形態をまとめて示す。これらの例示的実施形態は、少なくとも一部は「EC」(Example Combinations:ECs)として明示的に列挙されたものを有し、本明細書で説明する概念に従った様々な種類の実施形態の詳細な説明を提供するものである。これらの例は、相互排他的であることも、網羅的であることも、限定的であることも意図されておらず、本発明は、これらの例示的実施形態だけに限定されるものではなく、発行される特許請求の範囲およびその均等物の範囲内のすべての可能な改変形態および変形形態を包含するものである。
EC1)方法であって、
不揮発性メモリ(NVM)に一連のデータ単位を第1の順序で配列する工程であって、前記データ単位の各々は複数のタイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記データ単位を第1の順序で配列する工程と、
前記不揮発性メモリに一連のデータマップ単位を第2の順序で配列する工程であって、前記データマップ単位の各々は複数のタイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記データマップ単位を第2の順序で配列する工程と
を有し、
前記データマップ単位の各々は、前記不揮発性メモリ内に前記データ単位のうちの1つに対応する位置を有し、
前記データ単位の各々と関連付けられた前記各タイムスタンプの時点は、前記対応するデータマップ単位と関連付けられたタイムスタンプの時点と同一であるか、またはそれより前である
方法。
EC2)EC1記載の方法において、
前記データ単位の各々は、ホストから各論理ブロックアドレス(LBA)への各データ書き込みに対応し、
前記データ単位のうち先行するデータ単位および後続のデータ単位は、前記各論理ブロックアドレスのうち同一の論理ブロックアドレスへの先行するデータ書き込みおよび後続のデータ書き込みに対応するものであり、
前記先行するデータ単位は前記データマップ単位のうち関連付けられたデータマップ単位を有しない方法。
EC3)EC1記載の方法において、さらに、電源障害の後に、
前記データ単位のうち最後に有効となり且つ連続したデータ単位を決定する工程と、
前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位を決定する工程であって、当該最後に有効となり且つ連続したデータマップ単位と関連付けられたタイムスタンプの時点は、前記データ単位のうち前記最後に有効となり且つ連続したデータ単位と関連付けられたタイムスタンプの時点と同一であるか、またはそれより前である、前記データマップ単位を決定する工程と、
データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位のみを回復する工程と
を有し、
これにより、前記データ単位のうち前記最後に有効となり且つ連続したデータ単位と関連付けられた前記タイムスタンプより後のタイムスタンプと関連付けられたデータマップ単位は全て回復時に無視されるものである
方法。
EC4)EC1記載の方法において、データ単位はデータ記憶単位である方法。
EC5)方法であって、
不揮発性メモリ(NVM)に一連のデータ記憶単位を書き込む工程であって、前記データ記憶単位の各々は複数のタイムスタンプのうちの1つとそれぞれと関連付けられているものである、前記データ記憶単位を書き込む工程と、
前記不揮発性メモリに一連のデータマップ単位を書き込む工程であって、前記データマップ単位の各々は前記タイムスタンプのうちの1つとそれぞれと関連付けられているものである、前記データマップ単位を書き込む工程と
を有し、
前記データマップ単位の各々は、前記不揮発性メモリ内に前記データ記憶単位のうちの1つに対応する位置を有し、
前記データ記憶単位の各々と関連付けられた前記各タイムスタンプは、前記対応するデータマップ単位と関連付けられた前記タイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである、
方法。
EC6)EC5記載の方法において、前記データ記憶単位を書き込む工程は第1の順序に従うものであり、前記データマップ単位を書き込む工程は第2の順序に従うものである方法。
EC7)EC5記載の方法において、前記データ記憶単位は不揮発性メモリ内で第1の順序に従って配列され、前記データマップ単位は不揮発性メモリ内で第2の順序に従って配置されるものである方法。
EC8)EC1、EC6、またはEC7記載の方法において、第1の順序は第2の順序と異なる方法。
EC9)EC5記載の方法において、
前記データ記憶単位のうち第1のデータ記憶単位は、ホストから特定の論理ブロックアドレスへの第1のデータ書き込みに対応し、
前記データ記憶単位のうち第2のデータ記憶単位は、ホストから特定の論理ブロックアドレスへの第2のデータ書き込みに対応し、
前記第1のデータ書き込みは、時間的順序において前記第2のデータ書き込みに先行し、
前記データマップ単位はいずれも前記第1のデータ記憶単位に対応しないものである方法。
EC10)EC6記載の方法において、さらに、所定のイベントの後に、
前記データ記憶単位のうち最後に有効となり且つ連続したデータ記憶単位を前記第1の順序に従って決定する工程と、
前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位であって、前記タイムスタンプのうちの1つと関連付けられたデータマップ単位を前記第2の順序に従って決定する工程であって、当該タイムスタンプのうちの1つは、前記データ記憶単位のうち前記最後に有効となり且つ連続したデータ記憶単位と関連付けられたタイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである、前記第2の順序に従って決定する工程と、
前記第1の順序および前記第2の順序に従って、前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位のみを回復する工程と
を有するものである方法。
EC11)EC6記載の方法において、さらに、
前記データ記憶単位のうち最後に有効となり且つ連続したデータ記憶単位である第1のデータ記憶単位を第1の順序に従って決定する工程と、
前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位であって、前記タイムスタンプのうちの1つと関連付けられたデータマップ単位を前記第2の順序に従って決定する工程であって、当該タイムスタンプのうちの1つは、前記データ記憶単位のうち前記最後に有効となり且つ連続したデータ記憶単位と関連付けられたタイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである、前記データマップ単位を第2の順序に従って決定する工程と、
前記データ記憶単位のうち最新であって、前記タイムスタンプのうちの1つと関連付けられたデータ記憶単位である第2のデータ記憶単位を前記第1の順序に従って決定する工程であって、当該タイムスタンプのうちの1つは、前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位と関連付けられた前記タイムスタンプによって示される前記相対的経過時間に先行する所定の決定された量と同一、またはそれよりも先行する相対的経過時間を示すものである、前記第2のデータ記憶単位を前記第1の順序に従って決定する工程と、
前記データ記憶単位のうち前記第2のデータ記憶単位から前記第1のデータ記憶単位までのデータ単位のみを使用して、前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位を前記第1の順序および前記第2の順序に従って回復する工程と
を有するものである方法。
EC12)EC11記載の方法において、さらに、
前記データマップ単位のうち変更され且つ以前に前記不揮発性メモリに書き込まれていなかったデータマップ単位ごとに、前記データ記憶単位のうち特定のデータ記憶単位と関連付けられたタイムスタンプと等しい最も古い更新と関連付けられたタイムスタンプを特定する工程であって、前記変更されたデータマップ単位は、前記不揮発性メモリ内に前記特定のデータ記憶単位に対応する位置を有するものである、前記特定する工程と、
以前に前記不揮発性メモリに書き込まれていなかった前記変更されたデータマップ単位の各々を、前記変更されたデータマップ単位の最も古い更新と関連付けられたタイムスタンプに続く前記決定された量よりも大きいタイムスタンプのうちの1つと関連付けられた前記データ記憶単位のうちの1つを書き込む時点で、またはそれより前に、前記不揮発性メモリに書き込む工程と
を有するものである方法。
EC13)EC10記載の方法において、さらに、
回復する工程において、前記データ記憶単位のうち前記最後に有効となり且つ連続したデータ記憶単位のタイムスタンプによって示される相対的経過時間よりも若い相対的経過時間を示するタイムスタンプを有するデータマップ単位を全て無視する工程を
有するものである方法。
EC14)EC10記載の方法において、イベントは誤動作を含むものである方法。
EC15)EC14記載の方法において、誤動作は、
電源障害、
クラッシュ、および
回路障害
のうち1若しくはそれ以上を含む方法。
EC16)EC4またはEC5記載の方法において、データマップ単位のうち少なくとも2つは同位置を有し、当該同位置は、前記データ単位のうち少なくとも2つのデータ単位の同位置と同一である方法。
EC17)EC4またはEC5記載の方法において、さらに、
前記データ記憶単位のうち少なくとも一部と共に、データ記憶単位と関連付けられたそれぞれのタイムスタンプを記憶する工程と、データマップ単位のうち少なくとも一部と共に、データマップ単位と関連付けられたそれぞれのタイムスタンプを記憶する工程とを有するものである方法。
EC18)EC4またはEC5記載の方法において、データ記憶単位の各々とそれぞれのデータ記憶単位のそれぞれのタイムスタンプとの関連付けが不揮発性メモリを読み出すことによって決定されるように、データ記憶単位のそれぞれのタイムスタンプのうち十分なタイムスタンプがデータ記憶単位と共に記憶される方法。
EC19)EC4またはEC5記載の方法において、データ記憶単位のそれぞれのタイムスタンプのうち少なくとも一部の各々は、関連付けられたデータ記憶単位と共に不揮発性メモリに記憶される方法。
EC20)EC4またはEC5記載の方法において、データマップ単位の各々とそれぞれのデータマップ単位のそれぞれのタイムスタンプとの関連付けが不揮発性メモリを読み出すことによって決定されるように、データマップ単位のそれぞれのタイムスタンプのうち十分なタイムスタンプがデータマップ単位と共に記憶される方法。
EC21)EC4またはEC5記載の方法において、データマップ単位のそれぞれのタイムスタンプのうち少なくとも一部の各々は、関連付けられたデータマップ単位と共に不揮発性メモリに記憶される方法。
EC22)EC4またはEC5記載の方法において、データ記憶単位のうち特定のデータ記憶単位は、特定のデータ記憶単位と関連付けられたそれぞれのタイムスタンプと共に不揮発性メモリに記憶され、データマップ単位のうち特定のデータマップ単位は、特定のデータマップ単位と関連付けられたそれぞれのタイムスタンプと共に不揮発性メモリに記憶される方法。
EC23)方法であって、
記憶ストリームに従って不揮発性メモリ(NVM)に複数の記憶単位を書き込む工程であって、当該記憶単位の各々はデータ部分と、当該データ部分に対応するタイムスタンプ部分とを有するものである、前記記憶単位を書き込む工程と、
マップストリームに従って前記不揮発性メモリに複数のマップ単位を書き込む工程であって、当該マップ単位の各々はエントリ部分と、当該エントリ部分に対応するタイムスタンプ部分とを有するものである、前記マップ単位を書き込む工程と
を有し、
前記エントリ部分のうち少なくとも一部は、前記データ部分のうち少なくとも1つの対応するデータ部分を特定することによって、それぞれの論理ブロック(LB)が前記不揮発性メモリに書き込まれている場所を決定することを可能にし、
時間的順序は前記タイムスタンプ部分によって示され、前記記憶単位のタイムスタンプ部分および前記マップ単位のタイムスタンプ部分は、タイムスタンプの相対的順序に従って単調に増加するものであり、
前記不揮発性メモリに書き込まれたマップ単位のうち少なくとも1つが、前記不揮発性メモリに書き込まれた前記記憶単位のタイムスタンプ部分のうち前記時間的順序において最も遅いものよりも遅いタイムスタンプ部分を有する少なくとも1つの特定の時点が存在するものである
方法。
EC24)EC23記載の方法において、前記記憶単位の書き込む工程は、前記記憶単位のタイムスタンプ部分によって示される時間的順序に対応する時間の順序で記憶単位を書き込むものであり、前記マップ単位の書き込む工程は、前記マップ単位のタイムスタンプ部分によって示される時間的順序に対応する時間の順序で前記マップ単位を書き込むものである方法。
EC25)EC23記載の方法において、さらに、
チェックポイントストリームに従って前記不揮発性メモリに1若しくはそれ以上のチェックポイント単位を書き込む工程であって、当該チェックポイント単位の各々はマップ部分と、当該マップ部分に対応するタイムスタンプ部分とを有するものである、前記チェックポイント書き込む工程
を有し、
前記チェックポイントのタイムスタンプ部分は、前記タイムスタンプの相対的順序に従って単調に増加するものである
方法。
EC26)EC25記載の方法において、前記チェックポイント単位の書き込む工程は、前記チェックポイントのタイムスタンプ部分によって示される時間的順序に対応する時間の順序でチェックポイント単位を書き込むものである方法。
EC27)EC25記載の方法において、所定数のチェックポイント単位の連続したグループは、エントリ部分が従うマップの少なくとも1つの全体のチェックポイントを有する方法。
EC28)EC27記載の方法において、さらに、
マップ部分および/またはチェックポイント単位のタイムスタンプ部分のうち1若しくはそれ以上の1若しくはそれ以上の部分に少なくとも一部は基づいてマップを復元する工程
を有するものである方法。
EC29)EC28記載の方法において、復元する工程は、さらに、エントリ部分および/またはマップ単位のタイムスタンプ部分のうち1若しくはそれ以上の1若しくはそれ以上の部分に少なくとも一部は基づくものである方法。
EC30)EC29記載の方法において、復元する工程は、さらに、データ部分および/または記憶単位のタイムスタンプ部分のうち1若しくはそれ以上の1若しくはそれ以上の部分に少なくとも一部は基づくものである方法。
EC31)EC30記載の方法において、データ部分の各々は、それぞれの1若しくはそれ以上のデータ単位と、それぞれの対応する1若しくはそれ以上のヘッダとを有し、ヘッダの各々は、データ単位のうちそれぞれの対応するデータ単位と論理ブロックのうち1つとの間のそれぞれのマッピングを特定し、マッピングは、論理ブロックのうちそれぞれの論理ブロックがデータ単位のうちそれぞれのデータ単位として不揮発性メモリのどこに書き込まれているか決定することを可能にし、復元する工程は、さらに、不揮発性メモリに書き込まれた記憶単位に含まれるそれぞれのヘッダのうち1若しくはそれ以上に少なくとも一部は基づくものである方法。
EC32)EC31に記載の方法において、エントリ部分のうち特定のエントリ部分はそれぞれの論理ブロックのそれぞれのデータ部分を決定し、それぞれのデータ単位はヘッダのうち特定のヘッダを有し、特定のヘッダは、データ単位のうち特定のデータ単位と特定のエントリ部分のそれぞれの論理ブロックとの間のそれぞれのマッピングを特定する方法。
EC33)EC27記載の方法において、マップは1レベルマップである方法。
EC34)EC33記載の方法において、さらに、
マップの少なくとも一部分をキャッシュに入れ、かつ/またはバッファに入れる工程
を有するものであり、
マップ部分の少なくとも1つの少なくとも一部は、キャッシュに入れる工程および/またはバッファに入れる工程に従ったものである方法。
EC35)EC27記載の方法において、マップは、第1レベルマップと第2レベルマップとを有する2レベルマップであり、マップ部分は第1レベルマップの部分に対応し、エントリ部分は第2レベルマップのエントリに対応する方法。
EC36)EC35記載の方法において、さらに、
第1レベルマップおよび/または第2レベルマップの少なくとも一部分をキャッシュに入れ、かつ/またはバッファに入れる工程
を有するものであり、
マップ部分およびエントリ部分の少なくとも1つの少なくとも一部は、キャッシュに入れる工程および/またはバッファに入れる工程に従ったものである方法。
EC37)EC27記載の方法において、前記マップ部分の各々は、それぞれのマップ部分の対応するタイムスタンプ部分よりも時間的順序において早い対応するタイムスタンプ部分を有するエントリ部分のすべてと一致するものである方法。
EC38)EC25記載の方法において、1つの特定の時点は第1の特定の時点であり、前記不揮発性メモリに書き込まれたチェックポイント単位のうち少なくとも1つが、第2の特定の時点で前記不揮発性メモリに書き込まれた前記マップ単位のタイムスタンプ部分のうち時間的順序において最も遅いものよりも遅いタイムスタンプ部分を有する少なくとも1つの第2の特定の時点が存在するものである方法。
EC39)EC25記載の方法において、1つの特定の時点は第1の特定の時点であり、前記不揮発性メモリに書き込まれた前記チェックポイント単位のうち少なくとも1つが、第2の特定の時点で前記不揮発性メモリに書き込まれた前記記憶単位のタイムスタンプ部分のうち前記時間的順序において最も遅いものよりも遅いタイムスタンプ部分を有する少なくとも1つの第2の特定の時点が存在するものである方法。
EC40)EC23記載の方法において、前記複数の記憶単位は第1の複数の記憶単位であり、前記記憶ストリームは第1の記憶ストリームであり、さらに、
前記第2の記憶ストリームに従って前記不揮発性メモリに第2の複数の記憶単位を書き込む工程であって、前記第2の記憶単位の各々はデータ部分と、当該データ部分に対応するタイムスタンプ部分とを有し、前記第2の記憶単位のタイムスタンプ部分は、タイムスタンプの相対的順序に従って単調に増加するものである、前記第2の記憶単位を書き込む工程
を有するものである方法。
EC41)EC40記載の方法において、前記第2の記憶単位の書き込む工程は、前記第2の記憶単位のタイムスタンプ部分によって示される時間的順序に対応する時間の順序で第2の記憶単位を書き込むものである方法。
EC42)EC40記載の方法において、前記第2の記憶単位のうち少なくとも1つは、時間的順序において2つの前記第1の記憶単位の間に書き込まれ、前記少なくとも1つの第2の記憶単位のタイムスタンプ部分は、時間的順序において2つの前記第1の記憶単位のタイムスタンプ部分の間にある方法。
EC43)EC40記載の方法において、第1の複数の記憶単位のデータ部分のうち少なくとも1つは、ホストデータ書き込みコマンドと関連付けられたホストからのホストデータを有し、第2の複数の記憶単位のデータ部分のうち少なくとも1つは、再利用動作に応答して不揮発性メモリから読み出された再利用データを有する方法。
EC44)EC23記載の方法において、タイムスタンプ部分は、比較されるタイムスタンプ部分の数値比較により時間的順序に従ってタイムスタンプ部分を比較することを可能にするように符号化されている方法。
EC45)EC44記載の方法において、数値比較は、比較されるタイムスタンプ部分の1若しくはそれ以上の連続した最上位のビットを無視する方法。
EC46)EC44記載の方法において、比較される記憶単位のタイムスタンプ部分のうち特定のタイムスタンプ部分が、比較されるマップ単位のタイムスタンプ部分のうち特定のタイムスタンプと数値的に同一である場合には、比較は、タイムスタンプ部分が同一であるときには、比較される記憶単位のタイムスタンプ部分は比較されるマップ単位のタイムスタンプ部分よりも早いという事前の決定によって判定される方法。
EC47)EC46記載の方法において、数値的に同一であることは、比較されるタイムスタンプ部分の1若しくはそれ以上の連続した最上位のビットを無視するものである方法。
EC48)EC23記載の方法において、エントリ部分の各々は、それぞれのエントリ部分の対応するタイムスタンプ部分よりも時間的順序によれば早い対応するタイムスタンプ部分を有するデータ部分のすべてと一致するものである方法。
EC49)EC23記載の方法において、記憶単位の各々は原子的に書き込まれる方法。
EC50)EC23記載の方法において、マップ単位の各々は原子的に書き込まれる方法。
EC51)EC23記載の方法において、データ部分のうち少なくとも1つは、ホストデータ書き込みコマンドと関連付けられたホストからのホストデータを有する方法。
EC52)EC23記載の方法において、データ部分のうち少なくとも1つは、再利用動作に応答して不揮発性メモリから読み出された再利用データを有する方法。
EC53)EC23記載の方法において、データ部分の各々は、それぞれの1若しくはそれ以上のデータ単位と、それぞれの対応する1若しくはそれ以上のヘッダとを有し、ヘッダの各々は、データ単位のうちそれぞれの対応するデータ単位と論理ブロックのうち1つとの間のそれぞれのマッピングを特定し、マッピングは、論理ブロックのうちそれぞれの論理ブロックがデータ単位のうちそれぞれのデータ単位として不揮発性メモリのどこに書き込まれているか決定することを可能にする方法。
EC54)EC53記載の方法において、ヘッダの各々は不揮発性メモリにおいて連続して書き込まれ、それぞれのデータ単位はそれぞれのヘッダによって特定される方法。
EC55)EC2、EC9、EC43、またはEC51記載の方法において、さらに、
データ書き込みに従ってホストとインターフェースする工程
を有するものである方法。
EC56)EC55記載の方法において、インターフェースする工程は記憶インターフェース規格と適合する方法。
EC57)EC2、EC9、EC43、またはEC51記載の方法において、ホストはコンピューティングホストであり、さらに、
データ書き込みに従ってコンピューティングホストを動作させる工程
を有するものである方法。
EC58)EC1、EC5、またはEC23記載の方法において、不揮発性メモリは1若しくはそれ以上のフラッシュメモリを有する方法。
EC59)EC58記載の方法において、さらに、
フラッシュ・メモリ・インターフェースによりフラッシュメモリとインターフェースする工程
を有するものである方法。
EC60)命令のセットを格納する有形のコンピュータ可読媒体であって、当該命令セットは処理要素によって実行されると、当該処理要素に、
不揮発性メモリ(NVM)に一連のデータ単位を第1の順序で配列する工程であって、前記データ単位の各々は複数のタイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記配列する工程と、
前記不揮発性メモリに一連のデータマップ単位を第2の順序で配列する工程であって、前記データマップ単位の各々は複数のタイムスタンプのうちの1つとそれぞれ関連付けられたものである、前記配列する工程と
を有する動作を実行させ、および/または制御させるものであり、
前記データマップ単位の各々は、前記不揮発性メモリ内に前記データ単位のうちの1つに対応する位置を有し
前記データ単位の各々と関連付けられた前記各タイムスタンプの時点は、前記対応するデータマップ単位と関連付けられた前記タイムスタンプの時点と同一であるか、または当該タイムスタンプの時点より前である
有形のコンピュータ可読媒体。
EC61)EC60記載の有形のコンピュータ可読媒体において、
前記データ単位の各々は、ホストから各論理ブロックアドレス(LBA)への各データ書き込みに対応し、
前記データ単位のうち先行するデータ単位および後続のデータ単位は、前記各論理ブロックアドレスのうち同一の論理ブロックアドレスへの先行するデータ書き込みおよび後続のデータ書き込みに対応するものであり、
前記先行するデータ単位は前記データマップ単位のうち関連付けられたデータマップ単位を有しないものである
有形のコンピュータ可読媒体。
EC62)EC60記載の有形のコンピュータ可読媒体において、前記動作は、さらに、
電源障害の後に、前記データ単位のうち最後に有効となり且つ連続したデータ単位を決定する工程と、
電源障害の後に、前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位を決定する工程であって、当該最後に有効となり且つ連続したデータマップ単位と関連付けられたタイムスタンプの時点は前記データ単位のうち前記最後に有効となり且つ連続したデータ単位と関連付けられたタイムスタンプの時点と同一であるか、またはそれより前である、、前記データマップ単位を決定する工程と、
前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位のみを回復する工程と
を有するものであり、
これにより、前記データ単位のうち前記最後に有効となり且つ連続したデータ単位と関連付けられた前記タイムスタンプより後のタイムスタンプに関連付けられた前記データマップ単位は全て回復時に無視されるものである
有形のコンピュータ可読媒体。
EC63)EC60記載の有形のコンピュータ可読媒体において、データ単位はデータ記憶単位である有形のコンピュータ可読媒体。
EC64)命令のセットを格納する有形のコンピュータ可読媒体であって、当該命令セットは処理要素によって実行されると、当該処理要素に、
不揮発性メモリ(NVM)において一連のデータ記憶単位を書き込む工程であって、前記データ記憶単位の各々は複数のタイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記データ記憶単位を書き込む工程と、
前記不揮発性メモリに一連のデータマップ単位を書き込む工程であって、前記データマップ単位の各々は前記タイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記データマップ単位を書き込む工程と
を有する動作を実行させ、および/または制御させるものであり、
前記データマップ単位の各々は、前記不揮発性メモリ内に前記データ記憶単位のうちの1つに対応する位置を有し、
前記データ記憶単位の各々と関連付けられた前記各タイムスタンプは、前記対応するデータマップ単位と関連付けられた前記タイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである
有形のコンピュータ可読媒体。
EC65)EC64記載の有形のコンピュータ可読媒体において、前記データ記憶単位の書き込む工程は第1の順序に従ったものであり、前記データマップ単位の書き込む工程は第2の順序に従ったものである有形のコンピュータ可読媒体。
EC66)EC64記載の有形のコンピュータ可読媒体において、前記データ記憶単位は不揮発性メモリ内で第1の順序に従って配列され、前記データマップ単位は不揮発性メモリ内で第2の順序に従って配置されるものである有形のコンピュータ可読媒体。
EC67)EC60、EC65、またはEC66記載の有形のコンピュータ可読媒体において、前記第1の順序は前記第2の順序と異なる有形のコンピュータ可読媒体。
EC68)EC64記載の有形のコンピュータ可読媒体において、
前記データ記憶単位のうち第1のデータ記憶単位は、ホストから特定の論理ブロックアドレスへの第1のデータ書き込みに対応し、
前記データ記憶単位のうち第2のデータ記憶単位は、ホストから特定の論理ブロックアドレスへの第2のデータ書き込みに対応し、
前記第1のデータ書き込みは、時間の順序において、前記第2のデータ書き込みに先行するものであり、
前記データマップ単位のいずれも前記第1のデータ記憶単位に対応しないものである
有形のコンピュータ可読媒体。
EC69)EC65記載の有形のコンピュータ可読媒体において、前記動作は、さらに、
イベントの後に、前記データ記憶単位のうち最後に有効となり且つ連続したデータ記憶単位を前記第1の順序に従って決定する工程と、
イベントの後に、前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位であって、前記タイムスタンプのうちの1つと関連付けられたデータマップ単位を前記第2の順序に従って決定する工程であって、当該タイムスタンプのうちの1つは、前記データ記憶単位のうち前記最後に有効となり且つ連続したデータ記憶単位と関連付けられたタイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである、前記第2の順序に従って決定する工程と、
前記第1の順序および前記第2の順序に従って、前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位のみを回復する工程と
を有するものである有形のコンピュータ可読媒体。
EC70)EC65記載の有形のコンピュータ可読媒体において、前記動作は、さらに、
前記データ記憶単位のうち最後に有効となり且つ連続したデータ記憶単位である第1のデータ記憶単位を前記第1の順序に従って決定する工程と、
前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位であって、前記タイムスタンプのうちの1つと関連付けられたデータマップ単位を前記第2の順序に従って決定する工程であって、当該タイムスタンプのうちの1つは、前記データ記憶単位のうち前記最後に有効となり且つ連続したデータ記憶単位と関連付けられたタイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである、前記第2の順序に従って決定する工程と、
前記データ記憶単位のうち最新であって、前記タイムスタンプのうちの1つと関連付けられたデータ記憶単位である第2のデータ記憶単位を前記第1の順序に従って決定する工程であって、当該タイムスタンプのうちの1つは、前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位と関連付けられた前記タイムスタンプによって示される前記相対的経過時間に先行する所定の決定された量と同一、またはそれよりも先行する相対的経過時間を示すものである、前記第2のデータ記憶単位を前記第1の順序に従って決定する工程と、
前記データ記憶単位のうち前記第2のデータ記憶単位から前記第1のデータ記憶単位までのデータ単位のみを使用して、前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位を前記第1の順序および前記第2の順序に従って回復する工程と
を有するものである有形のコンピュータ可読媒体。
EC71)EC70記載の有形のコンピュータ可読媒体において、前記動作は、さらに、
前記データマップ単位のうち変更され且つ以前に前記不揮発性メモリに書き込まれていなかったデータマップ単位ごとに、前記データ記憶単位のうち特定のデータ記憶単位と関連付けられたタイムスタンプと等しい最も古い更新と関連付けられたタイムスタンプを特定する工程であって、前記変更されたデータマップ単位は、前記不揮発性メモリ内に前記特定のデータ記憶単位に対応する位置を有するものである、前記特定する工程と、
以前に前記不揮発性メモリに書き込まれていなかった前記変更されたデータマップ単位の各々を、前記変更されたデータマップ単位の最も古い更新と関連付けられたタイムスタンプに続く前記決定された量よりも大きいタイムスタンプのうちの1つと関連付けられた前記データ記憶単位のうちの1つを書き込む時点で、またはそれより前に、前記不揮発性メモリに書き込む工程と
を有するものである有形のコンピュータ可読媒体。
EC72)EC69記載の有形のコンピュータ可読媒体において、前記動作は、回復する工程に関して、データ記憶単位のうち最後に有効となり且つ連続したデータ記憶単位のそれぞれのタイムスタンプによって示される相対的経過時間よりも若い相対的経過時間を指示するそれぞれのタイムスタンプを有するデータマップ単位のうちいずれも無視する工程をさらに有するものである有形のコンピュータ可読媒体。
EC73)EC69記載の有形のコンピュータ可読媒体において、イベントは誤動作を有する有形のコンピュータ可読媒体。
EC74)EC73記載の有形のコンピュータ可読媒体において、誤動作は、
電源障害、
クラッシュ、および
回路障害
のうち1若しくはそれ以上を有する有形のコンピュータ可読媒体。
EC75)EC63またはEC64記載の有形のコンピュータ可読媒体において、データマップ単位のうち少なくとも2つは同じ位置を有し、同じ位置は、データ単位のうち少なくとも2つのそれぞれのデータ単位の同じ位置である有形のコンピュータ可読媒体。
EC76)EC63またはEC64記載の有形のコンピュータ可読媒体において、前記動作は、データ記憶単位のうち少なくとも一部と共に、データ記憶単位と関連付けられたそれぞれのタイムスタンプを記憶する工程と、データマップ単位のうち少なくとも一部と共に、データマップ単位と関連付けられたそれぞれのタイムスタンプを記憶する工程とをさらに有するものである有形のコンピュータ可読媒体。
EC77)EC63またはEC64記載の有形のコンピュータ可読媒体において、データ記憶単位の各々とそれぞれのデータ記憶単位のそれぞれのタイムスタンプとの関連付けが不揮発性メモリを読み出すことによって決定されるように、データ記憶単位のそれぞれのタイムスタンプのうち十分なタイムスタンプがデータ記憶単位と共に記憶される有形のコンピュータ可読媒体。
EC78)EC63またはEC64記載の有形のコンピュータ可読媒体において、データ記憶単位のそれぞれのタイムスタンプのうち少なくとも一部の各々は、関連付けられたデータ記憶単位と共に不揮発性メモリに記憶される有形のコンピュータ可読媒体。
EC79)EC63またはEC64記載の有形のコンピュータ可読媒体において、データマップ単位の各々とそれぞれのデータマップ単位のそれぞれのタイムスタンプとの関連付けが不揮発性メモリを読み出すことによって決定されるように、データマップ単位のそれぞれのタイムスタンプのうち十分なタイムスタンプがデータマップ単位と共に記憶される有形のコンピュータ可読媒体。
EC80)EC63またはEC64記載の有形のコンピュータ可読媒体において、データマップ単位のそれぞれのタイムスタンプのうち少なくとも一部の各々は、関連付けられたデータマップ単位と共に不揮発性メモリに記憶される有形のコンピュータ可読媒体。
EC81)EC63またはEC64記載の有形のコンピュータ可読媒体において、データ記憶単位のうち特定のデータ記憶単位は、特定のデータ記憶単位と関連付けられたそれぞれのタイムスタンプと共に不揮発性メモリに記憶され、データマップ単位のうち特定のデータマップ単位は、特定のデータマップ単位と関連付けられたそれぞれのタイムスタンプと共に不揮発性メモリに記憶される有形のコンピュータ可読媒体。
EC82)命令のセットを格納する有形のコンピュータ可読媒体であって、当該命令セットは処理要素によって実行されると、当該処理要素に、
記憶ストリームに従って不揮発性メモリ(NVM)に複数の記憶単位を書き込む工程であって、当該記憶単位の各々はデータ部分と、当該データ部分に対応するタイムスタンプ部分とを有するものである、前記記憶単位を書き込む工程と、
マップストリームに従って前記不揮発性メモリに複数のマップ単位を書き込む工程であって、当該マップ単位の各々はエントリ部分と、当該エントリ部分に対応するタイムスタンプ部分とを有するものである、前記マップ単位を書き込む工程と
を有する動作を実行させ、および/または制御させるものであり、
前記各エントリ部分の少なくとも一部は、前記データ部分のうち少なくとも1つの対応するデータ部分を特定することによって、それぞれの論理ブロック(LB)が前記不揮発性メモリに書き込まれている場所を決定することを可能にし、
時間的順序は前記タイムスタンプ部分によって示され、前記記憶単位のタイムスタンプ部分および前記マップ単位のタイムスタンプ部分は、タイムスタンプの相対的順序に従って単調に増加するものであり、
前記不揮発性メモリに書き込まれた前記マップ単位のうち少なくとも1つが、1つの特定の時点で前記不揮発性メモリに書き込まれた前記記憶単位のタイムスタンプ部分のうち前記時間的順序において最も遅いものよりも遅いタイムスタンプ部分を有する少なくとも1つの特定の時点が存在するものである
有形のコンピュータ可読媒体。
EC83)EC82記載の有形のコンピュータ可読媒体において、前記記憶単位の書き込む工程は、前記記憶単位のタイムスタンプ部分によって示される時間的順序に対応する時間の順序で記憶単位を書き込み、前記マップ単位の書き込む工程は、前記マップ単位のタイムスタンプ部分によって示される前記時間的順序に対応する時間の順序で前記マップ単位を書き込むものである有形のコンピュータ可読媒体。
EC84)EC82記載の有形のコンピュータ可読媒体において、前記動作は、さらに、
チェックポイントストリームに従って前記不揮発性メモリに1若しくはそれ以上のチェックポイント単位を書き込む工程であって、当該チェックポイント単位の各々はマップ部分と当該マップ部に対応するタイムスタンプ部分とを有するものである、前記書き込む工程を有し、
前記チェックポイントのタイムスタンプ部分は、タイムスタンプの相対的順序に従って単調に増加するものである
有形のコンピュータ可読媒体。
EC85)EC84記載の有形のコンピュータ可読媒体において、チェックポイント単位の書き込む工程は、チェックポイントのタイムスタンプ部分によって示される時間的順序に対応する時間の順序でチェックポイント単位を書き込む有形のコンピュータ可読媒体。
EC86)EC84記載の有形のコンピュータ可読媒体において、所定数のチェックポイント単位の連続したグループは、エントリ部分が従うマップの少なくとも1つの全体のチェックポイントを有する有形のコンピュータ可読媒体。
EC87)EC86記載の有形のコンピュータ可読媒体において、前記動作は、マップ部分および/またはチェックポイント単位のタイムスタンプ部分のうち1若しくはそれ以上の1若しくはそれ以上の部分に少なくとも一部は基づいてマップを復元する工程をさらに有するものである有形のコンピュータ可読媒体。
EC88)EC87記載の有形のコンピュータ可読媒体において、復元する工程は、さらに、エントリ部分および/またはマップ単位のタイムスタンプ部分のうち1若しくはそれ以上の1若しくはそれ以上の部分に少なくとも一部は基づくものである有形のコンピュータ可読媒体。
EC89)EC88記載の有形のコンピュータ可読媒体において、復元する工程は、さらに、データ部分および/または記憶単位のタイムスタンプ部分のうち1若しくはそれ以上の1若しくはそれ以上の部分に少なくとも一部は基づくものである有形のコンピュータ可読媒体。
EC90)EC89記載の有形のコンピュータ可読媒体において、データ部分の各々は、それぞれの1若しくはそれ以上のデータ単位と、それぞれの対応する1若しくはそれ以上のヘッダとを有し、ヘッダの各々は、データ単位のうちそれぞれの対応するデータ単位と論理ブロックのうち1つとの間のそれぞれのマッピングを特定し、マッピングは、論理ブロックのうちそれぞれの論理ブロックがデータ単位のうちそれぞれのデータ単位として不揮発性メモリのどこに書き込まれているか決定することを可能にし、復元する工程は、さらに、不揮発性メモリに書き込まれた記憶単位に含まれるそれぞれのヘッダのうち1若しくはそれ以上に少なくとも一部は基づくものである有形のコンピュータ可読媒体。
EC91)EC90記載の有形のコンピュータ可読媒体において、エントリ部分のうち特定のエントリ部分はそれぞれの論理ブロックのそれぞれのデータ部分を決定し、それぞれのデータ単位はヘッダのうち特定のヘッダを有し、特定のヘッダは、データ単位のうち特定のデータ単位と特定のエントリ部分のそれぞれの論理ブロックとの間のそれぞれのマッピングを特定する有形のコンピュータ可読媒体。
EC92)EC86記載の有形のコンピュータ可読媒体において、マップは1レベルマップである有形のコンピュータ可読媒体。
EC93)EC92記載の有形のコンピュータ可読媒体において、前記動作は、マップの少なくとも一部分をキャッシュに入れ、かつ/またはバッファに入れる工程をさらに有するものであり、マップ部分の少なくとも1つの少なくとも一部は、キャッシュに入れる工程および/またはバッファに入れる工程に従ったものである有形のコンピュータ可読媒体。
EC94)EC86記載の有形のコンピュータ可読媒体において、マップは、第1レベルマップと第2レベルマップとを有する2レベルマップであり、マップ部分は第1レベルマップの部分に対応し、エントリ部分は第2レベルマップのエントリに対応する有形のコンピュータ可読媒体。
EC95)EC94記載の有形のコンピュータ可読媒体において、前記動作は、第1レベルマップおよび/または第2レベルマップの少なくとも一部分をキャッシュに入れ、かつ/またはバッファに入れる工程をさらに有するものであり、マップ部分およびエントリ部分の少なくとも1つの少なくとも一部は、キャッシュに入れる工程および/またはバッファに入れる工程に従ったものである有形のコンピュータ可読媒体。
EC96)EC86記載の有形のコンピュータ可読媒体において、マップ部分の各々は、それぞれのマップ部分の対応するタイムスタンプ部分よりも時間的順序によれば早い対応するタイムスタンプ部分を有するエントリ部分のすべてと一致するものである有形のコンピュータ可読媒体。
EC97)EC84記載の有形のコンピュータ可読媒体において、1つの特定の時点は第1の特定の時点であり、不揮発性メモリに書き込まれたチェックポイント単位のうち少なくとも1つが、第2の特定の時点に不揮発性メモリに書き込まれたマップ単位のタイムスタンプ部分のうち時間的順序によれば最も遅いものよりも時間的順序によれば遅いタイムスタンプ部分を有する少なくとも1つの第2の特定の時点がある有形のコンピュータ可読媒体。
EC98)EC84記載の有形のコンピュータ可読媒体において、1つの特定の時点は第1の特定の時点であり、不揮発性メモリに書き込まれたチェックポイント単位のうち少なくとも1つが、第2の特定の時点に不揮発性メモリに書き込まれた記憶単位のタイムスタンプ部分のうち時間的順序によれば最も遅いものよりも時間的順序によれば遅いタイムスタンプ部分を有する少なくとも1つの第2の特定の時点がある有形のコンピュータ可読媒体。
EC99)EC82記載の有形のコンピュータ可読媒体において、複数の記憶単位は第1の複数の記憶単位であり、記憶ストリームは第1の記憶ストリームであり、さらに、
第2の記憶ストリームに従って不揮発性メモリに第2の複数の記憶単位を書き込む工程であって、第2の記憶単位の各々がデータ部分と対応するタイムスタンプ部分を有し、第2の記憶単位のタイムスタンプ部分が、前記タイムスタンプの相対的順序に従って単調に増加する、書き込む工程
を有するものであるある有形のコンピュータ可読媒体。
EC100)EC99記載の有形のコンピュータ可読媒体において、第2の記憶単位の書き込む工程は、第2の記憶単位のタイムスタンプ部分によって示される時間的順序に対応する時間の順序で第2の記憶単位を書き込む有形のコンピュータ可読媒体。
EC101)EC99記載の有形のコンピュータ可読媒体において、第2の記憶単位のうち少なくとも1つは、第1の記憶単位のうち2つの間に時間の順序で書き込まれ、少なくとも1つの第2の記憶単位のタイムスタンプ部分は、時間的順序によれば2つの第1の記憶単位のタイムスタンプ部分の間にある有形のコンピュータ可読媒体。
EC102)EC99記載の有形のコンピュータ可読媒体において、第1の複数の記憶単位のデータ部分のうち少なくとも1つは、ホストデータ書き込みコマンドと関連付けられたホストからのホストデータを有し、第2の複数の記憶単位のデータ部分のうち少なくとも1つは、再利用工程に応答して不揮発性メモリから読み出された再利用データを有する有形のコンピュータ可読媒体。
EC103)EC82記載の有形のコンピュータ可読媒体において、タイムスタンプ部分は、比較されるタイムスタンプ部分の数値比較により時間的順序に従ってタイムスタンプ部分を比較することを可能にするように符号化されている有形のコンピュータ可読媒体。
EC104)EC103記載の有形のコンピュータ可読媒体において、数値比較は、比較されるタイムスタンプ部分の1若しくはそれ以上の連続した最上位のビットを無視する有形のコンピュータ可読媒体。
EC105)EC103記載の有形のコンピュータ可読媒体において、比較される記憶単位のタイムスタンプ部分のうち特定のタイムスタンプ部分が、比較されるマップ単位のタイムスタンプ部分のうち特定のタイムスタンプと数値的に同一である場合には、比較は、タイムスタンプ部分が同一であるときには、比較される記憶単位のタイムスタンプ部分は比較されるマップ単位のタイムスタンプ部分よりも早いという事前の決定によって判定される有形のコンピュータ可読媒体。
EC106)EC105記載の有形のコンピュータ可読媒体において、数値的に同一であることは、比較されるタイムスタンプ部分の1若しくはそれ以上の連続した最上位のビットを無視するものである有形のコンピュータ可読媒体。
EC107)EC82記載の有形のコンピュータ可読媒体において、エントリ部分の各々は、それぞれのエントリ部分の対応するタイムスタンプ部分よりも時間的順序によれば早い対応するタイムスタンプ部分を有するデータ部分のすべてと一致するものである有形のコンピュータ可読媒体。
EC108)EC82記載の有形のコンピュータ可読媒体において、記憶単位の各々は原子的に書き込まれる有形のコンピュータ可読媒体。
EC109)EC82記載の有形のコンピュータ可読媒体において、マップ単位の各々は原子的に書き込まれる有形のコンピュータ可読媒体。
EC110)EC82記載の有形のコンピュータ可読媒体において、データ部分のうち少なくとも1つは、ホストデータ書き込みコマンドと関連付けられたホストからのホストデータを有する有形のコンピュータ可読媒体。
EC111)EC82記載の有形のコンピュータ可読媒体において、データ部分のうち少なくとも1つは、再利用工程に応答して不揮発性メモリから読み出された再利用データを有する有形のコンピュータ可読媒体。
EC112)EC82記載の有形のコンピュータ可読媒体において、データ部分の各々は、それぞれの1若しくはそれ以上のデータ単位と、それぞれの対応する1若しくはそれ以上のヘッダとを有し、ヘッダの各々は、データ単位のうちそれぞれの対応するデータ単位と論理ブロックのうち1つとの間のそれぞれのマッピングを特定し、マッピングは、論理ブロックのうちそれぞれの論理ブロックがデータ単位のうちそれぞれのデータ単位として不揮発性メモリのどこに書き込まれているか決定することを可能にする有形のコンピュータ可読媒体。
EC113)EC112記載の有形のコンピュータ可読媒体において、ヘッダの各々は不揮発性メモリに連続して書き込まれ、それぞれのデータ単位はそれぞれのヘッダによって特定される有形のコンピュータ可読媒体。
EC114)EC61、EC68、EC102、またはEC110記載の有形のコンピュータ可読媒体において、前記動作は、データ書き込みに従ってホストとインターフェースする工程をさらに有するものである有形のコンピュータ可読媒体。
EC115)EC114記載の有形のコンピュータ可読媒体において、インターフェースする工程は記憶インターフェース規格と適合する有形のコンピュータ可読媒体。
EC116)EC61、EC68、EC102、またはEC110記載の有形のコンピュータ可読媒体において、ホストはコンピューティングホストであり、コンピューティングホストはデータ書き込みに従って動作する有形のコンピュータ可読媒体。
EC117)EC60、EC64、またはEC82記載の有形のコンピュータ可読媒体において、不揮発性メモリは1若しくはそれ以上のフラッシュメモリを有する有形のコンピュータ可読媒体。
EC118)EC117記載の有形のコンピュータ可読媒体において、前記動作は、フラッシュ・メモリ・インターフェースによりフラッシュメモリとインターフェースする工程をさらに有するものである有形のコンピュータ可読媒体。
EC119)装置であって、
不揮発性メモリ(NVM)に一連のデータ単位を第1の順序で配列することが可能な第1のハードウェア論理回路であって、前記データ単位の各々は複数のタイムスタンプのうちの1つと関連付けられているものである、前記第1のハードウェア論理回路と、
前記不揮発性メモリに一連のデータマップ単位を第2の順序で配列することが可能な第2のハードウェア論理回路であって、前記データマップ単位の各々は複数のタイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記第2のハードウェア論理回路と
を有し、
前記データマップ単位の各々は、前記不揮発性メモリ内に前記データ単位のうちの1つに対応する位置を有し、
前記データ単位の各々と関連付けられた前記各タイムスタンプの時点は、前記対応するデータマップ単位と関連付けられた前記タイムスタンプの時点と同一であるか、または当該タイムスタンプの時点より前である
装置。
EC120)EC119記載の装置において、前記第1のハードウェア論理回路の少なくとも一部分は、前記第2のハードウェア論理回路の少なくとも一部分でもある共用ハードウェア論理回路である装置。
EC121)EC119記載の装置において、
前記データ単位の各々は、ホストから各論理ブロックアドレス(LBA)への各データ書き込みに対応し、
前記データ単位のうち先行するデータ単位および後続のデータ単位は、前記各論理ブロックアドレスのうち同一の論理ブロックアドレスへの先行するデータ書き込みおよび後続のデータ書き込みに対応するものであり、
前記先行するデータ単位は前記データマップ単位のうち関連付けられたデータマップ単位を有しないものである
装置。
EC122)EC119記載の装置において、さらに、
電源障害の後に、前記データ単位のうち最後に有効となり且つ連続したデータ単位を決定することが可能な第3のハードウェア論理回路と、
電源障害の後に、前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位を決定することが可能な第4のハードウェア論理回路であって、当該最後に有効となり且つ連続したデータマップ単位と関連付けられたタイムスタンプの時点は前記データ単位のうち前記最後に有効となり且つ連続したデータ単位と関連付けられたタイムスタンプの時点と同一であるか、またはそれより前である、前記第4のハードウェア論理回路と、
前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位のみを回復することが可能な第5のハードウェア論理回路と
を有し、
これにより、前記データ単位のうち最後に有効となり且つ連続したデータ単位と関連付けられた前記タイムスタンプより後のタイムスタンプに関連付けられた前記データマップ単位は全て回復時に無視されるものである
装置。
EC123)EC119記載の装置において、データ単位はデータ記憶単位である装置。
EC124)装置であって、
不揮発性メモリ(NVM)に一連のデータ記憶単位を書き込むことが可能な第1のハードウェア論理回路であって、前記データ記憶単位の各々は複数のタイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記第1のハードウェア論理回路と、
前記不揮発性メモリに一連のデータマップ単位を書き込むことが可能な第2のハードウェア論理回路であって、前記データマップ単位の各々は前記タイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記第2のハードウェア論理回路と
を有し、
前記データマップ単位の各々は、前記不揮発性メモリ内に前記データ記憶単位のうちの1つに対応する位置を有し、
前記データ記憶単位の各々と関連付けられた前記各タイムスタンプは、前記対応するデータマップ単位と関連付けられた前記タイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである
装置。
EC125)EC124記載の装置において、前記第1のハードウェア論理回路の少なくとも一部分は、前記第2のハードウェア論理回路の少なくとも一部分でもある共用ハードウェア論理回路である装置。
EC126)EC124記載の装置において、前記データ記憶単位の書き込みは第1の順序に従ったものであり、データマップ単位の書き込みは第2の順序に従ったものである装置。
EC127)EC124記載の装置において、前記データ記憶単位は不揮発性メモリ内で第1の順序に従って配列され、前記データマップ単位は不揮発性メモリ内で第2の順序に従って配置されるものである装置。
EC128)EC124記載の装置において、
前記データ記憶単位のうち第1のデータ記憶単位は、ホストから特定の論理ブロックアドレス(LBA)への第1のデータ書き込みに対応し、
前記データ記憶単位のうち第2のデータ記憶単位は、前記ホストから特定の論理ブロックアドレスへの第2のデータ書き込みに対応し、
前記第1のデータ書き込みは、時間の順序において、前記第2のデータ書き込みに先行するものであり、
前記データマップ単位のいずれも前記第1のデータ記憶単位に対応しないものである
装置。
EC129)EC126記載の装置において、さらに、
イベントの後に、前記データ記憶単位のうち最後に有効となり且つ連続したデータ記憶単位を前記第1の順序に従って決定することが可能な第3のハードウェア論理回路と、
イベントの後に、前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位であって、前記タイムスタンプのうちの1つと関連付けられたデータマップ単位を前記第2の順序に従って決定することが可能な第4のハードウェア論理回路であって、当該タイムスタンプのうちの1つは、前記データ記憶単位のうち前記最後に有効となり且つ連続したデータ記憶単位と関連付けられたタイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである、前記第4のハードウェア論理回路と、
前記第1の順序および前記第2の順序に従って、前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位のみを回復することが可能な第5のハードウェア論理回路と
を有するものである装置。
EC130)装置であって、
記憶ストリームに従って不揮発性メモリ(NVM)に複数の記憶単位を書き込むことが可能な第1のハードウェア論理回路であって、当該記憶単位の各々はデータ部分と、当該データ部分に対応するタイムスタンプ部分とを有するものである、前記第1のハードウェア論理回路と、
マップストリームに従って前記不揮発性メモリに複数のマップ単位を書き込むことが可能な第2のハードウェア論理回路であって、当該マップ単位の各々はエントリ部分と、当該エントリ部分に対応するタイムスタンプ部分とを有するものである、前記第2のハードウェア論理回路と
を有し、
前記各エントリ部分の少なくとも一部は、前記データ部分のうち少なくとも1つの対応するデータ部分を特定することによって、それぞれの論理ブロック(LB)が前記不揮発性メモリに書き込まれている場所を決定することを可能にし、
時間的順序は前記タイムスタンプ部分によって示され、前記記憶単位のタイムスタンプ部分および前記マップ単位のタイムスタンプ部分は、タイムスタンプの相対的順序に従って単調に増加するものであり、
前記不揮発性メモリに書き込まれた前記マップ単位のうち少なくとも1つが、1つの特定の時点で前記不揮発性メモリに書き込まれた前記記憶単位のタイムスタンプ部分のうち前記時間的順序において最も遅いものよりも遅いタイムスタンプ部分を有する少なくとも1つの特定の時点が存在するものである
装置。
EC131)EC130記載の装置において、前記第1のハードウェア論理回路の少なくとも一部分は、前記第2のハードウェア論理回路の少なくとも一部分でもある共用ハードウェア論理回路である装置。
EC132)EC130記載の装置において、前記第1のハードウェア論理回路は前記記憶単位のタイムスタンプ部分によって示される前記時間的順序に対応する時間の順序で前記記憶単位を書き込み、前記第2のハードウェア論理回路は前記マップ単位のタイムスタンプ部分によって示される前記時間的順序に対応する時間の順序で前記マップ単位を書き込むものである装置。
EC133)EC130記載の装置において、さらに、
チェックポイントストリームに従って前記不揮発性メモリに1若しくはそれ以上のチェックポイント単位を書き込むことが可能な第3のハードウェア論理回路であって、当該チェックポイント単位の各々はマップ部分と当該マップ部分に対応するタイムスタンプ部分とを有するものである、前記第3のハードウェア論理回路
を有するものであり、
前記チェックポイントのタイムスタンプ部分は、前記タイムスタンプの相対的順序に従って単調に増加するものである装置。
EC134)EC133記載の装置において、前記第3のハードウェア論理回路は、前記チェックポイントのタイムスタンプ部分によって示される時間的順序に対応する時間の順序でチェックポイント単位を書き込む装置。
EC135)EC133記載の装置において、所定数のチェックポイント単位の連続したグループは、前記エントリ部分が従うマップの少なくとも全体のチェックポイントを有する装置。
EC136)記憶インターフェース規格を有し、または参照する前述のECのうちいずれかであって、記憶インターフェース規格は、
ユニバーサル・シリアル・バス(USB)インターフェース規格、
コンパクトフラッシュ(登録商標)(CF)インターフェース規格、
マルチメディアカード(MMC)インターフェース規格、
組み込みMMC(eMMC)インターフェース規格、
サンダーボルト(Thunderbolt)インターフェース規格、
UFSインターフェース規格、
セキュアディジタル(SD)インターフェース規格、
メモリ・スティック・インターフェース規格、
xDピクチャ・カード・インターフェース規格、
統合ドライブエレクトロニクス(IDE)インターフェース規格、
シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)インターフェース規格、
外部SATA(eSATA)インターフェース規格、
小型コンピュータ・システム・インターフェース(SCSI)インターフェース規格、
シリアル小型コンピュータ・システム・インターフェース(SAS)インターフェース規格、
ファイバ・チャネル・インターフェース規格、
イーサネット(登録商標)(Ethernet(登録商標))インターフェース規格、および
周辺装置相互接続エクスプレス(PCIe)インターフェース規格
のうち1若しくはそれ以上を有するEC。
EC137)フラッシュ・メモリ・インターフェースを有し、または参照する前述のECのうちいずれかであって、フラッシュ・メモリ・インターフェースは、
オープンNANDフラッシュインターフェース(ONFI)、
トグルモードインターフェース、
ダブルデータレート(DDR)同期インターフェース、
DDR2同期インターフェース、
同期インターフェース、および
非同期インターフェース
のうち1若しくはそれ以上と適合するEC。
EC138)コンピューティングホストを有し、または参照する前述のECのうちいずれかであって、コンピューティングホストは、
コンピュータ、
ワークステーションコンピュータ、
サーバコンピュータ、
ストレージサーバ、
ストレージ・アタッチト・ネットワーク(SAN)、
ネットワーク・アタッチト・ストレージ(NAS)デバイス、
ダイレクト・アタッチト・ストレージ(DAS)デバイス、
ストレージアプライアンス、
パーソナルコンピュータ(PC)、
ラップトップコンピュータ、
ノートブックコンピュータ、
ネットブックコンピュータ、
タブレット機器またはタブレットコンピュータ、
ウルトラブックコンピュータ、
電子読み出し装置(e−reader)、
携帯情報端末(PDA)
ナビゲーションンシステム
(ハンドヘルド型)全地球測位システム(GPS)機器、
自動通信路制御システム、
自動車媒体制御システムまたは自動車媒体制御コンピュータ、
プリンタ、コピー機またはファックス機またはオールインワン機器、
販売時点(POS)機器、
金銭登録機、
メディアプレーヤ、
テレビ、
メディアレコーダ、
ディジタル・ビデオ・レコーダ(DVR)、
ディジタルカメラ、
セルラハンドセット、
コードレス電話機ハンドセット、および
電子ゲーム
のうち1若しくはそれ以上を有するEC。
EC139)少なくとも1つのフラッシュメモリを有し、または参照する前述のECのうちいずれかであって、少なくとも1つのフラッシュメモリの少なくとも一部分は、
NANDフラッシュ技術記憶セル、および
NORフラッシュ技術記憶セル
のうち1若しくはそれ以上を有するEC。
EC140)少なくとも1つのフラッシュメモリを有し、または参照する前述のECのうちいずれかであって、少なくとも1つのフラッシュメモリの少なくとも一部分は、
シングルレベルセル(SLC)フラッシュ技術記憶セル、および
マルチレベルセル(MLC)フラッシュ技術記憶セル
のうち1若しくはそれ以上を有するEC。
EC141)少なくとも1つのフラッシュメモリを有し、または参照する前述のECのうちいずれかであって、少なくとも1つのフラッシュメモリの少なくとも一部分は、
多結晶シリコン技術ベースの電荷蓄積セル、および
シリコン窒化膜技術ベースの電荷蓄積セル
のうち1若しくはそれ以上を有するEC。
EC142)少なくとも1つのフラッシュメモリを有し、または参照する前述のECのうちいずれかであって、少なくとも1つのフラッシュメモリの少なくとも一部分は、
2次元技術ベースのフラッシュメモリ技術、および
3次元技術ベースのフラッシュメモリ技術
のうち1若しくはそれ以上を有するEC。
システム
ある実施形態では、SSDといった入出力装置がSSDコントローラを有する。SSDコントローラはホストインターフェースとSSDのNVMとの間のブリッジとして働き、SSDのホストインターフェースを介してコンピューティングホストから送られるホストプロトコルのコマンドを実行する。コマンドの少なくとも一部は、SSDに、コンピューティングホストから送られたデータおよびコンピューティングホストに送られるデータについて、それぞれ、NVMの書き込みおよび読み出しを行うよう指図する。別の実施形態では、SSDコントローラは、マップを使用してホストプロトコルのLBAとNVM内の物理的記憶アドレスとを変換することができるようになっている。別の実施形態では、マップの少なくとも一部分が、入出力装置の専用記憶(コンピューティングホストからは見えない)に使用される。例えば、コンピューティングホストからアクセスできないLBAの部分が、入出力装置によって、ログ、統計、または他の専用データへのアクセスを管理するのに使用される。
ある実施形態では、NVM内の様々なサイズの量の圧縮データにアクセスすることにより、ある使用シナリオでは記憶効率が改善される。例えば、SSDコントローラは、コンピューティングホストから(例えばディスク書き込みコマンドに関連した)(圧縮されていない)データを受け取り、データを圧縮し、データをフラッシュメモリへ記憶する。コンピューティングホストからの(例えばディスク読み出しコマンドに関連した)後続の要求に応答して、SSDコントローラはフラッシュメモリから圧縮データを読み出し、圧縮データを解凍し、解凍されたデータをコンピューティングホストに提供する。圧縮データは、様々なサイズの量に従ってフラッシュメモリに記憶され、各量のサイズは、例えば、圧縮アルゴリズム、動作モード、様々なデータに関する圧縮有効性により変動する。SSDコントローラは、一部は、含まれるマップ表を調べて(1つまたは複数の)ヘッダがフラッシュメモリのどこに記憶されているか確認することによってデータを解凍する。SSDコントローラは、適切な(圧縮)データがフラッシュメモリのどこに記憶されているか確認するためにフラッシュメモリから得た(1つまたは複数の)ヘッダをパースする。SSDコントローラは、コンピューティングホストに提供すべき解凍データを生成するために、フラッシュメモリからの適切なデータを解凍する。本出願では、「解凍する(uncompress)」(およびその変形)は、「伸張する(decompress)」(およびその変形)と同義である。
様々な実施形態では、SSDコントローラは、コンピューティングホストとインターフェースするためのホストインターフェースと、フラッシュメモリといったNVMとインターフェースするためのインターフェースと、各インターフェースを制御し、圧縮および解凍と共に、低レベル冗長性および/または誤り訂正、高レベル冗長性および/または誤り訂正、ならびに独立シリコン素子を用いた動的高レベル冗長性モード管理を行う(かつ/または行うことの様々な態様を制御する)ための回路とを有する。
様々な実施形態によれば、あるホストインターフェースは、USBインターフェース規格、CFインターフェース規格、MMCインターフェース規格、eMMCインターフェース規格、サンダーボルトインターフェース規格、UFSインターフェース規格、SDインターフェース規格、メモリ・スティック・インターフェース規格、xDピクチャ・カード・インターフェース規格、IDEインターフェース規格、SATAインターフェース規格、SCSIインターフェース規格、SASインターフェース規格、およびPCIeインターフェース規格のうち1若しくはそれ以上と適合する。様々な実施形態によれば、コンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレット機器またはタブレットコンピュータ、ウルトラブックコンピュータ、電子読み出し装置(e−readerなど)、PDA、ナビゲーションンシステム、(ハンドヘルド型)GPS機器、自動通信路制御システム、自動車媒体制御システムまたはコンピュータ、プリンタ、コピー機またはファックス機またはオールインワン機器、POS機器、金銭登録機、メディアプレーヤ、テレビ、メディアレコーダ、DVR、ディジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうち全部または任意の部分である。ある実施形態では、インターフェースホスト(SAS/SATAブリッジなど)は、コンピューティングホストおよび/またはコンピューティングホストへのブリッジとして動作する。
様々な実施形態では、SSDコントローラは、1若しくはそれ以上のプロセッサを有する。プロセッサは、SSDコントローラの動作を制御し、かつ/または行うためにファームウェアを実行する。SSDコントローラは、コマンドおよび/または状況ならびにデータを送り、受け取るためにコンピューティングホストと通信する。コンピューティングホストは、オペレーティングシステム、ドライバ、およびアプリケーションのうち1若しくはそれ以上を実行する。コンピューティングホストによるSSDコントローラとの通信は、任意選択で、かつ/または選択的に、ドライバおよび/またはアプリケーションによるものである。第1の例では、SSDコントローラへのすべての通信がドライバによるものであり、アプリケーションは、ドライバに高レベルコマンドを提供し、ドライバがそれをSSDコントローラのための特定のコマンドに変換する。第2の例では、ドライバはバイパスモードを実施し、アプリケーションは、ドライバを介してSSDコントローラに特定のコマンドを送ることができるようになっている。第3の例では、PCIe SSDコントローラが1若しくはそれ以上の仮想機能(Virtual Functions:VFs)をサポートし、アプリケーションが、一度構成されると、ドライバをバイパスしてSSDコントローラを直接通信することを可能にする。
様々な実施形態によれば、あるSSDは、HDD、CDドライブ、DVDドライブといった磁気的不揮発性記憶および/または光学的不揮発性記憶によって使用されるフォームファクタ、電気的インターフェース、および/またはプロトコルと適合する。様々な実施形態では、SSDは、0以上のパリティ符号、0以上のRS符号、0以上のBCH符号、0以上のビタビ符号または他のトレリス符号、および0以上のLDPC符号の様々な組み合わせを使用する。
図1Aに、フラッシュメモリといった不揮発性記憶を管理するのに自己ジャーナリングおよび階層的整合性を使用するSSDコントローラを有するSSD101の実施形態の選択された詳細を図示する。SSDコントローラは、NVM素子(フラッシュメモリなど)によって実施されるような不揮発性記憶を管理するためのものである。SSDコントローラ100は1若しくはそれ以上の外部インターフェース110を介してホスト(不図示)に通信可能に結合されている。様々な実施形態によれば、外部インターフェース110は、SATAインターフェース、SASインターフェース、PCIeインターフェース、ファイバ・チャネル・インターフェース、イーサネット(登録商標)(Ethernet(登録商標))インターフェース(10ギガビットイーサネット(登録商標)など)、上記のインターフェースのいずれかの非標準バージョン、カスタムインターフェース、またはストレージおよび/若しくは通信および/若しくはコンピューティング機器を相互接続するのに使用される任意の他の種類のインターフェースのうち1若しくはそれ以上である。例えば、ある実施形態では、SSDコントローラ100は、SATAインターフェースおよびPCIeインターフェースを有する。
SSDコントローラ100は、さらに、1若しくはそれ以上のデバイスインターフェース190を介して、フラッシュデバイス192の1若しくはそれ以上のインスタンスといった、1若しくはそれ以上の記憶デバイスを有するNVM199に通信可能に結合されている。様々な実施形態によれば、デバイスインターフェース190は、非同期インターフェース、同期インターフェース、シングルデータレート(SDR)インターフェース、ダブルデータレート(DDR)インターフェース、DRAM互換DDR若しくはDDR2同期インターフェース、ONFI2.2やONFI3.0互換インターフェースといったONFI互換インターフェース、トグルモード互換フラッシュインターフェース、上記のインターフェースのいずれかの非標準バージョン、カスタムインターフェース、または記憶デバイスに接続するのに使用される任意の他の種類のインターフェースのうち1若しくはそれ以上である。
フラッシュデバイス192の各々は、ある実施形態では、1若しくはそれ以上の個々のフラッシュダイ194を有する。フラッシュデバイス192のうち特定のフラッシュデバイスの種類に従って、特定のフラッシュデバイス192内の複数のフラッシュダイ194に、並列に、任意選択で、かつ/または選択的にアクセスすることができる。フラッシュデバイス192は、単に、SSDコントローラ100に通信可能に結合することが可能な記憶デバイスの一種を表しているにすぎない。様々な実施形態では、SLC NANDフラッシュメモリ、MLC NANDフラッシュメモリ、NORフラッシュメモリ、多結晶シリコン若しくはシリコン窒化膜技術ベースの電荷蓄積セルを使用したフラッシュメモリ、2次元若しくは3次元技術ベースのフラッシュメモリ、読み出し専用メモリ、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、強磁性メモリ、相変化メモリ、レーストラックメモリ、ReRAM、または任意の他の種類のメモリデバイス若しくは記憶媒体といった、任意の種類の記憶デバイスを使用することができる。
様々な実施形態によれば、デバイスインターフェース190は、1つのバスにつきフラッシュデバイス192の1若しくはそれ以上のインスタンスを有する1若しくはそれ以上のバス;グループ内のバスにおおむね並列にアクセスさせる、1つのバスにつきフラッシュデバイス192の1若しくはそれ以上のインスタンスを有する1若しくはそれ以上のバスグループ;またはデバイスインターフェース190上へのフラッシュデバイス192の1若しくはそれ以上のインスタンスの任意の他の編成として編成される。
引き続き図1Aにおいて、SSDコントローラ100は、ホストインターフェース111、データ処理121、バッファ131、マップ141、リサイクラ151、ECC161、デバイスインターフェース論理191、CPU171といった1若しくはそれ以上のモジュールを有する。図1Aに図示する具体的なモジュールおよび相互接続は、単に、一実施形態を表すにすぎず、これらのモジュールの一部または全部、および図示されていないさらに別のモジュールの多くの配置および相互接続が考えられる。第1の例として、ある実施形態では、デュアルポーティングを提供するための2つ以上のホストインターフェース111がある。第2の例として、ある実施形態では、データ処理121および/またはECC161がバッファ131と組み合わされている。第3の例として、ある実施形態では、ホストインターフェース111がバッファ131に直接結合されており、データ処理121が、バッファ131に記憶されたデータに任意選択で、かつ/または選択的に作用する。第4の例として、ある実施形態では、デバイスインターフェース論理191がバッファ131に直接結合されており、ECC161が、バッファ131に記憶されたデータに任意選択で、かつ/または選択的に作用する。
ホストインターフェース111は、外部インターフェース110を介してコマンドおよび/またはデータを送受信し、ある実施形態では、タグ追跡113によって個々のコマンドの進捗を追跡する。例えば、コマンドは、読み出すべきアドレス(LBAなど)およびデータの量(LBA量、例えばセクタの数など)を指定する読み出しコマンドを有し、これに応答してSSDは、読み出し状況および/または読み出しデータを提供する。別の例として、コマンドは、書き込むべきアドレス(LBAなど)およびデータの量(LBA量、例えばセクタの数など)を指定する書き込みコマンドを有し、これに応答してSSDは、書き込み状況を提供し、かつ/または書き込みデータを要求し、任意選択でその後に書き込み状況を提供する。さらに別の例として、コマンドは、もはや割り振られる必要のなくなった1若しくはそれ以上のアドレス(1若しくはそれ以上のLBAなど)を指定する割り振り解除コマンド(trimコマンドなど)を有し、これに応答してSSDは、マップをしかるべく変更し、任意選択で割り振り解除状況を提供する。あるコンテキストでは、ATA互換TRIMコマンドが割り振り解除コマンドの例である。さらに別の例として、コマンドは、超コンデンサ・テスト・コマンドまたはデータハーデニング成功問い合わせを有し、これに応答してSSDは、適切な状況を提供する。ある実施形態では、ホストインターフェース111は、SATAプロトコルと適合し、NCQコマンドを使用して、最高32までの未処理のコマンドを有することができるようになっており、各コマンドは0から31までの数として表された一意のタグを有する。ある実施形態では、タグ追跡113は、外部インターフェース110を介して受け取ったコマンドのための外部タグを、SSDコントローラ100による処理の間にコマンドを追跡するのに使用される内部タグと関連付けることができるようになっている。
様々な実施形態によれば、データ処理121は、任意選択で、かつ/または選択的に、バッファ131と外部インターフェース110との間で送られる一部または全部のデータを処理する、およびデータ処理121は、任意選択で、かつ/または選択的に、バッファ131に記憶されたデータを処理する、以下のうち1若しくはそれ以上が行われる。ある実施形態では、データ処理121は、1若しくはそれ以上のエンジン123を使用して、書式設定、書式設定の変更、符号変換、ならびに他のデータ処理および/または操作タスクのうち1若しくはそれ以上を行う。
バッファ131は、外部インターフェース110からデバイスインターフェース190へ/デバイスインターフェース190から外部インターフェース110へ送られたデータを記憶する。ある実施形態では、バッファ131は、さらに、SSDコントローラ100によってフラッシュデバイス192の1若しくはそれ以上のインスタンスを管理するのに使用される、一部または全部のマップ表といったシステムデータも記憶する。様々な実施形態では、バッファ131は、データの一時記憶に使用されるメモリ137、バッファ131への、かつ/またはバッファ131からのデータの移動を制御するのに使用されるDMA133、ならびに高レベル誤り訂正および/または冗長性機能と、他のデータ移動および/または操作機能とを提供するのに使用されるECC−X135のうち1若しくはそれ以上を有する。高レベル冗長性機能の一例がRAID様の能力(RASIEなど)であり、ディスクレベルではなく、フラッシュ・デバイス・レベル(フラッシュデバイス192のうち複数のものなど)および/またはフラッシュダイ・レベル(フラッシュダイ194など)の冗長性を備える。
様々な実施形態によれば、以下のうち1若しくはそれ以上である。ECC161は、任意選択で、かつ/または選択的に、バッファ131とデバイスインターフェース190との間で送られる一部または全部のデータを処理する;およびECC161は、任意選択で、かつ/または選択的に、バッファ131に記憶されたデータを処理する。ある実施形態では、ECC161は、例えば1若しくはそれ以上のECC技法に従った低レベル誤り訂正および/または冗長性機能を提供するのに使用される。ある実施形態では、ECC161は、CRC符号、ハミング符号、RS符号、BCH符号、LDPC符号、ビタビ符号、トレリス符号、硬判定符号、軟判定符号、消去ベースの符号、任意の誤り検出および/または訂正符号、ならびに上記の任意の組み合わせのうち1若しくはそれ以上を実施する。ある実施形態では、ECC161は、1若しくはそれ以上の復号器(LDPC復号器など)を有する。
デバイスインターフェース論理191は、デバイスインターフェース190を介してフラッシュデバイス192のインスタンスを制御する。デバイスインターフェース論理191は、フラッシュデバイス192のプロトコルに従ってフラッシュデバイス192のインスタンスへ/からデータを送ることができるようになっている。デバイスインターフェース論理191は、デバイスインターフェース190を介したフラッシュデバイス192のインスタンスの制御を選択的に配列するスケジューリング193を有する。例えば、ある実施形態では、スケジューリング193は、フラッシュデバイス192のインスタンスへの操作を待ち行列に入れ、フラッシュデバイス192(またはフラッシュダイ194)のインスタンスの個々のインスタンスへの操作を、フラッシュデバイス192(またはフラッシュダイ194)のインスタンスの個々のインスタンスが利用可能になるに従って選択的に送ることができるようになっている。
マップ141は、外部インターフェース110上で使用されるデータアドレス指定と、デバイスインターフェース190上で使用されるデータアドレス指定との間の変換を行い、表143を使用して外部データアドレスからNVM199内の位置へマップする。例えば、ある実施形態では、マップ141は、外部インターフェース110上で使用されるLBAを、表143によって提供されるマッピングにより、1若しくはそれ以上のフラッシュダイ194を対象とするブロックおよび/またはページアドレスに変換する。ドライブ製造または割り振り解除以来一度も書き込まれていないLBAでは、マップは、LBAが読み出された場合に返すべきデフォルト値を指し示す。例えば、割り振り解除コマンドを処理するときに、マップは、割り振り解除されたLBAに対応するエントリがデフォルト値のうち1つを指し示すように変更される。様々な実施形態では、様々なデフォルト値があり、各々が対応するポインタを有する。複数のデフォルト値は、ある(例えば第1の範囲内の)割り振り解除されたLBAを1つのデフォルト値として読み出し、ある(例えば第2の範囲内の)割り振り解除されたLBAを別のデフォルト値として読み出すことを可能にする。デフォルト値は、様々な実施形態では、フラッシュメモリ、ハードウェア、ファームウェア、コマンドおよび/若しくはプリミティブ引数および/若しくはパラメータ、プログラマブルレジスタ、またはそれらの様々な組み合わせによって定義される。
ある実施形態では、マップ141は、表143を使用して、外部インターフェース110上で使用されるアドレスと、デバイスインターフェース190上で使用されるデータアドレス指定との間の変換を行い、かつ/またはルックアップする。様々な実施形態によれば、表143は、1レベルマップ、2レベルマップ、マルチレベルマップ、マップキャッシュ、圧縮マップ、あるアドレス空間から別のアドレス空間への任意の種類のマッピング、および上記の任意の組み合わせのうち1若しくはそれ以上である。様々な実施形態によれば、表143は、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、NVM(フラッシュメモリなど)、キャッシュメモリ、オンチップメモリ、オフチップメモリ、および上記の任意の組み合わせのうち1若しくはそれ以上を有する。
ある実施形態では、リサイクラ151は、不要部分の整理を行う。例えば、ある実施形態では、フラッシュデバイス192のインスタンスは、ブロックが書き換え可能になる前に消去されなければならないブロックを有する。リサイクラ151は、例えば、マップ141によって維持されるマップをスキャンすることによって、フラッシュデバイス192のインスタンスのどの部分が実際に使用されているか(例えば、割り振り解除されているのではなく割り振られていること)を決定し、フラッシュデバイス192のインスタンスの未使用の(例えば割り振り解除された)部分を、未使用の部分を消去することによって書き込みに利用できるようにすることができるようになっている。別の実施形態では、リサイクラ151は、フラッシュデバイス192のインスタンスのより大きい連続した部分を書き込みに利用できるようにするために、フラッシュデバイス192のインスタンス内に記憶されたデータを移動することができるようになっている。
ある実施形態では、フラッシュデバイス192のインスタンスは、異なる種類および/または属性のデータを記憶するための1若しくはそれ以上のバンドを保持するように、選択的に、かつ/または動的に構成され、管理され、かつ/または使用される。バンドの数、配置、サイズ、および種類は、動的に変更可能である。例えば、コンピューティングホストからのデータはホット(アクティブな)バンドに書き込まれ、リサイクラ151からのデータはコールド(あまりアクティブではない)バンドに書き込まれる。ある使用シナリオでは、コンピューティングホストが長い順次のストリームを書き込む場合には、ホットバンドのサイズが増大し、コンピューティングホストがランダムな書き込みを行い、またはわずかな書き込みしか行わない場合には、コールドバンドのサイズが増大する。
CPU171は、SSDコントローラ100の様々な部分を制御する。CPU171は、CPUコア172を有する。CPUコア172は、様々な実施形態によれば、1若しくはそれ以上のシングルコアプロセッサまたはマルチコアプロセッサである。CPUコア172内の個々のプロセッサコアは、ある実施形態では、マルチスレッド化されている。CPUコア172は、命令および/またはデータのキャッシュおよび/またはメモリを有する。例えば、命令メモリは、CPUコア172が、SSDコントローラ100を制御するためのプログラム(ファームウェアとも呼ばれるソフトウェアなど)を実行することを可能にする命令を有する。ある実施形態では、CPUコア172によって実行されるファームウェアの一部または全部が、(例えば、図1BのNVM199のファームウェア106として図示されている)フラッシュデバイス192のインスタンス上に記憶される。
様々な実施形態では、CPU171は、外部インターフェース110を介して受け取られるコマンドを、コマンドが進行している間に追跡し、制御するコマンド管理173、バッファ131の割り振りおよび使用を制御するバッファ管理175、マップ141を制御する変換管理177、データアドレス指定の整合性を制御し、例えば、外部データアクセスと再利用データアクセスとの間の矛盾を回避するコヒーレンシ管理179、デバイスインターフェース論理191を制御するデバイス管理181、識別情報の変更および通信を制御する識別情報管理182、ならびに、任意選択で、他の管理部をさらに有する。CPU171によって果たされる管理機能は、そのいずれか、若しくは全部が、ハードウェア、ソフトウェア(CPUコア172上や、外部インターフェース110を介して接続されたホスト上で実行されるファームウェアなど)、またはそれらの任意の実施形態によって制御され、かつ/または管理され、あるいは、そのどれも、制御も管理もされないものである。
ある実施形態では、CPU171は、性能統計の収集および/または報告、SMARTの実施、電源逐次開閉機構の制御、電力消費の制御および/または調整、電源障害への応答、クロック速度の制御および/またはモニタリングおよび/または調整、ならびに他の管理タスクのうち1若しくはそれ以上といった、他の管理タスクを行うことができるようになっている。
様々な実施形態は、SSDコントローラ100と同様の、例えば、ホストインターフェース111および/または外部インターフェース110の適応による、様々なコンピューティングホストを用いた動作と適合するコンピューティングホスト・フラッシュ・メモリ・コントローラを有する。様々なコンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレット機器またはタブレットコンピュータ、ウルトラブックコンピュータ、電子読み出し装置(e−readerなど)、PDA、ナビゲーションンシステム、(ハンドヘルド型)GPS機器、自動通信路制御システム、自動車媒体制御システムまたはコンピュータ、プリンタ、コピー機またはファックス機またはオールインワン機器、POS機器、金銭登録機、メディアプレーヤ、テレビ、メディアレコーダ、DVR、ディジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうち1つまたはそれらの任意の組み合わせを有する。
様々な実施形態では、SSDコントローラ(またはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部または任意の部分が、単一のIC、マルチダイICの単一のダイ、マルチダイICの複数のダイ、または複数のIC上で実施される。例えば、バッファ131は、SSDコントローラ100の他の要素と同じダイ上に実施される。別の例では、バッファ131は、SSDコントローラ100の他の要素と異なるダイ上に実施される。
図1Bに、図1AのSSDの1若しくはそれ以上のインスタンスを有するシステムの様々な実施形態の選択された詳細を図示する。SSD101は、デバイスインターフェース190を介してNVM199に結合されたSSDコントローラ100を有する。図には、様々な種別の実施形態、すなわち、ホストに直接結合された単一のSSD、各々がそれぞれの外部インターフェースを介してホストに直接それぞれ結合されている複数のSSD、および様々な相互接続要素を介してホストに間接的に結合された1若しくはそれ以上のSSDが示されている。
ホストに直接結合された単一のSSDの例示的実施形態としては、SSD101の1つのインスタンスが、外部インターフェース110を介してホスト102に直接結合される(例えば、スイッチ/ファブリック/中間コントローラ103が省かれ、バイパスされ、またはパススルーされる)。各々がそれぞれの外部インターフェースを介してホストに直接結合されている複数のSSDの例示的実施形態としては、SSD101の複数のインスタンスの各々が、外部インターフェース110のそれぞれのインスタンスを介してホスト102に直接それぞれ結合される(例えば、スイッチ/ファブリック/中間コントローラ103が省かれ、バイパスされ、またはパススルーされる)。様々な相互接続要素を介してホストに間接的に結合された1若しくはそれ以上のSSDの例示的実施形態としては、SSD101の1若しくはそれ以上のインスタンスの各々が、ホスト102に間接的にそれぞれ結合される。各間接結合は、スイッチ/ファブリック/中間コントローラ103に結合された外部インターフェース110のそれぞれのインスタンス、およびホスト102に結合する中間インターフェース104を介したものである。
スイッチ/ファブリック/中間コントローラ103を有する実施形態の一部は、メモリインターフェース180を介して結合された、SSDによってアクセス可能なカードメモリ112Cも有する。様々な実施形態では、SSD、スイッチ/ファブリック/中間コントローラ、および/またはカードメモリのうち1若しくはそれ以上が、物理的に識別可能なモジュール、カード、または差し込み可能な要素(入出力カード116など)上に含まれる。ある実施形態では、SSD101(またはその変形)は、ホスト102として動作するイニシエータ(開始プログラム)に結合されたSASドライブまたはSATAドライブに対応する。
ホスト102は、OS105、ドライバ107、アプリケーション109、マルチデバイス管理ソフトウェア114の様々な組み合わせといった、ホストソフトウェア115の様々な要素を実行することができるようになっている。点線矢印107Dは、ホストソフトウェア←→入出力装置通信、例えば、SSD101のインスタンスのうち1若しくはそれ以上から/へ、ドライバ107を介したOS105、ドライバ107、および、ドライバ107を介して、またはVFとして直接アプリケーション109のうち任意の1若しくはそれ以上へ/から送られ/受け取られるデータを表す。
OS105は、SSDとインターフェースするための(概念的にはドライバ107によって図示されている)ドライバを有し、かつ/またはそのようなドライバを用いて動作することができるようになっている。Windows(登録商標)の様々なバージョン(95、98、ME、NT、XP、2000、サーバ、Vista、および7など)、Linux(登録商標)の様々なバージョン(Red Hat、Debian、およびUbuntuなど)、ならびにMacOSの様々なバージョン(8、9およびXなど)がOS105の例である。様々な実施形態では、ドライバは、SATA、AHCI、NVM Expressといった標準のインターフェースおよび/またはプロトコルを用いて動作する標準のドライバおよび/または汎用のドライバ(「シュリンクラップされた(市販の)」または「プリインストールされた」ともいう)であり、あるいは、任意選択で、SSD101に特有のコマンドの使用を可能にするようにカスタマイズされており、かつ/またはベンダ特有のものである。あるドライブおよび/またはドライバは、アプリケーションレベルのプログラム、例えば最適化NANDアクセス(Optimized NAND Access)(ONAともいう)または直接NANDアクセス(Direct NAND Access)(DNAともいう)の各技法によるアプリケーション109などが、コマンドをSSD101に直接伝えることを可能にするパススルーモードを有し、カスタマイズされたアプリケーションが、汎用ドライバとでさえもSSD101に特有のコマンドを使用することを可能にする。ONAの技法は、非標準変更子(hints)の使用、ベンダ特有のコマンドの使用、非標準の統計の通信、例えば圧縮可能性に従った実際のNVMの使用、および他の技法のうち1若しくはそれ以上を有する。DNAの技法は、NVMへのマップされていない読み出し、書き込み、および/または消去アクセスを提供する非標準のコマンドまたはベンダ特有の(コマンド)の使用、例えば、入出力装置が通常は行うはずのデータの書式設定をバイパスすることによる、NVMへのより直接的なアクセスを提供する非標準の、またはベンダ特有のコマンドの使用、および他の技法のうち1若しくはそれ以上を有する。ドライバの例は、ONAまたはDNAサポートなしのドライバ、ONA使用可能ドライバ、DNA使用可能ドライバ、ONA/DNA使用可能ドライバである。ドライバの別の例は、ベンダ提供ドライバ、ベンダ開発ドライバ、および/またはベンダ拡張ドライバ、ならびにクライアント提供ドライバ、クライアント開発ドライバ、および/またはクライアント拡張ドライバである。
アプリケーションレベルのプログラムの例は、ONAまたはDNAサポートなしのアプリケーション、ONA使用可能アプリケーション、DNA使用可能アプリケーション、およびONA/DNA使用可能アプリケーションである。点線矢印109Dは、アプリケーション←→入出力装置通信(ドライバによるバイパスや、アプリケーションのためのVFによるバイパスなど)、例えば、OSを仲介として使用するアプリケーションなしでSSDと通信するONA使用可能アプリケーションおよびONA使用可能ドライバなどを表す。点線矢印109Vは、アプリケーション←→入出力装置通信(アプリケーションのためのVFによるバイパスなど)、例えば、OSまたはドライバを仲介として使用するアプリケーションなしでSSDと通信するDNA使用可能アプリケーションおよびDNA使用可能ドライバなどを表す。
NVM199の1若しくはそれ以上の部分が、ある実施形態では、ファームウェア記憶、例えばファームウェア106に使用される。ファームウェア記憶は、1若しくはそれ以上のファームウェアイメージ(またはその部分)を有する。ファームウェアイメージは、例えばSSDコントローラ100のCPUコア172によって実行される、例えばファームウェアの1若しくはそれ以上のイメージを有する。ファームウェアイメージは、別の例では、例えばファームウェア実行時にCPUコアによって参照される、定数、パラメータ値、NVMデバイス情報の1若しくはそれ以上のイメージを有する。ファームウェアのイメージは、例えば、現在のファームウェアイメージおよび0以上の(ファームウェア更新に対して)前のファームウェアイメージに対応する。様々な実施形態では、ファームウェアは、汎用動作モード、標準動作モード、ONA動作モード、および/またはDNA動作モードを提供する。ある実施形態では、ファームウェア動作モードのうち1若しくはそれ以上が、ドライバによって任意選択で伝えられ、かつ/または提供される、鍵または様々なソフトウェア技法によって使用可能とされる(例えば、1若しくはそれ以上のAPIが「ロック解除」される)。
スイッチ/ファブリック/中間コントローラを欠くある実施形態では、SSDは、外部インターフェース110を介して直接ホストに結合される。様々な実施形態では、SSDコントローラ100は、RAIDコントローラといった他のコントローラの1若しくはそれ以上の中間レベルを介してホストに結合される。ある実施形態では、SSD101(またはその変形)は、SASドライブまたはSATAドライブに対応し、スイッチ/ファブリック/中間コントローラ103は、イニシエータにさらに結合されたエキスパンダに対応し、あるいは、スイッチ/ファブリック/中間コントローラ103は、エキスパンダを介してイニシエータに間接的に結合されたブリッジに対応する。ある実施形態では、スイッチ/ファブリック/中間コントローラ103は、1若しくはそれ以上のPCIeスイッチおよび/またはファブリックを有する。
様々な実施形態、例えば、コンピューティングホストとしてのホスト102(コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、および/またはネットブックコンピュータなど)を有する実施形態のあるものでは、コンピューティングホストは、任意選択で、1若しくはそれ以上のローカルサーバおよび/またはリモートサーバ(例えば、任意選択のサーバ118)と(例えば、任意選択の入出力装置/リソースおよび記憶装置/リソース117および任意選択のLAN/WAN119を介して)通信することができるようになっている。通信は、例えば、SSD101要素のうち任意の1若しくはそれ以上のローカルおよび/またはリモートのアクセス、管理、および/または使用を可能にする。ある実施形態では、通信は、全部または一部がイーサネット(登録商標)(Ethernet(登録商標))によるものである。ある実施形態では、通信は、全部または一部がファイバチャネルによるものである。LAN/WAN119は、様々な実施形態では、1若しくはそれ以上のローカル・エリア・ネットワークおよび/または広域ネットワーク、例えば、サーバファーム内のネットワーク、サーバファームを結合するネットワーク、メトロエリアネットワーク、およびインターネットのうち任意の1若しくはそれ以上を表す。
様々な実施形態では、1若しくはそれ以上のNVMと組み合わされたSSDコントローラおよび/またはコンピューティングホスト・フラッシュ・メモリ・コントローラが、USB記憶コンポーネント、CF記憶コンポーネント、MMC記憶コンポーネント、eMMC記憶コンポーネント、サンダーボルト記憶コンポーネント、UFS記憶コンポーネント、SD記憶コンポーネント、メモリスティック記憶コンポーネント、xDピクチャカード記憶コンポーネントといった不揮発性記憶コンポーネントとして実施される。
様々な実施形態では、SSDコントローラ(またはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部またはいずれかの部分、またはその機能が、コントローラが結合されるべきホスト(図1Bのホスト102など)において実施される。様々な実施形態では、SSDコントローラ(若しくはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部またはいずれかの部分、またはその機能が、ハードウェア(論理回路など)、ソフトウェアおよび/若しくはファームウェア(ドライバソフトウェアおよび/若しくはSSD制御ファームウェアなど)、またはそれらの任意の組み合わせによって実施される。例えば、(例えば図1AのECC161および/またはECC−X135と同様の)ECC部の、またはECC部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はSSDコントローラ内のファームウェアとハードウェアとの組み合わせによって実施される。別の例として、(例えば図1Aのリサイクラ151と同様の)リサイクラ部の、またはリサイクラ部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はコンピューティングホスト・フラッシュ・メモリ・コントローラ内のハードウェアによって実施される。
マッピング操作
図2に、LBAのLPN部分のマッピングの実施形態の選択された詳細を図示する。ある実施形態では、読み出し単位は、NVMのページの部分といった、独立に読み出すことのできるNVMの最も細かい粒度である。別の実施形態では、読み出し単位は、検査ビットによって保護されるすべてのデータに(低レベル)誤り訂正符号の検査ビット(冗長性ともいう)を加えたものに対応する。例えば、図1AのECC161は、検査ビットによる、例えばLDPC符号による誤り訂正を実施し、読み出し単位は、LDPC符号化ビットによって保護されるデータビットにLDPC符号を加えたものを実施する符号化ビットに対応する。
ある実施形態では、マップ141は、LBA211のLPN213部分を、例えば(図1Aに図示される)表143によって、LPNのためのマップ情報221にマップする。LPNのためのマップ情報(例えばLPNのためのマップ情報221)をマップエントリともいう。マップ141は、LPNを対応するマップエントリと関連付けるといわれる。様々な実施形態では、マッピングは、1若しくはそれ以上の連想ルックアップ、1若しくはそれ以上の非連想ルックアップ、および/または1若しくはそれ以上の他の技法によるものである。
ある実施形態では、SSDコントローラ100は、潜在的に、かつ/またはアクティブに使用されているLPNごとに1つのマップエントリを維持する。
ある実施形態では、LPNのためのマップ情報221は、それぞれの読み出し単位アドレス223および読み出し単位での長さ225を有する。ある実施形態では、長さおよび/または範囲は、例えば、読み出し単位での長さ225の全部またはいずれかの部分において、例えば、長さを範囲からのオフセットとして記憶することによって、符号化して記憶される。別の実施形態では、第1のLPNは第1のマップエントリと関連付けられており、(第1のLPNと異なるが、第1のLPNによって参照される論理ページと同サイズの論理ページを参照する)第2のLPNは第2のマップエントリと関連付けられており、第1のマップエントリのそれぞれの読み出し単位での長さは、第2のマップエントリのそれぞれの読み出し単位での長さと異なる。
様々な実施形態では、同じ時点において、第1のLPNは第1のマップエントリと関連付けられており、(第1のLPNと異なる)第2のLPNは第2のマップエントリと関連付けられており、第1のマップエントリのそれぞれの読み出し単位アドレスは、第2のマップエントリのそれぞれの読み出し単位アドレスと同じである。別の実施形態では、第1のLPNと関連付けられたデータおよび第2のLPNと関連付けられたデータは、どちらも、NVM199内の同じデバイスの同じ物理ページに記憶されている。
様々な実施形態によれば、読み出し単位アドレス223は、NVM内の開始アドレス、NVM内の終了アドレス、上記のいずれかのオフセット、およびLPN213と関連付けられたNVMの部分を特定するための任意の他の技法のうち1若しくはそれ以上と関連付けられている。
図3に、読み出し単位の量で測った長さを総体として有する、様々な読み出し単位として編成された読み出しデータを生成するための、読み出し単位アドレスのところのNVMへのアクセスの実施形態の選択された詳細を図示する。様々な実施形態によれば、最初の読み出し単位313は、NVMのアドレス空間における最低のアドレスを有する読み出しデータ311内の読み出し単位のうち1つ、読み出し単位のうち固定された1つ、読み出し単位のうち任意の1つ、読み出し単位のうち可変の1つ、および任意の他の技法によって選択される読み出し単位のうち1つのうち1若しくはそれ以上である。様々な実施形態では、SSDコントローラ100は、NVM199にアクセスし、読み出し単位での長さ225によって指定される数以下の数の読み出し単位を読み出すことによって読み出しデータ311を生成することができるようになっている。
図4Aに、(図3の読み出し単位313や読み出し単位315といった)読み出し単位の実施形態の選択された詳細を読み出し単位401Aとして図示する。様々な実施形態および/または使用シナリオにおいて、ヘッダ1 411AからヘッダN 419Aは連続しており、ヘッダの各々によって(例えばそれぞれのオフセットにより)特定されるそれぞれのデータ領域は、ヘッダの最後のものに後に続いて連続している。各データ領域は総体としてデータバイト421Aを形成している。各データ領域は、各ヘッダが記憶される位置順と一致した位置順で記憶される。例えば、読み出し単位の先頭のところの第1のヘッダを考えると、第2のヘッダおよび第3のヘッダは、第1のヘッダのすぐ後に続く。(第1のヘッダ内の第1のオフセットによって特定される)第1のデータ領域は第3のヘッダのすぐ後に続く。(第2のヘッダ内の第2のオフセットによって特定される)第2のデータ領域は第1のデータ領域のすぐ後に続く。同様に、(第3のヘッダ内によって特定される)第3データ領域も第2のデータ領域のすぐ後に続く。
図4Bに、(図3の読み出し単位313や読み出し単位315といった)読み出し単位の別の実施形態の選択された詳細を読み出し単位401Bとして図示する。様々な実施形態および/または使用シナリオにおいて、ヘッダマーカ(HM)410Bは、後に続く連続したヘッダ(ヘッダ1 411B、ヘッダ2 412B...ヘッダN 419B)の数を指示する任意選択の最初のフィールド(例えば1バイトのフィールド)である。データ領域(データバイト421B、データバイト422B...データバイト429B)は、それぞれ、ヘッダ(ヘッダ1 411B、ヘッダ2 412B...ヘッダN 419B)によって特定され、ヘッダが記憶される位置順とは逆の位置順で記憶される。ヘッダは読み出し単位の先頭から開始し、対応するデータ領域は読み出し単位の末尾から開始する。ある実施形態では、データ領域内のデータバイト(例えば、データバイト421B、データバイト422B...データバイト429B)は、前方順(位置順と一致するバイト順)に配置され、別の実施形態では、データバイトは、逆順(位置順に対して反転されたバイト順)に配置される。ある実施形態では、ヘッダマーカが、(例えば図4Aに示すように)ヘッダおよびデータバイトが同じ位置順で記憶されている読み出し単位で使用される。
ある実施形態では、任意選択のパディングバイト431A(または431B)は、特定のLPNと関連付けられたデータの粒度に従ったものである。例えば、ある実施形態では、データバイト421A(またはデータバイト421B、データバイト422B...データバイト429Bの総体)が、ヘッダ1 411AからヘッダN 419Aまで(またはヘッダ1 411B、ヘッダ2 412B...ヘッダN 419B)の最後のヘッダを除くすべてのヘッダと関連付けられたデータを記憶した後で、決まった量、例えば8バイトより少ない残りのスペースを有する場合には、最後のヘッダと関連付けられたLPNのデータは後続の読み出し単位において開始する。別の実施形態では、最後のヘッダ内の特定のオフセット値(例えばすべて1)が、最後のヘッダと関連付けられたLPNのデータが後続の読み出し単位において開始することを指示する。
図5に、いくつかのフィールドを有するヘッダ(例えば、図4Aのヘッダ1 411AからヘッダN 419Aまでや、図4Bのヘッダ1 411Bからヘッダ 419Bまでのいずれか)の実施形態の選択された詳細を図示する。ある実施形態では、ヘッダは固定長である(例えば、各ヘッダは同じバイト数の長さである)。ヘッダ501は、種類511、最終標識513、フラグ515、LPN517、長さ519、およびオフセット521の各フィールドを有する。様々な実施形態によれば、ヘッダ501は、エポック523を有し、かつ/またはエポック523と関連付けられており、かつ/または、任意選択で、かつ/若しくは選択的に、エポック523が前若しくは後に付加されている。種類フィールドは、データバイトのカテゴリを特定する。例えば、種類フィールドは、データバイトのカテゴリが、ホストデータ(論理ページデータなど)またはシステムデータ(マップ情報やチェックポイント情報など)の1つであることを指示する。最終フィールドは、ヘッダがデータバイトの前の最終ヘッダであることを指示する。ヘッダマーカを用いるある実施形態では、最終フィールドは任意選択で割愛される。LPNフィールドは、ヘッダが関連付けられているLPNである。LPNフィールドは、特定のLPNと関連付けられたヘッダのうち特定のヘッダを、例えば、特定のLPNと一致するLPNフィールドを有するヘッダを求めてヘッダをサーチすることによって決定するためのヘッダのパーシングを可能にする。長さフィールドは、データバイトのバイト単位の長さ(例えば、ヘッダ501と関連付けられたデータバイト421Aに何バイトのデータがあるか)である。ある実施形態では、オフセットフィールド内のオフセットは、特定の粒度(8バイトの粒度など)に従って丸められる。エポックフィールドは、同じストリームまたは異なるストリームの他のオブジェクトに関連してヘッダがその一部であるオブジェクトの書き込み順を特定するタイムマーカである。
様々な実施形態では、特定のLPNと関連付けられた一部または全部の情報が、特定のLPNと関連付けられたマップエントリ、特定のLPNと関連付けられたヘッダ、またはその両方に記憶される。例えば、ある実施形態では、長さ519の一部または全部が、ヘッダではなくマップエントリに記憶される。
図6に、複数のNVMデバイス(1若しくはそれ以上のフラッシュダイおよび/またはフラッシュチップなど)のブロック、ページ、および読み出し単位の実施形態の選択された詳細を図示する。
各デバイス(デバイス601、603...および609のうちいずれか1つなど)は、ブロック(デバイス601のブロック631、633...および639;デバイス603のブロック661、663...および669;以下同様など)として編成された記憶を提供する。ある実施形態では、各デバイスは、整数個のブロックを有し、ブロックは消去の最小の量である。各ブロックは、さらに、ページ(ブロック631のページ621、623...および629;ブロック661のページ651、653...および659;以下同様など)を有する。ある実施形態では、各ブロックは整数個のページを有し、ページは書き込みの最小の量である。各ページは、さらに、読み出し単位(ページ621の読み出し単位611、613...および619;ページ651の読み出し単位641、643...および649;以下同様など)を有する。様々な実施形態によれば、以下のうち1若しくはそれ以上である。読み出し単位は読み出しおよび誤り訂正の最小の量である、各ページは整数個の読み出し単位を有する、2つ以上のページの関連付けられたグループは整数個の読み出し単位を有する、および読み出し単位は、任意選択で、かつ/または選択的に、ページ境界にまたがる。デバイスにおける情報の読み出しおよび/または書き込みは、「読み出し単位優先」順や、「ページ優先」順といった順序に従って行われる。図示の読み出し単位の読み出し単位優先順の一例は、読み出し単位611から開始し、その後に641、671、613、643、673などが続き、679で終了する。図示の読み出し単位のページ優先順の一例は、読み出し単位611から開始し、その後に613、619、641、643、649、671、673などが続き、679で終了する。
様々な実施形態では、フラッシュダイ601、603...および609は、図1Aの1若しくはそれ以上の個々のフラッシュダイ194のそれぞれのフラッシュダイに対応する。ある実施形態では、デバイス601、603...および609は、NVM199の全部より小さい部分である。例えば、様々な実施形態では、データはフラッシュダイの複数のグループにまたがって独立にストライピングされ、フラッシュダイのグループの各々に独立にアクセスすることができる。
ある実施形態では、様々なNVM管理機能(読み出し、再利用、消去、プログラミング/書き込み、および/またはNVMの使用に関連した機能のうち1若しくはそれ以上など)が、R−ブロックともいう、論理スライスおよび/またはセクション単位で行われる。様々な実施形態では、R−ブロックは、例えばフラッシュメモリの様々なダイ(例えば、すべてのダイ、全部若しくは一部が故障しているものを除くすべてのダイ、および/またはダイの1若しくはそれ以上の選択されたサブセット)にまたがる論理スライスまたはセクションとして例示される。例えば、R個のフラッシュダイを有し、各フラッシュダイがN個のブロックを有するフラッシュメモリにおいて、各R−ブロックは、合計でN個のR−ブロックでは、全部合わせたフラッシュダイの各々からの第iのブロックである。別の例として、R個のフラッシュダイを有し、各フラッシュダイがN個のブロックを有するフラッシュメモリにおいて、各R−ブロックは、合計でN/2個のR−ブロックでは、フラッシュダイの各々からの第iのブロックおよび第(i+1)のブロックである。さらに別の例として、複数のデュアル・プレーン・デバイスを有するフラッシュメモリにおいて、各R−ブロックは、デュアル・プレーン・デバイスの各々からの第iの偶数ブロックおよび第iの奇数ブロックである。
R−ブロックとしての管理のためのフラッシュ・ダイ・ブロックの他の配置も企図されており、これは、いくつかのブロックが動作不能である場合でさえも、R−ブロックが各ダイからの1つのブロックを有するようにするための仮想ブロックアドレスと物理ブロックアドレスとの間のマッピングを有する。様々な実施形態では、仮想ブロックアドレスと物理ブロックアドレスとの間のマッピングが、R−ブロック内のブロックのうち不良ブロックを置き換えるための予備の(そうでなければ未使用の)ブロックを有するように、各フラッシュダイ内のN個のブロックのうち一部が予備として使用される。
図7に、R−ブロックの実施形態の選択された詳細を図示する。図には、66個のフラッシュダイ(フラッシュダイ710.65...710.0)を有する実施形態が図示されている。ブロック、ページ、およびR−ブロックとしてのブロックの管理が図示されている。各フラッシュダイは、N個のブロック(例えば、フラッシュダイ710.65のブロック710.65B0、ブロック710.65B1...ブロック710.65BB)を有するものとして図示されている。R−ブロックの具体例は、各R−ブロックが、全部合わせたフラッシュダイの各々からの第iのブロックであるものであり、例えば、R−ブロック760.0は、フラッシュダイ710.65からのブロック710.65B0、フラッシュダイ710.64からのブロック0(明確に図示されていない)、および以下同様に、フラッシュダイ710.0のブロック710.0B0までである。よって、合計でN個のR−ブロック(R−ブロック760.0、R−ブロック760.1...R−ブロック760.R)がある。R−ブロックの別の具体例は、各R−ブロックが、全部合わせたフラッシュダイの各々からの第iのブロックおよび第(i+1)のブロックであるものである(例えば、フラッシュダイ710.65からのブロック710.65B0およびブロック710.65B1、フラッシュダイ710.64からのブロック0およびブロック1、および以下同様に、フラッシュダイ710.0からのブロック710.0B0およびブロック710.0B1まで)。よって、各フラッシュダイにN個のブロックがある場合には、N/2個のR−ブロックがある。
ブロックが、R−ブロックを形成することの一部として、対で、または他の関連付けられたグループとして扱われる様々な実施形態では、ブロックの関連付けられたグループの各ブロックからのそれぞれのページも、例えば、書き込み、より大きいマルチブロックページのための単位として扱われる。例えば、偶数ブロックおよび奇数ブロックを有する様々なデュアルプレーンの実施形態では、偶数ブロックの特定の1つの第1のページおよび奇数ブロックの関連付けられた1つの第1のページが、書き込みのための単位として、また任意選択で、かつ/または選択的に、読み出しのための単位として扱われる。同様に、特定の偶数ブロックの第2のページおよび関連付けられた奇数ブロックの第2のページも単位として扱われる。様々な実施形態によれば、本明細書で使用するNVMのページは、NVMの単一のページ、NVMのマルチブロックページ、任意選択で、かつ/または選択的に、読み出しのための1若しくはそれ以上の個々のページとして扱われる書き込みのためのNVMのマルチブロックページ、およびNVMのページの任意の他のグループ化または関連付けのうち1若しくはそれ以上をいう。
ある実施形態では、例えば、故障した(例えば不良の)ブロックのスキップなどが原因で、すべてのR−ブロックが同じサイズではない。例えば、ブロック710.0B0が不良であり、使用できない場合には、R−ブロック760.0はR−ブロック760.1より1少ないブロックを有する。
ある実施形態では、各R−ブロックは、R−ブロックヘッダ、例えば特定の形のヘッダ501を有し、種類フィールドは(データの種類などではなく)R−ブロックの種類を指定する。別の実施形態では、R−ブロックヘッダは、R−ブロック内の複数のブロックで、例えば、R−ブロック内のブロックの各々の第1のページで繰り返される。様々な実施形態によれば、R−ブロックヘッダは、R−ブロックの種類、R−ブロックのバンド、R−ブロックの順序番号、前のR−ブロック番号、および他の情報のうち1若しくはそれ以上を有する。R−ブロックの種類は、R−ブロックに含まれる情報の種類、例えば、ホストデータ情報、マップ情報、チェックポイント情報を指示する。R−ブロックのバンドは、複数のバンドのうちどのバンドがR−ブロックを有するか指定する。例えば、R−ブロックのバンドは、ホット・データ・バンド、コールド・データ・バンド、マップバンド、またはチェックポイントバンドのうち1つを指定する。R−ブロックの順序番号は、使用されるR−ブロックごとに1回増分され、R−ブロック作成の順序付けを提供する。ある使用シナリオでは、R−ブロックの順序番号はバンドごとであり、別の使用シナリオでは、R−ブロックの順序番号はグローバルである。前のR−ブロック番号は各バンドのうち所与のバンド内のR−ブロックが逆の(例えば、時間を遡る)順に相互にリンクされることを可能にする。
ある実施形態では、回復は、R−ブロックの各々のR−ブロックヘッダを決定すること、およびR−ブロックヘッダの内容を使用して、バンドの各々の最後の(最も新しく書き込まれた)R−ブロックを決定することを有する(例えば、これらのことから開始する)。
自己ジャーナリングおよび階層的整合性
自己ジャーナリングの一例は、オブジェクトが、もっぱらオブジェクト自体の内部にオブジェクトを回復するのに十分な情報を有する(例えば、LBAをそのLBAが対応するLBと共に記憶している)ときである。階層的整合性の一例は、構造化された別のデータのバージョンを調べることによりデータ構造のどのバージョンを使用すべきか決定することである。例えば、特定のタイムマーカによって特定されるデータバージョンは、特定のタイムマーカによって特定されるマップバージョンよりも優先され、特定のタイムマーカによって特定されるマップバージョンは、さらに、特定のタイムマーカによって特定されるチェック・ポイント・バージョンよりも優先される。自己ジャーナリングの技法を階層的整合性の技法と併用することにより、ある実施形態および/または使用シナリオでは、これらの技法を使用しない場合よりも効率のよいマップ再構築および/または低待ち時間のFUAハンドシェークが可能になる。
様々な実施形態では、マップ(LBAから読み出し単位への、例えば、図1Aのマップ141の全部または任意の部分)は、1レベル、2レベル、またはマルチレベルのマップであり、表、CAM、ハッシュ表、探索木、キー(LBAなど)を値(読み出し単位アドレスなど)と関連付ける任意の構造、またはそれらの任意の組み合わせのうち1若しくはそれ以上として実施される。ある実施形態では、マップは、頻繁にアクセスされるエントリおよび/またはダーティエントリを保持するためのキャッシュを有する。マップキャッシュは、表、CAM、ハッシュ表、探索木、キー(LBAなど)を値(読み出し単位アドレスなど)と関連付ける任意の構造、またはそれらの任意の組み合わせのうち1若しくはそれ以上として実施される。
様々な実施形態では、書き込みデータは、論理ページ、NVMのページ、単一の読み出し単位として、または上記のうち1若しくはそれ以上として、各LBAと関連付けられたマップエントリに長さを記憶することにより記憶される。ホストは(LBAによってアドレス指定された)LBの最も細かい粒度で書き込みデータを提供する。様々な実施形態では、ホストからのLBは、任意選択で、かつ/または選択的に圧縮され、1未満の読み出し単位、1つの読み出し単位、1より大の読み出し単位、非整数個の読み出し単位、または何らかの他のサイズを消費する。
別の実施形態では、ホストは書き込みデータを、LBの粒度よりも細かい粒度、例えばセクタ粒度で提供する。例えば、1セクタは512Bであり、各LBは8個の連続したセクタを有する。LBのサイズより小さいデータサイズを有する、または特定のLBの一部分だけを書き込ませるアラインメントを有するホストからの書き込み操作は、読み出し・変更・書き込み操作として処理される。
ある実施形態では、読み出し単位を例に取ると、マップは、特定のLBAを、それぞれの読み出し単位アドレス、ならびに、例えば読み出し単位でのそれぞれの長さおよび/または範囲と関連付ける(例えば、LBA211は、図2に示すように、マップ141によって読み出し単位アドレス223および読み出し単位での長さ225にマップされ、読み出し単位での長さ225は、特定のLBAのデータのサイズとしての長さ、およびデータを獲得するために読み出すべき読み出し単位の数としての範囲を符号化している)。特定のLBAによって参照される論理ブロック(LB)は、それぞれの読み出し単位アドレスによってアドレス指定されるNVM内の特定の読み出し単位において開始し、それぞれの範囲によって与えられる読み出し単位の数にまたがって記憶されている。例えば、あるLBの範囲は、LBが特定の読み出し単位に含まれることを指示する。様々な実施形態および/または実施態様において、特定の読み出し単位は、他のLBを全く記憶せず、他のLBの一部を記憶し、または1若しくはそれ以上の他のLBを記憶している。
特定の読み出し単位は、特定の読み出し単位で開始する1若しくはそれ以上のLBの各々についてのヘッダを有する(例えば、図4Aのヘッダ1 411AからヘッダN 419Aまでや、図4Bのヘッダ1 411B、ヘッダ2 412B...ヘッダN 419N)。ヘッダの各々は、特定の読み出し単位に記憶されているLBのそれぞれのLBAを有する(例えば、図5のヘッダ501のLPN517および/またはオフセット521)。例えば、特定のLBAと関連付けられたヘッダのうち特定の1つが特定のLBAを有する。様々な実施形態では、ヘッダは、LBが見つかる読み出し単位内のオフセット、LBで使用された圧縮の種類の指示、バイト単位で記憶されたLBAの長さ、他の情報といった他の情報を有する。
例えば、データ編成および/または順序付け、LBの先頭を保持しない読み出し単位内のヘッダの存在(または非存在)、ヘッダが読み出し単位の先頭または末尾を指示するかどうか、ならびにヘッダが、それらのヘッダがそれぞれ対応するデータの最初の読み出し単位または最後の読み出し単位に記憶されているかどうかに関して、ヘッダおよびデータを読み出し単位に記憶するための様々な技法のうち1若しくはそれ以上を使用した様々な実施形態が企図されている。
自己ジャーナリング属性の一例は、読み出し単位に記憶されている1若しくはそれ以上のそれぞれのLBの(例えば、読み出し単位の1若しくはそれ以上のヘッダにおける)1若しくはそれ以上のそれぞれのLBAの前述の記憶である。自己ジャーナリング属性は、読み出し単位がフラッシュメモリに書き込まれた後の(例えばヘッダからの)LBAおよび対応するLBデータのためのマップ情報の回復を可能にする。というのは、読み出し単位だけの処理がマップ情報の回復を可能にするからである。
様々な実施形態および/または使用シナリオにおいて、回復のための様々な技法が(例えば、予期しない電源喪失、誤動作、またはNVMへのデータの記憶を中断させ、かつ/または妨げる他のイベントに応答して)使用される。例えば、チェックポイントが、誤動作からの回復を全部または一部可能にするための情報を周期的に書き出すことによって維持される。ある実施形態では、チェックポイントは複数のエントリを有し、各エントリは、アクティビティのストリーム内のある点までの回復情報を不揮発性記憶システム(SSDのNVMなど)に提供する。様々な実施形態において、様々なチェックポイントエントリは異なる種類の情報を有し、例えば、異なるチェックポイント情報が異なるときに記録される。
ある実施形態では、ローリングチェックポイントが書き込まれ、複数のチェックポイントエントリが、各々、1若しくはそれ以上のデータ構造の少なくとも一部分(例えば、第1レベルマップの一部分および/またはR−ブロック使用カウント表の全部)を有する。ローリングチェックポイントは、ある期間にわたるチェックポイント情報を保存する(性能、NVMへの余分な書き込み、およびNVMの管理オーバーヘッドの)コストを分散させる。ある実施形態では、ローリングチェックポイントは、チェックポイントの作成時にチェックポイント設定されているデータ構造の一部分だけをロックし、データ構造の残りの部分を、ロックされず、よって、非チェックポイント用に使用できる状態のままにすることを可能にする。
例えば、様々な実施形態では、(必ずしも全部とは限らないが)チェックポイントエントリのうち少なくとも一部は、(空きR−ブロックが使用されるべき順に記憶された)空きR−ブロックのリストを有する。チェックポイントは、回復時に、(a)チェックポイントをNVM内で位置特定することができ、(b)最も遅いチェックポイントを決定することができ、(c)ある実施形態では、チェックポイントを、時間経過順に、かつ/または逆時間順に再生できるように書き込まれる。例えば、チェックポイントは、NVM内の特定の位置に、FIFO順で(遅いエントリが早いエントリの後になるように)書き込まれる。最終的には、チェックポイントFIFOへの書き込みが「終了し」、最も古いエントリが消去され、かつ/または若いエントリで上書きされる。チェックポイントFIFOへ書き込むことは、任意選択で、(例えば、FIFO内の最も若いエントリと最も古いエントリとを区別するために)チェックポイントエントリのそれぞれの経過時間を決定することができるようにタイムスタンプと一緒に書き込むことを有する。様々な他の実施形態では、FIFO以外のデータ構造(ピンポン構造、表、チェックポイントエントリを記憶することが可能な他のデータ構造など)がチェックポイントを記憶するのに使用される。ある実施形態では、チェックポイントFIFOは先入れ先出しデータ構造であるが、他の実施形態では、チェックポイントFIFOは、他の構造、例えば、待ち行列、ストリーム、所定の順序で書き込まれたランダムにアクセスできる構造を用いて実施される。
ある実施形態では、データは、1若しくはそれ以上のデータストリームに書き込まれる。ホストが書き込みデータを提供する際には、たとえデータが非連続領域のためのもの(LBAの無関係なグループなど)でも、書き込みデータはR−ブロックへ集約される。書き込みデータのデータストリームはホスト書き込みアクティビティのログと同様のものである。というのは、(必ずしも、すべての実施形態において、同一の順序で、データがホストから到来するとは限らないが)データストリームがホスト書き込みのデータを記録するからである。様々な実施形態では、1若しくはそれ以上のデータストリームがある。例えば、ある実施形態では、再利用アクティビティ(全部および/または一部が上書きされているR−ブロックから空きスペースを取り戻すこと)は、再利用データストリームを対象とし、ホスト書き込みアクティビティは、再利用データストリームとは別個のホストデータストリームを対象とする。別の実施形態では、ホストデータが第1のR−ブロックに書き込まれ、同時に発生する再利用データが、第2の異なるR−ブロックに書き込まれる。再利用される(コールド)データを新しく書き込まれる(ホット)データと分離することは、ある使用シナリオでは好都合である。さらに別の実施形態では、ホストデータの一部、例えば、コールドであると決定されたホストデータの部分が、第2のR−ブロックに選択的に書き込まれる。
様々な実施形態によれば、チェックポイントエントリが、時間周期的に、例えば、ホストコマンドに応答して、かつ/または指定された量のアクティビティ(指定された量のホスト書き込みデータ、指定された数のマップ参照、および/または指定された量のダーティマップ情報など)に応答して作成される。別の実施形態では、異なる構造が、異なるときに、かつ/または異なる規則に従ってチェックポイント設定される。
様々な実施形態では、チェックポイントは、例えば、第1レベルマップ、マップキャッシュ、R−ブロック使用表、消去カウントといったR−ブロック統計、R−ブロック他に基づいて累積された誤りカウントや読み出し妨害情報といった他の統計、フリーリスト、ならびに不揮発性記憶システムにおける他の状態情報および/または使用の表といった1若しくはそれ以上のデータ構造の一部または全部を有する。
ある実施形態では、チェックポイントエントリのうち1若しくはそれ以上に全部または一部が含まれるデータ構造が回復プロセスで使用される。別の実施形態では、例えばローリングチェックポイントを用いて、複数のチェックポイントエントリが、第1レベルマップといったデータ構造を回復するのに使用される。
一例では、回復時に、チェックポイントFIFOを使用して、チェックポイントFIFOのチェックポイントのエントリに保存された空きR−ブロックの1若しくはそれ以上のリストのうち最も遅いリストが見つけられる。次いで、R−ブロックのうちどれがすでに使用されているか(使用されているR−ブロックは消去状態にはないため決定可能である)を知るために、空きR−ブロックの最も遅いリスト内のR−ブロックが読み出される。ある使用シナリオでは、R−ブロックのわずかな部分が誤動作よりも先に書き込まれたものであり、その書き込まれたR−ブロックのわずかな部分を回復することができる。空きR−ブロックの最も遅いリスト内のR−ブロック内の読み出し単位が、読み出し単位内のヘッダを見つけるためにスキャンされる。ヘッダは、読み出し単位に記憶されたLBを指示するLBAを有する。(NVMのどこにLBAのためのデータが記憶されているか決定することを可能にする)マップが、LBAのいずれかがマップから欠落しているかどうか決定するために検査される。例えば、LBAのうち1つについてのマップのエントリが、LBAが見つかった読み出し単位よりも古い読み出し単位を参照している場合である。マップの情報が古くなっている場合、マップは更新される。ある使用シナリオでは、例えば、LBAがチェックポイント期間の間に複数回書き込まれたときに、同じLBAが最初の読み出し単位で見つかり、続いて第2の読み出し単位で見つかる。よって、この例では、データ読み出し単位が、概念的には、回復時に順番に処理され、場合によっては、同じLBAが読み出し単位内のヘッダで複数回見つかる場合には、マップ内の同じエントリが回復時に複数回更新される。別の例では、データ読み出し単位が、概念的には、(前方へなど順番にではなく)逆方向に処理され、同じLBAへの反復書き込みが廃棄される。
様々な技法を使用して、マップとNVMに書き込まれた書き込みデータとが同期される。技法のあるものは1レベルマップを用いた実施形態に適用することができ、技法の別のものは2レベルまたはマルチレベルマップを用いた実施形態に適用することができる。
ある実施形態では、マップは、マップのうち一部または全部をチェックポイントエントリに書き込むことによって周期的にチェックポイント設定される。ある実施形態では、マップ全体がチェックポイントFIFOに書き込まれる。別の実施形態では、マップは、NVM内の特定のピンポン位置に(また任意選択で、タイムスタンプと共に)書き込まれる。さらに別の実施形態では、マップがNVMのどこに書き込まれているか指示するNVM内のアドレスがチェックポイントFIFOに書き込まれる。さらに別の実施形態では、マップは、マップ全体が複数のチェックポイントエントリにまたがってチェックポイント設定されるように(ローリングチェックポイントなど)一度に一部分ずつチェックポイント設定される。ある使用シナリオでは、一度に一部分ずつマップをチェックポイント設定することにより、ホスト書き込みコマンドといったいくつかのコマンドの待ち時間の上限を低減することが可能になる。
ある実施形態では、整合性の問題を解決するために、階層的整合性書き込み順序付けを課して、整合性、例えば、書き込みデータが、常に、対応する更新されたマップエントリがNVMに書き込まれるよりも先にNVMに書き込まれることが保証される。例えば、ある実施形態では、マップエントリは、書き込みデータがNVMにコミットされた後で初めて更新され、書き込みデータは、書き込みデータが関連付けられているLBAを記録したヘッダを有する。その間に、マップへの待ち状態の更新が、マップキャッシュといった別の構造において保持される。ある実施形態では、マップキャッシュは、エントリが「待ち状態」である(例えば、NVMへの書き込みデータの書き込みが完了するのを待っている)かどうか指示するマップキャッシュ内のエントリごとの情報を有する。チェックポイント設定されているマップのバージョンの更新を、書き込みデータがNVMに書き込まれるまで遅延させることによって、マップのチェックポイントは常に書き込みデータよりも古いことになり、マップと書き込みデータとの整合性が明確に定義される。というのは、書き込みデータヘッダからのLBAマッピング情報が、マップからの競合する(より古い)情報よりも優先されるからである。
階層的整合性書き込み順序付けを使用することにより、(NVMに記憶され、回復時に復元される)マップは、常に、データ読み出し単位よりも早い情報だけを有することになる。回復されたマップは、常に、回復されたデータ読み出し単位からのデータよりも古く、(例えば、チェックポイントFIFO内の空きR−ブロックのリストから決定される)回復されたデータ読み出し単位内のヘッダがマップを更新するのに使用される。
ある2レベルマップ実施形態では、第2レベル・マップ・エントリが周期的にNVMに記憶される。(複数の第2レベル・マップ・エントリを有する)第2レベル・マップ・ページが第1レベルマップインデックスを有するマップヘッダを有し、第1レベルマップインデックスと関連付けられたFLMのエントリが第2レベル・マップ・ページを指し示す。第1レベルマップインデックスは、第2レベル・マップ・ページのための自己ジャーナリング属性を提供する。階層的整合性書き込み順序付けは、書き込みデータがまずNVMに書き込まれ、書き込みデータと関連付けられた第2レベル・マップ・エントリのうち特定の1つを有する第2レベル・マップ・ページが、書き込みデータの書き込みが完了した後で初めてNVMに書き込まれ、第2レベル・マップ・ページを指し示す第1レベル・マップ・エントリが、第2レベル・マップ・ページ書き込みが完了した後で初めて(第2レベル・マップ・ページの更新された位置を参照するように)更新されるように拡張適用される。空きR−ブロックのリストは、任意選択で、かつ/または選択的に、第2レベル・マップ・エントリならびに書き込みデータを記憶するのに使用されたR−ブロックを有する。ある実施形態では、空きR−ブロックのあるリストが第2レベル・マップ・エントリに使用され、空きR−ブロックの別のリストがデータに使用され、R−ブロックが2つのリスト間で隔離される。2つのリストは、データ読み出し単位から1レベルマップを回復するのと同様に、第2レベル・マップ・ページ内のヘッダから第1レベルマップを回復することを可能にする。よって、第1レベルマップのチェックポイントは、常に、復元された第2レベル・マップ・ページよりも古い(また第1レベルマップは、復元された第2レベル・マップ・ページ内のヘッダを使用して更新される)。同様に、第2レベル・マップ・ページは書き込みデータよりも古く、第2レベル・マップ・ページは、復元されたデータ読み出し単位内のヘッダを使用して更新される。
ある実施形態、例えば、ローリングチェックポイントを用いるある実施形態では、追加のジャーナルヘッダが、チェックポイントイベントを記録するために、データ読み出し単位に、かつ/またはマップ読み出し単位に追加される。ジャーナルヘッダはイベントを記録する情報を有し、この情報は回復を支援するのに使用される。例えば、ジャーナルヘッダは、マップの一部分がデータストリーム内のその時点まで整合している(例えばチェックポイント設定されている)ことを指示するためにデータ読み出し単位に書き込まれる。
ジャーナルヘッダは、ある実施形態では、データストリームをどれほど遡って回復プロセスを開始すべきか指示する。例えば、ローリングチェックポイントを用いて、1若しくはそれ以上のデータ構造のチェックポイント情報を割愛するいくつかのチェックポイントエントリを用いる別の実施形態では、回復は、すべてのデータ構造が完全にチェックポイント設定されている最も遅い時点に対応する情報を使用して処理を開始する。例えば、マップがN個のチェックポイントエントリにまたがってN個の部分としてチェックポイント設定されている場合には、回復は、その後にマップのN個の部分すべてがチェックポイント設定された最も遅い時点に対応するデータページ内の位置(「最も遠いバックポイント」という)から開始する。
ある実施形態では、ジャーナルヘッダは、ある特定の点において整合性を有するデータ構造の部分を指示する。上記のマップ回復の例を続けると、最も遠いバックポイントでは、マップのN個の部分のうち最初の部分がチェックポイント設定されている(また、最も遠いバックポイントの定義によれば、データストリーム内の後の時点ではチェックポイント設定されない)。マップの最初の部分の後に続く、マップの最初の部分に影響を及ぼすすべての更新がマップに適用される。しかし、マップの他の部分は、データストリーム内の後続のデータがチェックポイントにおいて記録されていないことを指示する対応するジャーナルヘッダに遭遇した後に初めて更新される。
ある実施形態では、階層的に整合性を有するデータおよび/またはデータ構造の時間順序付けが、タイムスタンプおよび/または順序番号によって決定される。すなわち、書き込みデータがNVMに書き込まれたのが、対応する更新されたマップエントリよりも後かそれとも先かの決定は、タイムスタンプおよび/または順序番号の比較によるものである。タイムスタンプおよび/または順序番号は、NVMへの物理的書き込みが行われる順序に対して不変であるストリーム間での更新の順序の仕様を提供するために、例えば、書き込み/再利用データ、マップ情報、および/またはチェックポイントエントリを保持するそれぞれのストリームにおいて任意選択で、かつ/または選択的に出力される。別の実施形態では、タイムスタンプおよび/または順序番号は、エポックヘッダと呼ばれる特殊なヘッダとしてストリームにおいて出力される。各エポックヘッダは、エポックと呼ばれる現在のタイムスタンプおよび/または順序番号(図5のエポック523など)を有する。
様々な実施形態では、エポックは、データ書き込みごとに進められ、かつ/または増分され、データ書き込みが行われた順序を一意に決定する。別の実施形態では、データ書き込みのうち特定のデータ書き込みから生じるデータ構造更新に、特定のデータ書き込みのエポックが割り当てられる。データ構造更新が特定のデータ書き込みのエポックと共にストリームに書き込まれるときに、特定のデータ書き込みおよびデータ構造更新の順序付けが、特定のデータ書き込みおよびデータ構造更新がNVMに書き込まれる順序とは独立に、特定のデータ書き込みのエポックおよびデータ構造更新のエポックを指定するそれぞれのエポックヘッダから決定される。
様々な実施形態によれば、エポックヘッダは、データ書き込みごとに1回、あるデータ書き込みと共にのみ、データストリームにおいて周期的に、NVMの1ページ当たり少なくとも1回、および1バンドスイッチあたり少なくとも1回、のうち1若しくはそれ以上として出力される。単一のデータバンドを用いた第1の例では、エポックヘッダは、データストリームのデータで書き込まれるNVMの1ページ当たり少なくとも1回出力される。データストリームのページごとにエポックヘッダを設けることは、複数のページを読み取らなくてもページ内のデータのエポックを決定することを可能にする。複数のデータバンド、例えばホットバンドとコールドバンドを用いた第2の例では、エポックヘッダは、バンドと関係なく書き込まれるNVMの1ページ当たり少なくとも1回出力され、さらに、直前のデータ書き込みが、バンドのうち、現在のデータ書き込みとは異なるバンドへのものであったとき(バンドスイッチという)にも必ず出力される。バンドスイッチにつき少なくとも1回エポックヘッダを設けることは、すべてのデータ書き込みがそれぞれのエポックヘッダを保持しているとは限らない場合でさえも各データ書き込みのエポックを決定することを可能にする。さらに、バンドスイッチにつき少なくとも1回エポックヘッダを設けることは、2つ以上のバンド、例えばホットバンドとコールドバンドを、バンド間で整合性を有する書き込みの順序付けを提供することによって単一のストリームとして扱うことを可能にする。
ある実施形態では、複数のエポックシーケンスがある。第1の例では、別々のエポックシーケンスが新しく書き込まれたデータ対再利用データに使用される。関連付けられたデータ書き込みに応じて、データ構造更新に、エポックシーケンスのうち1若しくはそれ以上からのエポックが割り当てられる。第2の例では、NVMへのデータ書き込みに(例えば第1のエポックシーケンスからの)第1のエポックでタイムスタンプが設定され、NVMへの第2レベルマップ書き込みには、(例えば第2のエポックシーケンスからの)第2のエポックでタイムスタンプが設定される。第2レベルマップへの更新には、関連付けられたデータ書き込みに対応する第1のエポック値が割り当てられ、第1レベルマップへの更新には、関連付けられた第2レベルマップ書き込みに対応する第2のエポック値が割り当てられる。マップストリームは、任意選択で、かつ/または選択的に、2種類のエポックヘッダを有し、1つは第1のエポック値のヘッダであり、1つは第2のエポック値のヘッダである。
上記はマップの回復を説明しているが、他のデータ構造も、自己ジャーナリングおよび階層的整合性を使用して同様に回復することができる。例えば、R−ブロック使用カウント表も同様にチェックポイント設定することができ、回復することができる。ある実施形態では、R−ブロック使用カウントは、各R−ブロック内のアクティブな(上書きされていない)LBの数のカウントを有する。
自己ジャーナリング属性および階層的整合性属性は、キャッシュに入れられた(一部の)データ構造にも適用できる。例えば、マップキャッシュがマップのダーティエントリを有する。ある実施形態では、マップ・キャッシュ・エントリの各々は、複数の第2レベル・マップ・ページのうちの1つに対応し、第2レベル・マップ・ページの各々は複数の第2レベル・マップ・エントリを有し、マップ・キャッシュ・エントリのうち特定のマップ・キャッシュ・エントリは、特定のマップ・キャッシュ・エントリ内の第2レベル・マップ・エントリのいずれかがダーティである場合にはダーティである。マップキャッシュは、階層的整合性に従って、(全体で、ローリングチェックポイント方式で、またはマップキャッシュのダーティエントリを周期的にフラッシュすることによって)チェックポイントエントリに周期的に記録される。ある実施形態では、階層的整合性が、マップエントリごとに守られる。例を続けて、マップキャッシュの一部分がチェックポイントエントリに保存されるときには、完了された書き込みデータ(例えばNVMにコミットされることによって不揮発的に記憶されている書き込みデータ)に対応するマップエントリだけがチェックポイント設定される。例えば、マップキャッシュ内のエントリが更新され、対応するデータがまだ不揮発的に記憶されていない場合、更新されたマップエントリのチェックポイント設定は、対応するデータが不揮発的に記憶されるまで延期される。
ある実施形態では、マップキャッシュが、1エントリあたり2つの読み出し単位アドレス、例えば、階層的に整合性を有する読み出し単位アドレスと、待ち状態の読み出し単位アドレスを有する。不揮発性記憶システムへの読み出しアクセスは、待ち状態の読み出し単位アドレスを使用して(例えば、NVMへの書き込みを保留にする読み出し単位アドレス指定によってアクセスされるデータキャッシュに記憶されている)最も遅いデータを位置特定することができるようになっている。しかし、チェックポイント操作は、階層的に整合性を有する読み出し単位アドレスを使用することができるようになっている。書き込みデータがNVMに書き込まれるときに、影響を受けるマップ・キャッシュ・エントリ内の対応する待ち状態のアドレスは、階層的に整合性を有するアドレスにコピーされる(次いで、チェックポイント設置に利用することができる)。
様々な実施形態では、マップキャッシュの複数のエントリの各々は複数の第2レベル・マップ・ページのうちの1つに対応し、第2レベル・マップ・ページの各々は複数の第2レベル・マップ・エントリを有し、マップ・キャッシュ・エントリのうち特定のマップ・キャッシュ・エントリは、その特定のマップ・キャッシュ・エントリ内の第2レベル・マップ・エントリのいずれかがダーティである場合には、ダーティである。様々な実施形態によれば、マップキャッシュのダーティエントリの各々は、ダーティエントリの最も古い更新のエポックを指定するタイムスタンプと関連付けられている、ダーティエントリの最も新しい更新のエポックを指定するタイムスタンプと関連付けられている、および現在のデータ書き込みのエポックと関連付けられている、のうち1若しくはそれ以上である。ある実施形態では、ダーティエントリの各々は、ダーティエントリの最も古い更新のエポックを指定する関連付けられたタイムスタンプが、現在のデータ書き込みのエポックよりも決定された量を超えて後になるときよりも先にフラッシュされる。ある実施形態では、ダーティエントリのうちフラッシュされたダーティエントリと共にNVMに記憶されたタイムスタンプは、フラッシュされたダーティエントリと関連付けられたタイムスタンプのうち任意の1若しくはそれ以上である。
例えば、別々の階層的に整合性を有するマップキャッシュと待ち状態のマップキャッシュを使用し、例えば、待ち状態のマップキャッシュ内のエントリが、NVMに書き込まれる際に、階層的に整合性を有するマップキャッシュにコピーされるなど、他の方式も可能である。
ある実施形態では、LBAを動的に(すなわち、LBAが書き込まれているときに)マップするのに使用されるマップキャッシュといった動的構造が、チェックポイント設定された形でNVMに存在するにすぎない。例えば、これらの構造は、マップ自体と異なり、永続記憶を持たない。例えば、ある実施形態では、マップキャッシュ内のダーティエントリだけがチェックポイント設定され、マップキャッシュが長期間にわたってダーティエントリを保持しなかった(かつ、チェックポイントFIFOが終了している)場合には、マップキャッシュのためのチェックポイントが存在しない。動的構造は(必要なときに)チェックポイントに存在するため、動的構造は誤動作後の回復時に再構築可能でもある。
特定の実施形態
様々な特定の実施形態が、不揮発性記憶システムにおける自己ジャーナリングおよび階層的整合性に適用でき、かつ/またはそれらに関連する、1若しくはそれ以上の技法を実施する。2レベルマッピング方式は、マップストリームおよびチェックポイントストリームへの書き込みによって管理され、1若しくはそれ以上のデータストリームへのホストおよび再利用データ書き込みを伴う。2レベルマッピング方式のFLM要素およびSLM要素の復元は、チェックポイントストリームからの情報を使用し、続いてマップストリームからの情報を使用し、次いで、データストリームからの情報を使用する。復元時に、データストリームはマップストリームよりも優先され、マップストリームはチェックポイントストリームよりも優先される。
図8に、LBAからNVMへの位置マッピング800として、FLMと1若しくはそれ以上のSLMページとを有する2レベルマップによる、LBAからNVMに記憶されたLBへのマッピングの実施形態の選択された詳細を図示する。2レベルマップは、(概念的には単一の要素SLMページ820として図示されている)1若しくはそれ以上の第2レベル要素に結合された第1レベル要素(FLM810)によって実施される。FLMは複数のエントリ(SLMページ/長さ810.1...SLMページ/長さ810.M)を有する。FLMのエントリの各々はSLMページのうちの1つ(例えばSLMページ820)を指し示す。SLMページは複数のエントリ(LBページ/長さ820.1...LBページ/長さ820.N)を有する。SLMページのエントリの各々は、データが開始するNVM内の位置(例えば、少なくとも、LBAについてのホスト書き込みデータの先頭を記憶している読み出し単位など)を指し示す。除算器(整数除算器822)は、例えば、プログラマブル・ハードウェア・レジスタ(SLMエントリ/SLMページ(CSR)823)からパラメータを受け取って、入ってくるLBAを除算して、どのFLMエントリを選択すべきか、および(選択されたFLMエントリによって指し示されたSLMページ内の)どのSLMエントリを選択すべきか決定する。除算器は、FLMとSLMページとに結合されている。
様々な実施形態では、図は、図1Aのマップ141および/若しくは表143の、またはそれらに関連した選択された詳細を示す。例えば、ある実施形態では、マップ141および/または表143は、例えば、FLMの1若しくはそれ以上のエントリおよび/またはSLMの1若しくはそれ以上のエントリといったマッピング情報の1若しくはそれ以上のキャッシュを実施する。FLMおよび/またはSLMの全体イメージは、NVM(図1AのNVM199など)の一部分に維持され、例えば、キャッシュが前にキャッシュされたFLMおよび/またはSLMエントリを置き換えるときに更新される。ある実施形態では、FLMおよび/またはSLMの全体イメージは、ローリングチェックポイントまたはピンポンチェックポイントによって実施され、チェックポイントの各々はそれぞれの全体マップイメージの一部分である。
動作に際して、LBA821が整数除算器822に提示される。除算器はLBAを、SLMエントリ/SLMページ(CSR)823によって提供される1SLMページあたりのSLMエントリの数で除算し、結果として商(FLMインデックス822Q)および余り(SLMページインデックス822R)が得られる。商はFLMエントリのうちの1つを選択するのに使用され、選択されたFLMエントリのページフィールドが読み出される(SLMポインタ810S)。ページフィールドはSLMページのうちの1つ(SLMページ820など)を選択するのに使用され、余りは、選択されたSLMページのエントリを(例えばオフセットとして)選択するのに使用される。選択されたSLMページエントリのページフィールドが、少なくとも、提示されたLBAに対応するLBの先頭が記憶されている特定のNVM内の位置、例えば、特定の読み出し単位を選択するのに使用される(LBポインタ820L)。様々な実施形態では、LBポインタは、NVMの読み出し単位のアドレス(図2の読み出し単位アドレス223など)を有する。ある実施形態では、SLMエントリの各々は、LBのデータのすべてを獲得するのに何個の読み出し単位を読み出すべきか、および/または読み出し単位内のどこでLBのデータが始まるか(図2の読み出し単位での長さ225など)を指示する長さフィールド(符号化サイズおよび/または範囲など)を有する。ある実施形態では、FLMエントリの各々は、FLMエントリのページフィールドによって指定されたそれぞれのSLMエントリのすべてを獲得するのに何個の読み出し単位を読み出すべきか(図2の読み出し単位での長さ225など)を指示する長さフィールド(符号化サイズおよび/または範囲など)を有する。
様々な実施形態では、商は、キャッシュ、例えば、SLMページのフル・アソシアティブ・キャッシュにアクセスするためのキーとして使用される。キャッシュに特定のSLMページについてのヒットがある場合には、特定のSLMページの最も遅いコピーがNVMにアクセスせずにキャッシュ内で見つかる。複数のSLMページへの高速アクセスを提供することにより、ある実施形態および/または使用シナリオでは、NVMへの順次データアクセスの複数の独立ストリームのより効率的な処理(例えば、LBAの第1の領域への順次データアクセスの第1のストリームに、LBA第2の領域への順次データアクセスの第2のストリームを割り込ませるなど)が可能になる。
図9に、データ、マップ、およびチェックポイント書き込み処理900として、SLMおよびFLM情報の書き込みを有する、ホストからNVMへの受け取りおよび書き込み、ならびに様々な形の自己ジャーナリングおよびタイムスタンプ記録の様々な実施形態の選択された詳細を図示する。また処理は、再利用動作から発生したデータにも適用できる。処理は、概念的には、2つの部分を有し、第1の部分はホスト(または再利用)データ本体(「データを受け取り、書き込む910」)に関し、第2の部分はデータのマッピング(「マップエントリを作成し、書き込む920」)に関する。さらに、図示の動作のうち選択された動作がチェックポイント設定される(「要素をチェックポイント設定する995」)。
処理は、ホスト書き込みコマンドの受け取り(または再利用動作データ生成)ときに開始する(「開始901」)。次いでホスト(または再利用)データが得られる(「ホストからデータを受け取る911」)。データは、次いで、NVMに書き込むために、例えば、圧縮、暗号化、パディング、および/または様々な書式設定操作により変換される(「データを書式設定する912」)。続いて、自己ジャーナル情報が、例えば、データがどのLBAに対応するかを指示するヘッダにより、データに挿入される(「データを自己ジャーナルする913」)。ある実施形態では、ヘッダは、図5に示すように、長さおよび/またはオフセットおよび/または他の情報を有する。次いで、タイムマーカが、例えば、ヘッダ内のエポックフィールドにより、データに挿入される(「データにタイムスタンプを設定する914」)。様々な実施形態では、タイムマーカは、特定の種類のヘッダとして挿入される。続いて、データ、ヘッダ、およびタイムマーカが他のホスト(または再利用)データおよびヘッダ情報と共に集約される(「データをバッファに入れる915」)。十分な情報が集約されると、集約情報がNVMに書き込まれる(「NVMにデータを書き込む916」)。
データの書式設定(「データを書式設定する912」)は、一部はマップエントリを作成するのに使用される情報を提供し、マップエントリは、データが書き込まれるNVM内の位置を指し示す2レベルマップの第2レベルのための情報、例えば、読み出し単位アドレスおよび読み出し単位での長さから開始する(「データのためのSLMエントリを作成する922」)。ある実施形態では、マップエントリを作成するためのさらなる情報が、「データをバッファに入れる915」によって決定される、データがNVMのどこに書き込まれているか決定することによって一部は提供される。次いで、自己ジャーナリング情報が、例えば、SLMエントリに対応するFLMインデックスを提供するヘッダにより、エントリに挿入される(「SLMエントリを自己ジャーナルする923」)。ある実施形態では、ヘッダは、図5に示すように、長さ、オフセット、および/または他の情報を有する。続いて、タイムマーカが、例えば、ヘッダ内のエポックフィールドにより、エントリに挿入される(「SLMエントリにタイムスタンプを設定する924」)。様々な実施形態では、タイムマーカは、特定の種類のヘッダとして挿入される。次いで、エントリ、ヘッダ、およびタイムマーカが他のSLMエントリおよびヘッダと共に集約される(「SLMエントリをバッファに入れる925」)。十分な情報が集約されると、集約情報がNVMに書き込まれる(「NVMにSLMエントリを書き込む926」)。ある実施形態では、SLM情報の集約は、少なくとも一部は、1若しくはそれ以上のキャッシュによるものである。
SLMエントリの作成(「データのためのSLMエントリを作成する922」)は、SLMエントリを指し示すFLMエントリを作成する(「SLMエントリのためのFLMエントリを作成する932」)ことによって、マップエントリの作成を完了するのに一部は使用される情報を提供する。SLMエントリと同様に、自己ジャーナリングおよびタイムマーカ挿入(「FLMエントリを自己ジャーナルする933」および「FLMエントリにタイムスタンプを設定する934」)が行われ、その後にバッファリングおよびNVMへの書き込み(「FLMエントリをバッファに入れる935」および「NVMにFLMエントリを書き込む936」)が続く。NVMにデータ、SLMエントリおよびFLMエントリを書き込んだ(「NVMにデータを書き込む916」、「NVMにSLMエントリを書き込む926」、および「NVMにFLMエントリを書き込む936」)後で、処理が終了する(「終了999」)。
ある実施形態では、SLMエントリがSLMページとして編成され、SLMページが(例えばキャッシュに)キャッシュされ、NVMへのSLMページの書き込み(「SLMエントリを自己ジャーナルする923」から「NVMにSLMエントリを書き込む926」まで)よりも先行するSLMページのエントリの複数の更新(「データのためのSLMエントリを作成する922」)を可能にする。SLMページのうちキャッシュされたSLMページの各々は、1若しくはそれ以上のデータ書き込みからの更新を累積することができるようになっており、任意選択で、かつ/または選択的に、それぞれのキャッシュされたSLMページがキャッシュからフラッシュされるまでNVMに書き込まれない。様々な実施形態によれば、キャッシュされたSLMページのうちフラッシュされたSLMページと共にNVMに書き込まれるタイムマーカは、フラッシュされたSLMページ内のエントリに影響を及ぼした最も遅いデータ書き込みに対応するタイムマーカ、フラッシュされたSLMページがキャッシュされて以来、フラッシュされたSLMページ内のエントリに影響を及ぼした最も早いデータ書き込みに対応するタイムマーカ、現在のデータ書き込みに対応するタイムマーカ、およびマップストリームに対応するタイムマーカのうち1若しくはそれ以上である。
ある実施形態では、FLMエントリがNVMに、ローリングチェックポイントの一部としての部分単位で書き込まれ、NVMへのFLMの書き込み(「FLMエントリを自己ジャーナルする933」から「NVMにFLMエントリを書き込む936」まで)よりも先行するFLMの部分のエントリの複数の更新(「SLMエントリのためのFLMエントリを作成する932」)を可能にする。FLMの部分の各々は、1若しくはそれ以上のSLMエントリからの更新を累積することができるようになっており、任意選択で、かつ/または選択的に、FLMの部分のチェックポイントが(例えばローリングチェックポイントの一部として)作成されるまでNVMに書き込まれない。様々な実施形態によれば、FLMの部分のうちの1つと共にNVMに書き込まれるタイムマーカは、FLMの部分内のエントリに影響を及ぼした最も遅いデータ書き込みに対応するタイムマーカ、FLMの部分が最後にチェックポイント設定されて以来FLMの部分内のエントリに影響を及ぼした最も早いデータ書き込みに対応するタイムマーカ、現在のデータ書き込みに対応するタイムマーカ、マップストリームに対応するタイムマーカ、例えば、FLMの部分に対応する更新を有するSLMエントリのマップストリーム内のタイムマーカのうち1若しくはそれ以上である。
様々な実施形態では、例えば、ヘッダにより挿入される自己ジャーナリング情報は、図4A、図4B、および図5に示すように、ヘッダに含まれている。ある実施形態では、FLM情報の集約は、少なくとも一部は1若しくはそれ以上のキャッシュによるものであり、SLM情報のキャッシングがあったとしてもそれから独立に、あるいはSLM情報のキャッシングと協働して行われる。
受け取りからNVMへの書き込みまでのデータ処理(「データを書式設定する912」から「NVMにデータを書き込む916」)は、様々な実施形態および使用シナリオでは、作成からNVMへの書き込みまでのマップ処理(「データのためのSLMエントリを作成する922」から「NVMにSLMエントリを書き込む926」および/または「SLMエントリのためのFLMエントリを作成する932」から「NVMにFLMエントリを書き込む936」)から独立して進む。さらに、作成からNVMへの書き込みまでのSLMとFLMの処理(それぞれ、「データのためのSLMエントリを作成する922」から「NVMにSLMエントリを書き込む926」と「SLMエントリのためのFLMエントリを作成する932」から「NVMにFLMエントリを書き込む936」)も、様々な実施形態および使用シナリオでは、相互に独立して進む。データ、SLM、およびFLMの処理は、全部または一部が相互に並列に行われ、もっぱら、SLMエントリの作成(「データを書式設定する912」から「データのためのSLMエントリを作成する922」)と、FLMエントリの作成(「データのためのSLMエントリを作成する922」から「SLMエントリのためのFLMエントリを作成する932」)に関連した依存関係だけによって制限される。
様々な実施形態では、書き込みデータ間の処理(「データを受け取り、書き込む910」)とマップエントリの処理(「マップエントリを作成し、書き込む920」のSLMおよびFLMに関連した部分)とが独立している(よって、一部または全部が並列に、またはオーバーラップしている)ことに加えて、910ならびにSLMおよびFLMに関連した部分の各々の内部での処理も、全部または一部が並列であり、オーバーラップし、かつ/またはパイプライン化される。例えば、第1のホストデータが受け取られ(「ホストからデータを受け取る911」)、第1のホストデータが書式設定されている(「データを書式設定する912」)間に、第2のホストデータが並列に受け取られる(「ホストからデータを受け取る911」)。別の例としては、第1のSLMエントリが作成され(「データのためのSLMエントリを作成する922」)、次いで、第1のSLMエントリが自己ジャーナルされている(「SLMエントリを自己ジャーナルする923」)間に第2のSLMエントリが並列に作成される(「データのためのSLMエントリを作成する922」)。さらに、第2のSLMエントリの作成(および第1のSLMエントリの自己ジャーナリング)と並列に、第1のSLMエントリのためのエントリが作成される(「SLMエントリのためのFLMエントリを作成する932」)。
ある実施形態では、後の方の動作が、その後の方の動作よりも先に開始した動作よりも早く完了することができるようになっている。第1の例では、2つの異なるバンドへのデータ書き込みがNVMに書き込まれる順序が指定されない。第2の例では、SLMページのキャッシングが、後の方のデータ書き込みからのSLMエントリの更新が、後の方のデータ書き込みよりも早いデータ書き込みからのSLMエントリの更新よりも先にNVMに書き込まれることを可能にする。
様々な実施形態では、タイムマーカの挿入が選択的であり、任意選択であり、かつ/または割愛される(例えば、「データにタイムスタンプを設定する914」、「SLMエントリにタイムスタンプを設定する924」、および「FLMエントリにタイムスタンプを設定する934」のうち1若しくはそれ以上が割愛され、または選択的にのみ挿入される)。さらに、マップ情報の書き込みが、データ情報の書き込みを完了するまで遅延される(またはデータ情報の書き込みに応答して行われる)。例えば、NVMへのSLMエントリ情報の記録は、NVMへのデータの書き込みの完了を待って行われる(例えば、「NVMにSLMエントリを書き込む926」は、「完了916C」で示されるように、「NVMにデータを書き込む916」に依存する)。例を続けて、NVMでのFLMエントリ情報の記録は、NVMへのSLM情報の書き込みの完了を待って行われる(例えば、「NVMにFLMエントリを書き込む936」は、「完了926C」で示されるように、「NVMにSLMエントリを書き込む926」に依存する)。回復処理は、NVMに書き込まれたすべてのFLM情報、ならびにNVMに書き込まれたすべてのSLM情報を使用する。というのは、FLMおよびSLM情報は、FLMおよびSLM情報によって指し示されるデータ情報が前に書き込まれるまで書き込まれないからである。よってNVM上のデータおよびマップ情報は相互に整合性を有する。
ある実施形態では、タイムマーカが選択的に挿入される。例えば、同じページに記憶された連続したデータ書き込みのためにNVMの同じページに連続したタイムマーカを挿入するのではなく、タイムマーカのうち第1のタイムマーカだけが挿入される。タイムマーカのうち後続のタイムマーカの値が第1のタイムマーカの値および介在する連続したデータ書き込みの数から推測される。
様々な実施形態では、タイムマーカが挿入され、相互から独立した、例えば、全部若しくは一部が並列の、または相互に順不同でのデータ、SLM、およびFLM情報の書き込みを可能にする。独立の書き込みは、ある実施形態および/または使用シナリオでは、(例えば、概念的には、「完了916C」および「完了926C」によって図示される)依存的書き込みよりも効率のよい処理(例えば、低待ち時間および/または高バンド幅)を可能にする。
具体的な動作シナリオでは、データ書き込みがNVMのデータストリームに対するものであり(例えば、「NVMにデータを書き込む916」がデータストリームに対するものであり)、マップ書き込みが、NVMのマップストリームおよび/またはチェックポイントストリームに対するものである(例えば、「NVMにSLMエントリを書き込む926」および「NVMにFLMエントリを書き込む936」が、それぞれ、マップストリームおよびチェックポイントストリームに対するものである)。データ書き込みのうち1若しくはそれ以上が(例えば、データストリームの書き込みと競合する消去操作の完了を待っているために)遅延される。一方、マップストリーム書き込みのうち少なくとも1つは、全部または一部が消去操作と並列に行われ、そのため、遅延された書き込みデータの少なくとも一部に対応する少なくとも1つのマップエントリの書き込みが、遅延された書き込みデータが書き込まれる前に完了する。続いて、消去操作が完了し、次いで、遅延されたデータ書き込みが完了する。遅延されたデータ書き込みを完了する前に誤動作が生じた場合には、後続の回復は、データおよびマップストリーム内のタイムスタンプの検査に基づいて、遅延されたデータ書き込みに対応するマップストリーム書き込みのうちいずれかが無視されるべきであると決定するはずである。具体的には、遅延された書き込みに対応するマップストリーム書き込みのタイムマーカは、データストリーム書き込みの最も遅いもの(例えば最も新しいものまたは最も若いもの)よりも前方にある(例えば、より新しい、またはより若い)はずである。
様々な実施形態では、マップ情報の自己ジャーナリングの挿入は任意選択であり、かつ/または割愛される(例えば、「SLMエントリを自己ジャーナルする923」および「FLMエントリを自己ジャーナルする933」のうち1若しくはそれ以上が割愛される)。
ある実施形態および/または使用シナリオでは、図の各要素のうち1若しくはそれ以上がチェックポイント設定される(「要素をチェックポイント設定する995」)。あるシナリオでは、より効率のよい、かつ/またはロバストな回復処理を可能にするために、チェックポイントが様々な時点でNVMに書き込まれる。例えば、集約されたデータ、SLM情報、およびFLM情報(「データをバッファに入れる915」、「SLMエントリをバッファに入れる925」、および「FLMエントリをバッファに入れる935」)のうち1若しくはそれ以上がチェックポイントに含まれる。様々な実施形態では、回復処理は、チェックポイントに含まれるタイムマーカを使用して、チェックポイントのある特定の部分を無視すべきか否か決定する。例えば、(「データをバッファに入れる915」に対応する)データストリームの最も遅い部分が、(「NVMにSLMエントリを書き込む926」に対応する)チェックポイントの最も遅いSLM部分よりも遅いタイムマーカを保持していない場合には、チェックポイントの最も遅いSLM部分が回復処理時に廃棄される。
図10に、ホストおよび/または再利用データ、マップ情報、ならびにチェックポイントFIFO部分のNVMへのストリーミングの様々な実施形態の選択された詳細を図示する。R−ブロックの3つのストリームが図示されており、1つはデータ書き込みのためのもの(データR−ブロック1020)であり、1つは更新されたSLM書き込みのためのもの(SLM(マップ)R−ブロック1030)であり、1つはデータ構造チェックポイント書き込み、例えばFLMの部分のためのもの(チェックポイントFIFO R−ブロック1040)であり、ストリームとして管理されるそれぞれのデータ、マップ、およびチェックポイントバンドに対応する。「エポック」要素は(図5のエポック523によって図示されるような)タイムマーカ、例えば、それぞれのヘッダ内のタイムスタンプに対応する。図10において、時間は、それぞれのストリームの順序に従って、左から右へ経過時間が最も長いものから経過時間が最も短いものである。さらに、図は、各ストリーム内の書き込み順も表しており、各ストリーム内の書き込み順は、NVMのページごとなど、NVM書き込みの粒度の制限を受ける。NVMのページのうちの1つを用いる要素は、たとえ物理的には同時に書き込まれるとしても、概念的には図示の順序で書き込まれる。よって、データR−ブロックの要素は、エポック−1 1021E(経過時間が最も長い)、データ−1 1021、エポック−2 1022E、データ−2 1022、エポック−3 1023E、およびデータ−3 1023(経過時間が最も短い)の順に書き込まれる。マップR−ブロックの要素は、エポック−1 1031E(経過時間が最も長い)、SLM−1 1031、エポック−2 1032E、SLM−2 1032、エポック−3 1033E、およびSLM−3 1033(経過時間が最も短い)の順に書き込まれる。チェックポイントマップR−ブロックの要素は、エポック−1 1041E(経過時間が最も長い)、FLM−1 1041、エポック−2 1042E、FLM−2 1042、エポック−3 1043E、およびFLM−3 1043(経過時間が最も短い)の順に書き込まれる。
データR−ブロック内の情報は、何がNVMに有効に記憶されているか決定するため、厳密なコヒーレンシを有する。厳密なコヒーレンシとは、NVMに書き込まれたデータ構造の最も遅い部分からのデータ構造の有効な状態の完全な回復を可能にする(NVMに書き込まれたデータを有する)データ構造の属性をいう。厳密なコヒーレンシは、複数のデータ構造の間の整合性と区別される。例えば、2つのデータ構造がそれぞれ厳密なコヒーレンシを有するが、データ構造の一方が他方のデータ構造に存在しない状態変化を反映しているために、相互に対して整合しないなどである。ある実施形態および/または使用シナリオでは、回復の目標は、可能な最も遅い時点での相互との整合性も有するデータ構造の厳密にコヒーレントなバージョンを決定することである。
マップR−ブロック内の情報は、更新されたSLMページのFIFO様のストリームであり、少なくとも一部はマップR−ブロックに記憶されたSLMの厳密なコヒーレンスを維持するのに使用される。ある状況では、マップR−ブロック内の情報は、例えば、データR−ブロック内の対応する情報よりも経過時間が短いSLMページなど、データR−ブロック内の情報と整合しないSLMページが原因で、NVMに書き込まれたデータと整合しない。
チェックポイントR−ブロック内の情報は、FLMおよび他のデータ構造の部分または全部のFIFO(またはストリーム)であり、FLMの厳密なコヒーレンスおよびその他のデータ構造の厳密な、またはおおよそのコヒーレンスを維持するのに使用される。しかし、マップR−ブロックと同様に、ある状況では、チェックポイントR−ブロック内の情報は、例えば、マップR−ブロックまたはデータR−ブロック内の対応する情報よりも経過時間の短いFLMエントリなど、他のR−ブロック内の情報と整合しない。
ある実施形態および/または使用シナリオでは、チェックポイントFIFOに記憶されたあるデータ構造は、他のデータ構造とおおよそコヒーレントであるにすぎず、または整合しない。第1の例では、読み出し妨害カウントがNVM内のブロックごとに維持され、読み出し妨害カウントは、複数の部分で、例えば、一度に読み出し妨害カウントの1/4が、時間の経過と共に均一に分散されて、チェックポイントFIFOにチェックポイント設定される。読み出し妨害カウントが回復されるときに、回復された読み出し妨害カウントは、使用中であった読み出し妨害カウントのどのバージョンともコヒーレントではない。というのは、4つの部分の各々は異なる時点からのものだからである。第2の例では、R−ブロック使用情報が、対応するタイムスタンプなしで、チェックポイントFIFOにチェックポイント設定される。回復時に復元されるR−ブロック使用情報の最も遅いバージョンはコヒーレントであるが、ある状況では他のデータ構造と整合しない。
概念的には、図は、回復操作時のストリーム優先順位を表している。R−ブロックのデータストリーム内の情報はR−ブロックのマップストリーム内の情報よりも優先され、R−ブロックのマップストリーム内の情報は、さらに、R−ブロックのチェックポイントストリーム内の情報よりも優先される。(ある実施形態および/または使用シナリオでは、ストリームの各々の内部の書き込みは明確に順序付けられているが)ストリーム間の書き込みは明確に順序付けられていないため、ストリーム間の書き込みの整合性を有する順序付けを決定するための追加情報の必要がある。様々な実施形態および/または使用シナリオにおいて、タイムスタンプおよび/またはタイムマーカ、例えばエポック値は、複数のバンドおよび/またはストリームへの書き込みの相対順が決定されることを可能にする。
図示のように、R−ブロックのデータ、マップ、およびチェックポイントストリームへの書き込みは、以下のように、相互に対して整合性を有する。データ書き込みの各々は、それぞれのデータ書き込みに対応するそれぞれのSLMに先行し、さらに、SLM更新の各々は、それぞれのSLM更新を指し示すポインタを(例えばFLMエントリとして)有する任意のそれぞれのチェックポイント書き込みに先行する。具体的には、SLM−1 1031はデータ−1 1021にマップし、データ−1 1021の書き込みは、エポック−1 1031EおよびSLM−1 1031の書き込みが開始する前に完了する。さらに、FLM−1 1041はSLM−1 1031を指し示すポインタを有し、SLM−1 1031の書き込みは、エポック−1 1041EおよびFLM−1 1041の書き込みが開始する前に完了する。同様の依存関係および書き込み順序付けが、データ−2 1022、エポック−2 1032EおよびSLM−2 1032と、エポック−2 1042EおよびFLM−2 1042、ならびにデータ−3 1023、エポック−3 1033EおよびSLM−3 1033と、エポック−3 1043EおよびFLM−3 1043にも適用される。
ある実施形態では、ストリーム間の整合性が、エポック値によって以下のように示される。エポック−1 1031Eは、エポック−1 1021Eと同一であり、あるいは、エポック−1 1031Eがエポック−1 1021Eの後に書き込まれたことを指示する。エポック−1 1041Eはエポック−1 1031Eと同一であり、あるいはエポック−1 1041Eがエポック−1 1031Eの後に書き込まれたことを指示する。同様に、エポック−2 1032Eはエポック−2 1022Eと同一であり(またはエポック−2 1022Eの後の書き込みを指示し)、エポック−2 1042Eは、エポック−2 1032Eと同一である(またはエポック−2 1032Eの後の書き込みを指示する)。同様に、エポック−3 1033Eはエポック−3 1023Eと同一であり(またはエポック−3 1023Eの後の書き込みを指示し)、エポック−3 1043Eはエポック−3 1033Eと同一である(またはエポック−3 1033Eの後の書き込みを指示する)。
様々な実施形態および/または使用シナリオにおいて、各ストリーム内の書き込み順序付けは図示のままである。しかし、R−ブロックのストリーム間の書き込みの相対的タイミングは図示のものとは異なる。例えば、エポック−2 1032EおよびSLM−2 1032の書き込みは、データ−2 1022の書き込みが開始する前に(しかし、データ−1 1021の書き込みが完了した後で)完了する。よって、SLM−2 1032は、エポック−2 1032Eによって示されるものよりも古い経過時間を指示するR−ブロックのデータストリームの最も新しく書き込まれたタイムマーカ(エポック−1 1021E)によって示されるように、一時的に、データ−2 1022に対して整合しない。エポック−2 1022Eおよびデータ−2 1022の書き込みが完了する前に誤動作が発生した場合には、SLM−2 1032の一時的な不整合性が永続的になる。不整合性を解決するために、後続の回復処理は、(エポック−2 1032Eがエポック−1 1021Eよりも経過時間が短いことに基づいて)SLM−2 1032を廃棄するはずである。別の例として、R−ブロックのマップストリームでの対応するSLM更新の書き込みの前のR−ブロックのチェックポイントストリームでのFLMエントリの書き込みの後に(対応するSLM更新の書き込みの前の)誤動作および後続の回復処理が続く場合には、回復処理はFLMエントリを廃棄する。
図には、チェックポイントR−ブロックのストリームの領域が、FLMのすべてのエントリ(完全なFLM1050)に対応するものとして示されている。この領域は、FLMが部分(チャンクなど)としてチェックポイント設定されるある実施形態に対応する。図示のように、3つの任意選択で、かつ/または選択的にオーバーラップする部分(FLM−1 1041、FLM−2 1042、およびFLM−3 1043)は、総体としてFLMのエントリのすべてのチェックポイントを形成するが、部分の各々は異なる時点からのものであり、よって、それ自体では、FLMのコヒーレントなイメージではない。回復プロセスは、FLMおよび他のデータ構造のチェックポイントから、FLMのコヒーレントで整合性を有するバージョンを復元することができるようになっている。同様に、回復プロセスは、マップストリームおよび他のデータ構造内のマップのおそらくはコヒーレントではないコピーから、マップのコヒーレントで整合性を有するバージョンを復元することができるようになっている。
ある実施形態では、特定のデータ構造の整合性が、一部は、特定のデータ構造へのいくつかの関連した更新と、特定のデータ構造の後続のタイムスタンプ設定とが、少なくとも、特定のデータ構造のチェックポイントに関して、原子単位として行われることを保証することによって維持される。例えば、チェックポイントFIFOにチェックポイント設定されるR−ブロック使用カウントデータ構造を考える。データストリーム内のデータ書き込みのうち特定のデータ書き込みが、データストリーム内の対応するエポック値と関連付けられる。特定のデータ書き込みは、データ書き込みを有するR−ブロックの使用を増加させ、特定のデータ書き込みと同じLBAと関連付けられた前のデータ書き込みを有するR−ブロックの使用を減少させる。データ書き込みに従ってR−ブロック使用カウントデータ構造を更新することは、3つの動作、すなわち、データ書き込みを有するR−ブロックの使用カウントを増加させること、前のデータ書き込みを含むR−ブロックの使用カウントを減少させること、およびR−ブロック使用カウントデータ構造に、特定のデータ書き込みの対応するエポック値でタイムスタンプ設定することを含む。R−ブロック使用カウントデータ構造のチェックポイントが、3つの動作のうち少なくとも1つを行った後で、3つの動作のすべてを完了するよりも先に発生することができるようになっていた場合、そのチェックポイントは、R−ブロック使用カウントデータ構造の整合性のないバージョンを記録するはずであり、R−ブロック使用カウントデータ構造の復元は、例えば電源障害後で、復元後のR−ブロックの実際の使用を反映しない整合性のない値をもたらすはずである。したがって、様々な実施形態では、各データ書き込みに従ったR−ブロック使用カウントデータ構造へのそれぞれの更新が、チェックポイントに対して原子的に行われる。
図11に、FLMおよびSLM復元処理1100として、例えば誤動作の後の、(例えば図2および図8のうち1若しくはそれ以上に示した)FLMおよびSLM情報および他のNVM管理データ構造の復元および/または再構築の選択された詳細を図示する。復元動作および再構築動作は、図9および図10のうち1若しくはそれ以上に示した自己ジャーナリングおよび階層的整合性の技法と併用した動作と適合する。
図11に示す処理は、誤動作の後のイベント、例えば、回復/再構築要求、ソフトリセット若しくはハードリセット、または電源オンに応答して開始する(開始1101)。チェックポイントR−ブロックの最後の(例えば最も新しく書き込まれた)R−ブロックが位置特定され、最後のチェックポイントR−ボック内の最後の(例えば最も新しく書き込まれた)情報が位置特定される(FIFO終わりの位置を特定する1111)。次いで、最も新しく書き込まれたものよりも早い直前のチェックポイントR−ブロックの部分が、FLMの全体イメージが再構築されるまで処理される。ある実施形態では、FLM再構築処理は、最も新しいFLM部分を位置特定し、最も古いタイムマーカを位置特定し(最も新しいFLMチャンクおよび最も古いエポックの位置を特定する1112)、次いで、最も古いタイムマーカの時点のFLMを再構築する(最も古いエポックの時点のFLMを復元する1113)ことを含む。ある実施形態および/または使用シナリオでは、FLMの1若しくはそれ以上の遅い部分が、例えば、電源障害が発生したときに完了することができなかった書き込みによる穴が原因で早い部分と連続しない。早い部分と連続しない部分は回復時に廃棄される。
チェックポイントR−ブロックに基づいてFLMを再構築した後で、再構築されたFLMより(更新と共に記憶されたタイムマーカによれば)新しい任意のSLM更新がFLMに適用される(SLM更新に従ってFLMを更新する1114)。次いで、SLMは、対応するSLMエントリより(書き込みデータと共に記憶されたタイムマーカよれば)新しいデータ書き込みについて更新される(データ更新に従ってSLMを更新する1115)。次いで処理は終了し(終了1199)、FLM、SLM、および他のデータ構造がコヒーレントで、整合性を有し、SSDのNVMを操作するために使用できるようになる。
ある実施形態では、SLMを更新するために処理される書き込みデータの量が、キャッシュされている変更されたSLMエントリが、マップフラッシュ間隔と呼ばれる、所定数のエポック値以内にNVMにフラッシュされるよう保証することによって制限される。例えば、変更された各SLMエントリ(または変更された各SLMページ)は、それぞれの変更されたSLMエントリ(またはSLMページ)が最後にフラッシュされて以来最も早い変更のエポック値を追跡し、それぞれの変更されたSLMエントリ(またはSLMページ)は、それぞれの変更されたSLMエントリ(またはSLMページ)が、最も遅いデータ書き込みよりも10000エポック値も後になる前にフラッシュされる。より新しいデータ書き込みからSLMを再構築するときには、(エポック値で測った)最も新しいおおよそ10000のデータ書き込みだけがSLM更新として考慮される。というのは、それより古いデータ書き込みはすでにNVMに書き込まれているからである。
ある実施形態では、復元プロセスは、データストリーム、マップストリーム、およびチェックポイントFIFOの各々について、それぞれの最も遅い有効なエポックおよびそれぞれの最も早い必要とされるエポックを決定する。復元プロセスは、チェックポイントFIFOの最も早い必要とされるエポックとチェックポイントFIFOの最も遅い有効なエポックとの間にあるFLMの部分からFLMを復元する。マップストリーム内の最も早い必要とされるエポックとマップストリーム内の最も遅い有効なエポックとの間のマップストリーム内にあるSLM更新が、FLMがマップストリームと整合性を有するようにFLMに適用される。データストリーム内の最も早い必要とされるエポックとデータストリーム内の最も遅い有効なエポックとの間のデータストリーム内にあるデータ書き込みからの更新が、次いで、SLMがデータストリームと整合性を有するようにSLMに適用される。様々な実施形態および/または使用シナリオでは、データストリーム内のデータ書き込みからの更新をSLMに適用することは、任意選択で、かつ/または選択的に、例えば、キャッシュが回復に必要なすべての更新を保持することができないときに、キャッシュからマップストリームへSLMエントリおよび/またはページをフラッシュする。回復時のSLMエントリおよび/またはページのフラッシュがFLMのエントリを更新し、さらには、FLMの1若しくはそれ以上の部分が、任意選択で、かつ/または選択的に、回復時にチェックポイントFIFOに書き込まれる。様々な実施形態では、復元プロセスの完了は、「復元完了」マーカ、例えば特定の種類のヘッダをストリームのうち1若しくはそれ以上に書き込む。
ある実施形態では、データストリーム内の最も遅い有効なエポックは、回復に必要とされるデータストリームのすべての先行する部分と連続した(データストリーム内のデータ書き込みに対応する)データストリーム内の最後に書き込まれたエポック値である。マップストリーム内の最も遅い有効なエポックは、回復に必要とされるマップストリームのすべての先行する部分と連続した(マップストリーム内のSLMエントリおよび/またはページ書き込みに対応する)マップストリーム内の最後に書き込まれたエポック値であり、データストリーム内の最も遅い有効なエポックの時点、またはそれよりも先である。チェックポイントFIFO内の最も遅い有効なエポックは、回復に必要とされるチェックポイントFIFOのすべての先行する部分と連続した(チェックポイントFIFO内のFLMの部分に対応する)チェックポイントFIFOの最後に書き込まれたエポック値であり、マップストリーム内の最も遅い有効なエポックの時点、またはそれよりも先である。別の実施形態では、チェックポイントFIFO内の最も遅い有効なエポックは、1若しくはそれ以上の他のデータ構造の連続したチェックポイントとも、例えば、R−ブロック使用スペースデータ構造とも関連付けられている。
ある実施形態では、チェックポイントFIFO内の最も早い必要とされるエポックは、FLMの1つの完全な(ただしコヒーレントではない)バージョンが、チェックポイントFIFO内の最も早い必要とされるエポックおよびチェックポイントFIFOの最も遅い有効なエポックの範囲内で得られるようなFLMの最も遅い部分のエポック値である。マップストリーム内の最も早い必要とされるエポックは、チェックポイントFIFO内の最も早い必要とされるエポックの時点、またはそれより前であるマップストリーム内の最も遅いSLMエントリおよび/またはページのエポック値である。データストリーム内の最も早い必要とされるエポックは、マップストリーム内の最も遅い有効なエポックよりも先行するマップフラッシュ間隔以前の最も遅いデータ書き込みのエポック値である。
ある実施形態および/または使用シナリオでは、例えば誤動作が生じているときに、データストリーム内の穴が回復時に発見される。穴よりも先行する情報は有効であり、穴の後の情報は無効である。穴と回復開始指示との間の情報は無効であり、回復開始指示後の情報は新しい有効な情報の先頭であることを指示するために、ログ記録が、任意選択で、(例えば回復時に)データストリームに追加される。様々な実施形態では、回復開始指示は、回復処理の開始を指示する、特殊なヘッダ、例えばジャーナルヘッダである。
ある状況では、復元処理は相対的に低待ち時間である。例えば、誤動作が、比較的長時間にわたって書き込みも再利用も行われなかったときの電源喪失である場合には、FLMに適用すべきSLM更新がなく、すでにSLMに反映されているデータ書き込みがない。あるいは、別の状況では、復元プロセスは相対的に高待ち時間である。例えば、誤動作が、チェックポイントR−ブロックおよび/またはマップR−ブロックが全部、またはおおむね整合していないようなものである場合には、有効なデータ情報を記憶しているデータR−ブロックのすべてまでがFLMを再構築するために読み出され、SLMも完全に再構築される。さらに別の状況では、復元プロセスは、中程度の待ち時間である。例えば、誤動作が、チェックポイントR−ブロックは完全な状態であり、相対的に少数のマップ更新がまだチェックポイントR−ブロックに反映されていないにすぎず、相対的に少数のデータ書き込みがまだマップR−ブロックに反映されていないにすぎないようなものである場合には、必要とされるFLMおよびSLMの再構築は相対的に少ない。
様々な実施形態では、図6から図11の1若しくはそれ以上の要素が図1Aの1若しくはそれ以上の要素に対応し、またはそれらと関連したものである。例えば、図6のデバイス601...609のうち1若しくはそれ以上は、総体として、NVM199の全部または部分に対応する。別の例として、図7のフラッシュダイ710.65...710.0は、総体として、フラッシュダイ194のインスタンスに対応する。さらに別の例として、図10に示すR−ブロックのストリームは、NVM199の全部または部分に記憶される。様々な実施形態では、図1Aの1若しくはそれ以上の要素が、本明細書の別の箇所で説明した自己ジャーナリングおよび/または階層的整合性に関連した技法の全部またはいずれかの部分を管理し、制御し、かつ/または実施する。例えば、CPU171のソフトウェア実行機能の一部分が、(例えば図11によって示す)マップ情報の回復を管理するのに使用される。別の例としては、バッファ131の全部または部分が、図9で説明したバッファリングの全部またはいずれかの部分を実施する。
追加の実施態様/実施形態情報
様々な実施形態では、例えば、図8から図11で説明した動作および/または機能の全部またはいずれかの部分が、例えば、1若しくはそれ以上の状態機械によって実施される。状態機械の実施態様の例には、ハードウェア(論理ゲートおよび/若しくは回路、専用状態機械回路、配線制御回路など)、ソフトウェア(ファームウェアやマイクロコードなど)、またはハードウェアとソフトウェアの組み合わせが含まれる。ある実施形態では、状態機械のうち1若しくはそれ以上が、少なくとも一部は、1若しくはそれ以上のファームウェアイメージ、1若しくはそれ以上のドライバ、および/または1若しくはそれ以上のアプリケーションによって実施される。具体例として、状態機械のうち1若しくはそれ以上が、一部が図1AのSSDコントローラ100によって、一部がCPUコア172によって実行されるファームウェアによって、一部が図1Bのファームウェア106によって、一部がドライバ107によって、かつ/または一部がアプリケーション109によって実施される。
様々な実施形態では、図8から図11で説明した動作および/または機能の全部またはいずれかの部分が、ハードウェアおよび/またはファームウェアの技法の任意の組み合わせにより、例えば、図1Aのコヒーレンシ管理179、変換管理177、および/またはマップ141のうちいずれか1若しくはそれ以上によって、その制御下で、かつ/またはそれに従って実施される。
実施技法の例
ある実施形態では、(例えばフラッシュメモリを有する)不揮発性記憶、コンピューティングホスト・フラッシュ・メモリ・コントローラ、および/またはSSDコントローラ(例えば図1AのSSDコントローラ100)、ならびにプロセッサ、マイクロプロセッサ、システム・オン・チップ、特定用途向け集積回路、ハードウェアアクセラレータ、または前述の動作の全部または部分を提供する他の回路を管理するための自己ジャーナリングおよび階層的整合性を実施するシステムによって行われる動作の全部またはいずれかの部分の様々な組み合わせが、コンピュータシステムによる処理と適合する仕様によって指定される。仕様は、様々な記述、例えば、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、またはレイアウト記述に従ったものである。記述の例には、Verilog、VHDL、SPICE、SPICEの変形、例えば、PSpice、IBIS、LEF、DEF、GDS−II、OASIS、または他の記述が含まれる。様々な実施形態では、処理は、1若しくはそれ以上の集積回路上に含めるのに適する論理および/または回路を生成し、検証し、または指定するための解釈、コンパイル、シミュレーション、および合成の任意の組み合わせを含む。各集積回路は、様々な実施形態によれば、様々な技法に従って設計することができ、かつ/または製造することができる。技法には、プログラマブルな技法(例えば、フィールド若しくはマスク・プログラマブル・ゲート・アレイ集積回路)、セミカスタムの技法(例えば、全部若しくは一部がセルベースの集積回路)、およびフルカスタムの技法(例えば、実質的に専門化された集積回路)、それらの任意の組み合わせ、または集積回路の設計および/若しくは製造と適合する任意の他の技法が含まれる。
ある実施形態では、命令のセットを記憶しているコンピュータ可読媒体によって記述される動作の全部または部分の様々な組み合わせが、1若しくはそれ以上のプログラム命令の実行および/若しくは解釈によって、1若しくはそれ以上のソースおよび/若しくはスクリプト言語命令文の解釈および/若しくはコンパイルによって、または、プログラミングおよび/若しくはスクリプティング言語命令文で表現された情報をコンパイルし、変換し、かつ/または解釈することによって生成されるバイナリ命令の実行によって実行される。命令文は任意の標準のプログラミングまたはスクリプティング言語(例えば、C、C++、Fortran、Pascal、Ada、Java(登録商標)、VBscript、Shell)と適合する。プログラム命令、言語命令文、またはバイナリ命令のうち1若しくはそれ以上が、任意選択で、1若しくはそれ以上のコンピュータ可読記憶媒体要素上に記憶される。様々な実施形態では、プログラム命令の一部、全部、または様々な部分が、1若しくはそれ以上の関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分として実現される。
結論
ある特定の選択が、説明において、テキストおよび図面を作成するに際の単なる便宜のためになされており、別の指示がない限り、それらの選択は、それ自体で、前述の実施形態の構造または動作に関する追加情報を伝えるものと解釈すべきではない。選択の例には、図の符番に使用される呼称の特定の編成または割り当て、および実施形態の特徴および要素を識別し、参照するのに使用される要素識別子(コールアウトや数値識別子など)の特定の編成または割り当てが含まれる。
「includes」または「including」という語は、開放型範囲の論理集合を記述する抽象概念として解釈されるべきことが明確に意図されており、後に続けて「within」という語が明示されない限り物理的包含を伝えるためのものではない。
前述の実施形態は、説明および理解の明確さのためにある程度詳細に説明されているが、本発明は提示した詳細だけに限定されるものではない。本発明の多くの実施形態がある。開示の実施形態は例示であり、限定ではない。
説明と整合性を有する、構成、配置、および使用における多くの変形が可能であり、それらの変形は、発行される特許の特許請求の範囲内にあることが理解されるであろう。例えば、相互接続および機能ユニットのビット幅、クロック速度、および使用される技術の種類は、各構成要素ブロックにおける様々な実施形態に従って変わりうる。相互接続および論理に与えられた名称は、単なる例であり、説明した概念を限定するものと解釈すべきではない。フローチャートおよび流れ図のプロセス、動作、および機能要素の順序および配置は、様々な実施形態に従って変わりうる。また、特に別に指定しない限り、指定される値範囲、使用される最大値および最小値、または他の特定の仕様(例えば、フラッシュメモリ技術の種類、レジスタおよびバッファ内のエントリまたは段の数)は、単に前述の実施形態のものにすぎず、実施技術の改善および変更を追跡することが見込まれるものであり、限定として解釈すべきではない。
当分野で公知の機能的に等価の技法を、様々なコンポーネント、サブシステム、動作、関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分を実施するのに、前述の技法の代わりに用いることができる。また、実施形態の多くの機能的態様を、より高速な処理(以前にハードウェアにあった機能のソフトウェアへの移行を円滑化する)およびより高い集積密度(以前にソフトウェアにあった機能のハードウェアへの移行を円滑化する)の実施形態に依存する設計制約条件および技術傾向に応じて、選択的に、ハードウェア(おおむね専用の回路など)で、またはソフトウェアで(例えば、プログラムされたコントローラ若しくはプロセッサのある方式によって)実現できることも理解される。様々な実施形態の具体的な変形は、これに限定されるものではないが、分割の違い、フォームファクタおよび構成の違い、異なるオペレーティングシステムおよび他のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、または通信リンクの使用、本明細書で説明した概念を、特定の用途の固有の技術的業務的制約条件に従って実施するときに予期されるべき他の変形を含む。
各実施形態は、前述の各実施形態の多くの態様の最小限の実施に必要とされるものを大きく超えた詳細および環境的コンテキストと共に説明されている。ある実施形態は、残りの要素間での基本的協働を変更せずに開示の構成要素または機能を割愛することを当業者は理解するであろう。よって、開示の詳細の多くが前述の実施形態の様々な態様を実施するのに必要ではないことが理解される。残りの要素が先行技術と区別できる範囲内で、割愛される構成要素および特徴は本明細書で説明した概念を限定するものではない。
設計におけるすべてのそのような変形は、前述の実施形態によって伝えられる教示に対する実質的な変更ではない。また、本明細書で説明した実施形態は、他のコンピューティング用途およびネットワーキング用途に幅広い適用性を有し、前述の実施形態の特定の用途または産業だけに限定されるものではないことも理解される。よって本発明は、発行される特許の特許請求の範囲内に包含されるあらゆる可能な改変形態および変形形態を含むものと解釈すべきである。

Claims (21)

  1. システムであって、
    不揮発性メモリ(NVM)に一連のデータ単位を第1の順序で配列する手段であって、前記データ単位の各々は複数のタイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記データ単位を第1の順序で配列する手段と、
    前記不揮発性メモリに一連のデータマップ単位を第2の順序で配列する手段であって、前記データマップ単位の各々は複数のタイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記データマップ単位を第2の順序で配列する手段と
    を有し、
    前記データマップ単位の各々は、前記不揮発性メモリ内に前記データ単位のうちの1つに対応する位置を有し、
    前記データ単位の各々と関連付けられた前記各タイムスタンプの時点は、前記対応するデータマップ単位と関連付けられた前記タイムスタンプの時点と同一であるか、または当該タイムスタンプの時点より前である
    システム。
  2. 請求項1記載のシステムにおいて、
    前記データ単位の各々は、ホストから各論理ブロックアドレス(LBA)への各データ書き込みに対応し、
    前記データ単位のうち先行するデータ単位および後続のデータ単位は、前記各論理ブロックアドレスのうち同一の論理ブロックアドレスへの先行するデータ書き込みおよび後続のデータ書き込みに対応するものであり、
    前記先行するデータ単位は前記データマップ単位のうち関連付けられたデータマップ単位を有しないものである
    システム。
  3. 請求項1記載のシステムにおいて、さらに、
    前記データ単位のうち最後に有効となり且つ連続したデータ単位を決定する手段と、
    前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位を決定する手段であって、当該最後に有効となり且つ連続したデータマップ単位と関連付けられたタイムスタンプの時点は前記データ単位のうち前記最後に有効となり且つ連続したデータ単位と関連付けられたタイムスタンプの時点と同一であるか、またはそれより前である、前記データマップ単位を決定する手段と、
    前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位のみを回復する手段と
    を有し、
    これにより、前記データ単位のうち前記最後に有効となり且つ連続したデータ単位と関連付けられた前記タイムスタンプより後のタイムスタンプに関連付けられた前記データマップ単位は全て回復時に無視されるものである
    システム。
  4. システムであって、
    不揮発性メモリ(NVM)に一連のデータ記憶単位を書き込む手段であって、前記データ記憶単位の各々は複数のタイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記データ記憶単位を書き込む手段と、
    前記不揮発性メモリに一連のデータマップ単位を書き込む手段であって、前記データマップ単位の各々は前記タイムスタンプのうちの1つとそれぞれ関連付けられているものである、前記データマップ単位を書き込む手段と
    を有し、
    前記データマップ単位の各々は、前記不揮発性メモリ内に前記データ記憶単位のうちの1つに対応する位置を有し、
    前記データ記憶単位の各々と関連付けられた前記各タイムスタンプは、前記対応するデータマップ単位と関連付けられた前記タイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである
    システム。
  5. 請求項4記載のシステムにおいて、
    前記データ記憶単位のうち第1のデータ記憶単位は、ホストから特定の論理ブロックアドレス(LBA)への第1のデータ書き込みに対応し、
    前記データ記憶単位のうち第2のデータ記憶単位は、前記ホストから前記特定のLBAへの第2のデータ書き込みに対応し、
    前記第1のデータ書き込みは、時間の順序において、前記第2のデータ書き込みに先行するものであり、
    前記データマップ単位のいずれも前記第1のデータ記憶単位に対応しないものである
    システム。
  6. 請求項4記載のシステムにおいて、前記データ記憶単位の書き込みは第1の順序に従うものであり、前記データマップ単位の前記書き込みは第2の順序に従うものであるシステム。
  7. 請求項6記載のシステムにおいて、さらに、
    前記データ記憶単位のうち最後に有効となり且つ連続したデータ記憶単位を前記第1の順序に従って決定する手段と、
    前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位であって、前記タイムスタンプのうちの1つと関連付けられたデータマップ単位を前記第2の順序に従って決定する手段であって、当該タイムスタンプのうちの1つは、前記データ記憶単位のうち前記最後に有効となり且つ連続したデータ記憶単位と関連付けられたタイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである、前記第2の順序に従って決定する手段と、
    前記第1の順序および前記第2の順序に従って、前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位のみを回復する手段と
    を有するものであるシステム。
  8. 請求項6記載のシステムにおいて、さらに、
    前記データ記憶単位のうち最後に有効となり且つ連続したデータ記憶単位である第1のデータ記憶単位を前記第1の順序に従って決定する手段と、
    前記データマップ単位のうち最後に有効となり且つ連続したデータマップ単位であって、前記タイムスタンプのうちの1つと関連付けられたデータマップ単位を前記第2の順序に従って決定する手段であって、当該タイムスタンプのうちの1つは、前記データ記憶単位のうち前記最後に有効となり且つ連続したデータ記憶単位と関連付けられたタイムスタンプによって示される相対的経過時間と同一、またはそれよりも以前の相対的経過時間を示すものである、前記データマップ単位を第2の順序に従って決定する手段と、
    前記データ記憶単位のうち最新であって、前記タイムスタンプのうちの1つと関連付けられたデータ記憶単位である第2のデータ記憶単位を前記第1の順序に従って決定する手段であって、当該タイムスタンプのうちの1つは、前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位と関連付けられた前記タイムスタンプによって示される前記相対的経過時間に先行する所定の決定された量と同一、またはそれよりも先行する相対的経過時間を示すものである、前記第2のデータ記憶単位を前記第1の順序に従って決定する手段と、
    前記データ記憶単位のうち前記第2のデータ記憶単位から前記第1のデータ記憶単位までのデータ単位のみを使用して、前記データマップ単位のうち前記最後に有効となり且つ連続したデータマップ単位までのデータマップ単位を前記第1の順序および前記第2の順序に従って回復する手段と
    を有するものであるシステム。
  9. 請求項8記載のシステムにおいて、さらに、
    前記データマップ単位のうち変更され且つ以前に前記不揮発性メモリに書き込まれていなかったデータマップ単位ごとに、前記データ記憶単位のうち特定のデータ記憶単位と関連付けられたタイムスタンプと等しい最も古い更新と関連付けられたタイムスタンプを特定する手段であって、前記変更されたデータマップ単位は、前記不揮発性メモリ内に前記特定のデータ記憶単位に対応する位置を有するものである、前記特定する手段と、
    以前に前記不揮発性メモリに書き込まれていなかった前記変更されたデータマップ単位の各々を、前記変更されたデータマップ単位の最も古い更新と関連付けられたタイムスタンプに続く前記決定された量よりも大きいタイムスタンプのうちの1つと関連付けられた前記データ記憶単位のうちの1つを書き込む時点で、またはそれより前に、前記不揮発性メモリに書き込む手段と
    を有するものであるシステム。
  10. システムであって、
    記憶ストリームに従って不揮発性メモリ(NVM)に複数の記憶単位を書き込む手段であって、当該記憶単位の各々はデータ部分と、当該データ部分に対応するタイムスタンプ部分とを有するものである、前記記憶単位を書き込む手段と、
    マップストリームに従って前記不揮発性メモリに複数のマップ単位を書き込む手段であって、当該マップ単位の各々はエントリ部分と、当該エントリ部分に対応するタイムスタンプ部分とを有するものである、前記マップ単位を書き込む手段と
    を有し、
    前記各エントリ部分の少なくとも一部は、前記データ部分のうち少なくとも1つの対応するデータ部分を特定することによって、それぞれの論理ブロック(LB)が前記不揮発性メモリに書き込まれている場所を決定することを可能にし、
    時間的順序は前記タイムスタンプ部分によって示され、前記記憶単位のタイムスタンプ部分および前記マップ単位のタイムスタンプ部分は、タイムスタンプの相対的順序に従って単調に増加するものであり、
    前記不揮発性メモリに書き込まれた前記マップ単位のうち少なくとも1つが、1つの特定の時点で前記不揮発性メモリに書き込まれた前記記憶単位のタイムスタンプ部分のうち前記時間的順序において最も遅いものよりも遅いタイムスタンプ部分を有する少なくとも1つの特定の時点が存在するものである
    システム。
  11. 請求項10記載のシステムにおいて、前記記憶単位を書き込む手段は、前記記憶単位のタイムスタンプ部分によって示される前記時間的順序に対応する時間の順序で前記記憶単位を書き込み、前記マップ単位を書き込む手段は、前記マップ単位のタイムスタンプ部分によって示される前記時間的順序に対応する時間の順序で前記マップ単位を書き込むものであるシステム。
  12. 請求項10記載のシステムにおいて、さらに、
    チェックポイントストリームに従って前記不揮発性メモリに1若しくはそれ以上のチェックポイント単位を書き込む手段であって、当該チェックポイント単位の各々はマップ部分と当該マップ部分に対応するタイムスタンプ部分とを有するものである、前記チェックポイント単位を書き込む手段
    を有し、
    前記チェックポイントのタイムスタンプ部分は、前記タイムスタンプの相対的順序に従って単調に増加するものであるシステム。
  13. 請求項1、4、または10記載のシステムにおいて、さらに、
    ホストとインターフェースして前記不揮発性メモリから読み出され、かつ/または前記不揮発性メモリへ書き込まれる情報を通信する手段を有するものであるシステム。
  14. 請求項13記載のシステムにおいて、前記インターフェースする手段は、
    ユニバーサル・シリアル・バス(Universal Serial Bus:USB)インターフェース規格、
    コンパクトフラッシュ(登録商標)(Compact Flash:CF)インターフェース規格、
    マルチメディアカード(MultiMediaCard:MMC)インターフェース規格、
    組み込みMMC(embedded MMC:eMMC)インターフェース規格、
    サンダーボルト(Thunderbolt(商標))インターフェース規格、
    UFSインターフェース規格、
    セキュアディジタル(Secure Digital:SD)インターフェース規格、
    メモリ・スティック・インターフェース規格、
    xDピクチャ・カード・インターフェース規格、
    統合ドライブエレクトロニクス(Integrated Drive Electronics:IDE)インターフェース規格、
    シリアル・アドバンスド・テクノロジ・アタッチメント(Serial Advanced Technology Attachment:SATA)インターフェース規格、
    外部SATA(external SATA:eSATA)インターフェース規格、
    小型コンピュータ・システム・インターフェース(Small Computer System Interface:SCSI)インターフェース規格、
    シリアル小型コンピュータ・システム・インターフェース(Serial Attached Small Computer System Interface:SAS)インターフェース規格、
    ファイバ・チャネル・インターフェース規格、
    イーサネット(登録商標)(Ethernet(登録商標))インターフェース規格、
    周辺装置相互接続エクスプレス(Peripheral Component Interconnect express:PCIe)インターフェース規格
    のうち1若しくはそれ以上と適合するものであるシステム。
  15. 請求項13記載のシステムにおいて、前記ホストは、
    コンピュータ、
    ワークステーションコンピュータ、
    サーバコンピュータ、
    ストレージサーバ、
    ストレージ・アタッチト・ネットワーク(Storage Attached Network:SAN)、
    ネットワーク・アタッチト・ストレージ(Network Attached Storage:NAS)デバイス、
    ダイレクト・アタッチト・ストレージ(Direct Attached Storage:DAS)デバイス、
    ストレージアプライアンス、
    パーソナルコンピュータ(Personal Computer:PC)、
    ラップトップコンピュータ、
    ノートブックコンピュータ、
    ネットブックコンピュータ、
    タブレット機器またはタブレットコンピュータ、
    ウルトラブックコンピュータ、
    電子読み出し装置(e−reader)、
    携帯情報端末(Personal Digital Assistant:PDA)、
    ナビゲーションンシステム、
    (ハンドヘルド型)全地球測位システム(Global Positioning System:GPS)機器、
    自動通信路制御システム、
    自動車媒体制御システムまたはコンピュータ、
    プリンタ、コピー機またはファックス機またはオールインワン機器、
    販売時点(Point Of Sale:POS)機器、
    金銭登録機、
    メディアプレーヤ、
    テレビ、
    メディアレコーダ、
    ディジタル・ビデオ・レコーダ(Digital Video Recorder:DVR)、
    ディジタルカメラ、
    セルラハンドセット、
    コードレス電話機ハンドセット、および
    電子ゲーム
    のうち1若しくはそれ以上を有するシステム。
  16. 請求項15記載のシステムにおいて、さらに、
    前記ホストの全部またはいずれかの部分を有するものであるシステム。
  17. 請求項1、4、または10記載のシステムにおいて、さらに、
    前記不揮発性メモリの全部または部分を有する1若しくはそれ以上のフラッシュメモリとインターフェースする手段を有するものであるシステム。
  18. 請求項17記載のシステムにおいて、前記インターフェースする手段は、
    オープンNANDフラッシュインターフェース(Open NAND Flash Interface:ONFI)、
    トグルモードインターフェース、
    ダブルデータレート(Double−Data−Rate:DDR)同期インターフェース、
    DDR2同期インターフェース、
    同期インターフェース、および
    非同期インターフェース
    のうち1若しくはそれ以上と適合するものであるシステム。
  19. 請求項17記載のシステムにおいて、前記フラッシュメモリのうち少なくとも1つは、
    NANDフラッシュ技術記憶セル、および
    NORフラッシュ技術記憶セル
    のうち1若しくはそれ以上を有するものであるシステム。
  20. 請求項17記載のシステムにおいて、前記フラッシュメモリのうち少なくとも1つは、
    シングルレベルセル(Single−Level Cell:SLC)フラッシュ技術記憶セル、および
    マルチレベルセル(Multi−Level Cell:MLC)フラッシュ技術記憶セル
    のうち1若しくはそれ以上を有するものであるシステム。
  21. 請求項17記載のシステムにおいて、さらに、
    前記フラッシュメモリのうち全部または任意の1若しくはそれ以上を有するものであるシステム。
JP2014534661A 2011-10-05 2012-10-04 不揮発性記憶のための自己ジャーナリングおよび階層的整合性 Pending JP2014534503A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161543707P 2011-10-05 2011-10-05
US61/543,707 2011-10-05
PCT/US2012/058583 WO2013052562A1 (en) 2011-10-05 2012-10-04 Self-journaling and hierarchical consistency for non-volatile storage

Publications (1)

Publication Number Publication Date
JP2014534503A true JP2014534503A (ja) 2014-12-18

Family

ID=48044124

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014534661A Pending JP2014534503A (ja) 2011-10-05 2012-10-04 不揮発性記憶のための自己ジャーナリングおよび階層的整合性

Country Status (7)

Country Link
US (2) US8949517B2 (ja)
EP (1) EP2764516A4 (ja)
JP (1) JP2014534503A (ja)
KR (2) KR101562781B1 (ja)
CN (1) CN103392207B (ja)
TW (1) TWI516931B (ja)
WO (1) WO2013052562A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022234740A1 (ja) * 2021-05-06 2022-11-10 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、情報処理システム、および情報処理方法

Families Citing this family (139)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
WO2013022915A1 (en) 2011-08-09 2013-02-14 Lsi Corporation I/o device and computing host interoperation
EP2764516A4 (en) * 2011-10-05 2015-07-08 Lsi Corp SELF-HISTORIZATION AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORES
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9396110B2 (en) * 2012-12-21 2016-07-19 Advanced Micro Devices, Inc. Non-volatile hybrid memory
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9395924B2 (en) 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US10642505B1 (en) 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
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
US9454474B2 (en) * 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
KR102179669B1 (ko) * 2013-10-21 2020-11-17 아브 이니티오 테크놀로지 엘엘시 데이터 유닛들의 컬렉션 체크포인팅
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
CN103546579B (zh) * 2013-11-07 2017-01-04 陈靓 一种用数据日志提高分布式存储系统可用性的方法
US9244785B2 (en) * 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
KR102190670B1 (ko) * 2014-03-03 2020-12-14 삼성전자주식회사 마이그레이션 관리자를 포함하는 메모리 시스템
CN104899114B (zh) * 2014-03-07 2018-03-20 中国科学院苏州纳米技术与纳米仿生研究所 一种固态硬盘上的连续时间数据保护方法
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
WO2015147817A1 (en) * 2014-03-26 2015-10-01 Hewlett-Packard Development Company, L.P. Nvm object
CN104951383A (zh) * 2014-03-31 2015-09-30 伊姆西公司 用于监测硬盘的健康状况的方法和装置
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9606870B1 (en) * 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9990298B2 (en) 2014-05-12 2018-06-05 Western Digital Technologies, Inc System and method for caching solid state device read request results
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9208077B1 (en) 2014-05-30 2015-12-08 Avago Technologies General Ip (Singapore) Pte. Ltd. Forced map entry flush to prevent return of old data
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9690720B2 (en) 2014-06-03 2017-06-27 Qualcomm Incorporated Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US9632953B2 (en) 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
TWI540582B (zh) * 2014-07-10 2016-07-01 群聯電子股份有限公司 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9542118B1 (en) * 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US10025843B1 (en) 2014-09-24 2018-07-17 EMC IP Holding Company LLC Adjusting consistency groups during asynchronous replication
CN104461391B (zh) * 2014-12-05 2019-08-02 上海宝存信息科技有限公司 一种存储设备元数据管理处理方法及系统
US20160259754A1 (en) * 2015-03-02 2016-09-08 Samsung Electronics Co., Ltd. Hard disk drive form factor solid state drive multi-card adapter
CN106155812A (zh) 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US10089196B2 (en) 2015-07-14 2018-10-02 Shannon Systems Ltd. Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same
CN106648439B (zh) * 2015-07-14 2019-11-29 上海宝存信息科技有限公司 于控制逻辑错误时重新配置存储控制器的方法及装置
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US11983138B2 (en) 2015-07-26 2024-05-14 Samsung Electronics Co., Ltd. Self-configuring SSD multi-protocol support in host-less environment
US10108503B2 (en) * 2015-08-24 2018-10-23 Western Digital Technologies, Inc. Methods and systems for updating a recovery sequence map
US10552335B2 (en) * 2015-09-25 2020-02-04 Beijing Lenovo Software Ltd. Method and electronic device for a mapping table in a solid-state memory
US10019193B2 (en) * 2015-11-04 2018-07-10 Hewlett Packard Enterprise Development Lp Checkpointing a journal by virtualization of non-volatile random access memory
CN105512054B (zh) * 2015-12-09 2018-11-09 上海兆芯集成电路有限公司 主机接口控制器以及储存装置控制方法
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US9927985B2 (en) * 2016-02-18 2018-03-27 SK Hynix Inc. Method of dynamic table journaling
US10866905B2 (en) 2016-05-25 2020-12-15 Samsung Electronics Co., Ltd. Access parameter based multi-stream storage device access
US9830098B1 (en) 2016-07-11 2017-11-28 Silicon Motion, Inc. Method of wear leveling for data storage device
US11144496B2 (en) 2016-07-26 2021-10-12 Samsung Electronics Co., Ltd. Self-configuring SSD multi-protocol support in host-less environment
US10210123B2 (en) 2016-07-26 2019-02-19 Samsung Electronics Co., Ltd. System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices
US10346041B2 (en) 2016-09-14 2019-07-09 Samsung Electronics Co., Ltd. Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host
US10372659B2 (en) 2016-07-26 2019-08-06 Samsung Electronics Co., Ltd. Multi-mode NMVE over fabrics devices
US11461258B2 (en) 2016-09-14 2022-10-04 Samsung Electronics Co., Ltd. Self-configuring baseboard management controller (BMC)
US9946489B2 (en) * 2016-07-27 2018-04-17 Western Digital Technologies, Inc. Multi-stream journaled replay
US10229000B2 (en) 2016-08-09 2019-03-12 Seagate Llc Erasure codes to prevent lower page corruption in flash memory
KR102229013B1 (ko) * 2016-09-02 2021-03-17 삼성전자주식회사 자동 스트림 검출 및 할당 알고리즘
US20180101312A1 (en) * 2016-10-06 2018-04-12 Netflix, Inc. Techniques for generating and operating on in-memory datasets
US9678837B1 (en) 2016-10-14 2017-06-13 International Business Machines Corporation Variable checkpointing in a streaming application with one or more consistent regions
US9720785B1 (en) 2016-10-14 2017-08-01 International Business Machines Corporation Variable checkpointing in a streaming application that includes tuple windows
CN108153482B (zh) * 2016-12-05 2021-09-07 厦门旌存半导体技术有限公司 Io命令处理方法与介质接口控制器
US10719495B2 (en) * 2017-02-09 2020-07-21 Micron Technology, Inc. Stream selection for multi-stream storage devices
US10303560B2 (en) * 2017-02-14 2019-05-28 Dell Products L.P. Systems and methods for eliminating write-hole problems on parity-based storage resources during an unexpected power loss
JP6779821B2 (ja) * 2017-03-24 2020-11-04 キオクシア株式会社 メモリシステム及びデータの読み出し方法
US20180300083A1 (en) * 2017-04-12 2018-10-18 Hewlett Packard Enterprise Development Lp Write-ahead logging through a plurality of logging buffers using nvm
CN108733575B (zh) * 2017-04-20 2022-12-27 深圳市得一微电子有限责任公司 一种断电重启后逻辑对物理映像表的重建方法、固态硬盘
US11048624B2 (en) * 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10528295B2 (en) * 2017-04-29 2020-01-07 International Business Machines Corporation Intra-tier data migration to segregate zombie storage from dead storage
KR102234725B1 (ko) * 2017-05-30 2021-04-02 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법
US10635654B2 (en) * 2017-06-12 2020-04-28 Samsung Electronics Co., Ltd. Data journaling for large solid state storage devices with low DRAM/SRAM
US10691340B2 (en) * 2017-06-20 2020-06-23 Samsung Electronics Co., Ltd. Deduplication of objects by fundamental data identification
US10275162B2 (en) 2017-06-23 2019-04-30 Dell Products L.P. Methods and systems for managing data migration in solid state non-volatile memory
US10176046B1 (en) * 2017-06-29 2019-01-08 EMC IP Holding Company LLC Checkpointing of metadata into user data area of a content addressable storage system
TWI633434B (zh) * 2017-07-12 2018-08-21 宏碁股份有限公司 管理固態硬碟之方法、系統及電腦可讀取媒體
CN107728937B (zh) * 2017-09-15 2020-09-04 上海交通大学 一种使用非易失性内存介质的键值对持久存储方法及系统
CN107784121B (zh) * 2017-11-18 2020-04-24 中国人民解放军国防科技大学 一种基于非易失内存的日志文件系统的小写优化方法
KR20190074886A (ko) * 2017-12-20 2019-06-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US20190214087A1 (en) * 2018-01-09 2019-07-11 Western Digital Technologies, Inc. Non-volatile storage system with decoupling of write transfers from write operations
TWI662409B (zh) * 2018-01-23 2019-06-11 祥碩科技股份有限公司 實體區域頁面位址轉換器與實體區域頁面清單存取方法
US10691354B1 (en) 2018-01-31 2020-06-23 EMC IP Holding Company LLC Method and system of disk access pattern selection for content based storage RAID system
TWI651650B (zh) * 2018-02-05 2019-02-21 大陸商深圳大心電子科技有限公司 記憶體管理方法及使用所述方法的儲存控制器
US10585791B2 (en) * 2018-03-20 2020-03-10 Intel Corporation Ordering of memory device mapping to reduce contention
US10636495B2 (en) 2018-06-12 2020-04-28 Western Digital Technologies, Inc. Adjustable read retry order based on decoding success trend
US11347653B2 (en) * 2018-08-31 2022-05-31 Nyriad, Inc. Persistent storage device management
CN110928737B (zh) * 2018-09-19 2021-05-18 华为技术有限公司 监控样本进程的内存访问行为的方法和装置
US10922178B2 (en) * 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
CN111143230B (zh) * 2018-11-02 2022-03-29 群联电子股份有限公司 数据整并方法、存储器存储装置及存储器控制电路单元
TWI709042B (zh) 2018-11-08 2020-11-01 慧榮科技股份有限公司 用來進行關於容錯式磁碟陣列的映射資訊管理之方法與裝置以及儲存系統
CN109450689B (zh) * 2018-11-19 2022-02-22 郑州云海信息技术有限公司 一种日志打印方法、装置、存储介质和计算机设备
CN109558337B (zh) * 2018-11-30 2023-09-19 北京同有飞骥科技股份有限公司 高速缓存的动态访问方法、装置及存储介质
US10845991B2 (en) * 2018-12-03 2020-11-24 EMC IP Holding Company LLC Shallow memory table for data storage service
US11163693B2 (en) * 2019-07-30 2021-11-02 EMC IP Holding Company LLC Hash-based one-level mapping for storage clusters
TWI743562B (zh) * 2019-09-11 2021-10-21 英業達股份有限公司 資料記錄系統的操作方法
KR20210041159A (ko) 2019-10-04 2021-04-15 삼성전자주식회사 정정 가능한 독출 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법
KR20210041158A (ko) 2019-10-04 2021-04-15 삼성전자주식회사 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법
KR102691952B1 (ko) * 2019-10-14 2024-08-06 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 데이터 저장 시스템
US11726921B2 (en) * 2020-05-21 2023-08-15 Seagate Technology Llc Combined page footer for parallel metadata storage
US11620234B2 (en) 2020-06-29 2023-04-04 Western Digital Technologies, Inc. Operation-deterministic write operations for data recovery and integrity checks
TWI733568B (zh) * 2020-08-27 2021-07-11 慧榮科技股份有限公司 記憶裝置、快閃記憶體控制器及其存取方法
KR20220037184A (ko) * 2020-09-17 2022-03-24 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 시스템의 동작 방법
KR20220101349A (ko) 2021-01-11 2022-07-19 삼성전자주식회사 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
CN113255262B (zh) * 2021-06-07 2021-09-28 上海国微思尔芯技术股份有限公司 对象分配方法、装置、计算机设备和存储介质
TWI773395B (zh) 2021-06-22 2022-08-01 慧榮科技股份有限公司 記憶體控制器與連結識別方法
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
US20230119926A1 (en) * 2021-10-15 2023-04-20 Vmware, Inc. Supporting random access uploads to an object store
KR102497130B1 (ko) 2021-11-11 2023-02-07 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
JP7457740B2 (ja) * 2022-03-03 2024-03-28 株式会社日立製作所 ストレージシステム及びその制御方法
CN118519667A (zh) * 2024-07-23 2024-08-20 深圳佰维存储科技股份有限公司 Ufs元数据重建方法、装置、可读存储介质及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153235A (ja) 1997-08-08 1999-02-26 Toshiba Corp ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
KR100445134B1 (ko) 2002-01-31 2004-08-21 삼성전자주식회사 플래시 메모리 안정화기능을 구비한 호스트 기기 및 그 방법
US6968439B2 (en) * 2002-08-29 2005-11-22 Micron Technology, Inc. Single segment data object management
US20060174067A1 (en) * 2005-02-03 2006-08-03 Craig Soules Method of caching data
US7594073B2 (en) * 2006-09-29 2009-09-22 Intel Corporation Method and apparatus for caching memory content on a computing system to facilitate instant-on resuming from a hibernation state
TW201007734A (en) * 2008-08-06 2010-02-16 Genesys Logic Inc Flash memory control apparatus having signal-converting module
US7925925B2 (en) * 2008-12-30 2011-04-12 Intel Corporation Delta checkpoints for a non-volatile memory indirection table
CN101576834B (zh) 2009-05-08 2012-05-30 西安蓝海本立信息科技有限公司 基于时间戳建立数据视图的连续数据保护系统及方法
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
CN101930404B (zh) 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
EP2764516A4 (en) * 2011-10-05 2015-07-08 Lsi Corp SELF-HISTORIZATION AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORES

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022234740A1 (ja) * 2021-05-06 2022-11-10 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、情報処理システム、および情報処理方法

Also Published As

Publication number Publication date
EP2764516A1 (en) 2014-08-13
EP2764516A4 (en) 2015-07-08
US8949517B2 (en) 2015-02-03
KR20140084337A (ko) 2014-07-04
TWI516931B (zh) 2016-01-11
CN103392207B (zh) 2017-08-04
US20140082261A1 (en) 2014-03-20
KR20130132662A (ko) 2013-12-04
WO2013052562A1 (en) 2013-04-11
CN103392207A (zh) 2013-11-13
KR101562781B1 (ko) 2015-10-23
TW201324150A (zh) 2013-06-16
US20170161191A1 (en) 2017-06-08
KR101522848B1 (ko) 2015-05-26
US9886383B2 (en) 2018-02-06

Similar Documents

Publication Publication Date Title
JP2014534503A (ja) 不揮発性記憶のための自己ジャーナリングおよび階層的整合性
JP6387231B2 (ja) 不揮発性メモリへの書き込みの管理および領域選択
JP6045567B2 (ja) 不揮発性記憶のための可変オーバープロビジョニング
JP6265746B2 (ja) 記憶アドレス空間と不揮発性メモリのアドレス、範囲、および長さとの間のマッピング/変換
JP6285709B2 (ja) 冗長アレイによる不揮発性メモリのプログラム障害回復
US9213633B2 (en) Flash translation layer with lower write amplification
JP6082389B2 (ja) ホストから見たデバイスファームウェア更新の影響の管理
TWI506431B (zh) 虛擬記憶體設備驅動器、用於在主機上執行之虛擬記憶體設備驅動器、刷新快閃記憶體的方法、快閃記憶體刷新的方法、超級增強耐力設備硬碟固體狀態驅動機耐用轉換層之方法、超級增強耐力設備及耐力快閃記憶體檔案系統
TWI584125B (zh) 輸入/輸出裝置及計算主機相互運作
US9047178B2 (en) Auto-commit memory synchronization
JP6443794B2 (ja) ホストとコントローラとの間でパーティション化された変換レイヤ
JP2014507717A (ja) より高いレベルの冗長な情報の計算
TW201413726A (zh) 用於非揮發性記憶體之混和粒度較高位準冗餘
KR20110096813A (ko) 저장 장치 및 컴퓨팅 시스템 그리고 그것의 데이터 관리 방법