Make no mistake about it, multi-core is the wave of the future in processor technology. Technologies having the best chance of crossing the chasm from early adoption to ubiquity are those that become "must-have" rather than "nice-to-have," so let's start by explaining why multi-core is must-have.
Historically, designers achieved higher performance in each processor generation by packing greater numbers of smaller transistors into a given space and clocking them at increasing speeds. True to "Moore's Law," that design model drove an exponential performance curve for the past 30 years... But designers finally reached a technological brick wall where further pushing transistor count and clock speed result in a device that simply becomes too hot to cool, leaving the only path to higher performance being multi-core- the integration of two or more processing cores on a single chip. Power and heat are manageable in multi-core configurations because the individual cores can be run at reduced frequencies and voltages. Moving forward, performance will be gained by adding more cores rather than increasing frequency.
For high performance embedded applications, Intel® has to date introduced several models of dual- and quad-core processors, with many planned to follow. http://www.intel.com/products/embedded/processors.htm?iid=processors_body embed_ia
Intel® multi-core processors remain software-compatible with previous Intel® Architecture processors. However, developers should expect that optimizing application performance in a multi-core environment may require some degree of modification, but rest assured that various tools are available to support that effort.
With each core functioning separately, multi-core designs allow different processes or threads to execute simultaneously on the available cores, enhancing overall performance. Asynchronous Multiprocessing (AMP) and Synchronous Multiprocessing (SMP) designs are among the approaches to using the multiple cores. Since both techniques are already proven in systems integrating multiple separate processors at the board level, they are naturally extended to multi-core.
AMP partitions the hardware resources and explicitly designates specific applications and OSs to run in each partition. For example, it's possible to run mission-critical tasks on a dedicated core, unencumbered by tasks that would otherwise compete for CPU resources. Intel® Virtualization Technology is an AMP solution that provides hardware assist for better virtualization performance.
An SMP Operating System (OS) treats the hardware as a pooled resource and dynamically assigns processes to the available cores. Under SMP, best performance is realized when the application itself is enabled for parallel execution. This can be accomplished by decomposing a single, serial program into parallel function and/or data streams, using process threads to leverage the inherent parallelism of the hardware.
Intel® multi-core processors are mainstream today, along with software and tools from Intel® and the ecosystem to support application migration. Announced OEM products deploying Intel® multi-core include: GE Fanuc ATCA-7820 and Kontron CP307 and CP6012. Many other OEM designs are well underway.
In future posts, I plan to further explore the subject of software migration onto multi-core systems, so readers please let me know if you have any specific topics of interest.