nec_000 פורסם 2017 במאי 27 Share פורסם 2017 במאי 27 כידוע, בתעשיית השבבים בין שהיו אלו מעבדים כלליים CPU או מעבדים גראפיים GPU, פותחה לפני שנים רבות טכניקה להנצלת שבבים פגומים, כאלו שבעבר היו נזרקים לפח שכן רק שבב שהוא 100% תקין היה בר שימוש. עם השנים פיתחו שיטה בה הטופולוגיה של השבב מאפשרת נעילת חלקים ספציפיים בו, כאלו שיש מהן יתירות, וכך השבב נשאר פעיל ושמיש אך בתפוקה מופחתת יכולות - משום שלא כל חלקיו של השבב היו פעילים. אם בעבר מתוך wafer שלם נגיד רק 30% מהשבבים נולדו שלמים ושמישים, אז זרקו לפח 70%. אך משעברו לשיטה החדשה, יכלו להנציל אחוז גדול מהשבבים שפעם נזרקו לפח, ולהעלות את אחוז השבבים השמישים לערכים גדולים בסדר גודל מכך. אותה שיטה משמשת כיום את AMD בייצור מעבד Ryzen, על פי התורה הבאה. ראשית להבנה איך השבב בנוי: השבב למעשה מורכב פנימית "משני מעבדים מרובעי ליבות" - כל אחד נקרא CCX, המחוברים זה לזה באמצעות bus ייחודי לתצורה של הדור הטכנולוגי הזה (על היתרונות והחסרונות הגלומים בשיטה זו). למעשה שבב Ryzen מסמלץ שני מעבדי 4 ליבות על יחידת סיליקון אחת כדלקמן: אותם שבבים שהם 100% תקינים, משווקים כ- Ryzen 7 - סדרה של מעבדי 8 ליבות Ryzen 1700/1700x/1800x . בשיטה זו שני חצאי השבב (חצי ימני וחצי שמאלי) קרי שני CCX-ים פעילים במלואם ולכן התצורה היא 4+4. אך אותם שבבים שבהם נפל פגם בליבה אחת במי מהצדדים, או אחת פגומה בכל צד, משווקים כ- ryzen 5 1600/1600x מה שנקרא מעבד 6 ליבות, כזה שבכל אחד מצדדיו (בכל אחד מה CCX-ים) נעולה ליבה אחת. מה שנקרא תצורה 3+3. אותם השבבים שבהם באחד מהצדדים יש 2 ליבות פגומות, ו/או פגם עד שתי ליבות גם בצד השני, משווקים כסדרת ryzen 5 1400/1500x מה שנקרא מעבד 4 ליבות, כזה שבכל אחד מצדדיו (בכל אחד מה CCX-ים) נעולות שתי ליבות. מה שנקרא תצורה 2+2. בשיטה זו, AMD מצליחה להנציל נתח כביר מסך השבבים שהיא מייצרת, ובכך להגיע ל- yield גבוה. נתונים שפורסמו מדברים על yield שהוא מעל 80%. אלמנט זה בתורו מוזיל את העלות הסופית ליצרן, ומכך מאפשר את התמחור האטרקטיבי שניתן לגלגל לצרכן. להלן לינק לסקירה קצרה בנושא: http://www.legitreviews.com/amd-ryzen-5-cores-are-disabled-in-symmetrical-pairs_192827 Ryzen 7 1800X: 8 cores (4+4), 16 threads, 16MB L3, 4MB L2, 3.6GHz to 4GHz, $499 Ryzen 7 1700X: 8 cores (4+4), 16 threads, 16MB L3, 4MB L2, 3.4GHz to 3.8GHz, $399 Ryzen 7 1700: 8 cores (4+4), 16 threads, 16MB L3, 4MB L2, 3GHz to 3.7GHz, $329 Ryzen 5 1600X: 6 cores (3+3), 12 threads, 16MB L3, 3MB L2, 3.6GHz to 4GHz, $249 Ryzen 5 1600: 6 cores (3+3), 12 threads, 16MB L3, 3MB L2, 3.2GHz to 3.6GHz, $219 Ryzen 5 1500X: 4 cores (2+2), 8 threads, 16MB L3, 2MB L2, 3.5GHz to 3.7GHz, $189 Ryzen 5 1400: 4 cores (2+2), 8 threads, 8MB L3 (split 4MB per CCX), 2MB L2, 3.2GHz to 3.4GHz, $169 במהלך הרבעון הקרוב AMD תשיק את סדרת מעבדי ryzen 3. לא ידוע בשלב זה האם מדובר יהיה באותה פיסת סיליקון של 8 ליבות רק כך כשהיא נעולה עוד יותר, או בפיסת סיליקון חדשה, שהיא למעשה חצי הגודל של ryzen. קרי פיסת סיליקון שנולדה במקור עם 4 ליבות ולא 8 ( CCX יחיד ). כמו כן סדרת ה- threadripper וסדרת EPYC, מעבדי 16 ו- 32 ליבות בהתאמה, למעשה מתבססות על אותו מעבד ryzen 7 בעל 8 הליבות, רק שאיחדו 2 (threadripper) או 4 (epyc) שבבי ryzen על סוקט בודד, וחברו אותם זה לזה באמצעות bus ייעודי לתצורה הזו. כך נראה מעבד EPYC 32 ליבות, שלמעשה מהווה חיבורם יחדיו של 4 מעבדי ryzen 7: השיטה של AMD (שהיא שונה מהשיטה של אינטל), מאפשרת למעשה בצורה סקלבילית לייצר הרכבים שונים מאותו מעבד, וכך בזכות yield מאד גבוה שנולד משיטה זו, להשתמש כמעט בכל שבבי הסיליקון שמייצרים, ובכך להוזיל את העלות הסופית משמעותית. לתצורה כאמור יתרונות ברורים בזירת העלות תועלת, על חשבון מספר פשרות ברובד אחר (נתיב התעבורה של ה- bus המחבר בין התת מעבדים). על פניו השיטה בה בחרו AMD מסתמנת ככזו, שנותנת להם יתרון יחסי אל מול אינטל בתוצאת העלות ייצור ליחידת עיבוד. הפשרה בביצועי ה- bus שמחבר בין התת מעבדים עד כה, לא הצליחה לגרום לפגיעה ממשית או מדידה בביצועים הפרקטיים, ומשכך מסתמנת כגישה נבונה ומודרנית לנושא העיבוד המקבילי. אם התוכנות (ו/או מערכת ההפעלה) מודעות לנושא, ובהתאם מתוכנתות נבון בחלוקת הפרוססים שלהם על פני המיקום הגאוגראפי המתאים במי מהמעבדים, אז הרווח גדול. מה שנקרא: ל- ryzen צריך לתכנת אופטימיזיה בקוד, וכך לעקוף אי אלו מגבלות של bus בין התת מעבדים שלו. משמע שלא לשים פרוססים תלויים זה בזה ואשר צריכים IO כבד בינהם, על ליבות זרות שאינן באותו תת מעבד 4 ליבות המכונה CCX. זה אינו דבר קשה ליישום, אלא רק דורש מחשבה עקרונית וקנפוג מתאים של process id למספר הליבה הנכונה. המתכנת יודע איזה פרוסס תלוי בכבדות באמצעות IO לפרוסס אחר. **אנו עוד נראה אופטימיזציות בנושא זה ברבעונים הקרובים שכן הן קלות למימוש בקוד. קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.