1 / 44

מבנה מחשבים ספרתיים 234267

מבנה מחשבים ספרתיים 234267. TLB מבוסס על תרגול מאת מורן גביש. זכרון וירטואלי ב- VAX (תזכורת ).

jean
Download Presentation

מבנה מחשבים ספרתיים 234267

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. מבנה מחשבים ספרתיים234267 TLB מבוסס על תרגול מאת מורן גביש 234267 - January 2006

  2. זכרון וירטואלי ב- VAX (תזכורת) טבלאות התרגום מספקות את המידע האם דף וירטואלי נמצא בזכרון הראשי ומהו מיקומו שם. עבור כל דף וירטואלי הממופה ע"י הטבלה, קיימת כניסת PTE שבה מופיע המידע המבוקש. מספר כניסות בטבלת תרגום שווה למספר הדפים הוירטואליים שאותם היא ממפה. בד"כ טבלת תרגום תופסת מספר (לפעמים רב מאוד) של דפים. 234267 - January 2006

  3. ב- VAX: • טבלאות התרגום של מרחבי התהליך לא יושבות באופן קבוע בזיכרון הראשי ובתהליך התרגום של כתובת וירטואלית לכתובת הפיזית לא מביאים את כל טבלת התרגום לזכרון הראשי, אלא רק דף מסוים מתוכה הנדרש לתרגום. • בזיכרון הראשי נשמרת טבלת תרגום אחת ( SPT ) שתפקידה למפות את המרחב הוירטואלי של ה- system . במרחב הוירטואלי של ה- system (המשותף לכל התהליכים) יושבות טבלאות התרגום של התהליכים עצמם. • לכל תהליך יש 2 טבלאות תרגום עבור מרחבים P0 ו- P1 שלו. 234267 - January 2006

  4. לגישה לנתון שנמצא במרחב וירטואלי של תהליך נדרשות 3 גישות לזיכרון הפיזי: • גישה לכניסה המתאימה בטבלת ה- SPT לקבלת ה- PFN של המסגרת הפיזית המכילה את הדף הוירטואלי מהמרחב S0 , בו נמצאת הכניסה המתאימה ב- PPT. • גישה לכתובת הפיזית של הכניסה המתאימה ב- PPT . (הדף מתוך טבלת התרגום של מרחב התהליך) • גישה לנתון עצמו (עותק של הדף הוירטואלי ממרחב התהליך היושב במסגרת בזיכרון הפיסי). • הגישות לזיכרון איטיות יחסית. • ע"י שימוש בזיכרון מטמון ( cache ), ניתן לחסוך את הגישה השלישית לזיכרון. • על מנת לחסוך את 2 הגישות הראשונות, או את אחת מהן, נשתמש ב TLB. 234267 - January 2006

  5. מבנה הכתובת הוירטואלית: • הביט השמאלי ביותר ( ה- msb ) מציין האם הכתובת הוירטואלית נמצאת במרחב הוירטואלי של ה- system או במרחב התהליכים. הביט השני משמאל מציין לאיזה מרחב וירטואלי מתייחסים P0 או P1 . כך מתקבלות האפשרויות הבאות עבור שני הביטים ה-msb: • 00 – המרחב הוירטואלי P0 של התהליך . • 01 – המרחב הוירטואלי P1 של התהליך . • 10 – המרחב הוירטואלי S0 של ה- system. • 11 – אפשרות זו לא קיימת. • ה- VPN הוא מספר הדף המבוקש במרחב המצוין ע"י שני הביטים ה- msb. 234267 - January 2006

  6. VAX TLB • TLB הנו זיכרון מטמון מהיר מאוד המכיל כניסות מתוך טבלאות התרגום SPT ו-PPT. • מטרתו: שיפור משמעותי במהירות תהליך התרגום של כתובת וירטואלית לפיזית (חיסכון במספר • הגישות לזיכרון הראשי). • מבנה : 2-way-set-associative . • אורך שורה/בלוק: 4 בתים (=גודל של PTE יחיד) . • מס' בלוקים: 128 בלוקים, 64 בכל way. • set 32 -ים ראשונים ( 0-31 ) עבור PxPT (כניסות טבלת התרגום של התהליך נוכחי). • set 32 -ים הבאים ( 32-63 ) עבור SPT (כניסות טבלת התרגום SPT). 234267 - January 2006

  7. Tag Dir Tag Dir Data Data WAY 1 WAY 0 * מבנה Tag Dir: * בשדה ה- data - ב- set 32 -ים העליונים מאוחסנות כניסות PTE מתוך טבלאות תרגום של התהליך. ב- set 32 -ים התחתונים מאוחסנות כניסות PTE מתוך ה- SPT. 234267 - January 2006

  8. מבנה כתובת וירטואלית מיפוי שדות ה- set וה- tag מכתובת זו : האינדקס- set : בכלway 64 שורות  יש צורך ב- 6 ביטים לקידוד מספר שורה. שדה זה מורכב מביט System or Process) 31 ) ואחריו ביטים 13-9 (מתוך שדה ה- VPN). הביט ה- 31 ייקבע האם דף מ- SPT ) S0 החצי התחתון של ה- way ) או P0/P1 (P0PT/P1PTהחצי העליון של ה- way). ה- tag (17 ביטים): שדה זה מורכב מביט 30 (מרחב P0 או P1 ) וביטים 30-14 (מתוך שדה ה- VPN). 234267 - January 2006

  9. הערה : שדה ה- Offset אינו מועבר ל- TLB כיוון שלא מהווה חלק מתהליך התרגום. (מטרת תהליך תרגום הנה למצוא את כתובתו הפיזית של דף וירטואלי בזיכרון ולא את כתובתו הפיזית של נתון בדף). • מדיניות החלפת בלוקים ב- TLB (כאשר ה- set מלא) : RANDOM. • מדיניות כתיבה : write back 234267 - January 2006

  10. 00 VPN Offset תרגום במרחב P0 עם שימוש ב- TLB(הגישות לזכרון במסגרת מודגשת) Process TLB miss Process P0-space חישוב הכתובת הוירטואלית במרחב המערכת של ה-PTE המתאים ב-P0PT: P0BR + 4*VPN Process TLB hit System TLB hit System TLB miss גישה ל-System TLB לצורך תרגום של הכתובת המדומה של ה-PTE לכתבות פיזית (הבאת ה-PFN של המסגרת המכילה את הדף של ה-PTE) גישה לזכרון הפיזי ל-SPT לכתובת: SBR + 4*VPN(PTE) לצורך תרגום הכתובת המדומה של ה-PTE לכתובת פיזית 234267 - January 2006

  11. Process TLB miss & System TLB miss Process TLB miss & System TLB hit Process TLB hit גישה לזכרון הפיזי לצורך הבאת ה-PTE של הדף המבוקש. גישה ל-Process TLB לצורך הבאת ה-PTE של הדף המבוקש. חישוב הכתובת הפיזית של הנתון המבוקש (PFN,OFFSET ) וגישה לזיכרון הפיזי 234267 - January 2006

  12. במידה ויש Process TLB hit (עבור הכתובת הוירטואלית הראשונית מהמרחב של התהליך), ה- PFN של הדף הוירטואלי מהמרחב P0 מתקבל מתוך שדה ה- data המכיל את ה- PTE המתאים מתוך P0PT.ע"י שרשור ה- Offset, מתקבלת כתובתו הפיזית של הנתון וניתן לגשת אליו.בכך, נחסכות שתי גישות הזיכרון. (הן ל- SPT והן ל- PPT). 234267 - January 2006

  13. במידה ויש Process TLB Miss, מתבצע חישוב של הכתובת הוירטואלית מהמרחב של ה- system (כמפורט בתרשים). כידוע, המרחב הוירטואלי של ה- system ממופה ע"י ה-SPT (לכל דף בו יש כניסה ב- SPT). • יתבצע חיפוש של כתובת זו ב-32 השורות התחתונות של ה- TLB: • אם תמצא ( System TLB hit ), נקבל מתוך ה- data את ה- PFN של הדף הוירטואלי במרחב של ה- system (המכיל את הדף מתוך P0PT )  גישה לכתובת הפיזית של ה-PTE השייכת ל- P0PT קבלת PFN של הדף מהמרחב של התהליך  חישוב הכתובת הפיזית של הנתון (כמפורט בתרשים ) וגישה אליו.נחסכת גישת הזיכרון הראשונה (ל- SPT ), אך לא גישת הזיכרון השנייה (ל- P0PT). • אם לא תמצא ( System TLB miss ), יהיה צורך לגשת לטבלת ה- SPT בזיכרון הראשי על מנת לקבל את כתובתה הפיזית של PTE ב- P0PT . (ההמשך זהה למקרה הקודם). במקרה זה, שתי הגישות לזיכרון מתבצעות. (אף אחת מהן , לא SPT ולא PPT אינה נחסכת ע"י ה-TLB). 234267 - January 2006

  14. הגישה ל- TLB נעשית במקביל לתהליך התרגום כפי שנעשה ללא TLB. כלומר אם נקבל TLB hit, נפסיק את תהליך התרגום וניגש לכתובת שהתקבלה. אם נקבל TLB miss, נמשיך בתהליך התרגום כפי שנעשה ללא TLB. • הערה : אם PTE של דף וירטואלי נמצא ב- TLB , מובטח כי הדף נמצא בזיכרון הפיזי! • במילים אחרות: אם נוציא דף מהזכרון הפיזי, מובטח כי הכניסה המתאימה לו, לא תמצא ב- TLB. 234267 - January 2006

  15. בעת context switch • 32 השורות התחתונות של ה- TLB (המכילות כניסות ב- SPT ) אינן משתנות, שכן, המרחב הוירטואלי של ה- system הממופה ע"י SPT משותף לכל התהליכים . • את 32 השורות העליונות המכילות את הכניסות מטבלת התרגום של התהליך הנוכחי יש "למחוק" על מנת שתרגום הכתובת לא יתבצע באמצעות PTE מטבלאות תרגום של התהליך הקודם. 234267 - January 2006

  16. בעת context switch • קיימות שתי דרכים : • 1. ביצוע invalidate לכל שורות אלה: ( V=0 ) בכל החלפת תהליך (מבוצע ב- VAX). • 2. שמירת מזהה תהליך כחלק מה- tag dir . כך, נוכל לדעת האם ה- PTE שבשדה ה- data שייך לטבלת התרגום של התהליך הנוכחי. 234267 - January 2006

  17. הערה: VPN אינו ייחודי לתהליך מסוים. ייתכנו מספר תהליכים המשתמשים באותו מספר דף וירטואלי. כלומר, הכתובת הוירטואלית של נתונים יכולה להיות זהה עבור שני תהליכים, אך כיוון שהם בעלי טבלאות תרגום שונות, הכתובת הפיזית שתתקבל עבורם תהיה שונה. 234267 - January 2006

  18. דוגמא • נתונה מערכת מרובת תהליכים עם זיכרון וירטואלי. (עפ"י המודל הפשוט יותר, בו כל טבלאות התרגום של התהליכים נמצאות בזיכרון הראשי). • אורך כתובת וירטואלית : 30 ביט. • אורך כתובת פיזית : 32 ביט. • גודל הדף : B = 4KB212 • טבלת הדפים של כל תהליך מאוחסנת בזיכרון הראשי, ולכל תהליך יש רגיסטר המצביע אל תחילתה. • כל כניסה בטבלת הדפים ( PTE ) מכילה, בנוסף ל – PFN , גם ביט valid , ביט Modified ושני ביטים Protection לסימון הרשאות כתיבה/קריאה. 234267 - January 2006

  19. א. כמה ביטים דרושים לכל PTE? גודל דף 212 אורך שדה ה- offset 12 ביטים. נתון כי אורך כתובת פיזית : 32 ביט sizeof(PFN) = 32 -12 =20. PTE כולל PFN ,M ,V וסיביות הגנה – סה"כ 24 ביטים (3 בתים(. ב. מהו גודלה של טבלת דפים של תהליך אחד ? מספר הדפים הוירטואלים : 230/212 = 218 (חילוק גודל המרחב הוירטואלי בגודל דף). בטבלה יש 218 כניסות. גודל כניסת PTE הוא 3 בתים. גודלה של טבלת דפים של תהליך = מס' הכניסות בטבלה * גודל כניסת PTE כך נקבל כי גודלה של טבלת דפים של תהליך הוא: KB = 218 X3768. 234267 - January 2006

  20. למערכת הנ"ל הוספנו TLB , ובו 4 שורות, כל שורה רוחבה – PTE אחד. סה"כ ה – TLB יכול להכיל 4 כניסות (PTE’s). ה – TLB הוא fully associative ומדיניות הכתיבה שלו היא Write Back. ג. האם לשורה ב-TLB נדרש valid bit? כן. סיבית valid ב- TLB מציינת האם הכניסה ב- TLB תקפה. לעומת סיבית ה-valid בתוך ה- PTE מציינת האם הדף נמצא בזיכרון הראשי. ד. האם לשורה ב – TLB נדרש dirty bit? כן, ניתן לשנות protection (וגם מקרים נוספים). 234267 - January 2006

  21. ה. האם יש לשמור ב – TLB עותק של valid bit של ה –PTE ? לא. סיבית ה- valid בתוך ה- PTE מציינת האם הדף נמצא בזיכרון הראשי. אך אם הכניסה ב- TLB תקפה, מובטח שהדף נמצא בזכרון הפיזי. אם דף וירטואלי מתפנה מהזכרון הראשי (ואנו כותבים לו valid=0 ב – PTE ) יש לרשום valid=0 לכניסת ה – TLB . לכן אין צורך לשמור ב – TLB עותק של valid bit של ה – PTE. ו. האם יש לשמור ב – TLB עותק של dirty bit של ה – PTE? כן, כדי שנוכל לחסוך את הצורך בכתיבה לטבלת הדפים לאחר כל כתיבה לדף. כך יהיה מספיק לכתוב ל – TLB . 234267 - January 2006

  22. ז. מהו גודלו של tag ב –TLB ? • מדובר במבנה fully associative => כניסת PTE יכולה להישמר בכל אחת מ 4- הכניסות => גודל tag הוא כגודל VPN במלואו. כלומר, 18 ביטים. (מס' הדפים הוירטואלים הוא 218 ). • במבנה Direct mapped: 16 ביטים. (שתי סיביות למיפוי set). • במבנה2-way: 17 ביטים. (סיבית אחת למיפוי set). ח. מהו גודלו הכולל של ה – TLB ? ב- TLB יש 4 שורות שבכל אחת יש Data ו- Dir. ב- Dir יש את ה- tag (18 ביטים) ואת ה- valid + dirty bits. ב- Data יש את ה- PTE (24 ביטים) ללא ה- valid bit. החשבון בביטים : #lines * [PTE - 1 +tag +v +d] = 4 * [23 +18 +1 +1] = 172 bits. 234267 - January 2006

  23. סיכום היררכית הזכרון • מטמון • המטמון ( CACHE ) הוא זכרון קטן ומהיר קרוב למעבד. • כל רמה של מטמון מכילה עותק חלקי של הנתונים המאוכסנים ברמה שמתחתיה. • הרמה התחתונה של המטמון מכילה עותק חלקי של הנתונים המוכלים בזכרון הראשי. • ניתן להפריד את המטמון לשני מטמונים יעודיים : מטמון לקוד ומטמון לנתונים (פנטיום). 234267 - January 2006

  24. סיכום היררכית הזכרון (2) • זכרון וירטואלי • זכרון וירטואלי ( VIRTUAL MEMORY ) הוא הפרדה בין מרחב הכתובות הלוגי (הנראה לתוכנית) לבין מרחב הכתובות הקיים בזכרון הפיזי בפועל (אליו פונה מערכת ההפעלה). • תרגום כתובת וירטואלית לכתובת פיזית נעשה ע"י טבלאות תרגום (PAGE TABLES) המאוחסנות בזכרון הראשי. כתובתן הפיזית ידועה והן אינן מדופדפות. • מימוש בסיסי של זכרון וירטואלי מכפיל את מספר הגישות לזכרון : גישה ראשונה לקריאת שורה מטבלת התרגום וגישה שניה לקריאת הנתון עצמו. 234267 - January 2006

  25. סיכום היררכית הזכרון (3) • מטמון (פיזי) יחד עם זכרון וירטואלי • במערכת המכילה זכרון וירטואלי בסיסי ומטמון עם תגים פיזיים), ניתן לחסוך את הגישה השניה, אם הנתון המבוקש נמצא במטמון. • מכיון שהתגים במטמון הם חלק מהכתובת הפיזית חובה לבצע את תהליך התרגום, כולל הגישה הראשונה לזכרון. 234267 - January 2006

  26. סיכום היררכית הזכרון (4) • TLB • כדי להאיץ את תהליך התרגום ניתן להוסיף מטמון יעודי השומר שורות מתוך טבלת התרגום (TLB). מטמון כזה עשוי לחסוך את הגישה הראשונה לזכרון. • דפדוף טבלאות הדפים • מכיון שטבלאות הדפים גדולות ותופסות הרבה מקום בזכרון הראשי, ניתן לדפדף גם אותן ע"י אותו המנגנון של הזכרון הוירטואלי. במקרה כזה נדרשת "טבלת-על" שתשמש לתרגום כתובות של טבלאות. • "טבלת העל" צריכה להשמר תמיד בזכרון הראשי, כתובתה הפיזית ידועה והיא אינה מדופדפת. דוגמא : System Page Table ב- VAX/11 , המשמשת לתרגום כתובות של טבלאות דפים של תהליכים (Process Page Tables). 234267 - January 2006

  27. סיכום היררכית הזכרון (5) • מטמון עם תגים וירטואלים • כדי לאפשר גישה למטמון עוד לפני תרגום הכתובת הוירטואלית, ניתן להחזיק מטמון עם תגים שהם חלק מהכתובת הוירטואלית, כאשר החלוקה ל- tag, set, disp תתבצע עפ"י כתובת זו. כך נוכל לקבל מן ה- cache את הבלוק הוירטואלי המתאים. (עד כה, ניגשנו למטמון לאחר חישוב הכתובת הפיזית). • חיסכון של 3 הגישות לזיכרון בבת אחת. • הבעיה : ייתכן מצב בו שני תהליכים שונים פונים לאותה כתובת וירטואלית, אך היא ממופה לשתי כתובות פיזיות שונות (כלומר משמשת לשני נתונים שונים, עפ"י רעיון ההפרדה). 234267 - January 2006

  28. סיכום היררכית הזכרון (6) • בעת context switch : יש לבצע invalidate לכל התגים הוירטואליים (על מנת שכתובת וירטואלית במרחב של תהליך מסוים לא תמופה לכתובת פיזית השייכת לתהליך אחר). • שיפור: לכל שורה במטמון נוסיף מזהה-תהליך ( PID ). בכל גישה נשווה PID בנוסף להשוואת התגים. • מטמון עם תגים וירטואלים ופיזיים • במטמון כזה יש לכל שורה שני תגים : תג וירטואלי ותג פיזי, אם אין PID , בכל החלפת תהליך נבצע Invalidate לכל התגים המדומים, אך נשאיר את הפיזיים תקפים. hit במטמון כזה יתקבל אם לפחות אחד מהתגים מתאים ותקף. במהלך הריצה של התהליך הבא מעדכנים את התגים המדומים תוך שימוש בתגים הפיזיים (שכולם תקפים) ובתגים המדומים שכבר עודכנו והפכו לתקפים. • הערה: לתגים פיזיים אין צורך לבצע Invalidate כיוון שתוכן הזיכרון הפיזי אינו משתנה לאחר ביצוע החלפת תהליכים. 234267 - January 2006

  29. שאלת חזרה VAX השאלות מתייחסות לזיכרון הוירטואלי של ה – VAX , כפי שנלמד בתרגול (כולל TLB). • במהלך תרגום כתובת ווירטואלית הנמצאת במרחב הווירטואלי P0 של תהליך לכתובת פיסית בהכרח יתרחשו האירועים הבאים: • גישה ל- SPT וגישה ל- P1PT. • גישה ל- P1PT וגישה ל- P0PT. • גישה ל- SPT וגישה ל- P0PT. • גישה ל- P0PT. • גישה ל- SPT. • אף אחת מהתשובות הנ''ל אינה נכונה. אם יש TLB – במידה ויהיה Process TLB hit , לא נצטרך לגשת ל- P0PT ולא ל- SPT. P1PT אינו רלוונטי למרחב הוירטואלי P0 . לכן, אף תשובה אינה נכונה. 234267 - January 2006

  30. הפניה הראשונה לאחר החלפת תהליכים ( context switch ) לכתובת ווירטואלית כלשהי הנמצאת במרחב הווירטואלי P0 של תהליך תגרום בהכרח ל- • גישה ל- SPT וגישה ל- P0PT. • גישה ל- SPT וגישה ל- P1PT. • גישה ל- P0PT. • גישה ל- P1PT. • גישה ל- SPT. • אף אחת מהתשובות הנ''ל אינה נכונה. יש לתרגם את הכתובת הוירטואלית מהמרחב של התהליך => ניגשים ל- Process TLB , יש miss (כיוון שבעת context switch בוצע invalidate לכל הכניסות ב- Process TLB). כלומר, גם אם יהיה hit ב- System TLB , לא יהיה מנוס מגישה ל- P0PT. 234267 - January 2006

  31. טבלת SPT • גדולה מ- P0PT ו- P1PT. • שווה בגודלה ל- P0PT ו- P1PT. • גדולה מ- P0PT אבל שווה בגודל ל- P1PT. • קטנה מ- P0PT. • קטנה מ- P1PT. • גדולה מ- P0PT ו- P1PT רק אם יש יותר מכמות מסוימת של תהליכים ולכן נדרש מקום נוסף ב- S0 לטבלאות. גודל המרחב של ה- system שווה לגודל המרחב הוירטואלי של ה- process. גודל דף וירטואלי זהה במרחב ה- system ובמרחב הוירטואלי של ה- process. מס' הדפים במרחב ה- system שווה למס' הדפים במרחב הוירטואלי של ה- process. בנוסף, גודל PTE זהה ב- SPT וב- PxPT. לכן, גודל ה- SPT שווה לגודל P0PT ו- P1PT. 234267 - January 2006

  32. נניח שתהליך A ניגש לכתובת ווירטואלית מסוימת הנמצאת ב-P1 ובעוד זמן קצר תהליך B ייגש לאותה כתובת ווירטואלית. בהנחה שבין שתי הגישות (החל מתחילת הגישה הראשונה ועד סוף הגישה השנייה) לא התרחשה אף פסיקת דף, סמן את התשובה הנכונה: • יתכן ששני התהליכים ניגשו לאותה כתובת פיסית של PTE ב- SPT. • יתכן ששני התהליכים ניגשו לאותה כתובת פיסית של PTE ב- P1PT. • יתכן ששני התהליכים ניגשו לאותה כתובת פיסית של הנתון. • יתכן שיקרו מאורעות 1. ו- 2. • יתכן שיקרו מאורעות 1. ו- 3. • יתכן שיקרו מאורעות 2. ו- 3. • לא יתכן שיקרה אף אחד מהמאורעות הנ''ל. 234267 - January 2006

  33. לא ייתכן ששני תהליכים ייגשו לאותה כתובת פיזית של PTE ב- SPT. כל תהליך ניגש לכניסה ב-SPT המתייחסת לדף מתוך טבלת התרגום שלו.  תשובה 1 אינה נכונה. הוכחה: קל לראות כי גודל טבלה גדול מגודל דף וירטואלי ומכיוון שמדובר באותה כתובת וירטואלית, גם אם שתי ה- PT תהיינה אחת אחרי השנייה, עדיין יש מרווח מספיק גדול (גדול מדף) בין שתי הכניסות הרלוונטיות (מיקומן היחסי בטבלאות זהה). לכן, שתי הכניסות נמצאות בדפים שונים ב- S0 ותמופנה לכניסות שונות ב- SPT. תשובה 2 אינה נכונה. לא יתכן ששני התהליכים ייגשו לאותה כתובת פיסית של PTE ב-P1PT כי מדובר בדפים מתוך טבלאות תרגום שונות, ומכיוון שלא דופדפו דפים בין הגישות, הכניסות לא יכולות לשבת באותה מסגרת פיסית. תשובה 3 היא התשובה הנכונה : במידה וקיים שיתוף זיכרון בין התהליכים (משתמשים באותם דפים פיזיים), טבלאות התרגום שלהם יכולות להצביע לאותו דף פיזי של נתונים. כלומר, שני התהליכים ייגשו לאותה כתובת פיסית של הנתון. 234267 - January 2006

  34. ה- (msb (most significant bit ב- P0BR וב- P1BR יכילו תמיד: • 0 ב- P0BR ו- 1 ב- P1BR. • 1 ב- P0BR ו- 1 ב- P1BR. • 0 ב- P0BR ו- 0 ב- P1BR. • 1 ב- P0BR ו- 0 ב- P1BR. • אף אחת מהתשובות הנ''ל אינה נכונה. MSB = 1 כיוון ש- P0BR ו- P1BR מצביעים לתחילת טבלאות התרגום של התהליכים הנמצאות במרחב הוירטואלי של ה- system (S0). 2nd - MSB = 0 כיוון של- system מרחב וירטואלי יחיד ( S0 ). 234267 - January 2006

  35. בהנחה שגם מרחב S1 נמצא בשימוש המערכת, רוצים ליצור מצב בו לכל היותר 25% של TLB תפוס ע''י תרגומים מ- P0PT , לכל היותר 25% של TLB תפוס ע''י תרגומים מ- P1PT . תרגומים מ- S0 ו- S1 צריכים לתפוס כמו שהיה – לכל היותר 50% של ה- TLB. הציעו דרך פשוטה לבצע זאת מבלי לספור את ה- PTEs הנכנסים ל- TLB. נשנה את דרך המיפוי ל- TLB: במקום סיבית אחת- S/P) MSB ) באמצעותה אנו חוצים את ה- system/process) TLB ) ו- 5 סיביות נוספות האומרות מה המיקום בתוך החצי, נשתמש גם בסיבית ה-2nd-MSB (0/1) כלומר נחלק את ה- TLB לרבעים ( P0,P1,S0,S1 ), ו 4- סיביות נוספות למיפוי המיקום בתוך הרבע ( 16 סטים בכל רבע). 234267 - January 2006

  36. סטודנט טען כי תהליך אותו הריץ, גרם לסדרה אינסופית של page faults. ציינו את הבעייה שגרמה לתרחיש זה. סדרה אינסופית של Page faults: גישה לדף של תהליך במצב שאין מסגרות פיסיות פנויות, צריך לפנות דף, אולם לפני שמפנים דף צריך לבדוק את סיבית Modify שלו (למה? והיכן יושבת סיבית זאת?), במקרה שהדף עם כניסת טבלת התרגום של הדף המפונה לא יושבת בזיכרון הפיסי צריך להביאו, אולם הזיכרון מלא וצריך לפנות דף נוסף עבורו, וחוזר חלילה... 234267 - January 2006

  37. מה הפתרון היעיל לבעיה מהסעיף הקודם ? • אי שימוש במרחב P1. • הבאה של טבלאות P0PT ו- P1PT במלואן לזיכרון ראשי עם כל החלפת תהליך. • עם כל דף מתוך ( P0(P1 שנמצא בזיכרון, להחזיק בזיכרון גם דף של (P0PT(P1PT שמכיל את הכניסה המצביעה עליו. • דפדוף של SPT. • כתיבה לדפים בשיטת write-through. • איחוד המרחבים P0 ו- P1. • אחר : ___________________________________________________ • אין כל קשר לבעיה. • הפתרון אינו מתאים לבעיה הנ"ל : הבעיה היא שבזיכרון חסרים דפים מטבלאות תרגום של תהליכים אחרים ולא בהכרח דפים מטבלת התרגום של התהליך הנוכחי, כך שהבאה של טבלאות P0PT ו- P1PT במלואן לזיכרון ראשי עם כל החלפת תהליך לא תפתור בהכרח את ה- page fault המתוארים בסעיף הקודם. • פתרון זה יפתור את הבעיה! נחייב את המערכת שכאשר דף נמצא בזיכרון הפיזי, גם הדף מתוך ה- PPT שמתייחס אליו, ימצא בזיכרון הפיזי. • אין קשר לבעיה הנ"ל. • פתרון נכון אך לא יעיל. • אין קשר לבעיה הנ"ל. 234267 - January 2006

  38. אם נחליט לדפדף גם את SPT , מה יהיה גודלה של טבלת העל (בבתים) אשר תשב במקום קבוע בזיכרון ותצביע על מיקום של דפים של SPT. הניחו שכל כניסה של טבלת העל חייבתלהיות בגודל חזקה שלמה של שתיים (של בתים) והיא תכיל רק את ה-PFN של הדף המוצבע וביט Valid. • 213. • 214. • 215. • 216. • 217. • אף אחת מהתשובות הנ''ל אינה נכונה. 234267 - January 2006

  39. עד כה, ה- SPT הייתה בזיכרון הפיזי באופן קבוע. כעת, עקב מגבלות גודל, לא ניתן להחזיק את כל ה- SPT בזיכרון הפיזי. נחזיק 'טבלת על'. את ה- SPT נחלק לדפים וטבלת העל תשמור את מיקומיהם של דפי ה- SPT בזיכרון הפיזי. נחשב את מספר הדפים שתופסת ה- SPT בזיכרון הפיזי: מס' הכניסות ב- SPT: 221 (כמספר הדפים הוירטואלים במרחב S0). גודל כל כניסה: 4 בתים. גודל SPT: 4 * 221 = 223 בתים. גודל דף פיזי (= גודל דף וירטואלי) : 29 בתים. מס' הדפים שתופסת ה- SPT בזיכרון הפיזי: 214 = 29 / 223 דפים. מס' הכניסות בטבלת העל : 214 כניסות. כל כניסה מכילה סיבית V ושדה PFN (מיקום הדף מתוך ה- SPT בזיכרון הפיזי). גודל PFN ב- 21 : VAX סיביות. גודל כניסה הנו כגודל PFN+V: 22 סיביות . על גודל כניסה להיות חזקה שלמה של 2 => גודל כניסה בטבלת העל : 32 סיביות = 4 בתים. גודל טבלת העל: 216 = 4 * 214 בתים. 234267 - January 2006

  40. בהנחה שברגע מסוים רצים 4 תהליכים ב-VAX , מצאו את המספר המינימלי של כניסות תפוסות ב-SPT . כניסה תפוסה מוגדרת ככניסה אשר מצביעה לדף וירטואלי הנמצא בשימוש. כמו כן, הניחו כי כל טבלת דפים הנמצאת המרחב וירטואלי מתחילה בראש דף. • 15 • 215 • 17 • 217 • 25 • 225 • אף אחת מהתשובות הנ''ל אינה נכונה. כרגע רצים 4 תהליכים => קיימים 8 מרחבים וירטואליים של תהליכים (לכל תהליך שני מרחבים: P0 ו-P1). => קיימות 8 טבלאות תרגום ( לכל תהליך: P0PT ו-P1PT) במרחב הוירטואלי של ה-system (S0). כל טבלת תרגום תופסת 214 דפים (עפ"י סעיף קודם ועפ"י העובדה שגודל ה- SPT שווה בגודלו ל-P0PT ו-P1PT). לכן יש צורך ב-214 כניסות ב-SPT לכל טבלת תרגום ב-S0. כיוון שישנן 8 טבלאות תרגום ב-S0, מספר הכניסות הנדרש בטבלת ה-SPT: 217 = 8 * 214. 234267 - January 2006

  41. נניח שב-VAX יש גם זיכרון מטמון עם תגים וירטואליים (כלומר הגישה אליו מתבצעת בעזרת כתובות וירטואליות) – VTCache, אשר מאוחסנות בו גם כתובות ממרחב ה-System וגם ממרחבי P1 ו-P0. כמה מינימום גישות יהיו לזיכרון המטמון VTCache במהלך גישה לכתובת וירטואלית השוכנת במרחב P0 ? • 1 • 2 • 3 • 4 • אף אחת מהתשובות הנ''ל אינה נכונה. VTCache מאפשר לגשת אל הנתון במטמון עפ"י הכתובת הווירטואלית ללא ביצוע תרגום לכתובת פיזית. לכן, המספר המינימלי של גישות לזיכרון המטמון הנו 1. 234267 - January 2006

  42. בהחלפת התהליכים (context switch) צריך לבצע אחת מהפעולות הבאות ב- VTCache: • invalidation של כל הכניסות השייכות ל- P0. • invalidation של כל הכניסות השייכות ל- P1. • invalidation של כל הכניסות השייכות ל- P0 ול- P1. • invalidation של כל הכניסות השייכות ל- S0. • invalidation של כל הכניסות השייכות ל- P0 ול- S0. • invalidation של כל הכניסות השייכות ל- S0 , ל- P0 ול- P1. ייתכן מצב בו שני תהליכים שונים פונים לאותה כתובת וירטואלית, אך היא ממופה לשתי כתובות פיזיות שונות (כלומר משמשת לשני נתונים שונים, עפ"י רעיון ההפרדה). בעת context switch: יש לבצע invalidate לכל התגים הווירטואליים (על מנת שכתובת וירטואלית במרחב של תהליך מסוים לא תמופה לכתובת פיזית השייכת לתהליך אחר => גישה לכתובת לא נכונה). כלומר, ביצוע invalidate לכניסות של כתובות וירטואליות מהמרחבים (P1 ,P0) של התהליך הנוכחי. כתובות וירטואליות ב-S0 משותפות לכל התהליכים ולכן אין צורך לעשות invalidate לתאגים וירטואלים של נתונים ממרחב זה. 234267 - January 2006

  43. 234267 - January 2006

  44. 234267 - January 2006

More Related