Skip to content

Commit

Permalink
ifu fit 103 rtl change and doc fix
Browse files Browse the repository at this point in the history
  • Loading branch information
miceforrat committed Jan 13, 2025
1 parent 1beb156 commit a86b85e
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 76 deletions.
15 changes: 14 additions & 1 deletion documents/content/zh-cn/docs/98_UT/01_frontend/01_ifu/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ enqEnable为1表示这个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发送的这一冲刷请求。此外,比较的时候还需要注意flag的情况,flag是一个指示队列循环的指针,flag不同即在不同的“圈”上,此时反而是idx的值更小,ftqIdx才会更大


### 指令信息和误预测信息写回FTQ(WB阶段)
Expand Down Expand Up @@ -182,6 +182,8 @@ m\_waitLastCmt,之后只要之前所有的指令都已完成提交——或者

对于跨缓存行预测块,他们的mmio和pbmt状态应当等同。不匹配的错误应当只在后一个缓存行报告。

此外,如果当前pbmt为nc,则会跳过waitLastCmt和waitCommit状态。因为这些内存空间是幂等的,所以可以进行推测性取指。

### Trigger实现对于PC的硬件断点功能

该工作主要由FrontEndTrigger子模块完成。
Expand Down Expand Up @@ -218,6 +220,17 @@ FTQ会向IFU发送重定向请求,这通过fromFtq\.redirect完成,从而指
| level | 重定向等级 |
| ftq\_offset | ftq预测块中跳转指令的位置 |

此外,还有valid变量指示是否需要重定向。

#### fromBPUFlush

来自IFU的冲刷请求,这是预测错误引起的,包括s3和s2两个同构成员,指示是否在BPU的s3和s2流水级发现了问题,s3的详细结构如下

| 接口名 | 解释 |
| ----- | ---- |
| valid | 是否存在s3流水级冲刷要求 |
| ftqIdx | s3流水级请求冲刷的预测块的指针 |

#### toFtq\_pdWb 写回

| 接口名 | 解释 |
Expand Down
Loading

0 comments on commit a86b85e

Please sign in to comment.