CN101571835B - 基于程序的需求来改变Cache组相联度的实现方法 - Google Patents
基于程序的需求来改变Cache组相联度的实现方法 Download PDFInfo
- Publication number
- CN101571835B CN101571835B CN200910096957XA CN200910096957A CN101571835B CN 101571835 B CN101571835 B CN 101571835B CN 200910096957X A CN200910096957X A CN 200910096957XA CN 200910096957 A CN200910096957 A CN 200910096957A CN 101571835 B CN101571835 B CN 101571835B
- Authority
- CN
- China
- Prior art keywords
- cache
- data line
- label
- data
- value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 13
- 238000013500 data storage Methods 0.000 claims description 21
- 230000008034 disappearance Effects 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 9
- 125000004122 cyclic group Chemical group 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 3
- 238000012986 modification Methods 0.000 claims description 3
- 238000012217 deletion Methods 0.000 abstract 2
- 230000037430 deletion Effects 0.000 abstract 2
- 244000145845 chattering Species 0.000 abstract 1
- 230000008569 process Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及基于存储器层次结构设计领域,旨在提供一种基于程序的需求来改变Cache组相联度的实现方法。该方法包括:增加标签存储条目、数据和标签分开存储、Cache相联度可变等步骤。本发明是针对组相联Cache容易产生冲突缺失的问题,利用可变组相联度Cache结构以及采用全局替换策略,可以降低冲突缺失以及避免抖动现象,能够保证系统的稳定。本发明虽然增加了存储开销,但是存储开销取决于Cache行的大小,随着Cache行大小的增加,存储开销随之减少。
Description
技术领域
本发明涉及基于存储器层次结构设计领域,特别是涉及一种基于程序的需求来改变Cache组相联度的实现方法。
背景技术
为了实现处理器的速度和主存速度相匹配,在处理器和主存之间引入了一种新的硬件机制:Cache。但是Cache的引入,对计算机各方面的性能产生了很大的影响,随之带来了不少问题:缺失率的增加,存储开销的增加,功率消耗的增加,延迟的增加等。在现代微处理器结构中,Cache层次结构起着关键的作用,随着处理器速度的增加,Cache的设计和管理也变的尤为重要。现在处理器中的Cache主要划分为一级Cache和二级Cache。
存储器访问的不均匀性,容易导致CPU对Cache中的某些组访问过度频繁,而对其它的Cache组很少访问的现象。在全相联Cache中,发生Cache缺失时,采用的是全局替换策略,可以把冲突缺失减少到最小。在组相联Cache中,发生Cache缺失时,对Cache组而言采取的是局部替换策略,和全相联Cache相比,替换的范围缩小了,发生冲突缺失的数目相当于全相联Cache而言增加了。也就是说,随着Cache相联度的增加,Cache数据行替换的范围随之扩大了,发生冲突缺失的数目会也随之减少了。
但是,通过全相联Cache来减少冲突缺失是不现实的,因为CPU在访问全相联Cache时,内存标签需要和标签存储中的每一个标签进行比较,这样会增加访问时间、功率消耗和硬件代价等。在本方法中提出一种可变相联度Cache,来平衡全相联Cache和组相联Cache。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种基于程序的需求来改变Cache组相联度的实现方法。
本发明解决其技术问题采用的技术方案如下:
提供一种基于程序的需求来改变Cache组相联度的实现方法,包括:
(1)增加标签存储条目
将标签存储条目增加为Cache数据行数目的两倍,并根据程序对每一个Cache组的相联度的需求动态地改变Cache组相联度,即Cache中每个Cache组的相联度可以动态改变的;所述签存储条目是用来存储标识Cache数据行的标签;
(2)数据和标签分开存储
可变相联度Cache结构包括两个部分:数据存储和标签存储,数据存储和标签存储通过一对指针相互连接;
数据存储包括三个字段:数据行、有效位和反向指针;数据行用来存储数据,有效位用来记录数据行是否有效,反向指针用来标识标签存储中的唯一条目;
标签存储的每一个条目包括三个字段:状态信息、标签位和前向指针;状态信息包括有效位、修改位和替换信息,有效位是用来记录标签存储条目是否有效,修改位用来记录标签存储条目是否被修改过或者被更新,替换信息用来记录标签存储和数据存储当中被替换的信息;标签位对应数据存储中的数据行;前向指针是用来标识数据存储中的唯一条目;
3)Cache相联度可变
可变组相联度Cache工作过程分为以下几步:
第一步:标签比较
内存地址由内存标签位、索引位和偏移位三部分组成;当CPU要访问内存时,首先给出一个内存地址,内存地址的索引位用来确定所要访问的数据行的标签位于标签存储中的哪一个组,内存标签与要访问的数据行的标签所在的组中的所有标签进行比较;
第二步:取出前向指针
通过标签比较,如果标签命中,就选出命中的标签的前向指针;如果标签没有命中,发生缺失,就利用替换策略进行标签替换;
第三步:取出数据
根据取出的前向指针,在Cache数据存储中查找的相应的数据行,并且取出相应的数据行。
作为一种改进,本发明还包括全局替换策略的运用:
在传统的组相联Cache中,替换策略是基于每一个Cache组的,采用的是局部替换策略,而在可变组相联Cache中,替换策略是基于Cache中所有的数据行,采用的是全局替换策略;
全局替换策略包括两个部分:一个指针寄存器和一张重利用计数器表;Cache中每一数据行包含一个两位重利用计数器,这两位重利用计数器用来记录Cache中每一数据行的状态,当数据行调入Cache中时,该数据行的状态值初始化为00,把Cache中所有数据行的重利用计数器的值放在一起,形成一张重利用计数器表;指针寄存器指向重利用计数器表,来确定要被替换掉的数据行;
当发生Cache缺失时,全局替换策略工作过程如下:
第一步:指针寄存器循环搜索重利用计数器表,指针寄存所指向的两位重利用计数器的值如果为00,则把与之相应的数据行作为要替换的数据行,指针寄存器指向下一个重利用计数器的值;
第二步:指针寄存器指向的重利用计数器的值如果不为00,就使重利用计数器的值减1,并指向下一个重利用计数器的值,循环搜索重利用计数器表,直至找到重利用计数器的值为00;
第三步:如果指针寄存器搜索了很长时间,还没有找到值为00的重利用计数器,则就要设置一个时间值,如果在这个时间值内还没有找到值为00的重利用计数器,就停止对重利用计数器表的搜索,并且把指针寄存器指向的重利用计数器的值所对应的数据行作为下一个要被替换的数据行。
本发明与背景技术相比,具有的有益的效果是:
本发明是针对组相联Cache容易产生冲突缺失的问题,利用可变组相联度Cache结构以及采用全局替换策略,可以降低冲突缺失以及避免抖动现象,能够保证系统的稳定。本发明虽然增加了存储开销,但是存储开销取决于Cache行的大小,随着Cache行大小的增加,存储开销随之减少。
附图说明
图1是传统的组相联Cache采用局部替换策略;
图2是可变相联度Cache采用全局替换策略;
图3是可变相联度Cache结构;
图4是全局替换策略实施方式;
图5是全局替换策略实施过程示意图。
具体实施方式
本方法的具体过程及实例如下:
(1)增加标签存储条目
标签存储条目是用来存储标识Cache数据行的标签,标签存储条目增加为Cache数据行的两倍,根据程序对每一个Cache组的相联度的需求,来动态地改变Cache组相联度,也就是说,Cache中每个Cache组的相联度可以动态改变的。如图1所示,有两个工作集X和Y,X和Y中分别有四个数据行的地址{X0,X1,X2,X3}和{Y0,Y1,Y2,Y3},工作集X映射到组A中,也就是映射到数据存储的上半部分数据行{X0′,X1′,X2′,X3′},工作集Y映射到组B中,也就是映射到数据存储的下半部分数据行{Y0′,Y1′,Y2′,Y3′},应用程序对组A和组B需求是相同的,运行时不会产生冲突缺失和抖动现象,但是在实际应用程序当中,Cache对每个组的需求是动态变化地,比如说,组A中增加一个地址X4,组B减少一个地址Y3,这时组A就会产生冲突缺失和抖动现象,而组B不会,反而还要一个多余的标签存储位置,如果让这个多余的标签和组A共享,组A就不会产生冲突缺失和抖动现象。
在图2中,标签增加为图一中cache标签大小的两倍,数据行地址X0和X2映射到组A0中,Y0和Y2映射到组B0中,X1和X3映射到组A1中,Y1和Y3映射到组B1中,如果在工作集X中增加一个数据行地址X4,就把数据行地址X4映射到组A0中,因为组A0中还有两个未使用的标签存储位置,所以就不会产生冲突缺失和抖动现象。
(2)数据和标签分开存储
可变相联度Cache结构包括两个部分:数据存储和标签存储。标签存储的每一个条目包括三个字段:状态信息、标签位和前向指针,状态信息包括有效位、修改位和替换信息,有效位是用来记录标签存储条目是否有效,修改位用来记录标签存储条目是否被修改过或者被更新,替换信息用来记录标签存储和数据存储当中被替换的信息,标签位对应数据存储中的数据行,前向指针是用来标识数据存储中的唯一条目。数据存储也包括三个字段:数据行、有效位和反向指针,数据行用来存储数据,有效位用来记录数据行是否有效,反向指针用来标识标签存储中的唯一条目。数据存储和标签存储是通过一对指针相互连接的。
(3)可变组相联度Cache
可变组相联度Cache在数据访问时,工作过程如下:
第一步,标签比较
内存地址由内存标签位、索引位和偏移位三部分组成。当CPU要访问内存时,首先给出一个内存地址,根据内存地址的索引位来确定所要访问的数据行的标签位于标签存储中的哪一个组,内存地址标签与要访问的数据行的标签所在的组中的所有标签进行比较。
第二步,取出前向指针
通过标签比较,如果标签命中,就选出命中的标签的前向指针,如果标签没有命中,发生缺失,就利用替换策略进行标签替换。
第三步,取出数据
根据取出的前向指针,在Cache数据存储中查找的相应的数据行,并且取出相应的数据行。
(4)全局替换策略
在传统的组相联Cache中,替换策略是基于每一个Cache组的,采用的是局部替换策略,而在可变组相联Cache中,替换策略是基于Cache中所有的数据行,采用的是全局替换策略。全局替换策略包括两个部件:一个指针寄存器和一张重利用计数器表。Cache中每一数据行包含一个两位重利用计数器,这两位重利用计数器用来记录Cache中每一数据行的状态,当数据行调入Cache中时,该数据行的状态值初始化为00,数据行被访问一次,重利用计数器的值也要随之加1,把Cache中所有数据行的重利用计数器的值放在一起,就形成了一张重利用计数器表。指针寄存器指向重利用计数器表,来确定要被替换掉的数据行。
当发生Cache缺失时,全局替换策略工作过程如下:
第一步,指针寄存器循环搜索重利用计数器表,指针寄存所指向的两位重利用计数器的值如果为00,则把与之相应的数据行作为要替换的数据行,指针寄存器指向下一个重利用计数器的值。
第二步,指针寄存器指向的重利用计数器的值如果不为00,就使重利用计数器的值减1,并指向下一个重利用计数器的值,循环反复测试重利用计数器表,直至找到重利用计数器的值为00的条目。
第三步,指针寄存器搜索了很长时间,如果还没有找到值为00的重利用计数器,则就要设置一个时间值,如果在这个时间值内还没有找到值为00的重利用计数器,就停止对重利用计数器表的搜索,并且把指针寄存器指向的重利用计数器的值所对应的数据行作为下一个要被替换的数据行。
最后,还需要注意的是,以上公布的仅是本发明的具体实施例。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。
Claims (2)
1.一种基于程序的需求来改变Cache组相联度的实现方法,包括:
(1)增加标签存储条目
将标签存储条目增加为Cache数据行数目的两倍,并根据程序对每一个Cache组的相联度的需求动态地改变Cache组相联度,即Cache中每个Cache组的相联度可以动态改变的;所述标签存储条目是用来存储标识Cache数据行的标签;
(2)数据和标签分开存储
可变相联度Cache结构包括两个部分:数据存储和标签存储,数据存储和标签存储通过一对指针相互连接;
数据存储包括三个字段:数据行、有效位和反向指针;数据行用来存储数据,有效位用来记录数据行是否有效,反向指针用来标识标签存储中的唯一条目;
标签存储的每一个条目包括三个字段:状态信息、标签位和前向指针;状态信息包括有效位、修改位和替换信息,有效位是用来记录标签存储条目是否有效,修改位用来记录标签存储条目是否被修改过或者被更新,替换信息用来记录标签存储和数据存储当中被替换的信息;标签位对应数据存储中的数据行;前向指针是用来标识数据存储中的唯一条目;
3)Cache相联度可变
可变组相联度Cache工作过程分为以下几步:
第一步:标签比较
内存地址由内存标签位、索引位和偏移位三部分组成;当CPU要访问内存时,首先给出一个内存地址,内存地址的索引位用来确定所要访问的数据行的标签位于标签存储中的哪一个组,内存标签与要访问的数据行的标签所在的组中的所有标签进行比较;
第二步:取出前向指针
通过标签比较,如果标签命中,就选出命中的标签的前向指针;如果标签没有命中,发生缺失,就利用替换策略进行标签替换;
第三步:取出数据
根据取出的前向指针,在Cache数据存储中查找的相应的数据行,并且取出相应的数据行。
2.根据权利要求1所述基于程序的需求来改变Cache组相联度的实现方法,其特征在于,还包括全局替换策略的运用:
全局替换策略包括两个部分:一个指针寄存器和一张重利用计数器表;Cache中每一数据行包含一个两位重利用计数器,这两位重利用计数器用来记录Cache中每一数据行的状态,当数据行调入Cache中时,该数据行的状态值初始化为00,把Cache中所有数据行的重利用计数器的值放在一起,形成一张重利用计数器表;指针寄存器指向重利用计数器表,来确定要被替换掉的数据行;
当发生Cache缺失时,全局替换策略工作过程如下:
第一步:指针寄存器循环搜索重利用计数器表,指针寄存器所指向的两位重利用计数器的值如果为00,则把与之相应的数据行作为要替换的数据行,指针寄存器指向下一个重利用计数器的值;
第二步:指针寄存器指向的重利用计数器的值如果不为00,就使重利用计数器的值减1,并指向下一个重利用计数器的值,循环搜索重利用计数器表,直至找到重利用计数器的值为00;
第三步:如果指针寄存器搜索了很长时间,还没有找到值为00的重利用计数器,则就要设置一个时间值,如果在这个时间值内还没有找到值为00的重利用计数器,就停止对重利用计数器表的搜索,并且把指针寄存器指向的重利用计数器的值所对应的数据行作为下一个要被替换的数据行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910096957XA CN101571835B (zh) | 2009-03-26 | 2009-03-26 | 基于程序的需求来改变Cache组相联度的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910096957XA CN101571835B (zh) | 2009-03-26 | 2009-03-26 | 基于程序的需求来改变Cache组相联度的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101571835A CN101571835A (zh) | 2009-11-04 |
CN101571835B true CN101571835B (zh) | 2011-01-26 |
Family
ID=41231194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910096957XA Expired - Fee Related CN101571835B (zh) | 2009-03-26 | 2009-03-26 | 基于程序的需求来改变Cache组相联度的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101571835B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751295B (zh) * | 2009-12-22 | 2012-08-29 | 浙江大学 | 多核架构下核间线程迁移的实现方法 |
CN102231139A (zh) * | 2011-06-29 | 2011-11-02 | 内蒙古大学 | 基于子组的自适应高速缓冲存储器块替换策略 |
US9417998B2 (en) * | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
CN103019959B (zh) * | 2012-11-21 | 2016-05-04 | 中国科学院声学研究所 | 一种指令高速缓冲存储器 |
CN104809076B (zh) * | 2014-01-23 | 2018-02-06 | 华为技术有限公司 | Cache的管理方法及装置 |
CN105095105B (zh) * | 2014-04-24 | 2018-07-03 | 华为技术有限公司 | 一种Cache分区的方法及装置 |
CN104850508B (zh) * | 2015-04-09 | 2018-02-09 | 深圳大学 | 基于数据局部性的访存方法 |
CN106354666B (zh) * | 2016-08-30 | 2019-03-19 | 兆讯恒达微电子技术(北京)有限公司 | Cache替换算法 |
CN109408411A (zh) * | 2018-09-25 | 2019-03-01 | 浙江工商大学 | 基于数据访问次数的GPGPU的L1 Cache管理方法 |
CN112579482B (zh) * | 2020-12-05 | 2022-10-21 | 西安翔腾微电子科技有限公司 | 一种非阻塞Cache替换信息表超前精确更新装置及方法 |
-
2009
- 2009-03-26 CN CN200910096957XA patent/CN101571835B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101571835A (zh) | 2009-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101571835B (zh) | 基于程序的需求来改变Cache组相联度的实现方法 | |
CN106909515B (zh) | 面向混合主存的多核共享末级缓存管理方法及装置 | |
CN102498477B (zh) | Tlb预取 | |
Qureshi et al. | The V-Way cache: demand-based associativity via global replacement | |
US8719509B2 (en) | Cache implementing multiple replacement policies | |
CN101470670B (zh) | 具有扇区功能的高速缓冲存储器 | |
US7844778B2 (en) | Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements | |
CN103246613B (zh) | 缓存装置及用于缓存装置的缓存数据获取方法 | |
CN110018971B (zh) | 缓存替换技术 | |
CN106569960B (zh) | 一种混合主存的末级缓存管理方法 | |
CN101510176B (zh) | 通用操作系统对cpu二级缓存访问的控制方法 | |
CN102253901B (zh) | 一种基于相变内存的读写区分数据存储替换方法 | |
CN101694640B (zh) | 多核架构下共享二级Cache的替换策略的实现方法 | |
CN109739780A (zh) | 基于页级映射的动态二级缓存闪存转换层地址映射方法 | |
CN100377117C (zh) | 用于虚实地址变换及读写高速缓冲存储器的方法及装置 | |
CN109815167A (zh) | 用于高效虚拟标记的高速缓存实现的系统和方法 | |
US20110099336A1 (en) | Cache memory control circuit and cache memory control method | |
CN109074313B (zh) | 缓存和方法 | |
CN102110073B (zh) | 一种片上共享高速缓存的替换装置和方法以及相应处理器 | |
JP2015060571A (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
JP2017021399A (ja) | 半導体装置及びキャッシュメモリ制御方法 | |
Quan et al. | Prediction table based management policy for STT-RAM and SRAM hybrid cache | |
CN104461932A (zh) | 一种面向大数据应用的目录缓存管理方法 | |
CN103019959A (zh) | 一种指令高速缓冲存储器 | |
CN107341112A (zh) | 一种基于页面访问间隔的闪存数据缓冲区置换方法 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110126 Termination date: 20120326 |