Presentation is loading. Please wait.

Presentation is loading. Please wait.

(C) Yohai Devir234267 - January 20061 מבנה מחשבים ספרתיים 234267 תרגול מס' 10: שאלות ממבחנים – OOOE, BTB מבוסס על תרגול של אורן קצנגולד.

Similar presentations


Presentation on theme: "(C) Yohai Devir234267 - January 20061 מבנה מחשבים ספרתיים 234267 תרגול מס' 10: שאלות ממבחנים – OOOE, BTB מבוסס על תרגול של אורן קצנגולד."— Presentation transcript:

1 (C) Yohai Devir234267 - January 20061 מבנה מחשבים ספרתיים 234267 תרגול מס' 10: שאלות ממבחנים – OOOE, BTB מבוסס על תרגול של אורן קצנגולד

2 (C) Yohai Devir234267 - January 20062 שאלה 1 – OOOE (35 נק') נתונה מערכת אשר עובדת בשיטת OOO כפי שמדנו בכיתה המערכת יכולה לבצע: שתי פעולות fetch כל מחזור שעון. שתי פעולות decode כל מחזור שעון. שתי פעולות ALU integer כל מחזור שעון (כל פעולה לוקחת מחזור אחד בלבד). פעולת load או store כל 5 מחזורי שעון (קרי הפעולות אינן pipeline ולוקחות 5 מחזורי שעון לביצוע). הניחו גדלי תורים (rob, mob, RS) גדולים כרצונכם. המערכת יכולה לבצע את כל סוגי ה-bypassing מכל שלב לכל שלב. למערכת branch prediction אידיאלי (קרי שאינו טועה לעולם).

3 (C) Yohai Devir234267 - January 20063 נתונה התוכנית הבאה: R0 = 0 R1 = 0 L1:R4 = 20 R5 = load 100(R4); load from the address in (R4) + 100 R3 = R2+2 R5 = R3 + 2 R6 = 6 R7 = R5 R8 = 8; R9 = 9 R1 = R1 + 1; IF (R1 < 100) goto L1 ; L2: R4 = 23 א. (5 נק') תרגמו את התוכנית לאסמבלי של MIPS כפי שנלמד בכיתה.

4 (C) Yohai Devir234267 - January 20064 R0 = 0 R1 = 0 L1:R4 = 20 R5 = load 100(R4) R3 = R2+2 R5 = R3 + 2 R6 = 6 R7 = R5 R8 = 8; R9 = 9 R1 = R1 + 1; IF (R1 < 100) goto L1 ; L2: R4 = 23 ADDIR10,R0,100 SUBR1,R1,R1 L1:ADDIR4,R0,20 LWR5,100(R4) ADDIR3,R2,2 ADDIR5,R3,2 ADDIR6,R0,6 ADDR7,R5,R0 ADDIR8,R0,8 ADDIR9,R0,9 ADDIR1,R1,1 BNER1,R10,L1 L2:ADDIR4,R0,23

5 (C) Yohai Devir234267 - January 20065 ב. ( 10 נקודות ) שרטטו את מצב במערכת באשר מסיימים את ביצוע פעולת ה - fetch של פקודה 1L בפעם השנייה.

6 6 Fetch Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R5 R6 R7

7 7 Fetch Q MOB RS ROB Execute Retire RAT R1 R2 R3 R4 R5 R6 R7 Sub R1,R1,R1 Addi R10,R0,100

8 8 Instruction Q MOB ROB Execute Retire RAT Lw R5, 100(R4) Addi R4,R0,20 Addi R10,R0,100 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 RS0 RS RB0  R0+100 rb0 Sub R1,R1,R1 rb1 RS1 RB1  R1-R1

9 9 Instruction Q ROB Execute Retire RAT Addi R5,R3,2 Addi R3,R2,2 Addi R10,R0,100 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 RS0 RS RB0  R0+100 rb0 Sub R1,R1,R1 rb1 RS1 RB1  R1-R1 RB0  R0+100 Addi R4,R0,20 X  100+R4 RS2 RS3 Lw R5, [x] M0 rb4 rb2 RB2  R0+20 RB3  rb2+100 MOB RB4  MEM(rb3)

10 10 RB6  rb5+2 RB5  R2+2 Instruction Q ROB Execute Retire RAT Add R7,R5,R0 Addi R6,R0,6 Addi R10,R0,100 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 RS rb0 Sub R1,R1,R1 rb1 Addi R4,R0,20 X  100+R4 RS2 RS3 Lw R5, [x] M0 rb2 MOB RB4  MEM(RB3) RB2  R0+20 ok W W Addi R3,R2,2 Addi R5,R3,2 RB2  R0+20 RB3  rb2+100 rb5 rb6 RS4 RS5

11 11 Instruction Q ROB Execute Retire RAT Addi R9,R0,9 Addi R8,R0,8 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 RS rb2 MOB RB4  MEM(RB3) W RB3  rb2+100 RB5  R2+2 RB6  rb5+2 rb5 rb6 R1  RB1 R10  RB0 RB3  rb2+100 RB5  R2+2 W RB8  rb6+R0 RB7  R0+6 Addi R10,R0,100 Sub R1,R1,R1 Addi R4,R0,20 X  100+R4 Lw R5, [x] Addi R3,R2,2 Addi R5,R3,2 RS3 M0 ok RS4 RS5 Add R7,R5,R0 Addi R6,R0,6 ok RS0 RS1 rb7 rb8

12 RB6  rb5+2 Instruction Q ROB Execute Retire RAT Bne R1,R10,L1 Addi R1,R1,1 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 RS MOB RB4  MEM(RB3) (1) rb5 rb6 RB8  rb6+R0 RB7  R0+6 Addi R4,R0,20 X  100+R4 Lw R5, [x] Addi R3,R2,2 Addi R5,R3,2 ok M0 ok RS5 Add R7,R5,R0 Addi R6,R0,6 ok RS0 RS1 rb7 rb8 R4  RB2 RB6  rb5+2 RB7  R0+6 W Addi R8,R0,8 Addi R9,R0,9 rb9 rb0 RS3 RS2 RB9  R0+8 RB0  R0+9

13 Instruction Q ROB Execute Retire RAT Lw R5,100(R4) Addi R4,R0,20 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 RS MOB RB4  MEM(RB3) (2) rb5 rb6 RB8  rb6+R0 X  100+R4 Lw R5, [x] Addi R3,R2,2 Addi R5,R3,2 ok M0 ok Add R7,R5,R0 Addi R6,R0,6 ok RS1 rb7 rb8 Addi R8,R0,8 Addi R9,R0,9 rb9 rb0 RS3 RS2 RB9  R0+8 RB0  R0+9 RB8  rb6+R0 RB9  R0+8 W (SH) Bne R1,R10,L1 Addi R1,R1,1 rb1 RB1  R1+1 RB2  rb1-R10 RS4 RS5 Only 2 ALU!

14 (C) Yohai Devir234267 - January 200614 ג. (5 נקודות) בצעו חישוב מקורב של ה- CPI של המערכת כאשר מבצעים את התוכנית כולה. היות והלולאה מבוצעת 100 פעמים, זמן ביצוע שאר השורות זניח. מהרגע שבו בוצע fetch ל- LW בפעם הראשונה עד הרגע שבו בוצע fetch פעם שניה חלפו 5 מחזורי שעון. לפיכך גם בין תחילת קריאה מהזכרון ועד שנוכל לקרוא בשנית יעברו 5 מחזורי שעון – לא יהיו עיכובים כתוצאה מהקריאות. ה- structural hazard לא מעכב כיוון שיש מחזור שעון בו יש רק פקודת אחת בשלב ה- EXE יש סה"כ 10 פקודות בלולאה  ה- CPI הוא בקרוב 0.5

15 (C) Yohai Devir234267 - January 200615 R0 = 0 R1 = 0 R4 = 20 R6 = 6 R8 = 8; R9 = 9 L1:R5 = load 100(R4) R3 = R2+2 R5 = R3 + 2 R1 = R1 + 1; IF (R1 < 100) goto L1 R7 = R5 L2: R4 = 23 ( 5 נקודות ) קומפיילר ביצע אופטימיזציה של הקוד ויצר את הקוד הבא (2 נקודות ) האם התוכניות זהות ( מבחינת התוצאה ) נמקו !!!

16 (C) Yohai Devir234267 - January 200616 R0 = 0 R1 = 0 L1:R4 = 20 R5 = load 100(R4) R3 = R2+2 R5 = R3 + 2 R6 = 6 R7 = R5 R8 = 8 R9 = 9 R1 = R1 + 1 IF (R1 < 100) goto L1 L2: R4 = 23 R0 = 0 R1 = 0 R4 = 20 R6 = 6 R8 = 8 R9 = 9 L1:R5 = load 100(R4) R3 = R2+2 R5 = R3 + 2 R1 = R1 + 1 IF (R1 < 100) goto L1 R7 = R5 L2: R4 = 23 התכניות זהות. כל השינוי הוא הוצאת הצבות קבועות לרגיסטרים שאינם בשימוש בלולאה אל מחוץ ללולאה.

17 (C) Yohai Devir234267 - January 200617 (3 נקודות) מה ב- CPI המקורב של התוכנית הזאת ? מה זה אומר לגבי הביצועים של המערכת לפני ואחרי האופטימיזציה ? אמנם הקטנו את מספר הפקודות שבלולאה לחמש, אבל כל פעולת LOAD לוקחת חמישה מחזורי שעון, ואי אפשר לבצע את פעולות ה- LOAD במקביל, לכן ידרשו 5 מחזורי שעון כדי שכל לולאה תסתיים. מבחינת הביצועים – לא יהיה שינוי!! זמן הריצה הוא CC*CPI*IC, אמנם ה- CPI גדל פי 2 בקרוב אבל ה- IC קטן פי 2 בקרוב.

18 (C) Yohai Devir234267 - January 200618 על מנת לשפר את ביצועי המערכת הוספנו עוד יחידת ALU INTEGER ( קרי יש עכשיו שלוש ). (5 נקודות ) האם שופר ה - CPI של המערכת ביחס לתוכנית הראשונה, אם כן בכמה ? לא, היות וה- structural hazard לא גורם לעיכובים, הוספת יחידת ALU נוספת לא תשנה דבר בריצת התכנית. (5 נקודות ) הציעו שפור נוסף לחומרת המערכת ( בנוסף ל -ALU השלישי ) שישפר את ביצועי התוכנית השניה ביחס לביצועים שחישבתם בסעיף הקודם (a). למשל פעולת LD מהירה יותר או ביצוע מקבילי של פעולות LD.

19 (C) Yohai Devir234267 - January 200619 שאלה 2 – חיזוי הסתעפויות (35 נק') חברת SHABAT החלה לשווק את המעבד המצונר (pipeline) הבא: כל מלבן מסמן תחנה ב-pipeline, וכל שלב ב- pipe לוקח מחזור שעון אחד. ידוע כי הבאת הפקודה מהזיכרון (FETCH) מתבצע בשלב הראשון של ה-pipeline שבו גם מצוי רגיסטר PC. הכרעת הסתעפות (Branch Resolution) מתבצע בשלב E, כלומר רק כאשר פקודת ה-Branch מגיעה לשלב E תנאי הקפיצה נבדק. הניחו כי בשלב זה ידוע גם ערכה של כתובת הקפיצה הנכונה וניתן לטעון אותה ל- PC במידת הצורך. PCABCDEF

20 (C) Yohai Devir234267 - January 200620 נתונה  תוכנית  חלקית  לולאה של 3 איטרציות. לולאה של 5 איטרציות. 0 MOV R10,#5 4L3ADDI R7,R8,#1 ….. 24MOV R1,#3 28L1DEC R1 32B1:BNE R1,R0,L1 ….. 100ADDI R7,R8,#1 104DEC R10 108B3:BNE R10,R0,L3 (המספרים בעמודה הראשונה הם כתובות של הוראות).

21 (C) Yohai Devir234267 - January 200621 נתון כי ביצוע התוכנית הנ"ל במערכת המתוארת, כאשר לא משתמשים בשום מנגנון לחיזוי הסתעפויות והוא מבצע מדיניות של Always assume NOT taken, לוקח 282 מחזורי שעון. א-(5 נקודות ) בהנחה שאין פקודות branch נוספות, כמה מחזורים היה לוקח ביצוע התוכנית אילו המעבד היה מצויד בחזאי קפיצות מושלם ? נבדוק כמה מחזורים מתוך ה - 282 הם תוצאה של branch misprediction וכמה נחוצים לחישובים עצמם. לולאה חיצונית מבצעת 4 קפיצות ובפעם ה - 5 לא קופצת  במדיניות NT יהיו 4 טעויות חיזוי. לולאה פנימית ( בכל איטרציה של לולאה חיצונית ) מבצעת 2 קפיצות ובפעם השלישית לא קופצת  ישנן 2 טעויות חיזוי בכל איטרציה של הלולאה החיצונית  לאורך 5 לולאות חיצוניות, הלולאה הפנימית " תורמת " 10 טעויות חיזוי.

22 (C) Yohai Devir234267 - January 200622  בשתי הלולאות יש 14 טעויות חיזוי כשכל טעות חיזוי מבזבזת 5 מחזורי שעון. הפסדנו בגלל חיזויים לא נכונים 5*14=70 מחזורי שעון  במקרה של חזאי קפיצות מושלם ביצוע התכנית היה לוקח 282-70=212 מחזורי שעון.

23 (C) Yohai Devir234267 - January 200623 ב. (10 נקודות) כדי לשפר את ביצועי המעבד הוחלט לממש מנגנון Branch Prediction, ברמה אחת המבוסס על BTB, מכיל 8 כניסות והמיפוי אליו נעשה בעזרת הביטים הנמוכים של הכתובת ( ללא שני הנמוכים ביותר). הניחו כי ניחוש מתבצע בשלב הראשון ב-pipeline ואז גם נטען הערך החזוי ל- PC. על מנת לנחש את כיוון הקפיצה (taken, not-taken), עליכם לבנות מכונת מצבים בת 2 סיביות לכל כניסה בטבלה (שימו לב כי מכונה זאת יכולה להיות שונה מהמכונה המשומשת ב- BTB, ולשם הפשטות נניח כי אותה מכונת מצבים משמשת לכל הכניסות). הציעו את מכונת המצבים שתתן ביצועים אופטימליים (לא בהכרך אידיאליים!) מבחינת אחוז החיזויים הנכונים עבור התוכנית שהוצגה בסעיף א'. ניתן להניח שבתחילת ריצת התכנית הפקודות נמצאות ב- BTB.

24 (C) Yohai Devir234267 - January 200624 נשים לב שמכונה בת 2 סיביות, היא בעלת 4 מצבים ולכן לעולם לא תוכל לתת חיזוי אידיאלי ללולאה החיצונית, אבל ניתן לבנות מכונה שתתן חיזוי אידיאלי ללולאה הפנימית. נשים לב ששתי השורות מתמפות לכניסות שונות ב- BTB (שורה 32 – 0100000, שורה 108 – 1101100) לכן מכונה אידיאלית לא צריכה להתייחס לשילוב בין שתי הלולאות. נתחיל ממכונה עם 3 מצבים, אידיאלית עבור הלולאה הפנימית: T T NT

25 (C) Yohai Devir234267 - January 200625 אם נעקוב אחרי השינויים הרצויים בשני הלולאות נקבל שהמעברים הרצויים עבור הלולאה הפנימית הם: T T NT TT

26 (C) Yohai Devir234267 - January 200626 ע"מ לקבל מספר שגיאות מינימלי בלולאה החיצונית יש להוסיף: T T NT TT T

27 (C) Yohai Devir234267 - January 200627 כדי שהמכונה תטפל גם בעוד מקרים, ומבלי להשפיע על ביצועי התכנית שלנו: T T NT T/NT NT T T/NT

28 (C) Yohai Devir234267 - January 200628 ג. (5 נקודות) כמה מחזורי שעון תיקח הרצת התוכנית עם המנגנון של סעיף ב' ? כל החיזויים נכונים למעט טעות אחת בלולאה החיצונית באיטרציה השלישית. 212+1*5=217CC

29 (C) Yohai Devir234267 - January 200629 ד. (10 נקודות) עם הזמן השתכללה התוכנית שמורצת על המעבד ועכשיו היא: לולאה של 3 איטרציות. לולאה של 5 איטרציות. לולאה איסופית. לולאה של 8 איטרציות. 0MOV R10,#0 4L4ADDI R10,#1 ….. 24MOV R1,#3 28L1DEC R1 32B1:BNE R1,R0,L1 ….. 88MOV R2,#5 92L2DEC R2 96B2:BNE R2,R0,L2 ….. 104MOV R3,#8 108 L3DEC R3 112B3:BNE R3,R0,L3 ….. 128 JMP L4

30 (C) Yohai Devir234267 - January 200630 כדי להתמודד עם תוכנית מורכבת שכזו ציידו את המעבד במנגנון Two Level Branch Prediction. רגיסטר ההיסטוריה הוא לוקלי ובעל 7 סיביות. טבלאות מכונות המצבים הן גם לוקליות. כל מכונות המצבים הן : 00 ST 01 WT 10 WNT 11 SNT NT Taken Not Taken וכולן מאתחלות למצב WNT. נגדיר שהוראת הסתעפות היא " יציבה " בזמן t, אם כל החיזויים שלה מזמן t הם נכונים.

31 (C) Yohai Devir234267 - January 200631 0MOV R10,#0 4L4ADDI R10,#1 ….. 24MOV R1,#3 28L1DEC R1 32B1:BNE R1,R0,L1 ….. 88MOV R2,#5 92L2DEC R2 96B2:BNE R2,R0,L2 ….. 104MOV R3,#8 108 L3DEC R3 112B3:BNE R3,R0,L3 ….. 128 JMP L4 מה יהיה ערכו של R10 כאשר הוראת הסיעוף B3 ו -B1 תתייצבנה. אם לדעתכם הן אינן מתייצבות כלל ציינו מדוע. ניתן להניח שאין הסתעפויות נוספות בתכנית.

32 (C) Yohai Devir234267 - January 200632 היות וטבלאות מכונות המצבים הם לוקאליות, והיות ועבור כל אחת מהלולאות אין לנו התנגשויות בין סדרות ההיסטוריה ( לא קיימת סדרת היסטוריה שעבורה אנחנו פעם עושים קפיצה ופעם לא ). לכן מספיק לנו להגיע לסדרת היסטוריה פעם אחת כדי שמאז החיזוי שלנו עבור אותה סדרת היסטוריה יהיה נכון תמיד. לולאה B1 לדוגמא מבצעת 3 איטרציות בכל פעם : T T N T T N T T N T T N T … המצבים שחוזרים על עצמם עבור הוראת סיעוף B1: T T N T T N T T N T T N T T N T T N T T N את המצבים הנ " ל הוראת ההסתעפות מכירה רק בפעם השלישית שמבוצעת לולאה B1 ( במלואה ) – באיטרציה השלישית של הלולאה החיצונית.

33 (C) Yohai Devir234267 - January 200633 לולאה B3 מבצעת 8 איטרציות בכל פעם : T T T T T T T N T T T T T T T N T T… הוראת ההסתעפות של B3 תהיה יציבה לאחר שתכיר את כל 8 המצבים שחוזרים על עצמם. הדבר יהיה בסוף הפעם השניה בה תבוצע לולאה B3. עבור לולאה B3 נעבור על כל סדרות ההיסטוריה האפשריות עבורה בשתי האיטרציות הראשונות ועבור B1 ב - 3 איטרציות ראשונות. לאחר 3 איטרציות של הלולאה החיצונית שתי הוראות ההסתעפות תהיינה יציבות. בכל איטרציה חיצונית מקודם R10 באחד  לאחר 3 איטרציות של הלולאה החיצונית R10=3.

34 (C) Yohai Devir234267 - January 200634 ה. (5 נקודות ) חזור על סעיף ד ' בהנחה שאורך רגיסטר ההיסטוריה הוא 6 סיביות בלבד. לולאה B3 אף פעם לא תתיצב כי עבור סדרת היסטוריה 111111 אנחנו פעם עושים קפיצה ( איטרציה שביעית של B3) ופעם לא עושים קפיצה ( איטרציה שמינית של B3 ).

35 (C) Yohai Devir234267 - January 200635 ו. חזור על סעיף ד ' בהנחה שמשתמשים ברגיסטר היסטוריה אחד בלבד ( גלובלי ) באורך 10 סיביות. במקרה זה סדרות ההסטוריה יהיו : TTN TTTTN TTTT TTTN אין התנגשויות בין סדרות ההיסטוריה. בשתי איטרציות נעבור על כל סדרות ההיסטוריה האפשריות ואז R10=2


Download ppt "(C) Yohai Devir234267 - January 20061 מבנה מחשבים ספרתיים 234267 תרגול מס' 10: שאלות ממבחנים – OOOE, BTB מבוסס על תרגול של אורן קצנגולד."

Similar presentations


Ads by Google