[Libre-soc-dev] [RFC] horizontal SVP64 vectors
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Wed Jul 7 18:11:29 BST 2021
there is a trail here which takes some explaining.
* REMAP schedules at present may only apply to one instruction.
* Zero Overhead Loop Control is unbelievably brilliant and efficient
(40% reductions in algorithm runtime) but too radical
* ZOLC works on EXACTLY the same principle as REMAP except that REMAP
loop hierarchies apply to VL *SUB*-Program-Counter (srcstep, dststep)
and ZOLC applies to the *Program Counter*
so the simplest way to allow REMAP to apply to multiple instructions
is to pull a leaf out of ZOLC's book, and *pause srcstep incrementing*
but allow PC to increment.
right now we have this:
PC += 4
for i in range(VL)
srcstep += 1
and what i am suggesting is:
PC += 4
PC += 4
...
srcstep += 1
this would allow the same REMAP schedule to be applied to *multiple
instructions*, then an explicit "svstep" instruction would be called
at the end of a loop to increment srcstep / dststep, and a branch used
to jump back to run the instructions for the next src/dststep.
in this way we can do FFT complex numbers without needing to add them
as first class types (which i was a bit reticent about).
Horizontal Vectorisation is a lot more generic and has far more applications.
thoughts appreciated.
l.
More information about the Libre-soc-dev
mailing list