Skybox: Open-Source Graphic Rendering on Programmable RISC-V GPUs
dl.acm.org
dl.acm.org
Best I can tell from skimming, it looks like the command processor and the grid of compute cores both probably use a RISC-V ISA, and the "shader cores" have some custom extensions.
It looks very cool, I wonder if they published the RTL anywhere.
https://en.wikipedia.org/wiki/Cell_(processor)
The idea was that Cell would also act as the GPU for the PlayStation 3, but performance wasn’t good enough when the chip was finally ready, so they ended up complementing it with an Nvidia GPU.
The programming model was quite difficult. The SPE cores couldn’t directly access main memory. Instead they had small local SRAM buffers (256kB I believe) that the programmer would manually fill using explicit DMA commands either from other SPEs or from main memory. Orchestrating these memory operations for high performance must have been a chore, and when you do have the data, then you have to deal with the SPE having a different architecture with no branch prediction, etc.
GPUs and CUDA turned out to be a much more palatable model for general-purpose compute.
The idea was good, the execution not so much.
In this case, the design (AFAICT) uses RISC-V's support for extensions to add some GPU-specific instructions for things like vector math and texture lookups.
But I suppose that SIMT-oriented cores also need to disable some instructions, like most jump instructions, and especially jumping back, correct? Also, I suppose, there ought to be an easy way to look into the memory "to the left" and "to the right", but likely it can be preset by making a constant offset available to every thread.
The graphics effort in RISC-V aims at providing a bunch of such specialized instructions in an official extension, suitable for GPU use.
But this is not a hardware 3D pipeline. In theory, the hardware 3D pipeline should be programmed "à la" vulkan: hardware queues of commands (3D/compute/DMA).
But as far as I know, we don't have something like ahci or nvme or usb xhci for that... yet.
Then I learned GPU are basically a bunch mutli-core with each core having a vector extensions and what Intel would call 'hyperthreading'.
At least that how I think about it.
https://spacenews.com/planet-to-acquire-terra-bella-from-goo...