首页> 中国专利> 基于程序的需求来改变Cache组相联度的实现方法

基于程序的需求来改变Cache组相联度的实现方法

摘要

本发明涉及基于存储器层次结构设计领域,旨在提供一种基于程序的需求来改变Cache组相联度的实现方法。该方法包括:增加标签存储条目、数据和标签分开存储、Cache相联度可变等步骤。本发明是针对组相联Cache容易产生冲突缺失的问题,利用可变组相联度Cache结构以及采用全局替换策略,可以降低冲突缺失以及避免抖动现象,能够保证系统的稳定。本发明虽然增加了存储开销,但是存储开销取决于Cache行的大小,随着Cache行大小的增加,存储开销随之减少。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-05-22

    未缴年费专利权终止 IPC(主分类):G06F12/08 授权公告日:20110126 终止日期:20120326 申请日:20090326

    专利权的终止

  • 2011-01-26

    授权

    授权

  • 2009-12-30

    实质审查的生效

    实质审查的生效

  • 2009-11-04

    公开

    公开

说明书

技术领域

本发明涉及基于存储器层次结构设计领域,特别是涉及一种基于程序的需求来改变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的重利用计数器,就停止对重利用计数器表的搜索,并且把指针寄存器指向的重利用计数器的值所对应的数据行作为下一个要被替换的数据行。

最后,还需要注意的是,以上公布的仅是本发明的具体实施例。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号