CN107430550B - 非对称集组合的高速缓存 - Google Patents
非对称集组合的高速缓存 Download PDFInfo
- Publication number
- CN107430550B CN107430550B CN201680018905.9A CN201680018905A CN107430550B CN 107430550 B CN107430550 B CN 107430550B CN 201680018905 A CN201680018905 A CN 201680018905A CN 107430550 B CN107430550 B CN 107430550B
- Authority
- CN
- China
- Prior art keywords
- cache
- way
- mapped
- data
- direct
- 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
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
实施例一般地针对包括直接映射高速缓存部分和多路高速缓存部分的非对称集组合的高速缓存。处理器可以包括:一个或多个处理核心,用于数据的处理;以及高速缓冲存储器,用于高速缓存用于所述一个或多个处理核心的来自主存储器的数据,高速缓冲存储器包括第一高速缓存部分和第二高速缓存部分,第一高速缓存部分包括直接映射高速缓存,第二高速缓存部分包括多路高速缓存。高速缓冲存储器包括第一高速缓存部分和第二高速缓存部分中的非对称集,第一高速缓存部分大于第二高速缓存部分。用于高速缓冲存储器的协调替换策略规定第一高速缓存部分和第二高速缓存部分中的数据的替换。
Description
技术领域
在本文中描述的实施例一般地涉及电子设备的领域,并且更特别地涉及非对称集组合的高速缓存。
背景技术
在计算机存储器中,高速缓冲存储器(也简称为高速缓存)可以以各种方式实现,包括直接映射高速缓存和多路高速缓存,在直接映射高速缓存中存储器位置映射到单个位置,在多路高速缓存中存储器位置映射到某位置集。
直接映射高速缓存具有由高速缓存实现的简单而产生的某些优点。在操作中,为了确定是否存在存储器元素,仅需要搜索单个高速缓存位置。然而,直接映射高速缓存具有低关联性的缺点,并且因此钉住(pinning)(锁定高速缓存中的地址)也是有问题的。
相比之下,多路高速缓存可以解决关联性和钉住问题。然而,多路高速缓存更复杂,并且要求更多的搜索以便确定元素是否存在于高速缓存中,因为必须对集中的每个高速缓存位置进行搜索。
此外,多个高速缓存的使用向组件的设计和操作增加了显著的复杂度。
附图说明
在附图中的各图中,这里描述的实施例被图示作为示例,而不是作为限制,在附图中同样的参考数字指的是类似的元件。
图1是根据实施例的非对称集组合的高速缓存的图示;
图2是直接映射高速缓存的图示;
图3是多路高速缓冲存储器的图示;
图4是根据实施例的包括具有协调替换策略的非对称集组合的高速缓存的处理器的图示;
图5是图示组合的高速缓存操作的过程的流程图;
图6A是图示根据实施例的组合的伪LRU的第一部分的计算的流程图;
图6B是图示根据实施例的组合的伪LRU的第二部分的计算的流程图;
图7是图示根据实施例的组合的高速缓存中的替换的优先级(priority)的流程图;以及
图8是包括组合的高速缓冲存储器的电子装置或系统的实施例的图示。
具体实施方式
在本文中描述的实施例一般针对非对称集组合的高速缓存。
为了本说明书的目的:
“高速缓冲存储器”或“高速缓存”意指存储来自另一存储器(诸如来自主存储器)的频繁使用的信息的存储器。
“主存储器”或“初级存储器”是处理器或计算机为了程序和数据而主要访问的计算机存储器。主存储器一般是随机存取存储器(RAM)。
更具体地,CPU高速缓存是由计算机的中央处理单元(CPU)利用以访问频繁使用的地址的高速缓存,并且因此减少对来自主存储器的数据的访问。高速缓存是存储来自频繁使用的主存储器位置的数据的更小更快的存储器。数据高速缓存一般被组织为较多高速缓存级别的层级,其中L1是最接近处理器核心的小且快的高速缓存,其中L2和L3是逐渐更远离CPU的逐渐更大且更慢的高速缓存。
“直接映射高速缓存”或“直接映射存储器高速缓存”意指存储器的任何特定元素被映射到高速缓冲存储器中的某单个高速缓存位置的高速缓存。
“多路高速缓存”或“多路存储器高速缓存”意指存储器的任何特定元素被映射到高速缓冲存储器中的多个高速缓存位置的集的高速缓存。例如,2路存储器高速缓存是主存储器中的特定位置被映射到高速缓冲存储器中的两个存储器位置的集的高速缓存。相比之下,完全关联的高速缓冲存储器是主存储器中的任何特定位置可以被高速缓存到高速缓冲存储器中的任何位置的高速缓冲存储器。
在2LM(两级存储器,包括近存储器和远存储器)技术的特定应用中,用于高速缓存实现的解决方案可以包括:
(1)要求非常大的标签的多路高速缓存(MW)。在非常大的近存储器高速缓存上,维护中央处理单元(CPU)管芯上的所有标签是不现实的
(2)直接映射高速缓存(DM),其中直接映射高速缓存可以将高带宽存储器(HBM)中的备用纠错码(ECC)位用于元数据中的标签(“High Bandwidth Memory(HDM)DRAM”,JEDEC标准JESD235,2013年10月)。
在处理环境中,直接映射高速缓存具有流程简单以及可以将存储器元数据(备用ECC位)用于高速缓存标签的简单实现的优点。然而,直接映射高速缓存具有低关联性的缺点,并且因此钉住(锁定高速缓存中的地址)也是有问题的。相比之下,多路高速缓存可以解决关联性和钉住问题。然而,多路高速缓存一般不能利用存储器元数据位来提供高速缓存所需的高速缓存标签,并且因此可以变得极其大。
这些问题可以至少部分地通过与直接映射高速缓存协同操作的互补多路高速缓存来解决。特定解决方案可以包括将多路高速缓存用作主直接映射高速缓存的“受害者高速缓存”。一般地,受害者高速缓存是用于保存在替换时从CPU高速缓存驱逐的数据(诸如多行高速缓存数据)的高速缓存。因此,如果多路高速缓存充当直接映射高速缓存的受害者高速缓存,则当数据被在直接映射高速缓存中替换时,它被写入到多路高速缓存中。此流程解决了关联性问题,并允许高速缓存中的数据的钉住。然而,实现的代价是主直接映射高速缓存和受害者多用途高速缓存之间的许多传送。
在一些实施例中,单个组合的高速缓存包括第一直接映射部分和第二多路部分,其中直接映射部分和多路部分通过协调替换策略来管理。在一些实施例中,协调替换策略规定新的填充数据可以根据替换策略替换任一高速缓存部分中的数据。以此方式,与受害者高速缓存实现相反,可以避免两个高速缓存之间的数据传送。在一些实施例中,解决方案因此包括利用对两个高速缓存部分寻址的协调替换策略组合这两个解决方案,而在高速缓存部分的数据阵列之间没有任何数据传送。
组合直接映射高速缓存部分和多路高速缓存部分的非对称高速缓存解决方案的实现允许简单的可扩缩性。在一些实施例中,至少部分地通过直接映射高速缓存部分的钉住要求和冲突率中的一个或多个来推导出多路高速缓存部分的大小。这两个高速缓存部分不需要一起缩放,因为钉住要求不在存储器单元之间显著变化,并且直接映射冲突可以用相对小的多路高速缓存来解决。直接映射部分的开销是最小的,并且因此该部分可以以相对低的成本扩展到任何大小。
图1是根据实施例的非对称集组合的高速缓存的图示。在一些实施例中,为了克服直接映射高速缓存和多路高速缓存的相应问题,形成并利用非对称集组合的存储器100(也称为组合的高速缓存)。在一些实施例中,组合的高速缓存100被划分成两个高速缓存部分——第一直接映射部分110(也称为第一高速缓存部分)和第二多路部分120(也称为第一高速缓存部分),其中第一直接映射部分比第二多路部分大。第一高速缓存部分110和第二高速缓存部分120为了简单起见而被图示,并且不意图图示第一高速缓存部分110和第二高速缓存部分120在组合的高速缓存100内的比例或位置。第二多路部分可以是如上面所描述的二路高速缓存,但是实施例不限于多路高速缓存中的特定数目的路。在一些实施例中,组合的高速缓存可操作以高速缓存来自主存储器130的数据。主存储器可以包括但不限于动态随机存取存储器(DRAM)。
图2是直接映射高速缓存的图示。诸如图1中图示的直接映射部分110之类的直接映射高速缓存是存储器的任何特定位置被映射到高速缓冲存储器中的特定高速缓存位置的高速缓存。例如,图2图示了用于高速缓存包含在主存储器230的位置中的数据的直接映射高速缓冲存储器210,其中在此简单示例中,高速缓冲存储器210包括四个高速缓存行并且主存储器230包括16个数据位置。如所图示的,高速缓冲存储器的每个高速缓存行至少包括有效字段(指示为“V”,用于指示任何数据是否已经被存储在高速缓存行中的有效位)、经修改(或脏)字段(指示为“M”,用于指示存储器的对应块是否已经改变的经修改位)、保存条目的标签的标签字段,以及保存高速缓存数据的数据字段。主存储器230的每个位置被映射到单个高速缓存行以用于存储在高速缓冲存储器中。例如,主存储器的位置0001被映射到高速缓冲存储器210的行01。然而,位置0101以及主存储器的某些其它位置也被映射到直接映射高速缓冲存储器210中的相同行01。出于该原因,取决于访问什么存储器位置,可以常常在直接映射高速缓冲存储器中替换数据。
图3是多路高速缓冲存储器的图示。如图3中所示,诸如图1中图示的第二多路部分120之类的多路高速缓冲存储器包括用于高速缓存操作的多路。多路高速缓存可以包括但不限于用于高速缓存来自主存储器330的数据的2路高速缓冲存储器320。利用2路高速缓冲存储器320,主存储器330的每个位置被映射到高速缓冲存储器320的两个高速缓存行。
例如,主存储器330的位置0001被映射到多路高速缓冲存储器110的在两个路中的每个路中的高速缓存行,主存储器330的0001被映射到多路高速缓冲存储器330的行01(路=0并且集=1)和行11(路=1和集=1)。
再次参考图1,组合的高速缓存100可以操作以高速缓存来自主存储器130(诸如图2中图示的主存储器230或图3中图示的主存储器330)的数据。组合的高速缓存100可以是处理器(诸如用于计算系统的CPU)的一部分。在一些实施例中,包括小的多路高速缓存部分和大的直接映射部分的组合的高速缓存仅需要小的管芯上控制阵列(包括用于LRU(最近最少使用)实现的LRU位、有效位V、经修改(脏)位M,以及标签),可被实现为近存储器芯片的元数据。
在非对称集组合的高速缓存的实施例的实现中,可以应用以下特性:
(a)在组合的高速缓存100的高速缓存部分110和120二者中针对高速缓存行(CL)或者如果组合的高速缓存100是分扇区的(sectored)高速缓存则针对分扇区的高速缓存行(SPL)有着相同的大小。
(b)组合的高速缓存100的总大小:
Size_Total = 2n 个CL或2n 个SPL [1]
(c)多路部分120中的集的数目:
Sets_MW = 2m [2]
(d)多路部分120的路的数目:
Ways_MW=2w [3]
(e)用于组合的高速缓存100的大小、集的数目和路的数目的因子之间的关系:
n > m + w [4]。
基于针对组合的高速缓存的等式[1]至[4]中提供的上面的特性,可以推断出以下:
(a)直接映射部分110的大小:
Size_DM = 2n-(2(m + w)) [5]
(b)直接映射集的数目与多路集的数目之间的比率为:
r = (2n – (2(m + w)))/ (2(m+w)) = (2(n - m - w)) - 1 [6]
其中r一直是正整数。
(c)直接映射集的msb(最高有效位)(dmsm)的计算为:
dmsm = 标签 mod r [7]
其中标签(tag)是地址CL_address {最大地址位:n}
(d)值CL/SPL为2l。为了简单起见,CL_address可以被称为地址位{最大地址位:l}或:
CL_address == 地址 >> l(右移,零填充) [8]。
在一些实施例中,主存储器的要高速缓存到非对称集组合的高速缓存的每个地址可以被映射到以下中的每个:
(a)多路集#(CL_address位{m-1:0})中的(2w)路中的一路;以及
(b)直接映射中的单个集是{DMSM || CL_address{n - 1:0}。
因此,将具有相同地址位CL_address {m - 1:0}的集关联到多路部分中的每个集是可能的。换言之,在直接映射部分中存在(r * 2(n – m - w))个集,其被映射到多路高速缓存中的每个集。
在组合的非对称集高速缓存的特定示例中,高速缓存的特性可以是如下:
总存储器:4 M个CL(n = 22);
16路(w = 4);
多路高速缓存:1 M 个CL(m=16);
直接映射高速缓存:3 M 个CL;
CL_address位29:0;
用于多路部分的集为CL_address{15:0};并且
用于直接映射部分的集:(标签mod 3)|| CL_address {19:0}。
针对多路部分中的每个集,存在48个关联集,它们具有相同地址位CL_address{15:0}。这些是:
(标签mod 3 = 0} * CL_address {19:16};
(标签mod 3 = 1} * CL_address {19:16};以及
(标签mod 3 = 2} * CL_address {19:16}。
图4是根据实施例的包括非对称集组合的高速缓存的处理器的图示。在一些实施例中,除了未图示的其它组件之外,处理器400还包括用于处理数据的一个或多个核心430和用于存储频繁使用的数据的一个或多个高速缓冲存储器,其包括非对称集组合的高速缓存405(也被称为组合的高速缓存),该非对称集组合的高速缓存405包括第一直接映射部分410(也称为第一高速缓存部分)和第二多路部分420(也称为第二高速缓存部分),其中第一直接映射部分大于第二多路部分。与图1一样,组合的高速缓存405的第一高速缓存部分410和第二高速缓存部分420为了简单起见而被图示,并且不意图图示第一高速缓存部分410和第二高速缓存部分420在组合的高速缓存405内的比例或位置,或组合的高速缓存在处理器400内的比例或位置。
在一些实施例中,组合的高速缓存405经受用于第一高速缓存部分410和第二高速缓存部分420的协调替换策略450。在一些实施例中,协调替换策略是在本文中可以被称为“组合的伪最近最少使用”(组合的伪LRU或CP-LRU)策略的策略,其中最近最少使用策略以协调的方式应用于存储在第一直接映射部分410和第二多路部分420中的数据。然而,协调替换策略不限于组合的伪LRU实现,并且可以在其它实施例中实现其它替换策略。在一个示例中,替代实施例可以利用随机替换算法,其中被选取用于在第一直接映射部分410或第二多路部分420中的替换的位置是随机选取的。
在协调替换策略450的应用中,应注意的是,LRU应用一般应当在CPU管芯上实现,并且即使每个直接映射集一个位也可能非常昂贵,在64字节的高速缓存行的情况下,对于存储器的每个GB(吉字节),LRU可能需要2 MB(兆字节),或者对于存储器的8GB,LRU可能需要16 MB。在一些实施例中,协调替换策略消除了对于第一直接映射部分410上的LRU位的需要,并且为此目的代之以仅使用第二多路部分420,如图4中的LRU位425所图示的。
在一些实施例中,用于利用LRU替换策略的组合的高速缓存405的协调替换策略450针对组合的高速缓存405的多路部分420中的每个路实现两个LRU位425,以指示最近最少使用(LRU)比较。在一些实施例中,针对某路(这里称为第一路)的2位MW-LRU的位包括:
位0:将第一路与多路部分的其它路的条目进行比较,指示LRU被存储在第一路中(MW-LRU);
位1:将第一路与对应的直接映射位置的条目进行比较,指示LRU位于第一路中(LRU相对DM(LRU-vs-DM));并且
每个直接映射集无LRU位。
然而,实施例不限于特定的位顺序或位数,并且可以包括针对多路部分的路的附加位。
组合的伪LRU策略的实现基于如下事实:在多路条目之间或在多路条目和单个直接映射集之间取得决定。在不同直接映射集之间没有LRU关系,因为直接映射确保主存储器中的任何位置被映射到单个高速缓存位置。
进一步地,要注意,LRU位的数目与多路集的数目成比例,多路集的数目在非对称集组合的高速缓存中小于直接映射集的数目。不要求多路高速缓存部分420的大小随组合的高速缓存的大小线性地按比例增加,并且因此LRU成本比直接映射高速缓存上的常规LRU小得多。此特性对于多GB的近存储器高速缓存非常重要,因为它起作用以显著降低CPU上的高速缓存的物理成本。
在一些实施例中,在访问组合的高速缓存405时,除了查找之外,还存在关于直接映射集选择(地址的位29:26 & 标签mod R)的与所有路的比较。结果是16位向量,称作DM匹配向量。
图5是用于图示组合的高速缓存操作的过程的流程图。在一些实施例中,当访问主存储器中的(涉及CL_address的)存储器地址500时,做出组合的高速缓存中是否存在命中(指示地址存在于组合的高速缓存中)的确定502,组合的高速缓存包括直接映射部分和多路部分,诸如图1中的组合的高速缓存100中图示的。在一些实施例中,做出多路部分中是否存在命中的确定510。在一些实施例中,针对多路部分的查找非常快,由于在CPU管芯上的多路标签的位置以及由于多路高速缓存部分的相对小的大小。如果查找是标签命中,则针对请求者而言从多路高速缓存部分512访问数据。
在一些实施例中,如果多路高速缓存部分中存在未命中510,则存在在直接映射高速缓存部分中存在命中还是未命中的确定520,其可以通过读取直接映射地址并比较用于直接映射高速缓存的元数据标签来执行。然而,实施例不限于针对多路高速缓存部分和直接映射高速缓存部分的特定顺序的查找。在替代实施例中,可以存在针对直接映射高速缓存部分和多路高速缓存部分二者的并行查找过程530。
在一些实施例中,如果在直接映射高速缓存部分中存在未命中540,并且因此在组合的高速缓存的两个部分中都存在未命中,则存在对多路集的LRU以及多路集和直接映射集中的每个集的V(有效)位的检查524。如果这些集的最近最少使用被包含在直接映射部分中540,则从直接映射高速缓存行驱逐该数据并且在那里填充新的数据(即,存储新的数据)542。如果这些集的最近最少使用被包含在多路部分中540,则从多路高速缓存行驱逐该数据并且在那里填充新的数据544。最近最少使用集的位置的确定530可以包括例如图7中图示的优先级的应用。然而,实施例不限于LRU替换策略,并且因此在其它实施例中元素524和540可以实现不同的策略以确定替换位置,在一个示例中包括可以随机地选择直接映射高速缓存部分或多路高速缓存部分的随机替换策略。
图6A是图示根据实施例的组合的伪LRU的第一部分的计算的流程图。如图6A中图示的,在组合的高速缓存上存在命中600时,所述组合的高速缓存包括诸如图1中的组合的高速缓存100中图示的直接映射部分和多路部分,存在LRU位的计算605。在一些实施例中,LRU相对DM位计算如下:
(a)如果目标在组合的高速缓存的DM部分中610,则通过向量选择的路的所有LRU相对DM位被清零(诸如设置为零)615,这指示DM与涉及相同DM集的所有MW条目相比最近被更多地使用。
(b)如果目标在组合的高速缓存的MW部分中610,则设置目标的LRU相对DM位620,这指示MW的目标与DM集相比最近被更多地使用。
图6B是图示根据实施例的组合的伪LRU的第二部分的计算的流程图。在一些实施例中,MW-LRU位计算650如下:
(a)设置目标MW-LRU位655;以及
(b)如果所有其它MW-LRU位都被设置,则使所有其它MW-LRU位清零660。
图7是图示根据实施例的组合的高速缓存中的替换的优先级的流程图。然而,实施例不限于替换的优先级的特定集,并且可以在其它实现中包括其它类型的优先级。在针对包括直接映射高速缓存部分和多路高速缓存部分的组合的高速缓存(例如图1中图示的组合的高速缓存100)的高速缓存未命中的情况下,存在替换直接映射部分或多路部分中的数据的可能性。在一些实施例中,根据协调替换策略的在组合的高速缓存中的高速缓存未命中之后用于数据替换的位置的选取是根据多个优先级来执行的。在一些实施例中,替换的优先级基于包含在直接映射部分和多路部分中的数据的有效性和年龄。
在示例中,替换的优先级可以包括但不限于以下:
针对优先级0(第一最高优先级),如果直接映射高速缓存行无效710(有效数据尚未被存储在直接映射高速缓存行中),则将数据放置在直接映射高速缓存行中715。做这一点为了在有机会时将有效数据存储在直接映射部分中。
如果不,则针对优先级1(第二优先级,其是低于第一优先级的优先级),如果当直接映射高速缓存行有效时任何多路高速缓存行无效720,则在有机会时将数据填入无效的多路高速缓存行中以在这样的位置中存储有效数据725。
如果不,则针对优先级2(第三优先级,其是低于第二优先级的优先级),如果非零DM匹配向量的所有LRU相对DM位是“1”元素730,则替换直接映射部分中的值,因为直接映射条目比所有对应的多路条目更旧735。
如果不,则针对优先级3(第四优先级,其是低于第三优先级的优先级),如果多路值具有为零元素的LRU相对DM和MW-LRU二者740,则替换这样的值745,所述值比其对应的直接映射条目更旧并且它是多路部分中的较旧条目的部分。
如果不,则针对优先级4(第五优先级,其是低于第四优先级的优先级),选取具有有着值零的MW-LRU的多路输入条目755。
图8是包括组合的高速缓冲存储器的电子装置或系统的实施例的图示。在此图示中,未示出与本说明书没有密切关系的某些标准的和公知的组件。示出为分离元件的元件可以被组合,包括例如在单个芯片上组合多个元件的SoC(片上系统)。装置或系统(一般称为系统800)可以包括但不限于计算系统。
在一些实施例中,系统800可以包括诸如耦合到互连802以用于处理信息的一个或多个处理器830之类的处理部件。处理器830可以包括一个或多个物理处理器和一个或多个逻辑处理器。在一些实施例中,处理器可以包括一个或多个通用处理器或专用处理器。除了未图示的许多其它元件之外,处理器830还可以包括一个或多个核心和L1高速缓存832,以及一个或多个L2高速缓存834。进一步地,一个或多个L3高速缓存836可以是处理器830的一部分,可以被安装在母板中,或者可以以其它方式在系统800中实现。
在一些实施例中,处理器830可以包括诸如图3和4中图示的非对称集组合的高速缓存840,组合的高速缓存840包括直接映射部分844和多路部分846,直接映射部分844大于多路部分846。处理器和高速缓存的结构可以根据实现而变化。在一个实施例中,核心与L1、L2和L3高速缓存832-836可与组合的高速缓存840接口连接,并且组合的高速缓存840可与外部互连接口连接。在另一实施例中,来自核心832的I/O访问可以绕过组合的高速缓存840。然而,实施例不限于这些特定实现。在一些实施例中,直接映射部分844和多路部分846经受协调替换策略,在一个示例中诸如基于LRU的替换策略,其可以如图5、6A、6B和7中图示的那样来实现。
互连802是用于传输数据的通信部件。为了简单起见,互连802被图示为单个互连,但是可以表示多个不同的互连或总线,并且到这样的互连的组件连接可以变化。图8中示出的互连802是表示任何一个或多个分离的物理总线、点到点连接或通过适当的桥接器、适配器或控制器连接的二者的抽象。
在一些实施例中,装置800进一步包括随机存取存储器(RAM)或其它动态存储设备或元件作为主存储器806,用于存储要由处理器830执行的信息和指令。主存储器806可以包括但不限于动态随机存取存储器(DRAM)。在一些实施例中,利用一个或多个高速缓存(包括一个或多个组合的高速缓存840)来高速缓存主存储器806中的数据。系统800可以进一步包括一个或多个非易失性存储器元件808,包括例如闪存,用于存储某些元素。系统800还可以包括只读存储器(ROM)810或其它静态存储设备,用于存储用于处理器830的静态信息和指令,以及诸如固态驱动器之类的数据记忆装置812,用于存储数据。
在一些实施例中,系统800包括耦合到互连802的一个或多个发射机或接收机814。在一些实施例中,系统800可以包括一个或多个天线818,诸如偶极或单极天线,用于使用无线发射机、接收机或二者经由无线通信对数据的传输和接收,以及一个或多个端口816,用于经由有线通信对数据的传输和接收。
在一些实施例中,系统800包括用于输入数据的一个或多个输入设备820,其包括硬按钮和软按钮、操纵杆、鼠标或其它定点设备、语音命令系统或手势识别系统。
在一些实施例中,系统800包括输出显示器822,其中显示器822可以包括液晶显示器(LCD)或任何其它显示技术,用于向用户显示信息或内容。在一些环境中,显示器822可以包括也用作输入设备822的至少一部分的触摸屏。
系统800还可以包括电池或其它电源824,其可以包括太阳能电池、燃料电池、充电电容器、近场感应耦合或用于提供或生成装置800中的功率的其它系统或设备。由电源824提供的功率可以按需要分配到系统800的元件。
在上面的描述中,为了解释的目的,阐述了许多具体细节以便提供对所描述的实施例的透彻理解。然而,对于本领域技术人员将显然的是,可以在没有这些具体细节中的一些的情况下实践实施例。在其它实例中,公知的结构和设备以框图形式示出。在所图示的组件之间可能存在中间结构。本文中描述或图示的组件可能具有未图示或描述的附加输入或输出。
各种实施例可以包括各种过程。这些过程可以由硬件组件执行或者可以体现在计算机程序或机器可执行指令中,所述计算机程序或机器可执行指令可用于使通用或专用处理器或用指令编程的逻辑电路执行过程。替代地,可以通过硬件和软件的组合来执行过程。
可以将各种实施例的部分提供为计算机程序产品,所述计算机程序产品可以包括其上存储了计算机程序指令的计算机可读介质,所述计算机程序指令可以用于对计算机(或其它电子设备)进行编程用于由一个或多个处理器执行以实行根据某些实施例的过程。计算机可读介质可以包括但不限于磁盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或适用于存储电子指令的其它类型的计算机可读介质。此外,实施例也可以被作为计算机程序产品来下载,其中程序可以从远程计算机传送到请求计算机。
许多方法被以其最基本的形式描述,但是可以添加过程或从任何方法删除过程,并且可以添加信息或从任何所描述的消息减去信息,而不脱离目前的实施例的基本范围。对于本领域技术人员将显然的是,可以做出许多进一步的修改和改编。特定实施例不是被提供来对概念进行限制,而是为了对它进行说明。实施例的范围将不由上面提供的具体示例确定,而仅由下面的权利要求书确定。
如果说元件“A”耦合到元件“B”或与元件“B”耦合,则元件A可以直接耦合到元件B,或者通过例如元件C间接耦合到元件B。当说明书或权利要求书陈述组件、特征、结构、过程或特性A“导致”组件、特征、结构、过程或特性B时,这意指“A”是“B”的至少一部分原因,但也可能存在帮助导致“B”的至少一个其它组件、特征、结构、过程或特性。如果说明书指示组件、特征、结构、过程或特性“可”、“可能”、或“可以”被包括,则该特定组件、特征、结构、过程或特性不要求被包括。如果说明书或权利要求书指代“一”或“一个”元素,则这并不意指仅存在所描述的元素中的一个。
实施例是实现或示例。本说明书中对“实施例”、“一个实施例”、“一些实施例”或“其它实施例”的引用意指结合实施例描述的特定特征、结构或特性被包括在至少一些实施例中,而不一定被包括在所有实施例中。“实施例”、“一个实施例”或“一些实施例”的各种出现不一定全部指代相同的实施例。应当领会,在示例性实施例的前述描述中,为了流线型化本公开和帮助理解各种新颖方面中的一个或多个的目的,各种特征有时被一起分组在单个实施例、图或其描述中。然而,本公开的该方法将不被解释为反映所要求保护的实施例需要比每个权利要求中明确记载的特征更多的特征的意图。相反,如以下权利要求书所反映的,新颖方面在于少于单个前述公开实施例的所有特征。因此,权利要求书特此被明确地并入本说明书中,其中每个权利要求独立地作为单独的实施例。
在一些实施例中,处理器包括:一个或多个处理核心,用于数据的处理;以及高速缓冲存储器,用于高速缓存用于所述一个或多个处理核心的数据,其中高速缓冲存储器包括:包括直接映射高速缓存的第一高速缓存部分,以及包括多路高速缓存的第二高速缓存部分。在一些实施例中,高速缓冲存储器包括第一高速缓存部分和第二高速缓存部分中的非对称集,第一高速缓存部分大于第二高速缓存部分;并且其中用于高速缓冲存储器的协调替换策略规定第一高速缓存部分和第二高速缓存部分中的数据的替换。
在一些实施例中,在第一高速缓存部分和第二高速缓存部分之间不存在数据的传送。
在一些实施例中,主存储器的每个地址可以被高速缓存在多路部分中的任何路中的位置或者直接映射部分中的单个位置中。
在一些实施例中,协调替换策略包括最近最少使用(LRU)算法的应用。
在一些实施例中,针对多路部分的每一路,用于协调替换策略的位被存储在第二高速缓存部分中。在一些实施例中,针对多路部分的第一路的用于协调替换策略的位包括:第一位,其指示第一路的条目与多路部分的每个其它路的条目的最近最少使用比较;以及第二位,其指示第一路的条目与对应的直接映射位置的条目的最近最少使用比较。
在一些实施例中,多路高速缓存部分的大小不随直接映射部分的大小线性地缩放。
在一些实施例中,多路部分的大小至少部分地基于直接映射部分的钉住要求和冲突率中的一个或多个。
在一些实施例中,针对高速缓冲存储器的总大小为2n个高速缓存行或分扇区的高速缓存行,多路部分中的集的数目为2m,并且多路部分的路的数目为2w,n大于m和w的和。
在一些实施例中,一种方法包括:接收针对主存储器中的存储器地址的访问请求;确定高速缓存中存在针对所述存储器地址的命中还是未命中,其中该高速缓冲存储器包括第一高速缓存部分,第一高速缓存部分包括直接映射高速缓存,以及第二高速缓存部分,第二高速缓存部分包括多路高速缓存,第二高速缓存部分小于第一高速缓存部分;针对在或者第一高速缓存部分或者第二高速缓存部分中的命中,在存在命中的高速缓存部分中访问所请求的数据;以及针对在第一高速缓存部分和第二高速缓存部分二者中的未命中,根据用于第一高速缓存部分和第二高速缓存部分的协调替换策略,替换在或者第一高速缓存部分或者第二高速缓存部分中用于所述存储器地址的数据。
在一些实施例中,主存储器的地址可以被映射到多路部分中的任何路中的位置或者直接映射部分中的单个位置。
在一些实施例中,根据协调替换策略替换数据包括最近最少使用(LRU)算法的应用。
在一些实施例中,该方法进一步包括将用于协调替换策略的位存储在第二高速缓存部分中。在一些实施例中,针对多路部分的第一路的用于协调替换策略的位包括:第一位,其指示第一路的条目与多路部分的每个其它路的条目的最近最少使用比较;以及第二位,其指示第一路的条目与对应的直接映射位置的条目的最近最少使用比较。
在一些实施例中,LRU算法的应用包括用于第一高速缓存部分或第二高速缓存部分中的替换位置的多个优先级。在一些实施例中,所述多个优先级包括:第一优先级,第一优先级规定如果有效数据尚未被存储在直接映射部分的映射条目中,则将要被高速缓存的数据存储在所述映射条目中;第二优先级,第二优先级低于第一优先级,规定如果有效数据尚未被存储在多路部分的映射高速缓存行中,则将要被高速缓存的数据存储在所述映射高速缓存行中;第三优先级,第三优先级低于第二优先级,规定如果直接映射条目比所有对应的多路条目更旧,则将要被高速缓存的数据存储在直接映射部分中的高速缓存行中;第四优先级,第四优先级低于第三优先级,规定如果多路部分的某路的条目比对应的直接映射条目更旧并且它是多路部分中的较旧条目的部分,则将要被高速缓存的数据存储在所述某路的高速缓存行中;以及第五优先级,第五优先级低于第四优先级,规定将要被高速缓存的数据存储在多路部分的任何路的高速缓存行中。
在一些实施例中,一种计算系统包括:主存储器,用于计算系统的数据的存储;发射机和接收机,用于数据的无线传输;发射机和接收机用于数据的无线传输;以及处理器,其包括:一个或多个处理核心,用于数据的处理,以及高速缓冲存储器,用于高速缓存用于所述一个或多个处理核心的来自主存储器的数据,其中组合的高速缓冲存储器包括第一高速缓存部分,第一高速缓存部分包括直接映射高速缓存,以及第二高速缓存部分,第二高速缓存部分包括多路高速缓存。在一些实施例中,高速缓冲存储器是非对称集组合的高速缓存,第一高速缓存部分大于第二高速缓存部分。在一些实施例中,用于高速缓冲存储器的协调替换策略规定第一高速缓存部分和第二高速缓存部分中的数据的替换。
在一些实施例中,主存储器的每个地址可以被高速缓存在多路部分中的任何路中的位置或者直接映射部分中的单个位置中。
在一些实施例中,协调替换策略包括最近最少使用(LRU)算法的应用。在一些实施例中,针对多路部分的每一路,用于协调替换策略的位被存储在第二高速缓存部分中。在一些实施例中,针对多路部分的第一路的用于协调替换策略的位包括:第一位,其指示第一路的条目与多路部分的每个其它路的条目的最近最少使用比较;以及第二位,其指示第一路的条目与对应的直接映射位置的条目的最近最少使用比较。
在一些实施例中,一种非瞬时计算机可读存储介质,其上存储了表示指令序列的数据,所述指令序列在被处理器执行时使得处理器实行包括以下各项的操作包括:接收针对主存储器中的存储器地址的访问请求;确定高速缓存中存在针对所述存储器地址的命中还是未命中,其中该组合的高速缓冲存储器包括第一高速缓存部分,第一高速缓存部分包括直接映射高速缓存,以及第二高速缓存部分,第二高速缓存部分包括多路高速缓存,第二高速缓存部分小于第一高速缓存部分;针对在或者第一高速缓存部分或者第二高速缓存部分中的命中,在存在命中的高速缓存部分中访问所请求的数据;以及针对在第一高速缓存部分和第二高速缓存部分二者中的未命中,根据用于高速缓冲存储器的协调替换策略,替换在或者第一高速缓存部分或者第二高速缓存部分中用于所述存储器地址的数据。
在一些实施例中,主存储器的地址可以被映射到第二高速缓存部分的多路高速缓存的任何路中的位置或者第一高速缓存部分的直接映射高速缓存中的单个位置。
在一些实施例中,根据协调替换策略替换数据包括最近最少使用(LRU)算法的应用。
在一些实施例中,一种装置包括用于接收针对主存储器中的存储器地址的访问请求的部件;用于确定在组合的高速缓存中存在针对所述存储器地址的命中还是未命中的部件,其中组合的高速缓冲存储器包括:第一高速缓存部分,第一高速缓存部分包括直接映射高速缓存,以及第二高速缓存部分,第二高速缓存部分包括多路高速缓存;用于如果在或者第一高速缓存部分或者第二高速缓存部分中存在命中则在高速缓存部分中访问所请求的数据的部件;以及用于如果在第一高速缓存部分和第二高速缓存部分二者中存在未命中则根据用于组合的高速缓存部分的协调替换策略来替换在或者第一高速缓存部分或者第二高速缓存部分中用于所述存储器地址的数据的部件。
在一些实施例中,主存储器的地址可以被映射到第二高速缓存部分的多路高速缓存的任何路中的位置或者第一高速缓存部分的直接映射高速缓存中的单个位置。
在一些实施例中,用于根据协调替换策略替换数据的部件应用最近最少使用(LRU)算法。
Claims (17)
1.一种处理器,包括:
一个或多个处理核心,用于数据的处理;以及
高速缓冲存储器,用于高速缓存用于所述一个或多个处理核心的数据,其中高速缓冲存储器包括:
第一高速缓存部分,其包括直接映射高速缓存,以及
第二高速缓存部分,其包括多路高速缓存;
其中高速缓冲存储器包括第一高速缓存部分和第二高速缓存部分中的非对称集,第一高速缓存部分大于第二高速缓存部分;并且
其中用于高速缓冲存储器的协调替换策略规定第一高速缓存部分和第二高速缓存部分中的数据的替换,
其中协调替换策略包括最近最少使用LRU算法的应用;
其中针对多路高速缓存的每一路,用于协调替换策略的位被存储在第二高速缓存部分中;
其中针对多路高速缓存的第一路的用于协调替换策略的位包括:
第一位,其指示第一路的条目与多路高速缓存的每个其它路的条目的最近最少使用比较;以及
第二位,其指示第一路的条目与对应的直接映射位置的条目的最近最少使用比较。
2.权利要求1的处理器,其中在第一高速缓存部分和第二高速缓存部分之间不存在数据的传送。
3.权利要求1的处理器,其中主存储器的每个地址能够被高速缓存在多路高速缓存的任何路中的位置或者直接映射部分中的单个位置中。
4.权利要求1的处理器,其中多路高速缓存的大小不随直接映射部分的大小线性地缩放。
5.权利要求1的处理器,其中多路高速缓存的大小至少部分地基于直接映射部分的钉住要求和冲突率中的一个或多个。
6.权利要求1的处理器,其中针对高速缓冲存储器的总大小为2n个高速缓存行或分扇区的高速缓存行,多路高速缓存中的集的数目为2m,并且多路高速缓存的路的数目为2w,n大于m和w的和。
7.一种方法,包括:
接收针对主存储器中的存储器地址的访问请求;
确定在高速缓冲存储器中存在针对所述存储器地址的命中还是未命中,其中高速缓冲存储器包括:
第一高速缓存部分,其包括直接映射高速缓存,以及
第二高速缓存部分,其包括多路高速缓存,第二高速缓存部分小于第一高速缓存部分;
针对在或者第一高速缓存部分或者第二高速缓存部分中的命中,在存在针对其的命中的高速缓存部分中访问所请求的数据;以及
针对在第一高速缓存部分和第二高速缓存部分二者中的未命中,根据用于第一高速缓存部分和第二高速缓存部分的协调替换策略来替换在或者第一高速缓存部分或者第二高速缓存部分中用于所述存储器地址的数据,
其中根据协调替换策略替换数据包括最近最少使用LRU算法的应用;
其中针对多路高速缓存的每一路,用于协调替换策略的位被存储在第二高速缓存部分中;
其中针对多路高速缓存的第一路的用于协调替换策略的位包括:
第一位,其指示第一路的条目与多路高速缓存的每个其它路的条目的最近最少使用比较;以及
第二位,其指示第一路的条目与对应的直接映射位置的条目的最近最少使用比较。
8.权利要求7的方法,其中主存储器的地址能够被映射到多路高速缓存的任何路中的位置或者直接映射部分中的单个位置。
9.权利要求7的方法,其中LRU算法的应用包括第一高速缓存部分或第二高速缓存部分中的替换位置的多个优先级。
10.权利要求9的方法,其中所述多个优先级包括:
第一优先级,规定如果有效数据尚未被存储在直接映射部分的映射条目中,则将要被高速缓存的数据存储在所述映射条目中;
第二优先级,第二优先级低于第一优先级,规定如果有效数据尚未被存储在多路高速缓存的映射高速缓存行中,则将要被高速缓存的数据存储在所述映射高速缓存行中;
第三优先级,第三优先级低于第二优先级,规定如果直接映射条目比所有对应的多路条目更旧,则将要被高速缓存的数据存储在直接映射部分中的高速缓存行中;
第四优先级,第四优先级低于第三优先级,规定如果多路高速缓存的某路的条目比对应的直接映射条目更旧并且它是多路高速缓存中的较旧条目的部分,则将要被高速缓存的数据存储在所述某路的高速缓存行中;以及
第五优先级,第五优先级低于第四优先级,规定将要被高速缓存的数据存储在多路高速缓存的任何路的高速缓存行中。
11.一种计算系统,包括:
主存储器,用于对用于计算系统的数据的存储;
发射机和接收机,用于数据的无线传输;以及
处理器,其包括:
一个或多个处理核心,用于数据的处理,以及
高速缓冲存储器,用于高速缓存用于所述一个或多个处理核心的来自主存储器的数据,其中高速缓冲存储器包括第一高速缓存部分,第一高速缓存部分包括直接映射高速缓存,以及第二高速缓存部分,第二高速缓存部分包括多路高速缓存;
其中高速缓冲存储器是非对称集组合的高速缓存,第一高速缓存部分大于第二高速缓存部分;
其中用于高速缓冲存储器的协调替换策略规定第一高速缓存部分和第二高速缓存部分中的数据的替换,
其中根据协调替换策略替换数据包括最近最少使用LRU算法的应用;
其中针对多路高速缓存的每一路,用于协调替换策略的位被存储在第二高速缓存部分中;以及
其中针对多路高速缓存的第一路的用于协调替换策略的位包括:
第一位,其指示第一路的条目与多路高速缓存的每个其它路的条目的最近最少使用比较;以及
第二位,其指示第一路的条目与对应的直接映射位置的条目的最近最少使用比较。
12.权利要求11的系统,其中主存储器的每个地址能够被高速缓存在多路高速缓存的任何路中的位置或者直接映射部分中的单个位置中。
13.一种装置,包括:
用于接收针对主存储器中的存储器地址的访问请求的部件;
用于确定在高速缓冲存储器中存在针对所述存储器地址的命中还是未命中的部件,其中高速缓冲存储器包括:
第一高速缓存部分,其包括直接映射高速缓存,以及
第二高速缓存部分,其包括多路高速缓存;
用于在高速缓存部分中访问所请求的数据的部件,在或者第一高速缓存部分或者第二高速缓存部分中存在针对所述数据的命中;以及
用于针对在第一高速缓存部分和第二高速缓存部分二者中的未命中、根据用于高速缓冲存储器的协调替换策略来替换在或者第一高速缓存部分或者第二高速缓存部分中用于所述存储器地址的数据的部件,
其中根据协调替换策略替换数据包括最近最少使用LRU算法的应用;
其中针对多路高速缓存的每一路,用于协调替换策略的位被存储在第二高速缓存部分中;以及
其中针对多路高速缓存的第一路的用于协调替换策略的位包括:
第一位,其指示第一路的条目与多路高速缓存的每个其它路的条目的最近最少使用比较;以及
第二位,其指示第一路的条目与对应的直接映射位置的条目的最近最少使用比较。
14.权利要求13的装置,其中主存储器的地址能够被映射到第二高速缓存部分的多路高速缓存的任何路中的位置或者第一高速缓存部分的直接映射高速缓存中的单个位置。
15.权利要求13的装置,其中LRU算法的应用包括第一高速缓存部分或第二高速缓存部分中的替换位置的多个优先级。
16.权利要求15的装置,其中所述多个优先级包括:
第一优先级,规定如果有效数据尚未被存储在直接映射部分的映射条目中,则将要被高速缓存的数据存储在所述映射条目中;
第二优先级,第二优先级低于第一优先级,规定如果有效数据尚未被存储在多路高速缓存的映射高速缓存行中,则将要被高速缓存的数据存储在所述映射高速缓存行中;
第三优先级,第三优先级低于第二优先级,规定如果直接映射条目比所有对应的多路条目更旧,则将要被高速缓存的数据存储在直接映射部分中的高速缓存行中;
第四优先级,第四优先级低于第三优先级,规定如果多路高速缓存的某路的条目比对应的直接映射条目更旧并且它是多路高速缓存中的较旧条目的部分,则将要被高速缓存的数据存储在所述某路的高速缓存行中;以及
第五优先级,第五优先级低于第四优先级,规定将要被高速缓存的数据存储在多路高速缓存的任何路的高速缓存行中。
17.一种其上存储有指令的计算机可读介质,所述指令在被执行时使得计算设备实行根据权利要求7-10中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/671,927 US9582430B2 (en) | 2015-03-27 | 2015-03-27 | Asymmetric set combined cache |
US14/671927 | 2015-03-27 | ||
PCT/US2016/017340 WO2016160137A1 (en) | 2015-03-27 | 2016-02-10 | Asymmetric set combined cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430550A CN107430550A (zh) | 2017-12-01 |
CN107430550B true CN107430550B (zh) | 2022-03-01 |
Family
ID=56975479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680018905.9A Active CN107430550B (zh) | 2015-03-27 | 2016-02-10 | 非对称集组合的高速缓存 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9582430B2 (zh) |
EP (1) | EP3274842A4 (zh) |
JP (1) | JP6821879B2 (zh) |
KR (1) | KR102575913B1 (zh) |
CN (1) | CN107430550B (zh) |
TW (1) | TWI632460B (zh) |
WO (1) | WO2016160137A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180095699A1 (en) * | 2016-10-01 | 2018-04-05 | National Tsing Hua University | Memory system, memory device thereof, and method for writing to and reading from memory device thereof |
CN109952565B (zh) * | 2016-11-16 | 2021-10-22 | 华为技术有限公司 | 内存访问技术 |
US10915453B2 (en) | 2016-12-29 | 2021-02-09 | Intel Corporation | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures |
CN108628776B (zh) * | 2017-03-22 | 2022-02-18 | 华为技术有限公司 | 一种数据读写访问控制方法及装置 |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
US11360704B2 (en) | 2018-12-21 | 2022-06-14 | Micron Technology, Inc. | Multiplexed signal development in a memory device |
US11526448B2 (en) * | 2019-09-27 | 2022-12-13 | Intel Corporation | Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning |
US11656997B2 (en) * | 2019-11-26 | 2023-05-23 | Intel Corporation | Flexible cache allocation technology priority-based cache line eviction algorithm |
CN113392043A (zh) * | 2021-07-06 | 2021-09-14 | 南京英锐创电子科技有限公司 | 缓存数据替换方法、装置、设备和存储介质 |
US12117935B2 (en) * | 2022-06-28 | 2024-10-15 | Advanced Micro Devices, Inc. | Technique to enable simultaneous use of on-die SRAM as cache and memory |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1011049A2 (en) * | 1998-12-15 | 2000-06-21 | Nec Corporation | Cache system and cache processing method |
US6425056B2 (en) * | 1998-10-26 | 2002-07-23 | Micron Technology, Inc. | Method for controlling a direct mapped or two way set associative cache memory in a computer system |
CN1949191A (zh) * | 2005-10-14 | 2007-04-18 | 杭州中天微系统有限公司 | 一种低功耗高速缓存的实现方法及其高速缓存器 |
JP2011164975A (ja) * | 2010-02-10 | 2011-08-25 | Fujitsu Ltd | 情報処理装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06110781A (ja) | 1992-09-30 | 1994-04-22 | Nec Corp | キャッシュメモリ装置 |
US5548742A (en) * | 1994-08-11 | 1996-08-20 | Intel Corporation | Method and apparatus for combining a direct-mapped cache and a multiple-way cache in a cache memory |
JP3546788B2 (ja) * | 1999-12-20 | 2004-07-28 | 日本電気株式会社 | メモリ制御回路 |
US7386671B2 (en) | 2000-06-09 | 2008-06-10 | Texas Instruments Incorporated | Smart cache |
US6912623B2 (en) | 2002-06-04 | 2005-06-28 | Sandbridge Technologies, Inc. | Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy |
US7076609B2 (en) * | 2002-09-20 | 2006-07-11 | Intel Corporation | Cache sharing for a chip multiprocessor or multiprocessing system |
TWI269973B (en) * | 2003-10-28 | 2007-01-01 | Ip First Llc | Apparatus and method for early cache miss detection |
US7606994B1 (en) | 2004-11-10 | 2009-10-20 | Sun Microsystems, Inc. | Cache memory system including a partially hashed index |
KR100858527B1 (ko) | 2007-04-18 | 2008-09-12 | 삼성전자주식회사 | 시간적 인접성 정보를 이용한 캐쉬 메모리 시스템 및데이터 저장 방법 |
US8069308B2 (en) | 2008-02-13 | 2011-11-29 | Honeywell International Inc. | Cache pooling for computing systems |
US8838935B2 (en) * | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
DE112011106078B4 (de) * | 2011-12-29 | 2021-01-28 | Intel Corp. | Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff |
US9424194B2 (en) * | 2012-05-01 | 2016-08-23 | International Business Machines Corporation | Probabilistic associative cache |
-
2015
- 2015-03-27 US US14/671,927 patent/US9582430B2/en active Active
-
2016
- 2016-02-10 KR KR1020177023939A patent/KR102575913B1/ko active IP Right Grant
- 2016-02-10 EP EP16773625.5A patent/EP3274842A4/en not_active Withdrawn
- 2016-02-10 WO PCT/US2016/017340 patent/WO2016160137A1/en active Application Filing
- 2016-02-10 JP JP2017544701A patent/JP6821879B2/ja active Active
- 2016-02-10 CN CN201680018905.9A patent/CN107430550B/zh active Active
- 2016-02-18 TW TW105104812A patent/TWI632460B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6425056B2 (en) * | 1998-10-26 | 2002-07-23 | Micron Technology, Inc. | Method for controlling a direct mapped or two way set associative cache memory in a computer system |
EP1011049A2 (en) * | 1998-12-15 | 2000-06-21 | Nec Corporation | Cache system and cache processing method |
CN1949191A (zh) * | 2005-10-14 | 2007-04-18 | 杭州中天微系统有限公司 | 一种低功耗高速缓存的实现方法及其高速缓存器 |
JP2011164975A (ja) * | 2010-02-10 | 2011-08-25 | Fujitsu Ltd | 情報処理装置 |
Non-Patent Citations (1)
Title |
---|
A Design Framework for Hybrid-Access Caches;K. B. Theobald,等;《Proceedings of 1995 1st IEEE Symposium on High Performance Computer Architecture》;19951231;第145页第2栏第2.1节、第147页第3.1节 * |
Also Published As
Publication number | Publication date |
---|---|
TWI632460B (zh) | 2018-08-11 |
JP2018512650A (ja) | 2018-05-17 |
KR102575913B1 (ko) | 2023-09-07 |
US20160283392A1 (en) | 2016-09-29 |
EP3274842A4 (en) | 2018-12-05 |
WO2016160137A1 (en) | 2016-10-06 |
JP6821879B2 (ja) | 2021-01-27 |
US9582430B2 (en) | 2017-02-28 |
CN107430550A (zh) | 2017-12-01 |
EP3274842A1 (en) | 2018-01-31 |
KR20170130388A (ko) | 2017-11-28 |
TW201643724A (zh) | 2016-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430550B (zh) | 非对称集组合的高速缓存 | |
US9218286B2 (en) | System cache with partial write valid states | |
US8392658B2 (en) | Cache implementing multiple replacement policies | |
KR101845371B1 (ko) | 오프-다이 캐시 메모리의 태그들의 세트들을 캐시하기 위한 방법, 장치, 및 시스템 | |
KR101165132B1 (ko) | 멀티-레벨 캐시 계층에서의 캐스트아웃들을 감소시키기 위한 장치 및 방법들 | |
JP2017516234A (ja) | 次の読取りアドレスプリフェッチングによるメモリ容量圧縮および/またはメモリ帯域幅圧縮を利用するメモリコントローラ、ならびに関連するプロセッサベースシステムおよび方法 | |
JP2017516232A (ja) | メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法 | |
CN107743620B (zh) | 用于耗损均衡的非易失性存储器的加速的地址间接表查找 | |
US7809889B2 (en) | High performance multilevel cache hierarchy | |
CN112540939A (zh) | 存储管理装置、存储管理方法、处理器和计算机系统 | |
US20060230235A1 (en) | Low locality-of-reference support in a multi-level cache hierachy | |
US20220374363A1 (en) | Cache memory, memory system including the same and operating method thereof | |
CN110727610B (zh) | 高速缓存存储器、存储系统和高速缓存存储器的逐出方法 | |
US10565111B2 (en) | Processor | |
US10042562B2 (en) | Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device | |
US9251070B2 (en) | Methods and apparatus for multi-level cache hierarchies | |
US11526448B2 (en) | Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 | |
US20190095349A1 (en) | Apparatus, system, and method to determine a cache line in a first memory device to be evicted for an incoming cache line from a second memory device |
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 |