cache基本知识培训教程[1]
cache基本知识培训教程[1]
学习目标:
掌握全相联映象、直接映象以及组相联映象的思想和特点;
理解路数和组数的概念及其关系;
掌握在各种映象规则的情况下Cache的查找方法;
掌握随机法、先进先出、LRU 等替换算法;
理解Cache对“写”操作的处理方法。
正文:
4.2.1 cache基本知识
如前所述,为了填补 CPU 和主存在速度上的巨大差距,现代计算机都在 CPU 和主存之间设置一个高速、小容量的缓冲存储器 Cache 。 Cache 对于提高整个计算机系统的性能有重要的意义,几乎是一个不可缺少的部件。Cache 是按块进行管理的。 Cache 和主存均被分割成大小相同的块。信息以块为单位调入 Cache 。相应地, CPU 的访存地址被分割成两部分:块地址和块内位移,如下所示:
主存块地址用于查找该块在 Cache 中的位置,块内位移用于确定所访问的数据在该块中的位置。
4.2.1映象规则
一般来说,主存容量远大于 Cache 的容量。因此,当要把一个块从主存调入 Cache 时,就有个如何放置的问题。这就是映象规则所要解决的。映象规则有以下三种。
1. 全相联映象
全相联是指主存中的任一块可以被放置到 Cache 中的任意一个位置的方法。如图4.2.1所示。
实际的 Cache 常包含几百个块,而主存则一般包含上百万个块。
2. 直接映象
直接映象是指主存中的每一个块只能被放置到 Cache 中唯一的一个位置,如图4.2.2所示。图中带箭头的虚线表示映象关系。
一般地,对于主存的第 i 块(即块地址为 i ),设它映象到 Cache 的第 j 块,则
j =i mod ( M )
其中M为 Cache 的块数。
设 M = 2m,则当表示为二进制数时,j 实际上就是 i 的低 m 位,如下所示:
因此,可以直接用主存块地址的低 m 位去选择直接映象 Cache 中的相应块。
3. 组相联映象
组相联是指主存中的每一块可以被放置到 Cache 中唯一的一个组中的任何一个位置(Cache 被等分为若干组,每组由若干个块构成)。
组相联是直接映象和全相联的一种折衷:一个主存块首先是映象到唯一的一个组上(直接映象的特征),然后这个块可以被放入这个组中的任何一个位置(全相联的特征)。组的选择常采用位选择算法,即:若主存第 i 块映象到 Cache 的第 k 组,则
k =i mod ( G )
其中 G 为 Cache 的组数。
设 G = 2g,则当表示为二进制数时,k 实际上就是 i 的低 g 位,如下所示:
因此,可以直接用主存块地址的低 g 位去选择组相联Cache中的相应组。这里的低 g 位以及上述直接映象中的低 m 位通常称为索引。
如果每组中有 n 个块(n=M/G),则称该映象规则为 n 路组相联。
n 的不同取值构成了一系列不同相联度的组相联。直接映象和全相联实际上是组相联的两种极端情况。表4.2中列出了各种情况下,路数 n 和组数 G 的取值。表中 M 为 Cache 的块数。
非常好我支持^.^
(2) 18.2%
不好我反对
(9) 81.8%
相关阅读:
- [电子说] ARM9处理器从哪些方面保证了FIQ异常响应的快速性? 2023-10-19
- [电子说] Python 中怎么来实现类似 Cache 的功能 2023-10-17
- [电子说] Cache工作原理讲解 Cache写入方式原理简介 2023-10-17
- [电子说] 深入理解Armv9 DSU-110中的L3 cache 2023-10-11
- [电子说] 在组相联cache中,用于替换cache line的算法有哪些? 2023-10-08
- [电子说] Linux性能优化:Cache对性能的影响 2023-10-04
- [电子说] Linux内存泄漏该如何去检测呢? 2023-09-21
- [电子说] 如何在Rust中使用Memcached 2023-09-19
( 发表人:admin )