20Aug

מתי מטמון של מעבד סמוק חזרה לזיכרון ראשי?

click fraud protection

אם אתה רק מתחיל ללמוד כיצד ריבוי ליבות CPU, מטמון, קוהרנטיות המטמון, ואת הזיכרון עובד, זה אולי נראה קצת מבלבל בהתחלה.אם כבר מדברים על זה, היום של SuperUser Q & פוסט יש תשובות לשאלה הקורא סקרן.השאלה של

של היום &מפגש תשובה מגיע אלינו באדיבות SuperUser - חלוקה של סטאק שערי, קהילה מונחה קיבוץ של Q & אתרי אינטרנט.

השאלה

SuperUser הקורא CarmeloS רוצה לדעת מתי מטמון של CPU הוא סומק בחזרה לזיכרון הראשי:

אם יש לי מעבד עם שתי ליבות וכל הליבה יש מטמון L1 משלה, האם זה אפשרי כי Core1 ו Core2 הן מטמון זההחלק מהזיכרון באותו זמן?אם זה אפשרי, מה יהיה הערך של הזיכרון הראשי אם Core1 ו Core2 יש לערוך את הערכים שלהם במטמון?

מתי מטמון ה- CPU מסמיק בחזרה לזיכרון הראשי?

תשובה

תרומות SuperUser דוד שוורץ, sleske, וקימברלי W יש את התשובה עבורנו.קודם כל, דוד שוורץ:

אם יש לי מעבד עם שתי ליבות וכל הליבה יש מטמון L1 משלה, האם זה אפשרי כי Core1 ו Core2 הן מטמון את אותו חלק של זיכרון באותו זמן?

כן, הביצועים יהיה נורא אם זה לא היה המקרה.שקול שני נושאים שרצים את אותו קוד.אתה רוצה את הקוד בשני מטמוני L1.

instagram viewer

אם זה אפשרי, מה יהיה הערך של הזיכרון הראשי אם Core1 ו Core2 יש לערוך את הערכים שלהם במטמון?

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

ואחריו התשובה sleske:

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

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

הבעיה נקראת קוהרנטיות המטמון ואת המאמר ויקיפדיה בנושא יש סקירה יפה של הבעיה ופתרונות אפשריים.

והתשובה האחרונה שלנו מ- Kimberly W:

כדי לענות על השאלה בכותרת ההודעה שלך, זה תלוי במה פרוטוקול המטמון.אם זה כתוב בחזרה, המטמון יהיה רק ​​סומק בחזרה לזיכרון הראשי כאשר בקר המטמון אין ברירה אלא לשים בלוק מטמון חדש בחלל כבר תפוס.הבלוק שכבש בעבר את החלל הוסר וערכו כתוב חזרה לזיכרון הראשי.

פרוטוקול אחר הוא לכתוב דרך.במקרה זה, בכל פעם בלוק המטמון כתוב ברמה n , בלוק המקביל על ברמה n + 1 מעודכן.זה דומה במושג למלא טופס עם נייר פחמן מתחת;כל מה שאתה כותב על הדף מועתק על הסדין למטה.זה איטי יותר כי זה כמובן כרוך יותר פעולות הכתיבה, אבל הערכים בין המטמון הם עקביים יותר.בתרשים החזרה, רק המטמון ברמה הגבוהה ביותר יהיה בעל הערך העדכני ביותר עבור בלוק זיכרון מסוים.

יש משהו להוסיף להסבר?נשמע את ההערות.רוצה לקרוא תשובות נוספות ממשתמשים אחרים בעלי ידע טכנולוגי?בדוק את נושא הדיון המלא כאן.

תמונה אשראי: Lmsipmatt( Flickr)