CN106155583B - 缓存固态设备读取请求结果的系统和方法 - Google Patents

缓存固态设备读取请求结果的系统和方法 Download PDF

Info

Publication number
CN106155583B
CN106155583B CN201510433625.1A CN201510433625A CN106155583B CN 106155583 B CN106155583 B CN 106155583B CN 201510433625 A CN201510433625 A CN 201510433625A CN 106155583 B CN106155583 B CN 106155583B
Authority
CN
China
Prior art keywords
data
request
condition apparatus
solid condition
buffer
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
CN201510433625.1A
Other languages
English (en)
Other versions
CN106155583A (zh
Inventor
L·A·森德尔巴赫
J·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.)
SanDisk Technologies LLC
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Priority to CN201510433625.1A priority Critical patent/CN106155583B/zh
Publication of CN106155583A publication Critical patent/CN106155583A/zh
Application granted granted Critical
Publication of CN106155583B publication Critical patent/CN106155583B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

缓存固态设备读取请求结果的系统和方法。公开了用于缓存固态设备的读取请求的结果的技术。在一些实施例中,所述技术可以被实现为缓存固态设备读取请求结果的方法,该方法包括:在固态设备处接收来自被通信地耦合到固态设备的主机设备的数据请求;以及响应于数据请求,使用固态设备的控制器从固态设备取回压缩的数据大块。所述技术还可以包括:对压缩的数据大块解压缩;向主机设备返回对数据请求响应的数据大块的块;以及在数据缓冲器中缓存数据大块的一个或多个另外的块,用于随后的读取请求。

Description

缓存固态设备读取请求结果的系统和方法
技术领域
本发明涉及缓存固态设备读取请求结果的系统和方法。
背景技术
在进行数据压缩的固态设备(SSD)适配器中,能够将若干逻辑块寻址块(LBA)捆绑在一起以形成大得多的单元(例如,数据大块)。然后,能够使该单元通过适配器上的能够制造压缩LBA块的压缩引擎,压缩LBA块与以它们本来大小进行存储的情况相比占用少得多的空间。然后将该压缩的数据大块存储在SSD上(例如,NAND型闪速存储器上)。大小的减少量能够是50%或更多。这意味着,能够将若干LBA块作为单个单元存储在闪速存储器中。当访问这些LBA块以读取时,必须从闪速存储器中取回压缩的数据大块,然后解压缩。在所有解压缩的LBA块之中,可能只需要单个LBA块来满足读取请求。
经常使用高速外围组件互连(Peripheral Component Interconnect Express,PCIe)以将SSD连接到主机系统。高速PCI(PCI-Express)系统架构面临性能约束。首先,具有高设备扇出的典型的高速PCI光纤(诸如企业存储背板)的总的上行带宽(从高速PCI交换机(PCI-Express Switch)上行至主机)比下行带宽(从上述高速PCI交换机下行至所有连接的存储控制器)低。如果下游资源的带宽大于上行带宽,则这可能在PCIe交换机处存在瓶颈。这样的瓶颈可能延迟从SSD到主机设备的读取结果的取回。
发明内容
公开缓存对固态设备的读取请求的结果的技术。在一些实施例中,所述技术可以被实现为缓存固态设备读取请求结果的方法,该方法包括:在固态设备处接收来自被通信地耦合到固态设备的主机设备的数据请求;以及响应于数据请求,使用固态设备的控制器从固态设备取回(retrieve)压缩的数据大块。所述技术还可以包括:对压缩的数据大块解压缩;向主机设备返回对数据请求响应的数据大块的块;以及在数据缓冲器中缓存数据大块的一个或多个另外的块,用于随后的读取请求。
根据该示例性实施例的另外的方面,数据大块可以由逻辑块地址指示。
根据该示例性实施例的另外的方面,数据缓冲器可以设置在固态设备的存储器中。
根据该示例性实施例的另外的方面,数据缓冲器可以设置在主机设备的高速外围组件互连(PCIe)关联的存储器中。
根据该示例性实施例的另外的方面,所述技术可以包括:从主机设备接收第二数据请求;确定对第二数据请求响应的数据包含在数据缓冲器中;以及使用包含在数据缓冲器中的数据来服务(service)来自主机设备的第二数据请求。
根据该示例性实施例的另外的方面,使用包含在数据缓冲器中的数据来服务来自主机设备的第二数据请求可以包括向主机设备提供指向包含响应数据的数据缓冲器中的存储器的分散收集列表条目(scatter gather list entry)。
根据该示例性实施例的另外的方面,确定对第二数据请求响应的数据包含在数据缓冲器中可以由主机设备上的驱动器执行。
根据该示例性实施例的另外的方面,确定对第二数据请求响应的数据包含在数据缓冲器中可以由固态设备执行。
根据该示例性实施例的另外的方面,分散收集列表可以从主机设备上的驱动器提供。
根据该示例性实施例的另外的方面,所述技术还可以包括:记录(journal)对固态设备上数据的一个或多个写入;以及基于一个或多个所记录的写入请求来确定数据缓冲器中的数据是否有效。
根据该示例性实施例的另外的方面,所述技术还可以包括:从主机设备接收第二数据请求;确定对第二数据请求响应的数据包含在数据缓冲器中;以及基于一个或多个所记录的写入请求来确定数据缓冲器中的数据不是有效的。基于有效的响应数据不在缓冲器中的确定,所述技术可以包括:使用固态设备的控制器从固态设备取回第二压缩的数据大块;对第二压缩的数据大块解压缩;以及向主机设备返回对第二数据请求响应的第二数据大块的块。
根据该示例性实施例的另外的方面,所述技术可以包括使用算法来维护数据缓冲器。
根据该示例性实施例的另外的方面,算法可以包括使数据老化退出(aging dataout)数据缓冲器的最近最少使用算法(least recently used algorithm)、使数据老化退出数据缓冲器的最不常用算法(least frequently used algorithm)以及使数据老化退出数据缓冲器的自适应置换缓存算法(adaptive replacement caching algorithm)中的至少一种。
根据该示例性实施例的另外的方面,主机设备可以包括企业服务器、数据库服务器、工作站和计算机中的至少一个。
根据该示例性实施例的另外的方面,固态设备可以包括高速外围组件互连(PCIe)设备。尽管被描述为固态设备,实施例可以包括可以不是固态设备的设备(例如,PCIe硬盘驱动器)。
在一些实施例中,缓存固态设备读取请求结果的技术可以被实现为包括在计算机上可执行的一系列指令的计算机程序产品,所述计算机程序产品执行缓存固态设备读取请求结果的处理。所述计算机程序可以实现以下步骤:在固态设备处接收来自被通信地耦合到固态设备的主机设备的数据请求;响应于数据请求,使用固态设备的控制器从固态设备取回压缩的数据大块;对压缩的数据大块解压缩;向主机设备返回对数据请求响应的数据大块的块;以及在数据缓冲器中缓存数据大块的一个或多个另外的块,用于随后的读取请求。
在一些实施例中,缓存固态设备读取请求结果的技术可以被实现为缓存固态设备读取请求结果的系统。该系统可以包括主机设备和第一高速外围组件互连(PCIe)设备。第一高速外围组件互连(PCIe)设备可以包括存储在存储器中的指令。所述指令可以包括将响应于第一数据请求而被解压缩的数据大块的一个或多个块发送给数据缓冲器的指令。该系统还可以包括通信地耦合第一PCIe设备和主机设备的高速外围组件互连(PCIe)交换机,其中主机设备包括存储在存储器中的指令。存储在主机存储器中的指令可以包括确定对第二数据请求响应的数据是否包含在数据缓冲器中的指令以及基于对第二数据请求响应的数据包含在数据缓冲器中的确定从包含在数据缓冲器中的数据来服务第二数据请求的指令。
根据该示例性实施例的另外的方面,数据缓冲器可以设置在固态设备的存储器中。
根据该示例性实施例的另外的方面,数据缓冲器可以设置在主机设备的高速外围组件互连(PCIe)关联的存储器中。
根据该示例性实施例的另外的方面,所述技术还可以包括:在主机设备上的驱动器处确定对第二数据请求响应的数据包含在数据缓冲器中的指令;以及使用包含在数据缓冲器中的数据来服务来自主机设备的第二数据请求的指令,其中使用包含在数据缓冲器中的数据来服务来自主机设备的第二数据请求包括向主机设备提供指向包含响应数据的数据缓冲器中的存储器的分散收集列表条目。
现在将参考在附图中所示出的本公开的示例性实施例来更详细地描述本公开。虽然下面参考示例性实施例来描述本公开,但是应当理解的是,本公开并不限制于此。获得在本文中的教导的本领域普通技术人员将意识到其他实现方式、修改和实施例以及其他使用领域,这些都在本文中说明的本公开的范围之内,就此而言,本公开可以具有显著的实用性。
附图说明
为了方便更全面地理解本公开,现在参考附图,其中同样的元件使用同样的数字标记。这些附图不应当被理解为限制本公开,而仅仅用于示例。
图1示出根据本公开的实施例的图示与主机设备通信的多个固态设备的示例性框图。
图2图示根据本公开的实施例的用于缓存固态设备读取请求结果的示例性模块。
图3图示根据本公开的实施例的例示缓存固态设备读取请求结果的流程图。
图4图示根据本公开的实施例的例示缓存固态设备读取请求结果的流程图。
具体实施方式
本公开涉及缓存固态设备读取请求结果。本公开的实施例提供可以缓存响应于读取请求而取回但对满足读取请求并非必要的块的系统和方法。在进行数据压缩的固态设备(SSD)适配器中,能够将若干逻辑块寻址块(LBA)捆绑在一起以形成大得多的单元。然后,能够使该单元通过适配器上的能够制造压缩LBA块的压缩引擎,压缩LBA块与以它们本来大小进行存储的情况相比占用少得多的空间。然后将该压缩的数据大块存储在SSD上(例如,NAND型闪速存储器上)。大小的减少量能够是50%或更多。这意味着,能够将若干LBA块作为单个单元存储在闪速存储器中。当访问这些LBA块以读取时,必须从闪速存储器中取回压缩的数据大块,然后解压缩。在所有解压缩的LBA块之中,可能只需要单个LBA块来满足读取请求。传统地,系统丢弃对满足读取请求并非必要的解压缩的块。本公开的实施例提供缓存这样的额外块的系统和方法。在一些实施例中,这样的缓存可以在SSD设备上执行。在一个或多个实施例中,这样的缓存可以在主机设备上执行(例如,在基于高速非易失性存储(Non-Volatile Memory express,NVMe)规范的实施例中)。无论是在主机还是在SSD上的缓存都能够提高顺序读取性能。使用主机的存储器进行缓存可以释放(free up)PCIe适配器中的空间以存储用于将来访问的块。在与主机相关联的存储器中进行缓存还可以使用主机中的大存储器来推测性地(speculatively)存储读取。这可以针对推测性的读取提供对主机更快的访问,并且可以提高基于PCIe的SSD适配器的性能。
现在转向附图,图1是图示根据本公开的实施例的与主机设备通信的固态设备的示例性框图。图1包括多种计算技术,诸如主机系统102、主机CPU104和包含驱动器150的高速PCI根复合体(root complex)106。高速PCI交换机108可以经由高速PCI根复合体106将诸如目标110、116和112这样的多个目标(例如,诸如基于NVMe的目标这样的固态设备)通信地耦合到主机系统102。
目标110可以包含NVMe控制器112和非易失性存储114。目标116可以包含NVMe控制器118和非易失性存储120。目标122可以包含NVMe控制器124和非易失性存储126。
系统存储器128可以包含主机系统102经由存储器接口(例如,双倍数据速率类型三同步动态随机存取存储器(DDR3SDRAM))可访问的基于存储器的资源。系统存储器128能够采用任何适当的形式,诸如但不限于固态存储器(例如,闪速存储器或固态设备(SSD))、光学存储器以及磁存储器。虽然系统存储器128优选为非易失性的,但是也能够使用易失性存储器。如图1所示,系统存储器128可以包含一个或多个数据结构,诸如例如数据缓冲器138。
高速PCI根复合体106与高速PCI交换机108之间的连接142可以是例如基于高速PCI的接口。连接144、146和148也可以是基于高速PCI的接口。虽然仅例示了连接144、146和148,但是可以意识到的是,连接到高速PCI交换机108的目标的数量可以更少或显著地更多(例如,96个设备)。随着连接到高速PCI交换机108的目标的数量增加,连接142处的带宽可能变成阻塞点。
根据一些实施例,不同于PCIe的接口标准可以用于一个或多个部分,包括但不限于串行高级技术附件(SATA)、高级技术附件(ATA)、小型计算机系统接口(SCSI)、PCI扩展(PCI-X)、光纤信道、串行连接的SCSI(SAS)、安全数字(SD)、嵌入式多媒体卡(EMMC)以及通用闪速存储器(UFS)。
主机系统102能够采用任何适合的形式,诸如但不限于企业服务器、数据库主机、工作站、个人计算机、移动电话、游戏设备、个人数字助理(PDA)、电子邮件/文本消息接发设备、数字相机、数字媒体(例如MP3)播放器、GPS导航设备以及TV系统。
主机系统102和目标设备能够包括另外的组件,其未在图1中示出以简化附图。而且,在一些实施例中,并非存在所有所示出的组件。进一步地,各种控制器、模块和接口能够以任何适合的方式来实现。例如,控制器能够采取例如微处理器或处理器和存储可由(微)处理器执行的计算机可读程序代码(例如,软件或固件)的计算机可读介质、逻辑门、交换机、专用集成电路(ASIC)、可编程逻辑控制器以及嵌入式微控制器中的一个或多个的形式。
在进行数据压缩的SSD适配器中,若干LBA块被捆绑在一起以形成大得多的单元。然后该单元能够通过适配器上的压缩引擎,压缩引擎能够使LBA块比以它们本来大小存储它们的情况使用更少的空间。然后该数据大块被存储在SSD上。大小减少量能够是50%或更多。这意味着,能够将若干LBA块作为单个单元存储在SSD上。当访问这些LBA块以读取时,必须从SSD取回数据大块,并对其进行解压缩。这意味着,所有LBA块被解压缩,但是可能只需要单个LBA块以满足读取请求。可以在SSD中在RAM中携带其他LBA块以满足将来的请求。
本公开的实施例能够通过使用在读取请求的正常处理期间在基于压缩的SSD上取回但对满足该读取请求并非必要的其他LBA块来提高SSD读取性能。这些LBA块可以存储(例如,缓冲)在SSD适配器上、主机存储上或另外的可访问的位置处。
在PCIe实施例中,高带宽PCIe总线和主机存储的可用性可以便于这些LBA块在基于主机的存储上的存储。所读取的LBA块在主机系统上的该推测性存储能够被用于增加顺序或随机读取情况下的性能。当主机要求这些缓存的LBA块时,适配器能够用指向主机机器上存储器的SGL(分散收集列表)条目来响应。
例如,适配器上的驱动器能够包含监视来自主机的读取请求的指令。如果接收到读取请求,则驱动器可以确定对满足读取请求所必需的一个或多个块是否在缓冲器中。如果确定对满足读取请求所必需的一个或多个块在缓冲器中,则驱动器可以提供指向适当的缓冲LBA块的存储器地址的分散/收集列表(SGL)元素。主机能够取回LBA块,就好像SSD已经将其直接存储存取(direct memory accessed,DMA′d)到了存储器一样。这能够得到非常低的读取等待时间(latency read),从而能够极大地提高性能。
根据一些实施例,软件可以存在于可以处理读取请求的缓冲和监视的驱动器的外部。在一个或多个实施例中,可以提供定制命令(例如,定制读取命令),从而可以在从SSD读取之前检查缓冲器中的数据的可用性。利用缓冲器的读取请求的方法可以合并到一个或多个标准(例如,NVMe标准)中。
根据一些实施例,缓冲器可以使用记录来维护。例如,在适配器中记录可以用于确保主机中的数据在主机被重定向到该数据之前是有效的。驱动器可以监视和记录一个或多个写入请求。记录能够跟踪写入请求是否已经使早先发送给缓冲器的数据无效。驱动器可以包含可以指示块(例如,缓冲器中的LBA)的数据结构。如果驱动器检测到对应于这些块中的一个的写入请求,则缓冲器中的该块可以被无效和/或丢弃。对于对应于这样的块的随后的读取请求,适配器和/或驱动器可能必须重新访问数据大块并且再次取得LBA块。
在一些实施例中,可以使用一种或多种算法来维护数据缓冲器。例如,驱动器可以使用使数据老化退出数据缓冲器的最近最少使用算法、使数据老化退出数据缓冲器的最不常用算法和/或使数据老化退出数据缓冲器的自适应置换缓存算法。
图2图示根据本公开的实施例的用于缓存固态设备读取请求结果的示例性模块。如图3所示,SSD读取缓存模块210可以包含块缓冲模块212、记录模块214和缓冲器管理模块216。在一个或多个实施例中,SSD读取缓存模块210可以实现在设备驱动器(例如,图1的驱动器150)中或主机OS(例如,图1的主机CPU 104)上。根据一些实施例,SSD读取缓存模块210可以实现在SSD(例如,图1的目标110、目标116或目标122)的适配器中。
块缓冲模块212可以缓存作为读取请求的一部分取回并解压缩的一个或多个块。压缩LBA块可以比这样的块未被压缩的情况多存储50%或者甚至更大百分比的块。这意味着,能够将若干LBA块作为单个单元存储在闪速存储器中。当访问这些LBA块以读取时,必须从闪速存储器中取回压缩的数据大块,然后解压缩。在所有解压缩的LBA块之中,可能只需要单个LBA块来满足读取请求。块缓存模块212可以缓冲这样的额外的块。在一些实施例中,这样的缓冲可以在SSD设备上执行。在一个或多个实施例中,这样的缓冲可以在主机设备上执行(例如,在基于高速非易失性存储(NVMe)规范的实施例中)。块缓冲模块212可以监视来自主机的读取请求。如果接收到读取请求,则块缓冲模块212可以确定对满足读取请求所必需的一个或多个块是否在缓冲器中。如果确定对满足读取请求所必需的一个或多个块在缓冲器中,则块缓冲模块212可以提供指向适当的缓冲LBA块的存储器位置的分散/收集列表(SGL)元素。主机能够取回LBA块,就好像SSD已经将其直接存储存取(DMA′d)到了存储器一样。
无论是在主机还是SSD上,块缓存模块212的缓冲能够提高顺序读取性能。使用主机的存储器进行缓冲可以释放PCIe适配器中的空间以存储用于将来访问的块。在与主机相关联的存储器中进行缓存还可使用主机中的大存储器来推测性地存储读取。这可以针对推测性的读取提供对主机的更快的访问,并且可以提高基于PCIe的SSD适配器的性能。
记录模块214可以检查以查看主机中的数据是否在主机被重定向到该数据之前是有效的。记录模块214可以监视和记录一个或多个写入请求。记录模块214能够跟踪写入请求是否已经使早先发送给缓冲器的数据无效。记录模块214可以包含可以指示块(例如,缓冲器中的LBA)的数据结构。如果记录模块214检测到对应于这些块中的一个的写入请求,则缓冲器中的该块可以被无效和/或丢弃。对于对应于这样的块的随后的读取请求,记录模块214可以指示驱动器可能必须重新访问适当的数据大块并且再次取得所请求的LBA块。
缓冲器管理模块216可以使用一种或多种算法来维护数据缓冲器。例如,缓冲器管理模块216可以使用例如使数据老化退出数据缓冲器的最近最少使用算法、使数据老化退出数据缓冲器的最不常用算法和/或使数据老化退出数据缓冲器的自适应置换缓存算法。缓冲器管理模块216可以接受指示缓冲器的大小、优选的老化算法、用于创建缓冲器的一个或多个存储器位置或者其他可配置的缓冲器设置的一个或多个参数。
图3图示根据本公开的实施例的例示缓存固态设备读取请求结果的流程图。然而,流程300仅是示例性的。流程300能够被改变,例如通过增加、改变、移除或重新整理阶段。在阶段302,流程可以开始。
在阶段304,可以从主机接收数据请求。例如,可以由SSD的控制器接收针对一个或多个LBA块的读取请求。
在阶段306,可以取回包含多个LBA块的压缩的数据大块。在阶段308,数据大块可以被解压缩。解压缩可以提供满足主机读取请求的一个或多个LBA块。解压缩还可以提供主机读取请求未请求的一个或多个“额外的”LBA块。
在阶段310,可以将对主机读取请求响应的一个或多个LBA数据块返回给主机(例如,经由分散收集列表)。
在阶段312,可以确定是否有另外的LBA块可用。如果有另外的LBA块可用,则方法300可以在阶段314将另外的LBA块发送给数据缓冲器(例如,在主机存储器中的)。如果响应于读取请求而解压缩的所有模块被发送给主机(亦即,它们都对请求响应),则方法300可以在阶段316结束。
图4图示根据本公开的实施例的例示缓存固态设备读取请求结果的流程图。然而,流程400是示例性的。可对流程400能够被改变,例如通过增加、改变、移除或重新整理阶段。在阶段402,流程400可以开始。
在阶段404,可以对一个或多个写入请求记录。在一些实施例中,可以仅对对应于缓冲块的写入请求进行记录。
在一些实施例中,如果在阶段406检测到数据被覆写(overwrite),则可以在阶段408将其从缓冲器移除。在一些实施例中,可以将其标记为无效。在一个或多个实施例中,截取读取请求的驱动器可以通过读取记录来确定这样的缓冲数据是无效的,并且可以不访问这样的缓冲数据。不被访问的缓冲数据可以老化退出缓冲器。
在阶段410,可以使用一种或多种算法(例如,使数据老化退出数据缓冲器的最近最少使用算法、使数据老化退出数据缓冲器的最不常用算法和/或使数据老化退出数据缓冲器的自适应置换缓存算法)来维护缓冲器或缓存。在阶段412,如果确定数据老化退出缓冲器,则可以将其从缓冲器移除(例如,当缓冲了另外的数据并且需要空间时)。
在阶段416,可以从主机接收数据请求。例如,主机上的SSD驱动器可以监视读取请求,并且可以从主机接收SSD读取请求。
在阶段418,驱动器可以确定所请求的数据是否在缓冲器中。如果所请求的数据在缓冲器中,则方法400可以在阶段426继续。在阶段426,驱动器可以发送包含指向适当的缓冲LBA块的存储器地址的一个或多个元素的分散收集列表(SQL)。如果数据未被缓冲(或者是无效的),则方法400可以在阶段420继续。
在阶段420,SSD控制器可以取回适当的SSD数据大块来满足主机读取请求。在阶段422,数据大块可以被解压缩。在阶段424,SSD可以发送对主机读取请求响应的LBA数据块。
在阶段428,处理400可以结束。
其他实施例在本发明的范围和精神之内。例如,以上描述的功能可以使用软件、硬件、固件、硬连线或这些中的任何的组合来实现。根据指令进行操作的一个或多个计算机处理器可以实现与根据如上所述的本公开来缓存固态设备读取请求结果相关联的功能。如果是这样的情况,则这样的指令可以存储在一个或多个非暂时性处理器可读存储器介质(例如,磁盘或其他存储介质)上,这在本公开的范围内。此外,实现功能的模块也可以在物理上位于不同的位置处,包括是分布式的使得功能的部分在不同的物理位置处实现。
本公开将不被限制在本文中所描述的特定实施例的范围内。实际上,根据前面的描述和附图,本公开的其他各种实施例和修改以及在本文中所描述的那些对于本领域技术人员将是显而易见的。因此,这样的其他实施例和修改意欲落入本公开的范围内。另外,尽管这里在针对特定目的的特定环境中的特定实现方式的背景下描述了本公开,但是本领域普通技术人员将认识到,其有用之处并不局限于此,并且本公开可以针对任何数量的目的、在任何数量的环境中有益地实现。因此,下面所提出的权利要求应当根据在本文中所描述的本公开的全部范围和精神来解释。

Claims (19)

1.一种缓存固态设备读取请求结果的方法,包括:
在固态设备处接收来自被通信地耦合到固态设备的主机设备的数据请求;
响应于数据请求,使用固态设备的控制器从固态设备取回压缩的数据大块;
对压缩的数据大块解压缩;
向主机设备返回对数据请求响应的数据大块的块;
在数据缓冲器中缓存数据大块的一个或多个另外的块,用于随后的读取请求,其中,一个或多个另外的块包括不满足数据请求的一个或多个数据块;
在固态设备处从主机设备接收第二数据请求;
确定对于第二数据请求的数据在数据缓冲器中;以及
响应于第二数据请求向主机设备返回分散收集列表。
2.如权利要求1所述的方法,其中,数据大块由逻辑块地址指示。
3.如权利要求1所述的方法,其中,数据缓冲器设置在固态设备的存储器中。
4.如权利要求1所述的方法,其中,数据缓冲器设置在主机设备的高速外围组件互连PCIe关联的存储器中。
5.如权利要求1所述的方法,其中,所述分散收集列表指向包含对第二数据请求响应的数据的数据缓冲器中的存储器。
6.如权利要求1所述的方法,其中,确定对第二数据请求响应的数据包含在数据缓冲器中由主机设备上的驱动器执行。
7.如权利要求1所述的方法,其中,确定对第二数据请求响应的数据包含在数据缓冲器中由固态设备执行。
8.如权利要求5所述的方法,其中,分散收集列表从主机设备上的驱动器提供。
9.如权利要求1所述的方法,还包括:
记录对固态设备上数据的一个或多个写入;以及
基于一个或多个所记录的写入请求来确定数据缓冲器中的数据是否有效。
10.如权利要求9所述的方法,还包括:
从主机设备接收第三数据请求;
确定对第三数据请求响应的数据包含在数据缓冲器中;
基于一个或多个所记录的写入请求来确定数据缓冲器中的数据不是有效的;
使用固态设备的控制器从固态设备取回第二压缩的数据大块;
对第二压缩的数据大块解压缩;以及
向主机设备返回对第三数据请求响应的第二数据大块的块。
11.如权利要求1所述的方法,还包括使用算法来维护数据缓冲器。
12.如权利要求11所述的方法,其中,算法包括使数据老化退出数据缓冲器的最近最少使用算法、使数据老化退出数据缓冲器的最不常用算法以及使数据老化退出数据缓冲器的自适应置换缓存算法中的至少一种。
13.如权利要求1所述的方法,其中,主机设备可以包括企业服务器、数据库服务器、工作站和计算机中的至少一个。
14.如权利要求1所述的方法,其中,固态设备包括高速外围组件互连PCIe设备。
15.一种存储一系列指令的非暂时性处理器可读存储介质,所述一系列指令在被执行时使得执行以下步骤:
在固态设备处接收来自被通信地耦合到固态设备的主机设备的数据请求;
响应于数据请求,使用固态设备的控制器从固态设备取回压缩的数据大块;
对压缩的数据大块解压缩;
向主机设备返回对数据请求响应的数据大块的块;
在数据缓冲器中缓存数据大块的一个或多个另外的块,用于随后的读取请求,其中,一个或多个另外的块包括不满足数据请求的一个或多个数据块;
在固态设备处从主机设备接收第二数据请求;
确定对于第二数据请求的数据在数据缓冲器中;以及
响应于第二数据请求向主机设备返回分散收集列表。
16.一种缓存固态设备读取请求结果的系统,该系统包括:
主机设备;
第一高速外围组件互连PCIe设备,被配置为或者操作用于将响应于第一数据请求而被解压缩的数据大块的一个或多个块发送给数据缓冲器,其中,一个或多个另外的块包括不满足数据请求的一个或多个数据块;以及
通信地耦合第一高速外围组件互连设备和主机设备的高速外围组件互连PCIe交换机;
其中,主机设备被配置为或者操作用于:
确定对第二数据请求响应的数据是否包含在数据缓冲器中;
基于对第二数据请求响应的数据包含在数据缓冲器中的确定从包含在数据缓冲器中的数据来服务第二数据请求;以及
响应于第二数据请求向主机设备返回分散收集列表。
17.如权利要求16所述的系统,其中,数据缓冲器设置在第一PCIe设备的存储器中。
18.如权利要求16所述的系统,其中,数据缓冲器设置在主机设备的高速外围组件互连PCIe关联的存储器中。
19.如权利要求16所述的系统,其中,主机设备还被配置为或者操作用于在主机设备上的驱动器处确定对第二数据请求响应的数据包含在数据缓冲器中;并且
其中,PCIe还被配置为或者操作用于使用包含在数据缓冲器中的数据来服务来自主机设备的第二数据请求,其中使用包含在数据缓冲器中的数据来服务来自主机设备的第二数据请求包括向主机设备提供指向包含对第二数据请求响应的数据的数据缓冲器中的存储器的分散收集列表条目。
CN201510433625.1A 2015-05-13 2015-05-13 缓存固态设备读取请求结果的系统和方法 Active CN106155583B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510433625.1A CN106155583B (zh) 2015-05-13 2015-05-13 缓存固态设备读取请求结果的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510433625.1A CN106155583B (zh) 2015-05-13 2015-05-13 缓存固态设备读取请求结果的系统和方法

Publications (2)

Publication Number Publication Date
CN106155583A CN106155583A (zh) 2016-11-23
CN106155583B true CN106155583B (zh) 2019-12-03

Family

ID=57348305

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510433625.1A Active CN106155583B (zh) 2015-05-13 2015-05-13 缓存固态设备读取请求结果的系统和方法

Country Status (1)

Country Link
CN (1) CN106155583B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271096B (zh) * 2017-12-28 2021-03-23 新华三技术有限公司 Nvme存储扩展系统
CN108595356B (zh) * 2018-04-24 2021-04-27 郑州云海信息技术有限公司 一种兼容RSSD硬盘和NVMe硬盘的硬盘背板及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570886A (zh) * 2003-07-21 2005-01-26 万国电脑股份有限公司 可提高传输速度的储存装置
US6889256B1 (en) * 1999-06-11 2005-05-03 Microsoft Corporation System and method for converting and reconverting between file system requests and access requests of a remote transfer protocol
US7103717B2 (en) * 2004-04-07 2006-09-05 Hitachi, Ltd. Disk array device and data processing method thereof
CN103336745A (zh) * 2013-07-01 2013-10-02 无锡众志和达存储技术股份有限公司 一种基于ssd缓存的fc hba及其设计方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI227409B (en) * 2003-06-05 2005-02-01 Carry Computer Eng Co Ltd Storage device capable of enhancing transmission speed

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6889256B1 (en) * 1999-06-11 2005-05-03 Microsoft Corporation System and method for converting and reconverting between file system requests and access requests of a remote transfer protocol
CN1570886A (zh) * 2003-07-21 2005-01-26 万国电脑股份有限公司 可提高传输速度的储存装置
US7103717B2 (en) * 2004-04-07 2006-09-05 Hitachi, Ltd. Disk array device and data processing method thereof
CN103336745A (zh) * 2013-07-01 2013-10-02 无锡众志和达存储技术股份有限公司 一种基于ssd缓存的fc hba及其设计方法

Also Published As

Publication number Publication date
CN106155583A (zh) 2016-11-23

Similar Documents

Publication Publication Date Title
KR102584018B1 (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
US8595451B2 (en) Managing a storage cache utilizing externally assigned cache priority tags
US9990298B2 (en) System and method for caching solid state device read request results
US11593272B2 (en) Method, apparatus and computer program product for managing data access
US20160342545A1 (en) Data memory device
US9053038B2 (en) Method and apparatus for efficient read cache operation
WO2015166540A1 (ja) ストレージ装置とそのデータ処理方法及びストレージシステム
US10296240B2 (en) Cache management
US11620219B2 (en) Storage drive dependent track removal in a cache for storage
US11036635B2 (en) Selecting resources to make available in local queues for processors to use
TWI584120B (zh) 用於動態調適快取的方法及系統
US9189477B2 (en) Managing direct attached cache and remote shared cache
CN106155583B (zh) 缓存固态设备读取请求结果的系统和方法
US10733118B2 (en) Computer system, communication device, and storage control method with DMA transfer of data
US9223703B2 (en) Allocating enclosure cache in a computing system
CN110580128B (zh) 使用缓存反馈信息指导数据预读
EP4394576A1 (en) Apparatus and methods for accessing data at a storage node

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20190123

Address after: California, USA

Applicant after: Western Digital Technologies, Inc.

Address before: Amsterdam, The Netherlands

Applicant before: HGST Netherlands B.V.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240924

Address after: Delaware, USA

Patentee after: SANDISK TECHNOLOGIES Inc.

Country or region after: U.S.A.

Address before: California, USA

Patentee before: Western Digital Technologies, Inc.

Country or region before: U.S.A.

TR01 Transfer of patent right