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

文档序号:8258405阅读:来源:国知局
体中将Tag值及状态标志位读出;
Tag值及状态位比较模块将读出的Tag值与请求的Tag进行比较,判断是否命中,若命中判断状态标志位是否有效,有效则可从Cache体中读取数据;
读取数据体模块负责从相应的数据存储空间读取数据,其中包括三种途径,从Cache体中读取、从SRAM中读取、通过EDMA读取;
数据发送模块用于完成将读取的数据发送给LI的操作;
缺失请求流水线对缺失请求的处理过程如图4所示,具体如下:
步骤1、地址解析模块对请求的地址进行解析,可请求的数据可能位于三个部分,包括L2的Cache部分、SRAM部分及外存部分;
步骤2、地址解析模块判断地址中的行索引值是否属于Cache空间,若不属于则进行步骤3,若属于则进行步骤4;
步骤3、地址解析模块判断地址中的行索引值是否属于SRAM空间,若不属于则进行步骤8,若属于则进行步骤9;
步骤4、读取Tag体数据模块根据行索引值从Tag存储体中读取Tag值及相应的状态标志位;
步骤5、Tag值及状态位比较模块将请求的Tag值与从Tag存储体中读取的Tag值进行比较,若相同则进行步骤6,若不同则进行步骤8 ;
步骤6、Tag值及状态位比较模块判断状态标志位是否有效,有效则进行步骤7,无效则进行步骤8 ;
步骤7、读取数据体模块从命中的Cache体中读出命中的数据;
步骤8、读取数据体模块通过EDMA从外存中读取所需要的数据;
步骤9、读取数据体模块从片内SRAM中读取相应的数据;
步骤10、数据发送模块将读取的数据发送给请求方。
[0022]数据体存储模块用于存储相应的数据信息,其包括Tag存储体、Cache存储体、SRAM存储体。其中Tag存储体用来存储Cache行对应的Tag值及状态标志位。
[0023]EDMA读请求流水线用于对EDMA的猝发读请求进行流水线处理。图5为EDMA读请求流水线的结构框图,如图5所示,该流水线共分为3级流水线,包括侦听模块、侦听数据返回或读数据体模块、数据发送模块,其中侦听模块中包括侦听偏移地址比较与暂存单元。该流水线对读请求处理的过程如下:
侦听模块可一次性接收EDMA猝发传来的8个读请求,首先对第一个请求进行LI的数据侦听,侦听偏移地址比较与暂存单元将其侦听地址进行暂存,然后读取LI对应行的dirty位,若dirty位为I表示此行数据被修改过,需要写回最新数据,若dirty位为O表示此行数据未被修改过,则无需写回。对于第2~8个请求,侦听偏移地址比较与暂存单元首先将此次请求的偏移地址与暂存列表中的偏移地址进行比较,若偏移地址相同则不需要再次进行侦听。当8次请求处理结束需对偏移地址暂存列表清空。例如,8次请求的偏移地址分别为100h、100h、101h、102h、101h、103h、100h、104h,对第一次请求将侦听LI中偏移地址为10h的行,并将偏移地址10h暂存,第二次请求与暂存表中的暂存地址相同则不再进行侦听,第三次请求的偏移地址为loih,与暂存表中不同,则需侦听,同时将1ih暂存于暂存表中,以此类推,当第8次请求执行结束,将暂存表全部清零。
[0024]若执行了侦听操作并且dirty位为1,则第二级的侦听数据返回或读数据体模块读取LI中的最新数据,将最新的数据从LI数据体中读出。读出后进入流水线第三级的数据发送模块,将LI返回的数据写入数据发送缓存,执行数据发送的同时将LI的最新数据写回L2数据体。
[0025]若无需进行侦听操作或者dirty位为0,则进行第二级流水线中的读取L2数据体,从L2的数据体中读取对应行中的数据。读取数据后发送到第三级流水线中的数据缓存,然后进行数据发送。
[0026]EDMA写请求流水线用于对EDMA猝发的多个写请求进行流水线处理。其结构如图6所示,共分为三级:
侦听模块,根据请求地址对对应的LI行进行数据侦听,若dirty位为I则进入第二级流水线,若dirty位为O则进入第三级流水线;
数据写回模块,将侦听的LI最新数据写回到L2对应的数据体中;
EDMA数据写入模块,将写请求的数据写入L2,若对应的L2行中已有数据,需先将已有数据写回到外存;
写合并模块,将多个EDMA写偏移地址相同的请求合并为一个请求,其合并原理与写缓存buffer的合并原理相同。
[0027]本发明提供了一种二级Cache对访问请求的流水线处理方法,采用三条流水线处理5类请求,流水线机制能有效提高了处理性能,写缓存和写合并机制的引入能进一步加强对请求的处理能力,本发明还采用减少侦听次数的方法提高EDMA的读请求处理时间,以上方法还可用于到EDMA的写请求、二级Cache的行替换,数据一致性维护等多个方面。
[0028]本发明提供了一种二级Cache对访问请求的流水线处理系统,该系统可以应用大部分微处理器芯片上,可提高整个存储系统的性能,对提高微处理器芯片的处理能力意义重大。
【主权项】
1.一种二级Cache对访问请求的处理方法,其特征在于,利用三条并行的流水线:第一?第三流水线对访问请求进行并行处理,第一流水线负责处理一级数据Cache的读缺失请求、写缺失请求以及一级程序Cache的读缺失请求,第二流水线负责处理EDMA的读请求,第三流水线负责处理EDMA的写请求;为第一?第三流水线分别设置与其一一对应的第一?第三缓存单元,第一缓存单元用于缓存一级数据Cache的写缺失请求并将所缓存的多个行偏移地址相同的写缺失请求合并为一个,第二缓存单元用于缓存侦听到的数据并在EDMA发送数据的同时将侦听到的最新数据写回二级Cache的对应数据体中,第三缓存单元用于缓存EDMA的写请求并将所缓存的多个行偏移地址相同的写请求合并为一个。
2.如权利要求1所述二级Cache对访问请求的处理方法,其特征在于,所述第一流水线为包括:地址解析、读取Tag体数据、Tag值及状态位比较、读取数据体、数据发送这五级的五级流水线,第二流水线为包括侦听、侦听数据返回或读数据体、数据发送这三级的三级流水线,第三流水线为包括侦听、数据写回、EDMA数据写入这三级的三级流水线。
3.如权利要求2所述二级Cache对访问请求的处理方法,其特征在于,第二流水线在处理EDMA的读请求时,根据读请求的地址对一级Cache进行数据侦听并将所侦听数据的行偏移地址暂存;对于之后的每一个读请求,首先将该读请求所请求的行偏移地址与暂存的行偏移地址进行比较,如果相同,则不对一级Cache进行数据侦听,如果不同,则对一级Cache进行数据侦听并将该读请求所请求的行偏移地址暂存。
4.一种二级Cache对访问请求的处理系统,其特征在于,包括用于对访问请求进行并行处理的三条并行的流水线:第一?第三流水线,以及与第一?第三流水线一一对应设置的第一?第三缓存单元;第一流水线负责处理一级数据Cache的读缺失请求、写缺失请求以及一级程序Cache的读缺失请求,第二流水线负责处理EDMA的读请求,第三流水线负责处理EDMA的写请求;第一缓存单元用于缓存一级数据Cache的写缺失请求并将所缓存的多个行偏移地址相同的写缺失请求合并为一个,第二缓存单元用于缓存侦听到的数据并在EDMA发送数据的同时将侦听到的最新数据写回二级Cache的对应数据体中,第三缓存单元用于缓存EDMA的写请求并将所缓存的多个行偏移地址相同的写请求合并为一个。
5.如权利要求4所述二级Cache对访问请求的处理系统,其特征在于,所述第一流水线为五级流水线,依次包括:地址解析模块、读取Tag体数据模块、Tag值及状态位比较模块、读取数据体模块、数据发送模块;第二流水线为三级流水线,依次包括侦听模块、侦听数据返回或读数据体模块、数据发送模块;第三流水线为三级流水线,依次包括侦听模块、数据写回模块、EDMA数据写入模块。
6.如权利要求5所述二级Cache对访问请求的处理系统,其特征在于,第二流水线的侦听模块中包括侦听偏移地址比较与暂存单元,用于暂存所侦听数据的行偏移地址并将新到来读请求所请求的行偏移地址与暂存的行偏移地址进行比较,如果相同,则侦听模块不对一级Cache进行数据侦听,如果不同,则侦听模块对一级Cache进行数据侦听并将新到来读请求所请求的行偏移地址暂存至侦听偏移地址比较与暂存单元。
7.如权利要求4?6任一项所述二级Cache对访问请求的处理系统,其特征在于,该系统还包括用于对同时到来的多个缺失请求进行处理优先级判断的优先级仲裁模块,处理优先级从高到低依次为:一级程序Cache的读缺失请求、一级数据Cache的写缺失请求、一级数据Cache的读缺失请求。
【专利摘要】本发明公开了一种二级Cache对访问请求的处理方法。发明针对现有二级Cache访问请求技术的不足,对其进行了改进,利用三条并行的流水线对L1D读缺失请求、L1D写缺失请求、L1P读缺失请求、EDMA读请求、EDMA写请求这五种访问请求分别进行流水线处理,并利用缓存机制将多个写偏移地址相同的请求合并为一个以加速多个写请求的处理速度,通过比较偏移地址来减少侦听次数以提高EDMA的读数据能力。发明还公开了一种二级Cache对访问请求的处理系统。相比现有技术,发明对访问请求的处理效率更高,且结构简单、可移植性强,可在大多数微处理器芯片中都可应用。
【IPC分类】G06F13-30, G06F12-08
【公开号】CN104572528
【申请号】CN201510040704
【发明人】李冰, 姜伟, 徐寅, 刘勇, 赵霞, 王刚, 董乾
【申请人】东南大学
【公开日】2015年4月29日
【申请日】2015年1月27日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1