1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע כל הפעולות (שלב ה-EXE). הבעיה: ישנן.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

Out Of Order Execution (Part 1) Updated by Franck Sala.
מבוא למדעי המחשב לתעשייה וניהול
Lecture 6: Pipelining MIPS R4000 and More Kai Bu
Spring 2003CSE P5481 Reorder Buffer Implementation (Pentium Pro) Hardware data structures retirement register file (RRF) (~ IBM 360/91 physical registers)
Computer Architecture 2011 – Out-Of-Order Execution 1 Computer Architecture Out-Of-Order Execution Lihu Rappoport and Adi Yoaz.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
Tutorial #13 Solving MIPS Exam Problems 20: © Dima Elenbogen 2010, Technion 1.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
1 The single cycle CPU. 2 Performance of Single-Cycle Machines Memory Unit 2 ns ALU and Adders 2 ns Register file (Read or Write) 1 ns Class Fetch Decode.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
1 Data Structures, CS, TAU, Splay Tree Splay Tree  מימוש של עץ חיפוש בינארי  מטרה לדאוג ל- Amortized Time  פעולה בודדת יכולה לקחת O(N)  אבל כל רצף.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
(C) Yohai Devir November מבנה מחשבים ספרתיים תרגול מס ' 2: פרמטרים של הערכת ביצועים חוק אמדל.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Data Structures, CS, TAU, Splay Tree 1 Splay Tree - עץ חיפוש בינארי - מטרה לדאוג ל - Amortized Time - פעולה בודדת יכולה לקחת O(N) - אבל כל רצף M פעולות.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
Computer Architecture 2011 – out-of-order execution (lec 7) 1 Computer Architecture Out-of-order execution By Dan Tsafrir, 11/4/2011 Presentation based.
1 חישוב ואופטימיזציה של שאילתות חלק 2 Query Evaluation and Optimization Part 2.
(C) Yohai Devir January מבנה מחשבים ספרתיים תרגול מס' 10: שאלות ממבחנים – OOOE, BTB מבוסס על תרגול של אורן קצנגולד.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
Solving MIPS Exam Problems 21: © Dima Elenbogen 2010, Technion 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
1 The single cycle CPU. 2 Performance of Single-Cycle Machines Memory Unit 2 ns ALU and Adders 2 ns Register file (Read or Write) 1 ns Class Fetch Decode.
הקיבול איננו תלוי במטען ובפוטנציאל
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
1 השעון Hertz=1/sec מחשב פנטיום במהירות של פירושו שהוא מבצע 8^10 *2 מחזורי שעון בשניה. כל מחזור שעון לוקח 200MHZ 5*10^-9=5nanosecond כמה לוקחת פקודה בימינו?
עקרון ההכלה וההדחה.
1 שלבי ביצוע הוראת מכונה (1) FETCH = קרא הוראה מהזיכרון ע " פ הכתובת שמכיל ה -PC. (2) DECODE = פענח את הפקודה וקרא את האוגרים הנחוצים ( אחד או שניים ).
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
Computer Architecture 2010 – Out-Of-Order Execution 1 Computer Architecture Out-Of-Order Execution Lihu Rappoport and Adi Yoaz.
Pipeline MIPS תרגול כיתה מס' 12. דוגמא 1 עקבו אחר אותות הבקרה המופיעים בשקף הבא. נסו לפענח מהו קטע הקוד הרץ על המחשב ברגע זה?
מתמטיקה בדידה תרגול 2.
OOO execution © Avi Mendelson, 4/ MAMAS – Computer Architecture Lecture 7 – Out Of Order (OOO) Avi Mendelson Some of the slides were taken.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
שלבי ביצוע הוראת מכונה (1) FETCH = קרא הוראה מהזיכרון ע " פ הכתובת שמכיל ה -PC. (2) DECODE = פענח את הפקודה וקרא את האוגרים הנחוצים ( אחד או שניים ). (3)
- אמיר רובינשטיין מיונים - Sorting משפט : חסם תחתון על מיון ( המבוסס על השוואות בלבד ) של n מפתחות הינו Ω(nlogn) במקרה הגרוע ובממוצע. ניתן לפעמים.
1 ׃1998 Morgan Kaufmann Publishers פקודת ה- jump 4 bits 26 bits 2 bits 00 : כתובת קפיצה במילים : כתובת קפיצה בבתים … …
Computer Architecture Out-of-order execution
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Computer Architecture 2011– P6 uArch (lec 8-9) 1 Computer Architecture The P6 Microarchitecture An Example of an Out-Of-Order Micro-processor By Dan Tsafrir,
תרגיל כיתה 7 מבוא לטכנולוגיות מחשב CPE. – 2 – ארכיטקטורה של מעבד מודרני Execution Functional Units Instruction Control Integer/ Branch FP Add FP Mult/Div.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Computer Structure 2012 – P6 uArch 1 OOO Execution of Memory Operations.
© Wen-mei Hwu and S. J. Patel, 2005 ECE 412, University of Illinois Lecture Instruction Execution: Dynamic Scheduling.
Out-of-order execution -P6 Lihu Rappoport, 12/ MAMAS – Computer Architecture The P6 Micro-Architecture An Example of an Out-Of-Order Micro-processor.
2003B Q5 Suppliers(sid, sname, city) Select sid from suppliers where city=‘jerusalem’ or sname like ‘%Smith’ Select sid from suppliers where city=‘jerusalem’
Pentium III Instruction Stream. Introduction Pentium III uses several key features to exploit ILP This part of our presentation will cover the methods.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
1 מבנה מחשבים שאלות ממבחנים – OOOE, BTB. 2 שאלה 1 – OOOE (35 נק') נתונה מערכת אשר עובדת בשיטת OOO כפי שלמדנו בכיתה המערכת יכולה לבצע: -שתי פעולות fetch.
Out-of-order execution Lihu Rappoport 11/ MAMAS – Computer Architecture Out-Of-Order Execution Dr. Lihu Rappoport.
CDA3101 Recitation Section 8
Lecture 07: Pipelining Multicycle, MIPS R4000, and More
Out of Order Processors
מבנה מחשבים ספרתיים תרגול מס' 9: Out Of Order Execution.
Lecture 12 Reorder Buffers
Computer Architecture Lecture 3 – Part 1 11th May, 2006
Pipelining Multicycle, MIPS R4000, and More
תרגול מס' 3: Data Hazards מבוסס על תרגול של מורן גביש
Data Structures, CS, TAU, Splay Tree
הנעה חשמלית.
Dynamic Pipeline Structure
Instruction Execution Cycle
Conceptual execution on a processor which exploits ILP
Presentation transcript:

1 OOOE

2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע כל הפעולות (שלב ה-EXE). הבעיה: ישנן פעולות כבדות יותר וכבדות פחות – למשל חיבור שלמים יהיה קל יותר מפעולת חילוק. מכיוון שמחזור השעון אמור להספיק לביצוע כל פעולה הרי שבעקבות הפעולות הכבדות נקבל מחזור שעון ארוך – פגיעה בביצועים.

3 פתרון 1 נאפשר רק ביצוע הוראות פשוטות שלוקחות זמן קצר, והוראות כבדות יפורקו למספר הוראות פשוטות (מעבדי ה- RISC הראשונים היו כאלה). חסרונות: ישנן פעולות כגון חישובי floating-point אשר קשה לפרק אותם לחלקים בעלי זמן ביצוע שווה ישנן פעולות כגון גישה לזיכרון שזמן הביצוע (גישה) אינו קבוע (תלוי בעומס על ה- bus) או משתנה מדור לדור

4 פתרון 2 נהפוך את שלב ה-EXE ל - pipeline (או ל- multicycle) כך הוראה כבדה תתבצע במספר שלבים ונוכל לשמור על מחזור שעון קטן. חסרונות: לא ברור שתמיד נוכל לפרק הוראה כבדה לשלבי pipeline. הוספת שלבים מגדילה את ה -penalty שאנו משלמים על חיזויים שגויים וכן יוצרת בעיות עם תלויות המידע (data hazard) – אמנם נקטין את מחזור השעון אבל אנו עלולים לפגוע ב-CPI.

5 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4

6 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R1<-R1+4R2<-R3*R3

7 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R1<-R1+4 R2<-R3*R3R4<-R3+R4

8 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R1<-R1+4 R2<-R3*R3 R4<-R3+R4

9 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R1<-R1+4 R2<-R3*R3 R4<-R3+R4

10 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R2<-R3*R3 R4<-R3+R4

11 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R2<-R3*R3 R4<-R3+R4

12 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R2<-R3*R3 R4<-R3+R4

13 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R2<-R3*R3R4<-R3+R4

14 פתרון 3 נבנה pipeline שונה לפקודות בעלות זמן ביצוע שונה. נאפשר להוראות מ-pipeline שונה להסתיים שלא ע"פ סדר הופעתן בקוד. קרי, כל עוד התוכנית שומרת על נכונותה, נאפשר לפקודה שמופיעה בקוד מאוחר יותר להסתיים לפני שפקודה שקדמה לה מסתיימת שיטה זאת מאפשרת ביצוע של מספר הוראות במקביל כל עוד שייכות ל-pipeline שונה וכל עוד אינן תלויות אחת בשניה. כך נוכל לשפר את ה-CPI של המכונה ובכך לשפר ביצועים.

15 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R1<-R1+4R2<-R3*R3

16 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R1<-R1+4 R2<-R3*R3R4<-R3+R4

17 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R1<-R1+4 R2<-R3*R3 R4<-R3+R4

18 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R1<-R1+4 R2<-R3*R3 R4<-R3+R4

19 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R2<-R3*R3 R4<-R3+R4

20 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R2<-R3*R3 R4<-R3+R4

21 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R2<-R3*R3

22 דוגמא IFID EX M1M2M3M4 MEMWB DIV Integer unit Multiply divider R1<-R1+4 R2<-R3*R3 R4<-R3+R4 R2<-R3*R3

23 CPI עניין נוסף: במכונות in order כמו שהכרנו עד היום ניתן (אם בכלל) להגיע ל-CPI מינימאלי של 1. גם בביצוע של OOOE יש את חסם זה אם נאפשר ביצוע מקביל רק של שלב ה-EXE. אבל נאפשר גם בשאר השלבים ביצוע מספר הוראות במקביל אזי שנוכל לשבור את חסם זה. IF ID EXE MEM WB

24 תלויות מידע (data hazard) להזכירכם אנו מכירים כבר תלות מידע מסוג RAW: ADD R1,R2,R3 ADD R5,R6,R1 OOOE יוצרת תלויות מידע חדשות:  WAR – Write After Read : DIV R1,R2,R3 ADD R5,R6,R1 ADD R6,R7,R8 הוראת החילוק הארוכה מעכבת את הוראת החיבור העוקבת שממתינה לערך של R1, מכיוון שאנו מאפשרים ביצוע out of order ההוראה השלישית שלא מחכה לכלום תתבצע, ואז ההוראה השנייה לכשתתבצע עלולה לקרוא את הערך של R6 כפי שנכתב ע"י ההוראה השלישית ולא כפי שהתכוון המשורר (או המתכנת).

25  WAW – Write After Write : DIV R1,R2,R3 ADD R5,R6,R1 ADD R5,R7,R8 גם כאן ההוראה השנייה מעוכבת ואילו השלישית לא, מה שעלול להתבצע הוא שההוראה השלישית תכתוב ל-R5 לפני ההוראה השנייה, ולבסוף כשהשנייה תכתוב גם כן, היא תשנה את ערך זה. בסופו של דבר, יחזיק R5 בערך לא עדכני.  תלויות אלו נקראות False Dependencies (כיוון שאם היה לרשות המהדר (קומפילר) מספר בלתי מוגבל של רגיסטרים היה יכול לבחור רגיסטרים שונים לכל פעולה ואז לא היו הפקודות תלויות אחת בשניה יותר)  בעיה נוספת שעוד לא הכרנו היא Structural Hazard, זהו מצב בו הוראה כלשהי נאלצת להמתין כי אין יחידת חישוב פנויה עבורה. למשל רצף פעולות חילוק עלול לגרום לכך.

26 Register Renaming דרך לפתור את בעיית התלויות החדשות היא ע"י Register Renaming. הרעיון: שמירת שתי מערכות רגיסטרים זאת אשר גלויה למשתמש (רגיסטרים ארכיטקטונים) ואשר בשימוש המהדר (שפת הסף), ומספר גדול של רגיסטרים פיזיים מתוך מאגר (pool). אנו מבצעים שני מיפויים: האחד מהרגיסטרים הארכיטקטוניים לרגיסטרים הפיזיים לצורך פתירת בעיות תלויות מדומות, והשני מהרגיסטרים הפיזיים לארכיטקטוניים לצורך שמירת "תמונת המכונה" כפי שהקומפילר בנה אותה. המיפוי הראשון מבוצע במעבר בין שלב ה-decode לשלב הביצוע. המיפוי השני מבוצע כחלק מפעולת commit ומעבירים את הערך שלהם לרגיסטרים המקוריים. ע"פ רוב, מעבדים מודרניים מבצעים את שלבי ה-commit וה- fetch- decode בסדר התוכנית (in order) ואילו את שלב הביצוע מבצעים out of order.

27 דוגמא: T0 T1 T2 T3 Tn R1 R2 R3 R4 WAR WAW buffer ציקלי DIV R1,R2,R3 ADD R2,R4,R1 ADD R2,R3,R3 ADD R4,R3,R2

28 דוגמא: T0 T1 T2 T3 Tn R1 R2 R3 R4 T0 R2/R3 DIV R1,R2,R3 ADD R2,R4,R1 ADD R2,R3,R3 ADD R4,R3,R2

29 דוגמא: T0 T1 T2 T3 Tn R1 R2 R3 R4 DIV R1,R2,R3 ADD R2,R4,R1 ADD R2,R3,R3 ADD R4,R3,R2 T0 R2/R3 R4+T0 T1

30 דוגמא: T0 T1 T2 T3 Tn R1 R2 R3 R4 DIV R1,R2,R3 ADD R2,R4,R1 ADD R2,R3,R3 ADD R4,R3,R2 T0 R2/R3 R4+T0 T2 R3+R3

31 דוגמא: T0 T1 T2 T3 Tn R1 R2 R3 R4 DIV R1,R2,R3 ADD R2,R4,R1 ADD R2,R3,R3 ADD R4,R3,R2 T0 R2/R3 R4+T0 T2 R3+R3 R3+T2 T3 שים לב: כעת אין תלויות מסוג False Dependencies אבל RAW עדיין קיים

32 ROB (reorder Buffer) דרך נפוצה למימוש הדבר היא ע"י ROB, שהוא חוצץ המקבל את ההוראות משלב ה-decode ע"פ הסדר, הכניסה התאימה ב-ROB מהווה את מספר הרגיסטר הזמני. בשלב ה-EXE נכתבת התוצאה לכניסה המתאימה ב-ROB וההוראות מבצעות את שלב ה-commit ע"פ הסדר שלהן ב-ROB – הוראה יכולה לבצע commit רק אם זו שלפניה עשתה זאת.

33 Fetch & Decode EXE Retire (commit) In-order (out-of-order) מקום להוראה הבאה הוראה הבאה שמבצעת commit

34 P6 כדוגמא ל-OOO ניקח את מכונת ה-P6 שממומשת במעבדי Pentium2 ו-Pentium3. במכונה זו ההוראות מסוג CISC נכנסות לשלב ה-decode ע"פ הסדר. שם הן מפורקות להוראות פנימיות הנקראות uops מסוג RISC. הוראות אלו מתבצעות בשלב ה-EXE out-of- order. לבסוף בשלב ה-commit (retire) ה-uops מחוברים בחזרה להוראות ה-CICS ע"פ הסדר המקורי של ההוראות. המכונה גם משתמשת ב-register renaming הממומש ע"י ROB.

35 In-Order Front End –BIU: Bus Interface Unit –IFU: Instruction Fetch Unit (includes IC) –BTB: Branch Target Buffer –ID: Instruction Decoder –MIS: Micro-Instruction Sequencer –RAT: Register Alias Table Out-of-order Core –ROB: Reorder Buffer –RRF: Real Register File –RS: Reservation Stations –IEU: Integer Execution Unit –FEU: Floating-point Execution Unit –AGU: Address Generation Unit –MIU: Memory Interface Unit –DCU: Data Cache Unit –MOB: Memory Order Buffer –L2: Level 2 cache In-Order Retire MIS AGU MOB External Bus IEU MIU FEU BTB BIU IFU I D RAT R S L2 DCU ROB OOOE – The P6 Example

36 דוגמא DIV R2,R4,R3 LD R3,R4(50) DIV R1,R2,R3 ADD R2,R4,R3 SUB R3,R2,R3 נניח כי: Div: 4cc Add/Sub: 1cc Mem: 2cc

37 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3

38 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3

39 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 RB0 RB0<-R4/R3 RS0

40 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 RB0 RB0<-R4/R3 RS0 RB0<-R4/R3 (1) RB2 R4+50 R3<-MEM(RB1) RS1 M0 RB1<-R4+50 RB2<-MEM(RB1)

41 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 RB0 RB0<-R4/R3 RS0 RB0<-R4/R3 (2) RB2 R4+50 R3<-MEM(RB1) RS1 RB1<-R4+50 R1<-R2/R3 M0 RB2<-MEM(RB1) RB3 RB1<-R4+50 W RB3<-RB0/RB2 RS2

42 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 RB4 RB0<-R4/R3 RS0 RB0<-R4/R3 (3) RB2 R4+50 R3<-MEM(RB1) ok RB4<-R4+RB2 R1<-R2/R3 M0 RB2<-MEM(RB1) RB3 (1) RS2 R2<-R4+R3 RS1 RB3<-RB0/RB2 W

43 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 RB4 RB0<-R4/R3 RS0 RB0<-R4/R3 (4) RB5 R4+50 R3<-MEM(RB1) ok RB4<-R4+RB2 R1<-R2/R3 M0 RB2<-MEM(RB1) RB3 (2) RS2 R2<-R4+R3 RS1 RB3<-RB0/RB2 W R3<-R2-R3 RB5<-RB4-RB2 RS3 W

44 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 RB4 RB5 R4+50 R3<-MEM(RB1) ok R1<-R2/R3 RB3 RS2 R2<-R4+R3 RB3<-RB0/RB2 R3<-R2-R3 RB5<-RB4-RB2 RS3 ok RB3<-RB0/RB2 (1) RB4<-R4+RB2 RS1 W

45 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 RB4 RB5 R1<-R2/R3 RS2 R2<-R4+R3 RB3<-RB0/RB2 R3<-R2-R3 ok RB3<-RB0/RB2 (2) R2<-RB0 R3<-RB2 RB3 R2<-R4/R3 R4+50 R3<-MEM(RB1) ok RB5<-RB4-RB2 RS3 RB5<-RB4-RB2

46 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 RB4 RB5 R1<-R2/R3 RS2 R2<-R4+R3 RB3<-RB0/RB2 R3<-R2-R3 ok RB3<-RB0/RB2 (3) ok RB3

47 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 RB4 RB5 R1<-R2/R3 RS2 R2<-R4+R3 RB3<-RB0/RB2 R3<-R2-R3 ok RB3<-RB0/RB2 (4) ok RB3

48 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 RB4 RB5 R1<-R2/R3 R2<-R4+R3 R3<-R2-R3 ok RB3

49 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3 R1<-R2/R3 R2<-R4+R3 R3<-R2-R3 R1<-RB3R2<-RB4R3<-RB5 ok

50 Instruction Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R3<-R2-R3 R2<-R4+R3 R1<-R2/R3 R3<-MEM(R4+50) R2<-R4/R3