1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו...
-
date post
20-Dec-2015 -
Category
Documents
-
view
236 -
download
7
Transcript of 1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו...
![Page 1: 1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/1.jpg)
1
OOOE
![Page 2: 1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/2.jpg)
2
כיצד ניתן לשפר את ביצועי המערכת
אותו למדנו זה מכבר, MIPS של pipelineב-• בודדת שדאגה לביצוע כל ALUהייתה יחידת
(.EXEהפעולות )שלב ה- ישנן פעולות כבדות יותר וכבדות פחות – הבעיה:•
למשל חיבור שלמים יהיה קל יותר מפעולת חילוק.
מכיוון שמחזור השעון אמור להספיק לביצוע כל פעולה הרי שבעקבות הפעולות הכבדות נקבל
מחזור שעון ארוך – פגיעה בביצועים.
![Page 3: 1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/3.jpg)
3
1פתרון
נאפשר רק ביצוע הוראות פשוטות שלוקחות זמן קצר, •והוראות כבדות יפורקו למספר הוראות פשוטות )מעבדי
הראשונים היו כאלה(. RISCה-
חסרונות: ישנן פעולות כגון חישוביfloating-point אשר קשה
לפרק אותם לחלקים בעלי זמן ביצוע שווה )ישנן פעולות כגון גישה לזיכרון שזמן הביצוע )גישה
( או משתנה מדור busאינו קבוע )תלוי בעומס על ה- לדור
![Page 4: 1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/4.jpg)
4
2פתרון
)או pipeline ל - EXEנהפוך את שלב ה-•( כך הוראה כבדה תתבצע במספר multicycleל-
שלבים ונוכל לשמור על מחזור שעון קטן. חסרונות:
לא ברור שתמיד נוכל לפרק הוראה כבדה לשלביpipeline.
-הוספת שלבים מגדילה את הpenalty שאנו משלמים על חיזויים שגויים וכן יוצרת בעיות עם
( – אמנם data hazardתלויות המידע )נקטין את מחזור השעון אבל אנו עלולים לפגוע
.CPIב-
![Page 5: 1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/5.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/6.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/7.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/8.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/9.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/10.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/11.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/12.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/13.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/14.jpg)
14
3פתרון שונה לפקודות בעלות זמן ביצוע שונה.pipelineנבנה • שונה להסתיים שלא ע"פ pipelineנאפשר להוראות מ-•
סדר הופעתן בקוד. קרי, כל עוד התוכנית שומרת על נכונותה, נאפשר לפקודה שמופיעה בקוד מאוחר יותר
להסתיים לפני שפקודה שקדמה לה מסתיימתשיטה זאת מאפשרת ביצוע של מספר הוראות במקביל •
שונה וכל עוד אינן תלויות pipelineכל עוד שייכות ל- של המכונה CPIאחת בשניה. כך נוכל לשפר את ה-
ובכך לשפר ביצועים.
![Page 15: 1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/15.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/16.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/17.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/18.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/19.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/20.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/21.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/22.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/23.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/24.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/25.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/26.jpg)
26
Register Renaming
.Register Renamingדרך לפתור את בעיית התלויות החדשות היא ע"י •הרעיון: שמירת שתי מערכות רגיסטרים זאת אשר גלויה למשתמש •
)רגיסטרים ארכיטקטונים( ואשר בשימוש המהדר )שפת הסף(, ומספר (.poolגדול של רגיסטרים פיזיים מתוך מאגר )
אנו מבצעים שני מיפויים: האחד מהרגיסטרים הארכיטקטוניים •לרגיסטרים הפיזיים לצורך פתירת בעיות תלויות מדומות, והשני
מהרגיסטרים הפיזיים לארכיטקטוניים לצורך שמירת "תמונת המכונה" כפי שהקומפילר בנה אותה.
לשלב הביצוע. decodeהמיפוי הראשון מבוצע במעבר בין שלב ה-• ומעבירים את הערך commitהמיפוי השני מבוצע כחלק מפעולת
שלהם לרגיסטרים המקוריים.-fetch וה- commitע"פ רוב, מעבדים מודרניים מבצעים את שלבי ה-•
decode( בסדר התוכנית in order ואילו את שלב הביצוע מבצעים )out of order.
![Page 27: 1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/27.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/28.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/29.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/30.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/31.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/32.jpg)
32
ROB )reorder Buffer(
, שהוא ROBדרך נפוצה למימוש הדבר היא ע"י • decodeחוצץ המקבל את ההוראות משלב ה-
מהווה את ROBע"פ הסדר, הכניסה התאימה ב-מספר הרגיסטר הזמני.
נכתבת התוצאה לכניסה המתאימה EXEבשלב ה- commit וההוראות מבצעות את שלב ה-ROB ב-
– הוראה יכולה לבצע ROBע"פ הסדר שלהן ב-commit.רק אם זו שלפניה עשתה זאת
![Page 33: 1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/33.jpg)
33
Fetch &Decode
EXE Retire(commit)
In-order In-order
)out-of-order(
מקום להוראה
הבאה
הוראה הבאה
שמבצעת commit
![Page 34: 1 OOOE. 2 כיצד ניתן לשפר את ביצועי המערכת ב-pipeline של MIPS אותו למדנו זה מכבר, הייתה יחידת ALU בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/34.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/35.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/36.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/37.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/38.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/39.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/40.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/41.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/42.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/43.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/44.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/45.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/46.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/47.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/48.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/49.jpg)
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 בודדת שדאגה לביצוע](https://reader035.fdocuments.net/reader035/viewer/2022062308/56649d415503460f94a1c96f/html5/thumbnails/50.jpg)
50
Instruction Q
MOBRSROB
Execute
Retire
RATR1
R2
R3
R4
R3<-R2-R3R2<-R4+R3R1<-R2/R3
R3<-MEM)R4+50(
R2<-R4/R3