-
-
Notifications
You must be signed in to change notification settings - Fork 278
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stall and Flush Counter (Initial Iteration) #203
base: master
Are you sure you want to change the base?
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)