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

Slides:



Advertisements
מצגות קשורות
הכרת תוכנת בקרים. כניסה לתוכנה תתבצע בשלבים הבאים: 1
Advertisements

אוגרים ומונים – Registers & Counters
אוגרים ומונים – Registers & Counters
תכנות בשפת C תרגול 11 - קבצים.
פרסום וקידום מכירות בכל שלב במחזור חיי המוצר, משתנה מדיניות התקשורת השיווקית שלו. פרט את מטרת התקשורת השיווקית בשלושה שלבים במחזור חיי מוצר כלשהו שתבחר.
© Keren Kalif JPA קרן כליף.
SQL: שינוי מסד הנתונים- פעולותDDL , DML
הרצאה 02 סוגי משתנים קרן כליף.
מכטרוניקה.
נושא השקופית מס' השקופית
ניווט רובוט מסוג ROOMBA במרחב ממופה
מבנה מחשבים ספרתיים זיכרון מטמון - המשך
תרגול מס' 1: מנהלות חזרה על ארכיטקטורת ה- MIPS
סוגים של מזגנים.
Trends in Periodic Table Properties
תרגול 11 מלכודות בניית ה-Debugger
Operating Systems 2019, I. Dinur , D. Hendler and M. Kogan-Sadetsky
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
Isotopes and Atomic Mass
OOO Execution of Memory Operations
Marina Kogan Sadetsky –
מטרת פרויקט "שיעורים פרטיים ברשת"
על הקשר בין אופק מאורעות ותרמודינמיקה (עמוס ירום בהנחיית רמי ברושטיין)
Jump tables, review questions
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תוכנה 1 בשפת Java שיעור מספר 13: "אל תסתכל בקנקן"
Entity Relationship Diagram – ERD
"הפתרון הסופי" חלק ג' וועדת ואנזה 1942
Out Of Order Execution (Part 1)
OOO Execution of Memory Operations
פיתוח מערכת מידע איך ???.
Carry Save Adder (CSA).
רובוטיקה תרגול שימוש בלולאות
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מבוסס על שקפים מאת יאן ציטרין
זיכרון מטמון 1 מבנה מחשבים ספרתיים
זיכרון מטמון 2 מבנה מחשבים ספרתיים
הרצאה 10: אלגוריתמי מיון רקורסיביים Merge sort ו-Quick sort
תורת הקומפילציה תרגול 9: תרגום לקוד ביניים
הכנה למבחן.
יישומון הר לעמק 2019 הוראות הפעלה.
מבוא לתכנות למערכות מידע
Computer Architecture and System Programming Laboratory
SQL - כתיבת שאילתות למתחילים
Branch Prediction בעריכת אורן קצנגולד Updated by Franck Sala.
Branch Prediction Oren Katzengold, Franck Sala, Elad Shtiegmann.
Marina Kogan Sadetsky –
CLI vs GUI.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מי רוצה להיות צלם מיליונר ?
אוטומטים ושפות פורמליות
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
מבנה כללי של היררכיית הקבצים עבור המסלול /A/B.txt
מבוא למדעי המחשב סמסטר ב' – 2008 מרצה: יעל סיגל מתרגל: ענבל בודובסקי.
מצביעים Pointers – המשך...
Data Structures, CS, TAU, Perfect Hashing
לבית: המשיכו וקראו עד סוף פרק א' נושא תנועה.
מבוסס על שקפים מאת יאן ציטרין
Tutorial #10 MIPS commands
תרגול מס' 2: Data and Control Hazards
OOO Execution of Memory Operations
אי-שיוויון קלאוזיוס עד עתה מצאנו ניסוחים כמותיים לשינוי באנטרופיה בתהליכים קוואזיסטאטיים. מה קורה בתהליכים שאינם קוואזיסטאטיים? הקושי עם תהליך שאינו קוואזיסטאטי.
מבנה מחשבים ספרתיים תרגול מס' 4: זכרון מטמון 2.
ניהול שינויים במחסן נתונים יש עומק היסטורי הארגון משתנה במשך הזמן
מערכת הערעורים מסכי סטודנטים.
GSW Technology GSW-322M.
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
Java Programming רשימות מקושרות - המשך
הפונקציה מחזירה את מספר התווים במחרוזת נתונה.
תמליל מצגת:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Physical addr. = PFN + offset PTBR = 0x1000 (00201200) : 94 00 01 C0 Virtual Addr: 30 bits Physical Addr: 32 bits 0 22 23 25 26 27 30 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:

PTBR = 0x1000 (00201200) : 94 00 01 C0 Virtual Addr: 30 bits Physical Addr: 32 bits 0 22 23 25 26 27 30 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

VPN offset 1 A 01 0000 0001 000 1010 מציאת כתובת ה- PTE: VPN*4 PTBR = 0x1000 (00201200) : 94 00 01 C0 Virtual Addr: 30 bits Physical Addr: 32 bits 0 22 23 25 26 27 30 31 PFN Unused Modified Protection Valid PTE: 1 A 01 0000 0001 000 1010 Virtual Addr: VPN offset מציאת כתובת ה- PTE: VPN*4 010 0000 0000 0010 0000 0000 + PTBR 0000 0000 0000 0001 0000 000 =PTE 010 0000 0001 0010 0000 0000 =0x00 2 0 1 2 0 0

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

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

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

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

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 כתובת פיזית

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

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

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 , זמן הפגיעה במטמון יתקצר.