האם אנחנו באמת צריכים כל כך הרבה xPUs?

עדכון: 17 בנובמבר 2021

"בשנים האחרונות יצאו הכרזות על ארכיטקטורות מעבדים חדשות כמעט מדי יום, עם ראשי תיבות של שלוש אותיות – TPU, IPU, NPU. אבל מה באמת מייחד אותם? האם באמת יש כל כך הרבה ארכיטקטורות מעבדים ייחודיות, או שקרה משהו אחר?

"

בשנים האחרונות יצאו הכרזות על ארכיטקטורות מעבדים חדשות כמעט מדי יום, וניתן ראשי תיבות של שלוש אותיות-TPU, IPU, NPU. אבל מה באמת מייחד אותם? האם באמת יש כל כך הרבה ארכיטקטורות מעבדים ייחודיות, או שקרה משהו אחר?

בשנת 2018, ג'ון ל. הנסי ודיוויד א. פטרסון נתנו הרצאת טיורינג שכותרתה "תור הזהב החדש של ארכיטקטורת מחשבים". הם מודאגים מהמעבד ומהפיתוח שלו, אבל זה רק חלק קטן מהמשוואה כולה. חוקר IP ואדריכל המערכת של Arteris, מייקל פרנק, אמר: "מנקודת מבט של CPU, רוב ה-xPUs הללו אינם מעבדים אמיתיים." "הם יותר כמו GPU, מאיץ לעומסי עבודה מיוחדים. ויש להם הרבה גיוון בפנים. למידת מכונה היא סוג של מעבד, אתה יכול לקרוא להם מאיצי למידת מכונה ביחד, אבל הם מאיצים את חלק העיבוד של מגוון של."

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

ארכיטקטורות חדשות רבות אינן מעבדים בודדים. "מה שאנחנו רואים זה שילוב של סוגים שונים של מעבדים או מנועים ניתנים לתכנות שקיימים באותו SoC או באותה מערכת", אמר פייר-קסבייר תומס, מנהל הקבוצה של Cadence טכנולוגיה ושיווק אסטרטגי. "חלק משימות תוכנה לחומרה שונה או למנועי תכנות גמישים. כל המעבדים עשויים לחלוק API משותף, אך תחום הביצוע יהיה שונה. כאן, אכן תראו סוגים שונים של עיבוד עם סוגים שונים של מאפיינים."

המציאות היא שרוב השמות הם שיווקיים.

"הנקודה היא שאנשים משתמשים בשמות ובראשי התיבות האלה לשתי מטרות שונות", אמר סיימון דוידמן, מנכ"ל Imperas Software. "אחד משמש כדי להסביר את הארכיטקטורה של המעבד, כגון SIMD (Single Instruction Multiple Data). השני מגדיר את מקטע היישום אליו הוא פונה. אז זה יכול להגדיר את ארכיטקטורת המעבד, או משהו כמו שמות מותגים של יחידת עיבוד טנזור (TPU). הם קוראים לארכיטקטורות ההטרוגניות או ההומוגניות שלהם, לא למעבדים בודדים".

קצת היסטוריה

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

הופעתו של RISC-V הביאה תשומת לב רבה ל-ISA. "אנשים רוצים להבין את ISA מכיוון ש-ISA היא שמגדירה את מידת האופטימיזציה של המעבד למשימות מוגדרות", אמר Uhm של Xilinx. "הם יכולים להסתכל על הרשות ולהתחיל את מחזור החישוב. אם ל-ISA יש הוראות מקוריות והוא פועל במהירות 1 גיגה-הרץ, אני יכול להשוות אותו ל-ISA של מעבד אחר, שעשוי לדרוש שתי הוראות עבור אותה פונקציה, אבל המעבד פועל במהירות של 1.5 גיגה-הרץ. איזה מהם גורם לי ללכת רחוק יותר? הם עושים חישובים מתמטיים עבור פונקציות חשובות."

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

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

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

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

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

"עבור סוגים מסוימים של פונקציות, GPUs הם מעבדים חזקים מאוד, אבל הצינורות שלהם ארוכים מאוד", מציין Uhm. "הצינורות האלה מאפשרים ליחידת ה-GPU לעבד נתונים באופן רציף, אבל בשלב מסוים, אם תצטרך לרענן את הצינור, זו תהיה מכה אדירה. הרבה חביון ואי ודאות מובנים במערכת".

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

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

"בשלב זה, NoC נושא רק נתונים", אמר פרנק מ-Arteris. "בעתיד, ניתן להרחיב את ה-NoC לתחומים אחרים שבהם התקשורת בין המאיצים חורגת ממידע. הוא יכול לשלוח פקודות, לשלוח הודעות וכו'. דרישות התקשורת של מערך המאיץ עשויות להיות שונות מדרישות התקשורת של ה-CPU או ה-SoC הסטנדרטי. עם זאת, הרשת בשבב לא תגביל אותך לקבוצת משנה. אתה יכול לייעל ולשפר את הביצועים על ידי תמיכה בצרכי התקשורת המיוחדים של מאיצים."

ארכיטקטורת יישום

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

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

ML הגדילה את הדרישות שלה. "כאשר משתמשים ברשתות עצביות ולמידת מכונה לבניית מערכות חכמות, עליך להשתמש במסגרות תוכנה ובערימות תוכנה כלליות כדי לתכנת את הרשת החדשה ולמפות אותה לחומרה", הוסיף תומס. "אז אתה יכול להתאים את יישום התוכנה לחומרה הנכונה מנקודת מבט של PPA. זה מניע את הצורך בסוגים שונים של עיבוד ומעבדים כדי להיות מסוגלים לענות על צרכים אלה ברמת החומרה."

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

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

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

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

חלק מהתהליך דורש חלוקה למחיצות. "אין סוג מעבד יחיד שניתן לבצע אופטימיזציה עבור כל משימת מעבד-FPGA הוא לא טוב, המעבד לא טוב, ה-GPU לא טוב, DSP הוא גם הכרחי", אמר Uhm. "יצרנו סדרה של מכשירים המכילים את כל אלה, אבל החלק הקשה בצד הלקוח הוא שהם צריכים לספק מודיעין כדי לקבוע אילו חלקים של המערכת הכוללת יהיו ממוקדים למעבד או להיגיון הניתן לתכנות, או ב-AI מנוע. כולם רוצים את כלי הקסם האוטומטי הזה, כלי שיכול מיד להחליט לשים אותו על המעבד, לשים אותו על ה-FPGA ולשים אותו על ה-GPU. הכלי הזה לא קיים היום".

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

שנה "מופשט"

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

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

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

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

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

לסכם

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

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

בשנים האחרונות יצאו הכרזות על ארכיטקטורות מעבדים חדשות כמעט מדי יום, עם ראשי תיבות של שלוש אותיות – TPU, IPU, NPU. אבל מה באמת מייחד אותם? האם באמת יש כל כך הרבה ארכיטקטורות מעבדים ייחודיות, או שקרה משהו אחר?

בשנת 2018, ג'ון ל. הנסי ודיוויד א. פטרסון נתנו הרצאת טיורינג שכותרתה "תור הזהב החדש של ארכיטקטורת מחשבים". הם מודאגים מהמעבד ומהפיתוח שלו, אבל זה רק חלק קטן מהמשוואה כולה. חוקר IP ואדריכל המערכת של Arteris, מייקל פרנק, אמר: "מנקודת מבט של CPU, רוב ה-xPUs הללו אינם מעבדים אמיתיים." "הם יותר כמו GPU, מאיץ לעומסי עבודה מיוחדים. ויש להם הרבה גיוון בפנים. למידת מכונה היא סוג של מעבד, אתה יכול לקרוא להם מאיצי למידת מכונה ביחד, אבל הם מאיצים את חלק העיבוד של מגוון של."

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

ארכיטקטורות חדשות רבות אינן מעבדים בודדים. "מה שאנחנו רואים הוא שילוב של סוגים שונים של מעבדים או מנועים ניתנים לתכנות שקיימים באותו SoC או באותה מערכת", אמר פייר-קסבייר תומס, מנהל קבוצת הטכנולוגיה והשיווק האסטרטגי של קיידנס. "חלק משימות תוכנה לחומרה שונה או למנועי תכנות גמישים. כל המעבדים עשויים לחלוק API משותף, אך תחום הביצוע יהיה שונה. כאן, אכן תראו סוגים שונים של עיבוד עם סוגים שונים של מאפיינים."

המציאות היא שרוב השמות הם שיווקיים.

"הנקודה היא שאנשים משתמשים בשמות ובראשי התיבות האלה לשתי מטרות שונות", אמר סיימון דוידמן, מנכ"ל Imperas Software. "אחד משמש כדי להסביר את הארכיטקטורה של המעבד, כגון SIMD (Single Instruction Multiple Data). השני מגדיר את מקטע היישום אליו הוא פונה. אז זה יכול להגדיר את ארכיטקטורת המעבד, או משהו כמו שמות מותגים של יחידת עיבוד טנזור (TPU). הם קוראים לארכיטקטורות ההטרוגניות או ההומוגניות שלהם, לא למעבדים בודדים".

קצת היסטוריה

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

הופעתו של RISC-V הביאה תשומת לב רבה ל-ISA. "אנשים רוצים להבין את ISA מכיוון ש-ISA היא שמגדירה את מידת האופטימיזציה של המעבד למשימות מוגדרות", אמר Uhm של Xilinx. "הם יכולים להסתכל על הרשות ולהתחיל את מחזור החישוב. אם ל-ISA יש הוראות מקוריות והוא פועל במהירות 1 גיגה-הרץ, אני יכול להשוות אותו ל-ISA של מעבד אחר, שעשוי לדרוש שתי הוראות עבור אותה פונקציה, אבל המעבד פועל במהירות של 1.5 גיגה-הרץ. איזה מהם גורם לי ללכת רחוק יותר? הם עושים חישובים מתמטיים עבור פונקציות חשובות."

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

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

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

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

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

"עבור סוגים מסוימים של פונקציות, GPUs הם מעבדים חזקים מאוד, אבל הצינורות שלהם ארוכים מאוד", מציין Uhm. "הצינורות האלה מאפשרים ליחידת ה-GPU לעבד נתונים באופן רציף, אבל בשלב מסוים, אם תצטרך לרענן את הצינור, זו תהיה מכה אדירה. הרבה חביון ואי ודאות מובנים במערכת".

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

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

"בשלב זה, NoC נושא רק נתונים", אמר פרנק מ-Arteris. "בעתיד, ניתן להרחיב את ה-NoC לתחומים אחרים שבהם התקשורת בין המאיצים חורגת ממידע. הוא יכול לשלוח פקודות, לשלוח הודעות וכו'. דרישות התקשורת של מערך המאיץ עשויות להיות שונות מדרישות התקשורת של ה-CPU או ה-SoC הסטנדרטי. עם זאת, הרשת בשבב לא תגביל אותך לקבוצת משנה. אתה יכול לייעל ולשפר את הביצועים על ידי תמיכה בצרכי התקשורת המיוחדים של מאיצים."

ארכיטקטורת יישום

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

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

ML הגדילה את הדרישות שלה. "כאשר משתמשים ברשתות עצביות ולמידת מכונה לבניית מערכות חכמות, עליך להשתמש במסגרות תוכנה ובערימות תוכנה כלליות כדי לתכנת את הרשת החדשה ולמפות אותה לחומרה", הוסיף תומס. "אז אתה יכול להתאים את יישום התוכנה לחומרה הנכונה מנקודת מבט של PPA. זה מניע את הצורך בסוגים שונים של עיבוד ומעבדים כדי להיות מסוגלים לענות על צרכים אלה ברמת החומרה."

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

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

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

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

חלק מהתהליך דורש חלוקה למחיצות. "אין סוג מעבד יחיד שניתן לבצע אופטימיזציה עבור כל משימת מעבד - FPGA לא טוב, מעבד לא טוב, GPU לא טוב, DSP הוא גם הכרחי", אמר Uhm. "יצרנו סדרה של מכשירים המכילים את כל אלה, אבל החלק הקשה בצד הלקוח הוא שהם צריכים לספק מודיעין כדי לקבוע אילו חלקים של המערכת הכוללת יהיו ממוקדים למעבד או להיגיון הניתן לתכנות, או ב-AI מנוע. כולם רוצים את כלי הקסם האוטומטי הזה, כלי שיכול מיד להחליט לשים אותו על המעבד, לשים אותו על ה-FPGA ולשים אותו על ה-GPU. הכלי הזה לא קיים היום".

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

שנה "מופשט"

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

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

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

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

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

לסכם

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

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