המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

מבנה מחשבים ספרתיים זכרון וירטואלי מבוסס על תרגול של מורן גביש

מצגות קשורות


מצגת בנושא: "מבנה מחשבים ספרתיים זכרון וירטואלי מבוסס על תרגול של מורן גביש"— תמליל מצגת:

1 מבנה מחשבים ספרתיים 234267 זכרון וירטואלי מבוסס על תרגול של מורן גביש
Updated by Franck Sala עודכן ע"י תומר גורביץ'

2 הבעיה CPU תהליך 2 תהליך 1 תהליך 3 זיכרון פיזי ישנה כמות נתונה ומוגבלת של זיכרון פיזי. איך נחלק אותו בין התהליכים השונים?

3 הפתרון: זיכרון וירטואלי
כל תהליך משתמש במרחב כתובות וירטואלי אשר ייחודי לו. הדבר גורם לאשליה שרץ במעבד תהליך אחד שכל הזיכרון שייך לו. בריצת התהליך, הגישה לזיכרון היא רק ע"פ כתובות וירטואליות. מאחורי הקלעים, מערכת ההפעלה ממפה את מרחב הזיכרון הווירטואלי של כל תהליך לזיכרון הפיזי (או לדיסק). כאשר התהליך ניגש לכתובת וירטואלית , החומרה מתרגמת את הכתובת הוירטואלית לכתובת פיזית ע"פ המיפוי שבנתה מערכת ההפעלה.

4 מושגים זיכרון פיזי – הזיכרון של המחשב.
זיכרון וירטואלי – מרחב זיכרון מדומה אליו ניגש תהליך. מסגרת – הזיכרון הפיזי מחולק ליחידות שוות שנקראות מסגרות. PFN (physical frame number) – מספר מסגרת במרחב הפיזי. דף (page) – הזיכרון הלוגי של כל תהליך מחולק ליחידות שוות בגודל למסגרות. כל יחידה נקראת דף. VPN (virtual page number) – מספר דף במרחב הלוגי. swapping – ניצול הזיכרון המשני להרחבת מרחב הזיכרון שבשימוש. מבטל את החובה כי כל תהליך ישהה בזיכרון הפיזי במהלך כל הריצה, ובפרט מאפשר להריץ תהליכים גדולים מגודל הזיכרון הפיזי.

5 יתרונות הזיכרון הווירטואלי
אפשרות להגדיל את הזיכרון השמיש מעבר לגודל הזיכרון הפיזי, בעזרת Swapping. אין צורך ב-Relocation – לכל תוכנית מרחב זיכרון וירטואלי נפרד (מתחילה מכתובת 0 בזיכרון). שיתוף זיכרון קל – יכולים להחזיק דף אחד בזיכרון הפיזי שאליו יצביעו רשומות PTE של תהליכים שונים. מקרה פרטי: תמיכה יעילה בריבוי תהליכים (fork). הגנה (הפרדה) – בין מרחבי זיכרון של תהליכים שונים.

6 מבנה הזיכרון הפיזי ישנה אפשרות לחלק את הזיכרון הפיזי מחולק ל-2 חלקים:
"החלק העליון" מכיל טבלאות תרגום עבור המרחבים הווירטואליים של כל התהליכים. "החלק התחתון" מכיל את המסגרות המכילות דפי הזיכרון של התהליכים. כל מסגרת יכולה להכיל דף כלשהו, ללא סדר מסוים. גודל מסגרת בזיכרון הפיזי = גודל דף בזיכרון הווירטואלי.

7 מבנה הזיכרון הפיזי זיכרון ראשי PTBR זיכרון משני (דיסק) PT 1 2 PT 3 1
PTE 1 1 2 1 2 2 3 2 3 3

8 מהלך גישה לכתובת וירטואלית
ה-CPU ממען רק לפי הכתובות הווירטואליות של התהליך, ולכן כדי לגשת לנתון בזיכרון הפיזי יש צורך לתרגם את הכתובת הווירטואלית לכתובת פיזית. Offset VPN VPN (Virtual Page Number) הוא מספר דף וירטואלי במרחב של התהליך. Offset – היסט מתחילת הדף לבית אליו רוצים לגשת. ניגשים למסגרת הנכונה בחלק התחתון עפ"י טבלת התרגום.

9 מבנה טבלת תרגום כל כניסה נקראת PTE (Page Table Entry)
. PTE כל כניסה נקראת PTE (Page Table Entry) עבור כל דף וירטואלי במרחב התהליך יש כניסה אחת בטבלת התרגום של אותו תהליך. כלומר, לפי ה-VPN בכתובת הווירטואלית מוצאים את כניסת ה-PTE המתאימה בטבלת התרגום.

10 מבנה טבלת תרגום PTBR PTE PTE PTE במערכת יש כמה תהליכים, אך בכל רגע נתון יש רק תהליך אחד (נקרא "התהליך הפעיל") שרץ כרגע במעבד. לתחילת טבלת התרגום של התהליך הפעיל מצביע ה-PTBR (Page Table Base Register). במקרה של החלפת קשר, יש לשנות את ה-PTBR להצביע על תחילת טבלת התרגום של התהליך החדש.

11 חישוב כתובת (פיסית) הכניסה המתאימה בטבלת התרגום:
PTE_Address = [PTBR] + VPN*(Size Of One PTE)

12 מבנה כניסה בטבלת התרגום
V M PFN שדה PFN - זהו מספר המסגרת בה יושב הדף בזיכרון הפיזי.

13 מבנה כניסה בטבלת התרגום
V M PFN סיבית Valid – מציינת האם הדף נמצא בזיכרון הפיזי. (אם לא, ייתכן שהדף נמצא בזכרון המשני, או שהכתובת לא חוקית.) מדיניות הבאת הדפים היא Paging on Demand, כלומר רק כשיש דרישה מביאים את הדף המתאים לזיכרון הפיזי. אם הדף לא קיים בזיכרון הפיזי, בפנייה אליו תקרה פסיקת Page Fault (פנייה לכתובת וירטואלית שאין עבורה מיפוי לכתובת פיזית). הפסיקה מטופלת ע"י מערכת ההפעלה. אם הדף המבוקש נמצא בדיסק, המערכת צריכה לטעון אותו לאחת המסגרות הפנויות בזיכרון הפיזי. אם אין מסגרת פנויה אז יש לפנות את אחד הדפים, לעדכן את הדף שהוצא בזיכרון המשני, ולהכניס את הדף החדש למסגרת. הפינוי נעשה לפי מדיניות LRU.

14 מבנה כניסה בטבלת התרגום
V M PFN סיבית Modified – לפי מדיניות כתיבה Write-Back מעדכנים את תוכן הדף בזיכרון המשני רק כאשר מפנים אותו מהזיכרון הפיזי. הסיבית M מציינת האם הדף עודכן אחרי הטעינה. אם כן, בפינוי הדף נעדכן את תוכנו בדיסק.

15 תרגום כתובת וירטואלית לפיזית
VPN offset טבלת תרגום PFN offset שדה PFN – זהו מספר המסגרת בה יושב הדף בזיכרון הפיזי. שדה offset – אותו שדה ה- offset של הכתובת הוירטואלית. בסך הכל ישנן 2 גישות לזיכרון הפיזי – אחת לטבלת התרגום, ואחת לנתון עצמו

16 דוגמא של מכונה עם זיכרון מדומה
הנחות : • למכונה אין cache • טבלת הדפים נמצאת בזיכרון הראשי • כתובת בסיס של טבלת הדפים נתונה ברגיסטר PTBR=0x1000 • תוכן הכתובת הוא C0. • כתובת וירטואלית באורך 30 ביטים • כתובת פיזית באורך 32 ביטים • כניסה בטבלת הדפים מכילה את המידע הבא (PTE): 26 31 PFN Unused Modified Protection Valid תזכורת: האינדקס בטבלת התרגום הנו מספר הדף המדומה.

17 Physical addr. = PFN + offset
PTBR = 0x1000 ( ) : C0 Virtual Addr: 30 bits Physical Addr: 32 bits 26 31 PFN Unused Modified Protection Valid PTE: דוגמא: תוכנית קוראת משתנה מסוג DW (4 בתים) הנמצא בכתובת מדומה x100100A00. 1. מה היא הכתובת הפיזית של המשתנה ? 2. כמה גישות לזיכרון דרוש כדי לקרוא את הערך של המשתנה ? Virtual Addr. VPN + Offset PTE Physical addr. = PFN + offset מציאת הכתובת הפיזית של המשתנה: תרגום הכתובת לבינארי: 1 A 01 0000 0001 000 1010 Virtual Addr:

18 PTBR = 0x1000 ( ) : C0 Virtual Addr: 30 bits Physical Addr: 32 bits 26 31 PFN Unused Modified Protection Valid PTE: דוגמא: תוכנית קוראת משתנה מסוג DW (4 בתים) הנמצא בכתובת מדומה x100100A00. 1. מה היא הכתובת הפיזית של המשתנה ? 2. כמה גישות לזיכרון דרוש כדי לקרוא את הערך של המשתנה ? מציאת הכתובת הפיזית של המשתנה: תרגום הכתובת לבינארי: 1 A 01 0000 0001 000 1010 Virtual Addr: offset VPN גודלו של שדה ה-PFN הוא 23 סיביות. גודלה של כתובת פיזית הינו 32 סיביות, והיא מחולקת ל-PFN ו-offest. לכן גודלו של שדה ה-offset הוא #offset=32-23=9 bit Physical Addr: 0 8 9 31 OFFSET PFN

19 VPN offset 1 A 01 0000 0001 000 1010 מציאת כתובת ה- PTE: VPN*4
PTBR = 0x1000 ( ) : C0 Virtual Addr: 30 bits Physical Addr: 32 bits 26 31 PFN Unused Modified Protection Valid PTE: 1 A 01 0000 0001 000 1010 Virtual Addr: VPN offset מציאת כתובת ה- PTE: VPN*4 + PTBR =PTE =0x

20 גישה ראשונה לזיכרון לכתובת של ה PTE.
PTBR = 0x1000 ( ) : C0 Virtual Addr: 30 bits Physical Addr: 32 bits גישה ראשונה לזיכרון לכתובת של ה PTE. תוכן הכתובת הוא C0 (נתון). זיכרון ראשי זיכרון משני דיסק 2 1 PTE 940001C0 PT 1 2 PTBR 3 1 1 2 2 3 3

21 מציאת ה- PFN: תרגום תוכן ה-PTE, 940001C0 לבינארי
PTBR = 0x1000 ( ) : C0 Virtual Addr: 30 bits Physical Addr: 32 bits 26 31 PFN Unused Modified Protection Valid PTE: מציאת ה- PFN: תרגום תוכן ה-PTE, C0 לבינארי C 1 4 9 0000 1100 0001 0100 1001 000 0010 26 31 PFN Unused Modified Protection Valid Valid = 1: page is present in physical memory PFN (from PTE) Offset (same as Virtual) A0

22 PTBR גישה שניה לזיכרון לכתובת 000380A0 – להבאת הנתון 00201200 000380A0
זיכרון ראשי זיכרון משני דיסק 2 1 PTE 940001C0 PT 1 2 PTBR 3 1 1 2 2 3 3 000380A0

23 שאלה 1 נתון מחשב עם זיכרון פיזי, זיכרון מדומה ומטמון
מרחב הכתובות המדומה בגודל 2n. גודל הזיכרון הפיזי 2m בתים. גודל דף בזיכרון המדומה הוא 2q בתים. גודל בלוק של המטמון הוא 2b בתים. המטמון יכול להכיל 2c בלוקים. שיטת העבודה של המטמון - Direct mapped. Virtual Memory: 2n page size: 2q Physical Memory: 2m Cache size: 2c blocks (Direct mapped) Block size: 2b

24 Virtual Memory: 2n page size: 2q
Physical Memory: 2m Cache size: 2c blocks (Direct mapped) Block size: 2b א. תאר כיצד נראית כתובת מדומה (virtual addr.) במחשב זה. ב. תאר כיצד נראית כתובת פיזית(physical addr.) במחשב זה. פתרון: א+ב: מרחב הכתובת המדומה בגודל 2n, לכן אורך הכתובת הוירטואלית הוא n ביטים. גודל הזכרון הפיסי הוא 2m ובכל כתובת יש בית, לכן אורך הכתובת הפיסית הוא m ביטים. גודל דף בזכרון המדומה הוא 2q בתים, לכן אורך שדה ה-offset גם בכתובת המדומה וגם בכתובת הפיסית (כי ה-offset המדומה שווה ל-offset הפיסי) הוא q ביטים. VPN Page Offset n-q q כתובת מדומה PFN Page Offset m-q q כתובת פיזית

25 TLB- tranlation look aside buffer
הוספת מנגנון הזיכרון הווירטואלי מאריך את זמן הביצוע של פעולות קריאה וכתיבה לזיכרון.כי תרגום של כתובת גורר גישה נוספת לזיכרון(לטבלת התרגום) . כיצד נתמודד עם הפגיעה בביצועים? ה-TLB שומר כניסות בטבלת התרגום שניגשנו אליהן לאחרונה. ה- TLB הוא מטמון של PTEs . לפני שניגש לבצע תרגום נבדוק האם הכניסה קיימת ב-TLB . אם ישנו TLB hit – נוכל לקבל תרגום תוך מספר מחזורי שעון בודדים. אחרת, ניגש לטבלת התרגום כרגיל. את טבלת התרגום נשמור במטמון כמו כל נתון רגיל, ובכך נוכל לצמצם את זמן התרגום גם כאשר יש TLB miss .

26 Virtual Memory: 2n page size: 2q
Physical Memory: 2m Cache size: 2c blocks (Direct mapped) Block size: 2b VPN Page Offset n-q q כתובת מדומה PFN Page Offset m-q q כתובת פיזית ג. איזה שיפור במהירות המחשב ניתן להשיג אם מתכנן המחשב ידאג לכך שיתקיים q≥b+c ? Cache is physical: Block: 2b  offset = b bits Direct mapped, 2c blocks  2c sets  set = c bits tag set disp m-b-c c b

27 VPN Page Offset n-q q כתובת מדומה PFN Page Offset m-q q כתובת פיזית
Cache tag set disp m-b-c c b ג. אם מתקיים אי שוויון q≥b+c אז ה-page offset (שדה q) מכיל בתוכו את השדות set ו- disp (b+c): יתכן ביצוע של שני תהליכים במקביל: תרגום כתובת מדומה לפיזית(באמצעות גישה ל-TLB ) וחיפוש נתון במטמון. יתקבל מצב בו נידע את מיקומו של הנתון המבוקש במטמון עוד לפני תרגום מלא של כתובתו הוירטואלית לפיזית. נשים לב שאת ה-tag match נוכל לבצע רק אחרי התרגום. אך במקרה של TLB hit , זמן הפגיעה במטמון יתקצר.


הורד את "ppt "מבנה מחשבים ספרתיים זכרון וירטואלי מבוסס על תרגול של מורן גביש

מצגות קשורות


מודעות Google