[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
Sat Aug 3 23:40:12 BST 2019


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

--- Comment #8 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Jacob Lifshay from comment #7)
> (In reply to Luke Kenneth Casson Leighton from comment #6)
> > so instead i will look at how to add the "mask" and "cancel" signals
> > to the *handling* side (PrevControl and NextControl), where, really,
> > it should have been in the first place.
> 
> Sounds good to me.

okaay, it's a bit of a mess (the code in nmutil/iocontrol.py),
however the latest unit test, cancellation seems to work.

i broke the valid/ready rules, somewhat: the "mask", if non-zero,
basically takes over.  in effect, it turns the pipeline into
one of dan gisselquist's simpler types: the "global CE" one.
so it's critically important *not* to try to set the "recv not ready"
signal, because the data *will* be sent, regardless.

the masks (basically predication bits) are "Cat'd" together as
they are funneled into the Multi-In Mux pipeline, so that none of
them are lost.  they're then funneled *back out* again at the
other end (Multi-Out fan-out stage).

i allowed the option in the API to specify multi-bit masks, so
that we can have SIMD element cancellation as well.  hmm, just
fixed that: i'd missed that if something is cancelled it shouldn't
continue to be passed down the chain! whoops.

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


More information about the libre-riscv-dev mailing list