主机系统与存储器子系统之间的输入/输出大小控制

文档序号:1966931 发布日期:2021-12-14 浏览:23次 >En<

阅读说明:本技术 主机系统与存储器子系统之间的输入/输出大小控制 (Input/output size control between host system and memory subsystem ) 是由 S·苏巴拉奥 M·伊什 于 2020-05-05 设计创作,主要内容包括:一种存储器子系统经配置以基于存储器子系统的媒体物理布局而动态地确定写入命令的输入/输出大小。所述存储器子系统可响应于选择写入命令以供在所述存储器子系统的媒体单元中执行而动态地识别媒体布局的一部分,所述部分从由所述写入命令在逻辑地址空间中识别的逻辑地址映射到所述媒体单元中的存储器单元的物理地址。基于所述媒体布局,识别下一写入命令的输入/输出大小,且将其在响应中发射到所述主机系统。所述主机系统产生所述下一写入命令,且基于基于在所述响应中识别的所述输入/输出大小而配置待经由所述下一写入命令写入的数据量。(A memory subsystem is configured to dynamically determine an input/output size of a write command based on a media physical layout of the memory subsystem. The memory subsystem may dynamically identify a portion of a media layout that maps from a logical address identified by the write command in a logical address space to a physical address of a memory cell in a media unit of the memory subsystem in response to selecting the write command for execution in the media unit. Based on the media layout, the input/output size of the next write command is identified and transmitted to the host system in a response. The host system generates the next write command and configures an amount of data to be written via the next write command based on the input/output size identified in the response.)

具体实施方式

本公开的至少一些方面涉及用于主机系统将数据写入到存储器子系统中的输入/输出大小控制。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图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)来实施。可使用并无软件指令的固线式电路或结合软件指令实施实施例。因此,技术不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。

在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于响应于来自用户的请求而使用来自其它源的应用数据生成应用输入内容的自动化助理

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类