The potential purchase of ARM by NVIDIA on the one hand and the development of an extension of RISC-V instructions for the creation of GPUs with that set of registers and instructions makes the following question come to mind: would it be possible to create a GPU based on the ARM ISA and what would be the limitations that would be encountered?
To begin, we must emphasize that we are not discussing the entire GPU, but rather the shader units and the components within them that are in charge of running shader programs, either for calculation or for graphics.
Remember that these are units in and of themselves with the ability to run programs like a CPU, but in a completely different way, which makes us wonder if it would be possible to use an ISA like ARM to create not only these types of units, but something more advanced, giving a synergy of both concepts.
In search of the universal core as CPU and GPU!
With NVIDIA’s interest in ARM, it’s natural to question if the green business has plans to develop a new form of core that can function as both a CPU and a GPU. So, we’re not talking about an APU with discrete CPU and GPU units, but rather universal cores that can handle both jobs.
This, which is currently science fiction on paper, has some advantages. For example, in a GPU, we cannot use conventional programming languages, which, while very good at parallel computing, are very bad at other things where CPUs are much better, such as jump prediction, which is critical for traversing data structures for Ray Tracing.
Intel Larrabee prototype!
However, the number of transistors in each shader unit would be increased, especially in the control units, since GPU schedulers are extremely simple compared to their CPU counterparts. Integrating an instruction fetch and decode system on a GPU like those on a CPU would ultimately reduce the number of cores per area, causing raw power to be lost.
Aside from the Intel Larrabee (developed in the late 2000s), no other attempts were made. Instead, due to the intricacy of their CPUs’ control units, Intel used the cores of the first Intel Pentium to create the shader units.
The ISA in a GPU really doesn’t matter at all!
In the case of both NVIDIA and AMD, ISAs are not as static and immutable as CPUs; for example, from one generation to the next, we can find that some instructions have been removed from the list, while others have been added, and so on. Which begs the question: how do they run shader programs in each company’s multiple generations of GPUs?
In the instance of NVIDIA, they developed PTX, an intermediate or virtual ISA that is backward compatible with all the company’s graphics architectures. Think of PTX as something similar to Microsoft .NET’s common language interface or Java’s virtual machine. So, it is the graphics card driver that is responsible for translating the PTX code to the ISA of each NVIDIA GPU, whatever generation it is.
This is why employing an ISA such as ARM to create the shader unit of a future NVIDIA GPU will add nothing to the equation. So, if NVIDIA acquires ARM, will it develop a new type of core and rethink the concept of CPU and GPU ISAs?