注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

dp: 生活的脚步,进步的点滴...

Cam、DSP、FPGA、PM、Life、More ...

 
 
 

日志

 
 

CACHE的Miss和Hit处理  

2012-03-06 15:49:20|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.L1 CACHEMissHit

1.1 Read Miss

2.1

1.2 Write Miss

L1DRead-allocate CACHE,意味着仅在发生Read Miss时才会读入新的行。如果写Miss发生,数据通过一个Write Buffer写到低一级内存,从而把L1D CACHE旁路。写buffer包含4entries,每个entry64位宽。

1.3 Write Hit

         发生写命中,数据被写到CACHE中,但并不立刻就送到低一级内存。既然CACHE的类型是write-back,那么当CACHE中的数据被CPU写操作修改后,在以后某个时间会回写到内存中。为了回写修改的数据,你必须知道哪个行被CPU修改。为了这个目的,每个行都有一个Dirty状态,只要CPU写一个CACHE行,那么这个行的dirty位就设为1。,只有dirty行才会因为被驱逐而回写到内存,如果行没有被修改,也就是这一行是Clean,那么它的内容会被废弃。回写操作也可以由程序指令来主动触发。

2L2 CACHEMissHit

2.1 Read MissHit

CPU对一个可CACHE的外部内存产生读请求,如果在L1(可能是L1PL1D)发生Miss,再如果这个地址在L2 CACHE中也Miss,那么对应行被读入到L2 CACHELRU位决定哪个WayLine Frame被定位取代,如果这个Line Frame包含Dirty数据,它首先在新的行去进来之前被writeback到外部内存(如果这个Line也包含在L1D中,则L1D中的这个Line首先在L2这一行送到外部内存之前被writebackL2),形成的L1行(包含请求的地址)被送到L1L1存储这行数据,并最终把它送给CPU。之后,如果新的Line代替的是一个Dirty行,则这行写到L2 CACHE中。从这个过程我们发现L2L1 CACHE是一致的。

         如果L2命中,则对应行直接送到L1

         对于不可CACHE的外部内存区域,请求的数据简单地直接由外部内存送到CPU,不会存储在任何CACHE中。

2.2 Write MissHit

         CPU对外部可CACHE的内存进行写请求,这个数据地址在L1DMiss,于是通过Write buffer送到L2,如果L2检测到这个地址是Miss,对应的L2 CACHE Line从外部内存取进来,然后更新。LRU位决定哪个WayLine Frame被定位取代,如果这个Line Frame包含Dirty数据,它首先在新的行去进来之前被writeback到外部内存。注意这个行不会存储在L1D,所以如果在L1DMiss,因为L1D是仅read-allocate的,绝对不会因为写操作而修改CACHE内容。当然如果被L1D命中,则直接修改L1D内容。

         如果L2命中,直接修改L2

         对于不可CACHE的外部内存区域,请求的数据简单地直接写到外部内存,不会存储在CACHE中。

  评论这张
 
阅读(420)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016