CN107111551B - 用于高速缓存经压缩的数据背景的装置、系统和方法 - Google Patents
用于高速缓存经压缩的数据背景的装置、系统和方法 Download PDFInfo
- Publication number
- CN107111551B CN107111551B CN201580062357.5A CN201580062357A CN107111551B CN 107111551 B CN107111551 B CN 107111551B CN 201580062357 A CN201580062357 A CN 201580062357A CN 107111551 B CN107111551 B CN 107111551B
- Authority
- CN
- China
- Prior art keywords
- lba
- compressed data
- lba range
- size
- cache
- 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
Links
Images
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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Abstract
用于基于数据的压缩来有效地对这样的数据高速缓存的技术和机制。本公开的技术包括高速缓存系统、方法和计算机可读介质,其用于支持利用在被写入为高速缓存存储器中的高速缓存行之前被压缩的数据所执行的操作。在一些实施例中,高速缓存控制器确定要被存储为高速缓存行的经压缩的数据大小。高速缓存控制器标识用于对经压缩的数据进行高速缓存的逻辑块地址(LBA)范围,其中,这样的标识是基于经压缩的数据大小以及基于描述高速缓存存储器的多个LBA范围的参考信息的。一个或多个这样的LBA范围具有不同的相应大小。在其他实施例中,高速缓存存储器的LBA范围同时存储相应的经压缩的高速缓存行,其中,LBA范围并且具有不同的相应大小。
Description
技术领域
本公开涉及高速缓存技术。具体地,本公开涉及采用数据压缩的驱动高速缓存技术。
背景技术
诸如台式计算机、笔记本计算机、智能电话、平板电脑等的电子设备通常包括一个或多个外围存储设备。例如,台式计算机可以包括硬盘驱动器(HDD),该硬盘驱动器(HDD)包括配置为持久存储数据的磁性记录介质(磁盘)。虽然有用,但是与设备的其他部件相比,HDD的输入/输出(例如,写入/读取)性能可能相对慢。因此,HDD和其他相对慢的存储设备(例如,带存储器)可能会阻碍其中它/它们被安装的电子设备的性能。虽然已经进行了许多尝试来改善其性能,但是HDD的机电性质实际上可能限制其性能可能被改善到的程度。
缓解由相对慢的外围存储设备呈现的瓶颈的一种方式是使用高速缓存设备(本文也称为“高速缓存”)。通常,高速缓存设备是逻辑上驻留在相对慢的存储设备和诸如处理器之类的电子设备的其他部件之间的存储器设备。通常,与高速缓存设备关联于的相对慢的存储设备相比,高速缓存包括相对快的存储器。高速缓存设备的存储器可以用作用于外围存储设备的临时存储区域。例如,经常访问的(“热”)数据可以在其被最初访问(例如从相对较慢的存储设备)之后置于在高速缓存中。此后,可以对高速缓存而不是相对慢的存储设备进行对热数据的后续访问。高速缓存控制器可以应用一个或多个算法和/或策略来确定哪些数据被存储在高速缓存设备的存储器中以及哪些被移除。由于高速缓存比相对慢的存储设备更快,因此可以改善系统的输入/输出性能。
虽然高速缓存设备可以减轻由相对慢的外围存储设备引入的性能瓶颈,但是高速缓存存储器通常相当昂贵。因此,高速缓存的大小可能被成本和/或其他考虑所限制。因此,可以存储在高速缓存中的数据量实际上可能被其存储器的大小所限制。
附图说明
在附图的各图中通过示例的方式而非限制的方式示出了本发明的各种实施例,并且在附图中:
图1是图示根据实施例的高速缓存系统的要素的高级框图。
图2A图示了根据相应实施例的均在高速缓存系统中不同地交换的命令的要素。
图2B图示了根据实施例的被访问以确定数据高速缓存操作的参考信息。
图2C图示了根据实施例的用于提供对经压缩的数据的访问的数据高速缓存。
图 2D和2E图示了根据相应实施例的均被访问以确定数据高速缓存操作的各种参考信息。
图3是图示根据实施例的用于控制高速缓存的方法的要素的流程图。
图4是图示根据实施例的用于向高速缓存控制器提供数据压缩信息的方法的要素的流程图。
图5A和5B是包括与本公开一致的高速缓存系统的示例性电子设备的框图。
具体实施方式
本文中讨论的实施例不同地提供了用于改善对存储在高速缓存存储器中的经压缩的数据的访问的技术和/或机制。一些高速缓存架构正在开始利用压缩/解压缩功能来增加有效的高速缓存容量,而同时提供对数据访问时间的至少一些相对改善。通常,在压缩要写入高速缓存的数据中(或在解压缩要从高速缓存读取的数据中)所需要的附加时间小于将这样的数据的未压缩版本写入(或从其读取这样的数据的未压缩版本)相对慢的外围存储设备的情况下,这样的功能是有用的。
常规的盘高速缓存架构将高速缓存分成固定大小(例如,4千字节(KB)高速缓存行)的高速缓存行,其中这样的高速缓存行位于诸如固态驱动器(SSD)之类的高速缓存设备的逻辑块寻址(LBA)范围中。在这样的架构中,高速缓存资源在高速缓存行粒度级上被分配——例如,以单独的高速缓存行的预定和固定大小为单位。不幸的是,数据模式不同地压缩。高速缓存行中的一个4KB数据可以压缩八倍(8x),并且下一个4KB可能完全不压缩(即,1x)。
例如,具有压缩的常规SSD高速缓存不同地包括将LBA范围划分成均具有等于未压缩高速缓存行的固定大小的槽(slot)。在操作期间,这样的槽可以根据需要在高速缓存插入、逐出和更新时被不同地填充、释放和盖写。因此,这些高速缓存解决方案不充分受益于逻辑上增加的高速缓存容量的至少部分。特定实施例是下述实现的结果,在固定大小的高速缓存行的情况下,高速缓存控制逻辑不能利用由于压缩而可用的至少一些高速缓存行中的空间。由这样的实施例提供的优点包括高速缓存容量中的有效增加和随时间的更高的高速缓存命中率。
虽然本文中针对特定应用参考说明性实施例描述了本公开,但是应当理解,这样的实施例仅是示例性的,并且如由所附权利要求限定的本发明不限于此。实际上,为了说明的缘故,可以在其中使用固态驱动器作为针对存储设备(诸如硬盘驱动器或带存储器)的高速缓存设备的一个或多个使用模型的上下文中讨论本文描述的技术。这样的讨论仅是示例性的,并且应当理解,本文所描述的技术的全部或一部分可以在其他上下文中使用。实际上,本文描述的技术可以与任何适当的高速缓存设备和存储设备一起使用。通过本文提供的教导,相关技术领域的技术人员将认识到本公开的范围内的附加修改、应用和实施例以及本公开的实施例将具有效用的附加领域。
本文描述的技术可以在一个或多个电子设备中实现。可以利用本文描述的技术的电子设备的非限制性示例包括任何种类的移动设备和/或固定设备,诸如摄像机、蜂窝电话、计算机终端、台式计算机、电子阅读器、传真机、信息亭(kiosk)、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如,刀片服务器、机架安装服务器、其组合等)、机顶盒、智能电话、平板个人计算机、超移动个人计算机、有线电话、其组合等。这样的设备可以是便携式的或固定的。在一些实施例中,本文描述的技术可以在台式计算机、膝上型计算机、智能电话、平板计算机、上网本计算机、笔记本计算机、个人数字助理、服务器、其组合等中采用。更一般来说,本文描述的技术可以在任何电子设备中采用,高速缓存设备和存储设备中的一个或二者可以耦合和/或安装到所述电子设备。
术语“高速缓存设备”在本文中用于指代用作针对另一存储器设备(后文称为“存储设备”)的高速缓存的存储设备。虽然本公开聚焦于其中使用固态驱动器作为高速缓存设备的实施例,但是应当理解,这样的描述仅是示例性的,并且术语“高速缓存设备”包含可以用作针对存储设备的高速缓存的任何类型的存储器设备。在没有限制的情况下,在一些实施例中,本文描述的高速缓存设备是以固态驱动器、动态随机存取存储器(DRAM)、硬驱动器、字节可寻址的非易失性非易失性存储器、其组合等的形式。在一些实施例中,本文描述的高速缓存设备表现出比相关联的存储设备的性能更强的输入/输出(“I/O”)性能。因此,在一些实施例中,本文描述的高速缓存设备可以包括比高速缓存设备关联于的存储设备的存储器更快的存储器(本文也称为“高速缓存存储器”)。
术语“存储设备”在本文中用于指代可用于持久存储数据的存储器设备。高速缓存设备的非限制性示例包括硬驱动器(例如,采用磁性记录介质的驱动器)、固态驱动器、带存储器、其组合等。在一些实施例中,本文描述的存储设备是以表现出低于相关联的高速缓存设备的I/O性能的I/O性能的一个或多个存储器设备的形式。因此,在一些实施例中,本文描述的存储设备可以包括比存储设备与其相关联的高速缓存设备的存储器更慢的存储器(本文也称为“存储存储器”)。
如本文中的任何实施例所使用的,术语“模块”可以指代配置为执行与本公开一致的一个或多个操作的软件、固件、电路和/或其组合。软件可以被体现为在非瞬时计算机可读存储介质上记录的软件包、代码、指令、指令集和/或数据。固件可以被体现为在存储器设备中被硬编码(例如,非易失性)的代码、指令或指令集和/或数据。如本文任何实施例中所使用的“电路”可以包括例如(单一或以任何组合地)硬接线电路、诸如包括一个或多个单独指令处理核的计算机处理器的可编程电路、状态机电路、存储由可编程电路执行的指令的软件和/或固件。模块可以共同地或单独地被体现为形成如前所定义的一个或多个电子设备的一部分的电路。在一些实施例中,本文描述的一个或多个模块可以是以逻辑的形式,所述逻辑至少部分地在硬件中实现以执行与本公开一致的一个或多个功能。
术语“固态驱动器”、“SSD”、“多个SSD”在本文可互换地用于指代其中使用集成电路组件(例如,非易失性随机存取存储器(NVRAM)组件)持久存储数据的各种数据存储设备中的任何一个。在任何情况下,SSD可以被理解为包括非易失性存储器,诸如NAND或NOR存储器。
术语“硬驱动器”和“HDD”在本文可互换地用于指代包括用于持久存储数据的磁性记录介质的数据存储设备。术语“混合硬驱动器”、“混合硬驱动器”和“混合HDD”指代包括诸如NVRAM和磁性记录介质之类的集成电路组件的组合的数据存储设备。混合HDD包括所谓的“双驱动混合系统”(其中单独的SSD和HDD被组合成混合体,例如通过操作系统或其他控制硬件/软件)和“固态混合驱动器”,其中非易失性存储器(诸如NAND存储器)被合并到硬驱动器中。
如背景技术中所指出的,高速缓存设备可以减轻由相对慢的外围存储设备引入的性能瓶颈中的至少一些。然而,成本和/或其他考虑可能实际上限制可以包括在高速缓存设备中的存储器的大小。由于可能存储在高速缓存设备中的数据量被高速缓存存储器的大小所限制,因此这可能对可通过使用高速缓存设备得到的性能改善造成重大的制约。
考虑到前述内容,压缩要存储在高速缓存设备的存储器中的数据可以为高速缓存系统提供显著的益处。例如,数据压缩可以使得更多数据能够被存储在高速缓存设备中,而不需要增加其中的存储器的量。然而,各种考虑已经使得在许多高速缓存设备中实际上难以实现数据压缩。
例如,许多高速缓存控制器被配置为将接收的数据/状态分割为具有固定大小(例如,4千字节(KB)、6KB、8KB等)的高速缓存行。因此,例如,高速缓存控制器可以确定应当将64KB状态写入高速缓存存储器。为了实现这一点,控制器可以将64KB状态划分为十六个4KB的高速缓存行。然后,控制器可以向高速缓存设备发送写入命令,导致将每个4KB高速缓存行写入高速缓存存储器中的存储块。由于4KB高速缓存行中包含的状态没有被压缩,所以控制器通常将分配高速缓存存储器的4KB块以用于存储。
如上所指出的,可以通过压缩每个高速缓存行中的数据来实际增加高速缓存设备中的高速缓存存储器的容量。然而,每个高速缓存行中的数据可能例如由于其中包含的数据模式中的差异而不同地进行压缩。例如,第一高速缓存行中的数据模式可以压缩二倍(意味着经压缩的数据是输入数据的大小的一半),第二高速缓存行中的数据模式可以压缩八倍(意味着经压缩的数据是输入数据的大小的八分之一),而第三高速缓存行中的数据模式根本不压缩(意味着经压缩的数据和输入数据具有相同大小)。考虑到这一点,在采用压缩的现有高速缓存系统中,高速缓存控制器在将经压缩的数据写入高速缓存存储器之前不知道高速缓存行中经压缩的数据的大小。因此,这样的系统中的控制器通常在高速缓存存储器中分配完全高速缓存行大小,即使给定高速缓存行中的经压缩的数据的大小小于完全高速缓存行大小。例如,4KB高速缓存行中的数据可以被压缩到2KB,但是高速缓存控制器可能不知道经压缩的数据的大小。因此,即使经压缩的数据的大小仅为2KB,控制器也可能分配高速缓存存储器中的4KB块以供存储该高速缓存行中的数据。
因此,采用压缩的现有高速缓存系统通常不能直接利用通过压缩释放的附加空间。相反,除了利用通过压缩使其可用的优点,这样的系统必须在写入经压缩的数据之后查询高速缓存设备,以确定高速缓存存储器的大小是否已经改变和/或确定可用的高速缓存存储器的量。
考虑到上述内容,本公开涉及采用数据压缩的高速缓存技术。如下面将要详细描述的,本公开的技术包括高速缓存系统和方法,其中高速缓存行中的数据在被写入高速缓存存储器之前被压缩。与采用压缩的现有高速缓存系统不同,本公开的技术使得高速缓存控制器能够在将经压缩的数据写入高速缓存存储器之前理解高速缓存行中的数据被压缩到的程度。在一些实施例中,本文描述的高速缓存控制器可以至少部分地基于经压缩的数据的大小、可归因于经压缩的数据(或其对应的输入数据)的压缩比或其组合来确定经压缩的数据将被存储在高速缓存存储器中哪里。
因此,本公开的一个方面涉及用于对数据进行高速缓存的系统,其在本文中也被称为高速缓存系统。注意,为了清楚和易于理解的缘故,独立于其中可以使用和/或安装高速缓存系统的主机设备和/或系统来描述本文描述的高速缓存系统。应当理解,高速缓存系统可以与在任何适当的主机设备或系统一起使用和/或安装于任何适当的主机设备或系统中,该主机设备或系统可以以如上所定义的电子设备和/或其组件的形式,诸如固态驱动器或用作针对一个或多个外围存储设备的高速缓存的其他存储器设备。在没有限制的情况下,本文描述的高速缓存系统特别适用于高速缓存可用于台式计算机、膝上型计算机、移动电话、智能电话、平板个人计算机、服务器,数据中心、其组合等中的一个或多个存储设备。更一般地,本文描述的高速缓存系统可以在可能受益于高速缓存相对慢的外围存储设备的任何设备中实现。
在这方面,参考图1,图1是与本公开一致的示例性高速缓存系统的框图。如所示,高速缓存系统100包括高速缓存控制器模块(CCM)101和高速缓存设备102。
注意,CCM 101在图1中被图示为与高速缓存设备102分离。应当理解,这样的图示仅是为了示例的缘故,并且CCM 101可以存在于任何适当的位置。例如并且如图1所指示的,在一些实施例中,CCM 101是以与高速缓存设备102分离的模块的形式。在这样的实施例中,CCM 101可以被安装或以其他方式存在于高速缓存系统100与之一起使用的电子设备(例如,主机系统,未示出)中。在这种情况下,CCM 101可以与高速缓存设备102进行有线或无线通信。替代地,CCM 101可以与高速缓存设备102成整体,例如,如图5A和5B所示。例如,CCM101可以是以高速缓存设备101的板上高速缓存控制器的形式或包括高速缓存设备101的板上高速缓存控制器。在一些实施例中,高速缓存系统100被包括在固态盘中,并且CCM 101是以SSD控制器的形式或包括SSD控制器。
在任何情况下,CCM 101可以是以软件、固件、硬件、至少部分地以硬件实现的逻辑或其组合的形式,其被配置为控制高速缓存设备102中或者更具体地在高速缓存设备102的存储器106中的数据/状态的存储。因此,CCM 101可以实现一个或多个已知或未来的高速缓存策略和/或算法,以确定应当从高速缓存设备102存储和/或移除哪些数据/状态。替代地或附加于这样的功能,CCM 101还可以被配置为确定将数据/状态存储在高速缓存设备102的存储器106中哪里。如稍后将详细描述的,CCM 101可以至少部分地基于经压缩的数据/状态的大小、可归因于经压缩的数据/状态的压缩比或其组合来分配在存储器106内的块(例如,逻辑块地址或LBA)。
高速缓存设备102可以是适用于高速缓存相对慢的外围存储介质(未示出)的任何数据存储设备。可以用作高速缓存设备102的适当的数据存储设备的非限制性示例包括固态驱动器、硬驱动驱动器、动态随机存取存储器(DRAM)设备、其组合等。与前面的描述一致,在一些实施例中,高速缓存设备102可以是表现出比外围存储介质的输入/输出(写入/读取)性能更强的输入/输出(写入/读取)性能的任何数据存储设备,针对所述外围存储介质而言,所述数据存储设备要用作高速缓存。在不限制的情况下,在一些实施例中,高速缓存设备102是固态驱动器的形式。
如图1中所示,高速缓存设备102包括数据压缩模块(DCM)103、压缩解压缩引擎(CODEC)104、传递缓冲器(缓冲器)105和存储器106。DCM 103通常起作用以与CCM 101通信并且使高速缓存设备102执行与本公开一致的数据压缩操作。稍后将提供关于DCM 103的操作的进一步细节。
压缩解压缩引擎CODEC 104通常起作用以压缩从CCM 101接收的数据。具体地并且将如下所述,CODEC 104可以从CCM 101(或更具体地,从DCM 103)接收高速缓存行中的数据。为了清楚的缘故,由CODEC 104接收的数据被称为输入数据。虽然本公开描述了其中CODEC在来自单个高速缓存行的输入数据上操作的实施例,但是应当理解,这样的描述是为了示例的缘故,并且CODEC可以被配置为在来自多个高速缓存行的输入数据上操作。因此,例如,CCM 101可以将数据池划分成多个高速缓存行,其中每一个包含输入数据(例如,4KB、8KB等)。CCM 101(或DCM 103)可以将输入数据从一个或多个高速缓存行发送到CODEC 104以用于压缩。取决于其配置,CODEC 104可以一次仅操作输入数据集合中的一个(即,来自一个高速缓存行的输入数据),或者其可以同时在输入数据的多个集合(即,来自多个高速缓存行的输入数据)上操作。
然后,CODEC 104可以例如使用一个或多个压缩算法在输入数据上执行压缩操作,以产生经压缩的输出。如可以领会的,经压缩的输出的大小可能与输入数据的大小不同。经压缩的输出的大小与输入数据之间的相对差异可以由压缩比来表示,在一些实施例中,所述压缩比可以通过将输入数据的大小除以经压缩的输出的大小来确定,或反之亦然。因此,例如,如果输入数据的大小为4KB,并且经压缩的输出的大小为2KB,则取决于如何计算该比,压缩比可以是0.5或2。
可以由CODEC 104执行的压缩算法的非限制性示例包括Lempel-Ziv(LZ)算法、Deflate算法、LZR算法及其组合。当然,这些算法仅是示例性的,并且可以使用任何适当的压缩算法(并且特别是无损压缩算法)。在没有限制的情况下,在一些实施例中,CODEC 104在从CCM 101(或更具体地,从DCM 103)接收的数据/状态上执行Lempel-Ziv算法。
图1图示了其中CODEC 104与高速缓存设备102成整体的实施例。应当理解,该图示仅仅是为了示例的缘故,并且CODEC 104不需要与高速缓存设备102成整体。实际上,本公开预想到其中CODEC 104被存储和/或实现在任何适当的位置的实施例。例如,CODEC 104可以是由主机系统的其他硬件(诸如视频卡或其他硬件加速器)实现的硬件编解码器(codec)。替代地或此外,CODEC可以是由例如主机系统的处理器执行的软件编解码器。
无论CODEC 104的性质如何,由CODEC 104产生的经压缩的输出可以被存储在缓冲器105中。因此,缓冲器105可以被配置为存储codec 104的经压缩的输出。具体地,缓冲器105可以在将经压缩的输出写入高速缓存设备102的存储器106之前,存储codec 104的经压缩的输出。如将稍后描述的,将经压缩的输出写入存储器106可以在例如从CCM 101接收到数据写入命令(例如,写入命令)时进行调节。此外,在向存储器106提交经压缩的输出之前(例如,当经压缩的输出被存储在缓冲器105中时),经压缩的输出要被写入的位置(例如,存储器106中的逻辑块地址)可以由CCM 101确定,如下面进一步将描述的。因此,可以将缓冲器105理解为传递缓冲器,其可以在向高速缓存存储器106提交经压缩的输出之前存储codec 104的经压缩的输出。
缓冲器105可以是适合于存储经压缩的输出的任何存储器结构。可以用作缓冲器105的适当的存储器结构的非限制性示例包括静态随机存取存储器(SRAM)、嵌入式动态随机存取存储器、其组合等。在没有限制的情况下,在一些实施例中,缓冲器105的大小大于或等于大约从CCM 101接收的高速缓存行的大小。因此,例如,在CCM 101向高速缓存设备102传输4KB高速缓存行的情况下,在一些实施例中,缓冲器105的大小可以大于或等于大约4KB。当然,这仅仅是为了示例的缘故,并且缓冲器105可以是任何期望的大小。
存储器106可以是任何适当类型的计算机可读存储器。可以用作存储器106的示例性存储器类型包括但不限于:相变存储器(PCM)、字节可寻址三维交叉点存储器、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、诸如NAND或NOR存储器之类的闪速存储器、包含忆阻器技术的磁阻随机存取存储器(MRAM)存储器、自旋转移力矩(STT)-MRAM、磁性驱动存储器、光学驱动存储器、其组合等。此外或替代地,存储器106可以包括其他和/或稍后开发的类型的计算机可读存储器。
在没有限制的情况下,在一些实施例中,存储器106是通常与用作高速缓存设备102的存储器设备的类型相关联的存储器类型。因此,例如,当高速缓存设备102是固态驱动器时,存储器106可以是非易失性存储器的形式。同样,当高速缓存设备102是硬驱动器时,存储器106可以是磁性记录介质的形式。在没有限制的情况下,在一些实施例中,高速缓存设备102是SSD的形式,并且存储器106是以非易失性存储器(例如,NAND存储器)的形式。在任何情况下,存储器106可以被配置为将数据存储在一个或多个逻辑块中,所述逻辑块可以例如用高速缓存设备102的存储器控制器或其他组件进行寻址。也就是说,存储器106可以包括数据/状态可以存储于的多个逻辑块地址(LBA)或被布置在多个逻辑块地址(LBA)中。响应于如本领域通常理解的数据写入命令,可以将数据写入存储器106。数据写入命令可以是写入命令的形式,该写入命令指定存储器106内的与该命令相关联的数据/状态要被写入的逻辑块地址。
为了示例的缘故,本公开现在将进行到描述高速缓存系统100的实施例的操作,其中,高速缓存设备102是SSD的形式,并且存储器106是以非易失性存储器的形式。要强调的是,以下描述是为了示例的缘故,并且与该示例相关联地描述的操作可以与任何适当的高速缓存设备一起采用。
进一步参考图1,CCM 101可以从诸如其中可以安装高速缓存系统100的主机系统的处理器或另一个部件之类的数据源接收数据。如以上注意的,CCM 101可以应用一个或多个高速缓存策略来确定是否数据的全部或部分被写入存储器106。当CCM 101确定要将数据的全部或一部分写入存储器106时,可以将要写入的数据分配到一个或多个高速缓存行,其在大小方面可以是固定的或可变的。在没有限制的情况下,在一些实施例中,高速缓存行具有固定大小,例如4KB、6KB、8KB、16KB、32KB、64KB等。
CCM 101还可以向高速缓存行中的数据指派标签。通常,标签用作特定数据(在该情况下是分配给高速缓存行中的一个的数据)的单元的标识符。因此,标签可以是以适合于唯一地标识与标签所关联的高速缓存行中的数据的任何格式。因此,例如,CCM 101可以将第一标签“A”指派给第一高速缓存行中的数据,并且将第二标签“B”指派给第二高速缓存行中的数据等。与高速缓存行相关联的标签的性质和格式不受限制,只要其能够唯一地标识高速缓存行中的数据。因此,例如,标签可以是32位、64位、128位或256位序列号、高速缓存行中的数据的散列(hash)、其组合等的形式。在没有限制的情况下,在一些实施例中,标签是以64位序列号的形式。
然后,如由图1的点1处所图示的,CCM 101可以将高速缓存行中的数据发送到高速缓存设备102以用于压缩。在这方面,CCM 101可以例如在一个或多个有线或无线信号中将压缩命令发送到高速缓存设备102。压缩命令可以以任何适当的格式,诸如在串行高级技术附件(SATA)标准或快速非易失性存储器(NVMe)标准的任何先前、当前或未来开发版本下的供应商特定的命令。NVMe或非易失性存储器主机控制器接口规范(NVMHCI)是用于访问通过PCIe总线附连的SSD的规范。例如,参见2014年11月3日批准并且可用于从http://nvmexpress.org下载的NVM Express Revision 1.2规范。在任何情况下,压缩命令可以包括标签的拷贝、用于压缩的输入数据(即,高速缓存行中的数据)、以及可选地命令中的输入数据的未经压缩的大小的测量。该概念在图2中图示,其中压缩命令201以包括标签、输入数据以及可选地输入数据的未经压缩的大小的测量的单个命令的形式图示。当然,压缩命令可以包括如期望的其他元素,诸如但不限于命令报头(header)。压缩命令还可以包括一个或多个压缩指令或与一个或多个压缩指令相关联,所述压缩指令可以被配置为使CODEC104在输入数据上执行压缩操作。当然,标签、数据和压缩指令不需要被包括在相同的命令中,并且可以如期望的被包括在不同的命令中。
DCM 103可以直接从CCM 101接收压缩命令,或者压缩命令可以从高速缓存设备102的其他部件被转发到DCM 103。在任何情况下,响应于压缩命令,DCM 103可以将从高速缓存控制器模块接收的输入数据转发到CODEC 104以供压缩。作为响应,CODEC 104可以在输入数据上执行一个或多个压缩操作,例如使用如前所述的一个或多个压缩算法。如图1的点2处所图示的,CODEC 104可以在传递缓冲器105中存储所得到的经压缩的输出。然后,CODEC 104可以将压缩操作的完成和经压缩的输出的位置(例如,缓冲器105的标识符、缓冲器105内的地址范围等)报告到DCM 103。
如图1的点3处所图示的,DCM 103可以将返回消息传送到CCM 101。返回信号可以包括指派给输入数据的标签以及存储在DCM 103中的经压缩的输出的大小的测量。该概念在图2A中示出,其中返回消息202被图示为包括标签和经压缩的输出的大小。因此,在一些实施例中,DCM 103可以测量或以其他方式确定存储在缓冲器105中的经压缩的输出的大小,并且将所确定的大小包括在返回命令中。替代地或另外,CODEC 104可以被配置为例如在其压缩输入数据之后,将经压缩的数据的大小自动地传送到DCM 103。
虽然本公开预想到实现其中DCM 101自动地向CCM 101发出指定经压缩的大小和标签的返回消息,但是本公开的系统不需要以该方式进行配置。实际上,在一些实施例中,DCM 103可以在从CCM 101接收到查询消息时调节返回消息的发出。例如,当来自CCM 101的输入数据由CODEC 104压缩并且被存储在传递缓冲器105中时,DCM 103可以维护记录(例如,表或其他数据结构),所述记录将关联于从CCM 101接收的输入数据(例如,各种不同的高速缓存行)的标签与关联于标签的经压缩的输出的大小以及经压缩的输出的位置(例如在缓冲器105中)进行相关。然后,DCM 103可以等待从CCM 101接收查询命令。例如,在一些实施例中,CCM 101可以向DCM 103传输查询命令,其中查询命令包括查询指令和标签。响应于查询命令,DCM 103可以查找与标签相关联的经压缩的输出的大小,并且如上所讨论的向CCM 101发送返回消息,所述返回消息包括标签和经压缩的输出的大小。
在任何情况下,如在图1的点4处所图示的,CCM 101可以从高速缓存设备102(或更具体地,从DCM 103)接收返回消息。响应于接收到返回消息,CCM 101可以分析返回消息以标识标签和经压缩的数据的大小。通过该分析,CCM 101可以确定与标签相关联的输入数据被CODEC 104压缩到的程度。换句话说,通过分析返回消息,CCM 101可以确定存储在缓冲器105中的经压缩的输出的大小。因为经压缩的输出与标签相关联(在返回消息中)并且标签与输入数据相关联(在压缩命令中),因此CCM 101可以确定经压缩的输出的大小和/或输入数据被CODEC 104压缩到的程度(即,输入数据的压缩比)。
然后,CCM 101可以确定经压缩的输出要被存储在存储器106中哪里。在这方面,CCM 101可以具有存储器106内的逻辑块地址(LBA)的知识以及那些逻辑块地址的当前状态(例如,被写入、未被写入等)。例如,CCM 101可以维护标识存储器106中的所有LBA的LBA表。至少部分地基于经压缩的输出的大小和/或可归因于输入数据的压缩比,CCM 101然后可以分配存储器106内的一个或多个LBA以用于存储经压缩的输出。
如图1的点5处所图示的,CCM 101然后可以向高速缓存设备102发出写入命令。通常,写入命令可以被配置为使高速缓存设备102将存储在缓冲器105中的经压缩的输出写入存储器106的一个或多个LBA。因此,写入命令可以包括与经压缩的输出(和对应输入数据)相关联的标签以及经压缩的输出要被写入的一个或多个LBA。该概念在图2A中图示,其中写入命令203被图示为单个命令,所述单个命令包括标签和与标签相关联的经压缩的输出要被写入的存储器106中的一个或多个LBA。写入/提交指令(未示出)也可以如期望的被包括在该命令中或者由CCM 101单独传输。
现在转到图1的点6,DCM 103可以被配置为从CCM 101接收写入命令。响应于写入命令,DCM 103可以使高速缓存设备102将与写入命令中标识的标签相关联的经压缩的数据从缓冲器105写入到在写入命令中指定的存储器106的一个或多个的逻辑块地址。将经压缩的数据从缓冲器105写入存储器106可以以任何先前已知的或将要开发的方式发生,并且因此本文并不讨论。
为了清楚的缘故,上述讨论聚焦于下述实施例:其中CCM 101确定存储在缓冲器105中的经压缩的输出将被写入高速缓存设备102的存储器106。应当理解,上述讨论仅为了示例的缘故,并且存储在缓冲器105中的经压缩的输出不需要总是被写入高速缓存设备102的存储器106。实际上,本公开预想到其中CCM 101响应于返回消息而确定存储在缓冲器105中的经压缩的输出不被写入存储器106的实施例。
通过示例的方式,在一些实施例中,如上所讨论的,CCM 101可以分析返回消息以确定存储在缓冲器105中的经压缩的输出的大小和/或可归因于输入数据的压缩比。在这样的实施例中,CCM 101还可以被配置为至少部分地基于压缩比和/或经压缩的输出的大小来确定是否将经压缩的输出写入存储器106。例如,CCM 101可以将可归因于输入数据的压缩比与阈值压缩比相比较,并且至少部分地基于可归因于输入数据的压缩比是否超过阈值压缩比来确定经压缩的输出是否不被写入存储器106。替代地或此外,CCM 101可以将缓冲器105中的经压缩的输出的大小与阈值大小相比较,并且至少部分地基于经压缩的输出的大小是否超过阈值大小来确定经压缩的输出是否被写入存储器106。
在其中CCM 101确定经压缩的输出不被写入存储器106的情况下,CCM 101可以向高速缓存设备102(或更具体地,向DCM 103)发出丢弃命令。丢弃命令可以包括例如丢弃指令和标签。响应于丢弃命令,DCM 103可以使高速缓存设备102从缓冲器105清除(purge)与标签相关联的经压缩的输出。
如上所讨论的,本公开预想到其中CCM 101将标签与要被压缩的高速缓存行数据相关联的实施例,DCM 103将标签与存储在传递缓冲器105中的经压缩的数据相关联,并且CCM发出包含标签的写入命令以将经压缩的数据写入存储器106。虽然是有益的,但应当理解的是,这样的实施例是出于示例的缘故,并且本公开预想到其中标签不用于标识高速缓存行中的数据的实施例。例如,CCM 101可以被配置为将压缩命令传输到高速缓存设备102,如上所述。然而,与前述实施例不同,压缩命令可以包含用于压缩的来自高速缓存行的数据/状态,但是可以不包含标签。响应于压缩命令,DCM 103可以将数据/状态转发到CODEC104以供压缩,此后经压缩的输出可以被存储在传递缓冲器105中。然后,DCM 103可以向CCM101发送返回信号、压缩操作的信令完成和其中存储经压缩的输出的传递缓冲器105的位置/标识。
当CCM确定经压缩的输出要被写入存储器106时,其可以向高速缓存设备102发出读取命令。读取命令可以以传递缓冲器105为目标,并且使高速缓存设备102将传递缓冲器105的内容提供给高速缓存控制器101。然后,CCM 101可以确定从传递缓冲器105读取的数据的大小和/或压缩比,并且分配存储器106内的逻辑块地址以用于其存储。然后,CCM 101可以向高速缓存设备102发出写入命令,所述写入命令包括经压缩的输出和存储器106的所分配的LBA。响应于写入命令,高速缓存设备102可以将经压缩的输出写入在写入命令中指定的所分配的LBA。
如可以领会的,这样的实施例可以允许CCM 101在将经压缩的输出写入存储器106之前确定经压缩的输出的大小和/或压缩比,而同时避免与生成和跟踪针对每个高速缓存行的标签相关联的开销,不过潜在地以在可以发送附加数据之前必须等待压缩在针对给定高速缓存行的状态上完成为代价。
如前所述,本公开的高速缓存系统被包括在一个或多个高速缓存设备和/或电子设备中,例如并且可以对一个或多个存储设备进行高速缓存。该概念在图5A中图示,其描绘了包括与本公开一致的高速缓存系统的电子设备的框图。如所示,电子设备500包括设备平台501、处理器502、存储设备503、高速缓存设备(在该情况下的SSD 504)、输入/输出接口/设备505(例如,键盘、鼠标、无线网络接口等)、显示器506以及一个或多个天线507。SSD 504包括高速缓存系统100,其进一步细节在图5B中示出。利用SSD 504访问经压缩的高速缓存行可以至少部分地确定平台501的一个或多个其他操作——例如,包括用显示器506显示图像、与一个或多个天线507的无线网络通信等。
电子设备500可以是任何适当的电子设备,诸如上述的电子设备。因此,可以用作电子设备500的电子设备的非限制性示例包括任何种类的移动设备和/或固定设备,诸如相机、蜂窝电话、计算机终端、台式计算机、电子阅读器、传真机、信息亭、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如,刀片服务器、机架安装服务器、其组合等)、机顶盒、智能电话、平板个人计算机、超移动个人计算机、有线电话、其组合等。这样的设备可以是便携式的或固定的。在一些实施例中,本文描述的技术可以在台式计算机、膝上型计算机、智能电话、平板计算机、上网本计算机、笔记本计算机、个人数字助理、服务器、其组合中采用。
设备平台可以是任何适当的设备平台,并且在一些实施例中与用作电子设备500的电子设备的类型相关。因此,例如在电子设备500是智能电话、笔记本计算机、台式计算机、服务器等的情况下,设备平台501可以分别地是智能电话平台、笔记本计算机平台、台式计算机平台、服务器平台的形式。当然,这样的设备平台仅仅是为了示例的缘故,并且任何适当的设备平台可以用作设备平台501。
处理器502可以是任何适当的通用处理器或专用集成电路,并且可以能够在一个或多个处理器核上执行一个或多个线程。在没有限制的情况下,在一些实施例中,处理器502是通用处理器,诸如但不限于可从INTEL®公司、ADVANCED MICRO DEVICES®、ARM®、NVIDIA®、APPLE®和SAMSUNG®商业获得的通用处理器。尽管图5A将电子设备500图示为包括单个处理器502,但是可以使用多个处理器。
存储设备503可以是任何适当的存储设备,诸如但不限于上述存储设备。在没有限制的情况下,在一些实施例中,存储设备503是SSD、硬盘驱动器、带存储器、其组合等的形式。在一些实施例中,存储设备503可以表现出比在电子设备500中使用的高速缓存设备(在该情况下,SSD 504)的输入输出性能更慢的输入输出性能。
现在参考图5B,其提供了图5A中的SSD 504和电子设备500的其他部件的进一步细节。如图5B中所示,SSD 504可以例如经由接口505与(设备平台501的)总线508通信。在这方面,任何适当的总线可以用作总线508,并且任何适当的接口可以用作接口505。在没有限制的情况下,在一个实施例中,总线508是串行高级技术附连(SATA)总线,并且接口505是SATA接口。如图5B中进一步所示,SSD 504可以包括高速缓存控制器模块(CCM)101、数据压缩模块(DCM)103、CODEC 104、缓冲器105和存储器106。为了图示的缘故,CCM 101、DCM 103和CODEC 104被示出为SSD 504的单独的元件,但是应当理解,这样的配置不是必需的。实际上,在一些实施例中,这样的元件中的一个或组合可以被集成或以其他方式被包括在SSD504的SSD控制器(未示出)中。
在操作中,总线508可以将数据(例如,从处理器502)携带到SSD 504。SSD 504可以例如经由接口505接收数据。然后,接收到的数据可以被传递到CCM 101。此时,CCM 101可以应用一个或多个高速缓存策略来确定数据的全部或一部分是否被写入存储器106。如果是,则如前所讨论的,CCM 101可以将数据划分成一个或多个高速缓存行,并且将高速缓存行中的一个或多个(可选地标记有标签)发送到DCM 103以供压缩。如上所讨论的,DCM 103可以将数据(输入数据)发送到CODEC 104以供压缩。CODEC 104可以压缩输入数据以产生存储在缓冲器105中的输出。
然后,CCM 101可以确定经压缩的输出的大小和/或可归因于输入数据的压缩比,并且可以应用一个或多个高速缓存策略来确定经压缩的输出是否要被写入到存储器106。如前所讨论的,可以至少部分地基于经压缩的输出的大小和/或可归因于输入数据的压缩比来预测决定。当经压缩的输出要被写入存储器106时,CCM 101可以分配存储器106中的至少一个逻辑块地址范围以用于存储经压缩的输出。然后,CCM 101可以向SSD 504的盘控制器(未示出)发送写入命令,其中写入命令使控制器将存储在缓冲器105中的经压缩的输出写入由CCM 101分配的存储器106的(一个或多个)逻辑块地址范围。替代地,在CCM 101与SSD 504的盘控制器成整体或是SSD 504的盘控制器的形式的情况下,CCM 101本身可以使缓冲器105中的经压缩的输出被写入到存储器106的(一个或多个)所分配的逻辑块地址范围。类似地,在经压缩的输出不被写入存储器106的情况下,CCM 101可以发出丢弃命令,所述丢弃命令使经压缩的输出被从缓冲器105中清除,例如在其被写入存储器106之前。
本公开的另一方面涉及对数据进行高速缓存的方法。在这方面,参考图3,图3是根据与本公开一致的对数据进行高速缓存的示例性方法的高速缓存控制器设备(诸如高速缓存控制器模块101)的示例性操作的流程图。如所示,方法300可以包括,在310处,传输包括第一数据的第一压缩命令。第一压缩命令可以在310处被传输到包括压缩引擎的设备,该压缩引擎响应于第一压缩命令而压缩第一数据以产生第一经压缩的数据。在实施例中,执行方法300的高速缓存控制器存储将第一数据与第一标签相关联的信息,第一标签例如可以用于访问第一数据(和/或第一经压缩的数据)。例如,第一标签可以被包括在第一压缩命令中。
方法300还可以包括,在320处,确定第一经压缩的数据的大小。例如,压缩引擎可以直接或间接地向高速缓存控制器传送指定包括第一经压缩的数据的数据的位、字节、块或其他集合的总数的信息。替代地或此外,这样的信息可以指定第一经压缩的数据相对于第一数据的压缩比。
在实施例中,方法300还包括,在330处,标识高速缓存设备的存储器的第一逻辑块地址(LBA)范围。可以基于如在320处确定的第一经压缩的数据的大小以及高速缓存控制器中包括或以其他方式对高速缓存控制器可访问的参考信息来标识第一LBA范围。参考信息可以包括指定高速缓存设备的存储器的多个LBA范围(本文也称为槽)的一个或多个表、列表、树或其他数据结构,其中这样的LBA范围当前均存储相应的高速缓存行和/或可以用于存储相应的高速缓存行。可以维护这样的参考信息,以针对多个LBA范围中的每一个来保持跟踪诸如LBA范围的大小、外围存储设备的对应逻辑基址、LBA范围的使用的新近性等之类的信息。一些或所有这样的信息可以被排序,例如,槽大小、使用的槽新近性等。
通过说明而非限制的方式,参考信息可以标识当前均存储相应的经压缩的高速缓存行的一个或多个LBA范围和/或当前不存储有效的经压缩的高速缓存行的一个或多个LBA范围。例如,参考信息可以包括标识除了当前存储有效数据的高速缓存存储器的任何LBA范围之外的一个或多个LBA范围的信息,其中参考信息还针对这样的一个或多个LBA范围中的每一个标识LBA范围的相应大小。在330处的标识期间,多个LBA范围可以包括不同相应大小的一些LBA范围。
在一个实施例中,针对多个LBA范围中的每一个,参考信息指定该LBA范围的使用的新近性。在330处的标识第一LBA范围可以基于第一LBA范围的使用的新近性——例如,与一个或多个其他LBA范围(例如,均具有等于第一LBA范围的大小的大小)的使用的新近性相比。在330处的标识第一LBA范围可以包括标识从高速缓存存储器逐出的经压缩的数据——例如包括标识第一LBA范围的相对低的命中率,如与多个LBA范围中的一个或多个其他范围的命中率相比较的。
在330处的标识第一LBA范围可以包括标识多个LBA范围的子集——例如,基于该子集的LBA范围均具有等于足以存储第一经压缩的数据的区段的最小数目的区段的相应的总数目。替代地或此外,可以基于子集的LBA范围均具有最接近(并且不小于)足以存储第一经压缩的数据的区段的最小数目的(可用LBA范围的)LBA范围的区段的总数目来标识多个LBA范围的子集。可以仅从多个LBA范围的子集之中选择第一LBA范围——例如,其中这样的选择基于第一LBA范围是该子集的最近最少使用的LBA范围。
在330处标识第一LBA可以包括划分由参考信息当前标识的多个LBA范围中的一个LBA范围。LBA范围可以被划分为例如第一LBA范围和一些其他LBA范围,例如,所述一些其他LBA范围在方法300之后可以不存储有效数据。在这样的实施例中,LBA范围的划分可以基于第一经压缩的数据的大小——例如,使得第一LBA范围至少具有最小数目的区段以存储第一经压缩的数据。
方法300还可以包括,在340处,更新参考信息以指示第一LBA范围被分配给第一经压缩的数据。340处的更新可以包括更新多个LBA范围,所述多个LBA范围被指定为包括标识第一LBA范围的信息。替代地或此外,更新可以包括生成或更新表示第一LBA范围的使用的新近性的值。
在实施例中,方法300包括,在350处,用信号通知第一经压缩的数据要被写入第一LBA范围。例如,350处的用信号通知可以包括高速缓存控制器向高速缓存存储器或者直接或间接地操作高速缓存存储器的其他设备发出写入命令、提交命令和/或其他消息。这样的消息可以包含第一LBA范围的标识符以及在一些实施例中包含标签,所述标签被识别为参考第一数据(和第一经压缩的数据)的索引或其他值。如本文所讨论的,耦合到高速缓存控制器的压缩引擎或其他部件可以在第一经压缩的数据的大小已经被传送到高速缓存控制器之后临时存储第一经压缩的数据,并且至少直至高速缓存控制器引擎已经向部件标识部件要向其写入第一经压缩的数据的特定高速缓存LBA范围为止。替代地,第一经压缩的数据可以被临时存储在缓冲器中,其中,在基于第一经压缩的数据的大小而确定高速缓存LBA范围之后,高速缓存控制器从缓冲器读取第一经压缩的数据并且将其写入高速缓存LBA范围。
方法300可以包括不同地在图3中示出的那些操作之前和/或之后的其他操作(未示出),所述其他操作支持其他数据的高速缓存。通过说明而非限制的方式,可以针对除了第一数据之外的第二数据重复操作310至350。这样的第二数据的压缩可能导致第二经压缩的数据,第二经压缩的数据例如具有与第一经压缩的数据的大小不同的大小。高速缓存控制器可以(例如,从压缩引擎)接收标识第二经压缩的数据的大小的信息,并且作为响应,可以标识高速缓存存储器的第二LBA范围。可以基于第二经压缩的数据的大小和第二LBA范围的大小(例如,其中第一LBA范围和第二LBA范围具有不同大小)来标识第二LBA范围。基于第二LBA范围的标识,方法300还可以更新参考信息以指示第二LBA范围被分配给第二经压缩的数据。第二经压缩的数据可以被写入第二LBA范围——例如,其中第一LBA范围存储第一经压缩的数据,而第二LBA范围存储第二经压缩的数据。
图2B、2D和2E图示了根据实施例的参考信息的一些示例,所述参考信息可被访问以确定经压缩的数据的高速缓存和/或其他访问。这样的参考信息可以被包括在高速缓存控制器(诸如高速缓存控制器模块101)中或以其他方式对高速缓存控制器可访问,以用于在确定将经压缩的数据高速缓存到不同大小的相应LBA范围中参考。这种参考信息的特定结构和内容仅仅说明根据一个实施例的场景,并且可以不限于其他实施例。
如图2B中所示,参考信息可以包括LBA映射210,其定义或以其他方式指定外围存储(在该示例中为HDD)的LBA每一个到用于外围存储的高速缓存的相应LBA范围的对应性。在LBA映射210中,高速缓存LBA范围均由LBA范围(在列“高速缓存LBA”中)的相应第一LBA和存储(和/或在一些实施例中可用于存储)经压缩的数据的LBA范围的区段的总数目(在列“压缩大小”中)指示。在由图2B-2E所表示的说明性情景中,未经压缩的高速缓存行的大小为4KB(8个LBA,其中每个LBA为512字节)。
图2C图示了由LBA映射210中示出的说明性参考信息描述的高速缓存存储器220的要素。说明性高速缓存存储器220包括一百个LBA,其中在LBA映射210中指定的高速缓存存储器220的LBA范围同时存储相应的经压缩的高速缓存行数据DLx,每一个对应于在LBA映射210中指定的相应HDD LBA范围Lx。当高速缓存控制器操作为从高速缓存存储器220的LBA范围中不同地逐出经压缩的数据、读取高速缓存存储器220的LBA范围的经压缩的数据和/或向高速缓存存储器220的LBA范围写入经压缩的数据时,LBA映射210和/或其他这样的参考信息可以被更新以反映这样的访问。这可以包括更新LBA映射210以标识更多或更少的LBA范围、对高速缓存LBA范围的大小的改变和/或高速缓存LBA范围到HDD范围的对应性的改变。
参考信息可以此外或替代地针对一个或多个LBA范围中的每一个指示LBA范围的使用的相应新近性。这样的新近性信息的一个示例由图2D的说明性最近最少使用(LRU)列表230表示。LRU列表230可以根据其相应的大小并且在一些实施例中进一步根据在相同大小的槽之间的使用的相对新近性来布置槽(LBA范围)的列表。在实施例中,高速缓存控制器可以标识要被高速缓存的经压缩的数据的大小,并且基于该大小,访问对应于该大小的LRU列表230中的列表。从所选择的列表中,可以选择优选的槽作为用于对经压缩的数据进行高速缓存的槽。使用的新近性可以指代自从给定槽已经被写入、从其读取、更新和/或以其他方式被访问以来的时间的持续时间。
在实施例中,参考信息可以此外或替代地指定可以空闲(free)以存储经压缩的数据的一个或多个LBA范围。这样的参考信息的一个示例由图2E的说明性的空闲槽列表240表示。空闲槽列表240可以根据其相应的大小来布置空闲槽(例如当前没有存储有效数据)的列表。在实施例中,高速缓存控制器可以标识要被高速缓存的经压缩的数据的大小,并且基于该大小,将空闲槽列表240中列出的槽确定为对应于该大小。从该大小的空闲槽中,可以选择一槽作为用于对经压缩的数据进行高速缓存的槽。
在逐出SSD(或用作高速缓存的其他设备)上的干净(clean)高速缓存行时,在实施例中,高速缓存行可以被简单地标记为经修剪的(trimmed),并且LBA映射210和LRU列表230被更新以移除对逐出的高速缓存行的参考。经修剪的空间可以被添加到空闲槽列表240。在逐出脏高速缓存行时,可以从高速缓存(如在读取命中时)读取经压缩的数据、写入HDD(或其他外围存储),并且然后使用干净逐出过程。在读取和写入未命中时,高速缓存控制器可以(例如至少部分地基于常规的高速缓存决定准则)决定是否将数据插入高速缓存中。如果它选择插入数据,则可以使用本文讨论的插入过程。在读取命中时,可以在LBA映射210中查找对应的高速缓存LBA范围连同经压缩的大小,并且可以向针对数据的高速缓存发出对应读取请求。可以相应地更新LRU列表230中的对应一个。在写入命中时,高速缓存可能需要更新高速缓存中的数据。因为新数据可能与旧数据不同地压缩,所以高速缓存可能并不总是能够简单地在原位(in place)更新数据。因此,高速缓存可以被操作成压缩新数据并确定经压缩的大小,例如,如本文所讨论的。如果新的经压缩的大小和旧的经压缩的大小需要相同最小数目的区段(使用LBA映射210中的查找确定的),则可以在原位更新数据。否则,高速缓存必须使用针对旧数据的逐出过程,之后是基于新的经压缩的数据大小的新的插入过程。
现在参考图4,图4是与本公开一致的压缩数据的一个示例性方法400一致的数据压缩模块的示例性操作的流程图。例如,方法400可以用具有高速缓存设备102的一些或全部特征的逻辑来执行。这样的逻辑可以与执行方法300的高速缓存控制器一起操作。
如所示,方法400可以包括,在410处,压缩第一数据以产生第一经压缩的数据,第一数据由数据压缩模块从高速缓存控制器接收。在实施例中,方法400包括,在420处,向高速缓存控制器发送指示第一经压缩的数据的大小的信息。在420处发送的信息可以包括指定第一经压缩的数据的大小的值和/或基于在410处执行的压缩而确定的压缩因子。在实施例中,高速缓存控制器基于第一经压缩的数据的大小和第一LBA范围的大小来标识高速缓存存储器的第一LBA范围。例如,第一LBA范围可以是在330处标识的第一LBA范围。方法400还可以包括,在430处,基于高速缓存控制器接收到指示第一经压缩的数据的大小的信息来将第一经压缩的数据写入第一LBA范围。例如,高速缓存控制器可以向执行方法400的设备标识第一LBA作为用于写入第一经压缩的数据的目的地。
方法400还可以包括,在440处,压缩第二数据以产生第二经压缩的数据,第二数据由数据压缩模块从高速缓存控制器接收。在实施例中,方法400包括,在450处,向高速缓存控制器发送指示第二经压缩的数据的大小的信息。在450处发送的信息可以包括指定第二经压缩的数据的大小的值和/或基于在440处执行的压缩而确定的压缩因子。在实施例中,高速缓存控制器基于第二经压缩的数据的大小和第二LBA范围的大小来标识高速缓存存储器的第二LBA范围。方法400还可以包括,在460处,基于高速缓存控制器接收到指示第二经压缩的数据的大小的信息而将第二经压缩的数据写入第二LBA范围。例如,高速缓存控制器可以向执行方法400的设备标识第二LBA作为用于写入第一经压缩的数据的目的地。在实施例中,第一LBA存储第一经压缩的数据,而第二LBA存储该第二经压缩的数据——例如,其中第一LBA和第二LBA具有不同的相应大小,并且第一经压缩的数据和第二经压缩的数据具有不同的相应大小。
在一个实现中,一种设备包括高速缓存控制器模块,所述高速缓存控制器模块包括电路,所述电路被配置为向压缩引擎传输包括第一数据的第一压缩命令,其中,响应于第一压缩命令,所述压缩引擎压缩第一数据以产生第一经压缩的数据;确定第一经压缩的数据的大小;标识高速缓存设备的存储器的第一逻辑块地址(LBA)范围,其中,基于第一经压缩的数据的大小和指定所述存储器的多个LBA范围的参考信息来标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围。基于第一LBA范围的标识,所述高速缓存控制器模块还要更新所述参考信息以指示第一LBA范围被分配给第一经压缩的数据,并且用信号通知第一经压缩的数据要被写入第一LBA范围。
在实施例中,所述高速缓存控制器还要确定除了基于第一压缩命令而生成的任何经压缩的数据之外的第二经压缩的数据的大小,其中,第二经压缩的数据的大小不同于第一经压缩的数据的大小;以及标识高速缓存设备的存储器的第二LBA范围,其中,基于第二经压缩的数据的大小和所述参考信息来标识第二LBA范围。基于第二LBA范围的标识,所述高速缓存控制器模块要更新所述参考信息以指示第二LBA范围被分配给第二经压缩的数据,并且用信号通知第二经压缩的数据要被写入第二LBA范围,其中,第一LBA范围存储第一经压缩的数据,而第二LBA范围存储第二经压缩的数据。
在另一实施例中,所述高速缓存控制器模块还被配置为将第一数据与第一标签相关联并且在第一压缩命令中传输第一标签。在另一实施例中,所述高速缓存控制器模块要用信号通知第一经压缩的数据要被写入第一LBA范围包括所述高速缓存控制器模块要向所述高速缓存设备发出包含所述标签和第一LBA范围的写入命令。在另一实施例中,所述高速缓存控制器模块要标识第一LBA范围包括所述高速缓存控制器模块要标识要从所述存储器逐出的第二经压缩的数据。在另一实施例中,除了所述高速缓存设备之外的存储设备存储第一数据的版本,而第一LBA范围存储第一经压缩的数据,并且其中,针对所述多个LBA范围中的每一个,其中所述参考信息指定所述LBA范围的大小以及如对应于所述LBA范围的所述存储设备的不同的相应逻辑基址。
在另一实施例中,所述参考信息标识除了当前存储有效数据的所述存储器的任何LBA范围之外的一个或多个LBA范围,并且其中,所述参考信息还针对所述一个或多个LBA范围中的每一个标识所述LBA范围的相应大小。在另一实施例中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,所述高速缓存控制器模块要基于第一LBA范围的使用的新近性来标识第一LBA范围。在另一实施例中,所述高速缓存控制器模块标识第一LBA范围包括:所述高速缓存控制器模块基于所述多个LBA范围的子集的LBA范围每一个具有等于足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及所述高速缓存控制器模块仅从所述子集之中选择第一LBA范围。在另一实施例中,所述高速缓存控制器模块要基于第一LBA范围是所述子集的最近最少使用的LBA范围而仅从所述子集之中选择第一LBA范围。在另一实施例中,所述高速缓存控制器模块要标识第一LBA范围包括:所述高速缓存控制器模块要基于所述多个LBA范围的子集的LBA范围每一个具有最接近足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及所述高速缓存控制器模块要仅从所述子集之中选择第一LBA范围。
在另一实现中,一种在高速缓存控制器处的方法包括:向压缩引擎传输包括第一数据的第一压缩命令,其中,响应于第一压缩命令,所述压缩引擎压缩第一数据以产生第一经压缩的数据;确定第一经压缩的数据的大小;标识高速缓存设备的存储器的第一逻辑块地址(LBA)范围,其中,基于第一经压缩的数据的大小和指定所述存储器的多个LBA范围的参考信息来标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围;以及基于第一LBA范围的标识,更新所述参考信息以指示第一LBA范围被分配给第一经压缩的数据;以及用信号通知第一经压缩的数据要被写入第一LBA范围。
在实施例中,所述方法还包括确定除了基于第一压缩命令而生成的任何经压缩的数据之外的第二经压缩的数据的大小,其中,第二经压缩的数据的大小不同于第一经压缩的数据的大小;标识高速缓存设备的存储器的第二LBA范围,其中,基于第二经压缩的数据的大小和所述参考信息来标识第二LBA范围;以及基于第二LBA范围的标识,更新所述参考信息以指示第二LBA范围被分配给第二经压缩的数据;以及用信号通知第二经压缩的数据要被写入第二LBA范围;其中,第一LBA范围存储第一经压缩的数据,而第二LBA范围存储第二经压缩的数据。
在另一实施例中,所述方法还包括将第一数据与第一标签相关联,并且在第一压缩命令中包括第一标签。在另一实施例中,用信号通知第一经压缩的数据要被写入第一LBA范围包括发出包含所述标签和第一LBA范围的写入命令。在另一实施例中,标识第一LBA范围包括标识要从所述存储器逐出的第二经压缩的数据。在另一实施例中,除了所述高速缓存设备之外的存储设备存储第一数据的版本,而第一LBA范围存储第一经压缩的数据,并且其中,针对所述多个LBA范围中的每一个,并且所述参考信息指定所述LBA范围的大小以及如对应于所述LBA范围的所述存储设备的不同的相应逻辑基址。
在另一实施例中,所述参考信息标识除了当前存储有效数据的所述存储器的任何LBA范围之外的一个或多个LBA范围,其中,所述参考信息还针对所述一个或多个LBA范围中的每一个标识所述LBA范围的相应大小。在另一实施例中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,标识第一LBA范围是基于第一LBA范围的使用的新近性的。在另一实施例中,标识第一LBA范围包括:基于所述多个LBA范围的子集的LBA范围每一个具有等于足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及仅从所述子集之中选择第一LBA范围。在另一实施例中,基于第一LBA范围是所述子集的最近最少使用的LBA范围而仅从所述子集之中选择第一LBA范围。在另一实施例中,标识第一LBA范围包括:基于所述多个LBA范围的子集的LBA范围每一个具有最接近足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及仅从所述子集之中选择第一LBA范围。
在另一实现中,一种其上存储有指令的计算机可读存储介质,所述指令在由一个或多个处理单元执行时,使高速缓存控制器实行方法,所述方法包括:向压缩引擎传输包括第一数据的第一压缩命令,其中,响应于第一压缩命令,所述压缩引擎压缩第一数据以产生第一经压缩的数据;确定第一经压缩的数据的大小;以及标识高速缓存设备的存储器的第一逻辑块地址(LBA)范围,其中,基于第一经压缩的数据的大小和指定所述存储器的多个LBA范围的参考信息而标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围。所述方法还包括:基于第一LBA范围的标识,更新所述参考信息以指示第一LBA范围被分配给第一经压缩的数据;以及用信号通知第一经压缩的数据要被写入第一LBA范围。
在实施例中,所述方法还包括确定除了基于第一压缩命令而生成的任何经压缩的数据之外的第二经压缩的数据的大小,其中,第二经压缩的数据的大小不同于第一经压缩的数据的大小;以及标识高速缓存设备的存储器的第二LBA范围,其中,基于第二经压缩的数据的大小和所述参考信息来标识第二LBA范围。所述方法还包括基于第二LBA范围的标识,更新所述参考信息以指示第二LBA范围被分配给第二经压缩的数据;以及用信号通知第二经压缩的数据要被写入第二LBA范围;其中,第一LBA范围存储第一经压缩的数据,而第二LBA范围存储第二经压缩的数据。
在另一实施例中,所述方法还包括将第一数据与第一标签相关联,并且在第一压缩命令中包括第一标签。在另一实施例中,用信号通知第一经压缩的数据要被写入第一LBA范围包括发出包含所述标签和第一LBA范围的写入命令。在另一实施例中,标识第一LBA范围包括标识要从所述存储器逐出的第二经压缩的数据。在另一实施例中,除了所述高速缓存设备之外的存储设备存储第一数据的版本,而第一LBA范围存储第一经压缩的数据,并且其中,针对所述多个LBA范围中的每一个,并且所述参考信息指定所述LBA范围的大小以及如对应于所述LBA范围的所述存储设备的不同的相应逻辑基址。
在另一实施例中,所述参考信息标识除了当前存储有效数据的所述存储器的任何LBA范围之外的一个或多个LBA范围,其中,所述参考信息还针对所述一个或多个LBA范围中的每一个标识所述LBA范围的相应大小。在另一实施例中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,标识第一LBA范围是基于第一LBA范围的使用的新近性的。在另一实施例中,标识第一LBA范围包括:基于所述多个LBA范围的子集的LBA范围每一个具有等于足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及仅从所述子集之中选择第一LBA范围。在另一实施例中,基于第一LBA范围是所述子集的最近最少使用的LBA范围而仅从所述子集之中选择第一LBA范围。在另一实施例中,标识第一LBA范围包括:基于所述多个LBA范围的子集的LBA范围每一个具有最接近足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及仅从所述子集之中选择第一LBA范围。
在另一实现中,一种系统包括高速缓存设备,所述高速缓存设备包括存储器和压缩引擎;耦合到高速缓存设备的高速缓存控制器,所述高速缓存控制器包括电路,所述电路被配置为向压缩引擎传输包括第一数据的第一压缩命令,其中,响应于第一压缩命令,所述压缩引擎压缩第一数据以产生第一经压缩的数据;确定第一经压缩的数据的大小;以及标识所述高速缓存设备的存储器的第一逻辑块地址(LBA)范围,其中,基于第一经压缩的数据的大小和指定所述存储器的多个LBA范围的参考信息来标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围。基于第一LBA范围的标识,所述高速缓存控制器还要更新所述参考信息以指示第一LBA范围被分配给第一经压缩的数据;以及用信号通知第一经压缩的数据要被写入第一LBA范围。
在实施例中,所述高速缓存控制器还要确定除了基于第一压缩命令而生成的任何经压缩的数据之外的第二经压缩的数据的大小,其中,第二经压缩的数据的大小不同于第一经压缩的数据的大小;标识高速缓存设备的存储器的第二LBA范围,其中,基于第二经压缩的数据的大小和所述参考信息来标识第二LBA范围;以及基于第二LBA范围的标识,更新所述参考信息以指示第二LBA范围被分配给第二经压缩的数据;以及用信号通知第二经压缩的数据要被写入第二LBA范围;其中,第一LBA范围存储第一经压缩的数据,而第二LBA范围存储第二经压缩的数据。
在另一实施例中,所述高速缓存控制器还被配置为将第一数据与第一标签相关联并且在第一压缩命令中传输第一标签。在另一实施例中,所述高速缓存控制器要用信号通知第一经压缩的数据要被写入第一LBA范围包括所述高速缓存控制器要向所述高速缓存设备发出包含所述标签和第一LBA范围的写入命令。在另一实施例中,所述高速缓存控制器要标识第一LBA范围包括所述高速缓存控制器要标识要从所述存储器逐出的第二经压缩的数据。在另一实施例中,除了所述高速缓存设备之外的存储设备存储第一数据的版本,而第一LBA范围存储第一经压缩的数据,其中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的大小以及如对应于所述LBA范围的所述存储设备的不同的相应逻辑基址。在另一实施例中,所述参考信息标识除了当前存储有效数据的所述存储器的任何LBA范围之外的一个或多个LBA范围,并且其中,所述参考信息还针对所述一个或多个LBA范围中的每一个标识所述LBA范围的相应大小。
在另一实施例中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,所述高速缓存控制器要基于第一LBA范围的使用的新近性来标识第一LBA范围。在另一实施例中,所述高速缓存控制器要标识第一LBA范围包括:所述高速缓存控制器要基于所述多个LBA范围的子集的LBA范围每一个具有等于足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及所述高速缓存控制器要仅从所述子集之中选择第一LBA范围。在另一实施例中,所述高速缓存控制器要基于第一LBA范围是所述子集的最近最少使用的LBA范围而仅从所述子集之中选择第一LBA范围。在另一实施例中,所述高速缓存控制器要标识第一LBA范围包括:所述高速缓存控制器要基于所述多个LBA范围的子集的LBA范围每一个具有最接近足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及所述高速缓存控制器要仅从所述子集之中选择第一LBA范围。
在另一实现中,一种高速缓存存储器设备包括数据压缩模块,所述数据压缩模块包括电路,所述电路被配置为压缩第一数据以产生第一经压缩的数据,第一数据是由数据压缩模块从高速缓存控制器接收的,向所述高速缓存控制器发送指示第一经压缩的数据的大小的信息,其中所述高速缓存控制器基于第一经压缩的数据的大小和第一LBA范围的大小来标识高速缓存设备的存储器的第一逻辑块地址(LBA)范围,基于所述高速缓存控制器接收到指示第一经压缩的数据的大小的信息而将第一经压缩的数据写入第一LBA范围,以及压缩第二数据以产生第二经压缩的数据,第二数据是从所述高速缓存控制器接收的。所述数据压缩模块还要向所述高速缓存控制器发送指示第二经压缩的数据的大小的信息,其中所述高速缓存控制器基于第二经压缩的数据的大小和第二LBA范围的大小来标识高速缓存设备的存储器的第二LBA范围,其中第二LBA范围的大小不同于第一LBA范围的大小,并且基于所述高速缓存控制器接收到指示第二经压缩的数据的大小的信息而将第二经压缩的数据写入第二LBA范围。
在实施例中,所述高速缓存控制器基于指定所述存储器的多个LBA范围的参考信息来标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围。在另一实施例中,除了所述高速缓存设备之外的存储设备存储第一数据的版本,而第一LBA范围存储第一经压缩的数据,其中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的大小以及如对应于所述LBA范围的所述存储设备的不同的相应逻辑基址。在实施例中,所述参考信息标识除了当前存储有效数据的所述存储器的任何LBA范围之外的一个或多个LBA范围,并且其中,所述参考信息还针对所述一个或多个LBA范围中的每一个标识所述LBA范围的相应大小。在实施例中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,所述高速缓存控制器模块要基于第一LBA范围的使用的新近性来标识第一LBA范围。
在另一实现中,一种在高速缓存存储器设备处的方法包括:压缩第一数据以产生第一经压缩的数据,第一数据是由数据压缩模块从高速缓存控制器接收的,向所述高速缓存控制器发送指示第一经压缩的数据的大小的信息,其中所述高速缓存控制器基于第一经压缩的数据的大小和第一LBA范围的大小来标识高速缓存设备的存储器的第一逻辑块地址(LBA)范围,基于所述高速缓存控制器接收到指示第一经压缩的数据的大小的信息而将第一经压缩的数据写入第一LBA范围。所述方法还包括压缩第二数据以产生第二经压缩的数据,第二数据是从所述高速缓存控制器接收的,向所述高速缓存控制器发送指示第二经压缩的数据的大小的信息,其中所述高速缓存控制器基于第二经压缩的数据的大小和第二LBA范围的大小来标识高速缓存设备的存储器的第二LBA范围,其中第二LBA范围的大小不同于第一LBA范围的大小,并且基于所述高速缓存控制器接收到指示第二经压缩的数据的大小的信息而将第二经压缩的数据写入第二LBA范围。
在实施例中,所述高速缓存控制器基于指定所述存储器的多个LBA范围的参考信息来标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围。在另一实施例中,除了所述高速缓存设备之外的存储设备存储第一数据的版本,而第一LBA范围存储第一经压缩的数据,并且其中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的大小以及如对应于所述LBA范围的所述存储设备的不同的相应逻辑基址。在另一实施例中,所述参考信息标识除了当前存储有效数据的所述存储器的任何LBA范围之外的一个或多个LBA范围,并且其中,所述参考信息还针对所述一个或多个LBA范围中的每一个标识所述LBA范围的相应大小。在另一实施例中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,所述高速缓存控制器模块要基于第一LBA范围的使用的新近性来标识第一LBA范围。
Claims (29)
1.一种用于高速缓存数据的设备,所述设备包括:
高速缓存控制器模块,其包括电路,所述电路被配置为:
向压缩引擎传输包括第一数据的第一压缩命令,其中,响应于第一压缩命令,所述压缩引擎压缩第一数据以产生第一经压缩的数据;
确定第一经压缩的数据的大小;
标识高速缓存设备的存储器的第一逻辑块地址LBA范围,其中,基于第一经压缩的数据的大小和包括指定所述存储器的多个LBA范围的多个列表的参考信息来标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围,其中所述列表的每个列表对应于不同的槽大小、标识具有相同槽大小的一个或多个LBA范围、并根据该相同槽大小的LBA范围之间使用的相对新近性而被布置;以及
基于第一LBA范围的标识,以:
更新所述参考信息以指示第一LBA范围被分配给第一经压缩的数据;以及
用信号通知第一经压缩的数据要被写入第一LBA范围。
2.根据权利要求1所述的设备,所述高速缓存控制器模块还要:
确定除了基于第一压缩命令而生成的任何经压缩的数据之外的第二经压缩的数据的大小,其中,第二经压缩的数据的大小不同于第一经压缩的数据的大小;
标识高速缓存设备的存储器的第二LBA范围,其中,基于第二经压缩的数据的大小和所述参考信息来标识第二LBA范围;以及
基于第二LBA范围的标识,以:
更新所述参考信息以指示第二LBA范围被分配给第二经压缩的数据;以及
用信号通知第二经压缩的数据要被写入第二LBA范围;
其中,第一LBA范围存储第一经压缩的数据,而第二LBA范围存储第二经压缩的数据。
3.根据权利要求1所述的设备,所述高速缓存控制器模块还被配置为将第一数据与第一标签相关联并且在第一压缩命令中传输第一标签。
4.根据权利要求3所述的设备,其中,所述高速缓存控制器模块要用信号通知第一经压缩的数据要被写入第一LBA范围包括所述高速缓存控制器模块要向所述高速缓存设备发出包含所述第一标签和第一LBA范围的写入命令。
5.根据权利要求1所述的设备,其中,所述高速缓存控制器模块要标识第一LBA范围包括所述高速缓存控制器模块要标识要从所述存储器逐出的第二经压缩的数据。
6.根据权利要求1所述的设备,其中,除了所述高速缓存设备之外的存储设备存储第一数据的版本,而第一LBA范围存储第一经压缩的数据,并且其中,针对所述多个LBA范围中的每一个,所述参考信息指定:
所述LBA范围的大小;以及
如对应于所述LBA范围的所述存储设备的不同的相应逻辑基址。
7.根据权利要求1所述的设备,其中,所述参考信息标识除了当前存储有效数据的所述存储器的任何LBA范围之外的一个或多个LBA范围,并且其中,所述参考信息还针对所述一个或多个LBA范围中的每一个标识所述LBA范围的相应大小。
8.根据权利要求1所述的设备,其中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,所述高速缓存控制器模块要基于第一LBA范围的使用的新近性来标识第一LBA范围。
9.根据权利要求1所述的设备,其中,所述高速缓存控制器模块要标识第一LBA范围包括:
所述高速缓存控制器模块要基于所述多个LBA范围的子集的LBA范围每一个具有等于足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及
所述高速缓存控制器模块要仅从所述子集之中选择第一LBA范围。
10.根据权利要求9所述的设备,其中,所述高速缓存控制器模块要基于第一LBA范围是所述子集的最近最少使用的LBA范围而仅从所述子集之中选择第一LBA范围。
11.根据权利要求1所述的设备,其中,所述高速缓存控制器模块要标识第一LBA范围包括:
所述高速缓存控制器模块要基于所述多个LBA范围的子集的LBA范围每一个具有最接近足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及
所述高速缓存控制器模块要仅从所述子集之中选择第一LBA范围。
12.一种在高速缓存控制器处用于高速缓存的方法,所述方法包括:
向压缩引擎传输包括第一数据的第一压缩命令,其中,响应于第一压缩命令,所述压缩引擎压缩第一数据以产生第一经压缩的数据;
确定第一经压缩的数据的大小;
标识高速缓存设备的存储器的第一逻辑块地址LBA范围,其中,基于第一经压缩的数据的大小和包括指定所述存储器的多个LBA范围的多个列表的参考信息来标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围,其中所述列表的每个列表对应于不同的槽大小、标识具有相同槽大小的一个或多个LBA范围、并根据该相同槽大小的LBA范围之间使用的相对新近性而被布置;以及
基于第一LBA范围的标识:
更新所述参考信息以指示第一LBA范围被分配给第一经压缩的数据;以及
用信号通知第一经压缩的数据要被写入第一LBA范围。
13.根据权利要求12所述的方法,还包括:
确定除了基于第一压缩命令而生成的任何经压缩的数据之外的第二经压缩的数据的大小,其中,第二经压缩的数据的大小不同于第一经压缩的数据的大小;
标识高速缓存设备的存储器的第二LBA范围,其中,基于第二经压缩的数据的大小和所述参考信息来标识第二LBA范围;以及
基于第二LBA范围的标识:
更新所述参考信息以指示第二LBA范围被分配给第二经压缩的数据;以及
用信号通知第二经压缩的数据要被写入第二LBA范围;
其中,第一LBA范围存储第一经压缩的数据,而第二LBA范围存储第二经压缩的数据。
14.根据权利要求12所述的方法,其中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,标识第一LBA范围是基于第一LBA范围的使用的新近性的。
15.根据权利要求12所述的方法,其中,标识第一LBA范围包括:
基于所述多个LBA范围的子集的LBA范围每一个具有最接近足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及
仅从所述子集之中选择第一LBA范围。
16.一种其上存储有指令的计算机可读存储介质,所述指令在由一个或多个处理单元执行时,使高速缓存控制器实行方法,所述方法包括:
向压缩引擎传输包括第一数据的第一压缩命令,其中,响应于第一压缩命令,所述压缩引擎压缩第一数据以产生第一经压缩的数据;
确定第一经压缩的数据的大小;
标识高速缓存设备的存储器的第一逻辑块地址LBA范围,其中,基于第一经压缩的数据的大小和包括指定所述存储器的多个LBA范围的多个列表的参考信息来标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围,其中所述列表的每个列表对应于不同的槽大小、标识具有相同槽大小的一个或多个LBA范围、并根据该相同槽大小的LBA范围之间使用的相对新近性而被布置;以及
基于第一LBA范围的标识:
更新所述参考信息以指示第一LBA范围被分配给第一经压缩的数据;以及
用信号通知第一经压缩的数据要被写入第一LBA范围。
17.根据权利要求16所述的计算机可读存储介质,所述方法还包括:
确定除了基于第一压缩命令而生成的任何经压缩的数据之外的第二经压缩的数据的大小,其中,第二经压缩的数据的大小不同于第一经压缩的数据的大小;
标识高速缓存设备的存储器的第二LBA范围,其中,基于第二经压缩的数据的大小和所述参考信息来标识第二LBA范围;以及
基于第二LBA范围的标识:
更新所述参考信息以指示第二LBA范围被分配给第二经压缩的数据;以及
用信号通知第二经压缩的数据要被写入第二LBA范围;
其中,第一LBA范围存储第一经压缩的数据,而第二LBA范围存储第二经压缩的数据。
18.根据权利要求16所述的计算机可读存储介质,其中,所述参考信息标识除了当前存储有效数据的所述存储器的任何LBA范围之外的一个或多个LBA范围,并且其中,所述参考信息还针对所述一个或多个LBA范围中的每一个标识所述LBA范围的相应大小。
19.根据权利要求16所述的计算机可读存储介质,其中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,标识第一LBA范围是基于第一LBA范围的使用的新近性的。
20.根据权利要求16所述的计算机可读存储介质,其中,标识第一LBA范围包括:
基于所述多个LBA范围的子集的LBA范围每一个具有等于足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及
仅从所述子集之中选择第一LBA范围。
21.根据权利要求20所述的计算机可读存储介质,其中,仅从所述子集之中选择第一LBA范围是基于第一LBA范围是所述子集的最近最少使用的LBA范围的。
22.一种用于高速缓存数据的系统,所述系统包括:
高速缓存设备,其包括存储器和压缩引擎;
耦合到所述高速缓存设备的高速缓存控制器,所述高速缓存控制器包括电路,所述电路被配置为:
向压缩引擎传输包括第一数据的第一压缩命令,其中,响应于第一压缩命令,所述压缩引擎压缩第一数据以产生第一经压缩的数据;
确定第一经压缩的数据的大小;
标识所述高速缓存设备的存储器的第一逻辑块地址LBA范围,其中,基于第一经压缩的数据的大小和包括指定所述存储器的多个LBA范围的多个列表的参考信息来标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围,其中所述列表的每个列表对应于不同的槽大小、标识具有相同槽大小的一个或多个LBA范围、并根据该相同槽大小的LBA范围之间使用的相对新近性而被布置;以及
基于第一LBA范围的标识,以:
更新所述参考信息以指示第一LBA范围被分配给第一经压缩的数据;以及
用信号通知第一经压缩的数据要被写入第一LBA范围。
23.根据权利要求22所述的系统,所述高速缓存控制器还要:
确定除了基于第一压缩命令而生成的任何经压缩的数据之外的第二经压缩的数据的大小,其中,第二经压缩的数据的大小不同于第一经压缩的数据的大小;
标识高速缓存设备的存储器的第二LBA范围,其中,基于第二经压缩的数据的大小和所述参考信息来标识第二LBA范围;以及
基于第二LBA范围的标识,以:
更新所述参考信息以指示第二LBA范围被分配给第二经压缩的数据;以及
用信号通知第二经压缩的数据要被写入第二LBA范围;
其中,第一LBA范围存储第一经压缩的数据,而第二LBA范围存储第二经压缩的数据。
24.根据权利要求22所述的系统,其中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,所述高速缓存控制器要基于第一LBA范围的使用的新近性来标识第一LBA范围。
25.根据权利要求22所述的系统,其中,所述高速缓存控制器要标识第一LBA范围包括:
所述高速缓存控制器要基于所述多个LBA范围的子集的LBA范围每一个具有等于足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集;以及
所述高速缓存控制器要仅从所述子集之中选择第一LBA范围。
26.一种用于高速缓存的装置,所述装置包括:
用于向压缩引擎传输包括第一数据的第一压缩命令的部件,其中,响应于第一压缩命令,所述压缩引擎压缩第一数据以产生第一经压缩的数据;
用于确定第一经压缩的数据的大小的部件;
用于标识高速缓存设备的存储器的第一逻辑块地址LBA范围的部件,其中,基于第一经压缩的数据的大小和包括指定所述存储器的多个LBA范围的多个列表的参考信息来标识第一LBA范围,所述多个LBA范围包括不同相应大小的LBA范围,其中所述列表的每个列表对应于不同的槽大小、标识具有相同槽大小的一个或多个LBA范围、并根据该相同槽大小的LBA范围之间使用的相对新近性而被布置;以及
用于基于第一LBA范围的标识而进行以下的部件:
更新所述参考信息以指示第一LBA范围被分配给第一经压缩的数据;以及
用信号通知第一经压缩的数据要被写入第一LBA范围。
27.根据权利要求26所述的装置,还包括:
用于确定除了基于第一压缩命令而生成的任何经压缩的数据之外的第二经压缩的数据的大小的部件,其中,第二经压缩的数据的大小不同于第一经压缩的数据的大小;
用于标识高速缓存设备的存储器的第二LBA范围的部件,其中,基于第二经压缩的数据的大小和所述参考信息来标识第二LBA范围;以及
用于基于第二LBA范围的标识而进行以下的部件:
更新所述参考信息以指示第二LBA范围被分配给第二经压缩的数据;以及
用信号通知第二经压缩的数据要被写入第二LBA范围;
其中,第一LBA范围存储第一经压缩的数据,而第二LBA范围存储第二经压缩的数据。
28.根据权利要求26所述的装置,其中,针对所述多个LBA范围中的每一个,所述参考信息指定所述LBA范围的使用的新近性,其中,标识第一LBA范围是基于第一LBA范围的使用的新近性的。
29.根据权利要求26所述的装置,其中,用于标识第一LBA范围的部件包括:
用于基于所述多个LBA范围的子集的LBA范围每一个具有最接近足以存储第一经压缩的数据的区段的最小数目的所述LBA范围的区段的总数目而标识所述子集的部件;以及
用于仅从所述子集之中选择第一LBA范围的部件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/572689 | 2014-12-16 | ||
US14/572,689 US9652384B2 (en) | 2014-12-16 | 2014-12-16 | Apparatus, system and method for caching compressed data |
PCT/US2015/057815 WO2016099664A1 (en) | 2014-12-16 | 2015-10-28 | Apparatus, system and method for caching compressed data background |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107111551A CN107111551A (zh) | 2017-08-29 |
CN107111551B true CN107111551B (zh) | 2021-06-08 |
Family
ID=56111286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580062357.5A Active CN107111551B (zh) | 2014-12-16 | 2015-10-28 | 用于高速缓存经压缩的数据背景的装置、系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9652384B2 (zh) |
KR (2) | KR102584018B1 (zh) |
CN (1) | CN107111551B (zh) |
TW (1) | TWI596603B (zh) |
WO (1) | WO2016099664A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652384B2 (en) | 2014-12-16 | 2017-05-16 | Intel Corporation | Apparatus, system and method for caching compressed data |
US10095595B2 (en) | 2015-11-17 | 2018-10-09 | International Business Machines Corporation | Instant recovery in a multi-grained caching framework |
US9916249B2 (en) * | 2015-11-17 | 2018-03-13 | International Business Machines Corporation | Space allocation in a multi-grained writeback cache |
US9971692B2 (en) | 2015-11-17 | 2018-05-15 | International Business Machines Corporation | Supporting concurrent operations at fine granularity in a caching framework |
US9965390B2 (en) | 2015-11-17 | 2018-05-08 | International Business Machines Corporation | Reducing defragmentation in a multi-grained writeback cache |
US10713211B2 (en) | 2016-01-13 | 2020-07-14 | Red Hat, Inc. | Pre-registering memory regions for remote direct memory access in a distributed file system |
US10901937B2 (en) | 2016-01-13 | 2021-01-26 | Red Hat, Inc. | Exposing pre-registered memory regions for remote direct memory access in a distributed file system |
US20170271030A1 (en) * | 2016-03-18 | 2017-09-21 | Alibaba Group Holding Limited | Method and system for using downgraded flash die for cache applications |
US9996471B2 (en) * | 2016-06-28 | 2018-06-12 | Arm Limited | Cache with compressed data and tag |
US10459644B2 (en) * | 2016-10-28 | 2019-10-29 | Western Digital Techologies, Inc. | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
US10503652B2 (en) * | 2017-04-01 | 2019-12-10 | Intel Corporation | Sector cache for compression |
US10490238B2 (en) * | 2017-06-29 | 2019-11-26 | SK Hynix Inc. | Serializer and memory device including the same |
EP3665580B1 (en) * | 2017-08-08 | 2023-03-08 | Continental Automotive Technologies GmbH | Method of operating a cache |
US10558364B2 (en) | 2017-10-16 | 2020-02-11 | Alteryx, Inc. | Memory allocation in a data analytics system |
KR102157354B1 (ko) * | 2017-11-20 | 2020-09-17 | 삼성전자 주식회사 | 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법 |
US10447296B1 (en) | 2018-06-22 | 2019-10-15 | International Business Machines Coporation | Accelerated compression/decompression including predefined dictionary |
US10884940B2 (en) * | 2018-12-21 | 2021-01-05 | Advanced Micro Devices, Inc. | Method and apparatus for using compression to improve performance of low voltage caches |
US11048419B2 (en) * | 2019-01-30 | 2021-06-29 | EMC IP Holding Company LLC | Adaptively over-allocating storage space for compressed data |
US11086791B2 (en) * | 2019-08-29 | 2021-08-10 | Micron Technology, Inc. | Methods for supporting mismatched transaction granularities |
US20210224191A1 (en) * | 2020-01-22 | 2021-07-22 | Alibaba Group Holding Limited | Compression and decompression module in a cache controller for reducing off-chip data traffic |
US11616722B2 (en) * | 2020-10-22 | 2023-03-28 | EMC IP Holding Company LLC | Storage system with adaptive flow control using multiple feedback loops |
US11614880B2 (en) * | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
CN113391951B (zh) * | 2021-05-20 | 2021-12-24 | 广西飞创信息科技有限公司 | 一种基于以太网精简传输的多点集中远程备份容灾方法与系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103620564A (zh) * | 2011-05-10 | 2014-03-05 | 马维尔国际贸易有限公司 | 用于存储器设备的数据压缩和紧缩 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537575A (en) | 1994-06-30 | 1996-07-16 | Foley; Denis | System for handling cache memory victim data which transfers data from cache to the interface while CPU performs a cache lookup using cache status information |
US6002411A (en) * | 1994-11-16 | 1999-12-14 | Interactive Silicon, Inc. | Integrated video and memory controller with data processing and graphical processing capabilities |
US5721874A (en) * | 1995-06-16 | 1998-02-24 | International Business Machines Corporation | Configurable cache with variable, dynamically addressable line sizes |
US6879266B1 (en) | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
US6408364B1 (en) * | 2000-03-17 | 2002-06-18 | Advanced Micro Devices, Inc. | Apparatus and method for implementing a least recently used cache replacement algorithm |
US6823427B1 (en) * | 2001-05-16 | 2004-11-23 | Advanced Micro Devices, Inc. | Sectored least-recently-used cache replacement |
US6735673B2 (en) | 2002-01-10 | 2004-05-11 | Hewlett-Packard Development Company, L.P. | Apparatus and methods for cache line compression |
US6857047B2 (en) | 2002-06-10 | 2005-02-15 | Hewlett-Packard Development Company, L.P. | Memory compression for computer systems |
US7181578B1 (en) * | 2002-09-12 | 2007-02-20 | Copan Systems, Inc. | Method and apparatus for efficient scalable storage management |
US7136973B2 (en) * | 2004-02-04 | 2006-11-14 | Sandisk Corporation | Dual media storage device |
US20050198062A1 (en) * | 2004-03-05 | 2005-09-08 | Shapiro Richard B. | Method and apparatus for accelerating data access operations in a database system |
US7243191B2 (en) | 2004-08-31 | 2007-07-10 | Intel Corporation | Compressing data in a cache memory |
US7412564B2 (en) * | 2004-11-05 | 2008-08-12 | Wisconsin Alumni Research Foundation | Adaptive cache compression system |
US20070104212A1 (en) * | 2005-11-10 | 2007-05-10 | Michael Gutman | Cache-based compression of structured network traffic |
US7849241B2 (en) | 2006-03-23 | 2010-12-07 | International Business Machines Corporation | Memory compression method and apparatus for heterogeneous processor architectures in an information handling system |
US8489817B2 (en) * | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
JP4653830B2 (ja) | 2008-09-19 | 2011-03-16 | 株式会社東芝 | 命令キャッシュシステム |
US20100185816A1 (en) * | 2009-01-21 | 2010-07-22 | Sauber William F | Multiple Cache Line Size |
JP4621794B1 (ja) * | 2009-07-22 | 2011-01-26 | 株式会社東芝 | キャッシュメモリ制御方法およびキャッシュメモリを備えた情報記憶装置 |
US20110161560A1 (en) | 2009-12-31 | 2011-06-30 | Hutchison Neil D | Erase command caching to improve erase performance on flash memory |
US20120185638A1 (en) * | 2011-01-14 | 2012-07-19 | Daniel Schreiber | Method and system for cache endurance management |
WO2013095465A1 (en) | 2011-12-21 | 2013-06-27 | Intel Corporation | High-performance storage structures and systems featuring multiple non-volatile memories |
TWI459201B (zh) * | 2012-04-27 | 2014-11-01 | Toshiba Kk | Information processing device |
US9471500B2 (en) * | 2013-04-12 | 2016-10-18 | Nec Corporation | Bucketized multi-index low-memory data structures |
US9251096B2 (en) * | 2013-09-25 | 2016-02-02 | Intel Corporation | Data compression in processor caches |
KR101904421B1 (ko) * | 2013-09-27 | 2018-11-30 | 삼성전자주식회사 | 캐시 메모리를 제어하는 방법 및 장치. |
US9304937B2 (en) * | 2013-10-23 | 2016-04-05 | Netapp Inc. | Atomic write operations for storage devices |
US9734062B2 (en) * | 2013-12-13 | 2017-08-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and methods for caching a small size I/O to improve caching device endurance |
US9292449B2 (en) * | 2013-12-20 | 2016-03-22 | Intel Corporation | Cache memory data compression and decompression |
US9740621B2 (en) * | 2014-05-21 | 2017-08-22 | Qualcomm Incorporated | Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods |
KR102336528B1 (ko) * | 2014-07-07 | 2021-12-07 | 삼성전자 주식회사 | 캐시 메모리를 가지는 전자 장치 및 그의 운용 방법 |
US9858196B2 (en) * | 2014-08-19 | 2018-01-02 | Qualcomm Incorporated | Power aware padding |
US20160092361A1 (en) * | 2014-09-26 | 2016-03-31 | Intel Corporation | Caching technologies employing data compression |
US9652384B2 (en) | 2014-12-16 | 2017-05-16 | Intel Corporation | Apparatus, system and method for caching compressed data |
-
2014
- 2014-12-16 US US14/572,689 patent/US9652384B2/en active Active
-
2015
- 2015-10-28 KR KR1020237008572A patent/KR102584018B1/ko active IP Right Grant
- 2015-10-28 KR KR1020177012886A patent/KR102510384B1/ko active IP Right Grant
- 2015-10-28 WO PCT/US2015/057815 patent/WO2016099664A1/en active Application Filing
- 2015-10-28 CN CN201580062357.5A patent/CN107111551B/zh active Active
- 2015-11-03 TW TW104136212A patent/TWI596603B/zh active
-
2017
- 2017-04-14 US US15/488,324 patent/US9996466B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103620564A (zh) * | 2011-05-10 | 2014-03-05 | 马维尔国际贸易有限公司 | 用于存储器设备的数据压缩和紧缩 |
Also Published As
Publication number | Publication date |
---|---|
US9652384B2 (en) | 2017-05-16 |
CN107111551A (zh) | 2017-08-29 |
KR20230039769A (ko) | 2023-03-21 |
TW201626382A (zh) | 2016-07-16 |
US9996466B2 (en) | 2018-06-12 |
KR20170097609A (ko) | 2017-08-28 |
WO2016099664A1 (en) | 2016-06-23 |
TWI596603B (zh) | 2017-08-21 |
KR102584018B1 (ko) | 2023-09-27 |
KR102510384B1 (ko) | 2023-03-16 |
US20170286294A1 (en) | 2017-10-05 |
US20160170878A1 (en) | 2016-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107111551B (zh) | 用于高速缓存经压缩的数据背景的装置、系统和方法 | |
EP3436953B1 (en) | Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
TWI594121B (zh) | 使用資料壓縮的快取技術 | |
US9229876B2 (en) | Method and system for dynamic compression of address tables in a memory | |
US11263149B2 (en) | Cache management of logical-physical translation metadata | |
JP2021114038A (ja) | メモリシステムおよび制御方法 | |
US9507705B2 (en) | Write cache sorting | |
US20200264973A1 (en) | Method and apparatus for managing map data in memory system | |
JP2023514307A (ja) | 順次的にプログラムするメモリサブシステムにおける順次読み出し最適化 | |
US20230342294A1 (en) | Memory device and non-transitory computer readable recording medium | |
US10019198B2 (en) | Method and apparatus for processing sequential writes to portions of an addressable unit | |
US9524236B1 (en) | Systems and methods for performing memory management based on data access properties | |
US20220269611A1 (en) | Direct cache hit and transfer in a memory sub-system that programs sequentially | |
US8516194B2 (en) | Systems and methods for caching data with a nonvolatile memory cache | |
US11061598B2 (en) | Optimized handling of multiple copies in storage management | |
CN112805692A (zh) | 混合式双列直插式存储器模块中的高速缓存操作 | |
US20210089449A1 (en) | Managing data dependencies in a transfer pipeline of a hybrid dimm | |
CN114691534A (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 |