CN113227987A - 压缩数据以存储在高速缓存存储器层次结构中的高速缓存存储器中 - Google Patents
压缩数据以存储在高速缓存存储器层次结构中的高速缓存存储器中 Download PDFInfo
- Publication number
- CN113227987A CN113227987A CN201980086040.3A CN201980086040A CN113227987A CN 113227987 A CN113227987 A CN 113227987A CN 201980086040 A CN201980086040 A CN 201980086040A CN 113227987 A CN113227987 A CN 113227987A
- Authority
- CN
- China
- Prior art keywords
- compression
- data
- cache memory
- compressed
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 322
- 238000003860 storage Methods 0.000 title claims abstract description 87
- 238000007906 compression Methods 0.000 claims abstract description 388
- 230000006835 compression Effects 0.000 claims abstract description 388
- 230000006870 function Effects 0.000 claims abstract description 93
- 230000000694 effects Effects 0.000 claims abstract description 20
- 230000002441 reversible effect Effects 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims 1
- 230000006837 decompression Effects 0.000 description 41
- 230000004044 response Effects 0.000 description 22
- 230000007246 mechanism Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 230000001934 delay Effects 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000013144 data compression Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000005549 size reduction Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6047—Power optimization with respect to the encoder, decoder, storage or transmission
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
- H03M7/6082—Selection strategies
-
- 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
- G06F2212/1024—Latency reduction
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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
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
政府权利
本发明是在政府的支持下根据能源部授予的劳伦斯·利弗莫尔国家安全PathForward项目(基本合同号DE-AC52-07NA27344,分包合同号B620717)进行的。政府对本发明具有某些权利。
背景技术
相关技术
一些电子装置包括执行用于执行各种操作的程序代码的处理器。例如,电子装置可以包括执行用于软件应用、操作系统等的程序代码的一个或多个中央处理单元核心(CPU核心)或图形处理单元核心(GPU核心)。除了存储器(例如,“主”存储器)和大容量存储装置,这些电子装置中的许多电子装置还包括用于存储程序代码和/或数据的一个或多个高速缓存存储器。高速缓存存储器是快速访问存储器,其用于本地存储程序代码和/或数据的副本,以使得处理器能够快速检索以在执行程序代码或执行其他操作时使用。访问高速缓存存储器中的程序代码和/或数据的副本通常比访问存储器和大容量存储装置中的程序代码和/或数据至少快一个数量级。
高速缓存存储器一般只具有有限的容量来存储程序代码和/或数据的副本,并且容量通常比存储器或大容量存储装置要少得多。例如,一些电子装置包括高速缓存存储器层次结构,其中最高或第一级的高速缓存存储器(即“L1”高速缓存)具有32-64千字节(kB)的容量,中间或第二级的高速缓存存储器(即“L2”高速缓存)具有512-1024kB的容量,并且最低或第三级的高速缓存存储器(即“L3”高速缓存)具有2-4兆字节(MB)的容量。在此类电子装置中,存储器可能具有32-64千兆字节(GB)的容量,并且大容量存储装置可能具有4-8兆兆字节(TB)的容量。因为高速缓存存储器具有有限的存储容量,所以在操作期间,处理器定期请求存储足够的程序代码和/或数据的副本,超过用于同时存储副本的高速缓存存储器的容量。因此,可能迫使高速缓存存储器逐出或以其他方式丢弃程序代码和/或数据的现有存储副本,以释放用于存储程序代码和/或数据的传入副本的空间。例如,高速缓存存储器可以将数据的修改后的副本写回到存储器或较低级别的高速缓存存储器,和/或使未修改的数据副本无效,以为数据的传入副本腾出空间。
为了更好地利用高速缓存存储器的可用存储容量,设计者提出了许多技术来改进存储在高速缓存存储器中的程序代码和/或数据的排列。例如,一些设计者提出了压缩程序代码和/或数据,使得可以将程序代码和/或数据存储在高速缓存存储器中的较小空间中。对于该技术,在将程序代码和/或数据存储在高速缓存存储器中之前,将程序代码和/或数据压缩以减小数据的大小。当随后将压缩的程序代码和/或数据从高速缓存存储器提供给请求处理器时,对该程序代码和/或数据进行解压缩以将程序代码和/或数据恢复到未压缩状态。
尽管压缩导致存储在高速缓存存储器中的程序代码和/或数据的大小减小,但是压缩并不总是理想的解决方案。这归因于可能用于压缩程序代码和/或数据以存储在高速缓存存储器中的不同压缩类型的特性。例如,使用较重量级压缩(即具有相对更多、更慢和/或更复杂的压缩操作的压缩)可能导致压缩较大比例的程序代码和/或数据,但可能会花费较长时间来压缩和解压缩。因此,对于其中响应延迟是重要考虑因素的较高级别的高速缓存存储器,较不希望使用较重量级压缩。作为另一个示例,较轻量级压缩可以使用相对简单的压缩操作来快速压缩程序代码和/或数据,但是仅能够压缩包括有限的一组模式或值的程序代码和/或数据。虽然在不引起较大压缩延迟的情况下提供了程序代码和/或数据大小的至少少量的减小,但是较轻量级压缩可能无法压缩足够的数据来在较大的高速缓存存储器中释放显著的空间。考虑到与高速缓存存储器层次结构中的不同高速缓存存储器相关联的不同性能要求,设计者无法找到用于压缩所有高速缓存存储器的程序代码和/或数据的单个压缩。
附图说明
图1呈现了根据一些实施方案的示出电子装置的框图。
图2呈现了根据一些实施方案的示出当在高速缓存存储器层次结构中向上通过高速缓存存储器复制数据时对数据执行压缩和解压缩的框图。
图3呈现了根据一些实施方案的示出当在高速缓存存储器层次结构中向下通过高速缓存存储器复制数据时对数据执行压缩和解压缩的框图。
图4呈现了根据一些实施方案的示出用于压缩数据以存储在高速缓存存储器中的过程的流程图。
图5呈现了根据一些实施方案的示出用于压缩数据以存储在高速缓存存储器中的过程的流程图。
在整个附图和描述中,相同附图标记指代相同的附图元件。
具体实施方式
呈现以下描述以使本领域的任何技术人员能够制造和使用所描述的实施方案,并且在特定应用及其要求的上下文中提供以下描述。对所描述的实施方案的各种修改对于本领域技术人员来说将是明显的,并且可将本文中定义的一般原理应用于其他实施方案和应用。因此,所描述的实施方案不限于所示的实施方案,而是要被赋予与本文中公开的原理和特征一致的最宽范围。
术语
在以下描述中,使用各种术语来描述实施方案。以下是这些术语中的几个术语的简化且一般描述。注意,这些术语可具有重要的附加方面,为了清楚和简洁起见,本文中没有列举所述附加方面,并且因此所述描述并不旨在限制这些术语。
功能块:功能块是指一个或多个相互关联的电路元件(诸如集成电路元件、分立电路元件等)的组、集合和/或集。电路元件是“相互关联的”,因为电路元件共享至少一种性质。举例来说,相互关联的电路元件可能包括在特定的集成电路芯片或其一部分中、制造在特定的集成电路芯片或其一部分上或以其他方式耦合到特定的集成电路芯片或其一部分,可能涉及到给定功能(计算或处理功能、存储器功能等)的执行,可能由公共控制元件来控制等。功能块可以包括任意数量的电路元件,从单个电路元件(例如,单个集成电路逻辑门)到数百万或数十亿的电路元件(例如,集成电路存储器)。
数据:数据是指可以存储在高速缓存存储器或存储器(例如主存储器)中的信息或值。例如,数据可以是或包括将要用于诸如计算操作、控制操作、感测或监测操作、存储器访问操作、输入输出装置通信之类的操作或由所述操作产生的信息或值。作为另一个示例,数据可以是或包括程序代码指令或来自程序代码的值(例如,变量值,常量等),其从计算机可读存储介质、大容量存储装置、网络接口、存储器等获取或去往计算机可读存储介质、大容量存储装置、网络接口、存储器等。作为另一个示例,数据可以是或包括从功能块(诸如输入输出装置、传感器、人机接口装置等)获取或去往所述功能块的信息。
综述
在所描述的实施方案中,电子装置包括具有第一高速缓存存储器和第二高速缓存存储器的高速缓存存储器层次结构。第一高速缓存存储器在层次结构中比第二高速缓存存储器低,因此,与第二高速缓存存储器相比,可能访问速度更慢、容量更高和/或位于与访问高速缓存存储器层次结构中的数据的执行电路相距更远的距离处。例如,在一些实施方案中,第一高速缓存存储器是三级(“L3”)高速缓存存储器,并且第二高速缓存存储器是二级(“L2”)高速缓存存储器。在所描述的实施方案中,数据被压缩以存储在高速缓存存储器中,以便减小数据的大小,并因此更有效地使用高速缓存存储器的可用容量(回想“数据”是描述可以存储在高速缓存存储器中的任何值或信息的通用术语,如上所述)。因为高速缓存存储器和数据访问实体(例如,CPU核心、GPU核心等)对于与压缩和解压缩数据相关联的延迟具有不同的容忍度,所以所描述的实施方案对于要存储在高速缓存存储器中的数据使用压缩组合。选择用于压缩每个高速缓存存储器的数据的具体压缩,以提供减小该高速缓存存储器的数据大小的好处,同时还避免了会不希望地延迟对数据访问请求的响应的解压缩操作。
期望在层次结构中较高的第二高速缓存存储器以较少数量的控制时钟周期(例如,12-15个时钟周期)响应访问请求。因此,不希望将几个以上的延迟时钟周期添加到第二高速缓存存储器的响应时间。由于这个原因,在一些实施方案中,使用涉及较少、简单和/或快速的压缩操作的较轻量级压缩来压缩第二高速缓存存储器中的数据。因为在这些实施方案中,仅较轻量级压缩被用于第二高速缓存存储器中的数据,所以可以在相对短的时间内从第二高速缓存存储器中获取压缩数据、将其解压缩并返回给访问实体。期望在层次结构中较低的第一高速缓存存储器迅速响应访问请求,但是对第一高速缓存存储器的访问需要许多控制时钟周期(例如,30-40个时钟周期)。因此,将若干延迟时钟周期添加到第一高速缓存存储器的响应时间具有成比例地较小影响–并且访问实体可能会容忍与解压缩相关的附加延迟。由于这个原因,在一些实施方案中,使用与较轻量级压缩相比涉及更多、更复杂和/或更慢的压缩操作的较重量级压缩来压缩第一高速缓存存储器中的数据。当较重量级压缩用于第二高速缓存存储器中的数据时,与使用较轻量级压缩时相比,可以压缩数据中更多的模式和/或值,但是压缩和解压缩数据需要相对更长的时间。
在一些实施方案中,尽管允许使用较重量级压缩来压缩第一高速缓存存储器中的数据,但是使用较轻量级压缩或较重量级压缩中的任一者来压缩第一高速缓存存储器中的数据。在这些实施方案中,优先使用较轻量级压缩来压缩数据以存储在第一高速缓存存储器中,并且当不能使用较轻量级压缩来压缩数据时,使用较重量级压缩来压缩数据。换句话说,当试图使用较轻量级压缩来压缩数据不成功时(例如,由于可能使用较轻量级压缩来压缩的数据丢失模式或值),这些实施方案试图使用较重量级压缩来压缩数据。这些实施方案优选地使用较轻量级压缩,因为已经使用较轻量级压缩来压缩的数据可以原样从第一高速缓存存储器复制到第二高速缓存存储器,而无需中间解压缩,因此可以更快地进行。另外,尽管使用较重量级压缩意味着在将数据存储在第二高速缓存存储器之前必须对数据进行解压缩,但是较重量级压缩可能导致有利的尺寸减小,以将无法使用较轻量级压缩来压缩的数据存储第一高速缓存存储器中。
在一些实施方案中,使用较轻量级压缩和较重量级压缩两者的序列,因此其组合来压缩第一高速缓存存储器中的数据。在这些实施方案中,初始使用较轻量级压缩来压缩数据,然后使用较重量级压缩来再次压缩所得的压缩后数据。使用较重量级解压缩然后较轻量级解压缩的反向序列来执行完全解压缩从压缩序列输出的数据。在这些实施方案中,在将数据从第一高速缓存存储器复制到第二高速缓存存储器之前,对其进行解压缩以逆转较重量级压缩的效果,从而留下用较轻量级压缩进行压缩的数据以存储在第二高速缓存存储器中。尽管是以解压缩数据来准备用于存储在第二高速缓存存储器中的数据为代价,这样做是为了利用第一高速缓存存储器中的数据的较重量级压缩的有利的尺寸减小。然而,应注意,当将数据从第一高速缓存存储器复制到第二高速缓存存储器时,仅需要对数据进行解压缩来逆转较重量级压缩的效果–所得的解压缩后数据保留较轻量级压缩的效果。这使将数据从第一高速缓存存储器复制到第二高速缓存存储器的操作比在将副本存储在第二高速缓存存储器中时还执行较轻量级压缩的情况更快。
通过如本文所述的使用较轻量级压缩和较重量级压缩来压缩第一高速缓存存储器和第二高速缓存存储器的数据,所描述的实施方案减小了用于存储在高速缓存存储器中的数据的大小。另外,通过对每个高速缓存存储器使用指定的压缩,在高速缓存存储器之间安排压缩和解压缩数据的延迟,使得访问实体较少暴露于响应访问请求的不可接受的延迟。因此,所描述的实施方案能够在高速缓存存储器中存储更多的数据,但是不会对数据访问请求的响应引入不可接受的延迟。在高速缓存存储器中存储更多数据意味着访问实体能够访问高速缓存存储器中的更多数据,从而有助于避免访问存储器或大容量存储装置中的数据的需求和延迟。因此,访问高速缓存存储器中的更多数据可以改进访问实体的性能,因而改进电子装置的整体性能,从而提高用户满意度。
电子装置
图1呈现了根据一些实施方案的示出电子装置100的框图。如图1中可以看出,电子装置100包括处理器102和存储器104。通常,处理器102和存储器104是以硬件(即,使用各种电路元件和装置)来实现。例如,处理器102和存储器104可以全部制造在一个或多个半导体芯片上(包括制造在一个或多个单独的半导体芯片上)、可以由半导体芯片组合分立电路元件制成、可以单独由分立电路元件制造等。如本文所述,处理器102和存储器104执行与压缩数据以存储在高速缓存存储器中相关联的操作。
处理器102是执行电子装置100中的计算操作和其他操作(例如,控制操作、配置操作等)的功能块。例如,处理器102可以是或包括一个或多个微处理器、中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)和/或其他处理功能块。如图1中可以看出,处理器102包括核心106-108,每个核心都是执行计算操作和其他操作的功能块,诸如微处理器核心、图形处理器核心、专用集成电路(ASIC)等。在核心106-108内,执行子系统110-112包括功能块和电路元件,诸如指令提取/解码单元、指令调度单元、算术逻辑单元(ALU)、浮点运算单元、计算单元、可编程门阵列等,用于执行程序代码指令和执行其他操作。
处理器102包括高速缓存存储器层次结构,从该层次结构的最低级别开始前进到最高级别,具有在相应的核心106-108中的第一级高速缓存存储器(L1高速缓存)114-116和第二级高速缓存存储器(L2高速缓存)118-120,以及由核心共用的第三级高速缓存存储器(L3高速缓存)122。每个高速缓存存储器是功能块,其包括易失性存储器电路,诸如用于存储数据副本的静态随机存取存储器(SRAM)电路,以及用于处理诸如数据访问等操作的控制电路。在层次结构的每个级别上,相应的一个或多个高速缓存存储器可以至少部分地以存储数据副本的容量和用于响应访问请求的响应时间为特征,其中较小的高速缓存存储器在层次结构中较高,并且在层次结构中较高的高速缓存存储器的响应时间较短。例如,在一些实施方案中,L1高速缓存114-116具有32kB的容量和(控制时钟的)4-8个周期的响应时间,L2高速缓存118-120具有512kB的容量和12-15个周期的响应时间,并且L3高速缓存122具有4MB的容量和35-40个周期的响应时间。因此,在第一级上,假定有64B高速缓存行,则L1高速缓存114-116可以各自同时存储多达512个高速缓存行,并预期在4-8个控制时钟周期内响应数据访问请求。
在所描述的实施方案中,在将数据存储在至少一些高速缓存存储器中之前压缩数据,以减小数据的大小,从而增加可以同时存储在高速缓存存储器中的数据量(例如,高速缓存行的数量)。例如,取决于用于给定高速缓存存储器的压缩,可以将64B高速缓存行压缩为48B、32B或另一值。在这些实施方案中,高速缓存存储器包括可与压缩后数据和未压缩数据及其组合一起操作的控制机制、查找机制等。例如,这些机制可以在高速缓存存储器内存储大小不同的数据(例如,64B未压缩高速缓存行和32B压缩后高速缓存行等),对压缩后和未压缩的数据执行查找,从高速缓存存储器内获取要提供给访问实体的压缩后和未压缩的数据两者,等等。通常,在所描述的实施方案中,高速缓存存储器可与压缩后和未压缩的数据两者及其组合一起操作。
在一些实施方案中,对于高速缓存存储器层次结构的每个级别中的高速缓存存储器(或对于每个单独的高速缓存存储器)使用不同的压缩。在这些实施方案中,为层次结构的每个级别处的高速缓存存储器(或为每个高速缓存存储器)选择允许用于每个高速缓存存储器的特定压缩或最重量级压缩,这至少部分地基于这些高速缓存存储器对访问请求的所需响应时间。通常,在层次结构中较低并因此具有较长响应时间的高速缓存存储器的响应时间成比例地减小受到添加对较高重量级压缩进行解压缩的延迟的影响。例如,将用于数据解压缩的8个时钟周期添加到给定的高速缓存存储器的40个时钟周期的响应时间将使响应时间增加20%,但对较短的响应时间的影响更加明显。因此,允许将较重量级压缩用于层次结构中较低的高速缓存存储器。例如,在一些实施方案中,在层次结构中最高且具有最低的响应时间的L1高速缓存114-116中的数据不被压缩,即,数据以未压缩的形式存储在这些高速缓存存储器中。在这些实施方案中,具有中间响应时间的L2高速缓存118-120中的数据被允许仅使用较轻量级压缩来压缩,所述较轻量级压缩将较小量的解压缩延迟添加到响应时间。在这些实施方案中,具有最高响应时间的L3高速缓存122中的数据被允许使用较重量级压缩来压缩(但是如本文所述可能不被压缩),所述较重量级压缩将较大量的解压缩延迟添加到响应时间。
在一些实施方案中,针对高速缓存存储器层次结构中的高速缓存存储器来本地执行数据的压缩和/或解压缩。在这些实施方案中,一些或全部高速缓存存储器与压缩-解压缩功能块相关联并且可以位于压缩-解压缩功能块附近。例如,压缩-解压缩功能块可以结合到用于数据信号路由或总线的接口中或与之相关联,在所述接口上由高速缓存存储器接收数据并且经由所述接口将数据提供给其他高速缓存存储器。在这些实施方案中,压缩-解压缩功能块包括用于对用于对应的高速缓存存储器中的数据的压缩执行压缩和解压缩操作的电路元件。在图1所示的实施方案中,压缩-解压缩功能块包括分别与L2高速缓存118-120相关联的压缩-解压缩(COM-DECOM)功能块124-126,以及与L3高速缓存122相关联的压缩-解压缩功能块128。在这些实施方案中,当数据由对应的高速缓存存储器接收或由对应的高速缓存存储器提供时,压缩-解压缩功能块执行用于在必要时压缩接收到的数据以存储在高速缓存存储器中或解压缩来自高速缓存存储器的要提供给另一个高速缓存存储器(或其他访问实体)的数据的操作。继续上面的示例,当L2高速缓存118从L1高速缓存114接收到未压缩数据以存储在其中时(诸如当来自执行子系统110的数据正在通过高速缓存存储器层次结构传播时),压缩-解压缩功能块124使用较轻量级压缩来压缩数据,然后提供压缩后数据以存储在L2高速缓存118中。另外,并继续该示例,当L1高速缓存114从L2高速缓存118请求压缩后数据时,压缩-解压缩功能块124从L2高速缓存118接收压缩后数据,将数据从较轻量级压缩解压缩到未压缩状态,然后将未压缩数据提供给L1高速缓存114。
存储器104是执行对电子装置100的存储器(例如,“主”存储器)的操作的功能块。存储器104包括:易失性存储器电路,诸如第四代双倍数据速率同步DRAM(DDR4 SDRAM)和/或其他类型的存储器电路,所述易失性存储器电路用于存储由电子装置100中的功能块使用的数据和指令;以及控制电路,所述控制电路用于处置对存储在存储器电路中的数据和指令进行存取和执行其他控制或配置操作。
在一些实施方案中,除了被压缩以存储在高速缓存存储器层次结构中的高速缓存存储器中,还压缩数据以存储在存储器104中。在一些实施方案中,数据以压缩状态在一个或多个功能块之间传送,并且可以被压缩以进行通信。在一些实施方案中,数据处于压缩状态以进行通信,并在目的地高速缓存存储器或访问实体处被解压缩。例如,从L2高速缓存118检索的压缩后数据可以不立即被解压缩以消除上述较轻量级压缩的效果(即,在压缩-解压缩功能块124中),而是可以在解压缩之前传送到L1高速缓存114。在这些实施方案中,压缩-解压缩功能块的布置可以不同,在电子装置100中的一个或多个其他位置(例如,L1高速缓存114等)中具有本地压缩和/或解压缩机制。例如,从L1高速缓存114去往L2高速缓存118的数据可以在向L2高速缓存118传送之前在L1高速缓存114处压缩,因此可以在压缩状态下到达L2高速缓存118(其中已经应用了较轻量级压缩)。
尽管在图1中示出了高速缓存存储器的特定布置,但是,在一些实施方案中,存在不同数量和/或布置的高速缓存存储器。例如,在一些实施方案中,L1高速缓存114-116各自在核心106-108中的每一个中被分成两个单独的高速缓存存储器,一个高速缓存存储器用于存储程序代码指令,并且一个高速缓存存储器用于存储数据。通常,所描述的实施方案可与高速缓存存储器的任何布置一起操作,针对所述高速缓存存储器可以执行本文描述的数据压缩操作。另外,尽管在图1中示出了许多压缩-解压缩功能块,但是,在一些实施方案中,功能块的不同布置用于执行如本文所述的对数据的压缩和解压缩。例如,一些或全部高速缓存存储器中的高速缓存控制器可以被修改以并入用于执行压缩和/或解压缩的电路元件。
出于说明性目的,简化电子装置100。然而,在一些实施方案中,电子装置100包括附加的或不同的功能块和元件。例如,电子装置100可以包括显示子系统、电源子系统、输入-输出(I/O)子系统等。电子装置100通常包括足够的功能块和元件以执行本文所述的操作。
电子装置100可以是或可以包括在执行计算操作的任何装置中。例如,电子装置100可以是或可以包括在以下各者中:台式计算机、膝上型计算机、可穿戴计算装置、平板计算机、一件虚拟或增强现实设备、智能电话、人工智能(AI)或机器学习装置、服务器、网络设备、玩具、一件视听设备、家用电器、车辆等和/或其组合。
数据压缩
在所描述的实施方案中,数据被压缩以存储在高速缓存存储器层次结构中的高速缓存存储器中,并且根据需要被解压缩以将数据存储在高速缓存存储器中或使用数据(回想本文所使用的“数据”是指可以存储在高速缓存或存储器中的任何信息或值)。通常,“压缩”数据涉及用于无损地减小数据的大小(例如,位数或字节数)以存储数据、经由各种通信机制进行的数据通信以及其他操作的操作。因为数据是无损压缩的,所以可以对压缩后数据进行“解压缩”,以恢复数据的完整未压缩值。
存在多种类型的数据压缩以及本领域中已知的每种压缩类型的各种实现方式。例如,模式匹配压缩、值匹配压缩、零内容压缩、Lempel-Ziv(LZ)(和变体)压缩、马尔可夫压缩和增量压缩是许多压缩类型中的几种,并且已经针对一些或所有的压缩类型提出了不同的实现方式。所描述的实施方案不限于任何特定的压缩类型,而是可与可以对要存储在高速缓存存储器中的数据执行的压缩的任何组合一起操作。
如本文所述,在一些实施方案中,使用“较轻量级”压缩和“较重量级”压缩的组合。通常,较轻量级压缩是或包括一种或多种类型的压缩,其比较重量级压缩的或包括在其中的一种或多种类型的压缩更快(并且可能显著更快)地压缩和/或解压缩。例如,在一些实施方案中,较轻量级压缩可以是或包括可以在(控制时钟的)1-3个周期内压缩和/或解压缩的压缩类型,而较重量级压缩可以是或包括可以在6-10个周期内压缩和/或解压缩的压缩类型。较轻量级压缩和较重量级压缩中的差异可能归因于所执行的压缩操作数量、压缩操作的复杂性和/或执行压缩操作的速度中的一者或多者中的差异。
在一些实施方案中,尽管试图压缩数据,但是数据中可能不存在可压缩的模式、值等。例如,在一些实施方案中,可以删除前导零或一以进行压缩,而数据可能不具有前导零或一。在这种情况下,压缩可能无法起作用,因而数据可能会保持在试图压缩数据之前存在的初始状态(即,可能具有相同数量的位或字节与相同值)。在这些实施方案中,数据可以以未压缩状态存储在一些或全部高速缓存存储器中。例如,并且继续上面的示例,当较轻量级压缩未导致给定数据片的减少/压缩时,该数据片可以以未压缩状态存储在L2高速缓存118中。
在一些实施方案中,压缩-解压缩功能块可以试图按序列对数据进行两种或更多种压缩,直到数据被压缩或者已经尝试了序列中的最后一个压缩为止。继续上面的示例,压缩-解压缩功能块128可以首先试图使用较轻量级压缩来压缩给定数据片以存储在L3高速缓存122中。当试图使用较轻量级压缩来压缩给定数据片成功时,可以将仅应用了较轻量级压缩的压缩后数据存储在L3高速缓存122中。在这种情况下,当并且如果从L3高速缓存122向L2高速缓存(例如,L2高速缓存118)提供压缩后的给定数据片,则因为对于L2高速缓存中的数据使用了较轻量级压缩,所以可以不为给定数据片提供解压缩。然而,当较轻量级压缩不成功时(因而数据保持未压缩),压缩-解压缩功能块128可以试图使用较重量级压缩来压缩给定数据片。然后,将使用较重量级压缩进行压缩或未压缩(如果较重量级压缩不成功)的给定数据片存储在L3高速缓存122中。当使用较重量级压缩来压缩给定数据片时,压缩-解压缩功能块128将解压缩该给定数据片,以在将给定数据片提供给L2高速缓存之前逆转较重量级压缩的效果。
在一些实施方案中,并且与前一段络中的示例不同,压缩-解压缩功能块可以按序列将两种或更多种压缩应用于数据。通常,在这些实施方案中,使用较轻量级压缩来压缩给定数据片,然后使用较重量级压缩来再次压缩给定数据片(其包括较轻量级压缩的效果)。对要存储在高速缓存存储器中的数据执行组合压缩,在所述高速缓存存储器中,允许使用较重量级压缩和较轻量级压缩两者。例如,在这些实施方案中的一些实施方案中,允许在L3高速缓存122中使用组合压缩。在这些实施方案中,执行组合压缩的压缩-解压缩功能块可以被配置为针对每次压缩来处理可变长度数据。换句话说,因为较轻量级压缩可能会或可能不会导致给定数据片的压缩,所以较重量级压缩应该能够处理未压缩数据和已经使用较轻量级压缩进行压缩的数据。
压缩数据以存储在高速缓存存储器层次结构中的高速缓存存储器中
在所描述的实施方案中,数据被压缩以存储在高速缓存存储器层次结构中的高速缓存存储器(例如,L1高速缓存114-116、L2高速缓存118-120和L3高速缓存122)中。当从存储器(例如,存储器104)向上通过高速缓存存储器层次结构中的高速缓存存储器复制数据时,压缩-解压缩功能块(例如,压缩-解压缩功能块124-128)执行用于压缩和解压缩数据的操作,使得使用指定的压缩将数据存储在高速缓存存储器中。另外,当由核心(例如,核心106)向下通过高速缓存存储器层次结构中的高速缓存存储器提供数据时,压缩-解压缩功能块执行用于压缩和解压缩数据的操作,使得使用指定的压缩将数据存储在高速缓存存储器中。图2呈现了根据一些实施方案的示出当在高速缓存存储器层次结构中向上通过高速缓存存储器复制数据时对数据执行的压缩和解压缩的框图。图3呈现了根据一些实施方案的示出当在高速缓存存储器层次结构中向下通过高速缓存存储器复制数据时对数据执行的压缩和解压缩的框图。注意,图2至图3所示的操作被呈现为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同的操作、以不同的顺序执行的操作和/或由不同的实体或功能块执行的操作。
对于图2至图3中的示例,假定一次仅对数据应用一种压缩。如本文其他地方所述,在一些实施方案中,在指定的高速缓存存储器(例如,L3高速缓存122)中,可以将两种压缩的序列应用于数据,使得一次使用第一压缩(例如,较轻量级压缩)来压缩数据,然后再次使用第二压缩(例如,较重量级压缩)来压缩已经压缩的数据。尽管未提供压缩组合的示例,但是操作类似,不同的是以下事实:可以按顺序将两种压缩应用于数据,并且使用对应的解压缩操作对数据进行解压缩。
对于图2至图3中的示例,当数据被传播到存储器或从存储器传播时,各种压缩和解压缩被描述为在指定的时间/在相应的高速缓存存储器中应用于数据。在一些实施方案中,压缩和/或解压缩中的一些或全部不应用于数据和/或压缩和/或解压缩以不同的方式应用于数据。例如,在一些实施方案中,对于指定类型的数据访问(例如,更高优先级的数据访问等),直接将未压缩数据提供给请求实体(例如,核心等),而不存储在高速缓存存储器中。作为另一个示例,在一些实施方案中,将从存储器获取的未压缩数据绕行到请求实体(使得尽快向请求实体提供数据),但是也将副本提供给一些或所有高速缓存存储器(可能并行)并且在存储在其中之前进行压缩。
对于图3中的示例,假定由诸如核心106的数据源提供的要存储在存储器中的数据副本向下通过高速缓存存储器层次结构存储在高速缓存存储器中(即,与直写高速缓存存储器一样)。因此,在该示例中,随着数据副本向下通过层次结构朝向存储器前进,副本被存储在每个高速缓存存储器中。在一些实施方案中,数据的副本不以这种方式向下传播通过层次结构,而是首先写入层次结构中的最高高速缓存(例如,L1高速缓存114-116),随后经由来自高速缓存存储器的逐出而向下传播(即,与回写高速缓存存储器一样)。然而,针对图3描述的压缩-解压缩操作在这些实施方案中是类似的,当并且如果将数据副本存储在每个高速缓存存储器中时执行。
当从存储器104获取未压缩状态(例如,来自存储器中的指定地址的64B高速缓存行)的数据副本以存储在L3高速缓存122中时,图2中的操作开始。在将数据存储在L3高速缓存122中之前,压缩-解压缩功能块128首先试图使用较轻量级压缩200来压缩数据。对于该操作,压缩-解压缩功能块128根据使用中的特定较轻量级压缩来应用压缩操作,诸如模式匹配、值替换等。如果较轻量级压缩成功,则压缩-解压缩功能块128更新与数据相关联的元数据,以将数据标记为已经使用较轻量级压缩进行压缩,并将压缩后数据提供给L3高速缓存122以存储在其中(由绕过较重量级压缩202的线示出)。
当试图使用较轻量级压缩来压缩数据不成功时,因而数据保持未压缩(即数据缺少较轻量级压缩所应用于的模式、值等),则压缩-解压缩功能块128试图使用较重量级压缩202压缩数据。对于该操作,压缩-解压缩功能块128根据使用中的特定较重量级压缩来应用压缩操作,诸如模式匹配、值替换等。如果较重量级压缩成功,则压缩-解压缩功能块128更新与数据相关联的元数据,以将数据标记为已经使用较重量级压缩来压缩,并将压缩后数据提供给L3高速缓存122以存储在其中。否则,如果试图使用较重量级压缩来压缩数据不成功时,因而数据保持未压缩(即数据缺少较重量级压缩所应用于的模式、值等),则压缩-解压缩功能块128更新与数据相关联的元数据,以将数据标记为未压缩,并将未压缩数据提供给L3高速缓存122以存储在其中。
在接收到将数据副本提供给L2高速缓存118的请求时,当数据被标记为已经使用较重量级压缩进行压缩时,L3高速缓存122将数据提供给压缩-解压缩功能块128。压缩-解压缩功能块128应用较重量级解压缩204以逆转对数据的较重量级压缩,从而将数据恢复为未压缩状态。压缩-解压缩功能块128然后更新与数据相关联的元数据,以将数据标记为未压缩,并将未压缩状态的数据提供给L3高速缓存122,以转发到L2高速缓存118。否则,当数据被标记为使用较轻量级压缩进行压缩或未压缩时,L3高速缓存122立即将数据提供给L2高速缓存118,而不会涉及压缩-解压缩功能块128(这由绕过较重量级解压缩204的线示出)。在接收到处于未压缩状态或使用较轻量压缩进行压缩的数据时,L2高速缓存118存储数据。
在接收到将数据副本提供给L1高速缓存114的请求时,当数据被标记为已经使用较轻量级压缩进行压缩时,L2高速缓存118将数据提供给压缩-解压缩功能块124。压缩-解压缩功能块124应用较轻量级解压缩206以逆转对数据的较轻量级压缩,从而将数据恢复为未压缩状态。压缩-解压缩功能块124然后更新与数据相关联的元数据,以将数据标记为未压缩,并将未压缩状态的数据提供给L2高速缓存118,以转发到L1高速缓存114。否则,当数据被标记为未压缩时,L2高速缓存118立即将数据提供给L1高速缓存114,而不会涉及压缩-解压缩功能块124(这由绕过较轻量级解压缩206的线示出)。在接收到处于未压缩状态的数据时,L1高速缓存114存储该数据。然后,L1高速缓存114可以将数据提供给访问实体,诸如核心106,其可能已经生成将数据副本存储在L1高速缓存114中的请求。
当从诸如核心106的数据源向L1高速缓存114提供注定要存储在存储器104中的处于未压缩状态的数据副本时,图3中的操作开始。L1高速缓存114将处于未压缩状态的数据副本(例如,在包括数据的64B高速缓存行中)存储在L1高速缓存114中,其中与数据集相关联的元数据指示数据处于未压缩状态。L1高速缓存114还将处于未压缩状态的数据副本转发到L2高速缓存118以存储在其中。
在接收到数据副本时,L2高速缓存114将数据提供给压缩-解压缩功能块124。压缩-解压缩功能块124试图使用较轻量级压缩300来压缩数据。对于该操作,压缩-解压缩功能块124根据使用中的特定较轻量级压缩来应用压缩操作,诸如模式匹配、值替换等。如果较轻量级压缩成功,则压缩-解压缩功能块124更新与数据相关联的元数据,以将数据标记为已经使用较轻量级压缩进行压缩,并将压缩后数据提供给L2高速缓存118以存储在其中。当试图使用较轻量级压缩来压缩数据不成功时,因而数据保持未压缩(即数据缺少较轻量级压缩所应用于的模式、值等),则压缩-解压缩功能块124将未压缩数据提供给L2高速缓存118以存储在其中。L2高速缓存118还将处于未压缩状态或使用较轻量级压缩进行压缩的数据副本转发到L3高速缓存122以存储在其中。
在接收到数据副本时,当与数据相关联的元数据指示数据是使用较轻量级压缩进行压缩时,L3高速缓存122存储压缩后数据(这由绕过较重量级压缩302的线示出)。否则,当与数据相关联的元数据指示数据未被压缩时,L3高速缓存122将数据提供给压缩-解压缩功能块128。压缩-解压缩功能块128试图使用较重量级压缩302来压缩数据。对于该操作,压缩-解压缩功能块128根据使用中的特定较轻量级压缩来应用压缩操作,诸如模式匹配、值替换等。如果较重量级压缩成功,则压缩-解压缩功能块128更新与数据相关联的元数据,以将数据标记为已经使用较重量级压缩来压缩,并将压缩后数据提供给L3高速缓存122以存储在其中。当试图使用较重量级压缩来压缩数据不成功时,因而数据保持未压缩(即数据缺少较轻量级压缩所应用于的模式、值等),则压缩-解压缩功能块128将未压缩数据提供给L3高速缓存122以存储在其中。
L3高速缓存122还将数据副本提供给存储器104。在一些实施方案中,数据以未压缩状态存储在存储器104中。在这些实施方案中,当从L2高速缓存118接收到使用较轻量级压缩的数据时,L3高速缓存122将数据提供给压缩-解压缩功能块128。压缩-解压缩功能块128应用较轻量级解压缩操作304以逆转对数据的较轻量级压缩,从而将数据恢复为未压缩状态。L3高速缓存122然后将处于未压缩状态的数据提供给存储器。否则,当L3高速缓存122接收到未压缩数据时,L3高速缓存122立即将数据提供给存储器,而不会使用压缩-解压缩功能块128来解压缩数据(这由绕过较轻量级解压缩304的线示出)。在接收到处于未压缩状态的数据时,存储器存储该数据。在一些实施方案中,数据以压缩状态存储在存储器中。在这些实施方案中,并且取决于存储器中使用的特定压缩,L3高速缓存122可以将处于压缩状态的数据提供给存储器104以存储在其中,或者L3高速缓存122可以提供处于如所述的未压缩状态的数据,并且存储器中的压缩-解压缩机制可以在将数据存储在存储器104中之前使用对应的压缩来压缩数据。
用于压缩数据以存储在高速缓存存储器中的过程
在所描述的实施方案中,电子装置执行用于使用指定的压缩来压缩数据以存储在电子装置中的高速缓存存储器层次结构中的高速缓存存储器中的操作。图4呈现了根据一些实施方案的示出用于压缩数据以存储在高速缓存存储器中的过程的流程图。注意,图4所示的操作被呈现为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同的操作、以不同的顺序执行的操作和/或由不同的实体或功能块执行的操作。
对于图4中的示例,假定允许第一高速缓存存储器(例如,L3高速缓存122)存储(连同未压缩数据一起)使用第一压缩(例如,较重量级压缩)和第二压缩(例如,较轻量级压缩)中的任一者压缩的数据,因而对应的压缩-解压缩功能块(例如,压缩-解压缩功能块128)能够使用第一压缩和第二压缩来压缩和解压缩数据。还假定允许第二高速缓存存储器(例如,L2高速缓存118)存储(连同未压缩数据一起)仅使用第二压缩进行压缩的数据,因而对应的压缩-解压缩功能块(例如,压缩-解压缩功能块124)能够仅使用第二压缩来压缩和解压缩数据。对于该示例,不允许第二高速缓存存储器存储已经使用第一压缩进行压缩的数据。还假定第三高速缓存存储器(例如,L1高速缓存114)仅存储未压缩数据。
另外,对于图4中的示例,仅将第一压缩和第二压缩中的一者应用于用于存储在第一高速缓存存储器中的数据。然而,这不是必需的。图5呈现了示出其中将压缩序列应用于用于存储在第一高速缓存存储器中的数据的实施方案的流程图。
当压缩-解压缩功能块接收到处于未压缩状态的数据时,图4中的操作开始(步骤400)。对于该操作,压缩-解压缩功能块从存储器(例如,存储器104)或另一个源(例如,网络接口、处理器等)接收处于未压缩状态的数据,诸如64B高速缓存行。在“未压缩”状态下,根据数据类型的数据的完整的位/字节集被呈现并被配置为表示数据的值,并且数据尚未压缩。例如,如果数据包括一个或多个32位浮点值,则呈现表示一个或多个值中的每一个(例如,正负号、指数和分数)的全部32位。
然后,压缩-解压缩功能块使用第一压缩和第二压缩中的一者来压缩数据(步骤402)。第一压缩和第二压缩中的每一者都包括一个或多个压缩操作,在所述压缩操作期间,未压缩数据的一些或全部位/字节被删除、减少、替换或以其他方式改变。第一压缩和第二压缩中的每一者的特定的一个或多个压缩操作以及因而在相应压缩期间对未压缩数据做出的改变取决于压缩的类型。例如,第一压缩和/或第二压缩可以是或包括模式匹配压缩、值匹配压缩、零内容压缩、Lempel-Ziv(LZ)(和变体)压缩、马尔可夫压缩、增量压缩等中的一者或多者。
对于步骤402中的操作,当使用第一压缩和第二压缩中的一者来压缩数据时,压缩-解压缩功能块首先试图使用第二压缩(例如,较轻量级压缩)来压缩数据。在第一压缩(例如,较重量级压缩)之前尝试第二压缩,因为允许第一高速缓存存储器和第二高速缓存存储器两者都存储并且可以解压缩使用第二压缩进行压缩的数据。因此,当将数据从第一高速缓存存储器复制到第二高速缓存存储器时,可以在不对数据进行解压缩的情况下复制数据,这避免了需要压缩-解压缩功能块执行对应的解压缩操作。当使用第二压缩来压缩数据时,压缩-解压缩功能块设置与数据相关联的元数据(例如,一个或多个位)以指示该数据是使用第二压缩进行压缩的,并将压缩后数据提供给第一高速缓存存储器以存储在其中(步骤404)。
尽管尝试了第二压缩,但是由于数据缺少对应的模式、值等,因此第二压缩可能不会导致压缩数据,因而数据保持未压缩状态。在这种情况下,压缩-解压缩功能块试图使用第一压缩来压缩数据。压缩-解压缩功能块尝试第一压缩,这是因为尽管在将使用第一压缩进行压缩的数据从第一高速缓存存储器复制到第二高速缓存存储器时需要对数据进行解压缩,但还是希望将数据压缩以存储在第一高速缓存存储器中以更好地使用第一高速缓存存储器中的可用存储。当使用第一压缩来压缩数据时,压缩-解压缩功能块设置与数据相关联的元数据以指示该数据是使用第一压缩进行压缩的,并将压缩后数据提供给第一高速缓存存储器以存储在其中(步骤404)。
对于图4中的示例,假定使用第一压缩和第二压缩中的一者成功地压缩了数据。如果尽管试图使用第一压缩和第二压缩来压缩数据仍不能对数据进行压缩,则该数据将以未压缩状态存储在第一高速缓存存储器中。在这种情况下,在步骤408中,仅将未压缩数据从第一高速缓存存储器复制到第二高速缓存存储器。
当从第一高速缓存存储器中检索数据以存储在第二高速缓存存储器中时,当使用第一压缩来压缩数据时,压缩-解压缩功能块解压缩数据以逆转第一压缩对数据的效果,从而将数据恢复到未压缩状态(步骤406)。对于该操作,压缩-解压缩功能块执行一个或多个解压缩操作,在所述解压缩操作期间,先前被删除、减少、替换或以其他方式改变的数据的一些或全部位/字节被恢复为原始的完整值。与压缩一样,执行的特定的一个或多个解压缩操作取决于第一压缩的类型。在该操作期间,压缩-解压缩功能块将数据置于可以将数据存储在第二高速缓存存储器中的状态(未压缩)。然后,将使用第二压缩进行压缩(在步骤402中压缩)或处于未压缩状态的数据提供给第二高速缓存存储器以存储在其中(步骤408)。
当从第二高速缓存存储器中检索数据以存储在第三高速缓存存储器中时,当使用第二压缩来压缩数据时,压缩-解压缩功能块解压缩数据以逆转第二压缩对数据的效果,从而将数据恢复到未压缩状态(步骤410)。对于该操作,压缩-解压缩功能块执行一个或多个解压缩操作,在所述解压缩操作期间,先前被删除、减少、替换或以其他方式改变的数据的一些或全部位/字节被恢复为原始的完整值。与压缩一样,执行的特定的一个或多个解压缩操作取决于第二压缩的类型。在该操作期间,压缩-解压缩功能块将数据置于可以将数据存储在第三高速缓存存储器中的状态(未压缩)。然后将处于未压缩状态的数据提供给第二高速缓存存储器以存储在其中(步骤412)。
现在转到图5,图5呈现了根据一些实施方案的示出用于压缩数据以存储在高速缓存存储器中的过程的流程图。注意,图5所示的操作被呈现为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同的操作、以不同的顺序执行的操作和/或由不同的实体或功能块执行的操作。
对于图5中的示例,假定允许第一高速缓存存储器(例如,L3高速缓存122)存储(连同未压缩数据一起)使用第二压缩(例如,较轻量级压缩)和第一压缩(例如,较重量级压缩)的序列来压缩的数据,因而对应的压缩-解压缩功能块(例如,压缩-解压缩功能块128)能够使用第一压缩和第二压缩来压缩和解压缩数据。还假定允许第二高速缓存存储器(例如,L2高速缓存118)存储(连同未压缩数据一起)仅使用第二压缩进行压缩的数据,因而对应的压缩-解压缩功能块(例如,压缩-解压缩功能块124)能够仅使用第二压缩来压缩和解压缩数据。对于该示例,不允许第二高速缓存存储器存储已经使用第一压缩进行压缩的数据。还假定第三高速缓存存储器(例如,L1高速缓存114)仅存储未压缩数据。
另外,并且与图4中的示例不同,对于图5中的示例,将第二压缩和第一压缩两者的序列应用于用于存储在第一高速缓存存储器中的数据。换句话说,使用第二压缩来压缩数据,并且使用第一压缩来再次压缩已经压缩的数据。压缩的这种组合可能会导致比单独的任一压缩都更多的数据大小减少。在一些实施方案中,后一种压缩(即,第一压缩)包括用于处理不同长度数据的一个或多个操作,这是因为数据可能使用第二种压缩成功地压缩或可能未压缩(在数据缺少可通过第二压缩来压缩的模式、值等的情况下)。
此外,对于图5中的示例,假定使用第二压缩和第一压缩的序列成功地压缩了数据。如果尽管试图使用第一压缩和/或第二压缩来压缩数据仍不能对数据进行压缩,则该数据将以未压缩状态或某个其他一次压缩状态存储在第一高速缓存存储器中。在这种情况下,图5的操作被改变为使用一次压缩的压缩后数据来操作(类似于图4)。
当压缩-解压缩功能块接收到处于未压缩状态的数据时,图5中的操作开始(步骤500)。对于该操作,压缩-解压缩功能块从存储器(例如,存储器104)或另一个源(例如,网络接口、处理器等)接收处于未压缩状态的数据,诸如64B高速缓存行。在“未压缩”状态下,根据数据类型的数据的完整的位/字节集被呈现并被配置为表示数据的值,并且数据尚未压缩。例如,如果数据包括一个或多个32位浮点值,则呈现表示值中的每一个(例如,正负号、指数和分数)的全部32位。
然后,压缩-解压缩功能块使用第二压缩和然后第一压缩的序列来压缩数据(步骤502)。第一压缩和第二压缩中的每一者都包括一个或多个压缩操作,在所述压缩操作期间,数据的一些或全部位/字节被删除、减少、替换或以其他方式改变。第一压缩和第二压缩中的每一者的特定的一个或多个压缩操作以及因而在相应压缩期间对数据做出的改变取决于压缩的类型。例如,第一压缩和/或第二压缩可以是或包括模式匹配压缩、值匹配压缩、零内容压缩、Lempel-Ziv(LZ)(和变体)压缩、马尔可夫压缩、增量压缩等中的一者或多者。
对于步骤502中的操作,对数据执行第二压缩和第一压缩两者。首先执行第二压缩,因而使用第二压缩来初始地压缩数据,因为既允许第二高速缓存存储器存储使用第二压缩进行压缩的数据,又可以对所述数据解压缩。然后执行第一压缩以试图进一步减小数据大小。该压缩顺序使得能够对数据进行解压缩以逆转第一压缩的效果,并将数据恢复为仅具有第二压缩的效果,从而准备将副本存储在第二高速缓存存储器中。在使用第二压缩和第一压缩的序列对数据进行压缩之后,压缩-解压缩功能块设置与数据相关联的元数据(例如,一个或多个位)以指示该数据是使用第二压缩和第一压缩的序列进行压缩的,并将压缩后数据提供给第一高速缓存存储器以存储在其中(步骤504)。
当从第一高速缓存存储器中检索数据以存储在第二高速缓存存储器中时,压缩-解压缩功能块解压缩数据以逆转第一压缩对数据的效果,从而将数据恢复到数据仅使用第二压缩来压缩的状态(步骤506)。对于该操作,压缩-解压缩功能块执行一个或多个解压缩操作,在所述解压缩操作期间,先前被删除、减少、替换或以其他方式改变的数据的一些或全部位/字节被恢复为在第二压缩之后的值。与压缩一样,执行的特定的一个或多个解压缩操作取决于第一压缩的类型。在该操作期间,压缩-解压缩功能块将数据置于可以将数据存储在第二高速缓存存储器中的状态(仅使用第二压缩进行压缩),并且更新与数据相关联的元数据以指示该数据是仅使用第二压缩进行压缩的。然后,将使用第二压缩进行压缩(在步骤502中压缩)的数据提供给第二高速缓存存储器以存储在其中(步骤508)。
当从第二高速缓存存储器中检索数据以存储在第三高速缓存存储器中时,压缩-解压缩功能块解压缩数据以逆转第二压缩对数据的效果,从而将数据恢复到未压缩状态(步骤510)。对于该操作,压缩-解压缩功能块执行一个或多个解压缩操作,在所述解压缩操作期间,先前被删除、减少、替换或以其他方式改变的数据的一些或全部位/字节被恢复为原始的完整值。与压缩一样,执行的特定的一个或多个解压缩操作取决于第二压缩的类型。在该操作期间,压缩-解压缩功能块将数据置于可以将数据存储在第三高速缓存存储器中的状态(未压缩)。然后将处于未压缩状态的数据提供给第二高速缓存存储器以存储在其中(步骤512)。
在一些实施方案中,电子装置(例如,电子装置100和/或其某一部分)使用存储在非暂时性计算机可读存储介质上的代码和/或数据来执行本文中描述的操作中的一些或全部。更具体地,当执行所描述的操作时,电子装置从计算机可读存储介质读取代码和/或数据并且执行代码和/或使用数据。计算机可读存储介质可以是存储代码和/或数据以供电子装置使用的任何装置、介质或其组合。例如,计算机可读存储介质可以包括但不限于易失性存储器和/或非易失性存储器,包括闪存、随机存取存储器(例如,eDRAM、RAM、SRAM、DRAM、DDR4 SDRAM等)、只读存储器(ROM)和/或磁性或光学存储介质(例如,磁盘驱动器、磁带、CD、DVD等)。
在一些实施方案中,一个或多个硬件模块执行本文中描述的操作。例如,硬件模块可以包括但不限于一个或多个处理器/核心/中央处理单元(CPU)、专用集成电路(ASIC)芯片、神经网络处理器或加速器、现场可编程门阵列(FPGA)、计算单元、嵌入式处理器、图形处理器(GPU)/图形核心、流水线、加速处理单元(APU)、功能块、控制器、压缩-解压缩功能块和/或其他可编程逻辑设备。当激活这些硬件模块时,硬件模块执行操作中的一些或全部。在一些实施方案中,硬件模块包括一个或多个通用电路,所述通用电路通过执行指令(程序代码、固件等)以执行操作来配置。
在一些实施方案中,表示本文中描述的结构和机制中的一些或全部的数据结构(例如,电子装置100、压缩-解压缩功能块124-128、高速缓存存储器层次结构中的高速缓存存储器、和/或其某一部分)存储在非暂时性计算机可读存储介质上,所述非暂时性计算机可读存储介质包括可由电子装置读取并且直接地或间接地使用以制造包括所述结构和机制的硬件的数据库或其他数据结构。举例来说,数据结构可以是采用高级设计语言(HDL)(例如Verilog或VHDL)的硬件功能的行为级描述或寄存器传送级(RTL)描述。所述描述可由综合工具读取,所述综合工具可综合所述描述以产生网表,所述网表包括来自综合库中的门/电路元件的清单,所述清单表示包括上述结构和机制的硬件的功能。然后,可放置并且路由所述网表以产生描述要应用于掩模的几何形状的数据集。然后,可在各种半导体制造步骤中使用掩模以产生与上述结构和机制相对应的一个或多个半导体电路(例如,集成电路)。替代地,计算机可存取的存储介质上的数据库可以是网表(带有或没有综合库)或数据集(根据需要),或图形数据系统(GDS)II数据。
在本说明书中,变量或未指定值(即,在没有值的特定实例的情况下对值的一般描述)由例如N的字母表示。如本文所使用,尽管在本说明书中可能在不同位置使用类似的字母,但是每种情况下的变量和未指定值不一定相同,即,可能有不同的变量量和值旨在用于一般变量和未指定值中的一些或全部。换句话说,在本说明书中,N和用于表示变量和未指定值的任何其他字母不一定彼此相关。
如本文所使用的表达“等”或“等等”旨在呈现一者和/或情况,即,清单中的与等相关联的元素中的“至少一个”的等同物。例如,在语句“电子装置执行第一操作、第二操作等等”中,电子装置执行第一操作、第二操作和其他操作中的至少一个。此外,与等等相关联的列表中的元素仅仅是示例集中的示例-且示例中的至少一些可能不会出现在一些实施方案中。
仅出于说明和描述的目的给出了实施方案的先前描述。所述先前描述不意图是详尽的或将实施方案限于公开的形式。相应地,许多修改和变化对本领域的从业人员来说将是显而易见的。另外,以上公开不意在限制实施方案。实施方案的范围由所附权利要求限定。
Claims (20)
1.一种压缩数据以存储在高速缓存存储器中的电子装置,所述电子装置包括:
高速缓存存储器层次结构,所述高速缓存存储器层次结构包括第一高速缓存存储器和第二高速缓存存储器,所述第一高速缓存存储器在所述层次结构中低于所述第二高速缓存存储器;和
至少一个压缩-解压缩功能块,其被配置为:
接收处于未压缩状态的数据;
使用第一压缩或第二压缩中的一者来压缩所述数据;
在压缩所述数据之后,将所述数据提供给所述第一高速缓存存储器以存储在其中;
当从所述第一高速缓存存储器中检索所述数据以存储在所述第二高速缓存存储器中时,当使用所述第一压缩来压缩所述数据时,解压缩所述数据以逆转所述第一压缩对所述数据的效果,从而将所述数据恢复到所述未压缩状态;并且
将使用所述第二压缩进行压缩或处于所述未压缩状态的所述数据提供给所述第二高速缓存存储器以存储在其中。
2.如权利要求1所述的电子装置,其还包括:
在所述高速缓存存储器层次结构中的第三高速缓存存储器,所述第二高速缓存存储器在所述层次结构中低于所述第三高速缓存存储器,其中:
当从所述第二高速缓存存储器中检索所述数据以存储在所述第三高速缓存存储器中时,当使用所述第二压缩来压缩所述数据时,所述至少一个压缩-解压缩功能块:
解压缩所述数据以逆转所述第二压缩对所述数据的效果,从而将所述数据恢复到所述未压缩状态;并且
将所述数据提供给所述第三高速缓存存储器以存储在其中。
3.如权利要求2所述的电子装置,其中:
所述第一压缩是较重量级压缩,并且所述第二压缩是较轻量级压缩;并且
使用所述较轻量级压缩来解压缩所述数据比使用所述较重量级压缩来解压缩所述数据更快。
4.如权利要求1所述的电子装置,其中使用所述第一压缩或所述第二压缩中的一者来压缩所述数据包括:
对所述数据执行所述第二压缩的一个或多个第二压缩操作,所述一个或多个第二压缩操作压缩具有第二性质的数据;并且
当所述第二压缩的所述一个或多个压缩操作由于所述数据不具有所述第二性质而不导致压缩所述数据时,对所述数据执行所述第一压缩的一个或多个第一压缩操作,所述一个或多个第一压缩操作压缩具有第一性质的数据。
5.如权利要求4所述的电子装置,其中所述第一压缩操作和所述第二压缩操作中的一者或两者包括模式匹配压缩、值匹配压缩、零内容压缩、基于Lempel-Ziv的压缩、马尔可夫压缩和增量压缩中的至少一者。
6.如权利要求4所述的电子装置,其中当所述第一性质和所述第二性质都不存在于所述数据中使得所述第一压缩和所述第二压缩都不导致压缩所述数据时,将所述数据以所述未压缩状态存储在所述第一高速缓存存储器和所述第二高速缓存存储器中。
7.如权利要求1所述的电子装置,其中在使用所述第一压缩或所述第二压缩中的所述一者压缩数据之后,所述至少一个压缩-解压缩功能块被配置为:
更新与所述数据相关联的元数据,以指示所述数据是使用所述第一压缩或所述第二压缩中的相应一者压缩的。
8.如权利要求1所述的电子装置,其中所述至少一个压缩-解压缩功能块还被配置为:
接收处于所述未压缩状态的其他数据;
使用所述第二压缩和所述第一压缩的序列来压缩所述其他数据,所述第一压缩支持可变输入格式;
在压缩所述数据之后,将所述数据提供给所述第一高速缓存存储器以存储在其中;
当从所述第一高速缓存存储器中检索所述数据以存储在所述第二高速缓存存储器中时,解压缩所述其他数据以逆转所述第一压缩对所述其他数据的效果,从而将所述其他数据恢复到所述其他数据仅使用所述第二压缩来压缩的状态;并且
将使用所述第二压缩进行压缩的所述数据提供给所述第二高速缓存存储器以存储在其中。
9.如权利要求1所述的电子装置,其中所述至少一个压缩-解压缩功能块从存储器接收所述数据。
10.如权利要求9所述的电子装置,其中使用第三压缩来压缩存储在所述存储器中的所述数据,并且在将所述数据转发到所述压缩-解压缩功能块之前,将所述数据解压缩以将所述数据恢复到所述未压缩状态。
11.如权利要求9所述的电子装置,其中使用第三压缩来压缩所述数据,以用于经由所述存储器与所述至少一个压缩-解压缩功能块之间的一个或多个通信链路进行通信。
12.一种用于压缩数据以存储在包括高速缓存存储器层次结构和至少一个压缩-解压缩功能块的电子装置中的高速缓存存储器中的方法,所述高速缓存存储器层次结构包括第一高速缓存存储器和第二高速缓存存储器,所述第一高速缓存存储器在所述层次结构中低于所述第二高速缓存存储器,所述方法包括:
由所述至少一个压缩-解压缩功能块接收处于未压缩状态的数据;
由所述至少一个压缩-解压缩功能块使用第一压缩或第二压缩中的一者来压缩所述数据;
在压缩所述数据之后,由所述至少一个压缩-解压缩功能块将所述数据提供给所述第一高速缓存存储器以存储在其中;
当从所述第一高速缓存存储器中检索所述数据以存储在所述第二高速缓存存储器中时,当使用所述第一压缩来压缩所述数据时,由所述至少一个压缩-解压缩功能块解压缩所述数据以逆转所述第一压缩对所述数据的效果,从而将所述数据恢复到所述未压缩状态;以及
由所述至少一个压缩-解压缩功能块将使用所述第二压缩进行压缩或处于所述未压缩状态的所述数据提供给所述第二高速缓存存储器以存储在其中。
13.如权利要求12所述的方法,其中:
所述电子装置还包括在所述高速缓存存储器层次结构中的第三高速缓存存储器,所述第二高速缓存存储器在所述层次结构中低于所述第三高速缓存存储器;并且
所述方法还包括:
当从所述第二高速缓存存储器中检索所述数据以存储在所述第三高速缓存存储器中时,当使用所述第二压缩来压缩所述数据时:
由所述至少一个压缩-解压缩功能块解压缩所述数据以逆转所述第二压缩对所述数据的效果,从而将所述数据恢复到所述未压缩状态;以及
由所述至少一个压缩-解压缩功能块将所述数据提供给所述第三高速缓存存储器以存储在其中。
14.如权利要求13所述的方法,其中:
所述第一压缩是较重量级压缩,并且所述第二压缩是较轻量级压缩;并且
使用所述较轻量级压缩来解压缩所述数据比使用所述较重量级压缩来解压缩所述数据更快。
15.如权利要求12所述的方法,其中使用所述第一压缩或所述第二压缩中的一者来压缩所述数据包括:
对所述数据执行所述第二压缩的一个或多个第二压缩操作,所述一个或多个第二压缩操作压缩具有第二性质的数据;并且
当所述第二压缩的所述一个或多个压缩操作由于所述数据不具有所述第二性质而不导致压缩所述数据时,对所述数据执行所述第一压缩的一个或多个第一压缩操作,所述一个或多个第一压缩操作压缩具有第一性质的数据。
16.如权利要求15所述的方法,其中所述第一压缩操作和所述第二压缩操作中的一者或两者包括模式匹配压缩、值匹配压缩、零内容压缩、基于Lempel-Ziv的压缩、马尔可夫压缩和增量压缩中的至少一者。
17.如权利要求15所述的方法,其中当所述第一性质和所述第二性质都不存在于所述数据中使得所述第一压缩和所述第二压缩都不导致压缩所述数据时,所述方法还包括:
将所述数据以所述未压缩状态存储在所述第一高速缓存存储器和所述第二高速缓存存储器中。
18.如权利要求12所述的方法,其中所述方法还包括在使用所述第一压缩或所述第二压缩中的一者来压缩数据之后:
由所述压缩-解压缩功能块更新与所述数据相关联的元数据,以指示所述数据是使用所述第一压缩或所述第二压缩中的相应一者压缩的。
19.如权利要求12所述的方法,其中所述方法还包括:
由所述至少一个压缩-解压缩功能块接收处于所述未压缩状态的其他数据;
由所述至少一个压缩-解压缩功能块使用所述第二压缩和所述第一压缩的序列来压缩所述其他数据,所述第一压缩支持可变输入格式;
在压缩所述其他数据之后,由所述至少一个压缩-解压缩功能块将所述数据提供给所述第一高速缓存存储器以存储在其中;
当从所述第一高速缓存存储器中检索所述数据以存储在所述第二高速缓存存储器中时,解压缩所述其他数据以逆转所述第一压缩对所述其他数据的效果,从而将所述其他数据恢复到所述其他数据仅使用所述第二压缩来压缩的状态;以及
由所述至少一个压缩-解压缩功能块将使用所述第二压缩进行压缩的所述数据提供给所述第二高速缓存存储器以存储在其中。
20.如权利要求12所述的方法,其还包括:
由所述至少一个压缩-解压缩功能块从存储器接收所述数据,所述数据使用第三压缩被压缩以存储在所述存储器中,并且被解压缩以传送到所述至少一个压缩-解压缩功能块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/232,314 US10795825B2 (en) | 2018-12-26 | 2018-12-26 | Compressing data for storage in cache memories in a hierarchy of cache memories |
US16/232,314 | 2018-12-26 | ||
PCT/US2019/037901 WO2020139418A1 (en) | 2018-12-26 | 2019-06-19 | Compressing data for storage in cache memories in a hierarchy of cache memories |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113227987A true CN113227987A (zh) | 2021-08-06 |
Family
ID=71122815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980086040.3A Pending CN113227987A (zh) | 2018-12-26 | 2019-06-19 | 压缩数据以存储在高速缓存存储器层次结构中的高速缓存存储器中 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10795825B2 (zh) |
EP (1) | EP3903193B1 (zh) |
JP (1) | JP7535048B2 (zh) |
KR (1) | KR20210096153A (zh) |
CN (1) | CN113227987A (zh) |
WO (1) | WO2020139418A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11062507B2 (en) * | 2019-11-04 | 2021-07-13 | Apple Inc. | Compression techniques for pixel write data |
KR20220134848A (ko) | 2021-03-26 | 2022-10-06 | 삼성전자주식회사 | 그래픽 처리 장치 및 그의 동작 방법 |
GB2614073B (en) * | 2021-12-21 | 2024-06-05 | Advanced Risc Mach Ltd | Cache systems |
GB2614071B (en) * | 2021-12-21 | 2024-07-17 | Advanced Risc Mach Ltd | Cache systems |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07210324A (ja) * | 1994-01-13 | 1995-08-11 | Hitachi Ltd | 記憶装置 |
US7047382B2 (en) * | 2000-11-29 | 2006-05-16 | Quickshift, Inc. | System and method for managing compression and decompression and decompression of system memory in a computer system |
US7962700B2 (en) * | 2006-09-06 | 2011-06-14 | International Business Machines Corporation | Systems and methods for reducing latency for accessing compressed memory using stratified compressed memory architectures and organization |
US8688654B2 (en) * | 2009-10-06 | 2014-04-01 | International Business Machines Corporation | Data compression algorithm selection and tiering |
JP2011170403A (ja) | 2010-02-16 | 2011-09-01 | Toppan Printing Co Ltd | メモリデータの圧縮・展開システム |
US8217813B2 (en) * | 2010-04-29 | 2012-07-10 | Advanced Micro Devices, Inc. | System and method for low-latency data compression/decompression |
WO2012053015A2 (en) * | 2010-10-22 | 2012-04-26 | Jana, Tejaswini, Ramesh | Compression and decompression of data at high speed in solid state storage |
US9280550B1 (en) * | 2010-12-31 | 2016-03-08 | Emc Corporation | Efficient storage tiering |
US9330001B2 (en) * | 2012-05-21 | 2016-05-03 | Zeropoint Technologies Ab | Cache system and a method of operating a cache memory |
WO2016056104A1 (ja) * | 2014-10-09 | 2016-04-14 | 株式会社日立製作所 | ストレージ装置、及び、記憶制御方法 |
WO2016186563A1 (en) * | 2015-05-21 | 2016-11-24 | Zeropoint Technologies Ab | Methods, devices and systems for hybrid data compression and decompression |
US10037245B2 (en) * | 2016-03-29 | 2018-07-31 | International Business Machines Corporation | Raid system performance enhancement using compressed data and byte addressable storage devices |
-
2018
- 2018-12-26 US US16/232,314 patent/US10795825B2/en active Active
-
2019
- 2019-06-19 CN CN201980086040.3A patent/CN113227987A/zh active Pending
- 2019-06-19 JP JP2021535743A patent/JP7535048B2/ja active Active
- 2019-06-19 EP EP19906191.2A patent/EP3903193B1/en active Active
- 2019-06-19 KR KR1020217019279A patent/KR20210096153A/ko unknown
- 2019-06-19 WO PCT/US2019/037901 patent/WO2020139418A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
KR20210096153A (ko) | 2021-08-04 |
EP3903193A1 (en) | 2021-11-03 |
US10795825B2 (en) | 2020-10-06 |
WO2020139418A1 (en) | 2020-07-02 |
JP2022516000A (ja) | 2022-02-24 |
EP3903193B1 (en) | 2024-07-31 |
EP3903193A4 (en) | 2022-09-28 |
JP7535048B2 (ja) | 2024-08-15 |
US20200210343A1 (en) | 2020-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7535048B2 (ja) | キャッシュメモリの階層内のキャッシュメモリに記憶するデータの圧縮 | |
CN109308192B (zh) | 用于执行存储器压缩的系统和方法 | |
JP4652344B2 (ja) | 圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用したマルチプロセッサ計算システム及び当該システムに利用可能なプロセッサ | |
US6944740B2 (en) | Method for performing compressed I/O with memory expansion technology | |
CN107735773B (zh) | 用于高速缓冲存储标签压缩的方法及设备 | |
CN109154907B (zh) | 在输入-输出存储器管理单元中使用多个存储器元件来执行虚拟地址到物理地址转译 | |
US20220100518A1 (en) | Compression metadata assisted computation | |
JP5733385B2 (ja) | エンディアン変換方法、およびシステム | |
WO2018034767A1 (en) | Method and apparatus for compressing a data set using incremental deltas and a variable reference value | |
US20230153111A1 (en) | Decompression Engine for Decompressing Compressed Input Data that Includes Multiple Streams of Data | |
CN113906389A (zh) | 向访客操作系统提供输入输出存储器管理单元寄存器副本 | |
CN114080587A (zh) | 输入-输出存储器管理单元对访客操作系统缓冲区和日志的访问 | |
CN113272789A (zh) | 由输入输出存储器管理单元进行的域标识符和装置标识符转译 | |
US10831370B1 (en) | Deduplicated and compressed non-volatile memory cache | |
JP2024503229A (ja) | アドレス変換サービスバッファ | |
US10707897B1 (en) | Command processor with multiple string copy engines for a decompression system | |
JP6788566B2 (ja) | コンピューティングシステム及びその動作方法 | |
US11500638B1 (en) | Hardware compression and decompression engine | |
US20240134566A1 (en) | Systems and methods for continuous in-memory versioning | |
Krishnan et al. | Retina: Cross-Layered Key-Value Store for Computational Storage | |
WO2024219988A1 (en) | Method, device, and computer readable storage medium for computation |
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 |