CN108268339A - 用于在线编程/擦除计数估计的方法和系统 - Google Patents

用于在线编程/擦除计数估计的方法和系统 Download PDF

Info

Publication number
CN108268339A
CN108268339A CN201810002159.5A CN201810002159A CN108268339A CN 108268339 A CN108268339 A CN 108268339A CN 201810002159 A CN201810002159 A CN 201810002159A CN 108268339 A CN108268339 A CN 108268339A
Authority
CN
China
Prior art keywords
numerical values
physical address
sample set
cycling numerical
memory
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
CN201810002159.5A
Other languages
English (en)
Other versions
CN108268339B (zh
Inventor
S·全
H·塔布里兹
A·卡伦
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 Corp
Original Assignee
EMC IP Holding Co LLC
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 IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Publication of CN108268339A publication Critical patent/CN108268339A/zh
Application granted granted Critical
Publication of CN108268339B publication Critical patent/CN108268339B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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/079Root cause analysis, i.e. error or fault diagnosis
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/1068Adding 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 sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

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)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

总体上,该技术涉及一种用于管理持久性存储的方法。所述方法包括选择固态存储器模块中的物理地址的样本集合,以及对所述物理地址的样本集合执行垃圾收集操作。所述方法进一步包括,在所述垃圾收集操作之后,针对所述物理地址的样本集合发出写请求,针对所述物理地址的样本集合发出请求读取以获得存储在所述物理地址的样本集合中的数据的副本,使用误差校验码码字或所述写请求中的已知数据确定所存储数据的副本中的误差率,至少使用所述误差率针对SSM确定所计算的P/E循环数值,以及利用所计算的P/E循环数值更新控制模块中的存储器内数据结构。

Description

用于在线编程/擦除计数估计的方法和系统
背景技术
固态存储一般对应任何一种具有有限编程-擦除循环类型的存储。有限数量的编程-擦除循环或写循环使得有必要使用方法来避免对固态存储的相同区域进行过度写入以便防止数据丢失。为了使得固态存储的使用最大化,固态存储的存储系统使用包括对所述固态存储的各个区域上所执行的编程-擦除循环的数量进行跟踪的机制。与此同时,存储元件的特性随着编程-擦除循环的这增加而改变,而使得存储元件的各种参数的最优性取决于能够在固态存储系统中获得的编程-擦除循环信息。由于编程-擦除循环信息的任何缺失或不准确所导致的存储元件参数的次优性会导致延时增加、吞吐量下降或者数据损失。
附图说明
图1A-1C示出了依据该技术的一个或多个实施例的系统。
图2示出了依据该技术的一个或多个实施例的存储器件。
图3示出了依据该技术的一个或多个实施例的存储模块。
图4示出了依据该技术的一个或多个实施例的各种组件之间的关系。
图5A示出了依据该技术的一个或多个实施例的用于估计在线存储模块的编程/擦除(P/E)循环数值的方法。
图5B-5C示出了依据该技术的一个或多个实施例的用于从存储模块读取数据的方法。
图6示出了依据该技术的一个或多个实施例的示例。
具体实施方式
现在将参考附图信息描述该技术的具体实施例。在以下对该技术的实施例的描述中,给出了很多细节以便提供对该技术更为全面的理解。然而,对于本领域技术人员将显而易见的是,该技术可以在没有这些具体细节的情况下来实践。在其它实例中,并未对公知特征详细描述以免不必要地使得描述复杂化。
在以下对图1-6的描述中,在该技术的各个实施例中关于附图所描述的任意组件都可以等同于关于任意其它附图所描述的一个或多个同样命名的组件。为了简明,这些组件的描述将并不关于每个附图进行重复。因此,每个附图的组件的各个以及每个实施例通过引用而被合并,以及假设可选地存在与具有一个或多个同样命名的组件的每个其它附图中。此外,依据该技术的各个实施例,对图中组件的任何描述都要被解释为可选实施例,其可以替代关于任意其它附图中相对应的同样命名的组件所描述的实施例来实施,与之相结合地实施,或者除此之外而得以实施。
总体上,该技术的实施例涉及到在当前所存储的P/E循环数值并不存在或处于预期P/E循环数值范围之外时针对在线存储模块确定P/E循环数值。所计算的随后可以被用来提高损耗水平操作的准确性,从而可以防止少部分的存储元件明显比大多数存储元件更早地到达寿命终端的情形,或者可以防止存储元件的不均匀性能退化。所述系统的性能还可以通过使用所计算的P/E循环数值来改进对读取请求的服务。例如,所计算的P/E循环数值可以随保持时间和页面号码一起使用以便确定要在读取之前已经存储在固态存储中的数据时使用的(多个)适当读取阈值。以每个读取请求为基础动态地改变读取阈值的能力允许从固态存储获取到更多的无误差数据。当从固态存储获取到无误差数据时,就不需要实施纠错机制。作为结果,系统的性能有所提高。
以下描述对用于实施该技术的一个或多个实施例的一种或多种系统和方法进行了描述。
图1A-1C示出了依据该技术的一个或多个实施例的系统。参考图1A,该系统包括操作连接至存储器件(102)的一个或多个客户端(客户端A(100A)、客户端M(100M))。
在该技术的一个实施例中,客户端(100A,100M)对应于包括向存储器件(102)发出读取请求和/或向存储器件(102)发出写入请求的功能的任意物理系统。虽然在图1A中并未示出,但是客户端(100A,100M)中的每一个客户包括客户端处理器(未示出)、客户端存储器(未示出),以及实施该技术的一个或多个实施例所必需的任意其它软件和/或硬件。
在该技术的一个实施例中,客户端(100A,100M)被配置为执行包括文件系统的操作系统(OS)。所述文件系统提供了用于文件存储以及从存储器件(102)获取文件的机制。更具体地,所述文件系统包括执行向存储器件发出读取请求和写入请求所必需的动作的功能。所述文件系统还提供了使得能够创建并删除文件、读取和写入文件、在文件内执行搜索、创建和删除目录、管理目录内容等的编程接口。此外,所述文件系统还提供了创建和删除文件系统的管理接口。在该技术的一个实施例中,为了访问文件,操作系统通常(经由文件系统)提供文件操控接口以打开、关闭、读取和写入每个文件内的数据和/或操控相对应的元数据。
继续图1A的讨论,在该技术的一个实施例中,客户端(100A,100M)被配置为使用以下协议中的一种或多种与存储器件(102)进行通信:外围组件互联(PCI)、PCI-Express(PCie)、PCI-eXtended(PCI-X)、非易失性存储器Express(NVMe)、PCI-Express构造上的非易失性存储器Express(NVMe)、以太网构造上的非易失性存储器Express(NVMe),以及Infiniband构造上的非易失性存储器Express(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接收来自一个或多个客户端的请求,对所述请求进行处理(这可以包括将所述请求发送至存储模块),以及在请求已经被服务之后向客户端提供反馈。有关控制模块中的组件的附加细节在下文有所描述。另外,下文在图5A中描述控制模块关于计算P/E循环数值的操作,并且下文参考图5B-5C描述控制模块关于对读取请求进行服务的操作。
继续图2的讨论,在该技术的一个实施例中,控制模块(200)包括输入/输出模块IOM(204)、处理器(208)、存储器(210),以及可选地包括现场可编程门阵列(FPGA)(212)。在该技术的一个实施例中,IOM(204)是客户端(例如,图1A-1C中的100A、100M)和存储器件中的其它组件之间的物理接口。IOM支持以下协议中的一种或多种:PCI、PCie、PCI-X、以太网(包括但并不局限于在IEEE802.3a-802.3bj下所定义的各种标准)、Infiniband,以及被覆盖以太网上的远程直接存储器访问(RDMA)(ROCE)。本领域技术人员将会意识到,IOM可以使用以上所列出那些以外的协议来实施而并不背离该技术。
继续图2,处理器(208)是具有被配置为执行指令的单一核心或多个核心的电子电路。在该技术的一个实施例中,处理器(208)可以使用复杂指令集(CISC)架构或精简指令集(RISC)架构来实施。在该技术的一个或多个实施例中,处理器(208)包括(如PCie协议所定义的)根联合体(root complex)。在该技术的一个实施例中,如果控制模块(200)包括根联合体(其可以被整合到处理器(208)中),则存储器(210)经由所述根联合体连接至处理器(208)。替选地,存储器(210)使用另一种点对点连接机制直接连接至处理器(208)。在该技术的一个实施例中,存储器(210)对应于任意的易失性存储器,包括但并不局限于动态随机访问存储器(DRAM)、同步DRAM、SDR SDRAM和DDR SDRAM。
在该技术的一个实施例中,处理器(208)被配置为创建并更新存储器内数据结构(未示出),其中所述存储器内数据结构被存储在存储器(210)中。在该技术的一个实施例中,所述存储器内数据结构包括图4中所描述的信息。
在该技术的一个实施例中,如果存在FGPA(212),则处理器被配置为将各种类型的处理卸载至FGPA(212)。更具体地,处理器可以将其所有或部分处理卸载至FGPA(212)。在该技术的一个实施例中,存储模块群组(202)包括均被配置为存储数据的一个或多个存储模块(214A,214N)。下文在图3中描述了存储模块的一个实施例。
图3示出了依据该技术的一个或多个实施例的存储模块。存储模块(300)包括存储模块控制器(302)、存储器(未示出),以及一个或多个固态存储器模块(304A,304N)。这些组件中的每一个在下文进行描述。
在该技术的一个实施例中,存储模块控制器(300)被配置为从控制模块接收读取请求和/或写入请求。另外,存储模块控制器(300)被配置为使用存储器(未示出)和/或固态存储器模块(304A,304N)对所述读取和写入请求进行服务。
在该技术的一个实施例中,存储器(未示出)对应于任意的易失性存储器,包括但并不局限于动态随机访问存储器(DRAM)、同步DRAM、SDR SDRAM和DDR SDRAM。
在该技术的一个实施例中,固态存储器模块对应于使用固态存储器来存储持久性数据的任意数据存储设备。固态存储器可以包括但并不局限于自旋扭矩磁性RAM(ST-MRAM)、就地写入持久性存储、相变存储器(PCM)、NAND闪存以及NOR闪存。另外,NAND闪存和NOR闪存可以包括单层单元(SLC)、多层单元(MLC)或三层单元(TLC)。通常,固态存储器可以对应于具有有限数量的编程-擦除循环的任意类型的存储器。本领域技术人员将会意识到,该技术的实施例并不局限于存储类的存储器。
图4示出了依据该技术的一个或多个实施例的各种组件之间的关系。更具体地,图4示出了存储在控制模块的存储器中的各种类型的信息。另外,存储模块包括用于对存储在存储模块的存储器中的信息进行更新的功能。以下所描述的信息可以被存储在一个或多个存储器内数据结构中。另外,假设(多种)数据结构类型保存有信息之间的关系(如以下所描述的),则可以使用任何数据结构类型(例如,阵列、链表、散列表等)对在存储器内数据结构内的以下信息进行组织。
存储器包括逻辑地址(400)到物理地址(402)的映射。在该技术的一个实施例中,逻辑地址(400)是从客户端(例如,图1A中的100A、100M)的角度看上去数据所在的地址。换句话说,逻辑地址(400)对应于客户端上的文件系统在向存储器件发出读取请求时所使用的地址。
在该技术的一个实施例中,逻辑地址是(或包括)通过对n元组应用散列函数(例如,SHA-1、MD-5等)所生成的散列值,其中所述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循环范围(例如,5000-9000次P/E循环),其中已经在物理地址所定义的物理位置上执行过的P/E循环的数量处于该P/E循环范围之内。在该技术的一个实施例中,P/E循环是数据针对擦除块(即,针对擦除操作的最小可寻址单位,通常是多个页面的集合)中的一个或多个页面的写入以及该块的擦除,二者的顺序是任意的。
P/E循环数值可以以每个页面、每个块、每个块集合为基础进行存储,和/或以任意其它粒度水平来存储。控制模块包括在向固态存储模块写入数据(和/或从其擦除数据)时在适当情况下更新P/E循环数值(404)的功能。
在该技术的一个实施例中,P/E循环数值(404)可以依据图5A所示的方法进行更新。在这样的情况下,在P/E循环数值(404)被更新为对应于所计算的P/E循环数值(404)之后,所计算的P/E循环数值(404)可以在要反映发生后续P/E循环时被控制器所更新。
例如,考虑其中给定物理地址的P/E循环数值(404)当前被设置在1000的情形。随后执行图5A中的方法,并且所计算的P/E循环数值为1500。相应地,P/E循环数值(404)被更新为1500。在该更新之后,控制器在该物理地址执行五次P/E循环。P/E循环数值(404)随之被更新为1505。
继续图4的讨论,在该技术的一个实施例中,所有数据(即,客户端上的文件系统已经请求被写入到固态存储模块中的数据)(406)与出生时间(408)相关联。出生时间(408)对应于:(i)数据(作为客户端写入请求的结果,作为控制模块所发起的垃圾收集操作的结果,等等)被写入到固态存储模块中的物理位置的时间;(ii)客户端发出用于将数据写入到固态存储模块的写入请求的时间;或者(iii)对应于(i)或(ii)中的写入事件的无单位数值(例如,顺序数)。
在该技术的一个实施例中,存储器内数据结构包括<保持时间,页面号码,P/E循环数值>到一个或多个读取阈值(412)的映射。以上提到的映射可以进一步包括对读取阈值有所影响的任意(多个)其它系统参数(即,除保持时间、页面号码、P/E循环数值以外的一个或多个参数)(例如,温度、工作负载等)。在该技术的一个实施例中,保持时间对应于在数据写入到固态存储模块中的物理位置到所述数据从固态存储模块中的相同物理位置被读取的时间之间所过去的时间。保持时间可以以时间单位来表达或者可以被表达为无单位数值(例如,在出生时间被表达为无单位数值时)。在该技术的一个实施例中,<保持时间,页面号码,P/E循环数值>中的P/E循环数值可以被表达为P/E循环或P/E循环范围。
在该技术的一个实施例中,(多个)读取阈值(412)对应于电压或位移数值,其中所述位移数值对应于默认读取阈值的电压位移。每个读取阈值可以被表达为电压或对应于电压的无单位数字。
在该技术的一个实施例中,默认读取阈值由固态存储器模块的制造商所指定。另外,位移数值的粒度可以由位移数值所指定,其中所述位移数值对应于电压位移或者相对应默认读取阈值的无单位位移数字。
在该技术的一个实施例中,读取阈值(包括默认读取阈值)对应于被用来读取存储在固态存储模块中的数据的电压值。更具体地,在该技术的一个实施例中,逻辑数值(例如,对于作为SLC的存储器单元的1或0,或者对于作为MLC的存储器单元的00、10、11、01)通过将存储器单元中的电压与一个或多个读取阈值相比较来确定。存储在存储器单元中的逻辑数值基于比较结果而获得。例如,如果给定电压(V)高于B阈值且低于C阈值,则存储在存储器单元中的逻辑数值为00。在该技术的一个实施例中,固态存储器模块中的每个页面可以包括4-8K之间的数据。因此,存储模块控制器通常从多个存储器单元获得逻辑值以便为读取请求进行服务。逻辑数值的存储器单元的具体数量获得是基于(经由读取请求)所请求的数量和存储器单元的类型(SLC、MLC等)而变化的。
在该技术的一个实施例中,通过进行检验以确定读取阈值在以下至少一个变量被修改时应当如何被修改而对(多个)读取阈值(412)进行确认:保持时间、P/E循环数值和页面号码。(多个)读取阈值(412)被优化以便能够从固态存储器模块成功读取数据。具体地,针对<保持时间,P/E循环数值,页面号码>的每种组合确定最一个优读取阈值。给定<保持时间,页面号码,P/E循环数值>的最优读取阈值是在针对数据的给定保持时间,数据被存储于其上的物理位置的P/E循环数值,以及数据在其上被存储在固态存储器模块中的页面的页面号码而从固态存储器模块所获取的数据中导致最低比特误码率的读取阈值。
通过基于保持时间、P/E循环数值和页面号码修改(多个)读取阈值,存储器件将可能改变在给定保持时间、P/E循环数值和页面号码存储在给定存储器单元中的电压的各种变量纳入考虑之中。换句话说,当逻辑数值“01”要被存储在存储器单元中时,存储模块控制器在存储器单元中存储足够数量的电子以便具有对应于“01”的电压。随着时间,存储在该存储器单元中的电压基于保持时间、P/E循环数值和页面号码而变化。通过理解电压如何基于以上变量而随时间变化,可以在从存储器单元读取逻辑数值以便获取“01”时使用适当的读取阈值。
例如,(多个)第一读取阈值可以被用来在保持时间为4个月、P/E循环数值为30000以及页面号码为3时成功读取数据,而(多个)第二读取阈值可以被用来来在保持时间为5个月、P/E循环数值为30000以及页面号码为3时成功读取数据。
如果使用默认读取阈值(而不是非默认读取阈值),则可以通过读取存储器单元而获得不正确逻辑数值(例如,“11”而不是“01”)的可能性较高。这进而导致需要诸如读取重试、要求更长延时的读取命令、软解码或RAID重构(即,使用一个或多个奇偶值对所获取数据内的错误加以纠正)之类的纠错机制以便对所获取数据中的错误进行纠正并且最终向进行请求的客户端提供无错误的数据。针对这样的额外纠错机制的需求不仅增加了对客户端读取请求进行服务所需的时间而且因此降低了存储器件的性能,而且还潜在地导致了数据丢失。
在该技术的一个实施例中,可以针对每种<保持时间,P/E循环数值,页面号码>组合提供(多个)读取阈值。给定<保持时间,P/E循环数值,页面号码>的(多个)具体读取阈值可以对应于(多个)默认读取阈值或者(多个)非默认读取阈值(即,(多个)默认读取阈值以外的读取阈值)。
在该技术的另一个实施例中,存储器(图2中的210)仅存储与(多个)非默认读取阈值相关联的每种<保持时间,页面号码,P/E循环数值>组合的(多个)非默认读取阈值。在这种情况下,非默认读取阈值与给定的<保持时间,P/E循环数值,页面号码>组合相关联,在使用非默认读取阈值与使用(多个)默认读取阈值相比从固态存储器模块被读取时具有更高比例的无错误数据,。另外,在这种情况下,在使用(多个)默认读取阈值时,没有默认读取阈值储存于任何<保持时间,P/E循环数值,页面号码>组合的情况下与使用(多个)非默认读取阈值相比从固态存储器模块被读取将导致更高比例的无错误数据,都。
在该技术的一个实施例中,存储器内数据结构包括<失败比特计数(FBC),温度>至P/E循环数值(416)的映射。FBC可以表示从存储模块所读取的数据中——特别是在纠错码(ECC)码字(也被称作码字)中——不正确的比特数量。FBC可以在ECC解码操作成功时作为(位于存储模块控制器中的)ECC解码器的输出被获得。可以在ECC码字的样本上计算平均FBC。在一个实施例中,平均FBC作为来自要对其P/E循环进行估计的块或块群组的所有页面的FBC的均值而被获得。可以使用其它采样和平均方法而并不背离该技术。在一个实施例中,平均FBC作为来自要对其P/E循环进行估计的块或块群组的预定义样本页面的FBC的均值而被获得。平均FBC可以被表示为具体数值或者范围。在一个实施例中,以上所提到的映射可以不包括温度。例如,所述映射可以是<FBC>和<P/E循环数值>之间的映射。在以上映射使用平均FBC时,可以使用从存储模块所读取数据的其它错误率量度而并不背离该技术。
在该技术的一个实施例中,可以替代FBC而使用来自LDPC(低密度奇偶校验)解码器输出的综合权重。综合权重是ECC解码期间的失败奇偶校验等式的数量。可以替代FBC而使用具有诸如LDCP码之类的稀疏奇偶校验矩阵的ECC的综合权重。在该技术的一个实施例中,可以替代FBC而使用解码延时。在诸如BCH(Bose-Chaudhury-Hocquenghem)解码器或LDPC解码器之类的ECC解码器中,解码延时随着被解码器所纠正的FBC增加而增加。
在该技术的一个实施例中,在该技术的一个实施例中,<FBC,温度>到<P/E循环数值>的映射通过进行检验以确定具体温度的FBC和已知P/E循环数值而被确认。例如,可以在特定温度从具有已知P/E循环数值的固态存储器模块读取具有已知模式的数据。从该读取数据所产生的FBC随后可以被用来生成<FBC,温度>到P/E循环数值的映射。可以使用类似方法来确定<FBC>到<P/E循环数值>的映射而并不背离该技术。
转向流程图,虽然流程图中的各步骤被顺序呈现和描述,但是本领域技术人员将会意识到的是,一些或全部步骤可以以不同顺序来执行,可以被组合或生理,并且一些或全部步骤可以并行执行。
图5A示出了依据该技术的一个或多个实施例的用于估计在线存储模块的P/E循环数值的方法。图5A所示的方法可以由控制模块执行。另外,图5A所示的方法可以被定期执行,可以在检测到P/E循环数值异常时被执行,可以在存储器件的用户或第三方请求时执行,或者可以在任意其它时间执行。
在该技术的一个实施例中,在固态存储器模块中的给定区域(例如,块的集合)的P/E循环数值(i)并不存在(即,在存储器内数据结构中或者在所述区域所在的固态存储器模块中没有P/E循环数值可用),或者(ii)给定区域的P/E循环数值处于所述区域的P/E循环数值的预期范围之外时,会检测到P/E循环数值异常。P/E循环数值在固态存储器模块中的其它区域的P/E循环数值与给定区域的P/E循环数值相比相差超过10%-15%时,会处于预期范围之外。例如,如果给定区域的P/E循环数值是10000而固态存储器模块中的其它区域的P/E循环数值是15000,则会检测出P/E循环数值异常。本领域技术人员可以意识到异常阈值并不局限于10-15%;相反,所述异常阈值可以利用不同数值来配置。另外,所述异常阈值可以每个存储器件为基础,以每个固态存储器模块为基础,以每种固态存储器类型为基础来设置,或者使用其它任意的粒度水平来设置。
转向图5A,在步骤500,选择固态存储器模块(SSMM)中的物理地址的集合(样本集合)。所述物理地址的集合可以对应于SSMM中需要针对其计算P/E循环数值的区域内的物理地址。如果要针对整个SSMM计算P/E循环数值,则样本集合可以对应于跨该SSMM的代表性物理地址集合。样本集合可以对应于连续或非连续的物理地址的集合。
在步骤502,对所述样本集合执行垃圾收集以便将当前存储在样本集合中的所有数据都移动至SSMM或存储模块中的(多个)不同物理地址。在一个实施例中,步骤502由于SSM在线而被执行,所述在线即主动被存储器件用来存储数据以及对读取请求进行服务。通过垃圾收集处理,所有活动数据(即,当前正被一个或多个客户端所使用的所有数据)被复制(或以其它方式传输)至(多个)新的物理地址。所述新的物理地址可以位于SSMM的多个区域中,位于相同存储模块的不同SSMM中,或者位于不同存储模块的SSM中。每个新物理地址无论位置如何都与已知的P/E循环数值相关联(即,对于新的物理地址而言不存在当前已知的P/E循环数值异常)。一旦所有活动数据都已经被复制,则剩余在样本集合中的任何数据(或数据的副本)都被擦除。在一个实施例中,在样本集合具有已擦除状态的情况下可以不执行步骤502。
在步骤504,控制模块生成具有已知数据模式的写入请求并且将其发往样本集合。步骤504的结果是具有已知数据模式的数据被写入到样本集合。在一个实施例中,将数据写入固态存储器模块可以包括生成包括所述数据(即,要写入的数据)以及使用例如码生成器矩阵获得的奇偶位的ECC码字。所述码字随后被存储在样本集合中。在步骤506,控制模块随后生成读取请求并将所述读取请求发往样本集合。
在步骤508,控制模块随后接收当前被写入到样本集合的数据的副本。控制模块还接收样本集合位于其中的(多个)SSMM的当前温度度数。所述温度可以通过向操作连接至样本集合位于其中的(多个)SSMM的存储模块控制器发出度请求来获得。替选地,当前温度度数可以随针对读取请求的响应被包括。
在步骤510,针对样本集合确定FBC。在一个实施例中,FBC可以通过将在步骤508所接收数据的数据模式与在步骤504被写入到样本集合的数据的已知数据模式相比较来确定。所述比较可以由控制模块在每个比特的基础上执行,以便确定有所不同的比特的数量。在该技术的另一个实施例中,FBC可以通过在存储模块控制器中所解码的ECC,通过对在步骤508所接收的数据执行纠错来确定,其中所述纠错的结果包括在步骤508所接收的数据中的比特错误的数量。在使用ECC解码器的情形中,被写入到样本集合的数据并不一定需要是具有已知数据模式的数据。在一个实施例中,具有已知数据模式的数据集合可以被写入到样本集合。在这样的情况下,可以在每个物理地址(即,样本集合中的每个物理地址)的基础上来确定FBC从而获得FBC的集合。在该技术的另一个实施例中,ECC解码器可以基于样本集合中所存储的数据来获得FBC的集合。从步骤510所得到的FBC随后可以被确定为从FBC的集合所生成的平均或中值FBC。所述FBC可以使用其它机制来确定而并不背离该技术。
在步骤512,通过使用<FBC,温度>组合在存储器内数据结构中执行查找而确定所计算的P/E循环数值,其中所述FBC在步骤510中确定且所述温度在步骤508中获得。在该技术的一个实施例中,在步骤510中确定的FBC可以被映射至FBC范围,其中在步骤512中执行的查找中使用所述FBC范围而不是具体FBC。步骤512的结果是所计算的P/E循环数值。
在步骤514,确定所计算的P/E循环数值是否等于所存储的P/E循环数值。所存储的P/E循环数值对应于与样本集合处于相同分区中的物理地址的P/E循环数值。如果所计算的P/E循环数值等于所存储的P/E循环数值,则该处理进行至步骤516;否则,该处理结束。
在步骤516,存储器内数据结构被更新以包括作为与样本集合相同区域中的所有物理地址的P/E循环数值的所计算P/E循环数值。存储器内数据结构中被更新的条目的数量可以基于样本集合与之相关联的区域而变化。例如,如果样本集合仅被用来确定给定块集合的P/E循环数值,则更新的数量与其中样本集合被用来确定整个SSMM的P/E循环数值的情形相比相对小。
在该技术的一个实施例中,样本集合位于其中的SSMM可以在执行图5A所示的方法的同时对来自一个或多个客户端的读取和/或写入请求进行服务。
在一个实施例中,所计算的P/E循环数值可以被用来执行如图5B和5C中所描述的读取请求。进一步地或替选地,所计算的P/E循环数值可以被用来改进损耗均衡和/或垃圾收集操作。特别地,通过使用正确的(即,所计算的P/E循环数值),可以执行适当的损耗均衡和垃圾收集操作,而使得固态存储器模块被均匀地损耗/使用,由此延长了固态存储模块的使用寿命。
图5B示出了依据该技术的一个或多个实施例的用于由存储器件对客户端读取请求进行处理的方法。
在步骤520,控制模块从客户端接收客户端读取请求,其中所述客户端读取请求包括逻辑地址。
在步骤522,从所述逻辑地址确定物理地址(其包括页面号码)。如上文所讨论的,控制模块中的存储器包括逻辑地址到物理地址的映射(参见图4的400、402的讨论)。在该技术的一个实施例中,连同在步骤520中从客户端请求所获得的逻辑地址一起通过使用逻辑地址到物理地址的映射执行查找(或查询)来确定物理地址。
在步骤524,针对所述物理地址处所存储的数据确定保持时间(t)。所述保持时间可以使用数据的出生时间(参见图4的408)以及客户端请求的时间(例如,客户端发出客户端请求的时间,客户端请求被存储器件所接收的时间,等等)来确定。数据的出生时间从控制模块的存储器(例如,图2的210)获得。可以通过确定客户端请求的时间和出生时间之间的差值来计算保持时间。
在步骤526,针对物理地址确定P/E循环数值。可以通过使用物理地址作为关键字在(位于控制模块的存储器中的)存储器内数据结构中执行查找来确定P/E循环数值。步骤526的结果可以是与物理地址相关联的实际P/E循环数值(例如,与对应于该物理地址的物理位置位于其中的块相关联的P/E循环数值),或者可以是P/E循环数值范围(例如,5000-9999次P/E循环),其中与物理地址相关联的实际P/E循环数值处于该P/E循环数值范围内。在该技术的一个实施例中,在步骤526中获得的P/E循环数值对应于响应于图5A中所执行的方法而被更新的P/E循环数值。
在步骤528,使用以下关键字<保持时间,P/E循环数值,页面号码>从存储器内数据结构获得零个或多个读取阈值。在该技术的一个实施例中,步骤528的结果在存储模块控制器要使用(多个)默认读取阈值来从物理位置读取数据时可以是零个读取阈值。如以上所讨论的,与使用(多个)非默认读取阈值相比,在使用(多个)默认读取阈值导致更高比例的无错误数据从固态存储器模块被读取时,使用(多个)默认读取阈值。在该技术的一个实施例中,可以获得一个或多个非默认读取阈值(参见图4的412)。如以上所讨论的,与使用(多个)默认读取阈值相比,在使用(多个)非默认读取阈值导致更高比例的无错误数据(即,没有比特错误的数据)从固态存储器模块被读取时,使用(多个)非默认读取阈值。
在该技术的一个实施例中,确定是否使用非默认读取阈值可以基于(在步骤526所确定的)P/E循环数值或者(在步骤524所确定的)保持时间。例如,在P/E循环数值低于阈值P/E循环数值时,使用(多个)默认读取阈值并且因此不执行步骤528。进一步或替选地,当保持时间低于阈值保持时间时,使用(多个)默认读取阈值并且因此不执行步骤528。当(在步骤526所确定的)P/E循环数值高于阈值P/E循环数值和/或(在步骤524所确定的)保持时间高于阈值保持时间时,则执行步骤528中所描述的查找。
继续图5B中的讨论,在步骤530,使用在步骤528所获得的一个或多个读取阈值以及物理地址生成控制模块读取请求。如果没有在步骤528获得读取阈值,则控制模块请求可以(i)不包括读取阈值或者(ii)可以包括一个或多个默认读取阈值,即,当控制模块在步骤52 8没有获得读取阈值的反应而获取的默认读取阈值。控制模块读取请求的格式可以是被存储模块控制器所支持的任意格式。
在该技术的一个实施例中,如果有多个读取阈值与给定读取请求相关联,则一个或多个以上所提到的阈值可以对应于默认读取阈值,而其它阈值则可以对应于非默认阈值。例如,读取阈值可以是<默认A读取阈值,非默认B读取阈值,默认C读取阈值>。另外,在存在多个读取阈值的情况下,可选地,可以仅在步骤528中确定非默认阈值。例如,步骤528的结果可以是<非默认B读取阈值,默认C读取阈值>,这指示默认A读取阈值应当连同阈值B和C的非默认读取阈值一起使用。
图5C示出了依据该技术的一个或多个实施例的用于处理控制模块读取请求的方法。更具体地,图5C由存储模块控制器所执行。
在步骤540,从控制模块接收控制模块读取请求。在步骤542,由存储控制器模块基于控制模块读取请求中的一个或多个读取阈值和物理地址而生成读取命令。在该技术的一个实施例中,步骤542中所生成的任意给定读取命令都可以指定一个或多个读取阈值。如果控制模块并未包括任何读取阈值,则使用默认读取阈值来生成读取命令。如果控制模块读取请求包括(以上所描述的)位移数值形式的读取阈值,则生成读取命令可以包括获得默认读取阈值并且使用(多个)位移数值对一个或多个读取阈值进行修改。该读取命令可以为固态存储器模块所支持的任何格式。
在步骤544,该读取命令被发往固态存储器模块。在步骤546,由存储模块控制器响应于该读取命令而接收数据。在步骤548,所获取的数据被提供至控制模块。控制模块随后将数据提供至客户端。在该技术的一个实施例中,存储模块控制器可以包括将所获取的数据直接传输至客户端而并不需要所述数据被临时存储在控制模块上的存储器中的功能。
图6示出了依据该技术的一个或多个实施例的示例。以下示例并非意在对该技术的范围加以限制。
转向图6,考虑其中系统包括客户端(600)和存储器件的情形。所述存储器件包括控制模块(604)和存储模块(614)。控制模块包括处理器(606)和存储器(608),其中该存储器包括存储器内数据结构(610)(例如,参见图4)。
在该示例中,假设控制模块(CM)就在固态存储器模块A(620)中检测到P/E循环数值异常,并且因此执行图5A所示的方法。特别地,CM生成CM写入请求(700)并将其发往固态存储器模块A(620)中的物理地址的样本集合。存储模块(614)中的存储模块控制器(616)响应于接收到CM写入请求而将(多个)写入命令(702)发往固态存储器模块A(620)。
CM随后生成CM读取请求(704)并将其发往固态存储器模块A(620)中的物理地址的样本集合。存储模块(614)中的存储模块控制器(616)响应于接收到CM读取请求而将(多个)写入命令(706)发往固态存储器模块A(620)。
存储模块控制器(616)响应于该读取请求而从固态存储器模块A(620)获得存储在样本集合中的数据的副本以及固态存储器模块A的温度数值。存储模块控制器(616)使用ECC解码器(未示出)对所获得的数据执行纠错以获得FBC。该FBC连同温度数值一起随后作为读取响应(708)的一部分而被提供至CM(604)。该FBC随后与该温度数值相结合而被用来从存储器内数据结构(610)获得P/E循环数值。在该示例中,从固态存储器模块A所计算的P/E循环数值不同于针对固态存储器模块A而存储在存储器内数据结构中的P/E循环数值。因此,存储器内数据结构被更新从而利用针对与固态存储器模块A相关联的物理地址所计算的P/E循环数值替代当前存储的P/E循环数值。
存储器件随后可以使用针对固态存储器模块A(620)所计算的P/E循环数值依据图5B-5C对客户端读取请求(未示出)进行服务。
该技术的一个或多个实施例可以使用由存储器件中的一个或多个处理器所执行的指令来实施。另外,这样的指令可以对应于存储在一个或多个非瞬态计算机可读介质上的计算机可读指令。
虽然已经关于有限数量的实施例对该技术进行了描述,但是从本公开获益的本领域技术人员将会意识到,可以设计出并不背离如本文所公开的该技术的范围的其它实施例。因此,该技术的范围应当仅由所附权利要求来限定。

Claims (20)

1.一种用于管理持久性存储的方法,所述方法包括:
选择固态存储器模块中的物理地址的样本集合,其中所述物理地址的样本集合与所述固态存储器模块(SSMM)中的区域相关联;
对所述物理地址的样本集合执行垃圾收集操作;
在所述垃圾收集操作之后将写入请求发往所述物理地址的样本集合;
在发出所述写入请求之后,将读取的请求发往所述物理地址的样本集合以获得存储在所述物理地址的样本集合中的数据的副本;
使用从由纠错码(ECC)码字和所述写入请求中的已知数据组成的群组中所选择的至少一个来确定所存储数据的副本中的错误率;
至少使用所述错误率针对所述SSMM确定所计算的P/E循环数值;以及
利用所计算的P/E循环数值对控制模块中的存储器内数据结构进行更新。
2.根据权利要求1所述的方法,进一步包括:
使用所计算的P/E循环数值对至少一个读取请求进行服务。
3.根据权利要求1所述的方法,进一步包括:
在所述选择之前:
确定固态存储器中的所述区域并不与P/E循环数值相关联。
4.根据权利要求1所述的方法,进一步包括:
在所述选择之前:
检测与所述区域相关联的P/E循环数值中的P/E循环数值异常。
5.根据权利要求4所述的方法,其中检测所述P/E循环数值异常包括确定所述区域的P/E循环数值和所述SSMM中的第二区域的P/E循环数值之间的差值大于异常阈值。
6.根据权利要求1所述的方法,进一步包括:
在确定错误率的同时由所述SSMM对从由读取请求和写入请求所组成的群组中所选择的至少一个进行服务。
7.根据权利要求1所述的方法,其中所述错误率是失败比特计数(FBC)。
8.根据权利要求1所述的方法,其中所述SSMM是存储模块中的多个SSMM之一。
9.根据权利要求1所述的方法,其中所述SSMM包括NAND闪存。
10.根据权利要求1所述的方法,其中对所述物理地址的样本集合执行垃圾收集操作包括:
确定存储在所述物理地址的样本集合中的物理地址中的数据是活动的;
选择新的物理地址,其中所述新的物理地址与已知P/E循环数值相关联;以及
将所述数据的副本存储在所述新的物理地址。
11.根据权利要求10所述的方法,其中所述新的物理地址位于第二存储模块中的第二SSMM中,其中所述SSMM位于存储模块中。
12.根据权利要求10所述的方法,其中所计算的P/E循环数值是P/E循环数值范围。
13.一种系统,包括:
存储模块,所述存储模块包括固态存储器模块(SSMM);以及
操作连接至所述存储模块和客户端的控制模块,其中所述控制模块被配置为:
选择所述SSMM中的物理地址的样本集合,其中所述物理地址的样本集合与所述SSMM中的区域相关联;
将写入请求发往所述物理地址的样本集合;
在发出所述写入请求之后,将读取的请求发往所述物理地址的样本集合以获得存储在所述物理地址的样本集合中的数据的副本;
使用从由纠错码(ECC)码字和所述写入请求中的已知数据组成的群组中所选择的至少一个来确定所存储数据的副本中的失败比特计数(FBC);
至少使用错误率和所述SSMM的温度针对所述SSMM来确定所计算的P/E循环数值;以及
利用所计算的P/E循环数值对控制模块中的存储器内数据结构进行更新。
14.根据权利要求13所述的系统,其中所述控制模块被配置为:
在所述选择之前:
确定固态存储器中的所述区域并不与P/E循环数值相关联。
15.根据权利要求1所述的系统,其中所述控制模块被配置为:
在所述选择之前:
检测与所述区域相关联的P/E循环数值中的P/E循环数值异常,其中检测所述P/E循环数值异常包括确定所述区域的P/E循环数值和所述SSMM中的第二区域的P/E循环数值之间的差值大于异常阈值。
16.根据权利要求1所述的方法,其中所述FBC是从所述数据的副本所确定的所有FBC的平均FBC。
17.根据权利要求1所述的方法,其中所述SSMM包括NAND闪存。
18.一种包括计算机可读程序代码的非瞬态计算机可读介质,所述计算机可读程序代码在被计算机处理器执行时使得所述计算机处理器能够:
选择固态存储器模块中的物理地址的样本集合,其中所述物理地址的样本集合与所述固态存储器模块(SSMM)中的区域相关联;
对所述物理地址的样本集合执行垃圾收集操作;
在所述垃圾收集操作之后将写入请求发往所述物理地址的样本集合;
在发出所述写入请求之后,将读取的请求发往所述物理地址的样本集合以获得存储在所述物理地址的样本集合中的数据的副本;
使用从由纠错码(ECC)码字和所述写入请求中的已知数据组成的群组中所选择的至少一个确定所存储数据的副本中的错误率;
至少使用所述错误率针对所述SSMM确定所计算的P/E循环数值;以及
利用所计算的P/E循环数值对控制模块中的存储器内数据结构进行更新。
19.根据权利要求18所述的非瞬态计算机可读介质,进一步包括计算机可读程序代码,所述计算机可读程序代码在被计算机处理器执行时使得所述计算机处理器能够:
使用所计算的P/E循环数值对至少一个读取请求进行服务。
20.根据权利要求18所述的非瞬态计算机可读介质,进一步包括计算机可读程序代码,所述计算机可读程序代码在被计算机处理器执行时使得所述计算机处理器能够:
在确定错误率的同时由所述SSMM对从由读取请求和写入请求所组成的群组中所选择的至少一个进行服务。
CN201810002159.5A 2016-12-30 2018-01-02 用于在线编程/擦除计数估计的方法和系统 Active CN108268339B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/395,248 US10338983B2 (en) 2016-12-30 2016-12-30 Method and system for online program/erase count estimation
US15/395,248 2016-12-30

Publications (2)

Publication Number Publication Date
CN108268339A true CN108268339A (zh) 2018-07-10
CN108268339B CN108268339B (zh) 2023-07-18

Family

ID=62708401

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810002159.5A Active CN108268339B (zh) 2016-12-30 2018-01-02 用于在线编程/擦除计数估计的方法和系统

Country Status (2)

Country Link
US (1) US10338983B2 (zh)
CN (1) CN108268339B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506516A (zh) * 2019-01-31 2020-08-07 爱思开海力士有限公司 数据存储装置及数据存储装置的操作方法
CN111863109A (zh) * 2020-07-08 2020-10-30 上海威固信息技术股份有限公司 一种三维闪存层间错误率模型及评估方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125041A (zh) * 2018-10-31 2020-05-08 伊姆西Ip控股有限责任公司 数据读取方法、电子设备和计算机程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102099793A (zh) * 2008-06-24 2011-06-15 桑迪士克以色列有限公司 根据固态存储器的擦除计数进行误差校正的方法和装置
CN102150140A (zh) * 2008-12-27 2011-08-10 株式会社东芝 存储器系统、控制存储器系统的方法和信息处理装置
US20140181595A1 (en) * 2012-12-20 2014-06-26 Virtium Technology, Inc. Estimating lifespan of solid-state drive using real usage model
CN103902234A (zh) * 2012-12-26 2014-07-02 索尼公司 控制装置、控制方法和程序
US20160093397A1 (en) * 2014-09-30 2016-03-31 Emc Corporation Method and system for improving flash storage utilization using read-threshold tables

Family Cites Families (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
JP2001134486A (ja) 1999-11-04 2001-05-18 Fujitsu Ltd マイクロプロセッサおよび記憶装置
US7559004B1 (en) 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7426625B2 (en) 2004-03-31 2008-09-16 International Business Machines Corporation Data processing system and computer program product for support of system memory addresses with holes
US7231497B2 (en) 2004-06-15 2007-06-12 Intel Corporation Merging write-back and write-through cache policies
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US7523013B2 (en) 2006-05-15 2009-04-21 Sandisk Corporation Methods of end of life calculation for non-volatile memories
US7778077B2 (en) 2006-05-15 2010-08-17 Sandisk Corporation Non-volatile memory system with end of life calculation
US20080082725A1 (en) 2006-09-28 2008-04-03 Reuven Elhamias End of Life Recovery and Resizing of Memory Cards
US7596656B2 (en) 2006-09-28 2009-09-29 Sandisk Corporation Memory cards with end of life recovery and resizing
JP5224706B2 (ja) 2007-03-23 2013-07-03 キヤノン株式会社 記憶装置及び記憶装置の制御方法
US8429492B2 (en) 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US9123422B2 (en) 2012-07-02 2015-09-01 Super Talent Technology, Corp. Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8151137B2 (en) 2009-05-28 2012-04-03 Lsi Corporation Systems and methods for governing the life cycle of a solid state drive
US8176367B2 (en) 2009-05-28 2012-05-08 Agere Systems Inc. Systems and methods for managing end of life in a solid state drive
US8321727B2 (en) 2009-06-29 2012-11-27 Sandisk Technologies Inc. System and method responsive to a rate of change of a performance parameter of a memory
US8189379B2 (en) 2009-08-12 2012-05-29 Texas Memory Systems, Inc. Reduction of read disturb errors in NAND FLASH memory
US8489966B2 (en) 2010-01-08 2013-07-16 Ocz Technology Group Inc. Solid-state mass storage device and method for failure anticipation
US8305812B2 (en) 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
JP5349256B2 (ja) 2009-11-06 2013-11-20 株式会社東芝 メモリシステム
WO2011092641A1 (en) 2010-01-28 2011-08-04 International Business Machines Corporation Method, device and computer program product for decoding a codeword
KR101648531B1 (ko) 2010-02-12 2016-08-17 삼성전자주식회사 불휘발성 메모리 시스템과 이의 동작 방법
US8819503B2 (en) 2010-07-02 2014-08-26 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
US8737136B2 (en) 2010-07-09 2014-05-27 Stec, Inc. Apparatus and method for determining a read level of a memory cell based on cycle information
US20120110239A1 (en) 2010-10-27 2012-05-03 Seagate Technology Llc Causing Related Data to be Written Together to Non-Volatile, Solid State Memory
JP5605238B2 (ja) 2011-01-25 2014-10-15 ソニー株式会社 メモリシステムおよびその動作方法
JP2012203443A (ja) 2011-03-23 2012-10-22 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
JP2012203957A (ja) 2011-03-25 2012-10-22 Toshiba Corp メモリシステム
US9047955B2 (en) 2011-03-30 2015-06-02 Stec, Inc. Adjusting operating parameters for memory cells based on wordline address and cycle information
US20130019057A1 (en) 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
US8484519B2 (en) 2011-08-19 2013-07-09 Stec, Inc. Optimal programming levels for LDPC
US8694724B1 (en) 2011-09-06 2014-04-08 Emc Corporation Managing data storage by provisioning cache as a virtual device
US8693257B2 (en) 2011-10-18 2014-04-08 Seagate Technology Llc Determining optimal read reference and programming voltages for non-volatile memory using mutual information
JP5289608B2 (ja) 2011-12-13 2013-09-11 ファナック株式会社 ロボット減速機寿命推定シミュレーション装置
US20130185487A1 (en) 2012-01-18 2013-07-18 Samsung Electronics Co., Ltd Memory system and mobile device including host and flash memory-based storage device
US8832506B2 (en) 2012-01-20 2014-09-09 International Business Machines Corporation Bit error rate based wear leveling for solid state drive memory
US9195586B2 (en) 2012-02-23 2015-11-24 Hgst Technologies Santa Ana, Inc. Determining bias information for offsetting operating variations in memory cells based on wordline address
JP2013176784A (ja) 2012-02-28 2013-09-09 Daihatsu Motor Co Ltd シリンダヘッドの鋳造方法、及びシリンダヘッドの鋳造に用いられるポート中子の製造方法
US9645177B2 (en) 2012-05-04 2017-05-09 Seagate Technology Llc Retention-drift-history-based non-volatile memory read threshold optimization
JP5983019B2 (ja) 2012-05-17 2016-08-31 ソニー株式会社 制御装置、記憶装置、記憶制御方法
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
JP2016506585A (ja) 2013-01-08 2016-03-03 ヴァイオリン メモリー インコーポレイテッド データストレージのための方法及びシステム
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US8898549B2 (en) 2013-02-12 2014-11-25 Seagate Technology Llc Statistical adaptive error correction for a flash memory
US8934284B2 (en) 2013-02-26 2015-01-13 Seagate Technology Llc Methods and apparatuses using a transfer function to predict resistance shifts and/or noise of resistance-based memory
US8942038B2 (en) 2013-04-02 2015-01-27 SanDisk Technologies, Inc. High endurance nonvolatile memory
US9734919B2 (en) 2013-05-23 2017-08-15 Seagate Technology Llc Recovery of interfacial defects in memory cells
US20140359202A1 (en) 2013-05-31 2014-12-04 Western Digital Technologies, Inc. Reading voltage calculation in solid-state storage devices
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
JP2015056198A (ja) 2013-09-13 2015-03-23 株式会社東芝 メモリチップ、記憶装置および読み出し方法
US9213599B2 (en) 2013-09-18 2015-12-15 Seagate Technology Llc Method of erase state handling in flash channel tracking
US9785499B2 (en) 2014-02-12 2017-10-10 Seagate Technology Llc Hot-read data aggregation and code selection
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US9940193B2 (en) * 2014-06-06 2018-04-10 Micron Technology, Inc. Chunk definition for partial-page read
US9632712B2 (en) 2014-07-02 2017-04-25 Sandisk Technologies Llc System and method of updating metablocks associated with multiple memory dies
US9798334B1 (en) 2014-09-30 2017-10-24 EMC IP Holding Company LLC Method and system for improving flash storage performance for various types of workloads by modulating operating temperature
US9690655B2 (en) 2014-09-30 2017-06-27 EMC IP Holding Company LLC Method and system for improving flash storage utilization by predicting bad m-pages
US9558847B2 (en) * 2014-11-21 2017-01-31 Sandisk Technologies Llc Defect logging in nonvolatile memory
US9740425B2 (en) * 2014-12-16 2017-08-22 Sandisk Technologies Llc Tag-based wear leveling for a data storage device
US9864545B2 (en) 2015-04-14 2018-01-09 Sandisk Technologies Llc Open erase block read automation
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
US9496043B1 (en) 2015-06-24 2016-11-15 International Business Machines Corporation Dynamically optimizing flash data retention or endurance based on data write frequency
US10095423B2 (en) * 2015-09-30 2018-10-09 Toshiba Memory Corporation Storage system that tracks mapping to a memory module to be detached therefrom
US9785357B2 (en) 2015-10-20 2017-10-10 Sandisk Technologies Llc Systems and methods for sampling data at a non-volatile memory system
US9898202B2 (en) 2015-11-30 2018-02-20 Samsung Electronics Co., Ltd. Enhanced multi-streaming though statistical analysis
US9564233B1 (en) 2016-03-04 2017-02-07 Sandisk Technologies Llc Open block source bias adjustment for an incompletely programmed block of a nonvolatile storage device
US9830107B2 (en) 2016-04-29 2017-11-28 Netapp, Inc. Drive wear-out prediction based on workload and risk tolerance
US10983704B1 (en) 2016-05-20 2021-04-20 Emc Corporation Method and system for adaptive wear leveling in solid state memory
US9842060B1 (en) 2016-07-13 2017-12-12 Seagate Technology Llc Cache over-provisioning in a data storage device
US10534716B2 (en) 2016-07-13 2020-01-14 Seagate Technology Llc Limiting access operations in a data storage device
US10474583B2 (en) 2016-07-28 2019-11-12 Dell Products L.P. System and method for controlling cache flush size
US10509603B2 (en) 2016-07-29 2019-12-17 Western Digital Technologies, Inc. Hierarchical variable code rate error correction coding
US10268844B2 (en) 2016-08-08 2019-04-23 Data I/O Corporation Embedding foundational root of trust using security algorithms
US10467134B2 (en) 2016-08-25 2019-11-05 Sandisk Technologies Llc Dynamic anneal characteristics for annealing non-volatile memory
US9905289B1 (en) 2017-04-28 2018-02-27 EMC IP Holding Company LLC Method and system for systematic read retry flow in solid state memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102099793A (zh) * 2008-06-24 2011-06-15 桑迪士克以色列有限公司 根据固态存储器的擦除计数进行误差校正的方法和装置
CN102150140A (zh) * 2008-12-27 2011-08-10 株式会社东芝 存储器系统、控制存储器系统的方法和信息处理装置
US20140181595A1 (en) * 2012-12-20 2014-06-26 Virtium Technology, Inc. Estimating lifespan of solid-state drive using real usage model
CN103902234A (zh) * 2012-12-26 2014-07-02 索尼公司 控制装置、控制方法和程序
US20160093397A1 (en) * 2014-09-30 2016-03-31 Emc Corporation Method and system for improving flash storage utilization using read-threshold tables

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506516A (zh) * 2019-01-31 2020-08-07 爱思开海力士有限公司 数据存储装置及数据存储装置的操作方法
CN111506516B (zh) * 2019-01-31 2023-03-07 爱思开海力士有限公司 数据存储装置及数据存储装置的操作方法
CN111863109A (zh) * 2020-07-08 2020-10-30 上海威固信息技术股份有限公司 一种三维闪存层间错误率模型及评估方法

Also Published As

Publication number Publication date
US10338983B2 (en) 2019-07-02
US20180189123A1 (en) 2018-07-05
CN108268339B (zh) 2023-07-18

Similar Documents

Publication Publication Date Title
US10339001B2 (en) Method and system for improving flash storage utilization by predicting bad M-pages
US9905289B1 (en) Method and system for systematic read retry flow in solid state memory
US10699791B2 (en) Adaptive read voltage threshold calibration in non-volatile memory
US10055294B2 (en) Selective copyback for on die buffered non-volatile memory
US9552290B2 (en) Partial R-block recycling
EP3002671B1 (en) Method and system for improving flash storage utilization using read-threshold tables
US8910017B2 (en) Flash memory with random partition
US11848055B2 (en) Asynchronous access multi-plane solid-state memory
US10878111B2 (en) Peer storage devices supporting protection information
CN107257958B (zh) 用于定制应用的动态近似存储
JP2015056184A (ja) メモリにおけるデータの管理のための方法および装置
JP7051887B2 (ja) 非2値コンテキスト・ミキシング方法、非2値コンテキスト・ミキシング圧縮器および圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラム
US20200257621A1 (en) Garbage collection in non-volatile memory that fully programs dependent layers in a target block
US10861556B2 (en) Method and system for adapting solid state memory write parameters to satisfy performance goals based on degree of read errors
US11372545B2 (en) Managing bin placement for block families of a memory device based on trigger metric values
US11436083B2 (en) Data address management in non-volatile memory
CN108268339A (zh) 用于在线编程/擦除计数估计的方法和系统
KR20220077041A (ko) 메모리 시스템 내 저장된 데이터를 유지하는 장치 및 방법
US10290331B1 (en) Method and system for modulating read operations to support error correction in solid state memory
US11016693B2 (en) Block health estimation for wear leveling in non-volatile memories
US10095417B1 (en) Method and system for improving flash storage read performance in partially programmed blocks
US11069418B1 (en) Method and system for offline program/erase count estimation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant