What Would You Do With 6 Processors?

The final specs for Microsoft’s Xbox 360 have been public for some time now. Microsoft has even committed to a launch date of November 22 of this year. Predictably, the spec sheet raises more questions than it answers.


Xbox 360 Logo

For example, the specs state that the unit is capable of 9.6 billion dot products per second. I thought a dot product between 2 n-element vectors , v1 and v2 is computed as:

[(v1.1 * v2.1) … (v1.n * v2.n)]

So I can not help but wonder how big the spec’d vectors are? I hear that the math behind 3D graphics uses a lot of 3-element vectors so maybe that drives the size of these calculations. Working in multimedia, I am exposed to a lot of different vector sizes.

Further, the audio capability includes “over 256 audio channels” and “320 independent decompression channels”. What that means is anyone’s guess.

But those features are not my primary interest here. I am curious about the 3 symmetric 3.2 GHz processor cores with 2 hardware threads each which adds up to 6 total hardware threads. I am wondering: What would you use that for in a multimedia context?

When the Xbox 360 is inevitably hacked so that users can create and run their own software, the console will make a great home multimedia center, similar to the current Xbox equipped with Xbox Media Center. There will be quite a few obstacles to overcome first including, of course, getting the console hacked (via hardware modding or software bugs). Then we need to figure out how to create programs that run on the Xbox’s CPUs (the chips are custom PowerPC-based chips, but will they share the same instruction set architecture, or ISA, as current PPCs? If so, it is reasonable that current software tools should be able to create strings of opcodes that the chips will execute correctly). Then, there is the matter of communicating to the hardware (the super-custom video hardware, the audio hardware, the controller input peripherals, and the less sexy stuff like the hard disk controller, network interface, the interrupt chip, clock chip, etc.). But assuming these obstacles can be overcome and Linux or NetBSD or perhaps a more appropriate real-time console OS can be made to run on it, maybe there will be an opportunity to turn it into a media center. We already have the libraries ready for recompilation; we just need the development infrastructure (“Sure! No problem,” I hear you cry).

Anyway, what could those 6 hardware threads be used for? I was brainstorming along the lines of mimicking xine’s model and doing something like this:

  1. a thread to manage the whole show and communicate with the user (take input through the controller, update on-screen GUI); also manage loading data from input source (optical disc, HD, or network)
  2. a thread to manage video decoding
  3. a thread to manage audio decoding
  4. a thread to manage subtitle decoding
  5. a thread to manage video presentation
  6. a thread to manage audio presentation

Though, as a colleague of mine helpfully pointed out, one of these 6 hardware threads should be plenty tough enough to handle all of the chores involved in multimedia playback. True, but if the capability is there, may as well use it. I wonder if it would be possible to use multiple hardware threads for parallel video decoding, as that invariably takes the most time? Since many modern video codecs are slice-based, how about assigning different hardware threads to decode parts of the picture? Again, probably academic in nature, and not particularly necessary.

Maybe it would be possible to hack up a virtual machine that can run a game, capture the rendered video frames and encode them in real-time to the hard disk. Just tossing around ideas at this point which, per my reading, is precisely what the Xbox 360 first- and third-party developers are doing. Same with developers for all the next-generation gaming consoles (Sony Playstation 3 and Nintendo Revolution) since it seems that no one is entirely sure how to effectively use these allegedly super-powered multiprocessor systems.

Do you have any ideas?