CN105474186A - 硬件管理的压缩的高速缓存 - Google Patents
硬件管理的压缩的高速缓存 Download PDFInfo
- Publication number
- CN105474186A CN105474186A CN201480046558.1A CN201480046558A CN105474186A CN 105474186 A CN105474186 A CN 105474186A CN 201480046558 A CN201480046558 A CN 201480046558A CN 105474186 A CN105474186 A CN 105474186A
- Authority
- CN
- China
- Prior art keywords
- data
- virtual
- page
- pages
- memory
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
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)
- Memory System (AREA)
Abstract
用于以硬件实施用于压缩的高速缓存的控制结构的计算元件、系统和方法。实施例提供第一引擎,配置为从可用页的池分配和解除分配虚拟存储器页和物理存储器页以存储接收的数据到压缩的高速缓存,第二引擎,配置为压缩接收的数据和存储压缩的数据。实施例还提供用于嵌入数据到虚拟和物理存储器页以指示页大小、类型和数据压缩。
Description
技术领域
本发明涉及数据存储适配器,并且更具体地,涉及数据存储适配器中写高速缓存的硬件实施。
背景技术
存储适配器和存储子系统通常包括写高速缓存以改善性能。写高速缓存典型地可以使用相对快速的非易失性存储器(例如,使用支持闪存的DRAM)来实施。写高速缓存可以用于减轻写操作的性能代偿,诸如在独立磁盘冗余阵列(“RAID”,诸如RAID5和RAID6)的特定配置中要求的密集的奇偶计算。通过将位于写高速缓存的多个主机操作合并到可以通过RAID和盘设备更经济地处理的单个离台操作,写高速缓存也可以改善存储性能。
由于存储器芯片大小的增加以及通过使用压缩技术以压缩写高速缓存的数据内容,写高速缓存的有效大小已经随着时间显著增长。同时,更快的存储设备(诸如固态驱动器(SSD))已经变得越来越流行,这增加了存储适配器所需的总体吞吐量,并且相应地增加计算需求以赶上附接的驱动器。
发明内容
本发明的实施例一般地涉及用于以硬件实施用于压缩的高速缓存的控制结构,从而改进存储系统的性能的控制器和系统。
实施例提供一种用于管理压缩的高速缓存的计算元件,包括:第一硬件引擎,配置为分配第一数目的虚拟存储器页和第一数目的物理存储器页,以便将接收的数据存储到压缩的高速缓存;第二硬件引擎,配置为压缩接收的数据,并且存储压缩的数据,其中所述第一硬件引擎进一步配置为解除分配没有用于存储压缩的数据的一个或多个物理存储器页。
实施例提供一种数据存储系统,包括:主机系统;一个或多个存储设备;以及耦合到所述主机系统和所述一个或多个存储设备的存储适配器,存储适配器包括第一硬件引擎,配置为分配第一数目的虚拟存储器页和第一数目的物理存储器页,以便将接收的数据存储到压缩的高速缓存;第二硬件引擎,配置为压缩接收的数据,并且存储压缩的数据,其中所述第一硬件引擎进一步配置为解除分配没有用于存储压缩的数据的一个或多个物理存储器页。
实施例提供一种用于管理压缩的高速缓存的方法,其中在接收要存储到压缩的高速缓存的数据的大小时,第一硬件引擎分配虚拟存储器页和物理存储器页,压缩接收的数据,并且存储到物理存储器页中,并且第一硬件引擎解除分配没有用于存储压缩的数据的物理存储器页。
附图说明
以使得上述各方面能够被详细理解的方式,可以参照实施例进行上面简要概述的本发明实施例更特定描述,一些实施例在附图中图示。然而,要注意的是附图仅图示本发明的典型实施例,并且因此不应被视为其范围的限制,对于本发明可以允许其他等效的实施例。
图1A是图示根据在此描述的实施例的示例性存储系统的框图。
图1B和1C是图示根据在此描述的实施例的存储系统中的示例性写高速缓存的逻辑结构。
图2是图示根据在此描述的实施例的使用压缩的写高速缓存的存储操作的框图。
图3图示根据在此描述的实施例的使用压缩的写高速缓存的示例操作。
图4是图示根据在此描述的实施例的使用压缩的写高速缓存的解压缩操作的框图。
图5是图示根据在此描述的实施例的使用压缩的写高速缓存的解除分配操作的框图。
具体实施方式
为了改善存储适配器和存储系统的性能,可以通过直接以硬件实施用于压缩的高速缓存的控制结构,添加功能性到存储适配器。这可以包括例如压缩和解压缩功能,并且还可以包括管理维持压缩的高速缓存所需的存储器资源(虚拟的和物理的)的分配和解除分配。
图1A图示根据在此描述的实施例的示例性存储系统100。存储系统100包括主机系统110、存储适配器120和存储180。主机系统110可以通过适于满足存储适配器120的吞吐量要求的任何连接,连接到存储适配器120的控制器140;在示出的示例中,主机系统110通过外围组件快速互连(PCIe)接口150连接到存储适配器120。
存储适配器120通常配置为在主机系统110和存储180之间传送数据,并且可以利用用于这样做的任何可行技术。存储适配器120可以包括用于控制存储(CS)122和数据存储(DS)124的存储器,其为写高速缓存123提供控制存储和数据存储。用于CS122和DS124的存储器示出为动态随机存取存储器(DRAM),但是可以是任何其他可行类型的存储器。存储适配器120还可以包括若干额外类型的存储器,诸如闪速存储器126和非易失性随机存取存储器(NVRAM)128。
存储适配器120包括控制器140,其包括处理器145。处理器145旨在代表单个处理器、多个处理器、具有多个处理核心的单个CPU等。尽管处理器145示出为集成到控制器140中,但是在替代实施例中,处理器可以位于存储适配器120中的任何位置,并且通过合适的高速互连(诸如PCIe连接)通信地耦合到控制器140。
控制器140可以进一步包括以硬件实施的若干引擎,其用于执行根据在此描述的实施例的数据存储和写高速缓存操作。如所示的,控制器140至少包括主机直接存储器存取(HDMA)引擎155、分配/解除分配引擎160、一个或多个压缩/解压缩引擎165、以及XOR引擎170(其可以提供用于存储操作的奇偶计算)。控制器140可以包括一个或多个串行附接SCSI(SAS)控制器1751-N,提供控制器140和存储180之间一个或多个数据连接。
引擎可以实施为分离的计算元件,或者在替代性实施例中,两个或者多个引擎的功能可以组合到一个计算元件中。在其他实施例中,上述一个或者多个引擎可以驻留在存储适配器中的任何位置,或者所有引擎可以驻留在存储适配器的外部。
存储180包括一个或多个存储设备1821-N。存储设备1821-N可以包括硬盘驱动器、固态驱动器或任何其他合适的存储设备,并且可以包括不同类型的存储设备(例如,一个或多个硬盘驱动器和一个或多个固态驱动器)的组合。存储180可以是主机系统110的外围设备,并且替代地或额外地可以耦合到一个或多个其他计算系统。
图1B进一步图示写高速缓存123的结构,其至少包括CS122和DS124。CS122提供用于存储结构以及与DS124中存储的数据相关联的额外信息的存储。CS122可以包括其中每个页表格具有一个或多个页索引的页表格结构122A(示出为122A1,2),以及具有一个或多个高速缓存线(示出为122B1-3)的高速缓存线结构122B。DS124可以通常分割为预定大小的一个或多个块(示出为1241,2),或者大小可以改变。在一个实施例中,DS124分割为统一的预定大小的存储块。
在一个实施例中,页表格结构122A包含多个页索引,每个页索引对应于一个或多个高速缓存线并且包含指向一个或多个高速缓存线的一个或多个索引。包含在页表格中的页索引可以用在用于直接存储器存取(DMA)操作的散集列表中,其中页索引122A11对应于高速缓存线122B1并且页索引122A12对应于高速缓存线122B3。
接下来,图1C图示各个高速缓存线122B和DS124的存储块之间的逻辑关系。如所示的,高速缓存线122B1包含一个或多个索引122D,并且可以包含额外数据122C。每个索引122D可以指向DS124中的各个存储块。如所示的,一个索引对应于存储块1241并且另一索引对应于1242。
为了易于阅读和理解,贯穿本申请将一致地使用特定虚拟和物理存储器页大小。然而,这些示例页大小不旨在限制本发明的范围,并且替代实施例可以使用与在此描述的那些不同的页大小。物理存储器页将一般描述为大小528字节(528B)。528B大小是在现代数据存储适配器和系统中通常使用的一个大小。在一个实施例中,528B页可以包括8字节头部、512字节的数据、以及8字节标尾。此外,虚拟存储器页将一般描述为4224字节(4K),选择4K以便以预定比率对应于物理存储器页的数目(即,8个528B物理页对应于一个4K虚拟页)。
诸如在页表格122A和高速缓存线122B中包含的那些的索引用于区分和唯一地标识虚拟和物理存储器的4K和528B页的每个。在一个示例中,高速缓存线结构中存储的索引122D可以描述数据物理存储器中驻留在哪里。此外,索引值可以在下面更详细描述的虚拟和物理存储器池中使用。在多个实施例中,每个索引122D是固定大小(例如,4字节)并且安排每个索引122D使得索引的预定数目的引导位可以指示描述的页的大小和类型。在一个实施例中,“0xCnnn_nnnn”(其中n代表占位符,并且每个n的值可以变化)的索引值指示4K虚拟存储器页,而“0xEnnn_nnnn”的索引值指示528B物理存储器页。
在一个实施例中,写高速缓存123中的每个高速缓存线122B可以存储8个索引122D,每个索引122D指向DS124中存储的528B物理存储器页;因此,每个高速缓存线122B对应于DS124中4K的存储数据。因为该示例中的每个高速缓存线122B定义为对应于与每个虚拟存储器页相同大小(即,4K),所以每个高速缓存线122B可以以1:1的比例直接对应于分配的虚拟存储器页。如果在写高速缓存123中不实现压缩,那么在一个高速缓存线122B中虚拟代表的4K的存储数据对应于DS124中4K的物理存储器(即,8个528B物理存储器页)。然而,如果实现压缩,那么高速缓存线122B中的索引122D可以指向DS124中存储的少于8个528B物理存储器页。因此,由任何给定高速缓存线122B索引的物理页的数目将基于数据压缩的级别变化。
数据值可以包括在物理存储器页中,以指示页中存储的数据是否压缩。在多个实施例中,528B物理存储器页中的8字节头部可以每个包含处于预定位置的预定数据值或模式。该预定数据值或模式可以是独特的或唯一的;理想情况下,该数据值或模式将从不由主机系统使用或写入,因此确保任何时候在头部中遇到数据值或模式,数据值或模式可靠地指示数据的压缩状态。
为了易于理解,将同时讨论描述使用压缩的写高速缓存的操作200的图2以及图示操作200的示例的图3。
操作200在块210开始,其中控制器从主机系统接收要写入高速缓存的数据大小的指示。为了图3示例的目的,并且如上所述,虚拟存储器页大小4K,并且物理存储器页528B。在该示例中,主机系统110指示其将写入8K的数据到高速缓存。
基于指示的尺寸,在块220,分配/解除分配引擎可以分配足以存储要写入到高速缓存的数据的虚拟存储器页的数目。这可以是简单计算,其中数据的大小除以虚拟存储器页(例如,4K)的大小。
在多个实施例中,分配/解除分配引擎可以保持池330和340用于可用的虚拟存储器页和可用的物理存储器页。每个池330、340可以包括用于各个类型的存储器页的可用索引的列表。每个池包括头指针331、341和尾指针332、342,在存储适配器的操作期间,每当从池分配索引或者索引解除分配到池,分配/解除分配引擎就更新头指针331、341和尾指针332、342。
在图3示例中,分配/解除分配引擎分配两个4K虚拟存储器页到页表格305,其将足以存储8K的进入数据。每个分配的虚拟存储器页具有4字节索引,其值是“0xCnnn_nnnn”,指示页是虚拟存储器并且4K大小(如上所述)。分配/解除分配引擎从虚拟存储器池330分配头两个可用虚拟存储器页3301,2,更新头指针331指向下一个可用的虚拟存储器页3303。
在块230,分配/解除分配引擎可以分配物理存储器页的数目,以填充每个分配的虚拟存储器页。如上所述,这可以定义为固定比率(例如,8个528B物理页对于1个4K虚拟页)。基于物理和虚拟存储器页的分配,即使对于最坏情况场景(其中数据不能压缩并且必须存储未压缩的),分配的虚拟存储器页也能够存储所有指示的进入数据。如图3所示,对于总共16个528B物理存储器页,分配/解除分配引擎对于两个分配到高速缓存线CL1310和CL2320的虚拟页的每个,分配8个528B物理存储器页。每个分配的物理存储器页具有4字节索引,其值“0xEnnn_nnnn”指示页是物理存储器并且528B大小。分配/解除分配引擎从物理存储器池340分配头16个可用物理存储器页(即,页3401-16),更新头指针341以指向下一个可用物理存储器页(即,页34017)。此时,2个高速缓存线CL1和CL2的组合可以在物理存储器中存储完整的8K的未压缩的进入数据。
在块240,一个或多个压缩/解压缩引擎从主机系统接收数据,并且根据许多技术压缩接收的数据。为了压缩接收的数据,数据可以作为一系列数据分块(在该示例中,每个分块的大小设置为4K)发送到压缩/解压缩引擎。可以使用数据分块的标准化或公知的大小(像4K);否则在压缩之前可能需要将接收的数据分割为分立部分的额外步骤。如图3所示,压缩/解压缩引擎从主机系统接收8K的数据,并且压缩数据。例如,8K的数据可以以两个分离的4K分块发送到一个压缩/解压缩引擎,其独立压缩两个分块,或者8K的数据可以替代地分为4K分块并且发送到多个引擎以同时压缩。如所示的,由第一高速缓存线(CL1)索引的第一4K分块的数据由压缩/解压缩引擎从8个物理存储器页压缩到3个,而由第二高速缓存线(CL2)索引的第二4K分块的数据压缩到1个物理存储器页。
在块250,通过确定可以存储压缩的数据的物理存储器页的第二数目,分析对于接收的数据的压缩结果。物理存储器页的第二数目对应于存储压缩的数据所需的物理存储器页的数目。因此,在图3中,如果在DS350中存储压缩的数据,那么8个页分配给第一分块,但是仅仅需要3个页(即,物理存储器页的第二数目)。例如,仅需要CL1中的3个索引(其存储在高速缓存线3101-3)以参考压缩的分块。因此,替代原始的8个分配的存储器页,在DS350中的物理存储器页359中仅需要3个高速缓存线。此外,因为第二分块从8个压缩到1个物理存储器页,所以CL2仅需要1个索引(其存储在高速缓存线3201)以存储压缩的数据。
在块260,控制器确定是否任何分配的虚拟存储器页剩余还没有存储接收的数据的各个部分。如果这些分配的虚拟存储器页的一个或多个剩余,那么操作进到块270,其中控制器确定存储数据的压缩的各个部分所需的物理存储器页的第二数目是否大于或等于物理存储器页的原始分配的数目(即,8个)。如果数据的压缩的部分要求较少物理存储器页(即,1个到7个),那么操作分支到块285,其中压缩的数据存储在虚拟存储器页中。否则,操作分支到块280,并且未压缩的数据存储在虚拟存储器页中。如图3所示,因为对于两个示例高速缓存线的每个,数据压缩到比最初分配的8个页更少的物理存储器页,所以压缩/解压缩引擎将选择并且存储压缩的数据到写高速缓存,如由DS350的存储器分配3501-4所述,其中高速缓存线310和320中存储的各个索引引用每个存储器位置350。
块280和285两者循环回决定块260,并且处理一般重复直到不再存在任何分配的虚拟存储器页仍需要存储数据,此时操作200结束。
除了基于数据压缩的结果选择将数据存储为压缩的或未压缩的,一个或多个实施例在特定情况下可能需要将数据存储为未压缩的。示例情况可能包括当进入的数据小于压缩/解压缩引擎执行压缩所需的大小(例如,小于4K分块)。
因为不是所有最初分配的物理存储器页需要存储压缩的数据,所以分配/解除分配引擎可以解除分配那些未使用的物理存储页(3104-8和3202-8),将它们返回物理存储器池340紧接最后可用的物理存储器页340N。分配/解除分配引擎还将更新尾指针342以指过返回池的物理存储器页的最后页,以便指示页可以解除分配的下一个位置。转而,归零对应于返回的物理存储器页的虚拟页(即,高速缓存线)中存储的索引。
图4是图示根据在此描述的实施例的使用压缩的写高速缓存的解压缩操作的框图。操作400在块410开始,其中控制器410从压缩的高速缓存中存储的一个或多个虚拟存储器页接收对于数据的请求。这种对于数据的请求可以包括对于从写高速缓存123到主机系统110的数据传送的请求(例如,快速读取操作),或者可以包括从写高速缓存123到一个或多个存储设备182(例如,硬盘驱动器或SSD)的倒盘(destage)操作。
在块420,压缩/解压缩引擎165对于一个或多个虚拟存储器页的每个确定物理存储器页的头部是否在预定位置包含预定值,从而指示物理存储器页包含压缩的数据。如果在块430确定一个或多个物理存储器页包含压缩的数据,那么操作分支到块440,其中压缩/解压缩引擎165解压缩一个或多个物理存储器页中包含的压缩的数据。在替代实施例中,可以就在写出解压缩的数据到一个或多个存储设备1821-N之前,使用一个或多个SAS控制器1751-N完成解压缩。
然而,如果物理存储器页不包含压缩的数据,那么操作分支到块435,其中从物理存储器页返回未压缩的数据。块435和440都链接到块450,其中确定是否仍剩余一个或多个虚拟存储器页中的任何虚拟存储器页要读取以便完成数据请求。如果剩余任何虚拟存储器页要读取,那么块450循环返回块430;否则,操作400结束。
图5是图示根据在此描述的实施例的使用压缩的写高速缓存的解除分配操作的框图。例如,当数据已经从写高速缓存复制到一个或多个存储设备182,并且数据不再需要保持在写高速缓存中时,操作500可以用于在倒盘操作之后解除分配高速缓存线。
操作500在块510开始,其中控制器140的分配/解除分配引擎160接收要解除分配的一个或多个高速缓存线。在块520,分配/解除分配引擎释放对应于一个或多个高速缓存线的物理存储器页。这可以通过将每个物理存储器页返回物理存储器池340的末尾,并且相应地更新尾指针342以指过返回到池的物理存储器页的最后(指示可以解除分配页的下一个位置)来进行。分配/解除分配引擎160还可以归零已经指向物理存储器页的高速缓存线中的每个4字节索引。在块530,分配/解除分配引擎160可以释放对应于高速缓存线的虚拟存储器页,将虚拟存储器页返回到虚拟存储器池330的末尾,并且相应地更新尾指针332以指过返回到池的虚拟存储器页。在块540,分配/解除分配引擎160可以确定是否存在任何额外的高速缓存线要解除分配的。如果额外的高速缓存线剩余,那么操作分支回块520,并且处理一般地重复直到不存在额外的高速缓存线要解除分配。
已经为了说明的目的呈现了本发明的各个实施例的描述,但是不旨在穷尽或限制到公开的实施例。许多修改和变化将对于本领域的技术人员显而易见而不背离描述的实施例的精神和范围。选择在此描述的术语以最好地解释实施例的原理、实际应用或在实际上发现的技术上的技术改进,或者使得本领域的普通技术人员能够理解在此公开的实施例。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(articleofmanufacture)。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
尽管前述指向本发明的实施例,但是可以设计本发明的其他和进一步实施例而不背离其基本范围,并且其范围由所附权利要求确定。
Claims (20)
1.一种用于管理压缩的高速缓存的计算元件,所述计算元件包括:
第一硬件引擎,配置为:
在接收要存储到所述压缩的高速缓存的数据的大小时,分配足以存储所述数据的第一数目的虚拟存储器页;以及
分配第一数目的物理存储器页以填充所述第一数目的虚拟存储器页;
第二硬件引擎,配置为压缩所述数据,并且将压缩的数据存储到第二数目的物理存储器页中,
其中所述第一硬件引擎进一步配置为解除分配没有用于存储所述压缩的数据的所述第一数目的物理存储器页的一个或多个物理存储器页。
2.如权利要求1所述的计算元件,其中所述计算元件是控制器和存储适配器之一。
3.如权利要求1所述的计算元件,其中从可用虚拟存储器页的池分配所述第一数目的虚拟存储器页,其中所述第一硬件引擎进一步配置为维持所述可用虚拟存储器页的池。
4.如权利要求3所述的计算元件,其中从可用物理存储器页的池分配所述第一数目的物理存储器页,其中所述第一硬件引擎进一步配置为维持所述可用物理存储器页的池。
5.如权利要求4所述的计算元件,其中维持所述可用虚拟存储器页的池和维持所述可用物理存储器页的池包括维持每个池的头指针和尾指针。
6.如权利要求1所述的计算元件,其中每个分配的物理存储器页包括相应的头部,并且其中所述第二硬件引擎进一步配置为在每个头部的预定位置写入预定值,以指示相应的物理存储器页中存储的数据是否压缩。
7.如权利要求1所述的计算元件,其中每个所述虚拟存储器页和物理存储器页对应于在存储器高速缓存中存储的相应的索引,并且其中每个索引包括预定数目的引导位,指示页的大小以及页包括虚拟存储器还是物理存储器的至少一个。
8.如权利要求1所述的计算元件,其中所述第一硬件引擎进一步配置为解除分配一个或多个虚拟存储器页。
9.如权利要求6所述的计算元件,其中所述第二硬件引擎进一步配置为在接收到对于来自所述压缩的高速缓存中存储的一个或多个虚拟存储器页的数据的请求时:
对于所述一个或多个虚拟存储器页的每个,通过读取相应的头部的所述预定位置的所述预定值,确定虚拟存储器页中存储的数据是否被压缩;
解压缩缩所述一个或多个虚拟存储器页中存储的压缩的数据;以及
通过从所述一个或多个虚拟存储器页提供未压缩的数据和解压缩的数据,返回请求的数据。
10.一种数据存储系统,包括:
主机系统;
一个或多个存储设备;以及
耦合到所述主机系统和所述一个或多个存储设备的存储适配器,所述存储适配器包括:
第一硬件引擎,配置为:
在接收要存储到压缩的高速缓存的数据时,分配足以存储接收的数据的第一数目的虚拟存储器页;以及
分配第一数目的物理存储器页以填充所述第一数目的虚拟存储器页;
第二硬件引擎,配置为压缩所述接收的数据,并且将压缩的数据存储到第二数目的物理存储器页中,
其中所述第一硬件引擎进一步配置为解除分配没有用于存储所述压缩的数据的所述第一数目的物理存储器页的一个或多个物理存储器页。
11.如权利要求10所述的系统,其中从可用虚拟存储器页的池分配所述第一数目的虚拟存储器页,其中所述第一硬件引擎进一步配置为维持所述可用虚拟存储器页的池。
12.如权利要求11所述的系统,其中从可用物理存储器页的池分配所述第一数目的物理存储器页,其中所述第一硬件引擎进一步配置为维持所述可用物理存储器页的池。
13.如权利要求12所述的系统,其中维持所述可用虚拟存储器页的池和维持所述可用物理存储器页的池包括维持每个池的头指针和尾指针。
14.如权利要求10所述的系统,其中每个分配的物理存储器页包括相应的头部,并且其中所述第二硬件引擎进一步配置为在每个头部的预定位置写入预定值,以指示相应的物理存储器页中存储的数据是否压缩。
15.如权利要求10所述的系统,其中每个所述虚拟存储器页和物理存储器页对应于在存储器高速缓存中存储的相应的索引,并且其中每个索引包括预定数目的引导位,指示页的大小以及页包括虚拟存储器还是物理存储器的至少一个。
16.如权利要求10所述的系统,其中所述第一硬件引擎进一步配置为解除分配一个或多个虚拟存储器页。
17.如权利要求14所述的系统,其中所述第二硬件引擎进一步配置为在接收到对于来自所述压缩的高速缓存中存储的一个或多个虚拟存储器页的数据的请求时:
对于所述一个或多个虚拟存储器页的每个,通过读取相应的头部的所述预定位置的所述预定值,确定虚拟存储器页中存储的数据是否被压缩;
解压缩缩所述一个或多个虚拟存储器页中存储的压缩的数据;以及
通过从所述一个或多个虚拟存储器页提供未压缩的数据和解压缩的数据,返回请求的数据。
18.一种用于管理压缩的高速缓存的方法,所述方法包括:
在接收要存储到所述压缩的高速缓存的数据的大小时,使用第一硬件引擎分配足以存储所述数据的第一数目的虚拟存储器页;以及
使用所述第一硬件引擎,分配第一数目的物理存储器页以填充所述第一数目的虚拟存储器页;
使用第二硬件引擎压缩所述数据;
将压缩的数据存储到第二数目的物理存储器页中;以及
使用所述第一硬件引擎,解除分配没有用于存储所述压缩的数据的所述第一数目的物理存储器页的一个或多个物理存储器页。
19.如权利要求18所述的方法,还包括:
使用所述第一硬件引擎,维持可用虚拟存储器页的池,从其分配所述第一数目的虚拟存储器页。
20.如权利要求19所述的方法,还包括:
使用所述第一硬件引擎,维持可用物理存储器页的池,从其分配所述第一数目的物理存储器页,并且对其解除没有用于存储所述压缩的数据的一个或多个物理存储器页。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/970,817 US9582426B2 (en) | 2013-08-20 | 2013-08-20 | Hardware managed compressed cache |
US13/970,817 | 2013-08-20 | ||
PCT/CN2014/084745 WO2015024504A1 (en) | 2013-08-20 | 2014-08-19 | Hardware managed compressed cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105474186A true CN105474186A (zh) | 2016-04-06 |
CN105474186B CN105474186B (zh) | 2018-07-10 |
Family
ID=52481456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480046558.1A Active CN105474186B (zh) | 2013-08-20 | 2014-08-19 | 硬件管理的压缩的高速缓存 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9582426B2 (zh) |
EP (1) | EP3036642B1 (zh) |
JP (1) | JP6403775B2 (zh) |
CN (1) | CN105474186B (zh) |
WO (1) | WO2015024504A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9582426B2 (en) | 2013-08-20 | 2017-02-28 | International Business Machines Corporation | Hardware managed compressed cache |
CN109643278A (zh) * | 2016-09-29 | 2019-04-16 | 英特尔公司 | 使用压缩来增加带有大的块大小的存储器侧高速缓存的容量 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10163510B1 (en) * | 2013-08-09 | 2018-12-25 | Ellis Robinson Giles | System and method for atomic persistence in storage class memory |
DE112013006655T5 (de) * | 2013-12-12 | 2015-11-19 | Hitachi, Ltd. | Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung |
US9811366B2 (en) * | 2014-09-12 | 2017-11-07 | Vmware, Inc. | Dynamically using system memory as video memory for virtual graphics processing units |
US20160224241A1 (en) * | 2015-02-03 | 2016-08-04 | Qualcomm Incorporated | PROVIDING MEMORY BANDWIDTH COMPRESSION USING BACK-TO-BACK READ OPERATIONS BY COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM |
US20160283390A1 (en) * | 2015-03-27 | 2016-09-29 | Intel Corporation | Storage cache performance by using compressibility of the data as a criteria for cache insertion |
US10613756B2 (en) | 2015-09-03 | 2020-04-07 | Qualcomm Incorporated | Hardware-accelerated storage compression |
US9940250B2 (en) | 2015-11-09 | 2018-04-10 | International Business Machines Corporation | Implementing hardware accelerator for storage write cache management for writes to storage write cache |
US10437667B2 (en) | 2016-03-29 | 2019-10-08 | International Business Machines Corporation | Raid system performance enhancement using compressed data |
US10037245B2 (en) | 2016-03-29 | 2018-07-31 | International Business Machines Corporation | Raid system performance enhancement using compressed data and byte addressable storage devices |
WO2017188985A1 (en) * | 2016-04-29 | 2017-11-02 | Hewlett Packard Enterprise Development Lp | Compressed pages having data and compression metadata |
US10261907B2 (en) * | 2017-03-09 | 2019-04-16 | International Business Machines Corporation | Caching data in a redundant array of independent disks (RAID) storage system |
WO2019062275A1 (zh) * | 2017-09-27 | 2019-04-04 | 成都忆芯科技有限公司 | PCIe控制器与使用PCIe控制器的环回数据通路 |
US10430246B2 (en) * | 2018-01-18 | 2019-10-01 | International Business Machines Corporation | Virtualized and synchronous access to hardware accelerators |
US10733108B2 (en) * | 2018-05-15 | 2020-08-04 | Intel Corporation | Physical page tracking for handling overcommitted memory |
CN110895492B (zh) * | 2019-12-11 | 2023-01-10 | Oppo(重庆)智能科技有限公司 | 设备控制方法、装置、存储介质及电子设备 |
US20220269540A1 (en) * | 2021-02-25 | 2022-08-25 | Seagate Technology Llc | NVMe POLICY-BASED I/O QUEUE ALLOCATION |
US20230236725A1 (en) * | 2022-01-25 | 2023-07-27 | Dell Products L.P. | Method to opportunistically reduce the number of SSD IOs, and reduce the encryption payload, in an SSD based cache in a deduplication file system |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796978A (en) * | 1994-09-09 | 1998-08-18 | Hitachi, Ltd. | Data processor having an address translation buffer operable with variable page sizes |
US20050144387A1 (en) * | 2003-12-29 | 2005-06-30 | Ali-Reza Adl-Tabatabai | Mechanism to include hints within compressed data |
US20090144496A1 (en) * | 2007-11-30 | 2009-06-04 | Hitachi, Ltd. | Fast accessible compressed thin provisioning volume |
CN101739358A (zh) * | 2009-12-21 | 2010-06-16 | 东南大学 | 利用虚存机制对片上异构存储资源动态分配的方法 |
US20100306498A1 (en) * | 2009-01-30 | 2010-12-02 | Hitachi, Ltd. | Storage system and storage control method that compress and store data elements |
US20120203993A1 (en) * | 2011-02-08 | 2012-08-09 | SMART Storage Systems, Inc. | Memory system with tiered queuing and method of operation thereof |
US20130042064A1 (en) * | 2011-08-09 | 2013-02-14 | Lsi Corporation | System for dynamically adaptive caching |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5194995A (en) * | 1991-01-09 | 1993-03-16 | Wangdat, Inc. | Method and apparatus for recording compressed data on DAT media |
JP3697831B2 (ja) * | 1997-04-18 | 2005-09-21 | 株式会社日立製作所 | コンピュータシステム |
US6195024B1 (en) * | 1998-12-11 | 2001-02-27 | Realtime Data, Llc | Content independent data compression method and system |
US20030191876A1 (en) * | 2000-02-03 | 2003-10-09 | Fallon James J. | Data storewidth accelerator |
US7710425B1 (en) * | 2000-06-09 | 2010-05-04 | 3Dlabs Inc. Ltd. | Graphic memory management with invisible hardware-managed page faulting |
US6877081B2 (en) * | 2001-02-13 | 2005-04-05 | International Business Machines Corporation | System and method for managing memory compression transparent to an operating system |
US6640283B2 (en) * | 2002-01-16 | 2003-10-28 | Hewlett-Packard Development Company, L.P. | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size |
US7430638B2 (en) * | 2004-06-14 | 2008-09-30 | Mossman Holdings Llc | Adaptive input / output compressed system and data cache and system using same |
US7280052B2 (en) * | 2005-09-30 | 2007-10-09 | Intel Corporation | Apparatus, system, and method of data compression |
US8139073B1 (en) * | 2006-09-18 | 2012-03-20 | Nvidia Corporation | Early compression tag lookup for memory accesses |
US8078657B2 (en) * | 2007-01-03 | 2011-12-13 | International Business Machines Corporation | Multi-source dual-port linked list purger |
CN101246452B (zh) | 2007-02-12 | 2010-12-15 | 国际商业机器公司 | 执行快速的mmu模拟的方法和装置、以及全系统模拟器 |
US8631203B2 (en) | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
US8397014B2 (en) * | 2008-02-04 | 2013-03-12 | Apple Inc. | Memory mapping restore and garbage collection operations |
US9548108B2 (en) * | 2008-06-18 | 2017-01-17 | Super Talent Technology, Corp. | Virtual memory device (VMD) application/driver for enhanced flash endurance |
US8700862B2 (en) * | 2008-12-03 | 2014-04-15 | Nvidia Corporation | Compression status bit cache and backing store |
JP4498456B1 (ja) | 2009-02-19 | 2010-07-07 | 株式会社東芝 | データ記憶制御装置及びデータ記憶制御方法 |
US8516219B2 (en) * | 2009-07-24 | 2013-08-20 | Apple Inc. | Index cache tree |
US8341380B2 (en) * | 2009-09-22 | 2012-12-25 | Nvidia Corporation | Efficient memory translator with variable size cache line coverage |
US9110806B2 (en) * | 2010-03-10 | 2015-08-18 | Microsoft Technology Licensing, Llc | Opportunistic page caching for virtualized servers |
WO2013084314A1 (ja) * | 2011-12-07 | 2013-06-13 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US8782344B2 (en) * | 2012-01-12 | 2014-07-15 | Fusion-Io, Inc. | Systems and methods for managing cache admission |
US9483431B2 (en) * | 2013-04-17 | 2016-11-01 | Apeiron Data Systems | Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA) |
US9582426B2 (en) | 2013-08-20 | 2017-02-28 | International Business Machines Corporation | Hardware managed compressed cache |
-
2013
- 2013-08-20 US US13/970,817 patent/US9582426B2/en active Active
-
2014
- 2014-08-19 EP EP14837679.1A patent/EP3036642B1/en active Active
- 2014-08-19 JP JP2016535324A patent/JP6403775B2/ja active Active
- 2014-08-19 CN CN201480046558.1A patent/CN105474186B/zh active Active
- 2014-08-19 WO PCT/CN2014/084745 patent/WO2015024504A1/en active Application Filing
- 2014-12-12 US US14/568,506 patent/US9720841B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796978A (en) * | 1994-09-09 | 1998-08-18 | Hitachi, Ltd. | Data processor having an address translation buffer operable with variable page sizes |
US20050144387A1 (en) * | 2003-12-29 | 2005-06-30 | Ali-Reza Adl-Tabatabai | Mechanism to include hints within compressed data |
US20090144496A1 (en) * | 2007-11-30 | 2009-06-04 | Hitachi, Ltd. | Fast accessible compressed thin provisioning volume |
US20100306498A1 (en) * | 2009-01-30 | 2010-12-02 | Hitachi, Ltd. | Storage system and storage control method that compress and store data elements |
CN101739358A (zh) * | 2009-12-21 | 2010-06-16 | 东南大学 | 利用虚存机制对片上异构存储资源动态分配的方法 |
US20120203993A1 (en) * | 2011-02-08 | 2012-08-09 | SMART Storage Systems, Inc. | Memory system with tiered queuing and method of operation thereof |
US20130042064A1 (en) * | 2011-08-09 | 2013-02-14 | Lsi Corporation | System for dynamically adaptive caching |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9582426B2 (en) | 2013-08-20 | 2017-02-28 | International Business Machines Corporation | Hardware managed compressed cache |
US9720841B2 (en) | 2013-08-20 | 2017-08-01 | International Business Machines Corporation | Hardware managed compressed cache |
CN109643278A (zh) * | 2016-09-29 | 2019-04-16 | 英特尔公司 | 使用压缩来增加带有大的块大小的存储器侧高速缓存的容量 |
CN109643278B (zh) * | 2016-09-29 | 2023-07-18 | 英特尔公司 | 使用压缩来增加存储器侧高速缓存的容量的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3036642A4 (en) | 2016-10-05 |
US9720841B2 (en) | 2017-08-01 |
EP3036642A1 (en) | 2016-06-29 |
EP3036642B1 (en) | 2019-09-25 |
US20150100736A1 (en) | 2015-04-09 |
JP2016532965A (ja) | 2016-10-20 |
WO2015024504A1 (en) | 2015-02-26 |
US20150058576A1 (en) | 2015-02-26 |
JP6403775B2 (ja) | 2018-10-10 |
US9582426B2 (en) | 2017-02-28 |
CN105474186B (zh) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105474186A (zh) | 硬件管理的压缩的高速缓存 | |
KR101758544B1 (ko) | 비휘발성 메모리 시스템에서의 동기 미러링 | |
JP6216441B2 (ja) | 大量固体メモリ資源への独立かつ直接的アクセスを有するマルチプロセッサシステム | |
US20180173632A1 (en) | Storage device and method for controlling storage device | |
JP6443794B2 (ja) | ホストとコントローラとの間でパーティション化された変換レイヤ | |
US9619180B2 (en) | System method for I/O acceleration in hybrid storage wherein copies of data segments are deleted if identified segments does not meet quality level threshold | |
US8819338B2 (en) | Storage system and storage apparatus | |
KR101993704B1 (ko) | 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법 | |
US10013344B2 (en) | Enhanced SSD caching | |
US8966170B2 (en) | Elastic cache of redundant cache data | |
US20150193342A1 (en) | Storage apparatus and method of controlling the same | |
CN107924291B (zh) | 存储系统 | |
US20160011786A1 (en) | Storage system and data write method | |
US20140317340A1 (en) | Storage system and storage control method | |
US9734062B2 (en) | System and methods for caching a small size I/O to improve caching device endurance | |
US20190243758A1 (en) | Storage control device and storage control method | |
US20160110116A1 (en) | Method to shorten hash chains in lempel-ziv compression of data with repetitive symbols | |
WO2020019267A1 (zh) | 一种数据处理方法及装置 | |
CN109753463A (zh) | 控制器及其操作方法和存储系统及其操作方法 | |
CN113687977A (zh) | 基于raid控制器以实现计算性能提升的数据处理装置 | |
CN113687978B (zh) | 用于存储阵列控制器的数据处理方法 | |
US20180088856A1 (en) | Data storage system | |
KR20210131058A (ko) | 메모리 시스템 내 데이터를 보호하는 장치 및 방법 | |
WO2023020136A1 (zh) | 存储系统中的数据存储方法及装置 | |
US20150309740A1 (en) | Data decompression using a construction area |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |