I certainly intended to post more often when we kicked off these blogs, but I got distracted by a massive avalanche of work obligations landing on my head, the first of which was my trip to IDF. I didn't expect to see much new come out of IDF this time around, and I suppose in many ways, not much did. But amazingly, during the course of that week, the future of CPUs, GPUs, and computing in general crystallized for me. Just taking in all of the information and processing it, from IDF meetings to ATI's Stream computing event, was taxing to me, because it all had significance and all seemed to fit into the same big picture. Over the course of the following week, I was able to process it all and produce at least a few write-ups about it, including my IDF wrap and my ATI Stream computing write-upnot many words, all told, but the significance of it is huge.
For ages, since I can remember back in the Atari 800 days when my PC enthusiasm began, the best and most promising ways to do cool things with a computer involved essentially two things: get a big, fast CPU to handle general computational tasks, and if that's not good enough, use custom hardware to accelerate it even further. Over time, GPUs became the obvious poster child for successful custom chips, with other tasks like audio and storage I/O becoming less glamorous for various reasons. With that background, I had kind of assumed that custom hardware would eventually become the obvious right way to handle things like 3D positional audio and physics simulations, if CPUs didn't become fast enough to do those things well.
I don't assume that any more, and not just because CPUs are becoming more parallel (though that is part of it.) Call 'em what you willGPUs, tera-scale computers, parallel coprocessorsbut there is a new class of processors coming, and they will be a huge part of computing in the years to come. We spent the past 10 years or so working out the first and most obvious application for this type of processor, but the GPU will change to accommodate more applications. If things work out as they should, GPUs will become better at graphics at the same time as they become more capable at non-graphics tasks. The next 10 years in computing will likely be spent working out the chip architectures, programming interfaces, optimal algorithms, and consumer applications for highly parallel processors that do more than shade pixels. We'll also have to figure out how many of what types of cores (big CPU, small/simple FP processor, dedicated custom hardware accelerators) we want and need for different classes of computers and what bits of silicon in a system will house those various types of power.
To hear the GPU guys talk, well, they're very modest. They say they don't want to threaten the CPU, that GPUs and CPUs can and should coexist, and that they're targeting a specific class of problems with their stream computing/GPGPU efforts. All of this is true. Both types of processors are needed. But to say you want to tackle the things in computing that CPUs don't handle especially well is to say you want to do the heavy lifting for 80% of the cool stuff: graphics, video processing, physics, image processing, various forms of smart searches (including pictures and video), facial recognition, and modeling of all sorts of simulations of phenomena in the natural world (including protein folding, to name one already prominent example.)
I don't think this trend will leave much room for custom chips beyond, say, traditional I/O logic and things like that. There are some interesting ideas about reconfigurable computing power being kicked around in the world of FPGAs, but I haven't looked into that much. I'm not sure whether that's a part of this trend, something a little different, or just some traditional FPGA providers trying not to get run over by what's coming down the pike from the big dawgs.
One obvious potential casualty in all of this is Ageia, who is making a run at gaming physics about two years later than they probably should have. Their best hope may be to keep developing a complete physics solution, see that their API and tools used are used by game developers, and hope to become a worthwhile purchase to one of the big chip firms. I just don't see how they can fund development of a truly competitive highly parallel floating-point processor through the use of venture capital and whatever they'll make off of hardware sales to early adopters. I look forward to being proven wrong here.
Anyhow, maybe I work differently than most folks, but it's taking some energy to wrap my head around what feels like the first really fundamental change in computing in yearsnot that it isn't an extension of trends that have been apparent since the beginning of personal computing.
Meanwhile, I'm swimming in it. My emails to ATI about GPUs are being answered from @amd.com email addresses. I never even got a chance to write about my meeting with a coprocessor vendor called ClearSpeed at IDF, and other such opportunities are having to be pushed aside just so I can keep on top of the most pressing new developments. I have systems in the labs with all manner of parallel processing power. Dual-core laptops are scattered about on the counter-top as I write. Servers with four and eight cores are hogging the floor space. You guys already know the CPU code namesKentsfield, Clovertown, and 4x4and the GPU code namesG80 and R600for much of what's coming. So many new things are imminent as PC hardware vendors line up meet the release of Windows Vista and the possibility of a big PC upgrade cycle. For me, the task ahead of covering it all in the next few months is incredibly dauntingbut man, is it exciting, too. I wouldn't have it any other way.