CS 152 Computer Architecture and Engineering Lecture 11 - Out-of-Order Issue, Register Renaming, & Branch Prediction John Wawrzynek Electrical Engineering.

Slides:



Advertisements
Similar presentations
Out-of-Order Execution & Register Renaming
Advertisements

Krste Asanovic Electrical Engineering and Computer Sciences
© Krste Asanovic, 2014CS252, Spring 2014, Lecture 5 CS252 Graduate Computer Architecture Spring 2014 Lecture 5: Out-of-Order Processing Krste Asanovic.
1 Lecture 11: Modern Superscalar Processor Models Generic Superscalar Models, Issue Queue-based Pipeline, Multiple-Issue Design.
Electrical and Computer Engineering
A scheme to overcome data hazards
2/28/2013 CS152, Spring 2013 CS 152 Computer Architecture and Engineering Lecture 11 - Out-of-Order Issue, Register Renaming, & Branch Prediction Krste.
1 Lecture: Out-of-order Processors Topics: out-of-order implementations with issue queue, register renaming, and reorder buffer, timing, LSQ.
Computer Organization and Architecture (AT70.01) Comp. Sc. and Inf. Mgmt. Asian Institute of Technology Instructor: Dr. Sumanta Guha Slide Sources: Based.
CSE 490/590, Spring 2011 CSE 490/590 Computer Architecture Complex Pipelining II Steve Ko Computer Sciences and Engineering University at Buffalo.
February 28, 2011CS152, Spring 2011 CS 152 Computer Architecture and Engineering Lecture 10 - Complex Pipelines, Out-of-Order Issue, Register Renaming.
Spring 2003CSE P5481 Reorder Buffer Implementation (Pentium Pro) Hardware data structures retirement register file (RRF) (~ IBM 360/91 physical registers)
CPE 731 Advanced Computer Architecture ILP: Part IV – Speculative Execution Dr. Gheith Abandah Adapted from the slides of Prof. David Patterson, University.
CSE 490/590, Spring 2011 CSE 490/590 Computer Architecture ILP II Steve Ko Computer Sciences and Engineering University at Buffalo.
February 28, 2012CS152, Spring 2012 CS 152 Computer Architecture and Engineering Lecture 11 - Out-of-Order Issue, Register Renaming, & Branch Prediction.
CS 152 Computer Architecture and Engineering Lecture 13 - Out-of-Order Issue, Register Renaming, & Branch Prediction Krste Asanovic Electrical Engineering.
CSE 490/590, Spring 2011 CSE 490/590 Computer Architecture ILP III Steve Ko Computer Sciences and Engineering University at Buffalo.
March 11, 2010CS152, Spring 2010 CS 152 Computer Architecture and Engineering Lecture 14 - Advanced Superscalars Krste Asanovic Electrical Engineering.
CSE 490/590, Spring 2011 CSE 490/590 Computer Architecture ILP I Steve Ko Computer Sciences and Engineering University at Buffalo.
CS 152 Computer Architecture and Engineering Lecture 14 - Advanced Superscalars Krste Asanovic Electrical Engineering and Computer Sciences University.
CS 152 Computer Architecture and Engineering Lecture 15 - Advanced Superscalars Krste Asanovic Electrical Engineering and Computer Sciences University.
March 4, 2010CS152, Spring 2010 CS 152 Computer Architecture and Engineering Lecture 13 - Out-of-Order Issue, Register Renaming, & Branch Prediction Krste.
CS 152 Computer Architecture and Engineering Lecture 13 - Out-of-Order Issue and Register Renaming Krste Asanovic Electrical Engineering and Computer Sciences.
March 9, 2011CS152, Spring 2011 CS 152 Computer Architecture and Engineering Lecture 12 - Advanced Out-of-Order Superscalars Krste Asanovic Electrical.
CS 252 Graduate Computer Architecture Lecture 4: Instruction-Level Parallelism Krste Asanovic Electrical Engineering and Computer Sciences University of.
March 2, 2011CS152, Spring 2011 CS 152 Computer Architecture and Engineering Lecture 11 - Out-of-Order Issue, Register Renaming, & Branch Prediction Krste.
ECE 552 / CPS 550 Advanced Computer Architecture I Lecture 9 Instruction-Level Parallelism – Part 2 Benjamin Lee Electrical and Computer Engineering Duke.
1 Lecture 5 Overview of Superscalar Techniques CprE 581 Computer Systems Architecture, Fall 2009 Zhao Zhang Reading: Textbook, Ch. 2.1 “Complexity-Effective.
1 Lecture 6 Tomasulo Algorithm CprE 581 Computer Systems Architecture, Fall 2009 Zhao Zhang Reading:Textbook 2.4, 2.5.
CS 152 Computer Architecture and Engineering Lecture 15 - Out-of-Order Memory, Complex Superscalars Review Krste Asanovic Electrical Engineering and Computer.
1 Lecture 5: Dependence Analysis and Superscalar Techniques Overview Instruction dependences, correctness, inst scheduling examples, renaming, speculation,
1 Lecture 7: Speculative Execution and Recovery Branch prediction and speculative execution, precise interrupt, reorder buffer.
© Krste Asanovic, 2015CS252, Fall 2015, Lecture 6 CS252 Graduate Computer Architecture Fall 2015 Lecture 6: Out-of-Order Processors Krste Asanovic
March 1, 2012CS152, Spring 2012 CS 152 Computer Architecture and Engineering Lecture 12 - Advanced Out-of-Order Superscalars Krste Asanovic Electrical.
CS203 – Advanced Computer Architecture ILP and Speculation.
IBM System 360. Common architecture for a set of machines
CS 152 Computer Architecture and Engineering Lecture 10 - Complex Pipelines, Out-of-Order Issue, Register Renaming John Wawrzynek Electrical Engineering.
Dynamic Scheduling Why go out of style?
Lecture 10 - Complex Pipelines, Out-of-Order Issue, Register Renaming
/ Computer Architecture and Design
Smruti R. Sarangi IIT Delhi
CS252 Graduate Computer Architecture Spring 2014 Lecture 8: Advanced Out-of-Order Superscalar Designs Part-II Krste Asanovic
Out of Order Processors
Dr. George Michelogiannakis EECS, University of California at Berkeley
CS203 – Advanced Computer Architecture
Lecture: Out-of-order Processors
High-level view Out-of-order pipeline
CMSC 611: Advanced Computer Architecture
Lecture 16: Core Design Today: basics of implementing a correct ooo core: register renaming, commit, LSQ, issue queue.
Lecture 10: Out-of-order Processors
Lecture 11: Out-of-order Processors
Lecture: Out-of-order Processors
Lecture 18: Core Design Today: basics of implementing a correct ooo core: register renaming, commit, LSQ, issue queue.
Lecture 8: ILP and Speculation Contd. Chapter 2, Sections 2. 6, 2
Smruti R. Sarangi IIT Delhi
CS252 Graduate Computer Architecture Lecture 7 Dynamic Scheduling 2: Precise Interrupts February 9th, 2010 John Kubiatowicz Electrical Engineering.
Lecture 11: Memory Data Flow Techniques
Electrical and Computer Engineering
CS 152 Computer Architecture and Engineering Lecture 13 - Out-of-Order Issue, Register Renaming, & Branch Prediction Krste Asanovic Electrical Engineering.
Krste Asanovic Electrical Engineering and Computer Sciences
Krste Asanovic Electrical Engineering and Computer Sciences
Lecture 8: Dynamic ILP Topics: out-of-order processors
Adapted from the slides of Prof
Krste Asanovic Electrical Engineering and Computer Sciences
Krste Asanovic Electrical Engineering and Computer Sciences
Lecture 7: Dynamic Scheduling with Tomasulo Algorithm (Section 2.4)
Adapted from the slides of Prof
September 20, 2000 Prof. John Kubiatowicz
CS 152 Computer Architecture and Engineering CS252 Graduate Computer Architecture Lecture 11 – Out-of-Order Execution Krste Asanovic Electrical Engineering.
Lecture 9: Dynamic ILP Topics: out-of-order processors
Presentation transcript:

CS 152 Computer Architecture and Engineering Lecture 11 - Out-of-Order Issue, Register Renaming, & Branch Prediction John Wawrzynek Electrical Engineering and Computer Sciences University of California at Berkeley http://www.eecs.berkeley.edu/~johnw http://inst.eecs.berkeley.edu/~cs152 CS252 S05

CS152 Administrivia Quiz 2 Results posted PS3 posted CS252 S05

Last time in Lecture 12 Pipelining is complicated by multiple and/or variable latency functional units Out-of-order and/or pipelined execution requires tracking of dependencies RAW WAR WAW Dynamic issue logic can support out-of-order execution to improve performance Last time, looked at simple scoreboard to track out-of-order completion Hardware register renaming can further improve performance by removing hazards. CS252 S05

Register Renaming IF ID WB ALU Mem Fadd Fmul Issue Decode does register renaming and adds instructions to the issue-stage instruction reorder buffer (ROB)  renaming makes WAR or WAW hazards impossible Any instruction in ROB whose RAW hazards have been satisfied can be issued.  Out-of-order or dataflow execution CS252 S05

Renaming Structures Renaming table & regfile Reorder buffer Ins# use exec op p1 src1 p2 src2 t1 t2 . tn Reorder buffer Replacing the tag by its value is an expensive operation Load Unit Store Unit FU FU < t, result > Instruction template (i.e., tag t) is allocated by the Decode stage, which also associates tag with register in regfile When an instruction completes, its tag is deallocated CS252 S05

Reorder Buffer Management . tn ptr2 next to deallocate ptr1 next available Ins# use exec op p1 src1 p2 src2 Destination registers are renamed to the instruction’s slot tag ROB managed circularly “exec” bit is set when instruction begins execution When an instruction completes its “use” bit is marked free ptr2 is incremented only if the “use” bit is marked free Instruction slot is candidate for execution when: It holds a valid instruction (“use” bit is set) It has not already started execution (“exec” bit is clear) Both operands are available (p1 and p2 are set) CS252 S05

IBM 360/91 Floating-Point Unit R. M. Tomasulo, 1967 Regfile 1 2 3 4 5 6 p tag/data load buffers (from memory) ... instructions 1 2 3 4 p tag/data p tag/data p tag/data p tag/data p tag/data p tag/data p tag/data p tag/data p tag/data Distribute instruction templates by functional units 1 2 3 p tag/data p tag/data 1 p tag/data p tag/data p tag/data p tag/data 2 p tag/data p tag/data p tag/data p tag/data Adder Mult < tag, result > Common bus ensures that data is made available immediately to all the instructions waiting for it. Match tag, if equal, copy value & set presence “p”. p tag/data store buffers (to memory) p tag/data p tag/data CS252 S05

Effectiveness? Renaming and Out-of-order execution was first implemented in 1969 in IBM 360/91 but did not show up in the subsequent models until mid-Nineties. Why ? Reasons 1. Complex logic / cost 2. Memory latency a much bigger problem 3. Exceptions not precise! One more problem needed to be solved Control transfers CS252 S05

Precise Interrupts It must appear as if an interrupt is taken between two instructions (say Ii and Ii+1) the effect of all instructions up to and including Ii is totally complete no effect of any instruction after Ii has taken place The interrupt handler either aborts the program or restarts it at Ii+1 . CS252 S05

Effect on Interrupts Out-of-order Completion I1 DIVD f6, f6, f4 I2 LD f2, 45(r3) I3 MULTD f0, f2, f4 I4 DIVD f8, f6, f2 I5 SUBD f10, f0, f6 I6 ADDD f6, f8, f2 out-of-order comp 1 2 2 3 1 4 3 5 5 4 6 6 restore f2 restore f10 Consider interrupts Precise interrupts are difficult to implement at high speed - want to start execution of later instructions before exception checks finished on earlier instructions CS252 S05

Exception Handling (In-Order Five-Stage Pipeline) Asynchronous Interrupts Exc D PC Inst. Mem Decode E M Data Mem W + Cause EPC Kill D Stage Kill F Stage Kill E Stage Illegal Opcode Overflow Data Addr Except PC Address Exceptions Kill Writeback Select Handler PC Commit Point Hold exception flags in pipeline until commit point (M stage) Exceptions in earlier pipe stages override later exceptions Inject external interrupts at commit point (override others) If exception at commit: update Cause and EPC registers, kill all stages, inject handler PC into fetch stage CS252 S05

Phases of Instruction Execution PC Fetch: Instruction bits retrieved from cache. I-cache Fetch Buffer Decode: Instructions dispatched to appropriate issue-stage buffer Decode/Rename Issue Buffer Execute: Instructions and operands issued to execution units. When execution completes, all results and exception flags are available. Functional Units Result Buffer Commit Commit: Instruction irrevocably updates architectural state (aka “graduation”). Architectural State CS252 S05

In-Order Commit for Precise Exceptions Out-of-order In-order Commit Fetch Decode Reorder Buffer Exception? Kill Inject handler PC Execute Instructions fetched and decoded into instruction reorder buffer in-order Execution is out-of-order (  out-of-order completion) Commit (write-back to architectural state, i.e., regfile & memory, is in-order Temporary storage needed to hold results before commit (shadow registers and store buffers) CS252 S05

Extensions for Precise Exceptions Inst# use exec op p1 src1 p2 src2 pd dest data cause ptr2 next to commit ptr1 next available Reorder buffer add <pd, dest, data, cause> fields in the instruction template commit instructions to reg file and memory in program order  buffers can be maintained circularly on exception, clear reorder buffer by resetting ptr1=ptr2 (stores must wait for commit before updating memory) CS252 S05

Search the “dest” field in the reorder buffer Rollback and Renaming Register File (now holds only committed state) Reorder buffer Load Unit FU Store < t, result > t1 t2 . tn Ins# use exec op p1 src1 p2 src2 pd dest data Commit Register file does not contain renaming tags any more. How does the decode stage find the tag of a source register? Search the “dest” field in the reorder buffer CS252 S05

Renaming Table tag Register File Rename valid bit Table Reorder buffer Load Unit FU Store < t, result > t1 t2 . tn Ins# use exec op p1 src1 p2 src2 pd dest data Commit Renaming table is a cache to speed up register name look up. It needs to be cleared after each exception taken. When else are valid bits cleared? Control transfers CS252 S05

~ Loop length x pipeline width Control Flow Penalty Branch executed Next fetch started I-cache Fetch Buffer Issue Buffer Func. Units Arch. State Execute Decode Result Commit PC Fetch Modern processors may have > 10 pipeline stages between next PC calculation and branch resolution ! How much work is lost if pipeline doesn’t follow correct instruction flow? ~ Loop length x pipeline width CS252 S05

Mispredict Recovery In-order execution machines: Assume no instruction issued after branch can write-back before branch resolves Kill all instructions in pipeline behind mispredicted branch Out-of-order execution? Multiple instructions following branch in program order can complete before branch resolves CS252 S05

In-Order Commit for Precise Exceptions Out-of-order In-order Commit Fetch Decode Reorder Buffer Kill Kill Kill Exception? Execute Inject handler PC Instructions fetched and decoded into instruction reorder buffer in-order Execution is out-of-order (  out-of-order completion) Commit (write-back to architectural state, i.e., regfile & memory, is in-order Temporary storage needed in ROB to hold results before commit CS252 S05

Branch Misprediction in Pipeline Inject correct PC Branch Prediction Branch Resolution Kill Kill Kill Commit PC Fetch Decode Reorder Buffer Complete Execute Can have multiple unresolved branches in ROB Can resolve branches out-of-order by killing all the instructions in ROB that follow a mispredicted branch CS252 S05

Recovering ROB/Renaming Table Rename Snapshots Register File Rename Table t v t v r1 r2 Ptr2 next to commit Ins# use exec op p1 src1 p2 src2 pd dest data t1 t2 . tn rollback next available Ptr1 next available Reorder buffer Commit Load Unit Store Unit FU FU FU < t, result > Take snapshot of register rename table at each predicted branch, recover earlier snapshot if branch mispredicted CS252 S05

Important Points on OOO Execution Precise interrupts are provided by committing (graduating) instructions in-order. Any instruction not yet committed is considered “speculative” because it might be killed because of: Interrupt on an older instruction Branch misprediction Instructions (and their result values) are held in ROB waiting to commit

“Data-in-ROB” Design (HP PA8000, Pentium Pro, Core2Duo, Nehalem) Register File holds only committed state Reorder buffer Load Unit FU Store < t, result > t1 t2 . tn Ins# use exec op p1 src1 p2 src2 pd dest data Commit On dispatch into ROB, ready sources can be in regfile or in ROB dest (copied into src1/src2 if ready before dispatch) On completion, write to dest field and broadcast to src fields. On issue, read from ROB src fields Instructions are committed to the register file in order Instruction slots (i.e. tags) are recycled after commit CS252 S05

Data Movement in Data-in-ROB Design Architectural Register File Read results at commit Read operands during decode Write sources after decode Bypass newer values at decode ROB Src Operands Result Data Read operands at issue Write results at completion Functional Units

Unified Physical Register File (MIPS R10K, Alpha 21264, Intel Pentium 4 & Sandy Bridge) Rename all architectural registers into a single physical register file during decode, no register values read Functional units read and write from single unified register file holding committed and temporary registers in execute Commit only updates the mapping of architectural register to physical register, no data movement Unified Physical Register File Read operands at issue Functional Units Write results at completion Committed Register Mapping Decode Stage Register Mapping

Pipeline Design with Physical Regfile Branch Resolution Branch Prediction kill Out-of-Order In-Order PC Fetch Decode & Rename Reorder Buffer Commit In-Order Physical Reg. File Branch Unit ALU MEM Store Buffer D$ Execute CS252 S05

Lifetime of Physical Registers Physical regfile holds committed and speculative values Physical registers decoupled from ROB entries (no data in ROB) ld x1, (x3) addi x3, x1, #4 sub x6, x7, x9 add x3, x3, x6 ld x6, (x1) add x6, x6, x3 sd x6, (x1) ld x6, (x11) ld P1, (Px) addi P2, P1, #4 sub P3, Py, Pz add P4, P2, P3 ld P5, (P1) add P6, P5, P4 sd P6, (P1) ld P7, (Pw) Rename When can we reuse a physical register? When next write of same architectural register commits CS252 S05

Physical Register Management Rename Table Physical Regs Free List P0 P0 x5 P5 x6 P6 x7 x0 P8 x1 x2 P7 x3 x4 P1 P1 ld x1, 0(x3) addi x3, x1, #4 sub x6, x7, x6 add x3, x3, x6 ld x6, 0(x1) P2 P3 P3 P2 P4 P4 <x6> P5 p <x7> P6 p <x3> P7 p <x1> P8 p Pn ROB (LPRd requires third read port on Rename Table for each instruction) op p1 PR1 p2 PR2 ex use Rd PRd LPRd CS252 S05

Physical Register Management x5 P5 x6 P6 x7 x0 P8 x1 x2 P7 x3 x4 Rename Table <x6> P5 <x7> P6 <x3> P7 P0 Pn P1 P2 P3 P4 Physical Regs p <x1> P8 Free List P0 P1 P3 P2 P4 ld x1, 0(x3) addi x3, x1, #4 sub x6, x7, x6 add x3, x3, x6 ld x6, 0(x1) P0 op p1 PR1 p2 PR2 ex use Rd PRd LPRd ROB x ld p P7 x1 P0 P8 CS252 S05

Physical Register Management x5 P5 x6 P6 x7 x0 P8 x1 x2 P7 x3 x4 Rename Table <x6> P5 <x7> P6 <x3> P7 P0 Pn P1 P2 P3 P4 Physical Regs p <R1> P8 Free List P0 P1 P3 P2 P4 ld x1, 0(x3) addi x3, x1, #4 sub x6, x7, x6 add x3, x3, x6 ld x6, 0(x1) P0 P1 op p1 PR1 p2 PR2 ex use Rd PRd LPRd ROB x ld p P7 x1 P0 P8 x addi P0 x3 P1 P7 CS252 S05

Physical Register Management x5 P5 x6 P6 x7 x0 P8 x1 x2 P7 x3 x4 Rename Table <x6> P5 <x7> P6 <x3> P7 P0 Pn P1 P2 P3 P4 Physical Regs p <x1> P8 Free List P0 P1 P3 P2 P4 ld x1, 0(x3) addi x3, x1, #4 sub x6, x7, x6 add x3, x3, x6 ld x6, 0(x1) P0 P1 P3 op p1 PR1 p2 PR2 ex use Rd PRd LPRd ROB x ld p P7 x1 P0 P8 x addi P0 x3 P1 P7 x sub p P6 p P5 x6 P3 P5 CS252 S05

Physical Register Management x5 P5 x6 P6 x7 x0 P8 x1 x2 P7 x3 x4 Rename Table <x6> P5 <x7> P6 <x3> P7 P0 Pn P1 P2 P3 P4 Physical Regs p <x1> P8 Free List P0 P1 P3 P2 P4 ld x1, 0(x3) addi x3, x1, #4 sub x6, x7, x6 add x3, x3, x6 ld x6, 0(x1) P0 P1 P2 P3 op p1 PR1 p2 PR2 ex use Rd PRd LPRd ROB x ld p P7 x1 P0 P8 x addi P0 x3 P1 P7 x sub p P6 p P5 x6 P3 P5 x add P1 P3 x3 P2 P1 CS252 S05

Physical Register Management x5 P5 x6 P6 x7 x0 P8 x1 x2 P7 x3 x4 Rename Table <x6> P5 <x7> P6 <x3> P7 P0 Pn P1 P2 P3 P4 Physical Regs p <x1> P8 Free List P0 P1 P3 P2 P4 ld x1, 0(x3) addi x3, x1, #4 sub x6, x7, x6 add x3, x3, x6 ld x6, 0(x1) P0 P1 P2 P3 P4 op p1 PR1 p2 PR2 ex use Rd PRd LPRd ROB x ld p P7 x1 P0 P8 x addi P0 x3 P1 P7 x sub p P6 p P5 x6 P3 P5 x add P1 P3 x3 P2 P1 x ld P0 x6 P4 P3 CS252 S05

Physical Register Management x5 P5 x6 P6 x7 x0 P8 x1 x2 P7 x3 x4 Rename Table <x6> P5 <x7> P6 <x3> P7 P0 Pn P1 P2 P3 P4 Physical Regs p <x1> P8 Free List P0 P1 P3 P2 P4 p <x1> ld x1, 0(x3) addi x3, x1, #4 sub x6, x7, x6 add x3, x3, x6 ld x6, 0(x1) P0 P1 P2 P8 P3 P4 op p1 PR1 p2 PR2 ex use Rd PRd LPRd ROB Execute & Commit x ld p P7 x1 P0 x ld p P7 x1 P0 x P8 x addi P0 x3 P1 P7 x sub p P6 p P5 x6 P3 P5 x add P1 P3 x3 P2 P1 x ld P0 x6 P4 P3 CS252 S05

Physical Register Management x5 P5 x6 P6 x7 x0 P8 x1 x2 P7 x3 x4 Rename Table <x6> P5 <x7> P6 <x3> P7 P0 Pn P1 P2 P3 P4 Physical Regs p P8 Free List P0 P1 P3 P2 P4 p <x1> p <x3> ld x1, 0(x3) addi x3, x1, #4 sub x6, x7, x6 add x3, x3, x6 ld x6, 0(x1) P0 P1 P2 P8 P7 P3 P4 op p1 PR1 p2 PR2 ex use Rd PRd LPRd ROB x x ld p P7 x1 P0 P8 Execute & Commit x addi P0 x3 P1 x addi P0 x3 P1 x P7 x sub p P6 p P5 x6 P3 P5 x add P1 P3 x3 P2 P1 x ld P0 x6 P4 P3 CS252 S05

Acknowledgements These slides contain material developed and copyright by: Arvind (MIT) Krste Asanovic (MIT/UCB) Joel Emer (Intel/MIT) James Hoe (CMU) John Kubiatowicz (UCB) David Patterson (UCB) MIT material derived from course 6.823 UCB material derived from course CS252 CS252 S05