Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/zh/frontend/IFU/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ PreDecode 模块接受 F2 切分后的 17 个 2 字节初始指令码,一方

当 FTQ 内未缓存足够预测块时,IFU 可能直接使用简单分支预测器提供的预测地址进行取指,这种情况下,当精确预测器发现简单预测器错误时,需要通知 IFU 取消正在进行的取指请求。具体而言,当 BPU 的 S2 流水级发现错误时,需要冲刷 IFU 的 F0 流水级;当 BPU 的 S3 流水级发现错误时,需要冲刷 IFU 的 F0/F1 流水级(BPU 的简单预测器在 S1 给出结果,最晚在 S3 进行 overriding,因此 IFU 的 F2/F3 流水级一定是最好的预测,不需要冲刷;类似地,不存在 BPU S2 到 IFU F1 的冲刷)。

IFU 在收到 BPU 发送的冲刷请求时,会将 F0Ff1 流水级上取指请求的指针与 BPU 发送的冲刷请求的指针进行比较,若冲刷的指针在取指的指针之前,说明当前取指请求在错误的执行路径上,需要进行流水线冲刷;反之,IFU 可以忽略 BPU 发送的这一冲刷请求。
IFU 在收到 BPU 发送的冲刷请求时,会将 F0、F1 流水级上取指请求的指针与 BPU 发送的冲刷请求的指针进行比较,若冲刷的指针在取指的指针之前,说明当前取指请求在错误的执行路径上,需要进行流水线冲刷;反之,IFU 可以忽略 BPU 发送的这一冲刷请求。

### 分支预测错误提前检查

Expand Down