דף הבית » איך ל » מתי מטמון של מעבד מבושל חזרה לזיכרון הראשי?

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

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

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

    השאלה

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

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

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

    התשובה

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

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

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

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

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

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

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

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

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

    והתשובה האחרונה שלנו מקימברלי W:

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

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


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

    זיכוי תמונה: Lemsipmatt (Flickr)