CN105468294A - 用于固态存储设备的脱机去重 - Google Patents
用于固态存储设备的脱机去重 Download PDFInfo
- Publication number
- CN105468294A CN105468294A CN201510775934.7A CN201510775934A CN105468294A CN 105468294 A CN105468294 A CN 105468294A CN 201510775934 A CN201510775934 A CN 201510775934A CN 105468294 A CN105468294 A CN 105468294A
- Authority
- CN
- China
- Prior art keywords
- data unit
- host data
- flash memory
- unique identification
- physical address
- 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.)
- Granted
Links
Classifications
-
- 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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
Abstract
用于固态存储设备的脱机去重。一种用于管理闪存系统的方法,包括将闪存数据单元从闪存读入缓存器,其中,每一个闪存数据单元都包括主机数据单元,及为每一个主机数据单元确定标识符。该方法包括基于共享相应唯一性标识符的主机数据单元的数量,从确定的标识符选择一组唯一性标识符。对该一组唯一性标识符中的每一个唯一性标识符,该方法包括将一个主机数据单元指定为主数据单元,其中,将指定的主机数据单元的逻辑地址映射到物理地址。将共享唯一性标识符的其它主机数据单元的逻辑地址重新映射到主物理地址,及使得预先映射到重新映射的逻辑地址的物理地址无效。
Description
技术领域
本公开涉及一种闪存设备,更具体地,涉及一种用于闪存设备的脱机去重处理。
背景技术
固态存储设备(SSD)可以使用闪存作为非易失性存储介质。去重或去重处理允许更有效使用空间。在去重处理中,删除重复的数据条目。与在存储设备上的多个物理地址处存储相同数据的多个副本不同,在物理地址处仅存储数据的一个副本,参照代替其它副本的该一个副本。随着从主机接收写命令,可以联机执行去重。在写数据前,将数据与已经存储在存储设备上的数据相比较。如果找到匹配,就使用对该匹配的引用,而不是将数据写到新的物理地址。但这种联机去重将增加写操作的延迟。
发明内容
根据本发明技术的方面,提供了一种用于管理闪存系统的方法。该方法包括将多个闪存数据单元从闪存读入缓存器,其中,多个闪存数据单元的每一个都包括一个或多个主机数据单元,及为读入缓存器的每一个主机数据单元确定标识符。该方法包括基于共享相应唯一性标识符的主机数据单元的数量,从确定的标识符选择一组唯一性标识符。对该一组唯一性标识符中的每一个唯一性标识符,该方法包括将共享该唯一性标识符的第一主机数据单元指定为主数据单元,其中,在查找表中将第一主机数据单元的逻辑地址映射到闪存中的第一物理地址,在查找表中将共享该唯一性标识符的一个或多个第二主机数据单元相应的逻辑地址从闪存中相应第二物理地址重新映射到闪存中的第一物理地址,及使闪存中相应第二物理地址处存储的数据无效。
根据本发明技术的其它方面,提供了一种闪存系统。闪存系统包括多个闪存设备,包括缓存器的存储器和控制器。所述控制器被配置为将多个闪存数据单元从多个闪存设备读入缓存器,其中,多个闪存数据单元的每一个都包括一个或多个主机数据单元,为读入缓存器的每一个主机数据单元确定标识符,及基于共享相应唯一性标识符的主机数据单元的数量,从确定的标识符选择一组唯一性标识符。对该一组唯一性标识符中的每一个唯一性标识符,所述控制器被配置为将共享该唯一性标识符的第一主机数据单元指定为主数据单元,其中,在查找表中将第一主机数据单元的逻辑地址映射到闪存设备中的第一物理地址,在查找表中将共享该唯一性标识符的一个或多个第二主机数据单元相应的逻辑地址从闪存设备中相应第二物理地址重新映射到闪存设备中的第一物理地址,及使闪存设备中相应第二物理地址处存储的数据无效。
根据本发明技术的其它方面,一种非暂时性机器可读介质包括存储于其中的指令,当所述指令由机器执行时,所述指令使得机器执行操作。所述操作包括将多个闪存数据单元从闪存读入缓存器,其中,多个闪存数据单元的每一个都包括一个或多个主机数据单元,为读入缓存器的每一个主机数据单元确定标识符,及基于共享相应唯一性标识符的主机数据单元的数量,从确定的标识符选择一组唯一性标识符。对该一组唯一性标识符中的每一个唯一性标识符,该操作包括将共享该唯一性标识符的第一主机数据单元指定为主数据单元,其中,在查找表中将第一主机数据单元的逻辑地址映射到闪存中的第一物理地址,在查找表中将共享唯一性标识符的一个或多个第二主机数据单元相应的逻辑地址从闪存中相应第二物理地址重新映射到闪存中的第一物理地址,及使闪存中相应第二物理地址处存储的数据无效。
应理解,对于本领域技术人员,依据以下的详细说明,本发明技术的其它结构是显而易见的,在详细说明中示例性地显示并说明了本发明技术的多个结构。将认识到,本发明技术能够具有和其它不同的结构,并且其几个细节能够在多个其它方面进行修改,全都不脱离本发明技术的范围。因此,附图或详细说明认为在本质上是示例性的而非限制性的。
附图说明
图1是示出根据本发明技术的方面的闪存系统的组件的框图。
图2是示出根据本发明技术的方面的闪存设备的框图。
图3是示出根据本发明技术的方面的用于管理闪存系统的方法的流程图。
图4A是根据本发明技术的方面的数据结构的节点的图。
图4B是根据本发明技术的方面的包括来自图4A的节点的数据结构的图。
图5A是根据本发明技术的方面的查找表的图。
图5B是根据本发明技术的方面的反向追踪表的图。
图6A是示出根据本发明技术的方面的用于更新去重条目的方法的流程图。
图6B是示出根据本发明技术的方面的用于更新去重条目的另一个方法的流程图。
图7A是根据本发明技术的方面的修改的查找表的图。
图7B是根据本发明技术的方面的修改的反向追踪表的图。
图7C是根据本发明技术的方面的另一个修改的查找表的图。
图7D是根据本发明技术的方面的另一个修改的反向追踪表的图。
具体实施方式
以下阐述的详细说明是本发明技术的多个结构的说明,并非表示可以实践本发明技术的唯一结构。附图包含于其中,并构成详细说明的一部分。详细说明包括特定细节,为了提供对本发明技术的透彻理解。但本发明技术的实践可以无需这些特定细节。在一些实例中,以框图形式显示了结构或组件,以避免使得本发明技术的概念模糊不清。
SSD可以包括一个或多个闪存设备,每一个闪存设备都包括闪存单元的阵列。闪存单元可以组织为物理块,其中每一个物理块都包括多个页。数据以页为写入单位被写入闪存,其中,每一页都具有存储预定数量的主机数据单元或扇区的容量。主机数据文件可以在下一个可用位置处被顺序写入闪存。然而,数据以物理块为擦除单位从闪存中被擦除。SSD可以执行维护操作,其可以有助于管理闪存设备的数据存储/利用和使用寿命。
在去重或去重处理中,通过消除重复数据单元来更有效地利用存储空间。在联机去重期间,当从主机接收到写命令时,将要写的主机数据单元与存储在存储设备中的主机数据单元相比较。如果找到匹配,就将写命令的目标逻辑地址映射到匹配主机数据单元的物理地址。如果没有找到匹配,就将主机数据单元写到可用物理地址,将目标逻辑地址映射到所写物理地址。然而,去重处理将增加写命令完成的延迟。在维护操作期间应用去重(脱机去重),例如垃圾收集(GC),可以避免在主机写命令期间的写延迟。
图1是示出根据本发明技术的方面的闪存系统110的组件的框图。如图1所示的,闪存系统110包括接口115、控制器120、闪存设备130和存储器125。接口115用于闪存系统110与主机150之间的数据、命令和/或控制信号的通信。控制器120控制闪存系统110的操作,用于根据从主机150接收的命令,在闪存设备130中存储和检出数据。控制器120可以包括处理器122。存储器125可以是随机存取存储器(RAM),其提供暂时存储空间,其可以包括缓存器127,用于控制器120处理命令并在主机150与闪存设备130之间传递数据。以下更详细地描述这些组件中每一个的操作。
接口115提供在主机150与闪存系统110之间的物理和电连接。接口115被配置为经由物理和电连接在主机150与闪存系统110之间进行数据、命令、和/或控制信号的通信。借助接口115的连接和通信可以基于标准接口,例如通用串行总线(USB)、小型计算机系统接口(SCSI)、串行高级技术附件(SATA)等。可替换地,连接和/或通信可以基于专用接口。本领域技术人员会认识到本发明技术不限于任何特定类型的接口。
控制器120管理在主机150与闪存设备130之间的数据流。控制器120被配置为经由接口115从主机150接收命令和数据。例如,控制器120可以从主机150接收数据和写命令,以把数据写入闪存设备130。控制器120进一步被配置为将数据经由接口115发送到主机150。例如,控制器120可以响应于读命令从闪存设备130读取数据,并将数据发送到主机150。控制器120进一步被配置为基于可从主机150接收的内部控制算法或其它类型的命令,管理存储在闪存设备130和存储器125中的数据。例如,控制器120被配置为执行GC和其它维护操作。本领域技术人员会熟悉由闪存设备中的控制器执行的其它常规操作,本文将不再进一步详细说明。
控制器120可以利用通用处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件或其设计并被配置为执行本文所述操作和功能的任意组合来实施。在某些实现方式中,控制器120可以包括处理器122,其可以是用于特定操作的专用处理器,例如计算安全哈希算法(SHA)。控制器120可以通过执行存储在机器/计算机可读介质上的一个或多个指令序列来执行本文所述的操作和功能。机器/计算机可读介质可以是闪存设备130、存储器125或其它类型的介质,控制器120可以从其读取指令或代码。例如,闪存系统110可以包括只读存储器(ROM),例如EPROM或EEPROM,以固件/软件编码,固件/软件包括一个或多个指令序列,其由控制器120在闪存系统110的操作期间读取和执行。
闪存设备130每一个都可以是单一闪存芯片或者可以代表多个闪存芯片的组。闪存设备130可以在多个通道中组织,由控制器120将数据通过多个通道从闪存设备130读取并写入闪存设备130,或者耦合到单一通道。闪存设备130可以使用NAND闪存实施。
闪存设备130包括划分为存储块的多个存储器单元。这些存储块可以称为数据块或存储器块,可由控制器120使用物理块地址寻址。每一个存储块都进一步划分为多个数据段或页,其可由控制器120使用物理页地址或与包含参考页的存储块的物理块地址的偏移量来寻址。页可以存储扇区或其它主机数据单元。存储块代表在单一擦除操作中在闪存设备130内被擦除的数据单位。物理页代表在单一读或写操作中从闪存设备130读取或写入闪存设备130的数据单位。
图2显示了闪存设备230A-D的框图,其可以对应于闪存设备130。闪存设备230A-D分别包括存储块240A-D和块241A-D。块240A划分为页245A1-A4。块240B划分为页245B1-B4。块240C划分为页245C1-C4。块240D划分为页245D1-D4。尽管图2中未示出,但块241A-D可以划分为页。跨闪存设备230A-D的具有对应物理地址的页,例如页245A1、245B1、245C1和245D1,称为超级页或条250。跨闪存设备230A-D的诸如块240A-D的块称为超级块或带251。每一个闪存设备230A-D都可以在分离的通道允许跨通道的并行读/写操作。本领域技术人员可以认识到通常用于指代闪存设备内的这些数据单元的其它术语。
本发明技术不限于任何特定容量的闪存设备。例如,存储块每一个都可以包括32、64、128、或512个页。另外,页每一个都可以包括512字节、2KB、4KB或32KB。扇区每一个都可以包括4KB或其它大小,以使得扇区可以与页具有相同大小,或者每页可以有多个扇区。
返回图1,存储器125代表耦合到控制器120并由其在闪存系统110的操作期间使用的存储器。控制器120可以在存储器125中缓存命令和/或数据。例如,控制器120可以在缓存器127中缓存数据。缓存器127可以包括由控制器120使用的转移缓存器和/或其它缓存器。控制器120还可以使用存储器125来存储地址映射表或查找表,用于将由主机150使用的逻辑数据地址转换为对应于闪存设备130的部分的虚拟和/或物理地址。用于管理闪存设备的其它类型的表、数据、状态指示器等也可以由控制器120存储在存储器125中。存储器125可以使用动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或其它类型的易失性或非易失性随机存取存储器来实施,包括在不脱离本发明技术的范围的情况下本领域技术人员已知的诸如DRAM和SRAM的多个类型的存储器。
主机150可以是计算设备,例如计算机/服务器、智能电话或任何其它用于从闪存系统110读数据和将数据写入闪存系统110的电子设备。主机150可以具有操作系统或其它软件,其向闪存系统110发出读和写命令。闪存系统110可以与主机150集成,或者可以在主机150外部。闪存系统110可以无线连接到主机150,或者可以物理连接到主机150。
控制器120被配置为在闪存设备130上执行维护操作。例如,控制器120可以确定应执行GC。例如,控制器120可以确定可用块的数量可能低于阈值。控制器120可以保持每一个块的编程/擦除(P/E)周期的追踪,用于磨损程度测量目的。
一旦触发了GC,例如就可以基于在块240A中包含的无效数据单元的量、与块240A相关的错误计数或诸如P/E周期的其它参数,选择块240A。例如,即使可以选择块240B用于GC-具有大量无效数据-但可以基于块240A和240B相应的P/E周期代之可以选择块240A。
一旦选择块240A用于GC,就将来自块240A的有效数据复制到空块,例如块240D,并且擦除块240A。但控制器120可以被配置为在将有效数据从块240A复制到块240D之前执行去重。图3显示了根据本发明技术的方面的脱机去重的流程图300。
一个块例如块240A,被选择用于诸如GC的维护操作,去重处理可以通过读取所选块的页开始,例如页245A1。在步骤310,可以将多个闪存数据单元从闪存读入缓存器,其中,多个闪存数据单元的每一个都包括一个或多个主机数据单元。例如,可以将页245A1的数据读入缓存器127。为了更好的去重性能,可以将更多数据读入缓存器,因为分析较多数据增大了找到重复数据的可能性。因此,与读取页相关的带的剩余页,例如带251,也可以读入缓存器。因为带的其它页在不同通道上,所以可以并行读取页,以使得读取整个带不会增加相当大的读开销。在某些实现方式中,维护操作可以选择特定量的闪存数据单元,例如带或条的一半,使得不分析全部闪存设备。
在步骤320,为读入缓存器的每一个主机数据单元确定标识符。例如,诸如SHA的哈希算法可以应用于每一个主机数据单元以产生相应摘要。尽管这里讨论了SHA,但可以使用其它类型的标识符而不是SHA。确定标识符,使得相同数据产生相同的标识符,从而识别重复数据条目。标识符可以由控制器120确定。在某些实现方式中,小型硬件处理器,例如处理器122,可以用于计算SHA。处理器122可以特别地被配置为计算SHA,以便增加性能并允许控制器120并行执行其它操作。
在步骤330,基于共享相应唯一性标识符的主机数据单元的数量,从确定的标识符中选择一组唯一性标识符。这种选择可以基于分析包含步骤320中确定的标识符的数据结构,例如B树。例如,在步骤320中确定每一个标识符时,控制器120可以在存储器125中构造B树。图4A示出了用于图4B中的B树400中使用的节点410的框图。每一个节点410都包括键420。每一个键420都存储摘要425、计数430或地址440。摘要425包含唯一性标识符。计数430包含对应于摘要425的标识符的主机数据单元的数量。随着检查每一个主机数据单元,如果主机数据单元的摘要匹配该摘要425,就增大该计数430,并且将主机数据单元的逻辑地址添加到地址440。地址440包含具有对应于摘要425的标识符的数据的逻辑地址的列表。计数430匹配地址440中地址的数量。地址440可以实施为链表、阵列或用于存储多个数据元素的其它数据结构。
图4B显示了B树400,其包含节点410A、410B、410C和410D。节点410A包含键420A和420B。节点410B包含键420C和420D。节点410C包含键420E和420F。节点410D包含键420G和420H。每一个键420A、420B、420C、420D、420E、420F、420G和420H都包含相应的摘要425、计数430和地址440,其在图4B中未示出。随着为在步骤320中检查的每一个主机数据单元产生摘要,控制器在B树中搜索匹配的摘要。如果在键中找到匹配的摘要,就增大相应的计数,并且将主机数据单元的逻辑地址添加到相应的地址。如果没有找到匹配的摘要,就产生新的键。
基于摘要的值,将新的键添加到B树。例如可以依据字母数字值来比较摘要,以使可以将第一摘要认为是大于、小于或等于第二摘要。在作为当前节点的根节点(图4B中的节点410A)开始,将新的摘要与当前节点的键的摘要相比较。如果新的摘要小于当前节点的键的摘要,则检查就继续到一子节点(图4B中的节点410B),该子节点具有小于当前节点的摘要的摘要。如果新的摘要在当前节点的摘要之间,则检查就继续到一子节点(图4B中的节点410C),该子节点具有在当前节点的适当摘要之间的摘要。如果新的摘要大于当前节点的摘要,则检查就继续到一子节点(图4B中的节点410D),该节点具有大于当前节点的摘要的摘要。一旦到达没有子节点的节点,就将新的摘要作为新键添加,具有新摘要、新计数1和主机数据单元的逻辑地址。取决于B树的顺序,新的键可以使得节点超过最大数量的键,使得可以产生新的节点。
一旦将全部主机数据单元的标识符都输入到B树,B树就可以完成。可以基于与每一个键一起存储的计数值来选择一组唯一性标识符。例如,可以选择对应于最大计数的标识符。可以选择阈值数量的标识符,例如16个,或者检查的主机数据单元总数的阈值百分比,例如15%,可以用于选择标识符,其计数合计达到阈值百分比,而又不超过阈值百分比。
可替换地,为了有益于去重,可以仅选择具有大于下阈值计数的计数的标识符,以防止标识符的选择具有过小的计数。例如,16个最大计数可以包括二的计数,其可能不提供显著的去重。也可以排除具有大于上阈值计数的计数的标识符。尽管去重大的计数会提供增大的存储效率,但数据管理会变得繁重。如果计数足够大,那么多个读命令就需要在短时间期间内从相同的物理地址读取,这会产生瓶颈并导致读延迟。例如,如果每一个主机数据单元都包含相同数据,那么全部读命令就会需要访问一个物理地址。
对于该一组标识符中的每一个唯一性标识符,执行步骤340、350和360。在步骤340,将共享该唯一性标识符的第一主机数据单元指定为主数据单元,其中,在查找表中,第一主机数据单元的逻辑地址映射到闪存中的第一物理地址。图5A显示了查找表500,存储映射到物理块地址(PBA)520的逻辑块地址(LBA)510。主数据单元的PBA存储主机数据单元的一个副本(或主副本)。另外,更新反向追踪表,例如具有图5B中所示的PBA560和LBA570的反向追踪表550,以便维持从PBA到LBA的反向映射。反向追踪表550可以借助用于存储每个PBA的多个LBA的链表或阵列来实施。
在步骤350,将共享该唯一性标识符的一个或多个第二主机数据单元相应的逻辑地址从闪存中相应第二物理地址重新映射到闪存中的第一物理地址。在图5A中,LBA12对应于主数据单元,并且具有与LBA98和105相同的数据。将LBA98映射到PBA16,并且将LBA105也映射到PBA16。在某些实现方式中,可以用去重标记来标记去重的条目12、98和105。在某些实现方式中,可以将主数据单元条目标记为主数据单元。反向追踪表也被更新。在图5B中,将PBA16映射到LBA12、98和105。反向追踪表显示把哪一个LBA映射到给定PBA,在稍后更新存储在PBA中的数据时可以使用它。
在步骤360,使闪存中相应第二物理地址处存储的数据无效。因为用于去重条目的LBA指向主数据单元的PBA,所以可以稍后释放预先指向的PBA。维护操作可以继续,例如GC操作,其中原始选择了闪存数据单元。因为去重的PBA现在标记为无效,所以对于GC操作,就会有比去重前更少的数据要复制。换句话说,对于GC,可以断言更多的无效主机数据单元。
另外,在完成去重后可以从存储器删除B树。因为去重操作不联机,所以无需为新的写命令维护B树,并且可以释放存储器用于其它操作。如果稍后选择去重的带用于去重,就可以基于反向追踪表和/或查找表中去重标记的条目重新产生B树。
随着修改闪存系统中的数据,例如更新或擦除,需要更新去重的LBA。图6A和6B示出了更新要被修改的目标主机数据单元的去重条目的过程。例如,主机可以发出写命令,用于更新目标主机数据单元的LBA的数据。可替换地,主机可以发出擦除命令,用于擦除目标主机数据单元的LBA的数据。如果目标主机数据单元的查找表条目包括去重标记,就可以触发去重更新过程。可替换地,可以在反向追踪表中找到目标主机数据单元的PBA,以触发去重更新过程。
图6A是示出删除/复写去重条目的流程图600。例如,主机可以发出删除或复写LBA的命令。在步骤610,对待修改的目标主机数据单元,从查找表中删除该目标主机数据单元的逻辑地址的映射,该目标主机数据单元的逻辑地址已经被映射到主数据单元的物理地址。例如,图7A示出了查找表700,其具有映射到PBA704的LBA702,类似于图5A中的查找表500。目标主机数据单元可以对应于LBA105。LBA105不再映射到PBA16(与图5A相比较)。LBA105可以不再映射到PBA,或者可以重新映射到另一个PBA(图7A中未示出)。如果LBA105不再映射到主PBA(例如,不再是去重条目),就可以复原LBA105的去重标记。
在步骤620,可以从反向追踪表删除主数据单元的物理地址到目标主机数据的逻辑地址的反向映射。当目标主机数据单元不是主数据单元时,相应的PBA不受影响,并且更新查找表和反向追踪表中相应的条目。例如,图7B显示了具有映射到LBA714的PBA712的反向追踪表710,类似于图5B中的反向追踪表550。PBA16不再映射到LBA105(与图5B相比较)。在某些实现方式中,当不必擦除主PBA时,可以使用图6A的过程擦除去重条目。例如,如果要删除LBA12,则诸如LBA98的其它LBA会仍维护PBA16作为主PBA。更新查找表和反向追踪表而不改变主PBA,使得没有数据被复制或移动。
图6B示出了删除/复写主去重条目的流程图602。GC或其它维护操作最终将需要擦除主PBA,例如在把数据从主PBA复制到新PBA后,要擦除对应于主PBA的块。与图6A所示的过程不同,将修改主PBA。在步骤612,将来自目标主机数据单元的物理地址的数据复制到新物理地址,其中,要修改目标主机数据单元,并将目标主机数据单元指定为主数据单元。当目标主机数据单元是主数据单元时,在相应的PBA处的数据的复本必须复制到新PBA,以确保共享该数据的其它去重主机数据单元仍可以引用该数据。图7C显示了查找表720,其具有映射到PBA724的LBA722,类似于图5A中的查找表500。图7D显示了反向追踪表730,其具有映射到LBA734的PBA732,类似于图5B中的反向追踪表550。主PBA可以为32,并且新物理地址可以为40。
在步骤622,新物理地址的主机数据单元被指定为主数据单元。例如,可以将PBA40指定为新主数据单元。
在步骤632,在查找表中,第二主机数据单元的相应逻辑地址被映射到新物理地址。例如,在图7C中,现在将LBA12、98和105映射到PBA40(与图5A相比较)。
在步骤642,在反向追踪表中,目标主机数据单元的物理地址的反向映射被更新为新物理地址的反向映射。在反向追踪表中,旧的主PBA更新为新的主PBA。例如,图7D中,现在以PBA40代替PBA16(与图5B相比较)。
在步骤652,使目标主机数据单元的物理地址处存储的数据无效。将旧的主PBA标记为无效以完成这种修改。无效的PBA可以稍后在GC操作中擦除并释放。在某些实现方式中,可以组合流程图600和602的过程,以修改特定数据单元。例如,如果要修改特定去重LBA和PBA,则流程图600和602的过程可以用于更新查找表和反向追踪表。
闪存系统的去重可以由用户来启用,例如,借助可通过主机访问的用户接口。用户接口可以实施为应用或可通过主机上的浏览器访问的网页。用户还可以选择某些选项或参数用于闪存系统的去重。例如,可以选择去重容量的百分比,使得可以去重闪存系统的阈值百分比的总可用空间。一旦已经去重了该阈值百分比,闪存系统就不再去重数据,除非该百分比降低到阈值百分比以下。另外,在不去重的情况下可以正常存储某些去重模式。例如,用户可以指定不选择用来去重的特定数据模式。这种模式可以包括常见模式(例如全零),其可以产生相当大的读延迟或管理负担。去重可以由用户禁用,这需要格式化闪存系统。
去重可以优先用于数据的冷带(coldband)。例如基于LBA的数据变化的频率,闪存系统可以保持追踪热数据带。在冷数据上执行去重使得有系统地分类记录最少,例如更新查找表和反向追踪表。因为冷数据更新不太频繁,所以可以不太频繁地更新主数据单元,这可以减小写放大。例如,当GC选择带时,如果认为该带热,就可以不执行去重。
去重可增加读放大,因为会需要额外的读来读取用于去重条目的数据。但由于需要较少的写,就使用了较少的存储空间,可以减小GC或其它维护操作的频率,可以增大闪存系统总使用寿命。另外,由于在主机写操作期间不执行去重,所以去重不会增大主机写操作的延迟。由于复制有效数据需要写数据,所以减小写的数据量可以增大相应的闪存设备的使用寿命。
较之联机去重,脱机去重可能更易于被中断。例如,借助脱机去重,数据已经存储在闪存设备上,并且更新映射。如果在脱机去重期间接收到新的读命令,就可以读取数据,因为仍如之前写入那样存储数据,或者通过去重已经更新了映射。如果在脱机去重期间接收到新的写命令,则通常将数据写到新的物理地址,而不是被去重检查的物理地址。在脱机去重期间,GC命令的优先级可以低于主机写命令,为主机提供了更大的性能益处。另外,去重可以优化存储利用率,因为可以得到更多空闲空间。
本领域技术人员会意识到,本文公开的多个示例性块、模块、元件、组件、方法和算法可以实施为电子硬件、计算机软件或二者组合。为了示出硬件与软件的这个互换性,以上普遍地按照其功能说明了多个示例性块、模块、元件、组件、方法和算法。这种功能是实施为硬件还是软件取决于施加于总系统上的特定应用和设计约束。技术人员可以针对每一个特定应用以不同的方式实施所述的功能。在不脱离本发明技术的范围的情况下,可以不同地布置多个组件和块(例如以不同顺序布置或以不同方式划分)。
应理解,在公开的期间的步骤的特定顺序或层级是示例性方案的举例说明。基于设计偏好,应理解,可以重新排列期间的步骤的特定顺序或层级。可以同时执行一些步骤。所附方法权利要求以示例顺序呈现了多个步骤的要素,并非意图局限于所呈现的特定顺序或层级。
提供了前述说明以使得本领域技术人员能够实践本文所述的多个方面。对这些方面的不同修改对于本领域技术人员是显而易见的,本文限定的普遍原理可以应用于其它方面。因而,权利要求书并非旨在局限于本文所示的方面,而是符合与权利要求语言一致的完整范围,其中,对单数形式的要素的参考并非旨在表示“一个且仅有一个”,除非特别如此表述了,而是表示“一个或多个”。除非特别另有说明,术语“一些”指代一个或多个。阳性代名词(例如他的)包括阴性和中性(例如她的或它的),反之亦然。如果有的话,仅出于方便使用了标题和副标题,并非限定本发明。
诸如“方面”的短语并非暗示这种方面对于本发明技术的必不可少的或者这种方面可应用于本发明技术的全部结构。涉及方面的公开可以应用于全部结构或者一个或多个结构。诸如方面的关于可以指代一个或多个方面,反之亦然。诸如“结构”的短语并非暗示这种结构对于本发明技术的必不可少的或者这种结构可应用于本发明技术的全部结构。涉及结构的公开可以应用于全部结构或者一个或多个结构。诸如“结构”的短语指代一个或多个结构,反之亦然。
本文使用词语“示例性的”来表示“充当示例或举例说明”。本文所述的任何方面或设计都必然解释为相对于其它方面或设计是优选的或者有优势的。
通过参考权利要求书明确包含或者旨在包含对于本公开内容通篇中所述的多个方面的要素的全部结构和功能等效替代,其对于本领域普通技术人员是已知的或者稍后要获知的。此外,本文公开的内容绝非旨在贡献给公众,不管这种公开是否在权利要求书中明确表述了。不应根据35U.S.C.§112第六段的规定解释权利要求要素,除非使用短语“装置,用于”明确描述了该要素,或在方法权利要求的情况下使用短语“步骤,用于”描述该要素。而且,对于说明或权利要求书中使用的术语“包括”、“具有”等的范围,这种术语旨在是包括性的,方式类似于术语“包含”,如同“包含”在权利要求中用作过渡词时所解释的。
Claims (25)
1.一种用于管理闪存系统的方法,包括:
把多个闪存数据单元从闪存读入缓存器,其中,所述多个闪存数据单元的每一个都包括一个或多个主机数据单元;
为读入所述缓存器的每一个主机数据单元确定标识符;
基于共享相应唯一性标识符的主机数据单元的数量,从所确定的标识符中选择一组唯一性标识符;以及
对所述一组唯一性标识符中的每一个唯一性标识符:
把共享该唯一性标识符的第一主机数据单元指定为主数据单元,其中,在查找表中,把所述第一主机数据单元的逻辑地址映射到所述闪存中的第一物理地址;
在所述查找表中把共享该唯一性标识符的一个或多个第二主机数据单元的相应逻辑地址从所述闪存中的相应第二物理地址重新映射到所述闪存中的所述第一物理地址;以及
使所述闪存中的所述相应第二物理地址处存储的数据无效。
2.根据权利要求1所述的方法,其中,响应于系统维护操作,把所述多个闪存数据单元从所述闪存读入所述缓存器,及
其中,所述方法进一步包括:在使所述相应第二物理地址处存储的数据无效之后,执行所述系统维护操作。
3.根据权利要求1所述的方法,其中,所述方法进一步包括:
基于所确定的主机数据单元的标识符填充数据结构,其中,所述数据结构包括用于所确定的标识符的每一个唯一性标识符的条目,并且其中,每一个条目都包括共享相应唯一性标识符的主机数据单元的计数,和共享该相应唯一性标识符的每一个主机数据单元的逻辑地址,
其中,通过遍历所述数据结构的条目并选择预定数目的具有主机数据单元的最大计数的唯一性标识符来选择所述一组唯一性标识符。
4.根据权利要求3所述的方法,其中,所述主机数据单元的最大计数大于下阈值计数。
5.根据权利要求3所述的方法,其中,所述主机数据单元的最大计数排除大于上阈值计数的主机数据单元的计数。
6.根据权利要求3所述的方法,其中,所述数据结构包括B树,并且其中,每一个条目都包括所述B树的相应的键。
7.根据权利要求1所述的方法,进一步包括,对所述一组唯一性标识符中的每一个唯一性标识符:
在反向追踪表中存储所述第一物理地址至所述第一主机数据单元的逻辑地址的相应反向映射和所述一个或多个第二主机数据单元的相应逻辑地址。
8.根据权利要求7所述的方法,进一步包括:
从所述查找表删除待修改的目标主机数据单元的逻辑地址的映射,所述目标主机数据单元的逻辑地址已经映射到所述主数据单元的物理地址;以及
从所述反向追踪表删除所述主数据单元的物理地址至所述目标主机数据的逻辑地址的反向映射。
9.根据权利要求7所述的方法,进一步包括:
把数据从目标主机数据单元的物理地址复制到新物理地址,其中,所述目标主机数据单元待修改,并且所述目标主机数据单元被指定作为所述主数据单元;
把所述新物理地址的主机数据单元指定为所述主数据单元;
在所述查找表中把所述第二主机数据单元的相应逻辑地址重新映射到所述新物理地址;
在所述反向追踪表中把所述目标主机数据单元的物理地址的反向映射更新为所述新物理地址的反向映射;以及
使所述目标主机数据单元的物理地址处存储的数据无效。
10.根据权利要求1所述的方法,进一步包括:
对所述一组唯一性标识符中的唯一性标识符所关联的每一个逻辑地址,在所述查找表中对应于该逻辑地址的条目中设置去重标记,其中,所述去重标记指示该逻辑地址被映射到唯一性相应物理地址。
11.根据权利要求1所述的方法,其中,所述多个闪存数据单元包括来自所述闪存系统的多个闪存设备的相应闪存数据单元,并且其中,响应于系统维护操作选择来自所述多个闪存设备的相应闪存数据单元。
12.一种闪存系统,包括:
多个闪存设备;
包括缓存器的存储器;以及
控制器,所述控制器被配置为:
把多个闪存数据单元从所述多个闪存设备读入所述缓存器,其中,所述多个闪存数据单元的每一个都包括一个或多个主机数据单元;
为读入所述缓存器的每一个主机数据单元确定标识符;
基于共享相应唯一性标识符的主机数据单元的数量,从所确定的标识符中选择一组唯一性标识符;以及
对所述一组唯一性标识符中的每一个唯一性标识符:
把共享该唯一性标识符的第一主机数据单元指定为主数据单元,其中,在查找表中,把所述第一主机数据单元的逻辑地址映射到所述闪存中的第一物理地址;
在所述查找表中把共享该唯一性标识符的一个或多个第二主机数据单元的相应逻辑地址从所述闪存中的相应第二物理地址重新映射到所述闪存中的所述第一物理地址;以及
使所述闪存中的所述相应第二物理地址处存储的数据无效。
13.根据权利要求12所述的闪存系统,其中,所述控制器被配置为响应于系统维护操作,把所述多个闪存数据单元从所述多个闪存设备读入所述缓存器,以及
其中,所述控制器进一步被配置为在使所述相应第二物理地址处存储的数据无效后,执行所述系统维护操作。
14.根据权利要求12所述的闪存系统,其中,所述控制器进一步被配置为:
基于所确定的主机数据单元的标识符填充所述存储器中的数据结构,其中,所述数据结构包括用于所确定的标识符的每一个唯一性标识符的条目,以及其中,每一个条目都包括共享相应唯一性标识符的主机数据单元的计数,和共享该相应唯一性标识符的每一个主机数据单元的逻辑地址,
其中,通过遍历所述数据结构的条目并选择预定数目的具有主机数据单元的最大计数的唯一性标识符来选择所述一组唯一性标识符。
15.根据权利要求14所述的闪存系统,其中,所述主机数据单元的最大计数大于下阈值计数。
16.根据权利要求14所述的闪存系统,其中,所述主机数据单元的最大计数排除大于上阈值计数的主机数据单元的计数。
17.根据权利要求14所述的闪存系统,其中,所述数据结构包括B树,以及其中,每一个条目都包括所述B树的相应的键。
18.根据权利要求12所述的闪存系统,其中,所述控制器进一步被配置为对所述一组唯一性标识符中的每一个唯一性标识符:
在反向追踪表中存储所述第一物理地址至所述第一主机数据单元的逻辑地址的相应反向映射和所述一个或多个第二主机数据单元的相应逻辑地址。
19.根据权利要求18所述的闪存系统,其中,所述控制器进一步被配置为:
从所述查找表删除待修改的目标主机数据单元的逻辑地址的映射,所述目标主机数据单元的逻辑地址已经映射到所述主数据单元的物理地址;以及
从所述反向追踪表删除所述主数据单元的物理地址至所述目标主机数据的逻辑地址的反向映射。
20.根据权利要求18所述的闪存系统,其中,所述控制器进一步被配置为:
把数据从目标主机数据单元的物理地址复制到新物理地址,其中,所述目标主机数据单元待修改,并且所述目标主机数据单元被指定为主数据单元;
把所述新物理地址的主机数据单元指定为所述主数据单元;
在所述查找表中把所述第二主机数据单元的相应逻辑地址重新映射到所述新物理地址;
在所述反向追踪表中把所述目标主机数据单元的物理地址的反向映射更新为所述新物理地址的反向映射;以及
使所述目标主机数据单元的物理地址处存储的数据无效。
21.根据权利要求12所述的闪存系统,其中,所述控制器进一步被配置为:
对所述一组唯一性标识符中的唯一性标识符所关联的每一个逻辑地址,在所述查找表中对应于该逻辑地址的条目中设置去重标记,其中,所述去重标记指示该逻辑地址不映射到唯一性相应物理地址。
22.根据权利要求12所述的闪存系统,其中,所述多个闪存数据单元包括所述多个闪存设备的相应闪存数据单元,以及其中,响应于系统维护操作选择来自所述多个闪存设备的相应闪存数据单元。
23.一种非暂态机器可读介质,包括存储于其中的指令,当由机器执行所述指令时,所述指令使得机器执行操作,包括:
把多个闪存数据单元从闪存读入缓存器,其中,所述多个闪存数据单元的每一个都包括一个或多个主机数据单元;
为读入所述缓存器的每一个主机数据单元确定标识符;
基于共享相应唯一性标识符的主机数据单元的数量,从所确定的标识符中选择一组唯一性标识符;以及
对所述一组唯一性标识符中的每一个唯一性标识符:
把共享该唯一性标识符的第一主机数据单元指定为主数据单元,其中,在查找表中,把所述第一主机数据单元的逻辑地址映射到所述闪存中的第一物理地址;
在所述查找表中把共享该唯一性标识符的一个或多个第二主机数据单元的相应逻辑地址从所述闪存中的相应第二物理地址重新映射到所述闪存中的所述第一物理地址;以及
使所述闪存中的所述相应第二物理地址处存储的数据无效。
24.根据权利要求23所述的非暂时性机器可读介质,其中,所述指令进一步使得所述机器执行操作,包括:
基于所确定的主机数据单元的标识符填充数据结构,其中,所述数据结构包括用于所确定的标识符的每一个唯一性标识符的条目,以及其中,每一个条目都包括共享相应唯一性标识符的主机数据单元的计数,和共享该相应唯一性标识符的每一个主机数据单元的逻辑地址,
其中,通过遍历所述数据结构的条目并选择预定数目的具有主机数据单元的最大计数的唯一性标识符来选择所述一组唯一性标识符。
25.根据权利要求23所述的非暂时性机器可读介质,其中,响应于垃圾收集操作将所述多个闪存数据单元从所述闪存读入所述缓存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/500,937 US9792069B2 (en) | 2014-09-29 | 2014-09-29 | Offline deduplication for solid-state storage devices |
US14/500,937 | 2014-09-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468294A true CN105468294A (zh) | 2016-04-06 |
CN105468294B CN105468294B (zh) | 2018-10-26 |
Family
ID=54544168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510775934.7A Active CN105468294B (zh) | 2014-09-29 | 2015-09-29 | 用于固态存储设备的脱机去重 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9792069B2 (zh) |
CN (1) | CN105468294B (zh) |
DE (1) | DE102015012621A1 (zh) |
FR (1) | FR3026512A1 (zh) |
GB (1) | GB2532850B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301133A (zh) * | 2017-07-20 | 2017-10-27 | 郑州云海信息技术有限公司 | 一种构建丢失的FTL table的方法及装置 |
CN108304736A (zh) * | 2018-02-09 | 2018-07-20 | 深圳国微技术有限公司 | 一种安全芯片 |
CN109213450A (zh) * | 2018-09-10 | 2019-01-15 | 郑州云海信息技术有限公司 | 一种基于闪存阵列的关联元数据删除方法、装置及设备 |
TWI768799B (zh) * | 2021-03-30 | 2022-06-21 | 宏碁股份有限公司 | 資料讀取方法及電子系統 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102320864B1 (ko) * | 2015-03-24 | 2021-11-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US10515055B2 (en) * | 2015-09-18 | 2019-12-24 | Netapp, Inc. | Mapping logical identifiers using multiple identifier spaces |
JP6679971B2 (ja) * | 2016-02-16 | 2020-04-15 | セイコーエプソン株式会社 | 記憶装置、液体容器及びホスト装置 |
US10229000B2 (en) | 2016-08-09 | 2019-03-12 | Seagate Llc | Erasure codes to prevent lower page corruption in flash memory |
CA2977742C (en) * | 2016-09-28 | 2024-04-16 | Huawei Technologies Co., Ltd. | Method for deduplication in storage system, storage system, and controller |
US10235397B1 (en) * | 2016-09-30 | 2019-03-19 | EMC IP Holding Company LLC | Trees and graphs in flash memory |
US10282127B2 (en) | 2017-04-20 | 2019-05-07 | Western Digital Technologies, Inc. | Managing data in a storage system |
US10809928B2 (en) | 2017-06-02 | 2020-10-20 | Western Digital Technologies, Inc. | Efficient data deduplication leveraging sequential chunks or auxiliary databases |
US10503608B2 (en) | 2017-07-24 | 2019-12-10 | Western Digital Technologies, Inc. | Efficient management of reference blocks used in data deduplication |
US10579593B2 (en) * | 2018-01-31 | 2020-03-03 | EMC IP Holding Company, LLC | Techniques for selectively deactivating storage deduplication |
EP4130970A1 (en) * | 2019-07-26 | 2023-02-08 | Huawei Technologies Co., Ltd. | Data processing method and apparatus in storage system, and computer readable storage medium |
CN113867642B (zh) * | 2021-09-29 | 2023-08-04 | 杭州海康存储科技有限公司 | 数据处理方法、装置及存储设备 |
CN117271224B (zh) * | 2023-11-14 | 2024-02-20 | 苏州元脑智能科技有限公司 | 存储系统的数据重复存储处理方法及装置、存储介质、电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和系统 |
US20110022780A1 (en) * | 2009-07-24 | 2011-01-27 | Nir Jacob Wakrat | Restore index page |
CN103164346A (zh) * | 2011-12-12 | 2013-06-19 | 苹果公司 | Lba位图使用 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008106686A1 (en) * | 2007-03-01 | 2008-09-04 | Douglas Dumitru | Fast block device and methodology |
JP5026213B2 (ja) | 2007-09-28 | 2012-09-12 | 株式会社日立製作所 | ストレージ装置及びデータ重複排除方法 |
US8612699B2 (en) | 2010-06-25 | 2013-12-17 | International Business Machines Corporation | Deduplication in a hybrid storage environment |
US8352676B2 (en) | 2010-10-26 | 2013-01-08 | Hitachi, Ltd. | Apparatus and method to store a plurality of data having a common pattern and guarantee codes associated therewith in a single page |
US8572053B2 (en) | 2010-12-09 | 2013-10-29 | Jeffrey Vincent TOFANO | De-duplication indexing |
KR101982251B1 (ko) | 2011-05-24 | 2019-05-24 | 마벨 월드 트레이드 리미티드 | 저장 디바이스들이 낮은 과도 공급으로 낮은 기입 증폭을 달성하기 위한 방법 |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US8930307B2 (en) | 2011-09-30 | 2015-01-06 | Pure Storage, Inc. | Method for removing duplicate data from a storage array |
US8583868B2 (en) | 2011-08-29 | 2013-11-12 | International Business Machines | Storage system cache using flash memory with direct block access |
US9021231B2 (en) | 2011-09-02 | 2015-04-28 | SMART Storage Systems, Inc. | Storage control system with write amplification control mechanism and method of operation thereof |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US8930612B2 (en) | 2012-05-31 | 2015-01-06 | Seagate Technology Llc | Background deduplication of data sets in a memory |
US8780633B2 (en) | 2012-11-09 | 2014-07-15 | SanDisk Technologies, Inc. | De-duplication system using NAND flash based content addressable memory |
US9898404B2 (en) * | 2013-07-14 | 2018-02-20 | Cnex Labs | Method and apparatus for providing improved garbage collection process in solid state drive |
-
2014
- 2014-09-29 US US14/500,937 patent/US9792069B2/en active Active
-
2015
- 2015-09-28 FR FR1559103A patent/FR3026512A1/fr active Pending
- 2015-09-28 GB GB1517060.8A patent/GB2532850B/en active Active
- 2015-09-29 CN CN201510775934.7A patent/CN105468294B/zh active Active
- 2015-09-29 DE DE102015012621.0A patent/DE102015012621A1/de not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和系统 |
US20110022780A1 (en) * | 2009-07-24 | 2011-01-27 | Nir Jacob Wakrat | Restore index page |
CN103164346A (zh) * | 2011-12-12 | 2013-06-19 | 苹果公司 | Lba位图使用 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301133A (zh) * | 2017-07-20 | 2017-10-27 | 郑州云海信息技术有限公司 | 一种构建丢失的FTL table的方法及装置 |
CN107301133B (zh) * | 2017-07-20 | 2021-01-12 | 苏州浪潮智能科技有限公司 | 一种构建丢失的FTL table的方法及装置 |
CN108304736A (zh) * | 2018-02-09 | 2018-07-20 | 深圳国微技术有限公司 | 一种安全芯片 |
WO2019153395A1 (zh) * | 2018-02-09 | 2019-08-15 | 深圳国微技术有限公司 | 一种安全芯片 |
CN109213450A (zh) * | 2018-09-10 | 2019-01-15 | 郑州云海信息技术有限公司 | 一种基于闪存阵列的关联元数据删除方法、装置及设备 |
CN109213450B (zh) * | 2018-09-10 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种基于闪存阵列的关联元数据删除方法、装置及设备 |
TWI768799B (zh) * | 2021-03-30 | 2022-06-21 | 宏碁股份有限公司 | 資料讀取方法及電子系統 |
Also Published As
Publication number | Publication date |
---|---|
CN105468294B (zh) | 2018-10-26 |
US9792069B2 (en) | 2017-10-17 |
GB2532850B (en) | 2016-12-07 |
FR3026512A1 (zh) | 2016-04-01 |
DE102015012621A1 (de) | 2016-03-31 |
US20160092138A1 (en) | 2016-03-31 |
GB201517060D0 (en) | 2015-11-11 |
GB2532850A (en) | 2016-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468294A (zh) | 用于固态存储设备的脱机去重 | |
CN113168408B (zh) | 利用压缩的键值存储树数据块溢出 | |
JP6967986B2 (ja) | メモリシステム | |
CN113039547B (zh) | 键值存储存储器系统、方法及相关存储媒体 | |
TWI638263B (zh) | 資料備份方法、資料恢復方法以及儲存控制器 | |
US10061710B2 (en) | Storage device | |
US7761655B2 (en) | Storage system and method of preventing deterioration of write performance in storage system | |
US8775771B2 (en) | Block management method for a flash memory and flash memory controller and storage system using the same | |
US8478796B2 (en) | Uncorrectable error handling schemes for non-volatile memories | |
CN103092766B (zh) | 一种用于nand flash的均衡损耗实现方法 | |
KR20170009706A (ko) | 중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법 | |
US10990528B2 (en) | Methods and systems for managing physical information of memory units in a memory device | |
TWI537728B (zh) | 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN104346287B (zh) | 在固态介质中使用多级别映射的修整机制 | |
US8516184B2 (en) | Data updating using mark count threshold in non-volatile memory | |
US10936203B2 (en) | Memory storage device and system employing nonvolatile read/write buffers | |
JP2005242897A (ja) | フラッシュディスク装置 | |
US10552335B2 (en) | Method and electronic device for a mapping table in a solid-state memory | |
US8819387B2 (en) | Memory storage device, memory controller, and method for identifying valid data | |
KR20210050592A (ko) | 저장 디바이스 상의 네임스페이스에서의 오류 검사 | |
JP2009205689A (ja) | フラッシュディスク装置 | |
CN111104045A (zh) | 一种存储控制方法、装置、设备和计算机存储介质 | |
CN109388520B (zh) | 数据备份方法、数据恢复方法以及存储控制器 | |
CN105353979A (zh) | SSD内部数据文件系统eblock链接结构、管理系统及方法 | |
CN113703671B (zh) | 一种数据块擦除方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20181128 Address after: American California Patentee after: Western Digital Technologies, Inc. Address before: Amsterdam Patentee before: Hitachi Global Storage Tech Nl |
|
TR01 | Transfer of patent right |