Ili sukcesis funkciigi Linukson per RISC-V-emulilo ĉe VRChat

Antaŭ kelkaj tagoj la rezultoj de eksperimento estis publikigitaj organizo bazita sur la lanĉo de la Linukso-kerno ene de 3D virtuala spaco de interreta plurludanta ludo.

Ĉi tiu eksperimento Ĝi estis farita ĉe VRChat, kiu permesas ŝarĝi 3D-modelojn per siaj propraj ombroj. Por efektivigi la elpensitan ideon, kreiĝis emulilo bazita sur la arkitekturo RISC-V, kiu estas ekzekutita flanke de GPU en la formo de piksela nuancilo.

Pri la projekto

La emulador baziĝas sur la efektivigo en la lingvo C, kies kreado, siavice, uzis la evoluojn de la minimumisma riscv-rust-emulilo, kiu siavice disvolviĝas en la Rusta lingvo. La preta C-kodo estas tradukita en pikselon en la HLSL-lingvo, taŭga por ŝarĝo en VRChat.

La emulador provizas plenan subtenon por la rv32imasu-instrukcia ar architectureitekturo, la memora kontrolunuo SV32 kaj minimuma aro de flankaparatoj (UART kaj tempigilo). Preparitaj kapabloj sufiĉas por ŝarĝi Linuksan kernon 5.13.5 kaj bazan komandlinian medion de BusyBox, kun kiu vi povas interagi rekte de la virtuala mondo VRChat.

Ĉirkaŭ marto 2021, mi decidis verki emulilon kapablan funkciigi plenan Linuksan kernon en VRChat. Pro la enecaj limigoj de tiu platformo, la elektita ilo devis esti ombranto. Kaj post kelkaj monatoj da laboro mi nun fieras enkonduki la unuan mondan RISC-V CPU / SoC-emulilon (pri kiu mi scias) en HLSL-piksela nuancilo, kapabla funkcii ĝis 250 kHz (sur 2080 Ti) kaj startu Linukso 5.13.5 kun MMU-subteno.

La emulilo estas efektivigita en la ombranto en la formo de sia propra dinamika teksturo (Unity Custom Render Texture), kompletigita per la Udon-skriptoj provizitaj por VRChat, kiuj estas uzataj por kontroli la emulilon dum rultempo.

La ĉefa memora enhavo kaj la procesora stato de la kopiita sistemo estas konservitaj kiel teksturo kun grandeco de 2048 × 2048 rastrumeroj, tiel funkciigante la kopiitan procesoron je 250 kHz. Krom Linukso, Micropython ankaŭ povas ruliĝi per la emulilo.

Por funkciigi Linukson, mi pensis, ke ni bezonos almenaŭ 32 MiB de ĉefa memoro (RAM), sed ni estu sekuraj kaj faru 64 - la rendimenta diferenco ne estos granda kaj devus esti sufiĉe da VRAM.

Unue la ĉefa koncernata agado estis horloĝa rapideco. Tio estas, kiom da CPU-cikloj povas esti plenumitaj en unu kadro.

Organizi datumstokadon persista kun subteno por legado kaj skribado, truko rilate al uzado de Kamera objekto ligita al rektangula areo estas uzata generita de la ombranto kaj direktanta la eliron de la igita teksturo al la enigo de la ombranto. Tial, Ĉiu ajn pikselo skribita dum la ekzekuto de piksela nuancilo legeblas prilaborante la sekvan kadron.

Kiam pikselaj ombroj estas uzataj, aparta kazo de la ombranto estas pafita paralele por ĉiu pikselo en la teksturo.

Ĉi tiu funkcio signife komplikas efektivigon kaj postulas apartan kunordigon de la stato de la tuta kopiita sistemo kaj komparo de la pozicio de la prilaborita pikselo kun la stato de la CPU aŭ RAM-enhavo de la kopiita sistemo en ĝi kodita (ĉiu pikselo povas ĉifri 128 bitojn da informo).

Ĉi-kaze la ombrokodo postulas inkluzivi grandan nombron da ĉekoj, por simpligi la efektivigon, per kiu oni uzis la perl antaŭprocesilon perlpp.

Por tiuj, kiuj estas interesiĝas pri la specifoj ĝi mencias ke:

  • la kodo estas ĉe GitHub
  • 64 MiB de RAM malpli CPU-stato estas stokita en entjerformata teksturo de 2048 × 2048 pikseloj (128 bpp)
  • Unueca kutimo bildigas teksturon kun bufra interŝanĝo permesas kodan / malkodan staton inter kadroj
  • piksela nuancilo estas uzata por emulado kiel komputilo kaj UAV-ombroj ne estas subtenataj de VRChat

Fine se vi interesiĝas scii pli pri ĝi, vi povas kontroli la detalojn En la sekva ligilo.


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

Estu la unua por komenti

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita.

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

bool (vera)