未验证 提交 0d50774a 编写于 作者: L ljw 提交者: GitHub

CtrlBlock: add 1 cycle in redirect path (#582)

上级 1ef04a55
......@@ -226,8 +226,10 @@ class CtrlBlock extends XSModule with HasCircularQueuePtrHelper {
val flushReg = RegNext(flush)
redirectGen.io.exuMispredict.zip(io.fromIntBlock.exuRedirect).map({case (x, y) =>
x.valid := y.valid && y.bits.redirect.cfiUpdate.isMisPred
x.bits := y.bits
val misPred = y.valid && y.bits.redirect.cfiUpdate.isMisPred
val killedByOlder = y.bits.uop.roqIdx.needFlush(backendRedirect, flush)
x.valid := RegNext(misPred && !killedByOlder, init = false.B)
x.bits := RegEnable(y.bits, y.valid)
})
redirectGen.io.loadRelay := io.fromLsBlock.replay
redirectGen.io.flush := flushReg
......
......@@ -473,9 +473,9 @@ class Roq(numWbPorts: Int) extends XSModule with HasCircularQueuePtrHelper {
val misPredWb = Cat(VecInit((0 until numWbPorts).map(i =>
io.exeWbResults(i).bits.redirect.cfiUpdate.isMisPred && io.exeWbResults(i).bits.redirectValid
))).orR()
val misPredBlockCounter = Reg(UInt(2.W))
val misPredBlockCounter = Reg(UInt(3.W))
misPredBlockCounter := Mux(misPredWb,
"b11".U,
"b111".U,
misPredBlockCounter >> 1.U
)
val misPredBlock = misPredBlockCounter(0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册