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
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.
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
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.