[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