From Wikipedia, the free encyclopedia
A multi-core processor is a single computing component with two or
more independent actual processors (called "cores"), which are the
units that read and execute program instructions. The data in the
instruction tells the processor what to do. The instructions are very
basic things like reading data from memory or sending data to the user
display, but they are processed so rapidly that human perception
experiences the results as the smooth operation of a program.
Manufacturers typically integrate the cores onto a single integrated
circuit die (known as a chip multiprocessor or CMP), or onto multiple
dies in a single chip package.
Processors were originally developed with only one core. A many-core
processor is a multi-core processor in which the number of cores is
large enough that traditional multi-processor techniques are no longer
efficient[citation needed] — largely because of issues with congestion
in supplying instructions and data to the many processors. The
many-core threshold is roughly in the range of several tens of cores;
above this threshold network on chip technology is advantageous.
A dual-core processor has two cores (e.g. AMD Phenom II X2, Intel Core
Duo), a quad-core processor contains four cores (e.g. AMD Phenom II
X4, the Intel 2010 core line that includes three levels of quad-core
processors, see i3, i5, and i7 at Intel Core), and a hexa-core
processor contains six cores (e.g. AMD Phenom II X6, Intel Core i7
Extreme Edition 980X). A multi-core processor implements
multiprocessing in a single physical package. Designers may couple
cores in a multi-core device tightly or loosely. For example, cores
may or may not share caches, and they may implement message passing or
shared memory inter-core communication methods. Common network
topologies to interconnect cores include bus, ring, two-dimensional
mesh, and crossbar. Homogeneous multi-core systems include only
identical cores, heterogeneous multi-core systems have cores which are
not identical. Just as with single-processor systems, cores in
multi-core systems may implement architectures such as superscalar,
VLIW, vector processing, SIMD, or multithreading.
Multi-core processors are widely used across many application domains
including general-purpose, embedded, network, digital signal
processing (DSP), andgraphics.
The improvement in performance gained by the use of a multi-core
processor depends very much on the software algorithms used and their
implementation. In particular, possible gains are limited by the
fraction of the software that can be parallelized to run on multiple
cores simultaneously; this effect is described by Amdahl's law. In the
best case, so-called embarrassingly parallel problems may realize
speedup factors near the number of cores, or even more if the problem
is split up enough to fit within each core's cache(s), avoiding use of
much slower main system memory. Most applications, however, are not
accelerated so much unless programmers invest a prohibitive amount of
effort in re-factoring the whole problem. The parallelization of
software is a significant ongoing topic of research.
No comments:
Post a Comment