lecture 12
play

LECTURE 12 Out-of-order execution: Pentium Pro/II/III EXECUTING - PowerPoint PPT Presentation

LECTURE 12 Out-of-order execution: Pentium Pro/II/III EXECUTING IA32/IA64 INSTRUCTIONS FAST Problem: Complex instruction set Solution: Break instructions up into RISC-like micro operations Lengthens decode stage; simplifies execute


  1. LECTURE 12 Out-of-order execution: Pentium Pro/II/III

  2. EXECUTING IA32/IA64 INSTRUCTIONS FAST • Problem: Complex instruction set • Solution: Break instructions up into RISC-like micro operations • Lengthens decode stage; simplifies execute

  3. PENTIUM PRO/II/III PROCESS STAGES • The first stage consists of the instruction fetch, decode, convert into micro-ops, and reg rename • The reorder buffer (ROB) is the buffer between the first and second stages • The ROB is also the buffer between the second and third stages • The third stage retires the micro-operations in original program order • Completed micro-operations wait in the reorder buffer until all of the preceding instructions have been retired

  4. Pentium Pro pipeline overview Any order @ Fetch (2 cycles) MEM read instructions (16 bytes) IF ID EX CT REN Alloc from memory from IP (PC) In-order In-order @ Decode (3 cycles) ROB ARF Rename Table Decode up to 3 instructions generating up to 6  ops regID robIDX Head Tail Decoder can handle 2 “simple” instructions and 1 Rename Table “complex” instruction. (4 -1- – Indexed with regID 1) – Returns (valid, robIDX) @ Rename (1 cycle) robIDX – If valid, ROB does/will v Index table with source contain value of register operand regID to locate – If invalid, ARF holds ROB/ARF entry value (no instruction in flight defines this register) @ Alloc Allocate ROB entry at Tail

  5. PENTIUM PRO PIPELINE OVERVIEW • @ Execute (parallel) Any order • Wait for sources MEM (schedule) IF ID REN Alloc EX CT • Execute instruction (ex) In-order In-order • Write back result to ROB ROB ARF PC • @ Commit Dst regID • Wait until inst @ Head is Dst value Head Tail Except? done • If fault, initiate handler • Reorder Buffer (ROB) • Else, write results to ARF – Circular queue of spec state • Deallocate entry from ROB – May contain multiple definitions of same register

  6. REGISTER RENAMING EXAMPLE 1 2 p42 xx Logical Program Physical Program 3 4 p45 5 xx r6 = r5 + r2 6 r8 = r6 + r3 7 8 r6 = r9 + r10 9 r12 = r8 + r6 10 11 12 1 2 p42 x Logical Program Physical Program 3 4 p45 5 x r6 = r5 + r2 p52 = p45 + p42 p52 6 x r8 = r6 + r3 7 8 r6 = r9 + r10 9 r12 = r8 + r6 10 11 12

  7. REGISTER RENAMING EXAMPLE 1 2 p42 x Logical Program Physical Program 3 4 p45 5 x r6 = r5 + r2 p52 = p45 + p42 6 p52 x r8 = r6 + r3 p53 = p52 + r3 7 8 r6 = r9 + r10 p53 x 9 r12 = r8 + r6 10 11 12 1 2 p42 x Logical Program Physical Program 3 4 p45 5 xx r6 = r5 + r2 p52 = p45 + p42 p54 6 x r8 = r6 + r3 p53 = p52 + r3 7 p54 = r9 + r10 8 r6 = r9 + r10 p53 x 9 r12 = r8 + r6 10 11 12

  8. REGISTER RENAMING EXAMPLE 1 2 p42 x Logical Program Physical Program 3 4 p45 5 x r6 = r5 + r2 p52 = p45 + p42 p54 6 x r8 = r6 + r3 p53 = p52 + r3 7 p54 = r9 + r10 8 r6 = r9 + r10 p53 x 9 p55 = p53 + p54 r12 = r8 + r6 10 11 12 p55 x

  9. CROSS-CUTTING ISSUE: MISPECULATION What are the impacts of mispeculation or exceptions? • When instructions are flushed from the pipeline, rename mappings must be restored • to point-of-restart Otherwise, new instructions will see stale definitions • Two recovery approaches • Simple/slow • 1. Wait until the faulting/mispredicting instruction reaches retirement 2. Flush ALL speculative register definitions by clearing all rename table valid bits Complex/fast • 1. Checkpoint ENTIRE rename table anywhere recovery may be needed 2. At soon as mispeculation detected, recover table associated with PC

  10. DISCUSSION POINTS • What are the trade-offs between rename table flush recovery and checkpointing? • What if another instruction (being renamed) needs to access a physical storage entry after it has been overwritten? • Can I rename memory?

  11. REORDER BUFFER • @ Alloc • Allocate result storage at Tail Any order • @ Execute MEM IF ID EX CT REN alloc • Get inputs (ROB T-to-H then ARF) • Wait until all inputs ready In-order In-order • Execute operation ROB ARF PC • @ WB Dst regID • Write results/fault to ROB Dst value Head Tail • Indicate result is ready Except? • @ CT • Reorder Buffer (ROB) • Wait until inst @ Head is done • If fault, initiate handler – Circular queue of spec state • Else, write results to ARF – May contain multiple • Deallocate entry from ROB definitions of same register

  12. DYNAMIC INSTRUCTION SCHEDULING Any order Any order @ Alloc MEM • Allocate ROB storage at Tail IF ID EX WB CT REN alloc REG • Allocate RS for instruction In-order In-order @ REG RS • Get inputs from ROB/ARF entry specified by REN ROB ARF • Write instruction with Value V phyID available operands into assigned RS V phyID Value Reservation Stations (RS) @ WB Op dstID – Associative storage indexed • Write result into ROB entry by phyID of dest, returns • Broadcast result into RS insts ready to execute with phyID of dest register – phyID is ROB index of inst that • Dellocate RS entry will compute operand (used to (requires match on broadcast) maintenance of an RS free – Value contains actual operand map) – Valid bits set when operand is available (after broadcast)

  13. WAKEUP-SELECT-EXECUTE LOOP To EX/MEM dstID result = = grant src 1 val 1 src 2 val 2 dstID MEM EX WB req RS = = Selection src 1 val 1 src 2 val 2 dstID Logic = = src 1 val 1 src 2 val 2 dstID

  14. WINDOW SIZE VS. CLOCK SPEED • Increasing the number of RS [Brainiac] • Longer broadcast paths • Thus more capacitance, and slower signal propagation • But, more ILP extracted • Decreasing the number of RS [Speed Demon] • Shorter broadcast paths • Thus less capacitance, and faster signal propagation • But, less ILP extracted • Which approach is better and when?

  15. CROSS-CUTTING ISSUE: MISPECULATION What are the impacts of mispeculation or exceptions? • When instructions are flushed from the pipeline, their RS entries must be • reclaimed Otherwise, storage leaks in the microarchitecture • This can happen, Alpha 21264 reportedly flushes the instruction window to reclaim all • RS resources every million or so cycles The PIII processor reportedly contains a livelock/deadlock detector that would • recover this failure scenario Typical recovery approach • • Checkpoint free map at potential fault/mispeculation points Recover the RS free map associated with recovery PC •

  16. OPTIMIZING THE SCHEDULER • Optimizing Wakeup • Value-less reservation stations • Remove register values from latency-critical RS structures • Pipelined schedulers • Transform wakeup-select-execute loop to wakeup-execute loop • Clustered instruction windows • Allow some RS to be “close” and other “far away”, for a clock boost • Optimizing Selection • Reservation station banking • Associate RS groups with a FU, reduces the complexity of picking

  17. VALUE-LESS RESERVATION STATIONS Any order Any order MEM IF ID EX WB CT REN alloc REG In-order In-order RS ROB ARF V phyID V phyID • Q: Do we need to know the value of a register to schedule its dependent operations? Op dstID • A: No, we simply need dependencies and latencies • Value-less RS only contains required info • Dependencies specified by physical register IDs • Latency specified by opcode • Access register file in a later stage, after selection • Reduces size of RS, which improves broadcast speed

  18. VALUE-LESS RESERVATION STATIONS To EX/MEM dstID = = grant src 1 src 2 dstID MEM EX WB req RS = = Selection src 1 src 2 dstID Logic = = src 1 src 2 dstID

  19. PIPELINED SCHEDULERS Any order Any order MEM IF ID EX WB CT REN alloc REG In-order In-order RS ROB ARF V phyID Q: Do we need to know the result of an instruction to schedule its • V phyID dependent operations? A: Once again, no, we need know only dependencies and latency • Op dstID • To decouple wakeup-select loop Broadcast dstID back into scheduler N-cycles after inst enters REG, • where N is the latency of the instruction What if latency of operation is non-deterministic? • • E.g., load instructions (2 cycle hit, 8 cycle miss) Wait until latency known before scheduling dependencies (SLOW) • • Predict latency, reschedule if incorrect Reschedule all vs. selective •

  20. PIPELINED SCHEDULERS To EX/MEM dstID = = timer grant src 1 src 2 dstID MEM EX WB req RS = = timer Selection src 1 src 2 dstID Logic = = timer src 1 src 2 dstID

  21. CLUSTERED INSTRUCTION WINDOWS • Split instruction window into execution Single Cycle clusters Broadcast • W/N RS per cluster, where W is the window size, N is the # of clusters • Faster broadcast into split windows • Inter-cluster broadcasts take at least an one more cycle • Instruction steering Single • Minimizes inter-cluster transfers Cycle Broadcast • Integer/Floating point split Single Cycle • Integer/Address split Inter-Cluster I-steer Broadcast • Dependence-based steering Single Cycle Broadcast

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend