FTQ向后端发送取指目标
文档概述
pc取值目标会发给后端pc mem让他自己进行存储,之后从自己的pc mem取指,此外,最新的FTQ项和对应的跳转目标也会发给后端。
怎样算是一个最新的FTQ项,BPU最新发送的预测块可以是最新的FTQ项,其次,重定向发生时,需要回滚到发生错误预测之前的状态,从指定的FTQ项开始重新开始预测,预译码等等,这也可以是被更新的最新的FTQ项。
术语说明
模块功能说明
流程
1.发送取值目标到pc mem
- 发送时机:bpu_in_fire,即BPU向前端发送有效预测信息,或者重定向信息的时候。以此为基础之后的第二个周期,进行发送,通过将toBackend接口的pc_mem_wen设置为true的方式指明开始发送
- 接口信号列表:
- pc_mem_wen:设置为true
- pc_mem_waddr:接收bpu_in_fire那个周期BPU发送的ftqIdx
- pc_mem_wdata:接收bpu_in_fire那个周期,FTQ读取的ftq_pc_mem中的取指目标
2.更新最新的FTQ项
- 发送时机:
- 最新的FTQ项可能是由BPU写入最新预测信息造成的,发送取值目标到pc mem也是因为BPU写入最新预测信息才写入的,如果是这种情况造成的,更新FTQ项和写入pc mem的时机是一致的。
- 此外发生重定向时,也会进行状态回滚更新FTQ项,标志是后端接口fromBackend的重定向redirect信号有效,或者写入BPU的接口toBPU的redirctFromIFU拉高说明当前有来自IFU的重定向
- (注释(可忽略)IFU重定向信号生成有两个周期,可以认为第一个周期预译码信息中missoffset有效说明IFU重定向发生,也可以认为第二个周期redirctFromIFU拉高说明重定向发生,此处取后者)。
- 同样是向toBackend中写入
- 接口信号列表:
- newest_entry_en:前面说的发送时机到来时,再延迟一个周期达到真正的写入时机,这时才拉高信号
- newest_entry_ptr:发送时机到来时的newest_entry_ptr,在真正的写入时机写入
- newest_entry_target:发送时机到来时的newest_entry_target
newest_entry_ptr,newest_entry_target这几个都是同名的内部信号,如之前所说,BPU新的写入,重定向等等都会对最新FTQ项进行新的安排,在相应的文档中,对其生成方式做具体的描述。
接口说明
顶层IO |
作用 |
toBackend |
发送取指令目标,让后端进行储存 |
测试点总表
序号 |
功能名称 |
测试点名称 |
描述 |
1 |
SEND_PC_TO_BACKEND |
SEND_PC |
发送取值目标到pc mem |
2 |
SEND_PC_TO_BACKEND |
UPDATE_NEWEST |
更新最新的FTQ项 |