עבור לתוכן

שאלה כללית לגבי מעבד

Featured Replies

פורסם

זה מבלבל אותי העניין של ליבה פיזית ווירטואלית CORE THREADS

יש מעבד למשל 3770 יש לו 4 ליבות ו 8 טרידס

עכשיו כל מעבד בא עם THREADS אחד ו HT נותן 2 במקום אחד

זאת אומרת מעבד למשל G2020 יש לו 2 ליבות פיזיות ועוד 2 טרידס זה לא אמור להיות כמו 4 ?

וה 3770 מגיע עם 4 ועוד 8 טרידס בגלל ה HT זה לא אמור להיות 12 ? איך זה 8 ? למה סה"כ הליבות זה לפי הטרידס ? לא מחברים את הליבות הפיזיות + הטרידס ?

פורסם

1) למעבד G2020 יש רק 2 ליבות ואין לו ליבות מדומות.

2) למה אתה שואל את זה כל כך הרבה פעמים? לא צריך להיות טרול.

פורסם
  • מחבר

רשום 2 פיזי 2 מדומה

http://ark.intel.com/products/71070/Intel-Pentium-Processor-G2020-3M-Cache-2_90-GHz

תסתכל בעצמך

[TABLE=class: specs infoTable, width: 531]

[TR=class: tech]

[TD=class: lc]# of Cores[/TD]

[TD=class: rc]2[/TD]

[/TR]

[TR=class: tech odd]

[TD=class: lc]# of Threads[/TD]

[TD=class: rc]2[/TD]

[/TR]

[/TABLE]

- - - תגובה אוחדה: - - -

THREADS זה לא מדומה ?

פורסם

למה אתה שואל את זה?

פורסם
THREADS זה לא מדומה ?

המילה Threads היא תהליכונים, דובי אמנם כתב "מדומות" אבל גם משתמשים לפעמים במילה "נימים".

בכל מקרה אם היה כתוב בThreads את המספר 4 אז זה אומר שהיה למעבד את טכנולוגיית הHyper-threading כמו במעבדי הi3/i7(בדרך כלל) וכתוב גם בחלק של הטכנולוגיות המתקדמות(Advanced Technologies) במה המעבד תומך ובמה לא וכמו שאפשר לראות הוא לא

cZcZul2.jpg

הינה הסבר על Hyper-threading שיכול לעזור(בתקווה שהשפה לא תהווה מכשול)

נערך על-ידי rony2

פורסם

דובי, אל תהיה קשוח עם הנער..

בכל אופן נער,

לכל ליבה חייב להיות לפחות thread אחד, שמזין אותה במידע שאיתו היא עובדת.

אם יש לך שתי ליבות, המינימום (במעבדי אינטל) יהיה 2 threads/נימים/ליבות מדומות/קרקרים עגולים/פרות משה רבינו

במעבדים שיש בהם HP או Hyper-Threading יש שני threads לכל ליבה אמיתית. כלומר, שני נימי תעבורה שיזינו את הליבה במידע כדי להגדיל יעילות.

אז אם כתוב לך:

2 ליבות

2 threads

זה אומר אומר שלכל ליבה יש את המינימום - 1 thread.

לא מחברים אותם ביחד.

ב-core i7 3770 יש 4 ליבות עם 2 threads כל אחת, ולכן כתוב שיש 8 threads סה"כ.

יש?

נערך על-ידי gtrippleg

פורסם

בכל מקרה, משווים ביצועים של מעבד מול מעבד ולא נתונים יבשים

פורסם

הנושא כאן הוא למעשה ליבות פיזיות לעומת ליבות לוגיות.

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

בקישור הזה מצאתי תמונה של מעבד מסדרת Core i5-700:

corei5750_wafer.jpg

כאן אפשר לראות שלמעבד יש 4 יחידות או ליבות עיבוד פיזיות (החלקים שמסומנים ב Core).

כאשר מופעל ה Hyper Threading (במעבדי אינטל בלבד), כל ליבה פיזית מתפקדת כ-2 ליבות לוגיות, כלומר הדבר מאפשר למעבד לעבוד עם 2 יישומים או תהליכים במקביל. כמובן שלא מדובר בעבודה במקביל לחלוטין כמו במקרה של עבודה ב-2 ליבות פיזיות שונות, אלא יותר באופטימיזציה של אופן הטיפול בקוד כך שכמה שיותר פקודות יעובדו בליבה בכל רגע נתון. תחשוב לדוגמא על פס ייצור עם 10 פועלים, שכל אחד מהם מבצע פעולה מסויימת על המוצר - בזמן שהמוצר מטופל ע"י פועל מסויים, שאר הפועלים לא עושים דבר, וזה לא יעיל. לכן אפשר לדאוג שבכל רגע נתון כל פועל יטפל במוצר אחר, וכך היעילות של פס הייצור תגדל (ברגע שפועל מספר 1 מסיים את העבודה שלו, הוא מעביר את המוצר לפועל 2 ואז לוקח מייד מוצר אחר ומתחיל לעבוד עליו).

בסופו של דבר ה Hyper Threading הוא אופטימיזציה של ה pipeline (או "פס הייצור") שיש בכל ליבה, כך שהיעילות של כל ליבה פיזית גדלה והיא מסוגלת לטפל ב-2 תהליכים נפרדים ב"מקביל" (זה לא בדיוק במקביל כי בתחנה האחרונה בכל מחזור אתה מקבל "מוצר סופי" אחד בלבד ולא שני "מוצרים סופיים" כפי שהיית מקבל אילו עשית שימוש ב-2 פסי ייצור נפרדים). בנוסף יש להבין כי יש תקורה (overhead) כלשהי כאשר אתה מחליף בין תהליכים נפרדים באותה ליבה פיזית, כך שאתה לא יכול לקבל 100% שיפור בביצועים (תחשוב על זה כאילו כל פועל בפס הייצור צריך לבזבז זמן על החלפת כלים בהתאם לסוג המוצר עליו הוא עובד).

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

לסיכום - אם במעבד יש X ליבות פיזיות, אז הוא מסוגל לטפל ב X תהליכים במקביל. אם באותו מעבד מופעל ה Hyper Threading, אז כל ליבה פיזית מוצגת כ-2 ליבות לוגיות, כך שאתה רואה 2X ליבות במערכת ההפעלה, דבר שמאפשר לשלוח 2X תהליכים לעיבוד במעבד. זה לא יעיל כמו מעבד עם 2X ליבות פיזיות, אבל בד"כ זה יהיה שיפור לעומת טיפול רק ב-X תהליכים במקביל.

נערך על-ידי smalul

פורסם
  • מחבר

עכשיו עוד שאלה : למעבד 3770 יש L3 8MB זאת אומרת שכל ליבה מדומה מקבלת 1M או ? שה L3 קשור רק לליבות פיזיות ? משמע כל ליבה שווה 2M ?

פורסם

זיכרון L3 הוא זיכרון המשותף לכל הליבות - אם למעבד מסויים יש 8MB של זיכרון מטמון מסוג L3, אז יש לו רק 8MB של זיכרון מטמון מסוג L3 וכל הליבות יכולות לגשת לאותם 8MB.

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים