CN108804342B - 对永久性存储装置写入和读取数据的方法和系统 - Google Patents

对永久性存储装置写入和读取数据的方法和系统 Download PDF

Info

Publication number
CN108804342B
CN108804342B CN201810389831.0A CN201810389831A CN108804342B CN 108804342 B CN108804342 B CN 108804342B CN 201810389831 A CN201810389831 A CN 201810389831A CN 108804342 B CN108804342 B CN 108804342B
Authority
CN
China
Prior art keywords
entry
data
logical address
table entry
persistent storage
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
CN201810389831.0A
Other languages
English (en)
Other versions
CN108804342A (zh
Inventor
T·怀尔德
S·拉加达亚
K·拉玛钱德兰
M·西本遥
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
EMC IP Holding Co LLC
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 EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Publication of CN108804342A publication Critical patent/CN108804342A/zh
Application granted granted Critical
Publication of CN108804342B publication Critical patent/CN108804342B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Abstract

本发明涉及对永久性存储装置写入和读取数据的方法和系统。总体上来说,本技术的实施例涉及用于存储和读取来自永久性存储装置的数据的方法和系统。更具体地,本技术的实施例涉及用于将数据存储在永久性存储装置中的方法和系统,其中写入永久性存储装置的数据不能在永久性存储装置中立即访问(即,在不可访问周期期间)。在这种情况下,本技术的实施例提供了一种方法和系统,以使存储系统能够使用主缓存条目表(PCET)和溢出表来服务于对数据的读取请求。

Description

对永久性存储装置写入和读取数据的方法和系统
技术领域
本公开涉及对永久性存储装置(storage)写入和读取数据的方法和系统。总体上来说,本技术的实施例涉及用于存储和读取来自永久性存储装置的数据的方法和系统。更具体地,本技术的实施例涉及用于将数据存储在永久性存储装置中的方法和系统,其中写入永久性存储装置的数据不能在永久性存储装置中立即访问(即,在不可访问周期期间)。
背景技术
存储系统(storage system)包括为写入请求和读取请求提供服务的功能。更具体地说,传统的存储系统包括将数据写入永久性存储装置,然后立即从该永久性存储装置中读取该数据的功能。
发明内容
根据本公开的一个方面涉及一种用于管理存储在永久性存储装置中的数据的方法。所述方法包括:接收包括逻辑地址和第一数据的写入请求;将对应于所述逻辑地址的表条目存储在主缓存(cache)条目表中;更新对应于所述逻辑地址的位图条目;将所述第一数据存储在外部存储器(memory)中,其中所述外部存储器可操作地连接到所述永久性存储装置;和向所述永久性存储装置发送所述第一数据的副本。
根据本公开的另一个方面涉及一种存储模块(storage module)。所述存储模块包括:现场可编程门阵列FPGA,其包括内部存储器;外部存储器,其可操作地连接到所述FPGA;和存储单元(storage unit),其可操作地连接到所述FPGA并且包括永久性存储装置。其中所述FPGA被配置为:接收包括逻辑地址和第一数据的写入请求;将对应于所述逻辑地址的表条目存储在所述内部存储器中的主缓存条目表中;在存储在所述外部存储器中的位图中更新对应于所述逻辑地址的位图条目;将所述第一数据存储在所述外部存储器中;和向所述永久性存储装置发送所述第一数据的副本。
附图说明
图1示出了根据本技术的一个或多个实施例的系统。
图2示出了根据本技术的一个或多个实施例的存储模块。
图3示出了根据本技术的一个或多个实施例的表条目的示例。
图4示出了主缓存条目表和溢出表中的表条目可以如何关联的示例。
图5示出了根据本技术的一个或多个实施例的用于将数据写入现场可编程门阵列(FPGA)和永久性存储装置的方法。
图6示出了根据本技术的一个或多个实施例的用于从FPGA和永久性存储装置读取数据的方法。
图7示出了根据本技术的一个或多个实施例的用于更新主缓存条目表和溢出表中的表条目的方法。
具体实施方式
现在将参考附图详细描述该技术的具体实施例。在本技术的实施例的以下详细描述中,阐述了许多具体细节以便提供对该技术更透彻的理解。然而,对于本领域的普通技术人员来说显而易见的是,可以在没有这些具体细节的情况下实践该技术。在其他情况下,没有详细描述众所周知的特征以避免不必要地使描述复杂化。
在以下对图1至图7的描述中,在本技术的各种实施例中关于附图描述的任何组件可以等同于关于任何其他附图描述的一个或多个相同名称的组件。为了简洁起见,这些组件的描述将不会在每个图中重复。因此,每个附图的组件的每个和每一个实施例通过引用并入并且被假定为可选地存在于具有一个或多个相似命名组件的每个其他附图中。另外,根据本技术的各种实施例,附图的组件的任何描述将被解释为可选的实施例,其除了、结合或替代关于对应于任何其他图中的相似命名组件描述的实施例被实现。
通常,本技术的实施例涉及用于存储和读取来自永久性存储装置的数据的方法和系统。更具体地,本技术的实施例涉及用于将数据存储在永久性存储装置中的方法和系统,其中写入永久性存储装置的数据不能在永久性存储装置中立即访问(即,在不可访问期间)。在这种情况下,本技术的实施例提供了一种方法和系统,以使存储系统能够使用主缓存条目表(PCET)和溢出表来服务对数据的读取请求。
图1示出了根据本技术的一个实施例的系统。如图1所示,该系统包括一个或多个主机(100)、控制模块(102)以及一个或多个存储模块(104A、104N)。
在本技术的一个实施例中,主机(100)是任何系统或在系统上执行的过程,其包括向控制模块发出读取请求和/或写入请求的功能。在本技术的一个实施例中,主机(100)可以分别包括处理器(未示出)、存储器(未示出)和永久性存储装置(未示出)。在本技术的一个实施例中,控制模块被配置为接收来自一个或多个主机(100)的写入请求和读取请求,并将接收到的请求发送到适当的存储模块(104A、104N)。关于存储模块的附加细节在下面的图2至图7中提供。此外,控制模块(102)包括接收对前述请求的响应并将响应提供给适当主机(100)的功能。在本技术的一个实施例中,控制模块包括被配置为执行指令以实现本技术的一个或多个实施例的处理器(未示出),其中指令被存储在位于控制模块(102)内或可操作地连接到控制模块(102)的非暂时性计算机可读介质(未示出)上。或者,控制模块可以使用硬件来实现。本领域技术人员将认识到,控制模块(102)可以使用软件和/或硬件的任何组合来实现。
在本技术的一个实施例中,主机(100)被配置为使用以下协议中的一个或多个来与控制模块(102)通信:外围组件互连(PCI)、PCI-Express(PCIe)、PCI-eXtended(PCI-X)、非易失性存储器Express(NVMe)、PCI-Express结构的非易失性存储器Express(NVMe)、以太网结构的非易失性存储器Express(NVMe)和Infiniband结构的非易失性存储器Express(NVMe)。本领域技术人员将认识到,该技术不限于上述协议。
在本技术的一个实施例中,控制模块(102)被配置为使用以下协议中的一个或多个来与存储模块(104A、104N)通信:外围组件互连(PCI)、PCI-Express(PCIe)、PCI-eXtended(PCI-X)、非易失性存储器Express(NVMe)、PCI-Express结构的非易失性存储器Express(NVMe)、以太网结构的非易失性存储器Express(NVMe)和Infiniband结构的非易失性存储器Express(NVMe)。本领域技术人员将认识到,该技术不限于上述协议。
本领域技术人员将认识到,该技术不限于图1中所示的架构。
图2示出了根据本技术的一个或多个实施例的存储模块。存储模块(200)包括现场可编程门阵列(FPGA)(202)、外部存储器(204)以及一个或多个存储单元(206A、206M)。下面描述这些组件中的每一个。
在本技术的一个实施例中,FPGA(202)是被配置为执行图5至图7中描述的全部或部分方法的集成电路。FPGA(202)包括内部存储器(208)。内部存储器(208)是易失性存储器,其直接位于FPGA上,并且因此与存储在外部存储器(204)中的数据相比,存储在内部存储器中的数据可以更快速地被访问(即,以较低的延迟访问)。内部存储器(208)包括主缓存条目表(PCET)(210)。PCET包括一组表条目。关于表条目的附加细节在图3中提供。
在本技术的一个实施例中,外部存储器(204)是易失性存储器,其包括溢出表(212)、位图(214)和数据缓存(216)。下面描述这些组件中的每一个。与PCET(210)类似,溢出表(212)包括表条目。然而,溢出表(212)的大小通常明显大于PCET(210)的大小。更具体地说,PCET(210)的大小受可位于FPGA(202)上的内部存储器的大小限制;然而,溢出表(212)的大小被确定为使得存在足够数量的表条目以确保在不可用周期期间针对不能读取的数据向存储模块发出的所有读取请求可以使用PCET和/或溢出表(212)来服务。如果没有足够的空间在PCET和溢出表中存储适当数量的表条目,则存储模块可能无法服务于在不可用周期期间发布针对数据的所有读取请求(例如参见图6)。在本技术的一个实施例中,溢出表的具体大小可以基于在不可用周期期间可以服务的写入请求的最大数量。
在本技术的一个实施例中,针对可由向存储模块(200)发出读取和/或写入请求的主机使用的每个逻辑地址,位图(214)包括一个条目。关于位图使用的附加细节在图5和图6中描述。
在本技术的一个实施例中,数据缓存(216)临时存储已被写入存储单元的数据。存储在数据缓存(216)中的数据用于当数据不能从存储单元中检索时(即在不可用周期期间)服务于对数据的读取请求。
在本技术的一个实施例中,存储单元(206A、206M)中的每一个包括永久性存储装置。永久性存储装置可以包括磁存储介质、光存储介质、固态存储介质、相变存储介质、任何其他合适类型的永久存储介质或其任何组合。在本技术的一个实施例中,永久性存储介质可以具有不可用周期。更具体地说,当数据被写入这种永久性存储介质时,在一段时间周期(称为不可用时间周期)内数据不能从持久性存储介质读取。不可用时间周期可以取决于持久性存储介质的具体实施方式而不同。
本领域的技术人员将认识到,该技术不限于图2中所示的架构。例如,虽然图2示出了FPGA,但是可以使用专用集成电路(ASIC)来实现本技术的实施例。可选地,在不脱离本技术的情况下,还可以使用硬件、软件和/或固件的其他组合来实现图2所示的存储模块。
图3示出了根据本技术的一个或多个实施例的表条目的示例。每个表条目(300)包括有效(302)位、逻辑地址(304)、下一个链接指针(306)和时间戳(308)。下面描述这些组件中的每一个。
有效(302)位用于确定给定的表条目是否可以从PCET或溢出表中移除。更具体地说,当与表条目相关联的数据不能从任何存储单元读取时,可以设置有效(302)位以便表示表条目(300)是有效的并且不可以从PCET或溢出表中移除。此外,当可以从一个或多个存储单元读取与表条目相关联的数据时,可以清除有效(302)位,以便表示表条目(300)可以从PCET或溢出表中移除。
逻辑地址(304)对应于写入请求中导致创建表条目的逻辑地址(例如参见图5)。下一个链接指针(306)可以是空的,或者它可以指向溢出表中的另一个表条目。关于下一个链接指针(306)的使用的附加细节下面在图4至图7中提供。时间戳(308)对应于表示何时创建表条目的值。
图4示出了主缓存条目表和溢出表中的表条目可以如何关联的示例。在本技术的一个实施例中,PCET(400)中的每个表条目可以包括指向溢出表(402)中的零个或一个表条目的下一个链接指针。此外,溢出表(402)中的每个表条目与PCET中的表条目相关联,并且可以包括指向溢出表(402)中的零个或一个表条目的下一个链接指针。此外,使用下一个链接指针彼此相关联的表条目全部与相同的散列值但不同的逻辑地址相关联(例如参见图5)。
转向该示例,考虑其中表条目A(404)最初存储在PCET(400)中的情形。在稍后的时间点,创建表条目B(406)并将其存储在溢出表(402)中,并且表条目A(404)中的下一个链接指针被更新以引用表条目B(406)。然后创建表条目C(408)并将其存储在溢出表(402)中。此时,表条目B中的下一个链接指针被更新以引用表条目C(408)。
转到流程图,虽然顺序地呈现和描述了流程图中的各个步骤,但是本领域普通技术人员将认识到,一些或全部步骤可以以不同顺序执行,可以被组合或省略,并且一些或者所有步骤可以并行执行。此外,各种流程图中描述的过程可以由存储模块串行地、同时地和/或并行地执行。
图5示出了根据本技术的一个或多个实施例的用于将数据写入FPGA和永久性存储装置的方法。图5从存储模块的角度来看。
在步骤500中,存储模块从主机接收写入请求,其中写入请求包括逻辑地址和数据。
在步骤502中,FPGA将散列函数应用于逻辑地址以便生成散列值。以下是可以使用的一组非限制性散列函数:SHA-1、MD5、任何非密码散列函数、任何密钥密码散列函数和/或任何非密钥密码散列函数。
在步骤504中,确定在与散列值相关联的位置处是否存在存储在PCET中的表条目。换言之,PCET包括N个物理位置,其中N个物理位置中的每一个物理位置与一个散列值相关联。因此,步骤504的确定是用于确定与散列值相关联的PCET中的位置是否是满的(即,当前正在存储有效的表条目)或空的(即,没有存储表条目或者无效的表条目存储在该位置处)。如果与散列值相关联的位置是空的(或者当前存储无效的表条目),则过程进行到步骤506;否则,过程进行到步骤508。
在步骤506中,生成表条目并将其存储在对应于散列值的PCET中的物理位置中。当表条目存储在PCET中时,下一个链接指针被设置为空。该过程然后进行到步骤510。
在其中与散列值相关联的PCET中的位置是满的情况下,在步骤508中,生成表条目并将其存储在溢出表中的可用位置中。溢出表中的位置可以随机选择或使用任何其他选择方法。继续步骤508的讨论,PCET中的表条目或溢出表中的表条目中的下一个链接指针被更新以引用在步骤508中创建的表条目(例如参见图4)。该过程然后进行到步骤510。
在步骤510中,设置位图中与写入请求中的逻辑地址相关联的条目。
在步骤512中,将与写入请求相关联的数据存储在外部存储器中的数据缓存中。在本技术的一个实施例中,其中存储数据的位置与表条目相关联(即,在步骤506或508中存储的表条目)。换言之,FPGA维护表条目与其中存储了数据的数据缓存中位置之间的映射。该映射用于从数据缓存中获得数据(例如参见图6)。
在步骤514中,FPGA将数据(即,从主机检索到的数据)发送到存储模块中的存储单元中的至少一个存储单元。
图6示出了根据本技术的一个或多个实施例的用于从FPGA和永久性存储装置读取数据的方法。
在步骤600中,从主机接收读取请求。读取请求包括逻辑地址。
在步骤602中,确定是否设置了位图中对应于逻辑地址的条目。如果条目没有被设置,则可以从一个或多个存储单元访问数据,并且因此,过程进行到步骤604。然而,如果条目被设置,则不能从存储单元检索数据(例如由于不可用周期),并且因此,过程进行到步骤606。
在步骤604中,从适当的存储单元获得对应于逻辑地址的数据并将其提供给主机。FGPA可以被配置为从存储单元检索数据并将检索到的数据提供给主机。
继续图6的讨论,在步骤606中,将读取请求中的逻辑地址进行散列以获得散列值。在步骤606中使用的散列函数是在步骤502中使用的相同散列函数。
在步骤608中,该散列值用于识别包括逻辑地址(即,读取请求中的逻辑地址)的PCET或溢出表中的表条目。以下是如何识别表条目的示例。关于图4描述下面的示例。这个示例不打算限制本技术。
转向该示例,考虑其中步骤606中生成的散列值对应于其中存储表条目A(404)的PCET(400)中的物理位置的情况。因此,表条目A中的逻辑地址与来自读取请求的逻辑地址进行比较。在这个示例中,表条目A(404)中的逻辑地址与读取请求中的逻辑地址不匹配。因此,表条目A中的下一个链接指针用于识别溢出表中的下一个表条目(402)。在这个示例中,表条目B(406)是下一个识别的表条目。类似于表条目A的评估,表条目B中的逻辑地址与来自读取请求的逻辑地址进行比较。在这个示例中,表条目B(406)中的逻辑地址与读取请求中的逻辑地址匹配。因此,表条目B是在步骤608中识别的表条目。如果表条目B中的逻辑地址与读取请求中的逻辑地址不匹配,则表条目B中的下一个链接指针将被用于识别表条目C。表条目C将以与表条目A和B相同的方式进行评估。上述过程将持续直到识别表条目。
继续讨论图6,在步骤610中,从来自与所识别的表条目相关联的位置从外部存储器中的数据缓存中获得与逻辑地址相关联的数据。随后将获得的数据提供给发出读取请求的主机。
图7示出了根据本技术的一个或多个实施例的用于更新主缓存条目表和溢出表中的表条目的方法。
在步骤700中,选择主缓存条目表中的表条目。
在步骤702中,确定所计算的时间(即,通过组合所选表条目中的时间戳与不可用时间周期确定的时间值)是否大于当前时间。以下是确定计算的时间的非限制性示例。转到该示例,考虑其中时间戳是T1并且不可用周期是P则计算的时间是T1+P的场景。此外,如果当前时间是T2,则步骤702做出的确定为是否(T1+P)>T2。如果计算的时间大于当前时间,则数据的不可用周期已经过去,并且数据可以从适当的存储单元中获得,因此,该过程进行到步骤704。然而,如果计算的时间小于当前时间,则数据的不可用周期还没有过去,并且数据不能从存储单元中获得,并且因此,图7中的过程结束。
继续图7的讨论,在步骤704中,确定关于所选表条目是否具有非空的下一个链接指针。如果表条目具有非空的下一个链接指针,则该过程进行到步骤708;否则该过程进行到步骤706。
在步骤706中,选择的表条目被移除(或者表条目中的有效位被更新以表示表条目无效)。进一步地,位图中对应于所选表条目中的逻辑地址的条目被更新以指示在PCET中不存在对应的表条目(例如,位图中的条目从一更新为零)。对应于移除的表条目的数据也在数据缓存中移除(或设置为无效)。该过程之后结束。
继续图7的讨论,如果所选表条目具有非空的下一个链接指针,则在步骤708中,在溢出表中识别由下一个链接指针引用的表条目。
在步骤710中,PCET中的表条目(即,在步骤700中选择的表条目)被在步骤708中识别的表条目替换。
在步骤712中,位图中对应于所选表条目中的逻辑地址的条目被更新以指示不存在对应的表条目(例如,位图中的条目从一更新为零)。与移除的表条目相对应的数据也会在数据缓存中移除(或设置为无效)。该过程然后结束。
对于PCET中的所有表条目可以连续重复进行图7中描述的过程。
本技术的一个或多个实施例可以使用由存储装置中的一个或多个处理器执行的指令来实现。此外,这样的指令可以对应于存储在一个或多个非暂时性计算机可读介质上的计算机可读指令。
虽然已经关于有限数量的实施例描述了本技术,但是受益于本公开的本领域技术人员将会理解,可以设计出不偏离在此所公开的技术范围的其他实施例。因此,本技术的范围应仅由所附权利要求来限定。

Claims (15)

1.一种用于管理存储在永久性存储装置中的数据的方法,所述方法包括:
接收包括逻辑地址和第一数据的写入请求;
将对应于所述逻辑地址的表条目存储在主缓存条目表中;
更新对应于所述逻辑地址的位图条目;
将所述第一数据存储在外部存储器中,其中所述外部存储器可操作地连接到所述永久性存储装置;
向所述永久性存储装置发送所述第一数据的副本;
选择所述表条目;
确定所述表条目已经存在于所述主缓存条目表中的时间周期超过了与所述永久性存储装置相关联的不可用周期;
基于所述确定,做出下一个链接指针存在于所述表条目中的第二确定;
基于所述第二确定,以与所述下一个链接指针相关联的第二表条目替换所述表条目;和
将所述第二表条目从溢出表中移除。
2.根据权利要求1所述的方法,还包括:
接收包括第二逻辑地址和第二数据的写入请求;
将对应于所述第二逻辑地址的所述第二表条目存储在所述溢出表中;
更新对应于所述第二逻辑地址的位图条目;
将所述第二数据存储在所述外部存储器中;和
向所述永久性存储装置发送所述第二数据的副本。
3.根据权利要求2所述的方法,其中将所述第二表条目存储在所述溢出表中包括:
散列所述第二逻辑地址以获得散列值;
利用所述散列值来确定所述主缓存条目表中的位置是满的;
识别所述溢出表中的位置;和
基于所述确定,将所述第二表条目存储在所述溢出表中的所述位置中。
4.根据权利要求3所述的方法,其中所述表条目包括对所述第二表条目的引用。
5.根据权利要求1所述的方法,其中将所述表条目存储在所述主缓存条目表中包括:
散列所述逻辑地址以获得散列值;
利用所述散列值来确定所述主缓存条目表中的位置是空的;和
基于所述确定,将所述表条目存储在所述位置中。
6.根据权利要求1所述的方法,其中所述主缓存条目表位于现场可编程门阵列FPGA上。
7.根据权利要求1所述的方法,还包括:
从客户端接收包括所述逻辑地址的读取请求;
确定设置了所述位图中对应于所述逻辑地址的条目;
基于所述确定,从所述主缓存条目表中识别所述表条目;
从所述外部存储器获得来自与所述表条目相关联的位置的所述第一数据的第二副本;和
向所述客户端提供所述第一数据的所述第二副本。
8.根据权利要求1所述的方法,还包括:
从客户端接收包括所述逻辑地址的读取请求;
确定没有设置所述位图中对应于所述逻辑地址的条目;
基于所述确定,从所述永久性存储装置获得所述第一数据的第二副本;和
向所述客户端提供所述第一数据的所述第二副本。
9.一种存储模块,包括:
现场可编程门阵列FPGA,其包括内部存储器;
外部存储器,其可操作地连接到所述FPGA;和
存储单元,其可操作地连接到所述FPGA并且包括永久性存储装置,
其中所述FPGA被配置为:
接收包括逻辑地址和第一数据的写入请求;
将对应于所述逻辑地址的表条目存储在所述内部存储器中的主缓存条目表中;
在存储在所述外部存储器中的位图中更新对应于所述逻辑地址的位图条目;
将所述第一数据存储在所述外部存储器中;
向所述永久性存储装置发送所述第一数据的副本;
选择所述表条目;
确定所述表条目已经存在于所述主缓存条目表中的时间周期超过了与所述永久性存储装置相关联的不可用周期;
基于所述确定,做出下一个链接指针存在于所述表条目中的第二确定;
基于所述第二确定,以与所述下一个链接指针相关联的第二表条目替换所述表条目;和
将所述第二表条目从溢出表中移除。
10.根据权利要求9所述的存储模块,其中所述FPGA还被配置为:
接收包括第二逻辑地址和第二数据的写入请求;
将对应于所述第二逻辑地址的所述第二表条目存储在所述溢出表中;
更新对应于所述第二逻辑地址的位图条目;
将所述第二数据存储在所述外部存储器中;和
向所述永久性存储装置发送所述第二数据的副本。
11.根据权利要求10所述的存储模块,其中将所述第二表条目存储在所述溢出表中包括:
散列所述第二逻辑地址以获得散列值;
利用所述散列值来确定所述主缓存条目表中的位置是满的;
识别所述溢出表中的位置;和
基于所述确定,将所述第二表条目存储在所述溢出表中的所述位置中,
其中所述表条目包括对所述第二表条目的引用。
12.根据权利要求9所述的存储模块,其中将所述表条目存储在所述主缓存条目表中包括:
散列所述逻辑地址以获得散列值;
利用所述散列值来确定所述主缓存条目表中的位置是空的;和
基于所述确定,将所述表条目存储在所述位置中。
13.根据权利要求9所述的存储模块,其中所述FPGA还被配置为:
从客户端接收包括所述逻辑地址的读取请求;
确定设置了所述位图中对应于所述逻辑地址的条目;
基于所述确定,从所述主缓存条目表中识别所述表条目;
从所述外部存储器获得来自与所述表条目相关联的位置的所述第一数据的第二副本;和
向所述客户端提供所述第一数据的所述第二副本。
14.根据权利要求9所述的存储模块,其中所述FPGA还被配置为:
从客户端接收包括所述逻辑地址的读取请求;
确定没有设置所述位图中对应于所述逻辑地址的条目;
基于所述确定,从所述永久性存储装置获得所述第一数据的第二副本;和
向所述客户端提供所述第一数据的所述第二副本。
15.根据权利要求9所述的存储模块,其中所述永久性存储装置包括相变存储介质。
CN201810389831.0A 2017-04-28 2018-04-27 对永久性存储装置写入和读取数据的方法和系统 Active CN108804342B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/581,963 US10339062B2 (en) 2017-04-28 2017-04-28 Method and system for writing data to and read data from persistent storage
US15/581,963 2017-04-28

Publications (2)

Publication Number Publication Date
CN108804342A CN108804342A (zh) 2018-11-13
CN108804342B true CN108804342B (zh) 2023-11-03

Family

ID=63916660

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810389831.0A Active CN108804342B (zh) 2017-04-28 2018-04-27 对永久性存储装置写入和读取数据的方法和系统

Country Status (2)

Country Link
US (2) US10339062B2 (zh)
CN (1) CN108804342B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11516307B1 (en) * 2021-08-09 2022-11-29 Servicenow, Inc. Support for multi-type users in a single-type computing system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011011487A1 (en) * 2009-07-24 2011-01-27 Apple Inc. Index cache tree
WO2012014140A2 (en) * 2010-07-27 2012-02-02 International Business Machines Corporation Logical to physical address mapping in storage systems comprising solid state memory devices
CN106575271A (zh) * 2014-06-23 2017-04-19 谷歌公司 管理存储设备

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3200887A (en) 1963-08-09 1965-08-17 Enstrom Corp Helicopter rotor system having elastomeric bearings
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
US7613945B2 (en) 2003-08-14 2009-11-03 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
US7406621B2 (en) 2004-04-02 2008-07-29 Seagate Technology Llc Dual redundant data storage format and method
US7237062B2 (en) 2004-04-02 2007-06-26 Seagate Technology Llc Storage media data structure system 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
US7506112B2 (en) * 2006-07-14 2009-03-17 Sun Microsystems, Inc. Reducing bitmap management overhead
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
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
WO2010037065A2 (en) 2008-09-26 2010-04-01 Cmi Corporate Marketing D/B/A Prelude Innovations, Inc. 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
US9519555B2 (en) 2011-05-23 2016-12-13 Microsoft Technology Licensing, Llc Synchronous replication in a distributed storage environment
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
CN103902465B (zh) 2014-03-19 2017-02-08 华为技术有限公司 一种固态硬盘垃圾回收的方法、系统和固态硬盘控制器
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 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
JP6967986B2 (ja) * 2018-01-29 2021-11-17 キオクシア株式会社 メモリシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011011487A1 (en) * 2009-07-24 2011-01-27 Apple Inc. Index cache tree
WO2012014140A2 (en) * 2010-07-27 2012-02-02 International Business Machines Corporation Logical to physical address mapping in storage systems comprising solid state memory devices
CN106575271A (zh) * 2014-06-23 2017-04-19 谷歌公司 管理存储设备

Also Published As

Publication number Publication date
US10339062B2 (en) 2019-07-02
US10936497B2 (en) 2021-03-02
CN108804342A (zh) 2018-11-13
US20180314639A1 (en) 2018-11-01
US20190266095A1 (en) 2019-08-29

Similar Documents

Publication Publication Date Title
US9787773B2 (en) Method and system for global namespace with consistent hashing
KR102231792B1 (ko) 하이브리드 메모리 모듈 및 그것의 동작 방법
US9262430B2 (en) Deduplication in a storage system
US20130290643A1 (en) Using a cache in a disaggregated memory architecture
US20150089137A1 (en) Managing Mirror Copies without Blocking Application I/O
JP6492123B2 (ja) 分散キャッシングおよびキャッシュ分析
US20090024795A1 (en) Method and apparatus for caching data
US8397025B2 (en) Apparatus and method for determining a cache line in an N-way set associative cache using hash functions
EP2711841A1 (en) Data processing method, device and system based on block storage
WO2015195936A1 (en) Range-based data deduplication
US10732896B2 (en) Method and system for reading data during control sync operations
US10067719B1 (en) Methods and systems for storing and accessing data in a distributed data storage system
WO2015118865A1 (ja) 情報処理装置、情報処理システム及びデータアクセス方法
CN110851474A (zh) 数据查询方法、数据库中间件、数据查询设备及存储介质
US20170083537A1 (en) Mapping logical identifiers using multiple identifier spaces
CN108804342B (zh) 对永久性存储装置写入和读取数据的方法和系统
KR20140108787A (ko) 텍스쳐 맵핑 파이프라인을 위한 논블로킹 방식의 텍스쳐 캐쉬 메모리 시스템 및 논블로킹 방식의 텍스쳐 캐쉬 메모리의 동작 방법
US9465737B1 (en) Memory systems including a duplicate removing filter module that is separate from a cache module
CN105988724B (zh) 多副本写入存储设备的方法及存储设备
CN108804355B (zh) 使用目标协作的快速排序写入的方法和系统
IL268321A (en) Data processing
CN109257453B (zh) 在多租户保护存储部署中防止数据泄露企图的基于本地数据ip的网络安全的系统和方法
US11914865B2 (en) Methods and systems for limiting data traffic while processing computer system operations
CN109791521B (zh) 提供数据访问的原子集的装置及方法
CN116679885A (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