of Computer Architectures
Michael Flynn 1966
CMPS 5433 – Parallel Processing
Proposed in 1966
General 4 category system
Does not clearly classify all
models in use today
There are combinations, also.
Four Categories - Terminology
S = Single SISD
I = Instruction Stream SIMD
M = Multiple MISD
D = Data Stream MIMD
Single Instruction, Single Data stream
A sequential computer which exploits no
parallelism in either the instruction or data
streams. Examples of SISD architecture are
the traditional single processor machines like
a PC (currently manufactured PC's have
multiple processors) or old mainframes.
Single Instruction, Multiple Data
Exploits multiple data streams against a
single instruction stream to perform
operations which may be naturally
For example, an array processor or GPU.
Typical for splitting large data sets.
NOTE: Front-end processor
ONE processor starts the program
– It sends code to the other processors
In diagrams, the front-end is represented by
which sends code to individual PU’s PU
which execute the remaining code.
Each processor executes the same code
Code may be variable based on processor id
Example: Sum elements of array A
for each Pi, i = 0 to 9 // “executed” by front-end
Ti = 0
for j = 0 to 9 // Pi sums its segment
Ti = Ti + A[i * 10 + j]
Multiple Instruction, Single Data stream
Multiple instructions operate on a single data
stream. Uncommon architecture which is
generally used for fault tolerance.
Systolic Array: process data & pass on to
Examples include the Space Shuttle flight
Multiple Instruction, Multiple Data
Multiple autonomous processors
simultaneously executing different
instructions on different data.
May send results to central location.
Distributed systems – can be shared memory
space or distributed memory space.