Throughout the years, there have been a number of critical advancements in CPU technology that have fundamentally changed the landscape. Integrated floating point co-processors, on-die caches and memory controllers, and multiple processor cores on a single chip are just a few highlights of the innovations that have enabled fundamentally new levels of performance and efficiency.
Advanced Micro Devices (AMD) and Oracle (ORCL) have just announced that the former will be working with the latter (and a number of other partners) to allow Java programs to seamlessly take advantage of the graphics processing unit to very significantly improve performance in multi/many-core environments.
Now, to understand the importance of this announcement, it is important that I explain two key technologies: Java and general purpose GPU or "GPGPU".
Java - The Language Of Modern Software
Java is a programming language. The reason that this programming language is so special is that it is both widely used and programs written in it will run on any platforms that support Java. Unlike "native" languages such as C/C++, Java code is translated into an "intermediate" language, called "bytecode." This is then fed into a program called the "Java Virtual Machine" that translates this platform-agnostic bytecode into instructions that the particular platform can understand. As long as a particular instruction set architecture (x86, ARM (ARMH), MIPS (MIPS), etc.) has a Java Virtual Machine written for it, the Java programs will be compatible.
GPGPU - A Way To Increase Compute Efficiency
The next important technology is the graphics processing unit applied to general purpose tasks - GPGPU. When graphics processors first hit, they were useful for pretty much one thing: drawing 3D graphics at a much faster rate than CPUs due to dedicated hardware.
Eventually, though, graphics processing demanded more flexibility in the operations that were needed. This led to the graphics processing unit evolving into a highly programmable, compute-density focused piece of silicon. Per watt, and per unit of silicon die area, graphics processing units provide orders of magnitude more brute-force processing power than a traditional CPU. So, why not get rid of the CPU altogether?
The catch is that GPUs get their raw processing power from having a whole bunch of fairly specialized compute units - they're good at just doing a a lot of raw calculations. A good deal of a traditional general purpose CPU is dedicated to things like branch predictors (units that try to guess what path a program's execution will take), caches, prefetchers, and other things that promote fast single-threaded performance.
So, the "big idea," then, is to take full advantage of the integration of the CPU and GPU in modern processors and leverage that raw power in general purpose applications that can take advantage of it. So, what are some programs that are conducive to GPGPU acceleration?
- Video processing
- Audio processing
- Computational finance
- Weather forecasting
- Medical imaging
- Electronic design automation
This is not even close to an exhaustive list; for a more complete reference, I recommend this excellent page.
Bringing GPGPU To The Masses
Interestingly enough, GPGPU has seen fairly wide adoption. Both Nvidia (NVDA) and AMD offer discrete accelerator boards that are used for these applications (these are generally the standard consumer graphics boards with features enabled and custom firmware).
More importantly, the standard consumer graphics products from the aforementioned vendors also support GPGPU processing, but these are generally less feature filled than the dedicated products.
However, a fairly small portion of the population will buy a $3,000 dedicated HPC accelerator, or even a $200+ graphics board. So, the question is: how can this be brought to the masses?
See, the GPGPU hardware needs to be in the hands of the masses before developers will seriously consider making the investment to get on board. This is what AMD's strategy is with Heterogeneous System Architecture or "HSA." Every mainstream client processor that AMD ships has built in graphics that can run GPGPU code. Further, as Intel (INTC) has started to make a more serious attempt to bundle its CPUs with capable GPUs, it will also help provide the hardware install base.
It's Up To The Software Companies
The seeds are now sown on the hardware side, so it is up to the software developers to make it happen. This is why the recent announcement that Oracle will build support into its Java platform for GPGPU acceleration in multi-core environments is huge. The easier and more transparent it is for programmers to leverage this technology, the more rapidly it will see adoption.
The Investment Opportunity
With sufficient background established, I will now point out that GPGPU is a very significant technology and that the leaders in this space will very quickly become the more relevant players in high performance, power-efficient computing. The efficiency and raw power of GPGPU will be important in both client and server segments, and with major software support from Oracle, Mathworks, and others, the technology will eventually become critical across the entire compute continuum.
So, right now, the two best bets in the space are, naturally, the GPU vendors, AMD and Nvidia. AMD has a lead in integrating its GPGPU technology into low cost, mainstream parts and in deepening that integration with each iteration of its CPUs. Nvidia's software support with its proprietary "CUDA" platform has been excellent, however, which is why the company's accelerators are found in a number of Top 500 supercomputers.
So AMD's has the client/mainstream whereas Nvidia is winning over the hearts of the HPC/supercomputer crowd with dedicated accelerators. I believe that both will prosper, but AMD's presence in the PC/notebook/server spaces gives it a much larger total addressable market.
The real question is how will this affect the Intel/AMD dynamic going forward? Intel's CPU designs are typically faster and more power efficient, but AMD's GPUs are faster and more feature-filled than Intel's. In a world where GPGPU becomes a major performance driver, AMD would become fiercely competitive, which could drive its ASPs (and gross margin profile) up considerably in all its major segments.
This first step to GPGPU for the masses via Oracle and Java is the key to the realization of AMD's "heterogeneous system architecture" plan. With the software support in place, AMD's products become a lot more compelling and competitive - improving sales, margins, and ultimately profitability.