CN109815165A - 用于存储和处理高效压缩高速缓存行的系统和方法 - Google Patents
用于存储和处理高效压缩高速缓存行的系统和方法 Download PDFInfo
- Publication number
- CN109815165A CN109815165A CN201811374894.5A CN201811374894A CN109815165A CN 109815165 A CN109815165 A CN 109815165A CN 201811374894 A CN201811374894 A CN 201811374894A CN 109815165 A CN109815165 A CN 109815165A
- Authority
- CN
- China
- Prior art keywords
- cache
- node
- location information
- value
- data
- 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 24
- 238000007906 compression Methods 0.000 title claims description 34
- 230000006835 compression Effects 0.000 title claims description 34
- 238000012545 processing Methods 0.000 title description 7
- 238000003860 storage Methods 0.000 claims abstract description 38
- 230000015654 memory Effects 0.000 claims description 60
- 238000009826 distribution Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 3
- 230000006399 behavior Effects 0.000 claims 1
- 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 17
- 101100006960 Caenorhabditis elegans let-2 gene Proteins 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 12
- 238000013519 translation Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000000151 deposition Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013144 data compression Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 241001269238 Data Species 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
- 238000004891 communication Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 150000002500 ions Chemical class 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000003550 marker Substances 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
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 239000002699 waste material 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/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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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)
Abstract
本公开提供一种多处理器系统,包括:多个节点和至少一个存储器,其中每个节点包括至少一个处理器、专用于所述节点的第一高速缓存、处于比所述第一高速缓存更高级的第二高速缓存、以及专用于所述节点的高速缓存位置缓冲器,其中,对于所述多个节点中的至少一个节点,包括在所述至少一个节点中的第一高速缓存和第二高速缓存中的至少一个包括能够存储大小不同的压缩数据单元的至少一个高速缓存位置,包括在所述至少一个节点中的高速缓存位置缓冲器被配置为存储多个高速缓存位置缓冲器条目,所述多个高速缓存位置缓冲器条目中的每一个包括多个位置信息值。本公开还提供一种数据管理方法和计算机可读存储介质。
Description
相关申请的交叉引用
于2017年11月20日向美国专利商标局提交的美国临时申请No.62/588,717通过引用整体并入本文。
技术领域
本发明构思的至少一些示例实施例一般涉及用于访问计算机存储器装置中的数据的方法和系统,更具体地,涉及用于表示并处理压缩数据的机制和技术。
背景技术
现今的处理器通常配备有高速缓存,高速缓存可以存储被存储在某些高容量存储器中的数据的副本和指令的副本。这种高容量存储器的现今流行的示例是动态随机存取存储器(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 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路关联高速缓存的3级高速缓存层次结构进行编码。
在图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-1620至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的讨论,本领域技术人员将理解,高速缓存层次结构的现今的实施方式在可以确定所请求的高速缓存行的位置之前,可能需要在TLB中以及不同高速缓存级执行许多相关查找。此外,每个翻译条目和高速缓存的高速缓存行需要伴随地址标记,并且需要将多个这些标记与这些级中的每一个的地址的部分进行比较。总的来说,就每个相关查找所使用的动态能量而言,这种实施方式成本很高。其还需要大量静态能量和存储器容量来存储执行所述比较需要的额外标记信息。此外,其还需要大量静态能量和存储器容量来将每个高速缓存行的数据存储在高速缓存层次结构中。
因此,期望提供这样一种系统和方法,其通过支持在高速缓存层次结构中压缩数据的高效表示和处理,避免与针对数据的高速缓存查找相关的前述问题和缺点,同时移除一些与高速缓存行存储相关的容量、静态功率成本。
发明内容
根据本发明构思的至少一个示例实施例,数据单元存储在多处理器系统的节点中的专用高速缓存中,每个节点包含至少一个处理器(CPU),至少一个专用于该节点的高速缓存和至少一个专用于该节点的高速缓存位置缓冲器(CLB)。在每个CLB存储位置信息值,每个位置信息值指示与相应数据单元关联的位置,其中存储在给定的CLB中的每个位置信息值指示该位置是与给定的CLB位于同一节点中的专用高速缓存内的位置、位于其他各节点之一中的位置、或者位于主存储器中的位置。压缩高速缓存行是一种更有效地使用高速缓存容量的方法。可以利用能够识别未压缩高速缓存行和压缩高速缓存行的位置的能力来扩展CLB位置信息,同时与传统线性成本(添加四倍的地址标记)相比,仅添加对数成本(例如,为每个位置信息添加两位)。CLB位置信息可以用包含具有特殊ZERO符号的“0”来标记高速缓存行,从而避免在高速缓存层次结构中分配包含“0”的高速缓存行,避免这种高速缓存行的移动并避免重复地将值“0”复制到新的分配的内存区域。
根据本发明构思的至少一个示例实施例,一种多处理器系统,包括:多个节点和至少一个存储器,其中每个节点包括至少一个处理器、专用于该节点的第一高速缓存、处于比所述第一高速缓存更高级的第二高速缓存、以及专用于该节点的高速缓存位置缓冲器(CLB),其中,对于所述多个节点中的至少一个节点,包括在所述至少一个节点中的所述第一高速缓存和所述第二高速缓存中的至少一个包括能够存储大小不同的压缩数据单元的至少一个高速缓存位置,包括在所述至少一个节点中的所述CLB被配置为存储多个CLB条目,所述多个CLB条目中的每一个包括多个位置信息值,每个位置信息值指向与相应数据单元关联的位置的起始,包括在所述至少一个节点中的所述CLB中存储的每个位置信息值指示所述位置信息值指向的以下位置,包括在所述至少一个节点中的所述第一高速缓存内的位置,包括在所述至少一个节点中的所述第二高速缓存内的位置,或所述至少一个存储器中的位置,并且所述多个位置信息值中的至少一个能够以比未压缩数据单元的大小更精细的粒度识别与所述相应数据单元对应的位置。
根据本发明构思的至少一个示例实施例,一种数据管理方法,包括:将数据单元存储在多处理器系统的多个节点中的专用高速缓存中,其中每个节点包括至少一个处理器、专用于所述节点的至少一个高速缓存和专用于所述节点的至少一个高速缓存位置缓冲器(CLB);以及对于所述多处理器系统的所述多个节点中的至少一个节点,在包括在所述至少一个节点中的所述至少一个CLB中存储多个位置信息值,每个位置信息值指示与相应数据单元关联的位置,其中存储在所述至少一个CLB中的每个位置信息值指示与所述相应数据单元关联的位置为,包括在所述至少一个节点中的所述至少一个专用高速缓存中的位置,所述多个节点中除了所述至少一个节点之外的一个节点中的位置,或主存储器中的位置,并且对所述多个位置信息值中具有指示数据单元存储了第一值的符号的至少一个位置信息值进行编码。
根据本发明构思的至少一个示例实施例,一种包括计算机可执行指令的非暂时性计算机可读存储介质,当计算机执行所述指令时,使所述计算机执行包括以下步骤的操作:将数据单元存储在包括在多处理器系统的多个节点中的专用高速缓存中、存储在全局高速缓存和存储器中,其中每个节点包括至少一个处理器和专用于所述节点的至少一个高速缓存,所述多个节点通过网络连接;并且对于所述多个节点中的至少一个节点,将多个位置信息值存储在专用于所述至少一个节点的高速缓存位置缓冲器中;并且利用符号对所述多个位置信息值中的至少一个位置信息值进行编码,其中所述符号表示数据单元存储了第一值。
附图说明
通过参考附图详细描述本发明构思的示例实施例,本发明构思的示例实施例的以上和其他特征和优点将变得更加明显。附图旨在描述本发明构思的示例实施例,并且不应被解释为限制权利要求的预期范围。除非明确说明,否则附图不应视为按比例绘制。
图1是示出计算机系统的一部分的框图;
图2是用于解释计算机系统的示例高速缓存层次结构的框图;
图3是用于解释包括组关联高速缓存和组关联数据转译后备缓冲器(TLB)的两级高速缓存层次结构的传统实施方式的框图;
图4是示出少标记高速缓存的示例实施方式的框图;
图5是示出包括连接至两级高速缓存层次结构和两级高速缓存位置缓冲器(CLB)层次结构的两个CPU的计算机系统的一部分的框图;
图6是示出包括单一的单片式最后一级高速缓存的少标记高速缓存层次结构的计算机系统的一部分的框图;
图7是示出具有许多片最后一级高速缓存的通用少标记高速缓存层次结构的框图;
图8是示出根据本发明构思的至少一个示例实施例的具有各种程度的数据压缩的三个基于标记的高速缓存架构的框图;
图9是示出根据本发明构思的至少一个示例实施例的少标记高速缓存系统的简化表示的框图;以及
图10是示出根据本发明构思的至少一个示例实施例的有效支持压缩数据存储和处理的少标记高速缓存系统的简化表示的框图。
具体实施方式
如根据本发明构思的领域的传统那样,在功能块、单元和/或模块方面描述并且在附图中示出了实施例。本领域技术人员将理解,这些块、单元和/或模块通过电子(或光学)电路物理地实现,例如可以使用基于半导体的制造技术或其他制造技术形成的逻辑电路、分立组件、微处理器、硬连线电路、存储器元件、布线连接等。在由微处理器或类似物实现的块、单元和/或模块的情况下,可以使用软件(例如,微代码)对它们进行编程以执行本文所讨论的各种功能,并且可以可选地由固件和/或软件驱动。可替换地,每个块、单元和/或模块可以由专用硬件实现,或者可被实现为执行某些功能的专用硬件和执行其他功能的处理器(例如,一个或多个编程的微处理器和相关电路)的组合。而且,在不脱离本发明构思的范围的情况下,实施例的每个块、单元和/或模块可以在物理上分成两个或更多个交互且离散的块、单元和/或模块。此外,在不脱离本发明构思的范围的情况下,实施例的块、单元和/或模块可以物理地组合成更复杂的块、单元和/或模块。
在以下描述中,提供了包括根据本发明构思的至少一些示例实施例的用于实现传统高速缓存标记方案的有效替代方案的功能块和示例高速缓存位置缓冲器CLB的细节。另外,虽然参考特定高速缓存和计算机架构描述了根据本发明构思的至少一些示例实施例的CLB方案,但是本领域技术人员将认识到,本发明构思的一个或多个示例实施例适用于广泛的内存和系统架构。在某些情况下,为了简单起见,没有详细描述众所周知的电路和结构。
根据本发明构思的至少一些示例实施例,与已知于每次在层次结构中的各级之间以及在各节点之间移动高速缓存行丢弃有用的位置信息不同,将位置信息存储(例如,更新)在高速缓存处理方案(CHS)中,并用于以后的高速缓存访问。在本公开中,术语“位置信息”与“LI”或“位置信息LI”同义,并且有时也可以称为“LI”或“位置信息LI”。此外,特定位置信息的值可以被称为“位置信息值”。以关联方式组织CLB。因此,每个CLB条目包括地址标记字段和与地址标记字段关联的多个LI,但是根据本发明构思的至少一些示例实施例,用于存储位置信息的其他技术也是可能的。随后,存储在CLB中的信息可用于快速访问所请求数据的位置,而无需额外的关联查找。更确切地说,CLB提供位置信息LI,从中可以确定正确的高速缓存标识以及高速缓存内的正确位置,而无需访问高速缓存的任何地址标记。LI还可以将远程节点标识为关联数据的位置。因此,使用根据本发明构思的至少一些示例实施例的技术,可以在高速缓存层次结构中更快地找到所请求的数据,并且以消耗更少能量的方式找到所请求的数据。所描述的技术还使得能够有效地实现更灵活且更少层次的高速缓存拓扑。
因此,根据本发明构思的至少一些示例实施例,诸如图1和图2中所示的系统还可以包括如本文所述的高速缓存处理方案(CHS)。该方案包括高速缓存位置缓冲器(CLB)或CLB的层次结构,其保持追踪存储在高速缓存层次结构中的数据单元的位置。无论数据单元何时在高速缓存层次结构中移动,其新位置都会记录在CLB中。
根据本发明构思的至少一些示例实施例的CLB可以实现为存储多个高速缓存位置条目(CLE)的关联组织。每个CLE包含用于关联查找的地址标记,以及存储多个位置信息LI的一些载荷,例如高速缓存位置表(CLT)。实际上,CLB本身可以被视为存储位置信息的高速缓存。
现在将参照图8至图10描述本发明构思的至少一些示例实施例的特征。为了清楚起见,本领域技术人员将理解,这些图示出了本发明构思的至少一些示例实施例的逻辑实现而不是实际的物理实现。因此,本领域技术人员将理解,这些图示出了实现的逻辑表达,并且物理实现可以在其实现细节方面实质不同。
对于高速缓存层次结构中的数据压缩存在各种各样的提议。已经认识到,一些数据值经常出现在重要的应用中。使用64位字表示这种高频数据值可能是冗余的并且浪费高速缓存容量和静态功率。相反,许多提案已经提出了更有效的方法来表示高频数据值。虽然存在各种不同的复杂压缩算法,但最重要的原则相当简单。检测经常使用的数据值并引入对这些值的新的有效编码。这些编码可以是静态的或动态的。作为简单的示例,假设应用程序中经常出现三个十六进制值0x0、0x1和0xFFFFFFFF。这允许仅使用两位信息而不是未压缩的64位信息(8字节)来表示存储这些值中的任何值的64位字。现在假设高速缓存行中的每个64位值以添加的2位压缩标记开始。如果压缩标记具有值1、2或3,则意味着该字分别存储分别频繁出现的值0x0、0x1和0xFFFFFFFF,并且不再需要更多的位来存储该字的值。这些压缩值可以通过仅存储其压缩标记来表示。高速缓存行的紧接着的下一部分将存储下一个64位字的压缩标记。如果压缩标记存储值0,则意味着压缩标记之后的下一个64位信息存储未压缩的值。如果64字节高速缓存行的8个64位字包含4个这样的压缩值和4个未压缩值,则与传统的未压缩高速缓存行相比,高速缓存行可由大约一半的位来表示。
虽然所提出的压缩技术通常比上述示例更精细,但它们具有相同的压缩效果:相比于使用512位表示64字节高速缓存行的普通表表示,一些高速缓存行可以由更少数量的位来表示。但是,找到高速缓存行的数据值的压缩表示并不能单独使用传统的基于标记的高速缓存来实现更紧凑的表示。还必须改变高速缓存结构本身以能够访问大小不同的高速缓存行从而充分利用所述压缩。
图8是示出根据本发明构思的至少一个示例实施例的具有各种程度的数据压缩的三个基于标记的高速缓存架构的框图。现在参照图8,图8示出了三个不同的组关联高速缓存。尽管图8中仅示出了两路关联高速缓存,这些高速缓存实施方式可以概括为具有更多或更少数量的路关联。最顶部的高速高速缓存(A)由地址标记(AT)阵列810和数据阵列815组成。基于对高速缓存的访问请求,索引功能将选择其中可存在所请求的高速缓存行的一个组。将地址标记811和812都与该请求的地址进行比较,以确定在数据阵列中其相应的高速缓存行(816和817)中的是否存储所请求的高速缓存行。如果没有标记与所请求的地址匹配,则确定高速缓存未命中。
最上面的高速高速缓存(A)不能受益于高速缓存行压缩方案,如上面讨论的简化示例,因为它只能在每组中存储两个高速缓存行。图8中的(B)高速缓存示出了能够受益于高速缓存压缩的设计。即使每组在其数据阵列中当前保持每组两个未压缩高速缓存行,但其相应的标记阵列被设计为每组保持8个标记。如中间高速缓存示例(B)中所示,由于每个标记相当大(≈30至40位)并且通常每位消耗更多区域,因此对于具有很少压缩高速缓存行的应用来说,这是开销相当大的解决方案。这里,在数据阵列825中示出了两个未压缩高速缓存行826和827。仅将与标记阵列中的每个未压缩高速缓存行的起始对应的地址标记821和822初始化以保持其对应的地址标记。该组中其余六个地址标记的被标记为无效。因此,高速缓存(B)需要高速缓存(A)四倍的地址标记容量来存储相同数量的未压缩高速缓存行。
然而,如果图8(B)中描绘的高速缓存架构被用于运行具有许多可压缩高速缓存行的应用程序,可以实现针对底部高速缓存(C)示出的高速缓存使用。这里,假设支持压缩度为4的压缩方案,即,可以将压缩高速缓存行表示为未压缩高速缓存行大小的25%、50%或75%。(压缩度为8可以将高速缓存行压缩到其未压缩大小的12.5%等。)如果所有高速缓存行都被压缩到未压缩高速缓存行大小的25%,则每组可保持8个压缩高速缓存行。在那种情况下,标记阵列830的地址标记中的每一个都将是有效的并且各自对应于每一压缩高速缓存行。
相反,底部高速缓存(C)被示出为存储具有混合压缩度的高速缓存行:25%、50%或100%。总共有四个高速缓存行836、837、838和839已装入该组中。高速缓存组中有一部分不能被利用,即如高速缓存行837和838之间的间隙所示,这被称为碎片(fragmentation)。四个高速缓存行中的每一个具有对应的有效地址标记831、832、833和834(与其起始点对齐)。其余的地址标记未被使用,并标记为无效。这意味着即使在这个相当有益的压缩方案中,与示例(A)和(B)相比,该方案设法在组中存储了两倍的高速缓存行数,但仍有一半的地址标记未使用,并且将产生静态功率和面积(也可能是动态功率,因为它们可能会与请求的地址进行比较)。
图9是示出根据本发明构思的至少一个示例实施例的少标记高速缓存系统的简化表示的框图。图9示出了利用图4至图7中描绘的少标记技术中的一些的高速缓存系统。其包含两个级的CLB 911和912。即使CLB在图9中被示为直接映射(1路)结构,它们的实现通常具有更高程度的组关联性或倾斜的关联性组织。每个高速缓存位置条目(CLE)具有一个地址标记和指向位于高速缓存级L1 901、L2 902或L3 903中的任何一个中的高速缓存行的某数量的地址信息LI指针。如前所述,每个LI由以下数量的位来编码,该数量对应于高速缓存级的数量的对数加上其关联性的对数再加上针对一些“符号”的空间的对数,即log2(级)+log2(路)+1,假设级的数量和路的数量以及一些更多的“符号”(如“MEM”和“不知道”需要编码)为二次幂偶数需要编码。假设在每个级具有16路关联高速缓存的三级高速缓存层次结构,7位的LI足以还对包括“MEM”和“不知道”的“符号”进行编码。
为简单起见,图9的层次结构中的3级高速缓存中的每一级被示出为存储未压缩高速缓存行的两路关联高速缓存。图9示出了三个这样的LI指针931、932和933如何分别指向高速缓存级L1 901、L2 902和L3 903中的每一个的对应高速缓存行的起始。
图10是示出根据本发明构思的至少一个示例实施例的有效支持压缩数据存储和处理的少标记高速缓存系统的简化表示的框图。图10示出了与图9的存储未压缩高速缓存行的能力(在该示例中每组2个未压缩高速缓存行)相同的高速缓存层次结构。根据本发明构思的至少一些示例实施例,压缩高速缓存行可以被存储到特定压缩程度,例如如图10所示压缩程度为4。每个LI指针(1031、1032、1033)分别指向三个高速缓存级1001、1002和1003中的每一个中的压缩高速缓存行的起始。这意味着LI编码在每个高速缓存集中还应当能够识别四个更多的位置。虽然将图8的传统高速缓存转换为支持压缩等级为4的高速缓存意味着线性成本:从每组两个地址标记到每组八个地址标记,其中每个地址标记为30至40位,但是支持图10中相同程度的压缩的成本是对数级的,LI的大小增加2位,例如从6到8。根据本发明构思的至少一个示例实施例,支持一定压缩度D的压缩高速缓存行,与不支持压缩的系统相比所需的额外的位的数量是log2(D)。在一个示例中,编码每个LI的位的数量从log2(路)+log2(级)+1变为log2(路)+log2(级)+log2(压缩度)+1。
根据本发明构思的至少一个示例实施例,LI被进一步扩展为对其指向的压缩高速缓存行的大小进行编码。对于具有最高压缩度D的系统,这将添加额外的log2(D)位。根据本发明构思的至少一个示例实施例,这将使LI位计数log2(路)+log2(级)+2×log2(压缩度)+1。根据本发明构思的至少一个示例实施例,LI被进一步扩展为对压缩类型进行编码,即,需要哪种解压缩方法来对高速缓存行进行解压缩。因此,应当理解,本发明构思的至少一些示例实施例使得LI能够以比未压缩数据单元的大小更精细的粒度来识别数据位置。
与图8中所示的系统(C)相反,压缩程度不必以相同的方式构建到图10的硬件中。不存在类似于从图8的系统(A)到系统(C)所需的改变的结构变化。
图10还引入了另一个压缩特征:由LI编码的符号“ZERO”,如1034所示。根据本发明构思的至少一个示例实施例,LI存储符号ZERO意味着LI所引用的整个高速缓存行存储值ZERO。根据本发明构思的至少一个示例实施例,如果LI包含符号ZERO,则在任何高速缓存中都不存在为对应高速缓存行分配的空间。根据本发明构思的至少一个示例实施例,如果核从其在CLB-1中存储了符号ZERO的对应LI的高速缓存行读取字,则高速缓存层次结构将值“0”返回到核,但是不会在层次结构中分配或移动高速缓存行来实现此目的。根据本发明构思的至少一个示例实施例,当高速缓存行试图向其在CLB-1中存储了符号ZERO的对应LI的高速缓存行储存字时,将在其L1中分配零填充高速缓存行并且其最终将获得写入权限。根据本发明构思的至少一个示例实施例,将更新LI以反映主高速缓存行存储在其L1高速缓存中的事实。
在多处理器系统中,与物理地址对应的高速缓存行可能在多个CLB中具有关联的LI。如果是这种情况,则其全部指向符号ZERO或全部都不应指向符号ZERO。根据本发明构思的至少一个示例实施例,在允许一个核使其高速缓存行从ZERO LI指针转换到其L1中的零填充并可写高速缓存行之前,将需要涉及与参照图6和图7所讨论的相似的高速缓存一致性协议,以确保与相同物理高速缓存行关联的其他LI=ZERO指针被改变。根据本发明构思的至少一个示例实施例,那些其他LI=ZERO指针应该被改变为与无效的一致性状态对应的表示。根据本发明构思的至少一个示例实施例,该改变应遵循图6和图7中讨论的协议并且那些其他LI=ZERO指针应当被改变为指向存储新的零填充的可写入高速缓存行的L1位置。
实际上,许多高速缓存行包含值“0”。每当在运行时系统中分配新的存储器区域时,整个存储器区域被初始化以保持值“0”。这通常通过将新分配的虚拟页面指向特殊物理页面(零页面)来实现。在传统的高速缓存系统中,零页面仅包含存储值“0”的高速缓存行。读取该页面的核将被返回值“0”。传统上,这是通过在层次结构中分配和移动包含“0”的高速缓存行实现的。在核第一次尝试将页面映射写入到零页面时,会生成陷阱,新的物理页面被分配并初始化为仅存储“0”高速缓存行,并虚拟页面的映射被更改为指向新的物理页面。
根据本发明构思的至少一个示例实施例,零页面由这样的页面表示:其具有存储值ZERO的所有LI。对零页面的读取尝试不会导致高速缓存层次结构中的任何高速缓存行分配或任何高速缓存行移动。相反,读取零页面的核将被返回值“0”。根据本发明构思的至少一个示例实施例,在对零页面尝试写入时,生成陷阱,并且与所访问的虚拟页面关联的CLB区域(映射到零页面)将改为与其新的物理地址关联。这可以例如通过改变与每个CLE关联的每区域物理地址字段(也称为区域)来实现,例如RI 413、633或733。这种方案将以更有效的方式使用层次结构的高速缓存容量(没有为LI=ZERO高速缓存行分配高速缓存行),将在系统中消耗更少的带宽(包含值“0”的高速缓存行的移动更少)并避免不必要的CPU工作(将值零复制到新的高速缓存行)。
根据本发明构思的至少一个示例实施例,LI可以编码除“0”之外的其他预定义值,例如值“1”以及将二进制值“1”存储在高速缓存行的所有位中的值。本领域技术人员将理解,可以选择以这种方式表示任何值,并且可以在执行期间动态地选择所选择的值。
结合附图(例如附图8至图10)描述的步骤可以以各种顺序执行,并且可以并行或顺序地执行一些步骤。本发明构思的至少一些示例实施例可以提供各种有益结果。例如,根据本发明构思的至少一些示例实施例执行的详细模拟研究已经示出,与传统高速缓存系统相比,根据本发明构思的至少一些示例实施例的高速缓存实施方式可以节省大量能量,并且还可以导致高速缓存具有明显更短的访问时间。
为了清楚起见,本文的大部分说明一般描述了如何定位高速缓存行并将其返回到请求CPU的技术。本说明未详细描述选择高速缓存行中包含的请求字并将其返回到CPU的多种方式。然而,本领域技术人员已知用于选择包含在高速缓存行内的请求字并且将所请求的高速缓存行返回到CPU的各种方法。
为清楚起见,本文中描述高速缓存层次结构的数据的处理的大部分说明描述了独占型高速缓存层次结构。本领域技术人员将理解,本发明构思的示例实施例中的一个或多个可以扩展为还覆盖包容型存储器层次结构和非独占型存储器层次结构。
尽管上文描述的发明构思的一个或多个示例实施例可以与单处理器系统和多处理器系统相关,例如上文分别关于图1和图2示出和描述的系统,但本发明构思的一个或多个示例实施例主要结合单处理器系统示出。然而,本领域技术人员将理解,结合单处理器系统示出的发明构思的一个或多个示例实施例不限于这样的实施方式。
尽管以上在某些示例计算机架构的语境中进行了描述,但是高速缓存存在于图6至图8中所示的示例计算机系统内部以及外部的许多其他设置中,并且本领域技术人员将理解,在计算机系统的语境中上述发明构思的至少一些示例实施例也可以应用于这样的其他语境。这种使用的示例是虚拟存储器系统,其将来自慢速、高容量存储器(例如磁盘或FLASH存储器)的数据高速缓存到可以使用动态RAM实现的更快和更小的高容量存储器中。在计算机系统中进行高速缓存的其他示例包括(但不限于)磁盘高速缓存、web高速缓存和名称高速缓存。这种高速缓存的组织和高速缓存机制可能与上文讨论的高速缓存不同,例如,在组的大小、组的实现和关联性等方面存在变化。无论高速缓存机制本身的实现如何,本发明构思的至少一些示例实施例同样适用于实现各种高速缓存方案。
本申请中提供的方法或流程图可以在计算机可读存储介质中清晰体现的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。
因此已经描述了本发明构思的示例实施例,显而易见的是可以以多种方式改变本发明构思的示例实施例。不应将这些变化视为脱离本发明构思的示例实施例的预期实质和范围,并且对于本领域技术人员显而易见的所有这些修改旨在包括在所附权利要求的范围内。
Claims (20)
1.一种多处理器系统,包括:
多个节点和至少一个存储器,其中每个节点包括至少一个处理器、专用于所述节点的第一高速缓存、处于比所述第一高速缓存更高级的第二高速缓存、以及专用于所述节点的高速缓存位置缓冲器,其中,对于所述多个节点中的至少一个节点,
包括在所述至少一个节点中的所述第一高速缓存和所述第二高速缓存中的至少一个包括能够存储大小不同的压缩数据单元的至少一个高速缓存位置,
包括在所述至少一个节点中的所述高速缓存位置缓冲器被配置为存储多个高速缓存位置缓冲器条目,所述多个高速缓存位置缓冲器条目中的每一个包括多个位置信息值,每个位置信息值指向与相应数据单元关联的位置的起始,
包括在所述至少一个节点中的所述高速缓存位置缓冲器中存储的每个位置信息值指示所述位置信息值指向的以下位置,
包括在所述至少一个节点中的所述第一高速缓存内的位置,
包括在所述至少一个节点中的所述第二高速缓存内的位置,或所述至少一个存储器中的位置,并且
所述多个位置信息值中的至少一个能够以比未压缩数据单元的大小更精细的粒度识别与所述相应数据单元对应的位置。
2.根据权利要求1所述的多处理器系统,其中,所述多个位置信息值中的至少一个位置信息值对所述至少一个位置信息值所指向的压缩数据单元的大小进行编码。
3.根据权利要求1所述的多处理器系统,其中,所述多个位置信息值中的至少一个位置信息值对所述至少一个位置信息值指向的压缩数据单元的压缩类型进行编码。
4.根据权利要求1所述的多处理器系统,其中,所述多个位置信息值中的至少一个位置信息值对符号进行编码,所述符号表示数据单元存储了第一值。
5.根据权利要求4所述的多处理器系统,其中,响应于包括在所述至少一个节点中的至少一个处理器对编码所述符号的所述至少一个位置信息值所指向的数据单元执行读取操作,将所述第一值返回到所述至少一个处理器。
6.根据权利要求5所述的多处理器系统,其中响应于所述读取操作,包括在所述至少一个节点中的所述第一高速缓存和所述第二高速缓存中将不分配或移动所述第一值的位置。
7.根据权利要求4所述的多处理器系统,其中第一值是“0”。
8.根据权利要求4所述的多处理器系统,其中第一值是“1”。
9.一种数据管理方法,包括:
将数据单元存储在多处理器系统的多个节点中的专用高速缓存中,其中每个节点包括至少一个处理器、专用于所述节点的至少一个高速缓存和专用于所述节点的至少一个高速缓存位置缓冲器;以及
对于所述多处理器系统的所述多个节点中的至少一个节点,
在包括在所述至少一个节点中的所述至少一个高速缓存位置缓冲器中存储多个位置信息值,每个位置信息值指示与相应数据单元关联的位置,其中存储在所述至少一个高速缓存位置缓冲器中的每个位置信息值指示与所述相应数据单元关联的位置为,
包括在所述至少一个节点中的所述至少一个专用高速缓存中的位置,
所述多个节点中除了所述至少一个节点之外的一个节点中的位置,或
主存储器中的位置,并且
对所述多个位置信息值中具有指示数据单元存储了第一值的符号的至少一个位置信息值进行编码。
10.根据权利要求9所述的数据管理方法,其中,将数据单元存储在多处理器系统的多个节点中的专用高速缓存中的步骤包括:
将大小不同的压缩数据单元和未压缩数据单元中的至少一个存储在所述专用高速缓存中提供的至少一个高速缓存位置中。
11.根据权利要求10所述的数据管理方法,还包括:
基于存储在所述至少一个节点中包括的所述至少一个高速缓存位置缓冲器中的所述多个位置信息值中的至少一个位置信息值,以比未压缩数据单元的大小更精细的粒度识别与所述相应数据单元对应的位置。
12.根据权利要求10所述的数据管理方法,还包括:
对所述多个位置信息值中具有所述压缩数据单元的大小的位置信息值中的至少一个进行编码。
13.根据权利要求10所述的数据管理方法,还包括:
对所述多个位置信息值中具有所述压缩数据单元的压缩类型的的位置信息值中的至少一个进行编码。
14.根据权利要求9所述的数据管理方法,还包括:
通过包括在所述至少一个节点中的所述至少一个处理器,对利用所述符号进行编码的所述至少一个位置信息值所指向的数据单元执行读取操作;以及
将所述第一值返回到所述处理器。
15.根据权利要求14所述的数据管理方法,
其中,将所述第一值返回到包括在所述至少一个节点中的所述至少一个处理器包括:返回所述第一值,而不在包括在所述至少一个节点中的所述至少一个专用高速缓存中为所述第一值分配位置。
16.根据权利要求9所述的数据管理方法,其中第一值是“0”。
17.一种包括计算机可执行指令的非暂时性计算机可读存储介质,当计算机执行所述指令时,使所述计算机执行包括以下步骤的操作:
将数据单元存储在包括在多处理器系统的多个节点中的专用高速缓存中、存储在全局高速缓存和存储器中,其中每个节点包括至少一个处理器和专用于所述节点的至少一个高速缓存,
所述多个节点通过网络连接;并且
对于所述多个节点中的至少一个节点,
将多个位置信息值存储在专用于所述至少一个节点的高速缓存位置缓冲器中;并且
利用符号对所述多个位置信息值中的至少一个位置信息值进行编码,其中所述符号表示数据单元存储了第一值。
18.根据权利要求17所述的非暂时性计算机可读介质,其中,所述操作还包括:
对利用所述符号进行编码的所述位置信息值所指示的数据单元执行读操作;并且
将所述第一值返回到包括在所述至少一个节点中的所述至少一个处理器,同时没有在所述专用高速缓存中为所述第一值分配位置。
19.根据权利要求18所述的非暂时性计算机可读介质,其中,所述操作还包括:
将大小不同的压缩数据单元和未压缩数据单元中的至少一个存储在包括在所述至少一个节点中的所述专用高速缓存中提供的至少一个高速缓存位置中;并且
基于所述多个位置信息值中的至少一个位置信息值,以比所述未压缩数据单元的大小更精细的粒度识别与相应数据单元对应的位置。
20.根据权利要求19所述的非暂时性计算机可读介质,其中,所述操作还包括:
对所述多个位置信息值中具有所述压缩数据单元的大小的至少一个位置信息值进行编码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762588717P | 2017-11-20 | 2017-11-20 | |
US62/588,717 | 2017-11-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109815165A true CN109815165A (zh) | 2019-05-28 |
Family
ID=64402025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811374894.5A Pending CN109815165A (zh) | 2017-11-20 | 2018-11-19 | 用于存储和处理高效压缩高速缓存行的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10866891B2 (zh) |
EP (1) | EP3486784B1 (zh) |
KR (1) | KR102157354B1 (zh) |
CN (1) | CN109815165A (zh) |
TW (1) | TWI800560B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143244A (zh) * | 2019-12-30 | 2020-05-12 | 海光信息技术有限公司 | 计算机设备的内存访问方法和计算机设备 |
CN113687771A (zh) * | 2020-05-05 | 2021-11-23 | 慧荣科技股份有限公司 | 存储器装置的存取管理方法、控制器以及主机装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831669B2 (en) * | 2018-12-03 | 2020-11-10 | International Business Machines Corporation | Systems, methods and computer program products using multi-tag storage for efficient data compression in caches |
US12066944B2 (en) * | 2019-12-20 | 2024-08-20 | Advanced Micro Devices, Inc. | Zero value memory compression |
CN112953853A (zh) * | 2021-02-05 | 2021-06-11 | 井芯微电子技术(天津)有限公司 | 共享缓存系统及方法、电子设备及存储介质 |
US11573899B1 (en) | 2021-10-21 | 2023-02-07 | International Business Machines Corporation | Transparent interleaving of compressed cache lines |
GB2614069B (en) * | 2021-12-21 | 2024-10-09 | Advanced Risc Mach Ltd | Cache systems |
GB2614071B (en) * | 2021-12-21 | 2024-07-17 | Advanced Risc Mach Ltd | Cache systems |
GB2614073B (en) * | 2021-12-21 | 2024-06-05 | Advanced Risc Mach Ltd | Cache systems |
US20230359556A1 (en) * | 2022-05-03 | 2023-11-09 | Advanced Micro Devices, Inc. | Performing Operations for Handling Data using Processor in Memory Circuitry in a High Bandwidth Memory |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047916A1 (en) * | 2004-08-31 | 2006-03-02 | Zhiwei Ying | Compressing data in a cache memory |
US20110271055A1 (en) * | 2010-04-29 | 2011-11-03 | O'connor James Michael | System and method for low-latency data compression/decompression |
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 |
US20160170878A1 (en) * | 2014-12-16 | 2016-06-16 | Sanjeev N. Trika | Apparatus, system and method for caching compressed data |
US20170255561A1 (en) * | 2016-03-07 | 2017-09-07 | Intel Corporation | Technologies for increasing associativity of a direct-mapped cache using compression |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013186828A1 (ja) * | 2012-06-11 | 2013-12-19 | 株式会社 日立製作所 | 計算機システム及び制御方法 |
US9304924B2 (en) * | 2012-08-17 | 2016-04-05 | Futurewei Technologies, Inc. | Cache coherent handshake protocol for in-order and out-of-order networks |
KR101956031B1 (ko) * | 2012-10-15 | 2019-03-11 | 삼성전자 주식회사 | 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템 |
TW201423402A (zh) * | 2012-12-12 | 2014-06-16 | Paneve Llc | 通用目的數位資料處理器、系統及方法 |
US10645002B2 (en) * | 2014-06-20 | 2020-05-05 | Hewlett Packard Enterprise Development Lp | System, apparatus and method for managing redundancy elimination in packet storage during observation of data movement |
WO2017077502A1 (en) | 2015-11-04 | 2017-05-11 | Green Cache AB | Systems and methods for implementing coherent memory in a multiprocessor system |
-
2018
- 2018-11-16 KR KR1020180141960A patent/KR102157354B1/ko active IP Right Grant
- 2018-11-19 CN CN201811374894.5A patent/CN109815165A/zh active Pending
- 2018-11-20 US US16/195,942 patent/US10866891B2/en active Active
- 2018-11-20 EP EP18207155.5A patent/EP3486784B1/en active Active
- 2018-11-20 TW TW107141267A patent/TWI800560B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047916A1 (en) * | 2004-08-31 | 2006-03-02 | Zhiwei Ying | Compressing data in a cache memory |
US20110271055A1 (en) * | 2010-04-29 | 2011-11-03 | O'connor James Michael | System and method for low-latency data compression/decompression |
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 |
US20160170878A1 (en) * | 2014-12-16 | 2016-06-16 | Sanjeev N. Trika | Apparatus, system and method for caching compressed data |
US20170255561A1 (en) * | 2016-03-07 | 2017-09-07 | Intel Corporation | Technologies for increasing associativity of a direct-mapped cache using compression |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143244A (zh) * | 2019-12-30 | 2020-05-12 | 海光信息技术有限公司 | 计算机设备的内存访问方法和计算机设备 |
CN111143244B (zh) * | 2019-12-30 | 2022-11-15 | 海光信息技术股份有限公司 | 计算机设备的内存访问方法和计算机设备 |
CN113687771A (zh) * | 2020-05-05 | 2021-11-23 | 慧荣科技股份有限公司 | 存储器装置的存取管理方法、控制器以及主机装置 |
CN113687771B (zh) * | 2020-05-05 | 2024-03-01 | 慧荣科技股份有限公司 | 存储器装置的存取管理方法、控制器以及主机装置 |
Also Published As
Publication number | Publication date |
---|---|
US20190155731A1 (en) | 2019-05-23 |
TW201937372A (zh) | 2019-09-16 |
KR20190058318A (ko) | 2019-05-29 |
KR102157354B1 (ko) | 2020-09-17 |
EP3486784A1 (en) | 2019-05-22 |
EP3486784B1 (en) | 2020-11-18 |
US10866891B2 (en) | 2020-12-15 |
TWI800560B (zh) | 2023-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815165A (zh) | 用于存储和处理高效压缩高速缓存行的系统和方法 | |
KR102193689B1 (ko) | 예측에 기초하여 효율적으로 캐시 라인을 관리하는 시스템 및 방법 | |
US11237969B2 (en) | Systems and methods for implementing coherent memory in a multiprocessor system | |
CN103473181B (zh) | 分级式不可变内容可寻址存储器处理器 | |
CN100478959C (zh) | 嵌入式数据库的存储管理方法 | |
CN1979452A (zh) | 用于短暂高速缓存存储的方法和处理器 | |
US11354242B2 (en) | Efficient early ordering mechanism | |
CN109815167A (zh) | 用于高效虚拟标记的高速缓存实现的系统和方法 | |
TWI795470B (zh) | 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體 |
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 |