Ata arritën të drejtojnë Linux në një emulator RISC-V në VRChat

Disa ditë më parë rezultatet e një eksperimenti u publikuan organizimi i bazuar në nisjen e Kernel Linux brenda hapësirës virtuale 3D e një loje në internet multiplayer.

Ky eksperiment Shtë bërë në VRChat e cila lejon ngarkimin e modeleve 3D me shaderët e tyreMe Për të zbatuar idenë e konceptuar, u krijua një emulator i bazuar në arkitekturën RISC-V i cili ekzekutohet në anën e GPU në formën e një mbrojtës pixel.

Rreth projektit

Emulatori bazohet në zbatimin në gjuhën C, krijimi i të cilit, nga ana tjetër, përdori zhvillimet e emulatorit minimalist të riscv-rust, i cili nga ana tjetër është zhvilluar në gjuhën Rust. Kodi C i përgatitur përkthehet në një mbrojtës pikseli në gjuhën HLSL, i përshtatshëm për ngarkim në VRChat.

Emulator siguron mbështetje të plotë për arkitekturën e grupit të udhëzimeve rv32imasu, njësia e kontrollit të kujtesës SV32 dhe një grup minimal periferikësh (UART dhe kohëmatësi). Aftësitë e përgatitura janë të mjaftueshme për të ngarkuar kernel Linux 5.13.5 dhe mjedisin bazë të linjës së komandës BusyBox, me të cilën mund të ndërveproni drejtpërdrejt nga bota virtuale VRChat.

Rreth marsit 2021, vendosa të shkruaj një emulator të aftë për të drejtuar një kernel të plotë Linux në VRChat. Për shkak të kufizimeve të qenësishme të asaj platforme, mjeti i zgjedhur duhej të ishte një mbrojtës. Dhe pas disa muajsh pune jam tani krenar që prezantoj emulatorin e parë RISC-V CPU / SoC në botë (që unë njoh) në një shader pikseli HLSL, të aftë të punojë deri në 250 kHz (në një Ti 2080) dhe boot Linux 5.13.5 me mbështetje MMU.

Emulatori zbatohet në shader në formën e strukturës së tij dinamike (Unity Custom Render Texture), e plotësuar nga skriptet Udon të parashikuara për VRChat, të cilat përdoren për të kontrolluar emulatorin në kohën e ekzekutimit.

Përmbajtja kryesore e kujtesës dhe gjendja e procesorit të sistemit të emuluar ruhen si një strukturë me madhësi 2048 × 2048 piksele, duke operuar kështu procesorin e emuluar në 250 kHz. Përveç Linux, Micropython gjithashtu mund të ekzekutohet në emulator.

Për të drejtuar Linux mendova se do të na duheshin të paktën 32 MiB memorie kryesore (RAM), por le të jemi të sigurt dhe të bëjmë 64 - diferenca e performancës nuk do të jetë e madhe dhe duhet të ketë mjaft VRAM.

Në fillim, shqetësimi kryesor i performancës ishte shpejtësia e orës. Kjo do të thotë, sa cikle CPU mund të ekzekutohen në një kornizë.

Për të organizuar ruajtjen e të dhënave këmbëngulës me mbështetje për leximin dhe shkrimin, përdoret një truk që lidhet me përdorimin e një objekti Kamera të lidhur me një zonë drejtkëndëshe të krijuara nga shader -i dhe duke drejtuar daljen e teksturës së dhënë në hyrjen e shaderit. Prandaj, Çdo piksel i shkruar gjatë ekzekutimit të një mbrojtësi të pikselit mund të lexohet duke përpunuar kuadrin tjetër.

Kur aplikohen shander pixel, një shembull i veçantë i shader -it ndizet paralelisht për çdo pixel në cilësi.

Kjo veçori e ndërlikon ndjeshëm zbatimin dhe kërkon koordinim të veçantë të gjendjes së të gjithë sistemit të emuluar dhe krahasim të pozicionit të pikselit të përpunuar me gjendjen e përmbajtjes së CPU ose RAM të sistemit të emuluar të koduar në të (çdo piksel mund të kodojë 128 bit të informacion).

Në këtë rast, kodi i shaderit kërkon përfshirjen e një numri të madh kontrollesh, për të thjeshtuar zbatimin e të cilave është përdorur perlpp preprocessor perlpp.

Për ata që janë interesuar për specifikimet permendet qe:

  • kodi është në GitHub
  • 64 MiB RAM pa gjendjen e CPU ruhet në një strukturë të formatit të plotë 2048 × 2048 pixel (128 bpp)
  • Cilësia e paraqitjes së unitetit me ndryshimin e tamponit lejon kodimin / dekodimin e gjendjes midis kornizave
  • një mbrojtës pixel përdoret për imitim si llogaritës dhe shaderët UAV nuk mbështeten nga VRChat

Më në fund nëse jeni të interesuar të dini më shumë për të, ju mund të kontrolloni detajet Në lidhjen vijuese.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.