CN113795820A - 主机系统与存储器子系统之间的输入/输出大小控制 - Google Patents
主机系统与存储器子系统之间的输入/输出大小控制 Download PDFInfo
- Publication number
- CN113795820A CN113795820A CN202080033538.6A CN202080033538A CN113795820A CN 113795820 A CN113795820 A CN 113795820A CN 202080033538 A CN202080033538 A CN 202080033538A CN 113795820 A CN113795820 A CN 113795820A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory subsystem
- input
- output size
- media
- 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.)
- Pending
Links
Images
Classifications
-
- 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
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
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)
- Microelectronics & Electronic Packaging (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
一种存储器子系统经配置以基于存储器子系统的媒体物理布局而动态地确定写入命令的输入/输出大小。所述存储器子系统可响应于选择写入命令以供在所述存储器子系统的媒体单元中执行而动态地识别媒体布局的一部分,所述部分从由所述写入命令在逻辑地址空间中识别的逻辑地址映射到所述媒体单元中的存储器单元的物理地址。基于所述媒体布局,识别下一写入命令的输入/输出大小,且将其在响应中发射到所述主机系统。所述主机系统产生所述下一写入命令,且基于基于在所述响应中识别的所述输入/输出大小而配置待经由所述下一写入命令写入的数据量。
Description
相关申请案
本申请案主张2019年5月6日申请且标题为“主机系统与存储器子系统之间的输入/输出大小控制(Input/Output Size Control between a Host System and a MemorySub-System)”的临时美国专利申请案第62/844,067号和2020年5月1日申请且标题为“主机系统与存储器子系统之间的输入/输出大小控制(Input/Output Size Control between aHost System and a Memory Sub-System)”的美国专利申请案序列号16/865,247的优先权,所述申请案的全部公开内容特此以引用的方式并入本文中。
技术领域
本文所公开的至少一些实施例大体上涉及存储器系统,且更明确地说,涉及但不限于主机系统与存储器子系统之间的输入/输出大小控制。
背景技术
存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
附图说明
实施例是借助于实例而非限制在附图的图中来说明的,在附图中相似参考指示类似元件。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2展示控制主机系统与存储器子系统之间的输入/输出的粒度的输入/输出大小管理器。
图3展示具有动态数据放置和输入/输出大小控制的存储器子系统的实例。
图4说明经配置以支持动态数据放置和输入/输出大小控制的数据结构的实例。
图5展示输入/输出大小控制的方法。
图6是其中可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本公开的至少一些方面涉及用于主机系统将数据写入到存储器子系统中的输入/输出大小控制。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含存储数据的一或多个组件(例如存储器装置)的存储器子系统。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。
传统上,主机系统可将写入命令发送到存储器子系统以按固定的预定大小或粒度写入数据。举例来说,待经由来自主机系统的每一写入命令存储到存储器子系统中的数据用于相同、固定、预定量/大小的数据。然而,在一些情形中,固定输入/输出大小可导致相当大的性能损耗、在存储器子系统中缓冲的数据的寿命增加,和/或在存储器子系统中使用替代的、效率较差的数据编程方法。
本公开的至少一些方面经由在主机系统与存储器子系统之间实施的输入/输出大小控制机制来解决以上和其它不足。举例来说,基于用于将数据放置在存储器子系统的媒体中的媒体布局的当前状态,输入/输出大小控制器可确定用于下一写入命令的输入/输出的优选大小。优选大小等于存储器子系统可在单一原子操作中编程到媒体单元中的数据量。举例来说,存储器子系统可具有NAND(“与非”)闪存存储器。使用单遍编程技术,NAND装置中的原子写入操作可将数据编程/存储到单平面页、双平面页、四平面页或多平面页中。使用多遍编程技术,NAND装置中的原子写入操作可将数据编程/存储到SLC(单层级单元)模式中的页、MLC(多层级单元)模式中的页、TLC(三层级单元)模式中的页或QLC(四层级单元)模式中的页中。在原子写入操作中编程的页可在不同模式中具有不同大小。举例来说,使用多通编程方法,SLC页可具有64千字节(KB)的大小,TLC页可具有128KB的大小,且QLC页可具有64KB的大小。当不同编程序模式的不同写入流的数据页在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控制器)和存储协议控制器(例如,外围组件互连高速(Peripheral Component Interconnect Express,PCIe)控制器、串行高级技术附件(Serial Advanced Technology 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)操作、加密操作、高速缓存操作,以及与存储器装置104相关联的逻辑地址(例如,逻辑块地址(LBA)、命名空间)与物理地址(例如,物理块地址)之间的地址转译。控制器115可进一步包含主机接口电路系统,以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成存取存储器装置104的命令指令,以及将与存储器装置104相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路或组件。在一些实施例中,存储器子系统110可以包含高速缓存器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),其可从控制器115接收地址且对地址进行解码以存取存储器装置104。
在一些实施例中,存储器装置104包含本地媒体控制器105,其结合存储器子系统控制器115操作以在存储器装置104的一或多个存储器单元上执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置104(例如,对存储器装置104执行媒体管理操作)。在一些实施例中,存储器装置104是受管理存储器装置,其为与本地控制器(例如,本地控制器105)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
计算系统100包含在存储器子系统110中的输入/输出大小管理器113,其确定用于以原子方式存储/编程/提交/写入数据到存储器子系统110的媒体中的优选输入/输出大小。在一些实施例中,存储器子系统110中的控制器115包含输入/输出大小管理器113的至少一部分。在其它实施例中或组合地,主机系统120中的控制器116和/或处理装置118包含输入/输出大小管理器113的至少一部分。举例来说,控制器115、控制器116和/或处理装置118可包含实施输入/输出大小管理器113的逻辑电路系统。举例来说,主机系统120的控制器115或处理装置118(处理器)可经配置以执行存储于存储器中的用于执行本文中所描述的输入/输出大小管理器113的操作的指令。在一些实施例中,输入/输出大小管理器113实施于安置于存储器子系统110中的集成电路芯片中。在其它实施例中,输入/输出大小管理器113是主机系统120的操作系统、装置驱动程序或应用程序的部分。
输入/输出大小管理器113可从媒体单元/存储器装置102到104中的映射逻辑地址的媒体物理布局确定来自主机系统的下一写入命令的优选大小。举例来说,基于下一页将在SLC模式、MLC模式、TLC模式还是QLC模式中编程,输入/输出大小管理器113可确定优选大小为64KB或128KB。一般来说,可存在适用于原子写入操作的页大小的不均匀性的许多起因。所公开的用以解决不均匀性的技术不限于可用于原子写入操作的存储器页的不均匀性的特定起因。输入/输出大小管理器113可响应于完成的命令而将优选大小提供到主机系统120。作为响应,主机系统120调整发射到存储器子系统110的下一写入命令的大小。下文描述关于输入/输出大小管理器113的操作的其它细节。
图2展示控制主机系统120与存储器子系统110之间的输入/输出的粒度的输入/输出大小管理器113。举例来说,图2的输入/输出大小控制的技术可实施于图1的计算机系统100中。
在图2中,主机系统120发送命令121、123...以将数据存储到存储器子系统110的媒体203中。命令(例如,121或123)包含待写入到媒体203中的数据的大小(例如,141或143)和用于将数据存储在媒体203中的逻辑地址(例如,142或144)。
存储器系统110具有媒体布局130,其指定在存储器子系统110中从主机系统120接收的命令(123)中使用的地址(例如,142和144)与存储器子系统的存储器媒体203中的物理存储器位置之间的映射。
在一些实施方案中,响应于来自主机系统120的写入命令而动态地产生媒体布局130。举例来说,媒体203可具有能够并行地写入数据的多个媒体单元109A到109N(例如,图1中说明的存储器装置102和/或104)。来自主机系统120的写入命令的并行流中的至少一些可在将日期提交到存储器子系统110的存储器媒体203中时在存储器子系统110中并行地执行。然而,一个媒体单元可一次支持一个写入操作。因此,如果两个写入命令由媒体布局130映射以在相同媒体单元(例如,109A或109N)上操作,则会发生存取冲突。每一冲突增加了在数据可写入到媒体203中之前在存储器子系统中缓冲数据的时间。为了避免冲突,当确定媒体单元(例如,109A和109N)可用于写入命令的执行时,可动态地确定媒体布局130。
举例来说,可推迟针对传入写入命令(例如,121)中使用的逻辑地址(例如,142)的媒体布局的部分的确定,直到可在无冲突的情况下执行写入命令(例如,121)为止。当存储器媒体203配置于集成电路裸片(例如,作为NAND存储器单元)上时,媒体布局确定可基于可用于在输入/输出调度时执行写入操作的集成电路裸片的识别。确定媒体布局130,使得待并行执行的命令的逻辑地址映射到可用于同时/并行操作而无冲突的不同集成电路裸片。因此,可完全避免来自不同活动流的写入命令之间的媒体存取冲突。
一般来说,写入流包含将数据集一起作为群组进行写入、微调、重写的命令集合。在所述群组中,数据可循序、随机或伪循序地在逻辑空间中写入。优选地,群组中的数据写入到擦除块集合中,其中擦除块集合中的存储器单元存储所述流的数据,但不存储来自其它流的数据。可擦除所述擦除块集合以移除所述流的数据,而不擦除其它流的数据。在一些情况下,当不同流的逻辑地址映射到同一擦除块集合中时,不同流的数据不能单独擦除,可能会发生冲突。还可通过动态媒体布局技术避免此类冲突。
不同写入流可经配置以在不同模式中在媒体203中存储数据。举例来说,一个写入流可在SLC模式或MLC模式中在媒体203中的存储器单元中存储数据;且另一写入流可在TLC模式或QLC模式中在媒体203中的存储器单元中存储数据。结果,主机系统120可能不能够预测用于配置写入命令的数据的优选大小或粒度。
存储器子系统110具有经配置以确定写入命令的数据的优选输入/输出大小或粒度的输入/输出大小管理器113。输入/输出大小管理器113经配置以经由从存储器子系统110发射到主机系统120的响应(例如,143或145)将优选大小传达到主机系统120。
举例来说,在命令121的执行/处理之后,将响应131从存储器子系统110发射到主机系统120。响应131经配置以包含用于下一命令123的优选大小143。在接收到响应131之后,主机系统120可配置下一命令123以具有优选大小143。在命令123的执行/处理之后,输入/输出大小管理器113可在对命令123的从存储器子系统110发射到主机系统120的响应133中提供用于下一命令的优选大小145。
在一些实施方案中,当存储器子系统110中接收到的命令(例如,121)具有不同于从媒体布局130确定的优选大小(例如,143)的输入/输出大小(例如,141)时,输入/输出大小管理器113可产生对指示命令(例如,121)的输入/输出大小中的错误的命令(例如,121)的响应(例如,131),且提供正确的输入/输出大小(例如,143)。鉴于所述响应(例如,131),主机系统120可修正命令(例如,121),且产生具有正确大小(例如,143)的替换命令(例如,123)。
在替代实施方案中,存储器子系统110可执行具有非优选大小的命令(例如,121)(例如,对于命令121的数据具有降低的性能和/或延长的缓冲时间)。响应(例如,131)允许主机系统120针对后续命令(例如,123)校正输入/输出大小。
图3展示具有动态数据放置和输入/输出大小控制的存储器子系统的实例。举例来说,图3的存储器子系统可使用图2的输入/输出大小管理器113而在图1的存储器子系统110中实施。然而,图1和图2的技术不限于图3中所说明的存储器子系统的实施方案。举例来说,冲突避免技术可实施平块装置(plain block device)、支持命名空间的装置,或支持分区命名空间的装置(例如,图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中配置动态数据放置器153,以在调度用于执行的写入命令时创建媒体布局130的部分,从而完全消除冲突。在一些实施方案中,动态数据放置器153为输入/输出大小管理器113的部分。
举例来说,存储器子系统110的媒体203可具有多个集成电路裸片205、...、207。集成电路裸片中的每一者(例如,205)可具有存储器单元(例如,NAND存储器单元)的多个平面221、...、223。平面中的每一者(例如,221)可具有存储器单元(例如,NAND存储器单元)的多个块231、...、233。块中的每一者(例如,231)可具有存储器单元(例如,NAND存储器单元)的多个页241、...、243。每一页(例如,241)中的存储器单元经配置以被编程以在原子操作中一起存储/写入/提交数据;且每一块(例如,231)中的存储器单元经配置以在原子操作中一起擦除数据。
当用于将数据存储在一个区(例如,211)中的写入命令(例如,121)和用于将数据存储在另一区(例如,213)中的另一写入命令(例如,123)被调度以用于并行执行时,结果两个集成电路裸片(例如,205和207)可用于并发操作,动态数据放置器153将写入命令(例如,121和123)的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中的每一条目识别集成电路裸片(例如,205和207)的数目/计数371,在所述集成电路裸片中存储区(例如,211)的数据。对于用于区(例如,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)。
图5展示输入/输出大小控制的方法。图5的方法可由处理逻辑进行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,图5的方法至少部分地由图1或2的输入/输出大小管理器113执行。虽然以特定序列或次序展示,但是除非另外规定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每一实施例中并不需要所有过程。其它过程流程也是可能的。
在框401处,存储器子系统110从主机系统120接收写入命令。举例来说,可在多个写入流中接收写入命令。举例来说,所述多个流中的每一相应流经配置以在一个实施例中循序地在逻辑地址空间中写入数据;且在另一实施例中,所述多个流中的流经配置以在一个实施例中伪循序地或随机地在逻辑地址空间中写入数据。每一写入流包含经标注以将数据集一起作为群组进行写入、微调、重写的命令集合。在所述群组中,数据可循序、随机或伪循序地在逻辑空间中写入。优选地,群组中的数据写入到擦除块集合中,其中擦除块集合中的存储器单元存储所述流的数据,但不存储来自其它流的数据。可擦除所述擦除块集合以移除所述流的数据,而不擦除其它流的数据。
举例来说,可在多个写入流中提供写入命令。准许写入流中的每一者循序在存储器子系统110的媒体203上所分配的命名空间(例如,201)中的区(例如,211)中的LBA地址处写入,但禁止在LBA地址空间中无序写入数据。
在框403处,存储器子系统110响应于选择写入命令以供在存储器子系统110的媒体单元109A到109N中执行而动态地识别媒体布局130的一部分,所述部分从由写入命令在逻辑地址空间中识别的逻辑地址映射到媒体单元109A到109N中的存储器单元的物理地址。举例来说,媒体布局130的部分可在一个实施例中动态地识别,这可引起用于原子数据编程的页大小的不均匀性。在其它实施例中,不均匀性可由集成电路裸片中的结构和/或数据编程方案和/或序列引起。
在框405处,输入/输出大小管理器113基于媒体物理布局(例如,页映射305)识别用于来自主机系统120的下一写入命令(例如,123)的第一输入/输出大小(例如,143),其中第一输入/输出大小对应于媒体单元中的数据编程的原子单元。
在框407处,存储器子系统110将经配置以识别至少第一输入/输出大小(例如,143)的响应(例如,131)发射到主机系统120。主机系统120经配置以基于在响应中识别的第一输入/输出大小(例如,143)产生下一写入命令(例如,123)。
在框409处,存储器子系统110接收下一写入命令(例如,123),所述下一写入命令经配置以指示存储器子系统将根据响应(例如,131)中提供的第一输入/输出大小(例如,143)的数据量写入到存储器子系统中。
举例来说,响应(例如,131)经配置以包含在存储器子系统110中处理的第一写入命令(例如,121)的状态。如果输入/输出大小管理器113确定第一写入命令(例如,121)具有不同于第一输入/输出大小的第二输入/输出大小(例如,143)。输入/输出大小管理器113可经配置以响应(例如,131)以指示第二输入/输出大小(例如,121)不正确,这可致使主机系统120发射下一写入命令(例如,123)以替换第一写入命令(例如,121)。视情况,存储器子系统110可以非最优方式执行第一写入命令(例如,121),且发送响应(例如,131)以指示第一写入命令(例如,121)的执行的完成,且在响应(例如,131)中提供优选大小(例如,143)以致使主机系统120根据优选大小(例如,143)为后续数据设定写入命令(例如,123)的大小。
优选的输入/输出大小(例如,143)可基于媒体布局130确定为可在原子写入操作中写入到媒体单元109A到109N中的一者中的数据的大小。当存储器单元无法单独编程时,存储器单元的群组可以原子方式编程。举例来说,当存储器单元的页(例如241)中的存储器单元在原子写入操作中编程时,原子写入操作编程页(例如,241)中的所有存储器单元。因此,输入/输出的优选大小为可存储到页(例如,241)中的可以原子方式编程的存储器单元的整个集合中的数据的大小。当写入命令具有小于优选大小的输入/输出大小时,页(例如,241)中的可以原子方式编程的存储器单元的整个集合的存储容量未完全用于写入操作。当写入命令具有大于优选大小的输入/输出大小时,将经由多个原子写入操作编程写入命令的数据。因此,写入命令的一些数据可能必须缓冲较长时间周期以便等待下一原子写入操作。
在一些情况下,存储器单元的页(例如,241)为可使用多遍编程技术以不同模式编程的多平面页。举例来说,当在单层级单元(SLC)模式中时,页中的每一存储器单元经编程以存储单一数据位;当在多层级单元(MLC)模式中时,页中的每一存储器单元经编程以存储两个数据位;当在三层级单元(TLC)模式中时,页中的每一存储器单元经编程以存储三个数据位;且当在四层级单元(QLC)模式中时,页中的每一存储器单元经编程以存储四个数据位。因此,下一可用多平面页可具有不同容量以接受/存储用于编程模式的数据。输入/输出大小管理器113可从图4中所说明的页映射305中的编程模式信息(例如,353)确定优选大小。
在一些情况下,不同存储器单元可各自具有可用页。不同存储器单元中的不同可用页可具有不同编程模式,且因此具有不同大小。输入/输出大小管理器113可选择下一可用存储器页的最小大小作为传达到主机系统120的优选大小(例如,143或145)。减小的优选大小为主机系统120提供以最小可能大小构造写入流的机会。
举例来说,在调度用于执行的第一命令时,可以在存储器子系统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)的命令。
在一些实施方案中,处理装置118与存储器子系统110之间的通信信道包含计算机网络,例如局域网、无线局域网、无线个域网、蜂窝式通信网络、宽带高速始终连接的无线通信连接(例如,当前或未来一代的移动网络链路);且处理装置118和存储器子系统可经配置以使用与NVMe协议中的命令类似的数据存储管理和使用命令来彼此通信。
存储器子系统110通常可具有非易失性存储媒体。非易失性存储媒体的实例包含形成于集成电路中的存储器单元和涂布在硬磁盘上的磁性材料。非易失性存储媒体可在不消耗电力的情况下维护存储在其中的数据/信息。存储器单元可使用各种存储器/存储装置技术来实施,所述存储器/存储装置技术例如NAND逻辑门、“或非”逻辑门、相变存储器(PCM)、磁性随机存取存储器(MRAM)、电阻式随机存取存储器、交叉点存储装置及存储器装置(例如,3D XPoint存储器)。交叉点存储器装置使用无晶体管存储器元件,所述无晶体管存储器元件中的每一者具有在一起堆叠成列的存储器单元和选择器。存储器元件列经由两个垂直线材层连接,其中一个层处于存储器元件列上方,且另一层处于存储器元件列下方。可个别地在两个层中的每一层上的一个线路的交叉点处选择每一存储器元件。交叉点存储器装置是快速且非易失性的,且可用作通用存储器池以用于处理和存储。
存储器子系统(例如,110)的控制器(例如,115)可运行固件以响应于来自处理装置118的通信而执行操作。一般来说,固件是一种提供工程化计算装置的控制、监测和数据操纵的计算机程序类型。
涉及控制器115的操作的一些实施例可使用由控制器115执行的计算机指令(例如控制器115的固件)来实施。在一些情况下,硬件电路可用于实施功能中的至少一些。固件可最初存储在非易失性存储媒体或另一非易失性装置中,且加载到易失性DRAM和/或处理器内高速缓存存储器中以供控制器115执行。
非暂时性计算机存储媒体可用于存储器子系统(例如,110)的固件的指令。当指令由控制器115和/或处理装置117执行时,所述指令致使控制器115和/或处理装置117执行上文所论述的方法。
图6说明计算机系统500的实例机器,所述实例机器内可执行用于致使所述机器执行本文中所论述的方法中的任何一或多者的指令集。在一些实施例中,计算机系统500可对应于包含、耦合到或使用存储器子系统(例如,图1的存储器子系统110)或可用以执行输入/输出大小管理器113的操作(例如,执行指令以执行对应于参考图1到5描述的输入/输出大小管理器113的操作)的主机系统(例如,图1的主机系统120)。在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(ROM)、闪存存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM))等)、静态随机存取存储器(SRAM)等),以及数据存储系统518,其经由总线530(其可包含多个总线)彼此通信。
处理装置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到5所描述的输入/输出大小管理器113)的功能的指令。尽管在实例实施例中机器可读存储媒体524展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。术语“机器可读存储媒体”应被认为包含但不限于固态存储器、光学媒体和磁性媒体。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自连接到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、闪存存储器装置等。
在本说明书中,各种功能和操作被描述为由计算机指令执行或由其引起以简化描述。然而,所属领域的技术人员将认识到,此类表达的意图是功能由一或多个控制器或处理器(例如,微处理器)执行计算机指令而产生。替代地或组合地,所述功能和操作可使用具有或不具有软件指令的专用电路来实施,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)来实施。可使用并无软件指令的固线式电路或结合软件指令实施实施例。因此,技术不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
Claims (20)
1.一种方法,其包括:
在存储器子系统中从主机系统接收写入命令;
基于媒体物理布局识别来自所述主机系统的下一写入命令的第一输入/输出大小;
从所述存储器子系统向所述主机系统发射经配置以识别至少所述第一输入/输出大小的响应,其中所述主机系统经配置以基于在所述响应中识别的所述第一输入/输出大小而产生所述下一写入命令;以及
在所述存储器子系统中接收所述下一写入命令,其指示所述存储器子系统将根据所述第一输入/输出大小配置的数据量写入到所述存储器子系统中。
2.根据权利要求1所述的方法,其进一步包括:
响应于选择所述写入命令以供在所述存储器子系统的媒体单元中执行而动态地产生且存储所述媒体物理布局的一部分,所述部分从由所述写入命令在逻辑地址空间中识别的逻辑地址映射到所述媒体单元中的存储器单元的物理地址;
其中所述响应经配置以包含在所述存储器子系统中处理的第一写入命令的状态。
3.根据权利要求2所述的方法,其进一步包括:
确定所述第一写入命令具有不同于所述第一输入/输出大小的第二输入/输出大小,其中所述响应经配置以指示所述第二输入/输出大小不正确。
4.根据权利要求3所述的方法,其中将所述下一写入命令从所述主机系统发射到所述存储器子系统以替换所述第一写入命令。
5.根据权利要求2所述的方法,其中所述第一输入/输出大小基于所述媒体物理布局而确定为可在原子写入操作中写入到所述媒体单元中的一者中的数据的大小。
6.根据权利要求2所述的方法,其中所述第一输入/输出大小确定为接下来的可用存储器页的最小大小,所述接下来的可用存储器页中的每一者可基于所述媒体物理布局在原子写入操作中写入所述媒体单元中的一者中。
7.根据权利要求6所述的方法,其中所述最小大小是基于在可在所述媒体单元中的一者中以原子方式编程的下一可用存储器页中编程数据的模式。
8.根据权利要求7所述的方法,其中所述模式为在所述存储器子系统中支持的多个模式中的一者;且所述多个模式包含:
单层级单元(SLC)模式;
多层级单元(MLC)模式;
三层级单元(TLC)模式;以及
四层级单元(QLC)模式。
9.根据权利要求8所述的方法,其中所述下一可用存储器页为可经由多遍编程技术编程的NAND闪存存储器页。
10.根据权利要求9所述的方法,其中所述NAND闪存存储器页包含NAND存储器单元的多个平面。
11.根据权利要求10所述的方法,其中所述媒体物理布局的所述部分包含命名空间中的逻辑块寻址(LBA)地址与单独的集成电路裸片中的NAND存储器的块之间的映射;且所述输入/输出大小是基于识别NAND存储器单元的块中的所述下一可用页的所述模式的页映射的条目而确定。
12.一种存储指令的非暂时性计算机存储媒体,所述指令在存储器子系统中执行时致使所述存储器子系统执行方法,所述方法包括:
在所述存储器子系统中从主机系统接收写入命令;
基于媒体物理布局识别来自所述主机的下一写入命令的第一输入/输出大小;
从所述存储器子系统向所述主机系统发射经配置以识别至少所述第一输入/输出大小的响应,其中所述主机系统经配置以基于在所述响应中识别的所述第一输入/输出大小而产生所述下一写入命令;以及
在所述存储器子系统中接收所述下一写入命令,其指示所述存储器子系统将根据所述第一输入/输出大小配置的数据量写入到所述存储器子系统中。
13.根据权利要求12所述的非暂时性计算机存储媒体,其中所述方法进一步包括:
响应于选择所述写入命令以供在所述存储器子系统的媒体单元中执行而动态地产生且存储所述媒体物理布局的一部分,所述部分从由所述写入命令在逻辑地址空间中识别的逻辑地址映射到所述媒体单元中的存储器单元的物理地址;
其中所述逻辑地址空间界定于所述存储器子系统的命名空间中;所述命名空间配置有多个区;且所述写入命令经配置以同时写入于所述多个区中。
14.一种存储器子系统,其包括:
多个媒体单元,其能够同时写入数据;以及
至少一个处理装置,其经配置以:
在存储器子系统中从主机系统接收第一写入命令;
基于媒体物理布局识别来自所述主机的第二写入命令的第一输入/输出大小;
将对所述第一写入命令的响应从所述存储器子系统发射到所述主机系统,其中所述响应经配置以识别至少所述第一输入/输出大小,且其中所述主机系统经配置以基于在所述响应中识别的所述第一输入/输出大小而产生所述第二写入命令;以及
在所述存储器子系统中接收所述第二写入命令,其指示所述存储器子系统将根据所述第一输入/输出大小配置的数据量写入到所述存储器子系统中。
15.根据权利要求14所述的存储器子系统,其中所述响应经配置以包含在所述存储器子系统中处理的所述第一写入命令的状态;且所述处理装置进一步经配置以:
响应于选择所述第一写入命令以供在所述存储器子系统的媒体单元中执行而动态地产生且存储所述媒体物理布局的一部分,所述部分从由所述第一命令在逻辑地址空间中识别的逻辑地址映射到所述媒体单元中的存储器单元的物理地址;
确定所述第一写入命令具有不同于所述第一输入/输出大小的第二输入/输出大小;以及
配置所述响应以指示所述第二输入/输出大小不正确。
16.根据权利要求14所述的存储器子系统,其中所述第一输入/输出大小基于所述媒体物理布局而确定为可在原子写入操作中写入到所述媒体单元中的一者中的数据的大小。
17.根据权利要求14所述的存储器子系统,其中所述第一输入/输出大小确定为接下来的可用存储器页的最小大小,所述接下来的可用存储器页中的每一者可基于所述媒体物理布局在原子写入操作中写入所述媒体单元中的一者中。
18.根据权利要求17所述的存储器子系统,其中所述最小大小是基于在可在所述媒体单元中的一者中以原子方式编程的下一可用页中编程数据的模式;所述模式是在所述存储器子系统中支持的多个模式中的一者;且所述多个模式包含:
单层级单元(SLC)模式;
多层级单元(MLC)模式;
三层级单元(TLC)模式;以及
四层级单元(QLC)模式。
19.根据权利要求17所述的存储器子系统,其中所述下一可用页为可经由多遍编程技术编程的NAND闪存存储器页;且所述NAND闪存存储器页包含NAND存储器单元的多个平面。
20.根据权利要求19所述的存储器子系统,其中所述媒体物理布局的所述部分包含命名空间中的逻辑块寻址(LBA)地址与单独的集成电路裸片中的NAND存储器的块之间的映射;且所述输入/输出大小是基于识别NAND存储器单元的块中的所述下一可用页的所述模式的页映射的条目而确定。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962844067P | 2019-05-06 | 2019-05-06 | |
US62/844,067 | 2019-05-06 | ||
US16/865,247 | 2020-05-01 | ||
US16/865,247 US11204721B2 (en) | 2019-05-06 | 2020-05-01 | Input/output size control between a host system and a memory sub-system |
PCT/US2020/031477 WO2020227295A1 (en) | 2019-05-06 | 2020-05-05 | Input/output size control between a host system and a memory sub-system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113795820A true CN113795820A (zh) | 2021-12-14 |
Family
ID=73047176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080033538.6A Pending CN113795820A (zh) | 2019-05-06 | 2020-05-05 | 主机系统与存储器子系统之间的输入/输出大小控制 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11204721B2 (zh) |
CN (1) | CN113795820A (zh) |
WO (1) | WO2020227295A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113811847A (zh) * | 2019-05-13 | 2021-12-17 | 美光科技公司 | 来自主机系统的写入命令的部分执行 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11204721B2 (en) | 2019-05-06 | 2021-12-21 | Micron Technology, Inc. | Input/output size control between a host system and a memory sub-system |
US11386015B2 (en) * | 2020-04-22 | 2022-07-12 | Netapp, Inc. | Methods for managing storage systems with dualport solid-state disks accessible by multiple hosts and devices thereof |
US20220100407A1 (en) * | 2020-09-30 | 2022-03-31 | Seagate Technology, Llc | Data storage system with workload-based dynamic power consumption |
TWI775268B (zh) * | 2021-01-07 | 2022-08-21 | 慧榮科技股份有限公司 | 儲存裝置、快閃記憶體控制器及其控制方法 |
TW202314472A (zh) * | 2021-06-18 | 2023-04-01 | 韓商愛思開海力士有限公司 | 計算系統及其操作方法 |
US20230289075A1 (en) * | 2022-03-14 | 2023-09-14 | Western Digital Technologies, Inc. | Data Storage Device and Method for Host-Initiated Transactional Handling for Large Data Set Atomicity Across Multiple Memory Commands |
US11922069B2 (en) * | 2022-05-20 | 2024-03-05 | Micron Technology, Inc. | Adaptive block mapping |
US20230418494A1 (en) * | 2022-06-28 | 2023-12-28 | Micron Technology, Inc. | Scalability of data cursors in memory subsystems while reducing resource requirements |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110125955A1 (en) * | 2009-11-25 | 2011-05-26 | Silicon Motion, Inc. | Flash storage device, data storage system, and data writing method |
US20160179678A1 (en) * | 2014-12-19 | 2016-06-23 | International Business Machines Corporation | Non-volatile memory controller cache architecture with support for separation of data streams |
US20170255396A1 (en) * | 2016-03-01 | 2017-09-07 | Apple Inc. | Parallel scheduling of write commands to multiple memory devices |
US20190004737A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | Method and apparatus for performing multi-object transformations on a storage device |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719401B1 (en) | 2010-07-12 | 2014-05-06 | Vmware, Inc. | Decentralized input/output resource management |
US9519428B2 (en) * | 2012-09-26 | 2016-12-13 | Qualcomm Incorporated | Dynamically improving performance of a host memory controller and a memory device |
US9292434B2 (en) * | 2013-08-22 | 2016-03-22 | CNEXLABS, Inc. | Method and apparatus for restoring flash translation layer (FTL) in non-volatile storage device |
KR20150090621A (ko) | 2014-01-29 | 2015-08-06 | 삼성전자주식회사 | 스토리지 장치 및 데이터 처리 방법 |
US9612751B2 (en) | 2015-05-28 | 2017-04-04 | Netapp, Inc. | Provisioning advisor |
US20160350010A1 (en) | 2015-05-31 | 2016-12-01 | Vmware, Inc. | Providing block size compatibility with a storage filter |
US11755224B2 (en) | 2017-07-27 | 2023-09-12 | EMC IP Holding Company LLC | Storing data in slices of different sizes within different storage tiers |
US11204721B2 (en) | 2019-05-06 | 2021-12-21 | Micron Technology, Inc. | Input/output size control between a host system and a memory sub-system |
-
2020
- 2020-05-01 US US16/865,247 patent/US11204721B2/en active Active
- 2020-05-05 CN CN202080033538.6A patent/CN113795820A/zh active Pending
- 2020-05-05 WO PCT/US2020/031477 patent/WO2020227295A1/en active Application Filing
-
2021
- 2021-11-24 US US17/534,815 patent/US11709632B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110125955A1 (en) * | 2009-11-25 | 2011-05-26 | Silicon Motion, Inc. | Flash storage device, data storage system, and data writing method |
US20160179678A1 (en) * | 2014-12-19 | 2016-06-23 | International Business Machines Corporation | Non-volatile memory controller cache architecture with support for separation of data streams |
US20170255396A1 (en) * | 2016-03-01 | 2017-09-07 | Apple Inc. | Parallel scheduling of write commands to multiple memory devices |
US20190004737A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | Method and apparatus for performing multi-object transformations on a storage device |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113811847A (zh) * | 2019-05-13 | 2021-12-17 | 美光科技公司 | 来自主机系统的写入命令的部分执行 |
Also Published As
Publication number | Publication date |
---|---|
US20200356307A1 (en) | 2020-11-12 |
US20220083276A1 (en) | 2022-03-17 |
US11709632B2 (en) | 2023-07-25 |
US11204721B2 (en) | 2021-12-21 |
WO2020227295A1 (en) | 2020-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11573742B2 (en) | Dynamic data placement for collision avoidance among concurrent write streams | |
US11709632B2 (en) | Input/output size control between a host system and a memory sub-system | |
US11269552B2 (en) | Multi-pass data programming in a memory sub-system having multiple dies and planes | |
CN113906383A (zh) | 主机系统和存储器子系统之间的定时数据传送 | |
US11640354B2 (en) | Logical-to-physical mapping of data groups with data locality | |
CN113853653A (zh) | 管理编程模式转变以适应主机系统和存储器子系统之间的数据传递的恒定大小 | |
CN113590023A (zh) | 在多平面存储器装置的单独平面上存储区名称空间中的区 | |
US20240036768A1 (en) | Partial Execution of a Write Command from a Host System | |
CN115552531A (zh) | 共享字线上的存储器存取冲突管理 | |
CN113590022B (zh) | 用于存储器装置的系统和方法 | |
CN115516415A (zh) | 用于管理存储器子系统的队列的方法、系统和可读存储媒体 | |
CN113094293B (zh) | 存储器系统及相关方法和计算机可读存储介质 | |
CN113495695B (zh) | 用于存取命令的高速缓存标识符 | |
CN114442921B (zh) | 用于存储器子系统中的高速缓存读取的高速缓存释放命令 | |
CN113918479B (zh) | 用于并行独立线程的低位密度存储器高速缓存的方法及系统 | |
CN117999547A (zh) | 用于存储器子系统中的两遍次编程的虚拟管理单元方案 | |
CN113253917A (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 |