JP2016051481A - 非一時的なコンピュータ可読媒体、記憶装置、およびデータを管理するための方法 - Google Patents
非一時的なコンピュータ可読媒体、記憶装置、およびデータを管理するための方法 Download PDFInfo
- Publication number
- JP2016051481A JP2016051481A JP2015168994A JP2015168994A JP2016051481A JP 2016051481 A JP2016051481 A JP 2016051481A JP 2015168994 A JP2015168994 A JP 2015168994A JP 2015168994 A JP2015168994 A JP 2015168994A JP 2016051481 A JP2016051481 A JP 2016051481A
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- lived
- page
- flag
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of 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)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】記憶システム内のデータを管理するために、ガベージコレクタを用いて、使用されていないデータからメモリを解放する。【解決手段】データを管理する方法を提供する。この方法は、データを永続記憶域に書込む第1リクエストを受信するステップと、第1リクエストに応じて、前述のデータを永続記憶域内の短期存続ブロックに書込むステップとを含む。前述のデータは、短期存続データまたは存続期間未知のデータである。この方法はさらに、修正したガーベッジコレクション操作を実行するステップを含む。この修正したガーベッジコレクション操作は、第1ブロックから第1フラグページを選択するステップと、第1フラグページが使用可能であることを判断するステップと、第1フラグページが使用可能である判断に基づき、第1フラグページを永続記憶域内の長期存続ブロックに移行するステップとを含む。長期存続ブロックは、短期存続ブロックと別体であり、短期存続データを記憶しない。【選択図】図3
Description
背景
一ブロックのデータを記憶システムに書込む場合、平均で一ブロックのデータの半分を移動する必要がしばしばある。よって、記憶システムにデータを書込むことは、システム上に大幅な遅延を引起し、その結果、システムの全体的な性能を低下する。一般的には、記憶システム内のデータを管理するために、ガベージコレクタを用いて、使用されていないデータからメモリを解放する。
一ブロックのデータを記憶システムに書込む場合、平均で一ブロックのデータの半分を移動する必要がしばしばある。よって、記憶システムにデータを書込むことは、システム上に大幅な遅延を引起し、その結果、システムの全体的な性能を低下する。一般的には、記憶システム内のデータを管理するために、ガベージコレクタを用いて、使用されていないデータからメモリを解放する。
概要
一般に、一局面において、本発明は、プロセッサによって実行されると方法を実行する命令を含む非一時的なコンピュータ可読媒体に関する。この方法は、データを永続記憶域に書込む第1リクエストを受信するステップと、第1リクエストに応じて、データを永続記憶域内の短期存続ブロックに書込むステップとを含み、データは、短期存続データであり、修正したガーベッジコレクション操作を実行するステップを含む。修正したガーベッジコレクション操作は、第1ブロックから第1フラグページを選択するステップと、第1フラグページが使用可能であることを判断するステップと、第1フラグページが使用可能である判断に基づき、第1フラグページを永続記憶域内の長期存続ブロックに移行するステップとを含む。長期存続ブロックは、短期存続ブロックと別体であり、長期存続ブロックは、短期存続データを記憶しない。
一般に、一局面において、本発明は、プロセッサによって実行されると方法を実行する命令を含む非一時的なコンピュータ可読媒体に関する。この方法は、データを永続記憶域に書込む第1リクエストを受信するステップと、第1リクエストに応じて、データを永続記憶域内の短期存続ブロックに書込むステップとを含み、データは、短期存続データであり、修正したガーベッジコレクション操作を実行するステップを含む。修正したガーベッジコレクション操作は、第1ブロックから第1フラグページを選択するステップと、第1フラグページが使用可能であることを判断するステップと、第1フラグページが使用可能である判断に基づき、第1フラグページを永続記憶域内の長期存続ブロックに移行するステップとを含む。長期存続ブロックは、短期存続ブロックと別体であり、長期存続ブロックは、短期存続データを記憶しない。
一般に、一局面において、本発明は、データを管理するための方法に関する。この方法は、データを永続記憶域に書込む第1リクエストを受信するステップと、第1リクエストに応じて、データを永続記憶域内の短期存続ブロックに書込むステップとを含み、データは、短期存続データおよび存続期間未知のデータからなる群から選択され、修正したガーベッジコレクション操作を実行するステップを含む。修正したガーベッジコレクション操作は、第1ブロックから第1フラグページを選択するステップと、第1フラグページが使用可能であることを判断するステップと、第1フラグページが使用可能である判断に基づき、第1フラグページを永続記憶域内の長期存続ブロックに移行するステップとを含む。長期存続ブロックは、短期存続ブロックと別体であり、長期存続ブロックは、短期存続データを記憶しない。
一般に、一局面において、本発明は、記憶装置に関する。この記憶装置は、永続記憶域と、命令を含む非一時的なコンピュータ可読媒体と、命令を実行するように構成されたプロセッサとを含み、命令は、プロセッサによって実行されると方法を実行する。この方法は、(a)データを永続記憶域に書込む第1リクエストを受信するステップと、(b)第1リクエストに応じて、データを永続記憶域内の短期存続ブロックに書込むステップとを含み、データは、短期存続データおよび存続期間未知のデータからなる群から選択され、(c)修正したガーベッジコレクション操作を実行するステップを含む。修正したガーベッジコレクション操作は、第1ブロックから第1フラグページを選択するステップと、第1フラグページが使用可能であることを判断するステップと、第1フラグページが使用可能である判断に基づき、第1フラグページを永続記憶域内の長期存続ブロックに移行するステップとを含む。長期存続ブロックは、短期存続ブロックと別体であり、長期存続ブロックは、短期存続データを記憶せず、修正したガーベッジコレクション操作の少なくとも一部は、(a)および(2)からなる群から選択される少なくとも1つの操作と並行して実行される。
本発明の他の局面は、以下の説明および添付の特許請求の範囲から明らかになるであろう。
詳細な説明
本発明の特定の実施形態は、添付の図面を参照して詳細に説明する。以下、本発明の実施形態の詳細な説明において、本発明に対するより完全な理解を提供するために、特定の詳細が多く記載されている。しかしながら、これらの特定の詳細なしに本発明を実施できることは、当業者にとって明らかであろう。他の例において、説明を必要以上に複雑化しないように、周知の特徴は、詳細に記載されていない。
本発明の特定の実施形態は、添付の図面を参照して詳細に説明する。以下、本発明の実施形態の詳細な説明において、本発明に対するより完全な理解を提供するために、特定の詳細が多く記載されている。しかしながら、これらの特定の詳細なしに本発明を実施できることは、当業者にとって明らかであろう。他の例において、説明を必要以上に複雑化しないように、周知の特徴は、詳細に記載されていない。
図1〜6Bに関する以下の説明では、本発明のさまざまな実施形態において、1つの図面に関連して説明した構成要素は、他の図面に関連して説明した1つ以上の同様な名前を有する構成要素に相当してもよい。簡潔のために、これらの構成要素は、各図に関して繰返して説明しない。したがって、各図面の構成要素の各実施形態は、いずれも参照により1つ以上の同様な名前の構成要素を有する他のすべての図面に組込まれ、必要に応じて存在すると想定される。さらに、本発明のさまざまな実施形態に係る図面の構成要素の説明は、対応している他の図面の同様な名前を有する構成要素に関連して説明した実施形態に加えて、またはその実施形態と合わせて、またはその実施形態の代わりに実施することができる任意の実施形態であるように解釈されるべきである。
一般に、本発明の実施形態は、データの存続期間を用いて、記憶装置に記憶されているデータまたは書込まれたデータをソートする方法およびシステムに関する。具体的には、本発明の実施形態は、永続的データを短期存続データと別々に記憶することに関する。本発明の1つ以上の実施形態によれば、存続期間に基づいてデータをソートすることによって、記憶装置の書込み量を減少することができる。本発明の1つ以上の実施形態において、書込み量は、記憶装置に各データを書込むのに必要されたデータ移行の回数に対応している。プログラム/消去サイクルの数は、固体メモリモジュールの使用期間を低下する可能性があるため、書込み量の減少は、性能上有利である。
図1は、本発明の一実施形態に係るシステムを示している。図1に示すように、このシステムは、1つ以上のクライアント(1)と記憶装置(102)とを含む。以下、各構成要素について説明する。
本発明の1つ以上の実施形態において、クライアント(100)は、読出しリクエストおよび/または書込みリクエストを記憶装置(102)に指示する機能を含むシステム上で実行される任意のシステムまたはプロセスである。本発明の1つ以上の実施形態において、各クライアント(100)は、プロセッサ(図示せず)と、メモリ(図示せず)と、永続記憶域(図示せず)とを含むことができる。
本発明の1つ以上の実施形態において、クライアント(100)は、記憶装置(102)に動作可能に接続されている。本発明の1つ以上の実施形態において、記憶装置(102)は、揮発性記憶域および永続記憶域を含み、1つ以上のクライアント(100)からの読み出しリクエストおよび/または書込みリクエストを処理するように構成されたシステムである。記憶装置(102)はさらに、修正したガーベッジコレクション操作を実行するように構成されている。この修正したガーベッジコレクション操作は、以下(たとえば、図4を参照)に説明したガーベッジコレクション操作と一致する方法で、任意のコンテンツエントリ表(TOC)およびフラグを長期存続ブロックに移行することを含む。記憶装置(102)はさらに、以下(たとえば、図3を参照)に説明した方法と一致する方法で、書込みリクエストに応じてデータを記憶装置に記憶するように構成されている。
本発明の1つ以上の実施形態において、記憶装置(102)は、プロセッサ(104)と、メモリ(106)と、1つ以上の固体メモリモジュール(たとえば、固体メモリモジュールA(110A)、固体メモリモジュールB(110B)、固体メモリモジュールN(110N))とを含む。
本発明の1つ以上の実施形態において、メモリ(106)は、任意の揮発性メモリであってもよい。揮発性メモリは、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM、SDR SDRAM、およびDDR SDRAMを含むが、これらに限定されない。本発明の1つ以上の実施形態において、メモリ(106)は、(TOCエントリおよびフラグ用のデータを含む)さまざまなデータを固体メモリモジュール(たとえば、110A、110B、110N)に記憶する前に、そのデータを一時的に記憶するように構成されている。メモリ(106)は、プロセッサ(104)に動作可能に接続されている。
本発明の1つ以上の実施形態において、プロセッサ(104)は、命令を実行するように構成されたシングルコアまたはマルチコアを有する電子回路群である。プロセッサ(104)は、本発明の1つ以上の実施形態を実現するための命令を実行するように構成されている。これらの命令は、記憶装置(102)の内部に配置されまたは記憶装置(102)に動作可能に接続されている非一時的なコンピュータ可読媒体(図示せず)に記憶されている。代替的に、記憶装置(102)は、ハードウェアを用いて実現することができる。記憶装置(102)は、本発明から逸脱することなく、ソフトウェアおよび/またはハードウェアの任意の組合わせを用いて実現することができる。
本発明の1つ以上の実施形態においては、記憶装置(102)は、インメモリデータ構造(108)を作成および更新するように構成されている。このインメモリデータ構造は、メモリ(106)に記憶されている。本発明の1つ以上の実施形態において、インメモリデータ構造は、論理アドレスと物理アドレスとの間の(直接的または間接的な)マッピングを含む。本発明の1つ以上の実施形態において、論理アドレスは、クライアント(100)の視点から見れば、データが存在するアドレスである。本発明の1つ以上の実施形態において、論理アドレスは、ハッシュ関数(たとえば、SHA−1、MD−5など)をnタプルに適用することによって生成されたハッシュ値である(またはハッシュ値を含む)。本発明の1つ以上の実施形態において、nタプルは、<オブジェクトID、オフセットID>である。オブジェクトIDは、オブジェクト(たとえば、ファイル)を規定し、オフセットIDは、オブジェクトの開始アドレスに関連する位置を規定する。本発明の別の実施形態において、nタプルは、<オブジェクトID、オフセットID、生成時間>である。生成時間は、(オブジェクトIDを用いて識別された)ファイルの作成時間に対応する。代替的に、論理アドレスは、論理オブジェクトIDおよび論理バイトアドレス、または論理オブジェクトIDおよび論理アドレスオフセットを含むことができる。本発明の別の実施形態において、論理アドレスは、オブジェクトIDおよびオフセットIDを含む。当業者であれば、複数の論理アドレスが単一の物理アドレスにマッピングされることができ、論理アドレスが上記の実施形態に限定されないことを理解するであろう。
本発明の1つ以上の実施形態において、物理アドレスは、メモリ(106)の内部位置または固体メモリモジュール(たとえば、110A、110B、110N)の内部位置に対応することができる。本発明の1つ以上の実施形態において、複数のコピーのデータが記憶装置(102)内に存在する場合、インメモリデータ構造は、単一のハッシュ値を複数の物理アドレスにマッピングすることができる。
本発明の1つ以上の実施形態において、固体メモリモジュール(たとえば、110A、110B、110N)は、固体メモリを用いて長期存続データを記憶する任意のデータ記憶装置に相当する。本発明の1つ以上の実施形態において、固体メモリは、NANDフラッシュメモリ、NORフラッシュメモリ、磁気RAMメモリ(M−RAM)、スピントルク磁気RAMメモリ(ST−MRAM)、相変化メモリ(PCM)、または不揮発性記憶種メモリ(SCM)として定義された任意の他のメモリを含むことができ、これらに限定されない。
当業者であれば、本発明は、図1に示した構成に限定されるものではないことを理解するであろう。
以下の説明は、固体メモリ装置を用いて実現された本発明の実施形態を説明する。図2Aを参照して、図2Aは、本発明の1つ以上の実施形態に従ったデータ記憶装置(図示せず)の固体メモリモジュールを示している。データ記憶装置(図示せず)は、複数の固体メモリモジュールを含むことができる。固体メモリモジュール(200)は、1つ以上のブロックを含む。本発明の1つ以上の実施形態において、ブロックとは、固体メモリモジュール(200)内部に位置する最小の消去可能な記憶単位である。
図2Bは、本発明の1つ以上の実施形態に係るブロックを示している。より具体的には、各ブロック(202)は、1つ以上のページを含む。本発明の1つ以上の実施形態において、ページとは、固体メモリモジュールの内部において、読出しおよび(ページに初期の書込みを含む)プログラム動作用の最小のアドレス可能な単位である。本発明の1つ以上の実施形態において、ブロック内の各ページは、フラグページ(図2Cを参照)またはフラグページ(図2Dを参照)のいずれかである。
本発明の1つ以上の実施形態において、ブロック内のページを書換えることは、ブロックの全体を書換える必要がある。ブロックには、限られた数のプログラム(たとえば書込み)/消去サイクルを有する。プログラム/消去サイクルは、1つ以上のページをブロックに書込んだ後、ブロック全体を消去することを含む。1つのブロック内のページを別のブロックに移行することによって、プログラム/消去サイクルの数をブロック全体に亘って同様に維持することができる。これは、「ウェアレベリング」(Wear Leveling)と呼ばれる。
本発明の1以上の実施形態において、長期存続ブロックとは、永続データを記憶するブロックである。永続データとは、少なくとも1つのガベージコレクションサイクルを超える存続期間を有するデータである。換言すれば、データが使用可能ページに関連付けられている場合(図4のステップ414を参照)、そのデータは、永続データ(「長期存続データ」とも呼ばれる)であると判断される。本発明の1つ以上の実施形態において、ガーベッジコレクションサイクルは、記憶装置内部のブロックに対し、修正したガーベッジコレクション操作(図4を参照)をブロック毎に反復して実行することに相当する。本発明の1つ以上の実施形態において、短期存続ブロックとは、短期存続データまたは存続期間未知のデータのいずれかを記憶するブロックである。本発明の1つ以上の実施形態に従って、存続期間未知のデータは、短期存続データであると仮定される。本発明の1つ以上の実施形態において、短期存続ブロックに位置する短期存続データは、長期存続ブロックに位置する長期存続データとは別々に記憶されている。本発明の1つ以上の実施形態において、短期存続データは、ガベージコレクションサイクルが終わる前に、古くなるまたは廃止される(すなわち、使わなくなる)可能性がある。換言すれば、短期存続データは、使用不可になる(たとえば、古くなるまたは廃止される)可能性が高いため、修正したガーベッジコレクション操作(図4を参照)において移行されない。代替的に、未知の存続期間を有するデータを短期存続データとして仮定されているが、そのデータが長期存続データである可能性もある(たとえば、図4のステップ414を参照するように、未知の存続期間を有するデータは、ガベージコレクション処理の間に使用可能ページに位置する場合、長期存続データとして認められてもよいだろう)。
図2Cは、本発明の1つ以上の実施形態に係るフラグページを示している。本発明の1つ以上の実施形態において、フラグページ(204)は、1つ以上のフラグを含む。本発明の1つ以上の実施形態において、フラグは、有限量のユーザデータ(たとえば、クライアントによって提供され、記憶装置に記憶されたデータ)に相当する。また、指定ページ内のフラグは、均一なサイズまたは不均一なサイズを有してもよい。さらに、指定ブロック内のフラグは、均一なサイズまたは不均一なサイズを有してもよい。本発明の1つ以上の実施形態において、指定フラグは、ページのサイズより小さくてもよく、ページのサイズと同一であってもよく、または1つ以上のページを跨ってもよい。本発明の1つ以上の実施形態において、フラグページは、フラグのみを含む。本発明の1つ以上の実施形態において、各フラグは、ユーザデータを含む。
図2Dは、本発明の1つ以上の実施形態に係るTOCページを示している。本発明の1つ以上の実施形態において、TOCページ(206)は、1つ以上のTOCエントリを含む。TOCエントリの各々は、指定フラグに対応するメタデータを含む。また、フラグページ(206)は、ブロック(202)内部の別のフラグページへの参照を含むことができる。本発明の1つ以上の実施形態において、TOCページは、TOCエントリのみ(必要に応じて、ブロック内部の別のフラグページへの参照と)を含み、フラグを含まない。本発明の1つ以上の実施形態において、各TOCエントリは、ブロック(202)内部のフラグ(図2Cを参照)に相当する。TOCエントリは、ブロック内のフラグのみに対応している。換言すれば、TOCページは、ブロックに関連しており、そのブロック内のフラグに対応するTOCエントリのみを含む。本発明の1つ以上の実施形態において、各固体メモリモジュール内の各ブロックに存在している欠陥のない最終ページが、TOCページである。
図2Eは、本発明の1つ以上の実施形態に係るブロックの一例を示している。より具体的には、図2Eは、TOCページ(210、212、214)と、フラグページ(216、218、220、222、224、226)とを含むブロック(208)を示している。本発明の1つ以上の実施形態において、ブロック(208)は、概念上、「底部」から「頂部」に充填される。さらに、TOCページは、フラグページ内のフラグに対応するTOCエントリの累計サイズがページのサイズと等しくなるときに、作成され、記憶される。図2Eを参照して、たとえば、フラグページ0(216)およびフラグページ1(218)は、ブロック(208)に記憶されている。フラグページ0(216)およびフラグページ1(218)内のフラグ(図示せず)に対応するTOCエントリ(図示せず)は、ブロック内のページのサイズに等しい総累計サイズを有する。したがって、TOCページ(214)は、(ブロック内のフラグに対応するTOCエントリを用いて)生成され、ブロック(208)に記憶される。その後、フラグページ2(220)は、ブロック(208)に書込まれる。フラグページ2(220)内のフラグ(図示せず)に対応するTOCエントリがブロック内のページのサイズに等しい総累計サイズを有するため、TOCページ(212)は、作成され、ブロック(208)に記憶される。さらに、ブロック(208)に既にTOCページが存在しているため、TOCページ(212)は、TOCページ(214)への参照をさらに含む。
このプロセスは、ブロック(208)内に充填するページが1つしか残らないまで反復される。この時点で、TOCページ(210)が作成され、ブロック(208)の最終ページに記憶される。当業者であれば、TOCページ(210)内のTOCエントリの累計サイズは、ページのサイズより小さくてもよいことを理解するであろう。このような場合に、TOCページは、TOCエントリの総累計サイズとページサイズとの差を対処するために、パディングを含むことができる。最後に、ブロック(208)に他のTOCページが存在しているため、TOCページ(210)は、1つの他のTOCページ(212)への参照をさらに含む。
図2Eに示すように、TOCページは、ブロックの「頂部」からページの「底部」にリンクされている。これにより、TOCページの「上方」にあるTOCページからの参照に従って、TOCページを得ることができる。たとえば、TOCページ(210)内の参照を用いて、TOCページ(212)にアクセスすることができる。
当業者であれば、ブロック(208)は、フラグページおよびTOCページのみを含むが、本発明から逸脱することなく、フラグページおよびTOCページ以外の他のページ(たとえば、パリティデータを含むページ)を含んでもよいことを理解するであろう。このような他のページは、ブロック内に存在してもよく、実装に応じてTOCページとフラグページとの間に挟まれてもよい。
図2Fは、本発明の1つ以上の実施形態に係るTOCエントリを示している。本発明の1つ以上の実施形態において、各TOCエントリ(230)は、フラグに対応するメタデータを含み、1つ以上の以下のフィールド、すなわち、(i)記憶されているオブジェクトを識別するためのオブジェクトID(232)、(ii)TOCエントリに対応するフラグが固体メモリモジュールに書込まれた時間(たとえば、制御モジュール内に配置されたプロセッサのプロセッサクブロック値)を指定するための生成時間(234)、(iii)(オブジェクトIDによって識別される)オブジェクトの先頭に関連するオブジェクトの位置点を特定するためのオフセットID(236)、(iv)フラグのサイズを指定するためのフラグメントサイズ(238)、(v)フラグが記憶されているブロック内のページを識別するためのページID(240)、および(vi)(ページIDによって識別された)ページ内のフラグの開始位置を特定するためのバイト(242)を含んでもよい。TOCエントリ(230)は、本発明から逸脱することなく、他のフィールド(248)を含んでもよい。
当業者であれば、TOCエントリは、本発明から逸脱することなく、図2Fに示されたフィールドによりも、追加のフィールドまたは少ないフィールドを含むことができることを理解するであろう。また、本発明から逸脱することなく、TOCエントリのフィールドを異なる順序で配置してもよくおよび/または組合わせてもよい。さらに、図2Fに示されているTOCエントリ内のフィールドがすべて同一のサイズを有するように見えるが、TOCエントリ内のさまざまなフィールドの大きさが不均一であってもよく、任意の指定フィールドのサイズがTOCエントリの実装に応じて変化してもよい。
フローチャートを参照して、フローチャート内のさまざまなステップが連続的に示され記載されているが、当業者であれば、一部またはすべてのステップは、異なる順序で実行されてもよく、組合わせられまたは省略されてもよく、一部またはすべてのステップは、並行に実行されてもよいことを理解するであろう。本発明の1つ以上の実施形態において、図3および図4に示された1つ以上のステップは、図3および図4に示された1つ以上の他のステップと並行に実行されてもよい。より具体的には、図3の受信した書込みリクエストおよび図4の修正したガーベッジコレクション操作は、並行に行われてもよい。よって、本発明の1つ以上の実施形態によれば、データの存続期間に基づき、記憶装置内のデータをソートすることは、書込みリクエストによってデータ(長期存続データであることが分かった場合)を潜在的に合体すること、および修正したガーベッジコレクション操作によってデータを移行することを生じさせることができる。
図3を参照して、図3は、本発明の1つ以上の実施形態に従った書込みリクエストを受信するためのフローチャートを示している。
ステップ302では、データを記憶装置に書込むための書込みリクエストがクライアントから受信される。このリクエストは、記憶すべきデータを含んでもよく、記憶すべきデータへの参照を含んでもよい。このリクエストは、本発明から逸脱することなく、任意の形態をとることができる。
ステップ304では、データが永続データであるか否かを判断する。本発明の1つ以上の実施形態において、データが永続データであることを判断することは、データが永続的であることを記憶装置に伝達するアプリケーションプログラミングインタフェース(API)を介して行うことができる。たとえば、記憶装置が永続的であることを認識するタグまたはビットを書込みリクエストにまたはデータ自体に加えてもよい。データが永続的であることを記憶装置に伝達することは、本発明から逸脱することなく、他の方法を含むことができる。
データが永続データであると判断された場合、方法は、ステップ306に進むことができる。ステップ306では、長期存続ブロックが識別される。本発明の1つ以上の実施形態において、任意のフリーブロックまたは空きブロックが長期存続ブロックとして選択されてもよい。追加的にまたは代替的には、ブロックをウェアレベリングするために、そのプログラム/消去サイクルが一定の閾値を超えるブロックは、長期存続ブロックとして選択されてもよい。この場合に、長期存続ブロックに書込まれた永続データは、ブロックに残っている可能性が高いため、長期存続ブロックのプログラム/消去サイクルを減少する。長期存続ブロックを選択するための代替方法は、本発明から逸脱することなく使用することができる。
ステップ308では、データは、長期存続ブロックに書込まれる。本発明の1つ以上の実施形態において、データは、フラグとして(典型的には、フラグページの一部として)長期存続ブロックに記憶される。TOCエントリは、このフラグ(典型的には、TOCページの一部)に対応して生成され、長期存続ブロックに記憶される。
ステップ304に戻って、データが永続データではないと判断された場合、方法は、ステップ310に進むことができる。本発明の1つ以上の実施形態において、データが永続データではない場合、そのデータは、(たとえば、APIを介して)短期存続データとして判明されるかまたは不明の存続期間を有する。本発明の1つ以上の実施形態によれば、そのようなデータは、長期存続ブロック内に記憶されている永続データとは別に、短期存続ブロックに記憶される。換言すれば、長期存続ブロック内の永続データと短期存続ブロック内のデータとは、重複しない。ステップ310では、短期存続ブロックが識別される。本発明の1つ以上の実施形態において、任意のフリーブロックまたは空きブロックが短期存続ブロックとして選択されてもよい。追加的にまたは代替的には、ブロックをウェアレベリングするために、そのプログラム/消去サイクルが一定の閾値未満であるブロックは、短期存続ブロックとして選択されてもよい。この場合に、短期存続ブロックに書込まれたデータは、消去される可能性が高いため、短期存続ブロックのプログラム/消去サイクルを増加する。短期存続ブロックを選択するための代替方法は、本発明から逸脱することなく使用することができる。
ステップ312では、データは、短期存続ブロックに書込まれる。本発明の1つ以上の実施形態において、データは、フラグとして(典型的にはフラグページの一部として)短期存続ブロックに記憶される。TOCエントリは、このフラグ(典型的には、TOCページの一部)に対応して生成され、短期存続ブロックに記憶される。
図4を参照して、図4は、本発明の1つ以上の実施形態に係る修正したガーベッジコレクション操作のフローチャートを示している。上述したように、修正したガベージコレクション操作は、記憶装置によって受信した書込みリクエストと並列に行うことができる。
ステップ402では、記憶装置からブロックを選択する。ステップ404では、ブロックからTOCページを選択する。ステップ406では、ブロック内のフラグページからTOCエントリを選択する。
ステップ408では、TOCエントリの情報を用いて、派生物理アドレスを生成する。本発明の1つ以上の実施形態において、フラグに対応する派生物理アドレスは、<記憶モジュール、チャネル、チップイネーブル、LUN、面、ブロック、ページID、バイト>のようなnタプルとして定義される。nタプルのうち、ページIDおよびバイトは、TOCエントリに記憶され、残りのデータは、ページIDおよびバイトから得ることができる。
ステップ410では、TOCエントリ内のnタプル<オブジェクトID、オフセットID>を用いて、インメモリデータ構造から記憶物理アドレスを検索する。本発明の1つ以上の実施形態において、インメモリデータ構造は、nタプル(たとえば、<オブジェクトIDは、オフセットID>または<オブジェクトのID、オフセットID、生成時間>)とフラグの記憶物理アドレスとの間のマッピングを含む。
ステップ412では、派生物理アドレスが記憶物理アドレスと一致するか否かを判断する。本発明の1つ以上の実施形態において、TOCエントリに関連付けられたフラグが使用可能である(たとえば、最新であるまたは使用されている)場合、派生物理アドレスは、記憶物理アドレスと一致する。本発明の1つ以上の実施形態において、TOCエントリに関連付けられたフラグが使用不可である(たとえば、使わなくなったまたは古くなったまたは廃止された)場合、派生物理アドレスは、記憶物理アドレスと一致しない。派生物理アドレスが記憶物理アドレスと一致すると判断された場合、方法は、ステップ414に進み、そうでない場合、方法は、ステップ416に進むことができる。ステップ414では、TOCエントリに関連付けられたフラグは、使用可能にマークされる。たとえば、1つ以上のビットは、フラグに関連付けられ、このフラグを使用可能にマークしてもよい。
ステップ416では、TOCエントリに関連付けられたフラグは、使用不可にマークされる。たとえば、1つ以上のビットは、フラグに関連付けられ、このフラグを使用不可にマークしてもよい。
ステップ418では、TOCエントリがまだTOCページに残っているか否かを判断する。本発明の1つ以上の実施形態において、TOCページは、1つ以上のTOCエントリを含む。TOCエントリがまだTOCページに残っていると判断された場合、方法は、上述のステップ406に戻り、そうでない場合、方法は、ステップ420に進むことができる。
ステップ420では、TOCページがまだブロックに残っているか否かを判断する。本発明の1つ以上の実施形態において、ブロックには、1つ以上のフラグページがあってもよい。TOCページがまだブロックに残っていると判断された場合、方法は、上述のステップ404に戻り、そうでない場合、方法は、ステップ422に進むことができる。ステップ422では、ブロック内のすべてのページが使用不可にマークされているか否かを判断する。ブロック内のすべてのページが使用不可にマークされていると判断された場合、方法は、ステップ424に進み、そうでない場合、方法は、ステップ428に進むことができる。ステップ424では、データを移行する必要がないため、ブロックは、消去される。
ステップ426では、ブロックがまだ固体メモリモジュールに残っているか否かを判断する。本発明の1つ以上の実施形態において、固体メモリモジュールは、1つ以上のブロックを含む。ブロックがまだ固体メモリモジュールに残っていると判断された場合、方法は、上述のステップ402に戻ることができる。
ステップ428では、ブロック内のすべてのページが使用可能にマークされているか否かを判断する。ブロック内のすべてのページが使用可能にマークされていると判断された場合、方法は、ステップ430に進み、そうでない場合、方法は、ステップ432に進むことができる。ステップ430では、ウェアレベリングする必要があるか否かを判断する。上述したように、ウェアレベリングは、固体メモリモジュールにおけるブロックに亘ってプログラム/消去サイクルの数のバランスを保つ。本発明の1つ以上の実施形態において、ブロックのプログラム/消去サイクル値が閾値未満になった場合に、ウェアレベリングする必要があり得る。換言すれば、より高いプログラム/消去サイクルを有する別のブロックのプログラム/消去サイクル値の増加を防ぐために、このプログラム/消去サイクル値が閾値未満のブロックには、プログラム/消去サイクルを行う必要がある。ウェアレベリングする必要があると判断された場合、方法は、ステップ432に進み、そうでない場合、方法は、ステップ426に戻ることができる。
ステップ432では、各使用可能ページが長期存続ブロックに移行される。本発明の1つ以上の実施形態において、各使用可能ページは、少なくとも1つのガベージコレクションサイクル以上に持続したため、永続データとして見なされる。本発明の1つ以上の実施形態において、任意のフリーブロックまたは空きブロックは、長期存続ブロックとして選択されてもよい。追加的にまたは代替的には、ブロックをウェアレベリングするために、そのプログラム/消去サイクルが一定の閾値を超えるブロックは、長期存続ブロックとして選択されてもよい。この場合、長期存続ブロックに書込まれた永続データは、ブロックに残されるべきであり、長期存続ブロックのプログラム/消去サイクルを減少する。長期存続ブロックを選択するための代替方法は、本発明から逸脱することなく使用することができる。本発明の1つ以上の実施形態において、データは、フラグとして(典型的には、フラグページの一部として)長期存続ブロックに書込まれる。TOCエントリは、このフラグ(典型的には、TOCページの一部)に対応して生成され、長期存続ブロックに記憶される。その後、方法は、上述のステップ424に戻ることができる。
図5A〜6Bは、本発明の1つ以上の実施形態に係るさまざまな例を示している。これらの例は、本発明の範囲を限定しないことを意図している。図5Aおよび5Bは、従来処理の書込みリクエストの一例および従来のガーベッジコレクション操作の一例をそれぞれ示している。図6Aおよび6Bは各々、本発明の1つ以上の実施形態に係る修正したガーベッジコレクション操作によるデータ移行の一例を示している。性能比較の目的のために、図5Aおよび図5Bの条件(たとえば、受信した書込みリクエストの数、書込みリクエストを受信した時間、指定ブロックの内容)は、図6Aおよび6Bの条件と同一である。
図5Aを参照して、図5Aのシナリオは、ガベージコレクション操作の第1反復が、書込みリクエストW1、W2、W4、W5、W6、W7およびW8の受信と並行して、ブロック0、ブロック1、ブロック2およびブロック3に行われることである。W4およびW8に書込まれたデータが永続データである。ブロック4およびブロック5が空であり、書込みリクエストに応じて、任意の移行データまたはデータを書込むことができる。
まず、ガベージコレクション操作は、書込みリクエストW1、W2およびW3の受信と並行して、ブロック0に行われる。ブロック0内の各ページが使用不可にマークされているため、ブロック0は、消去される。書込みリクエストW1、W2およびW3に応じてデータを書込むために、ブロック4は、ランダムに選択される。また、W1、W2およびW3にそれぞれ関連付けられたTOCエントリが生成され、TOCページ4の一部としてブロック4に記憶される。
その後、ガベージコレクション操作は、ブロック1に実行される。ブロック1において、移行する必要のある唯一の使用可能ページは、ページJである。ページJを移行するために、ブロック4は、ランダムに選択される。また、ページJに関連付けられたTOCエントリが生成され、TOCページ4の一部としてブロック4に記憶される。ページJの移行後、ブロック1は消去される。その後、書込みリクエストW4が受信される。W4に関連付けられたデータを書込むために、ブロック4はランダムに選択される。さらに、W4に関連付けられたTOCエントリが生成され、TOCページ4の一部としてブロック4に記憶される。
その後、ガベージコレクション操作は、書込みリクエストW5、W6およびW7の受信と並行して、ブロック2に行われる。ブロック2において、ページQ、OおよびNは、移行する必要がある使用可能ページである。ページQおよびOならびに書込みリクエストW5、W6およびW7に関連付けられたデータがランダムに選択され、ブロック5に移行される。さらに、ページQ、O、書込みリクエストW5、W6およびW7にそれぞれ関連付けられたTOCエントリが生成され、TOCページ5の一部としてブロック5に記憶される。ページNがランダムに選択され、ブロック4に移行される。ページNに関連付けられたTOCエントリが生成され、TOCページ4の一部としてブロック4に記憶される。ページQ、OおよびNの移行後、ブロック2は消去される。
最後に、ガベージコレクション操作は、書込みリクエストW8の受信と並行して、ブロック3に行われる。ブロック3において、すべてのページは、使用可能である。ブロック3のウェアレベリングをする必要がないため、ブロック3において移行を行わない。W8はランダムに選択され、ブロック5に書込まれる。さらに、W8に関連付けられたTOCエントリが生成され、TOCページ5の一部としてブロック5に記憶される。
よって、ガベージコレクション操作は、すべてのブロック(すなわち、ブロック0、ブロック1、ブロック2およびブロック3)の各々に亘って循環され、任意の使用可能ページをブロック4またはブロック5のいずれかに移行する。また、ガベージコレクション操作と並行して受信した書込みリクエストは、ブロック4またはブロック5のいずれかに割り当てられる。書込みリクエストの合計が8である場合、第1反復には、4回の移行を行う必要がある。
図5Bを参照して、図5Bのシナリオは、図5Aで説明した第1反復の後に、ガベージコレクション操作の第2反復を行うことである。ガベージコレクション操作の第2反復は、書込みリクエストW9、W10、W11、W12、W13、W14およびW15の受信と並行して、ブロック2、ブロック3、ブロック4およびブロック5に行われる。W13は、長期存続データまたは永続データである。ブロック0およびブロック1は、図5Bに示された第1反復の後に消去されるため、書込みリクエストに応じて、任意の移行データまたはデータを書込むことができる。
ガベージコレクション操作は、書込みリクエストW9、W10、W11およびW12の受信と並行して、ブロック2から開始する。ブロック2は、第1反復に消去された(図5Aを参照)ため、移行するページを含まない。書込みリクエストW9、W10、W11およびW12に関連付けられたデータを書込むために、ブロック0は、ランダムに選択される。また、W9、W10、W11およびW12にそれぞれ関連付けられたTOCエントリが生成され、TOCページ6の一部としてブロック0に記憶される。
その後、ガベージコレクション操作は、書込みリクエストW13の受信と並行して、ブロック3に行われる。第1反復(図5Aを参照)のときにブロック3にすべての使用可能ページが、使用可能に維持される。図5Aにおいて説明したように、ブロック3のウェアレベリングをする必要がないため、ここでもブロック3において移行を行わない。W13に関連付けられたデータを書込むために、ブロック0は、ランダムに選択される。さらに、W13に関連付けられたTOCエントリが生成され、TOCページ6の一部としてブロック0に記憶される。
その後、ガベージコレクション操作は、書込みリクエストW14およびW15の受信と並行して、ブロック4に行われる。ブロック4において、ページW6およびW7は、移行する必要がある使用可能ページである。ページW6およびW7の書込みと並行してW15に関連付けられたデータを書込むために、ブロック1は、ランダムに選択される。さらに、W15、W16およびW17にそれぞれ関連付けられたTOCエントリが生成され、TOCページ7の一部としてブロック1に記憶されてる。書込みリクエストW14に関連付けられたデータを書込むために、ブロック0は、ランダムに選択される。また、W14に関連付けられたTOCエントリが生成され、TOCページ6の一部としてブロック0に記憶される。ページW6およびW7の移行後、ブロック4は消去される。
最後に、ガベージコレクション操作は、ブロック5に行われる。ブロック5において、すべてのページが使用可能である。ブロック5のウェアレベリングをする必要がないため、ブロック5において移行を行わない。
よって、ガベージコレクション操作は、すべてのブロック(すなわち、ブロック2、ブロック3、ブロック4およびブロック5)の各々に亘って循環され、任意の使用可能ページをブロック0またはブロック1のいずれかに移行する。また、修正したガベージコレクション操作と並行して受信した書込みリクエストは、ブロック0またはブロック1のいずれかに割り当てられる。書込みリクエストの合計が7である場合、第2反復には、8回の移行を行う必要がある。この2つの反復操作の間に、15個のデータを書込むために、12回の移行が行われる。よって、書込み量は、1書込み+(12移行/15書込み)=1.8として計算することができる。換言すれば、各書込みのために、0.8の追加書込みが必要とされる。
図6Aを参照して、図6Aのシナリオは、修正したガベージコレクション操作の第1反復が、書込みリクエストW1、W2、W4、W5、W6、W7およびW8の受信と並行して、ブロック0、ブロック1、ブロック2およびブロック3に行われることである。W4およびW8に書込まれたデータは、永続データである。ブロック4は、短期存続ブロックとして選択され、ブロック5は、長期存続ブロックとして選択される。
まず、修正したガーベッジコレクション操作は、書込みリクエストW1、W2およびW3の受信と並行して、ブロック0に行われる。ブロック0内の各ページが使用不可にマークされているため、ブロック0は消去される。W1、W2およびW3の存続期間は不明である。そのため、W1、W2およびW3は、ブロック4(短期存続ブロック)書込まれる。また、W1、W2およびW3にそれぞれ関連付けられたTOCエントリが生成され、TOCページ4の一部としてブロック4(短期存続ブロック)に記憶される。
その後、修正したガベージコレクション操作は、ブロック1に実行される。ブロック1において、移行する必要のある唯一の使用可能ページは、ページJである。ページJは、ガベージコレクション期間よりも長く存在または持続したため、永続データである可能性が高い。よって、ページJは、ブロック5(長期存続ブロック)に移行される。また、ページJに関連付けられたTOCエントリが生成され、TOCページ5の一部としてブロック5(長期存続ブロック)に記憶される。ページJの移行後、ブロック1は消去される。その後、書込みリクエストW4が受信される。W4は、アプリケーションプログラミングインターフェース(API)を介して永続データを含むものとして伝達される。よって、W4は、持続期間未知の書込みリクエストのために保留されたブロック4(短期存続ブロック)ではなく、ブロック5(長期存続ブロック)に書込まれる。また、W4に関連付けられたTOCエントリが生成され、TOCページ5の一部としてブロック5(長期存続ブロック)に記憶される。
その後、修正したガーベッジコレクション操作は、書込みリクエストW5、W6およびW7の受信と並行して、ブロック2に行われる。ブロック2において、ページQ、OおよびNは、移行する必要がある使用可能ページである。同様に、修正したガーベッジコレクション操作を行うときに、ページQ、OおよびNは、使用可能であるため、永続データである可能性が高い。書込みリクエストW5、W6およびW7に関連付けられたデータの存続期間は、不明であるため、一時データである可能性が高い。W5、W6およびW7をブロック4(短期存続ブロック)に書込むことと並行して、ページQ、OおよびNをブロック5(長期存続ブロック)に移行する。また、W5、W6およびW7にそれぞれ関連付けられたTOCエントリが生成され、TOCページ4の一部としてブロック4(短期存続ブロック)に記憶される。同様に、ページQ、OおよびNにそれぞれ関連付けられたTOCエントリが生成され、TOCページ5の一部としてブロック5(長期存続ブロック)に記憶される。ページQ、OおよびNの移行後、ブロック2は消去される。
最後に、修正したガーベッジコレクション操作は、書込みリクエストW8の受信と並行して、ブロック3に行われる。ブロック3において、すべてのページは使用可能である。ブロック3のウェアレベリングをする必要がないため、ブロック3において移行を行わない。書込みリクエストW4と同様に、W8は、APIを介して永続データを含むものとして伝達される。よって、W8は、ブロック5(長期存続ブロック)に書込まれる。また、W8に関連付けられたTOCエントリが生成され、TOCページ5の一部としてブロック5(長期存続ブロック)に記憶される。
よって、修正したガベージコレクション操作は、すべてのブロック(すなわち、ブロック0、ブロック1、ブロック2およびブロック3)の各々に亘って循環され、任意の使用可能ページをブロック5(長期存続ブロック)に移行する。また、修正したガベージコレクション操作と並行して受信した書込みリクエストは、永続データを含む(たとえば、W4およびW8)ことが分かっている場合、ブロック5(長期存続ブロック)に割り当てられ、そうでない場合、ブロック4(短期存続ブロック)に割り当てられる。書込みリクエストの合計が8である場合、第1反復には、4回の移行を行う必要がある。
図6Bを参照して、図6Bのシナリオは、図6Aで説明した第1反復の後に、修正したガベージコレクション操作の第2反復を行うことである。修正したガベージコレクション操作の第2反復は、書込みリクエストW9、W10、W11、W12、W13、W14およびW15の受信と並行して、ブロック2、ブロック3、ブロック4およびブロック5に行われる。W13は、長期存続データまたは永続データである。第1反復に消去されたブロック0(図6Aを参照)は、短期存続ブロックとして選択され、第1反復に消去されたブロック1(図6Aを参照)は、長期存続ブロックとして選択される。
修正したガベージコレクション操作は、書込みリクエストW9、W10、W11およびW12の受信と並行して、ブロック2から開始する。ブロック2は、第1反復に消去された(図5Aを参照)ため、移行するページを含まない。W9、W10、W11およびW12の存続期間は、未知である。よって、W9、W10、W11およびW12は、ブロック0(短期存続ブロック)に書込まれる。また、W9、W10、W11およびW12にそれぞれ関連付けられたTOCエントリが生成され、TOCページ6の一部としてブロック0(短期存続ブロック)に記憶される。
その後、修正したガーベッジコレクション操作は、書込みリクエストW13の受信と並行して、ブロック3に行われる。第1反復(図6Aを参照)のときにブロック3にすべての使用可能ページは、使用可能に維持される。図6Aにおいて説明したように、ブロック3のウェアレベリングをする必要がないため、ここでもブロック3において移行を行わない。書込みリクエストW13は、APIを介して永続データを含むものとして伝達される。よって、W13は、持続期間未知の書込みリクエストまたは短期存続書込みリクエストのために保留されたブロック0(短期存続ブロック)ではなく、ブロック1(長期存続ブロック)に書込まれる。また、W13に関連付けられたTOCエントリが生成され、TOCページ7の一部としてブロック1(長期存続ブロック)に記憶される。
その後、修正したガベージコレクション操作は、書込みリクエストW14およびW15の受信と並行して、ブロック4に行われる。W14およびW15の両方は、期間未知のデータを有するため、短期存続データである可能性が高い。ブロック4において、ページW6およびW7は、移行する必要がある使用可能ページである。ページW6およびW7は、ガベージコレクション操作を行うときに使用可能であるため、永続データである可能性が高い。よって、W14およびW15をブロック0(短期存続ブロック)に書込むことと並行して、ページW6およびW7がブロック1(長期存続ブロック)に移行される。また、W6およびW7にそれぞれ関連付けられたTOCエントリが生成され、TOCページ7の一部としてブロック1(長期存続ブロック)に記憶され、W14およびW15にそれぞれ関連付けられたTOCエントリが生成され、TOCページ6の一部としてブロック0(短期存続ブロック)に記憶される。W6およびW7の移行後、ブロック4は消去される。
最後に、修正したガーベッジコレクション操作は、ブロック5に行われる。ブロック5において、すべてのページは、使用可能である。ブロック5のウェアレベリングをする必要がないため、ブロック5において移行を行わない。
よって、修正したガーベッジコレクション操作は、すべてのブロック(すなわち、ブロック2、ブロック3、ブロック4、ブロック5)の各々に亘って循環され、任意の使用可能ページをブロック1(長期存続ブロック)に移行する。また、修正したガベージコレクション操作と並行して受信した書込みリクエストは、永続データを含む(たとえば、W13)ことが分かっている場合、ブロック1(長期存続ブロック)に割り当てられ、そうでない場合、ブロック0(短期存続ブロック)に割り当てられる。
書込みリクエストの合計が7である場合、第2反復は、2回の移行を行う必要がある。この2つの反復操作の間に、15個のデータを書込むために、6回の移行が行われる。よって、書込み量は、1書込み+(6移行/15書込み)=1.4として計算することができる。換言すれば、各書込みのために、0.4の追加書込みが必要とされる。データの存続期間を無視して書込みリクエストを受信する従来のガベージコレクション操作により達成された1.8という書込み量に比べて、書込みリクエストを受信しながら存続期間に基づきデータをソートする修正したガーベッジコレクション操作によって達成された1.4という書込み量は、改良された。
本発明の1つ以上の実施形態は、記憶装置に記憶されたデータの存続期間に基づき、データをソートするためのシステムおよび方法を提供する。よって、すべての永続データとして分かったでデータは、長期存続ブロックに記憶され、短期存続データまたは存続期間未知のデータは、短期存続ブロックに記憶される。本発明のさまざまな実施形態に従ってデータを配置することにより、記憶装置は、ガベージコレクション操作の間にデータの移行を低減することによって所定の固体メモリモジュール(またはそのサブセット)の性能を向上させる。本発明の1つ以上の実施形態によれば、ガベージコレクション操作の間にデータ移行を低減することによって、記憶装置における書込み量を最小化することができる。書込み量を最小化することによって、各書込みに対してデータの移行が低減されたため、固体メモリモジュールのプログラム/消去サイクルの数を減少することができる。プログラム/消去サイクルの数が固体メモリモジュールの使用期間を低下させるため、書込み量の最小化は、性能を向上させることができる。
さらに、本発明の実施形態は、インメモリデータ構造の作成を可能にする。よって、記憶装置は、単一の検索ステップでデータにアクセスすることができる。換言すれば、記憶装置は、インメモリデータ構造を用いて、記憶装置内のデータの物理アドレスを直接確認することができる。この物理アドレス情報を用いて、記憶装置は、データに直接アクセスすることができ、データを得るために任意の中間メタデータ階層を詳しく検討する必要がない。
本発明の1つ以上の実施形態は、システム内の1つ以上のプロセッサによって実行される命令を用いて実現することができる。また、このような命令は、1つ以上の非一時的なコンピュータ可読媒体上に記憶されたコンピュータ可読命令に対応することができる。
本発明は、限定された数の実施形態に関連して説明したが、当業者であれば、この開示に基づき、本開示された発明の範囲から逸脱することなく、他の実施形態を考案できることを理解するであろう。したがって、本発明の範囲は、添付の特許請求の範囲のみによって限定される。
図2Fは、本発明の1つ以上の実施形態に係るTOCエントリを示している。本発明の1つ以上の実施形態において、各TOCエントリ(230)は、フラグに対応するメタデータを含み、1つ以上の以下のフィールド、すなわち、(i)記憶されているオブジェクトを識別するためのオブジェクトID(232)、(ii)TOCエントリに対応するフラグが固体メモリモジュールに書込まれた時間(たとえば、制御モジュール内に配置されたプロセッサのプロセッサクブロック値)を指定するための生成時間(234)、(iii)(オブジェクトIDによって識別される)オブジェクトの先頭に関連するオブジェクトの位置点を特定するためのオフセットID(236)、(iv)フラグのサイズを指定するためのフラグメントサイズ(238)、(v)フラグが記憶されているブロック内のページを識別するためのページID(240)、および(vi)(ページIDによって識別された)ページ内のフラグの開始位置を特定するためのバイト(242)を含んでもよい。TOCエントリ(230)は、本発明から逸脱することなく、他のフィールド(244)を含んでもよい。
図5Bを参照して、図5Bのシナリオは、図5Aで説明した第1反復の後に、ガベージコレクション操作の第2反復を行うことである。ガベージコレクション操作の第2反復は、書込みリクエストW9、W10、W11、W12、W13、W14およびW15の受信と並行して、ブロック2、ブロック3、ブロック4およびブロック5に行われる。W13は、長期存続データまたは永続データである。ブロック0およびブロック1は、図5Aに示された第1反復の後に消去されるため、書込みリクエストに応じて、任意の移行データまたはデータを書込むことができる。
修正したガベージコレクション操作は、書込みリクエストW9、W10、W11およびW12の受信と並行して、ブロック2から開始する。ブロック2は、第1反復に消去された(図6Aを参照)ため、移行するページを含まない。W9、W10、W11およびW12の存続期間は、未知である。よって、W9、W10、W11およびW12は、ブロック0(短期存続ブロック)に書込まれる。また、W9、W10、W11およびW12にそれぞれ関連付けられたTOCエントリが生成され、TOCページ6の一部としてブロック0(短期存続ブロック)に記憶される。
Claims (20)
- プロセッサによって実行されると方法を実行する命令を含む非一時的なコンピュータ可読媒体であって、前記方法は、
(a1)データを永続記憶域に書込む第1リクエストを受信するステップと、
(b1)前記第1リクエストに応じて、前記データを前記永続記憶域内の短期存続ブロックに書込むステップとを含み、前記データは、短期存続データであり、
(c1)修正したガーベッジコレクション操作を実行するステップを含み、
前記修正したガーベッジコレクション操作は、
第1ブロックから第1フラグページを選択するステップと、
前記第1フラグページが使用可能であることを判断するステップと、
前記第1フラグページが使用可能である判断に基づき、前記第1フラグページを前記永続記憶域内の長期存続ブロックに移行するステップとを含み、
前記長期存続ブロックは、前記短期存続ブロックと別体であり、
前記長期存続ブロックは、前記短期存続データを記憶しない、方法。 - 前記方法はさらに、
第2データを永続記憶域に書込む第2リクエストを受信するステップを含み、
前記第2リクエストは、前記第2データが長期存続データであることを指定し、
前記第2リクエストに応じて、前記第2データを前記永続記憶域内の前記長期存続ブロックに書込むステップを含む、請求項1に記載の非一時的なコンピュータ可読媒体。 - 前記第1フラグページが使用可能であることを判断するステップは、
前記第1フラグページに関連付けられた第1TOCエントリを用いて、第1派生物理アドレスを生成するステップと、
第1オブジェクトIDおよび第1オフセットIDに基づき、第1記憶物理アドレスを選択するステップとを含み、前記第1オブジェクトIDおよび前記第1オフセットIDは、前記第1TOCエントリ内に位置し、
前記第1派生物理アドレスが前記第1記憶物理アドレスと一致することに基づき、前記第1フラグページが使用可能であることを判断するするステップを含む、請求項1に記載の非一時的なコンピュータ可読媒体。 - 前記第1記憶物理アドレスを選択するステップは、前記第1オブジェクトIDおよび前記第1オフセットIDを用いて、インメモリデータ構造に対する検索を実行して、前記第1記憶物理アドレスを識別するステップをさらに含む、請求項1に記載の前記非一時的なコンピュータ可読媒体。
- 前記短期存続ブロックは、NANDブロックである、請求項1に記載の前記非一時的なコンピュータ可読媒体。
- 前記永続記憶域は、固体メモリである、請求項1に記載の前記非一時的なコンピュータ可読媒体。
- 前記修正したガーベッジコレクション操作は、
前記永続記憶域から第2ブロックを選択するステップと、
前記第2ブロックが複数の使用可能フラグページを含み、使用不可フラグページを含まないことを判断するステップと、
前記複数の使用可能フラグページの各ページを第2長期存続ブロックに移行するステップとをさらに含む、請求項1に記載の前記非一時的なコンピュータ可読媒体。 - 前記複数の使用可能フラグページの各ページの移行は、ウェアレベリングのために実行される、請求項7に記載の非一時的なコンピュータ可読媒体。
- 前記修正したガーベッジコレクション操作の少なくとも一部は、(a1)および(b1)からなる群から選択される少なくとも1つの操作と並行して実行される、請求項1に記載の非一時的なコンピュータ可読媒体。
- データを管理するための方法であって
(a2)データを永続記憶域に書込む第1リクエストを受信するステップと、
(b2)前記第1リクエストに応じて、前記データを前記永続記憶域内の短期存続ブロックに書込むステップとを含み、前記データは、短期存続データおよび存続期間未知のデータからなる群から選択され、
(c2)修正したガーベッジコレクション操作を実行するステップを含み、
前記修正したガーベッジコレクション操作は、
第1ブロックから第1フラグページを選択するステップと、
前記第1フラグページが使用可能であることを判断するステップと、
前記第1フラグページが使用可能である判断に基づき、前記第1フラグページを前記永続記憶域内の長期存続ブロックに移行するステップとを含み、
前記長期存続ブロックは、前記短期存続ブロックと別体であり、
前記長期存続ブロックは、前記短期存続データを記憶しない、方法。 - 前記方法は、
第2データを永続記憶域に書込む第2リクエストを受信するステップをさらに含み、
前記第2リクエストは、前記第2データが長期存続データであることを指定し、
前記第2リクエストに応じて、前記第2データを前記永続記憶域内の前記長期存続ブロックに書込むステップを含む、請求項10に記載の方法。 - 前記第1フラグページが使用可能であることを判断するステップは、
前記第1フラグページに関連付けられた第1TOCエントリを用いて、第1派生物理アドレスを生成するステップと、
第1オブジェクトIDおよび第1オフセットIDに基づき、第1記憶物理アドレスを選択するステップとを含み、前記第1オブジェクトIDおよび前記第1オフセットIDは、前記第1TOCエントリ内に位置し、
前記第1派生物理アドレスが前記第1記憶物理アドレスと一致することに基づき、前記第1フラグページが使用可能であることを判断するするステップを含む、請求項10に記載の方法。 - 前記第1記憶物理アドレスを選択するステップは、前記第1オブジェクトIDおよび前記第1オフセットIDを用いて、インメモリデータ構造に対する検索を実行して、前記第1記憶物理アドレスを識別するステップをさらに含む、請求項10に記載の方法。
- 前記修正したガーベッジコレクション操作は、
前記永続記憶域から第2ブロックを選択するステップと、
前記第2ブロックが複数の使用可能フラグページを含み、使用不可フラグページを含まないことを判断するステップと、
前記複数の使用可能フラグページの各ページを第2長期存続ブロックに移行するステップとをさらに含む、請求項10に記載の方法。 - 前記複数の使用可能フラグページの各ページの移行は、ウェアレベリングのために実行される、請求項14に記載の方法。
- 前記修正したガーベッジコレクション操作の少なくとも一部は、(a2)および(b2)からなる群から選択される少なくとも1つの操作と並行して実行される、請求項10に記載の方法。
- 記憶装置であって、
永続記憶域と、
命令を含む非一時的なコンピュータ可読媒体と、
前記命令を実行するように構成されたプロセッサとを含み、前記命令は、プロセッサによって実行されると方法を実行し、前記方法は、
(a3)データを前記永続記憶域に書込む第1リクエストを受信するステップと、
(b3)前記第1リクエストに応じて、前記データを前記永続記憶域内の短期存続ブロックに書込むステップとを含み、前記データは、短期存続データおよび存続期間未知のデータからなる群から選択され、
(c3)修正したガーベッジコレクション操作を実行するステップを含み、
前記修正したガーベッジコレクション操作は、
第1ブロックから第1フラグページを選択するステップと、
前記第1フラグページが使用可能であることを判断するステップと、
前記第1フラグページが使用可能である判断に基づき、前記第1フラグページを前記永続記憶域内の長期存続ブロックに移行するステップとを含み、
前記長期存続ブロックは、前記短期存続ブロックと別体であり、
前記長期存続ブロックは、前記短期存続データを記憶せず、
前記修正したガーベッジコレクション操作の少なくとも一部は、(a3)および(b3)からなる群から選択される少なくとも1つの操作と並行して実行される、記憶装置。 - 前記記憶装置は、インメモリデータ構造を記憶するように構成されたメモリをさらに含み、
前記第1記憶物理アドレスを選択するステップは、前記第1オブジェクトIDおよび前記第1オフセットIDを用いて、前記インメモリデータ構造に対する検索を実行して、前記第1記憶物理アドレスを識別するステップをさらに含む、請求項17に記載の記憶装置。 - 前記永続記憶域は、複数の固体メモリモジュールを含む、請求項17に記載の記憶装置。
- 前記方法はさらに、
第2データを永続記憶域に書込む第2リクエストを受信するステップを含み、
前記第2リクエストは、前記第2データが長期存続データであることを指定し、
前記第2リクエストに応じて、前記第2データを前記永続記憶域内の前記長期存続ブロックに書込むステップを含む、請求項17に記載の記憶装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/473,325 | 2014-08-29 | ||
US14/473,325 US9600409B2 (en) | 2014-08-29 | 2014-08-29 | Method and system for garbage collection in a storage system based on longevity of stored data |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016051481A true JP2016051481A (ja) | 2016-04-11 |
Family
ID=54011658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015168994A Pending JP2016051481A (ja) | 2014-08-29 | 2015-08-28 | 非一時的なコンピュータ可読媒体、記憶装置、およびデータを管理するための方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9600409B2 (ja) |
EP (2) | EP3979083A1 (ja) |
JP (1) | JP2016051481A (ja) |
CN (2) | CN108959119B (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9600409B2 (en) * | 2014-08-29 | 2017-03-21 | EMC IP Holding Company LLC | Method and system for garbage collection in a storage system based on longevity of stored data |
CN107229414B (zh) * | 2016-03-24 | 2020-01-17 | 杭州海康威视数字技术股份有限公司 | 存储空间回收方法及装置 |
US10810371B2 (en) | 2017-04-06 | 2020-10-20 | AIBrain Corporation | Adaptive, interactive, and cognitive reasoner of an autonomous robotic system |
US10963493B1 (en) | 2017-04-06 | 2021-03-30 | AIBrain Corporation | Interactive game with robot system |
US10839017B2 (en) * | 2017-04-06 | 2020-11-17 | AIBrain Corporation | Adaptive, interactive, and cognitive reasoner of an autonomous robotic system utilizing an advanced memory graph structure |
US10929759B2 (en) | 2017-04-06 | 2021-02-23 | AIBrain Corporation | Intelligent robot software platform |
US11151992B2 (en) | 2017-04-06 | 2021-10-19 | AIBrain Corporation | Context aware interactive robot |
US10289548B1 (en) * | 2017-04-28 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for garbage collection in a storage system which balances wear-leveling and performance |
US10515701B1 (en) * | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US11842046B2 (en) | 2018-06-30 | 2023-12-12 | Huawei Technologies Co., Ltd. | Storage fragment management method and terminal |
CN109445681B (zh) * | 2018-08-27 | 2021-05-11 | 华为技术有限公司 | 数据的存储方法、装置和存储系统 |
KR20200073604A (ko) * | 2018-12-14 | 2020-06-24 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007004506A (ja) * | 2005-06-24 | 2007-01-11 | Mitsubishi Electric Corp | 記憶管理装置 |
JP2007193883A (ja) * | 2006-01-18 | 2007-08-02 | Sony Corp | データ記録装置及び方法、及びデータ再生装置及び方法、並びにデータ記録再生装置及び方法 |
JP2013029879A (ja) * | 2011-07-26 | 2013-02-07 | Denso Corp | フラッシュメモリの制御装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7409489B2 (en) * | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
CN102576330B (zh) * | 2009-06-12 | 2015-01-28 | 提琴存储器公司 | 具有持久化无用单元收集机制的存储系统 |
US8468293B2 (en) * | 2009-07-24 | 2013-06-18 | Apple Inc. | Restore index page |
WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
US9047178B2 (en) * | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
CN102841852B (zh) * | 2011-06-24 | 2015-06-17 | 华为技术有限公司 | 磨损均衡方法、存储装置及信息系统 |
US8370567B1 (en) * | 2012-03-23 | 2013-02-05 | DSSD, Inc. | Storage system with self describing data |
US20150268989A1 (en) * | 2014-03-24 | 2015-09-24 | Sandisk Enterprise Ip Llc | Methods and Systems for Extending the Object Store of an Application Virtual Machine |
US9600409B2 (en) * | 2014-08-29 | 2017-03-21 | EMC IP Holding Company LLC | Method and system for garbage collection in a storage system based on longevity of stored data |
-
2014
- 2014-08-29 US US14/473,325 patent/US9600409B2/en active Active
-
2015
- 2015-08-11 CN CN201810782503.7A patent/CN108959119B/zh active Active
- 2015-08-11 CN CN201510489258.7A patent/CN105389264B/zh active Active
- 2015-08-27 EP EP21191092.2A patent/EP3979083A1/en active Pending
- 2015-08-27 EP EP15182784.7A patent/EP2990952A1/en not_active Ceased
- 2015-08-28 JP JP2015168994A patent/JP2016051481A/ja active Pending
-
2017
- 2017-02-07 US US15/426,295 patent/US10001946B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007004506A (ja) * | 2005-06-24 | 2007-01-11 | Mitsubishi Electric Corp | 記憶管理装置 |
JP2007193883A (ja) * | 2006-01-18 | 2007-08-02 | Sony Corp | データ記録装置及び方法、及びデータ再生装置及び方法、並びにデータ記録再生装置及び方法 |
JP2013029879A (ja) * | 2011-07-26 | 2013-02-07 | Denso Corp | フラッシュメモリの制御装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3979083A1 (en) | 2022-04-06 |
US10001946B2 (en) | 2018-06-19 |
US9600409B2 (en) | 2017-03-21 |
CN108959119A (zh) | 2018-12-07 |
CN105389264B (zh) | 2018-08-17 |
CN105389264A (zh) | 2016-03-09 |
CN108959119B (zh) | 2023-06-23 |
US20160062882A1 (en) | 2016-03-03 |
EP2990952A1 (en) | 2016-03-02 |
US20170147257A1 (en) | 2017-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2016051481A (ja) | 非一時的なコンピュータ可読媒体、記憶装置、およびデータを管理するための方法 | |
TWI661301B (zh) | 記憶體系統及控制非揮發性記憶體之控制方法 | |
TWI805323B (zh) | 儲存裝置 | |
EP2530612B1 (en) | Mount-time unmapping of unused logical addresses in non-volatile memory systems | |
US10120795B2 (en) | Wear-leveling nandflash memory reading/writing method | |
US8812816B2 (en) | Garbage collection schemes for index block | |
US10565125B2 (en) | Virtual block addresses | |
KR20210057835A (ko) | 압축한 키-값 저장소 트리 데이터 블록 유출 | |
CN107066498B (zh) | 键值kv存储方法和装置 | |
JP2015515047A (ja) | 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置 | |
US11232028B2 (en) | Error-checking in namespaces on storage devices | |
JP2022173454A (ja) | メモリシステム | |
JP2023010765A (ja) | メモリシステム | |
US9965398B2 (en) | Method and apparatus for simplified nameless writes using a virtual address table | |
KR20150139383A (ko) | 반도체 장치 | |
US10289548B1 (en) | Method and system for garbage collection in a storage system which balances wear-leveling and performance | |
KR100982440B1 (ko) | 단일 플래시 메모리의 데이터 관리시스템 | |
KR20090131142A (ko) | 메모리 관리 장치 및 방법 | |
US12039193B2 (en) | Apparatus, method and computer program for managing memory page updates within non-volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160914 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160920 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161220 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20170207 |