在基于非易失性存储器的存贮设备中对信息进行路由的装置和方法

文档序号:10617860阅读:547来源:国知局
在基于非易失性存储器的存贮设备中对信息进行路由的装置和方法
【专利摘要】描述了用于存取存贮设备的各种系统、方法、装置和计算机可读介质。在某些示例实施例中,可以实施包括两个或更多个控制器的主动/主动容错存贮设备。在一个方面中,每个控制器可以具有用于分发I/O请求的处理的两个或更多个处理实体。在一个实施例中,可以以增强散热、降低功耗、分散功率和工作负载以及降低延迟的方式来布置组件、模块和控制器板的配置。在一个实施例中,每个控制器可以耦合到包括非易失性存储器(NVM)存贮介质的非易失性存储器(NVM)刀片。在一种示例实现方式中,诸如高速外围组件互联协议之类的标准化协议可以用于控制器的各个组件以及还有NVM存贮介质之间的通信。
【专利说明】在基于非易失性存储器的存贮设备中对信息进行路由的装置 和方法
【背景技术】
[0001] 本公开的各方面涉及计算和通信技术。具体地,本公开的各方面涉及用于改善存 贮设备的性能的系统、方法、装置以及计算机可读介质。
[0002] 企业系统的存贮设备需要海量存储容量、对存贮设备读取和写入的低延迟、高带 宽、低功耗以及可靠性。传统地,使用诸如在电力关闭时保留数据的硬盘驱动器(HDD)之类 的介质来实施企业系统。硬盘驱动器是使用快速旋转盘、用于存储和取回(retrieve)数字 信息的数据存贮设备。HDD由一个或多个具有布置在移动致动器臂上以向盘表面读取和写 入数据的磁头的坚硬("硬")快速旋转盘(盘片)组成。归因于移动部分,HDD固有地易于发生 错误和故障,并且在如何降低它们的存取时间方面具有下限而且价格可能下降。
[0003] 本发明的实施例解决该问题和其它问题。

【发明内容】

[0004] 描述了用于存取存贮介质的各种系统、方法、装置以及计算机可读介质。描述了用 于最优地存取存贮介质的技术。在一个实施例中,可以使用非易失性存储器(NVM)来实施存 贮设备。
[0005] 在某些示例实施例中,可以实施包括两个或更多个控制器的主动/主动容错存贮 设备。然而,在其它示例实施例中,也可以实施主动/备用系统。在一些实施例中,可以使用 专用集成电路(ASIC)、现场可编程门阵列(FPGA)或将若干分立的组件的功能集成到单个晶 片上的任何其它技术来实施控制器。在其它实施例中,控制器也可以包含具有多个分立组 件的控制器板。在一个方面中,每个控制器板可以具有用于分发输入/输出(I/O)请求的处 理的两个或更多个处理实体。在一个实施例中,可以以增强散热、降低功耗、分散功率和工 作负载以及降低用于服务I/O请求的延迟的方式来布置组件、模块和控制器板的配置。
[0006] 在一个实施例中,每个控制器可以耦合到包括NVM存贮介质的非易失性存储器 (NVM)刀片(blade)。本发明的实施例也可以提供进一步的增强来改善对NVM存贮介质的存 取时间。虽然可以在本文为了说明的目的而使用NVM存贮介质来描述本发明的一些实施例, 但在某些实施例中,本发明可以不限于NVM存贮介质,并且在不脱离本发明的范围的情况下 可以使用其它合适的物理存贮介质。
[0007] 在一种实现方式中,诸如高速外围组件互联(PCIe)协议之类的标准化协议可以用 于控制器板的各个组件以及还有NVM存贮介质之间的通信。
[0008] 示例存贮设备可以包括耦合到多个刀片中的第一刀片的、来自多个路由实体中的 第一路由实体,其中第一刀片可以包括NVM存贮介质、耦合到第一路由实体的第一处理实 体,其中第一处理实体可以被配置为接收第一输入/输出(I/O)请求、确定与第一 I/O请求相 关联的第一数据将被存储在耦合到第一路由实体的第一刀片上的第一位置,以及向第一路 由实体传送与第一 I/O请求相关联的第一数据以便将第一数据存储在第一刀片上。第二处 理实体可以耦合到第一路由实体,其中第二处理实体被配置为接收第二I/O请求,确定与第 二I/O请求相关联的第二数据将被存储在耦合到第一路由实体的第一刀片上的第二位置, 以及向第一路由实体传送与第二I/O请求相关联的第二数据以便将第二数据存储在第一刀 片上。
[0009] 在一些实施例中,存贮设备可以另外具有第二处理实体,该第二处理实体被配置 为:接收第三I/O请求,确定第三I/O请求是对于位于耦合到第一路由实体的第一刀片的第 一位置的第一数据的读取请求,从第一路由实体请求来自第一位置的第一数据,以及从第 一路由实体接收第一数据。在一种实现方式中,第一处理实体和第二处理实体可以通过第 一路由实体间接地彼此耦合。在一个实施例中,控制器板包括第一路由实体、第一处理实体 和第二处理实体。在一种实现方式中,第一处理实体可以耦合到第一存储器,并且第二处理 实体可以耦合到第二存储器。在一个方面中,使用高速外围组件互联(PCIe)协议来执行第 一处理实体与第一路由实体之间的数据的传送以及第二处理实体与第一路由实体之间的 数据的传送。
[0010] 在存贮设备的某些实现方式中,存贮设备可以进一步包括耦合到多个刀片中的第 二刀片的、来自多个路由实体中的第二路由实体,其中第二刀片包括NVM存贮介质,第一处 理实体耦合到第二路由实体,其中第一处理实体可以被配置为接收第三I/O请求,确定与第 三I/O请求相关联的第三数据将被存储在位于第三位置的第二刀片上,以及向第二路由实 体传送与第三I/O请求相关联的第三数据以将与第三I/O请求相关联的数据存储在第二刀 片上。存贮设备可以另外具有耦合到第二路由实体的第二处理实体,其中第二处理实体可 以被配置为接收第四I/O请求,确定与第四I/O请求相关联的第四数据将被存储在位于第四 位置的第二刀片,以及向第二路由实体传送与第四I/O请求相关联的第四数据以将与第四 I/O请求相关联的数据存储在第二刀片上。
[0011] 在一个实施例中,使用高速外围组件互联(PCIe)协议来执行第一处理实体与第二 路由实体之间的数据的传送以及第二处理实体与第二路由实体之间的数据的传送。在一个 方面中,由第一处理实体接收的第一I/O请求可以首先在一个或多个接口实体处被接收并 且通过多个路由实体之一被转发到第一处理实体。
[0012] 一种用于存储数据的示例方法可以包括:在第一处理实体接收第一 I/O请求;在第 一处理实体确定与第一 I/O请求相关联的第一数据将被存储在耦合到位于第一路由实体的 第一位置的第一刀片上,其中第一刀片包括NVM存贮介质;由第一处理实体向第一路由实体 传送与第一 I/O请求相关联的第一数据以将数据存储在第一刀片上;在第二处理实体接收 第二I/O请求;在第二处理实体确定与第二I/O请求相关联的第二数据将被存储在位于耦合 到第一路由实体的第二位置的第一刀片上;以及由第二处理实体向第一路由实体传送与第 二I/O请求相关联的第二数据以将数据存储在第一刀片上。
[0013] 在一些实现方式中,示例方法可以进一步包括:在第二处理实体处接收第三I/O请 求,在第二处理实体处确定第三I/O请求是对于来自耦合到第一路由实体的第一刀片的第 一位置的第一数据的读取请求,从第一路由实体请求来自第一位置的第一数据,以及从第 一路由实体接收第一数据。
[0014] 在一种实现方式中,第一处理实体和第二处理实体通过路由实体间接地彼此耦 合。在一个方面中,控制器板包括第一路由实体、第一处理实体和第二处理实体。第一处理 实体可以耦合到第一存储器,并且第二处理实体可以耦合到第二存储器。在该方法的一些 实现方式中,可以使用高速外围组件互联(PCIe)协议来执行第一处理实体与第一路由实体 之间的第一数据的传送以及第二处理实体与第一路由实体之间的第二数据的传送。
[0015] 在该方法的某些实施例中,该方法也可以包括:在第一处理实体处接收第三I/O请 求;在第一处理实体处确定与第三I/O请求相关联的第三数据将被存储在位于耦合到第二 路由实体的第三位置的第二刀片上,其中第二刀片包括NVM存贮介质;由第一处理实体向第 二路由实体传送与第三I/O请求相关联的第三数据以将与第三I/O请求相关联的数据存储 在第二刀片上;在第二处理实体处接收第四I/O请求;在第二处理实体处确定与第四I/O请 求相关联的第四数据将被存储在位于耦合到第二路由实体的第四位置的第二刀片上;由第 二处理实体向第二路由实体传送与第四I/O请求相关联的第四数据以将与第四I/O请求相 关联的数据存储在第二刀片上。在一些实施例中,使用高速外围组件互联(PCIe)协议来执 行第一处理实体与第二路由实体之间的第三数据的传送以及第二处理实体与第二路由实 体之间的第四数据的传送。第一刀片可以是多个刀片之一,并且第一路由实体可以是多个 路由实体之一。由第一处理实体接收的第一数据包(packet)可以首先在一个或多个接口实 体处被接收并且通过多个路由实体之一被转发到第一处理实体。
[0016] -种示例装置可以包括:用于接收第一I/O请求的部件;用于确定与第一I/O请求 相关联的第一数据将被存储在位于耦合到第一路由实体的第一位置上的第一刀片的部件, 其中第一刀片包括NVM存贮介质;用于向第一路由实体传送与第一I/O请求相关联的第一数 据以将数据存储在第一刀片上的部件;用于接收第二I/O请求的部件;用于确定与第二I/O 请求相关联的第二数据将被存储在位于耦合到第二路由实体的第二位置的第二刀片上的 部件;以及用于向第二路由实体传送与第二I/O请求相关联的第二数据以将第二数据存储 在第二刀片上的部件。
[0017] 描述了用于存取存贮介质的各种系统、方法、装置以及计算机可读介质。描述了用 于最优地存取存贮介质的技术。在一个实施例中,可以使用非易失性存储器(NVM)存贮介质 来实施存贮设备。
[0018] 在某些示例实施例中,可以实施包括两个或更多个控制器的主动/主动容错存贮 设备。然而,在其它示例实施例中,也可以实施主动/备用系统。在一些实施例中,可以使用 专用集成电路(ASIC)、现场可编程门阵列(FPGA)或将若干分立的组件的功能集成到单个晶 片上的任何其它技术来实施控制器。在其它实施例中,控制器也可以包含具有多个分立组 件的控制器板。在一个方面中,每个控制器板可以具有用于分发输入/输出(I/O)请求的处 理的两个或更多个处理实体。在一个实施例中,可以以增强散热、降低功耗、分散功率和工 作负载以及降低用于服务I/O请求的延迟的方式来布置组件、模块和控制器板的配置。
[0019] 在一个实施例中,每个控制器可以耦合到包括NVM存贮介质的NVM刀片。本发明的 实施例也可以提供进一步的增强来改善对NVM存贮介质的存取时间。虽然可以在本文为了 说明的目的使用NVM存贮介质来描述本发明的一些实施例,但在某些实施例中,本发明可以 不限于NVM存贮介质,并且在不脱离本发明的范围的情况下可以使用其它合适的物理存贮 介质。
[0020] 在一种实现方式中,诸如高速外围组件互联(PCIe)协议之类的标准化协议可以用 于在控制器板的各个组件以及还有NVM存贮介质之间的通信。
[0021 ] -种示例存贮设备可以包括存贮设备,该存贮设备包括:第一控制器,其被配置为 操作在主动模式中,第一控制器被配置为接收用于存储数据和从NVM存贮介质取回数据的 输入/输出(I/O)请求;第二控制器,其被配置为操作在主动模式中,第二控制器也被配置为 接收用于存储数据和从NVM存贮介质取回数据的I/O请求;以及包括NVM存贮介质的多个NVM 刀片,其中多个NVM刀片中的至少一个耦合到用于存储数据和从NVM存贮介质中取回数据的 第一控制器和第二控制器。在一个实施例中,多个NVM刀片中的至少一个包括与第一控制器 进行通信的第一路由接口和与第二控制器进行通信的第二路由接口。在一些实现方式中, 第一路由接口可以使用PCIe协议与第一控制器进行通信,并且第二路由接口可以使用PCIe 协议与第二控制器进行通信。
[0022] 在某些实施例中,对于读取操作,第一控制器可以被配置为:接收第一 I/O请求,确 定第一I/O请求是将与第一I/O请求相关联的第一数据存储到NVM存贮介质的请求;以及向 多个NVM刀片中的至少一个传送命令和第一数据以将第一数据存储在第一位置。在存贮设 备的一种实现方式中,第一控制器和第二控制器可以被配置为对于读取操作同时地解码1/ 0请求并且从NVM存贮介质请求数据。
[0023] 在某些实施例中,对于写入操作,第二控制器被配置为:接收第二I/O请求,确定第 二I/O请求是将与第二I/O请求相关联的第二数据存储到NVM存贮介质的请求;以及向第一 控制器传送与第二I/O请求相关联的命令信息。第一控制器可以被配置为接收来自第二控 制器的所传送的命令信息,以及向多个NVM刀片中的至少一个传送存储命令。第二控制器可 以被进一步配置为向一个或多个NVM刀片传送与第二I/O请求相关联的第二数据。
[0024] 在某些实施例中,多个NVM刀片中的至少一个可以包括用于缓冲来自第一控制器 的命令的、耦合到第一路由接口的第一缓冲器。多个NVM刀片中的至少一个可以被进一步配 置为:一旦第一缓冲器满得超过预先确定的阈值就丢弃来自第一控制器的命令。在一些实 现方式中,多个NVM刀片中的至少一个也可以包括用于对于来自第一控制器和第二控制器 的命令仲裁对NVM接口的存取的命令管理器。在命令管理器检测到关于命令的错误的实例 中,至少一个NVM刀片可以将与I/O请求相关联的错误信息传送回到该命令所起源的控制 器。
[0025] 在一些实现方式中,第一控制器和第二控制器可以彼此传递容错信息。在一个方 面中,第一控制器和第二控制器可以使用非PCIe桥来彼此传递容错信息。在一些实例中,容 错信息可以包括关于从第一控制器到多个NVM刀片之一的第一 I/O请求的故障的信息。 [0026]在一个实施例中,第一控制器、第二控制器和多个NVM刀片可以耦合到电力轨,其 中电力轨由多个电源进行供电。在一种实现方式中,第一控制器和第二控制器可以是包括 用于处理I/O请求的一个或多个处理器以及用于控制器和多个NVM刀片之间的路由操作的 一个或多个路由器的印刷电路板(PCB)。在另一种实现方式中,第一控制器和第二控制器可 以是各自包括处理逻辑和路由逻辑的专用集成电路(ASIC)。
[0027] -种用于将数据存储在存贮设备上的示例方法可以包括:在从控制器接收第一 1/ 〇请求;确定第一I/O请求是将与第一I/O请求相关联的第一数据存储到NVM存贮介质的请 求;以及向主控制器传送与第一I/O请求相关联的命令信息;在主控制器接收来自从控制器 的所传送的命令信息;以及向包括NVM存贮介质的多个NVM刀片中的至少一个传送来自主控 制器的使用对于第一 I/O请求的所传送的命令信息的存储命令以及来自从控制器的第一数 据以将第一数据存储在第一位置。
[0028]示例方法可以进一步包括:在主控制器接收第二I/O请求,确定第二I/O请求是将 与第二I/O请求相关联的第二数据请求存储到NVM存贮介质的请求,以及向包括NVM存贮介 质的多个NVM刀片中的至少一个传送命令和第二数据以将第二数据存储在第二位置。该方 法可以进一步包括:在主控制器接收第二I/O请求,确定第二I/O请求是从NVM存贮介质中的 第二位置读取第二数据的请求,从NVM存贮介质中取回与第二I/O请求相关联的第二数据, 在从控制器接收第三I/O请求,确定第三I/O请求是从NVM存贮介质中的第三位置读取第三 数据的请求,以及从NVM存贮介质取回与第三I/O请求相关联的第三数据。在一种实现方式 中,主控制器和从控制器可以使用PCIe协议与多个NVM刀片进行通信。
[0029]上文已经相当宽泛地略述了示例特征和技术优点以便能够更好地理解随后的具 体实施方式。将在下文中描述附加的特征和优点。可以容易地利用所公开的概念和特定示 例来作为用于修改或设计用于执行本公开的相同的目的的其它结构的基础。这种等同结构 没有脱离所附权利要求的精神和范围。当结合附图考虑时,根据以下描述将更好地理解与 相关联的优点一起的、关于它们的组织和操作方法两者都被认为是在本文公开的概念的特 征的特征。仅仅为了说明和描述的目的而提供每一个附图并且每一个附图不作为对权利要 求的限制的限定。
[0030] 上文已经相当宽泛地略述了示例特征和技术优点以便能够更好地理解随后的具 体实施方式。将在下文中描述附加的特征和优点。可以容易地利用所公开的概念和特定示 例来作为用于修改或设计用于执行本公开的相同的目的的其它结构的基础。这种等同结构 没有脱离所附权利要求的精神和范围。当结合附图考虑时,根据以下描述将更好地理解与 相关联的优点一起的、关于它们的组织和操作方法两者都被认为是在本文公开的概念的特 征的特征。仅仅为了说明和描述的目的而提供每一个附图并且每一个附图不作为对权利要 求的限制的限定。
【附图说明】
[0031] 通过示例来说明本公开的各方面。参考附图提供以下描述,其中在全文中相同附 图标记用于指代相同的要素。虽然在本文描述了一种或多种技术的各种细节,但其它技术 也是可能的。在一些实例中,为了便于描述各种技术,以框图形式示出了公知的结构和设 备。
[0032] 可以通过参考说明书和附图的其余部分来实现对本公开所提供的示例的性质和 优点的进一步理解,其中在若干附图中使用相同附图标记来指代类似的组件。在一些实例 中,子标号与附图标记相关联,以表示多个类似的组件之一。当在不对现有的子标号进行说 明的情况下参考附图标记时,附图标记指代所有这样的类似组件。
[0033]图1示出了根据本发明的一个实施例的存贮设备的示例高层次框图。
[0034]图2示出了根据本发明的一个实施例的存贮设备的另一个示例框图。
[0035]图3示出了根据本发明的一个实施例的存贮设备的又一个示例框图。
[0036]图4示出了根据本发明的又一个实施例的存贮设备的示例框图。
[0037]图5是根据本发明的一个实施例的、示出用于执行本发明的实施例的方法的流程 图。
[0038]图6是根据本发明的另一个实施例的、示出用于执行本发明的实施例的另一个方 法的流程图。
[0039] 图7示出了根据本发明的一个实施例的控制器板的示例框图。
[0040] 图8示出了根据本发明的至少一个实施例的、对于控制器板上的每个组件可见的 各个组件的地址空间的示例框图。
[0041] 图9示出了根据本发明的一个实施例的存贮设备的另一个示例高层次框图。
[0042] 图10示出了根据本发明的一个实施例的NVM刀片的示例框图。
[0043]图11示出了根据本发明的一个实施例的刀片控制器的示例框图。
[0044]图12示出了根据本发明的一个实施例的刀片控制器的另一个示例框图。
[0045]图13描绘了用于执行本发明的实施例的计算机系统。
【具体实施方式】
[0046]现在将参考在此形成一部分的附图来描述若干说明性实施例。虽然下面描述可以 实施本公开的一个或多个方面的特定实施例,但在不脱离本公开的范围或所附权利要求的 精神的情况下,可以使用其它实施例并且可以进行各种修改。
[0047]在讨论本发明的实施例之前,一些术语的描述可能有助于理解本发明的实施例。
[0048] 在一些实施例中,如在本文讨论的"存贮设备"可以包括被配置为存储数据和从存 贮介质中取回数据的计算机系统。可以使用参考图13而描述的一些或所有组件来实施计算 机系统。在一些实施例中,存贮设备可以被用于企业环境或需要通过利用至存贮设备的高 可用性链路和低延迟的网络存取数据的其它类似环境。对存贮设备还可能期望较低的功 耗、较低的成本和良好的散热。在一些实施例中,存贮设备可以是其中将多个存贮设备共同 地排列和维持的机架可安装设备。在其它实施例中,存贮设备可以是独立设备。然而,存贮 设备可以具有其它外围设备以及类似于常规计算机系统的设备,在一些实现方式中,可以 利用被优化以最小化物理空间和能量的使用的模块化设计来将存贮设备从服务器计算机 剥离。存贮设备还可以包括文件系统软件堆栈,其被存储在存贮设备中的存贮介质上并且 由处理器运行以接收I/O请求、将这些I/O请求解码和转换为针对底层物理介质的读取、写 入和配置命令。
[0049] 在本发明的一些实施例中,如在本文所讨论的"闪存存贮介质"可以包括非易失性 存储器(NVM)。在一些实例中,使用NVM的存贮设备的实现方式也可以被称为固态设备。基于 NVM的设备的示例实现方式可以包括但不限于使用N0R、NAND、MRAM(磁阻RAM)、FRAM(铁电 RAM、RRAM(电阻式RAM))、相变存储器或任何其它合适的技术。N0R闪存可以提供高速随机存 取以及在诸如达到单字节之类的特定存储器位置中读取和写入数据。NAND闪存可以随机地 读取,但是典型地以高速顺序地写入,在被称为页的块中处理数据。与其写入相比,NAND闪 存可以更快地进行读取,迅速地转移整页的数据。除了比NAND闪存读取可能更快而写入可 能更慢,N0R闪存可以以相同方式运作。通常,在高密度与N0R闪存相比没有那么昂贵,对于 相同尺寸的硅,NAND技术可以提供更高的容量。
[0050] 在一些实现方式中,本发明的实施例可以利用单级单元(SLC) NAND闪存技术。在其 它实现方式中,本发明的实施例可以利用多级单元(MLC)NAND闪存存贮介质。MLC NAND是每 单元(cell)使用多级以允许使用相同数量的晶体管存储更多比特的闪存存储器技术。在 SLC NAND闪存技术中,每个单元能够存在于两个状态之一中,每单元存储一个比特的信息。 大多数MLC NAND闪存存储器技术具有每单元四个可能的状态,因此其每单元能够存储两个 比特的信息。使用MLC NAND可以有利于降低由于较高数据密度的每存贮单元的成本。
[0051] 如本文所描述的,在一些实施例中,"刀片"、"闪存刀片"或"NVM刀片"可以指代将 一个或多个NVM芯片分组在一起以提供存储,其中NVM芯片包括NVM存贮介质。NVM刀片可以 具有用于仲裁对NVM存贮介质的存取的刀片控制器。NVM刀片控制器可以负责接收用于存 取/存储NVM存贮介质上的数据的命令、对命令进行处理以及存储数据或从NVM存贮介质中 取回数据。在一个实施例中,可以使用专用集成电路(ASIC)来实施NVM刀片控制器。在另一 个实施例中,可以使用现场可编程门阵列(FPGA)来实施NVM刀片控制器。
[0052] 如本文所定义的,"控制器板"可以包括用于接收I/O请求并且将这些I/O请求转换 为用于读取、写入或配置NVM存贮介质的命令的各种硬件、固件和软件组件。在一种实现方 式中,可以使用印刷电路板(PCB)来实施控制器板,其中控制器板的各个组件可以使用总线 耦合到该板并且彼此进行通信。在其它实现方式中,诸如无线之类的其它通信手段可以用 于组件之间的通信。图7是控制器板的示例实施例。虽然可以关于若干分立的组件来描述本 发明的实施例,但在一些实施例中,可以通过一个硅晶片来执行若干分立的组件的功能。例 如,可以通过被实施为专用集成电路(ASIC)、现场可编程门阵列(FPGA)、多芯片模块(MCM) 或任何其它硅技术的控制器来执行如本文所描述的诸如处理和路由之类的多个分立的组 件的功能。如本文所描述的,在一个实施例中,虽然"控制器板"可以指代使用印刷电路板实 施功能集的若干分立的组件,但"控制器"可以指代控制器板(例如,具有分立的组件的PCB 板)和控制器(例如,若干分立的组件的功能被实施为ASIC、FPGA,等等)两者。
[0053]如本文所描述的,"处理实体"可以指代一个或多个物理或逻辑处理器。可以在不 偏离本发明的范围的情况下,在整个说明书中可交换地使用术语"处理实体"或"处理复合 体(complex)"。例如,处理实体可以包括来自诸如英特尔、Qualcomm和Tilera之类的出售商 的双核、四核或多核处理器。处理实体可以运行文件系统软件堆栈并且解码用于存取存贮 介质的来自网络的I/O请求。在一种实现方式中,处理实体可以包括用于PCIe协议或类似协 议的根复合体。在一种实现方式中,处理实体可以被实施为ASIC、FPGA或MCM内的处理逻辑。 [0054]如本文所描述的,"路由实体"可以指代用于在接口实体、处理实体、NVM刀片和路 由实体本身之间对数据进行路由的一个或多个路由器。在一种实现方式中,路由实体可以 表示用于PCIe协议的PCIe节点或端点。
[0055] 如本文所描述的,"接口实体"可以指代与存贮设备进行接口连接的一个或多个主 机接口芯片。在一个实施例中,接口实体可以使用PCIe协议将I/O请求转发到路由实体。可 以使用诸如千兆以太网、光纤信道、拨入或者甚至PCIe协议之类的任何合适的协议来接收 在接口芯片处的I/O请求。
[0056] 如本文所描述的,"I/O请求"可以指代用于存储数据或从存贮介质中取回数据的 来自网络的对存贮设备的输入/输出请求。
[0057]如本文所描述的,"高速外围组件互联(PCIe)"可以指代针对更高的最大系统总线 吞吐量、更低的I/O引脚数和更小的物理印迹、对于总线设备的更好的性能提升、更详细的 错误检测和报告机制以及固有的热插拔功能所设计的高速串行计算机扩展总线标准。在常 规的PCIe系统中,PCIe根复合体列举耦合到处理器的所有端点设备并且创建类树形结构。 [0058]企业系统的存贮设备需要海量存储容量、对存贮设备读取和写入的低延迟、高带 宽、低功耗以及可靠性。传统地,使用诸如在电力关闭时保留数据的硬盘驱动器(HDD)介质 之类的存贮介质来实施企业系统。HDD是使用快速旋转盘以便存储和取回数字信息的数据 存贮设备。HDD由一个或多个具有布置在移动致动器臂上以向表面读取和写入数据的磁头 的坚硬("硬")快速旋转盘(盘片)组成。
[0059]归因于读取和写入数据时所涉及的移动部分,HDD固有地易于发生错误和故障,并 且在提高数据寻找时间方面具有下限。另外,由于HDD具有旋转的盘片,因此对能够将该部 分制作得如何小以及该部分的功耗也存在限制。
[0060] 在某些实施例中,本文所描述的技术提出了使用NVM存贮介质来实施存贮设备。在 一些实施例中,使用NVM存贮介质可能通常是有利的,这是因为NVM存贮介质具有较低的寻 找时间、不具有移动部分,并且与HDD相比总体上可以更可靠。
[0061] 在一个实施例中,可以以增强散热、降低功耗、分散功率和工作负载,以及降低延 迟的方式来布置组件、模块和控制器板的配置。
[0062]常规的存贮设备可以提供一个或多个控制器板,其中每个控制器板包括单一处理 复合体以接收I/O请求、处理请求并且向适当的存贮介质转发存储请求。在增加的网络速度 以及对于存贮设备的尺寸的增加的日益增加的需求的情况下,用于存取用于存储的物理介 质的单一点可能变为系统的瓶颈,导致对于I/O请求的高延迟。在单一处理复合体处增加处 理负载可能导致较小的面积中的更高的热量浓度,使得适当的散热成为挑战。而且,单个处 理单元可能不能够足够快速地处理事务以跟上I/O请求。在常规系统中,单一的系统设计可 能已经不具有问题,这是因为事务瓶颈往往是对于HDD的读取和写入的寻找时间,而不是至 HDD的处理路径。
[0063]在一些实施例中,可以使用NVM存贮介质来实施存贮设备。通常,与常规HDD相比, NVM存贮介质可以具有较低的寻找时间。在由NVM存贮介质赋予较低的寻找时间的情况下, 使用单个处理复合体的常规控制器板设计可能导致次优的配置。本发明的实施例也可以提 供进一步的增强来改善对NVM存贮介质的存取时间。虽然可以在本文为了说明的目的使用 NVM存贮介质来描述本发明的一些实施例,但本发明可以不限于NVM存贮介质,并且在不脱 离本发明的范围的情况下可以使用其它合适的物理存贮介质。
[0064]此外,常规的存贮设备可以通过维持数据的镜像存储来实施容错系统。换句话说, 对于每个写入操作,可以使用独立处理路径将数据存储在至少两个分开的存贮子系统中。 在诸如电源故障、存贮介质的故障或处理路径中的错误之类的第一存贮子系统中的灾难性 故障发生时,具有镜像数据的第二存贮系统可以用作在第一系统恢复时取回和存储数据的 有效备份。对于HDD,由于介质的低可靠性,维持镜像数据可能是必要的,并且由于与介质相 关联的较低成本,其是可行的。
[0065]在一些实施例中,NVM存贮介质可以用于实施容错系统。相对地,与常规的存贮介 质相比,NVM存贮介质可能更可靠并且较不易于发生错误。在一些实现方式中,可以使用诸 如独立磁盘冗余阵列(RAID)之类的技术或其它合适的错误恢复和校正技术来确保存储在 NVM存贮介质上的数据的可靠性。因此,如参考附图在本文讨论的实施例中更加详尽地描述 的,可以有利的是,在使用NVM存贮介质所实施的实施例中,通过为对于NVM存贮介质的相同 物理位置的相同读取或写入操作提供多个路径,而不是通过将包括存贮介质的整个系统进 行镜像来降低系统的总体成本。
[0066] 图1示出了根据本发明的一个实施例的存贮设备的示例高层次框图。方框102示出 了具有两个控制器板(104和106)的存贮设备以及耦合到控制器板的刀片的阵列(120a-n)。 在一个实施例中,图1中的存贮设备可以表示主动(active)/主动存贮系统。主动/主动配置 使得两个控制器板的处理模块均能够处理I/O并且提供对于另一个控制器板的备用能力。 在一个简单化的示例中,如果来自控制器板104对特定刀片的读取或写入命令失败,则可以 通过控制器板106试图进行相同的读取或写入。可以实施通信协议以在控制器板104和106 之间传递状态信息。可以有利的是,实施主动/主动存贮设备来提高性能,这是因为与两个 控制器板相关联的处理模块可以同时地或接近同时地处理I/O。然而,图1中的存贮设备不 受限于主动/主动存贮设备,并且也可以用于主动/被动配置中,其中一个控制器板的处理 模块对于处理I/O请求是主动的,而另一个控制器板在备用模式中空闲,以便准备好在主动 的主要控制器板发生故障或离线时接管I/O活动。
[0067] 如图1中所示,每个NVM刀片可以耦合到两个控制器板。每个控制器板具有用于路 由的路由模块(108和110)、用于处理I/O请求的处理模块(112和114)以及用于接收I/O请求 的主机接口(116和118)。在一种实现方式中,路由模块(108和110)可以负责将来自接口模 块(116和118)的I/O请求路由到处理模块(112和114)以便进一步处理I/O请求。处理模块 (112和114)可以使用文件系统软件堆栈(未示出)来处理I/O请求。路由模块(108和110)还 将来自处理模块(112和114)的存取和存储请求路由到NVM刀片120a-n。在一种实现方式中, NVM刀片使用PCIe协议或任何其它合适协议耦合到路由模块(108和110)。
[0068] 在一种实现方式中,每个NVM刀片可以耦合到两个控制器板(104和106),这使得 NVM存贮介质的每个物理地址可由任一控制器板来存取。该配置可以有利于避免底层存贮 介质的复制和数据的镜像,其中可以通过使用更可靠的存贮介质和/或诸如RAID之类的尖 端数据恢复技术或其任何组合来确保物理介质上的数据的可靠性。
[0069]图2示出了根据本发明的一个实施例的存贮设备的另一个示例框图。图2示出两个 控制器板的图像,其中每个控制器板包括两个处理器、存储器、路由器和接口芯片。图2还描 绘了具有用于气流的中央通道的42个NVM刀片。虽然未示出,但存贮设备也可以包括具有功 率管理功能的两个桥式板以及板载NVM。板载NVM可以用于存储诸如指针、更新的活动、高速 缓存备份和读取/写入缓冲器之类的动态元数据。在一些实施例中,字节可写的诸如磁性 RAM之类的NVM可以用于实施板载NVM。另外,存贮设备可以包括12个风扇,其中8个风扇被用 于冷却NVM存储器,4个风扇被用于冷却控制器板。可以将这些组件放置在图2的示例配置中 以优化气流、处理负载、散热。存贮设备还可以包括多个电源。电源通常易于发生故障并且 可能由于风扇或其它功率组件的故障而发生故障。使用多个电源向存贮设备供电可以避免 由于电源之一的组件的故障所引起的存贮设备的故障。在一种实现方式中,可以通过电力 轨对控制器或控制器板进行供电,其中电力轨可以从多个电源来供电。在连接到电力轨的 电源之一发生故障的情况下,电力轨继续从运转的电源供电。在一些实现方式中,可以利用 正确运转的电源对发生故障的电源进行热插拔(即,在没有使存贮设备轮转的功率的情况 下是可更换的)。
[0070] NVM刀片和控制器/控制器板可以具有在任一个板发生故障的情况下用于防止短 路的单独实施的数字断路器。此外,还可以以下面这种方式来实施电源:在电源发生故障的 情况下允许电源仅仅向电力轨供应功率、而不从电力轨消耗功率。在一种实现方式中,二极 管可以用于防止功率通过故障的电源漏出。
[0071]参照图2所描述的许多组件(诸如,控制器板、电源、NVM刀片、桥式板和风扇)以及 它们的相关联的配置是非限制性的并且作为示例被提供用于示出存贮设备的特定配置。 [0072]图3示出了根据本发明的一个实施例的存贮设备的又一个示例框图。如图3中所 示,存贮设备的组件可以被配置为符合矩形形状框。在一个示例配置中,气流可以是从前到 后,其中风扇被放置在存贮设备的后面。该形状可以有利于将多个存贮设备一起分组在企 业数据存贮设施处的机架配置中。然而,存贮设备的形状不受限于图3中示出的矩形形状 框。
[0073]图4不出了根据本发明的一个实施例的存设备的不例框图。图4的系统402不出 具有第一控制器板404和第二控制器板406的存贮设备。为了说明的目的,图4描绘了来自多 个NVM刀片的单个NVM刀片420。
[0074] 第一控制器板404可以具有第一处理实体412、耦合到第一处理实体的存储器416、 第二处理实体414、耦合到第二处理实体的存储器432、接口实体408以及路由实体410。 [0075] 第二控制器板406可以具有第三处理实体424、耦合到第三处理实体的存储器428、 第四处理实体418、耦合到第四处理实体的存储器430、接口实体422以及路由实体426。 [0076] 在一种实现方式中,路由实体(410和426)可以负责将来自接口实体(408和422)的 I/O请求路由到处理实体(412、416、428和430)之一以进一步处理I/O请求。处理实体可以使 用文件系统软件堆栈(未示出)来处理I/O请求。路由实体(410和426)还将来自处理实体 (412、416、428和430)的数据请求路由到NVM刀片420。
[0077] 在一些实施例中,来自第一控制器板404的路由实体410和来自第二控制器板406 的路由实体426可以耦合到NVM刀片420以存储数据和从NVM刀片420中取回数据。在一种实 现方式中,NVM刀片420使用PCIe协议耦合到路由实体。该配置可以有利于避免底层存贮介 质的复制和数据的镜像,其中可以通过使用更可靠的存贮介质和/或诸如RAID之类的尖端 的数据恢复技术或其任何组合来确保物理介质上的数据的可靠性。
[0078]在图4中,在一个示例配置中,第一处理实体412可以被配置为:接收一个或多个1/ 〇请求,确定与I/O请求相关联的数据被用于存储操作并且其与耦合到第一路由实体410的 第一刀片上的特定位置相关联,以及向第一路由实体传送与I/O请求相关联的数据以将第 一数据存储在第一刀片420上。在一种实现方式中,在第一处理实体412上运行的文件系统 软件堆栈可以确定与I/O请求相关联的位置和NVM刀片操作。例如,在一个实施例中,第一处 理实体412可以执行从文件标识符到数据在物理存贮介质上的物理位置的一个或多个地址 转换。在一个方面中,由第一处理实体412接收的I/O请求可以首先在接口实体408被接收并 且通过多个路由实体之一被转发到第一处理实体412。
[0079]类似地,第二处理实体414可以被配置为:接收另一个I/O请求,确定与I/O请求相 关联的数据将被存储在耦合到第一路由实体410的第一刀片420上的另一个位置,以及向第 一路由实体410传送与I/O请求相关联的数据以将数据存储在第一刀片420上。第二处理实 体414也可以运行文件系统软件堆栈以用于确定与I/O请求相关联的位置和存储操作。
[0080]以上示例说明用于执行负载平衡以及为了从相同控制器板存取两个处理实体之 间的相同NVM刀片420而在各处理实体(412和414)之间分散多个I/O请求的示例配置和处 理。虽然示出了两个处理实体,但可以使用多个处理实体。这有利于在以超高速同时对相同 物理介质执行多个存储操作时分散处理I/O请求的负载并且也避免瓶颈。
[0081]还可以使用类似的技术从物理介质取回所存储的数据。例如,第二处理实体414可 以被配置为接收用于读取由第一处理实体412或就此而言的任何其它处理实体所存储的数 据的I/O请求。第二处理实体414可以确定I/O请求是对于位于耦合到第一路由实体410的第 一刀片420的位置处的数据的读取请求,从第一路由实体410从该位置请求数据,以及从第 一路由实体410接收第一数据。
[0082] 在一个示例配置中,第一处理实体412和第二处理实体414可能不是直接耦合的, 而是通过第一路由实体410进行彼此耦合。可以使用PCIe协议或任何其它合适的协议来执 行在第一处理实体412和第一路由实体410之间的数据的传送以及在第二处理实体414和第 一路由实体410之间的数据的传送。
[0083] 为了说明的目的,虽然图4描绘了一个NVM刀片和两个控制器板,其中每个控制器 板具有两个处理实体、两个存储器以及一个路由实体和接口实体,但本发明的实施例不受 限于在图中所描绘的实体的数量。例如,在不脱离本发明的范围的情况下,另一个示例配置 可以包括多个NVM刀片、多个路由实体和多个接口实体。图7是这种配置的一个示例,其具有 多个路由器(路由实体)和多个接口芯片(接口实体)。
[0084] 在另一个示例配置中,第一处理实体412和第二处理实体414可以耦合到第一控制 器板404上的另一个(第二)路由实体(未示出)。类似于路由实体410,第二路由实体也可以 耦合到另一个NVM刀片并且可以处理从第一处理实体412和第二处理实体414两者接收到的 存储存取命令。可以使用PCIe协议或任何其它合适的协议来执行在第一处理实体412和第 二路由实体(未示出)之间的数据的传送以及在第二处理实体414和第二路由实体(未示出) 之间的数据的传送。类似地,第二控制器板406上的组件以与在以上描述的第一控制器板 404类似的方式进行配置和操作。
[0085] NVM刀片420可以包括用于与多个控制器板进行通信的多个路由接口。在存贮设备 402的一个示例实现方式中,包括路由实体410的第一控制器板404和包括路由实体426的第 二控制器板406耦合到NVM刀片420 AVM刀片420可以通过路由实体410耦合到第一控制器板 404,并且NVM刀片可以通过路由实体426耦合到第二控制器板406。在一种实现方式中,NVM 刀片420使用PCIe协议或任何其它合适的协议与控制器板上的路由实体(410和426)进行通 信。在一个实施例中,NVM刀片包括NVM存贮介质。在其它实施例中,存贮设备可以包括多个 NVM刀片,控制器板可以包括多个路由实体。
[0086] 在一些实施例中,来自第一控制器板404的路由实体410和来自第二控制器板406 的路由实体426可以彼此耦合。在一些实现方式中,两个路由实体可以使用不符合PCIe的透 明桥进行彼此耦合。在一种实现方式中,两个路由实体(410和426)可以彼此传递容错信息、 系统状态信息、事务完成信息以及关于控制器板的状态的其它信息。
[0087] 在一个实施例中,来自图4的存贮设备402可以表示主动/主动存贮系统。主动/主 动配置使得两个控制器板的处理模块能够处理I/O读取并且提供对于另一个控制器板的备 用能力。在一个简单化的示例中,如果来自控制器板404对特定刀片的读取或写入命令失 败,则可以通过控制器板406试图进行相同的读取或写入。如上所述,可以实施通信协议以 通过路由实体410和426在控制器板404和406之间传递状态信息。可以有利的是,实施主动/ 主动存贮设备来提高性能,这是因为与两个控制器板相关联的处理模块可以同时处理I/O。 然而,图4中的存贮设备不受限于主动/主动存贮设备,并且也可以用于主动/被动配置中, 其中一个控制器板的处理模块对于处理I/O请求是主动的,而另一个在备用模式中空闲,以 便在主动的主要控制器板发生故障或离线时接管I/O活动。
[0088] 在主动/主动系统的一种实现方式中,一个或多个控制器板可以假定作为主板的 角色,而其它一个或多个板可以假定作为从板的角色。主控制器板可以执行对NVM刀片的所 有数据写入,而主板或从板均可以执行读取。
[0089] 在一种示例实现方式中,可以由主控制器板来部分地执行到达从控制器板的I/O 写入操作。例如,可以将写入命令或与写入命令相关联的信息从所述从控制器板转发到主 控制器板。在一种实现方式中,NT PCIe桥可以用于将与写入操作相关联的信息从所述从控 制器板递送到主控制器板。在一种实现方式中,可以仍然由从控制器板将到达从控制器板 的用于写入操作的数据提供给NVM刀片。
[0090] 主控制器板和从控制器板可以维持用于将读取和写入操作映射到NVM刀片的映射 表。在一种实现方式中,将读取和写入表格存储在NVM刀片之一中。在一种实现方式中,读取 和写入表格可以被两个控制器板共享。然而,在另一种实现方式中,可以由控制器板分开地 维持读取和写入表格。在每个控制器板具有其自己的表格的实例中,主控制器板可以更新 用于主控制器板和从控制器板的表格。
[0091 ] 如果从控制器板发生故障,则主控制器板继续处理操作。另一方面,如果主控制器 板发生故障,则存贮设备失效备援(fail over)到从控制器板。从控制器板可以变为新的主 控制器板并且开始处理所有I/O写入操作。
[0092] 上面所描述的系统可以允许在两个或更多个控制器板之中分发读取事务的工作 量,这是因为该读取操作需要用于解码I/O请求的处理能力和时间。
[0093] 图5是根据本发明的一个实施例的、示出用于执行本发明的实施例的方法的流程 图。由包括硬件(电路、专用逻辑等)、(诸如运行于通用计算系统或专用机器上的)软件、固 件(嵌入式软件)或其任何组合的处理逻辑来执行方法500中的信号传送。在一个实施例中, 通过在图13中所描述的一个或多个计算机系统1300来执行方法500。
[0094]图5的流程图描绘了处理I/O请求的第一处理实体502和第二处理实体504。虽然图 5仅仅描绘两个处理实体,但可以实施多个处理实体来执行参考图5所描述的本发明的实施 例。例如,本发明的实施例可以使用第三、第四、第五或任何数量的处理实体来执行由第一 处理实体或第二处理实体所执行的本发明的类似步骤。此外,虽然在图6中在开始指示符和 结束指示符之间对于每个处理实体仅仅描绘了一个I/O请求,但可以执行任何数量的I/O请 求。
[0095]在步骤506,耦合到多个NVM刀片的第一处理实体经由路由实体接收第一 I/O请求。 [0096] 在步骤508,第一处理实体确定第一 I/O请求是写入请求还是读取请求。在步骤 508,如果确定第一 I/O请求是读取请求,则在步骤510,第一处理实体可以从多个NVM刀片中 确定目标NVM刀片以及将要从其读取数据的目标NVM刀片中的位置。在一种实现方式中,第 一处理实体可以通过使用在第一处理实体上运行的文件系统软件堆栈执行一个或多个地 址转换来确定目标NVM刀片以及目标NVM刀片中的位置。
[0097]在步骤512,第一处理实体请求与第一 I/O请求相关联的数据。在步骤514,对于该 读取I/O请求,第一处理实体经由路由实体接收数据。
[0098] 在步骤508,如果确定第一 I/O请求是写入请求,则在步骤516,第一处理实体可以 从多个NVM刀片中确定目标NVM刀片以及数据将被存储的目标NVM刀片中的位置。在一种实 现方式中,第一处理实体可以通过使用在第一处理实体上运行的文件系统软件堆栈执行一 个或多个地址转换来确定目标NVM刀片以及目标NVM刀片中的位置。在步骤518,对于该写入 I/O请求,第一处理实体经由路由实体向目标NVM刀片传送数据以将数据存储在目标NVM刀 片中。
[0099] 类似地,在第二处理实体504处,在步骤520,耦合到多个NVM刀片的第二处理实体 可以经由路由实体接收第二I/O请求。于在第一处理实体处所接收的第一 I/O请求之前/之 后或与其并行地,第二处理实体504可以接收第二I/O请求。此外,第一处理实体502和第二 处理实体504可以与彼此无关地执行图5中所标识的步骤。
[0100] 在步骤522,第二处理实体确定第二I/O请求是写入请求还是读取请求。在步骤 522,如果确定第二I/O请求是读取请求,则在步骤524,第二处理实体可以从多个NVM刀片中 确定目标NVM刀片以及将要从其读取数据的目标NVM刀片中的位置。在一种实现方式中,第 二处理实体可以通过使用在第二处理实体上运行的文件系统软件堆栈执行一个或多个地 址转换来确定目标NVM刀片以及目标NVM刀片中的位置。在步骤526,第二处理实体请求与第 二I/O请求相关联的数据。在步骤528,对于该读取I/O请求,第二处理实体经由路由实体来 接收数据。
[0101 ]在一种替换中,在步骤522,如果确定第二I/O请求是写入请求,则在步骤530,第二 处理实体可以从多个NVM刀片中确定目标NVM刀片以及数据将被存储的目标NVM刀片中的位 置。在一种实现方式中,第二处理实体可以通过使用在第二处理实体上运行的文件系统软 件堆栈执行一个或多个地址转换来确定目标NVM刀片以及目标NVM刀片中的位置。在步骤 532,对于该写入I/O请求,第二处理实体经由路由实体向目标NVM刀片传送数据以将数据存 储在目标NVM刀片中。
[0102] 如上面所讨论的,类似于第一处理实体502,第二处理实体504可以处理I/O请求。 在一些实施例中,第一处理实体和第二处理实体可以以相对于彼此的任何顺序来处理I/O 请求,并且还可以同时处理I/O请求。此外,第一处理实体和第二处理实体可以同时处理目 标是多个NVM刀片之一的事务。
[0103] 返回参考图4,可以通过图4中所描绘的任何处理实体来说明系统中的两个处理实 体的示例。例如,两个处理实体可以是同一控制器板404上的412和414,或者是存在于不同 控制器板上的处理实体412和处理实体428。
[0104] 可以使用PCIe协议或任何其它合适的协议来执行参考图5所讨论的一个或多个组 件之间的通信。即使I /0请求导致针对同一 NVM刀片的存储操作,图5的方法在将I /0请求分 散在多个处理实体之间也可以是有利的,这允许更快的处理、避免瓶颈和促进更好的散热。
[0105] 应当理解,在图5中示出的特定步骤提供根据本发明的实施例的在操作模式之间 切换的特定方法。在替换实施例中,也可以相应地执行步骤的其它顺序。例如,本发明的替 换实施例可以以不同次序执行上面略述的步骤。为了进行说明,用户可以选择从第三操作 模式改变为第一操作模式,从第四模式改变为第二模式,或者其间的任何组合。而且,在图5 中示出的单独的步骤可以包括适合于单独的步骤的能够以各种顺序执行的多个子步骤。此 外,取决于特定应用,可以添加附加步骤或移除附加步骤。本领域普通技术人员将认识和理 解到方法500的许多变化、修改和替换。
[0106]图6是根据本发明的一个实施例的、示出用于执行本发明的实施例的另一个方法 的流程图。由包括硬件(电路、专用逻辑等)、(诸如运行于通用计算系统或专用计算机上的) 软件、固件(嵌入式软件)或其任何组合的处理逻辑来执行方法600中的信号传送。在一个实 施例中,通过在图13中所描述的一个或多个计算机系统1300来执行方法600。
[0107]图6的流程图描绘了处理I/O请求的第一处理实体602和第二处理604。虽然图6仅 仅描绘两个处理实体,但可以实施多个处理实体来执行参考图6所描述的本发明的实施例。 例如,本发明的实施例可以使用第三、第四、第五或任何数量的处理实体来执行由第一处理 实体或第二处理实体所执行的本发明的类似步骤。此外,虽然在图6中在开始指示符和结束 指示符之间对于每个处理实体仅仅描绘了一个I/O请求,但可以执行任何数量的I/O请求。 图6描述了在图5中所描述的实施例的一种实现方式。
[0108] 在步骤606,耦合到多个NVM刀片的第一处理实体经由第一路由实体来接收第一 1/ 〇请求。
[0109] 在步骤608,第一处理实体确定第一 I/O请求是写入请求还是读取请求。在步骤 608,如果确定第一 I/O请求是读取请求,则在步骤610,第一处理实体可以确定该读取请求 是对于来自耦合到第一路由实体的多个NVM刀片当中的第一NVM刀片的第一位置的数据的 读取。在一种实现方式中,第一处理实体可以通过使用在第一处理实体上运行的文件系统 软件堆栈执行一个或多个地址转换来确定第一 NVM刀片以及第一 NVM刀片上的第一位置。
[0110] 在步骤612,第一处理实体经由第一路由实体请求与第一 I/O请求相关联的数据。 在步骤614,第一处理实体经由第一路由实体来接收数据并且完成读取I/O请求。
[0111] 在步骤608,如果确定第一 I/O请求是写入请求,则在步骤616,第一处理实体可以 从多个NVM刀片中确定第一 NVM刀片以及将要存储数据的第一 NVM刀片上的第一位置。在一 种实现方式中,第一处理实体可以通过使用在第一处理实体上运行的文件系统软件堆栈执 行一个或多个地址转换来确定第一 NVM刀片以及第一 NVM刀片上的第一位置。在步骤618,第 一处理实体经由第一路由实体向第一 NVM刀片传送数据以将数据存储在第一 NVM刀片上的 第一位置。
[0112] 类似地,在第二处理实体604处,在步骤620,耦合到多个NVM刀片的第二处理实体 可以经由第一路由实体接收第二I/O请求。于在第一处理实体处所接收的第一 I/O请求之 前/之后或与其并行地,第二处理实体604可以接收第二I/O请求。
[0113] 在步骤622,第二处理实体确定第二I/O请求是写入请求还是读取请求。在步骤 622,如果确定第二I/O请求是读取请求,则在步骤624,第二处理实体可以确定读取请求是 对于来自耦合到第一路由实体的多个NVM刀片当中的第一NVM刀片的第一位置的数据的读 取。在一种实现方式中,第二处理实体可以通过使用在第二处理实体上运行的文件系统软 件堆栈执行一个或多个第一地址转换来确定第一 NVM刀片以及第一 NVM刀片上的第一位置。 在步骤626,第二处理实体经由第一路由实体请求与第二I/O请求相关联的数据。在步骤 628,第二处理实体经由第一路由实体来接收数据并且完成读取I/O请求。
[0114] 在一种替换中,在步骤622,如果确定第二I/O请求是写入请求,则在步骤630,第二 处理实体可以确定写入请求可以是将数据存储在耦合到第一路由实体的多个NVM刀片中的 第一NVM刀片的上的第一位置的请求。在一种实现方式中,第一处理实体可以通过使用在第 二处理实体上运行的文件系统软件堆栈执行一个或多个地址转换来确定第一 NVM刀片以及 第一 NVM刀片上的第一位置。在步骤632,对于写入I/O请求,第二处理实体经由第一路由实 体向目标NVM刀片传送数据以将数据存储在目标NVM中。
[0115] 如上面所讨论的,类似于第一处理实体602,第二处理实体604可以处理I/O请求。 在一些实施例中,第一处理实体和第二处理实体可以以相对于彼此的任何顺序来处理I/O 请求并且也可以同时处理I/O请求。此外,第一处理实体和第二处理实体可以同时处理目标 是多个NVM刀片之一的事务。
[0116] 返回参考图4,可以通过存在于同一控制器板404上的处理实体412和414来说明存 在于同一控制器板上并且通过同一路由实体存取同一 NVM刀片的两个处理实体的示例。在 图6中描述的步骤允许存在于同一控制器板上的两个处理实体同时处理并且服务于目标是 同一NVM刀片或者甚至NVM刀片上的同一位置的I/O请求。如在图6中所描述的,虽然可以在 分开的处理实体处解码和处理I/O请求,但它们可以使用同一路由实体来存取NVM刀片,因 而通过避免硬件的复制来节约成本。
[0117] 可以使用PCIe协议或任何其它合适的协议来执行参考图6所讨论的一个或多个组 件之间的通信。即使I/O请求导致针对同一 NVM刀片的存储操作,图6的方法在将I/O请求分 散在多个处理实体之间也可以是有利的,以便允许更快的处理、避免瓶颈和促进更好的散 热。
[0118] 应当理解,在图6中示出的特定步骤提供了根据本发明的实施例的在操作模式之 间切换的特定方法。在替换实施例中,也可以相应地执行步骤的其它顺序。例如,本发明的 替换实施例可以以不同次序执行上面略述的步骤。为了进行说明,用户可以选择从第三操 作模式改变为第一操作模式,从第四模式改变为第二模式,或者其间的任何组合。而且,在 图6中示出的单独的步骤可以包括适合于单独的步骤的能够以各种顺序执行的多个子步 骤。此外,取决于特定应用,可以添加附加步骤或移除附加步骤。本领域普通技术人员将认 识和理解到方法600的许多变化、修改和替换。
[0119] 图7示出了根据本发明的一个实施例的控制器板的示例框图。在一个实施例中,控 制器板702可以表示图1的控制器板104或106。如图7中所示,控制器板具有2个处理器(704 和 708)、4个路由器(712、714、716、718)和4个接口芯片(720、722、724和726)。处理器0(704) 可以具有用于控制对其本地存储器706a-d的存取的存储器控制器。类似地,处理器1(708) 也可以具有用于控制对其本地存储器710a-d的存取的存储器控制器。在一个实施例中,接 口芯片和路由器可以使用PCIe协议或任何其它合适的协议来与彼此进行通信。PCIe也可以 被用作用于处理器和路由器之间的通信的路由协议。可以使用诸如千兆以太网、光纤信道、 拨入或者甚至PCIe协议之类的任何协议来接收在接口芯片处的I/O请求。
[0120] 如图7中所示,在一个实施例中,每个接口芯片能够通过路由器向任一个处理器 (704和708)传递数据。每个接口芯片可以通过PCIe协议或任何其它合适的协议耦合到至少 一个路由器。I/O请求可以到达接口芯片之一。接口芯片可以使用PCI e协议将I/O请求转发 到路由器。每个路由器连接到控制器板702上的两个处理器。路由器接收I/O请求并且确定 一处理器以转发I/O请求用于进一步处理。一旦处理器已经解码了I/O请求并且查明了用于 存储数据或从NVM存贮介质取回数据的操作,该处理器就向路由器之一发送存储器操作命 令。每个路由器通过NVM刀片耦合到NVM存贮介质的子集。例如,在图7中,每个路由器连接到 大致四分之一总数量的NVM刀片。向路由器发送NVM存贮介质请求的确定可以基于NVM存贮 地址空间内的存储/存取请求的地址。例如,如果处理器704确定I/O请求导致对耦合到路由 器R2 (716)的NVM刀片的存储,那么处理器可以使用PCIe协议将请求转发到路由器R2 (716)。 路由器R2 (716)将存储请求转发到相应的NVM刀片以便存储。
[0121] 在某些实施例中,参考图7所描述的配置可以有利于降低与各种电子组件相关联 的负载、增加针对NVM存贮介质的操作的吞吐量,以及从存贮设备内的各个组件耗散热量。
[0122] 在常规的PCIe系统中,中央处理单元可以包含用于整个系统的根复合体。PCle根 复合体列举耦合到处理器的所有端点设备并且创建类树形结构。由耦合到PCIe根复合体的 一个或多个处理器来处理在端点处始发的所有请求。在具有大量从诸如接口芯片之类的端 点处始发的请求的存贮设备中,根复合体和处理器变为系统中处理事务的瓶颈。在一种实 现方式中,更强有力的处理器可以用于迅速地处理I/O请求并且减轻瓶颈。虽然该方式可以 暂时地减轻瓶颈,但其可能增加与处理器相关联的功率负载。此外,由于由处理器处理的1/ 0请求数量增加,处理器也可能跨越控制器板上的小范围生成更多热量。在一个处理器或紧 密地集群的处理器处的增加的热量可能使得在整体上将存贮设备的更密集的热封(heat envelope)维持在可接受水平变得有挑战性。附加的功率负载和热量可能在组件级和设备 级二者处产生更多故障。
[0123] 本发明的实施例提出将用于存取NVM存贮器的处理和路由功能跨越控制器板分散 到多个处理实体。在一个实施例中,可以跨越控制器板分散多个处理实体以处理I/O请求。 在一种实现方式中,处理实体之一可以充当PCIe根复合体,并且第二处理实体可以充当端 点。例如,在图7中,处理器0(707)可以被配置为PCIe根复合体,并且处理器1(708)可以被配 置为端点。在一种实现方式中,可以对于路由器(路由器0(712)、路由器2(714)、路由器3 (716)和路由器4(718))中的每一个而将用于处理器1(708)的存储器空间四次列举为端点。 在用于I/O请求的接收路由器不具有用于I/O请求的适当映射的实例中,路由器可以将I/O 请求转发到被配置为用于确定映射的PCIe根复合体的处理实体。而且,可以在配置时使用 路由信息来配置接口芯片。
[0124] 在已经在接口芯片和路由器处建立了路由的实例中,可以将到达接口芯片并且被 转发到路由器的I/O请求发送到分散处理功能的任一处理实体(704和708)。除了处理以外, 所描述的体系结构也可以将链路的连接进行分散。例如,可以实施多个接口芯片来同时接 收I/O请求以及将这些I /〇请求转发到路由器。此外,在路由器当中分发NVM刀片,这允许在 多个路由器当中分发对NVM刀片的存取、避免总线或路由积压。如图7中所描述的这种配置 还可以有利于:在存取可通过不同路由器存取的NVM刀片时,允许同时对多个刀片的存取, 这显著地提高了读取和写入性能。在替换实现方式中,本发明的实施例提出多个处理实体, 每个处理实体具有它们自己的根复合体以用于跨越控制器板分散用于存取NVM存贮器的处 理和路由功能。每个端点(即,路由器)可以连接到一个以上的根复合体。因此,能够将到达 接口芯片并且被转发到路由器的I/O请求发送到分散处理功能的任一处理实体(704和 708)。除了处理以外,所描述的体系结构也可以将链路的连接进行分散。例如,可以实施多 个接口芯片来同时接收I/O请求并且将这些I/O请求转发到路由器。此外,在路由器当中分 发NVM刀片,这允许在多个路由器当中分发对NVM刀片的存取、避免总线或路由积压。由于每 个处理器连接到控制器板上的每个路由器,因此每个处理器能够单独地寻址任何NVM存储 地址。如图7中所描述的这种配置还可以有利于:在存取可通过不同路由器存取的NVM刀片 时,允许同时对多个刀片的存取,这显著地提高了读取和写入性能。
[0125] 处理器0(704)可以从启动ROM 728启动(boot),处理器1(708)可以从启动ROM 734 启动。在一个实施例中,在处理器704上运行的启动ROM图像还可以包括用于存储文件系统 堆栈的初始化信息。在一种实现方式中,可以从板载NVM加载存储文件系统操作系统(0S)。 在另一种实现方式中,可以从NVM刀片之一加载存储文件系统0S。在一种实现方式中,在处 理器0(704)和处理器1(708)上运行的0S的图像可以是不同的。文件系统0S可以负责将1/0 请求转变为硬件读取和写入。
[0126] 在某些实施例中,板载NVM 736可以用于存储诸如指针、更新的活动、高速缓存备 份和读取/写入缓冲器之类的动态元数据。在一些实施例中,字节可写的诸如磁性RAM (MRAM)之类的NVM可以用于实施板载NVM。控制器板也可以具有连接到处理器704和处理器 708的调试端口740。调试端口可以支持一个或多个单独的接口,诸如USB、PCIe、千兆以太网 等。
[0127] 图8示出了根据本发明的至少一个实施例的、对于控制器板上的每个组件可见的 各个组件的地址空间的示例框图。在一个实施例中,可以将地址空间定义为PCIe地址空间。
[0128] P0 810表示从图7的处理器0(704)可见的PCIe地址空间的视图。P1 830表示从图7 的处理器1(708)可见的PCIe地址空间的视图。R0 850、R1 860、R2 870和R3 880分别表示从 路由器0(712)、路由器1(714)、路由器2(716)和路由器3(718)可见的PCIe地址空间的视图。 在一个实施例中,诸如处理器0(704)之类的PCIe根复合体可以发现所有端点并且配置用于 每个端点的PCI e地址空间。
[0129] 在一些实施例中,对从控制器板的组件中的任何之一可见的各个PCIe范围中的任 何之一的存取可以导致与对另一个PCIe地址范围的存取相比不同类型的响应。例如,根据 本发明的一个实施例,从处理器存取PCIe地址空间的一个范围可以导致对路由器之一的配 置改变。在另一个示例中,存取PCIe地址空间的另一个范围可以导致对耦合到路由器之一 的NVM刀片之一的读取/写入存取。还可以将对PCIe地址空间的一些存取映射至处理器的本 地存储器或控制器板上的相邻的处理器之一的存储器。在又一个示例中,对PCIe地址空间 的一些存取可以导致通过非透明(NT)PCIe桥对相邻控制器板上的组件的读取/写入。
[0130] 通过PCIe地址空间,若干实体具有对控制器板上的其它实体的地址空间的至少部 分存取。例如,在P0 810中,处理器P0 704可以存取其自己的存储器、部分存取处理器P1 708的存储器以及每一个路由器的地址空间。在一个实施例中,将NVM刀片分组成NVM刀片的 四个单独的组,其中NVM刀片的每个组可以耦合到路由器之一。通过NVM刀片的组可以耦合 的路由器,可存取属于NVM刀片的特定组的NVM刀片中的任何一个。
[0131] 在图8中,从用于P0 810的PCIe地址空间中,B-G0 808表示通过路由器R0 712可存 取的第一组NVM刀片的地址空间。路由器R0 712可以耦合到第一组NVM刀片并且也可以通过 由主机总线适配器0(HBA0)806指定的地址空间而从处理器P0 704可配置。类似地,处理器 P0(704)可以通过地址空间B-G1 814存取第二组NVM刀片,并且通过HBA1 812存取第二路由 器R1 714、通过地址空间B-G2 818存取第三组NVM刀片、通过HBA2 816存取第三路由器R2 716,并且通过地址空间B-G3 822存取第四组NVM刀片并且通过HBA3 820存取第四路由器R3 718。在一些实现方式中,可以保留地址空间824的多个区段。在某些实施例中,诸如MRAM 828之类的板载NVM可以用于存储诸如指针、更新的活动、高速缓存备份和读取/写入缓冲器 之类的动态元数据。此外,处理器P0(704)可以通过PCIe地址空间DRAM(P0)802存取其自己 的本地存储器706a-d,并且通过PCIe地址DRAM(P1)804存取相邻处理器P1 708的存储器。在 一些实施例中,处理器P0(704)还可以通过NT端口826向相邻控制器板的组件发送消息。
[0132] 类似于P0 810,从每一个组件可见的PCIe地址空间的视图可以为相应的组件提供 使用PCIe地址空间与彼此进行交互的能力。例如,处理器Pl(708)还可以通过其PCIe地址空 间P1 830存取路由器(HBAO 840、HBA1 838、HBA2 836和HBA3 833)中的每一个、相关联的 NVM刀片的组(B-GO 841、B-G1 839、B-G2 837和B-G3 834)、通过用于DRAM(P1)831 的PCIe地 址空间存取其自己的本地存储器710a-d,以及用于相邻处理器P0(704)DRAM(P0)832、MRAM 842和NT端口 838的存储器。
[0133] 路由器还可以具有PCIe地址空间的类似的但具有更多局限的视图。例如,路由器 R0 712可以具有系统的PCIe地址空间视图R0 850。路由器R0可以能够通过DRAM(P0)851和 DRAM(P1)853分别与处理器P0(704)、处理器Pl(708)进行通信。在某些实施例中,诸如MRAM 854之类的板载NVM可以用于存储诸如指针、更新的活动、高速缓存备份和读取/写入缓冲器 之类的动态元数据。可以将控制器板上的其它组件对PCIe地址空间HBA0858的存取解释为 对路由器R0 712的命令。可以将对B-G0 856的存取解释为对耦合到路由器R0 712的NVM刀 片的读取和写入请求。路由器R0 712可能不具有为其它路由器或NVM刀片而保留的PCIe地 址空间,这是因为在这些组件之间不存在非直接耦合,如图7中所示。R3 718也可以通过 HBA3 886和B-G3 887来分别存取处理器P0(704)DRAM(P0)881、处理器P1 708 DRAM(Pl) 883、MRAN 885、其自己的配置空间以及耦合到路由器的NVM刀片。
[0134] 路由器R1 714和R2 716也可以通过DRAM(P0)(861、871)和DRAM(P1)(863、873)分 别存取处理器P0(704)和Pl(708)。可以通过HBA1 866和HBA2 877以及它们相关联的NVM刀 片B-G1 867和B-G2 878存取用于路由器R1 714和R2 716的配置空间。此外,路由器R1 714 和R2 716可以能够分别通过NT端口865和875向相邻控制器板上的路由器发送消息。
[0135] 在一些实现方式中,用于每个组件的PCIe地址空间内的一些地址范围可以是未被 使用的并且被保留以供未来使用(843、852、857、862、864、868、872、874、876、879、882、884 和888)。
[0136] 如先前所讨论的,图8中示出的PCIe地址空间配置是为了说明的目的并且对地址 空间的其它实现方式是非限制性的。
[0137] 图9示出了根据本发明的一个实施例的存贮设备的另一个示例高层次框图。方框 902示出具有两个控制器(904和906)的存贮设备以及耦合到控制器的NVM刀片(920a-n)的 阵列。在一个实施例中,可以使用桥908将控制器904和906耦合在一起,使用通信协议在控 制器904和906之间传递状态信息以用于读取和写入事务。
[0138] 在一种实现方式中,第一控制器904和第二控制器906是包括用于处理I/O请求的 一个或多个处理器、用于控制器和多个NVM刀片之间的路由操作的一个或多个路由器以及 一个或多个接口芯片的印刷电路板(PCB)。先前已经在图1-8中讨论了此类控制器板的示 例。在另一种实现方式中,可以通过被实施为ASIC、FGPA、MCM的控制器或任何其它合适的解 决方案来执行多个分立组件的功能。在一种实现方式中,第一控制器904和第二控制器906 可以被实施为ASIC,每个控制器各自包括处理逻辑和路由逻辑。在一种实现方式中,控制器 也可以包括接口逻辑。在另一种实现方式中,如图9中所示,为了对I/O请求进行接收和响 应,第一控制器904可以耦合到主机接口 916,第二控制器906可以耦合到另一个主机接口 918〇
[0139]在某些实施例中,图9中的存贮设备可以表示主动/主动存贮设备。主动/主动配置 使得控制器的处理逻辑能够处理I/O并且提供用于另一个控制器的备用能力。可以有利的 是,实施主动/主动存贮设备来提高性能,这是因为与两个控制器相关联的处理逻辑可以同 时或接近同时地处理I/O。然而,图9中的存贮设备不受限于主动/主动存贮设备,并且也可 以用于主动/被动配置中,其中一个控制器的处理逻辑对于处理I/O请求是主动的,而另一 个控制器在备用模式中空闲以便在主动的主要控制器板发生故障或离线时接管I/O活动。 [0140] 在一种实现方式中,在图9中示出的主动/主动系统中,第一控制器904可以被配置 为在主动模式下操作,并且接收用于存储数据和从NVM存贮介质取回数据的I/O请求。类似 地,第二控制器906也可以被配置为在主动模式下操作,并且接收用于存储数据和从NVM存 贮介质取回数据的I/O请求。虽然图9仅仅描绘了两个控制器,但多个控制器可以操作在主 动模式中。
[0141] 另外,存贮设备可以包括多个包括NVM存贮介质的NVM刀片920a-n。在一种实现方 式中,每个NVM刀片可以耦合到两个控制器(904和906),这允许任一控制器可存取NVM存贮 介质的每个物理地址。该配置可以有利于避免底层存贮介质的复制和数据的镜像,其中可 以通过使用更可靠的存贮介质和/或诸如RAID之类的尖端的数据恢复技术或其任何组合来 确保物理介质上的数据的可靠性。每个NVM刀片可以包括与第一控制器904进行通信的第一 路由接口和与第二控制器906进行通信的第二路由接口。在一种实现方式中,使用PCIe协议 或者任何其它合适的协议,第一路由接口与第一控制器进行通信,第二路由接口与第二控 制器进行通信。
[0142] 在主动/主动系统的一种实现方式中,一个或多个控制器可以假定作为主控制器 的角色,并且其它一个或多个控制器可以假定作为从控制器的角色。在一种实现方式中,主 控制器可以执行或发起针对NVM刀片的所有数据写入,而主板或从板可以执行读取。
[0143] 通常,相对于针对存贮介质的存储或写入操作,存贮设备可以服务于更多的读取 操作。另外,与存储或写入操作相比,读取操作可以完成得更快。因此,可以通过能够由控制 器的处理逻辑解码和处理I/O请求的速率来约束能够服务读取操作的速率。因此,可以有利 的是,在主动/主动系统中的两个或更多个控制器之间使I/O读取操作负载平衡以用于处理 和解码I/O读取操作。因此,主控制器和从控制器两者均可以处理I/O读取操作。相应地,在 图9中,第一控制器904和第二控制器906两者可以被配置为对于读取操作以及从NVM存贮介 质的请求数据,同时或者接近同时地解码I/O请求。
[0144] 在一种示例实现方式中,可以由主控制器来部分地执行到达从控制器板的写入操 作。例如,可以将写入命令或与写入命令相关联的信息从所述从控制器转发到主控制器。在 一种实现方式中,桥908(例如,PCIe NT桥)可以用于将与写入操作相关联的信息从所述从 控制器递送到主控制器。在一种实现方式中,可以仍然由从控制器将到达从控制器的用于 写入操作的数据提供给NVM刀片。
[0145] 为了说明的目的,在给定时间点,第一控制器904可以是主控制器,第二控制器906 可以是从控制器。在一个示例中,I/O请求可以到达能够用作主控制器的第一控制器904。第 一控制器904可以确定I/O请求是用于将与I/O请求相关联的数据存储到NVM存贮介质的写 入操作。主控制器可以处理I/O请求、确定要分派写入命令的NVM刀片,并且向该NVM刀片传 送命令和数据以便存储数据。
[0146] 在另一个示例中,I/O请求可以到达可以用作从控制器的第二控制器906。第二控 制器906可以确定I/O请求是用于将与I/O请求相关联的数据存储到NVM存贮介质的写入操 作。第二控制器906可以向能够充当主控制器的第一控制器904传送与第二I/O请求相关联 的命令信息。主控制器/第一控制器904可以接收从第二控制器906所传送的命令信息,确定 可以存储数据的NVM刀片,并且向该NVM刀片传送写入命令。虽然可以由主控制器传送写入 命令,但充当从控制器的第二控制器906可以向NVM刀片传送与I/O请求相关联的数据。管控 来自主设备的所有写入操作可以有助于维持系统中的写入一致性。另一方面,对于在从控 制器接收到的I/O写入请求,将来自该从控制器的数据转发到NVM刀片,这避免了在用于在 第一控制器904和第二控制器906之间转发数据的这两者之间的桥908(例如,NT PCIe桥)的 带宽方面所要求的显著增加。
[0147] 主控制器和从控制器可以维持用于将读取和写入操作映射到NVM刀片的映射表。 在一种实现方式中,将读取和写入表格存储在NVM刀片之一中。在一种实现方式中,读取和 写入表格可以被两个控制器共享。然而,在另一种实现方式中,可以由控制器单独地维持读 取和写入表格。在每个控制器具有其自己的表格的实例中,主控制器可以更新用于主控制 器和从控制器两者的表格。
[0148] 如果从控制器发生故障,则主控制器与之前一样地继续处理操作。另一方面,如果 主控制器发生故障,则存贮设备失效备援到从控制器。换句话说,从控制器可以变为新的主 控制器,并且开始处理写入操作。例如,如果第一控制器904充当遭遇不可恢复错误的主控 制器,则系统可以失效备援,并且第二控制器906可以变为主控制器。
[0149] 在一些实现方式中,存贮设备还可以包括多个电源。电源通常易于发生故障并且 可能由于风扇或其它功率组件的故障而发生故障。使用多个电源向存贮设备供电可以避免 由于电源之一的组件的故障所引起的存贮设备的故障。在一种实现方式中,可以通过电力 轨对控制器板进行供电,其中电力轨可以从多个电源来供电。在连接到电力轨的电源之一 发生故障的情况下,电力轨继续从运转的电源供电。在一些实现方式中,可以利用正确运转 的电源对发生故障的电源进行热插拔(即,在没有使存贮设备轮转的功率的情况下是可更 换的)。图10示出了根据本发明的一个实施例的NVM刀片的示例框图。在一些实施例中,NVM 刀片1002可以表示图4的NVM刀片420或者来自图9的NVM刀片920a-n之一的一种实现方式。 示例NVM刀片1002可以包括一个或多个NVM芯片(1006和1008)以及刀片控制器lOOLNVM芯 片可以包括NVM存贮介质。NVM芯片可以通过共享总线(912和1014)或者专用总线(未示出) 耦合到刀片控制器1004。刀片控制器1004可以负责接收用于存取/存储NVM芯片上的数据的 命令、对命令进行处理、存储数据或从NVM芯片取回数据以及其它配置命令。虽然未示出, NVM芯片也可以存在于NVM刀片的相对侧上。在一个实施例中,可以使用专用集成电路 (ASIC)来实施刀片控制器1004。在另一个实施例中,可以使用现场可编程门阵列(FPGA)来 实施NVM刀片控制器。
[0150] 图11示出了根据本发明的一个实施例的刀片控制器的示例框图。在一种实现方式 中,刀片控制器1004可以具有两个或更多个PCIe接口(1014和1116)以用于连接到控制器 (或控制器板)上的路由实体。例如,PCI e接口 1114可以耦合到来自第一控制器的路由实体 上的PCIe接口之一,并且PCIe接口 1116可以耦合到来自第二控制器的路由实体上的PCIe接 口之一。每个PCIe接口可以维持与从PCIe接口耦合的相应控制器到达的命令相关联的命令 队列(1010和1112)。在一个实施例中,可以分开地维持用于与控制器相关联的数据的数据 路径。例如,在将与每个控制器相关联的数据存储至NVM存贮介质之前,可以相应地在方框 1106和1108压缩该数据,并且可以在从NVM存贮介质取回数据之后,将该数据进行解压缩。 维持分开的数据路径可以允许数据的更高吞吐量并且降低与数据路径相关联的错误。在一 个实施例中,可以使用纠错码(ECC)在方框1106和1108处执行错误检测和/或校正。例如,在 将数据存储在NVM存贮介质中之前,数据可以被编码和压缩,并且在取回数据时,数据可以 被解压缩和检查错误。如果检测到错误,在某些情况下,数据可以是可恢复的。如果错误不 是可恢复的,则NVM刀片可以丢弃读取请求或者利用错误状况对控制器板进行响应。
[0151] 命令管理器1104在多个PCIe接口处对命令进行仲裁。命令管理器1104对命令进行 解码,并且存取来自芯片阵列中的适当的NVM存贮介质以便存储/存取数据。通过对命令进 行仲裁,在一些实施例中,命令管理器1104可以允许在时间的任何特定时段仅一个有效命 令通过NVM接口 1102存取/存储数据。在一些实现方式中,为了与每个控制器板进行接口连 接,可以分开地实施PCIe接口、命令队列和ECC压缩/解压缩逻辑。读取/写入路径、队列以及 逻辑之间的这种隔离可以有利于避免NVM刀片的一个接口上的故障不利地影响NVM刀片的 第二接口。例如,如果命令队列1110由于从第一控制器板至NVM接口 1102的任何地方的错误 而开始备份,则从第二控制器板至NVM存贮介质的读取/写入数据路径可以继续正常地发挥 作用。因此,在对NVM存贮介质的存储操作从一个第一控制器板失败的实例中,当检测到这 种错误时,可以使用第二控制器板来完成对于非易失性存储器上的相同存储器位置的存储 操作。
[0152]图12示出了根据本发明的一个实施例的刀片控制器的另一个示例框图。刀片控制 器1004的该替换实施例也可以具有用于连接到控制器上的路由逻辑的两个或更多个PCIe 接口(1214和1216)以及与从PCIe接口耦合的相应控制器到达的命令相关联的命令队列 (1210和1212)。在一种实现方式中,可以使用缓冲器来实施命令队列。在一种实现方式中, 命令队列可以被配置为:一旦命令队列缓冲器满得超过预先确定的阈值就丢弃来自第一控 制器的命令。
[0153] 在一个实施例中,可以如图12中所示来实施统一的数据路径和统一的命令路径。 在一些实施例中,在将来自数据路径的数据存储至NVM存贮介质之前,可以在方框1206压缩 该数据,并且可以在从NVM存贮介质取回之后,将该数据解压缩。在一个实施例中,可以使用 纠错码(ECC)在方框1206执行错误检测和/或校正。例如,在将数据存储在NVM存贮介质中之 前,该数据可以被编码和压缩,并且在取回数据时,数据可以被解压缩和检查错误。如果检 测到错误,在某些情况下,数据可以是可恢复的。如果错误不是可恢复的,则NVM刀片可以丢 弃读取请求或者利用错误状况对控制器进行响应。
[0154] 命令管理器1204可以对来自多个PCIe接口的命令进行仲裁。命令管理器1204对命 令进行解码,并且存取来自芯片阵列中的适当的NVM存贮介质以便存储/存取数据。通过对 命令进行仲裁,命令管理器1204可以允许在时间的任何特定时段仅一个有效命令通过NVM 接口 1202存取/存储数据。如图12中所示,统一的数据路径和命令路径可以导致成本和设计 效率。
[0155] 虽然在上面的图中未示出,但在一种实现方式中,可以对于来自多个NVM芯片中的 每个NVM芯片维持分开的命令队列和/或数据队列,其中NVM芯片包括用于NVM刀片的NVM存 贮介质。此外,可以对于每个控制器维持分开的命令队列和/或数据队列集合。例如,在具有 32个NVM芯片的NVM刀片的实现方式中,可以对于源自第一控制器的请求维持32个命令队列 和/或数据队列,并且可以对于源自第二控制器的请求维持32个命令队列和/或数据队列。 这种配置可以允许当在NVM刀片上发起、处理和完成其它命令时发起、处理和/或完成多个 未决的命令,只要操作不是针对同一 NVM芯片即可。命令管理器1004可以对源自两个控制器 的命令进行仲裁。
[0156] 已经描述了垂直集成的体系结构的多个方面,现在可以参考图13来描述可以实施 本公开的各个方面的计算系统的示例。根据一个或多个方面,可以将如图13中所示出的计 算机系统并入作为能够实施、执行和/或运行本文所描述的任何和/或所有的特征、方法和/ 或方法步骤的计算设备的一部分。例如,计算机系统1300可以表示设备和/或接入点装置的 一些组件。设备可以是具有诸如RF接收机之类的无线单元的任何计算设备。在一个实施例 中,系统1300被配置为实施本文所描述的任何方法。图13提供计算机系统1300的一个实施 例的示意图示,该计算机系统1300能够执行如本文所描述的由各个其它实施例提供的方 法,和/或能够用作主机计算机系统、远程信息站/终端、销售点设备、移动设备、机顶盒和/ 或计算机系统。图13仅仅意味着提供各个组件的一般图示,可以根据情况利用其中的任何 和/或所有组件。因此,图13宽泛地示出可以如何以相对分开或相对更集成的方式来实施独 立的系统元件。
[0157] 示出了包括能够经由总线1305电耦合(或者可以另外根据情况地进行通信)的硬 件元件的计算机系统1300。硬件元件可以包括:一个或多个处理器1310,其包括但不限于一 个或多个通用处理器和/或一个或多个专用处理器(诸如,数字信号处理芯片、图形加速处 理器,和/或类似物);一个或多个输入设备1315,其可以包括但不限于照相机、鼠标、键盘 和/或类似物;以及一个或多个输出设备1320,其可以包括但不限于显示单元、打印机和/或 类似物。计算设备1300还可以包括用于监测系统的健康的(一个或多个)传感器,诸如温度 传感器、功率传感器等。
[0158] 计算机系统1300可以进一步包括一个或多个非暂时型存贮设备1325(和/或与其 进行通信),其可以包括但不限于本地和/或网络可存取的存贮器,和/或可以包括但不限于 磁盘驱动器、驱动器阵列、光学存贮设备、诸如随机存取存储器("RAM")和/或只读存储器 ("ROM")之类的固态存贮设备,其能够是可编程的、NVM可更新的等等。此类存贮设备可以被 配置为实施任何适当的数据存贮器,其包括但不限于各种文件系统、数据库结构,和/或类 似物。
[0159] 计算机系统1300可能还包括通信子系统1330,其可以包括但不限于调制解调器、 网卡(无线的或有线的)、红外通信设备、无线通信设备和/或芯片组(诸如,蓝牙设备、 802.11设备、WiFi设备、WiMax设备、蜂窝通信设施,等等),和/或类似物。通信子系统1330可 以准许与网络(举一个例子,诸如如下所述的网络)、其它计算机系统和/或本文所描述的任 何其它设备交换数据。在许多实施例中,计算机系统1300可以进一步包括非暂时型工作存 储器1335,其能够包括如上所述的RAM或者ROM设备。计算机系统1300可能还包括收发信机 1350以便于通信子系统1330与外部实体的通信。
[0160]计算机系统1300还可以包括当前被示出为位于工作存储器1335内的软件元件,其 包括操作系统1340、设备驱动器、可执行的库,和/或诸如一个或多个应用程序1345之类的 其它代码,其可以包括由各个实施例提供的计算机程序,和/或可以被设计为如本文所描述 的由其它实施例提供的实施方法和/或配置系统。仅仅举例来说,参考以上讨论的(一个或 多个)方法所描述的一个或多个过程可能被实施为可由计算机(和/或在计算机内的处理 器)执行的代码和/或指令;在一方面,然后,此类代码和/或指令能够用于将通用计算机(或 者其它设备)配置和/或适配为执行根据所描述的方法的一个或多个操作。
[0161]可以将这些指令和/或代码的集合存储在诸如以上所描述的(一个或多个)存贮设 备1325之类的计算机可读存贮介质上。在一些情况下,可以将存贮介质并入在诸如计算机 系统1300之类的计算机系统内。在其它实施例中,存贮介质可能与计算机系统(例如,诸如 光碟之类的可移动介质)分开,和/或被提供于安装包中,使得存贮介质能够用于利用存储 在其上的指令/代码对通用计算机进行编程、配置和/或适配。这些指令可以采取可由计算 机系统1300执行的可执行代码的形式,和/或可以采取源代码和/或可安装代码的形式,其 在(例如,使用任何各种通常可用的编译器、安装程序、压缩/解压缩工具,等等)在计算机系 统1300上进行编译和/或安装时然后采取可执行代码的形式。
[0162] 可以根据特定需求进行实质的变化。例如,还可以使用定制硬件,和/或可以在硬 件、软件(包括诸如小程序(applet)之类的可移植软件等)或这两者中实施特定元件。此外, 可以采用对诸如网络输入/输出设备之类的其它计算设备的连接。
[0163] 某些实施例可以采用计算机系统(诸如计算机系统1300)来执行根据本公开的方 法。例如,响应于处理器1310运行包含在工作存储器1335中的一个或多个指令(其可以被并 入到操作系统1340和/或诸如应用程序1345之类的其它代码中)的一个或多个序列,可以由 计算机系统1300执行所描述的方法中的一些或所有过程。可以将这样的指令从诸如一个或 多个存贮设备1325之类的另一个计算机可读介质读取到工作存储器1335中。仅仅举例来 说,包含在工作存储器1335中的指令序列的运行可能使(一个或多个)处理器1310执行本文 所描述的方法的一个或多个过程。
[0164] 如本文所使用的术语"机器可读介质"和"计算机可读介质"指代参与提供使机器 以特定方式操作的数据的任何介质。在使用计算机系统1300实现的实施例中,在向(一个或 多个)处理器1310提供指令/代码以用于运行时可能涉及各种计算机可读介质,和/或各种 计算机可读介质可能用于存储和/或承载这样的指令/代码(例如,作为信号)。在许多实现 方式中,计算机可读介质是物理和/或有形的存贮介质。这样的介质可以采取许多形式,包 括但不限于非易失性介质、易失性介质和传输介质。非易失性介质例如包括光盘和/或磁 盘,诸如存贮设备1325。易失性介质包括但不限于诸如工作存储器1335之类的动态存储器。 传输介质包括但不限于同轴电缆、铜线和光纤,其包括包含有总线1305的导线以及通信子 系统1330的各个组件(和/或通信子系统1330借助于其提供与其它设备的通信的介质)。因 此,传输介质还可以采取波的形式(包括但不限于无线电、声波和/或光波,诸如在无线电波 和红外数据通信期间所生成的那些波)。
[0165] 某些实施例可以采用计算机系统(诸如处理器1310)来执行根据本公开的方法。例 如,响应于处理器运行包含在工作存储器中的一个或多个指令(其可以被并入到操作系统 和/或诸如应用程序之类的其它代码中)的一个或多个序列,可以通过观看装置来执行所描 述的方法中的一些或所有过程。可以将这样的指令从诸如一个或多个存贮设备之类的另一 个计算机可读介质读取到工作存储器中。仅仅举例来说,包含在工作存储器中的指令序列 的运行可能使(一个或多个)处理器执行本文所描述的方法的一个或多个过程。
[0166] 另外,采用本文所描述的计算机系统的实施例不限于物理地连接到观看装置。处 理可以出现在经由导线连接或者无线地连接到观看装置的另一个装置中。例如,可以将电 话中的处理器或者用于由电话或平板计算机运行命令的指令包含在这些描述中。类似地, 远程位置中的网络可以安置处理器并且向观看装置发送数据。
[0167] 如本文所使用的术语"机器可读介质"和"计算机可读介质"指代参与提供使机器 以特定方式操作的数据的任何介质。在使用处理器1310实现的实施例中,在向(一个或多 个)处理器1310提供指令/代码以用于运行时可能涉及各种计算机可读介质,和/或各种计 算机可读介质可能用于存储和/或承载这样的指令/代码(例如,作为信号)。在许多实现方 式中,计算机可读介质是物理的和/或有形的存贮介质。这样的介质可以采取许多形式,包 括但不限于非易失性介质、易失性介质和传输介质。非易失性介质例如包括光盘和/或磁 盘。易失性介质包括但不限于诸如NVM存储器或DDR3 RAM之类的动态存储器。传输介质包括 但不限于同轴电缆、铜线和光纤,以及通信子系统的各个组件(和/或通信子系统借助于其 提供与其它设备的通信的介质)。因此,传输介质还可以采取波的形式(包括但不限于无线 电、声波和/或光波,诸如在无线电波和红外数据通信期间所生成的那些波)。
[0168] 在一个或多个示例中,可以以硬件、软件、固件或其任何组合来实施所描述的功 能。如果以软件来实施,功能可以作为一个或多个指令或代码被存储在计算机可读介质上 或通过计算机可读介质来传输。计算机可读介质可以包括计算机数据存贮介质。数据存贮 介质可以是能够由一个或多个计算机或者一个或多个处理器存取以取回用于实施在本公 开中描述的技术的指令、代码和/或数据结构的任何可用的介质。如在本文所使用的"数据 存1C介质"指代制造品(manufacture)并且不指代瞬时传播信号。举例来说,但不限制,此类 计算机可读存贮介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存贮器、磁盘存贮器或 其它磁存贮设备、NVM存储器,或能够用于以指令或数据结构的形式存储期望的程序代码并 且能够由计算机存取的任何其它介质。如在本文所使用的磁盘包括光碟(CD)、激光磁盘、光 学盘、数字化通用磁盘(DVD )、软盘和蓝光光盘,其中磁盘通常磁性地再现数据,而光盘利用 激光来光学地再现数据。以上的组合应当也被包括在计算机可读介质的范围内。
[0169] 可以通过诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路 (ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或分立的逻辑电路之类的一个或多个 处理器来运行代码。因此,如在本文所使用的术语"处理器"可以指代任何上述结构或适于 实施在本文描述的技术的任何其它结构。此外,在一些方面中,可以在被配置用于进行编码 和解码,或者被并入在组合编解码器中的专用硬件和/或软件模块内提供在本文描述的功 能。而且,可以在一个或多个电路或逻辑元件中全部地实施本技术。
[0170] 可以以包括无线手机、集成电路(1C)或1C集合(例如,芯片组)的多种设备或装置 实施本公开的技术。在本公开中描述了各种组件、模块或单元来强调被配置为执行所公开 的技术的设备的功能方面,但不一定要求通过不同的硬件单元实现。相反,如上所述,可以 在编解码器硬件单元中组合各种单元,或者通过包括与存储在计算机可读介质上的合适的 软件和/或固件结合的如上所述的一个或多个处理器的互操作的硬件单元的集合来提供各 种单元。
[0171]已经描述了各种示例。这些和其它示例处于所附权利要求的范围内。
【主权项】
1 · 一种存It设备,包括: 多个非易失性存储器(NVM)刀片,其中来自多个nvm刀片中的每一个nvm刀片包括非易 失性存储器(NVM); 耦合到多个NVM刀片的第一处理实体,其中第一处理实体被配置为: 接收第一输入/输出(I/O)请求; 确定I/O请求是读取请求还是写入请求; 响应于确定该I/O请求是读取请求, 从多个NVM刀片中确定目标NVM刀片以及将要从其处读取数据的目标NVM刀片中的位 置; 从目标NVM刀片请求和接收与第一I/O请求相关联的数据;以及 响应于确定该I/O请求是写入请求; 从多个NVM刀片中确定目标NVM刀片以及将要在其处存储数据的目标NVM刀片中的位 置; 向目标NVM刀片传送数据以便将数据存储在目标NVM刀片中;以及 耦合到多个NVM刀片的第二处理实体,其中第二处理实体被配置为: 接收第二输入/输出(I/O)请求; 确定I/O请求是读取请求还是写入请求; 响应于确定该I/O请求是读取请求, 从多个NVM刀片中确定目标NVM刀片以及将要从其处读取数据的目标NVM刀片中的位 置; 从目标NVM刀片请求和接收与第二I/O请求相关联的数据;以及 响应于确定该I/O请求是写入请求; 从多个NVM刀片中确定目标NVM刀片以及将要在其处存储数据的目标NVM刀片中的位 置; 向目标NVM刀片传送数据以便将数据存储在目标NVM刀片中。2. 根据权利要求1所述的存贮设备,其中,使用一个或多个路由实体将多个NVM刀片耦 合到第一处理实体和第二处理实体。3. 根据权利要求1所述的存贮设备,其中,第一处理实体存取与用于服务于第二I/O请 求的第二处理实体相同的目标NVM刀片以服务于第一 I/O请求。4. 根据权利要求1所述的存贮设备,其中,第一处理实体存取与用于服务于第二I/O请 求的第二处理实体相同的目标NVM刀片上的相同的位置以服务于第一 I/O请求。5. 根据权利要求1所述的存贮设备,其中,控制器板包括第一处理实体、第二处理实体 以及用于在处理实体和多个NVM刀片之间对数据进行路由的路由实体。6. 根据权利要求5所述的存贮设备,其中,第一处理实体和第二处理实体经由相同的路 由实体存取目标NVM刀片。7. 根据权利要求1所述的存贮设备,其中,第一控制器板包括第一处理实体并且使用第 一路由实体将第一控制器板耦合到多个NVM刀片,并且第二控制器板包括第二处理实体并 且使用第二路由实体将第二控制器板耦合到多个NVM刀片。8. 根据权利要求1所述的存贮设备,其中,使用高速外围组件互联(PCIe)协议来执行第 一处理实体与目标NVM刀片之间的数据的传送以及第二处理实体与目标NVM刀片之间的数 据的传送。9. 根据权利要求1所述的存贮设备,其中,由第一处理实体接收的第一I/O请求首先在 一个或多个接口实体处被接收并且通过多个路由实体之一被转发到第一处理实体。10. 根据权利要求1所述的存贮设备,其中,NVM存贮介质是NAND闪存。11. 一种用于存储数据的方法,包括: 在第一处理实体处接收第一输入/输出(I/O)请求,其中第一处理实体耦合到多个非易 失性存储器(NVM)刀片,并且其中来自多个NVM刀片中的每一个NVM刀片包括非易失性存储 器(画); 在第一处理实体处确定I/O请求是读取请求还是写入请求; 响应于确定该I/O请求是读取请求, 由第一处理实体从多个NVM刀片中确定目标NVM刀片以及将要从其处读取数据的目标 NVM刀片中的位置,以及 由第一处理实体从目标NVM刀片请求和接收与第一I/O请求相关联的数据;以及 响应于确定该I/O请求是写入请求; 响应于确定该I/O请求是写入请求, 由第一处理实体从多个NVM刀片中确定目标NVM刀片以及将要在其处存储数据的目标 NVM刀片中的位置,以及 从第一处理实体向目标NVM刀片传送数据以便将数据存储在目标NVM刀片中;以及 在第二处理实体处接收第二输入/输出(I/O)请求, 其中第二处理实体耦合到多个NVM刀片; 在第二处理实体处确定I/O请求是读取请求还是写入请求; 响应于确定该I/O请求是读取请求, 在第二处理实体处从多个NVM刀片中确定目标NVM刀片以及将要从其处读取数据的目 标NVM刀片中的位置; 在第二处理实体处从目标NVM刀片请求和接收与第二I/O请求相关联的数据;以及 响应于确定该I/O请求是写入请求; 在第二处理实体处从多个NVM刀片中确定目标NVM刀片以及将要在其处存储数据的目 标NVM刀片中的位置;以及 从第二处理实体向目标NVM刀片传送数据以便将数据存储在目标NVM刀片中。12. 根据权利要求11所述的方法,其中,使用一个或多个路由实体将多个NVM刀片耦合 到第一处理实体和第二处理实体。13. 根据权利要求11所述的方法,其中,第一处理实体存取与用于服务于第二I/O请求 的第二处理实体相同的目标NVM刀片以服务于第一 I/O请求。14. 根据权利要求11所述的方法,其中,第一处理实体存取与用于服务于第二I/O请求 的第二处理实体相同的目标NVM刀片上的相同的位置以服务于第一 I/O请求。15. 根据权利要求11所述的方法,其中,控制器板包括第一处理实体、第二处理实体以 及用于在处理实体和多个NVM刀片之间对数据进行路由的路由实体。16. 根据权利要求15所述的方法,其中,第一处理实体和第二处理实体经由相同的路由 实体存取目标NVM刀片。17. 根据权利要求11所述的方法,其中,第一控制器板包括第一处理实体并且使用第一 路由实体将第一控制器板耦合到多个NVM刀片,并且第二控制器板包括第二处理实体并且 使用第二路由实体将第二控制器板耦合到多个NVM刀片。18. 根据权利要求11所述的方法,其中,使用高速外围组件互联(PCIe)协议来执行第一 处理实体与目标NVM刀片之间的数据的传送以及第二处理实体与目标NVM刀片之间的数据 的传送。19. 根据权利要求11所述的方法,其中,由第一处理实体接收的第一I/O请求首先在一 个或多个接口实体处被接收并且通过多个路由实体之一被转发到第一处理实体。20. 根据权利要求11所述的方法,其中,NVM存贮介质是NAND闪存。21. -种存设备,包括: 被配置为操作在主动模式下的第一控制器,该第一控制器被配置为接收用于存储数据 以及从非易失性存储器(NVM)存贮介质取回数据的输入/输出(I/O)请求; 被配置为操作在主动模式下的第二控制器,该第二控制器也被配置为接收用于存储数 据以及从NVM存贮介质取回数据的I/O请求;以及 包括NVM存贮介质的多个非易失性存储器(NVM)刀片,其中多个NVM刀片中的至少一个 耦合到用于存储数据以及从NVM存贮介质取回数据的第一控制器和第二控制器。22. 根据权利要求21所述的存贮设备,其中,多个NVM刀片中的至少一个包括与第一控 制器进行通信的第一路由接口以及与第二控制器进行通信的第二路由接口。23. 根据权利要求22所述的存贮设备,其中,第一路由接口使用PCIe协议与第一控制器 进行通信,并且第二路由接口使用PCIe协议与第二控制器进行通信。24. 根据权利要求24所述的存贮设备,其中,第一控制器被配置为: 接收第一 I/O请求; 确定第一 I/O请求是将与第一 I/O请求相关联的第一数据存储到NVM存贮介质的请求; 以及 向多个NVM刀片中的至少一个传送命令和第一数据,以便将第一数据存储在第一位置。25. 根据权利要求24所述的存贮设备, 其中,第二控制器被配置为: 接收第二I/O请求; 确定第二I/O请求是将与第二I/O请求相关联的第二数据存储到NVM存贮介质的请求; 以及 向第一控制器传送与第二I/O请求相关联的命令信息; 其中,第一控制器被配置为: 从第二控制器接收所传送的命令信息;以及 向多个NVM刀片中的至少一个传送存储命令;并且 其中,第二控制器被进一步配置为:向一个或多个NVM刀片传送与第二I/O请求相关联 的第二数据。26. 根据权利要求21所述的存贮设备,其中,第一控制器和第二控制器被配置为对于读 取操作同时地解码I/O请求并且从NVM存贮介质请求数据。27. 根据权利要求21所述的存贮设备,其中,第一控制器、第二控制器和多个NVM刀片耦 合到电力轨,其中该电力轨由多个电源进行供电。28. 根据权利要求21所述的存贮设备,其中,多个NVM刀片中的至少一个包括用于缓冲 来自第一控制器的命令的、耦合到第一路由接口的第一缓冲器。29. 根据权利要求28所述的存贮设备,其中,多个NVM刀片中的至少一个被进一步配置 为:当第一缓冲器满得超过预先确定的阈值时,丢弃来自第一控制器的命令。30. 根据权利要求21所述的存贮设备,其中,多个NVM刀片中的至少一个包括用于对于 来自第一控制器和第二控制器的命令仲裁对NVM接口的存取的命令管理器。31. 根据权利要求30所述的存贮设备,其中,命令管理器在检测到关于命令的错误时, 将与I/O请求相关联的错误信息传送回到该命令所起源的控制器。32. 根据权利要求31所述的存贮设备,其中,第一控制器和第二控制器彼此传递容错信 息。33. 根据权利要求32所述的存贮设备,其中,第一控制器和第二控制器使用非PCIe桥来 彼此传递容错信息。34. 根据权利要求32所述的存贮设备,其中,容错信息包括关于从第一控制器到多个 NVM刀片之一的第一 I/O请求的故障的信息。35. 根据权利要求31所述的存贮设备,其中,第一控制器和第二控制器是包括用于处理 I/O请求的一个或多个处理器以及用于控制器与多个NVM刀片之间的路由操作的一个或多 个路由器的印刷电路板(PCB)。36. 根据权利要求31所述的存贮设备,其中,第一控制器和第二控制器是各自包括处理 逻辑和路由逻辑的专用集成电路(ASIC)。37. -种用于在存贮设备上存储数据的方法,该方法包括: 在从控制器处接收第一 I/O请求; 确定第一 I/O请求是将与第一 I/O请求相关联的第一数据存储到非易失性存储器(NVM) 存贮介质的请求; 向主控制器传送与第一 I/O请求相关联的命令信息; 在主控制器处接收来自所述从控制器的所传送的命令信息;以及 向包括NVM存贮介质的多个非易失性存储器(NVM)刀片中的至少一个传送来自主控制 器的使用对于第一 I/O请求的所传送的命令信息的存储命令以及来自从控制器的第一数 据,以便将第一数据存储在第一位置。38. 根据权利要求37所述的方法,还包括: 在主控制器处接收第二I/O请求; 确定第二I/O请求是将与第二I/O请求相关联的第二数据存储到NVM存贮介质的请求; 向包括NVM存贮介质的多个NVM刀片中的至少一个传送命令和第二数据,以便将第二数 据存储在第二位置。39. 根据权利要求37所述的方法,其中,主控制器和从控制器使用PCIe协议来与多个 NVM刀片进行通信。40. 根据权利要求37所述的方法,其中,该方法还包括: 在主控制器处接收第二I/O请求; 确定第二I/O请求是从来自NVM存贮介质的第二位置读取第二数据的请求; 从NVM存贮介质取回与第二I/O请求相关联的第二数据; 在从控制器处接收第三I/O请求; 确定第三I/O请求是从来自NVM存贮介质的第三位置读取第三数据的请求;以及 从NVM存贮介质取回与第三I/O请求相关联的第三数据。
【文档编号】G06F12/02GK105980990SQ201480072699
【公开日】2016年9月28日
【申请日】2014年11月12日
【发明人】R.达尼拉克, W.拉德克
【申请人】斯凯拉有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1