From c0e6ecebfc17afb6a58f210ecb6fae050abb8c85 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Wed, 6 Jul 2016 03:16:05 -0700 Subject: [PATCH] Fix BTB perf bug In rare cases, it would replace into a different row than it recorded. --- rocket/src/main/scala/btb.scala | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/rocket/src/main/scala/btb.scala b/rocket/src/main/scala/btb.scala index 5599205f..c98f2e36 100644 --- a/rocket/src/main/scala/btb.scala +++ b/rocket/src/main/scala/btb.scala @@ -182,9 +182,8 @@ class BTB(implicit p: Parameters) extends BtbModule { val useUpdatePageHit = updatePageHit.orR val usePageHit = pageHit.orR val doIdxPageRepl = !useUpdatePageHit - val idxPageRepl = UIntToOH(nextPageRepl) - val idxPageUpdateOH = Mux(useUpdatePageHit, updatePageHit, - Mux(usePageHit, Cat(pageHit(nPages-2,0), pageHit(nPages-1)), idxPageRepl)) + val idxPageRepl = Mux(usePageHit, Cat(pageHit(nPages-2,0), pageHit(nPages-1)), UIntToOH(nextPageRepl)) + val idxPageUpdateOH = Mux(useUpdatePageHit, updatePageHit, idxPageRepl) val idxPageUpdate = OHToUInt(idxPageUpdateOH) val idxPageReplEn = Mux(doIdxPageRepl, idxPageRepl, UInt(0))