CS 152 Computer Architecture and Engineering. Lecture 10 - Complex Pipelines, Out-of-Order Issue, Register Renaming

Similar documents
INSTRUCTION LEVEL PARALLELISM PART VII: REORDER BUFFER

Solution: start more than one instruction in the same clock cycle CPI < 1 (or IPC > 1, Instructions per Cycle) Two approaches:

WAR: Write After Read

Pipelining Review and Its Limitations


Lecture: Pipelining Extensions. Topics: control hazards, multi-cycle instructions, pipelining equations

Computer Architecture TDTS10

The Microarchitecture of Superscalar Processors

Pipeline Hazards. Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. Based on the material prepared by Arvind and Krste Asanovic

Overview. CISC Developments. RISC Designs. CISC Designs. VAX: Addressing Modes. Digital VAX

Pipeline Hazards. Structure hazard Data hazard. ComputerArchitecture_PipelineHazard1

VLIW Processors. VLIW Processors

Q. Consider a dynamic instruction execution (an execution trace, in other words) that consists of repeats of code in this pattern:

Introduction to RISC Processor. ni logic Pvt. Ltd., Pune

Administration. Instruction scheduling. Modern processors. Examples. Simplified architecture model. CS 412 Introduction to Compilers

CPU Performance Equation

Computer Architecture Lecture 2: Instruction Set Principles (Appendix A) Chih Wei Liu 劉 志 尉 National Chiao Tung University

CS 61C: Great Ideas in Computer Architecture Virtual Memory Cont.

Execution Cycle. Pipelining. IF and ID Stages. Simple MIPS Instruction Formats

CS:APP Chapter 4 Computer Architecture. Wrap-Up. William J. Taffe Plymouth State University. using the slides of

Computer Organization and Components

4 RISC versus CISC Architecture

CS352H: Computer Systems Architecture

Instruction Set Architecture. or How to talk to computers if you aren t in Star Trek

CS 152 Computer Architecture and Engineering. Lecture 22: Virtual Machines

PROBLEMS #20,R0,R1 #$3A,R2,R4

BEAGLEBONE BLACK ARCHITECTURE MADELEINE DAIGNEAU MICHELLE ADVENA

Superscalar Processors. Superscalar Processors: Branch Prediction Dynamic Scheduling. Superscalar: A Sequential Architecture. Superscalar Terminology

Static Scheduling. option #1: dynamic scheduling (by the hardware) option #2: static scheduling (by the compiler) ECE 252 / CPS 220 Lecture Notes

Introduction to Microprocessors

UNIVERSITY OF CALIFORNIA, DAVIS Department of Electrical and Computer Engineering. EEC180B Lab 7: MISP Processor Design Spring 1995

Giving credit where credit is due

Software Pipelining. for (i=1, i<100, i++) { x := A[i]; x := x+1; A[i] := x

Instruction Level Parallelism I: Pipelining

Central Processing Unit (CPU)

Exploring the Design of the Cortex-A15 Processor ARM s next generation mobile applications processor. Travis Lanier Senior Product Manager

Instruction Set Architecture (ISA)

CHAPTER 7: The CPU and Memory

Module: Software Instruction Scheduling Part I

A SystemC Transaction Level Model for the MIPS R3000 Processor

Using Graphics and Animation to Visualize Instruction Pipelining and its Hazards

Architecture and Implementation of the ARM Cortex -A8 Microprocessor

ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-12: ARM

OPENSPARC T1 OVERVIEW

Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2

Introduction to Cloud Computing

Lecture 11: Multi-Core and GPU. Multithreading. Integration of multiple processor cores on a single chip.

Solutions. Solution The values of the signals are as follows:

Energy Efficient Design of the Reorder Buffer 1

Chapter 5 Instructor's Manual

(Refer Slide Time: 00:01:16 min)

"JAGUAR AMD s Next Generation Low Power x86 Core. Jeff Rupley, AMD Fellow Chief Architect / Jaguar Core August 28, 2012

Introducción. Diseño de sistemas digitales.1

Technical Report. Complexity-effective superscalar embedded processors using instruction-level distributed processing. Ian Caulfield.

Chapter 4 Lecture 5 The Microarchitecture Level Integer JAVA Virtual Machine

Midterm I SOLUTIONS March 21 st, 2012 CS252 Graduate Computer Architecture

A Lab Course on Computer Architecture

EE482: Advanced Computer Organization Lecture #11 Processor Architecture Stanford University Wednesday, 31 May ILP Execution

IA-64 Application Developer s Architecture Guide

StrongARM** SA-110 Microprocessor Instruction Timing

Pentium vs. Power PC Computer Architecture and PCI Bus Interface

Instruction Set Architecture (ISA) Design. Classification Categories

Computer organization

CS521 CSE IITG 11/23/2012

OC By Arsene Fansi T. POLIMI

EE361: Digital Computer Organization Course Syllabus

Computer Architecture Lecture 3: ISA Tradeoffs. Prof. Onur Mutlu Carnegie Mellon University Spring 2013, 1/18/2013

Design of Pipelined MIPS Processor. Sept. 24 & 26, 1997

picojava TM : A Hardware Implementation of the Java Virtual Machine

Chapter 9 Computer Design Basics!

SPARC64 X: Fujitsu s New Generation 16 Core Processor for the next generation UNIX servers

Instruction Set Design

Instruction scheduling

Software implementation of Post-Quantum Cryptography

CHAPTER 4 MARIE: An Introduction to a Simple Computer

LSN 2 Computer Processors

CPU Organization and Assembly Language

Bindel, Spring 2010 Applications of Parallel Computers (CS 5220) Week 1: Wednesday, Jan 27

Thread level parallelism

CARNEGIE MELLON UNIVERSITY

Boosting Beyond Static Scheduling in a Superscalar Processor

Performance evaluation

Addressing The problem. When & Where do we encounter Data? The concept of addressing data' in computations. The implications for our machine design(s)

Intel Pentium 4 Processor on 90nm Technology

CS252 Graduate Computer Architecture Spring 2014 Lecture 1: Introduc<on

IBM CELL CELL INTRODUCTION. Project made by: Origgi Alessandro matr Teruzzi Roberto matr IBM CELL. Politecnico di Milano Como Campus

Multithreading Lin Gao cs9244 report, 2006

Review: MIPS Addressing Modes/Instruction Formats

Design of Digital Circuits (SS16)

Where we are CS 4120 Introduction to Compilers Abstract Assembly Instruction selection mov e1 , e2 jmp e cmp e1 , e2 [jne je jgt ] l push e1 call e

SOC architecture and design

18-548/ Associativity 9/16/98. 7 Associativity / Memory System Architecture Philip Koopman September 16, 1998

! Metrics! Latency and throughput. ! Reporting performance! Benchmarking and averaging. ! CPU performance equation & performance trends

NIAGARA: A 32-WAY MULTITHREADED SPARC PROCESSOR

Instruction Set Architecture. Datapath & Control. Instruction. LC-3 Overview: Memory and Registers. CIT 595 Spring 2010

Software Pipelining. Y.N. Srikant. NPTEL Course on Compiler Design. Department of Computer Science Indian Institute of Science Bangalore

Streamlining Data Cache Access with Fast Address Calculation

CMSC 611: Advanced Computer Architecture

A s we saw in Chapter 4, a CPU contains three main sections: the register section,

Property of ISA vs. Uarch?

Transcription:

CS 152 Computer Architecture and Engineering Lecture 10 - Complex Pipelines, Out-of-Order Issue, Register Renaming Krste Asanovic Electrical Engineering and Computer Sciences University of California at Berkeley http://www.eecs.berkeley.edu/~krste! http://inst.eecs.berkeley.edu/~cs152! February 28, 2011 CS152, Spring 2011

Last time in Lecture 9 Modern page-based virtual memory systems provide: Translation, Protection, Virtual memory. Translation and protection information stored in page tables, held in main memory Translation and protection information cached in translation-lookaside buffer (TLB) to provide singlecycle translation+protection check in common case Virtual memory interacts with cache design Physical cache tags require address translation before tag lookup, or use untranslated offset bits to index cache. Virtual tags do not require translation before cache hit/miss determination, but need to be flushed or extended with ASID to cope with context swaps. Also, must deal with virtual address aliases (usually by disallowing copies in cache). February 28, 2011 CS152, Spring 2011 2

Complex Pipelining: Motivation Pipelining becomes complex when we want high performance in the presence of: Long latency or partially pipelined floatingpoint units Memory systems with variable access time Multiple arithmetic and memory units February 28, 2011 CS152, Spring 2011 3

Floating-Point Unit (FPU) Much more hardware than an integer unit Single-cycle FPU is a bad idea - why? it is common to have several FPU s it is common to have different types of FPU s Fadd, Fmul, Fdiv,... an FPU may be pipelined, partially pipelined or not pipelined To operate several FPU s concurrently the FP register file needs to have more read and write ports February 28, 2011 CS152, Spring 2011 4

Functional Unit Characteristics fully pipelined 1cyc 1cyc 1cyc partially pipelined 2 cyc 2 cyc Functional units have internal pipeline registers operands are latched when an instruction enters a functional unit following instructions are able to write register file during a long-latency operation February 28, 2011 CS152, Spring 2011 5

Floating-Point ISA Interaction between the floating-point datapath and the integer datapath is determined largely by the ISA MIPS ISA separate register files for FP and Integer instructions the only interaction is via a set of move instructions (some ISA s don t even permit this) separate load/store for FPR s and GPR s but both use GPR s for address calculation separate conditions for branches FP branches are defined in terms of condition codes February 28, 2011 CS152, Spring 2011 6

Realistic Memory Systems Common approaches to improving memory performance caches single cycle except in case of a miss stall interleaved memory multiple memory accesses bank conflicts split-phase memory operations (separate memory request from response) out-of-order responses Latency of access to the main memory is usually much greater than one cycle and often unpredictable Solving this problem is a central issue in computer architecture February 28, 2011 CS152, Spring 2011 7

Issues in Complex Pipeline Control Structural conflicts at the execution stage if some FPU or memory unit is not pipelined and takes more than one cycle Structural conflicts at the write-back stage due to variable latencies of different functional units Out-of-order write hazards due to variable latencies of different functional units How to handle exceptions? ALU Mem IF ID Issue WB Fadd GPRs FPRs Fmul Fdiv February 28, 2011 CS152, Spring 2011 8

Complex In-Order Pipeline PC Inst. Mem D Decode GPRs X1 + X2 Data Mem X3 W Delay writeback so all operations have same latency to W stage Write ports never oversubscribed (one inst. in & one inst. out every cycle) Stall pipeline on long latency operations, e.g., divides, cache misses Handle exceptions in-order at FPRs commit point How to prevent increased writeback latency from slowing down single cycle integer operations? Bypassing X1 FDiv X2 FAdd X3 X2 FMul X3 Unpipelined X2 divider X3 W Commit Point February 28, 2011 CS152, Spring 2011 9

In-Order Superscalar Pipeline PC Inst. Mem 2 D Dual Decode GPRs X1 + X2 Data Mem X3 W Fetch two instructions per cycle; issue both simultaneously if one is integer/memory and other is floating point Inexpensive way of increasing throughput, examples include Alpha 21064 (1992) & MIPS R5000 series (1996) Same idea can be extended to wider issue by duplicating functional units (e.g. 4-issue UltraSPARC & Alpha 21164) but regfile ports and bypassing costs grow quickly FPRs X1 FDiv X2 FAdd X3 X2 FMul X3 Unpipelined X2 divider X3 Commit Point W February 28, 2011 CS152, Spring 2011 10

Types of Data Hazards Consider executing a sequence of r k r i op r j type of instructions Data-dependence r 3 r 1 op r 2 Read-after-Write r 5 r 3 op r 4 (RAW) hazard Anti-dependence r 3 r 1 op r 2 Write-after-Read r 1 r 4 op r 5 (WAR) hazard Output-dependence r 3 r 1 op r 2 r 3 r 6 op r 7 Write-after-Write (WAW) hazard February 28, 2011 CS152, Spring 2011 11

Register vs. Memory Dependence Data hazards due to register operands can be determined at the decode stage but data hazards due to memory operands can be determined only after computing the effective address store M[r 1 + disp1] r 2 load r 3 M[r 4 + disp2] Does (r 1 + disp1) = (r 4 + disp2)? February 28, 2011 CS152, Spring 2011 12

Data Hazards: An Example I 1 DIVD f6, f6, f4 I 2 LD f2, 45(r3) I 3 MULTD f0, f2, f4 I 4 DIVD f8, f6, f2 I 5 SUBD f10, f0, f6 I 6 ADDD f6, f8, f2 RAW Hazards WAR Hazards WAW Hazards February 28, 2011 CS152, Spring 2011 13

Instruction Scheduling I 1 DIVD f6, f6, f4 I 2 LD f2, 45(r3) I 3 MULTD f0, f2, f4 I 1 I 2 I 4 DIVD f8, f6, f2 I 5 SUBD f10, f0, f6 I 6 ADDD f6, f8, f2 I 3 I 4 Valid orderings: in-order I 1 I 2 I 3 I 4 I 5 I 6 I 5 out-of-order out-of-order I 2 I 1 I 3 I 4 I 5 I 6 I 1 I 2 I 3 I 5 I 4 I 6 I 6 February 28, 2011 CS152, Spring 2011 14

Out-of-order Completion In-order Issue Latency I 1 DIVD f6, f6, f4 4 I 2 LD f2, 45(r3) 1 I 3 MULTD f0, f2, f4 3 I 4 DIVD f8, f6, f2 4 I 5 SUBD f10, f0, f6 1 I 6 ADDD f6, f8, f2 1 in-order comp 1 2 out-of-order comp 1 2 1 2 3 4 3 5 4 6 5 6 2 3 1 4 3 5 5 4 6 6 February 28, 2011 CS152, Spring 2011 15

Complex Pipeline ALU Mem IF ID Issue WB GPR s FPR s Fadd Fmul Can we solve write hazards without equalizing all pipeline depths and without bypassing? Fdiv February 28, 2011 CS152, Spring 2011 16

When is it Safe to Issue an Instruction? Suppose a data structure keeps track of all the instructions in all the functional units The following checks need to be made before the Issue stage can dispatch an instruction Is the required function unit available? Is the input data available? RAW? Is it safe to write the destination? WAR? WAW? Is there a structural conflict at the WB stage? February 28, 2011 CS152, Spring 2011 17

A Data Structure for Correct Issues Keeps track of the status of Functional Units Name Busy Op Dest Src1 Src2 Int Mem Add1 Add2 Add3 Mult1 Mult2 Div The instruction i at the Issue stage consults this table FU available? check the busy column RAW? search the dest column for i s sources WAR? search the source columns for i s destination WAW? search the dest column for i s destination An entry is added to the table if no hazard is detected; An entry is removed from the table after Write-Back February 28, 2011 CS152, Spring 2011 18

Simplifying the Data Structure Assuming In-order Issue Suppose the instruction is not dispatched by the Issue stage if a RAW hazard exists or the required FU is busy, and that operands are latched by functional unit on issue: Can the dispatched instruction cause a WAR hazard? WAW hazard? NO: Operands read at issue YES: Out-of-order completion February 28, 2011 CS152, Spring 2011 19

Simplifying the Data Structure... No WAR hazard no need to keep src1 and src2 The Issue stage does not dispatch an instruction in case of a WAW hazard a register name can occur at most once in the dest column WP[reg#] : a bit-vector to record the registers for which writes are pending These bits are set to true by the Issue stage and set to false by the WB stage Each pipeline stage in the FU's must carry the dest field and a flag to indicate if it is valid the (we, ws) pair February 28, 2011 CS152, Spring 2011 20

Scoreboard for In-order Issues Busy[FU#] : a bit-vector to indicate FU s availability. (FU = Int, Add, Mult, Div) These bits are hardwired to FU's. WP[reg#] : a bit-vector to record the registers for which writes are pending. These bits are set to true by the Issue stage and set to false by the WB stage Issue checks the instruction (opcode dest src1 src2) against the scoreboard (Busy & WP) to dispatch FU available? RAW? WAR? WAW? Busy[FU#] WP[src1] or WP[src2] cannot arise WP[dest] February 28, 2011 CS152, Spring 2011 21

Scoreboard Dynamics Functional Unit Status Registers Reserved Int(1) Add(1) Mult(3) Div(4) WB for Writes t0 I 1 f6 f6 t1 I 2 f2 f6 f6, f2 t2 f6 f2 f6, f2 I 2 t3 I 3 f0 f6 f6, f0 t4 f0 f6 f6, f0 I 1 t5 I 4 f0 f8 f0, f8 t6 f8 f0 f0, f8 I 3 t7 I 5 f10 f8 f8, f10 t8 f8 f10 f8, f10 I 5 t9 f8 f8 I 4 t10 I 6 f6 f6 t11 f6 f6 I 6 I 1 DIVD f6, f6, f4 I 2 LD f2, 45(r3) I 3 MULTD f0, f2, f4 I 4 DIVD f8, f6, f2 I 5 SUBD f10, f0, f6 I 6 ADDD f6, f8, f2 February 28, 2011 CS152, Spring 2011 22

In-Order Issue Limitations: an example latency 1 LD F2, 34(R2) 1 1 2 2 LD F4, 45(R3) long 3 MULTD F6, F4, F2 3 4 SUBD F8, F2, F2 1 5 DIVD F4, F2, F8 4 4 5 3 6 ADDD F10, F6, F4 1 6 In-order: 1 (2,1)...... 2 3 4 4 3 5... 5 6 6 In-order issue restriction prevents instruction 4 from being dispatched February 28, 2011 CS152, Spring 2011 23

CS152 Administrivia Quiz 2, Monday March 7 Caches and Virtual memory L6 L9, PS 2, Lab 2, readings February 28, 2011 CS152, Spring 2011 24

Out-of-Order Issue ALU Mem IF ID Issue WB Fadd Fmul Issue stage buffer holds multiple instructions waiting to issue. Decode adds next instruction to buffer if there is space and the instruction does not cause a WAR or WAW hazard. Note: WAR possible again because issue is out-of-order (WAR not possible with in-order issue and latching of input operands at functional unit) Any instruction in buffer whose RAW hazards are satisfied can be issued (for now at most one dispatch per cycle). On a write back (WB), new instructions may get enabled. February 28, 2011 CS152, Spring 2011 25

Issue Limitations: In-Order and Out-of-Order latency 1 LD F2, 34(R2) 1 1 2 2 LD F4, 45(R3) long 3 MULTD F6, F4, F2 3 4 3 4 SUBD F8, F2, F2 1 5 DIVD F4, F2, F8 4 5 6 ADDD F10, F6, F4 1 6 In-order: 1 (2,1)...... 2 3 4 4 3 5... 5 6 6 Out-of-order: 1 (2,1) 4 4.... 2 3.. 3 5... 5 6 6 Out-of-order execution did not allow any significant improvement! February 28, 2011 CS152, Spring 2011 26

How many instructions can be in the pipeline? Which features of an ISA limit the number of instructions in the pipeline? Number of Registers Out-of-order dispatch by itself does not provide any significant performance improvement! February 28, 2011 CS152, Spring 2011 27

Overcoming the Lack of Register Names Floating Point pipelines often cannot be kept filled with small number of registers. IBM 360 had only 4 floating-point registers Can a microarchitecture use more registers than specified by the ISA without loss of ISA compatibility? Robert Tomasulo of IBM suggested an ingenious solution in 1967 using on-the-fly register renaming February 28, 2011 CS152, Spring 2011 28

Instruction-level Parallelism via Renaming latency 1 LD F2, 34(R2) 1 1 2 2 LD F4, 45(R3) long 3 MULTD F6, F4, F2 3 4 SUBD F8, F2, F2 1 4 X 3 5 DIVD F4, F2, F8 4 5 6 ADDD F10, F6, F4 1 6 In-order: 1 (2,1)...... 2 3 4 4 3 5... 5 6 6 Out-of-order: 1 (2,1) 4 4 5... 2 (3,5) 3 6 6 Any antidependence can be eliminated by renaming. (renaming additional storage) Can it be done in hardware? yes! February 28, 2011 CS152, Spring 2011 29

Register Renaming ALU Mem IF ID Issue WB Fadd Fmul 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 dispatched. Out-of-order or dataflow execution February 28, 2011 CS152, Spring 2011 30

Renaming Structures Renaming table & regfile Reorder buffer Ins# use exec op p1 src1 p2 src2 t 1 t 2.. t n Replacing the tag by its value is an expensive operation Load Unit FU FU Store Unit < 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 February 28, 2011 CS152, Spring 2011 31

Reorder Buffer Management Ins# use exec op p1 src1 p2 src2 ptr 2 next to deallocate t 1 t 2... Destination registers are renamed to the instruction s slot tag ptr 1 next available ROB managed circularly exec bit is set when instruction begins execution When an instruction completes its use bit is marked free ptr 2 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) February 28, 2011 CS152, Spring 2011 32 t n

Renaming & Out-of-order Issue An example v1 Renaming table p data F1 F2 v1 t1 F3 F4 t2 t5 F5 F6 t3 F7 F8 v4 t4 Reorder buffer Ins# use exec op p1 src1 p2 src2 1 1 0 10 LD 2 10 01 LD 3 1 0 MUL 10 v2 t2 1 v1 4 1 0 10 SUB 1 v1 1 v1 5 1 0 DIV 1 v1 01 t4 v4 t 1 t 2 t 3 t 4 t 5.. data / t i 1 LD F2, 34(R2) 2 LD F4, 45(R3) 3 MULTD F6, F4, F2 4 SUBD F8, F2, F2 5 DIVD F4, F2, F8 6 ADDD F10, F6, F4 When are tags in sources replaced by data? Whenever an FU produces data When can a name be reused? Whenever an instruction completes February 28, 2011 CS152, Spring 2011 33

IBM 360/91 Floating-Point Unit R. M. Tomasulo, 1967 1 2 3 4 5 6 load buffers (from memory) instructions... 1 2 3 4 Floating- Point Regfile Distribute instruction templates by functional units 1 2 3 Adder 1 2 Mult store buffers (to memory) < 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. February 28, 2011 CS152, Spring 2011 34

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. Effective on a very small class of programs 2. Memory latency a much bigger problem 3. Exceptions not precise! One more problem needed to be solved Control transfers February 28, 2011 CS152, Spring 2011 35

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 February 28, 2011 CS152, Spring 2011 36