Manycore

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Manycore processors are chips designed for a high degree of parallel processing, containing a large number of simpler, independent processor cores (e.g. 10's, 100's or 1000's).

Contrast with Multicore

They are distinct from Multi-core processors in that: they are optimised from the outset for a higher degree of explicit parallelism, and for higher throughput (or lower power consumption) at the expense of latency and lower single thread performance.

The broader category of Multi-core processors, by contrast are usually designed to efficiently run both parallel code and legacy serial code, and therefore place more emphasis on single thread performance (e.g. devoting more silicon to out of order execution, deeper pipelines or more superscalar execution units), and shared memory. These techniques devote runtime resources toward figuring out implicit parallelism in a single thread. They are used in systems where they have evolved continuously (with backward compatibility) from single core processors. They usually have a 'few' cores (e.g. 2,4,8), and may be complemented by a manycore accelerator (such as a GPU) in a heterogeneous system.

Motivation

Cache coherency is an issue limiting the scaling of multicore processors. Manycore processors may bypass this with tricks such as message passing, DMA, scratchpad memory, partitioned global address space, or read-only/non-coherent caches. A manycore processor using a network on a chip gives software the opportunity to explicitly optimise the spatial layout of tasks (e.g. as seen in tooling developed for TrueNorth).

Manycore processors may have more in common (conceptually) with technologies originating in high performance computing such as clusters and vector processors.

GPUs may be considered a form of manycore processor having multiple shader processing units, and only being suitable for highly parallel code.

Suitable programming models

Examples

See also

External links