CN109815168A - 用于少标记缓冲器实现的系统和方法 - Google Patents
用于少标记缓冲器实现的系统和方法 Download PDFInfo
- Publication number
- CN109815168A CN109815168A CN201811384401.6A CN201811384401A CN109815168A CN 109815168 A CN109815168 A CN 109815168A CN 201811384401 A CN201811384401 A CN 201811384401A CN 109815168 A CN109815168 A CN 109815168A
- Authority
- CN
- China
- Prior art keywords
- cache
- victim
- buffer
- data
- node
- 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
- 239000000872 buffer Substances 0.000 title claims abstract description 85
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000015654 memory Effects 0.000 claims abstract description 65
- 238000003860 storage Methods 0.000 claims abstract description 21
- 238000012545 processing Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 4
- 238000004064 recycling Methods 0.000 claims 1
- 101150033539 CLB2 gene Proteins 0.000 description 19
- 101100166522 Dictyostelium discoideum cycB gene Proteins 0.000 description 18
- 101100439280 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CLB1 gene Proteins 0.000 description 18
- 238000010586 diagram Methods 0.000 description 12
- 101100006960 Caenorhabditis elegans let-2 gene Proteins 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000000151 deposition Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000007853 buffer solution Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 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
- 238000003801 milling Methods 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
- 238000005457 optimization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000243 solution Substances 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
-
- 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/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/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/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
-
- 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
-
- 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,712通过引用整体并入本文。
技术领域
本发明构思的至少一些示例实施例一般涉及用于访问计算机存储器装置中的数据的方法和系统,更具体地,涉及用于实现少标记缓冲器的机制和技术。
背景技术
现今的处理器通常配备有高速缓存,高速缓存可以存储被存储在某些高容量存储器中的数据的副本和指令的副本。这种高容量存储器的现今流行的示例是动态随机存取存储器(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中的计算机系统被示为单处理器(即,单一处理器)系统。
当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中执行查找。更具体地,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)的多个副本一致的机制。
作为另外的背景信息,图4是示出少标记(tag-less)高速缓存的示例实施方式的框图。这样的高速缓存依赖于与匹配的高速缓存表条目CTE(有时称为区域位置)的所请求的高速缓存行对应的位置信息LI(有时称为高速缓存行指针CP),以指示所请求的高速缓存行驻留在哪个高速缓存中,以及驻留在该高速缓存中的哪个位置。这将导致计算机系统在适当的高速缓存中执行直接高速缓存查找。图4中所示的少标记高速缓存的示例实施方式包括两级高速缓存层次结构和两级高速缓存位置缓冲器(CLB)层次结构,其中虚拟地访问第一级并且物理地访问第二级。
例如,在图4所示的系统(可以是多处理器系统中的节点)中,位置信息可以在L1高速缓存和L2高速缓存之间进行区分。其还能够在存在于多处理器系统的其余部分中的其他高速缓存(该图中未示出)之间进行区分。图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。
对于由具有相同关联性的组关联高速缓存组成的高速缓存层次结构,每个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是示出计算机系统的一部分的框图,该计算机系统包括具有单一的单片式(monolithic)最后一级高速缓存的少标记高速缓存层次结构。参照图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)仍然可以具有与其高速缓存数据单元关联的地址标记。
为了总结以上关于图3至图6的讨论,本领域技术人员将理解,可以使用少标记高速缓存来实现高速缓存层次结构,其可以提供更有效地表示高速缓存的方式。在少标记高速缓存中,数据单元(高速缓存行)没有与之关联的地址标记。相反,向后指针指向CLB条目,该条目通过使用位置信息指针“指向”其位置来跟踪高速缓存行。但是,如果需要从缓存中快速删除缓存行,则少标记缓存没有提供将缓存行放入传统缓冲器(如牺牲缓冲器)的简单方法。通常,传统牺牲缓冲器中的高速缓存行需要是可搜索的,因此需要附加地址标记。
因此,期望提供在少标记高速缓存层次结构中提供有效缓冲器功能的系统和方法。
发明内容
根据本发明构思的至少一些示例实施例,一种用于计算机系统的数据管理方法,所述计算机系统包括至少一个处理器和至少第一高速缓存、第二高速缓存、牺牲缓冲器(VB)和分配给所述至少一个处理器的存储器,所述方法包括:选择待从所述第一高速缓存驱逐的牺牲高速缓存行;从所述VB中找到与所述牺牲高速缓存行对应的牺牲缓冲器位置;将所述牺牲高速缓存行的数据复制到所述VB位置的数据字段;将与所述牺牲高速缓存行关联的向后指针(BP)复制到所述VB位置的BP字段;以及使用所述VB回收所述第一高速缓存的牺牲空间。
根据本发明构思的至少一些示例实施例,一种多处理器系统,包括:存储器;多个节点,所述多个节点中的每一个包括至少一个处理器、多个高速缓存和多个高速缓存位置缓冲器(CLB);以及一个或多个牺牲缓冲器(VB),其中,所述多个节点中的第N节点的处理器被配置为:从所述一个或多个VB中的VB中,找到与从所述第N节点的所述多个高速缓冲器的第一高速缓存驱逐的牺牲高速缓存行对应的牺牲缓冲器位置;将所述牺牲高速缓存行的数据和与所述牺牲高速缓存行关联的向后指针复制到所VB位置的字段,并使用所述VB回收所述第一高速缓存的牺牲空间。
根据本发明构思的至少一些示例实施例,一种包括计算机可执行指令的非暂时性计算机可读存储介质,当由至少一个处理器执行所述计算机可执行指令时,使得所述至少一个处理器执行以下操作:选择待从分配给所述至少一个处理器的第一高速缓存驱逐的牺牲高速缓存行;从分配给所述至少一个处理器的牺牲缓冲器(VB)中找到与所述牺牲高速缓存行对应的牺牲缓冲器(VB)位置;将所述牺牲高速缓存行的数据复制到所述VB位置的数据字段;将与所述牺牲高速缓存行关联的向后指针(BP)复制到所述VB位置的BP字段;使用所述VB回收所述第一高速缓存的牺牲空间;并且控制针对分配给所述至少一个处理器的第二高速缓存的回写操作,或者控制针对分配给所述至少一个处理器的存储器的回写操作。
附图说明
通过参照附图详细描述本发明构思的示例实施例,本发明构思的示例实施例的以上和其他特征和优点将变得更加明显。附图旨在描述本发明构思的示例实施例,并且不应被解释为限制权利要求的预期范围。除非明确说明,否则附图不应视为按比例绘制。
图1是示出计算机系统的一部分的框图;
图2是用于解释计算机系统的示例高速缓存层次结构的框图;
图3是用于解释包括组关联高速缓存和组关联数据转译后备缓冲器(TLB)的两级高速缓存层次结构的传统实施方式的框图;
图4是示出少标记高速缓存的示例实施方式的框图;
图5是示出计算机系统的一部分的框图,该计算机系统包括连接到两级高速缓存层次结构和两级高速缓存位置缓冲器(CLB)层次结构的两个CPU;
图6是示出计算机系统的一部分的框图,该计算机系统包括具有单一的单片式最后一级高速缓存的少标记高速缓存层次结构;
图7是示出根据本发明构思的至少一些示例实施例的计算机系统的一部分的框图,该计算机系统包括具有单一的单片式最后一级高速缓存和牺牲缓冲器的少标记高速缓存层次结构;以及
图8是示出根据本发明构思的至少一些示例实施例的计算机系统的一部分的框图,该计算机系统包括连接到两级高速缓存层次结构和两级CLB层次结构的两个CPU,以及牺牲缓冲器。
具体实施方式
根据在本发明构思的领域中的传统,在功能块、单元和/或模块方面描述并且在附图中示出了实施例。本领域技术人员将理解,这些块、单元和/或模块通过电子(或光学)电路物理地实现,例如可以使用基于半导体的制造技术或其他制造技术形成的逻辑电路、分立组件、微处理器、硬连线电路、存储器元件、布线连接等。在由微处理器或类似物实现的块、单元和/或模块的情况下,可以使用软件(例如,微代码)对它们进行编程以执行本文所讨论的各种功能,并且可以可选地由固件和/或软件驱动。可替换地,每个块、单元和/或模块可以由专用硬件实现,或者可被实现为执行某些功能的专用硬件和执行其他功能的处理器(例如,一个或多个编程的微处理器和相关电路)的组合。而且,在不脱离本发明构思的范围的情况下,实施例的每个块、单元和/或模块可以在物理上分成两个或更多个交互且离散的块、单元和/或模块。此外,在不脱离本发明构思的范围的情况下,实施例的块、单元和/或模块可以物理地组合成更复杂的块、单元和/或模块。
驻留在高速缓存中的高速缓存行可以被驱逐并且可以由其他高速缓存行替换。因此,可能需要从高速缓存中移除被驱逐的高速缓存行,以为新的高速缓存行留出空间。如果被驱逐的高速缓存行是脏的,则可能需要将被驱逐的高速缓存行写回到下一级高速缓存或存储器。
如图4和图5所示,少标记高速缓存的一个优点是在各高速缓存级之间不存在强制包含。驻留在L1高速缓存430或514中的高速缓存行不需要具有分别在下一级L2高速缓存440和523中分配的空间。少标记高速缓存还可以不要求高速缓存行具有在下一级L3或最后一级高速缓存(LLC)670中分配的空间,如图6所示。因此,从少标记L1高速缓存驱逐的高速缓存行可能需要被写回到存储器。在少标记高速缓存的多处理器实施方式中,可以分三步执行将脏高速缓存行从L1高速缓存驱逐到存储器:首先将高速缓存行复制到存储器;一旦可以保证已经对存储器全局地执行了复制,就会将NewMaster消息发送到具有针对相应区域的高速缓存位置缓冲器(CLB)条目的其他节点,以通知其他节点存储器不是高速缓存行的新的主位置;最后,可以回收L1高速缓存中的高速缓存行的位置。由于存储器相对较慢并且通常所在位置很远,因此从启动L1高速缓存驱逐到完成L1高速缓存驱逐所花费的时间可能是大量的并且远远长于从L2高速缓存获得新的高速缓存行所花费的时间。因此,为了不耽搁执行的进度,确定处理驱逐的高速缓存行的更有效方式会是有利的。
计算机系统可以利用牺牲缓冲器(VB)来快速地从L1高速缓存中处置牺牲。VB是一个小的关联缓冲器,用于存储将被驱逐的高速缓存行(及其地址标记)。基于某些读取请求和来自系统其余部分的外部请求,需要搜索VB中的高速缓存行的地址标记以进行匹配。在匹配的情况下,可以通过读取相应的高速缓存行来满足读取请求。VB的优点在于可以从L1高速缓存中快速移除被驱逐的高速缓存行,并且可以在几个周期内由新的高速缓存行重用L1高速缓存中的被驱逐的高速缓存行的先前位置。然而,在少标记系统中,并非所有请求都携带其所请求的高速缓存行的完整地址,这就是为什么可能难以或(可替代地)不可能基于实现少标记高速缓存层次结构的计算机系统中的地址执行牺牲缓冲器搜索的原因。此外,少标记高速缓存避免了昂贵的基于地址的关联搜索,以便提供节能的实施方式。因此,开发新的少标记缓冲器解决方案会是有利的。
图7是示出根据本发明构思的至少一些示例实施例的计算机系统的一部分的框图,该计算机系统包括具有单一的单片式最后一级高速缓存和牺牲缓冲器的少标记高速缓存层次结构。图8是示出根据本发明构思的至少一些示例实施例的计算机系统的一部分的框图,该计算机系统包括连接到两级高速缓存层次结构和两级CLB层次结构的两个CPU,以及牺牲缓冲器。
参照图8,图8中的计算机系统可以具有与图4的计算机系统类似的结构。根据至少一些示例实施例,图8的计算机系统与图4的计算机系统的不同之处可以在于,图8的计算机系统利用少标记组关联牺牲缓冲器VB(缓冲器860)进行了扩展。VB以与L1高速缓存和L2高速缓存类似的方式索引。索引可以由使用虚拟ADDR位802的虚拟索引形成(假设ADDR是虚拟地址)、形成为来自ADDR 802的物理索引(假设ADDR是物理地址)或基于使用存储为与每个区域关联的区域信息(RI)813的一部分的物理地址(PA)中的一些形成为物理地址。此外,根据本发明构思的至少一些示例实施例,以与产生L1高速缓存和L2高速缓存的路信息的方式类似的方式产生用于组关联VB 860的路信息。用于组关联VB 860的路信息被存储为位置信息(LI)的一部分并且由级/路信息814承载。根据本发明构思的至少一些示例实施例,VB860看起来像是可以另一个与CLB1关联的组关联高速缓存级。然而,VB 860的关联性可以与L1高速缓存和L2高速缓存中的一个或两个的关联性不同。因此,用于VB 860的条目的LI编码的格式可以与用于L1高速缓存和L2高速缓存中的一个或两个的条目的格式不同。
因此,根据本发明构思的至少一些示例实施例,图8中示出的计算机系统可以接收对牺牲高速缓存行的请求。响应于对牺牲高速缓存行的请求,计算机系统可以将请求中包括的地址与和第一高速缓存(例如,L1高速缓存)和第二高速缓存(例如,L2高速缓存)中的至少一个关联的CLB中的多个条目进行匹配。此外,计算机系统可以基于对请求中包括的地址进行的匹配来生成级和/或路信息;并使用所生成的级和/或路信息从VB(例如,VB 860)读取所请求的牺牲高速缓存行的数据。
根据本发明构思的至少一个示例实施例,VB 860中的每个条目由至少三个部分形成:高速缓存行数据DAT、用于识别存储与VB关联的LI的CLB条目的向后指针BP、以及牺牲空间标识符(VS),该牺牲空间标识符(VS)存储用于牺牲高速缓存行应当被写入的更高级高速缓存的LI,或者牺牲高速缓存行应当被写入的存储器中的地址。根据本发明构思的至少一些示例实施例,特殊状态机排出其条目的VB并执行实际的回写操作。
根据本发明构思的至少一个示例实施例,VB 860用于保持来自L1高速缓存和L2高速缓存的牺牲(即,被驱逐的高速缓存行),即使下文仅解释L1高速缓存驱逐功能,但其目标是更高级别的高速缓存(例如,L3或LLC)或存储器。
根据本发明构思的至少一个示例实施例,通过以下步骤从L1高速缓存830驱逐高速缓存行:
1)从L1高速缓存830中选择脏高速缓存行831进行驱逐。
2)在与所选高速缓存行对应的VB组中找到VB 860中路=W的空闲位置,其被称为VB位置。
3)将DATA 831复制到VB位置的DATA字段,并将与牺牲高速缓存行关联的向后指针(BP)写入VB位置的BP字段。
4)BP 832用于在跟踪DATA 831的CLB内找到相应的区域(不需要地址比较来找到该区域)。
5)区域中的位置信息被改变为指向VB位置。例如,该区域内的LI被改变为指向VB位置(级=VB,路=W);并且从区域的RI 813读取物理地址部分(即,RI的包括物理地址的部分)。
6)现在可以回收L1高速缓存中的牺牲空间。
7)在牺牲到存储器的情况下,物理地址被写入VB位置的VS字段。或者,例如,在牺牲到另一个高速缓存(根据本发明构思的至少一些示例实施例,其可以是更高级高速缓存,例如L2高速缓存)的情况下,将针对目的地的LI(例如,针对L2高速缓存的位置信息)写入到VS字段。
8)执行回写操作。例如,状态机可以开始其回写工作并将高速缓存行复制到存储器位置或更高级高速缓存位置(例如,L2高速缓存位置);发送NewMaster;并且将CLB中的LI改变为指向存储器(即,通过将值“Mem”存储为LI值)。使用VB中与牺牲高速缓存行关联的BP找到CLB条目。
9)当上述回写操作完成时,可以释放VB位置。
根据本发明构思的至少一些示例实施例,上述回写操作可以包括:从VB位置的牺牲空间标识符字段读取物理地址;以及将数据字段的牺牲高速缓存行的数据复制到存储器中与物理地址对应的空间。根据本发明构思的至少一些示例实施例,上述回写操作可以包括:在BP字段的BP所指向的CLB中找到条目;以及改变条目的位置信息以指向存储器中执行回写操作的空间。根据本发明构思的至少一些示例实施例,上述回写操作可以包括:从VB位置的牺牲空间标识符字段读取位置信息;以及将数据字段的牺牲高速缓存行的数据复制到第二高速缓存的与位置信息对应的条目。
VB可以位于2级高速缓存层次结构的边缘处的位置(如图8所示),可以位于L1高速缓存和L2高速缓存之间(未示出),或者可以位于多处理器系统中的多处理器节点701的专用高速缓存L-1 720到L-Y 740与共享高速缓存LLC 770之间(如图7所示)。在该配置中,VB缓冲器可以用于快速处理从节点本地的高速缓存驱逐的高速缓存行,如结合图8所讨论的那样,但是也可以加速来自NODE 701的强制驱逐。
如图7中所示,根据本发明构思的至少一些示例实施例,计算机系统可以包括存储器;多个节点(例如,节点NODE 1至NODE N),其中多个节点中的每一个包括至少一个处理器(例如,CPU CPU-1和CPU-2)、多个高速缓存(例如,节点NODE 1至NODE N中的高速缓存L-1至L-Y),以及多个高速缓存位置缓冲器(CLB)(例如,节点NODE 1至NODE N中的CLB CLB-1至CLB-X)。根据本发明构思的至少一些示例实施例,图7所示的计算机系统还包括一个或多个牺牲缓冲器(VB)(例如,VB BUFF 1和BUFF 2)。此外,根据本发明构思的至少一些示例实施例,处理器包括:多个节点(例如,节点NODE 1至NODE N)中的第N个节点的处理器(例如,图7中的NODE N的未示出的CPU)被配置为:从一个或多个VB(例如,VB BUFF 1和BUFF2)中的VB中找到与从第N个节点的多个高速缓存的第一高速缓存驱逐的牺牲高速缓存行(例如,图7中的NODE N的未被示出的L-1高速缓存)对应的VB位置;将牺牲高速缓存行的数据和与牺牲高速缓存行关联的BP复制到VB位置的字段;并且使用VB回收第一高速缓存的牺牲空间。
根据本发明构思的至少一些示例实施例,第N节点的处理器还可以被配置为:在第N节点中找到用于使用向后指针(BP)跟踪牺牲高速缓存行的数据的高速缓存位置缓冲器(CLB)的区域;并且将该区域中的位置信息更改为指向VB位置。根据本发明构思的至少一些示例实施例,第N节点的处理器还可以被配置为:从区域的区域信息读取针对第二高速缓存的位置信息(第二高速缓存是第N高速缓存中的第一高速缓存的上级高速缓存);将针对第二高速缓存的位置信息写入在VB位置的字段中;并且对使用VB针对第二高速缓存的回写操作进行控制。
根据本发明构思的至少一些示例实施例,第N节点的处理器还可以被配置为:响应于接收对牺牲高速缓存行的请求,将请求中包括的地址分别与多个CLB的多个条目进行匹配;基于对请求中包括的地址进行的匹配来生成级和/或路信息;并且使用所生成的级和/或路信息读取牺牲高速缓存行的数据。
根据本发明构思的至少一些示例实施例,多个节点(例如,节点NODE 1至NODE N)共享一个或多个VB(例如,VB BUFF 1和BUFF 2)。可替换地,根据本发明构思的至少一些示例实施例,多个节点(例如,节点NODE 1至NODE N)中的每个节点包括其自己的VB。
现在参考图6,根据本发明构思的至少一些示例实施例,如果驱逐CLB-X 630中的条目,则应该从高速缓存L-1 620至L-Y 640驱逐相应区域的所有数据。此外,还需要驱逐同一节点下至CLB-1 610的所有CLB条目。这被称为强制驱逐。
尽管如此,根据本发明构思的至少一些示例实施例,用于CLB-X的替换算法应当使强制驱逐相当罕见,最坏情况下的强制驱逐可能需要驱逐多达16个脏高速缓存行。在强制驱逐期间,被驱逐区域的一些高速缓存行可能已经驻留在VB中,并且可能已经在被驱逐的路上。如果不小心处理强制驱逐,强制驱逐可能需要很长时间,并且还可能由于在其被驱逐的过程中失去对高速缓存行的跟踪而危及系统的正确性。
参照图7,根据本发明构思的至少一个示例实施例,在强制驱逐时,使用上面针对图8的VB驱逐过程所概述的步骤,将节点701区域中的脏高速缓存行快速传送到VB 771。然后,被驱逐的区域被迫离开,以针对另一个区域释放CLB-X中的空间。在该步骤期间,仍然指向VB 771位置的区域中的任何LI将改变DIR中的对应CLT 762中的对应位置LI并且节点2790至节点N 799中的任何相应CLB位置在被驱逐区域可以完成其驱逐之前也指向该VB位置。
应当注意,可以通过使用以下方式找到驻留在少标记高速缓存层次结构中的高速缓存行:通过使用在少标记高速缓存中定位高速缓存行的常规方式来读取请求和外部请求,同时将驻留在少标记VB中的高速缓存行驻留在VB中:通过正常的CLB查找来找到LI,然后跟随LI访问来自所识别的位置的高速缓存行。
尽管,为了清楚起见,本文的大部分说明一般描述了如何定位高速缓存行并将其返回到请求CPU的技术,但对于本领域技术人员而言显而易见的是存在可选择包含在高速缓存行内的请求字并且将其返回到CPU的各种方法。
为清楚起见,本文中描述高速缓存层次结构的数据的处理的大部分说明描述了独占型高速缓存层次结构。本领域技术人员将理解,示例实施例中的一个或多个可以扩展为还覆盖包容型存储器层次结构和非独占型存储器层次结构。
尽管上文描述的发明构思的一个或多个示例实施例可以与单处理器系统和多处理器系统相关,例如上文分别关于图1和图2示出和描述的系统,但本发明构思的一个或多个示例实施例主要结合单处理器系统示出。然而,本领域技术人员将理解,结合单处理器系统示出的发明构思的一个或多个示例实施例不限于这样的实施方式。例如,尽管为了简洁,图8示出了单CPU,但图8中示出的计算机系统的部分可以是根据本发明构思的至少一些示例实施例的多处理器系统的部分。
尽管以上在某些示例计算机架构的语境中进行了描述,但是高速缓存存在于图7和图8中所示的示例计算机系统内部以及外部的许多其他设置中,并且本领域技术人员将理解,在计算机系统的语境中上述发明构思的至少一些示例实施例也可以应用于这样的其他语境。这种使用的示例是虚拟存储器系统,其将来自慢速、高容量存储器(例如磁盘或FLASH存储器)的数据高速缓存到可以使用动态RAM实现的更快和更小的高容量存储器中。在计算机系统中进行高速缓存的其他示例包括(但不限于)磁盘高速缓存、web高速缓存和名称高速缓存。这种高速缓存的组织和高速缓存机制可能与上文讨论的高速缓存不同,例如,在组的大小、组的实现和关联性等方面存在变化。无论高速缓存机制本身的实现如何,本发明构思的至少一些示例实施例同样适用于实现各种高速缓存方案。
本申请中提供的方法或流程图可以在计算机可读存储介质中清晰体现的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。
因此已经描述了本发明构思的示例实施例,显而易见的是可以以多种方式改变本发明构思的示例实施例。不应将这些变化视为脱离本发明构思的示例实施例的预期实质和范围,并且对于本领域技术人员显而易见的所有这些修改旨在包括在所附权利要求的范围内。
Claims (20)
1.一种用于计算机系统的数据管理方法,所述计算机系统包括至少一个处理器和至少第一高速缓存、第二高速缓存、牺牲缓冲器和分配给所述至少一个处理器的存储器,所述方法包括:
选择待从所述第一高速缓存驱逐的牺牲高速缓存行;
从所述牺牲缓冲器中找到与所述牺牲高速缓存行对应的牺牲缓冲器位置;
将所述牺牲高速缓存行的数据复制到所述牺牲缓冲器位置的数据字段;
将与所述牺牲高速缓存行关联的向后指针复制到所述牺牲缓冲器位置的向后指针字段;以及
使用所述牺牲缓冲器回收所述第一高速缓存的牺牲空间。
2.根据权利要求1所述的数据管理方法,其中,回收所述牺牲空间包括:
找到使用所述向后指针跟踪所述牺牲高速缓存行的数据的高速缓存位置缓冲器中的区域;以及
将所述区域中的位置信息更改为指向所述牺牲缓冲器位置。
3.根据权利要求2所述的数据管理方法,其中,回收所述牺牲空间还包括:
从所述区域的区域信息读取针对所述存储器的物理地址;以及
将所述物理地址写入所述牺牲缓冲器位置的牺牲空间标识符字段。
4.根据权利要求2所述的数据管理方法,其中,回收所述牺牲空间还包括:
从所述区域的区域信息读取针对所述第二高速缓存的位置信息;以及
将针对所述第二高速缓存的所述位置信息写入所述牺牲缓冲器位置的牺牲空间标识符字段。
5.根据权利要求4所述的数据管理方法,其中,所述第二高速缓存处于比所述第一高速缓存更高的级。
6.根据权利要求1所述的数据管理方法,还包括:
使用所述牺牲缓冲器对所述存储器或所述第二高速缓存执行回写操作。
7.根据权利要求6所述的数据管理方法,其中,对所述存储器执行回写操作包括:
从所述牺牲缓冲器位置的牺牲空间标识符字段读取物理地址;以及
将所述数据字段的所述牺牲高速缓存行的数据复制到所述存储器中与所述物理地址对应的空间。
8.根据权利要求6所述的数据管理方法,其中,对所述存储器执行所述回写操作包括:
在由所述向后指针字段的所述向后指针所指向的所述高速缓存位置缓冲器中找到条目;以及
将所述条目的位置信息改变为指向所述存储器中执行所述回写操作的空间。
9.根据权利要求6所述的数据管理方法,其中,对所述第二高速缓存执行所述回写操作包括:
从所述牺牲缓冲器位置的牺牲空间标识符字段读取位置信息;以及
将所述数据字段的所述牺牲高速缓存行的数据复制到所述第二高速缓存的与所述位置信息对应的条目。
10.根据权利要求6所述的数据管理方法,还包括:
当完成所述写回操作时,释放所述牺牲缓冲器的所述牺牲缓冲器位置。
11.根据权利要求1所述的数据管理方法,其中,所述牺牲缓冲器的关联性不同于所述第一高速缓存的关联性和所述第二高速缓存的关联性。
12.根据权利要求1所述的数据管理方法,还包括:
接收对所述牺牲高速缓存行的请求;
响应于对所述牺牲高速缓存行的请求,将包括在所述请求中的地址与和所述第一高速缓存和所述第二高速缓存中的至少一个关联的高速缓存位置缓冲器中的多个条目进行匹配;
基于对所述请求中包括的所述地址进行的匹配来生成级和/或路信息;以及
使用所生成的级和/或路信息从所述牺牲缓冲器读取所述牺牲高速缓存行的数据。
13.一种多处理器系统,包括:
存储器;
多个节点,所述多个节点中的每一个包括至少一个处理器、多个高速缓存和多个高速缓存位置缓冲器;以及
一个或多个牺牲缓冲器,
其中,
所述多个节点中的第N节点的处理器被配置为:
从所述一个或多个牺牲缓冲器中的牺牲缓冲器中,找到与从所述第N节点的所述多个高速缓冲器的第一高速缓存驱逐的牺牲高速缓存行对应的牺牲缓冲器位置;
将所述牺牲高速缓存行的数据和与所述牺牲高速缓存行关联的向后指针复制到所述牺牲缓冲器位置的字段;并且
使用所述牺牲缓冲器回收所述第一高速缓存的牺牲空间。
14.根据权利要求13所述的多处理器系统,其中,所述第N节点的处理器还被配置为:
在所述第N节点中找到所述多个高速缓存位置缓冲器的用于使用所述向后指针跟踪所述牺牲高速缓存行的数据的区域;并且
将所述区域中的位置信息更改为指向所述牺牲缓冲器位置。
15.根据权利要求14所述的多处理器系统,其中,所述第N节点的处理器还被配置为:
从所述区域的区域信息读取针对第二高速缓存的位置信息;
将针对所述第二高速缓存的所述位置信息写入所述牺牲缓冲器位置的字段;并且
对使用所述牺牲缓冲器针对所述第二高速缓存的回写操作进行控制,其中,所述第二高速缓存是所述第N节点的各高速缓存中的所述第一高速缓存的上级高速缓存。
16.根据权利要求14所述的多处理器系统,其中,所述第N节点的处理器还被配置为:响应于接收到对所述牺牲高速缓存行的请求,
将所述请求中包括的地址分别与所述多个高速缓存位置缓冲器的多个条目进行匹配;
基于对所述请求中包括的所述地址进行的匹配来生成级和/或路信息;并且
使用所生成的级和/或路信息读取所述牺牲高速缓存行的数据。
17.根据权利要求13所述的多处理器系统,其中,所述多个节点被配置为共享所述一个或多个牺牲缓冲器中的至少一个牺牲缓冲器。
18.根据权利要求13所述的多处理器系统,其中,所述一个或多个牺牲缓冲器是多个牺牲缓冲器,并且所述多个牺牲缓冲器分别包括在所述多个节点中。
19.根据权利要求13所述的多处理器系统,其中,所述牺牲缓冲器的位置信息编码格式不同于所述多个高速缓存的位置信息编码格式。
20.一种包括计算机可执行指令的非暂时性计算机可读存储介质,当由至少一个处理器执行所述计算机可执行指令时,使得所述至少一个处理器执行以下操作:
选择待从分配给所述至少一个处理器的第一高速缓存驱逐的牺牲高速缓存行;
从分配给所述至少一个处理器的牺牲缓冲器中找到与所述牺牲高速缓存行对应的牺牲缓冲器位置;
将所述牺牲高速缓存行的数据复制到所述牺牲缓冲器位置的数据字段;
将与所述牺牲高速缓存行关联的向后指针复制到所述牺牲缓冲器位置的向后指针字段;
使用所述牺牲缓冲器回收所述第一高速缓存的牺牲空间,并且
控制针对分配给所述至少一个处理器的第二高速缓存的回写操作,或者
控制针对分配给所述至少一个处理器的存储器的回写操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762588712P | 2017-11-20 | 2017-11-20 | |
US62/588,712 | 2017-11-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109815168A true CN109815168A (zh) | 2019-05-28 |
Family
ID=64402110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811384401.6A Pending CN109815168A (zh) | 2017-11-20 | 2018-11-20 | 用于少标记缓冲器实现的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10884925B2 (zh) |
EP (1) | EP3486787B1 (zh) |
KR (1) | KR102252377B1 (zh) |
CN (1) | CN109815168A (zh) |
TW (1) | TWI795470B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612727A (zh) * | 2020-12-08 | 2021-04-06 | 海光信息技术股份有限公司 | 一种高速缓存行替换方法、装置及电子设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767639B (zh) * | 2020-05-25 | 2022-12-13 | 西北工业大学 | 一种多传感器航迹关联方法 |
US11467972B2 (en) * | 2020-12-01 | 2022-10-11 | Centaur Technology, Inc. | L1D to L2 eviction |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829038A (en) * | 1996-06-20 | 1998-10-27 | Intel Corporation | Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure |
CN1728112A (zh) * | 2004-06-30 | 2006-02-01 | 英特尔公司 | 用于对芯片多处理器的共享高速缓存器分区的设备和方法 |
US20110161589A1 (en) * | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Selective cache-to-cache lateral castouts |
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 |
CN107223239A (zh) * | 2015-02-17 | 2017-09-29 | 高通股份有限公司 | 用于改善牺牲(Victim)高速缓存模式的处理调度 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100505695B1 (ko) * | 2003-07-12 | 2005-08-03 | 삼성전자주식회사 | 동적으로 할당 또는 해제되는 버퍼를 가지는 캐쉬 메모리장치, 이를 구비한 디지털 데이터 처리 시스템 및 그 방법 |
KR101064178B1 (ko) * | 2010-08-24 | 2011-09-14 | 한국과학기술원 | 버퍼 캐시 관리 시스템 및 방법 |
WO2013005220A1 (en) * | 2011-07-06 | 2013-01-10 | Hewlett-Packard Development Company, L.P. | Method and system for an improved i/o request quality of service across multiple host i/o ports |
WO2015075674A1 (en) * | 2013-11-21 | 2015-05-28 | Green Cache AB | Systems and methods for direct data access in multi-level cache memory hierarchies |
US10216640B2 (en) * | 2014-03-21 | 2019-02-26 | Samsung Electronics Co., Ltd. | Opportunistic cache injection of data into lower latency levels of the cache hierarchy |
WO2017077502A1 (en) | 2015-11-04 | 2017-05-11 | Green Cache AB | Systems and methods for implementing coherent memory in a multiprocessor system |
US10713166B2 (en) * | 2017-05-05 | 2020-07-14 | Samsung Electronics Co., Ltd. | Efficient early ordering mechanism |
US10649901B2 (en) * | 2017-08-03 | 2020-05-12 | International Business Machines Corporation | Victim cache line selection |
-
2018
- 2018-11-20 TW TW107141184A patent/TWI795470B/zh active
- 2018-11-20 US US16/196,065 patent/US10884925B2/en active Active
- 2018-11-20 EP EP18207302.3A patent/EP3486787B1/en active Active
- 2018-11-20 CN CN201811384401.6A patent/CN109815168A/zh active Pending
- 2018-11-20 KR KR1020180143907A patent/KR102252377B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829038A (en) * | 1996-06-20 | 1998-10-27 | Intel Corporation | Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure |
CN1728112A (zh) * | 2004-06-30 | 2006-02-01 | 英特尔公司 | 用于对芯片多处理器的共享高速缓存器分区的设备和方法 |
US20110161589A1 (en) * | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Selective cache-to-cache lateral castouts |
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 |
CN107223239A (zh) * | 2015-02-17 | 2017-09-29 | 高通股份有限公司 | 用于改善牺牲(Victim)高速缓存模式的处理调度 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612727A (zh) * | 2020-12-08 | 2021-04-06 | 海光信息技术股份有限公司 | 一种高速缓存行替换方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3486787B1 (en) | 2022-09-28 |
KR20190058356A (ko) | 2019-05-29 |
TWI795470B (zh) | 2023-03-11 |
KR102252377B1 (ko) | 2021-05-14 |
TW201928680A (zh) | 2019-07-16 |
US20190155732A1 (en) | 2019-05-23 |
EP3486787A1 (en) | 2019-05-22 |
US10884925B2 (en) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815163A (zh) | 基于预测的高效高速缓存行处理的系统和方法 | |
US11237969B2 (en) | Systems and methods for implementing coherent memory in a multiprocessor system | |
CN109815165A (zh) | 用于存储和处理高效压缩高速缓存行的系统和方法 | |
US11023376B2 (en) | System and methods for efficient virtually-tagged cache implementation | |
US11354242B2 (en) | Efficient early ordering mechanism | |
US11226904B2 (en) | Cache data location system | |
US6625694B2 (en) | System and method for allocating a directory entry for use in multiprocessor-node data processing systems | |
JP6630449B2 (ja) | 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換 | |
CN109815168A (zh) | 用于少标记缓冲器实现的系统和方法 | |
US7356650B1 (en) | Cache apparatus and method for accesses lacking locality | |
KR20240082308A (ko) | 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법 |
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 |