محاكي RISC-V على شكل تظليل بكسل يسمح لك بتشغيل Linux في VRChat

تم نشر نتائج تجربة تنظيم إطلاق نظام التشغيل Linux داخل المساحة الافتراضية ثلاثية الأبعاد للعبة VRChat متعددة اللاعبين عبر الإنترنت، والتي تتيح تحميل النماذج ثلاثية الأبعاد باستخدام تظليلاتها الخاصة. لتنفيذ الفكرة المتصورة، تم إنشاء محاكي بنية RISC-V، يتم تنفيذه على جانب وحدة معالجة الرسومات في شكل تظليل بكسل (جزء) (لا يدعم VRChat التظليل الحسابي والطائرات بدون طيار). يتم نشر رمز المحاكي بموجب ترخيص MIT.

يعتمد المحاكي على تطبيق بلغة C، والذي تم بدوره استخدام تطورات المحاكي البسيط riscv-rust، الذي تم تطويره بلغة Rust. تتم ترجمة كود C المجهز إلى تظليل بكسل في HLSL، وهو مناسب للتحميل في VRChat. يوفر المحاكي الدعم الكامل لبنية مجموعة تعليمات rv32imasu، ووحدة إدارة الذاكرة SV32، ومجموعة صغيرة من الأجهزة الطرفية (UART والمؤقت). الإمكانيات المعدة كافية لتحميل Linux kernel 5.13.5 وبيئة سطر أوامر BusyBox الأساسية، والتي يمكنك من خلالها التفاعل مباشرة من عالم VRChat الافتراضي.

محاكي RISC-V على شكل تظليل بكسل يسمح لك بتشغيل Linux في VRChat
محاكي RISC-V على شكل تظليل بكسل يسمح لك بتشغيل Linux في VRChat

يتم تنفيذ المحاكي في التظليل في شكل نسيج ديناميكي خاص به (Unity Custom Render Texture)، مكملاً بنصوص Udon المقدمة لـ VRChat، المستخدمة للتحكم في المحاكي أثناء تنفيذه. يتم تخزين محتويات ذاكرة الوصول العشوائي (RAM) وحالة المعالج للنظام الذي تمت محاكاته في شكل مادة بحجم 2048 × 2048 بكسل. يعمل المعالج الذي تمت محاكاته بتردد 250 كيلو هرتز. بالإضافة إلى Linux، يمكن للمحاكي أيضًا تشغيل Micropython.

محاكي RISC-V على شكل تظليل بكسل يسمح لك بتشغيل Linux في VRChat

لإنشاء مخزن بيانات مستمر مع دعم القراءة والكتابة، تتمثل الحيلة في استخدام كائن كاميرا مرتبط بمنطقة مستطيلة تم إنشاؤها بواسطة التظليل وتوجيه إخراج النسيج المعروض إلى إدخال التظليل. بهذه الطريقة، يمكن قراءة أي بكسل مكتوب أثناء تنفيذ تظليل البكسل عند معالجة الإطار التالي.

عند تطبيق تظليل البكسل، يتم تشغيل مثيل تظليل منفصل بالتوازي لكل بكسل نسيج. تعمل هذه الميزة على تعقيد التنفيذ بشكل كبير وتتطلب تنسيقًا منفصلاً لحالة النظام الذي تمت محاكاته بالكامل ومقارنة موضع البكسل المعالج مع حالة وحدة المعالجة المركزية المشفرة فيه أو محتويات ذاكرة الوصول العشوائي للنظام الذي تمت محاكاته (يمكن لكل بكسل ترميز 128 أجزاء من المعلومات). يتطلب رمز التظليل تضمين عدد كبير من عمليات التحقق، لتبسيط التنفيذ الذي تم استخدام معالج Perl المسبق Perlpp فيه.



المصدر: opennet.ru

إضافة تعليق