CN109815163A - 基于预测的高效高速缓存行处理的***和方法 - Google Patents
基于预测的高效高速缓存行处理的***和方法 Download PDFInfo
- Publication number
- CN109815163A CN109815163A CN201811374838.1A CN201811374838A CN109815163A CN 109815163 A CN109815163 A CN 109815163A CN 201811374838 A CN201811374838 A CN 201811374838A CN 109815163 A CN109815163 A CN 109815163A
- Authority
- CN
- China
- Prior art keywords
- cache
- study
- data
- processor
- core
- 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 29
- 238000012545 processing Methods 0.000 title description 5
- 238000003860 storage Methods 0.000 claims abstract description 25
- 230000006399 behavior Effects 0.000 claims description 59
- 230000004044 response Effects 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims 4
- 230000015654 memory Effects 0.000 description 47
- 238000010586 diagram Methods 0.000 description 23
- 101150033539 CLB2 gene Proteins 0.000 description 21
- 101100166522 Dictyostelium discoideum cycB gene Proteins 0.000 description 19
- 101100439280 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CLB1 gene Proteins 0.000 description 19
- 230000006870 function Effects 0.000 description 17
- 101100006960 Caenorhabditis elegans let-2 gene Proteins 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000000151 deposition Methods 0.000 description 6
- 238000009434 installation Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000013480 data collection Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- PLFFHJWXOGYWPR-HEDMGYOXSA-N (4r)-4-[(3r,3as,5ar,5br,7as,11as,11br,13ar,13bs)-5a,5b,8,8,11a,13b-hexamethyl-1,2,3,3a,4,5,6,7,7a,9,10,11,11b,12,13,13a-hexadecahydrocyclopenta[a]chrysen-3-yl]pentan-1-ol Chemical compound C([C@]1(C)[C@H]2CC[C@H]34)CCC(C)(C)[C@@H]1CC[C@@]2(C)[C@]4(C)CC[C@@H]1[C@]3(C)CC[C@@H]1[C@@H](CCCO)C PLFFHJWXOGYWPR-HEDMGYOXSA-N 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 102100031577 High affinity copper uptake protein 1 Human genes 0.000 description 1
- 101710196315 High affinity copper uptake protein 1 Proteins 0.000 description 1
- 102100031145 Probable low affinity copper uptake protein 2 Human genes 0.000 description 1
- 101710095010 Probable low affinity copper uptake protein 2 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000000727 fraction Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005304 joining 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
- 239000000203 mixture Substances 0.000 description 1
- 238000013486 operation strategy Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001131 transforming effect Effects 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/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/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/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/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/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
- 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/27—Using a specific cache architecture
- G06F2212/271—Non-uniform cache access [NUCA] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
- G06F2212/6046—Using a specific cache allocation policy other than replacement policy
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,715通过引用整体并入本文。
技术领域
本发明构思的至少一些示例实施例一般涉及用于访问计算机存储器装置中的数据的方法和***,更具体地,涉及用于预测数据单元行为并基于这些预测应用修改或者,可替换地,应用优化的机制和技术。
背景技术
现今的处理器通常配备有高速缓存,高速缓存可以存储被存储在某些高容量存储器中的数据的副本和指令的副本。这种高容量存储器的现今流行的示例是动态随机存取存储器(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-as ide buffer)”或简称TLB)对从虚拟页面到物理页面的转译映射进行高速缓存。虚拟存储器***可以被视为高速缓存***,其将位于磁盘104中的数据的一部分存储在存储器105中。
图2是用于解释计算机***的示例高速缓存层次结构的框图。图2示出了来自图1的高速缓存组织的更详细视图,CPU 204被示出包含多个类高速缓存的结构,例如指令TLB(ITLB,201)和数据TLB(DTLDB,205),以及CPU核202。1级高速缓存102被示出为包括***在CPU 204和2级(以及可能更高级)高速缓存207之间的指令高速缓存200和数据高速缓存206。图2还示出了连接到高速缓存层次结构的高容量存储器208。但是,图2中的计算机***被示为单处理器(即,单一处理器)***。图2中的计算机***可以是多处理器***的一部分。
当CPU 101请求存在于高速缓存中的数据(称为高速缓存命中)时,相比于对不存在于高速缓存中的数据的访问(称为高速缓存未命中),该请求可以快得多地得到服务。通常,运行在CPU 101上的经历较少高速缓存未命中的应用程序将比承受更多高速缓存未命中的相同应用程序更快地执行并且消耗更少的能量(假设这两个版本的应用程序具有相似的属性)。因此,已经在用于避免高速缓存未命中的技术上投入了相当大的努力,并且还设计了这样的实施方式:其可以使高速缓存命中和高速缓存未命中在访问延迟和这些存储器事务消耗的能量方面是高效的。
为了理解如何开发针对这种高速缓存命中/未命中问题的解决方案,对高速缓存组织和术语的一些理解将是有用的。通常,数据以大于处理器的字大小的固定块的形式安装到高速缓存中,称为高速缓存行。现今的常见的高速缓存行大小例如是32、64和128字节,但是如本领域技术人员将理解的,对于各种高速缓存实施方式存在更大和更小的高速缓存行大小。对于某些高速缓存实施方式,高速缓存行大小也可以是可变的。
组织存储器208中的数据放置的常见方式是以每个数据字被静态映射以驻留在一个特定高速缓存行中的方式。每个高速缓存通常具有索引功能,索引该功能识别高速缓存中每个高速缓存行可以驻留的部分,其被称为组。组可以包含用于同时保持一个或多个高速缓存行的空间。组可以保持的高速缓存行的数量被称为其关联性。通常,高速缓存中所有组的关联性是相同的。此类高速缓存通常称为组关联高速缓存。关联性也可以在组之间变化。组中可以保持高速缓存行的每一个空间被称为路。
为了确定存储在每个组中的每个高速缓存行的标识,高速缓存中的高速缓存行各自具有与它们相关的一些标识符。这种标识符的一个常见示例是地址标记。在高速缓存中查找特定高速缓存行时,其地址可用于确定它可驻留的高速缓存的组。将对应组的高速缓存行的地址标记与用于识别高速缓存行的地址的标记部分进行比较(参见例如在图3中描绘并在下文描述的标记和ATAG)以确定期望的高速缓存行是否驻留在高速缓存中,如果驻留在高速缓存中,则确定其驻留在哪一路中,即,其驻留在能够保持高速缓存行的组中的哪个空间。通常,这种ADDR地址标记的大小相当大,可以在30-40位范围内,这是典型高速缓存行大小的6-10%。
通常,每个高速缓存具有内置策略以确定将哪个高速缓存行保留在组中以及哪个高速缓存行被驱逐(也称为替换)以为要被引入组的新的高速缓存行腾出空间,这被称为替换政策。被替换的高速缓存行称为牺牲高速缓存行或被替换高速缓存行。与高速缓冲存储器结合使用的流行替换策略包括(但不限于)最近最少使用(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中执行查找。更具体地,PADDR316的索引部分用于识别可以存储包含所请求数据的高速缓存行的组。(应该注意,该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)的多个副本一致的机制。
作为另一背景技术信息,图4是示出少标记(tag-less)高速缓存的示例实施方式的框图。这样的高速缓存依赖于与匹配的高速缓存表条目(CTE)(有时称为区域位置)的所请求的高速缓存行对应的位置信息(LI)(有时称为高速缓存行指针CP),以指示所请求的高速缓存行驻留在哪个高速缓存中,以及驻留在该高速缓存中的哪个位置。这将导致计算***在适当的高速缓存中执行直接高速缓存查找。图4中所示的少标记高速缓存的示例实施方式包括:两级高速缓存层次结构和两级高速缓存位置缓冲器(CLB)层次结构,其中第一级被虚拟地访问,并且第二级被物理地访问
例如,在图4所示的***(可以是多处理器***中的节点)中,位置信息可以在L1高速缓存和L2高速缓存之间进行区分。其还能够在存在于多处理器***的其余部分中的其他高速缓存(图4中未示出)之间进行区分。图4示出了可以连接到多处理器***中的其他节点的少标记节点,该多处理器***具有两级高速缓存层次结构的组关联高速缓存和CPU(其可以包含一个或多个传统高速缓存,这里描述为L0),其中CPU 401生成地址(ADDR)402。图4还示出了两级CLB层次结构的组关联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。
对于由具有相同关联性的组关联高速缓存组成的高速缓存层次结构,每个LI中的位的数量取决于路的数量和CLB所覆盖的高速缓存层次结构的高速缓存的数量。可以为无效模式(“MEM”)保留一个LI值。在该实施方式中,LI位的数量等于路的数量以2为底的对数加CLB所覆盖的高速缓存级的数量以2为底的对数加1(即log2(路)+log2(级)+1)的。如果不同高速缓存级的路的数量变化,或者如果除了组关联高速缓存之外的高速缓存被使用,则本领域技术人员将理解其他LI表示是可能的。通常,LI的大小远小于典型地址标记的大小。可以使用6个LI位对在每级具有16路关联高速缓存的2级高速缓存层次结构进行编码。
在图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中的旧条目复制到CLB2 420,这被称为溢出和填充或简单地表示为溢出/填充(图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级的数量不需要相同。
图5是示出计算机***的一部分的框图,该计算机***包括连接到两级高速缓存层次结构和两级高速缓存位置缓冲器(CLB)层级结构的两个CPU。例如,图5中的计算机***包括两个CPU节点(580和590),在它们自己的一级高速缓存层次结构中各自具有一个CLB(CLB1A 503和CLB1B 513)和专用高速缓存L1高速缓存(504和514)。该***还包含全局共享的L2高速缓存523(有时称为最后一级高速缓存LLC),其在两个CPU 501、511之间共享。
CLB1(513或503)中的查找基于由它们各自的CPU(501,511)生成的地址来选择单个LI,例如使用类似于CLB1 410的技术。如从示出的CLB1A 503和CLB1B 513中的两个CLT条目开始的三个箭头所指示,所选择的LI可以识别该位置位于相应的L1高速缓存(分别为504和514)中、位于L2高速缓存523中或位于另一节点中(分别由570和571表示)。在该示例中,CLB1A 503识别其访问数据为在共享L2高速缓存523中的505,而CLB1A 503识别其访问数据为在其L1 514中的505(由实线箭头示出)。
图6是示出计算机***的一部分的框图,该计算机***包括具有单一的单片式(monol ithic)最后一级高速缓存的少标记高速缓存层次结构。参照图6,图6示出了少标记多处理器存储器***的概括描述。该示例包括N个节点,范围从节点1 601到节点N 699。每个节点具有X级的CLB和Y级的专用高速缓存(即,专用于该节点的高速缓存)。节点通过片上网络(NoC)650电路彼此连接在一起。NoC 650还将节点连接到目录(DIR)660、全局最后一级高速缓存(LLC)670和存储器680。与CLB类似地组织DIR 660,并且DIR 660具有至少由地址标记(AT)661和高速缓存位置表(CLT)662组成的条目。条目还可以包含另外的信息,例如区域信息(RI)663,这将在下文更详细地描述。节点中的最高级CLB(CLB-X 630、CLB-X 693)向DIR溢出/从DIR填充。DIR还在使高速缓存和CLB的内容保持一致和连贯的一致性协议中发挥核心作用。
CLB和DIR可被看作为形成一个包容型“高速缓存层次结构”,其对具有关于数据高速缓存层次结构的内容的信息的元数据进行高速缓存。包含L-1至L-Y以及LLC的数据层次结构可以看作是分离型(separate)高速缓存层次结构,其上未被施加包容属性。例如,它可以是非包容型的、包容型的或独占型的。
在图6所示的示例中,每个节点具有一个CPU(CPU-1 600,CPU-1 696),CPU可能包含零个、一个或多个传统的基于标记的高速缓存,其被描绘为LO-D和LO-1。任何传统LO高速缓存都不能满足的存储器请求将生成在节点的CLB-1(例如610)中的查找以搜索相应的CLB条目CLT,可使用类似于图4中的CLB-1 410的方案。如果在CLB-1中找到相应的条目,则与所请求的数据单元对应的位置信息(LI)可能位于其CLT字段(612)中。LI识别可在其中找到所请求的数据单元的位置。驻留在节点1 601中的CLB 610中的LI可以将该节点自己的高速缓存(L-1 620至L-Y 640)、LLC(670)、存储器680、或者其他节点(节点2 690至节点N 699)中的任一个识别为其正在追踪的数据单元的位置。LI还可以识别数据单元在被识别的高速缓存中的位置。LI还可以指示数据单元是否驻留在与该节点连接的CPU 600的传统高速缓存L0-D或L0-I中的任一个。
如果高速缓存位置(或存储器)被识别为可以找到数据的位置,则可以通过直接读取该高速缓存而不查阅目录(DIR)660来满足该请求。如果节点被识别为可以找到所请求数据的位置,则将请求发送到该节点的CLB-X,并且与图4所讨论的外部请求类似地满足该请求。但为了找到数据依然不需要查阅目录。这与大多数传统的基于目录的一致性方案不同,在该传统方案中,针对节点外部的访问来查阅和更新目录。
尽管如此,图6示出了每个节点中一个CPU,本领域技术人员将认识到,节点可以包含任何数量(包括零)的CPU、GPU、加速器或可以访问存储器的其他装置,例如I/O装置。此外,CLB和高速缓存的配置和大小可能在各节点之间差异很大。
根据本发明构思的至少一个示例实施例,在包容型CLB/DIR层次结构中可以存在逐级的严格的层级搜索。如果在级CLB-i处未找到位置信息,则在下一级CLB-(i+1)处执行查找。如果在该节点的最高级(CLB-X)中找不到位置信息,则在DIR中执行查找。如果在CLB级或DIR中找到位置信息,则可以将读取请求发送到由该级的对应位置信息所识别的数据位置,并且在CLB-1中创建与所请求区域对应的新的CLE条目。CLB/DIR层次结构是包容型的。这意味着如果在级CLB-L存在可用的CLB条目,则必须在级CLB-(L+1)处安装条目。最靠近CPU的CLB条目处于主动状态。可以在高速缓存级K(以及更低的高速缓存,即图6中的较高的高速缓存)和某个CLB级C(以及所有更高的CLB级,即图6中的更低的位置)之间存在强制包容。例如,为了使数据在任何高速缓存L-1 620至L-Y 640中都可用,在CLB-X 630中必须有相应的条目。如果CLB-X 630中的该条目被驱逐,则应当从高速缓存L-1 620到L-Y 640驱逐相应的区域的所有数据。这被称为强制驱逐。此外,还需要驱逐同一节点下至CLB-1 610的所有CLB条目。
应当注意,节点内的高速缓存级(例如,高速缓存L-1 620至L-Y 640)之间或者LLC670与节点中的高速缓存(例如,高速缓存L-1 620至L-Y 640)之间没有包容要求。例如,与特定地址对应的有效数据可以存在于L1高速缓存620中,但是既不存在于高速缓存L-Y 640中也不存在于LLC高速缓存670中。这开启了高速缓存旁路优化,其中例如流数据仅需要安装在L1高速缓存620中(实际上,如果它存在,则仅在LO中),并且没有安装在其他级。但是,需要在所有级安装相应的CLB条目(通常比相应的数据区域小50倍)。
目录(DIR)660包含类似CLB的信息:地址标记(AT)661、高速缓存位置表(CLT)662和区域信息(RI)663。虽然这些字段与CLB的字段(例如,CLB-X 630)具有相同的名称,但是这些字段的内容可能与相应的CLB字段不同。DIR 660的RI字段663可以包含N个所谓的存在位(PB),这些存在位指示哪些节点正在追踪该区域,其中N对应于***中的节点的数量。如果PB中的位K被设置,则意味着在节点K的CLB-X中存在相应的条目。这进一步意味着在节点K的高速缓存级L-1至L-Y中的任何一个中可能存在被高速缓存的数据,并且还可能在节点K中的CLB-1中存在相应条目,它将使节点K中的CPU能够访问相应区域的任何高速缓存行。虽然描述涉及PB信息的N位实施方式,但是本领域技术人员将认识到,用于目录实施方式的许多可扩展技术(包括但不限于粗粒度、有限指针和链表)可用于实现类似的功能。
PB位可用于对区域分类。如果目录660中的相应条目的PB位中的一个被设置,则区域被分类为专用区域(PR)。实证研究表明,所有被访问区域平均约80%是广泛选择的研究基准的PR区域。区域分类PR意味着该区域的数据可以仅存在于其相应的PB位被设置的一个节点中,并且还保证在该时间点没有其他节点可以从该区域访问数据。其PB位是DIR中的唯一设置位的节点1 601可以被通知对应区域是专用区域(PR),并且可以将区域分类记录在其CLB(例如,在CLB-1 610至CLB-X 630)中的其对应区域信息(RI)中。可以在许多方面有效地访问PR区域。例如,不需要全局一致性来为节点增加针对存在于该节点中的数据单元的写入权限,而该节点当前对于该数据单元仅具有读权限(以将该数据单元从状态S升级到状态E),因为只有一个节点可能已高速缓存该数据单元的数据的副本,并且没有其他节点可以访问该区域的任何数据单元。此外,可以高效地实现PR区域的数据单元的移动,因为数据可以在整个高速缓存层次结构中上下移动(例如,执行从L-X到LLC的驱逐或者将数据从LLC移动到L-1)而无需通知节点外的任何结构。该移动还需要记录在节点本地的CLB中(610至630)。这意味着存储在节点的CLB(610到630)中的PR区域的CLT信息可以不同于(例如,其是更新的)存储在DIR 660中的区域的CLT信息。
当第二节点(例如,690)访问PR区域时(经验研究表明这是相对罕见的事件),其将在其所有CLB 691至693中未命中并且将向DIR 660发送请求以获得访问数据所需的适当位置信息LI,并允许在CLB 691到693中创建自己的CLB条目。由于此请求是针对PR区域的,因此DIR 660可能没有最新信息,其需要从节点1 601获取最新的位置信息,并确保节点1 601的CLB不再将该区域标记为PR,针对该区域更新其自己的CLT信息,设置与节点2 690对应的PB位并将针对该区域的适当CLB的信息发送到节点2 690。节点2 690现在可以创建其自己的与该区域管理的本地CLB条目。在向DIR 660发送最新位置信息之前,节点1 601可能必须完成其针对该区域的所有正在进行的直接数据存储器请求。
如果另一个节点(例如,节点N 699)访问该区域,其也将在其所有CLB中未命中并且也将向DIR 660发送请求,该DIR 660现在具有关于该区域的最新信息并可以向节点N699回复适当的信息,并且还将为请求节点(即,节点N 699)设置该区域的PB位。
具有多于一个被设置的PB位的区域被分类为共享区域(SR)。这意味着多个节点具有正在追踪该区域的位置信息的CLB。其还意味着相应PB位被设置的节点可以将该区域的数据单元存储在它们的任何高速缓存(例如,620到640)中。如果该区域被分类为SR,则来自CPU(例如,600)访问数据单元的、无法在该节点内(例如,通过高速缓存L-1 620至L-Y 640)本地满足的请求可能需要发起全局一致性事务。
对SR或PR区域的全局一致读取事务(通过本地高速缓存(例如,高速缓存L-1 620至L-Y 640)不能满足的读取)可以利用从其本地CLB(例如,CLB-1 610至CLB-X 630)检索的位置信息直接访问数据而不涉及DIR 660或与该节点之外的可由位置信息识别的任何节点通信。这在本文中称为直接到主访问(a direct-to-master access)。实证研究表明,对于SR区域的全部全局一致性事务中有75%是直接到主的读取事务访问。因此,如果CPU发起的全局事务的20%是针对SR页面的,而75%不需要访问DIR,则当使用上文提到的高速缓存结构和技术中的至少一些时,95%的全局一致性事务不需要访问DIR,而针对传统的基于目录的协议,所有全局一致事务都需要访问DIR。
由于SR区域具有追踪其数据单元的位置的若干节点,因此需要在追踪该区域的所有节点(即,具有针对该区域的主动CLB条目的那些节点)中反映它们的数据单元移动,并且在这些节点中更新移动的数据单元的位置信息。追踪数据单元的不同节点的CLB的位置信息应以一致的方式更新,使得CLB就数据所在的位置(称为其主位置)达成一致。也可能极有可能或者可选地保证基于从CLB检索的位置信息访问的数据单元位置包含正确的数据(称为确定性)。
这种数据单元移动的一个常见原因是全局一致性写入,即,当前对数据单元没有写入许可的请求节点通过全局一致性请求(例如无效请求或独占读取请求)来请求写入许可。完成请求后,数据单元将仅驻留在请求节点中。
全局一致性写入可以由请求节点(例如,601)发送到目录660,目录660(其定位相应的目录条目)来检索该区域的对应PB位并将请求转发到设置了对应PB位的所有节点(请求节点除外),这些节点被称为从节点(例如节点690和699)。当从节点确保源自该从节点的针对该数据单元的任何未来请求将引导至该请求节点时,从节点发送ACK消息。这可以例如通过将它们的CLB中的数据单元的位置信息改变为指向请求节点(601)来实现,该请求节点将成为新的主节点。ACK消息可以被发送到DIR 660或者直接发送到请求节点601,在ACK消息被发送到DIR 660的情况下,DIR 660聚合(aggregate)ACK消息并且一旦接收到所有ACK即向请求节点发送ACK。一旦请求节点知道已经接收到所有ACK,其已获得针对高速缓存行的独占写入权限并完成请求。在完成请求后,可以将完成消息发送到DIR 660。
数据移动的另一个常见原因是驱逐(也称为替换)。节点本地的驱逐(例如从L-1620到L-Y 640的驱逐)被本地处理,通过其本地CLB条目追踪,并且在节点外不可见。然而,主数据单元的全局驱逐(例如从L-Y 640中的位置641到LLC 670中的新位置671)必须由追踪该区域的所有节点(即,具有针对该区域的CLB条目的所有节点)反映。可以通过首先将存储在其旧位置(641)中的数据单元的值复制到新位置(671),同时保持存储在旧位置(641)中的数据有效来实现全局驱逐。然后,从请求节点(例如,601)向DIR(660)发送具有关于新位置(671)的信息的全局一致性驱逐请求,DIR(660)将请求转发到从节点(例如,690和699)。一旦从节点将其对应的位置信息更新到新位置(671),它们就发送ACK消息。一旦请求节点知道所有ACK已被发送,其获得对数据单元的驱逐许可,并且可以回收旧位置并且完成请求。一旦完成请求,就可以向DIR 660发送完成消息。
在针对所请求的高速缓存行的一些未完成请求(例如,所有直接到主的请求)已经完成之前,从节点可以不发送ACK消息。
目录660可以实现封锁(blocking)机制,其确保每个数据单元最多只能有一个特定类型的未完成全局请求。这种请求类型的示例可以是全局一致性写入和全局一致性驱逐请求。在请求完成之后对高速缓存行的封锁结束,或者由一致性协议另外指定。封锁机制可以是精确的,例如通过目录中的每个数据单元一个锁来实现,或者可以是高度近似的,其中地址散列到有限的锁池,并且对数据单元的封锁将封锁对散列到同一锁的所有其他数据单元的访问。
可以用区域粒度而不是数据单元粒度来完成封锁,CLB/目录溢出/填充请求中的一些也需要封锁直到它们的更新已经完成。这保证了当节点和目录在溢出/填充CLB信息的时候不对全局一致性的写入请求进行处理。
另一个有用的区域分类是在DIR 660中没有与该区域关联的PB位被设置的区域。这意味着区域数据单元不会存在于节点的高速缓存L-1至L-Y中的任何一个中,并且没有节点当前可以访问其数据单元。这被称为非追踪区域(UR)。UR区域的数据仍可以被高速缓存在LLC中。UR区域的数据单元可以在没有任何全局一致性请求的情况下从LLC 670中驱逐。在DIR 660中没有相应条目的区域被分类为存储器区域(MR)。MR区域的数据单元既不能高速缓存在节点中也不能高速缓存在LLC中。从DIR 660替换CLT条目意味着应从LLC中强力地驱逐该区域的所有数据单元。
图6的高速缓存***可以是少标记高速缓存***,即这样一种高速缓存***,其中存储在高速缓存(例如,节点的高速缓存L-1至L-Y以及LLC)中的数据单元不具有与其关联的地址标记。相反,具有与其关联的地址标记的位置信息将识别数据单元存储的位置。包括在图6中的传统的高速缓存(LO-1和LO-D)仍然可以具有与其高速缓存数据单元关联的地址标记。
图7是说明具有许多片最后一级高速缓存的通用少标记高速缓存层次结构的框图。图7与图6不同之处在于,LLC已被切割成LLC片(LLC-1 771,LLC-2 772和LLC-N 779)并且被放置在片上网络(NoC)750靠近节点的一侧。每个片分别配置有替换计数器(RC)775、776和777。这些计数器对每个LLC片中的高速缓存替换数进行计数。应该注意,图7中所示的示例将LLC片放在每个节点之外(由虚线框表示)。即使每个LLC片(例如,771)与每个节点相邻并且可以从节点的CPU(700)以非常短的延迟访问,它们仍然可以被视为大型全局LLC的一部分。从CLB-X(例如,730)驱逐区域条目不一定要求驻留在靠近节点的LLC片(例如,771)中的相应区域数据被强制驱逐。此外,节点(例如,701)可以在其CLB(例如,710)中存储位置信息,该位置信息直接指向与远程节点相邻的远程LLC片中的位置(例如,772中的位置),并且访问该数据而不需要通过DIR 760或该节点(790)的任何CLB的间接步骤(indirections)。
现存的LLC实施方式使人联想到图7(仅就LLC物理上划分为被物理地放置在靠近节点的存储体而言,与图7的其他元件无关)。然而,现今的解决方案(例如来自英特尔的服务器芯片)根据其地址将数据单元放置在LLC存储体中,在假设有四个节点的情况下,这导致了在LLC存储体中命中的访问的25%将在靠近节点的存储体中命中。根据上面讨论的示例的至少一些(例如,基于位置信息指针)描述的高速缓存访问技术允许充分灵活地放置数据单元,并且不依赖于数据单元的地址,这可能会增加LLC命中的本地部分。一种选择是,对共享数据被访问的所有LLC片中的所有共享数据进行复制。但是,复制所有LLC片中的所有共享数据将消耗LLC容量。如前所述,20%的区域通常是共享的。假设所有共享区域都需要在所有节点中复制,则四节点***将占用LLC容量的80%用于存储复制的LLC数据。这可能是次优的,促使需要更智能的LLC分配/复制决策。
当数据单元首先被分配给LLC片时,总是将其放在与访问它的CPU相邻的LLC片中似乎是有益的。然而,由于在不同CPU中运行的线程可能具有不同的LLC容量要求,因此将数据单元放置在远程LLC片中并因此“窃取”其一些本地LLC容量有时可能是有益的。在至少一个示例中,基于LLC片高速缓存压力做出分配决策。每个LLC片都有替换计数器(RC 775、776、777),用于记录在该片中发生的替换次数。在至少一个示例中,周期性地监视这些计数器以确定每个LLC片的高速缓存压力,其中更高的计数指示更高的压力。为数据单元分配LLC空间时,如果其高速缓存压力最低,则始终在本地LLC片中分配空间。如果不是,则将在当前具有最低压力的远程LLC片中进行其分配中可配置的一部分,而在本地LLC片中进行剩余的分配。在至少一个示例中,远程LLC片中的空间分配将仅在某些情况下发生,例如,如果本地LLC片的高速缓存压力高于某个阈值。
在传统的高速缓存拓扑中,单个最后一级高速缓存由多个节点共享(例如图1中的L2 103或图6的LLC 670),驻留在LLC(称为共享高速缓存)中的每个数据单元的通常至多存在一个副本,而专用于节点的高速缓存(也称为专用高速缓存)(例如图1的L1高速缓存102)各自可以存储相同数据单元的复制副本。图7的LLC片可以选择将数据单元的单个副本存储在各LLC片中的一个中并且使所有节点使用相同的位置信息进行访问,或者可以选择将数据单元的多个所谓的复制副本存储在多个LLC片中。
例如,数据单元774可以是数据单元的唯一LLC副本,并且CLB-1 710中的CLT 712和CLB-1 791中的CLT都具有指向位置774的关联位置信息。这在本文中被称为共享的LLC数据。在决定复制数据之后,可以将数据的副本放入位置773并且将CLT 712中的关联位置信息改变为指向位置773。存储在773中的数据单元被称为本地LLC数据单元。存储在773中的本地数据只能通过在节点1 701本地的CLB中的查找来间接访问,而存储在位置774中的全局数据仍然可以通过例如节点N 799,通过使用指向位置774的位置信息而直接访问。
在至少一个示例中,图7的高速缓存***是少标记高速缓存***,即这样一种高速缓存***,其中存储在高速缓存(例如,节点的高速缓存L-1至L-Y以及LLC)中的数据单元不具有与其关联的地址标记。相反,具有与其关联的地址标记的位置信息将识别数据单元存储的位置。包括在图7中的传统的高速缓存(LO-1和LO-D)仍然可以具有与其高速缓存数据单元关联的地址标记。
总结参照图3至图7的讨论,本领域技术人员将理解,高速缓存层次结构的现今的实现可能需要对数据单元进行许多高成本的操作和移动。其中一些操作的成本取决于先前已对数据单元应用了哪些操作,例如,如果数据单元以可写状态进入L1高速缓存,则对数据单元的读取请求将降低对数据单元的后续写入操作的成本。此外,数据移动的成本取决于先前操作所做出的放置(placement)决定。
因此,期望提供预测未来操作并且能够为当前操作做出更优化的选择的***和方法。
发明内容
根据本发明构思的至少一个示例实施例,数据单元被分类为属于数据集并且被假设具有与相同数据集的其他数据单元类似的行为。通过对属于数据集的数据单元发生某些事件进行计数来记录数据集的当前行为。该数据集被预测未来会有类似的行为,这会提示为针对该数据集的未来操作应用某些修改或(可替换地)优化。一种这样的修改或(可替换地)优化包括针对二维非均匀高速缓存架构(NUCA)阵列的未来每数据集放置决定。本发明构思的至少一些示例实施例还包括用于预测每个数据集的各种行为的通用方法,对于该方法,存在并可应用已知的修改或(可替换地)优化。
根据本发明构思的至少一些示例实施例,一种用于处理器的数据管理方法,所述处理器被分配有第一高速缓存、第二高速缓存和行为历史表,所述方法包括:跟踪存储在所述第一高速缓存和所述第二高速缓存中的至少一个中的重用信息学习高速缓存行;将重用信息记录在所述行为历史表中;并且基于所述行为历史表中的所述重用信息,关于将对存储在所述第一高速缓存和所述第二高速缓存中的多个高速缓存行执行的未来操作确定放置策略。
根据本发明构思的至少一些示例实施例,一种多处理器***,包括:第一高速缓存和第二高速缓存,其具有彼此不同的高速缓存级;以及至少一个处理器核,其被配置为基于记录在行为历史表中的重用信息,关于将对存储在所述第一高速缓存和所述第二高速缓存中的多个高速缓存行执行的未来操作确定放置策略,其中,所述重用信息是关于存储在所述第一高速缓存和所述第二高速缓存中的至少一个中的学习高速缓存行的重用的信息。
根据本发明构思的至少一些示例实施例,一种非暂时性计算机可读存储介质,其包括指令,当由分配有第一高速缓存、第二高速缓存和行为历史表的处理器执行所述指令时,使得所述处理器执行包括以下步骤的操作:跟踪存储在所述第一高速缓存和所述第二高速缓存中的至少一个中的重用信息学习高速缓存行;将重用信息记录在所述行为历史表中;以及基于所述行为历史表中的所述重用信息,关于将对存储在所述第一高速缓存和所述第二高速缓存中的多个高速缓存行执行的未来操作确定放置策略。
附图说明
通过参照附图详细描述本发明构思的示例实施例,本发明构思的示例实施例的以上和其他特征和优点将变得更加明显。附图旨在描述本发明构思的示例实施例,并且不应被解释为限制权利要求的预期范围。除非明确说明,否则附图不应视为按比例绘制。
图1是示出计算机***的一部分的框图;
图2是用于解释计算机***的示例高速缓存层次结构的框图;
图3是用于解释包括组关联高速缓存和组关联数据转译后备缓冲器(TLB)的两级高速缓存层次结构的传统实施方式的框图;
图4是示出少标记高速缓存的示例实施方式的框图;
图5是示出包括连接至两级高速缓存层次结构和两级高速缓存位置缓冲器(CLB)层次结构的两个CPU的计算机***的一部分的框图;
图6是示出包括单一的单片式最后一级高速缓存的少标记高速缓存层次结构的计算机***的一部分的框图;
图7是示出具有许多片最后一级高速缓存的通用少标记高速缓存层次结构的框图;
图8是示出根据本发明构思的至少一些示例实施例的包括扩展为支持未来行为预测(FBP)的标记高速缓存层次结构的计算机***的一部分的框图;
图9是示出根据本发明构思的至少一些示例实施例的包括扩展为支持未来行为预测(FBP)的少标记高速缓存层次结构的计算机***的一部分的框图;
图10是示出根据本发明构思的至少一些示例实施例的实现行为历史表(BHT)的三种可替换方式的框图;
图11是示出根据本发明构思的至少一些示例实施例的包括非均匀高速缓存架构(NUCA)高速缓存***的计算机***的一部分的框图,其中L2和L3都是非均匀高速缓存;
图12是示出根据本发明构思的至少一些示例实施例的针对NUCA放置的行为历史表(BHT)的框图;以及
图13是示出根据本发明构思的至少一些示例实施例的针对计算机***中的一般预测和修改或(可替换地)优化的行为历史表(BHT)
的框图。
具体实施方式
如根据本发明构思的领域的传统那样,在功能块、单元和/或模块方面描述并且在附图中示出了实施例。本领域技术人员将理解,这些块、单元和/或模块通过电子(或光学)电路物理地实现,例如可以使用基于半导体的制造技术或其他制造技术形成的逻辑电路、分立组件、微处理器、硬连线电路、存储器元件、布线连接等。在由微处理器或类似物实现的块、单元和/或模块的情况下,可以使用软件(例如,微代码)对它们进行编程以执行本文所讨论的各种功能,并且可以可选地由固件和/或软件驱动。可替换地,每个块、单元和/或模块可以由专用硬件实现,或者可被实现为执行某些功能的专用硬件和执行其他功能的处理器(例如,一个或多个编程的微处理器和相关电路)的组合。而且,在不脱离本发明构思的范围的情况下,实施例的每个块、单元和/或模块可以在物理上分成两个或更多个交互且离散的块、单元和/或模块。此外,在不脱离本发明构思的范围的情况下,实施例的块、单元和/或模块可以物理地组合成更复杂的块、单元和/或模块。
在执行应用期间,对数据单元进行许多高成本操作和移动。这些操作中的一些操作的成本取决于先前已对数据单元应用了哪些操作,例如,如果数据单元以可写状态进入L1高速缓存,则对数据单元的读取请求将降低对数据单元的后续写操作的成本。此外,如果已知该区域将来可能保持专用,则可以更理想地或(可替换地)最佳地处理应用于专用区域的操作。此外,数据移动的成本取决于先前操作所做出的放置决定。例如,如果可能被重用的数据被放置在比不太可能被重用的数据更快的高速缓存中,则未来的操作更可能在快速高速缓存中找到所请求的数据。因此,期望提供这样的***和方法,其预测未来操作,并且能够为当前操作做出更期望的选择或(可替换地)最佳的选择。
根据本发明构思的至少一些示例实施例,可以使用未来行为预测(FBP)机制来预测这样的未来操作。根据本发明构思的至少一个示例实施例,FBP由以下这些组件中的一些或全部的组合构建:
1.识别数据集:可以跟踪每个单独的高速缓存行的行为。另一种替代方案是跟踪被认为具有类似行为的高速缓存行组(在本文被称为数据集)的行为。根据本发明构思的至少一个示例实施例,确定在地址空间中彼此靠近的数据单元属于同一数据集。例如,根据至少一些示例实施例,地址空间可以被划分为N组不同的连续地址组。此外,N组地址可以分别对应于N个数据集,使得具有N个地址组中的特定组所包括的地址的数据单元被认为属于N个数据集中的与该特定组对应的数据集。根据本发明构思的至少一个示例实施例,可以通过程序员、编译器和/或运行时***的辅助来识别每个数据集。根据本发明构思的至少一个示例实施例,识别这种指令的程序计数器(PC)值(即,存储在PC中的值或指令地址)被用于识别高速缓存行所属的数据集,所述指令将该高速缓存行从存储器或从高于特定FBP级阈值的高速缓存级置入高速缓存层次结构。根据本发明构思的至少另一示例实施例,导致数据所驻留的页面的TLB故障的PC值被用于识别该页面的数据集。根据本发明构思的至少另一示例实施例,对于数据所驻留的区域,在某个CLB级引起CLB未命中的PC值被用于识别该区域的数据集。根据本发明构思的至少另一示例实施例,生成以下这种“高速缓存行请求”中的至少一个的指令的PC值被用于识别数据集:所述“高速缓存行请求”发起硬件预取流开始。根据本发明构思的至少另一示例实施例,调用栈信息(例如,对最后函数调用的PC值的识别)被用于识别数据集。根据本发明构思的至少一个示例实施例,组合上述方案中的两个或更多个以识别数据集。本领域技术人员将认识到,为了节省存储空间,调用栈和PC值都可以由它们的地址位的某子集表示,或者由使用它们的地址位作为输入的某些其他变换函数来表示。根据本发明构思的至少一个示例实施例,通过数据集标识符(DID)识别数据集。根据本发明构思的至少一个示例实施例,DID至少部分地由来自CP的一些位、一些调用栈信息和/或地址范围的一些地址位组成。
2.检测特殊使用:可以检测和记录高速缓存行的一种或多种类型的特殊使用。例如,根据本发明构思的至少一个示例实施例,由对高速缓存行或数集据的特殊使用的出现的次数进行计数的计数器来跟踪和记录高速缓存行或数集据的某类型的特殊使用(例如,读取访问)的数量。每种类型的高速缓存行的使用可能可以被记录为特殊使用。待被跟踪和记录的这种特殊使用的类型包括但不限于读取访问、写入访问、高速缓存分配、高速缓存驱逐、从未重用(reuse)的高速缓存行的高速缓存驱逐、从专用区域到共享区域的区域转换、从仅可读变为可写的高速缓存行的转换、当前驻留在高速缓存层次结构中的高速缓存行的数量,或当前驻留在高速缓存层次结构中的区域或页面的数量。根据本发明构思的至少一个示例实施例,重用信息由单个重用位构成,其记录在高速缓存行、区域或页面在特定级处初始安装(或存储)之后是否已经被访问。根据本发明构思的至少一个示例实施例,通过在替换高速缓存行时查看高速缓存行的重用信息来确定在特定高速缓存级对高速缓存行的重用。本领域技术人员理解,可以跟踪和记录更多特殊使用类型,并且不需要枚举完整列表。根据本发明构思的至少一个示例实施例,每个核记录高速缓存行的一些特定使用,而其他特定使用针对整个***进行记录。现代计算机通常配备有大量的事件计数器,能够为大量不同的硬件事件进行计数。所有这些事件也可以通过所描述的机制记录。
3.选择性学习:有时,针对所有高速缓存行记录每个特殊使用可能成本太高。根据本发明构思的至少一个示例实施例,选择所谓的学习高速缓存行,并且仅针对这些高速缓存行收集特殊使用。根据本发明构思的至少一个示例实施例,随机选择学习高速缓存行。根据本发明构思的至少一个示例实施例,仅属于某些页面、区域或其他类型的地址范围(可以称为学习页面、学习区域或学习地址范围)的高速缓存行是学习高速缓存行。根据本发明构思的至少一个示例实施例,随机选择每个这样的学习页面、区域或地址范围。根据本发明构思的至少一个示例实施例,每个这样的页面、区域或地址范围被标为学习地址范围或学习高速缓存行。还可以基于它们属于哪个数据集(DID)来选择学习高速缓存行。根据本发明构思的至少一个示例实施例,所有高速缓存行都是学习高速缓存行。还可以组合上述选择方法中的几种。
根据本发明构思的至少一个示例实施例,以特殊方式操作学习高速缓存行。例如,学习高速缓存行可以安装在所有高速缓存级中,而其余高速缓存行将仅安装在由特定放置策略(例如,与其DID相关联的放置策略)识别的级中。根据本发明构思的至少一个示例实施例,仅针对学习高速缓存行检测特殊使用,如上文中所述的“2检测特殊使用”。
4.记录特殊重用:当检测到对学习高速缓存行的特殊使用时,将该检测记录在行为历史表(BHT)中。根据本发明构思的至少一个示例实施例,行为历史表(BHT)用于记录数据重用。BHT从不同高速缓存级的学习高速缓存行收集重用信息。在一个实施方式中,BHT中的每个条目与BHT标识符(BHTI)相关联,其至少部分是数据集标识符(DID)。每个BHT具有一些行为计数器(BC),每当记录针对与BHT条目相关联的数据集的相应特殊使用时,这些行为计数器被更新。BHT可以被组织为由BHTI位中的一些索引并由BHTI位中的一些标记的关联存储。BHT也可以被组织为由一些BHTI位索引的表,但是不具有标记。
当检测学习高速缓存行的特殊使用时,至少部分地通过使用与高速缓存行相关联的DID来选择关联的BHT条目。与检测到的特殊使用对应的所选BHT条目的行为计数器(BC)递增或递减。
5.基于历史的策略:基于在BHT中收集的重用信息,可以确定用于对某些高速缓存行、区域、页面或其他地址范围的未来操作的策略。例如,该策略可以基于以下假设:针对数据集收集的计数器值将代表数据集的未来行为。例如,可以周期地检查一个或多个BHT条目的计数器,并且可以确定用于将来访问与BHT条目或多个BHT条目对应的数据集的策略。例如,对于由DID识别的数据集Z,其已经在高速缓存级X但未在高速缓存级Y处显示出良好的重用(例如,重用等于或高于可基于经验分析设置的阈值),相应的未来策略是将数据集Z安装在高速缓存级X中,而不是高速缓存级Y中。在另一个示例中,由DID识别的数据集A,其显示比由不同的DID识别的数据集B更频繁的重用,在访问具有可变响应时间的高速缓存(例如,非均匀高速缓存架构(NUCA))时,未来的策略则是将数据集A安装在高速缓存的较快部分中并将数据集B安装在高速缓存的较慢部分中。在又一示例中,对于由DID识别的数据集C,其已经显示出比由不同DID识别的数据集D更好的重用,并且其中已经识别出数据集C主要由CPU P访问,未来策略是将数据集C安装在关于CPU P具有更短的访问的高速缓存或高速缓存的一部分中,在这之后再确定对数据集D的适当放置。
每个BHT条目的最新策略决定可以与BHT条目一起存储。例如,在对被识别为特定DID的数据集A的高速缓存行做出安装决定之前,该DID可用于查找BHT中的相应条目以及其用于指导高速缓存行安装的最新策略。
图8是示出根据本发明构思的至少一些示例实施例的包括扩展为支持未来行为预测(FBP)的标记高速缓存层次结构的计算机***的一部分的框图。图8示出了根据本发明构思的至少一个示例实施例的基于传统高速缓存层次结构(即,具有标记的高速缓存,而不是少标记高速缓存)中的未来行为预测(FBP)的实施方式的一个示例,其可被视为图3的扩展。尽管图8仅示出了两个高速缓存级,但是其功能可以概括为多于两个高速缓存级。图8中所示的两级高速缓存层次结构还可以构成在由许多这样的节点构建的多处理器***中的一个节点。L1高速缓存810和L2高速缓存820中的每个高速缓存行已经利用以下字段扩展:重用信息字段R(813和823),用于记录在高速缓存行驻留在高速缓存中时高速缓存行的重用行为;学习位L(811,821),用于指示相应的高速缓存行是否是学习高速缓存行;以及数据集DID字段(812,822),用于识别具有相应的高速缓存行的数据集。图8的高速缓存层次结构的剩余未编号元件以与图3中所示的对应元件相同的方式起作用,并且参照上述那些元素的前述描述。
还添加了行为历史表(BHT)870。表870中的每个条目包含数据集标识符DID 871,用于识别与每个条目相关联并且例如被用作地址标记以允许在BHT 870结构中的关联查找的数据集,以及针对该数据集收集的一些重用信息。在该实施方式示例中,示出了对在每级(1R、2R、3R…)处具有重用的学习高速缓存行的数量进行计数的计数器(873,875)。还显示了对未使用的学习高速缓存行(1U、2U…)的数量进行计数的计数器(874,876)。根据计数器值,选择数据集的放置策略。当前放置策略存储在策略字段POL 872中。根据本发明构思的至少一个示例实施例,策略由高速缓存层次结构中的每级的一个位表示,用于指示由DID871所识别的数据集是否应当安装在该高速缓存级中。本领域技术人员将理解,可以使用多种不同的实现选择(包括图10中的一些实施例)来实现类似的功能,这将在下面更详细地讨论。
图10是示出根据本发明构思的至少一些示例实施例的实现行为历史表(BHT)的三种可替换方式的框图。参照图10,示例(A)示出了组关联BHT 1000,其中部分基于DID的一些索引功能选择一个集合(在该示例中示出的最顶层集合)并且将该集合的所有地址标记与一些查找关键字比较以确定命中。部分DID用作地址标记1001和1004以识别BHT 1000中的组关联条目。在该示例中,假设命中1001。如上所述,其BHT条目包含一组计数器,以及已由先前的计数器值确定的一些策略POL 1002。在示例(B)中,DID的一些部分用于选择访问BHT的索引。所选择的单个条目将代表该DID和具有相同索引功能而未执行任何比较的所有其他DID(在该示例中,使用DID索引最顶层条目并且使用该条目,例如使用POL 1012以确定策略)。示例(C)是具有一个BHT 1020和多个策略表(PT 1022和PT 1023)的***,可能分布在靠近每个CPU核的位置。
根据本发明构思的至少一个示例实施例,FBP用于针对具有四个高速缓存级(分别为4kB、32kB、256kB和8MB)的高速缓存层次结构做出放置决定。扩展每个高速缓存条目以存储学***均而言,与不具有放置策略的标准高速缓存层次结构相比,FBP少执行50%的安装。
图9是示出根据本发明构思的至少一些示例实施例的包括扩展为支持未来行为预测(FBP)的少标记高速缓存层次结构的计算机***的一部分的框图。图9示出了根据本发明构思的至少另一示例实施例的少标记高速缓存层次中的FBP的实现的示例,其可以被视为图4的扩展。尽管图9仅示出了两个高速缓存级,但是其功能可以扩展到两个以上的高速缓存级。L1高速缓存930和L2高速缓存940中的每个高速缓存行已经利用重用信息字段R 934和R 944和数据集DID字段来扩展,其中所述重用信息字段记录高速缓存行在其驻留在每个高速缓存级时的重用行为,数据集DID字段识别高速缓存行的数据集。在此示例中,数据集标识符(DID)尚未被添加到L1高速缓存和L2高速缓存中的每个高速缓存行。相反,CLB1 910和CLB2 920中的每个条目已经分别利用与其每个条目相关联的DID信息914和DID信息915进行扩展。L1高速缓存930和L2高速缓存940中的每个高速缓存行的C2P指针932,942指向CLB2 920中的条目(反过来其可以指向CLB1 910)。关联的CLB 2条目的DID 915确定L1高速缓存930和L2高速缓存940中的每个高速缓存行的数据集ID。图9的该部分中的其余元件以与上面关于图8描述的那些相同的方式起作用,为简明起见参照该描述。
与图8中类似的行为历史表(BHT)970也被添加到图9的***中。表中的每个条目都包含用于识别与每个表条目关联的数据集的数据集DID 971,以及针对该数据集收集的一些重用信息。在该示例中,示出了对在每个级1R、2R、3R…的重用的数量进行计数的计数器并分别被引用为973、975、977。还示出了对未使用的高速缓存行1U、2U…的数量进行计数的计数器,并被引用为974和976。基于计数器值,示出了针对数据集的放置策略972。本领域技术人员将理解,可以使用多种不同的实施方式选择来实现类似的功能。
图8和图9中所示的BHT可以是多处理器配置的一部分,其中图中所示的CPU和高速缓存构成这样的节点:其为由两个或多个这样的节点构建的多核配置的一部分。在这样的配置中,针对节点和关于该节点中收集特殊使用的信息,BHT可以是本地的,或者对于多处理器以及关于该多处理器中所有节点的特殊使用的信息,BHT可以是全局的。根据本发明构思的至少一个示例实施例,多处理器可以同时具有其节点本地的BHT和全局BHT。
如前所述,可以至少部分地通过这种指令的PC值来识别数据集:所述指令生成导致硬件预取流开始的“高速缓存行请求”中的至少一个。与根据本发明构思的一个或多个示例实施例描述的任何其他数据集类似,该数据集将像任何其他数据集一样选择学习访问并且针对预取数据集学习跨高速缓存级的最佳放置策略。
所谓的非均匀高速缓存架构(NUCA)正变得越来越普遍。NUCA指的是这样的多处理器***,其中在各个核之间逻辑共享物理地分布在各个核之间的一个或多个高速缓存级。在NUCA***中,核对共享NUCA高速缓存的“它的片”的访问时间比对NUCA共享高速缓存的其他片的访问时间短。图11是示出根据本发明构思的至少一些示例实施例的包括非均匀高速缓存架构(NUCA)高速缓存***的计算机***的一部分的框图,其中L2和L3都是非均匀高速缓存。图11示出了NUCA多核***,其中CPU 1101和1120分别具有专用L1高速缓存1102和1122。L2高速缓存是由单独的L2片(例如,1103和1123)实现的逻辑共享NUCA高速缓存,其通过交换器(SWITCH)1140连接到CPU。每个CPU(例如,1101和1120)可以访问所有L2片但是对它们的L2片(分别为1103和1123)的访问时间较短。每个L2片还具有相邻的L3片。L3片以类似的方式形成逻辑上共享的NUCA高速缓存,即,CPU 1101对它的片的L3 1104的访问时间比对任何其他L3片的访问时间短。然而,对L3片的访问时间基本上长于对相邻L2片的访问时间。将这种具有两级的NUCA高速缓存的L2/L3NUCA结构称为二维NUCA阵列。
如果高速缓存行可以靠近对它们进行访问的核来放置将是有益的。将最频繁重用的高速缓存行放在L2高速缓存中而不是L3高速缓存中也是有益的。在诸如图11所示的NUCA中,可以基于针对从每个CPU开始并访问每个L2片和L3片的访问的等待时间成本、通信成本和能量成本来确定对每个L2片和L3片的访问成本。
NUCA感知放置(NAP)算法是针对NUCA***中的期望的或(可替换地)最佳的高速缓存行放置的FBP的专用实施方式。初始NAP描述针对少标记NUCA***,例如图6、图7和图9中描绘的***被修改为具有L2NUCA高速缓存和L3NUCA高速缓存并且其BHT表970被NUCA历史表(NHT)1210替换,这将在下面参照图12更详细地讨论。类似的NAP算法也可以应用于基于标记的NUCA***,例如,图8被修改为具有L2NUCA高速缓存和L3NUCA高速缓存并且其BHT表870被NUCA历史表(NHT)1210替换,这将下面参照图12更详细说明。
NAP利用DID识别每个区域的数据集,如图9所示(例如,914和915),并且可以具有专门分配的学习区域,其由区域信息RI字段(913)中的专用L位(未明确示出)标记。
图12是示出根据本发明构思的至少一些示例实施例的针对NUCA放置的行为历史表(BHT)的框图。参照图12,图12示出了NAP放置机制使用的NUCA历史表(NHT)1210。与FBP类似,此表可以通过多种方式表示。图12中所示的表示类似于图10的FBP表示(B)(1010)。NAP的目标是确定用于对NHT条目进行索引的相关DID的策略(POL 1211)。为了帮助确定策略,每个NHT条目存储多个计数器,通过对与该条目相关联的高速缓存行的特殊使用来更新所述多个计数器。
根据本发明构思的至少一个示例实施例,假设***中有四个CPU(核),每个核有一个重用计数器,如图12的C1、C2、C3和C4所示(分别为1212、1213、1214、1215)。根据本发明构思的至少一个示例实施例,大小计数器S(1217)用于估计与NHT条目相关联的数据结构的大小。根据本发明构思的至少一个示例实施例,“未使用的计数器”对在针对高速缓存行的单次重用出现之前被替换的高速缓存行的数量进行计数。
每当与条目相关联的L2或L3中的学习高速缓存行被相应的核访问时,NAP条目的每核重用计数器递增。根据本发明构思的至少一个示例实施例,每个计数器仅针对特定类型的访问(例如仅针对读取访问)而递增。根据本发明构思的至少一个示例实施例,每个计数器针对所有访问而递增,而不仅仅针对学习高速缓存行。
每当将与条目相关联的数据单元带入高速缓存***时,NAP条目的大小计数器递增,并且每当从高速缓存***中逐出数据单元(例如,与条目相关联的数据单元)时,NAP条目的大小计数器递减。根据本发明构思的至少一个示例实施例,每当在CLB层次结构的某级分配/驱逐与条目相关联的CLB区域时,NAP条目的大小计数器递增/递减。根据本发明构思的至少一个示例实施例,每当在TLB层级的某级分配/驱逐与条目相关联的页面时,NAP条目的大小计数器递增/递减。根据本发明构思的至少一个示例实施例,与条目相关联的一些其他数据实体的分配和逐出将增大和减小大小计数器。
根据本发明构思的至少一个示例实施例,NHT条目包含“未使用”计数器U 1216。每次从特定高速缓存级驱逐从未在该高速缓存级重用的数据单元时,“未使用的”计数器1216递增。根据本发明构思的至少一个示例实施例,每次经过某高速缓存级驱逐从未在该高速缓存级重用的数据单元时,例如,数据单元从未在L2或L3级重用并且被驱逐到高于L3的高速缓存级或驱逐到存储器时,未使用的计数器递增。未使用的计数器1216可用于确定数据集应绕过L2/L3高速缓存而仅安装在L1高速缓存中。
周期性地,基于在NHT 1210中收集的数据重新评估NUCA层次结构中的放置策略。这例如可以是,在执行了一定数量的指令之后、在执行了多次存储器访问之后、在一定数量的执行循环之后或当某些计数器达到阈值或(可替换地)预定值时。本领域技术人员将理解,可以使用许多其他形式来确定下一次放置重新评估。
在放置重新评估期间,NHT条目根据某优先级进行排序。根据本发明构思的至少一个示例实施例,NHT条目按与其大小有关系的其总重用计数进行排序,例如,通过将它们的总重用计数除以它们的大小计数或以某种其他方式来估计该关系。根据本发明构思的至少一个示例实施例,可以通过将各个每核重用计数器1211、1212、1213、1214相加来计算总重用计数。根据本发明构思的至少一个示例实施例,总重用计数由每个NHT条目中的单独计数器记录。
在放置重新评估期间,以某个优先级顺序来确定NHT中每个数据集的放置策略,其中每个数据集对应于NHT条目。相对于访问数据集的一个核或多个核,优先级最高的数据集放置在具有最低成本函数的高速缓存中。根据本发明构思的至少一个示例实施例,成本函数考虑从核到高速缓存的等待时间和/或通信成本。根据本发明构思的至少一个示例实施例,考虑了从核到高速缓存的访问的功率估计。根据本发明构思的至少一个示例实施例,考虑数据集的估计大小。如果认为数据集大小适合适配到所选高速缓存中,则将该高速缓存的与该数据集的大小成比例的一部分标记为正在使用。如果数据集大小被认为太大而无法适配到所选高速缓存中,则整个高速缓存将标为已使用,数据集的其余部分将使用第二低成本函数适配到该高速缓存中,依此类推,直到整个数据集已适配完毕。根据本发明构思的至少一个示例实施例,适配到每个高速缓存中的数据集的分数(fract ion)被记录为数据集的放置策略,例如25%的数据集被放置在L2高速缓存的CPU1的片,25%数据集的位置放在L2高速缓存的CPU2的片中,50%的数据集放在L3高速缓存的CPU1的片中。当最高优先级数据集已被放置时,将第二高数据集放置在尚未被标为已使用的高速缓存中,依此类推,直到放置了所有未被视为绕过L2/L3的数据集。
根据本发明构思的至少一个示例实施例,将确定一些数据集绕过L2/L3NUCA高速缓存并且不将其放置在其任何高速缓存中。根据本发明构思的至少一个示例实施例,根据各高速缓存之间的一些数据集大小分布来放置剩余数据集。根据本发明构思的至少一个示例实施例,放置将努力在放置在每个高速缓存中的数据集大小与数据集的实际大小之间实现相同比率。根据本发明构思的至少一个示例实施例,放置将努力在各高速缓存片之间实现相同的高速缓存压力,其中高速缓存压力例如可以被测量为与其大小相关地使用的每次从高速缓存中驱逐的数量。根据本发明构思的至少一个示例实施例,放置将努力在一个级的高速缓存(例如,L2)和一些其他级(例如,L3)的高速缓存的高速缓存压力之间达到期望的或(可替换地)预定的关系。根据本发明构思的至少一个示例实施例,放置将努力实现从所有高速缓存替换的各高速缓存行之间的相同替换年龄,其被定义为在高速缓存中在高速缓存行被替换之前其未被使用多长时间。根据本发明构思的至少一个示例实施例,放置将努力达到在一个级的高速缓存(例如,L2)和一些其他级(例如,L3)的高速缓存的替换年龄之间的期望的的关系或(可替换地)预定的关系。
新确定的放置被记录为新的放置策略并且作为与每个数据集相关联的策略被记录在,例如,相应数据集的NHT条目的策略字段1211中和/或在与1022或1023类似或具有其他一些表示的单独的策略表中。未来将数据安装到NUCA层次结构中将遵循放置策略,例如,25%的数据集安装在L2高速缓存的CPU1的片中,25%的数据集安装在L2高速缓存的CPU2的片中,50%的数据集安装在L3高速缓存的CPU1的片中。
根据本发明构思的至少一个示例实施例,估计每个数据集的大小和重用频率。周期性地制定新的全局安置决定。首先,单位大小具有最高重用率的数据集被放置在其最有利的位置。然后放置具有第二高频率/尺寸的数据集,依此类推,直到使用简单的预先打包算法(eager packing algorithm)放置所有已知集合。放置的目标是将具有最高重用概率的数据集靠近使用它的核来放置。
虽然该讨论集中在预测数据集的未来访问模式并且利用该预测来实现关于与图11中类似的高速缓存层次结构的高效NUCA放置,但是本领域技术人员将认识到,所描述的方法可以被推广以预测许多其他类型的未来行为并且针对未来操作应用修改或(可替代地)应用优化策略。
图13是示出根据本发明构思的至少一些示例实施例的针对计算机***中的一般预测和修改或(可替换地)优化的行为历史表(BHT)的框图。图13描绘了通用历史表(GHT),其中DID用于将由该DID识别的数据集与GHT条目相关联。GHT条目包含一些计数器,其例如对存在于大多数现代计算机***中的所谓的硬件计数器的任一个进行计数,其中硬件计数器被配置为对多个不同事件中的一个进行计数。对事件进行计数的任何现有或未来的计数器都可以用作这样的计数器。如图13所示,这里对这些事件的计数被组织为对发生事件的数据集DID相关联的事件进行计数。虽然图中显示了两个计数器:CTR1和CTR2(1312,1313),但每个GHT条目的计数器数量不限于两个。计数器可用于确定针对例如存储在GHT条目本身内数据集的某策略(如1311所示)。但是,每个数据集计数器可以有许多其他方式,并且可以许多其他方式组织它们的策略,包括但不限于图10中描述的组织。本领域技术人员可以例如理解如何使用该方法检测多种未来行为,包括但不限于:大多读取的高速缓存行、大多的专用区域、大多写入的高速缓存行、大多迁移共享的高速缓存行、大多生产者-消费者的高速缓存行、大多一次写入的高速缓存行、大多一次读取性的高速缓存行、大多对高速缓存行访问的区域或页面、大多稀疏的高速缓存行、大多可压缩的高速缓存行等,可以使用此方法预测。这些未来行为中的大多数具有已知的可以应用于未来对相应数据集的使用的修改或(可选地)优化。
为清楚起见,本文的大多数描述都一般性地描述了如何定位高速缓存行并将其返回到请求CPU的技术。该描述没有详细描述选择高速缓存行中包含的请求字并将其返回到CPU的各种方式。然而,本领域技术人员已知用于选择包含在高速缓存行内并且将所请求的高速缓存行返回到CPU的各种方法。
为清楚起见,本文中描述了高速缓存层次结构的数据的处理的大多数描述都描述了独占型高速缓存层次结构。本领域技术人员将理解,本发明构思的一个或多个示例实施例可以扩展为还包括包容型存储器层次结构和非独占型存储器层次结构。
尽管上述发明构思的一个或多个示例实施例与单处理器***和多处理器***相关联是有用的,例如以上分别关于图1和图2所示和所述的那些,但是主要与单处理器***相关联地示出了本发明构思的一个或多个示例实施例。然而,本领域技术人员将理解,结合单处理器***示出的发明构思的一个或多个示例实施例不限于这样的实施方式。
尽管以上在某些示例计算机架构的语境中进行了描述,但是高速缓存存在于图8至图13中所示的示例计算机***内部以及外部的许多其他设置中,并且本领域技术人员将理解,在计算机***的语境中上述发明构思的至少一些示例实施例也可以应用于这样的其他语境。这种使用的示例是虚拟存储器***,其将来自慢速、高容量存储器(例如磁盘或FLASH存储器)的数据高速缓存到可以使用动态RAM实现的更快和更小的高容量存储器中。在计算机***中进行高速缓存的其他示例包括(但不限于)磁盘高速缓存、web高速缓存和名称高速缓存。这种高速缓存的组织和高速缓存机制可能与上文讨论的高速缓存不同,例如,在组的大小、组的实现和关联性等方面存在变化。无论高速缓存机制本身的实现如何,本发明构思的至少一些示例实施例同样适用于实现各种高速缓存方案。
本申请中提供的方法或流程图可以在计算机可读存储介质中清晰体现的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。
因此已经描述了本发明构思的示例实施例,显而易见的是可以以多种方式改变本发明构思的示例实施例。不应将这些变化视为脱离本发明构思的示例实施例的预期实质和范围,并且对于本领域技术人员显而易见的所有这些修改旨在包括在所附权利要求的范围内。
Claims (20)
1.一种用于处理器的数据管理方法,所述处理器被分配有第一高速缓存、第二高速缓存和行为历史表,所述方法包括:
跟踪存储在所述第一高速缓存和所述第二高速缓存中的至少一个中的重用信息学习高速缓存行;
将重用信息记录在所述行为历史表中;并且
基于所述行为历史表中的所述重用信息,关于将对存储在所述第一高速缓存和所述第二高速缓存中的多个高速缓存行执行的未来操作确定放置策略。
2.根据权利要求1所述的用于处理器的数据管理方法,其中,所述行为历史表包括多个行为计数器,并且所述方法还包括:
每次与所述多个行为计数器中的至少一个行为计数器对应的使用类型相对于所述学习高速缓存行中的至少一个发生时,所述处理器更新所述至少一个行为计数器。
3.根据权利要求2所述的用于处理器的数据管理方法,其中,所述方法还包括:
每次通过读取请求访问所述学习高速缓存行中的至少一个时,所述处理器更新所述至少一个行为计数器。
4.根据权利要求1所述的用于处理器的数据管理方法,还包括:
将所确定的放置策略存储在所述行为历史记录表中。
5.根据权利要求1所述的用于处理器的数据管理方法,还包括:
在存储在所述第一高速缓存和所述第二高速缓存中的所述多个高速缓存行中随机选择至少一些高速缓存行作为所述学习高速缓存行。
6.根据权利要求1所述的用于处理器的数据管理方法,
其中所述第二高速缓存处于比所述第一高速缓存更高的级,并且所述学习高速缓存行存储在所述第一高速缓存和所述第二高速缓存中。
7.根据权利要求1所述的用于处理器的数据管理方法,其中,所述处理器包括第一核和第二核,并且所述第一核和所述第二核共享所述第一高速缓存和所述第二高速缓存。
8.根据权利要求7所述的用于处理器的数据管理方法,其中,所述第一核对所述第一高速缓存的访问时间比所述第二核对所述第一高速缓存的访问时间短,并且所述第二核对所述第二高速缓存的访问时间比所述第一核对所述第二高速缓存的访问时间短。
9.一种多处理器***,包括:
第一高速缓存和第二高速缓存,其具有彼此不同的高速缓存级;以及
至少一个处理器核,其被配置为基于记录在行为历史表中的重用信息,关于将对存储在所述第一高速缓存和所述第二高速缓存中的多个高速缓存行执行的未来操作确定放置策略,
其中,所述重用信息是关于存储在所述第一高速缓存和所述第二高速缓存中的至少一个中的学习高速缓存行的重用的信息。
10.根据权利要求9所述的多处理器***,其中所述行为历史表包括多个重用计数器,并且所述至少一个处理器核被配置为每次与所述多个重用计数器中的至少一个重用计数器对应的使用类型相对于所述学习高速缓存行的至少一个发生时,更新所述至少一个重用计数器。
11.根据权利要求9所述的多处理器***,其中所述行为历史表包括多个未使用的计数器,并且所述至少一个处理器核被配置为每次在所述学习高速缓存行的单次重用发生之前替换所述学习高速缓存行中的至少一个时,更新所述多个未使用的计数器中的至少一个。
12.根据权利要求9所述的多处理器***,其中,所述行为历史表包括策略字段,所述策略字段存储根据由所述至少一个处理器核根据所述放置策略确定的策略。
13.根据权利要求9所述的多处理器***,其中所述行为历史表包括指示与所述学习高速缓存行对应的地址标记的数据集标识符。
14.根据权利要求9所述的多处理器***,其中利用重用信息字段扩展所述学习高速缓存行中的每一个,所述重用信息字段被配置为存储所述学习高速缓存行的重用信息。
15.根据权利要求9所述的多处理器***,其中所述学习高速缓存行是存储在所述第一高速缓存和所述第二高速缓存中的至少一个中的多个高速缓存行中的每个高速缓存行。
16.根据权利要求15所述的多处理器***,其中利用学习位扩展每个学习高速缓存行,所述学习位指示所述学习高速缓存行是学习高速缓存行。
17.根据权利要求9所述的多处理器***,其中所述第二高速缓存处于比所述第一高速缓存更高的级。
18.根据权利要求9所述的多处理器***,其中,所述至少一个处理器核包括第一核和第二核,并且所述第一核和所述第二核共享所述第一高速缓存和所述第二高速缓存。
19.根据权利要求18所述的多处理器***,其中所述行为历史表包括第一核重用计数器和第二核重用计数器,所述第一核重用计数器响应于由所述第一核访问所述学习高速缓存行中的至少一个而递增,所述第二核重用计数器响应于由所述第二核访问所述学习高速缓存行中的至少一个而递增。
20.一种非暂时性计算机可读存储介质,其包括指令,当由分配有第一高速缓存、第二高速缓存和行为历史表的处理器执行所述指令时,使得所述处理器执行包括以下步骤的操作:
跟踪存储在所述第一高速缓存和所述第二高速缓存中的至少一个中的重用信息学习高速缓存行;
将重用信息记录在所述行为历史表中;以及
基于所述行为历史表中的所述重用信息,关于将对存储在所述第一高速缓存和所述第二高速缓存中的多个高速缓存行执行的未来操作确定放置策略。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762588715P | 2017-11-20 | 2017-11-20 | |
US62/588,715 | 2017-11-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109815163A true CN109815163A (zh) | 2019-05-28 |
Family
ID=64402044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811374838.1A Pending CN109815163A (zh) | 2017-11-20 | 2018-11-19 | 基于预测的高效高速缓存行处理的***和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11138121B2 (zh) |
EP (1) | EP3486785B1 (zh) |
KR (1) | KR102193689B1 (zh) |
CN (1) | CN109815163A (zh) |
TW (1) | TWI784084B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324306A (zh) * | 2020-02-16 | 2020-06-23 | 西安奥卡云数据科技有限公司 | 一种基于nvdimm的数据分类缓存分配方法 |
CN112231245A (zh) * | 2020-06-11 | 2021-01-15 | 谷歌有限责任公司 | 用于高速缓存的最佳接纳控制 |
CN116028388A (zh) * | 2023-01-17 | 2023-04-28 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11593167B2 (en) * | 2019-05-09 | 2023-02-28 | International Business Machines Corporation | Thread embedded cache management |
US11650742B2 (en) | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
US11494311B2 (en) | 2019-09-17 | 2022-11-08 | Micron Technology, Inc. | Page table hooks to memory types |
US11269780B2 (en) | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
US10963396B1 (en) | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11797455B2 (en) * | 2019-10-14 | 2023-10-24 | Advanced Micro Devices, Inc. | Cache management based on reuse distance |
CN111143244B (zh) * | 2019-12-30 | 2022-11-15 | 海光信息技术股份有限公司 | 计算机设备的内存访问方法和计算机设备 |
US11726783B2 (en) * | 2020-04-23 | 2023-08-15 | Advanced Micro Devices, Inc. | Filtering micro-operations for a micro-operation cache in a processor |
US11416407B2 (en) * | 2020-05-22 | 2022-08-16 | Dell Products, L.P. | Method and apparatus for cache slot allocation based on data origination location or final data destination location |
KR20220023649A (ko) | 2020-08-21 | 2022-03-02 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11599415B2 (en) | 2021-07-09 | 2023-03-07 | Microsoft Technology Licensing, Llc | Memory tiering techniques in computing systems |
US11487667B1 (en) | 2021-08-09 | 2022-11-01 | Apple Inc. | Prediction confirmation for cache subsystem |
US11704250B2 (en) * | 2021-09-28 | 2023-07-18 | Advanced Micro Devices, Inc. | Using request class and reuse recording in one cache for insertion policies of another cache |
US11809332B2 (en) * | 2021-12-13 | 2023-11-07 | Micron Technology, Inc. | Prefetch data associated with TLB fill requests |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604055A (zh) * | 2003-09-30 | 2005-04-06 | 国际商业机器公司 | 利用永久历史页表数据预取数据到高速缓存的装置和方法 |
US20060080506A1 (en) * | 2004-10-07 | 2006-04-13 | International Business Machines Corporation | Data replication in multiprocessor NUCA systems to reduce horizontal cache thrashing |
US20100115204A1 (en) * | 2008-11-04 | 2010-05-06 | International Business Machines Corporation | Non-uniform cache architecture (nuca) |
US20100275049A1 (en) * | 2009-04-24 | 2010-10-28 | International Business Machines Corporation | Power conservation in vertically-striped nuca caches |
CN104375958A (zh) * | 2013-08-15 | 2015-02-25 | 国际商业机器公司 | 高速缓存存储器管理事务性存储器访问请求 |
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 |
US20170220477A1 (en) * | 2016-02-02 | 2017-08-03 | Cavium, Inc. | Method and apparatus for determining metric for selective caching |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4304974B2 (ja) | 2002-12-12 | 2009-07-29 | 富士ゼロックス株式会社 | キャッシュメモリのデータ管理方法、及び情報処理装置 |
JP4374956B2 (ja) | 2003-09-09 | 2009-12-02 | セイコーエプソン株式会社 | キャッシュメモリ制御装置およびキャッシュメモリ制御方法 |
JP2014191622A (ja) * | 2013-03-27 | 2014-10-06 | Fujitsu Ltd | 処理装置 |
US9514044B2 (en) | 2013-05-24 | 2016-12-06 | Hewlett Packard Enterprise Development Lp | Multi-level cache tracking table |
WO2015075674A1 (en) | 2013-11-21 | 2015-05-28 | Green Cache AB | Systems and methods for direct data access in multi-level cache memory hierarchies |
-
2018
- 2018-11-15 US US16/192,138 patent/US11138121B2/en active Active
- 2018-11-16 KR KR1020180141948A patent/KR102193689B1/ko active IP Right Grant
- 2018-11-19 CN CN201811374838.1A patent/CN109815163A/zh active Pending
- 2018-11-20 EP EP18207191.0A patent/EP3486785B1/en active Active
- 2018-11-20 TW TW107141150A patent/TWI784084B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604055A (zh) * | 2003-09-30 | 2005-04-06 | 国际商业机器公司 | 利用永久历史页表数据预取数据到高速缓存的装置和方法 |
US20060080506A1 (en) * | 2004-10-07 | 2006-04-13 | International Business Machines Corporation | Data replication in multiprocessor NUCA systems to reduce horizontal cache thrashing |
US20100115204A1 (en) * | 2008-11-04 | 2010-05-06 | International Business Machines Corporation | Non-uniform cache architecture (nuca) |
US20100275049A1 (en) * | 2009-04-24 | 2010-10-28 | International Business Machines Corporation | Power conservation in vertically-striped nuca caches |
CN104375958A (zh) * | 2013-08-15 | 2015-02-25 | 国际商业机器公司 | 高速缓存存储器管理事务性存储器访问请求 |
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 |
US20170220477A1 (en) * | 2016-02-02 | 2017-08-03 | Cavium, Inc. | Method and apparatus for determining metric for selective caching |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324306A (zh) * | 2020-02-16 | 2020-06-23 | 西安奥卡云数据科技有限公司 | 一种基于nvdimm的数据分类缓存分配方法 |
CN112231245A (zh) * | 2020-06-11 | 2021-01-15 | 谷歌有限责任公司 | 用于高速缓存的最佳接纳控制 |
CN112231245B (zh) * | 2020-06-11 | 2024-05-10 | 谷歌有限责任公司 | 用于高速缓存的最佳接纳控制 |
CN116028388A (zh) * | 2023-01-17 | 2023-04-28 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
CN116028388B (zh) * | 2023-01-17 | 2023-12-12 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
Also Published As
Publication number | Publication date |
---|---|
TW201923594A (zh) | 2019-06-16 |
EP3486785A1 (en) | 2019-05-22 |
US20190155736A1 (en) | 2019-05-23 |
EP3486785B1 (en) | 2020-07-29 |
US11138121B2 (en) | 2021-10-05 |
KR20190058316A (ko) | 2019-05-29 |
KR102193689B1 (ko) | 2020-12-21 |
TWI784084B (zh) | 2022-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815163A (zh) | 基于预测的高效高速缓存行处理的***和方法 | |
CN109815165A (zh) | 用于存储和处理高效压缩高速缓存行的***和方法 | |
US11615026B2 (en) | Systems and methods for implementing coherent memory in a multiprocessor system | |
CN100444135C (zh) | 用于短暂高速缓存存储的方法和处理器 | |
US10019368B2 (en) | Placement policy for memory hierarchies | |
CN101601019B (zh) | 使用探听请求高速缓冲存储器的探听过滤 | |
CN102640124B (zh) | 用于数据流的储存感知预取的计算***、方法以及预取单元 | |
CN104102591A (zh) | 计算机子***及在其中实现闪存转换层的方法 | |
US11354242B2 (en) | Efficient early ordering mechanism | |
CN109815167A (zh) | 用于高效虚拟标记的高速缓存实现的***和方法 | |
CN109815168A (zh) | 用于少标记缓冲器实现的***和方法 | |
CN100514311C (zh) | 用于实现组合式数据/相关性高速缓存的方法和装置 | |
CN108664217A (zh) | 一种降低固态盘存储***写性能抖动的缓存方法及*** | |
Sembrant et al. | A split cache hierarchy for enabling data-oriented optimizations | |
Zheng et al. | Research on optimizing last level cache performance for hybrid main memory | |
Almheidat | Analysis of cache usability on modern real-time systems |
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 |