1

在火箭核心旁路逻辑

 val bypass_sources = IndexedSeq(
(Bool(true), UInt(0), UInt(0)), // treat reading x0 as a bypass
(ex_reg_valid && ex_ctrl.wxd, ex_waddr, mem_reg_wdata),
(mem_reg_valid && mem_ctrl.wxd && !mem_ctrl.mem, mem_waddr, wb_reg_wdata),
(mem_reg_valid && mem_ctrl.wxd, mem_waddr, dcache_bypass_data))

ex_ctrl.wxdmem_ctrl.wxd代表什么?

4

1 回答 1

1

据我了解,wxd设置为将值写入寄存器的指令,即具有结果值,因此写入寄存器文件。一些相当简单的解码逻辑(例如测试 R 型指令)识别每条指令是否是这样的编写器。

同样据我了解,ex_ctrlmem_ctrl分别引用其管道阶段中的指令 ex 和 mem -ex_ctrl.wxd当 ex 阶段中的指令是写入寄存器的指令时设置(即使它不会执行写入操作,直到wb阶段)。


背景

火箭微架构暂停读取协处理器结果——因为读取协处理器结果意味着写入处理器寄存器,因此也写入处理器的寄存器文件——当wxd在 wb 流水线阶段为指令断言时,处理器指令优先于协处理器指令。协处理器结果值仅在设置为 false 时才传输到处理器寄存器文件wxd中(意味着处理器指令不会写入)。

这种机制限制了写入寄存器文件所需的端口数量。

于 2018-11-15T23:10:48.117 回答