高速缓存器cache,三种关联方式——全相关联映射/直接关联映射/组关联映射

cache-主存体系

  1. cache和主存,cache使用SRAM构成的,速度快容量较为小但是价格昂贵;主存/内存使用DRAM构成的,速度较慢但是容量且价格便宜;
  2. 所以使用cache-主存体系来使得速度接近cache而容量等于主存且价格较为便宜注意是容量等于主存而不是大于,因为,cache里边的内容都是主存的拷贝,所以并没有扩充容量;
  3. cache-主存体系的设计思想依据:程序的时间局部性和空间局部性;
  4. 什么是时间局部性?程序被访问后的某一段时间内还可能被访问,比如循环冒泡排序等;
  5. 什么是空间局部性?CPU访问某个存储单元后还可能访问它的相邻存储单元;
  6. cache对于CPU来说是透明的,对于CPU来说,感觉上还是在直接访问主存,可以用如下图来表示:
    高速缓存器cache,三种关联方式——全相关联映射/直接关联映射/组关联映射_第1张图片

CPU对cache 和 主存的访问都是按字节访问的,但是cache 对 主存的访问时按整块进行的;
如果CPU访问的内容不在cache ,则CPU直接访问主存的存储单元,同时把这一块放在cache中,那么下一次再访问时访问cache的概率会增加;(目的就是进肯能让CPU的访问尽可能在cache中完成);

cache和块

  1. 块就是把把一些相邻的存储单元放在一块,通常以2n个存储单元为一个块,并且cache 和 主存的块要对齐;
  2. 当块分好之后,块号的变化是一致的,此时CPU访问的地址可以写成块号+块的偏移地址的形式;
  3. CPU给定存储单元的地址之后,低位(块的偏移地址)给定后,就确定了在什么地方,因为主存中的块可能放在cache中的不同位置,但是无论在哪,只要找到块号,然后直接加上偏移地址就是要访问的地址;(就是建立了cache和主存的块号的映射)

三种关联方式(cache到主存的映射方式)

根据主存中“块”在Cache中“行”的放置限制和地址映射方法,可以分为:

全相关联映射:主存中的一块可以放置到Cache的任意行
直接关联映射:主存中的一块只能放置到Cache的特定行
组相关联映射:主存中的一块只能放置到Cache的特定组,在组内可以放置到任意行

1. 全相关联映射;

高速缓存器cache,三种关联方式——全相关联映射/直接关联映射/组关联映射_第2张图片
如图假设图中有cache有8行,内存中美分为256块,cache的前半部分是标记(8位)正好对应内存中的块号,而后半部分则是每一块中的所有地址(标记+偏移地址)构成的存储单元;看下一张图你就明白了:
高速缓存器cache,三种关联方式——全相关联映射/直接关联映射/组关联映射_第3张图片
全相关联映射的优点是:冲突率小,cache的利用率高,缺点是比较器难实现,需要一个访问速度很快代价很高的相连存储器(多路比较器);==因为CPU给定存储单元的地址之后,需要首先拿CPU给定地址记为add1的块号和所有的cache的块号进行比较,如果命中(就是cache中存在和add1的块号相等的标记),那么就把块号+便宜地址(add1的偏移地址部分)就得到了在cache中的位置;否则的话就是未命中,未命中的话地址必定存在内存中;于是使用同样的方法去遍历,然后找到(一定能找到);

2.直接关联映射

高速缓存器cache,三种关联方式——全相关联映射/直接关联映射/组关联映射_第4张图片
采用类似哈希表的思想对内存地址到cache中的地址进行映射;
采用如下的公式进行映射:cache放置的行号==内存块号%Cache行数;映射后内存中的某块放在cache中的哪一行取决于低三位(本例中是第三位,实际上加入cache有n行,应该是低log2(n)位);
由于在这种映射的方式下,每行放置的块号的后三位是确定的(都是一样的比如00000 000 和 00001 000)所以cache中的标记只需要存放5位即;下图中的r=行号(000~~111)S表示块号,字就是地址偏移量,S和字和上边的是相同的,只不过新加了r为行号;
高速缓存器cache,三种关联方式——全相关联映射/直接关联映射/组关联映射_第5张图片
所以当CPU给出一个存储单元的地址之后,这个地址即为add1,取出add1的tag段,就是块号-第三位,放入比较器中和cache中的标记(5位,也是块号-3位)进行比较如果存在的话就找到了,在加上偏移地址就是cache中的地址,一共是s-r+偏移地址,因为不需要行号,本身cache中也没存,但是如果没匹配上,就需要加上行号r再去主存中找;
高速缓存器cache,三种关联方式——全相关联映射/直接关联映射/组关联映射_第6张图片

3.组关联映射

组关联映射算是上述两种方案的一种折中方案;同直接映射,只不过是块号的低位映射到cache的组号,cache组内可以任意放置;
映射公式如图中:cache中放置的组号==内存块号%cache组数;
高速缓存器cache,三种关联方式——全相关联映射/直接关联映射/组关联映射_第7张图片

高速缓存器cache,三种关联方式——全相关联映射/直接关联映射/组关联映射_第8张图片

类似直接映射,cache的标记位存放6位,然后记为CPU给定地址为add1,从add1中取出块号-组号和cache中的标记对比,如果存在,就在cache中对应的组再加上偏移地址,就找到了地址,否则,不存在,add1的块号-组号再加上组号+偏移地址后再在主存中寻找改地址;

高速缓存器cache,三种关联方式——全相关联映射/直接关联映射/组关联映射_第9张图片

你可能感兴趣的:(计算机组成原理,单片机,计算机组成原理,高速缓存器,cache)