Originally posted by cb88
View Post
an extremely informative article as to why SIMD is such a bad idea is here: https://www.sigarch.org/simd-instruc...dered-harmful/ it compares code size of various SIMD options (all of them awful) against variable-length vectorisation (extremely short, very simple).
however, the reasons why SIMD exist at all is because the simplicity *at the hardware level* makes it so seductive and compelling that hardware engineers can't help themselves

here's the thing: a very simple abstraction layer can be placed *in front* of a SIMD engine (as long as it has predication), to give it a variable-length vectorisation front-end as far as the instruction set is concerned, and that's really what matters to compiler writers and software developers.
so the next question is, why on earth are we doing our own Vectorisation system when RVV is in development? there's two answers to that: the first is that the RISC-V Foundation is actually a closed cartel, and recent investigation shows that it's a cartel that is in violation of the U.S. Sherman Act (look it up).
the second reason is technical. RVV is designed to provide a specific set of instructions with their own opcodes. those opcodes use a good fraction of the available 32-bit RISC-V opcode space (there's about 50 or 60 instructions in RVV), and there is no room in the 32-bit space for further vectorised instructions.
so let's say that you need a vectorised bit-manipulation operation (xBitManip is in development, in parallel). vectorised bit-manipulation is reasonable to have, particularly if developing a hybrid GPU / VPU, as you want to do a *lot* of YUV-to-RGB conversion, and other such basic operations.
how can that be added to RVV? well, it can't. there's no remaining 32-bit opcode space, it's a completely separate extension, and (going back to answer 1), if you're not part of the RISC-V cartel, you have absolutely no say in the matter. you're shut out.
by contrast, Simple-V automatically extends xBitManip to the parallel domain, by way of the "prefixing / extending" API, *even though xBitManip hasn't even been finalised*! and the reason is because Simple-V takes *all* opcodes - past, present and future - and makes it possible to parallelise them.
it's an abstraction layer, in other words. it really does have more in common with a Software API, being as it is a bit like a general-purpose for-loop, wrapped around instructions, just at the hardware level.
Leave a comment: