ICAR - Flynn's Taxonomy

STUDY
PLAY
Describe SISD
Single Instruction Single Data
Sequential Fetch-Decode-Execute
No parallism or pipelining
How do you speed up SISD?
Just by increasing the clockspeed.
Make transistors smaller to achieve this.
Disadvantages of SISD
- More power used.
- Heat is a problem with high clock speeds
Describe SIMD
Single Instruction Multiple Data
1 thread of control, multiple packets of data processed in parallel functional units.
Complex data types like vectors and matrices
Many functional units
Advantages of SIMD
- Less instructions required
- Slower clock speed does more
- Minimise interrupt overhead
- Minimise decode and fetch overhead
Disadvantages of SIMD
- Wider buses needed
- Assumes algorithm uses complex data types
- Some extra overhead for things some programs might not need, slowing them down.
- Not a general speed up, matches a problem.
Describe MIMD?
Multiple Instruction Multiple Data
Can have multiple instructions on multiple processors working on multiple pieces of data
Or can have a main CPU and several specialised co-processors (Mice and IO have processors doing some work)
Advantages of MIMD
- With Co-processors, you could minimise load on main CPU
Disadvantages of MIMD
- Deadlock
- Livelock
- Data races
Describe MISD
Multiple Instruction Single Data
Can think of this as pipe lining
Instructions overlap in different phases of execution within the CPU
Speed up by increasing pipeline depth
10 phases, 10 times quicker
Advantages of Pipe lining?
- Each operational unit is used
- Each phases is smaller
- Reduces coupling
- Can clock faster due to smaller critical path
Disadvantages of Pipe Lining?
- Assumes sequential execution, jump causes problems
- Hazards cause problems and need to be handled EG. Data not written back when it needs to processed by another instruction.