[Libre-soc-dev] svp64 review and "FlexiVec" alternative

Jacob Bachmeyer jcb62281 at gmail.com
Wed Jul 27 02:36:59 BST 2022


Jacob Lifshay wrote:
> On Tue, Jul 26, 2022, 17:11 Jacob Bachmeyer via Libre-soc-dev 
> <libre-soc-dev at lists.libre-soc.org 
> <mailto:libre-soc-dev at lists.libre-soc.org>> wrote:
> [...]
>
>       OpenSPARC
>
>
> that's not a particularly high register count...you can still only 
> access 64 registers at any one time, 32 int, 32 fp. All of the 
> additional registers used for the call stack are usually inaccessible. 
> SimpleV currently has >4x as many registers accessible (128 int, 128 
> fp, 128 cr fields) and that will likely increase in the future.

OK, then, so there are probably *no* existing ISAs with enough registers 
for a Simple-V GPU and expanding the register file like that is 
certainly a deep and foundational change, since it will affect every 
instruction that can access the new registers.  (I believe that you are 
proposing REX prefixes in Power ISA to support the larger register file?)

>     or another high-register-count
>     ISA might be useful, or possibly a dedicated Libre-SOC GPU
>     architecture,
>     with an OpenPOWER (sans vector facilities) control unit in the
>     actual SOC.
>
>
> i think we should specifically have the same ISA for cpu and gpu 
> stuff, it makes possible optimizing 3D graphics much more if it 
> becomes wide-spread, as opposed to current GPUs where the vendors 
> basically forbid you from using their native ISA and insist you must 
> use their compiler to process all your gpu code first.

That is because the GPU ISA is currently an implementation detail (that 
can change from model to model) and the compiler provides the stable 
interface.

> Using the same ISA also reduces communication overhead because you can 
> just treat it as a normal multithreaded program, rather than this 
> thing that you have to go to great effort to queue up work for and use 
> special kernel drivers, etc.

No, the great effort to queue up work and special kernel drivers are due 
to how the GPU is attached to the system, being a peripheral instead of 
a full processor.

Using a different ISA does not necessarily require these overheads, if 
the CPU/GPU combination is implemented as a heterogenous multiprocessor 
instead of the current GPU-as-peripheral model.  The current model is 
held in place mostly by the existing driver codebases and the utter 
failure to standardize inter-CPU interconnects.  (AMD proposed 
HyperTransport and got a few other vendors to concur (I seem to remember 
IBM also adopted it) but Intel said "Not Invented Here" to that and made 
their own (incompatible) knockoff, so we do not get HyperTransport PC 
GPUs.)  The latter is not a problem for a SOC, where the GPU is 
integrated into the main module.


-- Jacob




More information about the Libre-soc-dev mailing list