向量 FOF 指令单元 VfofBuffer
功能描述
处理并写回向量 Fault only frist (fof) 指令的修改 VL 寄存器的 uop。对于 fof 指令,我们会额外拆分出单独的负责修改 VL 寄存器的 uop。目前,我们对 fof 指令采取非推测执行的方式。
特性 1:收集访存 uop 写回信息
VfofBuffer 负责收集 fof 指令访存 uop 的写回信息,且只有一项。如果需要更新 VL 寄存器,则更新 VfofBuffer 中维护的信息。 当一条 Fault only frist 指令被发射时,除了正常的进入 VLSplit 之外,还会在 vfofBuffer 中分配一项。 这一项会监听来自 VLMergeBuffer 的同 RobIdx 的 uop 的写回,并不会阻止这些 uop 写回后端,只是会收集这些 uop 的相关元数据来更新维护自身的 VL。 VLMergeBuffer 写回至后端的 uop 会携带异常信息与 VL 等,我们需要根据这些写回的信息来判断这个 uop 是否应该导致 VL 发生变化,如果需要 VL 发现变化,则与 VfofBuffer 中维护的 VL 比较,更新为更小的 VL。
特性 2:写回修改 VL 寄存器的 uop
VfofBuffer 会在该指令的所有访存 uop 写回之后,再写回修改 VL 寄存器的 uop。 即使不需要修改 VL 寄存器,该 uop 依然会写回,只是不会使能写入信号。
整体框图
单一模块无框图。
主要端口
| 方向 | 说明 | |
|---|---|---|
| redirect | In | 重定向端口 |
| in | In | 接收来自 Issue Queue 的 uop 发射 |
| mergeUopWriteback | In | 接收 VLMergeBuffer 写回的数据 uop |
| uopWriteback | Out | 写回修改 VL 的 uop 至后端 |
接口时序
接口时序较简单,只提供文字描述。
| 说明 | |
|---|---|
| redirect | 具备 Valid。数据同 Valid 有效 |
| in | 具备 Valid、Ready。数据同 Valid && ready 有效 |
| mergeUopWriteback | 具备 Valid、Ready。数据同 Valid && ready 有效 |
| uopWriteback | 具备 Valid、Ready。数据同 Valid && ready 有效 |