From 5a55840ef93cb9f90548a3676182492fceaed21f Mon Sep 17 00:00:00 2001 From: YuanDL <2524247987@qq.com> Date: Wed, 11 Sep 2024 13:32:55 +0800 Subject: [PATCH 1/2] fix(FTB): Turn off FTB updates when FTB is closed. --- src/main/scala/xiangshan/frontend/FTB.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala/xiangshan/frontend/FTB.scala b/src/main/scala/xiangshan/frontend/FTB.scala index 0afbaed74d..810b8771cf 100644 --- a/src/main/scala/xiangshan/frontend/FTB.scala +++ b/src/main/scala/xiangshan/frontend/FTB.scala @@ -754,7 +754,7 @@ class FTB(implicit p: Parameters) extends BasePredictor with FTBParams with BPUU val update = io.update.bits val u_meta = update.meta.asTypeOf(new FTBMeta) - val u_valid = io.update.valid && !io.update.bits.old_entry + val u_valid = io.update.valid && !io.update.bits.old_entry && !s2_close_ftb_req val (_, delay2_pc) = DelayNWithValid(update.pc, u_valid, 2) val (_, delay2_entry) = DelayNWithValid(update.ftb_entry, u_valid, 2) @@ -807,6 +807,7 @@ class FTB(implicit p: Parameters) extends BasePredictor with FTBParams with BPUU XSPerfAccumulate("ftb_update_req", io.update.valid) XSPerfAccumulate("ftb_update_ignored", io.update.valid && io.update.bits.old_entry) XSPerfAccumulate("ftb_updated", u_valid) + XSPerfAccumulate("ftb_closing_update_counter", s2_close_ftb_req && u_valid) override val perfEvents = Seq( ("ftb_commit_hits ", io.update.valid && u_meta.hit), From 42d4a46ab3e4b341b3fc360be15140f54242e07a Mon Sep 17 00:00:00 2001 From: YuanDL <2524247987@qq.com> Date: Thu, 12 Sep 2024 16:24:46 +0800 Subject: [PATCH 2/2] fix(FTB): use s0_close_ftb_req to turn off FTB updates. --- src/main/scala/xiangshan/frontend/FTB.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/scala/xiangshan/frontend/FTB.scala b/src/main/scala/xiangshan/frontend/FTB.scala index 810b8771cf..2a4c5715f8 100644 --- a/src/main/scala/xiangshan/frontend/FTB.scala +++ b/src/main/scala/xiangshan/frontend/FTB.scala @@ -754,7 +754,7 @@ class FTB(implicit p: Parameters) extends BasePredictor with FTBParams with BPUU val update = io.update.bits val u_meta = update.meta.asTypeOf(new FTBMeta) - val u_valid = io.update.valid && !io.update.bits.old_entry && !s2_close_ftb_req + val u_valid = io.update.valid && !io.update.bits.old_entry && !s0_close_ftb_req val (_, delay2_pc) = DelayNWithValid(update.pc, u_valid, 2) val (_, delay2_entry) = DelayNWithValid(update.ftb_entry, u_valid, 2) @@ -807,7 +807,7 @@ class FTB(implicit p: Parameters) extends BasePredictor with FTBParams with BPUU XSPerfAccumulate("ftb_update_req", io.update.valid) XSPerfAccumulate("ftb_update_ignored", io.update.valid && io.update.bits.old_entry) XSPerfAccumulate("ftb_updated", u_valid) - XSPerfAccumulate("ftb_closing_update_counter", s2_close_ftb_req && u_valid) + XSPerfAccumulate("ftb_closing_update_counter", s0_close_ftb_req && u_valid) override val perfEvents = Seq( ("ftb_commit_hits ", io.update.valid && u_meta.hit),