למה Core CPU כל יש את אותה מהירות במקום שונים?
אם יש לך אי פעם לעשות הרבה השוואת מחירים עבור מעבד חדש, ייתכן שיהיה לב ליבות כל נראה שיש את המהירות ולא שילוב של אלה שונים. למה? היום של SuperUser Q & A פוסט יש את התשובה לשאלה הקורא סקרן.
מפגש השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה מחודשת של Stack Exchange, קיבוץ מונחה על ידי הקהילה של אתרי אינטרנט של Q & A.
השאלה
SuperUser הקורא ג'יימי רוצה לדעת למה ליבות מעבד כל יש את אותה מהירות במקום אלה שונים:
באופן כללי, אם אתה קונה מחשב חדש, היית לקבוע איזה מעבד לקנות מבוסס על עומס העבודה הצפוי עבור המחשב. הביצועים במשחקי וידאו נוטים להיות נקבעים על ידי מהירות הליבה אחת, ואילו יישומים כמו עריכת וידאו נקבעים על ידי מספר הליבות. במונחים של מה זמין בשוק, כל המעבדים נראה שיש בערך באותה מהירות עם ההבדלים העיקריים להיות יותר הליכי משנה או יותר ליבות.
לדוגמה:
- Intel Core i5-7600K, תדר בסיס 3.80 GHz, 4 ליבות, 4 פתילים
- Intel Core i7-7700K, תדר בסיס 4.20 GHz, 4 ליבות, 8 חוטים
- AMD Ryzen 5 1600X, תדר בסיס 3.60 GHz, 6 ליבות, 12 חוטים
- AMD Ryzen 7 1800X, תדר בסיס 3.60 GHz, 8 ליבות, 16 חוטים
מדוע אנו רואים דפוס זה של ליבות גוברות, אך כל הליבות בעלות מהירות שעון זהה? מדוע אין גרסאות עם מהירויות שעון שונות? לדוגמה, שתי ליבות "גדולות" והרבה ליבות קטנות.
במקום זאת, למשל, ארבע ליבות ב 4.0 GHz (כלומר 4 × 4 GHz, מקסימום 16 GHz), מה לגבי מעבד עם שתי ליבות שפועלות ב 4.0 GHz וארבע ליבות שפועלות במהירות של 2.0 GHz (כלומר 2 × 4.0 GHz + 4 × 2.0 GHz, מקסימום 16 GHz)? האם האפשרות השנייה תהיה טובה באותה מידה בעומסי עבודה מתוברגים בודדים, אך עשויה להיות טובה יותר בעומסי עבודה מרובי הליכי משנה?
אני שואל את זה כשאלה כללית ולא במיוחד לגבי המעבדים המפורטים לעיל או על עומס עבודה ספציפי אחד. אני רק סקרן לדעת למה הדפוס הוא מה שהוא.
למה ליבות מעבד כל יש את אותה מהירות במקום אלה שונים?
התשובה
לנושא Superuser bwDraco יש את התשובה עבורנו:
זה ידוע בשם רב הטרוגני עיבוד (HMP) והוא מאומץ באופן נרחב על ידי התקנים ניידים. במכשירים מבוססי ARM המיישמים את big.LITTLE, המעבד מכיל ליבות עם ביצועים שונים ופרופילים כוחיים, כלומר כמה ליבות לרוץ מהר אבל לצייר הרבה כוח (ארכיטקטורה מהירה ו / או שעונים גבוהים יותר) בעוד אחרים הם חסכוניים באנרגיה אבל איטי ( ארכיטקטורה איטית יותר ו / או שעונים נמוכים יותר). זה שימושי כי צריכת החשמל נוטה להגדיל באופן לא פרופורציונלי כפי שאתה להגדיל את הביצועים ברגע שאתה מקבל בעבר נקודה מסוימת. הרעיון כאן הוא לקבל ביצועים כאשר אתה צריך את זה ואת חיי הסוללה כאשר אתה לא.
על פלטפורמות שולחן העבודה, צריכת החשמל היא הרבה פחות בעיה, אז זה לא באמת הכרחי. רוב היישומים מצפים שכל ליבה תהיה בעלת מאפייני ביצועים דומים, ותהליכי תזמון עבור מערכות HMP מורכבים הרבה יותר מאשר תזמון למערכות סימטריות מרובות-עיבוד (SMP) מסורתיות (טכנית, ל- Windows 10 יש תמיכה ב- HMP, אך הוא מיועד בעיקר לניידים התקנים המשתמשים ב- ARM big.LITTLE).
כמו כן, רוב המעבדים השולחניים והמחשבים הניידים כיום אינם מוגבלים מבחינה תרמית או חשמלית עד לנקודה שבה חלק מהליבות צריכות לרוץ מהר יותר מאחרים, אפילו לפריצות קצרות. יש לנו בעצם פגע קיר על כמה מהר אנחנו יכולים לעשות ליבות בודדים, ולכן החלפת כמה ליבות עם לאט יותר לא יאפשר ליבות הנותרים לרוץ מהר יותר.
אמנם יש כמה מעבדים שולחניים כי יש ליבות אחת או שתיים מסוגל לרוץ מהר יותר מאשר לאחרים, יכולת זו מוגבלת כיום כמה מעבדי אינטל גבוהה מאוד (המכונה Turbo Boost Max טכנולוגיה 3.0) ורק כרוך רווח קל ב ביצועים אלה ליבות כי יכול לרוץ מהר יותר.
אמנם ניתן בהחלט לעצב מעבד x86 מסורתי עם שתי ליבות גדולות ומהירות, ליבות קטנות ואטיות יותר כדי לייעל עומסי עבודה בעלי עומסים כבדים, הדבר יוסיף מורכבות רבה לתכנון המעבד וליישומים שאינם צפויים לתמוך בו כראוי.
קח מעבד היפותטי עם שתי ליבות מהיר Kaby לייק (דור 7) ליבות ושמונה Goldmont לאט (Atom) ליבות. היו לך סך של 10 ליבות, ועומס העבודה בכבדות הליכי אופטימיזציה עבור סוג זה של המעבד עשוי לראות רווח בביצועים ויעילות מעל נורמלי ארבע ליבות מעבד Kaby Lake. עם זאת, סוגים שונים של ליבות יש רמות ביצועים שונות בפראות, ואת הליבות האיטיות אפילו לא תומך כמה הוראות ליבות תמיכה מהירה, כמו AVX (ARM נמנע בעיה זו על ידי המחייב הן ליבות גדולות LITTLE לתמוך באותן הוראות ).
שוב, רוב היישומים מבוססי Windows מרובי הליכי משנה מניחים שלכל ליבה יש אותה רמה או כמעט אותה רמת ביצועים ויכולים לבצע את אותן ההוראות, כך שסוג זה של אסימטריה עשוי לגרום לביצועים לא-אידיאליים, אולי אפילו קריסות אם הוא משתמש בהוראות שאינן נתמכות על ידי הליבות האיטיות יותר. בעוד אינטל יכולה לשנות את הליבות האיטיות כדי להוסיף תמיכה הוראה מתקדמת, כך שכל ליבות יכול לבצע את כל ההוראות, זה לא יפתור בעיות עם תמיכה בתוכנות עבור מעבדים הטרוגניים.
גישה אחרת לעיצוב יישומים, קרוב יותר למה שאתה כנראה חושב על השאלה שלך, ישתמש GPU להאצת חלקים מקבילים מאוד של יישומים. ניתן לעשות זאת באמצעות APIs כמו OpenCL ו- CUDA. לגבי פתרון שבב יחיד, AMD מקדמת תמיכה בחומרה עבור האצת GPU ביחידות APU שלה, המשלבת מעבד מסורתי ו- GPU משולב בעל ביצועים גבוהים לאותו שבב, כמו ארכיטקטורת המערכת ההטרוגנית, אם כי זה לא ראה ספיגה תעשייתית רבה של כמה יישומים מיוחדים.
יש לך משהו להוסיף להסבר? נשמע את ההערות. רוצה לקרוא תשובות נוספות ממשתמשים אחרים בעלי ידע טכנולוגי מתמצא? בדוק את נושא הדיון המלא כאן.
קרדיט תדמית: מירקו וולטרמן (פליקר)