הם הצליחו להריץ לינוקס על אמולטור RISC-V ב- VRChat

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

הניסוי הזה זה נעשה על VRChat המאפשר טעינת דגמי תלת -ממד עם שיידרס משלהם. כדי ליישם את הרעיון שהגה, נוצר אמולטור המבוסס על ארכיטקטורת RISC-V אשר מבוצע בצד ה- GPU בצורה של שיידר פיקסל.

על הפרוייקט

האמולטור מבוסס על היישום בשפת C, שיצירתו, בתורו, השתמשה בפיתוחים של אמולטור החליפה המינימליסטי-חלודה, אשר בתורו מפותח בשפת Rust. קוד C המוכן מתורגם לצלחת פיקסלים בשפת HLSL, המתאימה להטענה ל- VRChat.

האמולטור מספק תמיכה מלאה בארכיטקטורת ערכות ההוראות rv32imasu, יחידת בקרת הזיכרון SV32 וסט מינימלי של ציוד היקפי (UART וטיימר). יכולות מוכנות מספיקות כדי לטעון את ליבת ליבת לינוקס 5.13.5 ואת סביבת שורת הפקודה הבסיסית של BusyBox, איתה תוכל לקיים אינטראקציה ישירות מעולם וירטואלי VRChat.

בסביבות מרץ 2021 החלטתי לכתוב אמולטור המסוגל להריץ ליבת לינוקס מלאה ב- VRChat. בשל המגבלות הטמונות בפלטפורמה זו, הכלי שנבחר היה חייב להיות צל. ואחרי כמה חודשים של עבודה אני גאה להציג את אמולטור ה- RISC-V הראשון בעולם (שאני יודע עליו) במצלמת פיקסלים מסוג HLSL המסוגלת לפעול עד 250 קילוהרץ (ב- 2080 Ti) ו אתחול Linux 5.13.5 עם תמיכה ב- MMU.

האמולטור מיושם בשיידר בצורה של מרקם דינאמי משלו (Unity Custom Render Texture), בתוספת סקריפטים של Udon המסופקים ל- VRChat, המשמשים לשליטה על האמולטור בזמן ריצה.

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

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

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

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

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

תכונה זו מסבכת באופן משמעותי את היישום ודורשת תיאום נפרד של המצב של כל המערכת החיקויה והשוואת המיקום של הפיקסל המעובד עם מצב המעבד או תכולת ה- RAM של המערכת החקויה המקודדת בה (כל פיקסל יכול לקודד 128 סיביות של מֵידָע).

במקרה זה, קוד Shader מחייב הכללה של מספר רב של בדיקות, כדי לפשט את היישום שבו נעשה שימוש ב- Perl Processor PerlProcessor.

למי שכן מתעניין במפרט מוזכר כי:

  • הקוד נמצא ב- GitHub
  • 64MB של זיכרון RAM פחות מצב מעבד מאוחסן במרקם בפורמט שלם של 2048 × 2048 פיקסלים (128 bpp)
  • מרקם עיבוד מותאם אישית של אחדות עם החלפת מאגר מאפשר מצב קידוד / פענוח בין מסגרות
  • מצלמת פיקסלים משמשת להדמיה כמחשוב וצללי UAV אינם נתמכים על ידי VRChat

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


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.