tags : Multiprocessing, Concurrency, GPGPU, Computer Architecture
They are not different types of CPUs, they are different logic networks integrated into the CPU itself. Or mode in which a CPU can operate.
Regular consumer x86_64 processors hence support both SIMD and MIMD.
Single Data Stream
SISD
- Traditional single processor machines.
- Lack of physical concurrency.
MISD
- Rather exotic
- Sometimes used for fault-tolerant computing where the same instructions are executed redundantly.
Multiple Data Stream
SIMD
- Dedicated parallel executions of computations
- Example: GPGPU , vector processors.
- Consumer processors extend x86_64 with SIMD extensions(AVX,SSE,MMX).
- Vector instructions enable faster computing with data-level parallelism. But this is not so useful for say webservers.
MIMD
- Relies on a shared or distributed memory
- This is what allows multi processor/multi core etc.
More on SIMD
See Registers SIMD extensions are complimentary.
Intel
AVX
- AVX uses sixteen YMM registers
- registers is increased from 128 bits to 256 bits
-
AVX
- 256-bit width (Vector length)
- f32 and f64 only
-
AVX2
- 256-bit width (vector length)
- Everything else
-
AVX512
- Also see FMA/fused multiply-add
SSE (Streaming SIMD Extensions)
- SSE, SSE2, SSE3, SSE4
-
SSE2
- Register width: 128-bit
- 64-bit numbers and floats and doubles
MMX (Multimedia Extensions)
- 1997
AMD
NEON
FMA
- These instructions do two operations then a correct rounding of the result (e.g. round(a*b+c)). FMA in hardware is great. It lets you write functions with provably tight errors or even provably correct rounding of the result. More and more platforms are providing FMA
- operations like FMA are generally not available for integers.
- Multiply–accumulate operation - Wikipedia
- FMA instruction set - Wikipedia
- c - How to use Fused Multiply-Add (FMA) instructions with SSE/AVX - Stack Ove…