CN105468293A - 通过预测损坏的m-页提高闪存利用率的方法和系统 - Google Patents

通过预测损坏的m-页提高闪存利用率的方法和系统 Download PDF

Info

Publication number
CN105468293A
CN105468293A CN201510629154.1A CN201510629154A CN105468293A CN 105468293 A CN105468293 A CN 105468293A CN 201510629154 A CN201510629154 A CN 201510629154A CN 105468293 A CN105468293 A CN 105468293A
Authority
CN
China
Prior art keywords
page
data
bev
read request
volatile storage
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
Application number
CN201510629154.1A
Other languages
English (en)
Other versions
CN105468293B (zh
Inventor
H·塔巴雷茨
R·阿加瓦尔
J·P·费雷拉
J·S·邦威克
M·W·夏皮罗
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.)
EMC Inc
EMC Corp
Original Assignee
EMC Inc
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 EMC Inc filed Critical EMC Inc
Publication of CN105468293A publication Critical patent/CN105468293A/zh
Application granted granted Critical
Publication of CN105468293B publication Critical patent/CN105468293B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
    • 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
    • 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/064Management of blocks
    • 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/0653Monitoring storage devices or systems
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明公开了一种通过预测损坏的m-页提高闪存利用率的方法和系统,其涉及一种用于管理持久性存储器的方法。该方法包括选择用于主动读请求的页,其中,该页位于持久性存储器中。该方法还包括:向该页发布主动读请求,响应于该主动读请求而接收用于存储在该页上的数据的位错误值(BEV),获得用于该页的BEV阈值(T),其中,使用与该页相关联的编程/擦除循环值和存储在该页上的数据的保持时间来确定T,进行BEV大于T的第一确定,基于该第一确定:识别m-页,其中,m-页是一组页,其中,该页在该一组页中,以及将该m-页设定为对未来操作不可分配。

Description

通过预测损坏的m-页提高闪存利用率的方法和系统
技术领域
本文公开的实施方式总体上涉及用于提高闪存利用率的方法和系统。更具体地,本文公开的实施方式涉及一种用于管理持久性存储器的方法以及与该方法相关联的一种系统和一种非临时计算机可读介质。
背景技术
用于存储系统的一个重要性能度量是与检索存储在存储系统中的数据有关的延迟。存储系统的性能随着读取延迟的减小而改善。如果存储系统能够可靠地从存储介质中检索无错误数据,则可以减小用于存储系统的读取延迟。当未检索到无错误数据时,存储系统可执行附加动作以便从检索数据去除错误。例如,存储系统可使用诸如纠错码(ECC)和/或RAID之类的纠错机制来从检索数据去除错误或者另外生成无错误数据。纠错机制的使用导致读取延迟的增加,其伴随有相应的性能下降。
发明内容
总体上,在一方面,本发明涉及一种用于管理持久性存储器的方法,该方法包括:选择用于主动读请求的页,其中,该页位于持久性存储器中;向该页发布主动读请求;响应于该主动读请求而接收用于存储在该页上的数据的位错误值(BEV);获得用于该页的BEV阈值(T),其中,使用与该页相关联的编程/擦除循环值和存储在该页上的数据的保持时间来确定T;进行BEV大于T的第一确定;基于该第一确定:识别m-页,其中,m-页是一组页,其中,该页在该一组页中;将该m-页设定为对未来操作不可分配。
总体上,在一方面,本发明涉及一种系统,该系统包括:包括存储模块控制器和持久性存储器的存储模块;以及被操作连接到存储模块和客户端的控制模块,其中,该控制模块执行至少以下步骤:选择用于主动读请求的页,其中,该页位于持久性存储器中;向该页发布主动读请求;响应于该主动读请求而接收用于存储在该页上的数据的位错误值(BEV);获得用于该页的BEV阈值(T),其中,使用与该页相关联的编程/擦除循环值和存储在该页上的数据的保持时间来确定T;进行BEV大于T的第一确定;基于该第一确定:识别m-页,其中,m-页是一组页,其中,该页在该一组页中;以及将该m-页设定为对未来操作不可分配。
总体上,在一方面,本发明涉及一种包括计算机可读程序代码的非临时计算机可读介质,该计算机可读程序代码在被计算机处理器执行时使得计算机处理器能够:选择用于主动读请求的页,其中,该页位于持久性存储器中;向该页发布主动读请求;响应于该主动读请求而接收用于存储在该页上的数据的位错误值(BEV);获得用于该页的BEV阈值(T),其中,使用与该页相关联的编程/擦除循环值和存储在该页上的数据的保持时间来确定T;进行BEV大于T的第一确定;基于该第一确定:识别m-页,其中,m-页是一组页,其中,该页在该一组页中;以及将该m-页设定为对未来操作不可分配。
根据以下描述和所附权利要求,本发明的其它方面将是显而易见的。
附图说明
图1A—1C示出了根据本发明的一个或多个实施方式的系统。
图2示出了根据本发明的一个或多个实施方式的存储设备。
图3示出了根据本发明的一个或多个实施方式的存储模块。
图4示出了根据本发明的一个或多个实施方式的各种部件之间的关系。
图5示出了根据本发明的一个或多个实施方式的用于处理主动读请求的方法。
图6示出了根据本发明的一个或多个实施方式的用于处理主动读请求的方法。
图7A—D示出了根据本发明的一个或多个实施方式的示例。
具体实施方式
现在将参考附图来详细地描述本发明的特定实施方式。在本发明的实施方式的以下详细描述中,阐述了许多特定细节以便提供本发明的更透彻理解。然而,对于本领域的技术人员而言将显而易见的是可在没有这些特定细节的情况下实施本发明。在其它情况下,并未详细地描述众所周知的特征以避免不必要地使本描述复杂化。
在图1—7D的以下描述中,在本发明的各种实施方式中,相对于附图描述的任何部件可等价于相对于任何其它图描述的一个或多个类似名称的部件。为了简便起见,将不会对每个图的这些部件重复描述。因此,通过引用而结合每个图的部件的每个实施方式并假定为可选地存在于具有一个或多个类似名称的部件的每个图内。另外,根据本发明的各种实施方式,图的部件的任何描述将被解释为除相对于任何其它图中的相应类似名称部件所述的实施方式之外、与之相结合或作为其替代可实现的可选实施方式。
一般地,本发明的实施方式涉及通过主动地识别固态存储器中的页来增加固态储存器的利用率,对于该页而言,存在先前存储的数据在随后被请求时将不可检索的高可能性。换言之,本发明的实施方式主动地识别将来可能出故障的页,其中,此类故障很可能触发诸如RAID(廉价磁盘冗余陈列)方案之类的纠错机制的执行。本发明的实施方式基于用于主动读取页上的数据的位错误值(BEV)是否大于阈值(T)来主动地识别很可能出故障的页,其中,T取决于页的P/E循环值(p)和主动读取页上的数据的保持时间(t)。主动地识别在将来具有高故障可能性的页的能力导致限制此类页存储数据,并且因此限制了调用纠错机制以读取已存储数据的需要。由于RAID(或其它纠错机制)被调用的可能性降低,所以系统的性能增加(即,存在用于对读请求提供服务的较低读延迟)。
以下对用于实现本发明的一个或多个实施方式的一个或多个系统和方法进行描述。
图1A—1C示出了根据本发明的一个或多个实施方式的系统。参考图1A,该系统包括被操作连接到存储设备102的一个或多个客户端(客户端A100A、客户端M100M)。
在本发明的一个实施方式中,客户端100A、100M对应于包括向存储设备102发布读请求和/或向存储设备102发布写请求的功能的任何物理系统。虽然在图1A中未示出,但客户端100A、100M中的每一个可包括客户端处理器(未示出)、客户端存储器(未示出)以及实现本发明的一个或多个实施方式所需的任何其它软件和/或硬件。
在本发明的一个实施方式中,客户端100A—100M被配置为执行包括文件系统的操作系统(OS)。文件系统提供了用于从存储设备102进行文件的存储和检索的机制。更具体地,文件系统包括执行所需动作以向存储设备发布读请求和写请求的功能。文件系统还提供了编程界面以使得能够创建和删除文件、读和写文件、在文件内执行查找、创建和删除目录、管理目录内容等。另外,文件系统还提供了管理界面以创建和删除文件系统。在本发明的一个实施方式中,为了访问文件,操作系统(经由文件系统)通常提供文件操作界面以打开、关闭、读和写每个文件内的数据和/或操作相应的元数据。
继续图1A的讨论,在本发明的一个实施方式中,客户端100A、100M被配置为使用以下协议中的一个或多个与存储设备102通信:外围部件互连(PCI)、快速PCI(PCIe)、扩展PCI(PCI-X)、快速非易失性存储器(NVMe)、快速PCI结构上的快速非易失性存储器(NVMe)、以太网结构上的快速非易失性存储器(NVMe)以及无限带宽结构上的快速非易失性存储器(NVMe)。本领域的技术人员将认识到本发明不限于上述协议。
在本发明的一个实施方式中,存储设备102是一种包括易失性和持久性存储器且被配置成为来自一个或多个客户端100A、100M的读请求和/或写请求提供服务的系统。下面在图2中描述存储设备102的各种实施方式。
参考图1B,图1B示出了其中将客户端100A、100M连接到以网状配置(在图1B中表示为存储设备网格104)布置的多个存储设备104A、104B、104C、104D的系统。如图1B中所示,以完全连接的网状配置示出了存储设备网格104—亦即,存储设备网格104中的每个存储设备104A、104B、104C、104D被直接地连接到存储设备网格104中的每个其它存储设备104A、104B、104C、104D。在本发明的一个实施方式中,可将客户端100A、100M中的每一个直接地连接到存储设备网格104中的一个或多个存储设备104A、104B、104C、104D。本领域的技术人员将认识到在不脱离本发明的情况下可使用其它网状配置(例如,部分连接网格)来实现存储设备网格。
参考图1C,图1C示出了其中将客户端100A、100M连接到以扇出配置布置的多个存储设备104A、104B、104C、104D的系统。在此配置中,每个客户端100A、100M被连接到存储设备104A、104B、104C、104D中的一个或多个;然而,在单独存储设备104A、104B、104C、104D之间不存在通信。
本领域的技术人员将认识到虽然图1A—1C示出了被连接到有限数目的客户端的存储设备,但在不脱离本发明的情况下可将存储设备连接到任何数目的客户端。本领域的技术人员将认识到虽然图1A—1C示出了各种系统配置,但本发明不限于上述系统配置。此外,本领域的技术人员将认识到在不脱离本发明的情况下可使用任何其它物理连接将客户端(无论系统的配置如何)连接到(一个或多个)存储设备。
图2示出了根据本发明的一个或多个实施方式的存储设备的实施方式。该存储设备包括控制模块200和存储模块组202。下面描述这些部件中的每一个。一般地,控制模块200被配置成管理来自一个或多个客户端的读和写请求的服务。特别地,控制模块被配置成经由IOM(下面讨论)从一个或多个客户端接收请求、处理请求(其可包括向存储模块发送请求)、并在该请求已被提供服务之后向客户端提供响应。另外,控制模块200包括生成并发布主动读请求且还执行各种垃圾收集操作的功能。下面参考图5和6来描述控制模块关于为读请求提供服务的操作。下面包括关于控制模块中的部件的附加细节。
继续图2的讨论,在本发明的一个实施方式中,控制模块200包括输入/输出模块(IOM)204、处理器208、存储器210以及可选地现场可编程门阵列(FPGA)212。在本发明的一个实施方式中,IOM204是客户端(例如,图1A—1C中的100A、100M)与存储设备中的其它部件之间的物理接口。IOM支持以下协议中的一个或多个:PCI、PCIe、PCI-X、以太网(包括但不限于在IEEE802.3a-802.3bj下限定的多个标准)、无限带宽(Infiniband)以及融合以太网上的远程直接存储器访问(RDMA)(RoCE)。本领域的技术人员将认识到在不脱离本发明的情况下可使用除上文所列的那些之外的协议来实现IOM。
继续图2,处理器208是具有被配置成执行指令的单核或多核的一组电子电路。在本发明的一个实施方式中,可使用复杂指令集(CISC)架构或精简指令集(RISC)架构来实现处理器208。在本发明的一个或多个实施方式中,处理器208包括根复合体(由PCIe协议定义)。在本发明的一个实施方式中,如果控制模块200包括根复合体(可将其集成到处理器208中),则存储器210经由根复合体而连接到处理器208。替换地,存储器210使用另一点到点连接机制而直接地连接到处理器208。在本发明的一个实施方式中,存储器210对应于任何易失性存储器,包括但不限于动态随机存取存储器(DRAM)、同步DRAM、SDRSDRAM以及DDRSDRAM。
在本发明的一个实施方式中,处理器208被配置成创建并更新存储器内数据结构(未示出),其中,该存储器内数据结构被存储在存储器210中。在本发明的一个实施方式中,该存储器内数据结构包括在图4中描述的信息。
在本发明的一个实施方式中,处理器被配置成将各种类型的处理卸载到FPGA212。在本发明的一个实施方式中,FPGA212包括计算用于被写入到(一个或多个)存储模块的数据和/或从(一个或多个)存储模块读取的数据的校验和的功能。此外,FPGA212可包括出于使用RAID方案(例如,RAID2—RAID6)在(一个或多个)存储模块中存储数据的目的而计算P和/或Q奇偶信息的功能和/或执行恢复使用RAID方案(例如,RAID2—RAID6)存储的已损坏数据所需的各种计算的功能。在本发明的一个实施方式中,存储模块组202包括每个被配置成存储数据的一个或多个存储模块214A、214N。下面在图3中描述存储模块的一个实施方式。
图3示出了根据本发明的一个或多个实施方式的存储模块。存储模块300包括存储模块控制器302、存储器(未示出)以及一个或多个固态存储器模块304A、304N。下面描述这些部件中的每一个。
在本发明的一个实施方式中,存储模块控制器300被配置成接收从一个或多个控制模块读取数据和/或向其写入数据的请求。此外,存储模块控制器300被配置成使用存储器(未示出)和/或固态存储器模块304A、304N来服务读和写请求。
在本发明的一个实施方式中,存储器(未示出)对应于任何易失性存储器,包括但不限于动态随机存取存储器(DRAM)、同步DRAM、SDRSDRAM以及DDRSDRAM。
在本发明的一个实施方式中,固态存储器模块对应于使用固态存储器来存储持久性数据的任何数据存储器件。在本发明的一个实施方式中,固态存储器可包括但不限于NAND闪存和NOR闪存。此外,NAND闪存和NOR闪存可包括单层单元(SLC)、多层单元(MLC)或三层单元(TLC)。本领域的技术人员将认识到本发明的实施方式不限于存储类存储器。
图4示出了根据本发明的一个或多个实施方式的各种部件之间的关系。更具体地,图4示出了存储在控制模块的存储器中的各种类型的信息。此外,控制模块包括更新存储在控制模块的存储器中的信息的功能。可将下面描述的信息存储在一个或多个存储器内数据结构中。此外,如果(一个或多个)数据结构类型保持信息之间的关系(如下所述),可使用任何数据结构类型(例如,阵列、链表、散列表等)来组织(一个或多个)存储器内数据结构内的以下信息。
存储器包括逻辑地址400到物理地址402的映射。在本发明的一个实施方式中,逻辑地址400是从客户端(例如,图1A中的100A、100M)的角度看数据看起来常驻在该处的地址。换言之,逻辑地址400对应于当向存储设备发布读请求时被客户端上的文件系统使用的地址。
在本发明的一个实施方式中,逻辑地址是(或包括)通过把散列函数(例如,SHA-1、MD-5等)应用到n元组而生成的散列值,其中,n元组是<对象ID,偏移ID>。在本发明的一个实施方式中,对象ID定义文件,并且偏移ID定义相对于文件的起始地址的位置。在本发明的另一实施方式中,n元组是<对象ID,偏移ID,产生时间>,其中,产生时间对应于创建该文件(使用对象ID来识别)时的时间。替换地,逻辑地址可包括逻辑对象ID和逻辑字节地址或者逻辑对象ID和逻辑地址偏移。在本发明的另一实施方式中,逻辑地址包括对象ID和偏移ID。本领域的技术人员将认识到可将多个逻辑地址映射到单个物理地址,并且逻辑地址内容和/或格式不限于上述实施方式。
在本发明的一个实施方式中,物理地址402对应于图3中的固态存储器模块304A、304N中的物理位置。在本发明的一个实施方式中,可将物理地址定义为以下n元组:<存储模块,通道,芯片使能,LUN,平面,块,页号,字节>。
在本发明的一个实施方式中,每个物理地址402与编程/擦除(P/E)循环值404相关联。P/E循环值可表示:(i)已经在由物理地址定义的物理位置上执行的P/E循环的数目,或(ii)P/E循环范围(例如,5,000—9,999次P/E循环),其中,在由物理地址定义的物理位置上执行的P/E循环的数目在P/E循环范围内。在本发明的一个实施方式中,P/E循环是数据到擦除块(即,用于擦除操作的最小可寻址单元,通常为一组的多个页)中的一个或多个页的写入和该块的擦除,任一顺序均可。
可基于每个页、基于每个块、基于每组块和/或以任何其它水平的粒度来存储P/E循环值。控制模块包括在数据被写入到固态存储模块(和/或从其擦除)时适当地更新P/E循环值402的功能。
在本发明的一个实施方式中,所有数据(即,客户端上的文件系统已经请求被写入到固态存储模块的数据)406与产生时间408相关联。产生时间408可对应于:(i)数据被写入到固态存储模块中的物理位置的时间;(ii)客户端发布用以将数据写入到固态存储模块的写请求的时间;或者(iii)对应于(i)或(ii)中的写事件的无单位值(即,序号)。
在本发明的一个实施方式中,存储器内数据结构包括用于已被作为读请求的一部分或者作为主动读请求的一部分读取的任何页的至少一个位错误值(BEV)。该BEV指定不正确的检索数据(即,响应于读请求或主动读请求而从页读取的数据)中的位数。可替换地将BEV表示为不正确的给定页中的位的百分比。可使用纠错码(ECC)来确定用于给定页的BEV,其中,还将用于存储在给定页上的数据的ECC存储在该页上。换言之,页可包括数据和用于数据的ECC。用于页的BEV可由存储模块控制器(参见图3,302)确定。控制模块中的存储器(图2,210)可存储从给定页获得的最后BEV和/或可存储用于给定页的多个BEV。
可使用存储的BEV值作为图5中的步骤512和图6中的步骤618中的确定的一部分。下面在图5和6中描述关于存储的BEV的使用的附加细节。
在本发明的一个实施方式中,存储器内数据结构包括<保持时间,P/E循环值>到BEV阈值416的映射。在本发明的一个实施方式中,保持时间对应于在数据到固态存储模块的写入与正在从固态存储模块读取数据的时间之间所经历的时间。可以用时间单位(秒、天、月等)来表示保持时间或者可表示为无单位值(例如,当将产生时间表示为无单位值时)。在本发明的一个实施方式中,可将<保持时间,P/E循环值>中的P/E循环值表示为P/E循环或P/E循环范围。
在本发明的一个实施方式中,通过执行实验以确定针对保持时间和P/E循环值的给定组合预测在时间t+1的页的故障的在时间t的BEV来确定BEV阈值416。优化BEV阈值416以便能够在不必将持久性存储器中的m-页标记为不可分配的同时成功地从固态存储器模块读取数据。
通过基于保持时间和P/E循环值来修改(一个或多个)BEV阈值,存储设备将可改变在给定保持时间和P/E循环值下的给定页的故障可能性的各种变量考虑在内。通过基于上述变量来理解页如何随时间推移而出故障,可使用适当的BEV阈值以主动地确定给定页在将来是否可能出故障。
在本发明的一个实施方式中,可如下在实验上确定用于给定<保持时间(t),P/E循环值(p)>的BEV阈值416:(i)针对P/E循环值(p)在时间t+1(例如,处于保持时间两个月)确定用于一组页的BEV;(ii)识别将触发RAID(或另一纠错机制)的使用的所有页(即,对于其而言可不使用ECC来修正检索数据中的错误的所有页);(iii)针对P/E循环值(p)(即,与在(i)中使用的相同P/E循环值)在时间t(例如,处于保持时间一个月)确定用于在(ii)中识别的所有页的BEV;(iv)通过减小在(ii)中识别的页的数目直至在时间t+1达到纠错机制激活极限(例如,仅1%的读取应在t+1触发纠错机制的使用)为止来识别BEV阈值(T(p,t))。
更具体地,在(iv)中,从具有最高BEV的(ii)中的页开始,连续地从在(ii)中识别的该组页中去除在(ii)中识别的页。针对从(ii)去除的每个页,还去除已去除页是其一部分的m-页中的其它页(例如,如果从(ii)中去除了页A且m-页具有四个页,则也去除作为页A所属的m-页的一部分的其它三个页)。在时间t去除上述页的结果导致这些页在时间t+1不存储任何数据,并且因此这些页不能在t+1触发纠错机制的激活。在图7A—7C中描述了确定BEV阈值的示例。
在本发明的一个实施方式中,控制模块(图2,200)使用上述信息(参见图4)来执行以下各项中的一个或多个:(i)服务客户端读请求;(ii)服务写请求;(iii)服务主动读请求;以及(iv)垃圾收集操作。控制模块可并行地执行以下请求和/或操作中的一个或多个。
在本发明的一个实施方式中,由客户端(例如,图1A,100A)发布客户端读请求,其中,该读请求包括逻辑地址。对该读请求的响应是:(i)从持久性存储器检索的数据以及可选地用于从持久性存储器检索的数据的BEV或者(ii)指示数据已损坏的通知(即,不能从持久性存储器检索数据和/或不能使用由存储模块控制器和/或控制模块实现的纠错机制来修正或重构数据)。在以下图6中包括关于为读请求提供服务的附加细节。
在本发明的一个实施方式中,由控制模块(例如,图2,200)发布主动读请求,其中,该主动读请求包括物理地址。对主动读请求的响应是:用于从持久性存储器检索的数据的BEV以及可选地从持久性存储器检索的数据。在以下图5中包括关于服务读请求的附加细节。
在本发明的一个实施方式中,由客户端(例如,图1A,100A)发布写请求,其中,该写请求包括要存储在持久性存储器中的数据或对该数据的引用。在接收到写请求时,控制模块确定要用来将数据存储在持久性存储器中的一个或多个页。从持久性存储器中的所述一组可分配页中识别被选择用来存储数据的页,其中,控制模块保持可分配页的列表。当可作为写请求的一部分或者作为垃圾收集操作(下面描述)的一部分将数据写入到页时,认为页是可分配页(下面在图5和6中讨论)。
在本发明的一个实施方式中,由控制模块实现作为垃圾收集过程的一部分执行的垃圾收集操作。垃圾收集过程的目的是回收死页(即,不再包括活动数据(即,正在被控制模块和/或在客户端上执行的一个或多个应用程序使用的数据)的页)。这可通过以下各项来实现:(i)识别包括活动页和死页的组合的持久性存储器中的块;以及(ii)将活动数据移动至仅包括活动页的持久性存储器中的另外(一个或多个)块中的一个或多个页。可仅将被作为垃圾收集操作的一部分重写到(一个或多个)新页的数据写入到作为可分配页(下面在图5和6中讨论)的(一个或多个)页。
转到流程图,虽然连续地提出并描述流程图中的各步骤,但本领域的技术人员将认识到可按照不同的顺序执行某些或所有步骤,可将其组合或省略,并且可并行地执行某些或所有步骤。
图5示出了根据本发明的一个或多个实施方式的用于由存储设备处理客户端读请求的方法。
在步骤500中,针对主动读请求选择持久性存储器中的页。该页可以是持久性存储器中的任何活动页(即,包括活动数据的任何页)。可由控制模块保持/管理活动页的列表并将其存储在控制模块内的存储器中。
在步骤502中,由控制模块向存储模块发布主动读请求,其中,该存储模块是包括(在步骤500中选择的)页位于其上面的固态存储器模块的存储模块。读请求的格式可以是存储模块控制器所支持的任何格式。主动读请求可包括(在步骤500中选择的)页的物理地址以及标志(或其它内容),其指示请求是主动读请求,而不是例如客户端读请求。
在步骤504中,从存储模块接收包括至少用于从页(即,在步骤500中选择的页)读取的数据的BEV的响应。
在步骤506中,进行关于对于给定保持时间和P/E循环值而言BEV是否大于BEV阈值(T(t,p))的确定。在本发明的一个实施方式中,针对存储在物理地址处的数据确定保持时间(t)。可使用数据的产生时间(参见图4,408)和主动读请求的时间(例如,控制模块发布主动读请求的时间)来确定保持时间。从控制模块的存储器(参见图2,210)获得数据的产生时间。通过确定主动读请求的时间与产生时间之间的差来计算保持时间。在本发明的一个实施方式中,可通过使用页的物理地址作为密钥在存储器内数据结构(位于控制模块的存储器中)中执行查找来确定P/E循环值。查询的结果可以是与物理地址相关联的实际P/E循环值(例如,与对应于物理地址的物理位置位于其中的块相关联的P/E循环值)或者可以是P/E循环值范围(例如,5,000-9,999次P/E循环),其中,与物理地址相关联的实际P/E循环值位于P/E循环值范围内。使用以下密钥<保持时间,P/E循环值>从存储器内数据结构(参见图4)获得BEV阈值(T(t,p))。
如果针对给定保持时间和P/E循环值BEV小于BEV阈值(T(t,p)),则该过程结束;否则该过程前进至步骤508。
在步骤508中,将包括(在步骤500中选择的)所述页的m-页标记为不可分配。更具体地,将作为与(在步骤500中选择的)所述页相同的m-页的一部分的每个页标记为不可分配。一旦将页标记为不可分配,则不使用该页来存储任何未来活动数据作为写操作或垃圾收集操作的一部分。在本发明的一个实施方式中,m-页是一个或多个页。可在单个原子处理中将m-页中的页写入到持久性存储器中。例如,m-页可以是在单个原子事务中被写入到持久性存储器的四个页。如果数据到m-页中的单个页的写入失败,则整个事务(即,数据到构成m-页的四个页的写入)失败。
继续图5的讨论,在步骤510中,进行关于(在步骤500中选择的)页中的数据是否是ECC可修正(即,存储模块控制器是否可以仅使用页的ECC来修正数据中的错误)的确定。如果页中的数据是ECC可修正的,则过程前进至步骤514;否则,过程前进至步骤512。
在步骤512中,进行关于是否调用RAID方案或另一纠错机制来重构(在步骤500中选择的)页中的已损坏数据作为垃圾收集过程的一部分的确定。是否调用RAID方案或另一纠错机制以重构已损坏数据的确定可基于RAID条带(所述页是其一部分)中的其它页的状态。
例如,如果在RAID条带中存在六个页(四个数据页、一个P奇偶页、一个Q奇偶页)且仅一个页已损坏,则可进行不调用RAID方案或另一纠错机制的确定,因为上述RAID条带仍可具有足够的未损坏页以重构RAID条带内的所有数据。换言之,如果在RAID条带中存在至少四个未损坏页,上述RAID条带可能能够重构RAID条带内的所有数据。由于当前在RAID条带中存在五个未损坏页,所以RAID条带中的一个附加页可被损坏而不影响恢复数据的能力。然而,如果上述RAID条带包括两个已损坏页(即,ECC不可修正的页),则进行重构(在步骤500中选择的)该页上的数据以及其它已损坏页中的数据的确定,因为RAID条带中的一个附加已损坏页(即,三个已损坏页)将导致不能重构RAID条带中的任何已损坏数据。
在本发明的一个实施方式中,控制模块跟踪RAID条带成员身份(即,哪些页是RAID条带的一部分)和RAID条带几何结构(即,奇偶页的数目、每个奇偶页中的奇偶值的类型(例如,P奇偶值、Q奇偶值等))。控制模块可使用BEV412来确定给定RAID条带中的哪些页是ECC可修正和ECC不可修正的。
本领域的技术人员将认识到在不脱离本发明的情况下可使用其它策略来确定是否调用RAID方案或另一纠错机制。
继续图5的讨论,在步骤514中,如果页中的数据是ECC可修正的,则将该页调度用于垃圾收集。将该页(或者该页位于其中的块)调度用于垃圾收集可包括将该页调度作为将作为垃圾收集操作的一部分来处理的下一页(即,从该页读取活动数据并重写(一旦被ECC修正)到持久性存储器中的新的可分配页)。
继续步骤514,如果该页上的数据是ECC不可修正的,则必须使用RAID方案来重构该页上的数据。更具体地,将该页调度用于垃圾收集。将该页(或者该页位于其中的块)调度用于垃圾收集可包括将该页调度作为将作为垃圾收集操作的一部分来处理的下一页(即,重构用于该页的数据,并将已重构数据写入到持久性存储器中的新的可分配页)。该页上的数据的重构可包括从RAID条带中的多个其它页读取数据,并且然后由控制模块执行一个或多个操作以便重构该页上的数据。该过程然后结束。
在本发明的一个实施方式中,在持久性存储器中的所有活动页上周期性地执行图5中所示的过程。可使用在控制模块中执行的低优先级线程来实现图5中所示的过程。
图6示出了根据本发明的一个或多个实施方式的用于由存储设备处理客户端读请求的方法。
在步骤600中,由控制模块从客户端接收客户端读请求,其中,客户端读请求包括逻辑地址。在步骤602中,根据逻辑地址来确定物理地址(其包括页号)。如上文所讨论的,控制模块中的存储器包括逻辑地址到物理地址的映射(参见图4的讨论,400、402)。在本发明的一个实施方式中,通过使用逻辑地址到物理地址的映射以及在步骤600中从客户端请求获得的逻辑地址来执行查找(或查询)而确定物理地址。
在步骤604中,使用物理地址生成控制模块读请求。控制模块读请求的格式可以是存储模块控制器所支持的任何格式。
在步骤606中,从存储模块接收响应,其包括用于从页(即,在步骤500中选择的页)读取的数据的BEV及(i)来自该页的数据或(ii)数据被损坏的指示(即,页上的数据是ECC不可修正的)。
在步骤608中,进行关于在步骤606中接收到的响应是否包括数据的确定。如果在步骤606中接收到的响应包括数据,则过程前进至步骤612;否则,该过程前进至步骤610。
在步骤610中,当在步骤606中接收到的响应不包括数据时,控制模块继续使用例如RAID方案或另一纠错机制来重构页上的数据。
在步骤612中,向客户端提供数据(或已重构数据)。在步骤614中,进行关于对于给定保持时间和P/E循环值而言BEV是否大于BEV阈值(T(t,p))的确定。在本发明的一个实施方式中,针对存储在物理地址处的数据确定保持时间(t)。如果针对给定的保持时间和P/E循环值BEV小于BEV阈值(T(t,p)),则该过程结束;否则该过程前进至步骤616。
在步骤616中,将包括(在步骤500中选择的)所述页的m-页标记为不可分配。更具体地,将作为与(在602中在物理地址中指定的)所述页相同的m-页的一部分的每个页标记为不可分配。
在步骤618中,进行关于是否主动地修正数据的确定。如果数据是ECC可修正的,则可根据上述步骤510进行确定。如果数据是ECC不可修正的,则可根据步骤512来进行关于是否主动地进行修正的确定。如果进行主动地修正数据的确定,则过程前进至步骤620;否则,该过程结束。在步骤620中,根据上文在步骤514中的讨论将(一个或多个)页调度为用于垃圾收集。
图7A—7D示出了根据本发明的一个或多个实施方式的示例。以下示例并不意图限制本发明的范围。
关于图7A—7C,图7A—7C图示出用p的P/E循环值来确定用于保持时间t-1的BEV阈值的一个实施方式,其中,目标是在保持时间t使将修正已损坏数据的RAID的使用局限于小于数据读取的1%。图7A示出了在保持时间t的用于各页的BEV的分布。在不实现本发明的实施方式的情况下,读请求的3.25%将要求使用RAID方案来重构已损坏数据(即,页中的3.25%具有大于50位错误的BEV,在本示例中其为可使用ECC来修正的位错误的最大数目)。
图7B示出了在保持时间t-1的用于相同页的BEV的分布。图7C示出了用于在保持时间t被损坏的页(即,在保持时间t具有大于50的BEV的页)的在保持时间t-1的BEV的分布。连续地去除图7C中所示的页(从最高BEV开始连同作为相应m-页的一部分的相关页一起)直至具有大于50的BEV的在保持时间t的页的数目对应于小于所有页的1%为止。在本示例中,被去除的页数对应于在保持时间t-1具有大于43的BEV的页。在本示例中,在时间t的已去除页的百分比是7.69%(即,持久性存储器中的页的7.69%是不可分配的)。
参考图7D,图7D示出了实现本发明的一个或多个实施方式的假定性能益处。具体地,针对p的P/E循环值和对读请求的不超过1%调用RAID的要求,本发明的实施方式针对读请求的不超过1%调用RAID,而未实现本发明的实施方式的存储设备以保持时间增量5对大于10%的读请求调用RAID。换言之,在未实现本发明的实施方式的存储设备中更频繁地10倍地调用RAID,从而与实现本发明的一个或多个实施方式的存储设备相比导致用于此类存储设备的高读延迟。
可使用由系统中的一个或多个处理器执行的指令来实现本发明的一个或多个实施方式。此外,此类指令可对应于存储在一个或多个非临时计算机可读介质上的计算机可读指令。
虽然已针对有限数目的实施方式描述了本发明,但受益于本公开的本领域的技术人员将认识到可以设计不脱离如在这里公开的本发明的范围的其它实施方式。因此,应仅由所附权利要求来限制本发明的范围。

Claims (20)

1.一种用于管理持久性存储器的方法,所述方法包括:
选择用于主动读请求的页,其中,所述页位于所述持久性存储器中;
向所述页发布所述主动读请求;
响应于所述主动读请求而接收用于存储在所述页上的数据的位错误值BEV;
获得用于所述页的BEV阈值T,其中,使用与所述页相关联的编程/擦除循环值和存储在所述页上的所述数据的保持时间来确定T;
进行所述BEV大于T的第一确定;
基于所述第一确定:
识别m-页,其中,所述m-页是一组页,其中,所述页在所述一组页中;
将所述m-页设定为对未来操作不可分配。
2.根据权利要求所述1的方法,还包括:
进行所述页上的所述数据为能够使用纠错码修正的第二确定;
基于所述第二确定:
将所述页上的所述数据调度为被写入到所述持久性存储器中的新的可分配页。
3.根据权利要求2所述的方法,还包括:
在所述调度之后:
将所述页上的所述数据作为垃圾收集操作的一部分写入到所述新的可分配页。
4.根据权利要求1所述的方法,还包括:
进行所述页上的所述数据为不能够使用纠错码修正的第二确定;
基于所述第二确定,进行使用RAID修正机制来主动地修正所述页上的所述数据的第三确定。
5.根据权利要求4所述的方法,其中,所述第三确定将持久性存储器中的至少一个其它页的BEV考虑在内,其中,所述页和所述至少一个其它页是RAID条带的一部分。
6.根据权利要求1所述的方法,其中,未来操作包括选自由写操作和垃圾收集操作组成的组的至少一个。
7.根据权利要求1所述的方法,其中,所述BEV指定所述页中不正确的位的百分比。
8.根据权利要求1所述的方法,其中,所述BEV指定所述页中不正确的位的数目。
9.根据权利要求1所述的方法,其中,使用纠错码来确定所述BEV。
10.根据权利要求1所述的方法,其中,所述页位于所述持久性存储器中的固态存储器模块上,其中,所述固态存储器模块包括多层单元。
11.根据权利要求1所述的方法,其中,使用数据被写入到所述页的第一时间和与所述主动读请求相关联的第二时间来确定所述保持时间。
12.根据权利要求11所述的方法,其中,从存储器中的存储器内数据结构获得所述第一时间,其中,所述存储器位于控制模块中。
13.根据权利要求1所述的方法,其中,所述编程/擦除循环值是编程/擦除循环值范围。
14.一种系统,包括:
存储模块,所述存储模块包括存储模块控制器和持久性存储器;以及
控制模块,所述控制模块被操作连接到所述存储模块和客户端,
其中,所述控制模块执行以下步骤:
选择用于主动读请求的页,其中,所述页位于所述持久性存储器中;
向所述页发布所述主动读请求;
响应于所述主动读请求而接收用于存储在所述页上的数据的位错误值BEV;
获得用于所述页的BEV阈值T,其中,使用与所述页相关联的编程/擦除循环值和存储在所述页上的所述数据的保持时间来确定T;
进行所述BEV大于T的第一确定;
基于所述第一确定:
识别m-页,其中,所述m-页是一组页,其中,所述页在所述一组页中;以及
将所述m-页设定为对未来操作不可分配。
15.根据权利要求14所述的系统,其中,所述持久性存储器包括闪存,并且其中,所述页位于所述闪存中。
16.根据权利要求14所述的系统,
其中,所述控制模块包括存储器,其中,所述存储器包括存储器内数据结构,所述存储器内数据结构包括用于存储在所述持久性存储器中的所有数据的产生时间和多个条目,其中,所述多个条目中的每一个包括多个BEV阈值中的一个、多个编程/擦除循环值中的一个以及多个保持时间中的一个;
其中,获得所述BEV值包括在所述存储器内数据结构中执行查找,
其中,使用用于存储在来自所述存储器的所述页上的数据的产生时间来确定用于存储在所述页上的所述数据的保持时间。
17.根据权利要求14所述的系统,其中,所述控制模块还执行以下步骤:
进行所述页上的所述数据为能够使用纠错码修正的第二确定;
基于所述第二确定:
将所述页上的所述数据调度为被写入到所述持久性存储器中的新的可分配页;
在所述调度之后,将所述页上的所述数据作为垃圾收集操作的一部分写入到所述新的可分配页。
18.根据权利要求14所述的系统,其中,所述控制模块还执行以下步骤:
进行所述页上的所述数据为不能够使用纠错码修正的第二确定;
基于所述第二确定,进行使用RAID修正机制来主动地修正所述页上的所述数据的第三确定。
19.根据权利要求18所述的系统,其中,所述第三确定将所述持久性存储器中的至少一个其它页的BEV考虑在内,其中,所述页和所述至少一个其它页是RAID条带的一部分。
20.一种包括计算机可读程序代码的非临时计算机可读介质,所述计算机可读程序代码在被计算机处理器执行时使得所述计算机处理器能够:
选择用于主动读请求的页,其中,所述页位于所述持久性存储器中;
向所述页发布所述主动读请求;
响应于所述主动读请求而接收用于存储在所述页上的数据的位错误值BEV;
获得用于所述页的BEV阈值T,其中,使用与所述页相关联的编程/擦除循环值和存储在所述页上的所述数据的保持时间来确定T;
进行所述BEV大于T的第一确定;
基于所述第一确定:
识别m-页,其中,所述m-页是一组页,其中,所述页在所述一组页中;以及
将所述m-页设定为对未来操作不可分配。
CN201510629154.1A 2014-09-30 2015-09-29 通过预测损坏的m-页提高闪存利用率的方法和系统 Active CN105468293B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/501,917 2014-09-30
US14/501,917 US9690655B2 (en) 2014-09-30 2014-09-30 Method and system for improving flash storage utilization by predicting bad m-pages

Publications (2)

Publication Number Publication Date
CN105468293A true CN105468293A (zh) 2016-04-06
CN105468293B CN105468293B (zh) 2019-02-12

Family

ID=54291029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510629154.1A Active CN105468293B (zh) 2014-09-30 2015-09-29 通过预测损坏的m-页提高闪存利用率的方法和系统

Country Status (4)

Country Link
US (2) US9690655B2 (zh)
EP (1) EP3002680A1 (zh)
JP (2) JP6496227B2 (zh)
CN (1) CN105468293B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255634A (zh) * 2016-12-28 2018-07-06 华为技术有限公司 一种数据读取方法及装置
CN108363670A (zh) * 2017-01-26 2018-08-03 华为技术有限公司 一种数据传输的方法、装置、设备和系统
CN114443344A (zh) * 2020-11-05 2022-05-06 旺宏电子股份有限公司 存储器装置及其数据保持方法、存储器控制器

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652345B2 (en) * 2015-09-24 2017-05-16 The Florida International University Board Of Trustees Techniques and systems for local independent failure domains
US10419563B2 (en) * 2016-04-28 2019-09-17 Microsoft Technology Licensing, Llc Persistent notification customization
KR102659829B1 (ko) * 2016-08-24 2024-04-22 삼성전자주식회사 Raid 동작을 제어하는 방법 및 시스템
US10095417B1 (en) 2016-12-13 2018-10-09 EMC IP Holding Company LLC Method and system for improving flash storage read performance in partially programmed blocks
US11069418B1 (en) 2016-12-30 2021-07-20 EMC IP Holding Company LLC Method and system for offline program/erase count estimation
US10338983B2 (en) 2016-12-30 2019-07-02 EMC IP Holding Company LLC Method and system for online program/erase count estimation
US10289550B1 (en) 2016-12-30 2019-05-14 EMC IP Holding Company LLC Method and system for dynamic write-back cache sizing in solid state memory storage
US10290331B1 (en) * 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for modulating read operations to support error correction in solid state memory
US10403366B1 (en) * 2017-04-28 2019-09-03 EMC IP Holding Company LLC Method and system for adapting solid state memory write parameters to satisfy performance goals based on degree of read errors
CN107301132A (zh) * 2017-06-09 2017-10-27 华中科技大学 一种闪存垃圾回收优化方法
CN109426622B (zh) * 2017-08-31 2020-11-24 香港理工大学深圳研究院 一种提高闪存固态盘寿命的方法及高寿命闪存固态盘
US10776202B1 (en) * 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
US10642525B2 (en) * 2017-12-07 2020-05-05 Western Digital Technologies, Inc. Multiple-stage data lifetime management for storage devices
US11086705B2 (en) 2019-03-18 2021-08-10 International Business Machines Corporation Managing the reliability of pages in non-volatile random access memory
KR20220020008A (ko) 2020-08-11 2022-02-18 삼성전자주식회사 비휘발성 메모리를 포함하는 메모리 저장 장치 및 전자 장치

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010079486A (ja) * 2008-09-25 2010-04-08 Panasonic Corp 半導体記録装置
US20110173484A1 (en) * 2010-01-08 2011-07-14 Ocz Technology Group, Inc. Solid-state mass storage device and method for failure anticipation
CN102150140A (zh) * 2008-12-27 2011-08-10 株式会社东芝 存储器系统、控制存储器系统的方法和信息处理装置
US8189379B2 (en) * 2009-08-12 2012-05-29 Texas Memory Systems, Inc. Reduction of read disturb errors in NAND FLASH memory
JP2014515537A (ja) * 2011-05-31 2014-06-30 マイクロン テクノロジー, インク. データ完全性を与えるための装置および方法
CN103902234A (zh) * 2012-12-26 2014-07-02 索尼公司 控制装置、控制方法和程序

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
JP4059472B2 (ja) 2001-08-09 2008-03-12 株式会社ルネサステクノロジ メモリカード及びメモリコントローラ
US8321025B2 (en) * 2006-07-31 2012-11-27 Cranial Medical Systems, Inc. Lead and methods for brain monitoring and modulation
WO2009072102A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
JP4489127B2 (ja) 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
WO2010054410A2 (en) 2008-11-10 2010-05-14 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for predicting failures in solid-state storage
US20100332894A1 (en) 2009-06-30 2010-12-30 Stephen Bowers Bit error threshold and remapping a memory device
US8139379B2 (en) * 2010-02-17 2012-03-20 Fsp Technology Inc. Reverse energy recovery circuit
CN103329103B (zh) 2010-10-27 2017-04-05 希捷科技有限公司 使用用于基于闪存的数据存储的自适应ecc技术的方法和设备
WO2013100958A1 (en) 2011-12-28 2013-07-04 Intel Corporation Cycling endurance extending for memory cells of a non-volatile memory array
US9058281B2 (en) * 2012-06-01 2015-06-16 Seagate Technology Llc Allocating memory usage based on quality metrics
US9263158B2 (en) * 2013-08-16 2016-02-16 Seagate Technology Llc Determining data retention time in a solid-state non-volatile memory
US9496043B1 (en) * 2015-06-24 2016-11-15 International Business Machines Corporation Dynamically optimizing flash data retention or endurance based on data write frequency

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010079486A (ja) * 2008-09-25 2010-04-08 Panasonic Corp 半導体記録装置
CN102150140A (zh) * 2008-12-27 2011-08-10 株式会社东芝 存储器系统、控制存储器系统的方法和信息处理装置
US8189379B2 (en) * 2009-08-12 2012-05-29 Texas Memory Systems, Inc. Reduction of read disturb errors in NAND FLASH memory
US20110173484A1 (en) * 2010-01-08 2011-07-14 Ocz Technology Group, Inc. Solid-state mass storage device and method for failure anticipation
JP2014515537A (ja) * 2011-05-31 2014-06-30 マイクロン テクノロジー, インク. データ完全性を与えるための装置および方法
CN103902234A (zh) * 2012-12-26 2014-07-02 索尼公司 控制装置、控制方法和程序

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255634A (zh) * 2016-12-28 2018-07-06 华为技术有限公司 一种数据读取方法及装置
CN108255634B (zh) * 2016-12-28 2020-08-07 华为技术有限公司 一种数据读取方法及装置
CN108363670A (zh) * 2017-01-26 2018-08-03 华为技术有限公司 一种数据传输的方法、装置、设备和系统
CN108363670B (zh) * 2017-01-26 2020-07-14 华为技术有限公司 一种数据传输的方法、装置、设备和系统
US10810135B2 (en) 2017-01-26 2020-10-20 Huawei Technologies Co., Ltd. Data transmission method, apparatus, device, and system
CN114443344A (zh) * 2020-11-05 2022-05-06 旺宏电子股份有限公司 存储器装置及其数据保持方法、存储器控制器

Also Published As

Publication number Publication date
JP6820248B2 (ja) 2021-01-27
US9690655B2 (en) 2017-06-27
EP3002680A1 (en) 2016-04-06
JP2018085122A (ja) 2018-05-31
CN105468293B (zh) 2019-02-12
US20160092304A1 (en) 2016-03-31
JP2016071893A (ja) 2016-05-09
US20170262336A1 (en) 2017-09-14
US10339001B2 (en) 2019-07-02
JP6496227B2 (ja) 2019-04-03

Similar Documents

Publication Publication Date Title
CN105468293A (zh) 通过预测损坏的m-页提高闪存利用率的方法和系统
CN105468534B (zh) 使用读取阈值表提高闪存利用率的方法和系统
US8356148B2 (en) Snapshot metadata management in a storage system
US10347349B2 (en) Method and device for fail-safe erase of flash memory
US10468077B2 (en) Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage
CN104583977B (zh) 主机辅助的存储块的压缩
US8201001B2 (en) Method for optimizing performance and power usage in an archival storage system by utilizing massive array of independent disks (MAID) techniques and controlled replication under scalable hashing (CRUSH)
WO2013190597A1 (en) Flash memory device and storage control method
WO2022142544A1 (zh) 防止闪存数据丢失的方法、固态硬盘控制器、固态硬盘
US10133764B2 (en) Reduction of write amplification in object store
US20210311879A1 (en) Apparatus and method for controlling map data in a memory system
US20190042365A1 (en) Read-optimized lazy erasure coding
TWI782847B (zh) 用來在儲存伺服器中進行基於管線的存取管理的方法及設備
US20230333750A1 (en) Apparatus and method for power-loss data protection in a system
CN110609660A (zh) Ssd阵列的主机端映射方法、装置、计算机设备及存储介质
US20230073200A1 (en) Apparatus and method for controlling a shared memory in a data processing system
US20210365183A1 (en) Apparatus and method for increasing operation efficiency in data processing system
US10095417B1 (en) Method and system for improving flash storage read performance in partially programmed blocks
CN111124290A (zh) 应用于闪存存储装置的冗余方法及闪存存储装置
US11663080B1 (en) Techniques for performing live rebuild in storage systems that operate a direct write mode
US11854657B2 (en) Memory device and memory system supporting interleaving operation and operation method thereof
US20240126462A1 (en) Apparatus and method for managing map data between host and memory system
US20220164135A1 (en) Apparatus, method and computer program for managing memory page updates within non-volatile memory
US20140380004A1 (en) Efficient storage and retrieval of fragmented data using pseudo linear dynamic byte array

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