15Aug

איך אתה מחשב מהירות מעבד על מעבדים מרובי ליבות?

הופעת מעבדי הליבה הרב-ליבה של צרכנים מעלים את השאלה עבור משתמשים רבים: כיצד אתה מחשב ביעילות את המהירות האמיתית של מערכת מרובת ליבות?האם מערכת 3GHZ של 4 ליבות באמת 12GHZ?המשך לקרוא תוך כדי בדיקה.

שאלה של היום &מפגש תשובה מגיע אלינו באדיבות SuperUser - חלוקה מחודשת של Stack Exchange, קיבוץ קהילתי של אתרי Q & A.

השאלה

SuperUser הקורא NReilingh היה סקרן כיצד מהירות המעבד עבור מערכת מרובת ליבות מחושב למעשה:

האם נכון לומר, למשל, כי מעבד עם ארבע ליבות כל פועל ב 3GHz הוא למעשה פועלב 12GHz?

פעם נכנסתי לתוך "מק מול PC" טיעון( אשר אגב לא את המוקד של נושא זה. .. זה היה בחזרה בבית הספר התיכון) עם מכר שהתעקש כי Mac היו רק להיות מפרסם כמכונות 1GHZ כי הם היוכפול G4s מעבד כל פועל ב 500MHz.

באותו זמן ידעתי את זה כדי להיות hogwash מסיבות אני חושב נראים לעין רוב האנשים, אבל אני רק ראיתי תגובה באתר זה השפעה של "6 ליבות x 0.2GHz = 1.2Ghz" וזה גרם לי לחשוב שוב עלאם יש תשובה אמיתית לכך.

אז, זו שאלה טכנית יותר פילוסופית / עמוקה טכנית לגבי הסמנטיקה של חישוב מהירות השעון.אני רואה שתי אפשרויות:

  1. כל ליבה היא למעשה עושה x חישובים לשנייה, ולכן המספר הכולל של חישובים הוא x( ליבות).
  2. מהירות השעון היא ספירה של מספר המחזורים שהמעבד עובר בחלל השני, כל עוד כל הליבות פועלות באותה מהירות, המהירות של כל מחזור שעון נשארת ללא שינוי כמה ליבותקיימים.במילים אחרות, Hz =( core1Hz + core2Hz +. ..) / ליבות.

אז מהי הדרך המתאימה לציין את מהירות השעון הכוללת, וחשוב יותר, האם זה אפילו אפשרי להשתמש יחיד הליבה מהירות nomenclature על מערכת מרובת ליבות?

תשובה

תורמים SuperUser Mokubai עוזר לנקות את העניינים.הוא כותב:

הסיבה העיקרית מדוע מעבד מרובע ליבות 3GHz הוא אף פעם לא מהר כמו ליבה אחת 12GHz הוא לעשות עם איך המשימה פועלת על המעבד עובד, כלומר חד הליכי משנה או מרובי הליכי.חוק אמדאהל חשוב כאשר בוחנים את סוגי המשימות שאתה מפעיל.

אם יש לך משימה שהיא ליניארית מטבעית ויש לעשות בדיוק צעד אחר צעד כגון( תוכנית פשוטה למדי)

10: a = a 20 20: goto 10

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

עכשיו לקחת משימה כגון:

10: a = a + 1 20: b = b + 1 30: c = c + 1 40: d = d + 1 50: goto 10

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

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

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

הטענה של "6 ליבות x 0.2GHz = 1.2Ghz" היא אשפה בכל מצב, למעט כאשר המשימות מקבילות באופן מושלם ובלתי תלוי.ישנם מספר רב של משימות שאינן מקבילות מאוד, אבל הם עדיין דורשים צורה כלשהי של synchronsation.בלם יד הוא trancoder וידאו כי הוא טוב מאוד בכל שימוש במעבדים זמין אבל זה דורש תהליך הליבה כדי לשמור על הנושאים אחרים מלאים נתונים ולאסוף את הנתונים שהם עושים עם.

  1. כל ליבה היא למעשה עושה x חישובים לשנייה, ולכן המספר הכולל של חישובים הוא x( ליבות).

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

  1. מהירות השעון היא ספירה של מספר המחזורים שהמעבד עובר בחלל השני, כך שכל עוד הליבות פועלות באותה מהירות, המהירות של כל מחזור שעון נשארת זהה, בלי קשר למספר הליבותקיימים.במילים אחרות, Hz =( core1Hz + core2Hz +. ..) / ליבות.

אני חושב שזה כשל לחשוב כי 4 x 3GHz = 12GHz, העניק את המתמטיקה עובד, אבל אתה משווה תפוחים לתפוזים ואת הסכומים פשוט לא צודקים, GHz לא יכול פשוט להוסיף יחד עבור כל מצב.הייתי לשנות את זה ל 4 x 3GHz = 4 x 3GHz.

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