CPU Architecture Notes
Register renaming
To eliminate the false and output data dependency by adding extra physical registers more than architectural registers.
- Read-after-write (RAW) is true data dependency
- Write-after-write (WAW) is output data dependency
- Write-after-read (WAR) is false data dependency
Superscalar
Dynamically issue multiple instructions in each cycle to increase IPC.
- Normally need multi-port register files and ALU to avoid structural hazard.
- Can be in-order or out-of-order
Re-order buffer
For out-of-order execution CPU architecture, results are put into re-order buffer waiting for commit. These result can be forwarded to later instructions.
Content of a typical re-order buffer entry
- valid
- result
- instruction type (jump, store to memory, store to register)
- ? Why?
- destination (memory address, register address)
SMT (Simultaneous Multi-threading)
Opposed to temporal multi-threading, which is interleaving multi-threads in one single core, simultaneous multi-threading issues multi-instrunction from different threads in one cycle. So it has to be supr scalar.
- Multiple PC and large register file
- Research indicates that it’s power efficient even when there is no performance boost
SPMD (Single program multi-data)
Tasks are split up and run simultaneously on multiple processors with different input data. It’s the most common style of parallel programming.