缓存交互步骤和读取周期



我正在努力完全掌握缓存的工作原理。 假设我有一个 L1 缓存和 L2 缓存。

  1. CPU(主内存)为 L1 控制器提供内存地址。
  2. 一级缓存控制器确定缓存集、请求的缓存标记和块偏移量
  3. L1 缓存电路检查请求的标记是否在集合中
  4. 找不到 L1 缓存标记匹配项。

#2 是在这里发生还是在 L1 向 L2 发送内存地址之后?

在读取时间上,如果 L1 需要 x 个周期,L2 需要 y 个周期,主存储器需要 z 个周期。基本上,如果上述步骤发生,然后 L2 找到一个缓存标签匹配并将其发送回 L1,L1 将其发送到主,则需要多少个周期?当 L1 将其返回给 CPU 时,这算不算一个读取周期?

提前感谢您的帮助!

L1 可能在处理器中,但过程仍然相同。 处理器执行读取,例如,地址和读取/控制信号发出。 从地址中,L1缓存查找标签并确定命中/未命中。 如果是命中,则返回信息,如果未命中,则L1需要在其地址总线上出去,调整地址以使其与缓存行大小和地址对齐对齐。 L2 在高级别上执行与 L1 相同的操作,地址变成标签变成命中/未命中,如果未命中,则它将对齐/大小的缓存行提取放在其外部地址总线上,这重复,直到您击中答案(DRAM、外设等)。 当L2响应时,它将线路发送回L1,L1根据设计/设置规则保存线路,然后将它要求的数据/长度返回给处理器。 此时,根据设计和设置,L1 和 L2 包含相同的数据,理想情况下,L1 包含 L2 中的所有数据,L2 包含所有 L1 数据以及一些数据。 授予的不可缓存请求应通过,因此您可能会遇到导致 L1 不存储数据的 L2 命中。 此外,基于设计,不可缓存的请求可能会以原始处理器大小/形状传递到 L1 和/或 L2 的另一端,而不是与缓存行对齐和调整大小。

最新更新