分解块存储控制器堆栈的制作方法

文档序号:14958959发布日期:2018-07-18 00:08阅读:131来源:国知局

本申请要求于2015年12月24日提交的美国非暂时专利申请第14/998,061号的优先权的利益。

实施例一般涉及存储器结构。更具体地,实施例涉及分解块存储控制器堆栈。



背景技术:

块存储系统通常可以使用诸如固态盘(ssd)之类的非易失性存储器(nvm)来将数据存储在也被称为块的卷中,其中每个块可以充当能够由存储管理员配置的单独的硬盘驱动器。兼容nvme(nvmexpress)的块存储系统可以经由统一软件堆栈直接连接到pci-e(快速外围组件互连)总线,该统一软件堆栈具有设计用于通过pci-e的基于nvm的存储事务的精益化(streamlined)的寄存器接口和命令集。然而,根据特定类型的接口(例如,pci-e)而对统一软件堆栈进行调整可能会限制可扩展性。

附图说明

通过阅读以下说明书和所附权利要求,并且通过参考以下附图,实施例的各种优点对于本领域技术人员将变得显而易见,其中:

图1是根据实施例的常规块存储控制器堆栈与分解块存储控制器堆栈之间的比较的示例的框图;

图2是根据实施例的支持通过结构连接的远程访问的分解块存储控制器堆栈的示例的框图;

图3是根据实施例的操作块存储系统的方法的示例的流程图;

图4是根据实施例的操作子系统层的方法的示例的流程图;以及

图5是根据实施例的计算系统的示例的框图。

具体实施方式

诸如例如nand和nor、eprom(可擦除可编程只读存储器)、prom(可编程只读存储器)等的存储器架构可以提供用于存储数据的非易失性存储器(nvm)。nvm的示例可以包括例如相变存储器(pcm)、三维交叉点存储器、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、诸如nand或nor的闪存、包括忆阻器技术的磁阻随机存取存储器(mram)存储器、自旋转移转矩(stt)-mram等。而且,固态盘(ssd)驱动器可以具有基于块的nvm,诸如nand或nor,并且可以包括字节可寻址位写入存储器,例如三维交叉点存储器和mram。这些存储器结构在数据中心环境中尤其有用,例如高性能计算(hpc)系统、大数据系统和涉及相对高带宽数据传输的其他架构。

现在转到图1,示出了相对于增强型块存储系统12的常规块存储系统10。常规块存储系统10和增强型块存储系统12可以作为ssd、硬盘驱动器(hdd)等并入主计算机中。在所示示例中,常规块存储系统10具有经由控制器19的统一块存储堆栈18直接连接到子系统接口14(例如,pci-e总线)的块存储装置16(例如,nvm)。相反,增强型块存储系统12具有通信地耦合到控制器21的公共层22的块存储装置20(例如,nvm),其中公共层22通信地耦合到一个或多个子系统层24(24a、24b)。子系统层24通常可以连接到具有不同类型总线、寄存器接口、命令集和其他硬件特定组件的不同类型的子系统26(26a、26b)。例如,第一子系统层24a可以被配置为根据pci-e协议与第一子系统26a通信,而第二子系统层24b可以被配置为根据非pci-e协议与第二子系统26b通信。

特别值得注意的是,公共层22可以被认为是与子系统层24的硬件特定组件解除关联,到公共层22不知道子系统层24的通信细节(例如,下层传输机制和/或硬件)或其不可知的程度。如将更详细讨论的,可以通过在公共层22和子系统层24之间交换一个或多个回调函数(例如,注册和/或注销函数)来建立解除关联以促进双向耦合。回调函数可以包括一段可执行代码,该段可执行代码作为参数传递给接收层,预期接收层在适当时回调(例如,执行)参数。因此,为了向公共层22注册,每个子系统层24可以执行注册回调函数。类似地,为了从公共层22注销,每个子系统层24可以执行注销回调函数。公共层22还可以接收来自子系统层24的导出的函数,并根据导出的函数执行注册的回调。因此,增强型块存储系统12可以比传统的块存储系统10更具可扩展性,因为增强型块存储系统12更能适应不同类型的子系统26(例如,随着时间的推移而对其进行开发)。在一个示例中,增强型块存储系统12是nvme兼容文件系统(例如,nvmexpress,修订版1.2a,2015年10月23日,nvmexpress公司,nvmexpress.org)。如果合适,层22、24可以包括驱动程序、共享库等。

图2示出了其中块存储装置30(例如nvm)通信地耦合到公共层32的另一示例,其中公共层32通信地耦合到多个子系统层34(34a、34b)。在所示的示例中,第一子系统层34a与特定类型的子系统接口36(“类型a”,例如pci-e)通信,而第二子系统层34b支持到多个远程访问子系统38(38a、38b)的结构连接。在这方面,第二子系统层34b可以包括与公共层32通信的不可知层40和通信地耦合到不可知层40的多个远程访问层42(42a、42b)。

例如,第一远程访问层42a可以被配置为根据第一类型的远程访问协议(“类型b”,例如,rdma/远程直接存储器访问、infiniband、iwarp、roce等)与第一远程访问子系统38a通信,而第二远程访问层42b可以被配置为根据第二类型的远程访问协议(“类型c”,非rdma协议,例如光纤通道)与第二远程访问子系统38b通信。所示的不可知层40将公共层32与远程访问层42的一个或多个网络结构特定组件解除关联。如将更详细讨论的,可通过在远程访问层42和不可知层40之间交换一个或多个回调函数以促进双向耦合来建立解除关联。例如,不可知层40可以将回调函数导出到远程访问层42以便建立、发送和/或完成来自公共层32的请求。不可知层40还可以从远程访问层42接收导出的函数并根据导出的函数执行注册的回调。由于适应不同类型的远程访问子系统38(例如,随着时间的推移而对其进行开发)的能力,所示的块存储装置30因此可以具有增强的可扩展性。在一个示例中,块存储装置30是nvme兼容文件系统(例如,集成到主机计算机中的ssd)的一部分。此外,不可知层40可以从一个或多个子系统管理器41获得关于远程访问子系统38的附加连接性信息。

图3示出了操作块存储系统的方法44。方法44通常可以在已经讨论的块存储系统(例如,增强块存储系统12(图1)和/或包含块存储装置30的系统(图2))中实现。更具体地,方法44可作为以下中存储的一组逻辑指令而在一个或多个模块中实现:在机器或计算机可读存储介质中,诸如随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪存等;在可配置逻辑中,诸如可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld);在使用电路技术的固定功能硬件逻辑中,诸如专用集成电路(asic)、互补金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术,或其任意组合。例如,用于执行方法44中所示的操作的计算机程序代码可以以一种或多种操作系统适用/适当的编程语言的任意组合来编写,所述编程语言包括诸如java、smalltalk、c++等的面向对象的编程语言和传统的过程式编程语言,诸如“c”编程语言或类似的编程语言。

所示的处理块46提供通过公共层与本地块存储系统(例如,集成到主计算机中的ssd)进行通信。块48可以可选地在公共层和通信地耦合到公共层的子系统层之间交换一个或多个回调函数以促进双向耦合,其中回调函数可以包括注册函数或注销函数中的一个或多个。另外,所示块50可以通过子系统层与一个或多个子系统进行通信。如已经提到的,公共层可以与子系统层的一个或多个硬件特定组件解除关联。在一个示例中,多个子系统层(例如,不同类型的)被通信地耦合到公共层,其中公共层与多个子系统层中的每一个的一个或多个硬件组件解除关联。

图4示出了操作子系统层的方法52。方法52通常可以在已经讨论的块存储系统(例如,增强块存储系统12(图1)和/或包含块存储装置30的系统(图2))中实现。更具体地,方法52可作为以下中存储的一组逻辑指令而在一个或多个模块中实现:在机器或计算机可读存储介质中,诸如ram、rom、prom、固件、闪存等;在可配置逻辑中,诸如pla、fpga、cpld;在使用电路技术的固定功能硬件逻辑中,诸如asic、cmos或ttl技术,或其任意组合。

图示的处理块54提供通过不可知层与公共层进行通信,其中块56可以可选地在不可知层与通信地耦合到不可知层的远程访问层之间交换一个或多个回调函数以促进双向耦合。可以根据与远程访问层相关联的特定类型的网络结构而对回调函数进行调整。此外,所示块58通过远程访问层与一个或多个远程块存储系统(例如,经由特定类型的网络结构)进行通信。所示的不可知层将公共层与远程访问层的一个或多个结构特定组件解除关联。在一个示例中,不可知层使用一个或多个回调函数中的至少一个以进行以下中的一个或多个:建立、发送和/或完成来自公共层的请求。如已经提到的那样,多个远程访问层(例如,不同类型的)可以通信地耦合到不可知层,其中多个远程访问层与多个远程块存储系统进行通信,并且不可知层将公共层与所述多个远程访问层中的每个远程访问层的一个或多个网络结构特定组件解除关联。

图5示出了分解的存储器架构60。存储器架构60可以包括主机计算系统62,主机计算系统62经由结构连接66耦合到对等计算系统64(例如,在消息传递接口/mpi应用程序、大数据分析应用程序等中),结构连接66例如为rdma协议(例如,infiniband、iwarp和/或roce)。计算系统62、64通常可以是具有计算功能(例如数据中心、服务器、个人数字助理/pda、笔记本电脑、平板电脑)、通信功能(例如智能电话),成像功能、媒体播放功能(例如,智能电视/tv)、可穿戴功能(例如手表、眼镜、头饰、鞋类、珠宝)、车辆功能性(例如汽车、卡车、摩托车)等或其任何组合的电子设备/平台的一部分。

在所示的示例中,主机计算系统62包括经由主桥74(例如,pci-e主桥)耦合到系统总线72的主处理器68(例如中央处理单元/cpu)和系统存储器70(例如dram)。主处理器68可以执行操作系统(os)和/或内核。主机计算系统62还可以包括电源76以向存储器架构60和/或主机计算系统62提供电力。系统总线72还可以耦合到图形适配器78和总线桥80(例如,pci-e总线桥)。图示的总线桥80还耦合到输入/输出(io)总线84,例如pci-e总线。io总线84可被认为是如本文所述的子系统接口。块存储系统88可以经由块存储控制器86间接地耦合到io总线84。块存储系统88和块存储控制器86可以兼容诸如sas(串行连接的scsi/小型计算机系统接口)或sata(串行ata/高级技术附件)协议的协议。

另外,本地块存储系统90可以直接耦合到io总线84,其中本地块存储系统90可以是nvmexpress(nvme)兼容的文件系统。在一个示例中,本地块存储系统90具有类似于已经讨论的增强型块存储系统12(图1)和/或包含块存储装置30的系统(图2)的功能的功能。因此,本地块存储系统90可以包括通信地耦合到本地块存储系统90的公共层和通信地耦合到公共层的子系统层。子系统层可以经由网络适配器82与对等计算系统64中的一个或多个子系统(例如,io总线84、块存储系统88和/或远程访问存储系统92)通信。公共层可以通过一个或多个子系统层与一个或多个硬件特定组件解除关联。

在远程访问存储系统92的情况下,子系统层可以包括与公共层进行通信的不可知层以及与不可知层通信地耦合的远程访问层。远程访问层可以与远程访问存储系统92通信,其中不可知层将公共层与远程访问层的一个或多个网络结构特定组件解除关联。因此,数据可以以可扩展且高效的方式在主机处理器68、本地块存储系统90、间接连接块存储系统88和/或远程访问存储系统92之间传送。

附加注释和示例:

示例1可以包括一种分解式存储器架构,包括:向所述存储器架构提供电力的电源;一个或多个子系统;以及本地块存储系统,包括:本地块存储装置,通信地耦合到所述本地块存储装置的公共层,以及通信地耦合到所述公共层的子系统层,所述子系统层与所述一个或多个子系统进行通信,其中,所述公共层与所述子系统层的一个或多个硬件特定组件解除关联。

示例2可以包括示例1的存储器架构,其中所述公共层和所述子系统层交换一个或多个回调函数以促进双向耦合,并且其中,所述一个或多个回调函数包括注册函数或注销函数中的一个或多个。

示例3可以包括示例1的存储器架构,其中所述子系统层包括:与所述公共层进行通信的不可知层;以及通信地耦合到所述不可知层的远程访问层,其中,所述远程访问层与一个或多个远程块存储系统进行通信,并且所述不可知层将所述公共层与所述远程访问层的一个或多个网络结构特定组件解除关联。

示例4可以包括示例3的存储器架构,其中所述不可知层和所述远程访问层交换一个或多个回调函数以促进双向耦合,并且其中,所述不可知层使用所述一个或多个回调函数中的至少一个来进行以下中的一项或多项:构建来自所述公共层的请求、发送来自所述公共层的请求、或完成来自所述公共层的请求。

示例5可以包括示例1至4中的任何一个的存储器架构,还包括通信地耦合到所述公共层的多个子系统层,其中,所述公共层与所述多个子系统层中的每一个的一个或多个硬件特定组件解除关联。

示例6可以包括示例1至4中的任何一个的存储器架构,其中所述本地块存储系统是nvmexpress兼容文件系统。

示例7可以包括块存储堆栈装置,包括:与本地块存储系统进行通信的公共层;以及通信地耦合到所述公共层的子系统层,所述子系统层与一个或多个子系统进行通信,其中,所述公共层与所述子系统层的一个或多个硬件特定组件解除关联。

示例8可以包括示例7的装置,其中所述公共层和所述子系统层交换一个或多个回调函数以促进双向耦合,并且其中,所述一个或多个回调函数包括注册函数或注销函数中的一个或多个。

示例9可以包括示例7的装置,其中所述子系统层包括:与所述公共层进行通信的不可知层;以及通信地耦合到所述不可知层的远程访问层,其中,所述远程访问层与一个或多个远程块存储系统进行通信,并且所述不可知层将所述公共层与所述远程访问层的一个或多个网络结构特定组件解除关联。

示例10可以包括示例9的装置,其中,所述不可知层和所述远程访问层交换一个或多个回调函数以促进双向耦合,并且其中,所述不可知层使用所述一个或多个回调函数中的至少一个来进行以下中的一项或多项:构建来自所述公共层的请求、发送来自所述公共层的请求、或完成来自所述公共层的请求。

示例11可以包括示例9的装置,还包括通信地耦合到所述不可知层的多个远程访问层,其中,所述多个远程访问层与多个远程块存储系统进行通信,并且所述不可知层将所述公共层与所述多个远程访问层中的每一个的一个或多个网络结构特定组件解除关联。

示例12可以包括示例7至11中的任何一个的装置,还包括通信地耦合到所述公共层的多个子系统层,其中,所述公共层与所述多个子系统层中的每一个的一个或多个硬件特定组件解除关联。

示例13可以包括一种操作块存储堆栈装置的方法,包括:通过公共层与本地块存储系统进行通信;以及通过通信地耦合到所述公共层的子系统层与一个或多个子系统进行通信,其中,所述公共层与所述子系统层的一个或多个硬件特定组件解除关联。

示例14可以包括示例13的方法,还包括在所述公共层和所述子系统层之间交换一个或多个回调函数以促成双向耦合,其中,所述一个或多个回调函数包括注册函数或注销函数中的一个或多个。

示例15可以包括示例13的方法,还包括:通过不可知层与所述公共层进行通信;以及通过通信地耦合到所述不可知层的远程访问层与一个或多个远程块存储系统进行通信,其中,所述不可知层将所述公共层与所述远程访问层的一个或多个网络结构特定组件解除关联。

示例16可以包括示例15的方法,还包括在所述不可知层与所述远程访问层之间交换一个或多个回调函数以促进双向耦合,其中,所述不可知层使用所述一个或多个回调函数中的至少一个来进行以下中的一项或多项:构建来自所述公共层的请求、发送来自所述公共层的请求、或完成来自所述公共层的请求。

示例17可以包括示例15的方法,其中所述公共层与通信地耦合到所述不可知层的多个远程访问层中的每一个的一个或多个网络结构特定组件解除关联。

示例18可以包括示例13至17中的任何一个的方法,其中所述公共层与通信地耦合到所述公共层的多个子系统层中的每一个的一个或多个硬件特定组件解除关联。

示例19可以包括至少一种非暂时性计算机可读存储介质,其包括一组指令,所述指令在由计算设备执行时使所述计算设备:通过公共层与本地块存储系统进行通信;以及通过通信地耦合到所述公共层的子系统层与一个或多个子系统进行通信,其中,所述公共层与所述子系统层的一个或多个硬件特定组件解除关联。

示例20可以包括示例19的至少一种非暂时性计算机可读存储介质,其中,所述指令在被执行时使计算设备在所述公共层与所述子系统层之间交换一个或多个回调函数以促进双向耦合,并且其中,所述一个或多个回调函数包括注册函数或注销函数中的一个或多个。

示例21可以包括示例19的至少一种非暂时性计算机可读存储介质,其中,所述指令在被执行时使计算设备:通过不可知层与所述公共层进行通信;以及通过通信地耦合到所述不可知层的远程访问层与一个或多个远程块存储系统进行通信,其中,所述不可知层将所述公共层与所述远程访问层的一个或多个网络结构特定组件解除关联。

示例22可以包括示例21的至少一种非暂时性计算机可读存储介质,其中,所述指令在被执行时使计算系统在所述不可知层与所述远程访问层之间交换一个或多个回调函数以促进双向耦合,并且其中,所述不可知层使用所述一个或多个回调函数中的至少一个来进行以下中的一项或多项:构建来自所述公共层的请求、发送来自所述公共层的请求、或完成来自所述公共层的请求。

示例23可以包括示例21的至少一种非暂时性计算机可读存储介质,其中,所述公共层与通信地耦合到所述不可知层的多个子系统层中的每一个的一个或多个网络结构特定组件解除关联。

示例24可以包括示例19至23中的任何一个的至少一种非暂时性计算机可读存储介质,其中,所述公共层与通信地耦合到所述公共层的多个子系统层中的每一个的一个或多个硬件特定组件解除关联。

示例25可以包括一种块存储堆栈装置,包括:用于通过公共层与本地块存储系统进行通信的单元;以及用于通过通信地耦合到所述公共层的子系统层与一个或多个子系统进行通信的单元,其中,所述公共层与所述子系统层的一个或多个硬件特定组件解除关联。

示例26可以包括示例25的装置,还包括用于在所述公共层与所述子系统层之间交换一个或多个回调函数以促进双向耦合的单元,其中,所述一个或多个回调函数包括注册函数或注销函数中的一个或多个。

示例27可以包括示例25的装置,还包括:用于通过不可知层与所述公共层进行通信的单元;以及用于通过通信地耦合到所述不可知层的远程访问层与一个或多个远程块存储系统进行通信的单元,其中,所述不可知层将所述公共层与所述远程访问层的一个或多个网络结构特定组件解除关联。

示例28可以包括示例27的装置,还包括用于在所述不可知层与所述远程访问层之间交换一个或多个回调函数以促进双向耦合的单元,其中,所述不可知层使用所述一个或多个回调函数中的至少一个来进行以下中的一项或多项:构建来自所述公共层的请求、发送来自所述公共层的请求、或完成来自所述公共层的请求。

示例29可以包括示例27的装置,其中所述公共层与通信地耦合到所述不可知层的多个远程访问层中的每一个的一个或多个网络结构特定组件解除关联。

示例30可以包括示例25至29中的任何一个的装置,其中所述公共层与通信地耦合到所述公共层的多个子系统层中的每一个的一个或多个硬件特定组件解除关联。

本文描述的技术因此可以使得能够经由灵活的和ad-hoc连接来访问nvme控制器硬件。此外,nvme设备可能能够通过多个接口与系统连接。此外,操作系统和内核可能与nvme存储系统兼容,而无需进行标准的特定审查。

实施例适用于所有类型的半导体集成电路(“ic”)芯片。这些ic芯片的例子包括但不限于处理器、控制器、芯片组部件、可编程逻辑阵列(pla)、存储芯片、网络芯片、片上系统(soc)、ssd/nand控制器asic等。另外,在一些附图中,信号导线用线表示。一些可以是不同的以指示更多组成信号路径,具有数字标签以指示多个组成信号路径,和/或在一个或多个端具有箭头以指示主要信息流方向。然而,这不应该以限制的方式来解释。而是,可以结合一个或多个示例性实施例来使用这样的添加的细节以促进对电路的更容易的理解。任何表示的信号线,无论是否具有附加信息,实际上可以包括可以在多个方向上行进的一个或多个信号,并且可以用任何合适类型的信号方案来实现,例如用差分对实现的数字或模拟线、光纤线和/或单端线。

可能已经给出了示例尺寸/模型/值/范围,但是实施例不限于此。随着制造技术(例如光刻)随时间推移而成熟,预期可以制造更小尺寸的设备。另外,为了图示和讨论的简单性,并且为了不模糊实施例的某些方面,可以或可以不在附图中示出对ic芯片和其他组件的公知电源/接地连接。此外,为了避免使实施例模糊,并且鉴于关于这种框图布置的实现的细节高度依赖于要在其中实现实施例的平台的事实,可以以框图形式示出布置,即,这些细节应该在本领域技术人员的视野范围内。在阐述具体细节(例如,电路)以描述示例实施例的情况下,对于本领域技术人员来说应当显而易见的是,可以在没有这些具体细节或者具有这些具体细节的变体的情况下实践实施例。因此该描述被认为是说明性的而不是限制性的。

术语“耦合”在本文中可以用于指代所讨论的组件之间的任何类型的直接或间接的关系,并且可以应用于电、机械、流体、光学、电磁、机电或其他连接。另外,除非另外指出,否则术语“第一”、“第二”等在此可以仅用于便于讨论,并且不带有特定的时间或时间顺序意义。

本领域的技术人员将从前面的描述中领会到,实施例的广泛技术可以以各种形式来实现。因此,虽然已经结合其特定示例描述了实施例,但是实施例的真实范围不应该如此受限制,因为在研究附图、说明书和所附权利要求书后,其他修改对于本领域技术人员将变得显而易见。

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