rocketcore 中的 "wxd" 是什么?
what is "wxd" in rocketcore?
在火箭核心旁路逻辑中
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.wxd和mem_ctrl.wxd分别代表什么?
据我了解,wxd
是为一条指令设置的,该指令将值写入寄存器,即具有结果值,因此写入寄存器文件。一些相当简单的解码逻辑(例如测试 R 型指令)识别每条指令是否是这样的编写器。
据我了解,ex_ctrl
和 mem_ctrl
分别指的是它们的流水线阶段 ex 和 mem 中的指令——所以当指令在ex 阶段是写入寄存器的阶段(即使直到 wb 阶段它才会写入)。
背景
火箭微架构暂停读取协处理器结果——因为读取协处理器结果意味着写入处理器寄存器,所以也写入处理器的寄存器文件——当 wxd
中的指令被断言时wb 流水线阶段,使处理器指令优先于协处理器指令。当 wxd
设置为 false(意味着处理器指令不会写入)时,协处理器结果值仅传输到处理器寄存器文件。
此机制限制了写入寄存器文件所需的端口数。
在火箭核心旁路逻辑中
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.wxd和mem_ctrl.wxd分别代表什么?
据我了解,wxd
是为一条指令设置的,该指令将值写入寄存器,即具有结果值,因此写入寄存器文件。一些相当简单的解码逻辑(例如测试 R 型指令)识别每条指令是否是这样的编写器。
据我了解,ex_ctrl
和 mem_ctrl
分别指的是它们的流水线阶段 ex 和 mem 中的指令——所以当指令在ex 阶段是写入寄存器的阶段(即使直到 wb 阶段它才会写入)。
背景
火箭微架构暂停读取协处理器结果——因为读取协处理器结果意味着写入处理器寄存器,所以也写入处理器的寄存器文件——当 wxd
中的指令被断言时wb 流水线阶段,使处理器指令优先于协处理器指令。当 wxd
设置为 false(意味着处理器指令不会写入)时,协处理器结果值仅传输到处理器寄存器文件。
此机制限制了写入寄存器文件所需的端口数。