高速缓存是一种小型、快速的内存,可容纳内存整体内容的一小部分。它的数学模型由它的大小、集合数、关联性、块大小、子块大小、获取策略和写入策略定义。缓存层次结构中的任何节点都可以包含一个公共缓存或两个单独的用于指令和/或数据的缓存。
- 一级缓存:
这是最靠近 CPU 的缓存,称为 L1 缓存。如果在这个缓存中有数据和指令的分割,它们被称为指令的 L1I 和数据的 L1D。 - 二级缓存:
当全局查看 CPU 和主内存之间的缓存位置时,这也称为二级缓存。 - 主存储器:
这是最后一层记忆。这是 CPU 查找数据的最后位置。 - 内存层次结构:
当 CPU 和主存之间只有一个缓存时,很难称之为多层缓存层次结构。要调用它,CPU 和主存之间通常应该有两个缓存。靠近 CPU 的缓存称为上游和/或前驱缓存,靠近主存的缓存称为下游和/或后继缓存。 - 堵塞 :
有地址标记的数据单元称为块。它也被称为一条线。这个标签告诉程序主存的哪一部分占用了缓存。 - 放 :
这是并行检查标签的块的集合。如果只有一组缓存是关联的。通常发生的事情是一组连续的地址位选择可以驻留在其中的内存块。 - 关联性:
集合中的块数称为缓存结构的关联度。如果数字为 1,则它是直接映射缓存。 - 子块:
它是与有效位相关联的数据单位。它的大小小于等于块大小。 - 获取大小:
可以从下一个内存级别获取的最大内存量称为获取大小。它是子块大小的倍数,可以小于或大于块大小。 - 读 :
对高速缓存的读取请求是在给定地址处呈现预定义长度的连续字集合的请求。 CPU 生成指令获取和加载引用,两者都被读取。 - 写 :
它包含一个地址和一个预定义数量的子块和一个掩码。 - 读小姐:
它是对未完全包含在缓存中的数据的读取请求。当适当集合中没有任何标签与请求的高阶地址位匹配时,就会发生未命中,或者您可以在 Reas 中看到,当匹配中的一个或多个请求子块时,高阶位请求未命中块无效。 - 本地(读取)未命中率:
缓存中的读取未命中数除以对该缓存的读取请求总数。 - 全局(读取)未命中率:
对该缓存的读取未命中数除以 CPU 生成的读取请求数。 - 独奏(读取)未命中率:
当它是层次结构中的唯一缓存时,该缓存在内存层次结构中的未命中率。 - (本地)读取流量比率:
这是从层次结构中的下一个级别提取的字数除以从缓存中提取的字数。全局流量比率是相同的分子除以 CPU 获取的字数。 - (本地)写入流量比率:
这是缓存写出的字数与上一级写出的字数之比。 - 获取策略:
基本的选择是直写和回写,但它们必须伴随着写缓冲(宽度和深度)的选择和处理写未命中的策略。 - 更换策略:
最常见的选择是随机和最近最少使用 (LRU)。对于直接映射缓存,每组只有一个块,所以别无选择。