CN107423234A - 多处理器系统及缓存共享方法 - Google Patents
多处理器系统及缓存共享方法 Download PDFInfo
- Publication number
- CN107423234A CN107423234A CN201710249248.5A CN201710249248A CN107423234A CN 107423234 A CN107423234 A CN 107423234A CN 201710249248 A CN201710249248 A CN 201710249248A CN 107423234 A CN107423234 A CN 107423234A
- Authority
- CN
- China
- Prior art keywords
- caching
- processor
- cache
- processor subsystem
- line 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.)
- Withdrawn
Links
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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- 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
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
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
技术领域
本发明是关于一种多处理器(multi-processor)系统,更具体地,是关于一种支持缓存共享(cache sharing)的多处理器系统及有关的缓存共享方法。
背景技术
目前,由于计算效能需求的增长,多处理器系统已变得愈发流行。通常,多处理器系统中的每个处理器经常具有其专用缓存(cache),以改善存储器存取的效率。缓存一致性互连(cache coherence interconnect)可以应用于多处理器系统,以管理在专用于不同处理器的这些缓存之间的缓存一致性。举例而言,典型的缓存一致性互连硬件可以向附接于(attached to)该硬件的缓存请求一些操作(actions)。例如,缓存一致性互连硬件可以从这些缓存中读取某些缓存行(cache line),并可对这些缓存的某些缓存行解除分配(de-allocate)。对于运行在多处理器系统上的较低线程级并行(Thread-Level Parallelism,TLP)程序,有可能一些处理器及有关缓存无法利用。另外,通常的缓存一致性互连硬件无法将从一个缓存驱逐(evicted)出的干净/脏的(clean/dirty)缓存行数据储存至另一缓存。因此,需要一种新的缓存一致性互连设计,能够将从一个缓存驱逐出的干净/脏的缓存行数据储存至另一缓存,以改善多个缓存的使用以及多处理器系统的性能。
发明内容
有鉴于此,本发明提供至少一种多处理器系统及缓存共享方法。
根据本发明一实施例的多处理器系统包括多个处理器子系统及缓存一致性互连电路。该多个处理器子系统包含第一处理器子系统与第二处理器子系统。该第一处理器子系统包含至少一第一处理器及耦接于该至少一第一处理器的第一缓存,该第二处理器子系统包含至少一第二处理器及耦接于该至少一第二处理器的第二缓存。该缓存一致性互连电路耦接于该多个处理器子系统,用于从该第一缓存中的被驱逐缓存行(evicted cacheline)获取缓存行数据,并将已获取的该缓存行数据传送至该第二缓存进行存储。
根据本发明一实施例的缓存共享方法,适用于多处理器系统,该缓存共享方法包含:向该多处理器系统提供多个处理器子系统,该多个处理器子系统包括第一处理器子系统和第二处理器子系统,其中该第一处理器子系统包含至少一第一处理器和耦接于该至少一第一处理器的第一缓存,以及该第二处理器子系统包含至少一第二处理器和耦接于该至少一第二处理器的第二缓存;从该第一缓存中的被驱逐缓存行中获取缓存行数据;以及将已获取的该缓存行数据传送至该第二缓存进行存储。
本发明所提供的多处理器系统及缓存共享方法,其优点之一在于能够改善多个缓存的使用效率,并提升多处理器系统的整体性能。
附图说明
图1为根据本发明一实施例的多处理器系统的示意图。
图2为根据本发明一实施例的使用共享的本地缓存的多处理器系统的示意图。
图3为根据本发明一实施例的多处理器系统的系统运作期间的共享缓存大小(例如,次级缓存的大小)的动态变化的示意图。
图4为根据本发明一实施例的缓存分配电路的示意图。
图5为根据本发明一实施例的多处理器系统所使用的时钟门控设计的示意图。
具体实施方式
在说明书及权利要求当中使用了某些词汇来指称特定的组件。本领域技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及权利要求当中所提及的“包含”及“包括”为一开放式的用语,故应解释成“包含但不限定于”。“大致”是指在可接受的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性连接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表该第一装置可直接电性连接于该第二装置,或通过其它装置或连接手段间接地电性连接至该第二装置。“连接”一词在此包含任何直接及间接、有线及无线的连接手段。以下所述为实施本发明的较佳方式,目的在于说明本发明的精神而非用以限定本发明的保护范围,本发明的保护范围当视后附的权利要求所界定者为准。
图1为根据本发明一实施例的多处理器系统的示意图。举例而言,多处理器系统100可以实施为便携设备,例如移动电话、平板电脑、可穿戴式装置等。然而,本发明并非以此为限。换言之,任何使用本申请所提出的多处理器系统100的电子装置均落入本发明的范围。在本实施例中,多处理器系统100可以包含多个处理器子系统102_1-102_N、缓存一致性互连电路104、存储装置(例如,主存储器)106,并可以进一步包含其它可选(optional)电路,如预取(pre-fetching)电路107、时钟门控(clock gating)电路108及电源管理电路109。对于缓存一致性互连电路104,其可以包含探听过滤器(Snoop Filter,SF)116、缓存分配电路117、内部受害者缓存(internal victim cache)118及性能监测电路119。实施于缓存一致性互连电路104中的这些硬件电路中的一个或多个可以根据实际设计考虑进行省略。此外,N的值为正整数,并可根据实际设计考虑进行调整。换言之,本发明对于实施于多处理器系统100中的处理器子系统的数量并无限制。
多个处理器子系统102_1-102_N耦接于缓存一致性互连电路104。多个处理器子系统102_1-102_N中的每个可以包含集群(cluster)与本地缓存(local cache)。如图1所示,处理器子系统102_1包含集群112_1及本地缓存114_1,处理器子系统102_2包含集群112_2及本地缓存114_2,以及处理器子系统102_N包含集群112_N及本地缓存114_N。集群112_1-112_N中的每个可以是一组处理器(或称为处理器核心)。举例而言,集群112_1可以包含一个或多个处理器121,集群112_2可以包含一个或多个处理器122,以及集群112_N可以包含一个或多个处理器123。当处理器子系统102_1-102_N中的一个为多处理器子系统时,该多处理器子系统的该集群包含单个(single)处理器/处理器核心,如图形处理单元(GraphicsProcessing Unit,GPU)或数字信号处理器(Digital Signal Processor,DSP)。请注意,集群112_1-112_N的处理器数量可以根据实际设计需求而进行调整。举例而言,包含于集群112_1中的处理器121的数量可以与包含于对应的集群112_2/112_N中的处理器122/123的数量相同或不同。
集群112_1-112_N可以分别具有其对应的专用本地缓存。在本实施例中,每个集群可以分配一个专用本地缓存(例如,第二级缓存)。如图1所示,多处理器系统100可以包含分别实施于处理器子系统102_1-102_N中的多个本地缓存114_1-114_N。因此,集群112_1可以使用本地缓存114_2来改善其性能,以及集群112_N可以使用本地缓存114_N来改善其性能。
缓存一致性互连电路104可以用于管理本地缓存114_1-114_N之间的一致性(coherence),其中本地缓存114_1-114_N分别由集群112_1-112_N所单独存取。如图1所示,存储装置(例如,动态随机存取存储器(DRAM)装置)106由集群112_1-112_N中的处理器121-123所共享,其中存储装置106通过缓存一致性互连电路104耦接于本地缓存114_1-114_N。分配给一个特定集群的一特定本地缓存中的一缓存行可以基于一被请求的存储器地址(address)而进行存取,其中该被请求的存储器地址包含于该特定集群的处理器所发送的请求中。当发生该特定本地缓存的缓存命中(cache hit)的情形时,被请求的数据可以直接从该特定本地缓存中获取(retrieved),无需存取其它本地缓存或存储装置106。换言之,当发生该特定本地缓存的缓存命中时,意味着被请求的数据目前在该特定本地缓存中可用(available),因而无需存取存储装置106或其它本地缓存。
当发生该特定本地缓存的缓存失效(cache miss)的情形时,被请求的数据可以从其它本地缓存或存储装置106中获取。举例而言,若被请求的数据在另一本地缓存中可用,则被请求的数据可以从该另一本地缓存中读取,并通过该缓存一致性互连电路104储存于该特定本地缓存中,并进一步供应至发出该请求的该处理器。若本地缓存114_1-114_N中的每个被要求作为排他性(exclusive)缓存架构而使用,则当被请求的数据从另一本地缓存中被读取并储存于该特定本地缓存中后,该另一本地缓存的一缓存行被解除分配/丢弃(dropped)。然而,当被请求的数据在其它本地缓存中不可用(not available)时,被请求的数据从存储装置106中读取,并通过该缓存一致性互连电路104储存于该特定本地缓存,并进一步供应至发出该请求的该处理器。
如上所述,当发生该特定本地缓存的缓存失效时,被请求的数据可以从另一本地缓存或存储装置106中获取。若该特定本地缓存具有一空缓存行,该空缓存行需要用于快取从另一本地缓存或存储装置106处获取的被请求的数据时,将被请求的数据直接写入该空缓存行。然而,若该特定本地缓存没有一空缓存行可以用于储存从另一本地缓存或存储装置106所获取的被请求的数据时,使用一快取替换(replacement)策略选择一个特定缓存行(一已使用的缓存行),然后驱逐(evicted),并将从另一本地缓存或存储装置106处获取的被请求的数据写入该特定缓存行。
在传统多处理器系统设计中,该被驱逐缓存行的该缓存行数据(干净数据(cleandata)或脏的数据(dirty data))可以被丢弃或写回存储装置106,无法将该被驱逐缓存行数据通过缓存一致性互连电路直接写入另一本地缓存。在本实施例中,本发明所提供的缓存一致性互连电路104被设计支持缓存共享机制。因此,本发明所提供的缓存一致性互连电路104能够从第一处理器子系统(例如,处理器子系统102_1-102_N中的一个)的第一本地缓存中的被驱逐缓存行获取缓存行数据,并将已获取的缓存行数据(即,被驱逐缓存行的数据)传送至第二处理器子系统(例如,处理器子系统102_1-102_N中的另一个)的第二本地缓存进行存储。简言之,第一处理器子系统通过本发明所提供的缓存一致性互连电路104从该第二处理器子系统借用该第二本地缓存。因此,当对该第一本地缓存执行快取替换时,该第一本地缓存中的该被驱逐缓存行的该缓存行数据被快取至该第二本地缓存,而不会被丢弃或写回存储装置106。
如上所述,当在第一处理器子系统(例如,处理器子系统102_1-102_N中的一个)与第二处理器子系统(例如,处理器子系统102_1-102_N中的另一个)之间使能(enable)缓存共享机制时,从第一本地缓存所获取的该被驱逐缓存行数据被传送至该第二本地缓存进行存储。在一第一缓存行数据传送设计中,该缓存一致性互连电路104对该第二本地缓存执行写入操作,以将该缓存行数据储存入该第二本地缓存。换言之,该缓存一致性互连电路104主动将该第一本地缓存的该被驱逐缓存行数据推入该第二本地缓存。
在第二缓存行数据传送设计中,该缓存一致性互连电路104请求该第二本地缓存来读取来自该缓存一致性互连电路104的该缓存行数据。举例而言,该缓存一致性互连电路104维持一大小(size)较小的内部受害者缓存(例如,内部受害者缓存118)。当该第一本地缓存中的一缓存行被驱逐并被快取入该第二本地缓存时,该被驱逐缓存行的该缓存行数据被该缓存一致性互连电路104所读取,并临时保留于该内部受害者缓存118。接着,该缓存一致性互连电路104通过该第二本地缓存的一接口(interface)发送针对该被驱逐缓存行数据的一读取请求。因此,当接收到该缓存一致性互连电路104所发出的该读取请求后,该第二本地缓存将通过该第二本地缓存的该接口从该缓存一致性互连电路104的该内部受害者缓存118中读取该被驱逐缓存行数据,并储存该被驱逐缓存行数据。换言之,该缓存一致性互连电路104指示该第二本地缓存来将该第一本地缓存的该被驱逐缓存行数据从该缓存一致性互连电路104中取(pull)出。
请注意,该内部受害者缓存118通过缓存一致性互连电路104可以被任意处理器所存取。因此,该内部受害者缓存118可以用于向一个处理器直接提供被请求的数据。考虑到一被驱逐缓存行数据仍处于内部受害者缓存118中且目前还未进入该第二本地缓存的一情形。若一处理器(例如,处理器子系统102_1-102_N的处理器121-123中的一个)请求该被驱逐缓存行,则该处理器将从内部受害者缓存118中直接取得该被请求的数据。
请注意,该内部受害者缓存118可以是可选择性放置的。举例而言,若该缓存一致性互连电路104使用上述第一缓存行数据传送设计,以主动将该第一本地缓存的该被驱逐缓存行数据推入该第二本地缓存,则该内部受害者缓存118可以从该缓存一致性互连电路104中被省略。
该缓存一致性互连电路104可以使用基于缓存一致性的窥探(snooping)。举例而言,若在本地缓存中发生缓存失效事件,则运行该窥探机制来窥探其它本地缓存以检测这些其它本地缓存是否包含该被请求的缓存行数据。然而,大多数应用具有较少的共享数据。这意味着大量窥探是不必要的。不必要的窥探干扰(intervenes with)被窥探的本地缓存的运作,导致整个多处理器系统的性能降级。此外,不必要的窥探也会造成多余的功耗。在本实施例中,探听过滤器116可以应用于该缓存一致性互连电路104中,以通过滤除不必要的窥探操作来减少该缓存一致性电路的运作(cache coherence traffic)。
此外,探听过滤器116的使用也有利于本发明所提出的缓存共享机制。如上所述,本发明所提出的缓存一致性互连电路104能够从一第一本地缓存的一被驱逐缓存行获取一缓存行数据,并将已获取的该缓存行数据传送至一第二本地缓存进行存储。在一较佳实施方式中,归属于一第一处理器子系统的该第一本地缓存为一第T级缓存,该第T级缓存可以被包含于该第一处理器子系统的集群中的一个或多个处理器所存取,以及归属于第二处理器子系统的该第二本地缓存被借用作为包含于该第一处理器子系统的该集群中的一个或多个处理器的第S级缓存,其中S和T均为正整数,且S≥T。举例而言,S=T+1。因此,该第二本地缓存是从该第二处理器子系统借用的,以用作该第一处理器子系统的该次级缓存(nextlevel cache)。若该第一处理器子系统的该第一本地缓存为第二级缓存(T=2),则从该第二处理器子系统借用的该第二本地缓存用作该第一处理器子系统的第三级缓存(S=3)。
当根据该第一缓存行数据传送设计或该第二缓存行数据传送设计将从该第一本地缓存驱逐的该缓存行数据被快取至该第二本地缓存后,更新该探听过滤器116。由于该探听过滤器116用于记录本地缓存114_1-114_N的缓存状态,因此,该探听过滤器116为该共享的本地缓存(即,从其它处理器子系统借用的本地缓存)提供缓存命中信息或缓存失效信息。若该第一处理器子系统的一个处理器(缓存借用者)发出请求,以及该第一处理器子系统的该第一本地缓存(例如,第二级缓存)发生缓存失效事件,则查找该探听过滤器116以确定被请求的缓存行数据是否在该次级缓存(例如,从该第二处理器子系统中借用的该第二本地缓存)中被命中。若该探听过滤器116告知被请求的缓存行在次级缓存(例如,从该第二处理器子系统借用的该第二本地缓存)被命中,则存取该次级缓存(例如,从该第二处理器子系统借用的该第二本地缓存),而不会存取存储装置106中的数据。因此,该次级缓存(例如,从该第二处理器子系统借用的该第二本地缓存)的使用可减少发生在该第一本地缓存上的缓存失效所造成的潜在的丢失。若该探听过滤器116决定被请求的缓存行在该次级缓存(例如,从该第二处理器子系统借用的该第二本地缓存)中未被命中,则存取该存储装置106,而不会存取次级缓存。借助于该探听过滤器116,在缓存失效上不会存在一般有次级缓存的架构的不良影响(即,存取缓存但未命中导致的效能影响)。
此外,在本发明一些实施例中,该缓存一致性互连电路104可以根据该探听过滤器的信息来决定是否将该被驱逐缓存行数据储存入多处理器系统100中可用的一个共享缓存。这确保了每个共享缓存运作在排他性缓存架构下,以获取较佳的性能。然而,此处仅用于说明目的,并非用以限制本发明。
图2为根据本发明一实施例的使用共享的本地缓存的多处理器系统的示意图。图2所示的多处理器系统200可以基于图1所示的多处理器系统架构进行设计,其中该多处理器系统200的该缓存一致性互连电路204支持本发明所提出的缓存共享机制。在图2所示的实施例中,该多处理器系统200包含三个集群,其中,该第一集群“集群0”包含四个中央处理器(CPU),该第二集群“集群1”包含四个CPU,以及第三集群“集群2”包含两个CPU。在本实施例中,多处理器系统200可以是基于一高级精简指令集机器(Advanced RISC Machine,ARM)的系统。然而,此处仅用于说明目的,本发明并不以此为限。该多个集群中的每个包含一个第二级缓存,该第二级缓存用作本地缓存。第二级缓存214_1、214_2、214_3中的每个都可以通过一致性接口(Coherence Interface,CohIF)和缓存写入接口(Cache Write Interface,WIF)而与缓存一致性互连电路204进行通信。根据实际设计考虑,一个集群所使用的本地缓存可以根据闲置(idle)缓存共享策略及/或活动(active)缓存共享策略而被借用以用作另一(些)集群的次级缓存。
假设使用该闲置缓存共享策略,则在包含于一个处理器子系统中的每个处理器均处于闲置状态的条件下,该处理器子系统的本地缓存可以用作其它(一个或多个)处理器子系统的共享缓存(例如,次级缓存)。换言之,被借用的本地缓存不会被其局部处理器所使用。在图2中,一闲置处理器标识为一阴影区块。因此,关于该第一集群“集群0”,此处所包含的所有CPU均为闲置。因而,第一集群“集群0”的第二级缓存214_1可以通过该缓存一致性互连电路204而被第三集群“集群2”中的活动CPU所共享。当第三集群“集群2”(一缓存借用者)的第二级缓存214_3中的一缓存行因快取替换而被驱逐时,该被驱逐缓存行的缓存行数据被该缓存一致性互连电路204通过CohIF而获取,且已获取的该缓存行数据(即,被驱逐的缓存行数据)可以通过WIF而被推入第一集群“集群0”(一缓存借出者)的第二级缓存214_1中。由于第一集群“集群0”中的第二级缓存214_1可以用作第三集群“集群2”的第二级缓存,因此,该被驱逐缓存行的该缓存行数据被传送至该第三级缓存,而不是被丢弃或写回主存储器(例如,图1所示的存储装置106)。
另外,实施于多处理器系统200的缓存一致性互连电路204中的该探听过滤器216被更新,以记录用于指示该被驱逐缓存行数据目前在从第一集群“集群0”中借用的第二级缓存214_1中可用的信息。当第三集群“集群2”中的任意活动CPU发出对该被驱逐缓存行的一请求,而该被驱逐缓存行数据在第一集群“集群0”的第二级缓存214_1中可用时,第三集群“集群2”的第二级缓存214_3发生一缓存失效事件,以及在探听过滤器216中记录的该缓存状态指示被请求的缓存行及有关的缓存行数据在该共享缓存(即,从第一集群“集群0”中借用的第二级缓存214_1)中可用。因此,借助于探听过滤器216,被请求的数据可以从该共享缓存(即,从第一集群“集群0”处借用的第二级缓存214_1)中读取,并被传送至第三集群“集群2”的第二级缓存214_3。请注意,若被请求的数据在该共享缓存(即,从第一集群“集群0”处借用的第二级缓存214_1)中不可用,则先查找探听过滤器216,之后不会执行对该共享缓存(即,从第一集群“集群0”处借用的第二级缓存214_1)的存取。
在本发明的一些实施例中,当从使用闲置缓存共享策略所选择的共享本地缓存(例如,次级缓存)中的一特定缓存行读取一缓存行数据时,缓存一致性互连电路104/204可以请求该共享缓存解除分配/丢弃该特定缓存行,以使得该共享本地缓存作为专属缓存而使用,从而取得更佳性能。然而,此处仅用于说明目的,本发明并不以此为限。
根据活动缓存共享策略,在包含于一个处理器子系统中的至少一处理器仍处于活动状态的条件下,该处理器子系统的一本地缓存可以用作其它(一个或多个)处理器子系统的共享缓存(例如,次级缓存)。换言之,被借用的缓存仍可被其局部处理器所使用。在本发明的一些实施例中,当包含于一个处理器子系统中的至少一处理器仍处于活动状态(或当包含于该处理器子系统中的至少一处理器仍处于活动状态,且包含于该处理器子系统中的大多数处理器处于闲置状态)时,该处理器子系统的本地缓存用作其它(一个或多个)处理器子系统的共享缓存(例如,次级缓存)。然而,本发明并不以此为限。在图2中,闲置处理器标识为阴影区块。因此,关于第二集群“集群1”,此处只有所包含的一个CPU仍处于活动状态。第二集群“集群1”(缓存借出者)的第二级缓存214_2可以被第三集群“集群2”(缓存借用者)中的活动CPU通过多处理器系统200的缓存一致性互连电路204所共享。当第三集群“集群2”的第二级缓存214_3中的一缓存行因快取替换而被驱逐时,该被驱逐缓存行的缓存行数据由该缓存一致性互连电路204通过CohIF来获取,且已获取的该缓存行数据(即,被驱逐缓存行数据)通过WIF被推入第二集群“集群1”的第二级缓存214_2。由于第二集群“集群1”的第二级缓存214_2可以用作第三集群“集群2”的第三级缓存,因此,被驱逐缓存行的该缓存行数据被快取入该第三级缓存,而不是被丢弃或被写回主存储器(例如,图1所示的存储装置106)。
另外,更新实施于缓存一致性互连电路204中的探听过滤器216,以记录用于指示以记录指示该被驱逐缓存行数据目前在第二集群“集群1”的第二级缓存214_2中可用的信息。当第三集群“集群2”中的任意活动CPU发出对该被驱逐缓存行的该缓存行数据的请求,而该被驱逐缓存行的该缓存行数据在第二集群“集群1”的第二级缓存214_2中可用时,第三集群(标识为“集群2”)的第二级缓存214_3发生一缓存失效事件,且探听过滤器216中所记录的该缓存状态指示该被请求的数据在该共享缓存(即,从第二集群“集群1”中借用的第二级缓存214_2)中可用。因此,借助于探听过滤器216,被请求的数据可以从该共享缓存(即,从第二集群“集群1”处借用的第二级缓存214_2)中读取,并被传送至第三集群“集群2”的第二级缓存214_3。请注意,若被请求的数据在该共享缓存(即,从第二集群“集群1”处借用的第二级缓存214_2)中不可用,则先查找探听过滤器216,之后不会执行对该共享缓存(即,从第二集群“集群1”处借用的第二级缓存214_2)的存取。
在使用上述闲置缓存共享策略的情形下,不包含活动处理器的集群的数量在多处理器系统100/200的系统运作期间可能发生动态变化。类似地,在使用活动缓存共享策略的情形下,包含一个或多个活动处理器的集群的数量在多处理器系统100/200的系统运作期间也可能发生动态变化。因此,该共享缓存的大小(例如,次级缓存的大小)在多处理器系统100/200的系统运作期间可能发生动态变化。
图3为根据本发明一实施例的多处理器系统的系统运作期间的共享缓存大小(例如,次级缓存的大小)的动态变化的示意图。图3所示的较佳多处理器系统300可以基于图1所示的多处理器系统进行设计,其中该缓存一致性互连电路MCSI支持本发明所提供的缓存共享机制,并可包含探听过滤器以避免在发生缓存失效事件时对共享缓存的存取开销。在图3所示的实施例中,多处理器系统300具有多个集群,包括具有四个CPU的“LL”集群、具有四个CPU的“L”集群、具有两个CPU的“BIG”集群以及具有单个GPU的集群。另外,这些集群中的每个具有一个第二级缓存以用作本地缓存。
假设使用了上述闲置缓存共享策略且在多处理器系统上所运行的操作系统(Operating System,OS)支持CPU热插拔(hot-plug)功能。图3的上部显示在“LL”集群中的所有CPU与在“L”集群中的一些CPU可以使用CPU热插拔功能进行去能(disable)。由于在“LL”集群中的所有CPU因为被CPU热插拔功能所去能而均为闲置,因此,“LL”集群的该第二级缓存可以被“BIG”集群及具有单个GPU的该集群所共享。当在稍后时间内“L”集群中的活动CPU被CPU热插拔功能所去能时,“LL”集群与“L”集群的多个第二级缓存均可以被“BIG”集群及具有单个GPU的该集群所共享,如图3的下半部分所示。由于多个共享缓存(例如,次级缓存)对于“BIG”集群和包含单个GPU的该集群可用,因此,可以使用一缓存分配策略以将多个共享缓存中的一个分配给“BIG”集群,并将多个共享缓存中的一个分配给包含该单个GPU的该集群。
如图1所示,缓存一致性互连电路104可以包含缓存分配电路117,缓存分配电路117用于处理共享缓存的分配。因此,图3所示的缓存一致性互连电路MCSI可以被配置为包含本发明所提供的缓存分配电路117,以将多个共享缓存(例如,“LL”集群和“L”集群的多个第二级缓存)中的一个分配给“BIG”集群,并将多个共享缓存(例如,“LL”集群和“L”集群的多个第二级缓存)中的一个分配给包含该单个GPU的该集群。
在第一缓存分配设计中,缓存分配电路117可以配置为使用一循环方式(round-robin manner)将缓存借出者(cache lenders)的多个本地缓存(例如,“LL”集群和“L”集群的多个第二级缓存)以一循环次序(circular order)分配给缓存借用者(cacheborrowers)(例如,“BIG”集群及包含该单个GPU的集群)。
在第二缓存分配设计中,缓存分配电路117可以配置为使用一随机方式(randommanner)将缓存借出者(cache lenders)的多个本地缓存(例如,“LL”集群和“L”集群的多个第二级缓存)分配给缓存借用者(cache borrowers)(例如,“BIG”集群及包含该单个GPU的集群)。
在第三缓存分配设计中,缓存分配电路117可以配置为使用基于计数器的方式(counter-based manner)将缓存借出者(cache lenders)的多个本地缓存(例如,“LL”集群和“L”集群的多个第二级缓存)分配给缓存借用者(cache borrowers)(例如,“BIG”集群及包含该单个GPU的集群)。图4为根据本发明一实施例的缓存分配电路的示意图。图1所示的缓存分配电路117可以实施为使用图4所示的缓存分配电路400。缓存分配电路400包含多个计数器402_1-402_M及判定电路(decision circuit)404,其中M为正整数。举例而言,计数器402_1-402_M的数量可以等于处理器子系统102_1-102_N的数量(即,M=N),以便缓存分配电路117可以包含对应于处理器子系统102_1-102_N中每个的计数器。当处理器子系统的本地缓存被其它(一个或多个)处理器子系统所共享时,缓存分配电路117中的有关计数器被使能,以储存用以指示该共享本地缓存中可用的空缓存行的数量的计数值。举例而言,当缓存行被分配给该共享本地缓存时,该有关计数值减一;以及当缓存行被从该共享本地缓存中驱逐时,该有关计数值加一。当处理器子系统102_1的本地缓存被共享时,计数器402_1可以动态更新计数值CNT1,并将更新后的计数值CNT1提供给判定电路404;以及当处理器子系统102_M的本地缓存被共享时,计数器402_M动态更新计数值CNTM,并将更新后的计数值CNTM提供给判定电路404。判定电路404将与各个共享本地缓存有关的计数值进行比较,以产生用于共享缓存分配的控制信号SEL。举例而言,当进行该分配时,判定电路404选择具有最大计数值的共享本地缓存,并将已选择的共享本地缓存分配给缓存借用者。因此,一个处理器子系统(缓存借用者)的本地缓存中的被驱逐缓存行的缓存行数据通过缓存一致性互连电路(例如,如图1所示的缓存一致性互连电路104)被传送至已选择的共享本地缓存(具有最大计数值的该共享本地缓存)。
总之,使用循环方式、随机方式及基于计数器的方式中的至少一个的任意缓存分配设计均落入本发明的范围。
关于图3所示的实施例,若与“LL”集群的第二级缓存有关的一计数值大于与“L”集群的第二级缓存有关的计数值,则将“BIG”集群的第二级缓存中的被驱逐缓存行的缓存行数据(或包含单个GPU的该集群的第二级缓存中的被驱逐缓存行的缓存行数据)通过缓存一致性互连电路MCSI被传送至“LL”集群的第二级缓存;以及若与“L”集群的第二级缓存有关的计数值大于与“LL”集群的第二级缓存有关的计数值,则将“BIG”集群的第二级缓存中的被驱逐缓存行的缓存行数据(或包含单个GPU的该集群的第二级缓存中的被驱逐缓存行的缓存行数据)通过缓存一致性互连电路MCSI被传送至“L”集群的第二级缓存。
图1所示的多处理器系统100可以使用时钟门控(clock gating)及/或动态电压频率调节(Dynamic Voltage Frequency Scaling,DVFS)来降低每个共享本地缓存的功耗。如图1所示,处理器子系统102_1-102_N中的每个根据时钟信号与供应电压来运作。举例而言,处理器子系统102_1根据时钟信号CK1和供应电压V1来运作;处理器子系统102_2根据时钟信号CK2和供应电压V2来运作;以及处理器子系统102_N根据时钟信号CKN和供应电压VN来运作。根据实际设计考虑,时钟信号CK1-CKN可以具有相同或不同的频率值。另外,根据实际设计考虑,供应电压V1-VN可以具有相同或不同的电压值。
时钟门控电路108接收时钟信号CK1-CKN,并选择性门控供应至一处理器子系统的时钟信号,该处理器子系统包含被其它(一个或多个)处理器子系统所共享的本地缓存。图5为根据本发明一实施例的多处理器系统所使用的时钟门控设计的示意图。图5所示的多处理器系统500可以基于图1所示的多处理器系统架构进行设计,其中该缓存一致性互连电路MCSI-B支持本发明所提出的缓存共享机制。简洁起见,图5中仅显示一个处理子系统CPUSYS。在本实施例中,根据本发明所提供的缓存共享机制,处理器子系统CPUSYS的本地缓存(例如,第二级缓存)被另一处理器子系统(图中未示)所借用,以作为次级缓存(例如,第三级缓存)而运作。
缓存一致性互连电路MCSI-B可以通过CohIF和WIF与处理器子系统CPUSYS进行通信。CohIF和WIF中可以包含几条通道(channels)。举例而言,写入通道用于执行快取数据写入操作,以及窥探通道用于执行一窥探操作。如图5所示,写入通道可以包含写入命令通道Wcmd(用于发送写入请求)、窥探响应通道SNPresp(用于应答该窥探请求,指示是否将进行数据传送)、以及窥探数据通道SNPdata(用于向缓存一致性互连电路发送数据)。在本实施例中,在缓存一致性互连电路MCSI-B与处理器子系统CPUSYS之间配置异步桥接电路(asynchronous bridge circuit)ADB,用于使能两个异步时钟域(clock domains)之间的数据传送。
在本实施例中,时钟门控电路CG是根据缓存一致性互连电路MSCI-B所产生的两个控制信号CACTIVE_SNP_S0_MCSI和CACTIVE_W_S0_MCSI进行控制的。在缓存一致性互连电路MCSI-B向窥探命令信道SNPcmd发出窥探请求的时间点至缓存一致性互连电路MCSI-B接收到来自窥探响应通道SNPresp的响应的时间点期间,缓存一致性互连电路MCSI-B将控制信号CACTIVE_SNP_S0_MCSI设置为高逻辑电平。在待写入的数据从缓存一致性互连电路MCSI-B发送至写入数据通道Wdata(或写入请求从缓存一致性互连电路MCSI-B发送至写入命令通道Wcmp)的时间点至缓存一致性互连电路MCSI-B接收到来自写入响应通道Wresp的写入完成信号的时间点期间,缓存一致性互连电路MCSI-B将控制信号CACTIVE_W_S0_MCSI设置为高逻辑电平。控制信号CACTIVE_SNP_S0_MCSI和CACTIVE_W_S0_MCSI通过或(OR)门进行处理以产生同步器(synchronizer)(CACTIVE SYNC)的信号控制信号。同步器CACTIVE SYNC根据自由运行(free running)时钟信号Free_CPU_CK来运作。时钟门控电路CG的时钟输入端CLK接收该自由运行时钟信号Free_CPU_CK。因此,同步器CACTIVE SYNC输出控制信号CACTIVE_S0_CPU至时钟门控电路CG的使能端EN,其中,控制信号CACTIVE_S0_CPU与自由运行时钟信号Free_CPU_CK同步。当控制信号CACTIVE_SNP_S0_MCSI与CACTIVE_W_S0_MCSI中的一个具有逻辑高电平时,使能时钟输出端ENCK的时钟输出。换言之,当控制信号CACTIVE_SNP_S0_MCSI与CACTIVE_W_S0_MCSI中的一个具有逻辑高电平时,该时钟门控电路CG的该时钟门控功能被关闭,从而允许非门控的自由运行时钟信号Free_CPU_CK作为非门控时钟信号输出并供应至处理器子系统CPUSYS。然而,当控制信号CACTIVE_SNP_S0_MCSI与CACTIVE_W_S0_MCSI均为逻辑低电平时,去能/门控该时钟输出端ENCK的时钟输出。换言之,当控制信号CACTIVE_SNP_S0_MCSI与CACTIVE_W_S0_MCSI均为逻辑低电平时,使能时钟门控电路CG的该时钟门控功能,从而对供应至处理器子系统CPUSYS的自由运行时钟信号Free_CPU_CK进行门控。因此,处理器子系统CPUSYS接收门控后的时钟信号Gated_CPU_CK(没有时钟周期)。如图5所示,在使能该时钟门控功能后,多处理器系统500可以具有三个不同时钟域502,504和506。时钟域504使用自由运行时钟信号Free_CPU_CK。时钟域506使用门控后的时钟信号Gated_CPU_CK。时钟域502使用另一门控后的时钟信号。在本实施例中,异步桥接电路ADB可以使用门控后的时钟信号以进一步降低功耗。
简言之,当需要对由多处理器系统500的其它(一个或多个)处理器子系统所共享的处理器子系统CPUSYS的本地缓存执行缓存行的窥探操作与被驱逐缓存行的写入操作中的一个时,处理器子系统CPUSYS中的该共享本地缓存因非门控时钟信号(例如,自由运行时钟信号Free_CPU_CK)而处于活动状态;以及当不需要对由多处理器系统500的其它(一个或多个)处理器子系统所共享的处理子系统CPUSYS的本地缓存执行缓存行的窥探操作及被驱逐缓存行的写入操作时,处理器子系统CPUSYS中的该共享本地缓存因门控后的时钟信号Gated_CPU_CK而处于非活动(inactive)状态。
为减少共享的本地缓存的功耗,可以使用DVFS机制。在本实施例中,电源管理电路109用于执行DVFS,以调整供应至包含处理器子系统的时钟信号的频率值及/或调整供应至该处理器子系统的供应电压的电压值,其中,该处理器子系统包含由其它(一个或多个)处理器子系统所共享的本地缓存。
如图1所示,时钟门控电路108和电源管理电路109均可实施于多处理器系统100之中以降低共享的本地缓存(例如,次级缓存)的功耗。然而,此处仅用于说明目的,本发明并不以此为限。在另一种情况下,时钟门控电路108与电源管理电路109中的一个或全部均可从多处理器系统100中省略。
多处理器系统100可进一步使用预取电路107,以更好使用共享的本地缓存。预取电路107用于将存储装置106中的数据预先存取至共享的本地缓存。举例而言,预取电路107可以使用软件(例如,运行在多处理器系统100上的操作系统)来触发。该软件告知预取电路107来预先存取什么存储器位置上的数据至共享的本地缓存。在另一实施例中,预取电路107可以使用硬件(例如,预取电路107内的监测电路)来触发。该硬件电路可以监测(一个或多个)活动状态下的处理器的存取行为,以预测将使用什么存储器位置上的数据,并告知预取电路107来将预测的存储器位置上的数据预先存取至共享本地缓存。
当使能缓存共享机制时,缓存一致性互连电路104从第一处理器子系统(多处理器系统100的一个处理器子系统)的第一本地缓存中的被驱逐缓存行获取缓存行数据,并将已获取的缓存行数据(例如,被驱逐缓存行数据)发送至第二处理器子系统(同一多处理器系统100的另一个处理器子系统)的第二本地缓存。缓存一致性互连电路104可以在多处理器系统100的系统运作期间动态使能及动态去能两个处理器子系统(例如,第一处理器子系统与第二处理器子系统)之间的缓存共享。
当使用第一缓存共享启用(on)/关闭(off)策略的情形下,嵌入于缓存一致性互连电路104中的性能监测电路119用于收集/提供历史性能数据(historical performancedata),以判断使用缓存共享的益处。举例而言,性能检测电路119可以监测第一处理器子系统(缓存借用者)的该第一本地缓存的缓存失效率以及第二处理器子系统(缓存借出者)的该第二本地缓存的缓存命中率。若发现动态监测的该第一本地缓存的缓存失效率高于第一阈值,则意味着该第一本地缓存的缓存失效率太高,缓存一致性互连电路104使能第一处理器子系统与第二处理器子系统之间的缓存共享(即,第一本地缓存的被驱逐缓存行数据向第二本地缓存的数据传送)。若发现动态监测的该第二本地缓存的缓存命中率低于第二阈值,则意味着该第二本地缓存的缓存命中率太低,缓存一致性互连电路104去能第一处理器子系统与第二处理器子系统之间的缓存共享(即,第一本地缓存的被驱逐缓存行数据向第二本地缓存的数据传送)。
在使用第二缓存共享启用/关闭策略的另一情形下,运行在多处理器系统100上的操作系统或应用可以决定(例如,基于脱机设定表示)当前的工作量(workload)可以借助于缓存共享而获益,并指示缓存一致性互连电路104来使能第一处理器子系统与第二处理器子系统之间的缓存共享(即,第一本地缓存的被驱逐缓存行数据向第二本地缓存的数据传送)。
在使用第三缓存共享启用/关闭策略的又一情形下,缓存一致性互连电路104配置用于在不实际使能该缓存共享机制的情况下模拟(simulate)缓存共享的优点(例如,潜在的命中率)。举例而言,运行时间的模拟可以通过扩展探听过滤器116的功能来实施。换言之,探听过滤器116在假设共享缓存已被使能的条件下运行。
本发明所提供的多处理器系统及缓存共享方法,其优点之一在于能够改善多个缓存的使用效率,并提升多处理器系统的整体性能。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视后附的权利要求所界定者为准。
Claims (24)
1.一种多处理器系统,支持缓存共享,所述多处理器系统包括:
多个处理器子系统,包含:
第一处理器子系统,包含:
至少一第一处理器;以及
第一缓存,耦接于所述至少一第一处理器;以及
第二处理器子系统,包含:
至少一第二处理器;以及
第二缓存,耦接于所述至少一第二处理器;以及
缓存一致性互连电路,耦接于所述多个处理器子系统,所述缓存一致性互连电路用于从所述第一缓存中的被驱逐缓存行获取缓存行数据,并将已获取的所述缓存行数据传送至所述第二缓存进行存储。
2.根据权利要求1所述之多处理器系统,其特征在于,所述缓存一致性互连电路对所述第二缓存执行写入操作,以主动将已获取的所述缓存行数据推入所述第二缓存;或者所述缓存一致性互连电路请求所述第二缓存从所述缓存一致性互连电路中读取已获取的所述缓存行数据,并对已获取的所述所述缓存行数据进行储存。
3.根据权利要求1所述之多处理器系统,其特征在于,当包含于所述第二处理器子系统中的每个处理器均处于闲置状态的条件下时,所述缓存一致性互连电路将已获取的所述缓存行数据传送至所述第二缓存;或者当包含于所述第二处理器子系统中的至少一处理器仍处于活动状态的条件下时,所述缓存一致性互连电路将已获取的所述缓存行数据传送至所述第二缓存。
4.根据权利要求1所述之多处理器系统,其特征在于,所述第一缓存为所述至少一第一处理器的第T级缓存,从所述第二处理器子系统中借用的所述第二缓存通过所述缓存一致性互连电路用作所述至少一第一处理器的第S级缓存,其中S和T均为正整数,且S≥T。
5.根据权利要求4所述之多处理器系统,其特征在于进一步包括:
预取电路,用于将存储装置中的数据预先存取至所述第二缓存,其中所述第二缓存用作所述至少一第一处理器的所述第S级缓存。
6.根据权利要求1所述之多处理器系统,其特征在于,所述缓存一致性互连电路包含:
探听过滤器,用于为所述第二缓存的多个快取数据请求提供至少缓存命中信息和缓存失效信息,其中,当缓存行数据被发送至所述第二缓存时,所述探听过滤器进行更新以指示所述缓存行数据存放于所述第二缓存中。
7.根据权利要求6所述之多处理器系统,其特征在于,所述缓存一致性互连电路进一步用于根据所述探听过滤器的信息来决定是否需要将所述被驱逐缓存行的所述缓存行数据传送至所述第二缓存进行存储。
8.根据权利要求1所述之多处理器系统,其特征在于,所述第二处理器子系统根据时钟信号和供应电压进行运作,以及所述多处理器系统进一步包括以下至少一个:
时钟门控电路,用于接收所述时钟信号,并进一步用于在至少所述缓存一致性互连电路的控制下选择性门控所述时钟信号;
电源管理电路,用于执行动态电压频率调节,以调整所述时钟信号的频率值与所述供应电压的电压值中的至少一个。
9.根据权利要求1所述之多处理器系统,其特征在于,所述多个处理器子系统进一步包含第三处理器子系统,所述第三处理器子系统包含至少一第三处理器及耦接于所述至少一第三处理器的第三缓存;以及其中,所述缓存一致性互连电路包含:
缓存分配电路,用于决定将所述第二缓存与所述第三缓存中的哪个分配给所述第一处理器子系统中的所述至少一第一处理器,其中,当所述缓存分配电路将所述第二缓存分配给所述第一处理器子系统的所述至少一第一处理器时,将从所述第一缓存中的所述被驱逐缓存行所获取的所述缓存行数据传送至所述第二缓存。
10.根据权利要求9所述之多处理器系统,其特征在于,所述缓存分配电路用于使用循环方式与随机方式中的至少一种来决定将所述第二缓存与所述第三缓存中的哪个分配给所述第一处理器子系统的所述至少一第一处理器。
11.根据权利要求9所述之多处理器系统,其特征在于,所述缓存分配电路包含:
第一计数器,用于储存第一计数值,所述第一计数值用于指示所述第二缓存中可用的空缓存行的数量;
第二计数器,用于储存第二计数值,所述第二计数值用于指示所述第三缓存中可用的空缓存行的数量;
判定电路,用于比较包括所述第一计数值与所述第二计数值的多个计数值,以产生比较结果,并根据所述比较结果决定将所述第二缓存与所述第三缓存中的哪个分配给所述第一处理器子系统的所述至少一第一处理器。
12.根据权利要求1所述之多处理器系统,其特征在于,所述缓存一致性互连电路包含:
性能监测电路,用于收集所述第一缓存与所述第二缓存的历史性能数据,其中,所述缓存一致性互连电路进一步用于在多处理器系统的系统运作期间,根据所述历史性能数据来动态使能和动态去能将所述第一缓存的被驱逐缓存行数据至所述第二缓存的数据传送。
13.一种缓存共享方法,适用于多处理器系统,所述缓存共享方法包含:
向所述多处理器系统提供多个处理器子系统,所述多个处理器子系统包括第一处理器子系统和第二处理器子系统,其中所述第一处理器子系统包含至少一第一处理器和耦接于所述至少一第一处理器的第一缓存,以及所述第二处理器子系统包含至少一第二处理器和耦接于所述至少一第二处理器的第二缓存;
从所述第一缓存中的被驱逐缓存行中获取缓存行数据;以及
将已获取的所述缓存行数据传送至所述第二缓存进行存储。
14.根据权利要求13所述之缓存共享方法,其特征在于,将已获取的所述缓存行数据传送至所述第二缓存进行存储的步骤包含:
对所述第二缓存执行写入操作,以主动将已获取的所述缓存行数据推入所述第二缓存;或者
请求所述第二缓存以读取已获取的所述缓存行数据,并对已获取的所述缓存行数据进行存储。
15.根据权利要求13所述之缓存共享方法,其特征在于,当包含于所述第二处理器子系统中的每个处理器均处于闲置状态的条件下时,将已获取的所述缓存行数据传送至所述第二缓存;或者当包含于所述第二处理器子系统中的至少一处理器处于活动状态的条件下时,将已获取的缓存行数据传送至所述第二缓存。
16.根据权利要求13所述之缓存共享方法,其特征在于,所述第一缓存为所述至少一第一处理器的第T级缓存,从所述第二处理器子系统中借用的所述第二缓存用作所述至少一第一处理器的第S级缓存,其中S和T均为正整数,且S≥T。
17.根据权利要求16所述之的缓存共享方法,其进一步包括:
将存储装置中的数据预先存取至所述第二缓存,其中所述第二缓存用作所述至少一第一处理器的所述第S级缓存。
18.根据权利要求13所述之缓存共享方法,其进一步包括:
当缓存行数据被发送至所述第二缓存时,更新探听过滤器以指示所述缓存行数据存放于所述第二缓存中;以及
通过所述探听过滤器为所述第二缓存的多个快取数据请求提供至少缓存命中信息与缓存失效信息。
19.根据权利要求18所述之缓存共享方法,其进一步包括:
根据所述探听过滤器的信息来决定是否需要将所述被驱逐缓存行的所述缓存行数据传送至所述第二缓存进行存储。
20.根据权利要求13所述之缓存共享方法,其特征在于,所述第二处理器子系统根据时钟信号和供应电压来运作,以及所述缓存共享方法进一步包含以下步骤中的至少一个:
接收所述时钟信号,并选择性门控所述时钟信号;以及
执行动态电压频率调节,以调整所述时钟信号的频率值与所述供应电压的电压值中的至少一个。
21.根据权利要求13所述之缓存共享方法,其特征在于,所述多个处理器子系统进一步包含第三处理器子系统,以及所述第三处理器子系统包含至少一第三处理器和耦接于所述至少一第三处理器的第三缓存,以及所述缓存共享方法进一步包括:
决定将所述第二缓存与所述第三缓存中的哪个分配给所述第一处理器子系统的所述至少一第一处理器,其中,当所述决定将所述第二缓存分配给所述第一处理器子系统的所述至少一第一处理器时,将从所述第一缓存中的所述被驱逐缓存行所获取的所述缓存行数据传送至所述第二缓存。
22.根据权利要求21所述之缓存共享方法,其特征在于,使用循环方式与随机方式中的至少一种来决定将所述第二缓存与所述第三缓存中的哪个分配给所述第一处理器子系统的所述至少一第一处理器。
23.根据权利要求21所述之缓存共享方法,其特征在于,决定将所述第二缓存与所述第三缓存中的哪个分配给所述第一处理器子系统的所述至少一第一处理器的步骤包含:
产生第一计数值,用以指示所述第二缓存中可用的空缓存行的数量;
产生第二计数值,用以指示所述第三缓存中可用的空缓存行的数量;以及
比较包括所述第一计数值与所述第二计数值的多个计数值,以产生比较结果,并根据所述比较结果决定将所述第二缓存与所述第三缓存中的哪个分配给所述第一处理器子系统的所述至少一第一处理器。
24.根据权利要求13所述之缓存共享方法,其进一步包括:
收集所述第一缓存与所述第二缓存的历史性能数据;以及
在所述多处理器系统的系统运作期间,根据所述历史性能数据来动态使能和动态去能将所述第一缓存的被驱逐缓存行数据至所述第二缓存的数据传送。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662323871P | 2016-04-18 | 2016-04-18 | |
US62/323,871 | 2016-04-18 | ||
US15/487,402 | 2017-04-13 | ||
US15/487,402 US20170300427A1 (en) | 2016-04-18 | 2017-04-13 | Multi-processor system with cache sharing and associated cache sharing method |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107423234A true CN107423234A (zh) | 2017-12-01 |
Family
ID=60040036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710249248.5A Withdrawn CN107423234A (zh) | 2016-04-18 | 2017-04-17 | 多处理器系统及缓存共享方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20170300427A1 (zh) |
CN (1) | CN107423234A (zh) |
TW (1) | TWI643125B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614782A (zh) * | 2018-04-28 | 2018-10-02 | 张家口浩扬科技有限公司 | 一种用于数据处理系统的高速缓存访问方法 |
CN111221775A (zh) * | 2018-11-23 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 处理器、缓存处理方法及电子设备 |
CN112463652A (zh) * | 2020-11-20 | 2021-03-09 | 海光信息技术股份有限公司 | 基于缓存一致性的数据处理方法装置、处理芯片及服务器 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9703706B2 (en) | 2011-02-28 | 2017-07-11 | Oracle International Corporation | Universal cache management system |
EP3441884B1 (en) * | 2016-05-03 | 2021-09-01 | Huawei Technologies Co., Ltd. | Method for managing translation lookaside buffer and multi-core processor |
US10275280B2 (en) | 2016-08-10 | 2019-04-30 | International Business Machines Corporation | Reserving a core of a processor complex for a critical task |
US10248457B2 (en) | 2016-08-10 | 2019-04-02 | International Business Machines Corporation | Providing exclusive use of cache associated with a processing entity of a processor complex to a selected task |
US10248464B2 (en) * | 2016-10-24 | 2019-04-02 | International Business Machines Corporation | Providing additional memory and cache for the execution of critical tasks by folding processing units of a processor complex |
US10223164B2 (en) | 2016-10-24 | 2019-03-05 | International Business Machines Corporation | Execution of critical tasks based on the number of available processing entities |
US10599442B2 (en) * | 2017-03-02 | 2020-03-24 | Qualcomm Incorporated | Selectable boot CPU |
US11327887B2 (en) | 2017-09-14 | 2022-05-10 | Oracle International Corporation | Server-side extension of client-side caches |
US10705590B2 (en) * | 2017-11-28 | 2020-07-07 | Google Llc | Power-conserving cache memory usage |
US10877886B2 (en) * | 2018-03-29 | 2020-12-29 | Intel Corporation | Storing cache lines in dedicated cache of an idle core |
US10831666B2 (en) * | 2018-10-05 | 2020-11-10 | Oracle International Corporation | Secondary storage server caching |
US11360891B2 (en) * | 2019-03-15 | 2022-06-14 | Advanced Micro Devices, Inc. | Adaptive cache reconfiguration via clustering |
US10970217B1 (en) * | 2019-05-24 | 2021-04-06 | Xilinx, Inc. | Domain aware data migration in coherent heterogenous systems |
US11163688B2 (en) * | 2019-09-24 | 2021-11-02 | Advanced Micro Devices, Inc. | System probe aware last level cache insertion bypassing |
US11223575B2 (en) * | 2019-12-23 | 2022-01-11 | Advanced Micro Devices, Inc. | Re-purposing byte enables as clock enables for power savings |
US12117934B2 (en) * | 2021-03-30 | 2024-10-15 | Ati Technologies Ulc | Method and system for sharing memory between processors by updating shared memory space including funtionality to place processors into idle state |
US20240086327A1 (en) * | 2022-09-12 | 2024-03-14 | Google Llc | Pseudo Lock-Step Execution Across CPU Cores |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890646A (zh) * | 2003-12-30 | 2007-01-03 | 英特尔公司 | 用于在cmp中维持高速缓存相关性的协议 |
US20080091880A1 (en) * | 2006-10-11 | 2008-04-17 | Mips Technologies, Inc. | Horizontally-shared cache victims in multiple core processors |
CN101266578A (zh) * | 2008-02-22 | 2008-09-17 | 浙江大学 | 基于增量式闭合序列挖掘的高速缓存数据预取方法 |
US20110107031A1 (en) * | 2009-11-05 | 2011-05-05 | International Business Machines Corporation | Extended Cache Capacity |
US20150169035A1 (en) * | 2013-12-12 | 2015-06-18 | International Business Machines Corporation | Energy Efficient Optimization in Multicore Processors Under Quality of Service (QoS)/Performance Constraints |
US20160062890A1 (en) * | 2014-08-26 | 2016-03-03 | Arm Limited | Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6397302B1 (en) * | 1998-06-18 | 2002-05-28 | Compaq Information Technologies Group, L.P. | Method and apparatus for developing multiprocessor cache control protocols by presenting a clean victim signal to an external system |
US7305522B2 (en) * | 2005-02-12 | 2007-12-04 | International Business Machines Corporation | Victim cache using direct intervention |
US7636819B2 (en) * | 2005-08-23 | 2009-12-22 | Advanced Micro Devices, Inc. | Method for proactive synchronization within a computer system |
US7757045B2 (en) * | 2006-03-13 | 2010-07-13 | Intel Corporation | Synchronizing recency information in an inclusive cache hierarchy |
US7447846B2 (en) * | 2006-04-12 | 2008-11-04 | Mediatek Inc. | Non-volatile memory sharing apparatus for multiple processors and method thereof |
CN2932758Y (zh) * | 2006-07-04 | 2007-08-08 | 富士康(昆山)电脑接插件有限公司 | 电连接器组件 |
US8347037B2 (en) * | 2008-10-22 | 2013-01-01 | International Business Machines Corporation | Victim cache replacement |
JP4828637B2 (ja) * | 2009-07-13 | 2011-11-30 | 株式会社Pfu | 配信システム、サーバ装置、および、配信方法 |
US8856456B2 (en) * | 2011-06-09 | 2014-10-07 | Apple Inc. | Systems, methods, and devices for cache block coherence |
WO2014011904A2 (en) * | 2012-07-11 | 2014-01-16 | Adc Telecommunications, Inc. | Telecommunications cabinet modularization |
US9692251B2 (en) * | 2014-07-03 | 2017-06-27 | Intel Corporation | Apparatus, system and method of wireless power transfer |
US9612603B2 (en) * | 2014-07-17 | 2017-04-04 | Dell Products, L.P. | Calibration of voltage regulator |
CN104360981B (zh) * | 2014-11-12 | 2017-09-29 | 浪潮(北京)电子信息产业有限公司 | 面向多核多处理器平台的Cache一致性协议的设计方法 |
-
2017
- 2017-04-13 US US15/487,402 patent/US20170300427A1/en not_active Abandoned
- 2017-04-17 CN CN201710249248.5A patent/CN107423234A/zh not_active Withdrawn
- 2017-04-18 TW TW106112851A patent/TWI643125B/zh not_active IP Right Cessation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890646A (zh) * | 2003-12-30 | 2007-01-03 | 英特尔公司 | 用于在cmp中维持高速缓存相关性的协议 |
US20080091880A1 (en) * | 2006-10-11 | 2008-04-17 | Mips Technologies, Inc. | Horizontally-shared cache victims in multiple core processors |
CN101266578A (zh) * | 2008-02-22 | 2008-09-17 | 浙江大学 | 基于增量式闭合序列挖掘的高速缓存数据预取方法 |
US20110107031A1 (en) * | 2009-11-05 | 2011-05-05 | International Business Machines Corporation | Extended Cache Capacity |
US20150169035A1 (en) * | 2013-12-12 | 2015-06-18 | International Business Machines Corporation | Energy Efficient Optimization in Multicore Processors Under Quality of Service (QoS)/Performance Constraints |
US20160062890A1 (en) * | 2014-08-26 | 2016-03-03 | Arm Limited | Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit |
Non-Patent Citations (1)
Title |
---|
李硕 等: "多核处理器下共享高速缓存划分技术的综述", 《无线互联科技》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614782A (zh) * | 2018-04-28 | 2018-10-02 | 张家口浩扬科技有限公司 | 一种用于数据处理系统的高速缓存访问方法 |
CN108614782B (zh) * | 2018-04-28 | 2020-05-01 | 深圳市华阳国际工程造价咨询有限公司 | 一种用于数据处理系统的高速缓存访问方法 |
CN111221775A (zh) * | 2018-11-23 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 处理器、缓存处理方法及电子设备 |
CN111221775B (zh) * | 2018-11-23 | 2023-06-20 | 阿里巴巴集团控股有限公司 | 处理器、缓存处理方法及电子设备 |
CN112463652A (zh) * | 2020-11-20 | 2021-03-09 | 海光信息技术股份有限公司 | 基于缓存一致性的数据处理方法装置、处理芯片及服务器 |
Also Published As
Publication number | Publication date |
---|---|
TWI643125B (zh) | 2018-12-01 |
TW201738731A (zh) | 2017-11-01 |
US20170300427A1 (en) | 2017-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107423234A (zh) | 多处理器系统及缓存共享方法 | |
US9251081B2 (en) | Management of caches | |
US8103894B2 (en) | Power conservation in vertically-striped NUCA caches | |
US7925840B2 (en) | Data processing apparatus and method for managing snoop operations | |
US7899990B2 (en) | Power conservation via DRAM access | |
US7516274B2 (en) | Power conservation via DRAM access reduction | |
US7958312B2 (en) | Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state | |
US7412570B2 (en) | Small and power-efficient cache that can provide data for background DNA devices while the processor is in a low-power state | |
US20070011421A1 (en) | Method and system for decreasing power consumption in memory arrays having usage-driven power management | |
US20140181412A1 (en) | Mechanisms to bound the presence of cache blocks with specific properties in caches | |
US8171220B2 (en) | Cache architecture with distributed state bits | |
JP2017194947A (ja) | キャッシュメモリの利用トレンドに基づく複数セットグループ内のウェイごとの動的パワー供給 | |
CN103345451A (zh) | 一种在多核处理器中缓冲数据的方法 | |
Syu et al. | High-endurance hybrid cache design in CMP architecture with cache partitioning and access-aware policy | |
US20220188208A1 (en) | Methods for configuring span of control under varying temperature | |
CN101587457B (zh) | 用于单芯片多处理器的自适应高速缓存组织 | |
US11841798B2 (en) | Selective allocation of memory storage elements for operation according to a selected one of multiple cache functions | |
Ahmed et al. | Directory-based cache coherence protocol for power-aware chip-multiprocessors | |
Gupta et al. | DR-SNUCA: An energy-scalable dynamically partitioned cache | |
Agarwalla et al. | Efficient cache resizing policy for DRAM-based LLCs in ChipMultiprocessors | |
Das et al. | Towards a better cache utilization by selective data storage for CMP last level caches | |
EP1958071B1 (en) | Power conservation via dram access | |
US11874774B2 (en) | Mechanism to efficiently rinse memory-side cache of dirty data | |
CN202815822U (zh) | 一种维护数据一致性的探寻装置 | |
Kandalkar et al. | High Performance Cache Architecture Using Victim Cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20171201 |
|
WW01 | Invention patent application withdrawn after publication |