存储器子系统处的数据块切换
文献发布时间:2023-06-19 11:45:49
技术领域
本公开大体上涉及存储器子系统,且更具体来说,涉及存储器子系统处的数据块切换。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置及易失性存储器装置。大体来说,主机系统可利用存储器子系统以在存储器装置处存储数据并从存储器装置检索数据。
发明内容
本公开的一方面提供一种方法,其中所述方法包括:接收待写入到存储器子系统的主机数据;将所述主机数据的第一部分写入到所述存储器子系统的第一可用数据块,其中所述第一可用数据块与第一写入模式相关联;接收所述存储器子系统的第二可用数据块可用以写入的指示,其中所述第二可用数据块与第二写入模式相关联;由处理装置基于接收到的指示确定将所述主机数据的第二部分写入到所述第二可用数据块;及响应于确定将所述主机数据的所述第二部分写入到所述第二可用数据块,在以所述第一写入模式封闭所述第一可用数据块之前,以所述第二写入模式将所述主机数据的所述第二部分写入到所述第二可用数据块。
本公开的另一方面提供一种系统,其中所述系统包括:存储器装置;及处理装置,其以操作方式与所述存储器装置耦合以进行以下操作:接收对所述存储器装置的数据块执行垃圾收集操作的指示;识别所述存储器装置的第一可用数据块及所述存储器装置的第二可用数据块,其中所述第一可用数据块对应于主机游标,且其中所述第二可用数据块对应于垃圾收集游标;基于所述第一可用数据块的状况确定将经受所述垃圾收集操作的所述数据块的数据写入到所述第一可用数据块还是所述第二可用数据块;及响应于确定将所述数据块的所述数据写入到所述第一可用数据块,存储所述数据块的所述数据以封闭所述第一可用数据块。
本公开的另一方面提供一种存储有指令的有形非暂时性计算机可读媒体,所述指令在被执行时使处理装置进行以下操作:接收待写入于存储器子系统处的主机数据;将所述主机数据的第一部分写入到所述存储器子系统的第一可用数据块,其中所述第一可用数据块与第一写入模式相关联;接收所述存储器子系统的第二可用数据块可用以写入的指示,其中所述第二可用数据块与第二写入模式相关联;基于接收到的指示确定将所述主机数据的第二部分写入到所述第二可用数据块;及响应于确定将所述主机数据的所述第二部分写入到所述第二可用数据块,以所述第二写入模式将所述主机数据的所述第二部分写入到所述第二可用数据块。
附图说明
根据下文给出的详细描述及本公开的各种实施方案的附图,将更充分地理解本公开。
图1说明根据本公开的实施例的包含存储器子系统的实例计算系统。
图2说明根据本公开的一些实施例的用以在实例存储器装置处执行数据块切换以用于写入主机数据的实例方法的流程图。
图3A说明根据本公开的一些实施例的与第一写入模式及第二写入模式相关联的实例存储器装置。
图3B说明根据本公开的一些实施例的从将主机数据写入到与实例存储器装置的第一写入模式相关联的第一开放块到与第二写入模式相关联的第二可用数据块的切换。
图3C说明根据本公开的一些实施例的以实例存储器装置的第二写入模式将主机数据写入到第二可用数据块。
图4说明根据本公开的一些实施例的用以执行数据块切换以用于垃圾收集的实例方法的流程图。
图5A说明根据本公开的一些实施例的用于执行垃圾收集操作的实例存储器装置。
图5B说明根据本公开的一些实施例的执行数据块切换以进行实例存储器装置的垃圾收集操作。
图5C说明根据本公开的一些实施例的对实例存储器装置执行垃圾收集操作。
图6为本公开的实施方案可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面涉及存储器子系统处的数据块切换。存储器子系统可为存储装置、存储器模块,或存储装置与存储器模块的混合。结合图1描述存储装置及存储器模块的实例。大体来说,主机系统可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可提供待存储在存储器子系统处的数据且可请求从存储器子系统检索数据。
存储器装置可为非易失性存储器装置。非易失性存储器装置为一或多个裸片的封装。每个裸片可由一或多个平面组成。平面可分组成逻辑单元(LUN)。对于一些类型的非易失性存储器装置(例如,NAND装置),每个平面由一组物理块组成。每个块由一组页组成。每个页由一组存储器单元(“单元”)组成。单元为存储信息的电子电路。下文中,数据块指代用以存储数据的存储器装置的单元,且可包含存储器单元群组、字线群组、字线或个别存储器单元。
数据操作可由存储器子系统执行。数据操作可为主机起始的操作。例如,主机系统可在存储器子系统上起始数据操作(例如,写入、读取、擦除等)。主机系统可将存取请求(例如,写入命令、读取命令)发送到存储器子系统,以便将数据存储在存储器子系统处的存储器装置上,且从存储器子系统上的存储器装置读取数据。如由主机请求所指定,待读取或写入的数据在下文中被称作“主机数据”。主机请求可包含主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、名字空间),其为主机系统与主机数据关联的位置。逻辑地址信息(例如,LBA、名字空间)可为主机数据的元数据的部分。元数据还可包含错误处理数据(例如,ECC码字、奇偶校验码)、数据版本(例如,用于区分写入的数据的使用期限)、有效位图(其中LBA或逻辑传输单元包含有效数据)等。
存储器子系统可执行关于包含在存储器子系统中的一或多个存储器装置的各种操作。例如,可在一或多个存储器装置处执行读取操作、编程(即,写入)操作及擦除操作。存储器装置可包含一或多个数据块,所述数据块可包含一或多个存储器单元阵列,例如各自用于存储单个数据位的单层级单元(SLC)或各自存储多个数据位的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)或四层级单元(QLC)(在本文中统称为XLC)。每种存储器单元类型可具有不同数据密度,所述数据密度对应于每存储器单元可存储的数据量(例如,数据位)。
存储器装置可配置成包含具有SLC的一或多个数据块(被称为SLC数据块)及具有XLC的一或多个数据块(被称为XLC数据块)。存储器装置还可配置成使得存储器装置的第一部分布建为高速缓冲存储器,而存储器装置的第二部分布建为用户空间。在一些常规存储器子系统中,高速缓冲存储器可包含一或多个SLC存储器单元(例如,块),且用户空间可包含一或多个XLC存储器单元。存储器单元可包含存储器单元群组、字线群组、字线或个别存储器单元。例如,存储器单元可包含一或多个块。高速缓冲存储器也可布建成包含一或多个XLC存储器单元,使得高速缓冲存储器包含SLC存储器单元及XLC存储器单元两者。响应于确定待在存储器装置处布建额外用户空间,高速缓冲存储器的XLC存储器单元可重新配置为用户空间存储器单元。
主机游标可用于管理写入操作的性能。游标可通过确定在何处、何时及以何序列将主机数据写入到存储器装置来管理存储器操作的执行。在一些实例中,游标可为到存储器装置的可用数据块的指针。主机游标可指示存储器装置的可用以存储传入主机数据的可用数据块(也称为开放块或开放数据块)。在一些实例中,可用数据块可为数据块的所有存储器单元都可用以存储主机数据的空数据块,或数据被写入到数据块的一或多个存储器单元而数据块的一或多个其它存储器单元可用以存储主机数据的部分空数据块。在常规存储器子系统中,单个主机游标可用于管理写入操作的性能。高速缓冲存储器可包含一或多个可用数据块,且主机游标可指示高速缓冲存储器的用以以SLC模式或XLC模式存储传入主机数据的可用数据块。响应于确定高速缓冲存储器不包含可用数据块,主机游标可指示用户空间的用以以XLC模式存储传入主机数据的可用数据块。后续传入主机数据可被写入到可用用户空间数据块,如由主机游标所指示,直到用户空间不包含可用数据块为止。
在存储器子系统的操作期间,空闲时间周期可在未接收到待存储于存储器子系统处的传入主机数据时发生。在一些情况下,在空闲时间周期的起始处,无可用于传入主机数据的高速缓冲存储器数据块,且一或多个用户空间数据块可用于传入主机数据。因而,在空闲时间周期的起始处,主机游标可将用户空间数据块指示为可用数据块。由主机游标指示的可用用户空间数据块可为部分空数据块。可在空闲时间周期期间在存储器子系统处执行例如垃圾收集操作的媒体管理操作,以使高速缓冲存储器及/或用户空间的一或多个数据块可用于后续传入主机数据。在空闲时间周期完成之后,可接收待存储于存储器子系统处的传入主机数据。响应于主机游标在空闲时间周期的起始处将部分可用数据块指示为可用用户数据块,代替以SLC模式存储于新可用高速缓冲存储器数据块处,可以XLC模式将传入主机数据存储于部分可用数据块处。
常规存储器子系统并不提供用于在用户空间数据块未封闭(即,可用)时将主机数据以SLC模式写入到可用高速缓冲存储器数据块的机制。结果,传入主机数据被以XLC模式写入到可用用户空间数据块以封闭可用用户空间数据块,即使一或多个高速缓冲存储器数据块可用也如此。当数据被写入到数据块的每个存储器单元时,数据块可被视为封闭的。写入性能显著降低,这是由于代替以SLC模式将主机数据写入到可用高速缓冲存储器数据块,主机数据被以XLC模式写入到可用用户空间数据块以封闭用户空间数据块,且XLC模式时延大于SLC模式时延。
本公开的方面通过提供由第一主机游标指示的第一可用数据块及由第二主机游标指示的第二可用数据块来解决上文及其它不足。通过提供第二主机游标以指示第二可用数据块,提供了即使以XLC模式开放的用户空间数据块未封闭,仍用于将主机数据以SLC模式写入到高速缓冲存储器的机制。第一主机游标及第二主机游标可充当存储器子系统的高速缓冲存储器及用户空间两者中的可用数据块的记录。使用第一主机游标及第二主机游标,存储器子系统可识别并选择用以写入传入主机数据的可用数据块,以降低写入操作时延。
本公开的优势包含但不限于改进了存储器子系统的性能,这是因为总写入操作时延可被降低。例如,可将主机数据以SLC模式写入到高速缓冲存储器数据块而非以XLC模式写入到用户空间数据块,即使用户空间数据块尚未封闭(即,包含一或多个可用XLC)也如此。因此,通过提供至少第二主机游标以指示第二可用数据块,相比仅由第一主机游标指示一个可用数据块时的情况,可成功地以较少时间执行写入操作。因而,由于可以较少时间执行写入操作,因此存储器子系统的总写入时延可被降低。写入时延降低可使得存储器子系统能够满足服务质量(QoS)要求,所述要求指定当在存储器子系统处执行写入操作时的各种操作要求。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或此类媒体的组合。
存储器子系统110可为存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡,及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM),及各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(IoT)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器及处理装置的此类计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与……耦合”大体上指代装置之间的连接,其可以是间接通信连接或直接通信连接(例如,没有介入装置),无论是有线还是无线的,包含例如电连接、光学连接、磁性连接等的连接。
主机系统120可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,NVDIMM控制器),及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110,例如以将数据写入到存储器子系统110及从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)、开放NAND快闪接口(ONFI)、双数据速率(DDR)、低功率双数据速率(LPDDR),或任何其它接口。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口以存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。图1说明存储器子系统110作为实例。大体来说,主机系统120可经由相同通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器及就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)及三维NAND(3DNAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)及四层级单元(QLC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或此类的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可分组成页,页可指存储器装置的用以存储数据的逻辑单元。对于一些类型的存储器(例如,NAND),页可被分组以形成块。
尽管描述了非易失性存储器装置,例如3D交叉点非易失性存储器单元阵列及NAND型快闪存储器(例如,2D NAND、3D NAND),但存储器装置130可是基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器,及电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(为简单起见,或为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据,以及其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑以执行本文中所描述的操作的数字电路。存储器子系统控制器115可为微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子系统控制器115可包含配置成执行存储在本地存储器119中的指令的处理器117(例如,处理装置)。在所说明的实例中,存储器子系统控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程及例程。
在一些实施例中,本地存储器119可包含存储器寄存器,其存储存储器指针、所提取数据等。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可替代地依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
大体来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将命令或操作转换成指令或适当命令以实现对存储器装置130的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作,及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含主机接口电路以经由物理主机接口与主机系统120通信。主机接口电路可将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路或组件。在一些实施例中,存储器子系统110可包含高速缓冲存储器或缓冲器(例如,DRAM)及地址电路(例如,行解码器及列解码器),所述地址电路可从存储器子系统控制器115接收地址并对地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130为受管理存储器装置,其为与本地控制器(例如,本地控制器135)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例为受管理NAND(MNAND)装置。
存储器子系统110包含可用于维持存储器子系统110的两个或更多个主机游标的游标组件113。在一些实施例中,控制器115包含游标组件113的至少一部分。例如,控制器115可包含处理器117(处理装置),其被配置成执行存储在本地存储器119中的指令以用于执行本文中所描述的操作。在一些实施例中,游标组件113为主机系统120、应用程序或操作系统的部分。
游标组件113可维持各自指示存储器子系统的待写入主机数据的可用数据块的两个或更多个主机游标。第一主机游标可识别存储器子系统的第一部分的可用数据块,其中第一部分对应于第一写入模式。第二主机游标可识别存储器子系统的第二部分的可用数据块,其中第二部分对应于第二写入模式。第一写入模式可对应于存储器子系统的每存储器单元的第一位数,且第二写入模式可对应于存储器子系统的每存储器单元的第二位数。在一些实施方案中,每存储器单元的第一位数大于每存储器单元的第二位数。在其它实施方案中,第二位数大于第一位数。基于存储器子系统的第一部分的数据块的可用性,游标组件可确定在与第一主机游标相关联的数据块或与第二主机游标相关联的数据块处写入主机数据。本文中描述关于游标组件113的操作的其它细节。
图2为根据本公开的一些实施例的用以在实例存储器装置处执行数据块切换以用于写入主机数据的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的游标组件113执行。尽管以特定序列或次序示出,但除非另外指定,否则可修改所述过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实施例中,可省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程是可能的。
在操作210处,处理装置接收待写入到存储器子系统的主机数据。存储器子系统可包含一或多个存储器装置,其中每个存储器装置可包含一或多个数据块。每个数据块可包含一或多个存储器单元阵列,例如SLC或XLC。每种存储器单元类型可具有不同数据密度,所述数据密度对应于每存储器单元可存储的数据量(例如,数据位)。
存储器子系统可配置成使得以各种模式使用存储器子系统的一或多个部分。例如,存储器子系统的第一部分可用作高速缓冲存储器且存储器子系统的第二部分可暴露为用户空间。高速缓冲存储器可为存储器子系统的在主机数据被移动以在用户空间处进行长期存储之前临时存储主机数据的部分。在一些实施例中,可以SLC模式来写入数据到高速缓冲存储器的一或多个块的写入。在其它或类似实施例中,可以XLC模式来写入数据到用户空间的一或多个块的写入。如果无可用以以SLC模式存储传入主机数据的高速缓冲存储器块,则可以XLC模式将主机数据写入到用户空间,而非首先在高速缓冲存储器处以SLC模式写入数据且接着在用户空间处以XLC模式进行重写。
在操作220处,处理装置将主机数据的第一部分写入到存储器子系统的第一可用数据块,其中第一可用数据块与第一写入模式相关联。第一可用数据块可为空数据块(即,数据块的所有存储器单元都可用于主机数据)或部分空数据块(即,数据被写入到数据块的一或多个存储器单元且数据块的一或多个其它存储器单元可用于主机数据)。在一些实例中,第一可用数据块可包含在存储器子系统的第一部分(即,用户空间)中,其中第一部分对应于至少第一写入模式。第一写入模式可对应于第一可用数据块的每存储器单元编程第一位数。例如,第一可用数据块可包含一或多个QLC。结果,第一写入模式可为QLC写入模式。第一开放块可由第一主机游标识别为可用数据块。
在操作230处,处理装置接收存储器子系统的第二可用数据块可用于主机数据的指示,其中第二可用数据块与第二写入模式相关联。在一些实例中,第二可用数据块可包含在存储器子系统的第二部分(即,高速缓冲存储器)中,其中第二部分对应于至少第二写入模式。第二写入模式可对应于第二可用数据块的每存储器单元的第二位数。例如,第二可用数据块可包含一或多个SLC。结果,第二写入模式可为SLC写入模式。第二可用数据块可由第二主机游标识别为可用数据块。
第二可用数据块可用的指示可是由于在存储器子系统的第二部分的一或多个数据块上完成了垃圾收集操作而被传输到处理装置。
在操作240处,处理装置基于接收到的指示确定将主机数据的第二部分写入到第二可用数据块。在一些实例中,在接收到指示时,第一可用数据块可是可用于主机数据的第二部分的(即,可包含一或多个XLC)。处理装置可在第一可用数据块被封闭之前确定将主机数据的第二部分写入到第二可用数据块。例如,可在数据被写入到第一可用数据的所有存储器单元之前将数据写入到第二可用数据块。处理装置可确定将主机数据的第二部分写入到第二可用数据块,因为相比第一可用数据块,第二可用数据块与每存储器单元的较小位数相关联,且因此,与将主机数据的第二部分写入到第二可用数据块相关联的写入操作时延小于与将主机数据的第二部分写入到第一可用数据块相关联的写入操作时延。
在操作250处,响应于确定将主机数据的第二部分写入到第二可用数据块,处理装置在以第一写入模式封闭第一开放块之前以第二写入模式将主机数据的第二部分写入到第二可用数据块。例如,可在主机数据被写入到第一开放块的每个存储器单元之前将主机数据的第二部分写入到第二可用数据块。
图3A说明根据本公开的一些实施例的实例存储器装置300。在一些实施例中,存储器装置300可包含第一部分310及第二部分320。第一部分310及第二部分320可为单个存储器装置300的部分。在其它实施例中,第一部分310可为存储器子系统的第一存储器装置且第二部分320可为第二存储器装置。
第一部分310及第二部分320可各自包含至少一个数据块。每个数据块可包含一或多个存储器单元阵列,例如SLC或XLC。在一些实施例中,数据块可为封闭数据块330或可用数据块(即,空数据块340或部分空数据块350)中的至少一个。封闭数据块330可为所有存储器单元都填充有主机数据或垃圾收集数据中的至少一个的数据块。主机数据可为待写入到存储器装置300的从主机系统(例如,图1的主机系统120)接收的数据。垃圾收集数据可包含先前被写入到存储器装置300的数据块且在垃圾收集过程期间已被移动到另一数据块的数据。封闭数据块330可完全填充有数据,且因此不可用于待写入的数据。如先前所论述,可用数据块可包含可用以存储新主机数据的至少一个存储器单元。
第一部分310的一或多个数据块可与第一写入模式相关联。第一写入模式可对应于每个数据块的每存储器单元的第一位数。在一些实施例中,第一写入模式可对应于每存储器单元两个或更多个位(即,XLC)。第二部分320的一或多个数据块可与第二写入模式相关联。第二写入模式可对应于每个数据块的每存储器单元的第二位数。在一些实施例中,第二写入模式可对应于每存储器单元一个位(即,SLC)。在一些实施例中,第一写入模式的每存储器单元的第一位数可大于第二写入模式的每存储器单元的第二位数。
第一部分310可对应于第一主机游标360,且第二部分320可对应于第二主机游标370。第一主机游标360可指示第一部分310的可用以写入传入主机数据的数据块,而第二主机游标370可指示第二部分320的可用以写入传入主机数据的数据块。
图3B说明根据本公开的一些实施例的从将主机数据写入到与实例存储器装置300的第一写入模式相关联的第一可用数据块380到与第二写入模式相关联的第二可用数据块390的切换。可由存储器装置300从主机系统接收主机数据,其中主机数据待写入到存储器装置300的第一可用数据块380。在主机数据被写入到第一可用数据块时,第一可用数据块380的存储器单元可被填充有主机数据,使得第一可用数据块380变得封闭。如果第一可用数据块380变得封闭,则第一主机游标360可经更新以指示第一写入模式部分的用以写入主机数据的另一可用数据块。
可接收到存储器装置300的第二可用数据块390可用于存储主机数据的指示。在一些实施例中,第二可用数据块390可为第二部分320的可用数据块。基于接收到的指示,处理装置可确定将主机数据的第二部分写入到存储器装置300的由第一主机游标360指示的第一可用数据块380,还是存储器装置300的由第二主机游标370指示的第二可用数据块390。在一些实例中,由第一主机游标360指示的第一可用数据块380可为部分空数据块。代替将主机数据的第二部分写入到部分空的第一可用数据块380,处理装置可在封闭第一可用数据块380之前确定将主机数据的第二部分写入到第二可用数据块390。处理装置可确定将主机数据的第二部分写入到第二可用数据块390,因为相比第一可用数据块380,第二可用数据块390与每存储器单元的较小位数相关联,且因此,与将主机数据的第二部分写入到第二可用数据块390相关联的写入操作时延小于与将主机数据的第二部分写入到第一可用数据块380相关联的写入操作时延。
图3C说明根据本公开的一些实施例的以实例存储器装置300的第二写入模式将主机数据写入到第二可用数据块390。处理装置可确定以第二写入模式将主机数据的第二部分写入到第二可用数据块390。
响应于确定将主机数据的第二部分写入到第二可用数据块390,可将主机数据的第二部分写入到第二可用数据块390。第二可用数据块390可由第二主机游标370指示。在主机数据被写入到第二可用数据块390时,第二可用数据块390的存储器单元可被填充有主机数据,使得第二可用数据块390变得封闭。如果第二可用数据块390变得封闭,则第二主机游标370可经更新以指示第二部分320的用以写入主机数据的另一可用数据块。主机数据可被写入到第二部分320的可用数据块,直到第二部分320的所有数据块都被封闭或未接收到传入主机数据为止。
图4为根据本公开的一些实施例的用以执行数据块切换以用于垃圾收集的实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1的游标组件113执行。尽管以特定序列或次序示出,但除非另外指定,否则可修改所述过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实施例中,可省略一或多个过程。因此,在每一实施例中,并非需要全部过程。其它过程流程是可能的。
在操作410处,处理装置接收对存储器装置的数据块执行垃圾收集操作的指示。存储器装置可包含一或多个数据块,其中每个数据块包含一或多个存储器单元阵列,例如SLC或XLC。在一些实例中,存储器装置可配置成使得一或多个部分被保留用于各种目的。存储器装置的第一部分可布建为高速缓冲存储器,其中一或多个高速缓冲存储器数据块配置成以SLC模式进行写入。存储器装置的第二部分可配置为用户空间,其中一或多个用户空间数据块配置成以XLC模式进行写入。
垃圾收集操作可包含识别存储器装置的第一部分中包含不需要数据的数据块,并清除所述数据块以维持最佳写入速度。垃圾收集操作可进一步包含将所需数据写入到存储器装置的第二部分的数据块并从第一部分去除所写入数据。
在操作420处,处理装置识别存储器装置的对应于主机游标的第一可用数据块及存储器装置的对应于垃圾收集游标的第二可用数据块。主机游标可指示存储器装置的包含可用于写入主机数据的存储器单元的可用数据块。垃圾收集游标可指示存储器装置的被保留用于存储垃圾收集数据(即,已被写入且从先前经受垃圾收集操作的块去除的数据)的可用数据块。
在操作430处,处理装置基于第一可用数据块的状况确定将经受垃圾收集操作的数据块的数据写入到第一可用数据块还是第二可用数据块。在一些实例中,第一可用数据块的状况可为第一可用数据块是否为部分空数据块。处理装置可确定将来自经受垃圾收集操作的数据块的数据写入到部分空的第一可用数据块,以封闭第一可用数据块,而非将数据块的数据写入到第二可用数据块。
在操作440处,响应于确定将数据块的数据写入到第一可用数据块,处理装置将数据块的数据存储到第一可用数据块以封闭第一可用数据块。处理装置可基于有利于在写入到不同可用数据块之前封闭部分空块的存储器策略来确定将数据写入到第一可用数据块。一旦第一可用数据块被封闭,不再可将数据写入到第一可用数据块,因为第一可用数据块的所有存储器单元都被填充。处理装置可确定将来自经受垃圾收集操作的其它数据块的数据写入到存储器装置的对应于垃圾收集游标的第二可用数据块。
图5A说明根据本公开的一些实施例的用于执行垃圾收集操作的实例存储器装置500。在一些实施例中,存储器装置500可包含第一部分510及第二部分520。第一部分510及第二部分520可为单个存储器装置500的部分。在其它实施例中,第一部分510可为第一存储器装置且第二部分520可为第二存储器装置。
第一部分510及第二部分520可各自包含至少一个数据块。每个数据块可包含一或多个存储器单元阵列,包含SLC或XLC中的至少一个。第一部分510的一或多个数据块可与第一写入模式相关联。第一写入模式可对应于每个数据块的每存储器单元的第一位数。在一些实施例中,第一写入模式可对应于每存储器单元一或多个位(即,SLC)。第二部分520的一或多个数据块可与第二写入模式相关联。在一些实施例中,第二写入模式可对应于每个数据块的每存储器单元的第二位数。
第一部分510及第二部分520可对应于主机游标530。主机游标530可指示第一部分510或第二部分520的待存储传入主机数据的可用数据块。第一部分510及第二部分520可进一步与垃圾收集游标570对应。垃圾收集游标570可指示存储器装置500的被保留用于存储垃圾收集数据的可用数据块。
可接收对存储器装置500的数据块执行垃圾收集操作的请求。第一数据块580可被选择用于垃圾收集。第一数据块580可包含第一部分510及/或第二部分520的封闭数据块。在一些实例中,可基于第一数据块580的不需要主机数据(即,无效数据)的量来选择第一数据块580。第一数据块580可被选择用于垃圾收集,以从第一数据块580去除不需要的数据以允许存储后续主机数据。
响应于接收到执行垃圾收集操作的请求及选择第一数据块580,可识别第一垃圾收集块及第二垃圾收集块。第一垃圾收集块可为由主机游标530指示的第二数据块560,且第二垃圾收集块可为由垃圾收集游标570指示的任何可用数据块。可基于可用数据块560的状况确定将第一数据块580的垃圾收集数据写入到可用数据块560,还是由垃圾收集游标570指示的可用数据块。在一些实例中,可用数据块560的状况可为可用数据块560是否为部分空数据块。处理装置可确定将第一数据块580的垃圾收集数据写入到部分空的第二可用数据块560,以封闭第二数据块560,而非将第一数据块580的垃圾收集数据写入到由垃圾收集游标570指示的数据块。
图5B说明根据本公开的一些实施例的对实例存储器装置执行垃圾收集操作。如上文所论述,处理装置可确定将第一数据块580的垃圾收集数据写入到部分空的第二数据块560,以封闭第二数据块560,而非将垃圾收集数据写入到由垃圾收集游标570指示的可用块。响应于确定将垃圾收集数据写入到第二数据块560,可将第一数据块580的垃圾收集数据(即,所需数据)写入到第二数据块560以便填充第二数据块560。可从第一数据块580去除写入到第一数据块580的不需要及所需数据。响应于封闭第二数据块560,主机游标530可经更新以指示存储器装置500的第二部分520的另一可用数据块。
图5C说明根据本公开的一些实施例的对实例存储器装置执行垃圾收集操作。在一些实例中,第三数据块590可被选择用于垃圾收集。由主机游标530指示的可用数据块及由垃圾收集游标570指示的可用数据块可被识别为用以存储第三数据块590的垃圾收集数据的候选数据块。处理装置可基于由主机游标530指示的可用数据块的状况确定将第三数据块590的垃圾收集数据写入到由主机游标530还是垃圾收集游标570指示的可用数据块。在一些实例中,所述状况可为由主机游标530指示的可用数据块是否为部分空块。响应于确定由主机游标530指示的可用数据块并非部分空块(即,为空块),处理装置可确定将第三数据块590的垃圾收集数据写入到由垃圾收集游标570指示的可用数据块。在其它或类似实例中,所述状况可进一步为主机游标530是否指示第二部分520中的块。响应于进一步确定主机游标530并不指示第二部分520中的块(即,指示高速缓冲存储器中待以SLC模式写入的块),处理装置可确定将第三数据块590的垃圾收集数据写入到由垃圾收集游标570指示的可用数据块。
响应于确定将垃圾收集数据写入到由垃圾收集游标570指示的可用数据块,可将第三数据块590的垃圾收集数据写入到由垃圾收集游标570指示的可用数据块。可从第三数据块590去除第三数据块590的不需要数据及所需经写入数据。
图6说明计算机系统600的实例机器,在所述实例机器内可执行用于使机器执行本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的游标组件113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网及/或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、开关或桥接器,或能够(顺序的或以其它方式)执行指定由所述机器采取的动作的指令集的任何机器。此外,虽然说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合个别地或共同地执行一(或多个)指令集以执行本文中所论述的方法中的任何一或多种。
实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等),及数据存储系统618,它们经由总线630彼此通信。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602配置成执行指令626以用于执行本文中所论述的操作及步骤。计算机系统600可进一步包含网络接口驱动器608以在网络620上通信。
数据存储系统618可包含机器可读存储媒体624(也称为计算机可读媒体),其上存储有一或多个指令集626或体现本文中所描述的方法或功能中的任何一或多种的软件。指令626还可在其由计算机系统600执行期间完全或至少部分地驻存在主存储器604内及/或处理装置602内,主存储器604及处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618及/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含用以实施对应于游标组件(例如,图1的游标组件113)的功能性的指令。虽然在实例实施例中将机器可读存储媒体624示出为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集,且使机器执行本公开的方法中的任何一种或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体及磁性媒体。
已关于计算机存储器内的数据位的操作的算法及符号表示而呈现先前详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给本领域的其它技术人员的方式。算法在此处且大体上被认为是产生所要结果的操作的自洽序列。操作是需要对物理量进行物理操纵的操作。这些量通常但未必呈能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。有时,主要出于通用的原因,已证明将这些信号称为位、值、元素、符号、字符、项、数目等是方便的。
然而,应牢记,所有这些及类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可指操纵及变换计算机系统的寄存器及存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作及过程。
本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的磁盘(包含软盘、光盘、CD-ROM及磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
本文中呈现的算法及显示器并非在本质上与任何特定计算机或设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述般呈现多种这些系统的结构。另外,并不参考任何特定编程语言来描述本公开。应了解,可使用多种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。应显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神及范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
- 存储器子系统处的数据块切换
- 在存储器子系统处的编程操作的中断