Cache工作原理-1

来源:互联网 发布:淘宝卖家提现需要多久 编辑:程序博客网 时间:2024/04/30 16:53

原帖:http://blog.csdn.net/chinacodec/archive/2008/11/29/3408560.aspx

 

2.4.1 cache 工作原理

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

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

 

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

 

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

 

  

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