[libre-riscv-dev] [Bug 101] IEEE754 pipeline "go_die" (Computation Unit Cancellation) needed

bugzilla-daemon at libre-riscv.org bugzilla-daemon at libre-riscv.org
Thu Aug 1 17:22:30 BST 2019


http://bugs.libre-riscv.org/show_bug.cgi?id=101

--- Comment #5 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Luke Kenneth Casson Leighton from comment #4)
> Also: I'd like to use dynamic classes, here. If people want to use
> SimpleHandshake, or something else, the code should enable them to do that.
> 
> It means using 3 arg type() and __new__.
> 
> https://www.tutorialdocs.com/article/python-class-dynamically.html

that's done - it works.  i've not tested an alternative class, yet,
however i have confidence that a class can be dropped in place.
what it means is: for users of the IEEE754FPU API who want to do
single-issue, they can use whatever pipeline-building class they like.

for "Cancellation", i looked at the existing fan-in and fan-out classes,
and realised that changing them from the existing binary "muxid" is
not only quite a lot of work, it's also counterproductive.

so instead, "Cancellation" should be viewed effectively as "speculative
predication", and a predication "mask", followed up by a *cancellation*
request, should be *added* rather than *replace* the use of muxid.

the OoO design requires this "speculative predication" anyway.  it works
by sending computations to [SIMD] elements *before* the actual predicate
is known, doing a (separate) read on the register containing the predicate,
working out which elements are to be "cancelled" and which not to be,
then following up with a "cancellation" mask, broadcast to all elements
currently in the middle of performing actual work.

for Vectorisation, for using SIMD back-ends, we can simply "pre-mask"
the (non-matching) elements at the end of the vector.  so if there are
only 3 elements to be calculated, and the SIMD back-end requires 4,
the last element is "masked out".

this technique would use *exactly* the same "mask" system as is required
to perform "cancellation", so adding "Cancellation capability" effectively
is the fundamental basis for both predication and Vectorisation.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-riscv-dev mailing list