[Libre-soc-bugs] [Bug 336] ALU CompUnit needs to recognise that RA (src1) can be zero
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Mon Jun 15 12:58:13 BST 2020
https://bugs.libre-soc.org/show_bug.cgi?id=336
--- Comment #62 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Cesar Strauss from comment #61)
> (In reply to Luke Kenneth Casson Leighton from comment #60)
> > (In reply to Cesar Strauss from comment #59)
> > > Did you consider implementing the ALU CompUnit as a pipeline?
> >
> > you mean, MultiCompUnit itself? if so: this would violate the
> > mission-critical
> > protocol, the purpose for which MultiCompUnit exists.
>
> I understand that MultiCompUnit is sequential by contract, and that allowing
> multiple operations in flight is a violation of that protocol.
>
> That was not my idea when I conceived using the pipeline API in the design
> of MultiCompUnit.
ah?
> The idea was to use the pipeline API to enforce sequential operation
> (eliminating all complex FSMs), and at the same time enforcing the
> ready/valid and rel/go protocols for free.
ahh okaaay now i get it. sorry: comparison-and-difference was what it
took for me to understand.
> Is started when I suspected that the rel/go protocol of the src and dest
> ports maybe were compatible with the valid/ready protocol of the ALU.
yes this is extremely likely.
> I was then that I conceived of the src and dest ports being joined to the
> ALU using the pipeline API.
>
> The only thing, is making sure that only one operation is in flight in the
> pipeline at a any time. A simple FSM would take care of that, I think.
>
> But then, I would be crippling the power of the pipeline concept, which does
> seems like a waste.
not quite. it's that "tracking" which is paramount, everything else is
secondary.
> Oh well, at least I conceived an example of a parallel, dynamically
> reconfigurable pipeline, with new elements like cross-switches and
> barriers/combinators, that are maybe useful in other contexts.
:)
what you've come up with is basically a pipeline-compatible "information
collector and distributor", where:
* certain information has to come in from multiple different sources
* processing has to take place which cannot begin until all incoming
information is received
* processed information has to be distributed out to multiple destinations
this may indeed prove extremely useful, although under some very special
circumstances.
given that the ready/valid protocol is basically Wishbone compatible
it *might* turn out to be the case that it's useful for special Bus
Transactions.
now that i think about it - it was over a year ago - i did sort-of begin
something like this (at least on the receiving side), it was a multi-bit
ready/valid with a funnel.
i didn't exactly abandon it... it just turned out to be complex.
i really like it... however given the time invested into MultiCompUnits,
and the timescales, we really should prioritise, and come back to this
idea later.
can you raise a bugreport with a summary and a link to the attachment?
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-soc-bugs
mailing list