An effective multicore design strategy requires use of software tools that allow programmers to focus on the design elements themselves, not on the precise details of exactly how they are implemented.
Great hopes are being pinned on multiprocessor and parallel
architecture as the answers for the continuing development of
electronics and computing. Microprocessor designers have acknowledged
that they can no longer rely on higher clock rates and increasing
instruction-level parallelism (ILP)
for performance increases.
Absolute performance, increasing power and rising cost mean that
running faster passed the point of diminishing returns long ago. Most
of the industry would agree that multicore is the way forward - that
the principal challenges of multicore design have been successfully
overcome, and the move to practical deployment can begin.
Main multicore drivers
There are two main drivers behind the move to multicore technologies.
The first is that it has become clear that "the real world is
parallel." When computer scientists try to identify primitive functions
which they can use as universal building blocks for more complex
programs, they invariably find that these building blocks are
inherently parallel processes.
Moreover, the most rapidly expanding sectors of the electronics
market - media processing and data compression - are exactly the areas
where this parallelism is most pronounced.
Progress has been made in helping the designer to exploit this
natural confluence of application requirements and parallel
architectures. Mainstream processors from Intel Corp. and Advanced
Micro Devices Inc. are moving to dual or quad processors which are
loosely coupled, allowing performance gains approaching 2X and 4X,
without dramatically changing the programming model.
But the need for greater performance calls for increasing the
numbers of cores - and that impacts the programming model. Multicore
and parallel processing systems have traditionally been perceived as
extremely hard to program, requiring special-purpose tools (Figure 1, below) and expert
knowledge, and this has been the clichéd reason why multicore
processors have historically failed.
 |
| Figure
1. The ability of tools to automatically configure low-level details of
the parallel elements, to automatically allocate tasks to cores, and to
configure the interconnect is critical. |
However, products such as multicore DSPs can be configured and
programmed using standards-based tools that are intuitively understood
by chip designers and programmers.
The second driver for the adoption of multicore techniques is the
slowdown of advances in uniprocessor development, despite clock rates
currently standing at 3GHz and transistor counts moving into the
hundreds of millions.
From 1986 to 2002, microprocessor performance rose by 52 percent per
year, effectively doubling every 18 months. By 2006, the rate of
advancement has slowed to less than 20 percent per year, so that today,
performance doubling may be taking as much as five years.
There are many reasons for this slowdown. For a start, system
architects are no longer able to wring further gains from ILP
techniques. At their most basic, these involved tricks such as simple
instruction pre-fetches.
But they now encompass very complex techniques such as outof- order
execution and branch prediction. In many cases, the increased
complexity outstrips the performance gained. Replacing ILP with task-level and word-level parallelism is the
only way to reap further gains.