
RISC-V: הביקורת המפורטת של מהנדס על הארכיטקטורה
המהנדס דמיטרי גרינברג פרסם מאמר ארוך שבו הוא טוען כי RISC-V לא יכולה להיות הטובה ביותר גם למיקרו-בקרים זעירים וגם לליבות שרת, וכי המרכיבים האופציונליים שלה הופכים את ההתאמה לתקן לכמעט חסרת משמעות.
המהנדס דמיטרי גרינברג פרסם בבלוג שלו dmitry.gr מאמר ארוך בשם RISC-V: They Should Have Known Better, שבו הוא מרכז במקום אחד את הטיעונים שמאחורי הספקנות שלו כלפי ארכיטקטורת מערכת הפקודות הפתוחה. לדבריו, הוא כתב את הטקסט כדי שבפעם הבאה שיבקשו ממנו להסביר את עמדתו, הוא יוכל להשיב בקישור.
ארכיטקטורה אחת לא יכולה לשרת את כולם
אף מערכת פקודות אינה יכולה להיות הטובה ביותר לכל שימוש, והצרכים של ליבה עתירת ביצועים מנוגדים לחלוטין לאלה של מיקרו-בקר זול. גרינברג צופה ש-RISC-V תשתלט בסופו של דבר על מרחב המיקרו-בקרים החד-פעמיים והזולים, זה שמוחזק כיום בידי 8051 — אך חרף תכנון מערכת הפקודות שלה ולא בזכותו. טיפול בפסיקות ממחיש את הבעיה: מסלול תואם תקן דורש את הרחבת Zicsr ואת אוגרי mscratch או sscratch, ולפי ספירתו הוא עולה לפחות 44 מחזורי שעון לפני ששגרה בשפת C עושה דבר. לעומתו Cortex-M0 נכנס לפסיקה ב-15 מחזורים ויוצא ב-12, כלומר 27, מפני שהוא דוחף את האוגרים באופן חומרתי. אפילו גרסת RV32E עם פחות אוגרים מגיעה ל-38 מחזורים — יותר משליש איטי יותר. עצם קיומם של CLIC והרחבות מהירות קנייניות מצד היצרנים הוא כתב אישום נוסף: מערכת הפקודות הבסיסית מכריחה את היצרנים לבנות סיליקון לא תקני כדי להשיג שוויון עם ליבה בת עשור.
פקודות דחוסות וגישה למערכים
את תכנון הפקודות הדחוסות מחשיב המחבר לחלש במיוחד. פקודת כתיבת בית בת 16 סיביות מקודדת רק היסטים מאפס עד שלוש, כתיבת חצי מילה מציעה אפס או שתיים, וכתיבת מילה מאפשרת מאפס עד 124. Cortex-M0 מתיר היסטים מאפס עד 31 לבתים ומאפס עד 62 לחצאי מילים. יתרה מזו, פקודות כתיבת הבית וחצי המילה אינן חלק מהרחבת C אלא מהרחבה נפרדת בשם Zcb. הבעיה השנייה היא מיעון מבוסס אינדקס: ב-x86 קיים [ebx + esi * 4] וב-ARM קיים [R0, R1, LSL #2], ואילו ב-RISC-V גישה אחת למערך דורשת שלוש פקודות. התירוץ המקובל, שליבות מהירות ימזגו אותן לאחת, חלש לטענתו: שום ליבה מוכרת אינה ממזגת יותר משתי פקודות עוקבות. הרחבת Zba עם פקודות SHxADD אושררה רק ב-2021, יותר משנתיים אחרי המפרט הבסיסי.
הכול אופציונלי
גרינברג משווה את RISC-V ל-USB-C ול-RCS: הצהרה על התאמה לתקן כמעט אינה אומרת דבר, מפני שכמעט הכול אופציונלי. כפל — אופציונלי. חילוק — אופציונלי. מצב משתמש ומצב סופרוויזר, אוגרי CSR ופקודות דחוסות — גם כן. אוגרי ה-CSR שהיו במקור חלק מקבוצת הפקודות הבסיסית הועברו להרחבה נפרדת בשם Zicsr, כך שהיום מערכת הפקודות הבסיסית אינה מסוגלת לא לטפל בפסיקות בדרך תקנית ולא להפריד הרשאות. האוגר שנועד להשיב אם תכונה מיושמת הוא misa — בעצמו CSR, שתמיכתו אופציונלית, ומותר לו להיקרא כאפסים בלבד. כך גם הטיימר המערכתי, שממופה לזיכרון בכתובת שנקבעת על ידי המימוש, וכך שני מצבי הווקטור של הפסיקות, שאף אחד מהם אינו מחייב.
נבחרה בגלל המחיר, לא בגלל האיכות
כל זה אינו אומר ש-RISC-V נידונה, כותב המחבר. הוא צופה שהיא תזכה במרחב המשובץ הזול ותופיע כליבה שולטת לצד מאיצי למידת מכונה, שם המחיר ולא הביצועים של ליבה בודדת הם שקובעים: ARM גובה דמי רישוי, בעוד שמפרט RISC-V חופשי וקיימות ליבות שניתן לרשום ברישיון בחינם. החשוב בעיניו הוא ש-RISC-V לא תפרש זאת כפסק דין על התכנון שלה: בוחרים בה מפני שהיא זולה, ורמת הסף שהיא צריכה לעבור היא רק להיות טובה מספיק.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.