Complex Pipeline

Moving towards to a more complex pipeline: pipelining becomes complex when we want high performance in the presence of:

  • Long latency or partially pipelined floating-point units
  • Multiple function and memory units
  • Memory systems with variable access time
  • Precise exception (divisions by zero, underflow and overflow at hardware level)

General purpose registers (GPRs) contain information being manipulated by the user program currently running. Floating-point registers (FPRs) hold numeric values associated with some exponent.

Complex Pipeline main features

  • All functional units are pipelined
  • Instructions are fetched, decoded and issued in order (always in this course)
  • Issue stage can be seen as an infinite buffer.
  • Generally it’s assumed that the WB unit has a single write port
  • RF can write first half of the CC and Read in the second half. (so IS aligned with WB)
  • Only one instruction can be issued at a time, and in the case multiple instructions are ready, the oldest one will go first

What to remember in the Complex Pipeline

  • Decode stalling if it is causing a WAR or WAW hazard.
  • Issue stalling if RAW
  • EX stalling iff structural hazard on writing port

Example:

InstructionC1C2C3C4C5C6C7C8C9C10C11C12
LD F1, O(R1)FDISE1E2E3WB
LD F2, O(R1)FDISE1E2E3WB
ADDD F1, F1, F2FsDsDDsISISE1E2E3WB
ADD R1, R1, 8sFsFFDsISISEWB