冒险 (计算机体系结构)

编辑
本词条由“匿名用户” 建档。

在中央处理器(CPU)设计领域,当下一条指令无法在随后的时钟周期内执行时,CPU微体系结构中的指令流水线出现问题,并可能导致计算结果不正确。三种常见类型的风险是数据风险、结构风险和控制风险(分支风险)。 有几种方法用于处理危险,包括管道停顿/管道冒泡、操作数转发,以及在乱序执行的情况下,记分牌法和Tomasulo算法。 流水线处理器中的指令在多个阶段执行,因此在任何给定时间,多个指令在流水线的不同...

冒险(计算机系统结构)

编辑

中央处理器 (CPU) 设计领域,当下一条指令无法在随后的时钟周期内执行时,CPU 微体系结构中的指令流水线出现问题,并可能导致计算结果不正确。 三种常见类型的风险是数据风险、结构风险和控制风险(分支风险)。

有几种方法用于处理危险,包括管道停顿/管道冒泡、操作数转发,以及在乱序执行的情况下,记分牌法和 Tomasulo 算法。

背景

编辑

流水线处理器中的指令在多个阶段执行,因此在任何给定时间,多个指令在流水线的不同阶段处理,例如获取和执行。 有许多不同的指令流水线微架构,指令可能会乱序执行。 当这些同时发生的(可能是无序的)指令中的两个或多个发生冲突时,就会发生危险。

类型

编辑

数据危害

当表现出数据依赖性的指令在流水线的不同阶段修改数据时,就会发生数据冒险。 忽略潜在的数据危害会导致竞争条件(也称为竞争危害)。

先写后读(RAW)

写后读 (RAW) 数据冒险是指指令引用尚未计算或检索的结果的情况。 之所以会发生这种情况,是因为即使一条指令是在前一条指令之后执行的,但前一条指令仅通过流水线进行了部分处理。

xxx条指令计算要保存在寄存器 R2 中的值,第二条指令将使用该值计算寄存器 R4 的结果。 但是,在流水线中,当为第二次操作取操作数时,xxx次的结果还没有保存,因此会产生数据依赖。

指令 i2 存在数据依赖性,因为它依赖于指令 i1 的完成。

读后写(WAR)

(i2 尝试在目标被 i1 读取之前写入目标)读取后写入 (WAR) 数据冒险表示并发执行存在问题。

在任何情况下 i2 有可能在 i1 之前完成(即并发执行),必须确保在 i1 有机会获取操作数之前寄存器 R5 的结果不会被存储。

写后写(WAW)

(i2 尝试在 i1 写入操作数之前写入操作数)并发执行环境中可能会出现写后写入 (WAW) 数据冒险。

i2 的回写 (WB) 必须延迟到 i1 完成执行。

结构性危害

当已经在流水线中的两条(或更多条)指令需要相同的资源时,就会发生结构性风险。 结果是对于一部分流水线,指令必须串行执行而不是并行执行。 结构性危害有时被称为资源危害。

示例:多条指令准备进入执行指令阶段且只有一个ALU(算术逻辑单元)的情况。 解决此类资源危险的一种方法是增加可用资源,例如将多个端口连接到主存储器和多个 ALU(算术逻辑单元)单元。

控制冒险(分支冒险或指令冒险)

当流水线对分支预测做出错误的决定并因此将指令带入流水线而随后必须丢弃时,就会发生控制冒险。 术语分支风险也指控制风险。

冒险 (计算机体系结构)

消除危害

编辑

通用

管道冒泡

管道冒泡,也称为管道中断或管道停顿,是一种排除数据、结构和分支危险的方法。 当获取指令时,控制逻辑确定是否可能/将要发生危险。 如果这是真的,那么控制逻辑不会向流水线中插入任何操作 (NOP)。 因此,在下一条指令(会导致危险)执行之前,前一条指令将有足够的时间完成并防止危险。 如果 NOP 的数量等于流水线中的级数,则处理器已清除所有指令并且可以安全地继续执行。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/196069/

(1)
词条目录
  1. 冒险(计算机系统结构)
  2. 背景
  3. 类型
  4. 数据危害
  5. 先写后读(RAW)
  6. 读后写(WAR)
  7. 写后写(WAW)
  8. 结构性危害
  9. 控制冒险(分支冒险或指令冒险)
  10. 消除危害
  11. 通用
  12. 管道冒泡

轻触这里

关闭目录

目录