15-740/ Computer Architecture Lecture 5: Precise Exceptions

Slides:



Advertisements
Similar presentations
1/1/ / faculty of Electrical Engineering eindhoven university of technology Speeding it up Part 3: Out-Of-Order and SuperScalar execution dr.ir. A.C. Verschueren.
Advertisements

1 Lecture 11: Modern Superscalar Processor Models Generic Superscalar Models, Issue Queue-based Pipeline, Multiple-Issue Design.
Computer Structure 2014 – Out-Of-Order Execution 1 Computer Structure Out-Of-Order Execution Lihu Rappoport and Adi Yoaz.
1 Lecture: Out-of-order Processors Topics: out-of-order implementations with issue queue, register renaming, and reorder buffer, timing, LSQ.
THE MIPS R10000 SUPERSCALAR MICROPROCESSOR Kenneth C. Yeager IEEE Micro in April 1996 Presented by Nitin Gupta.
Spring 2003CSE P5481 Reorder Buffer Implementation (Pentium Pro) Hardware data structures retirement register file (RRF) (~ IBM 360/91 physical registers)
CS 211: Computer Architecture Lecture 5 Instruction Level Parallelism and Its Dynamic Exploitation Instructor: M. Lancaster Corresponding to Hennessey.
CPE 731 Advanced Computer Architecture ILP: Part IV – Speculative Execution Dr. Gheith Abandah Adapted from the slides of Prof. David Patterson, University.
1 Lecture 7: Out-of-Order Processors Today: out-of-order pipeline, memory disambiguation, basic branch prediction (Sections 3.4, 3.5, 3.7)
Trace Caches J. Nelson Amaral. Difficulties to Instruction Fetching Where to fetch the next instruction from? – Use branch prediction Sometimes there.
1 Lecture 9: Dynamic ILP Topics: out-of-order processors (Sections )
Implementing Precise Interrupts in Pipelined Processors James E. Smith Andrew R.Pleszkun Presented By: Ravikumar Source:
© Wen-mei Hwu and S. J. Patel, 2005 ECE 412, University of Illinois Lecture Instruction Execution: Dynamic Scheduling.
Computer Architecture: Out-of-Order Execution
Spring 2003CSE P5481 Precise Interrupts Precise interrupts preserve the model that instructions execute in program-generated order, one at a time If an.
Implementing Precise Interrupts in Pipelined Processors James E. Smith Andrew R.Pleszkun Presented By: Shrikant G.
OOO Pipelines - II Smruti R. Sarangi IIT Delhi 1.
1 Lecture: Out-of-order Processors Topics: a basic out-of-order processor with issue queue, register renaming, and reorder buffer.
Out-of-order execution Lihu Rappoport 11/ MAMAS – Computer Architecture Out-Of-Order Execution Dr. Lihu Rappoport.
15-740/ Computer Architecture Lecture 12: Issues in OoO Execution Prof. Onur Mutlu Carnegie Mellon University Fall 2011, 10/7/2011.
Samira Khan University of Virginia Feb 9, 2016 COMPUTER ARCHITECTURE CS 6354 Precise Exception The content and concept of this course are adapted from.
CS203 – Advanced Computer Architecture ILP and Speculation.
15-740/ Computer Architecture Lecture 7: Out-of-Order Execution Prof. Onur Mutlu Carnegie Mellon University.
Dynamic Scheduling Why go out of style?
15-740/ Computer Architecture Lecture 4: Pipelining
CSL718 : Superscalar Processors
Precise Exceptions and Out-of-Order Execution
Computer Architecture Lecture 14: Out-of-Order Execution
Design of Digital Circuits Lecture 18: Out-of-Order Execution
Multiscalar Processors
/ Computer Architecture and Design
Smruti R. Sarangi IIT Delhi
PowerPC 604 Superscalar Microprocessor
CIS-550 Advanced Computer Architecture Lecture 10: Precise Exceptions
15-740/ Computer Architecture Lecture 7: Pipelining
Lecture: Out-of-order Processors
CS5100 Advanced Computer Architecture Hardware-Based Speculation
Sequential Execution Semantics
Computer Architecture: Multithreading (I)
Morgan Kaufmann Publishers The Processor
Lecture 6: Advanced Pipelines
Lecture 10: Out-of-order Processors
Lecture 11: Out-of-order Processors
Lecture: Out-of-order Processors
Lecture 8: ILP and Speculation Contd. Chapter 2, Sections 2. 6, 2
Smruti R. Sarangi IIT Delhi
Lecture 11: Memory Data Flow Techniques
15-740/ Computer Architecture Lecture 24: Control Flow
Smruti R. Sarangi Computer Science and Engineering, IIT Delhi
Lecture: Out-of-order Processors
Lecture 8: Dynamic ILP Topics: out-of-order processors
Adapted from the slides of Prof
Lecture 7: Dynamic Scheduling with Tomasulo Algorithm (Section 2.4)
15-740/ Computer Architecture Lecture 14: Runahead Execution
Adapted from the slides of Prof
Prof. Onur Mutlu Carnegie Mellon University Fall 2011, 9/30/2011
Instruction-Level Parallelism (ILP)
15-740/ Computer Architecture Lecture 10: Out-of-Order Execution
Prof. Onur Mutlu Carnegie Mellon University
Dynamic Hardware Prediction
Lecture 10: ILP Innovations
Lecture 9: Dynamic ILP Topics: out-of-order processors
Conceptual execution on a processor which exploits ILP
Prof. Onur Mutlu Carnegie Mellon University Spring 2013, 2/15/2013
Design of Digital Circuits Lecture 15: Pipelining Issues
Prof. Onur Mutlu Carnegie Mellon University Spring 2015, 2/11/2015
Spring 2019 Prof. Eric Rotenberg
Design of Digital Circuits Lecture 16: Out-of-Order Execution
Prof. Onur Mutlu Carnegie Mellon University
Presentation transcript:

15-740/18-740 Computer Architecture Lecture 5: Precise Exceptions Prof. Onur Mutlu Carnegie Mellon University

Last Time … Performance Metrics Amdahl’s Law Single-cycle, multi-cycle machines Pipelining Stalls Dependencies

Issues in Pipelining: Increased CPI Control dependency stall: what to fetch next Solution: predict which instruction comes next What if prediction is wrong? Another solution: hardware-based fine-grained multithreading Can tolerate both data and control dependencies Read: James Thornton, “Parallel operation in the Control Data 6600,” AFIPS 1964. Read: Burton Smith, “A pipelined, shared resource MIMD computer,” ICPP 1978. BEQ R1, R2, TARGET F D E W F F F D E W

Issues in Pipelining: Increased CPI Resource Contention Stall What if two concurrent operations need the same resource? Examples: Instruction fetch and data fetch both need memory. Solution? Register read and register write both need the register file A store instruction and a load instruction both need to access memory. Solution? F D E W LD R1  R2(4) ADD R2  R1, R5 ADD R6  R3, R4

Issues in Pipelining: Multi-Cycle Execute Instructions can take different number of cycles in EXECUTE stage Integer ADD versus FP MULtiply What is wrong with this picture? What if FMUL incurs an exception? Sequential semantics of the ISA NOT preserved! FMUL R4  R1, R2 ADD R3  R1, R2 F D E W F D E W F D E W F D E W F D E W FMUL R4  R5, R6 ADD R3  R5, R6 F D E W F D E W

Handling Exceptions in Pipelining Exceptions versus interrupts Cause Exceptions: internal to the running thread Interrupts: external to the running thread When to Handle Exceptions: when detected (and known to be non-speculative) Interrupts: when convenient Except for very high priority ones Power failure Machine check Priority: process (exception), depends (interrupt) Handling Context: process (exception), system (interrupt)

Precise Exceptions/Interrupts The architectural state should be consistent when the exception/interrupt is ready to be handled 1. All previous instructions should be completely retired. 2. No later instruction should be retired. Retire = commit = finish execution and update arch. state

Ensuring Precise Exceptions in Pipelining Idea: Make each operation take the same amount of time Downside What about memory operations? Each functional unit takes 500 cycles? FMUL R3  R1, R2 ADD R4  R1, R2 F D E E E E E E E E W F D E E E E E E E E W F D E E E E E E E E W F D E E E E E E E E W F D E E E E E E E E W F D E E E E E E E E W F D E E E E E E E E W

Solutions Reorder buffer History buffer Future register file Checkpointing Reading Smith and Plezskun, “Implementing Precise Interrupts in Pipelined Processors” IEEE Trans on Computers 1988 and ISCA 1985. Hwu and Patt, “Checkpoint Repair for Out-of-order Execution Machines,” ISCA 1987.

Solution I: Reorder Buffer (ROB) Idea: Complete instructions out-of-order, but reorder them before making results visible to architectural state When instruction is decoded it reserves an entry in the ROB When instruction completes, it writes result into ROB entry When instruction oldest in ROB, its result moved to reg. file or memory Func Unit Register File Instruction Cache Reorder Buffer Func Unit Func Unit

Reorder Buffer: Independent Operations Results first written to ROB, then to register file at commit time What if a later operation needs a value in the reorder buffer? Read reorder buffer in parallel with the register file. How? F D E R W F D E R W F D E R W F D E R W F D E E E E E E E E R W F D E R W F D E R W

Reorder Buffer: How to Access? A register value can be in the register file, reorder buffer, (or bypass paths) Register File Instruction Cache Func Unit Func Unit Content Addressable Memory (searched with register ID) Reorder Buffer Func Unit bypass path

Simplifying Reorder Buffer Access Idea: Use indirection Access register file first If register not valid, register file stores the ID of the reorder buffer entry that contains (or will contain) the value of the register Mapping of the register to a ROB entry Access reorder buffer next What is in a reorder buffer entry? Can it be simplified further? V DestRegID DestRegVal StoreAddr StoreData BranchTarget PC/IP Control/valid bits

What is Wrong with This Picture? What is R4’s value at the end? The first FMUL’s result Output dependency not respected F D E W FMUL R4  R1, R2 ADD R3  R1, R2 F D E W F D E W F D E W F D E W FMUL R2  R5, R6 ADD R4  R5, R6 F D E W F D E W

Register Renaming with a Reorder Buffer Output and anti dependencies are not true dependencies WHY? The same register refers to values that have nothing to do with each other They exist due to lack of register ID’s (i.e. names) in the ISA The register ID is renamed to the reorder buffer entry that will hold the register’s value Register ID  ROB entry ID Architectural register ID  Physical register ID After renaming, ROB entry ID used to refer to the register This eliminates anti- and output- dependencies Gives the illusion that there are a large number of registers

Solution II: History Buffer (HB) Idea: Update architectural state when instruction completes, but UNDO UPDATES when an exception occurs When instruction is decoded, it reserves an HB entry When the instruction completes, it stores the old value of its destination in the HB When instruction is oldest and no exceptions/interrupts, the HB entry discarded When instruction is oldest and an exception needs to be handled, old values in the HB are written back into the architectural state from tail to head

History Buffer Advantage: Disadvantage: Register file contains up-to-date values. History buffer access not on critical path Disadvantage: Need to read the old value of the destination What about stores? Func Unit Register File Instruction Cache History Buffer Func Unit Func Unit Used only on exceptions

Solution III: Future File (FF) Idea: Keep two register files: Arch reg file: Updated in program order for precise exceptions Future reg file: Updated as soon as an instruction completes (if the instruction is the youngest one to write to a register) Future file is used for fast access to latest register values Architectural file is used for recovery on exceptions

Future File Advantage Disadvantage No sequential scanning of history buffer: Upon exception, simply copy arch file to future file No need for extra read of destination value Disadvantage Multiple register files + reorder buffer Func Unit Future File Arch. File Instruction Cache ROB Func Unit Func Unit Data or Tag V Used only on exceptions

Checkpointing Idea: Periodically checkpoint the register file state. When exception/interrupt occurs, go back to the most recent checkpoint and re-execute instructions one by one to re-generate exception. State guaranteed to be precise only at checkpoints. Advantage: Allows for aggressive execution between checkpoints Per-instruction reorder buffer is not needed Disadvantage: Interrupt latency depends on distance from checkpoint Hwu and Patt, “Checkpoint Repair for Out-of-order Execution Machines,” ISCA 1987.

Summary: Precise Exceptions in Pipelining When the oldest instruction ready-to-be-retired is detected to have caused an exception, the control logic Recovers architectural state (register file, IP, and memory) Flushes all younger instructions in the pipeline Saves IP and registers (as specified by the ISA) Redirects the fetch engine to the exception handling routine Vectored exceptions

Pipelining Issues: Branch Mispredictions A branch misprediction resembles an “exception” Except it is not visible to software What about branch misprediction recovery? Similar to exception handling except can be initiated before the branch is the oldest instruction All three state recovery methods can be used Difference between exceptions and branch mispredictions? Branch mispredictions more common: need fast recovery

Pipelining Issues: Stores Handling out-of-order completion of memory operations UNDOing a memory write more difficult than UNDOing a register write. Why? One idea: Keep store address/data in reorder buffer How does a load instruction find its data? Store/write buffer: Similar to reorder buffer, but used only for store instructions Program-order list of un-committed store operations When store is decoded: Allocate a store buffer entry When store address and data become available: Record in store buffer entry When the store is the oldest instruction in the pipeline: Update the memory address (i.e. cache) with store data