Last year I had the pleasure of attending a presentation at JavaOne 2006 given by Cliff Click, Azul's Chief JVM Architect, on scaling up an application on a 384-way machine using a few simple concurrent programming techniques. A program that took weeks to run on a fast Pentium processor was reduced to minutes on the multicore box. After the Intel announcement, I tracked down Cliff to get his thoughts on multicore.
[Cliff] Our Vega processor is designed specifically to execute object-oriented code, such as Java. It has specific instruction sets and component architecture needed to execute this code more efficiently. Because of this specialization we are able to make each core very small and pack up to 48 cores on a single chip in our Vega 2 processor.
Some of the unique instruction sets we can deliver enable us to boost Java performance, such as our instructions for Java memory garbage collection, which allows a single Java application instance to leverage nearly unlimited amounts of memory without a performance penalty - something you can't do with traditional servers.
[Ed] How does multicore hardware change the way that programmers need to think about their art?
[Cliff] In the case of Azul, it doesn't require any change to software design. In fact it opens up new freedoms for Java developers. Now they can take greater advantage of parallelism, use more memory and do more. In the case of other multicore designs, the answer depends.
[Ed] Does massively multicore hardware demand new programming languages and paradigms?
[Cliff] In some cases, yes. In the case of Azul, no. Standard Java code runs unmodified on our systems. For programmers who want to write to the specific instruction sets of these new multicore designs, such as IBM Cell and others, yes, they need the specific instructions to do so. Java applications are masked from the specific instructions of the Vega processor by the Azul Virtual Machine. Just write standard Java code, load it into our VM and you are off and running.
[Ed's note: In fact, Azul changed the instruction set between Vega 1 and Vega 2 to help get a 300% boost in speed over the one they showed at JavaOne. But since all application code is in Java, there was no need to recompile it to run on the new machine.]