dynamic scheduling
play

DYNAMIC SCHEDULING Mahdi Nazm Bojnordi Assistant Professor School - PowerPoint PPT Presentation

DYNAMIC SCHEDULING Mahdi Nazm Bojnordi Assistant Professor School of Computing University of Utah CS/ECE 6810: Computer Architecture Overview Announcement Homework 2 will be uploaded tonight This lecture Dynamic scheduling n


  1. DYNAMIC SCHEDULING Mahdi Nazm Bojnordi Assistant Professor School of Computing University of Utah CS/ECE 6810: Computer Architecture

  2. Overview ¨ Announcement ¤ Homework 2 will be uploaded tonight ¨ This lecture ¤ Dynamic scheduling n Forming data flow graph on the fly ¤ Register renaming n Removing false data dependence n Architectural vs. physical registers

  3. Big Picture ¨ Goal: exploiting more ILP by avoiding stall cycles ¤ Branch prediction can avoid the stall cycles in the frontend Integer unit Reorder Buffer (ROB) Ex Mem Branch pred FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB FP adder A1 A2 A3 A4 FP/integer divider DIV

  4. Big Picture ¨ Goal: exploiting more ILP by avoiding stall cycles ¤ Branch prediction can avoid the stall cycles in the frontend n More instructions are sent to the pipeline Integer unit Reorder Buffer (ROB) Ex Mem Branch pred Queue FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB FP adder A1 A2 A3 A4 FP/integer divider DIV

  5. Big Picture ¨ Goal: exploiting more ILP by avoiding stall cycles ¤ Branch prediction can avoid the stall cycles in the frontend n More instructions are sent to the pipeline ¤ Instruction scheduling can remove unnecessary stall cycles in the execution/memory stage n Static scheduling n Complex software (compiler) n Unable to resolve all data hazards (no access to runtime details) n Dynamic scheduling n Completely done in hardware

  6. Dynamic Scheduling ¨ Key idea: creating an instruction schedule based on runtime information ¤ Hardware managed instruction reordering Assembly code: DIV F1, F2, F3 ADD F4, F1, F5 Integer unit Reorder Buffer (ROB) Ex Mem SUB F6, F5, F7 Queue FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB FP adder A1 A2 A3 A4 FP/integer divider DIV

  7. Dynamic Scheduling ¨ Key idea: creating an instruction schedule based on runtime information ¤ Hardware managed instruction reordering Assembly code: Long latency operation DIV F1, F2, F3 ADD F4, F1, F5 Dependent instruction Integer unit Reorder Buffer (ROB) Ex Mem SUB F6, F5, F7 Queue FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB FP adder A1 A2 A3 A4 FP/integer divider DIV

  8. Dynamic Scheduling ¨ Key idea: creating an instruction schedule based on runtime information ¤ Hardware managed instruction reordering Assembly code: Long latency operation DIV F1, F2, F3 ADD F4, F1, F5 Dependent instruction Integer unit Reorder Buffer (ROB) Ex Mem SUB F6, F5, F7 Queue FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB Independent instruction FP adder Out-of-order execution? A1 A2 A3 A4 FP/integer divider DIV

  9. Dynamic Scheduling ¨ Key idea: creating an instruction schedule based on runtime information ¤ Hardware managed instruction reordering ¤ Instructions are executed in data flow order Program code ADDI R1, R0, #1 ADDI R2, R0, #4 loop: ADD R3, R3, R2 ADD R2, R2, #-1 BNEQ R2, R1, next ADD R4, R4, R3 next: BNEQ R2, R0, loop

  10. Dynamic Scheduling ¨ Key idea: creating an instruction schedule based on runtime information ¤ Hardware managed instruction reordering ¤ Instructions are executed in data flow order Program code ADDI R1, R0, #1 ADDI R2, R0, #4 loop: ADD R3, R3, R2 ADD R2, R2, #-1 BNEQ R2, R1, next ADD R4, R4, R3 next: BNEQ R2, R0, loop

  11. Dynamic Scheduling ¨ Key idea: creating an instruction schedule based on runtime information ¤ Hardware managed instruction reordering ¤ Instructions are executed in data flow order ADDI R1, R0, #1 ADDI R2, R0, #4 ADD R3, R3, R2 ADD R2, R2, #-1 Program code BNEQ R2, R1, next ADDI R1, R0, #1 BNEQ R2, R0, loop ADDI R2, R0, #4 ADD R3, R3, R2 loop: ADD R3, R3, R2 ADD R2, R2, #-1 ADD R2, R2, #-1 BNEQ R2, R1, next BNEQ R2, R1, next BNEQ R2, R0, loop ADD R4, R4, R3 ADD R3, R3, R2 next: BNEQ R2, R0, loop ADD R2, R2, #-1 BNEQ R2, R1, next ADD R4, R4, R3 BNEQ R2, R0, loop ADD R3, R3, R2 ADD R2, R2, #-1 BNEQ R2, R1, next BNEQ R2, R0, loop

  12. Dynamic Scheduling ¨ Key idea: creating an instruction schedule based on runtime information ¤ Hardware managed instruction reordering ¤ Instructions are executed in data flow order ADDI R1, R0, #1 ADDI R2, R0, #4 Data flow ADD R3, R3, R2 ADDI R1, R0, #1 ADDI R2, R0, #4 ADD R2, R2, #-1 Program code BNEQ R2, R1, next ADDI R1, R0, #1 BNEQ R2, R0, loop ADD R2, R2, #-1 ADD R3, R3, R2 ADDI R2, R0, #4 ADD R3, R3, R2 loop: ADD R3, R3, R2 ADD R2, R2, #-1 ADD R2, R2, #-1 BNEQ R2, R1, next ADD R2, R2, #-1 ADD R3, R3, R2 BNEQ R2, R1, next BNEQ R2, R0, loop ADD R4, R4, R3 ADD R3, R3, R2 next: ADD R2, R2, #-1 ADD R3, R3, R2 BNEQ R2, R0, loop ADD R2, R2, #-1 BNEQ R2, R1, next ADD R4, R4, R3 ADD R3, R3, R2 ADD R4, R4, R3 ADD R2, R2, #-1 BNEQ R2, R0, loop ADD R3, R3, R2 ADD R2, R2, #-1 BNEQ R2, R1, next BNEQ R2, R0, loop

  13. Dynamic Scheduling ¨ Key idea: creating an instruction schedule based on runtime information ¤ Hardware managed instruction reordering ¤ Instructions are executed in data flow order ADDI R1, R0, #1 ADDI R2, R0, #4 Data flow ADD R3, R3, R2 ADDI R1, R0, #1 ADDI R2, R0, #4 ADD R2, R2, #-1 Program code BNEQ R2, R1, next ADDI R1, R0, #1 BNEQ R2, R0, loop ADD R2, R2, #-1 ADD R3, R3, R2 ADDI R2, R0, #4 ADD R3, R3, R2 loop: ADD R3, R3, R2 ADD R2, R2, #-1 ADD R2, R2, #-1 BNEQ R2, R1, next ADD R2, R2, #-1 ADD R3, R3, R2 BNEQ R2, R1, next BNEQ R2, R0, loop ADD R4, R4, R3 ADD R3, R3, R2 next: ADD R2, R2, #-1 ADD R3, R3, R2 BNEQ R2, R0, loop ADD R2, R2, #-1 BNEQ R2, R1, next ADD R4, R4, R3 ADD R3, R3, R2 ADD R4, R4, R3 ADD R2, R2, #-1 BNEQ R2, R0, loop ADD R3, R3, R2 ADD R2, R2, #-1 How to form data flow graph on the fly? BNEQ R2, R1, next BNEQ R2, R0, loop

  14. Register Renaming ¨ Eliminating WAR and WAW hazards ¤ Change the mapping between architectural registers and physical storage locations DIV F1, F2, F3 ADD F4, F1, F5 Integer unit Reorder Buffer (ROB) SUB F5, F6, F7 Ex Mem ADD F4, F5, F8 Queue FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB FP adder A1 A2 A3 A4 FP/integer divider DIV

  15. Register Renaming ¨ Eliminating WAR and WAW hazards ¤ Change the mapping between architectural registers and physical storage locations RAW DIV F1, F2, F3 ADD F4, F1, F5 Integer unit Reorder Buffer (ROB) SUB F5, F6, F7 Ex Mem ADD F4, F5, F8 Queue FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB FP adder A1 A2 A3 A4 FP/integer divider DIV

  16. Register Renaming ¨ Eliminating WAR and WAW hazards ¤ Change the mapping between architectural registers and physical storage locations RAW DIV F1, F2, F3 WAR ADD F4, F1, F5 Integer unit Reorder Buffer (ROB) SUB F5, F6, F7 Ex Mem ADD F4, F5, F8 Queue FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB FP adder A1 A2 A3 A4 FP/integer divider DIV

  17. Register Renaming ¨ Eliminating WAR and WAW hazards ¤ Change the mapping between architectural registers and physical storage locations RAW DIV F1, F2, F3 WAR ADD F4, F1, F5 Integer unit Reorder Buffer (ROB) SUB F5, F6, F7 Ex Mem WAW ADD F4, F5, F8 Queue FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB FP adder A1 A2 A3 A4 FP/integer divider DIV

  18. Register Renaming ¨ Eliminating WAR and WAW hazards ¤ Change the mapping between architectural registers and physical storage locations RAW DIV F1, F2, F3 WAR ADD F4, F1, F5 Integer unit Reorder Buffer (ROB) SUB F5, F6, F7 Ex Mem WAW ADD F4, F5, F8 Queue FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB DIV F1, F2, F3 FP adder ADD F4, F1, F5 A1 A2 A3 A4 SUB Q1, F6, F7 FP/integer divider ADD Q2, Q1, F8 DIV

  19. Register Renaming ¨ Eliminating WAR and WAW hazards ¤ Change the mapping between architectural registers and physical storage locations RAW WAR and WAW hazards can be removed DIV F1, F2, F3 using more registers WAR ADD F4, F1, F5 Integer unit Reorder Buffer (ROB) SUB F5, F6, F7 Ex Mem WAW ADD F4, F5, F8 Queue FP/integer multiply IF ID M1 M2 M3 M4 M5 M6 M7 WB DIV F1, F2, F3 FP adder ADD F4, F1, F5 A1 A2 A3 A4 SUB Q1, F6, F7 FP/integer divider ADD Q2, Q1, F8 DIV

  20. Register Renaming ¨ Eliminating WAR and WAW hazards n 1. allocate a free physical location for the new register n 2. find the most recently allocated location for the register Physical Locations DIV F1, F2, F3 Architectural Registers ADD F4, F1, F5 P10 P11 F1 SUB F5, F6, F7 P12 F2 ADD F4, F5, F8 P13 F3 P14 F4 P15 F5 P16 F6 P17 F7 P18 F8 P19

  21. Register Renaming ¨ Eliminating WAR and WAW hazards n 1. allocate a free physical location for the new register n 2. find the most recently allocated location for the register Physical Locations DIV F1, F2, F3 Architectural Registers ADD F4, F1, F5 P10 P11 F1 SUB F5, F6, F7 P12 F2 ADD F4, F5, F8 P13 F3 P14 F4 P15 F5 DIV P12, P11, P10 P16 F6 P17 F7 P18 F8 P19

  22. Register Renaming ¨ Eliminating WAR and WAW hazards n 1. allocate a free physical location for the new register n 2. find the most recently allocated location for the register Physical Locations DIV F1, F2, F3 Architectural Registers ADD F4, F1, F5 P10 P11 F1 SUB F5, F6, F7 P12 F2 ADD F4, F5, F8 P13 F3 P14 F4 P15 F5 DIV P12, P11, P10 P16 F6 ADD P14, P12, P15 P17 F7 P18 F8 P19

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