Sunday, February 03, 2008

Scacchic Sages; or the King is Greatly Discommoded

While working with the the Android API, I've found that it's impossible not to wonder where Google is going with this, even if only for a moment. Generally we expect that Google's major projects are focused on one of two goals: to organize the world's information, and to facilitate advertising on the web. Generally their major web apps, research projects and acquisitions fall into one of these two categories, if sometimes, a little loosely. However, Android appears to be not only Google's biggest new initiative; but also the one that falls least clearly into Google's general business goals.

In the past, we've seen large companies make what appeared to be giant leaps sideways, but in hindsight now appear to be nothing but brilliant innovative leaps. Apple's ipod is a clear example, and a particularly relevant example--here Apple revived their core business by heading off in what originally seemed to be a completely unrelated direction. Now, however, the ipod is so caught up in the identity of Apple, it's hard to imagine a mac computer without it's little consumerist side-kick. Now, Steve Jobs can confidently refer to the music industry and music retail as part of Apple's traditional business domain. Could it be, that in five years time, we'll see Google and Android is the same way?

About half a year ago, now, Google acquired a company called PeakStream. They were working on an API and virtual machine that is designed around a steam processing model for massively parallel processing. There's some diagrams here. Now this feels like very familiar territory for me, because, as it turns out, the games industry is somewhat in-front of the field in this regard. In the PS3 and XBOX 360, we've already been forced to turn to various forms of stream processing technique in order to get peak performance out of the hardware. In a way, we've seen in the industry a bit of a regression to an older style of hardware, characterized by the term "NUMA", something that's I've come to associate with the very oldest Cray supercomputers.

Just as Cray gained a competitive advantage by levering the possibilities of NUMA, so to does the PS3 (at least, potentially), and so to will other performance maximizing sectors. Generally we've seen processors move away from this architecture because it's considerably more difficult to program; or, perhaps more accurately, it required use of considerably more advanced techniques and methods. And yet, as computer science evolves, those advanced methods become easier and easier to grasp, and the advantages of NUMA massively parallel architectures become of more general benefit.

PeakStream, I imagine, is trying to capitalize on that concept. But the thing that catches my attention, right now, is two key words: virtual machine. Something there rings a bell, because we know that Google is working on their own virtual machine. It's a key competitive advantage to Android, in fact--it's what can potentially set Android phones apart from traditional Java supporting phones. That is, Google's "branched" Java VM, called Dalvik. Dalvik supports a lot of the Java bytecode, but has certain performance advantages. Those advantages are curious hardware-focused (as opposed to being algorithmic advances): in particular, Dalvik is register based, and it allows for sharing of some system memory components.

So; I can't help but wonder if there's a cross-over here, somewhere. Dalvik with PeakStream, Android for NUMA architectures? NUMA architectures (that's a bit like saying "ATM machine", btw...) tend to be great for getting very high levels of theoretical performance out of relatively few transistors, as well as being particularly scalable. There seems to be very little information about Android hardware about, though I've come across some rumours to the effect that we may be seeing some new processors that execute Dalvik bytecode directly. We might expect, though, that at least the first generation of devices will be ARM or XScale based. As far as I know, there are no massively parallel versions of these on the horizon... But, you never know. At the very least, ARM seem to have a multi-core version of their Cortex processor.

Perhaps, one day, we'll see a phone with a low end Cell chip in it. That's what I'm waiting for.

0 Responses: