Presentation is loading. Please wait.

Presentation is loading. Please wait.

תרגול מס' 3: Data Hazards מבוסס על תרגול של מורן גביש

Similar presentations


Presentation on theme: "תרגול מס' 3: Data Hazards מבוסס על תרגול של מורן גביש"— Presentation transcript:

1 תרגול מס' 3: Data Hazards מבוסס על תרגול של מורן גביש
מבנה מחשבים ספרתיים תרגול מס' 3: Data Hazards מבוסס על תרגול של מורן גביש Last update: Nov 15th 2005 Quite a short tutorial. Some exercises could be added. (C) Yohai Devir November 2005

2 ADD $1 $2 $3 (R1  R2 + R3) ADD $4 $1 $5 (R4  R1 + R5)
קטע קוד זה יוצר Data Hazard (תלות מידע) מסוג RAW (read after write). בעיית ה- Data Hazard נוצרת כשפקודה הנמצאת בשלב ה- ID קוראת ערך של רגיסטר שפקודה קודמת לה, הנמצאת בשלב ה- EX ,MEM או WB צריכה לעדכן ועדיין לא כתבה את העדכון לתוך ה- RF. בעיית ה- RAW Data Hazard יכולה להיווצר בין פקודות ב- pipelined MIPS, שקיים בינן הפרש של לכל היותר שתי פקודות. (C) Yohai Devir November 2005

3 R1 new value is still being processed
IF/ID ID/EX WB EX M EX/MEM MEM/WB WB WB M R1 new value is still being processed Value that was read from R1 is the old one! Data Memory Read reg 1 ALU result Zero Read data 1 Read reg 2 Instruction Memory Read Address Write Address Register File Instruction Read data 2 Write reg Read Data m u x 1 Read Address Write data Write Data 32 ADD $1 $2 $3 ADD $4 $1 $ ADD $1 $2 $3 Rd\Rt Rd\Rt ADD $4 $1 $ ADD $1 $2 $3 (C) Yohai Devir November 2005

4 פתרונות ל- Data Hazards
stall הפתרון הפשוט ביותר הוא לבצע stall ל- pipeline. פעולה כזו תעכב את ריצת הפקודות התלויות עד לסיום הפקודה שמעדכנת את הרגיסטר. פתרון זה פוגע בביצועי ה- pipeline והינו בזבזני ביותר. (C) Yohai Devir November 2005

5 (C) Yohai Devir 234267 - November 2005 IF/ID ID/EX EX/MEM MEM/WB Data
Memory Read reg 1 ALU result Zero Read data 1 Read reg 2 Instruction Memory Read Address Write Address Register File Instruction Read data 2 Write reg Read Data m u x 1 Read Address Write data Write Data 32 ADD $1 $2 $3 ADD $4 $1 $5 ADD $1 $2 $3 ADD $4 $1 $5 ADD $1 $2 $3 ADD $4 $1 $5 ADD $1 $2 $3 ADD $4 $1 $5 Rd\Rt Rd\Rt ADD $1 $2 $3 ADD $4 $1 $5 (C) Yohai Devir November 2005

6 פתרונות ל- Data Hazards (2)
חציית RF) register File) אם קיים הפרש של שתי פקודות בין הפקודה הכותבת לפקודה הקוראת, אז הפקודה שכותבת לרגיסטר Rx נמצאת בשלב ה- WB כשהפקודה שקוראת מרגיסטר Rx נמצאת בשלב ה- ID. לפי השיטה הקודמת היינו צריכים לבצע stall יחיד ל- pipeline. פתרון יעיל יותר למקרה זה הוא חציית RF – הכתיבה ל- RF בשלב ה- WB מתבצעת בחצי הראשון של מחזור השעון והקריאה מ- RF בשלב ה- ID מתבצעת בחצי השני של מחזור השעון. (C) Yohai Devir November 2005

7 (C) Yohai Devir 234267 - November 2005 IF/ID ID/EX EX/MEM MEM/WB Data
Memory Read reg 1 ALU result Zero Read data 1 Read reg 2 Instruction Memory Read Address Write Address Register File Instruction Read data 2 Write reg Read Data m u x 1 Read Address Write data Write Data 32 ADD $1 $2 $3 ADD $4 $1 $5 ADD $1 $2 $3 ADD $4 $1 $5 ADD $1 $2 $3 ADD $4 $1 $5 ADD $1 $2 $3 ADD $4 $1 $5 Rd\Rt Rd\Rt ADD $1 $2 $3 (C) Yohai Devir November 2005

8 פתרונות ל- Data Hazards (3)
Forwarding / Bypassing שיטה זאת מסתמכת על העובדה הבאה: ערך רגיסטר המטרה של הפקודה הכותבת ידוע כבר בסוף שלב ה- EX שלה ונכתב ל- רגיסטר (EX\MEM (latch בסוף שלב זה. בסיום שלב ה- MEM ערך זה נכתב לרגיסטר MEM\WB ורק בשלב ה- WB נכתב הערך לרגיסטר המטרה. כלומר, נוכל להשתמש בערך רגיסטר המטרה לפני שערך זה נכתב בפועל לרגיסטר. (C) Yohai Devir November 2005

9 פתרונות ל- Data Hazards (4)
אם הפקודות שיש בינן RAW Data Hazard הן צמודות (והפקודה הראשונה איננה LW) אז הפקודה שכותבת לרגיסטר Rx נמצאת בשלב MEM כאשר הפקודה שקוראת מרגיסטר Rx נמצאת בשלב ה- EX (לאחר שכבר קראה ערך לא נכון של Rx בשלב ה- ID שלה). הפתרון למקרה זה הוא העברת התוכן החדש של רגיסטר Rx משלב MEM (של הפקודה הכותבת) לשלב EX (של הפקודה שמשתמשת בנתון) לכניסה המתאימה של ה- ALU. כלומר נבצע forwarding משלב ה- MEM לשלב ה- EX. אם הפקודה הראשונה (הכותבת לרגיסטר) היא פקודת LW, לא נוכל לבצע forwarding משלב ה- MEM לשלב ה- EX כי ערך רגיסטר המטרה ידוע רק בסוף שלב ה- MEM. לא נוכל לפתור בעיה זאת מבלי להשהות את ה- pipeline. הפקודה החדשה היא מסוג Immediate. ההבדל מפקודת addi הוא שפקודת addi מקבלת ערכים בטווח של 28 ± השינוי הנדרש: הכפלת ה- sign extend כך שתהיה גם הרחבה ע"י שרשור ערך ה- immediate ל- 16 אפסים הגדלת ה MUX שבורר את הכניסה ל- ALU ל MUX31, מה שמחייב קו בקרה נוסף ל- MUX זה ועל כן שינוי ברכיב ה- control. אין חשיבות איזה מה- 32 bit bus יחובר ל- ALU control שכן הוא קורא רק את 6 הביטים הימניים ביותר אבל לחישוב קפיצות יש צורך ב- sign extended 32bit bus ולכן נחבר את שני הרכיבים הנ"ל ל- bus זה. בנוסף יש לעדכן את ה- הלוגיקה שמשפיעה על alu control input, במקרה זה עדכון נוסף ברכיב ה- control כך שיזהה את ה- opcode החדש. (C) Yohai Devir November 2005

10 Value that was read from R1 is the old one!
IF/ID ID/EX WB EX M EX/MEM MEM/WB WB WB M Value that was read from R1 is the old one! Data Memory Read reg 1 ALU result Zero Read data 1 Read reg 2 Instruction Memory Read Address m u x 1 X Write Address Register File Instruction Read data 2 Write reg Read Data m u x 1 Read Address Write data Write Data ADD $4 $1 $5 32 ADD $1 $2 $3 ADD $4 $1 $5 ADD $1 $2 $3 ADD $4 $1 $5 LW $1 100($4) Rd\Rt ADD $4 $1 $5 Rd\Rt LW $1 100($4) (C) Yohai Devir November 2005

11 פתרונות ל- Data Hazards (5)
אם קיים הפרש של פקודה אחת בין הפקודות שיש בינן RAW Data Hazard אז הפקודה שכותבת לרגיסטר Rx נמצאת בשלב ה- WB כאשר הפקודה שקוראת מרגיסטר Rx נמצאת בשלב EX (לאחר שכבר קראה את הערך הישן של RX). הפתרון למקרה זה הוא העברת התוכן החדש של רגיסטר RX משלב ה- WB לשלב ה- EX לכניסה המתאימה של ה- ALU, כלומר נבצע forwarding משלב ה- WB לשלב ה- EX. מקרה זה כולל מצב בו קיים הפרש של פקודה אחת בין פקודת LOAD ופקודה אחרת ,שיש בינה לבין פקודת ה- LOAD RAW Data Hazard. (C) Yohai Devir November 2005

12 Independent instruction Independent instruction
IF/ID ID/EX WB EX M EX/MEM MEM/WB WB WB M Data Memory Read reg 1 ALU result Zero Read data 1 Read reg 2 Instruction Memory Read Address m u x 1 Write Address Register File Instruction Read data 2 Write reg Read Data m u x 1 Read Address Write data Write Data 32 Independent instruction ADD $1 $2 $3 ADD $4 $1 $5 ADD $4 $1 $5 Rd\Rt Independent instruction Rd\Rt LW $1 100($4) (C) Yohai Devir November 2005

13 פתרונות ל- Data Hazards (6)
תמיד נבצע את ה- forwarding מהפקודה האחרונה שכתבה לרגיסטר (ולכן במקרה ששתי הפקודות הקודמות כתבו לרגיסטר אותו צריך לקרוא, נבצע forwarding משלב ה- MEM ולא משלב ה- WB. זיהוי ומניעת RAW Data Hazard מתבצע ע"י forwarding unit אשר מקבלת את הנתונים הנדרשים לזיהוי RAW Data Hazard מהפקודה שבשלב ה- EX ומפקודות בשלבי WB ו-MEM. ה- forwarding unit מבצעת פיקוד על שני MUX -ים בכניסות המידע של ה- ALU. ע"מ לזהות אם קיים RAW Data Hazard בין פקודה בשלב MEM או WB לבין הפקודה בשלב EX, ה- forwarding unit חייבת לקבל את הנתונים הבאים: מהפקודה בשלבי MEM\WB: האם הפקודה כותבת בסוף ל- RF (RegWrite = 1) ולאיזה רגיסטר. מהפקודה בשלב ה- EX: מספרי רגיסטרי המקור של הפקודה. (C) Yohai Devir November 2005

14 (C) Yohai Devir 234267 - November 2005 IF/ID ID/EX EX/MEM MEM/WB ALU
Instruction Memory Read Address ALU result Zero Read data 1 Data Memory Read reg 1 Read reg 2 Write Address Register File m u x Instruction Write reg Read Data m u x 1 Read Address Read data 2 Write data Write Data 32 Forwarding unit (C) Yohai Devir November 2005

15 פתרונות ל- Data Hazards (5)
שימו לב לכך שלא חובה לבדוק אם Rt משמש את הפקודה כרגיסטר מקור או תוצאה מהסיבה הבאה: נניח שלמרות ש- Rt משמש את הפקודה הנוכחית בשלב EX לכתיבה ולא לקריאה, ה- forwarding unit תבצע בדיקה שלו מול רגיסטרי התוצאה של פקודות בשלב MEM ו- WB. נניח גם שאכן מתקיים שוויון בין מספר Rt של הפקודה בשלב EX לבין רגיסטר תוצאה של אחת הפקודות בשלב MEM או WB (או שתיהן יחד, זה לא משנה). במקרה זה ה- forwarding unit תבצע העברה של תוכן הרגיסטר החדש מהשלב המתאים דרך ה- MUX הבוחר בין תוכן הרגיסטר הנקרא בשלב ID לבין הערכים משלב WB או MEM. עפ"י השרטוט המפורט יותר בעמוד הבא, אפשר לראות שלאחר מכן נמצא MUX הבוחר בין Rt לבין Imm, ולכן אם הפקודה לא משתמשת ב- Rt לא Rt יעבור את ה- MUX הזה אלא Imm. לכן העברת הערך של Rt שהתבצעה ע"י ה- forwarding unit לא תשפיע על מה שבאמת ייכנס בכניסה התחתונה של ה- ALU. (C) Yohai Devir November 2005

16 + + (C) Yohai Devir ID/EX IF/ID EX/MEM MEM/WB 4 ALU PC Register File
PCSrc m u x 1 ID/EX WB EX M IF/ID EX/MEM MEM/WB RegWrite Rd\Rt Rd\Rt Control WB WB M Shift left 2 + 4 + Branch MemWrite RegWrite MemRead ALUSrc Read reg 1 Read data 1 RegDst ALUop Data Memory m u x ALU result Zero MemtoReg Read reg 2 Instruction Memory m u x 1 Write Address PC Register File Instruction Write reg Read Data m u x 1 Read data 2 Read Address Read Address Write data m u x Write Data Sign extend ALU Control 6 [15-0] 16 32 m u x 1 [20-16] [15-11] RegDst Forwarding unit (C) Yohai Devir

17 דוגמא EX נסתכל על התכנית הבאה: SUB $2 $1 $3 AND $4 $2 $5 OR $8 $2 $6
LW $9 1000($4) <Any independent command> SLT $1 $6 $9 EX בין פקודה מס' 1 לפקודה מס' 2 נוצר RAW Data Hazard. נבצע forwarding משלב ה- MEM לשלב ה- EX כלומר נעביר את הערך המעודכן של רגיסטר R2 משלב ה-MEM של פקודה מספר 1 לכניסה העליונה של ה ALU בשלב ה EX של פקודה מס' 2. (C) Yohai Devir November 2005

18 LW $9 1000($4) OR $8 $2 $6 AND $4 $2 $5 SUB $2 $1 $3
IF/ID ID/EX WB EX M EX/MEM MEM/WB WB WB M m u x Instruction Memory Read Address ALU result Zero Read data 1 Data Memory Read reg 1 Read reg 2 Write Address Register File m u x Instruction Write reg Read Data m u x 1 Read Address Read data 2 Write data Write Data New $2 32 Writes to $2 Forwarding unit $2 needed as 1st arg LW $9 1000($4) OR $8 $2 $6 AND $4 $2 $5 SUB $2 $1 $3

19 דוגמא (2) EX SUB $2 $1 $3 AND $4 $2 $5 OR $8 $2 $6 LW $9 1000($4)
<Any independent command> SLT $1 $6 $9 EX בין פקודה מס' 1 לפקודה מס' 3 נוצר RAW Data Hazard. נבצע forwarding משלב ה- WB לשלב ה- EX כלומר נעביר את הערך המעודכן של רגיסטר R2 משלב ה- WB של פקודה מספר 1 לכניסה העליונה של ה ALU בשלב ה EX של פקודה מס' 3. (C) Yohai Devir November 2005

20 Instruction LW $9 1000($4) OR $8 $2 $6 AND $4 $2 $5 SUB $2 $1 $3 IF/ID
ID/EX WB EX M EX/MEM MEM/WB WB WB M m u x Instruction Memory Read Address ALU result Zero Read data 1 Data Memory Read reg 1 Read reg 2 Write Address Register File m u x Instruction Write reg Read Data m u x 1 Read Address Read data 2 Write data Write Data New $4 New $2 32 Writes to $4 Forwarding unit Writes to $2 $2 needed as 1st arg Instruction LW $9 1000($4) OR $8 $2 $6 AND $4 $2 $5 SUB $2 $1 $3

21 דוגמא (3) EX SUB $2 $1 $3 AND $4 $2 $5 OR $8 $2 $6 LW $9 1000($4)
<Any independent command> SLT $1 $6 $9 EX בין פקודה מס' 2 לפקודה מס' 4 נוצר RAW Data Hazard. נבצע forwarding משלב ה- WB לשלב ה- EX כלומר נעביר את הערך המעודכן של רגיסטר R4 משלב ה- WB של פקודה מספר 2 לכניסה העליונה של ה ALU בשלב ה EX של פקודה מס' 4. (C) Yohai Devir November 2005

22 Instruction SLT $1 $6 $9 LW $9 1000($4) OR $8 $2 $6 AND $4 $2 $5 IF/ID
ID/EX WB EX M EX/MEM MEM/WB WB WB M m u x Instruction Memory Read Address ALU result Zero Read data 1 Data Memory Read reg 1 Read reg 2 Write Address Register File m u x Instruction Write reg Read Data m u x 1 Read Address Read data 2 Write data Write Data New $8 New $4 32 Writes to $8 Forwarding unit Writes to $4 $4 needed as 1st arg SLT $1 $6 $9 Instruction LW $9 1000($4) OR $8 $2 $6 AND $4 $2 $5

23 דוגמא (4) EX בין פקודה מס' 4 לפקודה מס' 6 נוצר RAW Data Hazard.
SUB $2 $1 $3 AND $4 $2 $5 OR $8 $2 $6 LW $9 1000($4) <Any independent command> SLT $1 $6 $9 EX בין פקודה מס' 4 לפקודה מס' 6 נוצר RAW Data Hazard. נבצע forwarding משלב ה- WB לשלב ה- EX כלומר נעביר את הערך המעודכן של רגיסטר R9 משלב ה- WB של פקודה מספר 4 לכניסה התחתונה של ה ALU בשלב ה EX של פקודה מס' 6. המקרה המתואר בדוגמא הוא מקרה בו קיים הפרש של פקודה אחת בין פקודת LW לבין פקודה שצריכה את הערך שברגיסטר שאליו טוענת פקודת LW. (C) Yohai Devir November 2005

24 Instruction LW $9 1000($4) SLT $1 $6 $9 IF/ID ID/EX EX/MEM MEM/WB ALU
Memory Read Address ALU result Zero Read data 1 Data Memory Read reg 1 Read reg 2 Write Address Register File m u x Instruction Write reg Read Data m u x 1 Read Address Read data 2 Write data Write Data New $9 32 Forwarding unit Writes to $9 $9 needed as 2nd arg Instruction SLT $1 $6 $9 LW $9 1000($4)

25 המצב היותר בעייתי הוא כאשר אין מרווח בין פקודת ה- LOAD לפקודה הבאה אחריה
LW $9, 1000($4) SLT $1 $6 $9 EX כעת נוצר מצב בו פקודת ה- LOAD צמודה לפקודה הצורכת את הרגיסטר שה- LW טוענת לתוכו (R9). במקרה זה הערך החדש של R9 מוכן רק בסוף שלב MEM של LW שזה גם סוף שלב EX של הפקודה שצריכה את הערך הזה (במקרה שלנו – SLT). זה המקרה היחיד בו לא נוכל לבצע forwarding של הערך המחושב וחייבים לעקב את ה- pipeline ע"י ביצוע stall. (C) Yohai Devir November 2005

26 ע"מ לזהות אם יש צורך ב-stall ה- HDU צריכה לזהות את הדברים הבאים:
בשביל לטפל במקרה הזה קיימת יחידת ה- HDU (Hazard Detection Unit). יחידה זו מבצעת stall בשלב ה- ID (לפקודת ה- SLT) ובכך מאפשרת לבצע forwarding משלב ה- WB לשלב ה- EX. ע"מ לזהות אם יש צורך ב-stall ה- HDU צריכה לזהות את הדברים הבאים: האם הפקודה שבשלב ה- EX היא אכן פקודת LW. אות הבקרה MemToReg מציין האם זאת פקודת LW. האם קיים RAW בין Rt של LW לבין אחד מרגיסטרי המקור של הפקודה בשלב ה- ID (שימו לב שכאן מוטב לזהות בוודאות האם הפקודה בשלב ID משתמשת ב- Rt כרגיסטר מקור או כרגיסטר תוצאה! – למה?) (C) Yohai Devir November 2005

27 stall ל-PC ולבריח IF/ID כך שתוכנם לא ישתנה במחזור השעון הבא.
יחידת ה-HDU שולטת ברגיסטר PC, בבריח (latch) IF/ID וב-MUX בעזרתו ניתן לאפס את אותות הבקרה. במקרה וה-HDU זיהתה את ה-RAW בין LW לבין הפקודה שאחריה היא מבצעת את הדברים הבאים: stall ל-PC ולבריח IF/ID כך שתוכנם לא ישתנה במחזור השעון הבא. נטרול הפקודה שבשלב ID כך שהיא לא תשפיע על מצב המעבד ולא תכתוב לזיכרון ול-RF. הנטרול מבוצע ע"י איפוס קווי הבקרה. פקודה עם קווי בקרה אפס הופכת להיות "בועה" (bubble). רק במחזור השעון הבא תשתחרר הפקודה האמיתית משלב ה-ID. (C) Yohai Devir November 2005

28 + HDU (C) Yohai Devir 234267 - November 2005
EX instruction write register Is EX Instruction LOAD? HDU Make ID instruction a bubble m u x 1 IF/ID ID/EX WB EX M EX/MEM MEM/WB m u x RegWrite Stall PC and IF/ID latch Control WB WB ID instruction’s source regs M 4 + m u x ALU result Zero Read data 1 Data Memory Read reg 1 Read reg 2 Instruction Memory Read Address Write Address PC Register File m u x Instruction Write reg Read Data m u x 1 Read Address Read data 2 Write data Write Data 32 Forwarding unit (C) Yohai Devir November 2005

29 + HDU SLT $1 $6 $9 LW $9, 1000($4) NEXT OP SLT $1 $6 $9
m u x 1 IF/ID ID/EX WB EX M EX/MEM MEM/WB m u x RegWrite Control WB WB M 4 + m u x ALU result Zero Read data 1 Data Memory Read reg 1 Read reg 2 Instruction Memory Read Address Write Address PC Register File m u x Instruction Write reg Read Data m u x 1 Read Address Read data 2 Write data Write Data 32 SLT $1 $6 $9 LW $9, 1000($4) NEXT OP SLT $1 $6 $9 LW $9, 1000($4) Forwarding unit NEXT OP SLT $1 $6 $9 ( SLT $1 $6 $9 ) LW $9, 1000($4) NEXT OP SLT $1 $6 $9 ( SLT $1 $6 $9 ) LW $9, … (C) Yohai Devir November 2005

30 תלויות מידע נוספות כל ה Data Hazard-שדברנו עליהם עד עכשיו היו מסוג (RAW) Read After Write . קיימים 3 סוגים שונים של Data Hazards: RAW ­ Read After Write WAW ­ Write After Write WAR ­ Write After Read במערכות In Order(מעבד שמבצע פקודות רק בסדר הופעתן בקוד) יכולים לקרות Data Hazard מסוג RAW בלבד. MIPSהיא מערכת In Order ולכן מעבד MIPS לא מושפע מ Data Hazards-מסוגים אחרים. Data Hazards מסוג WAW אוWAR עלולים להיות בעיה רק במערכות Out Of Order. (C) Yohai Devir November 2005

31 דוגמא של WAW (Write after Write) Data Hazard
DIV $1 $2 $3 ADD $4 $1 $5 ADD $4 $7 $9 פקודת DIV לוקחת הרבה זמן, ולכן פקודת ADD ראשונה מתעכבת ולא יכולה להמשיך (למה?) במערכת OOOE המעבד יבצע את פקודת ה-ADD השנייה לפני פקודת ה-ADD הראשונה (המתעכבת עד לחישוב תוצאת R1). מה שעלול לקרות אז הוא שהתוכן הסופי של R4 אחרי שלושת הפקודות הוא זה שהיה אמור להיות אחרי הפקודה השנייה ולא אחרי הפקודה השלישית. זהו WAW Data Hazard. (C) Yohai Devir November 2005

32 דוגמא של WAR (Write after Read) Data Hazard
DIV $1 $2 $3 ADD $4 $1 $5 ADD $5 $7 $9 כמו בדוגמא הקודמת, פקודה 1 האיטית גורמת לעיכוב פקודה 2, פקודה 3 הבלתי תלויה מתבצעת וכותבת ערך ל- R5, צריך לדאוג שפקודה 2 שמשתמשת ב- R5 תקבל את ערכו לפני העדכון של פקודה מספר 3. במערכות OOOE צריך לדאוג לטפל ב-Data Hazards אלו. (C) Yohai Devir November 2005

33 backups (C) Yohai Devir November 2005

34 + + (C) Yohai Devir 234267 - November 2005 IF/ID ID/EX EX/MEM MEM/WB 4
PCSrc m u x 1 IF/ID ID/EX WB EX M EX/MEM MEM/WB RegWrite Control WB WB M Shift left 2 + 4 + Branch MemWrite RegWrite MemRead RegDst Read reg 1 ALUop ALUSrc Data Memory ALU result Zero MemtoReg Read data 1 Read reg 2 Instruction Memory Read Address m u x 1 Write Address PC Register File Instruction Read data 2 Write reg Read Data m u x 1 Read Address Write data Write Data Sign extend 32 ALU Control [15-0] 6 16 32 [20-16] m u x 1 Rd\Rt Rd\Rt [15-11] RegDst (C) Yohai Devir November 2005

35 (C) Yohai Devir 234267 - November 2005 IF/ID ID/EX EX/MEM MEM/WB Data
Memory Read reg 1 ALU result Zero Read data 1 Read reg 2 Instruction Memory Read Address Write Address Register File Instruction Read data 2 Write reg Read Data m u x 1 Read Address Write data Write Data 32 Rd\Rt Rd\Rt (C) Yohai Devir November 2005

36 (C) Yohai Devir 234267 - November 2005 IF/ID ID/EX EX/MEM MEM/WB ALU
Instruction Memory Read Address ALU result Zero Read data 1 Data Memory Read reg 1 Read reg 2 Write Address Register File m u x Instruction Write reg Read Data m u x 1 Read Address Read data 2 Write data Write Data 32 Forwarding unit (C) Yohai Devir November 2005

37 + HDU (C) Yohai Devir 234267 - November 2005
EX instruction write register Is EX Instruction LOAD? HDU Make ID instruction a bubble m u x 1 IF/ID ID/EX WB EX M m u x EX/MEM MEM/WB m u x RegWrite Stall PC and IF/ID latch Control WB WB m u x ID instruction’s source regs M 4 + m u x ALU result Zero Read data 1 Data Memory Read reg 1 Read reg 2 Instruction Memory Read Address Write Address PC Register File m u x Instruction Write reg Read Data m u x 1 Read Address Read data 2 Write data Write Data 32 Forwarding unit (C) Yohai Devir November 2005

38 + + (C) Yohai Devir ID/EX IF/ID EX/MEM MEM/WB 4 ALU PC Register File
PCSrc m u x 1 ID/EX WB EX M IF/ID EX/MEM MEM/WB RegWrite Rd\Rt Rd\Rt Control WB WB M Shift left 2 + 4 + Branch MemWrite RegWrite MemRead ALUSrc Read reg 1 Read data 1 RegDst ALUop Data Memory m u x ALU result Zero MemtoReg Read reg 2 Instruction Memory m u x 1 Write Address PC Register File Instruction Write reg Read Data m u x 1 Read data 2 Read Address Read Address Write data m u x Write Data Sign extend ALU Control 6 [15-0] 16 32 m u x 1 [20-16] [15-11] RegDst Forwarding unit (C) Yohai Devir

39 + (C) Yohai Devir ID/EX ALU Register File EX/MEM MEM/WB 4 IF/ID PC WB
ALUSrc 6 ALU result Zero + Shift left 2 RegDst RegWrite Read reg 1 reg 2 Write reg data data 1 data 2 Register File [15-0] [20-16] [15-11] Sign extend 16 EX/MEM MEM/WB Instruction MemRead MemWrite Branch PCSrc MemtoReg 4 IF/ID PC Memory Read Address m u x 1 Control 32 Rd\Rt Write Data Data Write Address ALUop Forwarding unit (C) Yohai Devir


Download ppt "תרגול מס' 3: Data Hazards מבוסס על תרגול של מורן גביש"

Similar presentations


Ads by Google