部分经编程存储器单元的擦除的制作方法
1.本公开的实施例大体上涉及存储器装置,且更具体地说,涉及部分经编程存储器单元(例如,块)的擦除,所述擦除可由存储器子系统执行。
背景技术:
2.存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
技术实现要素:
3.本公开的一个方面针对于一种系统,其包括:存储器装置;和处理装置,其可操作地耦合到所述存储器装置,被配置成执行包括以下各项的操作:监测对擦除所述存储器装置的存储器单元的请求;和响应于擦除所述存储器单元的请求,在擦除所述存储器单元之前:确定从所述存储器单元最后一次经擦除起所述存储器单元的最后一个存储器子单元是否已经编程;和响应于确定从所述存储器单元最后一次经擦除起所述最后一个存储器子单元尚未经编程:将所述存储器单元的指示符设置为指示在所述最后一个存储器子单元经编程之前正在擦除所述存储器单元;和调整用于跟踪所述存储器单元的擦除的擦除计数器。
4.本公开的另一个方面针对于一种方法,其包括:在存储器子系统的控制器处监测对擦除所述存储器子系统的存储器单元的请求;和响应于擦除所述存储器单元的请求,在擦除所述存储器单元之前:通过所述控制器确定所述存储器单元是否被部分地编程;和响应于确定所述存储器单元经部分地编程:通过所述控制器将所述存储器单元的指示符设置为指示在所述存储器单元被完全编程之前正在擦除所述存储器单元;和通过所述控制器调整用于跟踪所述存储器单元的擦除的擦除计数器。
5.本公开的又一个方面针对于一种包括指令的非暂时性机器可读存储媒体,所述指令在由处理装置执行时致使所述处理装置执行包括以下各项的操作:检测对擦除存储器装置的存储器单元的请求,所述存储器装置可操作地耦合到所述处理装置;和响应于所述请求,在擦除所述存储器单元之前:确定从所述存储器单元最后一次经擦除起所述存储器单元的最后一个存储器子单元是否已经编程;和响应于确定从所述存储器单元最后一次经擦除起所述最后一个存储器子单元已经编程,调整用于跟踪所述存储器单元的擦除的擦除计数器。
附图说明
6.根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
7.图1是说明根据本公开的一些实施例的包含存储器子系统的实例计算系统的框图。
8.图2到4是根据本公开的一些实施例的用于跟踪和擦除部分经编程存储器单元的实例方法的流程图。
9.图5是说明根据本公开的一些实施例的存储器单元的部分编程擦除的实例和存储器单元的完全编程擦除的实例的图式。
10.图6a和6b提供说明在一些实施例的上下文中计算环境的组件之间的交互的交互图,在所述实施例中执行用于如本文中所描述的跟踪和擦除部分经编程存储器单元的方法。
11.图7是其中可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
12.本公开的方面针对于擦除一或多个部分经编程存储器单元(例如,块),所述擦除可由存储器子系统执行。特定来说,本文所描述的一些实施例可监测用于部分编程的一或多个存储器单元(例如,块),并且基于所述监测擦除那些存储器单元中的一或多个。存储器子系统可以是存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可将存取请求发送到存储器子系统,以便在存储器子系统处存储数据且从存储器子系统读取数据。
13.主机系统可将存取请求(例如,写入命令、读取命令)发送到存储器子系统,以便将数据存储在存储器子系统处的存储器装置上,从存储器子系统上的存储器装置读取数据,或相对于存储器子系统上的存储器装置写入/读取构造(例如,提交和完成队列)。如由主机请求指定的待读取或写入的数据在下文中被称作“主机数据”。主机请求可包含用于主机数据的逻辑地址信息(例如,逻辑块地址(lba)、名字空间),其是主机系统与主机数据相关联的位置。逻辑地址信息(例如,lba、名字空间)可为主机数据的元数据的部分。元数据还可包含错误处理数据(例如,错误校正码(ecc)码字、奇偶检验码)、数据版本(例如,用于区分所写入数据的时期)、有效位图(哪些lba或逻辑传递单元含有有效数据)等等。
14.存储器子系统可以对存储在存储器装置上的主机数据发起媒体管理操作,如写入操作。举例来说,作为垃圾收集管理操作的部分,存储器子系统的固件可将先前写入的主机数据从存储器装置的方位重写到新位置。重写的数据(例如,如通过固件启动)在下文中称为“垃圾收集数据”。
15.下文中的“用户数据”大体指主机数据和垃圾收集数据。下文中的“系统数据”是指由存储器子系统产生和/或维护以用于响应于主机请求而进行操作和用于媒体管理的数据。系统数据的实例包含但不限于系统表(例如,逻辑到物理存储器地址映射表,在本文中也称为l2p表)、来自日志记录的数据、高速暂存数据等。
16.存储器装置可以为非易失性存储器装置。非易失性存储器装置为一或多个裸片的封装。每一裸片可以由一或多个平面构成。对于一些类型的非易失性存储器装置(例如,“与非”(nand)型装置),每一平面包括物理块集。对于一些存储器装置,块是可擦除的最小区域。每一块包括页集。每一页由存储数据位的存储器单元集构成。存储器装置可为原始存储器装置(例如,nand),其例如由外部控制器进行外部管理。存储器装置可以是受管理存储器装置(例如,受管理nand),其为与同一存储器装置封装内进行存储器管理的本地嵌入式控
制器组合的原始存储器装置。
17.如在本文中所提及,某些存储器装置(例如nand型存储器装置)包括多个块,其中那些块中的每一个包括多个页(也被称为字线)。通常,将数据写入到这类存储器装置涉及在块的页层级编程存储器装置,且从这类存储器装置擦除数据涉及在块层级擦除存储器装置(即,数据的页层级擦除是不可能的)。因此,使用这类存储器装置通常可引起其中给定块经编程(在页层级)并且接着在给定块的所有页已经编程(例如,用数据写入)之前完全被擦除的循环。这类循环在本文中被称作部分块编程和擦除循环(或部分编程/擦除循环)。在例如其中少量数据反复写入到块或其中数据写入到单独块以通过并行性提高性能的某些用例/硬件应用中,存储器装置的一或多个块可经历多个背对背(back-to-back)部分编程/擦除循环。令人遗憾的是,多个背对背部分编程/擦除循环可引起存储器装置的数据保持的永久性降级。特定来说,块的(在编程之前)连续被擦除的未经编程页或字线(wl)在最终被编程有数据的情况下可经历更快速的电荷损失。页的更快速电荷损失(归因于块上的部分编程/擦除循环的历史)可通过提高触发速率(例如,表示进入错误处置序列的概率)或致使数据丢失而使存储器装置的性能降级。另外,数据保持是存储器装置,尤其是替换栅极(rg)nand型存储器装置的主要可靠性限制度量。
18.本公开的方面通过监测(例如,跟踪)存储器装置的存储器单元(例如,块)的部分编程/擦除循环,并且基于所述监测(例如,响应于擦除请求)执行存储器单元的擦除,以此解决以上和其它缺陷。特定来说,各种实施例跟踪是否在对存储器单元执行擦除之前将存储器单元部分地编程(例如,块具有至少一些未经编程页)。响应于部分经编程存储器单元被擦除,可设置用于存储器单元的指示符(例如,旗标)并且可更新(例如,递增)擦除计数器(维持部分编程/擦除循环的计数)。最终,如果存储器单元的擦除计数器满足条件(例如,擦除计数器超出阈值),那么实施例可用虚设数据编程存储器单元的任何未经编程部分(例如,块的未经编程页或敞开的字线)并且接着擦除所述存储器单元,或替代地,延迟存储器单元的擦除直到额外的非虚设数据(例如,来自主机系统的新用户数据)编程到存储器单元的剩余的任何未经编程部分中之后为止。一些实施例可确保在已对存储器单元执行特定数目的部分编程/擦除循环之后始终对存储器单元(例如,块)执行完全编程/擦除循环。因此,本文所描述的各种实施例的使用可减少或避免由部分编程/擦除循环引起的存储器装置的数据保持的永久性降级。
19.如本文中所使用,存储器单元可包括存储器装置的块,且存储器子单元可包括块的页。对于一些实施例,存储器单元和存储器子单元可不同于本文中所描述的实施例。
20.本文中公开如本文中所描述擦除一或多个部分经编程存储器单元(例如,块)的一些实例。
21.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类的组合。
22.存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、安全数字(sd)卡、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储器(ufs)驱动器和硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小外形dimm(so-dimm),及
各种类型的非易失性双列直插式存储器模块(nvdimm)。
23.计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(iot)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网市售装置中的计算机),或这类包含存储器和处理装置的计算装置。
24.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到
……”
或“与
……
耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件),无论有线还是无线,包含例如电连接、光学连接、磁性连接等连接。
25.主机系统120可包括处理器芯片组和由所述处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,nvdimm控制器)和存储协议控制器(例如,外围组件互连高速(pcie)控制器、串行高级技术附件(sata)控制器)。主机系统120使用例如存储器子系统110将数据写入到存储器子系统110并从存储器子系统110读取数据。
26.主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于sata接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行连接的scsi(sas)、小型计算机系统接口(scsi)、双数据速率(ddr)存储器总线、双列直插式存储器模块(dimm)接口(例如,支持ddr的dimm套接接口)、开放nand快闪接口(onfi)、双倍数据速率(ddr)、低功双倍数据速率(lpddr)或任何其它接口。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过pcie接口与主机系统120耦合时,主机系统120可进一步利用nvm高速(nvme)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。图1说明作为实例的存储器子系统110。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
27.存储器装置130、140可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
28.非易失性存储器装置(例如,存储器装置130)的一些实例包含“与非”(nand)型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来进行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand型快闪存储器包括例如二维nand(2d nand)和三维nand(3d nand)。
29.存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(slc)可每单元存储一个位。其它类型的存储器单元,例如多层级单元(mlc)、tlc、四层级单元(qlc)和五层级单元(plc)可每单元存储多个位。在一些实施例
中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc或此类存储器单元阵列的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分,以及mlc部分、tlc部分或qlc部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,nand),页可进行分组以形成块。
30.如本文中所使用,包括slc的块可被称为slc块,包括mlc的块可被称为mlc块,包括tlc的块可被称为tlc块,且包括qlc的块可被称为qlc块。
31.虽然描述了非易失性存储器组件,例如nand型快闪存储器(例如,2d nand、3d nand)和3d交叉点非易失性存储器信元阵列,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、“或非”(nor)快闪存储器和电可擦除可编程只读存储器(eeprom)。
32.存储器子系统控制器115(为简单起见,控制器115)可与存储器装置130通信以进行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路以执行本文所描述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等),或其它合适的处理器。
33.存储器子系统控制器115可包含处理器(处理装置)117,其被配置成执行存储在本地存储器119中的指令。在所说明的实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,其被配置成存储用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流和例程的指令。
34.在一些实施例中,本地存储器119可以包含存储存储器指针、所提取的数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(rom)。虽然在图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一个实施例中,存储器子系统110不包含存储器子系统控制器115,而是替代地可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
35.一般来说,存储器子系统控制器115可从主机系统120接收命令或操作并且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130和/或存储器装置140的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、名称空间)与物理存储器地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路可将从主机系统120接收到的命令转换为命令指令以存取存储器装置130和/或存储器装置140,以及将与存储器装置130和/或存储器装置140相关联的响应转换为用于主机系统120的信息。
36.存储器子系统110还可包含未说明的额外电路或组件。在一些实施例中,存储器子
系统110可以包含高速缓存或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130。
37.在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以在存储器装置130的一或多个存储器单元上执行操作。外部控制器(例如,存储器系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其为与同一存储器装置封装内进行媒体管理的本地控制器(例如,本地控制器135)组合的原始存储器装置。受管理存储器装置的实例是受管理nand(mnand)装置。
38.存储器子系统控制器115包含部分经编程存储器单元擦除器113,其实施存储器单元(例如,块)的部分编程/擦除循环的监测(例如,跟踪)以及基于所述监测的存储器单元的擦除。根据一些实施例,部分经编程存储器单元擦除器113致使存储器子系统控制器115跟踪是否在对至少一个存储器装置130、140的存储器单元执行擦除之前将所述存储器单元部分地编程(例如,块具有至少一些未经编程页)。举例来说,部分经编程存储器单元擦除器113可致使存储器子系统控制器115检测何时请求(例如,经由产生的或接收到的请求)擦除存储器单元。当在执行擦除之前检测到对擦除存储器单元的请求时,部分经编程存储器单元擦除器113可致使存储器子系统控制器115确定存储器单元是否部分地经编程,且如果是,那么设置用于存储器单元的指示符(例如,旗标)并且更新(例如,递增)用于存储器单元的擦除计数器,其中所述擦除计数器意在维持存储器单元在部分地被编程时被擦除的计数。取决于实施例,存储器单元当存储器单元的存储器子单元保持未经编程(例如,不正在存储有效数据)时被视为部分地经编程。举例来说,存储器单元可包括存储器装置130、140中的一个的块,存储器子单元可包括那个块的页或字线,且块在块的页或字线中的至少一个保持未经编程(例如,字线保持敞开)的情况下被视为部分地经编程。对于一些实施例,存储器单元(例如,块)的存储器子单元(例如,页)以从第一存储器子单元到最后一个存储器子单元的顺序被编程有数据,且存储器单元(例如,块)直到在最后一个存储器子单元(例如,最后一个页)未经编程之前均被视为部分地经编程。
39.对于一些实施例,在擦除存储器单元之前,部分经编程存储器单元擦除器113致使存储器子系统控制器115确定存储器装置130、140中的一个的)存储器单元的擦除计数器是否满足条件(例如,擦除计数器超出阈值)。对于一些实施例,擦除计数器通过擦除计数器的当前值超过(例如,大于)阈值而满足所述条件。阈值可为可定义值,其可由主机系统120(例如,通过主机系统120的用户)确定或调整(例如,在存储器子系统110上)。阈值可确保在已对存储器单元执行特定数目的部分编程/擦除循环之后执行完全编程/循环。替代地,部分经编程存储器单元擦除器113可致使存储器子系统控制器115确定存储器单元的指示符和擦除计数器两者是否满足条件(例如,指示符经设置且擦除计数器超出阈值)。对于一些实施例,擦除计数器和指示符通过擦除计数器的当前值超过(例如,大于)阈值且指示符的当前值指示已发生存储器单元的部分编程擦除而满足所述条件。
40.响应于(例如,通过擦除计数器或通过擦除计数器和指示符)满足条件,部分经编程存储器单元擦除器113可致使存储器子系统控制器115准许存储器擦除或致使存储器擦除直到在存储器单元的任何剩余的未经编程部分被编程有数据之后为止(例如,直到存储器单元的最后一个存储器子单元被编程有数据为止)。举例来说,部分经编程存储器单元擦
除器113可致使存储器子系统控制器115在存储器单元的擦除之前用虚设数据编程存储器单元的任何未经编程部分(例如,块的未经编程页或敞开字线)。替代地,部分经编程存储器单元擦除器113可致使存储器子系统控制器115等待直到额外的非虚设数据(例如,来自主机系统的新用户数据)被编程到存储器单元并且接着准许存储器单元的擦除。以此方式,部分经编程存储器单元擦除器113可致使存储器子系统控制器115可延迟存储器单元的擦除。在接收到的额外非虚设数据不足以编程存储器单元的剩余的未经编程部分的情况下,存储器子系统控制器115可将额外的非虚设数据编程到存储器单元并且用虚设数据编程任何剩余的未经编程部分。
41.图2到4是根据本公开的一些实施例的用于跟踪和擦除部分经编程存储器单元的实例方法的流程图。方法200、300、400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,通过图1的存储器子系统控制器115基于部分经编程存储器单元擦除器113来执行方法200、300或400的一或多个操作。另外或替代地,对于一些实施例,方法200、300、400中的至少一个至少部分地由图1的存储器装置130的本地媒体控制器135执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改所述处理程序的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每一实施例中并不使用所有过程。其它过程流程也是可能的。
42.现参考图2的方法200,在存储器装置(例如,140)的存储器单元(例如,块)擦除之前执行方法200。存储器装置可包括多个存储器单元,其中每一存储器单元可包括多个存储器子单元。每一存储器单元可包括存储器装置的块,且每一存储器子单元可包括块的页。取决于实施例,可响应于处理装置(例如,存储器子系统控制器115的处理器117)检测到对擦除存储器单元的请求而执行方法200,其中所述请求可由处理装置(例如,处理器117)产生或接收。可作为对擦除存储器单元的请求的处理装置(例如,处理器117)监测的部分来执行所述请求检测。
43.如所说明,操作204是由处理装置(例如,处理器117)在擦除存储器单元之前执行。在操作204期间,处理装置(例如,117)执行操作220到226。在操作220处,处理装置(例如,处理器117)确定存储器单元是否部分地经编程,且如果是,方法200转到操作222;否则,方法200转到操作228。对于一些实施例,处理装置(例如,处理器117)通过确定从存储器单元最后一次经擦除起存储器单元的最后一个存储器子单元(例如,最后一个页)是否已经编程来确定存储器单元是否部分地经编程。
44.处理装置(例如,117)在操作222处将存储器单元的指示符设置为(例如,经由表示为真的值)指示在存储器单元完全经编程(例如,存储器单元的最后一个存储器子单元从所述存储器单元最后一次经擦除起尚未经编程)之前正在擦除存储器单元。指示符可表示存储器单元已经历至少一个部分编程/擦除循环。对于一些实施例,指示符存储于存储器单元的元数据(例如,块的元数据)中。存储器单元的元数据可存储于存储器单元中或替代地,存储于出于这类目的预留的一或多个某些存储器单元(例如,一或多个预留块,其可用以存储存储器装置或存储器子系统的系统数据)中。对于一些实施例,存储器装置(例如,117)的正在被跟踪的每一存储器单元具有自己的擦除计数器。举例来说,存储器装置可包括通过第
一擦除计数器跟踪的第一存储器单元,以及通过第二擦除计数器跟踪的第二存储器单元。
45.随后,在操作224处,处理装置(例如,117)调整存储器单元的擦除计数器,其中擦除计数器意在跟踪当存储器单元部分地被编程时存储器单元的擦除。对于一些实施例,擦除计数器的调整包括使擦除计数器递增值一,进而表示当存储器单元目前正在部分地被编程时,检测到(例如,产生或接收到)对擦除存储器单元的另一请求。如本文所描述,擦除计数器可通过擦除计数器超过(例如,大于)阈值而满足条件。替代地,取决于实施例,擦除计数器可递减(例如,其中以部分编程/擦除循环的最大数目来初始化擦除计数器,且零或更低值可指示已在完全编程/擦除循环内满足了条件)。如本文所描述,擦除计数器和指示符可通过擦除计数器的当前值超过(例如,大于)阈值且指示符的当前值指示已发生存储器单元的部分编程擦除而满足条件。对于一些实施例,擦除计数器存储于存储器单元的元数据(例如,块的元数据)中。如本文所描述,存储器单元的元数据可存储于存储器单元中或替代地,存储于一或多个预留存储器单元中。对于一些实施例,存储器装置(例如,117)的正被跟踪的每一存储器单元具有自己的指示符。举例来说,存储器装置可包括通过第一指示符跟踪的第一存储器单元,以及通过第二指示符跟踪的第二存储器单元。
46.在操作226处,处理装置(例如,117)至少基于存储器单元的擦除计数器(例如,擦除计数器的当前值)继续进行存储器单元的擦除。举例来说,响应于擦除计数器满足条件,在操作226处,处理装置可在继续进行存储器单元的擦除之前首先完全编程存储器单元,进而在存储器单元完全经(例如,存储器单元的完全编程擦除)时擦除存储器单元。对于一些实施例,处理装置(例如,117)基于存储器单元的指示符(例如,指示符的值)和擦除计数器(例如,擦除计数器的当前值)继续进行存储器单元的擦除。举例来说,响应于指示符和擦除计数器满足条件,在操作226处,处理装置可在继续进行存储器单元的擦除之前首先完全编程存储器单元。
47.在操作228处,处理装置(例如,117)继续进行存储器单元的擦除。对于一些实施例,操作228的擦除表示在存储器单元已经完全编程(例如,存储器单元的完全编程擦除)时的存储器单元的擦除。取决于实施例,处理装置直接或间接致使存储器单元的擦除。对于一些实施例,在操作228处,处理装置(例如,117)将指示符设置(例如,重置)为(例如,经由表示为假的值)指示在存储器单元被完全编程时正在擦除存储器单元(即,在存储器单元并非正在部分地被编程时擦除),并且将擦除计数器设置(例如,重置)为初始状态(例如,值0,其中操作224递增)。
48.现参考图3的方法300,处理装置(例如,存储器子系统控制器115的处理器117)在操作302处监测对存储器装置(例如,140)的存储器单元(例如,块)的擦除的一或多个请求。响应于检测到对擦除存储器单元的请求,通过处理装置(例如,117)在擦除存储器单元之前执行操作304。在操作304期间,处理装置(例如,117)在擦除存储器单元之前执行操作320到334。在操作320处,处理装置(例如,117)确定存储器单元是否部分地经编程,且如果是,那么方法300转到操作322;否则,方法300转到操作334。在操作334期间,处理装置(例如,117)继续进行存储器单元的擦除。通过从操作320继续到操作334,处理装置继续在操作334处进行存储器单元的完全编程擦除。
49.处理装置(例如,117)在操作322处将存储器单元的指示符设置为(例如,经由表示为真的值)指示在存储器单元完全经编程(例如,存储器单元的最后一个存储器子单元从所
述存储器单元最后一次经擦除起尚未经编程)之前正在擦除存储器单元。此后,在操作324处,处理装置(例如,117)调整(例如,递增或递减)存储器单元的擦除计数器,其中擦除计数器意在跟踪在存储器单元被部分地编程时的存储器单元的擦除。操作320、322、324分别类似于图2的方法200的操作220、222、224。
50.在操作326处,处理装置(例如,117)确定擦除计数器是否满足存储器单元的完全编程擦除的条件(或准许存储器单元的部分编程擦除的条件)。因此,所述条件可确定将如何继续进行所请求的存储器单元的擦除。响应于满足条件(例如,避免在存储器单元被部分地编程时被擦除),方法300转到操作328;否则,方法300继续操作334,其中处理装置(例如,117继续进行存储器单元的擦除。通过从操作326继续到操作334,处理装置在操作334处继续进行存储器单元的部分编程擦除。对于一些实施例,存储器装置(例如,117)的两个不同存储器单元自身可具有在操作326处施加的不同条件。举例来说,存储器装置可包括第一存储器单元和第二存储器单元,且在操作326处施加到第一存储器单元的第一条件可不同于在操作326处施加到第二存储器单元的第二条件。不同条件可基于其相应差异用于不同存储器单元。举例来说,第一存储器单元和第二存储器单元可包括不同的存储器单元类型(例如,slc、mlc、tlc、qlc等),且因此,可具有经施加以确定将在何时执行完全编程/擦除循环的不同条件。
51.处理装置(例如,117)在操作328处编程存储器单元的保持未被编程有数据的任何存储器子单元。在这样做时,操作328确保存储器单元在被存储器子系统擦除之前被完全编程。取决于实施例,编程到剩余存储器子单元中的数据包括虚设数据(例如,非用户数据)。在操作330处,处理装置(例如,117)将指示符设置(例如,重置)为(例如,经由表示为假的值)指示在存储器单元被完全编程时正在擦除存储器单元,并且在操作332处,处理装置(例如,117)将擦除计数器设置(例如,重置)为初始状态(例如,值0,其中操作324递增)。
52.在操作332之后,方法300继续操作334,其中处理装置(例如,117)继续进行存储器单元的擦除。通过从操作332继续到操作334,处理装置继续在操作334处进行存储器单元的完全编程擦除(其中已经通过操作328将存储器单元完全编程)。
53.现参考图4的方法300,方法400类似于图3的方法300,其中操作402、404、420、422、424、426、430、432、434分别类似于操作302、304、320、322、324、326、330、332、334。在操作428处,处理装置(例如,117)推迟存储器单元的擦除直到新数据编程到存储器单元的保持未经编程的任何存储器子单元之后,其中新数据表示非虚设数据(例如,来自主机系统120的新用户数据)。在新数据不足以编程存储器单元的剩余的未经编程部分的情况下,处理装置(例如,117)可用虚设数据编程存储器单元的(在编程新数据之后)剩余的任何部分。通过操作428,处理装置可确保在执行存储器单元的擦除之前对存储器单元(例如,块)执行完全编程/擦除循环。如所示出,从操作428,方法400继续进行操作430、432、434。
54.图5是说明根据本公开的一些实施例的存储器单元的部分编程擦除的实例500和存储器单元的完全编程擦除的实例520的图式。出于说明性目的,图5中的每一存储器单元包括存储器装置的块,且每个块包括多个页(页0到页
最后一个
)。关于部分编程擦除的实例500,502处所说明的块被部分地编程有用户数据510。在504处,擦除此部分经编程块,产生经擦除块。关于完全编程擦除的实例520,522处所说明的块被部分地编程有用户数据530。响应于522处对擦除块的请求,在擦除块之前,用数据532编程所述块直到所述块被完全编程为
止,如524处所示。取决于实施例,数据532可包括新数据(例如,从主机系统接收的新用户数据)或虚设数据,或这两者的某种组合。在526处,擦除此完全经编程块,产生经擦除块。
55.图6a和6b提供说明在一些实施例的上下文中计算环境的组件之间的交互的交互图,在所述实施例中执行用于如本文中所描述的跟踪和擦除部分经编程存储器单元的方法。
56.图6a和6b提供说明在一些实施例的上下文中计算环境的组件之间的交互的交互图,在所述实施例中执行用于如本文中所描述的跟踪和擦除部分经编程存储器单元的方法。所述方法的操作可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法由主机系统(例如,120)、存储器子系统控制器(例如,115)、存储器装置(例如,130或140)或其某一组合执行。虽然操作以特定顺序或次序来展示,但是除非另外规定,否则所述过程的次序可修改。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每一实施例中并不使用所有过程。在图6a和6b中说明的实例的上下文中,主机系统可包含主机系统120,存储器子系统控制器可包含存储器子系统控制器115,并且存储器装置可包含存储器装置140。
57.如图6a中所示,在操作602处,主机系统120将命令(例如,写入数据的命令)发送到存储器子系统110。响应于接收到所述命令,在操作610处,存储器子系统控制器115基于所述命令产生对擦除存储器装置140的一或多个存储器单元的请求。存储器子系统控制器115在操作612处检测所产生的对擦除存储器单元中的一个的请求。此后,在操作614处,存储器子系统控制器115确定存储器的最后一个存储器子单元从最后一次经擦除起是否已经编程。如本文所描述,通过操作614,存储器子系统控制器115确定是否在擦除存储器单元之前部分地编程存储器单元。存储器装置140有助于在操作630处确定最后一个页的编程状态。响应于确定存储器的最后一个存储器子单元从最后一次经擦除起已经编程,存储器子系统控制器115执行操作622;否则,存储器子系统控制器115执行操作616。
58.在操作616处,存储器子系统控制器115调整(例如,增大)用于跟踪存储器单元的擦除的擦除计数器,其中擦除计数器存储于存储器装置140上。为了有助于擦除计数器的调整,存储器装置140在操作632处为存储器子系统控制器115提供对擦除计数器的存取。另外,在操作618处,存储器子系统控制器115将存储器单元的指示符设置为指示正在对存储器单元执行部分编程/擦除循环。
59.现参考图6b,在操作620处,存储器子系统控制器115确定擦除计数器和指示符是否满足将对存储器单元执行的完全编程/擦除循环的条件。如果是,那么存储器子系统控制器115执行操作624;否则,存储器子系统控制器115执行操作622。在操作622处,存储器子系统控制器115致使擦除存储器单元,且存储器装置140促使操作634处的擦除。
60.在操作624处,存储器子系统控制器115重置存储器单元的擦除计数器和指示符。为了促进此重置,存储器装置140在操作636处提供对存储器单元的至少擦除计数器的存取。另外,在操作626处,存储器子系统控制器115用数据(例如,新数据或虚设数据)编程存储器单元,进而使存储器单元在存储器单元的擦除之前被完全编程。存储器装置140促使在操作638处用数据编程存储器单元。此后,存储器子系统控制器115致使在操作622处擦除存
储器单元。
61.图7说明计算机系统700的实例机器,可执行所述计算机系统700内的用于致使所述机器执行本文中所论述的方法中的任一种或多种方法的指令集。在一些实施例中,计算机系统700可与主机系统(例如,图1的主机系统120)对应,所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行本文中所描述的操作。在替代实施例中,所述机器可以连接(例如,联网)到局域网(lan)、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
62.所述机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
63.实例计算机系统700包含处理装置702、主存储器704(例如,只读存储器(rom)、闪存存储器、动态随机存取存储器(dram)例如同步dram(sdram)或rambus dram(rdram)等)、静态存储器706(例如,闪存存储器、静态随机存取存储器(sram)等),以及数据存储装置718,其经由总线730彼此通信。
64.处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地,处理装置702可为复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置702也可为一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置702被配置成执行指令726以用于执行本文中所论述的操作和步骤。计算机系统700可另外包含网络接口装置708以在网络720上通信。
65.数据存储装置718可包含机器可读存储媒体724(也称为计算机可读媒体),其上存储有一或多组指令726或体现本文中所描述的方法或功能中的任一或多种的软件。指令726还可在由计算机系统700执行期间完全或至少部分地驻存在主存储器704内和/或处理装置702内,主存储器704和处理装置702也构成机器可读存储媒体。机器可读存储媒体724、数据存储装置718和/或主存储器704可对应于图1的存储器子系统110。
66.在一个实施例中,指令726包含实施对应于如本文中所描述跟踪和擦除部分经编程存储器单元(例如,图1的部分经编程存储器单元擦除器113)的功能性的指令。虽然在实例实施例中将机器可读存储媒体724展示为单个媒体,但应认为术语“机器可读存储媒体”包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。术语“机器可读存储媒体”因此应被视为包含但不限于固态存储器、光学媒体和磁性媒体。
67.已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨
最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
68.然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
69.本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、cd-rom及磁光盘、只读存储器(“rom”)、随机存取存储器(“ram”)、eprom、eeprom、磁卡或光卡或适合于存储电子指令并且各自耦合到计算机系统总线的任何类型的媒体。
70.本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
71.本公开可提供为计算机程序产品或软件,其可包含在其上储存有可用以编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、闪存存储器组件等。
72.在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
技术特征:
1.一种系统,其包括:存储器装置;和处理装置,其可操作地耦合到所述存储器装置,被配置成执行包括以下各项的操作:监测对擦除所述存储器装置的存储器单元的请求;和响应于擦除所述存储器单元的请求,在擦除所述存储器单元之前:确定从所述存储器单元最后一次经擦除起所述存储器单元的最后一个存储器子单元是否已经编程;和响应于确定从所述存储器单元最后一次经擦除起所述最后一个存储器子单元尚未经编程:将所述存储器单元的指示符设置为指示在所述最后一个存储器子单元经编程之前正在擦除所述存储器单元;和调整用于跟踪所述存储器单元的擦除的擦除计数器。2.根据权利要求1所述的系统,其中在所述存储器单元经擦除之前,响应于擦除所述存储器单元的所述请求:响应于确定从所述存储器单元最后一次经擦除起所述最后一个存储器子单元已经编程:将所述指示符设置为指示在所述最后一个存储器子单元经编程之前并未正在擦除所述存储器单元;和将所述擦除计数器设置为初始状态。3.根据权利要求1所述的系统,其中响应于确定从所述存储器单元最后一次经擦除起所述最后一个存储器子单元已经编程:确定所述擦除计数器是否满足条件;和响应于所述擦除计数器满足所述条件:编程所述存储器单元的保持未被编程有虚设数据的任何存储器子单元;和在保持未经编程的任何存储器子单元的所述编程之后,继续进行所述存储器单元的擦除。4.根据权利要求3所述的系统,其中当所述擦除计数器超出阈值时满足所述条件。5.根据权利要求3所述的系统,其中响应于确定从所述存储器单元最后一次经擦除起所述最后一个存储器子单元已经编程:响应于所述擦除计数器不满足所述条件,继续进行所述存储器单元的擦除。6.根据权利要求3所述的系统,其中所述存储器单元是第一存储器单元,其中所述擦除计数器是所述第一存储器单元的第一擦除计数器,其中所述条件是所述第一存储器单元的第一条件,其中所述存储器装置包括第二存储器单元,且其中维持用于所述第二存储器单元的第二擦除计数器。7.根据权利要求6所述的系统,其中第二条件与所述第二擦除计数器一起使用来确定是否在所述第二存储器单元的擦除之前编程所述第二存储器单元的保持未被编程有虚设数据的任何存储器子单元。8.根据权利要求7所述的系统,其中所述第一存储器单元和所述第二存储器单元包括不同的存储器单元类型。
9.根据权利要求1所述的系统,其中响应于确定从所述存储器单元最后一次经擦除起所述最后一个存储器子单元已经编程:确定所述擦除计数器是否满足条件;和响应于所述擦除计数器满足所述条件:推迟所述存储器单元的擦除直到所述存储器单元的保持未经编程的任何存储器子单元被编程有从主机系统接收的新数据之后。10.根据权利要求1所述的系统,其中所述存储器单元是包括所述装置的所述存储器的多个页的块,且其中所述最后一个存储器子单元是所述多个页中的页。11.根据权利要求1所述的系统,其中所述指示符存储于所述存储器单元的元数据中。12.根据权利要求1所述的系统,其中所述擦除计数器存储于所述存储器单元的元数据中。13.一种方法,其包括:在存储器子系统的控制器处监测对擦除所述存储器子系统的存储器单元的请求;和响应于擦除所述存储器单元的请求,在擦除所述存储器单元之前:通过所述控制器确定所述存储器单元是否被部分地编程;和响应于确定所述存储器单元经部分地编程:通过所述控制器将所述存储器单元的指示符设置为指示在所述存储器单元被完全编程之前正在擦除所述存储器单元;和通过所述控制器调整用于跟踪所述存储器单元的擦除的擦除计数器。14.根据权利要求13所述的方法,其中所述存储器子系统包括存储器装置,且其中所述存储器装置包括所述存储器单元。15.根据权利要求14所述的方法,其中所述存储器装置包括所述控制器。16.根据权利要求14所述的方法,其中所述控制器在所述存储器装置外部。17.根据权利要求16所述的方法,其中所述控制器是存储器子系统控制器。18.根据权利要求13所述的方法,其中所述指示符存储于所述存储器单元的元数据中。19.根据权利要求13所述的方法,其中所述擦除计数器存储于所述存储器单元的元数据中。20.一种包括指令的非暂时性机器可读存储媒体,所述指令在由处理装置执行时致使所述处理装置执行包括以下各项的操作:检测对擦除存储器装置的存储器单元的请求,所述存储器装置可操作地耦合到所述处理装置;和响应于所述请求,在擦除所述存储器单元之前:确定从所述存储器单元最后一次经擦除起所述存储器单元的最后一个存储器子单元是否已经编程;和响应于确定从所述存储器单元最后一次经擦除起所述最后一个存储器子单元已经编程,调整用于跟踪所述存储器单元的擦除的擦除计数器。
技术总结
各种实施例实现存储器装置的一或多个部分经编程存储器单元的擦除。特定来说,各种实施例实现存储器装置的存储器单元(例如,块)的部分编程/擦除循环的监测(例如,跟踪),并且基于所述监测执行所述存储器单元的擦除。于所述监测执行所述存储器单元的擦除。于所述监测执行所述存储器单元的擦除。