【问题标题】:In which hazard does cache miss fall into?缓存未命中属于哪种危害?
【发布时间】:2013-05-27 22:07:12
【问题描述】:

管道的五个阶段存在三种危害:-

1) 控制危险:- if/jump

2) 数据危害:- RAW(read after write)、WAR(write after read)、WAW​​(write after write)

3) 结构性风险:- 结构性风险是指两条指令可能试图同时使用相同的资源(如wiki

缓存未命中属于哪种类型的危害?

【问题讨论】:

  • 很好的概述here。缓存未命中本身并不是危险,尽管缓存驱逐/一致性可能被视为类似问题。
  • 感谢Brett 的回复。但是缓存未命中会造成停顿,对吧?让我们在 ld 和 st 的情况下说。
  • 缓存是内存系统的一部分,在流水线之外,从流水线的角度来看,它只是具有正常(长)访问时间的内存访问,其中缓存命中只是内存访问更快。

标签: assembly cpu-architecture mips32 cpu-cache


【解决方案1】:

将危险视为错误预测 - 假设没有冲突,管道会推测性地推进每个周期。在您描述的情况下,这可能是错误的 - 如果下一阶段来自错误的程序计数器/inst-pointer,或者计算源没有及时更新,或者某些资源没有及时准备好。 现在,此分类法中通常不考虑缓存未命中,可能是因为它是特定于实现的。您可以对可变延迟执行说同样的话。你没有准备好数据,所以你只是停滞不前,这里没有使用过时数据或从错误路径获取虚假代码的实际风险。 请注意,内存访问仍然可能是 RAW(在这种情况下,在存储后加载),并且像寄存器绑定的 RAW 一样被视为数据危害。

【讨论】:

    猜你喜欢
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2011-08-04
    相关资源
    最近更新 更多