提交 a2b3dd86 编写于 作者: L LinJiawei

Brq: fix replay bug

上级 a42f2d46
...@@ -182,7 +182,7 @@ class Brq extends XSModule { ...@@ -182,7 +182,7 @@ class Brq extends XSModule {
io.redirect.valid := commitValid && io.redirect.valid := commitValid &&
commitIsMisPred && commitIsMisPred &&
!io.roqRedirect.valid && !io.roqRedirect.valid &&
!(io.memRedirect.valid && io.redirect.bits.needFlush(io.memRedirect)) !io.redirect.bits.needFlush(io.memRedirect)
io.redirect.bits := commitEntry.exuOut.redirect io.redirect.bits := commitEntry.exuOut.redirect
io.out.valid := commitValid io.out.valid := commitValid
...@@ -238,13 +238,15 @@ class Brq extends XSModule { ...@@ -238,13 +238,15 @@ class Brq extends XSModule {
val ptr = BrqPtr(brQueue(i).ptrFlag, i.U) val ptr = BrqPtr(brQueue(i).ptrFlag, i.U)
when( when(
(io.redirect.valid && ptr.needBrFlush(io.redirect.bits.brTag)) || (io.redirect.valid && ptr.needBrFlush(io.redirect.bits.brTag)) ||
(io.memRedirect.valid && ptr.needBrFlush(io.memRedirect.bits.brTag)) (s.isWb && brQueue(i).exuOut.uop.needFlush(io.memRedirect))
){ ){
s := s_idle s := s_idle
} }
}) })
tailPtr := io.redirect.bits.brTag + true.B when(io.redirect.valid){ // Only Br Mispred reset tailPtr, replay does not
} // replay: do nothing tailPtr := io.redirect.bits.brTag + true.B
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册