缓存内存

2025年3月17日 | 阅读 7 分钟

CPU 经常使用的主存中的数据或内容被存储在缓存存储器中,以便处理器可以更快地访问这些数据。每当 CPU 需要访问内存时,它首先检查缓存存储器。如果在缓存存储器中找不到数据,则 CPU 进入主存。

缓存存储器位于 CPU 和主存之间。缓存存储器的框图可以表示为

Cache Memory

缓存是内存层次结构中最快的组件,并且接近 CPU 组件的速度。

缓存存储器被组织成不同的块集,其中每个集合包含少量固定数量的块。

Cache Memory

如上图所示,集合用行表示。示例包含 N 个集合,每个集合包含四个块。每当访问缓存时,缓存控制器不会搜索整个缓存以查找匹配项。相反,控制器将地址映射到缓存的特定集合,因此仅搜索该集合以查找匹配项。

如果未在该集合中找到所需的块,则该块不存在于缓存中,并且缓存控制器不再搜索它。这种缓存组织称为集合关联,因为缓存被分成不同的块集合。由于每个集合包含四个块,因此缓存被称为四路集合关联。

缓存存储器的基本操作如下

  • 当 CPU 需要访问内存时,会检查缓存。如果缓存中找到了字,则从快速内存中读取它。
  • 如果 CPU 寻址的字在缓存中未找到,则访问主存以读取该字。
  • 然后,将一个刚刚访问的字块从主存传输到缓存存储器。块大小可以从一个字(刚访问的那个)到大约 16 个与刚访问的字相邻的字不等。
  • 缓存存储器的性能通常以称为命中率的数量来衡量。
  • 当 CPU 引用内存并在缓存中找到字时,则称其产生命中
  • 如果在缓存中未找到字,则它在主存中,并且计数为未命中
  • 命中次数除以 CPU 对内存的总引用次数(命中次数加未命中次数)的比率就是命中率。

内存级别

级别 1

这是一种存储数据的内存,这些数据被立即存储在 CPU 中并被接受。最常用的寄存器是累加器、程序计数器、地址寄存器等。

级别 2

这是最快的内存,具有更快的访问时间,数据被临时存储在此处以便更快地访问。

级别 3

这是计算机当前工作的内存。它体积小,一旦断电,数据将不再保留在此内存中。

级别 4

这是外部内存,速度不如主存快,但数据永久保存在此内存中。

缓存映射

为了缓存存储器的目的,使用了三种不同的映射类型,如下所示

  • 直接映射,
  • 关联映射
  • 集合关联映射

直接映射 -

在直接映射中,缓存由普通的高速随机存取存储器组成。缓存中的每个位置都保存数据,在缓存中的一个特定地址。这个地址由主存地址的较低有效位给出。这使得可以从存储器地址的较低有效位直接选择块。地址的剩余较高有效位与缓存中的数据一起存储,以完成对缓存数据的标识。

Cache Memory

如上图所示,来自处理器的地址被分成两个字段:标签和索引。

标签由地址的较高有效位组成,这些位与缓存中的数据一起存储。索引由地址的较低有效位组成。每当引用内存时,都会发生以下事件序列

  1. 首先使用索引访问缓存中的一个字。
  2. 读取存储在已访问字中的标签。
  3. 然后将此标签与地址中的标签进行比较。
  4. 如果两个标签相同,则表示缓存命中,并且从缓存字中读取所需的数据。
  5. 如果两个标签不相同,则表示缓存未命中。然后引用主存以找到它。

对于内存读取操作,然后将字传输到缓存中。可以将信息传递到缓存,并且可以同时进行此过程。

在直接映射缓存中,也可以有一行由一个以上的字组成,如下图所示

Cache Memory

在这种情况下,主存地址由一个标签、一个索引和一个块内的字组成。缓存中一行内的所有字都具有相同的存储标签

地址中的索引部分用于访问缓存,并且存储的标签与所需的标签地址进行比较。

对于读取操作,如果标签相同,则选择块内的字以传输到处理器。如果标签不相同,则首先将包含所需字的块传输到缓存。在直接映射中,主存中具有相同索引的对应块将映射到缓存中的同一块,因此只有具有不同索引的块才能同时位于缓存中。重要的是,缓存中的所有字都必须具有不同的索引。标签可能相同或不同。

集合关联映射 -

在集合关联映射中,缓存被分成一组块。集合中块的数量称为关联性或集合大小。每个集合中的每个块都有一个存储标签。此标签与索引一起完全标识该块。

因此,集合关联映射允许有限数量的块,具有相同的索引和不同的标签。

下图显示了一个四路集合关联缓存,其中每个集合中有四个块

Cache Memory

在此类型的缓存中,使用以下步骤从缓存中访问数据

  1. 使用来自处理器的地址的索引访问该集合。
  2. 然后,使用比较器将所选集合的所有标签与传入标签进行比较。
  3. 如果找到匹配项,则访问相应的位置。
  4. 如果未找到匹配项,则访问主存。

标签地址位始终被选择为主地址的最高有效位,块地址位是下一个有效位,字/字节地址位是最低有效位。集合关联缓存中所需的比较器的数量由集合中的块数给出。可以快速选择集合,并且可以在等待进行标签比较之前,同时读出该集合的所有块和标签。在标识标签后,可以选择相应的块。

全关联映射

在全关联类型的缓存存储器中,缓存中的每个位置都存储内存地址和数据。

Cache Memory

每当请求数据时,传入的内存地址都会使用关联内存的内部逻辑与所有存储的地址同时进行比较。

如果找到匹配项,则读出相应的内容。否则,如果在缓存中未找到地址,则访问主存。

这种方法被称为全关联映射方法,因为缓存数据与主存相关,方法是将内存地址和数据都存储在缓存中。在所有组织中,数据可以是一个以上的字,如下图所示。

Cache Memory

一行由四个字组成,每个字为 4 个字节。在这种情况下,地址的最低有效部分选择特定的字节,下一部分选择字,其余位构成地址。这些地址位与缓存中的地址进行比较。如果主存和缓存之间有足够的数据路径,则可以在一个事务中将整行传输到缓存和从缓存中传输。如果只有一条数据字路径,则必须在单独的事务中传输该行的字。

全关联映射缓存的主要优点在于它提供了最大的在缓存中保存块组合的灵活性,并避免了给定缓存的冲突。

它也存在一些缺点

  1. 由于关联存储器的高成本,这是一种昂贵的方法。
  2. 它需要一种替换算法,以便在发生缓存未命中时选择要删除的块。
  3. 这种算法必须在硬件中实现,以保持高速运行。

全关联机制通常由具有小型内部缓存的微处理器采用。


下一主题#