CN103150266B - 一种改进的多核共享cache替换方法 - Google Patents
一种改进的多核共享cache替换方法 Download PDFInfo
- Publication number
- CN103150266B CN103150266B CN201310055097.1A CN201310055097A CN103150266B CN 103150266 B CN103150266 B CN 103150266B CN 201310055097 A CN201310055097 A CN 201310055097A CN 103150266 B CN103150266 B CN 103150266B
- Authority
- CN
- China
- Prior art keywords
- core
- cache
- storage unit
- row
- steal
- 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.)
- Expired - Fee Related
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种改进的多核共享cache替换方法,主要分成三个阶段:初始化,替换策略,回溯。初始化是指平均划分cache列,保证每个核拥有属于自己的cache列;替换策略又细分为选择逐出单元,插入访问单元,提升优先级。其中选择逐出单元表示根据一定的原则,尽可能选择效益最小的单元替换出去;插入访问单元是将从内存取出的cache单元放置到cache组的合适位置;优先级提升,则是当cache单元命中时,提高cache单元的优先级,以利于下次利用局部性原理访问。本发明在cache划分的基础上,尽可能将部分当前使用的工作集保留在cache内,从而提高cache的命中率。
Description
技术领域
本发明属于计算机体系结构领域,具体涉及一种改进的多核共享cache替换方法。
背景技术
随着片上多核逐渐成为高性能微处理器的主流设计,多核处理器所面临的一系列问题成为了人们研究的重点。而替换方法的优劣是处理器性能的一个重要指标,传统的LRU替换方法在单核处理器中得到广泛应用,而多核环境大都采用多核共享最后一级cache(LLC),应用的工作集越来越大,L2cache容量不断增加,cache相联度不断提高,存储墙以及线程干扰等问题都使得多核处理器性能受到严重影响,多核环境的这一系列变化都使得LRU替换方法和理论最优替换方法之间的差距越来越大。因此,如何有效的管理片上L2cache,尽可能的降低缺失率、提高性能已成为多核领域研究的重点。
然而,目前多核领域cache的替换方法都还是基于传统的单核情况下的LRU替换方法,部分研究考虑到cache的访问频率,以及在cache的插入推举策略上进行改进,但也并没有考虑到多核情况下的大工作集、线程干扰和当前多核共享L2cache所采用的chche列划分的现状。
发明内容
本发明在cache划分的基础上,考虑到cache列的访问频率以及LRU信息,利用cache列的插入推举策略,尽可能将部分当前使用的工作集保留在cache内,从而提高cache的命中率。同时方法还考虑到各个核的利用率不同的问题,提出了cache列窃取方案,使得多核之间更加有效的利用cache资源。本发明采用缺失率和系统IPC作为评价系统性能的指标,IPC是每个时钟执行的指令数(Instruction Per Cycle)。
本发明提供技术方案如下:
本发明,所述的cache替换策略主要分成三个阶段:初始化,替换策略,回溯。初始化是指平均划分cache列,保证每个核拥有属于自己的cache列;替换方法又细分为选择逐出单元,插入访问单元,提升优先级。其中选择逐出单元表示根据一定的原则,尽可能选择效益最小的单元替换出去;插入访问单元是将从内存取出的cache单元放置到cache组的合适位置;优先级提升,则是当cache单元命中时,提高cache单元的优先级,以利于下次利用局部性原理访问。Cache替换方法中,每个cache单元通过计数器记录该单元的访问频率信息,同时有两个基本的参数:LRU候选范围M和时间片t。M一般取值在3-5,t取值在100000~5000000个时钟周期之间。方法的主要过程如下:
假设当前访问核corei,划分给该核的列πi=(Li1,Li2…,Lik),要访问的cache组为s,M个LRU候选列分别为(C1,C2…,Cm),候选列由组s中访问频率最低的M个列组成,MRU列为最近访问的列。每一组的候选列跟核划分信息无关,得出候选列后,根据当前访问核的列划分信息表,cache列的访问频率以及核窃取信息表,选择相应的替换策略。
一种改进的多核共享cache替换方法,其特征在于包含以下步骤:
1、初始化:
1.1)初始化cache列划分信息表和路窃取信息表,以核为单位将cache列平均划分,保证每个核拥有自己的cache列,列划分信息表为矩阵IA×B,A表示核的个数,B表示能访问的所有cache列的个数,其中Iij为矩阵IA×B中第i行第j列的元素,Iij表示cache的第j列是否属于第i个核corei;
路窃取信息表为矩阵LA×A,A表示核的个数,Lij为矩阵LA×A中第i行第j列的元素,Lij包含两类信息,其一为核corei是否窃取了核corej对应的cache的存储单元,其二为被窃取的核corej的存储单元对应的组号集合;
1.2)当处理器核corei发出一个L2 Cache的访问请求时,根据所要访问的地址确定地址所映射的Cache组q,根据cache组q和corei的列划分信息表确定属于corei的cache存储单元集合,并在存储单元集合中判断是否命中,
1.2.1)如果命中,存取cache存储单元,命中单元即为请求所要访问的单 元,继续执行步骤3;
1.2.2)如果未命中,判断核corei是否窃取了其他核的cache列;
1.2.2.1)如果核corei窃取了核corem的列,根据路窃取信息表确定被窃取的核corem的存储单元对应的组号集合Q;并判断q是否属于Q;
1.2.2.1.1)如果q属于Q,则搜索组q中核corem对应的存储单元;判断是否命中;
1.2.2.1.1.1)如果命中,存取cache存储单元,继续执行步骤4;
1.2.2.1.1.2)未命中,顺序执行步骤2;
1.2.2.1.2)如果q不属于Q,顺序执行步骤2;
1.2.2.2)如果核corei并未窃取其他核的列,顺序执行步骤2;
2、cache替换方法:
2.1)根据Cache组q对应的候选路信息Mq,核corei的列划分信息,以及核corei对应的cache路窃取信息选择逐出单元,所述的候选路Mq表示Cache组q中按访问频率升序排列中的前M个存储单元对应的Cache列号,选择逐出单元的步骤如下:
2.1.1)如果候选路信息Mq对应的存储单元存在属于corei的存储单元Ci,则Ci为逐出单元,继续执行步骤(2.2);否则顺序执行步骤2.1.2);
2.1.2)根据路窃取信息表,判断corek是否窃取了核corei的存储单元;
2.1.2.1)如果存在corek窃取了核corei的存储单元,判断窃取的是否是组q中的cache存储单元;
2.1.2.1.1)如果是,将组q中所对应的存储单元选为逐出单元,更新路窃取信息表,继续执行步骤(2.2),
2.1.2.1.2)如果不是,顺序执行步骤2.1.3)
2.1.2.2)如果corek没有窃取其他核的存储单元,顺序执行步骤2.1.3)
2.1.3)选择候选路信息Mq中访问频率最低的存储单元作为逐出单元,顺序执行步骤(2.2);
(2.2)将要存取的数据块插入到cache中优先级为M的存储单元f中,更 新存储单元f的访问频率信息,继续执行步骤4,其中用LRU信息排列优先级;
3、提升优先级:当cache存储单元命中时,更新命中的cache存储单元的优先级,更新步骤如下:
如果命中的存储单元属于候选路信息Mq,则将命中的存储单元的优先级提升为最近访问的路MRU,继续下一步;
如果命中的存储单元不属于候选路信息Mq,则将命中的cache存储单元的优先级提升一级,继续下一步;
4、回溯阶段,程序运行时间t后,如果程序结束继续执行步骤5,否则,清除所有cache存储单元访问频率信息和路窃取信息表,并返回步骤1.2);
5、输出运行结果,分析缺失率,功耗,以及整体IPC。
本发明将新插入的cache单元插入到M位置,有效地防止了无用单元长时间占据cache空间;候选列命中时将其直接推举到MRU位,满足了cache局部性原理,防止出现重用块的抖动现象。当不是后选列命中时,使用逐级推举策略,也是为了中和无用单元长时间占据cache空间,尽量将当前工作集保留在cache中的一个有效方法。之所以采用这种分类推举策略,是考虑到cache单元的访问模式,对于属于候选列的cache单元,是最近从内存插入到L2cache的单元,根据程序的局部性访问原理,很有可能下次也会访问到此cache单元,因此退居到MRU位置。对于不属于候选列的cache单元,意味着已经访问了不止一次,下次被访问到的可能性有所降低,因此采用逐级推举策略,而不是直接推举到MRU位置。
本发明还为在一定时间周期后清零计数器,有效地降低了开销。同时核与核之间增加了一个路窃取信息表,来存放各个核之间的窃取情况,利用率高的核可以充分利用属于利用率低的核的单元。这些窃取信息可以通过cache替换进行清除,同时每隔一个时间片t进行全部清除,有效地进行维护。在cache替换时充分考虑属于各个核的单元的利用情况,有效利用存在闲置单元的核,从而提高cache命中率。
附图说明
图1是本发明所述的cache列划分以示意图;
图2是本发明所述的窃取信息表示意图
图3是本发明流程图;
图4是本发明所述cache替换方法流程图;
图5.1.1访问M中的单元的优先级提升方法示意图—提升前;
图5.1.2访问M中的单元的优先级提升方法示意图—提升后;
图5.2.1访问M之外的单元的优先级提升方法示意图—提升前;
图5.2.2访问M之外的单元的优先级提升方法示意图—提升后;
具体实施方式:
下面以一个两级Cache结构的片上多核处理器为例,对本发明所述的替换方法进行详细的描述。
配置如表1:
表1
在该处理器上参数分别取值:四核处理器,候选路有4列,时间片t=100000。其具体步骤如下:
假设当前访问核为core3,所属列为(12,13,14,15),根据图1访问的cache组为64,4个最少访问候选单元由组64中访问频率最低的4个存储单元组成,即(3,4,7,13),其中7为访问频率最低的存储单元,MRU存储单元为最近访问的存储单元,这里为组64中15。
1、初始化:
1.1)如图1,初始化cache划分表,cache列平均划分,保证每个核拥有自己的cache列,core3对应列(12,13,14,15),核窃取信息表如图2所示,其中core3窃取了core2的存储单元,且被窃取的存储单元属于64组。
1.2)当处理器核发出一个L2 Cache的访问时,获取该处理器核的编号PID设为3,设访问第64组,根据core3的列划分信息去访问64组的(12,13,14,15),如果命中,访问命中的存储单元,继续执行步骤3。缺失则查看cache窃取信息表,如果此处core3窃取了core2的列,根据图2可知core2被窃取的存储单元对应于64组,因此依次搜索64组属于core2的存储单元,命中则访问对应的存储单元,并执继续行步骤4,否则顺序执行cache替换方法2。
2、cache替换方法:
(2.1)选择逐出存储单元:
2.1.1)如果4个访问频率最低的候选单元中,有属于core3的单元,这里13属于core3,则直接选为逐出单元,跳到步骤(2.2),否则顺序执行步骤2.1.2;
2.1.2)如果其他核有窃取当前核所属的存储单元,假设Core2只窃取了Core3的一个存储单元,则查看窃取的是否是64组里的cache存储单元,如果是则选为逐出单元,并更新core3对应core2的窃取信息,如果核2分别窃取了核3的63、64组中的一个存储单元,则路窃取信息更新前为(1,63,64),更新后变为(1,63),继续执行步骤(2.2),否则顺序执行步骤2.1.3;
如果corek没有窃取核corei的存储单元,顺序执行步骤2.1.3)
2.1.3)选择候选路信息中访问频率最低的存储单元7作为逐出单元,更新路窃取信息表,继续执行步骤(2.2);
(2.2)插入访问块
2.2.1)将访问块插入到优先级为4的存储单元中;
2.2.2)更新插入后的存储单元的访问频率信息,访问频率加一,执行步骤4;
3.提升优先级
(3.1)假设要访问的core3单元属于4个候选存储单元中的,如13,则将其插入到MRU单元,如图5.1.1-5.1.2,继续下一步;
(3.2)否则,假设访问的不是4个候选单元,而是单元0,则将该单元优先级提升一级,插入到相应位置,如图5.2.1-5.2.2,继续下一步;
4、回溯阶段,程序运行一个时间片100000后,
(3.1)程序是否运行结束,是则转到步骤5,否则,
(3.2)清除列访问频率信息和核窃取信息,跳转至步骤1.2)
5、输出运行结果,分析功耗,缺失率以及整体IPC,本步骤属于常规方法。
本cache替换方法综合考虑访问频率,cache划分,核窃取信息,综合各种影响因素,最终提高cache命中率,达到提高IPC的目的。
Claims (1)
1.一种改进的多核共享cache替换方法,其特征在于包含以下步骤:
1)、初始化:
1.1)初始化cache列划分信息表和路窃取信息表,以核为单位将cache列平均划分,保证每个核拥有自己的cache列,列划分信息表为矩阵IA×B,A表示核的个数,B表示能访问的所有cache列的个数,其中Iij为矩阵IA×B中第i行第j列的元素,Iij表示cache的第j列是否属于第i个核corei;
路窃取信息表为矩阵LA×A,A表示核的个数,Lij为矩阵LA×A中第i行第j列的元素,Lij包含两类信息,其一为核corei是否窃取了核corej对应的cache的存储单元,其二为被窃取的核corej的存储单元对应的组号集合;
1.2)当处理器核corei发出一个L2Cache的访问请求时,根据所要访问的地址确定地址所映射的Cache组q,根据cache组q和corei的列划分信息表确定属于corei的cache存储单元集合,并在存储单元集合中判断是否命中,
1.2.1)如果命中,存取cache存储单元,命中单元即为请求所要访问的单元,继续执行步骤3;
1.2.2)如果未命中,判断核corei是否窃取了其他核的cache列;
1.2.2.1)如果核corei窃取了核corem的列,根据路窃取信息表确定被窃取的核corem的存储单元对应的组号集合Q;并判断q是否属于Q;
1.2.2.1.1)如果q属于Q,则搜索组q中核corem对应的存储单元;判断是否命中;
1.2.2.1.1.1)如果命中,存取cache存储单元,继续执行步骤4;
1.2.2.1.1.2)如果未命中,顺序执行步骤2;
1.2.2.1.2)如果q不属于Q,顺序执行步骤2;
1.2.2.2)如果核corei并未窃取其他核的列,顺序执行步骤2;
2)、cache替换算法:
(2.1)根据Cache组q对应的候选路信息Mq,核corei的列划分信息,以及核corei对应的cache路窃取信息选择逐出单元,所述的候选路Mq表示Cache组q中按访问频率升序排列中的前M个存储单元对应的Cache列号,选择逐出单元的步骤如下:
2.1.1)如果候选路信息Mq对应的存储单元存在属于corei的存储单元Ci,则Ci为逐出单元,继续执行步骤(2.2);否则顺序执行步骤2.1.2);
2.1.2)根据路窃取信息表,判断corek是否窃取了核corei的存储单元;
2.1.2.1)如果存在corek窃取了核corei的存储单元,判断窃取的是否是组q中的cache存储单元;
2.1.2.1.1)如果是,将组q中所对应的存储单元选为逐出单元,更新路窃取信息表,继续执行步骤(2.2),
2.1.2.1.2)如果不是,顺序执行步骤2.1.3)
2.1.2.2)如果corek没有窃取核corei的存储单元,顺序执行步骤2.1.3);
2.1.3)选择候选路信息Mq中访问频率最低的存储单元作为逐出单元,更新路窃取信息表,顺序执行步骤(2.2);
(2.2)将要存取的数据块插入到cache组q中优先级为M的存储单元f中,更新存储单元f的访问频率信息,继续执行步骤4,其中用访问频率信息排列优先级;
3)、提升优先级:当cache存储单元命中时,更新命中的cache存储单元的优先级,更新步骤如下:
如果命中的存储单元属于候选路Mq,则将命中的存储单元的优先级提升为最近访问的列的优先级,继续下一步;
如果命中的存储单元不属于候选路Mq,则将命中的cache存储单元的优先级提升一级继续下一步;
4)、回溯阶段,程序运行时间t后,如果程序结束继续执行步骤5,否则,清除所有cache存储单元访问频率信息和路窃取信息表,并返回步骤1.2);
5)、输出运行结果,分析缺失率,功耗,以及整体IPC。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310055097.1A CN103150266B (zh) | 2013-02-20 | 2013-02-20 | 一种改进的多核共享cache替换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310055097.1A CN103150266B (zh) | 2013-02-20 | 2013-02-20 | 一种改进的多核共享cache替换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150266A CN103150266A (zh) | 2013-06-12 |
CN103150266B true CN103150266B (zh) | 2015-10-28 |
Family
ID=48548359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310055097.1A Expired - Fee Related CN103150266B (zh) | 2013-02-20 | 2013-02-20 | 一种改进的多核共享cache替换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103150266B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105359116B (zh) * | 2014-03-07 | 2018-10-19 | 华为技术有限公司 | 缓存器、共享缓存管理方法及控制器 |
CN111221749A (zh) * | 2019-11-15 | 2020-06-02 | 新华三半导体技术有限公司 | 数据块写入方法、装置、处理器芯片及Cache |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739299A (zh) * | 2009-12-18 | 2010-06-16 | 北京工业大学 | 一种基于片上多核处理器共享cache的动态公平划分方法 |
CN102135793A (zh) * | 2011-03-29 | 2011-07-27 | 北京工业大学 | 一种面向低功耗的多核共享Cache混合划分方法 |
CN102193875A (zh) * | 2011-04-26 | 2011-09-21 | 北京工业大学 | 多核下基于Cache划分的自适应路预测算法 |
-
2013
- 2013-02-20 CN CN201310055097.1A patent/CN103150266B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739299A (zh) * | 2009-12-18 | 2010-06-16 | 北京工业大学 | 一种基于片上多核处理器共享cache的动态公平划分方法 |
CN102135793A (zh) * | 2011-03-29 | 2011-07-27 | 北京工业大学 | 一种面向低功耗的多核共享Cache混合划分方法 |
CN102193875A (zh) * | 2011-04-26 | 2011-09-21 | 北京工业大学 | 多核下基于Cache划分的自适应路预测算法 |
Non-Patent Citations (3)
Title |
---|
一种多核Cache低功耗动态混合划分算法研究;方娟等;《小型微型计算机系统》;20111130;第32卷(第11期);第2295-2298页 * |
多核处理器预取策略的研究;方娟等;《微电子学与计算机》;20100831;第27卷(第8期);第74-76页 * |
片上多核处理器共享Cache划分的公平性研究;方娟等;《计算机工程与设计》;20100816;第31卷(第15期);第3413-3417页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103150266A (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103246613B (zh) | 缓存装置及用于缓存装置的缓存数据获取方法 | |
CN103885728B (zh) | 一种基于固态盘的磁盘缓存系统 | |
US8103894B2 (en) | Power conservation in vertically-striped NUCA caches | |
KR101761301B1 (ko) | 메모리 자원 최적화 방법 및 장치 | |
US8140758B2 (en) | Data reorganization in non-uniform cache access caches | |
CN102663115B (zh) | 基于页面染色技术的内存数据库访问优化方法 | |
US8171220B2 (en) | Cache architecture with distributed state bits | |
CN106569960B (zh) | 一种混合主存的末级缓存管理方法 | |
Sembrant et al. | Tlc: A tag-less cache for reducing dynamic first level cache energy | |
CN103678571B (zh) | 应用于单台多核处理器主机的多线程网络爬虫执行方法 | |
CN102110073B (zh) | 一种片上共享高速缓存的替换装置和方法以及相应处理器 | |
CN107315694B (zh) | 一种缓存一致性管理方法及节点控制器 | |
Dublish et al. | Cooperative caching for GPUs | |
CN104598394A (zh) | 一种可动态分配的数据缓存方法及系统 | |
US20180113815A1 (en) | Cache entry replacement based on penalty of memory access | |
CN103150266B (zh) | 一种改进的多核共享cache替换方法 | |
Guz et al. | Utilizing shared data in chip multiprocessors with the Nahalal architecture | |
CN108664217A (zh) | 一种降低固态盘存储系统写性能抖动的缓存方法及系统 | |
CN105988720A (zh) | 数据存储装置和方法 | |
US11934307B2 (en) | Apparatus and method for providing coherence data for use when implementing a cache coherency protocol | |
Yoon et al. | Self-learnable cluster-based prefetching method for DRAM-flash hybrid main memory architecture | |
Das et al. | Dynamic associativity management in tiled CMPs by runtime adaptation of fellow sets | |
Das et al. | Towards a better cache utilization by selective data storage for CMP last level caches | |
Lee et al. | Dirty-block tracking in a direct-mapped DRAM cache with self-balancing dispatch | |
CN102193875B (zh) | 多核下基于Cache划分的自适应路预测算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151028 Termination date: 20180220 |