掌桥专利:专业的专利平台
掌桥专利
首页

用于管理非易失性存储器和闪存作为计算对象接口固态驱动器的方法和装置

文献发布时间:2023-06-19 12:24:27


用于管理非易失性存储器和闪存作为计算对象接口固态驱动器的方法和装置

技术领域

与本公开一致的设备和方法一般涉及存储设备,更具体地,涉及包括计算对象接口的存储设备、用于管理和操作所述存储设备的方法以及包括所述存储设备的系统。

背景技术

技术进步促使应用程序依赖于大量数据(“大数据”)。例如,随着计算机处理能力的提高,使用大量数据执行计算的大数据应用程序变得可行并因此成为主流。由于数据量很大的特点,大数据通常存储在基于对象的存储系统中。例如,数据物理存储在数据库或存储设备中,对象用作用户希望存储或检索的分组数据的逻辑容器。主机可以从大数据中提取所需的数据用于计算,并且可以将提取的数据从存储系统传输到主机。

然而,虽然对大数据的计算可以产生有价值的应用,但从大数据中提取所需数据是耗时的。此外,从存储系统到主机的持续数据传输以及主机中的计算会消耗主机中的大量电力,这导致计算机不同组件之间的能量分配效率低下。此外,数据传输会消耗主机的带宽,并可能导致数据流量。

发明内容

根据本公开的一些实施例,提供了一种存储设备。存储设备可以包括:接口,被配置为从主机接收面向对象的命令;中央处理单元,其包括一个或多个核,被配置为基于所述面向对象的命令对存储在存储设备中的数据执行计算。存储设备可以实现为固态驱动器(SSD)。

存储设备还可以包括被配置为存储对象属性的第一存储器和被配置为存储对象数据的第二存储器。所述第一存储器可以包括多个非易失性存储器并且第二存储器可以包括多个NAND闪存。

存储设备还可以包括对象计算管理器,该对象计算管理器被配置为管理存储设备中的计算。存储设备还可以包括对象存储管理器,该对象存储管理器被配置为管理对象属性和对象数据分别在第一存储器和第二存储器中的存储。对象存储管理器可以包括将对象ID映射到第一存储器中的对象属性地址的对象属性转换表,以及将对象ID和偏移量的组合映射到第二个存储中对象数据地址的对象数据地址转换表。

存储设备还可以包括易失性存储器,其中易失性存储器可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和紧耦合存储器(TCM)中的一种。在存储设备中,计算可以包括压缩、压缩、循环冗余校验(CRC)或清理中的至少一种。

根据本公开的一些实施例,提供了一种用于操作存储设备的方法。该方法可以包括:存储设备从主机接收面向对象的命令;存储设备对存储在存储设备中的数据进行计算;存储装置将计算结果传送至主机。

该方法还可以包括:将对象属性存储在存储设备的第一存储器中;以及在存储设备的第二存储中存储对象数据。

在该方法中,面向对象的命令可以是由主机生成的低级应用程序编程接口(API)命令。在该方法中,第一存储器可以包括多个非易失性存储器并且第二存储器可以包括多个NAND闪存。在该方法中,存储设备中的计算可以包括压缩、压缩、循环冗余校验(CRC)或清理中的至少一种。

根据本公开的一些实施例,提供了一种数据处理系统,包括主机和存储设备。主机可以包括:处理器;存储器;和对象存储控制器,被配置为生成面向对象的命令;存储设备可以包括:易失性存储器;接口,其被配置为从主机接收面向对象的命令;中央处理单元,其包括至少一个核,被配置为对存储在存储设备中的数据执行计算。

在该系统中,存储设备还可以包括被配置为存储对象属性的第一存储器和被配置为存储对象的第二存储器。

在该系统中,主机的对象存储控制器还可以包括:应用程序编程接口(API)库,用于调用高级API;对象存储驱动器,被配置为将高级API转换为低级API以生成面向对象的命令。在该系统中,存储装置还可以用于将计算结果传送给主机。

附图说明

图1是示出与本公开的一些实施例一致的包括主机和对象接口存储设备的数据处理系统的框图。

图2是示出与本公开的一些实施例一致的对象计算管理方案的示意图。

图3是示出与本公开的一些实施例一致的对象存储管理方案的示意图。

图4是与本公开的一些实施例一致的示出在数据处理系统中执行的操作的流程图。

图5是与本公开的一些实施例一致的示出在存储设备中执行的操作的示意图。

具体实施方式

现在将详细参考示例性实施例,其示例在附图中示出。以下描述均参照附图,除非另有说明,否则不同附图中的相同数字表示相同或相似的元件。在以下描述的示例性实施例中阐述的实施方式不代表与本发明一致的所有实施方式。相反,它们仅仅是与所附权利要求中所述的与本发明相关的方面一致的装置和方法的示例。例如,虽然上下文中描述了一些利用非易失性存储器和闪存来存储对象的实施例,但是本公开不限于此。可以类似地应用当前可用或未来开发的其他类型的存储设备。

大数据物理上存储在数据库或存储设备中,对象被用作用户希望存储或检索的分组数据的逻辑容器。一个对象可能包含两部分,即对象数据和对象属性。在传统方法中,对象数据和对象属性一起存储在单个存储器中。然而,这种存储方法可能有其缺点,因为对象属性的大小通常小于对象数据的大小。

此外,传统上,主机可以从大数据中提取期望的数据用于计算,并且提取的数据可以从存储系统传输到主机。然而,从大数据中提取所需数据是耗时的。此外,从存储系统到主机的持续数据传输以及主机中的计算会消耗主机中的大量电力,导致计算机不同组件之间的能量分配效率低下。此外,数据传输会消耗主机的带宽,并可能导致数据流量。

所公开的实施例提供了一种存储设备,可以支持对象接口并在存储设备中执行与对象相关的操作。对象相关操作可以包括执行存储在存储设备中的数据的计算。通过在数据存储设备中执行计算,消除了主机从存储设备提取数据和计算数据的需要,使得数据处理更快。此外,通过消除主机中的数据传输和计算,减少了主机中的功耗和数据流量。

对象相关操作还可以包括存储设备中的对象存储管理。每个对象都有一个唯一的ID用于识别。对象数据存储在NAND闪存中,对象属性存储在非易失性存储器中。通过将具有不同大小的对象数据和对象属性分开存储,提高了存储使用效率,数据检索变得更加容易和快捷。

如本文所用,除非另外具体说明,否则术语“或”涵盖所有可能的组合,除非不可行。例如,如果声明一个数据库可能包含A或B,那么,除非另有明确说明或不可行,否则该数据库可能包含A、或B、或A和B。作为第二个例子,如果声明一个数据库可能包含A、B或C,然后,除非另有明确说明或不可行,否则数据库可能包含A、或B、或C、或A和B、或A和C、或B和C、或A和B和C。

现在参考图1,其示出了与本公开的一些实施例一致的包括主机和对象接口存储设备的数据处理系统的框图。如图1所示,数据处理系统100可以包括主机110和数据存储设备130。主机110可以包括处理器112、存储器114、用户接口116和存储设备控制器118。存储设备控制器118可以包括对象存储API库120和对象存储驱动器122。处理器104可以包括多个处理器。在一些实施例中,存储设备控制器118可以在处理器104中实现。

存储设备130可以包括中央计算单元(CPU)140,其包括多个核、动态随机存取存储器(DRAM)142、多个非易失性存储器144、多个闪存146、对象接口132和对象管理器134。对象管理器134可以包括对象存储管理器136和对象计算管理器138。在一些实施例中,存储设备130可以实现为固态驱动器(SSD)。在一些实施例中,DRAM 142可以用作存储设备130的主存储器并且可以由诸如静态随机存取存储器(SRAM)和紧密耦合存储器(TCM)之类的任何其他类型的易失性存储器代替。在一些实施例中,非易失性存储器144可以是但不限于只读存储器(ROM)、闪存、铁电RAM、SSD、硬盘驱动器、磁带或光盘。在一些实施例中,闪存146可以是NAND闪存或NOR闪存。主机110可以通过有线或无线通信与数据存储设备120通信。

主机110可以包括但不限于个人计算机、工作站、网络计算机、服务器计算机、应用处理器或具有一个或多个处理器的任何设备。存储器114可以存储与主机110或存储设备130相关的指令,并且处理器112被配置(通过其电路)以执行所述指令。

用户接口116可以包括显示器和输入设备。在一些实施例中,显示器可以被配置为显示在主机110中运行的应用程序或数据处理系统110中的数据处理的进度。显示器可以是用于向计算机用户显示信息的任何类型的计算机输出界面和显示文本和图形图像的投影机构,包括(但不限于)阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)、气体等离子体、触摸屏或其他图像投影技术。输入设备可以是用于从操作员向主机110提供数据和控制信号的任何类型的计算机硬件设备。输入设备可以包括但不限于键盘、鼠标、扫描仪、数字相机、操纵杆、轨迹球、光标方向键、触摸屏监视器或音频/视频命令器等,用于将方向信息和命令选择传送给处理器或用于控制显示器上的光标移动。

主机110可能需要提取存储在存储设备130中的数据并对数据执行计算。数据处理系统基于由主机110生成的命令执行存储内计算,而不是提取和传输所需的数据到主机110以进行计算。例如,主机110可以提供包括对象存储应用程序编程接口(API)库120的存储设备控制器118。当启动主机中的特定应用程序时,对象存储API库120调用面向对象的高级API。主机110还可提供对象存储驱动器122,其可将面向对象的高级API转换为面向对象的低级API,例如二进制代码或二进制文件,以生成面向对象的命令。存储设备控制器118可以将面向对象的命令传输到存储设备130。

在存储设备130中,对象接口132可以被配置为接收从主机110发送的面向对象的命令。对象接口132可以进一步将面向对象的命令存储在存储设备130的存储器中或者将命令提供给CPU 140,用于处理对象相关操作。在一些实施例中,面向对象的命令可以是用于基于该命令在CPU 140的核心中执行存储内计算的命令。存储内计算操作可以包括但不限于压缩操作、压缩操作、循环冗余校验(CRC)和清理操作。对象计算管理器138可以管理如图2所示的存储内计算操作。

现在参考图2,其示出了与本公开的一些实施例一致的一种对象计算管理方案的示意图。如图2所示,对象计算管理器138可以为每个计算任务分配唯一的对象ID,对计算类型进行分类,并在CPU 140的多个核中分配特定核。在一些实施例中,对象计算管理器138可以基于计算类型将CPU 140的特定核分配给计算任务。例如,如图2所示,具有对象ID 1和ID2的计算都是压缩类型计算,对象计算管理器138为该计算分配CPU 140的核#1。另一方面,对于具有对象ID 100的计算任务,计算类型是循环冗余校验(CRC)对象计算管理器138为该CRC分配CPU 140的核#2。在一些实施例中,对象计算管理器138可以基于计算的复杂度级别或计算的估计时间量来为计算任务分配CPU 140的特定核心。当计算任务完成时,对象计算管理器138通过对象接口132将计算结果传送到主机110。

通过在存储设备中执行计算,消除了对主机110从存储设备提取数据并执行计算的需要,使得主机中更快的数据处理和降低的功耗。并且,通过消除主机与存储设备之间的数据传输,减少了数据流量,并保留了主机的带宽用于其他用途,从而提高了主机的效率和速度。

返回到参考图1,对象管理器134还可以包括对象存储管理器136,其被配置为管理存储设备130中的数据存储。对象可以包含两部分,即对象数据和对象属性。与将对象数据和对象属性存储在单个存储器中不同,对象存储管理器136可以在闪存146中分配空间来存储对象数据并且在非易失性存储器144中分配空间来存储对象属性,如图3中所示。

现在参考图3,其为与本公开的一些实施例一致的示出一种对象存储管理方案的示意图。对象存储管理器136可以包括对象转换层,该对象转换层包括对象属性地址转换表和对象数据地址转换表。如对象属性地址转换表所示,对象存储管理器(未示出)可以为每个对象分配唯一的ID,并且每个ID被映射到非易失性存储器144上的对象属性地址。

对象存储管理模块还可以分配闪存146上的空间,其存储对象的数据。如对象数据地址转换表所示,对象存储管理器可以根据对象数据的大小为每个对象ID分配一个或多个偏移值。对象存储管理器还可以将每个具有指定偏移值的对象ID映射到闪存146的对象数据地址(例如,物理页号)。例如,对象ID#1具有两个对应的偏移,即偏移0和偏移4096,偏移量0被映射到闪存146的物理页号1,偏移量4096被映射到闪存146的物理页号2。对象存储管理器可以管理和更新对象属性地址转换表和对象数据地址转换表.这种映射方案允许单独存储对象属性和对象数据,即大小差异很大的两种类型的数据。通过将对象属性和对象数据分别存储在不同的存储器(非易失性存储器和闪存)中,可以更有效地利用存储器空间,使数据检索变得更加容易和快捷。

返回到参考图1,在一些实施例中,对象存储管理器136和对象计算管理器138可以是存储设备130(例如DRAM 142)的存储器中存储的指令(或软件)的功能块,CPU 140执行所述指令(或软件))来执行如上所述的对象存储管理器136和对象计算管理器138的功能。在一些实施例中,包括对象存储API库120和对象存储驱动程序122的存储设备控制器118可以是存储在存储器114中的指令(或软件)的功能块,处理器112执行所述指令(或软件)以执行如上所述的对象存储API库120和对象存储驱动程序122的功能。

现在参考图4,其为与本公开的一些实施例一致示出数据处理系统中的操作的示意图。如图4所示,在步骤410,在主机(例如图1的主机110)中启动应用程序。在步骤420,应用程序可以调用主机的对象存储API库中的面向对象的高级API,例如图1的存储设备控制器118的对象存储API库120。

在步骤430,主机的对象存储驱动器(例如,存储设备控制器118的对象存储驱动器122)可以解释高级API并将其转换成对应的面向对象的低级命令。在转换之后,在步骤440,对象存储驱动器可以将命令发送到存储设备,例如图1的存储设备130。在接收到命令之后,在步骤450,存储设备可以执行存储设备中的命令并将执行结果发送回主机应用程序。

请参考图5,其为与本公开的一些实施例一致的示出在存储设备(例如图1的存储设备130)中执行的操作的示意图。如图5所示,在步骤510,存储设备可以从主机(例如图1的主机110)接收面向对象的命令。在一些实施例中,该命令是用于在存储设备中执行计算的命令。例如,存储设备中命令的执行可以调用与特定对象相关联的计算任务的调度并且在指定的CPU核上运行该任务。在步骤520,存储设备执行命令并对存储在存储设备中的数据执行计算。存储内计算可以包括但不限于压缩(compaction)操作、压缩(compression)操作、循环冗余校验(CRC)和清理操作。在步骤530,存储设备向主机发送计算结果。这样,在存储设备中实现了面向对象的计算,由存储设备执行主机指定的计算,从而使主机中的数据处理速度更快,功耗降低,数据流量减少。

在一些实施例中,该命令可以提供存储设备中的地址空间管理。在步骤540,存储设备可以将对象属性存储在存储设备的第一存储器中。例如,当命令在存储设备中执行时,存储设备可以在非易失性存储器中分配空间来存储对象属性。在步骤550,存储设备可以将对象数据存储在存储设备的第二存储器中。例如,当命令在存储设备中执行时,存储设备可以在闪存中分配空间来存储对象数据。这样,实现了在存储设备中面向对象的存储管理,将对象属性和对象数据分开存储,实现了存储的高效利用,存储数据的快速检索。

上面参考方法、装置(系统)和计算机程序产品的流程图或框图描述了示例实施例。应当理解,流程图或框图的每个框,以及流程图或框图中的框的组合,可以由计算机程序产品或计算机程序产品上的指令来实现。这些计算机程序指令可以提供给计算机的处理器或其他可编程数据处理装置以生成一机器(例如,主机110或存储设备130),使得经由计算机的处理器或其他可编程数据处理设备执行的指令创建用于实现流程图或框图的框或框中指定的功能/动作的装置。

这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以引导计算机的硬件处理器核心、其他可编程数据处理装置或其他以特定方式运行的设备,使得存储在计算机可读介质的指令形成包括实现流程图或框图的框或框中指定的功能/动作的指令的制品。

计算机程序指令也可以被加载到计算机、其他可编程数据处理设备或其他设备上,以使得在计算机、其他可编程设备或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图或框图的框或框中指定的功能/动作的过程。

可以利用一种或多种计算机可读介质的任何组合。计算机可读介质可以是非暂时性计算机可读存储介质,例如,但不限于,电子、磁、光、电磁、红外或半导体系统、装置或设备,或前述的任何合适的组合。计算机可读存储介质的更具体示例(非详尽列表)将包括以下内容:具有一根或多根电线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM、EEPROM或闪存)、光纤、云存储、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备,或上述任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是可以包含或存储由指令执行系统、装置或设备使用或与其结合使用的程序的任何有形介质。

包含在计算机可读介质上的程序代码可以使用任何合适的介质来传输,包括但不限于无线、有线、光纤电缆、RF、IR等,或者前述的任何合适的组合。

用于执行示例实施例的操作的计算机程序代码可以用一种或多种编程语言的任何组合编写,包括面向对象的编程语言,例如Java、Smalltalk、C++等,和传统的过程编程语言,例如作为“C”编程语言或类似的编程语言。程序代码可以完全在用户计算机上、部分在用户计算机上、作为独立软件包、部分在用户计算机上部分在远程计算机上,或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机的连接(例如,使用互联网服务提供商通过互联网)。

图中的流程图和框图示出了根据各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作的示例。就这一点而言,流程图或框图中的每个框可表示模块、段或代码的一部分,其包括用于实现一个或多个指定逻辑功能的一个或多个可执行指令。还应当注意的是,在一些替代实施方式中,框中标注的功能可以不按照图中标注的顺序出现。例如,根据所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者有时可以以相反的顺序执行这些块。还将注意到,框图或流程图说明的每个框,以及框图或流程图说明中的框的组合,可以由执行专用硬件和计算机指令的指定功能或动作或其结合的基于专用硬件的系统来实现。

应当理解,所描述的实施例不是相互排斥的,并且结合一个示例实施例描述的元件、部件、材料或步骤可以以合适的方式与其他实施例组合或从其他实施例中去除以实现期望的设计目标.

本文对“一些实施例”或“一些示例性实施例”的引用意味着结合实施例描述的特定特征、结构或特性可以包括在至少一个实施例中。说明书中各个地方出现的“一个实施例”、“一些实施例”或“一些示例性实施例”等词语不一定指同一实施例,单独或替代的实施例也不一定与其他实施例相互排斥。

应当理解,这里阐述的示例方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应当理解为仅仅是示例。同样,在与各种实施例一致的方法中,在这样的方法中可以包括额外的步骤,并且可以省略或组合某些步骤。

如在本申请中使用的,词语“示例性”在本文中用于表示用作示例、实例或说明。在此描述为“示例性”的任何方面或设计不一定被解释为优于或优于其他方面或设计。相反,该词的使用旨在以具体的方式呈现概念。

此外,除非另有说明或从上下文中清楚地指向单数形式,否则本申请和所附权利要求中使用的冠词“一个(a)”和“一个(an)”通常应被解释为表示“一个或多个”。

在权利要求中使用附图编号或附图参考标签旨在标识所要求保护的主题的一个或多个可能的实施例以便于对权利要求的解释。这种使用不应被解释为必然将那些权利要求的范围限制到相应图中所示的实施例。

尽管以下方法权利要求中的要素(如果有的话)以具有相应标记的特定顺序叙述,除非权利要求叙述另外暗示用于实现这些要素中的一些或全部的特定顺序,这些要素不旨在仅限于以该特定顺序实施。

还应当理解,本领域技术人员可以在不脱离本所附权利要求所表达的范围的前提下,可以对为了解释所描述的实施例的性质而描述和示出的部件的细节、材料和布置进行各种改变。

相关技术
  • 用于管理非易失性存储器和闪存作为计算对象接口固态驱动器的方法和装置
  • 用于可扩展低时延固态驱动器接口的方法和装置
技术分类

06120113279980