数据旁路(Data Bypassing)是什么?
数据旁路(Data Bypassing)是什么?
好的,这是一个非常核心的CPU微架构概念。数据旁路(Data Bypassing),也称为操作数转发(Operand Forwarding),是一种用于解决数据冒险(Data Hazard)、提升流水线效率的关键硬件优化技术。
为了彻底理解它,我们一步步来剖析。
1. 问题根源:数据冒险
首先,回忆一下经典的5级流水线:
- IF:取指令
- ID:指令译码 + 读取寄存器
- EX:执行操作
- MEM:访问内存
- WB:结果写回寄存器
现在考虑以下两条连续的指令:
ADD R1, R2, R3 // R1 = R2 + R3
SUB R4, R1, R5 // R4 = R1 - R5
问题来了:
ADD
指令的结果R1
在 WB 阶段才会被写回寄存器堆。SUB
指令在 ID 阶段就需要读取寄存器R1
的值。- 按照正常流程,当
SUB
在ID阶段读取R1
时,ADD
还处在EX或MEM阶段,新的R1
值尚