Parallelism of Modern Processors

There are mainly three types of parallelism in modern processors: Multi-core, SIMD, Superscalar

Multi-Core

It uses multiple processing cores: 1. Provides thread-level parallelism: simultaneously execute a completely different instruction stream on each core. 2. Software decides when to create threads.

SIMD

SIMD uses multiple ALUs controlled by same instruction stream within a core.

  1. SIMD is an efficient design for data-parallel wordloads
  2. Vectorization can be done by compiler(known as explicit SIMD) or at runtime by hardware.

Superscalar

Superscalar exploits ILP within an instruction stream. It issues different instructions from the same instruction stream in parallel within a core.

Multiple pipelines is one way to implement a superscalar architecture. Besides, DO NOT confuse with MIMD and Superscalar.

ISPC: Intel SPMD Program Compiler

ISPC is a repository form Intel about implementation of many basic models.

  1. Single Program Multiple Data Programming Model

SPMD Programming Model

Define one function, run multiple instances of that function in parallel on different input arguments.