מהו מעבד מרובה ליבות?

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

ליבה אחת

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

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

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

רב ליבות

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

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

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

בעיות תרמיות

אחת הבעיות הגדולות ביותר שמעבדים מרובי ליבות נלחמים איתם בסופו של דבר היא חום. בעוד שליבת מעבד אחת לא מפיקה כל כך הרבה חום, שתיים פולטות יותר. במעבדים בעלי ספירת ליבות גבוהה, ריכוז חום זה יכול לגרום לשעון דחיפה נמוך יותר, מכיוון שה-CPU מנהל את הטמפרטורה שלו. שעון דחיפה נמוך יותר יגרום לביצועים נמוכים יותר ביישומים עם חוט יחיד. לעתים קרובות ניתן לראות זאת במדדים של ביצועי משחקים. משחקי וידאו לרוב תלויים מאוד על שרשור בודד. ככזה, ביצועים עם חוטים בודדים הם לרוב קריטיים למשחקים. מעבדי ספירת ליבות גבוהה, כמו דגמי ספירת 16 ליבות, מגיעים לרוב מפחים בעלי ביצועים גבוהים. למרות זאת, ניתן למצוא באופן קבוע שהם מקבלים ביצועים טובים יותר על ידי מעבדים "פחות" עם ספירת ליבות נמוכה יותר במדדים עם חוטים בודדים. בעיה זו ברורה עוד יותר במעבדי ספירת ליבות גבוהים במיוחד כמו AMD Threadripper בעל 64 ליבות, שם מהירות השעון נמוכה באופן ניכר ממעבדי שולחן עבודה מתקדמים.

הצלחות

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

אפשרויות אדריכליות

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

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

סיכום

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