掌桥专利:专业的专利平台
掌桥专利
首页

将数据重定位到低时延存储器

文献发布时间:2023-06-19 11:55:48


将数据重定位到低时延存储器

技术领域

本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及将数据重定位到低时延存储器。

背景技术

存储器子系统可以是存储系统,如固态驱动器(SSD)或硬盘驱动器(HDD)。存储器子系统可以是存储器模块,例如双列直插式存储器模块(dual in-line memory module;DIMM)、小型DIMM(small outline DIMM;SO-DIMM)或非易失性双列直插式存储器模块(non-volatile dual in-line memory module;NVDIMM)。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可以例如是非易失性存储器组件和易失性存储器组件。一般来说,主机系统可以利用存储器子系统以在存储器组件处存储数据且从存储器组件检索数据。

附图说明

根据下文给出的详细描述和本公开的各种实施方案的附图,将更充分地理解本公开。

图1说明根据本公开的一些实施例的包含存储器子系统的实例计算环境。

图2是根据本公开的一些实施例的基于与数据相关联的读取计数将频繁读取的数据重定位到存储器组件的低时延部分的实例方法的流程图。

图3是根据本公开的一些实施例的将存储于与具有超过错误率阈值的错误率的字线接近的字线处的数据重定位的实例方法的流程图。

图4A是根据本公开的实施例的确定写入到存储器组件的数据量是否满足或超过数据阈值的存储器子系统的图示。

图4B是根据本公开的实施例的识别用于重定位到存储器组件的低时延部分的数据块的存储器子系统的图示。

图5A是根据本公开的一些实施例的基于对存储器组件执行的编程操作的数目确定重定位后续数据的存储器子系统的图示。

图5B是根据本公开的一些实施例基于对存储器组件执行的编程操作的数目确定重定位后续数据的存储器子系统的图示。

图6是根据本公开的一实施例的基于超过阈值的错误率识别用于重定位的字线的存储器子系统的图示。

图7是说明根据本公开的实施例的减小被指派到存储器组件的低时延部分的数据块的数目的存储器子系统的曲线图。

图8是本公开的实施方案可在其中操作的实例计算机系统的框图。

具体实施方式

本公开的方面是针对将数据重定位到低时延存储器。存储器子系统在下文还称为“存储器装置”。存储器子系统的实例是通过外围互连件(例如,输入/输出总线、存储区域网络)耦合到中央处理单元(CPU)的存储装置。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器和硬盘驱动器(HDD)。存储器子系统的另一实例是经由存储器总线联接到CPU的存储器模块。.存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插式存储器模块(NVDIMM)等。在一些实施例中,存储器子系统可以是混合式存储器/存储子系统。通常,主机系统可以利用包含一或多个存储器组件的存储器子系统。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。

常规存储器子系统的存储器组件可包含存储器单元,其可存储对应于从主机系统接收的数据的二进制数据的一或多个位。举例来说,存储器组件可包含各自存储一个数据位的单电平单元(SLC)、各自存储两个数据位的多电平单元(MLC)、各自存储三个数据位的三电平单元(TLC)和/或各自存储四个数据位的四电平单元(QLC)。存储器组件的一或多个存储器单元可分组在一起以形成数据块。

每一类型的存储器单元(例如,SLC、MLC、TLC和QLC)可展现不同的特性和优点。举例来说,与其它类型的存储器单元相比,SLC可具有较低读取时延(例如,存储于SLC处的数据被读取所花费的时间)、较快编程时间(例如,将从主机系统接收的数据编程到用于存储的单元所花费的时间),以及存储于SLC处的数据的较大可靠性。然而,由于每一SLC仅存储单个数据位,因此当与具有相同总数目的存储器单元但包含每存储器单元存储多个数据位的至少一些MLC、TLC和/或QLC的存储器组件相比时,包含SLC的存储器组件将具有较低存储容量。

在另一实例中,QLC每存储器单元存储四个数据位,但与其它类型的存储器单元相比可具有较高读取时延、较慢编程时间和存储于QLC处的数据的较低可靠性。包含QLC的存储器组件与仅包含SLC、MLC和TLC的存储器组件相比将具有较高存储容量,但对包含QLC的存储器组件读取和写入数据的时间量将大于包含其它类型的存储器单元的存储器组件。举例来说,QLC的平均读取时间可为近似200毫秒(ms),而SLC的平均读取时间可为近似50ms。此外,存储于包含QLC的存储器组件处的数据的可靠性可低于包含其它类型的存储器单元的存储器组件。

因此,为了最小化将从主机系统接收的数据编程到存储器组件的时间量,常规存储器子系统可包含存储器组件的包含QLC的第一部分和存储器组件的包含SLC的第二部分。当从主机系统接收数据用于由存储器子系统存储时,存储器子系统可初始将数据编程到存储器组件的包含具有较快编程速度的SLC的第二部分。一旦常规存储器子系统空闲(例如,未从主机系统接收指令),那么存储器子系统将存储于包含SLC的第二部分处的数据重定位到包含QLC的第一部分,所述QLC具有比SLC高的存储容量。当从主机系统接收新数据用于由存储器子系统存储时,常规存储器子系统可以执行此过程,也被称为SLC高速缓冲存储。所述过程提供SLC的较快编程速度的益处,同时也利用QLC的较高存储容量。

然而,当主机系统请求存储于常规存储器子系统处的数据时已重定位的数据需要从QLC读取。如先前论述,QLC具有比其它类型的存储器单元高的读取时延。从存储器组件的QLC读取数据导致与数据存储于存储器组件的SLC处的情况相比数据花费更长时间来提供到主机系统,从而降低存储器子系统的性能。

本公开的方面通过将存储于存储器组件处的频繁读取的数据重定位到存储器组件的低时延部分来解决以上和其它缺陷。在一个实施例中,存储器子系统跟踪和维持在存储器组件的第一部分(下文也被称作“高时延部分”)(例如,存储器组件的使用MLC、TLC和/或QLC的部分)中存储用户数据的数据块的读取计数。在实施例中,存储器子系统可利用读取计数来识别比存储器组件的第一部分中的其它数据块更频繁读取的一或多个数据块。在一些实施例中,存储器子系统可使用存储器组件的字线的错误率来识别比存储器组件的其它字线更频繁读取的一或多个接近字线。在识别所述一或多个数据块之后,存储器子系统可即刻确定在存储器组件的包含SLC的第二部分(下文也被称作“低时延部分”)中是否存在未使用的存储的量来存储在所述一或多个识别数据块处存储的数据。如果存储器子系统确定存在足够存储空间,那么存储器子系统将存储于所述一或多个识别数据块处的数据重定位到存储器组件的包含SLC的低时延部分中的一或多个数据块。

本公开的优点包含但不限于重定位到存储器组件的低时延部分的频繁读取的数据的读取时延减少。减少的读取时延导致主机系统在较短时间量中接收频繁读取的数据以及存储器子系统的性能的改进。此外,如先前论述,存储器组件的例如SLC等低时延部分中的存储器单元与例如QLC等具有较高存储密度的存储器单元相比具有存储数据的较大可靠性。通过在具有存储数据的较大可靠性的存储器单元中存储频繁读取的数据,由存储器子系统执行的错误校正操作的数目减少,从而允许存储器子系统执行其它操作(例如,读取和/或写入操作)且改善存储器子系统的性能。

出于说明性目的,使用存储器组件的具有QLC的第一部分和存储器组件的具有SLC的第二部分描述本公开的方面。但是,在一些实施例中,存储器组件可具有包含任何类型存储器单元的任何数目的部分。

图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含介质,如存储器组件112A到112N。存储器组件112A到112N可以是易失性存储器组件、非易失性存储器组件或这类组件的组合。在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合式存储器/存储装置子系统。一般来说,计算环境100可包含使用存储器子系统110的主机系统120。举例来说,主机系统120可将数据写入到存储器子系统110以及从存储器子系统110读取数据。

主机系统120可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的此类计算装置。主机系统120可包含或耦合到存储器子系统110使得主机系统120可从存储器子系统110读取数据或将数据写入到存储器子系统110。主机系统120可经由物理主机接口耦合到存储器子系统110。如本文所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等的连接。物理主机接口的实例包含但不限于串行高级技术附件(serial advanced technology attachment;SATA)接口、外围组件互连高速(peripheral component interconnect express;PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(Serial Attached SCSI;SAS)等。物理主机接口可以用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口来存取存储器组件112A到112N。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。

存储器组件112A到112N可以包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(negative-and;NAND)类型快闪存储器。存储器组件112A到112N中的每一个可包含存储器单元的一或多个阵列,所述存储器单元例如单电平单元(SLC)或多电平单元(MLC)(例如,三电平单元(TLC)或四电平单元(QLC))。在一些实施例中,特定存储器组件可以包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一个可存储由主机系统120使用的一或多个数据位(例如,数据块)。虽然描述了例如NAND类型闪存存储器等非易失性存储器组件,但存储器组件112A到112N可基于任何其它类型的存储器,例如易失性存储器。在一些实施例中,存储器组件112A到112N可以是(但不限于)随机存取存储器(random access memory;RAM)、只读存储器(read-onlymemory;ROM)、动态随机存取存储器(dynamic random access memory;DRAM)、同步动态随机存取存储器(synchronous dynamic random access memory;SDRAM)、相变存储器(phasechange memory;PCM)、磁随机存取存储器(magneto random access memory;MRAM)、或非(negative-or;NOR)快闪存储器、电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory;EEPROM)以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来进行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,存储器组件112A到112N的存储器单元可以分组为存储器页或数据块,所述存储器页或数据块可以指用于存储数据的存储器组件的单元。

存储器系统控制器115(下文称为“控制器”)可与存储器组件112A到112N通信以执行操作,例如在存储器组件112A到112N处读取数据、写入数据或擦除数据,以及其它此类操作。控制器115可包含硬件,如一或多个集成电路和/或离散组件、缓冲存储器或其组合。控制器115可为微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或其它合适的处理器。控制器115可包含配置成执行存储在本地存储器119中的指令的处理器(处理装置)117。在所示出的实例中,控制器115的本地存储器119包含被配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流和例程。在一些实施例中,本地存储器119可包含存储器寄存器,其存储存储器指针、所提取数据等。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然在图1中的实例存储器子系统110已示出为包含控制器115,但在本公开的另一实施例中,存储器子系统110可不包含控制器115,且可改为依靠外部控制(例如,由外部主机或者由与存储器子系统分开的处理器或控制器提供)。

通常,控制器115可以从主机系统120接收命令或操作,并且可以将命令或操作转换成指令或适当的命令,以实现对存储器组件112A到112N的期望的存取。控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、差错检测和差错校正码(ECC)操作、加密操作、高速缓存操作以及在与存储器组件112A到112N相关联的逻辑块地址与物理块地址之间的地址转译。控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路可将从主机系统接收到的命令转换成命令指令以存取存储器组件112A到112N,以及将与存储器组件112A到112N相关联的响应转换成用于主机系统120的信息。

存储器子系统110还可包含未说明的额外电路或组件。在一些实施例中,存储器子系统110可包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路(例如,行解码器和列解码器),所述地址电路可从控制器115接收地址且对地址进行解码以存取存储器组件112A到112N。

存储器子系统110包含可用以将频繁读取的数据重定位到存储器组件的低时延部分的数据重定位组件113。在一些实施例中,控制器115包含数据重定位组件113的至少一部分。举例来说,控制器115可包含处理器117(处理装置),其经配置以执行存储在本地存储器119中的指令以用于执行本文中所描述的操作。在一些实施例中,数据重定位组件113是主机系统120、应用程序或操作系统的部分。

数据重定位组件113可基于与存储器组件的频繁读取的第一部分中的第一数据块相关联的读取计数或存储器组件的字线的错误率识别所述第一数据块。在识别频繁读取的数据块之后,数据重定位组件113可即刻确定存储器组件的第二部分(例如,使用SLC的部分)是否具有足够空间来存储存储于第一数据块处的数据。如果第二部分中存在足够空间,那么数据重定位组件113可进一步将存储于第一数据块处的数据重定位到存储器组件的第二部分中的第二数据块。下文描述关于数据重定位组件113的操作的其它细节。

图2是根据本公开的一些实施例的基于与数据相关联的读取计数将频繁读取的数据重定位到存储器组件的低时延部分的实例方法200的流程图。方法200可由可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑执行。在一些实施例中,方法200由图1的数据重定位组件113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。

在框210处,处理逻辑识别存储器组件的第一部分(例如,高时延部分)中的第一数据块。基于与第一数据块相关联的读取计数满足或超过读取计数阈值来识别第一数据块。在一个实施例中,控制器115维持用于存储器组件112A-112N上的每一数据块的计数器,其在每次对对应数据块执行读取操作时递增。所述计数器可周期性地复位(例如,当存储于数据块处的数据重定位时)。因此,读取计数可为用于第一数据块的计数器的当前值且可表示对第一数据块执行的读取操作的数目。在实施例中,读取计数阈值可基于与第一数据块相关联的读取计数相对于用于存储器组件的其它数据块的代表性读取计数的偏离(例如,差)。代表性读取计数可对应于用于其它数据块的平均读取计数、用于其它数据块的最高读取计数、用于其它数据块的读取计数的中值,或用于存储器组件的其它数据块的读取计数的任何其它统计表示。读取计数阈值可为高于用于存储器组件的数据块的平均读取计数的对第一数据块执行的读取操作的数目。举例来说,如果读取阈值是高于平均读取计数500次读取操作,存储器组件的数据块的平均读取计数是1,000次读取操作且第一数据块的读取计数是1,500次读取操作,那么与第一数据块相关联的读取计数满足读取计数阈值。

在一实施例中,读取计数阈值可对应于对第一数据块执行的读取操作的数目。举例来说,如果读取计数阈值是对第一数据块执行的1,000次读取操作且已对第一数据块执行1,000次读取操作,那么与第一数据块相关联的读取计数满足读取阈值。在一些实施例中,读取计数阈值可对应于第一数据块的读取计数与存储器组件的数据块的下一最高读取计数之间的差。举例来说,如果读取计数阈值对应于500次读取操作的差且已对第一数据块执行1,000次读取操作且数据块的下一最高读取计数是500次读取操作,那么与第一数据块相关联的读取计数满足读取计数阈值。

在实施例中,可响应于触发条件而识别第一数据块。在一些实施例中,触发条件可为写入到存储器组件的数据量超过数据阈值。举例来说,如果1千兆字节(GB)数据已写入到存储器组件且数据阈值是1GB,那么写入到存储器组件的数据量满足或超过数据阈值。在一实施例中,触发条件可为自从存储器组件上的数据先前重定位或自从数据重定位组件113检查存储器组件上的数据块的读取计数值起经过的时间量,如上文在框210处所描述。举例来说,如果自从其它数据到低时延部分的先前重定位起已经过48小时,那么可识别第一数据块。

在实施例中,可调整与触发条件相关联的阈值以使得数据更频繁地从第一部分重定位到第二部分。举例来说,可将数据阈值从1GB数据写入到存储器组件调整为500MB,从而致使数据更频繁地从第一部分重定位到第二部分。

在一实施例中,可基于正执行的编程操作的数目高于或低于预期值而调整与触发条件相关联的阈值。随着数据经编程(例如,写入)到存储器单元,存储器单元的条件恶化。因此,存储器组件的每一存储器单元在存储器单元不再可靠地存储数据之前可对存储器单元执行有限数目的编程操作。由于将数据从第一部分重定位到第二部分涉及将数据写入到存储器组件的第二部分处的存储器单元的过程,因此如果存储器组件具有对存储器组件执行的高数目的编程操作,那么可调整阈值,因此数据较不频繁地重定位。较不频繁地重定位数据可减少对存储器组件执行的编程操作的数目且防止存储器组件的过早故障。

在框220处,处理逻辑确定存储器组件的第二部分是否具有未使用的存储量来存储存储于第一数据块处的数据。在实施例中,如果存在足够未使用的存储来存储存储于第一数据块处的数据,那么处理逻辑可确定存储器组件的第二部分具有未使用的存储量来存储存储于第一数据块处的数据。举例来说,如果存储于第一数据块处的数据需要5MB的存储空间且第二部分中的未使用的存储空间量是5MB,那么第二部分具有存储量来存储存储于第一数据块处的数据。在一些实施例中,如果未使用的存储量(例如,当前未存储数据的存储器)满足或超过存储阈值,那么处理逻辑可确定存储器块的第二部分具有存储量来存储数据。

存储器组件的第二部分可与比第一部分低的读取时延相关联。举例来说,第一部分可包含QLC且第二部分可包含SLC,SLC具有比第一部分中的QLC低的读取时延。在一些实施例中,如果不存在足够空间来存储存储于第一数据块处的数据,那么处理逻辑可确定不重定位存储于第一部分中的第一数据块处的数据。

在实施例中,存储器组件的第一部分和第二部分中的数据块的数目可为数据块的静态数目。举例来说,如果存储器组件包含1,000个数据块,那么950个数据块可被指派到存储器组件的第一部分且经编程作为QLC,且50个数据块可被指派到存储器组件的第二部分且经编程作为SLC。在此实例中,如果存储器组件的第二部分中的未使用的存储量满足或超过存储阈值,那么处理逻辑可确定是否存在未使用的存储量来存储存储于第一数据块处的数据。举例来说,如果存储阈值是100MB的未使用存储且第二部分中的200MB的存储未使用,那么处理逻辑确定第二部分中存在未使用的存储量来存储存储于第一数据块处的数据。

在一些实施例中,可动态地调整第一部分和第二部分中的数据块的数目。在一实施例中,如果第二部分中不存在足够空间来存储存储于第一数据块处的数据,那么处理逻辑可确定存储器组件的第一部分中的未使用空间量(例如,当前未存储数据的数据块)是否满足或超过利用率阈值。如果未使用空间量满足或超过利用率阈值,那么处理逻辑可将一或多个数据块从第一部分指派到第二部分。举例来说,如果利用率阈值是400个未使用的数据块且第一部分具有450个未使用的数据块,那么处理逻辑可将一或多个数据块从第一部分指派到第二部分。在一实施例中,处理逻辑可指派需要存储重定位数据的数据块的数目。在实施例中,处理逻辑可指派比需要存储重定位数据的数据块的数目大的块数目。在实施例中,在将所述一或多个数据块指派到第二部分后,所述一或多个数据块的存储器单元可经编程作为SLC而不是作为QLC。

在框230处,响应于确定存储器组件的第二部分具有足够空间,处理逻辑将存储于存储器组件的第一部分中的第一数据块处的数据重定位到存储器组件的第二部分中的第二数据块。重定位存储于第一数据块处的数据的过程可包含读取存储于第一数据块处的数据且将数据编程到存储器组件的第二部分中的第二数据块。在一个实施例中,处理逻辑更新逻辑到物理表映射以反映存储器组件的第二部分中的第二数据块中的数据的新位置。使第一数据块处的数据失效,使得当执行垃圾收集操作时,所述数据可经擦除,进而允许第一数据块以新数据编程。

图3是根据本公开的一些实施例的将存储于与具有超过错误率阈值的错误率的字线接近的字线处的数据重定位的实例方法300的流程图。方法300可由可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑执行。在一些实施例中,方法300由图1的数据重定位组件113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。

在框310处,处理逻辑识别存储器组件的第一部分处的字线。在实施例中,所识别字线可包含存储器组件的第一部分中作为QLC的存储器单元。在框320处,处理逻辑确定字线中的每一个的对应错误率。在实施例中,错误率可为对应于存储于字线处的数据的每单位时间位错误的数目的原始位错误率(RBER)。在将数据写入到存储器组件之前,数据通常由系统错误校正单元(ECU)编码。在从存储器组件读取数据之后,系统ECU对数据进行解码。在实施例中,处理逻辑可将输入到ECU解码器的原始数据与由ECU输出的经校正数据进行比较以测量位双态切换的数目(即,已从一个逻辑值翻转到另一逻辑值的位数目)。原始数据与ECU解码数据之间的位翻转的此数目表示错误率。

在框330处,处理逻辑确定第一字线的第一错误率和第二字线的第二错误率超过错误率阈值。在实施例中,错误率阈值可基于与第一字线和第二字线相关联的错误率相对于存储器组件的其它字线的代表性错误率的偏离。错误率阈值可为第一和第二字线的错误率与存储器组件的字线的平均错误率之间的差。在实施例中,错误率阈值可为存储器组件的字线的平均错误率的倍数。举例来说,错误率阈值可对应于为存储器组件的字线的平均错误率的10倍的错误率。下文在图6论述关于确定第一错误率和第二错误率超过错误率阈值的进一步细节。

在一实施例中,错误率阈值可对应于第一和第二字线的错误率。举例来说,如果第一和第二字线的错误率是1x 10

在框340处,处理逻辑识别接近(例如,邻近)于第一字线和第二字线的第三字线。举例来说,第三字线610C可位于第一字线610B与第二字线610D之间,如图6所示。当从存储器组件的字线上的存储器单元读取数据时,接近字线上的存储器单元可经历读取干扰应力。读取干扰应力可致使接近字线上的存储器单元变为重新编程,从而导致存储于接近字线处的数据的较高错误率。因此,具有升高错误率的字线可充当存储器组件的字线已被最频繁地读取的指示符。下文将在图6论述关于识别接近字线的额外细节。

在框350处,处理逻辑将存储于第三字线处的数据重定位到存储器组件的第二部分。存储器组件的第二部分可具有比存储器组件的第一部分低的读取时延。

参考图3,通过利用字线的错误率来识别频繁读取的字线,存储器子系统不再跟踪存储器组件的数据块的读取计数,如先前在图2中描述。由于不再跟踪对存储器组件的数据块执行的读取计数,因此专用于跟踪读取计数的存储器子系统的计算资源量可减小或消除。这导致存储器子系统的性能的增加。

图4A是根据本公开的实施例的确定写入到存储器组件的数据量是否满足第一阈值条件(例如,满足或超过数据阈值)的存储器子系统400的图示。存储器子系统400的存储器组件包含各自存储一或多个数据位的数据块405A、405B和405C。存储器子系统可跟踪数据块405A、405B和405C中的每一个的读取计数(例如,READ OPS)。读取计数可对应于对数据块405A、405B和405C执行的读取操作的数目。存储器子系统400还包含对应于写入到存储器组件的数据量410的数据量410和对应于如先前在图2论述的数据阈值的阈值415。

如先前描述,在实施例中,存储于数据块处的数据可响应于触发条件而重定位到低时延部分,所述触发条件例如写入到存储器组件的数据量满足第一阈值条件(例如,超过数据阈值)。参看图4A,数据块405A具有100次读取操作的读取计数,数据块405B具有75次读取操作的读取计数且数据块405C具有125次读取操作的读取计数。写入到存储器组件的数据量的数据阈值415是1GB且写入到存储器组件的数据量410是750MB。由于写入到存储器组件的数据量410不满足第一阈值条件(例如,不超过数据阈值415),因此存储器子系统400确定不识别用于重定位到存储器组件的低时延部分的数据块。

图4B是根据本公开的实施例的识别用于重定位到存储器组件的低时延部分的数据块的存储器子系统450的图示。在图4B中,数据块405A具有125次读取操作的读取计数,数据块405B具有100次读取操作的读取计数且数据块405C具有150次读取操作的读取计数。写入到存储器组件的数据量410是1GB。由于写入到存储器组件的数据量410满足第一阈值条件(例如,满足或超过数据阈值415),因此存储器子系统450识别用于重定位到存储器组件的低时延部分的数据块。存储器子系统450可基于数据块405A、405B和405C中具有最高读取计数的数据块405C而识别数据块405C用于重定位。

图5A是根据本公开的一些实施例的基于对存储器组件执行的编程操作的数目确定重定位后续数据的存储器子系统500的图示。如先前论述,在存储器单元不再可靠地存储数据之前,存储器组件的存储器单元具有可对存储器单元执行的有限数目的编程操作。在一些实施例中,存储器子系统500可基于对存储器组件505执行的编程操作的数目是否满足或超过预期值510而确定是否将后续数据重定位到存储器组件的低时延部分。

参看图5A,预期值510是1500次编程操作且已对存储器组件505执行1000次编程操作。由于对存储器组件505执行的编程操作的数目不满足第二阈值条件(例如,不超过预期值510),因此在框515处,存储器子系统500确定将后续数据重定位到存储器组件505的低时延部分。后续数据可对应于由存储器子系统500随后识别以用于重定位到存储器组件505的低时延部分的其它频繁读取的数据。

图5B是根据本公开的一些实施例基于对存储器组件执行的编程操作的数目确定重定位后续数据的存储器子系统550的图示。在图5B中,对存储器组件执行的编程操作的数目是1500次编程操作。由于对存储器组件505执行的编程操作的数目满足第二阈值条件(例如,满足或超过预期值510),因此在框520处,存储器子系统550确定不将后续数据重定位到存储器组件的低时延部分。

图6说明根据本公开的实施例的基于错误率超过阈值而识别用于重定位的字线的存储器子系统600。存储器子系统600包含在存储器组件的第一部分中具有字线610A-E的存储器组件。字线610A-E中的每一个具有对应错误率615。存储器子系统600还包含对应于字线的最高错误率与字线的下一最高错误率之间的差的错误率阈值620。

如先前论述,频繁地读取的字线可对接近所述字线的其它字线造成读取干扰应力。接近字线上的读取干扰应力可导致接近字线的错误率与存储器组件的其它字线相比升高。因此,具有升高错误率的位于(例如,接近)两个字线之间的字线可比存储器组件的其它字线更频繁读取,且可经识别用于重定位到存储器组件的低时延部分。

参看图6,字线610A具有50的错误率,字线610B具有500的错误率,字线610C具有100的错误率,字线610D具有500的错误率且字线610E具有50的错误率。由于最高错误率(例如,字线610B和610D的错误率)与下一最高错误率(例如,字线610C的错误率)之间的差满足第三阈值条件(例如,满足或超过错误率阈值620),因此存储器子系统600可确定字线将经识别以用于重定位到存储器组件的低时延部分。存储器子系统600识别接近字线610B和字线610D的字线。由于字线610C接近字线610B和字线610D,因此存储器子系统600可识别字线610C。在识别字线610C之后,存储器子系统600可即刻将存储于字线610C处的数据重定位到存储器组件的低时延部分。

图7是说明根据本公开的实施例的减小被指派到存储器组件的低时延部分的数据块的数目的存储器子系统的曲线图700。曲线图700包含表示存储器组件的数据块的数目的Y轴和表示对存储器组件执行的编程操作数目的X轴。曲线图700还包含表示被指派到低时延部分710的若干数据块的低时延部分710和表示被指派到高时延部分720的若干数据块的高时延部分720。低时延部分710和高时延部分720可分别对应于图2和3的第二部分和第一部分。

如先前论述,随着对存储器组件执行的编程操作数目增加,数据重定位到低时延部分710的频率可减小,使得数据较不频繁地重定位到低时延部分710。由于数据较不频繁地重定位到低时延部分710,因此随着对存储器组件执行的编程循环数目增加,被指派到低时延部分710的数据块可被重新指派到高时延部分720。在实施例中,在将数据块重新指派到高时延部分720之后,可即刻将数据块编程作为QLC而不是SLC。

图8说明计算机系统800的实例机器,在所述实例机器内可执行用于使机器执行本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机系统800可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用以执行控制器的操作(例如,以执行操作系统以执行对应于图1的数据重定位组件113的操作)。在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。

机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。

实例计算机系统800包含处理装置802、主存储器804(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器806(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储系统818,它们通过总线830彼此通信。

处理装置802表示一或多个通用处理装置,例如微处理器、中央处理单元等等。更特定来说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置802也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置802经配置以执行用于进行本文中所论述的操作和步骤的指令826。计算机系统800可进一步包含用以经由网络820通信的网络接口装置808。

数据存储系统818可包含机器可读存储介质824(也称为计算机可读介质),其上存储有一或多个指令集826或体现本文中所描述的方法或功能中的任一或多种的软件。指令826还可在由计算机系统800执行期间完全或至少部分地驻留在主存储器804内和/或处理装置802内,主存储器804和处理装置802也构成机器可读存储介质。机器可读存储介质824、数据存储系统818和/或主存储器804可对应于图1的存储器子系统110。

在一个实施例中,指令826包含用以实施对应于数据重定位组件(例如,图1的数据重定位组件113)的功能性的指令。尽管在实例实施例中机器可读存储介质824展示为单个介质,但是应认为术语“机器可读存储介质”包含存储一或多组指令的单个介质或多个介质。术语“机器可读存储介质”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何介质。因此,应认为术语“机器可读存储介质”包含但不限于固态存储器、光学介质以及磁性介质。

已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。

然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指将计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据操控和变换为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理数量的其它数据的计算机系统或类似电子计算装置的动作和过程。

本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储介质中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的介质,其各自连接到计算机系统总线。

本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。

本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读介质。机器可读介质包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如计算机可读)介质包含机器(例如计算机)可读存储介质,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存存储器组件等。

在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。

相关技术
  • 将数据重定位到低时延存储器
  • 存储器中的数据重定位
技术分类

06120113106687