Cache工作原理-3

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

 

2.4.3 实例:80486处理器片内cache

  随着半导体集成电路工艺水平的提高,从Intel 80486处理器开始,cache的一部分从处理器外进入处理器内,80486有一个8KB容量的片内cache,用于高速缓存指令和数据,这称为级1 cache;还可支持一个主板上更大容量的cache即级2 cache。这里简要介绍80486处理器片内cache的组织结构。
  这个片内cache是四路组相联结构,有128组,每组4行,每行16字节,容量为128×4×16B=8KB。使用32位物理地址寻址,其中最低4位(W4)用于查找块(行)中的字节;块号域为28位(s28),其中低7位作为组号(r-d=7),用于在cache128组中查找特定组;剩下的21位(s-d21)用于与特定组中4行的标记(tag)进行比较,以判测是否命中。即,每行除16字节的数据外,还有一个21位的标记,显然标记的最低两位为路号,作为标记,也是因此,在填入新行时可选择同组四路的任意无效行。每行还有1位的有效位,此位为0表示该行数据无效,为1表示有效。开机上电时, cache所有行的有效位均清为零,以后随着主存块拷贝进来,相应行的有效位置1。若某行的内容作废或换出,其有效位清零;有时需要"清洗"cache时,所有的有效位全清零。每组4行共用3位的LRU位。于是,四路组相联的cache呈现出如图233所示的4个存储体逻辑结构。

  当一个主存块拷贝到此cache时,首先以它的内存地址的组号为索引找到特定组,然后检查该组的4个有效位是否有的为0,若有则将主存块拷贝到此行,相应的有效位置1。若该组4行都是有效行,那么就要先换出一行再拷贝。80486片内cache采用的替换算法是一种伪(pseudo LRU算法。
  一组4L0L1L2L3共用3LRUr0,r1,r2。如果最近访问的是L0L1,则r0位置1;否则(最近访问的是L2L3),则r0位置0。在L0L1之间,若最近访问的是L0,则r11;否则,r10。在L2L3之间,若最近访问的是L2,则r21;否则,r20。以上建立的r0r1r2三位标记,可使我们按如下规则替换此组的一个有效行:
  若r0=0r1=0,则替换L0
  若r0=0r1=1,则替换L1
  若r0=1r2=0,则替换L2
  若r0=1r2=1,则替换L3
  复位或清洗时, cache全部的LRU位都清为零。