CPU and GPU - The Convergent Technology?

Fundamentally PC architecture hasn't changed in many years. About 18 years ago my Windows 3.1 machine had a Intel Pentium 66 MHz - back then we were measuring manufacturing size in micrometers not nanometres, but really my current Core i7 machine isn't radically different in terms of the hardware inside. What we have seen is evolution, not revolution.

Geek time...

CPU Core Count

What has been impossible to ignore though is the ever increasing number of computing cores available. Nvidia are on the verge of releasing a quad core ARM processor for mobile use and dual cores mobiles are already available. Quad core is nothing new to the PC game, in fact Intel are at six cores and as my crude graph shows we expect 8 cores at some point next year with Ivy Bridge. 

Cpu_medium

GPU - The King Of Cores

Quad core? Hexacore? Octacore? GPU's laugh at these tiny numbers. In the GPU world we are talking about many hundreds of cores, not just a handful. More on this later...

Nvidia_medium

GPU - The King Of Power

Cores by themselves mean nothing, the more important measure is what advantage you get. Perhaps for mobile devices you may be concerned about efficiency. For general PC use we tend to care more about raw processing power. The graph below is something I produced a few weeks ago in preparation for some research I am carrying out solving non-linear partial differential equations (Navier-Stokes) on GPU's - the perfect measure for this kind of mathematical computing ability is FLoating-Point Operations Per Second, or handily FLOPS for short. Those not familiar with this it is simple the number of instructions per second performed by the processor.

Flops_medium

So why don't we just switch to merge these two devices into a killer single processor?

Limitations, Of Course

If the problem was this black and white we wouldn't have CPU's right now. Why would I be using my 70 GigaFLOP/s Core i7 when I could be using a 1,500 GigaFLOP/s Nvidia chip? The simple answer is GPU's moving into general computing space is a relatively new occurrence. In just a few years we have moved away from GPU's with cores assigned to specific purposed to a more general purpose GPU that can perform all of the graphics tasks (Vertex Shader, Pixel Shader, Texture Mapping etc). Hence a lot of these limitations are overcome - take a current generation Nvidia card, we have 512 cores which are MIMD, Dual Precision and so on, equivalent to a CPU in many respects.

Aren't We Here Already?

Yes. And, No. Nvidia have CUDA available to programme on their GPU's - that's great but it doesn't make the GPU a CPU replacement. Our closest thing to this are the Accelerated Processing Units (APU's) in the form of chips such as AMD's Fusion and future 64 bit ARM projects like Nvidia's Project Denver. But APU's just combine the two discrete processors on a die but keeps them separate, it doesn't replace both with a unified processor.

Apu_medium

But we aren't far off...

Already Windows has ditched its exclusivity to x86, on the backend HP are offering ARM servers and as previously mentioned there is the ARM APU from Nvidia, Project Denver. What this shows is that we aren't stuck in an x86 world, ARM is out there too. Nvidia are currently king of GPGPU (computing on graphics cards), very strong in mobile (Tegra 2, Kal-El/Tegra 3) and now looking at PC/Laptop style devices with ARM.

In the future I see a convergent CPU-GPU, likely ARM architecture and with Nvidia best poised to make the biggest impact. Where Intel fits in this, where x86 fits, I don't know.

Can you see a future with Intel? I can't.