CN113874826A - 具有多个裸片和平面的存储器子系统中的多遍数据编程 - Google Patents
具有多个裸片和平面的存储器子系统中的多遍数据编程 Download PDFInfo
- Publication number
- CN113874826A CN113874826A CN202080038486.1A CN202080038486A CN113874826A CN 113874826 A CN113874826 A CN 113874826A CN 202080038486 A CN202080038486 A CN 202080038486A CN 113874826 A CN113874826 A CN 113874826A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- page
- integrated circuit
- memory subsystem
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
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)
- Read Only Memory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种具有形成于集成电路裸片上的存储器单元的存储器子系统。在从主机系统接收到存储数据的命令之后,所述存储器子系统使所述命令排队,以基于确定多个裸片中的每一者可用于执行所述命令的数据编程操作而分配所述裸片中的存储器单元页。基于页分配,所述存储器子系统产生媒体布局的一部分以至少将所述命令中识别的所述数据的逻辑地址映射到所分配页且从所述主机系统接收所述数据。所述存储器子系统使用多遍编程技术将所述数据存储到所述页中,其中原子多遍编程操作可使用一或多个裸片中的单独平面中的至少两个页来对所述数据的至少一部分进行编程。
Description
相关申请案
本申请案主张于2019年6月14日提交的且标题为“具有多个裸片和平面的存储器子系统中的多遍数据编程(Multi-Pass Data Programming in a Memory Sub-Systemhaving Multiple Dies and Planes)”的第62/861,786号美国临时专利申请以及于2020年5月4日提交的且标题为“具有多个裸片和平面的存储器子系统中的多遍数据编程(Multi-Pass Data Programming in a Memory Sub-System having Multiple Dies andPlanes)”的第16/866,326号美国专利申请的优先权,所述专利申请的全部公开内容特此以引用的方式并入本文中。
技术领域
本文所公开的至少一些实施例大体上涉及存储器系统,且更确切地说,但不限于用于具有多个集成电路裸片和存储器单元的平面的存储器子系统中的多遍数据编程的动态数据放置。
背景技术
一种存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
附图说明
在附图的图式中通过举例而非限制示出了实施例,在附图中,相同的参考标号指示类似的元件。
图1示出根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2展示动态数据放置器,其经配置以按减少和/或避免写入数据时并发媒体存取中的冲突的方式确定媒体布局。
图3展示具有动态数据放置的存储器子系统的实例。
图4示出经配置以支持动态数据放置的数据结构的实例。
图5示出动态媒体布局确定的实例。
图6示出跨集成电路裸片分配以用于数据的多遍编程的块集。
图7展示用于跨集成电路裸片对数据进行多遍编程的动态数据放置的方法。
图8为本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的至少一些方面涉及存储器子系统中的动态数据放置,以用于避免在逻辑地址空间中循序写入的并发流之间的冲突。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可提供待存储于存储器子系统处的数据,且可请求待从存储器子系统检索的数据。
媒体布局指定在存储器子系统中从主机系统接收的命令中使用的地址与存储器子系统的存储器媒体中的物理存储器位置之间的映射。固定的媒体布局可导致活动写入流之间的媒体存取冲突、缓冲区寿命延长和/或缓冲要求增加。缓冲区寿命对应于在将数据提交、写入、存储或编程到存储器子系统的存储器媒体之前在存储器子系统中缓冲的数据的寿命。举例来说,存储器子系统连接到的主机系统、在存储器子系统中运行的垃圾收集过程和/或来自主机系统的一或多个写入流(例如,用于在存储器子系统中配置的名称空间的不同区中写入)可产生多个写入命令流。存储器媒体可具有能够并行地写入数据的多个存储器装置。因此,在将数据提交到存储器子系统的存储器媒体中时,至少一些写入命令流可在存储器子系统中并行地执行。然而,一个存储器装置每次可支持一个写入操作。当通过媒体布局映射两个写入命令以在同一存储器装置上操作时,会发生存取冲突。每一冲突会增加对应的缓冲区寿命。媒体布局可通过将逻辑地址映射到存储器子系统的存储器媒体中的随机存储器位置来随机化。随机化的媒体布局可减少冲突。然而,当使用预定媒体布局时,即使当写入流的数目等于或小于可并行独立地执行写入操作的存储器装置的数目时,仍然可能发生冲突。
本公开的至少一些方面通过动态数据放置解决以上和其它不足。举例来说,可推迟对于传入写入命令中使用的逻辑地址的媒体布局的部分的确定,直到可在无冲突的情况下执行写入命令为止。当存储器媒体配置在集成电路裸片(例如,作为NAND存储器单元)上时,媒体布局确定可基于可用于在输入/输出调度时执行写入操作的集成电路裸片的识别。确定媒体布局以使得待并行地执行的命令的逻辑地址被映射到可用于在无冲突的情况下并发/并行操作的不同集成电路裸片。因此,可完全避免来自不同活动流的写入命令之间的媒体存取冲突。当活动写入流的数目小于存储器子系统中集成电路裸片的数目时,在使用动态媒体布局时不会发生媒体存取冲突。一般来说,写入流包含将一组数据作为群组一起进行写入、微调、重写的一组命令。在群组中,数据可循序、随机或伪循序地写入逻辑空间中。优选地,群组中的数据写入到擦除块集中,其中擦除块集中的存储器单元存储用于流的数据,但不存储来自其它流的数据。擦除块集可被擦除以移除所述流的数据,而不擦除其它流的数据。在一些情况下,当不同流的逻辑地址映射到其中不同流的数据无法单独被擦除的同一擦除块集中时,可能会发生冲突。还可通过动态媒体布局技术避免此类冲突。任选地,可跨多个集成电路裸片和存储器单元的平面动态地放置待存储于存储器子系统中的数据,以用于下一原子写入操作的所分配存储容量与待存储于所分配存储容量中的数据的大小之间的最佳或改进的匹配的多遍编程。
图1示出根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置102)、一或多个非易失性存储器装置(例如,存储器装置104),或此类媒体的组合。
存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡,及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM),及各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。图1示出耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与…耦合”通常是指组件之间的连接,所述连接可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等连接。
主机系统120可包含处理器芯片组(例如,处理装置118)和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,控制器116)(例如,NVDIMM控制器),及存储协议控制器(例如,(PeripheralComponent Interconnect Express,PCIe)外围组件互连高速控制器、(Serial AdvancedTechnology Attachment,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)接口来存取组件(例如,存储器装置104)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。图1示出存储器子系统110作为实例。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
主机系统120的处理装置118可例如为微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些情况下,控制器116可称为存储器控制器、存储器管理单元和/或启动器。在一个实例中,控制器116控制通过耦合在主机系统120与存储器子系统110之间的总线进行的通信。一般来说,控制器116可将对存储器装置102、104的所需存取的命令或请求发送到存储器子系统110。控制器116可进一步包含用于与存储器子系统110通信的接口电路系统。接口电路系统可将从存储器子系统110接收到的响应转换成用于主机系统120的信息。
主机系统120的控制器116可与存储器子系统110的控制器115进行通信以执行操作,所述操作例如在存储器装置102、104处读取数据、写入数据或擦除数据以及其它此类操作。在一些情况下,控制器116集成在处理装置118的同一封装内。在其它情况下,控制器116与处理装置118的封装分离。控制器116和/或处理装置118可包含硬件,例如一或多个集成电路(IC)和/或离散组件、缓冲存储器、高速缓冲存储器或其组合。控制器116和/或处理装置118可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或另一合适的处理器。
存储器装置102、104可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。易失性存储器装置(例如,存储器装置102)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器组件的一些实例包含“与非”(NAND)型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器形成对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3D NAND)。
存储器装置104中的每一者可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(SLC)每单元可存储一位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC)每单元可存储多位。在一些实施例中,存储器装置104中的每一者可包含一或多个存储器单元阵列,所述存储器单元例如SLC、MLC、TLC、QLC或此类存储器单元的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分或QLC部分。存储器装置104的存储器单元可分组为页,所述页可指存储器装置的用于存储数据的逻辑单元。对于一些类型的存储器(例如,NAND),页可经分组以形成块。
虽然描述了非易失性存储器装置,例如3D交叉点型和NAND型存储器(例如,2DNAND、3D NAND),但存储器装置104可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器和电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或为简单起见,称为控制器115)可与存储器装置104通信以执行操作,所述操作例如在存储器装置104处读取数据、写入数据或擦除数据和其它这类操作(例如,响应于控制器116在命令总线上调度的命令)。控制器115可包含硬件,例如一或多个集成电路(IC)和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行本文所描述的操作。控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
控制器115可包含处理装置117(处理器),所述处理装置经配置以执行存储于本地存储器119中的指令。在所示出的实例中,控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作,包含处理存储器子系统110与主机系统120之间的通信的各种过程、操作、逻辑流和例程。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已示出为包含控制器115,但在本公开的另一实施例中,存储器子系统110不包含控制器115,且可替代地依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
一般来说,控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换成指令或适当命令以实现对存储器装置104的所需存取。控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、误差检测和纠错码(ECC)操作、加密操作、高速缓存操作和逻辑地址(例如,逻辑块地址(LBA)、名称空间)与物理地址(例如,物理块地址)之间与存储器装置104相关联的地址转换。控制器115还可包含主机接口电路系统,以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收到的命令转换成存取存储器装置104的命令指令,以及将与存储器装置104相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从控制器115接收地址且对地址进行解码以存取存储器装置104。
在一些实施例中,存储器装置104包含结合存储器子系统控制器115操作以对存储器装置104的一或多个存储器单元执行操作的本地媒体控制器105。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置104(例如,对存储器装置104执行媒体管理操作)。在一些实施例中,存储器装置104为受管理存储器装置,其为与同一存储器装置封装内进行媒体管理的本地控制器(例如,本地控制器105)组合的原始存储器装置。受管理存储器装置的实例为受管理NAND(MNAND)装置。
计算系统100包含存储器子系统110中的动态数据放置器113,所述动态数据放置器动态地确定媒体布局以将与逻辑地址相关联的数据放置在媒体单元/存储器装置102到104中。在一些实施例中,存储器子系统110中的控制器115包含动态数据放置器113的至少一部分。在其它实施例中,或在组合中,主机系统120中的控制器116和/或处理装置118包含动态数据放置器113的至少一部分。举例来说,控制器115、控制器116和/或处理装置118可包含实施动态数据放置器113的逻辑电路系统。举例来说,控制器115或主机系统120的处理装置118(处理器)可经配置以执行存储于存储器中的用于执行本文中所描述的动态数据放置器113的操作的指令。在一些实施例中,动态数据放置器113在安置在存储器子系统110中的集成电路芯片中实施。在其它实施例中,动态数据放置器113为主机系统120的操作系统、装置驱动器或应用程序的一部分。
动态数据放置器113可基于媒体单元/存储器装置102到104在存储器子系统110中的输入/输出调度时写入、编程、存储、提交数据的可用性而确定用于在媒体单元/存储器装置102到104中的逻辑地址处放置数据的逻辑地址的一部分的媒体布局。当媒体单元/存储器装置(例如,102或104)可用于提交/编程数据时,调度写入命令以用于在存储器子系统110中执行;并且动态数据放置器113产生用于写入命令的媒体布局的一部分并且映射写入命令中使用的逻辑地址以使用媒体单元/存储器装置(例如,102或104)识别存储器位置。写入命令的执行使得存储器子系统110将与写入命令相关联的数据提交/编程到媒体单元/存储器装置(例如,102或104)中。由于已知媒体单元/存储器装置(例如,102或104)可用于提交/编程数据,而不依赖于其它媒体单元/存储器装置(例如,102或104)的操作,因此在执行写入命令时不存在媒体存取冲突。当存在多个媒体单元/存储器装置(例如,102和104)可用时,在来自多个写入流的命令中使用的逻辑地址可由动态产生的媒体布局的一部分分别映射到多个媒体单元/存储器装置(例如,102和104),使得在执行来自多个写入流的命令时不存在媒体存取冲突。下文描述关于动态数据放置器113的操作的其它细节。
图2展示动态数据放置器113,其经配置以按减少和/或避免写入数据时并发媒体存取中的冲突的方式确定媒体布局130。举例来说,可在图1的计算机系统100中实施动态数据放置器113和媒体布局130。
在图2中,调度多个写入命令123A到123N以供并行执行。经调度以供并行执行的写入命令123A到123N的数目基于可用于并行操作的媒体单元/存储器装置109A到109N(例如,图1所示的存储器装置102和/或104)的数目。写入命令123A到123N可分别来自多个写入流。
写入命令123A到123N使用逻辑块寻址(LBA)地址131…133来指定用于写入操作的位置。
在调度写入命令123A到123N时,动态数据放置器113产生逻辑块寻址(LBA)地址131…133到物理地址141…143的映射。由于确定媒体单元/存储器装置109A到109N可用于并行写入操作,因此动态数据放置器113将LBA地址131…133中的每一者映射到媒体单元/存储器装置109A…109N中的不同一者。因此,用于LBA地址131…133的物理地址141…143对应于不同媒体单元/存储器装置109A…109N中的存储器区域151…153。由于物理地址141…143中没有两者用于同一媒体单元(例如,109A或109N)中的存储器区域,因此在并行执行写入命令123A…123N时不会发生冲突。因此,消除了媒体存取冲突。
一般来说,跨不同媒体单元/存储器装置109A到109N进行的写入操作可能不一致。因此,当媒体单元/存储器装置109A…109N的子集变得可用于下一写入操作时,媒体单元/存储器装置109A…109N的另一子集可能仍然忙于其操作而不可用于下一写入操作。媒体单元/存储器装置109A…109N中的一些可忙于执行例如读取操作、擦除操作的其它操作时,且因此不可用于执行写入操作。一般来说,当为媒体单元/存储器装置109A…109N的可用子集调度一或多个写入命令时,动态数据放置器113产生媒体布局103的一部分,以将所调度写入命令的LBA地址映射到媒体单元/存储器装置109A…109N的可用子集中的存储器区域的物理地址。因此,可在媒体存取冲突的情况下执行所调度命令。
图3展示放置动态数据的存储器子系统的实例。举例来说,可以使用图2的动态数据放置器113在图1的存储器子系统110中实施图3的存储器子系统。然而,图1和图2的技术不限于图3中示出的存储器子系统的实施方案。举例来说,技术可由平面块装置、支持名称空间的装置,或支持分区名称空间的装置(例如,图3中示出的存储器子系统)实施。因此,本文中呈现的公开内容不限于图3的实例。
在图3中,名称空间201配置在存储器子系统110的媒体存储容量上。名称空间201提供逻辑块寻址空间,所述逻辑块寻址空间可由主机系统120使用以指定用于读取或写入操作的存储器位置。名称空间201可以被分配在存储器子系统110的媒体存储容量的一部分或存储器子系统110的整个媒体存储容量上。在一些情况下,可以在存储器子系统110的媒体存储容量的单独、非重叠部分上分配多个名称空间。
在图3中,名称空间201配置有多个区211、213…219。名称空间中的每个区(例如,211)允许对区(例如,211)中的LBA地址进行随机读取存取,并且允许对区(例如,211)中的LBA地址进行循序写入存取,但不允许对区(211)中的随机LBA地址进行随机写入存取。因此,在名称空间201的LBA地址空间中以预定的循序次序执行将数据写入区(例如,211)中。
当配置名称空间201中的区(例如,211)时,(例如,为简单起见)为所述区(例如,211)预定媒体布局是可能的。区(例如,211)中的LBA地址可预映射到存储器子系统110的媒体203中。然而,如上文所论述,此类预定媒体布局可在存在多个并行写入流时引起媒体存取冲突。将从区(例如,211)中的LBA地址到媒体203中的存储器位置的映射随机化可以减少冲突,但无法消除冲突。
优选地,在存储器子系统110中配置动态数据放置器113,以在调度用于执行的写入命令时创建媒体布局130的部分,从而完全消除冲突。
举例来说,存储器子系统110的媒体203可具有多个集成电路裸片205…207。集成电路裸片中的每一者(例如,205)可具有存储器单元(例如,NAND存储器单元)的多个平面221…223。平面中的每一者(例如,221)可具有存储器单元(例如,NAND存储器单元)的多个块231…233。块中的每一者(例如,231)可具有存储器单元(例如,NAND存储器单元)的多个页241…243。每一页(例如,241)中的存储器单元经配置以被编程以在原子操作中一起存储/写入/提交数据;且每一块(例如,231)中的存储器单元经配置以在原子操作中一起擦除数据。
当用于将数据存储在一个区(例如,211)中的写入命令(例如,123A)和用于将数据存储在另一区(例如,213)中的另一写入命令(例如,123N)被调度以用于并行执行时,结果两个集成电路裸片(例如,205和207)可用于并发操作,动态数据放置器113将写入命令(例如,123A和123N)的LBA地址(例如,131和133)映射到位于不同裸片(例如,205和207)中的页中。因此,可避免媒体存取冲突。
图4示出经配置以支持动态数据放置的数据结构的实例。举例来说,可使用图4的数据结构来实施图2或3的媒体布局130。
在图4中,区映射301经配置以提供用于名称空间(例如,201)中的区(例如,211)的媒体布局信息。区映射301可具有多个条目。区映射301中的每一条目识别关于区(例如,211)的信息,例如区(例如,211)的起始LBA地址311、区(例如,211)的块集识别符313、区(例如,211)的光标值315、区(例如,211)的状态317等。
主机系统120在起始于区起始LBA地址311的区(例如,211)中写入数据。主机系统120在LBA空间中循序地在区(例如,211)中写入数据。在一定量的数据已写入到区(例如,211)中之后,由光标值315识别用于写入后续数据的当前起始LBA地址。用于区的每一写入命令将光标值315移动到用于区的下一写入命令的新起始LBA地址。状态317可具有指示区(例如,211)为空、满、隐含打开、明确打开、关闭等的值。
在图4中,逻辑到物理块映射303经配置以促进LBA地址(例如,331)转换为媒体(例如,203)中的物理地址。
逻辑到物理块映射303可具有多个条目。LBA地址(例如,331)可用作或转换成逻辑到物理块映射303中的条目的索引。索引可用于查找LBA地址(例如,331)的条目。逻辑到物理块映射303中的每一条目针对LBA地址(例如,331)识别媒体(例如,203)中的存储器块的物理地址。举例来说,媒体(例如,203)中的存储器块的物理地址可包含裸片识别符333、块识别符335、页映射条目识别符337等。
裸片识别符333识别存储器子系统110的媒体203中的特定集成电路裸片(例如,205或207)。
块识别符335识别使用裸片识别符333识别的集成电路裸片(例如,205或207)内的特定存储器(例如,NAND快闪存储器)块。
页映射条目识别符337识别页映射305中的条目。
页映射305可具有多个条目。页映射305中的每一条目可包含识别存储器单元(例如,NAND存储器单元)块内的存储器单元页的页识别符351。举例来说,页识别符351可包含NAND存储器单元块中的页的字线编号和页的子块编号。此外,页的条目可包含页的编程模式353。举例来说,页可在SLC模式、MLC模式、TLC模式或QLC模式下进行编程。当在SLC模式下配置时,页中的每一存储器单元将存储一位数据。当在MLC模式下配置时,页中的每一存储器单元将存储两位数据。当在TLC模式下配置时,页中的每一存储器单元将存储三位数据。当在QLC模式下配置时,页中的每一存储器单元将存储四位数据。集成电路裸片(例如,205或207)中的不同页可具有不同的数据编程模式。
在图4中,块集表307存储控制区(例如,211)的动态媒体布局的方面的数据。
块集表307可具有多个条目。块集表307中的每一条目识别其中存储区(例如,211)的数据的集成电路裸片(例如,205和207)的数目/计数371。对于用于区(例如,211)的集成电路裸片(例如,205和207)中的每一者,块集表307的条目具有裸片识别符373、块识别符375、页映射条目识别符377等。
裸片识别符373识别存储器子系统110的媒体203中的特定集成电路裸片(例如,205或207),在所述裸片(例如,205或207)上可存储区(例如,211)的后续数据。
块识别符375识别使用裸片识别符373识别的集成电路裸片(例如,205或207)内的存储器(例如,NAND快闪存储器)的特定块(例如,231或233),在所述块(例如,231或233)中可存储区(例如,211)的后续数据。
页映射条目识别符337识别页映射305中的条目,所述条目识别可用以存储区(例如,211)的后续数据的页(例如,241或241)。
举例来说,存储器子系统110接收多个写入命令流。举例来说,多个流中的每一相应流经配置以在一个实施例中循序地在逻辑地址空间中写入数据;并且在另一实施例中,多个流中的流经配置以在一个实施例中伪循序地或随机地在逻辑地址空间中写入数据。每一写入流包含经标注以将一组数据作为群组一起进行写入、微调、重写的一组命令。在群组中,数据可循序、随机或伪循序地在逻辑空间中写入。优选地,群组中的数据写入到擦除块集中,其中擦除块集中的存储器单元存储用于流的数据,但不存储来自其它流的数据。擦除块集可被擦除以移除流的数据,而不擦除其它流的数据。
举例来说,准许写入流中的每一者循序地在存储器子系统110的媒体203上所分配的名称空间(例如,201)中的区(例如,211)中的LBA地址处写入,但禁止在LBA地址空间中无序地写入数据。
存储器子系统110的动态数据放置器113识别存储器子系统中可供用于并发地写入数据的多个媒体单元(例如,109A到109N)。
动态数据放置器113从多个流中选择第一命令以在可用于写入数据的多个媒体单元中并发执行。
响应于第一命令被选择用于在多个媒体单元中并发执行,动态数据放置器113动态地产生和存储媒体布局130的一部分,所述部分从逻辑地址空间中由第一命令识别的逻辑地址映射到多个媒体单元中的存储器单元的物理地址。
存储器子系统110通过根据物理地址将数据存储到存储器单元中来并发执行第一命令。
举例来说,在调度用于执行的第一命令时,可以在存储器子系统110的媒体的存储器单元的子集中执行第二命令。因此,用于执行第二命令的存储器单元的子集不可用于第一命令。在调度第一命令并且确定第一命令中使用的逻辑地址的媒体布局的部分之后,第一命令可以在多个媒体单元中并发执行和/或与存储器子系统110的其余媒体单元中的第二命令并发执行。
举例来说,在识别可用于执行下一命令的多个存储器单元(例如,集成电路裸片)之后,动态数据放置器113可以从块集表307识别可用于存储下一命令的数据的物理地址。物理地址可用于更新针对下一命令中使用的LBA地址的逻辑到物理块映射303中的对应条目。
举例来说,当集成电路裸片(例如,205)自由写入数据时,动态数据放置器113可确定可写入/编程到集成电路裸片(例如,205)中的存储器单元中的区的命令。根据块集表307,动态数据放置器113定位区(例如,205)的条目,定位与集成电路裸片(例如,205)的识别符373相关联的块识别符375和页映射条目识别符377,且使用裸片识别符373、块识别符375和页映射条目识别符377以针对区(例如,211)的命令中使用的LBA地址331更新逻辑到物理块映射303中的条目的对应字段。因此,对于LBA地址331,可以在没有媒体存取冲突的情况下执行区(例如,211)的命令。
图5示出动态媒体布局确定的实例。
在图5的实例中,示出两个并发写入流420和430。流420具有待写入到集成电路裸片441、443、445…的存储器单元中的项421、423、425…429。流430具有待写入到集成电路裸片441、443、445…的存储器单元中的项431、433、435…439。如果流420的项421和流452的项431经分配以写入到同一裸片(例如,441)中,则会发生冲突,这是因为裸片(例如,441)无法用于并发写入流420的项421和流430的项431。因此,动态数据放置器(例如,图1、2或3中的113)将并发流420和430的项421和431分配给不同裸片441和443中的页451和454,如图5中所示出。类似地,来自并发流420和430的项423和433被分配给不同裸片443和441中的页453和42。举例来说,当流420的项425被分配到裸片455中的页455时,并发项435经分配以写入到另一裸片中的页中;并且裸片445中的页457可被分配到不与流420的项425并发写入/编程的流430的项439。因此,避免了冲突。动态媒体布局改变相对于裸片441、443、445…的次序写入的项的次序。举例来说,按一个次序将流420的项421到429写入到裸片441、443、445…中;并且按另一次序将流430的项431到439写入到裸片441、443、445…中,使得流420和430不同时存取同一裸片。在图5中,不同流420和430的数据经标注以写入到不同擦除块中。举例来说,用于存储流420的数据项421的裸片441中的页451和用于存储流430的数据项431的裸片441中的页452在单独的擦除块集中,使得可以在不擦除存储流430的数据的页452的情况下擦除流420的页451,并且使得可以在不擦除存储流420的数据的页451的情况下擦除流430的页452。
在本文公开的至少一些实施例中,动态数据放置器113可跨多个集成电路裸片(例如,205到207)和存储器单元平面(例如,221到223)放置数据以用于对由主机系统120提供的数据进行多遍编程,以存储在存储器子系统110中。跨多个集成电路裸片(例如,205到207)和平面(例如,221到223)对数据进行多遍编程的灵活性允许动态数据放置器113改进用于下一原子写入操作的动态所分配存储容量与待存储在所分配存储容量中的数据的大小之间的匹配。改进的匹配可减少或消除对数据编程操作的补零的需要,减少在存储器子系统中缓冲数据的时间,减少耗损放大和存储空间放大,且改进存储性能。
举例来说,存储器子系统110可具有“与非”(NAND)快闪存储器。原子写入/编程操作将存储器单元的页(例如,241)编程在一起以存储数据。如果待编程/写入到页中的数据的大小小于页的大小,则可将零(或其它值)填补/添加到数据以将整个页(例如,241)一起编程。然而,填补的零(或其它值)会降低页(例如,241)的存储容量的利用率,且可能增加耗损放大和存储空间放大。另一方面,如果存储器子系统110接收比可编程到页(例如,241)中的数据更多的数据,则可在存储器子系统110中缓冲接收到的数据的一部分以用于下一原子写入操作。然而,在存储器中缓冲过量数据以等待下一操作可增加待在存储器子系统110中缓冲数据的时间和量,且因此增加在电力故障事件期间用于为存储器子系统110的易失性缓冲存储器(例如,119)供电,直到缓冲存储器(例如,119)中的数据可被刷新到非易失性存储器中的电力故障保持电路的容量需求。
原子写入操作可在NAND装置中以各种方式实施。使用单遍编程技术,NAND装置中的原子写入操作可将数据编程/存储到单平面页、双平面页、四平面页或多平面页中。使用多遍编程技术,NAND装置中的原子写入操作可在单层级单元(SLC)模式中将数据编程/存储到页中、在多层级单元(MLC)模式中将数据编程/存储到页中、在三层级单元(TLC)模式中将数据编程/存储到页中或在四层级单元(QLC)模式中将数据编程/存储到页中。在原子写入操作中编程的页可在不同模式中具有不同大小。举例来说,使用多遍编程方法,SLC页可具有64千字节(KB)的大小,MLC或TLC页可具有128KB的大小,且QLC页可具有64KB的大小。
当不同编程模式的不同写入流的数据页在NAND装置中交错时,在NAND装置的不同集成电路裸片(例如,205到207)上的NAND存储器单元的块(例如,221到223)当中,下一可用页的大小可变化。
当NAND装置支持多遍编程技术时,给定量的数据可针对不同遍以存储器页的编程模式和位置的不同组合进行编程。举例来说,当存储器子系统110从主机系统接收192KB的数据时,NAND装置可经配置以分别使用三个集成电路裸片中的三个单平面页上的三个第一遍SLC编程对数据进行编程,其中集成电路裸片中的每一者执行64KB数据的第一遍SLC编程的原子操作。替代地,NAND装置可经配置以在一个集成电路裸片中的单平面页上使用第一遍SLC编程且在同一集成电路裸片中或另一集成电路裸片中的另一单平面页上使用第二遍TLC或MLC编程来对数据进行编程。
使用各种编程选项,动态数据放置器113可基于集成电路裸片205到207执行数据编程操作的可用性以及可用于执行数据编程操作的集成电路裸片(例如,205)中的下一可用块(例如,241)的数据编程模式(例如,353)来动态地确定集成电路裸片205到207中的数据放置。
举例来说,当存储器子系统110从主机系统接收存储给定大小的主机数据量的一或多个命令时,动态数据放置器113(例如,在本地存储器119中)使一或多个命令排队且确定媒体布局130的一部分以用于集成电路裸片205到207中的数据的物理放置。当集成电路裸片(例如,205)可用于执行数据编程操作时,动态数据放置器113分配(待从主机系统120检索)的主机数据的一部分以用于集成电路裸片(例如,205)中的数据编程操作。分配到集成电路裸片(例如,205)的数据量基于可用块(例如,231)中的页(例如,241)的数据编程模式(353)。重复将数据分配到下一可用集成电路裸片的此类操作,直到全部主机数据被分配到一组集成电路裸片(例如,205和207)为止,其中集成电路裸片(例如,205和207)中的每一者用于使用一个原子数据写入操作存储主机数据的一部分。从多个集成电路裸片(例如,205和207)分配的存储容量(例如,页)可经组合以用于多遍编程。响应于完成物理存储分配,存储器子系统110可分配缓冲空间以用于传送主机数据;且根据动态确定的物理存储分配而将不同数据部分传送到不同电路裸片(例如,205和207)中,使得集成电路裸片(例如,205和207)可执行相应数据编程操作以存储其数据部分。
图6示出跨集成电路裸片205到207分配以用于数据的多遍编程的块集281。
在图6中,集成电路裸片A 205具有平面221到223和块(例如,231到233);且集成电路裸片B 207具有平面261到263和块(例如,271到273)。
块集281经分配以用于流。流的数据存储在块集281中;且其它流的数据不存储在块集281中。因此,当擦除块集281时,仅擦除了流的数据。可通过擦除块集281来擦除流的所有数据。
可使用图4中示出的块集表307中的条目识别块集281。一般来说,可在媒体203中的集成电路裸片(例如,205、207…)的子集上分配块集281。对于块中的每一者(例如,271),块集表307中的条目使用裸片识别符(例如,373)识别裸片(例如,207)、使用块识别符(例如,375)识别裸片(例如,207)内的块(例如,271)且使用页映射条目识别符377识别块中可用于存储数据的下一页。页映射条目识别符373识别页映射305中的条目。页映射305中的条目展示块(例如,271)内的页的页识别符351和编程模式353。
在块集281中,动态数据放置器113可分配来自一个裸片(例如,205)的可用于对数据进行编程的一个页,且从另一裸片(例如,207)重复分配。动态数据放置器113可分配来自不同裸片的用于多遍编程的单独页,且选择裸片用于分配以减少或消除填补,直到通过一个通信一起从主机系统120传送到存储器子系统的全部主机数据被分配为止。
图7展示用于跨集成电路裸片对数据进行多遍编程的动态数据放置的方法。图7的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,图7的方法至少部分地由图1、2或3的动态数据放置器113执行。虽然以特定顺序或次序来展示,但是除非另外指定,否则可修改过程的次序。因此,示出的实施例应仅作为实例理解,且示出的过程可以不同次序执行,且一些过程可并行地执行。另外,可以在各种实施例中省略一个或多个过程。因此,并非每一实施例中都需要所有过程。其它过程流程是可能的。
在框401处,存储器子系统110从主机系统120接收识别待存储在存储器子系统110中的数据的大小的命令。
在框403处,命令在具有形成于多个集成电路裸片205到207上的存储器单元的存储器子系统110中排队。
在框405处,基于确定多个裸片(例如,205和207)中的每一者可用于执行命令的数据编程操作,动态数据放置器113分配多个裸片205到207中的多个裸片(例如,205和207)中的存储器单元页。
在框407处,动态数据放置器113产生媒体布局130的一部分以至少将命令中识别的数据的逻辑地址映射到所分配页。
在框409处,在产生媒体布局的部分之后和/或在分配页之后,存储器子系统110响应于命令而从主机系统接收数据。
在框411处,存储器子系统110使用多遍编程技术将数据存储到页中,其中原子多遍编程操作可使用多个集成电路裸片中的单独裸片中或单独平面(例如,单个裸片中的两个平面)中的至少两个页来对数据的至少一部分进行编程。举例来说,基于每平面页映射和裸片可用性,从主机系统接收到的数据可以灵活方式映射,以用于跨单个或双裸片中的单个平面、双平面或4平面编程。单裸片映射可适应流的最小大小。
举例来说,数据的部分可在原子操作中编程到至少两个页中。指示裸片中的每一者执行一个写入操作。不指示裸片中的每一者针对命令执行重复写入操作。
至少两个页可包含第一集成电路裸片中的第一页和第二集成电路裸片中的第二页。多遍编程操作可包含对第一页进行第一遍编程和对第二页进行第二遍编程。第一遍可在第一模式中进行编程,且第二遍在第二模式中进行编程。举例来说,第一模式和第二模式是以下各者中的不同者:单层级单元(SLC)模式;多层级单元(MLC)模式;三层级单元(TLC)模式;及四层级单元(QLC)模式。
举例来说,可执行页的分配以最小化使用多遍编程技术进行编程的页的存储容量与命令中识别的数据的大小之间的不匹配。
任选地,可从经配置以一起擦除的块集中分配页。
举例来说,动态数据放置器113可存储页映射305,所述页映射具有各自识别块中的页和用于页的存储器单元编程模式(例如,353)的条目。动态数据放置器113可基于页映射305中识别的存储器单元编程模式(例如,353)而分配页。编程模式(例如,353)指示可用页的大小;且动态数据放置器113分配页以使所分配的存储容量与待从主机系统120接收的数据的大小匹配。
在一些实施方案中,处理装置118与存储器子系统110之间的通信信道包含计算机网络,例如局域网、无线局域网、无线个域网、蜂窝式通信网络、宽带高速始终连接的无线通信连接(例如,当前或下一代移动网络链路);并且处理装置118和存储器子系统可被配置成使用与NVMe协议中的那些数据存储管理和使用命令类似的数据存储管理和使用命令彼此通信。
存储器子系统110通常可具有非易失性存储媒体。非易失性存储媒体的实例包含形成于集成电路中的存储器单元和涂布在硬磁盘上的磁性材料。非易失性存储媒体可在不消耗电力的情况下维持存储在其中的数据/信息。存储器单元可使用各种存储器/存储装置技术来实施,所述存储器/存储装置技术例如为与非逻辑门、或非逻辑门、相变存储器(PCM)、磁性随机存取存储器(MRAM)、电阻式随机存取存储器、交叉点存储装置及存储器装置(例如,3D XPoint存储器)。交叉点存储器装置使用无晶体管存储器元件,所述无晶体管存储器元件中的每一者具有一起堆叠成列的存储器单元和选择器。存储器元件列经由两个垂直线材层连接,其中一层处于存储器元件列上方,且另一层处于存储器元件列下方。可个别地在两层中的每一者上的一个线材的交叉点处选择每一存储器元件。交叉点存储器装置是快速且非易失性的,且可用作用于处理和存储的通用存储器池。
存储器子系统(例如,110)的控制器(例如,115)可响应于来自处理装置118的通信而运行固件以执行操作。一般来说,固件是一类提供对工程化计算装置的控制、监测和数据操纵的计算机程序。
涉及控制器115的操作的一些实施例可使用由例如控制器115的固件的控制器115执行的计算机指令来实施。在一些情况下,硬件电路可用于实施功能中的至少一些。固件可初始地存储在非易失性存储媒体或另一非易失性装置中,并且加载到易失性DRAM和/或处理器内高速缓冲存储器中以供控制器115执行。
非暂时性计算机存储媒体可用于存储存储器子系统(例如,110)的固件的指令。当指令由控制器115和/或处理装置117执行时,所述指令使得控制器115和/或处理装置117执行上文所论述的方法。
图8示出计算机系统500的实例机器,可在所述实例机器内执行用于使所述机器执行本文中所论述的方法中的任何一或多种的一组指令。在一些实施例中,计算机系统500可对应于包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)的主机系统(例如,图1的主机系统120)或可用于执行动态数据放置器113的操作(例如,执行指令以执行与参考图1到7所描述的动态数据放置器113对应的操作)。在替代实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中进行操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(循序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述机器单独地或共同地执行一组(或多组)指令以执行本文中所论述的方法中的任何一或多种。
实例计算机系统500包含经由总线530(其可包含多个总线)彼此通信的处理装置502、主存储器504(例如,只读存储器(ROM)、快闪存储器、例如同步DRAM(SDRAM)或RambusDRAM(RDRAM)的动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等),以及数据存储系统518。
处理装置502表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502还可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置502经配置以执行指令526以用于执行本文中所论述的操作和步骤。计算机系统500可进一步包含网络接口装置508以通过网络520进行通信。
数据存储系统518可包含机器可读存储媒体524(也称为计算机可读媒体),所述机器可读存储媒体上存储有一或多组指令526或体现本文中所描述的方法或功能中的任何一或多种的软件。指令526还可在其由计算机系统500执行期间完全或至少部分地驻存在主存储器504内和/或处理装置502内,主存储器504和处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518和/或主存储器504可与图1的存储器子系统110对应。
在一个实施例中,指令526包含用以实施与动态数据放置器113(例如,参考图1到7所描述的动态数据放置器113)对应的功能的指令。尽管在实例实施例中将机器可读存储媒体524展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的一组指令且使机器执行本公开的方法中的任何一或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
已就计算机存储器内的数据位的操作的算法和符号表示而言呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。本文的算法通常是指产生所需结果的操作的自洽序列。操作为要求对物理量进行物理操控的那些操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。主要出于常见用法的原因,已经证明将这些信号称为位、值、元素、符号、字符、术语、编号等有时是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅为应用于这些量的方便标签。本公开可涉及将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文的操作的设备。此设备可出于预期目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM和磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中所呈现的算法和显示本质上不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以执行方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,不参考任何特定编程语言描述本公开。将了解,可使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可被提供为计算机程序产品或软件,其可以包含其上存储有可以用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
在此描述中,为简化描述,各种功能和操作可被描述为由计算机指令执行或引起。然而,所属领域的技术人员将认识到,此类表达意指功能源自由一或多个控制器或处理器(例如,微处理器)执行计算机指令。替代地或组合地,功能和操作可使用具有或不具有软件指令的专用电路系统实施,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)来实施。可使用并无软件指令或结合软件指令的硬接线电路系统实施实施例。因此,技术不限于硬件电路系统和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
在前述说明书中,已参考本公开的特定实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如以下权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本发明进行各种修改。因此,说明书和图式应在说明性意义上而非限制性意义上看待。
Claims (20)
1.一种方法,其包括:
在存储器子系统中从主机系统接收识别待存储于所述存储器子系统中的数据的大小的命令;
使所述命令在具有形成于多个集成电路裸片上的存储器单元的所述存储器子系统中排队;
基于确定所述多个集成电路裸片中的多个裸片中的每一者能够用于执行所述命令的数据编程操作而分配所述多个裸片中的存储器单元页;
产生媒体布局的一部分以至少将所述命令中识别的所述数据的逻辑地址映射到所分配页;
在所述产生所述媒体布局的所述部分之后,响应于所述命令而在所述存储器子系统中从所述主机系统接收所述数据;及
使用多遍编程技术将所述数据存储到所述页中,其中原子多遍编程操作经配置以使用所述多个集成电路裸片中的单独裸片或一个裸片中的单独平面中的至少两个页来对所述数据的至少一部分进行编程。
2.根据权利要求1所述的方法,其中在原子操作中将所述数据的所述部分编程到所述至少两个页中。
3.根据权利要求2所述的方法,其中所述至少两个页中的第一页在第一集成电路裸片中;且所述至少两个页中的第二页在第二集成电路裸片中。
4.根据权利要求3所述的方法,其中所述多遍编程操作包含对所述第一页进行第一遍编程和对所述第二页进行第二遍编程。
5.根据权利要求4所述的方法,其中所述第一遍在第一模式中进行编程;且所述第二遍在第二模式中进行编程。
6.根据权利要求5所述的方法,其中所述第一模式和所述第二模式为以下各者中的不同者:
单层级单元(SLC)模式;
多层级单元(MLC)模式;
三层级单元(TLC)模式;及
四层级单元(QLC)模式。
7.根据权利要求6所述的方法,其中所述分配包含最小化使用所述多遍编程技术进行编程的所述页的存储容量与所述命令中识别的所述数据的所述大小之间的不匹配。
8.根据权利要求7所述的方法,其中从经配置以一起被擦除的块集中分配所述页。
9.根据权利要求8所述的方法,其中所述分配基于针对所述块集中的下一可用页识别的存储器单元的编程模式。
10.一种存储指令的非暂时性计算机存储媒体,所述指令在存储器子系统中执行时使得所述存储器子系统执行方法,所述方法包括:
在所述存储器子系统中从主机系统接收识别待存储于所述存储器子系统中的数据的大小的命令;
使所述命令在具有形成于多个集成电路裸片上的存储器单元的所述存储器子系统中排队;
基于确定所述多个集成电路裸片中的多个裸片中的每一者能够用于执行所述命令的数据编程操作而分配所述多个裸片中的存储器单元页;
产生媒体布局的一部分以至少将所述命令中识别的所述数据的逻辑地址映射到所分配页;
在所述产生所述媒体布局的所述部分之后,响应于所述命令而在所述存储器子系统中从所述主机系统接收所述数据;及
使用多遍编程技术将所述数据存储到所述页中,其中原子多遍编程操作经配置以使用所述多个集成电路裸片中的单独裸片中或一个裸片中的单独平面中的至少两个页来对所述数据的至少一部分进行编程。
11.根据权利要求10所述的非暂时性计算机存储媒体,其中所述数据通过一个通信一起从所述主机系统接收;且所述至少两个页包含第一集成电路裸片中的第一页和第二集成电路裸片中的第二页。
12.根据权利要求11所述的非暂时性计算机存储媒体,其中所述多遍编程操作包含对所述第一页进行第一遍编程和对所述第二页进行第二遍编程。
13.根据权利要求12所述的非暂时性计算机存储媒体,其中所述第一遍在第一模式中进行编程;且所述第二遍在第二模式中进行编程;且所述第一模式和所述第二模式为以下各者中的不同者:
每一存储器单元中存储一位的模式;
每一存储器单元中存储两位的模式;
每一存储器单元中存储三位的模式;及
每一存储器单元中存储四位的模式。
14.根据权利要求13所述的非暂时性计算机存储媒体,其中所述分配包含最小化使用所述多遍编程技术进行编程的所述页的存储容量与所述命令中识别的所述数据的所述大小之间的不匹配。
15.根据权利要求13所述的非暂时性计算机存储媒体,其中所述方法进一步包括:
存储页映射,所述页映射具有各自识别块中的页和用于所述页的存储器单元编程模式的条目;
其中所述分配基于在所述页映射中识别的所述存储器单元编程模式。
16.一种存储器子系统,其包括:
多个集成电路裸片,其具有存储器单元;
至少一个处理装置,其经配置以:
从主机系统接收识别待存储于所述存储器子系统中的数据的大小的命令;
使所述命令排队;
基于确定所述多个集成电路裸片中的多个裸片中的每一者能够用于执行所述命令的数据编程操作而分配所述多个裸片中的存储器单元页;
产生媒体布局的一部分以至少将所述命令中识别的所述数据的逻辑地址映射到所分配页;
在所述页已经被分配用于所述数据之后,响应于所述命令而在所述存储器子系统中从所述主机系统接收所述数据;及
使用多遍编程技术将所述数据存储到所述页中,其中原子多遍编程操作经配置以使用所述多个集成电路裸片中的一或多个裸片中的单独平面中的至少两个页来对所述数据的至少一部分进行编程。
17.根据权利要求16所述的存储器子系统,其中所述至少一个处理装置经进一步配置以存储页映射,所述页映射具有各自识别块中的页和用于所述页的存储器单元编程模式的条目;
其中所述分配基于在所述页映射中识别的所述存储器单元编程模式。
18.根据权利要求17所述的存储器子系统,其中所述多遍编程操作包含:
在第一模式中对第一集成电路裸片中的第一页进行第一遍编程;及
在第二模式中对第二集成电路裸片中的第二页进行第二遍编程。
19.根据权利要求18所述的存储器子系统,其中所述第一模式和所述第二模式为以下各者中的不同者:
每一存储器单元存储一位的模式;
每一存储器单元存储两位的模式;
每一存储器单元存储三位的模式;及
每一存储器单元存储四位的模式。
20.根据权利要求17所述的存储器子系统,其中所述页经分配以最小化使用所述多遍编程技术进行编程的所述页的存储容量与所述命令中识别的所述数据的所述大小之间的不匹配。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962861786P | 2019-06-14 | 2019-06-14 | |
US62/861,786 | 2019-06-14 | ||
US16/866,326 US11269552B2 (en) | 2019-06-14 | 2020-05-04 | Multi-pass data programming in a memory sub-system having multiple dies and planes |
US16/866,326 | 2020-05-04 | ||
PCT/US2020/032348 WO2020251711A1 (en) | 2019-06-14 | 2020-05-11 | Multi-pass data programming in a memory sub-system having multiple dies and planes |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113874826A true CN113874826A (zh) | 2021-12-31 |
Family
ID=73744647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080038486.1A Withdrawn CN113874826A (zh) | 2019-06-14 | 2020-05-11 | 具有多个裸片和平面的存储器子系统中的多遍数据编程 |
Country Status (3)
Country | Link |
---|---|
US (3) | US11269552B2 (zh) |
CN (1) | CN113874826A (zh) |
WO (1) | WO2020251711A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI822516B (zh) * | 2022-12-14 | 2023-11-11 | 慧榮科技股份有限公司 | 執行主機寫入命令的方法及電腦程式產品及裝置 |
TWI822517B (zh) * | 2022-12-14 | 2023-11-11 | 慧榮科技股份有限公司 | 執行主機寫入命令的方法及電腦程式產品及裝置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11269552B2 (en) | 2019-06-14 | 2022-03-08 | Micron Technology, Inc. | Multi-pass data programming in a memory sub-system having multiple dies and planes |
KR20210001508A (ko) * | 2019-06-28 | 2021-01-06 | 에스케이하이닉스 주식회사 | 메모리 시스템의 MLC(Multi Level Cell)영역에 데이터를 안전하게 저장하기 위한 장치 및 그 방법 |
TW202246985A (zh) * | 2021-05-25 | 2022-12-01 | 韓商愛思開海力士有限公司 | 主機裝置、儲存裝置以及電子裝置 |
US11868655B2 (en) | 2021-08-25 | 2024-01-09 | Micron Technology, Inc. | Memory performance using memory access command queues in memory devices |
US12061819B2 (en) * | 2021-12-06 | 2024-08-13 | Micron Technology, Inc. | Managing single-level and multi-level programming operations |
US11853203B1 (en) * | 2022-06-23 | 2023-12-26 | Western Digital Technologies, Inc. | Systems and methods with variable size super blocks in zoned namespace devices |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102549672A (zh) * | 2009-07-08 | 2012-07-04 | 桑迪士克技术有限公司 | 用于非易失性存储器的优化页编程顺序 |
US20130262745A1 (en) * | 2012-03-30 | 2013-10-03 | Gary Lin | Memory System with Command Queue Reordering |
US20140019673A1 (en) * | 2010-02-25 | 2014-01-16 | Apple Inc. | Dynamically allocating number of bits per cell for memory locations of a non-volatile memory |
CN103902403A (zh) * | 2012-12-27 | 2014-07-02 | Lsi公司 | 经由冗余阵列的非易失性存储器编程故障恢复 |
CN104903842A (zh) * | 2012-12-31 | 2015-09-09 | 桑迪士克科技股份有限公司 | 用于在非易失性存储器中的异步裸芯操作的方法和系统 |
CN105009094A (zh) * | 2013-03-05 | 2015-10-28 | 西部数据技术公司 | 在固态驱动器中利用空闲空间计数来重建两阶加电映射的方法、设备和系统 |
US20160266934A1 (en) * | 2015-03-11 | 2016-09-15 | Sandisk Technologies Inc. | Task queues |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8561055B2 (en) | 2009-10-15 | 2013-10-15 | Blackberry Limited | Method, system and apparatus for management of push content |
EP2339795B1 (en) | 2009-12-07 | 2013-08-14 | STMicroelectronics (Research & Development) Limited | Inter-chip communication interface for a multi-chip package |
US20160019161A1 (en) | 2013-03-12 | 2016-01-21 | Hewlett-Packard Development Company, L.P. | Programmable address mapping and memory access operations |
US9342443B2 (en) | 2013-03-15 | 2016-05-17 | Micron Technology, Inc. | Systems and methods for memory system management based on thermal information of a memory system |
US20160147444A1 (en) * | 2014-11-23 | 2016-05-26 | Apple Inc. | Parallel data storage in groups of memory blocks having similar performance characteristics |
KR102693311B1 (ko) * | 2018-12-20 | 2024-08-09 | 삼성전자주식회사 | 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 |
US10811109B2 (en) * | 2018-12-27 | 2020-10-20 | Sandisk Technologies Llc | Multi-pass programming process for memory device which omits verify test in first program pass |
US11269552B2 (en) | 2019-06-14 | 2022-03-08 | Micron Technology, Inc. | Multi-pass data programming in a memory sub-system having multiple dies and planes |
-
2020
- 2020-05-04 US US16/866,326 patent/US11269552B2/en active Active
- 2020-05-11 WO PCT/US2020/032348 patent/WO2020251711A1/en active Application Filing
- 2020-05-11 CN CN202080038486.1A patent/CN113874826A/zh not_active Withdrawn
-
2022
- 2022-02-18 US US17/675,888 patent/US12050809B2/en active Active
-
2024
- 2024-07-25 US US18/784,802 patent/US20240377991A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102549672A (zh) * | 2009-07-08 | 2012-07-04 | 桑迪士克技术有限公司 | 用于非易失性存储器的优化页编程顺序 |
US20140019673A1 (en) * | 2010-02-25 | 2014-01-16 | Apple Inc. | Dynamically allocating number of bits per cell for memory locations of a non-volatile memory |
US20130262745A1 (en) * | 2012-03-30 | 2013-10-03 | Gary Lin | Memory System with Command Queue Reordering |
CN103902403A (zh) * | 2012-12-27 | 2014-07-02 | Lsi公司 | 经由冗余阵列的非易失性存储器编程故障恢复 |
CN104903842A (zh) * | 2012-12-31 | 2015-09-09 | 桑迪士克科技股份有限公司 | 用于在非易失性存储器中的异步裸芯操作的方法和系统 |
CN105009094A (zh) * | 2013-03-05 | 2015-10-28 | 西部数据技术公司 | 在固态驱动器中利用空闲空间计数来重建两阶加电映射的方法、设备和系统 |
US20160266934A1 (en) * | 2015-03-11 | 2016-09-15 | Sandisk Technologies Inc. | Task queues |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI822516B (zh) * | 2022-12-14 | 2023-11-11 | 慧榮科技股份有限公司 | 執行主機寫入命令的方法及電腦程式產品及裝置 |
TWI822517B (zh) * | 2022-12-14 | 2023-11-11 | 慧榮科技股份有限公司 | 執行主機寫入命令的方法及電腦程式產品及裝置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020251711A1 (en) | 2020-12-17 |
US11269552B2 (en) | 2022-03-08 |
US12050809B2 (en) | 2024-07-30 |
US20220171574A1 (en) | 2022-06-02 |
US20240377991A1 (en) | 2024-11-14 |
US20200393994A1 (en) | 2020-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113795820B (zh) | 主机系统与存储器子系统之间的输入/输出大小控制 | |
CN113785278B (zh) | 用于避免并发写入流之间冲突的动态数据放置 | |
CN113906383B (zh) | 主机系统和存储器子系统之间的定时数据传送 | |
US12050809B2 (en) | Multi-pass data programming in a memory sub-system having multiple dies and planes | |
US11640354B2 (en) | Logical-to-physical mapping of data groups with data locality | |
US11164652B2 (en) | Two-layer code with low parity cost for memory sub-systems | |
US11782841B2 (en) | Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system | |
US20240036768A1 (en) | Partial Execution of a Write Command from a Host System | |
CN113590023A (zh) | 在多平面存储器装置的单独平面上存储区名称空间中的区 | |
CN113126900B (zh) | 用于存储器子系统的媒体管理的单独核心 | |
CN113391763B (zh) | 存储器裸片资源管理 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20211231 |
|
WW01 | Invention patent application withdrawn after publication |