在存储装置上每单元实施可变数目的位的制作方法

文档序号:33160292发布日期:2023-02-04 00:29阅读:34来源:国知局
在存储装置上每单元实施可变数目的位的制作方法

1.本公开的实施例大体上涉及存储器子系统,且更具体地说,涉及在存储装置上每单元实施可变数目的位。


背景技术:

2.存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可以利用存储器子系统以在存储器装置处存储数据以及从存储器装置检索数据。
附图说明
3.根据下文给出的具体实施方式且根据本公开的各种实施方案的附图,将更加充分地理解本公开。
4.图1说明根据本公开的一些实施例的包含存储器子系统的实例计算环境。
5.图2是根据本公开的一些实施例的基于存取频率动态地对块进行重新编程的实例方法的流程图。
6.图3a-3c是根据本公开的一些实施例的基于容量阈值启用操作模式的存储器子系统的说明。
7.图4是基于存取频率确定在后续写入操作期间使用不同存储器单元对哪些块进行编程的存储器子系统400的说明。
8.图5是本公开的实施方案可在其中操作的实例计算机系统的框图。
具体实施方式
9.本公开的各方面涉及基于存取频率对块进行重新编程。存储器子系统可以是存储装置、存储器模块或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含例如存储数据的存储器装置的一或多个组件的存储器子系统。主机系统可提供待存储于存储器子系统处的数据,且可请求从存储器子系统检索数据。
10.常规存储器子系统的存储器组件可包含可存储一或多个数据位(例如,从主机系统接收的数据)的存储器单元。举例来说,存储器组件可包含各自存储一个数据位的单层级单元(slc)、各自存储两个数据位的多层级单元(mlc)、各自存储三个数据位的三层级单元(tlc)、各自存储四个数据位的四层级单元(qlc)和/或各自存储五个数据位的五层级单元(plc)。存储器组件的一或多个存储器单元可分组在一起以形成块。
11.每个类型的存储器单元(例如,slc、mlc、tlc、qlc和plc)可展现不同的特性和优点。举例来说,与其它类型的存储器单元相比,slc可具有较低读取时延(例如,存储于slc处的数据被读取所花费的时间)、较快编程时间(例如,将从主机系统接收的数据编程到用于存储的单元所花费的时间),以及存储于slc处的数据的较大可靠性。然而,由于每个slc仅
存储单个数据位,因此当与具有相同总数的存储器单元但包含每存储器单元存储多个数据位的至少一些mlc、tlc、qlc和/或plc的存储器组件相比时,包含slc的存储器组件将具有较低存储容量。
12.在另一实例中,qlc每存储器单元存储四个数据位,但与其它类型的存储器单元相比可具有较高读取时延、较慢编程时间和存储于qlc处的数据的较低可靠性。包含qlc的存储器组件与仅包含slc、mlc和tlc的存储器组件相比将具有较高存储容量,但对包含qlc的存储器组件读取和写入数据的时间量将大于包含其它类型的存储器单元的存储器组件。举例来说,qlc的平均读取时间可为近似80微秒(μs),而slc的平均读取时间可为近似25μs。此外,存储于包含qlc的存储器组件处的数据的可靠性可低于包含其它类型的存储器单元的存储器组件。
13.因此,为了最大限度地减少将从主机系统接收的数据编程到存储器组件的时间量,存储器子系统可包含存储器组件的包含slc的第一部分和存储器组件的包含qlc的第二部分。当从主机系统接收数据以供存储器子系统存储时,存储器子系统可初始将数据编程到存储器组件的包含具有较快编程速度的slc的第一部分。一旦存储器子系统空闲(例如,未从主机系统接收指令),那么存储器子系统将存储于包含slc的第一部分处的数据重定位到包含qlc的第二部分,所述qlc与slc相比具有较高的存储容量。当从主机系统接收新数据以供存储器子系统存储时,存储器子系统可以执行此过程,也被称为slc高速缓存。所述过程提供slc的较快编程速度的益处,同时还利用qlc的较高存储容量。
14.然而,当主机系统请求存储于存储器子系统处的数据时,已从slc高速缓存器逐出的数据需要从qlc读取。如先前论述,qlc与其它类型的存储器单元相比具有较高的读取时延。从存储器组件的qlc读取数据导致与数据存储于存储器组件的slc处的情况相比数据花费更长时间来提供到主机系统,从而降低存储器子系统的性能。
15.本公开的各方面通过基于对存储于存储器组件的物理块上的数据的存取频率而使用不同类型的存储器单元(例如,slc、mlc、tlc、qlc和plc)动态地对所述物理块重新编程来解决以上和其它不足。每存储器单元用于存储数据的位数可与存取频率成反比。例如,恒定存取的数据可编程在slc中,频繁存取的用户数据可编程在mlc中,非频繁存取的用户数据可编程在tlc中,少量存取的用户数据可编程在qlc中,并且很少存取的用户数据可编程在plc中。存取频率可包含例如时间周期内的存取速率。在一个实例中,存储器子系统可跟踪并维持对存储用户数据的块的读取计数。在另一实例中,存储器子系统可跟踪并维持存储器组件的字线的错误率。在确定对一或多个块的存取频率之后,存储器子系统可在后续写入操作期间将所述一或多个块从一种类型的存储器单元重新编程到不同类型的存储器单元。当将数据页从每单元较低位的存储器单元重新编程到每单元较高位的存储器单元(例如,slc到qlc、mlc到tlc等)时,存储器子系统可将另一不相关数据位编程到存储器单元中,同时保持先前编程位。这有效地将slc转换为mlc。新编程位可来自主机系统,且与存储器单元中的先前编程位没有关系。替代地,存储器子系统可将来自多个每单元较低位的存储器单元的数据位组合到一或多个每单元较高位的存储器单元。
16.本公开的其它方面基于存储器组件的充满度而启用在不同类型的存储器单元中编程(写入数据)之间的动态切换。举例来说,存储器子系统可在slc操作模式下操作(例如,将块编程在slc中),直到内存占用率符合第一容量准则(例如,达到或超过第一容量阈值)
为止。容量阈值可由已使用的内存量、已填充的内存的百分比或层级等表示。一旦符合第一容量准则(例如,达到第一容量阈值),存储器子系统就可基于对每个块的存取频率而启用从slc操作模式到mlc操作模式的动态切换。举例来说,存储器子系统可基于对每个块的存取频率在后续写入操作期间将一或多个块从slc重新编程到mlc。如上文所论述,对块进行重新编程可包含将另一不相关数据位编程到存储器单元中,同时保持先前编程位,或将来自多个每单元较低位的存储器单元的数据位组合到一或多个每单元较高位的存储器单元。另外,存储器子系统可对mlc中的所有未使用的块进行编程。
17.额外容量阈值可用于启用切换到每单元较高位的操作模式(例如,tlc操作模式、qlc操作模式等)。举例来说,当内存占用率符合第二容量准则(例如,达到或超过第二容量阈值)时,存储器子系统可基于对每个块的存取频率而启用始于slc操作模式、mlc操作模式和tlc操作模式的动态切换。在另一实例中,当内存占用率符合第三容量准则(例如,达到或超过第三容量阈值)时,存储器子系统可基于对每个块的存取频率而启用slc操作模式、mlc操作模式、tlc操作模式和qlc操作模式之间的动态切换。
18.本公开的优点包含但不限于由于在存储器组件未被填充到特定容量阈值时利用每单元较低位的存储器单元的改进的性能和能耗、归因于频繁读取的数据维持在存储器组件的低时延部分中或重新定位到存储器组件的低延时部分的减少的读取时延,以及基于所存储的数据量和存取频率的自动性能最大化和能耗最小化。减少的读取时延使得主机系统在较短时间量中接收频繁读取的数据以及存储器子系统的性能改进。此外,如先前论述,存储器组件的例如slc等低时延部分中的存储器单元与例如qlc等具有较高存储密度的存储器单元相比具有存储数据的较大可靠性。通过将频繁读取的数据存储于具有存储数据的较大可靠性的存储器单元中,由存储器子系统执行的错误校正操作的数目减少,因此归因于以较少位校正数据所必需的较低错误检查和校正(ecc)电力而节省电力,从而允许存储器子系统执行其它操作(例如,读取和/或写入操作),且改进存储器子系统的性能。
19.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或这些的组合。
20.存储器子系统110可以是存储装置、存储器模块或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡,以及硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so-dimm),以及各种类型的非易失性双列直插式存储器模块(nvdimm)。
21.计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(iot)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
22.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与

耦合”通常指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,不具有中间组件),无论有线还是
无线,包含例如电连接、光学连接、磁连接等连接。
23.主机系统120可包含处理器芯片组和由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,nvdimm控制器),以及存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用存储器子系统110以例如将数据写入到存储器子系统110以及从存储器子系统110读取数据。
24.主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤信道、串行附接的scsi(sas)、双数据速率(ddr)存储器总线、小型计算机系统接口(scsi)、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过pcie接口与主机系统120耦合时,主机系统120可进一步利用nvm快速(nvme)接口存取存储器组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。图1说明存储器子系统110作为实例。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合来存取多个存储器子系统。
25.存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
26.非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(nand)型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的变化来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand型快闪存储器包含例如二维nand(2d nand)和三维nand(3d nand)。
27.存储器装置130中的每一者可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(slc),可每单元存储一个位。其它类型的存储器单元,例如多层级单元(mlc)、三层级单元(tlc)、四层级单元(qlc)和五层级单元(plc),可每单元存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc、plc或这些的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分,以及mlc部分、tlc部分、qlc部分和plc部分。存储器装置130的存储器单元可分组为可指用于存储数据的存储器装置的逻辑单元的页。对于一些类型的存储器(例如,nand),页可被分组以形成块。
28.尽管描述了非易失性存储器组件,例如3d交叉点非易失性存储器单元阵列和nand型快闪存储器(例如,2d nand、3d nand),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor)快闪存储器、电可擦除可编程只读存储器(eeprom)。
29.存储器子系统控制器115(或简称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据,以及其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲器存储器或其组合。硬件可包含具有用于执行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路系统。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)或其它合适的处理器。
30.存储器子系统控制器115可包含被配置成执行存储于本地存储器119中的指令的处理器117(例如,处理装置)。在所说明实例中,存储器子系统控制器115的本地存储器119包含被配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流和例程。
31.在一些实施例中,本地存储器119可包含存储器寄存器,其存储存储器指针、所提取的数据等。本地存储器119还可包含用于存储微码的只读存储器(rom)。虽然图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
32.一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将命令或操作转换为指令或适当命令以实现对存储器装置130的所需存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、名字空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收的命令转换为命令指令以存取存储器装置130,以及将与存储器装置130相关联的响应转换为用于主机系统120的信息。
33.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存器或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址且对所述地址进行解码以存取存储器装置130。
34.在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115进行操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与本地控制器(例如,本地控制器135)组合以用于在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例为受管理nand(mnand)装置。
35.存储器子系统110包含可用于使用多种存储器单元类型对块进行编程的块编程组件113。在一些实施例中,控制器115包含块编程组件113的至少一部分。举例来说,控制器115可包含处理器117(处理装置),其被配置成执行存储于本地存储器119中以用于执行本文中所描述的操作的指令。在一些实施例中,块编程组件113是主机系统120、应用程序或操作系统的一部分。
36.在slc模式下编程的存储器单元比在mlc模式、tlc模式、qlc模式和plc模式下编程
的单元更快、更可靠地编程,且具有更长的寿命。在较高层级模式(例如,mlc模式、tlc模式、qlc模式和plc模式)下编程的存储器单元可每单元存储较多位,但与在slc模式下编程的单元相比较慢、较不可靠地编程,且具有较短的寿命。可能需要在slc模式下操作存储器单元以保留slc的性能优点而不是在较高层级模式下自动操作。
37.存储器子系统110可通过测量存储器单元的源极与漏极之间的电流而读取存储器单元。高于其电流将在源极与漏极之间流动的电压阈值随着存储器单元中的浮动栅极的状态而变化。存储器子系统110可跨越源极和漏极施加读取点电压且测试电流。对于slc,当电流处于足够高的电平时,存储器单元处于二进制1。否则,存储器单元处于二进制0。这意味着slc包含两个状态和一个阈值电压,且可每单元保持一个位。因此,一个slc保持一个数据页。mlc包含四个状态和三个阈值电压,其中每个二进制值(即,00、10、01和11)具有不同阈值电压,且可每单元保持两个位。因此,一个mlc保持两个数据页。tlc包含八个状态和七个阈值电压,其中每个二进制值(即,000、001、010、011、100、101、110和111)具有不同阈值电压,且可每单元保持三个位。因此,一个tlc保持三个数据页。qlc包含十六个状态和十五个阈值电压,其中每个二进制值(即,0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110和1111)具有不同阈值电压,且为每单元四个位。因此,一个qlc保持四个数据页。plc包含三十二个状态和三十一个阈值电压,其中每个二进制值(即,00000、00001、00010、00011、00100、00101、00110、00111、01000、01001、01010、01011、01100、01101、01110、01111、10000、10001、10010、10011、10100、10101、10110、10111、11000、11001、11010、11011、11100、11101、11110和11111)具有不同阈值电压,且为每单元五个位。因此,一个plc保持五个数据页。
38.当将块从较低层级存储器单元重新编程到较高层级存储器单元(例如,slc到qlc、mlc到tlc等)时,在第一实例中,块编程组件113可将“新”位覆写(重新编程)到“旧”(现有)位顶部。这允许块编程组件113保留现有数据并将其压缩到较小量的存储器单元,同时将额外或新数据写入到块的剩余部分。因此,所述块可包含与不同数据有关的邻近页。控制器115可管理这些页的关系。
39.在另一实例中,块编程组件113可将来自多个较低层级存储器单元的数据组合到一或多个较高层级存储器单元。举例来说,块编程组件113可从slc存储器单元选择三个数据页,并将数据写入到单个tlc存储器单元中;可从两个mlc存储器单元选择四个数据页,并将数据写入到单个qlc存储器单元中;等等。控制器115可管理这些页的关系。
40.块编程组件113可动态地确定对存储器装置130和/或存储器装置140的每个块的存取频率。存取频率可由两个先后发生的存取操作之间的持续时间、写入操作与读取操作之间的持续时间、时间周期内的存取速率等表示。块编程组件113可使用确定存取频率的不同方法。在一个实例中,由存储器子系统跟踪并维持对存储用户数据的块的读取计数。块编程组件113可通过确定读取计数是否超过特定读取计数阈值或属于特定读取范围内来利用读取计数标识存取频率。在另一实例中,块编程组件113可使用存储器组件的字线(存储器单元的行)或位线(存储器单元的列)的错误率来分别确定一或多个邻近字线或位线的存取频率。当存取频率符合关于当前每单元位密度的准则时,块编程组件113可在后续写入操作期间将块从一种类型的存储器单元重新编程到每单元较高位密度的存储器单元。
41.块编程组件113可维持用于确定对特定块的存取频率的多个范围。在实例中,块编
程组件113包含第一范围值、第二范围值和第三范围值、第四范围值和第五范围值,其中每个范围值与将在关于块的后续写入操作期间利用的每单元位数相关联。第一范围值可在0与第一频率之间,第二范围值可在第一频率与第二频率之间,第三范围值可在第二频率与第三频率之间,第四范围值可在第三频率与第四频率之间,并且第五范围值可以是第四频率以上的值。所述范围值中的每一者可与存储器单元的类型相关联。举例来说,第一范围值可与slc相关联,第二范围值可与mlc相关联,第三范围值可与tlc相关联,第四范围值可与qlc相关联,并且第五范围值可与plc相关联。块编程组件113可响应于确定一或多个块的存取频率而将所述块从先前写入有数据的第一类型存储器单元重新编程到与存取频率相关联的不同类型的存储器单元。举例来说,块编程组件113可初始地将块编程在slc中。接下来,响应于确定对所述块的存取频率在第三范围值内,块编程组件113可通过在第二写入操作期间将块内的所有数据页从slc编程到mlc来对所述块进行重新编程。
42.在实例中,当将数据页从每单元较低位的存储器单元重新编程到每单元较高位的存储器单元(例如,slc到qlc、mlc到tlc等)时,存储器子系统可将另一不相关数据位编程到存储器单元中,同时保持先前编程位。这有效地将slc转换为mlc。新编程位可来自主机系统,且与存储器单元中的先前编程位没有关系。在另一实例中,当将数据页从每单元较低位的存储器单元重新编程到每单元较高位的存储器单元时,存储器子系统可将来自两个较低层级存储器单元(例如,两个slc)中的两个不同位的不相关数据组合到具有两个位的新较高层级存储器单元(例如,mlc)。新组合位可彼此没有关系。控制器115可跟踪哪个数据项涉及存储器单元中的哪个位。举例来说,快闪存储器装置(ftl)可用于将与数据项相关联的逻辑地址映射到存储器子系统110中的物理地址。ftl可在存储器子系统110的本地存储器119中包含地址映射表,例如逻辑到物理(l2p)表,以执行映射操作。因此,存储器装置130、140可同时包含slc、mlc、tlc、qlc和plc。
43.存储器子系统可基于存储器组件的已使用容量而启用不同操作模式之间的动态切换。举例来说,块编程组件113可在slc模式下操作存储器装置130、140直到内存占用率符合第一容量准则为止。例如,第一容量准则可包含超过第一容量阈值。容量阈值可包含已使用的内存量、已填充的内存的百分比或层级等。一旦符合第一容量准则(例如,达到第一容量阈值),块编程组件113就可基于对每个块的存取频率而启用slc操作模式与mlc操作模式之间的动态切换。额外容量准则(例如,容量阈值)可用于启用切换到较高操作模式。举例来说,当内存占用率符合第二容量准则(例如,超过第二容量阈值)时,块编程组件113可基于对每个块的存取频率而启用slc操作模式、mlc操作模式和tlc操作模式之间的动态切换。在另一实例中,当内存占用率符合第三容量准则(例如,超过第三容量阈值)时,块编程组件113可基于对每个块的存取频率而启用slc操作模式、mlc操作模式、tlc操作模式和qlc操作模式之间的动态切换。下文描述关于块编程组件113的操作的另外细节。
44.主机系统120可动态地改变或更新存取频率阈值和容量阈值。举例来说,控制器115可从主机系统120接收指示一或多个更新(修改)存取频率阈值或一或多个更新容量阈值的命令或操作。
45.存储器装置130和/或140的一部分可保留以用于slc高速缓存。当存储器子系统110在多个操作模式下或不在slc模式下对用户数据进行编程时,可使用slc高速缓存。slc高速缓存在写入到不同类型的存储器单元(例如,mlc、tlc、qlc等)之前将传入写入数据存
储在slc存储器单元中。执行此操作以避免数据的损失且最大限度地减少从主机系统120接收的数据将编程到存储器装置130、140的时间量。举例来说,存储器子系统110可接收待存储于mlc存储器单元中的写入数据,且初始地将写入数据存储于具有较快写入时间的slc存储器单元中。存储器子系统110接着将写入数据从slc存储器单元复制到mlc存储器单元。避免了由对mlc存储器单元进行的写入操作期间的电力丢失而导致的潜在数据丢失,因为可在电力恢复之后检索存储于slc存储器单元中的所有数据。
46.当块处的数据失效时,使得当执行垃圾收集操作时,所述数据可被擦除,由此允许所述块以新数据编程。编程到块上的新数据可以slc模式编程,由此将新数据存储于具有较低读取时延、较快编程时间和较大可靠性的存储器单元上。垃圾收集操作可取决于对块上的数据的存取频率。
47.图2是根据本公开的一些实施例的基于存取频率动态地对块进行重新编程的实例方法200的流程图。方法200可由处理逻辑进行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的块编程组件113执行。虽然以特定顺序或次序展示,但除非另外规定,否则可修改过程的次序。因此,说明的实施例应仅作为实例理解,且说明的过程可以不同次序执行,且一些过程可并行地执行。另外,可以在各种实施例中省略一或多个过程。因此,并非每一实施例中都需要所有过程。其它过程流程是可能的。为了易于理解和简洁起见,以下实施例论述slc、mlc、tlc和qlc的使用。然而,应注意,以下实施例可实施额外类型的存储器单元,例如plc。
48.在框210处,处理逻辑将块编程在第一类型存储器单元中。借助于实例,第一类型存储器单元可以是slc存储器单元,因为在slc模式下编程的存储器单元比在较高层级模式下编程的单元更快、更可靠地编程,且具有更长的寿命。然而,在其它实施例中,第一类型存储器单元可包含mlc、tlc、qlc或plc。在实施例中,主机系统可向存储器子系统指示用以将块编程在其中的存储器单元的类型。举例来说,主机系统可向存储器子系统指示在tlc模式下对第一块中的用户数据进行编程,因为主机系统有时可预测对用户数据的存取速率。在实例中,主机系统可包含发到存储器子系统的写入命令中的元数据,所述元数据指示对用户数据进行编程的所需位密度或用户数据的预期存取频率。
49.在框220处,处理逻辑确定存储器组件的已使用的内存量是否大于至少一个容量阈值。容量阈值可包含已使用的内存量、已填充的内存的百分比或层级等。举例来说,第一容量阈值包含已使用的内存大于或等于25%的可用内存,但小于50%的可用内存。第二容量阈值包含已使用的存储器大于或等于50%的可用内存,但小于75%的可用内存。第三容量阈值包含已使用的存储器大于或等于75%的可用内存。以上阈值作为实例使用,并且可以使用任何阈值。每个容量阈值可与允许处理器逻辑程序处于一或多个操作模式相关联。举例来说,当未达到第一容量阈值时,处理逻辑返回到框210,其中处理逻辑继续对第一类型存储器单元中的第一块进行编程。当达到第一容量阈值时,处理逻辑启用在slc模式和mlc模式下对块进行编程。当达到第二容量阈值时,处理逻辑启用在slc模式、mlc模式和tlc模式下对块进行编程。当达到第三容量阈值时,处理逻辑启用在slc模式、mlc模式、tlc模式和qlc模式下对块进行编程。然后,处理逻辑前进到框230。
50.在框230处,处理逻辑确定对块的存取频率。存取频率可由两个先后发生的存取操
作之间的持续时间、写入操作与读取操作之间的持续时间、时间周期内的存取速率等表示。处理逻辑可使用确定是否存取块的不同方法。在一个实例中,处理逻辑跟踪并维持对存储用户数据的块的读取计数。处理逻辑可通过确定读取计数是否超过一或多个读取阈值或属于一或多个读取范围内来利用读取计数标识存取频率。在另一实例中,处理逻辑可使用存储器组件的字线或位线的错误率来分别确定一或多个邻近字线或位线的存取频率。
51.在实例中,存取频率可包含第一读取计数阈值、第二读取计数阈值和第三读取计数阈值,其中每个读取计数阈值与在后续写入操作期间块将编程在其中的存储器单元的类型相关联。可在特定时间周期期间对每个读取计数阈值进行计数。例如,第一读取计数阈值可包含第一读取计数与第二读取计数之间的值。第二读取计数阈值可包含第二读取计数与第三读取计数之间的值。第三读取计数阈值可包含第三读取计数以上的值。例如,当块的读取计数低于第一读取计数阈值时,可在后续写入操作(或容量阈值所允许的最高层级存储器单元)中使用qlc对所述块上的用户数据进行重新编程。当块的读取计数大于或等于第一读取计数阈值但低于第二读取计数阈值时,可在后续写入操作中使用tlc对所述块上的用户数据进行重新编程。当块的读取计数大于或等于第二读取计数阈值但低于第三读取计数阈值时,可在后续写入操作中使用mlc对所述块上的用户数据进行重新编程。当块的读取计数大于或等于第三读取计数阈值时,可在后续写入操作中将所述块上的用户数据重新编程在slc中。
52.在另一实例中,存取频率可包含第一范围值、第二范围值和第三范围值,以及第四范围值,其中每个范围值与在后续写入操作期间块将编程在其中的存储器单元的类型相关联。第一范围值可在0与第一频率之间,第二范围值可在第一频率与第二频率之间,第三范围值可在第二频率与第三频率之间,并且第三范围值可以是第三频率以上的值。所述范围值中的每一者可与存储器单元的类型相关联。举例来说,第一范围值可与slc相关联,第二范围值可与mlc相关联,第三范围值可与tlc相关联,并且第四范围值可与qlc相关联。
53.在框240处,处理逻辑基于存取频率和容量阈值而将块编程在第二类型存储器单元中。第二类型存储器调用可包含mlc、tlc、qlc和plc中的至少一者。举例来说,当容量阈值为第三容量阈值(例如,已使用的内存大于或等于75%的可用内存)且块的存取频率包含第三范围值(其与tlc相关联)时,则处理逻辑在tlc模式下对所述块进行编程。在另一实例中,当容量阈值为第一容量阈值(例如,已使用的内存大于或等于25%的可用内存,但小于50%的可用内存)且块的存取频率包含第三范围值(其与tlc相关联)时,则处理逻辑在mlc模式下对所述块进行编程。这是因为,尽管对块的存取频率指示在此写入操作期间应在tlc中写入数据,但容量阈值仅允许在slc模式或mlc模式下进行写入。在又一实例中,在块上的用户数据编程在tlc中的情况下,且当容量阈值为第三容量阈值(例如,已使用的内存大于或等于75%的可用内存)且所述块的存取频率包含第一范围值(其与slc相关联)时,则处理逻辑在slc模式下对所述块进行编程。应理解,因为tlc与slc相比具有较高存储容量,所以用户数据可在此写入操作期间编程到多于一个块。
54.在实例中,当将块从每单元较低位的存储器单元重新编程到每单元较高位的存储器单元(例如,slc到qlc、mlc到tlc等)时,处理逻辑可将另一不相关数据位编程到存储器单元中,同时保持先前编程位。新编程位可来自主机系统,且与存储器单元中的先前编程位没有关系。在另一实例中,当将块从每单元较低位的存储器单元重新编程到每单元较高位的
存储器单元时,处理逻辑可将来自两个较低层级存储器单元(例如,两个slc)中的两个不同位的不相关数据组合到具有两个位的新较高层级存储器单元(例如,mlc)。新组合位可彼此没有关系。同一块可重新编程和组合两个存储器单元的位,或不同块可以两个存储器单元的数据进行编程或重新编程。控制器可使用例如地址映射表跟踪哪个数据项涉及存储器单元中的哪个位。
55.图3a是根据本公开一些实施例确定存储器组件的已使用的内存量是否大于至少一个容量阈值的存储器子系统300的说明。如先前论述,存储器子系统可基于存储器组件的充满度启用不同操作模式之间的动态切换。在一些实施例中,存储器子系统300可基于正使用(例如,编程到)存储器组件的多少可用内存而确定是否启用不同操作模式之间的动态切换。
56.关于图3a,第一容量阈值310包含已使用的内存大于或等于25%的可用内存,但小于50%的可用内存。当已使用的内存属于第一容量阈值时,在框315处,存储器子系统305启用mlc模式。因此,在后续写入操作期间,可将用户数据重新编程到slc或mlc中,这取决于对所述用户数据的存取频率。
57.图3b是展示包含已使用的内存大于或等于50%的可用内存但小于75%的可用内存的第二容量阈值340的存储器子系统330的说明。当已使用的内存属于第二容量阈值时,在框345处,存储器子系统335启用tlc模式。因此,在后续写入操作期间,可将用户数据重新编程到slc、mlc或tlc中,这取决于对所述用户数据的存取频率。
58.图3c是展示包含已使用的内存大于或等于75%的可用内存的第三容量阈值370的存储器子系统360的说明。当已使用的内存属于第三容量阈值时,在框375处,存储器子系统365启用qlc模式。因此,在后续写入操作期间,可将用户数据重新编程到slc、mlc、tlc或qlc中,这取决于对所述用户数据的存取频率。
59.图4是基于存取频率确定在后续写入操作期间使用不同存储器单元对哪些块进行编程的存储器子系统400的说明。块可在slc中在第一写入操作期间进行编程。借助于实例,操作模式410为qlc模式,其中用户数据可重新编程到slc、mlc、tlc或qlc中。作为进一步举例,使用预定时间周期期间的读取计数来确定存取频率,其中第一读取计数阈值可为10个读取计数,第二读取计数阈值可为50个读取计数,并且第三读取计数阈值可为100个读取计数。块405a的读取计数为120。因此,块405a的读取计数大于第三读取计数阈值,并且块405a可在后续写入操作期间仍编程在slc中。块405b的读取计数为60。因此,块405b的读取计数大于第二计数阈值但低于第三读取计数阈值,并且块405b可在后续写入操作期间重新编程在mlc中。块405c的读取计数为32。因此,块405c的读取计数大于第一计数阈值但低于第二读取计数阈值,并且块405c可在后续写入操作期间重新编程在tlc中。块405d的读取计数为8。因此,块405d的读取计数低于第一读取计数阈值,并且块405d可在后续写入操作期间重新编程在qlc中。
60.图5说明计算机系统500的实例机器,在所述计算机系统内可执行用于使机器执行本文中所论述的方法中的任何一或多者的指令集。在一些实施例中,计算机系统500可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110),或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的数据重新编程组件113的操作)。在替代实施例中,机器可连接(例如,联网)到lan、内联网、
外联网和/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的容量、在对等(或分布式)网络环境中作为对等机器或在云计算基础架构或环境中作为服务器或客户端机器进行操作。
61.机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。另外,虽然说明了单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行指令的集合(或多个集合)以执行本文中所论述的方法中的任何一或多种。
62.实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(rom)、快闪存储器、例如同步dram(sdram)或rambus dram(rdram)等动态随机存取存储器(dram))、静态存储器506(例如,快闪存储器、静态随机存取存储器(sram)等),以及数据存储系统518,它们经由总线530彼此通信。
63.处理装置502表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502也可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置502被配置成执行指令526以用于执行本文中所论述的操作和步骤。计算机系统500还可包含网络接口装置508以经由网络520通信。
64.数据存储系统518可包含机器可读存储媒体524(也被称为计算机可读媒体),所述机器可读存储媒体上存储有一或多个指令集526或体现本文中所描述的方法或功能中的任何一或多者的软件。指令526还可在其由计算机系统500执行期间完全或至少部分地驻存在主存储器504内和/或处理装置502内,主存储器504和处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518和/或主存储器504可对应于图1的存储器子系统110。
65.在一个实施例中,指令526包含用以实施对应于数据重定位组件(例如,图1的数据重新编程组件113)的功能性的指令。尽管在实例实施例中机器可读存储媒体524说明为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集且使机器执行本公开的方法中的任何一或多者的任何媒体。因此,术语“机器可读存储媒体”应被认为包含但不限于固态存储器、光学媒体和磁性媒体。
66.已依据计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示为数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在这里并且通常被认为是产生所需结果的操作的自洽序列。所述操作为需要对物理量进行物理操控的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电信号或磁信号的形式。有时,主要出于通用的原因,已证明将这些信号称为位、值、元件、符号、字符、术语、数字等是方便的。
67.然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可指将计算机系统的寄存器和存储器内的表示为物理(电子)量的数
据操控和变换为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
68.本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的而专门构造,或其可包含通过存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储于计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、cd-rom和磁性光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
69.本文中呈现的算法和显示本质上不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造更加专用的设备以执行所述方法是方便的。将如下文描述中所阐述的那样呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施本文中所描述的本公开的教示。
70.本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
71.在前述说明书中,本公开的实施例已经参考其具体实例实施例进行描述。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1