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

包含各种时延和容量的存储器装置的存储器子系统的制作方法

2022-02-21 03:41:13 来源:中国专利 TAG:


1.本公开的实施例大体上涉及存储器子系统,且更确切地说,涉及包含各种时延和容量的存储器装置的存储器子系统。


背景技术:

2.存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可以利用存储器子系统以将数据存储在存储器装置处且从存储器装置检索数据。


技术实现要素:

3.根据本技术的一个方面,提供一种系统。所述系统包括:多个存储器装置;以及处理装置,其以操作方式与所述多个存储器装置耦合以执行包括以下各项的操作:接收包括逻辑地址、有效负载和反映所述有效负载的特性的指示符的写入命令;基于所述指示符识别与在所述多个存储器装置中的一或多个上存储所述有效负载相关联的参数的值;确定所述参数的所述值满足与所述多个存储器装置中的特定存储器装置相关联的标准;以及在所述特定存储器装置上存储所述有效负载。
4.根据本技术的另一方面,提供一种方法。所述方法包括:从应用程序接收包括有效负载的写入请求;使用与所述应用程序相关联的数据结构确定所述有效负载的特性;使反映所述有效负载的所述特性的指示符与所述写入请求相关联;以及通过处理装置将写入命令发布到存储器子系统,其中所述写入命令包括所述有效负载和所述指示符。
5.根据本技术的又一方面,提供一种非暂时性计算机可读存储媒体。所述非暂时性计算机可读存储媒体包括指令,所述指令在由处理装置执行时使得所述处理装置执行包括以下各项的操作:接收包括逻辑地址、有效负载和反映所述有效负载的特性的指示符的写入命令;基于所述指示符识别与在多个存储器装置中的一或多个上存储所述有效负载相关联的参数的值;确定所述参数的所述值满足与所述多个存储器装置中的特定存储器装置相关联的标准;以及在所述特定存储器装置上存储所述有效负载。
附图说明
6.根据下文给出的详细描述且根据本公开的各种实施例的附图将更加充分地理解本公开。然而,图式不应被视为将本公开限制于特定实施例,而是仅用于解释和理解。
7.图1说明根据本公开的一些实施例的包含主机系统和存储器子系统的实例计算系统。
8.图2是根据本公开的一些实施例的标记写入请求以指示在哪个存储器装置上执行写入请求的实例方法的流程图。
9.图3是根据本公开的一些实施例的在适当的存储器装置上执行标记的写入命令的实例方法的流程图。
10.图4是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
11.本公开的方面涉及包含各种时延和容量的存储器装置的存储器子系统。存储器子系统可以是存储装置、存储器模块,或存储装置和存储器模块的组合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可以利用存储器子系统,所述存储器子系统包含一或多个组件,例如,存储数据的存储器装置。主机系统可以提供将存储在存储器子系统处的数据且可以请求将从存储器子系统检索的数据。
12.存储器子系统可以包含存储来自主机系统的数据的多个存储器装置。非易失性存储器装置的一个实例是与非(nand)存储器装置。非易失性存储器装置的另一实例是作为非易失性存储器的交叉点阵列的三维交叉点(“3d交叉点”)装置,其可以结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。下文结合图1描述非易失性存储器装置的其它实例。存储器子系统包含存储器子系统控制器,其可以与存储器装置通信以执行例如在存储器装置处读取数据、写入数据或擦除数据的操作和其它此类操作。下文结合图1更详细地描述存储器子系统控制器。
13.主机系统可以将存取请求(例如,写入命令、读取命令)发送到存储器子系统,以便在存储器子系统的存储器装置上存储数据,并且从存储器子系统的存储器装置读取数据。写入请求可以包含有效负载,其包含将写入的数据。有效负载可以具有某些特性,举例来说,例如,将写入的数据是否表示文件系统中的元数据或数据,或键值存储中的键或值。
14.固态驱动器是存储器子系统的实例,并且可以包含具有例如nand和/或3d交叉点的各种存储媒体类型的多个存储器装置。可以基于例如容量和性能的某些属性来评估存储器装置。容量可以指多少数据可以存储在存储器装置上。性能可以指时延,或存取存储器装置上的特定位置所需要的时间。作为实例,存储器装置的高时延可以在几十微秒中测量到,而低时延可以在几十纳秒中测量到。常规的nand存储器装置是相对便宜的并且因此可以用于存储大量的数据(即,具有高容量),但是它们通常是缓慢的并且无法满足许多性能需要(即,具有高时延)。例如3d交叉点的较新的存储类别存储器(scm)技术是极其快速的并且因此具有低时延,但是它们是相对昂贵的并且通常无法经济地用于满足存储器子系统的增长需要的容量。因此,可以有利的是具有包含高容量存储器装置(例如,nand存储器装置)和低时延存储器装置(例如,scm存储器装置)两者以便利用快速(但是昂贵)的存储技术和大(但是缓慢)的存储技术两者的单个存储器子系统(例如,ssd)。
15.然而,包含具有各种容量和时延的存储器装置的常规的ssd缺乏有效的方式来确定在哪个存储器装置上存储数据,所述存储器装置例如,高容量存储器装置(例如,具有超过某一阈值容量的它们的相应的容量的存储器装置)和低时延存储器装置(例如,具有低于某一阈值时延的它们的相应的时延的存储器装置)(被称作混合ssd)。举例来说,常规的混合ssd可存储写入在高容量存储器装置上的较大数据,并且存储写入在低时延存储器装置上的相对较小的数据。然而,单独的有效负载的大小可能无法恰当地反映所写入的数据的特性。举例来说,数据的特性可以包含所写入的数据是否表示元数据或数据,或者所写入的数据是否是预期的相对频繁地更新的。因此,基于有效负载的大小指派存储器装置的类型可能导致混合ssd的低效使用。举例来说,不考虑有效负载的特性,常规的混合ssd可能在传
统上缓慢的存储器装置上存储较大元数据有效负载。这将造成过量的时延,这是因为元数据可以被频繁地更新。此外,为了保持元数据一致,当元数据被同步时暂停应用程序的其它i/o操作,如果元数据存储在例如nand存储器装置的高时延存储器装置上,那么产生甚至更多的时延。相反地,存储来自低时延存储器装置(例如,3d交叉点)上的应用程序的长期数据是存储器装置的低效使用,即使长期存储的数据的大小与存储器装置容量相比相对较小也是如此,这是因为低时延存储器装置将被更有效地使用以用于存储与其它类型的数据相比可能更频繁地更新的元数据。
16.本公开的方面通过具有在相同存储器子系统(例如,ssd)中有效地组合高容量存储器装置和低时延存储器装置的存储器子系统解决了以上和其它缺陷。存储器子系统可以具有单个名称空间(例如,文件系统、键值存储,或对象存储),其容量是高容量存储器装置和低时延存储器装置的容量的总和,并且因此高容量存储器装置或低时延存储器装置都不会单独地暴露于主机系统。
17.主机系统可以包含软件架构,其被设计成拦截写入请求并且确定写入请求的某些特性。在一些实施方案中,举例来说,软件架构可以被实施为在linux内核层级处操作的装置映射器(例如,作为驱动器堆栈的一部分),以用于将物理块装置映射到较高层级虚拟块装置上。装置映射器可以将信息从虚拟块装置传递到存储器子系统。装置映射器可以拦截主机系统中的写入请求并且可以将属性附加到描述将被写入的数据的某些特性(例如,数据的预期的更新频率,其可以取决于数据是否表示文件系统中的元数据或应用程序数据,或键值存储中的键或值)的写入命令。举例来说,装置映射器可以设置标记以指示存储器装置(例如,如nand的高容量存储器装置,或如scm的低时延存储器装置)在上面执行写入命令的存储器子系统。在一些实施方案中,可以在用户空间层级处实施软件架构。
18.本公开的优点包含但不限于混合固态装置的更高效的使用。本文中所描述的系统和方法实现了基于存储在混合存储器子系统中的数据的本质的精确的数据分配,所述混合存储器子系统可以跨越多个应用程序类型使用。本公开的方面将引起执行的更好且持续的更长的存储器装置。
19.图1说明根据本公开的一些实施例的包含主机系统120和存储器子系统110的实例计算系统100。存储器子系统110可以包含媒体,例如,一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130、133),或这些的组合。
20.存储器子系统110可以是存储装置、存储器模块,或存储装置和存储器模块的组合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡,以及硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so-dimm),以及各种类型的非易失性双列直插式存储器模块(nvdimm)。
21.计算系统100可以是计算装置,例如,桌上型计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车,或其它运输工具)、具有物联网(iot)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
22.计算系统100可以包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的多个存储器子系统110。图1说明耦合到一个存储
器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与
……
耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有介入组件),无论是有线的还是无线的,包含例如电连接、光学连接、磁连接等连接。
23.主机系统120可以包含处理器芯片组以及由处理器芯片组执行的软件堆栈。处理器芯片组可以包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,nvdimm控制器),以及存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用存储器子系统110例如将数据写入到存储器子系统110并且从存储器子系统110读取数据。
24.主机系统120可以经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤信道、串行附接scsi(sas)、双数据速率(ddr)存储器总线、小型计算机系统接口(scsi)、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)等。物理主机接口可以用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过pcie接口与主机系统120耦合时,主机系统120可以进一步利用nvm高速(nvme)接口来存取存储器组件(例如,存储器装置130)。物理主机接口可以提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据以及其它信号的接口。图1说明存储器子系统110作为实例。一般来说,主机系统120可以经由同一通信连接、多个单独的通信连接和/或通信连接的组合来存取多个存储器子系统。
25.主机系统120可以包含应用程序122、数据分配装置映射器124,以及系统表126。主机系统120上的应用程序122可以将存取请求(例如,写入命令、读取命令)发送到存储器子系统110,以便在存储器子系统110的存储器装置130、133上存储数据,并且从存储器子系统110的存储器装置130、133读取数据。写入请求可以包含有效负载,其包含将写入的数据。
26.在说明性实例中,主机系统120可以使用文件系统作为组织存储器子系统的存储器装置130、133上的数据的方式,方法是提供程序来存储、检索和更新数据,以及管理存储器装置130、133上的可用空间。文件系统以有效的方式组织数据并且可以被调谐到存储器装置的特定特性。在各种存储器装置上使用文件系统以维持计算机文件的物理位置。文件系统通常以颗粒方式分配存储器空间,通常使用存储器装置上的多个物理单元。文件系统负责组织文件和目录,以及持续追踪装置的哪些区域属于某些文件和哪些不被使用。文件系统含有存储来自在主机系统上运行的应用程序或操作系统的实际数据的数据块,以及元数据块。文件系统元数据含有关于用于存储实际数据的数据结构的设计、结构和布局的信息。文件系统存储与同文件的内容(即,实际数据)分开的文件相关联的元数据。
27.替代地,可以代替文件系统使用对象存储。举例来说,在某些大规模计算实施方案中,当那些对象的特征更加合适时(例如,通过文件消除与文件系统相关联的分层文件结构存储的全面的元数据的存在)对象可以代替文件使用。
28.作为另一实例,键值存储可以用作组织存储器子系统110的存储器装置130、133上的数据的方式,方法是提供程序来存储、检索和更新数据,以及管理存储器装置130、133上的可用空间。键值存储接受键值对(即,包含键和值)并且经配置以响应于涉及键的查询。键值存储可以包含作为词典的此类结构,其中键存储在链接(或含有)相应的值的列表中。
29.应用程序122可以被组织为文件系统、键值存储,或另一类型的应用程序。系统表126可以存储由应用程序存储的数据的描述符。举例来说,在文件系统中,系统表126存储关
于每个文件的信息,包含元数据和数据。
30.应用程序122可以发送包含有效负载的写入请求。数据分配装置映射器124可以拦截写入请求。数据分配装置映射器124可以使用系统表126识别关于有效负载的特性。举例来说,数据分配装置映射器124可以确定有效负载是否是文件系统中的数据或元数据。作为另一实例,数据分配装置映射器124可以确定有效负载是否是键值存储中的键或值。
31.已经确定有效负载的特性,数据分配装置映射器124可以将描述有效负载的特性的属性附加到写入请求。在一个实施方案中,反映有效负载的特性的标记与写入请求相关联。举例来说,如下文所描述,标记可以是linux驱动器堆栈中的streamid。
32.存储器装置130、133、140可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(ram),例如,动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
33.非易失性存储器装置(例如,存储器装置130、133)的一些实例包含与非(nand)类型快闪存储器和就地写入存储器,例如,三维交叉点(“3d交叉点”)存储器。在一些实施方案中,存储器装置130可以是nand存储器装置并且存储器装置133可以是3d交叉点存储器装置。非易失性存储器的交叉点阵列可以结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可以执行就地写入操作,其中可以在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand类型快闪存储器包含例如二维nand(2dnand)和三维nand(3d nand)。
34.存储器装置130、133中的每一个可以包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(slc)可以每单元存储一个位。其它类型的存储器单元,例如,多层级单元(mlc)、三层级单元(tlc)和四层级单元(qlc)可以每单元存储多个位。在一些实施例中,存储器装置130、133中的每一个可以包含一或多个存储器单元阵列,例如,slc、mlc、tlc、qlc,或这些的任何组合。在一些实施例中,存储器装置130可以包含一或多个slc单元阵列,而存储器装置133可以包含一或多个mlc、tlc和/或qlc单元阵列。在一些实施例中,特定存储器装置可以包含存储器单元的slc部分,以及mlc部分、tlc部分,或qlc部分。存储器装置130、133的存储器单元可以分组为可以指代用于存储数据的存储器装置的逻辑单元的页。对于一些类型的存储器(例如,nand),页可以被分组以形成块。
35.虽然描述了例如非易失性存储器单元的3d交叉点阵列以及nand类型快闪存储器(例如,2d nand、3d nand)的非易失性存储器组件,但是存储器装置130、133可以基于任何其它类型的非易失性存储器,例如,只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫族化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻式随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor)快闪存储器,或电可擦除可编程只读存储器(eeprom)。
36.存储器子系统控制器115(或为简单起见,控制器115)可以与存储器装置130、133通信以执行例如在存储器装置130、133处读取数据、写入数据或擦除数据之类的操作以及其它此类操作。存储器子系统控制器115可以包含硬件,例如,一或多个集成电路和/或离散组件、缓冲存储器,或其组合。硬件可以包含具有执行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路系统。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例
如,现场可编程门阵列(fpga)、专用集成电路(asic)等),或其它合适的处理器。
37.存储器子系统控制器115可以包含经配置以执行存储在本地存储器119中的指令的处理器117(处理装置)。在所说明的实例中,存储器子系统控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。
38.在一些实施例中,本地存储器119可以包含存储器寄存器,其存储存储器指针、所提取的数据等。本地存储器119还可以包含用于存储微码的只读存储器(rom)。虽然图1中的实例存储器子系统110已经被说明为包含存储器子系统控制器115,但是在本公开的另一实施例中,存储器子系统110并不包含存储器子系统控制器115,并且可以替代地依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
39.一般来说,存储器子系统控制器115可以从主机系统120接收命令或操作,并且可以将所述命令或操作转换为指令或适当的命令以实现对存储器装置130、133的所需存取。存储器子系统控制器115可以负责其它操作,例如,耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130、133相关联的逻辑地址(例如,逻辑块地址(lba)、名称空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可以进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成存取存储器装置130、133的命令指令,以及将与存储器装置130、133相关联的响应转换成用于主机系统120的信息。
40.存储器子系统110还可以包含未说明的额外的电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓冲存储器或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),其可以从存储器子系统控制器115接收地址并且对地址进行解码以存取存储器装置130、133。
41.在一些实施例中,存储器装置130、133包含本地媒体控制器135a、135b,其结合存储器子系统控制器115操作以(相应地)对存储器装置130、133的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可以在外部管理存储器装置130、133(例如,对存储器装置130、133执行媒体管理操作)。在一些实施例中,存储器装置130、133是受管理存储器装置,其是与本地控制器(例如,本地控制器135a、135b)组合以用于在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理nand(mnand)装置。
42.存储器子系统110包含存储器装置选择组件113,其可以确定在哪个存储器装置上存储包含在写入请求中的有效负载。在一些实施例中,存储器子系统控制器115包含存储器装置选择组件113的至少一部分。在一些实施例中,存储器装置选择组件113是主机系统120、应用程序122或操作系统的部分。
43.存储器装置选择组件113可以从主机系统120接收写入命令。写入命令可以包含逻辑地址、有效负载,以及反映有效负载的一或多个特性的指示符。举例来说,特性可以表示有效负载中的数据的功能性命名、有效负载中的数据的预期的更新频率,或这两者。如上文所描述,发送写入请求的应用程序可以被组织为文件系统,在此情况下,写入命令中的指示符可以指示有效负载中的数据是否是数据或元数据。元数据是描述其它数据的数据,例如,
文件系统元数据使文件名与其中存储文件的内容的一或多个存储器装置位置相关联。在另一实例中,发送写入请求的应用程序可以被组织为键值存储,在此情况下,写入命令中的指示符可以指示有效负载中的数据是否是键或值。
44.存储器装置130、133可以包含在一个存储器子系统中,暴露为单个名称空间。当存储器装置通过nvme协议配置时,名称空间是一定量的一或多个存储器装置130-133,其可以被格式化成逻辑块(例如,lba空间的范围)。nvme协议提供对名称空间的存取,其呈现为文件系统和应用程序可以部署在上面而没有任何修改的标准块装置。通过将一个单个名称空间暴露为组合,而非具有两个名称空间(例如,一个用于高容量存储器装置,例如,存储器装置130,并且一个用于低时延存储器装置,例如,存储器装置133)解决了容量限制的担忧。如果一个类别中所需的容量超过该容量中的媒体,那么知晓系统无法超过总容量,存储器子系统110可以使用其它媒体。也就是说,如果低时延存储器装置133是满的并且存储器子系统接收对元数据的写入命令,那么存储器子系统可以决定在高容量存储器装置130上存储元数据。单个名称空间避免了需要存留映射表。
45.基于指示符,存储器装置选择组件113可以识别用于存储有效负载的存储器装置130、133的存储器装置类型。举例来说,如果指示符指示有效负载中的数据表示文件系统中的元数据,那么存储器装置选择组件113可以识别在上面存储有效负载的低时延存储器装置,例如,存储器装置133。存储器装置133可以具有时延值,存储器装置选择组件113可以使用时延值以将存储器装置识别为低时延装置。举例来说,为了将存储器装置133识别为低时延存储器装置,存储器装置选择组件113可以比较存储器装置133的时延值与阈值时延值。低时延存储器装置的实例包含scm(例如,3d交叉点)或经配置为slc的存储器装置。举例来说,经配置为slc的存储器装置可以具有较低读取时延(例如,存储在scl处的数据被读取需要多久),以及较快编程时间(例如,将从主机系统接收到的数据编程到单元以用于存储需要多久)。然而,因为每个slc仅存储单个数据位,所以举例来说在与经配置为qlc或tlc的存储器装置相比时经配置为slc的存储器装置将具有较低存储容量。
46.如果指示符指示有效负载中的数据表示文件系统中的数据,那么存储器装置选择组件113可以识别在上面存储有效负载的高容量存储器装置,例如,存储器装置130。存储器装置130可以具有容量值,存储器装置选择组件113可以使用容量值以将存储器装置识别为高容量装置。举例来说,为了将存储器装置130识别为高容量存储器装置,存储器装置选择组件113可以比较存储器装置133的容量值与阈值容量值。高容量存储器装置的实例可以包含经配置为tlc或qlc的nand存储器装置。举例来说,经配置为qlc的存储器装置存储每存储器单元四个数据位,并且因此当与经配置为slc的存储器装置相比时具有较高存储容量。然而,经配置为qlc的存储器装置可以具有较高读取时延和较慢编程时间。类似地,如果指示符指示有效负载中的数据表示键值存储(kvs)中的键,那么存储器装置选择组件113可以识别在上面存储有效负载的低时延存储器装置133。如果指示符指示有效负载中的数据表示kvs中的值,那么存储器装置选择组件113可以识别在上面存储有效负载的高容量存储器装置130。
47.在一个实施方案中,指示符可以指示有效负载中的数据被预期为频繁地更新的(例如,在指定的时间周期内至少一次),在此情况下存储器装置选择组件113可以识别在上面存储有效负载的低时延存储器装置,例如,存储器装置133。替代地,如果指示符指示有效
负载中的数据被预期为不会频繁地更新的,那么存储器装置选择组件113可以识别在上面存储有效负载的高容量存储器装置,例如,存储器装置130。
48.一旦存储器装置选择组件113已经识别在上面存储有效负载的存储器装置的类型,则存储器装置选择组件113可以识别在上面存储有效负载的实际的存储器装置130、133,并且可以在所识别的装置上存储有效负载。存储器装置选择组件113可以随后更新数据分配表(未示出)以使逻辑地址与反映有效负载在存储器装置上的位置的物理地址相关联。
49.图2是根据本公开的一些实施例的通过主机系统实施以标记写入请求以指示在哪个存储器装置上执行写入请求的实例方法200的流程图。方法200可以通过处理逻辑来执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法200是通过图1的数据分配装置映射器124来执行的。虽然以特定序列或次序来示出,但是除非另外指定,否则可以修改过程的次序。因此,所说明的实施例应仅作为实例来理解,且所说明的过程可以不同的次序来执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。
50.在操作210处,处理装置从应用程序接收包括有效负载的写入请求。在一些实施方案中,主机系统可以使用文件系统或键值存储例如来组织来自应用程序的数据。在文件系统中,举例来说,来自主机的写入请求可以用于数据或元数据。来自主机的用于数据的写入请求可以含有来自在主机系统上运行的应用程序或操作系统的实际数据,然而用于元数据的写入请求可以含有关于用于存储实际数据的数据结构的设计、结构和布局的信息。与元数据相比数据写入请求倾向于在大小上较大,并且与元数据的典型更新频率相比被预期为经历较低典型更新频率。元数据写入请求倾向于小于数据写入,并且可以预期为更频繁地更新的。此外,因为元数据是保持一致的,所以当写入元数据时可以暂停所有其它i/o操作。因而,元数据写入请求是预期将以低时延(例如,以低于某一时延阈值的时延)执行的。文件系统可以维持将数据表征为文件系统内的元数据或数据的系统表。
51.在其它实施方案中,主机可以使用键值存储(kvs)代替文件系统。在kvs系统中,键是用于数据项的唯一识别符;并且数据项被称作值。键值存储可以维持系统表以识别数据是否是键或值。kvs键可以被预期为更频繁地更新的,并且与值相比倾向于在大小上较小。相反地,与键的典型更新频率相比,kvs值被预期为经历较低典型更新频率,并且与键相比倾向于在大小上较大。
52.在操作220处,处理装置使用与应用程序相关联的数据结构确定有效负载的特性。与应用程序相关联的数据结构可以是描述有效负载的系统表。举例来说,文件系统系统表可以描述有效负载是否是用于数据或元数据的。作为另一实例,kvs系统表可以描述有效负载是否是用于键或用于值的。与应用程序相关联的数据结构不限于这些实例。处理装置可以搜索系统表以识别与在写入请求中指定的数据相关联的描述符。
53.在操作230处,处理装置使反映有效负载的一或多个特性的指示符与写入请求相关联。有效负载的特性可以表示有效负载中的数据的功能性命名,例如,有效负载中的数据是否表示元数据或数据,或者键或值。替代地或另外,有效负载的特性可以表示有效负载中
的数据的预期的更新频率。举例来说,指示符可以指示有效负载中的数据是否被预期为频繁地更新的(例如元数据可能如此),例如,在指定的时间周期内至少一次,或者数据是否被预期为以较少预期的更新长期存储的(例如数据可能如此)。举例来说,频繁地更新的数据可以每秒更新一次,而不太频繁地更新的数据可以每30秒更新一次。
54.在一些实施例中,与写入请求相关联的指示符可以是作为驱动器堆栈的部分的标记。处理装置可以设置在驱动器堆栈中的字段的值。举例来说,linux驱动器堆栈具有streamid字段,处理装置可以使用streamid字段作为标记来指示有效负载的特性。linux驱动器经编程以保留和保存streamid字段。也就是说,一旦设置,则举例来说随着命令通过块层级和nvme驱动器streamid标记将不会受到干扰。因此在一些实施方案中,处理装置通过装置映射器可以设置streamid标记以指定写入命令中的数据的类型,并且可以随后将写入命令连同streamid一起转发到存储器子系统。在文件系统实例中,将streamid设置成零可以指示有效负载是用于数据的,并且将streamid设置成一可以指示有效负载是用于元数据的。在kvs实例中,将streamid设置成零可以指示有效负载是用于值的,并且将streamid设置成一可以指示有效负载是用于键的。可能存在使标记与写入请求相关联以反映有效负载的特性的其它方式。
55.在操作240处,处理装置将写入命令发布到存储器子系统。写入命令可以包含有效负载和新近指派的属性(例如,标记)。
56.图3是根据本公开的一些实施例的通过存储器子系统控制器实施以在适当的存储器装置上执行标记的写入命令的实例方法300的流程图。方法300可以通过处理逻辑来执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,通过图1的存储器装置选择组件113来执行方法300。虽然以特定序列或次序来示出,但是除非另外指定,否则可以修改过程的次序。因此,所说明的实施例应仅作为实例来理解,且所说明的过程可以不同的次序来执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。
57.在操作310处,处理装置从主机系统接收指定逻辑地址、有效负载和反映有效负载的一或多个特性的指示符的写入命令。有效负载的特性可以表示有效负载中的数据的功能性命名,例如,有效负载中的数据是否表示文件系统中的元数据或数据,或者键值对的键或值。替代地或另外,有效负载的特性可以表示有效负载中的数据的预期的更新频率。
58.在操作320处,处理装置基于指示符识别与在多个存储器装置中的一或多个上存储有效负载相关联的参数的值。使用与写入命令相关联的指示符,举例来说,处理装置可以识别容量参数值和/或时延参数值。基于指示有效负载表示元数据(或键值对的键,或它预期为频繁地更新的)的指示符,处理装置可以确定有效负载被存储在低时延存储器装置上,例如,scm或经配置为slc的存储器装置。在此情况下,处理装置可以识别与存储有效负载相关联的时延参数值。基于指示有效负载表示数据(或键值对的值,或它预期为长期存储的)的指示符,处理装置可以确定有效负载被存储在高容量存储器装置上,例如,经配置为qlc或tlc的nand存储器装置。在此情况下,处理装置可以识别与存储有效负载相关联的容量参数值。举例来说,特定参数值可以指定每单元第一位数目(例如,slc),或每单元第二位数目
(例如,经配置为qlc或tlc的nand存储器装置)。
59.在操作330处,处理装置确定参数的值满足与多个存储器装置中的特定存储器装置相关联的标准。处理装置可以识别具有超过或等于容量阈值的容量的存储器装置,或者处理装置可以识别具有不超过时延阈值的时延的存储器装置。在一些实施方案中,处理装置可以存取数据分配表以确定哪些存储器装置具有在上面存储有效负载的足够的空间。处理装置可以识别在上面存储具有某些特性的有效负载(例如,有效负载表示文件系统中的元数据、kvs中的键,或者有效负载被预期为频繁地更新的)的低时延存储器装置。处理装置可以识别在上面存储具有其它特性的有效负载(例如,有效负载表示文件系统中的数据、kvs中的值,或者有效负载并不被预期为频繁地更新的)的高容量存储器装置。
60.在操作340处,处理装置在特定存储器装置上存储有效负载。在操作350处,处理装置更新数据分配表以使逻辑地址与反映有效负载在特定存储器装置上的位置的物理地址相关联。
61.图4说明计算机系统400的实例机器,在所述实例机器内可以执行用于使得所述机器执行本文中所论述的方法中的任何一或多个的指令的集合。在一些实施例中,计算机系统400可以对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或者可以用于执行控制器的操作(例如,以执行操作系统来执行对应于图1的存储器装置选择组件113的操作)。在替代实施例中,机器可以连接(例如,联网)到lan、内联网、外联网和/或因特网中的其它机器。机器可以作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
62.机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令的集合的任何机器。此外,虽然说明单个机器,但是还应认为术语“机器”包含机器的任何集合,所述集合单独地或联合地执行指令的集合(或多个集合)以执行本文中所论述的方法中的任何一或多个。
63.实例计算机系统400包含处理装置402、主存储器404(例如,只读存储器(rom)、快闪存储器、动态随机存取存储器(dram),例如,同步dram(sdram)或rdram等)、静态存储器406(例如,快闪存储器、静态随机存取存储器(sram)等)以及数据存储系统418,其经由总线430彼此通信。
64.处理装置402表示一或多个通用处理装置,例如,微处理器、中央处理单元,或类似者。更确切地说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置402也可以是一或多个专用处理装置,例如,专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器,或类似者。处理装置402经配置以执行指令426以用于执行本文中所论述的操作和步骤。计算机系统400可以进一步包含网络接口装置408以在网络420上通信。
65.数据存储系统418可以包含机器可读存储媒体424(也被称为计算机可读媒体),其上存储有指令426的一或多个集合或体现本文中所描述的方法或功能中的任何一或多个的软件。指令426也可以在其由计算机系统400执行期间完全地或至少部分地驻留在主存储器
404内和/或处理装置402内,主存储器404和处理装置402也构成机器可读存储媒体。机器可读存储媒体424、数据存储系统418和/或主存储器404可以对应于图1的存储器子系统110。
66.在一个实施例中,指令426包含用于实施对应于存储器装置选择组件(例如,图1的存储器装置选择组件113)的功能性的指令。虽然在实例实施例中将机器可读存储媒体424示出为单个媒体,但是应认为术语“机器可读存储媒体”包含存储指令的一或多个集合的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令的集合且使得机器执行本公开的方法中的任何一或多个的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
67.已经就计算机存储器内的数据位的操作的算法和符号表示而言呈现了之前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。算法在这里并且通常被认为是引起所需结果的操作的自洽序列。操作是要求对物理量进行物理操控的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电信号或磁信号的形式。已经证明有时候,主要出于通用的原因,将这些信号称为位、值、元件、符号、字符、术语、数字或类似者是方便的。
68.然而,应牢记,所有这些和类似术语应与适当的物理量相关联,且仅仅是应用于这些量的方便的标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
69.本公开还涉及用于执行本文中的操作的设备。此设备可以出于预期目的而专门构造,或者它可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、cd-rom和磁性光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
70.本文中呈现的算法和显示本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或者它可以证明构造用于执行所述方法的更加专业化的设备是方便的。将如下文描述中所阐述的那样来呈现各种各样的这些系统的结构。另外,不参考任何特定编程语言来描述本公开。将了解,可以使用各种各样的编程语言来实施如本文中所描述的本公开的教示。
71.本公开可以提供为计算机程序产品或软件,其可以包含在其上存储有可以用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如,只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
72.在前述说明书中,已经参考本公开的特定实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义而非限制性意义上看待说明书和图式。
再多了解一些

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

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

相关文献