2 תרגיל יבש – מבנה מחשבים ספרתיים

‫הטכניון – מכון טכנולוגי לישראל‬
‫הפקולטה למדעי המחשב‬
‫תאריך הגשה‪19/12/2015 :‬‬
‫הוראות הגשה‪ :‬ההגשה בזוגות ‪ .‬הוסיפו שמות‪ ,‬ת‪.‬ז‪ ,.‬אי‪-‬מייל‪ ,‬תא אליו יש‬
‫להחזיר את התרגיל ואת תשובותיכם לתרגיל‪ ,‬הדפיסו והגישו לתא הקורס‬
‫בקומה ‪ .1‬עבור הגשות באיחור יש להגיש לתא של אנדריי בקומה ‪. 2‬‬
‫מבנה מחשבים ספרתיים – תרגיל יבש ‪2‬‬
‫שאלה ‪ - 1‬זיכרון מטמון‬
‫נתון מעבד עם שתי רמות זיכרון מטמון‪ .‬עיקרון ההכלה לא מתקיים‪.‬‬
‫‪ :L1‬גודל שורה ‪ ,4 -way set associative , byte 64‬גודל ‪, 16KB‬מדיניות כתיבה ‪write back‬‬
‫מדיניות ‪, write allocate‬מדיניות פינוי ‪. LRU‬‬
‫‪: L2‬גודל שורה ‪ ,2 -way set associative , byte 64‬גודל ‪ , 64KB‬מדיניות כתיבה ‪,write back‬‬
‫מדיניות ‪,write allocate‬מדיניות פינוי ‪. LRU‬‬
‫גודל הכתובת ‪ 32‬ביט‪.‬‬
‫א‪ .‬מהו מבנה הכתובת של המטמון הנ"ל?‬
‫ב‪ .‬מהו גודל ה‪( tag directory -‬הסיביות אשר צריך לשמור כדי לנהל את המטמון) עבור‬
‫כל אחד מהמטמונים?‬
‫מריצים את התוכנית הבאה על המעבד‪:‬‬
‫הנחות‪:‬‬
‫*המשתנים ‪ I,j,s‬וכן המצביע למערך שמורים ברגיסטרים‪.‬‬
‫*המספרים בתוכנית הם בבסיס דצימלי‪.‬‬
‫*המטמון ריק בתחילת התוכנית‪.‬‬
‫*המערך ‪ arr‬מתחיל בכתובת ‪( H1440‬בסיס הקסדצימלי)‪.‬‬
‫*גודל משתנה מסוג ‪ INTEGER‬הוא ‪ 4‬בתים‬
‫ג‪ .‬לאיזה ‪ set‬ב‪ L1-‬ייכנס האיבר ה‪( 18 -‬בבסיס דצימלי) של המערך?‬
‫ד‪ .‬מהו ה‪ hit rate-‬ב‪ L1-‬עבור הלולאה הראשונה?‬
‫ה‪ .‬מהו ה‪ hit rate -‬ב‪ L1 -‬עבור הלולאה השנייה ?‬
‫ו‪ .‬ללא קשר לסעיפים הקודמים‪ ,‬הציעו סדרת פניות לזיכרון כך שתתרחש בסופה פגיעה ב‪-‬‬
‫‪ L1‬והחטאה ב‪ . L2 -‬הניחו כי בתחילת סדרת הגישות הנ"ל המטמונים ריקים‪ .‬הסבירו את‬
‫תשובתכם‪.‬‬
‫שאלה ‪ –2‬חיזוי קפיצות‬
‫נתונה תוכנית‪:‬‬
‫‪MOV R4,#3‬‬
‫‪DEC R4‬‬
‫‪MOV R1,#5‬‬
‫…‬
‫…‬
‫‪DEC R1‬‬
‫‪BNE R1,R0,L1‬‬
‫לולאה של ‪ 5‬איטרציות‪.‬‬
‫‪MOV R2,#3‬‬
‫‪DEC R2‬‬
‫לולאה של ‪ 3‬איטרציות‪.‬‬
‫‪BNE R2,R0,L2‬‬
‫לולאה של ‪3‬‬
‫איטרציות‪.‬‬
‫‪MOV R3,#2‬‬
‫…‬
‫‪DEC R3‬‬
‫‪BNE R3,R0,L3‬‬
‫לולאה של ‪ 2‬איטרציות‪.‬‬
‫‪BNE R4,R0,L4‬‬
‫‪0‬‬
‫‪4 L4‬‬
‫‪…..‬‬
‫‪16‬‬
‫‪20 L1‬‬
‫‪24‬‬
‫‪28‬‬
‫‪32 B1:‬‬
‫‪…..‬‬
‫‪56‬‬
‫‪60 L2‬‬
‫‪64 ...‬‬
‫‪68 B2:‬‬
‫‪…..‬‬
‫‪84‬‬
‫‪88 L3‬‬
‫‪92‬‬
‫‪96 B3:‬‬
‫‪…..‬‬
‫‪132 B4:‬‬
‫(המספרים בעמודה הראשונה הם כתובות של הוראות והם עשרוניים)‪.‬‬
‫שים לב‪ :‬ההוראות הן ‪ ,aligned‬כלומר כתובת הוראה היא כפולה של ‪.4‬‬
‫ההוראות שאינן מפורטות לא פונות לרגיסטרים ‪ R1,R2,R3,R4‬ולא מבצעות ‪ .Branch‬להזכירכם‪ ,‬ערך של‬
‫‪ R0‬תמיד ‪ .0‬אורך כתובת של הוראה הוא ‪ 4‬בתים‪.‬‬
‫התוכנית רצה על מעבד דוגמת ‪ MIPS‬שנלמד בכיתה‪ ,‬למעבד ‪ 5‬שלבים (‪ ,)IF,ID,EX,MEM,WB‬הוא עובד‬
‫בשיטת ‪ in-order‬ופקודות ‪ branch‬מוכרעות בשלב ‪.MEM‬‬
‫(תזכורת‪ :‬הכרעה ב ‪ MEM‬משמע הפסד של ‪ 3‬מחזורי שעון בשגיאת חיזוי)‪.‬‬
‫במערכת קיים מנגנון חיזוי המשתמש ב‪.BTB-‬‬
‫משתמשים במכונת חיזוי הבאה לכל אחד מה‪-Branch -‬ים‪:‬‬
‫‪NT‬‬
‫‪00‬‬
‫‪SNT‬‬
‫‪NT‬‬
‫‪10‬‬
‫‪WT‬‬
‫‪01‬‬
‫‪WNT‬‬
‫‪Taken‬‬
‫‪Taken‬‬
‫‪Not Taken‬‬
‫‪Initial‬‬
‫‪NT‬‬
‫‪11‬‬
‫‪ST‬‬
‫‪Taken‬‬
‫‪Taken‬‬
‫לפני ריצת התכנית ‪ BTB‬ריק‪ .‬אם הוראת ‪ Branch‬לא נמצאת ב‪ ,BTB-‬מצב החיזוי מאותחל‬
‫ל‪ ,Weakly Not Taken-‬ומעודכן לאחר מכן בהתאם לתוצאת אותה הוראת ‪.branch‬‬
‫מבנה כניסת ‪:BTB‬‬
‫מצב חיזוי‬
‫כתובת קפיצה‬
‫‪Tag‬‬
‫ישנן ‪ 2‬קונפיגורציות של ‪:BTB‬‬
‫‪ direct mapped :BTB1‬עם ‪ 8‬כניסות‬
‫‪ fully associative :BTB2‬עם ‪ 3‬כניסות‪.‬‬
‫שדה ה‪( set-‬אם יש כזה) מתחיל בסיבית ‪( 2‬השלישית מימין) והוא רצוף‪.‬‬
‫מדיניות הפינוי היא ‪( MRU‬השורה שהיתה ”‪ “most recently used‬מתפנה אם צריך להחליף שורה‪).‬‬
‫א) עבור כל ‪ BTB‬הסבר כמה החטאות ייווצרו במהלך האיטרציה הראשונה של ‪ B4‬וכמה במהלך השנייה‬
‫והשלישית‪( – .‬שים לב שיש ‪ 3‬אטרציות ל ‪.)B4‬‬
‫בנוסף תארו את תוכן ‪ BTB1‬ו – ‪ BTB2‬בסוף כל לולאה‪.‬‬
‫ב) נתון ש‪ BTB2-‬מספק את ערך החיזוי שלו בשלב ה‪: ID-‬אם מתברר שהחיזוי הוא ‪ taken‬אזי עושים ‪flush‬‬
‫לפקודה שנכנסה‪ .‬ואילו ‪ BTB1‬בשלב ה‪ .IF-‬הנח שהקוד והנתונים נמצאים כולם במטמון וכן אין ‪context‬‬
‫‪ switch‬או קריאות לפונקציות במהלך הריצה‪ .‬איזה ‪ BTB‬ייתן את הביצועים הטובים ביותר (מבחינת זמן‬
‫ביצוע)?‬