[Libre-soc-dev] gigabit router design decisions

Cesar Strauss 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.

Regards,

Cesar




More information about the Libre-soc-dev mailing list