-
Notifications
You must be signed in to change notification settings - Fork 406
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
4-stage fetch #308
4-stage fetch #308
Conversation
|
||
dontTouch(f3_fetch_bundle) | ||
|
||
val r_f4_valid = RegInit(false.B) | ||
|
||
// Can the F3 stage proceed? | ||
val f4_ready = (!r_f4_valid || fb.io.enq.ready) && ftq.io.enq.ready |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could this be simpler with a 1-deep queue.
I also think it may be a good idea to make this configurable (for now).
We need to make a graph showing performance impacts of all the random stuff that's changed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had thought about doing that, I can look at it. I held off because these options tend to be messy code-wise, and it takes longer to verify both settings (and we inevitably end up wanting to deprecate them).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah I agree it's messy,and hopefully we would depreciate it soon.
It's just this may have a noticeable performance impact, and it would be good to document that with a good comparison.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, makes sense.
Also, depending on what's default, some of the documentation should be updated |
Sure. |
0977836
to
5c8b8e6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. However, we should add a comment saying that 4 stage is really the only supported thing here. Or if we are going to not use 3 stage, just remove support for it completely.
Type of change: other enhancement
Impact: rtl refactoring
Development Phase: implementation
Release Notes
Added another stage to instruction fetch. The fetch bundle path is split by an f4 register prior to enqueueing to the fetch buffer. The ftq still enqueues fetch targets in f3, as it is not the endpoint of any long paths.