Skip to content
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

Merged
merged 14 commits into from
Jul 8, 2019
Merged

4-stage fetch #308

merged 14 commits into from
Jul 8, 2019

Conversation

bkorpan
Copy link
Contributor

@bkorpan bkorpan commented Jun 24, 2019

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.


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
Copy link
Contributor

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.

Copy link
Contributor Author

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).

Copy link
Contributor

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, makes sense.

@jerryz123
Copy link
Contributor

Also, depending on what's default, some of the documentation should be updated

@bkorpan
Copy link
Contributor Author

bkorpan commented Jun 24, 2019

Also, depending on what's default, some of the documentation should be updated

Sure.

@bkorpan bkorpan force-pushed the f3-split branch 5 times, most recently from 0977836 to 5c8b8e6 Compare June 25, 2019 22:14
Copy link
Contributor

@abejgonzalez abejgonzalez left a 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.

@abejgonzalez abejgonzalez merged commit a55d354 into master Jul 8, 2019
@abejgonzalez abejgonzalez deleted the f3-split branch July 8, 2019 21:59
jerryz123 pushed a commit that referenced this pull request Mar 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants