CN108804355A - 使用目标协作的快速排序写入的方法和系统 - Google Patents
使用目标协作的快速排序写入的方法和系统 Download PDFInfo
- Publication number
- CN108804355A CN108804355A CN201810390073.4A CN201810390073A CN108804355A CN 108804355 A CN108804355 A CN 108804355A CN 201810390073 A CN201810390073 A CN 201810390073A CN 108804355 A CN108804355 A CN 108804355A
- Authority
- CN
- China
- Prior art keywords
- request
- memory module
- submits
- data
- submission
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000015654 memory Effects 0.000 claims abstract description 224
- 238000003860 storage Methods 0.000 claims abstract description 75
- 230000004044 response Effects 0.000 claims description 14
- 238000005192 partition Methods 0.000 claims description 8
- 230000007704 transition Effects 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims 2
- 230000002093 peripheral effect Effects 0.000 claims 2
- 238000005516 engineering process Methods 0.000 abstract description 82
- 238000000926 separation method Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000000151 deposition Methods 0.000 description 4
- 235000013399 edible fruits Nutrition 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明用于使用目标协作的快速排序写入的方法和系统。总体上来说,本技术的实施例涉及用于在包括多个分离的存储模块的存储设备中执行快速排序写入的方法和系统。更具体地,本技术的实施例使得能够将数据多播到存储设备中的多个存储模块,其中处理写入请求的顺序在存储设备中的所有存储模块上是相同的。
Description
技术领域
本发明用于使用目标协作的快速排序写入的方法和系统。总体上来说,本技术的实施例涉及用于在包括多个分离的存储模块(storage module)的存储设备(storageappliance)中执行快速排序写入的方法和系统。更具体地,本技术的实施例使得能够将数据多播到存储设备中的多个存储模块,其中处理写入请求的顺序在存储设备中的所有存储模块上是相同的。
背景技术
存储设备包括存储介质(storage media)并且提供使客户端能够向该存储介质写入数据和从该存储介质读取数据的机制。
发明内容
根据本公开的一个方面涉及一种用于处理写入请求的方法。该方法包括:由第一存储模块接收来自客户端的第一提交请求;响应于接收到所述第一提交请求:处理所述第一提交请求,其中处理所述第一提交请求导致第一数据的第一副本被存储在所述第一存储模块中的永久性存储器(memory)中;由所述第一存储模块生成针对第二存储模块的第二提交请求;向所述第二存储模块发送所述第二提交请求;从所述第二存储模块接收指示所述第一数据的第二副本被存储在所述第二存储模块中的永久性存储器中的第一提交回复;响应于接收到所述第一提交回复并且在处理所述第一提交请求之后,由所述第一存储模块生成对应于所述第一提交请求的第二提交回复;向所述客户端发送所述第二提交回复。
根据本公开的另一个方面涉及一种存储设备。该存储设备包括:结构(fabric);存储阵列,其可操作地连接到所述结构并且包括第一存储模块和所述第二存储模块。所述第一存储模块被配置为:经由所述结构接收来自客户端的第一提交请求;响应于接收到所述第一提交请求:处理所述第一提交请求,其中处理所述第一提交请求导致第一数据的第一副本被存储在所述第一存储模块中的永久性存储器中;生成针对第二存储模块的第二提交请求;经由所述结构向所述第二存储模块发送所述第二提交请求;经由所述结构从所述第二存储模块接收指示所述第一数据的第二副本被存储在所述第二存储模块中的永久性存储器中的第一提交回复;响应于接收到所述第一提交请求并且在处理所述第一提交请求之后,生成对应于所述第一提交请求的第二提交回复;和经由所述结构向所述客户端发送所述第二提交回复。
附图说明
图1A至1C示出了根据本技术的一个或多个实施例的系统。
图2至5示出了根据本技术的一个或多个实施例的流程图。
图6示出了根据本技术的一个或多个实施例的示例系统。
具体实施方式
在本技术的实施例的以下详细描述中,阐述了许多具体细节以便提供对该技术更透彻的理解。然而,对于本领域的普通技术人员来说显而易见的是,可以在没有这些具体细节的情况下实践该技术。在其他情况下,没有详细描述众所周知的特征以避免不必要地使描述复杂化。
在整个申请中,序数(例如,第一、第二、第三等)可以用作元素(即,本申请中的任何名词)的形容词。序数的使用并不意味着或创建任何特定的元素排序,也不限制任何元素仅为单个元素,除非明确地公开,例如通过使用术语“之前”、“之后”、“单个”和其他类似术语。更确切地说,序数的使用是为了区分这些元素。作为示例,第一元素不同于第二元素,并且第一元素可以包含多于一个元素并且在元素的排序中在第二元素之前(或先于)。
在以下对图1A至6的描述中,在本技术的各个实施例中关于附图描述的任何组件可以等同于关于任何其他附图描述的一个或多个相同名称的组件。为了简洁起见,这些组件的描述将不会关于每个图重复。因此,每个附图的组件的每个和每一个实施例通过引用并入并且被假定为可选地存在于具有一个或多个相同命名组件的每个其他附图中。另外,根据本技术的各种实施例,附图的组件的任何描述将被解释为可选的实施例,除了、结合或替代关于任何其他图中的对应相同命名组件描述的实施例,可以实施可选的实施例。
总体上来说,本技术的实施例涉及用于在包括多个分离的存储模块的存储设备中执行快速排序写入的方法和系统。更具体地,本技术的实施例使得能够将数据多播到存储设备中的多个存储模块,其中处理写入请求的顺序在存储设备中的所有存储模块上是相同的。该技术的实施例能够实现上述顺序,而不需要客户端协调将数据写入存储设备。具体地,本技术的实施例使用结构(例如,PCIe结构)结合存储模块之间的协调(例如参见图4至5)来强制执行写入请求的排序。
在本技术的一个实施例中,排序在存储模块上是一致的,使得存储在各个存储模块(或存储模块的子集)中的数据是相同的。例如,考虑存储设备包括三个存储模块(1、2、3)的情况。此外,假设客户端A发出指定对象和偏移的第一写入请求(A),并且客户端B发出指定相同对象和偏移的第二写入请求(B)。该技术的实施例确保写入请求(A,B)在每个存储模块上以相同的顺序被处理,使得在两个写入请求都已经在三个存储模块(1、2、3)上被处理之后,针对特定对象和偏移存储的数据在三个存储模块(1、2、3)中的每一个上都是相同。
图1A示出了根据本技术的一个或多个实施例的系统。参考图1A,该系统包括可操作地连接到存储设备(100)的一个或多个客户端(客户端A(108A)-客户端M(108M))。
在本技术的一个实施例中,客户端(108A-108M)可以是任何类型的物理系统,其包括向存储设备(100)发出读取请求和/或向存储设备(100)发出写入请求的功能。虽然在图1A中未示出,但是每个客户端(108A-108M)分别可以包括客户端处理器(未示出)、客户端存储器(未示出)以及实现本技术的一个或多个实施例所需的任何其他软件和/或硬件。
在本技术的一个实施例中,客户端(108A-108M)被配置为执行包括文件系统的操作系统(OS)。文件系统提供了用于从存储设备(100)存储和检索文件的机制。更具体地说,文件系统包括执行必要动作以向存储设备(100)发出读取请求和写入请求的功能。文件系统还可以提供编程接口以使得能够创建和删除文件,读取和写入文件,在文件内执行搜索,创建和删除目录,管理目录内容等。另外,文件系统还提供管理接口以创建和删除文件系统。在本技术的一个实施例中,为了访问文件,操作系统(经由文件系统)通常提供文件操作接口以打开、关闭、读取和写入每个文件内的数据和/或操纵相应的元数据。在本技术的另一个实施例中,客户端被配置为执行用于访问存储设备的块驱动程序。在本技术的另一个实施例中,客户端被配置为执行使得客户端能够访问存储设备的应用编程接口(API)。
在本技术的一个实施例中,客户端(108A-108M)与存储设备(100)的结构(106)对接以与存储设备(100)通信,如以下在图2中进一步描述的。
在本技术的一个实施例中,存储设备(100)是包括永久性存储装置并被配置为服务于来自一个或多个客户端(108A-108M)的读取请求和/或写入请求的系统。
根据本技术的一个或多个实施例,存储设备(100)包括组织在存储阵列(102)中的一个或多个存储模块(104A-104N)和将存储器模块(104A-104N)与客户端(108A-108M)对接的结构(106)。下面介绍这些组件中的每一个。
根据本技术的实施例,存储阵列(106)容纳一个或多个存储模块(104A-104N)。根据需要或期望,存储阵列可实现存储设备的模块化配置,其中存储模块可被添加到存储设备(100)或从存储设备(100)移除。根据本发明的实施例的存储模块(104)参考图1C在下面描述。
继续讨论存储设备(100),存储设备包括结构(106)。结构(106)可以使用以下协议中的一个或多个来提供客户端(108A-108M)与存储模块(104A-104N)之间的物理连接:外围组件互连(PCI)、PCI-Express(PCIe)、PCI-eXtended(PCI-X)、非易失性存储器Express(NVMe)、PCI-Express结构的非易失性存储器Express(NVMe)、以太网结构的非易失性存储器Express(NVMe)和Infiniband结构的非易失性存储器Express(NVMe)。本领域技术人员将认识到,该技术不限于上述协议。下面参考图1B描述根据本技术的实施例的结构(106)。
图1B示出了根据本技术的一个或多个实施例的结构。结构(106)包括一个或多个叶层交换机(110A、110M)和一个或多个集线器层交换机(112A、112N)。下面描述这些组件中的每一个。
关于叶层交换机(110A、110M),每个叶层交换机是连接到一个或多个客户端(108)的物理PCIe交换机,并且每个客户端(108)可以连接到一个或多个叶层交换机。每个叶层交换机也连接到一个或多个集线器层交换机。在本技术的一个实施例中,每个叶层交换机连接到结构中的每个集线器层交换机,导致结构中的层之间的完全连接的网格。在不脱离本技术的情况下,可以在层之间没有完全连接的网格的情况下实施本技术的实施例。
在本技术的一个实施例中,每个叶层交换机被配置为:(i)从其所连接的客户端接收事务层分组(TLP),并使用地址路由将TLP路由到适当的集线器层交换机;以及(ii)从叶层交换机连接到的一个或多个集线器层交换机接收TLP,并使用地址路由将TLP路由到适当的客户端。
关于集线器层交换机(112A-112N),每个集线器层交换机是连接到一个或多个叶层交换机(110A-110M)并连接到一个或多个存储模块(104)的物理PCIe交换机。此外,每个存储模块可以连接到一个或多个集线器层交换机。在本技术的一个实施例中,每个集线器层交换机连接到结构中的每个其他叶层交换机,导致结构中的层之间的完全连接的网格。在不脱离本技术的情况下,可以在层之间没有完全连接的网格的情况下实施本技术的实施例。
在本技术的一个实施例中,每个集线器层交换机被配置为:(i)从与其连接的存储模块(104)接收TLP,并使用地址路由将TLP路由到适当的叶层交换机,以及(ii)从集线器层交换机连接到的一个或多个叶层交换机接收TLP,并使用地址路由将TLP路由到适当的存储模块(104)。
另外,一个或多个集线器层交换机被配置为响应于从叶层交换机接收单个TLP而生成多个TLP。例如,客户端(108)可以将包括多播地址的TLP生成并发送到叶层交换机。叶层交换机评估多播地址,并基于评估将TLP路由到集线器层交换机。集线器层交换机随后接收TLP并且评估基于评估被识别为多播地址的地址。基于评估,生成N个TLP。然后将N个TLP中的每一个发送到不同的存储模块。
在本技术的一个实施例中,结构可以同时从多个客户端接收TLP。但是,结构将TLP的传输序列化到存储模块。更具体地说,在本技术的一个实施例中,每个集线器层交换机将其从各种客户端接收到的TLP的处理序列化。结果,集线器层交换机还将TLP的传输序列化到存储模块。通过这种方式,集线器层交换机确保它向每个存储模块发出的TLP以相同的顺序发出。
在本技术的一个实施例中,结构被配置为执行图3至5中所示的全部或部分方法。
图1C示出了根据本技术的一个或多个实施例的存储模块(104)。存储模块(104)包括存储模块控制器(120)、缓冲器(122)、一个或多个提交队列(124A、124N)、一个或多个完成队列(128A、128N)和永久性存储装置(126)。下面描述这些组件中的每一个。
在本技术的一个实施例中,存储模块控制器(120)被配置为接收和服务于从永久性存储装置(122)读取和/或写入数据的请求。这些请求可以源自客户端(108)并且可以经由结构(106)被传送到存储模块控制器(120)。此外,存储模块控制器(124)可以被编程为或者以其他方式被配置为执行图4和图5中所示的全部或部分方法。
在本技术的一个实施例中,存储模块控制器(120)包括处理器(未示出)(例如,被配置为执行指令的处理器的一个或多个内核或微内核)、一个或多个硬件寄存器(未示出)和存储器(示出)(例如易失性存储器,其可以是但不限于动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM和DDR SDRAM)以执行图4和图5中所描述的方法的一部分。或者,存储模块控制器(120)可以使用现场可编程门阵列(FPGA)和/或专用集成电路(ASIC)来实现。
在本技术的一个实施例中,存储模块(104)的永久性存储装置(126)可以包括但不限于自旋扭矩磁性RAM(ST-MRAM)、相变存储器(PCM)、NAND闪存和NOR闪存。本领域技术人员将认识到,该技术不限于上述类型的永久性存储装置。
在本技术的一个实施例中,永久性存储器将数据存储为对象。因此,通过指定对象标识符(ID)和偏移(即,对象内的偏移),可以将数据写入对象和/或从对象读取数据。
永久性存储器可以在逻辑上被划分成主分区(130)和一个或多个从分区(132A、132M)。从分区的数量对应于在其上要存储数据副本的其他存储模块的数量。例如,考虑存在三个存储模块(SM1、SM2、SM3)并且数据的副本要存储在每个存储模块上的情况。在该示例中,数据的一个副本可以存储在SM1的主分区中,数据的第二副本可以存储在SM2的从分区中,并且数据的第三副本可以存储在SM3的从分区中。在本技术的一个实施例中,存储模块维护主分区中的地址与相应从分区(位于其他存储模块上)中的一个或多个地址之间的地址映射。
本领域技术人员将认识到,从客户端(图1,108)的角度看,当永久性存储器被逻辑分区(如上所述)时,永久性存储器表现为单个统一地址空间。换句话说,永久性存储器的分区是以对客户端透明的方式执行的。
在本技术的一个实施例中,缓冲器(122)是易失性存储器,其在数据被存储在永久性存储装置中之前暂时存储由存储模块接收的数据。
在本技术的一个实施例中,存储模块可以包括一个或多个提交队列(124A、124N)。提交队列按照存储模块接收的顺序存储提交请求。在本技术的一个实施例中,存储模块包括单个全局提交队列,其中存储从所有客户端接收的所有提交请求。在本技术的另一个实施例中,存储模块包括一组提交队列,其中每个提交队列仅存储从特定客户端接收的提交请求和/或从特定主存储模块(例如参见图5和图6)接收的提交请求。
在本技术的一个实施例中,存储模块可以包括一个或多个完成队列(128A、128N)。完成队列存储由存储模块从其他存储模块接收的提交回复(参见例如图4至6)。在本技术的一个实施例中,存储模块包括单个全局完成队列,其中存储从所有存储模块接收的所有提交回复。在本技术的另一个实施例中,存储模块包括一组完成队列,其中每个完成队列仅存储从特定存储模块接收的提交回复。
本领域技术人员将认识到,系统的架构不限于图1A至1C中所示的组件。例如,存储设备(100)的组件可以包括任何数量的存储模块(104A-104N)。此外,存储模块(104)的存储模块控制器(120)可以配备有中央处理单元(CPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)和/或任何其他类型的处理器,而不偏离本技术。此外,结构可以基于除了上面讨论的那些之外的通信标准,而不偏离本技术。
图2至5示出了根据本技术的一个或多个实施例的流程图。尽管顺序地呈现和描述了流程图中的各个步骤,但本领域的普通技术人员将会理解,可以以不同的顺序执行一些或全部步骤,可以组合或省略这些步骤,并且一些或全部步骤可以并行执行。在该技术的一个实施例中,图2至5可以与图2至5中所示的任何其他步骤并行执行。
图2示出了根据本技术的一个或多个实施例的从客户端的角度将数据写入存储模块的方法。
在步骤200中,客户端生成包括地址和数据的写入请求。包括在写入请求中的地址可以是多播地址。更具体地说,从客户端的角度来看,地址可以显示为任何其他地址;然而,当地址由结构评估时,其导致生成N个写入请求(参见例如图3,步骤304)。
在步骤202中,写入请求由客户端发出到结构。如果结构是PCIe结构(即,实现PCIe的结构),则可以使用一个或多个TLP来发出写入请求。
在步骤204中,客户端生成包括地址的提交请求。尽管写入请求包括要传输的数据,但是提交请求包括导致数据存储在永久性存储器中的命令(参见例如图4、图5)。在本技术的一个实施例中,客户端使用一致散列函数利用对象标识符和偏移作为输入来确定用于提交请求的地址。更具体地说,对于特定对象(使用对象标识符识别)和偏移的提交请求总是被发送到针对<对象ID,偏移>的相同存储模块(即,“主存储模块”)。在本发明的一个实施例中,一致散列函数被用于识别主存储模块。此外,因为每个客户端实现相同的一致散列函数,所以针对特定<对象ID,偏移>的所有提交请求被发送到针对<对象ID,偏移>的相同存储模块(即,“主存储模块”)而不考虑哪个客户端生成提交请求。
在本技术的一个实施例中,提交请求被发送到经由写入请求接收数据的存储模块之一。例如,考虑存在三个存储模块(SM1、SM2、SM3),并且对于<对象ID1,偏移3>在每个存储模块上要存储数据副本的情况。在这种情况下,在写入请求中使用与多播组(即,SM1、SM2、SM3)相关联的多播地址向各个存储模块传输数据。此外,一致散列函数与用作输入的<对象ID1,偏移3>组合以将SM2识别为针对<对象ID1,偏移3>的主存储模块。相应地,提交请求被发送到SM2。
继续图2的讨论,在步骤206中,提交请求由客户端发出到结构。如果结构是PCIe结构(即,实现PCIe的结构),则可以使用一个或多个TLP来发出提交请求。
在稍后的某个时间点,在步骤208中,客户端从结构中接收到提交回复,所述提交回复是由接收到在步骤206中发出的提交请求的存储模块发起的(假设提交请求已被成功处理并且结构保持可操作)。
图3示出了根据本技术的一个或多个实施例的从结构的角度向存储模块写入数据的方法。
在步骤300中,包括数据和多播地址的写入请求由结构中的叶交换机接收。如果结构是PCIe结构,则可以将写入请求作为一个或一组TLP接收。
在步骤302中,叶交换机处理写入请求。更具体地说,写入请求的处理包括评估写入请求中的地址以识别集线器层交换机(或可操作地连接到集线器层交换机的出口端口)。处理的结果是将写入请求传发送到集线器层交换机。在本技术的一个实施例中,特定集线器层交换机处理针对给定地址的所有写入请求。例如,包括地址A的结构接收的所有写入请求都被路由到集线器层交换机A。
在步骤304中,响应于接收到写入请求,集线器层交换机处理写入请求。写入请求的处理包括确定写入请求中的地址是多播地址,并且响应于该确定,生成N个写入请求。生成的写入请求的具体数量(N)在集线器层交换机上预先配置。在本技术的一个实施例中,每个生成的写入请求包括单播地址。
在步骤306中,将所生成的写入请求(即,在步骤304中生成的写入请求)发送到存储模块。更具体地,N个写入请求中的每一个被发送到存储设备中的N个存储模块之一。
在步骤308中,对应于(在步骤300中接收的)写入请求的提交请求由结构中的叶交换机接收。如果结构是PCIe结构,则提交请求可以作为一个或一系列TLP被接收。
在步骤310中,叶交换机处理提交请求。处理的结果是将提交请求发送到连接到主存储模块的集线器层交换机。
在步骤312中,响应于接收到提交请求,集线器层交换机处理提交请求。处理的结果是将提交请求发送到主存储模块(即,针对<对象ID,偏移>的主存储模块)。
在稍后的某个时间点,在步骤314中,结构从主存储模块接收到提交回复。在步骤316中,结构将提交回复发送到客户端(假定结构保持可操作)。
图4示出了根据本技术的一个或多个实施例的从具有单个全局提交队列的存储模块的角度将数据写入存储模块的方法。
在步骤400中,从结构接收单播写入请求(即,在步骤306中由结构发出的写入请求)。
在步骤402中,将与写入请求相关联的数据存储在“主”存储模块的缓冲器中。
在步骤404中,从结构接收单播提交请求(即,在步骤312中由结构发出的提交请求)。
在步骤406中,将单播提交请求放置在单个全局提交队列中。在本技术的一个实施例中,提交请求包括或者以其他方式与客户端标识符相关联。在相应提交回复的生成和/或处理中使用客户端标识符(参见例如图4,步骤414)。
在步骤408中,基于先进先出机制来处理全局提交队列中的提交请求,以便保持处理顺序。处理提交请求的结果是将数据存储在永久性存储器中的主分区中的位置中。换句话说,数据写入永久性存储器的顺序由处理提交请求的顺序决定,而不是由存储模块接收写入请求(和/或数据)的顺序决定。
在步骤410中,主存储模块生成N-1个提交请求,并经由结构将其发送到N-1个从存储模块。例如,考虑存在三个存储模块(SM1、SM2、SM3),并且数据副本要存储在<对象ID 1,偏移3>的每个存储模块上的情况。此外,假定SM 1是<对象ID 1,偏移3>的主存储模块。在这种情况下,SM1生成两个提交请求-一个发送给SM2,并且另一个发送给SM3。在本技术的一个实施例中,在步骤408中将数据存储在永久性存储器的主分区中可以与步骤410并行执行。
在步骤412中,经由结构从从存储模块接收N-1个提交回复,并将其存储在主存储模块上的全局完成队列中。继续该示例,从步骤410开始,SM1(在该示例中是主存储模块)将从SM2接收一个提交回复,并且从SM3接收一个提交回复(假定提交回复被成功处理)。本领域技术人员将认识到,在某些情况下,在所有提交请求被发送到从存储模块之前,由主存储模块可以接收到一个或多个提交回复。例如,主存储模块将提交请求发送到从存储模块1,并在向子存储模块2发送提交请求之前从从存储模块1接收对应的提交回复。
继续图4的讨论,在步骤414中,由主存储模块生成提交回复并将其发送到结构。在本技术的一个实施例中,提交回复是至少部分地基于与对应的提交请求(即,在步骤404中接收的提交请求)相关联的客户端标识符生成的。如果从N-1个从存储模块接收到N-1个提交回复并且步骤408中的提交请求被主存储模块成功处理,则可以仅由主存储模块生成提交回复。
图5示出了根据本技术的一个或多个实施例的从具有单个全局提交队列的从存储模块的角度将数据写入存储模块的方法。
在步骤500中,从结构接收单播写入请求(即,在步骤306中由结构发布的写入请求)。
在步骤502中,将与写入请求相关联的数据存储在存储模块的缓冲区中。
在步骤504中,从结构接收单播提交请求(即,在步骤410中由主存储模块发出的提交请求)。
在步骤506中,将单播提交请求放置在单个全局提交队列中。在本技术的一个实施例中,提交请求包括或者以其他方式与客户端标识符相关联。在对应的提交回复的生成和/或处理中使用客户端标识符(参见例如图5,步骤510)。
在步骤508中,基于先进先出机制来处理全局提交队列中的提交请求,以便保持处理顺序。换句话说,数据写入永久性存储器的顺序由处理提交请求的顺序决定,而不是由存储模块接收写入请求(和/或数据)的顺序决定。
处理提交请求的结果是将数据存储在永久性存储器中。更具体地说,考虑从存储模块从主存储模块接收写入请求1(WR1)并且随后接收提交请求1(CR1)的情况。处理CR1的结果是将与WR1相关联的数据从存储模块中的缓冲器复制到存储模块中的永久性存储器中的对应从分区中的位置。
在步骤510中,生成对应于在步骤504中接收到的提交请求的提交回复,并经由结构将其发送到主存储模块。在本技术的一个实施例中,提交回复是至少部分地基于与对应的提交请求相关联的客户端标识符来生成的。
在本技术的一个实施例中,步骤500-506与步骤508-510并行执行。具体而言,步骤500-506导致全局提交队列的填充,而步骤508-510导致处理全局提交队列中的提交请求。本领域的技术人员将会理解,可以对于每个<对象ID,偏移>并行执行图5中所示的方法。
关于图4和图5中的全局提交队列中的提交请求的处理,本领域技术人员将认识到,用于任何存储模块的全局提交队列可以包括源自一个或多个客户端的提交请求以及源自一个或多个主存储模块的提交请求。在提交请求来自客户端的情况下,提交请求的处理根据图4执行而如果从主存储模块接收到提交请求则根据图5执行提交请求的处理。
此外,虽然已经关于在主存储模块中使用单个全局提交队列和在每个从存储模块中使用单个全局提交队列描述了图4和图5,但是本技术的实施例可以使用以下来实现:(i)一组提交队列和(ii)一组完成队列。该组提交队列可以包括针对每个客户端的每个客户端提交队列和针对每个从其接收到提交请求的主存储模块的每个主存储模块提交队列。此外,该组完成队列可以包括针对每个从其接收到提交回复的从存储模块的每个从存储模块完成队列。
在本技术的这样的实施例中,每个提交请求包括全局排序标签或者以其他方式与全球排序标签相关联。全局排序标签用于维护由存储模块接收到的提交请求的全局处理顺序。全局排序标签可以被存储模块控制器添加到提交请求(或以其他方式与提交请求相关联)。此外,基于全局排序标签处理每个客户端提交队列中的提交请求,以便保持存储模块中的全局处理顺序。
本领域的技术人员将理解,可以使用其他方案来组织提交队列和/或完成队列,而不偏离本技术。
图6示出了根据本技术的一个或多个实施例的示例系统。该示例并不打算限制该技术的范围。
转到该示例,考虑其中客户端想要将三个数据副本存储在存储设备中的情况。为了将三个数据副本存储在存储设备中,客户端发出具有多播地址和数据的写入请求,并将该请求发送到结构。该结构响应于接收到写入请求而生成并发出三个写入请求。这导致在每个存储模块(存储模块1、存储模块2、存储模块3)中的缓冲器(未示出)中存储数据的一个副本。
客户端随后生成提交请求(提交请求A)。在这个示例中,假设数据被写入<对象5,偏移3>,并且主存储模块(如使用一致散列函数确定的)是存储模块1。因此,提交请求经由结构被发送到存储模块1。
响应于接收到提交请求A,存储模块1将提交请求A存储在存储模块1中的提交队列(未示出)中。提交请求A随后由存储模块1处理,导致数据的副本(当前在存储模块1中的缓冲器中)存储在存储模块1中的永久性存储器的主分区1A中的位置中。存储模块1还生成两个提交请求(提交请求B和提交请求C)。存储模块1然后经由结构将提交请求B发送到存储模块2并且将提交请求C发送到存储模块3。如上所述,提交请求A的处理可以与提交请求B和提交请求C的生成和传输并行地执行。
响应于接收到提交请求B,存储模块2将提交请求B存储在存储模块2中的提交队列(未示出)中。提交请求B随后由存储模块2处理,导致数据的副本(当前在存储模块2中的缓冲器中)被存储在存储模块2中的永久性存储器的从分区2A中的位置中。在提交请求B已经被处理之后,存储模块2经由结构生成提交回复B并且将其传输到存储模块1。
响应于接收到提交请求C,存储模块3将提交请求C存储在存储模块3中的提交队列(未示出)中。提交请求C随后由存储模块3处理,导致数据的副本(当前在存储模块3中的缓冲器中)被存储在存储模块3中的永久性存储器的从分区3A中的位置中。在提交请求C已经被处理之后,存储模块3经由结构生成提交回复C并且将其传输到存储模块1。
返回到存储模块1,存储模块1接收提交回复B和提交回复C并且将其存储在完成队列中。一旦提交请求A已被处理并且已经接收到提交回复B和C,存储模块A就经由结构生成提交回复A并将其传输到客户端。
尽管已经关于有限数量的实施例描述了本技术,但是受益于本公开的本领域技术人员将会理解,可以设计出不偏离在此公开的技术范围的其他实施例。因此,本技术的范围应仅由所附权利要求来限定。
Claims (20)
1.一种用于处理写入请求的方法,包括:
由第一存储模块接收来自客户端的第一提交请求;
响应于接收到所述第一提交请求:
处理所述第一提交请求,其中处理所述第一提交请求导致第一数据的第一副本被存储在所述第一存储模块中的永久性存储器中;
由所述第一存储模块生成针对第二存储模块的第二提交请求;
向所述第二存储模块发送所述第二提交请求;
从所述第二存储模块接收指示所述第一数据的第二副本被存储在所述第二存储模块中的永久性存储器中的第一提交回复;
响应于接收到所述第一提交回复并且在处理所述第一提交请求之后,由所述第一存储模块生成对应于所述第一提交请求的第二提交回复;
向所述客户端发送所述第二提交回复。
2.根据权利要求1所述的方法,还包括:
在接收到所述第一提交请求之前:
接收包括所述第一数据的第二副本的写入请求;和
将所述第一数据的所述第二副本临时存储在所述第一存储模块中的缓冲器中。
3.根据权利要求1所述的方法,还包括:
由所述第一存储模块从所述第二存储模块接收第三提交请求,其中所述第三提交请求与第二数据相关联;
处理所述第三提交请求,其中处理所述第三提交请求导致所述第二数据的第一副本存储在所述第一存储模块中的所述永久性存储器的从分区中。
4.根据权利要求3所述的方法,还包括:
在接收到所述第二提交请求之前:
从所述客户端接收所述第二数据的第二副本;和
将所述第二数据的所述第二副本临时存储在所述第一存储模块中的缓冲器中。
5.根据权利要求1所述的方法,其中所述数据的所述第一副本被存储在所述第一存储模块中的所述永久性存储器中的第一主分区中的位置中。
6.根据权利要求1所述的方法,其中处理所述第一提交请求包括:
将所述第一提交请求存储在全局提交队列中,其中所述全局提交队列维护由所述第一存储模块接收到的所有提交请求的顺序,
其中基于所述顺序来处理所述第一提交请求。
7.根据权利要求1所述的方法,其中处理所述第一提交请求包括:
将所述第一提交请求存储在与客户端相关联的客户端提交队列中,其中所述第一提交请求与全局排序标签相关联,
其中所述第一提交请求是基于由所述全局排序标签指定的顺序来处理的。
8.根据权利要求1所述的方法,其中所述第一提交请求是由所述客户端从可操作地连接到所述客户端和所述第一存储模块的结构接收的。
9.根据权利要求8所述的方法,其中使用所述结构向所述第二存储模块发送所述第二提交请求。
10.根据权利要求8所述的方法,其中所述结构是高速外围组件互连PCIe结构。
11.根据权利要求1所述的方法,其中所述第一存储模块中的所述永久性存储器包括相变存储器。
12.一种存储设备,包括:
结构;
存储阵列,其可操作地连接到所述结构并且包括第一存储模块和所述第二存储模块,
其中所述第一存储模块被配置为:
经由所述结构接收来自客户端的第一提交请求;
响应于接收到所述第一提交请求:
处理所述第一提交请求,其中处理所述第一提交请求导致第一数据的第一副本被存储在所述第一存储模块中的永久性存储器中;
生成针对第二存储模块的第二提交请求;
经由所述结构向所述第二存储模块发送所述第二提交请求;
经由所述结构从所述第二存储模块接收指示所述第一数据的第二副本被存储在所述第二存储模块中的永久性存储器中的第一提交回复;
响应于接收到所述第一提交请求并且在处理所述第一提交请求之后,生成对应于所述第一提交请求的第二提交回复;和
经由所述结构向所述客户端发送所述第二提交回复。
13.根据权利要求12所述的系统,其中所述第一存储模块还被配置为:
在接收到所述第一提交请求之前:
接收包括所述第一数据的第二副本的写入请求;和
将所述第一数据的所述第二副本临时存储在所述第一存储模块中的缓冲器中。
14.根据权利要求12所述的系统,其中所述第一存储模块还被配置为:
从所述第二存储模块接收第三提交请求,其中所述第三提交请求与第二数据相关联;
处理所述第三提交请求,其中处理所述第三提交请求导致所述第二数据的第一副本存储在所述第一存储模块中的所述永久性存储器的从分区中。
15.根据权利要求14所述的系统,其中所述第一存储模块还被配置为:
在接收到所述第三提交请求之前:
从所述客户端接收所述第二数据的第二副本;和
将所述第二数据的所述第二副本临时存储在所述第一存储模块中的缓冲器中。
16.根据权利要求12所述的系统,其中所述数据的所述第一副本被存储在所述第一存储模块中的所述永久性存储器中的第一主分区中的位置中。
17.根据权利要求12所述的系统,其中处理所述第一提交请求包括:
将所述第一提交请求存储在全局提交队列中,其中所述全局提交队列维护由所述第一存储模块接收到的所有提交请求的顺序,
其中基于所述顺序来处理所述第一提交请求。
18.根据权利要求12所述的系统,其中处理所述第一提交请求包括:
将所述第一提交请求存储在与客户端相关联的客户端提交队列中,其中所述第一提交请求与全局排序标签相关联,
其中所述第一提交请求是基于由所述全局排序标签指定的顺序来处理的。
19.根据权利要求12所述的系统,其中所述结构是高速外围组件互连PCIe结构。
20.根据权利要求12所述的系统,其中所述第一存储模块中的所述永久性存储器包括相变存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/581,707 US10614019B2 (en) | 2017-04-28 | 2017-04-28 | Method and system for fast ordered writes with target collaboration |
US15/581,707 | 2017-04-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108804355A true CN108804355A (zh) | 2018-11-13 |
CN108804355B CN108804355B (zh) | 2023-11-07 |
Family
ID=63917282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810390073.4A Active CN108804355B (zh) | 2017-04-28 | 2018-04-27 | 使用目标协作的快速排序写入的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10614019B2 (zh) |
CN (1) | CN108804355B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10564898B2 (en) * | 2018-06-11 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for storage device management |
US11880598B2 (en) | 2021-07-08 | 2024-01-23 | EMC IP Holding Company LLC | Request manager framework |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120303576A1 (en) * | 2011-05-23 | 2012-11-29 | Microsoft Corporation | Synchronous replication in a distributed storage environment |
US20150331607A1 (en) * | 2014-05-15 | 2015-11-19 | Netapp, Inc. | System and method for simulating a persistent byte addressable storage device on a persistent block addressable storage device |
US20160292098A1 (en) * | 2015-03-30 | 2016-10-06 | Emc Corporation | Writing data to storage via a pci express fabric having a fully-connected mesh topology |
Family Cites Families (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5708668A (en) | 1992-05-06 | 1998-01-13 | International Business Machines Corporation | Method and apparatus for operating an array of storage devices |
US6415355B1 (en) | 1998-05-11 | 2002-07-02 | Kabushiki Kaisha Toshiba | Combined disk array controller and cache control method for parity generation mode and data restoration mode |
US6351838B1 (en) | 1999-03-12 | 2002-02-26 | Aurora Communications, Inc | Multidimensional parity protection system |
US6742081B2 (en) | 2001-04-30 | 2004-05-25 | Sun Microsystems, Inc. | Data storage array employing block checksums and dynamic striping |
US7543100B2 (en) | 2001-06-18 | 2009-06-02 | 3Par, Inc. | Node controller for a data storage system |
US20030093740A1 (en) | 2001-10-19 | 2003-05-15 | Nebojsa Stojanovic | Iterative hard decoding method for multidimensional SPC |
US7180732B2 (en) | 2002-11-06 | 2007-02-20 | Disk Dynamix | Mounting apparatus for storage devices |
KR20040066638A (ko) | 2003-01-20 | 2004-07-27 | 삼성전자주식회사 | 외부 저장 서브 시스템에서의 패리티 저장 방법 및에러블록 복구 방법 |
GB2400935B (en) | 2003-04-26 | 2006-02-15 | Ibm | Configuring memory for a raid storage system |
US7149847B2 (en) | 2003-06-26 | 2006-12-12 | Adaptec, Inc. | RAID 6 disk array architectures |
EP1668486A2 (en) | 2003-08-14 | 2006-06-14 | Compellent Technologies | Virtual disk drive system and method |
US7644197B1 (en) | 2003-10-15 | 2010-01-05 | Sun Microsystems, Inc. | Queue management by multiple processors |
JP4595342B2 (ja) | 2004-02-19 | 2010-12-08 | 日本電気株式会社 | 記憶装置のデータ書き込み、読み出し方法およびデータ記憶システム |
US7490083B2 (en) | 2004-02-27 | 2009-02-10 | International Business Machines Corporation | Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates |
US7191388B1 (en) | 2004-03-01 | 2007-03-13 | Lattice Semiconductor Corporation | Fast diagonal interleaved parity (DIP) calculator |
US7237062B2 (en) | 2004-04-02 | 2007-06-26 | Seagate Technology Llc | Storage media data structure system and method |
US7406621B2 (en) | 2004-04-02 | 2008-07-29 | Seagate Technology Llc | Dual redundant data storage format and method |
US7594075B2 (en) | 2004-10-20 | 2009-09-22 | Seagate Technology Llc | Metadata for a grid based data storage system |
US7496735B2 (en) * | 2004-11-22 | 2009-02-24 | Strandera Corporation | Method and apparatus for incremental commitment to architectural state in a microprocessor |
EP1851662A2 (en) | 2005-02-24 | 2007-11-07 | Xeround Systems Ltd. | Method and apparatus for distributed data management in a switching network |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US7519859B2 (en) * | 2005-08-30 | 2009-04-14 | International Business Machines Corporation | Fault recovery for transaction server |
US7934120B2 (en) | 2006-09-11 | 2011-04-26 | International Business Machines Corporation | Storing data redundantly |
US7822921B2 (en) | 2006-10-31 | 2010-10-26 | Netapp, Inc. | System and method for optimizing write operations in storage systems |
US7831768B2 (en) | 2006-11-03 | 2010-11-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for writing data to a disk array |
US7711678B2 (en) | 2006-11-17 | 2010-05-04 | Microsoft Corporation | Software transaction commit order and conflict management |
US7788526B2 (en) | 2007-01-10 | 2010-08-31 | International Business Machines Corporation | Providing enhanced tolerance of data loss in a disk array system |
WO2008117379A1 (ja) * | 2007-03-23 | 2008-10-02 | Fujitsu Limited | パケットの伝送品質計測方法、パケット送信計測装置、およびパケット受信計測装置 |
US7752389B1 (en) | 2007-06-20 | 2010-07-06 | Emc Corporation | Techniques for determining physical data layout of RAID devices |
US7849356B2 (en) | 2008-01-17 | 2010-12-07 | International Business Machines Corporation | Parity data management system apparatus and method |
US8049980B1 (en) | 2008-04-18 | 2011-11-01 | Network Appliance, Inc. | Partial disk failures and improved storage resiliency |
US8234445B2 (en) | 2008-06-09 | 2012-07-31 | Infortrend Technology, Inc. | RAID data protection architecture using data protection information |
JP4978576B2 (ja) | 2008-07-03 | 2012-07-18 | 株式会社Jvcケンウッド | 符号化方法および符号化装置ならびに復号方法および復号装置 |
US8078906B2 (en) | 2008-08-21 | 2011-12-13 | Infinidat, Ltd. | Grid storage system and method of operating thereof |
US8626709B2 (en) * | 2008-09-26 | 2014-01-07 | Codefutures Corporation | Scalable relational database replication |
US8645749B2 (en) | 2009-02-04 | 2014-02-04 | Micron Technology, Inc. | Systems and methods for storing and recovering controller data in non-volatile memory devices |
US8145840B2 (en) | 2009-06-05 | 2012-03-27 | Lsi Corporation | Method and system for storing excess data in a redundant array of independent disk level 6 |
US8463826B2 (en) | 2009-09-03 | 2013-06-11 | Apple Inc. | Incremental garbage collection for non-volatile memories |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8214560B2 (en) * | 2010-04-20 | 2012-07-03 | International Business Machines Corporation | Communications support in a transactional memory |
US8489979B2 (en) | 2010-05-28 | 2013-07-16 | Seagate Technology Llc | Methods and devices to reduce outer code failure rate variability |
US8677063B2 (en) | 2010-07-30 | 2014-03-18 | International Business Machines Corporation | Parity declustered storage device array with partition groups |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US8782339B2 (en) | 2010-10-11 | 2014-07-15 | Open Invention Network, Llc | Storage system having cross node data redundancy and method and computer readable medium for same |
CN101980137B (zh) | 2010-10-19 | 2012-05-30 | 成都市华为赛门铁克科技有限公司 | 廉价磁盘冗余阵列重构方法、装置及系统 |
US8782340B2 (en) | 2010-12-06 | 2014-07-15 | Xiotech Corporation | Hot sheet upgrade facility |
US8719520B1 (en) | 2010-12-14 | 2014-05-06 | Datadirect Networks, Inc. | System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity |
JP5367686B2 (ja) | 2010-12-24 | 2013-12-11 | 株式会社東芝 | データ記憶装置、メモリ制御装置及びメモリ制御方法 |
US8560772B1 (en) | 2010-12-29 | 2013-10-15 | Datadirect Networks, Inc. | System and method for data migration between high-performance computing architectures and data storage devices |
US9104327B2 (en) | 2011-05-17 | 2015-08-11 | Sandisk Technologies Inc. | Fast translation indicator to reduce secondary address table checks in a memory device |
US20120324156A1 (en) | 2011-06-17 | 2012-12-20 | Naveen Muralimanohar | Method and system of organizing a heterogeneous memory architecture |
US9069657B2 (en) | 2011-12-12 | 2015-06-30 | Apple Inc. | LBA bitmap usage |
US8850450B2 (en) | 2012-01-18 | 2014-09-30 | International Business Machines Corporation | Warning track interruption facility |
US8327185B1 (en) | 2012-03-23 | 2012-12-04 | DSSD, Inc. | Method and system for multi-dimensional raid |
CN103577111B (zh) | 2012-07-23 | 2017-05-31 | 上海宝存信息科技有限公司 | 基于非易失性存储器的动态独立冗余阵列存储系统及方法 |
US8464095B1 (en) | 2012-11-15 | 2013-06-11 | DSSD, Inc. | Method and system for multi-dimensional raid reconstruction and defect avoidance |
CN103019617A (zh) | 2012-11-25 | 2013-04-03 | 向志华 | 高效实现ssd内部raid的构建方法、数据读写方法及装置 |
TWI500272B (zh) | 2012-12-03 | 2015-09-11 | Nat Univ Tsing Hua | 資料偵錯系統及其方法 |
US8554997B1 (en) | 2013-01-18 | 2013-10-08 | DSSD, Inc. | Method and system for mirrored multi-dimensional raid |
US9778943B2 (en) | 2013-05-28 | 2017-10-03 | Red Hat Israel, Ltd. | Timer based virtual processor scheduling and suspension on physical processor for use of physical processor by other processing |
US9529674B2 (en) | 2013-06-18 | 2016-12-27 | Dell Product, LP | Storage device management of unrecoverable logical block addresses for RAID data regeneration |
US9552242B1 (en) | 2013-09-25 | 2017-01-24 | Amazon Technologies, Inc. | Log-structured distributed storage using a single log sequence number space |
US8924776B1 (en) | 2013-12-04 | 2014-12-30 | DSSD, Inc. | Method and system for calculating parity values for multi-dimensional raid |
CN106681934B (zh) | 2014-03-19 | 2020-09-11 | 华为技术有限公司 | 一种存储设备垃圾回收的方法及设备 |
US10523753B2 (en) | 2014-05-06 | 2019-12-31 | Western Digital Technologies, Inc. | Broadcast data operations in distributed file systems |
TWI567554B (zh) | 2014-11-06 | 2017-01-21 | 慧榮科技股份有限公司 | 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置 |
US9558847B2 (en) | 2014-11-21 | 2017-01-31 | Sandisk Technologies Llc | Defect logging in nonvolatile memory |
US20160210060A1 (en) | 2015-01-21 | 2016-07-21 | HGST Netherlands B.V. | Dynamic resource allocation within storage devices |
US9436608B1 (en) | 2015-02-12 | 2016-09-06 | International Business Machines Corporation | Memory nest efficiency with cache demand generation |
US10248463B2 (en) | 2015-02-13 | 2019-04-02 | Honeywell International Inc. | Apparatus and method for managing a plurality of threads in an operating system |
US10466913B2 (en) | 2015-04-29 | 2019-11-05 | EMC IP Holding Company LLC | Method and system for replicating and using grid level metadata in a storage system |
CN106406987B (zh) | 2015-07-29 | 2020-01-03 | 阿里巴巴集团控股有限公司 | 一种集群中的任务执行方法及装置 |
US10387649B2 (en) | 2015-10-31 | 2019-08-20 | Quick Heal Technologies Private Limited | Detecting malware when executing in a system |
US10261902B2 (en) * | 2016-01-04 | 2019-04-16 | Toshiba Memory Corporation | Parallel processing of a series of data units for writing |
US10095414B2 (en) | 2016-03-07 | 2018-10-09 | Toshiba Memory Corporation | Memory system including a controller and a nonvolatile memory having memory blocks |
US9760493B1 (en) | 2016-03-14 | 2017-09-12 | Vmware, Inc. | System and methods of a CPU-efficient cache replacement algorithm |
US10248327B2 (en) | 2016-04-01 | 2019-04-02 | SK Hynix Inc. | Throttling for a memory system using a GC/HOST ratio and operating method thereof |
US20170300249A1 (en) | 2016-04-15 | 2017-10-19 | Western Digital Technologies, Inc. | Validity tracking for garbage collection |
US10031810B2 (en) * | 2016-05-10 | 2018-07-24 | International Business Machines Corporation | Generating a chain of a plurality of write requests |
US20170351604A1 (en) | 2016-06-02 | 2017-12-07 | Futurewei Technologies, Inc. | Host and garbage collection write ratio controller |
US20180032333A1 (en) | 2016-07-31 | 2018-02-01 | Mark Kenneth Sullivan | Atomic Line Multi-Tasking |
KR20180104830A (ko) | 2017-03-14 | 2018-09-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
-
2017
- 2017-04-28 US US15/581,707 patent/US10614019B2/en active Active
-
2018
- 2018-04-27 CN CN201810390073.4A patent/CN108804355B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120303576A1 (en) * | 2011-05-23 | 2012-11-29 | Microsoft Corporation | Synchronous replication in a distributed storage environment |
US20150331607A1 (en) * | 2014-05-15 | 2015-11-19 | Netapp, Inc. | System and method for simulating a persistent byte addressable storage device on a persistent block addressable storage device |
US20160292098A1 (en) * | 2015-03-30 | 2016-10-06 | Emc Corporation | Writing data to storage via a pci express fabric having a fully-connected mesh topology |
Also Published As
Publication number | Publication date |
---|---|
US20180314663A1 (en) | 2018-11-01 |
CN108804355B (zh) | 2023-11-07 |
US10614019B2 (en) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104040515B (zh) | 在逻辑驱动器模型下呈现直接存取的存储设备 | |
JP7252789B2 (ja) | Ssdに対するfpgaベースのアクセラレーションモジュール及びシステムとその動作方法 | |
US10257273B2 (en) | Systems, methods and devices for RDMA read/write operations | |
CN104246724B (zh) | 用于用内容表格条目存储数据的系统和方法 | |
CN106933500A (zh) | 访问存储在存储系统中的数据对象的方法和系统 | |
KR101638764B1 (ko) | 균일한 판독 대기시간을 위한 중복 데이터 저장 | |
CN103959255B (zh) | 跨多个内存口使用选择性复制降低内存访问延迟的系统及方法 | |
CN101965559B (zh) | 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器 | |
US20150270015A1 (en) | Memory mapping | |
CN106933502A (zh) | 用于同步数据块索引的方法和系统 | |
CN106255953B (zh) | 持久性数据存储体中的前向参考记录的方法和系统 | |
US8904123B2 (en) | Transferring learning metadata between storage servers having clusters via copy services operations on a shared virtual logical unit that stores the learning metadata | |
CN106021147A (zh) | 在逻辑驱动器模型下呈现直接存取的存储设备 | |
CN109791519A (zh) | 具有集成计算引擎的非易失性存储系统和本地快速存储器的优化用途 | |
CN106708425A (zh) | 分布式多模存储管理 | |
CN108008911A (zh) | 读写请求处理方法及装置 | |
US8341342B1 (en) | Storage system with incremental multi-dimensional RAID | |
TW201203270A (en) | Error correction in a stacked memory | |
CN106462510A (zh) | 具有独立直接接入大量固态存储资源的多处理器系统 | |
CN1761947A (zh) | 用于动态镜像库寻址的系统和方法 | |
CN107092438A (zh) | 存储器装置、存储器系统及用于复制数据的方法 | |
US10515014B1 (en) | Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence | |
CN106104499A (zh) | 高速缓冲存储器架构 | |
EP3039546A1 (en) | Computation hardware with high-bandwidth memory interface | |
CN106815528A (zh) | 一种文件管理方法及装置、存储设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |