具有驱动器内数据分析的非易失性存储系统的制作方法

文档序号:14897312发布日期:2018-07-08 08:46阅读:232来源:国知局

本公开涉及存储技术,更具体地,涉及非易失性存储设备和操作非易失性存储装置的方法。



背景技术:

固态驱动器(ssd)是在基于固态的存储器中存储持久性数据的非易失性存储设备。由于改善了成本、功率和速度,ssd已经变得越来越流行用于存储企业数据或其它大量数据,这些数据通常被称为“大数据”。

大数据分析涉及对大尺寸非结构化数据(大约千兆字节、兆兆字节或更高的量级)运行分析算法,以导出有助于做出与商业、安全性、人类行为、经济学、社会趋势等有关的判断的信息和模式。数据可以是包括文本数据、视频数据、语音数据、数字等的超大尺寸的文件。典型的数据分析程序流程涉及分析应用程序,该分析应用程序从硬盘驱动器(hdd)或ssd读取一组文件到主机(例如,分析服务器)的存储器中,对“内存”数据运行数据分析算法,以及利用结果作出判断。方案遭受通过存储网络(san)将巨大数据集从存储器(例如hdd或ssd)读取到主机存储器中的瓶颈。此外,上述用于大数据分析的方法在主机系统存储器要求和网络使用方面都是昂贵的。



技术实现要素:

在本公开的一个方面中,提供一种非易失性存储设备,包括:多个非易失性存储元件;以及连接到非易失性存储元件的处理器,所述处理器被配置为当对非易失性存储元件的第二子集执行输入/输出操作时,对非易失性存储元件的第一子集执行数据分析。

在本公开的另一方面中,提供一种操作非易失性存储装置的方法,所述方法包括:在分析模式和i/o模式之间单独地切换在非易失性存储系统中的非易失性存储装置的部分;以及当处于i/o模式的非易失性存储装置的部分可用于并行i/o操作时,对处于分析模式的非易失性存储器的部分执行数据分析。

附图说明

相似编号的元件指的是在不同的图中的共同的组件。

图1是具有固态驱动器的系统的框图。

图2是具有使用存储网络以访问固态驱动器的系统的框图。

图3是固态驱动器的一个示例的框图。

图4是固态驱动器的一个示例的框图。

图5是非易失性存储器裸芯的框图。

图6是非易失性存储器结构的框图。

图7是描述用于操作固态驱动器或其它非易失性存储设备的处理的一个实施例的流程图。

图8是固态驱动器的一个示例的框图。

图9是固态驱动器的一个示例的框图。

图10是描述用于操作与固态驱动器或其它非易失性存储设备交互的服务器(或其它外部计算设备)的处理的一个实施例的流程图。

图11是用于在i/o(输入/输出)模式和分析模式之间切换非易失性存储设备的指令的一个示例格式的框图。

图12是描述用于操作固态驱动器或其它非易失性存储设备的处理的一个实施例的流程图。

图13是划分成多个虚拟驱动器的固态驱动器的一个示例的框图。

图14是划分成多个虚拟驱动器的固态驱动器的一个示例的框图。

具体实施方式

为了减少由于将大数据从hdd或sdd读入分析服务器存储器而导致的大数据分析的延迟,提出执行驱动器内分析(analyticsin-drive),意味着数据分析在ssd内部执行。执行驱动器内分析有几个优点。首先,将会减少网络通信量(traffic),从而得到更快的数据分析和网络用于其它用途的可用性。第二,分析服务器可以是具有减小的存储器尺寸和更慢的处理器的相对较小的配置机器,从而节省成本和功率。

为了完成这种驱动器内分析,提出在i/o模式和分析模式之间动态切换ssd的部分(例如,存储器的块或其它单位)。在一个实施例中,该切换由ssd附接到且/或被包围的服务器或存储包装(storageenclosure)执行。i/o模式下的ssd的部分可以被用来擦除、编程和读取主机数据(输入/输出或i/o操作)。可以根据每个任何大数据分析算法来分析在分析模式中的ssd的部分中存储的数据。这种方案是非常有价值的,因为它排除了当“驱动器内”数据分析正在进行中时、使得整个ssd对服务器不可用的要求。当单一物理驱动器在多个客户机操作系统之间被分割作为虚拟存储装置、使得避免将所有客户机操作系统锁定以使得其能够执行数据分析时,该优点在虚拟的环境中还是有用的。这个提议允许,当ssd块的子集将处于分析状态时,持续进行不间断的i/o操作。

在一些实施例中,为了允许定制的数据分析,系统允许由主机/分析服务器将分析逻辑下载到ssd上,以利用ssd内的处理能力对存储在ssd中的数据执行分析。以这种方式,分析服务器可以触发对包含驻留在ssd上的非结构化数据(文本、视频、音频、图像等)的文件的分析。分析逻辑可以是编程处理器的软件或配置fpga的逻辑。

尽管这里讨论的示例系统中许多是ssd的,但是这里描述的技术不限于ssd的并且可以用其它类型的存储设备来实施。

图1是使用ssd计算系统的一个示例的框图。图1示出了由内部总线、网络、外围端口、hdd接口、无线接口等连接到ssd100的外部计算设备20。不要求特定的通信手段。在一些示例中,可以使用诸如sas、scsi、sata或nvme的标准接口。外部计算设备20可以是分析服务器、应用服务器、web服务器、其它类型的服务器、个人计算机,网络电器等。有时连接到ssd的计算设备被称为主机。外部计算设备20可以指示ssd100将存储器的部分从i/o模式切换到分析模式,将软件(包括固件)下载到ssd100,并且指示ssd100当ssd的非易失性存储器的其它部分处于i/o模式并且可用于并行i/o操作时,运行编程ssd以对处于分析模式的非易失性存储器的部分执行数据分析的软件。在该上下文中,“并行(concurrent)”被用来指示i/o操作与数据分析的执行在时间上重叠。

图2是具有使用存储网络以访问固态驱动器的系统的框图。多个客户端计算机30经由局域网(lan)50访问多个服务器40。客户端计算机可以是个人计算机、膝上型计算机、智能电话、移动计算设备、网络电器,服务器等。服务器40可以是分析服务器、应用服务器、web服务器或其它类型的服务器。不要求特定类型的客户端计算机30或服务器40。为了执行由客户端计算机30分配的任务,服务器40将经由存储区域网络(san)60访问在ssd100中的任何一个或多个上的数据(例如,“大数据”)。san是可提供对存储装置的块级网络访问的专用高速网络。san典型地包括使用各种技术、拓扑和协议互连的主机、切换机、存储元件和存储设备。san也可能跨越多个站点。存储区域网络是本领域熟知的并且不要求特定类型的san用于与这里提出的技术一起使用。

为了进一步执行对客户端计算机30的任务,服务器40可以指示ssd100将存储器的部分从i/o模式切换到分析模式,将软件(包括固件)下载到ssd100,并且指示ssd100在ssd的非易失性存储器的其它部分处于i/o模式并且可用于并行i/o操作时,运行编程ssd以对处于分析模式的存储器部分执行数据分析的软件。在一些实施例中,ssd100中的任何一个可以与服务器40中的任何一个交互。在其它实施例中,一些ssd可以仅与服务器的子集交互。

图3是ssd100的一个示例的框图。然而,在图3中描绘的架构也可以被用来实施其它类型的非易失性存储设备。ssd100包括连接到一个或多个非易失性存储器裸芯108的控制器122。如这里所使用的,对于使用非易失性存储器的系统,控制器是管理存储在非易失性存储器上的数据并且与诸如外部计算设备20或服务器40的主机进行通信的设备。除了这里描述的特定功能之外,控制器122还可以具有各种功能。例如,控制器122可以格式化非易失性存储器以保证存储器适当地操作,映射出坏的存储器单元(存储装置的物理单位),并且分配备用存储器单元以替代未来的故障单元。备用存储器单元的一些部分可以被用来保持固件以操作控制器并且实施其它功能。在操作中,当主机需要从闪存读取数据或向闪存写入数据时,它将与控制器122通信。如果主机提供要读/写数据的逻辑地址,则控制器122将从主机接收的逻辑地址转换为在物理闪存中的物理地址。(可替换地,主机可以提供物理地址)。控制器122还可以执行各种存储器管理功能,例如但不限于磨损均衡(在存储器裸芯或存储器裸芯的块之间分布写入操作以避免磨损否则将被重复写入的特定存储器块)和垃圾收集(在块满后,仅将有效的数据页移动到新的块,因此可以擦除并重新使用该满的块)。

控制器122和非易失性存储器裸芯108之间的接口可以是诸如开关模式(togglemode)200、400或800的任何合适的闪存接口。在一些实施例中,ssd100包括控制器122和非易失性存储器裸芯108之间的单一通道(channel);然而,这里描述的主题不限于具有单一存储器通道。例如,在一些存储器系统架构中,取决于控制器能力,控制器12和存储器裸芯108之间可能存在2、4、8或更多通道。在这里所描述的任何一个实施例中,即使在附图中示出单一通道,在控制器122和存储器裸芯108之间也可以存在多于一个的通道。

如图3中所描绘的,控制器122包括与主机(例如,外部计算设备20或服务器40)接口的前端模块208、与一个或多个非易失性存储器裸芯108接口的后端模块210、以及执行将要现在描述的功能的各种其它模块。

图3中描绘的控制器122的组件可以采取如下形式:被设计为与其它组件一起使用的封装功能硬件单元(例如电路)、可由(微)处理器或通常执行相关功能的特定功能的处理电路执行的程序代码(例如,软件或固件)的部分、或与更大系统接口的自包含的硬件或软件组件。例如,每个模块可以包括专用集成电路(asic)、现场可编程门阵列(fpga)、电子电路、数字逻辑电路、模拟电路、离散电路的组合、门或任何其它类型的硬件或它们的组合。可替换地或此外,每个模块可以包括存储在处理器可读设备(例如,存储器)中的软件以对处理器编程以执行这里描述的功能。

再次参考控制器122的模块,缓冲器管理器/总线控制器214管理随机存取存储器(ram)216并且控制控制器122的内部总线仲裁。只读存储器(rom)218存储系统引导(boot)代码。尽管在图3中示出的作为位于与控制器122分开,但在其它实施例中,ram216和rom218中的一个或两个可以位于控制器内。然而在其它实施例中,ram和rom的部分既可以位于控制器122的内部,也可以位于控制器122的外部。另外,在一些实施方式中,控制器122、ram216和rom218可以位于分开的半导体裸芯上。

前端模块208包括提供与主机或下一级存储控制器的电接口的主机接口220和物理层接口(phy)222。主机接口220的类型的选择可以取决于正使用的存储器的类型。主机接口220的示例包括但不限于:sata、sataexpress、sas、光纤通道、usb、pcie和nvme。主机接口220典型地便于数据、控制信号和定时信号的传递。在一个实施例中,前端模块208提供适配于与用于ssd100的控制器122和存储器裸芯108的外部计算设备通信的单一通信接口。

后端模块210包括对从主机接收的数据字节进行编码并且对从非易失性存储器裸芯108读取的数据字节进行解码和错误纠正的纠错码(ecc)引擎224。命令定序器226生成要被发送到非易失性存储器裸芯108的诸如编程和擦除命令序列的命令序列。raid(redundantarrayofindependentdies,独立裸芯的冗余阵列)模块228管理raid奇偶校验的产生和失败的数据的恢复。raid奇偶校验可以用作对于被写入到非易失性存储器系统100中的数据的附加级别的完整性防护。在一些情况下,raid模块228可以是ecc引擎224的部分。注意,如共同名称所暗示的,raid奇偶校验可以作为额外的裸芯或多个裸芯添加,但也可以在现有裸芯内添加,例如,作为额外的平面、或额外的块、或块内的额外的wl(字线)。存储器接口230将命令序列提供给非易失性存储器裸芯108,并且从非易失性存储器裸芯108接收状态信息。在一个实施例中,存储器接口230可以是诸如开关模式200、400或800接口的双数据速率(ddr)接口。闪存控制层232控制后端模块210的整体操作。

在图3中所示的ssd100的附加组件包括执行非易失性存储器裸芯108的存储器单元的磨损均衡的介质管理层238。系统100还包括可以与控制器122接口的诸如外部电接口、外部ram、电阻器、电容器或其它组件的其它离散组件240。在替换性实施例中,物理层接口222、raid模块228、介质管理层238和缓冲器管理器/总线控制器214中的一个或多个是在控制器122中不必要的可选组件。

闪存转换层(ftl)或介质管理层(mml)238可以被集成为作为可以处理闪存错误的闪存管理的一部分并与主机接口。具体地,mml负责非易失性存储器管理的内部。具体地,mml238可以包括在存储器设备固件中的算法,该算法将来自主机的写入转换成对存储器裸芯108的存储器的写入。可能需要mml238,因为:1)存储器可能具有有限的耐久力;2)只能以多个页写入存储器;和/或3)除非将存储器作为块擦除,否则存储器可能不被写入。mml238理解对主机可能不可见的存储器的这些潜在限制。因此,mml238尝试将来自主机的写入转换成到闪存126的写入。如下所述,可以使用mml238来识别和记录错误的位。该错误的位的记录可以用于评估块和/或字线(字线上的存储器单元)的健康。

控制器122的一个实施例包括可以仅仅是硬件(例如,电路)或者是在处理器上运行的软件的数据分析模块236。数据分析模块236管理将存储器的部分从i/o模式切换到分析模式,将软件(包括固件)下载到控制器100,并且当ssd的非易失性存储器的其它部分处于i/o模式并且执行并行i/o操作时,运行下载的软件以对处于分析模式的非易失性存储器的部分执行数据分析。

非易失性存储系统的一些实施例将包括连接到一个控制器122的一个存储器裸芯108。然而,其它实施例可以包括与一个或多个控制器122通信的多个存储器裸芯108。在图4中描绘的一个示例中,多个存储器裸芯可以被分组为一组存储器数据包(packet)。每个存储器数据包包括与控制器122通信的一个或多个存储器裸芯108。图4示出了用于在控制器122和相应的存储器数据包0-n的存储器裸芯108之间进行通信的n+1个存储器数据包(数据包0-数据包n)和n+1个通道(通道0-通道n)。在一个实施例中,存储器数据包包括其上安装有一个或多个存储器裸芯108的印刷电路板(或类似结构)。在一些实施例中,存储器数据包可以包括包装(encase)存储器数据包的存储器裸芯108的造模(molding)材料。在一个实施例中,存储器数据可以是单一存储器裸芯108。在一些实施例中,控制器122与任何存储器数据包中的任何一个存储器数据包物理地分开。

图5是示例存储器裸芯108的功能框图。图5中描绘的组件是电路。在一个实施例中,存储器裸芯108包括存储器单元的单片三维存储器结构126(诸如,例如,存储器单元的3d阵列)、控制电路110、和读/写电路128。在其它实施例中,可以使用存储器单元的二维阵列。存储器结构126可以经由行解码器124的字线和经由列解码器132的位线来寻址。读/写电路128包括包括sb1、sb2、…、sbp(感测电路)的多个感测块150并且允许平行地读取或编程一页存储器单元。命令和数据经由信号线118在控制器122和存储器裸芯108之间被传递。在一个实施例中,存储器裸芯108包括连接到线118的一组输入和/或输出(i/o)引脚。

存储器结构126的一个实施例包括其中多个存储器级别被形成在诸如晶圆的单一基板(substrate)上(而不是其中)而没有中间基板的单片三维存储器结构。存储器结构可以包括以具有排列在硅基板上方的有源区的存储器单元的阵列的一个或多个物理级而单片地形成的任何类型的非易失性存储器。在一个实施例中,存储器结构126实现三维nand闪存。三维nand闪存的一个示例可以在美国专利申请2016/0300619中找到,其通过引用它的全部被合并这里。其它实施例包括二维nand闪存、二维nor闪存、reram交叉点存储器、磁阻存储器(例如,mram)、相变存储器(例如,pcram)等等。

控制电路110与读/写电路128协作以对存储器结构126执行存储器操作(例如,擦除、编程、读取等等),并且包括状态机112、片上地址解码器114和功率控制模块116。状态机112提供存储器操作的裸芯级(die-level)控制。在一个实施例中,状态机112可由软件编程。在其它实施例中,状态机112不使用软件并且完全在硬件(例如,电路)中实施。在一个实施例中,控制电路110包括寄存器、rom保险丝和用于存储诸如基础电压(basevoltage)和其它参数的默认值的其它存储设备。片上地址解码器114提供在由主机140或控制器122使用的地址(addr)与由解码器124和132使用的硬件地址之间的地址接口。功率控制模块116控制在存储器操作期间供应给字线和位线的功率和电压。它可以包括用于字线、选择晶体管、源极线和其它组件的驱动器。功率控制模块116可以包括用于创建电压的电荷泵。感测块150包括位线驱动器。

控制电路110、状态机112、解码器114/124/132、功率控制模块116、感测块150、读/写电路128、和控制器122中的任何一种或任何组合可以被考虑为执行这里描述的功能的一个或多个控制电路。

存储器结构126中的多个存储器元件可以被配置为使得它们串联连接或使得每个元件是单独可访问的。通过非限制性示例的方式,nand配置(nand闪存)的闪存设备典型地包含串联连接的存储器元件。nand串是可以在存储器结构126内使用的串联存储器单元和选择栅极晶体管的集合的示例。nand闪存阵列可以被配置为使得阵列由多个nand串构成,其中nand串由共享单一位线并作为一组访问的多个存储器单元构成。可替换地,存储器元件可以被配置为使得每个元件是单独可访问的,例如nor存储器阵列。nand和nor存储器配置是示范性的,并且可以另外配置存储器单元。

存储器单元可以以单一存储器设备级被排列在诸如多个行和/或列中的顺序阵列中。然而,存储器元件可以排列成非规律或非正交配置,或在不被考虑为阵列的结构中。

在一个实施例中,三维存储器阵列被排列成使得存储器单元占据多个平面或多个存储器设备级,从而形成三维结构(即,在x、y和z方向上,其中z方向基本上垂直于并且x和y方向基本上平行于基板的主表面)。作为非限制性示例,三维存储器结构可以垂直地排列为多个二维存储器设备级的栈(stack)。作为另一非限制性示例,三维存储器阵列可以被排列为每个列具有多个存储器单元的多个垂直列(例如,基本上垂直于基板的主表面延伸的列,即在y方向上延伸的列)。垂直列可以以二维配置排列,例如在x-y平面中,得到存储器单元的三维排列,其中存储器单元在多个垂直堆叠的存储器平面上。三维存储元件的其它配置也可以构成三维存储器阵列。

通过非限制性示例的方式,在三维nand存储器阵列中,存储器元件可以耦合在一起以形成横跨过多个水平存储器设备级的垂直nand串。可以预期其它三维配置,其中一些nand串当其它字符串包含跨越通过多个存储器级的存储器元件时将存储器元件包含在单一存储器级中。也可以在nor配置中设计三维存储器阵列。

一个示例存储器系统是包括具有电荷俘获(trapping)材料的垂直nand串的三维存储器结构。其它(2d和3d)存储器结构也可以与这里所描述的技术一起被使用。例如,可以使用浮置栅极存储器(例如,nand型和nor型闪存)、reram交叉点存储器、磁阻存储器(例如mram)和相变存储器(例如,pcram)。

reram交叉点存储器的一个示例包括排列在由x线和y线(例如字线和位线)访问的交叉点阵列中的可逆电阻切换元件。在另一实施例中,存储器单元可以包括导电桥存储器元件。导电桥存储元件也可以称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电桥存储器元件可以被用作状态改变元件。在一些情况下,导电桥存储器元件可以包括两个固体金属电极、一个相对惰性的(例如,钨)和另一个电化学活性(例如,银或铜),两个电极之间具有固体电解质的薄膜。随着温度增加,离子的移动性也增加,导致导电桥存储器单元的编程阈值减小。因此,导电桥存储器元件可以具有相对于温度的宽范围的编程阈值。

磁阻存储器(mram)通过磁性存储器元件存储数据。元件由两个铁磁板形成,每个铁磁板可以保持由薄绝缘层分开的磁化。两个板之一是设置为特定极性的永磁体;另一个板的磁化可以被改变以匹配外部场的磁化以存储存储器。这配置被公认为自旋阀,是mram位的最简单的结构。从这种的存储器单元的网格建立存储器设备。在用于编程的一个实施例中,每个存储器单元位于彼此成直角排列的一对写入线之间,该一对写入线平行于单元,一个在单元之上和一个在单元之下。当电流穿过它们时,创建感应磁场。

相变存储器(pcram)利用硫系玻璃的唯一行为。一个实施例使用gete-sb2te3超晶格通过简单地利用激光脉冲(或来自另一源的光脉冲)改变锗原子的协调状态以实现非热相变。因此,编程的剂量是激光脉冲。可以通过阻挡存储器单元接收光来禁止存储器单元。注意在这个文档中使用的“脉冲”不要求方波,但是包括(连续或非连续的)声音、电流、电压光或其它波的振动或突发。

本领域普通技术人员将认识到,这里所描述的技术不限于单一特定的存储器结构,而是在如这里所述的和如本领域普通技术人员中的一个所理解的技术的精神和范围内覆盖许多相关的存储器结构。

图6是描绘如何将一个存储器裸芯108的存储器结构126划分成m个物理块(例如,块0、块1、块2、…块m-1)的框图。在一些实施例中,一块是擦除的单位。在一些实施例中,一块非易失性存储器元件共享一组公共的位线和字线。

在具有多个存储器裸芯108的系统中,ssd(或其它非易失性存储器设备)的所有存储裸芯108的物理块每个被分配单一唯一逻辑块地址lba空间(或逻辑地址空间)的唯一逻辑块地址(lba),使得主机或其它外部计算设备使用lba寻址ssd的每个可用块。在一些实施例中,控制器122将执行lba和物理块地址之间的转换。

如上所讨论的,提出执行驱动器内数据分析。图7是描述用于执行ssd或其它非易失性存储设备的驱动器内数据分析的处理的一个实施例的流程图。在步骤302中,非易失性存储系统(例如,ssd100)在分析模式和i/o模式之间单独地切换在非易失性存储系统中的非易失性存储器的部分。在步骤304中,当处于i/o模式的非易失性存储器的部分可用于并行i/o操作时,非易失性存储系统(例如,ssd100)对处于分析模式的非易失性存储器的部分执行数据分析。下面讨论更多细节。

图8是可以实施图7的处理的固态驱动器400的一个示例的框图。在图8中所描述的结构也可以被用来实施非易失性存储设备而不是ssd。可以实施图3和/或图4(以及其它架构)的架构的ssd400与外部计算设备402通信,外部计算设备402可以是分析服务器、应用服务器、web服务器、其它类型的服务器、个人计算机、网络电器等。ssd400包括处理器410、ram412和非易失性存储器414。处理器410被配置为将软件下载到程序处理器410以执行这里所描述的数据分析。一旦被编程,处理器410被配置为在分析模式和i/o模式之间单独地切换非易失性存储器414的非易失性存储元件的子集。处理器410可以包括一个处理器或多个处理器。例如,处理器410可以是多核处理器。处理器410可以实施控制器122(如图3中所描绘的或不同的架构)。在一个实施例中,单一处理器(一核或多核)将执行数据分析和输入/输出操作。在另一实施例中,处理器410包括用于执行输入/输出操作的第一处理器电路和用于执行数据分析的第二处理电路。在一个示例实施方式中,处理器410包括用于执行输入/输出操作的控制器122和用于执行数据分析的单独分析处理器电路。在一些实施例中,处理器410包括特定于一个或多个数据分析操作的一个或多个硬件加速器。例如,可以包括用于公共分析操作(如模式匹配)的硬件加速器。

处理器410与ram412通信。在一个实施例中,ram412与图3的ram216相同。图8示出了包括分析管理数据/代码422、分析程序424、分析数据426和分析结果428的ram412。分析管理数据/代码422被用来编程处理器410,以便从外部计算设备402下载分析软件并且与外部计算设备402通信(包括解释来自外部计算设备402的指令并对这些指令行动)。分析程序424是从编程处理器410以执行这里所描述的数据分析的外部计算设备402下载的软件。分析数据426是由处理器410使用以执行数据分析的任何数据。在一些实施例中,正被分析的数据的全部或部分(存储在非易失性存储器414中)可以被复制到ram412中、在分析数据426中。由处理器410执行的数据分析的结果被存储在分析结果428中,并且可以被报告给外部计算设备402。

图8中描绘的非易失性存储器414由存储器裸芯108中的一个或多个存储器裸芯来实施。此外,如图4中所描绘的,非易失性存储器414可以在一个或多个数据包中实施。如上所讨论的,在一个或多个存储器裸芯中的非易失性存储器被分组成物理块,并且跨多个存储器裸芯的物理块被分配了逻辑块地址。因此,图8示出了编号为lba0、lba1、lba2、lba3、lba4、lba5、lba6、lba7、…lban的n+1个逻辑块地址。响应于来自外部计算设备402的指令,处理器410可以在分析模式和i/o模式之间切换一个或多个逻辑块(一个或多个逻辑块地址)。为了示例用途,图8示出了没有阴影的lba0、lba1、lba2、lba5、lba6、lba7和lban以指示那些逻辑块处于i/o模式。逻辑块lba3和lba4被阴影化以指示这两个逻辑块处于分析模式。因此,当对存储在其它逻辑块中的存储器单元中的数据并行执行输入/输出操作时,处理器410可以对存储在lba3和lba4的存储器单元中的数据执行数据分析。输入/输出操作包括接收数据并且将该数据编程到非易失性存储器414中,以及从非易失性存储器414读取数据并且将该读取的数据报告给外部计算设备402。

在一个实施例中,处理器410被配置为对于不同的逻辑块(或非易失性存储元件的不同子集)并行执行不同的数据分析。如图8中所描绘的,一个示例实施例包括处理器410、ram412和包括单一固态驱动器的非易失性存储器414。处理器410被配置为使用单一逻辑地址空间用于在非易失性存储器414(跨所有存储器裸芯108)中寻址所有存储器块。另外,如图8中所描绘的,处理器410和非易失性存储器414经由适配于与外部计算设备402通信的单一通信接口与任何外部计算设备(例如,外部计算设备402)通信。单一通信接口由处理器410实施。例如,图3示出了用于与主机/外部计算设备接口的主机接口420。

图9是可以实施图7的处理的固态驱动器450的另一示例的框图。固态450连接到外部计算设备402并与外部计算设备402通信。ssd450包括连接到ram412和非易失性存储器414的处理器460。图9的实施例与图8的实施例之间的差异在于,ssd450的处理器460包括用于执行输入/输出操作的第一处理器电路和用于执行数据分析的(与第一处理器电路分离的)第二处理器电路。更具体地,处理器460包括控制器462和分离的分析处理器464。控制器462和分析处理器464都是电子电路,并且可以由微处理器、fpga、asics、定制集成电路等来实施。在一个实施例中,控制器462和分析处理器464是没有软件的专用硬件。在其它实施例中,控制器462和分析处理器464是由软件编程的电路。在一个实施例中,分析处理器464可以包括一个或多个硬件加速器以执行特定的数据分析操作。

图10是描述用于操作用于与固态驱动器400或450、或其它非易失性存储设备交互的外部计算设备(例如分析服务器)的处理的一个实施例的流程图。在步骤502中,外部计算设备识别对于要被分析的数据的一个或多个逻辑块地址。在步骤504中,外部计算设备将向ssd(或其它非易失性存储设备)发送指令,以将那些识别的逻辑块地址从i/o模式切换到分析模式。可以对处于i/o模式的块编程、擦除和读取。处于分析模式中的块不能被编程或擦除;然而,处于分析模式中的块可以被用于数据分析。在步骤506中,外部计算设备将分析软件下载到ssd。下载的软件将编程ssd以执行数据分析(分析逻辑)。在步骤508中,外部计算设备向ssd发送命令以运行下载的软件。响应该命令,ssd将运行软件以配置ssd对处于分析模式的块(而不是处于i/o模式的块)执行数据分析。在步骤510中,外部计算设备从ssd接收数据分析完成的确认。在步骤512中,外部计算设备向ssd发送读取的命令以读取数据分析的结果。例如,响应于在步骤512中的命令将读取存储在ram412中的分析结果428。在步骤514中,数据分析的结果将从ssd发送并在外部计算设备接收。在步骤516中,外部计算设备向ssd发送指令以将逻辑块地址从分析模式切换回i/o模式。

图10的步骤504包括向ssd发送指令以将一个或多个逻辑块地址从i/o模式切换到分析模式。图11是描述这种指令的形式的框图。在一个实施例中,指令包括每个32位宽的三个消息。第一个消息是逻辑块地址的第一32位(lga0-31)。第二个消息包括逻辑块地址的16位(lba32-47),15位上下文id和1位模式。第三个消息包括32位范围长度。lba指示第一逻辑块地址。范围长度(rangelength)指示从lba开始需要切换多少个逻辑块地址。因此,如果范围长度为1,则仅切换命令中的逻辑块地址。如果范围长度为10,则切换从命令中的逻辑块地址开始的10个连续的逻辑块地址。如果模式位具有值为“1”,则识别的一个或多个逻辑块地址从i/o模式移动到分析模式。如果是设置为“0”的模式,则识别的一个或多个逻辑块地址从分析模式移动到i/o模式。上下文id是识别对于未来命令的数据分析处理的唯一id。在一个实施例中,外部计算设备可以对于多组逻辑块地址发出多个命令以移动到分析模式。因此,处理器可以被配置为对不同组的逻辑块地址执行不同的数据分析。每个数据分析/逻辑块地址集合将具有它自己的上下文id。因此,对分析结果、读取的命令等的引用可以使用上下文id以指示正引用适当的数据分析处理。例如,当lba1000和lba1001被移动到分析模式以执行第二子数据分析时,也许lba1和lba2会被移动到分析模式以执行第一数据分析。系统将使用对于lba1和lba2的一个上下文id、以及对于lba1000和lba1001的第二上下文id。

图12是描述用于操作ssd或其它非易失性存储设备的处理的一个实施例的流程图。在一个实施例中,响应于图10的处理执行图12的处理。此外,图12是图7的处理的一个示例实施方式。在步骤602中,ssd(例如,ssd400或450)从外部计算设备接收指令以将逻辑块地址从i/o模式切换到分析模式。在步骤604中,响应于在步骤602中接收的指令,ssd将单独地将识别的一个或多个逻辑块从i/o模式切换到分析模式。在步骤606中,将软件下载到ssd。该软件是用于执行由外部计算设备402请求的数据分析的分析逻辑。以这种方式,外部计算设备可以自定义由ssd执行的数据分析。下载的软件可以被存储为ram412的分析程序424。可替换地,分析软件可以被存储在非易失性存储器中。在步骤608中,ssd接收命令以运行下载的软件。在步骤610中,ssd运行下载的软件以配置处理器(处理器410或处理器460)为当执行对非易失性存储元件的第二子集(例如,处于i/o模式的逻辑块地址)的输入/输出操作时、执行对于非易失性存储元件的第一子集(例如,处于分析模式的逻辑块地址)的数据分析。例如,回顾图9,当处理器460对存储在lba3和lba4中的数据执行数据分析时,处理器460还可以正接收用于编程lba0的指令并编程lba0。

在步骤612中,ssd确定数据分析的结果。在步骤614中,存储数据分析的结果。例如,结果可以被存储为ram412的分析结果428。或者,结果可以存储在非易失性存储器中。在步骤616中,ssd向在步骤602和608中发送指令的外部计算设备报告数据分析的完成。在步骤618中,ssd从外部计算设备接收读取命令(参见图10的步骤512)。在步骤620中,ssd响应于步骤618的读取的命令将数据分析的结果(传递分析结果428)传递到外部计算设备。在步骤622中,ssd接收指令以将逻辑块地址从分析模式切换回i/o模式。在步骤624中,响应于步骤622的指令,ssd将单独地将逻辑块从分析模式切换回i/o模式。

在一组实施例中,ssd或其它非易失性存储设备可以被划分成多个虚拟驱动器,使得每个虚拟驱动器可以被配置为与不同的实体(例如,不同的用户、不同的操作系统等)通信。在这些实施例中,处理器(例如,处理器410或处理器460)可以被配置为在分析模式和i/o模式之间单独地切换在每个虚拟驱动器中的逻辑块地址(或非易失性存储元件的其它子集)。因此,当虚拟驱动器的另一部分可以处于i/o模式时,虚拟驱动器的部分可以处于分析模式。在另一实施例中,当另一整个虚拟驱动器可以处于i/o模式时,整个虚拟驱动器可以处于分析模式。

图13是划分成多个虚拟驱动器的ssd的一个示例的框图。例如,图13示出了可以与上面讨论的固态驱动器中的任何一个的结构相同的ssd700。图13示出了划分成虚拟驱动器0、虚拟驱动器1和虚拟驱动器2的ssd700。虽然在图13中描绘了三个虚拟驱动器,但是其它实施例可以包括少于或多于三个的虚拟驱动器。在图13的示例中,ssd700与外部计算设备700通信。在这个示例中,外部计算设备700使用管理程序(hypervisor)作为软件以允许多个操作系统在单一服务器上运行。管理程序软件在本领域是熟知的。其它软件可以被用来在单一服务器上实施多个操作系统,或另外以在计算机上创建虚拟系统。在图13的示例中,实施了两个操作系统os0和os1。图13还示出有两个使用os0的用户:用户0和用户1。用户2被描绘为使用os1。os0和os1可以是本领域已知的任何操作系统。在一个实施例中,外部计算设备702包括三个分区(partition),每个用户一个分区。在其它实施例中,外部计算设备702可以包括两个分区,每个操作系统一个分区。每个用户(通过管理程序)访问不同的虚拟驱动器。例如,用户0可以访问虚拟驱动器0,用户1访问虚拟驱动器1,以及用户2访问虚拟驱动器2。因此,在一个实施例中,不同的虚拟驱动器可以与不同的操作系统通信。

虚拟驱动器中的每一个包括一组逻辑块。例如,虚拟驱动器0包括逻辑块740,虚拟驱动器1包括逻辑块742,以及虚拟驱动器2包括逻辑块744。仅为了示例用途,假定有阴影的逻辑块处于分析模式,并且没有阴影的逻辑块处于i/o模式。因此,ssd700的处理器(例如,处理器410或处理器460)被配置为在分析模式和i/o模式之间单独地切换在每个虚拟驱动器中的逻辑块(或非易失性存储器的其它子集)。对于相同的虚拟驱动器,当对处于i/o模式的其它逻辑块(或非易失性存储器的其它子集)执行输入/输出操作时,处理器被配置为对处于分析模式的逻辑块(或非易失性存储器的其它子集)的子集执行数据分析。在另一实施例中,当对处于i/o模式的虚拟驱动器执行输入/输出操作时,处理器被配置为对处于分析模式的虚拟驱动器执行数据分析。

图14是描绘与如下三个分离计算机通信的固态驱动器700(具有它的多个虚拟驱动器)的框图:计算机0、计算机1和计算机2。在这个示例中,计算机0与虚拟驱动器0通信并且操作虚拟驱动器0,计算机1与虚拟驱动器1通信并且操作虚拟驱动器1,以及计算机2与虚拟驱动器2通信并且操作虚拟驱动器2。计算机0、计算机1和计算机2可以使用相同类型的操作系统或不同类型的操作系统。即使当计算机0、1和2使用相同类型的操作系统,它们也是操作系统的不同实例,因此被考虑为不同的操作系统。因此,ssd700具有一组虚拟驱动器,每个虚拟驱动器与不同的外部计算设备和不同的操作系统通信。

ssd700是被配置为作为虚拟驱动器的多个操作的非易失性存储设备的一个示例,每个虚拟驱动器包括存储器的多个逻辑组。ssd700可以根据图3、图4、图5、图8或图9中的任何一个来实施。ssd的处理器可以被用来实施虚拟驱动器,包括响应于与不同的计算实体(例如,不同的计算机、不同的操作系统、操作系统的不同实例等)的通信来操作不同的虚拟驱动器。如上所述,当对相同的存储器或具有相同ssd的其它虚拟驱动器提供并行执行的i/o操作时,ssd的处理器被用来对在第一虚拟驱动器中的存储器的第一逻辑组进行驱动器内分析。

在一个实施例中,上述系统中的任何一个的最终用户可以被提供有交叉编译器工具和应用程序接口(api),以在实施这里描述的技术的ssd内建立用于本地运行的分析软件。api将允许分析软件从逻辑块中的任何一个逻辑块读取数据,(可选地)转储(dump)该读取的数据到临时缓冲器中用于分析处理,运行对数据的分析逻辑,并且将分析结果存储在ssdram的适当的部分,使得分析结果可以由外部计算设备检索。

一个实施例包括包括多个非易失性存储元件的非易失性存储设备和连接到非易失性存储元件的处理器。处理器被配置为当对非易失性存储元件的第二子集执行输入/输出操作时,对非易失性存储元件的第一子集执行数据分析。

一个实施例包括一种操作非易失性存储器的方法,包括:在分析模式和i/o模式之间单独地切换在非易失性存储系统中的非易失性存储装置的部分;并且当处于i/o模式的非易失性存储装置的部分可用于并行i/o操作时,对处于分析模式的非易失性存储装置的部分执行数据分析。

一个实施例包括包括被配置为作为多个虚拟驱动器操作的非易失性存储器的固态驱动器,其中每个虚拟驱动器包括存储器的多个逻辑组;以及用于响应于与不同计算实体的通信而操作不同虚拟驱动器的装置,其包括用于当对其它虚拟驱动器提供并行执行的i/o操作时对在第一虚拟驱动器中的存储器的第一逻辑组执行驱动器内数据分析的装置。在一个实施例中,用于在驱动器数据分析中执行的装置包括用于当对第一虚拟驱动器的存储器的不同逻辑组进行输入/输出操作时对第一虚拟驱动器中的存储器的第一逻辑组执行数据分析的装置。

为了这个文档的用途,参考在说明书中“一个实施例”、“一个实施例”、“一些实施例”或“另一实施例”可以被用来描述不同的实施例或相同的实施例。

为了这个文档的用途,连接可以是直接连接或间接连接(例如,经由一个或多个其它部分)。在一些情况下,当元件被称为连接或耦合到另一元件时,元件可以直接连接到另一个元件或经由插入其间的元件间接地连接到另一个元件。当元件被称为直接连接到另一元件时,元件与另一个元件之间不存在插入其间的元件。如果两个设备直接或间接连接使得它们可以在它们之间通信电子信号,则两个设备处于“通信”。

为了这个文档的用途,“基于”一词可以被看作“至少部分基于”。

为了这个文档的用途,而没有附加的上下文,诸如“第一”对象、“第二”对象和“第三”对象的数字术语的使用可以不暗示对象的排序,而是可以用于识别用途以识别不同的对象。

为了这个文档的用途,术语对象的“集合”可以指一个或多个对象的“集合”。

前述详细描述是已经为了例示和描述的用途而呈现的。不意图详尽的或限制于所公开的精确形式。按照以上教导,许多修改和变化是可能的。选择所述实施例以便最佳地解释提出技术的原理和它的实际应用,从而使得本领域其他技术人员能够在各种实施例中并且利用适于所预期的特殊使用的各种修改来最佳地利用它。意图由所附权利要求定义范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1