שיחת טלפון עם איתמר, אתו עבדתי באינטל עד לפני כעשור, הזכירה לי שהתכוונתי לכתוב, אחרי שאפרוש, כמה רשומות על רעיונות כאלה ואחרים שהיו לי במהלך עשרים ושתיים שנות עבודתי שם, רעיונות שבזמנו חשבתי שהם נהדרים, מגניבים אפילו, ושעם חלוף השנים היו לי מחשבות שניות לגביהם.
הצרות שיש לאינטל בשנים האחרונות, בפיתוח דורות חדשים של טכנולוגית יצור, ושעליהן קראתי בעיתונות המקצועית של התחום (ממנה לא לגמרי התנתקתי) גרמו לי לחזור ולחשוב על התחום בו עבדתי, ולנסות, במבט לאחור, להבין אם מה שאני עשיתי שם היה בכוון שהביא את אינטל לצרותיה הנוכחיות, או לא.
אין בכוונתי לטעון שיש רק סיבה אחת לפיגור אליו נקלעה החברה שתמיד הובילה כמעט בשנות דור (כלומר שנתיים) את תעשיית המוליכים למחצה (צ'יפים). יתכן שפשוט לא לעולם חוסן, ושאי אפשר לנצח תמיד ובכל מצב. ונכון שמסירת הנהלת החברה לידי אנשי כספים ולא אנשי מקצוע, תרמה לזלזול מסויים בחשיבות של השקעה בפיתוח טכנולוגיה. אבל יש לי השערה אחרת.
אז ככה: זו תעשיה שבה מספר הטרנזיטורים העומדים לרשות המהנדסים בצ'יפ אחד מוכפל מדי שנתיים, פשוט כי המימד של כל טרנזיסטור מתכווץ כל שנתיים בשורש ריבועי של שתיים (השטח קטן פי שתיים). מה עושים עם כל הטרנזיסטורים האלה? יש לכך שתי תשובות אפשריות.
האפשרות שבה נקטה אינטל הייתה לנסות ולתרגם את התקציב הגדל של טרנזיסטורים לביצועים גבוהים יותר, ולא סתם ביצועים גבוהים יותר, אלא בעיקר ביצועים של thread אחד ויחיד, כלומר חוט יחיד של פקודות שבו יש מידה מאד מצומצמת של מקביליות. יש לזה שתי בעיות: ההספק (החום) שכל הטרנזיסטורים אלה מייצרים לא ניתן לפיזור, לבטח לא במחשבים ניידים שנעשים יותר דקים וקלים כל הזמן, ושחיי הסוללה שלהם משמעותיים למשתמש. וכמו כן, יש תמורה שולית פוחתת להשקעה בביצועים מסוג זה. הרבה יותר טרנזיסטורים מספקים מדור לדור של מעבדים פחות ופחות תוספת של ביצועים.
גם השקעה של תקציב הטרנזיסטורים במספר גדל והולך של מעבדים במקביל, כיוון שאליו אינטל די נגררה בעל כורחה, כי ביצועי חוט פקודות יחיד היו די ענין אמוני אצלה, לא פותר את בעיית ההספק. פשוט אי אפשר להפעיל כל כך הרבה טרנזיסטורים במקביל בכל המהירות שאליה הם מסוגלים להגיע.
אז מה כן?
האפשרות השניה היא להשתמש בטרנזיסטורים המתווספים מדי דור למימוש פונקציות שלא עובדות באותו הזמן. אינטגרציה של פונקציות. זה מה שעושות חברות כמו Qualcomm, המתכננות רכיבים לטלפונים סלולריים, שוק שאינטל בזמנו סירבה לקחת ברצינות. גם אינטל עושה זאת במידה מסויימת עם אינטגרציה של מאיץ גרפי. יתכן שחלק מהפונקציות הממומשות פועלות רק אחוז קטן מהזמן, או לעתים נדירות, אבל זה בסדר, זה מה שהטכנולוגיה "דורשת". וזה מה שלא נראה לי בסדר בזמנו, כשהייתי ארכיטקט של המעבדים של אינטל.
באותם השנים הייתי שבוי בקונספציה שהכל יכול וצריך להיות ממומש על ידי מעבדים שמריצים תוכנה. ולכן הייתה למשל תקופה לא קצרה שבה חקרתי (ונתנו לי לחקור, בנחת אפילו – זה אחד הדברים המעולים באינטל) איך אפשר לממש טכנולוגיות תקשורת שונות, חוטיות ואל-חוטייות בתוכנה, על ידי תוספת של מספר קטן של פקודות למעבד שיהיו מותאמות לפונקציות שונות המשמשות במערכות תקשורת. היה לי מאד מעניין לחקור את זה, והגעתי לפתרונות יפים ודי יעילים ללא מעט מהבלוקים השונים המרכיבים מערכות תקשורת שהיו בשיא הטכנולוגיה של אותם הזמנים בעזרת תוספת די צנועה של חומרה למעבד לטובת מספר לא גדול של פקודות חדשות. אבל אינטל יצאה מתחום רכיבי תקשורת, אחרי שקנתה המון חברות שפעלו בתחום, וסגרה אותן.
בדיעבד אני שמח שרעיונותי אלה לא התממשו. כי זה היה רק גורם לאותם הטרנזיסטורים שהיו מושקעים בתוספת הפקודות המיוחדות דנן למעבד לעבוד בו-זמנית עם שאר הטרנזיסטורים של המעבד ובכך מחריפים את מצוקת פיזור ההספק והחום.
לעומת זאת, אם רכיבי התקשורת האלו ממומשים בחומרה, ורק נמצאים לצד המעבד ולא חלק ממנו, הרבה יותר קל לפזר את ההספק, וגם – ללא ספק מימוש חומרה יעודי יהיה תמיד יותר יעיל אנרגטית, גם אם פחות יעיל במספר טרנזיסטורים – יחסית למימוש שרובו בתכנה.
אז זה העניין – להיות יעיל במספר הטרנזיסטורים זה לא המדד הנכון. אבל זה מה שניסיתי לעשות באינטל. וזה מה שרבים מעמיתי עשו גם הם. ויש בליבי חשד שהסיבה שאינטל כשלה בפיתוח טכנלוגית יצור מתקדמת, ובמקום להיות בהובלה של שנה-שנתיים עברה לפיגור של שנתיים-שלוש, הייתה קשורה בזה שהיא לא הצליחה, במגבלות ההספק והפיזיקה, למצוא שימוש של ממש ליותר טרנזיסטורים שדורות חדשים של טכנולוגית יצור מספקים. אחרים, שהיו בעסקי האינטגרציה, של system on a chip, כן ידעו מה לעשות עם תועפות הטרנזיסטורים שטכנולוגית יצור מתקדמת יותר נותנת, ולכן גם עשו מה שנדרש לעשות כדי שתהיה בידם טכנולוגיה שכזו.
בהמשך, כשניסיתי להבין למה מעבדים לעיבוד אותות כל כך יעילים באנרגיה, פיתחתי רעיון אחר, שקראתי לו data ports ושאם אינטל הייתה מאמצת אותו, היה לה משהו מועיל לעשות בכל אותם טרנזיטורים נוספים. אבל זה כבר יהיה ברשומה אחרת, אולי.
גד – העובדות נכונות. התופעה שאתה מזכיר, והכיוון לפתרון, הוצגו לפני מעל 10 שנים במאמר הנקרא
Dark silicon and the end of multicore scaling https://ieeexplore.ieee.org/document/6307773
הנקודה היתה ידועה (אם אנחנו מוגבלים בהספק, מה שחשוב לביצועים זה אנרגיה למשימה). אינטל האמינה עדיין שאפשר להמשיך לשפר את ה-X86 למרות זאת.
שני דברים שקרו מאז לרעת אינטל – עלייתו של ה GPGPU ו CUDA כפתרון די כללי להרבה בעיות – ובמיוחד אפליקציות Deep Learning, וירידת הערך של תאימות ל X86. יש בטח עוד דברים…
תודה על המאמר! אם יש לך גישה למאמר המלא, אשמח לקבלו
גם המאמר הזה זמין ב- https://sci-hub.se