CN107870871B - 分配缓存的方法和装置 - Google Patents
分配缓存的方法和装置 Download PDFInfo
- Publication number
- CN107870871B CN107870871B CN201610848472.1A CN201610848472A CN107870871B CN 107870871 B CN107870871 B CN 107870871B CN 201610848472 A CN201610848472 A CN 201610848472A CN 107870871 B CN107870871 B CN 107870871B
- Authority
- CN
- China
- Prior art keywords
- cluster
- clusters
- heat
- cache
- intra
- 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.)
- Active
Links
Images
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
- 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/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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- 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
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
技术领域
本发明涉及缓存领域,并且更具体地,涉及一种分配缓存的方法和装置。
背景技术
随着处理器技术的发展,多核处理器的优势越来越明显,已经逐步取代单核处理器,成为微处理器发展的新方向。在多核处理器架构中通常共享最后一级缓存(Last LevelCache,LLC)。由于LLC被多个核心共享,某些核心可能会大量占用LLC资源,而造成其他核心的缓存被污染而频繁换出,最终导致系统整体性能下降。
为了抑制多核处理器的各个核心对LLC资源争夺对系统性能的影响,缓存(Cache)划分技术应运而生。缓存划分技术旨在依据各个核心的缓存访问行为动态地改变共享LLC在处理器各个核心之间的分配,将部分共享LLC指定为某个核心私有,使得其他核心无权替换这部分缓存中的数据,以减少缓存换出,从而提高系统的性能。
现有技术多是针对对称多核处理器(Symmetric Multiprocessor,SMP),以最大化处理器吞吐量或最优化处理器公平性为目的来划分LLC。随着处理器的发展,现在处理器引入了更多的核心。例如,8核、16核、32核的处理器(也称为众核处理器)层出不穷。众核处理器多采用分簇的结构。例如,ARMv8架构规定各核心私有一级数据数据缓存(L1 DataCache,L1 D-Cache)或一级指令缓存(L1 Instruction Cache,L1 I-Cache)、共享第二级缓存(L2 Cache)。每四个核心组织为一个簇。第三级缓存(L3 Cache)为最后一级缓存,需要自行设计。而现有技术缺乏对分簇结构的多核处理器(或者,也称为众核处理器)的研究。因此,关于如何对分簇结构的处理器的共享缓存进行划分,以提高多核处理器的系统性能,是业界正在探究的问题。
发明内容
本申请提供一种分配缓存的方法和装置,能够提高多核处理器的系统性能。
第一方面,本申请提供了一种分配缓存的方法,应用于包括多个核心的处理器,该多个核心划分为至少两个簇,该至少两个簇共同使用最后一级缓存,该最后一级缓存包括第一部分和第二部分,第一部分包括与该至少两个簇一一对应的至少两块私有缓存,每块私有缓存用于所对应的簇使用,第二部分为该至少两个簇的共享缓存,共享缓存用于该至少两个簇共同使用,该方法包括:计算该至少两个簇的热度和簇内通信热度,其中,簇的热度用于表征该至少两个簇的工作负载,簇内通信热度用于表征该至少两个簇的通信负载;根据该至少两个簇的热度和簇内通信热度,确定每块私有缓存和该共享缓存的调整方向,其中,调整方向包括增大和减小;根据该至少两块私有缓存和该共享缓存的调整方向,分配该最后一级缓存。
在一种可能的实现方式中,根据该至少两个簇的热度和簇内通信热度,确定每块私有缓存和该共享缓存的调整方向,包括:根据该至少两个簇的热度、簇内通信热度和预设规则,确定每块私有缓存和该共享缓存的调整方向,其中,该预设规则是根据簇的热度和簇内通信热度设定的。
在一种可能的实现方式中,根据该至少两个簇的热度和簇内通信热度,确定该共享缓存的调整方向,包括:根据每个簇的热度在该至少两个簇的热度中所占的权重,确定该共享缓存的调整方向。
在一种可能的实现方式中,该方法还包括:根据该至少两块私有缓存和该共享缓存的调整方向,将该至少两个簇划分为第一簇集合和第二簇集合,其中,第一簇集合中包括的簇的调整方向为减小,第二簇集合中包括的簇的调整方向为增大;将第一簇集合中每个簇减少的缓存资源归入资源池;根据第二簇集合中每个簇的热度在第二簇集合所包括的所有簇的热度中所占的权重和约束条件,将归入该资源池中的缓存资源分配给第二簇集合中的簇。
在一种可能的实现方式中,计算该至少两个簇的热度和簇内通信热度,包括:计算该多个核心的热度;根据该多个核心的热度,计算该至少两个簇的热度和簇内通信热度。
在一种可能的实现方式中,该至少两个簇之间通过第一通路进行通信,每个簇内的各个核心之间通过第二通路进行通信,该簇内通信热度为该第二通路上的性能损失,性能损失使用缓存缺失率或访存延迟时间表征。
第二方面,本申请提供了一种分配缓存的装置,用于执行第一方面或第一方面任意可能的实现方式中的方法。具体地,该装置包括执行第一方面或第一方面的任意可能的实现方式中的方法的单元。
第三方面,本申请提供一种处理器,该处理器包括第二方面提供的分配共享缓存的装置。
本发明实施例提供的分配缓存的方法,通过实时地计算多核处理器的各簇的热度、簇内通信热度和簇间通信热度,对多核处理器的共享缓存进行分配,能够优化缓存资源的合理使用,提高处理器的系统性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了适用于本发明实施例提供的分配缓存的方法的计算机系统100的示意图。
图2示出了现有技术中分簇结构的多核处理器的示意性结构图。
图3示出了多核处理器共享最后一级缓存的示意图。
图4是本发明实施例提供的分配缓存的方法200的流程图。
图5是本发明实施例提供的簇内通信热度和簇间通信热度的示意图。
图6是本发明实施例提供的预设规则的举例。
图7是根据簇的热度确定共享缓存的调整方向的示意图。
图8示出了本发明又一实施例提供的分配缓存的方法的示意图。
图9示出了根据约束条件分配缓存的示意图。
图10示出了本发明实施例提供的分配缓存的方法的一个应用举例。
图11示出了本发明实施例提供的分配缓存的装置300的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了适用于本发明实施例提供的分配缓存的方法的计算机系统100的示意图。如图1所示,计算机系统100包括中央处理单元(Central Processing Unit,简称为“CPU”)110、缓存(Cache)120和内存130。
CPU 110用于从缓存120中获取频繁使用的数据进行处理,或者也可以直接从内存130中获取数据进行处理。缓存120用于存储从内存130中预取到的数据,以备CPU110获取,减少CPU110从内存130中获取数据的时延。
内存130用于存储数据。应理解,缓存120是位于CPU与内存之间的一层高速缓存结构。CPU 110用于从缓存120中获取频繁使用的数据进行处理,或者也可以直接从内存130中获取数据进行处理。当某一个硬件要读取数据时,会首先从缓存120中查找需要的数据。如果找到了会直接执行,如果找不到,则从内存中查找。由于缓存的运行速度比内存快的多,故缓存的作用就是帮助硬件更快地运行。
图2示出了现有技术中分簇结构的多核处理器的示意性结构图。如图2所示,处理器包括多个核心,每四个核心组成一个簇。每个簇具有独立的一级数据缓存(L1 DataCache,L1 D-Cache)或一级指令缓存(L1 Instruction Cache,L1 I-Cache)、共享第二级缓存(以下记作L2 Cache)。在图1所示的架构中,第三级缓存(以下记作L3 Cache)为最后一级缓存(Last Level Cache,LLC)。
应理解,缓存(Cache)是位于处理器与内存之间的一层高速缓存结构,它的读写速度要比内存快。数据被缓存到CPU缓存中,当CPU读写数据时,可避免从较慢的内存中读取数据,而直接从高速缓存中操作数据,从而提升了计算机系统的性能。
现有技术中,计算机系统结构有两种缓存设计方式,分别为共享缓存和私有缓存。私有缓存是每个处理器核拥有的自己的一块私有的缓存。这种结构不利于核之间的通信。共享缓存是多个核心共享的一块缓存。通过共享的缓存可以方便地实现核间通信,而无需将数据换出至下一级缓存(或内存),从而降低了核减通信的开销。目前,主流处理器架构均共享最后一级缓存。但是,这种共享缓存结构带来了缓存竞争的问题。当一个应用的缓存失效时,可能替换另外一个应用在缓存中的数据,反之亦然。最终导致双方的性能下降。
图3示出了多核处理器共享最后一级缓存的示意图。如图3所示,最后一级缓存在芯片上以L3 Cache分区(L3Cache Partition)的形式组织。L3 Cache分区通过片上互联网络(Interconnection)连接。一个L3 Cache分区可以被划分为一个簇的私有缓存(PrivateCache),仅供该簇内的处理器核使用。或者,一个L3 Cache分区也可以被划分为共享缓存(Share Cache),作为各簇共同使用的缓存。
以下结合图4至图10,详细说明本发明实施例提供的分配缓存的方法。
需要说明的是,在本发明实施例中,编号“第一”、“第二”仅仅为了区分不同的对象。例如,为了区分不同的簇、集合等。不应对本发明实施例的保护范围构成任何限定。
图4示出了本发明实施例提供的分配缓存的方法200的示意性流程图。如图4所示,方法200主要包括步骤210至步骤230。
需要说明的是,本发明实施例提供的分配缓存的方法应用于多核处理器。该多核处理器所包括的多个核心划分为至少两个簇,该至少两个簇共同使用最后一级缓存。其中,该最后一级缓存包括第一部分和第二部分。第一部分包括与该至少两个簇一一对应的至少两块私有缓存。每块私有缓存用于所对应的簇使用。第二部分为该至少两个簇的共享缓存,该共享缓存用于该至少两个簇共同使用。
210、计算该至少两个簇的热度和簇内通信热度。
在本发明实施例中,一个簇的热度用于表征(或者说,衡量)该簇的工作负载。簇内通信热度或簇减通信热度用于表征簇的通信负载。
下面结合图5,对本发明实施例提供的簇内通信热度和簇间通信热度的概念进行说明。
图5是本发明实施例提供的簇内通信热度和簇间通信热度的示意图。如图5所示,处理器共包括8个核心。假设每4个核心组成一个簇,这样,8个核心组成2个簇(为了便于描述,以下分别记作簇#1和簇#2)。其中,簇#1所包括的4个核心分别记作核心0-0、核心0-1、核心0-2和核心0-3。簇#2所包括的4个核心分别记作核心1-0、核心1-1、核心1-2和核心1-3。
首先说明簇的内部通路(Internal Path)和簇间的外部通路(External Path)。
簇的内部通路:一个簇内的各个核心之间通信时使用的通路为簇的内部通路。或者说,簇的内部通路连接簇内各处理器核。如图5中序号①和序号②所标注的通路为簇的内部通路。
簇间的外部通路:各簇之间通信时使用的通路为簇间的外部通路。或者说,簇的外部通路连接各簇,实现簇间的通信。如图5中序号③和序号④所标注的通路为簇间的外部通路。
以上述图2中所示的分簇结构的多核处理器的结构为例,簇的内部通路即为L2Cache和L3 Cache的簇的私有部分。簇的外部通路即为L3 Cache的簇间共享部分。
一般地,Internal Path上的性能损失和External Path上的性能损失可用于衡量核间通信的热度。因此,簇内的通信热度可以定义为Internal Path上的性能损失。簇间通信热度可以定义为External Path上的性能损失。
可选地,作为一个实施例,计算该至少两个簇的热度和簇内通信热度,包括:
计算该多个核心的热度;
根据该多个核心的热度,计算该至少两个簇的热度和簇内通信热度。
具体地,在本发明实施例中,计算簇的热度和簇内通信热度时,可以首先计算核的热度,在根据核的热度,计算簇的热度和簇内通信热度。
为了便于说明,假设多核处理器共包括N个核,每簇包括M个核心。继续以上述图2中所示的三级缓存的架构为例进行说明。
首先,作如下符号约定。参见表1。
表1
下面详细说明核心的热度、簇的热度和簇内通信热度的计算过程。
1、计算核心i的热度。
以下将核心的热度记作CoreHeati。
在本发明实施例中,将核心的访存延迟时间定为:
得到各簇中每个核心的热度。
然后,用各核中最大的访存延迟时间对每个核心的热度进行归一化处理。在本发明实施例中,将各核心归一化处理后得到的结果定义为核心的热度。
2、计算簇j的热度。
以下将簇j的热度记作ClusterHeatj。
在本发明实施例中,一个簇的热度定义为该簇内的所有核心的热度的累加。
将簇j的总计访存延迟时间进行归一化处理,并将归一化处理的结果定义为簇j的热度。
需要说明的是,计算簇j的热度时,StallTimemax可以为簇j内所包括的多个核心的访存延迟时间的最大值。或者,也可以为多核处理器所包括的所有核心的访存延迟时间中的最大值。在本发明实施例中,优选地,StallTimemax的取值为将该多核处理器所包括的多个核心的访存延迟时间中的最大值。
3、计算簇内通信热度。
在本发明实施例中,以访存延迟时间统计簇内部通路上的性能损失,即簇的L2Cache和簇的私有L3 Cache上的总计访存时间延迟。最后,将总计访存时间延迟进行归一化处理,并将归一化处理的结果定义为簇内通信热度。
通过以上计算过程,可以得到本发明实施例的簇的热度和簇内通信热度。
220、根据该至少两个簇的热度和簇内通信热度,确定每块私有缓存和该共享缓存的调整方向,其中,调整方向包括增大和减小。
根据前文所述可知,在本发明实施例中,簇的热度用于表征簇的工作负载,簇内通信热度用于表征簇的通信负载。因此,根据步骤210计算得到的多核处理器的各个簇的热度和簇内通信热度,可以确定每块私有缓存和该共享缓存的调整方向。即,可以确定每个簇的私有缓存需要增大或是减小,以及各个簇的共享缓存需要增大还是减小。这样,就可以实现根据簇的实际工作负载和通信负载对各簇的私有缓存和共享缓存进行合理分配,以提升处理器的整体性能。
可选地,作为一个实施例,根据该至少两个簇的热度和簇内通信热度,确定每块私有缓存和共享缓存的调整方向,包括:
根据该至少两个簇的热度、簇内通信热度和预设规则,确定每块私有缓存和共享缓存的调整方向,其中,该预设规则是根据簇的热度和簇内通信热度设定的。
具体地,在本发明实施例中,预设规则是基于簇的热度和簇内通信热度设定的。以下结合图6,举例说明本发明实施例中,如何根据簇的热度、簇内通信热度和预设规则确定每块私有缓存和共享缓存的调整方向。
图6是本发明实施例提供的预设规则的举例。本发明实施例中的预设规则可以为图6中所示的决策树。依次判决多核处理器的每个簇的热度是否大于第一阈值(为了便于区分,以下将第一阈值记作θ1),并判决每个簇的簇内通信热度是否大于第二阈值(为了便于区分,以下将第二阈值记作θ2),以确定对每个簇采用何种策略。
为了便于说明,以下以多核处理器的一个簇(以下记作簇#1)为例,对该决策树进行说明。
(1)判断簇#1的热度是否大于θ1。
(2)若簇#1的热度小于θ1,对簇#1执行策略1。
策略1:减小簇#1的L3 Cache的私有缓存。
应理解,此种情况表明簇#1的工作负载较小,因此可以适当减小簇#1的L3 Cache的私有缓存部分。并且,减小的缓存资源可分配给其他簇使用。
(3)若簇#1的热度大于或等于θ1,则判断簇#1的簇内通信热度是否大于θ2。
(4)若簇#1的簇内通信热度小于θ2,对簇#1执行策略2。
策略2:增大簇#1的L3 Cache的共享缓存,减小L3 Cache的私有缓存。
应理解,此种情况表明簇#1的簇内通信热度小,而簇间通信热度大。因此,可以减小私有缓存部分,增大共享缓存部分。
(5)若簇#1的簇内通信热度大于或等于θ2,对簇#1执行策略3。
策略3:减小簇#1的L3 Cache的共享缓存,增大L3 Cache的私有缓存。
与上文类似,此种情况表明,簇#1的簇内通信热度大,而簇间通信热度小。因此,可以增大私有缓存部分,减小共享缓存部分。
从上述过程可以看出,根据计算得到的各簇的热度和簇内的通信热度以及预设规则,可以合理调整各簇的私有缓存部分和共享缓存部分所占用的缓存资源的多少,可以优化缓存资源在各个簇之间的分配。同时,对于一个簇而言,在该簇的簇内通信热度大时,相应地增大该簇的私有缓存部分。而在该簇的簇内通信热度小、簇间通信热度大时,相应地减小该簇的私有缓存部分而增大该簇的共享缓存部分,可以优化该簇的对于缓存资源的使用,避免缓存资源的浪费,使缓存资源的使用更加合理化。
可选地,作为一个实施例,根据该至少两个簇的热度和簇内通信热度,确定共享缓存的调整方向,包括:
根据每个簇的热度在所述至少两个簇的热度中所占的权重,确定共享缓存的调整方向。
具体地,在确定共享缓存(即,各簇的最后一级缓存的共享部分)的调整方向时,可以根据每个簇的热度在多核处理器的所有簇的热度中所占的权重(即,一个簇的热度占所有簇的热度之和的权重)进行确定。换句话说,在本发明实施例中,若一个簇的热度在所有簇的热度之和中所占的权重越大,该簇对于共享缓存的调整方向越具有决定权。相应地,若一个簇的热度在所有簇的热度之和中所占的权重越小,则该簇对于共享缓存的调整方向的决定权越小。
图7是根据簇的热度确定共享缓存的调整方向的示意图。如图7所示,假设多核处理器的多个核新组成n个簇,依次记作簇#0至簇#n。根据前述步骤可知,每个簇对于共享缓存的调整方向的需求可能为增大或减小。在本实施例中,共享缓存增大还是减小可以如图7中所示,由各个簇投票决定,并且,投票的权重为各个簇的热度。
例如,簇#0的投票为增大共享缓存,且簇#0的热度的权重为0.6,簇#1的投票也为增大共享缓存,且簇#1的热度的权重为0.1。依次类推,簇#n的投票为减小共享缓存,且簇#n的热度的权重为0.2。再根据各个簇的投票及各簇的热度的权重,决定共享缓存应增大还是减小。以图7为例,由于簇#0的热度的权重最大(为0.5),因此,确定的结果应该为增大共享缓存。
230、根据该至少两块私有缓存和该共享缓存的调整方向,分配最后一级缓存。
应理解,在本发明实施例中,由于最后一级缓存包括第一部分和第二部分,即各簇的私有缓存部分和各簇的共享缓存部分。因此,步骤230中,根据各簇的私有缓存和共享缓存的调整方向,对最后一级缓存在各簇之间的分配进行调整,即是分配最后一级缓存。
可选地,作为一个实施例,该方法还包括:
根据该至少两块私有缓存和共享缓存的调整方向,将该至少两个簇划分为第一簇集合和第二簇集合,其中,第一簇集合中包括的簇的调整方向为减小,第二簇集合中包括的簇的调整方向为增大;
将第一簇集合中每个簇减少的缓存资源归入资源池;
根据第二簇集合中每个簇的热度在第二簇集合所包括的所有簇的热度中所占的权重和约束条件,将归入资源池中的缓存资源分配给第二簇集合中的各个簇。
图8示出了本发明又一实施例提供的分配缓存的方法的示意图。假设处理器所包括的多个核组成5个簇,依次记作簇#0至簇#4。根据前文确定的每个簇的私有缓存和共享缓存的调整方向,将簇#0至簇#4分为两个簇集合(即,第一簇集合和第二簇集合)。其中,第一簇集合中包括的簇#2、簇#4和共享缓存的调整方向为减小。第二簇集合中的包括的簇#0、簇#1和簇#3的调整方向为增大。
将第一簇集合中各个簇的私有缓存资源减小的固定粒度R归入资源池。同时,第二簇集合中的各个簇的私有缓存或共享缓存需要增加的缓存资源的容量从资源池中获取,并且,第二簇集合中每个簇增加的缓存资源依据各簇的热度的权重按比例进行分配。
另外,在本发明实施例中,在划分共享缓存时还应满足若干约束条件。
继续以图2中所示的多核处理器包括三级缓存为例,约束条件包括以下约束条件1、约束条件2和约束条件3。
需要说明的是,下文所述的约束条件1、约束条件2和约束条件3仅是以图2中所示的三级缓存架构作为示例所作的说明。在多个处理器多包括的核心的数目发生变化时,或是处理器所包括的多个核心组成的簇的数目发生变化时,可以通过简单扩展再应用。
约束条件2:一个簇的私有缓存部分增加后,优先占满本簇的L3分区(即,本簇全部的L3分区被划分为私有)。
图9示出了根据约束条件分配缓存的示意图。如图9所示,如果私有缓存还需要增大,只可利用临近的分区释放到资源池中的缓存资源。以Cache溢出(Cache Spill)的形式,将缓存块逐出到临近的分区(Spiller)。非相邻分区由于线延迟过大,不能作为私有部分。
本发明实施例提供的分配共享缓存的方法,通过实时地计算多核处理器的各簇的热度、簇内通信热度和簇间通信热度,对多核处理器的共享缓存进行分配,能够优化缓存资源的合理使用,提高处理器的整体性能。
需要说明的是,上述算法中涉及到的参数,例如,簇的热度的阈值θ1、簇内通信热度的θ2,Cache减小的粒度R,都是依赖于应用的经验参数。LLC重新分配的间隔时间步长T取决于Cache重配置的开销以及应用的Cache访问模式的变化频率(例如,长时间稳定的Cache访问模式可以拉长T)可以由软件或操作系统来设置。
本发明实施例提供的分配共享缓存的方法,可以应用于可重构协处理器的Cache设计。
图10示出了本发明实施例提供的分配缓存的方法的一个应用举例。图10所示为一个在现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)上实现加速N体模拟的树形粒子网格(Tree Particle Mesh,TreePM)算法的协处理器。众所周知,FPGA片内的存储空间十分宝贵,且无法缓存全部数据,需要访问片外的双倍速率同步动态随机存储器(Double Data Rata,DDR3)。因此,动态地调度FPGA片内存储作为缓存,可以有效地改善处理器的整体性能。
FPGA上例化了两种加速器核,即,树形算法模块Tree和粒子网格PM。分别用于加速算法中的Tree和PM两部分运算。Tree核和PM核和各自的同类模块按簇组织。由于TreePM算法中核间通信负载较重,且核间通信分为Tree核间的通信、PM核间的通信和全局通信。依据本发明实施例提供的分配共享缓存的方法,可为FPGA设计更有效的片内缓存系统。即,Tree核间有共享Cache实现Tree核心簇的内部通信,PM核间有共享Cache实现PM核心簇的内部通信,全局的共享Cache实现全局通信。依据各加速核的热度,以及加速核之间的通信热度,动态地分配有限的FPGA片内存储资源,相对静态分配方案,能够提升系统整体性能的16.3%。
以上结合图4至图10,详细说明了本发明实施例提供的分配缓存的方法。下面结合图11,说明本发明实施例提供的分配缓存的装置300。
图11示出了本发明实施例提供的分配缓存的装置300的示意性框图。装置300配置在包括多个核心的处理器上,该多个核心划分为至少两个簇,该至少两个簇共同使用该处理器的最后一级缓存,该最后一级缓存包括第一部分和第二部分,第一部分包括与该至少两个簇一一对应的至少两块私有缓存,每块私有缓存用于所对应的簇使用,第二部分为该至少两个簇的共享缓存,该共享缓存用于该至少两个簇共同使用。如图11所示,装置300包括计算单元310、确定单元320和分配单元330。
计算单元310,用于该至少两个簇的热度和簇内通信热度,该至少两个簇的热度用于表征该至少两个簇的工作负载,该至少两个簇的簇内通信热度用于表征该至少两个簇的通信负载;
确定单元320,用于根据该至少两个簇的热度和簇内通信热度,确定每块私有缓存和该共享缓存的调整方向,其中,该调整方向包括增大和减小;
分配单元330,用于根据该至少两块私有缓存和该共享缓存的调整方向,分配该最后一级缓存。
应理解,在本实施例中,装置300是以功能单元的形式来呈现。这里的“单元”可以指特定应用集成电路(application-specific integrated circuit,ASIC)、电路、执行一个或多个软件或固件程序的处理器和存储器、集成逻辑电路,和/或其他可以提供上述功能的器件。
应理解,上述装置300可以为配置在处理器上的硬件模块。可选地,处理器上还包括存储有计算机指令的存储模块。当装置300执行该存储模块中存储的计算机指令时,装置300执行本发明实施例提供的分配缓存的方法。
应理解,这里的存储模块可以为存储器。
还应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种分配缓存的方法,其特征在于,应用于包括多个核心的处理器,所述多个核心划分为至少两个簇,所述至少两个簇共同使用最后一级缓存,所述最后一级缓存包括第一部分和第二部分,所述第一部分包括与所述至少两个簇一一对应的至少两块私有缓存,每块私有缓存用于所对应的簇使用,所述第二部分为所述至少两个簇的共享缓存,所述共享缓存用于所述至少两个簇共同使用,所述方法包括:
计算所述至少两个簇的热度和簇内通信热度,其中,簇的热度用于表征所述至少两个簇的工作负载,所述簇内通信热度用于表征所述至少两个簇的通信负载;
根据所述至少两个簇的热度和簇内通信热度,确定每块私有缓存和所述共享缓存的调整方向,其中,所述调整方向包括增大和减小;
根据所述至少两块私有缓存和所述共享缓存的调整方向,分配所述最后一级缓存。
2.根据权利要求1所述的方法,其特征在于,所述根据所述至少两个簇的热度和簇内通信热度,确定每块私有缓存和所述共享缓存的调整方向,包括:
根据所述至少两个簇的热度、簇内通信热度和预设规则,确定每块私有缓存和所述共享缓存的调整方向,其中,所述预设规则是根据簇的热度和簇内通信热度设定的。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述至少两个簇的热度和簇内通信热度,确定所述共享缓存的调整方向,包括:
根据每个簇的热度在所述至少两个簇的热度中所占的权重,确定所述共享缓存的调整方向。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据所述至少两块私有缓存和所述共享缓存的调整方向,将所述至少两个簇划分为第一簇集合和第二簇集合,其中,所述第一簇集合中包括的簇的调整方向为减小,所述第二簇集合中包括的簇的调整方向为增大;
将所述第一簇集合中每个簇减少的缓存资源归入资源池;
根据所述第二簇集合中每个簇的热度在所述第二簇集合所包括的所有簇的热度中所占的权重和约束条件,将归入所述资源池中的缓存资源分配给所述第二簇集合中的簇。
5.根据权利要求1或2所述的方法,其特征在于,所述计算所述至少两个簇的热度和簇内通信热度,包括:
计算所述多个核心的热度;
根据所述多个核心的热度,计算所述至少两个簇的热度和簇内通信热度。
6.根据权利要求1或2所述的方法,其特征在于,所述至少两个簇之间通过第一通路进行通信,每个簇内的各个核心之间通过第二通路进行通信,所述簇内通信热度为所述第二通路上的性能损失,所述性能损失使用缓存缺失率或访存延迟时间表征。
7.一种分配缓存的装置,其特征在于,配置在包括多个核心的处理器上,所述多个核心划分为至少两个簇,所述至少两个簇共同使用所述处理器的最后一级缓存,所述最后一级缓存包括第一部分和第二部分,所述第一部分包括与所述至少两个簇一一对应的至少两块私有缓存,每块私有缓存用于所对应的簇使用,所述第二部分为所述至少两个簇的共享缓存,所述共享缓存用于所述至少两个簇共同使用,所述装置包括:
计算单元,用于所述至少两个簇的热度和簇内通信热度,其中,簇的热度用于表征所述至少两个簇的工作负载,簇内通信热度用于表征所述至少两个簇的通信负载;
确定单元,用于根据所述至少两个簇的热度和簇内通信热度,确定每块私有缓存和所述共享缓存的调整方向,其中,所述调整方向包括增大和减小;
分配单元,用于根据所述至少两块私有缓存和所述共享缓存的调整方向,分配所述最后一级缓存。
8.根据权利要求7所述的装置,其特征在于,所述确定单元具体用于根据所述至少两个簇的热度、簇内通信热度和预设规则,确定每块私有缓存和所述共享缓存的调整方向,其中,所述预设规则是根据簇的热度和簇内通信热度设定的。
9.根据权利要求7或8所述的装置,其特征在于,所述确定单元具体用于根据每个簇的热度在所述至少两个簇的热度中所占的权重,确定所述共享缓存的调整方向。
10.根据权利要求7或8所述的装置,其特征在于,所述装置还包括处理单元,所述处理单元用于:
根据所述至少两块私有缓存和所述共享缓存的调整方向,将所述至少两个簇划分为第一簇集合和第二簇集合,其中,所述第一簇集合中包括的簇的调整方向为减小,所述第二簇集合中包括的簇的调整方向为增大;
将所述第一簇集合中每个簇减少的缓存资源归入资源池;
根据所述第二簇集合中每个簇的热度在所述第二簇集合所包括的所有簇的热度中所占的权重和约束条件,将归入所述资源池中的缓存资源分配给所述第二簇集合中的簇。
11.根据权利要求7或8所述的装置,其特征在于,所述计算单元具体用于:
计算所述多个核心的热度;
根据所述多个核心的热度,计算所述至少两个簇的热度和簇内通信热度。
12.根据权利要求7或8所述的装置,其特征在于,所述至少两个簇之间通过第一通路进行通信,每个簇内的各个核心之间通过第二通路进行通信,所述簇内通信热度为所述第二通路上的性能损失,所述性能损失使用缓存缺失率或访存延迟时间表征。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610848472.1A CN107870871B (zh) | 2016-09-23 | 2016-09-23 | 分配缓存的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610848472.1A CN107870871B (zh) | 2016-09-23 | 2016-09-23 | 分配缓存的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107870871A CN107870871A (zh) | 2018-04-03 |
CN107870871B true CN107870871B (zh) | 2021-08-20 |
Family
ID=61751610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610848472.1A Active CN107870871B (zh) | 2016-09-23 | 2016-09-23 | 分配缓存的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107870871B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111563060A (zh) * | 2020-07-13 | 2020-08-21 | 南京艾科朗克信息科技有限公司 | 一种基于fpga报单管理的共享缓存方法 |
CN111897847A (zh) * | 2020-08-07 | 2020-11-06 | 上海莉莉丝科技股份有限公司 | 基于多级缓存的数据读取和写入方法、系统、设备和介质 |
EP4352620A1 (en) * | 2021-06-09 | 2024-04-17 | Ampere Computing LLC | Apparatuses, systems, and methods for configuring combined private and shared cache levels in a processor-based system |
US11880306B2 (en) | 2021-06-09 | 2024-01-23 | Ampere Computing Llc | Apparatus, system, and method for configuring a configurable combined private and shared cache |
US11947454B2 (en) | 2021-06-09 | 2024-04-02 | Ampere Computing Llc | Apparatuses, systems, and methods for controlling cache allocations in a configurable combined private and shared cache in a processor-based system |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937401A (zh) * | 2009-06-30 | 2011-01-05 | 英特尔公司 | 基于监听响应信息的目录高速缓存分配 |
CN102075578A (zh) * | 2011-01-19 | 2011-05-25 | 南京大学 | 基于分布式存储单元的层次化片上网络架构 |
CN102609362A (zh) * | 2012-01-30 | 2012-07-25 | 复旦大学 | 一种共享高速缓存动态划分方法与电路 |
CN102855214A (zh) * | 2011-06-27 | 2013-01-02 | 上海华为技术有限公司 | 实现数据一致性的方法和一种多核系统 |
CN103294608A (zh) * | 2012-02-29 | 2013-09-11 | 富士通株式会社 | 处理器、信息处理设备和算术方法 |
WO2015097493A1 (en) * | 2013-12-23 | 2015-07-02 | Intel Corporation | Instruction and logic for memory access in a clustered wide-execution machine |
CN104866457A (zh) * | 2015-06-04 | 2015-08-26 | 电子科技大学 | 一种基于共享缓存的片上多核处理器静态架构 |
CN105183662A (zh) * | 2015-07-30 | 2015-12-23 | 复旦大学 | 一种无cache一致性协议的分布式共享片上存储架构 |
WO2016023448A1 (en) * | 2014-08-11 | 2016-02-18 | Mediatek Inc. | Dynamic memory control method and system thereof |
CN105426319A (zh) * | 2014-08-19 | 2016-03-23 | 超威半导体产品(中国)有限公司 | 动态缓存分区设备和方法 |
CN105610729A (zh) * | 2014-11-19 | 2016-05-25 | 中兴通讯股份有限公司 | 一种缓存分配方法、装置及网络处理器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10339023B2 (en) * | 2014-09-25 | 2019-07-02 | Intel Corporation | Cache-aware adaptive thread scheduling and migration |
US9582329B2 (en) * | 2015-02-17 | 2017-02-28 | Qualcomm Incorporated | Process scheduling to improve victim cache mode |
-
2016
- 2016-09-23 CN CN201610848472.1A patent/CN107870871B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937401A (zh) * | 2009-06-30 | 2011-01-05 | 英特尔公司 | 基于监听响应信息的目录高速缓存分配 |
CN102075578A (zh) * | 2011-01-19 | 2011-05-25 | 南京大学 | 基于分布式存储单元的层次化片上网络架构 |
CN102855214A (zh) * | 2011-06-27 | 2013-01-02 | 上海华为技术有限公司 | 实现数据一致性的方法和一种多核系统 |
CN102609362A (zh) * | 2012-01-30 | 2012-07-25 | 复旦大学 | 一种共享高速缓存动态划分方法与电路 |
CN103294608A (zh) * | 2012-02-29 | 2013-09-11 | 富士通株式会社 | 处理器、信息处理设备和算术方法 |
WO2015097493A1 (en) * | 2013-12-23 | 2015-07-02 | Intel Corporation | Instruction and logic for memory access in a clustered wide-execution machine |
WO2016023448A1 (en) * | 2014-08-11 | 2016-02-18 | Mediatek Inc. | Dynamic memory control method and system thereof |
CN105426319A (zh) * | 2014-08-19 | 2016-03-23 | 超威半导体产品(中国)有限公司 | 动态缓存分区设备和方法 |
CN105610729A (zh) * | 2014-11-19 | 2016-05-25 | 中兴通讯股份有限公司 | 一种缓存分配方法、装置及网络处理器 |
CN104866457A (zh) * | 2015-06-04 | 2015-08-26 | 电子科技大学 | 一种基于共享缓存的片上多核处理器静态架构 |
CN105183662A (zh) * | 2015-07-30 | 2015-12-23 | 复旦大学 | 一种无cache一致性协议的分布式共享片上存储架构 |
Non-Patent Citations (2)
Title |
---|
Flexible Capacity Partitioning in Many-Core Tiled CMPs;Ahmad Samih 等;《2013 13th IEEE/ACM International Symposium on Cluster, Cloud, and Grid Computing》;20130625;第1-8页 * |
层次化架构嵌入式多核处理器原型设计及其编程研究;侯宁 等;《合肥工业大学学报(自然科学版)》;20141130;第37卷(第11期);第1322-1327页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107870871A (zh) | 2018-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107870871B (zh) | 分配缓存的方法和装置 | |
Milic et al. | Beyond the socket: NUMA-aware GPUs | |
Das et al. | Application-to-core mapping policies to reduce memory system interference in multi-core systems | |
US8132172B2 (en) | Thread scheduling on multiprocessor systems | |
Qureshi | Adaptive spill-receive for robust high-performance caching in CMPs | |
Alicherry et al. | Optimizing data access latencies in cloud systems by intelligent virtual machine placement | |
Herrero et al. | Elastic cooperative caching: an autonomous dynamically adaptive memory hierarchy for chip multiprocessors | |
Kim et al. | Multi-GPU system design with memory networks | |
CN107430529B (zh) | 大型内存数据库的负载均衡的装置 | |
CN110297695A (zh) | 用于共享资源访问的可变速率限制的系统和方法 | |
Das et al. | Application-to-core mapping policies to reduce memory interference in multi-core systems | |
Mi et al. | Software-hardware cooperative DRAM bank partitioning for chip multiprocessors | |
CN113312171A (zh) | 加速器、加速器的操作方法和加速器系统 | |
Fang et al. | A memory scheduling strategy for eliminating memory access interference in heterogeneous system | |
Nasim et al. | Optimizing virtual machine consolidation in virtualized datacenters using resource sensitivity | |
Chen et al. | PIMCloud: QoS-Aware Resource Management of Latency-Critical Applications in Clouds with Processing-in-Memory | |
Li | Orchestrating thread scheduling and cache management to improve memory system throughput in throughput processors | |
Park et al. | Towards optimal scheduling policy for heterogeneous memory architecture in many-core system | |
Elhelw et al. | Time-based least memory intensive scheduling | |
Kim et al. | BLPP: Improving the performance of GPGPUs with heterogeneous memory through bandwidth-and latency-aware page placement | |
Oh et al. | An analytical performance model for co-management of last-level cache and bandwidth sharing | |
Das et al. | Application-to-core mapping policies to reduce interference in on-chip networks | |
Jiang et al. | Hopscotch: A Hardware-Software Co-Design for Efficient Cache Resizing on Multi-Core SoCs | |
Jin et al. | Pais: Parallelism-aware interconnect scheduling in multicores | |
Busse et al. | Analyzing resource interdependencies in multi-core architectures to improve scheduling decisions |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |