Monday, September 04, 2006

Cool Hardware, AGEIA PPU

PPU? No, it isn't a hint that you smell bad. An acronym similar in structure to GPU (graphics processing unit) and CPU (central processing unit) a PPU is a chip that processes physics. Why, you ask? Well, for games really.
To put it simply, CPUs are very, very unspecialized processors. They are made (intentionally) to do a wide variety of tasks, from the way they are programmed right down to the physical structure of the chip itself. This makes them great for general processing. It also makes them terrible for certain specialized tasks.

What tasks? Well, anything that involves multiple "threads" at a time. That is to say, normal CPUs process in what is largely a linear process. Take a chunk of data, do something to it, put it somewhere, grab the next piece, and so on. They aren't really made for taking fifteen pieces of data and simultaneously manipulating them. These sort of things are best left to specialized hardware -- such as GPUs and CPUs.

To give you an indication of how big of a difference processor structure can make, my relatively new CPU (AMD Athlon 64 3700+ 2.4Ghz processor) can run a fairly graphics intensive demo at...a whopping 0-2 fps (frames per second). On the other hand, my GPU (eVGA 7900GT) can run the same demo at 60+ fps. This is due to two things -- onboard RAM (the GPU has its own memory, 256 MB of it) and a side-by-side processor architecture, which allows it some degree of simultaneity through little mini-processors called "shaders" and "pixel pipelines". These basically funnel data in and around the processor so it can move away from linearity.

Enough of the boring stuff -- and into the cool hardware! PPUs are a new field in computer hardware. As it is right now, only one company has a PPU on the market - AGEIA. There's a great page that gets really into the technical stuff behind the scenes that makes it go here if you want to know more.

PhysX with a PPU makes real life, cinematic gaming possible. Two of the main things that computer simulations simply couldn't do well in real time were cloth and fluids. This is because there are just way too many calculations going on for the processor to decide where everything is going and feed that data to the video card to be rendered. Enter PPU -- and voila! You have realistic looking cloth that tears...fluids that flow...things that bounce, bend, twist, and crunch just like they would in real life. And all of it in real time. Imagine being able to shoot your way through a brick wall -- or shrapnel that actually acts like shrapnel. How about crumpling paper up in game? Or setting something alight and watching it burn like real? Or even car wrecks, airplane flights, frogger games...this has potential in literally any game (even solitaire! real cards that bend!).

For many of you, this won't change a thing in your daily life. However, this has implications more wide-reaching than just in the gaming community. The immense vector processing power available in the card literally dwarfs that currently available on multi-thousand dollar supercomputers; this card is available for ~$250. I suspect that professors, engineers, and anyone who uses simulation software will be thankful for this technology in no time. Matlab, AutoCAD, Inventor, and SolidWorks are just a few programs that could drasitcally benefit from this hardware.

To give some concrete numbers, using a Pentium D950 to calculate an impact of 4,600 solid objects you would see a 100% CPU load and 2-5 fps. Using the same Penium D950 with the PPU would net you 40+ fps with 0-5% CPU load. It takes all the work off of the processor so it can do other things. The PPU can perform up to 32,000 simultaneous sphere-to-sphere rigid (i.e. non-deforming) collisions! Thats amazing.

At any rate, this is some cool technology. Here's a review (what sparked this post) for you, if you still care to read more. And here's a link to Ageia's bells and whistles site, with all kinds of videos and screenshots to show you what this thing is capable of.