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