חדשות היום

פרוטוקול ה-AMBA 4 ACE לעיבוד מרובב עם תאימות בזיכרון המטמון

מאת: אשלי סטיבנס, ARM. הצורך המתמשך בשיפור ביצועי המעבדים, תוך הקפאה או הגדלה של ניצולת האנרגיה במטרה להאריך את חיי הסוללה ולצמצם את הצריכה, יוצר דרישה לתהליכי עיבוד חסכוניים. דבר ידוע הוא, שעל מנת לשפר ביצועים עדיף להשתמש בעיבוד מרובב (multiprocessing), מאשר לקחת מעבד יחיד ולמתוח אותו עד לקצה גבול היכולת באמצעות שימוש מוגבר בטרנזיסטורים בהספק נמוך –  טכנולוגיה המשפרת אמנם את יכולת יצירת האנרגיה, למרות דליפה המתלווה לתהליך, אך גורמת לוולטאז’ גבוה.

תוכנה העושה שימוש ברכיבי חומרה מקבילים יכולה לחסוך באנרגיה באמצעות הוספת יחידות עיבוד. עיבוד מרובב שיטתי (SMP) הוא תהליך מקובל – כיום רוב מעבדי Cortex™-A9 של חברת ARM הם מרובי ליבות, חלקם בעלי ליבה כפולה והיתר בעלי מרובעת. בעתיד אנו צפויים להיתקל במערכות על-שבב (SoCs) שיכילו יותר מארבע ליבות. המעבר למעבדי Cortex-A15 של ARM שיפר את הביצועים הפוטנציאליים באופן משמעותי, אך במחיר של יותר טרנזיסטורים. בשילוב המעבר לתהליכים גיאומטרים מצומצמים יותר, כמו ה-32 וה-28 ננומטר, התוצאה היא הגברת הדליפה במקטעים של פעילות נמוכה.

בכדי להאריך את חיי הסוללה במכשירים ניידים, תוך מתן אפשרות ל-CortexA15 להציג ביצועים חזקים יותר באם יידרש, השיקה ARM  את ה-Cortex-A7 MPCore  מעבד קטן ויעיל במיוחד, המסוגל להציע ביצועים מספקים וחסכוניים למשימות רבות. המודל המשותף של ה-2Cortex-A7וה-Cortex-A15 כבר זכה לכינוי “גדול קטן” (bigLITTLE), כאשר אחד או יותר מהמעבדים “הגדולים” בעלי הביצועים הגבוהים מזווג עם אחד או יותר מהמעבדים התואמים “הקטנים”, שביצועיהם נמוכים יותר, אך חסכוניותם גדולה בהרבה. המעבד “הקטן” יכול לשמש להרבה משימות פשוטות, ואילו המעבד “הגדול” נכנס לפעולה רק כאשר נדרש מענה למשימות רבות עוצמה, שהמעבד הקטן אינו יכול לבצע לבדו. מערכת התאימות

לזיכרון מטמון (CoreLink®CCI-400) מקשרת בין שני מקטעי הזיכרון בהם מטפלים המעבדים, בין אם מדובר בשני מקטעי Cortex-A15 או במקטע אחד של Cortex-A15 ובאחד של Cortex-A7. כל מקטע יכול להכיל עד ארבעה מעבדים ותומך בכל המודלים של “גדול קטן”: המתחלף, העיבוד המרובב והמודל הא-סימטרי (הקצאת משימות קבועה).

אתגר התאימות

תאימות (קוהרנטיות) לזיכרון מטמון היא פעולה מתבקשת בכל מערכת מחשוב הכוללת זיכרון מטמון אחד או יותר וישויות רבות החולקות מידע מאותה יחידת זיכרון. שתי בעיות אפשריות עלולות לצוץ בזיכרון המטמון של המעבד. האחת היא עדכון הזיכרון הראשי (בידי מעבד “שולט” אחר) לאחר ביצוע העתקה מזיכרון המטמון. במצב דברים שכזה, זיכרון המטמון אינו מחזיק במידע העדכני ביותר. שנית, מערכות המבצעות “כתיבה חוזרת” של זיכרון המטען ( write-backcache) חייבות להתמודד על מצב שבו ה”שולט” שומר העתק בזיכרון המטמון המצביע לכתובת בזיכרון הראשי שכבר איננה מחזיקה במידע העדכני ביותר, כך שקריאה שנייה מעלה מידע “עבש”.

גישת תאימות מבוססת תוכנה

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

גישת תאימות מבוססת חומרה

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

פרוטוקולי תאימות זיכרון מבוססי טבלה

גישה חלופית היא פרוטוקול התאימות המתבסס על טבלה (directory). מדובר בשיטה שבה ‘טבלה’ אחת מכילה את רשימת כל הכתובות שבהן מוחזקים בלוקי הזיכרון במערכת. שולט המתכוון לבצע פעולה מקדים ומעיין בטבלה בכדי למצוא היכן מוחזק המידע, ואז מבצע תאימות עם השליטים האחרים המחזיקים בעותקי זיכרון מקומיים. ה-®AMBA 4 ACE של חברת ARM הוא פרוטוקול גמיש המאפשר יצירת מערכות המבוססות על גישות ה-snoop או הטבלה, ויכול אף לשמש לגישות היברידיות כמו אלה הכוללות טכניקות snoopfilters.

התאימות ב- מצבי ACE  4 AMBA

פרוטוקול ה- מבוסס על מודל של חמישה מצבים. כל בלוק זיכרון יכול להיות תקף או שגוי, כלומר הוא מכיל את המידע שבזיכרון המטמון או שלא. אם הוא תקף, הוא יכול להימצא באחד מארבעה שלבים המוגדרים על ידי שני קריטריונים. הבלוק יכול להיות ייחודי או משותף, כלומר מדובר במידע לא-משותף בעליל או שקיימת אפשרות שהוא משותף (מרווח הכתובת מסומן כ”משותף”). והבלוק יכול להיות נקי או מלוכלך, שפירושו בכלליות הוא שהזיכרון המרכזי מכיל את המידע העדכני ביותר, וזיכרון המטמון כולל העתק מדויק שלו, או שהוא יכול להיות מלוכלך, כלומר שזיכרון המטמון מכיל את המידע העדכני ביותר, שחייב להיכתב בחזרה אל הזיכרון המרכזי בשלב כלשהו. כאשר המידע משותף, כל יחידות זיכרון המטמון חייבות לכלול את המידע העדכני ביותר בכל זמן, אך רק לאחת מותר להיות במצב “מלוכלך”‘, כלומר עליה לבצע כתיבה חוזרת של המידע לזיכרון הראשי.

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

יישום מערכת ה- ACE

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

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

MEI, בהן כל פעולות ה-snoop הסתיימו בכתיבה חוזרת של מידע לזיכרון המרכזי כשהדאגה העיקרית הייתה בהשגת דיוק רב ככל האפשר, ה-ACE תוכנן לאפשר ביצועים גבוהים וחיסכון באנרגיה ע”י הימנעות מכניסות חיצוניות לזיכרון שאינן הכרחיות. ה-ACE  מפשט ככל האפשר את מעבר המידע בין שליט לשליט. מאחר וכניסות חיצוניות (אל השבב) צורכות כמות אנרגיה הגדולה בעשרה מונים מכניסות זיכרון בתוך השבב, יכולה המערכת לצמצם באורח ניכר את צריכת האנרגיה ולשפר ביצועים.

ערוצים וסימנים גראפיים נוספים ב-ACE

ה-AMBA 4 ACE מותאם לעבוד עם קלט הפרוטוקול הקודם AMBA 4 AXI, ומוסיף לממשק הישן סימנים גרפיים וערוצים. ממשק ה-AXI מורכב מחמישה ערוצים, כאשר כל אחד משני ערוצי הקריאה והכתיבה אוחזים בכתובת ובערוץ בקרה משלהם. החמישי הוא ערוץ BRESP המעניק אינדיקציות לסיומן של פעולות כתיבה לזיכרון. למידע נוסף על ממשק ה-AXI הורד את המפרט מאתר ARM.

ה-ACE הוסיף שלושה ערוצים לתגבור פעולות התאימות, וכן מספר סימנים גרפיים לערוצים הקיימים. הערוץ הראשון שנוסף הוא ACADDR המספק כתובות snoop לשליט. הערוץ השני הוא CRRESP, בו משתמש השליט בכדי לסמן למערכת התאימות את התגובה ל-snoop. הערוץ השלישי הוא  CDDATA, ובו שולח השליט את המידע שהשיג ה-snoop לשליט שהתחיל את הפעולה ו/או לזיכרון חיצוני.

פעולות ה-

AMBA 4 ACE

ה-

ACE מוסיף מספר רב של פעולות חדשות לפרוטוקול AMBA 4. בכדי להבין אותן לעומק, עדיף לחלקן לקבוצות. מידע לא משותף  Nonshared

הקבוצה הראשונה מתייחסת למידע שאינו משותף וכוללת פעולות כמו ReadNoSnoop ו-WriteNoSnoop. מדובר בפרוטוקולים הזהים לאפשרויות שמציע ה-AXI לקריאה וכתיבה ללא Snoop ותאימות.

מידע שאינו בזיכרון המטמון ReadOnce  היא פעולה שמבצע שליט המעוניין לקרוא מידע משותף מבלי ליצור עותק. כלומר, השליטים האחרים, שכן מחזיקים בעותק בזיכרון המטמון, אינם צריכים לשנותו.  דוגמה לכך יכולה להיות שבב תצוגה הקורא מיחידת אחסון של מידע גראפי (framebuffer). בגרסת ה-ACE-Lite נעשה שימוש ב- ReadOnce על ידי השליטים לקריאות של מידע משותף.

פעולת WriteUnique מתבצעת כאשר שליטים כותבים מידע משותף לזיכרון הראשי, כלומר כל שאר העותקים בזיכרונות המטמון חייבים להימחק. כל עותק “מלוכלך” חייב להיכתב לזיכרון הראשי, ועל כל העותקים ה”נקיים” לאבד מתוקפם.

פעולה WriteLineUnique זהה ל-WriteUniqueמלבד בדבר אחד: היא תמיד מתבצעת על בלוק שלם בזיכרון המטמון.

הערה: פעולות Read, Write,  ReadOnce ו-WriteUnique יכולות להתבצע רק על מידע שאינו תופס בלוק שלם בזיכרון המטמון.

קריאת מידע שניתן לשתף (ShareableRead)

השימוש בפעולת ReadShared נעשה לקריאות שניתן לשתף, כאשר השליט יכול לקבל מידע מזיכרון המטמון בכל מצב שהוא. ReadClean מיועדת לקריאות שניתן לשתף, בהן השליט מעוניין בעותק “נקי” של בלוק הזיכרון, הפעולה אינה מקבלת מידע במצב “מלוכלך”, המצריך כתיבה חוזרת לזיכרון הראשי.

  

ReadNotSharedDirty

מכוונת לקריאות שניתן לשתף כאשר השליט יכול לקבל מידע מזיכרון המטמון בכל מצב שהוא, מלבד SharedDirty (“מלוכלך” משותף), כלומר המודל שבו משתמשים הוא MESI ולא MOESI. מעבד CortexA15 פועל לפי מודל MESI ולכן יכול לעשות שימוש ב-ReadNotSharedDirty לצורך קריאות משותפות.

כתיבת מידע שניתן לשתף (ShareableWrite)

הערה: פעולות בקבוצת “כתיבת המידע שניתן לשתף” מתבצעות למעשה בערוץ הקריאה מאחר והן מתאפשרות רק כאשר ניתנת הזכות לכתוב בלוק זיכרון במהלך הכתיבה חוזרת לזיכרון הראשי.

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

ReadUnique

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

פעולת

CleanUnique מיועדת לכתיבות שורה חלקיות, שאותן השליט כבר מחזיק בעותק בזיכרון המטמון שלו. היא זהה
ל-
ReadUnique בכל, מלבד העובדה שאינה זקוקה לקרוא את התוכן מהזיכרון הראשי ועליה רק להבטיח שהמידע ה”מלוכלך” ייכתב בחזרה ושהתוקף יוסר מכל שאר העותקים האחרים.

כדאי לשים לב לכך שאם מצוי מידע מידע “מלוכלך” בזיכרון מטמון אחר (כלומר במצב

SharedDirty), השליט שיזם את פעולת CleanUnique יימצא במצב SharedClean, ויחזיק ברשותו עותק עדכני של המידע. זאת מאחר ופרוטוקול ACE מוודא שכל העותקים ה”מלוכלכים” של שורה מסוימת בכל זיכרונות המטמון יהיו זהים בכל זמן. ניתן להשתמש ב-ReadUnique במקום ב-CleanUnique, כפי שעושה מעבד
ה-
CortexA15, אך במחיר של קריאות זיכרון לא נחוצות.

פעולות כתיבה חוזרת

(Write-back transactions)

WriteBack

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

WriteClean

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

פינוי שורה אין משמעותו כתיבה חוזרת. המושג ‘פינוי’ (

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

תחזוקת זיכרון המטמון (CacheMaintenance)

CleanShared

  CleanInvalid  מנקה את זיכרון המטמון וגורמת לכל עותק “מלוכלך” להיכתב בחזרה לזיכרון הכללי, כך שכל השורות הופכות ל”נקיות”.

דומה ל-CleanShared אך כוללת גם שלילת התוקף מהעותקים לאחר ביצוע הכתיבה החוזרת.

 MakeInvalid  היא הוצאה מתוקף של כל העותקים בזיכרון המטמון, כאשר במקביל לא מתבצעת כל כתיבה חוזרת לזיכרון הראשי, אפילו לא של מידע “מלוכלך”.

התאימות הקלט-פלט של גרסת

ה –  ACELite

גרסת ה- ACE-Lite  יכולה לבצע רק את הפעולות הנכללות בקבוצות, Non-Shared  Non-cached ו-CacheMaintenance.

 ה-ACELite מאפשרת לשליטיה לבצע פעולות snoop על השליטים של ACE, כך שממשקים כמו GigabitEthernet, לדוגמה, יכולים לבצע בזיכרון המטמון פעולות קריאה וכתיבה של מידע המופיע גם ביחידת העיבוד המרכזית. במבט קדימה, ה-ACELiteהיא הטכניקה המועדפת לתאימות קלט-פלט וכדאי להשתמש בה במקום ה- (AcceleratorCoherencyPort) לשיפור הביצועים והקטנת צריכת האנרגיה. מעבד ה-CortexA15 יכול לתמוך בטכנולוגיית ה-ACP עבור תוכניות כמו legacyIP שאינן תואמות ל-ACELite או כאלו המשודרגות ממעבדים רב-ליבתיים אחרים, כגון ה- CortexA9.

חסמים

במערכות בהן התקשורת בין זיכרונות משותפים אינה מתפקדת כיאות, נדרשים חסמים להבטחת פעילות תקינה. ארכיטקטורת ARM מגדירה שני סוגי חסמים: DMB  ו-DSB. חסם  (DataMemoryBarrier) מבטיח שכל פעולות הזיכרון שהתבצעו לפני כניסתו לתמונה יהיו שקופות לשליטים אחרים. השימוש בחסם   (datasynchronizationbarrier) נעשה כאשר כל הפעולות הקודמות הושלמו

.

זיכרון וירטואלי
מבוזר (TLB)

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

 – זיכרון המטמון שמשמש לשיפור מהירות הפענוח של כתובות וירטואליות. כאשר אחד השליטים מעדכן את טבלאות הכתובות, הוא צריך לשלול את תוקפם של TLBs שייתכן ומחזיקים בעותקים “עבשים” של הטבלאות. התמיכה בזיכרון וירטואלי מבוזר (DVM – Distributedvirtualmemory) בפרוטוקול ACE מתבטאת בשידור הודעות השוללות את תוקפן של שורות זיכרון. הודעות DVM יכולות לתמוך בפסילת TLBs, ניבוי התפצלות (branchpredictor), שלילת תוקפן של הוראות בזיכרון הפיזי או הווירטואלי וסינכרוניזציה בין מעבדים.

סיכום

ה-ACE מוסיף תמיכה בתאימות המערכתית, מעבר למה שמצוין במפרט התכונות של ה-AMBA 4.

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

ה-ACE עוצב לתמוך במגוון רחב של מעבדים שליטים בעלי יכולות שונות, ולא רק בליבות עיבוד כמו של ה-Cortex-A15.

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

 

תגובות סגורות