一种计算机缓存系统的管理方法

文档序号:9375502阅读:258来源:国知局
一种计算机缓存系统的管理方法
【专利说明】一种计算机缓存系统的管理方法
[0001]本申请是原申请号为201210464057.8,申请日为2012.11.16,发明创造名称为“一种计算机缓存系统的管理方法”的发明专利的分案申请
技术领域
[0002]本发明涉及一种计算机缓存系统的管理算法,具体是指一种CPU缓存系统的管理方法。
【背景技术】
[0003]目前,计算机系统访问诸如内存和其他低级存储设备(如硬盘和网络设备)时均有很大的延迟。以访问内存为例,在CPU发出数据和指令的存取命令后,要约100纳秒的时间才能得到数据,这相当于CPU核心执行几百条指令的时间。由于CPU系统对指令和数据的使用有一定的规律,因此根据这些规律,我们便可以设计各种手段猜测CPU将要使用到的指令和数据,并提前预取这些内容到CPU中以备用。这样当CPU要实际使用这些指令和数据时,不需要等待,可以立即得到这些指令和数据。因此,预取(Prefetch)是能够有效地减少CPU访问内存和其他低级存储设备的平均访问延迟的一种手段。
[0004]然而,预取在实际应用中的功效取决于两个条件:第一,预取的准确性,也即预取的数据和指令是否及时,是否会被实际地用到;第二,预取的指令和数据对CPU缓存中现有的有用的指令和数据的排挤冲刷作用。虽然预取可以有效地降低内存访问的平均延迟,但是预取的内容会替换掉CPU缓存中现有的有用指令和数据,而这些被预取的内容替换掉的CPU缓存中现有的有用内容是将来要被重新耗费时间读入CPU的。因此对预取内容的处理不当,会增加CPU缓存失误,增加CPU对内存的访问次数,损害性能。

【发明内容】

[0005]本发明的目的在于克服目前CPU预取时,CPU缓存中现有的有用数据会被预取的内容替换掉,从而会增加缓存失误、降低性能的缺陷,提供一种能有效解决上述缺陷的一种计算机缓存系统的管理方法。
[0006]本发明通过以下技术方案实现:一种计算机缓存系统的管理方法,该缓存由多个缓存线构成,且每个缓存线有多个数据字;每个缓存线的数据字按地址分为多个子集,且每个子集都设置一个用于记录该子集访问历史的标识位,其管理步骤如下:
[0007]若子集对应的地址被访问,则将该子集的标识位置为I ;若子集的标识位为I的数目达到预订阈值或者设定的逻辑条件时,则发出内存访问的的预取命令。
[0008]本发明较现有技术相比,具有以下优点及有益效果:
[0009](I)本发明能确保CPU系统具有效地进行指令和数据的预取,能在指令和数据被真实使用前,提前发出请求从内存或者其他存储机构将指令和数据取回到CPU中,能显著地降低平均访问延迟,从而提高运算速度。
[0010](2)本发明CPU系统中预取的指令和数据既可以单独存放于一块缓存区,也可以与非预取的指令和数据存放于同样的缓存中,使用范围较广。
[0011 ] (3)本发明采用的缓存替换算法,能确保CPU系统运行的稳定性,最大程度地降低缓存失误,最少次数地对内存进行访问。
[0012](4)本发明还具有防止WLRU缓存替换算法的过杀伤功能,因此能确保本发明的使用效果。
【附图说明】
[0013]图1为本发明涉及的CPU内部结构示意图。
[0014]图2为本发明实施例1中的缓存线的存储结构示意图。
[0015]图3为本发明实施例1中缓存线发生替换时选择被替换缓存线的流程图。
[0016]图4A和图4B为本发明实施例2中的缓存线的存储结构示意图。
[0017]图5A和图5B为本发明实施例2中缓存线发生替换时选择被替换缓存线的流程图。
[0018]图6为本发明实施例3中的缓存线的存储结构示意图。
[0019]图7为本发明实施例3中缓存线发生替换时选择被替换缓存线的流程图。
[0020]图8为本发明涉及的预取的指令和数据所在缓存线在填入缓存中的过程的一种流程图。
[0021]图9A为本发明预取内存访问命令在内存控制器中的第一种调度方法。
[0022]图9B为本发明预取内存访问命令在内存控制器中的第二种调度方法。
[0023]图10为本发明涉及的缓存管理方法处理“预取命中prefetch hit”的过程的一种流程图。
[0024]图1lA和图1lB为本发明的一种防止“假命中”现象的缓存管理方法的缓存线存储设计。
[0025]图12为本发明的一种防止WLRU替换算法“过杀伤”的设计。
[0026]图13为本发明的另一种防止WLRU替换算法“过杀伤”的设计。
【具体实施方式】
[0027]下面结合具体的实施例对本发明进行阐述,但本发明的实施方式不限于此。
[0028]实施例1
[0029]如图1?3所示,本发明CPU系统中的CPU独立芯片100内部集成有CPU核心110、二级缓存130、内存访问控制器MMU 140及四个内存通道。CPU核心110中内置有CPU执行机构116、第一级指令缓存112 (即Ll-1 Cache)和第一级数据缓存114 (即Ll-D Cache)。二级缓存130直接与CPU核心110进行数据交换,而所述的四个内存通道(即内存通道一152、内存通道二 154、内存通道三156和内存通道四158)则与内存访问控制器MMU 140相连接,以接受其管理指令。
[0030]内存访问控制器MMU 140与CPU核心110的指令和数据的填充机构交换数据。图1中的CPU独立芯片100的第一缓存采用的是指令和数据分开的存储的结构:指令存放于第一级指令缓存112中,数据存放于第一级数据缓存114中。CPU缓存是位于和CPU核心110同一块芯片上的存储区,且CPU缓存的读写延迟要明显小于位于CPU独立芯片100外部的内存,即图1中所设计的四个分别独立与四个内存通道相连接的内存模块120、内存模块122、内存模块124和内存模块126。目前,CPU缓存通常用高速读写电路,比如SRAM制造,而内存由DRAM电路制造。
[0031]图2描述了一种缓存线的存储结构示意图,该缓存线有TAG存储区260,Data存储区270,和5个标识位。所述的5个标识位为:V标识位210,H标识位220,A标识位230,D标识位240和P标识位250。其中,V标识位210代表缓存线为合法有效(Valid) ;H标识位220表示缓存线被命中(Hit)过,在缓存线最初装入时,H标识位220被设置为零,若缓存线命中,则置为I ;A标识位230标识该缓存线已经被替换算法分配(Allocated) ;D标识位240表示该缓存线的内容曾经被改动过(Dirty),在被替换出缓存后,需要将改变后的内容写入内存;P标识位250代表Prefetch,如果该标识位被设置为1,表示该缓存线存储的是预取的内容。
[0032]对于非预取的指令和数据,当其填入CPU缓存中时,相应缓存线的P标识位250将被设置为零,以示和存储预取的内容的缓存线的区别。P标识位250为I的缓存线在命中后,P标识位250可以被清零。P标识位250为I的缓存线在第一次命中后,其命中H标识位220可以不置I。
[0033]如图3所示,本实施例的带P标识位的缓存线在发生替换时选择被替换缓存线的过程如下:
[0034](310)系统运行并判断是否有不含有效信息的非法的缓存线;是,则替换V标识位为零的缓存线,用来存放新填入的缓存线,并结束进程;否,则执行步骤(320);
[0035](320)判定是否有H标识位和P标识位同时为零的缓存线;是,则替换H标识位和P标识位都为零的缓存线,并结束进程;否,则执行步骤(330);
[0036](330)判定是否有H标识位为零而P标识位不为零的缓存线;是,则替换H标识位为零而P标识位为I的缓存线,并结束进程;否,则执
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1