Of Course The Transformers are Multicore with SMT technology
Moore's Law, Amdahl's Law, Murphy's Law. It's getting to be a bit much.Some want to make faster chips, while others think that slower chips in greater quantity are the ticket. The arguments over power consumption vs. performance vs. cost can become very squirrly. I just want to know whether the Decepticons and Autobots are multicore -- and if they are multicore, what operating systems do they run and what programming languages were used in the process of getting them to do what they do so fast.
After all, the Decepticons and Autobots are probably a bigger factor in where the parallel question is leading than any of those Laws. I know that sounds a little on the far side of complexity, but just think about it. It will make complete sense in the morning. However, I can say this that our insatiable appetite for immersion will always require more processing power than we currently have, no matter how much processing power that is. Massive parallelism is a necessary inevitability and the Decepticons and Autobots are the proof in the pudding.
If I had to be the one to program the Decepticons and Autobots, I would undoubtedly use C++. In particular, a C++ implementation that is based on the new ISO standard for C++. For now the new standard is referred to as C++0x. It will probably be considered "official" later this year or in 2010, with the final ISO blessing somewhere late 2010 or early 2011. I would use a new C++ implementation because the new C++ standard has direct support for concurrency by way of threading facilities, atomic classes/operations, and other goodies. Also, I would venture to guess that to program the Decepticons and Autobots I would have to talk directly to the hardware at some point and C++ is a good language when you have both high-level and low-level programming (hardware) on the menu. The other reason that I would pick C++ is that it supports multiparadigm programming. Meaning that I'm not stuck with any one programming metaphor. I can use object-oriented, generic, structured, and logic programming techniques along with Spaghetti code (where required). Because of the template library approach that C++ takes, it can also support programming paradigms that haven't been thought of yet. This is good because many of the new paradigms necessary to handle massive parallelism are still on the drawing board. C++ is designed to be extensible which makes it the prime candidate for getting Optimus Prime to do what we need him to do.
C++ and it's STL are also the basis for the STAPL, short for the "Standard Template Adaptive Parallel Library". STAPL (when it gets here) is going to support powerful parallelism and distributed programming models. We could look at the Transformers as autonomous agents in a distributed cluster operating in parallel. In which case STAPL would be just what the doctor ordered. We will have more to say about STAPL but at the moment the new C++ concurrency support and tuple container support has Tracey and I in a tizzy, albeit a good tizzy. GCC is adding support for the new C++ standard, we were just dabbling in GCC 4.3 and there were bits and pieces of the new standard implemented (for experimental use mainly).
Although our focus for the moment is on Level 1 parallelism and deconstructing the complexity of the problem model in Level 1, at some point we do get to the nitty gritty and at that point C++ is always in the mix (beware there are others). If in fact the Decepticons and Autobots are multicore (and we think that has to be the case) then we vote for C++ as the most realistic choice for the heavy lifting.