Emulatori RISC-V në formën e një pixel shader-i, që bëri të mundur nisjen e Linux në VRChat

Rezultatet e eksperimentit për organizimin e nisjes së Linux brenda një hapësire 3D virtuale të lojës multiplayer online VRChat, e cila lejon ngarkimin e modeleve 3D me shaderat e saj, janë publikuar. Për realizimin e ideve të menduara, u krijua një emulator i arkitekturës RISC-V, i cili ekzekutohet në anën e GPU-së si një shader pikseli (fragmenti) (VRChat nuk mbështet shaderat e llogaritjes dhe UAV). Kodi i emulatorit është publikuar nën licencën MIT.

Emulatori bazohet në një implementim në gjuhën C, në krijimin e të cilit u përdorën, në mënyrë të veçantë, arritjet e një emulatori minimalistik riscv-rust, që po zhvillohet në gjuhën Rust. Kodi i përgatitur në C përkthyer në një shader pikseli në gjuhën HLSL, i cili është i përshtatshëm për ngarkim në VRChat. Në emulator ofrohet mbështetje e plotë për arkitekturën e setit të komandave rv32imasu, blloku i menaxhimit të memories SV32 dhe një grup minimal i pajisjeve periferike (UART dhe timer). Mundësitë e përgatitura janë të mjaftueshme për ngarkimin e kernels Linux 5.13.5 dhe mjedisit bazë të linjës së komandave BusyBox, me të cilin mund të ndërveprohet drejtpërdrejt nga botë virtuale e VRChat.

Emulatori RISC-V në formën e një pixel shader-i, që bëri të mundur nisjen e Linux në VRChat
Emulatori RISC-V në formën e një pixel shader-i, që bëri të mundur nisjen e Linux në VRChat

Emulatori Ă«shtĂ« realizuar nĂ« shader nĂ« formĂ«n e njĂ« teksture dinamike tĂ« personalizuar (Unity Custom Render Texture), e cila Ă«shtĂ« plotĂ«suar me skriptat e ofruara pĂ«r VRChat Udon, qĂ« janĂ« angazhuar pĂ«r tĂ« menaxhuar emulatorin gjatĂ« ekzekutimit tĂ« tij. PĂ«rmbajtja e memories operative dhe gjendja e procesorit tĂ« sistemit tĂ« emuluar ruhen nĂ« formĂ«n e njĂ« texture me pĂ«rmasa 2048×2048 piksel. Procesori i emuluar punon me njĂ« frekuencĂ« prej 250 kHz. PĂ«rveç Linux, nĂ« emulator gjithashtu mund tĂ« ekzekutohet Micropython.

Emulatori RISC-V në formën e një pixel shader-i, që bëri të mundur nisjen e Linux në VRChat

Për organizimin e ruajtjes së përhershme të të dhënave me mbështetje për lexim dhe shkruarje, aplikohet një truk që lidhet me përdorimin e objektit Camera, i lidhur me një zonë katrore, e cila gjenerohet nga shaderi, dhe drejtimin e output-it të teksturës së vizatuar në hyrje të shaderit. Kështu, çdo piksel i shkruar gjatë ekzekutimit të shaderit të pixelit mund të lexohet gjatë përpunimit të kornizës tjetër.

Kur përdoren shaderat e pixelëve, një instancë e veçantë e shaderit ekzekutohet paralelisht për secilën pixel të teksturës. Ky veçorim e komplikon ndjeshëm realizimin dhe kërkon koordinimin e veçantë të gjendjes së gjithë sistemit të emuluar dhe përputhjen e pozitat e pixelit të përpunuar me gjendjen e koduar të CPU-së ose përmbajtjen e RAM-it të sistemit të emuluar (çdo pixel mund të kodojë 128 bit informacioni). Kodi i shaderit kërkon gjithashtu përfshirjen e një numri të madh kontrollesh, për realizimin e të cilave është përdorur preprocessori perl-video perlpp.

Luaj videon


Burimi: opennet.ru
Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster