CN104272257B - 具有组播直接存储器存取和统一地址空间的存储系统 - Google Patents

具有组播直接存储器存取和统一地址空间的存储系统 Download PDF

Info

Publication number
CN104272257B
CN104272257B CN201380015061.9A CN201380015061A CN104272257B CN 104272257 B CN104272257 B CN 104272257B CN 201380015061 A CN201380015061 A CN 201380015061A CN 104272257 B CN104272257 B CN 104272257B
Authority
CN
China
Prior art keywords
memory
data
client
storage device
module
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.)
Active
Application number
CN201380015061.9A
Other languages
English (en)
Other versions
CN104272257A (zh
Inventor
M·W·夏皮罗
J·S·邦威克
W·H·穆尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
DSSD Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by DSSD Inc filed Critical DSSD Inc
Publication of CN104272257A publication Critical patent/CN104272257A/zh
Application granted granted Critical
Publication of CN104272257B publication Critical patent/CN104272257B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

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)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种使得客户端、控制模块和存储模块参与到统一地址空间以使用直接存储器存取进行高效读取和写入的系统和方法。用于读取数据的方法包括确定用于写入数据的第一副本的位于第一存储器中的第一位置、用于写入数据的第二副本的位于第二存储器中的第二位置,其中第一存储器是位于包括第一永久存储器的第一存储模块中,而第二存储器是位于包括第二永久存储器的第二存储模块中。该方法进一步包括对直接存储器存取引擎编程以从客户端存储器读取数据并向组播地址发布写入请求,其中第一位置、第二位置和第三位置是与组播地址相关。

Description

具有组播直接存储器存取和统一地址空间的存储系统
背景
系统能向永久存储器写入数据和从永久存储器读取数据的速度通常是该系统整体性能中的一个关键因素。向永久存储器或者从永久存储器传送数据的传统方法要求通过客户端系统和永久存储器系统上的软件、固件和硬件的多个层进行处理。此外,当数据在这些层之间移动时,数据一般会被复制。于是,除了在对底层的物理存储介质进行读取或者写入所需要的延迟之外,还产生额外的延迟,该额外的延迟降低了系统的整体性能。
发明内容
总体而言,在一方面,本发明涉及一种用于写入数据的方法。该方法包括从客户端接收写入数据的请求,其中数据是位于客户端存储器中;由存储装置确定第一存储器中的第一位置以写入数据的第一副本,第二存储器中的第二位置以写入数据的第二副本,其中第一存储器位于包括第一永久存储器的第一存储器模块中,第二存储器位于包括第二永久存储器的第二存储器模块中,其中存储装置包括第一存储器模块和第二存储器模块;对直接存储器存取(DMA)引擎编程以从客户端存储器读取数据并向组播地址发布第一写入请求,其中第一位置、第二位置和第三位置与该组播地址相关联。该方法还包括,在进行编程之后,存储装置中的交换机架构(switchfabric)中的交换机(switch)从DMA引擎接收第一请求;响应于对第一请求的接收,在交换机中产生用以将第一副本写入第一位置的第二请求、用以将第二副本写入第二位置的第三请求和用以将第三副本写入第三位置的第四请求,其中第三位置位于该存储装置的控制模块的第三存储器中;其中响应于第二请求,数据的第一副本被写入到第一位置,响应于该第三请求,数据的第二副本被写入到第二位置,响应于该第四请求,数据的第三副本被写入到第三位置;其中DMA引擎从客户端存储器读取数据,第一存储器、第二存储器、第三存储器以及客户端存储器的至少一部分是能够通过统一地址空间存取的存储架构(storagefabric)的一部分。
总体而言,在一方面,本发明涉及一种用于读取数据的方法。该方法包括从客户端接收用以读取存储在存储装置中的数据的请求,其中该请求包括与数据相关的逻辑地址;由存储装置使用该逻辑地址确定存储器内(in-memory)数据结构中的位置,从存储器内数据结构中的位置获得物理地址,其中物理地址对应于永久存储器中的第一位置,其中永久存储器位于存储装置的存储模块中且其中数据位于第一位置;对存储模块控制器编程以从第一位置读取数据并在第二位置存储数据的第一副本,其中第二位置位于存储模块的存储器中;在对存储模块控制器编程之后:由存储模块控制器从第一位置读取数据,并由存储模块控制器将数据的第一副本写入第二位置;对直接存储器存取(DMA)引擎编程以从第二位置读取数据并将数据的第二副本写入客户端存储器中的第三位置;在对DMA引擎编程之后:由DMA引擎从第二位置读取该数据的第一副本,并由DMA引擎将数据的第二副本写入第三位置,其中永久存储器、存储器以及客户端的至少一部分。
总体而言,在一方面,本发明涉及一系统。该系统包括包含客户端处理器和客户端存储器的客户端,和存储装置,该存储装置包括:
处理器,其中处理器被配置成对第一直接存储器存取(DMA)引擎和第二DMA引擎编程、第一存储器、包含第二存储器的第一存储模块、第一永久存储器、第二DMA引擎、包含第三存储器和第二永久存储器的第二存储模块、包含被配置成实现组播的交换机的交换机架构、以及包含第一DMA引擎和非透明桥(non-transparentbridge)的客户端交换机,其中非透明桥使得存储装置能够存取客户端存储器的至少一部分,其中第一DMA引擎被配置成从客户端存储器读取第一数据(firstdatum)并将第一数据写入交换机中的组播地址,其中第二DMA引擎被配置成从选自下述组中的至少其中之一读取第二数据(seconddatum),所述组由第一永久存储器和第二永久存储器组成,第二DMA引擎还被配置成将第二数据写入客户端存储器,其中客户端存储器的所述部分、第一存储器、第二存储器和第三存储器是能够通过统一地址空间存取的存储架构(storagefabric)的一部分。
本发明的其他方面将通过下面的描述和所附的权利要求而变得显而易见。
附图说明
图1A-1E示出了根据本发明的一个或多个实施例的多个系统。
图2A-2D示出了根据本发明的一个或多个实施例的多个存储装置。
图3示出了根据本发明的一个或多个实施例的存储模块。
图4A-4B示出了根据本发明的一个或多个实施例的多个流程图。
图5A-5C示出了根据本发明的一个或多个实施例的多个示例。
图6示出了根据本发明的一个或多个实施例的流程图。
图7A-7C示出了根据本发明的一个或多个实施例的多个示例。
具体实施方式
本发明的具体实施例现在将被结合附图详细描述。在下述的对于本发明的实施例的详细描述中,许多具体细节被阐述以提供对于本发明的透彻的理解。然而,对于本领域的普通技术人员来说,很明显本发明可以以不具备这些具体细节的方式被实现。在其他的示例中,公知的特征没有被具体描述,以避免这些描述被不必要的复杂化。
在下述对于附图1A-7C的描述中,结合一附图所描述的任何组件,在本发明的不同的实施例中,可以等效于结合任何其他附图而描述的一个或多个被相似命名(like-named)的组件。为了使得描述简洁,将不会结合每一个附图而重复对于这些部件的描述。因此,在每一个附图中这些部件的每一个(each)和每一个实施例(everyembodiment)将被以参照的方式引入并被假设以任意展现在具有一个或多个类似命名的部件的每一个其他附图中。此外,按照本发明的不同的实施例,一个附图中对于这些部件的任何描述将被解释为一个可实现的可选实施例,以附加于、结合于、或者代替结合任何其他附图中对于一个对应的类似命名的部件而描述的实施例。
总体而言,本发明的实施例涉及存储系统。更具体地说,本发明的实施例涉及包括一个或多个存储装置的存储系统,每一个存储装置被配置成允许客户端使用客户端存储器和物理存储器模块的存储器之间的单个直接存储器存取(DMA)来将数据从客户端传送至存储装置,同时保持存储装置能够控制物理存储器布局(physicalstoragelayout)并向其客户端展示抽象的逻辑布局的能力。该架构被称为零副本(Zero-Copy)DMA,其中除了用于每一个读取或者写入的唯一DMA以外,该架构中产生数据的零副本。具体而言,在本发明的一个或多个实施例中,存储装置包括存储模块,且客户端能够使用零副本DMA直接传送数据至存储模块。此外,在本发明的一个或多个实施例中,存储装置包括使用零副本DMA直接将数据从存储模块传送到客户端存储器的功能。
图1A-1E揭示了根据本发明的一个或多个实施例的多个系统。参考图1A,该系统包括可操作地连接至存储装置(102)的一个或多个客户端(客户A(100A)、客户端M(100M))。
在本发明的一个实施例中,客户端(100A、100M)对应于包括向存储装置(102)发布读取请求和/或向存储装置(102)发布写入请求的功能的任何系统。尽管在图1A中没有示出,客户端(100A、100M)中的每一个可包括客户端处理器和客户端存储器。关于客户端中的组件的额外细节将在下面的图1D中描述。在本发明的一个实施例中,客户端(100A、100M)被配置成使用下述协议中的一个或者多个来与存储装置(102)通信:外围组件互联(PCI)、快速PCI(PCI-Express,PCIe)、扩展PCI(PCI-eXtended,PCI-X)、快速非易失性存储(NVMe)、基于快速PCI架构(fabric)的快速非易失性存储、基于以太网架构的快速非易失性存储以及基于无限带宽架构(infinibandfabric)的快速非易失性存储。本领域的技术人员将意识到本发明并不局限于前述的协议。
在本发明的一个或多个实施例中,如果客户端执行PCI、快速PCI或者NVMe,则该客户端包括根组件(rootcomplex)(根组件未示出)。在本发明的一个实施例中,根组件是将客户端处理器和客户端存储器连接至PCIe架构的设备。在本发明的一个实施例中,根组件被集成到客户端处理器中。
在本发明的一个实施例中,PCIe架构包括经由交换机(例如图1D中的客户端交换机(116)和例如图2A中的交换机架构(206)的交换机架构内的交换机)连接的根组件和端点(endpoint)。在本发明的一个实施例中,端点是除了根组件或者交换机以外的设备,该设备能发起PCI交换(例如,读取请求、写入请求)或者作为PCI交换的目标。
在本发明的一实施例中,单个的客户端和单个的存储装置可被认为是单个的PCIe架构的一部分。在本发明的另一个实施例中,一个或者多个客户端和一个或者多个存储装置的任意组合可被认为是单个PCIe架构的一部分。此外,如果存储装置中的个别组件使用PCIe通信,并且客户端中的个别组件(参考图1D)使用PCIe通信,那么存储装置和客户端中的所有组件都可被认为是单个PCIe架构的一部分。本领域的技术人员将意识到本发明的不同实施例可使用其他类型的架构实现而不脱离本发明的范围。
继续参考图1A,在本发明的一个实施例中,存储装置(102)是包括易失存储器和永久存储器的系统,并且该系统被配置成服务来自一个或多个客户端(100A、100M)的读取请求和/或写入请求。存储装置(102)的不同实施例以下在图2A-2D中被描述。
参考图1B,图1B示出了一系统,其中客户端(100A、100M)连接至多个存储装置(104A、104B、104C、104D),该多个存储装置被布置成网格组态(meshconfiguration)(在图1B中被标记为存储装置网格(104))。如图1B所示,存储装置网格(104)被示为全连接(fullconnected)网格组态,也就是说,存储装置网格(104)中的每一个存储装置(104A、104B、104C、104D)与存储装置网格(104)中每一个其他存储装置(104A、104B、104C、104D)直接连接。在本发明的一个实施例中,每一个客户端(100A、100M)可直接连接至存储装置网格(104)中的一个或多个存储装置(104A、104B、104C、104D)。本领域的技术人员将意识到存储装置网格可使用其他网格组态(例如,部分连接网格)实现而不脱离本发明的范围。
参考图1C,图1C示出了一个系统,其中客户端(100A、100M)连接至多个存储装置(104A、104B、104C、104D),该多个存储装置被安排成扇出组态(fan-outconfiguration)。在该组态中,每一个客户端(100A、100M)连接至一个或多个存储装置(104A、104B、104C、104D);然而,各个存储装置(104A、104B、104C、104D)之间并不互相通信。
参考图1D,图1D示出了根据本发明的一个或多个实施例的客户端。如图1D所示,客户端(110)包括客户端处理器(112)、客户端存储器(114)和客户端交换机(116)。这些组件中的每一个在下面进行描述。
在本发明的一个实施例中,客户端处理器(112)是被配置成执行指令的具有单个核心或者多个核心的一组电子电路。在本发明的一个实施例中,客户端处理器(112)可使用复杂指令集(CISC)体系结构或精简指令集(RISC)体系结构实现。在本发明的一个或多个实施例中,客户端处理器(112)包括(由PCIe协议定义的)根组件(未示出)。在本发明的一个实施例中,如果客户端(110)包括根组件(根组件可被集成至客户端处理器(112)),则客户端存储器(114)经由根组件连接至客户端处理器(112)。或者,客户端存储器(114)使用其他点对点连接机制直接连接至客户端处理器(112)。在本发明的一个实施例中,客户端存储器(114)对应于任何易失存储器,包括但不限于,动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、单数据速率同步动态随机存取存储器(SDRSDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)。
在本发明的一个实施例中,客户端存储器(114)包括下述的一个或者多个:用于客户端处理器的提交队列和用于客户端处理器的完成队列。在本发明的一个实施例中,存储装置存储器包括一个或多个用于客户端处理器的提交队列,这些提交队列对于客户端是通过架构(fabric)可见的,而客户端存储器包括一个或多个用于客户端处理器的完成队列,这些完成队列对于存储装置是通过架构可见的。在本发明的一个实施例中,用于客户端处理器的提交队列被用于向客户端处理器发送命令(例如,读取请求、发送请求)。在本发明的一个实施例中,用于客户端处理器的完成队列被用于发信号通知(signal)客户端处理器由客户端处理器发布给另一个实体的命令已经被完成。本发明的实施例可使用其他通知机制(notificationmechanism)实现而不脱离本发明的范围。
在本发明的一个实施例中,客户端交换机(116)仅仅包括一个单个的交换机。在本发明的另一个实施例中,客户端交换机(116)包括数个互联的交换机。如果客户端交换机(116)包括数个交换机,那么每一个交换机可以与每一个其他交换机连接,可以与交换机架构的交换机子集连接,或者仅仅连接至一个其他的交换机。在本发明的一个实施例中,客户端交换机(116)中的每一个交换机是硬件和逻辑的组合(比如可以使用集成电路来实现),(如由(多个)协议所定义的,交换机架构执行)该组合被配置成允许数据和消息在客户端(110)和存储装置(未示出)之间传送。
在本发明的一个实施例中,当客户端(100A、100M)执行一个或多个下述协议:PCI、PCIe或者PCI-X时,客户端交换机(116)是PCI交换机。
在这些实施例中,客户端交换机(116)包括数个端口,每一个端口可被配置成透明桥或非透明桥。实现为透明桥的端口允许根组件继续发现(直接或者间接)连接至该端口的设备(可以是其他根组件、交换机、PCI桥或者端点)。相比之下,当根组件遇到被实现为非透明桥的端口时,根组件不能继续发现连接至该端口的设备,进而,根组件将这种端口作为端点处理。
当端口被实现为非透明桥时,位于非透明桥任意一侧的设备可仅使用电子邮箱系统和(由客户端交换机实现的)门铃中断(doorbellinterrupt)进行通信。门铃中断允许位于非透明桥一侧的处理器向位于非透明桥另一侧的处理器发布中断。此外,电子邮箱系统包括一个或多个可供交换机架构任一侧的处理器读或者写的寄存器。前述的寄存器使得位于客户端交换机任一侧的处理器能跨越非透明桥而传送控制和状态信息。
在本发明的一实施例中,为了从非透明桥一侧的一个设备发送PCI交换(transaction)至非透明桥另一侧的一个设备,PCI交换必须被寻址至实现该非透明桥的端口。在接收到PCI交换之后,客户端交换机执行地址翻译(使用直接地址翻译机制或者基于查找表的翻译机制)。获得的地址接下来被用于将分组路由至非透明桥另一侧的合适的设备。
在本发明的一个实施例中,客户端交换机(116)被配置以使得客户端存储器(114)的至少一部分能够由存储装置直接存取。换句话说,在客户端交换机一侧的存储装置可经由客户端交换机直接存取客户端交换机另一侧的客户端存储器。
在本发明的一个实施例中,客户端交换机(116)包括DMA引擎(118)。在本发明的一个实施例中,DMA引擎(118)可由连接至客户端交换机的客户端处理器或者存储装置编程。如上面所讨论的,客户端交换机(116)被配置以使得客户端存储器(114)的至少一部分能够由存储装置或者存储模块直接存取。因此,DMA引擎(118)可被编程以从客户端存储器中能够由存储装置存取的那部分中的地址读取数据,以及直接将上述数据的副本写入存储装置或者存储模块的存储器中。此外,DMA引擎(118)可被编程以从存储装置中读取数据并将上述数据的副本直接写入客户端存储器中能够由存储装置存取的那部分中的地址。
在本发明的一实施例中,DMA引擎(118)支持组播。在这些实施例中,存储装置中的处理器(参考图2A)可创建组播组,其中组播组中的每一个成员对应存储装置的存储器中的唯一目的地地址。组播组中的每一个成员与一个描述符相关联,该描述符指定:(i)目的地地址;(ii)源地址;(iii)传送尺寸字段;以及(iv)控制字段。用于每一个描述符的源地址保持不变,而用于每一个描述符的目的地地址是变化的。一旦创建组播组,任何通过交换机且以组播组地址为目标的数据传送,包括由DMA引擎发起的传送,将数据的一致副本置于所有与组播组相关联的目的地端口。在本发明的一个实施例中,交换机并行处理所有的组播组描述符。
继续讨论图1D,本领域的技术人员将会意识到虽然图1D示出了位于客户端(110)内的客户端交换机(116),客户端交换机(116)可位于该客户端之外,这并不脱离本发明的范围。此外,本领域的技术人员将会意识到DMA引擎(118)可位于客户端交换机(116)之外,这也不脱离本发明的范围。
参考图1E,图1E示出了一个系统,其中客户端(100A、100M)经由客户端交换机(108)连接到数个被布置成网格组态(在图1E中被标记为存储装置网格(104))的存储装置(104A、104B、104C、104D)。在图1E所示的实施例中,每一个客户端(100A、100M)并不包括其自己的客户端交换机,相反,所有的客户端共享一个客户端交换机(108)。如图1E所示,存储装置网格(104)被示为全连接网格组态,也就是说,存储装置网格(104)中的每一个存储装置(104A、104B、104C、104D)直接连接至存储装置网格(104)中的每一个其他存储装置(104A、104B、104C、104D)。在本发明的一个实施例中,客户端交换机(108)可直接连接至存储装置网格(104)中的一个或多个存储装置(104A、104B、104C、104D)。本领域的技术人员将会意识到存储装置网格可以采用其他网格组态(例如,部分连接组态)实现而不脱离本发明的范围。
尽管在图1E中没有示出,每一个客户端可包括其自己的客户端交换机(如在图1D中示出的),但客户端交换机可使用交换机架构(下面会定义)而连接至存储装置网格(104)。
本领域的技术人员将会意识到虽然图1A-1E所示的存储装置连接至有限数量的客户端,存储装置可以连接至任意数量的客户端而并不脱离本发明的范围。本领域的技术人员将会意识到图1A-1E示出了不同的系统组态,本发明并不被局限于前述的系统组态中。此外,本领域的技术人员将会意识到客户端(不考虑系统的组态)可使用交换机架构(没有示出)被连接至存储装置(下面会进行描述)而不脱离本发明的范围。
图2A-2D示出了根据本发明的一个或多个实施例的多个存储装置的实施例。参考图2A,存储装置包括控制模块(200)和存储模块组(202)。这些组件中的每一个将在下面被描述。总体而言,控制模块(200)被配置成管理来自一个或多个客户端的读取和写入请求的服务。具体而言,控制模块被配置成通过IOM(下面会讨论)从一个或多个客户端接收请求,处理该请求(可包括将该请求发送至存储模块),并在请求被服务后向客户端提供响应。关于控制模块中的组件的其他细节包括在下面的描述中。此外,控制模块关于读取和写入请求的服务的操作将在下面结合附图4A-7C进行描述。
继续对于图2A的讨论,在本发明的一个实施例中,控制模块(200)包括输入/输出模块(IOM)(204)、交换机架构(206)、处理器(208)、存储器(210)以及,可选的,现场可编程门阵列(FPGA)(212)。在本发明的一个实施例中,IOM(204)是客户端(图1A-1E中的100A、100M)和存储装置中的其他组件之间的物理接口(physicalinterface)。IOM支持一个或者多个下述协议:PCI、PCIe、PCI-X、以太网(包括但不限于,由IEEE802.3a-802.3bj所定义的各种标准)、无限带宽(Infiniband)、融合以太网上的远程直接存储器存取(RDMA)(RoCE)。本领域的技术人员将会意识到IOM可以使用上述所列的协议之外的协议实现而不脱离本发明的范围。
继续对于图2A的讨论,交换机架构(206)仅包括单个的交换机。在本发明的另一个实施例中,交换机架构(206)包括数个互联的交换机。如果交换机架构(206)包括多个交换机,那么每一个交换机可以连接至每一个其他交换机,可以连接至交换机架构的交换机子集,或者可以仅仅连接至交换机架构中的另一个交换机。在本发明的一个实施例中,交换机架构(206)中的每一个交换机是硬件和逻辑的组合(比如可以使用集成电路来实现),(如由(多个)协议所定义的,交换机架构执行)该组合被配置成将存储装置中的各个组件连接在一起并在各个连接的组件之间(使用该逻辑)路由分组。在本发明的一个实施例中,交换机架构(206)是物理连接至IOM(204)、处理器(208)、存储模块组(202)以及,如果存在的话,FPGA(212)。在本发明的一个实施例中,控制模块(200)中的所有组件间(inter-component)通信(除了处理器(208)和存储器(210)之间的通信)都通过交换机架构(206)。此外,控制模块(200)和存储模块组(202)之间的所有通信都通过交换机架构(206)。在本发明的一个实施例中,交换机架构(206)是使用PCI协议(例如,PCI、PCIe、PCI-X或者另一个PCI协议)实现。在这些实施例中,所有通过交换机架构(206)的通信使用所对应的PCI协议。
在本发明的一个实施例中,如果交换机架构实现PCI协议,则交换机架构(206)包括用于处理器的端口(或者,更具体地说,用于集成在处理器(208)中的根组件或者用于连接至处理器的根组件的端口)、一个或多个用于存储模块组(202)中的存储模块(214A、214N)(参考图3)的端口、用于FPGA(212)(如果存在的话)的端口以及用于IOM(204)的端口。在本发明的一个或多个实施例中,每一个上述的端口可被配置为透明桥或者非透明桥(如上面讨论的)。本领域的技术人员将会意识到虽然交换机架构(206)是关于PCI实现而描述,交换机架构(206)可以使用其他协议实现而不脱离本发明的范围。
在本发明的一个实施例中,交换机架构(206)中的至少一个交换机被配置为实现组播。更具体地说,在本发明的一个实施例中,处理器(208)被配置为产生组播组,其中组播组包括两个或多个成员,每一个成员指定存储器(210)和/或存储模块(214A、214N)中的地址。当组播组被创建时,组播组与一组播地址相关。为了实现组播,交换机架构中的至少一个交换机被配置成:当接收到指定组播地址作为目的地地址的写入时,交换机被配置成为组播组中的每一个成员产生新的写入,并将这些写入发布至存储装置中适当的地址。在本发明的一个实施例中,用于由交换机产生的每一个写入的地址是通过在组播地址上增加特定的偏移而确定。
继续对于图2A的讨论,处理器(208)是被配置成执行指令的具有单个核心或者多个核心的一组电子电路。在本发明的一个实施例中,处理器(208)可使用复杂指令集(CISC)架构或精简指令集(RISC)架构实现。在本发明的一个或多个实施例中,处理器(208)包括(由PCIe协议定义的)根组件。在本发明的一个实施例中,如果控制模块(200)包括根组件(根组件可被集成在处理器(208)中),那么存储器(210)经由根组件连接至处理器(208)。或者,存储器(210)使用其他点对点连接机制直接连接至处理器(208)。在本发明的一个实施例中,存储器(210)对应于任何易失存储器,包括但不限于,动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、单数据速率同步动态随机存取存储器(SDRSDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)。
在本发明的一个实施例中,处理器(208)被配置成创建并更新存储器内(in-memory)数据结构(未示出),其中存储器内数据结构存储在存储器(210)中。在本发明的一个实施例中,存储器内数据结构包括在存储模块的集合中在逻辑地址和物理地址之间(直接或者间接)的映射。在本发明的一个实施例中,逻辑地址是从客户端的角度展现的数据所驻留的地址。在本发明的一个实施例中,逻辑地址是(或者包括)对n元组(n-tuple)应用散列(hash)函数(例如,SHA-1、MD-5等等)而产生的散列值。在本发明的一个实施例中,n元组是<对象ID,偏移>(<objectID,offset>),其中对象ID定义文件而偏移定义相对于该文件的起始地址的位置。在本发明的另一个实施例中,n元组是<对象ID,偏移,出生时间>(<objectID,offset,birthtime>),其中出生时间对应于(使用对象ID标识)文件被创建的时间。或者,逻辑地址可包括逻辑对象ID和逻辑字节(byte)地址,或者逻辑对象ID和逻辑地址偏移。在本发明的另一个实施例中,逻辑地址包括对象ID和偏移。本领域的技术人员将会意识到多个逻辑地址可被映射到单个的物理地址,因此逻辑地址并不被限制于上述的实施例。
在本发明的一个实施例中,物理地址可对应于(i)存储器(210)中的位置、(ii)弯曲存储器(vaultedmemory)(例如图3中的324)中的位置、(iii)固态存储器模块(例如图3中的330A)中的位置。在本发明的一个实施例中,如果在存储装置中存在数据的多个副本,则存储器内数据结构可将单个的散列值映射到多个物理地址。
在本发明的一个实施例中,存储器(210)包括下述中的一个或多个:用于处理器的提交队列、用于处理器的完成队列、用于存储装置中的每一个存储模块的提交队列和用于存储装置中的每一个存储模块的完成队列。在本发明的一个实施例中,用于处理器的提交队列被用于向处理器发送命令(例如,读取请求、写入请求)。在本发明的一个实施例中,用于处理器的完成队列被用于发信号通知(signal)处理器由处理器发布给另一个实体的命令已经被完成。用于存储模块的提交和完成队列以类似的方式运作。
在本发明的一个实施例中,(经由交换机架构)处理器被配置为将各种类型的处理卸载(offload)至FPGA(212)。在本发明的一个实施例中,FPGA(212)包括为正写入至存储模块和/或正从存储模块中读取的数据计算校验和的功能。此外,为了使用RAID方案(例如RAID2-RAID6)将数据存储在存储模块中,FPGA(212)可包括计算P和/或Q奇偶校验信息的功能,和/或,FPGA(212)还可包括执行各种计算的功能,这些计算是恢复采用RAID方案(例如RAID2-RAID6)保存但被损坏的数据所需要的。在本发明的一个实施例中,存储模块组(202)包括一个或多个存储模块(214A、214N),每一个存储模块被配置成存储数据。存储模块在下面的图3中描述。
在本发明的一个实施例中,处理器(208)被配置成对系统中的一个或多个DMA引擎编程。例如,处理器(208)被配置成对客户端交换机(参见图1D)中的DMA引擎编程。处理器(208)也可被配置成对存储模块(参考图3)中的DMA引擎编程。在本发明的一个实施例中,对客户端交换机中的DMA引擎编程可包括创建组播组和产生用于组播组中的每一个成员的描述符。
转到图2B,图2B示出了按照本发明的一个或多个实施例的存储装置。该存储装置包括控制模块(216)和至少两个存储模块组(236、238)。控制模块(216)包括交换机架构(234),交换机架构直接连接至IOMA(218)、IOMB(220)、处理器A(222)、处理器B(224)、FPGAA(230)(如果存在的话)、FPGAB(232)(如果存在的话)、存储模块组A(236)中的存储模块(236A、236N)和存储模块组B(238)中的存储模块(238A、238N)。所有上述组件之间的通信(除了处理器A(222)和处理器B(224)之间的通信)都通过交换机架构(234)。在本发明的一个实施例中,控制模块(216)内的处理器(222、224)能够使用诸如快速通道互联(QuickPathInterconnect)的点对点互联直接通信。本领域的技术人员将会意识到其他点对点通信机制可被用于允许处理器(222、224)之间的直接通信而不脱离本发明的范围。
继续参考图2B,在本发明的一个实施例中,控制模块(216)与图2A中的控制模块(200)基本上相似。在本发明的一个实施例中,交换机架构(234)与图2A中的交换机架构(206)基本上相似。在本发明的一个实施例中,每一个处理器(222、224)与图2A中的处理器(208)基本上相似。在本发明的一个实施例中,存储器(226、228)与图2A中的存储器(210)基本上相似。在本发明的一个实施例中,IOM(218、220)与图2A中的IOM(204)基本上相似。在本发明的一个实施例中,FPGA(230、232)与图2A中的FPGA(212)基本上相似。最后,存储模块组(236、238)与图2A中的存储模块组(202)基本上相似。
在本发明的一个实施例中,控制模块(216)中的两个IOM(218、220)使得用于控制模块(216)的I/O带宽(相对于具有单个IOM的控制模块的I/O带宽)加倍。此外,添加第二IOM(或者额外的IOM)增加了可连接至给定的控制模块的客户端的数量,以及,通过扩展,增加了可连接至存储装置的客户端的数量。在本发明的一个实施例中,使用交换机架构(234)来处理各个相连接的组件之间的通信(如上面所描述的)允许每一个处理器(222、224)(经由交换机架构(234))直接存取连接至该交换机架构(234)的所有的FPGA(230、232)和所有的存储模块(236A、236N、238A、238N)。
参考图2C,图2C示出了一存储装置,该存储装置包括(通过交换机架构(246))连接至存储模块组(256、258、260、262)中的多个存储模块(未示出)的控制模块(240)。如图2C所示,存储模块(240)包括两个IOM(242、244)、两个处理器(248、250)和存储器(252、254)。在本发明的一个实施例中,控制模块(240)中的所有组件经由交换机架构(246)通信。此外,处理器(248、250)可使用交换机架构(246)或者直接连接(如图2C所示)而与彼此通信。在本发明的一个实施例中,控制模块(240)中的处理器(248、250)可使用诸如快速通道互联(QuickPathInterconnect)的点对点互联直接通信。本领域的技术人员将会意识到其他点对点通信机制可被用于处理器(248、250)之间的直接通信而不脱离本发明的范围。
在本发明的一个实施例中,处理器A(248)被配置成主要处理涉及存储模块组A和B(256、258)的存储和提取(retrieval)数据的请求,而处理器B(250)被配置成主要处理涉及存储模块组C和D(260、262)的存储和提取(retrieval)数据的请求。然而,处理器(248、250)被配置成(经由交换机架构(246))与所有的存储模块组(256、258、260、262)通信。这种组态使得控制模块(240)能够扩展处理之间的I/O请求的处理,和/或,提供内置的冗余度来处置其中一个处理器失效的情况。
继续参考图2C,在本发明的一个实施例中,控制模块(240)基本上与图2A中的控制模块(200)相似。在本发明的一个实施例中,交换机架构(246)基本上与图2A中的交换机架构(206)相似。在本发明的一个实施例中,每一个处理器(248、250)基本上与图2A中的处理器(208)相似。在本发明的一个实施例中,存储器(252、254)基本上与图2A中的存储器(210)相似。在本发明的一个实施例中,IOM(242、244)基本上与图2A中的IOM(204)相似。最后,存储模块组(256、258、260、262)基本上与图2A中的存储模块组(202)相似。
参考图2D,图2D示出了包括两个控制模块(264、266)的存储装置。每一个控制模块包括IOM(296、298、300、302)、处理器(268、270、272、274)、存储器(276、278、280、282)和(如果存在的话)FPGA(288、290、292、294)。每一个存储模块(264、266)包括交换机架构(284、286),控制模块内的部件经由交换机架构通信。
在本发明的一个实施例中,控制模块中的多个处理器(268、270、272、274)可使用诸如快速通道互联(QuickPathInterconnect)的点对点互联直接彼此通信。本领域的技术人员将会意识到其他点对点通信机制可被用于允许多个处理器(268、270、272、274)之间的直接通信而不脱离本发明的范围。此外,控制模块A中的处理器(268、270)可经由与控制模块B中的交换机架构(286)的直接连接而与控制模块B中的组件通信。类似的,控制模块B中的处理器(272、274)可经由与控制模块A中的交换机架构(284)的直接连接而与控制模块A中的组件通信。
在本发明的一个实施例中,每一个控制模块连接至(被标记为存储模块组(304、306、308、310)的)各个存储模块。如图2D所示,每一个控制模块可与连接至控制模块中的交换机架构的存储模块通信。此外,控制模块A(264)中的处理器可使用交换机架构B(286)与连接至控制模块B(266)的存储模块通信。类似的,控制模块B(266)中的处理器可使用交换机架构A(284)与连接至控制模块A(264)的存储模块通信。
控制模块之间的互联允许存储控制在整个存储装置上分配I/O负载而不需要考虑是哪一个控制模块接收了该I/O请求。此外,控制模块的互联使得存储装置能够处理更大数量的I/O请求。更进一步,控制模块的互联提供在一个控制模块(或者其中的一个或多个组件)失效的情况下内置的冗余度。
参考图2B-2D,在本发明的一个或多个实施例中,存储器内(in-memory)数据结构跨控制模块中的存储器被镜像。在这种情况下,控制模块中的处理器发布所必要的命令来更新存储装置中的所有存储器,使得存储器内数据结构跨所有的存储器被镜像。在这种方式中,任何处理器可使用其自己的存储器来确定存储装置中数据的位置(如上面所讨论的,由n元组定义)。这个功能允许任何存储器服务于任何关于存储模块中数据的位置的I/O请求。此外,通过镜像存储器内数据结构,存储装置可在其中一个存储器失效时继续进行运行。
本领域的技术人员将会意识到虽然图2A-2D所示的存储模块连接至有限数量的存储模块,该存储模块可连接至任意数量的存储模块而不脱离本发明的范围。本领域的技术人员将会意识到虽然图2A-2D示出了存储装置的不同组态,存储装置可使用其他组态实现而不脱离本发明的范围。
图3示出了根据本发明的一个或多个实施例的存储模块。存储模块(320)包括存储模块控制器(322)、存储器(324)以及一个或多个固态存储器模块(330A、330N)。这些组件中的每一个将在下面被描述。
在本发明的一个实施例中,存储模块控制器(322)被配置成接收多个请求,这些请求从一个或多个控制模块读取数据和/或向一个或多个控制模块写入数据。此外,存储模块控制器(322)被配置成是使用存储器(324)和/或固态存储器模块(330A、330N)来服务于多个读取请求和写入请求。尽管在图3中没有示出,存储模块控制器(322)可包括DMA引擎,其中DMA引擎被配置成从存储器(324)或者从其中一个固态存储器模块(330A、330N)读取数据,并将数据的副本写入客户端存储器(图1D中的114)中的物理地址。此外,DMA引擎可被配置成将数据从存储器(324)写入到一个或多个固态存储器模块。在本发明的一个实施例中,DMA引擎被配置成由处理器(例如图2A中的208)编程。本领域的技术人员将会意识到存储模块可包括位于该存储模块之外的DMA引擎而不脱离本发明的范围。
在本发明的一个实施例中,存储器(324)对应于任何易失存储器,包括但不限于,动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、单数据速率同步动态随机存取存储器(SDRSDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)。
在本发明的一个实施例中,存储器(324)可被逻辑上或者物理上划分成弯曲存储器(vaultedmemory)(326)和高速缓存(328)。在本发明的一个实施例中,存储模块控制器(322)被配置成在被通知存储模块中的电源失效(或者在另一种存储模块可能失电)的情况下,将弯曲存储器(326)中的全部内容写入到一个或多个固态存储器模块(330A、330N)中。在本发明的一个实施例中,存储模块控制器(322)被配置成在被通知电源失效的时间和存储模块实际失电的时间之间将弯曲存储器(326)中的全部内容写入到一个或多个固态存储器模块(330A、330N)中。相反,高速缓存(328)中的内容在电源失效(或者在另一种存储模块可能失电)的情况下会丢失。
在本发明的一个实施例中,固态存储器模块对应于任何使用固态存储器来存储永久数据的数据存储设备。在本发明的一个实施例中,固态存储器可包括但不限于,NAND闪存(NANDflash)存储器、NOR闪存(NORflash)存储器、磁随机存取(M-RAM)存储器、自旋磁随机存取(ST-MRAM)存储器、相变存储器(PCM)、忆阻内存(memrisitivememory)或者任何其他被定义为非易失性存储级存储器(SCM)的存储器。本领域的技术人员将会意识到本发明的实施例并不限制于存储级存储器。
在本发明的一个实施例中,下述的存储位置是统一地址空间的一部分:(i)经由客户端交换机可存取的客户端存储器的部分、(ii)控制模块的存储器、(iii)存储模块中的存储器以及(iv)固态存储器模块。因此,从存储装置中的处理器的角度看,上述的存储位置(在物理上是分离的)表现为物理地址的单一池(singlepool)。换句话说,处理器可以对存储在该统一地址空间中的任何物理地址的数据发布读取和/或写入请求。上述的存储位置可被称为是使用统一地址空间可存取的存储架构(storagefabric)。
在本发明的一个实施例中,统一地址空间部分地(inpart)是通过客户端交换机中的非透明桥创建,非透明桥允许控制模块中的处理器“看见”客户端存储器的一部分。因此,控制模块中的处理器在其能够“看见”的客户端存储器的部分中执行读取和/或写入请求。
图4A-4B示出了根据本发明的一个或多个实施例的多个流程图。更具体地,图4A-4B示出了根据本发明的一个或多个实施例的用于在存储装置中存储数据的方法。虽然流程图中的各个步骤被展示并描述为按顺序的,本领域的技术人员将会意识到一些步骤或者全部的步骤可以以不同的顺序执行、可被组合或者省略,以及一些或者全部的步骤可被并行执行。在本发明的一个实施例中,图4A中所示的步骤与图4B中所示的步骤可被并行执行。
参考图4A,在步骤400,客户端向控制模块中的处理器(图2A中的208)的提交队列(SQ)写入一写入命令(写入请求)。在本发明的一个实施例中,写入命令指定客户端存储器中数据的逻辑地址(也可以被称为是“源地址”)。在本发明的一个实施例中,写入命令在达到处理器的提交队列(SQ)之前通过至少客户端交换机和交换机架构。
在步骤402,客户端向提交队列尾部门铃寄存器(SQTaildoorbellregister)写入新的提交队列尾部(SQTail)。在本发明的一个实施例中,通过向提交队列尾部门铃寄存器进行写入,客户端通知处理器在其提交队列中有新的命令需要处理。
在步骤404,处理器从提交队列获得该写入命令。在步骤406,处理器确定将要写入该数据的物理地址。在本发明的一个实施例中,物理地址对应于固态存储器模块中的位置。在本发明的一个实施例中,处理器选择两个将要写入该数据的副本的物理地址,其中每一个物理地址是位于分开的固态存储器模块中。
在步骤408,处理器对DMA引擎编程以向组播地址发布写入。在本发明的一个实施例中,组播地址与组播组相关,其中组播组指定控制模块的存储器中的第一存储位置、第一弯曲存储器中的第二存储位置以及第二弯曲存储器中的第三存储位置。在本发明的一个实施例中,第一弯曲存储器与包括由处理器指定的物理地址的固态存储器模块是位于同一个存储模块中。在本发明的一个实施例中,第二从固态存储器以相似的方式确定。在本发明的一个实施例中,为每一个在步骤406中由处理器确定的物理地址选择一个弯曲存储器位置。
在步骤410,DMA引擎从客户端存储器中的源地址读取用户数据,并将该数据写入由控制模块所指向的组播地址。在本发明的一个实施例中,交换机架构中的交换机与组播地址相关。在接收到该地址后,交换机对组播地址执行必要的翻译以获得三个地址—每一个对应一个上述的存储器位置。交换机然后将用户数据的副本发送至三个存储器位置。本领域的技术人员将会意识到执行组播的特定交换机可以根据交换机架构的实现而变化。在该实施例中,在客户端与存储装置之间仅有一个写入被发布。
在本发明的另一个实施例中,在步骤408,处理器对DMA引擎编程以并行发布三个写入请求—每一个对应一个上述的存储器位置。在该实施例中,在步骤410,DMA引擎并行发布该三个写入请求。在该实施例中,在客户端和存储装置之间有三个写入被发布。
继续参考图4A,在步骤412,处理器更新存储器内数据结构以反映该数据的三个副本被存储在存储装置中。在步骤414,处理器将(标识处理器的提交队列的)提交队列标识符(SQIdentifier)和(标识由客户端发布给处理器的具体写入命令的)写入命令标识符(WriteCommandIdentifer)写入客户端的完成队列(CQ)。
在步骤416,处理器为客户端处理器产生中断。在本发明的一个实施例中,处理器使用由非透明桥提供的门铃中断来向客户端处理器发布中断。在步骤418,客户端处理其完成队列(CQ)中的数据。在这一阶段,客户端被通知写入请求已经被处理(serviced)。在步骤420,一旦客户端处理完成处于完成队列头部的数据时,客户端向完成队列(CQ)头部门铃写入新的完成队列(CQ)头部。这对于处理器来说,表示在完成队列中用于未来提供给客户端的通知的下一个位置。
参考图4B,在步骤422,控制模块中的处理器开始从弯曲存储器向在步骤406中标识的物理地址写入数据。在本发明的一个实施例中,控制模块中的处理器对存储模块控制器中的DMA引擎编程,以从弯曲存储器中读取数据并将数据的副本写入固态存储器模块中的物理地址。
在步骤424,延续步骤422,控制模块中的处理器请求弯曲存储器中对应于在步骤422中被写入至固定存储器模块的数据的所有副本被移除。在步骤426,对于移除的确认由每一个在它们各自的弯曲存储器中包括(在步骤410被写入的)数据的副本的存储模块发送至控制模块中的处理器。
图5A-5C示出了在根据本发明的一个或多个实施例的存储装置中存储数据的示例。该示例并不意图限制发明的范围。此外,为了清楚的目的,在图5A-5C中客户端和存储装置中的各个部件被省略。
转到图5A,考虑客户端(500)发布请求以将(由黑色圈所标记)的数据写入存储装置的情况。响应于该请求,控制模块(504)中的处理器(514)确定数据的第一副本应当被写入存储模块A(518)中的固态存储器模块A(526)中的第一物理位置,而数据的第二副本应当被写入存储模块B(520)中的固态存储器模块B(528)中的第二物理位置。
根据该判断,处理器(514)创建具有三个成员的组播组。第一成员具有弯曲存储器A(522)中的目的地地址,第二成员具有弯曲存储器B(524)中的目的地地址,而第三成员具有存储器(512)中的目的地地址。处理器(514)之后对交换机架构(516)中的交换机(未示出)编程以实现该组播组。
DMA引擎继续向与组播组相关联的组播地址发布写入。该写入被发送至交换机架构并最终抵达实现组播组的交换机(未示出)。交换机然后创建三个写入(每一个写入对应一个由该组播组指定的目标)并将写入发布至目标存储位置。在本发明的一个实施例中,三个写入是并行发生的。
将在不同的目的地地址被写入的数据的副本通过交换机架构(516)。一旦写入完成,在存储装置中有数据的三个副本。一旦写入完成,存储器(512)中的存储器内数据结构(未示出)被更新以反映该数据在存储装置内的三个位置被存储。此外,客户端(500)被通知写入已完成。
参考图5B,在晚一些的时间点上,处理器(514)向存储模块A(518)发布请求将弯曲存储器A(522)中当前的数据的副本写入固态存储器模块A(526)的物理地址。响应于该请求,存储模块控制器(未示出)将弯曲存储器A(522)中的数据的副本写入固态存储器模块A(526)。处理器(514)在写入完成时被通知。处理器(514)可在从存储模块A(518)接收到该通知时更新存储器内数据结构。
此外,独立于存储装置的运行,客户端(500)可从客户端存储器(508)移除(已经被写入至存储装置的)数据。
参考图5C,一旦数据的副本已被写入固态存储器模块A,处理器(514)向所有在弯曲存储器中包括数据的副本的存储模块发布请求,要求从它们各自的弯曲存储器中移除数据的副本。在完成该请求后,各存储模块各自通知控制模块。图5C示出了在所有的存储模块完成该请求后系统的状态。处理器(514)可在从存储模块接收到弯曲存储器内所有数据的副本被移除的通知后更新存储器内数据结构。
图6示出了根据本发明的一个或多个实施例的流程图。更具体地,图6示出了根据本发明的一个或多个实施例的从存储装置中读取数据的方法。虽然流程图中的各个步骤被展示并描述为按顺序的,本领域的技术人员将会意识到一些步骤或者全部的步骤可以以不同的顺序执行、可被组合或者省略,以及一些或者全部的步骤可被并行执行。
在步骤600,客户端向控制模块中的处理器的提交队列(SQ)写入读取命令(读取请求)。在本发明的一个实施例中,读取命令包括逻辑地址。如上面所讨论的,逻辑地址的内容可根据实现方式而变化。
在步骤602,客户端向提交队列尾部门铃寄存器(SQTaildoorbellregister)写入新的提交队列尾部(SQTail)。在本发明的一个实施例中,通过对提交队列尾部门铃寄存器的写入,客户端通知处理器在其提交队列中有新的命令要处理。在步骤604,处理器从提交队列(SQ)获取读取命令。在步骤606,处理器基于逻辑地址确定存储器内数据结构中的物理地址的位置。
在步骤608,处理器从在步骤606确定的位置获取物理地址。在本发明的一个实施例中,物理地址对应于存储装置中的数据的一个或多个位置。例如,数据的位置可以包括下述中的一个或多个:处理器的存储器中的位置、存储模块的存储器中的位置和/或固态存储器模块中的位置。
在本发明的一个变化实施例中,如果存储器中数据结构包括逻辑地址至物理地址的直接映射,则步骤606和608可被合并成单个的查找,在该单个的查找中逻辑地址被用于直接获取物理地址。
在步骤610,做出其中一个数据位置是否在控制模块的存储器中的决定(determination)。如果其中一个数据位置是在控制模块的存储器中,该过程继续至步骤622;否则,该过程继续至步骤612。在本发明的一个实施例中,在存储装置中有数据的多个副本的情况下,数据优先从控制模块的存储器中读取。如果该数据在控制模块的存储器中不存在,数据优先从弯曲存储器(如果存在弯曲存储器的话)中读取,之后从固态存储器模块(如果数据的副本在弯曲存储器中不存在)中读取。
在步骤612,处理器向存储模块的提交队列(SQ)写入读取物理数据命令(ReadPhysicalDataCommand)。
在步骤614,存储模块将数据从固态存储器模块中的物理位置传送到存储模块存储器(例如图3中的324),发起从存储模块存储器到客户端存储器的数据的DMA传送,并在DMA完成之后,向处理器的完成队列(CQ)写入读取命令完成。在本发明的一个实施例中,如果所请求的物理位置是在弯曲存储器中,则存储模块不需要将数据从固态存储器模块中的物理位置传送至存储模块存储器。
在本发明的一个实施例中,DMA引擎位于数据所处的存储模块的存储模块控制器中。在本发明的一个实施例中,DMA引擎被配置成向客户端交换机发送数据的副本。客户端交换机收到后,客户端交换机执行必要的映射(或者翻译)以标识客户端存储器中的适当的位置。该数据的副本然后被写入客户端存储器中所标识的位置。
在步骤616中,存储模块为处理器产生中断。在步骤618,处理器处理其完成队列(CQ)中的数据。在这个阶段,处理器已经被通知读取请求已经被服务。在步骤620,一旦处理器处理完位于完成队列头部的数据,客户端向完成队列头部门铃(CQheaddoorbell)写入新的完成队列头部(CQhead)。对于存储模块来说,这表示在完成队列中用于未来提供给处理器的通知的下一个位置。该过程然后继续至步骤624。
在步骤622,处理器对(可位于存储装置或者客户端交换机中的)DMA引擎编程以从控制模块的存储器中读取数据并将数据的副本写入可经由非透明桥存取的客户端存储器中的位置。DMA引擎然后从控制模块中的存储器读取数据并将数据的副本写入客户端存储器。
在步骤624,处理器向客户端的完成队列(CQ)写入(确定处理器的提交队列(SQ))的提交队列标识符(SQIdentifier)和(确定客户端发布给处理器的具体读取命令)的读取命令标识符(ReadCommandIdentifier)。在步骤626,处理器为客户端处理器产生中断。在本发明的一个实施例中,处理器使用由非透明桥提供的门铃中断来向客户端处理器发布中断。在步骤628,客户端在其完成队列(CQ)中处理数据。在这个阶段,客户端已经被通知该读取请求已经被服务。在步骤630,一旦客户端处理完位于完成队列头部的数据,客户端向完成队列头部门铃(CQheaddoorbell)写入新的完成队列头部(CQhead)。对于处理器来说,这表示在完成队列中用于未来提供给客户端的通知的下一个位置。
图7A-7C示出了从根据本发明的一个或多个实施例的存储装置中读取数据的多个示例。这些示例并不意图限制本发明的范围。
参考图7A,考虑客户端(500)发布从存储装置读取(用黑色圈表示的)数据的请求的情况。响应于该请求,控制模块(504)中的处理器(514)确定数据的第一副本是位于存储器(512)中而数据的第二副本是位于固态存储器模块B(528)中。根据该确定,处理器(514)对DMA引擎(为示出)编程以从存储器(512)读取数据并将数据的副本写入客户端存储器(508)中的物理地址。当被编程后,DMA引擎从存储器(512)读取数据并向客户端存储器(508)发布写入。当将要被写入的数据的副本抵达客户端交换机(502)时,客户端交换机将DMA引擎提供的目的地地址映射(或翻译)成客户端存储器(508)中的地址。数据的副本然后被写入到客户端存储器(508)中由客户端交换机(502)所确定的地址。在这个示例中,DMA引擎可位于客户端交换机(502)中。
参考图7B,考虑客户端(500)发布从存储装置读取(用黑色圈表示的)数据的请求的情况。响应于该请求,控制模块(504)中的处理器(514)确定数据的副本是位于固态存储器模块B(528)中。根据该确定,处理器发起从固态存储器模块B(528)至可由DMA引擎(未示出)存取的存储器(例如弯曲存储器B(524))的数据传送,接下来对DMA引擎编程以从该存储位置读取数据并将数据的副本写入客户端存储器(508)中被请求的位置。当将要被写入的数据的副本抵达客户端交换机(502)时,客户端交换机将DMA引擎提供的目的地地址映射(或翻译)成客户端存储器(508)中的地址。该数据的副本然后被写入到客户端存储器(508)中由客户端交换机(502)所确定的地址。在这个示例中,DMA引擎可位于存储模块B(520)中。
参考图7C,考虑客户端(500)发布从存储装置读取(用黑色圈表示的)数据的请求的情况。响应于该请求,控制模块(504)中的处理器(514)确定数据的第一副本是位于弯曲存储器B(524)中而数据的第二副本是位于固态存储器模块B(528)中。根据该确定,处理器(514)对DMA引擎(未示出)进行编程以从弯曲存储器B(524)中读取数据并将数据的副本写入客户端存储器(508)的物理地址中。当被编程后,DMA引擎从弯曲存储器B(524)中读取数据并向客户端存储器(508)发布写入。当将要被写入的数据的副本抵达客户端交换机(502)时,客户端交换机将DMA引擎提供的目的地地址映射(或翻译)成客户端存储器(508)中的地址。数据的副本然后被写入到客户端存储器(508)中由客户端交换机(502)所确定的地址。在这个示例中,DMA引擎可位于存储模块B(520)中。
本发明的一个或多个实施例可使用由该系统中的一个或多个处理器执行的指令实现。此外,这些指令可对应于存储在一个或多个非暂时性的计算机可读介质上的计算机可读指令。
虽然本发明是结合有限数量的实施例被描述,本领域的技术人员,从本发明中受益后,将会意识到其他的实施例也能够被设计出而不脱离此处所揭示的发明的范围。因此,本发明的范围不应当仅被所附的权利要求所限制。

Claims (15)

1.一种用于写入数据的方法,包括
从客户端接收写入数据的请求,其中所述数据位于客户端存储器中;
由存储装置选择第一存储器中的第一位置以写入数据的第一副本、第二存储器中的第二位置以写入数据的第二副本,其中所述第一存储器是位于第一存储模块中,而所述第二存储器是位于第二存储模块中,其中,所述第一存储模块包括所述第一存储器和第一永久存储器,所述第二存储模块包括所述第二存储器和第二永久存储器,其中所述存储装置包括第一存储模块和第二存储模块;
在选择后:
由存储装置获取数据;
响应于对于数据的获取,产生第一请求以将第一副本写入所述第一位置,产生第二请求以将第二副本写入所述第二位置,以及产生第三请求以将第三副本写入第三位置,其中所述第三位置是位于存储装置的控制模块的第三存储器中;
其中数据的第一副本是响应于所述第一请求而被写入第一位置;
其中数据的第二副本是响应于所述第二请求而被写入第二位置;
其中数据的第三副本是响应于所述第三请求而被写入第三位置。
2.如权利要求1所述的方法,还包括:
在数据的第一副本被写入第一位置、数据的第二副本被写入第二位置以及数据的第三副本被写入第三位置后:
通知客户端写入数据的请求已经被完成。
3.如权利要求2所述的方法,还包括:
在通知客户端后:
将数据的第一副本写入所述第一永久存储器。
4.如权利要求3所述的方法,其中所述控制模块包括处理器,所述处理器发起向所述第一永久存储器写入数据的第一副本。
5.如权利要求1所述的方法,其中所述第一永久存储器包括固态存储器模块。
6.如权利要求5所述的方法,其中所述固态存储器模块包括数个NAND管芯。
7.如权利要求1所述的方法,其中所述第一存储器、所述第二存储器、所述第三存储器和所述客户端存储器的至少一部分是统一地址空间的一部分。
8.一种存储装置,包括:
第一存储模块,包括第一存储器和第一永久存储器;以及
第二存储模块,包括第二存储器和第二永久存储器;
控制模块,包括:
处理器,和
第三存储器;
其中所述控制模块被配置成:
从客户端接收写入数据的第一请求,其中所述数据位于客户端存储器中;
选择第一存储器中的第一位置以写入数据的第一副本并选择第二存储器中的第二位置以写入数据的第二副本;
在选择了第一位置、选择了第二位置并且存储装置从客户端获得了数据之后:
产生将数据的第一副本写入第一位置的第二请求、产生将数据的第二副本写入第二位置的第三请求以及产生将数据的第三副本写入第三存储器中的第三位置的第四请求;
其中第一存储模块被配置成,响应于所述第二请求将数据的第一副本存储在第一位置;
其中第二存储模块被配置成,响应于所述第三请求将数据的第二副本存储在第二位置;以及
其中,响应于第四请求,数据的第三副本被存储在第三位置。
9.如权利要求8所述的存储装置,其中控制模块进一步被配置成:
在数据的第一副本被写入第一位置、数据的第二副本被写入第二位置以及数据的第三副本被写入第三位置后:
通知客户端写入数据的请求已经被完成。
10.如权利要求9所述的存储装置,其中控制模块进一步被配置成:
在通知客户端后:
将数据的第一副本写入所述第一永久存储器。
11.如权利要求8所述的存储装置,其中第一存储器是弯曲存储器。
12.如权利要求8所述的存储装置,其中所述第一永久存储器包括固态存储器。
13.如权利要求8所述的存储装置,其中所述第一永久存储器包括NAND闪存。
14.如权利要求8所述的存储装置,其中所述第一存储器、所述第二存储器、所述第三存储器和所述客户端存储器的至少一部分是存储架构的一部分。
15.如权利要求14所述的存储装置,其中所述存储架构与统一地址空间相关联。
CN201380015061.9A 2012-03-23 2013-03-21 具有组播直接存储器存取和统一地址空间的存储系统 Active CN104272257B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/428,705 US8554963B1 (en) 2012-03-23 2012-03-23 Storage system with multicast DMA and unified address space
US13/428,705 2012-03-23
PCT/US2013/033277 WO2013142674A1 (en) 2012-03-23 2013-03-21 Storage system with multicast dma and unified address space

Publications (2)

Publication Number Publication Date
CN104272257A CN104272257A (zh) 2015-01-07
CN104272257B true CN104272257B (zh) 2016-06-22

Family

ID=47892429

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380015061.9A Active CN104272257B (zh) 2012-03-23 2013-03-21 具有组播直接存储器存取和统一地址空间的存储系统

Country Status (5)

Country Link
US (3) US8554963B1 (zh)
EP (1) EP2845098B1 (zh)
JP (1) JP6005835B2 (zh)
CN (1) CN104272257B (zh)
WO (1) WO2013142674A1 (zh)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
JP5299559B2 (ja) * 2010-03-19 2013-09-25 富士通株式会社 情報処理装置及び情報処理装置のデバイス情報収集処理方法
JP5838652B2 (ja) * 2011-08-23 2016-01-06 富士通株式会社 データコピー処理システム
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
WO2013140459A1 (en) * 2012-03-23 2013-09-26 Hitachi, Ltd. Method for accessing mirrored shared memories and storage subsystem using method for accessing mirrored shared memories
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9195578B2 (en) 2012-08-24 2015-11-24 International Business Machines Corporation Systems, methods and computer program products memory space management for storage class memory
US8938559B2 (en) * 2012-10-05 2015-01-20 National Instruments Corporation Isochronous data transfer between memory-mapped domains of a memory-mapped fabric
US9049265B1 (en) * 2012-12-26 2015-06-02 Google Inc. Serving remote access to storage resources
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9858084B2 (en) 2013-03-15 2018-01-02 Bitmicro Networks, Inc. Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9720603B1 (en) * 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
JP5695126B2 (ja) 2013-05-14 2015-04-01 株式会社日立製作所 計算機システム、サーバモジュール及びストレージモジュール
CN103946828B (zh) 2013-10-29 2017-02-22 华为技术有限公司 数据处理系统和数据处理的方法
WO2015068239A1 (ja) 2013-11-07 2015-05-14 株式会社日立製作所 計算機システムおよびデータ制御方法
US10248587B2 (en) * 2013-11-08 2019-04-02 Sandisk Technologies Llc Reduced host data command processing
US9003090B1 (en) * 2014-03-25 2015-04-07 DSSD, Inc. PCI express fabric routing for a fully-connected mesh topology
KR102248915B1 (ko) 2014-03-26 2021-05-07 삼성전자주식회사 하이브리드 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 데이터 처리 방법
US9860241B2 (en) 2014-04-15 2018-01-02 Level 3 Communications, Llc Device registration, authentication, and authorization system and method
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US9304690B2 (en) 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
US9990313B2 (en) 2014-06-19 2018-06-05 Hitachi, Ltd. Storage apparatus and interface apparatus
US9959203B2 (en) 2014-06-23 2018-05-01 Google Llc Managing storage devices
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
US10437479B2 (en) 2014-08-19 2019-10-08 Samsung Electronics Co., Ltd. Unified addressing and hierarchical heterogeneous storage and memory
US9563367B2 (en) 2014-08-26 2017-02-07 HGST Netherlands B.V. Latency command processing for solid state drive interface protocol
US9378149B1 (en) * 2014-08-29 2016-06-28 Emc Corporation Method and system for tracking modification times of data in a storage system
JP6231669B2 (ja) 2014-09-15 2017-11-15 華為技術有限公司Huawei Technologies Co.,Ltd. データ書込み要求処理方法及びストレージアレイ
WO2016059715A1 (ja) 2014-10-17 2016-04-21 株式会社日立製作所 計算機システム
CN105518611B (zh) * 2014-12-27 2019-10-25 华为技术有限公司 一种远程直接数据存取方法、设备和系统
JP6320318B2 (ja) * 2015-02-17 2018-05-09 東芝メモリ株式会社 記憶装置及び記憶装置を含む情報処理システム
US9952784B2 (en) 2015-03-11 2018-04-24 Sandisk Technologies Llc Multichip dual write
US9824042B2 (en) * 2015-03-30 2017-11-21 EMC IP Holding Company LLC Reading data from storage via a PCI express fabric having a fully-connected mesh topology
US9864710B2 (en) * 2015-03-30 2018-01-09 EMC IP Holding Company LLC Writing data to storage via a PCI express fabric having a fully-connected mesh topology
US10019168B2 (en) * 2015-05-19 2018-07-10 EMC IP Holding Company LLC Method and system for multicasting data to persistent memory
TWI575374B (zh) * 2015-08-04 2017-03-21 群聯電子股份有限公司 映射表格更新方法、記憶體儲存裝置及記憶體控制電路單元
CN109117095B (zh) * 2015-10-10 2021-06-15 北京忆芯科技有限公司 NVMe协议处理器及其处理方法
US10409514B2 (en) * 2015-11-30 2019-09-10 International Business Machines Corporation IP multicast message transmission for event notifications
US9921756B2 (en) 2015-12-29 2018-03-20 EMC IP Holding Company LLC Method and system for synchronizing an index of data blocks stored in a storage system using a shared storage module
US10852955B2 (en) 2015-12-29 2020-12-01 EMC IP Holding Company LLC Method and system for accessing data objects stored in a storage system using object descriptors allocated by clients
US10013370B2 (en) 2015-12-29 2018-07-03 EMC IP Holding Company LLC Method and system for providing access of a storage system using a shared storage module as a transport mechanism
US10291603B2 (en) * 2016-04-07 2019-05-14 Verizon Patent And Licensing Inc. Registering a smart device with a registration device using a multicast protocol
US10762030B2 (en) 2016-05-25 2020-09-01 Samsung Electronics Co., Ltd. Storage system, method, and apparatus for fast IO on PCIE devices
US10277677B2 (en) * 2016-09-12 2019-04-30 Intel Corporation Mechanism for disaggregated storage class memory over fabric
CN107992436B (zh) * 2016-10-26 2021-04-09 华为技术有限公司 一种NVMe数据读写方法及NVMe设备
WO2018102968A1 (zh) 2016-12-05 2018-06-14 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、设备和系统
EP3352086B1 (en) * 2016-12-05 2020-11-11 Huawei Technologies Co., Ltd. Control method, device and system for data reading-writing command in nvme over fabric architecture
US10841275B2 (en) 2016-12-12 2020-11-17 Samsung Electronics Co., Ltd. Method and apparatus for reducing IP addresses usage of NVME over fabrics devices
US11256431B1 (en) * 2017-01-13 2022-02-22 Lightbits Labs Ltd. Storage system having a field programmable gate array
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US10466930B2 (en) * 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
US10785301B2 (en) 2017-08-03 2020-09-22 Toshiba Memory Corporation NVM express over fabrics
KR102340287B1 (ko) 2017-09-20 2021-12-20 삼성전자주식회사 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법
CN110235098B (zh) * 2017-12-26 2021-06-22 华为技术有限公司 存储系统访问方法及装置
JP7181447B2 (ja) * 2018-03-30 2022-12-01 株式会社ソシオネクスト 情報処理システム、情報処理方法及び半導体装置
US11151037B2 (en) * 2018-04-12 2021-10-19 International Business Machines Corporation Using track locks and stride group locks to manage cache operations
US10831693B1 (en) * 2018-09-27 2020-11-10 Amazon Technologies, Inc. Multicast master
US10613977B1 (en) 2018-09-27 2020-04-07 Amazon Technologies, Inc. Target port with distributed transactions
CN109766285A (zh) * 2019-01-10 2019-05-17 中国科学院长春光学精密机械与物理研究所 一种突发模式的sdram存取控制系统及控制方法
US10996975B2 (en) * 2019-08-22 2021-05-04 Micron Technology, Inc. Hierarchical memory systems
US11137913B2 (en) 2019-10-04 2021-10-05 Hewlett Packard Enterprise Development Lp Generation of a packaged version of an IO request
US11741350B2 (en) 2019-11-27 2023-08-29 Amazon Technologies, Inc. Efficient utilization of processing element array
US11550487B2 (en) 2020-12-17 2023-01-10 Western Digital Technologies, Inc. Data storage device and method for enabling endurance re-evaluation
US20230017824A1 (en) * 2021-07-15 2023-01-19 Samsung Electronics Co., Ltd. Systems and methods for load balancing in a heterogeneous memory system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1628220A1 (en) * 2004-08-09 2006-02-22 Hitachi, Ltd. Remote copy system maintaining a logically consistent copy
CN102209103A (zh) * 2010-03-29 2011-10-05 英特尔公司 向多个存储控制器多播写请求

Family Cites Families (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263221A (ja) * 1995-03-20 1996-10-11 Hitachi Ltd 二重化磁気ディスク装置
US6987927B1 (en) * 1998-09-09 2006-01-17 Smartdisk Corporation Enhanced digital data collector for removable memory modules
US7610438B2 (en) 2000-01-06 2009-10-27 Super Talent Electronics, Inc. Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
US6834295B2 (en) * 2000-02-24 2004-12-21 Pts Corporation Methods and apparatus for providing bit-reversal and multicast functions utilizing DMA controller
US6636511B1 (en) * 2000-11-21 2003-10-21 Transwitch Corporation Method of multicasting data through a communications switch
US7543100B2 (en) 2001-06-18 2009-06-02 3Par, Inc. Node controller for a data storage system
US7685126B2 (en) 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US6850969B2 (en) 2002-03-27 2005-02-01 International Business Machined Corporation Lock-free file system
US7197662B2 (en) * 2002-10-31 2007-03-27 Ring Technology Enterprises, Llc Methods and systems for a storage system
US7266120B2 (en) * 2002-11-18 2007-09-04 Fortinet, Inc. System and method for hardware accelerated packet multicast in a virtual routing system
US6996682B1 (en) 2002-12-27 2006-02-07 Storage Technology Corporation System and method for cascading data updates through a virtual copy hierarchy
US8346884B2 (en) 2003-01-21 2013-01-01 Nextio Inc. Method and apparatus for a shared I/O network interface controller
WO2004114116A1 (ja) * 2003-06-19 2004-12-29 Fujitsu Limited キャッシュ二重化方式におけるミラーキャッシュからの書き戻し方法
JP2005196490A (ja) * 2004-01-07 2005-07-21 Hitachi Ltd データ多重化のためのシステム及び方法
US8145785B1 (en) * 2004-02-13 2012-03-27 Habanero Holdings, Inc. Unused resource recognition in real time for provisioning and management of fabric-backplane enterprise servers
US7843907B1 (en) * 2004-02-13 2010-11-30 Habanero Holdings, Inc. Storage gateway target for fabric-backplane enterprise servers
JP4464766B2 (ja) * 2004-03-03 2010-05-19 株式会社日立製作所 マルチキャスト配信制御装置
US7478138B2 (en) * 2004-08-30 2009-01-13 International Business Machines Corporation Method for third party, broadcast, multicast and conditional RDMA operations
US7702849B2 (en) 2004-09-03 2010-04-20 Nokia Corporation Method and apparatus for dividing and storing data into plural files
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7366825B2 (en) 2005-04-26 2008-04-29 Microsoft Corporation NAND flash memory management
US7634627B1 (en) 2005-08-19 2009-12-15 Symantec Operating Corporation System and method for performing extent level backups that support single file restores
US20070073989A1 (en) 2005-08-31 2007-03-29 Interdigital Technology Corporation Method and apparatus for efficient data storage and management
US7702870B2 (en) 2006-01-19 2010-04-20 Network Appliance Inc. Method and apparatus for defragmentation and for detection of relocated blocks
US10303783B2 (en) 2006-02-16 2019-05-28 Callplex, Inc. Distributed virtual storage of portable media files
US9390019B2 (en) 2006-02-28 2016-07-12 Violin Memory Inc. Method and apparatus for providing high-performance and highly-scalable storage acceleration
US7650458B2 (en) 2006-06-23 2010-01-19 Microsoft Corporation Flash memory driver
US8074022B2 (en) 2006-09-28 2011-12-06 Virident Systems, Inc. Programmable heterogeneous memory controllers for main memory with different memory modules
US20080082750A1 (en) 2006-09-28 2008-04-03 Okin Kenneth A Methods of communicating to, memory modules in a memory channel
WO2008040028A2 (en) 2006-09-28 2008-04-03 Virident Systems, Inc. Systems, methods, and apparatus with programmable memory control for heterogeneous main memory
US7761626B2 (en) 2006-09-28 2010-07-20 Virident Systems, Inc. Methods for main memory in a system with a memory controller configured to control access to non-volatile memory, and related technologies
US7694091B2 (en) 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
WO2008051940A2 (en) 2006-10-23 2008-05-02 Virident Systems, Inc. Methods and apparatus of dual inline memory modules for flash memory
US7774556B2 (en) 2006-11-04 2010-08-10 Virident Systems Inc. Asymmetric memory migration in hybrid main memory
KR100816761B1 (ko) 2006-12-04 2008-03-25 삼성전자주식회사 낸드 플래시 메모리 및 에스램/노어 플래시 메모리를포함하는 메모리 카드 및 그것의 데이터 저장 방법
US8719501B2 (en) 2009-09-08 2014-05-06 Fusion-Io Apparatus, system, and method for caching data on a solid-state storage device
US20080140724A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
US8549236B2 (en) * 2006-12-15 2013-10-01 Siliconsystems, Inc. Storage subsystem with multiple non-volatile memory arrays to protect against data losses
US7913032B1 (en) 2007-04-25 2011-03-22 Apple Inc. Initiating memory wear leveling
US7870327B1 (en) 2007-04-25 2011-01-11 Apple Inc. Controlling memory operations using a driver and flash memory type tables
US7739312B2 (en) 2007-04-27 2010-06-15 Network Appliance, Inc. Data containerization for reducing unused space in a file system
US20090019245A1 (en) 2007-07-10 2009-01-15 Prostor Systems, Inc. Methods for implementation of data formats on a removable disk drive storage system
US8156299B2 (en) 2007-10-19 2012-04-10 Virident Systems Inc. Managing memory systems containing components with asymmetric characteristics
US7836018B2 (en) 2007-10-24 2010-11-16 Emc Corporation Simultaneously accessing file objects through web services and file services
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
WO2009079478A1 (en) 2007-12-14 2009-06-25 Virident Systems, Inc. Distributing metadata across multiple different disruption regions within an asymmetric memory system
US20090172335A1 (en) 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US20090198952A1 (en) 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
US8856464B2 (en) 2008-02-12 2014-10-07 Virident Systems, Inc. Systems for two-dimensional main memory including memory modules with read-writeable non-volatile memory devices
JP4498426B2 (ja) 2008-03-01 2010-07-07 株式会社東芝 メモリシステム
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US7912082B2 (en) * 2008-06-09 2011-03-22 Oracle America, Inc. Shared virtual network interface
US8176233B1 (en) 2008-07-17 2012-05-08 Virident Systems Inc. Using non-volatile memory resources to enable a virtual buffer pool for a database application
US8321652B2 (en) 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
US8086799B2 (en) * 2008-08-12 2011-12-27 Netapp, Inc. Scalable deduplication of stored data
US8732388B2 (en) 2008-09-16 2014-05-20 Micron Technology, Inc. Embedded mapping information for memory devices
US8219741B2 (en) 2008-10-24 2012-07-10 Microsoft Corporation Hardware and operating system support for persistent memory on a memory bus
US20110208933A1 (en) 2008-10-27 2011-08-25 Kaminario Technologies Ltd. Mass-Storage System Utilizing Solid-State Storage and Non-Solid-State Storage
US8943357B2 (en) 2008-10-27 2015-01-27 Kaminario Technologies Ltd. System and methods for RAID writing and asynchronous parity computation
US8397016B2 (en) 2008-12-31 2013-03-12 Violin Memory, Inc. Efficient use of hybrid media in cache architectures
US7987162B2 (en) 2009-03-06 2011-07-26 Bluearc Uk Limited Data compression in a file storage system
WO2010113165A1 (en) 2009-04-01 2010-10-07 Kaminario Tehnologies Ltd. System and method for storage unit building while catering to i/o operations
US20120110291A1 (en) 2009-04-06 2012-05-03 Kaminario Technologies Ltd. System and method for i/o command management
US8806165B2 (en) 2009-04-10 2014-08-12 Kaminario Technologies Ltd. Mass-storage system utilizing auxiliary solid-state storage subsystem
US8321645B2 (en) 2009-04-29 2012-11-27 Netapp, Inc. Mechanisms for moving data in a hybrid aggregate
WO2010144587A2 (en) 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
US8270405B2 (en) 2009-06-30 2012-09-18 Intel Corporation Multicast support on a switch for PCIe endpoint devices
US8468293B2 (en) 2009-07-24 2013-06-18 Apple Inc. Restore index page
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8972627B2 (en) 2009-09-09 2015-03-03 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
US9465756B2 (en) 2009-12-23 2016-10-11 Violin Memory Inc. Configurable interconnection system
US8812816B2 (en) 2010-03-23 2014-08-19 Apple Inc. Garbage collection schemes for index block
US9665442B2 (en) 2010-03-29 2017-05-30 Kaminario Technologies Ltd. Smart flushing of data to backup storage
US20110276831A1 (en) 2010-05-05 2011-11-10 Kaminario Technologies Ltd. Utilizing Input/Output Paths For Failure Detection And Analysis
US20110276768A1 (en) 2010-05-10 2011-11-10 Kaminario Technologies Ltd. I/0 command handling in backup
JP4806089B1 (ja) * 2010-06-30 2011-11-02 株式会社東芝 情報処理装置、raidコントローラカード、およびミラーリング方法
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8688899B2 (en) 2010-09-28 2014-04-01 Fusion-Io, Inc. Apparatus, system, and method for an interface between a memory controller and a non-volatile memory controller using a command protocol
US9348696B2 (en) 2010-10-01 2016-05-24 Pure Storage, Inc. Distributed multi-level protection in a raid array based storage system
US20120102242A1 (en) 2010-10-26 2012-04-26 Kaminario Technologies Ltd. Controlling data destaging within a multi-tiered storage system
WO2012109679A2 (en) * 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for application direct virtual memory management
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8886904B2 (en) 2011-04-14 2014-11-11 Kaminario Technologies Ltd. Managing a solid-state storage device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1628220A1 (en) * 2004-08-09 2006-02-22 Hitachi, Ltd. Remote copy system maintaining a logically consistent copy
CN102209103A (zh) * 2010-03-29 2011-10-05 英特尔公司 向多个存储控制器多播写请求

Also Published As

Publication number Publication date
EP2845098B1 (en) 2019-06-26
US20130254435A1 (en) 2013-09-26
US20140032697A1 (en) 2014-01-30
JP2015518203A (ja) 2015-06-25
US8407377B1 (en) 2013-03-26
EP2845098A1 (en) 2015-03-11
US8819304B2 (en) 2014-08-26
US8554963B1 (en) 2013-10-08
JP6005835B2 (ja) 2016-10-12
WO2013142674A1 (en) 2013-09-26
CN104272257A (zh) 2015-01-07

Similar Documents

Publication Publication Date Title
CN104272257B (zh) 具有组播直接存储器存取和统一地址空间的存储系统
JP6385995B2 (ja) テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
US10229734B1 (en) Method and system for storing and recovering data from flash memory
US8301832B1 (en) Storage system with guaranteed read latency
US9870154B2 (en) Network storage system using flash storage
US10257273B2 (en) Systems, methods and devices for RDMA read/write operations
US20170185316A1 (en) Method and system for synchronizing an index of data blocks stored in a storage system using a shared storage module
US9256560B2 (en) Controller integration
CN106933504B (zh) 用于提供存储系统的访问的方法和系统
US8341342B1 (en) Storage system with incremental multi-dimensional RAID
US8392428B1 (en) Method and system for hash fragment representation
CN110941576A (zh) 具有多模pcie功能的存储控制器的系统、方法和设备
CN109815170A (zh) 数据冗余的处理方法及其相关电脑系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180807

Address after: Massachusetts, USA

Patentee after: EMC Intellectual Property Holdings Ltd.

Address before: Massachusetts, USA

Patentee before: EMC Corp.

Effective date of registration: 20180807

Address after: Massachusetts, USA

Patentee after: EMC Corp.

Address before: California, USA

Patentee before: DSSD, INC.