[Libre-soc-isa] [Bug 213] SimpleV Standard writeup needed

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Sun Oct 25 17:02:59 GMT 2020


--- Comment #89 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Luke Kenneth Casson Leighton from comment #88)

> however in all circumstances it is critical to note that a "special
> Predicate Function Unit" neither exists nor is needed.

when i designed the original RV version of SV i had envisaged, as explained in
earlier comments, using special "Predicate Function Units" which requested the
(one, scalar, 64 bit int) predicate, cast the shadow across the operations it
controls (all of the FUs calculating elements covered by that predicate) and on
eventually reading that (one, int64) reg, issuing the required die/ok signals.

this you kindly pointed out, Jacob, interferes with Cray-style "chaining",
which is something i had not taken into account.

there are other limitations as well: the use of a Predicate FU means that we
have worst case double the number of FUs to lay down in the DMs due to each
predicated instruction requiring the activation of not one FU but *two* FUs.

this is so costly that we really have to eliminate this approach unless we
genuinely have no alternative.

therefore we are left with "one-for-one" options: one element, one predicate
bit.  or more to the point: one DM row per predicate bit, one DM row per
source, one DM row per dest.

[optimisations on top of this such as reading 8 CRs are still one-for-one, it's
just that they are onebatch-for-onebatch]

contrast this with "one DM row covering multiple predicate bits that require a
Predicate FU to distribute out to multiple ALUs".

any such proposal that involves "multiple groups of predicate bits covered by a
single DM row which have to be distributed out by way of a Predicate FU" are
just too costly.

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

More information about the Libre-SOC-ISA mailing list