« One is the loneliest number... | Main | Disks in the ether »
May 05, 2005
Co-dependent co-processors
I remember in the early '90s, debating with a friend of mine whether or not a 40MHz 386SX would be faster than a 25MHz 386DX. Co-processors were still a big deal then, with both the 386 and 486 processor lines having models that didn't have a dedicated FPU.
I think that co-processors are poised to make a huge comeback in the coming years. There are lots of new computing technologies coming down the road where it doesn't make sense to run an entire operating system on top of them.
I'm talking about things like quantum computing, DNA/Molecular computing, GPU/PPU/FPGA chips, and IBM/Sony/Toshiba's new Cell processor.
It's not like the idea of the co-processor has really died, anyways. PCs have had add-on sound and graphics cards for 10-15 years now, it's just that instead of having a socket on the motherboard, we plug cards into the expansion bus. The buses used to be a lot slower than using a socket to get a direct line to the cpu, but modern buses are very fast. PCIe is making it possible for people to create 4-8 port gigabit ethernet cards without worrying about oversaturation, since PCIe currently scales between 200MB/s to 3.2GB/s (in both directions!). The connections between cpu and memory will probably always be faster than those between the cpu and its peripheral devices, but modern buses are a much higher fraction of that performance than the olden days with 33MHz PCI.
Ultimately, I envision physicists plugging in four PPU cards into their cluster hosts and running specialized software to model n-body simulations, allowing them to purchase 1/10th the number of normal cluster hosts, which means less power, cooling, and network requirements, which end up being the hidden costs of clusters. Or a OS X-based HDTV video streaming host that has 4 Cell boards plugged in for offloading complex encoding tasks to Cell's optimized architecture, freeing the machine's CPU and GPU for UI, job control, brokering jobs, streaming the encoded streams over the network, etc. The list goes on and on.
With these hypothetical systems, the OS still runs on the CPU architectures we've grown to love and hate, it's just that certain types of computations are pushed off onto specialized hardware. It's taking the GPU model and applying it not just to graphics, but any type of computation. PPUs are starting to get a bit of mindshare, so I think it's only a matter of time before the onboard CPU becomes less of a measure of performance compared to the add-on processing boards that are added to a machine.
Servers might still just have vanilla CPUs, but multimedia and scientific applications could take huge advantage of specialized engines. Think of the performance increase you get with Altivec on bioinformatics algorithms, and multiply it by one or two orders of magnitude. Altivec is more specialized than a cpu, but there are other solutions out there that are more specialized, if your problem space is narrow enough. For example, FPGAs can SCREAM on certain types of algorithms, and blow away even dedicated vector units like Altivec. There's a reason why Echelon runs on FPGA-based hosts with solid-state memory instead of Xserves. :-)
And the more exotic technologies (quantum, molecular, and optical computing) aren't too far away. Maybe the first coarse models in 5-10 years? I read about quantum crypto getting small scale field tests today, so I wouldn't be surprised to see expansion boards for it in five years. Of course, all this talk of expansion boards assumes that the technology is small enough to fit on a board inside a normal case, which is a big assumption. But I like to believe that eventually, they will be that small.
And the physics processing units (PPUs) wouldn't necessarily be for scientists. Imagine how much more intelligent artificial opponents in games could be if all the graphics and physics calculations are taking place in your GPU and PPU chips, leaving your CPU free to focus on AI and networking. I love to boot up old games in my emulators and remember how basic the graphics and sound were 15 years ago; I think we don't stop often enough to reflect and marvel at the progress computing technology has made in our lifetimes. It can be sobering if you think about it.
In fact, a couple years ago, a good friend of mine and I were talking about when we'd start to see the first cases of PTSD from playing over-realistic FPS games. I'd argue that there are probably cases out there already, but I think we could see widespread mental health issues 5-10 years down the road when the games are that much more real.
Posted by djb at May 5, 2005 12:06 PM