提交 85670bac 编写于 作者: L Lingrui98

ras: should not push or pop when s3_redirect

上级 ba246ba1
......@@ -208,6 +208,9 @@ class BasePredictorIO (implicit p: Parameters) extends XSBundle with HasBPUConst
val s2_fire = Input(Bool())
val s3_fire = Input(Bool())
val s2_redirect = Input(Bool())
val s3_redirect = Input(Bool())
val s1_ready = Output(Bool())
val s2_ready = Output(Bool())
val s3_ready = Output(Bool())
......@@ -367,6 +370,7 @@ class Predictor(implicit p: Parameters) extends XSModule with HasBPUConst with H
.elsewhen(s2_fire) { s2_valid := false.B }
predictors.io.s2_fire := s2_fire
predictors.io.s2_redirect := s2_redirect
s3_fire := s3_valid
......@@ -375,6 +379,7 @@ class Predictor(implicit p: Parameters) extends XSModule with HasBPUConst with H
.elsewhen(s3_fire) { s3_valid := false.B }
predictors.io.s3_fire := s3_fire
predictors.io.s3_redirect := s3_redirect
io.bpu_to_ftq.resp.valid :=
......
......@@ -41,6 +41,9 @@ class Composer(implicit p: Parameters) extends BasePredictor with HasBPUConst wi
c.io.s2_fire := io.s2_fire
c.io.s3_fire := io.s3_fire
c.io.s2_redirect := io.s2_redirect
c.io.s3_redirect := io.s3_redirect
c.io.redirect := io.redirect
if (c.meta_size > 0) {
......
......@@ -172,8 +172,8 @@ class RAS(implicit p: Parameters) extends BasePredictor {
spec_ras.spec_new_addr := s2_spec_new_addr
// confirm that the call/ret is the taken cfi
s2_spec_push := io.s2_fire && io.in.bits.resp_in(0).s2.full_pred.hit_taken_on_call
s2_spec_pop := io.s2_fire && io.in.bits.resp_in(0).s2.full_pred.hit_taken_on_ret
s2_spec_push := io.s2_fire && io.in.bits.resp_in(0).s2.full_pred.hit_taken_on_call && !io.s3_redirect
s2_spec_pop := io.s2_fire && io.in.bits.resp_in(0).s2.full_pred.hit_taken_on_ret && !io.s3_redirect
val s2_jalr_target = io.out.resp.s2.full_pred.jalr_target
val s2_last_target_in = io.in.bits.resp_in(0).s2.full_pred.targets.last
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册