管道的五个阶段有三种类型的危险: -
1)控制危险: - if / jump
2)数据危险: - RAW(写入后读取),WAR(读取后写入),WAW(写入后写入)
3)结构性危险: - 结构性危险是指两条指令可能同时尝试使用相同的资源(如wiki)
缓存未命中的危险类型是什么?
答案 0 :(得分:3)
将危险视为错误预测 - 假设没有冲突,管道推测性地推进每个周期。在您描述的情况下可能是错误的 - 如果下一阶段来自错误的程序计数器/ inst指针,或者计算源未及时更新,或者某些资源未及时准备好。 现在,在这个分类中通常不考虑缓存未命中,可能是因为它是特定于实现的。你可以对变量延迟执行说同样的话。您没有准备好数据,因此您只是停滞不前,这里没有使用陈旧数据或从错误路径获取虚假代码的实际风险。 请注意,内存访问仍然可以是RAW(在这种情况下,在存储后加载),并且计数为数据危险,就像寄存器绑定的RAW一样。