未验证 提交 b6220f0d 编写于 作者: L Lemover 提交者: GitHub

Perf: add perf counter to record rs wake up source (#792)

上级 298e64c2
......@@ -32,6 +32,7 @@ case class ExuParameters
case class ExuConfig
(
name: String,
blockName: String, // NOTE: for perf counter
fuConfigs: Seq[FuConfig],
wbIntPriority: Int,
wbFpPriority: Int
......
......@@ -698,6 +698,22 @@ class ReservationStationCtrl
}
}
}
def updateFilterByBlock(blockName: String) = {
srcUpdateListen.map(a => a.map(b =>
b.zip(fastPortsCfg ++ slowPortsCfg)
.filter(
_._2.blockName == blockName
).map(_._1)
)).flatten.flatten
}
val intSrcUpdate = updateFilterByBlock("Int")
val memSrcUpdate = updateFilterByBlock("Mem")
val fpSrcUpdate = updateFilterByBlock("Fp")
XSPerfAccumulate(s"${exuCfg.blockName}_wakeup_by_Int", PopCount(Cat(intSrcUpdate)))
XSPerfAccumulate(s"${exuCfg.blockName}_wakeup_by_Mem", PopCount(Cat(memSrcUpdate)))
XSPerfAccumulate(s"${exuCfg.blockName}_wakeup_by_Fp", PopCount(Cat(fpSrcUpdate)))
}
class RSDataSingleSrc(srcLen: Int, numEntries: Int, numListen: Int, writePort: Int = 1) extends Module {
......
......@@ -487,15 +487,16 @@ package object xiangshan {
UncertainLatency()
)
val AluExeUnitCfg = ExuConfig("AluExeUnit", Seq(aluCfg), 0, Int.MaxValue)
val JumpExeUnitCfg = ExuConfig("JmpExeUnit", Seq(jmpCfg, csrCfg, fenceCfg, i2fCfg), 2, Int.MaxValue)
val MulDivExeUnitCfg = ExuConfig("MulDivExeUnit", Seq(mulCfg, divCfg), 1, Int.MaxValue)
val FmacExeUnitCfg = ExuConfig("FmacExeUnit", Seq(fmacCfg), Int.MaxValue, 0)
val AluExeUnitCfg = ExuConfig("AluExeUnit", "Int", Seq(aluCfg), 0, Int.MaxValue)
val JumpExeUnitCfg = ExuConfig("JmpExeUnit", "Int", Seq(jmpCfg, csrCfg, fenceCfg, i2fCfg), 2, Int.MaxValue)
val MulDivExeUnitCfg = ExuConfig("MulDivExeUnit", "Int", Seq(mulCfg, divCfg), 1, Int.MaxValue)
val FmacExeUnitCfg = ExuConfig("FmacExeUnit", "Fp", Seq(fmacCfg), Int.MaxValue, 0)
val FmiscExeUnitCfg = ExuConfig(
"FmiscExeUnit",
"Fp",
Seq(f2iCfg, f2fCfg, fdivSqrtCfg),
Int.MaxValue, 1
)
val LdExeUnitCfg = ExuConfig("LoadExu", Seq(lduCfg), wbIntPriority = 0, wbFpPriority = 0)
val StExeUnitCfg = ExuConfig("StoreExu", Seq(stuCfg, mouCfg), wbIntPriority = Int.MaxValue, wbFpPriority = Int.MaxValue)
val LdExeUnitCfg = ExuConfig("LoadExu", "Mem", Seq(lduCfg), wbIntPriority = 0, wbFpPriority = 0)
val StExeUnitCfg = ExuConfig("StoreExu", "Mem", Seq(stuCfg, mouCfg), wbIntPriority = Int.MaxValue, wbFpPriority = Int.MaxValue)
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册