cache基础

cache是系统中的一块快速SRAM,价格高,但是访问速度快,可以减少CPU到main memory的latency。

cache中的术语有:

  1) Cache hits,表示可以在cache中,查找到相应地址的entry。

  2) Cache Miss,表示在cache中,找不到相应地址的entry。

  3) Snoop,cache不断监视transaction的地址线,来不间断的检查地址地址是否在cache中

  4) Snarf,从main memory中读出数据,同时更新cache中的旧值,称为Snarf

  5) Dirty Data,cache中的数据,是最新的,但是main memory中的数据还未更新,称cache中的数据为dirty。

  6) Stale Data,main memory中的数据更新,但是有一个cache中的数据没更新,称该cache中的数据为stale

           Cache中的数据,已经更新,但是main memory中的数据没有更新,该main memory中的数据为stale

cache的架构,分为read architecture,和write policy。

  1) read分为,Look Aside和Look Through,

    Look Aside,main memory和cache都在同一时间,看到同一bus上的trans。

      优点:减少了cache miss下的 memory访问时间,

      缺点:在一个core访问main memory时,另一个core不能访问cache。

      

    Look Through,

  不管是哪一种的read architecture,cache miss之后,从main memory中得到的value都会被Snarf到cache中

  2) write policy,

    write-back时,将数据写到cache中,cache就像一个buffer,在evict一个新的cache entry时,才会将cache写会main memory。

       继而又分为write invalidate,其他CPU中的cache中的同一cache line invalid,

              缺点是,还会导致其他的CPU也可能发生cache miss;

              优点是,实现简单;

            write update,从main memory中更新其他CPU的cache line,

    write-Through时,读写性能要低一些,但是main memory中都是最新的value。  

  3) cache miss之后,是否allocate新的entry:

    read-allocated;

    write-allocated;   

cache block会被分为三个functional blocks,SRAM,TAG RAM,Cache Controller。 

  1) cache controller也会根据memory request是否是cacheable的来进行cache的寻址操作

  2) tag cache,主要存储VA,PA的地址索引。

Cache的organization:

  1) Cache Page,main memory中被等大小的分为的piece,称为cache pages

    cache page的大小,不但与总的cache size有关,与cache的organization也有关

  2) Cache line,cache page中更小的单元,cache缓存的最小单位。

    

  cache的组织结构有三种,

    1) 分为full-Associative,全相联映射。没有cache page的概念,每个cache line直接对应到随机的某个memory line中。

      缺点是,TAG ram会比较大,索引会比较慢,一般应用在cache较小的地方,如只有4k的cache。

      

    2) Direct-Map,直接映射,也称为1-way associative,main memory分为多个cache page,中的第n line,必须放在cache page的第n行。

      复杂度不高,但是,性能很差,常常需要evict其他的cache line,不够灵活

      

    3) N-way Set-Associative,组映射,比如2-way,4-way等,还有一个Set的概念,表示cache page的行数。

      每个组分为N份,N称为cache way。每个cache way内部的映射,就与direct mapping相同

      set到main memory的映射,随意,与full-associative相同

      所以一块main memory,首先随意映射一块地址到set中,然后每个set在平分为几个way,直接查找几个way即可。

        way中的line 映射,是一一对应的,不能够随意破坏行的顺序

      2 way的映射图:

      

      在使用N-Ways Set-Associative时,这是一种阵列的表现方式

        一个组里有N行,其实是N个set,但是set中的每一行与main memory分的cache page中的行数是一样的。

        cache首先被分为多个Set,S等于1时,也就是1个Set,这时,等同于Full-Associative

                    N等于1时,也就是说1个Way,这时,等同于Direct Mapped

       cache的大小等于cache_line_size * way_num * set_num

        

cache line的结构:

  1) data段存放cache line中的数据,大小通常为32byte或64byte,一个bus的wrap操作。

  2) status段,存放cache的状态,可以是MOESI等。

  3) Tag段,存放部分物理地址信息,和虚拟地址信息,(VA的Cache索引可以与VA的地址转换同时进行)

    

 

PA地址的cache索引,最低位是set的寻址,之后是way的寻址,再之后才是tag的寻址;

  

 

cache hier的问题:在不同的微架构中,L1与L2的关系可以是inclusive的,也可以是exclusive的,

  exclusive cache:在计算L2 cache容量的时候,需要累加L1 cache的容量。

  inclusive方式的优点,L2 cache可以使用更大的cache line,从而减少二级cache tags的大小,

      而exclusive的方式,cache line必须是相同的大小,来方便进行替换。

  inclusive方式的缺点,如果需要从cache中删除一条cache line,exclusive的方式只需要删除一次,

      inclusive可能需要删除L1 L2中的相应的cache line。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值