DSP

cache基础知识

2019-07-13 14:42发布

    为了填补 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 的块数。