Intel and Freescale helping to push standards in multicore application development, but the future may still be far off…
For CPU companies like Intel and AMD, a barrier for organizations to derive maximum value out of their processor roadmaps is a fundamental one - CPUs are becoming increasingly multi-core, yet software to take advantage of these capabilities may be years away. The announcement from the Multicore Association that a programming interface specification will be available this month is a sign that this difficult problem may be solvable over the coming years.
Why is programming for multi-core processors hard?
1) It’s not deterministic, which means that an application may not run the same way twice - splitting a job amongst different processors should be done dynamically according to which one is most free.
2) For programmers, debugging a program is significantly more difficult in a multicore environment due to a lack of tools and the difficult in re-creating an error scenario as mentioned in #1.
3) And for programmers, breaking up jobs among different processors has been done in only very application-specific cases. Tasks like scientific research and DNA mapping are examples where task-splitting has been done before with very good results, but not a lot of programmers are well-versed in writing applications in a multi-core environment.
The approach from the Multicore Association will look to use regular programming languages (C/C++ for example) that will enable messages to passed between applications running on the same multicore processor in an efficient and safe manner. This approach differs from the approach being put forth by a group of universities espousing Pervasive Parallelism Laboratory (PPL) which includes universities like Stanford, Illinois, and UC-Berkeley and industry participants like Intel, AMD, Sun, and NVIDIA. The difference in the case of PPL is that they are looking at much more application-specific interfaces like database and math operations in order to drive adoption of parallel programming concepts in these end-user apps. And as I wrote about last week, off-the-shelf GPUs from companies like NVIDIA and AMD are getting into the game through general purpose GPU interfaces (GPGPU) that can enable orders of magnitude improvements in scientific applications at unheard of price points.
In summary, the impending release of the Multicore Association’s programming interface standard is a sign that chip makers are realizing that changing to a new programming paradigm is going to take a lot of heavy lifting and are looking to build momentum in this area over the coming 4-5 years. In the meantime, this is providing a good foundation for Virtualization to thrive, as it provides a near-term strategy to IT managers to derive more efficiency out of existing IT resources by different virtual machines to run on different processor cores. The only issue for Intel and AMD is that virtualization right now won’t really drive spending on high-end multicore processors *today*. In other words, a good environment for VMWare and Citrix.