[Libre-soc-dev] gigabit router design decisions
cestrauss at gmail.com
Tue Nov 2 12:03:30 GMT 2021
Em 01/11/2021 22:21, Jacob Lifshay escreveu:
> On Mon, Nov 1, 2021, 18:09 Jacob Lifshay <programmerjake at gmail.com> wrote:
>> Please don't reject cpu design conversation, remember this project is a
>> community effort, not just you dictating top-down design decisions.
> To be clear, this isn't merely about having a branch predictor or not, but
> about us cooperating as a community to come up with the best design. I will
> be fine if we decide we don't want a branch predictor, but that should be a
> community decision.
My proposal is to plan ahead, and:
1) Design the pipeline *without* branch prediction, but in a way which
is compatible with easily adding one.
This involves using a "predict always not taken" approach, with the
ability to flush the Fetch/Decode stages if, after executing a branch,
Issue's idea of the next PC disagrees with the one at Decode.
This involves just a correct PC x actual PC comparator at Issue, a flush
input signal on Fetch/Decode, and a "PC override" port on Fetch. No
complex speculative logic, and no need to panic and restart whenever
Decode sees a Branch.
2) As we (hopefully) reach the baseline ahead of schedule, we can
prioritize additional features. By then, simply inserting a branch
predictor to the "PC override" Fetch port can be seen as "low hanging
fruit" and "nice to have", not being canceled due to throwing away
months of existing code.
More information about the Libre-soc-dev