1 oooe. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של mips אותו...

50
1 OOOE

Post on 20-Dec-2015

230 views

Category:

Documents


7 download

TRANSCRIPT

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

1

OOOE

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

2

כיצד ניתן לשפר את ביצועי המערכת

אותו למדנו זה מכבר, MIPS של pipelineב-• בודדת שדאגה לביצוע כל ALUהייתה יחידת

(.EXEהפעולות )שלב ה- ישנן פעולות כבדות יותר וכבדות פחות – הבעיה:•

למשל חיבור שלמים יהיה קל יותר מפעולת חילוק.

מכיוון שמחזור השעון אמור להספיק לביצוע כל פעולה הרי שבעקבות הפעולות הכבדות נקבל

מחזור שעון ארוך – פגיעה בביצועים.

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

3

1פתרון

נאפשר רק ביצוע הוראות פשוטות שלוקחות זמן קצר, •והוראות כבדות יפורקו למספר הוראות פשוטות )מעבדי

הראשונים היו כאלה(. RISCה-

חסרונות: ישנן פעולות כגון חישוביfloating-point אשר קשה

לפרק אותם לחלקים בעלי זמן ביצוע שווה )ישנן פעולות כגון גישה לזיכרון שזמן הביצוע )גישה

( או משתנה מדור busאינו קבוע )תלוי בעומס על ה- לדור

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

4

2פתרון

)או pipeline ל - EXEנהפוך את שלב ה-•( כך הוראה כבדה תתבצע במספר multicycleל-

שלבים ונוכל לשמור על מחזור שעון קטן. חסרונות:

לא ברור שתמיד נוכל לפרק הוראה כבדה לשלביpipeline.

-הוספת שלבים מגדילה את הpenalty שאנו משלמים על חיזויים שגויים וכן יוצרת בעיות עם

( – אמנם data hazardתלויות המידע )נקטין את מחזור השעון אבל אנו עלולים לפגוע

.CPIב-

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

5

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

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

6

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R1<-R1+4R2<-R3*R3

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

7

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R1<-R1+4

R2<-R3*R3R4<-R3+R4

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

8

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

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

9

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

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

10

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R2<-R3*R3

R4<-R3+R4

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

11

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R2<-R3*R3

R4<-R3+R4

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

12

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R2<-R3*R3

R4<-R3+R4

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

13

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R2<-R3*R3R4<-R3+R4

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

14

3פתרון שונה לפקודות בעלות זמן ביצוע שונה.pipelineנבנה • שונה להסתיים שלא ע"פ pipelineנאפשר להוראות מ-•

סדר הופעתן בקוד. קרי, כל עוד התוכנית שומרת על נכונותה, נאפשר לפקודה שמופיעה בקוד מאוחר יותר

להסתיים לפני שפקודה שקדמה לה מסתיימתשיטה זאת מאפשרת ביצוע של מספר הוראות במקביל •

שונה וכל עוד אינן תלויות pipelineכל עוד שייכות ל- של המכונה CPIאחת בשניה. כך נוכל לשפר את ה-

ובכך לשפר ביצועים.

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

15

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R1<-R1+4R2<-R3*R3

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

16

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R1<-R1+4

R2<-R3*R3R4<-R3+R4

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

17

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

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

18

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

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

19

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R2<-R3*R3

R4<-R3+R4

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

20

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R2<-R3*R3

R4<-R3+R4

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

21

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R2<-R3*R3

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

22

דוגמא

IF ID

EX

M1 M2 M3 M4 MEM WB

DIV

Integer unit

Multiply

divider

R1<-R1+4

R2<-R3*R3

R4<-R3+R4

R2<-R3*R3

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

23

CPI כמו שהכרנו עד היום in orderעניין נוסף: במכונות •

.1 מינימאלי של CPIניתן )אם בכלל( להגיע ל- יש את חסם זה אם נאפשר OOOEגם בביצוע של •

.EXEביצוע מקביל רק של שלב ה-

אבל נאפשר גם בשאר השלבים ביצוע מספר •הוראות במקביל אזי שנוכל לשבור את חסם זה.

IF ID EXE MEM WB

IF ID EXE MEM WB

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

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

הוראת החילוק הארוכה מעכבת את הוראת החיבור העוקבת • out of, מכיוון שאנו מאפשרים ביצוע R1שממתינה לערך של

order ההוראה השלישית שלא מחכה לכלום תתבצע, ואז R6ההוראה השנייה לכשתתבצע עלולה לקרוא את הערך של

כפי שנכתב ע"י ההוראה השלישית ולא כפי שהתכוון המשורר )או המתכנת(.

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

25

WAW – Write After Write: DIV R1,R2,R3ADD R5,R6,R1ADD R5,R7,R8

גם כאן ההוראה השנייה מעוכבת ואילו השלישית לא, מה שעלול • לפני ההוראה R5להתבצע הוא שההוראה השלישית תכתוב ל-

השנייה, ולבסוף כשהשנייה תכתוב גם כן, היא תשנה את ערך זה.

בערך לא עדכני.R5בסופו של דבר, יחזיק

תלויות אלו נקראותFalse Dependencies כיוון שאם היה( לרשות המהדר )קומפילר( מספר בלתי מוגבל של רגיסטרים היה

יכול לבחור רגיסטרים שונים לכל פעולה ואז לא היו הפקודות תלויות אחת בשניה יותר(

בעיה נוספת שעוד לא הכרנו היאStructural Hazard זהו מצב ,בו הוראה כלשהי נאלצת להמתין כי אין יחידת חישוב פנויה

עבורה. למשל רצף פעולות חילוק עלול לגרום לכך.

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

26

Register Renaming

.Register Renamingדרך לפתור את בעיית התלויות החדשות היא ע"י •הרעיון: שמירת שתי מערכות רגיסטרים זאת אשר גלויה למשתמש •

)רגיסטרים ארכיטקטונים( ואשר בשימוש המהדר )שפת הסף(, ומספר (.poolגדול של רגיסטרים פיזיים מתוך מאגר )

אנו מבצעים שני מיפויים: האחד מהרגיסטרים הארכיטקטוניים •לרגיסטרים הפיזיים לצורך פתירת בעיות תלויות מדומות, והשני

מהרגיסטרים הפיזיים לארכיטקטוניים לצורך שמירת "תמונת המכונה" כפי שהקומפילר בנה אותה.

לשלב הביצוע. decodeהמיפוי הראשון מבוצע במעבר בין שלב ה-• ומעבירים את הערך commitהמיפוי השני מבוצע כחלק מפעולת

שלהם לרגיסטרים המקוריים.-fetch וה- commitע"פ רוב, מעבדים מודרניים מבצעים את שלבי ה-•

decode( בסדר התוכנית in order ואילו את שלב הביצוע מבצעים )out of order.

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

27

דוגמא:

T0

T1

T2

T3

Tn

R1

R2

R3

R4 WARWAW

bufferציקלי

DIV R1,R2,R3ADD R2,R4,R1ADD R2,R3,R3ADD R4,R3,R2

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

28

דוגמא:

T0

T1

T2

T3

Tn

R1

R2

R3

R4

T0

R2/R3

DIV R1,R2,R3ADD R2,R4,R1ADD R2,R3,R3ADD R4,R3,R2

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

29

דוגמא:

T0

T1

T2

T3

Tn

R1

R2

R3

R4

DIV R1,R2,R3ADD R2,R4,R1ADD R2,R3,R3ADD R4,R3,R2

T0

R2/R3R4+T0

T1

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

30

דוגמא:

T0

T1

T2

T3

Tn

R1

R2

R3

R4

DIV R1,R2,R3ADD R2,R4,R1ADD R2,R3,R3ADD R4,R3,R2

T0

R2/R3R4+T0

T2

R3+R3

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

31

דוגמא:

T0

T1

T2

T3

Tn

R1

R2

R3

R4

DIV R1,R2,R3ADD R2,R4,R1ADD R2,R3,R3ADD R4,R3,R2

T0

R2/R3R4+T0

T2

R3+R3R3+T2

T3

שים לב:

כעת אין תלויות מסוג False Dependencies

עדיין קייםRAWאבל

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

32

ROB )reorder Buffer(

, שהוא ROBדרך נפוצה למימוש הדבר היא ע"י • decodeחוצץ המקבל את ההוראות משלב ה-

מהווה את ROBע"פ הסדר, הכניסה התאימה ב-מספר הרגיסטר הזמני.

נכתבת התוצאה לכניסה המתאימה EXEבשלב ה- commit וההוראות מבצעות את שלב ה-ROB ב-

– הוראה יכולה לבצע ROBע"פ הסדר שלהן ב-commit.רק אם זו שלפניה עשתה זאת

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

33

Fetch &Decode

EXE Retire(commit)

In-order In-order

)out-of-order(

מקום להוראה

הבאה

הוראה הבאה

שמבצעת commit

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

34

P6 שממומשת P6 ניקח את מכונת ה-OOOכדוגמא ל-•

.Pentium3 ו-Pentium2במעבדי decode נכנסות לשלב ה-CISCבמכונה זו ההוראות מסוג •

ע"פ הסדר. מסוג uopsשם הן מפורקות להוראות פנימיות הנקראות •

RISC-הוראות אלו מתבצעות בשלב ה .EXE out-of-order.

מחוברים uops ה-)commit )retireלבסוף בשלב ה-• ע"פ הסדר המקורי של CICSבחזרה להוראות ה-

ההוראות. הממומש register renamingהמכונה גם משתמשת ב-•

.ROBע"י

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

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

ID

RAT

RS

L2

DCU

ROB

OOOE – The P6 Example

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

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

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

37

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

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

38

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

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

39

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

R2<-R4/R3

RB0

RB0<-R4/R3RS0

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

40

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

R2<-R4/R3

RB0

RB0<-R4/R3RS0

RB0<-R4/R3 )1(

RB2

R4+50R3<-MEM)RB1(

RS1M0

RB1<-R4+50RB2<-MEM)RB1(

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

41

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

R2<-R4/R3

RB0

RB0<-R4/R3RS0

RB0<-R4/R3 )2(

RB2

R4+50R3<-MEM)RB1(

RS1 RB1<-R4+50

R1<-R2/R3M0

RB2<-MEM)RB1(

RB3

RB1<-R4+50

W

RB3<-RB0/RB2RS2

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

42

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

R2<-R4/R3

RB4

RB0<-R4/R3RS0

RB0<-R4/R3 )3(

RB2

R4+50R3<-MEM)RB1(

ok RB4<-R4+RB2

R1<-R2/R3M0

RB2<-MEM)RB1(

RB3

(1)

RS2R2<-R4+R3 RS1

RB3<-RB0/RB2 W

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

43

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

R2<-R4/R3

RB4

RB0<-R4/R3RS0

RB0<-R4/R3 )4(

RB5

R4+50R3<-MEM)RB1(

ok RB4<-R4+RB2

R1<-R2/R3M0

RB2<-MEM)RB1(

RB3

(2)

RS2R2<-R4+R3 RS1

RB3<-RB0/RB2 W

R3<-R2-R3

RB5<-RB4-RB2

RS3

W

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

44

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

R2<-R4/R3

RB4

RB5

R4+50R3<-MEM)RB1(

ok

R1<-R2/R3

RB3

RS2R2<-R4+R3

RB3<-RB0/RB2

R3<-R2-R3

RB5<-RB4-RB2

RS3

ok

ok

RB3<-RB0/RB2 )1(RB4<-R4+RB2

RB4<-R4+RB2

RS1 W

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

45

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

RB4

RB5

R1<-R2/R3 RS2R2<-R4+R3

RB3<-RB0/RB2

R3<-R2-R3ok

RB3<-RB0/RB2 )2(

R2<-RB0

R3<-RB2

RB3

R2<-R4/R3R4+50

R3<-MEM)RB1(okok

ok

RB5<-RB4-RB2

RS3

RB5<-RB4-RB2

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

46

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

RB4

RB5

R1<-R2/R3 RS2R2<-R4+R3

RB3<-RB0/RB2

R3<-R2-R3ok

RB3<-RB0/RB2 )3(

ok

RB3

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

47

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

RB4

RB5

R1<-R2/R3 RS2R2<-R4+R3

RB3<-RB0/RB2

R3<-R2-R3ok

RB3<-RB0/RB2 )4(

ok

RB3

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

48

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

RB4

RB5

R1<-R2/R3

R2<-R4+R3R3<-R2-R3

okok

ok

RB3

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

49

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3

R1<-R2/R3

R2<-R4+R3R3<-R2-R3

R1<-RB3 R2<-RB4 R3<-RB5

okok

ok

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

50

Instruction Q

MOBRSROB

Execute

Retire

RATR1

R2

R3

R4

R3<-R2-R3R2<-R4+R3R1<-R2/R3

R3<-MEM)R4+50(

R2<-R4/R3