1 / 41

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

מבנה מחשבים ספרתיים 234267. זכרון וירטואלי מבוסס על תרגול של מורן גביש Updated by Franck Sala. זיכרון פיזי. תהליך 1. CPU. תהליך 2. תהליך 3. הבעייה. ישנה כמות נתונה ומוגבלת של זיכרון פיזי. איך נחלק אותו בין התהליכים השונים?. פתרון ראשון:. חלוקה שווה של הזיכרון בין התהליכים השונים.

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 זכרון וירטואלי מבוסס על תרגול של מורן גביש Updated by Franck Sala 234267 - January 2006

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

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

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

  5. פתרון שלישי - זיכרון וירטואלי • Physical memory: real memory • Divided in Frames • Virtual memory: seen by the program • Divided in Pages • Size of Pages = size of Frames • Provides the illusion of a large memory • Different machines have different amount of physical memory • Allows programs to run regardless of actual physical memory size • The amount of memory consumed by each process is dynamic • Allow adding memory as needed – not contiguously • Many processes can run on a single machine • Provide each process its own memory space • Better security between processes • Allows the sum of memory spaces of all process to be larger than physical memory • Swapping

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

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

  8. מבנה הזיכרון הווירטואלי 0x00000 CPU

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

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

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

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

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

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

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

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

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

  18. תרגום כתובת וירטואלית לפיזית • שדה PFN– זהו מספרהמסגרתבהיושבהדףבזיכרוןהפיזי. • שדה offset– אותו שדהה- offset שלהכתובתהוירטואלית. • בסךהכלישנן 2גישותלזיכרוןהפיזי – אחת לטבלתהתרגום, ואחת לנתוןעצמו • Cache is virtual: • במידהוישגםזיכרוןמטמון, לאחרמציאתהכתובתהפיזיתנחלקאותהלשדות • tag, set, disp, ונחפשאתהנתוןבמטמוןכרגיל, כלומר, נחסוךאתהגישההשניה.

  19. דוגמא של מכונה עם זיכרון מדומה • הנחות : • • למכונה אין cache • • טבלת הדפים נמצאת בזיכרון הראשי • • כתובת בסיס של טבלת הדפים נתונה ברגיסטר PTBR=0x1000 • • תוכן הכתובת 00201200 הוא 94 00 01 C0. • • כתובת וירטואלית באורך 30 ביטים • • כתובת פיזית באורך 32 ביטים • • כניסה בטבלת הדפים מכילה את המידע הבא (PTE): תזכורת: האינדקס בטבלת התרגום הנו מספר הדף המדומה.

  20. PTBR = 0x1000 (00201200) : 9 99 91 C0 Virtual Addr: 30 bits Physical Addr: 32 bits PTE: • דוגמא: • תוכנית קוראת משתנה מסוג DW (4 בתים)הנמצא בכתובת מדומה x100100A00. • 1. מה היא הכתובת הפיזית של המשתנה ? • 2. כמה גישות לזיכרון דרוש כדי לקרוא את הערך של המשתנה ? Virtual Addr. VPN + Offset PTE Physical addr. = PFN + offset • מציאתהכתובתהפיזיתשלהמשתנה: • תרגום הכתובת לבינארי: Virtual Addr:

  21. PTBR = 0x1000 (00201200) : 9 99 91 C0 Virtual Addr: 30 bits Physical Addr: 32 bits PTE: • דוגמא: • תוכנית קוראת משתנה מסוג DW (4 בתים)הנמצא בכתובת מדומה x100100A00. • 1. מה היא הכתובת הפיזית של המשתנה ? • 2. כמה גישות לזיכרון דרוש כדי לקרוא את הערך של המשתנה ? • מציאתהכתובתהפיזיתשלהמשתנה: • תרגום הכתובת לבינארי: Virtual Addr: VPN offset גודלושלשדהה-PFN הוא 23סיביות. גודלה של כתובת פיזית הינו 32 סיביות, והיא מחולקת ל-PFN ו-offest. לכן גודלו של שדה ה-offset הוא #offset=32-23=9 bit Physical Addr:

  22. PTBR = 0x1000 (00201200) : 9 99 91 C0 Virtual Addr: 30 bits Physical Addr: 32 bits PTE: מציאת כתובת ה- PTE: Virtual Addr: VPN offset

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

  24. PTBR = 0x1000 (00201200) : 9 99 91 C0 Virtual Addr: 30 bits Physical Addr: 32 bits מציאת ה- PFN:תרגום תוכן ה-PTE, 940001C0 לבינארי PTE: Valid = 1: page is present in physical memory 000380 A0

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

  26. שאלה 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

  27. 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 ביטים.

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

  29. ג. אם מתקיים אי שוויון q≥b+c אז ה-page offset (שדה q) מכיל בתוכו את השדות set ו- disp (b+c): • יתכן ביצוע של שני תהליכים במקביל: תרגום כתובת מדומה לפיזית וחיפוש נתון במטמון. • יתקבלמצבבונידעאתמיקומושלהנתוןהמבוקשבמטמוןעודלפניתרגוםמלאשלכתובתו הוירטואליתלפיזית. • ניתןיהיהלהשתמשבנתוןשהוצאמהמטמוןעודלפניסיוםתרגוםכתובתוהמדומה (שיפור מהירותהמחשב). • הבעיה שעלולה להיווצר: לא ניתן לדעת אם הנתון שייך לכתובת הפיסית שתתקבל לאחר התרגום של הכתובת המדומה או לכתובת פיסית אחרת עקב קבלת tag-ים שונים. Cache

  30. שאלה 2 • במחשב מסוים יש זיכרון מדומה של 232 כתובות (4GB) . • גודל דף של הזיכרון המדומה 213 בתים (8KB). • מבנה הכניסה בטבלת הדפים: • מהו גודל הזיכרון הפיזי (לכל היותר)? • גודל שדה ה-PFN הוא 12 ביטים ולכן כמות המסגרות בזיכרון הראשי היא לכל היותר 212. • הגודל של כל דף וירטואלי (ולכן גם של מסגרת) הוא 213בתים, לכן מתקבל שגודל הזיכרון הפיסי הוא לכל היותר 212*213=225 בתים(32MB) .

  31. שאלה 2 Virtual memory: 232addresses (4GB) Page size in virtual memory: 213 (8KB) Physical memory size: 225 (32MB) • גודל מרחב הזיכרון המדומה הוא 232 כתובות (בית בכל כתובת) וגודל הדף הינו 213. ישנם 232/213=219דפים וירטואליים ולכן אותה כמות כניסות בטבלת הדפים. • למציאת אורך הכניסה בטבלת הדפים (אורך כל PTE) נסכום את אורך השדות: 1+1+2+12=16 סיביות, כלומר 2 בתים. גודל טבלת הדפים הוא 2*219=220בתים(1MB) . • מהו גודל טבלת הדפים?

  32. Virtual memory: 232addresses (4GB) Page size in virtual memory: 213 (8KB) 219 virtual pages Physical memory size: 225 (32MB) Page table size: 220 bytes (1MB) שאלה 2 כמהתהליכיםיכוליםלרוץבוזמניתעלגביהמעבד? • מספר התהליכים שיכולים לרוץ בזיכרון בו זמנית הוא לכל היותר כמספר טבלאות התרגום פחות אחד (כדי שיהיה גם מקום בזיכרון לדפים). לכל היותר 31 תהליכים יכולים לרוץ במקביל.

  33. Virtual memory: 232addresses (4GB) Page size in virtual memory: 213 (8KB) 219 virtual pages Physical memory size: 225 (32MB) Page table size: 220 bytes (1MB) בניסיון לחסוך זיכרון פיזי הנדרש ע"י ה-PTהוחלט להחזיק טבלה בה יש כניסה לכל מסגרת פיזית. אילו שדות צריכה להכיל טבלה כזו?בהנחה שגודל כניסה חייב להיות חזקה של 2, כמה דפים פיזיים נצטרך כדי להחזיק את כל הטבלה ? שאלה 2 • נחזיק טבלת תרגום הפוכה, כלומר לכל מסגרת בזיכרון הפיזי נחזיק את השדות: VPN, Valid, Modified. כמו כן נחזיק מזהה תהליך (PID) כי דף מספר 2 (למשל) יכול להיות שייך לתהליך א' או לתהליך ב'. M V unused PFN M V VPN PID virtual Physical Physical virtual 1 12 2 1 1 MB

  34. Virtual memory: 232addresses (4GB) Page size in virtual memory: 213 (8KB) 219 virtual pages Physical memory size: 225 (32MB) Page table size: 220 bytes (1MB) שאלה 2 • - 219 virtual pages  VPN: 19 bits • Valid: 1 bit • Modified: 1 bit • PID (base 2): 11 bits • Total: 32 bits • - 212 physical pages  Table Size = 4*212=214 (16KB) M V unused PFN (12) M V VPN PID virtual Physical Physical virtual 1 12 2 1 1 11 19 1 1 MB 16 KB

  35. מה היתרונות ואילו בעיות צפויות עם מימוש זה? היתרון בטבלה החדשה הוא חסכון במקום. גודל כל דף וירטואלי הוא 213 בתים, גודל הטבלה החדשה הוא 214 ולכן הטבלה תתפוס רק 214/213=2 מסגרות בזיכרון. הבעיה הצפויה בשימוש בטבלה החדשה היא חיפוש של PFN בהינתן VPN. אם בטבלה הישנה VPN שימש כאינדקס כניסה, בטבלה החדשה נצטרך לסרוק את כל הכניסות, לבדוק את מזהה התהליך ואת ה-VPN הנתון ואז אינדקס הכניסה שמצאנו יהיה ה-PFN הדרוש. כלומר חסכנו מקום ופגענו ביעילות. M V unused PFN (12) M V VPN PID virtual Physical Physical virtual 1 12 2 1 1 11 19 1 1 MB 16 KB

  36. backups 234267 - January 2006

  37. רשימת ראשי תיבות • PFN(Physical Frame Number) - אחת המסגרות בזיכרון הפיזי, שיכולה להכיל דף וירטואלי. • VPN (Virtual Page Number)- מספר הדףהוירטואלישלתהליךמסוים. • Offset - כמהצריךלקפוץ מתחילתהדףעדהמקוםהמסויםאליורוציםלגשתבדף. • PT (page table) – טבלה שמקשרת בין מספר דף וירטואלי (VPN) לבין הסטטוס והמיקום שלו. • PTE (page table entry) – שורה ב- PT • PTBR (Page Table Base Register) – רגיסטר שמצביע על טבלת הדפים של התהליך שרץ כרגע 234267 - January 2006

  38. זיכרון וירטואלי עם מטמון 234267 - January 2006

  39. Virtual pages = physical frames • Page table to translate between virtual and physical • Resides in memory (each translation requires a memory access)  TLB caches recent PTEs • Miss in TLB is sent to PMH (to get PTE from memory and fill STLB) • Main  L3  L2  L1 data  STLB  iTLB or dTLB • Virtual pages are contiguous • Page table: • Valid bit: page is in the main memory and frame address in the table. • 0: fetch page from disk (trap  context switch  fetch page  back to current process) • Page fault detected by CPU but handled by OS. Causes a context switch. • OS decides which page to victimize (write to disk) – looks at access/dirty bits • Demand load policy: a page fault only causes the fetch of a page from secondary memory • Dirty bit • AC: access control  protection_violation_fault • R / RW / X only • mem type (WB, WT, UC, WP, …) • User/Super • Cache ≤ page size * associativity • Many virtual pages can map to the same physical page • Allow only 2 (1 virtual alias) • DMA copies a page to the disk controller • Snoop invalidate for each byte in the cache (L1 + L2) – if modified then WB • Page in the disk is up to date • TLB is also snooped and entry in invalidated. Valid bit of PTE is reset • Context switch • Each process has its own page table that can be updated by the OS • Save (arch state + registers + reg that holds the PTE table base) in memory • Flushes the TLB • Loads the new context

  40. Linear Address Space (4MB Page) Linear Address Space (4K Page) 32 bit mode: Linear Address Space (4K Page) 31 30 21 12 31 21 0 29 20 11 0 DIR OFFSET DIR TABLE OFFSET Dir ptr 31 21 11 0 DIR TABLE OFFSET 4MByte Page 4KBytePage 2 9 10 9 22 12 10 10 12 4K Page data 512 entryPage Table data data 512 entry Page Directory Page Directory 1K entryPage Table 1K entry Page Directory PTE PTE M-12 20 4 entryPage Directory PointerTable PDE PDE PDE 10 M-12 20 M-12 20+12=32 (4K aligned) 20+12=32 (4K aligned) Dir ptr entry CR3 (PDBR) 32 (32B aligned) CR3 (PDBR) • X86 Paging: • CR4.PSE = 1 (page size extension) enable using large pages • CR3 points the current Page directory (changed per process) • Also called PDBR • 2 level mapping: Page Directories / Page tables (4KB aligned) • Page directory contains: • PS flag: page size: 0 = 4KB / 1 = 4 MB • P flag : page present in memory • if 0: page fault • Maintainred by OS • A: accessed (set by HW / clear by SW) • D: Dirty (set by HW / clear by SW) • G: Global (TLB not invalidated on new CR3) • Set/rst by SW only • WT: • PCD: page-level chache disable (I/O) • PAT: page table attribute index flag • R/W • U/S • Execute Disable  page fault if code • CR4: • PAE flag (physaddr. Extension) • extend phyaddr. To M Bits Not linear • PTE entries are extended to 64 bits / half sets • 2 MB large pages CR3 (PDPTR)

  41. Linear Address Space (4K Page) 63 47 39 38 30 21 12 29 20 11 0 sign ext. PML4 PDP DIR TABLE OFFSET 4KBytePage 9 9 9 12 9 512 entryPage Table 512 entryPage Directory PointerTable data 512 entry Page Directory 512 entryPML4Table M-12 PTE PDE M-12 PDP entry M-12 PML4 entry M-12 40 (4KB aligned) • Paging in 64 bits mode • PML4 is added (page map level 4 table) • Base of PML4 in CR3 • Linear address is 48 CR3 (PDPTR)

More Related