高速缓存cache存储器系统及访问缓存行cacheline的方法

文档序号:8361364阅读:576来源:国知局
高速缓存cache存储器系统及访问缓存行cache line的方法
【技术领域】
[0001]本发明涉及计算机技术,尤其涉及一种高速缓存cache存储器系统及在该cache存储器系统中访问缓存行cache line的方法。
【背景技术】
[0002]中央处理器(Central Process Unit,CPU)在运算时需要从主存(main memory)中读取数据,由于主存的读写速度比CPU的操作速度慢得多,使得CPU的处理能力不能充分发挥,为了缓和CPU的操作速度和主存读写速度不匹配的矛盾,通常在CPU和主存之间设置高速缓存(cache)存储器。
[0003]cache存储器与主存之间以缓存行(cache line)为单位进行数据交换,缓存行也可以称为缓存块(cache block)。当CPU读取数据或者指令时,将读取到的数据或指令保存到cache line中。当CPU第二次需要读取相同或相近的数据时可以从相应的cache line获得数据。由于CPU访问cache的速度远超过访问主存速度,从而大大提升了系统整体性會K。
[0004]cache存储器包括标签随机接入存储器(Tag RAM)和数据随机接入存储器(DataRAM),其中,Tag RAM 用于存储 cache 中 cache line 的索引地址(Index Address),Data RAM用于存放cache中cache line的数据。CPU访问cache工作流程为先访问Tag RAM来判断cache line是否在cache中,如果命中则直接去Data RAM中取数据;如果没命中,则去主存中取数据。
[0005]相干集线器接口(CHI,Coherent Hub Interface)是一种总线互连协议,用于连接多个片上系统(System on Chip,SoC),是一种可扩展的网络结构。CHI协议中将cacheline状态分为5类,依次为无效(Invalid,〗)状态、独占(Unique Clean,UC)状态、修改独占(Unique Dirty,UD)状态、共享(Shared Clean, SC)状态和修改共享(Shared Dirty,SD)状态,其中,I状态用于指示该cache line中不存在数据;UC状态用于指示该cache line只存在于一个缓存cache中且该cache line包括干净数据,干净数据是指该数据从主存中读出来后没有被修改,仍然与主存中的数据保持一致;UD状态用于指示该cache line只存在于一个cache中且该cache line包括脏(dirty)数据,脏数据是指该数据从主存中读出来后被修改,与主存中的数据不一致;SC状态用于指示该cache line存在于多个缓存cache中且该cache line包括干净数据;SD状态用于指示该cache line存在于多个cache中且该cache line包括脏数据。
[0006]进一步,CHI协议中定义了 cache line处于上述各种状态时要求方可以对该cache line所执行的操作,该要求方通常为某一级缓存,以访问第二级缓存L2cache中cache line为例,这些操作具体包括:
[0007]I)在L2 cache中的cache line处于I状态时,无法访问该L2 cache中该cacheline的数据;
[0008]2)在L2 cache中的cache line处于UC状态时,如果要求方要求访问L2 cache中该cache line的数据,该L2cache可以选择性返回该cache line的数据给要求方,SP返回或者不返回该cache line的数据给要求方;
[0009]3)在L2 cache中的cache line处于UD状态时,如果要求方要求访问L2 cache中该cache line的数据,该L2 cache必须返回该cache line的数据给要求方;
[0010]4)处于SC或SD状态的cache line的数据不能被修改,除非将处于SC或SD状态的cache line转化成其他状态,并且根据数据一致性原则,任意一级缓存中处于SC或SD状态的cache line的数据都是最新的。
[0011]在多核通信处理芯片中,一般使用多层级cache结构,即将cache分为多个层级,典型的是将cache分为三个层级,图1为三层cache的结构示意图,其中,第一层级cache (LI cache),第二层级 cache (L2 cache)和第三层级 cache (L3cache)的访问速度依次递减,容量依次递增,其中,LI cache包括LI cache 1、LI cache 2、LI cache 3和LIcache 4,可分别被 4 个 CPU 访问,L2 cache 包括 L2 cache A 和 L2 cache B,LI cache 相对于L2 cache而言是上一级cache,L2 cache相对于L3 cache而言是上一级cache。
[0012]现有技术提供了一种采用独占型(Exclusive)结构设计的多级cache,它的特点是使不同层级的cache之间没有交集,即保证两级cache之间存放不同的cache line的数据,避免出现两级cache都存放相同的cache line的数据,从而实现cache容量的最大化。以L2 cache和L3 cache为例,在L2 cache中存有某条cache line的数据,那么在L3cache中将不再存放该条cache line的数据。在多核通信处理芯片中,假设L2 cache A中存有某条cache line的数据而L2 cache B需要访问该条cache line的数据,则L2 cacheB发出请求到L3 cache后,由于在L3 cache line中没有存放该条cache line的数据,因此L3 cache需要向L2 cache A发出访问该条cache line的请求以从L2 cache A中获取该条cache line的数据。
[0013]然而,CHI协议中允许L2 cache A在接收到访问请求后不返回数据或者返回部分数据,比如,在L2 cache A中cache line处于UC状态时,L2 cache A接收到访问该条cache line的请求后,可以不返回该cache line的数据给要求方,因此L2 cache B需要去主存中读取该cache line的数据,而去主存中读取数据延迟很大。因此,基于CHI协议,采用exclusive结构设计cache存储器系统将降低cache系统性能。
[0014]现有技术还提供了一种采用包容型(Inclusive)结构设计多级cache,它的特点是下一级cache备份存储上一级cache存放的所有cache line的数据,保证上一级cache存放的cache line的数据在下一级cache中存在备份。同样地,以L2 cache和L3 cache为例,在L2 cache中存放的cache line的数据,在L3 cache中将必然存放。在多核通信处理芯片中,假设L2 cache A存放某条cache line的数据而L2 cache B需要访问该条cache line的数据,则L2 cache B发出访问该条cache line的请求到L3 cache后,如果L3 cache中该条cache line的数据是最新的,贝Ij直接在L3 cache中读取该条cache line,而无需去L2 cache A中读取该条cache line的数据;如果L3 cache中该条cache line的数据不是最新的,贝Ij需要向L2 cache A发出访问该条cache line的请求以从L2 cacheA中获取该条cache line的数据。
[0015]在CHI协议中,虽然采用inclusive结构设计多级cache可以保证如果L2cache A不返回数据或返回部分数据,L2 cache B可以从L3 cache中得到cache line的数据,然而inclusive结构对容量的浪费很大,在上一级cache存放的所有cache line的数据在下一级cache中也有存放,特别是当CPU核数很多时,对下一级cache的容量要求很高。

【发明内容】

[0016]本发明实施例提供了一种高速缓存cache存储器系统及访问缓存行cache line的方法,采用混合RAM结构设计的cache存储器系统能够提高cache存储器系统的性能。
[0017]为达到上述目的,本发明的实施例采用如下技术方案:
[0018]第一方面,本发明提供了一种cache存储器系统,包括:
[0019]多个上一级缓存,每个上一级缓存包括多个缓存行cache line;
[0020]本级缓存,该本级缓存包括独占型标签随机接入存储器Exclusive Tag RAM和包容型标签随机接入存储器Inclusive Tag RAM,其中,该Exclusive Tag RAM用于优先存储每个上一级缓存中状态为修改独占UD的第一 cache line的索引地址,该Inclusive TagRAM用于存储每个上一级缓存中状态为独占UC、共享SC或修改共享SD的第二 cache line的索引地址,该第二 cache line的数据被备份存储于该本级缓存中。
[0021]结合第一方面,在第一种可能的实现方式中,该多个上一级缓存包括第一缓存和第二缓存,该本级缓存包括数据随机接入存储器Data RAM,第二 cache line的数据具体被备份存储于所述Data RAM ;
[0022]该第一缓存,用于向该本级缓存发送访问第三cache line的请求;
[0023]该本级缓存,用于在接收所该第一缓存发出的访问第三cache line的请求后,确定该第三cache line的索引地址位于Exclusive Tag RAM或Inclusive Tag RAM,并且确定该第三cache line的状态,根据该第三cache line的状态确定将从第二缓存中获取的该cache line的数据或者将该本级缓存的Data RAM中备份存储的该第三cache line的数据发送给第一缓存。
[0024]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,该本级缓存具体用于:
[0025]在确定该第三cache line的状态为UD时,该本级缓存将从第二缓存中获取的该第三cache line的数据发送给第一缓存;或者,
[0026]在确定该第三cache line的状态为SC或SD时,该本级缓存将该本级缓存的DataRAM中备份存储的该第三cache line的数据发送给第一缓存;或者,
[0027]在确定该第三cache line的状态为UC时,该本级缓存向第二缓存发出访问该第三cache line的数据的请求,若接收到第二缓存发送的该第三cache line的数据,则该本级缓存将从第二缓存中获取的该第三cache line的数据发送给第一缓存;若接收到第二缓存发送的不发送该第三cache line的数据的指示,则该本级缓存将该本级缓存的DataRAM中备份存储的该第三cache line的数据发送给第一缓存。
[0028]结合第一方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,该本级缓存还包括状态随机接入存储器Status RAM,该Status RAM用于记录索引地址位于Exclusive Tag RAM或Inclusive Tag RAM中的cache line的状态,该本级缓存具体用于:根据Status RAM确定第三cache line的状态。
[0029]结合第一方面以及第一方面的第一或第二或第三种可能的实现方式,在第四种可能的实现方式中,在Exclusive Tag RAM中第一 cache
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1