מה זה Cache ולמה הוא משנה הכל?
תוכן עניינים
מה זה Cache ולמה הוא משנה הכל?
לצד הליבות, יש חלק קריטי במעבד שנקרא Cache - והוא הסוד למהירות.
למה בכלל צריך אותו?
הגישה לזיכרון הראשי (RAM) איטית בהרבה מהחישובים שהמעבד מבצע. לכן כל מעבד כולל זיכרון קטן ומהיר במיוחד - ה-cache - שבו הוא שומר נתונים שהוא משתמש בהם שוב ושוב.
למעשה, כשמודל עושה inference, הוא לא ניגש כל פעם לזיכרון הראשי. הנתונים והמשתנים שהוא צריך הכי הרבה מאוחסנים ב-cache, וכך נחסך זמן יקר.
סוגי Cache
יש כמה “שכבות” של cache:
- L1 - הכי קטן והכי מהיר, צמוד ממש לליבה.
- L2 - גדול יותר אבל מעט איטי יותר.
- L3 - משותף לכל הליבות, משמש לשיתוף מידע ביניהן.
למה זה חשוב ל-Inference?
אם threads שונים נודדים בין ליבות, הם מאבדים את ה-cache שלהם - וזה גורם לביצועים לקפוץ למעלה ולמטה.
זו אחת הסיבות שבגללן חשוב להבין Thread Affinity (הצמדת משימה לליבה קבועה) - עליה נעמיק בפוסט הבא.
📚 פוסטים נוספים בסדרה: אופטימיזציה של חומרת הסקה
- חלק 1 למה בכלל צריך להבין חומרה כשעוסקים באופטימיזציות Inference?
- חלק 2 מה זה NUMA ולמה זה חשוב באופטימיזציות Inference?
- חלק 3 מה זה ליבות (Cores) ו-Threads?
- חלק 5 חלקת ליבות איך לנהל נכון את כח העיבוד שלך
- חלק 6 Thread Affinity - How to Bind Cores Smartly
- חלק 7 Divided Resources - איך מחלקים משאבים בין מודלים או תהליכים
- חלק 8 Resource Optimization - איך כל הגורמים משפיעים בפועל על Latency ו-TPS
- חלק 9 סיכום הסדרה: מ-NUMA ועד Throughput - איך אופטימיזציה הופכת חומרה לביצועים