Many Core Processor Architecture
Many Core Processor Architecture
2.1 Overview
In 2001 the first general-purpose processor that featured multiple processing cores
on the same CMOS die was released: the POWER4 processor of IBM. Since then,
multi-core processors have become the norm and currently the only way to improve
the performance for high-end processors is to add support for more threads, either
in the number of cores, or through multithreading on cores to mask long-latency
operations.
There are multiple reasons why the clock rate gains of the past cannot anymore
be continued. The unsustainable level of power consumption implied by higher
clock rates is just the most obvious and stringent reason; equally important is the
fact that wire delays rather than transistor switching will be the dominant issue for
each clock cycle.
2.2 Architectural Principles
2.2.1 Established Concepts
The very concept of multi-core architecture implies at least three aspects that will
be the main topics of this chapter:
• There are multiple computational cores
• There is a way by which these cores communicate
• The processor cores have to communicate with the outside world.
2.2.1.1 Multiple Cores
The concept of multiple cores may seem trivial at first instance. However, as we
will see in the section about scalability issues there are numerous tradeoffs to con-
sider. First of all we need to consider whether the processor should be homogeneous
or expose some heterogeneity. Most current general-purpose multi-core processors
are homogeneous both in instruction set architecture and performance. This means
2.2 Architectural Principles 11
that the cores can execute the same binaries and that it does not really matter, from
functional point of view, on which core a program runs. Recent multi-core architec-
tures, however, allow for system software to control the clock frequency for each
core individually in order to either save power or to temporarily boost single-thread
performance.
Most of these homogeneous architectures also implement a shared global ad-
dress space with full cache coherency (which we discuss later), so that from a soft-
ware perspective, one cannot distinguish one core from the other even if the process
(or thread) migrates during run-time.
By contrast, a heterogeneous architecture features at least two different kinds of
cores that may differ in both the instruction set architecture (ISA) and functionality
and performance. The most widespread example of a heterogeneous multi-core ar-
chitecture is the Cell BE architecture, jointly developed by IBM, Sony and Toshiba
[2] and used in areas such as gaming devices and computers targeting high perfor-
mance computing.
A homogeneous architecture with shared global memory is undoubtedly easier to
program for parallelism—that is when a program can make use of the whole core—
than a heterogeneous architecture where the cores do not have the same instruction
set. On the other hand, in the case of an application which naturally lends itself to
be partitioned into long-lived threads of control with little or regular communica-
tion it makes sense to manually put the partitions onto cores that are specialized for
that specific task.
Internally the organization of the cores can show major differences. All modern
core designs are today pipelined, where instructions are decoded and executed in
stages in order to improve on overall throughput, although instruction latency is the
same or even increased. Most high-performance designs also have cores with specu-
lative dynamic instruction scheduling done in hardware. These techniques increase
the average number of instructions executed per clock cycle but because of limited
instruction-level parallelism (ILP) in legacy applications and since these techniques
tend to be both complicated and power-hungry as well as taking up valuable silicon
real estate, they are of less importance with modern multi-core architectures. In fact,
with some new architectures such as Intel’s Knights Corner [3], the designers have
reverted to simple single-issue in-order cores (although in the Knights Corner case
augmented with powerful vector instructions, in order to reduce the silicon footprint
and power consumption of each core).
A counter measure for limited instruction level parallelism added to the most
advanced cores is simultaneous multithreading (SMT), perhaps better known by its
Intel brand name hyper-threading. This is a hardware technique that allows better
utilization of hardware resources where a multi-issue pipeline can select instruc-
tions from two or more threads. The benefits are that for applications with abundant
ILP, single-thread performance is high, while with reduced ILP, thread-level paral-
lelism can be utilized. Simultaneous multithreading has the nice property that it is
relatively cheap in terms of area (the state for each thread and a simple thread selec-
tion mechanism) and extra power consumption.
12 2 Multi-core and Many-core Processor Architectures
2.2.1.2 Interconnection Networks
2.2.1.3 Memory Controllers
P P P
P P P
P P P
P P P P
P P P P
P P
P P P P
P P P P P P
One would expect synergies in the case of parallel programs that divide the work
in a data-parallel fashion. In such programs, threads executing on different cores
tend to work on the same instructions and with data located close to other threads’
working-set and therefore the likelihood that they will access the same DRAM-pages
is increased. On the other hand, when multi-core processors become many-core,
we will see space-sharing in conjunction with the time-sharing that takes place in
today’s operating systems. This also happens if multi-core processors are used for
throughput computing with multiple sequential applications rather than using them
for parallelism. In these cases, the different applications will fight for the shared
resources and may severely interfere with each other.
The memory controller is also the place where sophisticated pre-fetch mecha-
nisms are usually implemented.
On the other hand, better utilization of increased memory bandwidth also leads
to increased thermal development in the shared DRAM. Therefore, recent advances
have brought forward both specialized DRAM DIMM modules for improved power
consumption performance and memory controllers with DRAM throttling to reduce
excessive temperature [6].
14 2 Multi-core and Many-core Processor Architectures
2.2.1.4 Shared Memory Support
With shared memory we mean that the processing cores can communicate with each
other storing data in shared memory locations and subsequently reading them. The
actual communication takes place over the interconnection network as discussed
earlier.
A shared address space facilitates migration from a sequential programming
model to a parallel one, in that data structures and control structures in many cases
can be kept as those were in the sequential program. Programming models such as
OpenMP [7] and Cilk [8] also allow for an incremental parallelization of the soft-
ware, rather than the disruptive approach needed for a message-passing approach.
That said, shared memory does not come for free, particularly when the core count
goes up.
In the high-performance computing area, shared memory has generally not
been used since its current implementations do not scale to the thousands or
even hundreds of thousands of nodes used in the top-performing compute clus-
ters today. These clusters, however, are built out of shared memory nodes and
although programmers may or may not use shared programming models within
a node, the hardware of these nodes typically implement a shared address space.
The best performing programs in these machines typically use a hybrid program-
ming model using message-passing between nodes and a shared memory within
a node.
For these reasons, all general-purpose multi-core processors today support a
shared address space between cores and maintain a cache-coherent memory system.
By definition, a cache system is said to be coherent if and only if all processors, at
any point in time, have a consistent view of what is the last globally written value
to each location.
Over the time, various cache organization architectures have been proposed, re-
lying on private, shared or mixed, flat or hierarchical cache structures. Figure 2.2
gives a schematic overview of various cache architectures.
The cache coherency mechanism allows processors fast access to commonly
used data in their own private caches while still maintaining consistency when
some other processor updates shared variables. The most common implementation
uses invalidation mechanisms where local copies are invalidated if a core updates
a shared variable. Figure 2.3 illustrates this basic principle of cache coherence
through a simple example of access to shared memory.
In the example in Fig. 2.3 we have three cores, each with a private level 1 (L1)
cache. For simplicity we only show the data cache, although the cores also typically
have separate private instruction caches as well. There is also a shared level 2 cache
unified for data and instructions. For now we assume that the cores and the L2 cache
are interconnected through a shared bus.
Consider the case where both core 0 and core 1 have read the value of address
A and thus both have a copy of A in their L1 caches. The need for cache coherence
arises when either core 0 and 1 needs to update the value of A and the other core
subsequently wants to read it. The example at the bottom of Fig. 2.3 illustrates
2.2 Architectural Principles 15
Memory Memory
Interconnect Interconnect
P P P P P P P P
Shared cache only for all cores Private cache only for each cores
Memory Memory
2D mesh interconnect
Interconnect
Used as non-uniform shared cache
Private Private Private Private
Private Private Private Private
cache cache cache cache
cache cache cache cache
P P P P P P P P
P0 P1 P2
Interconnect
P0 P1 P2 Comments
Time
t1 Load A Load A A copy in both cache 0 and 1. The block is shared.
t3 Load A This load will hit in the cache and no coherence action is needed.
t4 Load A The newly updated value in cache 0 is transferred to cache 1. The block is
shared. Memory may or may not be updated depending on cache
coherence protocol used.
t6 Store A The ownership is transferred to P1. The block is now exclusive in cache 1.
The copies in both cache 0 and cache 2 are invalidated.
The problem of consistent view of the memory is one of the fundamental problems
that need to be tackled in any multi-core design. The existence of multiple copies
of the same physical memory location—at various levels of caches but also within
processor cores—requires a consistent and easy to understand model of how con-
current loads and stores are coordinated in order to maintain a consistent view of
the content of the memory.
One of the important concepts related to memory consistency is store atomic-
ity. In the presence of multiple copies of the same memory location, a store to that
memory location needs to be propagated to all cores in zero time—something that’s
impossible to achieve in practice. However, the appearance of instantly propagated
store can be achieved if a global order of store operations to the same memory loca-
tion is enforced and a load (use of the value) is globally performed before the value
it returns is used, meaning that the store providing the new value is performed with
respect to all cores in the system.
The strictest memory consistency model available today is called sequential con-
sistency. Formally, it is defined as follows:
A multiprocessor is sequentially consistent if the result of any execution is the same as if
the memory operations of all threads were executed in some sequential order and the opera-
tions of each individual thread appear in thread order.
Intuitively, it means that, while the order of memory accesses with respect to one
core is maintained, accesses from different cores may be interleaved in any order.
If one would perform a poll among programmers, this would be the most popular
choice of memory model—but it requires significant implementation effort in hard-
ware.
Several other models have been proposed over time, with weaker consistency
requirements. Here are a few examples:
• allow a load to bypass a store within a core, if it addresses a different location in
the memory
• allow stores issued from a core to be used by subsequent core-local loads even
before it’s globally visible
• rely on the use of atomic sections when accessing shared memory areas, thus
enforcing mutual exclusion; all other loads and stores are performed without any
consistency enforcement, as these are considered core local
• processors relying on out of order execution sometimes deploy speculative vio-
lations of memory orders: the core will assume that the values read or written
will not conflict with updates from other cores; if this assumption turns out to be
wrong, the operation is rolled back and re-executed; however significant perfor-
mance gains can be achieved in case no conflicts are detected
While taken for granted by programmers, memory consistency is one of the most
critical and complex issues to be considered when designing multi-core systems.
Understanding the fundamentals of how memory access works is therefore essen-
18 2 Multi-core and Many-core Processor Architectures
tial when dealing with tricky concurrency bugs or implementing support for basic
synchronization primitives.
2.2.1.6 Atomic Operations
As we will see further on in this book, partitioning into parallel tasks and synchroni-
zation between tasks are the fundamental activities that are required when designing
software for many-core systems. Synchronization is very hard to realize in software
alone, thus support in hardware is required; however, hardware only synchroniza-
tion is usually hard to scale and has limited flexibility. Therefore the most common
solutions rely on software with basic support from the hardware. We will look at
the software solution in Chap. 5; here we will focus on the support available in
hardware.
The mechanism that modern processors provide in order to support synchroniza-
tion mechanisms are so called read-modify-write (RMW) or conditional stores. The
basic principle behind these instructions is to provide the smallest critical section
that guarantees conflict free access to a specific memory location that will contain
the value used for synchronization. The most commonly used RMW instructions
are listed below:
• Test and set (T&S): it reads a memory location, sets it to 1 and returns the value
read in a register atomically (thus no other core can perform any store action on
this memory location while the T&S instruction is being executed). Using this
instruction, the mechanism to acquire/release a lock would look like this:
• Compare and swap (CAS): atomically compares the value in the memory to a
supplied value and, if these are equal, the content of the memory is swapped with
the value stored in a register. Lock implementation using CAS looks like this
(quite similar to T&S based implementation):
The presence of one of these ISA level constructs is essential for implementing
higher level synchronization mechanisms. However, just one of these basic mecha-
nisms is sufficient for most flavors of software synchronization primitives as well
as for realization of lock-free data structures.
2.2.1.7 Hardware Multi-threading
As the capabilities and speed of cores kept improving at a more rapid pace than
that of memory, the net result was that cores were idling for a significant share
of the time while waiting on high latency memory operations to complete. This
observation led to the implementation of hardware multi-threading, a mechanism
through which a core could support multiple thread contexts in hardware (includ-
ing program counter and register sets, but sharing e.g. the cache) and fast switching
between hardware threads whenever some of the threads stalled due to high latency
operations.
Various implementations of this concept have been provided over time, but most
present systems use a fine-grained multithreading approach in the context of out-
of-order cores called simultaneous multi-threading. In each cycle, instructions from
different hardware threads are dispatched, or—in case of super-scalar processors
where multiple instructions can be dispatched per core cycle—even instructions
from different threads may be executed in parallel. As instructions from different
threads use different registers, the latency of detecting where out-of-order execution
can be performed is significantly reduced, leading to a higher density of instructions
effectively executed per cycle. The goal of this technique is ultimately this: assum-
ing that the software is multi-threaded, exploit it to mask the slowness of fetching
data from memory and improve core utilization.
This technique has been implemented by most major vendors, including Intel
(through the Hyper Threading Technologies (HTT) concept), IBM (which also sup-
ports thread priorities) and Oracle Sun (where as much as eight hardware threads
are supported on each core).
Few years ago, there were arguments brought forward [11] that suggested that
hardware threads actually consume more power than similar designs based on
multiple cores, while also increasing the frequency of cache trashing. By 2010
20 2 Multi-core and Many-core Processor Architectures
2.2.1.9 Summary
In this section we introduced the well established concepts used in the design of the
state of the art multi-core systems. There’s a red line throughout these concepts that
can be summarized in a few principles and assumptions:
• The only way forward is to start adding—albeit slowly—more cores to future
chip designs
• These cores shall still be quite complex and high performance to support single
threaded applications
• Shared memory on hardware level will still be required, even as we scale up the
number of cores per chip
• The main issues to address are still memory access latencies, hence we need con-
tinued support for cache hierarchies and mechanisms that can improve efficiency
of core usage
Only recently the community started questioning some of these principles and as-
sumptions, which we will discuss later on in this chapter. It’s therefore useful to
look at some of the other ideas that are slowly making their way into the design of
multi-core processors.
2.2 Architectural Principles 21
2.2.2 Emerging Concepts
As multi-core chips became ubiquitous, several new issues emerged that required
new solutions, while some existing, well-known problems have found novel solu-
tions. In this chapter we will look at some of these concepts.
The problem of memory wall, initially defined as the gap between the speed of
processors and the speed of memory access, has slowly morphed into a different
problem: the latency gap became smaller, but with the increase in the number of
cores, the need for memory bandwidth has increased. Interconnects became the
other issue that needed attention: existing solutions became either too power hungry
as the transistor count went up (the case of bus or ring solutions) or led to higher
latency (mesh networks), as the number of cores continues to increase. Finally, the
larger number of cores starts to question the emphasis on core usage efficiency and
ideas relying on using some of the cores (or at least hardware threads) as helpers
have popped up recently.
On software side, as the number of cores increased, the cost of pessimistic, lock-
based synchronization of access to shared memory got higher, prompting the search for
new mechanisms, leading to the emergence of the concept of transactional memory.
2.2.2.1 Scouting and Helper Threads
The idea of scouting hardware threads was promoted by Sun as part of the design of
their new processor called Rock (canceled since). The idea is to let the execution of
a hardware thread continue even if normally it would stall due to e.g. a memory ac-
cess: while waiting for the data to be fetched, the processor switches to a mode called
scouting and would execute those instructions—out of order—that are not dependent
on the result of the instruction that caused the stalling. Once the execution of the high
latency instruction completes, the execution is re-synchronized and continued from
the next instruction that was left out by the scouting process (due to data dependency
or latency of execution). This technique could be augmented with speculative execu-
tion: the processor could speculate on the likely outcome of the stalled instruction
and use this assumption for the scout thread’s run-ahead execution.
The scout thread idea clearly targeted the traditional memory wall problem, try-
ing to mask the latency of memory accesses. We believe that in this form and under
this assumption (latency is the primary concern) it is a technique of diminishing
returns; however the idea itself—using helper threads to speed up execution—has
its merits and alternative use cases have been proposed.
Paper [12] proposes the usage of helper threads to improve the efficiency of
cache usage: a separate core (or hardware thread) would monitor the memory traffic
to and from a specific core, recording memory access patterns; using this informa-
tion, whenever the same pattern is observed again, the helper core would initiate
fetching of data from memory to cache, thus pre-loading the cache ahead of time.
If the data is already in the cache, the helper core could make sure that it stays there
and no unnecessary write-backs would occur. This technique tends to reduce both
22 2 Multi-core and Many-core Processor Architectures
latency, but also optimize memory bandwidth usage: if the prediction is correct,
useful memory traffic is prioritized and unnecessary one can be avoided.
A similar idea is proposed in Ref. [13] to cache invalidation (trashing). In this
case, the execution of the OS would be offloaded to a special core, so that the
content of the cache relevant for the application would not be destroyed through
the loading of the data needed by the OS. This idea is similar to the factored OS
principle that we will present in Chap. 7.
Thread level speculation support in hardware is quite similar to the scouting thread
concept: the processor is capable of performing run-ahead execution on certain
branches, using private copies of data and registers, at the end either validating
or discarding the result. This idea may get more traction as the number of cores
will continue to increase: some of the cores can be used to perform speculative
execution on behalf of the main branch of execution. Such an approach suits well
heterogeneous single-ISA multi-core architectures: the main thread of execution is
placed on the high-capability core, while the simpler cores will be responsible for
low power speculative pre-execution.
These ideas have not yet made their way into actual products, but as we will see
later on in this book, such an approach could provide a way forward for scaling hard
to parallelize applications on many-core processors.
2.2.2.2 Memory-centric Architecture
It’s becoming clearer that memory bandwidth rather than memory latency is the
next bottleneck that needs to be addressed in future chips. Consequently we have
seen a dramatic increase in the size of on-chip caches, a trend that is likely to con-
tinue as the amount of logical gates on a chip will keep increasing for some time to
come, still following Moore’s law. There are however several other directions based
on novel technologies that are currently pursued in the quest of improving memory
bandwidth:
• Embedded DRAM, already in production in commercial chips such as IBM’s
Power7 processor
• Use of 3D stacking of memory with short, high bandwidth links called vias be-
tween processor cores and memory
• Use of memristors, perhaps the most radical departure from today’s designs
Embedded DRAM
DRAM has the benefit of having much higher density and lower power consump-
tion than the traditional SRAM technology used for on-chip memory, thus integrat-
ing it on the same silicon with the processing logic holds the promise of higher
2.2 Architectural Principles 23
on-chip memory density and higher bandwidth access than through external inter-
faces. Novel developments in CMOS technology allow today the usage of the same
process to manufacture both memory and processing units.
Perhaps the most well known usage of embedded DRAM is in IBM’s Power7
processor, packing a 32 Mb L3 cache built using eDRAM; however the technology
has now been deployed in various gaming and embedded processors as well.
3D Memory Stacking
Packaging memory on top of the processor cores allows the creation of very high
speed, dense interconnects ( vias) between the two layers, achieving two goals at the
same time: dramatically increasing the amount available memory (to the order of
gigabytes) with access speeds comparable to cache access today.
Beside practical implementation of layering itself, this technology has a number
of challenges related to cooling the processor cores hidden under the memory layer.
The concept is still in research phase with a number of prototyping activities ongo-
ing at universities and industrial research laboratories. If realized, it will allow a
dramatic improvement in memory performance.
Memristor-based Technologies
The concept and theory of memristor (short for memory resistor) has been formu-
lated almost four decades ago [14], but only as recently as 2008 the first practical re-
alization was announced by HP Labs. In short, it’s a circuit element with “memory”:
the resistance is a function of past current, in other words, a memristor can remem-
ber a voltage applied to it even after the current is cut off. This property makes it a
prime candidate for building more compact and faster storage devices, while com-
puter designs based on memristors replacing transistors have also been proposed. If
it will materialize, it will represent a unified design base with significant possibili-
ties: 3D designs based on memristors with up to 1,000 layers have been designed.
Memristor based commercial processors and memory systems are still some
time—perhaps a decade—off, but currently this is one of the most promising basic
technologies in the quest for improving memory performance.
2.2.2.3 Future Interconnects
As the number of cores on a chip will continue to increase, the on-chip intercon-
nect is quickly becoming the bottleneck, both in terms of throughput and power
consumption. This is especially true for bus and ring based interconnects: the power
needed to drive high-speed networks across long wires is quickly becoming the
largest contributor to overall power consumption, outstripping all other components
(such as cores and peripherals). Mesh/switch based interconnects, due to shorter
wiring were able to keep power at manageable levels; however, as the size of the
24 2 Multi-core and Many-core Processor Architectures
mesh will continue to increase, the latency and delay of transporting data across the
chip will become the limiting issue.
There are two significant new ideas that aim at tackling the power, latency and
delay related issues with the on-chip interconnect: 3D stacking coupled with mesh
interconnect and optical interconnects. 3D stacking of cores, not just memory would
help limit the number of hops that would need to be used to interconnect the cores.
Consider for example the case of a 1,024 core machine: in a 2D mesh of 32 × 32, the
cost of reaching across the chip is 62 hops (31 in both directions); if it’s placed in
a 3D configuration with 4 layer of 256 cores, this value drops to only 33 hops (3 to
cross the layers and maximum of 30 in the lower layer), a factor of almost 3 × im-
provement. Obviously, 3D stacking of cores has to solve the same issues that have
so far hampered efforts of stacking memory on top of processor cores: cooling and
heat removal from the lower layers.
Optical on-chip networks are in the focus of recent research efforts at both univer-
sities and chip manufacturing companies such as IBM or Intel. Besides offering
higher speeds, having lower power consumption and occupying less chip real-es-
tate, optical interconnects have the possibility to span multiple physical chips, thus
creating one logical chip from smaller physical chips.
Optical interconnect solutions are likely to use Wavelength Division Multiplex-
ing (WDM) as underlying transmission technology, which allows a single optical
waveguide to simultaneously carry multiple independent signals on different wave-
lengths. Optical signals use significantly less power because of the relatively low
loss even across long distances.
One interesting approach was put forward by researchers at MIT [15], illustrated
in Fig. 2.4. Their approach is to use a broadcast optical interconnect (ONet in the
figure) between islands of several cores (16 each, in their largest configuration)
and rely on island-local electric broadcast of information received over the optical
network. In addition, an island-local electric mesh network would be preserved for
local communication ( ANet in the figure). This hierarchical architecture helps sim-
plifying the architecture of each network: the optical network would have only 64
endpoints in the largest (1,024 cores) architecture while the electric networks would
be a 16-way star and 4 × 4 mesh network, respectively.
On-chip optical interconnects have yet to make their ways into commercial
chips. However, in our assessment, this technology represents the best bet for im-
proving performance of on-chip interconnects.
2.2.2.4 Transactional Memory
ANet
Local, 2D mesh
ONet: connects 64 electrical network,
islands in an optical independent of
ring ONet/BNet
Covers 4x4
Hub = optical hub, processor cores
converting the optical
signal to local electrical Hub
signal distribution over
BNet
BNet
easy to manage by supporting two register files: the “regular” one and the “trans-
actional” one; during transactions, a copy of the regular one is created in the trans-
actional one which is then either committed (copied back to the regular one) or
discarded (in case of rollback) at the end of transactions.
There are multiple solutions proposed for handling memory during transactions.
Here we will describe a simple method, based on a mechanism called transactional
cache state. Basically, there shall be two copies of the blocks being edited: the
version before the transaction (the stable copy) and the one being modified by the
transaction (the transactional copy). The simplest way to manage the two copies is
to hold the transactional copy in the L1 cache and the stable copy in L2 cache. This
will require a new state of the block (beside the MESI ones): Transactional, indicat-
ing that the block is being modified as part of an ongoing transaction and shall not
be shared with other cores. With the method described here, this new state is needed
for blocks cached in L1 cache.
There are two methods to detect conflicting updates to the same shared memory:
the eager method detects the conflict and aborts one of the transactions immediately;
the lazy method does so only at the end of transaction. Using the modified MESI
coherence protocol, the eager implementation is the more handier one: when creating
the L1 copy of the block, the core will be notified if it’s already under editing on an
other core; in this case it can immediately abort the transaction (and retry later on).
One of the major issues with this method based on L1 caching of transactional
blocks is the limited size of the L1 cache: for long running transactions or transac-
tions that modify a lot of data, the size of the L1 cache may become insufficient to
hold all transactional blocks. There’s no easy way around this limitation—hence
keeping the size of transactions (both time- and space-wise) short is a pre-requisite
for this method to work.
Despite extensive research—the first paper on transactional memory was pub-
lished already back in 1993 [16]—transactional memory support has yet to become
part of modern processors. Many of the major players in the industry chose to rely
on STM implementations first—the only processor that was planned to support
hardware transactional memory was the now canceled Rock processor from Sun.
2.3 Scalability Issues for Many-core Processors
So far in this chapter we looked at the current well established technologies used
in building multi-core processors as well as at the emerging technologies that are
targeting some of the shortcomings of current technologies.
On manufacturing technology level, major chip manufacturers estimate that we
will be able to continue with current CMOS technologies down to approximately
the 6 nm manufacturing process (as of 2010, the most advanced technology node is
the 32 nm node). However at that level at least two major challenges will emerge:
• As the size of transistors will be measured in just a few tens of atoms at most,
quantum effects will have to be taken into account and consequently we will see
2.3 Scalability Issues for Many-core Processors 27
In this chapter we will cover the most representative chip families where the sin-
gle-core performance still is the primary design concern: Intel’s server processors
(based on the Nehalem microarchitecture), IBM’s Power series of processors, Ora-
cle/Sun’s SPARC ISA-based processors as well as designs based on ARM’s Cortex-
A15 core design.
Intel’s current (as of 2010) line-up of 64 bit server processors relies on the Nehalem
micro-architecture, first introduced in 2008 and revised in early 2010 (under the
code-name Westmere). The successor of this microarchitecture will be released in
2011, under the code name Sandy Bridge; the major change will be the integration
of dedicated graphics cores. Today chips based on this micro-architecture are manu-
factured using 45 and 32 nm processes (which will be used for the Sandy Bridge line
as well, at least initially).
The main features of this line of processors include:
• Native support for up to 8 cores/die (typical configurations have 4 or 6 cores)
• Integrated memory controller
• Support for shared L3 (missing from previous generations) with sizes up to
12 Mb, in addition to per core L1 and L2 caches
• Support for virtualization (dedicated protection ring)
• Support for Intel’s Turbo Boost, Hyper-Threading, Trusted Execution, and
SpeedStep technologies
30 2 Multi-core and Many-core Processor Architectures
Turbo Boost
Hyper Threading
Trusted Execution
Intel’s trusted execution technology provides hardware support for enhanced secu-
rity of program execution. Specifically, it allows for
• Creation of multiple, isolated execution environments (partitions) that are guar-
anteed to be tamper proof by any other application running in an other partition
• Secure key generation and storage
• Remote attestation of the security level of the machine
2.4 Examples of Multi-core Processors 31
These features are usually realized as a combination of processor features and sup-
port in chipset and firmware.
2.4.1.3 SPARC Processors
Beside the two X86-based vendors and IBM, Sun Microsystems (acquired by Or-
acle) was one of the long-standing leaders in the area of server chips and high end
servers, with designs based on the SPARC instruction set architecture, initially de-
veloped at Sun. Recently however Sun also diversified itself into supporting X86
based architectures.
SPARC (Scalable Processor Architecture) is an open, RISC type of instruction
set architecture, licensable in a similar manner as the Power specification; several
of the processors designs based on SPARC have actually been released under open
source license (such as OpenSPARC T1 and OpenSPARC T2). One of the SPARC
architecture based processors also serves as the baseline for the widely used SPEC
(Standard Performance Evaluation Corporation) CPU benchmarks: all benchmark
results represent a relative speed compared to that of the basic SPARC processor;
for more details on the SPEC benchmarks [18]. As of 2010, there are essentially
only two large vendors providing chips based on the SPARC specification: Fujitsu
and Oracle/Sun.
An interesting feature of the SPARC ISA is the support for register windows.
The processor may have up to 160 general purpose registers, but at any time only
24 of these are visible to the software; whenever a sub-routine call is performed,
the register window is shifted by 8, so that the new procedure gets 8 local registers
and shares 8 registers with its caller as well as another 8 with any other sub-routine
it may call.
The latest processor released by Sun, based on the SPARC version 9 architecture
is the SPARC T3, code-named Rainbow Falls or Niagara 3 (all UltraSPARC proces-
sors used the Niagara code-name—the tag Ultra was dropped in this case). It’s the
server chip with most parallelism: it contains 16 cores running at 1.65 GHz, each
with support for 8 hardware threads per core, thus the chip supports 128-way SMT.
The schematic layout of the chip is shown in Fig. 2.5.
What sets the SPARC T3 apart is its on chip and off chip interconnect solution.
The basic connectivity between cores and L2 caches is through a cross-bar type of
2.4 Examples of Multi-core Processors 33
memory
SPARC SPARC SPARC SPARC SPARC SPARC SPARC SPARC
0 1 2 3 4 5 6 7
MCU
L2D L2D L2D L2D L2D L2D L2D L2D
XAUI
PCIe
PCU 0 1 2 3 4 5 6 7
PEU
SIU NCU CCX CTU
CLC CLC
L2T4 L2T5 L2T6 L2T7
COHERENCY
SPARC SPARC SPARC SPARC SPARC SPARC SPARC SPARC
8 9 10 11 12 13 14 15
COHERENCY COHERENCY
Fig. 2.5 SPARC T3 architecture. (Source: Wikipedia, under Creative Commons Attribution 3.0
license)
2.4.1.4 ARM-based Multi-Core Processors
If X86 and Power architecture based systems dominate the server and desktop
space, the mobile and low power computing space has its own pervasively present
player: most mobile phones and a lot of embedded devices today use a chipset based
on the ARM architecture, licensed by the UK based company of the same name.
ARM itself does not develop chips: its business relies on designing and licensing
aggressively power optimized core designs that can then be integrated into actual
chips by one of its licensees. Consequently, there’s a large variety of chips based on
ARM cores, all sharing the same basic ISA and core design.
Traditionally ARM cores were simple, low power designs unsuitable for desk-
top, let alone server usage; recently however ARM entered a new territory with its
Cortex A9 and A15 designs that added capabilities previously only seen in high end
desktop and server products. For this reason we include ARM into the category of
chips with fewer, yet more complex cores.
The ARM ISA is a 32 bit RISC architecture with fixed instruction width and mostly
single cycle execution. It features some more peculiar features such as support for
conditional execution of instructions (the result of the last comparison can be used
as conditional for subsequent instructions) and support for folding bit-shifting in-
structions into arithmetic ones. It has been extended with optional ISAs covering
floating point operations, SIMD instructions and native execution of Java byte-code
(called Jazelle).
The Cortex A15 core design (announced in 2010, expected to ship in 2012) inte-
grates all these features into an out-of-order, speculative issue, superscalar architec-
ture with cores clocked between 1 and 2.5 GHz. The licensable solution will support
up to 4 cores in a cluster, with the possibility to link two clusters into one cache
coherent SMP system. For the first time for ARM, A15 has virtualization support
(with a new protection ring) and support for addressing more than 4 Gb of memory
(the address space is extended to 40 bits). The cache architecture will feature 64 kb
L1 cache and up to 4 Mb shared L2 cache for the 4-core cluster.
It’s yet unclear how chips based on the A15 core design will measure up against
competing products. ARM claims a significant improvement compared to the previ-
ous generation and academic evaluations have shown Cortex A9 (the predecessor
of A15) based chips to outperform—in terms of performance per watt—competing
Intel server chips by a factor of about 5–7 × ([19]). It all depends however on the
type of the application: ARM based designs will likely perform much better with
tasks that are highly parallel and do not require execution of lengthy single-threaded
code.
The main differentiating factor for ARM based processors is power efficien-
cy. While other vendors are trying to retrofit their high-performance designs with
power efficient solutions, ARM cores are trying to ramp up performance on a basic
2.4 Examples of Multi-core Processors 35
design that is eminently power efficient. So far, for embarrassingly parallel applica-
tions, the second approach seems to be gaining the upper hand.
2.4.2 Processors Based on Large Number of Cores
2.4.2.1 The Tile Architecture
The Tile architecture has its origins in the RAW research processor developed at
MIT and later commercialized by Tilera, a start-up founded by the original research
group. Chips from the second generation are expected to scale up to 100 cores based
on the MIPS ISA and running at 1.5 GHz, within a power budget of under 60 W.
The key differentiating technology of the Tile architecture is the on-chip inter-
connect and the cache architecture. As the name implies, the chip is structured as a
2D array of tiles, where each tile contains a processor core, associated L1 (64 kb)
and L2 cache (256 kb per core) and an interconnect switch that can connect the
tile to its 3 (on the edges) or 4 (inside the mesh) neighboring tiles. This way, the
interconnect is essentially a switched network with very short wires connecting
neighboring tiles linked through the tile-local switch.
The interconnect network—called iMesh by Tilera—actually consists of five dif-
ferent networks, used for various purposes:
• application process communication (UDN)
• I/O communication (IDN)
• memory communication (MDN)
• cache coherency (TDN)
• static, channelized communication (STN)
The latency of data transfer on the network is 1–2 cycle/tile, depending on whether
there’s a direction change or not at the tile. The overall architecture of the Tile pro-
cessor concept is shown in Fig. 2.6
This network based architecture allows for some innovative solutions. The net-
work of L2 caches is organized into a non-uniformly structured L3 cache, using a
36 2 Multi-core and Many-core Processor Architectures
L1C L1C
P P
L2C L2C
Switch Switch
Switch Switch
directory-based coherence mechanism and the concept of home tile (the tile that
holds the master copy) for cached data. While the access latency to various parts of
this virtual L3 cache varies according to the distance between tiles, this mechanism
provides an efficient (space and power wise) logical view to the programmer: a
large on-chip cache to which all cores are connected. The TDN network is exclu-
sively dedicated to the implementation of the coherency protocol.
Another mechanism implemented in the Tilera architecture using the commu-
nication networks is the TileDirect technology that allows data received over the
external interfaces to be placed directly into the tile-local memory, thus bypassing
the external DDR memory and reducing memory traffic.
In our view, the scalable, low power, high bandwidth on-chip mesh interconnect
as well as the mechanism that allows cache coherence on such scale (up to 100
cores) are the technologies that make the Tile processor concept unique and clearly
differentiates it from other chip designs.
2.4.2.2 Graphics Processing Units
The term Graphics Processing Unit (GPU) was first used back in 1999 by NVIDIA.
The introduction of the OpenGL language and Microsoft’s DirectX specification
resulted in more programmability of the graphics rendering process; eventually
this evolution led to the introduction of a GPU architecture (by the same com-
2.4 Examples of Multi-core Processors 37
Instruction cache
Warp scheduler Warp scheduler
CUDA CUDA CUDA CUDA CUDA CUDA CUDA CUDA LD/ST LD/ST
core core core core core core core core SFU
LD/ST LD/ST
CUDA CUDA CUDA CUDA CUDA CUDA CUDA CUDA LD/ST LD/ST
SFU
core core core core core core core core LD/ST LD/ST
CUDA CUDA CUDA CUDA CUDA CUDA CUDA CUDA LD/ST LD/ST
SFU
core core core core core core core core LD/ST LD/ST
LD/ST LD/ST
CUDA CUDA CUDA CUDA CUDA CUDA CUDA CUDA SFU
LD/ST LD/ST
core core core core core core core core
Interconnect network
Per SM
shared memory / L1 cache (16kb+48kb)
Shared L2 cache
The Fermi architecture based chips have a two-level thread scheduler called Gi-
gaThread. On the chip level, an engine distributes thread blocks to different stream-
ing multiprocessors; on each streaming multiprocessor, the so called dual warp
scheduler distributes groups of 32 threads (which are called warps) to the available
CUDA cores. Each streaming multiprocessor has two instruction dispatch units,
thus at each cycle two warps are selected and an instruction from each warp is is-
sued to 16 cores.
GPUs have clearly outgrown their roots in graphics processing and are now
targeting the broader field of massively data-parallel applications with signifi-
cant amount of scientific and floating point calculations. While a particular pro-
gramming model must be followed (which we discuss later on in this book),
the programmability of these chips has increased to a level that is on par with
regular CPUs, turning these chips into a compelling choice for general purpose
utilization.
We included the DSP architecture developed by picoChip because it’s a prime ex-
ample of successfully addressing a particular application domain with a massively
multi-core processor.
The basic architecture of a picoChip DSP consists of a large number of various
processing units (more than 250 in the largest configuration), connected in a mesh
network (called the picoArray) using an interconnect resembling Tilera’s iMesh
technology. However, the communication is based on time division multiplexing
mechanisms with the schedule decided deterministically at compile time, thus elim-
inating the need for execution time scheduling and arbitration. While this may be
a big advantage in some cases, it will also limit the usability of the technology for
more dynamic use-cases.
The processing elements in the picoArray can be
• proprietary DSP cores: 16 bit Harvard architecture processors with three-way
very long instruction words, running at 160 MHz
• hardware accelerators for functions such as Fast Fourier Transformation (FFT),
cryptography or various wireless networking algorithms that are unlikely to
change and hence can be hard-coded into hardware
• ARM core for more complex control functions (such as operation and mainte-
nance interface)
The DSP cores come in three variants, differentiated by target role and, as a conse-
quence, available memory:
• standard: used for data-path processing with very low amount (< 1 kb) own
memory
• memory: used for local control and buffering with approx. 8 kb of memory
• control: global control functions, with 64 kb of memory
2.4 Examples of Multi-core Processors 39
Chips based on the picoArray architecture—due to the low amount of memory and
very simple cores—have very low power consumption. For example, a model with
250 DSP cores running at 160 MHz, one ARM core at 280 MHz and several ac-
celerators consumes just around 1 W, while capable of executing 120 billion basic
arithmetic operations per second.
The picoChip architecture is a prime example of massively multi-core processors
found in the embedded domain, especially telecommunication products (wireless
infrastructure nodes and routers). These nodes usually perform the same, relatively
simple sequence of operations on a very large amount of entities (packets, phone
calls or data connections), hence such architectures are the best match in terms of
balance between programmability and efficiency.
2.4.2.4 Many Integrated Core Architecture
In 2010 Intel announced their first commercial many-core chip code-named Knights
Corner that will be manufactured in 22 nm and will integrate more than 50 x 86
cores. While not publicly stated, it’s most likely the continuation of the Larrabee
program that aimed at developing a GPU-like device.
There are few details available publicly about this device that is planned to be
released in 2011. Based on an Intel presentation [3], it will be based on “vector Intel
Architecture cores”, which indicates an emphasis on data parallel processing. The
cores will support hardware threading (at least 4 threads per core) and will share a
tiled, coherent on-chip cache. The chips will likely include hardware accelerators,
called fixed function logic in Intel’s presentation. A schematic view of the architec-
ture is shown in Fig. 2.8.
Memory &
Vector Vector Vector Vector I/O
IA Core IA Core … IA Core IA Core interfaces
In many ways this chip seems to be Intel’s combined answer to the advancement
of GPUs and the Tilera-type many-core architectures. Intel brands this type of chip
a co-processor that a traditional server chip can use to offload parts of the applica-
tion—enabled by sharing the same ISA.
2.4.3 Heterogeneous Processors
From purely hardware technology point of view, using dedicated cores for specific
tasks is the best choice in terms of efficiency, as it will yield a simpler structure and
less power consumption, while will deliver higher performance. As an extension,
for a more complex problem, with sub-problems that require specific type of func-
tionality, chips that combine cores with different capabilities are the optimal choice.
Processors of this type are called heterogeneous processors.
Obviously there are other factors that make this rather simplistic line of think-
ing hard to argue for in full. Developing a chip has a significant cost, which is
proportional to the complexity of the chip; on the other hand, the more specialized
a chip is, the smallest its addressable market and hence the higher the per unit cost
will be; additionally, higher complexity inherently will lead to increased software
development cost. There is a trade-off point beyond which specialization can-
not be anymore justified, hence the addressable market shall be sufficiently large
and/or the chip design sufficiently generic so that the chip will be economically
sustainable.
There are a few good examples of such chips, especially in high volume markets
such as mobile computing or gaming. We will exemplify this type of processors
through the Cell BE, used in game consoles as well as in supercomputers.
2.4.3.1 The Cell Broadband Engine
The Cell processor is the result of the co-operation between Sony, Toshiba and IBM
and originally it was targeting gaming and other entertainment devices (including
HD television sets).
The basic architecture of the Cell processor is shown in Fig. 2.9. The processor
has nine cores, inter-connected through a circular bus called Element Interconnect
Bus (EIB):
• one Power Processing Element (PPE): two-way SMT processor core running at
3.2 GHz, based on the Power Architecture ISA and equipped with 32 kb L1 and
512 kb L2 cache; it usually runs a main-stream operating system such as Linux
• eight Synergistic Processing Elements (SPE): DSP-like SIMD processors
equipped with 256 kb of local memory (marked with LS—local store—in the
figure), that can only be accessed from outside the SPE using DMA through a
specialized memory flow controller unit (MFC)
2.5 Summary 41
MFC
MFC LS
LS MFC
MFC LS
LS MFC
MFC LS
LS MFC
MFC LS
LS
L1C
L1C
PPE
L2C
L2C
EIB: Element Interconnect Bus
DRAM
interface
Beside the basic Cell processor, there’s a special version used in supercomputers
with about an 8 × improvement in performance (to over 100GPFLOPS aggregated
throughput).
The design of the Cell processor clearly prioritized performance over program-
mability: the SPEs need to be managed, scheduled and configured explicitly by the
PPE, which adds significantly to the cost of software development. The division
of tasks is clear: the SPEs are the number-crunching workers under the strict and
necessary supervision of the PPE that takes care of all the other functions. This kind
of chip architecture bolds well for game consoles (the primary users of the Cell
processor), but also for compute-intensive supercomputers, where the PPE is the
“visible” part of the processor capable of high-speed data crunching; internally, it
can offload the work to the SPEs.
2.5 Summary
References
15. Kurian G, Miller J E, Psota J, Eastep J, Liu J, Michel J, Kimerling L C, Agarwal A (2010)
ATAC: a 1000-core Cache Coherent Processor with On-Chip Optical Network. Proceedings
of the 19th International Conference on Parallel Architectures and Compilation Techniques:
477-488
16. Herlihy M, Moss J E B (1993) Transactional Memory: Architectural Support for Lock-free
Data Structures. Proceedings of the 20th International Symposium on Computer Architecture:
289-300
17. Falsafi B (2009) Energy-Centric Computing & Computer Architecture. Proceedings of the
2009 Workshop on New Directions in Computer Architecture
18. SPEC (2008) SPEC CPU2006. http://www.spec.org/cpu2006/. Accessed 11 January 2011
19. Åbo Akademi (2010) Cloud Software Program: SIP-Proxy and Apache Running on tradi-
tional X86 vs ARM Cortex-A9. https://research.it.abo.fi/projects/cloud/posters/POSTER_
A3_Demo_2_ARM-SIP_2.pdf. Accessed 11 January 2011
http://www.springer.com/978-1-4419-9738-8