Stall and Flush Counter (Initial Iteration)#203
Stall and Flush Counter (Initial Iteration)#203matms wants to merge 2 commits intomortbopet:masterfrom
Conversation
do you mean single issue processors?
I've considered whether we need to switch up the way that a stage reports its # of stages. By only having the ability to specify # of stages, we miss out on the processor telling about its structure, as in, # of issue slots/lanes. Which then restricts itself to single-issue processors.
This scheme could (potentially) also work for out-of-order processors which could be cool to eventually have in Ripes!
|
numStages is only sensible for single issue processors. In this commit, we introduce the ProcessorStructure type, a 2d mapping suitable for communicating more information about the datapath of a processor.
3e72696 to
a963fb3
Compare
|
I've updated the flush and stall counter to use the new ProcessorStructure interface. Sorry for the delay in updating, I've been quite busy the past few weeks. |
30de4a0 to
057adf5
Compare
As per #174, I am opening a PR for adding a stall and flush counter.
However, note this PR is probably not quite mergeable yet. In particular, there are two "bugs", so we'd need to discuss how to fix these. In particular:
An instruction is considered and counted as stalled or flushed when it reaches WB, rather than when it leaves WB. This diverges from the behaviour of instructionsRetired, which counts an instruction as retired upon leaving WB.
The dual-issue processor currently considers only only one way for counting stalls and flushes. I suspect we might need a way to generically query a processor for which stages contain instructions that are about to be retired. Right now I'm using
proc->stageInfo(proc->stageCount() - 1)to gather information about these instructions, which only works for the singlecycleissue processors.Once both these issues are resolved, we should be able to refactor instructionsRetired to be implemented in a manner similar to the stall and flush counter.
(Also, the diff for processortab.ui is quite messy... I hope this is not an issue)