CN109815167A - 用于高效虚拟标记的高速缓存实现的系统和方法 - Google Patents
用于高效虚拟标记的高速缓存实现的系统和方法 Download PDFInfo
- Publication number
- CN109815167A CN109815167A CN201811375097.9A CN201811375097A CN109815167A CN 109815167 A CN109815167 A CN 109815167A CN 201811375097 A CN201811375097 A CN 201811375097A CN 109815167 A CN109815167 A CN 109815167A
- Authority
- CN
- China
- Prior art keywords
- cache
- cache line
- data
- line
- pointer
- 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
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000003860 storage Methods 0.000 claims abstract description 39
- 230000015654 memory Effects 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 21
- 238000013519 translation Methods 0.000 claims description 21
- 230000000694 effects Effects 0.000 claims description 7
- 230000001427 coherent effect Effects 0.000 claims description 4
- 230000000875 corresponding effect Effects 0.000 description 46
- 101150033539 CLB2 gene Proteins 0.000 description 19
- 101100166522 Dictyostelium discoideum cycB gene Proteins 0.000 description 17
- 101100439280 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CLB1 gene Proteins 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 238000000151 deposition Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
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
-
- 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/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/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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
- G06F2015/765—Cache
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开提供一种多处理器系统包括:多个节点和至少一个存储器,每个节点包含至少一个处理器;第一高速缓存,其被配置为存储多个第一高速缓存行,所述第一高速缓存专用于所述多个节点中的至少一个节点;以及第二高速缓存,其被配置为存储多个第二高速缓存行,所述第二高速缓存处于比所述多个第一高速缓存更高的级,其中,所述多个第一高速缓存行中的至少一个包括指向所述多个第二高速缓存行中的一个的位置的第一关联指针,并且其中,所述多个第二高速缓存行中的至少一个包括指向所述多个第一高速缓存行中的一个的位置的第二关联指针。本公开还提供一种用于系统的数据管理方法和计算机可读存储介质。
Description
相关申请的交叉引用
于2017年11月20日向美国专利商标局提交的美国临时申请No.62/588,720通过引用整体并入本文。
技术领域
本发明构思的至少一些示例实施例一般涉及用于访问计算机存储器装置中的数据的方法和系统,更具体地,涉及用于实现一致的高速缓存层次结构(hierarchy)的机制和技术。
背景技术
现今的处理器通常配备有高速缓存,高速缓存可以存储被存储在某些高容量存储器中的数据的副本和指令的副本。这种高容量存储器的现今流行的示例是动态随机存取存储器(DRAM)。在本文中,术语“存储器”将用于共同指代所有现有和未来的存储器实施方式。高速缓冲存储器,或简称为“高速缓存”,通常由比其他存储器实施方式小得多且快得多的存储器构建,并且随后可以在任何给定时间仅保持存储在主存储器或辅助存储装置中的数据中的一小部分的副本。今天,高速缓存通常使用SRAM实现,并且可以使用DRAM实现大型高速缓存。可以使用任何现有和未来的存储器技术来实现本文描述的高速缓存。
通常,计算机系统的存储器系统包括一系列高速缓存,其中较大和较慢的高速缓存(这里称为较高级高速缓存)靠近主存储器并且较小和较快的高速缓存(这里称为较低级的高速缓存)靠近处理器。该配置通常称为高速缓存层次结构、存储器层次结构或存储器系统。高速缓存层次结构中的每个级称为高速缓存级。图1是示出计算机系统的一部分的框图。在图1所示的示例中,计算机系统是多处理器系统,其中每个CPU 101被分配其自己的第一级专用高速缓存102(L1高速缓存)。下面参考图2描述CPU 101和L1高速缓存102的更详细示例。专用高速缓存是这样一种高速缓存,其中数据单元的空间只能响应高速缓存本地的CPU(或位于与高速缓存相同的节点中的CPU,其中高速缓存是该节点专用的)的活动。在该示例中,第二级高速缓存103由所有CPU 101共享,并且可以包含由所有CPU 101访问的数据和指令。因为可以使数据单元的空间响应于任何CPU 101的活动,所以高速缓存103是全局高速缓存。此外,高速缓存103是共享高速缓存,因为每个数据单元只能存在于一个共享副本中(而每个专用高速缓存可以具有其自己的复制副本)。存储器105还存储由所有CPU 101访问的指令和数据。通常使用物理地址(或简称为PA)来访问(主)存储器105,而由CPU 101产生的地址通常是虚拟地址。例如图1所示的系统,具有多个CPU和多个专用高速缓存的计算机系统,需要一种有效机制,在各个高速缓存中的一个高速缓存中找到所请求的数据单元,以及保持在不同节点中存储的数据的多个副本是一致的。
除了主存储器和高速缓冲存储器之外,这种计算机系统通常还包括一个或多个辅助存储装置。这些辅助存储装置可以包括硬盘驱动器、光盘驱动器、闪存驱动器等中的一个或多个,这里由磁盘104共同表示。磁盘或辅助存储器104可以存储比存储器105多几个数量级的数据,但不能使用物理地址直接访问。如果CPU 101想要访问存储在磁盘104上的数据,则虚拟存储器系统(图1中未示出)将大块数据(通常称为页面)从磁盘104移动到存储器105,并创建从与该页面对应的虚拟地址到物理地址的转译。特殊类型的转译高速缓存(图1中未示出)(通常称为“转译后备缓冲器(translation look-aside buffer)”或简称TLB)对从虚拟页面到物理页面的转译映射进行高速缓存。虚拟存储器系统可以被视为高速缓存系统,其将位于磁盘104中的数据的一部分存储在存储器105中。
图2是用于解释计算机系统的示例高速缓存层次结构的框图。图2示出了来自图1的高速缓存组织的更详细视图,CPU 101被示出包含多个类高速缓存的结构,例如指令TLB(ITLB,201)和数据TLB(DTLDB,205),以及CPU核202。1级高速缓存102被示出为包括插入在CPU 101和2级(以及可能更高级)高速缓存207之间的指令高速缓存200和数据高速缓存206。图2还示出了连接到高速缓存层次结构的高容量存储器208。但是,图2中的计算机系统被示为单处理器(即,单一处理器)系统。图2中的计算机系统可以是多处理器系统的一部分。
当CPU 101请求存在于高速缓存中的数据(称为高速缓存命中)时,相比于对不存在于高速缓存中的数据的访问(称为高速缓存未命中),该请求可以快得多地得到服务。通常,运行在CPU 101上的经历较少高速缓存未命中的应用程序将比承受更多高速缓存未命中的相同应用程序更快地执行并且消耗更少的能量(假设这两个版本的应用程序具有相似的属性)。因此,已经在用于避免高速缓存未命中的技术上投入了相当大的努力,并且还设计了这样的实施方式:其可以使高速缓存命中和高速缓存未命中在访问延迟和这些存储器事务消耗的能量方面是高效的。
为了理解如何开发针对这种高速缓存命中/未命中问题的解决方案,对高速缓存组织和术语的一些理解将是有用的。通常,数据以大于处理器的字大小的固定块的形式安装到高速缓存中,称为高速缓存行。现今的常见的高速缓存行大小例如是32、64和128字节,但是如本领域技术人员将理解的,对于各种高速缓存实施方式存在更大和更小的高速缓存行大小。对于某些高速缓存实施方式,高速缓存行大小也可以是可变的。
组织存储器208中的数据放置的常见方式是以每个数据字被静态映射以驻留在一个特定高速缓存行中的方式。每个高速缓存通常具有索引功能,索引该功能识别高速缓存中每个高速缓存行可以驻留的部分,其被称为组。组可以包含用于同时保持一个或多个高速缓存行的空间。组可以保持的高速缓存行的数量被称为其关联性。通常,高速缓存中所有组的关联性是相同的。此类高速缓存通常称为组关联高速缓存。关联性也可以在组之间变化。组中可以保持高速缓存行的每一个空间被称为路。
为了确定存储在每个组中的每个高速缓存行的标识,高速缓存中的高速缓存行各自具有与它们相关的一些标识符。这种标识符的一个常见示例是地址标记。在高速缓存中查找特定高速缓存行时,其地址可用于确定它可驻留的高速缓存的组。将对应组的高速缓存行的地址标记与用于识别高速缓存行的地址的标记部分进行比较(参见例如在图3中描绘并在下文描述的标记和ATAG)以确定期望的高速缓存行是否驻留在高速缓存中,如果驻留在高速缓存中,则确定其驻留在哪一路中,即,其驻留在能够保持高速缓存行的组中的哪个空间。
通常,每个高速缓存具有内置策略以确定将哪个高速缓存行保留在组中以及哪个高速缓存行被驱逐(也称为替换)以为要被引入组的新的缓存行腾出空间,这被称为替换政策。被替换的高速缓存行称为牺牲高速缓存行或被替换高速缓存行。与高速缓冲存储器结合使用的流行替换策略包括(但不限于)最近最少使用(LRU)、伪LRU和随机替换策略。
包容型高速缓存层次结构要求存在于一个高速缓存级中的数据块(例如高速缓存行)的副本,例如L1高速缓存中的数据块的副本,也存在于更高高速缓存级中(这里,更高指的是数字高于1的高速缓存级),例如在L2和L3高速缓存中。独占型高速缓存层次结构仅具有存在于整个高速缓存层次结构中的数据块(例如高速缓存行)的一个副本,而非包容型层次结构可具有两种策略的混合。在独占型和非包容型高速缓存层次结构中,通常在从给定高速缓存级驱逐时,在下一更高的高速缓存级中安装高速缓存行。
记住高速缓存和高速缓存行的这种背景,现在讨论继续以说明用于识别如类似于图1和图2所示的高速缓存层次结构内的特定高速缓存位置的一种传统技术。图3是用于解释包括组关联高速缓存和组关联数据转译后备缓冲器(TLB)的两级高速缓存层次结构的传统实施方式的框图。图3示出了包含CPU 301、DTLB 303、L1高速缓存307和L2高速缓存311的计算机系统节点的组织示例。CPU 301生成包含虚拟地址302(VADDR)的存储器请求,其用于在DTLB 303中执行关联查找。在该示例中,虚拟地址302被分成三个部分:P_OFFSET(页面偏移,例如由低级位组成)、标记和索引。虚拟地址302的索引部分用于识别DTLB 303内可以存储地址转译的组。
所示出的在该示例中使用的DTLB 303具有双向关联组织,其示出了所识别组的两个条目。每个条目由地址标记(ATAG)304和物理页面帧(PPF)305组成。将虚拟地址302的标记部分与所识别的组的每个条目的ATAG 304进行比较。逻辑318确定是否存在针对任何条目的匹配,并且如果存在,则控制MUX 306选择对应的PPF 305。通过将由MUX 306选择的PPF305与虚拟地址302的P_OFFSET部分连接在一起组成物理地址PADDR 316。可替换地,如果所识别的组的条目都不与虚拟地址302的标记部分匹配,则执行TLB填充操作,并且将所需的转译条目引入DTLB 303。
PADDR 316用于在L1高速缓存307中执行查找。更具体地,PADDR 316的索引部分用于识别可以存储包含所请求数据的高速缓存行的组。(应该注意,该L1索引可以包含与DTLB索引不同的位)。所描绘的L1高速缓存307具有双向关联组织,其中在所识别的组中具有两个条目。每个条目由地址标记(ATAG)308和对应高速缓存行的数据309组成。将PADDR 316的标记部分与所识别的组的每个条目的ATAG进行比较。逻辑319确定是否存在针对任何条目的匹配,并控制MUX 310选择对应的数据。如果条目都不匹配(由L1未命中317表示),则需要在L2高速缓存311中进行查找。虽然针对L2高速缓存查找将PADDR 316划分为索引和标记部分可能与针对L1高速缓存查找所做的划分不同,但是针对L2高速缓存查找的剩余步骤通常类似于针对L1高速缓存中的查找执行的步骤。如果确定L2高速缓存中的未命中,则可能需要在更高级高速缓存中的新的查找或对存储器进行访问。可以注意到,如果L1高速缓存使用的PADDR 316的索引部分完全由P_OFFSET位组成,则可以在来自MUX 306的PPF信息可用之前就开始对L1高速缓存307的访问。这通常被称为虚拟索引的物理标记的(VIPT)高速缓存。
本领域技术人员将理解,各自具有与图3中所示的存储器层次结构类似的存储器层次结构的多个“节点”,可以连接在一起以形成一致的多处理器系统。图1中示出了多处理器的另一个示例,其中每个CPU具有自己的专用L1高速缓存。这进一步使定位所请求数据所驻留的位置的任务变得复杂,因为其不再足以始终在下一更高的高速缓存级中搜索数据。需要用于搜索其他节点的高速缓存以及用于保持存储在不同节点中的基准(datum)的多个副本一致的机制。通常,将实现全局高速缓存一致性协议以保持每一高速缓存行的数据值一致。这种协议将向不同的高速缓存发送一致性消息(有时称为一致性请求)。例如,图1和图2的L1高速缓存可以从一致性协议接收读取请求或无效请求。这种一致性请求通常携带用于识别所请求的高速缓存行的物理地址。
图5是示出用于实现高速缓存的三个选项的框图。图5示出了三个高级的高速缓存实施方式选项。用于在L1高速缓存307中查找数据的功能由物理索引的物理标记(PIPT)高速缓存500描述。虚拟地址VA 502的一部分用于在TLB 503中执行查找以获得物理页面帧(PPF),其部分地用于形成用于访问L1高速缓存505的索引504。将PPF的一些其他部分与由索引504识别的L1高速缓存505中的组的物理地址标记PAT进行比较(示出了双向关联高速缓存)。比较的结果用于选择与CPU核501访问的虚拟地址(VA)502相关的数据。
VIPT高速缓存510可以提供对与CPU核生成的虚拟地址512相关的数据的更快访问时间,因为它仅使用虚拟地址位来形成其索引514。在TLB 513中的查找(用于发现对应的物理页面帧PPF)可以与从L1高速缓存515中索引的组读出两个物理地址标记(PAT)并行执行。因为TLB访问与PAT查找并行执行,相比于在PIPT高速缓存500中,与虚拟地址512相关的路可被更快地访问。为了使VIPT高速缓存510实用,通常存在对这种高速缓存施加的大小限制。高速缓存大小及其关联性的组合必须使得当TLB 513将虚拟地址512转译为物理地址时不应有索引514的位被转译。例如,如果计算机系统的页面大小为4K字节,则用于索引功能的位只能是虚拟地址的较低的12位。
图5中所示的最顶部高速缓存520是虚拟索引的虚拟标记(VIVT)高速缓存。最顶部的高速缓存520针对其索引位524和地址位523仅使用虚拟地址522的位,以与L1高速缓存525的索引地址标记进行比较。随后,存储在L1高速缓存525中的地址标记是存储虚拟地址位的虚拟地址标记(VAT)。VIVT高速缓存520具有优于其他两种高速缓存的多个优点。首先,访问L1 520不需要TLB转译,这为L1命中节省了能量,目前L1命中是存储器层次结构中最常见的访问类型。其次,它可以比PIPT高速缓存500更快地访问,因为其索引位524不需要TLB查找。最后,它没有大小限制。
然而,存在VIVT高速缓存所带来的新问题需要解决。首先,可使用不同的虚拟地址引用相同的物理高速缓存行。如果针对同一物理高速缓存行存储多个虚拟副本,则会导致VIVT高速缓存的同义词(synonyms)问题。此问题通常通过强制机制来处理,该机制保证两个或多个同义词高速缓存行不能同时驻留在VIVT高速缓存中。其次,不同进程使用的相同虚拟地址可以指代不同的物理高速缓存行。这被称为混淆(al iasing)问题。如果由CPU核521生成的虚拟地址522包括一些进程标识符(通常称为地址空间标识符),则可以处理混淆问题。当(例如图1所示的)多核系统中存在多个专用高速缓存时引入第三个问题。L2和更高级的高速缓存通常是PIPT类型,并使用物理地址进行寻址。因此,这些L2高速缓存和L1高速缓存之间的任何通信通常都携带物理地址。这种通信的示例包括(但不限于)由一致性协议生成的一致性请求,以及对强加在L1高速缓存和L2高速缓存与更高级高速缓存之间的某包含属性引起的所谓的反向无效(back-invalidate)请求。虽然PIPT高速缓存和VIPT高速缓存都可以基于物理地址执行高速缓存查找,并找到此类外部请求所针对的高速缓存行,但是无法使用物理地址访问VIVT高速缓存。
图4是示出少标记(tag-less)高速缓存的示例实施方式的框图。作为背景信息,图4描绘了少标记高速缓存的可能的实施方式。这样的高速缓存可以依赖于与匹配的高速缓存表条目CTE(有时称为区域位置)的所请求的高速缓存行对应的位置信息LI(有时称为高速缓存行指针(CP)),以指示所请求的高速缓存行驻留在哪个高速缓存中,以及驻留在该高速缓存中的哪个位置。这将导致某些系统在适当的高速缓存中执行直接高速缓存查找。例如,在图4所示的系统(可以是多处理器系统中的节点)中,位置信息可以在L1高速缓存和L2高速缓存之间进行区分。其还能够在存在于多处理器系统的其余部分中的其他高速缓存(图4中未示出)之间进行区分。图4示出了可以连接到多处理器系统中的其他节点的少标记节点,该多处理器系统具有两级高速缓存层次结构的组关联高速缓存和CPU(其可以包含一个或多个传统高速缓存,这里描述为L0),其中CPU 401生成地址(ADDR)402。图4还示出了两级高速缓存位置缓冲器(CLB)(有时也称为元数据高速缓存-MD高速缓存)层次结构的组关联CLB,其中通过ADDR索引第一级CLB CLB1 410和第二级CLB CLB2 420。如在本公开中使用的,术语“CLB1”可以指代第一级CLB,术语“CLB2”可以指代第二级CLB。CLB1 410中的每个条目至少包括地址标记(AT)411和高速缓存位置表(CLT)412。其可以存储附加信息,例如区域信息(RI)413。CLT 412存储对应区域(也称为微页面)的高速缓存行的位置信息(LI)。图4示出了每个区域四个LI作为示例。发明人的经验研究表明,每个区域8到16个LI(即每个区域8到16个数据单元(高速缓存行))具有成本效益和效率。位置信息对可在多处理器系统中找到的对应高速缓存行的位置进行编码。例如,位置信息可以包含可在其中找到数据单元的高速缓存的标识。位置信息还可以包含可在该高速缓存内找到数据单元的位置。可替换地,位置信息可以包含可在其中找到数据单元的节点的标识,或者包含提供关于其位置的信息的一些符号,例如符号“MEM”表示可以在存储器中找到数据单元。在至少一些情况下,符号“不知道”可以指示对应数据单元的位置未记录在与该区域对应的CLT中。
MUX 416选择具有与ADDR 402的标记部分匹配的AT 411的CLT,并且MUX 415基于ADDR 402的L-OFFSET部分选择与所请求的高速缓存行对应的LI 414。如果存储在所选择的LI中的高速缓存标识对应于L2高速缓存440,则使用地址402的索引部分和位置信息414的一部分形成用于访问L2高速缓存440中的所请求数据单元的地址417。在组关联L2高速缓存440的示例中,该部分包含与存储所请求的数据单元的关联路相对应的信息。如果存储在所选择的LI中的高速缓存标识对应于L1高速缓存430,则以类似的方式形成用于访问L1高速缓存430中的所请求的数据单元的地址418。
在图4中所示的示例中,L1高速缓存430和L2高速缓存440中的每个条目具有与其高速缓存行(DATA)(分别为431和441)关联的向后指针(BP)(分别为432和442)。在该示例中,BP指针指向CLB2 420中它们各自关联的CTE。CLB2 420中的每个CTE包含地址标记(AT)421、CLT 422和CLB1指针(CIP)423。如果CLB2条目具有驻留在CLB1 410上的对应的CLT,则其CIP将指向该条目。在这种情况下,CLB1 410将包含针对该区域的最新信息。在这种情况下,CLB1中的CLE被称为主动CLB条目,而CLB2 420中的区域的CLB条目包含被动条目。如果CLB1 410包含针对区域的主动条目,则会需要CLB2 420包含针对该区域的被动条目。
当在CLB1 410中找不到匹配的CTE时,可以在CLB2 420中查找对应的CTE并将其复制到CLB1,而将CLB1中的旧条目复制到CLB2420,这被称为溢出和填充或简单地表示为溢出/填充(图4中的溢出和填充)。例如,例如当传统的包容型高速缓存将数据单元驱逐到下一级以为新数据单元腾出空间时,也执行溢出,新数据单元可以从下一个高速缓存级引入(填充)。类似的溢出/填充活动将在不同的CLB级之间执行,其中CLB条目在CLB级之间移动,因为CLB级形成包含型层次结构。目录DIR可以位于CLB层次结构的根目录,并使用最高级的CLB进行溢出/填充。
可以与溢出/填充活动并行地发起对所请求的数据单元的访问。
多级CLB实施方式的CLB的内容可以与它们管理的多级高速缓存系统的数据单元的位置保持一致。在高速缓存层次结构中移动的数据单元(包括但不限于来自CPU的对数据单元的请求所引起的移动、数据单元的驱逐、预取活动和一致性活动)导致对其在一个或多个CLB中的对应位置信息的更新。例如,在图4中,从高速缓存440驱逐数据单元441可以包括以下步骤:跟随其相关的BP 442指针以找到其对应的CTE(其在该示例中处于CLB2 420中)并更新其对应的位置信息以指向(例如,存储MEM符号的)数据单元的新位置。并且,如果对应CLB2的CLE的CIP指针有效,则跟随CIP在CLB1 410中找到其对应的CTE并更新其与高速缓存行关联的位置信息。如果存在有效的CIP指针,则可能不会更新CLB2中的条目。例如,可以更新CLT使得仅更新主动CLT。
从前文的描述可以理解,使用上面提到的少标记高速缓存系统(即,存储在高速缓存中的数据单元不具有与之关联的地址标记的高速缓存系统)将导致当CPU 401请求位于不同存储装置中的各种高速缓存行时将发生的许多不同类型的事务。图4中所描绘的节点可以是由多个这样的高速缓存节点组成的更大的多处理器系统的子系统(或节点)。保持多个节点中的高速缓存的数据一致需要高速缓存一致性协议,例如实现监听(snooping)或基于目录的一致性。一致性协议将一致性请求发送到图4所描绘的节点(外部请求)。这些请求通常首先转向CLB2 420,CLB2 420可以确定该高速缓存系统不具有所请求的高速缓存行(CLB2未命中或CLB2命中具有非主动(inactive)CIP的条目并且所请求高速缓存行的位置信息保持了数值存储器模式)。如果是这样,则不需要关于数据高速缓存L1和L2的进一步动作(称为一致性过滤),但是仍然需要更新主动CLT中的对应LI以跟踪与该数据单元关联的新位置。否则,CLB2查找可以提供所请求的位置信息(CLB2命中并且所请求的高速缓存行的位置信息保持了存储高速缓存行的位置),或者其可以确定CLB1 410存储关联的位置信息(CLB2命中和有效的CIP)。在后一种情况下,需要在CLB1 410中进行查找以确定所请求的高速缓存行的位置或者高速缓存行没有驻留在该高速缓存子系统中。(在CLB1中的对应位置信息包含存储器模式)。根据一致性请求的性质,例如无效请求、读取请求或独占读取请求,一致性协议将对所请求的数据单元执行一些操作并可能改变其状态。可能还需要更新主动CLT中的对应LI以跟踪与数据单元关联的新位置。
虽然图4中所示的节点由两个高速缓存级组成,但是本领域技术人员将理解,可以使用其他数量的级来组装节点,并且节点可以包含不止一个的CPU。此外,节点中的高速缓存级的数量和CLB级的数量不需要相同。
总结以上关于图3和图5的讨论,本领域技术人员将理解,高速缓存层次结构的当今的实施方式在可以确定所请求的高速缓存行的位置之前可能需要在TLB中以及不同高速缓存级执行许多关联查找。此外,每个转译条目和被高速缓存的高速缓存行需要伴随地址标记,并且需要将多个这些标记与这些级中的每一个的地址的一部分进行比较。总的来说,在用于每一关联查找的动态能量方面,该实施方式可能会花费相当大的成本。它还需要静态能量和存储器容量的大量开销来存储执行比较所需的额外标记信息。此外,各自具有自己专用的高速缓存层次结构的、包含多个CPU或多个节点的多处理器需要额外代价的搜索机制来定位驻留在专用高速缓存中的数据,以及需要有代价的一致性活动来保持专用高速缓存中相同数据的复制副本一致。
因此,可能期望提供避免与针对数据和指令的TLB查找相关的上述问题和缺点的系统和方法。例如,如果可以使用虚拟地址而不是物理地址来访问其较低级高速缓存(例如,L1高速缓存)中的数据和指令,则可能是有利的。如果在低级高速缓存中的数据和指令的地址标记包含虚拟地址标记,则可以实现进一步的实施效率。这样,对于L1命中,可以完全避免TLB施加的额外延迟和能量消耗,L1命中是迄今为止对存储器层次结构的最常见类型的存储器访问。为了实现这一点,需要针对物理标记的L2和更高级高速缓存如何与虚拟标记的L1高速缓存进行交互的解决方案。
发明内容
根据本发明构思的至少一个示例实施例,高速缓存行存储在多处理器系统的节点中的专用高速缓存中,每个节点包含至少一个处理器(CPU),至少一个高速缓存专用于该节点。根据一个实施例,节点中的核可使用虚拟地址访问节点专用的高速缓存,其被称为虚拟高速缓存。所述核以及从该系统中的其他核发出的请求可使用物理地址访问该系统中的另一高速缓存,其被称为物理高速缓存。为了解决这种虚拟访问的高速缓存通常存在的转译问题,虚拟高速缓存中的每个高速缓存行位置存储与其高速缓存行关联的高速缓存行指针(CP),其中所述指针识别物理高速缓存中的高速缓存行位置。同样,物理高速缓存中的每个高速缓存行位置存储与其高速缓存行关联的高速缓存行指针(CP)。由虚拟高速缓存中的高速缓存行位置的高速缓存行指针所指向的物理高速缓存中的高速缓存行位置,将具有指向虚拟高速缓存中的高速缓存行位置的高速缓存行指针。
根据本发明构思的至少一些示例实施例,多处理器系统包括多个节点和至少一个存储器,每个节点包含至少一个处理器;第一高速缓存,其被配置为存储多个第一高速缓存行,所述第一高速缓存专用于所述多个节点中的至少一个节点;以及第二高速缓存,其被配置为存储多个第二高速缓存行,所述第二高速缓存处于比所述第一高速缓存更高的级,其中,所述多个第一高速缓存行中的至少一个包括指向所述多个第二高速缓存行中的一个的位置的第一关联指针,并且其中所述第二高速缓存行中的至少一个包括指向所述第一高速缓存行中的一个的位置的第二关联指针。
根据本发明构思的至少一些示例实施例,一种用于系统的数据管理方法,所述系统包括至少一个节点,所述至少一个节点包括分配有第一高速缓存、第二高速缓存和存储器的处理器,所述第一高速缓存存储多个第一高速缓存行并且对于所述至少一个节点是专用的,并且所述第二高速缓存存储多个第二高速缓存行并且处于比所述第一高速缓存更高的级,所述数据管理方法包括:将指向所述多个第二高速缓存行中的一个的位置的第一关联指针存储在所述多个第一高速缓存行中的一个中;并且将指向所述第一高速缓存行的位置的第二关联指针存储在由所述第一关联指针所指向的所述多个第二高速缓存行中。
根据本发明构思的至少一些示例实施例,一种包括计算机可执行指令的非暂时性计算机可读存储介质,当由被分配有虚拟标记的高速缓存、物理标记的高速缓存和存储器的至少一个处理器执行所述指令时,使得所述至少一个处理器执行包括以下步骤的操作:将指向存储在所述物理标记的高速缓存中的多个第二高速缓存行中的一个的位置的第一关联指针存储在所述虚拟标记的高速缓存中的多个第一高速缓存行中的一个中;并且将指向所述多个第一高速缓存行中的一个的位置的第二关联指针存储在所述多个第二高速缓存行中的一个中。
附图说明
通过参考附图详细描述本发明构思的示例实施例,本发明构思的示例实施例的以上和其他特征和优点将变得更加明显。附图旨在描述本发明构思的示例实施例,并且不应被解释为限制权利要求的预期范围。除非明确说明,否则附图不应视为按比例绘制。
图1是示出计算机系统的一部分的框图。
图2是用于解释计算机系统的示例高速缓存层次结构的框图。
图3是用于解释包括组关联高速缓存和组关联数据转译后备缓冲器(TLB)的两级高速缓存层次结构的传统实施方式的框图。
图4是示出少标记高速缓存的示例实施方式的框图。
图5是示出用于实现高速缓存的三个选项的框图。
图6是根据本发明构思的至少一些示例实施例的用于解释两级高速缓存层次结构的实施方式的框图,其中第一级是虚拟索引虚拟标记的高速缓存,第二级是物理索引物理标记的高速缓存。
图7是根据本发明构思的至少一些示例实施例的用于解释三级高速缓存层次结构的实施方式的框图,其中第一级是虚拟索引虚拟标记的VIVT高速缓存,并且第二级和第三级是少标记物理索引的无标记(no tag)PINT高速缓存。
图8是根据本发明构思的至少一些示例实施例的用于解释三级高速缓存层次结构的实施方式的框图,其中第一级是少标记虚拟索引的无标记VINT高速缓存,第二级和第三级是少标记物理索引的无标记PINT高速缓存。
具体实施方式
如根据本发明构思的领域的传统那样,在功能块、单元和/或模块方面描述并且在附图中示出了实施例。本领域技术人员将理解,这些块、单元和/或模块通过电子(或光学)电路物理地实现,例如可以使用基于半导体的制造技术或其他制造技术形成的逻辑电路、分立组件、微处理器、硬连线电路、存储器元件、布线连接等。在由微处理器或类似物实现的块、单元和/或模块的情况下,可以使用软件(例如,微代码)对它们进行编程以执行本文所讨论的各种功能,并且可以可选地由固件和/或软件驱动。可替换地,每个块、单元和/或模块可以由专用硬件实现,或者可被实现为执行某些功能的专用硬件和执行其他功能的处理器(例如,一个或多个编程的微处理器和相关电路)的组合。而且,在不脱离本发明构思的范围的情况下,实施例的每个块、单元和/或模块可以在物理上分成两个或更多个交互且离散的块、单元和/或模块。此外,在不脱离本发明构思的范围的情况下,实施例的块、单元和/或模块可以物理地组合成更复杂的块、单元和/或模块。
在虚拟标记的高速缓存和物理标记的高速缓存(下文中简称为虚拟高速缓存和物理高速缓存)之间进行接口通信和交互的一般问题是它们不讲相同的“语言”,而是虚拟高速缓存和物理高速缓存分别按其虚拟名称或物理名称调用相同的高速缓存行。每次在虚拟高速缓存和物理高速缓存之间存在交互时,在虚拟和物理地址空间之间执行完全转译需要新的复杂且昂贵的硬件。
图6是根据本发明构思的至少一些示例实施例的用于解释两级高速缓存层次结构的实施例的框图,其中第一级是虚拟索引虚拟标记(VIVT)的高速缓存,第二级是物理索引物理标记(PIPT)的高速缓存。根据本发明构思的至少一些示例实施例,图6中示出的示例提供了一种简单快速的机制来支持虚拟高速缓存和物理高速缓存之间的交互。应当注意,在与图5中所描绘的标准虚拟索引虚拟标记(VIVT)的高速缓存和物理索引物理标记(PIPT)的高速缓存进行比较时,L1-VIVT高速缓存625中的高速缓存行位置627和L2-PIPT高速缓存605中的高速缓存行位置607已扩展有新的高速缓存行指针(CP)字段。
在图6的底部是虚拟高速缓存625,其可以使用由CPU核621产生的虚拟地址622提供快速且高能效的访问,因为其索引位624和其VAT比较位623二者组成虚拟地址位。其可以快速确定所请求的高速缓存行是否驻留在其高速缓存625中,如果存在,则将所请求的数据返回到CPU核621。
如果确定虚拟高速缓存625中不存在所请求的高速缓存行,则选择牺牲高速缓存行位置。在该示例中,假设选择L1高速缓存中的所选组的最右侧高速缓存行位置627(由索引位624确定)并且驱逐其高速缓存行。同时,请求的虚拟地址被发送至虚拟到物理地址转译器640,例如转译后备缓冲器(TLB),以产生可用于在L2高速缓存(和更高级的高速缓存)中搜索所请求的高速缓存行的物理地址L2请求602。根据本发明构思的至少一些示例实施例,虚拟到物理地址转译器640可以是分配到CPU核621的虚拟到物理地址转译器(例如,TLB)。
L2请求602还携带牺牲高速缓存行位置,即L1高速缓存的所选组的最右侧高速缓存行位置627。可以使用牺牲高速缓存行位置的高速缓存索引和高速缓存路来编码位置信息。然而,假设当在虚拟地址和物理地址之间转译地址时,用作L1高速缓存的索引位624的一些地址位将不会改变,则位置信息仅需要包含无法从物理地址确定的索引部分,即如果系统的页面大小为4Kbyte,则不需要包括12个最低地址位。如果L1高速缓存625是直接映射的(即,每个组仅具有一个高速缓存行位置),则由L2请求602携带的牺牲高速缓存行位置仅需要识别所选择的组并且不需要识别任何路。
通过从L2请求602的物理地址中选择索引位604来执行在L2高速缓存中的查找,以选择所请求的高速缓存行应该驻留(如果它在那里的话)的组。在该示例中,L2高速缓存的所选组的PAT与地址位603之间的比较确定了所请求的高速缓存行驻留在该组的最左侧高速缓存行位置607中。此位置在本文中称为“命中高速缓存行位置”。
现在将采取以下几个步骤:(1)将牺牲高速缓存行位置的CP存储在高速缓存605中的命中高速缓存行位置的CP中;(2)物理高速缓存605将高速缓存行返回到CPU核621并返回到L1虚拟高速缓存625并高速缓存行写入L1虚拟高速缓存625中的牺牲高速缓存行位置;以及(3)将命中高速缓存行位置的CP存储在牺牲高速缓存行位置的CP中。总之,在所请求的高速缓存行已从L2高速缓存填充到L1高速缓存之后,提供数据的L2高速缓存中的高速缓存行位置将存储指向L1高速缓存中安装(例如,存储)高速缓存行的高速缓存行位置的CP指针,并且L1高速缓存中安装(例如,存储)该高速缓存行的高速缓存行位置将存储指向L2高速缓存中提供数据的高速缓存行位置的CP指针。这样,L1高速缓存和L2高速缓存中的对应高速缓存行位置将存储指向彼此的交叉CP指针。
根据本发明构思的至少一个示例实施例,在图6中的虚拟L1高速缓存625和物理L2高速缓存605之间强制包含(inclusion)。这意味着,如果高速缓存行驻留在L1高速缓存中的位置,则高速缓存行必须具有对应的驻留在L2高速缓存中的位置。根据本发明构思的至少一个示例实施例,L1高速缓存是直写类型(例如,直写高速缓存),即,当L1高速缓存中的高速缓存行正被写入时,(由L1高速缓存中被写入的高速缓存行的CP识别的)对应的L2高速缓存中的高速缓存行也被写入。根据本发明构思的至少一个示例实施例,L1高速缓存是写无效类型(例如,写无效高速缓存),即,驻留在L1高速缓存中(以及随后也在L2高速缓存中)的高速缓存行关于对该高速缓存行和L2高速缓存中对应的高速缓存行执行的写入无效,而不是更新。对于这两种高速缓存类型,L1高速缓存中的高速缓存行永远不会存储与L2高速缓存中对应高速缓存行不同的脏数据。
然而,根据本发明构思的至少一个示例实施例,L1高速缓存是回写类型(例如,回写高速缓存),即,可以修改L1高速缓存中的高速缓存行而不修改其对应的L2高速缓存中的高速缓存行。因此,L1高速缓存中的高速缓存行将变脏。根据本发明构思的至少一个示例实施例,在从L1高速缓存驱逐脏高速缓存行时,L2高速缓存中的对应高速缓存行得到更新。根据本发明构思的至少一个示例实施例,存储脏高速缓存行的高速缓存行位置的CP被用于在L2高速缓存中找到适当的高速缓存行以进行更新。根据本发明构思的至少一个示例实施例,L2高速缓存中的对应高速缓存行的CP改变其状态以反映当其对应的L1高速缓存行中的CP变脏时其不可读。根据本发明构思的至少一个示例实施例,L2高速缓存中对应的高速缓存行的CP在从L1高速缓存中清除其对应的干净(即,不脏)高速缓存行时更新其CP。
图6中的L2-PIPT高速缓存可以接收外部请求608,例如,由高速缓存一致性协议产生的读取请求或无效请求。这意味着驻留在L2-PIPT高速缓存和/或L1-VIVT高速缓存中的高速缓存行需要被读取或被无效。根据本发明构思的至少一个示例实施例,外部请求608携带物理地址,该物理地址可用于在L2-PIPT高速缓存上执行查找,但不直接用于在L1-VIVT高速缓存中执行查找。相反,首先在L2-PIPT高速缓存中搜索对应的高速缓存行,其中例如确定所请求的高速缓存行位于所选组的最左侧高速缓存行位置607中。如果最左侧高速缓存行位置607的CP包含有效指针,则该CP可用于确定LI-VIVT高速缓存中高速缓存行的位置。根据本发明构思的至少一个示例实施例,如果外部请求608是无效请求,则所识别的高速缓存行位置均被无效,并且如果外部请求608是读取请求,则读取所识别的高速缓存行位置中的至少一个。
根据本发明构思的至少一个示例实施例,如果L2-PIPT高速缓存中所识别的高速缓存行位置的CP可以确定L1-VIVT高速缓存中所识别的高速缓存行位置是脏的,则作为对外部读取请求的响应,将读取L1-VIVT高速缓存中所识别的高速缓存行位置,否则将读取L2-PIPT高速缓存中所识别的高速缓存行位置。本领域技术人员理解,还存在许多其他替代方式来编码并确定L1-VIVT高速缓存中的高速缓存行是脏的,包括(但不限于)将专用高速缓存行状态存储在所选择的L2-PIPT高速缓存行位置中。
根据本发明构思的至少一个示例实施例,如果L2-PIPT高速缓存中所识别的高速缓存行位置的CP可以确定L1-VIVT高速缓存中所识别的高速缓存行位置是可写的,则作为针对外部读取请求的响应,将读取L1-VIVT高速缓存中所识别的高速缓存行位置,否则将读取L2-PIPT高速缓存中所识别的高速缓存行位置。本领域技术人员理解,存在许多替代方式来编码并确定L1-VIVT高速缓存中的高速缓存行是可写的,包括(但不限于)将专用高速缓存行状态存储在所选择的L2-PIPT高速缓存行位置中。
本领域技术人员理解,存在L1高速缓存的许多可能的替代配置,对于这些替代配置,针对图6解释的上述转译方案将是有益的。例如,L1高速缓存可以是虚拟索引物理标记(VIPT)的高速缓存510,其具有这种大小/关联性使得其索引位中的一些将基于从虚拟地址到物理地址的转译而被转译。这样的配置也将受益于上面解释的机制,因为不能由物理地址确定在VIPT高速缓存中选择哪个索引。本领域技术人员理解的是,针对图6解释的机制广泛适用于无法通过针对高速缓存的某种访问请求所提供的地址(物理,虚拟或其他)为其确定高速缓存行的高速缓存行位置的任何低级高速缓存。
下文是根据本发明构思的至少一些示例实施例的响应于一些请求而采取的一些步骤。
根据本发明构思的至少一些示例实施例,响应于针对由在L1-VIVT高速缓存中未命中并且在L2-PIPT高速缓存中命中的虚拟地址VA1识别的数据的读取请求,将采取以下步骤:
1)VA1用于选择L1高速缓存625内的组。
2)将所选组的VAT与VA1的某些位623进行比较。
3)比较确定VIVT高速缓存625中不存在数据。
4)选择牺牲高速缓存行位置627。
5)驱逐存储在该位置的先前高速缓存行。
6)执行从VA1到PA1的转译。
7)PA1用于访问L2-PIPT高速缓存605。
8)确定所请求的数据驻留在命中高速缓存行位置607中。
9)更新命中高速缓存行位置607的CP以保持指向牺牲高速缓存行位置627的指针。
10)将所请求的数据返回到CPU核621。
11)更新牺牲高速缓存行位置627的CP以保持指向高速缓存行位置607的指针。
根据本发明构思的至少一些示例实施例,响应于针对由在L1-VIVT高速缓存中未命中并且在L2-PIPT高速缓存中未命中的虚拟地址VA1所识别的数据的读取请求,将采取一些附加步骤。
步骤1-7将如上所述执行。
在步骤8,将确定所请求的数据不存在于L2-PIPT高速缓存中,并且将包括附加步骤以向“更高级高速缓存”发送请求并选择L2牺牲位置。一旦数据从“更高级高速缓存”返回,则L2牺牲位置将采用唯一的命中高速缓存位置,并且将继续步骤9-11。
根据本发明构思的至少一些示例实施例,响应于从L1-VIVT高速缓存中的牺牲位置驱逐脏牺牲高速缓存行,将采取以下步骤。
1)将脏高速缓存行的L2高速缓存中的目标位置识别为由牺牲高速缓存行的CP所指向的位置。
2)脏高速缓存行被发送到L2高速缓存中的目标位置。
3)更改目标位置的CP以反映L1高速缓存不再包含脏牺牲高速缓存行的事实。
根据本发明构思的至少一些示例实施例,当通过外部请求608接收到针对物理地址PA1的一致性读取请求时,采取以下步骤:
1)确定与PA1对应的高速缓存行是否驻留在L2高速缓存605中,并且识别高速缓存行位置607以保持高速缓存行。
2)确定存储在高速缓存行位置607中的高速缓存行不能用于回复该请求。例如,这可能是因为高速缓存行位置607的CP进行了编码,表示L1高速缓存625中的对应高速缓存行位置具有脏高速缓存行、存储了可写高速缓存行(其可能在这个循环中变脏),或者具有使得L2高速缓存605中的高速缓存行不能用于某些一致性请求的某些其他原因。
3)读取CP指向的L1高速缓存625中的高速缓存行位置627,并返回其数据作为对一致性请求的响应。
4)L1高速缓存625中的高速缓存行被降级为不再可写。
5)更改L2高速缓存605中的高速缓存行位置607的CP以反映L1高速缓存625中的高速缓存行不再可写或不再是脏的。
根据本发明构思的至少一些示例实施例,响应于通过外部请求608上接收到针对物理地址PA1的一致性无效请求,采取以下步骤:
1)确定对应于PA1的高速缓存行是否驻留在L2高速缓存605中,并且识别高速缓存行位置607以保持高速缓存行。
2)存储在高速缓存行位置607中的高速缓存行被无效。
3)检查高速缓存行位置607的CP以确定是否有对应高速缓存行存储在L1高速缓存625中(例如,确定高速缓存行位置607的CP是否有效)。
4)CP指向的L1高速缓存625中的高速缓存行位置被无效并标记为对CPU核621不可读或不可写。
5)可以发送确认消息作为对一致性请求的响应。
图7是根据本发明构思的至少一些示例实施例的用于解释三级高速缓存层次结构的实现的框图,其中第一级是虚拟索引虚拟标记的VIVT高速缓存,并且第二级和第三级是少标记物理索引的无标记PINT高速缓存。图7示出了部分地由所谓的少标记高速缓存构建的系统。少标记高速缓存不存储与其高速缓存行位置关联的地址标记。相反,特殊的元数据高速缓存层次结构通过存储高速缓存行指针来跟踪系统高速缓存行的位置。根据本发明构思的至少一些示例实施例的少标记高速缓存的详细示例可以在图4中找到。图7仅示出了最低级元数据高速缓存(MD高速缓存)740。MD高速缓存740被组织为类似于常规高速缓存,例如,图5中的任何高速缓存配置可以用于本发明构思的一个或多个示例实施例。它可以是组关联、倾斜关联、完全相关或任何其他常见高速缓存结构。当呈现地址(例如,如图7中所示的VA 722)时,将确定对应于该地址的元数据是否包含在其MD高速缓存740中。根据本发明构思的至少一个示例实施例,MD高速缓存740的元数据被组织成区域,其中每个区域具有识别标识由多个相邻高速缓存行组成的区域的地址标记(图7中的VAT)。该区域可以例如由16个高速缓存行组成,但是任何数量的高速缓存行都是可能的。在VAT匹配中,通过MD高速缓存740中的关联查找识别区域位置。存储在所识别的区域位置中的区域信息包含与其对应高速缓存行相关的信息。例如,其可以针对对应高速缓存行的每一个存储高速缓存行指针(图中的CP)。CP可以例如由可以找到每个对应高速缓存行的高速缓存内的高速缓存ID(例如,高速缓存级)和关联路的信息组成。其还可以存储用于在对应高速缓存中进行查找的部分索引。元数据位置还可以存储适用于其所有关联高速缓存行的信息。其可以例如存储物理地址信息(图7的MD高速缓存740中的PA)。存储在区域中的其他区域范围(region-wide)信息可以包括许可位和适用于该区域的所有高速缓存行的某些部分索引信息。
高速缓存行请求728可以例如在MD高速缓存740中执行查找并确定其对应的CP(741)。该CP信息可能足以在L2高速缓存745或L3高速缓存750中的高速缓存行位置中找到对应的高速缓存行。如果这些高速缓存被物理索引,则来自所识别的区域位置的PA信息可用于形成索引信息742或752。
图7示出了如何在L2高速缓存745和L3高速缓存750中找到对应的高速缓存行位置的逻辑图。首先,在747比较中将CP的高速缓存ID信息与“L2”进行比较。如果存在匹配,则CP的路用于选择L2高速缓存745中的高速缓存行位置。如果在757比较中存在高速缓存ID=“L3”的匹配,则与CP的路信息对应的高速缓存行位置替代地用于查找对应高速缓存行。本领域技术人员将理解,已知所请求的高速缓存行的高速缓存ID、路信息和索引信息使得能够直接访问该高速缓存而无需747比较或746多路复用器,这仅被示为逻辑示例。本领域技术人员还将理解,L2高速缓存745和L3高速缓存750可以使用普通存储器阵列来实现,例如SRAM、DRAM、NVM或任何其他存储器技术。由于图7中的L2高速缓存745和L3高速缓存750不包含任何标记并且被物理寻址,我们将它们称为物理索引的、无标记(PINT)。
图7的“PINT L2和更高级高速缓存”存储与其高速缓存行位置中的每一个关联的CP信息。与图6所示的系统类似,L1高速缓存725和L2高速缓存745中的对应高速缓存行位置将存储指向彼此的交叉CP指针。接收外部请求760将使得通过MD高速缓存740查找识别L2高速缓存745中的对应高速缓存行位置,所述查找识别对应的CP和PA。针对图6描述的描述了交叉CP指针的初始化步骤以及回复外部请求并从L1高速缓存中驱逐高速缓存行的步骤也适用于L2高速缓存745和L1高速缓存725如何交互以实现这样的活动。根据本发明构思的至少一个示例实施例,作为L2高速缓存605的CP的一部分存储的、指向L1-VIVT 625中的对应高速缓存行的部分索引信息可以替代地存储为在图7所描绘的系统中MD高速缓存740中的对应区域的一部分。根据本发明构思的至少一个示例实施例,如果可以确定区域的所有高速缓存行总是具有用于索引到L1-VIVT高速缓存725的相同部分索引信息,则该部分区域信息可以作为区域范围的信息存储在对应区域位置中,这比分别存储每个高速缓存行的索引信息更有效。根据本发明构思的至少一个示例实施例,L1-VIVT高速缓存725是直接映射的,并且不需要将路信息存储在L2高速缓存745的CP中。对于该配置,其可足以将L2高速缓存745中的CP是实现为指示L1高速缓存725中是否存在对应的高速缓存行的单个有效位。在该配置中,存储在MD高速缓存740中的区域范围索引信息可用于在L1高速缓存725中找到对应的高速缓存行位置。
图8是根据本发明构思的至少一些示例实施例的用于解释三级高速缓存层次结构的实现的框图,其中第一级是少标记虚拟索引的无标记VINT高速缓存,第二级和第三级是少标记物理索引的无标记PINT高速缓存。图8在以下方面类似于图7,其描绘了相同的“PINTL2和更高的高速缓存”。然而,的L1高速缓存825是少标记高速缓存,是虚拟索引的、无标记(VINT)的高速缓存。MD高速缓存840的CP在此已被扩展为存储L1高速缓存825的位置信息823。随后,L1高速缓存825中不包括VAT标记。相反,MD高速缓存840的扩展的位置信息823用于选择L1-VINT的对应高速缓存行。根据本发明构思的至少一个示例实施例,LI-VINT是直接映射的,这是L1高速缓存的位置信息823可以被限制为单个位的原因。
根据本发明构思的至少一个示例实施例,使用虚拟地址访问图7和图8的MD高速缓存。在那种情况下,沿着来自L1-VIVT高速缓存和L1-VINT高速缓存的请求728和828的路径需要虚拟到物理转译。
根据本发明构思的至少一个示例实施例,使用虚拟地址访问图7和图8的MD高速缓存。在那种情况下,沿着外部请求760和860的路径需要物理到虚拟的转译。
根据本发明构思的至少一个示例实施例,使用来自L1-VIVT高速缓存和L1-VINT高速缓存的虚拟地址沿着728和828路径访问图7和图8的MD高速缓存,并且外部请求760和860携带识别MD高速缓存740和840内与所请求的高速缓存行相关的区域位置的信息。根据本发明构思的至少一个示例实施例,类似于图4的CLB2 420的结构用于将外部请求携带的物理地址转译为CLB1指针(CIP 423),所述指针识别与MD高速缓存740和840对应的CLB1内的高速缓存位置条目CLE(也称为区域位置)。
为了克服直接映射VIVT高速缓存或具有低关联性的VIVT高速缓存的一些假象,特别是考虑到可能使用SMT核,L1高速缓存可以被乱码索引(scrambled index)部分地索引。其索引[15-12]由一些地址位和一些ASID位之间的XOR函数组成。这样,在SMT线程上同时运行两个相同的程序(例如,SPEC速率)不太可能破坏(thrash)高速缓存。此外,来自同一进程的两个线程不太可能相互破坏,即使它们的并行运行时系统分配具有二次幂对齐的专用栈/堆(某些早期多线程运行时系统就是这种情况)。有很多选择可供乱码索引函数使用。可能是一些ASID位、一些较高地址位和一些较低地址位之间的XOR函数,例如,
INDEX[15-12]=VA[15-12]XOR VA{21,22,25,27}XOR ASID[3-0]。
使用这样的乱码索引位促使对高速缓存725使用4个额外的L1VAT标记位,因为在INDEX[15-12]和VA[15-12]之间不再存在1:1映射。
MD高速缓存中的新字段SI(4)-(乱码索引)可以存储针对每个区域的乱码INDEX[15-12]以允许访问L1高速缓存中的数据的外部请求。
结合图6描述的步骤可以以各种顺序执行,并且可以并行或顺序地执行一些步骤。上述的这些方法实施例、系统实施例和其他实施例可以提供各种有益结果。例如,已经根据本发明构思的一个或多个示例实施例执行的详细模拟研究已经示出,与传统高速缓存系统相比,与本发明构思的一个或多个示例实施例相关的高速缓存实施方式可以节省大量能量,并且还可以导致高速缓存具有明显更短的访问时间。
尽管为了清楚起见,本文的大部分说明一般描述了如何定位高速缓存行并将其返回到请求CPU的技术,对于本领域技术人员来说显而易见的是,有多种方式可以选择高速缓存行中包含的请求字并将其返回到CPU。
为清楚起见,本文中描述高速缓存层次结构的数据的处理的大部分说明描述了独占型高速缓存层次结构。本领域技术人员将理解,本发明构思的一个或多个示例实施例可以扩展为还覆盖包容型存储器层次结构和非独占型存储器层次结构。
尽管上文描述的发明构思的一个或多个示例实施例可以与单处理器系统和多处理器系统相关,例如上文分别关于图1和图2示出和描述的系统,但本发明构思的一个或多个示例实施例主要结合单处理器系统示出。然而,本领域技术人员将理解,结合单处理器系统示出的发明构思的一个或多个示例实施例不限于这样的实施方式。例如,尽管为了简化,图6至图8示出了单个CPU,根据本发明构思的至少一些示例实施例的图6至图8中所示的计算机系统的任何或所有部分可以是多处理器系统的一部分。
尽管以上在某些示例计算机架构的语境中进行了描述,但是高速缓存存在于图6至图8中所示的示例计算机系统内部以及外部的许多其他设置中,并且本领域技术人员将理解,在计算机系统的语境中上述发明构思的至少一些示例实施例也可以应用于这样的其他语境。这种使用的示例是虚拟存储器系统,其将来自慢速、高容量存储器(例如磁盘或FLASH存储器)的数据高速缓存到可以使用动态RAM实现的更快和更小的高容量存储器中。在计算机系统中进行高速缓存的其他示例包括(但不限于)磁盘高速缓存、web高速缓存和名称高速缓存。这种高速缓存的组织和高速缓存机制可能与上文讨论的高速缓存不同,例如,在组的大小、组的实现和关联性等方面存在变化。无论高速缓存机制本身的实现如何,本发明构思的至少一些示例实施例同样适用于实现各种高速缓存方案。
本申请中提供的方法或流程图可以在计算机可读存储介质中清晰体现的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。
因此已经描述了本发明构思的示例实施例,显而易见的是可以以多种方式改变本发明构思的示例实施例。不应将这些变化视为脱离本发明构思的示例实施例的预期实质和范围,并且对于本领域技术人员显而易见的所有这些修改旨在包括在所附权利要求的范围内。
Claims (20)
1.一种多处理器系统,包括:
多个节点和至少一个存储器,每一节点包含至少一个处理器;
第一高速缓存,其被配置为存储多个第一高速缓存行,所述第一高速缓存专用于所述多个节点中的至少一个节点;以及
第二高速缓存,其被配置为存储多个第二高速缓存行,所述第二高速缓存处于比所述第一高速缓存更高的级,
其中,所述多个第一高速缓存行中的至少一个第一高速缓存行包括指向所述多个第二高速缓存行中的一个第二高速缓存行的位置的第一关联指针,并且
其中,所述多个第二高速缓存行中的至少一个第二高速缓存行包括指向所述多个第一高速缓存行中的一个第一高速缓存行的位置的第二关联指针。
2.根据权利要求1所述的多处理器系统,其中,响应于所述至少一个节点的所述至少一个处理器的数据请求导致了所述第一高速缓存中的高速缓存未命中和所述第二高速缓存中的高速缓存命中,
所述多个第一高速缓存行中的新高速缓存行保持所述数据和指针,其中,所述新高速缓存行的指针指向存储所述数据的第二高速缓存行的位置。
3.根据权利要求1所述的多处理器系统,其中,
所述第一高速缓存是虚拟标记的高速缓存,
所述多个第一高速缓存行中的每一个包括虚拟标记,
所述第二高速缓存是物理标记的高速缓存,并且
所述多个第二高速缓存行中的每一个包括物理标记。
4.根据权利要求1所述的多处理器系统,其中,所述第一高速缓存是直写高速缓存,并且
响应于数据被写入所述多个第一高速缓存行中的一个第一高速缓存行,所述数据也被写入所述多个第二高速缓存行中的由写入了所述数据的第一高速缓存行中提供的指针所指向的一个第二高速缓存行。
5.根据权利要求1所述的多处理器系统,其中,所述第一高速缓存是写无效高速缓存,并且
响应于由所述至少一个节点的所述至少一个处理器执行的写入使所述多个第一高速缓存行中的一个第一高速缓存行无效,所述多个第二高速缓存行中的由无效的第一高速缓存行中提供的指针所指向的一个第二高速缓存行也被更新为无效。
6.根据权利要求1所述的多处理器系统,其中,所述第一高速缓存是回写高速缓存,并且
响应于所述多个第一高速缓存行中的一个第一高速缓存行被写入并变脏,所述多个第二高速缓存行中的由脏的第一高速缓存行中提供的指针所指向的一个第二高速缓存行
在驱逐所述脏的第一高速缓存行时被更新,或者
被改变状态以反映所述脏的第一高速缓存行不可读。
7.一种用于系统的数据管理方法,所述系统包括至少一个节点,所述至少一个节点包括分配有第一高速缓存、第二高速缓存和存储器的处理器,所述第一高速缓存存储多个第一高速缓存行并且对于所述至少一个节点是专用的,并且所述第二高速缓存存储多个第二高速缓存行并且处于比所述第一高速缓存更高的级,所述数据管理方法包括:
将指向所述多个第二高速缓存行中的一个第二高速缓存行的位置的第一关联指针存储在所述多个第一高速缓存行中的一个第一高速缓存行中;并且
将指向存储了所述第一关联指针的第一高速缓存行的位置的第二关联指针存储在由所述第一关联指针所指向的第二高速缓存行中。
8.根据权利要求7所述的数据管理方法,还包括:
向所述第一高速缓存和所述第二高速缓存请求数据;以及
响应于所述第一高速缓存中的高速缓存未命中和所述第二高速缓存中的高速缓存命中,将所述数据和指针保持在所述多个第一高速缓存行的新高速缓存行中,其中,所述新高速缓存行的所述指针指向存储所述数据的第二高速缓存行的位置。
9.根据权利要求7所述的数据管理方法,还包括:
响应于数据被写入所述多个第一高速缓存行中的一个第一高速缓存行,将所述数据写入由写入了所述数据的第一高速缓存行中提供的指针所指向的第二高速缓存行。
10.根据权利要求7所述的数据管理方法,还包括:
响应于所述处理器执行的写入使所述多个第一高速缓存行中的一个第一高速缓存行无效,
使由无效的第一高速缓存行中提供的指针所指向的第二高速缓存行无效。
11.根据权利要求7所述的数据管理方法,还包括:
响应于所述多个第一高速缓存行中的一个第一高速缓存行被写入并变脏,改变由脏的第一高速缓存行中提供的指针所指向的第二高速缓存行的状态以反映所述脏的第一高速缓存行不可读。
12.根据权利要求7所述的数据管理方法,还包括:
接收高速缓存一致性协议产生的外部请求;
在所述第二高速缓存中执行查找并选择所述多个第二高速缓存行中的一个第二高速缓存行;以及
访问由所选择的第二高速缓存行中提供的指针所指向的第一高速缓存行。
13.根据权利要求12所述的数据管理方法,还包括:
当所述外部请求是无效请求时,使被访问的第一高速缓存行和所选择的第二高速缓存行都无效。
14.根据权利要求12所述的数据管理方法,还包括:
当所述外部请求是读取请求时,读取存储在被访问的第一高速缓存行和所选择的第二高速缓存行中的至少一个中的数据。
15.根据权利要求7所述的数据管理方法,其中,所述处理器还被分配虚拟到物理地址转译器,所述第一高速缓存是虚拟标记的高速缓存,并且所述第二高速缓存是物理标记的高速缓存,
基于从所述处理器生成的数据请求中包括的虚拟地址执行查找所述第一高速缓存;
当在所述第一高速缓存中数据未命中时,选择所述多个第一高速缓存行中的一个第一高速缓存行作为牺牲高速缓存行,并基于所述数据请求从所述虚拟到物理地址转译器生成物理地址;并且
基于所述物理地址执行查找所述第二高速缓存。
16.根据权利要求15所述的数据管理方法,其中,所述物理地址包括所述牺牲高速缓存行的位置。
17.一种包括计算机可执行指令的非暂时性计算机可读存储介质,当由被分配有虚拟标记的高速缓存、物理标记的高速缓存和存储器的至少一个处理器执行所述计算机可执行指令时,使得所述至少一个处理器执行包括以下步骤的操作:
将第一关联指针存储在所述虚拟标记的高速缓存中存储的多个第一高速缓存行中的一个第一高速缓存行中,所述第一关联指针指向在所述物理标记的高速缓存中存储的多个第二高速缓存行中的一个第二高速缓存行的位置;以及
将第二关联指针存储在所述多个第二高速缓存行中的一个第二高速缓存行中,所述第二关联指针指向所述多个第一高速缓存行中的一个第一高速缓存行的位置。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其中,所述操作还包括:
响应于数据被写入所述多个第一高速缓存行中的一个第一高速缓存行,将所述数据写入由写入所述数据的第一高速缓存行中提供的指针所指向的第二高速缓存行。
19.根据权利要求17所述的非暂时性计算机可读存储介质,其中,所述操作还包括:
响应于由所述至少一个处理器执行的写入使所述多个第一高速缓存行中的一个第一高速缓存行无效,使在无效的第一高速缓存行中提供的指针所指向的第一高速缓存行无效。
20.根据权利要求17所述的非暂时性计算机可读存储介质,其中,所述操作还包括:
响应于所述多个第一高速缓存行中的一个第一高速缓存行被写入并变脏,改变由脏的第一高速缓存行中提供的指针所指向的第二高速缓存行的状态以反映所述脏的第一高速缓存行不可读。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762588720P | 2017-11-20 | 2017-11-20 | |
US62/588,720 | 2017-11-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109815167A true CN109815167A (zh) | 2019-05-28 |
Family
ID=64402076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811375097.9A Pending CN109815167A (zh) | 2017-11-20 | 2018-11-19 | 用于高效虚拟标记的高速缓存实现的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11023376B2 (zh) |
EP (1) | EP3486786B1 (zh) |
KR (1) | KR102151180B1 (zh) |
CN (1) | CN109815167A (zh) |
TW (1) | TWI784085B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540982A (zh) * | 2019-09-20 | 2021-03-23 | Sap欧洲公司 | 具有可更新逻辑表指针的虚拟数据库表 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10761988B2 (en) * | 2018-07-25 | 2020-09-01 | Arm Limited | Methods and apparatus of cache access to a data array with locality-dependent latency characteristics |
US11194718B2 (en) * | 2019-07-24 | 2021-12-07 | Arm Limited | Instruction cache coherence |
KR20220066741A (ko) | 2020-11-16 | 2022-05-24 | 삼성전자주식회사 | 스토리지 장치 및 그 동작 방법 |
TWI774183B (zh) * | 2021-01-08 | 2022-08-11 | 瑞昱半導體股份有限公司 | 具有位址打亂機制的記憶體存取裝置及其記憶體存取方法 |
KR20220132339A (ko) * | 2021-03-23 | 2022-09-30 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
KR102641481B1 (ko) * | 2023-04-19 | 2024-02-28 | 메티스엑스 주식회사 | 멀티프로세서 시스템 및 이의 데이터 관리 방법 |
KR102570030B1 (ko) * | 2023-04-19 | 2023-08-28 | 메티스엑스 주식회사 | 멀티프로세서 시스템 및 이의 데이터 관리 방법 |
CN117331853B (zh) * | 2023-10-11 | 2024-04-16 | 上海合芯数字科技有限公司 | 缓存处理方法、装置、电子设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8195890B1 (en) * | 2006-08-22 | 2012-06-05 | Sawyer Law Group, P.C. | Method for maintaining cache coherence using a distributed directory with event driven updates |
CN104040509A (zh) * | 2012-01-18 | 2014-09-10 | 高通股份有限公司 | 在有虚拟标识的高速缓冲存储器中确定别名地址的高速缓存命中/未中及相关系统及方法 |
US20150347297A1 (en) * | 2014-05-29 | 2015-12-03 | Green Cache AB | Systems and methods for implementing a tag-less shared cache and a larger backing cache |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1021009A (en) * | 1910-05-14 | 1912-03-26 | Noah Q Speer | Sand-washing apparatus. |
JP2839060B2 (ja) * | 1992-03-02 | 1998-12-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システムおよびデータ処理方法 |
JP4006445B2 (ja) * | 2002-11-21 | 2007-11-14 | 富士通株式会社 | キャッシュ制御方法及びプロセッサシステム |
US8656083B2 (en) * | 2007-12-21 | 2014-02-18 | Spansion Llc | Frequency distributed flash memory allocation based on free page tables |
EP2441005A2 (en) * | 2009-06-09 | 2012-04-18 | Martin Vorbach | System and method for a cache in a multi-core processor |
WO2013058745A1 (en) * | 2011-10-18 | 2013-04-25 | Soft Machines, Inc. | Methods and systems for managing synonyms in virtually indexed physically tagged caches |
EP2790107A1 (en) * | 2011-12-07 | 2014-10-15 | Fujitsu Limited | Processing unit and method for controlling processing unit |
US9916253B2 (en) * | 2012-07-30 | 2018-03-13 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
US9558121B2 (en) * | 2012-12-28 | 2017-01-31 | Intel Corporation | Two-level cache locking mechanism |
US9323774B2 (en) * | 2013-05-03 | 2016-04-26 | Nvidia Corporation | Compressed pointers for cell structures |
US9535700B2 (en) * | 2013-06-14 | 2017-01-03 | Arm Limited | Data processing systems |
GB2516477A (en) * | 2013-07-24 | 2015-01-28 | Ibm | Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure |
US9292444B2 (en) * | 2013-09-26 | 2016-03-22 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
US9229866B2 (en) * | 2013-11-25 | 2016-01-05 | Apple Inc. | Delaying cache data array updates |
US9514059B2 (en) * | 2014-12-22 | 2016-12-06 | Texas Instruments Incorporated | Hiding page translation miss latency in program memory controller by selective page miss translation prefetch |
CN106201913A (zh) * | 2015-04-23 | 2016-12-07 | 上海芯豪微电子有限公司 | 一种基于指令推送的处理器系统和方法 |
EP3371707B1 (en) * | 2015-11-04 | 2021-10-27 | Samsung Electronics Co., Ltd. | Systems and methods for implementing coherent memory in a multiprocessor system |
-
2018
- 2018-11-16 KR KR1020180141959A patent/KR102151180B1/ko active IP Right Grant
- 2018-11-19 CN CN201811375097.9A patent/CN109815167A/zh active Pending
- 2018-11-20 US US16/196,086 patent/US11023376B2/en active Active
- 2018-11-20 TW TW107141175A patent/TWI784085B/zh active
- 2018-11-20 EP EP18207242.1A patent/EP3486786B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8195890B1 (en) * | 2006-08-22 | 2012-06-05 | Sawyer Law Group, P.C. | Method for maintaining cache coherence using a distributed directory with event driven updates |
CN104040509A (zh) * | 2012-01-18 | 2014-09-10 | 高通股份有限公司 | 在有虚拟标识的高速缓冲存储器中确定别名地址的高速缓存命中/未中及相关系统及方法 |
US20150347297A1 (en) * | 2014-05-29 | 2015-12-03 | Green Cache AB | Systems and methods for implementing a tag-less shared cache and a larger backing cache |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540982A (zh) * | 2019-09-20 | 2021-03-23 | Sap欧洲公司 | 具有可更新逻辑表指针的虚拟数据库表 |
CN112540982B (zh) * | 2019-09-20 | 2024-04-16 | Sap欧洲公司 | 具有可更新逻辑表指针的虚拟数据库表 |
Also Published As
Publication number | Publication date |
---|---|
EP3486786A1 (en) | 2019-05-22 |
EP3486786B1 (en) | 2022-01-26 |
KR20190058317A (ko) | 2019-05-29 |
US11023376B2 (en) | 2021-06-01 |
TW201923592A (zh) | 2019-06-16 |
TWI784085B (zh) | 2022-11-21 |
KR102151180B1 (ko) | 2020-09-02 |
US20190155733A1 (en) | 2019-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815167A (zh) | 用于高效虚拟标记的高速缓存实现的系统和方法 | |
US11237969B2 (en) | Systems and methods for implementing coherent memory in a multiprocessor system | |
US10402331B2 (en) | Systems and methods for implementing a tag-less shared cache and a larger backing cache | |
US10402344B2 (en) | Systems and methods for direct data access in multi-level cache memory hierarchies | |
CN109815165A (zh) | 用于存储和处理高效压缩高速缓存行的系统和方法 | |
TWI768039B (zh) | 多處理器系統、資料管理方法及非暫時性電腦可讀媒體 | |
US7356650B1 (en) | Cache apparatus and method for accesses lacking locality | |
EP3486787B1 (en) | Systems and methods for tag-less buffer implementation | |
US12093180B2 (en) | Tags and data for caches | |
JP3929872B2 (ja) | キャッシュメモリ、プロセッサ及びキャッシュ制御方法 | |
CN112148639A (zh) | 一种高效小容量高速缓冲存储器替换方法及系统 | |
US20210064527A1 (en) | Computer architecture with unified cache and main memory and associated methods | |
CN116627890A (zh) | 标记与数据不对称的目录与高速缓存融合装置及应用方法 | |
SALEEM et al. | Design and implementation of the memory management unit (MMU) of a 32-bit micro-controller; split cache of 32/32kByte; 4-way set-associative, LFU, Write-Through/Write-Allocate. With an ARM926EJ-S with 1GHz clock speed of unlimited main memory with a clock of 10MHz. |
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 |