一种二级Cache对访问请求的处理方法及系统的制作方法

文档序号:8258405阅读:647来源:国知局
一种二级Cache对访问请求的处理方法及系统的制作方法
【技术领域】
[0001]本发明涉及一种二级Cache对访问请求的处理方法及系统,属于微处理器技术领域。
【背景技术】
[0002]Cache (高速缓冲存储器)技术的广泛应用,很好的解决了存储墙问题对微处理器性能提升的限制,而超大规模集成电路技术的发展,也使得片上集成大容量Cache成为可能,这在很大程度上降低了 Cache的失效率。一级Cache分为程序Cache (LlP)和数据Cache (LID), 二级Cache为数据和程序共享Cache (L2),当一级Cache缺失时便会向二级Cache发出缺失请求。EDMA是直接存储器访问控制器,连接着二级Cache和外存,用于实现大片数据从内存到外存的搬移。
[0003]由于一级Cache容量有限,并且随着内核处理速度的提高及数据通路的增加,一级Cache的缺失率增加,采用流水线处理这些缺失请求能有效减少因缺失造成的大量时间阻塞。由于EDMA的读写请求为猝发传输,一次可发送最多8个请求,传统的串行处理将阻塞大量的时钟周期。
[0004]现有的二级Cache处理访问请求的方法有串行处理方法和单一流水线处理方法,串行处理方法面对多个请求连续性的到来时将导致浪费大量时间,而单一的流水线一定程度上能缓解这种时间上的阻塞,但是整条流水线周期较长,依旧无法满足高性能处理器的处理要求。

【发明内容】

[0005]本发明所要解决的技术问题在于克服现有技术所存在的二级Cache对访问请求的处理效率较低的问题,提供一种更高效的二级Cache对访问请求的处理方法及系统。
[0006]本发明具体采用以下技术方案解决上述技术问题:
一种二级Cache对访问请求的处理方法,利用三条并行的流水线:第一?第三流水线对访问请求进行并行处理,第一流水线负责处理一级数据Cache的读缺失请求、写缺失请求以及一级程序Cache的读缺失请求,第二流水线负责处理EDMA的读请求,第三流水线负责处理EDMA的写请求;为第一?第三流水线分别设置与其一一对应的第一?第三缓存单元,第一缓存单元用于缓存一级数据Cache的写缺失请求并将所缓存的多个行偏移地址相同的写缺失请求合并为一个,第二缓存单元用于缓存侦听到的数据并在EDMA发送数据的同时将侦听到的最新数据写回二级Cache的对应数据体中,第三缓存单元用于缓存EDMA的写请求并将所缓存的多个行偏移地址相同的写请求合并为一个。
[0007]优选地,所述第一流水线为包括:地址解析、读取Tag体数据、Tag值及状态位比较、读取数据体、数据发送这五级的五级流水线,第二流水线为包括侦听、侦听数据返回或读数据体、数据发送这三级的三级流水线,第三流水线为包括侦听、数据写回、EDMA数据写入这三级的三级流水线。
[0008]进一步地,第二流水线在处理EDMA的读请求时,根据读请求的地址对一级Cache进行数据侦听并将所侦听数据的行偏移地址暂存;对于之后的每一个读请求,首先将该读请求所请求的行偏移地址与暂存的行偏移地址进行比较,如果相同,则不对一级Cache进行数据侦听,如果不同,则对一级Cache进行数据侦听并将该读请求所请求的行偏移地址暂存。
[0009]一种二级Cache对访问请求的处理系统,包括用于对访问请求进行并行处理的三条并行的流水线:第一?第三流水线,以及与第一?第三流水线一一对应设置的第一?第三缓存单元;第一流水线负责处理一级数据Cache的读缺失请求、写缺失请求以及一级程序Cache的读缺失请求,第二流水线负责处理EDMA的读请求,第三流水线负责处理EDMA的写请求;第一缓存单元用于缓存一级数据Cache的写缺失请求并将所缓存的多个行偏移地址相同的写缺失请求合并为一个,第二缓存单元用于缓存侦听到的数据并在EDMA发送数据的同时将侦听到的最新数据写回二级Cache的对应数据体中,第三缓存单元用于缓存EDMA的写请求并将所缓存的多个行偏移地址相同的写请求合并为一个。
[0010]优选地,所述第一流水线为五级流水线,依次包括:地址解析模块、读取Tag体数据模块、Tag值及状态位比较模块、读取数据体模块、数据发送模块;第二流水线为三级流水线,依次包括侦听模块、侦听数据返回或读数据体模块、数据发送模块;第三流水线为三级流水线,依次包括侦听模块、数据写回模块、EDMA数据写入模块。
[0011]进一步地,第二流水线的侦听模块中包括侦听偏移地址比较与暂存单元,用于暂存所侦听数据的行偏移地址并将新到来读请求所请求的行偏移地址与暂存的行偏移地址进行比较,如果相同,则侦听模块不对一级Cache进行数据侦听,如果不同,则侦听模块对一级Cache进行数据侦听并将新到来读请求所请求的行偏移地址暂存至侦听偏移地址比较与暂存单元。
[0012]优选地,该系统还包括用于对同时到来的多个缺失请求进行处理优先级判断的优先级仲裁模块,处理优先级从高到低依次为:一级程序Cache的读缺失请求、一级数据Cache的写缺失请求、一级数据Cache的读缺失请求。
[0013]相比现有技术,本发明具有以下有益效果:
本发明采用并行流水线处理多个请求,可以有效地提高整个存储系统的性能进而提高整个微处理器的处理速度;旁路机制及缓存单元的引入提高了整个流水线的性能;由于侦听访问耗费大量时间,本发明通过比较偏移地址来减少侦听次数提高了 EDMA的读数据能力;写合并的引入进一步加快了对多个请求的处理能力,其结构简单、可移植性强,可在大多数微处理器芯片中都可应用。
【附图说明】
[0014]图1为本发明二级Cache对访问请求的处理系统的总体系统框图;
图2为【具体实施方式】中写缓存buffer的暂存与合并原理示意图;
图3为【具体实施方式】中缺失请求流水线的结构框图;
图4为【具体实施方式】中缺失请求流水线的流水线处理流程图;
图5为【具体实施方式】中EDMA读请求流水线的结构框图;
图6为【具体实施方式】中EDMA写请求流水线的结构框图。
【具体实施方式】
[0015]下面结合附图对本发明的技术方案进行详细说明:
本发明针对现有二级Cache访问请求技术的不足,对其进行了改进,利用三条并行的流水线对LlD读缺失请求、LlD写缺失请求、LlP读缺失请求、EDMA读请求、EDMA写请求这五种访问请求分别进行流水线处理,并利用缓存机制将多个写偏移地址相同的请求合并为一个以加速多个写请求的处理速度,通过比较偏移地址来减少侦听次数以提高EDMA的读数据能力。
[0016]图1示出了本发明二级Cache对访问请求的处理系统的总体结构。
[0017]如图1所示,本发明二级Cache对访问请求的处理系统包括:
写缓存buffer,用于缓存多个写缺失请求,并将多个写偏移地址相同的请求合并为一个;
优先级仲裁模块,用于对同时访问的多个缺失请求进行优先级的判断;
缺失请求流水线,用于对LlD读、写缺失及LlP读缺失进行流水线处理;
数据体存储模块,用于存储所需要的Tag值、状态位及数据;
EDMA读请求流水线,用于对EDMA的读请求进行处理;
EDMA写请求流水线,用于对EDMA的写请求进行处理;
EDMA写合并处理模块,用于将多个写偏移地址相同的EDMA写请求合并为一个请求。
[0018]其中,写缓存buffer用于对连续到来的写缺失请求进行缓存,并将其中的写偏移地址相同的请求合并为一个。图2显示了写缓存buffer的暂存与合并的原理。如图2所示,写缓存buffer为4个64bit的缓存空间,当连续有4个写缺失请求(假设偏移地址分别为100h、101h、100h、10h)时,每个请求可暂存于相应的一个64位buffer中,若不采用写合并则写缓存buffer最多可以缓存4个写缺失请求,若采用写合并,则可以将偏移地址都为10h的写请求合并为一个写请求,因为偏移地址为10h的写请求都需写入二级Cache的同一行,因此不必分多次写入,通过写合并可一次写入。采用写合并策略的写缓存buffer最多可以缓存16个写缺失请求。
[0019]优先级仲裁模块用于对同时到来的多个缺失请求进行优先级判断,其中LlP读缺失的优先级最高,LlD的读缺失优先级最低,LlD读缺失请求只有在写缓冲buffer为空时才可接收其请求。其具体处理过程如下:
步骤1、接收多个缺失请求;
步骤2、首先判断是否是LlD写缺失请求,若是则进行步骤3,然后继续处理下一个请求,若不是则进行步骤4;
步骤3、将写缺失请求暂存于写缓存buffer中;
步骤4、判断是否为LlD读缺失请求,若不是说明请求为LlP读缺失请求,则直接将其送入流水线处理,若是则进行步骤5 ;
步骤5、判断写缓存buffer是否为空,即判断写缺失请求是否执行完毕,若执行完毕则进行请求处理,若不为空则延迟LlD读缺失请求,直至写缓存buffer为空。
[0020]缺失请求流水线用于对LlD读、写缺失及LlP读缺失进行流水线处理;其包括五级,若一个请求从第一级进入第二级之后,下一个请求便可进入第一级执行,而不必等到一个请求全部执行结束再执行下一请求,缺失请求流水线的基本结构如图3所示,包括地址解析、读取Tag体数据、Tag值及状态位比较、读取数据体数据、数据发送这五级模块。
[0021]其中地址解析模块通过对请求地址的解析,判断出请求位于Cache中还是SRAM中还是外存中,每个存储体都对应一段特定的存储地址,通过请求地址便可判断出位于哪一存储体;
读取Tag体数据模块根据请求中的行索引值从Tag存储
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1