[Libre-soc-dev] new svp64 page
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Thu Dec 10 22:12:16 GMT 2020
On 12/10/20, Cole Poirier <colepoirier at gmail.com> wrote:
> I've seen a few papers where they take the approach of trying to reuse
> hardware used by one application specific op, in others as well,
> sharing as much of the circuitry as possible to minimize area and
> waste. This is what we are doing right?
not quite, this was the original design intent by the designers of OpenPOWER.
the microwatt team, by having huge amounts of knowledge of the
OpenPOWER ISA, worked out that it is inherently designed around
this is in the CSV File columns (decode1.vhdl)
there *is* only one ADD operation.
inversion of A, inversion of output, setting carry to 0, 1 or XER.CA,
and post-processing to generate CR0, these are all things that fall
into the category you identify.
they are all already part of an OpenPOWER scalar implementation.
with SV i am trying to keep the actual vectorisation as a
"stratification" on *top* of a scalar ISA. or, more to the point:
this is a fundamental core design principle
if we need Vector Average, the principle is: add it as a scalar opcode
and then AUTOMATICALLY you get a vector version because SV applies to
aaaaalll arithmetic operations.
if saturating scalar add had already been added to v3.0B scalar ops we
would not be discussing how to add saturation: we would be twiddling
our thumbs with that crossed off the list because a VL loop would be
applied to it, yawn, job done.
More information about the Libre-soc-dev