CN105980990A - 在基于非易失性存储器的存贮设备中对信息进行路由的装置和方法 - Google Patents
在基于非易失性存储器的存贮设备中对信息进行路由的装置和方法 Download PDFInfo
- Publication number
- CN105980990A CN105980990A CN201480072699.0A CN201480072699A CN105980990A CN 105980990 A CN105980990 A CN 105980990A CN 201480072699 A CN201480072699 A CN 201480072699A CN 105980990 A CN105980990 A CN 105980990A
- Authority
- CN
- China
- Prior art keywords
- nvm
- request
- controller
- data
- blade
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2002—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
- G06F11/2005—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Quality & Reliability (AREA)
- Power Sources (AREA)
Abstract
描述了用于存取存贮设备的各种系统、方法、装置和计算机可读介质。在某些示例实施例中,可以实施包括两个或更多个控制器的主动/主动容错存贮设备。在一个方面中,每个控制器可以具有用于分发I/O请求的处理的两个或更多个处理实体。在一个实施例中,可以以增强散热、降低功耗、分散功率和工作负载以及降低延迟的方式来布置组件、模块和控制器板的配置。在一个实施例中,每个控制器可以耦合到包括非易失性存储器(NVM)存贮介质的非易失性存储器(NVM)刀片。在一种示例实现方式中,诸如高速外围组件互联协议之类的标准化协议可以用于控制器的各个组件以及还有NVM存贮介质之间的通信。
Description
背景技术
本公开的各方面涉及计算和通信技术。具体地,本公开的各方面涉及用于改善存贮设备的性能的系统、方法、装置以及计算机可读介质。
企业系统的存贮设备需要海量存储容量、对存贮设备读取和写入的低延迟、高带宽、低功耗以及可靠性。传统地,使用诸如在电力关闭时保留数据的硬盘驱动器(HDD)之类的介质来实施企业系统。硬盘驱动器是使用快速旋转盘、用于存储和取回(retrieve)数字信息的数据存贮设备。HDD由一个或多个具有布置在移动致动器臂上以向盘表面读取和写入数据的磁头的坚硬(“硬”)快速旋转盘(盘片)组成。归因于移动部分,HDD固有地易于发生错误和故障,并且在如何降低它们的存取时间方面具有下限而且价格可能下降。
本发明的实施例解决该问题和其它问题。
发明内容
描述了用于存取存贮介质的各种系统、方法、装置以及计算机可读介质。描述了用于最优地存取存贮介质的技术。在一个实施例中,可以使用非易失性存储器(NVM)来实施存贮设备。
在某些示例实施例中,可以实施包括两个或更多个控制器的主动/主动容错存贮设备。然而,在其它示例实施例中,也可以实施主动/备用系统。在一些实施例中,可以使用专用集成电路(ASIC)、现场可编程门阵列(FPGA)或将若干分立的组件的功能集成到单个晶片上的任何其它技术来实施控制器。在其它实施例中,控制器也可以包含具有多个分立组件的控制器板。在一个方面中,每个控制器板可以具有用于分发输入/输出(I/O)请求的处理的两个或更多个处理实体。在一个实施例中,可以以增强散热、降低功耗、分散功率和工作负载以及降低用于服务I/O请求的延迟的方式来布置组件、模块和控制器板的配置。
在一个实施例中,每个控制器可以耦合到包括NVM存贮介质的非易失性存储器(NVM)刀片(blade)。本发明的实施例也可以提供进一步的增强来改善对NVM存贮介质的存取时间。虽然可以在本文为了说明的目的而使用NVM存贮介质来描述本发明的一些实施例,但在某些实施例中,本发明可以不限于NVM存贮介质,并且在不脱离本发明的范围的情况下可以使用其它合适的物理存贮介质。
在一种实现方式中,诸如高速外围组件互联(PCIe)协议之类的标准化协议可以用于控制器板的各个组件以及还有NVM存贮介质之间的通信。
示例存贮设备可以包括耦合到多个刀片中的第一刀片的、来自多个路由实体中的第一路由实体,其中第一刀片可以包括NVM存贮介质、耦合到第一路由实体的第一处理实体,其中第一处理实体可以被配置为接收第一输入/输出(I/O)请求、确定与第一I/O请求相关联的第一数据将被存储在耦合到第一路由实体的第一刀片上的第一位置,以及向第一路由实体传送与第一I/O请求相关联的第一数据以便将第一数据存储在第一刀片上。第二处理实体可以耦合到第一路由实体,其中第二处理实体被配置为接收第二I/O请求,确定与第二I/O请求相关联的第二数据将被存储在耦合到第一路由实体的第一刀片上的第二位置,以及向第一路由实体传送与第二I/O请求相关联的第二数据以便将第二数据存储在第一刀片上。
在一些实施例中,存贮设备可以另外具有第二处理实体,该第二处理实体被配置为:接收第三I/O请求,确定第三I/O请求是对于位于耦合到第一路由实体的第一刀片的第一位置的第一数据的读取请求,从第一路由实体请求来自第一位置的第一数据,以及从第一路由实体接收第一数据。在一种实现方式中,第一处理实体和第二处理实体可以通过第一路由实体间接地彼此耦合。在一个实施例中,控制器板包括第一路由实体、第一处理实体和第二处理实体。在一种实现方式中,第一处理实体可以耦合到第一存储器,并且第二处理实体可以耦合到第二存储器。在一个方面中,使用高速外围组件互联(PCIe)协议来执行第一处理实体与第一路由实体之间的数据的传送以及第二处理实体与第一路由实体之间的数据的传送。
在存贮设备的某些实现方式中,存贮设备可以进一步包括耦合到多个刀片中的第二刀片的、来自多个路由实体中的第二路由实体,其中第二刀片包括NVM存贮介质,第一处理实体耦合到第二路由实体,其中第一处理实体可以被配置为接收第三I/O请求,确定与第三I/O请求相关联的第三数据将被存储在位于第三位置的第二刀片上,以及向第二路由实体传送与第三I/O请求相关联的第三数据以将与第三I/O请求相关联的数据存储在第二刀片上。存贮设备可以另外具有耦合到第二路由实体的第二处理实体,其中第二处理实体可以被配置为接收第四I/O请求,确定与第四I/O请求相关联的第四数据将被存储在位于第四位置的第二刀片,以及向第二路由实体传送与第四I/O请求相关联的第四数据以将与第四I/O请求相关联的数据存储在第二刀片上。
在一个实施例中,使用高速外围组件互联(PCIe)协议来执行第一处理实体与第二路由实体之间的数据的传送以及第二处理实体与第二路由实体之间的数据的传送。在一个方面中,由第一处理实体接收的第一I/O请求可以首先在一个或多个接口实体处被接收并且通过多个路由实体之一被转发到第一处理实体。
一种用于存储数据的示例方法可以包括:在第一处理实体接收第一I/O请求;在第一处理实体确定与第一I/O请求相关联的第一数据将被存储在耦合到位于第一路由实体的第一位置的第一刀片上,其中第一刀片包括NVM存贮介质;由第一处理实体向第一路由实体传送与第一I/O请求相关联的第一数据以将数据存储在第一刀片上;在第二处理实体接收第二I/O请求;在第二处理实体确定与第二I/O请求相关联的第二数据将被存储在位于耦合到第一路由实体的第二位置的第一刀片上;以及由第二处理实体向第一路由实体传送与第二I/O请求相关联的第二数据以将数据存储在第一刀片上。
在一些实现方式中,示例方法可以进一步包括:在第二处理实体处接收第三I/O请求,在第二处理实体处确定第三I/O请求是对于来自耦合到第一路由实体的第一刀片的第一位置的第一数据的读取请求,从第一路由实体请求来自第一位置的第一数据,以及从第一路由实体接收第一数据。
在一种实现方式中,第一处理实体和第二处理实体通过路由实体间接地彼此耦合。在一个方面中,控制器板包括第一路由实体、第一处理实体和第二处理实体。第一处理实体可以耦合到第一存储器,并且第二处理实体可以耦合到第二存储器。在该方法的一些实现方式中,可以使用高速外围组件互联(PCIe)协议来执行第一处理实体与第一路由实体之间的第一数据的传送以及第二处理实体与第一路由实体之间的第二数据的传送。
在该方法的某些实施例中,该方法也可以包括:在第一处理实体处接收第三I/O请求;在第一处理实体处确定与第三I/O请求相关联的第三数据将被存储在位于耦合到第二路由实体的第三位置的第二刀片上,其中第二刀片包括NVM存贮介质;由第一处理实体向第二路由实体传送与第三I/O请求相关联的第三数据以将与第三I/O请求相关联的数据存储在第二刀片上;在第二处理实体处接收第四I/O请求;在第二处理实体处确定与第四I/O请求相关联的第四数据将被存储在位于耦合到第二路由实体的第四位置的第二刀片上;由第二处理实体向第二路由实体传送与第四I/O请求相关联的第四数据以将与第四I/O请求相关联的数据存储在第二刀片上。在一些实施例中,使用高速外围组件互联(PCIe)协议来执行第一处理实体与第二路由实体之间的第三数据的传送以及第二处理实体与第二路由实体之间的第四数据的传送。第一刀片可以是多个刀片之一,并且第一路由实体可以是多个路由实体之一。由第一处理实体接收的第一数据包(packet)可以首先在一个或多个接口实体处被接收并且通过多个路由实体之一被转发到第一处理实体。
一种示例装置可以包括:用于接收第一I/O请求的部件;用于确定与第一I/O请求相关联的第一数据将被存储在位于耦合到第一路由实体的第一位置上的第一刀片的部件,其中第一刀片包括NVM存贮介质;用于向第一路由实体传送与第一I/O请求相关联的第一数据以将数据存储在第一刀片上的部件;用于接收第二I/O请求的部件;用于确定与第二I/O请求相关联的第二数据将被存储在位于耦合到第二路由实体的第二位置的第二刀片上的部件;以及用于向第二路由实体传送与第二I/O请求相关联的第二数据以将第二数据存储在第二刀片上的部件。
描述了用于存取存贮介质的各种系统、方法、装置以及计算机可读介质。描述了用于最优地存取存贮介质的技术。在一个实施例中,可以使用非易失性存储器(NVM)存贮介质来实施存贮设备。
在某些示例实施例中,可以实施包括两个或更多个控制器的主动/主动容错存贮设备。然而,在其它示例实施例中,也可以实施主动/备用系统。在一些实施例中,可以使用专用集成电路(ASIC)、现场可编程门阵列(FPGA)或将若干分立的组件的功能集成到单个晶片上的任何其它技术来实施控制器。在其它实施例中,控制器也可以包含具有多个分立组件的控制器板。在一个方面中,每个控制器板可以具有用于分发输入/输出(I/O)请求的处理的两个或更多个处理实体。在一个实施例中,可以以增强散热、降低功耗、分散功率和工作负载以及降低用于服务I/O请求的延迟的方式来布置组件、模块和控制器板的配置。
在一个实施例中,每个控制器可以耦合到包括NVM存贮介质的NVM刀片。本发明的实施例也可以提供进一步的增强来改善对NVM存贮介质的存取时间。虽然可以在本文为了说明的目的使用NVM存贮介质来描述本发明的一些实施例,但在某些实施例中,本发明可以不限于NVM存贮介质,并且在不脱离本发明的范围的情况下可以使用其它合适的物理存贮介质。
在一种实现方式中,诸如高速外围组件互联(PCIe)协议之类的标准化协议可以用于在控制器板的各个组件以及还有NVM存贮介质之间的通信。
一种示例存贮设备可以包括存贮设备,该存贮设备包括:第一控制器,其被配置为操作在主动模式中,第一控制器被配置为接收用于存储数据和从NVM存贮介质取回数据的输入/输出(I/O)请求;第二控制器,其被配置为操作在主动模式中,第二控制器也被配置为接收用于存储数据和从NVM存贮介质取回数据的I/O请求;以及包括NVM存贮介质的多个NVM刀片,其中多个NVM刀片中的至少一个耦合到用于存储数据和从NVM存贮介质中取回数据的第一控制器和第二控制器。在一个实施例中,多个NVM刀片中的至少一个包括与第一控制器进行通信的第一路由接口和与第二控制器进行通信的第二路由接口。在一些实现方式中,第一路由接口可以使用PCIe协议与第一控制器进行通信,并且第二路由接口可以使用PCIe协议与第二控制器进行通信。
在某些实施例中,对于读取操作,第一控制器可以被配置为:接收第一I/O请求,确定第一I/O请求是将与第一I/O请求相关联的第一数据存储到NVM存贮介质的请求;以及向多个NVM刀片中的至少一个传送命令和第一数据以将第一数据存储在第一位置。在存贮设备的一种实现方式中,第一控制器和第二控制器可以被配置为对于读取操作同时地解码I/O请求并且从NVM存贮介质请求数据。
在某些实施例中,对于写入操作,第二控制器被配置为:接收第二I/O请求,确定第二I/O请求是将与第二I/O请求相关联的第二数据存储到NVM存贮介质的请求;以及向第一控制器传送与第二I/O请求相关联的命令信息。第一控制器可以被配置为接收来自第二控制器的所传送的命令信息,以及向多个NVM刀片中的至少一个传送存储命令。第二控制器可以被进一步配置为向一个或多个NVM刀片传送与第二I/O请求相关联的第二数据。
在某些实施例中,多个NVM刀片中的至少一个可以包括用于缓冲来自第一控制器的命令的、耦合到第一路由接口的第一缓冲器。多个NVM刀片中的至少一个可以被进一步配置为:一旦第一缓冲器满得超过预先确定的阈值就丢弃来自第一控制器的命令。在一些实现方式中,多个NVM刀片中的至少一个也可以包括用于对于来自第一控制器和第二控制器的命令仲裁对NVM接口的存取的命令管理器。在命令管理器检测到关于命令的错误的实例中,至少一个NVM刀片可以将与I/O请求相关联的错误信息传送回到该命令所起源的控制器。
在一些实现方式中,第一控制器和第二控制器可以彼此传递容错信息。在一个方面中,第一控制器和第二控制器可以使用非PCIe桥来彼此传递容错信息。在一些实例中,容错信息可以包括关于从第一控制器到多个NVM刀片之一的第一I/O请求的故障的信息。
在一个实施例中,第一控制器、第二控制器和多个NVM刀片可以耦合到电力轨,其中电力轨由多个电源进行供电。在一种实现方式中,第一控制器和第二控制器可以是包括用于处理I/O请求的一个或多个处理器以及用于控制器和多个NVM刀片之间的路由操作的一个或多个路由器的印刷电路板(PCB)。在另一种实现方式中,第一控制器和第二控制器可以是各自包括处理逻辑和路由逻辑的专用集成电路(ASIC)。
一种用于将数据存储在存贮设备上的示例方法可以包括:在从控制器接收第一I/O请求;确定第一I/O请求是将与第一I/O请求相关联的第一数据存储到NVM存贮介质的请求;以及向主控制器传送与第一I/O请求相关联的命令信息;在主控制器接收来自从控制器的所传送的命令信息;以及向包括NVM存贮介质的多个NVM刀片中的至少一个传送来自主控制器的使用对于第一I/O请求的所传送的命令信息的存储命令以及来自从控制器的第一数据以将第一数据存储在第一位置。
示例方法可以进一步包括:在主控制器接收第二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刀片进行通信。
上文已经相当宽泛地略述了示例特征和技术优点以便能够更好地理解随后的具体实施方式。将在下文中描述附加的特征和优点。可以容易地利用所公开的概念和特定示例来作为用于修改或设计用于执行本公开的相同的目的的其它结构的基础。这种等同结构没有脱离所附权利要求的精神和范围。当结合附图考虑时,根据以下描述将更好地理解与相关联的优点一起的、关于它们的组织和操作方法两者都被认为是在本文公开的概念的特征的特征。仅仅为了说明和描述的目的而提供每一个附图并且每一个附图不作为对权利要求的限制的限定。
上文已经相当宽泛地略述了示例特征和技术优点以便能够更好地理解随后的具体实施方式。将在下文中描述附加的特征和优点。可以容易地利用所公开的概念和特定示例来作为用于修改或设计用于执行本公开的相同的目的的其它结构的基础。这种等同结构没有脱离所附权利要求的精神和范围。当结合附图考虑时,根据以下描述将更好地理解与相关联的优点一起的、关于它们的组织和操作方法两者都被认为是在本文公开的概念的特征的特征。仅仅为了说明和描述的目的而提供每一个附图并且每一个附图不作为对权利要求的限制的限定。
附图说明
通过示例来说明本公开的各方面。参考附图提供以下描述,其中在全文中相同附图标记用于指代相同的要素。虽然在本文描述了一种或多种技术的各种细节,但其它技术也是可能的。在一些实例中,为了便于描述各种技术,以框图形式示出了公知的结构和设备。
可以通过参考说明书和附图的其余部分来实现对本公开所提供的示例的性质和优点的进一步理解,其中在若干附图中使用相同附图标记来指代类似的组件。在一些实例中,子标号与附图标记相关联,以表示多个类似的组件之一。当在不对现有的子标号进行说明的情况下参考附图标记时,附图标记指代所有这样的类似组件。
图1示出了根据本发明的一个实施例的存贮设备的示例高层次框图。
图2示出了根据本发明的一个实施例的存贮设备的另一个示例框图。
图3示出了根据本发明的一个实施例的存贮设备的又一个示例框图。
图4示出了根据本发明的又一个实施例的存贮设备的示例框图。
图5是根据本发明的一个实施例的、示出用于执行本发明的实施例的方法的流程图。
图6是根据本发明的另一个实施例的、示出用于执行本发明的实施例的另一个方法的流程图。
图7示出了根据本发明的一个实施例的控制器板的示例框图。
图8示出了根据本发明的至少一个实施例的、对于控制器板上的每个组件可见的各个组件的地址空间的示例框图。
图9示出了根据本发明的一个实施例的存贮设备的另一个示例高层次框图。
图10示出了根据本发明的一个实施例的NVM刀片的示例框图。
图11示出了根据本发明的一个实施例的刀片控制器的示例框图。
图12示出了根据本发明的一个实施例的刀片控制器的另一个示例框图。
图13描绘了用于执行本发明的实施例的计算机系统。
具体实施方式
现在将参考在此形成一部分的附图来描述若干说明性实施例。虽然下面描述可以实施本公开的一个或多个方面的特定实施例,但在不脱离本公开的范围或所附权利要求的精神的情况下,可以使用其它实施例并且可以进行各种修改。
在讨论本发明的实施例之前,一些术语的描述可能有助于理解本发明的实施例。
在一些实施例中,如在本文讨论的“存贮设备”可以包括被配置为存储数据和从存贮介质中取回数据的计算机系统。可以使用参考图13而描述的一些或所有组件来实施计算机系统。在一些实施例中,存贮设备可以被用于企业环境或需要通过利用至存贮设备的高可用性链路和低延迟的网络存取数据的其它类似环境。对存贮设备还可能期望较低的功耗、较低的成本和良好的散热。在一些实施例中,存贮设备可以是其中将多个存贮设备共同地排列和维持的机架可安装设备。在其它实施例中,存贮设备可以是独立设备。然而,存贮设备可以具有其它外围设备以及类似于常规计算机系统的设备,在一些实现方式中,可以利用被优化以最小化物理空间和能量的使用的模块化设计来将存贮设备从服务器计算机剥离。存贮设备还可以包括文件系统软件堆栈,其被存储在存贮设备中的存贮介质上并且由处理器运行以接收I/O请求、将这些I/O请求解码和转换为针对底层物理介质的读取、写入和配置命令。
在本发明的一些实施例中,如在本文所讨论的“闪存存贮介质”可以包括非易失性存储器(NVM)。在一些实例中,使用NVM的存贮设备的实现方式也可以被称为固态设备。基于NVM的设备的示例实现方式可以包括但不限于使用NOR、NAND、MRAM(磁阻RAM)、FRAM(铁电RAM、RRAM(电阻式RAM))、相变存储器或任何其它合适的技术。NOR闪存可以提供高速随机存取以及在诸如达到单字节之类的特定存储器位置中读取和写入数据。NAND闪存可以随机地读取,但是典型地以高速顺序地写入,在被称为页的块中处理数据。与其写入相比,NAND闪存可以更快地进行读取,迅速地转移整页的数据。除了比NAND闪存读取可能更快而写入可能更慢,NOR闪存可以以相同方式运作。通常,在高密度与NOR闪存相比没有那么昂贵,对于相同尺寸的硅,NAND技术可以提供更高的容量。
在一些实现方式中,本发明的实施例可以利用单级单元(SLC)NAND闪存技术。在其它实现方式中,本发明的实施例可以利用多级单元(MLC)NAND闪存存贮介质。MLC NAND是每单元(cell)使用多级以允许使用相同数量的晶体管存储更多比特的闪存存储器技术。在SLC NAND闪存技术中,每个单元能够存在于两个状态之一中,每单元存储一个比特的信息。大多数MLC NAND闪存存储器技术具有每单元四个可能的状态,因此其每单元能够存储两个比特的信息。使用MLC NAND可以有利于降低由于较高数据密度的每存贮单元的成本。
如本文所描述的,在一些实施例中,“刀片”、“闪存刀片”或“NVM刀片”可以指代将一个或多个NVM芯片分组在一起以提供存储,其中NVM芯片包括NVM存贮介质。NVM刀片可以具有用于仲裁对NVM存贮介质的存取的刀片控制器。NVM刀片控制器可以负责接收用于存取/存储NVM存贮介质上的数据的命令、对命令进行处理以及存储数据或从NVM存贮介质中取回数据。在一个实施例中,可以使用专用集成电路(ASIC)来实施NVM刀片控制器。在另一个实施例中,可以使用现场可编程门阵列(FPGA)来实施NVM刀片控制器。
如本文所定义的,“控制器板”可以包括用于接收I/O请求并且将这些I/O请求转换为用于读取、写入或配置NVM存贮介质的命令的各种硬件、固件和软件组件。在一种实现方式中,可以使用印刷电路板(PCB)来实施控制器板,其中控制器板的各个组件可以使用总线耦合到该板并且彼此进行通信。在其它实现方式中,诸如无线之类的其它通信手段可以用于组件之间的通信。图7是控制器板的示例实施例。虽然可以关于若干分立的组件来描述本发明的实施例,但在一些实施例中,可以通过一个硅晶片来执行若干分立的组件的功能。例如,可以通过被实施为专用集成电路(ASIC)、现场可编程门阵列(FPGA)、多芯片模块(MCM)或任何其它硅技术的控制器来执行如本文所描述的诸如处理和路由之类的多个分立的组件的功能。如本文所描述的,在一个实施例中,虽然“控制器板”可以指代使用印刷电路板实施功能集的若干分立的组件,但“控制器”可以指代控制器板(例如,具有分立的组件的PCB板)和控制器(例如,若干分立的组件的功能被实施为ASIC、FPGA,等等)两者。
如本文所描述的,“处理实体”可以指代一个或多个物理或逻辑处理器。可以在不偏离本发明的范围的情况下,在整个说明书中可交换地使用术语“处理实体”或“处理复合体(complex)”。例如,处理实体可以包括来自诸如英特尔、Qualcomm和Tilera之类的出售商的双核、四核或多核处理器。处理实体可以运行文件系统软件堆栈并且解码用于存取存贮介质的来自网络的I/O请求。在一种实现方式中,处理实体可以包括用于PCIe协议或类似协议的根复合体。在一种实现方式中,处理实体可以被实施为ASIC、FPGA或MCM内的处理逻辑。
如本文所描述的,“路由实体”可以指代用于在接口实体、处理实体、NVM刀片和路由实体本身之间对数据进行路由的一个或多个路由器。在一种实现方式中,路由实体可以表示用于PCIe协议的PCIe节点或端点。
如本文所描述的,“接口实体”可以指代与存贮设备进行接口连接的一个或多个主机接口芯片。在一个实施例中,接口实体可以使用PCIe协议将I/O请求转发到路由实体。可以使用诸如千兆以太网、光纤信道、拨入或者甚至PCIe协议之类的任何合适的协议来接收在接口芯片处的I/O请求。
如本文所描述的,“I/O请求”可以指代用于存储数据或从存贮介质中取回数据的来自网络的对存贮设备的输入/输出请求。
如本文所描述的,“高速外围组件互联(PCIe)”可以指代针对更高的最大系统总线吞吐量、更低的I/O引脚数和更小的物理印迹、对于总线设备的更好的性能提升、更详细的错误检测和报告机制以及固有的热插拔功能所设计的高速串行计算机扩展总线标准。在常规的PCIe系统中,PCle根复合体列举耦合到处理器的所有端点设备并且创建类树形结构。
企业系统的存贮设备需要海量存储容量、对存贮设备读取和写入的低延迟、高带宽、低功耗以及可靠性。传统地,使用诸如在电力关闭时保留数据的硬盘驱动器(HDD)介质之类的存贮介质来实施企业系统。HDD是使用快速旋转盘以便存储和取回数字信息的数据存贮设备。HDD由一个或多个具有布置在移动致动器臂上以向表面读取和写入数据的磁头的坚硬(“硬”)快速旋转盘(盘片)组成。
归因于读取和写入数据时所涉及的移动部分,HDD固有地易于发生错误和故障,并且在提高数据寻找时间方面具有下限。另外,由于HDD具有旋转的盘片,因此对能够将该部分制作得如何小以及该部分的功耗也存在限制。
在某些实施例中,本文所描述的技术提出了使用NVM存贮介质来实施存贮设备。在一些实施例中,使用NVM存贮介质可能通常是有利的,这是因为NVM存贮介质具有较低的寻找时间、不具有移动部分,并且与HDD相比总体上可以更可靠。
在一个实施例中,可以以增强散热、降低功耗、分散功率和工作负载,以及降低延迟的方式来布置组件、模块和控制器板的配置。
常规的存贮设备可以提供一个或多个控制器板,其中每个控制器板包括单一处理复合体以接收I/O请求、处理请求并且向适当的存贮介质转发存储请求。在增加的网络速度以及对于存贮设备的尺寸的增加的日益增加的需求的情况下,用于存取用于存储的物理介质的单一点可能变为系统的瓶颈,导致对于I/O请求的高延迟。在单一处理复合体处增加处理负载可能导致较小的面积中的更高的热量浓度,使得适当的散热成为挑战。而且,单个处理单元可能不能够足够快速地处理事务以跟上I/O请求。在常规系统中,单一的系统设计可能已经不具有问题,这是因为事务瓶颈往往是对于HDD的读取和写入的寻找时间,而不是至HDD的处理路径。
在一些实施例中,可以使用NVM存贮介质来实施存贮设备。通常,与常规HDD相比,NVM存贮介质可以具有较低的寻找时间。在由NVM存贮介质赋予较低的寻找时间的情况下,使用单个处理复合体的常规控制器板设计可能导致次优的配置。本发明的实施例也可以提供进一步的增强来改善对NVM存贮介质的存取时间。虽然可以在本文为了说明的目的使用NVM存贮介质来描述本发明的一些实施例,但本发明可以不限于NVM存贮介质,并且在不脱离本发明的范围的情况下可以使用其它合适的物理存贮介质。
此外,常规的存贮设备可以通过维持数据的镜像存储来实施容错系统。换句话说,对于每个写入操作,可以使用独立处理路径将数据存储在至少两个分开的存贮子系统中。在诸如电源故障、存贮介质的故障或处理路径中的错误之类的第一存贮子系统中的灾难性故障发生时,具有镜像数据的第二存贮系统可以用作在第一系统恢复时取回和存储数据的有效备份。对于HDD,由于介质的低可靠性,维持镜像数据可能是必要的,并且由于与介质相关联的较低成本,其是可行的。
在一些实施例中,NVM存贮介质可以用于实施容错系统。相对地,与常规的存贮介质相比,NVM存贮介质可能更可靠并且较不易于发生错误。在一些实现方式中,可以使用诸如独立磁盘冗余阵列(RAID)之类的技术或其它合适的错误恢复和校正技术来确保存储在NVM存贮介质上的数据的可靠性。因此,如参考附图在本文讨论的实施例中更加详尽地描述的,可以有利的是,在使用NVM存贮介质所实施的实施例中,通过为对于NVM存贮介质的相同物理位置的相同读取或写入操作提供多个路径,而不是通过将包括存贮介质的整个系统进行镜像来降低系统的总体成本。
图1示出了根据本发明的一个实施例的存贮设备的示例高层次框图。方框102示出了具有两个控制器板(104和106)的存贮设备以及耦合到控制器板的刀片的阵列(120a-n)。在一个实施例中,图1中的存贮设备可以表示主动(active)/主动存贮系统。主动/主动配置使得两个控制器板的处理模块均能够处理I/O并且提供对于另一个控制器板的备用能力。在一个简单化的示例中,如果来自控制器板104对特定刀片的读取或写入命令失败,则可以通过控制器板106试图进行相同的读取或写入。可以实施通信协议以在控制器板104和106之间传递状态信息。可以有利的是,实施主动/主动存贮设备来提高性能,这是因为与两个控制器板相关联的处理模块可以同时地或接近同时地处理I/O。然而,图1中的存贮设备不受限于主动/主动存贮设备,并且也可以用于主动/被动配置中,其中一个控制器板的处理模块对于处理I/O请求是主动的,而另一个控制器板在备用模式中空闲,以便准备好在主动的主要控制器板发生故障或离线时接管I/O活动。
如图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)。
在一种实现方式中,每个NVM刀片可以耦合到两个控制器板(104和106),这使得NVM存贮介质的每个物理地址可由任一控制器板来存取。该配置可以有利于避免底层存贮介质的复制和数据的镜像,其中可以通过使用更可靠的存贮介质和/或诸如RAID之类的尖端数据恢复技术或其任何组合来确保物理介质上的数据的可靠性。
图2示出了根据本发明的一个实施例的存贮设备的另一个示例框图。图2示出两个控制器板的图像,其中每个控制器板包括两个处理器、存储器、路由器和接口芯片。图2还描绘了具有用于气流的中央通道的42个NVM刀片。虽然未示出,但存贮设备也可以包括具有功率管理功能的两个桥式板以及板载NVM。板载NVM可以用于存储诸如指针、更新的活动、高速缓存备份和读取/写入缓冲器之类的动态元数据。在一些实施例中,字节可写的诸如磁性RAM之类的NVM可以用于实施板载NVM。另外,存贮设备可以包括12个风扇,其中8个风扇被用于冷却NVM存储器,4个风扇被用于冷却控制器板。可以将这些组件放置在图2的示例配置中以优化气流、处理负载、散热。存贮设备还可以包括多个电源。电源通常易于发生故障并且可能由于风扇或其它功率组件的故障而发生故障。使用多个电源向存贮设备供电可以避免由于电源之一的组件的故障所引起的存贮设备的故障。在一种实现方式中,可以通过电力轨对控制器或控制器板进行供电,其中电力轨可以从多个电源来供电。在连接到电力轨的电源之一发生故障的情况下,电力轨继续从运转的电源供电。在一些实现方式中,可以利用正确运转的电源对发生故障的电源进行热插拔(即,在没有使存贮设备轮转的功率的情况下是可更换的)。
NVM刀片和控制器/控制器板可以具有在任一个板发生故障的情况下用于防止短路的单独实施的数字断路器。此外,还可以以下面这种方式来实施电源:在电源发生故障的情况下允许电源仅仅向电力轨供应功率、而不从电力轨消耗功率。在一种实现方式中,二极管可以用于防止功率通过故障的电源漏出。
参照图2所描述的许多组件(诸如,控制器板、电源、NVM刀片、桥式板和风扇)以及它们的相关联的配置是非限制性的并且作为示例被提供用于示出存贮设备的特定配置。
图3示出了根据本发明的一个实施例的存贮设备的又一个示例框图。如图3中所示,存贮设备的组件可以被配置为符合矩形形状框。在一个示例配置中,气流可以是从前到后,其中风扇被放置在存贮设备的后面。该形状可以有利于将多个存贮设备一起分组在企业数据存贮设施处的机架配置中。然而,存贮设备的形状不受限于图3中示出的矩形形状框。
图4示出了根据本发明的一个实施例的存贮设备的示例框图。图4的系统402示出具有第一控制器板404和第二控制器板406的存贮设备。为了说明的目的,图4描绘了来自多个NVM刀片的单个NVM刀片420。
第一控制器板404可以具有第一处理实体412、耦合到第一处理实体的存储器416、第二处理实体414、耦合到第二处理实体的存储器432、接口实体408以及路由实体410。
第二控制器板406可以具有第三处理实体424、耦合到第三处理实体的存储器428、第四处理实体418、耦合到第四处理实体的存储器430、接口实体422以及路由实体426。
在一种实现方式中,路由实体(410和426)可以负责将来自接口实体(408和422)的I/O请求路由到处理实体(412、416、428和430)之一以进一步处理I/O请求。处理实体可以使用文件系统软件堆栈(未示出)来处理I/O请求。路由实体(410和426)还将来自处理实体(412、416、428和430)的数据请求路由到NVM刀片420。
在一些实施例中,来自第一控制器板404的路由实体410和来自第二控制器板406的路由实体426可以耦合到NVM刀片420以存储数据和从NVM刀片420中取回数据。在一种实现方式中,NVM刀片420使用PCIe协议耦合到路由实体。该配置可以有利于避免底层存贮介质的复制和数据的镜像,其中可以通过使用更可靠的存贮介质和/或诸如RAID之类的尖端的数据恢复技术或其任何组合来确保物理介质上的数据的可靠性。
在图4中,在一个示例配置中,第一处理实体412可以被配置为:接收一个或多个I/O请求,确定与I/O请求相关联的数据被用于存储操作并且其与耦合到第一路由实体410的第一刀片上的特定位置相关联,以及向第一路由实体传送与I/O请求相关联的数据以将第一数据存储在第一刀片420上。在一种实现方式中,在第一处理实体412上运行的文件系统软件堆栈可以确定与I/O请求相关联的位置和NVM刀片操作。例如,在一个实施例中,第一处理实体412可以执行从文件标识符到数据在物理存贮介质上的物理位置的一个或多个地址转换。在一个方面中,由第一处理实体412接收的I/O请求可以首先在接口实体408被接收并且通过多个路由实体之一被转发到第一处理实体412。
类似地,第二处理实体414可以被配置为:接收另一个I/O请求,确定与I/O请求相关联的数据将被存储在耦合到第一路由实体410的第一刀片420上的另一个位置,以及向第一路由实体410传送与I/O请求相关联的数据以将数据存储在第一刀片420上。第二处理实体414也可以运行文件系统软件堆栈以用于确定与I/O请求相关联的位置和存储操作。
以上示例说明用于执行负载平衡以及为了从相同控制器板存取两个处理实体之间的相同NVM刀片420而在各处理实体(412和414)之间分散多个I/O请求的示例配置和处理。虽然示出了两个处理实体,但可以使用多个处理实体。这有利于在以超高速同时对相同物理介质执行多个存储操作时分散处理I/O请求的负载并且也避免瓶颈。
还可以使用类似的技术从物理介质取回所存储的数据。例如,第二处理实体414可以被配置为接收用于读取由第一处理实体412或就此而言的任何其它处理实体所存储的数据的I/O请求。第二处理实体414可以确定I/O请求是对于位于耦合到第一路由实体410的第一刀片420的位置处的数据的读取请求,从第一路由实体410从该位置请求数据,以及从第一路由实体410接收第一数据。
在一个示例配置中,第一处理实体412和第二处理实体414可能不是直接耦合的,而是通过第一路由实体410进行彼此耦合。可以使用PCIe协议或任何其它合适的协议来执行在第一处理实体412和第一路由实体410之间的数据的传送以及在第二处理实体414和第一路由实体410之间的数据的传送。
为了说明的目的,虽然图4描绘了一个NVM刀片和两个控制器板,其中每个控制器板具有两个处理实体、两个存储器以及一个路由实体和接口实体,但本发明的实施例不受限于在图中所描绘的实体的数量。例如,在不脱离本发明的范围的情况下,另一个示例配置可以包括多个NVM刀片、多个路由实体和多个接口实体。图7是这种配置的一个示例,其具有多个路由器(路由实体)和多个接口芯片(接口实体)。
在另一个示例配置中,第一处理实体412和第二处理实体414可以耦合到第一控制器板404上的另一个(第二)路由实体(未示出)。类似于路由实体410,第二路由实体也可以耦合到另一个NVM刀片并且可以处理从第一处理实体412和第二处理实体414两者接收到的存储存取命令。可以使用PCIe协议或任何其它合适的协议来执行在第一处理实体412和第二路由实体(未示出)之间的数据的传送以及在第二处理实体414和第二路由实体(未示出)之间的数据的传送。类似地,第二控制器板406上的组件以与在以上描述的第一控制器板404类似的方式进行配置和操作。
NVM刀片420可以包括用于与多个控制器板进行通信的多个路由接口。在存贮设备402的一个示例实现方式中,包括路由实体410的第一控制器板404和包括路由实体426的第二控制器板406耦合到NVM刀片420。NVM刀片420可以通过路由实体410耦合到第一控制器板404,并且NVM刀片可以通过路由实体426耦合到第二控制器板406。在一种实现方式中,NVM刀片420使用PCIe协议或任何其它合适的协议与控制器板上的路由实体(410和426)进行通信。在一个实施例中,NVM刀片包括NVM存贮介质。在其它实施例中,存贮设备可以包括多个NVM刀片,控制器板可以包括多个路由实体。
在一些实施例中,来自第一控制器板404的路由实体410和来自第二控制器板406的路由实体426可以彼此耦合。在一些实现方式中,两个路由实体可以使用不符合PCIe的透明桥进行彼此耦合。在一种实现方式中,两个路由实体(410和426)可以彼此传递容错信息、系统状态信息、事务完成信息以及关于控制器板的状态的其它信息。
在一个实施例中,来自图4的存贮设备402可以表示主动/主动存贮系统。主动/主动配置使得两个控制器板的处理模块能够处理I/O读取并且提供对于另一个控制器板的备用能力。在一个简单化的示例中,如果来自控制器板404对特定刀片的读取或写入命令失败,则可以通过控制器板406试图进行相同的读取或写入。如上所述,可以实施通信协议以通过路由实体410和426在控制器板404和406之间传递状态信息。可以有利的是,实施主动/主动存贮设备来提高性能,这是因为与两个控制器板相关联的处理模块可以同时处理I/O。然而,图4中的存贮设备不受限于主动/主动存贮设备,并且也可以用于主动/被动配置中,其中一个控制器板的处理模块对于处理I/O请求是主动的,而另一个在备用模式中空闲,以便在主动的主要控制器板发生故障或离线时接管I/O活动。
在主动/主动系统的一种实现方式中,一个或多个控制器板可以假定作为主板的角色,而其它一个或多个板可以假定作为从板的角色。主控制器板可以执行对NVM刀片的所有数据写入,而主板或从板均可以执行读取。
在一种示例实现方式中,可以由主控制器板来部分地执行到达从控制器板的I/O写入操作。例如,可以将写入命令或与写入命令相关联的信息从所述从控制器板转发到主控制器板。在一种实现方式中,NT PCIe桥可以用于将与写入操作相关联的信息从所述从控制器板递送到主控制器板。在一种实现方式中,可以仍然由从控制器板将到达从控制器板的用于写入操作的数据提供给NVM刀片。
主控制器板和从控制器板可以维持用于将读取和写入操作映射到NVM刀片的映射表。在一种实现方式中,将读取和写入表格存储在NVM刀片之一中。在一种实现方式中,读取和写入表格可以被两个控制器板共享。然而,在另一种实现方式中,可以由控制器板分开地维持读取和写入表格。在每个控制器板具有其自己的表格的实例中,主控制器板可以更新用于主控制器板和从控制器板的表格。
如果从控制器板发生故障,则主控制器板继续处理操作。另一方面,如果主控制器板发生故障,则存贮设备失效备援(fail over)到从控制器板。从控制器板可以变为新的主控制器板并且开始处理所有I/O写入操作。
上面所描述的系统可以允许在两个或更多个控制器板之中分发读取事务的工作量,这是因为该读取操作需要用于解码I/O请求的处理能力和时间。
图5是根据本发明的一个实施例的、示出用于执行本发明的实施例的方法的流程图。由包括硬件(电路、专用逻辑等)、(诸如运行于通用计算系统或专用机器上的)软件、固件(嵌入式软件)或其任何组合的处理逻辑来执行方法500中的信号传送。在一个实施例中,通过在图13中所描述的一个或多个计算机系统1300来执行方法500。
图5的流程图描绘了处理I/O请求的第一处理实体502和第二处理实体504。虽然图5仅仅描绘两个处理实体,但可以实施多个处理实体来执行参考图5所描述的本发明的实施例。例如,本发明的实施例可以使用第三、第四、第五或任何数量的处理实体来执行由第一处理实体或第二处理实体所执行的本发明的类似步骤。此外,虽然在图6中在开始指示符和结束指示符之间对于每个处理实体仅仅描绘了一个I/O请求,但可以执行任何数量的I/O请求。
在步骤506,耦合到多个NVM刀片的第一处理实体经由路由实体接收第一I/O请求。
在步骤508,第一处理实体确定第一I/O请求是写入请求还是读取请求。在步骤508,如果确定第一I/O请求是读取请求,则在步骤510,第一处理实体可以从多个NVM刀片中确定目标NVM刀片以及将要从其读取数据的目标NVM刀片中的位置。在一种实现方式中,第一处理实体可以通过使用在第一处理实体上运行的文件系统软件堆栈执行一个或多个地址转换来确定目标NVM刀片以及目标NVM刀片中的位置。
在步骤512,第一处理实体请求与第一I/O请求相关联的数据。在步骤514,对于该读取I/O请求,第一处理实体经由路由实体接收数据。
在步骤508,如果确定第一I/O请求是写入请求,则在步骤516,第一处理实体可以从多个NVM刀片中确定目标NVM刀片以及数据将被存储的目标NVM刀片中的位置。在一种实现方式中,第一处理实体可以通过使用在第一处理实体上运行的文件系统软件堆栈执行一个或多个地址转换来确定目标NVM刀片以及目标NVM刀片中的位置。在步骤518,对于该写入I/O请求,第一处理实体经由路由实体向目标NVM刀片传送数据以将数据存储在目标NVM刀片中。
类似地,在第二处理实体504处,在步骤520,耦合到多个NVM刀片的第二处理实体可以经由路由实体接收第二I/O请求。于在第一处理实体处所接收的第一I/O请求之前/之后或与其并行地,第二处理实体504可以接收第二I/O请求。此外,第一处理实体502和第二处理实体504可以与彼此无关地执行图5中所标识的步骤。
在步骤522,第二处理实体确定第二I/O请求是写入请求还是读取请求。在步骤522,如果确定第二I/O请求是读取请求,则在步骤524,第二处理实体可以从多个NVM刀片中确定目标NVM刀片以及将要从其读取数据的目标NVM刀片中的位置。在一种实现方式中,第二处理实体可以通过使用在第二处理实体上运行的文件系统软件堆栈执行一个或多个地址转换来确定目标NVM刀片以及目标NVM刀片中的位置。在步骤526,第二处理实体请求与第二I/O请求相关联的数据。在步骤528,对于该读取I/O请求,第二处理实体经由路由实体来接收数据。
在一种替换中,在步骤522,如果确定第二I/O请求是写入请求,则在步骤530,第二处理实体可以从多个NVM刀片中确定目标NVM刀片以及数据将被存储的目标NVM刀片中的位置。在一种实现方式中,第二处理实体可以通过使用在第二处理实体上运行的文件系统软件堆栈执行一个或多个地址转换来确定目标NVM刀片以及目标NVM刀片中的位置。在步骤532,对于该写入I/O请求,第二处理实体经由路由实体向目标NVM刀片传送数据以将数据存储在目标NVM刀片中。
如上面所讨论的,类似于第一处理实体502,第二处理实体504可以处理I/O请求。在一些实施例中,第一处理实体和第二处理实体可以以相对于彼此的任何顺序来处理I/O请求,并且还可以同时处理I/O请求。此外,第一处理实体和第二处理实体可以同时处理目标是多个NVM刀片之一的事务。
返回参考图4,可以通过图4中所描绘的任何处理实体来说明系统中的两个处理实体的示例。例如,两个处理实体可以是同一控制器板404上的412和414,或者是存在于不同控制器板上的处理实体412和处理实体428。
可以使用PCIe协议或任何其它合适的协议来执行参考图5所讨论的一个或多个组件之间的通信。即使I/O请求导致针对同一NVM刀片的存储操作,图5的方法在将I/O请求分散在多个处理实体之间也可以是有利的,这允许更快的处理、避免瓶颈和促进更好的散热。
应当理解,在图5中示出的特定步骤提供根据本发明的实施例的在操作模式之间切换的特定方法。在替换实施例中,也可以相应地执行步骤的其它顺序。例如,本发明的替换实施例可以以不同次序执行上面略述的步骤。为了进行说明,用户可以选择从第三操作模式改变为第一操作模式,从第四模式改变为第二模式,或者其间的任何组合。而且,在图5中示出的单独的步骤可以包括适合于单独的步骤的能够以各种顺序执行的多个子步骤。此外,取决于特定应用,可以添加附加步骤或移除附加步骤。本领域普通技术人员将认识和理解到方法500的许多变化、修改和替换。
图6是根据本发明的一个实施例的、示出用于执行本发明的实施例的另一个方法的流程图。由包括硬件(电路、专用逻辑等)、(诸如运行于通用计算系统或专用计算机上的)软件、固件(嵌入式软件)或其任何组合的处理逻辑来执行方法600中的信号传送。在一个实施例中,通过在图13中所描述的一个或多个计算机系统1300来执行方法600。
图6的流程图描绘了处理I/O请求的第一处理实体602和第二处理604。虽然图6仅仅描绘两个处理实体,但可以实施多个处理实体来执行参考图6所描述的本发明的实施例。例如,本发明的实施例可以使用第三、第四、第五或任何数量的处理实体来执行由第一处理实体或第二处理实体所执行的本发明的类似步骤。此外,虽然在图6中在开始指示符和结束指示符之间对于每个处理实体仅仅描绘了一个I/O请求,但可以执行任何数量的I/O请求。图6描述了在图5中所描述的实施例的一种实现方式。
在步骤606,耦合到多个NVM刀片的第一处理实体经由第一路由实体来接收第一I/O请求。
在步骤608,第一处理实体确定第一I/O请求是写入请求还是读取请求。在步骤608,如果确定第一I/O请求是读取请求,则在步骤610,第一处理实体可以确定该读取请求是对于来自耦合到第一路由实体的多个NVM刀片当中的第一NVM刀片的第一位置的数据的读取。在一种实现方式中,第一处理实体可以通过使用在第一处理实体上运行的文件系统软件堆栈执行一个或多个地址转换来确定第一NVM刀片以及第一NVM刀片上的第一位置。
在步骤612,第一处理实体经由第一路由实体请求与第一I/O请求相关联的数据。在步骤614,第一处理实体经由第一路由实体来接收数据并且完成读取I/O请求。
在步骤608,如果确定第一I/O请求是写入请求,则在步骤616,第一处理实体可以从多个NVM刀片中确定第一NVM刀片以及将要存储数据的第一NVM刀片上的第一位置。在一种实现方式中,第一处理实体可以通过使用在第一处理实体上运行的文件系统软件堆栈执行一个或多个地址转换来确定第一NVM刀片以及第一NVM刀片上的第一位置。在步骤618,第一处理实体经由第一路由实体向第一NVM刀片传送数据以将数据存储在第一NVM刀片上的第一位置。
类似地,在第二处理实体604处,在步骤620,耦合到多个NVM刀片的第二处理实体可以经由第一路由实体接收第二I/O请求。于在第一处理实体处所接收的第一I/O请求之前/之后或与其并行地,第二处理实体604可以接收第二I/O请求。
在步骤622,第二处理实体确定第二I/O请求是写入请求还是读取请求。在步骤622,如果确定第二I/O请求是读取请求,则在步骤624,第二处理实体可以确定读取请求是对于来自耦合到第一路由实体的多个NVM刀片当中的第一NVM刀片的第一位置的数据的读取。在一种实现方式中,第二处理实体可以通过使用在第二处理实体上运行的文件系统软件堆栈执行一个或多个第一地址转换来确定第一NVM刀片以及第一NVM刀片上的第一位置。在步骤626,第二处理实体经由第一路由实体请求与第二I/O请求相关联的数据。在步骤628,第二处理实体经由第一路由实体来接收数据并且完成读取I/O请求。
在一种替换中,在步骤622,如果确定第二I/O请求是写入请求,则在步骤630,第二处理实体可以确定写入请求可以是将数据存储在耦合到第一路由实体的多个NVM刀片中的第一NVM刀片的上的第一位置的请求。在一种实现方式中,第一处理实体可以通过使用在第二处理实体上运行的文件系统软件堆栈执行一个或多个地址转换来确定第一NVM刀片以及第一NVM刀片上的第一位置。在步骤632,对于写入I/O请求,第二处理实体经由第一路由实体向目标NVM刀片传送数据以将数据存储在目标NVM中。
如上面所讨论的,类似于第一处理实体602,第二处理实体604可以处理I/O请求。在一些实施例中,第一处理实体和第二处理实体可以以相对于彼此的任何顺序来处理I/O请求并且也可以同时处理I/O请求。此外,第一处理实体和第二处理实体可以同时处理目标是多个NVM刀片之一的事务。
返回参考图4,可以通过存在于同一控制器板404上的处理实体412和414来说明存在于同一控制器板上并且通过同一路由实体存取同一NVM刀片的两个处理实体的示例。在图6中描述的步骤允许存在于同一控制器板上的两个处理实体同时处理并且服务于目标是同一NVM刀片或者甚至NVM刀片上的同一位置的I/O请求。如在图6中所描述的,虽然可以在分开的处理实体处解码和处理I/O请求,但它们可以使用同一路由实体来存取NVM刀片,因而通过避免硬件的复制来节约成本。
可以使用PCIe协议或任何其它合适的协议来执行参考图6所讨论的一个或多个组件之间的通信。即使I/O请求导致针对同一NVM刀片的存储操作,图6的方法在将I/O请求分散在多个处理实体之间也可以是有利的,以便允许更快的处理、避免瓶颈和促进更好的散热。
应当理解,在图6中示出的特定步骤提供了根据本发明的实施例的在操作模式之间切换的特定方法。在替换实施例中,也可以相应地执行步骤的其它顺序。例如,本发明的替换实施例可以以不同次序执行上面略述的步骤。为了进行说明,用户可以选择从第三操作模式改变为第一操作模式,从第四模式改变为第二模式,或者其间的任何组合。而且,在图6中示出的单独的步骤可以包括适合于单独的步骤的能够以各种顺序执行的多个子步骤。此外,取决于特定应用,可以添加附加步骤或移除附加步骤。本领域普通技术人员将认识和理解到方法600的许多变化、修改和替换。
图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请求。
如图7中所示,在一个实施例中,每个接口芯片能够通过路由器向任一个处理器(704和708)传递数据。每个接口芯片可以通过PCIe协议或任何其它合适的协议耦合到至少一个路由器。I/O请求可以到达接口芯片之一。接口芯片可以使用PCIe协议将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刀片以便存储。
在某些实施例中,参考图7所描述的配置可以有利于降低与各种电子组件相关联的负载、增加针对NVM存贮介质的操作的吞吐量,以及从存贮设备内的各个组件耗散热量。
在常规的PCIe系统中,中央处理单元可以包含用于整个系统的根复合体。PCle根复合体列举耦合到处理器的所有端点设备并且创建类树形结构。由耦合到PCIe根复合体的一个或多个处理器来处理在端点处始发的所有请求。在具有大量从诸如接口芯片之类的端点处始发的请求的存贮设备中,根复合体和处理器变为系统中处理事务的瓶颈。在一种实现方式中,更强有力的处理器可以用于迅速地处理I/O请求并且减轻瓶颈。虽然该方式可以暂时地减轻瓶颈,但其可能增加与处理器相关联的功率负载。此外,由于由处理器处理的I/O请求数量增加,处理器也可能跨越控制器板上的小范围生成更多热量。在一个处理器或紧密地集群的处理器处的增加的热量可能使得在整体上将存贮设备的更密集的热封(heat envelope)维持在可接受水平变得有挑战性。附加的功率负载和热量可能在组件级和设备级二者处产生更多故障。
本发明的实施例提出将用于存取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根复合体的处理实体。而且,可以在配置时使用路由信息来配置接口芯片。
在已经在接口芯片和路由器处建立了路由的实例中,可以将到达接口芯片并且被转发到路由器的I/O请求发送到分散处理功能的任一处理实体(704和708)。除了处理以外,所描述的体系结构也可以将链路的连接进行分散。例如,可以实施多个接口芯片来同时接收I/O请求以及将这些I/O请求转发到路由器。此外,在路由器当中分发NVM刀片,这允许在多个路由器当中分发对NVM刀片的存取、避免总线或路由积压。如图7中所描述的这种配置还可以有利于:在存取可通过不同路由器存取的NVM刀片时,允许同时对多个刀片的存取,这显著地提高了读取和写入性能。在替换实现方式中,本发明的实施例提出多个处理实体,每个处理实体具有它们自己的根复合体以用于跨越控制器板分散用于存取NVM存贮器的处理和路由功能。每个端点(即,路由器)可以连接到一个以上的根复合体。因此,能够将到达接口芯片并且被转发到路由器的I/O请求发送到分散处理功能的任一处理实体(704和708)。除了处理以外,所描述的体系结构也可以将链路的连接进行分散。例如,可以实施多个接口芯片来同时接收I/O请求并且将这些I/O请求转发到路由器。此外,在路由器当中分发NVM刀片,这允许在多个路由器当中分发对NVM刀片的存取、避免总线或路由积压。由于每个处理器连接到控制器板上的每个路由器,因此每个处理器能够单独地寻址任何NVM存储地址。如图7中所描述的这种配置还可以有利于:在存取可通过不同路由器存取的NVM刀片时,允许同时对多个刀片的存取,这显著地提高了读取和写入性能。
处理器0(704)可以从启动ROM 728启动(boot),处理器1(708)可以从启动ROM 734启动。在一个实施例中,在处理器704上运行的启动ROM图像还可以包括用于存储文件系统堆栈的初始化信息。在一种实现方式中,可以从板载NVM加载存储文件系统操作系统(OS)。在另一种实现方式中,可以从NVM刀片之一加载存储文件系统OS。在一种实现方式中,在处理器0(704)和处理器1(708)上运行的OS的图像可以是不同的。文件系统OS可以负责将I/O请求转变为硬件读取和写入。
在某些实施例中,板载NVM 736可以用于存储诸如指针、更新的活动、高速缓存备份和读取/写入缓冲器之类的动态元数据。在一些实施例中,字节可写的诸如磁性RAM(MRAM)之类的NVM可以用于实施板载NVM。控制器板也可以具有连接到处理器704和处理器708的调试端口740。调试端口可以支持一个或多个单独的接口,诸如USB、PCIe、千兆以太网等。
图8示出了根据本发明的至少一个实施例的、对于控制器板上的每个组件可见的各个组件的地址空间的示例框图。在一个实施例中,可以将地址空间定义为PCIe地址空间。
P0 810表示从图7的处理器0(704)可见的PCIe地址空间的视图。P1 830表示从图7的处理器1(708)可见的PCIe地址空间的视图。R0 850、Rl 860、R2 870和R3 880分别表示从路由器0(712)、路由器1(714)、路由器2(716)和路由器3(718)可见的PCIe地址空间的视图。在一个实施例中,诸如处理器0(704)之类的PCIe根复合体可以发现所有端点并且配置用于每个端点的PCIe地址空间。
在一些实施例中,对从控制器板的组件中的任何之一可见的各个PCIe范围中的任何之一的存取可以导致与对另一个PCIe地址范围的存取相比不同类型的响应。例如,根据本发明的一个实施例,从处理器存取PCIe地址空间的一个范围可以导致对路由器之一的配置改变。在另一个示例中,存取PCIe地址空间的另一个范围可以导致对耦合到路由器之一的NVM刀片之一的读取/写入存取。还可以将对PCIe地址空间的一些存取映射至处理器的本地存储器或控制器板上的相邻的处理器之一的存储器。在又一个示例中,对PCIe地址空间的一些存取可以导致通过非透明(NT)PCIe桥对相邻控制器板上的组件的读取/写入。
通过PCIe地址空间,若干实体具有对控制器板上的其它实体的地址空间的至少部分存取。例如,在P0 810中,处理器P0 704可以存取其自己的存储器、部分存取处理器P1 708的存储器以及每一个路由器的地址空间。在一个实施例中,将NVM刀片分组成NVM刀片的四个单独的组,其中NVM刀片的每个组可以耦合到路由器之一。通过NVM刀片的组可以耦合的路由器,可存取属于NVM刀片的特定组的NVM刀片中的任何一个。
在图8中,从用于P0 810的PCIe地址空间中,B-G0 808表示通过路由器R0 712可存取的第一组NVM刀片的地址空间。路由器R0 712可以耦合到第一组NVM刀片并且也可以通过由主机总线适配器0(HBAO)806指定的地址空间而从处理器P0 704可配置。类似地,处理器P0(704)可以通过地址空间B-Gl 814存取第二组NVM刀片,并且通过HBA1 812存取第二路由器Rl 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(Pl)804存取相邻处理器P1 708的存储器。在一些实施例中,处理器P0(704)还可以通过NT端口826向相邻控制器板的组件发送消息。
类似于P0 810,从每一个组件可见的PCIe地址空间的视图可以为相应的组件提供使用PCIe地址空间与彼此进行交互的能力。例如,处理器P1(708)还可以通过其PCIe地址空间P1 830存取路由器(HBA0 840、HBA1 838、HBA2 836和HBA3 833)中的每一个、相关联的NVM刀片的组(B-G0 841、B-Gl 839、B-G2 837和B-G3 834)、通过用于DRAM(P1)831的PCIe地址空间存取其自己的本地存储器710a-d,以及用于相邻处理器P0(704)DRAM(P0)832、MRAM 842和NT端口838的存储器。
路由器还可以具有PCIe地址空间的类似的但具有更多局限的视图。例如,路由器R0 712可以具有系统的PCIe地址空间视图R0 850。路由器R0可以能够通过DRAM(P0)851和DRAM(Pl)853分别与处理器P0(704)、处理器P1(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刀片。
路由器Rl 714和R2 716也可以通过DRAM(P0)(861、871)和DRAM(Pl)(863、873)分别存取处理器P0(704)和P1(708)。可以通过HBAl 866和HBA2 877以及它们相关联的NVM刀片B-Gl 867和B-G2 878存取用于路由器Rl 714和R2 716的配置空间。此外,路由器Rl 714和R2 716可以能够分别通过NT端口865和875向相邻控制器板上的路由器发送消息。
在一些实现方式中,用于每个组件的PCIe地址空间内的一些地址范围可以是未被使用的并且被保留以供未来使用(843、852、857、862、864、868、872、874、876、879、882、884和888)。
如先前所讨论的,图8中示出的PCIe地址空间配置是为了说明的目的并且对地址空间的其它实现方式是非限制性的。
图9示出了根据本发明的一个实施例的存贮设备的另一个示例高层次框图。方框902示出具有两个控制器(904和906)的存贮设备以及耦合到控制器的NVM刀片(920a-n)的阵列。在一个实施例中,可以使用桥908将控制器904和906耦合在一起,使用通信协议在控制器904和906之间传递状态信息以用于读取和写入事务。
在一种实现方式中,第一控制器904和第二控制器906是包括用于处理I/O请求的一个或多个处理器、用于控制器和多个NVM刀片之间的路由操作的一个或多个路由器以及一个或多个接口芯片的印刷电路板(PCB)。先前已经在图1-8中讨论了此类控制器板的示例。在另一种实现方式中,可以通过被实施为ASIC、FGPA、MCM的控制器或任何其它合适的解决方案来执行多个分立组件的功能。在一种实现方式中,第一控制器904和第二控制器906可以被实施为ASIC,每个控制器各自包括处理逻辑和路由逻辑。在一种实现方式中,控制器也可以包括接口逻辑。在另一种实现方式中,如图9中所示,为了对I/O请求进行接收和响应,第一控制器904可以耦合到主机接口916,第二控制器906可以耦合到另一个主机接口918。
在某些实施例中,图9中的存贮设备可以表示主动/主动存贮设备。主动/主动配置使得控制器的处理逻辑能够处理I/O并且提供用于另一个控制器的备用能力。可以有利的是,实施主动/主动存贮设备来提高性能,这是因为与两个控制器相关联的处理逻辑可以同时或接近同时地处理I/O。然而,图9中的存贮设备不受限于主动/主动存贮设备,并且也可以用于主动/被动配置中,其中一个控制器的处理逻辑对于处理I/O请求是主动的,而另一个控制器在备用模式中空闲以便在主动的主要控制器板发生故障或离线时接管I/O活动。
在一种实现方式中,在图9中示出的主动/主动系统中,第一控制器904可以被配置为在主动模式下操作,并且接收用于存储数据和从NVM存贮介质取回数据的I/O请求。类似地,第二控制器906也可以被配置为在主动模式下操作,并且接收用于存储数据和从NVM存贮介质取回数据的I/O请求。虽然图9仅仅描绘了两个控制器,但多个控制器可以操作在主动模式中。
另外,存贮设备可以包括多个包括NVM存贮介质的NVM刀片920a-n。在一种实现方式中,每个NVM刀片可以耦合到两个控制器(904和906),这允许任一控制器可存取NVM存贮介质的每个物理地址。该配置可以有利于避免底层存贮介质的复制和数据的镜像,其中可以通过使用更可靠的存贮介质和/或诸如RAID之类的尖端的数据恢复技术或其任何组合来确保物理介质上的数据的可靠性。每个NVM刀片可以包括与第一控制器904进行通信的第一路由接口和与第二控制器906进行通信的第二路由接口。在一种实现方式中,使用PCIe协议或者任何其它合适的协议,第一路由接口与第一控制器进行通信,第二路由接口与第二控制器进行通信。
在主动/主动系统的一种实现方式中,一个或多个控制器可以假定作为主控制器的角色,并且其它一个或多个控制器可以假定作为从控制器的角色。在一种实现方式中,主控制器可以执行或发起针对NVM刀片的所有数据写入,而主板或从板可以执行读取。
通常,相对于针对存贮介质的存储或写入操作,存贮设备可以服务于更多的读取操作。另外,与存储或写入操作相比,读取操作可以完成得更快。因此,可以通过能够由控制器的处理逻辑解码和处理I/O请求的速率来约束能够服务读取操作的速率。因此,可以有利的是,在主动/主动系统中的两个或更多个控制器之间使I/O读取操作负载平衡以用于处理和解码I/O读取操作。因此,主控制器和从控制器两者均可以处理I/O读取操作。相应地,在图9中,第一控制器904和第二控制器906两者可以被配置为对于读取操作以及从NVM存贮介质的请求数据,同时或者接近同时地解码I/O请求。
在一种示例实现方式中,可以由主控制器来部分地执行到达从控制器板的写入操作。例如,可以将写入命令或与写入命令相关联的信息从所述从控制器转发到主控制器。在一种实现方式中,桥908(例如,PCIe NT桥)可以用于将与写入操作相关联的信息从所述从控制器递送到主控制器。在一种实现方式中,可以仍然由从控制器将到达从控制器的用于写入操作的数据提供给NVM刀片。
为了说明的目的,在给定时间点,第一控制器904可以是主控制器,第二控制器906可以是从控制器。在一个示例中,I/O请求可以到达能够用作主控制器的第一控制器904。第一控制器904可以确定I/O请求是用于将与I/O请求相关联的数据存储到NVM存贮介质的写入操作。主控制器可以处理I/O请求、确定要分派写入命令的NVM刀片,并且向该NVM刀片传送命令和数据以便存储数据。
在另一个示例中,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桥)的带宽方面所要求的显著增加。
主控制器和从控制器可以维持用于将读取和写入操作映射到NVM刀片的映射表。在一种实现方式中,将读取和写入表格存储在NVM刀片之一中。在一种实现方式中,读取和写入表格可以被两个控制器共享。然而,在另一种实现方式中,可以由控制器单独地维持读取和写入表格。在每个控制器具有其自己的表格的实例中,主控制器可以更新用于主控制器和从控制器两者的表格。
如果从控制器发生故障,则主控制器与之前一样地继续处理操作。另一方面,如果主控制器发生故障,则存贮设备失效备援到从控制器。换句话说,从控制器可以变为新的主控制器,并且开始处理写入操作。例如,如果第一控制器904充当遭遇不可恢复错误的主控制器,则系统可以失效备援,并且第二控制器906可以变为主控制器。
在一些实现方式中,存贮设备还可以包括多个电源。电源通常易于发生故障并且可能由于风扇或其它功率组件的故障而发生故障。使用多个电源向存贮设备供电可以避免由于电源之一的组件的故障所引起的存贮设备的故障。在一种实现方式中,可以通过电力轨对控制器板进行供电,其中电力轨可以从多个电源来供电。在连接到电力轨的电源之一发生故障的情况下,电力轨继续从运转的电源供电。在一些实现方式中,可以利用正确运转的电源对发生故障的电源进行热插拔(即,在没有使存贮设备轮转的功率的情况下是可更换的)。图10示出了根据本发明的一个实施例的NVM刀片的示例框图。在一些实施例中,NVM刀片1002可以表示图4的NVM刀片420或者来自图9的NVM刀片920a-n之一的一种实现方式。示例NVM刀片1002可以包括一个或多个NVM芯片(1006和1008)以及刀片控制器1004。NVM芯片可以包括NVM存贮介质。NVM芯片可以通过共享总线(912和1014)或者专用总线(未示出)耦合到刀片控制器1004。刀片控制器1004可以负责接收用于存取/存储NVM芯片上的数据的命令、对命令进行处理、存储数据或从NVM芯片取回数据以及其它配置命令。虽然未示出,NVM芯片也可以存在于NVM刀片的相对侧上。在一个实施例中,可以使用专用集成电路(ASIC)来实施刀片控制器1004。在另一个实施例中,可以使用现场可编程门阵列(FPGA)来实施NVM刀片控制器。
图11示出了根据本发明的一个实施例的刀片控制器的示例框图。在一种实现方式中,刀片控制器1004可以具有两个或更多个PCIe接口(1014和1116)以用于连接到控制器(或控制器板)上的路由实体。例如,PCIe接口1114可以耦合到来自第一控制器的路由实体上的PCIe接口之一,并且PCIe接口1116可以耦合到来自第二控制器的路由实体上的PCIe接口之一。每个PCIe接口可以维持与从PCIe接口耦合的相应控制器到达的命令相关联的命令队列(1010和1112)。在一个实施例中,可以分开地维持用于与控制器相关联的数据的数据路径。例如,在将与每个控制器相关联的数据存储至NVM存贮介质之前,可以相应地在方框1106和1108压缩该数据,并且可以在从NVM存贮介质取回数据之后,将该数据进行解压缩。维持分开的数据路径可以允许数据的更高吞吐量并且降低与数据路径相关联的错误。在一个实施例中,可以使用纠错码(ECC)在方框1106和1108处执行错误检测和/或校正。例如,在将数据存储在NVM存贮介质中之前,数据可以被编码和压缩,并且在取回数据时,数据可以被解压缩和检查错误。如果检测到错误,在某些情况下,数据可以是可恢复的。如果错误不是可恢复的,则NVM刀片可以丢弃读取请求或者利用错误状况对控制器板进行响应。
命令管理器1104在多个PCIe接口处对命令进行仲裁。命令管理器1104对命令进行解码,并且存取来自芯片阵列中的适当的NVM存贮介质以便存储/存取数据。通过对命令进行仲裁,在一些实施例中,命令管理器1104可以允许在时间的任何特定时段仅一个有效命令通过NVM接口1102存取/存储数据。在一些实现方式中,为了与每个控制器板进行接口连接,可以分开地实施PCIe接口、命令队列和ECC压缩/解压缩逻辑。读取/写入路径、队列以及逻辑之间的这种隔离可以有利于避免NVM刀片的一个接口上的故障不利地影响NVM刀片的第二接口。例如,如果命令队列1110由于从第一控制器板至NVM接口1102的任何地方的错误而开始备份,则从第二控制器板至NVM存贮介质的读取/写入数据路径可以继续正常地发挥作用。因此,在对NVM存贮介质的存储操作从一个第一控制器板失败的实例中,当检测到这种错误时,可以使用第二控制器板来完成对于非易失性存储器上的相同存储器位置的存储操作。
图12示出了根据本发明的一个实施例的刀片控制器的另一个示例框图。刀片控制器1004的该替换实施例也可以具有用于连接到控制器上的路由逻辑的两个或更多个PCIe接口(1214和1216)以及与从PCIe接口耦合的相应控制器到达的命令相关联的命令队列(1210和1212)。在一种实现方式中,可以使用缓冲器来实施命令队列。在一种实现方式中,命令队列可以被配置为:一旦命令队列缓冲器满得超过预先确定的阈值就丢弃来自第一控制器的命令。
在一个实施例中,可以如图12中所示来实施统一的数据路径和统一的命令路径。在一些实施例中,在将来自数据路径的数据存储至NVM存贮介质之前,可以在方框1206压缩该数据,并且可以在从NVM存贮介质取回之后,将该数据解压缩。在一个实施例中,可以使用纠错码(ECC)在方框1206执行错误检测和/或校正。例如,在将数据存储在NVM存贮介质中之前,该数据可以被编码和压缩,并且在取回数据时,数据可以被解压缩和检查错误。如果检测到错误,在某些情况下,数据可以是可恢复的。如果错误不是可恢复的,则NVM刀片可以丢弃读取请求或者利用错误状况对控制器进行响应。
命令管理器1204可以对来自多个PCIe接口的命令进行仲裁。命令管理器1204对命令进行解码,并且存取来自芯片阵列中的适当的NVM存贮介质以便存储/存取数据。通过对命令进行仲裁,命令管理器1204可以允许在时间的任何特定时段仅一个有效命令通过NVM接口1202存取/存储数据。如图12中所示,统一的数据路径和命令路径可以导致成本和设计效率。
虽然在上面的图中未示出,但在一种实现方式中,可以对于来自多个NVM芯片中的每个NVM芯片维持分开的命令队列和/或数据队列,其中NVM芯片包括用于NVM刀片的NVM存贮介质。此外,可以对于每个控制器维持分开的命令队列和/或数据队列集合。例如,在具有32个NVM芯片的NVM刀片的实现方式中,可以对于源自第一控制器的请求维持32个命令队列和/或数据队列,并且可以对于源自第二控制器的请求维持32个命令队列和/或数据队列。这种配置可以允许当在NVM刀片上发起、处理和完成其它命令时发起、处理和/或完成多个未决的命令,只要操作不是针对同一NVM芯片即可。命令管理器1004可以对源自两个控制器的命令进行仲裁。
已经描述了垂直集成的体系结构的多个方面,现在可以参考图13来描述可以实施本公开的各个方面的计算系统的示例。根据一个或多个方面,可以将如图13中所示出的计算机系统并入作为能够实施、执行和/或运行本文所描述的任何和/或所有的特征、方法和/或方法步骤的计算设备的一部分。例如,计算机系统1300可以表示设备和/或接入点装置的一些组件。设备可以是具有诸如RF接收机之类的无线单元的任何计算设备。在一个实施例中,系统1300被配置为实施本文所描述的任何方法。图13提供计算机系统1300的一个实施例的示意图示,该计算机系统1300能够执行如本文所描述的由各个其它实施例提供的方法,和/或能够用作主机计算机系统、远程信息站/终端、销售点设备、移动设备、机顶盒和/或计算机系统。图13仅仅意味着提供各个组件的一般图示,可以根据情况利用其中的任何和/或所有组件。因此,图13宽泛地示出可以如何以相对分开或相对更集成的方式来实施独立的系统元件。
示出了包括能够经由总线1305电耦合(或者可以另外根据情况地进行通信)的硬件元件的计算机系统1300。硬件元件可以包括:一个或多个处理器1310,其包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(诸如,数字信号处理芯片、图形加速处理器,和/或类似物);一个或多个输入设备1315,其可以包括但不限于照相机、鼠标、键盘和/或类似物;以及一个或多个输出设备1320,其可以包括但不限于显示单元、打印机和/或类似物。计算设备1300还可以包括用于监测系统的健康的(一个或多个)传感器,诸如温度传感器、功率传感器等。
计算机系统1300可以进一步包括一个或多个非暂时型存贮设备1325(和/或与其进行通信),其可以包括但不限于本地和/或网络可存取的存贮器,和/或可以包括但不限于磁盘驱动器、驱动器阵列、光学存贮设备、诸如随机存取存储器(“RAM”)和/或只读存储器(“ROM”)之类的固态存贮设备,其能够是可编程的、NVM可更新的等等。此类存贮设备可以被配置为实施任何适当的数据存贮器,其包括但不限于各种文件系统、数据库结构,和/或类似物。
计算机系统1300可能还包括通信子系统1330,其可以包括但不限于调制解调器、网卡(无线的或有线的)、红外通信设备、无线通信设备和/或芯片组(诸如,设备、802.11设备、WiFi设备、WiMax设备、蜂窝通信设施,等等),和/或类似物。通信子系统1330可以准许与网络(举一个例子,诸如如下所述的网络)、其它计算机系统和/或本文所描述的任何其它设备交换数据。在许多实施例中,计算机系统1300可以进一步包括非暂时型工作存储器1335,其能够包括如上所述的RAM或者ROM设备。计算机系统1300可能还包括收发信机1350以便于通信子系统1330与外部实体的通信。
计算机系统1300还可以包括当前被示出为位于工作存储器1335内的软件元件,其包括操作系统1340、设备驱动器、可执行的库,和/或诸如一个或多个应用程序1345之类的其它代码,其可以包括由各个实施例提供的计算机程序,和/或可以被设计为如本文所描述的由其它实施例提供的实施方法和/或配置系统。仅仅举例来说,参考以上讨论的(一个或多个)方法所描述的一个或多个过程可能被实施为可由计算机(和/或在计算机内的处理器)执行的代码和/或指令;在一方面,然后,此类代码和/或指令能够用于将通用计算机(或者其它设备)配置和/或适配为执行根据所描述的方法的一个或多个操作。
可以将这些指令和/或代码的集合存储在诸如以上所描述的(一个或多个)存贮设备1325之类的计算机可读存贮介质上。在一些情况下,可以将存贮介质并入在诸如计算机系统1300之类的计算机系统内。在其它实施例中,存贮介质可能与计算机系统(例如,诸如光碟之类的可移动介质)分开,和/或被提供于安装包中,使得存贮介质能够用于利用存储在其上的指令/代码对通用计算机进行编程、配置和/或适配。这些指令可以采取可由计算机系统1300执行的可执行代码的形式,和/或可以采取源代码和/或可安装代码的形式,其在(例如,使用任何各种通常可用的编译器、安装程序、压缩/解压缩工具,等等)在计算机系统1300上进行编译和/或安装时然后采取可执行代码的形式。
可以根据特定需求进行实质的变化。例如,还可以使用定制硬件,和/或可以在硬件、软件(包括诸如小程序(applet)之类的可移植软件等)或这两者中实施特定元件。此外,可以采用对诸如网络输入/输出设备之类的其它计算设备的连接。
某些实施例可以采用计算机系统(诸如计算机系统1300)来执行根据本公开的方法。例如,响应于处理器1310运行包含在工作存储器1335中的一个或多个指令(其可以被并入到操作系统1340和/或诸如应用程序1345之类的其它代码中)的一个或多个序列,可以由计算机系统1300执行所描述的方法中的一些或所有过程。可以将这样的指令从诸如一个或多个存贮设备1325之类的另一个计算机可读介质读取到工作存储器1335中。仅仅举例来说,包含在工作存储器1335中的指令序列的运行可能使(一个或多个)处理器1310执行本文所描述的方法的一个或多个过程。
如本文所使用的术语“机器可读介质”和“计算机可读介质”指代参与提供使机器以特定方式操作的数据的任何介质。在使用计算机系统1300实现的实施例中,在向(一个或多个)处理器1310提供指令/代码以用于运行时可能涉及各种计算机可读介质,和/或各种计算机可读介质可能用于存储和/或承载这样的指令/代码(例如,作为信号)。在许多实现方式中,计算机可读介质是物理和/或有形的存贮介质。这样的介质可以采取许多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质例如包括光盘和/或磁盘,诸如存贮设备1325。易失性介质包括但不限于诸如工作存储器1335之类的动态存储器。传输介质包括但不限于同轴电缆、铜线和光纤,其包括包含有总线1305的导线以及通信子系统1330的各个组件(和/或通信子系统1330借助于其提供与其它设备的通信的介质)。因此,传输介质还可以采取波的形式(包括但不限于无线电、声波和/或光波,诸如在无线电波和红外数据通信期间所生成的那些波)。
某些实施例可以采用计算机系统(诸如处理器1310)来执行根据本公开的方法。例如,响应于处理器运行包含在工作存储器中的一个或多个指令(其可以被并入到操作系统和/或诸如应用程序之类的其它代码中)的一个或多个序列,可以通过观看装置来执行所描述的方法中的一些或所有过程。可以将这样的指令从诸如一个或多个存贮设备之类的另一个计算机可读介质读取到工作存储器中。仅仅举例来说,包含在工作存储器中的指令序列的运行可能使(一个或多个)处理器执行本文所描述的方法的一个或多个过程。
另外,采用本文所描述的计算机系统的实施例不限于物理地连接到观看装置。处理可以出现在经由导线连接或者无线地连接到观看装置的另一个装置中。例如,可以将电话中的处理器或者用于由电话或平板计算机运行命令的指令包含在这些描述中。类似地,远程位置中的网络可以安置处理器并且向观看装置发送数据。
如本文所使用的术语“机器可读介质”和“计算机可读介质”指代参与提供使机器以特定方式操作的数据的任何介质。在使用处理器1310实现的实施例中,在向(一个或多个)处理器1310提供指令/代码以用于运行时可能涉及各种计算机可读介质,和/或各种计算机可读介质可能用于存储和/或承载这样的指令/代码(例如,作为信号)。在许多实现方式中,计算机可读介质是物理的和/或有形的存贮介质。这样的介质可以采取许多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质例如包括光盘和/或磁盘。易失性介质包括但不限于诸如NVM存储器或DDR3 RAM之类的动态存储器。传输介质包括但不限于同轴电缆、铜线和光纤,以及通信子系统的各个组件(和/或通信子系统借助于其提供与其它设备的通信的介质)。因此,传输介质还可以采取波的形式(包括但不限于无线电、声波和/或光波,诸如在无线电波和红外数据通信期间所生成的那些波)。
在一个或多个示例中,可以以硬件、软件、固件或其任何组合来实施所描述的功能。如果以软件来实施,功能可以作为一个或多个指令或代码被存储在计算机可读介质上或通过计算机可读介质来传输。计算机可读介质可以包括计算机数据存贮介质。数据存贮介质可以是能够由一个或多个计算机或者一个或多个处理器存取以取回用于实施在本公开中描述的技术的指令、代码和/或数据结构的任何可用的介质。如在本文所使用的“数据存贮介质”指代制造品(manufacture)并且不指代瞬时传播信号。举例来说,但不限制,此类计算机可读存贮介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存贮器、磁盘存贮器或其它磁存贮设备、NVM存储器,或能够用于以指令或数据结构的形式存储期望的程序代码并且能够由计算机存取的任何其它介质。如在本文所使用的磁盘包括光碟(CD)、激光磁盘、光学盘、数字化通用磁盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地再现数据,而光盘利用激光来光学地再现数据。以上的组合应当也被包括在计算机可读介质的范围内。
可以通过诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或分立的逻辑电路之类的一个或多个处理器来运行代码。因此,如在本文所使用的术语“处理器”可以指代任何上述结构或适于实施在本文描述的技术的任何其它结构。此外,在一些方面中,可以在被配置用于进行编码和解码,或者被并入在组合编解码器中的专用硬件和/或软件模块内提供在本文描述的功能。而且,可以在一个或多个电路或逻辑元件中全部地实施本技术。
可以以包括无线手机、集成电路(IC)或IC集合(例如,芯片组)的多种设备或装置实施本公开的技术。在本公开中描述了各种组件、模块或单元来强调被配置为执行所公开的技术的设备的功能方面,但不一定要求通过不同的硬件单元实现。相反,如上所述,可以在编解码器硬件单元中组合各种单元,或者通过包括与存储在计算机可读介质上的合适的软件和/或固件结合的如上所述的一个或多个处理器的互操作的硬件单元的集合来提供各种单元。
已经描述了各种示例。这些和其它示例处于所附权利要求的范围内。
Claims (40)
1.一种存贮设备,包括:
多个非易失性存储器(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刀片包括非易失性存储器(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请求相关联的第三数据。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/078,308 US9336134B2 (en) | 2013-11-12 | 2013-11-12 | Apparatus and method for accessing a non-volatile memory blade using multiple controllers in a non-volatile memory based storage device |
US14/078,302 US9229855B2 (en) | 2013-11-12 | 2013-11-12 | Apparatus and method for routing information in a non-volatile memory-based storage device |
US14/078,302 | 2013-11-12 | ||
US14/078,308 | 2013-11-12 | ||
PCT/US2014/065162 WO2015073503A1 (en) | 2013-11-12 | 2014-11-12 | Apparatus and method for routing information in a non-volatile memory-based storage device |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105980990A true CN105980990A (zh) | 2016-09-28 |
Family
ID=53057954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480072699.0A Pending CN105980990A (zh) | 2013-11-12 | 2014-11-12 | 在基于非易失性存储器的存贮设备中对信息进行路由的装置和方法 |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP3069253A4 (zh) |
JP (1) | JP6358483B2 (zh) |
KR (1) | KR101824671B1 (zh) |
CN (1) | CN105980990A (zh) |
AU (1) | AU2014348774A1 (zh) |
CA (1) | CA2930379A1 (zh) |
WO (1) | WO2015073503A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102387181B1 (ko) * | 2017-10-31 | 2022-04-19 | 에스케이하이닉스 주식회사 | 컴퓨팅 디바이스 및 그것의 동작방법 |
US11636014B2 (en) | 2017-10-31 | 2023-04-25 | SK Hynix Inc. | Memory system and data processing system including the same |
US11687273B2 (en) * | 2021-09-29 | 2023-06-27 | Micron Technology, Inc. | Memory controller for managing data and error information |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020133735A1 (en) * | 2001-01-16 | 2002-09-19 | International Business Machines Corporation | System and method for efficient failover/failback techniques for fault-tolerant data storage system |
US20130067123A1 (en) * | 2011-09-09 | 2013-03-14 | Lsi Corporation | Methods and structure for improved i/o shipping in a clustered storage system |
CN103246622A (zh) * | 2013-04-10 | 2013-08-14 | 华为技术有限公司 | 一种扩展内存的方法、内存节点、主节点及系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7855916B2 (en) * | 2007-10-24 | 2010-12-21 | Rao G R Mohan | Nonvolatile memory systems with embedded fast read and write memories |
JP5147586B2 (ja) * | 2008-07-30 | 2013-02-20 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
US10236032B2 (en) * | 2008-09-18 | 2019-03-19 | Novachips Canada Inc. | Mass data storage system with non-volatile memory modules |
EP2545554A4 (en) * | 2010-03-12 | 2015-03-11 | Lsi Corp | LDPC CLEARANCE DECODING FOR FLASH MEMORY |
WO2011156746A2 (en) * | 2010-06-11 | 2011-12-15 | California Institute Of Technology | Systems and methods for rapid processing and storage of data |
US9600315B2 (en) * | 2010-10-22 | 2017-03-21 | Netapp, Inc. | Seamless takeover of a stateful protocol session in a virtual machine environment |
US8589723B2 (en) | 2010-12-22 | 2013-11-19 | Intel Corporation | Method and apparatus to provide a high availability solid state drive |
US20130007368A1 (en) * | 2011-06-29 | 2013-01-03 | Lsi Corporation | Methods and systems for improved miorroring of data between storage controllers using bidirectional communications |
US8370567B1 (en) * | 2012-03-23 | 2013-02-05 | DSSD, Inc. | Storage system with self describing data |
-
2014
- 2014-11-12 AU AU2014348774A patent/AU2014348774A1/en not_active Abandoned
- 2014-11-12 CN CN201480072699.0A patent/CN105980990A/zh active Pending
- 2014-11-12 CA CA2930379A patent/CA2930379A1/en not_active Abandoned
- 2014-11-12 WO PCT/US2014/065162 patent/WO2015073503A1/en active Application Filing
- 2014-11-12 JP JP2016530113A patent/JP6358483B2/ja not_active Expired - Fee Related
- 2014-11-12 EP EP14861596.6A patent/EP3069253A4/en not_active Withdrawn
- 2014-11-12 KR KR1020167015204A patent/KR101824671B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020133735A1 (en) * | 2001-01-16 | 2002-09-19 | International Business Machines Corporation | System and method for efficient failover/failback techniques for fault-tolerant data storage system |
US20130067123A1 (en) * | 2011-09-09 | 2013-03-14 | Lsi Corporation | Methods and structure for improved i/o shipping in a clustered storage system |
CN103246622A (zh) * | 2013-04-10 | 2013-08-14 | 华为技术有限公司 | 一种扩展内存的方法、内存节点、主节点及系统 |
Also Published As
Publication number | Publication date |
---|---|
KR20160107158A (ko) | 2016-09-13 |
EP3069253A4 (en) | 2017-07-26 |
EP3069253A1 (en) | 2016-09-21 |
JP6358483B2 (ja) | 2018-07-18 |
AU2014348774A1 (en) | 2016-06-30 |
CA2930379A1 (en) | 2015-05-21 |
JP2016539418A (ja) | 2016-12-15 |
KR101824671B1 (ko) | 2018-03-14 |
WO2015073503A1 (en) | 2015-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9507529B2 (en) | Apparatus and method for routing information in a non-volatile memory-based storage device | |
US9645940B2 (en) | Apparatus and method for accessing a non-volatile memory blade using multiple controllers in a non-volatile memory based storage device | |
US11636014B2 (en) | Memory system and data processing system including the same | |
US10585609B2 (en) | Transfer of storage operations between processors | |
US20110145452A1 (en) | Methods and apparatus for distribution of raid storage management over a sas domain | |
CN106066890B (zh) | 一种分布式高性能数据库一体机系统 | |
JP2015532985A (ja) | 大規模なデータ記憶および受け渡しシステム | |
CN107015890A (zh) | 存储设备、具有其的服务器系统以及其操作方法 | |
CN108255410A (zh) | 一种处理磁盘漫游的方法、装置和设备 | |
JP6068676B2 (ja) | 計算機システム及び計算機システムの制御方法 | |
JP2017531856A (ja) | アクティブストレージユニットおよびアレイ | |
CN105980990A (zh) | 在基于非易失性存储器的存贮设备中对信息进行路由的装置和方法 | |
CN103577347B (zh) | 用于操作存储器设备的方法和用于存储器操作的系统 | |
US10853211B2 (en) | System and method for chassis-based virtual storage drive configuration | |
KR20050033060A (ko) | 네트워크를 이용한 핫 스페어 구성 시스템 및 방법 | |
CN104471548A (zh) | 采用数据管理机制的存储系统及其操作的方法 | |
CN104460938A (zh) | 利用存储器高速缓存在系统范围内节省电力的方法和系统 | |
KR102586768B1 (ko) | 컴퓨팅 시스템 및 그것의 동작방법 | |
US10928871B2 (en) | Computing device and operation method thereof | |
US20170085645A1 (en) | Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto | |
US20140316539A1 (en) | Drivers and controllers | |
US20230236652A1 (en) | Peer Storage Device Messaging for Power Management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180718 Address after: American California Applicant after: Western Digital Technologies, Inc. Address before: American California Applicant before: Skela LLC |
|
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160928 |