ABSTRACT

Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

Introduction of multi-core processors is one of the most significant changes in the semiconductor industry in recent years. The shift to multi-core technology was preceded by a brief stint with the use of multiple virtual processors on top of a uniprocessor machine. Virtual processor techniques like the Intel Hyper-Threading technology [5] depended heavily on the distribution of computation between virtual processes. Improvement in performance due to the new techniques notwithstanding, the software which runs on these machines has remained the same. However it was soon realized that driving processor speed or simultaneous multi-threading did not solve power problems. The responsibility for driving up efficiency of multi-core systems now rests on the utilization of processing power by the software. Efficient distribution of work using multi-threaded programming or other parallel programming models must be adopted for this purpose. Embedded systems are following the lead of multi-core processors and will very soon transform themselves into parallel systems which need new programming models for design and execution. ARM Cortex-A9 [1] and Renesas SH-2A DUAL [15] are examples of such embedded processors. The buzz about parallel programming has resurfaced due to these developments and a rethinking about programming models for real-time software targeting embedded systems is underway.