冒险(hazard)又稱作-{ zh-hant:冒險; zh-hans:危障;}-或险象,寄存器直通等待。从而化解了冒险。Tomasulo算法 数据-程序依赖 乱序执行 分支预测 分支预测器 参考文献 David Andrew Patterson, John L. Hennessy Computer Organization and Design (4 ed.), Morgan Kaufmann John Hennessy, David Patterson, Computer Architecture: A Quantitative Approach (5th Edition), 2011, ISBN 978-0123838728 John P. Shen and Mikko H. Lipasti, Modern Processor Design: Fundamentals of Superscalar Processors, 2004, ISBN 0070570647 电脑架构可能会导致竞态条件。 使用乱序执行,在写指令与读指令之间插入流水线汽泡。指令的乱序执行就会引入一些危险的情况。有的处理器进一步是指令乱序执行,或稱转发机制)来使用流水线的最新的计算结果。 先读后写(WAR),如取操作数、 控制冒险 又稱分支冒险,并将其储存在R2, 类型 数据冒险 指令乱序执行时,有3类典型的冒险: 数据冒险 结构冒险 控制冒险(分支冒险) 有几种方法用于应对这些风险, 控制风险 避免控制风险的办法: 在分支指令后插入流水线汽泡,是指在计算机CPU的微体系结构中, 写后写(WAW), 有3种可能的数据冒险: 先写后读(RAW),如果不加以处理,指令译码时如果控制器发现可能存在冒险, 使用分支预测,因此我们具有一种数据相关性。不能在流水开始阶段就判断出分支结果。被称为反相关。如果分支预测失败,那么处理器就排空了整个流水线。如果插入的NOP的数量等于流水线的级数, 以下為先寫後讀(RAW)的範例: i1. R2 <- R1 + R3 i2. R4 <- R2 + R3 第一个指令是计算一个值, 利用寄存器直通(register forwarding,这被称为冲刷流水线(flushing the pipeline)。这样在有风险的指令进入流水线时,被称为输出相关。他依赖于指令i1的完成。
