Presentation is loading. Please wait.

Presentation is loading. Please wait.

(C) Yohai Devir234267 - November 20051 מבנה מחשבים ספרתיים 234267 תרגול מס ' 4: זכרון מטמון מבוסס על תרגול של מורן גביש, חלק מהשרטוטים עפ " י ליהוא רפפורט,

Similar presentations


Presentation on theme: "(C) Yohai Devir234267 - November 20051 מבנה מחשבים ספרתיים 234267 תרגול מס ' 4: זכרון מטמון מבוסס על תרגול של מורן גביש, חלק מהשרטוטים עפ " י ליהוא רפפורט,"— Presentation transcript:

1 (C) Yohai Devir234267 - November 20051 מבנה מחשבים ספרתיים 234267 תרגול מס ' 4: זכרון מטמון מבוסס על תרגול של מורן גביש, חלק מהשרטוטים עפ " י ליהוא רפפורט, רנדי כץ, פטרסון

2 (C) Yohai Devir234267 - November 20052 הבעיה מהירות הגישה לזיכרון איטית ביחס לביצועי המעבד (עד פי 1000), ככל שהזיכרון גדול יותר הגישה אליו איטית יותר. ביצועי המעבד נפגעים משמעותית אם בכל קריאה מהזיכרון יש להמתין (ולהשבית את המעבד) מספר רב של מחזורי שעון. הפתרון החזקת עותק חלקי של הזכרון "קרוב" למעבד כך שזמן הגישה אליו יהיה קצר בהרבה.

3 (C) Yohai Devir234267 - November 20053 למה הפתרון הזה טוב ? מקומיות בזמן – אם ניגשנו לאובייקט מסויים, סביר להניח שניגש אליו שוב בקרוב. לדוגמא : אנו מבלים 90% מהזמן ב - 10% מהקוד – בעקר עקב לולאות בהן קוראים אותה שורה מספר פעמים. משתנים מסוימים מעודכנים פעם אחר פעם. לדוגמא – מיון. מקומיות במקום – אם ניגשנו לאובייקט מסויים סביר להניח שניגש לאובייקטים סמוכים אליו. לדוגמא : קטעי קוד, סביר מאד שנצטרך גם את הפקודה הבאה ואילו שאחריה. נתונים – אם קראנו ( או כתבנו ) ממקום אחד במערך סביר להניח שנקרא ( או נכתוב ) גם את סביבתו. תזכורת לחוק אמדל – עדיף לשפר את מה שקורה רוב הזמן !

4 (C) Yohai Devir234267 - November 20054 טרמינולוגיה פגיעה (Hit) – הנתון מופיע ברמת הזכרון. החטאה (Miss) – הנתון לא מופיע ברמת הזיכרון ולכן צריך להביאו מרמה נמוכה יותר. יחס פגיעה (hit rate) אחוז הפגיעות מתוך סה " כ הגישות לזכרון. Miss rate = 1 – hit rate בלוק – הזכרון המרכזי מחולק לבלוקים של מספר בתים. בכל פעם שנצטרך להעתיק בית למטמון נעתיק את כל הבלוק בו הוא נמצא.

5 (C) Yohai Devir234267 - November 20055 Fully associative Organization Tag Line Tag Array Data array Tag = Block#Line Offset 0431 1. נחלק את שדה כתובת המידע למספר הבלוק (tag – מספר זיהוי ) ולמיקום המידע בתוך הבלוק (offset). 2. המטמון יהיה בנוי כטבלה של מספר הבלוק ו - תוכן הבלוק. כל בלוק בזכרון יכול להכנס לכל שורה במטמון.

6 (C) Yohai Devir234267 - November 20056 Fully associative Organization Tag Line Tag Array Tag = Block#Line Offset Address Fields 0431 Data array 031 = = = Hit\Miss data 3. מציאת המידע במטמון תהיה ע " י השוואה של שדה ה - tag של הכתובת המבוקשת עם שדה ה - tag של הבלוקים שנמצאים במטמון במקביל. במידה והבלוק נמצא, הבית המבוקש יימצא עפ " י שדה ה - offset \ displacement.

7 (C) Yohai Devir234267 - November 20057 Fully associative Organization יתרון : Hit Rate גבוה. חסרון : מימוש ההשוואה המקבילית קשה ויקר. Tag Line Tag Array Data array Block 1 Block n :::: Block 2 Block m כל בלוק בזכרון יכול להתמפות לכל שורה במטמון.

8 (C) Yohai Devir234267 - November 20058 מדיניות פינוי במטמון יהיו הרבה פחות שורות מאשר בלוקים בזכרון הראשי. כאשר יש צורך להביא בלוק נוסף למטמון יהיה צורך לזרוק את אחד הבלוקים הקודמים. יש מספר אפשרויות לבחור מי יהיה הבלוק שייזרק : 1.LRU - least recently used - הבלוק שזמן רב ביותר לא השתמשנו בו ( לקריאה או לכתיבה ). 2.LRM - least recently modified - הבלוק שזמן רב ביותר לא כתבנו אליו. 3.Random – בחירה אקראית לחלוטין.

9 (C) Yohai Devir234267 - November 20059 Direct Mapping Organization 1. נחלק את שדה כתובת המידע למיקום המידע בתוך הבלוק (offset) ואת מספר הבלוק נחלק למיקום במטמון (set) ולמספר זיהוי (tag). 2. המטמון יהיה בנוי כטבלה של מספר הבלוק ו - תוכן הבלוק. Line Tag Array Tag Set# Cache storage TagSetLine Offset 047 31 5 Block number ההבדל ממבנה של fully associative cache הוא שהפעם לכל שורה במטמון יש מספר מזהה – set. 8

10 (C) Yohai Devir234267 - November 200510 Direct Mapping Organization 3. מציאת הנתון: א. נמצא את השורה המתאימה עפ"י ה- set כאינדקס במערך. ב. נשווה את ה- tag של הכתובת עם ה- tag של השורה במטמון אליה הצביע ה- set. במידה ויש התאמה הבלוק המבוקש נמצא במטמון. אחרת יש החטאה וצריך להביא את הבלוק. ג. במידה והנתון נמצא במטמון, ניגש ל- byte המתאים בשורה עפ"י שדה ה- disp. Line Tag Array Tag Set# Cache storage 031 TagSetLine Offset 041331 5 Block number 2 9 =512 sets

11 (C) Yohai Devir234267 - November 200511 Direct Mapping Organization Cache Size........ Cache Size Cache Size block 2 (set = 10) block 0 (set = 00) block 6 (set = 10) block 4 (set = 00) block 4n+2 (set = 10) block 4n (set = 00) tagData Set# 00 01 10 11 כל שורה בזכרון יכולה להמצא בשורה אחת במטמון. שימו לב שאין צורך במדיניות פינוי! יתרון : קל למימוש וזול. חסרון : miss rate גבוה שנובע משיטת המיפוי המאפשרת מיפוי של מספר כתובות ( בעלות סיביות set זהות ) לאותה שורה במטמון.

12 (C) Yohai Devir234267 - November 200512 2 way set associative Organization 1. באופן זהה ל - direct mapping נחלק את שדה כתובת המידע למיקום המידע בתוך הבלוק (offset) ואת מספר הבלוק נחלק למיקום במטמון (set) ולמספר זיהוי (tag). 2. המטמון יהיה בנוי כשתי טבלאות של מספר הבלוק ו - תוכן הבלוק. TagSetLine Offset 046 31 5 Block number ההבדל ממבנה של direct mapping הוא שהפעם יש שני ways, כל אחד בנוי כמו direct mapping כאשר הנתון יכול להמצא בכל אחד מהם. Line Tag Array Tag Set# Cache storage LineTag Tag ArrayCache storage WAY 0 WAY 1

13 (C) Yohai Devir234267 - November 200513 2 way set associative Organization 3. מציאת הנתון: א. נמצא את השורה המתאימה עפ"י ה- set כאינדקס במערך. ב. נשווה את ה- tag של הכתובת הדרושה עם ה- tag של השורה במטמון אליה הצביע ה- set בכל אחד מה- ways. במידה ויש התאמה הבלוק המבוקש נמצא במטמון. אחרת יש החטאה וצריך להביא את הבלוק. ג. במידה והנתון נמצא במטמון, ניגש ל- byte המתאים בשורה עפ"י שדה ה- disp. TagSetLine Offset 04 5 31 Way 0 Tag Set# Data Data Out Way 1 = Hit/Miss = Tag Set# Data MUX 6

14 (C) Yohai Devir234267 - November 200514 2 way set associative Organization Cache Size........ Cache Size Cache Size 2 (set = 10) 0 (set = 00) 6 (set = 10) 4 (set = 00) 4n+2 (set = 10) 4n (set = 00) tagData Set# 00 01 10 11 כל שורה בזכרון יכולה להמצא בשורה אחת במטמון באחד משני ה- ways. ע"מ לממש LRU מספיק ביט אחד לכל set. יתרון / חסרון : השיטה של k-ways מהווה פשרה סבירה, אופטימלית בביצועים. tagData Set# 00 01 10 11 WAY 0WAY 1

15 (C) Yohai Devir234267 - November 200515 K-way set associative Organization נניח מטמון בעל קיבולת של 8 בלוקים (DATA) 4 בתים כ"א ואסוציאטיביות משתנה tagData Set# 00 01 10 11 WAY 0 1 way set associative (direct mapping) tagData Set# 000 001 010 011 100 101 110 111 tagData WAY 1 2 way set associative TagSet Line Offset 0153124 TagSet Line Offset 0143123

16 (C) Yohai Devir234267 - November 200516 K-way set associative Organization (II) Set# 0 1 tagData WAY 0 4 way set associative tagData WAY 1 tagData WAY 2 tagData WAY 3 TagSet Line Offset 013312 Tag Line Offset 01312 tagData WAY 0 8 way set associative tagData WAY 1 tagData WAY 7... זהו בעצם fully associative mapping רק מצוייר לרוחב... tagData

17 (C) Yohai Devir234267 - November 200517 K-way set associative Organization (III) נניח מטמון בעל אסוציאטיביות של 4 ונפח data משתנה tagData WAY 0 4 בלוקים tagData WAY 1 tagData WAY 2 tagData WAY 3 Tag Line Offset 01312 Set# 0 1 tagData WAY 0 8 בלוקים tagData WAY 1 tagData WAY 2 tagData WAY 3 TagSet Line Offset 013312

18 (C) Yohai Devir234267 - November 200518 K-way set associative Organization (IV) Set# 00 01 10 11 tagData WAY 0 16 בלוקים tagData WAY 1 tagData WAY 2 tagData WAY 3 TagSet Line Offset 0143123 Set# 000 001 010 011 100 101 110 111 tagData WAY 0 32 בלוקים tagData WAY 1 tagData WAY 2 tagData WAY 3 TagSet Line Offset 0153124

19 (C) Yohai Devir234267 - November 200519 מטמון היררכי עד כה דברנו על מבנה זכרון היררכי בעל מטמון יחיד (רגיסטרים – מטמון – זכרון ראשי – דיסק). היות וישנם נתונים הנקראים בתכיפות רבה מאוד ונתונים שנקראים בתכיפות רבה אך נמוכה יותר, יש הגיון ביצירת מספר היררכיות של זכרון מטמון, כאשר הרמה הראשונה (L1) קטנה ומהירה מהרמה שמתחתיה (L2). במידה והנתון לא נמצא ברמה מסויימת, תשלח בקשת קריאה לרמה שמתחתיה. CPU Registers L1 Cache L2 Cache L3 Cache Disk Backup Main Memory Multi level Cache

20 (C) Yohai Devir234267 - November 200520 עקרון ההכלה במטמון ההיררכי שעובד לפי עקרון ההכלה כל רמה של הזכרון ההיררכי מכילה את כל הנתונים שנמצאים ברמה שמעליה. הדבר נועד ע " מ לפשט את הפרוטוקולים של התקשורת בין רמה לרמה. העקרון לא מתקיים בכל המעבדים.

21 (C) Yohai Devir234267 - November 200521 שאלה I במחשב C123 הותקנה היררכית זיכרון המכילה 3 רמות של cache, המשמרות את עקרון ההכלה, כמתואר בשרטוט הבא : CPU Registers L1 Cache L2 Cache L3 Cache Main Memory ה - CPU יזם קריאה מכתובת m. בקשה זאת גררה שרשרת ארועים בשלושת המטמונים. אילו מהאירועים הבאים אפשריים, אילו לא ולמה ? כל האירועים מתוארים לפי סדר : קודם ב - L1 אח " כ L2 ובסוף ב - L3. M=Miss H=Hit ומשבצת ריקה מסמלת שלא קרה דבר ( כלומר לא בוצעה פניה למטמון הזה (.

22 (C) Yohai Devir234267 - November 200522 L1L2L3 אפשרי? נימוק HHH HM MH MH H MMM MHM MHH MMH MM MH L1L2L3 אפשרי? נימוק HHHלאאחרי hit ברמה מסויימת לא פונים לרמה שמתחתיה. HMלאאחרי hit ברמה מסויימת לא פונים לרמה שמתחתיה. בנוסף יש כאן סתירה לעקרון ההכלה. MHכןהמידע נמצא ברמה השנייה MHלאהפנייה לרמות עפ"י סדר. חייבים לעבור דרך L1. Hכןהמידע נמצא ברמה הראשונה MMMכןהמידע נמצא רק בזכרון הראשי MHMלאאחרי hit ברמה מסויימת לא פונים לרמה שמתחתיה. בנוסף יש כאן סתירה לעקרון ההכלה. MHHלאאחרי hit לא פונים לרמות שמתחת. MMHכןהמידע נמצא ברמה השלישית MMלאחסרה פניה לרמה L3 אחרי ההחטאות ברמות L1 ו- L2 MHלאהפנייה לרמות עפ"י סדר. חייבים לעבור דרךL2.

23 (C) Yohai Devir234267 - November 200523 כתיבה למטמון נניח שיש צורך לעדכן נתון מסויים. במידה והנתון נמצא במטמון, עפ " י עקרון ההכלה, ישנם מספר עותקים של הנתון במספר רמות. ישנן שתי אפשרויות עיקריות לטיפול במקרה זה : Write back – בזמן כתיבה נרשום רק לרמה הדרושה. העדכון לשאר הרמות יבוצע כאשר הנתון ייזרק מהמטמון. על מנת לבצע מדיניות זאת לכל בלוק תשמר סיבית מיוחדת dirty שתהווה אינדיקציה האם הבלוק עודכן וטרם נכתב לרמת זכרון נמוכה יותר. כאשר נתבקש לפנות בלוק מסוים, נעדכן בלוק זה ברמת הזכרון הנמוכה יותר במידה וסיבית ה - dirty דולקת. בכל עדכון נצטרך לעדכן את כל הבלוק מכיוון שסיבית ה - dirty מוחזקת עבור הבלוק כולו ולא עבור byte מסויים. DD כתיבה DD פינוי מקום לנתון אחר L1 L2 הציור – עבור מטמון (fully associative, 2 מילים בבלוק ) בעל שתי רמות שפועלות במדיניות כתיבה writeback.

24 (C) Yohai Devir234267 - November 200524 כתיבה למטמון (2) מדיניות נוספת למקרה בו יש צורך לעדכן נתון שנמצא במטמון היא מדיניות Write through – בזמן כתיבה נרשום את הערך החדש של הנתון גם לרמה שמתחתיו. כאשר הנתון ייזרק מהמטמון, אין צורך לעדכן את הרמה שמתחתיו. שימו לב ! בשיטת write through אין צורך בסיבית dirty ( למה ?) סיבית סטטוס נוספת שנמצאת עבור כל בלוק במטמון ( בד " כ ללא קשר למדיניות ) היא סיבית Valid. בלוק שנמצא במצב I (Invalid) הוא בלוק שבו המידע שנמצא בשורת ה - data אינו משקף את המידע שנמצא בבלוק בעל tag מתאים ברמות נמוכות יותר. הציור – עבור מטמון (fully associative, 2 בתים בבלוק) בעל שתי רמות שפועלות במדיניות כתיבה write through. כתיבה פינוי מקום לנתון אחר L1 L2

25 (C) Yohai Devir234267 - November 200525 כתיבה למטמון (3) נניח שיש צורך לעדכן נתון מסויים. במידה והנתון לא נמצא במטמון, ע " מ לשמור על עקרון ההכלה, ישנן שתי אפשרויות עיקריות לטיפול במקרה זה : Write allocate – במקרה של החטאה מורידים לרמה שמתחת בקשה להבאת הבלוק. טרם הבאת הבלוק מהרמה התחתונה מפנים את המקום המתאים ( מבחינת set ומדיניות החלפה ). II בקשת כתיבה, החטאה ופינוי מקום D הבאת הבלוק וכתיבה L1 L2 הציור – עבור מטמון (fully associative, 2 בתים בבלוק ) בעל שתי רמות שפועלות במדיניות כתיבה writeback ומדיניות write miss של Write allocate.

26 (C) Yohai Devir234267 - November 200526 כתיבה למטמון (4) מדיניות נוספת למצב של החטאת כתיבה היא No Write allocate – במקרה של החטאה מורידים לרמה שמתחת את בקשת הכתיבה עצמה. אין הבאה של הבלוק לרמה הנדרשת. בקשת כתיבה לרמה 1, החטאה L1 L2 הציור – עבור מטמון (fully associative, 2 בתים בבלוק ) בעל שתי רמות שפועלות במדיניות כתיבה write through ומדיניות write miss של No Write allocate ברמה הראשונה. בקשת כתיבה מרמה 1 לרמה 2, פגיעה

27 (C) Yohai Devir234267 - November 200527 שאלה I (2) תזכורת – מדובר במעבד עם 3 רמות של זכרון מטמון ששומרות על עקרון ההכלה. עם העברת בקשת קריאת תוכן כתובת m נוצרה במטמונים שרשרת אירועים במהלכה נדרש מטמון L3 לפנות אחת מהשורות שלו אל הזכרון הראשי. הנח שלכל המטמונים אותו גודל שורה וכולם מאורגנים ב- K-way. כמו כן הנח שכל המטמונים היו מלאים בעת בקשת הקריאה. מה היה המצב בהיררכיית המטמונים שהוביל לצורך בהחלפת שורה ב- L3? תשובה: אם יש צורך להחליף שורה ב- L3 מכאן שהיו 3 החטאות בכל שלוש הרמות של המטמון.

28 (C) Yohai Devir234267 - November 200528 שאלה I (3) Snoop - במקרה שרמת מטמון מסויימת רוצה למחוק נתון מסוים היא "מסתכלת" על הדרגה שמעל ובודקת האם הנתון נמצא גם שם, ואם כן יש למחוק אותו קודם כדי לשמור על עקרון ההכלה. תאר (באופן איכותי) את שהתרחש מרגע גילוי הצורך בהחלפת השורה ב- L3 ועד התייצבות תוכן היררכיית הזיכרון ומסירת תוכן כתובת m למעבד (קרי – עד למאוחר שבין שני אירועים אלו). ניתן להניח שכל המטמונים עובדים לפי מדיניות write-back, מדיניות LRU ושומרים על עקרון ההכלה.

29 (C) Yohai Devir234267 - November 200529 שאלה I (4) 1.L1 מזהה read miss ומבקש את הנתון ממטמוןL2. 2.L2 מזהה read miss ומבקש את הנתון ממטמוןL3. 3.L3 מזהה read miss ובוחר שורה להחלפה, מבצע snoop אל L2 כדי לבדוק אם עותק של שורה זאת נמצא אצלו. 4.אם יש עותק של השורה המוחלפת ב- L2, L2 מבצע snoop אל L1. 5.אם יש עותק של השורה המוחלפת ב- L1: אם העותק במצב M (modified), L1 כותב אותו אל L2. בכל מקרה, L1 מסמן את השורה הנ"ל כפנוייה (מצב I – Invalid). 6.אם יש עותק של השורה המוחלפת ב- L2: אם העותק במצב M (modified), L2 כותב אותו אל L3. בכל מקרה, L2 מסמן את השורה הנ"ל כפנוייה (מצב I – Invalid). 7.אם השורה המתפנה מ- L3 היא במצב M, L3 כותב אותה לזכרון הראשי ומסמן את השורה הזאת כפנויה (מצב I).

30 (C) Yohai Devir234267 - November 200530 שאלה I (5) 8.L3 קורא את השורה הנדרשת (החדשה) מהזכרון הראשי ומעדכן LRU. 9.במידה ויש מקום פנוי ב-L2 ב- set הרלוונטי, L2 קורא את השורה הנדרשת מ- L3 אל אחת השורות הפנויות ב- set המתאים ומעדכן LRU. במידה ואין מקום פנוי, L2 בוחר שורה לפנות, מבצע snoop & Invalidate ל- L1 (כולל כתיבה של המידע מרמה L1 לרמה L2 במקרה של dirty), ורושם את המידע לרמה L3 במידה והשורה הנ"ל מסומנת אצלו כ- dirty. לאחר שפונה מקום מתאים, הנתון נכתב ל- L2, ומעודכן LRU. 10.במידה ויש מקום מתאים ב- L1, L1 קורא את השורה הנדרשת מ- L2 אל אחת השורות הפנויות ב- set המתאים ומעדכן LRU. במידה ואין מקום מתאים, מפונה אחת השורות (נכתבת לרמה L2 במידה ובמצב dirty), מעתיק את הנתון מרמה L2 ומעדכן LRU.

31 (C) Yohai Devir234267 - November 200531 שאלה I (6) מה היה ההבדל אם לא היה צריך לשמור על עקרון ההכלה? תשובה: היינו מבצעים קריאה ישירות למטמון L1.

32 (C) Yohai Devir234267 - November 200532 שאלה I (7) נתון כי מטמונים L2 ו- L3 פועלים בעת write miss במדיניות no write allocate (כלומר, במקרה של החטאה בקשת הכתיבה מועברת לרמה הבאה). בשלב מסויים בצע המעבד כתיבה לכתובת n. בקשה זו גררה שרשרת ארועים בהיררכיית הזכרון אשר נפתחה ב- write miss במטמון L1 ובמהלכה (של שרשרת הארועים) פונתה שורה ממטמון L3. שאלה: מהי מדיניות ה- write miss של מטמון L1? תשובה: מדיניות write miss של L1 היא write allocate, אחרת לא היה צורך לקרוא שורות למטמון ולפנות שורה מ- L3. (הוכחה על דרך השלילה) שאלה: האם יתכן שיתרחש במעבד C123 אירוע מסוג L2 write miss? אם כן – באילו סיטואציות? תשובה: לא. עקב עקרון ההכלה לא יתכן write miss באחת הרמות התחתונות בלי שיהיה write miss ב- L1. כל write miss ב- L1 שהוא write allocate גורר בקשת קריאה (כלומר line fill) מ- L1 אל L2, מכיוון שאנחנו שומרים על עקרון ההכלה, לא יתכן write miss ב- L2. בגלל ש L1 במדיניות write-allocate וע"ס עקרון ההכלה אין משמעות לעובדה ש- L2 ו- L3 במדיניות no-write-allocate מכיוון שלא יתכן בהם write miss.

33 (C) Yohai Devir234267 - November 200533 שאלה II נתון מטמון בעל המאפיינים הבאים : גודל (data area) – 64 בתים. מספר בלוקים – 16 אורך כתובת לגישה – 30 סיביות. ארגון 2 way set associative. לכל בלוק מוצמדות גם סיביות valid ו - dirty. מדיניות החלפת בלוקים – LRU א. כמה סה " כ סיביות זכרון מכיל המטמון ?

34 (C) Yohai Devir234267 - November 200534 שאלה II (2) גודל ה- DATA הוא 64 בתים, ומספר הבלוקים הוא 16 מכאן שכל בלוק הוא 4 בתים. לכן שדה ה- disp יהיה בגודל של 2 סיביות. המטמון מאורגן בשיטת 2 way set associative, וידוע שבסה"כ יש 16 בלוקים, מכאן שבכל way יש 8 שורות ולכן שדה ה- set יהיה בגודל 3 סיביות. נתון כי אורך כתובת לגישה למטמון היא 30 ביט, ולכן גודל שדה ה- tag יהיה: 30 – 3 – 2= 25 סיביות. עבור2 way set associative מספיק ביט יחיד לכל set ע"מ לנהל מדיניות של LRU. ובסה"כ: CacheSize = DataSize + (tag + valid + dirty) * #ofBlocks + LRUbits = = 64*8 + (25 + 1 + 1) * 16 +8 = 952bit #set Data(32)Tag(25)M(1)V(1)LRU(1)Data(32)Tag(25)M(1)V(1) 0 1 2 3 4 5 6 7

35 (C) Yohai Devir234267 - November 200535 למטמון הנתון נשלחה סדרת הכתובות הבאה (גישה לבתים): Addresses: 5 7 1 4 36 8 100 6 4 12 36 12 68 5 7 בהנחה שמדיניות הפינוי היא LRU והמטמון מלא ב- data של בלוקים שאינם מופיעים בסדרה דלעיל מצא: כמה החטאות יווצרו? מה מכיל המטמון בתום הסדרה (קרי – אילו בלוקים בכל set)? שאלה II (3) מהי מדיניות הכתיבה ומדוע ניתן להניח כך? מדיניות הכתיבה היא write back, ניתן להניח כך משום שיש ביטdirty. למטמון בעל מדיניות כתיבה אחרת אין צורך בביט זה, שתפקידו הוא לסמן האם יש לעדכן את השורה בזכרון הראשי כאשר יהיה צורך לפנותה מהמטמון. כדי לפתור את השאלה נצטרך לחשב לאיזה set במטמון נכניס את הבלוק המבוקש מהזכרון הראשי. את שדה ה- set ניתן לחשב לפי Set = floor(ADDRESS / line length) mod (lines per way) הסבר: חלוקת הכתובת ב- 4 (אורך השורה) תוריד את שדה ה- disp, וביצוע mod8 יתן את שלושת סיביות ה- LSB של מספר הבלוק שהן בעצם ה- set.

36 (C) Yohai Devir234267 - November 200536 שאלה II (4) כתובתtagsetHit/missWayנימוק 1501m0עפ"י הנתון השורה לא נמצאת 2701H0בפקודה הקודמת הבאנו שורה שמכילה גם את כתובת 7 (וגם את 4 ו- 6) 3100M0עפ"י הנתון השורה לא נמצאת 4401H0הנתון הובא ב- 1 53611M1הנתון לא נמצא. היות וכבר הובא נתון בעל set=1 ( ב- 1), way = 1. 6802m0עפ"י הנתון השורה לא נמצאת 710031M0בפעם האחרונה בה קבלנו set = 1 השורה הובאה ל- way1 ולכן עפ"י LRU צריך לפנות את way0. 8601M1אמנם השורה המכילה את כתובת 6 הובאה כבר ב- (2) אבל ב- (7) החלפנו אותה בשורה חדשה ולכן החטאה. בפעם האחרונה בה קבלנו set = 1 השורה הובאה ל- way0 ולכן עפ"י LRU צריך לפנות את way1. 9401H0ב- (8) שוב הבאנו את השורה של 4-7 101203M0עפ"י הנתון השורה לא נמצאת 113611M0בפעם האחרונה בה קבלנו set = 1 השורה הובאה ל- way1 ולכן עפ"י LRU צריך לפנות את way0. 12 03H0הנתון כבר הובא ב- (10). 136821M1בפעם האחרונה בה קבלנו set = 1 השורה הובאה ל- way0 ולכן עפ"י LRU צריך לפנות את way1. 14501M0אמנם השורה המכילה את כתובת 5 הובאה שוב ב- (8) אבל ב- (13) החלפנו אותה בשורה חדשה ולכן החטאה. בפעם האחרונה בה קבלנו set = 1 השורה הובאה ל- way0 ולכן עפ"י LRU צריך לפנות את way1. 15701H1ב- (14) שוב הבאנו את השורה של 4-7

37 (C) Yohai Devir234267 - November 200537 שאלה II (5) סה"כ 4 פגיעות, 10 החטאות #set LRU 0 32100 17654071706968 21110980 3151413120 4 5 6 7 Way 0 Way 1

38 (C) Yohai Devir234267 - November 200538 שאלה II (6) המטמון דלעיל שובץ במחשב בו מרחב הזיכרון הפיסי מחולק לארבעה סגמנטים זרים שווים בגודלם ( MB 256 כל אחד), A0 B0 A1 B1 לפי סדר זה. למתכנן המטמון הוצבה דרישה לפיה לא ייוצר מצב שיותר מ- 50% מהמטמון יכיל כתובות של סגמנטי A או סגמנטי B ועם זאת תישמר שיטת 2way. הצע דרך פשוטה ויעילה למימוש דרישה חדשה זו מה- cache והסבר את פעולתה. נשים לב כי ה- MSB של כל סגמנט מוגדר באופן הבא: A0???..00 B0..???01 A1???..10 B1..???11 ספרת ה- 2 nd MSB עבור סגמנטי A היא תמיד 0, ואילו עבור סגמנטי B היא תמיד 1. נדאג למפות את המטמון כך שארבע השורות העליונות ימופו תמיד אך ורק לכתובות מסגמנטי A, ואילו ארבע בתחתונות לכתובות מסגמנטי B, ע"י שימוש בביט הנ"ל שנקרא לו ביט הסגמנט. תוצאה זאת נשיג באמצעות שינוי פונקציית המיפוי (שדה ה- set) במקום שיכיל את 3 סיביות LSB של מספר הבלוק (mod8), נשתמש ב- שתי סיביות LSB בלבד ובסיסית הסגמנט. מיפוי ישן: DD SSS TTTTT TTTTT TTTTT TTTTT TTTTT מיפוי חדש: DD TSS TTTTT TTTTT TTTTT TTTTT TSTTT

39 (C) Yohai Devir234267 - November 200539 שאלה II (7) 1way0 #set Data 32bit Tag 25bit M 1bit V 1bit LRU 1bit Data 32bit Tag 25bit M 1bit V 1bit 000 A 001 A 010 A 011 A 100 B 101 B 110 B 111 B


Download ppt "(C) Yohai Devir234267 - November 20051 מבנה מחשבים ספרתיים 234267 תרגול מס ' 4: זכרון מטמון מבוסס על תרגול של מורן גביש, חלק מהשרטוטים עפ " י ליהוא רפפורט,"

Similar presentations


Ads by Google