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

RS: fix bug of wrong enq and deq perf counter (#683)

上级 ac54e310
......@@ -393,8 +393,13 @@ class ReservationStationSelect
assert(RegNext(Mux(tailPtr.flag, tailPtr.value===0.U, true.B)))
XSPerf("sizeMultiCycle", iqSize.U)
XSPerf("enq", io.enq.fire())
XSPerf("deq", io.deq.fire())
XSPerf("enq", enqueue)
XSPerf("issueFire", issueFire)
XSPerf("issueValid", issueValid)
XSPerf("exuBlockDeq", issueValid && !io.deq.ready)
XSPerf("bubbleBlockEnq", haveBubble && !io.enq.ready)
XSPerf("validButNotSel", PopCount(selectMask) - haveReady)
XSPerf("utilization", io.numExist)
XSPerf("validUtil", PopCount(validQueue))
XSPerf("emptyUtil", io.numExist - PopCount(validQueue) - PopCount(stateQueue.map(_ === s_replay)) - PopCount(stateQueue.map(_ === s_wait))) // NOTE: hard to count, use utilization - nonEmpty
......@@ -402,12 +407,7 @@ class ReservationStationSelect
XSPerf("selectUtil", PopCount(selectMask))
XSPerf("waitUtil", PopCount(stateQueue.map(_ === s_wait)))
XSPerf("replayUtil", PopCount(stateQueue.map(_ === s_replay)))
XSPerf("bubbleBlockEnq", haveBubble && !io.enq.ready)
XSPerf("validButNotSel", PopCount(selectMask) - haveReady)
XSPerf("issueValid", issueValid)
XSPerf("issueFire", issueFire)
XSPerf("exuBlockDeq", issueValid && !io.deq.ready)
if (!feedback && nonBlocked) {
XSPerf("issueValidButBubbleDeq", selectReg && bubbleReg && (deqPtr === bubblePtr))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册