Cache工作原理-1

来源:互联网 发布:淘宝商家怎么收款 编辑:程序博客网 时间:2024/04/30 19:39

 2.4.1 cache 工作原理

  图227给出一个位于CPU与主存之间的cache最基本的结构。cache容量与主存容量相比是很小的,差二、三个数量级,目前在主存容量配置是几十MB到几百MB的情况下,cache的典型值是8512KBcache的工作速度很快,一般是用SRAM,少数也有用高速DRAM组成的。cacheRAM外还要有必要的控制逻辑,集成在CPU芯片内的cacheL1 cache)由CPU提供它的控制逻辑,速度同于CPU速度。若cacheCPU芯片外(L2 cache),速度接近CPU,它的控制逻辑一般与主存控制逻辑合成在一起,称之为主存/Cache控制器,当然也有单独cache控制器的情况;我们先重点讨论数据的高速缓存。要注意的是,CPUcache之间的数据交换是以""为单位,而cache与主存之间的数据交换是以""为单位,一个块由若干字组成,是定长的,以体现"保存下级存储器刚才被存取过的数据及其邻近小范围的数据"这一概念。

  图227还示意了CACHE/主存系统的读操作原理,当CPU试图读取主存一个字时,发出此字内存地址同时到达cache和主存,此时cache控制逻辑依据地址的标记部分进行判断此字当前是否在cache中。若是(命中),此字立即递交给CPU,若否(未命中),则要用主存读取周期把这个字从主存读出送到CPU,与此同时把含有这个字的整个数据块从主存读出送到cache中。由于程序的存储器访问具有局部性,当为满足一次访问需求而取来一个数据块时,下面的多次访问很可能是读取此块中的其它字。cache的读操作流程示意于图228
  在流程图中特别应该注意的是:
  1 Cache和主存同时接收CPU的物理地址。
  2 物理地址的高端作为标记在cache的标记区检索,如有相同的标记即为命中(cache包含此字所在的块)。反之亦然。
  3 命中时由cache输出该字。
  4 未命中时由内存输出该字,且将此字所属块整体装入cache的一个相关的行。
  CACHE/主存系统结的写操作原理比读操作复杂,在244专题讨论。
  我们看到cache带来的性能改善,是基于程序存储访问的局部性(1ocality of refer- ence)原理。这个原理是说程序执行时对存储器的访问倾向于聚集性或成簇(Cluster)性,经过一段长的时间后簇可能发生转移,但很快程序又是主要对着新簇完成存储器访问。
  在一个程序执行期间,若Nc表示由cache完成存取的总次数,Nm表示由主存完成存取的总次数,那未可将命中率(hit ratioH定义成:

 

     则1-H为丢失率(miss ratio),或称未命中率,若以tc表示命中时的cache访问时间, tm表示未命中时的主存访问时间,则cache/主存系统的平均访问时间ta为:

  我们的目标是,希望以不太大的硬件投资能使cache/主存系统的平均访问时间ta越接近tc越好。若以e = tc / ta作为访问效率,则有:

  

式中r = tmtc表示主存慢于cache的倍率,由e =f ( r , H )的函数关系可以得出,r值太大效果不好。对于cache/主存系统,r值以510为宜。应该尽量提高命中率H H一般应不低于085,而且超过此值后eH迅速增长。命中率H首先与程序的行为有关系(不同的程序命中率不同),但也与cache

原创粉丝点击