ARFROB vs PRF ECE 721 Spring 20 Prof
ARF+ROB vs. PRF ECE 721 Spring’ 20 Prof. Eric Rotenberg
ECE 563 Style (ARF+ROB) Architectural Register File (ARF) Rename Map Table (RMT) v r 0 r 5 r 6 r 0 r 5 1 r 6 0 r 31 ROB tag • physical register file = ARF + ROB values • Commit by moving ROB value at head into ARF • Recovery 77 - r 31 commit rob 0 rob 15 r 5= H Reorder Buffer (ROB) rob 77 r 5= T rob 127 ROB values ROB ready bits – Wait until exception/misprediction reaches head – T=H – Clear all “v” bits
ECE 563 Style (ARF+ROB) Read ARF and ROB, set up operand for Issue Queue: Fetch Decode Rename v = RMT[r]. v tag = RMT[r]. ROB_tag Register Read Dispatch Issue Execute Writeback Retire IQ[x]. ready = ready IQ[x]. tag_or_value = tag_or_value if (v==0) { ready = 1; tag_or_value = ARF[r]; } else { ready = ROB[tag]. ready; tag_or_value = (ready ? ROB[tag]. value : tag); }
ECE 563 Style (ARF+ROB) Fetch Decode Rename Register Read Dispatch Issue Execute Writeback Retire • “Register Read” stage before “Issue” stage – Can’t be after – If value is available at time of renaming, must grab it and capture it in Issue Queue (IQ) – If IQ only kept pointer to value (ROB tag), value could move from ROB to ARF before instruction issues and then the pointer is stale
ECE 721 Style (PRF) Physical Register File (PRF) p 0 Rename Map Table (RMT) Phys. Reg. Tag r 0 r 5 r 6 r 31 p 25 p 99 p 13 p 4 p 159 PRF values PRF ready bits • Committing and freeing registers does not involve data movement • Recovery conceptually similar, but restoring RMT not a simple flash -clear of bits
ECE 721 Style (PRF) • “Register Read” stage after “Issue” stage Fetch Decode Rename tag = RMT[r] Dispatch IQ[x]. ready = PRF[tag]. ready IQ[x]. tag = tag Issue Register Read Execute Writeback Retire value = PRF[tag]. value • Issue Queue (IQ) – No values, just tags
- Slides: 6