一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

来自主机系统的写入命令的部分执行的制作方法

2021-12-18 01:46:00 来源:中国专利 TAG:

来自主机系统的写入命令的部分执行
1.相关申请
2.本技术案要求2019年5月13日申请且名称为“来自主机系统的写入命令的部分执行(partial execution of a write command from a host system)”的临时美国专利申请案第62/847,207号以及2020年5月1日申请且名称为“来自主机系统的写入命令的部分执行(partial execution of a write command from a host system)”的美国专利申请案第16/865,248号的优先权,所述申请案的全部公开内容特此以引用的方式并入本文中。
技术领域
3.本文中所公开的至少一些实施例大体上涉及存储器系统,且更具体地说,但不限于在存储器子系统中部分执行来自主机系统的写入命令。


背景技术:

4.存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统来在存储器装置处存储数据且从存储器装置检索数据。
附图说明
5.在附图的图中以实例而非限制的方式示出了实施例,在附图中,相似的参考编号指示类似的元件。
6.图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
7.图2展示控制来自主机系统的命令流的部分执行管理器。
8.图3展示配置有部分执行管理器的存储器子系统的实例。
9.图4说明配置成支持动态数据放置和部分执行的数据结构的实例。
10.图5展示部分执行的方法。
11.图6是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
12.本公开的至少一些方面涉及支持在存储器子系统中部分执行来自主机系统的命令的技术。存储器子系统可以是存储装置、存储器模块,或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用存储器子系统,所述存储器子系统包含一或多个组件,例如存储数据的存储器装置。主机系统可提供数据以存储在存储器子系统处,且可请求从存储器子系统检索数据。
13.传统上,主机系统可将写入命令发送到存储器子系统以按固定的预定大小或粒度写入数据。举例来说,待经由来自主机系统的每一写入命令存储到存储器子系统中的数据用于相同、固定、预定量/大小的数据。然而,在一些情形中,固定输入/输出大小可导致相当大的性能损耗、在存储器子系统中缓冲的数据的寿命增加,和/或在存储器子系统中使用替
代的、效率较差的数据编程方法。
14.本公开的至少一些方面通过在主机系统与存储器子系统之间实施通信协议以支持来自主机系统的命令的部分执行来解决以上和其它缺陷。举例来说,基于物理媒体布局的当前状态,存储器子系统可确定可在媒体单元中执行的下一写入命令的输入/输出的优选大小。在子系统具有可供用于执行下一写入命令集的多个媒体单元时,存储器子系统可根据可用媒体单元中的当前物理媒体布局来确定一系列优选大小。举例来说,优选大小等于存储器子系统可在单个原子操作中编程到媒体单元中的数据量。举例来说,存储器子系统可具有nand(“与非”)快闪存储器。使用单遍次编程技术,nand装置中的原子写入操作可将数据编程/存储到单平面页、双平面页、四平面页或多平面页中。使用多遍次编程技术,nand装置中的原子写入操作可将数据编程/存储到slc(单层级单元)模式中的页、mlc(多层级单元)模式中的页、tlc(三层级单元)模式中的页或qlc(四层级单元)模式中的页中。在原子写入操作中编程的页可在不同模式中具有不同大小。举例来说,使用多遍次编程方法,slc页可具有64千字节(kb)的大小,tlc页可具有128kb的大小,且qlc页可具有64kb的大小。一般来说,主机系统无法预测适用于写入流中的下一写入命令的大小。存储器子系统可基于媒体布局的状态确定优选输入/输出大小,且将所述大小传达到主机系统(例如,经由对当前命令的响应中的状态字段传达)。主机系统可发出允许将数据写入到存储器子系统的媒体中的可变大小的写入命令。存储器子系统确定针对最优化效率的待写入在存储器子系统的媒体中的数据量/大小,且在用于可变大小的命令的响应的状态字段中报告写入到媒体中的数据的量/大小。主机系统可基于已写入到存储器子系统的媒体中的数据的量/大小的报告来配置后续写入命令。
15.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置102)、一或多个非易失性存储器装置(例如,存储器装置104),或这些装置的组合。
16.存储器子系统110可以是存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡和硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小外形dimm(so

dimm)和各种类型的非易失性双列直插式存储器模块(nvdimm)。
17.计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(iot)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网市售装置中的计算机),或这类包含存储器和处理装置的计算装置。
18.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与...耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等的连接。
19.主机系统120可包含处理器芯片组(例如,处理装置118)和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,控制器116)(例如,nvdimm控制器)和存储协议控制器(例如,pcie控制器、sata控制器)。主机
系统120使用存储器子系统110来例如将数据写入到存储器子系统110中以及从存储器子系统110读取数据。
20.主机系统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可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
21.主机系统120的处理装置118可以是例如微处理器、中央处理单元(cpu)、处理器的处理核心、执行单元等。在一些情况下,控制器116可称为存储器控制器、存储器管理单元和/或启动器。在一个实例中,控制器116控制通过耦合在主机系统120与存储器子系统110之间的总线进行的通信。一般来说,控制器116可将对存储器装置102、104的所需存取的命令或请求发送到存储器子系统110。控制器116可进一步包含用于与存储器子系统110通信的接口电路系统。接口电路系统可将从存储器子系统110接收到的响应转换成用于主机系统120的信息。
22.主机系统120的控制器116可与存储器子系统110的控制器115通信以执行操作,例如在存储器装置102、104处读取数据、写入数据或擦除数据以及其它这类操作。在一些情况下,控制器116集成在处理装置118的同一封装内。在其它情况下,控制器116与处理装置118的封装分隔开。控制器116和/或处理装置118可包含硬件,例如一或多个集成电路(ic)和/或离散组件、缓冲存储器、高速缓存存储器或其组合。控制器116和/或处理装置118可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等),或另一合适的处理器。
23.存储器装置102、104可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。易失性存储器装置(例如,存储器装置102)可以是但不限于随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
24.非易失性存储器组件的一些实例包含“与非”(nand)型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand型快闪存储器包含例如二维nand(2d nand)和三维nand(3d nand)。
25.存储器装置104中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(slc)可每单元存储一个位。其它类型的存储器单元,例如多层级单元(mlc)、三层级单元(tlc)、四层级单元(qlc)和五层级单元(plc)可每单元存储多个位。在
一些实施例中,存储器装置104中的每一个可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc或这类存储器单元阵列的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分和mlc部分、tlc部分或qlc部分。存储器装置104的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,nand),页可分组以形成块。
26.虽然描述了非易失性存储器装置,例如3d交叉点型和nand型存储器(例如,2dnand、3d nand),但存储器装置104可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)

mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、“或非”(nor)快闪存储器,以及电可擦除可编程只读存储器(eeprom)。
27.存储器子系统控制器115(或为简单起见,控制器115)可与存储器装置104通信以执行操作,例如在存储器装置104处读取数据、写入数据或擦除数据以及其它这类操作(例如,响应于控制器116在命令总线上调度的命令)。控制器115可包含硬件,例如一或多个集成电路(ic)和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行本文中所描述的操作。控制器115可以是微控制器、专用逻辑电路系统(例如现场可编程门阵列(fpga)、专用集成电路(asic)等)或另一合适的处理器。
28.控制器115可包含处理装置117(处理器),其配置成执行存储在本地存储器119中的指令。在所说明实例中,控制器115的本地存储器119包含嵌入式存储器,所述嵌入式存储器配置成存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流以及例程的指令,包含处理存储器子系统110与主机系统120之间的通信。
29.在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(rom)。虽然图1中的实例存储器子系统110已说明为包含控制器115,但在本公开的另一实施例中,存储器子系统110不包含控制器115,且可替代地依赖于外部控制(例如,由外部主机或由与存储器子系统分隔开的处理器或控制器提供)。
30.一般来说,控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换成指令或适当命令以实现对存储器装置104的所需存取。控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置104相关联的逻辑地址(例如,逻辑块地址(lba)、命名空间)与物理地址(例如,物理块地址)之间的地址转译。控制器115可进一步包含主机接口电路系统,以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收到的命令转换成存取存储器装置104的命令指令,以及将与存储器装置104相关联的响应转换成用于主机系统120的信息。
31.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),其可从控制器115接收地址且解码地址以存取存储器装置104。
32.在一些实施例中,存储器装置104包含本地媒体控制器105,其结合存储器子系统控制器115操作以对存储器装置104的一或多个存储器单元执行操作。外部控制器(例如,存
储器子系统控制器115)可在外部管理存储器装置104(例如,对存储器装置104执行媒体管理操作)。在一些实施例中,存储器装置104是受管理存储器装置,其为与本地控制器(例如,本地控制器105)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理nand(mnand)装置。
33.计算系统100包含存储器子系统110中的部分执行管理器113,其确定优选输入/输出大小以将数据以原子方式存储/编程/提交/写入到存储器子系统110的媒体单元102到104中,根据优选输入/输出大小执行可变大小写入命令,且向主机系统120报告已写入到媒体单元102到104中的数据的量。在一些实施例中,存储器子系统110中的控制器115包含部分执行管理器113的至少一部分。在其它实施例中,或以组合方式,主机系统120中的控制器116和/或处理装置118包含部分执行管理器113的至少一部分。举例来说,控制器115、控制器116和/或处理装置118可包含实施部分执行管理器113的逻辑电路系统。举例来说,控制器115或主机系统120的处理装置118(处理器)可配置成执行存储在存储器中的用于执行本文中所描述的部分执行管理器113的操作的指令。在一些实施例中,部分执行管理器113实施于安置在存储器子系统110中的集成电路芯片中。在其它实施例中,部分执行管理器113是主机系统120的操作系统、装置驱动器或应用程序的一部分。
34.部分执行管理器113可根据媒体单元/存储器装置102到104中的映射逻辑地址的媒体物理布局确定用于执行来自主机系统的下一写入命令的优选大小。举例来说,基于下一页将在slc模式、mlc模式、tlc模式还是qlc模式中编程,部分执行管理器113可确定优选大小为64kb或128kb。一般来说,可存在适用于原子写入操作的页大小的不均匀性的许多起因。所公开的用以解决不均匀性的技术不限于可供用于原子写入操作的存储器页的不均匀性的特定起因。任选地,部分执行管理器113可将优选大小提供到主机系统120(例如,在对主机系统120的完成命令的响应中)。主机系统120可将可变大小写入命令发出到存储器子系统,其中不需要预定写入命令的输入/输出大小。可变大小写入命令允许部分执行管理器113基于当前可供用于执行写入命令的媒体单元的优选大小来确定写入命令的大小。部分执行管理器113可报告已执行的写入命令的大小(例如,经由对可变大小写入命令的响应)。基于可变大小写入命令的执行的所报告大小,主机系统可产生和/或调整传输到存储器子系统110的其它写入命令。下文描述关于部分执行管理器113的操作的其它细节。
35.图2展示控制来自主机系统120的命令流的部分执行管理器113。举例来说,图2的部分执行技术可实施于图1的计算机系统100中。
36.在图2中,主机系统120发送命令121、123、...,以将数据存储到存储器子系统110的媒体203中。命令(例如,121或123)可包含、指示或识别待写入到媒体203中的数据的大小(例如,141或143)和用于将数据存储在媒体203中的逻辑地址(例如,142或144)。
37.命令121、123、...中指定的大小(例如,141或143)可为可变大小写入命令的所建议大小。在执行可变大小写入命令(例如,121或123)时,存储器子系统110不需要根据精确大小(例如,141或143)存储命令的数据。部分执行管理器113配置成确定用于命令(例如,121或123)的最优化执行的优选大小(例如,145或147)。因此,作为命令(例如,121或123)的执行的结果的写入到存储器子系统110的媒体203中的数据的大小(例如,145或147)可不同于相应命令(例如,121或123)中指定的大小(例如,141或143)。部分执行管理器113可使用用于相应命令(例如,121或123)的响应(例如,131或133)来向主机系统120报告作为相应命
令(例如,121或123)的执行的结果的写入到媒体203中的数据的量/大小(例如,145或147)。举例来说,可在用于相应命令(例如,121或123)的响应(例如,131或133)的状态字段中提供所写入量(例如,145或147)。
38.在一些实施方案中,命令(例如,121或123)中指定的大小(例如,141或143)是存储器子系统针对命令(例如,121或123)写入数据的上限。部分执行管理器113可基于媒体203的物理布局130确定对于利用存储器子系统110的资源来说最优的优选量(例如,145或147)。优选量(例如,145或147)不大于命令(例如,121或123)中指定的上限(例如,141或143)。
39.在一些实施方案中,在一或多个媒体单元(例如,109a或109n,例如图1中所说明的存储器装置102和/或104)可用于执行命令(例如,121或123)时,数据从主机系统120到媒体203的传送由部分执行管理器113发起一次。部分执行管理器113可确定可编程/写入到可用媒体单元(例如,109a或109n)中的数据的量(例如,145或147)。举例来说,对于可用媒体单元(例如,109a或109n)中的每一个,部分执行管理器111可以最有效方式确定可编程/写入到媒体203的下一可用页中的数据的最大量(例如,145或147),在所述最有效方式中,原子写入(数据编程)操作由媒体单元(例如,109a或109n)执行。举例来说,最大量(例如,145或147)可对应于在对应媒体单元(例如,109a或109n)可以原子方式编程的下一可用存储器页的数据容量。部分执行管理器111可配置成根据量(例如,145或147)控制数据的传送,刚好能够用于可用媒体单元(例如,109a或109n)中的数据编程操作以减少存储器子系统110中缓冲的数据的量和时间。一旦命令(例如,121或123)的数据传送到相应媒体单元(例如,109a或109n)中,便可释放用于缓冲命令(例如,121或123)的数据的本地存储器中所指派的缓冲空间。数据从本地存储器119到媒体单元(例如,109a或109n)中的传送的完成可甚至在媒体单元(例如,109a或109n)完成写入或编程数据之前出现。因此,在存储器子系统中缓冲的数据量和时间可减少/最小化。
40.存储器系统110具有媒体布局130,其指定在存储器子系统110中从主机系统120接收到的命令(123)中使用的地址(例如,142和144)与存储器子系统的存储器媒体203中的物理存储器位置之间的映射。
41.在一些实施方案中,响应于来自主机系统120的写入命令(例如,121或123)而动态地产生媒体布局130。举例来说,媒体203可具有能够并行地写入数据的多个媒体单元109a到109n。来自主机系统120的写入命令的并发流中的至少一些可在将日期提交到存储器子系统110的存储器媒体203中时在存储器子系统110中并行地执行。然而,一个媒体单元可一次支持一个写入操作。因此,如果两个写入命令由媒体布局130映射以在同一媒体单元(例如,109a或109n)上操作,那么发生存取冲突。每一冲突增加了在数据可写入到媒体203中之前在存储器子系统中缓冲数据的时间。为了避免冲突,在确定媒体单元(例如,109a和109n)可用于写入命令的执行时,可动态地确定媒体布局130。
42.可推迟针对传入写入命令(例如,121)中使用的逻辑地址(例如,142)的媒体布局的部分的确定,直到可在无冲突的情况下执行写入命令(例如,121)为止。在存储器媒体203配置成在集成电路裸片(例如,作为nand存储器单元)上时,媒体布局确定可基于可用于在输入/输出调度时执行写入操作的集成电路裸片的标识。确定媒体布局130以使得待并行执行的命令的逻辑地址映射到可用于在没有冲突的情况下并发/并行操作的不同集成电路裸
片。因此,可完全避免来自不同活动流的写入命令当中的媒体存取冲突。
43.一般来说,写入流包含将数据集一起作为群组进行写入、微调、重写的命令集。在群组中,数据可循序、随机或伪循序地在逻辑空间中写入。优选地,群组中的数据写入到擦除块集合中,其中擦除块集合中的存储器单元存储所述流的数据,但不存储来自其它流的数据。可擦除所述擦除块集合以移除所述流的数据,而不擦除其它流的数据。在一些情况下,在不同流的逻辑地址映射到同一擦除块集合中时(不同流的数据不能单独擦除),可能会发生冲突。还可通过动态媒体布局技术避免这类冲突。
44.不同写入流可配置成在不同模式中在媒体203中存储数据。举例来说,一个写入流可在slc模式或mlc模式中在媒体203中的存储器单元中存储数据;且另一写入流可在tlc模式或qlc模式中在媒体203中的存储器单元中存储数据。因此,主机系统120可能无法预测用于配置写入命令的数据的优选大小或粒度。此外,出于其它原因,例如具有经编程且空闲以接受/存储用于最优化存储器管理的数据的不同状态的媒体单元(例如,109a或109n)中的页的物理布局,主机系统120可能无法预测用于配置写入命令的数据的优选大小或粒度。因此,本技术案的技术不限于不均匀页大小限值/偏好的任何特定原因。
45.存储器子系统110具有部分执行管理器113,其配置成确定用于可变大小写入命令(例如,121或123)的数据的优选输入/输出大小(例如,145或147),且部分地执行写入命令(例如,121或123)以存储优选大小的数据。部分执行管理器113进一步配置成将在部分执行中已写入到存储器子系统110中的数据的大小(例如,145或147)传达到主机系统120。举例来说,大小(例如,145或147)可在对相应写入命令(例如,121或123)的响应(例如,143或145)中传达到主机系统120;且主机系统120可发出用于待写入到存储器子系统110的媒体203中的其余数据的额外命令(例如,123)。
46.图3展示配置有部分执行管理器的存储器子系统的实例。举例来说,图3的存储器子系统可使用图2的部分执行管理器113实施于图1的存储器子系统110中。然而,图1和图2的技术不限于图3中所说明的存储器子系统的实施方案。举例来说,技术可实施平面块装置、支持命名空间的装置,或支持分区名称空间的装置(例如,图3中所说明的存储器子系统)。因此,本文中呈现的公开内容不限于图3的实例。
47.在图3中,命名空间201配置在存储器子系统110的媒体存储容量上。命名空间201提供逻辑块寻址空间,所述逻辑块寻址空间可由主机系统120使用以指定用于读取或写入操作的存储器位置。命名空间201可指派在存储器子系统110的媒体存储容量的一部分或存储器子系统110的整个媒体存储容量上。在一些情况下,可在存储器子系统110的媒体存储容量的单独、非重叠部分上指派多个命名空间。
48.在图3中,命名空间201配置有多个区211、213、...、219。命名空间中的每一区(例如,211)允许对区(例如,211)中的本地块寻址(lba)地址进行随机读取存取,并且允许对区(例如,211)中的lba地址进行循序写入存取,但不允许对区(211)中的随机lba地址进行随机写入存取。因此,在命名空间201的lba地址空间中以预定的顺序次序将数据写入到区(例如,211)中。
49.在配置命名空间201中的区(例如,211)时,(例如,为简单起见)可为所述区(例如,211)预定媒体布局。区(例如,211)中的lba地址可预映射到存储器子系统110的媒体203中。然而,这类预定媒体布局可在存在多个并行写入流时导致媒体存取冲突。将从区(例如,
211)中的lba地址到媒体203中的存储器位置的映射随机化可以减少冲突,但不能消除冲突。
50.优选地,在存储器子系统110中配置动态数据放置器153,以在调度用于执行的写入命令时创建媒体布局130的部分,从而完全消除媒体存取冲突。在一些实施方案中,动态数据放置器153可以是部分执行管理器113的一部分。
51.举例来说,存储器子系统110的媒体203可具有多个集成电路裸片205、...、207。集成电路裸片(例如,205)中的每一个可具有存储器单元(例如,nand存储器单元)的多个平面221、...、223。平面(例如,221)中的每一个可具有存储器单元(例如,nand存储器单元)的多个块231、...、233。块(例如,231)中的每一个可具有存储器单元(例如,nand存储器单元)的多个页241、...、243。每一页(例如,241)中的存储器单元配置成被编程以在原子操作中一起存储/写入/提交数据;且每一块(例如,231)中的存储器单元配置成在原子操作中一起擦除数据。
52.当用于将数据存储在一个区(例如,211)中的写入命令(例如,121)和用于将数据存储在另一区(例如,213)中的另一写入命令(例如,123)调度以用于并行执行时,结果两个集成电路裸片(例如,205和207)可供用于写入命令(例如,121和123)的并发操作,动态数据放置器153将写入命令的lba地址映射到位于不同裸片(例如,205和207)中的页中。因此,可避免媒体存取冲突。
53.在两个集成电路裸片(例如,205和207)确定为可供用于执行写入命令(例如,121和123)时,部分执行管理器113发起用于写入命令(例如,121和123)的数据245从主机系统120的存储器133到存储器子系统110的本地存储器119的传送。
54.替代根据写入命令(例如,121和123)中指定的所建议大小(或大小限值)(例如141和143)传送数据245,部分执行管理器113根据针对集成电路裸片(例如,205和207)中的写入操作而优化的优选大小(例如,145和147)传送数据245,所述写入操作确定为可供用于执行写入命令(例如,121和123)。
55.因此,队列243中的写入命令(例如,121和123)的数据235中的大多数可存储在主机存储器133中,而对应写入命令自身在存储器子系统110中的命令队列243中接受。数据245用于写入命令(例如,121和123),所述写入命令准备好执行以用于将数据245存储到集成电路裸片(例如,205和207)中的存储器单元中,所述存储器单元可用于服务于写入命令(例如,121和123)。一旦数据传送到集成电路裸片(例如,205和207)中(例如,在集成电路裸片(例如,205和207)完成数据编程/写入操作之前),便可释放本地存储器119中针对数据指派的存储空间。由于仅数据245刚好能够针对可用集成电路裸片(例如,205和207)传送,因此在本地存储器119中缓冲的数据245的寿命减少和/或最小化。此外,在本地存储器119中缓冲的数据245的量可减少和/或最小化。写入命令的数据245的寿命和量的减少可降低在电力故障事件中保护本地存储器119的内容的需求。
56.在执行命令(例如,121和123)之后,部分执行管理器113使用分别用于所执行命令(例如,121和123)的传输到主机系统120的响应(例如,131和133)来报告已存储到集成电路裸片(例如,205和207)中的数据的大小(例如,145和147)。所报告大小(例如,145和147)允许主机系统构建其它写入命令以存储其余和/或额外数据。
57.图4说明配置成支持动态数据放置和部分执行的数据结构的实例。举例来说,可使
用图4的数据结构来实施图2或3的媒体布局130。
58.在图4中,区映射301配置成提供用于命名空间(例如,201)中的区(例如,211)的媒体布局信息。区映射301可具有多个条目。区映射301中的每一条目标识关于区(例如,211)的信息,例如区(例如,211)的起始lba地址311、区(例如,211)的块集合标识符313、区(例如,211)的光标值315、区(例如,211)的状态317等。
59.主机系统120在区起始lba地址311处开始在区(例如,211)中写入数据。主机系统120在lba空间中循序地在区(例如,211)中写入数据。在一定量的数据已写入到区(例如,211)中之后,由光标值315标识用于写入后续数据的当前起始lba地址。针对区的每一写入命令将光标值315移动到用于区的下一写入命令的新起始lba地址。状态317可具有指示区(例如,211)为空、满、隐含地打开、明确打开、关闭等的值。
60.在图4中,逻辑到物理块映射303配置成促进lba地址(例如,331)转换成媒体(例如,203)中的物理地址。
61.逻辑到物理块映射303可具有多个条目。lba地址(例如,331)可用作或转换成逻辑到物理块映射303的条目的索引。索引可用于查找lba地址(例如,331)的条目。逻辑到物理块映射303中的每一条目针对lba地址(例如,331)标识媒体(例如,203)中的存储器块的物理地址。举例来说,媒体(例如,203)中的存储器块的物理地址可包含裸片标识符333、块标识符335、页映射条目标识符337等。
62.裸片标识符333标识存储器子系统110的媒体203中的特定集成电路裸片(例如,205或207)。
63.块标识符335标识使用裸片标识符333标识的集成电路裸片(例如,205或207)内的特定存储器块(例如,nand快闪存储器)。
64.页映射条目标识符337标识页映射305中的条目。
65.页映射305可具有多个条目。页映射305中的每一条目可包含标识存储器单元块(例如,nand存储器单元)内的存储器单元页的页标识符351。举例来说,页标识符351可包含nand存储器单元块中的页的字线编号和页的子块编号。此外,页的条目可包含页的编程模式353。举例来说,页可在slc模式、mlc模式、tlc模式或qlc模式中编程。当在slc模式中配置时,页中的每一存储器单元将存储一个数据位。当在mlc模式中配置时,页中的每一存储器单元将存储两个数据位。当在tlc模式中配置时,页中的每一存储器单元将存储三个数据位。当在qlc模式中配置时,页中的每一存储器单元将存储四个数据位。集成电路裸片(例如,205或207)中的不同页可具有用于数据编程的不同模式。
66.在图4中,块集合表307存储区(例如,211)的动态媒体布局的数据控制方面。
67.块集合表307可具有多个条目。块集合表307中的每一条目标识集成电路裸片(例如,205和207)的数目/计数371,在所述集成电路裸片中存储区(例如,211)的数据。对于用于区(例如,211)的集成电路裸片(例如,205和207)中的每一个,块集合表307的条目具有裸片标识符373、块标识符375、页映射条目标识符377等。
68.裸片标识符373标识存储器子系统110的媒体203中的特定集成电路裸片(例如,205或207),在所述裸片(例如,205或207)上可存储区(例如,211)的后续数据。
69.块标识符375标识使用裸片标识符373标识的集成电路裸片(例如,205或207)内的存储器(例如,nand快闪存储器)的特定块(例如,231或233),在所述块(例如,231或233)中
可存储区(例如,211)的后续数据。
70.页映射条目标识符337标识页映射305中的条目,其标识可用于存储区(例如,211)的后续数据的页(例如,241或241)。
71.图5展示部分执行的方法。图5的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,图5的方法至少部分地由图1或2的部分执行管理器113执行。虽然以特定顺序或次序展示,但除非另外规定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,在每一实施例中并不需要所有过程。其它过程流程也是可能的。
72.在框401处,存储器子系统110接收来自主机系统120的第一写入命令(例如,121),其中第一写入命令(例如,121)识别第一输入/输出大小(例如,141)。
73.举例来说,第一写入命令(例如,121)可配置为可变大小写入命令;且第一输入/输出大小(例如,141)是所建议大小,或用于执行第一写入命令(例如,121)的数据大小的上限。
74.在框403处,存储器子系统110的部分执行管理器113基于媒体物理布局130识别小于第一输入/输出大小(例如,141)的且针对在存储器子系统110中执行第一写入命令(例如,121)而优化的第二输入/输出大小(例如,145)。
75.举例来说,部分执行管理器113识别可用于执行第一写入命令(例如,121)的媒体单元(例如,109a或109n)。响应于媒体单元识别为可用于执行第一写入命令而识别第二输入/输出大小(例如,145)。此外,基于识别为可用于(例如,预备或不含其它操作)执行第一写入命令(例如,121)的媒体单元(例如,109a、109n、205或207)的媒体物理布局(例如,页映射305)确定第二输入/输出大小。
76.举例来说,可根据在原子写入操作中待编程以存储数据的存储器页(例如,241或243)的容量大小来确定第二输入/输出大小(例如,145)。在原子写入操作中,存储器页(例如,241或243)中的所有存储器单元一起编程以存储数据;且存储器页中的存储器单元并非在多个独立写入操作中单独/独立地编程。可选择原子写入操作以优化存储器页的存储器操作(例如,使用多个可适用数据编程技术中的一个,所述可适用数据编程技术例如双平面编程、四平面编程、单遍次编程、多遍次编程)。
77.举例来说,第二输入/输出大小(例如,145)可基于可在媒体单元(例如,205)中以原子方式编程的下一可用存储器页(例如,241)中的编程数据的模式,其中所述模式是媒体单元(例如,205)中支持的多个模式中的一个,例如单层级单元(slc)模式、多层级单元(mlc)模式、三层级单元(tlc)模式和四层级单元(qlc)模式。
78.在框405处,存储器子系统110根据第二输入/输出大小(例如,145)而非第一写入命令(例如,121)中指定的第一输入/输出大小(例如,141)执行第一写入命令(例如,121)。
79.在框407处,存储器子系统110的部分执行管理器113配置用于第一写入命令(例如,121)的响应(例如,131)以识别第二输入/输出大小(例如,145)。
80.在框409处,存储器子系统110将识别第二输入/输出大小(例如,145)的响应(例如,131)传输到主机系统120,使得主机系统120产生第二写入命令(例如,123)以至少写入
第一写入命令(例如,121)的其余数据。其余数据首先经由第一输入/输出大小(例如,141)经由第一写入命令(例如,121)识别,但在根据第二输入/输出大小(例如,145)的第一写入命令(例如,121)的执行405期间不存储到存储器子系统110的媒体203中。任选地,可产生第二写入命令(例如,123)以包含不处于第一写入命令(例如,121)中的其它数据。
81.在框411处,存储器子系统110接收来自主机系统120的第二写入命令(例如,123),以至少写入第一写入命令(例如,121)的其余数据。在一些情况下,主机系统120可配置第二命令(例如,123)的大小(例如,143)以包含待写入到流中的媒体(203)中的其它数据。
82.任选地,响应于媒体单元(例如,109a、109n、205或207)识别为可用于执行第一写入命令(例如,121),存储器子系统110的部分执行管理器113可根据第二输入/输出大小(例如,145)发起刚好能够用于执行第一写入命令(例如,121)的数据(例如,245)从主机系统133到存储器子系统110的传达。此外,一旦数据(例如,245)已发送到用于执行第一写入命令的相应媒体单元(例如,109a、109n、205或207)中,部分执行管理器113便可释放用于数据(例如,245)的在本地存储器119中指派的缓冲空间。
83.任选地,存储器子系统110的部分执行管理器113可在地址映射(例如,130)中将第一写入命令(例如,121)的逻辑地址(例如,142或331)指派到媒体单元(例如,205或207)中的物理地址(例如,裸片标识符333、块标识符335、页映射条目标识符337、...)。
84.在一些情况下,存储器子系统110接收多个写入命令(例如,分别用于多个并发写入流),识别可用/空闲以执行多个写入命令的多个媒体单元(例如,109a和109n或205和207),确定用于可用媒体单元(例如,109a和109n或205和207)中的每一个中的一个原子写入操作的优选大小,且根据相应优选大小在可用媒体单元(例如,109a和109n或205和207)中并发地执行多个写入命令。
85.优选输入/输出大小(例如,145)可基于媒体布局130确定为可在原子写入操作中写入到媒体单元109a到109n中的一个中的数据的大小。当存储器单元无法单独编程时,存储器单元的群组可以原子方式编程。举例来说,当存储器单元的页(例如,241)中的存储器单元在原子写入操作中编程时,原子写入操作编程页(例如,241)中的所有存储器单元。因此,输入/输出的优选大小为可存储到页(例如,241)中的可以原子方式编程的存储器单元的整个集合中的数据的大小。当写入命令具有小于优选大小的输入/输出大小时,页(例如,241)中的可以原子方式编程的存储器单元的整个集合的存储容量未完全用于写入操作。当写入命令具有大于优选大小的输入/输出大小时,将经由多个原子写入操作编程写入命令的数据。因此,写入命令的一些数据可能需要缓冲较长时间周期以便等待下一原子写入操作。
86.在一些情况下,存储器单元的页(例如,241)为可使用多遍次编程技术在不同模式中编程的多平面页。举例来说,当在单层级单元(slc)模式中时,页中的每一存储器单元编程以存储单个数据位;当在多层级单元(mlc)模式中时,页中的每一存储器单元编程以存储两个数据位;当在三层级单元(tlc)模式中时,页中的每一存储器单元编程以存储三个数据位;且当在四层级单元(qlc)模式中时,页中的每一存储器单元编程以存储四个数据位。因此,下一可用多平面页可具有不同容量以接受/存储用于编程模式的数据。部分执行管理器113可根据图4中所说明的页映射305中的编程模式信息(例如,353)来确定优选大小。
87.在一些情况下,在调度用于执行的第一命令时,可以在存储器子系统110的媒体的
存储器单元的子集中进行执行第二命令。因此,用于执行第二命令的存储器单元的子集不可用于第一命令。在调度第一命令并且确定第一命令中使用的逻辑地址的媒体布局的一部分之后,第一命令可以在多个媒体单元中并发地执行和/或与存储器子系统110的其余媒体单元中的第二命令的执行进度并发地执行。
88.举例来说,在识别可用于执行下一命令的多个存储器单元(例如,集成电路裸片)之后,部分执行管理器113可从块集合表307识别可用于存储下一命令的数据的物理地址。物理地址可用于更新针对下一命令中使用的lba地址的逻辑到物理块映射303中的对应条目。
89.举例来说,在集成电路裸片(例如,205)空闲以写入数据时,部分执行管理器113可确定可写入/编程到集成电路裸片(例如,205)中的存储器单元中的区的命令。根据块集合表307,部分执行管理器113定位区(例如,205)的条目,定位与集成电路裸片(例如,205)的标识符373相关联的块标识符375和页映射条目标识符377,并且使用裸片标识符373、块标识符375和页映射条目标识符377,以用于针对区(例如,211)的命令中使用的lba地址331更新逻辑到物理块映射303中的条目的对应字段。因此,对于lba地址331,可以在没有媒体存取冲突的情况下执行区(例如,211)的命令。
90.在一些实施方案中,处理装置118与存储器子系统110之间的通信通道包含计算机网络,例如局域网、无线局域网、无线个域网、蜂窝式通信网络、宽带高速始终连接的无线通信连接(例如,当前或未来一代的移动网络链路);并且处理装置118和存储器子系统可配置成使用与nvme协议中的那些类似的数据存储管理和使用命令来彼此通信。
91.存储器子系统110通常可具有非易失性存储媒体。非易失性存储媒体的实例包含形成于集成电路中的存储器单元和涂布在硬磁盘上的磁性材料。非易失性存储媒体可在不消耗电力的情况下维护存储在其中的数据/信息。存储器单元可使用各种存储器/存储装置技术来实施,所述存储器/存储装置技术例如nand逻辑门、nor逻辑门、相变存储器(pcm)、磁性随机存取存储器(mram)、电阻性随机存取存储器、交叉点存储装置和存储器装置(例如,3d xpoint存储器)。交叉点存储器装置使用无晶体管存储器元件,所述无晶体管存储器元件中的每一个具有在一起堆叠成列的存储器单元和选择器。存储器元件列经由两个垂直线材层连接,其中一个层处于存储器元件列上方,且另一层处于存储器元件列下方。可个别地在两个层中的每一层上的一个线路的交叉点处选择每一存储器元件。交叉点存储器装置是快速且非易失性的,且可用作通用存储器池以用于处理和存储。
92.存储器子系统(例如,110)的控制器(例如,115)可运行固件以响应于来自处理装置118的通信而执行操作。一般来说,固件是一种提供工程化计算装置的控制、监测和数据操纵的计算机程序类型。
93.涉及控制器115的操作的一些实施例可使用由控制器115执行的计算机指令(例如控制器115的固件)来实施。在一些情况下,硬件电路可用于实施功能中的至少一些。固件可最初存储在非易失性存储媒体或另一非易失性装置中,并且加载到易失性dram和/或处理器内高速缓存存储器中以供控制器115执行。
94.非暂时性计算机存储媒体可用于存储存储器子系统(例如,110)的固件的指令。当指令由控制器115和/或处理装置117执行时,所述指令使得控制器115和/或处理装置117执行上文所论述的方法。
95.图6说明计算机系统500的实例机器,所述实例机器内可执行用于使得所述机器执行本文中所论述的方法中的任何一或多个的指令集。在一些实施例中,计算机系统500可对应于包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行部分执行管理器113的操作(例如,执行指令以执行对应于参考图1至5描述的部分执行管理器113的操作)的主机系统(例如,图1的主机系统120)。在替代性实施例中,机器可连接(例如联网)到lan、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端

服务器网络环境中的服务器或客户端机器的容量进行操作。
96.机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(循序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以执行本文中所论述的方法中的任何一或多种。
97.实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(rom)、快闪存储器、例如同步dram(sdram)或rambus dram(rdram)的动态随机存取存储器(dram)、静态随机存取存储器(sram)等),以及数据存储系统518,其经由总线530(其可包含多个总线)彼此通信。
98.处理装置502表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更具体地说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502也可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器或类似物。处理装置502配置成执行指令526,以用于执行本文中所论述的操作和步骤。计算机系统500可进一步包含用以经由网络520通信的网络接口装置508。
99.数据存储系统518可包含机器可读存储媒体524(也称为计算机可读媒体),在所述机器可读存储媒体上存储有一或多组指令526或体现本文中所描述的方法或功能中的任何一或多个的软件。指令526还可以在由计算机系统500执行期间完全或至少部分地驻留在主存储器504内和/或处理装置502内,主存储器504和处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518和/或主存储器504可对应于图1的存储器子系统110。
100.在一个实施例中,指令526包含用以实施对应于部分执行管理器113(例如,参考图1至5描述的部分执行管理器113)的功能的指令。尽管在实例实施例中机器可读存储媒体524展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。还应认为术语“机器可读存储媒体”包含能够存储或编码供机器执行的指令集且使得机器执行本公开的方法中的任何一或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
101.已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。在本文中,且一般将算法构想为产生所
需结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
102.然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
103.本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构建,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软性磁盘、光盘、cd

rom以及磁性光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自连接到计算机系统总线。
104.本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构建用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
105.本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
106.在本说明书中,各种功能和操作被描述为由计算机指令执行或由其引起以简化描述。然而,所属领域的技术人员将认识到,这类表达的意图是功能由一或多个控制器或处理器(例如,微处理器)执行计算机指令而产生。替代地或组合地,所述功能和操作可使用具有或不具有软件指令的专用电路系统来实施,例如使用专用集成电路(asic)或现场可编程门阵列(fpga)来实施。可使用并无软件指令的固线式电路系统或结合软件指令实施实施例。因此,技术不限于硬件电路系统和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
107.在前述说明书中,本公开的实施例已参考其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献