CN102906714A - 缓存存储适配器架构 - Google Patents

缓存存储适配器架构 Download PDF

Info

Publication number
CN102906714A
CN102906714A CN2011800224312A CN201180022431A CN102906714A CN 102906714 A CN102906714 A CN 102906714A CN 2011800224312 A CN2011800224312 A CN 2011800224312A CN 201180022431 A CN201180022431 A CN 201180022431A CN 102906714 A CN102906714 A CN 102906714A
Authority
CN
China
Prior art keywords
data
storage device
module
solid storage
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2011800224312A
Other languages
English (en)
Inventor
A·普鲁西
S·卡马卡
K·拉斯托吉
S·施沃卡
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.)
Marvell World Trade Ltd
Mawier International Trade Co Ltd
Original Assignee
Mawier International Trade Co Ltd
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 Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN102906714A publication Critical patent/CN102906714A/zh
Pending legal-status Critical Current

Links

Images

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种接口适配器,包括:包含非易失性随机访问存储器(RAM)的存储模块和查找模块。存储模块被配置为将元数据存储在非易失性RAM中。元数据标识缓存在固态存储设备中的来自外部存储设备的数据。查找模块被配置为接收读请求。查找模块进一步被配置为响应于读请求并且基于元数据而选择性地提供来自固态存储设备的已缓存数据或者提供从外部存储设备获取的第二数据。

Description

缓存存储适配器架构
相关申请的交叉引用
本申请要求2011年5月5日提交的美国专利申请号13/101,534的优先权以及2010年5月5日提交的美国临时申请号61/331,759的权益。在此通过引用并入上述申请的全部公开内容。
技术领域
本公开涉及缓存主机总线适配器,并且更具体地,涉及使用固态存储设备和非易失性存储器的缓存主机总线适配器。
背景技术
在此提供的背景描述是为了总体上给出本公开的上下文。就在此背景技术中描述的工作而言,发明人的工作以及在提交时没有被证明为现有技术的描述并未被明确或者隐含地称为相对于本公开的现有技术。
现在参考图1A,示出了一个计算机架构的示例的框图。处理器100经由北桥模块106与主存储器102和图形处理模块104通信。北桥模块106与提供对外围设备的访问的南桥模块108对接。仅作为示例,南桥模块108与PCI(外围组件互连)Express插槽110对接。在图1A中,PCI Express卡112-1和112-2安装在PCI Express插槽110上。
现在参考图1B,示出了一个备选计算机架构。处理器150包括允许处理器150直接与主存储器152和图形处理模块154通信的电路。用于在处理器150与图形处理模块154之间通信的总线例如可以是AGP(加速图形端口)或者PCI Express。北桥模块156提供对处理器150的外围访问。例如,北桥模块156与安装有PCI Express卡112-1和112-2的PCI Express插槽110对接。
南桥模块108和156可以与附加的总线对接,例如用于连网的以太网、用于外部外设的USB(通用串行总线)以及用于盘驱动的SATA(串行高级技术附件)。PCI Express卡112可以实现附加的接口。例如,PCI Express卡112-1可以是主机总线适配器,其为处理器100提供对诸如SCSI(小型计算机系统接口)、eSATA(外部SATA)或者光纤通道的接口的访问。
发明内容
一种接口适配器,包括:包含非易失性随机访问存储器(RAM)的存储模块和查找模块。存储模块被配置为将元数据存储在非易失性RAM中。元数据标识缓存在固态存储设备中的来自外部存储设备的数据。查找模块被配置为接收读请求。查找模块进一步被配置为响应于读请求并且基于元数据而选择性地提供来自固态存储设备的已缓存数据或者提供从外部存储设备获取的第二数据。
在其他特征中,存储模块进一步被配置为在非易失性RAM中维护写缓冲区。第二数据在从外部存储设备被获取之后被存储在写缓冲区中。第二数据在被存储在写缓冲区之后被存储到固态存储设备中。在其他特征中,接口适配器包括缓冲区控制模块,被配置为确定何时将来自写缓冲区的第二数据存储到固态存储设备中。缓冲区控制模块被配置为基于写缓冲区中存在的用于存储在固态存储设备中的相邻位置中的、包括第二数据在内的数据的预定数量,而将第二数据存储到固态存储设备中。
在又一些特征中,接口适配器包括缓存回收模块,被配置为选择性地允许固态存储设备中的数据被覆盖。在其他特征中,查找模块被配置为响应于读请求而构建存在于存储模块中的数据的命中列表,构建不存在于存储模块中的数据的未命中列表,以及根据未命中列表向外部存储设备发送数据请求。
一种主机总线适配器,包括固态存储设备、非易失性随机访问存储器(RAM)以及执行模块。主机总线适配器被配置为安装在计算机中。执行模块被配置为将来自外部存储设备的数据缓存在固态存储设备中。执行模块还被配置为将元数据存储在非易失性RAM中。元数据指示什么数据被缓存在固态存储设备中。执行模块还被配置为从计算机的中央处理器接收读请求,并且使用来自固态存储设备的已缓存数据选择性地对读请求做出响应。
在其他特征中,执行模块被配置为使用部分非易失性RAM作为写缓冲区。执行模块还被配置为从中央处理器接收写请求。执行模块还被配置为在将对应于写请求的写数据存储在固态存储设备之前将写数据存储在写缓冲区中。执行模块还被配置为响应于读请求而选择性地提供来自写缓冲区的数据。执行模块还被配置为当元数据指示用于读请求之一的第一数据未被存储在写缓冲区或者固态存储设备中时,从外部存储设备请求第一数据。执行模块还被配置为一旦从外部存储设备接收到第一数据,便在将第一数据存储在固态存储设备中之前将第一数据存储在写缓冲区中。
一种操作接口适配器的方法,包括:将元数据存储在接口适配器的非易失性随机访问存储器(RAM)中。元数据标识被缓存在固态存储设备中的来自外部存储设备的数据。该方法包括:接收读请求,以及响应于读请求并且基于元数据而选择性地提供来自固态存储设备的已缓存数据或者提供从外部存储设备获取的第二数据。
通过详细描述、权利要求和附图,本公开的其他适用领域将变得清楚。详细描述和具体示例仅用于说明目的,无意限制本公开的范围。
附图说明
通过详细描述和附图,本公开将变得被更完全地理解,其中:
图1A是根据现有技术的一个计算机架构的功能框图;
图1B是根据现有技术的一个计算机架构的功能框图;
图2A是根据本公开原理的一个计算系统的示例的功能框图;
图2B是根据本公开原理的一个计算系统的备选示例的功能框图;
图3A是根据本公开原理的缓存存储适配器的示例的一个高级别功能框图;
图3B是根据本公开原理的缓存存储适配器的示例的另一高级别功能框图;
图4是根据本公开原理的缓存存储适配器的一个实现示例的功能框图;
图5是根据本公开原理的缓存存储适配器的一个实现示例的功能框图;
图6是描绘根据本公开原理的缓存存储适配器的操作示例的流程图;以及
图7是描绘根据本公开原理的缓存存储适配器的操作示例的流程图。
具体实施方式
下面的描述本质上仅仅是说明性的,而绝非有意限制公开、其应用或使用。出于清楚的目的,在附图中将使用相同的参考标号来标识类似的元素。在此使用的短语“A、B和C中至少一个”应当被解释为使用非排他性逻辑“或”的逻辑(A或B或C)。应当理解,方法中的步骤可以按照不同的顺序执行而不改变本发明的原理。
在此使用的术语“模块”可以是以下项的部分或者包括以下项:专用集成电路(ASIC);电子电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的处理器(共享、专用或群组);提供所描述功能的其他适当部件;或者上述某些或全部的组合,诸如在片上系统中。术语“模块”可以包括存储由处理器执行的代码的存储器(共享、专用或群组)。
上面使用的术语“代码”可以包括软件、固件和/或微代码,并且可以表示程序、例程、函数、类和/或对象。上面使用的术语“共享”表示来自多个模块的某些或者全部代码可以使用单个(共享的)处理器执行。而且,来自多个模块某些或者全部代码可以由单个(共享的)存储器存储。上面使用的术语“群组”表示来自单个模块的某些或者全部代码可以使用一组处理器执行。而且,来自单个模块的某些或者全部代码可以使用一组存储器存储。
在此描述的装置和方法可以由一个或多个处理器执行的一个或多个计算机程序来实现。计算机程序包括存储在非瞬态有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括存储的数据。非瞬态有形计算机可读介质的非限制性示例是非易失性存储器、磁性存储设备以及光学存储设备。
现在参考图2A,其示出了根据本公开原理的一个计算系统的示例。计算机202包括处理器204,其使用北桥模块210与主存储器206和图形处理模块208对接。北桥模块210与南桥模块212对接,南桥模块212为处理器204提供对外设的访问。
北桥模块212与PCI Express插槽220对接。PCI Express卡222安装在一个PCI Express插槽中,并且缓存存储适配器224安装在另一PCI Express插槽220中。缓存存储适配器224与存储设备230对接,并且向处理器204提供对存储设备230的读和写访问。
处理器204、主存储器206、图形处理模块208、北桥模块210以及南桥模块212可以统称为主机232。缓存存储适配器224则可以说成是为主机232提供对存储设备230的访问。存储设备230可以包括任何类型的大容量存储。仅作为示例,存储设备230可以包括以下一个或多个:逻辑卷管理(LVM)设备、虚拟卷、RAID(廉价磁盘冗余阵列)、由LUN(逻辑单元号)标识的设备、iSCSI(因特网小型计算机系统接口)LUN、FC(光纤通道)LUN、FCoE(以太网光纤通道)LUN、DAS(直接附接存储)或者SAN(存储区域网络)。
主机232经由缓存存储适配器224向存储设备230发出命令。诸如读和写的访问请求可以由缓存存储适配器224缓存。控制命令可以被缓存存储适配器224解释和执行,和/或可以被传递给存储设备230。在各种实现中,从主机232发送给缓存存储适配器224的命令可以是SCSI命令的形式。缓存存储设备223可以将SCSI命令转译为用于存储设备230的适当命令。
缓存存储适配器224还在PCI Express协议与用于访问存储设备230的协议之间进行转译。仅作为示例,存储设备230可以使用以太网、eSATA(外部串行高级技术附件)、SAS(串行附接SCSI)、SCSI(小型计算机系统接口)、无限带宽技术或者光纤通道来访问。缓存存储适配器224被描绘为是PCI Express卡。然而,本公开的原理也适用于其他接口。例如,缓存存储适配器224可以使用USB(通用串行总线)接口,诸如USB 2.0或者USB 3.0。备选地,缓存存储适配器224可以使用诸如PCI或者PCI-X的旧有接口。
缓存存储适配器224可被实现为多种形状因数。例如,缓存存储适配器224可以被实现为ExpressCard/34或者ExpressCard/54形状因数。ExpressCard形状因数通常可被用于便携式计算机。当被实现为ExpressCard时,缓存存储适配器224可以被配置为使用PCIExpress或者USB。
现在参考图2B,其示出了根据本公开原理的一个计算系统的备选示例。计算机250包括处理器252,其与主存储器254和图形处理模块256对接。处理器252经由南桥模块258与外设对接。例如,南桥模块258提供对PCI Express插槽270的访问。PCI Express卡222和缓存存储适配器224被示为安装在PCI Express插槽270中。
处理器252、主存储器254、图形处理模块256以及南桥模块258被统称为主机272。缓存存储适配器224可以以不同方式被实现或配置,以利用不同于图2A中主机232的主机272的架构。主机232或者主机272可以实现目标模式驱动器(诸如SCSI目标模式驱动器)或者发起方模式驱动器以用于与缓存存储适配器224通信。
在图2B中,缓存存储适配器224被示为与存储区域网络280对接。存储区域网络280包括使用连网部件连接的一个或多个存储设备,连网部件可以包括通用计算机连网部件和/或专用于存储的连网部件。例如,存储区域网络280可以包括光纤通道互连、无限带宽互连、以太网互连(诸如千兆位或者10千兆位以太网互连)、通过以太网的光纤通道互连、iSCSI互连以及通过以太网的ATA互连。
存储区域网络280还可以向其他计算机提供存储资源。仅作为示例,第二计算机282和第三计算机284被示为与存储区域网络280对接。在各种实现中,计算机250可以向存储区域网络280的存储资源写入数据,该数据将由第二计算机282和/或第三计算机284访问。
在这些情况中,可以通过启用缓存存储适配器224的写通(write-through)模式而改善所写入数据的一致性。在写通模式中,缓存存储适配器224以尽可能小的延迟向存储区域网络280提供被修改的数据。在诸如写回(write-back)模式的其他模式中,在被修改的数据被写回存储区域网络280之前,缓存存储适配器224可以在较长时段内存储被修改的数据。
现在参考图3A,其示出了缓存存储适配器300的一个示例的高级别框图。仅作为示例,缓存存储适配器300被示为与主机232和存储设备230对接。缓存存储适配器300包括处理器310,其可以执行来自诸如闪存存储器或者只读存储器的固件312的指令。处理器310可以包括内部临时存储器,并且可以在易失性存储器314中存储临时指令和数据信息。
处理器310与非易失性RAM(随机访问存储器)320对接。非易失性RAM 320可以包括易失性RAM,诸如SRAM(静态随机访问存储器)、DRAM(动态随机访问存储器)或者SDRAM(同步动态随机访问存储器)。非易失性RAM 320包括使易失性RAM具有非易失性RAM属性的部件。
仅作为示例,非易失性RAM 320可以包括后备电源,诸如电池,其可以是可充电电池。非易失性RAM 320还可以包括超级电容器或者任何适当类型的双电层电容器,其提供功率以保持非易失性RAM320的内容。非易失性RAM 320因此可以在有限的时段内保持数据。在该时段内,可以向缓存存储适配器300提供后备功率。例如,不间断电源或者后备发电机可以恢复向缓存存储适配器300的功率。
处理器310还可以与固态驱动器330对接。固态驱动器330包括诸如闪存存储器的非易失性存储器。仅作为示例,闪存存储器可以包括单级单元(SLC)存储单元、多级单元(MLC)存储单元和/或企业MLC存储单元,其被设计为具有低于标准MLC存储单元的错误率。存储单元可以是NAND存储单元。
处理器310执行将来自存储设备230的数据缓存到固态驱动器330中的指令。关于什么数据被存储在固态驱动器330中的信息被称为缓存元数据。缓存元数据被存储在非易失性RAM 320中。缓存元数据还可以存储与固态驱动器中存储的数据有关的附加属性,诸如最后访问时间、访问次数以及数据是否被修改过。
由主机232提供的写数据被存储在非易失性RAM 320中。非易失性RAM 320中被用于存储写数据的部分称为写缓冲区。处理器310可以执行非易失性RAM 320中的特定部分作为写缓冲区。处理器310可以根据写缓冲区需要多少空间而调节此量。
在各种实现中,处理器310不进行对非易失性RAM 320中的写缓冲区的任何显式指定。相反,处理器310将缓存元数据和写缓冲区数据二者都存储在非易失性RAM 320中。当非易失性RAM 320中剩余的空闲空间有限时,可以减少写缓冲区数据的量。
在各种实现中,处理器310可以将缓存元数据存储在非易失性RAM 320的地址范围的一端,并且从非易失性RAM 320的地址范围的相对端开始存储写缓冲区。随着更多的缓存元数据和写缓冲区数据被存储,非易失性RAM 320的相应部分扩展以彼此相遇。处理器310继而可以负责确保在写缓冲区与缓存元数据之间不存在重叠。
固态驱动器330可以包括存储单元以及存储控制器。存储控制器可以实现平均读写算法(wear leveling algorithms),其动态地向固态驱动器330中的各个位置分配数据,以便最大化固态驱动器330的可用生命周期。
固态驱动器330可以由一个或多个控制器集成电路以及一个或多个存储集成电路实现。这些集成电路可以被安装在缓存存储适配器300的主电路板上。备选地,固态驱动器330的集成电路可以是现在独立电路板上,该独立电路板可以作为子板被插入缓存存储适配器300。
在其他实现中,固态驱动器330可以是全封闭驱动器,其可在零售商处获得以供一般性使用,诸如被用作膝上型计算机的主硬盘驱动器。在这些实现中,固态驱动器330可以被安装至缓存存储适配器300,或者可以经由柔性缆线被连接到缓存存储适配器300。
仅作为示例,固态驱动器330可以经由SATA、eSATA或者SAS(串行附接SCSI)接口而被安装在与主机232和缓存存储适配器300共同的机箱内部。缓存存储适配器300可以被配置使得固态驱动器330可被替换以增加固态驱动器330的大小以及在固态驱动器的可用生命周期到期时替换它。
缓存存储适配器300可以提供与包括固态驱动器330的多个固态驱动器的连通性。在各种实现中,固态驱动器的容量和性能特性不必是统一的。在各种实现中,固态驱动器之一(例如固态驱动器330)可以被安装至缓存存储适配器300,而其他固态驱动器经由缆线被安装至缓存存储适配器300。
现在参考图3B,示出了缓存存储适配器350的实现示例的另一高级别功能框图。处理器310、固件312、易失性存储器314和非易失性RAM 320可以类似于图3A中所示。在图3B中,固态驱动器360被示为独立于缓存存储适配器350。固态驱动器360因此可以独立于缓存存储适配器350被安装,并且设置可以不在缓存存储适配器350的相同计算机机箱内。
现在参考图4,示出了缓存存储适配器400的一个实现示例的功能框图。缓存存储适配器400包括执行模块410和存储模块420。执行模块410可以包括处理器和存储器,其中处理器执行来自存储器的指令以执行各种功能。
例如,图4的执行模块包括请求转译模块422、查找模块424、输入/输出优化模块426、缓存回收模块424、预读(read-ahead)模块430以及缓存未命中模块432。请求转译模块422将来自主机232的命令转译为可由执行模块410的其他模块使用的形式。而且,请求转译模块422可以将来自主机232的命令转译为对应于存储设备230的形式。
仅作为示例,主机232可以向请求转译模块422提供SCSI命令。请求转译模块422继而可以将这些命令转换为通用访问命令和/或可以将这些命令转换为对应于存储设备230的格式,诸如光纤通道命令。在各种实现中,请求转译模块422可以按照不同于控制命令来对待诸如读命令和写命令的访问命令。例如,控制命令可以经历最少的转译或者不经历转译,并且随后被传递给存储设备230。
存储模块420包括非易失性RAM 440。在非易失性RAM 400中,执行模块410存储缓存元数据442,并且使用一些非易失性RAM 440作为写缓冲区444。执行模块410可以分配非易失性RAM 440的特定部分以用作写缓冲区444。该分配可以随需调节。备选地,执行模块410可以仅仅将写缓冲区数据存储在非易失性RAM 440中,而不单独设置非易失性RAM 440的任何特定部分作为写缓冲区444。
存储模块420还在逻辑上包括固态驱动器450,其被更为一般地称为固态存储设备。尽管被示为缓存存储器适配器400的一部分的,但是如上所述,固态驱动器450可被可拆卸地安装至缓存存储适配器400,或者可以独立于缓存存储适配器400并且经由缆线连接。固态驱动器450可以被安装在缓存存储适配器400的共同机箱中,或者可以在该机箱外部。固态驱动器450可以使用SATA或者eSATA与缓存存储适配器400的其他部分通信。
存储设备230被称为外部存储设备,因为存储设备230在功能上和物理上都独立于缓存存储适配器400。在很多实现中,存储设备230将在独立于安装有缓存存储适配器400的计算机机箱的机箱中。实际上,存储设备230甚至可以不在缓存存储适配器400的相同服务器机架中,或者甚至不在缓存存储适配器400的同一间房间中。
特别地,当存储设备230被实现为SAN(存储区域网络)时,存储设备230可以不限于单个位置。在各种实现中,诸如SAN(存储区域网络)的存储设备230的实现可以隐藏底层复杂性。存储设备230因此可以向缓存存储适配器300提供接口,就像存储设备230是单个硬盘卷(例如单个硬盘驱动器)一样。
当请求转译模块422接收到读请求时,作为该读请求目标的地址被提供给查找模块424。查找模块424查询缓存元数据442以确定目标地址当前是否被缓存在读缓冲区444或者固态驱动器450中。查找模块424生成被缓存的目标地址的命中列表,并且生成未被缓存的地址的未命中列表。
查找模块424将未命中列表提供给缓存未命中模块432。缓存未命中模块432通常将从存储设备230请求目标地址。基于读请求的大小,查找模块424可以将读请求分为多个查找请求。对于每个查找请求,查找模块424基于缓存元数据442确定命中列表和未命中列表。
对存储设备230的访问的粒度可以不同于从主机232接收的访问请求的粒度。例如,主机232可以请求字节或者字,而存储设备230可以按块访问。换言之,每个读或者写可以作为一个或多个块被执行。仅作为示例,每个块的大小可以是4千字节。缓存未命中模块432因此可以从存储设备230请求将包括来自未命中列表的目标地址的任何块。这通过读取来自存储设备230的块而自动地利用了空间局部性,其可以包括目标地址之前和/或之后的数据。
而且,缓存未命中模块432可以被配置为同时从存储设备230请求一个或多个后续块和/或一个或多个先前块,以试图进一步利用空间局部性。预读模块430可以尝试预测在不久的将来将访问什么块。预读模块430继而向存储设备230发送针对这些块的读请求。在各种实现中,预读模块430可以等待发出这些读请求,直到存储设备230结束了对来自缓存未命中模块432的请求的服务。
输入/输出优化模块426可以跟踪由主机232请求的访问以及被发送到存储设备230的读请求。输入/输出优化模块426可以被配置为动态地校准存储设备230的温度和局部性信息。该校准可以逐个区域进行,其中基于输入/输出优化模块426所做的决策,每个区域可以是预定数目的块或者可以具有可变的大小。
术语“温度”是指存储设备230的给定区域中的活动量。局部性是指在给定的块已被访问之后访问周围块的可能性。输入/输出优化模块426可以基于一个块在不久的将来被访问的概率而调用预读模块430。
由存储设备230提供的读数据被存储在写缓冲区444中。缓存元数据442被更新以指示该数据已被存储在写缓冲区444中。查找模块424继而可以利用来自命中列表和未命中列表二者的数据而经由请求转译模块422对读请求做出响应。
当请求转译模块422从主机232接收到写请求时,随附于写请求的数据被存储在写缓冲区444中。该新近存储的数据被称为“脏”,因为它不同于存储设备230中存储的数据。最终,被修改的数据将被发送给存储设备230。然而,在写通模式中,由写缓冲区444接收的数据以尽可能小的延迟被传递给存储设备230。如上所述,当其他系统正在访问存储设备230并且因此需要访问被修改的数据时,可以使用写通模式。
写缓冲区444中的数据被写入固态驱动器450,因为写缓冲区444的容量与固态驱动器450相比是有限的。在各种实现中,对固态驱动器450的写入需要对固态驱动器450的整个块的每个元素的写入。固态驱动器450的块大小可以与存储设备230的块大小相同或者不同。
随着越来越多的写/擦除被执行,固态驱动器通常将在性能上有所下降并且最终变为不可用。因此,一旦整个块的有价值的数据将被写入,可以将来自写缓冲区444的数据写入固态驱动器450。这防止了固态驱动器450的相同块在一条新数据被添加到该块时必须被重新写入。而且,对一条数据的改变可以在被降级到固态驱动器450之前被写入写缓冲区多次。因此,固态驱动器450中用于该条数据的存储单元仅经历一个写周期,即使该数据被改变多次。
缓存回收模块428确定固态驱动器450中的数据何时不应再被缓存。数据可以从固态驱动器450中被实际删除,或者在其他实现中,可以将存储有该数据的区域标记为空闲。因此,新的缓存数据可以覆写被回收的数据。在回收之前,尚未被发送至存储设备230的任何脏数据被冲刷(flush)到存储设备230中。而且,在周期性的时刻或者由各种参数指定的其他间隔,固态驱动器450中存储的脏数据可以被冲刷到存储设备230中,因此存储设备230反映最近的修改。仅作为示例,固态驱动器450可以在超过阈值数量的脏数据被存储在固态驱动器450中时将数据冲刷到存储设备230。
现在参考图5,其示出了缓存存储适配器的一个实现示例的功能框图。缓存存储适配器500的元件可以与上文图4中描述的具有相同参考标号的元件类似地工作。在图5中,显式地示出了在图4中已被隐含描述的某些连接。
例如,输入/输出优化模块426观测在请求转译模块422与查找模块424之间传送的请求。而且,输入/输出优化模块426向预读模块430提供将从存储设备230被请求的目标地址。
仲裁器504从预读模块430和缓存未命中模块432接收请求,并且将这些请求发送至存储设备230。仲裁器504可以将来自缓存未命中模块432的请求的优先级设置为高于来自预读模块430的请求。仲裁器504还可以将请求(诸如相邻请求)进行组合,以允许对存储设备230的更为有效的访问。
缓冲区控制模块508确定来自写缓冲区444的数据何时应当被发送或者降级到固态驱动器450中。当数据被发送至固态驱动器450时,缓冲区控制模块508更新缓存元数据442以反映新的存储位置。缓冲区控制模块508和缓存回收模块428可以与输入/输出优化模块426通信,以分别确定哪些数据被降级到固态驱动器450中以及哪些数据从固态驱动器450中被回收。
因此从存储设备230读取的数据被存储在写缓冲区444中,该数据通路在图5中被明确地示出。当查找模块424处理读请求时,缓存元数据442指示写缓冲区444和/或固态驱动器450中存储所请求数据的位置。这些位置被提供给写缓冲区444和/或固态驱动器450,其继而将所请求的数据提供给查找模块424。查找模块424继而可以组合数据,并且经由请求转译模块422对来自主机232的请求做出响应。
当查找模块424处理写请求时,随附于写请求的数据被提供给写缓冲区444以供存储。缓存回收模块428更新缓存元数据442以指示先前存储于固态驱动器450中的数据已被回收并且因此不再被缓存。在各种实现中,缓存回收模块428可以利用缓冲区控制模块508验证写缓冲区444没有存储将要被回收的数据的已修改版本。
现在参考图6,它是呈现根据本公开原理的缓存存储适配器的操作示例的流程图。控制开始于604,在此如果接收到读请求,控制转至608;否则控制转至612。在608,读请求被转译,并且控制继续到616。在616,如果读请求的目标在写缓冲区中,控制转至620;否则,控制转至624。
在620,控制从写缓冲区提供读请求所请求的数据,并且继续到612。在624,控制确定目标是否被存储在固态驱动器中。如果是,控制转至628;否则,控制转至632。在628,控制响应于读请求而从固态驱动器提供数据并且继续到612。在632,控制从存储设备请求数据并且继续到636。在636,控制将来自存储设备的数据存储在写缓冲区中,并且继续到620。
在612,控制确定是否已经接收到写请求。如果是,控制转至640;否则,控制转至644。在640,控制转译写请求,并且继续到648。在648,控制将与写请求相关联的数据写入写缓冲区,并且继续到644。在644,控制确定固态驱动器中的空闲空间是否小于一个阈值。如果是,控制转至652;否则控制转至656。在652,为了释放固态驱动器中的空间,控制确定要回收哪些块并且继续到660。
在660,如果任何要回收的块为脏,则控制转至664;否则,控制转至668。在664,控制将脏数据写入存储设备,并且继续到668。在668,控制将固态驱动器中的已回收块标记为空闲,这意味着它们可以被新数据覆盖。在各种实现中,如果针对被标记为空闲的块的请求达到,该块可以被重新标志为使用中,并且数据继而被用于服务该请求。控制继续到656。
在656,控制确定块是否应当从写缓冲区中被降级。如果是,控制转至672;否则,控制转至676。在672,控制将数据从写缓冲区写入固态驱动器,并且继续到680。在680,控制将来自写缓冲区的已写块标记为空闲以供其他数据使用,并且继续到676。
在676,控制确定存储设备是否为空闲。如果是,控制转至684;否则空闲返回604。例如,当存储设备未服务于写或读请求时,可以认为它是空闲的。在684,控制确定固态驱动器中的任何块是否为脏。如果是,控制转至688;否则,控制转至692。在688,控制将脏块写入存储设备并且返回604。在692,控制分析读请求和写请求并且继续到694。
在694,控制根据活动级别以及相邻块在给定块已被请求之后被请求的概率而表征存储设备的区域。控制继续到696,在此控制确定是否可以基于694处的表征而预测将来的读访问。如果是,控制转至698;否则,控制返回604。在698,控制以694的表征所预测的地址从存储设备预先取回数据。控制继而返回604。
现在参考图7,它是描绘根据本公开原理的缓存存储适配器的示例操作的流程图。特别地,图7关注读和写请求处理的实现示例。控制开始于704,在此如果接收到读请求,则控制转至708;否则控制转至712。在708,控制转译读请求。控制继续到716,在此基于读请求的大小而将读请求解析为查找请求。
控制继续到720,在此使用缓存元数据服务查找请求。控制继续到724,在此基于缓存中可获得的数据(在写缓冲区中或者固态驱动器中)而创建命中列表。控制继续到728,在此生成缓存中不可获得的数据的未命中列表。控制继续到732,在此如果未命中列表为空,则控制转至736;否则控制转至740。
在740,控制调用缓存未命中处理机,并且将未命中列表提供给缓存未命中处理机。控制继续到744,在此根据未命中列表从存储设备取回数据。控制继续到748,在此将从存储设备取回的数据存储在写缓存中。控制继续到752,在此控制更新缓存元数据和未命中列表,以指示所请求的数据现在被存储在写缓存中。控制继续到736,在此返回对读请求的响应,其包括对应于命中列表和未命中列表的合成结果。控制继而继续到712。
在712,控制确定是否接收到写请求,如果是则控制转至760;否则控制返回704。在760,控制转译写请求。控制继续到764,在此控制将对应于写请求的数据写入写缓冲区。控制继续到768,在此如果写通模式为活跃,则控制转至772;否则控制转至776。在772,控制将数据写入存储设备并且继续到776。在776,控制更新缓存元数据以指示新存储的数据并且返回704。
控制被示为返回704是因为可以使用其自己的控制环来服务读请求和写请求,同时可以使用其他控制环来执行其他功能,诸如降级、回收、输入/输出优化和冲刷。其他控制环可以并行地操作,并且可以以低于读和写请求服务的优先级操作。
可以通过多种形式实现本公开的广义教导。因此,尽管本公开包括具体示例,但是本公开的真正范围不应受到限制,因为基于对附图、说明书和所附权利要求的研读,其他修改将变得易见。

Claims (20)

1.一种接口适配器,包括:
包含非易失性随机访问存储器(RAM)的存储模块,其中所述存储模块被配置为将元数据存储在所述非易失性RAM中,其中所述元数据标识缓存于固态存储设备中的来自外部存储设备的数据;以及
查找模块,被配置为接收读请求,以及响应于所述读请求并且基于所述元数据而选择性地提供来自所述固态存储设备的已缓存数据或者提供从所述外部存储设备获取的第二数据。
2.根据权利要求1所述的接口适配器,其中:
所述存储模块进一步被配置为在所述非易失性RAM中维护写缓冲区,
所述第二数据在从所述外部存储设备被获取之后被存储在所述写缓冲区中,以及
所述第二数据在被存储到所述写缓冲区中之后被存储到所述固态存储设备中。
3.根据权利要求2所述的接口适配器,其中所述查找模块被配置为利用来自所述固态存储设备的数据或者利用来自所述写缓冲区的数据选择性地对所述读请求做出响应。
4.根据权利要求3所述的接口适配器,其中所述查找模块被配置为利用来自所述写缓冲区的所述第二数据对所述读请求做出响应。
5.根据权利要求2所述的接口适配器,进一步包括缓冲区控制模块,被配置为确定何时将来自所述写缓冲区的所述第二数据存储到所述固态存储设备中。
6.根据权利要求5所述的接口适配器,其中所述缓冲区控制模块被配置为基于所述写缓冲区中存在的用于存储在所述固态存储设备中的相邻位置中的、包括所述第二数据在内的数据的预定数量,而将所述第二数据存储到所述固态存储设备中。
7.根据权利要求2所述的接口适配器,其中所述查找模块被配置为接收写请求,并且将与所述写请求相关联的写数据存储在所述写缓冲区中。
8.根据权利要求7所述的接口适配器,其中当写通模式被启用时,所述写数据还被提供给所述外部存储设备。
9.根据权利要求1所述的接口适配器,进一步包括缓存回收模块,被配置为选择性地允许所述固态存储设备中的选定数据被覆盖。
10.根据权利要求9所述的接口适配器,其中所述缓存回收模块被配置为在所述选定数据被覆盖之前将所述选定数据的已修改部分发送至所述外部存储设备。
11.根据权利要求1所述的接口适配器,其中所述查找模块被配置为响应于所述读请求而构建存在于所述存储模块中的数据的命中列表,构建不存在于所述存储模块中的数据的未命中列表,以及根据所述未命中列表向所述外部存储设备发送数据请求。
12.根据权利要求1所述的接口适配器,进一步包括转译模块,被配置为将第一总线请求转译为所述读请求,以及将第二总线请求转译为写请求。
13.一种主机总线适配器,被配置为安装在计算机中,所述主机总线适配器包括:
固态存储设备;
非易失性随机访问存储器(RAM);以及
执行模块,被配置为:
将来自外部存储设备的数据缓存在所述固态存储设备中;
将元数据存储在所述非易失性RAM中,所述元数据指示什么数据被缓存在所述固态存储设备中;
从所述计算机的中央处理器接收读请求;以及
使用来自所述固态存储设备的已缓存数据选择性地对所述读请求做出响应。
14.根据权利要求13所述的主机总线适配器,其中所述执行模块被配置为:
使用所述非易失性RAM的一部分作为写缓冲区;
从所述中央处理器接收写请求;
在将对应于所述写请求的写数据存储在所述固态存储设备之前将所述写数据存储在所述写缓冲区中;
响应于所述读请求而选择性地提供来自所述写缓冲区的数据;
当所述元数据指示用于所述读请求之一的第一数据未被存储在所述写缓冲区或者所述固态存储设备中时,从所述外部存储设备请求所述第一数据;以及
一旦从所述外部存储设备接收到所述第一数据,便在将所述第一数据存储在所述固态存储设备中之前将所述第一数据存储在所述写缓冲区中。
15.一种操作接口适配器的方法,所述方法包括:
将元数据存储在所述接口适配器的非易失性随机访问存储器(RAM)中,其中所述元数据标识被缓存在固态存储设备中的来自外部存储设备的数据;
接收读请求;以及
响应于所述读请求并且基于所述元数据,选择性地提供来自所述固态存储设备的已缓存数据或者提供从所述外部存储设备获取的第二数据。
16.根据权利要求15所述的方法,进一步包括:
在所述非易失性RAM中维护写缓冲区;
在从所述外部存储设备获取所述第二数据之后将所述第二数据存储在所述写缓冲区中;
在将所述第二数据存储在所述写缓冲区中之后将所述第二数据存储在所述固态存储设备中;以及
利用来自所述写缓冲区的所述第二数据选择性地对所述读请求做出响应。
17.根据权利要求16所述的方法,进一步包括:基于所述写缓冲区中存在的用于存储在所述固态存储设备中的相邻位置中的、包括所述第二数据在内的数据的预定数量,在一个时刻将所述第二数据存储到所述固态存储设备中。
18.根据权利要求16所述的方法,进一步包括:
接收写请求;以及
将与所述写请求相关联的写数据存储在所述写缓冲区中,
其中当写通模式被启用时,所述写数据还被提供给所述外部存储设备。
19.根据权利要求15所述的方法,进一步包括:
选择性地允许所述固态存储设备中的选定数据被覆盖;以及
在所述选定数据被覆盖之前,将所述选定数据的已修改部分发送给所述外部存储设备。
20.根据权利要求15所述的方法,进一步包括:
响应于所述读请求,构建存在于所述固态存储设备中的数据的命中列表;
响应于所述读请求,构建未存在于所述固态存储设备中的数据的未命中列表;
根据所述未命中列表向所述外部存储设备发送数据请求;以及
基于所述命中列表和所述未命中列表的组合,对所述读请求做出响应。
CN2011800224312A 2010-05-05 2011-05-05 缓存存储适配器架构 Pending CN102906714A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US33175910P 2010-05-05 2010-05-05
US61/331,759 2010-05-05
US13/101,534 US20110276746A1 (en) 2010-05-05 2011-05-05 Caching storage adapter architecture
PCT/US2011/035370 WO2011140349A1 (en) 2010-05-05 2011-05-05 Caching storage adapter architecture
US13/101,534 2011-05-05

Publications (1)

Publication Number Publication Date
CN102906714A true CN102906714A (zh) 2013-01-30

Family

ID=44902717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011800224312A Pending CN102906714A (zh) 2010-05-05 2011-05-05 缓存存储适配器架构

Country Status (5)

Country Link
US (1) US20110276746A1 (zh)
EP (1) EP2567323A1 (zh)
JP (1) JP2013530448A (zh)
CN (1) CN102906714A (zh)
WO (1) WO2011140349A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786403A (zh) * 2015-01-13 2016-07-20 三星电子株式会社 包括缓冲器和主存储器的存储装置及用户装置

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013108132A2 (en) 2012-01-20 2013-07-25 Marvell World Trade Ltd. Cache system using solid state drive
US9507524B1 (en) * 2012-06-15 2016-11-29 Qlogic, Corporation In-band management using an intelligent adapter and methods thereof
US20140219021A1 (en) * 2013-02-07 2014-08-07 Seagate Technology Llc Data protection for unexpected power loss
US9146684B2 (en) 2012-09-28 2015-09-29 Netapp, Inc. Storage architecture for server flash and storage array operation
US9116819B2 (en) 2012-10-17 2015-08-25 Datadirect Networks, Inc. Reducing metadata in a write-anywhere storage system
US9454305B1 (en) 2014-01-27 2016-09-27 Qlogic, Corporation Method and system for managing storage reservation
US10503661B2 (en) * 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US9423980B1 (en) 2014-06-12 2016-08-23 Qlogic, Corporation Methods and systems for automatically adding intelligent storage adapters to a cluster
US9436654B1 (en) 2014-06-23 2016-09-06 Qlogic, Corporation Methods and systems for processing task management functions in a cluster having an intelligent storage adapter
US9940241B1 (en) * 2014-07-03 2018-04-10 Sanmina Corporation Network system with cache offload service for flash storage
US9477424B1 (en) 2014-07-23 2016-10-25 Qlogic, Corporation Methods and systems for using an intelligent storage adapter for replication in a clustered environment
US9460017B1 (en) 2014-09-26 2016-10-04 Qlogic, Corporation Methods and systems for efficient cache mirroring
US9934177B2 (en) 2014-11-04 2018-04-03 Cavium, Inc. Methods and systems for accessing storage using a network interface card
US9483207B1 (en) 2015-01-09 2016-11-01 Qlogic, Corporation Methods and systems for efficient caching using an intelligent storage adapter
TWI536166B (zh) * 2015-01-27 2016-06-01 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元以及記憶體儲存裝置
CN105988950B (zh) * 2015-02-03 2019-05-21 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置
US9891833B2 (en) * 2015-10-22 2018-02-13 HoneycombData Inc. Eliminating garbage collection in nand flash devices
US10956322B2 (en) 2016-06-02 2021-03-23 International Business Machines Corporation Storage drive dependent track removal in a cache for storage
JP2021033845A (ja) 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
US11099785B2 (en) * 2019-12-23 2021-08-24 Micron Technology, Inc. Linking access commands for a memory sub-system
US11977778B2 (en) * 2022-03-09 2024-05-07 Micron Technology, Inc. Workload-based scan optimization

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120868A1 (en) * 2001-12-21 2003-06-26 Royer Robert J. Method and system to cache metadata
CN1503140A (zh) * 2002-11-26 2004-06-09 ض� Bios存储阵列
GB2403834A (en) * 2000-06-23 2005-01-12 Intel Corp Non-volatile ferro-electric RAM cache
US20070094445A1 (en) * 2005-10-20 2007-04-26 Trika Sanjeev N Method to enable fast disk caching and efficient operations on solid state disks

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4110794A (en) * 1977-02-03 1978-08-29 Static Systems Corporation Electronic typewriter using a solid state display to print
US5768623A (en) * 1995-09-19 1998-06-16 International Business Machines Corporation System and method for sharing multiple storage arrays by dedicating adapters as primary controller and secondary controller for arrays reside in different host computers
JP3214444B2 (ja) * 1998-05-19 2001-10-02 日本電気株式会社 磁気ディスク装置の制御方法と制御装置
US6490652B1 (en) * 1999-02-03 2002-12-03 Ati Technologies Inc. Method and apparatus for decoupled retrieval of cache miss data
JP4111910B2 (ja) * 2003-12-26 2008-07-02 富士通株式会社 ディスクキャッシュ装置
US7609303B1 (en) * 2004-10-12 2009-10-27 Melexis Tessenderlo Nv Low noise active pixel image sensor using a modified reset value
US20070136523A1 (en) * 2005-12-08 2007-06-14 Bonella Randy M Advanced dynamic disk memory module special operations
US20080059726A1 (en) * 2006-08-31 2008-03-06 Carlos Rozas Dynamic measurement of an operating system in a virtualized system
KR101490327B1 (ko) * 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
JP2008158724A (ja) * 2006-12-22 2008-07-10 Fujitsu Ltd ディスクアレイ装置のステージング方法
JP2008225558A (ja) * 2007-03-08 2008-09-25 Fujitsu Ltd データ中継集積回路、データ中継装置およびデータ中継方法
KR101563647B1 (ko) * 2009-02-24 2015-10-28 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
US8468370B2 (en) * 2009-09-16 2013-06-18 Seagate Technology Llc Systems, methods and devices for control of the operation of data storage devices using solid-state memory and monitoring energy used therein
US8838903B2 (en) * 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use
US9859480B2 (en) 2015-08-20 2018-01-02 Nichia Corporation Light emitting device and method of manufacturing light emitting device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2403834A (en) * 2000-06-23 2005-01-12 Intel Corp Non-volatile ferro-electric RAM cache
US20030120868A1 (en) * 2001-12-21 2003-06-26 Royer Robert J. Method and system to cache metadata
CN1503140A (zh) * 2002-11-26 2004-06-09 ض� Bios存储阵列
US20070094445A1 (en) * 2005-10-20 2007-04-26 Trika Sanjeev N Method to enable fast disk caching and efficient operations on solid state disks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786403A (zh) * 2015-01-13 2016-07-20 三星电子株式会社 包括缓冲器和主存储器的存储装置及用户装置
CN105786403B (zh) * 2015-01-13 2020-09-11 三星电子株式会社 包括缓冲器和主存储器的存储装置及用户装置

Also Published As

Publication number Publication date
US20110276746A1 (en) 2011-11-10
WO2011140349A1 (en) 2011-11-10
JP2013530448A (ja) 2013-07-25
EP2567323A1 (en) 2013-03-13

Similar Documents

Publication Publication Date Title
CN102906714A (zh) 缓存存储适配器架构
Shen et al. Didacache: an integration of device and application for flash-based key-value caching
US10275162B2 (en) Methods and systems for managing data migration in solid state non-volatile memory
US10394710B2 (en) Storage class memory (SCM) memory mode cache system
US10503635B2 (en) System and method for adaptive optimization for performance in solid state drives based on segment access frequency
US10013344B2 (en) Enhanced SSD caching
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
CN108628772A (zh) 用于管理数据存储设备中的映射数据的装置和方法
US11544093B2 (en) Virtual machine replication and migration
US11157402B2 (en) Apparatus and method for managing valid data in memory system
KR20220022318A (ko) 컨트롤러 및 메모리 시스템
US11016889B1 (en) Storage device with enhanced time to ready performance
US11416403B2 (en) Method and apparatus for performing pipeline-based accessing management in storage server with aid of caching metadata with hardware pipeline module during processing object write command
CN115328402A (zh) 数据缓存的方法和装置
US11422702B2 (en) Managing utilization of storage class memory (SCM) resources
US9208073B2 (en) Firmware storage and maintenance
US20230384960A1 (en) Storage system and operation method therefor
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof
EP4328755A1 (en) Systems, methods, and apparatus for accessing data in versions of memory pages
US20240118829A1 (en) Relocation of data in a storage device based on access information
US20220164119A1 (en) Controller, and memory system and data processing system including the same
KR20240009756A (ko) 데이터 저장 장치, 이를 위한 메모리 컨트롤러 및 그 동작 방법
EP3862863A1 (en) Method for managing performance of logical disk, and storage array
CN117609105A (zh) 用于访问存储器页的版本中的数据的方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130130